{
  "name": "google-native",
  "displayName": "Google Cloud Native",
  "version": "0.32.0",
  "description": "A native Pulumi package for creating and managing Google Cloud resources.",
  "keywords": [
    "pulumi",
    "google cloud",
    "category/cloud",
    "kind/native"
  ],
  "homepage": "https://pulumi.com",
  "license": "Apache-2.0",
  "repository": "https://github.com/pulumi/pulumi-google-native",
  "publisher": "Pulumi",
  "meta": {
    "moduleFormat": "(.*)"
  },
  "language": {
    "csharp": {
      "liftSingleValueMethodReturns": true,
      "namespaces": {
        "accessapproval": "AccessApproval",
        "accessapproval/v1": "AccessApproval.V1",
        "accesscontextmanager": "AccessContextManager",
        "accesscontextmanager/v1": "AccessContextManager.V1",
        "accesscontextmanager/v1beta": "AccessContextManager.V1Beta",
        "advisorynotifications": "AdvisoryNotifications",
        "advisorynotifications/v1": "AdvisoryNotifications.V1",
        "aiplatform": "Aiplatform",
        "aiplatform/v1": "Aiplatform.V1",
        "aiplatform/v1beta1": "Aiplatform.V1Beta1",
        "alloydb": "AlloyDB",
        "alloydb/v1": "AlloyDB.V1",
        "alloydb/v1alpha": "AlloyDB.V1Alpha",
        "alloydb/v1beta": "AlloyDB.V1Beta",
        "analyticshub": "AnalyticsHub",
        "analyticshub/v1": "AnalyticsHub.V1",
        "analyticshub/v1beta1": "AnalyticsHub.V1Beta1",
        "apigateway": "APIGateway",
        "apigateway/v1": "APIGateway.V1",
        "apigateway/v1beta": "APIGateway.V1Beta",
        "apigee": "Apigee",
        "apigee/v1": "Apigee.V1",
        "apigeeregistry": "ApigeeRegistry",
        "apigeeregistry/v1": "ApigeeRegistry.V1",
        "apikeys": "APIKeys",
        "apikeys/v2": "APIKeys.V2",
        "appengine": "AppEngine",
        "appengine/v1": "AppEngine.V1",
        "appengine/v1alpha": "AppEngine.V1Alpha",
        "appengine/v1beta": "AppEngine.V1Beta",
        "artifactregistry": "ArtifactRegistry",
        "artifactregistry/v1": "ArtifactRegistry.V1",
        "artifactregistry/v1beta1": "ArtifactRegistry.V1Beta1",
        "artifactregistry/v1beta2": "ArtifactRegistry.V1Beta2",
        "assuredworkloads": "AssuredWorkloads",
        "assuredworkloads/v1": "AssuredWorkloads.V1",
        "assuredworkloads/v1beta1": "AssuredWorkloads.V1Beta1",
        "backupdr": "Backupdr",
        "backupdr/v1": "Backupdr.V1",
        "baremetalsolution": "BareMetalSolution",
        "baremetalsolution/v1": "BareMetalSolution.V1",
        "baremetalsolution/v2": "BareMetalSolution.V2",
        "batch": "Batch",
        "batch/v1": "Batch.V1",
        "beyondcorp": "BeyondCorp",
        "beyondcorp/v1": "BeyondCorp.V1",
        "beyondcorp/v1alpha": "BeyondCorp.V1Alpha",
        "biglake": "BigLake",
        "biglake/v1": "BigLake.V1",
        "bigquery": "BigQuery",
        "bigquery/v2": "BigQuery.V2",
        "bigqueryconnection": "BigQueryConnection",
        "bigqueryconnection/v1beta1": "BigQueryConnection.V1Beta1",
        "bigquerydatapolicy": "BigQueryDataPolicy",
        "bigquerydatapolicy/v1": "BigQueryDataPolicy.V1",
        "bigquerydatatransfer": "BigQueryDataTransfer",
        "bigquerydatatransfer/v1": "BigQueryDataTransfer.V1",
        "bigqueryreservation": "BigQueryReservation",
        "bigqueryreservation/v1": "BigQueryReservation.V1",
        "bigqueryreservation/v1beta1": "BigQueryReservation.V1Beta1",
        "bigtableadmin": "BigtableAdmin",
        "bigtableadmin/v1": "BigtableAdmin.V1",
        "bigtableadmin/v2": "BigtableAdmin.V2",
        "billingbudgets": "Billingbudgets",
        "billingbudgets/v1": "Billingbudgets.V1",
        "billingbudgets/v1beta1": "Billingbudgets.V1Beta1",
        "binaryauthorization": "BinaryAuthorization",
        "binaryauthorization/v1": "BinaryAuthorization.V1",
        "binaryauthorization/v1beta1": "BinaryAuthorization.V1Beta1",
        "blockchainnodeengine": "BlockchainNodeEngine",
        "blockchainnodeengine/v1": "BlockchainNodeEngine.V1",
        "certificatemanager": "CertificateManager",
        "certificatemanager/v1": "CertificateManager.V1",
        "cloudasset": "CloudAsset",
        "cloudasset/v1": "CloudAsset.V1",
        "cloudasset/v1beta1": "CloudAsset.V1Beta1",
        "cloudbilling": "CloudBilling",
        "cloudbilling/v1": "CloudBilling.V1",
        "cloudbilling/v1beta": "CloudBilling.V1Beta",
        "cloudbuild": "CloudBuild",
        "cloudbuild/v1": "CloudBuild.V1",
        "cloudbuild/v1alpha1": "CloudBuild.V1Alpha1",
        "cloudbuild/v1alpha2": "CloudBuild.V1Alpha2",
        "cloudbuild/v1beta1": "CloudBuild.V1Beta1",
        "cloudbuild/v2": "CloudBuild.V2",
        "cloudchannel": "CloudChannel",
        "cloudchannel/v1": "CloudChannel.V1",
        "clouddebugger": "CloudDebugger",
        "clouddebugger/v2": "CloudDebugger.V2",
        "clouddeploy": "CloudDeploy",
        "clouddeploy/v1": "CloudDeploy.V1",
        "clouderrorreporting": "Clouderrorreporting",
        "clouderrorreporting/v1beta1": "Clouderrorreporting.V1Beta1",
        "cloudfunctions": "CloudFunctions",
        "cloudfunctions/v1": "CloudFunctions.V1",
        "cloudfunctions/v2": "CloudFunctions.V2",
        "cloudfunctions/v2alpha": "CloudFunctions.V2Alpha",
        "cloudfunctions/v2beta": "CloudFunctions.V2Beta",
        "cloudidentity": "CloudIdentity",
        "cloudidentity/v1": "CloudIdentity.V1",
        "cloudidentity/v1beta1": "CloudIdentity.V1Beta1",
        "cloudiot": "CloudIoT",
        "cloudiot/v1": "CloudIoT.V1",
        "cloudkms": "Cloudkms",
        "cloudkms/v1": "Cloudkms.V1",
        "cloudprofiler": "CloudProfiler",
        "cloudprofiler/v2": "CloudProfiler.V2",
        "cloudresourcemanager": "CloudResourceManager",
        "cloudresourcemanager/v1": "CloudResourceManager.V1",
        "cloudresourcemanager/v1beta1": "CloudResourceManager.V1Beta1",
        "cloudresourcemanager/v2": "CloudResourceManager.V2",
        "cloudresourcemanager/v2beta1": "CloudResourceManager.V2Beta1",
        "cloudresourcemanager/v3": "CloudResourceManager.V3",
        "cloudscheduler": "CloudScheduler",
        "cloudscheduler/v1": "CloudScheduler.V1",
        "cloudscheduler/v1beta1": "CloudScheduler.V1Beta1",
        "cloudsearch": "CloudSearch",
        "cloudsearch/v1": "CloudSearch.V1",
        "cloudshell": "CloudShell",
        "cloudshell/v1": "CloudShell.V1",
        "cloudsupport": "CloudSupport",
        "cloudsupport/v2": "CloudSupport.V2",
        "cloudsupport/v2beta": "CloudSupport.V2Beta",
        "cloudtasks": "CloudTasks",
        "cloudtasks/v2": "CloudTasks.V2",
        "cloudtasks/v2beta2": "CloudTasks.V2Beta2",
        "cloudtasks/v2beta3": "CloudTasks.V2Beta3",
        "cloudtrace": "CloudTrace",
        "cloudtrace/v1": "CloudTrace.V1",
        "cloudtrace/v2": "CloudTrace.V2",
        "cloudtrace/v2beta1": "CloudTrace.V2Beta1",
        "composer": "Composer",
        "composer/v1": "Composer.V1",
        "composer/v1beta1": "Composer.V1Beta1",
        "compute": "Compute",
        "compute/alpha": "Compute.Alpha",
        "compute/beta": "Compute.Beta",
        "compute/v1": "Compute.V1",
        "connectors": "Connectors",
        "connectors/v1": "Connectors.V1",
        "connectors/v2": "Connectors.V2",
        "contactcenteraiplatform": "ContactCenterAIPlatform",
        "contactcenteraiplatform/v1alpha1": "ContactCenterAIPlatform.V1Alpha1",
        "contactcenterinsights": "Contactcenterinsights",
        "contactcenterinsights/v1": "Contactcenterinsights.V1",
        "container": "Container",
        "container/v1": "Container.V1",
        "container/v1beta1": "Container.V1Beta1",
        "containeranalysis": "ContainerAnalysis",
        "containeranalysis/v1": "ContainerAnalysis.V1",
        "containeranalysis/v1alpha1": "ContainerAnalysis.V1Alpha1",
        "containeranalysis/v1beta1": "ContainerAnalysis.V1Beta1",
        "contentwarehouse": "Contentwarehouse",
        "contentwarehouse/v1": "Contentwarehouse.V1",
        "datacatalog": "DataCatalog",
        "datacatalog/v1": "DataCatalog.V1",
        "datacatalog/v1beta1": "DataCatalog.V1Beta1",
        "dataflow": "Dataflow",
        "dataflow/v1b3": "Dataflow.V1b3",
        "dataform": "Dataform",
        "dataform/v1beta1": "Dataform.V1Beta1",
        "datafusion": "DataFusion",
        "datafusion/v1": "DataFusion.V1",
        "datafusion/v1beta1": "DataFusion.V1Beta1",
        "datalabeling": "DataLabeling",
        "datalabeling/v1beta1": "DataLabeling.V1Beta1",
        "datalineage": "DataLineage",
        "datalineage/v1": "DataLineage.V1",
        "datamigration": "Datamigration",
        "datamigration/v1": "Datamigration.V1",
        "datamigration/v1beta1": "Datamigration.V1Beta1",
        "datapipelines": "Datapipelines",
        "datapipelines/v1": "Datapipelines.V1",
        "dataplex": "Dataplex",
        "dataplex/v1": "Dataplex.V1",
        "dataproc": "Dataproc",
        "dataproc/v1": "Dataproc.V1",
        "dataproc/v1beta2": "Dataproc.V1Beta2",
        "datastore": "Datastore",
        "datastore/v1": "Datastore.V1",
        "datastore/v1beta1": "Datastore.V1Beta1",
        "datastore/v1beta3": "Datastore.V1Beta3",
        "datastream": "Datastream",
        "datastream/v1": "Datastream.V1",
        "datastream/v1alpha1": "Datastream.V1Alpha1",
        "deploymentmanager": "DeploymentManager",
        "deploymentmanager/alpha": "DeploymentManager.Alpha",
        "deploymentmanager/v2": "DeploymentManager.V2",
        "deploymentmanager/v2beta": "DeploymentManager.V2Beta",
        "dialogflow": "Dialogflow",
        "dialogflow/v2": "Dialogflow.V2",
        "dialogflow/v2beta1": "Dialogflow.V2Beta1",
        "dialogflow/v3": "Dialogflow.V3",
        "dialogflow/v3beta1": "Dialogflow.V3Beta1",
        "discoveryengine": "DiscoveryEngine",
        "discoveryengine/v1alpha": "DiscoveryEngine.V1Alpha",
        "discoveryengine/v1beta": "DiscoveryEngine.V1Beta",
        "dlp": "DLP",
        "dlp/v2": "DLP.V2",
        "dns": "DNS",
        "dns/v1": "DNS.V1",
        "dns/v1beta2": "DNS.V1Beta2",
        "documentai": "DocumentAI",
        "documentai/v1": "DocumentAI.V1",
        "documentai/v1beta2": "DocumentAI.V1Beta2",
        "documentai/v1beta3": "DocumentAI.V1Beta3",
        "domains": "Domains",
        "domains/v1": "Domains.V1",
        "domains/v1alpha2": "Domains.V1Alpha2",
        "domains/v1beta1": "Domains.V1Beta1",
        "essentialcontacts": "EssentialContacts",
        "essentialcontacts/v1": "EssentialContacts.V1",
        "eventarc": "Eventarc",
        "eventarc/v1": "Eventarc.V1",
        "eventarc/v1beta1": "Eventarc.V1Beta1",
        "fcm": "Fcm",
        "fcm/v1": "Fcm.V1",
        "fcmdata": "Fcmdata",
        "fcmdata/v1beta1": "Fcmdata.V1Beta1",
        "file": "File",
        "file/v1": "File.V1",
        "file/v1beta1": "File.V1Beta1",
        "firebase": "Firebase",
        "firebase/v1beta1": "Firebase.V1Beta1",
        "firebaseappcheck": "FirebaseAppCheck",
        "firebaseappcheck/v1": "FirebaseAppCheck.V1",
        "firebaseappcheck/v1beta": "FirebaseAppCheck.V1Beta",
        "firebaseappdistribution": "FirebaseAppDistribution",
        "firebaseappdistribution/v1": "FirebaseAppDistribution.V1",
        "firebasedatabase": "Firebasedatabase",
        "firebasedatabase/v1beta": "Firebasedatabase.V1Beta",
        "firebasedynamiclinks": "FirebaseDynamicLinks",
        "firebasedynamiclinks/v1": "FirebaseDynamicLinks.V1",
        "firebasehosting": "FirebaseHosting",
        "firebasehosting/v1": "FirebaseHosting.V1",
        "firebasehosting/v1beta1": "FirebaseHosting.V1Beta1",
        "firebaseml": "FirebaseML",
        "firebaseml/v1": "FirebaseML.V1",
        "firebaseml/v1beta2": "FirebaseML.V1Beta2",
        "firebaserules": "FirebaseRules",
        "firebaserules/v1": "FirebaseRules.V1",
        "firebasestorage": "Firebasestorage",
        "firebasestorage/v1beta": "Firebasestorage.V1Beta",
        "firestore": "Firestore",
        "firestore/v1": "Firestore.V1",
        "firestore/v1beta1": "Firestore.V1Beta1",
        "firestore/v1beta2": "Firestore.V1Beta2",
        "gameservices": "GameServices",
        "gameservices/v1": "GameServices.V1",
        "gameservices/v1beta": "GameServices.V1Beta",
        "genomics": "Genomics",
        "genomics/v1": "Genomics.V1",
        "genomics/v1alpha2": "Genomics.V1Alpha2",
        "genomics/v2alpha1": "Genomics.V2Alpha1",
        "gkebackup": "Gkebackup",
        "gkebackup/v1": "Gkebackup.V1",
        "gkehub": "GKEHub",
        "gkehub/v1": "GKEHub.V1",
        "gkehub/v1alpha": "GKEHub.V1Alpha",
        "gkehub/v1alpha2": "GKEHub.V1Alpha2",
        "gkehub/v1beta": "GKEHub.V1Beta",
        "gkehub/v1beta1": "GKEHub.V1Beta1",
        "gkehub/v2alpha": "GKEHub.V2Alpha",
        "gkeonprem": "Gkeonprem",
        "gkeonprem/v1": "Gkeonprem.V1",
        "google-native": "GoogleNative",
        "healthcare": "Healthcare",
        "healthcare/v1": "Healthcare.V1",
        "healthcare/v1beta1": "Healthcare.V1Beta1",
        "iam": "IAM",
        "iam/v1": "IAM.V1",
        "iam/v2": "IAM.V2",
        "iam/v2beta": "IAM.V2Beta",
        "iamcredentials": "Iamcredentials",
        "iamcredentials/v1": "Iamcredentials.V1",
        "iap": "Iap",
        "iap/v1": "Iap.V1",
        "iap/v1beta1": "Iap.V1Beta1",
        "identitytoolkit": "IdentityToolkit",
        "identitytoolkit/v1": "IdentityToolkit.V1",
        "identitytoolkit/v2": "IdentityToolkit.V2",
        "identitytoolkit/v3": "IdentityToolkit.V3",
        "ids": "IDS",
        "ids/v1": "IDS.V1",
        "integrations": "Integrations",
        "integrations/v1alpha": "Integrations.V1Alpha",
        "jobs": "Jobs",
        "jobs/v3": "Jobs.V3",
        "jobs/v4": "Jobs.V4",
        "kmsinventory": "KMSInventory",
        "kmsinventory/v1": "KMSInventory.V1",
        "language": "Language",
        "language/v1": "Language.V1",
        "language/v1beta1": "Language.V1Beta1",
        "language/v1beta2": "Language.V1Beta2",
        "language/v2": "Language.V2",
        "libraryagent": "LibraryAgent",
        "libraryagent/v1": "LibraryAgent.V1",
        "lifesciences": "LifeSciences",
        "lifesciences/v2beta": "LifeSciences.V2Beta",
        "logging": "Logging",
        "logging/v2": "Logging.V2",
        "looker": "Looker",
        "looker/v1": "Looker.V1",
        "managedidentities": "Managedidentities",
        "managedidentities/v1": "Managedidentities.V1",
        "managedidentities/v1alpha1": "Managedidentities.V1Alpha1",
        "managedidentities/v1beta1": "Managedidentities.V1Beta1",
        "memcache": "Memcache",
        "memcache/v1": "Memcache.V1",
        "memcache/v1beta2": "Memcache.V1Beta2",
        "metastore": "Metastore",
        "metastore/v1": "Metastore.V1",
        "metastore/v1alpha": "Metastore.V1Alpha",
        "metastore/v1beta": "Metastore.V1Beta",
        "migrationcenter": "MigrationCenter",
        "migrationcenter/v1": "MigrationCenter.V1",
        "migrationcenter/v1alpha1": "MigrationCenter.V1Alpha1",
        "ml": "Ml",
        "ml/v1": "Ml.V1",
        "monitoring": "Monitoring",
        "monitoring/v1": "Monitoring.V1",
        "monitoring/v3": "Monitoring.V3",
        "networkconnectivity": "NetworkConnectivity",
        "networkconnectivity/v1": "NetworkConnectivity.V1",
        "networkconnectivity/v1alpha1": "NetworkConnectivity.V1Alpha1",
        "networkmanagement": "NetworkManagement",
        "networkmanagement/v1": "NetworkManagement.V1",
        "networkmanagement/v1beta1": "NetworkManagement.V1Beta1",
        "networksecurity": "NetworkSecurity",
        "networksecurity/v1": "NetworkSecurity.V1",
        "networksecurity/v1beta1": "NetworkSecurity.V1Beta1",
        "networkservices": "NetworkServices",
        "networkservices/v1": "NetworkServices.V1",
        "networkservices/v1beta1": "NetworkServices.V1Beta1",
        "notebooks": "Notebooks",
        "notebooks/v1": "Notebooks.V1",
        "notebooks/v2": "Notebooks.V2",
        "ondemandscanning": "OnDemandScanning",
        "ondemandscanning/v1": "OnDemandScanning.V1",
        "ondemandscanning/v1beta1": "OnDemandScanning.V1Beta1",
        "orgpolicy": "Orgpolicy",
        "orgpolicy/v2": "Orgpolicy.V2",
        "osconfig": "OSConfig",
        "osconfig/v1": "OSConfig.V1",
        "osconfig/v1alpha": "OSConfig.V1Alpha",
        "osconfig/v1beta": "OSConfig.V1Beta",
        "oslogin": "OSLogin",
        "oslogin/v1": "OSLogin.V1",
        "oslogin/v1alpha": "OSLogin.V1Alpha",
        "oslogin/v1beta": "OSLogin.V1Beta",
        "playgrouping": "PlayGrouping",
        "playgrouping/v1alpha1": "PlayGrouping.V1Alpha1",
        "policysimulator": "PolicySimulator",
        "policysimulator/v1": "PolicySimulator.V1",
        "policysimulator/v1alpha": "PolicySimulator.V1Alpha",
        "policysimulator/v1beta": "PolicySimulator.V1Beta",
        "policysimulator/v1beta1": "PolicySimulator.V1Beta1",
        "policytroubleshooter": "PolicyTroubleshooter",
        "policytroubleshooter/v1": "PolicyTroubleshooter.V1",
        "policytroubleshooter/v1beta": "PolicyTroubleshooter.V1Beta",
        "privateca": "Privateca",
        "privateca/v1": "Privateca.V1",
        "privateca/v1beta1": "Privateca.V1Beta1",
        "publicca": "Publicca",
        "publicca/v1": "Publicca.V1",
        "publicca/v1alpha1": "Publicca.V1Alpha1",
        "publicca/v1beta1": "Publicca.V1Beta1",
        "pubsub": "Pubsub",
        "pubsub/v1": "Pubsub.V1",
        "pubsub/v1beta1a": "Pubsub.V1Beta1a",
        "pubsub/v1beta2": "Pubsub.V1Beta2",
        "pubsublite": "Pubsublite",
        "pubsublite/v1": "Pubsublite.V1",
        "rapidmigrationassessment": "RapidMigrationAssessment",
        "rapidmigrationassessment/v1": "RapidMigrationAssessment.V1",
        "recaptchaenterprise": "reCAPTCHAEnterprise",
        "recaptchaenterprise/v1": "reCAPTCHAEnterprise.V1",
        "recommendationengine": "Recommendationengine",
        "recommendationengine/v1beta1": "Recommendationengine.V1Beta1",
        "recommender": "Recommender",
        "recommender/v1": "Recommender.V1",
        "recommender/v1beta1": "Recommender.V1Beta1",
        "redis": "Redis",
        "redis/v1": "Redis.V1",
        "redis/v1beta1": "Redis.V1Beta1",
        "remotebuildexecution": "RemoteBuildExecution",
        "remotebuildexecution/v1": "RemoteBuildExecution.V1",
        "remotebuildexecution/v1alpha": "RemoteBuildExecution.V1Alpha",
        "remotebuildexecution/v2": "RemoteBuildExecution.V2",
        "resourcesettings": "ResourceSettings",
        "resourcesettings/v1": "ResourceSettings.V1",
        "retail": "Retail",
        "retail/v2": "Retail.V2",
        "retail/v2alpha": "Retail.V2Alpha",
        "retail/v2beta": "Retail.V2Beta",
        "run": "Run",
        "run/v1": "Run.V1",
        "run/v2": "Run.V2",
        "runtimeconfig": "RuntimeConfig",
        "runtimeconfig/v1": "RuntimeConfig.V1",
        "runtimeconfig/v1beta1": "RuntimeConfig.V1Beta1",
        "secretmanager": "SecretManager",
        "secretmanager/v1": "SecretManager.V1",
        "secretmanager/v1beta1": "SecretManager.V1Beta1",
        "securitycenter": "Securitycenter",
        "securitycenter/v1": "Securitycenter.V1",
        "securitycenter/v1beta1": "Securitycenter.V1Beta1",
        "securitycenter/v1beta2": "Securitycenter.V1Beta2",
        "serviceconsumermanagement": "ServiceConsumerManagement",
        "serviceconsumermanagement/v1": "ServiceConsumerManagement.V1",
        "serviceconsumermanagement/v1beta1": "ServiceConsumerManagement.V1Beta1",
        "servicecontrol": "ServiceControl",
        "servicecontrol/v1": "ServiceControl.V1",
        "servicecontrol/v2": "ServiceControl.V2",
        "servicedirectory": "ServiceDirectory",
        "servicedirectory/v1": "ServiceDirectory.V1",
        "servicedirectory/v1beta1": "ServiceDirectory.V1Beta1",
        "servicemanagement": "ServiceManagement",
        "servicemanagement/v1": "ServiceManagement.V1",
        "servicenetworking": "ServiceNetworking",
        "servicenetworking/v1": "ServiceNetworking.V1",
        "servicenetworking/v1beta": "ServiceNetworking.V1Beta",
        "serviceusage": "ServiceUsage",
        "serviceusage/v1": "ServiceUsage.V1",
        "serviceusage/v1beta1": "ServiceUsage.V1Beta1",
        "sourcerepo": "SourceRepo",
        "sourcerepo/v1": "SourceRepo.V1",
        "spanner": "Spanner",
        "spanner/v1": "Spanner.V1",
        "speech": "Speech",
        "speech/v1": "Speech.V1",
        "speech/v2beta1": "Speech.V2Beta1",
        "sqladmin": "SQLAdmin",
        "sqladmin/v1": "SQLAdmin.V1",
        "sqladmin/v1beta4": "SQLAdmin.V1Beta4",
        "storage": "Storage",
        "storage/v1": "Storage.V1",
        "storagetransfer": "StorageTransfer",
        "storagetransfer/v1": "StorageTransfer.V1",
        "testing": "Testing",
        "testing/v1": "Testing.V1",
        "texttospeech": "TexttoSpeech",
        "texttospeech/v1": "TexttoSpeech.V1",
        "texttospeech/v1beta1": "TexttoSpeech.V1Beta1",
        "toolresults": "ToolResults",
        "toolresults/v1beta3": "ToolResults.V1Beta3",
        "tpu": "TPU",
        "tpu/v1": "TPU.V1",
        "tpu/v1alpha1": "TPU.V1Alpha1",
        "tpu/v2": "TPU.V2",
        "tpu/v2alpha1": "TPU.V2Alpha1",
        "trafficdirector": "TrafficDirector",
        "trafficdirector/v2": "TrafficDirector.V2",
        "trafficdirector/v3": "TrafficDirector.V3",
        "transcoder": "Transcoder",
        "transcoder/v1": "Transcoder.V1",
        "translate": "Translate",
        "translate/v2": "Translate.V2",
        "translate/v3": "Translate.V3",
        "translate/v3beta1": "Translate.V3Beta1",
        "videointelligence": "VideoIntelligence",
        "videointelligence/v1": "VideoIntelligence.V1",
        "videointelligence/v1beta2": "VideoIntelligence.V1Beta2",
        "vision": "Vision",
        "vision/v1": "Vision.V1",
        "vmmigration": "VMMigration",
        "vmmigration/v1": "VMMigration.V1",
        "vmmigration/v1alpha1": "VMMigration.V1Alpha1",
        "vmwareengine": "VMwareEngine",
        "vmwareengine/v1": "VMwareEngine.V1",
        "vpcaccess": "VPCAccess",
        "vpcaccess/v1": "VPCAccess.V1",
        "vpcaccess/v1beta1": "VPCAccess.V1Beta1",
        "webrisk": "WebRisk",
        "webrisk/v1": "WebRisk.V1",
        "websecurityscanner": "WebSecurityScanner",
        "websecurityscanner/v1": "WebSecurityScanner.V1",
        "websecurityscanner/v1alpha": "WebSecurityScanner.V1Alpha",
        "websecurityscanner/v1beta": "WebSecurityScanner.V1Beta",
        "workflowexecutions": "WorkflowExecutions",
        "workflowexecutions/v1": "WorkflowExecutions.V1",
        "workflowexecutions/v1beta": "WorkflowExecutions.V1Beta",
        "workflows": "Workflows",
        "workflows/v1": "Workflows.V1",
        "workflows/v1beta": "Workflows.V1Beta",
        "workloadmanager": "WorkloadManager",
        "workloadmanager/v1": "WorkloadManager.V1",
        "workstations": "Workstations",
        "workstations/v1": "Workstations.V1",
        "workstations/v1beta": "Workstations.V1Beta"
      },
      "packageReferences": {
        "Pulumi": "3.*"
      }
    },
    "go": {
      "importBasePath": "github.com/pulumi/pulumi-google-native/sdk/go/google",
      "liftSingleValueMethodReturns": true,
      "packageImportAliases": {
        "github.com/pulumi/pulumi-google-native/sdk/go/google/accessapproval/v1": "accessapproval",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/accesscontextmanager/v1": "accesscontextmanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/accesscontextmanager/v1beta": "accesscontextmanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/advisorynotifications/v1": "advisorynotifications",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/aiplatform/v1": "aiplatform",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/aiplatform/v1beta1": "aiplatform",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/alloydb/v1": "alloydb",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/alloydb/v1alpha": "alloydb",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/alloydb/v1beta": "alloydb",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/analyticshub/v1": "analyticshub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/analyticshub/v1beta1": "analyticshub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/apigateway/v1": "apigateway",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/apigateway/v1beta": "apigateway",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/apigee/v1": "apigee",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/apigeeregistry/v1": "apigeeregistry",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/apikeys/v2": "apikeys",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/appengine/v1": "appengine",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/appengine/v1alpha": "appengine",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/appengine/v1beta": "appengine",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/artifactregistry/v1": "artifactregistry",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/artifactregistry/v1beta1": "artifactregistry",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/artifactregistry/v1beta2": "artifactregistry",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/assuredworkloads/v1": "assuredworkloads",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/assuredworkloads/v1beta1": "assuredworkloads",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/backupdr/v1": "backupdr",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/baremetalsolution/v1": "baremetalsolution",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/baremetalsolution/v2": "baremetalsolution",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/batch/v1": "batch",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/beyondcorp/v1": "beyondcorp",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/beyondcorp/v1alpha": "beyondcorp",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/biglake/v1": "biglake",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/bigquery/v2": "bigquery",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/bigqueryconnection/v1beta1": "bigqueryconnection",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/bigquerydatapolicy/v1": "bigquerydatapolicy",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/bigquerydatatransfer/v1": "bigquerydatatransfer",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/bigqueryreservation/v1": "bigqueryreservation",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/bigqueryreservation/v1beta1": "bigqueryreservation",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/bigtableadmin/v1": "bigtableadmin",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/bigtableadmin/v2": "bigtableadmin",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/billingbudgets/v1": "billingbudgets",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/billingbudgets/v1beta1": "billingbudgets",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/binaryauthorization/v1": "binaryauthorization",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/binaryauthorization/v1beta1": "binaryauthorization",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/blockchainnodeengine/v1": "blockchainnodeengine",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/certificatemanager/v1": "certificatemanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudasset/v1": "cloudasset",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudasset/v1beta1": "cloudasset",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudbilling/v1": "cloudbilling",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudbilling/v1beta": "cloudbilling",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudbuild/v1": "cloudbuild",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudbuild/v1alpha1": "cloudbuild",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudbuild/v1alpha2": "cloudbuild",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudbuild/v1beta1": "cloudbuild",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudbuild/v2": "cloudbuild",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudchannel/v1": "cloudchannel",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/clouddebugger/v2": "clouddebugger",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/clouddeploy/v1": "clouddeploy",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/clouderrorreporting/v1beta1": "clouderrorreporting",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudfunctions/v1": "cloudfunctions",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudfunctions/v2": "cloudfunctions",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudfunctions/v2alpha": "cloudfunctions",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudfunctions/v2beta": "cloudfunctions",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudidentity/v1": "cloudidentity",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudidentity/v1beta1": "cloudidentity",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudiot/v1": "cloudiot",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudkms/v1": "cloudkms",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudprofiler/v2": "cloudprofiler",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudresourcemanager/v1": "cloudresourcemanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudresourcemanager/v1beta1": "cloudresourcemanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudresourcemanager/v2": "cloudresourcemanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudresourcemanager/v2beta1": "cloudresourcemanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudresourcemanager/v3": "cloudresourcemanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudscheduler/v1": "cloudscheduler",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudscheduler/v1beta1": "cloudscheduler",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudsearch/v1": "cloudsearch",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudshell/v1": "cloudshell",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudsupport/v2": "cloudsupport",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudsupport/v2beta": "cloudsupport",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudtasks/v2": "cloudtasks",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudtasks/v2beta2": "cloudtasks",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudtasks/v2beta3": "cloudtasks",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudtrace/v1": "cloudtrace",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudtrace/v2": "cloudtrace",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/cloudtrace/v2beta1": "cloudtrace",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/composer/v1": "composer",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/composer/v1beta1": "composer",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/compute/alpha": "compute",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/compute/beta": "compute",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/compute/v1": "compute",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/connectors/v1": "connectors",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/connectors/v2": "connectors",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/contactcenteraiplatform/v1alpha1": "contactcenteraiplatform",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/contactcenterinsights/v1": "contactcenterinsights",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/container/v1": "container",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/container/v1beta1": "container",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/containeranalysis/v1": "containeranalysis",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/containeranalysis/v1alpha1": "containeranalysis",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/containeranalysis/v1beta1": "containeranalysis",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/contentwarehouse/v1": "contentwarehouse",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datacatalog/v1": "datacatalog",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datacatalog/v1beta1": "datacatalog",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dataflow/v1b3": "dataflow",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dataform/v1beta1": "dataform",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datafusion/v1": "datafusion",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datafusion/v1beta1": "datafusion",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datalabeling/v1beta1": "datalabeling",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datalineage/v1": "datalineage",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datamigration/v1": "datamigration",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datamigration/v1beta1": "datamigration",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datapipelines/v1": "datapipelines",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dataplex/v1": "dataplex",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dataproc/v1": "dataproc",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dataproc/v1beta2": "dataproc",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datastore/v1": "datastore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datastore/v1beta1": "datastore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datastore/v1beta3": "datastore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datastream/v1": "datastream",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/datastream/v1alpha1": "datastream",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/deploymentmanager/alpha": "deploymentmanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/deploymentmanager/v2": "deploymentmanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/deploymentmanager/v2beta": "deploymentmanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dialogflow/v2": "dialogflow",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dialogflow/v2beta1": "dialogflow",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dialogflow/v3": "dialogflow",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dialogflow/v3beta1": "dialogflow",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/discoveryengine/v1alpha": "discoveryengine",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/discoveryengine/v1beta": "discoveryengine",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dlp/v2": "dlp",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dns/v1": "dns",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/dns/v1beta2": "dns",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/documentai/v1": "documentai",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/documentai/v1beta2": "documentai",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/documentai/v1beta3": "documentai",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/domains/v1": "domains",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/domains/v1alpha2": "domains",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/domains/v1beta1": "domains",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/essentialcontacts/v1": "essentialcontacts",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/eventarc/v1": "eventarc",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/eventarc/v1beta1": "eventarc",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/fcm/v1": "fcm",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/fcmdata/v1beta1": "fcmdata",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/file/v1": "file",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/file/v1beta1": "file",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebase/v1beta1": "firebase",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebaseappcheck/v1": "firebaseappcheck",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebaseappcheck/v1beta": "firebaseappcheck",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebaseappdistribution/v1": "firebaseappdistribution",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebasedatabase/v1beta": "firebasedatabase",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebasedynamiclinks/v1": "firebasedynamiclinks",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebasehosting/v1": "firebasehosting",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebasehosting/v1beta1": "firebasehosting",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebaseml/v1": "firebaseml",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebaseml/v1beta2": "firebaseml",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebaserules/v1": "firebaserules",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firebasestorage/v1beta": "firebasestorage",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firestore/v1": "firestore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firestore/v1beta1": "firestore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/firestore/v1beta2": "firestore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gameservices/v1": "gameservices",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gameservices/v1beta": "gameservices",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/genomics/v1": "genomics",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/genomics/v1alpha2": "genomics",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/genomics/v2alpha1": "genomics",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gkebackup/v1": "gkebackup",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gkehub/v1": "gkehub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gkehub/v1alpha": "gkehub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gkehub/v1alpha2": "gkehub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gkehub/v1beta": "gkehub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gkehub/v1beta1": "gkehub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gkehub/v2alpha": "gkehub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/gkeonprem/v1": "gkeonprem",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/healthcare/v1": "healthcare",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/healthcare/v1beta1": "healthcare",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/iam/v1": "iam",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/iam/v2": "iam",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/iam/v2beta": "iam",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/iamcredentials/v1": "iamcredentials",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/iap/v1": "iap",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/iap/v1beta1": "iap",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/identitytoolkit/v1": "identitytoolkit",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/identitytoolkit/v2": "identitytoolkit",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/identitytoolkit/v3": "identitytoolkit",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/ids/v1": "ids",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/integrations/v1alpha": "integrations",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/jobs/v3": "jobs",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/jobs/v4": "jobs",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/kmsinventory/v1": "kmsinventory",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/language/v1": "language",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/language/v1beta1": "language",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/language/v1beta2": "language",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/language/v2": "language",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/libraryagent/v1": "libraryagent",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/lifesciences/v2beta": "lifesciences",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/logging/v2": "logging",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/looker/v1": "looker",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/managedidentities/v1": "managedidentities",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/managedidentities/v1alpha1": "managedidentities",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/managedidentities/v1beta1": "managedidentities",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/memcache/v1": "memcache",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/memcache/v1beta2": "memcache",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/metastore/v1": "metastore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/metastore/v1alpha": "metastore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/metastore/v1beta": "metastore",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/migrationcenter/v1": "migrationcenter",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/migrationcenter/v1alpha1": "migrationcenter",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/ml/v1": "ml",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/monitoring/v1": "monitoring",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/monitoring/v3": "monitoring",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/networkconnectivity/v1": "networkconnectivity",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/networkconnectivity/v1alpha1": "networkconnectivity",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/networkmanagement/v1": "networkmanagement",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/networkmanagement/v1beta1": "networkmanagement",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/networksecurity/v1": "networksecurity",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/networksecurity/v1beta1": "networksecurity",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/networkservices/v1": "networkservices",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/networkservices/v1beta1": "networkservices",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/notebooks/v1": "notebooks",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/notebooks/v2": "notebooks",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/ondemandscanning/v1": "ondemandscanning",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/ondemandscanning/v1beta1": "ondemandscanning",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/orgpolicy/v2": "orgpolicy",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/osconfig/v1": "osconfig",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/osconfig/v1alpha": "osconfig",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/osconfig/v1beta": "osconfig",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/oslogin/v1": "oslogin",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/oslogin/v1alpha": "oslogin",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/oslogin/v1beta": "oslogin",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/playgrouping/v1alpha1": "playgrouping",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/policysimulator/v1": "policysimulator",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/policysimulator/v1alpha": "policysimulator",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/policysimulator/v1beta": "policysimulator",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/policysimulator/v1beta1": "policysimulator",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/policytroubleshooter/v1": "policytroubleshooter",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/policytroubleshooter/v1beta": "policytroubleshooter",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/privateca/v1": "privateca",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/privateca/v1beta1": "privateca",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/publicca/v1": "publicca",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/publicca/v1alpha1": "publicca",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/publicca/v1beta1": "publicca",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/pubsub/v1": "pubsub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/pubsub/v1beta1a": "pubsub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/pubsub/v1beta2": "pubsub",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/pubsublite/v1": "pubsublite",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/rapidmigrationassessment/v1": "rapidmigrationassessment",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/recaptchaenterprise/v1": "recaptchaenterprise",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/recommendationengine/v1beta1": "recommendationengine",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/recommender/v1": "recommender",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/recommender/v1beta1": "recommender",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/redis/v1": "redis",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/redis/v1beta1": "redis",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/remotebuildexecution/v1": "remotebuildexecution",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/remotebuildexecution/v1alpha": "remotebuildexecution",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/remotebuildexecution/v2": "remotebuildexecution",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/resourcesettings/v1": "resourcesettings",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/retail/v2": "retail",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/retail/v2alpha": "retail",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/retail/v2beta": "retail",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/run/v1": "run",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/run/v2": "run",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/runtimeconfig/v1": "runtimeconfig",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/runtimeconfig/v1beta1": "runtimeconfig",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/secretmanager/v1": "secretmanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/secretmanager/v1beta1": "secretmanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/securitycenter/v1": "securitycenter",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/securitycenter/v1beta1": "securitycenter",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/securitycenter/v1beta2": "securitycenter",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/serviceconsumermanagement/v1": "serviceconsumermanagement",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/serviceconsumermanagement/v1beta1": "serviceconsumermanagement",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/servicecontrol/v1": "servicecontrol",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/servicecontrol/v2": "servicecontrol",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/servicedirectory/v1": "servicedirectory",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/servicedirectory/v1beta1": "servicedirectory",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/servicemanagement/v1": "servicemanagement",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/servicenetworking/v1": "servicenetworking",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/servicenetworking/v1beta": "servicenetworking",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/serviceusage/v1": "serviceusage",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/serviceusage/v1beta1": "serviceusage",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/sourcerepo/v1": "sourcerepo",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/spanner/v1": "spanner",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/speech/v1": "speech",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/speech/v2beta1": "speech",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/sqladmin/v1": "sqladmin",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/sqladmin/v1beta4": "sqladmin",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/storage/v1": "storage",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/storagetransfer/v1": "storagetransfer",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/testing/v1": "testing",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/texttospeech/v1": "texttospeech",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/texttospeech/v1beta1": "texttospeech",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/toolresults/v1beta3": "toolresults",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/tpu/v1": "tpu",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/tpu/v1alpha1": "tpu",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/tpu/v2": "tpu",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/tpu/v2alpha1": "tpu",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/trafficdirector/v2": "trafficdirector",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/trafficdirector/v3": "trafficdirector",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/transcoder/v1": "transcoder",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/translate/v2": "translate",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/translate/v3": "translate",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/translate/v3beta1": "translate",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/videointelligence/v1": "videointelligence",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/videointelligence/v1beta2": "videointelligence",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/vision/v1": "vision",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/vmmigration/v1": "vmmigration",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/vmmigration/v1alpha1": "vmmigration",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/vmwareengine/v1": "vmwareengine",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/vpcaccess/v1": "vpcaccess",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/vpcaccess/v1beta1": "vpcaccess",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/webrisk/v1": "webrisk",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/websecurityscanner/v1": "websecurityscanner",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/websecurityscanner/v1alpha": "websecurityscanner",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/websecurityscanner/v1beta": "websecurityscanner",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/workflowexecutions/v1": "workflowexecutions",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/workflowexecutions/v1beta": "workflowexecutions",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/workflows/v1": "workflows",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/workflows/v1beta": "workflows",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/workloadmanager/v1": "workloadmanager",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/workstations/v1": "workstations",
        "github.com/pulumi/pulumi-google-native/sdk/go/google/workstations/v1beta": "workstations"
      }
    },
    "java": {
      "liftSingleValueMethodReturns": true,
      "packages": {
        "accessapproval/v1": "accessapproval.v1",
        "accesscontextmanager/v1": "accesscontextmanager.v1",
        "accesscontextmanager/v1beta": "accesscontextmanager.v1beta",
        "advisorynotifications/v1": "advisorynotifications.v1",
        "aiplatform/v1": "aiplatform.v1",
        "aiplatform/v1beta1": "aiplatform.v1beta1",
        "alloydb/v1": "alloydb.v1",
        "alloydb/v1alpha": "alloydb.v1alpha",
        "alloydb/v1beta": "alloydb.v1beta",
        "analyticshub/v1": "analyticshub.v1",
        "analyticshub/v1beta1": "analyticshub.v1beta1",
        "apigateway/v1": "apigateway.v1",
        "apigateway/v1beta": "apigateway.v1beta",
        "apigee/v1": "apigee.v1",
        "apigeeregistry/v1": "apigeeregistry.v1",
        "apikeys/v2": "apikeys.v2",
        "appengine/v1": "appengine.v1",
        "appengine/v1alpha": "appengine.v1alpha",
        "appengine/v1beta": "appengine.v1beta",
        "artifactregistry/v1": "artifactregistry.v1",
        "artifactregistry/v1beta1": "artifactregistry.v1beta1",
        "artifactregistry/v1beta2": "artifactregistry.v1beta2",
        "assuredworkloads/v1": "assuredworkloads.v1",
        "assuredworkloads/v1beta1": "assuredworkloads.v1beta1",
        "backupdr/v1": "backupdr.v1",
        "baremetalsolution/v1": "baremetalsolution.v1",
        "baremetalsolution/v2": "baremetalsolution.v2",
        "batch/v1": "batch.v1",
        "beyondcorp/v1": "beyondcorp.v1",
        "beyondcorp/v1alpha": "beyondcorp.v1alpha",
        "biglake/v1": "biglake.v1",
        "bigquery/v2": "bigquery.v2",
        "bigqueryconnection/v1beta1": "bigqueryconnection.v1beta1",
        "bigquerydatapolicy/v1": "bigquerydatapolicy.v1",
        "bigquerydatatransfer/v1": "bigquerydatatransfer.v1",
        "bigqueryreservation/v1": "bigqueryreservation.v1",
        "bigqueryreservation/v1beta1": "bigqueryreservation.v1beta1",
        "bigtableadmin/v1": "bigtableadmin.v1",
        "bigtableadmin/v2": "bigtableadmin.v2",
        "billingbudgets/v1": "billingbudgets.v1",
        "billingbudgets/v1beta1": "billingbudgets.v1beta1",
        "binaryauthorization/v1": "binaryauthorization.v1",
        "binaryauthorization/v1beta1": "binaryauthorization.v1beta1",
        "blockchainnodeengine/v1": "blockchainnodeengine.v1",
        "certificatemanager/v1": "certificatemanager.v1",
        "cloudasset/v1": "cloudasset.v1",
        "cloudasset/v1beta1": "cloudasset.v1beta1",
        "cloudbilling/v1": "cloudbilling.v1",
        "cloudbilling/v1beta": "cloudbilling.v1beta",
        "cloudbuild/v1": "cloudbuild.v1",
        "cloudbuild/v1alpha1": "cloudbuild.v1alpha1",
        "cloudbuild/v1alpha2": "cloudbuild.v1alpha2",
        "cloudbuild/v1beta1": "cloudbuild.v1beta1",
        "cloudbuild/v2": "cloudbuild.v2",
        "cloudchannel/v1": "cloudchannel.v1",
        "clouddebugger/v2": "clouddebugger.v2",
        "clouddeploy/v1": "clouddeploy.v1",
        "clouderrorreporting/v1beta1": "clouderrorreporting.v1beta1",
        "cloudfunctions/v1": "cloudfunctions.v1",
        "cloudfunctions/v2": "cloudfunctions.v2",
        "cloudfunctions/v2alpha": "cloudfunctions.v2alpha",
        "cloudfunctions/v2beta": "cloudfunctions.v2beta",
        "cloudidentity/v1": "cloudidentity.v1",
        "cloudidentity/v1beta1": "cloudidentity.v1beta1",
        "cloudiot/v1": "cloudiot.v1",
        "cloudkms/v1": "cloudkms.v1",
        "cloudprofiler/v2": "cloudprofiler.v2",
        "cloudresourcemanager/v1": "cloudresourcemanager.v1",
        "cloudresourcemanager/v1beta1": "cloudresourcemanager.v1beta1",
        "cloudresourcemanager/v2": "cloudresourcemanager.v2",
        "cloudresourcemanager/v2beta1": "cloudresourcemanager.v2beta1",
        "cloudresourcemanager/v3": "cloudresourcemanager.v3",
        "cloudscheduler/v1": "cloudscheduler.v1",
        "cloudscheduler/v1beta1": "cloudscheduler.v1beta1",
        "cloudsearch/v1": "cloudsearch.v1",
        "cloudshell/v1": "cloudshell.v1",
        "cloudsupport/v2": "cloudsupport.v2",
        "cloudsupport/v2beta": "cloudsupport.v2beta",
        "cloudtasks/v2": "cloudtasks.v2",
        "cloudtasks/v2beta2": "cloudtasks.v2beta2",
        "cloudtasks/v2beta3": "cloudtasks.v2beta3",
        "cloudtrace/v1": "cloudtrace.v1",
        "cloudtrace/v2": "cloudtrace.v2",
        "cloudtrace/v2beta1": "cloudtrace.v2beta1",
        "composer/v1": "composer.v1",
        "composer/v1beta1": "composer.v1beta1",
        "compute/alpha": "compute.alpha",
        "compute/beta": "compute.beta",
        "compute/v1": "compute.v1",
        "connectors/v1": "connectors.v1",
        "connectors/v2": "connectors.v2",
        "contactcenteraiplatform/v1alpha1": "contactcenteraiplatform.v1alpha1",
        "contactcenterinsights/v1": "contactcenterinsights.v1",
        "container/v1": "container.v1",
        "container/v1beta1": "container.v1beta1",
        "containeranalysis/v1": "containeranalysis.v1",
        "containeranalysis/v1alpha1": "containeranalysis.v1alpha1",
        "containeranalysis/v1beta1": "containeranalysis.v1beta1",
        "contentwarehouse/v1": "contentwarehouse.v1",
        "datacatalog/v1": "datacatalog.v1",
        "datacatalog/v1beta1": "datacatalog.v1beta1",
        "dataflow/v1b3": "dataflow.v1b3",
        "dataform/v1beta1": "dataform.v1beta1",
        "datafusion/v1": "datafusion.v1",
        "datafusion/v1beta1": "datafusion.v1beta1",
        "datalabeling/v1beta1": "datalabeling.v1beta1",
        "datalineage/v1": "datalineage.v1",
        "datamigration/v1": "datamigration.v1",
        "datamigration/v1beta1": "datamigration.v1beta1",
        "datapipelines/v1": "datapipelines.v1",
        "dataplex/v1": "dataplex.v1",
        "dataproc/v1": "dataproc.v1",
        "dataproc/v1beta2": "dataproc.v1beta2",
        "datastore/v1": "datastore.v1",
        "datastore/v1beta1": "datastore.v1beta1",
        "datastore/v1beta3": "datastore.v1beta3",
        "datastream/v1": "datastream.v1",
        "datastream/v1alpha1": "datastream.v1alpha1",
        "deploymentmanager/alpha": "deploymentmanager.alpha",
        "deploymentmanager/v2": "deploymentmanager.v2",
        "deploymentmanager/v2beta": "deploymentmanager.v2beta",
        "dialogflow/v2": "dialogflow.v2",
        "dialogflow/v2beta1": "dialogflow.v2beta1",
        "dialogflow/v3": "dialogflow.v3",
        "dialogflow/v3beta1": "dialogflow.v3beta1",
        "discoveryengine/v1alpha": "discoveryengine.v1alpha",
        "discoveryengine/v1beta": "discoveryengine.v1beta",
        "dlp/v2": "dlp.v2",
        "dns/v1": "dns.v1",
        "dns/v1beta2": "dns.v1beta2",
        "documentai/v1": "documentai.v1",
        "documentai/v1beta2": "documentai.v1beta2",
        "documentai/v1beta3": "documentai.v1beta3",
        "domains/v1": "domains.v1",
        "domains/v1alpha2": "domains.v1alpha2",
        "domains/v1beta1": "domains.v1beta1",
        "essentialcontacts/v1": "essentialcontacts.v1",
        "eventarc/v1": "eventarc.v1",
        "eventarc/v1beta1": "eventarc.v1beta1",
        "fcm/v1": "fcm.v1",
        "fcmdata/v1beta1": "fcmdata.v1beta1",
        "file/v1": "file.v1",
        "file/v1beta1": "file.v1beta1",
        "firebase/v1beta1": "firebase.v1beta1",
        "firebaseappcheck/v1": "firebaseappcheck.v1",
        "firebaseappcheck/v1beta": "firebaseappcheck.v1beta",
        "firebaseappdistribution/v1": "firebaseappdistribution.v1",
        "firebasedatabase/v1beta": "firebasedatabase.v1beta",
        "firebasedynamiclinks/v1": "firebasedynamiclinks.v1",
        "firebasehosting/v1": "firebasehosting.v1",
        "firebasehosting/v1beta1": "firebasehosting.v1beta1",
        "firebaseml/v1": "firebaseml.v1",
        "firebaseml/v1beta2": "firebaseml.v1beta2",
        "firebaserules/v1": "firebaserules.v1",
        "firebasestorage/v1beta": "firebasestorage.v1beta",
        "firestore/v1": "firestore.v1",
        "firestore/v1beta1": "firestore.v1beta1",
        "firestore/v1beta2": "firestore.v1beta2",
        "gameservices/v1": "gameservices.v1",
        "gameservices/v1beta": "gameservices.v1beta",
        "genomics/v1": "genomics.v1",
        "genomics/v1alpha2": "genomics.v1alpha2",
        "genomics/v2alpha1": "genomics.v2alpha1",
        "gkebackup/v1": "gkebackup.v1",
        "gkehub/v1": "gkehub.v1",
        "gkehub/v1alpha": "gkehub.v1alpha",
        "gkehub/v1alpha2": "gkehub.v1alpha2",
        "gkehub/v1beta": "gkehub.v1beta",
        "gkehub/v1beta1": "gkehub.v1beta1",
        "gkehub/v2alpha": "gkehub.v2alpha",
        "gkeonprem/v1": "gkeonprem.v1",
        "healthcare/v1": "healthcare.v1",
        "healthcare/v1beta1": "healthcare.v1beta1",
        "iam/v1": "iam.v1",
        "iam/v2": "iam.v2",
        "iam/v2beta": "iam.v2beta",
        "iamcredentials/v1": "iamcredentials.v1",
        "iap/v1": "iap.v1",
        "iap/v1beta1": "iap.v1beta1",
        "identitytoolkit/v1": "identitytoolkit.v1",
        "identitytoolkit/v2": "identitytoolkit.v2",
        "identitytoolkit/v3": "identitytoolkit.v3",
        "ids/v1": "ids.v1",
        "integrations/v1alpha": "integrations.v1alpha",
        "jobs/v3": "jobs.v3",
        "jobs/v4": "jobs.v4",
        "kmsinventory/v1": "kmsinventory.v1",
        "language/v1": "language.v1",
        "language/v1beta1": "language.v1beta1",
        "language/v1beta2": "language.v1beta2",
        "language/v2": "language.v2",
        "libraryagent/v1": "libraryagent.v1",
        "lifesciences/v2beta": "lifesciences.v2beta",
        "logging/v2": "logging.v2",
        "looker/v1": "looker.v1",
        "managedidentities/v1": "managedidentities.v1",
        "managedidentities/v1alpha1": "managedidentities.v1alpha1",
        "managedidentities/v1beta1": "managedidentities.v1beta1",
        "memcache/v1": "memcache.v1",
        "memcache/v1beta2": "memcache.v1beta2",
        "metastore/v1": "metastore.v1",
        "metastore/v1alpha": "metastore.v1alpha",
        "metastore/v1beta": "metastore.v1beta",
        "migrationcenter/v1": "migrationcenter.v1",
        "migrationcenter/v1alpha1": "migrationcenter.v1alpha1",
        "ml/v1": "ml.v1",
        "monitoring/v1": "monitoring.v1",
        "monitoring/v3": "monitoring.v3",
        "networkconnectivity/v1": "networkconnectivity.v1",
        "networkconnectivity/v1alpha1": "networkconnectivity.v1alpha1",
        "networkmanagement/v1": "networkmanagement.v1",
        "networkmanagement/v1beta1": "networkmanagement.v1beta1",
        "networksecurity/v1": "networksecurity.v1",
        "networksecurity/v1beta1": "networksecurity.v1beta1",
        "networkservices/v1": "networkservices.v1",
        "networkservices/v1beta1": "networkservices.v1beta1",
        "notebooks/v1": "notebooks.v1",
        "notebooks/v2": "notebooks.v2",
        "ondemandscanning/v1": "ondemandscanning.v1",
        "ondemandscanning/v1beta1": "ondemandscanning.v1beta1",
        "orgpolicy/v2": "orgpolicy.v2",
        "osconfig/v1": "osconfig.v1",
        "osconfig/v1alpha": "osconfig.v1alpha",
        "osconfig/v1beta": "osconfig.v1beta",
        "oslogin/v1": "oslogin.v1",
        "oslogin/v1alpha": "oslogin.v1alpha",
        "oslogin/v1beta": "oslogin.v1beta",
        "playgrouping/v1alpha1": "playgrouping.v1alpha1",
        "policysimulator/v1": "policysimulator.v1",
        "policysimulator/v1alpha": "policysimulator.v1alpha",
        "policysimulator/v1beta": "policysimulator.v1beta",
        "policysimulator/v1beta1": "policysimulator.v1beta1",
        "policytroubleshooter/v1": "policytroubleshooter.v1",
        "policytroubleshooter/v1beta": "policytroubleshooter.v1beta",
        "privateca/v1": "privateca.v1",
        "privateca/v1beta1": "privateca.v1beta1",
        "publicca/v1": "publicca.v1",
        "publicca/v1alpha1": "publicca.v1alpha1",
        "publicca/v1beta1": "publicca.v1beta1",
        "pubsub/v1": "pubsub.v1",
        "pubsub/v1beta1a": "pubsub.v1beta1a",
        "pubsub/v1beta2": "pubsub.v1beta2",
        "pubsublite/v1": "pubsublite.v1",
        "rapidmigrationassessment/v1": "rapidmigrationassessment.v1",
        "recaptchaenterprise/v1": "recaptchaenterprise.v1",
        "recommendationengine/v1beta1": "recommendationengine.v1beta1",
        "recommender/v1": "recommender.v1",
        "recommender/v1beta1": "recommender.v1beta1",
        "redis/v1": "redis.v1",
        "redis/v1beta1": "redis.v1beta1",
        "remotebuildexecution/v1": "remotebuildexecution.v1",
        "remotebuildexecution/v1alpha": "remotebuildexecution.v1alpha",
        "remotebuildexecution/v2": "remotebuildexecution.v2",
        "resourcesettings/v1": "resourcesettings.v1",
        "retail/v2": "retail.v2",
        "retail/v2alpha": "retail.v2alpha",
        "retail/v2beta": "retail.v2beta",
        "run/v1": "run.v1",
        "run/v2": "run.v2",
        "runtimeconfig/v1": "runtimeconfig.v1",
        "runtimeconfig/v1beta1": "runtimeconfig.v1beta1",
        "secretmanager/v1": "secretmanager.v1",
        "secretmanager/v1beta1": "secretmanager.v1beta1",
        "securitycenter/v1": "securitycenter.v1",
        "securitycenter/v1beta1": "securitycenter.v1beta1",
        "securitycenter/v1beta2": "securitycenter.v1beta2",
        "serviceconsumermanagement/v1": "serviceconsumermanagement.v1",
        "serviceconsumermanagement/v1beta1": "serviceconsumermanagement.v1beta1",
        "servicecontrol/v1": "servicecontrol.v1",
        "servicecontrol/v2": "servicecontrol.v2",
        "servicedirectory/v1": "servicedirectory.v1",
        "servicedirectory/v1beta1": "servicedirectory.v1beta1",
        "servicemanagement/v1": "servicemanagement.v1",
        "servicenetworking/v1": "servicenetworking.v1",
        "servicenetworking/v1beta": "servicenetworking.v1beta",
        "serviceusage/v1": "serviceusage.v1",
        "serviceusage/v1beta1": "serviceusage.v1beta1",
        "sourcerepo/v1": "sourcerepo.v1",
        "spanner/v1": "spanner.v1",
        "speech/v1": "speech.v1",
        "speech/v2beta1": "speech.v2beta1",
        "sqladmin/v1": "sqladmin.v1",
        "sqladmin/v1beta4": "sqladmin.v1beta4",
        "storage/v1": "storage.v1",
        "storagetransfer/v1": "storagetransfer.v1",
        "testing/v1": "testing.v1",
        "texttospeech/v1": "texttospeech.v1",
        "texttospeech/v1beta1": "texttospeech.v1beta1",
        "toolresults/v1beta3": "toolresults.v1beta3",
        "tpu/v1": "tpu.v1",
        "tpu/v1alpha1": "tpu.v1alpha1",
        "tpu/v2": "tpu.v2",
        "tpu/v2alpha1": "tpu.v2alpha1",
        "trafficdirector/v2": "trafficdirector.v2",
        "trafficdirector/v3": "trafficdirector.v3",
        "transcoder/v1": "transcoder.v1",
        "translate/v2": "translate.v2",
        "translate/v3": "translate.v3",
        "translate/v3beta1": "translate.v3beta1",
        "videointelligence/v1": "videointelligence.v1",
        "videointelligence/v1beta2": "videointelligence.v1beta2",
        "vision/v1": "vision.v1",
        "vmmigration/v1": "vmmigration.v1",
        "vmmigration/v1alpha1": "vmmigration.v1alpha1",
        "vmwareengine/v1": "vmwareengine.v1",
        "vpcaccess/v1": "vpcaccess.v1",
        "vpcaccess/v1beta1": "vpcaccess.v1beta1",
        "webrisk/v1": "webrisk.v1",
        "websecurityscanner/v1": "websecurityscanner.v1",
        "websecurityscanner/v1alpha": "websecurityscanner.v1alpha",
        "websecurityscanner/v1beta": "websecurityscanner.v1beta",
        "workflowexecutions/v1": "workflowexecutions.v1",
        "workflowexecutions/v1beta": "workflowexecutions.v1beta",
        "workflows/v1": "workflows.v1",
        "workflows/v1beta": "workflows.v1beta",
        "workloadmanager/v1": "workloadmanager.v1",
        "workstations/v1": "workstations.v1",
        "workstations/v1beta": "workstations.v1beta"
      }
    },
    "nodejs": {
      "dependencies": {
        "@pulumi/pulumi": "^3.0.0"
      },
      "liftSingleValueMethodReturns": true,
      "readme": "The native Google Cloud Provider for Pulumi lets you provision Google Cloud resources in your cloud\nprograms. This provider uses the Google Cloud REST API directly and therefore provides full access to Google Cloud.\nThe provider is currently in public preview and is not recommended for production deployments yet. Breaking changes\nwill be introduced in minor version releases."
    },
    "python": {
      "liftSingleValueMethodReturns": true,
      "moduleNameOverrides": {
        "accessapproval/v1": "accessapproval/v1",
        "accesscontextmanager/v1": "accesscontextmanager/v1",
        "accesscontextmanager/v1beta": "accesscontextmanager/v1beta",
        "advisorynotifications/v1": "advisorynotifications/v1",
        "aiplatform/v1": "aiplatform/v1",
        "aiplatform/v1beta1": "aiplatform/v1beta1",
        "alloydb/v1": "alloydb/v1",
        "alloydb/v1alpha": "alloydb/v1alpha",
        "alloydb/v1beta": "alloydb/v1beta",
        "analyticshub/v1": "analyticshub/v1",
        "analyticshub/v1beta1": "analyticshub/v1beta1",
        "apigateway/v1": "apigateway/v1",
        "apigateway/v1beta": "apigateway/v1beta",
        "apigee/v1": "apigee/v1",
        "apigeeregistry/v1": "apigeeregistry/v1",
        "apikeys/v2": "apikeys/v2",
        "appengine/v1": "appengine/v1",
        "appengine/v1alpha": "appengine/v1alpha",
        "appengine/v1beta": "appengine/v1beta",
        "artifactregistry/v1": "artifactregistry/v1",
        "artifactregistry/v1beta1": "artifactregistry/v1beta1",
        "artifactregistry/v1beta2": "artifactregistry/v1beta2",
        "assuredworkloads/v1": "assuredworkloads/v1",
        "assuredworkloads/v1beta1": "assuredworkloads/v1beta1",
        "backupdr/v1": "backupdr/v1",
        "baremetalsolution/v1": "baremetalsolution/v1",
        "baremetalsolution/v2": "baremetalsolution/v2",
        "batch/v1": "batch/v1",
        "beyondcorp/v1": "beyondcorp/v1",
        "beyondcorp/v1alpha": "beyondcorp/v1alpha",
        "biglake/v1": "biglake/v1",
        "bigquery/v2": "bigquery/v2",
        "bigqueryconnection/v1beta1": "bigqueryconnection/v1beta1",
        "bigquerydatapolicy/v1": "bigquerydatapolicy/v1",
        "bigquerydatatransfer/v1": "bigquerydatatransfer/v1",
        "bigqueryreservation/v1": "bigqueryreservation/v1",
        "bigqueryreservation/v1beta1": "bigqueryreservation/v1beta1",
        "bigtableadmin/v1": "bigtableadmin/v1",
        "bigtableadmin/v2": "bigtableadmin/v2",
        "billingbudgets/v1": "billingbudgets/v1",
        "billingbudgets/v1beta1": "billingbudgets/v1beta1",
        "binaryauthorization/v1": "binaryauthorization/v1",
        "binaryauthorization/v1beta1": "binaryauthorization/v1beta1",
        "blockchainnodeengine/v1": "blockchainnodeengine/v1",
        "certificatemanager/v1": "certificatemanager/v1",
        "cloudasset/v1": "cloudasset/v1",
        "cloudasset/v1beta1": "cloudasset/v1beta1",
        "cloudbilling/v1": "cloudbilling/v1",
        "cloudbilling/v1beta": "cloudbilling/v1beta",
        "cloudbuild/v1": "cloudbuild/v1",
        "cloudbuild/v1alpha1": "cloudbuild/v1alpha1",
        "cloudbuild/v1alpha2": "cloudbuild/v1alpha2",
        "cloudbuild/v1beta1": "cloudbuild/v1beta1",
        "cloudbuild/v2": "cloudbuild/v2",
        "cloudchannel/v1": "cloudchannel/v1",
        "clouddebugger/v2": "clouddebugger/v2",
        "clouddeploy/v1": "clouddeploy/v1",
        "clouderrorreporting/v1beta1": "clouderrorreporting/v1beta1",
        "cloudfunctions/v1": "cloudfunctions/v1",
        "cloudfunctions/v2": "cloudfunctions/v2",
        "cloudfunctions/v2alpha": "cloudfunctions/v2alpha",
        "cloudfunctions/v2beta": "cloudfunctions/v2beta",
        "cloudidentity/v1": "cloudidentity/v1",
        "cloudidentity/v1beta1": "cloudidentity/v1beta1",
        "cloudiot/v1": "cloudiot/v1",
        "cloudkms/v1": "cloudkms/v1",
        "cloudprofiler/v2": "cloudprofiler/v2",
        "cloudresourcemanager/v1": "cloudresourcemanager/v1",
        "cloudresourcemanager/v1beta1": "cloudresourcemanager/v1beta1",
        "cloudresourcemanager/v2": "cloudresourcemanager/v2",
        "cloudresourcemanager/v2beta1": "cloudresourcemanager/v2beta1",
        "cloudresourcemanager/v3": "cloudresourcemanager/v3",
        "cloudscheduler/v1": "cloudscheduler/v1",
        "cloudscheduler/v1beta1": "cloudscheduler/v1beta1",
        "cloudsearch/v1": "cloudsearch/v1",
        "cloudshell/v1": "cloudshell/v1",
        "cloudsupport/v2": "cloudsupport/v2",
        "cloudsupport/v2beta": "cloudsupport/v2beta",
        "cloudtasks/v2": "cloudtasks/v2",
        "cloudtasks/v2beta2": "cloudtasks/v2beta2",
        "cloudtasks/v2beta3": "cloudtasks/v2beta3",
        "cloudtrace/v1": "cloudtrace/v1",
        "cloudtrace/v2": "cloudtrace/v2",
        "cloudtrace/v2beta1": "cloudtrace/v2beta1",
        "composer/v1": "composer/v1",
        "composer/v1beta1": "composer/v1beta1",
        "compute/alpha": "compute/alpha",
        "compute/beta": "compute/beta",
        "compute/v1": "compute/v1",
        "connectors/v1": "connectors/v1",
        "connectors/v2": "connectors/v2",
        "contactcenteraiplatform/v1alpha1": "contactcenteraiplatform/v1alpha1",
        "contactcenterinsights/v1": "contactcenterinsights/v1",
        "container/v1": "container/v1",
        "container/v1beta1": "container/v1beta1",
        "containeranalysis/v1": "containeranalysis/v1",
        "containeranalysis/v1alpha1": "containeranalysis/v1alpha1",
        "containeranalysis/v1beta1": "containeranalysis/v1beta1",
        "contentwarehouse/v1": "contentwarehouse/v1",
        "datacatalog/v1": "datacatalog/v1",
        "datacatalog/v1beta1": "datacatalog/v1beta1",
        "dataflow/v1b3": "dataflow/v1b3",
        "dataform/v1beta1": "dataform/v1beta1",
        "datafusion/v1": "datafusion/v1",
        "datafusion/v1beta1": "datafusion/v1beta1",
        "datalabeling/v1beta1": "datalabeling/v1beta1",
        "datalineage/v1": "datalineage/v1",
        "datamigration/v1": "datamigration/v1",
        "datamigration/v1beta1": "datamigration/v1beta1",
        "datapipelines/v1": "datapipelines/v1",
        "dataplex/v1": "dataplex/v1",
        "dataproc/v1": "dataproc/v1",
        "dataproc/v1beta2": "dataproc/v1beta2",
        "datastore/v1": "datastore/v1",
        "datastore/v1beta1": "datastore/v1beta1",
        "datastore/v1beta3": "datastore/v1beta3",
        "datastream/v1": "datastream/v1",
        "datastream/v1alpha1": "datastream/v1alpha1",
        "deploymentmanager/alpha": "deploymentmanager/alpha",
        "deploymentmanager/v2": "deploymentmanager/v2",
        "deploymentmanager/v2beta": "deploymentmanager/v2beta",
        "dialogflow/v2": "dialogflow/v2",
        "dialogflow/v2beta1": "dialogflow/v2beta1",
        "dialogflow/v3": "dialogflow/v3",
        "dialogflow/v3beta1": "dialogflow/v3beta1",
        "discoveryengine/v1alpha": "discoveryengine/v1alpha",
        "discoveryengine/v1beta": "discoveryengine/v1beta",
        "dlp/v2": "dlp/v2",
        "dns/v1": "dns/v1",
        "dns/v1beta2": "dns/v1beta2",
        "documentai/v1": "documentai/v1",
        "documentai/v1beta2": "documentai/v1beta2",
        "documentai/v1beta3": "documentai/v1beta3",
        "domains/v1": "domains/v1",
        "domains/v1alpha2": "domains/v1alpha2",
        "domains/v1beta1": "domains/v1beta1",
        "essentialcontacts/v1": "essentialcontacts/v1",
        "eventarc/v1": "eventarc/v1",
        "eventarc/v1beta1": "eventarc/v1beta1",
        "fcm/v1": "fcm/v1",
        "fcmdata/v1beta1": "fcmdata/v1beta1",
        "file/v1": "file/v1",
        "file/v1beta1": "file/v1beta1",
        "firebase/v1beta1": "firebase/v1beta1",
        "firebaseappcheck/v1": "firebaseappcheck/v1",
        "firebaseappcheck/v1beta": "firebaseappcheck/v1beta",
        "firebaseappdistribution/v1": "firebaseappdistribution/v1",
        "firebasedatabase/v1beta": "firebasedatabase/v1beta",
        "firebasedynamiclinks/v1": "firebasedynamiclinks/v1",
        "firebasehosting/v1": "firebasehosting/v1",
        "firebasehosting/v1beta1": "firebasehosting/v1beta1",
        "firebaseml/v1": "firebaseml/v1",
        "firebaseml/v1beta2": "firebaseml/v1beta2",
        "firebaserules/v1": "firebaserules/v1",
        "firebasestorage/v1beta": "firebasestorage/v1beta",
        "firestore/v1": "firestore/v1",
        "firestore/v1beta1": "firestore/v1beta1",
        "firestore/v1beta2": "firestore/v1beta2",
        "gameservices/v1": "gameservices/v1",
        "gameservices/v1beta": "gameservices/v1beta",
        "genomics/v1": "genomics/v1",
        "genomics/v1alpha2": "genomics/v1alpha2",
        "genomics/v2alpha1": "genomics/v2alpha1",
        "gkebackup/v1": "gkebackup/v1",
        "gkehub/v1": "gkehub/v1",
        "gkehub/v1alpha": "gkehub/v1alpha",
        "gkehub/v1alpha2": "gkehub/v1alpha2",
        "gkehub/v1beta": "gkehub/v1beta",
        "gkehub/v1beta1": "gkehub/v1beta1",
        "gkehub/v2alpha": "gkehub/v2alpha",
        "gkeonprem/v1": "gkeonprem/v1",
        "healthcare/v1": "healthcare/v1",
        "healthcare/v1beta1": "healthcare/v1beta1",
        "iam/v1": "iam/v1",
        "iam/v2": "iam/v2",
        "iam/v2beta": "iam/v2beta",
        "iamcredentials/v1": "iamcredentials/v1",
        "iap/v1": "iap/v1",
        "iap/v1beta1": "iap/v1beta1",
        "identitytoolkit/v1": "identitytoolkit/v1",
        "identitytoolkit/v2": "identitytoolkit/v2",
        "identitytoolkit/v3": "identitytoolkit/v3",
        "ids/v1": "ids/v1",
        "integrations/v1alpha": "integrations/v1alpha",
        "jobs/v3": "jobs/v3",
        "jobs/v4": "jobs/v4",
        "kmsinventory/v1": "kmsinventory/v1",
        "language/v1": "language/v1",
        "language/v1beta1": "language/v1beta1",
        "language/v1beta2": "language/v1beta2",
        "language/v2": "language/v2",
        "libraryagent/v1": "libraryagent/v1",
        "lifesciences/v2beta": "lifesciences/v2beta",
        "logging/v2": "logging/v2",
        "looker/v1": "looker/v1",
        "managedidentities/v1": "managedidentities/v1",
        "managedidentities/v1alpha1": "managedidentities/v1alpha1",
        "managedidentities/v1beta1": "managedidentities/v1beta1",
        "memcache/v1": "memcache/v1",
        "memcache/v1beta2": "memcache/v1beta2",
        "metastore/v1": "metastore/v1",
        "metastore/v1alpha": "metastore/v1alpha",
        "metastore/v1beta": "metastore/v1beta",
        "migrationcenter/v1": "migrationcenter/v1",
        "migrationcenter/v1alpha1": "migrationcenter/v1alpha1",
        "ml/v1": "ml/v1",
        "monitoring/v1": "monitoring/v1",
        "monitoring/v3": "monitoring/v3",
        "networkconnectivity/v1": "networkconnectivity/v1",
        "networkconnectivity/v1alpha1": "networkconnectivity/v1alpha1",
        "networkmanagement/v1": "networkmanagement/v1",
        "networkmanagement/v1beta1": "networkmanagement/v1beta1",
        "networksecurity/v1": "networksecurity/v1",
        "networksecurity/v1beta1": "networksecurity/v1beta1",
        "networkservices/v1": "networkservices/v1",
        "networkservices/v1beta1": "networkservices/v1beta1",
        "notebooks/v1": "notebooks/v1",
        "notebooks/v2": "notebooks/v2",
        "ondemandscanning/v1": "ondemandscanning/v1",
        "ondemandscanning/v1beta1": "ondemandscanning/v1beta1",
        "orgpolicy/v2": "orgpolicy/v2",
        "osconfig/v1": "osconfig/v1",
        "osconfig/v1alpha": "osconfig/v1alpha",
        "osconfig/v1beta": "osconfig/v1beta",
        "oslogin/v1": "oslogin/v1",
        "oslogin/v1alpha": "oslogin/v1alpha",
        "oslogin/v1beta": "oslogin/v1beta",
        "playgrouping/v1alpha1": "playgrouping/v1alpha1",
        "policysimulator/v1": "policysimulator/v1",
        "policysimulator/v1alpha": "policysimulator/v1alpha",
        "policysimulator/v1beta": "policysimulator/v1beta",
        "policysimulator/v1beta1": "policysimulator/v1beta1",
        "policytroubleshooter/v1": "policytroubleshooter/v1",
        "policytroubleshooter/v1beta": "policytroubleshooter/v1beta",
        "privateca/v1": "privateca/v1",
        "privateca/v1beta1": "privateca/v1beta1",
        "publicca/v1": "publicca/v1",
        "publicca/v1alpha1": "publicca/v1alpha1",
        "publicca/v1beta1": "publicca/v1beta1",
        "pubsub/v1": "pubsub/v1",
        "pubsub/v1beta1a": "pubsub/v1beta1a",
        "pubsub/v1beta2": "pubsub/v1beta2",
        "pubsublite/v1": "pubsublite/v1",
        "rapidmigrationassessment/v1": "rapidmigrationassessment/v1",
        "recaptchaenterprise/v1": "recaptchaenterprise/v1",
        "recommendationengine/v1beta1": "recommendationengine/v1beta1",
        "recommender/v1": "recommender/v1",
        "recommender/v1beta1": "recommender/v1beta1",
        "redis/v1": "redis/v1",
        "redis/v1beta1": "redis/v1beta1",
        "remotebuildexecution/v1": "remotebuildexecution/v1",
        "remotebuildexecution/v1alpha": "remotebuildexecution/v1alpha",
        "remotebuildexecution/v2": "remotebuildexecution/v2",
        "resourcesettings/v1": "resourcesettings/v1",
        "retail/v2": "retail/v2",
        "retail/v2alpha": "retail/v2alpha",
        "retail/v2beta": "retail/v2beta",
        "run/v1": "run/v1",
        "run/v2": "run/v2",
        "runtimeconfig/v1": "runtimeconfig/v1",
        "runtimeconfig/v1beta1": "runtimeconfig/v1beta1",
        "secretmanager/v1": "secretmanager/v1",
        "secretmanager/v1beta1": "secretmanager/v1beta1",
        "securitycenter/v1": "securitycenter/v1",
        "securitycenter/v1beta1": "securitycenter/v1beta1",
        "securitycenter/v1beta2": "securitycenter/v1beta2",
        "serviceconsumermanagement/v1": "serviceconsumermanagement/v1",
        "serviceconsumermanagement/v1beta1": "serviceconsumermanagement/v1beta1",
        "servicecontrol/v1": "servicecontrol/v1",
        "servicecontrol/v2": "servicecontrol/v2",
        "servicedirectory/v1": "servicedirectory/v1",
        "servicedirectory/v1beta1": "servicedirectory/v1beta1",
        "servicemanagement/v1": "servicemanagement/v1",
        "servicenetworking/v1": "servicenetworking/v1",
        "servicenetworking/v1beta": "servicenetworking/v1beta",
        "serviceusage/v1": "serviceusage/v1",
        "serviceusage/v1beta1": "serviceusage/v1beta1",
        "sourcerepo/v1": "sourcerepo/v1",
        "spanner/v1": "spanner/v1",
        "speech/v1": "speech/v1",
        "speech/v2beta1": "speech/v2beta1",
        "sqladmin/v1": "sqladmin/v1",
        "sqladmin/v1beta4": "sqladmin/v1beta4",
        "storage/v1": "storage/v1",
        "storagetransfer/v1": "storagetransfer/v1",
        "testing/v1": "testing/v1",
        "texttospeech/v1": "texttospeech/v1",
        "texttospeech/v1beta1": "texttospeech/v1beta1",
        "toolresults/v1beta3": "toolresults/v1beta3",
        "tpu/v1": "tpu/v1",
        "tpu/v1alpha1": "tpu/v1alpha1",
        "tpu/v2": "tpu/v2",
        "tpu/v2alpha1": "tpu/v2alpha1",
        "trafficdirector/v2": "trafficdirector/v2",
        "trafficdirector/v3": "trafficdirector/v3",
        "transcoder/v1": "transcoder/v1",
        "translate/v2": "translate/v2",
        "translate/v3": "translate/v3",
        "translate/v3beta1": "translate/v3beta1",
        "videointelligence/v1": "videointelligence/v1",
        "videointelligence/v1beta2": "videointelligence/v1beta2",
        "vision/v1": "vision/v1",
        "vmmigration/v1": "vmmigration/v1",
        "vmmigration/v1alpha1": "vmmigration/v1alpha1",
        "vmwareengine/v1": "vmwareengine/v1",
        "vpcaccess/v1": "vpcaccess/v1",
        "vpcaccess/v1beta1": "vpcaccess/v1beta1",
        "webrisk/v1": "webrisk/v1",
        "websecurityscanner/v1": "websecurityscanner/v1",
        "websecurityscanner/v1alpha": "websecurityscanner/v1alpha",
        "websecurityscanner/v1beta": "websecurityscanner/v1beta",
        "workflowexecutions/v1": "workflowexecutions/v1",
        "workflowexecutions/v1beta": "workflowexecutions/v1beta",
        "workflows/v1": "workflows/v1",
        "workflows/v1beta": "workflows/v1beta",
        "workloadmanager/v1": "workloadmanager/v1",
        "workstations/v1": "workstations/v1",
        "workstations/v1beta": "workstations/v1beta"
      },
      "pyproject": {
        "enabled": true
      },
      "readme": "The native Google Cloud Provider for Pulumi lets you provision Google Cloud resources in your cloud\nprograms. This provider uses the Google Cloud REST API directly and therefore provides full access to Google Cloud.\nThe provider is currently in public preview and is not recommended for production deployments yet. Breaking changes\nwill be introduced in minor version releases.",
      "requires": {
        "pulumi": ">=3.0.0,<4.0.0"
      },
      "usesIOClasses": true
    }
  },
  "config": {
    "variables": {
      "appendUserAgent": {
        "type": "string",
        "description": "Additional user-agent string to append to the default one (<prod_name>/<ver>)."
      },
      "disablePartnerName": {
        "type": "boolean",
        "description": "This will disable the Pulumi Partner Name which is used if a custom `partnerName` isn't specified."
      },
      "partnerName": {
        "type": "string",
        "description": "A Google Partner Name to facilitate partner resource usage attribution."
      },
      "project": {
        "type": "string",
        "description": "The default project to manage resources in. If another project is specified on a resource, it will take precedence."
      },
      "region": {
        "type": "string",
        "description": "The default region to manage resources in. If another region is specified on a regional resource, it will take precedence."
      },
      "zone": {
        "type": "string",
        "description": "The default zone to manage resources in. Generally, this zone should be within the default region you specified. If another zone is specified on a zonal resource, it will take precedence."
      }
    }
  },
  "types": {
    "google-native:accesscontextmanager/v1:ApiOperation": {
      "description": "Identification for an API Operation.",
      "properties": {
        "methodSelectors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:MethodSelector"
          },
          "description": "API methods or permissions to allow. Method or permission must belong to the service specified by `service_name` field. A single MethodSelector entry with `*` specified for the `method` field will allow all methods AND permissions for the service specified in `service_name`."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the API whose methods or permissions the IngressPolicy or EgressPolicy want to allow. A single ApiOperation with `service_name` field set to `*` will allow all methods AND permissions for all services."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:ApiOperationResponse": {
      "description": "Identification for an API Operation.",
      "properties": {
        "methodSelectors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:MethodSelectorResponse"
          },
          "description": "API methods or permissions to allow. Method or permission must belong to the service specified by `service_name` field. A single MethodSelector entry with `*` specified for the `method` field will allow all methods AND permissions for the service specified in `service_name`."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the API whose methods or permissions the IngressPolicy or EgressPolicy want to allow. A single ApiOperation with `service_name` field set to `*` will allow all methods AND permissions for all services."
        }
      },
      "type": "object",
      "required": [
        "methodSelectors",
        "serviceName"
      ]
    },
    "google-native:accesscontextmanager/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:accesscontextmanager/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:accesscontextmanager/v1:AuthorizedOrgsDescAssetType": {
      "description": "The asset type of this authorized orgs desc. Valid values are `ASSET_TYPE_DEVICE`, and `ASSET_TYPE_CREDENTIAL_STRENGTH`.",
      "type": "string",
      "enum": [
        {
          "name": "AssetTypeUnspecified",
          "description": "No asset type specified.",
          "value": "ASSET_TYPE_UNSPECIFIED"
        },
        {
          "name": "AssetTypeDevice",
          "description": "Device asset type.",
          "value": "ASSET_TYPE_DEVICE"
        },
        {
          "name": "AssetTypeCredentialStrength",
          "description": "Credential strength asset type.",
          "value": "ASSET_TYPE_CREDENTIAL_STRENGTH"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:AuthorizedOrgsDescAuthorizationDirection": {
      "description": "The direction of the authorization relationship between this organization and the organizations listed in the `orgs` field. The valid values for this field include the following: `AUTHORIZATION_DIRECTION_FROM`: Allows this organization to evaluate traffic in the organizations listed in the `orgs` field. `AUTHORIZATION_DIRECTION_TO`: Allows the organizations listed in the `orgs` field to evaluate the traffic in this organization. For the authorization relationship to take effect, all of the organizations must authorize and specify the appropriate relationship direction. For example, if organization A authorized organization B and C to evaluate its traffic, by specifying `AUTHORIZATION_DIRECTION_TO` as the authorization direction, organizations B and C must specify `AUTHORIZATION_DIRECTION_FROM` as the authorization direction in their `AuthorizedOrgsDesc` resource.",
      "type": "string",
      "enum": [
        {
          "name": "AuthorizationDirectionUnspecified",
          "description": "No direction specified.",
          "value": "AUTHORIZATION_DIRECTION_UNSPECIFIED"
        },
        {
          "name": "AuthorizationDirectionTo",
          "description": "The specified organizations are authorized to evaluate traffic in this organization.",
          "value": "AUTHORIZATION_DIRECTION_TO"
        },
        {
          "name": "AuthorizationDirectionFrom",
          "description": "The traffic of the specified organizations can be evaluated by this organization.",
          "value": "AUTHORIZATION_DIRECTION_FROM"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:AuthorizedOrgsDescAuthorizationType": {
      "description": "A granular control type for authorization levels. Valid value is `AUTHORIZATION_TYPE_TRUST`.",
      "type": "string",
      "enum": [
        {
          "name": "AuthorizationTypeUnspecified",
          "description": "No authorization type specified.",
          "value": "AUTHORIZATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "AuthorizationTypeTrust",
          "description": "This authorization relationship is \"trust\".",
          "value": "AUTHORIZATION_TYPE_TRUST"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:BasicLevel": {
      "description": "`BasicLevel` is an `AccessLevel` using a set of recommended features.",
      "properties": {
        "combiningFunction": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:BasicLevelCombiningFunction",
          "description": "How the `conditions` list should be combined to determine if a request is granted this `AccessLevel`. If AND is used, each `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. If OR is used, at least one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. Default behavior is AND."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:Condition"
          },
          "description": "A list of requirements for the `AccessLevel` to be granted."
        }
      },
      "type": "object",
      "required": [
        "conditions"
      ]
    },
    "google-native:accesscontextmanager/v1:BasicLevelCombiningFunction": {
      "description": "How the `conditions` list should be combined to determine if a request is granted this `AccessLevel`. If AND is used, each `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. If OR is used, at least one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. Default behavior is AND.",
      "type": "string",
      "enum": [
        {
          "name": "And",
          "description": "All `Conditions` must be true for the `BasicLevel` to be true.",
          "value": "AND"
        },
        {
          "name": "Or",
          "description": "If at least one `Condition` is true, then the `BasicLevel` is true.",
          "value": "OR"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:BasicLevelResponse": {
      "description": "`BasicLevel` is an `AccessLevel` using a set of recommended features.",
      "properties": {
        "combiningFunction": {
          "type": "string",
          "description": "How the `conditions` list should be combined to determine if a request is granted this `AccessLevel`. If AND is used, each `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. If OR is used, at least one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. Default behavior is AND."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ConditionResponse"
          },
          "description": "A list of requirements for the `AccessLevel` to be granted."
        }
      },
      "type": "object",
      "required": [
        "combiningFunction",
        "conditions"
      ]
    },
    "google-native:accesscontextmanager/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:accesscontextmanager/v1:Condition": {
      "description": "A condition necessary for an `AccessLevel` to be granted. The Condition is an AND over its fields. So a Condition is true if: 1) the request IP is from one of the listed subnetworks AND 2) the originating device complies with the listed device policy AND 3) all listed access levels are granted AND 4) the request was sent at a time allowed by the DateTimeRestriction.",
      "properties": {
        "devicePolicy": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:DevicePolicy",
          "description": "Device specific restrictions, all restrictions must hold for the Condition to be true. If not specified, all devices are allowed."
        },
        "ipSubnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for a CIDR IP address block, the specified IP address portion must be properly truncated (i.e. all the host bits must be zero) or the input is considered malformed. For example, \"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly, for IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\" is not. The originating IP of a request must be in one of the listed subnets in order for this Condition to be true. If empty, all IP addresses are allowed."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The request must be made by one of the provided user or service accounts. Groups are not supported. Syntax: `user:{emailid}` `serviceAccount:{emailid}` If not specified, a request may come from any user."
        },
        "negate": {
          "type": "boolean",
          "description": "Whether to negate the Condition. If true, the Condition becomes a NAND over its non-empty fields. Any non-empty field criteria evaluating to false will result in the Condition to be satisfied. Defaults to false."
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The request must originate from one of the provided countries/regions. Must be valid ISO 3166-1 alpha-2 codes."
        },
        "requiredAccessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of other access levels defined in the same `Policy`, referenced by resource name. Referencing an `AccessLevel` which does not exist is an error. All access levels listed must be granted for the Condition to be true. Example: \"`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME\"`"
        },
        "vpcNetworkSources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:VpcNetworkSource"
          },
          "description": "The request must originate from one of the provided VPC networks in Google Cloud. Cannot specify this field together with `ip_subnetworks`."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:ConditionResponse": {
      "description": "A condition necessary for an `AccessLevel` to be granted. The Condition is an AND over its fields. So a Condition is true if: 1) the request IP is from one of the listed subnetworks AND 2) the originating device complies with the listed device policy AND 3) all listed access levels are granted AND 4) the request was sent at a time allowed by the DateTimeRestriction.",
      "properties": {
        "devicePolicy": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:DevicePolicyResponse",
          "description": "Device specific restrictions, all restrictions must hold for the Condition to be true. If not specified, all devices are allowed."
        },
        "ipSubnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for a CIDR IP address block, the specified IP address portion must be properly truncated (i.e. all the host bits must be zero) or the input is considered malformed. For example, \"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly, for IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\" is not. The originating IP of a request must be in one of the listed subnets in order for this Condition to be true. If empty, all IP addresses are allowed."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The request must be made by one of the provided user or service accounts. Groups are not supported. Syntax: `user:{emailid}` `serviceAccount:{emailid}` If not specified, a request may come from any user."
        },
        "negate": {
          "type": "boolean",
          "description": "Whether to negate the Condition. If true, the Condition becomes a NAND over its non-empty fields. Any non-empty field criteria evaluating to false will result in the Condition to be satisfied. Defaults to false."
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The request must originate from one of the provided countries/regions. Must be valid ISO 3166-1 alpha-2 codes."
        },
        "requiredAccessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of other access levels defined in the same `Policy`, referenced by resource name. Referencing an `AccessLevel` which does not exist is an error. All access levels listed must be granted for the Condition to be true. Example: \"`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME\"`"
        },
        "vpcNetworkSources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:VpcNetworkSourceResponse"
          },
          "description": "The request must originate from one of the provided VPC networks in Google Cloud. Cannot specify this field together with `ip_subnetworks`."
        }
      },
      "type": "object",
      "required": [
        "devicePolicy",
        "ipSubnetworks",
        "members",
        "negate",
        "regions",
        "requiredAccessLevels",
        "vpcNetworkSources"
      ]
    },
    "google-native:accesscontextmanager/v1:CustomLevel": {
      "description": "`CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request. See CEL spec at: https://github.com/google/cel-spec",
      "properties": {
        "expr": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:Expr",
          "description": "A Cloud CEL expression evaluating to a boolean."
        }
      },
      "type": "object",
      "required": [
        "expr"
      ]
    },
    "google-native:accesscontextmanager/v1:CustomLevelResponse": {
      "description": "`CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request. See CEL spec at: https://github.com/google/cel-spec",
      "properties": {
        "expr": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ExprResponse",
          "description": "A Cloud CEL expression evaluating to a boolean."
        }
      },
      "type": "object",
      "required": [
        "expr"
      ]
    },
    "google-native:accesscontextmanager/v1:DevicePolicy": {
      "description": "`DevicePolicy` specifies device specific restrictions necessary to acquire a given access level. A `DevicePolicy` specifies requirements for requests from devices to be granted access levels, it does not do any enforcement on the device. `DevicePolicy` acts as an AND over all specified fields, and each repeated field is an OR over its elements. Any unset fields are ignored. For example, if the proto is { os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX, encryption_status: ENCRYPTED}, then the DevicePolicy will be true for requests originating from encrypted Linux desktops and encrypted Windows desktops.",
      "properties": {
        "allowedDeviceManagementLevels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:DevicePolicyAllowedDeviceManagementLevelsItem"
          },
          "description": "Allowed device management levels, an empty list allows all management levels."
        },
        "allowedEncryptionStatuses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:DevicePolicyAllowedEncryptionStatusesItem"
          },
          "description": "Allowed encryptions statuses, an empty list allows all statuses."
        },
        "osConstraints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:OsConstraint"
          },
          "description": "Allowed OS versions, an empty list allows all types and all versions."
        },
        "requireAdminApproval": {
          "type": "boolean",
          "description": "Whether the device needs to be approved by the customer admin."
        },
        "requireCorpOwned": {
          "type": "boolean",
          "description": "Whether the device needs to be corp owned."
        },
        "requireScreenlock": {
          "type": "boolean",
          "description": "Whether or not screenlock is required for the DevicePolicy to be true. Defaults to `false`."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:DevicePolicyAllowedDeviceManagementLevelsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ManagementUnspecified",
          "description": "The device's management level is not specified or not known.",
          "value": "MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "The device is not managed.",
          "value": "NONE"
        },
        {
          "name": "Basic",
          "description": "Basic management is enabled, which is generally limited to monitoring and wiping the corporate account.",
          "value": "BASIC"
        },
        {
          "name": "Complete",
          "description": "Complete device management. This includes more thorough monitoring and the ability to directly manage the device (such as remote wiping). This can be enabled through the Android Enterprise Platform.",
          "value": "COMPLETE"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:DevicePolicyAllowedEncryptionStatusesItem": {
      "type": "string",
      "enum": [
        {
          "name": "EncryptionUnspecified",
          "description": "The encryption status of the device is not specified or not known.",
          "value": "ENCRYPTION_UNSPECIFIED"
        },
        {
          "name": "EncryptionUnsupported",
          "description": "The device does not support encryption.",
          "value": "ENCRYPTION_UNSUPPORTED"
        },
        {
          "name": "Unencrypted",
          "description": "The device supports encryption, but is currently unencrypted.",
          "value": "UNENCRYPTED"
        },
        {
          "name": "Encrypted",
          "description": "The device is encrypted.",
          "value": "ENCRYPTED"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:DevicePolicyResponse": {
      "description": "`DevicePolicy` specifies device specific restrictions necessary to acquire a given access level. A `DevicePolicy` specifies requirements for requests from devices to be granted access levels, it does not do any enforcement on the device. `DevicePolicy` acts as an AND over all specified fields, and each repeated field is an OR over its elements. Any unset fields are ignored. For example, if the proto is { os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX, encryption_status: ENCRYPTED}, then the DevicePolicy will be true for requests originating from encrypted Linux desktops and encrypted Windows desktops.",
      "properties": {
        "allowedDeviceManagementLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed device management levels, an empty list allows all management levels."
        },
        "allowedEncryptionStatuses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed encryptions statuses, an empty list allows all statuses."
        },
        "osConstraints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:OsConstraintResponse"
          },
          "description": "Allowed OS versions, an empty list allows all types and all versions."
        },
        "requireAdminApproval": {
          "type": "boolean",
          "description": "Whether the device needs to be approved by the customer admin."
        },
        "requireCorpOwned": {
          "type": "boolean",
          "description": "Whether the device needs to be corp owned."
        },
        "requireScreenlock": {
          "type": "boolean",
          "description": "Whether or not screenlock is required for the DevicePolicy to be true. Defaults to `false`."
        }
      },
      "type": "object",
      "required": [
        "allowedDeviceManagementLevels",
        "allowedEncryptionStatuses",
        "osConstraints",
        "requireAdminApproval",
        "requireCorpOwned",
        "requireScreenlock"
      ]
    },
    "google-native:accesscontextmanager/v1:EgressFrom": {
      "description": "Defines the conditions under which an EgressPolicy matches a request. Conditions based on information about the source of the request. Note that if the destination of the request is also protected by a ServicePerimeter, then that ServicePerimeter must have an IngressPolicy which allows access in order for this request to succeed.",
      "properties": {
        "identities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of identities that are allowed access through this [EgressPolicy]. Should be in the format of email address. The email address should represent individual user or service account only."
        },
        "identityType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressFromIdentityType",
          "description": "Specifies the type of identities that are allowed access to outside the perimeter. If left unspecified, then members of `identities` field will be allowed access."
        },
        "sourceRestriction": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressFromSourceRestriction",
          "description": "Whether to enforce traffic restrictions based on `sources` field. If the `sources` fields is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressSource"
          },
          "description": "Sources that this EgressPolicy authorizes access from. If this field is not empty, then `source_restriction` must be set to `SOURCE_RESTRICTION_ENABLED`."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:EgressFromIdentityType": {
      "description": "Specifies the type of identities that are allowed access to outside the perimeter. If left unspecified, then members of `identities` field will be allowed access.",
      "type": "string",
      "enum": [
        {
          "name": "IdentityTypeUnspecified",
          "description": "No blanket identity group specified.",
          "value": "IDENTITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "AnyIdentity",
          "description": "Authorize access from all identities outside the perimeter.",
          "value": "ANY_IDENTITY"
        },
        {
          "name": "AnyUserAccount",
          "description": "Authorize access from all human users outside the perimeter.",
          "value": "ANY_USER_ACCOUNT"
        },
        {
          "name": "AnyServiceAccount",
          "description": "Authorize access from all service accounts outside the perimeter.",
          "value": "ANY_SERVICE_ACCOUNT"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:EgressFromResponse": {
      "description": "Defines the conditions under which an EgressPolicy matches a request. Conditions based on information about the source of the request. Note that if the destination of the request is also protected by a ServicePerimeter, then that ServicePerimeter must have an IngressPolicy which allows access in order for this request to succeed.",
      "properties": {
        "identities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of identities that are allowed access through this [EgressPolicy]. Should be in the format of email address. The email address should represent individual user or service account only."
        },
        "identityType": {
          "type": "string",
          "description": "Specifies the type of identities that are allowed access to outside the perimeter. If left unspecified, then members of `identities` field will be allowed access."
        },
        "sourceRestriction": {
          "type": "string",
          "description": "Whether to enforce traffic restrictions based on `sources` field. If the `sources` fields is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressSourceResponse"
          },
          "description": "Sources that this EgressPolicy authorizes access from. If this field is not empty, then `source_restriction` must be set to `SOURCE_RESTRICTION_ENABLED`."
        }
      },
      "type": "object",
      "required": [
        "identities",
        "identityType",
        "sourceRestriction",
        "sources"
      ]
    },
    "google-native:accesscontextmanager/v1:EgressFromSourceRestriction": {
      "description": "Whether to enforce traffic restrictions based on `sources` field. If the `sources` fields is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.",
      "type": "string",
      "enum": [
        {
          "name": "SourceRestrictionUnspecified",
          "description": "Enforcement preference unspecified, will not enforce traffic restrictions based on `sources` in EgressFrom.",
          "value": "SOURCE_RESTRICTION_UNSPECIFIED"
        },
        {
          "name": "SourceRestrictionEnabled",
          "description": "Enforcement preference enabled, traffic restrictions will be enforced based on `sources` in EgressFrom.",
          "value": "SOURCE_RESTRICTION_ENABLED"
        },
        {
          "name": "SourceRestrictionDisabled",
          "description": "Enforcement preference disabled, will not enforce traffic restrictions based on `sources` in EgressFrom.",
          "value": "SOURCE_RESTRICTION_DISABLED"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:EgressPolicy": {
      "description": "Policy for egress from perimeter. EgressPolicies match requests based on `egress_from` and `egress_to` stanzas. For an EgressPolicy to match, both `egress_from` and `egress_to` stanzas must be matched. If an EgressPolicy matches a request, the request is allowed to span the ServicePerimeter boundary. For example, an EgressPolicy can be used to allow VMs on networks within the ServicePerimeter to access a defined set of projects outside the perimeter in certain contexts (e.g. to read data from a Cloud Storage bucket or query against a BigQuery dataset). EgressPolicies are concerned with the *resources* that a request relates as well as the API services and API actions being used. They do not related to the direction of data movement. More detailed documentation for this concept can be found in the descriptions of EgressFrom and EgressTo.",
      "properties": {
        "egressFrom": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressFrom",
          "description": "Defines conditions on the source of a request causing this EgressPolicy to apply."
        },
        "egressTo": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressTo",
          "description": "Defines the conditions on the ApiOperation and destination resources that cause this EgressPolicy to apply."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:EgressPolicyResponse": {
      "description": "Policy for egress from perimeter. EgressPolicies match requests based on `egress_from` and `egress_to` stanzas. For an EgressPolicy to match, both `egress_from` and `egress_to` stanzas must be matched. If an EgressPolicy matches a request, the request is allowed to span the ServicePerimeter boundary. For example, an EgressPolicy can be used to allow VMs on networks within the ServicePerimeter to access a defined set of projects outside the perimeter in certain contexts (e.g. to read data from a Cloud Storage bucket or query against a BigQuery dataset). EgressPolicies are concerned with the *resources* that a request relates as well as the API services and API actions being used. They do not related to the direction of data movement. More detailed documentation for this concept can be found in the descriptions of EgressFrom and EgressTo.",
      "properties": {
        "egressFrom": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressFromResponse",
          "description": "Defines conditions on the source of a request causing this EgressPolicy to apply."
        },
        "egressTo": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressToResponse",
          "description": "Defines the conditions on the ApiOperation and destination resources that cause this EgressPolicy to apply."
        }
      },
      "type": "object",
      "required": [
        "egressFrom",
        "egressTo"
      ]
    },
    "google-native:accesscontextmanager/v1:EgressSource": {
      "description": "The source that EgressPolicy authorizes access from inside the ServicePerimeter to somewhere outside the ServicePerimeter boundaries.",
      "properties": {
        "accessLevel": {
          "type": "string",
          "description": "An AccessLevel resource name that allows protected resources inside the ServicePerimeters to access outside the ServicePerimeter boundaries. AccessLevels listed must be in the same policy as this ServicePerimeter. Referencing a nonexistent AccessLevel will cause an error. If an AccessLevel name is not specified, only resources within the perimeter can be accessed through Google Cloud calls with request origins within the perimeter. Example: `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL`. If a single `*` is specified for `access_level`, then all EgressSources will be allowed."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:EgressSourceResponse": {
      "description": "The source that EgressPolicy authorizes access from inside the ServicePerimeter to somewhere outside the ServicePerimeter boundaries.",
      "properties": {
        "accessLevel": {
          "type": "string",
          "description": "An AccessLevel resource name that allows protected resources inside the ServicePerimeters to access outside the ServicePerimeter boundaries. AccessLevels listed must be in the same policy as this ServicePerimeter. Referencing a nonexistent AccessLevel will cause an error. If an AccessLevel name is not specified, only resources within the perimeter can be accessed through Google Cloud calls with request origins within the perimeter. Example: `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL`. If a single `*` is specified for `access_level`, then all EgressSources will be allowed."
        }
      },
      "type": "object",
      "required": [
        "accessLevel"
      ]
    },
    "google-native:accesscontextmanager/v1:EgressTo": {
      "description": "Defines the conditions under which an EgressPolicy matches a request. Conditions are based on information about the ApiOperation intended to be performed on the `resources` specified. Note that if the destination of the request is also protected by a ServicePerimeter, then that ServicePerimeter must have an IngressPolicy which allows access in order for this request to succeed. The request must match `operations` AND `resources` fields in order to be allowed egress out of the perimeter.",
      "properties": {
        "externalResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of external resources that are allowed to be accessed. Only AWS and Azure resources are supported. For Amazon S3, the supported format is s3://BUCKET_NAME. For Azure Storage, the supported format is azure://myaccount.blob.core.windows.net/CONTAINER_NAME. A request matches if it contains an external resource in this list (Example: s3://bucket/path). Currently '*' is not allowed."
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ApiOperation"
          },
          "description": "A list of ApiOperations allowed to be performed by the sources specified in the corresponding EgressFrom. A request matches if it uses an operation/service in this list."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resources, currently only projects in the form `projects/`, that are allowed to be accessed by sources defined in the corresponding EgressFrom. A request matches if it contains a resource in this list. If `*` is specified for `resources`, then this EgressTo rule will authorize access to all resources outside the perimeter."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:EgressToResponse": {
      "description": "Defines the conditions under which an EgressPolicy matches a request. Conditions are based on information about the ApiOperation intended to be performed on the `resources` specified. Note that if the destination of the request is also protected by a ServicePerimeter, then that ServicePerimeter must have an IngressPolicy which allows access in order for this request to succeed. The request must match `operations` AND `resources` fields in order to be allowed egress out of the perimeter.",
      "properties": {
        "externalResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of external resources that are allowed to be accessed. Only AWS and Azure resources are supported. For Amazon S3, the supported format is s3://BUCKET_NAME. For Azure Storage, the supported format is azure://myaccount.blob.core.windows.net/CONTAINER_NAME. A request matches if it contains an external resource in this list (Example: s3://bucket/path). Currently '*' is not allowed."
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ApiOperationResponse"
          },
          "description": "A list of ApiOperations allowed to be performed by the sources specified in the corresponding EgressFrom. A request matches if it uses an operation/service in this list."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resources, currently only projects in the form `projects/`, that are allowed to be accessed by sources defined in the corresponding EgressFrom. A request matches if it contains a resource in this list. If `*` is specified for `resources`, then this EgressTo rule will authorize access to all resources outside the perimeter."
        }
      },
      "type": "object",
      "required": [
        "externalResources",
        "operations",
        "resources"
      ]
    },
    "google-native:accesscontextmanager/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:accesscontextmanager/v1:IngressFrom": {
      "description": "Defines the conditions under which an IngressPolicy matches a request. Conditions are based on information about the source of the request. The request must satisfy what is defined in `sources` AND identity related fields in order to match.",
      "properties": {
        "identities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of identities that are allowed access through this ingress policy. Should be in the format of email address. The email address should represent individual user or service account only."
        },
        "identityType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressFromIdentityType",
          "description": "Specifies the type of identities that are allowed access from outside the perimeter. If left unspecified, then members of `identities` field will be allowed access."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressSource"
          },
          "description": "Sources that this IngressPolicy authorizes access from."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:IngressFromIdentityType": {
      "description": "Specifies the type of identities that are allowed access from outside the perimeter. If left unspecified, then members of `identities` field will be allowed access.",
      "type": "string",
      "enum": [
        {
          "name": "IdentityTypeUnspecified",
          "description": "No blanket identity group specified.",
          "value": "IDENTITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "AnyIdentity",
          "description": "Authorize access from all identities outside the perimeter.",
          "value": "ANY_IDENTITY"
        },
        {
          "name": "AnyUserAccount",
          "description": "Authorize access from all human users outside the perimeter.",
          "value": "ANY_USER_ACCOUNT"
        },
        {
          "name": "AnyServiceAccount",
          "description": "Authorize access from all service accounts outside the perimeter.",
          "value": "ANY_SERVICE_ACCOUNT"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:IngressFromResponse": {
      "description": "Defines the conditions under which an IngressPolicy matches a request. Conditions are based on information about the source of the request. The request must satisfy what is defined in `sources` AND identity related fields in order to match.",
      "properties": {
        "identities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of identities that are allowed access through this ingress policy. Should be in the format of email address. The email address should represent individual user or service account only."
        },
        "identityType": {
          "type": "string",
          "description": "Specifies the type of identities that are allowed access from outside the perimeter. If left unspecified, then members of `identities` field will be allowed access."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressSourceResponse"
          },
          "description": "Sources that this IngressPolicy authorizes access from."
        }
      },
      "type": "object",
      "required": [
        "identities",
        "identityType",
        "sources"
      ]
    },
    "google-native:accesscontextmanager/v1:IngressPolicy": {
      "description": "Policy for ingress into ServicePerimeter. IngressPolicies match requests based on `ingress_from` and `ingress_to` stanzas. For an ingress policy to match, both the `ingress_from` and `ingress_to` stanzas must be matched. If an IngressPolicy matches a request, the request is allowed through the perimeter boundary from outside the perimeter. For example, access from the internet can be allowed either based on an AccessLevel or, for traffic hosted on Google Cloud, the project of the source network. For access from private networks, using the project of the hosting network is required. Individual ingress policies can be limited by restricting which services and/or actions they match using the `ingress_to` field.",
      "properties": {
        "ingressFrom": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressFrom",
          "description": "Defines the conditions on the source of a request causing this IngressPolicy to apply."
        },
        "ingressTo": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressTo",
          "description": "Defines the conditions on the ApiOperation and request destination that cause this IngressPolicy to apply."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:IngressPolicyResponse": {
      "description": "Policy for ingress into ServicePerimeter. IngressPolicies match requests based on `ingress_from` and `ingress_to` stanzas. For an ingress policy to match, both the `ingress_from` and `ingress_to` stanzas must be matched. If an IngressPolicy matches a request, the request is allowed through the perimeter boundary from outside the perimeter. For example, access from the internet can be allowed either based on an AccessLevel or, for traffic hosted on Google Cloud, the project of the source network. For access from private networks, using the project of the hosting network is required. Individual ingress policies can be limited by restricting which services and/or actions they match using the `ingress_to` field.",
      "properties": {
        "ingressFrom": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressFromResponse",
          "description": "Defines the conditions on the source of a request causing this IngressPolicy to apply."
        },
        "ingressTo": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressToResponse",
          "description": "Defines the conditions on the ApiOperation and request destination that cause this IngressPolicy to apply."
        }
      },
      "type": "object",
      "required": [
        "ingressFrom",
        "ingressTo"
      ]
    },
    "google-native:accesscontextmanager/v1:IngressSource": {
      "description": "The source that IngressPolicy authorizes access from.",
      "properties": {
        "accessLevel": {
          "type": "string",
          "description": "An AccessLevel resource name that allow resources within the ServicePerimeters to be accessed from the internet. AccessLevels listed must be in the same policy as this ServicePerimeter. Referencing a nonexistent AccessLevel will cause an error. If no AccessLevel names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example: `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL`. If a single `*` is specified for `access_level`, then all IngressSources will be allowed."
        },
        "resource": {
          "type": "string",
          "description": "A Google Cloud resource that is allowed to ingress the perimeter. Requests from these resources will be allowed to access perimeter data. Currently only projects and VPCs are allowed. Project format: `projects/{project_number}` VPC network format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NAME}`. The project may be in any Google Cloud organization, not just the organization that the perimeter is defined in. `*` is not allowed, the case of allowing all Google Cloud resources only is not supported."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:IngressSourceResponse": {
      "description": "The source that IngressPolicy authorizes access from.",
      "properties": {
        "accessLevel": {
          "type": "string",
          "description": "An AccessLevel resource name that allow resources within the ServicePerimeters to be accessed from the internet. AccessLevels listed must be in the same policy as this ServicePerimeter. Referencing a nonexistent AccessLevel will cause an error. If no AccessLevel names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example: `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL`. If a single `*` is specified for `access_level`, then all IngressSources will be allowed."
        },
        "resource": {
          "type": "string",
          "description": "A Google Cloud resource that is allowed to ingress the perimeter. Requests from these resources will be allowed to access perimeter data. Currently only projects and VPCs are allowed. Project format: `projects/{project_number}` VPC network format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NAME}`. The project may be in any Google Cloud organization, not just the organization that the perimeter is defined in. `*` is not allowed, the case of allowing all Google Cloud resources only is not supported."
        }
      },
      "type": "object",
      "required": [
        "accessLevel",
        "resource"
      ]
    },
    "google-native:accesscontextmanager/v1:IngressTo": {
      "description": "Defines the conditions under which an IngressPolicy matches a request. Conditions are based on information about the ApiOperation intended to be performed on the target resource of the request. The request must satisfy what is defined in `operations` AND `resources` in order to match.",
      "properties": {
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ApiOperation"
          },
          "description": "A list of ApiOperations allowed to be performed by the sources specified in corresponding IngressFrom in this ServicePerimeter."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resources, currently only projects in the form `projects/`, protected by this ServicePerimeter that are allowed to be accessed by sources defined in the corresponding IngressFrom. If a single `*` is specified, then access to all resources inside the perimeter are allowed."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:IngressToResponse": {
      "description": "Defines the conditions under which an IngressPolicy matches a request. Conditions are based on information about the ApiOperation intended to be performed on the target resource of the request. The request must satisfy what is defined in `operations` AND `resources` in order to match.",
      "properties": {
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ApiOperationResponse"
          },
          "description": "A list of ApiOperations allowed to be performed by the sources specified in corresponding IngressFrom in this ServicePerimeter."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resources, currently only projects in the form `projects/`, protected by this ServicePerimeter that are allowed to be accessed by sources defined in the corresponding IngressFrom. If a single `*` is specified, then access to all resources inside the perimeter are allowed."
        }
      },
      "type": "object",
      "required": [
        "operations",
        "resources"
      ]
    },
    "google-native:accesscontextmanager/v1:MethodSelector": {
      "description": "An allowed method or permission of a service specified in ApiOperation.",
      "properties": {
        "method": {
          "type": "string",
          "description": "Value for `method` should be a valid method name for the corresponding `service_name` in ApiOperation. If `*` used as value for `method`, then ALL methods and permissions are allowed."
        },
        "permission": {
          "type": "string",
          "description": "Value for `permission` should be a valid Cloud IAM permission for the corresponding `service_name` in ApiOperation."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:MethodSelectorResponse": {
      "description": "An allowed method or permission of a service specified in ApiOperation.",
      "properties": {
        "method": {
          "type": "string",
          "description": "Value for `method` should be a valid method name for the corresponding `service_name` in ApiOperation. If `*` used as value for `method`, then ALL methods and permissions are allowed."
        },
        "permission": {
          "type": "string",
          "description": "Value for `permission` should be a valid Cloud IAM permission for the corresponding `service_name` in ApiOperation."
        }
      },
      "type": "object",
      "required": [
        "method",
        "permission"
      ]
    },
    "google-native:accesscontextmanager/v1:OsConstraint": {
      "description": "A restriction on the OS type and version of devices making requests.",
      "properties": {
        "minimumVersion": {
          "type": "string",
          "description": "The minimum allowed OS version. If not set, any version of this OS satisfies the constraint. Format: `\"major.minor.patch\"`. Examples: `\"10.5.301\"`, `\"9.2.1\"`."
        },
        "osType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:OsConstraintOsType",
          "description": "The allowed OS type."
        },
        "requireVerifiedChromeOs": {
          "type": "boolean",
          "description": "Only allows requests from devices with a verified Chrome OS. Verifications includes requirements that the device is enterprise-managed, conformant to domain policies, and the caller has permission to call the API targeted by the request."
        }
      },
      "type": "object",
      "required": [
        "osType"
      ]
    },
    "google-native:accesscontextmanager/v1:OsConstraintOsType": {
      "description": "Required. The allowed OS type.",
      "type": "string",
      "enum": [
        {
          "name": "OsUnspecified",
          "description": "The operating system of the device is not specified or not known.",
          "value": "OS_UNSPECIFIED"
        },
        {
          "name": "DesktopMac",
          "description": "A desktop Mac operating system.",
          "value": "DESKTOP_MAC"
        },
        {
          "name": "DesktopWindows",
          "description": "A desktop Windows operating system.",
          "value": "DESKTOP_WINDOWS"
        },
        {
          "name": "DesktopLinux",
          "description": "A desktop Linux operating system.",
          "value": "DESKTOP_LINUX"
        },
        {
          "name": "DesktopChromeOs",
          "description": "A desktop ChromeOS operating system.",
          "value": "DESKTOP_CHROME_OS"
        },
        {
          "name": "Android",
          "description": "An Android operating system.",
          "value": "ANDROID"
        },
        {
          "name": "Ios",
          "description": "An iOS operating system.",
          "value": "IOS"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:OsConstraintResponse": {
      "description": "A restriction on the OS type and version of devices making requests.",
      "properties": {
        "minimumVersion": {
          "type": "string",
          "description": "The minimum allowed OS version. If not set, any version of this OS satisfies the constraint. Format: `\"major.minor.patch\"`. Examples: `\"10.5.301\"`, `\"9.2.1\"`."
        },
        "osType": {
          "type": "string",
          "description": "The allowed OS type."
        },
        "requireVerifiedChromeOs": {
          "type": "boolean",
          "description": "Only allows requests from devices with a verified Chrome OS. Verifications includes requirements that the device is enterprise-managed, conformant to domain policies, and the caller has permission to call the API targeted by the request."
        }
      },
      "type": "object",
      "required": [
        "minimumVersion",
        "osType",
        "requireVerifiedChromeOs"
      ]
    },
    "google-native:accesscontextmanager/v1:ServicePerimeterConfig": {
      "description": "`ServicePerimeterConfig` specifies a set of Google Cloud resources that describe specific Service Perimeter configuration.",
      "properties": {
        "accessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of `AccessLevel` resource names that allow resources within the `ServicePerimeter` to be accessed from the internet. `AccessLevels` listed must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent `AccessLevel` is a syntax error. If no `AccessLevel` names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example: `\"accessPolicies/MY_POLICY/accessLevels/MY_LEVEL\"`. For Service Perimeter Bridge, must be empty."
        },
        "egressPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressPolicy"
          },
          "description": "List of EgressPolicies to apply to the perimeter. A perimeter may have multiple EgressPolicies, each of which is evaluated separately. Access is granted if any EgressPolicy grants it. Must be empty for a perimeter bridge."
        },
        "ingressPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressPolicy"
          },
          "description": "List of IngressPolicies to apply to the perimeter. A perimeter may have multiple IngressPolicies, each of which is evaluated separately. Access is granted if any Ingress Policy grants it. Must be empty for a perimeter bridge."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Google Cloud resources that are inside of the service perimeter. Currently only projects and VPCs are allowed. Project format: `projects/{project_number}` VPC network format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NAME}`."
        },
        "restrictedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud services that are subject to the Service Perimeter restrictions. For example, if `storage.googleapis.com` is specified, access to the storage buckets inside the perimeter must meet the perimeter's access restrictions."
        },
        "vpcAccessibleServices": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:VpcAccessibleServices",
          "description": "Configuration for APIs allowed within Perimeter."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:ServicePerimeterConfigResponse": {
      "description": "`ServicePerimeterConfig` specifies a set of Google Cloud resources that describe specific Service Perimeter configuration.",
      "properties": {
        "accessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of `AccessLevel` resource names that allow resources within the `ServicePerimeter` to be accessed from the internet. `AccessLevels` listed must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent `AccessLevel` is a syntax error. If no `AccessLevel` names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example: `\"accessPolicies/MY_POLICY/accessLevels/MY_LEVEL\"`. For Service Perimeter Bridge, must be empty."
        },
        "egressPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:EgressPolicyResponse"
          },
          "description": "List of EgressPolicies to apply to the perimeter. A perimeter may have multiple EgressPolicies, each of which is evaluated separately. Access is granted if any EgressPolicy grants it. Must be empty for a perimeter bridge."
        },
        "ingressPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:IngressPolicyResponse"
          },
          "description": "List of IngressPolicies to apply to the perimeter. A perimeter may have multiple IngressPolicies, each of which is evaluated separately. Access is granted if any Ingress Policy grants it. Must be empty for a perimeter bridge."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Google Cloud resources that are inside of the service perimeter. Currently only projects and VPCs are allowed. Project format: `projects/{project_number}` VPC network format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NAME}`."
        },
        "restrictedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud services that are subject to the Service Perimeter restrictions. For example, if `storage.googleapis.com` is specified, access to the storage buckets inside the perimeter must meet the perimeter's access restrictions."
        },
        "vpcAccessibleServices": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:VpcAccessibleServicesResponse",
          "description": "Configuration for APIs allowed within Perimeter."
        }
      },
      "type": "object",
      "required": [
        "accessLevels",
        "egressPolicies",
        "ingressPolicies",
        "resources",
        "restrictedServices",
        "vpcAccessibleServices"
      ]
    },
    "google-native:accesscontextmanager/v1:ServicePerimeterPerimeterType": {
      "description": "Perimeter type indicator. A single project or VPC network is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, the restricted service list as well as access level lists must be empty.",
      "type": "string",
      "enum": [
        {
          "name": "PerimeterTypeRegular",
          "description": "Regular Perimeter. When no value is specified, the perimeter uses this type.",
          "value": "PERIMETER_TYPE_REGULAR"
        },
        {
          "name": "PerimeterTypeBridge",
          "description": "Perimeter Bridge.",
          "value": "PERIMETER_TYPE_BRIDGE"
        }
      ]
    },
    "google-native:accesscontextmanager/v1:VpcAccessibleServices": {
      "description": "Specifies how APIs are allowed to communicate within the Service Perimeter.",
      "properties": {
        "allowedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of APIs usable within the Service Perimeter. Must be empty unless 'enable_restriction' is True. You can specify a list of individual services, as well as include the 'RESTRICTED-SERVICES' value, which automatically includes all of the services protected by the perimeter."
        },
        "enableRestriction": {
          "type": "boolean",
          "description": "Whether to restrict API calls within the Service Perimeter to the list of APIs specified in 'allowed_services'."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:VpcAccessibleServicesResponse": {
      "description": "Specifies how APIs are allowed to communicate within the Service Perimeter.",
      "properties": {
        "allowedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of APIs usable within the Service Perimeter. Must be empty unless 'enable_restriction' is True. You can specify a list of individual services, as well as include the 'RESTRICTED-SERVICES' value, which automatically includes all of the services protected by the perimeter."
        },
        "enableRestriction": {
          "type": "boolean",
          "description": "Whether to restrict API calls within the Service Perimeter to the list of APIs specified in 'allowed_services'."
        }
      },
      "type": "object",
      "required": [
        "allowedServices",
        "enableRestriction"
      ]
    },
    "google-native:accesscontextmanager/v1:VpcNetworkSource": {
      "description": "The originating network source in Google Cloud.",
      "properties": {
        "vpcSubnetwork": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:VpcSubNetwork",
          "description": "Sub-segment ranges of a VPC network."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1:VpcNetworkSourceResponse": {
      "description": "The originating network source in Google Cloud.",
      "properties": {
        "vpcSubnetwork": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:VpcSubNetworkResponse",
          "description": "Sub-segment ranges of a VPC network."
        }
      },
      "type": "object",
      "required": [
        "vpcSubnetwork"
      ]
    },
    "google-native:accesscontextmanager/v1:VpcSubNetwork": {
      "description": "Sub-segment ranges inside of a VPC Network.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Network name. If the network is not part of the organization, the `compute.network.get` permission must be granted to the caller. Format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NETWORK_NAME}` Example: `//compute.googleapis.com/projects/my-project/global/networks/network-1`"
        },
        "vpcIpSubnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR block IP subnetwork specification. The IP address must be an IPv4 address and can be a public or private IP address. Note that for a CIDR IP address block, the specified IP address portion must be properly truncated (i.e. all the host bits must be zero) or the input is considered malformed. For example, \"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. If empty, all IP addresses are allowed."
        }
      },
      "type": "object",
      "required": [
        "network"
      ]
    },
    "google-native:accesscontextmanager/v1:VpcSubNetworkResponse": {
      "description": "Sub-segment ranges inside of a VPC Network.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Network name. If the network is not part of the organization, the `compute.network.get` permission must be granted to the caller. Format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NETWORK_NAME}` Example: `//compute.googleapis.com/projects/my-project/global/networks/network-1`"
        },
        "vpcIpSubnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR block IP subnetwork specification. The IP address must be an IPv4 address and can be a public or private IP address. Note that for a CIDR IP address block, the specified IP address portion must be properly truncated (i.e. all the host bits must be zero) or the input is considered malformed. For example, \"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. If empty, all IP addresses are allowed."
        }
      },
      "type": "object",
      "required": [
        "network",
        "vpcIpSubnetworks"
      ]
    },
    "google-native:accesscontextmanager/v1beta:BasicLevel": {
      "description": "`BasicLevel` is an `AccessLevel` using a set of recommended features.",
      "properties": {
        "combiningFunction": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:BasicLevelCombiningFunction",
          "description": "How the `conditions` list should be combined to determine if a request is granted this `AccessLevel`. If AND is used, each `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. If OR is used, at least one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. Default behavior is AND."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:Condition"
          },
          "description": "A list of requirements for the `AccessLevel` to be granted."
        }
      },
      "type": "object",
      "required": [
        "conditions"
      ]
    },
    "google-native:accesscontextmanager/v1beta:BasicLevelCombiningFunction": {
      "description": "How the `conditions` list should be combined to determine if a request is granted this `AccessLevel`. If AND is used, each `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. If OR is used, at least one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. Default behavior is AND.",
      "type": "string",
      "enum": [
        {
          "name": "And",
          "description": "All `Conditions` must be true for the `BasicLevel` to be true.",
          "value": "AND"
        },
        {
          "name": "Or",
          "description": "If at least one `Condition` is true, then the `BasicLevel` is true.",
          "value": "OR"
        }
      ]
    },
    "google-native:accesscontextmanager/v1beta:BasicLevelResponse": {
      "description": "`BasicLevel` is an `AccessLevel` using a set of recommended features.",
      "properties": {
        "combiningFunction": {
          "type": "string",
          "description": "How the `conditions` list should be combined to determine if a request is granted this `AccessLevel`. If AND is used, each `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. If OR is used, at least one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. Default behavior is AND."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:ConditionResponse"
          },
          "description": "A list of requirements for the `AccessLevel` to be granted."
        }
      },
      "type": "object",
      "required": [
        "combiningFunction",
        "conditions"
      ]
    },
    "google-native:accesscontextmanager/v1beta:Condition": {
      "description": "A condition necessary for an `AccessLevel` to be granted. The Condition is an AND over its fields. So a Condition is true if: 1) the request IP is from one of the listed subnetworks AND 2) the originating device complies with the listed device policy AND 3) all listed access levels are granted AND 4) the request was sent at a time allowed by the DateTimeRestriction.",
      "properties": {
        "devicePolicy": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:DevicePolicy",
          "description": "Device specific restrictions, all restrictions must hold for the Condition to be true. If not specified, all devices are allowed."
        },
        "ipSubnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for a CIDR IP address block, the specified IP address portion must be properly truncated (i.e. all the host bits must be zero) or the input is considered malformed. For example, \"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly, for IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\" is not. The originating IP of a request must be in one of the listed subnets in order for this Condition to be true. If empty, all IP addresses are allowed."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The request must be made by one of the provided user or service accounts. Groups are not supported. Syntax: `user:{emailid}` `serviceAccount:{emailid}` If not specified, a request may come from any user."
        },
        "negate": {
          "type": "boolean",
          "description": "Whether to negate the Condition. If true, the Condition becomes a NAND over its non-empty fields. Any non-empty field criteria evaluating to false will result in the Condition to be satisfied. Defaults to false."
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The request must originate from one of the provided countries/regions. Must be valid ISO 3166-1 alpha-2 codes."
        },
        "requiredAccessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of other access levels defined in the same `Policy`, referenced by resource name. Referencing an `AccessLevel` which does not exist is an error. All access levels listed must be granted for the Condition to be true. Example: \"`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME\"`"
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1beta:ConditionResponse": {
      "description": "A condition necessary for an `AccessLevel` to be granted. The Condition is an AND over its fields. So a Condition is true if: 1) the request IP is from one of the listed subnetworks AND 2) the originating device complies with the listed device policy AND 3) all listed access levels are granted AND 4) the request was sent at a time allowed by the DateTimeRestriction.",
      "properties": {
        "devicePolicy": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:DevicePolicyResponse",
          "description": "Device specific restrictions, all restrictions must hold for the Condition to be true. If not specified, all devices are allowed."
        },
        "ipSubnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for a CIDR IP address block, the specified IP address portion must be properly truncated (i.e. all the host bits must be zero) or the input is considered malformed. For example, \"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly, for IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\" is not. The originating IP of a request must be in one of the listed subnets in order for this Condition to be true. If empty, all IP addresses are allowed."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The request must be made by one of the provided user or service accounts. Groups are not supported. Syntax: `user:{emailid}` `serviceAccount:{emailid}` If not specified, a request may come from any user."
        },
        "negate": {
          "type": "boolean",
          "description": "Whether to negate the Condition. If true, the Condition becomes a NAND over its non-empty fields. Any non-empty field criteria evaluating to false will result in the Condition to be satisfied. Defaults to false."
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The request must originate from one of the provided countries/regions. Must be valid ISO 3166-1 alpha-2 codes."
        },
        "requiredAccessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of other access levels defined in the same `Policy`, referenced by resource name. Referencing an `AccessLevel` which does not exist is an error. All access levels listed must be granted for the Condition to be true. Example: \"`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME\"`"
        }
      },
      "type": "object",
      "required": [
        "devicePolicy",
        "ipSubnetworks",
        "members",
        "negate",
        "regions",
        "requiredAccessLevels"
      ]
    },
    "google-native:accesscontextmanager/v1beta:CustomLevel": {
      "description": "`CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request. See CEL spec at: https://github.com/google/cel-spec",
      "properties": {
        "expr": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:Expr",
          "description": "A Cloud CEL expression evaluating to a boolean."
        }
      },
      "type": "object",
      "required": [
        "expr"
      ]
    },
    "google-native:accesscontextmanager/v1beta:CustomLevelResponse": {
      "description": "`CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request. See CEL spec at: https://github.com/google/cel-spec",
      "properties": {
        "expr": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:ExprResponse",
          "description": "A Cloud CEL expression evaluating to a boolean."
        }
      },
      "type": "object",
      "required": [
        "expr"
      ]
    },
    "google-native:accesscontextmanager/v1beta:DevicePolicy": {
      "description": "`DevicePolicy` specifies device specific restrictions necessary to acquire a given access level. A `DevicePolicy` specifies requirements for requests from devices to be granted access levels, it does not do any enforcement on the device. `DevicePolicy` acts as an AND over all specified fields, and each repeated field is an OR over its elements. Any unset fields are ignored. For example, if the proto is { os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX, encryption_status: ENCRYPTED}, then the DevicePolicy will be true for requests originating from encrypted Linux desktops and encrypted Windows desktops.",
      "properties": {
        "allowedDeviceManagementLevels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:DevicePolicyAllowedDeviceManagementLevelsItem"
          },
          "description": "Allowed device management levels, an empty list allows all management levels."
        },
        "allowedEncryptionStatuses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:DevicePolicyAllowedEncryptionStatusesItem"
          },
          "description": "Allowed encryptions statuses, an empty list allows all statuses."
        },
        "osConstraints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:OsConstraint"
          },
          "description": "Allowed OS versions, an empty list allows all types and all versions."
        },
        "requireAdminApproval": {
          "type": "boolean",
          "description": "Whether the device needs to be approved by the customer admin."
        },
        "requireCorpOwned": {
          "type": "boolean",
          "description": "Whether the device needs to be corp owned."
        },
        "requireScreenlock": {
          "type": "boolean",
          "description": "Whether or not screenlock is required for the DevicePolicy to be true. Defaults to `false`."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1beta:DevicePolicyAllowedDeviceManagementLevelsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ManagementUnspecified",
          "description": "The device's management level is not specified or not known.",
          "value": "MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "The device is not managed.",
          "value": "NONE"
        },
        {
          "name": "Basic",
          "description": "Basic management is enabled, which is generally limited to monitoring and wiping the corporate account.",
          "value": "BASIC"
        },
        {
          "name": "Complete",
          "description": "Complete device management. This includes more thorough monitoring and the ability to directly manage the device (such as remote wiping). This can be enabled through the Android Enterprise Platform.",
          "value": "COMPLETE"
        }
      ]
    },
    "google-native:accesscontextmanager/v1beta:DevicePolicyAllowedEncryptionStatusesItem": {
      "type": "string",
      "enum": [
        {
          "name": "EncryptionUnspecified",
          "description": "The encryption status of the device is not specified or not known.",
          "value": "ENCRYPTION_UNSPECIFIED"
        },
        {
          "name": "EncryptionUnsupported",
          "description": "The device does not support encryption.",
          "value": "ENCRYPTION_UNSUPPORTED"
        },
        {
          "name": "Unencrypted",
          "description": "The device supports encryption, but is currently unencrypted.",
          "value": "UNENCRYPTED"
        },
        {
          "name": "Encrypted",
          "description": "The device is encrypted.",
          "value": "ENCRYPTED"
        }
      ]
    },
    "google-native:accesscontextmanager/v1beta:DevicePolicyResponse": {
      "description": "`DevicePolicy` specifies device specific restrictions necessary to acquire a given access level. A `DevicePolicy` specifies requirements for requests from devices to be granted access levels, it does not do any enforcement on the device. `DevicePolicy` acts as an AND over all specified fields, and each repeated field is an OR over its elements. Any unset fields are ignored. For example, if the proto is { os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX, encryption_status: ENCRYPTED}, then the DevicePolicy will be true for requests originating from encrypted Linux desktops and encrypted Windows desktops.",
      "properties": {
        "allowedDeviceManagementLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed device management levels, an empty list allows all management levels."
        },
        "allowedEncryptionStatuses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed encryptions statuses, an empty list allows all statuses."
        },
        "osConstraints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:OsConstraintResponse"
          },
          "description": "Allowed OS versions, an empty list allows all types and all versions."
        },
        "requireAdminApproval": {
          "type": "boolean",
          "description": "Whether the device needs to be approved by the customer admin."
        },
        "requireCorpOwned": {
          "type": "boolean",
          "description": "Whether the device needs to be corp owned."
        },
        "requireScreenlock": {
          "type": "boolean",
          "description": "Whether or not screenlock is required for the DevicePolicy to be true. Defaults to `false`."
        }
      },
      "type": "object",
      "required": [
        "allowedDeviceManagementLevels",
        "allowedEncryptionStatuses",
        "osConstraints",
        "requireAdminApproval",
        "requireCorpOwned",
        "requireScreenlock"
      ]
    },
    "google-native:accesscontextmanager/v1beta:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1beta:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:accesscontextmanager/v1beta:OsConstraint": {
      "description": "A restriction on the OS type and version of devices making requests.",
      "properties": {
        "minimumVersion": {
          "type": "string",
          "description": "The minimum allowed OS version. If not set, any version of this OS satisfies the constraint. Format: `\"major.minor.patch\"`. Examples: `\"10.5.301\"`, `\"9.2.1\"`."
        },
        "osType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:OsConstraintOsType",
          "description": "The allowed OS type."
        },
        "requireVerifiedChromeOs": {
          "type": "boolean",
          "description": "Only allows requests from devices with a verified Chrome OS. Verifications includes requirements that the device is enterprise-managed, conformant to domain policies, and the caller has permission to call the API targeted by the request."
        }
      },
      "type": "object",
      "required": [
        "osType"
      ]
    },
    "google-native:accesscontextmanager/v1beta:OsConstraintOsType": {
      "description": "Required. The allowed OS type.",
      "type": "string",
      "enum": [
        {
          "name": "OsUnspecified",
          "description": "The operating system of the device is not specified or not known.",
          "value": "OS_UNSPECIFIED"
        },
        {
          "name": "DesktopMac",
          "description": "A desktop Mac operating system.",
          "value": "DESKTOP_MAC"
        },
        {
          "name": "DesktopWindows",
          "description": "A desktop Windows operating system.",
          "value": "DESKTOP_WINDOWS"
        },
        {
          "name": "DesktopLinux",
          "description": "A desktop Linux operating system.",
          "value": "DESKTOP_LINUX"
        },
        {
          "name": "DesktopChromeOs",
          "description": "A desktop ChromeOS operating system.",
          "value": "DESKTOP_CHROME_OS"
        },
        {
          "name": "Android",
          "description": "An Android operating system.",
          "value": "ANDROID"
        },
        {
          "name": "Ios",
          "description": "An iOS operating system.",
          "value": "IOS"
        }
      ]
    },
    "google-native:accesscontextmanager/v1beta:OsConstraintResponse": {
      "description": "A restriction on the OS type and version of devices making requests.",
      "properties": {
        "minimumVersion": {
          "type": "string",
          "description": "The minimum allowed OS version. If not set, any version of this OS satisfies the constraint. Format: `\"major.minor.patch\"`. Examples: `\"10.5.301\"`, `\"9.2.1\"`."
        },
        "osType": {
          "type": "string",
          "description": "The allowed OS type."
        },
        "requireVerifiedChromeOs": {
          "type": "boolean",
          "description": "Only allows requests from devices with a verified Chrome OS. Verifications includes requirements that the device is enterprise-managed, conformant to domain policies, and the caller has permission to call the API targeted by the request."
        }
      },
      "type": "object",
      "required": [
        "minimumVersion",
        "osType",
        "requireVerifiedChromeOs"
      ]
    },
    "google-native:accesscontextmanager/v1beta:ServicePerimeterConfig": {
      "description": "`ServicePerimeterConfig` specifies a set of Google Cloud resources that describe specific Service Perimeter configuration.",
      "properties": {
        "accessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of `AccessLevel` resource names that allow resources within the `ServicePerimeter` to be accessed from the internet. `AccessLevels` listed must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent `AccessLevel` is a syntax error. If no `AccessLevel` names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example: `\"accessPolicies/MY_POLICY/accessLevels/MY_LEVEL\"`. For Service Perimeter Bridge, must be empty."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Google Cloud resources that are inside of the service perimeter. Currently only projects are allowed. Format: `projects/{project_number}`"
        },
        "restrictedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud services that are subject to the Service Perimeter restrictions. Must contain a list of services. For example, if `storage.googleapis.com` is specified, access to the storage buckets inside the perimeter must meet the perimeter's access restrictions."
        },
        "unrestrictedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud services that are not subject to the Service Perimeter restrictions. Deprecated. Must be set to a single wildcard \"*\". The wildcard means that unless explicitly specified by \"restricted_services\" list, any service is treated as unrestricted.",
          "deprecationMessage": "Google Cloud services that are not subject to the Service Perimeter restrictions. Deprecated. Must be set to a single wildcard \"*\". The wildcard means that unless explicitly specified by \"restricted_services\" list, any service is treated as unrestricted."
        },
        "vpcAccessibleServices": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:VpcAccessibleServices",
          "description": "Beta. Configuration for APIs allowed within Perimeter."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1beta:ServicePerimeterConfigResponse": {
      "description": "`ServicePerimeterConfig` specifies a set of Google Cloud resources that describe specific Service Perimeter configuration.",
      "properties": {
        "accessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of `AccessLevel` resource names that allow resources within the `ServicePerimeter` to be accessed from the internet. `AccessLevels` listed must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent `AccessLevel` is a syntax error. If no `AccessLevel` names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example: `\"accessPolicies/MY_POLICY/accessLevels/MY_LEVEL\"`. For Service Perimeter Bridge, must be empty."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Google Cloud resources that are inside of the service perimeter. Currently only projects are allowed. Format: `projects/{project_number}`"
        },
        "restrictedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud services that are subject to the Service Perimeter restrictions. Must contain a list of services. For example, if `storage.googleapis.com` is specified, access to the storage buckets inside the perimeter must meet the perimeter's access restrictions."
        },
        "unrestrictedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud services that are not subject to the Service Perimeter restrictions. Deprecated. Must be set to a single wildcard \"*\". The wildcard means that unless explicitly specified by \"restricted_services\" list, any service is treated as unrestricted.",
          "deprecationMessage": "Google Cloud services that are not subject to the Service Perimeter restrictions. Deprecated. Must be set to a single wildcard \"*\". The wildcard means that unless explicitly specified by \"restricted_services\" list, any service is treated as unrestricted."
        },
        "vpcAccessibleServices": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:VpcAccessibleServicesResponse",
          "description": "Beta. Configuration for APIs allowed within Perimeter."
        }
      },
      "type": "object",
      "required": [
        "accessLevels",
        "resources",
        "restrictedServices",
        "unrestrictedServices",
        "vpcAccessibleServices"
      ]
    },
    "google-native:accesscontextmanager/v1beta:ServicePerimeterPerimeterType": {
      "description": "Perimeter type indicator. A single project is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, restricted/unrestricted service lists as well as access lists must be empty.",
      "type": "string",
      "enum": [
        {
          "name": "PerimeterTypeRegular",
          "description": "Regular Perimeter. When no value is specified, the perimeter uses this type.",
          "value": "PERIMETER_TYPE_REGULAR"
        },
        {
          "name": "PerimeterTypeBridge",
          "description": "Perimeter Bridge.",
          "value": "PERIMETER_TYPE_BRIDGE"
        }
      ]
    },
    "google-native:accesscontextmanager/v1beta:VpcAccessibleServices": {
      "description": "Specifies how APIs are allowed to communicate within the Service Perimeter.",
      "properties": {
        "allowedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of APIs usable within the Service Perimeter. Must be empty unless 'enable_restriction' is True. You can specify a list of individual services, as well as include the 'RESTRICTED-SERVICES' value, which automatically includes all of the services protected by the perimeter."
        },
        "enableRestriction": {
          "type": "boolean",
          "description": "Whether to restrict API calls within the Service Perimeter to the list of APIs specified in 'allowed_services'."
        }
      },
      "type": "object"
    },
    "google-native:accesscontextmanager/v1beta:VpcAccessibleServicesResponse": {
      "description": "Specifies how APIs are allowed to communicate within the Service Perimeter.",
      "properties": {
        "allowedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of APIs usable within the Service Perimeter. Must be empty unless 'enable_restriction' is True. You can specify a list of individual services, as well as include the 'RESTRICTED-SERVICES' value, which automatically includes all of the services protected by the perimeter."
        },
        "enableRestriction": {
          "type": "boolean",
          "description": "Whether to restrict API calls within the Service Perimeter to the list of APIs specified in 'allowed_services'."
        }
      },
      "type": "object",
      "required": [
        "allowedServices",
        "enableRestriction"
      ]
    },
    "google-native:aiplatform/v1:ArtifactState": {
      "description": "The state of this Artifact. This is a property of the Artifact, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines), and the system does not prescribe or check the validity of state transitions.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unspecified state for the Artifact.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "A state used by systems like Vertex AI Pipelines to indicate that the underlying data item represented by this Artifact is being created.",
          "value": "PENDING"
        },
        {
          "name": "Live",
          "description": "A state indicating that the Artifact should exist, unless something external to the system deletes it.",
          "value": "LIVE"
        }
      ]
    },
    "google-native:aiplatform/v1:ExecutionState": {
      "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unspecified Execution state",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "New",
          "description": "The Execution is new",
          "value": "NEW"
        },
        {
          "name": "Running",
          "description": "The Execution is running",
          "value": "RUNNING"
        },
        {
          "name": "Complete",
          "description": "The Execution has finished running",
          "value": "COMPLETE"
        },
        {
          "name": "Failed",
          "description": "The Execution has failed",
          "value": "FAILED"
        },
        {
          "name": "Cached",
          "description": "The Execution completed through Cache hit.",
          "value": "CACHED"
        },
        {
          "name": "Cancelled",
          "description": "The Execution was cancelled.",
          "value": "CANCELLED"
        }
      ]
    },
    "google-native:aiplatform/v1:FeatureGroupFeatureValueType": {
      "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "The value type is unspecified.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Bool",
          "description": "Used for Feature that is a boolean.",
          "value": "BOOL"
        },
        {
          "name": "BoolArray",
          "description": "Used for Feature that is a list of boolean.",
          "value": "BOOL_ARRAY"
        },
        {
          "name": "Double",
          "description": "Used for Feature that is double.",
          "value": "DOUBLE"
        },
        {
          "name": "DoubleArray",
          "description": "Used for Feature that is a list of double.",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "Int64",
          "description": "Used for Feature that is INT64.",
          "value": "INT64"
        },
        {
          "name": "Int64Array",
          "description": "Used for Feature that is a list of INT64.",
          "value": "INT64_ARRAY"
        },
        {
          "name": "String",
          "description": "Used for Feature that is string.",
          "value": "STRING"
        },
        {
          "name": "StringArray",
          "description": "Used for Feature that is a list of String.",
          "value": "STRING_ARRAY"
        },
        {
          "name": "Bytes",
          "description": "Used for Feature that is bytes.",
          "value": "BYTES"
        }
      ]
    },
    "google-native:aiplatform/v1:FeatureStoreFeatureValueType": {
      "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "The value type is unspecified.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Bool",
          "description": "Used for Feature that is a boolean.",
          "value": "BOOL"
        },
        {
          "name": "BoolArray",
          "description": "Used for Feature that is a list of boolean.",
          "value": "BOOL_ARRAY"
        },
        {
          "name": "Double",
          "description": "Used for Feature that is double.",
          "value": "DOUBLE"
        },
        {
          "name": "DoubleArray",
          "description": "Used for Feature that is a list of double.",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "Int64",
          "description": "Used for Feature that is INT64.",
          "value": "INT64"
        },
        {
          "name": "Int64Array",
          "description": "Used for Feature that is a list of INT64.",
          "value": "INT64_ARRAY"
        },
        {
          "name": "String",
          "description": "Used for Feature that is string.",
          "value": "STRING"
        },
        {
          "name": "StringArray",
          "description": "Used for Feature that is a list of String.",
          "value": "STRING_ARRAY"
        },
        {
          "name": "Bytes",
          "description": "Used for Feature that is bytes.",
          "value": "BYTES"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ActiveLearningConfig": {
      "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally by several iterations. For every iteration, it will select a batch of data based on the sampling strategy.",
      "properties": {
        "maxDataItemCount": {
          "type": "string",
          "description": "Max number of human labeled DataItems."
        },
        "maxDataItemPercentage": {
          "type": "integer",
          "description": "Max percent of total DataItems for human labeling."
        },
        "sampleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SampleConfig",
          "description": "Active learning data sampling config. For every active learning labeling iteration, it will select a batch of data based on the sampling strategy."
        },
        "trainingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TrainingConfig",
          "description": "CMLE training config. For every active learning labeling iteration, system will train a machine learning model on CMLE. The trained model will be used by data sampling algorithm to select DataItems."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ActiveLearningConfigResponse": {
      "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally by several iterations. For every iteration, it will select a batch of data based on the sampling strategy.",
      "properties": {
        "maxDataItemCount": {
          "type": "string",
          "description": "Max number of human labeled DataItems."
        },
        "maxDataItemPercentage": {
          "type": "integer",
          "description": "Max percent of total DataItems for human labeling."
        },
        "sampleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SampleConfigResponse",
          "description": "Active learning data sampling config. For every active learning labeling iteration, it will select a batch of data based on the sampling strategy."
        },
        "trainingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TrainingConfigResponse",
          "description": "CMLE training config. For every active learning labeling iteration, system will train a machine learning model on CMLE. The trained model will be used by data sampling algorithm to select DataItems."
        }
      },
      "type": "object",
      "required": [
        "maxDataItemCount",
        "maxDataItemPercentage",
        "sampleConfig",
        "trainingConfig"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1AutomaticResourcesResponse": {
      "description": "A description of resources that to large degree are decided by Vertex AI, and require only a modest additional configuration. Each Model supporting these resources documents its specific guidelines.",
      "properties": {
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of replicas this DeployedModel may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale the model to that many replicas is guaranteed (barring service outages). If traffic against the DeployedModel increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, a no upper bound for scaling under heavy traffic will be assume, though Vertex AI may be unable to scale beyond certain replica number."
        },
        "minReplicaCount": {
          "type": "integer",
          "description": "Immutable. The minimum number of replicas this DeployedModel will be always deployed on. If traffic against it increases, it may dynamically be deployed onto more replicas up to max_replica_count, and as traffic decreases, some of these extra replicas may be freed. If the requested value is too large, the deployment will error."
        }
      },
      "type": "object",
      "required": [
        "maxReplicaCount",
        "minReplicaCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1AutoscalingMetricSpec": {
      "description": "The metric specification that defines the target resource utilization (CPU utilization, accelerator's duty cycle, and so on) for calculating the desired replica count.",
      "properties": {
        "metricName": {
          "type": "string",
          "description": "The resource metric name. Supported metrics: * For Online Prediction: * `aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle` * `aiplatform.googleapis.com/prediction/online/cpu/utilization`"
        },
        "target": {
          "type": "integer",
          "description": "The target resource utilization in percentage (1% - 100%) for the given metric; once the real usage deviates from the target by a certain percentage, the machine replicas change. The default value is 60 (representing 60%) if not provided."
        }
      },
      "type": "object",
      "required": [
        "metricName"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1AutoscalingMetricSpecResponse": {
      "description": "The metric specification that defines the target resource utilization (CPU utilization, accelerator's duty cycle, and so on) for calculating the desired replica count.",
      "properties": {
        "metricName": {
          "type": "string",
          "description": "The resource metric name. Supported metrics: * For Online Prediction: * `aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle` * `aiplatform.googleapis.com/prediction/online/cpu/utilization`"
        },
        "target": {
          "type": "integer",
          "description": "The target resource utilization in percentage (1% - 100%) for the given metric; once the real usage deviates from the target by a certain percentage, the machine replicas change. The default value is 60 (representing 60%) if not provided."
        }
      },
      "type": "object",
      "required": [
        "metricName",
        "target"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchDedicatedResources": {
      "description": "A description of resources that are used for performing batch operations, are dedicated to a Model, and need manual configuration.",
      "properties": {
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpec",
          "description": "Immutable. The specification of a single machine."
        },
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of machine replicas the batch operation may be scaled to. The default value is 10."
        },
        "startingReplicaCount": {
          "type": "integer",
          "description": "Immutable. The number of machine replicas used at the start of the batch operation. If not set, Vertex AI decides starting number, not greater than max_replica_count"
        }
      },
      "type": "object",
      "required": [
        "machineSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchDedicatedResourcesResponse": {
      "description": "A description of resources that are used for performing batch operations, are dedicated to a Model, and need manual configuration.",
      "properties": {
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpecResponse",
          "description": "Immutable. The specification of a single machine."
        },
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of machine replicas the batch operation may be scaled to. The default value is 10."
        },
        "startingReplicaCount": {
          "type": "integer",
          "description": "Immutable. The number of machine replicas used at the start of the batch operation. If not set, Vertex AI decides starting number, not greater than max_replica_count"
        }
      },
      "type": "object",
      "required": [
        "machineSpec",
        "maxReplicaCount",
        "startingReplicaCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchPredictionJobInputConfig": {
      "description": "Configures the input to BatchPredictionJob. See Model.supported_input_storage_formats for Model's supported input formats, and how instances should be expressed via any of them.",
      "properties": {
        "bigquerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQuerySource",
          "description": "The BigQuery location of the input table. The schema of the table should be in the format described by the given context OpenAPI Schema, if one is provided. The table may contain additional columns that are not described by the schema, and they will be ignored."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsSource",
          "description": "The Cloud Storage location for the input instances."
        },
        "instancesFormat": {
          "type": "string",
          "description": "The format in which instances are given, must be one of the Model's supported_input_storage_formats."
        }
      },
      "type": "object",
      "required": [
        "instancesFormat"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchPredictionJobInputConfigResponse": {
      "description": "Configures the input to BatchPredictionJob. See Model.supported_input_storage_formats for Model's supported input formats, and how instances should be expressed via any of them.",
      "properties": {
        "bigquerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQuerySourceResponse",
          "description": "The BigQuery location of the input table. The schema of the table should be in the format described by the given context OpenAPI Schema, if one is provided. The table may contain additional columns that are not described by the schema, and they will be ignored."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsSourceResponse",
          "description": "The Cloud Storage location for the input instances."
        },
        "instancesFormat": {
          "type": "string",
          "description": "The format in which instances are given, must be one of the Model's supported_input_storage_formats."
        }
      },
      "type": "object",
      "required": [
        "bigquerySource",
        "gcsSource",
        "instancesFormat"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchPredictionJobInstanceConfig": {
      "description": "Configuration defining how to transform batch prediction input instances to the instances that the Model accepts.",
      "properties": {
        "excludedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields that will be excluded in the prediction instance that is sent to the Model. Excluded will be attached to the batch prediction output if key_field is not specified. When excluded_fields is populated, included_fields must be empty. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        },
        "includedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields that will be included in the prediction instance that is sent to the Model. If instance_type is `array`, the order of field names in included_fields also determines the order of the values in the array. When included_fields is populated, excluded_fields must be empty. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        },
        "instanceType": {
          "type": "string",
          "description": "The format of the instance that the Model accepts. Vertex AI will convert compatible batch prediction input instance formats to the specified format. Supported values are: * `object`: Each input is converted to JSON object format. * For `bigquery`, each row is converted to an object. * For `jsonl`, each line of the JSONL input must be an object. * Does not apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. * `array`: Each input is converted to JSON array format. * For `bigquery`, each row is converted to an array. The order of columns is determined by the BigQuery column order, unless included_fields is populated. included_fields must be populated for specifying field orders. * For `jsonl`, if each line of the JSONL input is an object, included_fields must be populated for specifying field orders. * Does not apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. If not specified, Vertex AI converts the batch prediction input as follows: * For `bigquery` and `csv`, the behavior is the same as `array`. The order of columns is the same as defined in the file or table, unless included_fields is populated. * For `jsonl`, the prediction instance format is determined by each line of the input. * For `tf-record`/`tf-record-gzip`, each record will be converted to an object in the format of `{\"b64\": }`, where `` is the Base64-encoded string of the content of the record. * For `file-list`, each file in the list will be converted to an object in the format of `{\"b64\": }`, where `` is the Base64-encoded string of the content of the file."
        },
        "keyField": {
          "type": "string",
          "description": "The name of the field that is considered as a key. The values identified by the key field is not included in the transformed instances that is sent to the Model. This is similar to specifying this name of the field in excluded_fields. In addition, the batch prediction output will not include the instances. Instead the output will only include the value of the key field, in a field named `key` in the output: * For `jsonl` output format, the output will have a `key` field instead of the `instance` field. * For `csv`/`bigquery` output format, the output will have have a `key` column instead of the instance feature columns. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchPredictionJobInstanceConfigResponse": {
      "description": "Configuration defining how to transform batch prediction input instances to the instances that the Model accepts.",
      "properties": {
        "excludedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields that will be excluded in the prediction instance that is sent to the Model. Excluded will be attached to the batch prediction output if key_field is not specified. When excluded_fields is populated, included_fields must be empty. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        },
        "includedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields that will be included in the prediction instance that is sent to the Model. If instance_type is `array`, the order of field names in included_fields also determines the order of the values in the array. When included_fields is populated, excluded_fields must be empty. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        },
        "instanceType": {
          "type": "string",
          "description": "The format of the instance that the Model accepts. Vertex AI will convert compatible batch prediction input instance formats to the specified format. Supported values are: * `object`: Each input is converted to JSON object format. * For `bigquery`, each row is converted to an object. * For `jsonl`, each line of the JSONL input must be an object. * Does not apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. * `array`: Each input is converted to JSON array format. * For `bigquery`, each row is converted to an array. The order of columns is determined by the BigQuery column order, unless included_fields is populated. included_fields must be populated for specifying field orders. * For `jsonl`, if each line of the JSONL input is an object, included_fields must be populated for specifying field orders. * Does not apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. If not specified, Vertex AI converts the batch prediction input as follows: * For `bigquery` and `csv`, the behavior is the same as `array`. The order of columns is the same as defined in the file or table, unless included_fields is populated. * For `jsonl`, the prediction instance format is determined by each line of the input. * For `tf-record`/`tf-record-gzip`, each record will be converted to an object in the format of `{\"b64\": }`, where `` is the Base64-encoded string of the content of the record. * For `file-list`, each file in the list will be converted to an object in the format of `{\"b64\": }`, where `` is the Base64-encoded string of the content of the file."
        },
        "keyField": {
          "type": "string",
          "description": "The name of the field that is considered as a key. The values identified by the key field is not included in the transformed instances that is sent to the Model. This is similar to specifying this name of the field in excluded_fields. In addition, the batch prediction output will not include the instances. Instead the output will only include the value of the key field, in a field named `key` in the output: * For `jsonl` output format, the output will have a `key` field instead of the `instance` field. * For `csv`/`bigquery` output format, the output will have have a `key` column instead of the instance feature columns. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        }
      },
      "type": "object",
      "required": [
        "excludedFields",
        "includedFields",
        "instanceType",
        "keyField"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchPredictionJobOutputConfig": {
      "description": "Configures the output of BatchPredictionJob. See Model.supported_output_storage_formats for supported output formats, and how predictions are expressed via any of them.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQueryDestination",
          "description": "The BigQuery project or dataset location where the output is to be written to. If project is provided, a new dataset is created with name `prediction__` where is made BigQuery-dataset-name compatible (for example, most special characters become underscores), and timestamp is in YYYY_MM_DDThh_mm_ss_sssZ \"based on ISO-8601\" format. In the dataset two tables will be created, `predictions`, and `errors`. If the Model has both instance and prediction schemata defined then the tables have columns as follows: The `predictions` table contains instances for which the prediction succeeded, it has columns as per a concatenation of the Model's instance and prediction schemata. The `errors` table contains rows for which the prediction has failed, it has instance columns, as per the instance schema, followed by a single \"errors\" column, which as values has google.rpc.Status represented as a STRUCT, and containing only `code` and `message`."
        },
        "gcsDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestination",
          "description": "The Cloud Storage location of the directory where the output is to be written to. In the given directory a new directory is created. Its name is `prediction--`, where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. Inside of it files `predictions_0001.`, `predictions_0002.`, ..., `predictions_N.` are created where `` depends on chosen predictions_format, and N may equal 0001 and depends on the total number of successfully predicted instances. If the Model has both instance and prediction schemata defined then each such file contains predictions as per the predictions_format. If prediction for any instance failed (partially or completely), then an additional `errors_0001.`, `errors_0002.`,..., `errors_N.` files are created (N depends on total number of failed predictions). These files contain the failed instances, as per their schema, followed by an additional `error` field which as value has google.rpc.Status containing only `code` and `message` fields."
        },
        "predictionsFormat": {
          "type": "string",
          "description": "The format in which Vertex AI gives the predictions, must be one of the Model's supported_output_storage_formats."
        }
      },
      "type": "object",
      "required": [
        "predictionsFormat"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchPredictionJobOutputConfigResponse": {
      "description": "Configures the output of BatchPredictionJob. See Model.supported_output_storage_formats for supported output formats, and how predictions are expressed via any of them.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQueryDestinationResponse",
          "description": "The BigQuery project or dataset location where the output is to be written to. If project is provided, a new dataset is created with name `prediction__` where is made BigQuery-dataset-name compatible (for example, most special characters become underscores), and timestamp is in YYYY_MM_DDThh_mm_ss_sssZ \"based on ISO-8601\" format. In the dataset two tables will be created, `predictions`, and `errors`. If the Model has both instance and prediction schemata defined then the tables have columns as follows: The `predictions` table contains instances for which the prediction succeeded, it has columns as per a concatenation of the Model's instance and prediction schemata. The `errors` table contains rows for which the prediction has failed, it has instance columns, as per the instance schema, followed by a single \"errors\" column, which as values has google.rpc.Status represented as a STRUCT, and containing only `code` and `message`."
        },
        "gcsDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestinationResponse",
          "description": "The Cloud Storage location of the directory where the output is to be written to. In the given directory a new directory is created. Its name is `prediction--`, where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. Inside of it files `predictions_0001.`, `predictions_0002.`, ..., `predictions_N.` are created where `` depends on chosen predictions_format, and N may equal 0001 and depends on the total number of successfully predicted instances. If the Model has both instance and prediction schemata defined then each such file contains predictions as per the predictions_format. If prediction for any instance failed (partially or completely), then an additional `errors_0001.`, `errors_0002.`,..., `errors_N.` files are created (N depends on total number of failed predictions). These files contain the failed instances, as per their schema, followed by an additional `error` field which as value has google.rpc.Status containing only `code` and `message` fields."
        },
        "predictionsFormat": {
          "type": "string",
          "description": "The format in which Vertex AI gives the predictions, must be one of the Model's supported_output_storage_formats."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination",
        "gcsDestination",
        "predictionsFormat"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BatchPredictionJobOutputInfoResponse": {
      "description": "Further describes this job's output. Supplements output_config.",
      "properties": {
        "bigqueryOutputDataset": {
          "type": "string",
          "description": "The path of the BigQuery dataset created, in `bq://projectId.bqDatasetId` format, into which the prediction output is written."
        },
        "bigqueryOutputTable": {
          "type": "string",
          "description": "The name of the BigQuery table created, in `predictions_` format, into which the prediction output is written. Can be used by UI to generate the BigQuery output path, for example."
        },
        "gcsOutputDirectory": {
          "type": "string",
          "description": "The full path of the Cloud Storage directory created, into which the prediction output is written."
        }
      },
      "type": "object",
      "required": [
        "bigqueryOutputDataset",
        "bigqueryOutputTable",
        "gcsOutputDirectory"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BigQueryDestination": {
      "description": "The BigQuery location for the output content.",
      "properties": {
        "outputUri": {
          "type": "string",
          "description": "BigQuery URI to a project or table, up to 2000 characters long. When only the project is specified, the Dataset and Table is created. When the full table reference is specified, the Dataset must exist and table must not exist. Accepted forms: * BigQuery path. For example: `bq://projectId` or `bq://projectId.bqDatasetId` or `bq://projectId.bqDatasetId.bqTableId`."
        }
      },
      "type": "object",
      "required": [
        "outputUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BigQueryDestinationResponse": {
      "description": "The BigQuery location for the output content.",
      "properties": {
        "outputUri": {
          "type": "string",
          "description": "BigQuery URI to a project or table, up to 2000 characters long. When only the project is specified, the Dataset and Table is created. When the full table reference is specified, the Dataset must exist and table must not exist. Accepted forms: * BigQuery path. For example: `bq://projectId` or `bq://projectId.bqDatasetId` or `bq://projectId.bqDatasetId.bqTableId`."
        }
      },
      "type": "object",
      "required": [
        "outputUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BigQuerySource": {
      "description": "The BigQuery location for the input content.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2000 characters long. Accepted forms: * BigQuery path. For example: `bq://projectId.bqDatasetId.bqTableId`."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BigQuerySourceResponse": {
      "description": "The BigQuery location for the input content.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2000 characters long. Accepted forms: * BigQuery path. For example: `bq://projectId.bqDatasetId.bqTableId`."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BlurBaselineConfig": {
      "description": "Config for blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383",
      "properties": {
        "maxBlurSigma": {
          "type": "number",
          "description": "The standard deviation of the blur kernel for the blurred baseline. The same blurring parameter is used for both the height and the width dimension. If not set, the method defaults to the zero (i.e. black for images) baseline."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1BlurBaselineConfigResponse": {
      "description": "Config for blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383",
      "properties": {
        "maxBlurSigma": {
          "type": "number",
          "description": "The standard deviation of the blur kernel for the blurred baseline. The same blurring parameter is used for both the height and the width dimension. If not set, the method defaults to the zero (i.e. black for images) baseline."
        }
      },
      "type": "object",
      "required": [
        "maxBlurSigma"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1CompletionStatsResponse": {
      "description": "Success and error statistics of processing multiple entities (for example, DataItems or structured data rows) in batch.",
      "properties": {
        "failedCount": {
          "type": "string",
          "description": "The number of entities for which any error was encountered."
        },
        "incompleteCount": {
          "type": "string",
          "description": "In cases when enough errors are encountered a job, pipeline, or operation may be failed as a whole. Below is the number of entities for which the processing had not been finished (either in successful or failed state). Set to -1 if the number is unknown (for example, the operation failed before the total entity number could be collected)."
        },
        "successfulCount": {
          "type": "string",
          "description": "The number of entities that had been processed successfully."
        },
        "successfulForecastPointCount": {
          "type": "string",
          "description": "The number of the successful forecast points that are generated by the forecasting model. This is ONLY used by the forecasting batch prediction."
        }
      },
      "type": "object",
      "required": [
        "failedCount",
        "incompleteCount",
        "successfulCount",
        "successfulForecastPointCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ContainerSpec": {
      "description": "The spec of a Container.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The arguments to be passed when starting the container."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EnvVar"
          },
          "description": "Environment variables to be passed to the container. Maximum limit is 100."
        },
        "imageUri": {
          "type": "string",
          "description": "The URI of a container image in the Container Registry that is to be run on each worker replica."
        }
      },
      "type": "object",
      "required": [
        "imageUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ContainerSpecResponse": {
      "description": "The spec of a Container.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The arguments to be passed when starting the container."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EnvVarResponse"
          },
          "description": "Environment variables to be passed to the container. Maximum limit is 100."
        },
        "imageUri": {
          "type": "string",
          "description": "The URI of a container image in the Container Registry that is to be run on each worker replica."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "env",
        "imageUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ContextResponse": {
      "description": "Instance of a general context.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Context was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Context"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Context. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Contexts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Context (System labels are excluded)."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Context. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Context."
        },
        "parentContexts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource names of Contexts that are parents of this Context. A Context may have at most 10 parent_contexts."
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Context was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "metadata",
        "name",
        "parentContexts",
        "schemaTitle",
        "schemaVersion",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1CreatePipelineJobRequest": {
      "description": "Request message for PipelineService.CreatePipelineJob.",
      "properties": {
        "parent": {
          "type": "string",
          "description": "The resource name of the Location to create the PipelineJob in. Format: `projects/{project}/locations/{location}`"
        },
        "pipelineJob": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJob",
          "description": "The PipelineJob to create."
        },
        "pipelineJobId": {
          "type": "string",
          "description": "The ID to use for the PipelineJob, which will become the final component of the PipelineJob name. If not provided, an ID will be automatically generated. This value should be less than 128 characters, and valid characters are `/a-z-/`."
        }
      },
      "type": "object",
      "required": [
        "parent",
        "pipelineJob"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1CreatePipelineJobRequestResponse": {
      "description": "Request message for PipelineService.CreatePipelineJob.",
      "properties": {
        "parent": {
          "type": "string",
          "description": "The resource name of the Location to create the PipelineJob in. Format: `projects/{project}/locations/{location}`"
        },
        "pipelineJob": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobResponse",
          "description": "The PipelineJob to create."
        },
        "pipelineJobId": {
          "type": "string",
          "description": "The ID to use for the PipelineJob, which will become the final component of the PipelineJob name. If not provided, an ID will be automatically generated. This value should be less than 128 characters, and valid characters are `/a-z-/`."
        }
      },
      "type": "object",
      "required": [
        "parent",
        "pipelineJob",
        "pipelineJobId"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1CustomJobSpec": {
      "description": "Represents the spec of a CustomJob.",
      "properties": {
        "baseOutputDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestination",
          "description": "The Cloud Storage location to store the output of this CustomJob or HyperparameterTuningJob. For HyperparameterTuningJob, the baseOutputDirectory of each child CustomJob backing a Trial is set to a subdirectory of name id under its parent HyperparameterTuningJob's baseOutputDirectory. The following Vertex AI environment variables will be passed to containers or python modules when this field is set: For CustomJob: * AIP_MODEL_DIR = `/model/` * AIP_CHECKPOINT_DIR = `/checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `/logs/` For CustomJob backing a Trial of HyperparameterTuningJob: * AIP_MODEL_DIR = `//model/` * AIP_CHECKPOINT_DIR = `//checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `//logs/`"
        },
        "enableDashboardAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want Vertex AI to enable access to the customized dashboard in training chief container. If set to `true`, you can access the dashboard at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials)."
        },
        "enableWebAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want Vertex AI to enable [interactive shell access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials)."
        },
        "experiment": {
          "type": "string",
          "description": "Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`"
        },
        "experimentRun": {
          "type": "string",
          "description": "Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`"
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the job is not peered with any network."
        },
        "protectedArtifactLocationId": {
          "type": "string",
          "description": "The ID of the location to store protected artifacts. e.g. us-central1. Populate only when the location is different than CustomJob location. List of supported locations: https://cloud.google.com/vertex-ai/docs/general/locations"
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "scheduling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1Scheduling",
          "description": "Scheduling options for a CustomJob."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Specifies the service account for workload run-as account. Users submitting jobs must have act-as permission on this run-as account. If unspecified, the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob's project is used."
        },
        "tensorboard": {
          "type": "string",
          "description": "Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`"
        },
        "workerPoolSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1WorkerPoolSpec"
          },
          "description": "The spec of the worker pools including machine type and Docker image. All worker pools except the first one are optional and can be skipped by providing an empty value."
        }
      },
      "type": "object",
      "required": [
        "workerPoolSpecs"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1CustomJobSpecResponse": {
      "description": "Represents the spec of a CustomJob.",
      "properties": {
        "baseOutputDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestinationResponse",
          "description": "The Cloud Storage location to store the output of this CustomJob or HyperparameterTuningJob. For HyperparameterTuningJob, the baseOutputDirectory of each child CustomJob backing a Trial is set to a subdirectory of name id under its parent HyperparameterTuningJob's baseOutputDirectory. The following Vertex AI environment variables will be passed to containers or python modules when this field is set: For CustomJob: * AIP_MODEL_DIR = `/model/` * AIP_CHECKPOINT_DIR = `/checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `/logs/` For CustomJob backing a Trial of HyperparameterTuningJob: * AIP_MODEL_DIR = `//model/` * AIP_CHECKPOINT_DIR = `//checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `//logs/`"
        },
        "enableDashboardAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want Vertex AI to enable access to the customized dashboard in training chief container. If set to `true`, you can access the dashboard at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials)."
        },
        "enableWebAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want Vertex AI to enable [interactive shell access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials)."
        },
        "experiment": {
          "type": "string",
          "description": "Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`"
        },
        "experimentRun": {
          "type": "string",
          "description": "Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`"
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the job is not peered with any network."
        },
        "protectedArtifactLocationId": {
          "type": "string",
          "description": "The ID of the location to store protected artifacts. e.g. us-central1. Populate only when the location is different than CustomJob location. List of supported locations: https://cloud.google.com/vertex-ai/docs/general/locations"
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "scheduling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SchedulingResponse",
          "description": "Scheduling options for a CustomJob."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Specifies the service account for workload run-as account. Users submitting jobs must have act-as permission on this run-as account. If unspecified, the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob's project is used."
        },
        "tensorboard": {
          "type": "string",
          "description": "Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`"
        },
        "workerPoolSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1WorkerPoolSpecResponse"
          },
          "description": "The spec of the worker pools including machine type and Docker image. All worker pools except the first one are optional and can be skipped by providing an empty value."
        }
      },
      "type": "object",
      "required": [
        "baseOutputDirectory",
        "enableDashboardAccess",
        "enableWebAccess",
        "experiment",
        "experimentRun",
        "network",
        "protectedArtifactLocationId",
        "reservedIpRanges",
        "scheduling",
        "serviceAccount",
        "tensorboard",
        "workerPoolSpecs"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DedicatedResources": {
      "description": "A description of resources that are dedicated to a DeployedModel, and that need a higher degree of manual configuration.",
      "properties": {
        "autoscalingMetricSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1AutoscalingMetricSpec"
          },
          "description": "Immutable. The metric specifications that overrides a resource utilization metric (CPU utilization, accelerator's duty cycle, and so on) target value (default to 60 if not set). At most one entry is allowed per metric. If machine_spec.accelerator_count is above 0, the autoscaling will be based on both CPU utilization and accelerator's duty cycle metrics and scale up when either metrics exceeds its target value while scale down if both metrics are under their target value. The default target value is 60 for both metrics. If machine_spec.accelerator_count is 0, the autoscaling will be based on CPU utilization metric only with default target value 60 if not explicitly set. For example, in the case of Online Prediction, if you want to override target CPU utilization to 80, you should set autoscaling_metric_specs.metric_name to `aiplatform.googleapis.com/prediction/online/cpu/utilization` and autoscaling_metric_specs.target to `80`."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpec",
          "description": "Immutable. The specification of a single machine used by the prediction."
        },
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of replicas this DeployedModel may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale the model to that many replicas is guaranteed (barring service outages). If traffic against the DeployedModel increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, will use min_replica_count as the default value. The value of this field impacts the charge against Vertex CPU and GPU quotas. Specifically, you will be charged for (max_replica_count * number of cores in the selected machine type) and (max_replica_count * number of GPUs per replica in the selected machine type)."
        },
        "minReplicaCount": {
          "type": "integer",
          "description": "Immutable. The minimum number of machine replicas this DeployedModel will be always deployed on. This value must be greater than or equal to 1. If traffic against the DeployedModel increases, it may dynamically be deployed onto more replicas, and as traffic decreases, some of these extra replicas may be freed."
        }
      },
      "type": "object",
      "required": [
        "machineSpec",
        "minReplicaCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DedicatedResourcesResponse": {
      "description": "A description of resources that are dedicated to a DeployedModel, and that need a higher degree of manual configuration.",
      "properties": {
        "autoscalingMetricSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1AutoscalingMetricSpecResponse"
          },
          "description": "Immutable. The metric specifications that overrides a resource utilization metric (CPU utilization, accelerator's duty cycle, and so on) target value (default to 60 if not set). At most one entry is allowed per metric. If machine_spec.accelerator_count is above 0, the autoscaling will be based on both CPU utilization and accelerator's duty cycle metrics and scale up when either metrics exceeds its target value while scale down if both metrics are under their target value. The default target value is 60 for both metrics. If machine_spec.accelerator_count is 0, the autoscaling will be based on CPU utilization metric only with default target value 60 if not explicitly set. For example, in the case of Online Prediction, if you want to override target CPU utilization to 80, you should set autoscaling_metric_specs.metric_name to `aiplatform.googleapis.com/prediction/online/cpu/utilization` and autoscaling_metric_specs.target to `80`."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpecResponse",
          "description": "Immutable. The specification of a single machine used by the prediction."
        },
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of replicas this DeployedModel may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale the model to that many replicas is guaranteed (barring service outages). If traffic against the DeployedModel increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, will use min_replica_count as the default value. The value of this field impacts the charge against Vertex CPU and GPU quotas. Specifically, you will be charged for (max_replica_count * number of cores in the selected machine type) and (max_replica_count * number of GPUs per replica in the selected machine type)."
        },
        "minReplicaCount": {
          "type": "integer",
          "description": "Immutable. The minimum number of machine replicas this DeployedModel will be always deployed on. This value must be greater than or equal to 1. If traffic against the DeployedModel increases, it may dynamically be deployed onto more replicas, and as traffic decreases, some of these extra replicas may be freed."
        }
      },
      "type": "object",
      "required": [
        "autoscalingMetricSpecs",
        "machineSpec",
        "maxReplicaCount",
        "minReplicaCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DeployedIndexAuthConfigAuthProviderResponse": {
      "description": "Configuration for an authentication provider, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
      "properties": {
        "allowedIssuers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of allowed JWT issuers. Each entry must be a valid Google service account, in the following format: `service-account-name@project-id.iam.gserviceaccount.com`"
        },
        "audiences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted."
        }
      },
      "type": "object",
      "required": [
        "allowedIssuers",
        "audiences"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DeployedIndexAuthConfigResponse": {
      "description": "Used to set up the auth on the DeployedIndex's private endpoint.",
      "properties": {
        "authProvider": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedIndexAuthConfigAuthProviderResponse",
          "description": "Defines the authentication provider that the DeployedIndex uses."
        }
      },
      "type": "object",
      "required": [
        "authProvider"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DeployedIndexRefResponse": {
      "description": "Points to a DeployedIndex.",
      "properties": {
        "deployedIndexId": {
          "type": "string",
          "description": "Immutable. The ID of the DeployedIndex in the above IndexEndpoint."
        },
        "indexEndpoint": {
          "type": "string",
          "description": "Immutable. A resource name of the IndexEndpoint."
        }
      },
      "type": "object",
      "required": [
        "deployedIndexId",
        "indexEndpoint"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DeployedIndexResponse": {
      "description": "A deployment of an Index. IndexEndpoints contain one or more DeployedIndexes.",
      "properties": {
        "automaticResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1AutomaticResourcesResponse",
          "description": "Optional. A description of resources that the DeployedIndex uses, which to large degree are decided by Vertex AI, and optionally allows only a modest additional configuration. If min_replica_count is not set, the default value is 2 (we don't provide SLA when min_replica_count=1). If max_replica_count is not set, the default value is min_replica_count. The max allowed replica count is 1000."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the DeployedIndex was created."
        },
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DedicatedResourcesResponse",
          "description": "Optional. A description of resources that are dedicated to the DeployedIndex, and that need a higher degree of manual configuration. The field min_replica_count must be set to a value strictly greater than 0, or else validation will fail. We don't provide SLA when min_replica_count=1. If max_replica_count is not set, the default value is min_replica_count. The max allowed replica count is 1000. Available machine types for SMALL shard: e2-standard-2 and all machine types available for MEDIUM and LARGE shard. Available machine types for MEDIUM shard: e2-standard-16 and all machine types available for LARGE shard. Available machine types for LARGE shard: e2-highmem-16, n2d-standard-32. n1-standard-16 and n1-standard-32 are still available, but we recommend e2-standard-16 and e2-highmem-16 for cost efficiency."
        },
        "deployedIndexAuthConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedIndexAuthConfigResponse",
          "description": "Optional. If set, the authentication is enabled for the private endpoint."
        },
        "deploymentGroup": {
          "type": "string",
          "description": "Optional. The deployment group can be no longer than 64 characters (eg: 'test', 'prod'). If not set, we will use the 'default' deployment group. Creating `deployment_groups` with `reserved_ip_ranges` is a recommended practice when the peered network has multiple peering ranges. This creates your deployments from predictable IP spaces for easier traffic administration. Also, one deployment_group (except 'default') can only be used with the same reserved_ip_ranges which means if the deployment_group has been used with reserved_ip_ranges: [a, b, c], using it with [a, b] or [d, e] is disallowed. Note: we only support up to 5 deployment groups(not including 'default')."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the DeployedIndex. If not provided upon creation, the Index's display_name is used."
        },
        "enableAccessLogging": {
          "type": "boolean",
          "description": "Optional. If true, private endpoint's access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each MatchRequest. Note that logs may incur a cost, especially if the deployed index receives a high queries per second rate (QPS). Estimate your costs before enabling this option."
        },
        "index": {
          "type": "string",
          "description": "The name of the Index this is the deployment of. We may refer to this Index as the DeployedIndex's \"original\" Index."
        },
        "indexSyncTime": {
          "type": "string",
          "description": "The DeployedIndex may depend on various data on its original Index. Additionally when certain changes to the original Index are being done (e.g. when what the Index contains is being changed) the DeployedIndex may be asynchronously updated in the background to reflect these changes. If this timestamp's value is at least the Index.update_time of the original Index, it means that this DeployedIndex and the original Index are in sync. If this timestamp is older, then to see which updates this DeployedIndex already contains (and which it does not), one must list the operations that are running on the original Index. Only the successfully completed Operations with update_time equal or before this sync time are contained in this DeployedIndex."
        },
        "privateEndpoints": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1IndexPrivateEndpointsResponse",
          "description": "Provides paths for users to send requests directly to the deployed index services running on Cloud via private services access. This field is populated if network is configured."
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of reserved ip ranges under the VPC network that can be used for this DeployedIndex. If set, we will deploy the index within the provided ip ranges. Otherwise, the index might be deployed to any ip ranges under the provided VPC network. The value should be the name of the address (https://cloud.google.com/compute/docs/reference/rest/v1/addresses) Example: ['vertex-ai-ip-range']. For more information about subnets and network IP ranges, please see https://cloud.google.com/vpc/docs/subnets#manually_created_subnet_ip_ranges."
        }
      },
      "type": "object",
      "required": [
        "automaticResources",
        "createTime",
        "dedicatedResources",
        "deployedIndexAuthConfig",
        "deploymentGroup",
        "displayName",
        "enableAccessLogging",
        "index",
        "indexSyncTime",
        "privateEndpoints",
        "reservedIpRanges"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DeployedModelRefResponse": {
      "description": "Points to a DeployedModel.",
      "properties": {
        "deployedModelId": {
          "type": "string",
          "description": "Immutable. An ID of a DeployedModel in the above Endpoint."
        },
        "endpoint": {
          "type": "string",
          "description": "Immutable. A resource name of an Endpoint."
        }
      },
      "type": "object",
      "required": [
        "deployedModelId",
        "endpoint"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DeployedModelResponse": {
      "description": "A deployment of a Model. Endpoints contain one or more DeployedModels.",
      "properties": {
        "automaticResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1AutomaticResourcesResponse",
          "description": "A description of resources that to large degree are decided by Vertex AI, and require only a modest additional configuration."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the DeployedModel was created."
        },
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DedicatedResourcesResponse",
          "description": "A description of resources that are dedicated to the DeployedModel, and that need a higher degree of manual configuration."
        },
        "disableContainerLogging": {
          "type": "boolean",
          "description": "For custom-trained Models and AutoML Tabular Models, the container of the DeployedModel instances will send `stderr` and `stdout` streams to Cloud Logging by default. Please note that the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can disable container logging by setting this flag to true."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the DeployedModel. If not provided upon creation, the Model's display_name is used."
        },
        "enableAccessLogging": {
          "type": "boolean",
          "description": "If true, online prediction access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each prediction request. Note that logs may incur a cost, especially if your project receives prediction requests at a high queries per second rate (QPS). Estimate your costs before enabling this option."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationSpecResponse",
          "description": "Explanation configuration for this DeployedModel. When deploying a Model using EndpointService.DeployModel, this value overrides the value of Model.explanation_spec. All fields of explanation_spec are optional in the request. If a field of explanation_spec is not populated, the value of the same field of Model.explanation_spec is inherited. If the corresponding Model.explanation_spec is not populated, all fields of the explanation_spec will be used for the explanation configuration."
        },
        "model": {
          "type": "string",
          "description": "The resource name of the Model that this is the deployment of. Note that the Model may be in a different location than the DeployedModel's Endpoint. The resource name may contain version id or version alias to specify the version. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` if no version is specified, the default version will be deployed."
        },
        "modelVersionId": {
          "type": "string",
          "description": "The version ID of the model that is deployed."
        },
        "privateEndpoints": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PrivateEndpointsResponse",
          "description": "Provide paths for users to send predict/explain/health requests directly to the deployed model services running on Cloud via private services access. This field is populated if network is configured."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the DeployedModel's container runs as. Specify the email address of the service account. If this service account is not specified, the container runs as a service account that doesn't have access to the resource project. Users deploying the Model must have the `iam.serviceAccounts.actAs` permission on this service account."
        }
      },
      "type": "object",
      "required": [
        "automaticResources",
        "createTime",
        "dedicatedResources",
        "disableContainerLogging",
        "displayName",
        "enableAccessLogging",
        "explanationSpec",
        "model",
        "modelVersionId",
        "privateEndpoints",
        "serviceAccount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DiskSpec": {
      "description": "Represents the spec of disk options.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Size in GB of the boot disk (default is 100GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Type of the boot disk (default is \"pd-ssd\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) or \"pd-standard\" (Persistent Disk Hard Disk Drive)."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1DiskSpecResponse": {
      "description": "Represents the spec of disk options.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Size in GB of the boot disk (default is 100GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Type of the boot disk (default is \"pd-ssd\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) or \"pd-standard\" (Persistent Disk Hard Disk Drive)."
        }
      },
      "type": "object",
      "required": [
        "bootDiskSizeGb",
        "bootDiskType"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1EncryptionSpec": {
      "description": "Represents a customer-managed encryption key spec that can be applied to a top-level resource.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1EncryptionSpecResponse": {
      "description": "Represents a customer-managed encryption key spec that can be applied to a top-level resource.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1EnvVar": {
      "description": "Represents an environment variable present in a Container or Python Module.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable. Must be a valid C identifier."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1EnvVarResponse": {
      "description": "Represents an environment variable present in a Container or Python Module.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable. Must be a valid C identifier."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1Examples": {
      "description": "Example-based explainability that returns the nearest neighbors from the provided dataset.",
      "properties": {
        "exampleGcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExamplesExampleGcsSource",
          "description": "The Cloud Storage input instances."
        },
        "nearestNeighborSearchConfig": {
          "$ref": "pulumi.json#/Any",
          "description": "The full configuration for the generated index, the semantics are the same as metadata and should match [NearestNeighborSearchConfig](https://cloud.google.com/vertex-ai/docs/explainable-ai/configuring-explanations-example-based#nearest-neighbor-search-config)."
        },
        "neighborCount": {
          "type": "integer",
          "description": "The number of neighbors to return when querying for examples."
        },
        "presets": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1Presets",
          "description": "Simplified preset configuration, which automatically sets configuration values based on the desired query speed-precision trade-off and modality."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExamplesExampleGcsSource": {
      "description": "The Cloud Storage input instances.",
      "properties": {
        "dataFormat": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExamplesExampleGcsSourceDataFormat",
          "description": "The format in which instances are given, if not specified, assume it's JSONL format. Currently only JSONL format is supported."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsSource",
          "description": "The Cloud Storage location for the input instances."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExamplesExampleGcsSourceDataFormat": {
      "description": "The format in which instances are given, if not specified, assume it's JSONL format. Currently only JSONL format is supported.",
      "type": "string",
      "enum": [
        {
          "name": "DataFormatUnspecified",
          "description": "Format unspecified, used when unset.",
          "value": "DATA_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Jsonl",
          "description": "Examples are stored in JSONL files.",
          "value": "JSONL"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExamplesExampleGcsSourceResponse": {
      "description": "The Cloud Storage input instances.",
      "properties": {
        "dataFormat": {
          "type": "string",
          "description": "The format in which instances are given, if not specified, assume it's JSONL format. Currently only JSONL format is supported."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsSourceResponse",
          "description": "The Cloud Storage location for the input instances."
        }
      },
      "type": "object",
      "required": [
        "dataFormat",
        "gcsSource"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExamplesResponse": {
      "description": "Example-based explainability that returns the nearest neighbors from the provided dataset.",
      "properties": {
        "exampleGcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExamplesExampleGcsSourceResponse",
          "description": "The Cloud Storage input instances."
        },
        "nearestNeighborSearchConfig": {
          "$ref": "pulumi.json#/Any",
          "description": "The full configuration for the generated index, the semantics are the same as metadata and should match [NearestNeighborSearchConfig](https://cloud.google.com/vertex-ai/docs/explainable-ai/configuring-explanations-example-based#nearest-neighbor-search-config)."
        },
        "neighborCount": {
          "type": "integer",
          "description": "The number of neighbors to return when querying for examples."
        },
        "presets": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PresetsResponse",
          "description": "Simplified preset configuration, which automatically sets configuration values based on the desired query speed-precision trade-off and modality."
        }
      },
      "type": "object",
      "required": [
        "exampleGcsSource",
        "nearestNeighborSearchConfig",
        "neighborCount",
        "presets"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExecutionResponse": {
      "description": "Instance of a general execution.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Execution was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Execution"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Execution. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Executions. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Execution (System labels are excluded)."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Execution. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Execution."
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in `schema_title` to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "type": "string",
          "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Execution was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "metadata",
        "name",
        "schemaTitle",
        "schemaVersion",
        "state",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExplanationMetadata": {
      "description": "Metadata describing the Model's input and output for explanation.",
      "properties": {
        "featureAttributionsSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing the format of the feature attributions. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML tabular Models always have this field populated by Vertex AI. Note: The URI given on output may be different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "inputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from feature names to feature input metadata. Keys are the name of the features. Values are the specification of the feature. An empty InputMetadata is valid. It describes a text feature which has the name specified as the key in ExplanationMetadata.inputs. The baseline of the empty feature is chosen by Vertex AI. For Vertex AI-provided Tensorflow images, the key can be any friendly name of the feature. Once specified, featureAttributions are keyed by this key (if not grouped with another feature). For custom images, the key must match with the key in instance."
        },
        "latentSpaceSource": {
          "type": "string",
          "description": "Name of the source to generate embeddings for example based explanations."
        },
        "outputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from output names to output metadata. For Vertex AI-provided Tensorflow images, keys can be any user defined string that consists of any UTF-8 characters. For custom images, keys are the name of the output field in the prediction to be explained. Currently only one key is allowed."
        }
      },
      "type": "object",
      "required": [
        "inputs",
        "outputs"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExplanationMetadataResponse": {
      "description": "Metadata describing the Model's input and output for explanation.",
      "properties": {
        "featureAttributionsSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing the format of the feature attributions. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML tabular Models always have this field populated by Vertex AI. Note: The URI given on output may be different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "inputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from feature names to feature input metadata. Keys are the name of the features. Values are the specification of the feature. An empty InputMetadata is valid. It describes a text feature which has the name specified as the key in ExplanationMetadata.inputs. The baseline of the empty feature is chosen by Vertex AI. For Vertex AI-provided Tensorflow images, the key can be any friendly name of the feature. Once specified, featureAttributions are keyed by this key (if not grouped with another feature). For custom images, the key must match with the key in instance."
        },
        "latentSpaceSource": {
          "type": "string",
          "description": "Name of the source to generate embeddings for example based explanations."
        },
        "outputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from output names to output metadata. For Vertex AI-provided Tensorflow images, keys can be any user defined string that consists of any UTF-8 characters. For custom images, keys are the name of the output field in the prediction to be explained. Currently only one key is allowed."
        }
      },
      "type": "object",
      "required": [
        "featureAttributionsSchemaUri",
        "inputs",
        "latentSpaceSource",
        "outputs"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExplanationParameters": {
      "description": "Parameters to configure explaining for Model's predictions.",
      "properties": {
        "examples": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1Examples",
          "description": "Example-based explanations that returns the nearest neighbors from the provided dataset."
        },
        "integratedGradientsAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1IntegratedGradientsAttribution",
          "description": "An attribution method that computes Aumann-Shapley values taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365"
        },
        "outputIndices": {
          "type": "array",
          "items": {
            "$ref": "pulumi.json#/Any"
          },
          "description": "If populated, only returns attributions that have output_index contained in output_indices. It must be an ndarray of integers, with the same shape of the output it's explaining. If not populated, returns attributions for top_k indices of outputs. If neither top_k nor output_indices is populated, returns the argmax index of the outputs. Only applicable to Models that predict multiple outputs (e,g, multi-class Models that predict multiple classes)."
        },
        "sampledShapleyAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SampledShapleyAttribution",
          "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features. Refer to this paper for model details: https://arxiv.org/abs/1306.4265."
        },
        "topK": {
          "type": "integer",
          "description": "If populated, returns attributions for top K indices of outputs (defaults to 1). Only applies to Models that predicts more than one outputs (e,g, multi-class Models). When set to -1, returns explanations for all outputs."
        },
        "xraiAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1XraiAttribution",
          "description": "An attribution method that redistributes Integrated Gradients attribution to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 XRAI currently performs better on natural images, like a picture of a house or an animal. If the images are taken in artificial environments, like a lab or manufacturing line, or from diagnostic equipment, like x-rays or quality-control cameras, use Integrated Gradients instead."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExplanationParametersResponse": {
      "description": "Parameters to configure explaining for Model's predictions.",
      "properties": {
        "examples": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExamplesResponse",
          "description": "Example-based explanations that returns the nearest neighbors from the provided dataset."
        },
        "integratedGradientsAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1IntegratedGradientsAttributionResponse",
          "description": "An attribution method that computes Aumann-Shapley values taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365"
        },
        "outputIndices": {
          "type": "array",
          "items": {
            "$ref": "pulumi.json#/Any"
          },
          "description": "If populated, only returns attributions that have output_index contained in output_indices. It must be an ndarray of integers, with the same shape of the output it's explaining. If not populated, returns attributions for top_k indices of outputs. If neither top_k nor output_indices is populated, returns the argmax index of the outputs. Only applicable to Models that predict multiple outputs (e,g, multi-class Models that predict multiple classes)."
        },
        "sampledShapleyAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SampledShapleyAttributionResponse",
          "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features. Refer to this paper for model details: https://arxiv.org/abs/1306.4265."
        },
        "topK": {
          "type": "integer",
          "description": "If populated, returns attributions for top K indices of outputs (defaults to 1). Only applies to Models that predicts more than one outputs (e,g, multi-class Models). When set to -1, returns explanations for all outputs."
        },
        "xraiAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1XraiAttributionResponse",
          "description": "An attribution method that redistributes Integrated Gradients attribution to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 XRAI currently performs better on natural images, like a picture of a house or an animal. If the images are taken in artificial environments, like a lab or manufacturing line, or from diagnostic equipment, like x-rays or quality-control cameras, use Integrated Gradients instead."
        }
      },
      "type": "object",
      "required": [
        "examples",
        "integratedGradientsAttribution",
        "outputIndices",
        "sampledShapleyAttribution",
        "topK",
        "xraiAttribution"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExplanationSpec": {
      "description": "Specification of Model explanation.",
      "properties": {
        "metadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationMetadata",
          "description": "Optional. Metadata describing the Model's input and output for explanation."
        },
        "parameters": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationParameters",
          "description": "Parameters that configure explaining of the Model's predictions."
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ExplanationSpecResponse": {
      "description": "Specification of Model explanation.",
      "properties": {
        "metadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationMetadataResponse",
          "description": "Optional. Metadata describing the Model's input and output for explanation."
        },
        "parameters": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationParametersResponse",
          "description": "Parameters that configure explaining of the Model's predictions."
        }
      },
      "type": "object",
      "required": [
        "metadata",
        "parameters"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureGroupBigQuery": {
      "description": "Input source type for BigQuery Tables and Views.",
      "properties": {
        "bigQuerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQuerySource",
          "description": "Immutable. The BigQuery source URI that points to either a BigQuery Table or View."
        },
        "entityIdColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Columns to construct entity_id / row keys. Currently only supports 1 entity_id_column. If not provided defaults to `entity_id`."
        }
      },
      "type": "object",
      "required": [
        "bigQuerySource"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureGroupBigQueryResponse": {
      "description": "Input source type for BigQuery Tables and Views.",
      "properties": {
        "bigQuerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQuerySourceResponse",
          "description": "Immutable. The BigQuery source URI that points to either a BigQuery Table or View."
        },
        "entityIdColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Columns to construct entity_id / row keys. Currently only supports 1 entity_id_column. If not provided defaults to `entity_id`."
        }
      },
      "type": "object",
      "required": [
        "bigQuerySource",
        "entityIdColumns"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureMonitoringStatsAnomalyResponse": {
      "description": "A list of historical SnapshotAnalysis or ImportFeaturesAnalysis stats requested by user, sorted by FeatureStatsAnomaly.start_time descending.",
      "properties": {
        "featureStatsAnomaly": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureStatsAnomalyResponse",
          "description": "The stats and anomalies generated at specific timestamp."
        },
        "objective": {
          "type": "string",
          "description": "The objective for each stats."
        }
      },
      "type": "object",
      "required": [
        "featureStatsAnomaly",
        "objective"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureNoiseSigma": {
      "description": "Noise sigma by features. Noise sigma represents the standard deviation of the gaussian kernel that will be used to add noise to interpolated inputs prior to computing gradients.",
      "properties": {
        "noiseSigma": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureNoiseSigmaNoiseSigmaForFeature"
          },
          "description": "Noise sigma per feature. No noise is added to features that are not set."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureNoiseSigmaNoiseSigmaForFeature": {
      "description": "Noise sigma for a single feature.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the input feature for which noise sigma is provided. The features are defined in explanation metadata inputs."
        },
        "sigma": {
          "type": "number",
          "description": "This represents the standard deviation of the Gaussian kernel that will be used to add noise to the feature prior to computing gradients. Similar to noise_sigma but represents the noise added to the current feature. Defaults to 0.1."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureNoiseSigmaNoiseSigmaForFeatureResponse": {
      "description": "Noise sigma for a single feature.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the input feature for which noise sigma is provided. The features are defined in explanation metadata inputs."
        },
        "sigma": {
          "type": "number",
          "description": "This represents the standard deviation of the Gaussian kernel that will be used to add noise to the feature prior to computing gradients. Similar to noise_sigma but represents the noise added to the current feature. Defaults to 0.1."
        }
      },
      "type": "object",
      "required": [
        "name",
        "sigma"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureNoiseSigmaResponse": {
      "description": "Noise sigma by features. Noise sigma represents the standard deviation of the gaussian kernel that will be used to add noise to interpolated inputs prior to computing gradients.",
      "properties": {
        "noiseSigma": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureNoiseSigmaNoiseSigmaForFeatureResponse"
          },
          "description": "Noise sigma per feature. No noise is added to features that are not set."
        }
      },
      "type": "object",
      "required": [
        "noiseSigma"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtable": {
      "properties": {
        "autoScaling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtableAutoScaling",
          "description": "Autoscaling config applied to Bigtable Instance."
        }
      },
      "type": "object",
      "required": [
        "autoScaling"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtableAutoScaling": {
      "properties": {
        "cpuUtilizationTarget": {
          "type": "integer",
          "description": "Optional. A percentage of the cluster's CPU capacity. Can be from 10% to 80%. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set will default to 50%."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes to scale up to. Must be greater than or equal to min_node_count, and less than or equal to 10 times of 'min_node_count'."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes to scale down to. Must be greater than or equal to 1."
        }
      },
      "type": "object",
      "required": [
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtableAutoScalingResponse": {
      "properties": {
        "cpuUtilizationTarget": {
          "type": "integer",
          "description": "Optional. A percentage of the cluster's CPU capacity. Can be from 10% to 80%. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set will default to 50%."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes to scale up to. Must be greater than or equal to min_node_count, and less than or equal to 10 times of 'min_node_count'."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes to scale down to. Must be greater than or equal to 1."
        }
      },
      "type": "object",
      "required": [
        "cpuUtilizationTarget",
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtableResponse": {
      "properties": {
        "autoScaling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtableAutoScalingResponse",
          "description": "Autoscaling config applied to Bigtable Instance."
        }
      },
      "type": "object",
      "required": [
        "autoScaling"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureStatsAnomalyResponse": {
      "description": "Stats and Anomaly generated at specific timestamp for specific Feature. The start_time and end_time are used to define the time range of the dataset that current stats belongs to, e.g. prediction traffic is bucketed into prediction datasets by time window. If the Dataset is not defined by time window, start_time = end_time. Timestamp of the stats and anomalies always refers to end_time. Raw stats and anomalies are stored in stats_uri or anomaly_uri in the tensorflow defined protos. Field data_stats contains almost identical information with the raw stats in Vertex AI defined proto, for UI to display.",
      "properties": {
        "anomalyDetectionThreshold": {
          "type": "number",
          "description": "This is the threshold used when detecting anomalies. The threshold can be changed by user, so this one might be different from ThresholdConfig.value."
        },
        "anomalyUri": {
          "type": "string",
          "description": "Path of the anomaly file for current feature values in Cloud Storage bucket. Format: gs:////anomalies. Example: gs://monitoring_bucket/feature_name/anomalies. Stats are stored as binary format with Protobuf message Anoamlies are stored as binary format with Protobuf message [tensorflow.metadata.v0.AnomalyInfo] (https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/anomalies.proto)."
        },
        "distributionDeviation": {
          "type": "number",
          "description": "Deviation from the current stats to baseline stats. 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence."
        },
        "endTime": {
          "type": "string",
          "description": "The end timestamp of window where stats were generated. For objectives where time window doesn't make sense (e.g. Featurestore Snapshot Monitoring), end_time indicates the timestamp of the data used to generate stats (e.g. timestamp we take snapshots for feature values)."
        },
        "score": {
          "type": "number",
          "description": "Feature importance score, only populated when cross-feature monitoring is enabled. For now only used to represent feature attribution score within range [0, 1] for ModelDeploymentMonitoringObjectiveType.FEATURE_ATTRIBUTION_SKEW and ModelDeploymentMonitoringObjectiveType.FEATURE_ATTRIBUTION_DRIFT."
        },
        "startTime": {
          "type": "string",
          "description": "The start timestamp of window where stats were generated. For objectives where time window doesn't make sense (e.g. Featurestore Snapshot Monitoring), start_time is only used to indicate the monitoring intervals, so it always equals to (end_time - monitoring_interval)."
        },
        "statsUri": {
          "type": "string",
          "description": "Path of the stats file for current feature values in Cloud Storage bucket. Format: gs:////stats. Example: gs://monitoring_bucket/feature_name/stats. Stats are stored as binary format with Protobuf message [tensorflow.metadata.v0.FeatureNameStatistics](https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/statistics.proto)."
        }
      },
      "type": "object",
      "required": [
        "anomalyDetectionThreshold",
        "anomalyUri",
        "distributionDeviation",
        "endTime",
        "score",
        "startTime",
        "statsUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureViewBigQuerySource": {
      "properties": {
        "entityIdColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Columns to construct entity_id / row keys. Start by supporting 1 only."
        },
        "uri": {
          "type": "string",
          "description": "The BigQuery view URI that will be materialized on each sync trigger based on FeatureView.SyncConfig."
        }
      },
      "type": "object",
      "required": [
        "entityIdColumns",
        "uri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureViewBigQuerySourceResponse": {
      "properties": {
        "entityIdColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Columns to construct entity_id / row keys. Start by supporting 1 only."
        },
        "uri": {
          "type": "string",
          "description": "The BigQuery view URI that will be materialized on each sync trigger based on FeatureView.SyncConfig."
        }
      },
      "type": "object",
      "required": [
        "entityIdColumns",
        "uri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySource": {
      "description": "A Feature Registry source for features that need to be synced to Online Store.",
      "properties": {
        "featureGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceFeatureGroup"
          },
          "description": "List of features that need to be synced to Online Store."
        }
      },
      "type": "object",
      "required": [
        "featureGroups"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceFeatureGroup": {
      "description": "Features belonging to a single feature group that will be synced to Online Store.",
      "properties": {
        "featureGroupId": {
          "type": "string",
          "description": "Identifier of the feature group."
        },
        "featureIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of features under the feature group."
        }
      },
      "type": "object",
      "required": [
        "featureGroupId",
        "featureIds"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceFeatureGroupResponse": {
      "description": "Features belonging to a single feature group that will be synced to Online Store.",
      "properties": {
        "featureGroupId": {
          "type": "string",
          "description": "Identifier of the feature group."
        },
        "featureIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of features under the feature group."
        }
      },
      "type": "object",
      "required": [
        "featureGroupId",
        "featureIds"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceResponse": {
      "description": "A Feature Registry source for features that need to be synced to Online Store.",
      "properties": {
        "featureGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceFeatureGroupResponse"
          },
          "description": "List of features that need to be synced to Online Store."
        }
      },
      "type": "object",
      "required": [
        "featureGroups"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureViewSyncConfig": {
      "properties": {
        "cron": {
          "type": "string",
          "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\"."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeatureViewSyncConfigResponse": {
      "properties": {
        "cron": {
          "type": "string",
          "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\"."
        }
      },
      "type": "object",
      "required": [
        "cron"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfig": {
      "description": "Configuration of how features in Featurestore are monitored.",
      "properties": {
        "categoricalThresholdConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfig",
          "description": "Threshold for categorical features of anomaly detection. This is shared by all types of Featurestore Monitoring for categorical features (i.e. Features with type (Feature.ValueType) BOOL or STRING)."
        },
        "importFeaturesAnalysis": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysis",
          "description": "The config for ImportFeatures Analysis Based Feature Monitoring."
        },
        "numericalThresholdConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfig",
          "description": "Threshold for numerical features of anomaly detection. This is shared by all objectives of Featurestore Monitoring for numerical features (i.e. Features with type (Feature.ValueType) DOUBLE or INT64)."
        },
        "snapshotAnalysis": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigSnapshotAnalysis",
          "description": "The config for Snapshot Analysis Based Feature Monitoring."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysis": {
      "description": "Configuration of the Featurestore's ImportFeature Analysis Based Monitoring. This type of analysis generates statistics for values of each Feature imported by every ImportFeatureValues operation.",
      "properties": {
        "anomalyDetectionBaseline": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysisAnomalyDetectionBaseline",
          "description": "The baseline used to do anomaly detection for the statistics generated by import features analysis."
        },
        "state": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysisState",
          "description": "Whether to enable / disable / inherite default hebavior for import features analysis."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysisAnomalyDetectionBaseline": {
      "description": "The baseline used to do anomaly detection for the statistics generated by import features analysis.",
      "type": "string",
      "enum": [
        {
          "name": "BaselineUnspecified",
          "description": "Should not be used.",
          "value": "BASELINE_UNSPECIFIED"
        },
        {
          "name": "LatestStats",
          "description": "Choose the later one statistics generated by either most recent snapshot analysis or previous import features analysis. If non of them exists, skip anomaly detection and only generate a statistics.",
          "value": "LATEST_STATS"
        },
        {
          "name": "MostRecentSnapshotStats",
          "description": "Use the statistics generated by the most recent snapshot analysis if exists.",
          "value": "MOST_RECENT_SNAPSHOT_STATS"
        },
        {
          "name": "PreviousImportFeaturesStats",
          "description": "Use the statistics generated by the previous import features analysis if exists.",
          "value": "PREVIOUS_IMPORT_FEATURES_STATS"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysisResponse": {
      "description": "Configuration of the Featurestore's ImportFeature Analysis Based Monitoring. This type of analysis generates statistics for values of each Feature imported by every ImportFeatureValues operation.",
      "properties": {
        "anomalyDetectionBaseline": {
          "type": "string",
          "description": "The baseline used to do anomaly detection for the statistics generated by import features analysis."
        },
        "state": {
          "type": "string",
          "description": "Whether to enable / disable / inherite default hebavior for import features analysis."
        }
      },
      "type": "object",
      "required": [
        "anomalyDetectionBaseline",
        "state"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysisState": {
      "description": "Whether to enable / disable / inherite default hebavior for import features analysis.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Should not be used.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "The default behavior of whether to enable the monitoring. EntityType-level config: disabled. Feature-level config: inherited from the configuration of EntityType this Feature belongs to.",
          "value": "DEFAULT"
        },
        {
          "name": "Enabled",
          "description": "Explicitly enables import features analysis. EntityType-level config: by default enables import features analysis for all Features under it. Feature-level config: enables import features analysis regardless of the EntityType-level config.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "Explicitly disables import features analysis. EntityType-level config: by default disables import features analysis for all Features under it. Feature-level config: disables import features analysis regardless of the EntityType-level config.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigResponse": {
      "description": "Configuration of how features in Featurestore are monitored.",
      "properties": {
        "categoricalThresholdConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfigResponse",
          "description": "Threshold for categorical features of anomaly detection. This is shared by all types of Featurestore Monitoring for categorical features (i.e. Features with type (Feature.ValueType) BOOL or STRING)."
        },
        "importFeaturesAnalysis": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysisResponse",
          "description": "The config for ImportFeatures Analysis Based Feature Monitoring."
        },
        "numericalThresholdConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfigResponse",
          "description": "Threshold for numerical features of anomaly detection. This is shared by all objectives of Featurestore Monitoring for numerical features (i.e. Features with type (Feature.ValueType) DOUBLE or INT64)."
        },
        "snapshotAnalysis": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigSnapshotAnalysisResponse",
          "description": "The config for Snapshot Analysis Based Feature Monitoring."
        }
      },
      "type": "object",
      "required": [
        "categoricalThresholdConfig",
        "importFeaturesAnalysis",
        "numericalThresholdConfig",
        "snapshotAnalysis"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigSnapshotAnalysis": {
      "description": "Configuration of the Featurestore's Snapshot Analysis Based Monitoring. This type of analysis generates statistics for each Feature based on a snapshot of the latest feature value of each entities every monitoring_interval.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "The monitoring schedule for snapshot analysis. For EntityType-level config: unset / disabled = true indicates disabled by default for Features under it; otherwise by default enable snapshot analysis monitoring with monitoring_interval for Features under it. Feature-level config: disabled = true indicates disabled regardless of the EntityType-level config; unset monitoring_interval indicates going with EntityType-level config; otherwise run snapshot analysis monitoring with monitoring_interval regardless of the EntityType-level config. Explicitly Disable the snapshot analysis based monitoring."
        },
        "monitoringIntervalDays": {
          "type": "integer",
          "description": "Configuration of the snapshot analysis based monitoring pipeline running interval. The value indicates number of days."
        },
        "stalenessDays": {
          "type": "integer",
          "description": "Customized export features time window for snapshot analysis. Unit is one day. Default value is 3 weeks. Minimum value is 1 day. Maximum value is 4000 days."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigSnapshotAnalysisResponse": {
      "description": "Configuration of the Featurestore's Snapshot Analysis Based Monitoring. This type of analysis generates statistics for each Feature based on a snapshot of the latest feature value of each entities every monitoring_interval.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "The monitoring schedule for snapshot analysis. For EntityType-level config: unset / disabled = true indicates disabled by default for Features under it; otherwise by default enable snapshot analysis monitoring with monitoring_interval for Features under it. Feature-level config: disabled = true indicates disabled regardless of the EntityType-level config; unset monitoring_interval indicates going with EntityType-level config; otherwise run snapshot analysis monitoring with monitoring_interval regardless of the EntityType-level config. Explicitly Disable the snapshot analysis based monitoring."
        },
        "monitoringIntervalDays": {
          "type": "integer",
          "description": "Configuration of the snapshot analysis based monitoring pipeline running interval. The value indicates number of days."
        },
        "stalenessDays": {
          "type": "integer",
          "description": "Customized export features time window for snapshot analysis. Unit is one day. Default value is 3 weeks. Minimum value is 1 day. Maximum value is 4000 days."
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "monitoringIntervalDays",
        "stalenessDays"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfig": {
      "description": "The config for Featurestore Monitoring threshold.",
      "properties": {
        "value": {
          "type": "number",
          "description": "Specify a threshold value that can trigger the alert. 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence. Each feature must have a non-zero threshold if they need to be monitored. Otherwise no alert will be triggered for that feature."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfigResponse": {
      "description": "The config for Featurestore Monitoring threshold.",
      "properties": {
        "value": {
          "type": "number",
          "description": "Specify a threshold value that can trigger the alert. 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence. Each feature must have a non-zero threshold if they need to be monitored. Otherwise no alert will be triggered for that feature."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfig": {
      "description": "OnlineServingConfig specifies the details for provisioning online serving resources.",
      "properties": {
        "fixedNodeCount": {
          "type": "integer",
          "description": "The number of nodes for the online store. The number of nodes doesn't scale automatically, but you can manually update the number of nodes. If set to 0, the featurestore will not have an online store and cannot be used for online serving."
        },
        "scaling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigScaling",
          "description": "Online serving scaling configuration. Only one of `fixed_node_count` and `scaling` can be set. Setting one will reset the other."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigResponse": {
      "description": "OnlineServingConfig specifies the details for provisioning online serving resources.",
      "properties": {
        "fixedNodeCount": {
          "type": "integer",
          "description": "The number of nodes for the online store. The number of nodes doesn't scale automatically, but you can manually update the number of nodes. If set to 0, the featurestore will not have an online store and cannot be used for online serving."
        },
        "scaling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigScalingResponse",
          "description": "Online serving scaling configuration. Only one of `fixed_node_count` and `scaling` can be set. Setting one will reset the other."
        }
      },
      "type": "object",
      "required": [
        "fixedNodeCount",
        "scaling"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigScaling": {
      "description": "Online serving scaling configuration. If min_node_count and max_node_count are set to the same value, the cluster will be configured with the fixed number of node (no auto-scaling).",
      "properties": {
        "cpuUtilizationTarget": {
          "type": "integer",
          "description": "Optional. The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization), and is limited between 10 and 80. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set or set to 0, default to 50."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes to scale up to. Must be greater than min_node_count, and less than or equal to 10 times of 'min_node_count'."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes to scale down to. Must be greater than or equal to 1."
        }
      },
      "type": "object",
      "required": [
        "minNodeCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigScalingResponse": {
      "description": "Online serving scaling configuration. If min_node_count and max_node_count are set to the same value, the cluster will be configured with the fixed number of node (no auto-scaling).",
      "properties": {
        "cpuUtilizationTarget": {
          "type": "integer",
          "description": "Optional. The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization), and is limited between 10 and 80. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set or set to 0, default to 50."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes to scale up to. Must be greater than min_node_count, and less than or equal to 10 times of 'min_node_count'."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes to scale down to. Must be greater than or equal to 1."
        }
      },
      "type": "object",
      "required": [
        "cpuUtilizationTarget",
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FilterSplit": {
      "description": "Assigns input data to training, validation, and test sets based on the given filters, data pieces not matched by any filter are ignored. Currently only supported for Datasets containing DataItems. If any of the filters in this message are to match nothing, then they can be set as '-' (the minus sign). Supported only for unstructured Datasets. ",
      "properties": {
        "testFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to test the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        },
        "trainingFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to train the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        },
        "validationFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to validate the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        }
      },
      "type": "object",
      "required": [
        "testFilter",
        "trainingFilter",
        "validationFilter"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FilterSplitResponse": {
      "description": "Assigns input data to training, validation, and test sets based on the given filters, data pieces not matched by any filter are ignored. Currently only supported for Datasets containing DataItems. If any of the filters in this message are to match nothing, then they can be set as '-' (the minus sign). Supported only for unstructured Datasets. ",
      "properties": {
        "testFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to test the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        },
        "trainingFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to train the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        },
        "validationFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to validate the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        }
      },
      "type": "object",
      "required": [
        "testFilter",
        "trainingFilter",
        "validationFilter"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FractionSplit": {
      "description": "Assigns the input data to training, validation, and test sets as per the given fractions. Any of `training_fraction`, `validation_fraction` and `test_fraction` may optionally be provided, they must sum to up to 1. If the provided ones sum to less than 1, the remainder is assigned to sets as decided by Vertex AI. If none of the fractions are set, by default roughly 80% of data is used for training, 10% for validation, and 10% for test.",
      "properties": {
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1FractionSplitResponse": {
      "description": "Assigns the input data to training, validation, and test sets as per the given fractions. Any of `training_fraction`, `validation_fraction` and `test_fraction` may optionally be provided, they must sum to up to 1. If the provided ones sum to less than 1, the remainder is assigned to sets as decided by Vertex AI. If none of the fractions are set, by default roughly 80% of data is used for training, 10% for validation, and 10% for test.",
      "properties": {
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "testFraction",
        "trainingFraction",
        "validationFraction"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1GcsDestination": {
      "description": "The Google Cloud Storage location where the output is to be written to.",
      "properties": {
        "outputUriPrefix": {
          "type": "string",
          "description": "Google Cloud Storage URI to output directory. If the uri doesn't end with '/', a '/' will be automatically appended. The directory is created if it doesn't exist."
        }
      },
      "type": "object",
      "required": [
        "outputUriPrefix"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1GcsDestinationResponse": {
      "description": "The Google Cloud Storage location where the output is to be written to.",
      "properties": {
        "outputUriPrefix": {
          "type": "string",
          "description": "Google Cloud Storage URI to output directory. If the uri doesn't end with '/', a '/' will be automatically appended. The directory is created if it doesn't exist."
        }
      },
      "type": "object",
      "required": [
        "outputUriPrefix"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1GcsSource": {
      "description": "The Google Cloud Storage location for the input content.",
      "properties": {
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud Storage URI(-s) to the input file(s). May contain wildcards. For more information on wildcards, see https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames."
        }
      },
      "type": "object",
      "required": [
        "uris"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1GcsSourceResponse": {
      "description": "The Google Cloud Storage location for the input content.",
      "properties": {
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud Storage URI(-s) to the input file(s). May contain wildcards. For more information on wildcards, see https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames."
        }
      },
      "type": "object",
      "required": [
        "uris"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1IndexPrivateEndpointsResponse": {
      "description": "IndexPrivateEndpoints proto is used to provide paths for users to send requests via private endpoints (e.g. private service access, private service connect). To send request via private service access, use match_grpc_address. To send request via private service connect, use service_attachment.",
      "properties": {
        "matchGrpcAddress": {
          "type": "string",
          "description": "The ip address used to send match gRPC requests."
        },
        "serviceAttachment": {
          "type": "string",
          "description": "The name of the service attachment resource. Populated if private service connect is enabled."
        }
      },
      "type": "object",
      "required": [
        "matchGrpcAddress",
        "serviceAttachment"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1IndexStatsResponse": {
      "description": "Stats of the Index.",
      "properties": {
        "shardsCount": {
          "type": "integer",
          "description": "The number of shards in the Index."
        },
        "vectorsCount": {
          "type": "string",
          "description": "The number of vectors in the Index."
        }
      },
      "type": "object",
      "required": [
        "shardsCount",
        "vectorsCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1InputDataConfig": {
      "description": "Specifies Vertex AI owned input data to be used for training, and possibly evaluating, the Model.",
      "properties": {
        "annotationSchemaUri": {
          "type": "string",
          "description": "Applicable only to custom training with Datasets that have DataItems and Annotations. Cloud Storage URI that points to a YAML file describing the annotation schema. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/annotation/ , note that the chosen schema must be consistent with metadata of the Dataset specified by dataset_id. Only Annotations that both match this schema and belong to DataItems not ignored by the split method are used in respectively training, validation or test role, depending on the role of the DataItem they are on. When used in conjunction with annotations_filter, the Annotations used for training are filtered by both annotations_filter and annotation_schema_uri."
        },
        "annotationsFilter": {
          "type": "string",
          "description": "Applicable only to Datasets that have DataItems and Annotations. A filter on Annotations of the Dataset. Only Annotations that both match this filter and belong to DataItems not ignored by the split method are used in respectively training, validation or test role, depending on the role of the DataItem they are on (for the auto-assigned that role is decided by Vertex AI). A filter with same syntax as the one used in ListAnnotations may be used, but note here it filters across all Annotations of the Dataset, and not just within a single DataItem."
        },
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQueryDestination",
          "description": "Only applicable to custom training with tabular Dataset with BigQuery source. The BigQuery project location where the training data is to be written to. In the given project a new dataset is created with name `dataset___` where timestamp is in YYYY_MM_DDThh_mm_ss_sssZ format. All training input data is written into that dataset. In the dataset three tables are created, `training`, `validation` and `test`. * AIP_DATA_FORMAT = \"bigquery\". * AIP_TRAINING_DATA_URI = \"bigquery_destination.dataset___.training\" * AIP_VALIDATION_DATA_URI = \"bigquery_destination.dataset___.validation\" * AIP_TEST_DATA_URI = \"bigquery_destination.dataset___.test\""
        },
        "datasetId": {
          "type": "string",
          "description": "The ID of the Dataset in the same Project and Location which data will be used to train the Model. The Dataset must use schema compatible with Model being trained, and what is compatible should be described in the used TrainingPipeline's training_task_definition. For tabular Datasets, all their data is exported to training, to pick and choose from."
        },
        "filterSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FilterSplit",
          "description": "Split based on the provided filters for each set."
        },
        "fractionSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FractionSplit",
          "description": "Split based on fractions defining the size of each set."
        },
        "gcsDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestination",
          "description": "The Cloud Storage location where the training data is to be written to. In the given directory a new directory is created with name: `dataset---` where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. All training input data is written into that directory. The Vertex AI environment variables representing Cloud Storage data URIs are represented in the Cloud Storage wildcard format to support sharded data. e.g.: \"gs://.../training-*.jsonl\" * AIP_DATA_FORMAT = \"jsonl\" for non-tabular data, \"csv\" for tabular data * AIP_TRAINING_DATA_URI = \"gcs_destination/dataset---/training-*.${AIP_DATA_FORMAT}\" * AIP_VALIDATION_DATA_URI = \"gcs_destination/dataset---/validation-*.${AIP_DATA_FORMAT}\" * AIP_TEST_DATA_URI = \"gcs_destination/dataset---/test-*.${AIP_DATA_FORMAT}\""
        },
        "persistMlUseAssignment": {
          "type": "boolean",
          "description": "Whether to persist the ML use assignment to data item system labels."
        },
        "predefinedSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredefinedSplit",
          "description": "Supported only for tabular Datasets. Split based on a predefined key."
        },
        "savedQueryId": {
          "type": "string",
          "description": "Only applicable to Datasets that have SavedQueries. The ID of a SavedQuery (annotation set) under the Dataset specified by dataset_id used for filtering Annotations for training. Only Annotations that are associated with this SavedQuery are used in respectively training. When used in conjunction with annotations_filter, the Annotations used for training are filtered by both saved_query_id and annotations_filter. Only one of saved_query_id and annotation_schema_uri should be specified as both of them represent the same thing: problem type."
        },
        "stratifiedSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StratifiedSplit",
          "description": "Supported only for tabular Datasets. Split based on the distribution of the specified column."
        },
        "timestampSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TimestampSplit",
          "description": "Supported only for tabular Datasets. Split based on the timestamp of the input data pieces."
        }
      },
      "type": "object",
      "required": [
        "datasetId"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1InputDataConfigResponse": {
      "description": "Specifies Vertex AI owned input data to be used for training, and possibly evaluating, the Model.",
      "properties": {
        "annotationSchemaUri": {
          "type": "string",
          "description": "Applicable only to custom training with Datasets that have DataItems and Annotations. Cloud Storage URI that points to a YAML file describing the annotation schema. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/annotation/ , note that the chosen schema must be consistent with metadata of the Dataset specified by dataset_id. Only Annotations that both match this schema and belong to DataItems not ignored by the split method are used in respectively training, validation or test role, depending on the role of the DataItem they are on. When used in conjunction with annotations_filter, the Annotations used for training are filtered by both annotations_filter and annotation_schema_uri."
        },
        "annotationsFilter": {
          "type": "string",
          "description": "Applicable only to Datasets that have DataItems and Annotations. A filter on Annotations of the Dataset. Only Annotations that both match this filter and belong to DataItems not ignored by the split method are used in respectively training, validation or test role, depending on the role of the DataItem they are on (for the auto-assigned that role is decided by Vertex AI). A filter with same syntax as the one used in ListAnnotations may be used, but note here it filters across all Annotations of the Dataset, and not just within a single DataItem."
        },
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQueryDestinationResponse",
          "description": "Only applicable to custom training with tabular Dataset with BigQuery source. The BigQuery project location where the training data is to be written to. In the given project a new dataset is created with name `dataset___` where timestamp is in YYYY_MM_DDThh_mm_ss_sssZ format. All training input data is written into that dataset. In the dataset three tables are created, `training`, `validation` and `test`. * AIP_DATA_FORMAT = \"bigquery\". * AIP_TRAINING_DATA_URI = \"bigquery_destination.dataset___.training\" * AIP_VALIDATION_DATA_URI = \"bigquery_destination.dataset___.validation\" * AIP_TEST_DATA_URI = \"bigquery_destination.dataset___.test\""
        },
        "datasetId": {
          "type": "string",
          "description": "The ID of the Dataset in the same Project and Location which data will be used to train the Model. The Dataset must use schema compatible with Model being trained, and what is compatible should be described in the used TrainingPipeline's training_task_definition. For tabular Datasets, all their data is exported to training, to pick and choose from."
        },
        "filterSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FilterSplitResponse",
          "description": "Split based on the provided filters for each set."
        },
        "fractionSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FractionSplitResponse",
          "description": "Split based on fractions defining the size of each set."
        },
        "gcsDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestinationResponse",
          "description": "The Cloud Storage location where the training data is to be written to. In the given directory a new directory is created with name: `dataset---` where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. All training input data is written into that directory. The Vertex AI environment variables representing Cloud Storage data URIs are represented in the Cloud Storage wildcard format to support sharded data. e.g.: \"gs://.../training-*.jsonl\" * AIP_DATA_FORMAT = \"jsonl\" for non-tabular data, \"csv\" for tabular data * AIP_TRAINING_DATA_URI = \"gcs_destination/dataset---/training-*.${AIP_DATA_FORMAT}\" * AIP_VALIDATION_DATA_URI = \"gcs_destination/dataset---/validation-*.${AIP_DATA_FORMAT}\" * AIP_TEST_DATA_URI = \"gcs_destination/dataset---/test-*.${AIP_DATA_FORMAT}\""
        },
        "persistMlUseAssignment": {
          "type": "boolean",
          "description": "Whether to persist the ML use assignment to data item system labels."
        },
        "predefinedSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredefinedSplitResponse",
          "description": "Supported only for tabular Datasets. Split based on a predefined key."
        },
        "savedQueryId": {
          "type": "string",
          "description": "Only applicable to Datasets that have SavedQueries. The ID of a SavedQuery (annotation set) under the Dataset specified by dataset_id used for filtering Annotations for training. Only Annotations that are associated with this SavedQuery are used in respectively training. When used in conjunction with annotations_filter, the Annotations used for training are filtered by both saved_query_id and annotations_filter. Only one of saved_query_id and annotation_schema_uri should be specified as both of them represent the same thing: problem type."
        },
        "stratifiedSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StratifiedSplitResponse",
          "description": "Supported only for tabular Datasets. Split based on the distribution of the specified column."
        },
        "timestampSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TimestampSplitResponse",
          "description": "Supported only for tabular Datasets. Split based on the timestamp of the input data pieces."
        }
      },
      "type": "object",
      "required": [
        "annotationSchemaUri",
        "annotationsFilter",
        "bigqueryDestination",
        "datasetId",
        "filterSplit",
        "fractionSplit",
        "gcsDestination",
        "persistMlUseAssignment",
        "predefinedSplit",
        "savedQueryId",
        "stratifiedSplit",
        "timestampSplit"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1IntegratedGradientsAttribution": {
      "description": "An attribution method that computes the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
      "properties": {
        "blurBaselineConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BlurBaselineConfig",
          "description": "Config for IG with blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383"
        },
        "smoothGradConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SmoothGradConfig",
          "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf"
        },
        "stepCount": {
          "type": "integer",
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is within the desired error range. Valid range of its value is [1, 100], inclusively."
        }
      },
      "type": "object",
      "required": [
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1IntegratedGradientsAttributionResponse": {
      "description": "An attribution method that computes the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
      "properties": {
        "blurBaselineConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BlurBaselineConfigResponse",
          "description": "Config for IG with blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383"
        },
        "smoothGradConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SmoothGradConfigResponse",
          "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf"
        },
        "stepCount": {
          "type": "integer",
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is within the desired error range. Valid range of its value is [1, 100], inclusively."
        }
      },
      "type": "object",
      "required": [
        "blurBaselineConfig",
        "smoothGradConfig",
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1MachineSpec": {
      "description": "Specification of a single machine.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of accelerators to attach to the machine."
        },
        "acceleratorType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpecAcceleratorType",
          "description": "Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count."
        },
        "machineType": {
          "type": "string",
          "description": "Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required."
        },
        "tpuTopology": {
          "type": "string",
          "description": "Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: \"2x2x1\")."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1MachineSpecAcceleratorType": {
      "description": "Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorTypeUnspecified",
          "description": "Unspecified accelerator type, which means no accelerator.",
          "value": "ACCELERATOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "NvidiaTeslaK80",
          "description": "Nvidia Tesla K80 GPU.",
          "value": "NVIDIA_TESLA_K80"
        },
        {
          "name": "NvidiaTeslaP100",
          "description": "Nvidia Tesla P100 GPU.",
          "value": "NVIDIA_TESLA_P100"
        },
        {
          "name": "NvidiaTeslaV100",
          "description": "Nvidia Tesla V100 GPU.",
          "value": "NVIDIA_TESLA_V100"
        },
        {
          "name": "NvidiaTeslaP4",
          "description": "Nvidia Tesla P4 GPU.",
          "value": "NVIDIA_TESLA_P4"
        },
        {
          "name": "NvidiaTeslaT4",
          "description": "Nvidia Tesla T4 GPU.",
          "value": "NVIDIA_TESLA_T4"
        },
        {
          "name": "NvidiaTeslaA100",
          "description": "Nvidia Tesla A100 GPU.",
          "value": "NVIDIA_TESLA_A100"
        },
        {
          "name": "NvidiaA10080gb",
          "description": "Nvidia A100 80GB GPU.",
          "value": "NVIDIA_A100_80GB"
        },
        {
          "name": "NvidiaL4",
          "description": "Nvidia L4 GPU.",
          "value": "NVIDIA_L4"
        },
        {
          "name": "TpuV2",
          "description": "TPU v2.",
          "value": "TPU_V2"
        },
        {
          "name": "TpuV3",
          "description": "TPU v3.",
          "value": "TPU_V3"
        },
        {
          "name": "TpuV4Pod",
          "description": "TPU v4.",
          "value": "TPU_V4_POD"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1MachineSpecResponse": {
      "description": "Specification of a single machine.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of accelerators to attach to the machine."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count."
        },
        "machineType": {
          "type": "string",
          "description": "Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required."
        },
        "tpuTopology": {
          "type": "string",
          "description": "Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: \"2x2x1\")."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType",
        "machineType",
        "tpuTopology"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ManualBatchTuningParameters": {
      "description": "Manual batch tuning parameters.",
      "properties": {
        "batchSize": {
          "type": "integer",
          "description": "Immutable. The number of the records (e.g. instances) of the operation given in each batch to a machine replica. Machine type, and size of a single record should be considered when setting this parameter, higher value speeds up the batch operation's execution, but too high value will result in a whole batch not fitting in a machine's memory, and the whole operation will fail. The default value is 64."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ManualBatchTuningParametersResponse": {
      "description": "Manual batch tuning parameters.",
      "properties": {
        "batchSize": {
          "type": "integer",
          "description": "Immutable. The number of the records (e.g. instances) of the operation given in each batch to a machine replica. Machine type, and size of a single record should be considered when setting this parameter, higher value speeds up the batch operation's execution, but too high value will result in a whole batch not fitting in a machine's memory, and the whole operation will fail. The default value is 64."
        }
      },
      "type": "object",
      "required": [
        "batchSize"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1MeasurementMetricResponse": {
      "description": "A message representing a metric in the measurement.",
      "properties": {
        "metricId": {
          "type": "string",
          "description": "The ID of the Metric. The Metric should be defined in StudySpec's Metrics."
        },
        "value": {
          "type": "number",
          "description": "The value for this metric."
        }
      },
      "type": "object",
      "required": [
        "metricId",
        "value"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1MeasurementResponse": {
      "description": "A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values.",
      "properties": {
        "elapsedDuration": {
          "type": "string",
          "description": "Time that the Trial has been running at the point of this Measurement."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MeasurementMetricResponse"
          },
          "description": "A list of metrics got by evaluating the objective functions using suggested Parameter values."
        },
        "stepCount": {
          "type": "string",
          "description": "The number of steps the machine learning model has been trained for. Must be non-negative."
        }
      },
      "type": "object",
      "required": [
        "elapsedDuration",
        "metrics",
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1MetadataStoreMetadataStoreStateResponse": {
      "description": "Represents state information for a MetadataStore.",
      "properties": {
        "diskUtilizationBytes": {
          "type": "string",
          "description": "The disk utilization of the MetadataStore in bytes."
        }
      },
      "type": "object",
      "required": [
        "diskUtilizationBytes"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1Model": {
      "description": "A trained machine learning Model.",
      "properties": {
        "artifactUri": {
          "type": "string",
          "description": "Immutable. The path to the directory containing the Model artifact and any of its supporting files. Not present for AutoML Models or Large Models."
        },
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelContainerSpec",
          "description": "Input only. The specification of the container that is to be used when deploying this Model. The specification is ingested upon ModelService.UploadModel, and all binaries it contains are copied and stored internally by Vertex AI. Not present for AutoML Models or Large Models."
        },
        "description": {
          "type": "string",
          "description": "The description of the Model."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Model. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a Model. If set, this Model and all sub-resources of this Model will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationSpec",
          "description": "The default explanation specification for this Model. The Model can be used for requesting explanation after being deployed if it is populated. The Model can be used for batch explanation if it is populated. All fields of the explanation_spec can be overridden by explanation_spec of DeployModelRequest.deployed_model, or explanation_spec of BatchPredictionJob. If the default explanation specification is not set for this Model, this Model can still be used for requesting explanation by setting explanation_spec of DeployModelRequest.deployed_model and for batch explanation by setting explanation_spec of BatchPredictionJob."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Models. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Immutable. An additional information about the Model; the schema of the metadata can be found in metadata_schema. Unset if the Model does not have any additional information."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Model, that is specific to it. Unset if the Model does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI, if no additional metadata is needed, this field is set to an empty string. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Model."
        },
        "pipelineJob": {
          "type": "string",
          "description": "Optional. This field is populated if the model is produced by a pipeline job."
        },
        "predictSchemata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredictSchemata",
          "description": "The schemata that describe formats of the Model's predictions and explanations as given and returned via PredictionService.Predict and PredictionService.Explain."
        },
        "versionAliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User provided version aliases so that a model version can be referenced via alias (i.e. `projects/{project}/locations/{location}/models/{model_id}@{version_alias}` instead of auto-generated version id (i.e. `projects/{project}/locations/{location}/models/{model_id}@{version_id})`. The format is a-z{0,126}[a-z0-9] to distinguish from version_id. A default version alias will be created for the first version of the model, and there must be exactly one default version alias for a model."
        },
        "versionDescription": {
          "type": "string",
          "description": "The description of this version."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelContainerSpec": {
      "description": "Specification of a container for serving predictions. Some fields in this message correspond to fields in the [Kubernetes Container v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify this field as an array of executable and arguments, similar to a Docker `CMD`'s \"default parameters\" form. If you don't specify this field but do specify the command field, then the command from the `command` field runs without any additional arguments. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). If you don't specify this field and don't specify the `command` field, then the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and `CMD` determine what runs based on their default behavior. See the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). In this field, you can reference [environment variables set by Vertex AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `args` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the command that runs when the container starts. This overrides the container's [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint). Specify this field as an array of executable and arguments, similar to a Docker `ENTRYPOINT`'s \"exec\" form, not its \"shell\" form. If you do not specify this field, then the container's `ENTRYPOINT` runs, in conjunction with the args field or the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd), if either exists. If this field is not specified and the container does not have an `ENTRYPOINT`, then refer to the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). If you specify this field, then you can also specify the `args` field to provide additional arguments for this command. However, if you specify this field, then the container's `CMD` is ignored. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). In this field, you can reference [environment variables set by Vertex AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `command` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "deploymentTimeout": {
          "type": "string",
          "description": "Immutable. Deployment timeout. TODO (b/306244185): Revise documentation before exposing."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EnvVar"
          },
          "description": "Immutable. List of environment variables to set in the container. After the container starts running, code running in the container can read these environment variables. Additionally, the command and args fields can reference these variables. Later entries in this list can also reference earlier entries. For example, the following example sets the variable `VAR_2` to have the value `foo bar`: ```json [ { \"name\": \"VAR_1\", \"value\": \"foo\" }, { \"name\": \"VAR_2\", \"value\": \"$(VAR_1) bar\" } ] ``` If you switch the order of the variables in the example, then the expansion does not occur. This field corresponds to the `env` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "healthProbe": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1Probe",
          "description": "Immutable. Specification for Kubernetes readiness probe. TODO (b/306244185): Revise documentation before exposing."
        },
        "healthRoute": {
          "type": "string",
          "description": "Immutable. HTTP path on the container to send health checks to. Vertex AI intermittently sends GET requests to this path on the container's IP address and port to check that the container is healthy. Read more about [health checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#health). For example, if you set this field to `/bar`, then Vertex AI intermittently sends a GET request to the `/bar` path on the port of your container specified by the first value of this `ModelContainerSpec`'s ports field. If you don't specify this field, it defaults to the following value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/deployedModels/ DEPLOYED_MODEL:predict The placeholders in this value are replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of the Endpoint.name][] field of the Endpoint where this Model has been deployed. (Vertex AI makes this value available to your container code as the [`AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL: DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)"
        },
        "imageUri": {
          "type": "string",
          "description": "Immutable. URI of the Docker image to be used as the custom container for serving predictions. This URI must identify an image in Artifact Registry or Container Registry. Learn more about the [container publishing requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#publishing), including permissions requirements for the Vertex AI Service Agent. The container image is ingested upon ModelService.UploadModel, stored internally, and this original path is afterwards not used. To learn about the requirements for the Docker image itself, see [Custom container requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#). You can use the URI to one of Vertex AI's [pre-built container images for prediction](https://cloud.google.com/vertex-ai/docs/predictions/pre-built-containers) in this field."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1Port"
          },
          "description": "Immutable. List of ports to expose from the container. Vertex AI sends any prediction requests that it receives to the first port on this list. Vertex AI also sends [liveness and health checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#liveness) to this port. If you do not specify this field, it defaults to following value: ```json [ { \"containerPort\": 8080 } ] ``` Vertex AI does not use ports other than the first one listed. This field corresponds to the `ports` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "predictRoute": {
          "type": "string",
          "description": "Immutable. HTTP path on the container to send prediction requests to. Vertex AI forwards requests sent using projects.locations.endpoints.predict to this path on the container's IP address and port. Vertex AI then returns the container's response in the API response. For example, if you set this field to `/foo`, then when Vertex AI receives a prediction request, it forwards the request body in a POST request to the `/foo` path on the port of your container specified by the first value of this `ModelContainerSpec`'s ports field. If you don't specify this field, it defaults to the following value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict The placeholders in this value are replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of the Endpoint.name][] field of the Endpoint where this Model has been deployed. (Vertex AI makes this value available to your container code as the [`AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL: DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)"
        },
        "sharedMemorySizeMb": {
          "type": "string",
          "description": "Immutable. The amount of the VM memory to reserve as the shared memory for the model in megabytes. TODO (b/306244185): Revise documentation before exposing."
        },
        "startupProbe": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1Probe",
          "description": "Immutable. Specification for Kubernetes startup probe. TODO (b/306244185): Revise documentation before exposing."
        }
      },
      "type": "object",
      "required": [
        "imageUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelContainerSpecResponse": {
      "description": "Specification of a container for serving predictions. Some fields in this message correspond to fields in the [Kubernetes Container v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify this field as an array of executable and arguments, similar to a Docker `CMD`'s \"default parameters\" form. If you don't specify this field but do specify the command field, then the command from the `command` field runs without any additional arguments. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). If you don't specify this field and don't specify the `command` field, then the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and `CMD` determine what runs based on their default behavior. See the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). In this field, you can reference [environment variables set by Vertex AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `args` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the command that runs when the container starts. This overrides the container's [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint). Specify this field as an array of executable and arguments, similar to a Docker `ENTRYPOINT`'s \"exec\" form, not its \"shell\" form. If you do not specify this field, then the container's `ENTRYPOINT` runs, in conjunction with the args field or the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd), if either exists. If this field is not specified and the container does not have an `ENTRYPOINT`, then refer to the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). If you specify this field, then you can also specify the `args` field to provide additional arguments for this command. However, if you specify this field, then the container's `CMD` is ignored. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). In this field, you can reference [environment variables set by Vertex AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `command` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "deploymentTimeout": {
          "type": "string",
          "description": "Immutable. Deployment timeout. TODO (b/306244185): Revise documentation before exposing."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EnvVarResponse"
          },
          "description": "Immutable. List of environment variables to set in the container. After the container starts running, code running in the container can read these environment variables. Additionally, the command and args fields can reference these variables. Later entries in this list can also reference earlier entries. For example, the following example sets the variable `VAR_2` to have the value `foo bar`: ```json [ { \"name\": \"VAR_1\", \"value\": \"foo\" }, { \"name\": \"VAR_2\", \"value\": \"$(VAR_1) bar\" } ] ``` If you switch the order of the variables in the example, then the expansion does not occur. This field corresponds to the `env` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "healthProbe": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ProbeResponse",
          "description": "Immutable. Specification for Kubernetes readiness probe. TODO (b/306244185): Revise documentation before exposing."
        },
        "healthRoute": {
          "type": "string",
          "description": "Immutable. HTTP path on the container to send health checks to. Vertex AI intermittently sends GET requests to this path on the container's IP address and port to check that the container is healthy. Read more about [health checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#health). For example, if you set this field to `/bar`, then Vertex AI intermittently sends a GET request to the `/bar` path on the port of your container specified by the first value of this `ModelContainerSpec`'s ports field. If you don't specify this field, it defaults to the following value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/deployedModels/ DEPLOYED_MODEL:predict The placeholders in this value are replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of the Endpoint.name][] field of the Endpoint where this Model has been deployed. (Vertex AI makes this value available to your container code as the [`AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL: DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)"
        },
        "imageUri": {
          "type": "string",
          "description": "Immutable. URI of the Docker image to be used as the custom container for serving predictions. This URI must identify an image in Artifact Registry or Container Registry. Learn more about the [container publishing requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#publishing), including permissions requirements for the Vertex AI Service Agent. The container image is ingested upon ModelService.UploadModel, stored internally, and this original path is afterwards not used. To learn about the requirements for the Docker image itself, see [Custom container requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#). You can use the URI to one of Vertex AI's [pre-built container images for prediction](https://cloud.google.com/vertex-ai/docs/predictions/pre-built-containers) in this field."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PortResponse"
          },
          "description": "Immutable. List of ports to expose from the container. Vertex AI sends any prediction requests that it receives to the first port on this list. Vertex AI also sends [liveness and health checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#liveness) to this port. If you do not specify this field, it defaults to following value: ```json [ { \"containerPort\": 8080 } ] ``` Vertex AI does not use ports other than the first one listed. This field corresponds to the `ports` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "predictRoute": {
          "type": "string",
          "description": "Immutable. HTTP path on the container to send prediction requests to. Vertex AI forwards requests sent using projects.locations.endpoints.predict to this path on the container's IP address and port. Vertex AI then returns the container's response in the API response. For example, if you set this field to `/foo`, then when Vertex AI receives a prediction request, it forwards the request body in a POST request to the `/foo` path on the port of your container specified by the first value of this `ModelContainerSpec`'s ports field. If you don't specify this field, it defaults to the following value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict The placeholders in this value are replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of the Endpoint.name][] field of the Endpoint where this Model has been deployed. (Vertex AI makes this value available to your container code as the [`AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL: DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)"
        },
        "sharedMemorySizeMb": {
          "type": "string",
          "description": "Immutable. The amount of the VM memory to reserve as the shared memory for the model in megabytes. TODO (b/306244185): Revise documentation before exposing."
        },
        "startupProbe": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ProbeResponse",
          "description": "Immutable. Specification for Kubernetes startup probe. TODO (b/306244185): Revise documentation before exposing."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "deploymentTimeout",
        "env",
        "healthProbe",
        "healthRoute",
        "imageUri",
        "ports",
        "predictRoute",
        "sharedMemorySizeMb",
        "startupProbe"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelDeploymentMonitoringBigQueryTableResponse": {
      "description": "ModelDeploymentMonitoringBigQueryTable specifies the BigQuery table name as well as some information of the logs stored in this table.",
      "properties": {
        "bigqueryTablePath": {
          "type": "string",
          "description": "The created BigQuery table to store logs. Customer could do their own query & analysis. Format: `bq://.model_deployment_monitoring_._`"
        },
        "logSource": {
          "type": "string",
          "description": "The source of log."
        },
        "logType": {
          "type": "string",
          "description": "The type of log."
        }
      },
      "type": "object",
      "required": [
        "bigqueryTablePath",
        "logSource",
        "logType"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelDeploymentMonitoringJobLatestMonitoringPipelineMetadataResponse": {
      "description": "All metadata of most recent monitoring pipelines.",
      "properties": {
        "runTime": {
          "type": "string",
          "description": "The time that most recent monitoring pipelines that is related to this run."
        },
        "status": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "The status of the most recent monitoring pipeline."
        }
      },
      "type": "object",
      "required": [
        "runTime",
        "status"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelDeploymentMonitoringObjectiveConfig": {
      "description": "ModelDeploymentMonitoringObjectiveConfig contains the pair of deployed_model_id to ModelMonitoringObjectiveConfig.",
      "properties": {
        "deployedModelId": {
          "type": "string",
          "description": "The DeployedModel ID of the objective config."
        },
        "objectiveConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfig",
          "description": "The objective config of for the modelmonitoring job of this deployed model."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelDeploymentMonitoringObjectiveConfigResponse": {
      "description": "ModelDeploymentMonitoringObjectiveConfig contains the pair of deployed_model_id to ModelMonitoringObjectiveConfig.",
      "properties": {
        "deployedModelId": {
          "type": "string",
          "description": "The DeployedModel ID of the objective config."
        },
        "objectiveConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigResponse",
          "description": "The objective config of for the modelmonitoring job of this deployed model."
        }
      },
      "type": "object",
      "required": [
        "deployedModelId",
        "objectiveConfig"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelDeploymentMonitoringScheduleConfig": {
      "description": "The config for scheduling monitoring job.",
      "properties": {
        "monitorInterval": {
          "type": "string",
          "description": "The model monitoring job scheduling interval. It will be rounded up to next full hour. This defines how often the monitoring jobs are triggered."
        },
        "monitorWindow": {
          "type": "string",
          "description": "The time window of the prediction data being included in each prediction dataset. This window specifies how long the data should be collected from historical model results for each run. If not set, ModelDeploymentMonitoringScheduleConfig.monitor_interval will be used. e.g. If currently the cutoff time is 2022-01-08 14:30:00 and the monitor_window is set to be 3600, then data from 2022-01-08 13:30:00 to 2022-01-08 14:30:00 will be retrieved and aggregated to calculate the monitoring statistics."
        }
      },
      "type": "object",
      "required": [
        "monitorInterval"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelDeploymentMonitoringScheduleConfigResponse": {
      "description": "The config for scheduling monitoring job.",
      "properties": {
        "monitorInterval": {
          "type": "string",
          "description": "The model monitoring job scheduling interval. It will be rounded up to next full hour. This defines how often the monitoring jobs are triggered."
        },
        "monitorWindow": {
          "type": "string",
          "description": "The time window of the prediction data being included in each prediction dataset. This window specifies how long the data should be collected from historical model results for each run. If not set, ModelDeploymentMonitoringScheduleConfig.monitor_interval will be used. e.g. If currently the cutoff time is 2022-01-08 14:30:00 and the monitor_window is set to be 3600, then data from 2022-01-08 13:30:00 to 2022-01-08 14:30:00 will be retrieved and aggregated to calculate the monitoring statistics."
        }
      },
      "type": "object",
      "required": [
        "monitorInterval",
        "monitorWindow"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelExportFormatResponse": {
      "description": "Represents export format supported by the Model. All formats export to Google Cloud Storage.",
      "properties": {
        "exportableContents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The content of this Model that may be exported."
        }
      },
      "type": "object",
      "required": [
        "exportableContents"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringAlertConfig": {
      "properties": {
        "emailAlertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringAlertConfigEmailAlertConfig",
          "description": "Email alert config."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Dump the anomalies to Cloud Logging. The anomalies will be put to json payload encoded from proto google.cloud.aiplatform.logging.ModelMonitoringAnomaliesLogEntry. This can be further sinked to Pub/Sub or any other services supported by Cloud Logging."
        },
        "notificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource names of the NotificationChannels to send alert. Must be of the format `projects//notificationChannels/`"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringAlertConfigEmailAlertConfig": {
      "description": "The config for email alert.",
      "properties": {
        "userEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses to send the alert."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringAlertConfigEmailAlertConfigResponse": {
      "description": "The config for email alert.",
      "properties": {
        "userEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses to send the alert."
        }
      },
      "type": "object",
      "required": [
        "userEmails"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringAlertConfigResponse": {
      "properties": {
        "emailAlertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringAlertConfigEmailAlertConfigResponse",
          "description": "Email alert config."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Dump the anomalies to Cloud Logging. The anomalies will be put to json payload encoded from proto google.cloud.aiplatform.logging.ModelMonitoringAnomaliesLogEntry. This can be further sinked to Pub/Sub or any other services supported by Cloud Logging."
        },
        "notificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource names of the NotificationChannels to send alert. Must be of the format `projects//notificationChannels/`"
        }
      },
      "type": "object",
      "required": [
        "emailAlertConfig",
        "enableLogging",
        "notificationChannels"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfig": {
      "description": "The objective configuration for model monitoring, including the information needed to detect anomalies for one particular model.",
      "properties": {
        "explanationConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfig",
          "description": "The config for integrating with Vertex Explainable AI."
        },
        "predictionDriftDetectionConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfig",
          "description": "The config for drift of prediction data."
        },
        "trainingDataset": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingDataset",
          "description": "Training dataset for models. This field has to be set only if TrainingPredictionSkewDetectionConfig is specified."
        },
        "trainingPredictionSkewDetectionConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfig",
          "description": "The config for skew between training data and prediction data."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfig": {
      "description": "The config for integrating with Vertex Explainable AI. Only applicable if the Model has explanation_spec populated.",
      "properties": {
        "enableFeatureAttributes": {
          "type": "boolean",
          "description": "If want to analyze the Vertex Explainable AI feature attribute scores or not. If set to true, Vertex AI will log the feature attributions from explain response and do the skew/drift detection for them."
        },
        "explanationBaseline": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaseline",
          "description": "Predictions generated by the BatchPredictionJob using baseline dataset."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaseline": {
      "description": "Output from BatchPredictionJob for Model Monitoring baseline dataset, which can be used to generate baseline attribution scores.",
      "properties": {
        "bigquery": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQueryDestination",
          "description": "BigQuery location for BatchExplain output."
        },
        "gcs": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestination",
          "description": "Cloud Storage location for BatchExplain output."
        },
        "predictionFormat": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaselinePredictionFormat",
          "description": "The storage format of the predictions generated BatchPrediction job."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaselinePredictionFormat": {
      "description": "The storage format of the predictions generated BatchPrediction job.",
      "type": "string",
      "enum": [
        {
          "name": "PredictionFormatUnspecified",
          "description": "Should not be set.",
          "value": "PREDICTION_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Jsonl",
          "description": "Predictions are in JSONL files.",
          "value": "JSONL"
        },
        {
          "name": "Bigquery",
          "description": "Predictions are in BigQuery.",
          "value": "BIGQUERY"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaselineResponse": {
      "description": "Output from BatchPredictionJob for Model Monitoring baseline dataset, which can be used to generate baseline attribution scores.",
      "properties": {
        "bigquery": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQueryDestinationResponse",
          "description": "BigQuery location for BatchExplain output."
        },
        "gcs": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestinationResponse",
          "description": "Cloud Storage location for BatchExplain output."
        },
        "predictionFormat": {
          "type": "string",
          "description": "The storage format of the predictions generated BatchPrediction job."
        }
      },
      "type": "object",
      "required": [
        "bigquery",
        "gcs",
        "predictionFormat"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigResponse": {
      "description": "The config for integrating with Vertex Explainable AI. Only applicable if the Model has explanation_spec populated.",
      "properties": {
        "enableFeatureAttributes": {
          "type": "boolean",
          "description": "If want to analyze the Vertex Explainable AI feature attribute scores or not. If set to true, Vertex AI will log the feature attributions from explain response and do the skew/drift detection for them."
        },
        "explanationBaseline": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaselineResponse",
          "description": "Predictions generated by the BatchPredictionJob using baseline dataset."
        }
      },
      "type": "object",
      "required": [
        "enableFeatureAttributes",
        "explanationBaseline"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfig": {
      "description": "The config for Prediction data drift detection.",
      "properties": {
        "attributionScoreDriftThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. The threshold here is against attribution score distance between different time windows."
        },
        "defaultDriftThreshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ThresholdConfig",
          "description": "Drift anomaly detection threshold used by all features. When the per-feature thresholds are not set, this field can be used to specify a threshold for all features."
        },
        "driftThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. If a feature needs to be monitored for drift, a value threshold must be configured for that feature. The threshold here is against feature distribution distance between different time windws."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfigResponse": {
      "description": "The config for Prediction data drift detection.",
      "properties": {
        "attributionScoreDriftThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. The threshold here is against attribution score distance between different time windows."
        },
        "defaultDriftThreshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ThresholdConfigResponse",
          "description": "Drift anomaly detection threshold used by all features. When the per-feature thresholds are not set, this field can be used to specify a threshold for all features."
        },
        "driftThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. If a feature needs to be monitored for drift, a value threshold must be configured for that feature. The threshold here is against feature distribution distance between different time windws."
        }
      },
      "type": "object",
      "required": [
        "attributionScoreDriftThresholds",
        "defaultDriftThreshold",
        "driftThresholds"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigResponse": {
      "description": "The objective configuration for model monitoring, including the information needed to detect anomalies for one particular model.",
      "properties": {
        "explanationConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigResponse",
          "description": "The config for integrating with Vertex Explainable AI."
        },
        "predictionDriftDetectionConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfigResponse",
          "description": "The config for drift of prediction data."
        },
        "trainingDataset": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingDatasetResponse",
          "description": "Training dataset for models. This field has to be set only if TrainingPredictionSkewDetectionConfig is specified."
        },
        "trainingPredictionSkewDetectionConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfigResponse",
          "description": "The config for skew between training data and prediction data."
        }
      },
      "type": "object",
      "required": [
        "explanationConfig",
        "predictionDriftDetectionConfig",
        "trainingDataset",
        "trainingPredictionSkewDetectionConfig"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingDataset": {
      "description": "Training Dataset information.",
      "properties": {
        "bigquerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQuerySource",
          "description": "The BigQuery table of the unmanaged Dataset used to train this Model."
        },
        "dataFormat": {
          "type": "string",
          "description": "Data format of the dataset, only applicable if the input is from Google Cloud Storage. The possible formats are: \"tf-record\" The source file is a TFRecord file. \"csv\" The source file is a CSV file. \"jsonl\" The source file is a JSONL file."
        },
        "dataset": {
          "type": "string",
          "description": "The resource name of the Dataset used to train this Model."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsSource",
          "description": "The Google Cloud Storage uri of the unmanaged Dataset used to train this Model."
        },
        "loggingSamplingStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SamplingStrategy",
          "description": "Strategy to sample data from Training Dataset. If not set, we process the whole dataset."
        },
        "targetField": {
          "type": "string",
          "description": "The target field name the model is to predict. This field will be excluded when doing Predict and (or) Explain for the training data."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingDatasetResponse": {
      "description": "Training Dataset information.",
      "properties": {
        "bigquerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQuerySourceResponse",
          "description": "The BigQuery table of the unmanaged Dataset used to train this Model."
        },
        "dataFormat": {
          "type": "string",
          "description": "Data format of the dataset, only applicable if the input is from Google Cloud Storage. The possible formats are: \"tf-record\" The source file is a TFRecord file. \"csv\" The source file is a CSV file. \"jsonl\" The source file is a JSONL file."
        },
        "dataset": {
          "type": "string",
          "description": "The resource name of the Dataset used to train this Model."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsSourceResponse",
          "description": "The Google Cloud Storage uri of the unmanaged Dataset used to train this Model."
        },
        "loggingSamplingStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SamplingStrategyResponse",
          "description": "Strategy to sample data from Training Dataset. If not set, we process the whole dataset."
        },
        "targetField": {
          "type": "string",
          "description": "The target field name the model is to predict. This field will be excluded when doing Predict and (or) Explain for the training data."
        }
      },
      "type": "object",
      "required": [
        "bigquerySource",
        "dataFormat",
        "dataset",
        "gcsSource",
        "loggingSamplingStrategy",
        "targetField"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfig": {
      "description": "The config for Training & Prediction data skew detection. It specifies the training dataset sources and the skew detection parameters.",
      "properties": {
        "attributionScoreSkewThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. The threshold here is against attribution score distance between the training and prediction feature."
        },
        "defaultSkewThreshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ThresholdConfig",
          "description": "Skew anomaly detection threshold used by all features. When the per-feature thresholds are not set, this field can be used to specify a threshold for all features."
        },
        "skewThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. If a feature needs to be monitored for skew, a value threshold must be configured for that feature. The threshold here is against feature distribution distance between the training and prediction feature."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfigResponse": {
      "description": "The config for Training & Prediction data skew detection. It specifies the training dataset sources and the skew detection parameters.",
      "properties": {
        "attributionScoreSkewThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. The threshold here is against attribution score distance between the training and prediction feature."
        },
        "defaultSkewThreshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ThresholdConfigResponse",
          "description": "Skew anomaly detection threshold used by all features. When the per-feature thresholds are not set, this field can be used to specify a threshold for all features."
        },
        "skewThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. If a feature needs to be monitored for skew, a value threshold must be configured for that feature. The threshold here is against feature distribution distance between the training and prediction feature."
        }
      },
      "type": "object",
      "required": [
        "attributionScoreSkewThresholds",
        "defaultSkewThreshold",
        "skewThresholds"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelOriginalModelInfoResponse": {
      "description": "Contains information about the original Model if this Model is a copy.",
      "properties": {
        "model": {
          "type": "string",
          "description": "The resource name of the Model this Model is a copy of, including the revision. Format: `projects/{project}/locations/{location}/models/{model_id}@{version_id}`"
        }
      },
      "type": "object",
      "required": [
        "model"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelResponse": {
      "description": "A trained machine learning Model.",
      "properties": {
        "artifactUri": {
          "type": "string",
          "description": "Immutable. The path to the directory containing the Model artifact and any of its supporting files. Not present for AutoML Models or Large Models."
        },
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelContainerSpecResponse",
          "description": "Input only. The specification of the container that is to be used when deploying this Model. The specification is ingested upon ModelService.UploadModel, and all binaries it contains are copied and stored internally by Vertex AI. Not present for AutoML Models or Large Models."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Model was uploaded into Vertex AI."
        },
        "deployedModels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedModelRefResponse"
          },
          "description": "The pointers to DeployedModels created from this Model. Note that Model could have been deployed to Endpoints in different Locations."
        },
        "description": {
          "type": "string",
          "description": "The description of the Model."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Model. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a Model. If set, this Model and all sub-resources of this Model will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationSpecResponse",
          "description": "The default explanation specification for this Model. The Model can be used for requesting explanation after being deployed if it is populated. The Model can be used for batch explanation if it is populated. All fields of the explanation_spec can be overridden by explanation_spec of DeployModelRequest.deployed_model, or explanation_spec of BatchPredictionJob. If the default explanation specification is not set for this Model, this Model can still be used for requesting explanation by setting explanation_spec of DeployModelRequest.deployed_model and for batch explanation by setting explanation_spec of BatchPredictionJob."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Models. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Immutable. An additional information about the Model; the schema of the metadata can be found in metadata_schema. Unset if the Model does not have any additional information."
        },
        "metadataArtifact": {
          "type": "string",
          "description": "The resource name of the Artifact that was created in MetadataStore when creating the Model. The Artifact resource name pattern is `projects/{project}/locations/{location}/metadataStores/{metadata_store}/artifacts/{artifact}`."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Model, that is specific to it. Unset if the Model does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI, if no additional metadata is needed, this field is set to an empty string. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "modelSourceInfo": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelSourceInfoResponse",
          "description": "Source of a model. It can either be automl training pipeline, custom training pipeline, BigQuery ML, or existing Vertex AI Model."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Model."
        },
        "originalModelInfo": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelOriginalModelInfoResponse",
          "description": "If this Model is a copy of another Model, this contains info about the original."
        },
        "pipelineJob": {
          "type": "string",
          "description": "Optional. This field is populated if the model is produced by a pipeline job."
        },
        "predictSchemata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredictSchemataResponse",
          "description": "The schemata that describe formats of the Model's predictions and explanations as given and returned via PredictionService.Predict and PredictionService.Explain."
        },
        "supportedDeploymentResourcesTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "When this Model is deployed, its prediction resources are described by the `prediction_resources` field of the Endpoint.deployed_models object. Because not all Models support all resource configuration types, the configuration types this Model supports are listed here. If no configuration types are listed, the Model cannot be deployed to an Endpoint and does not support online predictions (PredictionService.Predict or PredictionService.Explain). Such a Model can serve predictions by using a BatchPredictionJob, if it has at least one entry each in supported_input_storage_formats and supported_output_storage_formats."
        },
        "supportedExportFormats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelExportFormatResponse"
          },
          "description": "The formats in which this Model may be exported. If empty, this Model is not available for export."
        },
        "supportedInputStorageFormats": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The formats this Model supports in BatchPredictionJob.input_config. If PredictSchemata.instance_schema_uri exists, the instances should be given as per that schema. The possible formats are: * `jsonl` The JSON Lines format, where each instance is a single line. Uses GcsSource. * `csv` The CSV format, where each instance is a single comma-separated line. The first line in the file is the header, containing comma-separated field names. Uses GcsSource. * `tf-record` The TFRecord format, where each instance is a single record in tfrecord syntax. Uses GcsSource. * `tf-record-gzip` Similar to `tf-record`, but the file is gzipped. Uses GcsSource. * `bigquery` Each instance is a single row in BigQuery. Uses BigQuerySource. * `file-list` Each line of the file is the location of an instance to process, uses `gcs_source` field of the InputConfig object. If this Model doesn't support any of these formats it means it cannot be used with a BatchPredictionJob. However, if it has supported_deployment_resources_types, it could serve online predictions by using PredictionService.Predict or PredictionService.Explain."
        },
        "supportedOutputStorageFormats": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The formats this Model supports in BatchPredictionJob.output_config. If both PredictSchemata.instance_schema_uri and PredictSchemata.prediction_schema_uri exist, the predictions are returned together with their instances. In other words, the prediction has the original instance data first, followed by the actual prediction content (as per the schema). The possible formats are: * `jsonl` The JSON Lines format, where each prediction is a single line. Uses GcsDestination. * `csv` The CSV format, where each prediction is a single comma-separated line. The first line in the file is the header, containing comma-separated field names. Uses GcsDestination. * `bigquery` Each prediction is a single row in a BigQuery table, uses BigQueryDestination . If this Model doesn't support any of these formats it means it cannot be used with a BatchPredictionJob. However, if it has supported_deployment_resources_types, it could serve online predictions by using PredictionService.Predict or PredictionService.Explain."
        },
        "trainingPipeline": {
          "type": "string",
          "description": "The resource name of the TrainingPipeline that uploaded this Model, if any."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Model was most recently updated."
        },
        "versionAliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User provided version aliases so that a model version can be referenced via alias (i.e. `projects/{project}/locations/{location}/models/{model_id}@{version_alias}` instead of auto-generated version id (i.e. `projects/{project}/locations/{location}/models/{model_id}@{version_id})`. The format is a-z{0,126}[a-z0-9] to distinguish from version_id. A default version alias will be created for the first version of the model, and there must be exactly one default version alias for a model."
        },
        "versionCreateTime": {
          "type": "string",
          "description": "Timestamp when this version was created."
        },
        "versionDescription": {
          "type": "string",
          "description": "The description of this version."
        },
        "versionId": {
          "type": "string",
          "description": "Immutable. The version ID of the model. A new version is committed when a new model version is uploaded or trained under an existing model id. It is an auto-incrementing decimal number in string representation."
        },
        "versionUpdateTime": {
          "type": "string",
          "description": "Timestamp when this version was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "artifactUri",
        "containerSpec",
        "createTime",
        "deployedModels",
        "description",
        "displayName",
        "encryptionSpec",
        "etag",
        "explanationSpec",
        "labels",
        "metadata",
        "metadataArtifact",
        "metadataSchemaUri",
        "modelSourceInfo",
        "name",
        "originalModelInfo",
        "pipelineJob",
        "predictSchemata",
        "supportedDeploymentResourcesTypes",
        "supportedExportFormats",
        "supportedInputStorageFormats",
        "supportedOutputStorageFormats",
        "trainingPipeline",
        "updateTime",
        "versionAliases",
        "versionCreateTime",
        "versionDescription",
        "versionId",
        "versionUpdateTime"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ModelSourceInfoResponse": {
      "description": "Detail description of the source information of the model.",
      "properties": {
        "copy": {
          "type": "boolean",
          "description": "If this Model is copy of another Model. If true then source_type pertains to the original."
        },
        "sourceType": {
          "type": "string",
          "description": "Type of the model source."
        }
      },
      "type": "object",
      "required": [
        "copy",
        "sourceType"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobOutputMultiTrialJobOutputResponse": {
      "description": "The output of a multi-trial Neural Architecture Search (NAS) jobs.",
      "properties": {
        "searchTrials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasTrialResponse"
          },
          "description": "List of NasTrials that were started as part of search stage."
        },
        "trainTrials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasTrialResponse"
          },
          "description": "List of NasTrials that were started as part of train stage."
        }
      },
      "type": "object",
      "required": [
        "searchTrials",
        "trainTrials"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobOutputResponse": {
      "description": "Represents a uCAIP NasJob output.",
      "properties": {
        "multiTrialJobOutput": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobOutputMultiTrialJobOutputResponse",
          "description": "The output of this multi-trial Neural Architecture Search (NAS) job."
        }
      },
      "type": "object",
      "required": [
        "multiTrialJobOutput"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpec": {
      "description": "Represents the spec of a NasJob.",
      "properties": {
        "multiTrialAlgorithmSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpec",
          "description": "The spec of multi-trial algorithms."
        },
        "resumeNasJobId": {
          "type": "string",
          "description": "The ID of the existing NasJob in the same Project and Location which will be used to resume search. search_space_spec and nas_algorithm_spec are obtained from previous NasJob hence should not provide them again for this NasJob."
        },
        "searchSpaceSpec": {
          "type": "string",
          "description": "It defines the search space for Neural Architecture Search (NAS)."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpec": {
      "description": "The spec of multi-trial Neural Architecture Search (NAS).",
      "properties": {
        "metric": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMetricSpec",
          "description": "Metric specs for the NAS job. Validation for this field is done at `multi_trial_algorithm_spec` field."
        },
        "multiTrialAlgorithm": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMultiTrialAlgorithm",
          "description": "The multi-trial Neural Architecture Search (NAS) algorithm type. Defaults to `REINFORCEMENT_LEARNING`."
        },
        "searchTrialSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpec",
          "description": "Spec for search trials."
        },
        "trainTrialSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpec",
          "description": "Spec for train trials. Top N [TrainTrialSpec.max_parallel_trial_count] search trials will be trained for every M [TrainTrialSpec.frequency] trials searched."
        }
      },
      "type": "object",
      "required": [
        "searchTrialSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMetricSpec": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMetricSpecGoal",
          "description": "The optimization goal of the metric."
        },
        "metricId": {
          "type": "string",
          "description": "The ID of the metric. Must not contain whitespaces."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metricId"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMetricSpecGoal": {
      "description": "Required. The optimization goal of the metric.",
      "type": "string",
      "enum": [
        {
          "name": "GoalTypeUnspecified",
          "description": "Goal Type will default to maximize.",
          "value": "GOAL_TYPE_UNSPECIFIED"
        },
        {
          "name": "Maximize",
          "description": "Maximize the goal metric.",
          "value": "MAXIMIZE"
        },
        {
          "name": "Minimize",
          "description": "Minimize the goal metric.",
          "value": "MINIMIZE"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMetricSpecResponse": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "type": "string",
          "description": "The optimization goal of the metric."
        },
        "metricId": {
          "type": "string",
          "description": "The ID of the metric. Must not contain whitespaces."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metricId"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMultiTrialAlgorithm": {
      "description": "The multi-trial Neural Architecture Search (NAS) algorithm type. Defaults to `REINFORCEMENT_LEARNING`.",
      "type": "string",
      "enum": [
        {
          "name": "MultiTrialAlgorithmUnspecified",
          "description": "Defaults to `REINFORCEMENT_LEARNING`.",
          "value": "MULTI_TRIAL_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "ReinforcementLearning",
          "description": "The Reinforcement Learning Algorithm for Multi-trial Neural Architecture Search (NAS).",
          "value": "REINFORCEMENT_LEARNING"
        },
        {
          "name": "GridSearch",
          "description": "The Grid Search Algorithm for Multi-trial Neural Architecture Search (NAS).",
          "value": "GRID_SEARCH"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecResponse": {
      "description": "The spec of multi-trial Neural Architecture Search (NAS).",
      "properties": {
        "metric": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMetricSpecResponse",
          "description": "Metric specs for the NAS job. Validation for this field is done at `multi_trial_algorithm_spec` field."
        },
        "multiTrialAlgorithm": {
          "type": "string",
          "description": "The multi-trial Neural Architecture Search (NAS) algorithm type. Defaults to `REINFORCEMENT_LEARNING`."
        },
        "searchTrialSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpecResponse",
          "description": "Spec for search trials."
        },
        "trainTrialSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpecResponse",
          "description": "Spec for train trials. Top N [TrainTrialSpec.max_parallel_trial_count] search trials will be trained for every M [TrainTrialSpec.frequency] trials searched."
        }
      },
      "type": "object",
      "required": [
        "metric",
        "multiTrialAlgorithm",
        "searchTrialSpec",
        "trainTrialSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpec": {
      "description": "Represent spec for search trials.",
      "properties": {
        "maxFailedTrialCount": {
          "type": "integer",
          "description": "The number of failed trials that need to be seen before failing the NasJob. If set to 0, Vertex AI decides how many trials must fail before the whole job fails."
        },
        "maxParallelTrialCount": {
          "type": "integer",
          "description": "The maximum number of trials to run in parallel."
        },
        "maxTrialCount": {
          "type": "integer",
          "description": "The maximum number of Neural Architecture Search (NAS) trials to run."
        },
        "searchTrialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpec",
          "description": "The spec of a search trial job. The same spec applies to all search trials."
        }
      },
      "type": "object",
      "required": [
        "maxParallelTrialCount",
        "maxTrialCount",
        "searchTrialJobSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpecResponse": {
      "description": "Represent spec for search trials.",
      "properties": {
        "maxFailedTrialCount": {
          "type": "integer",
          "description": "The number of failed trials that need to be seen before failing the NasJob. If set to 0, Vertex AI decides how many trials must fail before the whole job fails."
        },
        "maxParallelTrialCount": {
          "type": "integer",
          "description": "The maximum number of trials to run in parallel."
        },
        "maxTrialCount": {
          "type": "integer",
          "description": "The maximum number of Neural Architecture Search (NAS) trials to run."
        },
        "searchTrialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpecResponse",
          "description": "The spec of a search trial job. The same spec applies to all search trials."
        }
      },
      "type": "object",
      "required": [
        "maxFailedTrialCount",
        "maxParallelTrialCount",
        "maxTrialCount",
        "searchTrialJobSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpec": {
      "description": "Represent spec for train trials.",
      "properties": {
        "frequency": {
          "type": "integer",
          "description": "Frequency of search trials to start train stage. Top N [TrainTrialSpec.max_parallel_trial_count] search trials will be trained for every M [TrainTrialSpec.frequency] trials searched."
        },
        "maxParallelTrialCount": {
          "type": "integer",
          "description": "The maximum number of trials to run in parallel."
        },
        "trainTrialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpec",
          "description": "The spec of a train trial job. The same spec applies to all train trials."
        }
      },
      "type": "object",
      "required": [
        "frequency",
        "maxParallelTrialCount",
        "trainTrialJobSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpecResponse": {
      "description": "Represent spec for train trials.",
      "properties": {
        "frequency": {
          "type": "integer",
          "description": "Frequency of search trials to start train stage. Top N [TrainTrialSpec.max_parallel_trial_count] search trials will be trained for every M [TrainTrialSpec.frequency] trials searched."
        },
        "maxParallelTrialCount": {
          "type": "integer",
          "description": "The maximum number of trials to run in parallel."
        },
        "trainTrialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpecResponse",
          "description": "The spec of a train trial job. The same spec applies to all train trials."
        }
      },
      "type": "object",
      "required": [
        "frequency",
        "maxParallelTrialCount",
        "trainTrialJobSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasJobSpecResponse": {
      "description": "Represents the spec of a NasJob.",
      "properties": {
        "multiTrialAlgorithmSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecResponse",
          "description": "The spec of multi-trial algorithms."
        },
        "resumeNasJobId": {
          "type": "string",
          "description": "The ID of the existing NasJob in the same Project and Location which will be used to resume search. search_space_spec and nas_algorithm_spec are obtained from previous NasJob hence should not provide them again for this NasJob."
        },
        "searchSpaceSpec": {
          "type": "string",
          "description": "It defines the search space for Neural Architecture Search (NAS)."
        }
      },
      "type": "object",
      "required": [
        "multiTrialAlgorithmSpec",
        "resumeNasJobId",
        "searchSpaceSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NasTrialResponse": {
      "description": "Represents a uCAIP NasJob trial.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Time when the NasTrial's status changed to `SUCCEEDED` or `INFEASIBLE`."
        },
        "finalMeasurement": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MeasurementResponse",
          "description": "The final measurement containing the objective value."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the NasTrial was started."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the NasTrial."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "finalMeasurement",
        "startTime",
        "state"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NetworkSpec": {
      "description": "Network spec.",
      "properties": {
        "enableInternetAccess": {
          "type": "boolean",
          "description": "Whether to enable public internet access. Default false."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks)"
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the subnet that this instance is in. Format: `projects/{project_id_or_number}/regions/{region}/subnetworks/{subnetwork_id}`"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NetworkSpecResponse": {
      "description": "Network spec.",
      "properties": {
        "enableInternetAccess": {
          "type": "boolean",
          "description": "Whether to enable public internet access. Default false."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks)"
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the subnet that this instance is in. Format: `projects/{project_id_or_number}/regions/{region}/subnetworks/{subnetwork_id}`"
        }
      },
      "type": "object",
      "required": [
        "enableInternetAccess",
        "network",
        "subnetwork"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NfsMount": {
      "description": "Represents a mount configuration for Network File System (NFS) to mount.",
      "properties": {
        "mountPoint": {
          "type": "string",
          "description": "Destination mount path. The NFS will be mounted for the user under /mnt/nfs/"
        },
        "path": {
          "type": "string",
          "description": "Source path exported from NFS server. Has to start with '/', and combined with the ip address, it indicates the source mount path in the form of `server:path`"
        },
        "server": {
          "type": "string",
          "description": "IP address of the NFS server."
        }
      },
      "type": "object",
      "required": [
        "mountPoint",
        "path",
        "server"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NfsMountResponse": {
      "description": "Represents a mount configuration for Network File System (NFS) to mount.",
      "properties": {
        "mountPoint": {
          "type": "string",
          "description": "Destination mount path. The NFS will be mounted for the user under /mnt/nfs/"
        },
        "path": {
          "type": "string",
          "description": "Source path exported from NFS server. Has to start with '/', and combined with the ip address, it indicates the source mount path in the form of `server:path`"
        },
        "server": {
          "type": "string",
          "description": "IP address of the NFS server."
        }
      },
      "type": "object",
      "required": [
        "mountPoint",
        "path",
        "server"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NotebookEucConfig": {
      "description": "The euc configuration of NotebookRuntimeTemplate.",
      "properties": {
        "eucDisabled": {
          "type": "boolean",
          "description": "Input only. Whether EUC is disabled in this NotebookRuntimeTemplate. In proto3, the default value of a boolean is false. In this way, by default EUC will be enabled for NotebookRuntimeTemplate."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NotebookEucConfigResponse": {
      "description": "The euc configuration of NotebookRuntimeTemplate.",
      "properties": {
        "bypassActasCheck": {
          "type": "boolean",
          "description": "Whether ActAs check is bypassed for service account attached to the VM. If false, we need ActAs check for the default Compute Engine Service account. When a Runtime is created, a VM is allocated using Default Compute Engine Service Account. Any user requesting to use this Runtime requires Service Account User (ActAs) permission over this SA. If true, Runtime owner is using EUC and does not require the above permission as VM no longer use default Compute Engine SA, but a P4SA."
        },
        "eucDisabled": {
          "type": "boolean",
          "description": "Input only. Whether EUC is disabled in this NotebookRuntimeTemplate. In proto3, the default value of a boolean is false. In this way, by default EUC will be enabled for NotebookRuntimeTemplate."
        }
      },
      "type": "object",
      "required": [
        "bypassActasCheck",
        "eucDisabled"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NotebookIdleShutdownConfig": {
      "description": "The idle shutdown configuration of NotebookRuntimeTemplate, which contains the idle_timeout as required field.",
      "properties": {
        "idleShutdownDisabled": {
          "type": "boolean",
          "description": "Whether Idle Shutdown is disabled in this NotebookRuntimeTemplate."
        },
        "idleTimeout": {
          "type": "string",
          "description": "Duration is accurate to the second. In Notebook, Idle Timeout is accurate to minute so the range of idle_timeout (second) is: 10 * 60 ~ 1440 * 60."
        }
      },
      "type": "object",
      "required": [
        "idleTimeout"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1NotebookIdleShutdownConfigResponse": {
      "description": "The idle shutdown configuration of NotebookRuntimeTemplate, which contains the idle_timeout as required field.",
      "properties": {
        "idleShutdownDisabled": {
          "type": "boolean",
          "description": "Whether Idle Shutdown is disabled in this NotebookRuntimeTemplate."
        },
        "idleTimeout": {
          "type": "string",
          "description": "Duration is accurate to the second. In Notebook, Idle Timeout is accurate to minute so the range of idle_timeout (second) is: 10 * 60 ~ 1440 * 60."
        }
      },
      "type": "object",
      "required": [
        "idleShutdownDisabled",
        "idleTimeout"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PersistentDiskSpec": {
      "description": "Represents the spec of persistent disk options.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size in GB of the disk (default is 100GB)."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk (default is \"pd-standard\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) \"pd-standard\" (Persistent Disk Hard Disk Drive) \"pd-balanced\" (Balanced Persistent Disk) \"pd-extreme\" (Extreme Persistent Disk)"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PersistentDiskSpecResponse": {
      "description": "Represents the spec of persistent disk options.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size in GB of the disk (default is 100GB)."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk (default is \"pd-standard\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) \"pd-standard\" (Persistent Disk Hard Disk Drive) \"pd-balanced\" (Balanced Persistent Disk) \"pd-extreme\" (Extreme Persistent Disk)"
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "diskType"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineJob": {
      "description": "An instance of a machine learning PipelineJob.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network."
        },
        "pipelineSpec": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The spec of the pipeline."
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobRuntimeConfig",
          "description": "Runtime config of the pipeline."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "templateUri": {
          "type": "string",
          "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry & Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineJobDetailResponse": {
      "description": "The runtime detail of PipelineJob.",
      "properties": {
        "pipelineContext": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ContextResponse",
          "description": "The context of the pipeline."
        },
        "pipelineRunContext": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ContextResponse",
          "description": "The context of the current pipeline run."
        },
        "taskDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineTaskDetailResponse"
          },
          "description": "The runtime details of the tasks under the pipeline."
        }
      },
      "type": "object",
      "required": [
        "pipelineContext",
        "pipelineRunContext",
        "taskDetails"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineJobResponse": {
      "description": "An instance of a machine learning PipelineJob.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Pipeline creation time."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
        },
        "endTime": {
          "type": "string",
          "description": "Pipeline end time."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "The error that occurred during pipeline execution. Only populated when the pipeline's state is FAILED or CANCELLED."
        },
        "jobDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobDetailResponse",
          "description": "The details of pipeline run. Not available in the list view."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the PipelineJob."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network."
        },
        "pipelineSpec": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The spec of the pipeline."
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobRuntimeConfigResponse",
          "description": "Runtime config of the pipeline."
        },
        "scheduleName": {
          "type": "string",
          "description": "The schedule resource name. Only returned if the Pipeline is created by Schedule API."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "startTime": {
          "type": "string",
          "description": "Pipeline start time."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "templateMetadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineTemplateMetadataResponse",
          "description": "Pipeline template metadata. Will fill up fields if PipelineJob.template_uri is from supported template registry."
        },
        "templateUri": {
          "type": "string",
          "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry & Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this PipelineJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "jobDetail",
        "labels",
        "name",
        "network",
        "pipelineSpec",
        "reservedIpRanges",
        "runtimeConfig",
        "scheduleName",
        "serviceAccount",
        "startTime",
        "state",
        "templateMetadata",
        "templateUri",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineJobRuntimeConfig": {
      "description": "The runtime config of a PipelineJob.",
      "properties": {
        "failurePolicy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobRuntimeConfigFailurePolicy",
          "description": "Represents the failure policy of a pipeline. Currently, the default of a pipeline is that the pipeline will continue to run until no more tasks can be executed, also known as PIPELINE_FAILURE_POLICY_FAIL_SLOW. However, if a pipeline is set to PIPELINE_FAILURE_POLICY_FAIL_FAST, it will stop scheduling any new tasks when a task has failed. Any scheduled tasks will continue to completion."
        },
        "gcsOutputDirectory": {
          "type": "string",
          "description": "A path in a Cloud Storage bucket, which will be treated as the root output directory of the pipeline. It is used by the system to generate the paths of output artifacts. The artifact paths are generated with a sub-path pattern `{job_id}/{task_id}/{output_key}` under the specified output directory. The service account specified in this pipeline must have the `storage.objects.get` and `storage.objects.create` permissions for this bucket."
        },
        "inputArtifacts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime artifacts of the PipelineJob. The key will be the input artifact name and the value would be one of the InputArtifact."
        },
        "parameterValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.1.0, such as pipelines built using Kubeflow Pipelines SDK 1.9 or higher and the v2 DSL."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower.",
          "deprecationMessage": "Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower."
        }
      },
      "type": "object",
      "required": [
        "gcsOutputDirectory"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineJobRuntimeConfigFailurePolicy": {
      "description": "Represents the failure policy of a pipeline. Currently, the default of a pipeline is that the pipeline will continue to run until no more tasks can be executed, also known as PIPELINE_FAILURE_POLICY_FAIL_SLOW. However, if a pipeline is set to PIPELINE_FAILURE_POLICY_FAIL_FAST, it will stop scheduling any new tasks when a task has failed. Any scheduled tasks will continue to completion.",
      "type": "string",
      "enum": [
        {
          "name": "PipelineFailurePolicyUnspecified",
          "description": "Default value, and follows fail slow behavior.",
          "value": "PIPELINE_FAILURE_POLICY_UNSPECIFIED"
        },
        {
          "name": "PipelineFailurePolicyFailSlow",
          "description": "Indicates that the pipeline should continue to run until all possible tasks have been scheduled and completed.",
          "value": "PIPELINE_FAILURE_POLICY_FAIL_SLOW"
        },
        {
          "name": "PipelineFailurePolicyFailFast",
          "description": "Indicates that the pipeline should stop scheduling new tasks after a task has failed.",
          "value": "PIPELINE_FAILURE_POLICY_FAIL_FAST"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineJobRuntimeConfigResponse": {
      "description": "The runtime config of a PipelineJob.",
      "properties": {
        "failurePolicy": {
          "type": "string",
          "description": "Represents the failure policy of a pipeline. Currently, the default of a pipeline is that the pipeline will continue to run until no more tasks can be executed, also known as PIPELINE_FAILURE_POLICY_FAIL_SLOW. However, if a pipeline is set to PIPELINE_FAILURE_POLICY_FAIL_FAST, it will stop scheduling any new tasks when a task has failed. Any scheduled tasks will continue to completion."
        },
        "gcsOutputDirectory": {
          "type": "string",
          "description": "A path in a Cloud Storage bucket, which will be treated as the root output directory of the pipeline. It is used by the system to generate the paths of output artifacts. The artifact paths are generated with a sub-path pattern `{job_id}/{task_id}/{output_key}` under the specified output directory. The service account specified in this pipeline must have the `storage.objects.get` and `storage.objects.create` permissions for this bucket."
        },
        "inputArtifacts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime artifacts of the PipelineJob. The key will be the input artifact name and the value would be one of the InputArtifact."
        },
        "parameterValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.1.0, such as pipelines built using Kubeflow Pipelines SDK 1.9 or higher and the v2 DSL."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower.",
          "deprecationMessage": "Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower."
        }
      },
      "type": "object",
      "required": [
        "failurePolicy",
        "gcsOutputDirectory",
        "inputArtifacts",
        "parameterValues",
        "parameters"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineTaskDetailPipelineTaskStatusResponse": {
      "description": "A single record of the task status.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "The error that occurred during the state. May be set when the state is any of the non-final state (PENDING/RUNNING/CANCELLING) or FAILED state. If the state is FAILED, the error here is final and not going to be retried. If the state is a non-final state, the error indicates a system-error being retried."
        },
        "state": {
          "type": "string",
          "description": "The state of the task."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time of this status."
        }
      },
      "type": "object",
      "required": [
        "error",
        "state",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineTaskDetailResponse": {
      "description": "The runtime detail of a task execution.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Task create time."
        },
        "endTime": {
          "type": "string",
          "description": "Task end time."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "The error that occurred during task execution. Only populated when the task's state is FAILED or CANCELLED."
        },
        "execution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExecutionResponse",
          "description": "The execution metadata of the task."
        },
        "executorDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineTaskExecutorDetailResponse",
          "description": "The detailed execution info."
        },
        "inputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime input artifacts of the task."
        },
        "outputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime output artifacts of the task."
        },
        "parentTaskId": {
          "type": "string",
          "description": "The id of the parent task if the task is within a component scope. Empty if the task is at the root level."
        },
        "pipelineTaskStatus": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineTaskDetailPipelineTaskStatusResponse"
          },
          "description": "A list of task status. This field keeps a record of task status evolving over time."
        },
        "startTime": {
          "type": "string",
          "description": "Task start time."
        },
        "state": {
          "type": "string",
          "description": "State of the task."
        },
        "taskId": {
          "type": "string",
          "description": "The system generated ID of the task."
        },
        "taskName": {
          "type": "string",
          "description": "The user specified name of the task that is defined in pipeline_spec."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "endTime",
        "error",
        "execution",
        "executorDetail",
        "inputs",
        "outputs",
        "parentTaskId",
        "pipelineTaskStatus",
        "startTime",
        "state",
        "taskId",
        "taskName"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineTaskExecutorDetailContainerDetailResponse": {
      "description": "The detail of a container execution. It contains the job names of the lifecycle of a container execution.",
      "properties": {
        "failedMainJobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the previously failed CustomJob for the main container executions. The list includes the all attempts in chronological order."
        },
        "failedPreCachingCheckJobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the previously failed CustomJob for the pre-caching-check container executions. This job will be available if the PipelineJob.pipeline_spec specifies the `pre_caching_check` hook in the lifecycle events. The list includes the all attempts in chronological order."
        },
        "mainJob": {
          "type": "string",
          "description": "The name of the CustomJob for the main container execution."
        },
        "preCachingCheckJob": {
          "type": "string",
          "description": "The name of the CustomJob for the pre-caching-check container execution. This job will be available if the PipelineJob.pipeline_spec specifies the `pre_caching_check` hook in the lifecycle events."
        }
      },
      "type": "object",
      "required": [
        "failedMainJobs",
        "failedPreCachingCheckJobs",
        "mainJob",
        "preCachingCheckJob"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineTaskExecutorDetailCustomJobDetailResponse": {
      "description": "The detailed info for a custom job executor.",
      "properties": {
        "failedJobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the previously failed CustomJob. The list includes the all attempts in chronological order."
        },
        "job": {
          "type": "string",
          "description": "The name of the CustomJob."
        }
      },
      "type": "object",
      "required": [
        "failedJobs",
        "job"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineTaskExecutorDetailResponse": {
      "description": "The runtime detail of a pipeline executor.",
      "properties": {
        "containerDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineTaskExecutorDetailContainerDetailResponse",
          "description": "The detailed info for a container executor."
        },
        "customJobDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineTaskExecutorDetailCustomJobDetailResponse",
          "description": "The detailed info for a custom job executor."
        }
      },
      "type": "object",
      "required": [
        "containerDetail",
        "customJobDetail"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PipelineTemplateMetadataResponse": {
      "description": "Pipeline template metadata if PipelineJob.template_uri is from supported template registry. Currently, the only supported registry is Artifact Registry.",
      "properties": {
        "version": {
          "type": "string",
          "description": "The version_name in artifact registry. Will always be presented in output if the PipelineJob.template_uri is from supported template registry. Format is \"sha256:abcdef123456...\"."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1Port": {
      "description": "Represents a network port in a container.",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "The number of the port to expose on the pod's IP address. Must be a valid port number, between 1 and 65535 inclusive."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PortResponse": {
      "description": "Represents a network port in a container.",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "The number of the port to expose on the pod's IP address. Must be a valid port number, between 1 and 65535 inclusive."
        }
      },
      "type": "object",
      "required": [
        "containerPort"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PredefinedSplit": {
      "description": "Assigns input data to training, validation, and test sets based on the value of a provided key. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The value of the key (either the label's value or value in the column) must be one of {`training`, `validation`, `test`}, and it defines to which set the given piece of data is assigned. If for a piece of data the key is not present or has an invalid value, that piece is ignored by the pipeline."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PredefinedSplitResponse": {
      "description": "Assigns input data to training, validation, and test sets based on the value of a provided key. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The value of the key (either the label's value or value in the column) must be one of {`training`, `validation`, `test`}, and it defines to which set the given piece of data is assigned. If for a piece of data the key is not present or has an invalid value, that piece is ignored by the pipeline."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PredictRequestResponseLoggingConfig": {
      "description": "Configuration for logging request-response to a BigQuery table.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQueryDestination",
          "description": "BigQuery table for logging. If only given a project, a new dataset will be created with name `logging__` where will be made BigQuery-dataset-name compatible (e.g. most special characters will become underscores). If no table name is given, a new table will be created with name `request_response_logging`"
        },
        "enabled": {
          "type": "boolean",
          "description": "If logging is enabled or not."
        },
        "samplingRate": {
          "type": "number",
          "description": "Percentage of requests to be logged, expressed as a fraction in range(0,1]."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PredictRequestResponseLoggingConfigResponse": {
      "description": "Configuration for logging request-response to a BigQuery table.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BigQueryDestinationResponse",
          "description": "BigQuery table for logging. If only given a project, a new dataset will be created with name `logging__` where will be made BigQuery-dataset-name compatible (e.g. most special characters will become underscores). If no table name is given, a new table will be created with name `request_response_logging`"
        },
        "enabled": {
          "type": "boolean",
          "description": "If logging is enabled or not."
        },
        "samplingRate": {
          "type": "number",
          "description": "Percentage of requests to be logged, expressed as a fraction in range(0,1]."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination",
        "enabled",
        "samplingRate"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PredictSchemata": {
      "description": "Contains the schemata used in Model's predictions and explanations via PredictionService.Predict, PredictionService.Explain and BatchPredictionJob.",
      "properties": {
        "instanceSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the format of a single instance, which are used in PredictRequest.instances, ExplainRequest.instances and BatchPredictionJob.input_config. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "parametersSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the parameters of prediction and explanation via PredictRequest.parameters, ExplainRequest.parameters and BatchPredictionJob.model_parameters. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI, if no parameters are supported, then it is set to an empty string. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "predictionSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the format of a single prediction produced by this Model, which are returned via PredictResponse.predictions, ExplainResponse.explanations, and BatchPredictionJob.output_config. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PredictSchemataResponse": {
      "description": "Contains the schemata used in Model's predictions and explanations via PredictionService.Predict, PredictionService.Explain and BatchPredictionJob.",
      "properties": {
        "instanceSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the format of a single instance, which are used in PredictRequest.instances, ExplainRequest.instances and BatchPredictionJob.input_config. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "parametersSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the parameters of prediction and explanation via PredictRequest.parameters, ExplainRequest.parameters and BatchPredictionJob.model_parameters. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI, if no parameters are supported, then it is set to an empty string. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "predictionSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the format of a single prediction produced by this Model, which are returned via PredictResponse.predictions, ExplainResponse.explanations, and BatchPredictionJob.output_config. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        }
      },
      "type": "object",
      "required": [
        "instanceSchemaUri",
        "parametersSchemaUri",
        "predictionSchemaUri"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1Presets": {
      "description": "Preset configuration for example-based explanations",
      "properties": {
        "modality": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PresetsModality",
          "description": "The modality of the uploaded model, which automatically configures the distance measurement and feature normalization for the underlying example index and queries. If your model does not precisely fit one of these types, it is okay to choose the closest type."
        },
        "query": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PresetsQuery",
          "description": "Preset option controlling parameters for speed-precision trade-off when querying for examples. If omitted, defaults to `PRECISE`."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PresetsModality": {
      "description": "The modality of the uploaded model, which automatically configures the distance measurement and feature normalization for the underlying example index and queries. If your model does not precisely fit one of these types, it is okay to choose the closest type.",
      "type": "string",
      "enum": [
        {
          "name": "ModalityUnspecified",
          "description": "Should not be set. Added as a recommended best practice for enums",
          "value": "MODALITY_UNSPECIFIED"
        },
        {
          "name": "Image",
          "description": "IMAGE modality",
          "value": "IMAGE"
        },
        {
          "name": "Text",
          "description": "TEXT modality",
          "value": "TEXT"
        },
        {
          "name": "Tabular",
          "description": "TABULAR modality",
          "value": "TABULAR"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PresetsQuery": {
      "description": "Preset option controlling parameters for speed-precision trade-off when querying for examples. If omitted, defaults to `PRECISE`.",
      "type": "string",
      "enum": [
        {
          "name": "Precise",
          "description": "More precise neighbors as a trade-off against slower response.",
          "value": "PRECISE"
        },
        {
          "name": "Fast",
          "description": "Faster response as a trade-off against less precise neighbors.",
          "value": "FAST"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PresetsResponse": {
      "description": "Preset configuration for example-based explanations",
      "properties": {
        "modality": {
          "type": "string",
          "description": "The modality of the uploaded model, which automatically configures the distance measurement and feature normalization for the underlying example index and queries. If your model does not precisely fit one of these types, it is okay to choose the closest type."
        },
        "query": {
          "type": "string",
          "description": "Preset option controlling parameters for speed-precision trade-off when querying for examples. If omitted, defaults to `PRECISE`."
        }
      },
      "type": "object",
      "required": [
        "modality",
        "query"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PrivateEndpointsResponse": {
      "description": "PrivateEndpoints proto is used to provide paths for users to send requests privately. To send request via private service access, use predict_http_uri, explain_http_uri or health_http_uri. To send request via private service connect, use service_attachment.",
      "properties": {
        "explainHttpUri": {
          "type": "string",
          "description": "Http(s) path to send explain requests."
        },
        "healthHttpUri": {
          "type": "string",
          "description": "Http(s) path to send health check requests."
        },
        "predictHttpUri": {
          "type": "string",
          "description": "Http(s) path to send prediction requests."
        },
        "serviceAttachment": {
          "type": "string",
          "description": "The name of the service attachment resource. Populated if private service connect is enabled."
        }
      },
      "type": "object",
      "required": [
        "explainHttpUri",
        "healthHttpUri",
        "predictHttpUri",
        "serviceAttachment"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PrivateServiceConnectConfig": {
      "description": "Represents configuration for private service connect.",
      "properties": {
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "If true, expose the IndexEndpoint via private service connect."
        },
        "projectAllowlist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Projects from which the forwarding rule will target the service attachment."
        }
      },
      "type": "object",
      "required": [
        "enablePrivateServiceConnect"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PrivateServiceConnectConfigResponse": {
      "description": "Represents configuration for private service connect.",
      "properties": {
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "If true, expose the IndexEndpoint via private service connect."
        },
        "projectAllowlist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Projects from which the forwarding rule will target the service attachment."
        }
      },
      "type": "object",
      "required": [
        "enablePrivateServiceConnect",
        "projectAllowlist"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1Probe": {
      "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ProbeExecAction",
          "description": "Exec specifies the action to take."
        },
        "periodSeconds": {
          "type": "integer",
          "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Must be less than timeout_seconds. Maps to Kubernetes probe argument 'periodSeconds'."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Must be greater or equal to period_seconds. Maps to Kubernetes probe argument 'timeoutSeconds'."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ProbeExecAction": {
      "description": "ExecAction specifies a command to execute.",
      "properties": {
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ProbeExecActionResponse": {
      "description": "ExecAction specifies a command to execute.",
      "properties": {
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy."
        }
      },
      "type": "object",
      "required": [
        "command"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ProbeResponse": {
      "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ProbeExecActionResponse",
          "description": "Exec specifies the action to take."
        },
        "periodSeconds": {
          "type": "integer",
          "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Must be less than timeout_seconds. Maps to Kubernetes probe argument 'periodSeconds'."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Must be greater or equal to period_seconds. Maps to Kubernetes probe argument 'timeoutSeconds'."
        }
      },
      "type": "object",
      "required": [
        "exec",
        "periodSeconds",
        "timeoutSeconds"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PythonPackageSpec": {
      "description": "The spec of a Python packaged code.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command line arguments to be passed to the Python task."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EnvVar"
          },
          "description": "Environment variables to be passed to the python module. Maximum limit is 100."
        },
        "executorImageUri": {
          "type": "string",
          "description": "The URI of a container image in Artifact Registry that will run the provided Python package. Vertex AI provides a wide range of executor images with pre-installed packages to meet users' various use cases. See the list of [pre-built containers for training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). You must use an image from this list."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Cloud Storage location of the Python package files which are the training program and its dependent packages. The maximum number of package URIs is 100."
        },
        "pythonModule": {
          "type": "string",
          "description": "The Python module name to run after installing the packages."
        }
      },
      "type": "object",
      "required": [
        "executorImageUri",
        "packageUris",
        "pythonModule"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1PythonPackageSpecResponse": {
      "description": "The spec of a Python packaged code.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command line arguments to be passed to the Python task."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EnvVarResponse"
          },
          "description": "Environment variables to be passed to the python module. Maximum limit is 100."
        },
        "executorImageUri": {
          "type": "string",
          "description": "The URI of a container image in Artifact Registry that will run the provided Python package. Vertex AI provides a wide range of executor images with pre-installed packages to meet users' various use cases. See the list of [pre-built containers for training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). You must use an image from this list."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Cloud Storage location of the Python package files which are the training program and its dependent packages. The maximum number of package URIs is 100."
        },
        "pythonModule": {
          "type": "string",
          "description": "The Python module name to run after installing the packages."
        }
      },
      "type": "object",
      "required": [
        "args",
        "env",
        "executorImageUri",
        "packageUris",
        "pythonModule"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ResourcesConsumedResponse": {
      "description": "Statistics information about resource consumption.",
      "properties": {
        "replicaHours": {
          "type": "number",
          "description": "The number of replica hours used. Note that many replicas may run in parallel, and additionally any given work may be queued for some time. Therefore this value is not strictly related to wall time."
        }
      },
      "type": "object",
      "required": [
        "replicaHours"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SampleConfig": {
      "description": "Active learning data sampling config. For every active learning labeling iteration, it will select a batch of data based on the sampling strategy.",
      "properties": {
        "followingBatchSamplePercentage": {
          "type": "integer",
          "description": "The percentage of data needed to be labeled in each following batch (except the first batch)."
        },
        "initialBatchSamplePercentage": {
          "type": "integer",
          "description": "The percentage of data needed to be labeled in the first batch."
        },
        "sampleStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SampleConfigSampleStrategy",
          "description": "Field to choose sampling strategy. Sampling strategy will decide which data should be selected for human labeling in every batch."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SampleConfigResponse": {
      "description": "Active learning data sampling config. For every active learning labeling iteration, it will select a batch of data based on the sampling strategy.",
      "properties": {
        "followingBatchSamplePercentage": {
          "type": "integer",
          "description": "The percentage of data needed to be labeled in each following batch (except the first batch)."
        },
        "initialBatchSamplePercentage": {
          "type": "integer",
          "description": "The percentage of data needed to be labeled in the first batch."
        },
        "sampleStrategy": {
          "type": "string",
          "description": "Field to choose sampling strategy. Sampling strategy will decide which data should be selected for human labeling in every batch."
        }
      },
      "type": "object",
      "required": [
        "followingBatchSamplePercentage",
        "initialBatchSamplePercentage",
        "sampleStrategy"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SampleConfigSampleStrategy": {
      "description": "Field to choose sampling strategy. Sampling strategy will decide which data should be selected for human labeling in every batch.",
      "type": "string",
      "enum": [
        {
          "name": "SampleStrategyUnspecified",
          "description": "Default will be treated as UNCERTAINTY.",
          "value": "SAMPLE_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "Uncertainty",
          "description": "Sample the most uncertain data to label.",
          "value": "UNCERTAINTY"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SampledShapleyAttribution": {
      "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features.",
      "properties": {
        "pathCount": {
          "type": "integer",
          "description": "The number of feature permutations to consider when approximating the Shapley values. Valid range of its value is [1, 50], inclusively."
        }
      },
      "type": "object",
      "required": [
        "pathCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SampledShapleyAttributionResponse": {
      "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features.",
      "properties": {
        "pathCount": {
          "type": "integer",
          "description": "The number of feature permutations to consider when approximating the Shapley values. Valid range of its value is [1, 50], inclusively."
        }
      },
      "type": "object",
      "required": [
        "pathCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SamplingStrategy": {
      "description": "Sampling Strategy for logging, can be for both training and prediction dataset.",
      "properties": {
        "randomSampleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SamplingStrategyRandomSampleConfig",
          "description": "Random sample config. Will support more sampling strategies later."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SamplingStrategyRandomSampleConfig": {
      "description": "Requests are randomly selected.",
      "properties": {
        "sampleRate": {
          "type": "number",
          "description": "Sample rate (0, 1]"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SamplingStrategyRandomSampleConfigResponse": {
      "description": "Requests are randomly selected.",
      "properties": {
        "sampleRate": {
          "type": "number",
          "description": "Sample rate (0, 1]"
        }
      },
      "type": "object",
      "required": [
        "sampleRate"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SamplingStrategyResponse": {
      "description": "Sampling Strategy for logging, can be for both training and prediction dataset.",
      "properties": {
        "randomSampleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SamplingStrategyRandomSampleConfigResponse",
          "description": "Random sample config. Will support more sampling strategies later."
        }
      },
      "type": "object",
      "required": [
        "randomSampleConfig"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SavedQuery": {
      "description": "A SavedQuery is a view of the dataset. It references a subset of annotations by problem type and filters.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the SavedQuery. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write update. If not set, a blind \"overwrite\" update happens."
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Some additional information about the SavedQuery."
        },
        "problemType": {
          "type": "string",
          "description": "Problem type of the SavedQuery. Allowed values: * IMAGE_CLASSIFICATION_SINGLE_LABEL * IMAGE_CLASSIFICATION_MULTI_LABEL * IMAGE_BOUNDING_POLY * IMAGE_BOUNDING_BOX * TEXT_CLASSIFICATION_SINGLE_LABEL * TEXT_CLASSIFICATION_MULTI_LABEL * TEXT_EXTRACTION * TEXT_SENTIMENT * VIDEO_CLASSIFICATION * VIDEO_OBJECT_TRACKING"
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "problemType"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SavedQueryResponse": {
      "description": "A SavedQuery is a view of the dataset. It references a subset of annotations by problem type and filters.",
      "properties": {
        "annotationFilter": {
          "type": "string",
          "description": "Filters on the Annotations in the dataset."
        },
        "annotationSpecCount": {
          "type": "integer",
          "description": "Number of AnnotationSpecs in the context of the SavedQuery."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this SavedQuery was created."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the SavedQuery. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write update. If not set, a blind \"overwrite\" update happens."
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Some additional information about the SavedQuery."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the SavedQuery."
        },
        "problemType": {
          "type": "string",
          "description": "Problem type of the SavedQuery. Allowed values: * IMAGE_CLASSIFICATION_SINGLE_LABEL * IMAGE_CLASSIFICATION_MULTI_LABEL * IMAGE_BOUNDING_POLY * IMAGE_BOUNDING_BOX * TEXT_CLASSIFICATION_SINGLE_LABEL * TEXT_CLASSIFICATION_MULTI_LABEL * TEXT_EXTRACTION * TEXT_SENTIMENT * VIDEO_CLASSIFICATION * VIDEO_OBJECT_TRACKING"
        },
        "supportAutomlTraining": {
          "type": "boolean",
          "description": "If the Annotations belonging to the SavedQuery can be used for AutoML training."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when SavedQuery was last updated."
        }
      },
      "type": "object",
      "required": [
        "annotationFilter",
        "annotationSpecCount",
        "createTime",
        "displayName",
        "etag",
        "metadata",
        "name",
        "problemType",
        "supportAutomlTraining",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ScheduleRunResponseResponse": {
      "description": "Status of a scheduled run.",
      "properties": {
        "runResponse": {
          "type": "string",
          "description": "The response of the scheduled run."
        },
        "scheduledRunTime": {
          "type": "string",
          "description": "The scheduled run time based on the user-specified schedule."
        }
      },
      "type": "object",
      "required": [
        "runResponse",
        "scheduledRunTime"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1Scheduling": {
      "description": "All parameters related to queuing and scheduling of custom jobs.",
      "properties": {
        "disableRetries": {
          "type": "boolean",
          "description": "Optional. Indicates if the job should retry for internal errors after the job starts running. If true, overrides `Scheduling.restart_job_on_worker_restart` to false."
        },
        "restartJobOnWorkerRestart": {
          "type": "boolean",
          "description": "Restarts the entire CustomJob if a worker gets restarted. This feature can be used by distributed training jobs that are not resilient to workers leaving and joining a job."
        },
        "timeout": {
          "type": "string",
          "description": "The maximum job running time. The default is 7 days."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SchedulingResponse": {
      "description": "All parameters related to queuing and scheduling of custom jobs.",
      "properties": {
        "disableRetries": {
          "type": "boolean",
          "description": "Optional. Indicates if the job should retry for internal errors after the job starts running. If true, overrides `Scheduling.restart_job_on_worker_restart` to false."
        },
        "restartJobOnWorkerRestart": {
          "type": "boolean",
          "description": "Restarts the entire CustomJob if a worker gets restarted. This feature can be used by distributed training jobs that are not resilient to workers leaving and joining a job."
        },
        "timeout": {
          "type": "string",
          "description": "The maximum job running time. The default is 7 days."
        }
      },
      "type": "object",
      "required": [
        "disableRetries",
        "restartJobOnWorkerRestart",
        "timeout"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SmoothGradConfig": {
      "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf",
      "properties": {
        "featureNoiseSigma": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureNoiseSigma",
          "description": "This is similar to noise_sigma, but provides additional flexibility. A separate noise sigma can be provided for each feature, which is useful if their distributions are different. No noise is added to features that are not set. If this field is unset, noise_sigma will be used for all features."
        },
        "noiseSigma": {
          "type": "number",
          "description": "This is a single float value and will be used to add noise to all the features. Use this field when all features are normalized to have the same distribution: scale to range [0, 1], [-1, 1] or z-scoring, where features are normalized to have 0-mean and 1-variance. Learn more about [normalization](https://developers.google.com/machine-learning/data-prep/transform/normalization). For best results the recommended value is about 10% - 20% of the standard deviation of the input feature. Refer to section 3.2 of the SmoothGrad paper: https://arxiv.org/pdf/1706.03825.pdf. Defaults to 0.1. If the distribution is different per feature, set feature_noise_sigma instead for each feature."
        },
        "noisySampleCount": {
          "type": "integer",
          "description": "The number of gradient samples to use for approximation. The higher this number, the more accurate the gradient is, but the runtime complexity increases by this factor as well. Valid range of its value is [1, 50]. Defaults to 3."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1SmoothGradConfigResponse": {
      "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf",
      "properties": {
        "featureNoiseSigma": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureNoiseSigmaResponse",
          "description": "This is similar to noise_sigma, but provides additional flexibility. A separate noise sigma can be provided for each feature, which is useful if their distributions are different. No noise is added to features that are not set. If this field is unset, noise_sigma will be used for all features."
        },
        "noiseSigma": {
          "type": "number",
          "description": "This is a single float value and will be used to add noise to all the features. Use this field when all features are normalized to have the same distribution: scale to range [0, 1], [-1, 1] or z-scoring, where features are normalized to have 0-mean and 1-variance. Learn more about [normalization](https://developers.google.com/machine-learning/data-prep/transform/normalization). For best results the recommended value is about 10% - 20% of the standard deviation of the input feature. Refer to section 3.2 of the SmoothGrad paper: https://arxiv.org/pdf/1706.03825.pdf. Defaults to 0.1. If the distribution is different per feature, set feature_noise_sigma instead for each feature."
        },
        "noisySampleCount": {
          "type": "integer",
          "description": "The number of gradient samples to use for approximation. The higher this number, the more accurate the gradient is, but the runtime complexity increases by this factor as well. Valid range of its value is [1, 50]. Defaults to 3."
        }
      },
      "type": "object",
      "required": [
        "featureNoiseSigma",
        "noiseSigma",
        "noisySampleCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StratifiedSplit": {
      "description": "Assigns input data to the training, validation, and test sets so that the distribution of values found in the categorical column (as specified by the `key` field) is mirrored within each split. The fraction values determine the relative sizes of the splits. For example, if the specified column has three values, with 50% of the rows having value \"A\", 25% value \"B\", and 25% value \"C\", and the split fractions are specified as 80/10/10, then the training set will constitute 80% of the training data, with about 50% of the training set rows having the value \"A\" for the specified column, about 25% having the value \"B\", and about 25% having the value \"C\". Only the top 500 occurring values are used; any values not in the top 500 values are randomly assigned to a split. If less than three rows contain a specific value, those rows are randomly assigned. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The key provided must be for a categorical column."
        },
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StratifiedSplitResponse": {
      "description": "Assigns input data to the training, validation, and test sets so that the distribution of values found in the categorical column (as specified by the `key` field) is mirrored within each split. The fraction values determine the relative sizes of the splits. For example, if the specified column has three values, with 50% of the rows having value \"A\", 25% value \"B\", and 25% value \"C\", and the split fractions are specified as 80/10/10, then the training set will constitute 80% of the training data, with about 50% of the training set rows having the value \"A\" for the specified column, about 25% having the value \"B\", and about 25% having the value \"C\". Only the top 500 occurring values are used; any values not in the top 500 values are randomly assigned to a split. If less than three rows contain a specific value, those rows are randomly assigned. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The key provided must be for a categorical column."
        },
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "key",
        "testFraction",
        "trainingFraction",
        "validationFraction"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpec": {
      "description": "Represents specification of a Study.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecAlgorithm",
          "description": "The search algorithm specified for the Study."
        },
        "convexAutomatedStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecConvexAutomatedStoppingSpec",
          "description": "The automated early stopping spec using convex stopping rule."
        },
        "decayCurveStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecDecayCurveAutomatedStoppingSpec",
          "description": "The automated early stopping spec using decay curve rule."
        },
        "measurementSelectionType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecMeasurementSelectionType",
          "description": "Describe which measurement selection type will be used"
        },
        "medianAutomatedStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecMedianAutomatedStoppingSpec",
          "description": "The automated early stopping spec using median rule."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecMetricSpec"
          },
          "description": "Metric specs for the Study."
        },
        "observationNoise": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecObservationNoise",
          "description": "The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpec"
          },
          "description": "The set of parameters to tune."
        },
        "studyStoppingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecStudyStoppingConfig",
          "description": "Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition."
        }
      },
      "type": "object",
      "required": [
        "metrics",
        "parameters"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecAlgorithm": {
      "description": "The search algorithm specified for the Study.",
      "type": "string",
      "enum": [
        {
          "name": "AlgorithmUnspecified",
          "description": "The default algorithm used by Vertex AI for [hyperparameter tuning](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview) and [Vertex AI Vizier](https://cloud.google.com/vertex-ai/docs/vizier).",
          "value": "ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "GridSearch",
          "description": "Simple grid search within the feasible space. To use grid search, all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`.",
          "value": "GRID_SEARCH"
        },
        {
          "name": "RandomSearch",
          "description": "Simple random search within the feasible space.",
          "value": "RANDOM_SEARCH"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecConvexAutomatedStoppingSpec": {
      "description": "Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by min_measurement_count), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at max_num_steps according to the slope of the incomplete objective value curve. No prediction can be made if the curve is completely flat. If the overestimation is worse than the best objective value of the completed trials, this pending trial will be early-stopped, but a last measurement will be added to the pending trial with max_num_steps and predicted objective value from the autoregression model.",
      "properties": {
        "learningRateParameterName": {
          "type": "string",
          "description": "The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial."
        },
        "maxStepCount": {
          "type": "string",
          "description": "Steps used in predicting the final objective for early stopped trials. In general, it's set to be the same as the defined steps in training / tuning. If not defined, it will learn it from the completed trials. When use_steps is false, this field is set to the maximum elapsed seconds."
        },
        "minMeasurementCount": {
          "type": "string",
          "description": "The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than min_measurement_count+1 completed trials or pending trials with less than min_measurement_count measurements. If not defined, the default value is 5."
        },
        "minStepCount": {
          "type": "string",
          "description": "Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count > min_step_count won't be considered for early stopping. It's ok to set it to 0, and a trial can be early stopped at any stage. By default, min_step_count is set to be one-tenth of the max_step_count. When use_elapsed_duration is true, this field is set to the minimum elapsed seconds."
        },
        "updateAllStoppedTrials": {
          "type": "boolean",
          "description": "ConvexAutomatedStoppingSpec by default only updates the trials that needs to be early stopped using a newly trained auto-regressive model. When this flag is set to True, all stopped trials from the beginning are potentially updated in terms of their `final_measurement`. Also, note that the training logic of autoregressive models is different in this case. Enabling this option has shown better results and this may be the default option in the future."
        },
        "useElapsedDuration": {
          "type": "boolean",
          "description": "This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_elapsed_duration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecConvexAutomatedStoppingSpecResponse": {
      "description": "Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by min_measurement_count), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at max_num_steps according to the slope of the incomplete objective value curve. No prediction can be made if the curve is completely flat. If the overestimation is worse than the best objective value of the completed trials, this pending trial will be early-stopped, but a last measurement will be added to the pending trial with max_num_steps and predicted objective value from the autoregression model.",
      "properties": {
        "learningRateParameterName": {
          "type": "string",
          "description": "The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial."
        },
        "maxStepCount": {
          "type": "string",
          "description": "Steps used in predicting the final objective for early stopped trials. In general, it's set to be the same as the defined steps in training / tuning. If not defined, it will learn it from the completed trials. When use_steps is false, this field is set to the maximum elapsed seconds."
        },
        "minMeasurementCount": {
          "type": "string",
          "description": "The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than min_measurement_count+1 completed trials or pending trials with less than min_measurement_count measurements. If not defined, the default value is 5."
        },
        "minStepCount": {
          "type": "string",
          "description": "Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count > min_step_count won't be considered for early stopping. It's ok to set it to 0, and a trial can be early stopped at any stage. By default, min_step_count is set to be one-tenth of the max_step_count. When use_elapsed_duration is true, this field is set to the minimum elapsed seconds."
        },
        "updateAllStoppedTrials": {
          "type": "boolean",
          "description": "ConvexAutomatedStoppingSpec by default only updates the trials that needs to be early stopped using a newly trained auto-regressive model. When this flag is set to True, all stopped trials from the beginning are potentially updated in terms of their `final_measurement`. Also, note that the training logic of autoregressive models is different in this case. Enabling this option has shown better results and this may be the default option in the future."
        },
        "useElapsedDuration": {
          "type": "boolean",
          "description": "This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_elapsed_duration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds."
        }
      },
      "type": "object",
      "required": [
        "learningRateParameterName",
        "maxStepCount",
        "minMeasurementCount",
        "minStepCount",
        "updateAllStoppedTrials",
        "useElapsedDuration"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecDecayCurveAutomatedStoppingSpec": {
      "description": "The decay curve automated stopping rule builds a Gaussian Process Regressor to predict the final objective value of a Trial based on the already completed Trials and the intermediate measurements of the current Trial. Early stopping is requested for the current Trial if there is very low probability to exceed the optimal value found so far.",
      "properties": {
        "useElapsedDuration": {
          "type": "boolean",
          "description": "True if Measurement.elapsed_duration is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecDecayCurveAutomatedStoppingSpecResponse": {
      "description": "The decay curve automated stopping rule builds a Gaussian Process Regressor to predict the final objective value of a Trial based on the already completed Trials and the intermediate measurements of the current Trial. Early stopping is requested for the current Trial if there is very low probability to exceed the optimal value found so far.",
      "properties": {
        "useElapsedDuration": {
          "type": "boolean",
          "description": "True if Measurement.elapsed_duration is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis."
        }
      },
      "type": "object",
      "required": [
        "useElapsedDuration"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecMeasurementSelectionType": {
      "description": "Describe which measurement selection type will be used",
      "type": "string",
      "enum": [
        {
          "name": "MeasurementSelectionTypeUnspecified",
          "description": "Will be treated as LAST_MEASUREMENT.",
          "value": "MEASUREMENT_SELECTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "LastMeasurement",
          "description": "Use the last measurement reported.",
          "value": "LAST_MEASUREMENT"
        },
        {
          "name": "BestMeasurement",
          "description": "Use the best measurement reported.",
          "value": "BEST_MEASUREMENT"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecMedianAutomatedStoppingSpec": {
      "description": "The median automated stopping rule stops a pending Trial if the Trial's best objective_value is strictly below the median 'performance' of all completed Trials reported up to the Trial's last measurement. Currently, 'performance' refers to the running average of the objective values reported by the Trial in each measurement.",
      "properties": {
        "useElapsedDuration": {
          "type": "boolean",
          "description": "True if median automated stopping rule applies on Measurement.elapsed_duration. It means that elapsed_duration field of latest measurement of current Trial is used to compute median objective value for each completed Trials."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecMedianAutomatedStoppingSpecResponse": {
      "description": "The median automated stopping rule stops a pending Trial if the Trial's best objective_value is strictly below the median 'performance' of all completed Trials reported up to the Trial's last measurement. Currently, 'performance' refers to the running average of the objective values reported by the Trial in each measurement.",
      "properties": {
        "useElapsedDuration": {
          "type": "boolean",
          "description": "True if median automated stopping rule applies on Measurement.elapsed_duration. It means that elapsed_duration field of latest measurement of current Trial is used to compute median objective value for each completed Trials."
        }
      },
      "type": "object",
      "required": [
        "useElapsedDuration"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecMetricSpec": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecMetricSpecGoal",
          "description": "The optimization goal of the metric."
        },
        "metricId": {
          "type": "string",
          "description": "The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs."
        },
        "safetyConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecMetricSpecSafetyMetricConfig",
          "description": "Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metricId"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecMetricSpecGoal": {
      "description": "Required. The optimization goal of the metric.",
      "type": "string",
      "enum": [
        {
          "name": "GoalTypeUnspecified",
          "description": "Goal Type will default to maximize.",
          "value": "GOAL_TYPE_UNSPECIFIED"
        },
        {
          "name": "Maximize",
          "description": "Maximize the goal metric.",
          "value": "MAXIMIZE"
        },
        {
          "name": "Minimize",
          "description": "Minimize the goal metric.",
          "value": "MINIMIZE"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecMetricSpecResponse": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "type": "string",
          "description": "The optimization goal of the metric."
        },
        "metricId": {
          "type": "string",
          "description": "The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs."
        },
        "safetyConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecMetricSpecSafetyMetricConfigResponse",
          "description": "Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metricId",
        "safetyConfig"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecMetricSpecSafetyMetricConfig": {
      "description": "Used in safe optimization to specify threshold levels and risk tolerance.",
      "properties": {
        "desiredMinSafeTrialsFraction": {
          "type": "number",
          "description": "Desired minimum fraction of safe trials (over total number of trials) that should be targeted by the algorithm at any time during the study (best effort). This should be between 0.0 and 1.0 and a value of 0.0 means that there is no minimum and an algorithm proceeds without targeting any specific fraction. A value of 1.0 means that the algorithm attempts to only Suggest safe Trials."
        },
        "safetyThreshold": {
          "type": "number",
          "description": "Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecMetricSpecSafetyMetricConfigResponse": {
      "description": "Used in safe optimization to specify threshold levels and risk tolerance.",
      "properties": {
        "desiredMinSafeTrialsFraction": {
          "type": "number",
          "description": "Desired minimum fraction of safe trials (over total number of trials) that should be targeted by the algorithm at any time during the study (best effort). This should be between 0.0 and 1.0 and a value of 0.0 means that there is no minimum and an algorithm proceeds without targeting any specific fraction. A value of 1.0 means that the algorithm attempts to only Suggest safe Trials."
        },
        "safetyThreshold": {
          "type": "number",
          "description": "Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used."
        }
      },
      "type": "object",
      "required": [
        "desiredMinSafeTrialsFraction",
        "safetyThreshold"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecObservationNoise": {
      "description": "The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.",
      "type": "string",
      "enum": [
        {
          "name": "ObservationNoiseUnspecified",
          "description": "The default noise level chosen by Vertex AI.",
          "value": "OBSERVATION_NOISE_UNSPECIFIED"
        },
        {
          "name": "Low",
          "description": "Vertex AI assumes that the objective function is (nearly) perfectly reproducible, and will never repeat the same Trial parameters.",
          "value": "LOW"
        },
        {
          "name": "High",
          "description": "Vertex AI will estimate the amount of noise in metric evaluations, it may repeat the same Trial parameters more than once.",
          "value": "HIGH"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpec": {
      "description": "Represents a single parameter to optimize.",
      "properties": {
        "categoricalValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecCategoricalValueSpec",
          "description": "The value spec for a 'CATEGORICAL' parameter."
        },
        "conditionalParameterSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpec"
          },
          "description": "A conditional parameter node is active if the parameter's value matches the conditional node's parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition."
        },
        "discreteValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecDiscreteValueSpec",
          "description": "The value spec for a 'DISCRETE' parameter."
        },
        "doubleValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecDoubleValueSpec",
          "description": "The value spec for a 'DOUBLE' parameter."
        },
        "integerValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecIntegerValueSpec",
          "description": "The value spec for an 'INTEGER' parameter."
        },
        "parameterId": {
          "type": "string",
          "description": "The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs."
        },
        "scaleType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecScaleType",
          "description": "How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters."
        }
      },
      "type": "object",
      "required": [
        "parameterId"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecCategoricalValueSpec": {
      "description": "Value specification for a parameter in `CATEGORICAL` type.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "A default value for a `CATEGORICAL` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of possible categories."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecCategoricalValueSpecResponse": {
      "description": "Value specification for a parameter in `CATEGORICAL` type.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "A default value for a `CATEGORICAL` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of possible categories."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpec": {
      "description": "Represents a parameter spec with condition from its parent parameter.",
      "properties": {
        "parameterSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpec",
          "description": "The spec for a conditional parameter."
        },
        "parentCategoricalValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecCategoricalValueCondition",
          "description": "The spec for matching values from a parent parameter of `CATEGORICAL` type."
        },
        "parentDiscreteValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecDiscreteValueCondition",
          "description": "The spec for matching values from a parent parameter of `DISCRETE` type."
        },
        "parentIntValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecIntValueCondition",
          "description": "The spec for matching values from a parent parameter of `INTEGER` type."
        }
      },
      "type": "object",
      "required": [
        "parameterSpec"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecCategoricalValueCondition": {
      "description": "Represents the spec to match categorical values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter of 'CATEGORICAL' type. All values must exist in `categorical_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecCategoricalValueConditionResponse": {
      "description": "Represents the spec to match categorical values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter of 'CATEGORICAL' type. All values must exist in `categorical_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecDiscreteValueCondition": {
      "description": "Represents the spec to match discrete values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Matches values of the parent parameter of 'DISCRETE' type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecDiscreteValueConditionResponse": {
      "description": "Represents the spec to match discrete values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Matches values of the parent parameter of 'DISCRETE' type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecIntValueCondition": {
      "description": "Represents the spec to match integer values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter of 'INTEGER' type. All values must lie in `integer_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecIntValueConditionResponse": {
      "description": "Represents the spec to match integer values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter of 'INTEGER' type. All values must lie in `integer_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecResponse": {
      "description": "Represents a parameter spec with condition from its parent parameter.",
      "properties": {
        "parameterSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecResponse",
          "description": "The spec for a conditional parameter."
        },
        "parentCategoricalValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecCategoricalValueConditionResponse",
          "description": "The spec for matching values from a parent parameter of `CATEGORICAL` type."
        },
        "parentDiscreteValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecDiscreteValueConditionResponse",
          "description": "The spec for matching values from a parent parameter of `DISCRETE` type."
        },
        "parentIntValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecIntValueConditionResponse",
          "description": "The spec for matching values from a parent parameter of `INTEGER` type."
        }
      },
      "type": "object",
      "required": [
        "parameterSpec",
        "parentCategoricalValues",
        "parentDiscreteValues",
        "parentIntValues"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecDiscreteValueSpec": {
      "description": "Value specification for a parameter in `DISCRETE` type.",
      "properties": {
        "defaultValue": {
          "type": "number",
          "description": "A default value for a `DISCRETE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. It automatically rounds to the nearest feasible discrete point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "A list of possible values. The list should be in increasing order and at least 1e-10 apart. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecDiscreteValueSpecResponse": {
      "description": "Value specification for a parameter in `DISCRETE` type.",
      "properties": {
        "defaultValue": {
          "type": "number",
          "description": "A default value for a `DISCRETE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. It automatically rounds to the nearest feasible discrete point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "A list of possible values. The list should be in increasing order and at least 1e-10 apart. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "values"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecDoubleValueSpec": {
      "description": "Value specification for a parameter in `DOUBLE` type.",
      "properties": {
        "defaultValue": {
          "type": "number",
          "description": "A default value for a `DOUBLE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "maxValue": {
          "type": "number",
          "description": "Inclusive maximum value of the parameter."
        },
        "minValue": {
          "type": "number",
          "description": "Inclusive minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecDoubleValueSpecResponse": {
      "description": "Value specification for a parameter in `DOUBLE` type.",
      "properties": {
        "defaultValue": {
          "type": "number",
          "description": "A default value for a `DOUBLE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "maxValue": {
          "type": "number",
          "description": "Inclusive maximum value of the parameter."
        },
        "minValue": {
          "type": "number",
          "description": "Inclusive minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "maxValue",
        "minValue"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecIntegerValueSpec": {
      "description": "Value specification for a parameter in `INTEGER` type.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "A default value for an `INTEGER` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "maxValue": {
          "type": "string",
          "description": "Inclusive maximum value of the parameter."
        },
        "minValue": {
          "type": "string",
          "description": "Inclusive minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecIntegerValueSpecResponse": {
      "description": "Value specification for a parameter in `INTEGER` type.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "A default value for an `INTEGER` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "maxValue": {
          "type": "string",
          "description": "Inclusive maximum value of the parameter."
        },
        "minValue": {
          "type": "string",
          "description": "Inclusive minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "maxValue",
        "minValue"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecResponse": {
      "description": "Represents a single parameter to optimize.",
      "properties": {
        "categoricalValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecCategoricalValueSpecResponse",
          "description": "The value spec for a 'CATEGORICAL' parameter."
        },
        "conditionalParameterSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecResponse"
          },
          "description": "A conditional parameter node is active if the parameter's value matches the conditional node's parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition."
        },
        "discreteValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecDiscreteValueSpecResponse",
          "description": "The value spec for a 'DISCRETE' parameter."
        },
        "doubleValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecDoubleValueSpecResponse",
          "description": "The value spec for a 'DOUBLE' parameter."
        },
        "integerValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecIntegerValueSpecResponse",
          "description": "The value spec for an 'INTEGER' parameter."
        },
        "parameterId": {
          "type": "string",
          "description": "The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs."
        },
        "scaleType": {
          "type": "string",
          "description": "How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters."
        }
      },
      "type": "object",
      "required": [
        "categoricalValueSpec",
        "conditionalParameterSpecs",
        "discreteValueSpec",
        "doubleValueSpec",
        "integerValueSpec",
        "parameterId",
        "scaleType"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecParameterSpecScaleType": {
      "description": "How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters.",
      "type": "string",
      "enum": [
        {
          "name": "ScaleTypeUnspecified",
          "description": "By default, no scaling is applied.",
          "value": "SCALE_TYPE_UNSPECIFIED"
        },
        {
          "name": "UnitLinearScale",
          "description": "Scales the feasible space to (0, 1) linearly.",
          "value": "UNIT_LINEAR_SCALE"
        },
        {
          "name": "UnitLogScale",
          "description": "Scales the feasible space logarithmically to (0, 1). The entire feasible space must be strictly positive.",
          "value": "UNIT_LOG_SCALE"
        },
        {
          "name": "UnitReverseLogScale",
          "description": "Scales the feasible space \"reverse\" logarithmically to (0, 1). The result is that values close to the top of the feasible space are spread out more than points near the bottom. The entire feasible space must be strictly positive.",
          "value": "UNIT_REVERSE_LOG_SCALE"
        }
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecResponse": {
      "description": "Represents specification of a Study.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The search algorithm specified for the Study."
        },
        "convexAutomatedStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecConvexAutomatedStoppingSpecResponse",
          "description": "The automated early stopping spec using convex stopping rule."
        },
        "decayCurveStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecDecayCurveAutomatedStoppingSpecResponse",
          "description": "The automated early stopping spec using decay curve rule."
        },
        "measurementSelectionType": {
          "type": "string",
          "description": "Describe which measurement selection type will be used"
        },
        "medianAutomatedStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecMedianAutomatedStoppingSpecResponse",
          "description": "The automated early stopping spec using median rule."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecMetricSpecResponse"
          },
          "description": "Metric specs for the Study."
        },
        "observationNoise": {
          "type": "string",
          "description": "The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecParameterSpecResponse"
          },
          "description": "The set of parameters to tune."
        },
        "studyStoppingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecStudyStoppingConfigResponse",
          "description": "Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "convexAutomatedStoppingSpec",
        "decayCurveStoppingSpec",
        "measurementSelectionType",
        "medianAutomatedStoppingSpec",
        "metrics",
        "observationNoise",
        "parameters",
        "studyStoppingConfig"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecStudyStoppingConfig": {
      "description": "The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection.",
      "properties": {
        "maxDurationNoProgress": {
          "type": "string",
          "description": "If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies."
        },
        "maxNumTrials": {
          "type": "integer",
          "description": "If there are more than this many trials, stop the study."
        },
        "maxNumTrialsNoProgress": {
          "type": "integer",
          "description": "If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies."
        },
        "maximumRuntimeConstraint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudyTimeConstraint",
          "description": "If the specified time or duration has passed, stop the study."
        },
        "minNumTrials": {
          "type": "integer",
          "description": "If there are fewer than this many COMPLETED trials, do not stop the study."
        },
        "minimumRuntimeConstraint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudyTimeConstraint",
          "description": "Each \"stopping rule\" in this proto specifies an \"if\" condition. Before Vizier would generate a new suggestion, it first checks each specified stopping rule, from top to bottom in this list. Note that the first few rules (e.g. minimum_runtime_constraint, min_num_trials) will prevent other stopping rules from being evaluated until they are met. For example, setting `min_num_trials=5` and `always_stop_after= 1 hour` means that the Study will ONLY stop after it has 5 COMPLETED trials, even if more than an hour has passed since its creation. It follows the first applicable rule (whose \"if\" condition is satisfied) to make a stopping decision. If none of the specified rules are applicable, then Vizier decides that the study should not stop. If Vizier decides that the study should stop, the study enters STOPPING state (or STOPPING_ASAP if should_stop_asap = true). IMPORTANT: The automatic study state transition happens precisely as described above; that is, deleting trials or updating StudyConfig NEVER automatically moves the study state back to ACTIVE. If you want to _resume_ a Study that was stopped, 1) change the stopping conditions if necessary, 2) activate the study, and then 3) ask for suggestions. If the specified time or duration has not passed, do not stop the study."
        },
        "shouldStopAsap": {
          "type": "boolean",
          "description": "If true, a Study enters STOPPING_ASAP whenever it would normally enters STOPPING state. The bottom line is: set to true if you want to interrupt on-going evaluations of Trials as soon as the study stopping condition is met. (Please see Study.State documentation for the source of truth)."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudySpecStudyStoppingConfigResponse": {
      "description": "The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection.",
      "properties": {
        "maxDurationNoProgress": {
          "type": "string",
          "description": "If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies."
        },
        "maxNumTrials": {
          "type": "integer",
          "description": "If there are more than this many trials, stop the study."
        },
        "maxNumTrialsNoProgress": {
          "type": "integer",
          "description": "If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies."
        },
        "maximumRuntimeConstraint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudyTimeConstraintResponse",
          "description": "If the specified time or duration has passed, stop the study."
        },
        "minNumTrials": {
          "type": "integer",
          "description": "If there are fewer than this many COMPLETED trials, do not stop the study."
        },
        "minimumRuntimeConstraint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudyTimeConstraintResponse",
          "description": "Each \"stopping rule\" in this proto specifies an \"if\" condition. Before Vizier would generate a new suggestion, it first checks each specified stopping rule, from top to bottom in this list. Note that the first few rules (e.g. minimum_runtime_constraint, min_num_trials) will prevent other stopping rules from being evaluated until they are met. For example, setting `min_num_trials=5` and `always_stop_after= 1 hour` means that the Study will ONLY stop after it has 5 COMPLETED trials, even if more than an hour has passed since its creation. It follows the first applicable rule (whose \"if\" condition is satisfied) to make a stopping decision. If none of the specified rules are applicable, then Vizier decides that the study should not stop. If Vizier decides that the study should stop, the study enters STOPPING state (or STOPPING_ASAP if should_stop_asap = true). IMPORTANT: The automatic study state transition happens precisely as described above; that is, deleting trials or updating StudyConfig NEVER automatically moves the study state back to ACTIVE. If you want to _resume_ a Study that was stopped, 1) change the stopping conditions if necessary, 2) activate the study, and then 3) ask for suggestions. If the specified time or duration has not passed, do not stop the study."
        },
        "shouldStopAsap": {
          "type": "boolean",
          "description": "If true, a Study enters STOPPING_ASAP whenever it would normally enters STOPPING state. The bottom line is: set to true if you want to interrupt on-going evaluations of Trials as soon as the study stopping condition is met. (Please see Study.State documentation for the source of truth)."
        }
      },
      "type": "object",
      "required": [
        "maxDurationNoProgress",
        "maxNumTrials",
        "maxNumTrialsNoProgress",
        "maximumRuntimeConstraint",
        "minNumTrials",
        "minimumRuntimeConstraint",
        "shouldStopAsap"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudyTimeConstraint": {
      "description": "Time-based Constraint for Study",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Compares the wallclock time to this time. Must use UTC timezone."
        },
        "maxDuration": {
          "type": "string",
          "description": "Counts the wallclock time passed since the creation of this Study."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1StudyTimeConstraintResponse": {
      "description": "Time-based Constraint for Study",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Compares the wallclock time to this time. Must use UTC timezone."
        },
        "maxDuration": {
          "type": "string",
          "description": "Counts the wallclock time passed since the creation of this Study."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "maxDuration"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1TensorboardTimeSeriesMetadataResponse": {
      "description": "Describes metadata for a TensorboardTimeSeries.",
      "properties": {
        "maxBlobSequenceLength": {
          "type": "string",
          "description": "The largest blob sequence length (number of blobs) of all data points in this time series, if its ValueType is BLOB_SEQUENCE."
        },
        "maxStep": {
          "type": "string",
          "description": "Max step index of all data points within a TensorboardTimeSeries."
        },
        "maxWallTime": {
          "type": "string",
          "description": "Max wall clock timestamp of all data points within a TensorboardTimeSeries."
        }
      },
      "type": "object",
      "required": [
        "maxBlobSequenceLength",
        "maxStep",
        "maxWallTime"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ThresholdConfig": {
      "description": "The config for feature monitoring threshold.",
      "properties": {
        "value": {
          "type": "number",
          "description": "Specify a threshold value that can trigger the alert. If this threshold config is for feature distribution distance: 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence. Each feature must have a non-zero threshold if they need to be monitored. Otherwise no alert will be triggered for that feature."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1ThresholdConfigResponse": {
      "description": "The config for feature monitoring threshold.",
      "properties": {
        "value": {
          "type": "number",
          "description": "Specify a threshold value that can trigger the alert. If this threshold config is for feature distribution distance: 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence. Each feature must have a non-zero threshold if they need to be monitored. Otherwise no alert will be triggered for that feature."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1TimestampSplit": {
      "description": "Assigns input data to training, validation, and test sets based on a provided timestamps. The youngest data pieces are assigned to training set, next to validation set, and the oldest to the test set. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The values of the key (the values in the column) must be in RFC 3339 `date-time` format, where `time-offset` = `\"Z\"` (e.g. 1985-04-12T23:20:50.52Z). If for a piece of data the key is not present or has an invalid value, that piece is ignored by the pipeline."
        },
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1TimestampSplitResponse": {
      "description": "Assigns input data to training, validation, and test sets based on a provided timestamps. The youngest data pieces are assigned to training set, next to validation set, and the oldest to the test set. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The values of the key (the values in the column) must be in RFC 3339 `date-time` format, where `time-offset` = `\"Z\"` (e.g. 1985-04-12T23:20:50.52Z). If for a piece of data the key is not present or has an invalid value, that piece is ignored by the pipeline."
        },
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "key",
        "testFraction",
        "trainingFraction",
        "validationFraction"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1TrainingConfig": {
      "description": "CMLE training config. For every active learning labeling iteration, system will train a machine learning model on CMLE. The trained model will be used by data sampling algorithm to select DataItems.",
      "properties": {
        "timeoutTrainingMilliHours": {
          "type": "string",
          "description": "The timeout hours for the CMLE training job, expressed in milli hours i.e. 1,000 value in this field means 1 hour."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1TrainingConfigResponse": {
      "description": "CMLE training config. For every active learning labeling iteration, system will train a machine learning model on CMLE. The trained model will be used by data sampling algorithm to select DataItems.",
      "properties": {
        "timeoutTrainingMilliHours": {
          "type": "string",
          "description": "The timeout hours for the CMLE training job, expressed in milli hours i.e. 1,000 value in this field means 1 hour."
        }
      },
      "type": "object",
      "required": [
        "timeoutTrainingMilliHours"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1TrialParameterResponse": {
      "description": "A message representing a parameter to be tuned.",
      "properties": {
        "parameterId": {
          "type": "string",
          "description": "The ID of the parameter. The parameter should be defined in StudySpec's Parameters."
        },
        "value": {
          "$ref": "pulumi.json#/Any",
          "description": "The value of the parameter. `number_value` will be set if a parameter defined in StudySpec is in type 'INTEGER', 'DOUBLE' or 'DISCRETE'. `string_value` will be set if a parameter defined in StudySpec is in type 'CATEGORICAL'."
        }
      },
      "type": "object",
      "required": [
        "parameterId",
        "value"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1TrialResponse": {
      "description": "A message representing a Trial. A Trial contains a unique set of Parameters that has been or will be evaluated, along with the objective metrics got by running the Trial.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial."
        },
        "customJob": {
          "type": "string",
          "description": "The CustomJob name linked to the Trial. It's set for a HyperparameterTuningJob's Trial."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the Trial's status changed to `SUCCEEDED` or `INFEASIBLE`."
        },
        "finalMeasurement": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MeasurementResponse",
          "description": "The final measurement containing the objective value."
        },
        "infeasibleReason": {
          "type": "string",
          "description": "A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`."
        },
        "measurements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MeasurementResponse"
          },
          "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Trial assigned by the service."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TrialParameterResponse"
          },
          "description": "The parameters of the Trial."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the Trial was started."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the Trial."
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job's trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "customJob",
        "endTime",
        "finalMeasurement",
        "infeasibleReason",
        "measurements",
        "name",
        "parameters",
        "startTime",
        "state",
        "webAccessUris"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1UnmanagedContainerModel": {
      "description": "Contains model information necessary to perform batch prediction without requiring a full model import.",
      "properties": {
        "artifactUri": {
          "type": "string",
          "description": "The path to the directory containing the Model artifact and any of its supporting files."
        },
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelContainerSpec",
          "description": "Input only. The specification of the container that is to be used when deploying this Model."
        },
        "predictSchemata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredictSchemata",
          "description": "Contains the schemata used in Model's predictions and explanations"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1UnmanagedContainerModelResponse": {
      "description": "Contains model information necessary to perform batch prediction without requiring a full model import.",
      "properties": {
        "artifactUri": {
          "type": "string",
          "description": "The path to the directory containing the Model artifact and any of its supporting files."
        },
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelContainerSpecResponse",
          "description": "Input only. The specification of the container that is to be used when deploying this Model."
        },
        "predictSchemata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredictSchemataResponse",
          "description": "Contains the schemata used in Model's predictions and explanations"
        }
      },
      "type": "object",
      "required": [
        "artifactUri",
        "containerSpec",
        "predictSchemata"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1WorkerPoolSpec": {
      "description": "Represents the spec of a worker pool in a job.",
      "properties": {
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ContainerSpec",
          "description": "The custom container task."
        },
        "diskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DiskSpec",
          "description": "Disk spec."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpec",
          "description": "Optional. Immutable. The specification of a single machine."
        },
        "nfsMounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NfsMount"
          },
          "description": "Optional. List of NFS mount spec."
        },
        "pythonPackageSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PythonPackageSpec",
          "description": "The Python packaged task."
        },
        "replicaCount": {
          "type": "string",
          "description": "Optional. The number of worker replicas to use for this worker pool."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1WorkerPoolSpecResponse": {
      "description": "Represents the spec of a worker pool in a job.",
      "properties": {
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ContainerSpecResponse",
          "description": "The custom container task."
        },
        "diskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DiskSpecResponse",
          "description": "Disk spec."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpecResponse",
          "description": "Optional. Immutable. The specification of a single machine."
        },
        "nfsMounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NfsMountResponse"
          },
          "description": "Optional. List of NFS mount spec."
        },
        "pythonPackageSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PythonPackageSpecResponse",
          "description": "The Python packaged task."
        },
        "replicaCount": {
          "type": "string",
          "description": "Optional. The number of worker replicas to use for this worker pool."
        }
      },
      "type": "object",
      "required": [
        "containerSpec",
        "diskSpec",
        "machineSpec",
        "nfsMounts",
        "pythonPackageSpec",
        "replicaCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1XraiAttribution": {
      "description": "An explanation method that redistributes Integrated Gradients attributions to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Supported only by image Models.",
      "properties": {
        "blurBaselineConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BlurBaselineConfig",
          "description": "Config for XRAI with blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383"
        },
        "smoothGradConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SmoothGradConfig",
          "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf"
        },
        "stepCount": {
          "type": "integer",
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range. Valid range of its value is [1, 100], inclusively."
        }
      },
      "type": "object",
      "required": [
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleCloudAiplatformV1XraiAttributionResponse": {
      "description": "An explanation method that redistributes Integrated Gradients attributions to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Supported only by image Models.",
      "properties": {
        "blurBaselineConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BlurBaselineConfigResponse",
          "description": "Config for XRAI with blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383"
        },
        "smoothGradConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SmoothGradConfigResponse",
          "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf"
        },
        "stepCount": {
          "type": "integer",
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range. Valid range of its value is [1, 100], inclusively."
        }
      },
      "type": "object",
      "required": [
        "blurBaselineConfig",
        "smoothGradConfig",
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:aiplatform/v1:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:aiplatform/v1:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:aiplatform/v1:GoogleTypeMoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:aiplatform/v1:IndexIndexUpdateMethod": {
      "description": "Immutable. The update method to use with this Index. If not set, BATCH_UPDATE will be used by default.",
      "type": "string",
      "enum": [
        {
          "name": "IndexUpdateMethodUnspecified",
          "description": "Should not be used.",
          "value": "INDEX_UPDATE_METHOD_UNSPECIFIED"
        },
        {
          "name": "BatchUpdate",
          "description": "BatchUpdate: user can call UpdateIndex with files on Cloud Storage of Datapoints to update.",
          "value": "BATCH_UPDATE"
        },
        {
          "name": "StreamUpdate",
          "description": "StreamUpdate: user can call UpsertDatapoints/DeleteDatapoints to update the Index and the updates will be applied in corresponding DeployedIndexes in nearly real-time.",
          "value": "STREAM_UPDATE"
        }
      ]
    },
    "google-native:aiplatform/v1:MetadataSchemaSchemaType": {
      "description": "The type of the MetadataSchema. This is a property that identifies which metadata types will use the MetadataSchema.",
      "type": "string",
      "enum": [
        {
          "name": "MetadataSchemaTypeUnspecified",
          "description": "Unspecified type for the MetadataSchema.",
          "value": "METADATA_SCHEMA_TYPE_UNSPECIFIED"
        },
        {
          "name": "ArtifactType",
          "description": "A type indicating that the MetadataSchema will be used by Artifacts.",
          "value": "ARTIFACT_TYPE"
        },
        {
          "name": "ExecutionType",
          "description": "A typee indicating that the MetadataSchema will be used by Executions.",
          "value": "EXECUTION_TYPE"
        },
        {
          "name": "ContextType",
          "description": "A state indicating that the MetadataSchema will be used by Contexts.",
          "value": "CONTEXT_TYPE"
        }
      ]
    },
    "google-native:aiplatform/v1:NotebookRuntimeTemplateNotebookRuntimeType": {
      "description": "Optional. Immutable. The type of the notebook runtime template.",
      "type": "string",
      "enum": [
        {
          "name": "NotebookRuntimeTypeUnspecified",
          "description": "Unspecified notebook runtime type, NotebookRuntimeType will default to USER_DEFINED.",
          "value": "NOTEBOOK_RUNTIME_TYPE_UNSPECIFIED"
        },
        {
          "name": "UserDefined",
          "description": "runtime or template with coustomized configurations from user.",
          "value": "USER_DEFINED"
        },
        {
          "name": "OneClick",
          "description": "runtime or template with system defined configurations.",
          "value": "ONE_CLICK"
        }
      ]
    },
    "google-native:aiplatform/v1:TimeSeriesValueType": {
      "description": "Required. Immutable. Type of TensorboardTimeSeries value.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "The value type is unspecified.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Scalar",
          "description": "Used for TensorboardTimeSeries that is a list of scalars. E.g. accuracy of a model over epochs/time.",
          "value": "SCALAR"
        },
        {
          "name": "Tensor",
          "description": "Used for TensorboardTimeSeries that is a list of tensors. E.g. histograms of weights of layer in a model over epoch/time.",
          "value": "TENSOR"
        },
        {
          "name": "BlobSequence",
          "description": "Used for TensorboardTimeSeries that is a list of blob sequences. E.g. set of sample images with labels over epochs/time.",
          "value": "BLOB_SEQUENCE"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:ArtifactState": {
      "description": "The state of this Artifact. This is a property of the Artifact, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines), and the system does not prescribe or check the validity of state transitions.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unspecified state for the Artifact.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "A state used by systems like Vertex AI Pipelines to indicate that the underlying data item represented by this Artifact is being created.",
          "value": "PENDING"
        },
        {
          "name": "Live",
          "description": "A state indicating that the Artifact should exist, unless something external to the system deletes it.",
          "value": "LIVE"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:ExecutionState": {
      "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unspecified Execution state",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "New",
          "description": "The Execution is new",
          "value": "NEW"
        },
        {
          "name": "Running",
          "description": "The Execution is running",
          "value": "RUNNING"
        },
        {
          "name": "Complete",
          "description": "The Execution has finished running",
          "value": "COMPLETE"
        },
        {
          "name": "Failed",
          "description": "The Execution has failed",
          "value": "FAILED"
        },
        {
          "name": "Cached",
          "description": "The Execution completed through Cache hit.",
          "value": "CACHED"
        },
        {
          "name": "Cancelled",
          "description": "The Execution was cancelled.",
          "value": "CANCELLED"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:FeatureGroupFeatureValueType": {
      "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "The value type is unspecified.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Bool",
          "description": "Used for Feature that is a boolean.",
          "value": "BOOL"
        },
        {
          "name": "BoolArray",
          "description": "Used for Feature that is a list of boolean.",
          "value": "BOOL_ARRAY"
        },
        {
          "name": "Double",
          "description": "Used for Feature that is double.",
          "value": "DOUBLE"
        },
        {
          "name": "DoubleArray",
          "description": "Used for Feature that is a list of double.",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "Int64",
          "description": "Used for Feature that is INT64.",
          "value": "INT64"
        },
        {
          "name": "Int64Array",
          "description": "Used for Feature that is a list of INT64.",
          "value": "INT64_ARRAY"
        },
        {
          "name": "String",
          "description": "Used for Feature that is string.",
          "value": "STRING"
        },
        {
          "name": "StringArray",
          "description": "Used for Feature that is a list of String.",
          "value": "STRING_ARRAY"
        },
        {
          "name": "Bytes",
          "description": "Used for Feature that is bytes.",
          "value": "BYTES"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:FeatureStoreFeatureValueType": {
      "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "The value type is unspecified.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Bool",
          "description": "Used for Feature that is a boolean.",
          "value": "BOOL"
        },
        {
          "name": "BoolArray",
          "description": "Used for Feature that is a list of boolean.",
          "value": "BOOL_ARRAY"
        },
        {
          "name": "Double",
          "description": "Used for Feature that is double.",
          "value": "DOUBLE"
        },
        {
          "name": "DoubleArray",
          "description": "Used for Feature that is a list of double.",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "Int64",
          "description": "Used for Feature that is INT64.",
          "value": "INT64"
        },
        {
          "name": "Int64Array",
          "description": "Used for Feature that is a list of INT64.",
          "value": "INT64_ARRAY"
        },
        {
          "name": "String",
          "description": "Used for Feature that is string.",
          "value": "STRING"
        },
        {
          "name": "StringArray",
          "description": "Used for Feature that is a list of String.",
          "value": "STRING_ARRAY"
        },
        {
          "name": "Bytes",
          "description": "Used for Feature that is bytes.",
          "value": "BYTES"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ActiveLearningConfig": {
      "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally by several iterations. For every iteration, it will select a batch of data based on the sampling strategy.",
      "properties": {
        "maxDataItemCount": {
          "type": "string",
          "description": "Max number of human labeled DataItems."
        },
        "maxDataItemPercentage": {
          "type": "integer",
          "description": "Max percent of total DataItems for human labeling."
        },
        "sampleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SampleConfig",
          "description": "Active learning data sampling config. For every active learning labeling iteration, it will select a batch of data based on the sampling strategy."
        },
        "trainingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TrainingConfig",
          "description": "CMLE training config. For every active learning labeling iteration, system will train a machine learning model on CMLE. The trained model will be used by data sampling algorithm to select DataItems."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ActiveLearningConfigResponse": {
      "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally by several iterations. For every iteration, it will select a batch of data based on the sampling strategy.",
      "properties": {
        "maxDataItemCount": {
          "type": "string",
          "description": "Max number of human labeled DataItems."
        },
        "maxDataItemPercentage": {
          "type": "integer",
          "description": "Max percent of total DataItems for human labeling."
        },
        "sampleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SampleConfigResponse",
          "description": "Active learning data sampling config. For every active learning labeling iteration, it will select a batch of data based on the sampling strategy."
        },
        "trainingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TrainingConfigResponse",
          "description": "CMLE training config. For every active learning labeling iteration, system will train a machine learning model on CMLE. The trained model will be used by data sampling algorithm to select DataItems."
        }
      },
      "type": "object",
      "required": [
        "maxDataItemCount",
        "maxDataItemPercentage",
        "sampleConfig",
        "trainingConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1AutomaticResourcesResponse": {
      "description": "A description of resources that to large degree are decided by Vertex AI, and require only a modest additional configuration. Each Model supporting these resources documents its specific guidelines.",
      "properties": {
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of replicas this DeployedModel may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale the model to that many replicas is guaranteed (barring service outages). If traffic against the DeployedModel increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, a no upper bound for scaling under heavy traffic will be assume, though Vertex AI may be unable to scale beyond certain replica number."
        },
        "minReplicaCount": {
          "type": "integer",
          "description": "Immutable. The minimum number of replicas this DeployedModel will be always deployed on. If traffic against it increases, it may dynamically be deployed onto more replicas up to max_replica_count, and as traffic decreases, some of these extra replicas may be freed. If the requested value is too large, the deployment will error."
        }
      },
      "type": "object",
      "required": [
        "maxReplicaCount",
        "minReplicaCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1AutoscalingMetricSpec": {
      "description": "The metric specification that defines the target resource utilization (CPU utilization, accelerator's duty cycle, and so on) for calculating the desired replica count.",
      "properties": {
        "metricName": {
          "type": "string",
          "description": "The resource metric name. Supported metrics: * For Online Prediction: * `aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle` * `aiplatform.googleapis.com/prediction/online/cpu/utilization`"
        },
        "target": {
          "type": "integer",
          "description": "The target resource utilization in percentage (1% - 100%) for the given metric; once the real usage deviates from the target by a certain percentage, the machine replicas change. The default value is 60 (representing 60%) if not provided."
        }
      },
      "type": "object",
      "required": [
        "metricName"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1AutoscalingMetricSpecResponse": {
      "description": "The metric specification that defines the target resource utilization (CPU utilization, accelerator's duty cycle, and so on) for calculating the desired replica count.",
      "properties": {
        "metricName": {
          "type": "string",
          "description": "The resource metric name. Supported metrics: * For Online Prediction: * `aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle` * `aiplatform.googleapis.com/prediction/online/cpu/utilization`"
        },
        "target": {
          "type": "integer",
          "description": "The target resource utilization in percentage (1% - 100%) for the given metric; once the real usage deviates from the target by a certain percentage, the machine replicas change. The default value is 60 (representing 60%) if not provided."
        }
      },
      "type": "object",
      "required": [
        "metricName",
        "target"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchDedicatedResources": {
      "description": "A description of resources that are used for performing batch operations, are dedicated to a Model, and need manual configuration.",
      "properties": {
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpec",
          "description": "Immutable. The specification of a single machine."
        },
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of machine replicas the batch operation may be scaled to. The default value is 10."
        },
        "startingReplicaCount": {
          "type": "integer",
          "description": "Immutable. The number of machine replicas used at the start of the batch operation. If not set, Vertex AI decides starting number, not greater than max_replica_count"
        }
      },
      "type": "object",
      "required": [
        "machineSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchDedicatedResourcesResponse": {
      "description": "A description of resources that are used for performing batch operations, are dedicated to a Model, and need manual configuration.",
      "properties": {
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpecResponse",
          "description": "Immutable. The specification of a single machine."
        },
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of machine replicas the batch operation may be scaled to. The default value is 10."
        },
        "startingReplicaCount": {
          "type": "integer",
          "description": "Immutable. The number of machine replicas used at the start of the batch operation. If not set, Vertex AI decides starting number, not greater than max_replica_count"
        }
      },
      "type": "object",
      "required": [
        "machineSpec",
        "maxReplicaCount",
        "startingReplicaCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInputConfig": {
      "description": "Configures the input to BatchPredictionJob. See Model.supported_input_storage_formats for Model's supported input formats, and how instances should be expressed via any of them.",
      "properties": {
        "bigquerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQuerySource",
          "description": "The BigQuery location of the input table. The schema of the table should be in the format described by the given context OpenAPI Schema, if one is provided. The table may contain additional columns that are not described by the schema, and they will be ignored."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsSource",
          "description": "The Cloud Storage location for the input instances."
        },
        "instancesFormat": {
          "type": "string",
          "description": "The format in which instances are given, must be one of the Model's supported_input_storage_formats."
        }
      },
      "type": "object",
      "required": [
        "instancesFormat"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInputConfigResponse": {
      "description": "Configures the input to BatchPredictionJob. See Model.supported_input_storage_formats for Model's supported input formats, and how instances should be expressed via any of them.",
      "properties": {
        "bigquerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQuerySourceResponse",
          "description": "The BigQuery location of the input table. The schema of the table should be in the format described by the given context OpenAPI Schema, if one is provided. The table may contain additional columns that are not described by the schema, and they will be ignored."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsSourceResponse",
          "description": "The Cloud Storage location for the input instances."
        },
        "instancesFormat": {
          "type": "string",
          "description": "The format in which instances are given, must be one of the Model's supported_input_storage_formats."
        }
      },
      "type": "object",
      "required": [
        "bigquerySource",
        "gcsSource",
        "instancesFormat"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInstanceConfig": {
      "description": "Configuration defining how to transform batch prediction input instances to the instances that the Model accepts.",
      "properties": {
        "excludedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields that will be excluded in the prediction instance that is sent to the Model. Excluded will be attached to the batch prediction output if key_field is not specified. When excluded_fields is populated, included_fields must be empty. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        },
        "includedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields that will be included in the prediction instance that is sent to the Model. If instance_type is `array`, the order of field names in included_fields also determines the order of the values in the array. When included_fields is populated, excluded_fields must be empty. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        },
        "instanceType": {
          "type": "string",
          "description": "The format of the instance that the Model accepts. Vertex AI will convert compatible batch prediction input instance formats to the specified format. Supported values are: * `object`: Each input is converted to JSON object format. * For `bigquery`, each row is converted to an object. * For `jsonl`, each line of the JSONL input must be an object. * Does not apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. * `array`: Each input is converted to JSON array format. * For `bigquery`, each row is converted to an array. The order of columns is determined by the BigQuery column order, unless included_fields is populated. included_fields must be populated for specifying field orders. * For `jsonl`, if each line of the JSONL input is an object, included_fields must be populated for specifying field orders. * Does not apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. If not specified, Vertex AI converts the batch prediction input as follows: * For `bigquery` and `csv`, the behavior is the same as `array`. The order of columns is the same as defined in the file or table, unless included_fields is populated. * For `jsonl`, the prediction instance format is determined by each line of the input. * For `tf-record`/`tf-record-gzip`, each record will be converted to an object in the format of `{\"b64\": }`, where `` is the Base64-encoded string of the content of the record. * For `file-list`, each file in the list will be converted to an object in the format of `{\"b64\": }`, where `` is the Base64-encoded string of the content of the file."
        },
        "keyField": {
          "type": "string",
          "description": "The name of the field that is considered as a key. The values identified by the key field is not included in the transformed instances that is sent to the Model. This is similar to specifying this name of the field in excluded_fields. In addition, the batch prediction output will not include the instances. Instead the output will only include the value of the key field, in a field named `key` in the output: * For `jsonl` output format, the output will have a `key` field instead of the `instance` field. * For `csv`/`bigquery` output format, the output will have have a `key` column instead of the instance feature columns. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInstanceConfigResponse": {
      "description": "Configuration defining how to transform batch prediction input instances to the instances that the Model accepts.",
      "properties": {
        "excludedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields that will be excluded in the prediction instance that is sent to the Model. Excluded will be attached to the batch prediction output if key_field is not specified. When excluded_fields is populated, included_fields must be empty. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        },
        "includedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields that will be included in the prediction instance that is sent to the Model. If instance_type is `array`, the order of field names in included_fields also determines the order of the values in the array. When included_fields is populated, excluded_fields must be empty. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        },
        "instanceType": {
          "type": "string",
          "description": "The format of the instance that the Model accepts. Vertex AI will convert compatible batch prediction input instance formats to the specified format. Supported values are: * `object`: Each input is converted to JSON object format. * For `bigquery`, each row is converted to an object. * For `jsonl`, each line of the JSONL input must be an object. * Does not apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. * `array`: Each input is converted to JSON array format. * For `bigquery`, each row is converted to an array. The order of columns is determined by the BigQuery column order, unless included_fields is populated. included_fields must be populated for specifying field orders. * For `jsonl`, if each line of the JSONL input is an object, included_fields must be populated for specifying field orders. * Does not apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. If not specified, Vertex AI converts the batch prediction input as follows: * For `bigquery` and `csv`, the behavior is the same as `array`. The order of columns is the same as defined in the file or table, unless included_fields is populated. * For `jsonl`, the prediction instance format is determined by each line of the input. * For `tf-record`/`tf-record-gzip`, each record will be converted to an object in the format of `{\"b64\": }`, where `` is the Base64-encoded string of the content of the record. * For `file-list`, each file in the list will be converted to an object in the format of `{\"b64\": }`, where `` is the Base64-encoded string of the content of the file."
        },
        "keyField": {
          "type": "string",
          "description": "The name of the field that is considered as a key. The values identified by the key field is not included in the transformed instances that is sent to the Model. This is similar to specifying this name of the field in excluded_fields. In addition, the batch prediction output will not include the instances. Instead the output will only include the value of the key field, in a field named `key` in the output: * For `jsonl` output format, the output will have a `key` field instead of the `instance` field. * For `csv`/`bigquery` output format, the output will have have a `key` column instead of the instance feature columns. The input must be JSONL with objects at each line, CSV, BigQuery or TfRecord."
        }
      },
      "type": "object",
      "required": [
        "excludedFields",
        "includedFields",
        "instanceType",
        "keyField"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobOutputConfig": {
      "description": "Configures the output of BatchPredictionJob. See Model.supported_output_storage_formats for supported output formats, and how predictions are expressed via any of them.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQueryDestination",
          "description": "The BigQuery project or dataset location where the output is to be written to. If project is provided, a new dataset is created with name `prediction__` where is made BigQuery-dataset-name compatible (for example, most special characters become underscores), and timestamp is in YYYY_MM_DDThh_mm_ss_sssZ \"based on ISO-8601\" format. In the dataset two tables will be created, `predictions`, and `errors`. If the Model has both instance and prediction schemata defined then the tables have columns as follows: The `predictions` table contains instances for which the prediction succeeded, it has columns as per a concatenation of the Model's instance and prediction schemata. The `errors` table contains rows for which the prediction has failed, it has instance columns, as per the instance schema, followed by a single \"errors\" column, which as values has google.rpc.Status represented as a STRUCT, and containing only `code` and `message`."
        },
        "gcsDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestination",
          "description": "The Cloud Storage location of the directory where the output is to be written to. In the given directory a new directory is created. Its name is `prediction--`, where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. Inside of it files `predictions_0001.`, `predictions_0002.`, ..., `predictions_N.` are created where `` depends on chosen predictions_format, and N may equal 0001 and depends on the total number of successfully predicted instances. If the Model has both instance and prediction schemata defined then each such file contains predictions as per the predictions_format. If prediction for any instance failed (partially or completely), then an additional `errors_0001.`, `errors_0002.`,..., `errors_N.` files are created (N depends on total number of failed predictions). These files contain the failed instances, as per their schema, followed by an additional `error` field which as value has google.rpc.Status containing only `code` and `message` fields."
        },
        "predictionsFormat": {
          "type": "string",
          "description": "The format in which Vertex AI gives the predictions, must be one of the Model's supported_output_storage_formats."
        }
      },
      "type": "object",
      "required": [
        "predictionsFormat"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobOutputConfigResponse": {
      "description": "Configures the output of BatchPredictionJob. See Model.supported_output_storage_formats for supported output formats, and how predictions are expressed via any of them.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQueryDestinationResponse",
          "description": "The BigQuery project or dataset location where the output is to be written to. If project is provided, a new dataset is created with name `prediction__` where is made BigQuery-dataset-name compatible (for example, most special characters become underscores), and timestamp is in YYYY_MM_DDThh_mm_ss_sssZ \"based on ISO-8601\" format. In the dataset two tables will be created, `predictions`, and `errors`. If the Model has both instance and prediction schemata defined then the tables have columns as follows: The `predictions` table contains instances for which the prediction succeeded, it has columns as per a concatenation of the Model's instance and prediction schemata. The `errors` table contains rows for which the prediction has failed, it has instance columns, as per the instance schema, followed by a single \"errors\" column, which as values has google.rpc.Status represented as a STRUCT, and containing only `code` and `message`."
        },
        "gcsDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestinationResponse",
          "description": "The Cloud Storage location of the directory where the output is to be written to. In the given directory a new directory is created. Its name is `prediction--`, where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. Inside of it files `predictions_0001.`, `predictions_0002.`, ..., `predictions_N.` are created where `` depends on chosen predictions_format, and N may equal 0001 and depends on the total number of successfully predicted instances. If the Model has both instance and prediction schemata defined then each such file contains predictions as per the predictions_format. If prediction for any instance failed (partially or completely), then an additional `errors_0001.`, `errors_0002.`,..., `errors_N.` files are created (N depends on total number of failed predictions). These files contain the failed instances, as per their schema, followed by an additional `error` field which as value has google.rpc.Status containing only `code` and `message` fields."
        },
        "predictionsFormat": {
          "type": "string",
          "description": "The format in which Vertex AI gives the predictions, must be one of the Model's supported_output_storage_formats."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination",
        "gcsDestination",
        "predictionsFormat"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobOutputInfoResponse": {
      "description": "Further describes this job's output. Supplements output_config.",
      "properties": {
        "bigqueryOutputDataset": {
          "type": "string",
          "description": "The path of the BigQuery dataset created, in `bq://projectId.bqDatasetId` format, into which the prediction output is written."
        },
        "bigqueryOutputTable": {
          "type": "string",
          "description": "The name of the BigQuery table created, in `predictions_` format, into which the prediction output is written. Can be used by UI to generate the BigQuery output path, for example."
        },
        "gcsOutputDirectory": {
          "type": "string",
          "description": "The full path of the Cloud Storage directory created, into which the prediction output is written."
        }
      },
      "type": "object",
      "required": [
        "bigqueryOutputDataset",
        "bigqueryOutputTable",
        "gcsOutputDirectory"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BigQueryDestination": {
      "description": "The BigQuery location for the output content.",
      "properties": {
        "outputUri": {
          "type": "string",
          "description": "BigQuery URI to a project or table, up to 2000 characters long. When only the project is specified, the Dataset and Table is created. When the full table reference is specified, the Dataset must exist and table must not exist. Accepted forms: * BigQuery path. For example: `bq://projectId` or `bq://projectId.bqDatasetId` or `bq://projectId.bqDatasetId.bqTableId`."
        }
      },
      "type": "object",
      "required": [
        "outputUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BigQueryDestinationResponse": {
      "description": "The BigQuery location for the output content.",
      "properties": {
        "outputUri": {
          "type": "string",
          "description": "BigQuery URI to a project or table, up to 2000 characters long. When only the project is specified, the Dataset and Table is created. When the full table reference is specified, the Dataset must exist and table must not exist. Accepted forms: * BigQuery path. For example: `bq://projectId` or `bq://projectId.bqDatasetId` or `bq://projectId.bqDatasetId.bqTableId`."
        }
      },
      "type": "object",
      "required": [
        "outputUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BigQuerySource": {
      "description": "The BigQuery location for the input content.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2000 characters long. Accepted forms: * BigQuery path. For example: `bq://projectId.bqDatasetId.bqTableId`."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BigQuerySourceResponse": {
      "description": "The BigQuery location for the input content.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2000 characters long. Accepted forms: * BigQuery path. For example: `bq://projectId.bqDatasetId.bqTableId`."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BlurBaselineConfig": {
      "description": "Config for blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383",
      "properties": {
        "maxBlurSigma": {
          "type": "number",
          "description": "The standard deviation of the blur kernel for the blurred baseline. The same blurring parameter is used for both the height and the width dimension. If not set, the method defaults to the zero (i.e. black for images) baseline."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1BlurBaselineConfigResponse": {
      "description": "Config for blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383",
      "properties": {
        "maxBlurSigma": {
          "type": "number",
          "description": "The standard deviation of the blur kernel for the blurred baseline. The same blurring parameter is used for both the height and the width dimension. If not set, the method defaults to the zero (i.e. black for images) baseline."
        }
      },
      "type": "object",
      "required": [
        "maxBlurSigma"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1CompletionStatsResponse": {
      "description": "Success and error statistics of processing multiple entities (for example, DataItems or structured data rows) in batch.",
      "properties": {
        "failedCount": {
          "type": "string",
          "description": "The number of entities for which any error was encountered."
        },
        "incompleteCount": {
          "type": "string",
          "description": "In cases when enough errors are encountered a job, pipeline, or operation may be failed as a whole. Below is the number of entities for which the processing had not been finished (either in successful or failed state). Set to -1 if the number is unknown (for example, the operation failed before the total entity number could be collected)."
        },
        "successfulCount": {
          "type": "string",
          "description": "The number of entities that had been processed successfully."
        },
        "successfulForecastPointCount": {
          "type": "string",
          "description": "The number of the successful forecast points that are generated by the forecasting model. This is ONLY used by the forecasting batch prediction."
        }
      },
      "type": "object",
      "required": [
        "failedCount",
        "incompleteCount",
        "successfulCount",
        "successfulForecastPointCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ContainerSpec": {
      "description": "The spec of a Container.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The arguments to be passed when starting the container."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EnvVar"
          },
          "description": "Environment variables to be passed to the container. Maximum limit is 100."
        },
        "imageUri": {
          "type": "string",
          "description": "The URI of a container image in the Container Registry that is to be run on each worker replica."
        }
      },
      "type": "object",
      "required": [
        "imageUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ContainerSpecResponse": {
      "description": "The spec of a Container.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The arguments to be passed when starting the container."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EnvVarResponse"
          },
          "description": "Environment variables to be passed to the container. Maximum limit is 100."
        },
        "imageUri": {
          "type": "string",
          "description": "The URI of a container image in the Container Registry that is to be run on each worker replica."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "env",
        "imageUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ContextResponse": {
      "description": "Instance of a general context.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Context was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Context"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Context. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Contexts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Context (System labels are excluded)."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Context. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Context."
        },
        "parentContexts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource names of Contexts that are parents of this Context. A Context may have at most 10 parent_contexts."
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Context was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "metadata",
        "name",
        "parentContexts",
        "schemaTitle",
        "schemaVersion",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1CreatePipelineJobRequest": {
      "description": "Request message for PipelineService.CreatePipelineJob.",
      "properties": {
        "parent": {
          "type": "string",
          "description": "The resource name of the Location to create the PipelineJob in. Format: `projects/{project}/locations/{location}`"
        },
        "pipelineJob": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJob",
          "description": "The PipelineJob to create."
        },
        "pipelineJobId": {
          "type": "string",
          "description": "The ID to use for the PipelineJob, which will become the final component of the PipelineJob name. If not provided, an ID will be automatically generated. This value should be less than 128 characters, and valid characters are `/a-z-/`."
        }
      },
      "type": "object",
      "required": [
        "parent",
        "pipelineJob"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1CreatePipelineJobRequestResponse": {
      "description": "Request message for PipelineService.CreatePipelineJob.",
      "properties": {
        "parent": {
          "type": "string",
          "description": "The resource name of the Location to create the PipelineJob in. Format: `projects/{project}/locations/{location}`"
        },
        "pipelineJob": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobResponse",
          "description": "The PipelineJob to create."
        },
        "pipelineJobId": {
          "type": "string",
          "description": "The ID to use for the PipelineJob, which will become the final component of the PipelineJob name. If not provided, an ID will be automatically generated. This value should be less than 128 characters, and valid characters are `/a-z-/`."
        }
      },
      "type": "object",
      "required": [
        "parent",
        "pipelineJob",
        "pipelineJobId"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1CustomJobSpec": {
      "description": "Represents the spec of a CustomJob.",
      "properties": {
        "baseOutputDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestination",
          "description": "The Cloud Storage location to store the output of this CustomJob or HyperparameterTuningJob. For HyperparameterTuningJob, the baseOutputDirectory of each child CustomJob backing a Trial is set to a subdirectory of name id under its parent HyperparameterTuningJob's baseOutputDirectory. The following Vertex AI environment variables will be passed to containers or python modules when this field is set: For CustomJob: * AIP_MODEL_DIR = `/model/` * AIP_CHECKPOINT_DIR = `/checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `/logs/` For CustomJob backing a Trial of HyperparameterTuningJob: * AIP_MODEL_DIR = `//model/` * AIP_CHECKPOINT_DIR = `//checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `//logs/`"
        },
        "enableDashboardAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want Vertex AI to enable access to the customized dashboard in training chief container. If set to `true`, you can access the dashboard at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials)."
        },
        "enableWebAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want Vertex AI to enable [interactive shell access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials)."
        },
        "experiment": {
          "type": "string",
          "description": "Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`"
        },
        "experimentRun": {
          "type": "string",
          "description": "Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`"
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the job is not peered with any network."
        },
        "persistentResourceId": {
          "type": "string",
          "description": "Optional. The ID of the PersistentResource in the same Project and Location which to run If this is specified, the job will be run on existing machines held by the PersistentResource instead of on-demand short-live machines. The network and CMEK configs on the job should be consistent with those on the PersistentResource, otherwise, the job will be rejected."
        },
        "protectedArtifactLocationId": {
          "type": "string",
          "description": "The ID of the location to store protected artifacts. e.g. us-central1. Populate only when the location is different than CustomJob location. List of supported locations: https://cloud.google.com/vertex-ai/docs/general/locations"
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "scheduling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1Scheduling",
          "description": "Scheduling options for a CustomJob."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Specifies the service account for workload run-as account. Users submitting jobs must have act-as permission on this run-as account. If unspecified, the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob's project is used."
        },
        "tensorboard": {
          "type": "string",
          "description": "Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`"
        },
        "workerPoolSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1WorkerPoolSpec"
          },
          "description": "The spec of the worker pools including machine type and Docker image. All worker pools except the first one are optional and can be skipped by providing an empty value."
        }
      },
      "type": "object",
      "required": [
        "workerPoolSpecs"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1CustomJobSpecResponse": {
      "description": "Represents the spec of a CustomJob.",
      "properties": {
        "baseOutputDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestinationResponse",
          "description": "The Cloud Storage location to store the output of this CustomJob or HyperparameterTuningJob. For HyperparameterTuningJob, the baseOutputDirectory of each child CustomJob backing a Trial is set to a subdirectory of name id under its parent HyperparameterTuningJob's baseOutputDirectory. The following Vertex AI environment variables will be passed to containers or python modules when this field is set: For CustomJob: * AIP_MODEL_DIR = `/model/` * AIP_CHECKPOINT_DIR = `/checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `/logs/` For CustomJob backing a Trial of HyperparameterTuningJob: * AIP_MODEL_DIR = `//model/` * AIP_CHECKPOINT_DIR = `//checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `//logs/`"
        },
        "enableDashboardAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want Vertex AI to enable access to the customized dashboard in training chief container. If set to `true`, you can access the dashboard at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials)."
        },
        "enableWebAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want Vertex AI to enable [interactive shell access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials)."
        },
        "experiment": {
          "type": "string",
          "description": "Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`"
        },
        "experimentRun": {
          "type": "string",
          "description": "Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`"
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the job is not peered with any network."
        },
        "persistentResourceId": {
          "type": "string",
          "description": "Optional. The ID of the PersistentResource in the same Project and Location which to run If this is specified, the job will be run on existing machines held by the PersistentResource instead of on-demand short-live machines. The network and CMEK configs on the job should be consistent with those on the PersistentResource, otherwise, the job will be rejected."
        },
        "protectedArtifactLocationId": {
          "type": "string",
          "description": "The ID of the location to store protected artifacts. e.g. us-central1. Populate only when the location is different than CustomJob location. List of supported locations: https://cloud.google.com/vertex-ai/docs/general/locations"
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "scheduling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SchedulingResponse",
          "description": "Scheduling options for a CustomJob."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Specifies the service account for workload run-as account. Users submitting jobs must have act-as permission on this run-as account. If unspecified, the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob's project is used."
        },
        "tensorboard": {
          "type": "string",
          "description": "Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`"
        },
        "workerPoolSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1WorkerPoolSpecResponse"
          },
          "description": "The spec of the worker pools including machine type and Docker image. All worker pools except the first one are optional and can be skipped by providing an empty value."
        }
      },
      "type": "object",
      "required": [
        "baseOutputDirectory",
        "enableDashboardAccess",
        "enableWebAccess",
        "experiment",
        "experimentRun",
        "network",
        "persistentResourceId",
        "protectedArtifactLocationId",
        "reservedIpRanges",
        "scheduling",
        "serviceAccount",
        "tensorboard",
        "workerPoolSpecs"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DedicatedResources": {
      "description": "A description of resources that are dedicated to a DeployedModel, and that need a higher degree of manual configuration.",
      "properties": {
        "autoscalingMetricSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1AutoscalingMetricSpec"
          },
          "description": "Immutable. The metric specifications that overrides a resource utilization metric (CPU utilization, accelerator's duty cycle, and so on) target value (default to 60 if not set). At most one entry is allowed per metric. If machine_spec.accelerator_count is above 0, the autoscaling will be based on both CPU utilization and accelerator's duty cycle metrics and scale up when either metrics exceeds its target value while scale down if both metrics are under their target value. The default target value is 60 for both metrics. If machine_spec.accelerator_count is 0, the autoscaling will be based on CPU utilization metric only with default target value 60 if not explicitly set. For example, in the case of Online Prediction, if you want to override target CPU utilization to 80, you should set autoscaling_metric_specs.metric_name to `aiplatform.googleapis.com/prediction/online/cpu/utilization` and autoscaling_metric_specs.target to `80`."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpec",
          "description": "Immutable. The specification of a single machine used by the prediction."
        },
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of replicas this DeployedModel may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale the model to that many replicas is guaranteed (barring service outages). If traffic against the DeployedModel increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, will use min_replica_count as the default value. The value of this field impacts the charge against Vertex CPU and GPU quotas. Specifically, you will be charged for (max_replica_count * number of cores in the selected machine type) and (max_replica_count * number of GPUs per replica in the selected machine type)."
        },
        "minReplicaCount": {
          "type": "integer",
          "description": "Immutable. The minimum number of machine replicas this DeployedModel will be always deployed on. This value must be greater than or equal to 1. If traffic against the DeployedModel increases, it may dynamically be deployed onto more replicas, and as traffic decreases, some of these extra replicas may be freed."
        }
      },
      "type": "object",
      "required": [
        "machineSpec",
        "minReplicaCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DedicatedResourcesResponse": {
      "description": "A description of resources that are dedicated to a DeployedModel, and that need a higher degree of manual configuration.",
      "properties": {
        "autoscalingMetricSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1AutoscalingMetricSpecResponse"
          },
          "description": "Immutable. The metric specifications that overrides a resource utilization metric (CPU utilization, accelerator's duty cycle, and so on) target value (default to 60 if not set). At most one entry is allowed per metric. If machine_spec.accelerator_count is above 0, the autoscaling will be based on both CPU utilization and accelerator's duty cycle metrics and scale up when either metrics exceeds its target value while scale down if both metrics are under their target value. The default target value is 60 for both metrics. If machine_spec.accelerator_count is 0, the autoscaling will be based on CPU utilization metric only with default target value 60 if not explicitly set. For example, in the case of Online Prediction, if you want to override target CPU utilization to 80, you should set autoscaling_metric_specs.metric_name to `aiplatform.googleapis.com/prediction/online/cpu/utilization` and autoscaling_metric_specs.target to `80`."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpecResponse",
          "description": "Immutable. The specification of a single machine used by the prediction."
        },
        "maxReplicaCount": {
          "type": "integer",
          "description": "Immutable. The maximum number of replicas this DeployedModel may be deployed on when the traffic against it increases. If the requested value is too large, the deployment will error, but if deployment succeeds then the ability to scale the model to that many replicas is guaranteed (barring service outages). If traffic against the DeployedModel increases beyond what its replicas at maximum may handle, a portion of the traffic will be dropped. If this value is not provided, will use min_replica_count as the default value. The value of this field impacts the charge against Vertex CPU and GPU quotas. Specifically, you will be charged for (max_replica_count * number of cores in the selected machine type) and (max_replica_count * number of GPUs per replica in the selected machine type)."
        },
        "minReplicaCount": {
          "type": "integer",
          "description": "Immutable. The minimum number of machine replicas this DeployedModel will be always deployed on. This value must be greater than or equal to 1. If traffic against the DeployedModel increases, it may dynamically be deployed onto more replicas, and as traffic decreases, some of these extra replicas may be freed."
        }
      },
      "type": "object",
      "required": [
        "autoscalingMetricSpecs",
        "machineSpec",
        "maxReplicaCount",
        "minReplicaCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DeployedIndexAuthConfigAuthProviderResponse": {
      "description": "Configuration for an authentication provider, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
      "properties": {
        "allowedIssuers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of allowed JWT issuers. Each entry must be a valid Google service account, in the following format: `service-account-name@project-id.iam.gserviceaccount.com`"
        },
        "audiences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted."
        }
      },
      "type": "object",
      "required": [
        "allowedIssuers",
        "audiences"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DeployedIndexAuthConfigResponse": {
      "description": "Used to set up the auth on the DeployedIndex's private endpoint.",
      "properties": {
        "authProvider": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedIndexAuthConfigAuthProviderResponse",
          "description": "Defines the authentication provider that the DeployedIndex uses."
        }
      },
      "type": "object",
      "required": [
        "authProvider"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DeployedIndexRefResponse": {
      "description": "Points to a DeployedIndex.",
      "properties": {
        "deployedIndexId": {
          "type": "string",
          "description": "Immutable. The ID of the DeployedIndex in the above IndexEndpoint."
        },
        "indexEndpoint": {
          "type": "string",
          "description": "Immutable. A resource name of the IndexEndpoint."
        }
      },
      "type": "object",
      "required": [
        "deployedIndexId",
        "indexEndpoint"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DeployedIndexResponse": {
      "description": "A deployment of an Index. IndexEndpoints contain one or more DeployedIndexes.",
      "properties": {
        "automaticResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1AutomaticResourcesResponse",
          "description": "Optional. A description of resources that the DeployedIndex uses, which to large degree are decided by Vertex AI, and optionally allows only a modest additional configuration. If min_replica_count is not set, the default value is 2 (we don't provide SLA when min_replica_count=1). If max_replica_count is not set, the default value is min_replica_count. The max allowed replica count is 1000."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the DeployedIndex was created."
        },
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DedicatedResourcesResponse",
          "description": "Optional. A description of resources that are dedicated to the DeployedIndex, and that need a higher degree of manual configuration. The field min_replica_count must be set to a value strictly greater than 0, or else validation will fail. We don't provide SLA when min_replica_count=1. If max_replica_count is not set, the default value is min_replica_count. The max allowed replica count is 1000. Available machine types for SMALL shard: e2-standard-2 and all machine types available for MEDIUM and LARGE shard. Available machine types for MEDIUM shard: e2-standard-16 and all machine types available for LARGE shard. Available machine types for LARGE shard: e2-highmem-16, n2d-standard-32. n1-standard-16 and n1-standard-32 are still available, but we recommend e2-standard-16 and e2-highmem-16 for cost efficiency."
        },
        "deployedIndexAuthConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedIndexAuthConfigResponse",
          "description": "Optional. If set, the authentication is enabled for the private endpoint."
        },
        "deploymentGroup": {
          "type": "string",
          "description": "Optional. The deployment group can be no longer than 64 characters (eg: 'test', 'prod'). If not set, we will use the 'default' deployment group. Creating `deployment_groups` with `reserved_ip_ranges` is a recommended practice when the peered network has multiple peering ranges. This creates your deployments from predictable IP spaces for easier traffic administration. Also, one deployment_group (except 'default') can only be used with the same reserved_ip_ranges which means if the deployment_group has been used with reserved_ip_ranges: [a, b, c], using it with [a, b] or [d, e] is disallowed. Note: we only support up to 5 deployment groups(not including 'default')."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the DeployedIndex. If not provided upon creation, the Index's display_name is used."
        },
        "enableAccessLogging": {
          "type": "boolean",
          "description": "Optional. If true, private endpoint's access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each MatchRequest. Note that logs may incur a cost, especially if the deployed index receives a high queries per second rate (QPS). Estimate your costs before enabling this option."
        },
        "index": {
          "type": "string",
          "description": "The name of the Index this is the deployment of. We may refer to this Index as the DeployedIndex's \"original\" Index."
        },
        "indexSyncTime": {
          "type": "string",
          "description": "The DeployedIndex may depend on various data on its original Index. Additionally when certain changes to the original Index are being done (e.g. when what the Index contains is being changed) the DeployedIndex may be asynchronously updated in the background to reflect these changes. If this timestamp's value is at least the Index.update_time of the original Index, it means that this DeployedIndex and the original Index are in sync. If this timestamp is older, then to see which updates this DeployedIndex already contains (and which it does not), one must list the operations that are running on the original Index. Only the successfully completed Operations with update_time equal or before this sync time are contained in this DeployedIndex."
        },
        "privateEndpoints": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1IndexPrivateEndpointsResponse",
          "description": "Provides paths for users to send requests directly to the deployed index services running on Cloud via private services access. This field is populated if network is configured."
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of reserved ip ranges under the VPC network that can be used for this DeployedIndex. If set, we will deploy the index within the provided ip ranges. Otherwise, the index might be deployed to any ip ranges under the provided VPC network. The value should be the name of the address (https://cloud.google.com/compute/docs/reference/rest/v1/addresses) Example: ['vertex-ai-ip-range']. For more information about subnets and network IP ranges, please see https://cloud.google.com/vpc/docs/subnets#manually_created_subnet_ip_ranges."
        }
      },
      "type": "object",
      "required": [
        "automaticResources",
        "createTime",
        "dedicatedResources",
        "deployedIndexAuthConfig",
        "deploymentGroup",
        "displayName",
        "enableAccessLogging",
        "index",
        "indexSyncTime",
        "privateEndpoints",
        "reservedIpRanges"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DeployedModelRefResponse": {
      "description": "Points to a DeployedModel.",
      "properties": {
        "deployedModelId": {
          "type": "string",
          "description": "Immutable. An ID of a DeployedModel in the above Endpoint."
        },
        "endpoint": {
          "type": "string",
          "description": "Immutable. A resource name of an Endpoint."
        }
      },
      "type": "object",
      "required": [
        "deployedModelId",
        "endpoint"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DeployedModelResponse": {
      "description": "A deployment of a Model. Endpoints contain one or more DeployedModels.",
      "properties": {
        "automaticResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1AutomaticResourcesResponse",
          "description": "A description of resources that to large degree are decided by Vertex AI, and require only a modest additional configuration."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the DeployedModel was created."
        },
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DedicatedResourcesResponse",
          "description": "A description of resources that are dedicated to the DeployedModel, and that need a higher degree of manual configuration."
        },
        "disableExplanations": {
          "type": "boolean",
          "description": "If true, deploy the model without explainable feature, regardless the existence of Model.explanation_spec or explanation_spec."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the DeployedModel. If not provided upon creation, the Model's display_name is used."
        },
        "enableAccessLogging": {
          "type": "boolean",
          "description": "If true, online prediction access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each prediction request. Note that logs may incur a cost, especially if your project receives prediction requests at a high queries per second rate (QPS). Estimate your costs before enabling this option."
        },
        "enableContainerLogging": {
          "type": "boolean",
          "description": "If true, the container of the DeployedModel instances will send `stderr` and `stdout` streams to Cloud Logging. Only supported for custom-trained Models and AutoML Tabular Models."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationSpecResponse",
          "description": "Explanation configuration for this DeployedModel. When deploying a Model using EndpointService.DeployModel, this value overrides the value of Model.explanation_spec. All fields of explanation_spec are optional in the request. If a field of explanation_spec is not populated, the value of the same field of Model.explanation_spec is inherited. If the corresponding Model.explanation_spec is not populated, all fields of the explanation_spec will be used for the explanation configuration."
        },
        "model": {
          "type": "string",
          "description": "The resource name of the Model that this is the deployment of. Note that the Model may be in a different location than the DeployedModel's Endpoint. The resource name may contain version id or version alias to specify the version. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` if no version is specified, the default version will be deployed."
        },
        "modelVersionId": {
          "type": "string",
          "description": "The version ID of the model that is deployed."
        },
        "privateEndpoints": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PrivateEndpointsResponse",
          "description": "Provide paths for users to send predict/explain/health requests directly to the deployed model services running on Cloud via private services access. This field is populated if network is configured."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the DeployedModel's container runs as. Specify the email address of the service account. If this service account is not specified, the container runs as a service account that doesn't have access to the resource project. Users deploying the Model must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "sharedResources": {
          "type": "string",
          "description": "The resource name of the shared DeploymentResourcePool to deploy on. Format: `projects/{project}/locations/{location}/deploymentResourcePools/{deployment_resource_pool}`"
        }
      },
      "type": "object",
      "required": [
        "automaticResources",
        "createTime",
        "dedicatedResources",
        "disableExplanations",
        "displayName",
        "enableAccessLogging",
        "enableContainerLogging",
        "explanationSpec",
        "model",
        "modelVersionId",
        "privateEndpoints",
        "serviceAccount",
        "sharedResources"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DiskSpec": {
      "description": "Represents the spec of disk options.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Size in GB of the boot disk (default is 100GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Type of the boot disk (default is \"pd-ssd\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) or \"pd-standard\" (Persistent Disk Hard Disk Drive)."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1DiskSpecResponse": {
      "description": "Represents the spec of disk options.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Size in GB of the boot disk (default is 100GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Type of the boot disk (default is \"pd-ssd\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) or \"pd-standard\" (Persistent Disk Hard Disk Drive)."
        }
      },
      "type": "object",
      "required": [
        "bootDiskSizeGb",
        "bootDiskType"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec": {
      "description": "Represents a customer-managed encryption key spec that can be applied to a top-level resource.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse": {
      "description": "Represents a customer-managed encryption key spec that can be applied to a top-level resource.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1EnvVar": {
      "description": "Represents an environment variable present in a Container or Python Module.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable. Must be a valid C identifier."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1EnvVarResponse": {
      "description": "Represents an environment variable present in a Container or Python Module.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable. Must be a valid C identifier."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1Examples": {
      "description": "Example-based explainability that returns the nearest neighbors from the provided dataset.",
      "properties": {
        "exampleGcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExamplesExampleGcsSource",
          "description": "The Cloud Storage input instances."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsSource",
          "description": "The Cloud Storage locations that contain the instances to be indexed for approximate nearest neighbor search."
        },
        "nearestNeighborSearchConfig": {
          "$ref": "pulumi.json#/Any",
          "description": "The full configuration for the generated index, the semantics are the same as metadata and should match [NearestNeighborSearchConfig](https://cloud.google.com/vertex-ai/docs/explainable-ai/configuring-explanations-example-based#nearest-neighbor-search-config)."
        },
        "neighborCount": {
          "type": "integer",
          "description": "The number of neighbors to return when querying for examples."
        },
        "presets": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1Presets",
          "description": "Simplified preset configuration, which automatically sets configuration values based on the desired query speed-precision trade-off and modality."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExamplesExampleGcsSource": {
      "description": "The Cloud Storage input instances.",
      "properties": {
        "dataFormat": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExamplesExampleGcsSourceDataFormat",
          "description": "The format in which instances are given, if not specified, assume it's JSONL format. Currently only JSONL format is supported."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsSource",
          "description": "The Cloud Storage location for the input instances."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExamplesExampleGcsSourceDataFormat": {
      "description": "The format in which instances are given, if not specified, assume it's JSONL format. Currently only JSONL format is supported.",
      "type": "string",
      "enum": [
        {
          "name": "DataFormatUnspecified",
          "description": "Format unspecified, used when unset.",
          "value": "DATA_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Jsonl",
          "description": "Examples are stored in JSONL files.",
          "value": "JSONL"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExamplesExampleGcsSourceResponse": {
      "description": "The Cloud Storage input instances.",
      "properties": {
        "dataFormat": {
          "type": "string",
          "description": "The format in which instances are given, if not specified, assume it's JSONL format. Currently only JSONL format is supported."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsSourceResponse",
          "description": "The Cloud Storage location for the input instances."
        }
      },
      "type": "object",
      "required": [
        "dataFormat",
        "gcsSource"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExamplesResponse": {
      "description": "Example-based explainability that returns the nearest neighbors from the provided dataset.",
      "properties": {
        "exampleGcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExamplesExampleGcsSourceResponse",
          "description": "The Cloud Storage input instances."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsSourceResponse",
          "description": "The Cloud Storage locations that contain the instances to be indexed for approximate nearest neighbor search."
        },
        "nearestNeighborSearchConfig": {
          "$ref": "pulumi.json#/Any",
          "description": "The full configuration for the generated index, the semantics are the same as metadata and should match [NearestNeighborSearchConfig](https://cloud.google.com/vertex-ai/docs/explainable-ai/configuring-explanations-example-based#nearest-neighbor-search-config)."
        },
        "neighborCount": {
          "type": "integer",
          "description": "The number of neighbors to return when querying for examples."
        },
        "presets": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PresetsResponse",
          "description": "Simplified preset configuration, which automatically sets configuration values based on the desired query speed-precision trade-off and modality."
        }
      },
      "type": "object",
      "required": [
        "exampleGcsSource",
        "gcsSource",
        "nearestNeighborSearchConfig",
        "neighborCount",
        "presets"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExecutionResponse": {
      "description": "Instance of a general execution.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Execution was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Execution"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Execution. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Executions. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Execution (System labels are excluded)."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Execution. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Execution."
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in `schema_title` to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "type": "string",
          "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Execution was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "metadata",
        "name",
        "schemaTitle",
        "schemaVersion",
        "state",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExplanationMetadata": {
      "description": "Metadata describing the Model's input and output for explanation.",
      "properties": {
        "featureAttributionsSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing the format of the feature attributions. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML tabular Models always have this field populated by Vertex AI. Note: The URI given on output may be different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "inputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from feature names to feature input metadata. Keys are the name of the features. Values are the specification of the feature. An empty InputMetadata is valid. It describes a text feature which has the name specified as the key in ExplanationMetadata.inputs. The baseline of the empty feature is chosen by Vertex AI. For Vertex AI-provided Tensorflow images, the key can be any friendly name of the feature. Once specified, featureAttributions are keyed by this key (if not grouped with another feature). For custom images, the key must match with the key in instance."
        },
        "latentSpaceSource": {
          "type": "string",
          "description": "Name of the source to generate embeddings for example based explanations."
        },
        "outputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from output names to output metadata. For Vertex AI-provided Tensorflow images, keys can be any user defined string that consists of any UTF-8 characters. For custom images, keys are the name of the output field in the prediction to be explained. Currently only one key is allowed."
        }
      },
      "type": "object",
      "required": [
        "inputs",
        "outputs"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExplanationMetadataResponse": {
      "description": "Metadata describing the Model's input and output for explanation.",
      "properties": {
        "featureAttributionsSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing the format of the feature attributions. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML tabular Models always have this field populated by Vertex AI. Note: The URI given on output may be different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "inputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from feature names to feature input metadata. Keys are the name of the features. Values are the specification of the feature. An empty InputMetadata is valid. It describes a text feature which has the name specified as the key in ExplanationMetadata.inputs. The baseline of the empty feature is chosen by Vertex AI. For Vertex AI-provided Tensorflow images, the key can be any friendly name of the feature. Once specified, featureAttributions are keyed by this key (if not grouped with another feature). For custom images, the key must match with the key in instance."
        },
        "latentSpaceSource": {
          "type": "string",
          "description": "Name of the source to generate embeddings for example based explanations."
        },
        "outputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from output names to output metadata. For Vertex AI-provided Tensorflow images, keys can be any user defined string that consists of any UTF-8 characters. For custom images, keys are the name of the output field in the prediction to be explained. Currently only one key is allowed."
        }
      },
      "type": "object",
      "required": [
        "featureAttributionsSchemaUri",
        "inputs",
        "latentSpaceSource",
        "outputs"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExplanationParameters": {
      "description": "Parameters to configure explaining for Model's predictions.",
      "properties": {
        "examples": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1Examples",
          "description": "Example-based explanations that returns the nearest neighbors from the provided dataset."
        },
        "integratedGradientsAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1IntegratedGradientsAttribution",
          "description": "An attribution method that computes Aumann-Shapley values taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365"
        },
        "outputIndices": {
          "type": "array",
          "items": {
            "$ref": "pulumi.json#/Any"
          },
          "description": "If populated, only returns attributions that have output_index contained in output_indices. It must be an ndarray of integers, with the same shape of the output it's explaining. If not populated, returns attributions for top_k indices of outputs. If neither top_k nor output_indices is populated, returns the argmax index of the outputs. Only applicable to Models that predict multiple outputs (e,g, multi-class Models that predict multiple classes)."
        },
        "sampledShapleyAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SampledShapleyAttribution",
          "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features. Refer to this paper for model details: https://arxiv.org/abs/1306.4265."
        },
        "topK": {
          "type": "integer",
          "description": "If populated, returns attributions for top K indices of outputs (defaults to 1). Only applies to Models that predicts more than one outputs (e,g, multi-class Models). When set to -1, returns explanations for all outputs."
        },
        "xraiAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1XraiAttribution",
          "description": "An attribution method that redistributes Integrated Gradients attribution to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 XRAI currently performs better on natural images, like a picture of a house or an animal. If the images are taken in artificial environments, like a lab or manufacturing line, or from diagnostic equipment, like x-rays or quality-control cameras, use Integrated Gradients instead."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExplanationParametersResponse": {
      "description": "Parameters to configure explaining for Model's predictions.",
      "properties": {
        "examples": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExamplesResponse",
          "description": "Example-based explanations that returns the nearest neighbors from the provided dataset."
        },
        "integratedGradientsAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1IntegratedGradientsAttributionResponse",
          "description": "An attribution method that computes Aumann-Shapley values taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365"
        },
        "outputIndices": {
          "type": "array",
          "items": {
            "$ref": "pulumi.json#/Any"
          },
          "description": "If populated, only returns attributions that have output_index contained in output_indices. It must be an ndarray of integers, with the same shape of the output it's explaining. If not populated, returns attributions for top_k indices of outputs. If neither top_k nor output_indices is populated, returns the argmax index of the outputs. Only applicable to Models that predict multiple outputs (e,g, multi-class Models that predict multiple classes)."
        },
        "sampledShapleyAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SampledShapleyAttributionResponse",
          "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features. Refer to this paper for model details: https://arxiv.org/abs/1306.4265."
        },
        "topK": {
          "type": "integer",
          "description": "If populated, returns attributions for top K indices of outputs (defaults to 1). Only applies to Models that predicts more than one outputs (e,g, multi-class Models). When set to -1, returns explanations for all outputs."
        },
        "xraiAttribution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1XraiAttributionResponse",
          "description": "An attribution method that redistributes Integrated Gradients attribution to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 XRAI currently performs better on natural images, like a picture of a house or an animal. If the images are taken in artificial environments, like a lab or manufacturing line, or from diagnostic equipment, like x-rays or quality-control cameras, use Integrated Gradients instead."
        }
      },
      "type": "object",
      "required": [
        "examples",
        "integratedGradientsAttribution",
        "outputIndices",
        "sampledShapleyAttribution",
        "topK",
        "xraiAttribution"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExplanationSpec": {
      "description": "Specification of Model explanation.",
      "properties": {
        "metadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationMetadata",
          "description": "Optional. Metadata describing the Model's input and output for explanation."
        },
        "parameters": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationParameters",
          "description": "Parameters that configure explaining of the Model's predictions."
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ExplanationSpecResponse": {
      "description": "Specification of Model explanation.",
      "properties": {
        "metadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationMetadataResponse",
          "description": "Optional. Metadata describing the Model's input and output for explanation."
        },
        "parameters": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationParametersResponse",
          "description": "Parameters that configure explaining of the Model's predictions."
        }
      },
      "type": "object",
      "required": [
        "metadata",
        "parameters"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureGroupBigQuery": {
      "description": "Input source type for BigQuery Tables and Views.",
      "properties": {
        "bigQuerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQuerySource",
          "description": "Immutable. The BigQuery source URI that points to either a BigQuery Table or View."
        },
        "entityIdColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Columns to construct entity_id / row keys. Currently only supports 1 entity_id_column. If not provided defaults to `entity_id`."
        }
      },
      "type": "object",
      "required": [
        "bigQuerySource"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureGroupBigQueryResponse": {
      "description": "Input source type for BigQuery Tables and Views.",
      "properties": {
        "bigQuerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQuerySourceResponse",
          "description": "Immutable. The BigQuery source URI that points to either a BigQuery Table or View."
        },
        "entityIdColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Columns to construct entity_id / row keys. Currently only supports 1 entity_id_column. If not provided defaults to `entity_id`."
        }
      },
      "type": "object",
      "required": [
        "bigQuerySource",
        "entityIdColumns"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureMonitoringStatsAnomalyResponse": {
      "description": "A list of historical SnapshotAnalysis or ImportFeaturesAnalysis stats requested by user, sorted by FeatureStatsAnomaly.start_time descending.",
      "properties": {
        "featureStatsAnomaly": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomalyResponse",
          "description": "The stats and anomalies generated at specific timestamp."
        },
        "objective": {
          "type": "string",
          "description": "The objective for each stats."
        }
      },
      "type": "object",
      "required": [
        "featureStatsAnomaly",
        "objective"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureNoiseSigma": {
      "description": "Noise sigma by features. Noise sigma represents the standard deviation of the gaussian kernel that will be used to add noise to interpolated inputs prior to computing gradients.",
      "properties": {
        "noiseSigma": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureNoiseSigmaNoiseSigmaForFeature"
          },
          "description": "Noise sigma per feature. No noise is added to features that are not set."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureNoiseSigmaNoiseSigmaForFeature": {
      "description": "Noise sigma for a single feature.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the input feature for which noise sigma is provided. The features are defined in explanation metadata inputs."
        },
        "sigma": {
          "type": "number",
          "description": "This represents the standard deviation of the Gaussian kernel that will be used to add noise to the feature prior to computing gradients. Similar to noise_sigma but represents the noise added to the current feature. Defaults to 0.1."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureNoiseSigmaNoiseSigmaForFeatureResponse": {
      "description": "Noise sigma for a single feature.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the input feature for which noise sigma is provided. The features are defined in explanation metadata inputs."
        },
        "sigma": {
          "type": "number",
          "description": "This represents the standard deviation of the Gaussian kernel that will be used to add noise to the feature prior to computing gradients. Similar to noise_sigma but represents the noise added to the current feature. Defaults to 0.1."
        }
      },
      "type": "object",
      "required": [
        "name",
        "sigma"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureNoiseSigmaResponse": {
      "description": "Noise sigma by features. Noise sigma represents the standard deviation of the gaussian kernel that will be used to add noise to interpolated inputs prior to computing gradients.",
      "properties": {
        "noiseSigma": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureNoiseSigmaNoiseSigmaForFeatureResponse"
          },
          "description": "Noise sigma per feature. No noise is added to features that are not set."
        }
      },
      "type": "object",
      "required": [
        "noiseSigma"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtable": {
      "properties": {
        "autoScaling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtableAutoScaling",
          "description": "Autoscaling config applied to Bigtable Instance."
        }
      },
      "type": "object",
      "required": [
        "autoScaling"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtableAutoScaling": {
      "properties": {
        "cpuUtilizationTarget": {
          "type": "integer",
          "description": "Optional. A percentage of the cluster's CPU capacity. Can be from 10% to 80%. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set will default to 50%."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes to scale up to. Must be greater than or equal to min_node_count, and less than or equal to 10 times of 'min_node_count'."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes to scale down to. Must be greater than or equal to 1."
        }
      },
      "type": "object",
      "required": [
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtableAutoScalingResponse": {
      "properties": {
        "cpuUtilizationTarget": {
          "type": "integer",
          "description": "Optional. A percentage of the cluster's CPU capacity. Can be from 10% to 80%. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set will default to 50%."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes to scale up to. Must be greater than or equal to min_node_count, and less than or equal to 10 times of 'min_node_count'."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes to scale down to. Must be greater than or equal to 1."
        }
      },
      "type": "object",
      "required": [
        "cpuUtilizationTarget",
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtableResponse": {
      "properties": {
        "autoScaling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtableAutoScalingResponse",
          "description": "Autoscaling config applied to Bigtable Instance."
        }
      },
      "type": "object",
      "required": [
        "autoScaling"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreDedicatedServingEndpoint": {
      "description": "The dedicated serving endpoint for this FeatureOnlineStore. Only need to set when you choose Optimized storage type or enable EmbeddingManagement. Will use public endpoint by default.",
      "properties": {
        "privateServiceConnectConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PrivateServiceConnectConfig",
          "description": "Optional. Private service connect config. If PrivateServiceConnectConfig.enable_private_service_connect set to true, customers will use private service connection to send request. Otherwise, the connection will set to public endpoint."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreDedicatedServingEndpointResponse": {
      "description": "The dedicated serving endpoint for this FeatureOnlineStore. Only need to set when you choose Optimized storage type or enable EmbeddingManagement. Will use public endpoint by default.",
      "properties": {
        "privateServiceConnectConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PrivateServiceConnectConfigResponse",
          "description": "Optional. Private service connect config. If PrivateServiceConnectConfig.enable_private_service_connect set to true, customers will use private service connection to send request. Otherwise, the connection will set to public endpoint."
        },
        "publicEndpointDomainName": {
          "type": "string",
          "description": "This field will be populated with the domain name to use for this FeatureOnlineStore"
        },
        "serviceAttachment": {
          "type": "string",
          "description": "The name of the service attachment resource. Populated if private service connect is enabled and after FeatureViewSync is created."
        }
      },
      "type": "object",
      "required": [
        "privateServiceConnectConfig",
        "publicEndpointDomainName",
        "serviceAttachment"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreEmbeddingManagement": {
      "description": "Contains settings for embedding management.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Immutable. Whether to enable embedding management in this FeatureOnlineStore. It's immutable after creation to ensure the FeatureOnlineStore availability."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreEmbeddingManagementResponse": {
      "description": "Contains settings for embedding management.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Immutable. Whether to enable embedding management in this FeatureOnlineStore. It's immutable after creation to ensure the FeatureOnlineStore availability."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreOptimized": {
      "description": "Optimized storage type",
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreOptimizedResponse": {
      "description": "Optimized storage type",
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomaly": {
      "description": "Stats and Anomaly generated at specific timestamp for specific Feature. The start_time and end_time are used to define the time range of the dataset that current stats belongs to, e.g. prediction traffic is bucketed into prediction datasets by time window. If the Dataset is not defined by time window, start_time = end_time. Timestamp of the stats and anomalies always refers to end_time. Raw stats and anomalies are stored in stats_uri or anomaly_uri in the tensorflow defined protos. Field data_stats contains almost identical information with the raw stats in Vertex AI defined proto, for UI to display.",
      "properties": {
        "anomalyDetectionThreshold": {
          "type": "number",
          "description": "This is the threshold used when detecting anomalies. The threshold can be changed by user, so this one might be different from ThresholdConfig.value."
        },
        "anomalyUri": {
          "type": "string",
          "description": "Path of the anomaly file for current feature values in Cloud Storage bucket. Format: gs:////anomalies. Example: gs://monitoring_bucket/feature_name/anomalies. Stats are stored as binary format with Protobuf message Anoamlies are stored as binary format with Protobuf message [tensorflow.metadata.v0.AnomalyInfo] (https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/anomalies.proto)."
        },
        "distributionDeviation": {
          "type": "number",
          "description": "Deviation from the current stats to baseline stats. 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence."
        },
        "endTime": {
          "type": "string",
          "description": "The end timestamp of window where stats were generated. For objectives where time window doesn't make sense (e.g. Featurestore Snapshot Monitoring), end_time indicates the timestamp of the data used to generate stats (e.g. timestamp we take snapshots for feature values)."
        },
        "score": {
          "type": "number",
          "description": "Feature importance score, only populated when cross-feature monitoring is enabled. For now only used to represent feature attribution score within range [0, 1] for ModelDeploymentMonitoringObjectiveType.FEATURE_ATTRIBUTION_SKEW and ModelDeploymentMonitoringObjectiveType.FEATURE_ATTRIBUTION_DRIFT."
        },
        "startTime": {
          "type": "string",
          "description": "The start timestamp of window where stats were generated. For objectives where time window doesn't make sense (e.g. Featurestore Snapshot Monitoring), start_time is only used to indicate the monitoring intervals, so it always equals to (end_time - monitoring_interval)."
        },
        "statsUri": {
          "type": "string",
          "description": "Path of the stats file for current feature values in Cloud Storage bucket. Format: gs:////stats. Example: gs://monitoring_bucket/feature_name/stats. Stats are stored as binary format with Protobuf message [tensorflow.metadata.v0.FeatureNameStatistics](https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/statistics.proto)."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomalyResponse": {
      "description": "Stats and Anomaly generated at specific timestamp for specific Feature. The start_time and end_time are used to define the time range of the dataset that current stats belongs to, e.g. prediction traffic is bucketed into prediction datasets by time window. If the Dataset is not defined by time window, start_time = end_time. Timestamp of the stats and anomalies always refers to end_time. Raw stats and anomalies are stored in stats_uri or anomaly_uri in the tensorflow defined protos. Field data_stats contains almost identical information with the raw stats in Vertex AI defined proto, for UI to display.",
      "properties": {
        "anomalyDetectionThreshold": {
          "type": "number",
          "description": "This is the threshold used when detecting anomalies. The threshold can be changed by user, so this one might be different from ThresholdConfig.value."
        },
        "anomalyUri": {
          "type": "string",
          "description": "Path of the anomaly file for current feature values in Cloud Storage bucket. Format: gs:////anomalies. Example: gs://monitoring_bucket/feature_name/anomalies. Stats are stored as binary format with Protobuf message Anoamlies are stored as binary format with Protobuf message [tensorflow.metadata.v0.AnomalyInfo] (https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/anomalies.proto)."
        },
        "distributionDeviation": {
          "type": "number",
          "description": "Deviation from the current stats to baseline stats. 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence."
        },
        "endTime": {
          "type": "string",
          "description": "The end timestamp of window where stats were generated. For objectives where time window doesn't make sense (e.g. Featurestore Snapshot Monitoring), end_time indicates the timestamp of the data used to generate stats (e.g. timestamp we take snapshots for feature values)."
        },
        "score": {
          "type": "number",
          "description": "Feature importance score, only populated when cross-feature monitoring is enabled. For now only used to represent feature attribution score within range [0, 1] for ModelDeploymentMonitoringObjectiveType.FEATURE_ATTRIBUTION_SKEW and ModelDeploymentMonitoringObjectiveType.FEATURE_ATTRIBUTION_DRIFT."
        },
        "startTime": {
          "type": "string",
          "description": "The start timestamp of window where stats were generated. For objectives where time window doesn't make sense (e.g. Featurestore Snapshot Monitoring), start_time is only used to indicate the monitoring intervals, so it always equals to (end_time - monitoring_interval)."
        },
        "statsUri": {
          "type": "string",
          "description": "Path of the stats file for current feature values in Cloud Storage bucket. Format: gs:////stats. Example: gs://monitoring_bucket/feature_name/stats. Stats are stored as binary format with Protobuf message [tensorflow.metadata.v0.FeatureNameStatistics](https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/statistics.proto)."
        }
      },
      "type": "object",
      "required": [
        "anomalyDetectionThreshold",
        "anomalyUri",
        "distributionDeviation",
        "endTime",
        "score",
        "startTime",
        "statsUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewBigQuerySource": {
      "properties": {
        "entityIdColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Columns to construct entity_id / row keys. Start by supporting 1 only."
        },
        "uri": {
          "type": "string",
          "description": "The BigQuery view URI that will be materialized on each sync trigger based on FeatureView.SyncConfig."
        }
      },
      "type": "object",
      "required": [
        "entityIdColumns",
        "uri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewBigQuerySourceResponse": {
      "properties": {
        "entityIdColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Columns to construct entity_id / row keys. Start by supporting 1 only."
        },
        "uri": {
          "type": "string",
          "description": "The BigQuery view URI that will be materialized on each sync trigger based on FeatureView.SyncConfig."
        }
      },
      "type": "object",
      "required": [
        "entityIdColumns",
        "uri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySource": {
      "description": "A Feature Registry source for features that need to be synced to Online Store.",
      "properties": {
        "featureGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySourceFeatureGroup"
          },
          "description": "List of features that need to be synced to Online Store."
        }
      },
      "type": "object",
      "required": [
        "featureGroups"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySourceFeatureGroup": {
      "description": "Features belonging to a single feature group that will be synced to Online Store.",
      "properties": {
        "featureGroupId": {
          "type": "string",
          "description": "Identifier of the feature group."
        },
        "featureIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of features under the feature group."
        }
      },
      "type": "object",
      "required": [
        "featureGroupId",
        "featureIds"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySourceFeatureGroupResponse": {
      "description": "Features belonging to a single feature group that will be synced to Online Store.",
      "properties": {
        "featureGroupId": {
          "type": "string",
          "description": "Identifier of the feature group."
        },
        "featureIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifiers of features under the feature group."
        }
      },
      "type": "object",
      "required": [
        "featureGroupId",
        "featureIds"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySourceResponse": {
      "description": "A Feature Registry source for features that need to be synced to Online Store.",
      "properties": {
        "featureGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySourceFeatureGroupResponse"
          },
          "description": "List of features that need to be synced to Online Store."
        }
      },
      "type": "object",
      "required": [
        "featureGroups"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewSyncConfig": {
      "properties": {
        "cron": {
          "type": "string",
          "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\"."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewSyncConfigResponse": {
      "properties": {
        "cron": {
          "type": "string",
          "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\"."
        }
      },
      "type": "object",
      "required": [
        "cron"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfig": {
      "description": "Configuration for vector search.",
      "properties": {
        "bruteForceConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigBruteForceConfig",
          "description": "Optional. Configuration options for using brute force search, which simply implements the standard linear search in the database for each query. It is primarily meant for benchmarking and to generate the ground truth for approximate search."
        },
        "crowdingColumn": {
          "type": "string",
          "description": "Optional. Column of crowding. This column contains crowding attribute which is a constraint on a neighbor list produced by nearest neighbor search requiring that no more than some value k' of the k neighbors returned have the same value of crowding_attribute."
        },
        "distanceMeasureType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigDistanceMeasureType",
          "description": "Optional. The distance measure used in nearest neighbor search."
        },
        "embeddingColumn": {
          "type": "string",
          "description": "Optional. Column of embedding. This column contains the source data to create index for vector search. embedding_column must be set when using vector search."
        },
        "embeddingDimension": {
          "type": "integer",
          "description": "Optional. The number of dimensions of the input embedding."
        },
        "filterColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Columns of features that're used to filter vector search results."
        },
        "treeAhConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigTreeAHConfig",
          "description": "Optional. Configuration options for the tree-AH algorithm (Shallow tree + Asymmetric Hashing). Please refer to this paper for more details: https://arxiv.org/abs/1908.10396"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigBruteForceConfig": {
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigBruteForceConfigResponse": {
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigDistanceMeasureType": {
      "description": "Optional. The distance measure used in nearest neighbor search.",
      "type": "string",
      "enum": [
        {
          "name": "DistanceMeasureTypeUnspecified",
          "description": "Should not be set.",
          "value": "DISTANCE_MEASURE_TYPE_UNSPECIFIED"
        },
        {
          "name": "SquaredL2Distance",
          "description": "Euclidean (L_2) Distance.",
          "value": "SQUARED_L2_DISTANCE"
        },
        {
          "name": "CosineDistance",
          "description": "Cosine Distance. Defined as 1 - cosine similarity. We strongly suggest using DOT_PRODUCT_DISTANCE + UNIT_L2_NORM instead of COSINE distance. Our algorithms have been more optimized for DOT_PRODUCT distance which, when combined with UNIT_L2_NORM, is mathematically equivalent to COSINE distance and results in the same ranking.",
          "value": "COSINE_DISTANCE"
        },
        {
          "name": "DotProductDistance",
          "description": "Dot Product Distance. Defined as a negative of the dot product.",
          "value": "DOT_PRODUCT_DISTANCE"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigResponse": {
      "description": "Configuration for vector search.",
      "properties": {
        "bruteForceConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigBruteForceConfigResponse",
          "description": "Optional. Configuration options for using brute force search, which simply implements the standard linear search in the database for each query. It is primarily meant for benchmarking and to generate the ground truth for approximate search."
        },
        "crowdingColumn": {
          "type": "string",
          "description": "Optional. Column of crowding. This column contains crowding attribute which is a constraint on a neighbor list produced by nearest neighbor search requiring that no more than some value k' of the k neighbors returned have the same value of crowding_attribute."
        },
        "distanceMeasureType": {
          "type": "string",
          "description": "Optional. The distance measure used in nearest neighbor search."
        },
        "embeddingColumn": {
          "type": "string",
          "description": "Optional. Column of embedding. This column contains the source data to create index for vector search. embedding_column must be set when using vector search."
        },
        "embeddingDimension": {
          "type": "integer",
          "description": "Optional. The number of dimensions of the input embedding."
        },
        "filterColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Columns of features that're used to filter vector search results."
        },
        "treeAhConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigTreeAHConfigResponse",
          "description": "Optional. Configuration options for the tree-AH algorithm (Shallow tree + Asymmetric Hashing). Please refer to this paper for more details: https://arxiv.org/abs/1908.10396"
        }
      },
      "type": "object",
      "required": [
        "bruteForceConfig",
        "crowdingColumn",
        "distanceMeasureType",
        "embeddingColumn",
        "embeddingDimension",
        "filterColumns",
        "treeAhConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigTreeAHConfig": {
      "properties": {
        "leafNodeEmbeddingCount": {
          "type": "string",
          "description": "Optional. Number of embeddings on each leaf node. The default value is 1000 if not set."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigTreeAHConfigResponse": {
      "properties": {
        "leafNodeEmbeddingCount": {
          "type": "string",
          "description": "Optional. Number of embeddings on each leaf node. The default value is 1000 if not set."
        }
      },
      "type": "object",
      "required": [
        "leafNodeEmbeddingCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfig": {
      "description": "Configuration of how features in Featurestore are monitored.",
      "properties": {
        "categoricalThresholdConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigThresholdConfig",
          "description": "Threshold for categorical features of anomaly detection. This is shared by all types of Featurestore Monitoring for categorical features (i.e. Features with type (Feature.ValueType) BOOL or STRING)."
        },
        "importFeaturesAnalysis": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigImportFeaturesAnalysis",
          "description": "The config for ImportFeatures Analysis Based Feature Monitoring."
        },
        "numericalThresholdConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigThresholdConfig",
          "description": "Threshold for numerical features of anomaly detection. This is shared by all objectives of Featurestore Monitoring for numerical features (i.e. Features with type (Feature.ValueType) DOUBLE or INT64)."
        },
        "snapshotAnalysis": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigSnapshotAnalysis",
          "description": "The config for Snapshot Analysis Based Feature Monitoring."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigImportFeaturesAnalysis": {
      "description": "Configuration of the Featurestore's ImportFeature Analysis Based Monitoring. This type of analysis generates statistics for values of each Feature imported by every ImportFeatureValues operation.",
      "properties": {
        "anomalyDetectionBaseline": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigImportFeaturesAnalysisAnomalyDetectionBaseline",
          "description": "The baseline used to do anomaly detection for the statistics generated by import features analysis."
        },
        "state": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigImportFeaturesAnalysisState",
          "description": "Whether to enable / disable / inherite default hebavior for import features analysis."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigImportFeaturesAnalysisAnomalyDetectionBaseline": {
      "description": "The baseline used to do anomaly detection for the statistics generated by import features analysis.",
      "type": "string",
      "enum": [
        {
          "name": "BaselineUnspecified",
          "description": "Should not be used.",
          "value": "BASELINE_UNSPECIFIED"
        },
        {
          "name": "LatestStats",
          "description": "Choose the later one statistics generated by either most recent snapshot analysis or previous import features analysis. If non of them exists, skip anomaly detection and only generate a statistics.",
          "value": "LATEST_STATS"
        },
        {
          "name": "MostRecentSnapshotStats",
          "description": "Use the statistics generated by the most recent snapshot analysis if exists.",
          "value": "MOST_RECENT_SNAPSHOT_STATS"
        },
        {
          "name": "PreviousImportFeaturesStats",
          "description": "Use the statistics generated by the previous import features analysis if exists.",
          "value": "PREVIOUS_IMPORT_FEATURES_STATS"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigImportFeaturesAnalysisResponse": {
      "description": "Configuration of the Featurestore's ImportFeature Analysis Based Monitoring. This type of analysis generates statistics for values of each Feature imported by every ImportFeatureValues operation.",
      "properties": {
        "anomalyDetectionBaseline": {
          "type": "string",
          "description": "The baseline used to do anomaly detection for the statistics generated by import features analysis."
        },
        "state": {
          "type": "string",
          "description": "Whether to enable / disable / inherite default hebavior for import features analysis."
        }
      },
      "type": "object",
      "required": [
        "anomalyDetectionBaseline",
        "state"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigImportFeaturesAnalysisState": {
      "description": "Whether to enable / disable / inherite default hebavior for import features analysis.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Should not be used.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "The default behavior of whether to enable the monitoring. EntityType-level config: disabled. Feature-level config: inherited from the configuration of EntityType this Feature belongs to.",
          "value": "DEFAULT"
        },
        {
          "name": "Enabled",
          "description": "Explicitly enables import features analysis. EntityType-level config: by default enables import features analysis for all Features under it. Feature-level config: enables import features analysis regardless of the EntityType-level config.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "Explicitly disables import features analysis. EntityType-level config: by default disables import features analysis for all Features under it. Feature-level config: disables import features analysis regardless of the EntityType-level config.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigResponse": {
      "description": "Configuration of how features in Featurestore are monitored.",
      "properties": {
        "categoricalThresholdConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigThresholdConfigResponse",
          "description": "Threshold for categorical features of anomaly detection. This is shared by all types of Featurestore Monitoring for categorical features (i.e. Features with type (Feature.ValueType) BOOL or STRING)."
        },
        "importFeaturesAnalysis": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigImportFeaturesAnalysisResponse",
          "description": "The config for ImportFeatures Analysis Based Feature Monitoring."
        },
        "numericalThresholdConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigThresholdConfigResponse",
          "description": "Threshold for numerical features of anomaly detection. This is shared by all objectives of Featurestore Monitoring for numerical features (i.e. Features with type (Feature.ValueType) DOUBLE or INT64)."
        },
        "snapshotAnalysis": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigSnapshotAnalysisResponse",
          "description": "The config for Snapshot Analysis Based Feature Monitoring."
        }
      },
      "type": "object",
      "required": [
        "categoricalThresholdConfig",
        "importFeaturesAnalysis",
        "numericalThresholdConfig",
        "snapshotAnalysis"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigSnapshotAnalysis": {
      "description": "Configuration of the Featurestore's Snapshot Analysis Based Monitoring. This type of analysis generates statistics for each Feature based on a snapshot of the latest feature value of each entities every monitoring_interval.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "The monitoring schedule for snapshot analysis. For EntityType-level config: unset / disabled = true indicates disabled by default for Features under it; otherwise by default enable snapshot analysis monitoring with monitoring_interval for Features under it. Feature-level config: disabled = true indicates disabled regardless of the EntityType-level config; unset monitoring_interval indicates going with EntityType-level config; otherwise run snapshot analysis monitoring with monitoring_interval regardless of the EntityType-level config. Explicitly Disable the snapshot analysis based monitoring."
        },
        "monitoringInterval": {
          "type": "string",
          "description": "Configuration of the snapshot analysis based monitoring pipeline running interval. The value is rolled up to full day. If both monitoring_interval_days and the deprecated `monitoring_interval` field are set when creating/updating EntityTypes/Features, monitoring_interval_days will be used."
        },
        "monitoringIntervalDays": {
          "type": "integer",
          "description": "Configuration of the snapshot analysis based monitoring pipeline running interval. The value indicates number of days."
        },
        "stalenessDays": {
          "type": "integer",
          "description": "Customized export features time window for snapshot analysis. Unit is one day. Default value is 3 weeks. Minimum value is 1 day. Maximum value is 4000 days."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigSnapshotAnalysisResponse": {
      "description": "Configuration of the Featurestore's Snapshot Analysis Based Monitoring. This type of analysis generates statistics for each Feature based on a snapshot of the latest feature value of each entities every monitoring_interval.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "The monitoring schedule for snapshot analysis. For EntityType-level config: unset / disabled = true indicates disabled by default for Features under it; otherwise by default enable snapshot analysis monitoring with monitoring_interval for Features under it. Feature-level config: disabled = true indicates disabled regardless of the EntityType-level config; unset monitoring_interval indicates going with EntityType-level config; otherwise run snapshot analysis monitoring with monitoring_interval regardless of the EntityType-level config. Explicitly Disable the snapshot analysis based monitoring."
        },
        "monitoringInterval": {
          "type": "string",
          "description": "Configuration of the snapshot analysis based monitoring pipeline running interval. The value is rolled up to full day. If both monitoring_interval_days and the deprecated `monitoring_interval` field are set when creating/updating EntityTypes/Features, monitoring_interval_days will be used."
        },
        "monitoringIntervalDays": {
          "type": "integer",
          "description": "Configuration of the snapshot analysis based monitoring pipeline running interval. The value indicates number of days."
        },
        "stalenessDays": {
          "type": "integer",
          "description": "Customized export features time window for snapshot analysis. Unit is one day. Default value is 3 weeks. Minimum value is 1 day. Maximum value is 4000 days."
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "monitoringInterval",
        "monitoringIntervalDays",
        "stalenessDays"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigThresholdConfig": {
      "description": "The config for Featurestore Monitoring threshold.",
      "properties": {
        "value": {
          "type": "number",
          "description": "Specify a threshold value that can trigger the alert. 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence. Each feature must have a non-zero threshold if they need to be monitored. Otherwise no alert will be triggered for that feature."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigThresholdConfigResponse": {
      "description": "The config for Featurestore Monitoring threshold.",
      "properties": {
        "value": {
          "type": "number",
          "description": "Specify a threshold value that can trigger the alert. 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence. Each feature must have a non-zero threshold if they need to be monitored. Otherwise no alert will be triggered for that feature."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfig": {
      "description": "OnlineServingConfig specifies the details for provisioning online serving resources.",
      "properties": {
        "fixedNodeCount": {
          "type": "integer",
          "description": "The number of nodes for the online store. The number of nodes doesn't scale automatically, but you can manually update the number of nodes. If set to 0, the featurestore will not have an online store and cannot be used for online serving."
        },
        "scaling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfigScaling",
          "description": "Online serving scaling configuration. Only one of `fixed_node_count` and `scaling` can be set. Setting one will reset the other."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfigResponse": {
      "description": "OnlineServingConfig specifies the details for provisioning online serving resources.",
      "properties": {
        "fixedNodeCount": {
          "type": "integer",
          "description": "The number of nodes for the online store. The number of nodes doesn't scale automatically, but you can manually update the number of nodes. If set to 0, the featurestore will not have an online store and cannot be used for online serving."
        },
        "scaling": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfigScalingResponse",
          "description": "Online serving scaling configuration. Only one of `fixed_node_count` and `scaling` can be set. Setting one will reset the other."
        }
      },
      "type": "object",
      "required": [
        "fixedNodeCount",
        "scaling"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfigScaling": {
      "description": "Online serving scaling configuration. If min_node_count and max_node_count are set to the same value, the cluster will be configured with the fixed number of node (no auto-scaling).",
      "properties": {
        "cpuUtilizationTarget": {
          "type": "integer",
          "description": "Optional. The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization), and is limited between 10 and 80. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set or set to 0, default to 50."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes to scale up to. Must be greater than min_node_count, and less than or equal to 10 times of 'min_node_count'."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes to scale down to. Must be greater than or equal to 1."
        }
      },
      "type": "object",
      "required": [
        "minNodeCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfigScalingResponse": {
      "description": "Online serving scaling configuration. If min_node_count and max_node_count are set to the same value, the cluster will be configured with the fixed number of node (no auto-scaling).",
      "properties": {
        "cpuUtilizationTarget": {
          "type": "integer",
          "description": "Optional. The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization), and is limited between 10 and 80. When a cluster's CPU utilization exceeds the target that you have set, Bigtable immediately adds nodes to the cluster. When CPU utilization is substantially lower than the target, Bigtable removes nodes. If not set or set to 0, default to 50."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes to scale up to. Must be greater than min_node_count, and less than or equal to 10 times of 'min_node_count'."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes to scale down to. Must be greater than or equal to 1."
        }
      },
      "type": "object",
      "required": [
        "cpuUtilizationTarget",
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FilterSplit": {
      "description": "Assigns input data to training, validation, and test sets based on the given filters, data pieces not matched by any filter are ignored. Currently only supported for Datasets containing DataItems. If any of the filters in this message are to match nothing, then they can be set as '-' (the minus sign). Supported only for unstructured Datasets. ",
      "properties": {
        "testFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to test the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        },
        "trainingFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to train the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        },
        "validationFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to validate the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        }
      },
      "type": "object",
      "required": [
        "testFilter",
        "trainingFilter",
        "validationFilter"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FilterSplitResponse": {
      "description": "Assigns input data to training, validation, and test sets based on the given filters, data pieces not matched by any filter are ignored. Currently only supported for Datasets containing DataItems. If any of the filters in this message are to match nothing, then they can be set as '-' (the minus sign). Supported only for unstructured Datasets. ",
      "properties": {
        "testFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to test the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        },
        "trainingFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to train the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        },
        "validationFilter": {
          "type": "string",
          "description": "A filter on DataItems of the Dataset. DataItems that match this filter are used to validate the Model. A filter with same syntax as the one used in DatasetService.ListDataItems may be used. If a single DataItem is matched by more than one of the FilterSplit filters, then it is assigned to the first set that applies to it in the training, validation, test order."
        }
      },
      "type": "object",
      "required": [
        "testFilter",
        "trainingFilter",
        "validationFilter"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FractionSplit": {
      "description": "Assigns the input data to training, validation, and test sets as per the given fractions. Any of `training_fraction`, `validation_fraction` and `test_fraction` may optionally be provided, they must sum to up to 1. If the provided ones sum to less than 1, the remainder is assigned to sets as decided by Vertex AI. If none of the fractions are set, by default roughly 80% of data is used for training, 10% for validation, and 10% for test.",
      "properties": {
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1FractionSplitResponse": {
      "description": "Assigns the input data to training, validation, and test sets as per the given fractions. Any of `training_fraction`, `validation_fraction` and `test_fraction` may optionally be provided, they must sum to up to 1. If the provided ones sum to less than 1, the remainder is assigned to sets as decided by Vertex AI. If none of the fractions are set, by default roughly 80% of data is used for training, 10% for validation, and 10% for test.",
      "properties": {
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "testFraction",
        "trainingFraction",
        "validationFraction"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1GcsDestination": {
      "description": "The Google Cloud Storage location where the output is to be written to.",
      "properties": {
        "outputUriPrefix": {
          "type": "string",
          "description": "Google Cloud Storage URI to output directory. If the uri doesn't end with '/', a '/' will be automatically appended. The directory is created if it doesn't exist."
        }
      },
      "type": "object",
      "required": [
        "outputUriPrefix"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1GcsDestinationResponse": {
      "description": "The Google Cloud Storage location where the output is to be written to.",
      "properties": {
        "outputUriPrefix": {
          "type": "string",
          "description": "Google Cloud Storage URI to output directory. If the uri doesn't end with '/', a '/' will be automatically appended. The directory is created if it doesn't exist."
        }
      },
      "type": "object",
      "required": [
        "outputUriPrefix"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1GcsSource": {
      "description": "The Google Cloud Storage location for the input content.",
      "properties": {
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud Storage URI(-s) to the input file(s). May contain wildcards. For more information on wildcards, see https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames."
        }
      },
      "type": "object",
      "required": [
        "uris"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1GcsSourceResponse": {
      "description": "The Google Cloud Storage location for the input content.",
      "properties": {
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud Storage URI(-s) to the input file(s). May contain wildcards. For more information on wildcards, see https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames."
        }
      },
      "type": "object",
      "required": [
        "uris"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1IndexPrivateEndpointsResponse": {
      "description": "IndexPrivateEndpoints proto is used to provide paths for users to send requests via private endpoints (e.g. private service access, private service connect). To send request via private service access, use match_grpc_address. To send request via private service connect, use service_attachment.",
      "properties": {
        "matchGrpcAddress": {
          "type": "string",
          "description": "The ip address used to send match gRPC requests."
        },
        "serviceAttachment": {
          "type": "string",
          "description": "The name of the service attachment resource. Populated if private service connect is enabled."
        }
      },
      "type": "object",
      "required": [
        "matchGrpcAddress",
        "serviceAttachment"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1IndexStatsResponse": {
      "description": "Stats of the Index.",
      "properties": {
        "shardsCount": {
          "type": "integer",
          "description": "The number of shards in the Index."
        },
        "vectorsCount": {
          "type": "string",
          "description": "The number of vectors in the Index."
        }
      },
      "type": "object",
      "required": [
        "shardsCount",
        "vectorsCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1InputDataConfig": {
      "description": "Specifies Vertex AI owned input data to be used for training, and possibly evaluating, the Model.",
      "properties": {
        "annotationSchemaUri": {
          "type": "string",
          "description": "Applicable only to custom training with Datasets that have DataItems and Annotations. Cloud Storage URI that points to a YAML file describing the annotation schema. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/annotation/ , note that the chosen schema must be consistent with metadata of the Dataset specified by dataset_id. Only Annotations that both match this schema and belong to DataItems not ignored by the split method are used in respectively training, validation or test role, depending on the role of the DataItem they are on. When used in conjunction with annotations_filter, the Annotations used for training are filtered by both annotations_filter and annotation_schema_uri."
        },
        "annotationsFilter": {
          "type": "string",
          "description": "Applicable only to Datasets that have DataItems and Annotations. A filter on Annotations of the Dataset. Only Annotations that both match this filter and belong to DataItems not ignored by the split method are used in respectively training, validation or test role, depending on the role of the DataItem they are on (for the auto-assigned that role is decided by Vertex AI). A filter with same syntax as the one used in ListAnnotations may be used, but note here it filters across all Annotations of the Dataset, and not just within a single DataItem."
        },
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQueryDestination",
          "description": "Only applicable to custom training with tabular Dataset with BigQuery source. The BigQuery project location where the training data is to be written to. In the given project a new dataset is created with name `dataset___` where timestamp is in YYYY_MM_DDThh_mm_ss_sssZ format. All training input data is written into that dataset. In the dataset three tables are created, `training`, `validation` and `test`. * AIP_DATA_FORMAT = \"bigquery\". * AIP_TRAINING_DATA_URI = \"bigquery_destination.dataset___.training\" * AIP_VALIDATION_DATA_URI = \"bigquery_destination.dataset___.validation\" * AIP_TEST_DATA_URI = \"bigquery_destination.dataset___.test\""
        },
        "datasetId": {
          "type": "string",
          "description": "The ID of the Dataset in the same Project and Location which data will be used to train the Model. The Dataset must use schema compatible with Model being trained, and what is compatible should be described in the used TrainingPipeline's training_task_definition. For tabular Datasets, all their data is exported to training, to pick and choose from."
        },
        "filterSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FilterSplit",
          "description": "Split based on the provided filters for each set."
        },
        "fractionSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FractionSplit",
          "description": "Split based on fractions defining the size of each set."
        },
        "gcsDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestination",
          "description": "The Cloud Storage location where the training data is to be written to. In the given directory a new directory is created with name: `dataset---` where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. All training input data is written into that directory. The Vertex AI environment variables representing Cloud Storage data URIs are represented in the Cloud Storage wildcard format to support sharded data. e.g.: \"gs://.../training-*.jsonl\" * AIP_DATA_FORMAT = \"jsonl\" for non-tabular data, \"csv\" for tabular data * AIP_TRAINING_DATA_URI = \"gcs_destination/dataset---/training-*.${AIP_DATA_FORMAT}\" * AIP_VALIDATION_DATA_URI = \"gcs_destination/dataset---/validation-*.${AIP_DATA_FORMAT}\" * AIP_TEST_DATA_URI = \"gcs_destination/dataset---/test-*.${AIP_DATA_FORMAT}\""
        },
        "persistMlUseAssignment": {
          "type": "boolean",
          "description": "Whether to persist the ML use assignment to data item system labels."
        },
        "predefinedSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredefinedSplit",
          "description": "Supported only for tabular Datasets. Split based on a predefined key."
        },
        "savedQueryId": {
          "type": "string",
          "description": "Only applicable to Datasets that have SavedQueries. The ID of a SavedQuery (annotation set) under the Dataset specified by dataset_id used for filtering Annotations for training. Only Annotations that are associated with this SavedQuery are used in respectively training. When used in conjunction with annotations_filter, the Annotations used for training are filtered by both saved_query_id and annotations_filter. Only one of saved_query_id and annotation_schema_uri should be specified as both of them represent the same thing: problem type."
        },
        "stratifiedSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StratifiedSplit",
          "description": "Supported only for tabular Datasets. Split based on the distribution of the specified column."
        },
        "timestampSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TimestampSplit",
          "description": "Supported only for tabular Datasets. Split based on the timestamp of the input data pieces."
        }
      },
      "type": "object",
      "required": [
        "datasetId"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1InputDataConfigResponse": {
      "description": "Specifies Vertex AI owned input data to be used for training, and possibly evaluating, the Model.",
      "properties": {
        "annotationSchemaUri": {
          "type": "string",
          "description": "Applicable only to custom training with Datasets that have DataItems and Annotations. Cloud Storage URI that points to a YAML file describing the annotation schema. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/annotation/ , note that the chosen schema must be consistent with metadata of the Dataset specified by dataset_id. Only Annotations that both match this schema and belong to DataItems not ignored by the split method are used in respectively training, validation or test role, depending on the role of the DataItem they are on. When used in conjunction with annotations_filter, the Annotations used for training are filtered by both annotations_filter and annotation_schema_uri."
        },
        "annotationsFilter": {
          "type": "string",
          "description": "Applicable only to Datasets that have DataItems and Annotations. A filter on Annotations of the Dataset. Only Annotations that both match this filter and belong to DataItems not ignored by the split method are used in respectively training, validation or test role, depending on the role of the DataItem they are on (for the auto-assigned that role is decided by Vertex AI). A filter with same syntax as the one used in ListAnnotations may be used, but note here it filters across all Annotations of the Dataset, and not just within a single DataItem."
        },
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQueryDestinationResponse",
          "description": "Only applicable to custom training with tabular Dataset with BigQuery source. The BigQuery project location where the training data is to be written to. In the given project a new dataset is created with name `dataset___` where timestamp is in YYYY_MM_DDThh_mm_ss_sssZ format. All training input data is written into that dataset. In the dataset three tables are created, `training`, `validation` and `test`. * AIP_DATA_FORMAT = \"bigquery\". * AIP_TRAINING_DATA_URI = \"bigquery_destination.dataset___.training\" * AIP_VALIDATION_DATA_URI = \"bigquery_destination.dataset___.validation\" * AIP_TEST_DATA_URI = \"bigquery_destination.dataset___.test\""
        },
        "datasetId": {
          "type": "string",
          "description": "The ID of the Dataset in the same Project and Location which data will be used to train the Model. The Dataset must use schema compatible with Model being trained, and what is compatible should be described in the used TrainingPipeline's training_task_definition. For tabular Datasets, all their data is exported to training, to pick and choose from."
        },
        "filterSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FilterSplitResponse",
          "description": "Split based on the provided filters for each set."
        },
        "fractionSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FractionSplitResponse",
          "description": "Split based on fractions defining the size of each set."
        },
        "gcsDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestinationResponse",
          "description": "The Cloud Storage location where the training data is to be written to. In the given directory a new directory is created with name: `dataset---` where timestamp is in YYYY-MM-DDThh:mm:ss.sssZ ISO-8601 format. All training input data is written into that directory. The Vertex AI environment variables representing Cloud Storage data URIs are represented in the Cloud Storage wildcard format to support sharded data. e.g.: \"gs://.../training-*.jsonl\" * AIP_DATA_FORMAT = \"jsonl\" for non-tabular data, \"csv\" for tabular data * AIP_TRAINING_DATA_URI = \"gcs_destination/dataset---/training-*.${AIP_DATA_FORMAT}\" * AIP_VALIDATION_DATA_URI = \"gcs_destination/dataset---/validation-*.${AIP_DATA_FORMAT}\" * AIP_TEST_DATA_URI = \"gcs_destination/dataset---/test-*.${AIP_DATA_FORMAT}\""
        },
        "persistMlUseAssignment": {
          "type": "boolean",
          "description": "Whether to persist the ML use assignment to data item system labels."
        },
        "predefinedSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredefinedSplitResponse",
          "description": "Supported only for tabular Datasets. Split based on a predefined key."
        },
        "savedQueryId": {
          "type": "string",
          "description": "Only applicable to Datasets that have SavedQueries. The ID of a SavedQuery (annotation set) under the Dataset specified by dataset_id used for filtering Annotations for training. Only Annotations that are associated with this SavedQuery are used in respectively training. When used in conjunction with annotations_filter, the Annotations used for training are filtered by both saved_query_id and annotations_filter. Only one of saved_query_id and annotation_schema_uri should be specified as both of them represent the same thing: problem type."
        },
        "stratifiedSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StratifiedSplitResponse",
          "description": "Supported only for tabular Datasets. Split based on the distribution of the specified column."
        },
        "timestampSplit": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TimestampSplitResponse",
          "description": "Supported only for tabular Datasets. Split based on the timestamp of the input data pieces."
        }
      },
      "type": "object",
      "required": [
        "annotationSchemaUri",
        "annotationsFilter",
        "bigqueryDestination",
        "datasetId",
        "filterSplit",
        "fractionSplit",
        "gcsDestination",
        "persistMlUseAssignment",
        "predefinedSplit",
        "savedQueryId",
        "stratifiedSplit",
        "timestampSplit"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1IntegratedGradientsAttribution": {
      "description": "An attribution method that computes the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
      "properties": {
        "blurBaselineConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BlurBaselineConfig",
          "description": "Config for IG with blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383"
        },
        "smoothGradConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SmoothGradConfig",
          "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf"
        },
        "stepCount": {
          "type": "integer",
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is within the desired error range. Valid range of its value is [1, 100], inclusively."
        }
      },
      "type": "object",
      "required": [
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1IntegratedGradientsAttributionResponse": {
      "description": "An attribution method that computes the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
      "properties": {
        "blurBaselineConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BlurBaselineConfigResponse",
          "description": "Config for IG with blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383"
        },
        "smoothGradConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SmoothGradConfigResponse",
          "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf"
        },
        "stepCount": {
          "type": "integer",
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is within the desired error range. Valid range of its value is [1, 100], inclusively."
        }
      },
      "type": "object",
      "required": [
        "blurBaselineConfig",
        "smoothGradConfig",
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1MachineSpec": {
      "description": "Specification of a single machine.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of accelerators to attach to the machine."
        },
        "acceleratorType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpecAcceleratorType",
          "description": "Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count."
        },
        "machineType": {
          "type": "string",
          "description": "Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required."
        },
        "tpuTopology": {
          "type": "string",
          "description": "Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: \"2x2x1\")."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1MachineSpecAcceleratorType": {
      "description": "Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorTypeUnspecified",
          "description": "Unspecified accelerator type, which means no accelerator.",
          "value": "ACCELERATOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "NvidiaTeslaK80",
          "description": "Nvidia Tesla K80 GPU.",
          "value": "NVIDIA_TESLA_K80"
        },
        {
          "name": "NvidiaTeslaP100",
          "description": "Nvidia Tesla P100 GPU.",
          "value": "NVIDIA_TESLA_P100"
        },
        {
          "name": "NvidiaTeslaV100",
          "description": "Nvidia Tesla V100 GPU.",
          "value": "NVIDIA_TESLA_V100"
        },
        {
          "name": "NvidiaTeslaP4",
          "description": "Nvidia Tesla P4 GPU.",
          "value": "NVIDIA_TESLA_P4"
        },
        {
          "name": "NvidiaTeslaT4",
          "description": "Nvidia Tesla T4 GPU.",
          "value": "NVIDIA_TESLA_T4"
        },
        {
          "name": "NvidiaTeslaA100",
          "description": "Nvidia Tesla A100 GPU.",
          "value": "NVIDIA_TESLA_A100"
        },
        {
          "name": "NvidiaA10080gb",
          "description": "Nvidia A100 80GB GPU.",
          "value": "NVIDIA_A100_80GB"
        },
        {
          "name": "NvidiaL4",
          "description": "Nvidia L4 GPU.",
          "value": "NVIDIA_L4"
        },
        {
          "name": "NvidiaH10080gb",
          "description": "Nvidia H100 80Gb GPU.",
          "value": "NVIDIA_H100_80GB"
        },
        {
          "name": "TpuV2",
          "description": "TPU v2.",
          "value": "TPU_V2"
        },
        {
          "name": "TpuV3",
          "description": "TPU v3.",
          "value": "TPU_V3"
        },
        {
          "name": "TpuV4Pod",
          "description": "TPU v4.",
          "value": "TPU_V4_POD"
        },
        {
          "name": "TpuV5Litepod",
          "description": "TPU v5.",
          "value": "TPU_V5_LITEPOD"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1MachineSpecResponse": {
      "description": "Specification of a single machine.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of accelerators to attach to the machine."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count."
        },
        "machineType": {
          "type": "string",
          "description": "Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required."
        },
        "tpuTopology": {
          "type": "string",
          "description": "Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: \"2x2x1\")."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType",
        "machineType",
        "tpuTopology"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ManualBatchTuningParameters": {
      "description": "Manual batch tuning parameters.",
      "properties": {
        "batchSize": {
          "type": "integer",
          "description": "Immutable. The number of the records (e.g. instances) of the operation given in each batch to a machine replica. Machine type, and size of a single record should be considered when setting this parameter, higher value speeds up the batch operation's execution, but too high value will result in a whole batch not fitting in a machine's memory, and the whole operation will fail. The default value is 64."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ManualBatchTuningParametersResponse": {
      "description": "Manual batch tuning parameters.",
      "properties": {
        "batchSize": {
          "type": "integer",
          "description": "Immutable. The number of the records (e.g. instances) of the operation given in each batch to a machine replica. Machine type, and size of a single record should be considered when setting this parameter, higher value speeds up the batch operation's execution, but too high value will result in a whole batch not fitting in a machine's memory, and the whole operation will fail. The default value is 64."
        }
      },
      "type": "object",
      "required": [
        "batchSize"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1MeasurementMetricResponse": {
      "description": "A message representing a metric in the measurement.",
      "properties": {
        "metricId": {
          "type": "string",
          "description": "The ID of the Metric. The Metric should be defined in StudySpec's Metrics."
        },
        "value": {
          "type": "number",
          "description": "The value for this metric."
        }
      },
      "type": "object",
      "required": [
        "metricId",
        "value"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1MeasurementResponse": {
      "description": "A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values.",
      "properties": {
        "elapsedDuration": {
          "type": "string",
          "description": "Time that the Trial has been running at the point of this Measurement."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MeasurementMetricResponse"
          },
          "description": "A list of metrics got by evaluating the objective functions using suggested Parameter values."
        },
        "stepCount": {
          "type": "string",
          "description": "The number of steps the machine learning model has been trained for. Must be non-negative."
        }
      },
      "type": "object",
      "required": [
        "elapsedDuration",
        "metrics",
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1MetadataStoreMetadataStoreStateResponse": {
      "description": "Represents state information for a MetadataStore.",
      "properties": {
        "diskUtilizationBytes": {
          "type": "string",
          "description": "The disk utilization of the MetadataStore in bytes."
        }
      },
      "type": "object",
      "required": [
        "diskUtilizationBytes"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1Model": {
      "description": "A trained machine learning Model.",
      "properties": {
        "artifactUri": {
          "type": "string",
          "description": "Immutable. The path to the directory containing the Model artifact and any of its supporting files. Not present for AutoML Models or Large Models."
        },
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelContainerSpec",
          "description": "Input only. The specification of the container that is to be used when deploying this Model. The specification is ingested upon ModelService.UploadModel, and all binaries it contains are copied and stored internally by Vertex AI. Not present for AutoML Models or Large Models."
        },
        "description": {
          "type": "string",
          "description": "The description of the Model."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Model. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a Model. If set, this Model and all sub-resources of this Model will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationSpec",
          "description": "The default explanation specification for this Model. The Model can be used for requesting explanation after being deployed if it is populated. The Model can be used for batch explanation if it is populated. All fields of the explanation_spec can be overridden by explanation_spec of DeployModelRequest.deployed_model, or explanation_spec of BatchPredictionJob. If the default explanation specification is not set for this Model, this Model can still be used for requesting explanation by setting explanation_spec of DeployModelRequest.deployed_model and for batch explanation by setting explanation_spec of BatchPredictionJob."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Models. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Immutable. An additional information about the Model; the schema of the metadata can be found in metadata_schema. Unset if the Model does not have any additional information."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Model, that is specific to it. Unset if the Model does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI, if no additional metadata is needed, this field is set to an empty string. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Model."
        },
        "predictSchemata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredictSchemata",
          "description": "The schemata that describe formats of the Model's predictions and explanations as given and returned via PredictionService.Predict and PredictionService.Explain."
        },
        "versionAliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User provided version aliases so that a model version can be referenced via alias (i.e. `projects/{project}/locations/{location}/models/{model_id}@{version_alias}` instead of auto-generated version id (i.e. `projects/{project}/locations/{location}/models/{model_id}@{version_id})`. The format is a-z{0,126}[a-z0-9] to distinguish from version_id. A default version alias will be created for the first version of the model, and there must be exactly one default version alias for a model."
        },
        "versionDescription": {
          "type": "string",
          "description": "The description of this version."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelContainerSpec": {
      "description": "Specification of a container for serving predictions. Some fields in this message correspond to fields in the [Kubernetes Container v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify this field as an array of executable and arguments, similar to a Docker `CMD`'s \"default parameters\" form. If you don't specify this field but do specify the command field, then the command from the `command` field runs without any additional arguments. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). If you don't specify this field and don't specify the `command` field, then the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and `CMD` determine what runs based on their default behavior. See the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). In this field, you can reference [environment variables set by Vertex AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `args` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the command that runs when the container starts. This overrides the container's [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint). Specify this field as an array of executable and arguments, similar to a Docker `ENTRYPOINT`'s \"exec\" form, not its \"shell\" form. If you do not specify this field, then the container's `ENTRYPOINT` runs, in conjunction with the args field or the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd), if either exists. If this field is not specified and the container does not have an `ENTRYPOINT`, then refer to the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). If you specify this field, then you can also specify the `args` field to provide additional arguments for this command. However, if you specify this field, then the container's `CMD` is ignored. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). In this field, you can reference [environment variables set by Vertex AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `command` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "deploymentTimeout": {
          "type": "string",
          "description": "Immutable. Deployment timeout. TODO (b/306244185): Revise documentation before exposing."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EnvVar"
          },
          "description": "Immutable. List of environment variables to set in the container. After the container starts running, code running in the container can read these environment variables. Additionally, the command and args fields can reference these variables. Later entries in this list can also reference earlier entries. For example, the following example sets the variable `VAR_2` to have the value `foo bar`: ```json [ { \"name\": \"VAR_1\", \"value\": \"foo\" }, { \"name\": \"VAR_2\", \"value\": \"$(VAR_1) bar\" } ] ``` If you switch the order of the variables in the example, then the expansion does not occur. This field corresponds to the `env` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "healthProbe": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1Probe",
          "description": "Immutable. Specification for Kubernetes readiness probe. TODO (b/306244185): Revise documentation before exposing."
        },
        "healthRoute": {
          "type": "string",
          "description": "Immutable. HTTP path on the container to send health checks to. Vertex AI intermittently sends GET requests to this path on the container's IP address and port to check that the container is healthy. Read more about [health checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#health). For example, if you set this field to `/bar`, then Vertex AI intermittently sends a GET request to the `/bar` path on the port of your container specified by the first value of this `ModelContainerSpec`'s ports field. If you don't specify this field, it defaults to the following value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/deployedModels/ DEPLOYED_MODEL:predict The placeholders in this value are replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of the Endpoint.name][] field of the Endpoint where this Model has been deployed. (Vertex AI makes this value available to your container code as the [`AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL: DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)"
        },
        "imageUri": {
          "type": "string",
          "description": "Immutable. URI of the Docker image to be used as the custom container for serving predictions. This URI must identify an image in Artifact Registry or Container Registry. Learn more about the [container publishing requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#publishing), including permissions requirements for the Vertex AI Service Agent. The container image is ingested upon ModelService.UploadModel, stored internally, and this original path is afterwards not used. To learn about the requirements for the Docker image itself, see [Custom container requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#). You can use the URI to one of Vertex AI's [pre-built container images for prediction](https://cloud.google.com/vertex-ai/docs/predictions/pre-built-containers) in this field."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1Port"
          },
          "description": "Immutable. List of ports to expose from the container. Vertex AI sends any prediction requests that it receives to the first port on this list. Vertex AI also sends [liveness and health checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#liveness) to this port. If you do not specify this field, it defaults to following value: ```json [ { \"containerPort\": 8080 } ] ``` Vertex AI does not use ports other than the first one listed. This field corresponds to the `ports` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "predictRoute": {
          "type": "string",
          "description": "Immutable. HTTP path on the container to send prediction requests to. Vertex AI forwards requests sent using projects.locations.endpoints.predict to this path on the container's IP address and port. Vertex AI then returns the container's response in the API response. For example, if you set this field to `/foo`, then when Vertex AI receives a prediction request, it forwards the request body in a POST request to the `/foo` path on the port of your container specified by the first value of this `ModelContainerSpec`'s ports field. If you don't specify this field, it defaults to the following value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict The placeholders in this value are replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of the Endpoint.name][] field of the Endpoint where this Model has been deployed. (Vertex AI makes this value available to your container code as the [`AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL: DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)"
        },
        "sharedMemorySizeMb": {
          "type": "string",
          "description": "Immutable. The amount of the VM memory to reserve as the shared memory for the model in megabytes. TODO (b/306244185): Revise documentation before exposing."
        },
        "startupProbe": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1Probe",
          "description": "Immutable. Specification for Kubernetes startup probe. TODO (b/306244185): Revise documentation before exposing."
        }
      },
      "type": "object",
      "required": [
        "imageUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelContainerSpecResponse": {
      "description": "Specification of a container for serving predictions. Some fields in this message correspond to fields in the [Kubernetes Container v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core).",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify this field as an array of executable and arguments, similar to a Docker `CMD`'s \"default parameters\" form. If you don't specify this field but do specify the command field, then the command from the `command` field runs without any additional arguments. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). If you don't specify this field and don't specify the `command` field, then the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and `CMD` determine what runs based on their default behavior. See the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). In this field, you can reference [environment variables set by Vertex AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `args` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the command that runs when the container starts. This overrides the container's [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint). Specify this field as an array of executable and arguments, similar to a Docker `ENTRYPOINT`'s \"exec\" form, not its \"shell\" form. If you do not specify this field, then the container's `ENTRYPOINT` runs, in conjunction with the args field or the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd), if either exists. If this field is not specified and the container does not have an `ENTRYPOINT`, then refer to the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). If you specify this field, then you can also specify the `args` field to provide additional arguments for this command. However, if you specify this field, then the container's `CMD` is ignored. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). In this field, you can reference [environment variables set by Vertex AI](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `command` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "deploymentTimeout": {
          "type": "string",
          "description": "Immutable. Deployment timeout. TODO (b/306244185): Revise documentation before exposing."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EnvVarResponse"
          },
          "description": "Immutable. List of environment variables to set in the container. After the container starts running, code running in the container can read these environment variables. Additionally, the command and args fields can reference these variables. Later entries in this list can also reference earlier entries. For example, the following example sets the variable `VAR_2` to have the value `foo bar`: ```json [ { \"name\": \"VAR_1\", \"value\": \"foo\" }, { \"name\": \"VAR_2\", \"value\": \"$(VAR_1) bar\" } ] ``` If you switch the order of the variables in the example, then the expansion does not occur. This field corresponds to the `env` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "healthProbe": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ProbeResponse",
          "description": "Immutable. Specification for Kubernetes readiness probe. TODO (b/306244185): Revise documentation before exposing."
        },
        "healthRoute": {
          "type": "string",
          "description": "Immutable. HTTP path on the container to send health checks to. Vertex AI intermittently sends GET requests to this path on the container's IP address and port to check that the container is healthy. Read more about [health checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#health). For example, if you set this field to `/bar`, then Vertex AI intermittently sends a GET request to the `/bar` path on the port of your container specified by the first value of this `ModelContainerSpec`'s ports field. If you don't specify this field, it defaults to the following value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/deployedModels/ DEPLOYED_MODEL:predict The placeholders in this value are replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of the Endpoint.name][] field of the Endpoint where this Model has been deployed. (Vertex AI makes this value available to your container code as the [`AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL: DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)"
        },
        "imageUri": {
          "type": "string",
          "description": "Immutable. URI of the Docker image to be used as the custom container for serving predictions. This URI must identify an image in Artifact Registry or Container Registry. Learn more about the [container publishing requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#publishing), including permissions requirements for the Vertex AI Service Agent. The container image is ingested upon ModelService.UploadModel, stored internally, and this original path is afterwards not used. To learn about the requirements for the Docker image itself, see [Custom container requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#). You can use the URI to one of Vertex AI's [pre-built container images for prediction](https://cloud.google.com/vertex-ai/docs/predictions/pre-built-containers) in this field."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PortResponse"
          },
          "description": "Immutable. List of ports to expose from the container. Vertex AI sends any prediction requests that it receives to the first port on this list. Vertex AI also sends [liveness and health checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#liveness) to this port. If you do not specify this field, it defaults to following value: ```json [ { \"containerPort\": 8080 } ] ``` Vertex AI does not use ports other than the first one listed. This field corresponds to the `ports` field of the Kubernetes Containers [v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)."
        },
        "predictRoute": {
          "type": "string",
          "description": "Immutable. HTTP path on the container to send prediction requests to. Vertex AI forwards requests sent using projects.locations.endpoints.predict to this path on the container's IP address and port. Vertex AI then returns the container's response in the API response. For example, if you set this field to `/foo`, then when Vertex AI receives a prediction request, it forwards the request body in a POST request to the `/foo` path on the port of your container specified by the first value of this `ModelContainerSpec`'s ports field. If you don't specify this field, it defaults to the following value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict The placeholders in this value are replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of the Endpoint.name][] field of the Endpoint where this Model has been deployed. (Vertex AI makes this value available to your container code as the [`AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL: DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables).)"
        },
        "sharedMemorySizeMb": {
          "type": "string",
          "description": "Immutable. The amount of the VM memory to reserve as the shared memory for the model in megabytes. TODO (b/306244185): Revise documentation before exposing."
        },
        "startupProbe": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ProbeResponse",
          "description": "Immutable. Specification for Kubernetes startup probe. TODO (b/306244185): Revise documentation before exposing."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "deploymentTimeout",
        "env",
        "healthProbe",
        "healthRoute",
        "imageUri",
        "ports",
        "predictRoute",
        "sharedMemorySizeMb",
        "startupProbe"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringBigQueryTableResponse": {
      "description": "ModelDeploymentMonitoringBigQueryTable specifies the BigQuery table name as well as some information of the logs stored in this table.",
      "properties": {
        "bigqueryTablePath": {
          "type": "string",
          "description": "The created BigQuery table to store logs. Customer could do their own query & analysis. Format: `bq://.model_deployment_monitoring_._`"
        },
        "logSource": {
          "type": "string",
          "description": "The source of log."
        },
        "logType": {
          "type": "string",
          "description": "The type of log."
        }
      },
      "type": "object",
      "required": [
        "bigqueryTablePath",
        "logSource",
        "logType"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringJobLatestMonitoringPipelineMetadataResponse": {
      "description": "All metadata of most recent monitoring pipelines.",
      "properties": {
        "runTime": {
          "type": "string",
          "description": "The time that most recent monitoring pipelines that is related to this run."
        },
        "status": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "The status of the most recent monitoring pipeline."
        }
      },
      "type": "object",
      "required": [
        "runTime",
        "status"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringObjectiveConfig": {
      "description": "ModelDeploymentMonitoringObjectiveConfig contains the pair of deployed_model_id to ModelMonitoringObjectiveConfig.",
      "properties": {
        "deployedModelId": {
          "type": "string",
          "description": "The DeployedModel ID of the objective config."
        },
        "objectiveConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfig",
          "description": "The objective config of for the modelmonitoring job of this deployed model."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringObjectiveConfigResponse": {
      "description": "ModelDeploymentMonitoringObjectiveConfig contains the pair of deployed_model_id to ModelMonitoringObjectiveConfig.",
      "properties": {
        "deployedModelId": {
          "type": "string",
          "description": "The DeployedModel ID of the objective config."
        },
        "objectiveConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigResponse",
          "description": "The objective config of for the modelmonitoring job of this deployed model."
        }
      },
      "type": "object",
      "required": [
        "deployedModelId",
        "objectiveConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringScheduleConfig": {
      "description": "The config for scheduling monitoring job.",
      "properties": {
        "monitorInterval": {
          "type": "string",
          "description": "The model monitoring job scheduling interval. It will be rounded up to next full hour. This defines how often the monitoring jobs are triggered."
        },
        "monitorWindow": {
          "type": "string",
          "description": "The time window of the prediction data being included in each prediction dataset. This window specifies how long the data should be collected from historical model results for each run. If not set, ModelDeploymentMonitoringScheduleConfig.monitor_interval will be used. e.g. If currently the cutoff time is 2022-01-08 14:30:00 and the monitor_window is set to be 3600, then data from 2022-01-08 13:30:00 to 2022-01-08 14:30:00 will be retrieved and aggregated to calculate the monitoring statistics."
        }
      },
      "type": "object",
      "required": [
        "monitorInterval"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringScheduleConfigResponse": {
      "description": "The config for scheduling monitoring job.",
      "properties": {
        "monitorInterval": {
          "type": "string",
          "description": "The model monitoring job scheduling interval. It will be rounded up to next full hour. This defines how often the monitoring jobs are triggered."
        },
        "monitorWindow": {
          "type": "string",
          "description": "The time window of the prediction data being included in each prediction dataset. This window specifies how long the data should be collected from historical model results for each run. If not set, ModelDeploymentMonitoringScheduleConfig.monitor_interval will be used. e.g. If currently the cutoff time is 2022-01-08 14:30:00 and the monitor_window is set to be 3600, then data from 2022-01-08 13:30:00 to 2022-01-08 14:30:00 will be retrieved and aggregated to calculate the monitoring statistics."
        }
      },
      "type": "object",
      "required": [
        "monitorInterval",
        "monitorWindow"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelExportFormatResponse": {
      "description": "Represents export format supported by the Model. All formats export to Google Cloud Storage.",
      "properties": {
        "exportableContents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The content of this Model that may be exported."
        }
      },
      "type": "object",
      "required": [
        "exportableContents"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfig": {
      "properties": {
        "emailAlertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfigEmailAlertConfig",
          "description": "Email alert config."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Dump the anomalies to Cloud Logging. The anomalies will be put to json payload encoded from proto google.cloud.aiplatform.logging.ModelMonitoringAnomaliesLogEntry. This can be further sinked to Pub/Sub or any other services supported by Cloud Logging."
        },
        "notificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource names of the NotificationChannels to send alert. Must be of the format `projects//notificationChannels/`"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfigEmailAlertConfig": {
      "description": "The config for email alert.",
      "properties": {
        "userEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses to send the alert."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfigEmailAlertConfigResponse": {
      "description": "The config for email alert.",
      "properties": {
        "userEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses to send the alert."
        }
      },
      "type": "object",
      "required": [
        "userEmails"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfigResponse": {
      "properties": {
        "emailAlertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfigEmailAlertConfigResponse",
          "description": "Email alert config."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Dump the anomalies to Cloud Logging. The anomalies will be put to json payload encoded from proto google.cloud.aiplatform.logging.ModelMonitoringAnomaliesLogEntry. This can be further sinked to Pub/Sub or any other services supported by Cloud Logging."
        },
        "notificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource names of the NotificationChannels to send alert. Must be of the format `projects//notificationChannels/`"
        }
      },
      "type": "object",
      "required": [
        "emailAlertConfig",
        "enableLogging",
        "notificationChannels"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringConfig": {
      "description": "The model monitoring configuration used for Batch Prediction Job.",
      "properties": {
        "alertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfig",
          "description": "Model monitoring alert config."
        },
        "analysisInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri in Cloud Storage describing the format of a single instance that you want Tensorflow Data Validation (TFDV) to analyze. If there are any data type differences between predict instance and TFDV instance, this field can be used to override the schema. For models trained with Vertex AI, this field must be set as all the fields in predict instance formatted as string."
        },
        "objectiveConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfig"
          },
          "description": "Model monitoring objective config."
        },
        "statsAnomaliesBaseDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestination",
          "description": "A Google Cloud Storage location for batch prediction model monitoring to dump statistics and anomalies. If not provided, a folder will be created in customer project to hold statistics and anomalies."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringConfigResponse": {
      "description": "The model monitoring configuration used for Batch Prediction Job.",
      "properties": {
        "alertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfigResponse",
          "description": "Model monitoring alert config."
        },
        "analysisInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri in Cloud Storage describing the format of a single instance that you want Tensorflow Data Validation (TFDV) to analyze. If there are any data type differences between predict instance and TFDV instance, this field can be used to override the schema. For models trained with Vertex AI, this field must be set as all the fields in predict instance formatted as string."
        },
        "objectiveConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigResponse"
          },
          "description": "Model monitoring objective config."
        },
        "statsAnomaliesBaseDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestinationResponse",
          "description": "A Google Cloud Storage location for batch prediction model monitoring to dump statistics and anomalies. If not provided, a folder will be created in customer project to hold statistics and anomalies."
        }
      },
      "type": "object",
      "required": [
        "alertConfig",
        "analysisInstanceSchemaUri",
        "objectiveConfigs",
        "statsAnomaliesBaseDirectory"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfig": {
      "description": "The objective configuration for model monitoring, including the information needed to detect anomalies for one particular model.",
      "properties": {
        "explanationConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfig",
          "description": "The config for integrating with Vertex Explainable AI."
        },
        "predictionDriftDetectionConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfig",
          "description": "The config for drift of prediction data."
        },
        "trainingDataset": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigTrainingDataset",
          "description": "Training dataset for models. This field has to be set only if TrainingPredictionSkewDetectionConfig is specified."
        },
        "trainingPredictionSkewDetectionConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfig",
          "description": "The config for skew between training data and prediction data."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfig": {
      "description": "The config for integrating with Vertex Explainable AI. Only applicable if the Model has explanation_spec populated.",
      "properties": {
        "enableFeatureAttributes": {
          "type": "boolean",
          "description": "If want to analyze the Vertex Explainable AI feature attribute scores or not. If set to true, Vertex AI will log the feature attributions from explain response and do the skew/drift detection for them."
        },
        "explanationBaseline": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaseline",
          "description": "Predictions generated by the BatchPredictionJob using baseline dataset."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaseline": {
      "description": "Output from BatchPredictionJob for Model Monitoring baseline dataset, which can be used to generate baseline attribution scores.",
      "properties": {
        "bigquery": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQueryDestination",
          "description": "BigQuery location for BatchExplain output."
        },
        "gcs": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestination",
          "description": "Cloud Storage location for BatchExplain output."
        },
        "predictionFormat": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaselinePredictionFormat",
          "description": "The storage format of the predictions generated BatchPrediction job."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaselinePredictionFormat": {
      "description": "The storage format of the predictions generated BatchPrediction job.",
      "type": "string",
      "enum": [
        {
          "name": "PredictionFormatUnspecified",
          "description": "Should not be set.",
          "value": "PREDICTION_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Jsonl",
          "description": "Predictions are in JSONL files.",
          "value": "JSONL"
        },
        {
          "name": "Bigquery",
          "description": "Predictions are in BigQuery.",
          "value": "BIGQUERY"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaselineResponse": {
      "description": "Output from BatchPredictionJob for Model Monitoring baseline dataset, which can be used to generate baseline attribution scores.",
      "properties": {
        "bigquery": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQueryDestinationResponse",
          "description": "BigQuery location for BatchExplain output."
        },
        "gcs": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestinationResponse",
          "description": "Cloud Storage location for BatchExplain output."
        },
        "predictionFormat": {
          "type": "string",
          "description": "The storage format of the predictions generated BatchPrediction job."
        }
      },
      "type": "object",
      "required": [
        "bigquery",
        "gcs",
        "predictionFormat"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfigResponse": {
      "description": "The config for integrating with Vertex Explainable AI. Only applicable if the Model has explanation_spec populated.",
      "properties": {
        "enableFeatureAttributes": {
          "type": "boolean",
          "description": "If want to analyze the Vertex Explainable AI feature attribute scores or not. If set to true, Vertex AI will log the feature attributions from explain response and do the skew/drift detection for them."
        },
        "explanationBaseline": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaselineResponse",
          "description": "Predictions generated by the BatchPredictionJob using baseline dataset."
        }
      },
      "type": "object",
      "required": [
        "enableFeatureAttributes",
        "explanationBaseline"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfig": {
      "description": "The config for Prediction data drift detection.",
      "properties": {
        "attributionScoreDriftThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. The threshold here is against attribution score distance between different time windows."
        },
        "defaultDriftThreshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ThresholdConfig",
          "description": "Drift anomaly detection threshold used by all features. When the per-feature thresholds are not set, this field can be used to specify a threshold for all features."
        },
        "driftThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. If a feature needs to be monitored for drift, a value threshold must be configured for that feature. The threshold here is against feature distribution distance between different time windws."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfigResponse": {
      "description": "The config for Prediction data drift detection.",
      "properties": {
        "attributionScoreDriftThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. The threshold here is against attribution score distance between different time windows."
        },
        "defaultDriftThreshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ThresholdConfigResponse",
          "description": "Drift anomaly detection threshold used by all features. When the per-feature thresholds are not set, this field can be used to specify a threshold for all features."
        },
        "driftThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. If a feature needs to be monitored for drift, a value threshold must be configured for that feature. The threshold here is against feature distribution distance between different time windws."
        }
      },
      "type": "object",
      "required": [
        "attributionScoreDriftThresholds",
        "defaultDriftThreshold",
        "driftThresholds"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigResponse": {
      "description": "The objective configuration for model monitoring, including the information needed to detect anomalies for one particular model.",
      "properties": {
        "explanationConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigExplanationConfigResponse",
          "description": "The config for integrating with Vertex Explainable AI."
        },
        "predictionDriftDetectionConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfigResponse",
          "description": "The config for drift of prediction data."
        },
        "trainingDataset": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigTrainingDatasetResponse",
          "description": "Training dataset for models. This field has to be set only if TrainingPredictionSkewDetectionConfig is specified."
        },
        "trainingPredictionSkewDetectionConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfigResponse",
          "description": "The config for skew between training data and prediction data."
        }
      },
      "type": "object",
      "required": [
        "explanationConfig",
        "predictionDriftDetectionConfig",
        "trainingDataset",
        "trainingPredictionSkewDetectionConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigTrainingDataset": {
      "description": "Training Dataset information.",
      "properties": {
        "bigquerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQuerySource",
          "description": "The BigQuery table of the unmanaged Dataset used to train this Model."
        },
        "dataFormat": {
          "type": "string",
          "description": "Data format of the dataset, only applicable if the input is from Google Cloud Storage. The possible formats are: \"tf-record\" The source file is a TFRecord file. \"csv\" The source file is a CSV file. \"jsonl\" The source file is a JSONL file."
        },
        "dataset": {
          "type": "string",
          "description": "The resource name of the Dataset used to train this Model."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsSource",
          "description": "The Google Cloud Storage uri of the unmanaged Dataset used to train this Model."
        },
        "loggingSamplingStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SamplingStrategy",
          "description": "Strategy to sample data from Training Dataset. If not set, we process the whole dataset."
        },
        "targetField": {
          "type": "string",
          "description": "The target field name the model is to predict. This field will be excluded when doing Predict and (or) Explain for the training data."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigTrainingDatasetResponse": {
      "description": "Training Dataset information.",
      "properties": {
        "bigquerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQuerySourceResponse",
          "description": "The BigQuery table of the unmanaged Dataset used to train this Model."
        },
        "dataFormat": {
          "type": "string",
          "description": "Data format of the dataset, only applicable if the input is from Google Cloud Storage. The possible formats are: \"tf-record\" The source file is a TFRecord file. \"csv\" The source file is a CSV file. \"jsonl\" The source file is a JSONL file."
        },
        "dataset": {
          "type": "string",
          "description": "The resource name of the Dataset used to train this Model."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsSourceResponse",
          "description": "The Google Cloud Storage uri of the unmanaged Dataset used to train this Model."
        },
        "loggingSamplingStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SamplingStrategyResponse",
          "description": "Strategy to sample data from Training Dataset. If not set, we process the whole dataset."
        },
        "targetField": {
          "type": "string",
          "description": "The target field name the model is to predict. This field will be excluded when doing Predict and (or) Explain for the training data."
        }
      },
      "type": "object",
      "required": [
        "bigquerySource",
        "dataFormat",
        "dataset",
        "gcsSource",
        "loggingSamplingStrategy",
        "targetField"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfig": {
      "description": "The config for Training & Prediction data skew detection. It specifies the training dataset sources and the skew detection parameters.",
      "properties": {
        "attributionScoreSkewThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. The threshold here is against attribution score distance between the training and prediction feature."
        },
        "defaultSkewThreshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ThresholdConfig",
          "description": "Skew anomaly detection threshold used by all features. When the per-feature thresholds are not set, this field can be used to specify a threshold for all features."
        },
        "skewThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. If a feature needs to be monitored for skew, a value threshold must be configured for that feature. The threshold here is against feature distribution distance between the training and prediction feature."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfigResponse": {
      "description": "The config for Training & Prediction data skew detection. It specifies the training dataset sources and the skew detection parameters.",
      "properties": {
        "attributionScoreSkewThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. The threshold here is against attribution score distance between the training and prediction feature."
        },
        "defaultSkewThreshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ThresholdConfigResponse",
          "description": "Skew anomaly detection threshold used by all features. When the per-feature thresholds are not set, this field can be used to specify a threshold for all features."
        },
        "skewThresholds": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key is the feature name and value is the threshold. If a feature needs to be monitored for skew, a value threshold must be configured for that feature. The threshold here is against feature distribution distance between the training and prediction feature."
        }
      },
      "type": "object",
      "required": [
        "attributionScoreSkewThresholds",
        "defaultSkewThreshold",
        "skewThresholds"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomalies": {
      "description": "Statistics and anomalies generated by Model Monitoring.",
      "properties": {
        "anomalyCount": {
          "type": "integer",
          "description": "Number of anomalies within all stats."
        },
        "deployedModelId": {
          "type": "string",
          "description": "Deployed Model ID."
        },
        "featureStats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesFeatureHistoricStatsAnomalies"
          },
          "description": "A list of historical Stats and Anomalies generated for all Features."
        },
        "objective": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesObjective",
          "description": "Model Monitoring Objective those stats and anomalies belonging to."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesFeatureHistoricStatsAnomalies": {
      "description": "Historical Stats (and Anomalies) for a specific Feature.",
      "properties": {
        "featureDisplayName": {
          "type": "string",
          "description": "Display Name of the Feature."
        },
        "predictionStats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomaly"
          },
          "description": "A list of historical stats generated by different time window's Prediction Dataset."
        },
        "threshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ThresholdConfig",
          "description": "Threshold for anomaly detection."
        },
        "trainingStats": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomaly",
          "description": "Stats calculated for the Training Dataset."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesFeatureHistoricStatsAnomaliesResponse": {
      "description": "Historical Stats (and Anomalies) for a specific Feature.",
      "properties": {
        "featureDisplayName": {
          "type": "string",
          "description": "Display Name of the Feature."
        },
        "predictionStats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomalyResponse"
          },
          "description": "A list of historical stats generated by different time window's Prediction Dataset."
        },
        "threshold": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ThresholdConfigResponse",
          "description": "Threshold for anomaly detection."
        },
        "trainingStats": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomalyResponse",
          "description": "Stats calculated for the Training Dataset."
        }
      },
      "type": "object",
      "required": [
        "featureDisplayName",
        "predictionStats",
        "threshold",
        "trainingStats"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesObjective": {
      "description": "Model Monitoring Objective those stats and anomalies belonging to.",
      "type": "string",
      "enum": [
        {
          "name": "ModelDeploymentMonitoringObjectiveTypeUnspecified",
          "description": "Default value, should not be set.",
          "value": "MODEL_DEPLOYMENT_MONITORING_OBJECTIVE_TYPE_UNSPECIFIED"
        },
        {
          "name": "RawFeatureSkew",
          "description": "Raw feature values' stats to detect skew between Training-Prediction datasets.",
          "value": "RAW_FEATURE_SKEW"
        },
        {
          "name": "RawFeatureDrift",
          "description": "Raw feature values' stats to detect drift between Serving-Prediction datasets.",
          "value": "RAW_FEATURE_DRIFT"
        },
        {
          "name": "FeatureAttributionSkew",
          "description": "Feature attribution scores to detect skew between Training-Prediction datasets.",
          "value": "FEATURE_ATTRIBUTION_SKEW"
        },
        {
          "name": "FeatureAttributionDrift",
          "description": "Feature attribution scores to detect skew between Prediction datasets collected within different time windows.",
          "value": "FEATURE_ATTRIBUTION_DRIFT"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesResponse": {
      "description": "Statistics and anomalies generated by Model Monitoring.",
      "properties": {
        "anomalyCount": {
          "type": "integer",
          "description": "Number of anomalies within all stats."
        },
        "deployedModelId": {
          "type": "string",
          "description": "Deployed Model ID."
        },
        "featureStats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesFeatureHistoricStatsAnomaliesResponse"
          },
          "description": "A list of historical Stats and Anomalies generated for all Features."
        },
        "objective": {
          "type": "string",
          "description": "Model Monitoring Objective those stats and anomalies belonging to."
        }
      },
      "type": "object",
      "required": [
        "anomalyCount",
        "deployedModelId",
        "featureStats",
        "objective"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelOriginalModelInfoResponse": {
      "description": "Contains information about the original Model if this Model is a copy.",
      "properties": {
        "model": {
          "type": "string",
          "description": "The resource name of the Model this Model is a copy of, including the revision. Format: `projects/{project}/locations/{location}/models/{model_id}@{version_id}`"
        }
      },
      "type": "object",
      "required": [
        "model"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelResponse": {
      "description": "A trained machine learning Model.",
      "properties": {
        "artifactUri": {
          "type": "string",
          "description": "Immutable. The path to the directory containing the Model artifact and any of its supporting files. Not present for AutoML Models or Large Models."
        },
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelContainerSpecResponse",
          "description": "Input only. The specification of the container that is to be used when deploying this Model. The specification is ingested upon ModelService.UploadModel, and all binaries it contains are copied and stored internally by Vertex AI. Not present for AutoML Models or Large Models."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Model was uploaded into Vertex AI."
        },
        "deployedModels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedModelRefResponse"
          },
          "description": "The pointers to DeployedModels created from this Model. Note that Model could have been deployed to Endpoints in different Locations."
        },
        "description": {
          "type": "string",
          "description": "The description of the Model."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Model. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a Model. If set, this Model and all sub-resources of this Model will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationSpecResponse",
          "description": "The default explanation specification for this Model. The Model can be used for requesting explanation after being deployed if it is populated. The Model can be used for batch explanation if it is populated. All fields of the explanation_spec can be overridden by explanation_spec of DeployModelRequest.deployed_model, or explanation_spec of BatchPredictionJob. If the default explanation specification is not set for this Model, this Model can still be used for requesting explanation by setting explanation_spec of DeployModelRequest.deployed_model and for batch explanation by setting explanation_spec of BatchPredictionJob."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Models. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Immutable. An additional information about the Model; the schema of the metadata can be found in metadata_schema. Unset if the Model does not have any additional information."
        },
        "metadataArtifact": {
          "type": "string",
          "description": "The resource name of the Artifact that was created in MetadataStore when creating the Model. The Artifact resource name pattern is `projects/{project}/locations/{location}/metadataStores/{metadata_store}/artifacts/{artifact}`."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Model, that is specific to it. Unset if the Model does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI, if no additional metadata is needed, this field is set to an empty string. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "modelSourceInfo": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelSourceInfoResponse",
          "description": "Source of a model. It can either be automl training pipeline, custom training pipeline, BigQuery ML, or existing Vertex AI Model."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Model."
        },
        "originalModelInfo": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelOriginalModelInfoResponse",
          "description": "If this Model is a copy of another Model, this contains info about the original."
        },
        "predictSchemata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredictSchemataResponse",
          "description": "The schemata that describe formats of the Model's predictions and explanations as given and returned via PredictionService.Predict and PredictionService.Explain."
        },
        "supportedDeploymentResourcesTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "When this Model is deployed, its prediction resources are described by the `prediction_resources` field of the Endpoint.deployed_models object. Because not all Models support all resource configuration types, the configuration types this Model supports are listed here. If no configuration types are listed, the Model cannot be deployed to an Endpoint and does not support online predictions (PredictionService.Predict or PredictionService.Explain). Such a Model can serve predictions by using a BatchPredictionJob, if it has at least one entry each in supported_input_storage_formats and supported_output_storage_formats."
        },
        "supportedExportFormats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelExportFormatResponse"
          },
          "description": "The formats in which this Model may be exported. If empty, this Model is not available for export."
        },
        "supportedInputStorageFormats": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The formats this Model supports in BatchPredictionJob.input_config. If PredictSchemata.instance_schema_uri exists, the instances should be given as per that schema. The possible formats are: * `jsonl` The JSON Lines format, where each instance is a single line. Uses GcsSource. * `csv` The CSV format, where each instance is a single comma-separated line. The first line in the file is the header, containing comma-separated field names. Uses GcsSource. * `tf-record` The TFRecord format, where each instance is a single record in tfrecord syntax. Uses GcsSource. * `tf-record-gzip` Similar to `tf-record`, but the file is gzipped. Uses GcsSource. * `bigquery` Each instance is a single row in BigQuery. Uses BigQuerySource. * `file-list` Each line of the file is the location of an instance to process, uses `gcs_source` field of the InputConfig object. If this Model doesn't support any of these formats it means it cannot be used with a BatchPredictionJob. However, if it has supported_deployment_resources_types, it could serve online predictions by using PredictionService.Predict or PredictionService.Explain."
        },
        "supportedOutputStorageFormats": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The formats this Model supports in BatchPredictionJob.output_config. If both PredictSchemata.instance_schema_uri and PredictSchemata.prediction_schema_uri exist, the predictions are returned together with their instances. In other words, the prediction has the original instance data first, followed by the actual prediction content (as per the schema). The possible formats are: * `jsonl` The JSON Lines format, where each prediction is a single line. Uses GcsDestination. * `csv` The CSV format, where each prediction is a single comma-separated line. The first line in the file is the header, containing comma-separated field names. Uses GcsDestination. * `bigquery` Each prediction is a single row in a BigQuery table, uses BigQueryDestination . If this Model doesn't support any of these formats it means it cannot be used with a BatchPredictionJob. However, if it has supported_deployment_resources_types, it could serve online predictions by using PredictionService.Predict or PredictionService.Explain."
        },
        "trainingPipeline": {
          "type": "string",
          "description": "The resource name of the TrainingPipeline that uploaded this Model, if any."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Model was most recently updated."
        },
        "versionAliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User provided version aliases so that a model version can be referenced via alias (i.e. `projects/{project}/locations/{location}/models/{model_id}@{version_alias}` instead of auto-generated version id (i.e. `projects/{project}/locations/{location}/models/{model_id}@{version_id})`. The format is a-z{0,126}[a-z0-9] to distinguish from version_id. A default version alias will be created for the first version of the model, and there must be exactly one default version alias for a model."
        },
        "versionCreateTime": {
          "type": "string",
          "description": "Timestamp when this version was created."
        },
        "versionDescription": {
          "type": "string",
          "description": "The description of this version."
        },
        "versionId": {
          "type": "string",
          "description": "Immutable. The version ID of the model. A new version is committed when a new model version is uploaded or trained under an existing model id. It is an auto-incrementing decimal number in string representation."
        },
        "versionUpdateTime": {
          "type": "string",
          "description": "Timestamp when this version was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "artifactUri",
        "containerSpec",
        "createTime",
        "deployedModels",
        "description",
        "displayName",
        "encryptionSpec",
        "etag",
        "explanationSpec",
        "labels",
        "metadata",
        "metadataArtifact",
        "metadataSchemaUri",
        "modelSourceInfo",
        "name",
        "originalModelInfo",
        "predictSchemata",
        "supportedDeploymentResourcesTypes",
        "supportedExportFormats",
        "supportedInputStorageFormats",
        "supportedOutputStorageFormats",
        "trainingPipeline",
        "updateTime",
        "versionAliases",
        "versionCreateTime",
        "versionDescription",
        "versionId",
        "versionUpdateTime"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ModelSourceInfoResponse": {
      "description": "Detail description of the source information of the model.",
      "properties": {
        "copy": {
          "type": "boolean",
          "description": "If this Model is copy of another Model. If true then source_type pertains to the original."
        },
        "sourceType": {
          "type": "string",
          "description": "Type of the model source."
        }
      },
      "type": "object",
      "required": [
        "copy",
        "sourceType"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobOutputMultiTrialJobOutputResponse": {
      "description": "The output of a multi-trial Neural Architecture Search (NAS) jobs.",
      "properties": {
        "searchTrials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasTrialResponse"
          },
          "description": "List of NasTrials that were started as part of search stage."
        },
        "trainTrials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasTrialResponse"
          },
          "description": "List of NasTrials that were started as part of train stage."
        }
      },
      "type": "object",
      "required": [
        "searchTrials",
        "trainTrials"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobOutputResponse": {
      "description": "Represents a uCAIP NasJob output.",
      "properties": {
        "multiTrialJobOutput": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobOutputMultiTrialJobOutputResponse",
          "description": "The output of this multi-trial Neural Architecture Search (NAS) job."
        }
      },
      "type": "object",
      "required": [
        "multiTrialJobOutput"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpec": {
      "description": "Represents the spec of a NasJob.",
      "properties": {
        "multiTrialAlgorithmSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpec",
          "description": "The spec of multi-trial algorithms."
        },
        "resumeNasJobId": {
          "type": "string",
          "description": "The ID of the existing NasJob in the same Project and Location which will be used to resume search. search_space_spec and nas_algorithm_spec are obtained from previous NasJob hence should not provide them again for this NasJob."
        },
        "searchSpaceSpec": {
          "type": "string",
          "description": "It defines the search space for Neural Architecture Search (NAS)."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpec": {
      "description": "The spec of multi-trial Neural Architecture Search (NAS).",
      "properties": {
        "metric": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecMetricSpec",
          "description": "Metric specs for the NAS job. Validation for this field is done at `multi_trial_algorithm_spec` field."
        },
        "multiTrialAlgorithm": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecMultiTrialAlgorithm",
          "description": "The multi-trial Neural Architecture Search (NAS) algorithm type. Defaults to `REINFORCEMENT_LEARNING`."
        },
        "searchTrialSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpec",
          "description": "Spec for search trials."
        },
        "trainTrialSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpec",
          "description": "Spec for train trials. Top N [TrainTrialSpec.max_parallel_trial_count] search trials will be trained for every M [TrainTrialSpec.frequency] trials searched."
        }
      },
      "type": "object",
      "required": [
        "searchTrialSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecMetricSpec": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecMetricSpecGoal",
          "description": "The optimization goal of the metric."
        },
        "metricId": {
          "type": "string",
          "description": "The ID of the metric. Must not contain whitespaces."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metricId"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecMetricSpecGoal": {
      "description": "Required. The optimization goal of the metric.",
      "type": "string",
      "enum": [
        {
          "name": "GoalTypeUnspecified",
          "description": "Goal Type will default to maximize.",
          "value": "GOAL_TYPE_UNSPECIFIED"
        },
        {
          "name": "Maximize",
          "description": "Maximize the goal metric.",
          "value": "MAXIMIZE"
        },
        {
          "name": "Minimize",
          "description": "Minimize the goal metric.",
          "value": "MINIMIZE"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecMetricSpecResponse": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "type": "string",
          "description": "The optimization goal of the metric."
        },
        "metricId": {
          "type": "string",
          "description": "The ID of the metric. Must not contain whitespaces."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metricId"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecMultiTrialAlgorithm": {
      "description": "The multi-trial Neural Architecture Search (NAS) algorithm type. Defaults to `REINFORCEMENT_LEARNING`.",
      "type": "string",
      "enum": [
        {
          "name": "MultiTrialAlgorithmUnspecified",
          "description": "Defaults to `REINFORCEMENT_LEARNING`.",
          "value": "MULTI_TRIAL_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "ReinforcementLearning",
          "description": "The Reinforcement Learning Algorithm for Multi-trial Neural Architecture Search (NAS).",
          "value": "REINFORCEMENT_LEARNING"
        },
        {
          "name": "GridSearch",
          "description": "The Grid Search Algorithm for Multi-trial Neural Architecture Search (NAS).",
          "value": "GRID_SEARCH"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecResponse": {
      "description": "The spec of multi-trial Neural Architecture Search (NAS).",
      "properties": {
        "metric": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecMetricSpecResponse",
          "description": "Metric specs for the NAS job. Validation for this field is done at `multi_trial_algorithm_spec` field."
        },
        "multiTrialAlgorithm": {
          "type": "string",
          "description": "The multi-trial Neural Architecture Search (NAS) algorithm type. Defaults to `REINFORCEMENT_LEARNING`."
        },
        "searchTrialSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpecResponse",
          "description": "Spec for search trials."
        },
        "trainTrialSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpecResponse",
          "description": "Spec for train trials. Top N [TrainTrialSpec.max_parallel_trial_count] search trials will be trained for every M [TrainTrialSpec.frequency] trials searched."
        }
      },
      "type": "object",
      "required": [
        "metric",
        "multiTrialAlgorithm",
        "searchTrialSpec",
        "trainTrialSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpec": {
      "description": "Represent spec for search trials.",
      "properties": {
        "maxFailedTrialCount": {
          "type": "integer",
          "description": "The number of failed trials that need to be seen before failing the NasJob. If set to 0, Vertex AI decides how many trials must fail before the whole job fails."
        },
        "maxParallelTrialCount": {
          "type": "integer",
          "description": "The maximum number of trials to run in parallel."
        },
        "maxTrialCount": {
          "type": "integer",
          "description": "The maximum number of Neural Architecture Search (NAS) trials to run."
        },
        "searchTrialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpec",
          "description": "The spec of a search trial job. The same spec applies to all search trials."
        }
      },
      "type": "object",
      "required": [
        "maxParallelTrialCount",
        "maxTrialCount",
        "searchTrialJobSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpecResponse": {
      "description": "Represent spec for search trials.",
      "properties": {
        "maxFailedTrialCount": {
          "type": "integer",
          "description": "The number of failed trials that need to be seen before failing the NasJob. If set to 0, Vertex AI decides how many trials must fail before the whole job fails."
        },
        "maxParallelTrialCount": {
          "type": "integer",
          "description": "The maximum number of trials to run in parallel."
        },
        "maxTrialCount": {
          "type": "integer",
          "description": "The maximum number of Neural Architecture Search (NAS) trials to run."
        },
        "searchTrialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpecResponse",
          "description": "The spec of a search trial job. The same spec applies to all search trials."
        }
      },
      "type": "object",
      "required": [
        "maxFailedTrialCount",
        "maxParallelTrialCount",
        "maxTrialCount",
        "searchTrialJobSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpec": {
      "description": "Represent spec for train trials.",
      "properties": {
        "frequency": {
          "type": "integer",
          "description": "Frequency of search trials to start train stage. Top N [TrainTrialSpec.max_parallel_trial_count] search trials will be trained for every M [TrainTrialSpec.frequency] trials searched."
        },
        "maxParallelTrialCount": {
          "type": "integer",
          "description": "The maximum number of trials to run in parallel."
        },
        "trainTrialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpec",
          "description": "The spec of a train trial job. The same spec applies to all train trials."
        }
      },
      "type": "object",
      "required": [
        "frequency",
        "maxParallelTrialCount",
        "trainTrialJobSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpecResponse": {
      "description": "Represent spec for train trials.",
      "properties": {
        "frequency": {
          "type": "integer",
          "description": "Frequency of search trials to start train stage. Top N [TrainTrialSpec.max_parallel_trial_count] search trials will be trained for every M [TrainTrialSpec.frequency] trials searched."
        },
        "maxParallelTrialCount": {
          "type": "integer",
          "description": "The maximum number of trials to run in parallel."
        },
        "trainTrialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpecResponse",
          "description": "The spec of a train trial job. The same spec applies to all train trials."
        }
      },
      "type": "object",
      "required": [
        "frequency",
        "maxParallelTrialCount",
        "trainTrialJobSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasJobSpecResponse": {
      "description": "Represents the spec of a NasJob.",
      "properties": {
        "multiTrialAlgorithmSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecMultiTrialAlgorithmSpecResponse",
          "description": "The spec of multi-trial algorithms."
        },
        "resumeNasJobId": {
          "type": "string",
          "description": "The ID of the existing NasJob in the same Project and Location which will be used to resume search. search_space_spec and nas_algorithm_spec are obtained from previous NasJob hence should not provide them again for this NasJob."
        },
        "searchSpaceSpec": {
          "type": "string",
          "description": "It defines the search space for Neural Architecture Search (NAS)."
        }
      },
      "type": "object",
      "required": [
        "multiTrialAlgorithmSpec",
        "resumeNasJobId",
        "searchSpaceSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NasTrialResponse": {
      "description": "Represents a uCAIP NasJob trial.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Time when the NasTrial's status changed to `SUCCEEDED` or `INFEASIBLE`."
        },
        "finalMeasurement": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MeasurementResponse",
          "description": "The final measurement containing the objective value."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the NasTrial was started."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the NasTrial."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "finalMeasurement",
        "startTime",
        "state"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NetworkSpec": {
      "description": "Network spec.",
      "properties": {
        "enableInternetAccess": {
          "type": "boolean",
          "description": "Whether to enable public internet access. Default false."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks)"
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the subnet that this instance is in. Format: `projects/{project_id_or_number}/regions/{region}/subnetworks/{subnetwork_id}`"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NetworkSpecResponse": {
      "description": "Network spec.",
      "properties": {
        "enableInternetAccess": {
          "type": "boolean",
          "description": "Whether to enable public internet access. Default false."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks)"
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the subnet that this instance is in. Format: `projects/{project_id_or_number}/regions/{region}/subnetworks/{subnetwork_id}`"
        }
      },
      "type": "object",
      "required": [
        "enableInternetAccess",
        "network",
        "subnetwork"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NfsMount": {
      "description": "Represents a mount configuration for Network File System (NFS) to mount.",
      "properties": {
        "mountPoint": {
          "type": "string",
          "description": "Destination mount path. The NFS will be mounted for the user under /mnt/nfs/"
        },
        "path": {
          "type": "string",
          "description": "Source path exported from NFS server. Has to start with '/', and combined with the ip address, it indicates the source mount path in the form of `server:path`"
        },
        "server": {
          "type": "string",
          "description": "IP address of the NFS server."
        }
      },
      "type": "object",
      "required": [
        "mountPoint",
        "path",
        "server"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NfsMountResponse": {
      "description": "Represents a mount configuration for Network File System (NFS) to mount.",
      "properties": {
        "mountPoint": {
          "type": "string",
          "description": "Destination mount path. The NFS will be mounted for the user under /mnt/nfs/"
        },
        "path": {
          "type": "string",
          "description": "Source path exported from NFS server. Has to start with '/', and combined with the ip address, it indicates the source mount path in the form of `server:path`"
        },
        "server": {
          "type": "string",
          "description": "IP address of the NFS server."
        }
      },
      "type": "object",
      "required": [
        "mountPoint",
        "path",
        "server"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NotebookEucConfig": {
      "description": "The euc configuration of NotebookRuntimeTemplate.",
      "properties": {
        "eucDisabled": {
          "type": "boolean",
          "description": "Input only. Whether EUC is disabled in this NotebookRuntimeTemplate. In proto3, the default value of a boolean is false. In this way, by default EUC will be enabled for NotebookRuntimeTemplate."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NotebookEucConfigResponse": {
      "description": "The euc configuration of NotebookRuntimeTemplate.",
      "properties": {
        "bypassActasCheck": {
          "type": "boolean",
          "description": "Whether ActAs check is bypassed for service account attached to the VM. If false, we need ActAs check for the default Compute Engine Service account. When a Runtime is created, a VM is allocated using Default Compute Engine Service Account. Any user requesting to use this Runtime requires Service Account User (ActAs) permission over this SA. If true, Runtime owner is using EUC and does not require the above permission as VM no longer use default Compute Engine SA, but a P4SA."
        },
        "eucDisabled": {
          "type": "boolean",
          "description": "Input only. Whether EUC is disabled in this NotebookRuntimeTemplate. In proto3, the default value of a boolean is false. In this way, by default EUC will be enabled for NotebookRuntimeTemplate."
        }
      },
      "type": "object",
      "required": [
        "bypassActasCheck",
        "eucDisabled"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NotebookIdleShutdownConfig": {
      "description": "The idle shutdown configuration of NotebookRuntimeTemplate, which contains the idle_timeout as required field.",
      "properties": {
        "idleShutdownDisabled": {
          "type": "boolean",
          "description": "Whether Idle Shutdown is disabled in this NotebookRuntimeTemplate."
        },
        "idleTimeout": {
          "type": "string",
          "description": "Duration is accurate to the second. In Notebook, Idle Timeout is accurate to minute so the range of idle_timeout (second) is: 10 * 60 ~ 1440 * 60."
        }
      },
      "type": "object",
      "required": [
        "idleTimeout"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1NotebookIdleShutdownConfigResponse": {
      "description": "The idle shutdown configuration of NotebookRuntimeTemplate, which contains the idle_timeout as required field.",
      "properties": {
        "idleShutdownDisabled": {
          "type": "boolean",
          "description": "Whether Idle Shutdown is disabled in this NotebookRuntimeTemplate."
        },
        "idleTimeout": {
          "type": "string",
          "description": "Duration is accurate to the second. In Notebook, Idle Timeout is accurate to minute so the range of idle_timeout (second) is: 10 * 60 ~ 1440 * 60."
        }
      },
      "type": "object",
      "required": [
        "idleShutdownDisabled",
        "idleTimeout"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PersistentDiskSpec": {
      "description": "Represents the spec of persistent disk options.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size in GB of the disk (default is 100GB)."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk (default is \"pd-standard\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) \"pd-standard\" (Persistent Disk Hard Disk Drive) \"pd-balanced\" (Balanced Persistent Disk) \"pd-extreme\" (Extreme Persistent Disk)"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PersistentDiskSpecResponse": {
      "description": "Represents the spec of persistent disk options.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size in GB of the disk (default is 100GB)."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk (default is \"pd-standard\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) \"pd-standard\" (Persistent Disk Hard Disk Drive) \"pd-balanced\" (Balanced Persistent Disk) \"pd-extreme\" (Extreme Persistent Disk)"
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "diskType"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineJob": {
      "description": "An instance of a machine learning PipelineJob.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network."
        },
        "pipelineSpec": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The spec of the pipeline."
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfig",
          "description": "Runtime config of the pipeline."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "templateUri": {
          "type": "string",
          "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry & Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineJobDetailResponse": {
      "description": "The runtime detail of PipelineJob.",
      "properties": {
        "pipelineContext": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ContextResponse",
          "description": "The context of the pipeline."
        },
        "pipelineRunContext": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ContextResponse",
          "description": "The context of the current pipeline run."
        },
        "taskDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineTaskDetailResponse"
          },
          "description": "The runtime details of the tasks under the pipeline."
        }
      },
      "type": "object",
      "required": [
        "pipelineContext",
        "pipelineRunContext",
        "taskDetails"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineJobResponse": {
      "description": "An instance of a machine learning PipelineJob.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Pipeline creation time."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
        },
        "endTime": {
          "type": "string",
          "description": "Pipeline end time."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "The error that occurred during pipeline execution. Only populated when the pipeline's state is FAILED or CANCELLED."
        },
        "jobDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobDetailResponse",
          "description": "The details of pipeline run. Not available in the list view."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the PipelineJob."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network."
        },
        "pipelineSpec": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The spec of the pipeline."
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfigResponse",
          "description": "Runtime config of the pipeline."
        },
        "scheduleName": {
          "type": "string",
          "description": "The schedule resource name. Only returned if the Pipeline is created by Schedule API."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "startTime": {
          "type": "string",
          "description": "Pipeline start time."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "templateMetadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineTemplateMetadataResponse",
          "description": "Pipeline template metadata. Will fill up fields if PipelineJob.template_uri is from supported template registry."
        },
        "templateUri": {
          "type": "string",
          "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry & Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this PipelineJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "jobDetail",
        "labels",
        "name",
        "network",
        "pipelineSpec",
        "reservedIpRanges",
        "runtimeConfig",
        "scheduleName",
        "serviceAccount",
        "startTime",
        "state",
        "templateMetadata",
        "templateUri",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfig": {
      "description": "The runtime config of a PipelineJob.",
      "properties": {
        "failurePolicy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfigFailurePolicy",
          "description": "Represents the failure policy of a pipeline. Currently, the default of a pipeline is that the pipeline will continue to run until no more tasks can be executed, also known as PIPELINE_FAILURE_POLICY_FAIL_SLOW. However, if a pipeline is set to PIPELINE_FAILURE_POLICY_FAIL_FAST, it will stop scheduling any new tasks when a task has failed. Any scheduled tasks will continue to completion."
        },
        "gcsOutputDirectory": {
          "type": "string",
          "description": "A path in a Cloud Storage bucket, which will be treated as the root output directory of the pipeline. It is used by the system to generate the paths of output artifacts. The artifact paths are generated with a sub-path pattern `{job_id}/{task_id}/{output_key}` under the specified output directory. The service account specified in this pipeline must have the `storage.objects.get` and `storage.objects.create` permissions for this bucket."
        },
        "inputArtifacts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime artifacts of the PipelineJob. The key will be the input artifact name and the value would be one of the InputArtifact."
        },
        "parameterValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.1.0, such as pipelines built using Kubeflow Pipelines SDK 1.9 or higher and the v2 DSL."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower.",
          "deprecationMessage": "Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower."
        }
      },
      "type": "object",
      "required": [
        "gcsOutputDirectory"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfigFailurePolicy": {
      "description": "Represents the failure policy of a pipeline. Currently, the default of a pipeline is that the pipeline will continue to run until no more tasks can be executed, also known as PIPELINE_FAILURE_POLICY_FAIL_SLOW. However, if a pipeline is set to PIPELINE_FAILURE_POLICY_FAIL_FAST, it will stop scheduling any new tasks when a task has failed. Any scheduled tasks will continue to completion.",
      "type": "string",
      "enum": [
        {
          "name": "PipelineFailurePolicyUnspecified",
          "description": "Default value, and follows fail slow behavior.",
          "value": "PIPELINE_FAILURE_POLICY_UNSPECIFIED"
        },
        {
          "name": "PipelineFailurePolicyFailSlow",
          "description": "Indicates that the pipeline should continue to run until all possible tasks have been scheduled and completed.",
          "value": "PIPELINE_FAILURE_POLICY_FAIL_SLOW"
        },
        {
          "name": "PipelineFailurePolicyFailFast",
          "description": "Indicates that the pipeline should stop scheduling new tasks after a task has failed.",
          "value": "PIPELINE_FAILURE_POLICY_FAIL_FAST"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfigResponse": {
      "description": "The runtime config of a PipelineJob.",
      "properties": {
        "failurePolicy": {
          "type": "string",
          "description": "Represents the failure policy of a pipeline. Currently, the default of a pipeline is that the pipeline will continue to run until no more tasks can be executed, also known as PIPELINE_FAILURE_POLICY_FAIL_SLOW. However, if a pipeline is set to PIPELINE_FAILURE_POLICY_FAIL_FAST, it will stop scheduling any new tasks when a task has failed. Any scheduled tasks will continue to completion."
        },
        "gcsOutputDirectory": {
          "type": "string",
          "description": "A path in a Cloud Storage bucket, which will be treated as the root output directory of the pipeline. It is used by the system to generate the paths of output artifacts. The artifact paths are generated with a sub-path pattern `{job_id}/{task_id}/{output_key}` under the specified output directory. The service account specified in this pipeline must have the `storage.objects.get` and `storage.objects.create` permissions for this bucket."
        },
        "inputArtifacts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime artifacts of the PipelineJob. The key will be the input artifact name and the value would be one of the InputArtifact."
        },
        "parameterValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.1.0, such as pipelines built using Kubeflow Pipelines SDK 1.9 or higher and the v2 DSL."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower.",
          "deprecationMessage": "Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters of the PipelineJob. The parameters will be passed into PipelineJob.pipeline_spec to replace the placeholders at runtime. This field is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower."
        }
      },
      "type": "object",
      "required": [
        "failurePolicy",
        "gcsOutputDirectory",
        "inputArtifacts",
        "parameterValues",
        "parameters"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineTaskDetailPipelineTaskStatusResponse": {
      "description": "A single record of the task status.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "The error that occurred during the state. May be set when the state is any of the non-final state (PENDING/RUNNING/CANCELLING) or FAILED state. If the state is FAILED, the error here is final and not going to be retried. If the state is a non-final state, the error indicates a system-error being retried."
        },
        "state": {
          "type": "string",
          "description": "The state of the task."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time of this status."
        }
      },
      "type": "object",
      "required": [
        "error",
        "state",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineTaskDetailResponse": {
      "description": "The runtime detail of a task execution.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Task create time."
        },
        "endTime": {
          "type": "string",
          "description": "Task end time."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "The error that occurred during task execution. Only populated when the task's state is FAILED or CANCELLED."
        },
        "execution": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExecutionResponse",
          "description": "The execution metadata of the task."
        },
        "executorDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineTaskExecutorDetailResponse",
          "description": "The detailed execution info."
        },
        "inputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime input artifacts of the task."
        },
        "outputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime output artifacts of the task."
        },
        "parentTaskId": {
          "type": "string",
          "description": "The id of the parent task if the task is within a component scope. Empty if the task is at the root level."
        },
        "pipelineTaskStatus": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineTaskDetailPipelineTaskStatusResponse"
          },
          "description": "A list of task status. This field keeps a record of task status evolving over time."
        },
        "startTime": {
          "type": "string",
          "description": "Task start time."
        },
        "state": {
          "type": "string",
          "description": "State of the task."
        },
        "taskId": {
          "type": "string",
          "description": "The system generated ID of the task."
        },
        "taskName": {
          "type": "string",
          "description": "The user specified name of the task that is defined in pipeline_spec."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "endTime",
        "error",
        "execution",
        "executorDetail",
        "inputs",
        "outputs",
        "parentTaskId",
        "pipelineTaskStatus",
        "startTime",
        "state",
        "taskId",
        "taskName"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineTaskExecutorDetailContainerDetailResponse": {
      "description": "The detail of a container execution. It contains the job names of the lifecycle of a container execution.",
      "properties": {
        "failedMainJobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the previously failed CustomJob for the main container executions. The list includes the all attempts in chronological order."
        },
        "failedPreCachingCheckJobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the previously failed CustomJob for the pre-caching-check container executions. This job will be available if the PipelineJob.pipeline_spec specifies the `pre_caching_check` hook in the lifecycle events. The list includes the all attempts in chronological order."
        },
        "mainJob": {
          "type": "string",
          "description": "The name of the CustomJob for the main container execution."
        },
        "preCachingCheckJob": {
          "type": "string",
          "description": "The name of the CustomJob for the pre-caching-check container execution. This job will be available if the PipelineJob.pipeline_spec specifies the `pre_caching_check` hook in the lifecycle events."
        }
      },
      "type": "object",
      "required": [
        "failedMainJobs",
        "failedPreCachingCheckJobs",
        "mainJob",
        "preCachingCheckJob"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineTaskExecutorDetailCustomJobDetailResponse": {
      "description": "The detailed info for a custom job executor.",
      "properties": {
        "failedJobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the previously failed CustomJob. The list includes the all attempts in chronological order."
        },
        "job": {
          "type": "string",
          "description": "The name of the CustomJob."
        }
      },
      "type": "object",
      "required": [
        "failedJobs",
        "job"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineTaskExecutorDetailResponse": {
      "description": "The runtime detail of a pipeline executor.",
      "properties": {
        "containerDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineTaskExecutorDetailContainerDetailResponse",
          "description": "The detailed info for a container executor."
        },
        "customJobDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineTaskExecutorDetailCustomJobDetailResponse",
          "description": "The detailed info for a custom job executor."
        }
      },
      "type": "object",
      "required": [
        "containerDetail",
        "customJobDetail"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PipelineTemplateMetadataResponse": {
      "description": "Pipeline template metadata if PipelineJob.template_uri is from supported template registry. Currently, the only supported registry is Artifact Registry.",
      "properties": {
        "version": {
          "type": "string",
          "description": "The version_name in artifact registry. Will always be presented in output if the PipelineJob.template_uri is from supported template registry. Format is \"sha256:abcdef123456...\"."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1Port": {
      "description": "Represents a network port in a container.",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "The number of the port to expose on the pod's IP address. Must be a valid port number, between 1 and 65535 inclusive."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PortResponse": {
      "description": "Represents a network port in a container.",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "The number of the port to expose on the pod's IP address. Must be a valid port number, between 1 and 65535 inclusive."
        }
      },
      "type": "object",
      "required": [
        "containerPort"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PredefinedSplit": {
      "description": "Assigns input data to training, validation, and test sets based on the value of a provided key. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The value of the key (either the label's value or value in the column) must be one of {`training`, `validation`, `test`}, and it defines to which set the given piece of data is assigned. If for a piece of data the key is not present or has an invalid value, that piece is ignored by the pipeline."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PredefinedSplitResponse": {
      "description": "Assigns input data to training, validation, and test sets based on the value of a provided key. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The value of the key (either the label's value or value in the column) must be one of {`training`, `validation`, `test`}, and it defines to which set the given piece of data is assigned. If for a piece of data the key is not present or has an invalid value, that piece is ignored by the pipeline."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PredictRequestResponseLoggingConfig": {
      "description": "Configuration for logging request-response to a BigQuery table.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQueryDestination",
          "description": "BigQuery table for logging. If only given a project, a new dataset will be created with name `logging__` where will be made BigQuery-dataset-name compatible (e.g. most special characters will become underscores). If no table name is given, a new table will be created with name `request_response_logging`"
        },
        "enabled": {
          "type": "boolean",
          "description": "If logging is enabled or not."
        },
        "samplingRate": {
          "type": "number",
          "description": "Percentage of requests to be logged, expressed as a fraction in range(0,1]."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PredictRequestResponseLoggingConfigResponse": {
      "description": "Configuration for logging request-response to a BigQuery table.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BigQueryDestinationResponse",
          "description": "BigQuery table for logging. If only given a project, a new dataset will be created with name `logging__` where will be made BigQuery-dataset-name compatible (e.g. most special characters will become underscores). If no table name is given, a new table will be created with name `request_response_logging`"
        },
        "enabled": {
          "type": "boolean",
          "description": "If logging is enabled or not."
        },
        "samplingRate": {
          "type": "number",
          "description": "Percentage of requests to be logged, expressed as a fraction in range(0,1]."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination",
        "enabled",
        "samplingRate"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PredictSchemata": {
      "description": "Contains the schemata used in Model's predictions and explanations via PredictionService.Predict, PredictionService.Explain and BatchPredictionJob.",
      "properties": {
        "instanceSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the format of a single instance, which are used in PredictRequest.instances, ExplainRequest.instances and BatchPredictionJob.input_config. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "parametersSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the parameters of prediction and explanation via PredictRequest.parameters, ExplainRequest.parameters and BatchPredictionJob.model_parameters. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI, if no parameters are supported, then it is set to an empty string. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "predictionSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the format of a single prediction produced by this Model, which are returned via PredictResponse.predictions, ExplainResponse.explanations, and BatchPredictionJob.output_config. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PredictSchemataResponse": {
      "description": "Contains the schemata used in Model's predictions and explanations via PredictionService.Predict, PredictionService.Explain and BatchPredictionJob.",
      "properties": {
        "instanceSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the format of a single instance, which are used in PredictRequest.instances, ExplainRequest.instances and BatchPredictionJob.input_config. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "parametersSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the parameters of prediction and explanation via PredictRequest.parameters, ExplainRequest.parameters and BatchPredictionJob.model_parameters. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI, if no parameters are supported, then it is set to an empty string. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "predictionSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing the format of a single prediction produced by this Model, which are returned via PredictResponse.predictions, ExplainResponse.explanations, and BatchPredictionJob.output_config. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this field populated by Vertex AI. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        }
      },
      "type": "object",
      "required": [
        "instanceSchemaUri",
        "parametersSchemaUri",
        "predictionSchemaUri"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1Presets": {
      "description": "Preset configuration for example-based explanations",
      "properties": {
        "modality": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PresetsModality",
          "description": "The modality of the uploaded model, which automatically configures the distance measurement and feature normalization for the underlying example index and queries. If your model does not precisely fit one of these types, it is okay to choose the closest type."
        },
        "query": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PresetsQuery",
          "description": "Preset option controlling parameters for speed-precision trade-off when querying for examples. If omitted, defaults to `PRECISE`."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PresetsModality": {
      "description": "The modality of the uploaded model, which automatically configures the distance measurement and feature normalization for the underlying example index and queries. If your model does not precisely fit one of these types, it is okay to choose the closest type.",
      "type": "string",
      "enum": [
        {
          "name": "ModalityUnspecified",
          "description": "Should not be set. Added as a recommended best practice for enums",
          "value": "MODALITY_UNSPECIFIED"
        },
        {
          "name": "Image",
          "description": "IMAGE modality",
          "value": "IMAGE"
        },
        {
          "name": "Text",
          "description": "TEXT modality",
          "value": "TEXT"
        },
        {
          "name": "Tabular",
          "description": "TABULAR modality",
          "value": "TABULAR"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PresetsQuery": {
      "description": "Preset option controlling parameters for speed-precision trade-off when querying for examples. If omitted, defaults to `PRECISE`.",
      "type": "string",
      "enum": [
        {
          "name": "Precise",
          "description": "More precise neighbors as a trade-off against slower response.",
          "value": "PRECISE"
        },
        {
          "name": "Fast",
          "description": "Faster response as a trade-off against less precise neighbors.",
          "value": "FAST"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PresetsResponse": {
      "description": "Preset configuration for example-based explanations",
      "properties": {
        "modality": {
          "type": "string",
          "description": "The modality of the uploaded model, which automatically configures the distance measurement and feature normalization for the underlying example index and queries. If your model does not precisely fit one of these types, it is okay to choose the closest type."
        },
        "query": {
          "type": "string",
          "description": "Preset option controlling parameters for speed-precision trade-off when querying for examples. If omitted, defaults to `PRECISE`."
        }
      },
      "type": "object",
      "required": [
        "modality",
        "query"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PrivateEndpointsResponse": {
      "description": "PrivateEndpoints proto is used to provide paths for users to send requests privately. To send request via private service access, use predict_http_uri, explain_http_uri or health_http_uri. To send request via private service connect, use service_attachment.",
      "properties": {
        "explainHttpUri": {
          "type": "string",
          "description": "Http(s) path to send explain requests."
        },
        "healthHttpUri": {
          "type": "string",
          "description": "Http(s) path to send health check requests."
        },
        "predictHttpUri": {
          "type": "string",
          "description": "Http(s) path to send prediction requests."
        },
        "serviceAttachment": {
          "type": "string",
          "description": "The name of the service attachment resource. Populated if private service connect is enabled."
        }
      },
      "type": "object",
      "required": [
        "explainHttpUri",
        "healthHttpUri",
        "predictHttpUri",
        "serviceAttachment"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PrivateServiceConnectConfig": {
      "description": "Represents configuration for private service connect.",
      "properties": {
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "If true, expose the IndexEndpoint via private service connect."
        },
        "projectAllowlist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Projects from which the forwarding rule will target the service attachment."
        }
      },
      "type": "object",
      "required": [
        "enablePrivateServiceConnect"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PrivateServiceConnectConfigResponse": {
      "description": "Represents configuration for private service connect.",
      "properties": {
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "If true, expose the IndexEndpoint via private service connect."
        },
        "projectAllowlist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Projects from which the forwarding rule will target the service attachment."
        }
      },
      "type": "object",
      "required": [
        "enablePrivateServiceConnect",
        "projectAllowlist"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1Probe": {
      "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ProbeExecAction",
          "description": "Exec specifies the action to take."
        },
        "periodSeconds": {
          "type": "integer",
          "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Must be less than timeout_seconds. Maps to Kubernetes probe argument 'periodSeconds'."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Must be greater or equal to period_seconds. Maps to Kubernetes probe argument 'timeoutSeconds'."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ProbeExecAction": {
      "description": "ExecAction specifies a command to execute.",
      "properties": {
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ProbeExecActionResponse": {
      "description": "ExecAction specifies a command to execute.",
      "properties": {
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy."
        }
      },
      "type": "object",
      "required": [
        "command"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ProbeResponse": {
      "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ProbeExecActionResponse",
          "description": "Exec specifies the action to take."
        },
        "periodSeconds": {
          "type": "integer",
          "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Must be less than timeout_seconds. Maps to Kubernetes probe argument 'periodSeconds'."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Must be greater or equal to period_seconds. Maps to Kubernetes probe argument 'timeoutSeconds'."
        }
      },
      "type": "object",
      "required": [
        "exec",
        "periodSeconds",
        "timeoutSeconds"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PythonPackageSpec": {
      "description": "The spec of a Python packaged code.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command line arguments to be passed to the Python task."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EnvVar"
          },
          "description": "Environment variables to be passed to the python module. Maximum limit is 100."
        },
        "executorImageUri": {
          "type": "string",
          "description": "The URI of a container image in Artifact Registry that will run the provided Python package. Vertex AI provides a wide range of executor images with pre-installed packages to meet users' various use cases. See the list of [pre-built containers for training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). You must use an image from this list."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Cloud Storage location of the Python package files which are the training program and its dependent packages. The maximum number of package URIs is 100."
        },
        "pythonModule": {
          "type": "string",
          "description": "The Python module name to run after installing the packages."
        }
      },
      "type": "object",
      "required": [
        "executorImageUri",
        "packageUris",
        "pythonModule"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1PythonPackageSpecResponse": {
      "description": "The spec of a Python packaged code.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command line arguments to be passed to the Python task."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EnvVarResponse"
          },
          "description": "Environment variables to be passed to the python module. Maximum limit is 100."
        },
        "executorImageUri": {
          "type": "string",
          "description": "The URI of a container image in Artifact Registry that will run the provided Python package. Vertex AI provides a wide range of executor images with pre-installed packages to meet users' various use cases. See the list of [pre-built containers for training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). You must use an image from this list."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Cloud Storage location of the Python package files which are the training program and its dependent packages. The maximum number of package URIs is 100."
        },
        "pythonModule": {
          "type": "string",
          "description": "The Python module name to run after installing the packages."
        }
      },
      "type": "object",
      "required": [
        "args",
        "env",
        "executorImageUri",
        "packageUris",
        "pythonModule"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1RaySpec": {
      "description": "Configuration information for the Ray cluster. For experimental launch, Ray cluster creation and Persistent cluster creation are 1:1 mapping: We will provision all the nodes within the Persistent cluster as Ray nodes.",
      "properties": {
        "headNodeResourcePoolId": {
          "type": "string",
          "description": "Optional. This will be used to indicate which resource pool will serve as the Ray head node(the first node within that pool). Will use the machine from the first workerpool as the head node by default if this field isn't set."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. Default image for user to choose a preferred ML framework (for example, TensorFlow or Pytorch) by choosing from [Vertex prebuilt images](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). Either this or the resource_pool_images is required. Use this field if you need all the resource pools to have the same Ray image. Otherwise, use the {@code resource_pool_images} field."
        },
        "resourcePoolImages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Required if image_uri isn't set. A map of resource_pool_id to prebuild Ray image if user need to use different images for different head/worker pools. This map needs to cover all the resource pool ids. Example: { \"ray_head_node_pool\": \"head image\" \"ray_worker_node_pool1\": \"worker image\" \"ray_worker_node_pool2\": \"another worker image\" }"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1RaySpecResponse": {
      "description": "Configuration information for the Ray cluster. For experimental launch, Ray cluster creation and Persistent cluster creation are 1:1 mapping: We will provision all the nodes within the Persistent cluster as Ray nodes.",
      "properties": {
        "headNodeResourcePoolId": {
          "type": "string",
          "description": "Optional. This will be used to indicate which resource pool will serve as the Ray head node(the first node within that pool). Will use the machine from the first workerpool as the head node by default if this field isn't set."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. Default image for user to choose a preferred ML framework (for example, TensorFlow or Pytorch) by choosing from [Vertex prebuilt images](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). Either this or the resource_pool_images is required. Use this field if you need all the resource pools to have the same Ray image. Otherwise, use the {@code resource_pool_images} field."
        },
        "resourcePoolImages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Required if image_uri isn't set. A map of resource_pool_id to prebuild Ray image if user need to use different images for different head/worker pools. This map needs to cover all the resource pool ids. Example: { \"ray_head_node_pool\": \"head image\" \"ray_worker_node_pool1\": \"worker image\" \"ray_worker_node_pool2\": \"another worker image\" }"
        }
      },
      "type": "object",
      "required": [
        "headNodeResourcePoolId",
        "imageUri",
        "resourcePoolImages"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ResourcePool": {
      "description": "Represents the spec of a group of resources of the same type, for example machine type, disk, and accelerators, in a PersistentResource.",
      "properties": {
        "autoscalingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourcePoolAutoscalingSpec",
          "description": "Optional. Optional spec to configure GKE autoscaling"
        },
        "diskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DiskSpec",
          "description": "Optional. Disk spec for the machine in this node pool."
        },
        "id": {
          "type": "string",
          "description": "Immutable. The unique ID in a PersistentResource for referring to this resource pool. User can specify it if necessary. Otherwise, it's generated automatically."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpec",
          "description": "Immutable. The specification of a single machine."
        },
        "replicaCount": {
          "type": "string",
          "description": "Optional. The total number of machines to use for this resource pool."
        }
      },
      "type": "object",
      "required": [
        "machineSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ResourcePoolAutoscalingSpec": {
      "description": "The min/max number of replicas allowed if enabling autoscaling",
      "properties": {
        "maxReplicaCount": {
          "type": "string",
          "description": "Optional. max replicas in the node pool, must be ≥ replica_count and > min_replica_count or will throw error"
        },
        "minReplicaCount": {
          "type": "string",
          "description": "Optional. min replicas in the node pool, must be ≤ replica_count and < max_replica_count or will throw error"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ResourcePoolAutoscalingSpecResponse": {
      "description": "The min/max number of replicas allowed if enabling autoscaling",
      "properties": {
        "maxReplicaCount": {
          "type": "string",
          "description": "Optional. max replicas in the node pool, must be ≥ replica_count and > min_replica_count or will throw error"
        },
        "minReplicaCount": {
          "type": "string",
          "description": "Optional. min replicas in the node pool, must be ≤ replica_count and < max_replica_count or will throw error"
        }
      },
      "type": "object",
      "required": [
        "maxReplicaCount",
        "minReplicaCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ResourcePoolResponse": {
      "description": "Represents the spec of a group of resources of the same type, for example machine type, disk, and accelerators, in a PersistentResource.",
      "properties": {
        "autoscalingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourcePoolAutoscalingSpecResponse",
          "description": "Optional. Optional spec to configure GKE autoscaling"
        },
        "diskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DiskSpecResponse",
          "description": "Optional. Disk spec for the machine in this node pool."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpecResponse",
          "description": "Immutable. The specification of a single machine."
        },
        "replicaCount": {
          "type": "string",
          "description": "Optional. The total number of machines to use for this resource pool."
        },
        "usedReplicaCount": {
          "type": "string",
          "description": "The number of machines currently in use by training jobs for this resource pool. Will replace idle_replica_count."
        }
      },
      "type": "object",
      "required": [
        "autoscalingSpec",
        "diskSpec",
        "machineSpec",
        "replicaCount",
        "usedReplicaCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ResourceRuntimeResponse": {
      "description": "Persistent Cluster runtime information as output",
      "properties": {
        "accessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for user to connect to the Cluster. Example: { \"RAY_HEAD_NODE_INTERNAL_IP\": \"head-node-IP:10001\" \"RAY_DASHBOARD_URI\": \"ray-dashboard-address:8888\" }"
        },
        "notebookRuntimeTemplate": {
          "type": "string",
          "description": "The resource name of NotebookRuntimeTemplate for the RoV Persistent Cluster The NotebokRuntimeTemplate is created in the same VPC (if set), and with the same Ray and Python version as the Persistent Cluster. Example: \"projects/1000/locations/us-central1/notebookRuntimeTemplates/abc123\""
        }
      },
      "type": "object",
      "required": [
        "accessUris",
        "notebookRuntimeTemplate"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ResourceRuntimeSpec": {
      "description": "Configuration for the runtime on a PersistentResource instance, including but not limited to: * Service accounts used to run the workloads. * Whether to make it a dedicated Ray Cluster.",
      "properties": {
        "raySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1RaySpec",
          "description": "Optional. Ray cluster configuration. Required when creating a dedicated RayCluster on the PersistentResource."
        },
        "serviceAccountSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ServiceAccountSpec",
          "description": "Optional. Configure the use of workload identity on the PersistentResource"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ResourceRuntimeSpecResponse": {
      "description": "Configuration for the runtime on a PersistentResource instance, including but not limited to: * Service accounts used to run the workloads. * Whether to make it a dedicated Ray Cluster.",
      "properties": {
        "raySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1RaySpecResponse",
          "description": "Optional. Ray cluster configuration. Required when creating a dedicated RayCluster on the PersistentResource."
        },
        "serviceAccountSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ServiceAccountSpecResponse",
          "description": "Optional. Configure the use of workload identity on the PersistentResource"
        }
      },
      "type": "object",
      "required": [
        "raySpec",
        "serviceAccountSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ResourcesConsumedResponse": {
      "description": "Statistics information about resource consumption.",
      "properties": {
        "replicaHours": {
          "type": "number",
          "description": "The number of replica hours used. Note that many replicas may run in parallel, and additionally any given work may be queued for some time. Therefore this value is not strictly related to wall time."
        }
      },
      "type": "object",
      "required": [
        "replicaHours"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SampleConfig": {
      "description": "Active learning data sampling config. For every active learning labeling iteration, it will select a batch of data based on the sampling strategy.",
      "properties": {
        "followingBatchSamplePercentage": {
          "type": "integer",
          "description": "The percentage of data needed to be labeled in each following batch (except the first batch)."
        },
        "initialBatchSamplePercentage": {
          "type": "integer",
          "description": "The percentage of data needed to be labeled in the first batch."
        },
        "sampleStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SampleConfigSampleStrategy",
          "description": "Field to choose sampling strategy. Sampling strategy will decide which data should be selected for human labeling in every batch."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SampleConfigResponse": {
      "description": "Active learning data sampling config. For every active learning labeling iteration, it will select a batch of data based on the sampling strategy.",
      "properties": {
        "followingBatchSamplePercentage": {
          "type": "integer",
          "description": "The percentage of data needed to be labeled in each following batch (except the first batch)."
        },
        "initialBatchSamplePercentage": {
          "type": "integer",
          "description": "The percentage of data needed to be labeled in the first batch."
        },
        "sampleStrategy": {
          "type": "string",
          "description": "Field to choose sampling strategy. Sampling strategy will decide which data should be selected for human labeling in every batch."
        }
      },
      "type": "object",
      "required": [
        "followingBatchSamplePercentage",
        "initialBatchSamplePercentage",
        "sampleStrategy"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SampleConfigSampleStrategy": {
      "description": "Field to choose sampling strategy. Sampling strategy will decide which data should be selected for human labeling in every batch.",
      "type": "string",
      "enum": [
        {
          "name": "SampleStrategyUnspecified",
          "description": "Default will be treated as UNCERTAINTY.",
          "value": "SAMPLE_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "Uncertainty",
          "description": "Sample the most uncertain data to label.",
          "value": "UNCERTAINTY"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SampledShapleyAttribution": {
      "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features.",
      "properties": {
        "pathCount": {
          "type": "integer",
          "description": "The number of feature permutations to consider when approximating the Shapley values. Valid range of its value is [1, 50], inclusively."
        }
      },
      "type": "object",
      "required": [
        "pathCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SampledShapleyAttributionResponse": {
      "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features.",
      "properties": {
        "pathCount": {
          "type": "integer",
          "description": "The number of feature permutations to consider when approximating the Shapley values. Valid range of its value is [1, 50], inclusively."
        }
      },
      "type": "object",
      "required": [
        "pathCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SamplingStrategy": {
      "description": "Sampling Strategy for logging, can be for both training and prediction dataset.",
      "properties": {
        "randomSampleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SamplingStrategyRandomSampleConfig",
          "description": "Random sample config. Will support more sampling strategies later."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SamplingStrategyRandomSampleConfig": {
      "description": "Requests are randomly selected.",
      "properties": {
        "sampleRate": {
          "type": "number",
          "description": "Sample rate (0, 1]"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SamplingStrategyRandomSampleConfigResponse": {
      "description": "Requests are randomly selected.",
      "properties": {
        "sampleRate": {
          "type": "number",
          "description": "Sample rate (0, 1]"
        }
      },
      "type": "object",
      "required": [
        "sampleRate"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SamplingStrategyResponse": {
      "description": "Sampling Strategy for logging, can be for both training and prediction dataset.",
      "properties": {
        "randomSampleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SamplingStrategyRandomSampleConfigResponse",
          "description": "Random sample config. Will support more sampling strategies later."
        }
      },
      "type": "object",
      "required": [
        "randomSampleConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SavedQuery": {
      "description": "A SavedQuery is a view of the dataset. It references a subset of annotations by problem type and filters.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the SavedQuery. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write update. If not set, a blind \"overwrite\" update happens."
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Some additional information about the SavedQuery."
        },
        "problemType": {
          "type": "string",
          "description": "Problem type of the SavedQuery. Allowed values: * IMAGE_CLASSIFICATION_SINGLE_LABEL * IMAGE_CLASSIFICATION_MULTI_LABEL * IMAGE_BOUNDING_POLY * IMAGE_BOUNDING_BOX * TEXT_CLASSIFICATION_SINGLE_LABEL * TEXT_CLASSIFICATION_MULTI_LABEL * TEXT_EXTRACTION * TEXT_SENTIMENT * VIDEO_CLASSIFICATION * VIDEO_OBJECT_TRACKING"
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "problemType"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SavedQueryResponse": {
      "description": "A SavedQuery is a view of the dataset. It references a subset of annotations by problem type and filters.",
      "properties": {
        "annotationFilter": {
          "type": "string",
          "description": "Filters on the Annotations in the dataset."
        },
        "annotationSpecCount": {
          "type": "integer",
          "description": "Number of AnnotationSpecs in the context of the SavedQuery."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this SavedQuery was created."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the SavedQuery. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write update. If not set, a blind \"overwrite\" update happens."
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Some additional information about the SavedQuery."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the SavedQuery."
        },
        "problemType": {
          "type": "string",
          "description": "Problem type of the SavedQuery. Allowed values: * IMAGE_CLASSIFICATION_SINGLE_LABEL * IMAGE_CLASSIFICATION_MULTI_LABEL * IMAGE_BOUNDING_POLY * IMAGE_BOUNDING_BOX * TEXT_CLASSIFICATION_SINGLE_LABEL * TEXT_CLASSIFICATION_MULTI_LABEL * TEXT_EXTRACTION * TEXT_SENTIMENT * VIDEO_CLASSIFICATION * VIDEO_OBJECT_TRACKING"
        },
        "supportAutomlTraining": {
          "type": "boolean",
          "description": "If the Annotations belonging to the SavedQuery can be used for AutoML training."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when SavedQuery was last updated."
        }
      },
      "type": "object",
      "required": [
        "annotationFilter",
        "annotationSpecCount",
        "createTime",
        "displayName",
        "etag",
        "metadata",
        "name",
        "problemType",
        "supportAutomlTraining",
        "updateTime"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ScheduleRunResponseResponse": {
      "description": "Status of a scheduled run.",
      "properties": {
        "runResponse": {
          "type": "string",
          "description": "The response of the scheduled run."
        },
        "scheduledRunTime": {
          "type": "string",
          "description": "The scheduled run time based on the user-specified schedule."
        }
      },
      "type": "object",
      "required": [
        "runResponse",
        "scheduledRunTime"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1Scheduling": {
      "description": "All parameters related to queuing and scheduling of custom jobs.",
      "properties": {
        "disableRetries": {
          "type": "boolean",
          "description": "Optional. Indicates if the job should retry for internal errors after the job starts running. If true, overrides `Scheduling.restart_job_on_worker_restart` to false."
        },
        "restartJobOnWorkerRestart": {
          "type": "boolean",
          "description": "Restarts the entire CustomJob if a worker gets restarted. This feature can be used by distributed training jobs that are not resilient to workers leaving and joining a job."
        },
        "timeout": {
          "type": "string",
          "description": "The maximum job running time. The default is 7 days."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SchedulingResponse": {
      "description": "All parameters related to queuing and scheduling of custom jobs.",
      "properties": {
        "disableRetries": {
          "type": "boolean",
          "description": "Optional. Indicates if the job should retry for internal errors after the job starts running. If true, overrides `Scheduling.restart_job_on_worker_restart` to false."
        },
        "restartJobOnWorkerRestart": {
          "type": "boolean",
          "description": "Restarts the entire CustomJob if a worker gets restarted. This feature can be used by distributed training jobs that are not resilient to workers leaving and joining a job."
        },
        "timeout": {
          "type": "string",
          "description": "The maximum job running time. The default is 7 days."
        }
      },
      "type": "object",
      "required": [
        "disableRetries",
        "restartJobOnWorkerRestart",
        "timeout"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ServiceAccountSpec": {
      "description": "Configuration for the use of custom service account to run the workloads.",
      "properties": {
        "enableCustomServiceAccount": {
          "type": "boolean",
          "description": "If true, custom user-managed service account is enforced to run any workloads (for example, Vertex Jobs) on the resource. Otherwise, uses the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Default service account that this PersistentResource's workloads run as. The workloads include: * Any runtime specified via `ResourceRuntimeSpec` on creation time, for example, Ray. * Jobs submitted to PersistentResource, if no other service account specified in the job specs. Only works when custom service account is enabled and users have the `iam.serviceAccounts.actAs` permission on this service account. Required if any containers are specified in `ResourceRuntimeSpec`."
        }
      },
      "type": "object",
      "required": [
        "enableCustomServiceAccount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ServiceAccountSpecResponse": {
      "description": "Configuration for the use of custom service account to run the workloads.",
      "properties": {
        "enableCustomServiceAccount": {
          "type": "boolean",
          "description": "If true, custom user-managed service account is enforced to run any workloads (for example, Vertex Jobs) on the resource. Otherwise, uses the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Default service account that this PersistentResource's workloads run as. The workloads include: * Any runtime specified via `ResourceRuntimeSpec` on creation time, for example, Ray. * Jobs submitted to PersistentResource, if no other service account specified in the job specs. Only works when custom service account is enabled and users have the `iam.serviceAccounts.actAs` permission on this service account. Required if any containers are specified in `ResourceRuntimeSpec`."
        }
      },
      "type": "object",
      "required": [
        "enableCustomServiceAccount",
        "serviceAccount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SmoothGradConfig": {
      "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf",
      "properties": {
        "featureNoiseSigma": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureNoiseSigma",
          "description": "This is similar to noise_sigma, but provides additional flexibility. A separate noise sigma can be provided for each feature, which is useful if their distributions are different. No noise is added to features that are not set. If this field is unset, noise_sigma will be used for all features."
        },
        "noiseSigma": {
          "type": "number",
          "description": "This is a single float value and will be used to add noise to all the features. Use this field when all features are normalized to have the same distribution: scale to range [0, 1], [-1, 1] or z-scoring, where features are normalized to have 0-mean and 1-variance. Learn more about [normalization](https://developers.google.com/machine-learning/data-prep/transform/normalization). For best results the recommended value is about 10% - 20% of the standard deviation of the input feature. Refer to section 3.2 of the SmoothGrad paper: https://arxiv.org/pdf/1706.03825.pdf. Defaults to 0.1. If the distribution is different per feature, set feature_noise_sigma instead for each feature."
        },
        "noisySampleCount": {
          "type": "integer",
          "description": "The number of gradient samples to use for approximation. The higher this number, the more accurate the gradient is, but the runtime complexity increases by this factor as well. Valid range of its value is [1, 50]. Defaults to 3."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1SmoothGradConfigResponse": {
      "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf",
      "properties": {
        "featureNoiseSigma": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureNoiseSigmaResponse",
          "description": "This is similar to noise_sigma, but provides additional flexibility. A separate noise sigma can be provided for each feature, which is useful if their distributions are different. No noise is added to features that are not set. If this field is unset, noise_sigma will be used for all features."
        },
        "noiseSigma": {
          "type": "number",
          "description": "This is a single float value and will be used to add noise to all the features. Use this field when all features are normalized to have the same distribution: scale to range [0, 1], [-1, 1] or z-scoring, where features are normalized to have 0-mean and 1-variance. Learn more about [normalization](https://developers.google.com/machine-learning/data-prep/transform/normalization). For best results the recommended value is about 10% - 20% of the standard deviation of the input feature. Refer to section 3.2 of the SmoothGrad paper: https://arxiv.org/pdf/1706.03825.pdf. Defaults to 0.1. If the distribution is different per feature, set feature_noise_sigma instead for each feature."
        },
        "noisySampleCount": {
          "type": "integer",
          "description": "The number of gradient samples to use for approximation. The higher this number, the more accurate the gradient is, but the runtime complexity increases by this factor as well. Valid range of its value is [1, 50]. Defaults to 3."
        }
      },
      "type": "object",
      "required": [
        "featureNoiseSigma",
        "noiseSigma",
        "noisySampleCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StratifiedSplit": {
      "description": "Assigns input data to the training, validation, and test sets so that the distribution of values found in the categorical column (as specified by the `key` field) is mirrored within each split. The fraction values determine the relative sizes of the splits. For example, if the specified column has three values, with 50% of the rows having value \"A\", 25% value \"B\", and 25% value \"C\", and the split fractions are specified as 80/10/10, then the training set will constitute 80% of the training data, with about 50% of the training set rows having the value \"A\" for the specified column, about 25% having the value \"B\", and about 25% having the value \"C\". Only the top 500 occurring values are used; any values not in the top 500 values are randomly assigned to a split. If less than three rows contain a specific value, those rows are randomly assigned. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The key provided must be for a categorical column."
        },
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StratifiedSplitResponse": {
      "description": "Assigns input data to the training, validation, and test sets so that the distribution of values found in the categorical column (as specified by the `key` field) is mirrored within each split. The fraction values determine the relative sizes of the splits. For example, if the specified column has three values, with 50% of the rows having value \"A\", 25% value \"B\", and 25% value \"C\", and the split fractions are specified as 80/10/10, then the training set will constitute 80% of the training data, with about 50% of the training set rows having the value \"A\" for the specified column, about 25% having the value \"B\", and about 25% having the value \"C\". Only the top 500 occurring values are used; any values not in the top 500 values are randomly assigned to a split. If less than three rows contain a specific value, those rows are randomly assigned. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The key provided must be for a categorical column."
        },
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "key",
        "testFraction",
        "trainingFraction",
        "validationFraction"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpec": {
      "description": "Represents specification of a Study.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecAlgorithm",
          "description": "The search algorithm specified for the Study."
        },
        "convexAutomatedStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecConvexAutomatedStoppingSpec",
          "description": "The automated early stopping spec using convex stopping rule."
        },
        "convexStopConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecConvexStopConfig",
          "description": "Deprecated. The automated early stopping using convex stopping rule.",
          "deprecationMessage": "Deprecated. The automated early stopping using convex stopping rule."
        },
        "decayCurveStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecDecayCurveAutomatedStoppingSpec",
          "description": "The automated early stopping spec using decay curve rule."
        },
        "measurementSelectionType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecMeasurementSelectionType",
          "description": "Describe which measurement selection type will be used"
        },
        "medianAutomatedStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecMedianAutomatedStoppingSpec",
          "description": "The automated early stopping spec using median rule."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpec"
          },
          "description": "Metric specs for the Study."
        },
        "observationNoise": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecObservationNoise",
          "description": "The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpec"
          },
          "description": "The set of parameters to tune."
        },
        "studyStoppingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecStudyStoppingConfig",
          "description": "Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition."
        },
        "transferLearningConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecTransferLearningConfig",
          "description": "The configuration info/options for transfer learning. Currently supported for Vertex AI Vizier service, not HyperParameterTuningJob"
        }
      },
      "type": "object",
      "required": [
        "metrics",
        "parameters"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecAlgorithm": {
      "description": "The search algorithm specified for the Study.",
      "type": "string",
      "enum": [
        {
          "name": "AlgorithmUnspecified",
          "description": "The default algorithm used by Vertex AI for [hyperparameter tuning](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview) and [Vertex AI Vizier](https://cloud.google.com/vertex-ai/docs/vizier).",
          "value": "ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "GridSearch",
          "description": "Simple grid search within the feasible space. To use grid search, all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`.",
          "value": "GRID_SEARCH"
        },
        {
          "name": "RandomSearch",
          "description": "Simple random search within the feasible space.",
          "value": "RANDOM_SEARCH"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecConvexAutomatedStoppingSpec": {
      "description": "Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by min_measurement_count), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at max_num_steps according to the slope of the incomplete objective value curve. No prediction can be made if the curve is completely flat. If the overestimation is worse than the best objective value of the completed trials, this pending trial will be early-stopped, but a last measurement will be added to the pending trial with max_num_steps and predicted objective value from the autoregression model.",
      "properties": {
        "learningRateParameterName": {
          "type": "string",
          "description": "The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial."
        },
        "maxStepCount": {
          "type": "string",
          "description": "Steps used in predicting the final objective for early stopped trials. In general, it's set to be the same as the defined steps in training / tuning. If not defined, it will learn it from the completed trials. When use_steps is false, this field is set to the maximum elapsed seconds."
        },
        "minMeasurementCount": {
          "type": "string",
          "description": "The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than min_measurement_count+1 completed trials or pending trials with less than min_measurement_count measurements. If not defined, the default value is 5."
        },
        "minStepCount": {
          "type": "string",
          "description": "Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count > min_step_count won't be considered for early stopping. It's ok to set it to 0, and a trial can be early stopped at any stage. By default, min_step_count is set to be one-tenth of the max_step_count. When use_elapsed_duration is true, this field is set to the minimum elapsed seconds."
        },
        "updateAllStoppedTrials": {
          "type": "boolean",
          "description": "ConvexAutomatedStoppingSpec by default only updates the trials that needs to be early stopped using a newly trained auto-regressive model. When this flag is set to True, all stopped trials from the beginning are potentially updated in terms of their `final_measurement`. Also, note that the training logic of autoregressive models is different in this case. Enabling this option has shown better results and this may be the default option in the future."
        },
        "useElapsedDuration": {
          "type": "boolean",
          "description": "This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_elapsed_duration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecConvexAutomatedStoppingSpecResponse": {
      "description": "Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by min_measurement_count), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at max_num_steps according to the slope of the incomplete objective value curve. No prediction can be made if the curve is completely flat. If the overestimation is worse than the best objective value of the completed trials, this pending trial will be early-stopped, but a last measurement will be added to the pending trial with max_num_steps and predicted objective value from the autoregression model.",
      "properties": {
        "learningRateParameterName": {
          "type": "string",
          "description": "The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial."
        },
        "maxStepCount": {
          "type": "string",
          "description": "Steps used in predicting the final objective for early stopped trials. In general, it's set to be the same as the defined steps in training / tuning. If not defined, it will learn it from the completed trials. When use_steps is false, this field is set to the maximum elapsed seconds."
        },
        "minMeasurementCount": {
          "type": "string",
          "description": "The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than min_measurement_count+1 completed trials or pending trials with less than min_measurement_count measurements. If not defined, the default value is 5."
        },
        "minStepCount": {
          "type": "string",
          "description": "Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count > min_step_count won't be considered for early stopping. It's ok to set it to 0, and a trial can be early stopped at any stage. By default, min_step_count is set to be one-tenth of the max_step_count. When use_elapsed_duration is true, this field is set to the minimum elapsed seconds."
        },
        "updateAllStoppedTrials": {
          "type": "boolean",
          "description": "ConvexAutomatedStoppingSpec by default only updates the trials that needs to be early stopped using a newly trained auto-regressive model. When this flag is set to True, all stopped trials from the beginning are potentially updated in terms of their `final_measurement`. Also, note that the training logic of autoregressive models is different in this case. Enabling this option has shown better results and this may be the default option in the future."
        },
        "useElapsedDuration": {
          "type": "boolean",
          "description": "This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_elapsed_duration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds."
        }
      },
      "type": "object",
      "required": [
        "learningRateParameterName",
        "maxStepCount",
        "minMeasurementCount",
        "minStepCount",
        "updateAllStoppedTrials",
        "useElapsedDuration"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecConvexStopConfig": {
      "description": "Configuration for ConvexStopPolicy.",
      "properties": {
        "autoregressiveOrder": {
          "type": "string",
          "description": "The number of Trial measurements used in autoregressive model for value prediction. A trial won't be considered early stopping if has fewer measurement points."
        },
        "learningRateParameterName": {
          "type": "string",
          "description": "The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial."
        },
        "maxNumSteps": {
          "type": "string",
          "description": "Steps used in predicting the final objective for early stopped trials. In general, it's set to be the same as the defined steps in training / tuning. When use_steps is false, this field is set to the maximum elapsed seconds."
        },
        "minNumSteps": {
          "type": "string",
          "description": "Minimum number of steps for a trial to complete. Trials which do not have a measurement with num_steps > min_num_steps won't be considered for early stopping. It's ok to set it to 0, and a trial can be early stopped at any stage. By default, min_num_steps is set to be one-tenth of the max_num_steps. When use_steps is false, this field is set to the minimum elapsed seconds."
        },
        "useSeconds": {
          "type": "boolean",
          "description": "This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_seconds==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_seconds==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecConvexStopConfigResponse": {
      "description": "Configuration for ConvexStopPolicy.",
      "properties": {
        "autoregressiveOrder": {
          "type": "string",
          "description": "The number of Trial measurements used in autoregressive model for value prediction. A trial won't be considered early stopping if has fewer measurement points."
        },
        "learningRateParameterName": {
          "type": "string",
          "description": "The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial."
        },
        "maxNumSteps": {
          "type": "string",
          "description": "Steps used in predicting the final objective for early stopped trials. In general, it's set to be the same as the defined steps in training / tuning. When use_steps is false, this field is set to the maximum elapsed seconds."
        },
        "minNumSteps": {
          "type": "string",
          "description": "Minimum number of steps for a trial to complete. Trials which do not have a measurement with num_steps > min_num_steps won't be considered for early stopping. It's ok to set it to 0, and a trial can be early stopped at any stage. By default, min_num_steps is set to be one-tenth of the max_num_steps. When use_steps is false, this field is set to the minimum elapsed seconds."
        },
        "useSeconds": {
          "type": "boolean",
          "description": "This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_seconds==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_seconds==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds."
        }
      },
      "type": "object",
      "required": [
        "autoregressiveOrder",
        "learningRateParameterName",
        "maxNumSteps",
        "minNumSteps",
        "useSeconds"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecDecayCurveAutomatedStoppingSpec": {
      "description": "The decay curve automated stopping rule builds a Gaussian Process Regressor to predict the final objective value of a Trial based on the already completed Trials and the intermediate measurements of the current Trial. Early stopping is requested for the current Trial if there is very low probability to exceed the optimal value found so far.",
      "properties": {
        "useElapsedDuration": {
          "type": "boolean",
          "description": "True if Measurement.elapsed_duration is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecDecayCurveAutomatedStoppingSpecResponse": {
      "description": "The decay curve automated stopping rule builds a Gaussian Process Regressor to predict the final objective value of a Trial based on the already completed Trials and the intermediate measurements of the current Trial. Early stopping is requested for the current Trial if there is very low probability to exceed the optimal value found so far.",
      "properties": {
        "useElapsedDuration": {
          "type": "boolean",
          "description": "True if Measurement.elapsed_duration is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis."
        }
      },
      "type": "object",
      "required": [
        "useElapsedDuration"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecMeasurementSelectionType": {
      "description": "Describe which measurement selection type will be used",
      "type": "string",
      "enum": [
        {
          "name": "MeasurementSelectionTypeUnspecified",
          "description": "Will be treated as LAST_MEASUREMENT.",
          "value": "MEASUREMENT_SELECTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "LastMeasurement",
          "description": "Use the last measurement reported.",
          "value": "LAST_MEASUREMENT"
        },
        {
          "name": "BestMeasurement",
          "description": "Use the best measurement reported.",
          "value": "BEST_MEASUREMENT"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecMedianAutomatedStoppingSpec": {
      "description": "The median automated stopping rule stops a pending Trial if the Trial's best objective_value is strictly below the median 'performance' of all completed Trials reported up to the Trial's last measurement. Currently, 'performance' refers to the running average of the objective values reported by the Trial in each measurement.",
      "properties": {
        "useElapsedDuration": {
          "type": "boolean",
          "description": "True if median automated stopping rule applies on Measurement.elapsed_duration. It means that elapsed_duration field of latest measurement of current Trial is used to compute median objective value for each completed Trials."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecMedianAutomatedStoppingSpecResponse": {
      "description": "The median automated stopping rule stops a pending Trial if the Trial's best objective_value is strictly below the median 'performance' of all completed Trials reported up to the Trial's last measurement. Currently, 'performance' refers to the running average of the objective values reported by the Trial in each measurement.",
      "properties": {
        "useElapsedDuration": {
          "type": "boolean",
          "description": "True if median automated stopping rule applies on Measurement.elapsed_duration. It means that elapsed_duration field of latest measurement of current Trial is used to compute median objective value for each completed Trials."
        }
      },
      "type": "object",
      "required": [
        "useElapsedDuration"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpec": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpecGoal",
          "description": "The optimization goal of the metric."
        },
        "metricId": {
          "type": "string",
          "description": "The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs."
        },
        "safetyConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpecSafetyMetricConfig",
          "description": "Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metricId"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpecGoal": {
      "description": "Required. The optimization goal of the metric.",
      "type": "string",
      "enum": [
        {
          "name": "GoalTypeUnspecified",
          "description": "Goal Type will default to maximize.",
          "value": "GOAL_TYPE_UNSPECIFIED"
        },
        {
          "name": "Maximize",
          "description": "Maximize the goal metric.",
          "value": "MAXIMIZE"
        },
        {
          "name": "Minimize",
          "description": "Minimize the goal metric.",
          "value": "MINIMIZE"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpecResponse": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "type": "string",
          "description": "The optimization goal of the metric."
        },
        "metricId": {
          "type": "string",
          "description": "The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs."
        },
        "safetyConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpecSafetyMetricConfigResponse",
          "description": "Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metricId",
        "safetyConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpecSafetyMetricConfig": {
      "description": "Used in safe optimization to specify threshold levels and risk tolerance.",
      "properties": {
        "desiredMinSafeTrialsFraction": {
          "type": "number",
          "description": "Desired minimum fraction of safe trials (over total number of trials) that should be targeted by the algorithm at any time during the study (best effort). This should be between 0.0 and 1.0 and a value of 0.0 means that there is no minimum and an algorithm proceeds without targeting any specific fraction. A value of 1.0 means that the algorithm attempts to only Suggest safe Trials."
        },
        "safetyThreshold": {
          "type": "number",
          "description": "Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpecSafetyMetricConfigResponse": {
      "description": "Used in safe optimization to specify threshold levels and risk tolerance.",
      "properties": {
        "desiredMinSafeTrialsFraction": {
          "type": "number",
          "description": "Desired minimum fraction of safe trials (over total number of trials) that should be targeted by the algorithm at any time during the study (best effort). This should be between 0.0 and 1.0 and a value of 0.0 means that there is no minimum and an algorithm proceeds without targeting any specific fraction. A value of 1.0 means that the algorithm attempts to only Suggest safe Trials."
        },
        "safetyThreshold": {
          "type": "number",
          "description": "Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used."
        }
      },
      "type": "object",
      "required": [
        "desiredMinSafeTrialsFraction",
        "safetyThreshold"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecObservationNoise": {
      "description": "The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.",
      "type": "string",
      "enum": [
        {
          "name": "ObservationNoiseUnspecified",
          "description": "The default noise level chosen by Vertex AI.",
          "value": "OBSERVATION_NOISE_UNSPECIFIED"
        },
        {
          "name": "Low",
          "description": "Vertex AI assumes that the objective function is (nearly) perfectly reproducible, and will never repeat the same Trial parameters.",
          "value": "LOW"
        },
        {
          "name": "High",
          "description": "Vertex AI will estimate the amount of noise in metric evaluations, it may repeat the same Trial parameters more than once.",
          "value": "HIGH"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpec": {
      "description": "Represents a single parameter to optimize.",
      "properties": {
        "categoricalValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecCategoricalValueSpec",
          "description": "The value spec for a 'CATEGORICAL' parameter."
        },
        "conditionalParameterSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpec"
          },
          "description": "A conditional parameter node is active if the parameter's value matches the conditional node's parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition."
        },
        "discreteValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecDiscreteValueSpec",
          "description": "The value spec for a 'DISCRETE' parameter."
        },
        "doubleValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecDoubleValueSpec",
          "description": "The value spec for a 'DOUBLE' parameter."
        },
        "integerValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecIntegerValueSpec",
          "description": "The value spec for an 'INTEGER' parameter."
        },
        "parameterId": {
          "type": "string",
          "description": "The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs."
        },
        "scaleType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecScaleType",
          "description": "How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters."
        }
      },
      "type": "object",
      "required": [
        "parameterId"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecCategoricalValueSpec": {
      "description": "Value specification for a parameter in `CATEGORICAL` type.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "A default value for a `CATEGORICAL` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of possible categories."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecCategoricalValueSpecResponse": {
      "description": "Value specification for a parameter in `CATEGORICAL` type.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "A default value for a `CATEGORICAL` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of possible categories."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpec": {
      "description": "Represents a parameter spec with condition from its parent parameter.",
      "properties": {
        "parameterSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpec",
          "description": "The spec for a conditional parameter."
        },
        "parentCategoricalValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecCategoricalValueCondition",
          "description": "The spec for matching values from a parent parameter of `CATEGORICAL` type."
        },
        "parentDiscreteValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecDiscreteValueCondition",
          "description": "The spec for matching values from a parent parameter of `DISCRETE` type."
        },
        "parentIntValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecIntValueCondition",
          "description": "The spec for matching values from a parent parameter of `INTEGER` type."
        }
      },
      "type": "object",
      "required": [
        "parameterSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecCategoricalValueCondition": {
      "description": "Represents the spec to match categorical values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter of 'CATEGORICAL' type. All values must exist in `categorical_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecCategoricalValueConditionResponse": {
      "description": "Represents the spec to match categorical values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter of 'CATEGORICAL' type. All values must exist in `categorical_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecDiscreteValueCondition": {
      "description": "Represents the spec to match discrete values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Matches values of the parent parameter of 'DISCRETE' type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecDiscreteValueConditionResponse": {
      "description": "Represents the spec to match discrete values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Matches values of the parent parameter of 'DISCRETE' type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecIntValueCondition": {
      "description": "Represents the spec to match integer values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter of 'INTEGER' type. All values must lie in `integer_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecIntValueConditionResponse": {
      "description": "Represents the spec to match integer values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter of 'INTEGER' type. All values must lie in `integer_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecResponse": {
      "description": "Represents a parameter spec with condition from its parent parameter.",
      "properties": {
        "parameterSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecResponse",
          "description": "The spec for a conditional parameter."
        },
        "parentCategoricalValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecCategoricalValueConditionResponse",
          "description": "The spec for matching values from a parent parameter of `CATEGORICAL` type."
        },
        "parentDiscreteValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecDiscreteValueConditionResponse",
          "description": "The spec for matching values from a parent parameter of `DISCRETE` type."
        },
        "parentIntValues": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecIntValueConditionResponse",
          "description": "The spec for matching values from a parent parameter of `INTEGER` type."
        }
      },
      "type": "object",
      "required": [
        "parameterSpec",
        "parentCategoricalValues",
        "parentDiscreteValues",
        "parentIntValues"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecDiscreteValueSpec": {
      "description": "Value specification for a parameter in `DISCRETE` type.",
      "properties": {
        "defaultValue": {
          "type": "number",
          "description": "A default value for a `DISCRETE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. It automatically rounds to the nearest feasible discrete point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "A list of possible values. The list should be in increasing order and at least 1e-10 apart. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecDiscreteValueSpecResponse": {
      "description": "Value specification for a parameter in `DISCRETE` type.",
      "properties": {
        "defaultValue": {
          "type": "number",
          "description": "A default value for a `DISCRETE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. It automatically rounds to the nearest feasible discrete point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "A list of possible values. The list should be in increasing order and at least 1e-10 apart. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "values"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecDoubleValueSpec": {
      "description": "Value specification for a parameter in `DOUBLE` type.",
      "properties": {
        "defaultValue": {
          "type": "number",
          "description": "A default value for a `DOUBLE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "maxValue": {
          "type": "number",
          "description": "Inclusive maximum value of the parameter."
        },
        "minValue": {
          "type": "number",
          "description": "Inclusive minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecDoubleValueSpecResponse": {
      "description": "Value specification for a parameter in `DOUBLE` type.",
      "properties": {
        "defaultValue": {
          "type": "number",
          "description": "A default value for a `DOUBLE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "maxValue": {
          "type": "number",
          "description": "Inclusive maximum value of the parameter."
        },
        "minValue": {
          "type": "number",
          "description": "Inclusive minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "maxValue",
        "minValue"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecIntegerValueSpec": {
      "description": "Value specification for a parameter in `INTEGER` type.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "A default value for an `INTEGER` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "maxValue": {
          "type": "string",
          "description": "Inclusive maximum value of the parameter."
        },
        "minValue": {
          "type": "string",
          "description": "Inclusive minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecIntegerValueSpecResponse": {
      "description": "Value specification for a parameter in `INTEGER` type.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "A default value for an `INTEGER` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "maxValue": {
          "type": "string",
          "description": "Inclusive maximum value of the parameter."
        },
        "minValue": {
          "type": "string",
          "description": "Inclusive minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "maxValue",
        "minValue"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecResponse": {
      "description": "Represents a single parameter to optimize.",
      "properties": {
        "categoricalValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecCategoricalValueSpecResponse",
          "description": "The value spec for a 'CATEGORICAL' parameter."
        },
        "conditionalParameterSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecConditionalParameterSpecResponse"
          },
          "description": "A conditional parameter node is active if the parameter's value matches the conditional node's parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition."
        },
        "discreteValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecDiscreteValueSpecResponse",
          "description": "The value spec for a 'DISCRETE' parameter."
        },
        "doubleValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecDoubleValueSpecResponse",
          "description": "The value spec for a 'DOUBLE' parameter."
        },
        "integerValueSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecIntegerValueSpecResponse",
          "description": "The value spec for an 'INTEGER' parameter."
        },
        "parameterId": {
          "type": "string",
          "description": "The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs."
        },
        "scaleType": {
          "type": "string",
          "description": "How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters."
        }
      },
      "type": "object",
      "required": [
        "categoricalValueSpec",
        "conditionalParameterSpecs",
        "discreteValueSpec",
        "doubleValueSpec",
        "integerValueSpec",
        "parameterId",
        "scaleType"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecScaleType": {
      "description": "How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters.",
      "type": "string",
      "enum": [
        {
          "name": "ScaleTypeUnspecified",
          "description": "By default, no scaling is applied.",
          "value": "SCALE_TYPE_UNSPECIFIED"
        },
        {
          "name": "UnitLinearScale",
          "description": "Scales the feasible space to (0, 1) linearly.",
          "value": "UNIT_LINEAR_SCALE"
        },
        {
          "name": "UnitLogScale",
          "description": "Scales the feasible space logarithmically to (0, 1). The entire feasible space must be strictly positive.",
          "value": "UNIT_LOG_SCALE"
        },
        {
          "name": "UnitReverseLogScale",
          "description": "Scales the feasible space \"reverse\" logarithmically to (0, 1). The result is that values close to the top of the feasible space are spread out more than points near the bottom. The entire feasible space must be strictly positive.",
          "value": "UNIT_REVERSE_LOG_SCALE"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecResponse": {
      "description": "Represents specification of a Study.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The search algorithm specified for the Study."
        },
        "convexAutomatedStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecConvexAutomatedStoppingSpecResponse",
          "description": "The automated early stopping spec using convex stopping rule."
        },
        "convexStopConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecConvexStopConfigResponse",
          "description": "Deprecated. The automated early stopping using convex stopping rule.",
          "deprecationMessage": "Deprecated. The automated early stopping using convex stopping rule."
        },
        "decayCurveStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecDecayCurveAutomatedStoppingSpecResponse",
          "description": "The automated early stopping spec using decay curve rule."
        },
        "measurementSelectionType": {
          "type": "string",
          "description": "Describe which measurement selection type will be used"
        },
        "medianAutomatedStoppingSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecMedianAutomatedStoppingSpecResponse",
          "description": "The automated early stopping spec using median rule."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecMetricSpecResponse"
          },
          "description": "Metric specs for the Study."
        },
        "observationNoise": {
          "type": "string",
          "description": "The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecParameterSpecResponse"
          },
          "description": "The set of parameters to tune."
        },
        "studyStoppingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecStudyStoppingConfigResponse",
          "description": "Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition."
        },
        "transferLearningConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecTransferLearningConfigResponse",
          "description": "The configuration info/options for transfer learning. Currently supported for Vertex AI Vizier service, not HyperParameterTuningJob"
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "convexAutomatedStoppingSpec",
        "convexStopConfig",
        "decayCurveStoppingSpec",
        "measurementSelectionType",
        "medianAutomatedStoppingSpec",
        "metrics",
        "observationNoise",
        "parameters",
        "studyStoppingConfig",
        "transferLearningConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecStudyStoppingConfig": {
      "description": "The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection.",
      "properties": {
        "maxDurationNoProgress": {
          "type": "string",
          "description": "If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies."
        },
        "maxNumTrials": {
          "type": "integer",
          "description": "If there are more than this many trials, stop the study."
        },
        "maxNumTrialsNoProgress": {
          "type": "integer",
          "description": "If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies."
        },
        "maximumRuntimeConstraint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudyTimeConstraint",
          "description": "If the specified time or duration has passed, stop the study."
        },
        "minNumTrials": {
          "type": "integer",
          "description": "If there are fewer than this many COMPLETED trials, do not stop the study."
        },
        "minimumRuntimeConstraint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudyTimeConstraint",
          "description": "Each \"stopping rule\" in this proto specifies an \"if\" condition. Before Vizier would generate a new suggestion, it first checks each specified stopping rule, from top to bottom in this list. Note that the first few rules (e.g. minimum_runtime_constraint, min_num_trials) will prevent other stopping rules from being evaluated until they are met. For example, setting `min_num_trials=5` and `always_stop_after= 1 hour` means that the Study will ONLY stop after it has 5 COMPLETED trials, even if more than an hour has passed since its creation. It follows the first applicable rule (whose \"if\" condition is satisfied) to make a stopping decision. If none of the specified rules are applicable, then Vizier decides that the study should not stop. If Vizier decides that the study should stop, the study enters STOPPING state (or STOPPING_ASAP if should_stop_asap = true). IMPORTANT: The automatic study state transition happens precisely as described above; that is, deleting trials or updating StudyConfig NEVER automatically moves the study state back to ACTIVE. If you want to _resume_ a Study that was stopped, 1) change the stopping conditions if necessary, 2) activate the study, and then 3) ask for suggestions. If the specified time or duration has not passed, do not stop the study."
        },
        "shouldStopAsap": {
          "type": "boolean",
          "description": "If true, a Study enters STOPPING_ASAP whenever it would normally enters STOPPING state. The bottom line is: set to true if you want to interrupt on-going evaluations of Trials as soon as the study stopping condition is met. (Please see Study.State documentation for the source of truth)."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecStudyStoppingConfigResponse": {
      "description": "The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection.",
      "properties": {
        "maxDurationNoProgress": {
          "type": "string",
          "description": "If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies."
        },
        "maxNumTrials": {
          "type": "integer",
          "description": "If there are more than this many trials, stop the study."
        },
        "maxNumTrialsNoProgress": {
          "type": "integer",
          "description": "If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies."
        },
        "maximumRuntimeConstraint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudyTimeConstraintResponse",
          "description": "If the specified time or duration has passed, stop the study."
        },
        "minNumTrials": {
          "type": "integer",
          "description": "If there are fewer than this many COMPLETED trials, do not stop the study."
        },
        "minimumRuntimeConstraint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudyTimeConstraintResponse",
          "description": "Each \"stopping rule\" in this proto specifies an \"if\" condition. Before Vizier would generate a new suggestion, it first checks each specified stopping rule, from top to bottom in this list. Note that the first few rules (e.g. minimum_runtime_constraint, min_num_trials) will prevent other stopping rules from being evaluated until they are met. For example, setting `min_num_trials=5` and `always_stop_after= 1 hour` means that the Study will ONLY stop after it has 5 COMPLETED trials, even if more than an hour has passed since its creation. It follows the first applicable rule (whose \"if\" condition is satisfied) to make a stopping decision. If none of the specified rules are applicable, then Vizier decides that the study should not stop. If Vizier decides that the study should stop, the study enters STOPPING state (or STOPPING_ASAP if should_stop_asap = true). IMPORTANT: The automatic study state transition happens precisely as described above; that is, deleting trials or updating StudyConfig NEVER automatically moves the study state back to ACTIVE. If you want to _resume_ a Study that was stopped, 1) change the stopping conditions if necessary, 2) activate the study, and then 3) ask for suggestions. If the specified time or duration has not passed, do not stop the study."
        },
        "shouldStopAsap": {
          "type": "boolean",
          "description": "If true, a Study enters STOPPING_ASAP whenever it would normally enters STOPPING state. The bottom line is: set to true if you want to interrupt on-going evaluations of Trials as soon as the study stopping condition is met. (Please see Study.State documentation for the source of truth)."
        }
      },
      "type": "object",
      "required": [
        "maxDurationNoProgress",
        "maxNumTrials",
        "maxNumTrialsNoProgress",
        "maximumRuntimeConstraint",
        "minNumTrials",
        "minimumRuntimeConstraint",
        "shouldStopAsap"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecTransferLearningConfig": {
      "description": "This contains flag for manually disabling transfer learning for a study. The names of prior studies being used for transfer learning (if any) are also listed here.",
      "properties": {
        "disableTransferLearning": {
          "type": "boolean",
          "description": "Flag to to manually prevent vizier from using transfer learning on a new study. Otherwise, vizier will automatically determine whether or not to use transfer learning."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudySpecTransferLearningConfigResponse": {
      "description": "This contains flag for manually disabling transfer learning for a study. The names of prior studies being used for transfer learning (if any) are also listed here.",
      "properties": {
        "disableTransferLearning": {
          "type": "boolean",
          "description": "Flag to to manually prevent vizier from using transfer learning on a new study. Otherwise, vizier will automatically determine whether or not to use transfer learning."
        },
        "priorStudyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of previously completed studies"
        }
      },
      "type": "object",
      "required": [
        "disableTransferLearning",
        "priorStudyNames"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudyTimeConstraint": {
      "description": "Time-based Constraint for Study",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Compares the wallclock time to this time. Must use UTC timezone."
        },
        "maxDuration": {
          "type": "string",
          "description": "Counts the wallclock time passed since the creation of this Study."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1StudyTimeConstraintResponse": {
      "description": "Time-based Constraint for Study",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Compares the wallclock time to this time. Must use UTC timezone."
        },
        "maxDuration": {
          "type": "string",
          "description": "Counts the wallclock time passed since the creation of this Study."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "maxDuration"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1TensorboardTimeSeriesMetadataResponse": {
      "description": "Describes metadata for a TensorboardTimeSeries.",
      "properties": {
        "maxBlobSequenceLength": {
          "type": "string",
          "description": "The largest blob sequence length (number of blobs) of all data points in this time series, if its ValueType is BLOB_SEQUENCE."
        },
        "maxStep": {
          "type": "string",
          "description": "Max step index of all data points within a TensorboardTimeSeries."
        },
        "maxWallTime": {
          "type": "string",
          "description": "Max wall clock timestamp of all data points within a TensorboardTimeSeries."
        }
      },
      "type": "object",
      "required": [
        "maxBlobSequenceLength",
        "maxStep",
        "maxWallTime"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ThresholdConfig": {
      "description": "The config for feature monitoring threshold.",
      "properties": {
        "value": {
          "type": "number",
          "description": "Specify a threshold value that can trigger the alert. If this threshold config is for feature distribution distance: 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence. Each feature must have a non-zero threshold if they need to be monitored. Otherwise no alert will be triggered for that feature."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1ThresholdConfigResponse": {
      "description": "The config for feature monitoring threshold.",
      "properties": {
        "value": {
          "type": "number",
          "description": "Specify a threshold value that can trigger the alert. If this threshold config is for feature distribution distance: 1. For categorical feature, the distribution distance is calculated by L-inifinity norm. 2. For numerical feature, the distribution distance is calculated by Jensen–Shannon divergence. Each feature must have a non-zero threshold if they need to be monitored. Otherwise no alert will be triggered for that feature."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1TimestampSplit": {
      "description": "Assigns input data to training, validation, and test sets based on a provided timestamps. The youngest data pieces are assigned to training set, next to validation set, and the oldest to the test set. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The values of the key (the values in the column) must be in RFC 3339 `date-time` format, where `time-offset` = `\"Z\"` (e.g. 1985-04-12T23:20:50.52Z). If for a piece of data the key is not present or has an invalid value, that piece is ignored by the pipeline."
        },
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1TimestampSplitResponse": {
      "description": "Assigns input data to training, validation, and test sets based on a provided timestamps. The youngest data pieces are assigned to training set, next to validation set, and the oldest to the test set. Supported only for tabular Datasets.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key is a name of one of the Dataset's data columns. The values of the key (the values in the column) must be in RFC 3339 `date-time` format, where `time-offset` = `\"Z\"` (e.g. 1985-04-12T23:20:50.52Z). If for a piece of data the key is not present or has an invalid value, that piece is ignored by the pipeline."
        },
        "testFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to evaluate the Model."
        },
        "trainingFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to train the Model."
        },
        "validationFraction": {
          "type": "number",
          "description": "The fraction of the input data that is to be used to validate the Model."
        }
      },
      "type": "object",
      "required": [
        "key",
        "testFraction",
        "trainingFraction",
        "validationFraction"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1TrainingConfig": {
      "description": "CMLE training config. For every active learning labeling iteration, system will train a machine learning model on CMLE. The trained model will be used by data sampling algorithm to select DataItems.",
      "properties": {
        "timeoutTrainingMilliHours": {
          "type": "string",
          "description": "The timeout hours for the CMLE training job, expressed in milli hours i.e. 1,000 value in this field means 1 hour."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1TrainingConfigResponse": {
      "description": "CMLE training config. For every active learning labeling iteration, system will train a machine learning model on CMLE. The trained model will be used by data sampling algorithm to select DataItems.",
      "properties": {
        "timeoutTrainingMilliHours": {
          "type": "string",
          "description": "The timeout hours for the CMLE training job, expressed in milli hours i.e. 1,000 value in this field means 1 hour."
        }
      },
      "type": "object",
      "required": [
        "timeoutTrainingMilliHours"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1TrialParameterResponse": {
      "description": "A message representing a parameter to be tuned.",
      "properties": {
        "parameterId": {
          "type": "string",
          "description": "The ID of the parameter. The parameter should be defined in StudySpec's Parameters."
        },
        "value": {
          "$ref": "pulumi.json#/Any",
          "description": "The value of the parameter. `number_value` will be set if a parameter defined in StudySpec is in type 'INTEGER', 'DOUBLE' or 'DISCRETE'. `string_value` will be set if a parameter defined in StudySpec is in type 'CATEGORICAL'."
        }
      },
      "type": "object",
      "required": [
        "parameterId",
        "value"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1TrialResponse": {
      "description": "A message representing a Trial. A Trial contains a unique set of Parameters that has been or will be evaluated, along with the objective metrics got by running the Trial.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial."
        },
        "customJob": {
          "type": "string",
          "description": "The CustomJob name linked to the Trial. It's set for a HyperparameterTuningJob's Trial."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the Trial's status changed to `SUCCEEDED` or `INFEASIBLE`."
        },
        "finalMeasurement": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MeasurementResponse",
          "description": "The final measurement containing the objective value."
        },
        "infeasibleReason": {
          "type": "string",
          "description": "A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`."
        },
        "measurements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MeasurementResponse"
          },
          "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Trial assigned by the service."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TrialParameterResponse"
          },
          "description": "The parameters of the Trial."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the Trial was started."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the Trial."
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job's trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "customJob",
        "endTime",
        "finalMeasurement",
        "infeasibleReason",
        "measurements",
        "name",
        "parameters",
        "startTime",
        "state",
        "webAccessUris"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1UnmanagedContainerModel": {
      "description": "Contains model information necessary to perform batch prediction without requiring a full model import.",
      "properties": {
        "artifactUri": {
          "type": "string",
          "description": "The path to the directory containing the Model artifact and any of its supporting files."
        },
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelContainerSpec",
          "description": "Input only. The specification of the container that is to be used when deploying this Model."
        },
        "predictSchemata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredictSchemata",
          "description": "Contains the schemata used in Model's predictions and explanations"
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1UnmanagedContainerModelResponse": {
      "description": "Contains model information necessary to perform batch prediction without requiring a full model import.",
      "properties": {
        "artifactUri": {
          "type": "string",
          "description": "The path to the directory containing the Model artifact and any of its supporting files."
        },
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelContainerSpecResponse",
          "description": "Input only. The specification of the container that is to be used when deploying this Model."
        },
        "predictSchemata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredictSchemataResponse",
          "description": "Contains the schemata used in Model's predictions and explanations"
        }
      },
      "type": "object",
      "required": [
        "artifactUri",
        "containerSpec",
        "predictSchemata"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1WorkerPoolSpec": {
      "description": "Represents the spec of a worker pool in a job.",
      "properties": {
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ContainerSpec",
          "description": "The custom container task."
        },
        "diskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DiskSpec",
          "description": "Disk spec."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpec",
          "description": "Optional. Immutable. The specification of a single machine."
        },
        "nfsMounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NfsMount"
          },
          "description": "Optional. List of NFS mount spec."
        },
        "pythonPackageSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PythonPackageSpec",
          "description": "The Python packaged task."
        },
        "replicaCount": {
          "type": "string",
          "description": "Optional. The number of worker replicas to use for this worker pool."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1WorkerPoolSpecResponse": {
      "description": "Represents the spec of a worker pool in a job.",
      "properties": {
        "containerSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ContainerSpecResponse",
          "description": "The custom container task."
        },
        "diskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DiskSpecResponse",
          "description": "Disk spec."
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpecResponse",
          "description": "Optional. Immutable. The specification of a single machine."
        },
        "nfsMounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NfsMountResponse"
          },
          "description": "Optional. List of NFS mount spec."
        },
        "pythonPackageSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PythonPackageSpecResponse",
          "description": "The Python packaged task."
        },
        "replicaCount": {
          "type": "string",
          "description": "Optional. The number of worker replicas to use for this worker pool."
        }
      },
      "type": "object",
      "required": [
        "containerSpec",
        "diskSpec",
        "machineSpec",
        "nfsMounts",
        "pythonPackageSpec",
        "replicaCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1XraiAttribution": {
      "description": "An explanation method that redistributes Integrated Gradients attributions to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Supported only by image Models.",
      "properties": {
        "blurBaselineConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BlurBaselineConfig",
          "description": "Config for XRAI with blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383"
        },
        "smoothGradConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SmoothGradConfig",
          "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf"
        },
        "stepCount": {
          "type": "integer",
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range. Valid range of its value is [1, 100], inclusively."
        }
      },
      "type": "object",
      "required": [
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleCloudAiplatformV1beta1XraiAttributionResponse": {
      "description": "An explanation method that redistributes Integrated Gradients attributions to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Supported only by image Models.",
      "properties": {
        "blurBaselineConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BlurBaselineConfigResponse",
          "description": "Config for XRAI with blur baseline. When enabled, a linear path from the maximally blurred image to the input image is created. Using a blurred baseline instead of zero (black image) is motivated by the BlurIG approach explained here: https://arxiv.org/abs/2004.03383"
        },
        "smoothGradConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SmoothGradConfigResponse",
          "description": "Config for SmoothGrad approximation of gradients. When enabled, the gradients are approximated by averaging the gradients from noisy samples in the vicinity of the inputs. Adding noise can help improve the computed gradients. Refer to this paper for more details: https://arxiv.org/pdf/1706.03825.pdf"
        },
        "stepCount": {
          "type": "integer",
          "description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range. Valid range of its value is [1, 100], inclusively."
        }
      },
      "type": "object",
      "required": [
        "blurBaselineConfig",
        "smoothGradConfig",
        "stepCount"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:aiplatform/v1beta1:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:aiplatform/v1beta1:GoogleTypeMoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:aiplatform/v1beta1:IndexIndexUpdateMethod": {
      "description": "Immutable. The update method to use with this Index. If not set, BATCH_UPDATE will be used by default.",
      "type": "string",
      "enum": [
        {
          "name": "IndexUpdateMethodUnspecified",
          "description": "Should not be used.",
          "value": "INDEX_UPDATE_METHOD_UNSPECIFIED"
        },
        {
          "name": "BatchUpdate",
          "description": "BatchUpdate: user can call UpdateIndex with files on Cloud Storage of Datapoints to update.",
          "value": "BATCH_UPDATE"
        },
        {
          "name": "StreamUpdate",
          "description": "StreamUpdate: user can call UpsertDatapoints/DeleteDatapoints to update the Index and the updates will be applied in corresponding DeployedIndexes in nearly real-time.",
          "value": "STREAM_UPDATE"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:MetadataSchemaSchemaType": {
      "description": "The type of the MetadataSchema. This is a property that identifies which metadata types will use the MetadataSchema.",
      "type": "string",
      "enum": [
        {
          "name": "MetadataSchemaTypeUnspecified",
          "description": "Unspecified type for the MetadataSchema.",
          "value": "METADATA_SCHEMA_TYPE_UNSPECIFIED"
        },
        {
          "name": "ArtifactType",
          "description": "A type indicating that the MetadataSchema will be used by Artifacts.",
          "value": "ARTIFACT_TYPE"
        },
        {
          "name": "ExecutionType",
          "description": "A typee indicating that the MetadataSchema will be used by Executions.",
          "value": "EXECUTION_TYPE"
        },
        {
          "name": "ContextType",
          "description": "A state indicating that the MetadataSchema will be used by Contexts.",
          "value": "CONTEXT_TYPE"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:NotebookRuntimeTemplateNotebookRuntimeType": {
      "description": "Optional. Immutable. The type of the notebook runtime template.",
      "type": "string",
      "enum": [
        {
          "name": "NotebookRuntimeTypeUnspecified",
          "description": "Unspecified notebook runtime type, NotebookRuntimeType will default to USER_DEFINED.",
          "value": "NOTEBOOK_RUNTIME_TYPE_UNSPECIFIED"
        },
        {
          "name": "UserDefined",
          "description": "runtime or template with coustomized configurations from user.",
          "value": "USER_DEFINED"
        },
        {
          "name": "OneClick",
          "description": "runtime or template with system defined configurations.",
          "value": "ONE_CLICK"
        }
      ]
    },
    "google-native:aiplatform/v1beta1:TimeSeriesValueType": {
      "description": "Required. Immutable. Type of TensorboardTimeSeries value.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "The value type is unspecified.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Scalar",
          "description": "Used for TensorboardTimeSeries that is a list of scalars. E.g. accuracy of a model over epochs/time.",
          "value": "SCALAR"
        },
        {
          "name": "Tensor",
          "description": "Used for TensorboardTimeSeries that is a list of tensors. E.g. histograms of weights of layer in a model over epoch/time.",
          "value": "TENSOR"
        },
        {
          "name": "BlobSequence",
          "description": "Used for TensorboardTimeSeries that is a list of blob sequences. E.g. set of sample images with labels over epochs/time.",
          "value": "BLOB_SEQUENCE"
        }
      ]
    },
    "google-native:alloydb/v1:AutomatedBackupPolicy": {
      "description": "Message describing the user-specified automated backup policy. All fields in the automated backup policy are optional. Defaults for each field are provided if they are not set.",
      "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. The backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it defaults to 1 hour."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether automated automated backups are enabled. If not set, defaults to true."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to backups created using this configuration."
        },
        "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. If empty, defaults to the region of the cluster."
        },
        "quantityBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1:QuantityBasedRetention",
          "description": "Quantity-based Backup retention policy to retain recent backups."
        },
        "timeBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1:TimeBasedRetention",
          "description": "Time-based Backup retention policy."
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:alloydb%2Fv1:WeeklySchedule",
          "description": "Weekly schedule for the Backup."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:AutomatedBackupPolicyResponse": {
      "description": "Message describing the user-specified automated backup policy. All fields in the automated backup policy are optional. Defaults for each field are provided if they are not set.",
      "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. The backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it defaults to 1 hour."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether automated automated backups are enabled. If not set, defaults to true."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to backups created using this configuration."
        },
        "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. If empty, defaults to the region of the cluster."
        },
        "quantityBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1:QuantityBasedRetentionResponse",
          "description": "Quantity-based Backup retention policy to retain recent backups."
        },
        "timeBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1:TimeBasedRetentionResponse",
          "description": "Time-based Backup retention policy."
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:alloydb%2Fv1:WeeklyScheduleResponse",
          "description": "Weekly schedule for the Backup."
        }
      },
      "type": "object",
      "required": [
        "backupWindow",
        "enabled",
        "encryptionConfig",
        "labels",
        "location",
        "quantityBasedRetention",
        "timeBasedRetention",
        "weeklySchedule"
      ]
    },
    "google-native:alloydb/v1:BackupSourceResponse": {
      "description": "Message describing a BackupSource.",
      "properties": {
        "backupName": {
          "type": "string",
          "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id}"
        },
        "backupUid": {
          "type": "string",
          "description": "The system-generated UID of the backup which was used to create this resource. The UID is generated when the backup is created, and it is retained until the backup is deleted."
        }
      },
      "type": "object",
      "required": [
        "backupName",
        "backupUid"
      ]
    },
    "google-native:alloydb/v1:BackupType": {
      "description": "The backup type, which suggests the trigger for the backup.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Backup Type is unknown.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "OnDemand",
          "description": "ON_DEMAND backups that were triggered by the customer (e.g., not AUTOMATED).",
          "value": "ON_DEMAND"
        },
        {
          "name": "Automated",
          "description": "AUTOMATED backups triggered by the automated backups scheduler pursuant to an automated backup policy.",
          "value": "AUTOMATED"
        },
        {
          "name": "Continuous",
          "description": "CONTINUOUS backups triggered by the automated backups scheduler due to a continuous backup policy.",
          "value": "CONTINUOUS"
        }
      ]
    },
    "google-native:alloydb/v1:ClientConnectionConfig": {
      "description": "Client connection configuration",
      "properties": {
        "requireConnectors": {
          "type": "boolean",
          "description": "Optional. Configuration to enforce connectors only (ex: AuthProxy) connections to the database."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:SslConfig",
          "description": "Optional. SSL config option for this instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:ClientConnectionConfigResponse": {
      "description": "Client connection configuration",
      "properties": {
        "requireConnectors": {
          "type": "boolean",
          "description": "Optional. Configuration to enforce connectors only (ex: AuthProxy) connections to the database."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:SslConfigResponse",
          "description": "Optional. SSL config option for this instance."
        }
      },
      "type": "object",
      "required": [
        "requireConnectors",
        "sslConfig"
      ]
    },
    "google-native:alloydb/v1:ClusterDatabaseVersion": {
      "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseVersionUnspecified",
          "description": "This is an unknown database version.",
          "value": "DATABASE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Postgres13",
          "description": "DEPRECATED - The database version is Postgres 13.",
          "value": "POSTGRES_13"
        },
        {
          "name": "Postgres14",
          "description": "The database version is Postgres 14.",
          "value": "POSTGRES_14"
        },
        {
          "name": "Postgres15",
          "description": "The database version is Postgres 15.",
          "value": "POSTGRES_15"
        }
      ]
    },
    "google-native:alloydb/v1:ContinuousBackupConfig": {
      "description": "ContinuousBackupConfig describes the continuous backups recovery configurations of a cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether ContinuousBackup is enabled."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfig",
          "description": "The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "recoveryWindowDays": {
          "type": "integer",
          "description": "The number 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. If not set, defaults to 14 days."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:ContinuousBackupConfigResponse": {
      "description": "ContinuousBackupConfig describes the continuous backups recovery configurations of a cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether ContinuousBackup is enabled."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfigResponse",
          "description": "The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "recoveryWindowDays": {
          "type": "integer",
          "description": "The number 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. If not set, defaults to 14 days."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "encryptionConfig",
        "recoveryWindowDays"
      ]
    },
    "google-native:alloydb/v1:ContinuousBackupInfoResponse": {
      "description": "ContinuousBackupInfo describes the continuous backup properties of a cluster.",
      "properties": {
        "earliestRestorableTime": {
          "type": "string",
          "description": "The earliest restorable time that can be restored to. Output only field."
        },
        "enabledTime": {
          "type": "string",
          "description": "When ContinuousBackup was most recently enabled. Set to null if ContinuousBackup is not enabled."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionInfoResponse",
          "description": "The encryption information for the WALs and backups required for ContinuousBackup."
        },
        "schedule": {
          "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."
        }
      },
      "type": "object",
      "required": [
        "earliestRestorableTime",
        "enabledTime",
        "encryptionInfo",
        "schedule"
      ]
    },
    "google-native:alloydb/v1:EncryptionConfig": {
      "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).",
      "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]"
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:EncryptionConfigResponse": {
      "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).",
      "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]"
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:alloydb/v1:EncryptionInfoResponse": {
      "description": "EncryptionInfo describes the encryption information of a cluster or a backup.",
      "properties": {
        "encryptionType": {
          "type": "string",
          "description": "Type of encryption."
        },
        "kmsKeyVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud KMS key versions that are being used to protect the database or the backup."
        }
      },
      "type": "object",
      "required": [
        "encryptionType",
        "kmsKeyVersions"
      ]
    },
    "google-native:alloydb/v1:GoogleTypeTimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:GoogleTypeTimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:alloydb/v1:InstanceAvailabilityType": {
      "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones).",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityTypeUnspecified",
          "description": "This is an unknown Availability type.",
          "value": "AVAILABILITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Zonal",
          "description": "Zonal available instance.",
          "value": "ZONAL"
        },
        {
          "name": "Regional",
          "description": "Regional (or Highly) available instance.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:alloydb/v1:InstanceInstanceType": {
      "description": "Required. The type of the instance. Specified at creation time.",
      "type": "string",
      "enum": [
        {
          "name": "InstanceTypeUnspecified",
          "description": "The type of the instance is unknown.",
          "value": "INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "PRIMARY instances support read and write operations.",
          "value": "PRIMARY"
        },
        {
          "name": "ReadPool",
          "description": "READ POOL instances support read operations only. Each read pool instance consists of one or more homogeneous nodes. * Read pool of size 1 can only have zonal availability. * Read pools with node count of 2 or more can have regional availability (nodes are present in 2 or more zones in a region).",
          "value": "READ_POOL"
        },
        {
          "name": "Secondary",
          "description": "SECONDARY instances support read operations only. SECONDARY instance is a cross-region read replica",
          "value": "SECONDARY"
        }
      ]
    },
    "google-native:alloydb/v1:MachineConfig": {
      "description": "MachineConfig describes the configuration of a machine.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "The number of CPU's in the VM instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:MachineConfigResponse": {
      "description": "MachineConfig describes the configuration of a machine.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "The number of CPU's in the VM instance."
        }
      },
      "type": "object",
      "required": [
        "cpuCount"
      ]
    },
    "google-native:alloydb/v1:MigrationSourceResponse": {
      "description": "Subset of the source instance configuration that is available when reading the cluster resource.",
      "properties": {
        "hostPort": {
          "type": "string",
          "description": "The host and port of the on-premises instance in host:port format"
        },
        "referenceId": {
          "type": "string",
          "description": "Place holder for the external source identifier(e.g DMS job name) that created the cluster."
        },
        "sourceType": {
          "type": "string",
          "description": "Type of migration source."
        }
      },
      "type": "object",
      "required": [
        "hostPort",
        "referenceId",
        "sourceType"
      ]
    },
    "google-native:alloydb/v1:NetworkConfig": {
      "description": "Metadata related to network configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "Optional. Name of the allocated IP range for the private IP AlloyDB cluster, for example: \"google-managed-services-default\". If set, the instance IPs for this cluster will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. Field name is intended to be consistent with Cloud SQL."
        },
        "network": {
          "type": "string",
          "description": "Optional. 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. It is specified in the form: \"projects/{project_number}/global/networks/{network_id}\". This is required to create a cluster."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:NetworkConfigResponse": {
      "description": "Metadata related to network configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "Optional. Name of the allocated IP range for the private IP AlloyDB cluster, for example: \"google-managed-services-default\". If set, the instance IPs for this cluster will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. Field name is intended to be consistent with Cloud SQL."
        },
        "network": {
          "type": "string",
          "description": "Optional. 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. It is specified in the form: \"projects/{project_number}/global/networks/{network_id}\". This is required to create a cluster."
        }
      },
      "type": "object",
      "required": [
        "allocatedIpRange",
        "network"
      ]
    },
    "google-native:alloydb/v1:NodeResponse": {
      "description": "Details of a single node in the instance. Nodes in an AlloyDB instance are ephemereal, they can change during update, failover, autohealing and resize operations.",
      "properties": {
        "ip": {
          "type": "string",
          "description": "The private IP address of the VM e.g. \"10.57.0.34\"."
        },
        "state": {
          "type": "string",
          "description": "Determined by state of the compute VM and postgres-service health. Compute VM state can have values listed in https://cloud.google.com/compute/docs/instances/instance-life-cycle and postgres-service health can have values: HEALTHY and UNHEALTHY."
        },
        "zone": {
          "type": "string",
          "description": "The Compute Engine zone of the VM e.g. \"us-central1-b\"."
        }
      },
      "type": "object",
      "required": [
        "ip",
        "state",
        "zone"
      ]
    },
    "google-native:alloydb/v1:PrimaryConfigResponse": {
      "description": "Configuration for the primary cluster. It has the list of clusters that are replicating from this cluster. This should be set if and only if the cluster is of type PRIMARY.",
      "properties": {
        "secondaryClusterNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the clusters that are replicating from this cluster."
        }
      },
      "type": "object",
      "required": [
        "secondaryClusterNames"
      ]
    },
    "google-native:alloydb/v1:QuantityBasedExpiryResponse": {
      "description": "A backup's position in a quantity-based retention queue, of backups with the same source cluster and type, with length, retention, specified by the backup's retention policy. Once the position is greater than the retention, the backup is eligible to be garbage collected. Example: 5 backups from the same source cluster and type with a quantity-based retention of 3 and denoted by backup_id (position, retention). Safe: backup_5 (1, 3), backup_4, (2, 3), backup_3 (3, 3). Awaiting garbage collection: backup_2 (4, 3), backup_1 (5, 3)",
      "properties": {
        "retentionCount": {
          "type": "integer",
          "description": "The backup's position among its backups with the same source cluster and type, by descending chronological order create time(i.e. newest first)."
        },
        "totalRetentionCount": {
          "type": "integer",
          "description": "The length of the quantity-based queue, specified by the backup's retention policy."
        }
      },
      "type": "object",
      "required": [
        "retentionCount",
        "totalRetentionCount"
      ]
    },
    "google-native:alloydb/v1:QuantityBasedRetention": {
      "description": "A quantity based policy specifies that a certain number of the most recent successful backups should be retained.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The number of backups to retain."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:QuantityBasedRetentionResponse": {
      "description": "A quantity based policy specifies that a certain number of the most recent successful backups should be retained.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The number of backups to retain."
        }
      },
      "type": "object",
      "required": [
        "count"
      ]
    },
    "google-native:alloydb/v1:QueryInsightsInstanceConfig": {
      "description": "QueryInsights Instance specific configuration.",
      "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."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Record application tags for an instance. This flag is turned \"on\" by default."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:QueryInsightsInstanceConfigResponse": {
      "description": "QueryInsights Instance specific configuration.",
      "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."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Record application tags for an instance. This flag is turned \"on\" by default."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default."
        }
      },
      "type": "object",
      "required": [
        "queryPlansPerMinute",
        "queryStringLength",
        "recordApplicationTags",
        "recordClientAddress"
      ]
    },
    "google-native:alloydb/v1:ReadPoolConfig": {
      "description": "Configuration for a read pool instance.",
      "properties": {
        "nodeCount": {
          "type": "integer",
          "description": "Read capacity, i.e. number of nodes in a read pool instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:ReadPoolConfigResponse": {
      "description": "Configuration for a read pool instance.",
      "properties": {
        "nodeCount": {
          "type": "integer",
          "description": "Read capacity, i.e. number of nodes in a read pool instance."
        }
      },
      "type": "object",
      "required": [
        "nodeCount"
      ]
    },
    "google-native:alloydb/v1:SecondaryConfig": {
      "description": "Configuration information for the secondary cluster. This should be set if and only if the cluster is of type SECONDARY.",
      "properties": {
        "primaryClusterName": {
          "type": "string",
          "description": "The name of the primary cluster name with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:SecondaryConfigResponse": {
      "description": "Configuration information for the secondary cluster. This should be set if and only if the cluster is of type SECONDARY.",
      "properties": {
        "primaryClusterName": {
          "type": "string",
          "description": "The name of the primary cluster name with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        }
      },
      "type": "object",
      "required": [
        "primaryClusterName"
      ]
    },
    "google-native:alloydb/v1:SslConfig": {
      "description": "SSL configuration.",
      "properties": {
        "caSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1:SslConfigCaSource",
          "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value."
        },
        "sslMode": {
          "$ref": "#/types/google-native:alloydb%2Fv1:SslConfigSslMode",
          "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:SslConfigCaSource": {
      "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value.",
      "type": "string",
      "enum": [
        {
          "name": "CaSourceUnspecified",
          "description": "Certificate Authority (CA) source not specified. Defaults to CA_SOURCE_MANAGED.",
          "value": "CA_SOURCE_UNSPECIFIED"
        },
        {
          "name": "CaSourceManaged",
          "description": "Certificate Authority (CA) managed by the AlloyDB Cluster.",
          "value": "CA_SOURCE_MANAGED"
        }
      ]
    },
    "google-native:alloydb/v1:SslConfigResponse": {
      "description": "SSL configuration.",
      "properties": {
        "caSource": {
          "type": "string",
          "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value."
        },
        "sslMode": {
          "type": "string",
          "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior."
        }
      },
      "type": "object",
      "required": [
        "caSource",
        "sslMode"
      ]
    },
    "google-native:alloydb/v1:SslConfigSslMode": {
      "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior.",
      "type": "string",
      "enum": [
        {
          "name": "SslModeUnspecified",
          "description": "SSL mode not specified. Defaults to ENCRYPTED_ONLY.",
          "value": "SSL_MODE_UNSPECIFIED"
        },
        {
          "name": "SslModeAllow",
          "description": "SSL connections are optional. CA verification not enforced.",
          "value": "SSL_MODE_ALLOW"
        },
        {
          "name": "SslModeRequire",
          "description": "SSL connections are required. CA verification not enforced. Clients may use locally self-signed certificates (default psql client behavior).",
          "value": "SSL_MODE_REQUIRE"
        },
        {
          "name": "SslModeVerifyCa",
          "description": "SSL connections are required. CA verification enforced. Clients must have certificates signed by a Cluster CA, e.g. via GenerateClientCertificate.",
          "value": "SSL_MODE_VERIFY_CA"
        },
        {
          "name": "AllowUnencryptedAndEncrypted",
          "description": "SSL connections are optional. CA verification not enforced.",
          "value": "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
        },
        {
          "name": "EncryptedOnly",
          "description": "SSL connections are required. CA verification not enforced.",
          "value": "ENCRYPTED_ONLY"
        }
      ]
    },
    "google-native:alloydb/v1:TimeBasedRetention": {
      "description": "A time based retention policy specifies that all backups within a certain time period should be retained.",
      "properties": {
        "retentionPeriod": {
          "type": "string",
          "description": "The retention period."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:TimeBasedRetentionResponse": {
      "description": "A time based retention policy specifies that all backups within a certain time period should be retained.",
      "properties": {
        "retentionPeriod": {
          "type": "string",
          "description": "The retention period."
        }
      },
      "type": "object",
      "required": [
        "retentionPeriod"
      ]
    },
    "google-native:alloydb/v1:UserPassword": {
      "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The initial password for the user."
        },
        "user": {
          "type": "string",
          "description": "The database username."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:UserPasswordResponse": {
      "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The initial password for the user."
        },
        "user": {
          "type": "string",
          "description": "The database username."
        }
      },
      "type": "object",
      "required": [
        "password",
        "user"
      ]
    },
    "google-native:alloydb/v1:UserUserType": {
      "description": "Optional. Type of this user.",
      "type": "string",
      "enum": [
        {
          "name": "UserTypeUnspecified",
          "description": "Unspecified user type.",
          "value": "USER_TYPE_UNSPECIFIED"
        },
        {
          "name": "AlloydbBuiltIn",
          "description": "The default user type that authenticates via password-based authentication.",
          "value": "ALLOYDB_BUILT_IN"
        },
        {
          "name": "AlloydbIamUser",
          "description": "Database user that can authenticate via IAM-Based authentication.",
          "value": "ALLOYDB_IAM_USER"
        }
      ]
    },
    "google-native:alloydb/v1:WeeklySchedule": {
      "description": "A weekly schedule starts a backup at prescribed start times within a day, for the specified days of the week. The weekly schedule message is flexible and can be used to create many types of schedules. For example, to have a daily backup that starts at 22:00, configure the `start_times` field to have one element \"22:00\" and the `days_of_week` field to have all seven days of the week.",
      "properties": {
        "daysOfWeek": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1:WeeklyScheduleDaysOfWeekItem"
          },
          "description": "The days of the week to perform a backup. If this field is left empty, the default of every day of the week is used."
        },
        "startTimes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1:GoogleTypeTimeOfDay"
          },
          "description": "The times during the day to start a backup. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00). If no start times are provided, a single fixed start time is chosen arbitrarily."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1:WeeklyScheduleDaysOfWeekItem": {
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:alloydb/v1:WeeklyScheduleResponse": {
      "description": "A weekly schedule starts a backup at prescribed start times within a day, for the specified days of the week. The weekly schedule message is flexible and can be used to create many types of schedules. For example, to have a daily backup that starts at 22:00, configure the `start_times` field to have one element \"22:00\" and the `days_of_week` field to have all seven days of the week.",
      "properties": {
        "daysOfWeek": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The days of the week to perform a backup. If this field is left empty, the default of every day of the week is used."
        },
        "startTimes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1:GoogleTypeTimeOfDayResponse"
          },
          "description": "The times during the day to start a backup. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00). If no start times are provided, a single fixed start time is chosen arbitrarily."
        }
      },
      "type": "object",
      "required": [
        "daysOfWeek",
        "startTimes"
      ]
    },
    "google-native:alloydb/v1alpha:AutomatedBackupPolicy": {
      "description": "Message describing the user-specified automated backup policy. All fields in the automated backup policy are optional. Defaults for each field are provided if they are not set.",
      "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. The backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it defaults to 1 hour."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether automated automated backups are enabled. If not set, defaults to true."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to backups created using this configuration."
        },
        "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. If empty, defaults to the region of the cluster."
        },
        "quantityBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:QuantityBasedRetention",
          "description": "Quantity-based Backup retention policy to retain recent backups."
        },
        "timeBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:TimeBasedRetention",
          "description": "Time-based Backup retention policy."
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:WeeklySchedule",
          "description": "Weekly schedule for the Backup."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:AutomatedBackupPolicyResponse": {
      "description": "Message describing the user-specified automated backup policy. All fields in the automated backup policy are optional. Defaults for each field are provided if they are not set.",
      "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. The backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it defaults to 1 hour."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether automated automated backups are enabled. If not set, defaults to true."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to backups created using this configuration."
        },
        "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. If empty, defaults to the region of the cluster."
        },
        "quantityBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:QuantityBasedRetentionResponse",
          "description": "Quantity-based Backup retention policy to retain recent backups."
        },
        "timeBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:TimeBasedRetentionResponse",
          "description": "Time-based Backup retention policy."
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:WeeklyScheduleResponse",
          "description": "Weekly schedule for the Backup."
        }
      },
      "type": "object",
      "required": [
        "backupWindow",
        "enabled",
        "encryptionConfig",
        "labels",
        "location",
        "quantityBasedRetention",
        "timeBasedRetention",
        "weeklySchedule"
      ]
    },
    "google-native:alloydb/v1alpha:BackupSourceResponse": {
      "description": "Message describing a BackupSource.",
      "properties": {
        "backupName": {
          "type": "string",
          "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id}"
        },
        "backupUid": {
          "type": "string",
          "description": "The system-generated UID of the backup which was used to create this resource. The UID is generated when the backup is created, and it is retained until the backup is deleted."
        }
      },
      "type": "object",
      "required": [
        "backupName",
        "backupUid"
      ]
    },
    "google-native:alloydb/v1alpha:BackupType": {
      "description": "The backup type, which suggests the trigger for the backup.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Backup Type is unknown.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "OnDemand",
          "description": "ON_DEMAND backups that were triggered by the customer (e.g., not AUTOMATED).",
          "value": "ON_DEMAND"
        },
        {
          "name": "Automated",
          "description": "AUTOMATED backups triggered by the automated backups scheduler pursuant to an automated backup policy.",
          "value": "AUTOMATED"
        },
        {
          "name": "Continuous",
          "description": "CONTINUOUS backups triggered by the automated backups scheduler due to a continuous backup policy.",
          "value": "CONTINUOUS"
        }
      ]
    },
    "google-native:alloydb/v1alpha:ClientConnectionConfig": {
      "description": "Client connection configuration",
      "properties": {
        "requireConnectors": {
          "type": "boolean",
          "description": "Optional. Configuration to enforce connectors only (ex: AuthProxy) connections to the database."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:SslConfig",
          "description": "Optional. SSL config option for this instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:ClientConnectionConfigResponse": {
      "description": "Client connection configuration",
      "properties": {
        "requireConnectors": {
          "type": "boolean",
          "description": "Optional. Configuration to enforce connectors only (ex: AuthProxy) connections to the database."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:SslConfigResponse",
          "description": "Optional. SSL config option for this instance."
        }
      },
      "type": "object",
      "required": [
        "requireConnectors",
        "sslConfig"
      ]
    },
    "google-native:alloydb/v1alpha:ClusterDatabaseVersion": {
      "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseVersionUnspecified",
          "description": "This is an unknown database version.",
          "value": "DATABASE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Postgres13",
          "description": "DEPRECATED - The database version is Postgres 13.",
          "value": "POSTGRES_13"
        },
        {
          "name": "Postgres14",
          "description": "The database version is Postgres 14.",
          "value": "POSTGRES_14"
        },
        {
          "name": "Postgres15",
          "description": "The database version is Postgres 15.",
          "value": "POSTGRES_15"
        }
      ]
    },
    "google-native:alloydb/v1alpha:ContinuousBackupConfig": {
      "description": "ContinuousBackupConfig describes the continuous backups recovery configurations of a cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether ContinuousBackup is enabled."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfig",
          "description": "The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "recoveryWindowDays": {
          "type": "integer",
          "description": "The number 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. If not set, defaults to 14 days."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:ContinuousBackupConfigResponse": {
      "description": "ContinuousBackupConfig describes the continuous backups recovery configurations of a cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether ContinuousBackup is enabled."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfigResponse",
          "description": "The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "recoveryWindowDays": {
          "type": "integer",
          "description": "The number 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. If not set, defaults to 14 days."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "encryptionConfig",
        "recoveryWindowDays"
      ]
    },
    "google-native:alloydb/v1alpha:ContinuousBackupInfoResponse": {
      "description": "ContinuousBackupInfo describes the continuous backup properties of a cluster.",
      "properties": {
        "earliestRestorableTime": {
          "type": "string",
          "description": "The earliest restorable time that can be restored to. Output only field."
        },
        "enabledTime": {
          "type": "string",
          "description": "When ContinuousBackup was most recently enabled. Set to null if ContinuousBackup is not enabled."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionInfoResponse",
          "description": "The encryption information for the WALs and backups required for ContinuousBackup."
        },
        "schedule": {
          "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."
        }
      },
      "type": "object",
      "required": [
        "earliestRestorableTime",
        "enabledTime",
        "encryptionInfo",
        "schedule"
      ]
    },
    "google-native:alloydb/v1alpha:EncryptionConfig": {
      "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).",
      "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]"
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:EncryptionConfigResponse": {
      "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).",
      "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]"
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:alloydb/v1alpha:EncryptionInfoResponse": {
      "description": "EncryptionInfo describes the encryption information of a cluster or a backup.",
      "properties": {
        "encryptionType": {
          "type": "string",
          "description": "Type of encryption."
        },
        "kmsKeyVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud KMS key versions that are being used to protect the database or the backup."
        }
      },
      "type": "object",
      "required": [
        "encryptionType",
        "kmsKeyVersions"
      ]
    },
    "google-native:alloydb/v1alpha:GoogleTypeTimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:GoogleTypeTimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:alloydb/v1alpha:InstanceAvailabilityType": {
      "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones).",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityTypeUnspecified",
          "description": "This is an unknown Availability type.",
          "value": "AVAILABILITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Zonal",
          "description": "Zonal available instance.",
          "value": "ZONAL"
        },
        {
          "name": "Regional",
          "description": "Regional (or Highly) available instance.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:alloydb/v1alpha:InstanceInstanceType": {
      "description": "Required. The type of the instance. Specified at creation time.",
      "type": "string",
      "enum": [
        {
          "name": "InstanceTypeUnspecified",
          "description": "The type of the instance is unknown.",
          "value": "INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "PRIMARY instances support read and write operations.",
          "value": "PRIMARY"
        },
        {
          "name": "ReadPool",
          "description": "READ POOL instances support read operations only. Each read pool instance consists of one or more homogeneous nodes. * Read pool of size 1 can only have zonal availability. * Read pools with node count of 2 or more can have regional availability (nodes are present in 2 or more zones in a region).",
          "value": "READ_POOL"
        },
        {
          "name": "Secondary",
          "description": "SECONDARY instances support read operations only. SECONDARY instance is a cross-region read replica",
          "value": "SECONDARY"
        }
      ]
    },
    "google-native:alloydb/v1alpha:MachineConfig": {
      "description": "MachineConfig describes the configuration of a machine.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "The number of CPU's in the VM instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:MachineConfigResponse": {
      "description": "MachineConfig describes the configuration of a machine.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "The number of CPU's in the VM instance."
        }
      },
      "type": "object",
      "required": [
        "cpuCount"
      ]
    },
    "google-native:alloydb/v1alpha:MigrationSourceResponse": {
      "description": "Subset of the source instance configuration that is available when reading the cluster resource.",
      "properties": {
        "hostPort": {
          "type": "string",
          "description": "The host and port of the on-premises instance in host:port format"
        },
        "referenceId": {
          "type": "string",
          "description": "Place holder for the external source identifier(e.g DMS job name) that created the cluster."
        },
        "sourceType": {
          "type": "string",
          "description": "Type of migration source."
        }
      },
      "type": "object",
      "required": [
        "hostPort",
        "referenceId",
        "sourceType"
      ]
    },
    "google-native:alloydb/v1alpha:NetworkConfig": {
      "description": "Metadata related to network configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "Optional. Name of the allocated IP range for the private IP AlloyDB cluster, for example: \"google-managed-services-default\". If set, the instance IPs for this cluster will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. Field name is intended to be consistent with Cloud SQL."
        },
        "network": {
          "type": "string",
          "description": "Optional. 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. It is specified in the form: \"projects/{project_number}/global/networks/{network_id}\". This is required to create a cluster."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:NetworkConfigResponse": {
      "description": "Metadata related to network configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "Optional. Name of the allocated IP range for the private IP AlloyDB cluster, for example: \"google-managed-services-default\". If set, the instance IPs for this cluster will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. Field name is intended to be consistent with Cloud SQL."
        },
        "network": {
          "type": "string",
          "description": "Optional. 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. It is specified in the form: \"projects/{project_number}/global/networks/{network_id}\". This is required to create a cluster."
        }
      },
      "type": "object",
      "required": [
        "allocatedIpRange",
        "network"
      ]
    },
    "google-native:alloydb/v1alpha:NodeResponse": {
      "description": "Details of a single node in the instance. Nodes in an AlloyDB instance are ephemereal, they can change during update, failover, autohealing and resize operations.",
      "properties": {
        "ip": {
          "type": "string",
          "description": "The private IP address of the VM e.g. \"10.57.0.34\"."
        },
        "state": {
          "type": "string",
          "description": "Determined by state of the compute VM and postgres-service health. Compute VM state can have values listed in https://cloud.google.com/compute/docs/instances/instance-life-cycle and postgres-service health can have values: HEALTHY and UNHEALTHY."
        },
        "zone": {
          "type": "string",
          "description": "The Compute Engine zone of the VM e.g. \"us-central1-b\"."
        }
      },
      "type": "object",
      "required": [
        "ip",
        "state",
        "zone"
      ]
    },
    "google-native:alloydb/v1alpha:PrimaryConfigResponse": {
      "description": "Configuration for the primary cluster. It has the list of clusters that are replicating from this cluster. This should be set if and only if the cluster is of type PRIMARY.",
      "properties": {
        "secondaryClusterNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the clusters that are replicating from this cluster."
        }
      },
      "type": "object",
      "required": [
        "secondaryClusterNames"
      ]
    },
    "google-native:alloydb/v1alpha:PscConfig": {
      "description": "PscConfig contains PSC related configuration at a cluster level. NEXT ID: 2",
      "properties": {
        "pscEnabled": {
          "type": "boolean",
          "description": "Optional. Create an instance that allows connections from Private Service Connect endpoints to the instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:PscConfigResponse": {
      "description": "PscConfig contains PSC related configuration at a cluster level. NEXT ID: 2",
      "properties": {
        "pscEnabled": {
          "type": "boolean",
          "description": "Optional. Create an instance that allows connections from Private Service Connect endpoints to the instance."
        }
      },
      "type": "object",
      "required": [
        "pscEnabled"
      ]
    },
    "google-native:alloydb/v1alpha:QuantityBasedExpiryResponse": {
      "description": "A backup's position in a quantity-based retention queue, of backups with the same source cluster and type, with length, retention, specified by the backup's retention policy. Once the position is greater than the retention, the backup is eligible to be garbage collected. Example: 5 backups from the same source cluster and type with a quantity-based retention of 3 and denoted by backup_id (position, retention). Safe: backup_5 (1, 3), backup_4, (2, 3), backup_3 (3, 3). Awaiting garbage collection: backup_2 (4, 3), backup_1 (5, 3)",
      "properties": {
        "retentionCount": {
          "type": "integer",
          "description": "The backup's position among its backups with the same source cluster and type, by descending chronological order create time(i.e. newest first)."
        },
        "totalRetentionCount": {
          "type": "integer",
          "description": "The length of the quantity-based queue, specified by the backup's retention policy."
        }
      },
      "type": "object",
      "required": [
        "retentionCount",
        "totalRetentionCount"
      ]
    },
    "google-native:alloydb/v1alpha:QuantityBasedRetention": {
      "description": "A quantity based policy specifies that a certain number of the most recent successful backups should be retained.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The number of backups to retain."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:QuantityBasedRetentionResponse": {
      "description": "A quantity based policy specifies that a certain number of the most recent successful backups should be retained.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The number of backups to retain."
        }
      },
      "type": "object",
      "required": [
        "count"
      ]
    },
    "google-native:alloydb/v1alpha:QueryInsightsInstanceConfig": {
      "description": "QueryInsights Instance specific configuration.",
      "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."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Record application tags for an instance. This flag is turned \"on\" by default."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:QueryInsightsInstanceConfigResponse": {
      "description": "QueryInsights Instance specific configuration.",
      "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."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Record application tags for an instance. This flag is turned \"on\" by default."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default."
        }
      },
      "type": "object",
      "required": [
        "queryPlansPerMinute",
        "queryStringLength",
        "recordApplicationTags",
        "recordClientAddress"
      ]
    },
    "google-native:alloydb/v1alpha:ReadPoolConfig": {
      "description": "Configuration for a read pool instance.",
      "properties": {
        "nodeCount": {
          "type": "integer",
          "description": "Read capacity, i.e. number of nodes in a read pool instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:ReadPoolConfigResponse": {
      "description": "Configuration for a read pool instance.",
      "properties": {
        "nodeCount": {
          "type": "integer",
          "description": "Read capacity, i.e. number of nodes in a read pool instance."
        }
      },
      "type": "object",
      "required": [
        "nodeCount"
      ]
    },
    "google-native:alloydb/v1alpha:SecondaryConfig": {
      "description": "Configuration information for the secondary cluster. This should be set if and only if the cluster is of type SECONDARY.",
      "properties": {
        "primaryClusterName": {
          "type": "string",
          "description": "The name of the primary cluster name with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:SecondaryConfigResponse": {
      "description": "Configuration information for the secondary cluster. This should be set if and only if the cluster is of type SECONDARY.",
      "properties": {
        "primaryClusterName": {
          "type": "string",
          "description": "The name of the primary cluster name with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        }
      },
      "type": "object",
      "required": [
        "primaryClusterName"
      ]
    },
    "google-native:alloydb/v1alpha:SslConfig": {
      "description": "SSL configuration.",
      "properties": {
        "caSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:SslConfigCaSource",
          "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value."
        },
        "sslMode": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:SslConfigSslMode",
          "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:SslConfigCaSource": {
      "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value.",
      "type": "string",
      "enum": [
        {
          "name": "CaSourceUnspecified",
          "description": "Certificate Authority (CA) source not specified. Defaults to CA_SOURCE_MANAGED.",
          "value": "CA_SOURCE_UNSPECIFIED"
        },
        {
          "name": "CaSourceManaged",
          "description": "Certificate Authority (CA) managed by the AlloyDB Cluster.",
          "value": "CA_SOURCE_MANAGED"
        }
      ]
    },
    "google-native:alloydb/v1alpha:SslConfigResponse": {
      "description": "SSL configuration.",
      "properties": {
        "caSource": {
          "type": "string",
          "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value."
        },
        "sslMode": {
          "type": "string",
          "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior."
        }
      },
      "type": "object",
      "required": [
        "caSource",
        "sslMode"
      ]
    },
    "google-native:alloydb/v1alpha:SslConfigSslMode": {
      "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior.",
      "type": "string",
      "enum": [
        {
          "name": "SslModeUnspecified",
          "description": "SSL mode not specified. Defaults to ENCRYPTED_ONLY.",
          "value": "SSL_MODE_UNSPECIFIED"
        },
        {
          "name": "SslModeAllow",
          "description": "SSL connections are optional. CA verification not enforced.",
          "value": "SSL_MODE_ALLOW"
        },
        {
          "name": "SslModeRequire",
          "description": "SSL connections are required. CA verification not enforced. Clients may use locally self-signed certificates (default psql client behavior).",
          "value": "SSL_MODE_REQUIRE"
        },
        {
          "name": "SslModeVerifyCa",
          "description": "SSL connections are required. CA verification enforced. Clients must have certificates signed by a Cluster CA, e.g. via GenerateClientCertificate.",
          "value": "SSL_MODE_VERIFY_CA"
        },
        {
          "name": "AllowUnencryptedAndEncrypted",
          "description": "SSL connections are optional. CA verification not enforced.",
          "value": "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
        },
        {
          "name": "EncryptedOnly",
          "description": "SSL connections are required. CA verification not enforced.",
          "value": "ENCRYPTED_ONLY"
        }
      ]
    },
    "google-native:alloydb/v1alpha:TimeBasedRetention": {
      "description": "A time based retention policy specifies that all backups within a certain time period should be retained.",
      "properties": {
        "retentionPeriod": {
          "type": "string",
          "description": "The retention period."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:TimeBasedRetentionResponse": {
      "description": "A time based retention policy specifies that all backups within a certain time period should be retained.",
      "properties": {
        "retentionPeriod": {
          "type": "string",
          "description": "The retention period."
        }
      },
      "type": "object",
      "required": [
        "retentionPeriod"
      ]
    },
    "google-native:alloydb/v1alpha:UpdatePolicy": {
      "description": "Policy to be used while updating the instance.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:UpdatePolicyMode",
          "description": "Mode for updating the instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:UpdatePolicyMode": {
      "description": "Mode for updating the instance.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Mode is unknown.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "Least disruptive way to apply the update.",
          "value": "DEFAULT"
        },
        {
          "name": "ForceApply",
          "description": "Performs a forced update when applicable. This will be fast but may incur a downtime.",
          "value": "FORCE_APPLY"
        }
      ]
    },
    "google-native:alloydb/v1alpha:UpdatePolicyResponse": {
      "description": "Policy to be used while updating the instance.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Mode for updating the instance."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:alloydb/v1alpha:UserPassword": {
      "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The initial password for the user."
        },
        "user": {
          "type": "string",
          "description": "The database username."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:UserPasswordResponse": {
      "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The initial password for the user."
        },
        "user": {
          "type": "string",
          "description": "The database username."
        }
      },
      "type": "object",
      "required": [
        "password",
        "user"
      ]
    },
    "google-native:alloydb/v1alpha:UserUserType": {
      "description": "Optional. Type of this user.",
      "type": "string",
      "enum": [
        {
          "name": "UserTypeUnspecified",
          "description": "Unspecified user type.",
          "value": "USER_TYPE_UNSPECIFIED"
        },
        {
          "name": "AlloydbBuiltIn",
          "description": "The default user type that authenticates via password-based authentication.",
          "value": "ALLOYDB_BUILT_IN"
        },
        {
          "name": "AlloydbIamUser",
          "description": "Database user that can authenticate via IAM-Based authentication.",
          "value": "ALLOYDB_IAM_USER"
        }
      ]
    },
    "google-native:alloydb/v1alpha:WeeklySchedule": {
      "description": "A weekly schedule starts a backup at prescribed start times within a day, for the specified days of the week. The weekly schedule message is flexible and can be used to create many types of schedules. For example, to have a daily backup that starts at 22:00, configure the `start_times` field to have one element \"22:00\" and the `days_of_week` field to have all seven days of the week.",
      "properties": {
        "daysOfWeek": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:WeeklyScheduleDaysOfWeekItem"
          },
          "description": "The days of the week to perform a backup. If this field is left empty, the default of every day of the week is used."
        },
        "startTimes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:GoogleTypeTimeOfDay"
          },
          "description": "The times during the day to start a backup. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00). If no start times are provided, a single fixed start time is chosen arbitrarily."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1alpha:WeeklyScheduleDaysOfWeekItem": {
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:alloydb/v1alpha:WeeklyScheduleResponse": {
      "description": "A weekly schedule starts a backup at prescribed start times within a day, for the specified days of the week. The weekly schedule message is flexible and can be used to create many types of schedules. For example, to have a daily backup that starts at 22:00, configure the `start_times` field to have one element \"22:00\" and the `days_of_week` field to have all seven days of the week.",
      "properties": {
        "daysOfWeek": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The days of the week to perform a backup. If this field is left empty, the default of every day of the week is used."
        },
        "startTimes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:GoogleTypeTimeOfDayResponse"
          },
          "description": "The times during the day to start a backup. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00). If no start times are provided, a single fixed start time is chosen arbitrarily."
        }
      },
      "type": "object",
      "required": [
        "daysOfWeek",
        "startTimes"
      ]
    },
    "google-native:alloydb/v1beta:AutomatedBackupPolicy": {
      "description": "Message describing the user-specified automated backup policy. All fields in the automated backup policy are optional. Defaults for each field are provided if they are not set.",
      "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. The backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it defaults to 1 hour."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether automated automated backups are enabled. If not set, defaults to true."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to backups created using this configuration."
        },
        "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. If empty, defaults to the region of the cluster."
        },
        "quantityBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:QuantityBasedRetention",
          "description": "Quantity-based Backup retention policy to retain recent backups."
        },
        "timeBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:TimeBasedRetention",
          "description": "Time-based Backup retention policy."
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:WeeklySchedule",
          "description": "Weekly schedule for the Backup."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:AutomatedBackupPolicyResponse": {
      "description": "Message describing the user-specified automated backup policy. All fields in the automated backup policy are optional. Defaults for each field are provided if they are not set.",
      "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. The backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it defaults to 1 hour."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether automated automated backups are enabled. If not set, defaults to true."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to backups created using this configuration."
        },
        "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. If empty, defaults to the region of the cluster."
        },
        "quantityBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:QuantityBasedRetentionResponse",
          "description": "Quantity-based Backup retention policy to retain recent backups."
        },
        "timeBasedRetention": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:TimeBasedRetentionResponse",
          "description": "Time-based Backup retention policy."
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:WeeklyScheduleResponse",
          "description": "Weekly schedule for the Backup."
        }
      },
      "type": "object",
      "required": [
        "backupWindow",
        "enabled",
        "encryptionConfig",
        "labels",
        "location",
        "quantityBasedRetention",
        "timeBasedRetention",
        "weeklySchedule"
      ]
    },
    "google-native:alloydb/v1beta:BackupSourceResponse": {
      "description": "Message describing a BackupSource.",
      "properties": {
        "backupName": {
          "type": "string",
          "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id}"
        },
        "backupUid": {
          "type": "string",
          "description": "The system-generated UID of the backup which was used to create this resource. The UID is generated when the backup is created, and it is retained until the backup is deleted."
        }
      },
      "type": "object",
      "required": [
        "backupName",
        "backupUid"
      ]
    },
    "google-native:alloydb/v1beta:BackupType": {
      "description": "The backup type, which suggests the trigger for the backup.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Backup Type is unknown.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "OnDemand",
          "description": "ON_DEMAND backups that were triggered by the customer (e.g., not AUTOMATED).",
          "value": "ON_DEMAND"
        },
        {
          "name": "Automated",
          "description": "AUTOMATED backups triggered by the automated backups scheduler pursuant to an automated backup policy.",
          "value": "AUTOMATED"
        },
        {
          "name": "Continuous",
          "description": "CONTINUOUS backups triggered by the automated backups scheduler due to a continuous backup policy.",
          "value": "CONTINUOUS"
        }
      ]
    },
    "google-native:alloydb/v1beta:ClientConnectionConfig": {
      "description": "Client connection configuration",
      "properties": {
        "requireConnectors": {
          "type": "boolean",
          "description": "Optional. Configuration to enforce connectors only (ex: AuthProxy) connections to the database."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:SslConfig",
          "description": "Optional. SSL config option for this instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:ClientConnectionConfigResponse": {
      "description": "Client connection configuration",
      "properties": {
        "requireConnectors": {
          "type": "boolean",
          "description": "Optional. Configuration to enforce connectors only (ex: AuthProxy) connections to the database."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:SslConfigResponse",
          "description": "Optional. SSL config option for this instance."
        }
      },
      "type": "object",
      "required": [
        "requireConnectors",
        "sslConfig"
      ]
    },
    "google-native:alloydb/v1beta:ClusterDatabaseVersion": {
      "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseVersionUnspecified",
          "description": "This is an unknown database version.",
          "value": "DATABASE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Postgres13",
          "description": "DEPRECATED - The database version is Postgres 13.",
          "value": "POSTGRES_13"
        },
        {
          "name": "Postgres14",
          "description": "The database version is Postgres 14.",
          "value": "POSTGRES_14"
        },
        {
          "name": "Postgres15",
          "description": "The database version is Postgres 15.",
          "value": "POSTGRES_15"
        }
      ]
    },
    "google-native:alloydb/v1beta:ContinuousBackupConfig": {
      "description": "ContinuousBackupConfig describes the continuous backups recovery configurations of a cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether ContinuousBackup is enabled."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfig",
          "description": "The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "recoveryWindowDays": {
          "type": "integer",
          "description": "The number 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. If not set, defaults to 14 days."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:ContinuousBackupConfigResponse": {
      "description": "ContinuousBackupConfig describes the continuous backups recovery configurations of a cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether ContinuousBackup is enabled."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfigResponse",
          "description": "The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "recoveryWindowDays": {
          "type": "integer",
          "description": "The number 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. If not set, defaults to 14 days."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "encryptionConfig",
        "recoveryWindowDays"
      ]
    },
    "google-native:alloydb/v1beta:ContinuousBackupInfoResponse": {
      "description": "ContinuousBackupInfo describes the continuous backup properties of a cluster.",
      "properties": {
        "earliestRestorableTime": {
          "type": "string",
          "description": "The earliest restorable time that can be restored to. Output only field."
        },
        "enabledTime": {
          "type": "string",
          "description": "When ContinuousBackup was most recently enabled. Set to null if ContinuousBackup is not enabled."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionInfoResponse",
          "description": "The encryption information for the WALs and backups required for ContinuousBackup."
        },
        "schedule": {
          "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."
        }
      },
      "type": "object",
      "required": [
        "earliestRestorableTime",
        "enabledTime",
        "encryptionInfo",
        "schedule"
      ]
    },
    "google-native:alloydb/v1beta:EncryptionConfig": {
      "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).",
      "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]"
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:EncryptionConfigResponse": {
      "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).",
      "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]"
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:alloydb/v1beta:EncryptionInfoResponse": {
      "description": "EncryptionInfo describes the encryption information of a cluster or a backup.",
      "properties": {
        "encryptionType": {
          "type": "string",
          "description": "Type of encryption."
        },
        "kmsKeyVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud KMS key versions that are being used to protect the database or the backup."
        }
      },
      "type": "object",
      "required": [
        "encryptionType",
        "kmsKeyVersions"
      ]
    },
    "google-native:alloydb/v1beta:GoogleTypeTimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:GoogleTypeTimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:alloydb/v1beta:InstanceAvailabilityType": {
      "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones).",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityTypeUnspecified",
          "description": "This is an unknown Availability type.",
          "value": "AVAILABILITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Zonal",
          "description": "Zonal available instance.",
          "value": "ZONAL"
        },
        {
          "name": "Regional",
          "description": "Regional (or Highly) available instance.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:alloydb/v1beta:InstanceInstanceType": {
      "description": "Required. The type of the instance. Specified at creation time.",
      "type": "string",
      "enum": [
        {
          "name": "InstanceTypeUnspecified",
          "description": "The type of the instance is unknown.",
          "value": "INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "PRIMARY instances support read and write operations.",
          "value": "PRIMARY"
        },
        {
          "name": "ReadPool",
          "description": "READ POOL instances support read operations only. Each read pool instance consists of one or more homogeneous nodes. * Read pool of size 1 can only have zonal availability. * Read pools with node count of 2 or more can have regional availability (nodes are present in 2 or more zones in a region).",
          "value": "READ_POOL"
        },
        {
          "name": "Secondary",
          "description": "SECONDARY instances support read operations only. SECONDARY instance is a cross-region read replica",
          "value": "SECONDARY"
        }
      ]
    },
    "google-native:alloydb/v1beta:MachineConfig": {
      "description": "MachineConfig describes the configuration of a machine.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "The number of CPU's in the VM instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:MachineConfigResponse": {
      "description": "MachineConfig describes the configuration of a machine.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "The number of CPU's in the VM instance."
        }
      },
      "type": "object",
      "required": [
        "cpuCount"
      ]
    },
    "google-native:alloydb/v1beta:MigrationSourceResponse": {
      "description": "Subset of the source instance configuration that is available when reading the cluster resource.",
      "properties": {
        "hostPort": {
          "type": "string",
          "description": "The host and port of the on-premises instance in host:port format"
        },
        "referenceId": {
          "type": "string",
          "description": "Place holder for the external source identifier(e.g DMS job name) that created the cluster."
        },
        "sourceType": {
          "type": "string",
          "description": "Type of migration source."
        }
      },
      "type": "object",
      "required": [
        "hostPort",
        "referenceId",
        "sourceType"
      ]
    },
    "google-native:alloydb/v1beta:NetworkConfig": {
      "description": "Metadata related to network configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "Optional. Name of the allocated IP range for the private IP AlloyDB cluster, for example: \"google-managed-services-default\". If set, the instance IPs for this cluster will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. Field name is intended to be consistent with Cloud SQL."
        },
        "network": {
          "type": "string",
          "description": "Optional. 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. It is specified in the form: \"projects/{project_number}/global/networks/{network_id}\". This is required to create a cluster."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:NetworkConfigResponse": {
      "description": "Metadata related to network configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "Optional. Name of the allocated IP range for the private IP AlloyDB cluster, for example: \"google-managed-services-default\". If set, the instance IPs for this cluster will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. Field name is intended to be consistent with Cloud SQL."
        },
        "network": {
          "type": "string",
          "description": "Optional. 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. It is specified in the form: \"projects/{project_number}/global/networks/{network_id}\". This is required to create a cluster."
        }
      },
      "type": "object",
      "required": [
        "allocatedIpRange",
        "network"
      ]
    },
    "google-native:alloydb/v1beta:NodeResponse": {
      "description": "Details of a single node in the instance. Nodes in an AlloyDB instance are ephemereal, they can change during update, failover, autohealing and resize operations.",
      "properties": {
        "ip": {
          "type": "string",
          "description": "The private IP address of the VM e.g. \"10.57.0.34\"."
        },
        "state": {
          "type": "string",
          "description": "Determined by state of the compute VM and postgres-service health. Compute VM state can have values listed in https://cloud.google.com/compute/docs/instances/instance-life-cycle and postgres-service health can have values: HEALTHY and UNHEALTHY."
        },
        "zone": {
          "type": "string",
          "description": "The Compute Engine zone of the VM e.g. \"us-central1-b\"."
        }
      },
      "type": "object",
      "required": [
        "ip",
        "state",
        "zone"
      ]
    },
    "google-native:alloydb/v1beta:PrimaryConfigResponse": {
      "description": "Configuration for the primary cluster. It has the list of clusters that are replicating from this cluster. This should be set if and only if the cluster is of type PRIMARY.",
      "properties": {
        "secondaryClusterNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the clusters that are replicating from this cluster."
        }
      },
      "type": "object",
      "required": [
        "secondaryClusterNames"
      ]
    },
    "google-native:alloydb/v1beta:QuantityBasedExpiryResponse": {
      "description": "A backup's position in a quantity-based retention queue, of backups with the same source cluster and type, with length, retention, specified by the backup's retention policy. Once the position is greater than the retention, the backup is eligible to be garbage collected. Example: 5 backups from the same source cluster and type with a quantity-based retention of 3 and denoted by backup_id (position, retention). Safe: backup_5 (1, 3), backup_4, (2, 3), backup_3 (3, 3). Awaiting garbage collection: backup_2 (4, 3), backup_1 (5, 3)",
      "properties": {
        "retentionCount": {
          "type": "integer",
          "description": "The backup's position among its backups with the same source cluster and type, by descending chronological order create time(i.e. newest first)."
        },
        "totalRetentionCount": {
          "type": "integer",
          "description": "The length of the quantity-based queue, specified by the backup's retention policy."
        }
      },
      "type": "object",
      "required": [
        "retentionCount",
        "totalRetentionCount"
      ]
    },
    "google-native:alloydb/v1beta:QuantityBasedRetention": {
      "description": "A quantity based policy specifies that a certain number of the most recent successful backups should be retained.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The number of backups to retain."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:QuantityBasedRetentionResponse": {
      "description": "A quantity based policy specifies that a certain number of the most recent successful backups should be retained.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The number of backups to retain."
        }
      },
      "type": "object",
      "required": [
        "count"
      ]
    },
    "google-native:alloydb/v1beta:QueryInsightsInstanceConfig": {
      "description": "QueryInsights Instance specific configuration.",
      "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."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Record application tags for an instance. This flag is turned \"on\" by default."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:QueryInsightsInstanceConfigResponse": {
      "description": "QueryInsights Instance specific configuration.",
      "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."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Record application tags for an instance. This flag is turned \"on\" by default."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default."
        }
      },
      "type": "object",
      "required": [
        "queryPlansPerMinute",
        "queryStringLength",
        "recordApplicationTags",
        "recordClientAddress"
      ]
    },
    "google-native:alloydb/v1beta:ReadPoolConfig": {
      "description": "Configuration for a read pool instance.",
      "properties": {
        "nodeCount": {
          "type": "integer",
          "description": "Read capacity, i.e. number of nodes in a read pool instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:ReadPoolConfigResponse": {
      "description": "Configuration for a read pool instance.",
      "properties": {
        "nodeCount": {
          "type": "integer",
          "description": "Read capacity, i.e. number of nodes in a read pool instance."
        }
      },
      "type": "object",
      "required": [
        "nodeCount"
      ]
    },
    "google-native:alloydb/v1beta:SecondaryConfig": {
      "description": "Configuration information for the secondary cluster. This should be set if and only if the cluster is of type SECONDARY.",
      "properties": {
        "primaryClusterName": {
          "type": "string",
          "description": "The name of the primary cluster name with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:SecondaryConfigResponse": {
      "description": "Configuration information for the secondary cluster. This should be set if and only if the cluster is of type SECONDARY.",
      "properties": {
        "primaryClusterName": {
          "type": "string",
          "description": "The name of the primary cluster name with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        }
      },
      "type": "object",
      "required": [
        "primaryClusterName"
      ]
    },
    "google-native:alloydb/v1beta:SslConfig": {
      "description": "SSL configuration.",
      "properties": {
        "caSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:SslConfigCaSource",
          "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value."
        },
        "sslMode": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:SslConfigSslMode",
          "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:SslConfigCaSource": {
      "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value.",
      "type": "string",
      "enum": [
        {
          "name": "CaSourceUnspecified",
          "description": "Certificate Authority (CA) source not specified. Defaults to CA_SOURCE_MANAGED.",
          "value": "CA_SOURCE_UNSPECIFIED"
        },
        {
          "name": "CaSourceManaged",
          "description": "Certificate Authority (CA) managed by the AlloyDB Cluster.",
          "value": "CA_SOURCE_MANAGED"
        }
      ]
    },
    "google-native:alloydb/v1beta:SslConfigResponse": {
      "description": "SSL configuration.",
      "properties": {
        "caSource": {
          "type": "string",
          "description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value."
        },
        "sslMode": {
          "type": "string",
          "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior."
        }
      },
      "type": "object",
      "required": [
        "caSource",
        "sslMode"
      ]
    },
    "google-native:alloydb/v1beta:SslConfigSslMode": {
      "description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior.",
      "type": "string",
      "enum": [
        {
          "name": "SslModeUnspecified",
          "description": "SSL mode not specified. Defaults to ENCRYPTED_ONLY.",
          "value": "SSL_MODE_UNSPECIFIED"
        },
        {
          "name": "SslModeAllow",
          "description": "SSL connections are optional. CA verification not enforced.",
          "value": "SSL_MODE_ALLOW"
        },
        {
          "name": "SslModeRequire",
          "description": "SSL connections are required. CA verification not enforced. Clients may use locally self-signed certificates (default psql client behavior).",
          "value": "SSL_MODE_REQUIRE"
        },
        {
          "name": "SslModeVerifyCa",
          "description": "SSL connections are required. CA verification enforced. Clients must have certificates signed by a Cluster CA, e.g. via GenerateClientCertificate.",
          "value": "SSL_MODE_VERIFY_CA"
        },
        {
          "name": "AllowUnencryptedAndEncrypted",
          "description": "SSL connections are optional. CA verification not enforced.",
          "value": "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
        },
        {
          "name": "EncryptedOnly",
          "description": "SSL connections are required. CA verification not enforced.",
          "value": "ENCRYPTED_ONLY"
        }
      ]
    },
    "google-native:alloydb/v1beta:TimeBasedRetention": {
      "description": "A time based retention policy specifies that all backups within a certain time period should be retained.",
      "properties": {
        "retentionPeriod": {
          "type": "string",
          "description": "The retention period."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:TimeBasedRetentionResponse": {
      "description": "A time based retention policy specifies that all backups within a certain time period should be retained.",
      "properties": {
        "retentionPeriod": {
          "type": "string",
          "description": "The retention period."
        }
      },
      "type": "object",
      "required": [
        "retentionPeriod"
      ]
    },
    "google-native:alloydb/v1beta:UpdatePolicy": {
      "description": "Policy to be used while updating the instance.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:UpdatePolicyMode",
          "description": "Mode for updating the instance."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:UpdatePolicyMode": {
      "description": "Mode for updating the instance.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Mode is unknown.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "Least disruptive way to apply the update.",
          "value": "DEFAULT"
        },
        {
          "name": "ForceApply",
          "description": "Performs a forced update when applicable. This will be fast but may incur a downtime.",
          "value": "FORCE_APPLY"
        }
      ]
    },
    "google-native:alloydb/v1beta:UpdatePolicyResponse": {
      "description": "Policy to be used while updating the instance.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Mode for updating the instance."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:alloydb/v1beta:UserPassword": {
      "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The initial password for the user."
        },
        "user": {
          "type": "string",
          "description": "The database username."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:UserPasswordResponse": {
      "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The initial password for the user."
        },
        "user": {
          "type": "string",
          "description": "The database username."
        }
      },
      "type": "object",
      "required": [
        "password",
        "user"
      ]
    },
    "google-native:alloydb/v1beta:UserUserType": {
      "description": "Optional. Type of this user.",
      "type": "string",
      "enum": [
        {
          "name": "UserTypeUnspecified",
          "description": "Unspecified user type.",
          "value": "USER_TYPE_UNSPECIFIED"
        },
        {
          "name": "AlloydbBuiltIn",
          "description": "The default user type that authenticates via password-based authentication.",
          "value": "ALLOYDB_BUILT_IN"
        },
        {
          "name": "AlloydbIamUser",
          "description": "Database user that can authenticate via IAM-Based authentication.",
          "value": "ALLOYDB_IAM_USER"
        }
      ]
    },
    "google-native:alloydb/v1beta:WeeklySchedule": {
      "description": "A weekly schedule starts a backup at prescribed start times within a day, for the specified days of the week. The weekly schedule message is flexible and can be used to create many types of schedules. For example, to have a daily backup that starts at 22:00, configure the `start_times` field to have one element \"22:00\" and the `days_of_week` field to have all seven days of the week.",
      "properties": {
        "daysOfWeek": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:WeeklyScheduleDaysOfWeekItem"
          },
          "description": "The days of the week to perform a backup. If this field is left empty, the default of every day of the week is used."
        },
        "startTimes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:GoogleTypeTimeOfDay"
          },
          "description": "The times during the day to start a backup. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00). If no start times are provided, a single fixed start time is chosen arbitrarily."
        }
      },
      "type": "object"
    },
    "google-native:alloydb/v1beta:WeeklyScheduleDaysOfWeekItem": {
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:alloydb/v1beta:WeeklyScheduleResponse": {
      "description": "A weekly schedule starts a backup at prescribed start times within a day, for the specified days of the week. The weekly schedule message is flexible and can be used to create many types of schedules. For example, to have a daily backup that starts at 22:00, configure the `start_times` field to have one element \"22:00\" and the `days_of_week` field to have all seven days of the week.",
      "properties": {
        "daysOfWeek": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The days of the week to perform a backup. If this field is left empty, the default of every day of the week is used."
        },
        "startTimes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:GoogleTypeTimeOfDayResponse"
          },
          "description": "The times during the day to start a backup. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00). If no start times are provided, a single fixed start time is chosen arbitrarily."
        }
      },
      "type": "object",
      "required": [
        "daysOfWeek",
        "startTimes"
      ]
    },
    "google-native:analyticshub/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:analyticshub/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:analyticshub/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:analyticshub/v1:BigQueryDatasetSource": {
      "description": "A reference to a shared dataset. It is an existing BigQuery dataset with a collection of objects such as tables and views that you want to share with subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a linked dataset in the subscriber's project. A Linked dataset is an opaque, read-only BigQuery dataset that serves as a _symbolic link_ to a shared dataset.",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "Resource name of the dataset source for this listing. e.g. `projects/myproject/datasets/123`"
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:BigQueryDatasetSourceResponse": {
      "description": "A reference to a shared dataset. It is an existing BigQuery dataset with a collection of objects such as tables and views that you want to share with subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a linked dataset in the subscriber's project. A Linked dataset is an opaque, read-only BigQuery dataset that serves as a _symbolic link_ to a shared dataset.",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "Resource name of the dataset source for this listing. e.g. `projects/myproject/datasets/123`"
        }
      },
      "type": "object",
      "required": [
        "dataset"
      ]
    },
    "google-native:analyticshub/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:analyticshub/v1:DataProvider": {
      "description": "Contains details of the data provider.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the data provider."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the data provider. Max Length: 1000 bytes."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:DataProviderResponse": {
      "description": "Contains details of the data provider.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the data provider."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the data provider. Max Length: 1000 bytes."
        }
      },
      "type": "object",
      "required": [
        "name",
        "primaryContact"
      ]
    },
    "google-native:analyticshub/v1:DcrExchangeConfig": {
      "description": "Data Clean Room (DCR), used for privacy-safe and secured data sharing.",
      "type": "object"
    },
    "google-native:analyticshub/v1:DcrExchangeConfigResponse": {
      "description": "Data Clean Room (DCR), used for privacy-safe and secured data sharing.",
      "type": "object"
    },
    "google-native:analyticshub/v1:DefaultExchangeConfig": {
      "description": "Default Analytics Hub data exchange, used for secured data sharing.",
      "type": "object"
    },
    "google-native:analyticshub/v1:DefaultExchangeConfigResponse": {
      "description": "Default Analytics Hub data exchange, used for secured data sharing.",
      "type": "object"
    },
    "google-native:analyticshub/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:analyticshub/v1:ListingCategoriesItem": {
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "CategoryOthers",
          "value": "CATEGORY_OTHERS"
        },
        {
          "name": "CategoryAdvertisingAndMarketing",
          "value": "CATEGORY_ADVERTISING_AND_MARKETING"
        },
        {
          "name": "CategoryCommerce",
          "value": "CATEGORY_COMMERCE"
        },
        {
          "name": "CategoryClimateAndEnvironment",
          "value": "CATEGORY_CLIMATE_AND_ENVIRONMENT"
        },
        {
          "name": "CategoryDemographics",
          "value": "CATEGORY_DEMOGRAPHICS"
        },
        {
          "name": "CategoryEconomics",
          "value": "CATEGORY_ECONOMICS"
        },
        {
          "name": "CategoryEducation",
          "value": "CATEGORY_EDUCATION"
        },
        {
          "name": "CategoryEnergy",
          "value": "CATEGORY_ENERGY"
        },
        {
          "name": "CategoryFinancial",
          "value": "CATEGORY_FINANCIAL"
        },
        {
          "name": "CategoryGaming",
          "value": "CATEGORY_GAMING"
        },
        {
          "name": "CategoryGeospatial",
          "value": "CATEGORY_GEOSPATIAL"
        },
        {
          "name": "CategoryHealthcareAndLifeScience",
          "value": "CATEGORY_HEALTHCARE_AND_LIFE_SCIENCE"
        },
        {
          "name": "CategoryMedia",
          "value": "CATEGORY_MEDIA"
        },
        {
          "name": "CategoryPublicSector",
          "value": "CATEGORY_PUBLIC_SECTOR"
        },
        {
          "name": "CategoryRetail",
          "value": "CATEGORY_RETAIL"
        },
        {
          "name": "CategorySports",
          "value": "CATEGORY_SPORTS"
        },
        {
          "name": "CategoryScienceAndResearch",
          "value": "CATEGORY_SCIENCE_AND_RESEARCH"
        },
        {
          "name": "CategoryTransportationAndLogistics",
          "value": "CATEGORY_TRANSPORTATION_AND_LOGISTICS"
        },
        {
          "name": "CategoryTravelAndTourism",
          "value": "CATEGORY_TRAVEL_AND_TOURISM"
        }
      ]
    },
    "google-native:analyticshub/v1:Publisher": {
      "description": "Contains details of the listing publisher.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the listing publisher."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the listing publisher. Max Length: 1000 bytes."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:PublisherResponse": {
      "description": "Contains details of the listing publisher.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the listing publisher."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the listing publisher. Max Length: 1000 bytes."
        }
      },
      "type": "object",
      "required": [
        "name",
        "primaryContact"
      ]
    },
    "google-native:analyticshub/v1:RestrictedExportConfig": {
      "description": "Restricted export config, used to configure restricted export on linked dataset.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. If true, enable restricted export."
        },
        "restrictQueryResult": {
          "type": "boolean",
          "description": "Optional. If true, restrict export of query result derived from restricted linked dataset table."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:RestrictedExportConfigResponse": {
      "description": "Restricted export config, used to configure restricted export on linked dataset.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. If true, enable restricted export."
        },
        "restrictDirectTableAccess": {
          "type": "boolean",
          "description": "If true, restrict direct table access(read api/tabledata.list) on linked table."
        },
        "restrictQueryResult": {
          "type": "boolean",
          "description": "Optional. If true, restrict export of query result derived from restricted linked dataset table."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "restrictDirectTableAccess",
        "restrictQueryResult"
      ]
    },
    "google-native:analyticshub/v1:SharingEnvironmentConfig": {
      "description": "Sharing environment is a behavior model for sharing data within a data exchange. This option is configurable for a data exchange.",
      "properties": {
        "dcrExchangeConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:DcrExchangeConfig",
          "description": "Data Clean Room (DCR), used for privacy-safe and secured data sharing."
        },
        "defaultExchangeConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:DefaultExchangeConfig",
          "description": "Default Analytics Hub data exchange, used for secured data sharing."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1:SharingEnvironmentConfigResponse": {
      "description": "Sharing environment is a behavior model for sharing data within a data exchange. This option is configurable for a data exchange.",
      "properties": {
        "dcrExchangeConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:DcrExchangeConfigResponse",
          "description": "Data Clean Room (DCR), used for privacy-safe and secured data sharing."
        },
        "defaultExchangeConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:DefaultExchangeConfigResponse",
          "description": "Default Analytics Hub data exchange, used for secured data sharing."
        }
      },
      "type": "object",
      "required": [
        "dcrExchangeConfig",
        "defaultExchangeConfig"
      ]
    },
    "google-native:analyticshub/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:analyticshub/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:analyticshub/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:analyticshub/v1beta1:BigQueryDatasetSource": {
      "description": "A reference to a shared dataset. It is an existing BigQuery dataset with a collection of objects such as tables and views that you want to share with subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a linked dataset in the subscriber's project. A Linked dataset is an opaque, read-only BigQuery dataset that serves as a _symbolic link_ to a shared dataset.",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "Resource name of the dataset source for this listing. e.g. `projects/myproject/datasets/123`"
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1beta1:BigQueryDatasetSourceResponse": {
      "description": "A reference to a shared dataset. It is an existing BigQuery dataset with a collection of objects such as tables and views that you want to share with subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a linked dataset in the subscriber's project. A Linked dataset is an opaque, read-only BigQuery dataset that serves as a _symbolic link_ to a shared dataset.",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "Resource name of the dataset source for this listing. e.g. `projects/myproject/datasets/123`"
        }
      },
      "type": "object",
      "required": [
        "dataset"
      ]
    },
    "google-native:analyticshub/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:analyticshub/v1beta1:DataProvider": {
      "description": "Contains details of the data provider.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the data provider."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the data provider. Max Length: 1000 bytes."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1beta1:DataProviderResponse": {
      "description": "Contains details of the data provider.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the data provider."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the data provider. Max Length: 1000 bytes."
        }
      },
      "type": "object",
      "required": [
        "name",
        "primaryContact"
      ]
    },
    "google-native:analyticshub/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:analyticshub/v1beta1:ListingCategoriesItem": {
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "CategoryOthers",
          "value": "CATEGORY_OTHERS"
        },
        {
          "name": "CategoryAdvertisingAndMarketing",
          "value": "CATEGORY_ADVERTISING_AND_MARKETING"
        },
        {
          "name": "CategoryCommerce",
          "value": "CATEGORY_COMMERCE"
        },
        {
          "name": "CategoryClimateAndEnvironment",
          "value": "CATEGORY_CLIMATE_AND_ENVIRONMENT"
        },
        {
          "name": "CategoryDemographics",
          "value": "CATEGORY_DEMOGRAPHICS"
        },
        {
          "name": "CategoryEconomics",
          "value": "CATEGORY_ECONOMICS"
        },
        {
          "name": "CategoryEducation",
          "value": "CATEGORY_EDUCATION"
        },
        {
          "name": "CategoryEnergy",
          "value": "CATEGORY_ENERGY"
        },
        {
          "name": "CategoryFinancial",
          "value": "CATEGORY_FINANCIAL"
        },
        {
          "name": "CategoryGaming",
          "value": "CATEGORY_GAMING"
        },
        {
          "name": "CategoryGeospatial",
          "value": "CATEGORY_GEOSPATIAL"
        },
        {
          "name": "CategoryHealthcareAndLifeScience",
          "value": "CATEGORY_HEALTHCARE_AND_LIFE_SCIENCE"
        },
        {
          "name": "CategoryMedia",
          "value": "CATEGORY_MEDIA"
        },
        {
          "name": "CategoryPublicSector",
          "value": "CATEGORY_PUBLIC_SECTOR"
        },
        {
          "name": "CategoryRetail",
          "value": "CATEGORY_RETAIL"
        },
        {
          "name": "CategorySports",
          "value": "CATEGORY_SPORTS"
        },
        {
          "name": "CategoryScienceAndResearch",
          "value": "CATEGORY_SCIENCE_AND_RESEARCH"
        },
        {
          "name": "CategoryTransportationAndLogistics",
          "value": "CATEGORY_TRANSPORTATION_AND_LOGISTICS"
        },
        {
          "name": "CategoryTravelAndTourism",
          "value": "CATEGORY_TRAVEL_AND_TOURISM"
        }
      ]
    },
    "google-native:analyticshub/v1beta1:Publisher": {
      "description": "Contains details of the listing publisher.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the listing publisher."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the listing publisher. Max Length: 1000 bytes."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1beta1:PublisherResponse": {
      "description": "Contains details of the listing publisher.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the listing publisher."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the listing publisher. Max Length: 1000 bytes."
        }
      },
      "type": "object",
      "required": [
        "name",
        "primaryContact"
      ]
    },
    "google-native:analyticshub/v1beta1:RestrictedExportConfig": {
      "description": "Restricted export config, used to configure restricted export on linked dataset.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. If true, enable restricted export."
        },
        "restrictQueryResult": {
          "type": "boolean",
          "description": "Optional. If true, restrict export of query result derived from restricted linked dataset table."
        }
      },
      "type": "object"
    },
    "google-native:analyticshub/v1beta1:RestrictedExportConfigResponse": {
      "description": "Restricted export config, used to configure restricted export on linked dataset.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. If true, enable restricted export."
        },
        "restrictDirectTableAccess": {
          "type": "boolean",
          "description": "If true, restrict direct table access(read api/tabledata.list) on linked table."
        },
        "restrictQueryResult": {
          "type": "boolean",
          "description": "Optional. If true, restrict export of query result derived from restricted linked dataset table."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "restrictDirectTableAccess",
        "restrictQueryResult"
      ]
    },
    "google-native:apigateway/v1:ApigatewayApiConfigFile": {
      "description": "A lightweight description of a file.",
      "properties": {
        "contents": {
          "type": "string",
          "description": "The bytes that constitute the file."
        },
        "path": {
          "type": "string",
          "description": "The file path (full or relative path). This is typically the path of the file when it is uploaded."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1:ApigatewayApiConfigFileResponse": {
      "description": "A lightweight description of a file.",
      "properties": {
        "contents": {
          "type": "string",
          "description": "The bytes that constitute the file."
        },
        "path": {
          "type": "string",
          "description": "The file path (full or relative path). This is typically the path of the file when it is uploaded."
        }
      },
      "type": "object",
      "required": [
        "contents",
        "path"
      ]
    },
    "google-native:apigateway/v1:ApigatewayApiConfigGrpcServiceDefinition": {
      "description": "A gRPC service definition.",
      "properties": {
        "fileDescriptorSet": {
          "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFile",
          "description": "Input only. File descriptor set, generated by protoc. To 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. $ protoc --include_imports --include_source_info test.proto -o out.pb"
        },
        "source": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFile"
          },
          "description": "Optional. 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 file_descriptor_set."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1:ApigatewayApiConfigGrpcServiceDefinitionResponse": {
      "description": "A gRPC service definition.",
      "properties": {
        "fileDescriptorSet": {
          "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFileResponse",
          "description": "Input only. File descriptor set, generated by protoc. To 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. $ protoc --include_imports --include_source_info test.proto -o out.pb"
        },
        "source": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFileResponse"
          },
          "description": "Optional. 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 file_descriptor_set."
        }
      },
      "type": "object",
      "required": [
        "fileDescriptorSet",
        "source"
      ]
    },
    "google-native:apigateway/v1:ApigatewayApiConfigOpenApiDocument": {
      "description": "An OpenAPI Specification Document describing an API.",
      "properties": {
        "document": {
          "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFile",
          "description": "The OpenAPI Specification document file."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1:ApigatewayApiConfigOpenApiDocumentResponse": {
      "description": "An OpenAPI Specification Document describing an API.",
      "properties": {
        "document": {
          "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFileResponse",
          "description": "The OpenAPI Specification document file."
        }
      },
      "type": "object",
      "required": [
        "document"
      ]
    },
    "google-native:apigateway/v1:ApigatewayAuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1:ApigatewayAuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:apigateway/v1:ApigatewayAuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1:ApigatewayAuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:apigateway/v1:ApigatewayAuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:apigateway/v1:ApigatewayBinding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1:ApigatewayBindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:apigateway/v1:ApigatewayExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1:ApigatewayExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayApiConfigFile": {
      "description": "A lightweight description of a file.",
      "properties": {
        "contents": {
          "type": "string",
          "description": "The bytes that constitute the file."
        },
        "path": {
          "type": "string",
          "description": "The file path (full or relative path). This is typically the path of the file when it is uploaded."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1beta:ApigatewayApiConfigFileResponse": {
      "description": "A lightweight description of a file.",
      "properties": {
        "contents": {
          "type": "string",
          "description": "The bytes that constitute the file."
        },
        "path": {
          "type": "string",
          "description": "The file path (full or relative path). This is typically the path of the file when it is uploaded."
        }
      },
      "type": "object",
      "required": [
        "contents",
        "path"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayApiConfigGrpcServiceDefinition": {
      "description": "A gRPC service definition.",
      "properties": {
        "fileDescriptorSet": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFile",
          "description": "Input only. File descriptor set, generated by protoc. To 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. $ protoc --include_imports --include_source_info test.proto -o out.pb"
        },
        "source": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFile"
          },
          "description": "Optional. 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 file_descriptor_set."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1beta:ApigatewayApiConfigGrpcServiceDefinitionResponse": {
      "description": "A gRPC service definition.",
      "properties": {
        "fileDescriptorSet": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFileResponse",
          "description": "Input only. File descriptor set, generated by protoc. To 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. $ protoc --include_imports --include_source_info test.proto -o out.pb"
        },
        "source": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFileResponse"
          },
          "description": "Optional. 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 file_descriptor_set."
        }
      },
      "type": "object",
      "required": [
        "fileDescriptorSet",
        "source"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayApiConfigOpenApiDocument": {
      "description": "An OpenAPI Specification Document describing an API.",
      "properties": {
        "document": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFile",
          "description": "The OpenAPI Specification document file."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1beta:ApigatewayApiConfigOpenApiDocumentResponse": {
      "description": "An OpenAPI Specification Document describing an API.",
      "properties": {
        "document": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFileResponse",
          "description": "The OpenAPI Specification document file."
        }
      },
      "type": "object",
      "required": [
        "document"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayAuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1beta:ApigatewayAuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayAuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1beta:ApigatewayAuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayAuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayBackendConfig": {
      "description": "Configuration for all backends.",
      "properties": {
        "googleServiceAccount": {
          "type": "string",
          "description": "Google Cloud IAM service account used to sign OIDC tokens for backends that have authentication configured (https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services.configs#backend). This may either be the Service Account's email (i.e. \"{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com\") or its full resource name (i.e. \"projects/{PROJECT}/accounts/{UNIQUE_ID}\"). This is most often used when the backend is a GCP resource such as a Cloud Run Service or an IAP-secured service. Note that this token is always sent as an authorization header bearer token. The audience of the OIDC token is configured in the associated Service Config in the BackendRule option (https://github.com/googleapis/googleapis/blob/master/google/api/backend.proto#L125)."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1beta:ApigatewayBackendConfigResponse": {
      "description": "Configuration for all backends.",
      "properties": {
        "googleServiceAccount": {
          "type": "string",
          "description": "Google Cloud IAM service account used to sign OIDC tokens for backends that have authentication configured (https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services.configs#backend). This may either be the Service Account's email (i.e. \"{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com\") or its full resource name (i.e. \"projects/{PROJECT}/accounts/{UNIQUE_ID}\"). This is most often used when the backend is a GCP resource such as a Cloud Run Service or an IAP-secured service. Note that this token is always sent as an authorization header bearer token. The audience of the OIDC token is configured in the associated Service Config in the BackendRule option (https://github.com/googleapis/googleapis/blob/master/google/api/backend.proto#L125)."
        }
      },
      "type": "object",
      "required": [
        "googleServiceAccount"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayBinding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1beta:ApigatewayBindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:apigateway/v1beta:ApigatewayExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayGatewayConfig": {
      "description": "Configuration settings for Gateways.",
      "properties": {
        "backendConfig": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBackendConfig",
          "description": "Backend settings that are applied to all backends of the Gateway."
        }
      },
      "type": "object",
      "required": [
        "backendConfig"
      ]
    },
    "google-native:apigateway/v1beta:ApigatewayGatewayConfigResponse": {
      "description": "Configuration settings for Gateways.",
      "properties": {
        "backendConfig": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBackendConfigResponse",
          "description": "Backend settings that are applied to all backends of the Gateway."
        }
      },
      "type": "object",
      "required": [
        "backendConfig"
      ]
    },
    "google-native:apigee/v1:ApiProductQuotaCounterScope": {
      "description": "Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.",
      "type": "string",
      "enum": [
        {
          "name": "QuotaCounterScopeUnspecified",
          "description": "When quota is not explicitly defined for each operation(REST/GraphQL), the limits set at product level will be used as a local counter for quota evaluation by all the operations, independent of proxy association.",
          "value": "QUOTA_COUNTER_SCOPE_UNSPECIFIED"
        },
        {
          "name": "Proxy",
          "description": "When quota is not explicitly defined for each operation(REST/GraphQL), set at product level will be used as a global counter for quota evaluation by all the operations associated with a particular proxy.",
          "value": "PROXY"
        },
        {
          "name": "Operation",
          "description": "When quota is not explicitly defined for each operation(REST/GraphQL), the limits set at product level will be used as a local counter for quota evaluation by all the operations, independent of proxy association. This behavior mimics the same as QUOTA_COUNTER_SCOPE_UNSPECIFIED.",
          "value": "OPERATION"
        }
      ]
    },
    "google-native:apigee/v1:DataCollectorType": {
      "description": "Immutable. The type of data this data collector will collect.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "For future compatibility.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Integer",
          "description": "For integer values.",
          "value": "INTEGER"
        },
        {
          "name": "Float",
          "description": "For float values.",
          "value": "FLOAT"
        },
        {
          "name": "String",
          "description": "For string values.",
          "value": "STRING"
        },
        {
          "name": "Boolean",
          "description": "For boolean values.",
          "value": "BOOLEAN"
        },
        {
          "name": "Datetime",
          "description": "For datetime values.",
          "value": "DATETIME"
        }
      ]
    },
    "google-native:apigee/v1:EnvironmentApiProxyType": {
      "description": "Optional. API Proxy type supported by the environment. The type can be set when creating the Environment and cannot be changed.",
      "type": "string",
      "enum": [
        {
          "name": "ApiProxyTypeUnspecified",
          "description": "API proxy type not specified.",
          "value": "API_PROXY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Programmable",
          "description": "Programmable API Proxies enable you to develop APIs with highly flexible behavior using bundled policy configuration and one or more programming languages to describe complex sequential and/or conditional flows of logic.",
          "value": "PROGRAMMABLE"
        },
        {
          "name": "Configurable",
          "description": "Configurable API Proxies enable you to develop efficient APIs using simple configuration while complex execution control flow logic is handled by Apigee. This type only works with the ARCHIVE deployment type and cannot be combined with the PROXY deployment type.",
          "value": "CONFIGURABLE"
        }
      ]
    },
    "google-native:apigee/v1:EnvironmentDeploymentType": {
      "description": "Optional. Deployment type supported by the environment. The deployment type can be set when creating the environment and cannot be changed. When you enable archive deployment, you will be **prevented from performing** a [subset of actions](/apigee/docs/api-platform/local-development/overview#prevented-actions) within the environment, including: * Managing the deployment of API proxy or shared flow revisions * Creating, updating, or deleting resource files * Creating, updating, or deleting target servers",
      "type": "string",
      "enum": [
        {
          "name": "DeploymentTypeUnspecified",
          "description": "Deployment type not specified.",
          "value": "DEPLOYMENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Proxy",
          "description": "Proxy deployment enables you to develop and deploy API proxies using Apigee on Google Cloud. This cannot currently be combined with the CONFIGURABLE API proxy type.",
          "value": "PROXY"
        },
        {
          "name": "Archive",
          "description": "Archive deployment enables you to develop API proxies locally then deploy an archive of your API proxy configuration to an environment in Apigee on Google Cloud. You will be prevented from performing a [subset of actions](/apigee/docs/api-platform/local-development/overview#prevented-actions) within the environment.",
          "value": "ARCHIVE"
        }
      ]
    },
    "google-native:apigee/v1:EnvironmentType": {
      "description": "Optional. EnvironmentType selected for the environment.",
      "type": "string",
      "enum": [
        {
          "name": "EnvironmentTypeUnspecified",
          "description": "Environment type not specified.",
          "value": "ENVIRONMENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Base",
          "description": "Base environment has limited capacity and capabilities and are usually used when you are getting started with Apigee or while experimenting. Refer to Apigee's public documentation for more details.",
          "value": "BASE"
        },
        {
          "name": "Intermediate",
          "description": "This is the default type and it supports API management features and higher capacity than Base environment. Refer to Apigee's public documentation for more details.",
          "value": "INTERMEDIATE"
        },
        {
          "name": "Comprehensive",
          "description": "Comprehensive environment supports advanced capabilites and even higher capacity than Intermediate environment. Refer to Apigee's public documentation for more details.",
          "value": "COMPREHENSIVE"
        }
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1APIProductAssociationResponse": {
      "description": "APIProductAssociation has the API product and its administrative state association.",
      "properties": {
        "apiproduct": {
          "type": "string",
          "description": "API product to be associated with the credential."
        },
        "status": {
          "type": "string",
          "description": "The API product credential associated status. Valid values are `approved` or `revoked`."
        }
      },
      "type": "object",
      "required": [
        "apiproduct",
        "status"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1AddonsConfig": {
      "description": "Add-on configurations for the Apigee organization.",
      "properties": {
        "advancedApiOpsConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AdvancedApiOpsConfig",
          "description": "Configuration for the Advanced API Ops add-on."
        },
        "analyticsConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AnalyticsConfig",
          "description": "Configuration for the Analytics add-on."
        },
        "apiSecurityConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ApiSecurityConfig",
          "description": "Configuration for the API Security add-on."
        },
        "connectorsPlatformConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ConnectorsPlatformConfig",
          "description": "Configuration for the Connectors Platform add-on."
        },
        "integrationConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1IntegrationConfig",
          "description": "Configuration for the Integration add-on."
        },
        "monetizationConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1MonetizationConfig",
          "description": "Configuration for the Monetization add-on."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1AddonsConfigResponse": {
      "description": "Add-on configurations for the Apigee organization.",
      "properties": {
        "advancedApiOpsConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AdvancedApiOpsConfigResponse",
          "description": "Configuration for the Advanced API Ops add-on."
        },
        "analyticsConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AnalyticsConfigResponse",
          "description": "Configuration for the Analytics add-on."
        },
        "apiSecurityConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ApiSecurityConfigResponse",
          "description": "Configuration for the API Security add-on."
        },
        "connectorsPlatformConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ConnectorsPlatformConfigResponse",
          "description": "Configuration for the Connectors Platform add-on."
        },
        "integrationConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1IntegrationConfigResponse",
          "description": "Configuration for the Integration add-on."
        },
        "monetizationConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1MonetizationConfigResponse",
          "description": "Configuration for the Monetization add-on."
        }
      },
      "type": "object",
      "required": [
        "advancedApiOpsConfig",
        "analyticsConfig",
        "apiSecurityConfig",
        "connectorsPlatformConfig",
        "integrationConfig",
        "monetizationConfig"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1AdvancedApiOpsConfig": {
      "description": "Configuration for the Advanced API Ops add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Advanced API Ops add-on is enabled."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1AdvancedApiOpsConfigResponse": {
      "description": "Configuration for the Advanced API Ops add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Advanced API Ops add-on is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1AnalyticsConfig": {
      "description": "Configuration for the Analytics add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Analytics add-on is enabled."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1AnalyticsConfigResponse": {
      "description": "Configuration for the Analytics add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Analytics add-on is enabled."
        },
        "expireTimeMillis": {
          "type": "string",
          "description": "Time at which the Analytics add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire."
        },
        "state": {
          "type": "string",
          "description": "The state of the Analytics add-on."
        },
        "updateTime": {
          "type": "string",
          "description": "The latest update time."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "expireTimeMillis",
        "state",
        "updateTime"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ApiCategoryResponse": {
      "description": "`ApiCategory` represents an API category. [Catalog items](/apigee/docs/reference/apis/apigee/rest/v1/organizations.sites.apidocs) can be tagged with API categories; users viewing the API catalog in the portal will have the option to browse the catalog by category.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the category."
        },
        "siteId": {
          "type": "string",
          "description": "Name of the portal."
        },
        "updateTime": {
          "type": "string",
          "description": "Time the category was last modified in milliseconds since epoch."
        }
      },
      "type": "object",
      "required": [
        "name",
        "siteId",
        "updateTime"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ApiProductRefResponse": {
      "properties": {
        "apiproduct": {
          "type": "string",
          "description": "Name of the API product."
        },
        "status": {
          "type": "string",
          "description": "Status of the API product. Valid values are `approved` or `revoked`."
        }
      },
      "type": "object",
      "required": [
        "apiproduct",
        "status"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ApiSecurityConfig": {
      "description": "Configurations of the API Security add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the API security add-on is enabled."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ApiSecurityConfigResponse": {
      "description": "Configurations of the API Security add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the API security add-on is enabled."
        },
        "expiresAt": {
          "type": "string",
          "description": "Time at which the API Security add-on expires in in milliseconds since epoch. If unspecified, the add-on will never expire."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "expiresAt"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1AsyncQueryResultResponse": {
      "properties": {
        "expires": {
          "type": "string",
          "description": "Query result will be unaccessable after this time."
        },
        "self": {
          "type": "string",
          "description": "Self link of the query results. Example: `/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result` or following format if query is running at host level: `/organizations/myorg/hostQueries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result`"
        }
      },
      "type": "object",
      "required": [
        "expires",
        "self"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1Attribute": {
      "description": "Key-value pair to store extra metadata.",
      "properties": {
        "name": {
          "type": "string",
          "description": "API key of the attribute."
        },
        "value": {
          "type": "string",
          "description": "Value of the attribute."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1AttributeResponse": {
      "description": "Key-value pair to store extra metadata.",
      "properties": {
        "name": {
          "type": "string",
          "description": "API key of the attribute."
        },
        "value": {
          "type": "string",
          "description": "Value of the attribute."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1CanaryEvaluationMetricLabels": {
      "description": "Labels that can be used to filter Apigee metrics.",
      "properties": {
        "env": {
          "type": "string",
          "description": "The environment ID associated with the metrics."
        },
        "instanceId": {
          "type": "string",
          "description": "The instance ID associated with the metrics. In Apigee Hybrid, the value is configured during installation."
        },
        "location": {
          "type": "string",
          "description": "The location associated with the metrics."
        }
      },
      "type": "object",
      "required": [
        "instanceId",
        "location"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1CanaryEvaluationMetricLabelsResponse": {
      "description": "Labels that can be used to filter Apigee metrics.",
      "properties": {
        "env": {
          "type": "string",
          "description": "The environment ID associated with the metrics."
        },
        "instanceId": {
          "type": "string",
          "description": "The instance ID associated with the metrics. In Apigee Hybrid, the value is configured during installation."
        },
        "location": {
          "type": "string",
          "description": "The location associated with the metrics."
        }
      },
      "type": "object",
      "required": [
        "env",
        "instanceId",
        "location"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1CertInfoResponse": {
      "description": "X.509 certificate as defined in RFC 5280.",
      "properties": {
        "basicConstraints": {
          "type": "string",
          "description": "X.509 basic constraints extension."
        },
        "expiryDate": {
          "type": "string",
          "description": "X.509 `notAfter` validity period in milliseconds since epoch."
        },
        "isValid": {
          "type": "string",
          "description": "Flag that specifies whether the certificate is valid. Flag is set to `Yes` if the certificate is valid, `No` if expired, or `Not yet` if not yet valid."
        },
        "issuer": {
          "type": "string",
          "description": "X.509 issuer."
        },
        "publicKey": {
          "type": "string",
          "description": "Public key component of the X.509 subject public key info."
        },
        "serialNumber": {
          "type": "string",
          "description": "X.509 serial number."
        },
        "sigAlgName": {
          "type": "string",
          "description": "X.509 signatureAlgorithm."
        },
        "subject": {
          "type": "string",
          "description": "X.509 subject."
        },
        "subjectAlternativeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "X.509 subject alternative names (SANs) extension."
        },
        "validFrom": {
          "type": "string",
          "description": "X.509 `notBefore` validity period in milliseconds since epoch."
        },
        "version": {
          "type": "integer",
          "description": "X.509 version."
        }
      },
      "type": "object",
      "required": [
        "basicConstraints",
        "expiryDate",
        "isValid",
        "issuer",
        "publicKey",
        "serialNumber",
        "sigAlgName",
        "subject",
        "subjectAlternativeNames",
        "validFrom",
        "version"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1CertificateResponse": {
      "properties": {
        "certInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CertInfoResponse"
          },
          "description": "Chain of certificates under this name."
        }
      },
      "type": "object",
      "required": [
        "certInfo"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ConnectorsPlatformConfig": {
      "description": "Configuration for the Connectors Platform add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Connectors Platform add-on is enabled."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ConnectorsPlatformConfigResponse": {
      "description": "Configuration for the Connectors Platform add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Connectors Platform add-on is enabled."
        },
        "expiresAt": {
          "type": "string",
          "description": "Time at which the Connectors Platform add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "expiresAt"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1CredentialResponse": {
      "properties": {
        "apiProducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ApiProductRefResponse"
          },
          "description": "List of API products this credential can be used for."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "List of attributes associated with this credential."
        },
        "consumerKey": {
          "type": "string",
          "description": "Consumer key."
        },
        "consumerSecret": {
          "type": "string",
          "description": "Secret key."
        },
        "expiresAt": {
          "type": "string",
          "description": "Time the credential will expire in milliseconds since epoch."
        },
        "issuedAt": {
          "type": "string",
          "description": "Time the credential was issued in milliseconds since epoch."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of scopes to apply to the app. Specified scopes must already exist on the API product that you associate with the app."
        },
        "status": {
          "type": "string",
          "description": "Status of the credential. Valid values include `approved` or `revoked`."
        }
      },
      "type": "object",
      "required": [
        "apiProducts",
        "attributes",
        "consumerKey",
        "consumerSecret",
        "expiresAt",
        "issuedAt",
        "scopes",
        "status"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1CustomReportMetric": {
      "description": "This encapsulates a metric property of the form sum(message_count) where name is message_count and function is sum",
      "properties": {
        "function": {
          "type": "string",
          "description": "aggregate function"
        },
        "name": {
          "type": "string",
          "description": "name of the metric"
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1CustomReportMetricResponse": {
      "description": "This encapsulates a metric property of the form sum(message_count) where name is message_count and function is sum",
      "properties": {
        "function": {
          "type": "string",
          "description": "aggregate function"
        },
        "name": {
          "type": "string",
          "description": "name of the metric"
        }
      },
      "type": "object",
      "required": [
        "function",
        "name"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1DatastoreConfig": {
      "description": "Configuration detail for datastore",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Name of the Cloud Storage bucket. Required for `gcs` target_type."
        },
        "datasetName": {
          "type": "string",
          "description": "BigQuery dataset name Required for `bigquery` target_type."
        },
        "path": {
          "type": "string",
          "description": "Path of Cloud Storage bucket Required for `gcs` target_type."
        },
        "project": {
          "type": "string",
          "description": "GCP project in which the datastore exists"
        },
        "tablePrefix": {
          "type": "string",
          "description": "Prefix of BigQuery table Required for `bigquery` target_type."
        }
      },
      "type": "object",
      "required": [
        "project"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1DatastoreConfigResponse": {
      "description": "Configuration detail for datastore",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Name of the Cloud Storage bucket. Required for `gcs` target_type."
        },
        "datasetName": {
          "type": "string",
          "description": "BigQuery dataset name Required for `bigquery` target_type."
        },
        "path": {
          "type": "string",
          "description": "Path of Cloud Storage bucket Required for `gcs` target_type."
        },
        "project": {
          "type": "string",
          "description": "GCP project in which the datastore exists"
        },
        "tablePrefix": {
          "type": "string",
          "description": "Prefix of BigQuery table Required for `bigquery` target_type."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "datasetName",
        "path",
        "project",
        "tablePrefix"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1DateRange": {
      "description": "Date range of the data to export.",
      "properties": {
        "end": {
          "type": "string",
          "description": "End date (exclusive) of the data to export in the format `yyyy-mm-dd`. The date range ends at 00:00:00 UTC on the end date- which will not be in the output."
        },
        "start": {
          "type": "string",
          "description": "Start date of the data to export in the format `yyyy-mm-dd`. The date range begins at 00:00:00 UTC on the start date."
        }
      },
      "type": "object",
      "required": [
        "end",
        "start"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1EntityMetadataResponse": {
      "description": "Metadata common to many entities in this API.",
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "Time at which the API proxy was created, in milliseconds since epoch."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time at which the API proxy was most recently modified, in milliseconds since epoch."
        },
        "subType": {
          "type": "string",
          "description": "The type of entity described"
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "lastModifiedAt",
        "subType"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GraphQLOperation": {
      "description": "Represents the pairing of GraphQL operation types and the GraphQL operation name.",
      "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."
        },
        "operationTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "GraphQL operation types. Valid values include `query` or `mutation`. **Note**: Apigee does not currently support `subscription` types."
        }
      },
      "type": "object",
      "required": [
        "operationTypes"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GraphQLOperationConfig": {
      "description": "Binds the resources in a proxy or remote service with the GraphQL operation and its associated quota enforcement.",
      "properties": {
        "apiSource": {
          "type": "string",
          "description": "Name of the API proxy endpoint or remote service with which the GraphQL operation and quota are associated."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "Custom attributes associated with the operation."
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GraphQLOperation"
          },
          "description": "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. **Note**: Currently, you can specify only a single GraphQLOperation. Specifying more than one will cause the operation to fail."
        },
        "quota": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Quota",
          "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done."
        }
      },
      "type": "object",
      "required": [
        "apiSource",
        "operations"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GraphQLOperationConfigResponse": {
      "description": "Binds the resources in a proxy or remote service with the GraphQL operation and its associated quota enforcement.",
      "properties": {
        "apiSource": {
          "type": "string",
          "description": "Name of the API proxy endpoint or remote service with which the GraphQL operation and quota are associated."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "Custom attributes associated with the operation."
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GraphQLOperationResponse"
          },
          "description": "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. **Note**: Currently, you can specify only a single GraphQLOperation. Specifying more than one will cause the operation to fail."
        },
        "quota": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QuotaResponse",
          "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done."
        }
      },
      "type": "object",
      "required": [
        "apiSource",
        "attributes",
        "operations",
        "quota"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GraphQLOperationGroup": {
      "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.",
      "properties": {
        "operationConfigType": {
          "type": "string",
          "description": "Flag that specifies 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."
        },
        "operationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GraphQLOperationConfig"
          },
          "description": "List of operation configurations for either Apigee API proxies or other remote services that are associated with this API product."
        }
      },
      "type": "object",
      "required": [
        "operationConfigs"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GraphQLOperationGroupResponse": {
      "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.",
      "properties": {
        "operationConfigType": {
          "type": "string",
          "description": "Flag that specifies 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."
        },
        "operationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GraphQLOperationConfigResponse"
          },
          "description": "List of operation configurations for either Apigee API proxies or other remote services that are associated with this API product."
        }
      },
      "type": "object",
      "required": [
        "operationConfigType",
        "operationConfigs"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GraphQLOperationResponse": {
      "description": "Represents the pairing of GraphQL operation types and the GraphQL operation name.",
      "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."
        },
        "operationTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "GraphQL operation types. Valid values include `query` or `mutation`. **Note**: Apigee does not currently support `subscription` types."
        }
      },
      "type": "object",
      "required": [
        "operation",
        "operationTypes"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GrpcOperationConfig": {
      "description": "Binds the resources in a proxy or remote service with the gRPC operation and its associated quota enforcement.",
      "properties": {
        "apiSource": {
          "type": "string",
          "description": "Name of the API proxy with which the gRPC operation and quota are associated."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "Custom attributes associated with the operation."
        },
        "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. Example: 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\"]."
        },
        "quota": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Quota",
          "description": "Quota parameters to be enforced for the methods and API source combination. If none are specified, quota enforcement will not be done."
        },
        "service": {
          "type": "string",
          "description": "gRPC Service name associated to be associated with the API proxy, on which quota rules can be applied upon."
        }
      },
      "type": "object",
      "required": [
        "apiSource",
        "service"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GrpcOperationConfigResponse": {
      "description": "Binds the resources in a proxy or remote service with the gRPC operation and its associated quota enforcement.",
      "properties": {
        "apiSource": {
          "type": "string",
          "description": "Name of the API proxy with which the gRPC operation and quota are associated."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "Custom attributes associated with the operation."
        },
        "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. Example: 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\"]."
        },
        "quota": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QuotaResponse",
          "description": "Quota parameters to be enforced for the methods and API source combination. If none are specified, quota enforcement will not be done."
        },
        "service": {
          "type": "string",
          "description": "gRPC Service name associated to be associated with the API proxy, on which quota rules can be applied upon."
        }
      },
      "type": "object",
      "required": [
        "apiSource",
        "attributes",
        "methods",
        "quota",
        "service"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GrpcOperationGroup": {
      "description": "List of gRPC operation configuration details associated with Apigee API proxies.",
      "properties": {
        "operationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GrpcOperationConfig"
          },
          "description": "List of operation configurations for either Apigee API proxies that are associated with this API product."
        }
      },
      "type": "object",
      "required": [
        "operationConfigs"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1GrpcOperationGroupResponse": {
      "description": "List of gRPC operation configuration details associated with Apigee API proxies.",
      "properties": {
        "operationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GrpcOperationConfigResponse"
          },
          "description": "List of operation configurations for either Apigee API proxies that are associated with this API product."
        }
      },
      "type": "object",
      "required": [
        "operationConfigs"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1IntegrationConfig": {
      "description": "Configuration for the Integration add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Integration add-on is enabled."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1IntegrationConfigResponse": {
      "description": "Configuration for the Integration add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Integration add-on is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1MonetizationConfig": {
      "description": "Configuration for the Monetization add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Monetization add-on is enabled."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1MonetizationConfigResponse": {
      "description": "Configuration for the Monetization add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Flag that specifies whether the Monetization add-on is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1NodeConfig": {
      "description": "NodeConfig for setting the min/max number of nodes associated with the environment.",
      "properties": {
        "maxNodeCount": {
          "type": "string",
          "description": "Optional. The maximum total number of gateway nodes that the is reserved for all instances that has the specified environment. If not specified, the default is determined by the recommended maximum number of nodes for that gateway."
        },
        "minNodeCount": {
          "type": "string",
          "description": "Optional. The minimum total number of gateway nodes that the is reserved for all instances that has the specified environment. If not specified, the default is determined by the recommended minimum number of nodes for that gateway."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1NodeConfigResponse": {
      "description": "NodeConfig for setting the min/max number of nodes associated with the environment.",
      "properties": {
        "currentAggregateNodeCount": {
          "type": "string",
          "description": "The current total number of gateway nodes that each environment currently has across all instances."
        },
        "maxNodeCount": {
          "type": "string",
          "description": "Optional. The maximum total number of gateway nodes that the is reserved for all instances that has the specified environment. If not specified, the default is determined by the recommended maximum number of nodes for that gateway."
        },
        "minNodeCount": {
          "type": "string",
          "description": "Optional. The minimum total number of gateway nodes that the is reserved for all instances that has the specified environment. If not specified, the default is determined by the recommended minimum number of nodes for that gateway."
        }
      },
      "type": "object",
      "required": [
        "currentAggregateNodeCount",
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1Operation": {
      "description": "Represents the pairing of REST resource path and the actions (verbs) allowed on the resource path.",
      "properties": {
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "methods refers to the REST verbs as in https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html. When none specified, all verb types are allowed."
        },
        "resource": {
          "type": "string",
          "description": "REST resource path associated with the API proxy or remote service."
        }
      },
      "type": "object",
      "required": [
        "resource"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1OperationConfig": {
      "description": "Binds the resources in an API proxy or remote service with the allowed REST methods and associated quota enforcement.",
      "properties": {
        "apiSource": {
          "type": "string",
          "description": "Name of the API proxy or remote service with which the resources, methods, and quota are associated."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "Custom attributes associated with the operation."
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Operation"
          },
          "description": "List of resource/method pairs for the API proxy or remote service to which quota will applied. **Note**: Currently, you can specify only a single resource/method pair. The call will fail if more than one resource/method pair is provided."
        },
        "quota": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Quota",
          "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done."
        }
      },
      "type": "object",
      "required": [
        "apiSource"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1OperationConfigResponse": {
      "description": "Binds the resources in an API proxy or remote service with the allowed REST methods and associated quota enforcement.",
      "properties": {
        "apiSource": {
          "type": "string",
          "description": "Name of the API proxy or remote service with which the resources, methods, and quota are associated."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "Custom attributes associated with the operation."
        },
        "operations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1OperationResponse"
          },
          "description": "List of resource/method pairs for the API proxy or remote service to which quota will applied. **Note**: Currently, you can specify only a single resource/method pair. The call will fail if more than one resource/method pair is provided."
        },
        "quota": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QuotaResponse",
          "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done."
        }
      },
      "type": "object",
      "required": [
        "apiSource",
        "attributes",
        "operations",
        "quota"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1OperationGroup": {
      "description": "List of operation configuration details associated with Apigee API proxies or remote services. Remote services are non-Apigee proxies, such as Istio-Envoy.",
      "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."
        },
        "operationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1OperationConfig"
          },
          "description": "List of operation configurations for either Apigee API proxies or other remote services that are associated with this API product."
        }
      },
      "type": "object",
      "required": [
        "operationConfigs"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1OperationGroupResponse": {
      "description": "List of operation configuration details associated with Apigee API proxies or remote services. Remote services are non-Apigee proxies, such as Istio-Envoy.",
      "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."
        },
        "operationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1OperationConfigResponse"
          },
          "description": "List of operation configurations for either Apigee API proxies or other remote services that are associated with this API product."
        }
      },
      "type": "object",
      "required": [
        "operationConfigType",
        "operationConfigs"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1OperationResponse": {
      "description": "Represents the pairing of REST resource path and the actions (verbs) allowed on the resource path.",
      "properties": {
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "methods refers to the REST verbs as in https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html. When none specified, all verb types are allowed."
        },
        "resource": {
          "type": "string",
          "description": "REST resource path associated with the API proxy or remote service."
        }
      },
      "type": "object",
      "required": [
        "methods",
        "resource"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfig": {
      "description": "ProfileConfig defines a set of categories and policies which will be used to compute security score.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigCategory"
          },
          "description": "List of categories of profile config."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigAbuse": {
      "description": "Checks for abuse, which includes any requests sent to the API for purposes other than what it is intended for, such as high volumes of requests, data scraping, and abuse related to authorization.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigAbuseResponse": {
      "description": "Checks for abuse, which includes any requests sent to the API for purposes other than what it is intended for, such as high volumes of requests, data scraping, and abuse related to authorization.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigAuthorization": {
      "description": "By default, following policies will be included: - JWS - JWT - OAuth - BasicAuth - APIKey",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigAuthorizationResponse": {
      "description": "By default, following policies will be included: - JWS - JWT - OAuth - BasicAuth - APIKey",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigCORS": {
      "description": "Checks to see if you have CORS policy in place.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigCORSResponse": {
      "description": "Checks to see if you have CORS policy in place.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigCategory": {
      "description": "Advanced API Security provides security profile that scores the following categories.",
      "properties": {
        "abuse": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigAbuse",
          "description": "Checks for abuse, which includes any requests sent to the API for purposes other than what it is intended for, such as high volumes of requests, data scraping, and abuse related to authorization."
        },
        "authorization": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigAuthorization",
          "description": "Checks to see if you have an authorization policy in place."
        },
        "cors": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigCORS",
          "description": "Checks to see if you have CORS policy in place."
        },
        "mediation": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigMediation",
          "description": "Checks to see if you have a mediation policy in place."
        },
        "mtls": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigMTLS",
          "description": "Checks to see if you have configured mTLS for the target server."
        },
        "threat": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigThreat",
          "description": "Checks to see if you have a threat protection policy in place."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigCategoryResponse": {
      "description": "Advanced API Security provides security profile that scores the following categories.",
      "properties": {
        "abuse": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigAbuseResponse",
          "description": "Checks for abuse, which includes any requests sent to the API for purposes other than what it is intended for, such as high volumes of requests, data scraping, and abuse related to authorization."
        },
        "authorization": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigAuthorizationResponse",
          "description": "Checks to see if you have an authorization policy in place."
        },
        "cors": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigCORSResponse",
          "description": "Checks to see if you have CORS policy in place."
        },
        "mediation": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigMediationResponse",
          "description": "Checks to see if you have a mediation policy in place."
        },
        "mtls": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigMTLSResponse",
          "description": "Checks to see if you have configured mTLS for the target server."
        },
        "threat": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigThreatResponse",
          "description": "Checks to see if you have a threat protection policy in place."
        }
      },
      "type": "object",
      "required": [
        "abuse",
        "authorization",
        "cors",
        "mediation",
        "mtls",
        "threat"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigMTLS": {
      "description": "Checks to see if you have configured mTLS for the target server.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigMTLSResponse": {
      "description": "Checks to see if you have configured mTLS for the target server.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigMediation": {
      "description": "By default, following policies will be included: - OASValidation - SOAPMessageValidation",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigMediationResponse": {
      "description": "By default, following policies will be included: - OASValidation - SOAPMessageValidation",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigResponse": {
      "description": "ProfileConfig defines a set of categories and policies which will be used to compute security score.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigCategoryResponse"
          },
          "description": "List of categories of profile config."
        }
      },
      "type": "object",
      "required": [
        "categories"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigThreat": {
      "description": "By default, following policies will be included: - XMLThreatProtection - JSONThreatProtection",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ProfileConfigThreatResponse": {
      "description": "By default, following policies will be included: - XMLThreatProtection - JSONThreatProtection",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1Properties": {
      "description": "Message for compatibility with legacy Edge specification for Java Properties object in JSON.",
      "properties": {
        "property": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Property"
          },
          "description": "List of all properties in the object"
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1PropertiesResponse": {
      "description": "Message for compatibility with legacy Edge specification for Java Properties object in JSON.",
      "properties": {
        "property": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1PropertyResponse"
          },
          "description": "List of all properties in the object"
        }
      },
      "type": "object",
      "required": [
        "property"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1Property": {
      "description": "A single property entry in the Properties message.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The property key"
        },
        "value": {
          "type": "string",
          "description": "The property value"
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1PropertyResponse": {
      "description": "A single property entry in the Properties message.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The property key"
        },
        "value": {
          "type": "string",
          "description": "The property value"
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1QueryMetadataResponse": {
      "properties": {
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Dimensions of the AsyncQuery."
        },
        "endTimestamp": {
          "type": "string",
          "description": "End timestamp of the query range."
        },
        "metrics": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Metrics of the AsyncQuery. Example: [\"name:message_count,func:sum,alias:sum_message_count\"]"
        },
        "outputFormat": {
          "type": "string",
          "description": "Output format."
        },
        "startTimestamp": {
          "type": "string",
          "description": "Start timestamp of the query range."
        },
        "timeUnit": {
          "type": "string",
          "description": "Query GroupBy time unit."
        }
      },
      "type": "object",
      "required": [
        "dimensions",
        "endTimestamp",
        "metrics",
        "outputFormat",
        "startTimestamp",
        "timeUnit"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1QueryMetric": {
      "description": "More info about Metric: https://docs.apigee.com/api-platform/analytics/analytics-reference#metrics",
      "properties": {
        "alias": {
          "type": "string",
          "description": "Alias for the metric. Alias will be used to replace metric name in query results."
        },
        "function": {
          "type": "string",
          "description": "Aggregation function: avg, min, max, or sum."
        },
        "name": {
          "type": "string",
          "description": "Metric name."
        },
        "operator": {
          "type": "string",
          "description": "One of `+`, `-`, `/`, `%`, `*`."
        },
        "value": {
          "type": "string",
          "description": "Operand value should be provided when operator is set."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1Quota": {
      "description": "Quota contains the essential parameters needed that can be applied on the resources, methods, API source combination associated with this API product. While Quota is optional, setting it prevents requests from exceeding the provisioned parameters.",
      "properties": {
        "interval": {
          "type": "string",
          "description": "Time interval over which the number of request messages is calculated."
        },
        "limit": {
          "type": "string",
          "description": "Upper limit allowed for the time interval and time unit specified. Requests exceeding this limit will be rejected."
        },
        "timeUnit": {
          "type": "string",
          "description": "Time unit defined for the `interval`. Valid values include `minute`, `hour`, `day`, or `month`. If `limit` and `interval` are valid, the default value is `hour`; otherwise, the default is null."
        }
      },
      "type": "object",
      "required": [
        "interval",
        "limit"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1QuotaResponse": {
      "description": "Quota contains the essential parameters needed that can be applied on the resources, methods, API source combination associated with this API product. While Quota is optional, setting it prevents requests from exceeding the provisioned parameters.",
      "properties": {
        "interval": {
          "type": "string",
          "description": "Time interval over which the number of request messages is calculated."
        },
        "limit": {
          "type": "string",
          "description": "Upper limit allowed for the time interval and time unit specified. Requests exceeding this limit will be rejected."
        },
        "timeUnit": {
          "type": "string",
          "description": "Time unit defined for the `interval`. Valid values include `minute`, `hour`, `day`, or `month`. If `limit` and `interval` are valid, the default value is `hour`; otherwise, the default is null."
        }
      },
      "type": "object",
      "required": [
        "interval",
        "limit",
        "timeUnit"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1RateRange": {
      "description": "API call volume range and the fees charged when the total number of API calls is within the range.",
      "properties": {
        "end": {
          "type": "string",
          "description": "Ending value of the range. Set to 0 or `null` for the last range of values."
        },
        "fee": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeMoney",
          "description": "Fee to charge when total number of API calls falls within this range."
        },
        "start": {
          "type": "string",
          "description": "Starting value of the range. Set to 0 or `null` for the initial range of values."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1RateRangeResponse": {
      "description": "API call volume range and the fees charged when the total number of API calls is within the range.",
      "properties": {
        "end": {
          "type": "string",
          "description": "Ending value of the range. Set to 0 or `null` for the last range of values."
        },
        "fee": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeMoneyResponse",
          "description": "Fee to charge when total number of API calls falls within this range."
        },
        "start": {
          "type": "string",
          "description": "Starting value of the range. Set to 0 or `null` for the initial range of values."
        }
      },
      "type": "object",
      "required": [
        "end",
        "fee",
        "start"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ReportProperty": {
      "properties": {
        "property": {
          "type": "string",
          "description": "name of the property"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "property values"
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1ReportPropertyResponse": {
      "properties": {
        "property": {
          "type": "string",
          "description": "name of the property"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "property values"
        }
      },
      "type": "object",
      "required": [
        "property",
        "value"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1RevenueShareRange": {
      "description": "API call volume range and the percentage of revenue to share with the developer when the total number of API calls is within the range.",
      "properties": {
        "end": {
          "type": "string",
          "description": "Ending value of the range. Set to 0 or `null` for the last range of values."
        },
        "sharePercentage": {
          "type": "number",
          "description": "Percentage of the revenue to be shared with the developer. For example, to share 21 percent of the total revenue with the developer, set this value to 21. Specify a decimal number with a maximum of two digits following the decimal point."
        },
        "start": {
          "type": "string",
          "description": "Starting value of the range. Set to 0 or `null` for the initial range of values."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1RevenueShareRangeResponse": {
      "description": "API call volume range and the percentage of revenue to share with the developer when the total number of API calls is within the range.",
      "properties": {
        "end": {
          "type": "string",
          "description": "Ending value of the range. Set to 0 or `null` for the last range of values."
        },
        "sharePercentage": {
          "type": "number",
          "description": "Percentage of the revenue to be shared with the developer. For example, to share 21 percent of the total revenue with the developer, set this value to 21. Specify a decimal number with a maximum of two digits following the decimal point."
        },
        "start": {
          "type": "string",
          "description": "Starting value of the range. Set to 0 or `null` for the initial range of values."
        }
      },
      "type": "object",
      "required": [
        "end",
        "sharePercentage",
        "start"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionAllow": {
      "description": "Message that should be set in case of an Allow Action. This does not have any fields.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionAllowResponse": {
      "description": "Message that should be set in case of an Allow Action. This does not have any fields.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionConditionConfig": {
      "description": "The following are a list of conditions. A valid SecurityAction must contain at least one condition. Within a condition, each element is ORed. Across conditions elements are ANDed. For example if a SecurityAction has the following: api_keys: [\"key1\", \"key2\"] and developers: [\"dev1\", \"dev2\"] then this is interpreted as: enforce the action if the incoming request has ((api_key = \"key1\" OR api_key=\"key\") AND (developer=\"dev1\" OR developer=\"dev2\"))",
      "properties": {
        "botReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Bot Reasons. Current options: Flooder, Brute Guessor, Static Content Scraper, OAuth Abuser, Robot Abuser, TorListRule, Advanced Anomaly Detection and Advanced API Scraper."
        },
        "ipAddressRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of IP addresses. This could be either IPv4 or IPv6. Limited to 100 per action."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionConditionConfigResponse": {
      "description": "The following are a list of conditions. A valid SecurityAction must contain at least one condition. Within a condition, each element is ORed. Across conditions elements are ANDed. For example if a SecurityAction has the following: api_keys: [\"key1\", \"key2\"] and developers: [\"dev1\", \"dev2\"] then this is interpreted as: enforce the action if the incoming request has ((api_key = \"key1\" OR api_key=\"key\") AND (developer=\"dev1\" OR developer=\"dev2\"))",
      "properties": {
        "botReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Bot Reasons. Current options: Flooder, Brute Guessor, Static Content Scraper, OAuth Abuser, Robot Abuser, TorListRule, Advanced Anomaly Detection and Advanced API Scraper."
        },
        "ipAddressRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of IP addresses. This could be either IPv4 or IPv6. Limited to 100 per action."
        }
      },
      "type": "object",
      "required": [
        "botReasons",
        "ipAddressRanges"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionDeny": {
      "description": "Message that should be set in case of a Deny Action.",
      "properties": {
        "responseCode": {
          "type": "integer",
          "description": "Optional. The HTTP response code if the Action = DENY."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionDenyResponse": {
      "description": "Message that should be set in case of a Deny Action.",
      "properties": {
        "responseCode": {
          "type": "integer",
          "description": "Optional. The HTTP response code if the Action = DENY."
        }
      },
      "type": "object",
      "required": [
        "responseCode"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionFlag": {
      "description": "The message that should be set in the case of a Flag action.",
      "properties": {
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionHttpHeader"
          },
          "description": "Optional. A list of HTTP headers to be sent to the target in case of a FLAG SecurityAction. Limit 5 headers per SecurityAction. At least one is mandatory."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionFlagResponse": {
      "description": "The message that should be set in the case of a Flag action.",
      "properties": {
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionHttpHeaderResponse"
          },
          "description": "Optional. A list of HTTP headers to be sent to the target in case of a FLAG SecurityAction. Limit 5 headers per SecurityAction. At least one is mandatory."
        }
      },
      "type": "object",
      "required": [
        "headers"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionHttpHeader": {
      "description": "An HTTP header.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The header name to be sent to the target."
        },
        "value": {
          "type": "string",
          "description": "The header value to be sent to the target."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityActionHttpHeaderResponse": {
      "description": "An HTTP header.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The header name to be sent to the target."
        },
        "value": {
          "type": "string",
          "description": "The header value to be sent to the target."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityProfileEnvironment": {
      "description": "Environment information of attached environments. Scoring an environment is enabled only if it is attached to a security profile.",
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityProfileEnvironmentResponse": {
      "description": "Environment information of attached environments. Scoring an environment is enabled only if it is attached to a security profile.",
      "properties": {
        "attachTime": {
          "type": "string",
          "description": "Time at which environment was attached to the security profile."
        },
        "environment": {
          "type": "string",
          "description": "Name of the environment."
        }
      },
      "type": "object",
      "required": [
        "attachTime",
        "environment"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityProfileScoringConfig": {
      "description": "Security configurations to manage scoring.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the config."
        },
        "scorePath": {
          "type": "string",
          "description": "Path of the component config used for scoring."
        },
        "title": {
          "type": "string",
          "description": "Title of the config."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityProfileScoringConfigResponse": {
      "description": "Security configurations to manage scoring.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the config."
        },
        "scorePath": {
          "type": "string",
          "description": "Path of the component config used for scoring."
        },
        "title": {
          "type": "string",
          "description": "Title of the config."
        }
      },
      "type": "object",
      "required": [
        "description",
        "scorePath",
        "title"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityReportMetadataResponse": {
      "description": "Metadata for the security report.",
      "properties": {
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Dimensions of the SecurityReport."
        },
        "endTimestamp": {
          "type": "string",
          "description": "End timestamp of the query range."
        },
        "metrics": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Metrics of the SecurityReport. Example: [\"name:bot_count,func:sum,alias:sum_bot_count\"]"
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type / Output format."
        },
        "startTimestamp": {
          "type": "string",
          "description": "Start timestamp of the query range."
        },
        "timeUnit": {
          "type": "string",
          "description": "Query GroupBy time unit. Example: \"seconds\", \"minute\", \"hour\""
        }
      },
      "type": "object",
      "required": [
        "dimensions",
        "endTimestamp",
        "metrics",
        "mimeType",
        "startTimestamp",
        "timeUnit"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityReportQueryMetric": {
      "description": "Metric of the Query",
      "properties": {
        "aggregationFunction": {
          "type": "string",
          "description": "Aggregation function: avg, min, max, or sum."
        },
        "alias": {
          "type": "string",
          "description": "Alias for the metric. Alias will be used to replace metric name in query results."
        },
        "name": {
          "type": "string",
          "description": "Metric name."
        },
        "operator": {
          "type": "string",
          "description": "One of `+`, `-`, `/`, `%`, `*`."
        },
        "value": {
          "type": "string",
          "description": "Operand value should be provided when operator is set."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1SecurityReportResultMetadataResponse": {
      "description": "Contains informations about the security report results.",
      "properties": {
        "expires": {
          "type": "string",
          "description": "Expire_time is set to 7 days after report creation. Query result will be unaccessable after this time. Example: \"2021-05-04T13:38:52-07:00\""
        },
        "self": {
          "type": "string",
          "description": "Self link of the query results. Example: `/organizations/myorg/environments/myenv/securityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result` or following format if query is running at host level: `/organizations/myorg/hostSecurityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result`"
        }
      },
      "type": "object",
      "required": [
        "expires",
        "self"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1TlsInfo": {
      "description": "TLS configuration information for virtual hosts and TargetServers.",
      "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."
        },
        "clientAuthEnabled": {
          "type": "boolean",
          "description": "Optional. Enables two-way TLS."
        },
        "commonName": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TlsInfoCommonName",
          "description": "The TLS Common Name of the certificate."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables TLS. If false, neither one-way nor two-way TLS will be enabled."
        },
        "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."
        },
        "keyAlias": {
          "type": "string",
          "description": "Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert."
        },
        "keyStore": {
          "type": "string",
          "description": "Required if `client_auth_enabled` is true. The resource ID of the keystore."
        },
        "protocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The TLS versioins to be used."
        },
        "trustStore": {
          "type": "string",
          "description": "The resource ID of the truststore."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1TlsInfoCommonName": {
      "properties": {
        "value": {
          "type": "string",
          "description": "The TLS Common Name string of the certificate."
        },
        "wildcardMatch": {
          "type": "boolean",
          "description": "Indicates whether the cert should be matched against as a wildcard cert."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1TlsInfoCommonNameResponse": {
      "properties": {
        "value": {
          "type": "string",
          "description": "The TLS Common Name string of the certificate."
        },
        "wildcardMatch": {
          "type": "boolean",
          "description": "Indicates whether the cert should be matched against as a wildcard cert."
        }
      },
      "type": "object",
      "required": [
        "value",
        "wildcardMatch"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1TlsInfoResponse": {
      "description": "TLS configuration information for virtual hosts and TargetServers.",
      "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."
        },
        "clientAuthEnabled": {
          "type": "boolean",
          "description": "Optional. Enables two-way TLS."
        },
        "commonName": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TlsInfoCommonNameResponse",
          "description": "The TLS Common Name of the certificate."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables TLS. If false, neither one-way nor two-way TLS will be enabled."
        },
        "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."
        },
        "keyAlias": {
          "type": "string",
          "description": "Required if `client_auth_enabled` is true. The resource ID for the alias containing the private key and cert."
        },
        "keyStore": {
          "type": "string",
          "description": "Required if `client_auth_enabled` is true. The resource ID of the keystore."
        },
        "protocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The TLS versioins to be used."
        },
        "trustStore": {
          "type": "string",
          "description": "The resource ID of the truststore."
        }
      },
      "type": "object",
      "required": [
        "ciphers",
        "clientAuthEnabled",
        "commonName",
        "enabled",
        "ignoreValidationErrors",
        "keyAlias",
        "keyStore",
        "protocols",
        "trustStore"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1TraceSamplingConfig": {
      "description": "TraceSamplingConfig represents the detail settings of distributed tracing. Only the fields that are defined in the distributed trace configuration can be overridden using the distribute trace configuration override APIs.",
      "properties": {
        "sampler": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TraceSamplingConfigSampler",
          "description": "Sampler of distributed tracing. OFF is the default value."
        },
        "samplingRate": {
          "type": "number",
          "description": "Field sampling rate. This value is only applicable when using the PROBABILITY sampler. The supported values are > 0 and <= 0.5."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1TraceSamplingConfigResponse": {
      "description": "TraceSamplingConfig represents the detail settings of distributed tracing. Only the fields that are defined in the distributed trace configuration can be overridden using the distribute trace configuration override APIs.",
      "properties": {
        "sampler": {
          "type": "string",
          "description": "Sampler of distributed tracing. OFF is the default value."
        },
        "samplingRate": {
          "type": "number",
          "description": "Field sampling rate. This value is only applicable when using the PROBABILITY sampler. The supported values are > 0 and <= 0.5."
        }
      },
      "type": "object",
      "required": [
        "sampler",
        "samplingRate"
      ]
    },
    "google-native:apigee/v1:GoogleCloudApigeeV1TraceSamplingConfigSampler": {
      "description": "Sampler of distributed tracing. OFF is the default value.",
      "type": "string",
      "enum": [
        {
          "name": "SamplerUnspecified",
          "description": "Sampler unspecified.",
          "value": "SAMPLER_UNSPECIFIED"
        },
        {
          "name": "Off",
          "description": "OFF means distributed trace is disabled, or the sampling probability is 0.",
          "value": "OFF"
        },
        {
          "name": "Probability",
          "description": "PROBABILITY means traces are captured on a probability that defined by sampling_rate. The sampling rate is limited to 0 to 0.5 when this is set.",
          "value": "PROBABILITY"
        }
      ]
    },
    "google-native:apigee/v1:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:apigee/v1:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:apigee/v1:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:apigee/v1:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:apigee/v1:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:apigee/v1:GoogleTypeMoney": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:apigee/v1:GoogleTypeMoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:apigee/v1:InstancePeeringCidrRange": {
      "description": "Optional. Size of the CIDR block range that will be reserved by the instance. PAID organizations support `SLASH_16` to `SLASH_20` and defaults to `SLASH_16`. Evaluation organizations support only `SLASH_23`.",
      "type": "string",
      "enum": [
        {
          "name": "CidrRangeUnspecified",
          "description": "Range not specified.",
          "value": "CIDR_RANGE_UNSPECIFIED"
        },
        {
          "name": "Slash16",
          "description": "`/16` CIDR range.",
          "value": "SLASH_16"
        },
        {
          "name": "Slash17",
          "description": "`/17` CIDR range.",
          "value": "SLASH_17"
        },
        {
          "name": "Slash18",
          "description": "`/18` CIDR range.",
          "value": "SLASH_18"
        },
        {
          "name": "Slash19",
          "description": "`/19` CIDR range.",
          "value": "SLASH_19"
        },
        {
          "name": "Slash20",
          "description": "`/20` CIDR range.",
          "value": "SLASH_20"
        },
        {
          "name": "Slash22",
          "description": "`/22` CIDR range. Supported for evaluation only.",
          "value": "SLASH_22"
        },
        {
          "name": "Slash23",
          "description": "`/23` CIDR range. Supported for evaluation only.",
          "value": "SLASH_23"
        }
      ]
    },
    "google-native:apigee/v1:OrganizationBillingType": {
      "description": "Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing).",
      "type": "string",
      "enum": [
        {
          "name": "BillingTypeUnspecified",
          "description": "Billing type not specified.",
          "value": "BILLING_TYPE_UNSPECIFIED"
        },
        {
          "name": "Subscription",
          "description": "A pre-paid subscription to Apigee.",
          "value": "SUBSCRIPTION"
        },
        {
          "name": "Evaluation",
          "description": "Free and limited access to Apigee for evaluation purposes only.",
          "value": "EVALUATION"
        },
        {
          "name": "Payg",
          "description": "Access to Apigee using a Pay-As-You-Go plan.",
          "value": "PAYG"
        }
      ]
    },
    "google-native:apigee/v1:OrganizationRuntimeType": {
      "description": "Required. Runtime type of the Apigee organization based on the Apigee subscription purchased.",
      "type": "string",
      "enum": [
        {
          "name": "RuntimeTypeUnspecified",
          "description": "Runtime type not specified.",
          "value": "RUNTIME_TYPE_UNSPECIFIED"
        },
        {
          "name": "Cloud",
          "description": "Google-managed Apigee runtime.",
          "value": "CLOUD"
        },
        {
          "name": "Hybrid",
          "description": "User-managed Apigee hybrid runtime.",
          "value": "HYBRID"
        }
      ]
    },
    "google-native:apigee/v1:OrganizationType": {
      "description": "Not used by Apigee.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Subscription type not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TypeTrial",
          "description": "Subscription to Apigee is free, limited, and used for evaluation purposes only.",
          "value": "TYPE_TRIAL"
        },
        {
          "name": "TypePaid",
          "description": "Full subscription to Apigee has been purchased. See [Apigee pricing](https://cloud.google.com/apigee/pricing/).",
          "value": "TYPE_PAID"
        },
        {
          "name": "TypeInternal",
          "description": "For internal users only.",
          "value": "TYPE_INTERNAL"
        }
      ]
    },
    "google-native:apigee/v1:RatePlanBillingPeriod": {
      "description": "Frequency at which the customer will be billed.",
      "type": "string",
      "enum": [
        {
          "name": "BillingPeriodUnspecified",
          "description": "Billing period not specified.",
          "value": "BILLING_PERIOD_UNSPECIFIED"
        },
        {
          "name": "Weekly",
          "description": "Weekly billing period. **Note**: Not supported by Apigee at this time.",
          "value": "WEEKLY"
        },
        {
          "name": "Monthly",
          "description": "Monthly billing period.",
          "value": "MONTHLY"
        }
      ]
    },
    "google-native:apigee/v1:RatePlanConsumptionPricingType": {
      "description": "Pricing model used for consumption-based charges.",
      "type": "string",
      "enum": [
        {
          "name": "ConsumptionPricingTypeUnspecified",
          "description": "Pricing model not specified. This is the default.",
          "value": "CONSUMPTION_PRICING_TYPE_UNSPECIFIED"
        },
        {
          "name": "FixedPerUnit",
          "description": "Fixed rate charged for each API call.",
          "value": "FIXED_PER_UNIT"
        },
        {
          "name": "Banded",
          "description": "Variable rate charged for each API call based on price tiers. Example: * 1-100 calls cost $2 per call * 101-200 calls cost $1.50 per call * 201-300 calls cost $1 per call * Total price for 50 calls: 50 x $2 = $100 * Total price for 150 calls: 100 x $2 + 50 x $1.5 = $275 * Total price for 250 calls: 100 x $2 + 100 x $1.5 + 50 x $1 = $400. **Note**: Not supported by Apigee at this time.",
          "value": "BANDED"
        },
        {
          "name": "Tiered",
          "description": "**Note**: Not supported by Apigee at this time.",
          "value": "TIERED"
        },
        {
          "name": "Stairstep",
          "description": "**Note**: Not supported by Apigee at this time.",
          "value": "STAIRSTEP"
        }
      ]
    },
    "google-native:apigee/v1:RatePlanPaymentFundingModel": {
      "description": "DEPRECATED: This field is no longer supported and will eventually be removed when Apigee Hybrid 1.5/1.6 is no longer supported. Instead, use the `billingType` field inside `DeveloperMonetizationConfig` resource. Flag that specifies the billing account type, prepaid or postpaid.",
      "type": "string",
      "enum": [
        {
          "name": "PaymentFundingModelUnspecified",
          "description": "Billing account type not specified.",
          "value": "PAYMENT_FUNDING_MODEL_UNSPECIFIED"
        },
        {
          "name": "Prepaid",
          "description": "Prepaid billing account type. Developer pays in advance for the use of your API products. Funds are deducted from their prepaid account balance. **Note**: Not supported by Apigee at this time.",
          "value": "PREPAID"
        },
        {
          "name": "Postpaid",
          "description": "Postpaid billing account type. Developer is billed through an invoice after using your API products.",
          "value": "POSTPAID"
        }
      ]
    },
    "google-native:apigee/v1:RatePlanRevenueShareType": {
      "description": "Method used to calculate the revenue that is shared with developers.",
      "type": "string",
      "enum": [
        {
          "name": "RevenueShareTypeUnspecified",
          "description": "Revenue share type is not specified.",
          "value": "REVENUE_SHARE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Fixed",
          "description": "Fixed percentage of the total revenue will be shared. The percentage to be shared can be configured by the API provider.",
          "value": "FIXED"
        },
        {
          "name": "VolumeBanded",
          "description": "Amount of revenue shared depends on the number of API calls. The API call volume ranges and the revenue share percentage for each volume can be configured by the API provider. **Note**: Not supported by Apigee at this time.",
          "value": "VOLUME_BANDED"
        }
      ]
    },
    "google-native:apigee/v1:RatePlanState": {
      "description": "Current state of the rate plan (draft or published).",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "State of the rate plan is not specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Draft",
          "description": "Rate plan is in draft mode and only visible to API providers.",
          "value": "DRAFT"
        },
        {
          "name": "Published",
          "description": "Rate plan is published and will become visible to developers for the configured duration (between `startTime` and `endTime`).",
          "value": "PUBLISHED"
        }
      ]
    },
    "google-native:apigee/v1:SecurityActionState": {
      "description": "Required. Only an ENABLED SecurityAction is enforced. An ENABLED SecurityAction past its expiration time will not be enforced.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The default value. This only exists for forward compatibility. A create request with this value will be rejected.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "An ENABLED SecurityAction is actively enforced if the `expiration_time` is in the future.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "A disabled SecurityAction is never enforced.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:apigee/v1:TargetServerProtocol": {
      "description": "Immutable. The protocol used by this TargetServer.",
      "type": "string",
      "enum": [
        {
          "name": "ProtocolUnspecified",
          "description": "UNSPECIFIED defaults to HTTP for backwards compatibility.",
          "value": "PROTOCOL_UNSPECIFIED"
        },
        {
          "name": "Http",
          "description": "The TargetServer uses HTTP.",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "description": "The TargetSever uses HTTP2.",
          "value": "HTTP2"
        },
        {
          "name": "GrpcTarget",
          "description": "The TargetServer uses GRPC.",
          "value": "GRPC_TARGET"
        },
        {
          "name": "Grpc",
          "description": "GRPC TargetServer to be used in ExternalCallout Policy. Prefer to use EXTERNAL_CALLOUT instead. TODO(b/266125112) deprecate once EXTERNAL _CALLOUT generally available.",
          "value": "GRPC"
        },
        {
          "name": "ExternalCallout",
          "description": "The TargetServer is to be used in the ExternalCallout Policy",
          "value": "EXTERNAL_CALLOUT"
        }
      ]
    },
    "google-native:apigeeregistry/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:apigeeregistry%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:apigeeregistry/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:apigeeregistry%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:BuildResponse": {
      "description": "Build information of the Instance if it's in `ACTIVE` state.",
      "properties": {
        "commitId": {
          "type": "string",
          "description": "Commit ID of the latest commit in the build."
        },
        "commitTime": {
          "type": "string",
          "description": "Commit time of the latest commit in the build."
        },
        "repo": {
          "type": "string",
          "description": "Path of the open source repository: github.com/apigee/registry."
        }
      },
      "type": "object",
      "required": [
        "commitId",
        "commitTime",
        "repo"
      ]
    },
    "google-native:apigeeregistry/v1:Config": {
      "description": "Available configurations to provision an Instance.",
      "properties": {
        "cmekKeyName": {
          "type": "string",
          "description": "The Customer Managed Encryption Key (CMEK) used for data encryption. The CMEK name should follow the format of `projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)`, where the `location` must match InstanceConfig.location."
        }
      },
      "type": "object",
      "required": [
        "cmekKeyName"
      ]
    },
    "google-native:apigeeregistry/v1:ConfigResponse": {
      "description": "Available configurations to provision an Instance.",
      "properties": {
        "cmekKeyName": {
          "type": "string",
          "description": "The Customer Managed Encryption Key (CMEK) used for data encryption. The CMEK name should follow the format of `projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)`, where the `location` must match InstanceConfig.location."
        },
        "location": {
          "type": "string",
          "description": "The GCP location where the Instance resides."
        }
      },
      "type": "object",
      "required": [
        "cmekKeyName",
        "location"
      ]
    },
    "google-native:apigeeregistry/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:apigeeregistry/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:apikeys/v2:V2AndroidApplication": {
      "description": "Identifier of an Android application for key use.",
      "properties": {
        "packageName": {
          "type": "string",
          "description": "The package name of the application."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "The SHA1 fingerprint of the application. For example, both sha1 formats are acceptable : DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09 or DA39A3EE5E6B4B0D3255BFEF95601890AFD80709. Output format is the latter."
        }
      },
      "type": "object"
    },
    "google-native:apikeys/v2:V2AndroidApplicationResponse": {
      "description": "Identifier of an Android application for key use.",
      "properties": {
        "packageName": {
          "type": "string",
          "description": "The package name of the application."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "The SHA1 fingerprint of the application. For example, both sha1 formats are acceptable : DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09 or DA39A3EE5E6B4B0D3255BFEF95601890AFD80709. Output format is the latter."
        }
      },
      "type": "object",
      "required": [
        "packageName",
        "sha1Fingerprint"
      ]
    },
    "google-native:apikeys/v2:V2AndroidKeyRestrictions": {
      "description": "The Android apps that are allowed to use the key.",
      "properties": {
        "allowedApplications": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apikeys%2Fv2:V2AndroidApplication"
          },
          "description": "A list of Android applications that are allowed to make API calls with this key."
        }
      },
      "type": "object"
    },
    "google-native:apikeys/v2:V2AndroidKeyRestrictionsResponse": {
      "description": "The Android apps that are allowed to use the key.",
      "properties": {
        "allowedApplications": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apikeys%2Fv2:V2AndroidApplicationResponse"
          },
          "description": "A list of Android applications that are allowed to make API calls with this key."
        }
      },
      "type": "object",
      "required": [
        "allowedApplications"
      ]
    },
    "google-native:apikeys/v2:V2ApiTarget": {
      "description": "A restriction for a specific service and optionally one or multiple specific methods. Both fields are case insensitive.",
      "properties": {
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of one or more methods that can be called. If empty, all methods for the service are allowed. A wildcard (*) can be used as the last symbol. Valid examples: `google.cloud.translate.v2.TranslateService.GetSupportedLanguage` `TranslateText` `Get*` `translate.googleapis.com.Get*`"
        },
        "service": {
          "type": "string",
          "description": "The service for this restriction. It should be the canonical service name, for example: `translate.googleapis.com`. You can use [`gcloud services list`](/sdk/gcloud/reference/services/list) to get a list of services that are enabled in the project."
        }
      },
      "type": "object"
    },
    "google-native:apikeys/v2:V2ApiTargetResponse": {
      "description": "A restriction for a specific service and optionally one or multiple specific methods. Both fields are case insensitive.",
      "properties": {
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of one or more methods that can be called. If empty, all methods for the service are allowed. A wildcard (*) can be used as the last symbol. Valid examples: `google.cloud.translate.v2.TranslateService.GetSupportedLanguage` `TranslateText` `Get*` `translate.googleapis.com.Get*`"
        },
        "service": {
          "type": "string",
          "description": "The service for this restriction. It should be the canonical service name, for example: `translate.googleapis.com`. You can use [`gcloud services list`](/sdk/gcloud/reference/services/list) to get a list of services that are enabled in the project."
        }
      },
      "type": "object",
      "required": [
        "methods",
        "service"
      ]
    },
    "google-native:apikeys/v2:V2BrowserKeyRestrictions": {
      "description": "The HTTP referrers (websites) that are allowed to use the key.",
      "properties": {
        "allowedReferrers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of regular expressions for the referrer URLs that are allowed to make API calls with this key."
        }
      },
      "type": "object"
    },
    "google-native:apikeys/v2:V2BrowserKeyRestrictionsResponse": {
      "description": "The HTTP referrers (websites) that are allowed to use the key.",
      "properties": {
        "allowedReferrers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of regular expressions for the referrer URLs that are allowed to make API calls with this key."
        }
      },
      "type": "object",
      "required": [
        "allowedReferrers"
      ]
    },
    "google-native:apikeys/v2:V2IosKeyRestrictions": {
      "description": "The iOS apps that are allowed to use the key.",
      "properties": {
        "allowedBundleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of bundle IDs that are allowed when making API calls with this key."
        }
      },
      "type": "object"
    },
    "google-native:apikeys/v2:V2IosKeyRestrictionsResponse": {
      "description": "The iOS apps that are allowed to use the key.",
      "properties": {
        "allowedBundleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of bundle IDs that are allowed when making API calls with this key."
        }
      },
      "type": "object",
      "required": [
        "allowedBundleIds"
      ]
    },
    "google-native:apikeys/v2:V2Restrictions": {
      "description": "Describes the restrictions on the key.",
      "properties": {
        "androidKeyRestrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2AndroidKeyRestrictions",
          "description": "The Android apps that are allowed to use the key."
        },
        "apiTargets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apikeys%2Fv2:V2ApiTarget"
          },
          "description": "A restriction for a specific service and optionally one or more specific methods. Requests are allowed if they match any of these restrictions. If no restrictions are specified, all targets are allowed."
        },
        "browserKeyRestrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2BrowserKeyRestrictions",
          "description": "The HTTP referrers (websites) that are allowed to use the key."
        },
        "iosKeyRestrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2IosKeyRestrictions",
          "description": "The iOS apps that are allowed to use the key."
        },
        "serverKeyRestrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2ServerKeyRestrictions",
          "description": "The IP addresses of callers that are allowed to use the key."
        }
      },
      "type": "object"
    },
    "google-native:apikeys/v2:V2RestrictionsResponse": {
      "description": "Describes the restrictions on the key.",
      "properties": {
        "androidKeyRestrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2AndroidKeyRestrictionsResponse",
          "description": "The Android apps that are allowed to use the key."
        },
        "apiTargets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apikeys%2Fv2:V2ApiTargetResponse"
          },
          "description": "A restriction for a specific service and optionally one or more specific methods. Requests are allowed if they match any of these restrictions. If no restrictions are specified, all targets are allowed."
        },
        "browserKeyRestrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2BrowserKeyRestrictionsResponse",
          "description": "The HTTP referrers (websites) that are allowed to use the key."
        },
        "iosKeyRestrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2IosKeyRestrictionsResponse",
          "description": "The iOS apps that are allowed to use the key."
        },
        "serverKeyRestrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2ServerKeyRestrictionsResponse",
          "description": "The IP addresses of callers that are allowed to use the key."
        }
      },
      "type": "object",
      "required": [
        "androidKeyRestrictions",
        "apiTargets",
        "browserKeyRestrictions",
        "iosKeyRestrictions",
        "serverKeyRestrictions"
      ]
    },
    "google-native:apikeys/v2:V2ServerKeyRestrictions": {
      "description": "The IP addresses of callers that are allowed to use the key.",
      "properties": {
        "allowedIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the caller IP addresses that are allowed to make API calls with this key."
        }
      },
      "type": "object"
    },
    "google-native:apikeys/v2:V2ServerKeyRestrictionsResponse": {
      "description": "The IP addresses of callers that are allowed to use the key.",
      "properties": {
        "allowedIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the caller IP addresses that are allowed to make API calls with this key."
        }
      },
      "type": "object",
      "required": [
        "allowedIps"
      ]
    },
    "google-native:appengine/v1:ApiConfigHandler": {
      "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration for API handlers.",
      "properties": {
        "authFailAction": {
          "$ref": "#/types/google-native:appengine%2Fv1:ApiConfigHandlerAuthFailAction",
          "description": "Action to take when users access resources that require authentication. Defaults to redirect."
        },
        "login": {
          "$ref": "#/types/google-native:appengine%2Fv1:ApiConfigHandlerLogin",
          "description": "Level of login required to access this resource. Defaults to optional."
        },
        "script": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        },
        "securityLevel": {
          "$ref": "#/types/google-native:appengine%2Fv1:ApiConfigHandlerSecurityLevel",
          "description": "Security (HTTPS) enforcement for this URL."
        },
        "url": {
          "type": "string",
          "description": "URL to serve the endpoint at."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ApiConfigHandlerAuthFailAction": {
      "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
      "type": "string",
      "enum": [
        {
          "name": "AuthFailActionUnspecified",
          "description": "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.",
          "value": "AUTH_FAIL_ACTION_UNSPECIFIED"
        },
        {
          "name": "AuthFailActionRedirect",
          "description": "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.",
          "value": "AUTH_FAIL_ACTION_REDIRECT"
        },
        {
          "name": "AuthFailActionUnauthorized",
          "description": "Rejects request with a 401 HTTP status code and an error message.",
          "value": "AUTH_FAIL_ACTION_UNAUTHORIZED"
        }
      ]
    },
    "google-native:appengine/v1:ApiConfigHandlerLogin": {
      "description": "Level of login required to access this resource. Defaults to optional.",
      "type": "string",
      "enum": [
        {
          "name": "LoginUnspecified",
          "description": "Not specified. LOGIN_OPTIONAL is assumed.",
          "value": "LOGIN_UNSPECIFIED"
        },
        {
          "name": "LoginOptional",
          "description": "Does not require that the user is signed in.",
          "value": "LOGIN_OPTIONAL"
        },
        {
          "name": "LoginAdmin",
          "description": "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.",
          "value": "LOGIN_ADMIN"
        },
        {
          "name": "LoginRequired",
          "description": "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken.",
          "value": "LOGIN_REQUIRED"
        }
      ]
    },
    "google-native:appengine/v1:ApiConfigHandlerResponse": {
      "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration for API handlers.",
      "properties": {
        "authFailAction": {
          "type": "string",
          "description": "Action to take when users access resources that require authentication. Defaults to redirect."
        },
        "login": {
          "type": "string",
          "description": "Level of login required to access this resource. Defaults to optional."
        },
        "script": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        },
        "securityLevel": {
          "type": "string",
          "description": "Security (HTTPS) enforcement for this URL."
        },
        "url": {
          "type": "string",
          "description": "URL to serve the endpoint at."
        }
      },
      "type": "object",
      "required": [
        "authFailAction",
        "login",
        "script",
        "securityLevel",
        "url"
      ]
    },
    "google-native:appengine/v1:ApiConfigHandlerSecurityLevel": {
      "description": "Security (HTTPS) enforcement for this URL.",
      "type": "string",
      "enum": [
        {
          "name": "SecureUnspecified",
          "description": "Not specified.",
          "value": "SECURE_UNSPECIFIED"
        },
        {
          "name": "SecureDefault",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.",
          "value": "SECURE_DEFAULT"
        },
        {
          "name": "SecureNever",
          "description": "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.",
          "value": "SECURE_NEVER"
        },
        {
          "name": "SecureOptional",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
          "value": "SECURE_OPTIONAL"
        },
        {
          "name": "SecureAlways",
          "description": "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
          "value": "SECURE_ALWAYS"
        }
      ]
    },
    "google-native:appengine/v1:ApiEndpointHandler": {
      "description": "Uses Google Cloud Endpoints to handle requests.",
      "properties": {
        "scriptPath": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ApiEndpointHandlerResponse": {
      "description": "Uses Google Cloud Endpoints to handle requests.",
      "properties": {
        "scriptPath": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        }
      },
      "type": "object",
      "required": [
        "scriptPath"
      ]
    },
    "google-native:appengine/v1:AppDatabaseType": {
      "description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "Database type is unspecified.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "CloudDatastore",
          "description": "Cloud Datastore",
          "value": "CLOUD_DATASTORE"
        },
        {
          "name": "CloudFirestore",
          "description": "Cloud Firestore Native",
          "value": "CLOUD_FIRESTORE"
        },
        {
          "name": "CloudDatastoreCompatibility",
          "description": "Cloud Firestore in Datastore Mode",
          "value": "CLOUD_DATASTORE_COMPATIBILITY"
        }
      ]
    },
    "google-native:appengine/v1:AppServingStatus": {
      "description": "Serving status of this application.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Serving status is unspecified.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Serving",
          "description": "Application is serving.",
          "value": "SERVING"
        },
        {
          "name": "UserDisabled",
          "description": "Application has been disabled by the user.",
          "value": "USER_DISABLED"
        },
        {
          "name": "SystemDisabled",
          "description": "Application has been disabled by the system.",
          "value": "SYSTEM_DISABLED"
        }
      ]
    },
    "google-native:appengine/v1:AutomaticScaling": {
      "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
      "properties": {
        "coolDownPeriod": {
          "type": "string",
          "description": "The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1:CpuUtilization",
          "description": "Target scaling by CPU usage."
        },
        "diskUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1:DiskUtilization",
          "description": "Target scaling by disk usage."
        },
        "maxConcurrentRequests": {
          "type": "integer",
          "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value."
        },
        "maxIdleInstances": {
          "type": "integer",
          "description": "Maximum number of idle instances that should be maintained for this version."
        },
        "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."
        },
        "maxTotalInstances": {
          "type": "integer",
          "description": "Maximum number of instances that should be started to handle requests for this version."
        },
        "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."
        },
        "minPendingLatency": {
          "type": "string",
          "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it."
        },
        "minTotalInstances": {
          "type": "integer",
          "description": "Minimum number of running instances that should be maintained for this version."
        },
        "networkUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1:NetworkUtilization",
          "description": "Target scaling by network usage."
        },
        "requestUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1:RequestUtilization",
          "description": "Target scaling by request utilization."
        },
        "standardSchedulerSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1:StandardSchedulerSettings",
          "description": "Scheduler settings for standard environment."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:AutomaticScalingResponse": {
      "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
      "properties": {
        "coolDownPeriod": {
          "type": "string",
          "description": "The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1:CpuUtilizationResponse",
          "description": "Target scaling by CPU usage."
        },
        "diskUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1:DiskUtilizationResponse",
          "description": "Target scaling by disk usage."
        },
        "maxConcurrentRequests": {
          "type": "integer",
          "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value."
        },
        "maxIdleInstances": {
          "type": "integer",
          "description": "Maximum number of idle instances that should be maintained for this version."
        },
        "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."
        },
        "maxTotalInstances": {
          "type": "integer",
          "description": "Maximum number of instances that should be started to handle requests for this version."
        },
        "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."
        },
        "minPendingLatency": {
          "type": "string",
          "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it."
        },
        "minTotalInstances": {
          "type": "integer",
          "description": "Minimum number of running instances that should be maintained for this version."
        },
        "networkUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1:NetworkUtilizationResponse",
          "description": "Target scaling by network usage."
        },
        "requestUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1:RequestUtilizationResponse",
          "description": "Target scaling by request utilization."
        },
        "standardSchedulerSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1:StandardSchedulerSettingsResponse",
          "description": "Scheduler settings for standard environment."
        }
      },
      "type": "object",
      "required": [
        "coolDownPeriod",
        "cpuUtilization",
        "diskUtilization",
        "maxConcurrentRequests",
        "maxIdleInstances",
        "maxPendingLatency",
        "maxTotalInstances",
        "minIdleInstances",
        "minPendingLatency",
        "minTotalInstances",
        "networkUtilization",
        "requestUtilization",
        "standardSchedulerSettings"
      ]
    },
    "google-native:appengine/v1:BasicScaling": {
      "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
      "properties": {
        "idleTimeout": {
          "type": "string",
          "description": "Duration of time after the last request that an instance must wait before the instance is shut down."
        },
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances to create for this version."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:BasicScalingResponse": {
      "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
      "properties": {
        "idleTimeout": {
          "type": "string",
          "description": "Duration of time after the last request that an instance must wait before the instance is shut down."
        },
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances to create for this version."
        }
      },
      "type": "object",
      "required": [
        "idleTimeout",
        "maxInstances"
      ]
    },
    "google-native:appengine/v1:CertificateRawData": {
      "description": "An SSL certificate obtained from a certificate authority.",
      "properties": {
        "privateKey": {
          "type": "string",
          "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly"
        },
        "publicCertificate": {
          "type": "string",
          "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- "
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:CertificateRawDataResponse": {
      "description": "An SSL certificate obtained from a certificate authority.",
      "properties": {
        "privateKey": {
          "type": "string",
          "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly"
        },
        "publicCertificate": {
          "type": "string",
          "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- "
        }
      },
      "type": "object",
      "required": [
        "privateKey",
        "publicCertificate"
      ]
    },
    "google-native:appengine/v1:CloudBuildOptions": {
      "description": "Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly.",
      "properties": {
        "appYamlPath": {
          "type": "string",
          "description": "Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details."
        },
        "cloudBuildTimeout": {
          "type": "string",
          "description": "The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:CloudBuildOptionsResponse": {
      "description": "Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly.",
      "properties": {
        "appYamlPath": {
          "type": "string",
          "description": "Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details."
        },
        "cloudBuildTimeout": {
          "type": "string",
          "description": "The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes."
        }
      },
      "type": "object",
      "required": [
        "appYamlPath",
        "cloudBuildTimeout"
      ]
    },
    "google-native:appengine/v1:ContainerInfo": {
      "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.",
      "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. Examples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\""
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ContainerInfoResponse": {
      "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.",
      "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. Examples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\""
        }
      },
      "type": "object",
      "required": [
        "image"
      ]
    },
    "google-native:appengine/v1:CpuUtilization": {
      "description": "Target scaling by CPU usage.",
      "properties": {
        "aggregationWindowLength": {
          "type": "string",
          "description": "Period of time over which CPU utilization is calculated."
        },
        "targetUtilization": {
          "type": "number",
          "description": "Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:CpuUtilizationResponse": {
      "description": "Target scaling by CPU usage.",
      "properties": {
        "aggregationWindowLength": {
          "type": "string",
          "description": "Period of time over which CPU utilization is calculated."
        },
        "targetUtilization": {
          "type": "number",
          "description": "Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1."
        }
      },
      "type": "object",
      "required": [
        "aggregationWindowLength",
        "targetUtilization"
      ]
    },
    "google-native:appengine/v1:Deployment": {
      "description": "Code and application artifacts used to deploy a version to App Engine.",
      "properties": {
        "cloudBuildOptions": {
          "$ref": "#/types/google-native:appengine%2Fv1:CloudBuildOptions",
          "description": "Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip."
        },
        "container": {
          "$ref": "#/types/google-native:appengine%2Fv1:ContainerInfo",
          "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
        },
        "files": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call."
        },
        "zip": {
          "$ref": "#/types/google-native:appengine%2Fv1:ZipInfo",
          "description": "The zip file for this deployment, if this is a zip deployment."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:DeploymentResponse": {
      "description": "Code and application artifacts used to deploy a version to App Engine.",
      "properties": {
        "cloudBuildOptions": {
          "$ref": "#/types/google-native:appengine%2Fv1:CloudBuildOptionsResponse",
          "description": "Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip."
        },
        "container": {
          "$ref": "#/types/google-native:appengine%2Fv1:ContainerInfoResponse",
          "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
        },
        "files": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call."
        },
        "zip": {
          "$ref": "#/types/google-native:appengine%2Fv1:ZipInfoResponse",
          "description": "The zip file for this deployment, if this is a zip deployment."
        }
      },
      "type": "object",
      "required": [
        "cloudBuildOptions",
        "container",
        "files",
        "zip"
      ]
    },
    "google-native:appengine/v1:DiskUtilization": {
      "description": "Target scaling by disk usage. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetReadBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes read per second."
        },
        "targetReadOpsPerSecond": {
          "type": "integer",
          "description": "Target ops read per seconds."
        },
        "targetWriteBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes written per second."
        },
        "targetWriteOpsPerSecond": {
          "type": "integer",
          "description": "Target ops written per second."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:DiskUtilizationResponse": {
      "description": "Target scaling by disk usage. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetReadBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes read per second."
        },
        "targetReadOpsPerSecond": {
          "type": "integer",
          "description": "Target ops read per seconds."
        },
        "targetWriteBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes written per second."
        },
        "targetWriteOpsPerSecond": {
          "type": "integer",
          "description": "Target ops written per second."
        }
      },
      "type": "object",
      "required": [
        "targetReadBytesPerSecond",
        "targetReadOpsPerSecond",
        "targetWriteBytesPerSecond",
        "targetWriteOpsPerSecond"
      ]
    },
    "google-native:appengine/v1:EndpointsApiService": {
      "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Endpoints service configuration ID as specified by the Service Management API. For example \"2016-09-19r1\".By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted."
        },
        "disableTraceSampling": {
          "type": "boolean",
          "description": "Enable or disable trace sampling. By default, this is set to false for enabled."
        },
        "name": {
          "type": "string",
          "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\""
        },
        "rolloutStrategy": {
          "$ref": "#/types/google-native:appengine%2Fv1:EndpointsApiServiceRolloutStrategy",
          "description": "Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:EndpointsApiServiceResponse": {
      "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Endpoints service configuration ID as specified by the Service Management API. For example \"2016-09-19r1\".By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted."
        },
        "disableTraceSampling": {
          "type": "boolean",
          "description": "Enable or disable trace sampling. By default, this is set to false for enabled."
        },
        "name": {
          "type": "string",
          "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\""
        },
        "rolloutStrategy": {
          "type": "string",
          "description": "Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted."
        }
      },
      "type": "object",
      "required": [
        "configId",
        "disableTraceSampling",
        "name",
        "rolloutStrategy"
      ]
    },
    "google-native:appengine/v1:EndpointsApiServiceRolloutStrategy": {
      "description": "Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedRolloutStrategy",
          "description": "Not specified. Defaults to FIXED.",
          "value": "UNSPECIFIED_ROLLOUT_STRATEGY"
        },
        {
          "name": "Fixed",
          "description": "Endpoints service configuration ID will be fixed to the configuration ID specified by config_id.",
          "value": "FIXED"
        },
        {
          "name": "Managed",
          "description": "Endpoints service configuration ID will be updated with each rollout.",
          "value": "MANAGED"
        }
      ]
    },
    "google-native:appengine/v1:Entrypoint": {
      "description": "The entrypoint for the application.",
      "properties": {
        "shell": {
          "type": "string",
          "description": "The format should be a shell command that can be fed to bash -c."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:EntrypointResponse": {
      "description": "The entrypoint for the application.",
      "properties": {
        "shell": {
          "type": "string",
          "description": "The format should be a shell command that can be fed to bash -c."
        }
      },
      "type": "object",
      "required": [
        "shell"
      ]
    },
    "google-native:appengine/v1:ErrorHandler": {
      "description": "Custom static error page to be served when an error occurs.",
      "properties": {
        "errorCode": {
          "$ref": "#/types/google-native:appengine%2Fv1:ErrorHandlerErrorCode",
          "description": "Error condition this handler applies to."
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type of file. Defaults to text/html."
        },
        "staticFile": {
          "type": "string",
          "description": "Static file content to be served for this error."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ErrorHandlerErrorCode": {
      "description": "Error condition this handler applies to.",
      "type": "string",
      "enum": [
        {
          "name": "ErrorCodeUnspecified",
          "description": "Not specified. ERROR_CODE_DEFAULT is assumed.",
          "value": "ERROR_CODE_UNSPECIFIED"
        },
        {
          "name": "ErrorCodeDefault",
          "description": "All other error types.",
          "value": "ERROR_CODE_DEFAULT"
        },
        {
          "name": "ErrorCodeOverQuota",
          "description": "Application has exceeded a resource quota.",
          "value": "ERROR_CODE_OVER_QUOTA"
        },
        {
          "name": "ErrorCodeDosApiDenial",
          "description": "Client blocked by the application's Denial of Service protection configuration.",
          "value": "ERROR_CODE_DOS_API_DENIAL"
        },
        {
          "name": "ErrorCodeTimeout",
          "description": "Deadline reached before the application responds.",
          "value": "ERROR_CODE_TIMEOUT"
        }
      ]
    },
    "google-native:appengine/v1:ErrorHandlerResponse": {
      "description": "Custom static error page to be served when an error occurs.",
      "properties": {
        "errorCode": {
          "type": "string",
          "description": "Error condition this handler applies to."
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type of file. Defaults to text/html."
        },
        "staticFile": {
          "type": "string",
          "description": "Static file content to be served for this error."
        }
      },
      "type": "object",
      "required": [
        "errorCode",
        "mimeType",
        "staticFile"
      ]
    },
    "google-native:appengine/v1:FeatureSettings": {
      "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.",
      "properties": {
        "splitHealthChecks": {
          "type": "boolean",
          "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed."
        },
        "useContainerOptimizedOs": {
          "type": "boolean",
          "description": "If true, use Container-Optimized OS (https://cloud.google.com/container-optimized-os/) base image for VMs, rather than a base Debian image."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:FeatureSettingsResponse": {
      "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.",
      "properties": {
        "splitHealthChecks": {
          "type": "boolean",
          "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed."
        },
        "useContainerOptimizedOs": {
          "type": "boolean",
          "description": "If true, use Container-Optimized OS (https://cloud.google.com/container-optimized-os/) base image for VMs, rather than a base Debian image."
        }
      },
      "type": "object",
      "required": [
        "splitHealthChecks",
        "useContainerOptimizedOs"
      ]
    },
    "google-native:appengine/v1:FlexibleRuntimeSettings": {
      "description": "Runtime settings for the App Engine flexible environment.",
      "properties": {
        "operatingSystem": {
          "type": "string",
          "description": "The operating system of the application runtime."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version of an App Engine flexible application."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:FlexibleRuntimeSettingsResponse": {
      "description": "Runtime settings for the App Engine flexible environment.",
      "properties": {
        "operatingSystem": {
          "type": "string",
          "description": "The operating system of the application runtime."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version of an App Engine flexible application."
        }
      },
      "type": "object",
      "required": [
        "operatingSystem",
        "runtimeVersion"
      ]
    },
    "google-native:appengine/v1:HealthCheck": {
      "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
      "properties": {
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "disableHealthCheck": {
          "type": "boolean",
          "description": "Whether to explicitly disable health checks for this instance."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful health checks required before receiving traffic."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\""
        },
        "restartThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed health checks required before an instance is restarted."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the health check is considered failed."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed health checks required before removing traffic."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:HealthCheckResponse": {
      "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
      "properties": {
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "disableHealthCheck": {
          "type": "boolean",
          "description": "Whether to explicitly disable health checks for this instance."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful health checks required before receiving traffic."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\""
        },
        "restartThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed health checks required before an instance is restarted."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the health check is considered failed."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed health checks required before removing traffic."
        }
      },
      "type": "object",
      "required": [
        "checkInterval",
        "disableHealthCheck",
        "healthyThreshold",
        "host",
        "restartThreshold",
        "timeout",
        "unhealthyThreshold"
      ]
    },
    "google-native:appengine/v1:IdentityAwareProxy": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly"
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:IdentityAwareProxyResponse": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly"
        },
        "oauth2ClientSecretSha256": {
          "type": "string",
          "description": "Hex-encoded SHA-256 hash of the client secret."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "oauth2ClientId",
        "oauth2ClientSecret",
        "oauth2ClientSecretSha256"
      ]
    },
    "google-native:appengine/v1:IngressRuleAction": {
      "description": "The action to take on matched requests.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedAction",
          "value": "UNSPECIFIED_ACTION"
        },
        {
          "name": "Allow",
          "description": "Matching requests are allowed.",
          "value": "ALLOW"
        },
        {
          "name": "Deny",
          "description": "Matching requests are denied.",
          "value": "DENY"
        }
      ]
    },
    "google-native:appengine/v1:Library": {
      "description": "Third-party Python runtime library that is required by the application.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the library. Example: \"django\"."
        },
        "version": {
          "type": "string",
          "description": "Version of the library to select, or \"latest\"."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:LibraryResponse": {
      "description": "Third-party Python runtime library that is required by the application.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the library. Example: \"django\"."
        },
        "version": {
          "type": "string",
          "description": "Version of the library to select, or \"latest\"."
        }
      },
      "type": "object",
      "required": [
        "name",
        "version"
      ]
    },
    "google-native:appengine/v1:LivenessCheck": {
      "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.",
      "properties": {
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed checks required before considering the VM unhealthy."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\""
        },
        "initialDelay": {
          "type": "string",
          "description": "The initial delay before starting to execute the checks."
        },
        "path": {
          "type": "string",
          "description": "The request path."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful checks required before considering the VM healthy."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the check is considered failed."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:LivenessCheckResponse": {
      "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.",
      "properties": {
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed checks required before considering the VM unhealthy."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\""
        },
        "initialDelay": {
          "type": "string",
          "description": "The initial delay before starting to execute the checks."
        },
        "path": {
          "type": "string",
          "description": "The request path."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful checks required before considering the VM healthy."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the check is considered failed."
        }
      },
      "type": "object",
      "required": [
        "checkInterval",
        "failureThreshold",
        "host",
        "initialDelay",
        "path",
        "successThreshold",
        "timeout"
      ]
    },
    "google-native:appengine/v1:ManagedCertificateResponse": {
      "description": "A certificate managed by App Engine.",
      "properties": {
        "lastRenewalTime": {
          "type": "string",
          "description": "Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus."
        },
        "status": {
          "type": "string",
          "description": "Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt."
        }
      },
      "type": "object",
      "required": [
        "lastRenewalTime",
        "status"
      ]
    },
    "google-native:appengine/v1:ManualScaling": {
      "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.",
      "properties": {
        "instances": {
          "type": "integer",
          "description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ManualScalingResponse": {
      "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.",
      "properties": {
        "instances": {
          "type": "integer",
          "description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function."
        }
      },
      "type": "object",
      "required": [
        "instances"
      ]
    },
    "google-native:appengine/v1:Network": {
      "description": "Extra network settings. Only applicable in the App Engine flexible environment.",
      "properties": {
        "forwardedPorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment."
        },
        "instanceIpMode": {
          "$ref": "#/types/google-native:appengine%2Fv1:NetworkInstanceIpMode",
          "description": "The IP mode for instances. Only applicable in the App Engine flexible environment."
        },
        "instanceTag": {
          "type": "string",
          "description": "Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment."
        },
        "name": {
          "type": "string",
          "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default."
        },
        "sessionAffinity": {
          "type": "boolean",
          "description": "Enable session affinity. Only applicable in the App Engine flexible environment."
        },
        "subnetworkName": {
          "type": "string",
          "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:NetworkInstanceIpMode": {
      "description": "The IP mode for instances. Only applicable in the App Engine flexible environment.",
      "type": "string",
      "enum": [
        {
          "name": "InstanceIpModeUnspecified",
          "description": "Unspecified is treated as EXTERNAL.",
          "value": "INSTANCE_IP_MODE_UNSPECIFIED"
        },
        {
          "name": "External",
          "description": "Instances are created with both internal and external IP addresses.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "Instances are created with internal IP addresses only.",
          "value": "INTERNAL"
        }
      ]
    },
    "google-native:appengine/v1:NetworkResponse": {
      "description": "Extra network settings. Only applicable in the App Engine flexible environment.",
      "properties": {
        "forwardedPorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment."
        },
        "instanceIpMode": {
          "type": "string",
          "description": "The IP mode for instances. Only applicable in the App Engine flexible environment."
        },
        "instanceTag": {
          "type": "string",
          "description": "Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment."
        },
        "name": {
          "type": "string",
          "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default."
        },
        "sessionAffinity": {
          "type": "boolean",
          "description": "Enable session affinity. Only applicable in the App Engine flexible environment."
        },
        "subnetworkName": {
          "type": "string",
          "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application."
        }
      },
      "type": "object",
      "required": [
        "forwardedPorts",
        "instanceIpMode",
        "instanceTag",
        "name",
        "sessionAffinity",
        "subnetworkName"
      ]
    },
    "google-native:appengine/v1:NetworkUtilization": {
      "description": "Target scaling by network usage. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetReceivedBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes received per second."
        },
        "targetReceivedPacketsPerSecond": {
          "type": "integer",
          "description": "Target packets received per second."
        },
        "targetSentBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes sent per second."
        },
        "targetSentPacketsPerSecond": {
          "type": "integer",
          "description": "Target packets sent per second."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:NetworkUtilizationResponse": {
      "description": "Target scaling by network usage. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetReceivedBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes received per second."
        },
        "targetReceivedPacketsPerSecond": {
          "type": "integer",
          "description": "Target packets received per second."
        },
        "targetSentBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes sent per second."
        },
        "targetSentPacketsPerSecond": {
          "type": "integer",
          "description": "Target packets sent per second."
        }
      },
      "type": "object",
      "required": [
        "targetReceivedBytesPerSecond",
        "targetReceivedPacketsPerSecond",
        "targetSentBytesPerSecond",
        "targetSentPacketsPerSecond"
      ]
    },
    "google-native:appengine/v1:ReadinessCheck": {
      "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.",
      "properties": {
        "appStartTimeout": {
          "type": "string",
          "description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic."
        },
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed checks required before removing traffic."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\""
        },
        "path": {
          "type": "string",
          "description": "The request path."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful checks required before receiving traffic."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the check is considered failed."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ReadinessCheckResponse": {
      "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.",
      "properties": {
        "appStartTimeout": {
          "type": "string",
          "description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic."
        },
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed checks required before removing traffic."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\""
        },
        "path": {
          "type": "string",
          "description": "The request path."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful checks required before receiving traffic."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the check is considered failed."
        }
      },
      "type": "object",
      "required": [
        "appStartTimeout",
        "checkInterval",
        "failureThreshold",
        "host",
        "path",
        "successThreshold",
        "timeout"
      ]
    },
    "google-native:appengine/v1:RequestUtilization": {
      "description": "Target scaling by request utilization. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetConcurrentRequests": {
          "type": "integer",
          "description": "Target number of concurrent requests."
        },
        "targetRequestCountPerSecond": {
          "type": "integer",
          "description": "Target requests per second."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:RequestUtilizationResponse": {
      "description": "Target scaling by request utilization. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetConcurrentRequests": {
          "type": "integer",
          "description": "Target number of concurrent requests."
        },
        "targetRequestCountPerSecond": {
          "type": "integer",
          "description": "Target requests per second."
        }
      },
      "type": "object",
      "required": [
        "targetConcurrentRequests",
        "targetRequestCountPerSecond"
      ]
    },
    "google-native:appengine/v1:ResourceRecordResponse": {
      "description": "A DNS resource record.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'."
        },
        "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)."
        },
        "type": {
          "type": "string",
          "description": "Resource record type. Example: AAAA."
        }
      },
      "type": "object",
      "required": [
        "name",
        "rrdata",
        "type"
      ]
    },
    "google-native:appengine/v1:Resources": {
      "description": "Machine resources for a version.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Number of CPU cores needed."
        },
        "diskGb": {
          "type": "number",
          "description": "Disk size (GB) needed."
        },
        "kmsKeyReference": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk"
        },
        "memoryGb": {
          "type": "number",
          "description": "Memory (GB) needed."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:Volume"
          },
          "description": "User specified volumes."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ResourcesResponse": {
      "description": "Machine resources for a version.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Number of CPU cores needed."
        },
        "diskGb": {
          "type": "number",
          "description": "Disk size (GB) needed."
        },
        "kmsKeyReference": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk"
        },
        "memoryGb": {
          "type": "number",
          "description": "Memory (GB) needed."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:VolumeResponse"
          },
          "description": "User specified volumes."
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "diskGb",
        "kmsKeyReference",
        "memoryGb",
        "volumes"
      ]
    },
    "google-native:appengine/v1:ScriptHandler": {
      "description": "Executes a script to handle the request that matches the URL pattern.",
      "properties": {
        "scriptPath": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ScriptHandlerResponse": {
      "description": "Executes a script to handle the request that matches the URL pattern.",
      "properties": {
        "scriptPath": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        }
      },
      "type": "object",
      "required": [
        "scriptPath"
      ]
    },
    "google-native:appengine/v1:SslSettings": {
      "description": "SSL configuration for a DomainMapping resource.",
      "properties": {
        "certificateId": {
          "type": "string",
          "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify SslManagementType.MANUAL on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345."
        },
        "sslManagementType": {
          "$ref": "#/types/google-native:appengine%2Fv1:SslSettingsSslManagementType",
          "description": "SSL management type for this domain. If AUTOMATIC, a managed certificate is automatically provisioned. If MANUAL, certificate_id must be manually specified in order to configure SSL for this domain."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:SslSettingsResponse": {
      "description": "SSL configuration for a DomainMapping resource.",
      "properties": {
        "certificateId": {
          "type": "string",
          "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify SslManagementType.MANUAL on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345."
        },
        "pendingManagedCertificateId": {
          "type": "string",
          "description": "ID of the managed AuthorizedCertificate resource currently being provisioned, if applicable. Until the new managed certificate has been successfully provisioned, the previous SSL state will be preserved. Once the provisioning process completes, the certificate_id field will reflect the new managed certificate and this field will be left empty. To remove SSL support while there is still a pending managed certificate, clear the certificate_id field with an UpdateDomainMappingRequest."
        },
        "sslManagementType": {
          "type": "string",
          "description": "SSL management type for this domain. If AUTOMATIC, a managed certificate is automatically provisioned. If MANUAL, certificate_id must be manually specified in order to configure SSL for this domain."
        }
      },
      "type": "object",
      "required": [
        "certificateId",
        "pendingManagedCertificateId",
        "sslManagementType"
      ]
    },
    "google-native:appengine/v1:SslSettingsSslManagementType": {
      "description": "SSL management type for this domain. If AUTOMATIC, a managed certificate is automatically provisioned. If MANUAL, certificate_id must be manually specified in order to configure SSL for this domain.",
      "type": "string",
      "enum": [
        {
          "name": "SslManagementTypeUnspecified",
          "description": "Defaults to AUTOMATIC.",
          "value": "SSL_MANAGEMENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Automatic",
          "description": "SSL support for this domain is configured automatically. The mapped SSL certificate will be automatically renewed.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Manual",
          "description": "SSL support for this domain is configured manually by the user. Either the domain has no SSL support or a user-obtained SSL certificate has been explictly mapped to this domain.",
          "value": "MANUAL"
        }
      ]
    },
    "google-native:appengine/v1:StandardSchedulerSettings": {
      "description": "Scheduler settings for standard environment.",
      "properties": {
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances to run for this version. Set to zero to disable max_instances configuration."
        },
        "minInstances": {
          "type": "integer",
          "description": "Minimum number of instances to run for this version. Set to zero to disable min_instances configuration."
        },
        "targetCpuUtilization": {
          "type": "number",
          "description": "Target CPU utilization ratio to maintain when scaling."
        },
        "targetThroughputUtilization": {
          "type": "number",
          "description": "Target throughput utilization ratio to maintain when scaling"
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:StandardSchedulerSettingsResponse": {
      "description": "Scheduler settings for standard environment.",
      "properties": {
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances to run for this version. Set to zero to disable max_instances configuration."
        },
        "minInstances": {
          "type": "integer",
          "description": "Minimum number of instances to run for this version. Set to zero to disable min_instances configuration."
        },
        "targetCpuUtilization": {
          "type": "number",
          "description": "Target CPU utilization ratio to maintain when scaling."
        },
        "targetThroughputUtilization": {
          "type": "number",
          "description": "Target throughput utilization ratio to maintain when scaling"
        }
      },
      "type": "object",
      "required": [
        "maxInstances",
        "minInstances",
        "targetCpuUtilization",
        "targetThroughputUtilization"
      ]
    },
    "google-native:appengine/v1:StaticFilesHandler": {
      "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.",
      "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 static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas."
        },
        "expiration": {
          "type": "string",
          "description": "Time a static file served by this handler should be cached by web proxies and browsers."
        },
        "httpHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP headers to use for all responses from these URLs."
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension."
        },
        "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."
        },
        "requireMatchingFile": {
          "type": "boolean",
          "description": "Whether this handler should match the request if the file referenced by the handler does not exist."
        },
        "uploadPathRegex": {
          "type": "string",
          "description": "Regular expression that matches the file paths for all files that should be referenced by this handler."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:StaticFilesHandlerResponse": {
      "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.",
      "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 static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas."
        },
        "expiration": {
          "type": "string",
          "description": "Time a static file served by this handler should be cached by web proxies and browsers."
        },
        "httpHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP headers to use for all responses from these URLs."
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension."
        },
        "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."
        },
        "requireMatchingFile": {
          "type": "boolean",
          "description": "Whether this handler should match the request if the file referenced by the handler does not exist."
        },
        "uploadPathRegex": {
          "type": "string",
          "description": "Regular expression that matches the file paths for all files that should be referenced by this handler."
        }
      },
      "type": "object",
      "required": [
        "applicationReadable",
        "expiration",
        "httpHeaders",
        "mimeType",
        "path",
        "requireMatchingFile",
        "uploadPathRegex"
      ]
    },
    "google-native:appengine/v1:UrlDispatchRule": {
      "description": "Rules to match an HTTP request and dispatch that request to a service.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\"."
        },
        "path": {
          "type": "string",
          "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters."
        },
        "service": {
          "type": "string",
          "description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:UrlDispatchRuleResponse": {
      "description": "Rules to match an HTTP request and dispatch that request to a service.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\"."
        },
        "path": {
          "type": "string",
          "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters."
        },
        "service": {
          "type": "string",
          "description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default."
        }
      },
      "type": "object",
      "required": [
        "domain",
        "path",
        "service"
      ]
    },
    "google-native:appengine/v1:UrlMap": {
      "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.",
      "properties": {
        "apiEndpoint": {
          "$ref": "#/types/google-native:appengine%2Fv1:ApiEndpointHandler",
          "description": "Uses API Endpoints to handle requests."
        },
        "authFailAction": {
          "$ref": "#/types/google-native:appengine%2Fv1:UrlMapAuthFailAction",
          "description": "Action to take when users access resources that require authentication. Defaults to redirect."
        },
        "login": {
          "$ref": "#/types/google-native:appengine%2Fv1:UrlMapLogin",
          "description": "Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment."
        },
        "redirectHttpResponseCode": {
          "$ref": "#/types/google-native:appengine%2Fv1:UrlMapRedirectHttpResponseCode",
          "description": "30x code to use when performing redirects for the secure field. Defaults to 302."
        },
        "script": {
          "$ref": "#/types/google-native:appengine%2Fv1:ScriptHandler",
          "description": "Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example \"script\": \"auto\"."
        },
        "securityLevel": {
          "$ref": "#/types/google-native:appengine%2Fv1:UrlMapSecurityLevel",
          "description": "Security (HTTPS) enforcement for this URL."
        },
        "staticFiles": {
          "$ref": "#/types/google-native:appengine%2Fv1:StaticFilesHandler",
          "description": "Returns the contents of a file, such as an image, as the response."
        },
        "urlRegex": {
          "type": "string",
          "description": "URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All 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."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:UrlMapAuthFailAction": {
      "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
      "type": "string",
      "enum": [
        {
          "name": "AuthFailActionUnspecified",
          "description": "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.",
          "value": "AUTH_FAIL_ACTION_UNSPECIFIED"
        },
        {
          "name": "AuthFailActionRedirect",
          "description": "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.",
          "value": "AUTH_FAIL_ACTION_REDIRECT"
        },
        {
          "name": "AuthFailActionUnauthorized",
          "description": "Rejects request with a 401 HTTP status code and an error message.",
          "value": "AUTH_FAIL_ACTION_UNAUTHORIZED"
        }
      ]
    },
    "google-native:appengine/v1:UrlMapLogin": {
      "description": "Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment.",
      "type": "string",
      "enum": [
        {
          "name": "LoginUnspecified",
          "description": "Not specified. LOGIN_OPTIONAL is assumed.",
          "value": "LOGIN_UNSPECIFIED"
        },
        {
          "name": "LoginOptional",
          "description": "Does not require that the user is signed in.",
          "value": "LOGIN_OPTIONAL"
        },
        {
          "name": "LoginAdmin",
          "description": "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.",
          "value": "LOGIN_ADMIN"
        },
        {
          "name": "LoginRequired",
          "description": "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken.",
          "value": "LOGIN_REQUIRED"
        }
      ]
    },
    "google-native:appengine/v1:UrlMapRedirectHttpResponseCode": {
      "description": "30x code to use when performing redirects for the secure field. Defaults to 302.",
      "type": "string",
      "enum": [
        {
          "name": "RedirectHttpResponseCodeUnspecified",
          "description": "Not specified. 302 is assumed.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED"
        },
        {
          "name": "RedirectHttpResponseCode301",
          "description": "301 Moved Permanently code.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_301"
        },
        {
          "name": "RedirectHttpResponseCode302",
          "description": "302 Moved Temporarily code.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_302"
        },
        {
          "name": "RedirectHttpResponseCode303",
          "description": "303 See Other code.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_303"
        },
        {
          "name": "RedirectHttpResponseCode307",
          "description": "307 Temporary Redirect code.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_307"
        }
      ]
    },
    "google-native:appengine/v1:UrlMapResponse": {
      "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.",
      "properties": {
        "apiEndpoint": {
          "$ref": "#/types/google-native:appengine%2Fv1:ApiEndpointHandlerResponse",
          "description": "Uses API Endpoints to handle requests."
        },
        "authFailAction": {
          "type": "string",
          "description": "Action to take when users access resources that require authentication. Defaults to redirect."
        },
        "login": {
          "type": "string",
          "description": "Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment."
        },
        "redirectHttpResponseCode": {
          "type": "string",
          "description": "30x code to use when performing redirects for the secure field. Defaults to 302."
        },
        "script": {
          "$ref": "#/types/google-native:appengine%2Fv1:ScriptHandlerResponse",
          "description": "Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example \"script\": \"auto\"."
        },
        "securityLevel": {
          "type": "string",
          "description": "Security (HTTPS) enforcement for this URL."
        },
        "staticFiles": {
          "$ref": "#/types/google-native:appengine%2Fv1:StaticFilesHandlerResponse",
          "description": "Returns the contents of a file, such as an image, as the response."
        },
        "urlRegex": {
          "type": "string",
          "description": "URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All 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."
        }
      },
      "type": "object",
      "required": [
        "apiEndpoint",
        "authFailAction",
        "login",
        "redirectHttpResponseCode",
        "script",
        "securityLevel",
        "staticFiles",
        "urlRegex"
      ]
    },
    "google-native:appengine/v1:UrlMapSecurityLevel": {
      "description": "Security (HTTPS) enforcement for this URL.",
      "type": "string",
      "enum": [
        {
          "name": "SecureUnspecified",
          "description": "Not specified.",
          "value": "SECURE_UNSPECIFIED"
        },
        {
          "name": "SecureDefault",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.",
          "value": "SECURE_DEFAULT"
        },
        {
          "name": "SecureNever",
          "description": "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.",
          "value": "SECURE_NEVER"
        },
        {
          "name": "SecureOptional",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
          "value": "SECURE_OPTIONAL"
        },
        {
          "name": "SecureAlways",
          "description": "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
          "value": "SECURE_ALWAYS"
        }
      ]
    },
    "google-native:appengine/v1:VersionInboundServicesItem": {
      "type": "string",
      "enum": [
        {
          "name": "InboundServiceUnspecified",
          "description": "Not specified.",
          "value": "INBOUND_SERVICE_UNSPECIFIED"
        },
        {
          "name": "InboundServiceMail",
          "description": "Allows an application to receive mail.",
          "value": "INBOUND_SERVICE_MAIL"
        },
        {
          "name": "InboundServiceMailBounce",
          "description": "Allows an application to receive email-bound notifications.",
          "value": "INBOUND_SERVICE_MAIL_BOUNCE"
        },
        {
          "name": "InboundServiceXmppError",
          "description": "Allows an application to receive error stanzas.",
          "value": "INBOUND_SERVICE_XMPP_ERROR"
        },
        {
          "name": "InboundServiceXmppMessage",
          "description": "Allows an application to receive instant messages.",
          "value": "INBOUND_SERVICE_XMPP_MESSAGE"
        },
        {
          "name": "InboundServiceXmppSubscribe",
          "description": "Allows an application to receive user subscription POSTs.",
          "value": "INBOUND_SERVICE_XMPP_SUBSCRIBE"
        },
        {
          "name": "InboundServiceXmppPresence",
          "description": "Allows an application to receive a user's chat presence.",
          "value": "INBOUND_SERVICE_XMPP_PRESENCE"
        },
        {
          "name": "InboundServiceChannelPresence",
          "description": "Registers an application for notifications when a client connects or disconnects from a channel.",
          "value": "INBOUND_SERVICE_CHANNEL_PRESENCE"
        },
        {
          "name": "InboundServiceWarmup",
          "description": "Enables warmup requests.",
          "value": "INBOUND_SERVICE_WARMUP"
        }
      ]
    },
    "google-native:appengine/v1:VersionServingStatus": {
      "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.",
      "type": "string",
      "enum": [
        {
          "name": "ServingStatusUnspecified",
          "description": "Not specified.",
          "value": "SERVING_STATUS_UNSPECIFIED"
        },
        {
          "name": "Serving",
          "description": "Currently serving. Instances are created according to the scaling settings of the version.",
          "value": "SERVING"
        },
        {
          "name": "Stopped",
          "description": "Disabled. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING.",
          "value": "STOPPED"
        }
      ]
    },
    "google-native:appengine/v1:Volume": {
      "description": "Volumes mounted within the app container. Only applicable in the App Engine flexible environment.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Unique name for the volume."
        },
        "sizeGb": {
          "type": "number",
          "description": "Volume size in gigabytes."
        },
        "volumeType": {
          "type": "string",
          "description": "Underlying volume type, e.g. 'tmpfs'."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:VolumeResponse": {
      "description": "Volumes mounted within the app container. Only applicable in the App Engine flexible environment.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Unique name for the volume."
        },
        "sizeGb": {
          "type": "number",
          "description": "Volume size in gigabytes."
        },
        "volumeType": {
          "type": "string",
          "description": "Underlying volume type, e.g. 'tmpfs'."
        }
      },
      "type": "object",
      "required": [
        "name",
        "sizeGb",
        "volumeType"
      ]
    },
    "google-native:appengine/v1:VpcAccessConnector": {
      "description": "VPC access connector specification.",
      "properties": {
        "egressSetting": {
          "$ref": "#/types/google-native:appengine%2Fv1:VpcAccessConnectorEgressSetting",
          "description": "The egress setting for the connector, controlling what traffic is diverted through it."
        },
        "name": {
          "type": "string",
          "description": "Full Serverless VPC Access Connector name e.g. projects/my-project/locations/us-central1/connectors/c1."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:VpcAccessConnectorEgressSetting": {
      "description": "The egress setting for the connector, controlling what traffic is diverted through it.",
      "type": "string",
      "enum": [
        {
          "name": "EgressSettingUnspecified",
          "value": "EGRESS_SETTING_UNSPECIFIED"
        },
        {
          "name": "AllTraffic",
          "description": "Force the use of VPC Access for all egress traffic from the function.",
          "value": "ALL_TRAFFIC"
        },
        {
          "name": "PrivateIpRanges",
          "description": "Use the VPC Access Connector for private IP space from RFC1918.",
          "value": "PRIVATE_IP_RANGES"
        }
      ]
    },
    "google-native:appengine/v1:VpcAccessConnectorResponse": {
      "description": "VPC access connector specification.",
      "properties": {
        "egressSetting": {
          "type": "string",
          "description": "The egress setting for the connector, controlling what traffic is diverted through it."
        },
        "name": {
          "type": "string",
          "description": "Full Serverless VPC Access Connector name e.g. projects/my-project/locations/us-central1/connectors/c1."
        }
      },
      "type": "object",
      "required": [
        "egressSetting",
        "name"
      ]
    },
    "google-native:appengine/v1:ZipInfo": {
      "description": "The zip file information for a zip deployment.",
      "properties": {
        "filesCount": {
          "type": "integer",
          "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow."
        },
        "sourceUrl": {
          "type": "string",
          "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1:ZipInfoResponse": {
      "description": "The zip file information for a zip deployment.",
      "properties": {
        "filesCount": {
          "type": "integer",
          "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow."
        },
        "sourceUrl": {
          "type": "string",
          "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'."
        }
      },
      "type": "object",
      "required": [
        "filesCount",
        "sourceUrl"
      ]
    },
    "google-native:appengine/v1alpha:CertificateRawData": {
      "description": "An SSL certificate obtained from a certificate authority.",
      "properties": {
        "privateKey": {
          "type": "string",
          "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly"
        },
        "publicCertificate": {
          "type": "string",
          "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- "
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1alpha:CertificateRawDataResponse": {
      "description": "An SSL certificate obtained from a certificate authority.",
      "properties": {
        "privateKey": {
          "type": "string",
          "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly"
        },
        "publicCertificate": {
          "type": "string",
          "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- "
        }
      },
      "type": "object",
      "required": [
        "privateKey",
        "publicCertificate"
      ]
    },
    "google-native:appengine/v1alpha:ManagedCertificateResponse": {
      "description": "A certificate managed by App Engine.",
      "properties": {
        "lastRenewalTime": {
          "type": "string",
          "description": "Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus."
        },
        "status": {
          "type": "string",
          "description": "Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt."
        }
      },
      "type": "object",
      "required": [
        "lastRenewalTime",
        "status"
      ]
    },
    "google-native:appengine/v1alpha:ResourceRecordResponse": {
      "description": "A DNS resource record.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'."
        },
        "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)."
        },
        "type": {
          "type": "string",
          "description": "Resource record type. Example: AAAA."
        }
      },
      "type": "object",
      "required": [
        "name",
        "rrdata",
        "type"
      ]
    },
    "google-native:appengine/v1alpha:SslSettings": {
      "description": "SSL configuration for a DomainMapping resource.",
      "properties": {
        "certificateId": {
          "type": "string",
          "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify no_managed_certificate on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1alpha:SslSettingsResponse": {
      "description": "SSL configuration for a DomainMapping resource.",
      "properties": {
        "certificateId": {
          "type": "string",
          "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify no_managed_certificate on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345."
        },
        "isManagedCertificate": {
          "type": "boolean",
          "description": "Whether the mapped certificate is an App Engine managed certificate. Managed certificates are created by default with a domain mapping. To opt out, specify no_managed_certificate on a CREATE or UPDATE request."
        }
      },
      "type": "object",
      "required": [
        "certificateId",
        "isManagedCertificate"
      ]
    },
    "google-native:appengine/v1beta:ApiConfigHandler": {
      "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration for API handlers.",
      "properties": {
        "authFailAction": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ApiConfigHandlerAuthFailAction",
          "description": "Action to take when users access resources that require authentication. Defaults to redirect."
        },
        "login": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ApiConfigHandlerLogin",
          "description": "Level of login required to access this resource. Defaults to optional."
        },
        "script": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        },
        "securityLevel": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ApiConfigHandlerSecurityLevel",
          "description": "Security (HTTPS) enforcement for this URL."
        },
        "url": {
          "type": "string",
          "description": "URL to serve the endpoint at."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ApiConfigHandlerAuthFailAction": {
      "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
      "type": "string",
      "enum": [
        {
          "name": "AuthFailActionUnspecified",
          "description": "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.",
          "value": "AUTH_FAIL_ACTION_UNSPECIFIED"
        },
        {
          "name": "AuthFailActionRedirect",
          "description": "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.",
          "value": "AUTH_FAIL_ACTION_REDIRECT"
        },
        {
          "name": "AuthFailActionUnauthorized",
          "description": "Rejects request with a 401 HTTP status code and an error message.",
          "value": "AUTH_FAIL_ACTION_UNAUTHORIZED"
        }
      ]
    },
    "google-native:appengine/v1beta:ApiConfigHandlerLogin": {
      "description": "Level of login required to access this resource. Defaults to optional.",
      "type": "string",
      "enum": [
        {
          "name": "LoginUnspecified",
          "description": "Not specified. LOGIN_OPTIONAL is assumed.",
          "value": "LOGIN_UNSPECIFIED"
        },
        {
          "name": "LoginOptional",
          "description": "Does not require that the user is signed in.",
          "value": "LOGIN_OPTIONAL"
        },
        {
          "name": "LoginAdmin",
          "description": "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.",
          "value": "LOGIN_ADMIN"
        },
        {
          "name": "LoginRequired",
          "description": "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken.",
          "value": "LOGIN_REQUIRED"
        }
      ]
    },
    "google-native:appengine/v1beta:ApiConfigHandlerResponse": {
      "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration for API handlers.",
      "properties": {
        "authFailAction": {
          "type": "string",
          "description": "Action to take when users access resources that require authentication. Defaults to redirect."
        },
        "login": {
          "type": "string",
          "description": "Level of login required to access this resource. Defaults to optional."
        },
        "script": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        },
        "securityLevel": {
          "type": "string",
          "description": "Security (HTTPS) enforcement for this URL."
        },
        "url": {
          "type": "string",
          "description": "URL to serve the endpoint at."
        }
      },
      "type": "object",
      "required": [
        "authFailAction",
        "login",
        "script",
        "securityLevel",
        "url"
      ]
    },
    "google-native:appengine/v1beta:ApiConfigHandlerSecurityLevel": {
      "description": "Security (HTTPS) enforcement for this URL.",
      "type": "string",
      "enum": [
        {
          "name": "SecureUnspecified",
          "description": "Not specified.",
          "value": "SECURE_UNSPECIFIED"
        },
        {
          "name": "SecureDefault",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.",
          "value": "SECURE_DEFAULT"
        },
        {
          "name": "SecureNever",
          "description": "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.",
          "value": "SECURE_NEVER"
        },
        {
          "name": "SecureOptional",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
          "value": "SECURE_OPTIONAL"
        },
        {
          "name": "SecureAlways",
          "description": "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
          "value": "SECURE_ALWAYS"
        }
      ]
    },
    "google-native:appengine/v1beta:ApiEndpointHandler": {
      "description": "Uses Google Cloud Endpoints to handle requests.",
      "properties": {
        "scriptPath": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ApiEndpointHandlerResponse": {
      "description": "Uses Google Cloud Endpoints to handle requests.",
      "properties": {
        "scriptPath": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        }
      },
      "type": "object",
      "required": [
        "scriptPath"
      ]
    },
    "google-native:appengine/v1beta:AppDatabaseType": {
      "description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "Database type is unspecified.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "CloudDatastore",
          "description": "Cloud Datastore",
          "value": "CLOUD_DATASTORE"
        },
        {
          "name": "CloudFirestore",
          "description": "Cloud Firestore Native",
          "value": "CLOUD_FIRESTORE"
        },
        {
          "name": "CloudDatastoreCompatibility",
          "description": "Cloud Firestore in Datastore Mode",
          "value": "CLOUD_DATASTORE_COMPATIBILITY"
        }
      ]
    },
    "google-native:appengine/v1beta:AppServingStatus": {
      "description": "Serving status of this application.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Serving status is unspecified.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Serving",
          "description": "Application is serving.",
          "value": "SERVING"
        },
        {
          "name": "UserDisabled",
          "description": "Application has been disabled by the user.",
          "value": "USER_DISABLED"
        },
        {
          "name": "SystemDisabled",
          "description": "Application has been disabled by the system.",
          "value": "SYSTEM_DISABLED"
        }
      ]
    },
    "google-native:appengine/v1beta:AutomaticScaling": {
      "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
      "properties": {
        "coolDownPeriod": {
          "type": "string",
          "description": "The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:CpuUtilization",
          "description": "Target scaling by CPU usage."
        },
        "customMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:CustomMetric"
          },
          "description": "Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment."
        },
        "diskUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:DiskUtilization",
          "description": "Target scaling by disk usage."
        },
        "maxConcurrentRequests": {
          "type": "integer",
          "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value."
        },
        "maxIdleInstances": {
          "type": "integer",
          "description": "Maximum number of idle instances that should be maintained for this version."
        },
        "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."
        },
        "maxTotalInstances": {
          "type": "integer",
          "description": "Maximum number of instances that should be started to handle requests for this version."
        },
        "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."
        },
        "minPendingLatency": {
          "type": "string",
          "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it."
        },
        "minTotalInstances": {
          "type": "integer",
          "description": "Minimum number of running instances that should be maintained for this version."
        },
        "networkUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:NetworkUtilization",
          "description": "Target scaling by network usage."
        },
        "requestUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:RequestUtilization",
          "description": "Target scaling by request utilization."
        },
        "standardSchedulerSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:StandardSchedulerSettings",
          "description": "Scheduler settings for standard environment."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:AutomaticScalingResponse": {
      "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.",
      "properties": {
        "coolDownPeriod": {
          "type": "string",
          "description": "The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:CpuUtilizationResponse",
          "description": "Target scaling by CPU usage."
        },
        "customMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:CustomMetricResponse"
          },
          "description": "Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment."
        },
        "diskUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:DiskUtilizationResponse",
          "description": "Target scaling by disk usage."
        },
        "maxConcurrentRequests": {
          "type": "integer",
          "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value."
        },
        "maxIdleInstances": {
          "type": "integer",
          "description": "Maximum number of idle instances that should be maintained for this version."
        },
        "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."
        },
        "maxTotalInstances": {
          "type": "integer",
          "description": "Maximum number of instances that should be started to handle requests for this version."
        },
        "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."
        },
        "minPendingLatency": {
          "type": "string",
          "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it."
        },
        "minTotalInstances": {
          "type": "integer",
          "description": "Minimum number of running instances that should be maintained for this version."
        },
        "networkUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:NetworkUtilizationResponse",
          "description": "Target scaling by network usage."
        },
        "requestUtilization": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:RequestUtilizationResponse",
          "description": "Target scaling by request utilization."
        },
        "standardSchedulerSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:StandardSchedulerSettingsResponse",
          "description": "Scheduler settings for standard environment."
        }
      },
      "type": "object",
      "required": [
        "coolDownPeriod",
        "cpuUtilization",
        "customMetrics",
        "diskUtilization",
        "maxConcurrentRequests",
        "maxIdleInstances",
        "maxPendingLatency",
        "maxTotalInstances",
        "minIdleInstances",
        "minPendingLatency",
        "minTotalInstances",
        "networkUtilization",
        "requestUtilization",
        "standardSchedulerSettings"
      ]
    },
    "google-native:appengine/v1beta:BasicScaling": {
      "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
      "properties": {
        "idleTimeout": {
          "type": "string",
          "description": "Duration of time after the last request that an instance must wait before the instance is shut down."
        },
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances to create for this version."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:BasicScalingResponse": {
      "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.",
      "properties": {
        "idleTimeout": {
          "type": "string",
          "description": "Duration of time after the last request that an instance must wait before the instance is shut down."
        },
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances to create for this version."
        }
      },
      "type": "object",
      "required": [
        "idleTimeout",
        "maxInstances"
      ]
    },
    "google-native:appengine/v1beta:BuildInfo": {
      "description": "Google Cloud Build information.",
      "properties": {
        "cloudBuildId": {
          "type": "string",
          "description": "The Google Cloud Build id. Example: \"f966068f-08b2-42c8-bdfe-74137dff2bf9\""
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:BuildInfoResponse": {
      "description": "Google Cloud Build information.",
      "properties": {
        "cloudBuildId": {
          "type": "string",
          "description": "The Google Cloud Build id. Example: \"f966068f-08b2-42c8-bdfe-74137dff2bf9\""
        }
      },
      "type": "object",
      "required": [
        "cloudBuildId"
      ]
    },
    "google-native:appengine/v1beta:CertificateRawData": {
      "description": "An SSL certificate obtained from a certificate authority.",
      "properties": {
        "privateKey": {
          "type": "string",
          "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly"
        },
        "publicCertificate": {
          "type": "string",
          "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- "
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:CertificateRawDataResponse": {
      "description": "An SSL certificate obtained from a certificate authority.",
      "properties": {
        "privateKey": {
          "type": "string",
          "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- @InputOnly"
        },
        "publicCertificate": {
          "type": "string",
          "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- "
        }
      },
      "type": "object",
      "required": [
        "privateKey",
        "publicCertificate"
      ]
    },
    "google-native:appengine/v1beta:CloudBuildOptions": {
      "description": "Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly.",
      "properties": {
        "appYamlPath": {
          "type": "string",
          "description": "Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details."
        },
        "cloudBuildTimeout": {
          "type": "string",
          "description": "The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:CloudBuildOptionsResponse": {
      "description": "Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly.",
      "properties": {
        "appYamlPath": {
          "type": "string",
          "description": "Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details."
        },
        "cloudBuildTimeout": {
          "type": "string",
          "description": "The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes."
        }
      },
      "type": "object",
      "required": [
        "appYamlPath",
        "cloudBuildTimeout"
      ]
    },
    "google-native:appengine/v1beta:ContainerInfo": {
      "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.",
      "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. Examples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\""
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ContainerInfoResponse": {
      "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.",
      "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. Examples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\""
        }
      },
      "type": "object",
      "required": [
        "image"
      ]
    },
    "google-native:appengine/v1beta:CpuUtilization": {
      "description": "Target scaling by CPU usage.",
      "properties": {
        "aggregationWindowLength": {
          "type": "string",
          "description": "Period of time over which CPU utilization is calculated."
        },
        "targetUtilization": {
          "type": "number",
          "description": "Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:CpuUtilizationResponse": {
      "description": "Target scaling by CPU usage.",
      "properties": {
        "aggregationWindowLength": {
          "type": "string",
          "description": "Period of time over which CPU utilization is calculated."
        },
        "targetUtilization": {
          "type": "number",
          "description": "Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1."
        }
      },
      "type": "object",
      "required": [
        "aggregationWindowLength",
        "targetUtilization"
      ]
    },
    "google-native:appengine/v1beta:CustomMetric": {
      "description": "Allows autoscaling based on Stackdriver metrics.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Allows filtering on the metric's fields."
        },
        "metricName": {
          "type": "string",
          "description": "The name of the metric."
        },
        "singleInstanceAssignment": {
          "type": "number",
          "description": "May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment."
        },
        "targetType": {
          "type": "string",
          "description": "The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc."
        },
        "targetUtilization": {
          "type": "number",
          "description": "The target value for the metric."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:CustomMetricResponse": {
      "description": "Allows autoscaling based on Stackdriver metrics.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Allows filtering on the metric's fields."
        },
        "metricName": {
          "type": "string",
          "description": "The name of the metric."
        },
        "singleInstanceAssignment": {
          "type": "number",
          "description": "May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment."
        },
        "targetType": {
          "type": "string",
          "description": "The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc."
        },
        "targetUtilization": {
          "type": "number",
          "description": "The target value for the metric."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "metricName",
        "singleInstanceAssignment",
        "targetType",
        "targetUtilization"
      ]
    },
    "google-native:appengine/v1beta:Deployment": {
      "description": "Code and application artifacts used to deploy a version to App Engine.",
      "properties": {
        "build": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:BuildInfo",
          "description": "Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment."
        },
        "cloudBuildOptions": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:CloudBuildOptions",
          "description": "Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip."
        },
        "container": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ContainerInfo",
          "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
        },
        "files": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call."
        },
        "zip": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ZipInfo",
          "description": "The zip file for this deployment, if this is a zip deployment."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:DeploymentResponse": {
      "description": "Code and application artifacts used to deploy a version to App Engine.",
      "properties": {
        "build": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:BuildInfoResponse",
          "description": "Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment."
        },
        "cloudBuildOptions": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:CloudBuildOptionsResponse",
          "description": "Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip."
        },
        "container": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ContainerInfoResponse",
          "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment."
        },
        "files": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call."
        },
        "zip": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ZipInfoResponse",
          "description": "The zip file for this deployment, if this is a zip deployment."
        }
      },
      "type": "object",
      "required": [
        "build",
        "cloudBuildOptions",
        "container",
        "files",
        "zip"
      ]
    },
    "google-native:appengine/v1beta:DiskUtilization": {
      "description": "Target scaling by disk usage. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetReadBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes read per second."
        },
        "targetReadOpsPerSecond": {
          "type": "integer",
          "description": "Target ops read per seconds."
        },
        "targetWriteBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes written per second."
        },
        "targetWriteOpsPerSecond": {
          "type": "integer",
          "description": "Target ops written per second."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:DiskUtilizationResponse": {
      "description": "Target scaling by disk usage. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetReadBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes read per second."
        },
        "targetReadOpsPerSecond": {
          "type": "integer",
          "description": "Target ops read per seconds."
        },
        "targetWriteBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes written per second."
        },
        "targetWriteOpsPerSecond": {
          "type": "integer",
          "description": "Target ops written per second."
        }
      },
      "type": "object",
      "required": [
        "targetReadBytesPerSecond",
        "targetReadOpsPerSecond",
        "targetWriteBytesPerSecond",
        "targetWriteOpsPerSecond"
      ]
    },
    "google-native:appengine/v1beta:EndpointsApiService": {
      "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Endpoints service configuration ID as specified by the Service Management API. For example \"2016-09-19r1\".By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted."
        },
        "disableTraceSampling": {
          "type": "boolean",
          "description": "Enable or disable trace sampling. By default, this is set to false for enabled."
        },
        "name": {
          "type": "string",
          "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\""
        },
        "rolloutStrategy": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:EndpointsApiServiceRolloutStrategy",
          "description": "Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:EndpointsApiServiceResponse": {
      "description": "Google Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Endpoints service configuration ID as specified by the Service Management API. For example \"2016-09-19r1\".By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted."
        },
        "disableTraceSampling": {
          "type": "boolean",
          "description": "Enable or disable trace sampling. By default, this is set to false for enabled."
        },
        "name": {
          "type": "string",
          "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\""
        },
        "rolloutStrategy": {
          "type": "string",
          "description": "Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted."
        }
      },
      "type": "object",
      "required": [
        "configId",
        "disableTraceSampling",
        "name",
        "rolloutStrategy"
      ]
    },
    "google-native:appengine/v1beta:EndpointsApiServiceRolloutStrategy": {
      "description": "Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedRolloutStrategy",
          "description": "Not specified. Defaults to FIXED.",
          "value": "UNSPECIFIED_ROLLOUT_STRATEGY"
        },
        {
          "name": "Fixed",
          "description": "Endpoints service configuration ID will be fixed to the configuration ID specified by config_id.",
          "value": "FIXED"
        },
        {
          "name": "Managed",
          "description": "Endpoints service configuration ID will be updated with each rollout.",
          "value": "MANAGED"
        }
      ]
    },
    "google-native:appengine/v1beta:Entrypoint": {
      "description": "The entrypoint for the application.",
      "properties": {
        "shell": {
          "type": "string",
          "description": "The format should be a shell command that can be fed to bash -c."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:EntrypointResponse": {
      "description": "The entrypoint for the application.",
      "properties": {
        "shell": {
          "type": "string",
          "description": "The format should be a shell command that can be fed to bash -c."
        }
      },
      "type": "object",
      "required": [
        "shell"
      ]
    },
    "google-native:appengine/v1beta:ErrorHandler": {
      "description": "Custom static error page to be served when an error occurs.",
      "properties": {
        "errorCode": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ErrorHandlerErrorCode",
          "description": "Error condition this handler applies to."
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type of file. Defaults to text/html."
        },
        "staticFile": {
          "type": "string",
          "description": "Static file content to be served for this error."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ErrorHandlerErrorCode": {
      "description": "Error condition this handler applies to.",
      "type": "string",
      "enum": [
        {
          "name": "ErrorCodeUnspecified",
          "description": "Not specified. ERROR_CODE_DEFAULT is assumed.",
          "value": "ERROR_CODE_UNSPECIFIED"
        },
        {
          "name": "ErrorCodeDefault",
          "description": "All other error types.",
          "value": "ERROR_CODE_DEFAULT"
        },
        {
          "name": "ErrorCodeOverQuota",
          "description": "Application has exceeded a resource quota.",
          "value": "ERROR_CODE_OVER_QUOTA"
        },
        {
          "name": "ErrorCodeDosApiDenial",
          "description": "Client blocked by the application's Denial of Service protection configuration.",
          "value": "ERROR_CODE_DOS_API_DENIAL"
        },
        {
          "name": "ErrorCodeTimeout",
          "description": "Deadline reached before the application responds.",
          "value": "ERROR_CODE_TIMEOUT"
        }
      ]
    },
    "google-native:appengine/v1beta:ErrorHandlerResponse": {
      "description": "Custom static error page to be served when an error occurs.",
      "properties": {
        "errorCode": {
          "type": "string",
          "description": "Error condition this handler applies to."
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type of file. Defaults to text/html."
        },
        "staticFile": {
          "type": "string",
          "description": "Static file content to be served for this error."
        }
      },
      "type": "object",
      "required": [
        "errorCode",
        "mimeType",
        "staticFile"
      ]
    },
    "google-native:appengine/v1beta:FeatureSettings": {
      "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.",
      "properties": {
        "splitHealthChecks": {
          "type": "boolean",
          "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed."
        },
        "useContainerOptimizedOs": {
          "type": "boolean",
          "description": "If true, use Container-Optimized OS (https://cloud.google.com/container-optimized-os/) base image for VMs, rather than a base Debian image."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:FeatureSettingsResponse": {
      "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.",
      "properties": {
        "splitHealthChecks": {
          "type": "boolean",
          "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed."
        },
        "useContainerOptimizedOs": {
          "type": "boolean",
          "description": "If true, use Container-Optimized OS (https://cloud.google.com/container-optimized-os/) base image for VMs, rather than a base Debian image."
        }
      },
      "type": "object",
      "required": [
        "splitHealthChecks",
        "useContainerOptimizedOs"
      ]
    },
    "google-native:appengine/v1beta:FlexibleRuntimeSettings": {
      "description": "Runtime settings for the App Engine flexible environment.",
      "properties": {
        "operatingSystem": {
          "type": "string",
          "description": "The operating system of the application runtime."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version of an App Engine flexible application."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:FlexibleRuntimeSettingsResponse": {
      "description": "Runtime settings for the App Engine flexible environment.",
      "properties": {
        "operatingSystem": {
          "type": "string",
          "description": "The operating system of the application runtime."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version of an App Engine flexible application."
        }
      },
      "type": "object",
      "required": [
        "operatingSystem",
        "runtimeVersion"
      ]
    },
    "google-native:appengine/v1beta:HealthCheck": {
      "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
      "properties": {
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "disableHealthCheck": {
          "type": "boolean",
          "description": "Whether to explicitly disable health checks for this instance."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful health checks required before receiving traffic."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\""
        },
        "restartThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed health checks required before an instance is restarted."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the health check is considered failed."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed health checks required before removing traffic."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:HealthCheckResponse": {
      "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.",
      "properties": {
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "disableHealthCheck": {
          "type": "boolean",
          "description": "Whether to explicitly disable health checks for this instance."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful health checks required before receiving traffic."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\""
        },
        "restartThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed health checks required before an instance is restarted."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the health check is considered failed."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed health checks required before removing traffic."
        }
      },
      "type": "object",
      "required": [
        "checkInterval",
        "disableHealthCheck",
        "healthyThreshold",
        "host",
        "restartThreshold",
        "timeout",
        "unhealthyThreshold"
      ]
    },
    "google-native:appengine/v1beta:IdentityAwareProxy": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly"
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:IdentityAwareProxyResponse": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly"
        },
        "oauth2ClientSecretSha256": {
          "type": "string",
          "description": "Hex-encoded SHA-256 hash of the client secret."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "oauth2ClientId",
        "oauth2ClientSecret",
        "oauth2ClientSecretSha256"
      ]
    },
    "google-native:appengine/v1beta:IngressRuleAction": {
      "description": "The action to take on matched requests.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedAction",
          "value": "UNSPECIFIED_ACTION"
        },
        {
          "name": "Allow",
          "description": "Matching requests are allowed.",
          "value": "ALLOW"
        },
        {
          "name": "Deny",
          "description": "Matching requests are denied.",
          "value": "DENY"
        }
      ]
    },
    "google-native:appengine/v1beta:Library": {
      "description": "Third-party Python runtime library that is required by the application.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the library. Example: \"django\"."
        },
        "version": {
          "type": "string",
          "description": "Version of the library to select, or \"latest\"."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:LibraryResponse": {
      "description": "Third-party Python runtime library that is required by the application.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the library. Example: \"django\"."
        },
        "version": {
          "type": "string",
          "description": "Version of the library to select, or \"latest\"."
        }
      },
      "type": "object",
      "required": [
        "name",
        "version"
      ]
    },
    "google-native:appengine/v1beta:LivenessCheck": {
      "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.",
      "properties": {
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed checks required before considering the VM unhealthy."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\""
        },
        "initialDelay": {
          "type": "string",
          "description": "The initial delay before starting to execute the checks."
        },
        "path": {
          "type": "string",
          "description": "The request path."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful checks required before considering the VM healthy."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the check is considered failed."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:LivenessCheckResponse": {
      "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.",
      "properties": {
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed checks required before considering the VM unhealthy."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\""
        },
        "initialDelay": {
          "type": "string",
          "description": "The initial delay before starting to execute the checks."
        },
        "path": {
          "type": "string",
          "description": "The request path."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful checks required before considering the VM healthy."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the check is considered failed."
        }
      },
      "type": "object",
      "required": [
        "checkInterval",
        "failureThreshold",
        "host",
        "initialDelay",
        "path",
        "successThreshold",
        "timeout"
      ]
    },
    "google-native:appengine/v1beta:ManagedCertificateResponse": {
      "description": "A certificate managed by App Engine.",
      "properties": {
        "lastRenewalTime": {
          "type": "string",
          "description": "Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus."
        },
        "status": {
          "type": "string",
          "description": "Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt."
        }
      },
      "type": "object",
      "required": [
        "lastRenewalTime",
        "status"
      ]
    },
    "google-native:appengine/v1beta:ManualScaling": {
      "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.",
      "properties": {
        "instances": {
          "type": "integer",
          "description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ManualScalingResponse": {
      "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.",
      "properties": {
        "instances": {
          "type": "integer",
          "description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function."
        }
      },
      "type": "object",
      "required": [
        "instances"
      ]
    },
    "google-native:appengine/v1beta:Network": {
      "description": "Extra network settings. Only applicable in the App Engine flexible environment.",
      "properties": {
        "forwardedPorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment."
        },
        "instanceIpMode": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:NetworkInstanceIpMode",
          "description": "The IP mode for instances. Only applicable in the App Engine flexible environment."
        },
        "instanceTag": {
          "type": "string",
          "description": "Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment."
        },
        "name": {
          "type": "string",
          "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default."
        },
        "sessionAffinity": {
          "type": "boolean",
          "description": "Enable session affinity. Only applicable in the App Engine flexible environment."
        },
        "subnetworkName": {
          "type": "string",
          "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:NetworkInstanceIpMode": {
      "description": "The IP mode for instances. Only applicable in the App Engine flexible environment.",
      "type": "string",
      "enum": [
        {
          "name": "InstanceIpModeUnspecified",
          "description": "Unspecified is treated as EXTERNAL.",
          "value": "INSTANCE_IP_MODE_UNSPECIFIED"
        },
        {
          "name": "External",
          "description": "Instances are created with both internal and external IP addresses.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "Instances are created with internal IP addresses only.",
          "value": "INTERNAL"
        }
      ]
    },
    "google-native:appengine/v1beta:NetworkResponse": {
      "description": "Extra network settings. Only applicable in the App Engine flexible environment.",
      "properties": {
        "forwardedPorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment."
        },
        "instanceIpMode": {
          "type": "string",
          "description": "The IP mode for instances. Only applicable in the App Engine flexible environment."
        },
        "instanceTag": {
          "type": "string",
          "description": "Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment."
        },
        "name": {
          "type": "string",
          "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default."
        },
        "sessionAffinity": {
          "type": "boolean",
          "description": "Enable session affinity. Only applicable in the App Engine flexible environment."
        },
        "subnetworkName": {
          "type": "string",
          "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application."
        }
      },
      "type": "object",
      "required": [
        "forwardedPorts",
        "instanceIpMode",
        "instanceTag",
        "name",
        "sessionAffinity",
        "subnetworkName"
      ]
    },
    "google-native:appengine/v1beta:NetworkUtilization": {
      "description": "Target scaling by network usage. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetReceivedBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes received per second."
        },
        "targetReceivedPacketsPerSecond": {
          "type": "integer",
          "description": "Target packets received per second."
        },
        "targetSentBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes sent per second."
        },
        "targetSentPacketsPerSecond": {
          "type": "integer",
          "description": "Target packets sent per second."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:NetworkUtilizationResponse": {
      "description": "Target scaling by network usage. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetReceivedBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes received per second."
        },
        "targetReceivedPacketsPerSecond": {
          "type": "integer",
          "description": "Target packets received per second."
        },
        "targetSentBytesPerSecond": {
          "type": "integer",
          "description": "Target bytes sent per second."
        },
        "targetSentPacketsPerSecond": {
          "type": "integer",
          "description": "Target packets sent per second."
        }
      },
      "type": "object",
      "required": [
        "targetReceivedBytesPerSecond",
        "targetReceivedPacketsPerSecond",
        "targetSentBytesPerSecond",
        "targetSentPacketsPerSecond"
      ]
    },
    "google-native:appengine/v1beta:ReadinessCheck": {
      "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.",
      "properties": {
        "appStartTimeout": {
          "type": "string",
          "description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic."
        },
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed checks required before removing traffic."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\""
        },
        "path": {
          "type": "string",
          "description": "The request path."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful checks required before receiving traffic."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the check is considered failed."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ReadinessCheckResponse": {
      "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.",
      "properties": {
        "appStartTimeout": {
          "type": "string",
          "description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic."
        },
        "checkInterval": {
          "type": "string",
          "description": "Interval between health checks."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Number of consecutive failed checks required before removing traffic."
        },
        "host": {
          "type": "string",
          "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\""
        },
        "path": {
          "type": "string",
          "description": "The request path."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Number of consecutive successful checks required before receiving traffic."
        },
        "timeout": {
          "type": "string",
          "description": "Time before the check is considered failed."
        }
      },
      "type": "object",
      "required": [
        "appStartTimeout",
        "checkInterval",
        "failureThreshold",
        "host",
        "path",
        "successThreshold",
        "timeout"
      ]
    },
    "google-native:appengine/v1beta:RequestUtilization": {
      "description": "Target scaling by request utilization. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetConcurrentRequests": {
          "type": "integer",
          "description": "Target number of concurrent requests."
        },
        "targetRequestCountPerSecond": {
          "type": "integer",
          "description": "Target requests per second."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:RequestUtilizationResponse": {
      "description": "Target scaling by request utilization. Only applicable in the App Engine flexible environment.",
      "properties": {
        "targetConcurrentRequests": {
          "type": "integer",
          "description": "Target number of concurrent requests."
        },
        "targetRequestCountPerSecond": {
          "type": "integer",
          "description": "Target requests per second."
        }
      },
      "type": "object",
      "required": [
        "targetConcurrentRequests",
        "targetRequestCountPerSecond"
      ]
    },
    "google-native:appengine/v1beta:ResourceRecordResponse": {
      "description": "A DNS resource record.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'."
        },
        "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)."
        },
        "type": {
          "type": "string",
          "description": "Resource record type. Example: AAAA."
        }
      },
      "type": "object",
      "required": [
        "name",
        "rrdata",
        "type"
      ]
    },
    "google-native:appengine/v1beta:Resources": {
      "description": "Machine resources for a version.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Number of CPU cores needed."
        },
        "diskGb": {
          "type": "number",
          "description": "Disk size (GB) needed."
        },
        "kmsKeyReference": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk"
        },
        "memoryGb": {
          "type": "number",
          "description": "Memory (GB) needed."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:Volume"
          },
          "description": "User specified volumes."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ResourcesResponse": {
      "description": "Machine resources for a version.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Number of CPU cores needed."
        },
        "diskGb": {
          "type": "number",
          "description": "Disk size (GB) needed."
        },
        "kmsKeyReference": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk"
        },
        "memoryGb": {
          "type": "number",
          "description": "Memory (GB) needed."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:VolumeResponse"
          },
          "description": "User specified volumes."
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "diskGb",
        "kmsKeyReference",
        "memoryGb",
        "volumes"
      ]
    },
    "google-native:appengine/v1beta:ScriptHandler": {
      "description": "Executes a script to handle the request that matches the URL pattern.",
      "properties": {
        "scriptPath": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ScriptHandlerResponse": {
      "description": "Executes a script to handle the request that matches the URL pattern.",
      "properties": {
        "scriptPath": {
          "type": "string",
          "description": "Path to the script from the application root directory."
        }
      },
      "type": "object",
      "required": [
        "scriptPath"
      ]
    },
    "google-native:appengine/v1beta:SslSettings": {
      "description": "SSL configuration for a DomainMapping resource.",
      "properties": {
        "certificateId": {
          "type": "string",
          "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify SslManagementType.MANUAL on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345."
        },
        "sslManagementType": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:SslSettingsSslManagementType",
          "description": "SSL management type for this domain. If AUTOMATIC, a managed certificate is automatically provisioned. If MANUAL, certificate_id must be manually specified in order to configure SSL for this domain."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:SslSettingsResponse": {
      "description": "SSL configuration for a DomainMapping resource.",
      "properties": {
        "certificateId": {
          "type": "string",
          "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify SslManagementType.MANUAL on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345."
        },
        "pendingManagedCertificateId": {
          "type": "string",
          "description": "ID of the managed AuthorizedCertificate resource currently being provisioned, if applicable. Until the new managed certificate has been successfully provisioned, the previous SSL state will be preserved. Once the provisioning process completes, the certificate_id field will reflect the new managed certificate and this field will be left empty. To remove SSL support while there is still a pending managed certificate, clear the certificate_id field with an UpdateDomainMappingRequest."
        },
        "sslManagementType": {
          "type": "string",
          "description": "SSL management type for this domain. If AUTOMATIC, a managed certificate is automatically provisioned. If MANUAL, certificate_id must be manually specified in order to configure SSL for this domain."
        }
      },
      "type": "object",
      "required": [
        "certificateId",
        "pendingManagedCertificateId",
        "sslManagementType"
      ]
    },
    "google-native:appengine/v1beta:SslSettingsSslManagementType": {
      "description": "SSL management type for this domain. If AUTOMATIC, a managed certificate is automatically provisioned. If MANUAL, certificate_id must be manually specified in order to configure SSL for this domain.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "SSL support for this domain is configured automatically. The mapped SSL certificate will be automatically renewed.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Manual",
          "description": "SSL support for this domain is configured manually by the user. Either the domain has no SSL support or a user-obtained SSL certificate has been explictly mapped to this domain.",
          "value": "MANUAL"
        }
      ]
    },
    "google-native:appengine/v1beta:StandardSchedulerSettings": {
      "description": "Scheduler settings for standard environment.",
      "properties": {
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances to run for this version. Set to zero to disable max_instances configuration."
        },
        "minInstances": {
          "type": "integer",
          "description": "Minimum number of instances to run for this version. Set to zero to disable min_instances configuration."
        },
        "targetCpuUtilization": {
          "type": "number",
          "description": "Target CPU utilization ratio to maintain when scaling."
        },
        "targetThroughputUtilization": {
          "type": "number",
          "description": "Target throughput utilization ratio to maintain when scaling"
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:StandardSchedulerSettingsResponse": {
      "description": "Scheduler settings for standard environment.",
      "properties": {
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances to run for this version. Set to zero to disable max_instances configuration."
        },
        "minInstances": {
          "type": "integer",
          "description": "Minimum number of instances to run for this version. Set to zero to disable min_instances configuration."
        },
        "targetCpuUtilization": {
          "type": "number",
          "description": "Target CPU utilization ratio to maintain when scaling."
        },
        "targetThroughputUtilization": {
          "type": "number",
          "description": "Target throughput utilization ratio to maintain when scaling"
        }
      },
      "type": "object",
      "required": [
        "maxInstances",
        "minInstances",
        "targetCpuUtilization",
        "targetThroughputUtilization"
      ]
    },
    "google-native:appengine/v1beta:StaticFilesHandler": {
      "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.",
      "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 static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas."
        },
        "expiration": {
          "type": "string",
          "description": "Time a static file served by this handler should be cached by web proxies and browsers."
        },
        "httpHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP headers to use for all responses from these URLs."
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension."
        },
        "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."
        },
        "requireMatchingFile": {
          "type": "boolean",
          "description": "Whether this handler should match the request if the file referenced by the handler does not exist."
        },
        "uploadPathRegex": {
          "type": "string",
          "description": "Regular expression that matches the file paths for all files that should be referenced by this handler."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:StaticFilesHandlerResponse": {
      "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.",
      "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 static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas."
        },
        "expiration": {
          "type": "string",
          "description": "Time a static file served by this handler should be cached by web proxies and browsers."
        },
        "httpHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP headers to use for all responses from these URLs."
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension."
        },
        "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."
        },
        "requireMatchingFile": {
          "type": "boolean",
          "description": "Whether this handler should match the request if the file referenced by the handler does not exist."
        },
        "uploadPathRegex": {
          "type": "string",
          "description": "Regular expression that matches the file paths for all files that should be referenced by this handler."
        }
      },
      "type": "object",
      "required": [
        "applicationReadable",
        "expiration",
        "httpHeaders",
        "mimeType",
        "path",
        "requireMatchingFile",
        "uploadPathRegex"
      ]
    },
    "google-native:appengine/v1beta:UrlDispatchRule": {
      "description": "Rules to match an HTTP request and dispatch that request to a service.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\"."
        },
        "path": {
          "type": "string",
          "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters."
        },
        "service": {
          "type": "string",
          "description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:UrlDispatchRuleResponse": {
      "description": "Rules to match an HTTP request and dispatch that request to a service.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\"."
        },
        "path": {
          "type": "string",
          "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters."
        },
        "service": {
          "type": "string",
          "description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default."
        }
      },
      "type": "object",
      "required": [
        "domain",
        "path",
        "service"
      ]
    },
    "google-native:appengine/v1beta:UrlMap": {
      "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.",
      "properties": {
        "apiEndpoint": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ApiEndpointHandler",
          "description": "Uses API Endpoints to handle requests."
        },
        "authFailAction": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:UrlMapAuthFailAction",
          "description": "Action to take when users access resources that require authentication. Defaults to redirect."
        },
        "login": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:UrlMapLogin",
          "description": "Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment."
        },
        "redirectHttpResponseCode": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:UrlMapRedirectHttpResponseCode",
          "description": "30x code to use when performing redirects for the secure field. Defaults to 302."
        },
        "script": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ScriptHandler",
          "description": "Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example \"script\": \"auto\"."
        },
        "securityLevel": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:UrlMapSecurityLevel",
          "description": "Security (HTTPS) enforcement for this URL."
        },
        "staticFiles": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:StaticFilesHandler",
          "description": "Returns the contents of a file, such as an image, as the response."
        },
        "urlRegex": {
          "type": "string",
          "description": "URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All 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."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:UrlMapAuthFailAction": {
      "description": "Action to take when users access resources that require authentication. Defaults to redirect.",
      "type": "string",
      "enum": [
        {
          "name": "AuthFailActionUnspecified",
          "description": "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.",
          "value": "AUTH_FAIL_ACTION_UNSPECIFIED"
        },
        {
          "name": "AuthFailActionRedirect",
          "description": "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.",
          "value": "AUTH_FAIL_ACTION_REDIRECT"
        },
        {
          "name": "AuthFailActionUnauthorized",
          "description": "Rejects request with a 401 HTTP status code and an error message.",
          "value": "AUTH_FAIL_ACTION_UNAUTHORIZED"
        }
      ]
    },
    "google-native:appengine/v1beta:UrlMapLogin": {
      "description": "Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment.",
      "type": "string",
      "enum": [
        {
          "name": "LoginUnspecified",
          "description": "Not specified. LOGIN_OPTIONAL is assumed.",
          "value": "LOGIN_UNSPECIFIED"
        },
        {
          "name": "LoginOptional",
          "description": "Does not require that the user is signed in.",
          "value": "LOGIN_OPTIONAL"
        },
        {
          "name": "LoginAdmin",
          "description": "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.",
          "value": "LOGIN_ADMIN"
        },
        {
          "name": "LoginRequired",
          "description": "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken.",
          "value": "LOGIN_REQUIRED"
        }
      ]
    },
    "google-native:appengine/v1beta:UrlMapRedirectHttpResponseCode": {
      "description": "30x code to use when performing redirects for the secure field. Defaults to 302.",
      "type": "string",
      "enum": [
        {
          "name": "RedirectHttpResponseCodeUnspecified",
          "description": "Not specified. 302 is assumed.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED"
        },
        {
          "name": "RedirectHttpResponseCode301",
          "description": "301 Moved Permanently code.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_301"
        },
        {
          "name": "RedirectHttpResponseCode302",
          "description": "302 Moved Temporarily code.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_302"
        },
        {
          "name": "RedirectHttpResponseCode303",
          "description": "303 See Other code.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_303"
        },
        {
          "name": "RedirectHttpResponseCode307",
          "description": "307 Temporary Redirect code.",
          "value": "REDIRECT_HTTP_RESPONSE_CODE_307"
        }
      ]
    },
    "google-native:appengine/v1beta:UrlMapResponse": {
      "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.",
      "properties": {
        "apiEndpoint": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ApiEndpointHandlerResponse",
          "description": "Uses API Endpoints to handle requests."
        },
        "authFailAction": {
          "type": "string",
          "description": "Action to take when users access resources that require authentication. Defaults to redirect."
        },
        "login": {
          "type": "string",
          "description": "Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment."
        },
        "redirectHttpResponseCode": {
          "type": "string",
          "description": "30x code to use when performing redirects for the secure field. Defaults to 302."
        },
        "script": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ScriptHandlerResponse",
          "description": "Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example \"script\": \"auto\"."
        },
        "securityLevel": {
          "type": "string",
          "description": "Security (HTTPS) enforcement for this URL."
        },
        "staticFiles": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:StaticFilesHandlerResponse",
          "description": "Returns the contents of a file, such as an image, as the response."
        },
        "urlRegex": {
          "type": "string",
          "description": "URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All 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."
        }
      },
      "type": "object",
      "required": [
        "apiEndpoint",
        "authFailAction",
        "login",
        "redirectHttpResponseCode",
        "script",
        "securityLevel",
        "staticFiles",
        "urlRegex"
      ]
    },
    "google-native:appengine/v1beta:UrlMapSecurityLevel": {
      "description": "Security (HTTPS) enforcement for this URL.",
      "type": "string",
      "enum": [
        {
          "name": "SecureUnspecified",
          "description": "Not specified.",
          "value": "SECURE_UNSPECIFIED"
        },
        {
          "name": "SecureDefault",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.",
          "value": "SECURE_DEFAULT"
        },
        {
          "name": "SecureNever",
          "description": "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.",
          "value": "SECURE_NEVER"
        },
        {
          "name": "SecureOptional",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
          "value": "SECURE_OPTIONAL"
        },
        {
          "name": "SecureAlways",
          "description": "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
          "value": "SECURE_ALWAYS"
        }
      ]
    },
    "google-native:appengine/v1beta:VersionInboundServicesItem": {
      "type": "string",
      "enum": [
        {
          "name": "InboundServiceUnspecified",
          "description": "Not specified.",
          "value": "INBOUND_SERVICE_UNSPECIFIED"
        },
        {
          "name": "InboundServiceMail",
          "description": "Allows an application to receive mail.",
          "value": "INBOUND_SERVICE_MAIL"
        },
        {
          "name": "InboundServiceMailBounce",
          "description": "Allows an application to receive email-bound notifications.",
          "value": "INBOUND_SERVICE_MAIL_BOUNCE"
        },
        {
          "name": "InboundServiceXmppError",
          "description": "Allows an application to receive error stanzas.",
          "value": "INBOUND_SERVICE_XMPP_ERROR"
        },
        {
          "name": "InboundServiceXmppMessage",
          "description": "Allows an application to receive instant messages.",
          "value": "INBOUND_SERVICE_XMPP_MESSAGE"
        },
        {
          "name": "InboundServiceXmppSubscribe",
          "description": "Allows an application to receive user subscription POSTs.",
          "value": "INBOUND_SERVICE_XMPP_SUBSCRIBE"
        },
        {
          "name": "InboundServiceXmppPresence",
          "description": "Allows an application to receive a user's chat presence.",
          "value": "INBOUND_SERVICE_XMPP_PRESENCE"
        },
        {
          "name": "InboundServiceChannelPresence",
          "description": "Registers an application for notifications when a client connects or disconnects from a channel.",
          "value": "INBOUND_SERVICE_CHANNEL_PRESENCE"
        },
        {
          "name": "InboundServiceWarmup",
          "description": "Enables warmup requests.",
          "value": "INBOUND_SERVICE_WARMUP"
        }
      ]
    },
    "google-native:appengine/v1beta:VersionServingStatus": {
      "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.",
      "type": "string",
      "enum": [
        {
          "name": "ServingStatusUnspecified",
          "description": "Not specified.",
          "value": "SERVING_STATUS_UNSPECIFIED"
        },
        {
          "name": "Serving",
          "description": "Currently serving. Instances are created according to the scaling settings of the version.",
          "value": "SERVING"
        },
        {
          "name": "Stopped",
          "description": "Disabled. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING.",
          "value": "STOPPED"
        }
      ]
    },
    "google-native:appengine/v1beta:Volume": {
      "description": "Volumes mounted within the app container. Only applicable in the App Engine flexible environment.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Unique name for the volume."
        },
        "sizeGb": {
          "type": "number",
          "description": "Volume size in gigabytes."
        },
        "volumeType": {
          "type": "string",
          "description": "Underlying volume type, e.g. 'tmpfs'."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:VolumeResponse": {
      "description": "Volumes mounted within the app container. Only applicable in the App Engine flexible environment.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Unique name for the volume."
        },
        "sizeGb": {
          "type": "number",
          "description": "Volume size in gigabytes."
        },
        "volumeType": {
          "type": "string",
          "description": "Underlying volume type, e.g. 'tmpfs'."
        }
      },
      "type": "object",
      "required": [
        "name",
        "sizeGb",
        "volumeType"
      ]
    },
    "google-native:appengine/v1beta:VpcAccessConnector": {
      "description": "VPC access connector specification.",
      "properties": {
        "egressSetting": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:VpcAccessConnectorEgressSetting",
          "description": "The egress setting for the connector, controlling what traffic is diverted through it."
        },
        "name": {
          "type": "string",
          "description": "Full Serverless VPC Access Connector name e.g. projects/my-project/locations/us-central1/connectors/c1."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:VpcAccessConnectorEgressSetting": {
      "description": "The egress setting for the connector, controlling what traffic is diverted through it.",
      "type": "string",
      "enum": [
        {
          "name": "EgressSettingUnspecified",
          "value": "EGRESS_SETTING_UNSPECIFIED"
        },
        {
          "name": "AllTraffic",
          "description": "Force the use of VPC Access for all egress traffic from the function.",
          "value": "ALL_TRAFFIC"
        },
        {
          "name": "PrivateIpRanges",
          "description": "Use the VPC Access Connector for private IP space from RFC1918.",
          "value": "PRIVATE_IP_RANGES"
        }
      ]
    },
    "google-native:appengine/v1beta:VpcAccessConnectorResponse": {
      "description": "VPC access connector specification.",
      "properties": {
        "egressSetting": {
          "type": "string",
          "description": "The egress setting for the connector, controlling what traffic is diverted through it."
        },
        "name": {
          "type": "string",
          "description": "Full Serverless VPC Access Connector name e.g. projects/my-project/locations/us-central1/connectors/c1."
        }
      },
      "type": "object",
      "required": [
        "egressSetting",
        "name"
      ]
    },
    "google-native:appengine/v1beta:ZipInfo": {
      "description": "The zip file information for a zip deployment.",
      "properties": {
        "filesCount": {
          "type": "integer",
          "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow."
        },
        "sourceUrl": {
          "type": "string",
          "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'."
        }
      },
      "type": "object"
    },
    "google-native:appengine/v1beta:ZipInfoResponse": {
      "description": "The zip file information for a zip deployment.",
      "properties": {
        "filesCount": {
          "type": "integer",
          "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow."
        },
        "sourceUrl": {
          "type": "string",
          "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'."
        }
      },
      "type": "object",
      "required": [
        "filesCount",
        "sourceUrl"
      ]
    },
    "google-native:artifactregistry/v1:AptRepository": {
      "description": "Configuration for an Apt remote repository.",
      "properties": {
        "publicRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigAptRepositoryPublicRepository",
          "description": "One of the publicly available Apt repositories supported by Artifact Registry."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:AptRepositoryResponse": {
      "description": "Configuration for an Apt remote repository.",
      "properties": {
        "publicRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigAptRepositoryPublicRepositoryResponse",
          "description": "One of the publicly available Apt repositories supported by Artifact Registry."
        }
      },
      "type": "object",
      "required": [
        "publicRepository"
      ]
    },
    "google-native:artifactregistry/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:artifactregistry/v1:DockerRepository": {
      "description": "Configuration for a Docker remote repository.",
      "properties": {
        "publicRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:DockerRepositoryPublicRepository",
          "description": "One of the publicly available Docker repositories supported by Artifact Registry."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:DockerRepositoryConfig": {
      "description": "DockerRepositoryConfig is docker related repository details. Provides additional configuration details for repositories of the docker format type.",
      "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."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:DockerRepositoryConfigResponse": {
      "description": "DockerRepositoryConfig is docker related repository details. Provides additional configuration details for repositories of the docker format type.",
      "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."
        }
      },
      "type": "object",
      "required": [
        "immutableTags"
      ]
    },
    "google-native:artifactregistry/v1:DockerRepositoryPublicRepository": {
      "description": "One of the publicly available Docker repositories supported by Artifact Registry.",
      "type": "string",
      "enum": [
        {
          "name": "PublicRepositoryUnspecified",
          "description": "Unspecified repository.",
          "value": "PUBLIC_REPOSITORY_UNSPECIFIED"
        },
        {
          "name": "DockerHub",
          "description": "Docker Hub.",
          "value": "DOCKER_HUB"
        }
      ]
    },
    "google-native:artifactregistry/v1:DockerRepositoryResponse": {
      "description": "Configuration for a Docker remote repository.",
      "properties": {
        "publicRepository": {
          "type": "string",
          "description": "One of the publicly available Docker repositories supported by Artifact Registry."
        }
      },
      "type": "object",
      "required": [
        "publicRepository"
      ]
    },
    "google-native:artifactregistry/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:artifactregistry/v1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigAptRepositoryPublicRepository": {
      "description": "Publicly available Apt repositories constructed from a common repository base and a custom repository path.",
      "properties": {
        "repositoryBase": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigAptRepositoryPublicRepositoryRepositoryBase",
          "description": "A common public repository base for Apt."
        },
        "repositoryPath": {
          "type": "string",
          "description": "A custom field to define a path to a specific repository from the base."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigAptRepositoryPublicRepositoryRepositoryBase": {
      "description": "A common public repository base for Apt.",
      "type": "string",
      "enum": [
        {
          "name": "RepositoryBaseUnspecified",
          "description": "Unspecified repository base.",
          "value": "REPOSITORY_BASE_UNSPECIFIED"
        },
        {
          "name": "Debian",
          "description": "Debian.",
          "value": "DEBIAN"
        },
        {
          "name": "Ubuntu",
          "description": "Ubuntu LTS/Pro.",
          "value": "UBUNTU"
        },
        {
          "name": "DebianSnapshot",
          "description": "Archived Debian.",
          "value": "DEBIAN_SNAPSHOT"
        }
      ]
    },
    "google-native:artifactregistry/v1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigAptRepositoryPublicRepositoryResponse": {
      "description": "Publicly available Apt repositories constructed from a common repository base and a custom repository path.",
      "properties": {
        "repositoryBase": {
          "type": "string",
          "description": "A common public repository base for Apt."
        },
        "repositoryPath": {
          "type": "string",
          "description": "A custom field to define a path to a specific repository from the base."
        }
      },
      "type": "object",
      "required": [
        "repositoryBase",
        "repositoryPath"
      ]
    },
    "google-native:artifactregistry/v1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigYumRepositoryPublicRepository": {
      "description": "Publicly available Yum repositories constructed from a common repository base and a custom repository path.",
      "properties": {
        "repositoryBase": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigYumRepositoryPublicRepositoryRepositoryBase",
          "description": "A common public repository base for Yum."
        },
        "repositoryPath": {
          "type": "string",
          "description": "A custom field to define a path to a specific repository from the base."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigYumRepositoryPublicRepositoryRepositoryBase": {
      "description": "A common public repository base for Yum.",
      "type": "string",
      "enum": [
        {
          "name": "RepositoryBaseUnspecified",
          "description": "Unspecified repository base.",
          "value": "REPOSITORY_BASE_UNSPECIFIED"
        },
        {
          "name": "Centos",
          "description": "CentOS.",
          "value": "CENTOS"
        },
        {
          "name": "CentosDebug",
          "description": "CentOS Debug.",
          "value": "CENTOS_DEBUG"
        },
        {
          "name": "CentosVault",
          "description": "CentOS Vault.",
          "value": "CENTOS_VAULT"
        },
        {
          "name": "CentosStream",
          "description": "CentOS Stream.",
          "value": "CENTOS_STREAM"
        },
        {
          "name": "Rocky",
          "description": "Rocky.",
          "value": "ROCKY"
        },
        {
          "name": "Epel",
          "description": "Fedora Extra Packages for Enterprise Linux (EPEL).",
          "value": "EPEL"
        }
      ]
    },
    "google-native:artifactregistry/v1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigYumRepositoryPublicRepositoryResponse": {
      "description": "Publicly available Yum repositories constructed from a common repository base and a custom repository path.",
      "properties": {
        "repositoryBase": {
          "type": "string",
          "description": "A common public repository base for Yum."
        },
        "repositoryPath": {
          "type": "string",
          "description": "A custom field to define a path to a specific repository from the base."
        }
      },
      "type": "object",
      "required": [
        "repositoryBase",
        "repositoryPath"
      ]
    },
    "google-native:artifactregistry/v1:MavenRepository": {
      "description": "Configuration for a Maven remote repository.",
      "properties": {
        "publicRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:MavenRepositoryPublicRepository",
          "description": "One of the publicly available Maven repositories supported by Artifact Registry."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:MavenRepositoryConfig": {
      "description": "MavenRepositoryConfig is maven related repository details. Provides additional configuration details for repositories of the maven format type.",
      "properties": {
        "allowSnapshotOverwrites": {
          "type": "boolean",
          "description": "The repository with this flag will allow publishing the same snapshot versions."
        },
        "versionPolicy": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:MavenRepositoryConfigVersionPolicy",
          "description": "Version policy defines the versions that the registry will accept."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:MavenRepositoryConfigResponse": {
      "description": "MavenRepositoryConfig is maven related repository details. Provides additional configuration details for repositories of the maven format type.",
      "properties": {
        "allowSnapshotOverwrites": {
          "type": "boolean",
          "description": "The repository with this flag will allow publishing the same snapshot versions."
        },
        "versionPolicy": {
          "type": "string",
          "description": "Version policy defines the versions that the registry will accept."
        }
      },
      "type": "object",
      "required": [
        "allowSnapshotOverwrites",
        "versionPolicy"
      ]
    },
    "google-native:artifactregistry/v1:MavenRepositoryConfigVersionPolicy": {
      "description": "Version policy defines the versions that the registry will accept.",
      "type": "string",
      "enum": [
        {
          "name": "VersionPolicyUnspecified",
          "description": "VERSION_POLICY_UNSPECIFIED - the version policy is not defined. When the version policy is not defined, no validation is performed for the versions.",
          "value": "VERSION_POLICY_UNSPECIFIED"
        },
        {
          "name": "Release",
          "description": "RELEASE - repository will accept only Release versions.",
          "value": "RELEASE"
        },
        {
          "name": "Snapshot",
          "description": "SNAPSHOT - repository will accept only Snapshot versions.",
          "value": "SNAPSHOT"
        }
      ]
    },
    "google-native:artifactregistry/v1:MavenRepositoryPublicRepository": {
      "description": "One of the publicly available Maven repositories supported by Artifact Registry.",
      "type": "string",
      "enum": [
        {
          "name": "PublicRepositoryUnspecified",
          "description": "Unspecified repository.",
          "value": "PUBLIC_REPOSITORY_UNSPECIFIED"
        },
        {
          "name": "MavenCentral",
          "description": "Maven Central.",
          "value": "MAVEN_CENTRAL"
        }
      ]
    },
    "google-native:artifactregistry/v1:MavenRepositoryResponse": {
      "description": "Configuration for a Maven remote repository.",
      "properties": {
        "publicRepository": {
          "type": "string",
          "description": "One of the publicly available Maven repositories supported by Artifact Registry."
        }
      },
      "type": "object",
      "required": [
        "publicRepository"
      ]
    },
    "google-native:artifactregistry/v1:NpmRepository": {
      "description": "Configuration for a Npm remote repository.",
      "properties": {
        "publicRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:NpmRepositoryPublicRepository",
          "description": "One of the publicly available Npm repositories supported by Artifact Registry."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:NpmRepositoryPublicRepository": {
      "description": "One of the publicly available Npm repositories supported by Artifact Registry.",
      "type": "string",
      "enum": [
        {
          "name": "PublicRepositoryUnspecified",
          "description": "Unspecified repository.",
          "value": "PUBLIC_REPOSITORY_UNSPECIFIED"
        },
        {
          "name": "Npmjs",
          "description": "npmjs.",
          "value": "NPMJS"
        }
      ]
    },
    "google-native:artifactregistry/v1:NpmRepositoryResponse": {
      "description": "Configuration for a Npm remote repository.",
      "properties": {
        "publicRepository": {
          "type": "string",
          "description": "One of the publicly available Npm repositories supported by Artifact Registry."
        }
      },
      "type": "object",
      "required": [
        "publicRepository"
      ]
    },
    "google-native:artifactregistry/v1:PythonRepository": {
      "description": "Configuration for a Python remote repository.",
      "properties": {
        "publicRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:PythonRepositoryPublicRepository",
          "description": "One of the publicly available Python repositories supported by Artifact Registry."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:PythonRepositoryPublicRepository": {
      "description": "One of the publicly available Python repositories supported by Artifact Registry.",
      "type": "string",
      "enum": [
        {
          "name": "PublicRepositoryUnspecified",
          "description": "Unspecified repository.",
          "value": "PUBLIC_REPOSITORY_UNSPECIFIED"
        },
        {
          "name": "Pypi",
          "description": "PyPI.",
          "value": "PYPI"
        }
      ]
    },
    "google-native:artifactregistry/v1:PythonRepositoryResponse": {
      "description": "Configuration for a Python remote repository.",
      "properties": {
        "publicRepository": {
          "type": "string",
          "description": "One of the publicly available Python repositories supported by Artifact Registry."
        }
      },
      "type": "object",
      "required": [
        "publicRepository"
      ]
    },
    "google-native:artifactregistry/v1:RemoteRepositoryConfig": {
      "description": "Remote repository configuration.",
      "properties": {
        "aptRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:AptRepository",
          "description": "Specific settings for an Apt remote repository."
        },
        "description": {
          "type": "string",
          "description": "The description of the remote source."
        },
        "dockerRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:DockerRepository",
          "description": "Specific settings for a Docker remote repository."
        },
        "mavenRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:MavenRepository",
          "description": "Specific settings for a Maven remote repository."
        },
        "npmRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:NpmRepository",
          "description": "Specific settings for an Npm remote repository."
        },
        "pythonRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:PythonRepository",
          "description": "Specific settings for a Python remote repository."
        },
        "upstreamCredentials": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:UpstreamCredentials",
          "description": "Optional. The credentials used to access the remote repository."
        },
        "yumRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:YumRepository",
          "description": "Specific settings for a Yum remote repository."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:RemoteRepositoryConfigResponse": {
      "description": "Remote repository configuration.",
      "properties": {
        "aptRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:AptRepositoryResponse",
          "description": "Specific settings for an Apt remote repository."
        },
        "description": {
          "type": "string",
          "description": "The description of the remote source."
        },
        "dockerRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:DockerRepositoryResponse",
          "description": "Specific settings for a Docker remote repository."
        },
        "mavenRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:MavenRepositoryResponse",
          "description": "Specific settings for a Maven remote repository."
        },
        "npmRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:NpmRepositoryResponse",
          "description": "Specific settings for an Npm remote repository."
        },
        "pythonRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:PythonRepositoryResponse",
          "description": "Specific settings for a Python remote repository."
        },
        "upstreamCredentials": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:UpstreamCredentialsResponse",
          "description": "Optional. The credentials used to access the remote repository."
        },
        "yumRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:YumRepositoryResponse",
          "description": "Specific settings for a Yum remote repository."
        }
      },
      "type": "object",
      "required": [
        "aptRepository",
        "description",
        "dockerRepository",
        "mavenRepository",
        "npmRepository",
        "pythonRepository",
        "upstreamCredentials",
        "yumRepository"
      ]
    },
    "google-native:artifactregistry/v1:RepositoryFormat": {
      "description": "Optional. The format of packages that are stored in the repository.",
      "type": "string",
      "enum": [
        {
          "name": "FormatUnspecified",
          "description": "Unspecified package format.",
          "value": "FORMAT_UNSPECIFIED"
        },
        {
          "name": "Docker",
          "description": "Docker package format.",
          "value": "DOCKER"
        },
        {
          "name": "Maven",
          "description": "Maven package format.",
          "value": "MAVEN"
        },
        {
          "name": "Npm",
          "description": "NPM package format.",
          "value": "NPM"
        },
        {
          "name": "Apt",
          "description": "APT package format.",
          "value": "APT"
        },
        {
          "name": "Yum",
          "description": "YUM package format.",
          "value": "YUM"
        },
        {
          "name": "Googet",
          "description": "GooGet package format.",
          "value": "GOOGET"
        },
        {
          "name": "Python",
          "description": "Python package format.",
          "value": "PYTHON"
        },
        {
          "name": "Kfp",
          "description": "Kubeflow Pipelines package format.",
          "value": "KFP"
        },
        {
          "name": "Go",
          "description": "Go package format.",
          "value": "GO"
        }
      ]
    },
    "google-native:artifactregistry/v1:RepositoryMode": {
      "description": "Optional. The mode of the repository.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Unspecified mode.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "StandardRepository",
          "description": "A standard repository storing artifacts.",
          "value": "STANDARD_REPOSITORY"
        },
        {
          "name": "VirtualRepository",
          "description": "A virtual repository to serve artifacts from one or more sources.",
          "value": "VIRTUAL_REPOSITORY"
        },
        {
          "name": "RemoteRepository",
          "description": "A remote repository to serve artifacts from a remote source.",
          "value": "REMOTE_REPOSITORY"
        }
      ]
    },
    "google-native:artifactregistry/v1:UpstreamCredentials": {
      "description": "The credentials to access the remote repository.",
      "properties": {
        "usernamePasswordCredentials": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:UsernamePasswordCredentials",
          "description": "Use username and password to access the remote repository."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:UpstreamCredentialsResponse": {
      "description": "The credentials to access the remote repository.",
      "properties": {
        "usernamePasswordCredentials": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:UsernamePasswordCredentialsResponse",
          "description": "Use username and password to access the remote repository."
        }
      },
      "type": "object",
      "required": [
        "usernamePasswordCredentials"
      ]
    },
    "google-native:artifactregistry/v1:UpstreamPolicy": {
      "description": "Artifact policy configuration for the repository contents.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The user-provided ID of the upstream policy."
        },
        "priority": {
          "type": "integer",
          "description": "Entries with a greater priority value take precedence in the pull order."
        },
        "repository": {
          "type": "string",
          "description": "A reference to the repository resource, for example: `projects/p1/locations/us-central1/repositories/repo1`."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:UpstreamPolicyResponse": {
      "description": "Artifact policy configuration for the repository contents.",
      "properties": {
        "priority": {
          "type": "integer",
          "description": "Entries with a greater priority value take precedence in the pull order."
        },
        "repository": {
          "type": "string",
          "description": "A reference to the repository resource, for example: `projects/p1/locations/us-central1/repositories/repo1`."
        }
      },
      "type": "object",
      "required": [
        "priority",
        "repository"
      ]
    },
    "google-native:artifactregistry/v1:UsernamePasswordCredentials": {
      "description": "Username and password credentials.",
      "properties": {
        "passwordSecretVersion": {
          "type": "string",
          "description": "The Secret Manager key version that holds the password to access the remote repository. Must be in the format of `projects/{project}/secrets/{secret}/versions/{version}`."
        },
        "username": {
          "type": "string",
          "description": "The username to access the remote repository."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:UsernamePasswordCredentialsResponse": {
      "description": "Username and password credentials.",
      "properties": {
        "passwordSecretVersion": {
          "type": "string",
          "description": "The Secret Manager key version that holds the password to access the remote repository. Must be in the format of `projects/{project}/secrets/{secret}/versions/{version}`."
        },
        "username": {
          "type": "string",
          "description": "The username to access the remote repository."
        }
      },
      "type": "object",
      "required": [
        "passwordSecretVersion",
        "username"
      ]
    },
    "google-native:artifactregistry/v1:VirtualRepositoryConfig": {
      "description": "Virtual repository configuration.",
      "properties": {
        "upstreamPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1:UpstreamPolicy"
          },
          "description": "Policies that configure the upstream artifacts distributed by the Virtual Repository. Upstream policies cannot be set on a standard repository."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:VirtualRepositoryConfigResponse": {
      "description": "Virtual repository configuration.",
      "properties": {
        "upstreamPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1:UpstreamPolicyResponse"
          },
          "description": "Policies that configure the upstream artifacts distributed by the Virtual Repository. Upstream policies cannot be set on a standard repository."
        }
      },
      "type": "object",
      "required": [
        "upstreamPolicies"
      ]
    },
    "google-native:artifactregistry/v1:YumRepository": {
      "description": "Configuration for a Yum remote repository.",
      "properties": {
        "publicRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigYumRepositoryPublicRepository",
          "description": "One of the publicly available Yum repositories supported by Artifact Registry."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1:YumRepositoryResponse": {
      "description": "Configuration for a Yum remote repository.",
      "properties": {
        "publicRepository": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:GoogleDevtoolsArtifactregistryV1RemoteRepositoryConfigYumRepositoryPublicRepositoryResponse",
          "description": "One of the publicly available Yum repositories supported by Artifact Registry."
        }
      },
      "type": "object",
      "required": [
        "publicRepository"
      ]
    },
    "google-native:artifactregistry/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:artifactregistry/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:artifactregistry/v1beta1:RepositoryFormat": {
      "description": "Optional. The format of packages that are stored in the repository.",
      "type": "string",
      "enum": [
        {
          "name": "FormatUnspecified",
          "description": "Unspecified package format.",
          "value": "FORMAT_UNSPECIFIED"
        },
        {
          "name": "Docker",
          "description": "Docker package format.",
          "value": "DOCKER"
        },
        {
          "name": "Maven",
          "description": "Maven package format.",
          "value": "MAVEN"
        },
        {
          "name": "Npm",
          "description": "NPM package format.",
          "value": "NPM"
        },
        {
          "name": "Apt",
          "description": "APT package format.",
          "value": "APT"
        },
        {
          "name": "Yum",
          "description": "YUM package format.",
          "value": "YUM"
        },
        {
          "name": "Googet",
          "description": "GooGet package format.",
          "value": "GOOGET"
        },
        {
          "name": "Python",
          "description": "Python package format.",
          "value": "PYTHON"
        }
      ]
    },
    "google-native:artifactregistry/v1beta2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1beta2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:artifactregistry/v1beta2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1beta2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:artifactregistry/v1beta2:MavenRepositoryConfig": {
      "description": "MavenRepositoryConfig is maven related repository details. Provides additional configuration details for repositories of the maven format type.",
      "properties": {
        "allowSnapshotOverwrites": {
          "type": "boolean",
          "description": "The repository with this flag will allow publishing the same snapshot versions."
        },
        "versionPolicy": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:MavenRepositoryConfigVersionPolicy",
          "description": "Version policy defines the versions that the registry will accept."
        }
      },
      "type": "object"
    },
    "google-native:artifactregistry/v1beta2:MavenRepositoryConfigResponse": {
      "description": "MavenRepositoryConfig is maven related repository details. Provides additional configuration details for repositories of the maven format type.",
      "properties": {
        "allowSnapshotOverwrites": {
          "type": "boolean",
          "description": "The repository with this flag will allow publishing the same snapshot versions."
        },
        "versionPolicy": {
          "type": "string",
          "description": "Version policy defines the versions that the registry will accept."
        }
      },
      "type": "object",
      "required": [
        "allowSnapshotOverwrites",
        "versionPolicy"
      ]
    },
    "google-native:artifactregistry/v1beta2:MavenRepositoryConfigVersionPolicy": {
      "description": "Version policy defines the versions that the registry will accept.",
      "type": "string",
      "enum": [
        {
          "name": "VersionPolicyUnspecified",
          "description": "VERSION_POLICY_UNSPECIFIED - the version policy is not defined. When the version policy is not defined, no validation is performed for the versions.",
          "value": "VERSION_POLICY_UNSPECIFIED"
        },
        {
          "name": "Release",
          "description": "RELEASE - repository will accept only Release versions.",
          "value": "RELEASE"
        },
        {
          "name": "Snapshot",
          "description": "SNAPSHOT - repository will accept only Snapshot versions.",
          "value": "SNAPSHOT"
        }
      ]
    },
    "google-native:artifactregistry/v1beta2:RepositoryFormat": {
      "description": "Optional. The format of packages that are stored in the repository.",
      "type": "string",
      "enum": [
        {
          "name": "FormatUnspecified",
          "description": "Unspecified package format.",
          "value": "FORMAT_UNSPECIFIED"
        },
        {
          "name": "Docker",
          "description": "Docker package format.",
          "value": "DOCKER"
        },
        {
          "name": "Maven",
          "description": "Maven package format.",
          "value": "MAVEN"
        },
        {
          "name": "Npm",
          "description": "NPM package format.",
          "value": "NPM"
        },
        {
          "name": "Apt",
          "description": "APT package format.",
          "value": "APT"
        },
        {
          "name": "Yum",
          "description": "YUM package format.",
          "value": "YUM"
        },
        {
          "name": "Googet",
          "description": "GooGet package format.",
          "value": "GOOGET"
        },
        {
          "name": "Python",
          "description": "Python package format.",
          "value": "PYTHON"
        }
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadComplianceStatusResponse": {
      "description": "Represents the Compliance Status of this workload",
      "properties": {
        "acknowledgedResourceViolationCount": {
          "type": "integer",
          "description": "Number of current resource violations which are not acknowledged."
        },
        "acknowledgedViolationCount": {
          "type": "integer",
          "description": "Number of current orgPolicy violations which are acknowledged."
        },
        "activeResourceViolationCount": {
          "type": "integer",
          "description": "Number of current resource violations which are acknowledged."
        },
        "activeViolationCount": {
          "type": "integer",
          "description": "Number of current orgPolicy violations which are not acknowledged."
        }
      },
      "type": "object",
      "required": [
        "acknowledgedResourceViolationCount",
        "acknowledgedViolationCount",
        "activeResourceViolationCount",
        "activeViolationCount"
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadEkmProvisioningResponseResponse": {
      "description": "External key management systems(EKM) Provisioning response",
      "properties": {
        "ekmProvisioningErrorDomain": {
          "type": "string",
          "description": "Indicates Ekm provisioning error if any."
        },
        "ekmProvisioningErrorMapping": {
          "type": "string",
          "description": "Detailed error message if Ekm provisioning fails"
        },
        "ekmProvisioningState": {
          "type": "string",
          "description": "Indicates Ekm enrollment Provisioning of a given workload."
        }
      },
      "type": "object",
      "required": [
        "ekmProvisioningErrorDomain",
        "ekmProvisioningErrorMapping",
        "ekmProvisioningState"
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadKMSSettings": {
      "description": "Settings specific to the Key Management Service.",
      "properties": {
        "nextRotationTime": {
          "type": "string",
          "description": "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."
        },
        "rotationPeriod": {
          "type": "string",
          "description": "Input only. Immutable. [next_rotation_time] 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."
        }
      },
      "type": "object",
      "required": [
        "nextRotationTime",
        "rotationPeriod"
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadKMSSettingsResponse": {
      "description": "Settings specific to the Key Management Service.",
      "properties": {
        "nextRotationTime": {
          "type": "string",
          "description": "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."
        },
        "rotationPeriod": {
          "type": "string",
          "description": "Input only. Immutable. [next_rotation_time] 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."
        }
      },
      "type": "object",
      "required": [
        "nextRotationTime",
        "rotationPeriod"
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadPartnerPermissions": {
      "description": "Permissions granted to the AW Partner SA account for the customer workload",
      "properties": {
        "assuredWorkloadsMonitoring": {
          "type": "boolean",
          "description": "Optional. Allow partner to view violation alerts."
        },
        "dataLogsViewer": {
          "type": "boolean",
          "description": "Allow the partner to view inspectability logs and monitoring violations."
        },
        "serviceAccessApprover": {
          "type": "boolean",
          "description": "Optional. Allow partner to view access approval logs."
        }
      },
      "type": "object"
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadPartnerPermissionsResponse": {
      "description": "Permissions granted to the AW Partner SA account for the customer workload",
      "properties": {
        "assuredWorkloadsMonitoring": {
          "type": "boolean",
          "description": "Optional. Allow partner to view violation alerts."
        },
        "dataLogsViewer": {
          "type": "boolean",
          "description": "Allow the partner to view inspectability logs and monitoring violations."
        },
        "serviceAccessApprover": {
          "type": "boolean",
          "description": "Optional. Allow partner to view access approval logs."
        }
      },
      "type": "object",
      "required": [
        "assuredWorkloadsMonitoring",
        "dataLogsViewer",
        "serviceAccessApprover"
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadResourceInfoResponse": {
      "description": "Represent the resources that are children of this Workload.",
      "properties": {
        "resourceId": {
          "type": "string",
          "description": "Resource identifier. For a project this represents project_number."
        },
        "resourceType": {
          "type": "string",
          "description": "Indicates the type of resource."
        }
      },
      "type": "object",
      "required": [
        "resourceId",
        "resourceType"
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadResourceSettings": {
      "description": "Represent the custom settings for the resources to be created.",
      "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."
        },
        "resourceId": {
          "type": "string",
          "description": "Resource identifier. For a project this represents project_id. 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 folder_id is assigned by Google."
        },
        "resourceType": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadResourceSettingsResourceType",
          "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)"
        }
      },
      "type": "object"
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadResourceSettingsResourceType": {
      "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)",
      "type": "string",
      "enum": [
        {
          "name": "ResourceTypeUnspecified",
          "description": "Unknown resource type.",
          "value": "RESOURCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "ConsumerProject",
          "description": "Deprecated. Existing workloads will continue to support this, but new CreateWorkloadRequests should not specify this as an input value.",
          "value": "CONSUMER_PROJECT"
        },
        {
          "name": "ConsumerFolder",
          "description": "Consumer Folder.",
          "value": "CONSUMER_FOLDER"
        },
        {
          "name": "EncryptionKeysProject",
          "description": "Consumer project containing encryption keys.",
          "value": "ENCRYPTION_KEYS_PROJECT"
        },
        {
          "name": "Keyring",
          "description": "Keyring resource that hosts encryption keys.",
          "value": "KEYRING"
        }
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadResourceSettingsResponse": {
      "description": "Represent the custom settings for the resources to be created.",
      "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."
        },
        "resourceId": {
          "type": "string",
          "description": "Resource identifier. For a project this represents project_id. 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 folder_id is assigned by Google."
        },
        "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)"
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "resourceId",
        "resourceType"
      ]
    },
    "google-native:assuredworkloads/v1:GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponseResponse": {
      "description": "Signed Access Approvals (SAA) enrollment response.",
      "properties": {
        "setupErrors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Indicates SAA enrollment setup error if any."
        },
        "setupStatus": {
          "type": "string",
          "description": "Indicates SAA enrollment status of a given workload."
        }
      },
      "type": "object",
      "required": [
        "setupErrors",
        "setupStatus"
      ]
    },
    "google-native:assuredworkloads/v1:WorkloadComplianceRegime": {
      "description": "Required. Immutable. Compliance Regime associated with this workload.",
      "type": "string",
      "enum": [
        {
          "name": "ComplianceRegimeUnspecified",
          "description": "Unknown compliance regime.",
          "value": "COMPLIANCE_REGIME_UNSPECIFIED"
        },
        {
          "name": "Il4",
          "description": "Information protection as per DoD IL4 requirements.",
          "value": "IL4"
        },
        {
          "name": "Cjis",
          "description": "Criminal Justice Information Services (CJIS) Security policies.",
          "value": "CJIS"
        },
        {
          "name": "FedrampHigh",
          "description": "FedRAMP High data protection controls",
          "value": "FEDRAMP_HIGH"
        },
        {
          "name": "FedrampModerate",
          "description": "FedRAMP Moderate data protection controls",
          "value": "FEDRAMP_MODERATE"
        },
        {
          "name": "UsRegionalAccess",
          "description": "Assured Workloads For US Regions data protection controls",
          "value": "US_REGIONAL_ACCESS"
        },
        {
          "name": "Hipaa",
          "description": "Health Insurance Portability and Accountability Act controls",
          "value": "HIPAA"
        },
        {
          "name": "Hitrust",
          "description": "Health Information Trust Alliance controls",
          "value": "HITRUST"
        },
        {
          "name": "EuRegionsAndSupport",
          "description": "Assured Workloads For EU Regions and Support controls",
          "value": "EU_REGIONS_AND_SUPPORT"
        },
        {
          "name": "CaRegionsAndSupport",
          "description": "Assured Workloads For Canada Regions and Support controls",
          "value": "CA_REGIONS_AND_SUPPORT"
        },
        {
          "name": "Itar",
          "description": "International Traffic in Arms Regulations",
          "value": "ITAR"
        },
        {
          "name": "AuRegionsAndUsSupport",
          "description": "Assured Workloads for Australia Regions and Support controls",
          "value": "AU_REGIONS_AND_US_SUPPORT"
        },
        {
          "name": "AssuredWorkloadsForPartners",
          "description": "Assured Workloads for Partners;",
          "value": "ASSURED_WORKLOADS_FOR_PARTNERS"
        },
        {
          "name": "IsrRegions",
          "description": "Assured Workloads for Israel",
          "value": "ISR_REGIONS"
        },
        {
          "name": "IsrRegionsAndSupport",
          "description": "Assured Workloads for Israel Regions",
          "value": "ISR_REGIONS_AND_SUPPORT"
        },
        {
          "name": "CaProtectedB",
          "description": "Assured Workloads for Canada Protected B regime",
          "value": "CA_PROTECTED_B"
        },
        {
          "name": "Il5",
          "description": "Information protection as per DoD IL5 requirements.",
          "value": "IL5"
        },
        {
          "name": "Il2",
          "description": "Information protection as per DoD IL2 requirements.",
          "value": "IL2"
        },
        {
          "name": "JpRegionsAndSupport",
          "description": "Assured Workloads for Japan Regions",
          "value": "JP_REGIONS_AND_SUPPORT"
        }
      ]
    },
    "google-native:assuredworkloads/v1:WorkloadPartner": {
      "description": "Optional. Partner regime associated with this workload.",
      "type": "string",
      "enum": [
        {
          "name": "PartnerUnspecified",
          "value": "PARTNER_UNSPECIFIED"
        },
        {
          "name": "LocalControlsByS3ns",
          "description": "Enum representing S3NS (Thales) partner.",
          "value": "LOCAL_CONTROLS_BY_S3NS"
        },
        {
          "name": "SovereignControlsByTSystems",
          "description": "Enum representing T_SYSTEM (TSI) partner.",
          "value": "SOVEREIGN_CONTROLS_BY_T_SYSTEMS"
        },
        {
          "name": "SovereignControlsBySiaMinsait",
          "description": "Enum representing SIA_MINSAIT (Indra) partner.",
          "value": "SOVEREIGN_CONTROLS_BY_SIA_MINSAIT"
        },
        {
          "name": "SovereignControlsByPsn",
          "description": "Enum representing PSN (TIM) partner.",
          "value": "SOVEREIGN_CONTROLS_BY_PSN"
        }
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings": {
      "description": "Settings specific to resources needed for CJIS.",
      "properties": {
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
          "description": "Input only. Immutable. Settings used to create a CMEK crypto key."
        }
      },
      "type": "object"
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettingsResponse": {
      "description": "Settings specific to resources needed for CJIS.",
      "properties": {
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettingsResponse",
          "description": "Input only. Immutable. Settings used to create a CMEK crypto key."
        }
      },
      "type": "object",
      "required": [
        "kmsSettings"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadComplianceStatusResponse": {
      "description": "Represents the Compliance Status of this workload",
      "properties": {
        "acknowledgedResourceViolationCount": {
          "type": "integer",
          "description": "Number of current resource violations which are not acknowledged."
        },
        "acknowledgedViolationCount": {
          "type": "integer",
          "description": "Number of current orgPolicy violations which are acknowledged."
        },
        "activeResourceViolationCount": {
          "type": "integer",
          "description": "Number of current resource violations which are acknowledged."
        },
        "activeViolationCount": {
          "type": "integer",
          "description": "Number of current orgPolicy violations which are not acknowledged."
        }
      },
      "type": "object",
      "required": [
        "acknowledgedResourceViolationCount",
        "acknowledgedViolationCount",
        "activeResourceViolationCount",
        "activeViolationCount"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadEkmProvisioningResponseResponse": {
      "description": "External key management systems(EKM) Provisioning response",
      "properties": {
        "ekmProvisioningErrorDomain": {
          "type": "string",
          "description": "Indicates Ekm provisioning error if any."
        },
        "ekmProvisioningErrorMapping": {
          "type": "string",
          "description": "Detailed error message if Ekm provisioning fails"
        },
        "ekmProvisioningState": {
          "type": "string",
          "description": "Indicates Ekm enrollment Provisioning of a given workload."
        }
      },
      "type": "object",
      "required": [
        "ekmProvisioningErrorDomain",
        "ekmProvisioningErrorMapping",
        "ekmProvisioningState"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings": {
      "description": "Settings specific to resources needed for FedRAMP High.",
      "properties": {
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
          "description": "Input only. Immutable. Settings used to create a CMEK crypto key."
        }
      },
      "type": "object"
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettingsResponse": {
      "description": "Settings specific to resources needed for FedRAMP High.",
      "properties": {
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettingsResponse",
          "description": "Input only. Immutable. Settings used to create a CMEK crypto key."
        }
      },
      "type": "object",
      "required": [
        "kmsSettings"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings": {
      "description": "Settings specific to resources needed for FedRAMP Moderate.",
      "properties": {
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
          "description": "Input only. Immutable. Settings used to create a CMEK crypto key."
        }
      },
      "type": "object"
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettingsResponse": {
      "description": "Settings specific to resources needed for FedRAMP Moderate.",
      "properties": {
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettingsResponse",
          "description": "Input only. Immutable. Settings used to create a CMEK crypto key."
        }
      },
      "type": "object",
      "required": [
        "kmsSettings"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings": {
      "description": "Settings specific to resources needed for IL4.",
      "properties": {
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
          "description": "Input only. Immutable. Settings used to create a CMEK crypto key."
        }
      },
      "type": "object"
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadIL4SettingsResponse": {
      "description": "Settings specific to resources needed for IL4.",
      "properties": {
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettingsResponse",
          "description": "Input only. Immutable. Settings used to create a CMEK crypto key."
        }
      },
      "type": "object",
      "required": [
        "kmsSettings"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings": {
      "description": "Settings specific to the Key Management Service.",
      "properties": {
        "nextRotationTime": {
          "type": "string",
          "description": "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."
        },
        "rotationPeriod": {
          "type": "string",
          "description": "Input only. Immutable. [next_rotation_time] 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."
        }
      },
      "type": "object",
      "required": [
        "nextRotationTime",
        "rotationPeriod"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettingsResponse": {
      "description": "Settings specific to the Key Management Service.",
      "properties": {
        "nextRotationTime": {
          "type": "string",
          "description": "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."
        },
        "rotationPeriod": {
          "type": "string",
          "description": "Input only. Immutable. [next_rotation_time] 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."
        }
      },
      "type": "object",
      "required": [
        "nextRotationTime",
        "rotationPeriod"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissions": {
      "description": "Permissions granted to the AW Partner SA account for the customer workload",
      "properties": {
        "assuredWorkloadsMonitoring": {
          "type": "boolean",
          "description": "Optional. Allow partner to view violation alerts."
        },
        "dataLogsViewer": {
          "type": "boolean",
          "description": "Allow the partner to view inspectability logs and monitoring violations."
        },
        "serviceAccessApprover": {
          "type": "boolean",
          "description": "Optional. Allow partner to view access approval logs."
        }
      },
      "type": "object"
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissionsResponse": {
      "description": "Permissions granted to the AW Partner SA account for the customer workload",
      "properties": {
        "assuredWorkloadsMonitoring": {
          "type": "boolean",
          "description": "Optional. Allow partner to view violation alerts."
        },
        "dataLogsViewer": {
          "type": "boolean",
          "description": "Allow the partner to view inspectability logs and monitoring violations."
        },
        "serviceAccessApprover": {
          "type": "boolean",
          "description": "Optional. Allow partner to view access approval logs."
        }
      },
      "type": "object",
      "required": [
        "assuredWorkloadsMonitoring",
        "dataLogsViewer",
        "serviceAccessApprover"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfoResponse": {
      "description": "Represent the resources that are children of this Workload.",
      "properties": {
        "resourceId": {
          "type": "string",
          "description": "Resource identifier. For a project this represents project_number."
        },
        "resourceType": {
          "type": "string",
          "description": "Indicates the type of resource."
        }
      },
      "type": "object",
      "required": [
        "resourceId",
        "resourceType"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings": {
      "description": "Represent the custom settings for the resources to be created.",
      "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."
        },
        "resourceId": {
          "type": "string",
          "description": "Resource identifier. For a project this represents project_id. 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 folder_id is assigned by Google."
        },
        "resourceType": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettingsResourceType",
          "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)"
        }
      },
      "type": "object"
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettingsResourceType": {
      "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)",
      "type": "string",
      "enum": [
        {
          "name": "ResourceTypeUnspecified",
          "description": "Unknown resource type.",
          "value": "RESOURCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "ConsumerProject",
          "description": "Deprecated. Existing workloads will continue to support this, but new CreateWorkloadRequests should not specify this as an input value.",
          "value": "CONSUMER_PROJECT"
        },
        {
          "name": "ConsumerFolder",
          "description": "Consumer Folder.",
          "value": "CONSUMER_FOLDER"
        },
        {
          "name": "EncryptionKeysProject",
          "description": "Consumer project containing encryption keys.",
          "value": "ENCRYPTION_KEYS_PROJECT"
        },
        {
          "name": "Keyring",
          "description": "Keyring resource that hosts encryption keys.",
          "value": "KEYRING"
        }
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettingsResponse": {
      "description": "Represent the custom settings for the resources to be created.",
      "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."
        },
        "resourceId": {
          "type": "string",
          "description": "Resource identifier. For a project this represents project_id. 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 folder_id is assigned by Google."
        },
        "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)"
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "resourceId",
        "resourceType"
      ]
    },
    "google-native:assuredworkloads/v1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponseResponse": {
      "description": "Signed Access Approvals (SAA) enrollment response.",
      "properties": {
        "setupErrors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Indicates SAA enrollment setup error if any."
        },
        "setupStatus": {
          "type": "string",
          "description": "Indicates SAA enrollment status of a given workload."
        }
      },
      "type": "object",
      "required": [
        "setupErrors",
        "setupStatus"
      ]
    },
    "google-native:assuredworkloads/v1beta1:WorkloadComplianceRegime": {
      "description": "Required. Immutable. Compliance Regime associated with this workload.",
      "type": "string",
      "enum": [
        {
          "name": "ComplianceRegimeUnspecified",
          "description": "Unknown compliance regime.",
          "value": "COMPLIANCE_REGIME_UNSPECIFIED"
        },
        {
          "name": "Il4",
          "description": "Information protection as per DoD IL4 requirements.",
          "value": "IL4"
        },
        {
          "name": "Cjis",
          "description": "Criminal Justice Information Services (CJIS) Security policies.",
          "value": "CJIS"
        },
        {
          "name": "FedrampHigh",
          "description": "FedRAMP High data protection controls",
          "value": "FEDRAMP_HIGH"
        },
        {
          "name": "FedrampModerate",
          "description": "FedRAMP Moderate data protection controls",
          "value": "FEDRAMP_MODERATE"
        },
        {
          "name": "UsRegionalAccess",
          "description": "Assured Workloads For US Regions data protection controls",
          "value": "US_REGIONAL_ACCESS"
        },
        {
          "name": "Hipaa",
          "description": "Health Insurance Portability and Accountability Act controls",
          "value": "HIPAA"
        },
        {
          "name": "Hitrust",
          "description": "Health Information Trust Alliance controls",
          "value": "HITRUST"
        },
        {
          "name": "EuRegionsAndSupport",
          "description": "Assured Workloads For EU Regions and Support controls",
          "value": "EU_REGIONS_AND_SUPPORT"
        },
        {
          "name": "CaRegionsAndSupport",
          "description": "Assured Workloads For Canada Regions and Support controls",
          "value": "CA_REGIONS_AND_SUPPORT"
        },
        {
          "name": "Itar",
          "description": "International Traffic in Arms Regulations",
          "value": "ITAR"
        },
        {
          "name": "AuRegionsAndUsSupport",
          "description": "Assured Workloads for Australia Regions and Support controls",
          "value": "AU_REGIONS_AND_US_SUPPORT"
        },
        {
          "name": "AssuredWorkloadsForPartners",
          "description": "Assured Workloads for Partners;",
          "value": "ASSURED_WORKLOADS_FOR_PARTNERS"
        },
        {
          "name": "IsrRegions",
          "description": "Assured Workloads for Israel",
          "value": "ISR_REGIONS"
        },
        {
          "name": "IsrRegionsAndSupport",
          "description": "Assured Workloads for Israel Regions",
          "value": "ISR_REGIONS_AND_SUPPORT"
        },
        {
          "name": "CaProtectedB",
          "description": "Assured Workloads for Canada Protected B regime",
          "value": "CA_PROTECTED_B"
        },
        {
          "name": "Il5",
          "description": "Information protection as per DoD IL5 requirements.",
          "value": "IL5"
        },
        {
          "name": "Il2",
          "description": "Information protection as per DoD IL2 requirements.",
          "value": "IL2"
        },
        {
          "name": "JpRegionsAndSupport",
          "description": "Assured Workloads for Japan Regions",
          "value": "JP_REGIONS_AND_SUPPORT"
        }
      ]
    },
    "google-native:assuredworkloads/v1beta1:WorkloadPartner": {
      "description": "Optional. Partner regime associated with this workload.",
      "type": "string",
      "enum": [
        {
          "name": "PartnerUnspecified",
          "value": "PARTNER_UNSPECIFIED"
        },
        {
          "name": "LocalControlsByS3ns",
          "description": "Enum representing S3NS (Thales) partner.",
          "value": "LOCAL_CONTROLS_BY_S3NS"
        },
        {
          "name": "SovereignControlsByTSystems",
          "description": "Enum representing T_SYSTEM (TSI) partner.",
          "value": "SOVEREIGN_CONTROLS_BY_T_SYSTEMS"
        },
        {
          "name": "SovereignControlsBySiaMinsait",
          "description": "Enum representing SIA_MINSAIT (Indra) partner.",
          "value": "SOVEREIGN_CONTROLS_BY_SIA_MINSAIT"
        },
        {
          "name": "SovereignControlsByPsn",
          "description": "Enum representing PSN (TIM) partner.",
          "value": "SOVEREIGN_CONTROLS_BY_PSN"
        }
      ]
    },
    "google-native:backupdr/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:backupdr%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:backupdr/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:backupdr%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:backupdr/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:backupdr%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:backupdr/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:backupdr/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:backupdr/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:backupdr%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:backupdr/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:backupdr%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:backupdr/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:backupdr/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:backupdr/v1:ManagementServerType": {
      "description": "Required. The type of the ManagementServer resource.",
      "type": "string",
      "enum": [
        {
          "name": "InstanceTypeUnspecified",
          "description": "Instance type is not mentioned.",
          "value": "INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "BackupRestore",
          "description": "Instance for backup and restore management (i.e., AGM).",
          "value": "BACKUP_RESTORE"
        }
      ]
    },
    "google-native:backupdr/v1:ManagementURIResponse": {
      "description": "ManagementURI for the Management Server resource.",
      "properties": {
        "api": {
          "type": "string",
          "description": "The ManagementServer AGM/RD API URL."
        },
        "webUi": {
          "type": "string",
          "description": "The ManagementServer AGM/RD WebUI URL."
        }
      },
      "type": "object",
      "required": [
        "api",
        "webUi"
      ]
    },
    "google-native:backupdr/v1:NetworkConfig": {
      "description": "Network configuration for ManagementServer instance.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Optional. The resource name of the Google Compute Engine VPC network to which the ManagementServer instance is connected."
        },
        "peeringMode": {
          "$ref": "#/types/google-native:backupdr%2Fv1:NetworkConfigPeeringMode",
          "description": "Optional. The network connect mode of the ManagementServer instance. For this version, only PRIVATE_SERVICE_ACCESS is supported."
        }
      },
      "type": "object"
    },
    "google-native:backupdr/v1:NetworkConfigPeeringMode": {
      "description": "Optional. The network connect mode of the ManagementServer instance. For this version, only PRIVATE_SERVICE_ACCESS is supported.",
      "type": "string",
      "enum": [
        {
          "name": "PeeringModeUnspecified",
          "description": "Peering mode not set.",
          "value": "PEERING_MODE_UNSPECIFIED"
        },
        {
          "name": "PrivateServiceAccess",
          "description": "Connect using Private Service Access to the Management Server. Private services access provides an IP address range for multiple Google Cloud services, including Cloud BackupDR.",
          "value": "PRIVATE_SERVICE_ACCESS"
        }
      ]
    },
    "google-native:backupdr/v1:NetworkConfigResponse": {
      "description": "Network configuration for ManagementServer instance.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Optional. The resource name of the Google Compute Engine VPC network to which the ManagementServer instance is connected."
        },
        "peeringMode": {
          "type": "string",
          "description": "Optional. The network connect mode of the ManagementServer instance. For this version, only PRIVATE_SERVICE_ACCESS is supported."
        }
      },
      "type": "object",
      "required": [
        "network",
        "peeringMode"
      ]
    },
    "google-native:backupdr/v1:WorkforceIdentityBasedManagementURIResponse": {
      "description": "ManagementURI depending on the Workforce Identity i.e. either 1p or 3p.",
      "properties": {
        "firstPartyManagementUri": {
          "type": "string",
          "description": "First party Management URI for Google Identities."
        },
        "thirdPartyManagementUri": {
          "type": "string",
          "description": "Third party Management URI for External Identity Providers."
        }
      },
      "type": "object",
      "required": [
        "firstPartyManagementUri",
        "thirdPartyManagementUri"
      ]
    },
    "google-native:backupdr/v1:WorkforceIdentityBasedOAuth2ClientIDResponse": {
      "description": "OAuth Client ID depending on the Workforce Identity i.e. either 1p or 3p,",
      "properties": {
        "firstPartyOauth2ClientId": {
          "type": "string",
          "description": "First party OAuth Client ID for Google Identities."
        },
        "thirdPartyOauth2ClientId": {
          "type": "string",
          "description": "Third party OAuth Client ID for External Identity Providers."
        }
      },
      "type": "object",
      "required": [
        "firstPartyOauth2ClientId",
        "thirdPartyOauth2ClientId"
      ]
    },
    "google-native:baremetalsolution/v2:AllowedClient": {
      "description": "Represents an 'access point' for the share.",
      "properties": {
        "allowDev": {
          "type": "boolean",
          "description": "Allow dev flag. Which controls whether to allow creation of devices."
        },
        "allowSuid": {
          "type": "boolean",
          "description": "Allow the setuid flag."
        },
        "allowedClientsCidr": {
          "type": "string",
          "description": "The subnet of IP addresses permitted to access the share."
        },
        "mountPermissions": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:AllowedClientMountPermissions",
          "description": "Mount permissions."
        },
        "network": {
          "type": "string",
          "description": "The network the access point sits on."
        },
        "noRootSquash": {
          "type": "boolean",
          "description": "Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:AllowedClientMountPermissions": {
      "description": "Mount permissions.",
      "type": "string",
      "enum": [
        {
          "name": "MountPermissionsUnspecified",
          "description": "Permissions were not specified.",
          "value": "MOUNT_PERMISSIONS_UNSPECIFIED"
        },
        {
          "name": "Read",
          "description": "NFS share can be mount with read-only permissions.",
          "value": "READ"
        },
        {
          "name": "ReadWrite",
          "description": "NFS share can be mount with read-write permissions.",
          "value": "READ_WRITE"
        }
      ]
    },
    "google-native:baremetalsolution/v2:AllowedClientResponse": {
      "description": "Represents an 'access point' for the share.",
      "properties": {
        "allowDev": {
          "type": "boolean",
          "description": "Allow dev flag. Which controls whether to allow creation of devices."
        },
        "allowSuid": {
          "type": "boolean",
          "description": "Allow the setuid flag."
        },
        "allowedClientsCidr": {
          "type": "string",
          "description": "The subnet of IP addresses permitted to access the share."
        },
        "mountPermissions": {
          "type": "string",
          "description": "Mount permissions."
        },
        "network": {
          "type": "string",
          "description": "The network the access point sits on."
        },
        "nfsPath": {
          "type": "string",
          "description": "The path to access NFS, in format shareIP:/InstanceID InstanceID is the generated ID instead of customer provided name. example like \"10.0.0.0:/g123456789-nfs001\""
        },
        "noRootSquash": {
          "type": "boolean",
          "description": "Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication."
        },
        "shareIp": {
          "type": "string",
          "description": "The IP address of the share on this network. Assigned automatically during provisioning based on the network's services_cidr."
        }
      },
      "type": "object",
      "required": [
        "allowDev",
        "allowSuid",
        "allowedClientsCidr",
        "mountPermissions",
        "network",
        "nfsPath",
        "noRootSquash",
        "shareIp"
      ]
    },
    "google-native:baremetalsolution/v2:GoogleCloudBaremetalsolutionV2LogicalInterface": {
      "description": "Each logical interface represents a logical abstraction of the underlying physical interface (for eg. bond, nic) of the instance. Each logical interface can effectively map to multiple network-IP pairs and still be mapped to one underlying physical interface.",
      "properties": {
        "interfaceIndex": {
          "type": "integer",
          "description": "The index of the logical interface mapping to the index of the hardware bond or nic on the chosen network template. This field is deprecated.",
          "deprecationMessage": "The index of the logical interface mapping to the index of the hardware bond or nic on the chosen network template. This field is deprecated."
        },
        "logicalNetworkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:LogicalNetworkInterface"
          },
          "description": "List of logical network interfaces within a logical interface."
        },
        "name": {
          "type": "string",
          "description": "Interface name. This is of syntax or and forms part of the network template name."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:GoogleCloudBaremetalsolutionV2LogicalInterfaceResponse": {
      "description": "Each logical interface represents a logical abstraction of the underlying physical interface (for eg. bond, nic) of the instance. Each logical interface can effectively map to multiple network-IP pairs and still be mapped to one underlying physical interface.",
      "properties": {
        "interfaceIndex": {
          "type": "integer",
          "description": "The index of the logical interface mapping to the index of the hardware bond or nic on the chosen network template. This field is deprecated.",
          "deprecationMessage": "The index of the logical interface mapping to the index of the hardware bond or nic on the chosen network template. This field is deprecated."
        },
        "logicalNetworkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:LogicalNetworkInterfaceResponse"
          },
          "description": "List of logical network interfaces within a logical interface."
        },
        "name": {
          "type": "string",
          "description": "Interface name. This is of syntax or and forms part of the network template name."
        }
      },
      "type": "object",
      "required": [
        "interfaceIndex",
        "logicalNetworkInterfaces",
        "name"
      ]
    },
    "google-native:baremetalsolution/v2:InstanceConfig": {
      "description": "Configuration parameters for a new instance.",
      "properties": {
        "accountNetworksEnabled": {
          "type": "boolean",
          "description": "If true networks can be from different projects of the same vendor account."
        },
        "clientNetwork": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkAddress",
          "description": "Client network address. Filled if InstanceConfig.multivlan_config is false."
        },
        "hyperthreading": {
          "type": "boolean",
          "description": "Whether the instance should be provisioned with Hyperthreading enabled."
        },
        "id": {
          "type": "string",
          "description": "A transient unique identifier to idenfity an instance within an ProvisioningConfig request."
        },
        "instanceType": {
          "type": "string",
          "description": "Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)"
        },
        "logicalInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:GoogleCloudBaremetalsolutionV2LogicalInterface"
          },
          "description": "List of logical interfaces for the instance. The number of logical interfaces will be the same as number of hardware bond/nic on the chosen network template. Filled if InstanceConfig.multivlan_config is true."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance config."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:InstanceConfigNetworkConfig",
          "description": "The type of network configuration on the instance."
        },
        "networkTemplate": {
          "type": "string",
          "description": "Server network template name. Filled if InstanceConfig.multivlan_config is true."
        },
        "osImage": {
          "type": "string",
          "description": "OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)"
        },
        "privateNetwork": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkAddress",
          "description": "Private network address, if any. Filled if InstanceConfig.multivlan_config is false."
        },
        "sshKeyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of names of ssh keys used to provision the instance."
        },
        "userNote": {
          "type": "string",
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team ."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:InstanceConfigNetworkConfig": {
      "description": "The type of network configuration on the instance.",
      "type": "string",
      "enum": [
        {
          "name": "NetworkconfigUnspecified",
          "description": "The unspecified network configuration.",
          "value": "NETWORKCONFIG_UNSPECIFIED"
        },
        {
          "name": "SingleVlan",
          "description": "Instance part of single client network and single private network.",
          "value": "SINGLE_VLAN"
        },
        {
          "name": "MultiVlan",
          "description": "Instance part of multiple (or single) client networks and private networks.",
          "value": "MULTI_VLAN"
        }
      ]
    },
    "google-native:baremetalsolution/v2:InstanceConfigResponse": {
      "description": "Configuration parameters for a new instance.",
      "properties": {
        "accountNetworksEnabled": {
          "type": "boolean",
          "description": "If true networks can be from different projects of the same vendor account."
        },
        "clientNetwork": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkAddressResponse",
          "description": "Client network address. Filled if InstanceConfig.multivlan_config is false."
        },
        "hyperthreading": {
          "type": "boolean",
          "description": "Whether the instance should be provisioned with Hyperthreading enabled."
        },
        "instanceType": {
          "type": "string",
          "description": "Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)"
        },
        "logicalInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:GoogleCloudBaremetalsolutionV2LogicalInterfaceResponse"
          },
          "description": "List of logical interfaces for the instance. The number of logical interfaces will be the same as number of hardware bond/nic on the chosen network template. Filled if InstanceConfig.multivlan_config is true."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance config."
        },
        "networkConfig": {
          "type": "string",
          "description": "The type of network configuration on the instance."
        },
        "networkTemplate": {
          "type": "string",
          "description": "Server network template name. Filled if InstanceConfig.multivlan_config is true."
        },
        "osImage": {
          "type": "string",
          "description": "OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)"
        },
        "privateNetwork": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkAddressResponse",
          "description": "Private network address, if any. Filled if InstanceConfig.multivlan_config is false."
        },
        "sshKeyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of names of ssh keys used to provision the instance."
        },
        "userNote": {
          "type": "string",
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team ."
        }
      },
      "type": "object",
      "required": [
        "accountNetworksEnabled",
        "clientNetwork",
        "hyperthreading",
        "instanceType",
        "logicalInterfaces",
        "name",
        "networkConfig",
        "networkTemplate",
        "osImage",
        "privateNetwork",
        "sshKeyNames",
        "userNote"
      ]
    },
    "google-native:baremetalsolution/v2:IntakeVlanAttachment": {
      "description": "A GCP vlan attachment.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier of the VLAN attachment."
        },
        "pairingKey": {
          "type": "string",
          "description": "Attachment pairing key."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:IntakeVlanAttachmentResponse": {
      "description": "A GCP vlan attachment.",
      "properties": {
        "pairingKey": {
          "type": "string",
          "description": "Attachment pairing key."
        }
      },
      "type": "object",
      "required": [
        "pairingKey"
      ]
    },
    "google-native:baremetalsolution/v2:LogicalNetworkInterface": {
      "description": "Each logical network interface is effectively a network and IP pair.",
      "properties": {
        "defaultGateway": {
          "type": "boolean",
          "description": "Whether this interface is the default gateway for the instance. Only one interface can be the default gateway for the instance."
        },
        "id": {
          "type": "string",
          "description": "An identifier for the `Network`, generated by the backend."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address in the network"
        },
        "network": {
          "type": "string",
          "description": "Name of the network"
        },
        "networkType": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:LogicalNetworkInterfaceNetworkType",
          "description": "Type of network."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:LogicalNetworkInterfaceNetworkType": {
      "description": "Type of network.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified value.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Client",
          "description": "Client network, a network peered to a Google Cloud VPC.",
          "value": "CLIENT"
        },
        {
          "name": "Private",
          "description": "Private network, a network local to the Bare Metal Solution environment.",
          "value": "PRIVATE"
        }
      ]
    },
    "google-native:baremetalsolution/v2:LogicalNetworkInterfaceResponse": {
      "description": "Each logical network interface is effectively a network and IP pair.",
      "properties": {
        "defaultGateway": {
          "type": "boolean",
          "description": "Whether this interface is the default gateway for the instance. Only one interface can be the default gateway for the instance."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address in the network"
        },
        "network": {
          "type": "string",
          "description": "Name of the network"
        },
        "networkType": {
          "type": "string",
          "description": "Type of network."
        }
      },
      "type": "object",
      "required": [
        "defaultGateway",
        "ipAddress",
        "network",
        "networkType"
      ]
    },
    "google-native:baremetalsolution/v2:LunRange": {
      "description": "A LUN(Logical Unit Number) range.",
      "properties": {
        "quantity": {
          "type": "integer",
          "description": "Number of LUNs to create."
        },
        "sizeGb": {
          "type": "integer",
          "description": "The requested size of each LUN, in GB."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:LunRangeResponse": {
      "description": "A LUN(Logical Unit Number) range.",
      "properties": {
        "quantity": {
          "type": "integer",
          "description": "Number of LUNs to create."
        },
        "sizeGb": {
          "type": "integer",
          "description": "The requested size of each LUN, in GB."
        }
      },
      "type": "object",
      "required": [
        "quantity",
        "sizeGb"
      ]
    },
    "google-native:baremetalsolution/v2:NetworkAddress": {
      "description": "A network.",
      "properties": {
        "address": {
          "type": "string",
          "description": "IPv4 address to be assigned to the server."
        },
        "existingNetworkId": {
          "type": "string",
          "description": "Name of the existing network to use."
        },
        "networkId": {
          "type": "string",
          "description": "Id of the network to use, within the same ProvisioningConfig request."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:NetworkAddressResponse": {
      "description": "A network.",
      "properties": {
        "address": {
          "type": "string",
          "description": "IPv4 address to be assigned to the server."
        },
        "existingNetworkId": {
          "type": "string",
          "description": "Name of the existing network to use."
        },
        "networkId": {
          "type": "string",
          "description": "Id of the network to use, within the same ProvisioningConfig request."
        }
      },
      "type": "object",
      "required": [
        "address",
        "existingNetworkId",
        "networkId"
      ]
    },
    "google-native:baremetalsolution/v2:NetworkConfig": {
      "description": "Configuration parameters for a new network.",
      "properties": {
        "bandwidth": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkConfigBandwidth",
          "description": "Interconnect bandwidth. Set only when type is CLIENT."
        },
        "cidr": {
          "type": "string",
          "description": "CIDR range of the network."
        },
        "gcpService": {
          "type": "string",
          "description": "The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning."
        },
        "id": {
          "type": "string",
          "description": "A transient unique identifier to identify a volume within an ProvisioningConfig request."
        },
        "jumboFramesEnabled": {
          "type": "boolean",
          "description": "The JumboFramesEnabled option for customer to set."
        },
        "serviceCidr": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkConfigServiceCidr",
          "description": "Service CIDR, if any."
        },
        "type": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkConfigType",
          "description": "The type of this network, either Client or Private."
        },
        "userNote": {
          "type": "string",
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team ."
        },
        "vlanAttachments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:IntakeVlanAttachment"
          },
          "description": "List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan)."
        },
        "vlanSameProject": {
          "type": "boolean",
          "description": "Whether the VLAN attachment pair is located in the same project."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:NetworkConfigBandwidth": {
      "description": "Interconnect bandwidth. Set only when type is CLIENT.",
      "type": "string",
      "enum": [
        {
          "name": "BandwidthUnspecified",
          "description": "Unspecified value.",
          "value": "BANDWIDTH_UNSPECIFIED"
        },
        {
          "name": "Bw1Gbps",
          "description": "1 Gbps.",
          "value": "BW_1_GBPS"
        },
        {
          "name": "Bw2Gbps",
          "description": "2 Gbps.",
          "value": "BW_2_GBPS"
        },
        {
          "name": "Bw5Gbps",
          "description": "5 Gbps.",
          "value": "BW_5_GBPS"
        },
        {
          "name": "Bw10Gbps",
          "description": "10 Gbps.",
          "value": "BW_10_GBPS"
        }
      ]
    },
    "google-native:baremetalsolution/v2:NetworkConfigResponse": {
      "description": "Configuration parameters for a new network.",
      "properties": {
        "bandwidth": {
          "type": "string",
          "description": "Interconnect bandwidth. Set only when type is CLIENT."
        },
        "cidr": {
          "type": "string",
          "description": "CIDR range of the network."
        },
        "gcpService": {
          "type": "string",
          "description": "The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning."
        },
        "jumboFramesEnabled": {
          "type": "boolean",
          "description": "The JumboFramesEnabled option for customer to set."
        },
        "name": {
          "type": "string",
          "description": "The name of the network config."
        },
        "serviceCidr": {
          "type": "string",
          "description": "Service CIDR, if any."
        },
        "type": {
          "type": "string",
          "description": "The type of this network, either Client or Private."
        },
        "userNote": {
          "type": "string",
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team ."
        },
        "vlanAttachments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:IntakeVlanAttachmentResponse"
          },
          "description": "List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan)."
        },
        "vlanSameProject": {
          "type": "boolean",
          "description": "Whether the VLAN attachment pair is located in the same project."
        }
      },
      "type": "object",
      "required": [
        "bandwidth",
        "cidr",
        "gcpService",
        "jumboFramesEnabled",
        "name",
        "serviceCidr",
        "type",
        "userNote",
        "vlanAttachments",
        "vlanSameProject"
      ]
    },
    "google-native:baremetalsolution/v2:NetworkConfigServiceCidr": {
      "description": "Service CIDR, if any.",
      "type": "string",
      "enum": [
        {
          "name": "ServiceCidrUnspecified",
          "description": "Unspecified value.",
          "value": "SERVICE_CIDR_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Services are disabled for the given network.",
          "value": "DISABLED"
        },
        {
          "name": "High26",
          "description": "Use the highest /26 block of the network to host services.",
          "value": "HIGH_26"
        },
        {
          "name": "High27",
          "description": "Use the highest /27 block of the network to host services.",
          "value": "HIGH_27"
        },
        {
          "name": "High28",
          "description": "Use the highest /28 block of the network to host services.",
          "value": "HIGH_28"
        }
      ]
    },
    "google-native:baremetalsolution/v2:NetworkConfigType": {
      "description": "The type of this network, either Client or Private.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified value.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Client",
          "description": "Client network, that is a network peered to a GCP VPC.",
          "value": "CLIENT"
        },
        {
          "name": "Private",
          "description": "Private network, that is a network local to the BMS POD.",
          "value": "PRIVATE"
        }
      ]
    },
    "google-native:baremetalsolution/v2:NfsExport": {
      "description": "A NFS export entry.",
      "properties": {
        "allowDev": {
          "type": "boolean",
          "description": "Allow dev flag in NfsShare AllowedClientsRequest."
        },
        "allowSuid": {
          "type": "boolean",
          "description": "Allow the setuid flag."
        },
        "cidr": {
          "type": "string",
          "description": "A CIDR range."
        },
        "machineId": {
          "type": "string",
          "description": "Either a single machine, identified by an ID, or a comma-separated list of machine IDs."
        },
        "networkId": {
          "type": "string",
          "description": "Network to use to publish the export."
        },
        "noRootSquash": {
          "type": "boolean",
          "description": "Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication."
        },
        "permissions": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NfsExportPermissions",
          "description": "Export permissions."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:NfsExportPermissions": {
      "description": "Export permissions.",
      "type": "string",
      "enum": [
        {
          "name": "PermissionsUnspecified",
          "description": "Unspecified value.",
          "value": "PERMISSIONS_UNSPECIFIED"
        },
        {
          "name": "ReadOnly",
          "description": "Read-only permission.",
          "value": "READ_ONLY"
        },
        {
          "name": "ReadWrite",
          "description": "Read-write permission.",
          "value": "READ_WRITE"
        }
      ]
    },
    "google-native:baremetalsolution/v2:NfsExportResponse": {
      "description": "A NFS export entry.",
      "properties": {
        "allowDev": {
          "type": "boolean",
          "description": "Allow dev flag in NfsShare AllowedClientsRequest."
        },
        "allowSuid": {
          "type": "boolean",
          "description": "Allow the setuid flag."
        },
        "cidr": {
          "type": "string",
          "description": "A CIDR range."
        },
        "machineId": {
          "type": "string",
          "description": "Either a single machine, identified by an ID, or a comma-separated list of machine IDs."
        },
        "networkId": {
          "type": "string",
          "description": "Network to use to publish the export."
        },
        "noRootSquash": {
          "type": "boolean",
          "description": "Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication."
        },
        "permissions": {
          "type": "string",
          "description": "Export permissions."
        }
      },
      "type": "object",
      "required": [
        "allowDev",
        "allowSuid",
        "cidr",
        "machineId",
        "networkId",
        "noRootSquash",
        "permissions"
      ]
    },
    "google-native:baremetalsolution/v2:NfsShareStorageType": {
      "description": "Immutable. The storage type of the underlying volume.",
      "type": "string",
      "enum": [
        {
          "name": "StorageTypeUnspecified",
          "description": "The storage type for this volume is unknown.",
          "value": "STORAGE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Ssd",
          "description": "The storage type for this volume is SSD.",
          "value": "SSD"
        },
        {
          "name": "Hdd",
          "description": "This storage type for this volume is HDD.",
          "value": "HDD"
        }
      ]
    },
    "google-native:baremetalsolution/v2:VolumeConfig": {
      "description": "Configuration parameters for a new volume.",
      "properties": {
        "gcpService": {
          "type": "string",
          "description": "The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning."
        },
        "id": {
          "type": "string",
          "description": "A transient unique identifier to identify a volume within an ProvisioningConfig request."
        },
        "lunRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:LunRange"
          },
          "description": "LUN ranges to be configured. Set only when protocol is PROTOCOL_FC."
        },
        "machineIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC."
        },
        "nfsExports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:NfsExport"
          },
          "description": "NFS exports. Set only when protocol is PROTOCOL_NFS."
        },
        "performanceTier": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:VolumeConfigPerformanceTier",
          "description": "Performance tier of the Volume. Default is SHARED."
        },
        "protocol": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:VolumeConfigProtocol",
          "description": "Volume protocol."
        },
        "sizeGb": {
          "type": "integer",
          "description": "The requested size of this volume, in GB."
        },
        "snapshotsEnabled": {
          "type": "boolean",
          "description": "Whether snapshots should be enabled."
        },
        "type": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:VolumeConfigType",
          "description": "The type of this Volume."
        },
        "userNote": {
          "type": "string",
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team ."
        }
      },
      "type": "object"
    },
    "google-native:baremetalsolution/v2:VolumeConfigPerformanceTier": {
      "description": "Performance tier of the Volume. Default is SHARED.",
      "type": "string",
      "enum": [
        {
          "name": "VolumePerformanceTierUnspecified",
          "description": "Value is not specified.",
          "value": "VOLUME_PERFORMANCE_TIER_UNSPECIFIED"
        },
        {
          "name": "VolumePerformanceTierShared",
          "description": "Regular volumes, shared aggregates.",
          "value": "VOLUME_PERFORMANCE_TIER_SHARED"
        },
        {
          "name": "VolumePerformanceTierAssigned",
          "description": "Assigned aggregates.",
          "value": "VOLUME_PERFORMANCE_TIER_ASSIGNED"
        },
        {
          "name": "VolumePerformanceTierHt",
          "description": "High throughput aggregates.",
          "value": "VOLUME_PERFORMANCE_TIER_HT"
        }
      ]
    },
    "google-native:baremetalsolution/v2:VolumeConfigProtocol": {
      "description": "Volume protocol.",
      "type": "string",
      "enum": [
        {
          "name": "ProtocolUnspecified",
          "description": "Unspecified value.",
          "value": "PROTOCOL_UNSPECIFIED"
        },
        {
          "name": "ProtocolFc",
          "description": "Fibre channel.",
          "value": "PROTOCOL_FC"
        },
        {
          "name": "ProtocolNfs",
          "description": "Network file system.",
          "value": "PROTOCOL_NFS"
        }
      ]
    },
    "google-native:baremetalsolution/v2:VolumeConfigResponse": {
      "description": "Configuration parameters for a new volume.",
      "properties": {
        "gcpService": {
          "type": "string",
          "description": "The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning."
        },
        "lunRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:LunRangeResponse"
          },
          "description": "LUN ranges to be configured. Set only when protocol is PROTOCOL_FC."
        },
        "machineIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC."
        },
        "name": {
          "type": "string",
          "description": "The name of the volume config."
        },
        "nfsExports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:NfsExportResponse"
          },
          "description": "NFS exports. Set only when protocol is PROTOCOL_NFS."
        },
        "performanceTier": {
          "type": "string",
          "description": "Performance tier of the Volume. Default is SHARED."
        },
        "protocol": {
          "type": "string",
          "description": "Volume protocol."
        },
        "sizeGb": {
          "type": "integer",
          "description": "The requested size of this volume, in GB."
        },
        "snapshotsEnabled": {
          "type": "boolean",
          "description": "Whether snapshots should be enabled."
        },
        "type": {
          "type": "string",
          "description": "The type of this Volume."
        },
        "userNote": {
          "type": "string",
          "description": "User note field, it can be used by customers to add additional information for the BMS Ops team ."
        }
      },
      "type": "object",
      "required": [
        "gcpService",
        "lunRanges",
        "machineIds",
        "name",
        "nfsExports",
        "performanceTier",
        "protocol",
        "sizeGb",
        "snapshotsEnabled",
        "type",
        "userNote"
      ]
    },
    "google-native:baremetalsolution/v2:VolumeConfigType": {
      "description": "The type of this Volume.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The unspecified type.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Flash",
          "description": "This Volume is on flash.",
          "value": "FLASH"
        },
        {
          "name": "Disk",
          "description": "This Volume is on disk.",
          "value": "DISK"
        }
      ]
    },
    "google-native:batch/v1:Accelerator": {
      "description": "Accelerator describes Compute Engine accelerators to be attached to the VM.",
      "properties": {
        "count": {
          "type": "string",
          "description": "The number of accelerators of this type."
        },
        "driverVersion": {
          "type": "string",
          "description": "Optional. The NVIDIA GPU driver version that should be installed for this type. You can define the specific driver version such as \"470.103.01\", following the driver version requirements in https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#minimum-driver. Batch will install the specific accelerator driver if qualified."
        },
        "installGpuDrivers": {
          "type": "boolean",
          "description": "Deprecated: please use instances[0].install_gpu_drivers instead.",
          "deprecationMessage": "Deprecated: please use instances[0].install_gpu_drivers instead."
        },
        "type": {
          "type": "string",
          "description": "The accelerator type. For example, \"nvidia-tesla-t4\". See `gcloud compute accelerator-types list`."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:AcceleratorResponse": {
      "description": "Accelerator describes Compute Engine accelerators to be attached to the VM.",
      "properties": {
        "count": {
          "type": "string",
          "description": "The number of accelerators of this type."
        },
        "driverVersion": {
          "type": "string",
          "description": "Optional. The NVIDIA GPU driver version that should be installed for this type. You can define the specific driver version such as \"470.103.01\", following the driver version requirements in https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#minimum-driver. Batch will install the specific accelerator driver if qualified."
        },
        "installGpuDrivers": {
          "type": "boolean",
          "description": "Deprecated: please use instances[0].install_gpu_drivers instead.",
          "deprecationMessage": "Deprecated: please use instances[0].install_gpu_drivers instead."
        },
        "type": {
          "type": "string",
          "description": "The accelerator type. For example, \"nvidia-tesla-t4\". See `gcloud compute accelerator-types list`."
        }
      },
      "type": "object",
      "required": [
        "count",
        "driverVersion",
        "installGpuDrivers",
        "type"
      ]
    },
    "google-native:batch/v1:ActionCondition": {
      "description": "Conditions for actions to deal with task failures.",
      "properties": {
        "exitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Exit codes of a task execution. If there are more than 1 exit codes, when task executes with any of the exit code in the list, the condition is met and the action will be executed."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:ActionConditionResponse": {
      "description": "Conditions for actions to deal with task failures.",
      "properties": {
        "exitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Exit codes of a task execution. If there are more than 1 exit codes, when task executes with any of the exit code in the list, the condition is met and the action will be executed."
        }
      },
      "type": "object",
      "required": [
        "exitCodes"
      ]
    },
    "google-native:batch/v1:AllocationPolicy": {
      "description": "A Job's resource allocation policy describes when, where, and how compute resources should be allocated for the Job.",
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:InstancePolicyOrTemplate"
          },
          "description": "Describe instances that can be created by this AllocationPolicy. Only instances[0] is supported now."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels applied to all VM instances and other resources created by AllocationPolicy. Labels could be user provided or system generated. You can assign up to 64 labels. [Google Compute Engine label restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) apply. Label names that start with \"goog-\" or \"google-\" are reserved."
        },
        "location": {
          "$ref": "#/types/google-native:batch%2Fv1:LocationPolicy",
          "description": "Location where compute resources should be allocated for the Job."
        },
        "network": {
          "$ref": "#/types/google-native:batch%2Fv1:NetworkPolicy",
          "description": "The network policy. If you define an instance template in the InstancePolicyOrTemplate field, Batch will use the network settings in the instance template instead of this field."
        },
        "placement": {
          "$ref": "#/types/google-native:batch%2Fv1:PlacementPolicy",
          "description": "The placement policy."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:batch%2Fv1:ServiceAccount",
          "description": "Service account that VMs will run as."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:AllocationPolicyResponse": {
      "description": "A Job's resource allocation policy describes when, where, and how compute resources should be allocated for the Job.",
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:InstancePolicyOrTemplateResponse"
          },
          "description": "Describe instances that can be created by this AllocationPolicy. Only instances[0] is supported now."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels applied to all VM instances and other resources created by AllocationPolicy. Labels could be user provided or system generated. You can assign up to 64 labels. [Google Compute Engine label restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) apply. Label names that start with \"goog-\" or \"google-\" are reserved."
        },
        "location": {
          "$ref": "#/types/google-native:batch%2Fv1:LocationPolicyResponse",
          "description": "Location where compute resources should be allocated for the Job."
        },
        "network": {
          "$ref": "#/types/google-native:batch%2Fv1:NetworkPolicyResponse",
          "description": "The network policy. If you define an instance template in the InstancePolicyOrTemplate field, Batch will use the network settings in the instance template instead of this field."
        },
        "placement": {
          "$ref": "#/types/google-native:batch%2Fv1:PlacementPolicyResponse",
          "description": "The placement policy."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:batch%2Fv1:ServiceAccountResponse",
          "description": "Service account that VMs will run as."
        }
      },
      "type": "object",
      "required": [
        "instances",
        "labels",
        "location",
        "network",
        "placement",
        "serviceAccount"
      ]
    },
    "google-native:batch/v1:AttachedDisk": {
      "description": "A new or an existing persistent disk (PD) or a local ssd attached to a VM instance.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Device name that the guest operating system will see. It is used by Runnable.volumes field to mount disks. So please specify the device_name if you want Batch to help mount the disk, and it should match the device_name field in volumes."
        },
        "existingDisk": {
          "type": "string",
          "description": "Name of an existing PD."
        },
        "newDisk": {
          "$ref": "#/types/google-native:batch%2Fv1:Disk"
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:AttachedDiskResponse": {
      "description": "A new or an existing persistent disk (PD) or a local ssd attached to a VM instance.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Device name that the guest operating system will see. It is used by Runnable.volumes field to mount disks. So please specify the device_name if you want Batch to help mount the disk, and it should match the device_name field in volumes."
        },
        "existingDisk": {
          "type": "string",
          "description": "Name of an existing PD."
        },
        "newDisk": {
          "$ref": "#/types/google-native:batch%2Fv1:DiskResponse"
        }
      },
      "type": "object",
      "required": [
        "deviceName",
        "existingDisk",
        "newDisk"
      ]
    },
    "google-native:batch/v1:Barrier": {
      "description": "Barrier runnable blocks until all tasks in a taskgroup reach it.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Barriers are identified by their index in runnable list. Names are not required, but if present should be an identifier."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:BarrierResponse": {
      "description": "Barrier runnable blocks until all tasks in a taskgroup reach it.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Barriers are identified by their index in runnable list. Names are not required, but if present should be an identifier."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:batch/v1:CloudLoggingOption": {
      "description": "CloudLoggingOption contains additional settings for cloud logging generated by Batch job.",
      "type": "object"
    },
    "google-native:batch/v1:CloudLoggingOptionResponse": {
      "description": "CloudLoggingOption contains additional settings for cloud logging generated by Batch job.",
      "type": "object"
    },
    "google-native:batch/v1:ComputeResource": {
      "description": "Compute resource requirements. ComputeResource defines the amount of resources required for each task. Make sure your tasks have enough resources to successfully run. If you also define the types of resources for a job to use with the [InstancePolicyOrTemplate](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate) field, make sure both fields are compatible with each other.",
      "properties": {
        "bootDiskMib": {
          "type": "string",
          "description": "Extra boot disk size in MiB for each task."
        },
        "cpuMilli": {
          "type": "string",
          "description": "The milliCPU count. `cpuMilli` defines the amount of CPU resources per task in milliCPU units. For example, `1000` corresponds to 1 vCPU per task. If undefined, the default value is `2000`. If you also define the VM's machine type using the `machineType` in [InstancePolicy](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicy) field or inside the `instanceTemplate` in the [InstancePolicyOrTemplate](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate) field, make sure the CPU resources for both fields are compatible with each other and with how many tasks you want to allow to run on the same VM at the same time. For example, if you specify the `n2-standard-2` machine type, which has 2 vCPUs each, you are recommended to set `cpuMilli` no more than `2000`, or you are recommended to run two tasks on the same VM if you set `cpuMilli` to `1000` or less."
        },
        "memoryMib": {
          "type": "string",
          "description": "Memory in MiB. `memoryMib` defines the amount of memory per task in MiB units. If undefined, the default value is `2000`. If you also define the VM's machine type using the `machineType` in [InstancePolicy](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicy) field or inside the `instanceTemplate` in the [InstancePolicyOrTemplate](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate) field, make sure the memory resources for both fields are compatible with each other and with how many tasks you want to allow to run on the same VM at the same time. For example, if you specify the `n2-standard-2` machine type, which has 8 GiB each, you are recommended to set `memoryMib` to no more than `8192`, or you are recommended to run two tasks on the same VM if you set `memoryMib` to `4096` or less."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:ComputeResourceResponse": {
      "description": "Compute resource requirements. ComputeResource defines the amount of resources required for each task. Make sure your tasks have enough resources to successfully run. If you also define the types of resources for a job to use with the [InstancePolicyOrTemplate](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate) field, make sure both fields are compatible with each other.",
      "properties": {
        "bootDiskMib": {
          "type": "string",
          "description": "Extra boot disk size in MiB for each task."
        },
        "cpuMilli": {
          "type": "string",
          "description": "The milliCPU count. `cpuMilli` defines the amount of CPU resources per task in milliCPU units. For example, `1000` corresponds to 1 vCPU per task. If undefined, the default value is `2000`. If you also define the VM's machine type using the `machineType` in [InstancePolicy](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicy) field or inside the `instanceTemplate` in the [InstancePolicyOrTemplate](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate) field, make sure the CPU resources for both fields are compatible with each other and with how many tasks you want to allow to run on the same VM at the same time. For example, if you specify the `n2-standard-2` machine type, which has 2 vCPUs each, you are recommended to set `cpuMilli` no more than `2000`, or you are recommended to run two tasks on the same VM if you set `cpuMilli` to `1000` or less."
        },
        "memoryMib": {
          "type": "string",
          "description": "Memory in MiB. `memoryMib` defines the amount of memory per task in MiB units. If undefined, the default value is `2000`. If you also define the VM's machine type using the `machineType` in [InstancePolicy](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicy) field or inside the `instanceTemplate` in the [InstancePolicyOrTemplate](https://cloud.google.com/batch/docs/reference/rest/v1/projects.locations.jobs#instancepolicyortemplate) field, make sure the memory resources for both fields are compatible with each other and with how many tasks you want to allow to run on the same VM at the same time. For example, if you specify the `n2-standard-2` machine type, which has 8 GiB each, you are recommended to set `memoryMib` to no more than `8192`, or you are recommended to run two tasks on the same VM if you set `memoryMib` to `4096` or less."
        }
      },
      "type": "object",
      "required": [
        "bootDiskMib",
        "cpuMilli",
        "memoryMib"
      ]
    },
    "google-native:batch/v1:Container": {
      "description": "Container runnable.",
      "properties": {
        "blockExternalNetwork": {
          "type": "boolean",
          "description": "If set to true, external network access to and from container will be blocked, containers that are with block_external_network as true can still communicate with each other, network cannot be specified in the `container.options` field."
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Overrides the `CMD` specified in the container. If there is an ENTRYPOINT (either in the container image or with the entrypoint field below) then commands are appended as arguments to the ENTRYPOINT."
        },
        "entrypoint": {
          "type": "string",
          "description": "Overrides the `ENTRYPOINT` specified in the container."
        },
        "imageUri": {
          "type": "string",
          "description": "The URI to pull the container image from."
        },
        "options": {
          "type": "string",
          "description": "Arbitrary additional options to include in the \"docker run\" command when running this container, e.g. \"--network host\"."
        },
        "password": {
          "type": "string",
          "description": "Optional password for logging in to a docker registry. If password matches `projects/*/secrets/*/versions/*` then Batch will read the password from the Secret Manager;"
        },
        "username": {
          "type": "string",
          "description": "Optional username for logging in to a docker registry. If username matches `projects/*/secrets/*/versions/*` then Batch will read the username from the Secret Manager."
        },
        "volumes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Volumes to mount (bind mount) from the host machine files or directories into the container, formatted to match docker run's --volume option, e.g. /foo:/bar, or /foo:/bar:ro If the `TaskSpec.Volumes` field is specified but this field is not, Batch will mount each volume from the host machine to the container with the same mount path by default. In this case, the default mount option for containers will be read-only (ro) for existing persistent disks and read-write (rw) for other volume types, regardless of the original mount options specified in `TaskSpec.Volumes`. If you need different mount settings, you can explicitly configure them in this field."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:ContainerResponse": {
      "description": "Container runnable.",
      "properties": {
        "blockExternalNetwork": {
          "type": "boolean",
          "description": "If set to true, external network access to and from container will be blocked, containers that are with block_external_network as true can still communicate with each other, network cannot be specified in the `container.options` field."
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Overrides the `CMD` specified in the container. If there is an ENTRYPOINT (either in the container image or with the entrypoint field below) then commands are appended as arguments to the ENTRYPOINT."
        },
        "entrypoint": {
          "type": "string",
          "description": "Overrides the `ENTRYPOINT` specified in the container."
        },
        "imageUri": {
          "type": "string",
          "description": "The URI to pull the container image from."
        },
        "options": {
          "type": "string",
          "description": "Arbitrary additional options to include in the \"docker run\" command when running this container, e.g. \"--network host\"."
        },
        "password": {
          "type": "string",
          "description": "Optional password for logging in to a docker registry. If password matches `projects/*/secrets/*/versions/*` then Batch will read the password from the Secret Manager;"
        },
        "username": {
          "type": "string",
          "description": "Optional username for logging in to a docker registry. If username matches `projects/*/secrets/*/versions/*` then Batch will read the username from the Secret Manager."
        },
        "volumes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Volumes to mount (bind mount) from the host machine files or directories into the container, formatted to match docker run's --volume option, e.g. /foo:/bar, or /foo:/bar:ro If the `TaskSpec.Volumes` field is specified but this field is not, Batch will mount each volume from the host machine to the container with the same mount path by default. In this case, the default mount option for containers will be read-only (ro) for existing persistent disks and read-write (rw) for other volume types, regardless of the original mount options specified in `TaskSpec.Volumes`. If you need different mount settings, you can explicitly configure them in this field."
        }
      },
      "type": "object",
      "required": [
        "blockExternalNetwork",
        "commands",
        "entrypoint",
        "imageUri",
        "options",
        "password",
        "username",
        "volumes"
      ]
    },
    "google-native:batch/v1:Disk": {
      "description": "A new persistent disk or a local ssd. A VM can only have one local SSD setting but multiple local SSD partitions. See https://cloud.google.com/compute/docs/disks#pdspecs and https://cloud.google.com/compute/docs/disks#localssds.",
      "properties": {
        "diskInterface": {
          "type": "string",
          "description": "Local SSDs are available through both \"SCSI\" and \"NVMe\" interfaces. If not indicated, \"NVMe\" will be the default one for local ssds. This field is ignored for persistent disks as the interface is chosen automatically. See https://cloud.google.com/compute/docs/disks/persistent-disks#choose_an_interface."
        },
        "image": {
          "type": "string",
          "description": "URL for a VM image to use as the data source for this disk. For example, the following are all valid URLs: * Specify the image by its family name: projects/{project}/global/images/family/{image_family} * Specify the image version: projects/{project}/global/images/{image_version} You can also use Batch customized image in short names. The following image values are supported for a boot disk: * `batch-debian`: use Batch Debian images. * `batch-centos`: use Batch CentOS images. * `batch-cos`: use Batch Container-Optimized images. * `batch-hpc-centos`: use Batch HPC CentOS images. * `batch-hpc-rocky`: use Batch HPC Rocky Linux images."
        },
        "sizeGb": {
          "type": "string",
          "description": "Disk size in GB. **Non-Boot Disk**: If the `type` specifies a persistent disk, this field is ignored if `data_source` is set as `image` or `snapshot`. If the `type` specifies a local SSD, this field should be a multiple of 375 GB, otherwise, the final size will be the next greater multiple of 375 GB. **Boot Disk**: Batch will calculate the boot disk size based on source image and task requirements if you do not speicify the size. If both this field and the `boot_disk_mib` field in task spec's `compute_resource` are defined, Batch will only honor this field. Also, this field should be no smaller than the source disk's size when the `data_source` is set as `snapshot` or `image`. For example, if you set an image as the `data_source` field and the image's default disk size 30 GB, you can only use this field to make the disk larger or equal to 30 GB."
        },
        "snapshot": {
          "type": "string",
          "description": "Name of a snapshot used as the data source. Snapshot is not supported as boot disk now."
        },
        "type": {
          "type": "string",
          "description": "Disk type as shown in `gcloud compute disk-types list`. For example, local SSD uses type \"local-ssd\". Persistent disks and boot disks use \"pd-balanced\", \"pd-extreme\", \"pd-ssd\" or \"pd-standard\"."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:DiskResponse": {
      "description": "A new persistent disk or a local ssd. A VM can only have one local SSD setting but multiple local SSD partitions. See https://cloud.google.com/compute/docs/disks#pdspecs and https://cloud.google.com/compute/docs/disks#localssds.",
      "properties": {
        "diskInterface": {
          "type": "string",
          "description": "Local SSDs are available through both \"SCSI\" and \"NVMe\" interfaces. If not indicated, \"NVMe\" will be the default one for local ssds. This field is ignored for persistent disks as the interface is chosen automatically. See https://cloud.google.com/compute/docs/disks/persistent-disks#choose_an_interface."
        },
        "image": {
          "type": "string",
          "description": "URL for a VM image to use as the data source for this disk. For example, the following are all valid URLs: * Specify the image by its family name: projects/{project}/global/images/family/{image_family} * Specify the image version: projects/{project}/global/images/{image_version} You can also use Batch customized image in short names. The following image values are supported for a boot disk: * `batch-debian`: use Batch Debian images. * `batch-centos`: use Batch CentOS images. * `batch-cos`: use Batch Container-Optimized images. * `batch-hpc-centos`: use Batch HPC CentOS images. * `batch-hpc-rocky`: use Batch HPC Rocky Linux images."
        },
        "sizeGb": {
          "type": "string",
          "description": "Disk size in GB. **Non-Boot Disk**: If the `type` specifies a persistent disk, this field is ignored if `data_source` is set as `image` or `snapshot`. If the `type` specifies a local SSD, this field should be a multiple of 375 GB, otherwise, the final size will be the next greater multiple of 375 GB. **Boot Disk**: Batch will calculate the boot disk size based on source image and task requirements if you do not speicify the size. If both this field and the `boot_disk_mib` field in task spec's `compute_resource` are defined, Batch will only honor this field. Also, this field should be no smaller than the source disk's size when the `data_source` is set as `snapshot` or `image`. For example, if you set an image as the `data_source` field and the image's default disk size 30 GB, you can only use this field to make the disk larger or equal to 30 GB."
        },
        "snapshot": {
          "type": "string",
          "description": "Name of a snapshot used as the data source. Snapshot is not supported as boot disk now."
        },
        "type": {
          "type": "string",
          "description": "Disk type as shown in `gcloud compute disk-types list`. For example, local SSD uses type \"local-ssd\". Persistent disks and boot disks use \"pd-balanced\", \"pd-extreme\", \"pd-ssd\" or \"pd-standard\"."
        }
      },
      "type": "object",
      "required": [
        "diskInterface",
        "image",
        "sizeGb",
        "snapshot",
        "type"
      ]
    },
    "google-native:batch/v1:Environment": {
      "description": "An Environment describes a collection of environment variables to set when executing Tasks.",
      "properties": {
        "encryptedVariables": {
          "$ref": "#/types/google-native:batch%2Fv1:KMSEnvMap",
          "description": "An encrypted JSON dictionary where the key/value pairs correspond to environment variable names and their values."
        },
        "secretVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of environment variable names to Secret Manager secret names. The VM will access the named secrets to set the value of each environment variable."
        },
        "variables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of environment variable names to values."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:EnvironmentResponse": {
      "description": "An Environment describes a collection of environment variables to set when executing Tasks.",
      "properties": {
        "encryptedVariables": {
          "$ref": "#/types/google-native:batch%2Fv1:KMSEnvMapResponse",
          "description": "An encrypted JSON dictionary where the key/value pairs correspond to environment variable names and their values."
        },
        "secretVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of environment variable names to Secret Manager secret names. The VM will access the named secrets to set the value of each environment variable."
        },
        "variables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of environment variable names to values."
        }
      },
      "type": "object",
      "required": [
        "encryptedVariables",
        "secretVariables",
        "variables"
      ]
    },
    "google-native:batch/v1:GCS": {
      "description": "Represents a Google Cloud Storage volume.",
      "properties": {
        "remotePath": {
          "type": "string",
          "description": "Remote path, either a bucket name or a subdirectory of a bucket, e.g.: bucket_name, bucket_name/subdirectory/"
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:GCSResponse": {
      "description": "Represents a Google Cloud Storage volume.",
      "properties": {
        "remotePath": {
          "type": "string",
          "description": "Remote path, either a bucket name or a subdirectory of a bucket, e.g.: bucket_name, bucket_name/subdirectory/"
        }
      },
      "type": "object",
      "required": [
        "remotePath"
      ]
    },
    "google-native:batch/v1:InstancePolicy": {
      "description": "InstancePolicy describes an instance type and resources attached to each VM created by this InstancePolicy.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:Accelerator"
          },
          "description": "The accelerators attached to each VM instance."
        },
        "bootDisk": {
          "$ref": "#/types/google-native:batch%2Fv1:Disk",
          "description": "Boot disk to be created and attached to each VM by this InstancePolicy. Boot disk will be deleted when the VM is deleted. Batch API now only supports booting from image."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:AttachedDisk"
          },
          "description": "Non-boot disks to be attached for each VM created by this InstancePolicy. New disks will be deleted when the VM is deleted. A non-boot disk is a disk that can be of a device with a file system or a raw storage drive that is not ready for data storage and accessing."
        },
        "machineType": {
          "type": "string",
          "description": "The Compute Engine machine type."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "The minimum CPU platform. See https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform."
        },
        "provisioningModel": {
          "$ref": "#/types/google-native:batch%2Fv1:InstancePolicyProvisioningModel",
          "description": "The provisioning model."
        },
        "reservation": {
          "type": "string",
          "description": "Optional. If specified, VMs will consume only the specified reservation. If not specified (default), VMs will consume any applicable reservation."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:InstancePolicyOrTemplate": {
      "description": "InstancePolicyOrTemplate lets you define the type of resources to use for this job either with an InstancePolicy or an instance template. If undefined, Batch picks the type of VM to use and doesn't include optional VM resources such as GPUs and extra disks.",
      "properties": {
        "installGpuDrivers": {
          "type": "boolean",
          "description": "Set this field true if users want Batch to help fetch drivers from a third party location and install them for GPUs specified in policy.accelerators or instance_template on their behalf. Default is false. For Container-Optimized Image cases, Batch will install the accelerator driver following milestones of https://cloud.google.com/container-optimized-os/docs/release-notes. For non Container-Optimized Image cases, following https://github.com/GoogleCloudPlatform/compute-gpu-installation/blob/main/linux/install_gpu_driver.py."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "Name of an instance template used to create VMs. Named the field as 'instance_template' instead of 'template' to avoid c++ keyword conflict."
        },
        "policy": {
          "$ref": "#/types/google-native:batch%2Fv1:InstancePolicy",
          "description": "InstancePolicy."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:InstancePolicyOrTemplateResponse": {
      "description": "InstancePolicyOrTemplate lets you define the type of resources to use for this job either with an InstancePolicy or an instance template. If undefined, Batch picks the type of VM to use and doesn't include optional VM resources such as GPUs and extra disks.",
      "properties": {
        "installGpuDrivers": {
          "type": "boolean",
          "description": "Set this field true if users want Batch to help fetch drivers from a third party location and install them for GPUs specified in policy.accelerators or instance_template on their behalf. Default is false. For Container-Optimized Image cases, Batch will install the accelerator driver following milestones of https://cloud.google.com/container-optimized-os/docs/release-notes. For non Container-Optimized Image cases, following https://github.com/GoogleCloudPlatform/compute-gpu-installation/blob/main/linux/install_gpu_driver.py."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "Name of an instance template used to create VMs. Named the field as 'instance_template' instead of 'template' to avoid c++ keyword conflict."
        },
        "policy": {
          "$ref": "#/types/google-native:batch%2Fv1:InstancePolicyResponse",
          "description": "InstancePolicy."
        }
      },
      "type": "object",
      "required": [
        "installGpuDrivers",
        "instanceTemplate",
        "policy"
      ]
    },
    "google-native:batch/v1:InstancePolicyProvisioningModel": {
      "description": "The provisioning model.",
      "type": "string",
      "enum": [
        {
          "name": "ProvisioningModelUnspecified",
          "description": "Unspecified.",
          "value": "PROVISIONING_MODEL_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "Standard VM.",
          "value": "STANDARD"
        },
        {
          "name": "Spot",
          "description": "SPOT VM.",
          "value": "SPOT"
        },
        {
          "name": "Preemptible",
          "description": "Preemptible VM (PVM). Above SPOT VM is the preferable model for preemptible VM instances: the old preemptible VM model (indicated by this field) is the older model, and has been migrated to use the SPOT model as the underlying technology. This old model will still be supported.",
          "value": "PREEMPTIBLE"
        }
      ]
    },
    "google-native:batch/v1:InstancePolicyResponse": {
      "description": "InstancePolicy describes an instance type and resources attached to each VM created by this InstancePolicy.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:AcceleratorResponse"
          },
          "description": "The accelerators attached to each VM instance."
        },
        "bootDisk": {
          "$ref": "#/types/google-native:batch%2Fv1:DiskResponse",
          "description": "Boot disk to be created and attached to each VM by this InstancePolicy. Boot disk will be deleted when the VM is deleted. Batch API now only supports booting from image."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:AttachedDiskResponse"
          },
          "description": "Non-boot disks to be attached for each VM created by this InstancePolicy. New disks will be deleted when the VM is deleted. A non-boot disk is a disk that can be of a device with a file system or a raw storage drive that is not ready for data storage and accessing."
        },
        "machineType": {
          "type": "string",
          "description": "The Compute Engine machine type."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "The minimum CPU platform. See https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform."
        },
        "provisioningModel": {
          "type": "string",
          "description": "The provisioning model."
        },
        "reservation": {
          "type": "string",
          "description": "Optional. If specified, VMs will consume only the specified reservation. If not specified (default), VMs will consume any applicable reservation."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "bootDisk",
        "disks",
        "machineType",
        "minCpuPlatform",
        "provisioningModel",
        "reservation"
      ]
    },
    "google-native:batch/v1:JobNotification": {
      "description": "Notification configurations.",
      "properties": {
        "message": {
          "$ref": "#/types/google-native:batch%2Fv1:Message",
          "description": "The attribute requirements of messages to be sent to this Pub/Sub topic. Without this field, no message will be sent."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The Pub/Sub topic where notifications like the job state changes will be published. The topic must exist in the same project as the job and billings will be charged to this project. If not specified, no Pub/Sub messages will be sent. Topic format: `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:JobNotificationResponse": {
      "description": "Notification configurations.",
      "properties": {
        "message": {
          "$ref": "#/types/google-native:batch%2Fv1:MessageResponse",
          "description": "The attribute requirements of messages to be sent to this Pub/Sub topic. Without this field, no message will be sent."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The Pub/Sub topic where notifications like the job state changes will be published. The topic must exist in the same project as the job and billings will be charged to this project. If not specified, no Pub/Sub messages will be sent. Topic format: `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object",
      "required": [
        "message",
        "pubsubTopic"
      ]
    },
    "google-native:batch/v1:JobStatusResponse": {
      "description": "Job status.",
      "properties": {
        "runDuration": {
          "type": "string",
          "description": "The duration of time that the Job spent in status RUNNING."
        },
        "state": {
          "type": "string",
          "description": "Job state"
        },
        "statusEvents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:StatusEventResponse"
          },
          "description": "Job status events"
        },
        "taskGroups": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Aggregated task status for each TaskGroup in the Job. The map key is TaskGroup ID."
        }
      },
      "type": "object",
      "required": [
        "runDuration",
        "state",
        "statusEvents",
        "taskGroups"
      ]
    },
    "google-native:batch/v1:KMSEnvMap": {
      "properties": {
        "cipherText": {
          "type": "string",
          "description": "The value of the cipherText response from the `encrypt` method."
        },
        "keyName": {
          "type": "string",
          "description": "The name of the KMS key that will be used to decrypt the cipher text."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:KMSEnvMapResponse": {
      "properties": {
        "cipherText": {
          "type": "string",
          "description": "The value of the cipherText response from the `encrypt` method."
        },
        "keyName": {
          "type": "string",
          "description": "The name of the KMS key that will be used to decrypt the cipher text."
        }
      },
      "type": "object",
      "required": [
        "cipherText",
        "keyName"
      ]
    },
    "google-native:batch/v1:LifecyclePolicy": {
      "description": "LifecyclePolicy describes how to deal with task failures based on different conditions.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:batch%2Fv1:LifecyclePolicyAction",
          "description": "Action to execute when ActionCondition is true. When RETRY_TASK is specified, we will retry failed tasks if we notice any exit code match and fail tasks if no match is found. Likewise, when FAIL_TASK is specified, we will fail tasks if we notice any exit code match and retry tasks if no match is found."
        },
        "actionCondition": {
          "$ref": "#/types/google-native:batch%2Fv1:ActionCondition",
          "description": "Conditions that decide why a task failure is dealt with a specific action."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:LifecyclePolicyAction": {
      "description": "Action to execute when ActionCondition is true. When RETRY_TASK is specified, we will retry failed tasks if we notice any exit code match and fail tasks if no match is found. Likewise, when FAIL_TASK is specified, we will fail tasks if we notice any exit code match and retry tasks if no match is found.",
      "type": "string",
      "enum": [
        {
          "name": "ActionUnspecified",
          "description": "Action unspecified.",
          "value": "ACTION_UNSPECIFIED"
        },
        {
          "name": "RetryTask",
          "description": "Action that tasks in the group will be scheduled to re-execute.",
          "value": "RETRY_TASK"
        },
        {
          "name": "FailTask",
          "description": "Action that tasks in the group will be stopped immediately.",
          "value": "FAIL_TASK"
        }
      ]
    },
    "google-native:batch/v1:LifecyclePolicyResponse": {
      "description": "LifecyclePolicy describes how to deal with task failures based on different conditions.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Action to execute when ActionCondition is true. When RETRY_TASK is specified, we will retry failed tasks if we notice any exit code match and fail tasks if no match is found. Likewise, when FAIL_TASK is specified, we will fail tasks if we notice any exit code match and retry tasks if no match is found."
        },
        "actionCondition": {
          "$ref": "#/types/google-native:batch%2Fv1:ActionConditionResponse",
          "description": "Conditions that decide why a task failure is dealt with a specific action."
        }
      },
      "type": "object",
      "required": [
        "action",
        "actionCondition"
      ]
    },
    "google-native:batch/v1:LocationPolicy": {
      "properties": {
        "allowedLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of allowed location names represented by internal URLs. Each location can be a region or a zone. Only one region or multiple zones in one region is supported now. For example, [\"regions/us-central1\"] allow VMs in any zones in region us-central1. [\"zones/us-central1-a\", \"zones/us-central1-c\"] only allow VMs in zones us-central1-a and us-central1-c. All locations end up in different regions would cause errors. For example, [\"regions/us-central1\", \"zones/us-central1-a\", \"zones/us-central1-b\", \"zones/us-west1-a\"] contains 2 regions \"us-central1\" and \"us-west1\". An error is expected in this case."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:LocationPolicyResponse": {
      "properties": {
        "allowedLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of allowed location names represented by internal URLs. Each location can be a region or a zone. Only one region or multiple zones in one region is supported now. For example, [\"regions/us-central1\"] allow VMs in any zones in region us-central1. [\"zones/us-central1-a\", \"zones/us-central1-c\"] only allow VMs in zones us-central1-a and us-central1-c. All locations end up in different regions would cause errors. For example, [\"regions/us-central1\", \"zones/us-central1-a\", \"zones/us-central1-b\", \"zones/us-west1-a\"] contains 2 regions \"us-central1\" and \"us-west1\". An error is expected in this case."
        }
      },
      "type": "object",
      "required": [
        "allowedLocations"
      ]
    },
    "google-native:batch/v1:LogsPolicy": {
      "description": "LogsPolicy describes how outputs from a Job's Tasks (stdout/stderr) will be preserved.",
      "properties": {
        "cloudLoggingOption": {
          "$ref": "#/types/google-native:batch%2Fv1:CloudLoggingOption",
          "description": "Optional. Additional settings for Cloud Logging. It will only take effect when the destination of LogsPolicy is set to CLOUD_LOGGING."
        },
        "destination": {
          "$ref": "#/types/google-native:batch%2Fv1:LogsPolicyDestination",
          "description": "Where logs should be saved."
        },
        "logsPath": {
          "type": "string",
          "description": "The path to which logs are saved when the destination = PATH. This can be a local file path on the VM, or under the mount point of a Persistent Disk or Filestore, or a Cloud Storage path."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:LogsPolicyDestination": {
      "description": "Where logs should be saved.",
      "type": "string",
      "enum": [
        {
          "name": "DestinationUnspecified",
          "description": "Logs are not preserved.",
          "value": "DESTINATION_UNSPECIFIED"
        },
        {
          "name": "CloudLogging",
          "description": "Logs are streamed to Cloud Logging.",
          "value": "CLOUD_LOGGING"
        },
        {
          "name": "Path",
          "description": "Logs are saved to a file path.",
          "value": "PATH"
        }
      ]
    },
    "google-native:batch/v1:LogsPolicyResponse": {
      "description": "LogsPolicy describes how outputs from a Job's Tasks (stdout/stderr) will be preserved.",
      "properties": {
        "cloudLoggingOption": {
          "$ref": "#/types/google-native:batch%2Fv1:CloudLoggingOptionResponse",
          "description": "Optional. Additional settings for Cloud Logging. It will only take effect when the destination of LogsPolicy is set to CLOUD_LOGGING."
        },
        "destination": {
          "type": "string",
          "description": "Where logs should be saved."
        },
        "logsPath": {
          "type": "string",
          "description": "The path to which logs are saved when the destination = PATH. This can be a local file path on the VM, or under the mount point of a Persistent Disk or Filestore, or a Cloud Storage path."
        }
      },
      "type": "object",
      "required": [
        "cloudLoggingOption",
        "destination",
        "logsPath"
      ]
    },
    "google-native:batch/v1:Message": {
      "description": "Message details. Describe the conditions under which messages will be sent. If no attribute is defined, no message will be sent by default. One message should specify either the job or the task level attributes, but not both. For example, job level: JOB_STATE_CHANGED and/or a specified new_job_state; task level: TASK_STATE_CHANGED and/or a specified new_task_state.",
      "properties": {
        "newJobState": {
          "$ref": "#/types/google-native:batch%2Fv1:MessageNewJobState",
          "description": "The new job state."
        },
        "newTaskState": {
          "$ref": "#/types/google-native:batch%2Fv1:MessageNewTaskState",
          "description": "The new task state."
        },
        "type": {
          "$ref": "#/types/google-native:batch%2Fv1:MessageType",
          "description": "The message type."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:MessageNewJobState": {
      "description": "The new job state.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Job state unspecified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Queued",
          "description": "Job is admitted (validated and persisted) and waiting for resources.",
          "value": "QUEUED"
        },
        {
          "name": "Scheduled",
          "description": "Job is scheduled to run as soon as resource allocation is ready. The resource allocation may happen at a later time but with a high chance to succeed.",
          "value": "SCHEDULED"
        },
        {
          "name": "Running",
          "description": "Resource allocation has been successful. At least one Task in the Job is RUNNING.",
          "value": "RUNNING"
        },
        {
          "name": "Succeeded",
          "description": "All Tasks in the Job have finished successfully.",
          "value": "SUCCEEDED"
        },
        {
          "name": "Failed",
          "description": "At least one Task in the Job has failed.",
          "value": "FAILED"
        },
        {
          "name": "DeletionInProgress",
          "description": "The Job will be deleted, but has not been deleted yet. Typically this is because resources used by the Job are still being cleaned up.",
          "value": "DELETION_IN_PROGRESS"
        }
      ]
    },
    "google-native:batch/v1:MessageNewTaskState": {
      "description": "The new task state.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unknown state.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "The Task is created and waiting for resources.",
          "value": "PENDING"
        },
        {
          "name": "Assigned",
          "description": "The Task is assigned to at least one VM.",
          "value": "ASSIGNED"
        },
        {
          "name": "Running",
          "description": "The Task is running.",
          "value": "RUNNING"
        },
        {
          "name": "Failed",
          "description": "The Task has failed.",
          "value": "FAILED"
        },
        {
          "name": "Succeeded",
          "description": "The Task has succeeded.",
          "value": "SUCCEEDED"
        },
        {
          "name": "Unexecuted",
          "description": "The Task has not been executed when the Job finishes.",
          "value": "UNEXECUTED"
        }
      ]
    },
    "google-native:batch/v1:MessageResponse": {
      "description": "Message details. Describe the conditions under which messages will be sent. If no attribute is defined, no message will be sent by default. One message should specify either the job or the task level attributes, but not both. For example, job level: JOB_STATE_CHANGED and/or a specified new_job_state; task level: TASK_STATE_CHANGED and/or a specified new_task_state.",
      "properties": {
        "newJobState": {
          "type": "string",
          "description": "The new job state."
        },
        "newTaskState": {
          "type": "string",
          "description": "The new task state."
        },
        "type": {
          "type": "string",
          "description": "The message type."
        }
      },
      "type": "object",
      "required": [
        "newJobState",
        "newTaskState",
        "type"
      ]
    },
    "google-native:batch/v1:MessageType": {
      "description": "The message type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "JobStateChanged",
          "description": "Notify users that the job state has changed.",
          "value": "JOB_STATE_CHANGED"
        },
        {
          "name": "TaskStateChanged",
          "description": "Notify users that the task state has changed.",
          "value": "TASK_STATE_CHANGED"
        }
      ]
    },
    "google-native:batch/v1:NFS": {
      "description": "Represents an NFS volume.",
      "properties": {
        "remotePath": {
          "type": "string",
          "description": "Remote source path exported from the NFS, e.g., \"/share\"."
        },
        "server": {
          "type": "string",
          "description": "The IP address of the NFS."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:NFSResponse": {
      "description": "Represents an NFS volume.",
      "properties": {
        "remotePath": {
          "type": "string",
          "description": "Remote source path exported from the NFS, e.g., \"/share\"."
        },
        "server": {
          "type": "string",
          "description": "The IP address of the NFS."
        }
      },
      "type": "object",
      "required": [
        "remotePath",
        "server"
      ]
    },
    "google-native:batch/v1:NetworkInterface": {
      "description": "A network interface.",
      "properties": {
        "network": {
          "type": "string",
          "description": "The URL of an existing network resource. You can specify the network as a full or partial URL. For example, the following are all valid URLs: * https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} * projects/{project}/global/networks/{network} * global/networks/{network}"
        },
        "noExternalIpAddress": {
          "type": "boolean",
          "description": "Default is false (with an external IP address). Required if no external public IP address is attached to the VM. If no external public IP address, additional configuration is required to allow the VM to access Google Services. See https://cloud.google.com/vpc/docs/configure-private-google-access and https://cloud.google.com/nat/docs/gce-example#create-nat for more information."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of an existing subnetwork resource in the network. You can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: * https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork} * projects/{project}/regions/{region}/subnetworks/{subnetwork} * regions/{region}/subnetworks/{subnetwork}"
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:NetworkInterfaceResponse": {
      "description": "A network interface.",
      "properties": {
        "network": {
          "type": "string",
          "description": "The URL of an existing network resource. You can specify the network as a full or partial URL. For example, the following are all valid URLs: * https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} * projects/{project}/global/networks/{network} * global/networks/{network}"
        },
        "noExternalIpAddress": {
          "type": "boolean",
          "description": "Default is false (with an external IP address). Required if no external public IP address is attached to the VM. If no external public IP address, additional configuration is required to allow the VM to access Google Services. See https://cloud.google.com/vpc/docs/configure-private-google-access and https://cloud.google.com/nat/docs/gce-example#create-nat for more information."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of an existing subnetwork resource in the network. You can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: * https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork} * projects/{project}/regions/{region}/subnetworks/{subnetwork} * regions/{region}/subnetworks/{subnetwork}"
        }
      },
      "type": "object",
      "required": [
        "network",
        "noExternalIpAddress",
        "subnetwork"
      ]
    },
    "google-native:batch/v1:NetworkPolicy": {
      "description": "NetworkPolicy describes VM instance network configurations.",
      "properties": {
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:NetworkInterface"
          },
          "description": "Network configurations."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:NetworkPolicyResponse": {
      "description": "NetworkPolicy describes VM instance network configurations.",
      "properties": {
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:NetworkInterfaceResponse"
          },
          "description": "Network configurations."
        }
      },
      "type": "object",
      "required": [
        "networkInterfaces"
      ]
    },
    "google-native:batch/v1:PlacementPolicy": {
      "description": "PlacementPolicy describes a group placement policy for the VMs controlled by this AllocationPolicy.",
      "properties": {
        "collocation": {
          "type": "string",
          "description": "UNSPECIFIED vs. COLLOCATED (default UNSPECIFIED). Use COLLOCATED when you want VMs to be located close to each other for low network latency between the VMs. No placement policy will be generated when collocation is UNSPECIFIED."
        },
        "maxDistance": {
          "type": "string",
          "description": "When specified, causes the job to fail if more than max_distance logical switches are required between VMs. Batch uses the most compact possible placement of VMs even when max_distance is not specified. An explicit max_distance makes that level of compactness a strict requirement. Not yet implemented"
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:PlacementPolicyResponse": {
      "description": "PlacementPolicy describes a group placement policy for the VMs controlled by this AllocationPolicy.",
      "properties": {
        "collocation": {
          "type": "string",
          "description": "UNSPECIFIED vs. COLLOCATED (default UNSPECIFIED). Use COLLOCATED when you want VMs to be located close to each other for low network latency between the VMs. No placement policy will be generated when collocation is UNSPECIFIED."
        },
        "maxDistance": {
          "type": "string",
          "description": "When specified, causes the job to fail if more than max_distance logical switches are required between VMs. Batch uses the most compact possible placement of VMs even when max_distance is not specified. An explicit max_distance makes that level of compactness a strict requirement. Not yet implemented"
        }
      },
      "type": "object",
      "required": [
        "collocation",
        "maxDistance"
      ]
    },
    "google-native:batch/v1:Runnable": {
      "description": "Runnable describes instructions for executing a specific script or container as part of a Task.",
      "properties": {
        "alwaysRun": {
          "type": "boolean",
          "description": "By default, after a Runnable fails, no further Runnable are executed. This flag indicates that this Runnable must be run even if the Task has already failed. This is useful for Runnables that copy output files off of the VM or for debugging. The always_run flag does not override the Task's overall max_run_duration. If the max_run_duration has expired then no further Runnables will execute, not even always_run Runnables."
        },
        "background": {
          "type": "boolean",
          "description": "This flag allows a Runnable to continue running in the background while the Task executes subsequent Runnables. This is useful to provide services to other Runnables (or to provide debugging support tools like SSH servers)."
        },
        "barrier": {
          "$ref": "#/types/google-native:batch%2Fv1:Barrier",
          "description": "Barrier runnable."
        },
        "container": {
          "$ref": "#/types/google-native:batch%2Fv1:Container",
          "description": "Container runnable."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. DisplayName is an optional field that can be provided by the caller. If provided, it will be used in logs and other outputs to identify the script, making it easier for users to understand the logs. If not provided the index of the runnable will be used for outputs."
        },
        "environment": {
          "$ref": "#/types/google-native:batch%2Fv1:Environment",
          "description": "Environment variables for this Runnable (overrides variables set for the whole Task or TaskGroup)."
        },
        "ignoreExitStatus": {
          "type": "boolean",
          "description": "Normally, a non-zero exit status causes the Task to fail. This flag allows execution of other Runnables to continue instead."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this Runnable."
        },
        "script": {
          "$ref": "#/types/google-native:batch%2Fv1:Script",
          "description": "Script runnable."
        },
        "timeout": {
          "type": "string",
          "description": "Timeout for this Runnable."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:RunnableResponse": {
      "description": "Runnable describes instructions for executing a specific script or container as part of a Task.",
      "properties": {
        "alwaysRun": {
          "type": "boolean",
          "description": "By default, after a Runnable fails, no further Runnable are executed. This flag indicates that this Runnable must be run even if the Task has already failed. This is useful for Runnables that copy output files off of the VM or for debugging. The always_run flag does not override the Task's overall max_run_duration. If the max_run_duration has expired then no further Runnables will execute, not even always_run Runnables."
        },
        "background": {
          "type": "boolean",
          "description": "This flag allows a Runnable to continue running in the background while the Task executes subsequent Runnables. This is useful to provide services to other Runnables (or to provide debugging support tools like SSH servers)."
        },
        "barrier": {
          "$ref": "#/types/google-native:batch%2Fv1:BarrierResponse",
          "description": "Barrier runnable."
        },
        "container": {
          "$ref": "#/types/google-native:batch%2Fv1:ContainerResponse",
          "description": "Container runnable."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. DisplayName is an optional field that can be provided by the caller. If provided, it will be used in logs and other outputs to identify the script, making it easier for users to understand the logs. If not provided the index of the runnable will be used for outputs."
        },
        "environment": {
          "$ref": "#/types/google-native:batch%2Fv1:EnvironmentResponse",
          "description": "Environment variables for this Runnable (overrides variables set for the whole Task or TaskGroup)."
        },
        "ignoreExitStatus": {
          "type": "boolean",
          "description": "Normally, a non-zero exit status causes the Task to fail. This flag allows execution of other Runnables to continue instead."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this Runnable."
        },
        "script": {
          "$ref": "#/types/google-native:batch%2Fv1:ScriptResponse",
          "description": "Script runnable."
        },
        "timeout": {
          "type": "string",
          "description": "Timeout for this Runnable."
        }
      },
      "type": "object",
      "required": [
        "alwaysRun",
        "background",
        "barrier",
        "container",
        "displayName",
        "environment",
        "ignoreExitStatus",
        "labels",
        "script",
        "timeout"
      ]
    },
    "google-native:batch/v1:Script": {
      "description": "Script runnable.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Script file path on the host VM. To specify an interpreter, please add a `#!`(also known as [shebang line](https://en.wikipedia.org/wiki/Shebang_(Unix))) as the first line of the file.(For example, to execute the script using bash, `#!/bin/bash` should be the first line of the file. To execute the script using`Python3`, `#!/usr/bin/env python3` should be the first line of the file.) Otherwise, the file will by default be excuted by `/bin/sh`."
        },
        "text": {
          "type": "string",
          "description": "Shell script text. To specify an interpreter, please add a `#!\\n` at the beginning of the text.(For example, to execute the script using bash, `#!/bin/bash\\n` should be added. To execute the script using`Python3`, `#!/usr/bin/env python3\\n` should be added.) Otherwise, the script will by default be excuted by `/bin/sh`."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:ScriptResponse": {
      "description": "Script runnable.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Script file path on the host VM. To specify an interpreter, please add a `#!`(also known as [shebang line](https://en.wikipedia.org/wiki/Shebang_(Unix))) as the first line of the file.(For example, to execute the script using bash, `#!/bin/bash` should be the first line of the file. To execute the script using`Python3`, `#!/usr/bin/env python3` should be the first line of the file.) Otherwise, the file will by default be excuted by `/bin/sh`."
        },
        "text": {
          "type": "string",
          "description": "Shell script text. To specify an interpreter, please add a `#!\\n` at the beginning of the text.(For example, to execute the script using bash, `#!/bin/bash\\n` should be added. To execute the script using`Python3`, `#!/usr/bin/env python3\\n` should be added.) Otherwise, the script will by default be excuted by `/bin/sh`."
        }
      },
      "type": "object",
      "required": [
        "path",
        "text"
      ]
    },
    "google-native:batch/v1:ServiceAccount": {
      "description": "Carries information about a Google Cloud service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account. If not specified, the default Compute Engine service account for the project will be used. If instance template is being used, the service account has to be specified in the instance template and it has to match the email field here."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of scopes to be enabled for this service account on the VM, in addition to the cloud-platform API scope that will be added by default."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:ServiceAccountResponse": {
      "description": "Carries information about a Google Cloud service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account. If not specified, the default Compute Engine service account for the project will be used. If instance template is being used, the service account has to be specified in the instance template and it has to match the email field here."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of scopes to be enabled for this service account on the VM, in addition to the cloud-platform API scope that will be added by default."
        }
      },
      "type": "object",
      "required": [
        "email",
        "scopes"
      ]
    },
    "google-native:batch/v1:StatusEventResponse": {
      "description": "Status event",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the event."
        },
        "eventTime": {
          "type": "string",
          "description": "The time this event occurred."
        },
        "taskExecution": {
          "$ref": "#/types/google-native:batch%2Fv1:TaskExecutionResponse",
          "description": "Task Execution"
        },
        "taskState": {
          "type": "string",
          "description": "Task State"
        },
        "type": {
          "type": "string",
          "description": "Type of the event."
        }
      },
      "type": "object",
      "required": [
        "description",
        "eventTime",
        "taskExecution",
        "taskState",
        "type"
      ]
    },
    "google-native:batch/v1:TaskExecutionResponse": {
      "description": "This Task Execution field includes detail information for task execution procedures, based on StatusEvent types.",
      "properties": {
        "exitCode": {
          "type": "integer",
          "description": "When task is completed as the status of FAILED or SUCCEEDED, exit code is for one task execution result, default is 0 as success."
        }
      },
      "type": "object",
      "required": [
        "exitCode"
      ]
    },
    "google-native:batch/v1:TaskGroup": {
      "description": "A TaskGroup defines one or more Tasks that all share the same TaskSpec.",
      "properties": {
        "parallelism": {
          "type": "string",
          "description": "Max number of tasks that can run in parallel. Default to min(task_count, parallel tasks per job limit). See: [Job Limits](https://cloud.google.com/batch/quotas#job_limits). Field parallelism must be 1 if the scheduling_policy is IN_ORDER."
        },
        "permissiveSsh": {
          "type": "boolean",
          "description": "When true, Batch will configure SSH to allow passwordless login between VMs running the Batch tasks in the same TaskGroup."
        },
        "requireHostsFile": {
          "type": "boolean",
          "description": "When true, Batch will populate a file with a list of all VMs assigned to the TaskGroup and set the BATCH_HOSTS_FILE environment variable to the path of that file. Defaults to false."
        },
        "schedulingPolicy": {
          "$ref": "#/types/google-native:batch%2Fv1:TaskGroupSchedulingPolicy",
          "description": "Scheduling policy for Tasks in the TaskGroup. The default value is AS_SOON_AS_POSSIBLE."
        },
        "taskCount": {
          "type": "string",
          "description": "Number of Tasks in the TaskGroup. Default is 1."
        },
        "taskCountPerNode": {
          "type": "string",
          "description": "Max number of tasks that can be run on a VM at the same time. If not specified, the system will decide a value based on available compute resources on a VM and task requirements."
        },
        "taskEnvironments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:Environment"
          },
          "description": "An array of environment variable mappings, which are passed to Tasks with matching indices. If task_environments is used then task_count should not be specified in the request (and will be ignored). Task count will be the length of task_environments. Tasks get a BATCH_TASK_INDEX and BATCH_TASK_COUNT environment variable, in addition to any environment variables set in task_environments, specifying the number of Tasks in the Task's parent TaskGroup, and the specific Task's index in the TaskGroup (0 through BATCH_TASK_COUNT - 1)."
        },
        "taskSpec": {
          "$ref": "#/types/google-native:batch%2Fv1:TaskSpec",
          "description": "Tasks in the group share the same task spec."
        }
      },
      "type": "object",
      "required": [
        "taskSpec"
      ]
    },
    "google-native:batch/v1:TaskGroupResponse": {
      "description": "A TaskGroup defines one or more Tasks that all share the same TaskSpec.",
      "properties": {
        "name": {
          "type": "string",
          "description": "TaskGroup name. The system generates this field based on parent Job name. For example: \"projects/123456/locations/us-west1/jobs/job01/taskGroups/group01\"."
        },
        "parallelism": {
          "type": "string",
          "description": "Max number of tasks that can run in parallel. Default to min(task_count, parallel tasks per job limit). See: [Job Limits](https://cloud.google.com/batch/quotas#job_limits). Field parallelism must be 1 if the scheduling_policy is IN_ORDER."
        },
        "permissiveSsh": {
          "type": "boolean",
          "description": "When true, Batch will configure SSH to allow passwordless login between VMs running the Batch tasks in the same TaskGroup."
        },
        "requireHostsFile": {
          "type": "boolean",
          "description": "When true, Batch will populate a file with a list of all VMs assigned to the TaskGroup and set the BATCH_HOSTS_FILE environment variable to the path of that file. Defaults to false."
        },
        "schedulingPolicy": {
          "type": "string",
          "description": "Scheduling policy for Tasks in the TaskGroup. The default value is AS_SOON_AS_POSSIBLE."
        },
        "taskCount": {
          "type": "string",
          "description": "Number of Tasks in the TaskGroup. Default is 1."
        },
        "taskCountPerNode": {
          "type": "string",
          "description": "Max number of tasks that can be run on a VM at the same time. If not specified, the system will decide a value based on available compute resources on a VM and task requirements."
        },
        "taskEnvironments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:EnvironmentResponse"
          },
          "description": "An array of environment variable mappings, which are passed to Tasks with matching indices. If task_environments is used then task_count should not be specified in the request (and will be ignored). Task count will be the length of task_environments. Tasks get a BATCH_TASK_INDEX and BATCH_TASK_COUNT environment variable, in addition to any environment variables set in task_environments, specifying the number of Tasks in the Task's parent TaskGroup, and the specific Task's index in the TaskGroup (0 through BATCH_TASK_COUNT - 1)."
        },
        "taskSpec": {
          "$ref": "#/types/google-native:batch%2Fv1:TaskSpecResponse",
          "description": "Tasks in the group share the same task spec."
        }
      },
      "type": "object",
      "required": [
        "name",
        "parallelism",
        "permissiveSsh",
        "requireHostsFile",
        "schedulingPolicy",
        "taskCount",
        "taskCountPerNode",
        "taskEnvironments",
        "taskSpec"
      ]
    },
    "google-native:batch/v1:TaskGroupSchedulingPolicy": {
      "description": "Scheduling policy for Tasks in the TaskGroup. The default value is AS_SOON_AS_POSSIBLE.",
      "type": "string",
      "enum": [
        {
          "name": "SchedulingPolicyUnspecified",
          "description": "Unspecified.",
          "value": "SCHEDULING_POLICY_UNSPECIFIED"
        },
        {
          "name": "AsSoonAsPossible",
          "description": "Run Tasks as soon as resources are available. Tasks might be executed in parallel depending on parallelism and task_count values.",
          "value": "AS_SOON_AS_POSSIBLE"
        },
        {
          "name": "InOrder",
          "description": "Run Tasks sequentially with increased task index.",
          "value": "IN_ORDER"
        }
      ]
    },
    "google-native:batch/v1:TaskSpec": {
      "description": "Spec of a task",
      "properties": {
        "computeResource": {
          "$ref": "#/types/google-native:batch%2Fv1:ComputeResource",
          "description": "ComputeResource requirements."
        },
        "environment": {
          "$ref": "#/types/google-native:batch%2Fv1:Environment",
          "description": "Environment variables to set before running the Task."
        },
        "environments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deprecated: please use environment(non-plural) instead.",
          "deprecationMessage": "Deprecated: please use environment(non-plural) instead."
        },
        "lifecyclePolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:LifecyclePolicy"
          },
          "description": "Lifecycle management schema when any task in a task group is failed. Currently we only support one lifecycle policy. When the lifecycle policy condition is met, the action in the policy will execute. If task execution result does not meet with the defined lifecycle policy, we consider it as the default policy. Default policy means if the exit code is 0, exit task. If task ends with non-zero exit code, retry the task with max_retry_count."
        },
        "maxRetryCount": {
          "type": "integer",
          "description": "Maximum number of retries on failures. The default, 0, which means never retry. The valid value range is [0, 10]."
        },
        "maxRunDuration": {
          "type": "string",
          "description": "Maximum duration the task should run. The task will be killed and marked as FAILED if over this limit."
        },
        "runnables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:Runnable"
          },
          "description": "The sequence of scripts or containers to run for this Task. Each Task using this TaskSpec executes its list of runnables in order. The Task succeeds if all of its runnables either exit with a zero status or any that exit with a non-zero status have the ignore_exit_status flag. Background runnables are killed automatically (if they have not already exited) a short time after all foreground runnables have completed. Even though this is likely to result in a non-zero exit status for the background runnable, these automatic kills are not treated as Task failures."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:Volume"
          },
          "description": "Volumes to mount before running Tasks using this TaskSpec."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:TaskSpecResponse": {
      "description": "Spec of a task",
      "properties": {
        "computeResource": {
          "$ref": "#/types/google-native:batch%2Fv1:ComputeResourceResponse",
          "description": "ComputeResource requirements."
        },
        "environment": {
          "$ref": "#/types/google-native:batch%2Fv1:EnvironmentResponse",
          "description": "Environment variables to set before running the Task."
        },
        "environments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deprecated: please use environment(non-plural) instead.",
          "deprecationMessage": "Deprecated: please use environment(non-plural) instead."
        },
        "lifecyclePolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:LifecyclePolicyResponse"
          },
          "description": "Lifecycle management schema when any task in a task group is failed. Currently we only support one lifecycle policy. When the lifecycle policy condition is met, the action in the policy will execute. If task execution result does not meet with the defined lifecycle policy, we consider it as the default policy. Default policy means if the exit code is 0, exit task. If task ends with non-zero exit code, retry the task with max_retry_count."
        },
        "maxRetryCount": {
          "type": "integer",
          "description": "Maximum number of retries on failures. The default, 0, which means never retry. The valid value range is [0, 10]."
        },
        "maxRunDuration": {
          "type": "string",
          "description": "Maximum duration the task should run. The task will be killed and marked as FAILED if over this limit."
        },
        "runnables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:RunnableResponse"
          },
          "description": "The sequence of scripts or containers to run for this Task. Each Task using this TaskSpec executes its list of runnables in order. The Task succeeds if all of its runnables either exit with a zero status or any that exit with a non-zero status have the ignore_exit_status flag. Background runnables are killed automatically (if they have not already exited) a short time after all foreground runnables have completed. Even though this is likely to result in a non-zero exit status for the background runnable, these automatic kills are not treated as Task failures."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:VolumeResponse"
          },
          "description": "Volumes to mount before running Tasks using this TaskSpec."
        }
      },
      "type": "object",
      "required": [
        "computeResource",
        "environment",
        "environments",
        "lifecyclePolicies",
        "maxRetryCount",
        "maxRunDuration",
        "runnables",
        "volumes"
      ]
    },
    "google-native:batch/v1:Volume": {
      "description": "Volume describes a volume and parameters for it to be mounted to a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Device name of an attached disk volume, which should align with a device_name specified by job.allocation_policy.instances[0].policy.disks[i].device_name or defined by the given instance template in job.allocation_policy.instances[0].instance_template."
        },
        "gcs": {
          "$ref": "#/types/google-native:batch%2Fv1:GCS",
          "description": "A Google Cloud Storage (GCS) volume."
        },
        "mountOptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "For Google Cloud Storage (GCS), mount options are the options supported by the gcsfuse tool (https://github.com/GoogleCloudPlatform/gcsfuse). For existing persistent disks, mount options provided by the mount command (https://man7.org/linux/man-pages/man8/mount.8.html) except writing are supported. This is due to restrictions of multi-writer mode (https://cloud.google.com/compute/docs/disks/sharing-disks-between-vms). For other attached disks and Network File System (NFS), mount options are these supported by the mount command (https://man7.org/linux/man-pages/man8/mount.8.html)."
        },
        "mountPath": {
          "type": "string",
          "description": "The mount path for the volume, e.g. /mnt/disks/share."
        },
        "nfs": {
          "$ref": "#/types/google-native:batch%2Fv1:NFS",
          "description": "A Network File System (NFS) volume. For example, a Filestore file share."
        }
      },
      "type": "object"
    },
    "google-native:batch/v1:VolumeResponse": {
      "description": "Volume describes a volume and parameters for it to be mounted to a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Device name of an attached disk volume, which should align with a device_name specified by job.allocation_policy.instances[0].policy.disks[i].device_name or defined by the given instance template in job.allocation_policy.instances[0].instance_template."
        },
        "gcs": {
          "$ref": "#/types/google-native:batch%2Fv1:GCSResponse",
          "description": "A Google Cloud Storage (GCS) volume."
        },
        "mountOptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "For Google Cloud Storage (GCS), mount options are the options supported by the gcsfuse tool (https://github.com/GoogleCloudPlatform/gcsfuse). For existing persistent disks, mount options provided by the mount command (https://man7.org/linux/man-pages/man8/mount.8.html) except writing are supported. This is due to restrictions of multi-writer mode (https://cloud.google.com/compute/docs/disks/sharing-disks-between-vms). For other attached disks and Network File System (NFS), mount options are these supported by the mount command (https://man7.org/linux/man-pages/man8/mount.8.html)."
        },
        "mountPath": {
          "type": "string",
          "description": "The mount path for the volume, e.g. /mnt/disks/share."
        },
        "nfs": {
          "$ref": "#/types/google-native:batch%2Fv1:NFSResponse",
          "description": "A Network File System (NFS) volume. For example, a Filestore file share."
        }
      },
      "type": "object",
      "required": [
        "deviceName",
        "gcs",
        "mountOptions",
        "mountPath",
        "nfs"
      ]
    },
    "google-native:beyondcorp/v1:AllocatedConnectionResponse": {
      "description": "Allocated connection of the AppGateway.",
      "properties": {
        "ingressPort": {
          "type": "integer",
          "description": "The ingress port of an allocated connection"
        },
        "pscUri": {
          "type": "string",
          "description": "The PSC uri of an allocated connection"
        }
      },
      "type": "object",
      "required": [
        "ingressPort",
        "pscUri"
      ]
    },
    "google-native:beyondcorp/v1:AppConnectionType": {
      "description": "Required. The type of network connectivity used by the AppConnection.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TcpProxy",
          "description": "TCP Proxy based BeyondCorp AppConnection. API will default to this if unset.",
          "value": "TCP_PROXY"
        }
      ]
    },
    "google-native:beyondcorp/v1:AppGatewayHostType": {
      "description": "Required. The type of hosting used by the AppGateway.",
      "type": "string",
      "enum": [
        {
          "name": "HostTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "HOST_TYPE_UNSPECIFIED"
        },
        {
          "name": "GcpRegionalMig",
          "description": "AppGateway hosted in a GCP regional managed instance group.",
          "value": "GCP_REGIONAL_MIG"
        }
      ]
    },
    "google-native:beyondcorp/v1:AppGatewayType": {
      "description": "Required. The type of network connectivity used by the AppGateway.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TcpProxy",
          "description": "TCP Proxy based BeyondCorp Connection. API will default to this if unset.",
          "value": "TCP_PROXY"
        }
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionApplicationEndpoint": {
      "description": "ApplicationEndpoint represents a remote application endpoint.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the remote application endpoint."
        },
        "port": {
          "type": "integer",
          "description": "Port of the remote application endpoint."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port"
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionApplicationEndpointResponse": {
      "description": "ApplicationEndpoint represents a remote application endpoint.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the remote application endpoint."
        },
        "port": {
          "type": "integer",
          "description": "Port of the remote application endpoint."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port"
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionGateway": {
      "description": "Gateway represents a user facing component that serves as an entrance to enable connectivity.",
      "properties": {
        "appGateway": {
          "type": "string",
          "description": "AppGateway name in following format: `projects/{project_id}/locations/{location_id}/appgateways/{gateway_id}`"
        },
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionGatewayType",
          "description": "The type of hosting used by the gateway."
        }
      },
      "type": "object",
      "required": [
        "appGateway",
        "type"
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionGatewayResponse": {
      "description": "Gateway represents a user facing component that serves as an entrance to enable connectivity.",
      "properties": {
        "appGateway": {
          "type": "string",
          "description": "AppGateway name in following format: `projects/{project_id}/locations/{location_id}/appgateways/{gateway_id}`"
        },
        "ingressPort": {
          "type": "integer",
          "description": "Ingress port reserved on the gateways for this AppConnection, if not specified or zero, the default port is 19443."
        },
        "l7psc": {
          "type": "string",
          "description": "L7 private service connection for this resource."
        },
        "type": {
          "type": "string",
          "description": "The type of hosting used by the gateway."
        },
        "uri": {
          "type": "string",
          "description": "Server-defined URI for this resource."
        }
      },
      "type": "object",
      "required": [
        "appGateway",
        "ingressPort",
        "l7psc",
        "type",
        "uri"
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionGatewayType": {
      "description": "Required. The type of hosting used by the gateway.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "GcpRegionalMig",
          "description": "Gateway hosted in a GCP regional managed instance group.",
          "value": "GCP_REGIONAL_MIG"
        }
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfo": {
      "description": "PrincipalInfo represents an Identity oneof.",
      "properties": {
        "serviceAccount": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfoServiceAccount",
          "description": "A GCP service account."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfoResponse": {
      "description": "PrincipalInfo represents an Identity oneof.",
      "properties": {
        "serviceAccount": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfoServiceAccountResponse",
          "description": "A GCP service account."
        }
      },
      "type": "object",
      "required": [
        "serviceAccount"
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfoServiceAccount": {
      "description": "ServiceAccount represents a GCP service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfoServiceAccountResponse": {
      "description": "ServiceAccount represents a GCP service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        }
      },
      "type": "object",
      "required": [
        "email"
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfo": {
      "description": "ResourceInfo represents the information/status of an app connector resource. Such as: - remote_agent - container - runtime - appgateway - appconnector - appconnection - tunnel - logagent",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique Id for the resource."
        },
        "resource": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Specific details for the resource. This is for internal use only."
        },
        "status": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfoStatus",
          "description": "Overall health status. Overall status is derived based on the status of each sub level resources."
        },
        "sub": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfo"
          },
          "description": "List of Info for the sub level resources."
        },
        "time": {
          "type": "string",
          "description": "The timestamp to collect the info. It is suggested to be set by the topmost level resource only."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfoResponse": {
      "description": "ResourceInfo represents the information/status of an app connector resource. Such as: - remote_agent - container - runtime - appgateway - appconnector - appconnection - tunnel - logagent",
      "properties": {
        "resource": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Specific details for the resource. This is for internal use only."
        },
        "status": {
          "type": "string",
          "description": "Overall health status. Overall status is derived based on the status of each sub level resources."
        },
        "sub": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfoResponse"
          },
          "description": "List of Info for the sub level resources."
        },
        "time": {
          "type": "string",
          "description": "The timestamp to collect the info. It is suggested to be set by the topmost level resource only."
        }
      },
      "type": "object",
      "required": [
        "resource",
        "status",
        "sub",
        "time"
      ]
    },
    "google-native:beyondcorp/v1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfoStatus": {
      "description": "Overall health status. Overall status is derived based on the status of each sub level resources.",
      "type": "string",
      "enum": [
        {
          "name": "HealthStatusUnspecified",
          "description": "Health status is unknown: not initialized or failed to retrieve.",
          "value": "HEALTH_STATUS_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "The resource is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "Unhealthy",
          "description": "The resource is unhealthy.",
          "value": "UNHEALTHY"
        },
        {
          "name": "Unresponsive",
          "description": "The resource is unresponsive.",
          "value": "UNRESPONSIVE"
        },
        {
          "name": "Degraded",
          "description": "Some sub-resources are UNHEALTHY.",
          "value": "DEGRADED"
        }
      ]
    },
    "google-native:beyondcorp/v1:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:beyondcorp/v1:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:beyondcorp/v1:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:beyondcorp/v1:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:beyondcorp/v1alpha:AllocatedConnectionResponse": {
      "description": "Allocated connection of the AppGateway.",
      "properties": {
        "ingressPort": {
          "type": "integer",
          "description": "The ingress port of an allocated connection"
        },
        "pscUri": {
          "type": "string",
          "description": "The PSC uri of an allocated connection"
        }
      },
      "type": "object",
      "required": [
        "ingressPort",
        "pscUri"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnectionType": {
      "description": "Required. The type of network connectivity used by the AppConnection.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TcpProxy",
          "description": "TCP Proxy based BeyondCorp AppConnection. API will default to this if unset.",
          "value": "TCP_PROXY"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:AppGatewayHostType": {
      "description": "Required. The type of hosting used by the AppGateway.",
      "type": "string",
      "enum": [
        {
          "name": "HostTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "HOST_TYPE_UNSPECIFIED"
        },
        {
          "name": "GcpRegionalMig",
          "description": "AppGateway hosted in a GCP regional managed instance group.",
          "value": "GCP_REGIONAL_MIG"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:AppGatewayType": {
      "description": "Required. The type of network connectivity used by the AppGateway.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TcpProxy",
          "description": "TCP Proxy based BeyondCorp Connection. API will default to this if unset.",
          "value": "TCP_PROXY"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:ApplicationEndpoint": {
      "description": "ApplicationEndpoint represents a remote application endpoint.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the remote application endpoint."
        },
        "port": {
          "type": "integer",
          "description": "Port of the remote application endpoint."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port"
      ]
    },
    "google-native:beyondcorp/v1alpha:ApplicationEndpointResponse": {
      "description": "ApplicationEndpoint represents a remote application endpoint.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the remote application endpoint."
        },
        "port": {
          "type": "integer",
          "description": "Port of the remote application endpoint."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port"
      ]
    },
    "google-native:beyondcorp/v1alpha:ConnectionType": {
      "description": "Required. The type of network connectivity used by the connection.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TcpProxy",
          "description": "TCP Proxy based BeyondCorp Connection. API will default to this if unset.",
          "value": "TCP_PROXY"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:Gateway": {
      "description": "Gateway represents a user facing component that serves as an entrance to enable connectivity.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GatewayType",
          "description": "The type of hosting used by the gateway."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:beyondcorp/v1alpha:GatewayResponse": {
      "description": "Gateway represents a user facing component that serves as an entrance to enable connectivity.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of hosting used by the gateway."
        },
        "uri": {
          "type": "string",
          "description": "Server-defined URI for this resource."
        },
        "userPort": {
          "type": "integer",
          "description": "User port reserved on the gateways for this connection, if not specified or zero, the default port is 19443."
        }
      },
      "type": "object",
      "required": [
        "type",
        "uri",
        "userPort"
      ]
    },
    "google-native:beyondcorp/v1alpha:GatewayType": {
      "description": "Required. The type of hosting used by the gateway.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "GcpRegionalMig",
          "description": "Gateway hosted in a GCP regional managed instance group.",
          "value": "GCP_REGIONAL_MIG"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionApplicationEndpoint": {
      "description": "ApplicationEndpoint represents a remote application endpoint.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the remote application endpoint."
        },
        "port": {
          "type": "integer",
          "description": "Port of the remote application endpoint."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionApplicationEndpointResponse": {
      "description": "ApplicationEndpoint represents a remote application endpoint.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the remote application endpoint."
        },
        "port": {
          "type": "integer",
          "description": "Port of the remote application endpoint."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionGateway": {
      "description": "Gateway represents a user facing component that serves as an entrance to enable connectivity.",
      "properties": {
        "appGateway": {
          "type": "string",
          "description": "AppGateway name in following format: `projects/{project_id}/locations/{location_id}/appgateways/{gateway_id}`"
        },
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionGatewayType",
          "description": "The type of hosting used by the gateway."
        }
      },
      "type": "object",
      "required": [
        "appGateway",
        "type"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionGatewayResponse": {
      "description": "Gateway represents a user facing component that serves as an entrance to enable connectivity.",
      "properties": {
        "appGateway": {
          "type": "string",
          "description": "AppGateway name in following format: `projects/{project_id}/locations/{location_id}/appgateways/{gateway_id}`"
        },
        "ingressPort": {
          "type": "integer",
          "description": "Ingress port reserved on the gateways for this AppConnection, if not specified or zero, the default port is 19443."
        },
        "l7psc": {
          "type": "string",
          "description": "L7 private service connection for this resource."
        },
        "type": {
          "type": "string",
          "description": "The type of hosting used by the gateway."
        },
        "uri": {
          "type": "string",
          "description": "Server-defined URI for this resource."
        }
      },
      "type": "object",
      "required": [
        "appGateway",
        "ingressPort",
        "l7psc",
        "type",
        "uri"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionGatewayType": {
      "description": "Required. The type of hosting used by the gateway.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "GcpRegionalMig",
          "description": "Gateway hosted in a GCP regional managed instance group.",
          "value": "GCP_REGIONAL_MIG"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfo": {
      "description": "PrincipalInfo represents an Identity oneof.",
      "properties": {
        "serviceAccount": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfoServiceAccount",
          "description": "A GCP service account."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfoResponse": {
      "description": "PrincipalInfo represents an Identity oneof.",
      "properties": {
        "serviceAccount": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfoServiceAccountResponse",
          "description": "A GCP service account."
        }
      },
      "type": "object",
      "required": [
        "serviceAccount"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfoServiceAccount": {
      "description": "ServiceAccount represents a GCP service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfoServiceAccountResponse": {
      "description": "ServiceAccount represents a GCP service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        }
      },
      "type": "object",
      "required": [
        "email"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfo": {
      "description": "ResourceInfo represents the information/status of an app connector resource. Such as: - remote_agent - container - runtime - appgateway - appconnector - appconnection - tunnel - logagent",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique Id for the resource."
        },
        "resource": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Specific details for the resource. This is for internal use only."
        },
        "status": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfoStatus",
          "description": "Overall health status. Overall status is derived based on the status of each sub level resources."
        },
        "sub": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfo"
          },
          "description": "List of Info for the sub level resources."
        },
        "time": {
          "type": "string",
          "description": "The timestamp to collect the info. It is suggested to be set by the topmost level resource only."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfoResponse": {
      "description": "ResourceInfo represents the information/status of an app connector resource. Such as: - remote_agent - container - runtime - appgateway - appconnector - appconnection - tunnel - logagent",
      "properties": {
        "resource": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Specific details for the resource. This is for internal use only."
        },
        "status": {
          "type": "string",
          "description": "Overall health status. Overall status is derived based on the status of each sub level resources."
        },
        "sub": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfoResponse"
          },
          "description": "List of Info for the sub level resources."
        },
        "time": {
          "type": "string",
          "description": "The timestamp to collect the info. It is suggested to be set by the topmost level resource only."
        }
      },
      "type": "object",
      "required": [
        "resource",
        "status",
        "sub",
        "time"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfoStatus": {
      "description": "Overall health status. Overall status is derived based on the status of each sub level resources.",
      "type": "string",
      "enum": [
        {
          "name": "HealthStatusUnspecified",
          "description": "Health status is unknown: not initialized or failed to retrieve.",
          "value": "HEALTH_STATUS_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "The resource is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "Unhealthy",
          "description": "The resource is unhealthy.",
          "value": "UNHEALTHY"
        },
        {
          "name": "Unresponsive",
          "description": "The resource is unresponsive.",
          "value": "UNRESPONSIVE"
        },
        {
          "name": "Degraded",
          "description": "Some sub-resources are UNHEALTHY.",
          "value": "DEGRADED"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaEncryptionInfo": {
      "description": "Message contains the JWT encryption information for the proxy server.",
      "properties": {
        "encryptionSaEmail": {
          "type": "string",
          "description": "Optional. Service Account for encryption key."
        },
        "jwk": {
          "type": "string",
          "description": "Optional. JWK in string."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaEncryptionInfoResponse": {
      "description": "Message contains the JWT encryption information for the proxy server.",
      "properties": {
        "encryptionSaEmail": {
          "type": "string",
          "description": "Optional. Service Account for encryption key."
        },
        "jwk": {
          "type": "string",
          "description": "Optional. JWK in string."
        }
      },
      "type": "object",
      "required": [
        "encryptionSaEmail",
        "jwk"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaGroup": {
      "description": "Message to capture group information",
      "properties": {
        "email": {
          "type": "string",
          "description": "The group email id"
        },
        "id": {
          "type": "string",
          "description": "Google group id"
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaGroupResponse": {
      "description": "Message to capture group information",
      "properties": {
        "email": {
          "type": "string",
          "description": "The group email id"
        }
      },
      "type": "object",
      "required": [
        "email"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerMetadata": {
      "description": "Metadata associated with PartnerTenant and is provided by the Partner.",
      "properties": {
        "internalTenantId": {
          "type": "string",
          "description": "Optional. UUID used by the Partner to refer to the PartnerTenant in their internal systems."
        },
        "partnerTenantId": {
          "type": "string",
          "description": "Optional. UUID used by the Partner to refer to the PartnerTenant in their internal systems."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerMetadataResponse": {
      "description": "Metadata associated with PartnerTenant and is provided by the Partner.",
      "properties": {
        "internalTenantId": {
          "type": "string",
          "description": "Optional. UUID used by the Partner to refer to the PartnerTenant in their internal systems."
        },
        "partnerTenantId": {
          "type": "string",
          "description": "Optional. UUID used by the Partner to refer to the PartnerTenant in their internal systems."
        }
      },
      "type": "object",
      "required": [
        "internalTenantId",
        "partnerTenantId"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRoutingInfo": {
      "description": "Message contains the routing information to direct traffic to the proxy server.",
      "properties": {
        "pacUri": {
          "type": "string",
          "description": "Proxy Auto-Configuration (PAC) URI."
        }
      },
      "type": "object",
      "required": [
        "pacUri"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRoutingInfoResponse": {
      "description": "Message contains the routing information to direct traffic to the proxy server.",
      "properties": {
        "pacUri": {
          "type": "string",
          "description": "Proxy Auto-Configuration (PAC) URI."
        }
      },
      "type": "object",
      "required": [
        "pacUri"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRuleSetting": {
      "description": "Message to capture settings for a BrowserDlpRule",
      "properties": {
        "type": {
          "type": "string",
          "description": "Immutable. The type of the Setting. ."
        },
        "value": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The value of the Setting."
        }
      },
      "type": "object",
      "required": [
        "type",
        "value"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRuleSettingResponse": {
      "description": "Message to capture settings for a BrowserDlpRule",
      "properties": {
        "type": {
          "type": "string",
          "description": "Immutable. The type of the Setting. ."
        },
        "value": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The value of the Setting."
        }
      },
      "type": "object",
      "required": [
        "type",
        "value"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaTransportInfo": {
      "description": "Message contains the transport layer information to verify the proxy server.",
      "properties": {
        "serverCaCertPem": {
          "type": "string",
          "description": "PEM encoded CA certificate associated with the proxy server certificate."
        },
        "sslDecryptCaCertPem": {
          "type": "string",
          "description": "Optional. PEM encoded CA certificate associated with the certificate used by proxy server for SSL decryption."
        }
      },
      "type": "object",
      "required": [
        "serverCaCertPem"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaTransportInfoResponse": {
      "description": "Message contains the transport layer information to verify the proxy server.",
      "properties": {
        "serverCaCertPem": {
          "type": "string",
          "description": "PEM encoded CA certificate associated with the proxy server certificate."
        },
        "sslDecryptCaCertPem": {
          "type": "string",
          "description": "Optional. PEM encoded CA certificate associated with the certificate used by proxy server for SSL decryption."
        }
      },
      "type": "object",
      "required": [
        "serverCaCertPem",
        "sslDecryptCaCertPem"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:beyondcorp/v1alpha:PrincipalInfo": {
      "description": "PrincipalInfo represents an Identity oneof.",
      "properties": {
        "serviceAccount": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ServiceAccount",
          "description": "A GCP service account."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:PrincipalInfoResponse": {
      "description": "PrincipalInfo represents an Identity oneof.",
      "properties": {
        "serviceAccount": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ServiceAccountResponse",
          "description": "A GCP service account."
        }
      },
      "type": "object",
      "required": [
        "serviceAccount"
      ]
    },
    "google-native:beyondcorp/v1alpha:ResourceInfo": {
      "description": "ResourceInfo represents the information/status of the associated resource.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique Id for the resource."
        },
        "resource": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Specific details for the resource."
        },
        "status": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ResourceInfoStatus",
          "description": "Overall health status. Overall status is derived based on the status of each sub level resources."
        },
        "sub": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ResourceInfo"
          },
          "description": "List of Info for the sub level resources."
        },
        "time": {
          "type": "string",
          "description": "The timestamp to collect the info. It is suggested to be set by the topmost level resource only."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:beyondcorp/v1alpha:ResourceInfoResponse": {
      "description": "ResourceInfo represents the information/status of the associated resource.",
      "properties": {
        "resource": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Specific details for the resource."
        },
        "status": {
          "type": "string",
          "description": "Overall health status. Overall status is derived based on the status of each sub level resources."
        },
        "sub": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ResourceInfoResponse"
          },
          "description": "List of Info for the sub level resources."
        },
        "time": {
          "type": "string",
          "description": "The timestamp to collect the info. It is suggested to be set by the topmost level resource only."
        }
      },
      "type": "object",
      "required": [
        "resource",
        "status",
        "sub",
        "time"
      ]
    },
    "google-native:beyondcorp/v1alpha:ResourceInfoStatus": {
      "description": "Overall health status. Overall status is derived based on the status of each sub level resources.",
      "type": "string",
      "enum": [
        {
          "name": "HealthStatusUnspecified",
          "description": "Health status is unknown: not initialized or failed to retrieve.",
          "value": "HEALTH_STATUS_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "The resource is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "Unhealthy",
          "description": "The resource is unhealthy.",
          "value": "UNHEALTHY"
        },
        {
          "name": "Unresponsive",
          "description": "The resource is unresponsive.",
          "value": "UNRESPONSIVE"
        },
        {
          "name": "Degraded",
          "description": "Some sub-resources are UNHEALTHY.",
          "value": "DEGRADED"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:ServiceAccount": {
      "description": "ServiceAccount represents a GCP service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        }
      },
      "type": "object"
    },
    "google-native:beyondcorp/v1alpha:ServiceAccountResponse": {
      "description": "ServiceAccount represents a GCP service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        }
      },
      "type": "object",
      "required": [
        "email"
      ]
    },
    "google-native:beyondcorp/v1alpha:SubscriptionSku": {
      "description": "Required. SKU of subscription.",
      "type": "string",
      "enum": [
        {
          "name": "SkuUnspecified",
          "description": "Default value. This value is unused.",
          "value": "SKU_UNSPECIFIED"
        },
        {
          "name": "BceStandardSku",
          "description": "Represents BeyondCorp Standard SKU.",
          "value": "BCE_STANDARD_SKU"
        }
      ]
    },
    "google-native:beyondcorp/v1alpha:SubscriptionType": {
      "description": "Required. Type of subscription.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Trial",
          "description": "Represents a trial subscription.",
          "value": "TRIAL"
        },
        {
          "name": "Paid",
          "description": "Represents a paid subscription.",
          "value": "PAID"
        },
        {
          "name": "Allowlist",
          "description": "Reresents an allowlisted subscription.",
          "value": "ALLOWLIST"
        }
      ]
    },
    "google-native:biglake/v1:DatabaseType": {
      "description": "The database type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type is not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Hive",
          "description": "Represents a database storing tables compatible with Hive Metastore tables.",
          "value": "HIVE"
        }
      ]
    },
    "google-native:biglake/v1:HiveDatabaseOptions": {
      "description": "Options of a Hive database.",
      "properties": {
        "locationUri": {
          "type": "string",
          "description": "Cloud Storage folder URI where the database data is stored, starting with \"gs://\"."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Stores user supplied Hive database parameters."
        }
      },
      "type": "object"
    },
    "google-native:biglake/v1:HiveDatabaseOptionsResponse": {
      "description": "Options of a Hive database.",
      "properties": {
        "locationUri": {
          "type": "string",
          "description": "Cloud Storage folder URI where the database data is stored, starting with \"gs://\"."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Stores user supplied Hive database parameters."
        }
      },
      "type": "object",
      "required": [
        "locationUri",
        "parameters"
      ]
    },
    "google-native:biglake/v1:HiveTableOptions": {
      "description": "Options of a Hive table.",
      "properties": {
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Stores user supplied Hive table parameters."
        },
        "storageDescriptor": {
          "$ref": "#/types/google-native:biglake%2Fv1:StorageDescriptor",
          "description": "Stores physical storage information of the data."
        },
        "tableType": {
          "type": "string",
          "description": "Hive table type. For example, MANAGED_TABLE, EXTERNAL_TABLE."
        }
      },
      "type": "object"
    },
    "google-native:biglake/v1:HiveTableOptionsResponse": {
      "description": "Options of a Hive table.",
      "properties": {
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Stores user supplied Hive table parameters."
        },
        "storageDescriptor": {
          "$ref": "#/types/google-native:biglake%2Fv1:StorageDescriptorResponse",
          "description": "Stores physical storage information of the data."
        },
        "tableType": {
          "type": "string",
          "description": "Hive table type. For example, MANAGED_TABLE, EXTERNAL_TABLE."
        }
      },
      "type": "object",
      "required": [
        "parameters",
        "storageDescriptor",
        "tableType"
      ]
    },
    "google-native:biglake/v1:SerDeInfo": {
      "description": "Serializer and deserializer information.",
      "properties": {
        "serializationLib": {
          "type": "string",
          "description": "The fully qualified Java class name of the serialization library."
        }
      },
      "type": "object"
    },
    "google-native:biglake/v1:SerDeInfoResponse": {
      "description": "Serializer and deserializer information.",
      "properties": {
        "serializationLib": {
          "type": "string",
          "description": "The fully qualified Java class name of the serialization library."
        }
      },
      "type": "object",
      "required": [
        "serializationLib"
      ]
    },
    "google-native:biglake/v1:StorageDescriptor": {
      "description": "Stores physical storage information of the data.",
      "properties": {
        "inputFormat": {
          "type": "string",
          "description": "The fully qualified Java class name of the input format."
        },
        "locationUri": {
          "type": "string",
          "description": "Cloud Storage folder URI where the table data is stored, starting with \"gs://\"."
        },
        "outputFormat": {
          "type": "string",
          "description": "The fully qualified Java class name of the output format."
        },
        "serdeInfo": {
          "$ref": "#/types/google-native:biglake%2Fv1:SerDeInfo",
          "description": "Serializer and deserializer information."
        }
      },
      "type": "object"
    },
    "google-native:biglake/v1:StorageDescriptorResponse": {
      "description": "Stores physical storage information of the data.",
      "properties": {
        "inputFormat": {
          "type": "string",
          "description": "The fully qualified Java class name of the input format."
        },
        "locationUri": {
          "type": "string",
          "description": "Cloud Storage folder URI where the table data is stored, starting with \"gs://\"."
        },
        "outputFormat": {
          "type": "string",
          "description": "The fully qualified Java class name of the output format."
        },
        "serdeInfo": {
          "$ref": "#/types/google-native:biglake%2Fv1:SerDeInfoResponse",
          "description": "Serializer and deserializer information."
        }
      },
      "type": "object",
      "required": [
        "inputFormat",
        "locationUri",
        "outputFormat",
        "serdeInfo"
      ]
    },
    "google-native:biglake/v1:TableType": {
      "description": "The table type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type is not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Hive",
          "description": "Represents a table compatible with Hive Metastore tables.",
          "value": "HIVE"
        }
      ]
    },
    "google-native:bigquery/v2:Argument": {
      "description": "Input/output argument of a function or a stored procedure.",
      "properties": {
        "argumentKind": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ArgumentArgumentKind",
          "description": "Optional. Defaults to FIXED_TYPE."
        },
        "dataType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataType",
          "description": "Required unless argument_kind = ANY_TYPE."
        },
        "isAggregate": {
          "type": "boolean",
          "description": "Optional. Whether the argument is an aggregate function parameter. Must be Unset for routine types other than AGGREGATE_FUNCTION. For AGGREGATE_FUNCTION, if set to false, it is equivalent to adding \"NOT AGGREGATE\" clause in DDL; Otherwise, it is equivalent to omitting \"NOT AGGREGATE\" clause in DDL."
        },
        "mode": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ArgumentMode",
          "description": "Optional. Specifies whether the argument is input or output. Can be set for procedures only."
        },
        "name": {
          "type": "string",
          "description": "Optional. The name of this argument. Can be absent for function return argument."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ArgumentArgumentKind": {
      "description": "Optional. Defaults to FIXED_TYPE.",
      "type": "string",
      "enum": [
        {
          "name": "ArgumentKindUnspecified",
          "description": "Default value.",
          "value": "ARGUMENT_KIND_UNSPECIFIED"
        },
        {
          "name": "FixedType",
          "description": "The argument is a variable with fully specified type, which can be a struct or an array, but not a table.",
          "value": "FIXED_TYPE"
        },
        {
          "name": "AnyType",
          "description": "The argument is any type, including struct or array, but not a table. To be added: FIXED_TABLE, ANY_TABLE",
          "value": "ANY_TYPE"
        }
      ]
    },
    "google-native:bigquery/v2:ArgumentMode": {
      "description": "Optional. Specifies whether the argument is input or output. Can be set for procedures only.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "In",
          "description": "The argument is input-only.",
          "value": "IN"
        },
        {
          "name": "Out",
          "description": "The argument is output-only.",
          "value": "OUT"
        },
        {
          "name": "Inout",
          "description": "The argument is both an input and an output.",
          "value": "INOUT"
        }
      ]
    },
    "google-native:bigquery/v2:ArgumentResponse": {
      "description": "Input/output argument of a function or a stored procedure.",
      "properties": {
        "argumentKind": {
          "type": "string",
          "description": "Optional. Defaults to FIXED_TYPE."
        },
        "dataType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataTypeResponse",
          "description": "Required unless argument_kind = ANY_TYPE."
        },
        "isAggregate": {
          "type": "boolean",
          "description": "Optional. Whether the argument is an aggregate function parameter. Must be Unset for routine types other than AGGREGATE_FUNCTION. For AGGREGATE_FUNCTION, if set to false, it is equivalent to adding \"NOT AGGREGATE\" clause in DDL; Otherwise, it is equivalent to omitting \"NOT AGGREGATE\" clause in DDL."
        },
        "mode": {
          "type": "string",
          "description": "Optional. Specifies whether the argument is input or output. Can be set for procedures only."
        },
        "name": {
          "type": "string",
          "description": "Optional. The name of this argument. Can be absent for function return argument."
        }
      },
      "type": "object",
      "required": [
        "argumentKind",
        "dataType",
        "isAggregate",
        "mode",
        "name"
      ]
    },
    "google-native:bigquery/v2:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:bigquery/v2:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:bigquery/v2:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:bigquery/v2:AvroOptions": {
      "properties": {
        "useAvroLogicalTypes": {
          "type": "boolean",
          "description": "[Optional] 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)."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:AvroOptionsResponse": {
      "properties": {
        "useAvroLogicalTypes": {
          "type": "boolean",
          "description": "[Optional] 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)."
        }
      },
      "type": "object",
      "required": [
        "useAvroLogicalTypes"
      ]
    },
    "google-native:bigquery/v2:BiEngineReasonResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "High-level BI Engine reason for partial or disabled acceleration."
        },
        "message": {
          "type": "string",
          "description": "Free form human-readable reason for partial or disabled acceleration."
        }
      },
      "type": "object",
      "required": [
        "code",
        "message"
      ]
    },
    "google-native:bigquery/v2:BiEngineStatisticsResponse": {
      "properties": {
        "accelerationMode": {
          "type": "string",
          "description": "Specifies which mode of BI Engine acceleration was performed (if any)."
        },
        "biEngineMode": {
          "type": "string",
          "description": "Specifies which mode of BI Engine acceleration was performed (if any)."
        },
        "biEngineReasons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BiEngineReasonResponse"
          },
          "description": "In case of DISABLED or PARTIAL bi_engine_mode, these contain the explanatory reasons as to why BI Engine could not accelerate. In case the full query was accelerated, this field is not populated."
        }
      },
      "type": "object",
      "required": [
        "accelerationMode",
        "biEngineMode",
        "biEngineReasons"
      ]
    },
    "google-native:bigquery/v2:BigLakeConfiguration": {
      "properties": {
        "connectionId": {
          "type": "string",
          "description": "[Required] Required and immutable. Credential reference for accessing external storage system. Normalized as project_id.location_id.connection_id."
        },
        "fileFormat": {
          "type": "string",
          "description": "[Required] Required and immutable. Open source file format that the table data is stored in. Currently only PARQUET is supported."
        },
        "storageUri": {
          "type": "string",
          "description": "[Required] Required and immutable. Fully qualified location prefix of the external folder where data is stored. Normalized to standard format: \"gs:////\". Starts with \"gs://\" rather than \"/bigstore/\". Ends with \"/\". Does not contain \"*\". See also BigLakeStorageMetadata on how it is used."
        },
        "tableFormat": {
          "type": "string",
          "description": "[Required] Required and immutable. Open source file format that the table data is stored in. Currently only PARQUET is supported."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:BigLakeConfigurationResponse": {
      "properties": {
        "connectionId": {
          "type": "string",
          "description": "[Required] Required and immutable. Credential reference for accessing external storage system. Normalized as project_id.location_id.connection_id."
        },
        "fileFormat": {
          "type": "string",
          "description": "[Required] Required and immutable. Open source file format that the table data is stored in. Currently only PARQUET is supported."
        },
        "storageUri": {
          "type": "string",
          "description": "[Required] Required and immutable. Fully qualified location prefix of the external folder where data is stored. Normalized to standard format: \"gs:////\". Starts with \"gs://\" rather than \"/bigstore/\". Ends with \"/\". Does not contain \"*\". See also BigLakeStorageMetadata on how it is used."
        },
        "tableFormat": {
          "type": "string",
          "description": "[Required] Required and immutable. Open source file format that the table data is stored in. Currently only PARQUET is supported."
        }
      },
      "type": "object",
      "required": [
        "connectionId",
        "fileFormat",
        "storageUri",
        "tableFormat"
      ]
    },
    "google-native:bigquery/v2:BigQueryModelTrainingResponse": {
      "properties": {
        "currentIteration": {
          "type": "integer",
          "description": "[Output-only, Beta] Index of current ML training iteration. Updated during create model query job to show job progress."
        },
        "expectedTotalIterations": {
          "type": "string",
          "description": "[Output-only, Beta] Expected number of iterations for the create model query job specified as num_iterations in the input query. The actual total number of iterations may be less than this number due to early stop."
        }
      },
      "type": "object",
      "required": [
        "currentIteration",
        "expectedTotalIterations"
      ]
    },
    "google-native:bigquery/v2:BigtableColumn": {
      "properties": {
        "encoding": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "fieldName": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "onlyReadLatest": {
          "type": "boolean",
          "description": "[Optional] 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."
        },
        "qualifierEncoded": {
          "type": "string",
          "description": "[Required] 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 qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. 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 field_name."
        },
        "qualifierString": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "description": "[Optional] 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 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."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:BigtableColumnFamily": {
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BigtableColumn"
          },
          "description": "[Optional] Lists 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."
        },
        "encoding": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "familyId": {
          "type": "string",
          "description": "Identifier of the column family."
        },
        "onlyReadLatest": {
          "type": "boolean",
          "description": "[Optional] 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."
        },
        "type": {
          "type": "string",
          "description": "[Optional] 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 Default type is BYTES. This can be overridden for a specific column by listing that column in 'columns' and specifying a type for it."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:BigtableColumnFamilyResponse": {
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BigtableColumnResponse"
          },
          "description": "[Optional] Lists 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."
        },
        "encoding": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "familyId": {
          "type": "string",
          "description": "Identifier of the column family."
        },
        "onlyReadLatest": {
          "type": "boolean",
          "description": "[Optional] 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."
        },
        "type": {
          "type": "string",
          "description": "[Optional] 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 Default type is BYTES. This can be overridden for a specific column by listing that column in 'columns' and specifying a type for it."
        }
      },
      "type": "object",
      "required": [
        "columns",
        "encoding",
        "familyId",
        "onlyReadLatest",
        "type"
      ]
    },
    "google-native:bigquery/v2:BigtableColumnResponse": {
      "properties": {
        "encoding": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "fieldName": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "onlyReadLatest": {
          "type": "boolean",
          "description": "[Optional] 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."
        },
        "qualifierEncoded": {
          "type": "string",
          "description": "[Required] 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 qualifier_string field. Otherwise, a base-64 encoded value must be set to qualifier_encoded. 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 field_name."
        },
        "qualifierString": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "description": "[Optional] 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 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."
        }
      },
      "type": "object",
      "required": [
        "encoding",
        "fieldName",
        "onlyReadLatest",
        "qualifierEncoded",
        "qualifierString",
        "type"
      ]
    },
    "google-native:bigquery/v2:BigtableOptions": {
      "properties": {
        "columnFamilies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BigtableColumnFamily"
          },
          "description": "[Optional] 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."
        },
        "ignoreUnspecifiedColumnFamilies": {
          "type": "boolean",
          "description": "[Optional] 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."
        },
        "readRowkeyAsString": {
          "type": "boolean",
          "description": "[Optional] 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."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:BigtableOptionsResponse": {
      "properties": {
        "columnFamilies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BigtableColumnFamilyResponse"
          },
          "description": "[Optional] 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."
        },
        "ignoreUnspecifiedColumnFamilies": {
          "type": "boolean",
          "description": "[Optional] 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."
        },
        "readRowkeyAsString": {
          "type": "boolean",
          "description": "[Optional] 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."
        }
      },
      "type": "object",
      "required": [
        "columnFamilies",
        "ignoreUnspecifiedColumnFamilies",
        "readRowkeyAsString"
      ]
    },
    "google-native:bigquery/v2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:bigquery%2Fv2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:bigquery/v2:BqmlIterationResult": {
      "properties": {
        "durationMs": {
          "type": "string",
          "description": "[Output-only, Beta] Time taken to run the training iteration in milliseconds."
        },
        "evalLoss": {
          "type": "number",
          "description": "[Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows."
        },
        "index": {
          "type": "integer",
          "description": "[Output-only, Beta] Index of the ML training iteration, starting from zero for each training run."
        },
        "learnRate": {
          "type": "number",
          "description": "[Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant."
        },
        "trainingLoss": {
          "type": "number",
          "description": "[Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:BqmlIterationResultResponse": {
      "properties": {
        "durationMs": {
          "type": "string",
          "description": "[Output-only, Beta] Time taken to run the training iteration in milliseconds."
        },
        "evalLoss": {
          "type": "number",
          "description": "[Output-only, Beta] Eval loss computed on the eval data at the end of the iteration. The eval loss is used for early stopping to avoid overfitting. No eval loss if eval_split_method option is specified as no_split or auto_split with input data size less than 500 rows."
        },
        "index": {
          "type": "integer",
          "description": "[Output-only, Beta] Index of the ML training iteration, starting from zero for each training run."
        },
        "learnRate": {
          "type": "number",
          "description": "[Output-only, Beta] Learning rate used for this iteration, it varies for different training iterations if learn_rate_strategy option is not constant."
        },
        "trainingLoss": {
          "type": "number",
          "description": "[Output-only, Beta] Training loss computed on the training data at the end of the iteration. The training loss function is defined by model type."
        }
      },
      "type": "object",
      "required": [
        "durationMs",
        "evalLoss",
        "index",
        "learnRate",
        "trainingLoss"
      ]
    },
    "google-native:bigquery/v2:BqmlTrainingRun": {
      "properties": {
        "iterationResults": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BqmlIterationResult"
          },
          "description": "[Output-only, Beta] List of each iteration results."
        },
        "startTime": {
          "type": "string",
          "description": "[Output-only, Beta] Training run start time in milliseconds since the epoch."
        },
        "state": {
          "type": "string",
          "description": "[Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user."
        },
        "trainingOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:BqmlTrainingRunTrainingOptions",
          "description": "[Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:BqmlTrainingRunResponse": {
      "properties": {
        "iterationResults": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BqmlIterationResultResponse"
          },
          "description": "[Output-only, Beta] List of each iteration results."
        },
        "startTime": {
          "type": "string",
          "description": "[Output-only, Beta] Training run start time in milliseconds since the epoch."
        },
        "state": {
          "type": "string",
          "description": "[Output-only, Beta] Different state applicable for a training run. IN PROGRESS: Training run is in progress. FAILED: Training run ended due to a non-retryable failure. SUCCEEDED: Training run successfully completed. CANCELLED: Training run cancelled by the user."
        },
        "trainingOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:BqmlTrainingRunTrainingOptionsResponse",
          "description": "[Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run."
        }
      },
      "type": "object",
      "required": [
        "iterationResults",
        "startTime",
        "state",
        "trainingOptions"
      ]
    },
    "google-native:bigquery/v2:BqmlTrainingRunTrainingOptions": {
      "description": "[Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.",
      "properties": {
        "earlyStop": {
          "type": "boolean"
        },
        "l1Reg": {
          "type": "number"
        },
        "l2Reg": {
          "type": "number"
        },
        "learnRate": {
          "type": "number"
        },
        "learnRateStrategy": {
          "type": "string"
        },
        "lineSearchInitLearnRate": {
          "type": "number"
        },
        "maxIteration": {
          "type": "string"
        },
        "minRelProgress": {
          "type": "number"
        },
        "warmStart": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:BqmlTrainingRunTrainingOptionsResponse": {
      "description": "[Output-only, Beta] Training options used by this training run. These options are mutable for subsequent training runs. Default values are explicitly stored for options not specified in the input query of the first training run. For subsequent training runs, any option not explicitly specified in the input query will be copied from the previous training run.",
      "properties": {
        "earlyStop": {
          "type": "boolean"
        },
        "l1Reg": {
          "type": "number"
        },
        "l2Reg": {
          "type": "number"
        },
        "learnRate": {
          "type": "number"
        },
        "learnRateStrategy": {
          "type": "string"
        },
        "lineSearchInitLearnRate": {
          "type": "number"
        },
        "maxIteration": {
          "type": "string"
        },
        "minRelProgress": {
          "type": "number"
        },
        "warmStart": {
          "type": "boolean"
        }
      },
      "type": "object",
      "required": [
        "earlyStop",
        "l1Reg",
        "l2Reg",
        "learnRate",
        "learnRateStrategy",
        "lineSearchInitLearnRate",
        "maxIteration",
        "minRelProgress",
        "warmStart"
      ]
    },
    "google-native:bigquery/v2:CloneDefinitionResponse": {
      "properties": {
        "baseTableReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Required] Reference describing the ID of the table that was cloned."
        },
        "cloneTime": {
          "type": "string",
          "description": "[Required] The time at which the base table was cloned. This value is reported in the JSON response using RFC3339 format."
        }
      },
      "type": "object",
      "required": [
        "baseTableReference",
        "cloneTime"
      ]
    },
    "google-native:bigquery/v2:Clustering": {
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ClusteringResponse": {
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Repeated] One or more fields on which data should be clustered. Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data."
        }
      },
      "type": "object",
      "required": [
        "fields"
      ]
    },
    "google-native:bigquery/v2:ConnectionProperty": {
      "properties": {
        "key": {
          "type": "string",
          "description": "[Required] Name of the connection property to set."
        },
        "value": {
          "type": "string",
          "description": "[Required] Value of the connection property."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ConnectionPropertyResponse": {
      "properties": {
        "key": {
          "type": "string",
          "description": "[Required] Name of the connection property to set."
        },
        "value": {
          "type": "string",
          "description": "[Required] Value of the connection property."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:bigquery/v2:CsvOptions": {
      "properties": {
        "allowJaggedRows": {
          "type": "boolean",
          "description": "[Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing 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."
        },
        "allowQuotedNewlines": {
          "type": "boolean",
          "description": "[Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false."
        },
        "encoding": {
          "type": "string",
          "description": "[Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties."
        },
        "fieldDelimiter": {
          "type": "string",
          "description": "[Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence \"\\t\" to specify a tab separator. The default value is a comma (',')."
        },
        "nullMarker": {
          "type": "string",
          "description": "[Optional] An custom string that will represent a NULL value in CSV import data."
        },
        "preserveAsciiControlCharacters": {
          "type": "boolean",
          "description": "[Optional] Preserves the embedded ASCII control characters (the first 32 characters in the ASCII-table, from '\\x00' to '\\x1F') when loading from CSV. Only applicable to CSV, ignored for other formats."
        },
        "quote": {
          "type": "string",
          "description": "[Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote ('\"'). 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 allowQuotedNewlines property to true."
        },
        "skipLeadingRows": {
          "type": "string",
          "description": "[Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N > 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:CsvOptionsResponse": {
      "properties": {
        "allowJaggedRows": {
          "type": "boolean",
          "description": "[Optional] Indicates if BigQuery should accept rows that are missing trailing optional columns. If true, BigQuery treats missing trailing columns as null values. If false, records with missing trailing 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."
        },
        "allowQuotedNewlines": {
          "type": "boolean",
          "description": "[Optional] Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false."
        },
        "encoding": {
          "type": "string",
          "description": "[Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties."
        },
        "fieldDelimiter": {
          "type": "string",
          "description": "[Optional] The separator for fields in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence \"\\t\" to specify a tab separator. The default value is a comma (',')."
        },
        "nullMarker": {
          "type": "string",
          "description": "[Optional] An custom string that will represent a NULL value in CSV import data."
        },
        "preserveAsciiControlCharacters": {
          "type": "boolean",
          "description": "[Optional] Preserves the embedded ASCII control characters (the first 32 characters in the ASCII-table, from '\\x00' to '\\x1F') when loading from CSV. Only applicable to CSV, ignored for other formats."
        },
        "quote": {
          "type": "string",
          "description": "[Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote ('\"'). 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 allowQuotedNewlines property to true."
        },
        "skipLeadingRows": {
          "type": "string",
          "description": "[Optional] The number of rows at the top of a CSV file that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped. When autodetect is on, the behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N > 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema."
        }
      },
      "type": "object",
      "required": [
        "allowJaggedRows",
        "allowQuotedNewlines",
        "encoding",
        "fieldDelimiter",
        "nullMarker",
        "preserveAsciiControlCharacters",
        "quote",
        "skipLeadingRows"
      ]
    },
    "google-native:bigquery/v2:DataMaskingStatisticsResponse": {
      "properties": {
        "dataMaskingApplied": {
          "type": "boolean",
          "description": "[Preview] Whether any accessed data was protected by data masking. The actual evaluation is done by accessStats.masked_field_count > 0. Since this is only used for the discovery_doc generation purpose, as long as the type (boolean) matches, client library can leverage this. The actual evaluation of the variable is done else-where."
        }
      },
      "type": "object",
      "required": [
        "dataMaskingApplied"
      ]
    },
    "google-native:bigquery/v2:DatasetAccessEntry": {
      "properties": {
        "dataset": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetReference",
          "description": "[Required] The dataset this entry applies to."
        },
        "targetTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:DatasetAccessEntryTargetTypesItem"
          }
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:DatasetAccessEntryResponse": {
      "properties": {
        "dataset": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetReferenceResponse",
          "description": "[Required] The dataset this entry applies to."
        },
        "targetTypes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "dataset",
        "targetTypes"
      ]
    },
    "google-native:bigquery/v2:DatasetAccessEntryTargetTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "TargetTypeUnspecified",
          "description": "Do not use. You must set a target type explicitly.",
          "value": "TARGET_TYPE_UNSPECIFIED"
        },
        {
          "name": "Views",
          "description": "This entry applies to views in the dataset.",
          "value": "VIEWS"
        },
        {
          "name": "Routines",
          "description": "This entry applies to routines in the dataset.",
          "value": "ROUTINES"
        }
      ]
    },
    "google-native:bigquery/v2:DatasetAccessItem": {
      "properties": {
        "dataset": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetAccessEntry",
          "description": "[Pick one] A grant authorizing all resources of a particular type in a particular dataset access to this dataset. Only views are supported for now. The role field is not required when this field is set. If that dataset is deleted and re-created, its access needs to be granted again via an update operation."
        },
        "domain": {
          "type": "string",
          "description": "[Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: \"example.com\". Maps to IAM policy member \"domain:DOMAIN\"."
        },
        "groupByEmail": {
          "type": "string",
          "description": "[Pick one] An email address of a Google Group to grant access to. Maps to IAM policy member \"group:GROUP\"."
        },
        "iamMember": {
          "type": "string",
          "description": "[Pick one] Some other type of member that appears in the IAM Policy but isn't a user, group, domain, or special group."
        },
        "role": {
          "type": "string",
          "description": "[Required] An IAM role ID that should be granted to the user, group, or domain specified in this access entry. The following legacy mappings will be applied: OWNER  roles/bigquery.dataOwner WRITER  roles/bigquery.dataEditor READER  roles/bigquery.dataViewer This field will accept any of the above formats, but will return only the legacy format. For example, if you set this field to \"roles/bigquery.dataOwner\", it will be returned back as \"OWNER\"."
        },
        "routine": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineReference",
          "description": "[Pick one] A routine from a different dataset to grant access to. Queries executed against that routine will have read access to views/tables/routines in this dataset. Only UDF is supported for now. The role field is not required when this field is set. If that routine is updated by any user, access to the routine needs to be granted again via an update operation."
        },
        "specialGroup": {
          "type": "string",
          "description": "[Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users. Maps to similarly-named IAM members."
        },
        "userByEmail": {
          "type": "string",
          "description": "[Pick one] An email address of a user to grant access to. For example: fred@example.com. Maps to IAM policy member \"user:EMAIL\" or \"serviceAccount:EMAIL\"."
        },
        "view": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReference",
          "description": "[Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:DatasetAccessItemResponse": {
      "properties": {
        "dataset": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetAccessEntryResponse",
          "description": "[Pick one] A grant authorizing all resources of a particular type in a particular dataset access to this dataset. Only views are supported for now. The role field is not required when this field is set. If that dataset is deleted and re-created, its access needs to be granted again via an update operation."
        },
        "domain": {
          "type": "string",
          "description": "[Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: \"example.com\". Maps to IAM policy member \"domain:DOMAIN\"."
        },
        "groupByEmail": {
          "type": "string",
          "description": "[Pick one] An email address of a Google Group to grant access to. Maps to IAM policy member \"group:GROUP\"."
        },
        "iamMember": {
          "type": "string",
          "description": "[Pick one] Some other type of member that appears in the IAM Policy but isn't a user, group, domain, or special group."
        },
        "role": {
          "type": "string",
          "description": "[Required] An IAM role ID that should be granted to the user, group, or domain specified in this access entry. The following legacy mappings will be applied: OWNER  roles/bigquery.dataOwner WRITER  roles/bigquery.dataEditor READER  roles/bigquery.dataViewer This field will accept any of the above formats, but will return only the legacy format. For example, if you set this field to \"roles/bigquery.dataOwner\", it will be returned back as \"OWNER\"."
        },
        "routine": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineReferenceResponse",
          "description": "[Pick one] A routine from a different dataset to grant access to. Queries executed against that routine will have read access to views/tables/routines in this dataset. Only UDF is supported for now. The role field is not required when this field is set. If that routine is updated by any user, access to the routine needs to be granted again via an update operation."
        },
        "specialGroup": {
          "type": "string",
          "description": "[Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users. Maps to similarly-named IAM members."
        },
        "userByEmail": {
          "type": "string",
          "description": "[Pick one] An email address of a user to grant access to. For example: fred@example.com. Maps to IAM policy member \"user:EMAIL\" or \"serviceAccount:EMAIL\"."
        },
        "view": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Pick one] A view from a different dataset to grant access to. Queries executed against that view will have read access to tables in this dataset. The role field is not required when this field is set. If that view is updated by any user, access to the view needs to be granted again via an update operation."
        }
      },
      "type": "object",
      "required": [
        "dataset",
        "domain",
        "groupByEmail",
        "iamMember",
        "role",
        "routine",
        "specialGroup",
        "userByEmail",
        "view"
      ]
    },
    "google-native:bigquery/v2:DatasetReference": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "[Required] 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."
        },
        "project": {
          "type": "string",
          "description": "[Optional] The ID of the project containing this dataset."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:DatasetReferenceResponse": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "[Required] 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."
        },
        "project": {
          "type": "string",
          "description": "[Optional] The ID of the project containing this dataset."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "project"
      ]
    },
    "google-native:bigquery/v2:DatasetTagsItem": {
      "properties": {
        "tagKey": {
          "type": "string",
          "description": "[Required] The namespaced friendly name of the tag key, e.g. \"12345/environment\" where 12345 is org id."
        },
        "tagValue": {
          "type": "string",
          "description": "[Required] Friendly short name of the tag value, e.g. \"production\"."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:DatasetTagsItemResponse": {
      "properties": {
        "tagKey": {
          "type": "string",
          "description": "[Required] The namespaced friendly name of the tag key, e.g. \"12345/environment\" where 12345 is org id."
        },
        "tagValue": {
          "type": "string",
          "description": "[Required] Friendly short name of the tag value, e.g. \"production\"."
        }
      },
      "type": "object",
      "required": [
        "tagKey",
        "tagValue"
      ]
    },
    "google-native:bigquery/v2:DestinationTableProperties": {
      "properties": {
        "description": {
          "type": "string",
          "description": "[Optional] The description for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current description is provided, the job will fail."
        },
        "expirationTime": {
          "type": "string",
          "description": "[Internal] This field is for Google internal use only."
        },
        "friendlyName": {
          "type": "string",
          "description": "[Optional] The friendly name for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current friendly name is provided, the job will fail."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Optional] The labels associated with this table. You can use these to organize and group your tables. This will only be used if the destination table is newly created. If the table already exists and labels are different than the current labels are provided, the job will fail."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:DestinationTablePropertiesResponse": {
      "properties": {
        "description": {
          "type": "string",
          "description": "[Optional] The description for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current description is provided, the job will fail."
        },
        "expirationTime": {
          "type": "string",
          "description": "[Internal] This field is for Google internal use only."
        },
        "friendlyName": {
          "type": "string",
          "description": "[Optional] The friendly name for the destination table. This will only be used if the destination table is newly created. If the table already exists and a value different than the current friendly name is provided, the job will fail."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Optional] The labels associated with this table. You can use these to organize and group your tables. This will only be used if the destination table is newly created. If the table already exists and labels are different than the current labels are provided, the job will fail."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expirationTime",
        "friendlyName",
        "labels"
      ]
    },
    "google-native:bigquery/v2:DmlStatisticsResponse": {
      "properties": {
        "deletedRowCount": {
          "type": "string",
          "description": "Number of deleted Rows. populated by DML DELETE, MERGE and TRUNCATE statements."
        },
        "insertedRowCount": {
          "type": "string",
          "description": "Number of inserted Rows. Populated by DML INSERT and MERGE statements."
        },
        "updatedRowCount": {
          "type": "string",
          "description": "Number of updated Rows. Populated by DML UPDATE and MERGE statements."
        }
      },
      "type": "object",
      "required": [
        "deletedRowCount",
        "insertedRowCount",
        "updatedRowCount"
      ]
    },
    "google-native:bigquery/v2:EncryptionConfiguration": {
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:EncryptionConfigurationResponse": {
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:bigquery/v2:ErrorProtoResponse": {
      "properties": {
        "debugInfo": {
          "type": "string",
          "description": "Debugging information. This property is internal to Google and should not be used."
        },
        "location": {
          "type": "string",
          "description": "Specifies where the error occurred, if present."
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the error."
        },
        "reason": {
          "type": "string",
          "description": "A short error code that summarizes the error."
        }
      },
      "type": "object",
      "required": [
        "debugInfo",
        "location",
        "message",
        "reason"
      ]
    },
    "google-native:bigquery/v2:ExplainQueryStageResponse": {
      "properties": {
        "completedParallelInputs": {
          "type": "string",
          "description": "Number of parallel input segments completed."
        },
        "computeMsAvg": {
          "type": "string",
          "description": "Milliseconds the average shard spent on CPU-bound tasks."
        },
        "computeMsMax": {
          "type": "string",
          "description": "Milliseconds the slowest shard spent on CPU-bound tasks."
        },
        "computeRatioAvg": {
          "type": "number",
          "description": "Relative amount of time the average shard spent on CPU-bound tasks."
        },
        "computeRatioMax": {
          "type": "number",
          "description": "Relative amount of time the slowest shard spent on CPU-bound tasks."
        },
        "endMs": {
          "type": "string",
          "description": "Stage end time represented as milliseconds since epoch."
        },
        "inputStages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IDs for stages that are inputs to this stage."
        },
        "name": {
          "type": "string",
          "description": "Human-readable name for stage."
        },
        "parallelInputs": {
          "type": "string",
          "description": "Number of parallel input segments to be processed."
        },
        "readMsAvg": {
          "type": "string",
          "description": "Milliseconds the average shard spent reading input."
        },
        "readMsMax": {
          "type": "string",
          "description": "Milliseconds the slowest shard spent reading input."
        },
        "readRatioAvg": {
          "type": "number",
          "description": "Relative amount of time the average shard spent reading input."
        },
        "readRatioMax": {
          "type": "number",
          "description": "Relative amount of time the slowest shard spent reading input."
        },
        "recordsRead": {
          "type": "string",
          "description": "Number of records read into the stage."
        },
        "recordsWritten": {
          "type": "string",
          "description": "Number of records written by the stage."
        },
        "shuffleOutputBytes": {
          "type": "string",
          "description": "Total number of bytes written to shuffle."
        },
        "shuffleOutputBytesSpilled": {
          "type": "string",
          "description": "Total number of bytes written to shuffle and spilled to disk."
        },
        "slotMs": {
          "type": "string",
          "description": "Slot-milliseconds used by the stage."
        },
        "startMs": {
          "type": "string",
          "description": "Stage start time represented as milliseconds since epoch."
        },
        "status": {
          "type": "string",
          "description": "Current status for the stage."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ExplainQueryStepResponse"
          },
          "description": "List of operations within the stage in dependency order (approximately chronological)."
        },
        "waitMsAvg": {
          "type": "string",
          "description": "Milliseconds the average shard spent waiting to be scheduled."
        },
        "waitMsMax": {
          "type": "string",
          "description": "Milliseconds the slowest shard spent waiting to be scheduled."
        },
        "waitRatioAvg": {
          "type": "number",
          "description": "Relative amount of time the average shard spent waiting to be scheduled."
        },
        "waitRatioMax": {
          "type": "number",
          "description": "Relative amount of time the slowest shard spent waiting to be scheduled."
        },
        "writeMsAvg": {
          "type": "string",
          "description": "Milliseconds the average shard spent on writing output."
        },
        "writeMsMax": {
          "type": "string",
          "description": "Milliseconds the slowest shard spent on writing output."
        },
        "writeRatioAvg": {
          "type": "number",
          "description": "Relative amount of time the average shard spent on writing output."
        },
        "writeRatioMax": {
          "type": "number",
          "description": "Relative amount of time the slowest shard spent on writing output."
        }
      },
      "type": "object",
      "required": [
        "completedParallelInputs",
        "computeMsAvg",
        "computeMsMax",
        "computeRatioAvg",
        "computeRatioMax",
        "endMs",
        "inputStages",
        "name",
        "parallelInputs",
        "readMsAvg",
        "readMsMax",
        "readRatioAvg",
        "readRatioMax",
        "recordsRead",
        "recordsWritten",
        "shuffleOutputBytes",
        "shuffleOutputBytesSpilled",
        "slotMs",
        "startMs",
        "status",
        "steps",
        "waitMsAvg",
        "waitMsMax",
        "waitRatioAvg",
        "waitRatioMax",
        "writeMsAvg",
        "writeMsMax",
        "writeRatioAvg",
        "writeRatioMax"
      ]
    },
    "google-native:bigquery/v2:ExplainQueryStepResponse": {
      "properties": {
        "kind": {
          "type": "string",
          "description": "Machine-readable operation type."
        },
        "substeps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Human-readable stage descriptions."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "substeps"
      ]
    },
    "google-native:bigquery/v2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:bigquery/v2:ExternalDataConfiguration": {
      "properties": {
        "autodetect": {
          "type": "boolean",
          "description": "Try to detect schema and format options automatically. Any option specified explicitly will be honored."
        },
        "avroOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:AvroOptions",
          "description": "Additional properties to set if sourceFormat is set to Avro."
        },
        "bigtableOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:BigtableOptions",
          "description": "[Optional] Additional options if sourceFormat is set to BIGTABLE."
        },
        "compression": {
          "type": "string",
          "description": "[Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats."
        },
        "connectionId": {
          "type": "string",
          "description": "[Optional, Trusted Tester] Connection for external data source."
        },
        "csvOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:CsvOptions",
          "description": "Additional properties to set if sourceFormat is set to CSV."
        },
        "decimalTargetTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Optional] 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. Example: Suppose the value of this field is [\"NUMERIC\", \"BIGNUMERIC\"]. If (precision,scale) is: (38,9) -> NUMERIC; (39,9) -> BIGNUMERIC (NUMERIC cannot hold 30 integer digits); (38,10) -> BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); (76,38) -> BIGNUMERIC; (77,38) -> BIGNUMERIC (error if value exeeds supported range). This 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. Defaults to [\"NUMERIC\", \"STRING\"] for ORC and [\"NUMERIC\"] for the other file formats."
        },
        "fileSetSpecType": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "googleSheetsOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:GoogleSheetsOptions",
          "description": "[Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS."
        },
        "hivePartitioningOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:HivePartitioningOptions",
          "description": "[Optional] Options to configure hive partitioning support."
        },
        "ignoreUnknownValues": {
          "type": "boolean",
          "description": "[Optional] 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. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don't match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored."
        },
        "jsonOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JsonOptions",
          "description": "Additional properties to set if `sourceFormat` is set to `NEWLINE_DELIMITED_JSON`."
        },
        "maxBadRecords": {
          "type": "integer",
          "description": "[Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats."
        },
        "metadataCacheMode": {
          "type": "string",
          "description": "[Optional] Metadata Cache Mode for the table. Set this to enable caching of metadata from external data source."
        },
        "objectMetadata": {
          "type": "string",
          "description": "ObjectMetadata is used to create Object Tables. Object Tables contain a listing of objects (with their metadata) found at the source_uris. If ObjectMetadata is set, source_format should be omitted. Currently SIMPLE is the only supported Object Metadata type."
        },
        "parquetOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ParquetOptions",
          "description": "Additional properties to set if sourceFormat is set to Parquet."
        },
        "referenceFileSchemaUri": {
          "type": "string",
          "description": "[Optional] Provide a referencing file with the expected table schema. Enabled for the format: AVRO, PARQUET, ORC."
        },
        "schema": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableSchema",
          "description": "[Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats."
        },
        "sourceFormat": {
          "type": "string",
          "description": "[Required] The data format. For CSV files, specify \"CSV\". For Google sheets, specify \"GOOGLE_SHEETS\". For newline-delimited JSON, specify \"NEWLINE_DELIMITED_JSON\". For Avro files, specify \"AVRO\". For Google Cloud Datastore backups, specify \"DATASTORE_BACKUP\". [Beta] For Google Cloud Bigtable, specify \"BIGTABLE\"."
        },
        "sourceUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one '*' wildcard character and it must come after the 'bucket' name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the '*' wildcard character is not allowed."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ExternalDataConfigurationResponse": {
      "properties": {
        "autodetect": {
          "type": "boolean",
          "description": "Try to detect schema and format options automatically. Any option specified explicitly will be honored."
        },
        "avroOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:AvroOptionsResponse",
          "description": "Additional properties to set if sourceFormat is set to Avro."
        },
        "bigtableOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:BigtableOptionsResponse",
          "description": "[Optional] Additional options if sourceFormat is set to BIGTABLE."
        },
        "compression": {
          "type": "string",
          "description": "[Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats."
        },
        "connectionId": {
          "type": "string",
          "description": "[Optional, Trusted Tester] Connection for external data source."
        },
        "csvOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:CsvOptionsResponse",
          "description": "Additional properties to set if sourceFormat is set to CSV."
        },
        "decimalTargetTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Optional] 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. Example: Suppose the value of this field is [\"NUMERIC\", \"BIGNUMERIC\"]. If (precision,scale) is: (38,9) -> NUMERIC; (39,9) -> BIGNUMERIC (NUMERIC cannot hold 30 integer digits); (38,10) -> BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); (76,38) -> BIGNUMERIC; (77,38) -> BIGNUMERIC (error if value exeeds supported range). This 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. Defaults to [\"NUMERIC\", \"STRING\"] for ORC and [\"NUMERIC\"] for the other file formats."
        },
        "fileSetSpecType": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "googleSheetsOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:GoogleSheetsOptionsResponse",
          "description": "[Optional] Additional options if sourceFormat is set to GOOGLE_SHEETS."
        },
        "hivePartitioningOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:HivePartitioningOptionsResponse",
          "description": "[Optional] Options to configure hive partitioning support."
        },
        "ignoreUnknownValues": {
          "type": "boolean",
          "description": "[Optional] 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. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don't match any column names Google Cloud Bigtable: This setting is ignored. Google Cloud Datastore backups: This setting is ignored. Avro: This setting is ignored."
        },
        "jsonOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JsonOptionsResponse",
          "description": "Additional properties to set if `sourceFormat` is set to `NEWLINE_DELIMITED_JSON`."
        },
        "maxBadRecords": {
          "type": "integer",
          "description": "[Optional] The maximum number of bad records that BigQuery can ignore when reading data. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV, JSON, and Google Sheets. The default value is 0, which requires that all records are valid. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats."
        },
        "metadataCacheMode": {
          "type": "string",
          "description": "[Optional] Metadata Cache Mode for the table. Set this to enable caching of metadata from external data source."
        },
        "objectMetadata": {
          "type": "string",
          "description": "ObjectMetadata is used to create Object Tables. Object Tables contain a listing of objects (with their metadata) found at the source_uris. If ObjectMetadata is set, source_format should be omitted. Currently SIMPLE is the only supported Object Metadata type."
        },
        "parquetOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ParquetOptionsResponse",
          "description": "Additional properties to set if sourceFormat is set to Parquet."
        },
        "referenceFileSchemaUri": {
          "type": "string",
          "description": "[Optional] Provide a referencing file with the expected table schema. Enabled for the format: AVRO, PARQUET, ORC."
        },
        "schema": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableSchemaResponse",
          "description": "[Optional] The schema for the data. Schema is required for CSV and JSON formats. Schema is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats."
        },
        "sourceFormat": {
          "type": "string",
          "description": "[Required] The data format. For CSV files, specify \"CSV\". For Google sheets, specify \"GOOGLE_SHEETS\". For newline-delimited JSON, specify \"NEWLINE_DELIMITED_JSON\". For Avro files, specify \"AVRO\". For Google Cloud Datastore backups, specify \"DATASTORE_BACKUP\". [Beta] For Google Cloud Bigtable, specify \"BIGTABLE\"."
        },
        "sourceUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one '*' wildcard character and it must come after the 'bucket' name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups, exactly one URI can be specified. Also, the '*' wildcard character is not allowed."
        }
      },
      "type": "object",
      "required": [
        "autodetect",
        "avroOptions",
        "bigtableOptions",
        "compression",
        "connectionId",
        "csvOptions",
        "decimalTargetTypes",
        "fileSetSpecType",
        "googleSheetsOptions",
        "hivePartitioningOptions",
        "ignoreUnknownValues",
        "jsonOptions",
        "maxBadRecords",
        "metadataCacheMode",
        "objectMetadata",
        "parquetOptions",
        "referenceFileSchemaUri",
        "schema",
        "sourceFormat",
        "sourceUris"
      ]
    },
    "google-native:bigquery/v2:ExternalDatasetReference": {
      "properties": {
        "connection": {
          "type": "string",
          "description": "[Required] The connection id that is used to access the external_source. Format: projects/{project_id}/locations/{location_id}/connections/{connection_id}"
        },
        "externalSource": {
          "type": "string",
          "description": "[Required] External source that backs this dataset."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ExternalDatasetReferenceResponse": {
      "properties": {
        "connection": {
          "type": "string",
          "description": "[Required] The connection id that is used to access the external_source. Format: projects/{project_id}/locations/{location_id}/connections/{connection_id}"
        },
        "externalSource": {
          "type": "string",
          "description": "[Required] External source that backs this dataset."
        }
      },
      "type": "object",
      "required": [
        "connection",
        "externalSource"
      ]
    },
    "google-native:bigquery/v2:GoogleSheetsOptions": {
      "properties": {
        "range": {
          "type": "string",
          "description": "[Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20"
        },
        "skipLeadingRows": {
          "type": "string",
          "description": "[Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N > 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:GoogleSheetsOptionsResponse": {
      "properties": {
        "range": {
          "type": "string",
          "description": "[Optional] Range of a sheet to query from. Only used when non-empty. Typical format: sheet_name!top_left_cell_id:bottom_right_cell_id For example: sheet1!A1:B20"
        },
        "skipLeadingRows": {
          "type": "string",
          "description": "[Optional] The number of rows at the top of a sheet that BigQuery will skip when reading the data. The default value is 0. This property is useful if you have header rows that should be skipped. When autodetect is on, behavior is the following: * skipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row. * skipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row. * skipLeadingRows = N > 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected, row N is just skipped. Otherwise row N is used to extract column names for the detected schema."
        }
      },
      "type": "object",
      "required": [
        "range",
        "skipLeadingRows"
      ]
    },
    "google-native:bigquery/v2:HivePartitioningOptions": {
      "properties": {
        "mode": {
          "type": "string",
          "description": "[Optional] When set, what mode of hive partitioning to use when reading data. The following modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. (3) CUSTOM: partition key schema is encoded in the source URI prefix. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet."
        },
        "requirePartitionFilter": {
          "type": "boolean",
          "description": "[Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail."
        },
        "sourceUriPrefix": {
          "type": "string",
          "description": "[Optional] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter)."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:HivePartitioningOptionsResponse": {
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "For permanent external tables, this field is populated with the hive partition keys in the order they were inferred. The types of the partition keys can be deduced by checking the table schema (which will include the partition keys). Not every API will populate this field in the output. For example, Tables.Get will populate it, but Tables.List will not contain this field."
        },
        "mode": {
          "type": "string",
          "description": "[Optional] When set, what mode of hive partitioning to use when reading data. The following modes are supported. (1) AUTO: automatically infer partition key name(s) and type(s). (2) STRINGS: automatically infer partition key name(s). All types are interpreted as strings. (3) CUSTOM: partition key schema is encoded in the source URI prefix. Not all storage formats support hive partitioning. Requesting hive partitioning on an unsupported format will lead to an error. Currently supported types include: AVRO, CSV, JSON, ORC and Parquet."
        },
        "requirePartitionFilter": {
          "type": "boolean",
          "description": "[Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified. Note that this field should only be true when creating a permanent external table or querying a temporary external table. Hive-partitioned loads with requirePartitionFilter explicitly set to true will fail."
        },
        "sourceUriPrefix": {
          "type": "string",
          "description": "[Optional] When hive partition detection is requested, a common prefix for all source uris should be supplied. The prefix must end immediately before the partition key encoding begins. For example, consider files following this data layout. gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro When hive partitioning is requested with either AUTO or STRINGS detection, the common prefix can be either of gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing slash does not matter)."
        }
      },
      "type": "object",
      "required": [
        "fields",
        "mode",
        "requirePartitionFilter",
        "sourceUriPrefix"
      ]
    },
    "google-native:bigquery/v2:IndexUnusedReasonResponse": {
      "properties": {
        "baseTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "Specifies the base table involved in the reason that no search index was used."
        },
        "code": {
          "type": "string",
          "description": "Specifies the high-level reason for the scenario when no search index was used."
        },
        "indexName": {
          "type": "string",
          "description": "Specifies the name of the unused search index, if available."
        },
        "message": {
          "type": "string",
          "description": "Free form human-readable reason for the scenario when no search index was used."
        }
      },
      "type": "object",
      "required": [
        "baseTable",
        "code",
        "indexName",
        "message"
      ]
    },
    "google-native:bigquery/v2:IterationResultResponse": {
      "properties": {
        "durationMs": {
          "type": "string",
          "description": "Time taken to run the iteration in milliseconds."
        },
        "evalLoss": {
          "type": "number",
          "description": "Loss computed on the eval data at the end of iteration."
        },
        "index": {
          "type": "integer",
          "description": "Index of the iteration, 0 based."
        },
        "learnRate": {
          "type": "number",
          "description": "Learn rate used for this iteration."
        },
        "trainingLoss": {
          "type": "number",
          "description": "Loss computed on the training data at the end of iteration."
        }
      },
      "type": "object",
      "required": [
        "durationMs",
        "evalLoss",
        "index",
        "learnRate",
        "trainingLoss"
      ]
    },
    "google-native:bigquery/v2:JobConfiguration": {
      "properties": {
        "copy": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationTableCopy",
          "description": "[Pick one] Copies a table."
        },
        "dryRun": {
          "type": "boolean",
          "description": "[Optional] If set, don't actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn't a dry run. Behavior of non-query jobs is undefined."
        },
        "extract": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationExtract",
          "description": "[Pick one] Configures an extract job."
        },
        "jobTimeoutMs": {
          "type": "string",
          "description": "[Optional] Job timeout in milliseconds. If this time limit is exceeded, BigQuery may attempt to terminate the job."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this job. You can use these to organize and group your jobs. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and each label in the list must have a different key."
        },
        "load": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationLoad",
          "description": "[Pick one] Configures a load job."
        },
        "query": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationQuery",
          "description": "[Pick one] Configures a query job."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:JobConfigurationExtract": {
      "properties": {
        "compression": {
          "type": "string",
          "description": "[Optional] The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE. The default value is NONE. DEFLATE and SNAPPY are only supported for Avro. Not applicable when extracting models."
        },
        "destinationFormat": {
          "type": "string",
          "description": "[Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON, PARQUET or AVRO for tables and ML_TF_SAVED_MODEL or ML_XGBOOST_BOOSTER for models. The default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV. The default value for models is ML_TF_SAVED_MODEL."
        },
        "destinationUri": {
          "type": "string",
          "description": "[Pick one] DEPRECATED: Use destinationUris instead, passing only one URI as necessary. The fully-qualified Google Cloud Storage URI where the extracted table should be written."
        },
        "destinationUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Pick one] A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written."
        },
        "fieldDelimiter": {
          "type": "string",
          "description": "[Optional] Delimiter to use between fields in the exported data. Default is ','. Not applicable when extracting models."
        },
        "printHeader": {
          "type": "boolean",
          "description": "[Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models."
        },
        "sourceModel": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ModelReference",
          "description": "A reference to the model being exported."
        },
        "sourceTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReference",
          "description": "A reference to the table being exported."
        },
        "useAvroLogicalTypes": {
          "type": "boolean",
          "description": "[Optional] If destinationFormat is set to \"AVRO\", this flag indicates whether to enable extracting applicable column types (such as TIMESTAMP) to their corresponding AVRO logical types (timestamp-micros), instead of only using their raw types (avro-long). Not applicable when extracting models."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:JobConfigurationExtractResponse": {
      "properties": {
        "compression": {
          "type": "string",
          "description": "[Optional] The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE. The default value is NONE. DEFLATE and SNAPPY are only supported for Avro. Not applicable when extracting models."
        },
        "destinationFormat": {
          "type": "string",
          "description": "[Optional] The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON, PARQUET or AVRO for tables and ML_TF_SAVED_MODEL or ML_XGBOOST_BOOSTER for models. The default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV. The default value for models is ML_TF_SAVED_MODEL."
        },
        "destinationUri": {
          "type": "string",
          "description": "[Pick one] DEPRECATED: Use destinationUris instead, passing only one URI as necessary. The fully-qualified Google Cloud Storage URI where the extracted table should be written."
        },
        "destinationUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Pick one] A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written."
        },
        "fieldDelimiter": {
          "type": "string",
          "description": "[Optional] Delimiter to use between fields in the exported data. Default is ','. Not applicable when extracting models."
        },
        "printHeader": {
          "type": "boolean",
          "description": "[Optional] Whether to print out a header row in the results. Default is true. Not applicable when extracting models."
        },
        "sourceModel": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ModelReferenceResponse",
          "description": "A reference to the model being exported."
        },
        "sourceTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "A reference to the table being exported."
        },
        "useAvroLogicalTypes": {
          "type": "boolean",
          "description": "[Optional] If destinationFormat is set to \"AVRO\", this flag indicates whether to enable extracting applicable column types (such as TIMESTAMP) to their corresponding AVRO logical types (timestamp-micros), instead of only using their raw types (avro-long). Not applicable when extracting models."
        }
      },
      "type": "object",
      "required": [
        "compression",
        "destinationFormat",
        "destinationUri",
        "destinationUris",
        "fieldDelimiter",
        "printHeader",
        "sourceModel",
        "sourceTable",
        "useAvroLogicalTypes"
      ]
    },
    "google-native:bigquery/v2:JobConfigurationLoad": {
      "properties": {
        "allowJaggedRows": {
          "type": "boolean",
          "description": "[Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. If false, records with missing trailing 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. Only applicable to CSV, ignored for other formats."
        },
        "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."
        },
        "autodetect": {
          "type": "boolean",
          "description": "[Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources."
        },
        "clustering": {
          "$ref": "#/types/google-native:bigquery%2Fv2:Clustering",
          "description": "[Beta] Clustering specification for the destination table. Must be specified with time-based partitioning, data in the table will be first partitioned and subsequently clustered."
        },
        "connectionProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ConnectionProperty"
          },
          "description": "Connection properties."
        },
        "createDisposition": {
          "type": "string",
          "description": "[Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion."
        },
        "createSession": {
          "type": "boolean",
          "description": "If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs the load job in non-session mode."
        },
        "decimalTargetTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Optional] 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. Example: Suppose the value of this field is [\"NUMERIC\", \"BIGNUMERIC\"]. If (precision,scale) is: (38,9) -> NUMERIC; (39,9) -> BIGNUMERIC (NUMERIC cannot hold 30 integer digits); (38,10) -> BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); (76,38) -> BIGNUMERIC; (77,38) -> BIGNUMERIC (error if value exeeds supported range). This 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. Defaults to [\"NUMERIC\", \"STRING\"] for ORC and [\"NUMERIC\"] for the other file formats."
        },
        "destinationEncryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfiguration",
          "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
        },
        "destinationTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReference",
          "description": "[Required] The destination table to load the data into."
        },
        "destinationTableProperties": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DestinationTableProperties",
          "description": "[Beta] [Optional] Properties with which to create the destination table if it is new."
        },
        "encoding": {
          "type": "string",
          "description": "[Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties."
        },
        "fieldDelimiter": {
          "type": "string",
          "description": "[Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence \"\\t\" to specify a tab separator. The default value is a comma (',')."
        },
        "fileSetSpecType": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "hivePartitioningOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:HivePartitioningOptions",
          "description": "[Optional] Options to configure hive partitioning support."
        },
        "ignoreUnknownValues": {
          "type": "boolean",
          "description": "[Optional] 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. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don't match any column names"
        },
        "jsonExtension": {
          "type": "string",
          "description": "[Optional] If sourceFormat is set to newline-delimited JSON, indicates whether it should be processed as a JSON variant such as GeoJSON. For a sourceFormat other than JSON, omit this field. If the sourceFormat is newline-delimited JSON: - for newline-delimited GeoJSON: set to GEOJSON."
        },
        "maxBadRecords": {
          "type": "integer",
          "description": "[Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV and JSON. The default value is 0, which requires that all records are valid."
        },
        "nullMarker": {
          "type": "string",
          "description": "[Optional] Specifies a string that represents a null value in a CSV file. For example, if you specify \"\\N\", BigQuery interprets \"\\N\" as a null value when loading a CSV file. The default value is the empty string. If you set this property to a custom value, BigQuery throws an error if an empty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as an empty value."
        },
        "parquetOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ParquetOptions",
          "description": "[Optional] Options to configure parquet support."
        },
        "preserveAsciiControlCharacters": {
          "type": "boolean",
          "description": "[Optional] Preserves the embedded ASCII control characters (the first 32 characters in the ASCII-table, from '\\x00' to '\\x1F') when loading from CSV. Only applicable to CSV, ignored for other formats."
        },
        "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. Property names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties. If any named property isn't found in the Cloud Datastore backup, an invalid error is returned in the job result."
        },
        "quote": {
          "type": "string",
          "description": "[Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote ('\"'). 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 allowQuotedNewlines property to true."
        },
        "rangePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioning",
          "description": "[TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "referenceFileSchemaUri": {
          "type": "string",
          "description": "User provided referencing file with the expected reader schema, Available for the format: AVRO, PARQUET, ORC."
        },
        "schema": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableSchema",
          "description": "[Optional] The schema for the destination table. The schema can be omitted if the destination table already exists, or if you're loading data from Google Cloud Datastore."
        },
        "schemaInline": {
          "type": "string",
          "description": "[Deprecated] The inline schema. For CSV schemas, specify as \"Field1:Type1[,Field2:Type2]*\". For example, \"foo:STRING, bar:INTEGER, baz:FLOAT\".",
          "deprecationMessage": "[Deprecated] The inline schema. For CSV schemas, specify as \"Field1:Type1[,Field2:Type2]*\". For example, \"foo:STRING, bar:INTEGER, baz:FLOAT\"."
        },
        "schemaInlineFormat": {
          "type": "string",
          "description": "[Deprecated] The format of the schemaInline property.",
          "deprecationMessage": "[Deprecated] The format of the schemaInline property."
        },
        "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 supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable."
        },
        "skipLeadingRows": {
          "type": "integer",
          "description": "[Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped."
        },
        "sourceFormat": {
          "type": "string",
          "description": "[Optional] The format of the data files. For CSV files, specify \"CSV\". For datastore backups, specify \"DATASTORE_BACKUP\". For newline-delimited JSON, specify \"NEWLINE_DELIMITED_JSON\". For Avro, specify \"AVRO\". For parquet, specify \"PARQUET\". For orc, specify \"ORC\". The default value is CSV."
        },
        "sourceUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one '*' wildcard character and it must come after the 'bucket' name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups: Exactly one URI can be specified. Also, the '*' wildcard character is not allowed."
        },
        "timePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TimePartitioning",
          "description": "Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "useAvroLogicalTypes": {
          "type": "boolean",
          "description": "[Optional] 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)."
        },
        "writeDisposition": {
          "type": "string",
          "description": "[Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:JobConfigurationLoadResponse": {
      "properties": {
        "allowJaggedRows": {
          "type": "boolean",
          "description": "[Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. If false, records with missing trailing 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. Only applicable to CSV, ignored for other formats."
        },
        "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."
        },
        "autodetect": {
          "type": "boolean",
          "description": "[Optional] Indicates if we should automatically infer the options and schema for CSV and JSON sources."
        },
        "clustering": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ClusteringResponse",
          "description": "[Beta] Clustering specification for the destination table. Must be specified with time-based partitioning, data in the table will be first partitioned and subsequently clustered."
        },
        "connectionProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ConnectionPropertyResponse"
          },
          "description": "Connection properties."
        },
        "createDisposition": {
          "type": "string",
          "description": "[Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion."
        },
        "createSession": {
          "type": "boolean",
          "description": "If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs the load job in non-session mode."
        },
        "decimalTargetTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Optional] 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. Example: Suppose the value of this field is [\"NUMERIC\", \"BIGNUMERIC\"]. If (precision,scale) is: (38,9) -> NUMERIC; (39,9) -> BIGNUMERIC (NUMERIC cannot hold 30 integer digits); (38,10) -> BIGNUMERIC (NUMERIC cannot hold 10 fractional digits); (76,38) -> BIGNUMERIC; (77,38) -> BIGNUMERIC (error if value exeeds supported range). This 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. Defaults to [\"NUMERIC\", \"STRING\"] for ORC and [\"NUMERIC\"] for the other file formats."
        },
        "destinationEncryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfigurationResponse",
          "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
        },
        "destinationTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Required] The destination table to load the data into."
        },
        "destinationTableProperties": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DestinationTablePropertiesResponse",
          "description": "[Beta] [Optional] Properties with which to create the destination table if it is new."
        },
        "encoding": {
          "type": "string",
          "description": "[Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties."
        },
        "fieldDelimiter": {
          "type": "string",
          "description": "[Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence \"\\t\" to specify a tab separator. The default value is a comma (',')."
        },
        "fileSetSpecType": {
          "type": "string",
          "description": "[Optional] 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."
        },
        "hivePartitioningOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:HivePartitioningOptionsResponse",
          "description": "[Optional] Options to configure hive partitioning support."
        },
        "ignoreUnknownValues": {
          "type": "boolean",
          "description": "[Optional] 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. The sourceFormat property determines what BigQuery treats as an extra value: CSV: Trailing columns JSON: Named values that don't match any column names"
        },
        "jsonExtension": {
          "type": "string",
          "description": "[Optional] If sourceFormat is set to newline-delimited JSON, indicates whether it should be processed as a JSON variant such as GeoJSON. For a sourceFormat other than JSON, omit this field. If the sourceFormat is newline-delimited JSON: - for newline-delimited GeoJSON: set to GEOJSON."
        },
        "maxBadRecords": {
          "type": "integer",
          "description": "[Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. This is only valid for CSV and JSON. The default value is 0, which requires that all records are valid."
        },
        "nullMarker": {
          "type": "string",
          "description": "[Optional] Specifies a string that represents a null value in a CSV file. For example, if you specify \"\\N\", BigQuery interprets \"\\N\" as a null value when loading a CSV file. The default value is the empty string. If you set this property to a custom value, BigQuery throws an error if an empty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as an empty value."
        },
        "parquetOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ParquetOptionsResponse",
          "description": "[Optional] Options to configure parquet support."
        },
        "preserveAsciiControlCharacters": {
          "type": "boolean",
          "description": "[Optional] Preserves the embedded ASCII control characters (the first 32 characters in the ASCII-table, from '\\x00' to '\\x1F') when loading from CSV. Only applicable to CSV, ignored for other formats."
        },
        "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. Property names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties. If any named property isn't found in the Cloud Datastore backup, an invalid error is returned in the job result."
        },
        "quote": {
          "type": "string",
          "description": "[Optional] The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. The default value is a double-quote ('\"'). 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 allowQuotedNewlines property to true."
        },
        "rangePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioningResponse",
          "description": "[TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "referenceFileSchemaUri": {
          "type": "string",
          "description": "User provided referencing file with the expected reader schema, Available for the format: AVRO, PARQUET, ORC."
        },
        "schema": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableSchemaResponse",
          "description": "[Optional] The schema for the destination table. The schema can be omitted if the destination table already exists, or if you're loading data from Google Cloud Datastore."
        },
        "schemaInline": {
          "type": "string",
          "description": "[Deprecated] The inline schema. For CSV schemas, specify as \"Field1:Type1[,Field2:Type2]*\". For example, \"foo:STRING, bar:INTEGER, baz:FLOAT\".",
          "deprecationMessage": "[Deprecated] The inline schema. For CSV schemas, specify as \"Field1:Type1[,Field2:Type2]*\". For example, \"foo:STRING, bar:INTEGER, baz:FLOAT\"."
        },
        "schemaInlineFormat": {
          "type": "string",
          "description": "[Deprecated] The format of the schemaInline property.",
          "deprecationMessage": "[Deprecated] The format of the schemaInline property."
        },
        "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 supplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable."
        },
        "skipLeadingRows": {
          "type": "integer",
          "description": "[Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped."
        },
        "sourceFormat": {
          "type": "string",
          "description": "[Optional] The format of the data files. For CSV files, specify \"CSV\". For datastore backups, specify \"DATASTORE_BACKUP\". For newline-delimited JSON, specify \"NEWLINE_DELIMITED_JSON\". For Avro, specify \"AVRO\". For parquet, specify \"PARQUET\". For orc, specify \"ORC\". The default value is CSV."
        },
        "sourceUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Required] The fully-qualified URIs that point to your data in Google Cloud. For Google Cloud Storage URIs: Each URI can contain one '*' wildcard character and it must come after the 'bucket' name. Size limits related to load jobs apply to external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table. For Google Cloud Datastore backups: Exactly one URI can be specified. Also, the '*' wildcard character is not allowed."
        },
        "timePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TimePartitioningResponse",
          "description": "Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "useAvroLogicalTypes": {
          "type": "boolean",
          "description": "[Optional] 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)."
        },
        "writeDisposition": {
          "type": "string",
          "description": "[Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion."
        }
      },
      "type": "object",
      "required": [
        "allowJaggedRows",
        "allowQuotedNewlines",
        "autodetect",
        "clustering",
        "connectionProperties",
        "createDisposition",
        "createSession",
        "decimalTargetTypes",
        "destinationEncryptionConfiguration",
        "destinationTable",
        "destinationTableProperties",
        "encoding",
        "fieldDelimiter",
        "fileSetSpecType",
        "hivePartitioningOptions",
        "ignoreUnknownValues",
        "jsonExtension",
        "maxBadRecords",
        "nullMarker",
        "parquetOptions",
        "preserveAsciiControlCharacters",
        "projectionFields",
        "quote",
        "rangePartitioning",
        "referenceFileSchemaUri",
        "schema",
        "schemaInline",
        "schemaInlineFormat",
        "schemaUpdateOptions",
        "skipLeadingRows",
        "sourceFormat",
        "sourceUris",
        "timePartitioning",
        "useAvroLogicalTypes",
        "writeDisposition"
      ]
    },
    "google-native:bigquery/v2:JobConfigurationQuery": {
      "properties": {
        "allowLargeResults": {
          "type": "boolean",
          "description": "[Optional] If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance. Requires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed. However, you must still set destinationTable when result size exceeds the allowed maximum response size."
        },
        "clustering": {
          "$ref": "#/types/google-native:bigquery%2Fv2:Clustering",
          "description": "[Beta] Clustering specification for the destination table. Must be specified with time-based partitioning, data in the table will be first partitioned and subsequently clustered."
        },
        "connectionProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ConnectionProperty"
          },
          "description": "Connection properties."
        },
        "continuous": {
          "type": "boolean",
          "description": "[Optional] Specifies whether the query should be executed as a continuous query. The default value is false."
        },
        "createDisposition": {
          "type": "string",
          "description": "[Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion."
        },
        "createSession": {
          "type": "boolean",
          "description": "If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs query in non-session mode."
        },
        "defaultDataset": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetReference",
          "description": "[Optional] Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names."
        },
        "destinationEncryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfiguration",
          "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
        },
        "destinationTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReference",
          "description": "[Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results. This property must be set for large results that exceed the maximum response size."
        },
        "flattenResults": {
          "type": "boolean",
          "description": "[Optional] If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results. allowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened."
        },
        "maximumBillingTier": {
          "type": "integer",
          "description": "[Optional] Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge). If unspecified, this will be set to your project default."
        },
        "maximumBytesBilled": {
          "type": "string",
          "description": "[Optional] Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge). If unspecified, this will be set to your project default."
        },
        "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."
        },
        "preserveNulls": {
          "type": "boolean",
          "description": "[Deprecated] This property is deprecated.",
          "deprecationMessage": "[Deprecated] This property is deprecated."
        },
        "priority": {
          "type": "string",
          "description": "[Optional] Specifies a priority for the query. Possible values include INTERACTIVE and BATCH. The default value is INTERACTIVE."
        },
        "query": {
          "type": "string",
          "description": "[Required] SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL."
        },
        "queryParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameter"
          },
          "description": "Query parameters for standard SQL queries."
        },
        "rangePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioning",
          "description": "[TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "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. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable."
        },
        "tableDefinitions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Optional] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table."
        },
        "timePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TimePartitioning",
          "description": "Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "useLegacySql": {
          "type": "boolean",
          "description": "Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false."
        },
        "useQueryCache": {
          "type": "boolean",
          "description": "[Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified. The default value is true."
        },
        "userDefinedFunctionResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:UserDefinedFunctionResource"
          },
          "description": "Describes user-defined function resources used in the query."
        },
        "writeDisposition": {
          "type": "string",
          "description": "[Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:JobConfigurationQueryResponse": {
      "properties": {
        "allowLargeResults": {
          "type": "boolean",
          "description": "[Optional] If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance. Requires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed. However, you must still set destinationTable when result size exceeds the allowed maximum response size."
        },
        "clustering": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ClusteringResponse",
          "description": "[Beta] Clustering specification for the destination table. Must be specified with time-based partitioning, data in the table will be first partitioned and subsequently clustered."
        },
        "connectionProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ConnectionPropertyResponse"
          },
          "description": "Connection properties."
        },
        "continuous": {
          "type": "boolean",
          "description": "[Optional] Specifies whether the query should be executed as a continuous query. The default value is false."
        },
        "createDisposition": {
          "type": "string",
          "description": "[Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion."
        },
        "createSession": {
          "type": "boolean",
          "description": "If true, creates a new session, where session id will be a server generated random id. If false, runs query with an existing session_id passed in ConnectionProperty, otherwise runs query in non-session mode."
        },
        "defaultDataset": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetReferenceResponse",
          "description": "[Optional] Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names."
        },
        "destinationEncryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfigurationResponse",
          "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
        },
        "destinationTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results. This property must be set for large results that exceed the maximum response size."
        },
        "flattenResults": {
          "type": "boolean",
          "description": "[Optional] If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results. allowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened."
        },
        "maximumBillingTier": {
          "type": "integer",
          "description": "[Optional] Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge). If unspecified, this will be set to your project default."
        },
        "maximumBytesBilled": {
          "type": "string",
          "description": "[Optional] Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge). If unspecified, this will be set to your project default."
        },
        "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."
        },
        "preserveNulls": {
          "type": "boolean",
          "description": "[Deprecated] This property is deprecated.",
          "deprecationMessage": "[Deprecated] This property is deprecated."
        },
        "priority": {
          "type": "string",
          "description": "[Optional] Specifies a priority for the query. Possible values include INTERACTIVE and BATCH. The default value is INTERACTIVE."
        },
        "query": {
          "type": "string",
          "description": "[Required] SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL."
        },
        "queryParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterResponse"
          },
          "description": "Query parameters for standard SQL queries."
        },
        "rangePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioningResponse",
          "description": "[TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "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. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable."
        },
        "tableDefinitions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Optional] If querying an external data source outside of BigQuery, describes the data format, location and other properties of the data source. By defining these properties, the data source can then be queried as if it were a standard BigQuery table."
        },
        "timePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TimePartitioningResponse",
          "description": "Time-based partitioning specification for the destination table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "useLegacySql": {
          "type": "boolean",
          "description": "Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the value of flattenResults is ignored; query will be run as if flattenResults is false."
        },
        "useQueryCache": {
          "type": "boolean",
          "description": "[Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified. The default value is true."
        },
        "userDefinedFunctionResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:UserDefinedFunctionResourceResponse"
          },
          "description": "Describes user-defined function resources used in the query."
        },
        "writeDisposition": {
          "type": "string",
          "description": "[Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion."
        }
      },
      "type": "object",
      "required": [
        "allowLargeResults",
        "clustering",
        "connectionProperties",
        "continuous",
        "createDisposition",
        "createSession",
        "defaultDataset",
        "destinationEncryptionConfiguration",
        "destinationTable",
        "flattenResults",
        "maximumBillingTier",
        "maximumBytesBilled",
        "parameterMode",
        "preserveNulls",
        "priority",
        "query",
        "queryParameters",
        "rangePartitioning",
        "schemaUpdateOptions",
        "tableDefinitions",
        "timePartitioning",
        "useLegacySql",
        "useQueryCache",
        "userDefinedFunctionResources",
        "writeDisposition"
      ]
    },
    "google-native:bigquery/v2:JobConfigurationResponse": {
      "properties": {
        "copy": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationTableCopyResponse",
          "description": "[Pick one] Copies a table."
        },
        "dryRun": {
          "type": "boolean",
          "description": "[Optional] If set, don't actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn't a dry run. Behavior of non-query jobs is undefined."
        },
        "extract": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationExtractResponse",
          "description": "[Pick one] Configures an extract job."
        },
        "jobTimeoutMs": {
          "type": "string",
          "description": "[Optional] Job timeout in milliseconds. If this time limit is exceeded, BigQuery may attempt to terminate the job."
        },
        "jobType": {
          "type": "string",
          "description": "The type of the job. Can be QUERY, LOAD, EXTRACT, COPY or UNKNOWN."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this job. You can use these to organize and group your jobs. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and each label in the list must have a different key."
        },
        "load": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationLoadResponse",
          "description": "[Pick one] Configures a load job."
        },
        "query": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationQueryResponse",
          "description": "[Pick one] Configures a query job."
        }
      },
      "type": "object",
      "required": [
        "copy",
        "dryRun",
        "extract",
        "jobTimeoutMs",
        "jobType",
        "labels",
        "load",
        "query"
      ]
    },
    "google-native:bigquery/v2:JobConfigurationTableCopy": {
      "properties": {
        "createDisposition": {
          "type": "string",
          "description": "[Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion."
        },
        "destinationEncryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfiguration",
          "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
        },
        "destinationExpirationTime": {
          "$ref": "pulumi.json#/Any",
          "description": "[Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed."
        },
        "destinationTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReference",
          "description": "[Required] The destination table"
        },
        "operationType": {
          "type": "string",
          "description": "[Optional] Supported operation types in table copy job."
        },
        "sourceTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReference",
          "description": "[Pick one] Source table to copy."
        },
        "sourceTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableReference"
          },
          "description": "[Pick one] Source tables to copy."
        },
        "writeDisposition": {
          "type": "string",
          "description": "[Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:JobConfigurationTableCopyResponse": {
      "properties": {
        "createDisposition": {
          "type": "string",
          "description": "[Optional] Specifies whether the job is allowed to create new tables. The following values are supported: CREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table. CREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result. The default value is CREATE_IF_NEEDED. Creation, truncation and append actions occur as one atomic update upon job completion."
        },
        "destinationEncryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfigurationResponse",
          "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
        },
        "destinationExpirationTime": {
          "$ref": "pulumi.json#/Any",
          "description": "[Optional] The time when the destination table expires. Expired tables will be deleted and their storage reclaimed."
        },
        "destinationTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Required] The destination table"
        },
        "operationType": {
          "type": "string",
          "description": "[Optional] Supported operation types in table copy job."
        },
        "sourceTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Pick one] Source table to copy."
        },
        "sourceTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse"
          },
          "description": "[Pick one] Source tables to copy."
        },
        "writeDisposition": {
          "type": "string",
          "description": "[Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_EMPTY. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion."
        }
      },
      "type": "object",
      "required": [
        "createDisposition",
        "destinationEncryptionConfiguration",
        "destinationExpirationTime",
        "destinationTable",
        "operationType",
        "sourceTable",
        "sourceTables",
        "writeDisposition"
      ]
    },
    "google-native:bigquery/v2:JobReference": {
      "properties": {
        "jobId": {
          "type": "string",
          "description": "[Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters."
        },
        "location": {
          "type": "string",
          "description": "The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location."
        },
        "project": {
          "type": "string",
          "description": "[Required] The ID of the project containing this job."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:JobReferenceResponse": {
      "properties": {
        "jobId": {
          "type": "string",
          "description": "[Required] The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters."
        },
        "location": {
          "type": "string",
          "description": "The geographic location of the job. See details at https://cloud.google.com/bigquery/docs/locations#specifying_your_location."
        },
        "project": {
          "type": "string",
          "description": "[Required] The ID of the project containing this job."
        }
      },
      "type": "object",
      "required": [
        "jobId",
        "location",
        "project"
      ]
    },
    "google-native:bigquery/v2:JobStatistics2ReservationUsageItemResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "[Output only] Reservation name or \"unreserved\" for on-demand resources usage."
        },
        "slotMs": {
          "type": "string",
          "description": "[Output only] Slot-milliseconds the job spent in the given reservation."
        }
      },
      "type": "object",
      "required": [
        "name",
        "slotMs"
      ]
    },
    "google-native:bigquery/v2:JobStatistics2Response": {
      "properties": {
        "biEngineStatistics": {
          "$ref": "#/types/google-native:bigquery%2Fv2:BiEngineStatisticsResponse",
          "description": "BI Engine specific Statistics. [Output only] BI Engine specific Statistics."
        },
        "billingTier": {
          "type": "integer",
          "description": "[Output only] Billing tier for the job."
        },
        "cacheHit": {
          "type": "boolean",
          "description": "[Output only] Whether the query result was fetched from the query cache."
        },
        "ddlAffectedRowAccessPolicyCount": {
          "type": "string",
          "description": "[Output only] [Preview] The number of row access policies affected by a DDL statement. Present only for DROP ALL ROW ACCESS POLICIES queries."
        },
        "ddlDestinationTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Output only] The DDL destination table. Present only for ALTER TABLE RENAME TO queries. Note that ddl_target_table is used just for its type information."
        },
        "ddlOperationPerformed": {
          "type": "string",
          "description": "The DDL operation performed, possibly dependent on the pre-existence of the DDL target. Possible values (new values might be added in the future): \"CREATE\": The query created the DDL target. \"SKIP\": No-op. Example cases: the query is CREATE TABLE IF NOT EXISTS while the table already exists, or the query is DROP TABLE IF EXISTS while the table does not exist. \"REPLACE\": The query replaced the DDL target. Example case: the query is CREATE OR REPLACE TABLE, and the table already exists. \"DROP\": The query deleted the DDL target."
        },
        "ddlTargetDataset": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetReferenceResponse",
          "description": "[Output only] The DDL target dataset. Present only for CREATE/ALTER/DROP/UNDROP SCHEMA queries."
        },
        "ddlTargetRoutine": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineReferenceResponse",
          "description": "The DDL target routine. Present only for CREATE/DROP FUNCTION/PROCEDURE queries."
        },
        "ddlTargetRowAccessPolicy": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RowAccessPolicyReferenceResponse",
          "description": "[Output only] [Preview] The DDL target row access policy. Present only for CREATE/DROP ROW ACCESS POLICY queries."
        },
        "ddlTargetTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Output only] The DDL target table. Present only for CREATE/DROP TABLE/VIEW and DROP ALL ROW ACCESS POLICIES queries."
        },
        "dmlStats": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DmlStatisticsResponse",
          "description": "[Output only] Detailed statistics for DML statements Present only for DML statements INSERT, UPDATE, DELETE or TRUNCATE."
        },
        "estimatedBytesProcessed": {
          "type": "string",
          "description": "[Output only] The original estimate of bytes processed for the job."
        },
        "mlStatistics": {
          "$ref": "#/types/google-native:bigquery%2Fv2:MlStatisticsResponse",
          "description": "[Output only] Statistics of a BigQuery ML training job."
        },
        "modelTraining": {
          "$ref": "#/types/google-native:bigquery%2Fv2:BigQueryModelTrainingResponse",
          "description": "[Output only, Beta] Information about create model query job progress."
        },
        "modelTrainingCurrentIteration": {
          "type": "integer",
          "description": "[Output only, Beta] Deprecated; do not use.",
          "deprecationMessage": "[Output only, Beta] Deprecated; do not use."
        },
        "modelTrainingExpectedTotalIteration": {
          "type": "string",
          "description": "[Output only, Beta] Deprecated; do not use.",
          "deprecationMessage": "[Output only, Beta] Deprecated; do not use."
        },
        "numDmlAffectedRows": {
          "type": "string",
          "description": "[Output only] The number of rows affected by a DML statement. Present only for DML statements INSERT, UPDATE or DELETE."
        },
        "queryPlan": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ExplainQueryStageResponse"
          },
          "description": "[Output only] Describes execution plan for the query."
        },
        "referencedRoutines": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:RoutineReferenceResponse"
          },
          "description": "[Output only] Referenced routines (persistent user-defined functions and stored procedures) for the job."
        },
        "referencedTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse"
          },
          "description": "[Output only] Referenced tables for the job. Queries that reference more than 50 tables will not have a complete list."
        },
        "reservationUsage": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:JobStatistics2ReservationUsageItemResponse"
          },
          "description": "[Output only] Job resource usage breakdown by reservation."
        },
        "schema": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableSchemaResponse",
          "description": "[Output only] The schema of the results. Present only for successful dry run of non-legacy SQL queries."
        },
        "searchStatistics": {
          "$ref": "#/types/google-native:bigquery%2Fv2:SearchStatisticsResponse",
          "description": "[Output only] Search query specific statistics."
        },
        "sparkStatistics": {
          "$ref": "#/types/google-native:bigquery%2Fv2:SparkStatisticsResponse",
          "description": "[Output only] Statistics of a Spark procedure job."
        },
        "statementType": {
          "type": "string",
          "description": "The type of query statement, if valid. Possible values (new values might be added in the future): \"SELECT\": SELECT query. \"INSERT\": INSERT query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. \"UPDATE\": UPDATE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. \"DELETE\": DELETE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. \"MERGE\": MERGE query; see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language. \"ALTER_TABLE\": ALTER TABLE query. \"ALTER_VIEW\": ALTER VIEW query. \"ASSERT\": ASSERT condition AS 'description'. \"CREATE_FUNCTION\": CREATE FUNCTION query. \"CREATE_MODEL\": CREATE [OR REPLACE] MODEL ... AS SELECT ... . \"CREATE_PROCEDURE\": CREATE PROCEDURE query. \"CREATE_TABLE\": CREATE [OR REPLACE] TABLE without AS SELECT. \"CREATE_TABLE_AS_SELECT\": CREATE [OR REPLACE] TABLE ... AS SELECT ... . \"CREATE_VIEW\": CREATE [OR REPLACE] VIEW ... AS SELECT ... . \"DROP_FUNCTION\" : DROP FUNCTION query. \"DROP_PROCEDURE\": DROP PROCEDURE query. \"DROP_TABLE\": DROP TABLE query. \"DROP_VIEW\": DROP VIEW query."
        },
        "timeline": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:QueryTimelineSampleResponse"
          },
          "description": "[Output only] [Beta] Describes a timeline of job execution."
        },
        "totalBytesBilled": {
          "type": "string",
          "description": "[Output only] Total bytes billed for the job."
        },
        "totalBytesProcessed": {
          "type": "string",
          "description": "[Output only] Total bytes processed for the job."
        },
        "totalBytesProcessedAccuracy": {
          "type": "string",
          "description": "[Output only] For dry-run jobs, totalBytesProcessed is an estimate and this field specifies the accuracy of the estimate. Possible values can be: UNKNOWN: accuracy of the estimate is unknown. PRECISE: estimate is precise. LOWER_BOUND: estimate is lower bound of what the query would cost. UPPER_BOUND: estimate is upper bound of what the query would cost."
        },
        "totalPartitionsProcessed": {
          "type": "string",
          "description": "[Output only] Total number of partitions processed from all partitioned tables referenced in the job."
        },
        "totalSlotMs": {
          "type": "string",
          "description": "[Output only] Slot-milliseconds for the job."
        },
        "transferredBytes": {
          "type": "string",
          "description": "Total bytes transferred for cross-cloud queries such as Cross Cloud Transfer and CREATE TABLE AS SELECT (CTAS)."
        },
        "undeclaredQueryParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterResponse"
          },
          "description": "Standard SQL only: list of undeclared query parameters detected during a dry run validation."
        }
      },
      "type": "object",
      "required": [
        "biEngineStatistics",
        "billingTier",
        "cacheHit",
        "ddlAffectedRowAccessPolicyCount",
        "ddlDestinationTable",
        "ddlOperationPerformed",
        "ddlTargetDataset",
        "ddlTargetRoutine",
        "ddlTargetRowAccessPolicy",
        "ddlTargetTable",
        "dmlStats",
        "estimatedBytesProcessed",
        "mlStatistics",
        "modelTraining",
        "modelTrainingCurrentIteration",
        "modelTrainingExpectedTotalIteration",
        "numDmlAffectedRows",
        "queryPlan",
        "referencedRoutines",
        "referencedTables",
        "reservationUsage",
        "schema",
        "searchStatistics",
        "sparkStatistics",
        "statementType",
        "timeline",
        "totalBytesBilled",
        "totalBytesProcessed",
        "totalBytesProcessedAccuracy",
        "totalPartitionsProcessed",
        "totalSlotMs",
        "transferredBytes",
        "undeclaredQueryParameters"
      ]
    },
    "google-native:bigquery/v2:JobStatistics3Response": {
      "properties": {
        "badRecords": {
          "type": "string",
          "description": "The number of bad records encountered. Note that if the job has failed because of more bad records encountered than the maximum allowed in the load job configuration, then this number can be less than the total number of bad records present in the input data."
        },
        "inputFileBytes": {
          "type": "string",
          "description": "Number of bytes of source data in a load job."
        },
        "inputFiles": {
          "type": "string",
          "description": "Number of source files in a load job."
        },
        "outputBytes": {
          "type": "string",
          "description": "Size of the loaded data in bytes. Note that while a load job is in the running state, this value may change."
        },
        "outputRows": {
          "type": "string",
          "description": "Number of rows imported in a load job. Note that while an import job is in the running state, this value may change."
        }
      },
      "type": "object",
      "required": [
        "badRecords",
        "inputFileBytes",
        "inputFiles",
        "outputBytes",
        "outputRows"
      ]
    },
    "google-native:bigquery/v2:JobStatistics4Response": {
      "properties": {
        "destinationUriFileCounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Number of files per destination URI or URI pattern specified in the extract configuration. These values will be in the same order as the URIs specified in the 'destinationUris' field."
        },
        "inputBytes": {
          "type": "string",
          "description": "Number of user bytes extracted into the result. This is the byte count as computed by BigQuery for billing purposes."
        }
      },
      "type": "object",
      "required": [
        "destinationUriFileCounts",
        "inputBytes"
      ]
    },
    "google-native:bigquery/v2:JobStatistics5Response": {
      "properties": {
        "copiedLogicalBytes": {
          "type": "string",
          "description": "Number of logical bytes copied to the destination table."
        },
        "copiedRows": {
          "type": "string",
          "description": "Number of rows copied to the destination table."
        }
      },
      "type": "object",
      "required": [
        "copiedLogicalBytes",
        "copiedRows"
      ]
    },
    "google-native:bigquery/v2:JobStatisticsReservationUsageItemResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Reservation name or \"unreserved\" for on-demand resources usage."
        },
        "slotMs": {
          "type": "string",
          "description": "Slot-milliseconds the job spent in the given reservation."
        }
      },
      "type": "object",
      "required": [
        "name",
        "slotMs"
      ]
    },
    "google-native:bigquery/v2:JobStatisticsResponse": {
      "properties": {
        "completionRatio": {
          "type": "number",
          "description": "[TrustedTester] [Output-only] Job progress (0.0 -> 1.0) for LOAD and EXTRACT jobs."
        },
        "copy": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobStatistics5Response",
          "description": "Statistics for a copy job."
        },
        "creationTime": {
          "type": "string",
          "description": "Creation time of this job, in milliseconds since the epoch. This field will be present on all jobs."
        },
        "dataMaskingStatistics": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DataMaskingStatisticsResponse",
          "description": "Statistics for data masking. Present only for query and extract jobs."
        },
        "endTime": {
          "type": "string",
          "description": "End time of this job, in milliseconds since the epoch. This field will be present whenever a job is in the DONE state."
        },
        "extract": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobStatistics4Response",
          "description": "Statistics for an extract job."
        },
        "load": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobStatistics3Response",
          "description": "Statistics for a load job."
        },
        "numChildJobs": {
          "type": "string",
          "description": "Number of child jobs executed."
        },
        "parentJobId": {
          "type": "string",
          "description": "If this is a child job, the id of the parent."
        },
        "query": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobStatistics2Response",
          "description": "Statistics for a query job."
        },
        "quotaDeferments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Quotas which delayed this job's start time."
        },
        "reservationId": {
          "type": "string",
          "description": "Name of the primary reservation assigned to this job. Note that this could be different than reservations reported in the reservation usage field if parent reservations were used to execute this job."
        },
        "reservationUsage": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:JobStatisticsReservationUsageItemResponse"
          },
          "description": "Job resource usage breakdown by reservation."
        },
        "rowLevelSecurityStatistics": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RowLevelSecurityStatisticsResponse",
          "description": "[Preview] Statistics for row-level security. Present only for query and extract jobs."
        },
        "scriptStatistics": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ScriptStatisticsResponse",
          "description": "Statistics for a child job of a script."
        },
        "sessionInfo": {
          "$ref": "#/types/google-native:bigquery%2Fv2:SessionInfoResponse",
          "description": "[Preview] Information of the session if this job is part of one."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of this job, in milliseconds since the epoch. This field will be present when the job transitions from the PENDING state to either RUNNING or DONE."
        },
        "totalBytesProcessed": {
          "type": "string",
          "description": "[Deprecated] Use the bytes processed in the query statistics instead.",
          "deprecationMessage": "[Output-only] [Deprecated] Use the bytes processed in the query statistics instead."
        },
        "totalSlotMs": {
          "type": "string",
          "description": "Slot-milliseconds for the job."
        },
        "transactionInfo": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TransactionInfoResponse",
          "description": "[Alpha] Information of the multi-statement transaction if this job is part of one."
        }
      },
      "type": "object",
      "required": [
        "completionRatio",
        "copy",
        "creationTime",
        "dataMaskingStatistics",
        "endTime",
        "extract",
        "load",
        "numChildJobs",
        "parentJobId",
        "query",
        "quotaDeferments",
        "reservationId",
        "reservationUsage",
        "rowLevelSecurityStatistics",
        "scriptStatistics",
        "sessionInfo",
        "startTime",
        "totalBytesProcessed",
        "totalSlotMs",
        "transactionInfo"
      ]
    },
    "google-native:bigquery/v2:JobStatusResponse": {
      "properties": {
        "errorResult": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ErrorProtoResponse",
          "description": "Final error result of the job. If present, indicates that the job has completed and was unsuccessful."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ErrorProtoResponse"
          },
          "description": "The first errors encountered during the running of the job. The final message includes the number of errors that caused the process to stop. Errors here do not necessarily mean that the job has completed or was unsuccessful."
        },
        "state": {
          "type": "string",
          "description": "Running state of the job."
        }
      },
      "type": "object",
      "required": [
        "errorResult",
        "errors",
        "state"
      ]
    },
    "google-native:bigquery/v2:JsonOptions": {
      "properties": {
        "encoding": {
          "type": "string",
          "description": "[Optional] 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."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:JsonOptionsResponse": {
      "properties": {
        "encoding": {
          "type": "string",
          "description": "[Optional] 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."
        }
      },
      "type": "object",
      "required": [
        "encoding"
      ]
    },
    "google-native:bigquery/v2:MaterializedViewDefinition": {
      "properties": {
        "allowNonIncrementalDefinition": {
          "type": "boolean",
          "description": "[Optional] Allow non incremental materialized view definition. The default value is \"false\"."
        },
        "enableRefresh": {
          "type": "boolean",
          "description": "[Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is \"true\"."
        },
        "maxStaleness": {
          "type": "string",
          "description": "[Optional] Max staleness of data that could be returned when materizlized view is queried (formatted as Google SQL Interval type)."
        },
        "query": {
          "type": "string",
          "description": "[Required] A query whose result is persisted."
        },
        "refreshIntervalMs": {
          "type": "string",
          "description": "[Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is \"1800000\" (30 minutes)."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:MaterializedViewDefinitionResponse": {
      "properties": {
        "allowNonIncrementalDefinition": {
          "type": "boolean",
          "description": "[Optional] Allow non incremental materialized view definition. The default value is \"false\"."
        },
        "enableRefresh": {
          "type": "boolean",
          "description": "[Optional] [TrustedTester] Enable automatic refresh of the materialized view when the base table is updated. The default value is \"true\"."
        },
        "lastRefreshTime": {
          "type": "string",
          "description": "[TrustedTester] The time when this materialized view was last modified, in milliseconds since the epoch."
        },
        "maxStaleness": {
          "type": "string",
          "description": "[Optional] Max staleness of data that could be returned when materizlized view is queried (formatted as Google SQL Interval type)."
        },
        "query": {
          "type": "string",
          "description": "[Required] A query whose result is persisted."
        },
        "refreshIntervalMs": {
          "type": "string",
          "description": "[Optional] [TrustedTester] The maximum frequency at which this materialized view will be refreshed. The default value is \"1800000\" (30 minutes)."
        }
      },
      "type": "object",
      "required": [
        "allowNonIncrementalDefinition",
        "enableRefresh",
        "lastRefreshTime",
        "maxStaleness",
        "query",
        "refreshIntervalMs"
      ]
    },
    "google-native:bigquery/v2:MlStatisticsResponse": {
      "properties": {
        "iterationResults": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:IterationResultResponse"
          },
          "description": "Results for all completed iterations."
        },
        "maxIterations": {
          "type": "string",
          "description": "Maximum number of iterations specified as max_iterations in the 'CREATE MODEL' query. The actual number of iterations may be less than this number due to early stop."
        }
      },
      "type": "object",
      "required": [
        "iterationResults",
        "maxIterations"
      ]
    },
    "google-native:bigquery/v2:ModelDefinition": {
      "properties": {
        "modelOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ModelDefinitionModelOptions",
          "description": "[Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query."
        },
        "trainingRuns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BqmlTrainingRun"
          },
          "description": "[Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ModelDefinitionModelOptions": {
      "description": "[Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.",
      "properties": {
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "lossType": {
          "type": "string"
        },
        "modelType": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ModelDefinitionModelOptionsResponse": {
      "description": "[Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query.",
      "properties": {
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "lossType": {
          "type": "string"
        },
        "modelType": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "labels",
        "lossType",
        "modelType"
      ]
    },
    "google-native:bigquery/v2:ModelDefinitionResponse": {
      "properties": {
        "modelOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ModelDefinitionModelOptionsResponse",
          "description": "[Output-only, Beta] Model options used for the first training run. These options are immutable for subsequent training runs. Default values are used for any options not specified in the input query."
        },
        "trainingRuns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BqmlTrainingRunResponse"
          },
          "description": "[Output-only, Beta] Information about ml training runs, each training run comprises of multiple iterations and there may be multiple training runs for the model if warm start is used or if a user decides to continue a previously cancelled query."
        }
      },
      "type": "object",
      "required": [
        "modelOptions",
        "trainingRuns"
      ]
    },
    "google-native:bigquery/v2:ModelReference": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset containing this model."
        },
        "modelId": {
          "type": "string",
          "description": "The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters."
        },
        "project": {
          "type": "string",
          "description": "The ID of the project containing this model."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "modelId",
        "project"
      ]
    },
    "google-native:bigquery/v2:ModelReferenceResponse": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset containing this model."
        },
        "modelId": {
          "type": "string",
          "description": "The ID of the model. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters."
        },
        "project": {
          "type": "string",
          "description": "The ID of the project containing this model."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "modelId",
        "project"
      ]
    },
    "google-native:bigquery/v2:ParquetOptions": {
      "properties": {
        "enableListInference": {
          "type": "boolean",
          "description": "[Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type."
        },
        "enumAsString": {
          "type": "boolean",
          "description": "[Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ParquetOptionsResponse": {
      "properties": {
        "enableListInference": {
          "type": "boolean",
          "description": "[Optional] Indicates whether to use schema inference specifically for Parquet LIST logical type."
        },
        "enumAsString": {
          "type": "boolean",
          "description": "[Optional] Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default."
        }
      },
      "type": "object",
      "required": [
        "enableListInference",
        "enumAsString"
      ]
    },
    "google-native:bigquery/v2:QueryParameter": {
      "properties": {
        "name": {
          "type": "string",
          "description": "[Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query."
        },
        "parameterType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterType",
          "description": "[Required] The type of this parameter."
        },
        "parameterValue": {
          "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterValue",
          "description": "[Required] The value of this parameter."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:QueryParameterResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "[Optional] If unset, this is a positional parameter. Otherwise, should be unique within a query."
        },
        "parameterType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterTypeResponse",
          "description": "[Required] The type of this parameter."
        },
        "parameterValue": {
          "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterValueResponse",
          "description": "[Required] The value of this parameter."
        }
      },
      "type": "object",
      "required": [
        "name",
        "parameterType",
        "parameterValue"
      ]
    },
    "google-native:bigquery/v2:QueryParameterType": {
      "properties": {
        "arrayType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterType",
          "description": "[Optional] The type of the array's elements, if this is an array."
        },
        "structTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterTypeStructTypesItem"
          },
          "description": "[Optional] The types of the fields of this struct, in order, if this is a struct."
        },
        "type": {
          "type": "string",
          "description": "[Required] The top level type of this field."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:QueryParameterTypeResponse": {
      "properties": {
        "arrayType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterTypeResponse",
          "description": "[Optional] The type of the array's elements, if this is an array."
        },
        "structTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterTypeStructTypesItemResponse"
          },
          "description": "[Optional] The types of the fields of this struct, in order, if this is a struct."
        },
        "type": {
          "type": "string",
          "description": "[Required] The top level type of this field."
        }
      },
      "type": "object",
      "required": [
        "arrayType",
        "structTypes",
        "type"
      ]
    },
    "google-native:bigquery/v2:QueryParameterTypeStructTypesItem": {
      "properties": {
        "description": {
          "type": "string",
          "description": "[Optional] Human-oriented description of the field."
        },
        "name": {
          "type": "string",
          "description": "[Optional] The name of this field."
        },
        "type": {
          "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterType",
          "description": "[Required] The type of this field."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:QueryParameterTypeStructTypesItemResponse": {
      "properties": {
        "description": {
          "type": "string",
          "description": "[Optional] Human-oriented description of the field."
        },
        "name": {
          "type": "string",
          "description": "[Optional] The name of this field."
        },
        "type": {
          "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterTypeResponse",
          "description": "[Required] The type of this field."
        }
      },
      "type": "object",
      "required": [
        "description",
        "name",
        "type"
      ]
    },
    "google-native:bigquery/v2:QueryParameterValue": {
      "properties": {
        "arrayValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterValue"
          },
          "description": "[Optional] The array values, if this is an array type."
        },
        "structValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Optional] The struct field values, in order of the struct type's declaration."
        },
        "value": {
          "type": "string",
          "description": "[Optional] The value of this value, if a simple scalar type."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:QueryParameterValueResponse": {
      "properties": {
        "arrayValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:QueryParameterValueResponse"
          },
          "description": "[Optional] The array values, if this is an array type."
        },
        "structValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Optional] The struct field values, in order of the struct type's declaration."
        },
        "value": {
          "type": "string",
          "description": "[Optional] The value of this value, if a simple scalar type."
        }
      },
      "type": "object",
      "required": [
        "arrayValues",
        "structValues",
        "value"
      ]
    },
    "google-native:bigquery/v2:QueryTimelineSampleResponse": {
      "properties": {
        "activeUnits": {
          "type": "string",
          "description": "Total number of units currently being processed by workers. This does not correspond directly to slot usage. This is the largest value observed since the last sample."
        },
        "completedUnits": {
          "type": "string",
          "description": "Total parallel units of work completed by this query."
        },
        "elapsedMs": {
          "type": "string",
          "description": "Milliseconds elapsed since the start of query execution."
        },
        "estimatedRunnableUnits": {
          "type": "string",
          "description": "Units of work that can be scheduled immediately. Providing additional slots for these units of work will speed up the query, provided no other query in the reservation needs additional slots."
        },
        "pendingUnits": {
          "type": "string",
          "description": "Total units of work remaining for the query. This number can be revised (increased or decreased) while the query is running."
        },
        "totalSlotMs": {
          "type": "string",
          "description": "Cumulative slot-ms consumed by the query."
        }
      },
      "type": "object",
      "required": [
        "activeUnits",
        "completedUnits",
        "elapsedMs",
        "estimatedRunnableUnits",
        "pendingUnits",
        "totalSlotMs"
      ]
    },
    "google-native:bigquery/v2:RangePartitioning": {
      "properties": {
        "field": {
          "type": "string",
          "description": "[TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64."
        },
        "range": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioningRange",
          "description": "[TrustedTester] [Required] Defines the ranges for range partitioning."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:RangePartitioningRange": {
      "description": "[TrustedTester] [Required] Defines the ranges for range partitioning.",
      "properties": {
        "end": {
          "type": "string",
          "description": "[TrustedTester] [Required] The end of range partitioning, exclusive."
        },
        "interval": {
          "type": "string",
          "description": "[TrustedTester] [Required] The width of each interval."
        },
        "start": {
          "type": "string",
          "description": "[TrustedTester] [Required] The start of range partitioning, inclusive."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:RangePartitioningRangeResponse": {
      "description": "[TrustedTester] [Required] Defines the ranges for range partitioning.",
      "properties": {
        "end": {
          "type": "string",
          "description": "[TrustedTester] [Required] The end of range partitioning, exclusive."
        },
        "interval": {
          "type": "string",
          "description": "[TrustedTester] [Required] The width of each interval."
        },
        "start": {
          "type": "string",
          "description": "[TrustedTester] [Required] The start of range partitioning, inclusive."
        }
      },
      "type": "object",
      "required": [
        "end",
        "interval",
        "start"
      ]
    },
    "google-native:bigquery/v2:RangePartitioningResponse": {
      "properties": {
        "field": {
          "type": "string",
          "description": "[TrustedTester] [Required] The table is partitioned by this field. The field must be a top-level NULLABLE/REQUIRED field. The only supported type is INTEGER/INT64."
        },
        "range": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioningRangeResponse",
          "description": "[TrustedTester] [Required] Defines the ranges for range partitioning."
        }
      },
      "type": "object",
      "required": [
        "field",
        "range"
      ]
    },
    "google-native:bigquery/v2:RemoteFunctionOptions": {
      "description": "Options for a remote user-defined function.",
      "properties": {
        "connection": {
          "type": "string",
          "description": "Fully qualified name of the user-provided connection object which holds the authentication information to send requests to the remote service. Format: ```\"projects/{projectId}/locations/{locationId}/connections/{connectionId}\"```"
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint of the user-provided remote service, e.g. ```https://us-east1-my_gcf_project.cloudfunctions.net/remote_add```"
        },
        "maxBatchingRows": {
          "type": "string",
          "description": "Max number of rows in each batch sent to the remote service. If absent or if 0, BigQuery dynamically decides the number of rows in a batch."
        },
        "userDefinedContext": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined context as a set of key/value pairs, which will be sent as function invocation context together with batched arguments in the requests to the remote service. The total number of bytes of keys and values must be less than 8KB."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:RemoteFunctionOptionsResponse": {
      "description": "Options for a remote user-defined function.",
      "properties": {
        "connection": {
          "type": "string",
          "description": "Fully qualified name of the user-provided connection object which holds the authentication information to send requests to the remote service. Format: ```\"projects/{projectId}/locations/{locationId}/connections/{connectionId}\"```"
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint of the user-provided remote service, e.g. ```https://us-east1-my_gcf_project.cloudfunctions.net/remote_add```"
        },
        "maxBatchingRows": {
          "type": "string",
          "description": "Max number of rows in each batch sent to the remote service. If absent or if 0, BigQuery dynamically decides the number of rows in a batch."
        },
        "userDefinedContext": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined context as a set of key/value pairs, which will be sent as function invocation context together with batched arguments in the requests to the remote service. The total number of bytes of keys and values must be less than 8KB."
        }
      },
      "type": "object",
      "required": [
        "connection",
        "endpoint",
        "maxBatchingRows",
        "userDefinedContext"
      ]
    },
    "google-native:bigquery/v2:RoutineDataGovernanceType": {
      "description": "Optional. If set to `DATA_MASKING`, the function is validated and made available as a masking function. For more information, see [Create custom masking routines](https://cloud.google.com/bigquery/docs/user-defined-functions#custom-mask).",
      "type": "string",
      "enum": [
        {
          "name": "DataGovernanceTypeUnspecified",
          "description": "The data governance type is unspecified.",
          "value": "DATA_GOVERNANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "DataMasking",
          "description": "The data governance type is data masking.",
          "value": "DATA_MASKING"
        }
      ]
    },
    "google-native:bigquery/v2:RoutineDeterminismLevel": {
      "description": "Optional. The determinism level of the JavaScript UDF, if defined.",
      "type": "string",
      "enum": [
        {
          "name": "DeterminismLevelUnspecified",
          "description": "The determinism of the UDF is unspecified.",
          "value": "DETERMINISM_LEVEL_UNSPECIFIED"
        },
        {
          "name": "Deterministic",
          "description": "The UDF is deterministic, meaning that 2 function calls with the same inputs always produce the same result, even across 2 query runs.",
          "value": "DETERMINISTIC"
        },
        {
          "name": "NotDeterministic",
          "description": "The UDF is not deterministic.",
          "value": "NOT_DETERMINISTIC"
        }
      ]
    },
    "google-native:bigquery/v2:RoutineLanguage": {
      "description": "Optional. Defaults to \"SQL\" if remote_function_options field is absent, not set otherwise.",
      "type": "string",
      "enum": [
        {
          "name": "LanguageUnspecified",
          "description": "Default value.",
          "value": "LANGUAGE_UNSPECIFIED"
        },
        {
          "name": "Sql",
          "description": "SQL language.",
          "value": "SQL"
        },
        {
          "name": "Javascript",
          "description": "JavaScript language.",
          "value": "JAVASCRIPT"
        },
        {
          "name": "Python",
          "description": "Python language.",
          "value": "PYTHON"
        },
        {
          "name": "Java",
          "description": "Java language.",
          "value": "JAVA"
        },
        {
          "name": "Scala",
          "description": "Scala language.",
          "value": "SCALA"
        }
      ]
    },
    "google-native:bigquery/v2:RoutineReference": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset containing this routine."
        },
        "project": {
          "type": "string",
          "description": "The ID of the project containing this routine."
        },
        "routineId": {
          "type": "string",
          "description": "The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "project",
        "routineId"
      ]
    },
    "google-native:bigquery/v2:RoutineReferenceResponse": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset containing this routine."
        },
        "project": {
          "type": "string",
          "description": "The ID of the project containing this routine."
        },
        "routineId": {
          "type": "string",
          "description": "The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "project",
        "routineId"
      ]
    },
    "google-native:bigquery/v2:RoutineRoutineType": {
      "description": "Required. The type of routine.",
      "type": "string",
      "enum": [
        {
          "name": "RoutineTypeUnspecified",
          "description": "Default value.",
          "value": "ROUTINE_TYPE_UNSPECIFIED"
        },
        {
          "name": "ScalarFunction",
          "description": "Non-built-in persistent scalar function.",
          "value": "SCALAR_FUNCTION"
        },
        {
          "name": "Procedure",
          "description": "Stored procedure.",
          "value": "PROCEDURE"
        },
        {
          "name": "TableValuedFunction",
          "description": "Non-built-in persistent TVF.",
          "value": "TABLE_VALUED_FUNCTION"
        },
        {
          "name": "AggregateFunction",
          "description": "Non-built-in persistent aggregate function.",
          "value": "AGGREGATE_FUNCTION"
        }
      ]
    },
    "google-native:bigquery/v2:RoutineSecurityMode": {
      "description": "Optional. The security mode of the routine, if defined. If not defined, the security mode is automatically determined from the routine's configuration.",
      "type": "string",
      "enum": [
        {
          "name": "SecurityModeUnspecified",
          "description": "The security mode of the routine is unspecified.",
          "value": "SECURITY_MODE_UNSPECIFIED"
        },
        {
          "name": "Definer",
          "description": "The routine is to be executed with the privileges of the user who defines it.",
          "value": "DEFINER"
        },
        {
          "name": "Invoker",
          "description": "The routine is to be executed with the privileges of the user who invokes it.",
          "value": "INVOKER"
        }
      ]
    },
    "google-native:bigquery/v2:RowAccessPolicyReferenceResponse": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset containing this row access policy."
        },
        "policyId": {
          "type": "string",
          "description": "The ID of the row access policy. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters."
        },
        "project": {
          "type": "string",
          "description": "The ID of the project containing this row access policy."
        },
        "tableId": {
          "type": "string",
          "description": "The ID of the table containing this row access policy."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "policyId",
        "project",
        "tableId"
      ]
    },
    "google-native:bigquery/v2:RowLevelSecurityStatisticsResponse": {
      "properties": {
        "rowLevelSecurityApplied": {
          "type": "boolean",
          "description": "[Preview] Whether any accessed data was protected by row access policies."
        }
      },
      "type": "object",
      "required": [
        "rowLevelSecurityApplied"
      ]
    },
    "google-native:bigquery/v2:ScriptStackFrameResponse": {
      "properties": {
        "endColumn": {
          "type": "integer",
          "description": "One-based end column."
        },
        "endLine": {
          "type": "integer",
          "description": "One-based end line."
        },
        "procedureId": {
          "type": "string",
          "description": "Name of the active procedure, empty if in a top-level script."
        },
        "startColumn": {
          "type": "integer",
          "description": "One-based start column."
        },
        "startLine": {
          "type": "integer",
          "description": "One-based start line."
        },
        "text": {
          "type": "string",
          "description": "Text of the current statement/expression."
        }
      },
      "type": "object",
      "required": [
        "endColumn",
        "endLine",
        "procedureId",
        "startColumn",
        "startLine",
        "text"
      ]
    },
    "google-native:bigquery/v2:ScriptStatisticsResponse": {
      "properties": {
        "evaluationKind": {
          "type": "string",
          "description": "Whether this child job was a statement or expression."
        },
        "stackFrames": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ScriptStackFrameResponse"
          },
          "description": "Stack trace showing the line/column/procedure name of each frame on the stack at the point where the current evaluation happened. The leaf frame is first, the primary script is last. Never empty."
        }
      },
      "type": "object",
      "required": [
        "evaluationKind",
        "stackFrames"
      ]
    },
    "google-native:bigquery/v2:SearchStatisticsResponse": {
      "properties": {
        "indexUnusedReasons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:IndexUnusedReasonResponse"
          },
          "description": "When index_usage_mode is UNUSED or PARTIALLY_USED, this field explains why index was not used in all or part of the search query. If index_usage_mode is FULLLY_USED, this field is not populated."
        },
        "indexUsageMode": {
          "type": "string",
          "description": "Specifies index usage mode for the query."
        }
      },
      "type": "object",
      "required": [
        "indexUnusedReasons",
        "indexUsageMode"
      ]
    },
    "google-native:bigquery/v2:SessionInfoResponse": {
      "properties": {
        "sessionId": {
          "type": "string",
          "description": "// [Preview] Id of the session."
        }
      },
      "type": "object",
      "required": [
        "sessionId"
      ]
    },
    "google-native:bigquery/v2:SnapshotDefinitionResponse": {
      "properties": {
        "baseTableReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Required] Reference describing the ID of the table that was snapshot."
        },
        "snapshotTime": {
          "type": "string",
          "description": "[Required] The time at which the base table was snapshot. This value is reported in the JSON response using RFC3339 format."
        }
      },
      "type": "object",
      "required": [
        "baseTableReference",
        "snapshotTime"
      ]
    },
    "google-native:bigquery/v2:SparkLoggingInfoResponse": {
      "properties": {
        "project": {
          "type": "string",
          "description": "Project ID used for logging"
        },
        "resourceType": {
          "type": "string",
          "description": "Resource type used for logging"
        }
      },
      "type": "object",
      "required": [
        "project",
        "resourceType"
      ]
    },
    "google-native:bigquery/v2:SparkOptions": {
      "description": "Options for a user-defined Spark routine.",
      "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](https://spark.apache.org/docs/latest/index.html)."
        },
        "connection": {
          "type": "string",
          "description": "Fully qualified name of the user-provided Spark connection object. Format: ```\"projects/{project_id}/locations/{location_id}/connections/{connection_id}\"```"
        },
        "containerImage": {
          "type": "string",
          "description": "Custom container image for the runtime environment."
        },
        "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](https://spark.apache.org/docs/latest/index.html)."
        },
        "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](https://spark.apache.org/docs/latest/index.html)."
        },
        "mainClass": {
          "type": "string",
          "description": "The fully qualified name of a class in jar_uris, for example, com.example.wordcount. Exactly one of main_class and main_jar_uri field should be set for Java/Scala language type."
        },
        "mainFileUri": {
          "type": "string",
          "description": "The main file/jar URI of the Spark application. Exactly one of the definition_body field and the main_file_uri field must be set for Python. Exactly one of main_class and main_file_uri field should be set for Java/Scala language type."
        },
        "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. For more information, see [Apache Spark](https://spark.apache.org/docs/latest/index.html) and the [procedure option list](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#procedure_option_list)."
        },
        "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](https://spark.apache.org/docs/latest/index.html)."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "Runtime version. If not specified, the default runtime version is used."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:SparkOptionsResponse": {
      "description": "Options for a user-defined Spark routine.",
      "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](https://spark.apache.org/docs/latest/index.html)."
        },
        "connection": {
          "type": "string",
          "description": "Fully qualified name of the user-provided Spark connection object. Format: ```\"projects/{project_id}/locations/{location_id}/connections/{connection_id}\"```"
        },
        "containerImage": {
          "type": "string",
          "description": "Custom container image for the runtime environment."
        },
        "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](https://spark.apache.org/docs/latest/index.html)."
        },
        "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](https://spark.apache.org/docs/latest/index.html)."
        },
        "mainClass": {
          "type": "string",
          "description": "The fully qualified name of a class in jar_uris, for example, com.example.wordcount. Exactly one of main_class and main_jar_uri field should be set for Java/Scala language type."
        },
        "mainFileUri": {
          "type": "string",
          "description": "The main file/jar URI of the Spark application. Exactly one of the definition_body field and the main_file_uri field must be set for Python. Exactly one of main_class and main_file_uri field should be set for Java/Scala language type."
        },
        "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. For more information, see [Apache Spark](https://spark.apache.org/docs/latest/index.html) and the [procedure option list](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#procedure_option_list)."
        },
        "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](https://spark.apache.org/docs/latest/index.html)."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "Runtime version. If not specified, the default runtime version is used."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "connection",
        "containerImage",
        "fileUris",
        "jarUris",
        "mainClass",
        "mainFileUri",
        "properties",
        "pyFileUris",
        "runtimeVersion"
      ]
    },
    "google-native:bigquery/v2:SparkStatisticsResponse": {
      "properties": {
        "endpoints": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Endpoints generated for the Spark job."
        },
        "loggingInfo": {
          "$ref": "#/types/google-native:bigquery%2Fv2:SparkLoggingInfoResponse",
          "description": "Logging info is used to generate a link to Cloud Logging."
        },
        "sparkJobId": {
          "type": "string",
          "description": "Spark job id if a Spark job is created successfully."
        },
        "sparkJobLocation": {
          "type": "string",
          "description": "Location where the Spark job is executed."
        }
      },
      "type": "object",
      "required": [
        "endpoints",
        "loggingInfo",
        "sparkJobId",
        "sparkJobLocation"
      ]
    },
    "google-native:bigquery/v2:StandardSqlDataType": {
      "description": "The data type of a variable such as a function argument. Examples include: * INT64: `{\"typeKind\": \"INT64\"}` * ARRAY: { \"typeKind\": \"ARRAY\", \"arrayElementType\": {\"typeKind\": \"STRING\"} } * STRUCT>: { \"typeKind\": \"STRUCT\", \"structType\": { \"fields\": [ { \"name\": \"x\", \"type\": {\"typeKind\": \"STRING\"} }, { \"name\": \"y\", \"type\": { \"typeKind\": \"ARRAY\", \"arrayElementType\": {\"typeKind\": \"DATE\"} } } ] } }",
      "properties": {
        "arrayElementType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataType",
          "description": "The type of the array's elements, if type_kind = \"ARRAY\"."
        },
        "rangeElementType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataType",
          "description": "The type of the range's elements, if type_kind = \"RANGE\"."
        },
        "structType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlStructType",
          "description": "The fields of this struct, in order, if type_kind = \"STRUCT\"."
        },
        "typeKind": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataTypeTypeKind",
          "description": "The top level type of this field. Can be any GoogleSQL data type (e.g., \"INT64\", \"DATE\", \"ARRAY\")."
        }
      },
      "type": "object",
      "required": [
        "typeKind"
      ]
    },
    "google-native:bigquery/v2:StandardSqlDataTypeResponse": {
      "description": "The data type of a variable such as a function argument. Examples include: * INT64: `{\"typeKind\": \"INT64\"}` * ARRAY: { \"typeKind\": \"ARRAY\", \"arrayElementType\": {\"typeKind\": \"STRING\"} } * STRUCT>: { \"typeKind\": \"STRUCT\", \"structType\": { \"fields\": [ { \"name\": \"x\", \"type\": {\"typeKind\": \"STRING\"} }, { \"name\": \"y\", \"type\": { \"typeKind\": \"ARRAY\", \"arrayElementType\": {\"typeKind\": \"DATE\"} } } ] } }",
      "properties": {
        "arrayElementType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataTypeResponse",
          "description": "The type of the array's elements, if type_kind = \"ARRAY\"."
        },
        "rangeElementType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataTypeResponse",
          "description": "The type of the range's elements, if type_kind = \"RANGE\"."
        },
        "structType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlStructTypeResponse",
          "description": "The fields of this struct, in order, if type_kind = \"STRUCT\"."
        },
        "typeKind": {
          "type": "string",
          "description": "The top level type of this field. Can be any GoogleSQL data type (e.g., \"INT64\", \"DATE\", \"ARRAY\")."
        }
      },
      "type": "object",
      "required": [
        "arrayElementType",
        "rangeElementType",
        "structType",
        "typeKind"
      ]
    },
    "google-native:bigquery/v2:StandardSqlDataTypeTypeKind": {
      "description": "Required. The top level type of this field. Can be any GoogleSQL data type (e.g., \"INT64\", \"DATE\", \"ARRAY\").",
      "type": "string",
      "enum": [
        {
          "name": "TypeKindUnspecified",
          "description": "Invalid type.",
          "value": "TYPE_KIND_UNSPECIFIED"
        },
        {
          "name": "Int64",
          "description": "Encoded as a string in decimal format.",
          "value": "INT64"
        },
        {
          "name": "Bool",
          "description": "Encoded as a boolean \"false\" or \"true\".",
          "value": "BOOL"
        },
        {
          "name": "Float64",
          "description": "Encoded as a number, or string \"NaN\", \"Infinity\" or \"-Infinity\".",
          "value": "FLOAT64"
        },
        {
          "name": "String",
          "description": "Encoded as a string value.",
          "value": "STRING"
        },
        {
          "name": "Bytes",
          "description": "Encoded as a base64 string per RFC 4648, section 4.",
          "value": "BYTES"
        },
        {
          "name": "Timestamp",
          "description": "Encoded as an RFC 3339 timestamp with mandatory \"Z\" time zone string: 1985-04-12T23:20:50.52Z",
          "value": "TIMESTAMP"
        },
        {
          "name": "Date",
          "description": "Encoded as RFC 3339 full-date format string: 1985-04-12",
          "value": "DATE"
        },
        {
          "name": "Time",
          "description": "Encoded as RFC 3339 partial-time format string: 23:20:50.52",
          "value": "TIME"
        },
        {
          "name": "Datetime",
          "description": "Encoded as RFC 3339 full-date \"T\" partial-time: 1985-04-12T23:20:50.52",
          "value": "DATETIME"
        },
        {
          "name": "Interval",
          "description": "Encoded as fully qualified 3 part: 0-5 15 2:30:45.6",
          "value": "INTERVAL"
        },
        {
          "name": "Geography",
          "description": "Encoded as WKT",
          "value": "GEOGRAPHY"
        },
        {
          "name": "Numeric",
          "description": "Encoded as a decimal string.",
          "value": "NUMERIC"
        },
        {
          "name": "Bignumeric",
          "description": "Encoded as a decimal string.",
          "value": "BIGNUMERIC"
        },
        {
          "name": "Json",
          "description": "Encoded as a string.",
          "value": "JSON"
        },
        {
          "name": "Array",
          "description": "Encoded as a list with types matching Type.array_type.",
          "value": "ARRAY"
        },
        {
          "name": "Struct",
          "description": "Encoded as a list with fields of type Type.struct_type[i]. List is used because a JSON object cannot have duplicate field names.",
          "value": "STRUCT"
        },
        {
          "name": "Range",
          "description": "Encoded as a pair with types matching range_element_type. Pairs must begin with \"[\", end with \")\", and be separated by \", \".",
          "value": "RANGE"
        }
      ]
    },
    "google-native:bigquery/v2:StandardSqlField": {
      "description": "A field or a column.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. The name of this field. Can be absent for struct fields."
        },
        "type": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataType",
          "description": "Optional. The type of this parameter. Absent if not explicitly specified (e.g., CREATE FUNCTION statement can omit the return type; in this case the output parameter does not have this \"type\" field)."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:StandardSqlFieldResponse": {
      "description": "A field or a column.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. The name of this field. Can be absent for struct fields."
        },
        "type": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataTypeResponse",
          "description": "Optional. The type of this parameter. Absent if not explicitly specified (e.g., CREATE FUNCTION statement can omit the return type; in this case the output parameter does not have this \"type\" field)."
        }
      },
      "type": "object",
      "required": [
        "name",
        "type"
      ]
    },
    "google-native:bigquery/v2:StandardSqlStructType": {
      "description": "The representation of a SQL STRUCT type.",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlField"
          },
          "description": "Fields within the struct."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:StandardSqlStructTypeResponse": {
      "description": "The representation of a SQL STRUCT type.",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlFieldResponse"
          },
          "description": "Fields within the struct."
        }
      },
      "type": "object",
      "required": [
        "fields"
      ]
    },
    "google-native:bigquery/v2:StandardSqlTableType": {
      "description": "A table type",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlField"
          },
          "description": "The columns in this table type"
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:StandardSqlTableTypeResponse": {
      "description": "A table type",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlFieldResponse"
          },
          "description": "The columns in this table type"
        }
      },
      "type": "object",
      "required": [
        "columns"
      ]
    },
    "google-native:bigquery/v2:StreamingbufferResponse": {
      "properties": {
        "estimatedBytes": {
          "type": "string",
          "description": "A lower-bound estimate of the number of bytes currently in the streaming buffer."
        },
        "estimatedRows": {
          "type": "string",
          "description": "A lower-bound estimate of the number of rows currently in the streaming buffer."
        },
        "oldestEntryTime": {
          "type": "string",
          "description": "Contains the timestamp of the oldest entry in the streaming buffer, in milliseconds since the epoch, if the streaming buffer is available."
        }
      },
      "type": "object",
      "required": [
        "estimatedBytes",
        "estimatedRows",
        "oldestEntryTime"
      ]
    },
    "google-native:bigquery/v2:TableConstraints": {
      "properties": {
        "foreignKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsForeignKeysItem"
          },
          "description": "[Optional] The foreign keys of the tables."
        },
        "primaryKey": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsPrimaryKey",
          "description": "[Optional] The primary key of the table."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableConstraintsForeignKeysItem": {
      "properties": {
        "columnReferences": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsForeignKeysItemColumnReferencesItem"
          }
        },
        "name": {
          "type": "string"
        },
        "referencedTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsForeignKeysItemReferencedTable"
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableConstraintsForeignKeysItemColumnReferencesItem": {
      "properties": {
        "referencedColumn": {
          "type": "string"
        },
        "referencingColumn": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableConstraintsForeignKeysItemColumnReferencesItemResponse": {
      "properties": {
        "referencedColumn": {
          "type": "string"
        },
        "referencingColumn": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "referencedColumn",
        "referencingColumn"
      ]
    },
    "google-native:bigquery/v2:TableConstraintsForeignKeysItemReferencedTable": {
      "properties": {
        "datasetId": {
          "type": "string"
        },
        "project": {
          "type": "string"
        },
        "tableId": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableConstraintsForeignKeysItemReferencedTableResponse": {
      "properties": {
        "datasetId": {
          "type": "string"
        },
        "project": {
          "type": "string"
        },
        "tableId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "project",
        "tableId"
      ]
    },
    "google-native:bigquery/v2:TableConstraintsForeignKeysItemResponse": {
      "properties": {
        "columnReferences": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsForeignKeysItemColumnReferencesItemResponse"
          }
        },
        "name": {
          "type": "string"
        },
        "referencedTable": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsForeignKeysItemReferencedTableResponse"
        }
      },
      "type": "object",
      "required": [
        "columnReferences",
        "name",
        "referencedTable"
      ]
    },
    "google-native:bigquery/v2:TableConstraintsPrimaryKey": {
      "description": "[Optional] The primary key of the table.",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableConstraintsPrimaryKeyResponse": {
      "description": "[Optional] The primary key of the table.",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "columns"
      ]
    },
    "google-native:bigquery/v2:TableConstraintsResponse": {
      "properties": {
        "foreignKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsForeignKeysItemResponse"
          },
          "description": "[Optional] The foreign keys of the tables."
        },
        "primaryKey": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsPrimaryKeyResponse",
          "description": "[Optional] The primary key of the table."
        }
      },
      "type": "object",
      "required": [
        "foreignKeys",
        "primaryKey"
      ]
    },
    "google-native:bigquery/v2:TableFieldSchema": {
      "properties": {
        "categories": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchemaCategories",
          "description": "[Optional] The categories attached to this field, used for field-level access control."
        },
        "collation": {
          "type": "string",
          "description": "Optional. Collation specification of the field. It only can be set on string type field."
        },
        "defaultValueExpression": {
          "type": "string",
          "description": "Optional. A SQL expression to specify the default value for this field. It can only be set for top level fields (columns). You can use struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are: - Literals for all data types, including STRUCT and ARRAY. - Following functions: - CURRENT_TIMESTAMP - CURRENT_TIME - CURRENT_DATE - CURRENT_DATETIME - GENERATE_UUID - RAND - SESSION_USER - ST_GEOGPOINT - Struct or array composed with the above allowed functions, for example, [CURRENT_DATE(), DATE '2020-01-01']"
        },
        "description": {
          "type": "string",
          "description": "[Optional] The field description. The maximum length is 1,024 characters."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchema"
          },
          "description": "[Optional] Describes the nested schema fields if the type property is set to RECORD."
        },
        "maxLength": {
          "type": "string",
          "description": "[Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = \"STRING\", then max_length represents the maximum UTF-8 length of strings in this field. If type = \"BYTES\", then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ \"STRING\" and ≠ \"BYTES\"."
        },
        "mode": {
          "type": "string",
          "description": "[Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE."
        },
        "name": {
          "type": "string",
          "description": "[Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 300 characters."
        },
        "policyTags": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchemaPolicyTags"
        },
        "precision": {
          "type": "string",
          "description": "[Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ \"NUMERIC\" and ≠ \"BIGNUMERIC\". If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = \"NUMERIC\": 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = \"BIGNUMERIC\": 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = \"NUMERIC\": 1 ≤ precision ≤ 29. - If type = \"BIGNUMERIC\": 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid."
        },
        "rangeElementType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchemaRangeElementType",
          "description": "Optional. The subtype of the RANGE, if the type of this field is RANGE. If the type is RANGE, this field is required. Possible values for the field element type of a RANGE include: - DATE - DATETIME - TIMESTAMP"
        },
        "roundingMode": {
          "type": "string",
          "description": "Optional. Rounding Mode specification of the field. It only can be set on NUMERIC or BIGNUMERIC type fields."
        },
        "scale": {
          "type": "string",
          "description": "[Optional] See documentation for precision."
        },
        "type": {
          "type": "string",
          "description": "[Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD)."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableFieldSchemaCategories": {
      "description": "[Optional] The categories attached to this field, used for field-level access control.",
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of category resource names. For example, \"projects/1/taxonomies/2/categories/3\". At most 5 categories are allowed."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableFieldSchemaCategoriesResponse": {
      "description": "[Optional] The categories attached to this field, used for field-level access control.",
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of category resource names. For example, \"projects/1/taxonomies/2/categories/3\". At most 5 categories are allowed."
        }
      },
      "type": "object",
      "required": [
        "names"
      ]
    },
    "google-native:bigquery/v2:TableFieldSchemaPolicyTags": {
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of category resource names. For example, \"projects/1/location/eu/taxonomies/2/policyTags/3\". At most 1 policy tag is allowed."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableFieldSchemaPolicyTagsResponse": {
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of category resource names. For example, \"projects/1/location/eu/taxonomies/2/policyTags/3\". At most 1 policy tag is allowed."
        }
      },
      "type": "object",
      "required": [
        "names"
      ]
    },
    "google-native:bigquery/v2:TableFieldSchemaRangeElementType": {
      "description": "Optional. The subtype of the RANGE, if the type of this field is RANGE. If the type is RANGE, this field is required. Possible values for the field element type of a RANGE include: - DATE - DATETIME - TIMESTAMP",
      "properties": {
        "type": {
          "type": "string",
          "description": "The field element type of a RANGE"
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableFieldSchemaRangeElementTypeResponse": {
      "description": "Optional. The subtype of the RANGE, if the type of this field is RANGE. If the type is RANGE, this field is required. Possible values for the field element type of a RANGE include: - DATE - DATETIME - TIMESTAMP",
      "properties": {
        "type": {
          "type": "string",
          "description": "The field element type of a RANGE"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:bigquery/v2:TableFieldSchemaResponse": {
      "properties": {
        "categories": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchemaCategoriesResponse",
          "description": "[Optional] The categories attached to this field, used for field-level access control."
        },
        "collation": {
          "type": "string",
          "description": "Optional. Collation specification of the field. It only can be set on string type field."
        },
        "defaultValueExpression": {
          "type": "string",
          "description": "Optional. A SQL expression to specify the default value for this field. It can only be set for top level fields (columns). You can use struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are: - Literals for all data types, including STRUCT and ARRAY. - Following functions: - CURRENT_TIMESTAMP - CURRENT_TIME - CURRENT_DATE - CURRENT_DATETIME - GENERATE_UUID - RAND - SESSION_USER - ST_GEOGPOINT - Struct or array composed with the above allowed functions, for example, [CURRENT_DATE(), DATE '2020-01-01']"
        },
        "description": {
          "type": "string",
          "description": "[Optional] The field description. The maximum length is 1,024 characters."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchemaResponse"
          },
          "description": "[Optional] Describes the nested schema fields if the type property is set to RECORD."
        },
        "maxLength": {
          "type": "string",
          "description": "[Optional] Maximum length of values of this field for STRINGS or BYTES. If max_length is not specified, no maximum length constraint is imposed on this field. If type = \"STRING\", then max_length represents the maximum UTF-8 length of strings in this field. If type = \"BYTES\", then max_length represents the maximum number of bytes in this field. It is invalid to set this field if type ≠ \"STRING\" and ≠ \"BYTES\"."
        },
        "mode": {
          "type": "string",
          "description": "[Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE."
        },
        "name": {
          "type": "string",
          "description": "[Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 300 characters."
        },
        "policyTags": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchemaPolicyTagsResponse"
        },
        "precision": {
          "type": "string",
          "description": "[Optional] Precision (maximum number of total digits in base 10) and scale (maximum number of digits in the fractional part in base 10) constraints for values of this field for NUMERIC or BIGNUMERIC. It is invalid to set precision or scale if type ≠ \"NUMERIC\" and ≠ \"BIGNUMERIC\". If precision and scale are not specified, no value range constraint is imposed on this field insofar as values are permitted by the type. Values of this NUMERIC or BIGNUMERIC field must be in this range when: - Precision (P) and scale (S) are specified: [-10P-S + 10-S, 10P-S - 10-S] - Precision (P) is specified but not scale (and thus scale is interpreted to be equal to zero): [-10P + 1, 10P - 1]. Acceptable values for precision and scale if both are specified: - If type = \"NUMERIC\": 1 ≤ precision - scale ≤ 29 and 0 ≤ scale ≤ 9. - If type = \"BIGNUMERIC\": 1 ≤ precision - scale ≤ 38 and 0 ≤ scale ≤ 38. Acceptable values for precision if only precision is specified but not scale (and thus scale is interpreted to be equal to zero): - If type = \"NUMERIC\": 1 ≤ precision ≤ 29. - If type = \"BIGNUMERIC\": 1 ≤ precision ≤ 38. If scale is specified but not precision, then it is invalid."
        },
        "rangeElementType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchemaRangeElementTypeResponse",
          "description": "Optional. The subtype of the RANGE, if the type of this field is RANGE. If the type is RANGE, this field is required. Possible values for the field element type of a RANGE include: - DATE - DATETIME - TIMESTAMP"
        },
        "roundingMode": {
          "type": "string",
          "description": "Optional. Rounding Mode specification of the field. It only can be set on NUMERIC or BIGNUMERIC type fields."
        },
        "scale": {
          "type": "string",
          "description": "[Optional] See documentation for precision."
        },
        "type": {
          "type": "string",
          "description": "[Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), NUMERIC, BIGNUMERIC, BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, INTERVAL, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD)."
        }
      },
      "type": "object",
      "required": [
        "categories",
        "collation",
        "defaultValueExpression",
        "description",
        "fields",
        "maxLength",
        "mode",
        "name",
        "policyTags",
        "precision",
        "rangeElementType",
        "roundingMode",
        "scale",
        "type"
      ]
    },
    "google-native:bigquery/v2:TableReference": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "[Required] The ID of the dataset containing this table."
        },
        "project": {
          "type": "string",
          "description": "[Required] The ID of the project containing this table."
        },
        "tableId": {
          "type": "string",
          "description": "[Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableReferenceResponse": {
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "[Required] The ID of the dataset containing this table."
        },
        "project": {
          "type": "string",
          "description": "[Required] The ID of the project containing this table."
        },
        "tableId": {
          "type": "string",
          "description": "[Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "project",
        "tableId"
      ]
    },
    "google-native:bigquery/v2:TableSchema": {
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchema"
          },
          "description": "Describes the fields in a table."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TableSchemaResponse": {
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableFieldSchemaResponse"
          },
          "description": "Describes the fields in a table."
        }
      },
      "type": "object",
      "required": [
        "fields"
      ]
    },
    "google-native:bigquery/v2:TimePartitioning": {
      "properties": {
        "expirationMs": {
          "type": "string",
          "description": "[Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value."
        },
        "field": {
          "type": "string",
          "description": "[Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either '_PARTITIONTIME' as TIMESTAMP type, or '_PARTITIONDATE' as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED."
        },
        "requirePartitionFilter": {
          "type": "boolean"
        },
        "type": {
          "type": "string",
          "description": "[Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:TimePartitioningResponse": {
      "properties": {
        "expirationMs": {
          "type": "string",
          "description": "[Optional] Number of milliseconds for which to keep the storage for partitions in the table. The storage in a partition will have an expiration time of its partition time plus this value."
        },
        "field": {
          "type": "string",
          "description": "[Beta] [Optional] If not set, the table is partitioned by pseudo column, referenced via either '_PARTITIONTIME' as TIMESTAMP type, or '_PARTITIONDATE' as DATE type. If field is specified, the table is instead partitioned by this field. The field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED."
        },
        "requirePartitionFilter": {
          "type": "boolean"
        },
        "type": {
          "type": "string",
          "description": "[Required] The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively. When the type is not specified, the default behavior is DAY."
        }
      },
      "type": "object",
      "required": [
        "expirationMs",
        "field",
        "requirePartitionFilter",
        "type"
      ]
    },
    "google-native:bigquery/v2:TransactionInfoResponse": {
      "properties": {
        "transactionId": {
          "type": "string",
          "description": "// [Alpha] Id of the transaction."
        }
      },
      "type": "object",
      "required": [
        "transactionId"
      ]
    },
    "google-native:bigquery/v2:UserDefinedFunctionResource": {
      "description": "This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions",
      "properties": {
        "inlineCode": {
          "type": "string",
          "description": "[Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code."
        },
        "resourceUri": {
          "type": "string",
          "description": "[Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path)."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:UserDefinedFunctionResourceResponse": {
      "description": "This is used for defining User Defined Function (UDF) resources only when using legacy SQL. Users of Standard SQL should leverage either DDL (e.g. CREATE [TEMPORARY] FUNCTION ... ) or the Routines API to define UDF resources. For additional information on migrating, see: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions",
      "properties": {
        "inlineCode": {
          "type": "string",
          "description": "[Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code."
        },
        "resourceUri": {
          "type": "string",
          "description": "[Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path)."
        }
      },
      "type": "object",
      "required": [
        "inlineCode",
        "resourceUri"
      ]
    },
    "google-native:bigquery/v2:ViewDefinition": {
      "properties": {
        "query": {
          "type": "string",
          "description": "[Required] A query that BigQuery executes when the view is referenced."
        },
        "useExplicitColumnNames": {
          "type": "boolean",
          "description": "True if the column names are explicitly specified. For example by using the 'CREATE VIEW v(c1, c2) AS ...' syntax. Can only be set using BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/"
        },
        "useLegacySql": {
          "type": "boolean",
          "description": "Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value."
        },
        "userDefinedFunctionResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:UserDefinedFunctionResource"
          },
          "description": "Describes user-defined function resources used in the query."
        }
      },
      "type": "object"
    },
    "google-native:bigquery/v2:ViewDefinitionResponse": {
      "properties": {
        "query": {
          "type": "string",
          "description": "[Required] A query that BigQuery executes when the view is referenced."
        },
        "useExplicitColumnNames": {
          "type": "boolean",
          "description": "True if the column names are explicitly specified. For example by using the 'CREATE VIEW v(c1, c2) AS ...' syntax. Can only be set using BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/"
        },
        "useLegacySql": {
          "type": "boolean",
          "description": "Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value."
        },
        "userDefinedFunctionResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:UserDefinedFunctionResourceResponse"
          },
          "description": "Describes user-defined function resources used in the query."
        }
      },
      "type": "object",
      "required": [
        "query",
        "useExplicitColumnNames",
        "useLegacySql",
        "userDefinedFunctionResources"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:bigqueryconnection/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:bigqueryconnection/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:bigqueryconnection/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:bigqueryconnection/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:CloudSqlCredential": {
      "description": "Credential info for the Cloud SQL.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The password for the credential."
        },
        "username": {
          "type": "string",
          "description": "The username for the credential."
        }
      },
      "type": "object"
    },
    "google-native:bigqueryconnection/v1beta1:CloudSqlCredentialResponse": {
      "description": "Credential info for the Cloud SQL.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The password for the credential."
        },
        "username": {
          "type": "string",
          "description": "The username for the credential."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:CloudSqlProperties": {
      "description": "Connection properties specific to the Cloud SQL.",
      "properties": {
        "credential": {
          "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:CloudSqlCredential",
          "description": "Input only. Cloud SQL credential."
        },
        "database": {
          "type": "string",
          "description": "Database name."
        },
        "instanceId": {
          "type": "string",
          "description": "Cloud SQL instance ID in the form `project:location:instance`."
        },
        "type": {
          "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:CloudSqlPropertiesType",
          "description": "Type of the Cloud SQL database."
        }
      },
      "type": "object"
    },
    "google-native:bigqueryconnection/v1beta1:CloudSqlPropertiesResponse": {
      "description": "Connection properties specific to the Cloud SQL.",
      "properties": {
        "credential": {
          "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:CloudSqlCredentialResponse",
          "description": "Input only. Cloud SQL credential."
        },
        "database": {
          "type": "string",
          "description": "Database name."
        },
        "instanceId": {
          "type": "string",
          "description": "Cloud SQL instance ID in the form `project:location:instance`."
        },
        "serviceAccountId": {
          "type": "string",
          "description": "The account ID of the service used for the purpose of this connection. When 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."
        },
        "type": {
          "type": "string",
          "description": "Type of the Cloud SQL database."
        }
      },
      "type": "object",
      "required": [
        "credential",
        "database",
        "instanceId",
        "serviceAccountId",
        "type"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:CloudSqlPropertiesType": {
      "description": "Type of the Cloud SQL database.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "Unspecified database type.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Postgres",
          "description": "Cloud SQL for PostgreSQL.",
          "value": "POSTGRES"
        },
        {
          "name": "Mysql",
          "description": "Cloud SQL for MySQL.",
          "value": "MYSQL"
        }
      ]
    },
    "google-native:bigqueryconnection/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:bigqueryconnection/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:bigquerydatapolicy/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:bigquerydatapolicy/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:bigquerydatapolicy/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:bigquerydatapolicy/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:bigquerydatapolicy/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:bigquerydatapolicy/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:bigquerydatapolicy/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:bigquerydatapolicy/v1:DataMaskingPolicy": {
      "description": "The data masking policy that is used to specify data masking rule.",
      "properties": {
        "predefinedExpression": {
          "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:DataMaskingPolicyPredefinedExpression",
          "description": "A predefined masking expression."
        },
        "routine": {
          "type": "string",
          "description": "The name of the BigQuery routine that contains the custom masking routine, in the format of `projects/{project_number}/datasets/{dataset_id}/routines/{routine_id}`."
        }
      },
      "type": "object"
    },
    "google-native:bigquerydatapolicy/v1:DataMaskingPolicyPredefinedExpression": {
      "description": "A predefined masking expression.",
      "type": "string",
      "enum": [
        {
          "name": "PredefinedExpressionUnspecified",
          "description": "Default, unspecified predefined expression. No masking will take place since no expression is specified.",
          "value": "PREDEFINED_EXPRESSION_UNSPECIFIED"
        },
        {
          "name": "Sha256",
          "description": "Masking expression to replace data with SHA-256 hash.",
          "value": "SHA256"
        },
        {
          "name": "AlwaysNull",
          "description": "Masking expression to replace data with NULLs.",
          "value": "ALWAYS_NULL"
        },
        {
          "name": "DefaultMaskingValue",
          "description": "Masking expression to replace data with their default masking values. The default masking values for each type listed as below: * STRING: \"\" * BYTES: b'' * INTEGER: 0 * FLOAT: 0.0 * NUMERIC: 0 * BOOLEAN: FALSE * TIMESTAMP: 1970-01-01 00:00:00 UTC * DATE: 1970-01-01 * TIME: 00:00:00 * DATETIME: 1970-01-01T00:00:00 * GEOGRAPHY: POINT(0 0) * BIGNUMERIC: 0 * ARRAY: [] * STRUCT: NOT_APPLICABLE * JSON: NULL",
          "value": "DEFAULT_MASKING_VALUE"
        },
        {
          "name": "LastFourCharacters",
          "description": "Masking expression shows the last four characters of text. The masking behavior is as follows: * If text length > 4 characters: Replace text with XXXXX, append last four characters of original text. * If text length <= 4 characters: Apply SHA-256 hash.",
          "value": "LAST_FOUR_CHARACTERS"
        },
        {
          "name": "FirstFourCharacters",
          "description": "Masking expression shows the first four characters of text. The masking behavior is as follows: * If text length > 4 characters: Replace text with XXXXX, prepend first four characters of original text. * If text length <= 4 characters: Apply SHA-256 hash.",
          "value": "FIRST_FOUR_CHARACTERS"
        },
        {
          "name": "EmailMask",
          "description": "Masking expression for email addresses. The masking behavior is as follows: * Syntax-valid email address: Replace username with XXXXX. For example, cloudysanfrancisco@gmail.com becomes XXXXX@gmail.com. * Syntax-invalid email address: Apply SHA-256 hash. For more information, see Email mask.",
          "value": "EMAIL_MASK"
        },
        {
          "name": "DateYearMask",
          "description": "Masking expression to only show the *year* of `Date`, `DateTime` and `TimeStamp`. For example, with the year 2076: * DATE : 2076-01-01 * DATETIME : 2076-01-01T00:00:00 * TIMESTAMP : 2076-01-01 00:00:00 UTC Truncation occurs according to the UTC time zone. To change this, adjust the default time zone using the `time_zone` system variable. For more information, see the System variables reference.",
          "value": "DATE_YEAR_MASK"
        }
      ]
    },
    "google-native:bigquerydatapolicy/v1:DataMaskingPolicyResponse": {
      "description": "The data masking policy that is used to specify data masking rule.",
      "properties": {
        "predefinedExpression": {
          "type": "string",
          "description": "A predefined masking expression."
        },
        "routine": {
          "type": "string",
          "description": "The name of the BigQuery routine that contains the custom masking routine, in the format of `projects/{project_number}/datasets/{dataset_id}/routines/{routine_id}`."
        }
      },
      "type": "object",
      "required": [
        "predefinedExpression",
        "routine"
      ]
    },
    "google-native:bigquerydatapolicy/v1:DataPolicyDataPolicyType": {
      "description": "Type of data policy.",
      "type": "string",
      "enum": [
        {
          "name": "DataPolicyTypeUnspecified",
          "description": "Default value for the data policy type. This should not be used.",
          "value": "DATA_POLICY_TYPE_UNSPECIFIED"
        },
        {
          "name": "ColumnLevelSecurityPolicy",
          "description": "Used to create a data policy for column-level security, without data masking.",
          "value": "COLUMN_LEVEL_SECURITY_POLICY"
        },
        {
          "name": "DataMaskingPolicy",
          "description": "Used to create a data policy for data masking.",
          "value": "DATA_MASKING_POLICY"
        }
      ]
    },
    "google-native:bigquerydatapolicy/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:bigquerydatapolicy/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:bigquerydatatransfer/v1:EmailPreferences": {
      "description": "Represents preferences for sending email notifications for transfer run events.",
      "properties": {
        "enableFailureEmail": {
          "type": "boolean",
          "description": "If true, email notifications will be sent on transfer run failures."
        }
      },
      "type": "object"
    },
    "google-native:bigquerydatatransfer/v1:EmailPreferencesResponse": {
      "description": "Represents preferences for sending email notifications for transfer run events.",
      "properties": {
        "enableFailureEmail": {
          "type": "boolean",
          "description": "If true, email notifications will be sent on transfer run failures."
        }
      },
      "type": "object",
      "required": [
        "enableFailureEmail"
      ]
    },
    "google-native:bigquerydatatransfer/v1:EncryptionConfiguration": {
      "description": "Represents the encryption configuration for a transfer.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the KMS key used for encrypting BigQuery data."
        }
      },
      "type": "object"
    },
    "google-native:bigquerydatatransfer/v1:EncryptionConfigurationResponse": {
      "description": "Represents the encryption configuration for a transfer.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the KMS key used for encrypting BigQuery data."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:bigquerydatatransfer/v1:ScheduleOptions": {
      "description": "Options customizing the data transfer schedule.",
      "properties": {
        "disableAutoScheduling": {
          "type": "boolean",
          "description": "If true, automatic scheduling of data transfer runs for this configuration will be disabled. The runs can be started on ad-hoc basis using StartManualTransferRuns API. When automatic scheduling is disabled, the TransferConfig.schedule field will be ignored."
        },
        "endTime": {
          "type": "string",
          "description": "Defines time to stop scheduling transfer runs. A transfer run cannot be scheduled at or after the end time. The end time can be changed at any moment. The time when a data transfer can be trigerred manually is not limited by this option."
        },
        "startTime": {
          "type": "string",
          "description": "Specifies time to start scheduling transfer runs. The first run will be scheduled at or after the start time according to a recurrence pattern defined in the schedule string. The start time can be changed at any moment. The time when a data transfer can be trigerred manually is not limited by this option."
        }
      },
      "type": "object"
    },
    "google-native:bigquerydatatransfer/v1:ScheduleOptionsResponse": {
      "description": "Options customizing the data transfer schedule.",
      "properties": {
        "disableAutoScheduling": {
          "type": "boolean",
          "description": "If true, automatic scheduling of data transfer runs for this configuration will be disabled. The runs can be started on ad-hoc basis using StartManualTransferRuns API. When automatic scheduling is disabled, the TransferConfig.schedule field will be ignored."
        },
        "endTime": {
          "type": "string",
          "description": "Defines time to stop scheduling transfer runs. A transfer run cannot be scheduled at or after the end time. The end time can be changed at any moment. The time when a data transfer can be trigerred manually is not limited by this option."
        },
        "startTime": {
          "type": "string",
          "description": "Specifies time to start scheduling transfer runs. The first run will be scheduled at or after the start time according to a recurrence pattern defined in the schedule string. The start time can be changed at any moment. The time when a data transfer can be trigerred manually is not limited by this option."
        }
      },
      "type": "object",
      "required": [
        "disableAutoScheduling",
        "endTime",
        "startTime"
      ]
    },
    "google-native:bigquerydatatransfer/v1:UserInfoResponse": {
      "description": "Information about a user.",
      "properties": {
        "email": {
          "type": "string",
          "description": "E-mail address of the user."
        }
      },
      "type": "object",
      "required": [
        "email"
      ]
    },
    "google-native:bigqueryreservation/v1:Autoscale": {
      "description": "Auto scaling settings.",
      "properties": {
        "maxSlots": {
          "type": "string",
          "description": "Number of slots to be scaled when needed."
        }
      },
      "type": "object"
    },
    "google-native:bigqueryreservation/v1:AutoscaleResponse": {
      "description": "Auto scaling settings.",
      "properties": {
        "currentSlots": {
          "type": "string",
          "description": "The slot capacity added to this reservation when autoscale happens. Will be between [0, max_slots]."
        },
        "maxSlots": {
          "type": "string",
          "description": "Number of slots to be scaled when needed."
        }
      },
      "type": "object",
      "required": [
        "currentSlots",
        "maxSlots"
      ]
    },
    "google-native:bigqueryreservation/v1:CapacityCommitmentEdition": {
      "description": "Edition of the capacity commitment.",
      "type": "string",
      "enum": [
        {
          "name": "EditionUnspecified",
          "description": "Default value, which will be treated as ENTERPRISE.",
          "value": "EDITION_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "Standard edition.",
          "value": "STANDARD"
        },
        {
          "name": "Enterprise",
          "description": "Enterprise edition.",
          "value": "ENTERPRISE"
        },
        {
          "name": "EnterprisePlus",
          "description": "Enterprise plus edition.",
          "value": "ENTERPRISE_PLUS"
        }
      ]
    },
    "google-native:bigqueryreservation/v1:CapacityCommitmentPlan": {
      "description": "Capacity commitment commitment plan.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Invalid plan value. Requests with this value will be rejected with error code `google.rpc.Code.INVALID_ARGUMENT`.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "Flex",
          "description": "Flex commitments have committed period of 1 minute after becoming ACTIVE. After that, they are not in a committed period anymore and can be removed any time.",
          "value": "FLEX"
        },
        {
          "name": "FlexFlatRate",
          "description": "Same as FLEX, should only be used if flat-rate commitments are still available.",
          "value": "FLEX_FLAT_RATE"
        },
        {
          "name": "Trial",
          "description": "Trial commitments have a committed period of 182 days after becoming ACTIVE. After that, they are converted to a new commitment based on the `renewal_plan`. Default `renewal_plan` for Trial commitment is Flex so that it can be deleted right after committed period ends.",
          "value": "TRIAL"
        },
        {
          "name": "Monthly",
          "description": "Monthly commitments have a committed period of 30 days after becoming ACTIVE. After that, they are not in a committed period anymore and can be removed any time.",
          "value": "MONTHLY"
        },
        {
          "name": "MonthlyFlatRate",
          "description": "Same as MONTHLY, should only be used if flat-rate commitments are still available.",
          "value": "MONTHLY_FLAT_RATE"
        },
        {
          "name": "Annual",
          "description": "Annual commitments have a committed period of 365 days after becoming ACTIVE. After that they are converted to a new commitment based on the renewal_plan.",
          "value": "ANNUAL"
        },
        {
          "name": "AnnualFlatRate",
          "description": "Same as ANNUAL, should only be used if flat-rate commitments are still available.",
          "value": "ANNUAL_FLAT_RATE"
        },
        {
          "name": "ThreeYear",
          "description": "3-year commitments have a committed period of 1095(3 * 365) days after becoming ACTIVE. After that they are converted to a new commitment based on the renewal_plan.",
          "value": "THREE_YEAR"
        },
        {
          "name": "None",
          "description": "Should only be used for `renewal_plan` and is only meaningful if edition is specified to values other than EDITION_UNSPECIFIED. Otherwise CreateCapacityCommitmentRequest or UpdateCapacityCommitmentRequest will be rejected with error code `google.rpc.Code.INVALID_ARGUMENT`. If the renewal_plan is NONE, capacity commitment will be removed at the end of its commitment period.",
          "value": "NONE"
        }
      ]
    },
    "google-native:bigqueryreservation/v1:CapacityCommitmentRenewalPlan": {
      "description": "The plan this capacity commitment is converted to after commitment_end_time passes. Once the plan is changed, committed period is extended according to commitment plan. Only applicable for ANNUAL and TRIAL commitments.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Invalid plan value. Requests with this value will be rejected with error code `google.rpc.Code.INVALID_ARGUMENT`.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "Flex",
          "description": "Flex commitments have committed period of 1 minute after becoming ACTIVE. After that, they are not in a committed period anymore and can be removed any time.",
          "value": "FLEX"
        },
        {
          "name": "FlexFlatRate",
          "description": "Same as FLEX, should only be used if flat-rate commitments are still available.",
          "value": "FLEX_FLAT_RATE"
        },
        {
          "name": "Trial",
          "description": "Trial commitments have a committed period of 182 days after becoming ACTIVE. After that, they are converted to a new commitment based on the `renewal_plan`. Default `renewal_plan` for Trial commitment is Flex so that it can be deleted right after committed period ends.",
          "value": "TRIAL"
        },
        {
          "name": "Monthly",
          "description": "Monthly commitments have a committed period of 30 days after becoming ACTIVE. After that, they are not in a committed period anymore and can be removed any time.",
          "value": "MONTHLY"
        },
        {
          "name": "MonthlyFlatRate",
          "description": "Same as MONTHLY, should only be used if flat-rate commitments are still available.",
          "value": "MONTHLY_FLAT_RATE"
        },
        {
          "name": "Annual",
          "description": "Annual commitments have a committed period of 365 days after becoming ACTIVE. After that they are converted to a new commitment based on the renewal_plan.",
          "value": "ANNUAL"
        },
        {
          "name": "AnnualFlatRate",
          "description": "Same as ANNUAL, should only be used if flat-rate commitments are still available.",
          "value": "ANNUAL_FLAT_RATE"
        },
        {
          "name": "ThreeYear",
          "description": "3-year commitments have a committed period of 1095(3 * 365) days after becoming ACTIVE. After that they are converted to a new commitment based on the renewal_plan.",
          "value": "THREE_YEAR"
        },
        {
          "name": "None",
          "description": "Should only be used for `renewal_plan` and is only meaningful if edition is specified to values other than EDITION_UNSPECIFIED. Otherwise CreateCapacityCommitmentRequest or UpdateCapacityCommitmentRequest will be rejected with error code `google.rpc.Code.INVALID_ARGUMENT`. If the renewal_plan is NONE, capacity commitment will be removed at the end of its commitment period.",
          "value": "NONE"
        }
      ]
    },
    "google-native:bigqueryreservation/v1:ReservationEdition": {
      "description": "Edition of the reservation.",
      "type": "string",
      "enum": [
        {
          "name": "EditionUnspecified",
          "description": "Default value, which will be treated as ENTERPRISE.",
          "value": "EDITION_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "Standard edition.",
          "value": "STANDARD"
        },
        {
          "name": "Enterprise",
          "description": "Enterprise edition.",
          "value": "ENTERPRISE"
        },
        {
          "name": "EnterprisePlus",
          "description": "Enterprise plus edition.",
          "value": "ENTERPRISE_PLUS"
        }
      ]
    },
    "google-native:bigqueryreservation/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:bigqueryreservation/v1beta1:CapacityCommitmentPlan": {
      "description": "Capacity commitment commitment plan.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Invalid plan value. Requests with this value will be rejected with error code `google.rpc.Code.INVALID_ARGUMENT`.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "Flex",
          "description": "Flex commitments have committed period of 1 minute after becoming ACTIVE. After that, they are not in a committed period anymore and can be removed any time.",
          "value": "FLEX"
        },
        {
          "name": "Trial",
          "description": "Trial commitments have a committed period of 182 days after becoming ACTIVE. After that, they are converted to a new commitment based on the `renewal_plan`. Default `renewal_plan` for Trial commitment is Flex so that it can be deleted right after committed period ends.",
          "value": "TRIAL"
        },
        {
          "name": "Monthly",
          "description": "Monthly commitments have a committed period of 30 days after becoming ACTIVE. After that, they are not in a committed period anymore and can be removed any time.",
          "value": "MONTHLY"
        },
        {
          "name": "Annual",
          "description": "Annual commitments have a committed period of 365 days after becoming ACTIVE. After that they are converted to a new commitment based on the renewal_plan.",
          "value": "ANNUAL"
        }
      ]
    },
    "google-native:bigqueryreservation/v1beta1:CapacityCommitmentRenewalPlan": {
      "description": "The plan this capacity commitment is converted to after commitment_end_time passes. Once the plan is changed, committed period is extended according to commitment plan. Only applicable for ANNUAL commitments.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Invalid plan value. Requests with this value will be rejected with error code `google.rpc.Code.INVALID_ARGUMENT`.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "Flex",
          "description": "Flex commitments have committed period of 1 minute after becoming ACTIVE. After that, they are not in a committed period anymore and can be removed any time.",
          "value": "FLEX"
        },
        {
          "name": "Trial",
          "description": "Trial commitments have a committed period of 182 days after becoming ACTIVE. After that, they are converted to a new commitment based on the `renewal_plan`. Default `renewal_plan` for Trial commitment is Flex so that it can be deleted right after committed period ends.",
          "value": "TRIAL"
        },
        {
          "name": "Monthly",
          "description": "Monthly commitments have a committed period of 30 days after becoming ACTIVE. After that, they are not in a committed period anymore and can be removed any time.",
          "value": "MONTHLY"
        },
        {
          "name": "Annual",
          "description": "Annual commitments have a committed period of 365 days after becoming ACTIVE. After that they are converted to a new commitment based on the renewal_plan.",
          "value": "ANNUAL"
        }
      ]
    },
    "google-native:bigqueryreservation/v1beta1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:bigtableadmin/v2:AppProfilePriority": {
      "description": "This field has been deprecated in favor of `standard_isolation.priority`. If you set this field, `standard_isolation.priority` will be set instead. The priority of requests sent using this app profile.",
      "type": "string",
      "enum": [
        {
          "name": "PriorityUnspecified",
          "description": "Default value. Mapped to PRIORITY_HIGH (the legacy behavior) on creation.",
          "value": "PRIORITY_UNSPECIFIED"
        },
        {
          "name": "PriorityLow",
          "value": "PRIORITY_LOW"
        },
        {
          "name": "PriorityMedium",
          "value": "PRIORITY_MEDIUM"
        },
        {
          "name": "PriorityHigh",
          "value": "PRIORITY_HIGH"
        }
      ]
    },
    "google-native:bigtableadmin/v2:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:bigtableadmin/v2:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:bigtableadmin/v2:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:bigtableadmin/v2:AutoscalingLimits": {
      "description": "Limits for the number of nodes a Cluster can autoscale up/down to.",
      "properties": {
        "maxServeNodes": {
          "type": "integer",
          "description": "Maximum number of nodes to scale up to."
        },
        "minServeNodes": {
          "type": "integer",
          "description": "Minimum number of nodes to scale down to."
        }
      },
      "type": "object",
      "required": [
        "maxServeNodes",
        "minServeNodes"
      ]
    },
    "google-native:bigtableadmin/v2:AutoscalingLimitsResponse": {
      "description": "Limits for the number of nodes a Cluster can autoscale up/down to.",
      "properties": {
        "maxServeNodes": {
          "type": "integer",
          "description": "Maximum number of nodes to scale up to."
        },
        "minServeNodes": {
          "type": "integer",
          "description": "Minimum number of nodes to scale down to."
        }
      },
      "type": "object",
      "required": [
        "maxServeNodes",
        "minServeNodes"
      ]
    },
    "google-native:bigtableadmin/v2:AutoscalingTargets": {
      "description": "The Autoscaling targets for a Cluster. These determine the recommended nodes.",
      "properties": {
        "cpuUtilizationPercent": {
          "type": "integer",
          "description": "The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization), and is limited between 10 and 80, otherwise it will return INVALID_ARGUMENT error."
        },
        "storageUtilizationGibPerNode": {
          "type": "integer",
          "description": "The storage utilization that the Autoscaler should be trying to achieve. This number is limited between 2560 (2.5TiB) and 5120 (5TiB) for a SSD cluster and between 8192 (8TiB) and 16384 (16TiB) for an HDD cluster, otherwise it will return INVALID_ARGUMENT error. If this value is set to 0, it will be treated as if it were set to the default value: 2560 for SSD, 8192 for HDD."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:AutoscalingTargetsResponse": {
      "description": "The Autoscaling targets for a Cluster. These determine the recommended nodes.",
      "properties": {
        "cpuUtilizationPercent": {
          "type": "integer",
          "description": "The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization), and is limited between 10 and 80, otherwise it will return INVALID_ARGUMENT error."
        },
        "storageUtilizationGibPerNode": {
          "type": "integer",
          "description": "The storage utilization that the Autoscaler should be trying to achieve. This number is limited between 2560 (2.5TiB) and 5120 (5TiB) for a SSD cluster and between 8192 (8TiB) and 16384 (16TiB) for an HDD cluster, otherwise it will return INVALID_ARGUMENT error. If this value is set to 0, it will be treated as if it were set to the default value: 2560 for SSD, 8192 for HDD."
        }
      },
      "type": "object",
      "required": [
        "cpuUtilizationPercent",
        "storageUtilizationGibPerNode"
      ]
    },
    "google-native:bigtableadmin/v2:BackupInfoResponse": {
      "description": "Information about a backup.",
      "properties": {
        "backup": {
          "type": "string",
          "description": "Name of the backup."
        },
        "endTime": {
          "type": "string",
          "description": "This time that the backup was finished. Row data in the backup will be no newer than this timestamp."
        },
        "sourceBackup": {
          "type": "string",
          "description": "Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//backups/."
        },
        "sourceTable": {
          "type": "string",
          "description": "Name of the table the backup was created from."
        },
        "startTime": {
          "type": "string",
          "description": "The time that the backup was started. Row data in the backup will be no older than this timestamp."
        }
      },
      "type": "object",
      "required": [
        "backup",
        "endTime",
        "sourceBackup",
        "sourceTable",
        "startTime"
      ]
    },
    "google-native:bigtableadmin/v2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:bigtableadmin/v2:ChangeStreamConfig": {
      "description": "Change stream configuration.",
      "properties": {
        "retentionPeriod": {
          "type": "string",
          "description": "How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:ChangeStreamConfigResponse": {
      "description": "Change stream configuration.",
      "properties": {
        "retentionPeriod": {
          "type": "string",
          "description": "How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity."
        }
      },
      "type": "object",
      "required": [
        "retentionPeriod"
      ]
    },
    "google-native:bigtableadmin/v2:ClusterAutoscalingConfig": {
      "description": "Autoscaling config for a cluster.",
      "properties": {
        "autoscalingLimits": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:AutoscalingLimits",
          "description": "Autoscaling limits for this cluster."
        },
        "autoscalingTargets": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:AutoscalingTargets",
          "description": "Autoscaling targets for this cluster."
        }
      },
      "type": "object",
      "required": [
        "autoscalingLimits",
        "autoscalingTargets"
      ]
    },
    "google-native:bigtableadmin/v2:ClusterAutoscalingConfigResponse": {
      "description": "Autoscaling config for a cluster.",
      "properties": {
        "autoscalingLimits": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:AutoscalingLimitsResponse",
          "description": "Autoscaling limits for this cluster."
        },
        "autoscalingTargets": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:AutoscalingTargetsResponse",
          "description": "Autoscaling targets for this cluster."
        }
      },
      "type": "object",
      "required": [
        "autoscalingLimits",
        "autoscalingTargets"
      ]
    },
    "google-native:bigtableadmin/v2:ClusterConfig": {
      "description": "Configuration for a cluster.",
      "properties": {
        "clusterAutoscalingConfig": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:ClusterAutoscalingConfig",
          "description": "Autoscaling configuration for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:ClusterConfigResponse": {
      "description": "Configuration for a cluster.",
      "properties": {
        "clusterAutoscalingConfig": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:ClusterAutoscalingConfigResponse",
          "description": "Autoscaling configuration for this cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterAutoscalingConfig"
      ]
    },
    "google-native:bigtableadmin/v2:ClusterDefaultStorageType": {
      "description": "Immutable. The type of storage used by this cluster to serve its parent instance's tables, unless explicitly overridden.",
      "type": "string",
      "enum": [
        {
          "name": "StorageTypeUnspecified",
          "description": "The user did not specify a storage type.",
          "value": "STORAGE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Ssd",
          "description": "Flash (SSD) storage should be used.",
          "value": "SSD"
        },
        {
          "name": "Hdd",
          "description": "Magnetic drive (HDD) storage should be used.",
          "value": "HDD"
        }
      ]
    },
    "google-native:bigtableadmin/v2:EncryptionConfig": {
      "description": "Cloud Key Management Service (Cloud KMS) settings for a CMEK-protected cluster.",
      "properties": {
        "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. Values are of the form `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}`"
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:EncryptionConfigResponse": {
      "description": "Cloud Key Management Service (Cloud KMS) settings for a CMEK-protected cluster.",
      "properties": {
        "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. Values are of the form `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}`"
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:bigtableadmin/v2:EncryptionInfoResponse": {
      "description": "Encryption information for a given resource. If this resource is protected with customer managed encryption, the in-use Cloud Key Management Service (Cloud KMS) key version is specified along with its status.",
      "properties": {
        "encryptionStatus": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:StatusResponse",
          "description": "The status of encrypt/decrypt calls on underlying data for this resource. Regardless of status, the existing data is always encrypted at rest."
        },
        "encryptionType": {
          "type": "string",
          "description": "The type of encryption used to protect this resource."
        },
        "kmsKeyVersion": {
          "type": "string",
          "description": "The version of the Cloud KMS key specified in the parent cluster that is in use for the data underlying this table."
        }
      },
      "type": "object",
      "required": [
        "encryptionStatus",
        "encryptionType",
        "kmsKeyVersion"
      ]
    },
    "google-native:bigtableadmin/v2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceType": {
      "description": "The type of the instance. Defaults to `PRODUCTION`.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type of the instance is unspecified. If set when creating an instance, a `PRODUCTION` instance will be created. If set when updating an instance, the type will be left unchanged.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Production",
          "description": "An instance meant for production use. `serve_nodes` must be set on the cluster.",
          "value": "PRODUCTION"
        },
        {
          "name": "Development",
          "description": "DEPRECATED: Prefer PRODUCTION for all use cases, as it no longer enforces a higher minimum node count than DEVELOPMENT.",
          "value": "DEVELOPMENT"
        }
      ]
    },
    "google-native:bigtableadmin/v2:MultiClusterRoutingUseAny": {
      "description": "Read/write requests are routed to the nearest cluster in the instance, and will fail over to the nearest cluster that is available in the event of transient errors or delays. Clusters in a region are considered equidistant. Choosing this option sacrifices read-your-writes consistency to improve availability.",
      "properties": {
        "clusterIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of clusters to route to. The order is ignored; clusters will be tried in order of distance. If left empty, all clusters are eligible."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:MultiClusterRoutingUseAnyResponse": {
      "description": "Read/write requests are routed to the nearest cluster in the instance, and will fail over to the nearest cluster that is available in the event of transient errors or delays. Clusters in a region are considered equidistant. Choosing this option sacrifices read-your-writes consistency to improve availability.",
      "properties": {
        "clusterIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of clusters to route to. The order is ignored; clusters will be tried in order of distance. If left empty, all clusters are eligible."
        }
      },
      "type": "object",
      "required": [
        "clusterIds"
      ]
    },
    "google-native:bigtableadmin/v2:RestoreInfoResponse": {
      "description": "Information about a table restore.",
      "properties": {
        "backupInfo": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:BackupInfoResponse",
          "description": "Information about the backup used to restore the table. The backup may no longer exist."
        },
        "sourceType": {
          "type": "string",
          "description": "The type of the restore source."
        }
      },
      "type": "object",
      "required": [
        "backupInfo",
        "sourceType"
      ]
    },
    "google-native:bigtableadmin/v2:SingleClusterRouting": {
      "description": "Unconditionally routes all read/write requests to a specific cluster. This option preserves read-your-writes consistency but does not improve availability.",
      "properties": {
        "allowTransactionalWrites": {
          "type": "boolean",
          "description": "Whether or not `CheckAndMutateRow` and `ReadModifyWriteRow` requests are allowed by this app profile. It is unsafe to send these requests to the same table/row/column in multiple clusters."
        },
        "clusterId": {
          "type": "string",
          "description": "The cluster to which read/write requests should be routed."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:SingleClusterRoutingResponse": {
      "description": "Unconditionally routes all read/write requests to a specific cluster. This option preserves read-your-writes consistency but does not improve availability.",
      "properties": {
        "allowTransactionalWrites": {
          "type": "boolean",
          "description": "Whether or not `CheckAndMutateRow` and `ReadModifyWriteRow` requests are allowed by this app profile. It is unsafe to send these requests to the same table/row/column in multiple clusters."
        },
        "clusterId": {
          "type": "string",
          "description": "The cluster to which read/write requests should be routed."
        }
      },
      "type": "object",
      "required": [
        "allowTransactionalWrites",
        "clusterId"
      ]
    },
    "google-native:bigtableadmin/v2:Split": {
      "description": "An initial split point for a newly created table.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Row key to use as an initial tablet boundary."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:StandardIsolation": {
      "description": "Standard options for isolating this app profile's traffic from other use cases.",
      "properties": {
        "priority": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:StandardIsolationPriority",
          "description": "The priority of requests sent using this app profile."
        }
      },
      "type": "object"
    },
    "google-native:bigtableadmin/v2:StandardIsolationPriority": {
      "description": "The priority of requests sent using this app profile.",
      "type": "string",
      "enum": [
        {
          "name": "PriorityUnspecified",
          "description": "Default value. Mapped to PRIORITY_HIGH (the legacy behavior) on creation.",
          "value": "PRIORITY_UNSPECIFIED"
        },
        {
          "name": "PriorityLow",
          "value": "PRIORITY_LOW"
        },
        {
          "name": "PriorityMedium",
          "value": "PRIORITY_MEDIUM"
        },
        {
          "name": "PriorityHigh",
          "value": "PRIORITY_HIGH"
        }
      ]
    },
    "google-native:bigtableadmin/v2:StandardIsolationResponse": {
      "description": "Standard options for isolating this app profile's traffic from other use cases.",
      "properties": {
        "priority": {
          "type": "string",
          "description": "The priority of requests sent using this app profile."
        }
      },
      "type": "object",
      "required": [
        "priority"
      ]
    },
    "google-native:bigtableadmin/v2:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:bigtableadmin/v2:TableGranularity": {
      "description": "Immutable. The granularity (i.e. `MILLIS`) at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.",
      "type": "string",
      "enum": [
        {
          "name": "TimestampGranularityUnspecified",
          "description": "The user did not specify a granularity. Should not be returned. When specified during table creation, MILLIS will be used.",
          "value": "TIMESTAMP_GRANULARITY_UNSPECIFIED"
        },
        {
          "name": "Millis",
          "description": "The table keeps data versioned at a granularity of 1ms.",
          "value": "MILLIS"
        }
      ]
    },
    "google-native:bigtableadmin/v2:TableStatsResponse": {
      "description": "Approximate statistics related to a table. These statistics are calculated infrequently, while simultaneously, data in the table can change rapidly. Thus the values reported here (e.g. row count) are very likely out-of date, even the instant they are received in this API. Thus, only treat these values as approximate. IMPORTANT: Everything below is approximate, unless otherwise specified.",
      "properties": {
        "averageCellsPerColumn": {
          "type": "number",
          "description": "How many cells are present per column (column family, column qualifier) combinations, averaged over all columns in all rows in the table. e.g. A table with 2 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (4 cells / 2 columns) * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (15 cells / 3 columns) would report (4 + 15)/(2 + 3) = 3.8 in this field."
        },
        "averageColumnsPerRow": {
          "type": "number",
          "description": "How many (column family, column qualifier) combinations are present per row in the table, averaged over all rows in the table. e.g. A table with 2 rows: * A row with cells in \"family:col\" and \"other:col\" (2 distinct columns) * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (3 distinct columns) would report (2 + 3)/2 = 2.5 in this field."
        },
        "logicalDataBytes": {
          "type": "string",
          "description": "This is roughly how many bytes would be needed to read the entire table (e.g. by streaming all contents out)."
        },
        "rowCount": {
          "type": "string",
          "description": "How many rows are in the table."
        }
      },
      "type": "object",
      "required": [
        "averageCellsPerColumn",
        "averageColumnsPerRow",
        "logicalDataBytes",
        "rowCount"
      ]
    },
    "google-native:billingbudgets/v1:BudgetOwnershipScope": {
      "type": "string",
      "enum": [
        {
          "name": "OwnershipScopeUnspecified",
          "description": "Unspecified ownership scope, same as ALL_USERS.",
          "value": "OWNERSHIP_SCOPE_UNSPECIFIED"
        },
        {
          "name": "AllUsers",
          "description": "Both billing account-level users and project-level users have full access to the budget, if the users have the required IAM permissions.",
          "value": "ALL_USERS"
        },
        {
          "name": "BillingAccount",
          "description": "Only billing account-level users have full access to the budget. Project-level users have read-only access, even if they have the required IAM permissions.",
          "value": "BILLING_ACCOUNT"
        }
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1BudgetAmount": {
      "description": "The budgeted amount for each usage period.",
      "properties": {
        "lastPeriodAmount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1LastPeriodAmount",
          "description": "Use the last period's actual spend as the budget for the present period. LastPeriodAmount can only be set when the budget's time period is a Filter.calendar_period. It cannot be set in combination with Filter.custom_period."
        },
        "specifiedAmount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleTypeMoney",
          "description": "A specified amount to use as the budget. `currency_code` is optional. If specified when creating a budget, it must match the currency of the billing account. If specified when updating a budget, it must match the currency_code of the existing budget. The `currency_code` is provided on output."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1BudgetAmountResponse": {
      "description": "The budgeted amount for each usage period.",
      "properties": {
        "lastPeriodAmount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1LastPeriodAmountResponse",
          "description": "Use the last period's actual spend as the budget for the present period. LastPeriodAmount can only be set when the budget's time period is a Filter.calendar_period. It cannot be set in combination with Filter.custom_period."
        },
        "specifiedAmount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleTypeMoneyResponse",
          "description": "A specified amount to use as the budget. `currency_code` is optional. If specified when creating a budget, it must match the currency of the billing account. If specified when updating a budget, it must match the currency_code of the existing budget. The `currency_code` is provided on output."
        }
      },
      "type": "object",
      "required": [
        "lastPeriodAmount",
        "specifiedAmount"
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1CustomPeriod": {
      "description": "All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).",
      "properties": {
        "endDate": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleTypeDate",
          "description": "Optional. The end date of the time period. Budgets with elapsed end date won't be processed. If unset, specifies to track all usage incurred since the start_date."
        },
        "startDate": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleTypeDate",
          "description": "The start date must be after January 1, 2017."
        }
      },
      "type": "object",
      "required": [
        "startDate"
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1CustomPeriodResponse": {
      "description": "All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).",
      "properties": {
        "endDate": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleTypeDateResponse",
          "description": "Optional. The end date of the time period. Budgets with elapsed end date won't be processed. If unset, specifies to track all usage incurred since the start_date."
        },
        "startDate": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleTypeDateResponse",
          "description": "The start date must be after January 1, 2017."
        }
      },
      "type": "object",
      "required": [
        "endDate",
        "startDate"
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1Filter": {
      "description": "A filter for a budget, limiting the scope of the cost to calculate.",
      "properties": {
        "calendarPeriod": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1FilterCalendarPeriod",
          "description": "Optional. Specifies to track usage for recurring calendar period. For example, assume that CalendarPeriod.QUARTER is set. The budget tracks usage from April 1 to June 30, when the current calendar month is April, May, June. After that, it tracks usage from July 1 to September 30 when the current calendar month is July, August, September, so on."
        },
        "creditTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If Filter.credit_types_treatment is INCLUDE_SPECIFIED_CREDITS, this 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](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). If Filter.credit_types_treatment is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty."
        },
        "creditTypesTreatment": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1FilterCreditTypesTreatment",
          "description": "Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`."
        },
        "customPeriod": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1CustomPeriod",
          "description": "Optional. Specifies to track usage from any start date (required) to any end date (optional). This time period is static, it does not recur."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A single label and value pair specifying that usage from only this set of labeled resources should be included in the budget. If omitted, the report includes all labeled and unlabeled usage. An object containing a single `\"key\": value` pair. Example: `{ \"name\": \"wrench\" }`. _Currently, multiple entries or multiple values per entry are not allowed._"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of projects of the form `projects/{project}`, specifying that usage from only this set of projects should be included in the budget. If omitted, the report includes all usage for the billing account, regardless of which project the usage occurred on."
        },
        "resourceAncestors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of folder and organization names of the form `folders/{folderId}` or `organizations/{organizationId}`, specifying that usage from only this set of folders and organizations should be included in the budget. If omitted, the budget includes all usage that the billing account pays for. If the folder or organization contains projects that are paid for by a different Cloud Billing account, the budget *doesn't* apply to those projects."
        },
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of services of the form `services/{service_id}`, specifying that usage from only this set of services should be included in the budget. If omitted, the report includes usage for all the services. The service names are available through the Catalog API: https://cloud.google.com/billing/v1/how-tos/catalog-api."
        },
        "subaccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of subaccounts of the form `billingAccounts/{account_id}`, specifying that usage from only this set of subaccounts should be included in the budget. If a subaccount is set to the name of the parent account, usage from the parent account is included. If the field is omitted, the report includes usage from the parent account and all subaccounts, if they exist."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1FilterCalendarPeriod": {
      "description": "Optional. Specifies to track usage for recurring calendar period. For example, assume that CalendarPeriod.QUARTER is set. The budget tracks usage from April 1 to June 30, when the current calendar month is April, May, June. After that, it tracks usage from July 1 to September 30 when the current calendar month is July, August, September, so on.",
      "type": "string",
      "enum": [
        {
          "name": "CalendarPeriodUnspecified",
          "description": "Calendar period is unset. This is the default if the budget is for a custom time period (CustomPeriod).",
          "value": "CALENDAR_PERIOD_UNSPECIFIED"
        },
        {
          "name": "Month",
          "description": "A month. Month starts on the first day of each month, such as January 1, February 1, March 1, and so on.",
          "value": "MONTH"
        },
        {
          "name": "Quarter",
          "description": "A quarter. Quarters start on dates January 1, April 1, July 1, and October 1 of each year.",
          "value": "QUARTER"
        },
        {
          "name": "Year",
          "description": "A year. Year starts on January 1.",
          "value": "YEAR"
        }
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1FilterCreditTypesTreatment": {
      "description": "Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`.",
      "type": "string",
      "enum": [
        {
          "name": "CreditTypesTreatmentUnspecified",
          "value": "CREDIT_TYPES_TREATMENT_UNSPECIFIED"
        },
        {
          "name": "IncludeAllCredits",
          "description": "All types of credit are subtracted from the gross cost to determine the spend for threshold calculations.",
          "value": "INCLUDE_ALL_CREDITS"
        },
        {
          "name": "ExcludeAllCredits",
          "description": "All types of credit are added to the net cost to determine the spend for threshold calculations.",
          "value": "EXCLUDE_ALL_CREDITS"
        },
        {
          "name": "IncludeSpecifiedCredits",
          "description": "[Credit types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type) specified in the credit_types field are subtracted from the gross cost to determine the spend for threshold calculations.",
          "value": "INCLUDE_SPECIFIED_CREDITS"
        }
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1FilterResponse": {
      "description": "A filter for a budget, limiting the scope of the cost to calculate.",
      "properties": {
        "calendarPeriod": {
          "type": "string",
          "description": "Optional. Specifies to track usage for recurring calendar period. For example, assume that CalendarPeriod.QUARTER is set. The budget tracks usage from April 1 to June 30, when the current calendar month is April, May, June. After that, it tracks usage from July 1 to September 30 when the current calendar month is July, August, September, so on."
        },
        "creditTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If Filter.credit_types_treatment is INCLUDE_SPECIFIED_CREDITS, this 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](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). If Filter.credit_types_treatment is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty."
        },
        "creditTypesTreatment": {
          "type": "string",
          "description": "Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`."
        },
        "customPeriod": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1CustomPeriodResponse",
          "description": "Optional. Specifies to track usage from any start date (required) to any end date (optional). This time period is static, it does not recur."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A single label and value pair specifying that usage from only this set of labeled resources should be included in the budget. If omitted, the report includes all labeled and unlabeled usage. An object containing a single `\"key\": value` pair. Example: `{ \"name\": \"wrench\" }`. _Currently, multiple entries or multiple values per entry are not allowed._"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of projects of the form `projects/{project}`, specifying that usage from only this set of projects should be included in the budget. If omitted, the report includes all usage for the billing account, regardless of which project the usage occurred on."
        },
        "resourceAncestors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of folder and organization names of the form `folders/{folderId}` or `organizations/{organizationId}`, specifying that usage from only this set of folders and organizations should be included in the budget. If omitted, the budget includes all usage that the billing account pays for. If the folder or organization contains projects that are paid for by a different Cloud Billing account, the budget *doesn't* apply to those projects."
        },
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of services of the form `services/{service_id}`, specifying that usage from only this set of services should be included in the budget. If omitted, the report includes usage for all the services. The service names are available through the Catalog API: https://cloud.google.com/billing/v1/how-tos/catalog-api."
        },
        "subaccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of subaccounts of the form `billingAccounts/{account_id}`, specifying that usage from only this set of subaccounts should be included in the budget. If a subaccount is set to the name of the parent account, usage from the parent account is included. If the field is omitted, the report includes usage from the parent account and all subaccounts, if they exist."
        }
      },
      "type": "object",
      "required": [
        "calendarPeriod",
        "creditTypes",
        "creditTypesTreatment",
        "customPeriod",
        "labels",
        "projects",
        "resourceAncestors",
        "services",
        "subaccounts"
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1LastPeriodAmount": {
      "description": "Describes a budget amount targeted to the last Filter.calendar_period spend. At this time, the amount is automatically 100% of the last calendar period's spend; that is, there are no other options yet. LastPeriodAmount cannot be set for a budget configured with a Filter.custom_period.",
      "type": "object"
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1LastPeriodAmountResponse": {
      "description": "Describes a budget amount targeted to the last Filter.calendar_period spend. At this time, the amount is automatically 100% of the last calendar period's spend; that is, there are no other options yet. LastPeriodAmount cannot be set for a budget configured with a Filter.custom_period.",
      "type": "object"
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1NotificationsRule": {
      "description": "NotificationsRule defines notifications that are sent based on budget spend and thresholds.",
      "properties": {
        "disableDefaultIamRecipients": {
          "type": "boolean",
          "description": "Optional. When set to true, disables default notifications sent when a threshold is exceeded. Default notifications are sent to those with Billing Account Administrator and Billing Account User IAM roles for the target account."
        },
        "enableProjectLevelRecipients": {
          "type": "boolean",
          "description": "Optional. When set to true, and when the budget has a single project configured, notifications will be sent to project level recipients of that project. This field will be ignored if the budget has multiple or no project configured. Currently, project level recipients are the users with `Owner` role on a cloud project."
        },
        "monitoringNotificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Email targets to send notifications to when a threshold is exceeded. This is in addition to the `DefaultIamRecipients` who receive alert emails based on their billing account IAM role. The value is the full REST resource name of a Cloud Monitoring email notification channel with the form `projects/{project_id}/notificationChannels/{channel_id}`. A maximum of 5 email notifications are allowed. To customize budget alert email recipients with monitoring notification channels, you _must create the monitoring notification channels before you link them to a budget_. For guidance on setting up notification channels to use with budgets, see [Customize budget alert email recipients](https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients). For Cloud Billing budget alerts, you _must use email notification channels_. The other types of notification channels are _not_ supported, such as Slack, SMS, or PagerDuty. If you want to [send budget notifications to Slack](https://cloud.google.com/billing/docs/how-to/notify#send_notifications_to_slack), use a pubsubTopic and configure [programmatic notifications](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications)."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of the Pub/Sub topic where budget-related messages are published, in the form `projects/{project_id}/topics/{topic_id}`. Updates are sent to the topic at regular intervals; the timing of the updates is not dependent on the [threshold rules](#thresholdrule) you've set. Note that if you want your [Pub/Sub JSON object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format) to contain data for `alertThresholdExceeded`, you need at least one [alert threshold rule](#thresholdrule). When you set threshold rules, you must also enable at least one of the email notification options, either using the default IAM recipients or Cloud Monitoring email notification channels. To use Pub/Sub topics with budgets, you must do the following: 1. Create the Pub/Sub topic before connecting it to your budget. For guidance, see [Manage programmatic budget alert notifications](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications). 2. Grant the API caller the `pubsub.topics.setIamPolicy` permission on the Pub/Sub topic. If not set, the API call fails with PERMISSION_DENIED. For additional details on Pub/Sub roles and permissions, see [Permissions required for this task](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task)."
        },
        "schemaVersion": {
          "type": "string",
          "description": "Optional. Required when NotificationsRule.pubsub_topic is set. The schema version of the notification sent to NotificationsRule.pubsub_topic. Only \"1.0\" is accepted. It represents the JSON schema as defined in https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1NotificationsRuleResponse": {
      "description": "NotificationsRule defines notifications that are sent based on budget spend and thresholds.",
      "properties": {
        "disableDefaultIamRecipients": {
          "type": "boolean",
          "description": "Optional. When set to true, disables default notifications sent when a threshold is exceeded. Default notifications are sent to those with Billing Account Administrator and Billing Account User IAM roles for the target account."
        },
        "enableProjectLevelRecipients": {
          "type": "boolean",
          "description": "Optional. When set to true, and when the budget has a single project configured, notifications will be sent to project level recipients of that project. This field will be ignored if the budget has multiple or no project configured. Currently, project level recipients are the users with `Owner` role on a cloud project."
        },
        "monitoringNotificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Email targets to send notifications to when a threshold is exceeded. This is in addition to the `DefaultIamRecipients` who receive alert emails based on their billing account IAM role. The value is the full REST resource name of a Cloud Monitoring email notification channel with the form `projects/{project_id}/notificationChannels/{channel_id}`. A maximum of 5 email notifications are allowed. To customize budget alert email recipients with monitoring notification channels, you _must create the monitoring notification channels before you link them to a budget_. For guidance on setting up notification channels to use with budgets, see [Customize budget alert email recipients](https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients). For Cloud Billing budget alerts, you _must use email notification channels_. The other types of notification channels are _not_ supported, such as Slack, SMS, or PagerDuty. If you want to [send budget notifications to Slack](https://cloud.google.com/billing/docs/how-to/notify#send_notifications_to_slack), use a pubsubTopic and configure [programmatic notifications](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications)."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of the Pub/Sub topic where budget-related messages are published, in the form `projects/{project_id}/topics/{topic_id}`. Updates are sent to the topic at regular intervals; the timing of the updates is not dependent on the [threshold rules](#thresholdrule) you've set. Note that if you want your [Pub/Sub JSON object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format) to contain data for `alertThresholdExceeded`, you need at least one [alert threshold rule](#thresholdrule). When you set threshold rules, you must also enable at least one of the email notification options, either using the default IAM recipients or Cloud Monitoring email notification channels. To use Pub/Sub topics with budgets, you must do the following: 1. Create the Pub/Sub topic before connecting it to your budget. For guidance, see [Manage programmatic budget alert notifications](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications). 2. Grant the API caller the `pubsub.topics.setIamPolicy` permission on the Pub/Sub topic. If not set, the API call fails with PERMISSION_DENIED. For additional details on Pub/Sub roles and permissions, see [Permissions required for this task](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task)."
        },
        "schemaVersion": {
          "type": "string",
          "description": "Optional. Required when NotificationsRule.pubsub_topic is set. The schema version of the notification sent to NotificationsRule.pubsub_topic. Only \"1.0\" is accepted. It represents the JSON schema as defined in https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format."
        }
      },
      "type": "object",
      "required": [
        "disableDefaultIamRecipients",
        "enableProjectLevelRecipients",
        "monitoringNotificationChannels",
        "pubsubTopic",
        "schemaVersion"
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1ThresholdRule": {
      "description": "ThresholdRule contains the definition of a threshold. Threshold rules define the triggering events used to generate a budget notification email. When a threshold is crossed (spend exceeds the specified percentages of the budget), budget alert emails are sent to the email recipients you specify in the [NotificationsRule](#notificationsrule). Threshold rules also affect the fields included in the [JSON data object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format) sent to a Pub/Sub topic. Threshold rules are _required_ if using email notifications. Threshold rules are _optional_ if only setting a [`pubsubTopic` NotificationsRule](#NotificationsRule), unless you want your JSON data object to include data about the thresholds you set. For more information, see [set budget threshold rules and actions](https://cloud.google.com/billing/docs/how-to/budgets#budget-actions).",
      "properties": {
        "spendBasis": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1ThresholdRuleSpendBasis",
          "description": "Optional. The type of basis used to determine if spend has passed the threshold. Behavior defaults to CURRENT_SPEND if not set."
        },
        "thresholdPercent": {
          "type": "number",
          "description": "Send an alert when this threshold is exceeded. This is a 1.0-based percentage, so 0.5 = 50%. Validation: non-negative number."
        }
      },
      "type": "object",
      "required": [
        "thresholdPercent"
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1ThresholdRuleResponse": {
      "description": "ThresholdRule contains the definition of a threshold. Threshold rules define the triggering events used to generate a budget notification email. When a threshold is crossed (spend exceeds the specified percentages of the budget), budget alert emails are sent to the email recipients you specify in the [NotificationsRule](#notificationsrule). Threshold rules also affect the fields included in the [JSON data object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format) sent to a Pub/Sub topic. Threshold rules are _required_ if using email notifications. Threshold rules are _optional_ if only setting a [`pubsubTopic` NotificationsRule](#NotificationsRule), unless you want your JSON data object to include data about the thresholds you set. For more information, see [set budget threshold rules and actions](https://cloud.google.com/billing/docs/how-to/budgets#budget-actions).",
      "properties": {
        "spendBasis": {
          "type": "string",
          "description": "Optional. The type of basis used to determine if spend has passed the threshold. Behavior defaults to CURRENT_SPEND if not set."
        },
        "thresholdPercent": {
          "type": "number",
          "description": "Send an alert when this threshold is exceeded. This is a 1.0-based percentage, so 0.5 = 50%. Validation: non-negative number."
        }
      },
      "type": "object",
      "required": [
        "spendBasis",
        "thresholdPercent"
      ]
    },
    "google-native:billingbudgets/v1:GoogleCloudBillingBudgetsV1ThresholdRuleSpendBasis": {
      "description": "Optional. The type of basis used to determine if spend has passed the threshold. Behavior defaults to CURRENT_SPEND if not set.",
      "type": "string",
      "enum": [
        {
          "name": "BasisUnspecified",
          "description": "Unspecified threshold basis.",
          "value": "BASIS_UNSPECIFIED"
        },
        {
          "name": "CurrentSpend",
          "description": "Use current spend as the basis for comparison against the threshold.",
          "value": "CURRENT_SPEND"
        },
        {
          "name": "ForecastedSpend",
          "description": "Use forecasted spend for the period as the basis for comparison against the threshold. FORECASTED_SPEND can only be set when the budget's time period is a Filter.calendar_period. It cannot be set in combination with Filter.custom_period.",
          "value": "FORECASTED_SPEND"
        }
      ]
    },
    "google-native:billingbudgets/v1:GoogleTypeDate": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:billingbudgets/v1:GoogleTypeMoney": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1:GoogleTypeMoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:billingbudgets/v1beta1:BudgetOwnershipScope": {
      "type": "string",
      "enum": [
        {
          "name": "OwnershipScopeUnspecified",
          "description": "Unspecified ownership scope, same as ALL_USERS.",
          "value": "OWNERSHIP_SCOPE_UNSPECIFIED"
        },
        {
          "name": "AllUsers",
          "description": "The Budget is fully accessible to both billing account users and resource users, provided that they have the required IAM permissions.",
          "value": "ALL_USERS"
        },
        {
          "name": "BillingAccount",
          "description": "Only billing account users have full access to the `Budget`, resource-level users have read-only access, provided that they have the required IAM permissions.",
          "value": "BILLING_ACCOUNT"
        }
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1AllUpdatesRule": {
      "description": "AllUpdatesRule defines notifications that are sent based on budget spend and thresholds.",
      "properties": {
        "disableDefaultIamRecipients": {
          "type": "boolean",
          "description": "Optional. When set to true, disables default notifications sent when a threshold is exceeded. Default notifications are sent to those with Billing Account Administrator and Billing Account User IAM roles for the target account."
        },
        "enableProjectLevelRecipients": {
          "type": "boolean",
          "description": "Optional. When set to true, and when the budget has a single project configured, notifications will be sent to project level recipients of that project. This field will be ignored if the budget has multiple or no project configured. Currently, project level recipients are the users with `Owner` role on a cloud project."
        },
        "monitoringNotificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Targets to send notifications to when a threshold is exceeded. This is in addition to default recipients who have billing account IAM roles. The value is the full REST resource name of a monitoring notification channel with the form `projects/{project_id}/notificationChannels/{channel_id}`. A maximum of 5 channels are allowed. See https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients for more details."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of the Pub/Sub topic where budget related messages will be published, in the form `projects/{project_id}/topics/{topic_id}`. Updates are sent at regular intervals to the topic. The topic needs to be created before the budget is created; see https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications for more details. Caller is expected to have `pubsub.topics.setIamPolicy` permission on the topic when it's set for a budget, otherwise, the API call will fail with PERMISSION_DENIED. See https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task for more details on Pub/Sub roles and permissions."
        },
        "schemaVersion": {
          "type": "string",
          "description": "Optional. Required when AllUpdatesRule.pubsub_topic is set. The schema version of the notification sent to AllUpdatesRule.pubsub_topic. Only \"1.0\" is accepted. It represents the JSON schema as defined in https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1AllUpdatesRuleResponse": {
      "description": "AllUpdatesRule defines notifications that are sent based on budget spend and thresholds.",
      "properties": {
        "disableDefaultIamRecipients": {
          "type": "boolean",
          "description": "Optional. When set to true, disables default notifications sent when a threshold is exceeded. Default notifications are sent to those with Billing Account Administrator and Billing Account User IAM roles for the target account."
        },
        "enableProjectLevelRecipients": {
          "type": "boolean",
          "description": "Optional. When set to true, and when the budget has a single project configured, notifications will be sent to project level recipients of that project. This field will be ignored if the budget has multiple or no project configured. Currently, project level recipients are the users with `Owner` role on a cloud project."
        },
        "monitoringNotificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Targets to send notifications to when a threshold is exceeded. This is in addition to default recipients who have billing account IAM roles. The value is the full REST resource name of a monitoring notification channel with the form `projects/{project_id}/notificationChannels/{channel_id}`. A maximum of 5 channels are allowed. See https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients for more details."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of the Pub/Sub topic where budget related messages will be published, in the form `projects/{project_id}/topics/{topic_id}`. Updates are sent at regular intervals to the topic. The topic needs to be created before the budget is created; see https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications for more details. Caller is expected to have `pubsub.topics.setIamPolicy` permission on the topic when it's set for a budget, otherwise, the API call will fail with PERMISSION_DENIED. See https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task for more details on Pub/Sub roles and permissions."
        },
        "schemaVersion": {
          "type": "string",
          "description": "Optional. Required when AllUpdatesRule.pubsub_topic is set. The schema version of the notification sent to AllUpdatesRule.pubsub_topic. Only \"1.0\" is accepted. It represents the JSON schema as defined in https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format."
        }
      },
      "type": "object",
      "required": [
        "disableDefaultIamRecipients",
        "enableProjectLevelRecipients",
        "monitoringNotificationChannels",
        "pubsubTopic",
        "schemaVersion"
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1BudgetAmount": {
      "description": "The budgeted amount for each usage period.",
      "properties": {
        "lastPeriodAmount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1LastPeriodAmount",
          "description": "Use the last period's actual spend as the budget for the present period. LastPeriodAmount can only be set when the budget's time period is a Filter.calendar_period. It cannot be set in combination with Filter.custom_period."
        },
        "specifiedAmount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleTypeMoney",
          "description": "A specified amount to use as the budget. `currency_code` is optional. If specified when creating a budget, it must match the currency of the billing account. If specified when updating a budget, it must match the currency_code of the existing budget. The `currency_code` is provided on output."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1BudgetAmountResponse": {
      "description": "The budgeted amount for each usage period.",
      "properties": {
        "lastPeriodAmount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1LastPeriodAmountResponse",
          "description": "Use the last period's actual spend as the budget for the present period. LastPeriodAmount can only be set when the budget's time period is a Filter.calendar_period. It cannot be set in combination with Filter.custom_period."
        },
        "specifiedAmount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleTypeMoneyResponse",
          "description": "A specified amount to use as the budget. `currency_code` is optional. If specified when creating a budget, it must match the currency of the billing account. If specified when updating a budget, it must match the currency_code of the existing budget. The `currency_code` is provided on output."
        }
      },
      "type": "object",
      "required": [
        "lastPeriodAmount",
        "specifiedAmount"
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1CustomPeriod": {
      "description": "All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).",
      "properties": {
        "endDate": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleTypeDate",
          "description": "Optional. The end date of the time period. Budgets with elapsed end date won't be processed. If unset, specifies to track all usage incurred since the start_date."
        },
        "startDate": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleTypeDate",
          "description": "The start date must be after January 1, 2017."
        }
      },
      "type": "object",
      "required": [
        "startDate"
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1CustomPeriodResponse": {
      "description": "All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).",
      "properties": {
        "endDate": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleTypeDateResponse",
          "description": "Optional. The end date of the time period. Budgets with elapsed end date won't be processed. If unset, specifies to track all usage incurred since the start_date."
        },
        "startDate": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleTypeDateResponse",
          "description": "The start date must be after January 1, 2017."
        }
      },
      "type": "object",
      "required": [
        "endDate",
        "startDate"
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1Filter": {
      "description": "A filter for a budget, limiting the scope of the cost to calculate.",
      "properties": {
        "calendarPeriod": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1FilterCalendarPeriod",
          "description": "Optional. Specifies to track usage for recurring calendar period. For example, assume that CalendarPeriod.QUARTER is set. The budget will track usage from April 1 to June 30, when the current calendar month is April, May, June. After that, it will track usage from July 1 to September 30 when the current calendar month is July, August, September, so on."
        },
        "creditTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If Filter.credit_types_treatment is INCLUDE_SPECIFIED_CREDITS, this 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](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). If Filter.credit_types_treatment is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty."
        },
        "creditTypesTreatment": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1FilterCreditTypesTreatment",
          "description": "Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`."
        },
        "customPeriod": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1CustomPeriod",
          "description": "Optional. Specifies to track usage from any start date (required) to any end date (optional). This time period is static, it does not recur."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A single label and value pair specifying that usage from only this set of labeled resources should be included in the budget. If omitted, the report will include all labeled and unlabeled usage. An object containing a single `\"key\": value` pair. Example: `{ \"name\": \"wrench\" }`. _Currently, multiple entries or multiple values per entry are not allowed._"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of projects of the form `projects/{project}`, specifying that usage from only this set of projects should be included in the budget. If omitted, the report will include all usage for the billing account, regardless of which project the usage occurred on."
        },
        "resourceAncestors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of folder and organization names of the form `folders/{folderId}` or `organizations/{organizationId}`, specifying that usage from only this set of folders and organizations should be included in the budget. If omitted, the budget includes all usage that the billing account pays for. If the folder or organization contains projects that are paid for by a different Cloud Billing account, the budget *doesn't* apply to those projects."
        },
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of services of the form `services/{service_id}`, specifying that usage from only this set of services should be included in the budget. If omitted, the report will include usage for all the services. The service names are available through the Catalog API: https://cloud.google.com/billing/v1/how-tos/catalog-api."
        },
        "subaccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of subaccounts of the form `billingAccounts/{account_id}`, specifying that usage from only this set of subaccounts should be included in the budget. If a subaccount is set to the name of the parent account, usage from the parent account will be included. If omitted, the report will include usage from the parent account and all subaccounts, if they exist."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1FilterCalendarPeriod": {
      "description": "Optional. Specifies to track usage for recurring calendar period. For example, assume that CalendarPeriod.QUARTER is set. The budget will track usage from April 1 to June 30, when the current calendar month is April, May, June. After that, it will track usage from July 1 to September 30 when the current calendar month is July, August, September, so on.",
      "type": "string",
      "enum": [
        {
          "name": "CalendarPeriodUnspecified",
          "description": "Calendar period is unset. This is the default if the budget is for a custom time period (CustomPeriod).",
          "value": "CALENDAR_PERIOD_UNSPECIFIED"
        },
        {
          "name": "Month",
          "description": "A month. Month starts on the first day of each month, such as January 1, February 1, March 1, and so on.",
          "value": "MONTH"
        },
        {
          "name": "Quarter",
          "description": "A quarter. Quarters start on dates January 1, April 1, July 1, and October 1 of each year.",
          "value": "QUARTER"
        },
        {
          "name": "Year",
          "description": "A year. Year starts on January 1.",
          "value": "YEAR"
        }
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1FilterCreditTypesTreatment": {
      "description": "Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`.",
      "type": "string",
      "enum": [
        {
          "name": "CreditTypesTreatmentUnspecified",
          "value": "CREDIT_TYPES_TREATMENT_UNSPECIFIED"
        },
        {
          "name": "IncludeAllCredits",
          "description": "All types of credit are subtracted from the gross cost to determine the spend for threshold calculations.",
          "value": "INCLUDE_ALL_CREDITS"
        },
        {
          "name": "ExcludeAllCredits",
          "description": "All types of credit are added to the net cost to determine the spend for threshold calculations.",
          "value": "EXCLUDE_ALL_CREDITS"
        },
        {
          "name": "IncludeSpecifiedCredits",
          "description": "[Credit types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type) specified in the credit_types field are subtracted from the gross cost to determine the spend for threshold calculations.",
          "value": "INCLUDE_SPECIFIED_CREDITS"
        }
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1FilterResponse": {
      "description": "A filter for a budget, limiting the scope of the cost to calculate.",
      "properties": {
        "calendarPeriod": {
          "type": "string",
          "description": "Optional. Specifies to track usage for recurring calendar period. For example, assume that CalendarPeriod.QUARTER is set. The budget will track usage from April 1 to June 30, when the current calendar month is April, May, June. After that, it will track usage from July 1 to September 30 when the current calendar month is July, August, September, so on."
        },
        "creditTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If Filter.credit_types_treatment is INCLUDE_SPECIFIED_CREDITS, this 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](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). If Filter.credit_types_treatment is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty."
        },
        "creditTypesTreatment": {
          "type": "string",
          "description": "Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`."
        },
        "customPeriod": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1CustomPeriodResponse",
          "description": "Optional. Specifies to track usage from any start date (required) to any end date (optional). This time period is static, it does not recur."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A single label and value pair specifying that usage from only this set of labeled resources should be included in the budget. If omitted, the report will include all labeled and unlabeled usage. An object containing a single `\"key\": value` pair. Example: `{ \"name\": \"wrench\" }`. _Currently, multiple entries or multiple values per entry are not allowed._"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of projects of the form `projects/{project}`, specifying that usage from only this set of projects should be included in the budget. If omitted, the report will include all usage for the billing account, regardless of which project the usage occurred on."
        },
        "resourceAncestors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of folder and organization names of the form `folders/{folderId}` or `organizations/{organizationId}`, specifying that usage from only this set of folders and organizations should be included in the budget. If omitted, the budget includes all usage that the billing account pays for. If the folder or organization contains projects that are paid for by a different Cloud Billing account, the budget *doesn't* apply to those projects."
        },
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of services of the form `services/{service_id}`, specifying that usage from only this set of services should be included in the budget. If omitted, the report will include usage for all the services. The service names are available through the Catalog API: https://cloud.google.com/billing/v1/how-tos/catalog-api."
        },
        "subaccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of subaccounts of the form `billingAccounts/{account_id}`, specifying that usage from only this set of subaccounts should be included in the budget. If a subaccount is set to the name of the parent account, usage from the parent account will be included. If omitted, the report will include usage from the parent account and all subaccounts, if they exist."
        }
      },
      "type": "object",
      "required": [
        "calendarPeriod",
        "creditTypes",
        "creditTypesTreatment",
        "customPeriod",
        "labels",
        "projects",
        "resourceAncestors",
        "services",
        "subaccounts"
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1LastPeriodAmount": {
      "description": "Describes a budget amount targeted to the last Filter.calendar_period spend. At this time, the amount is automatically 100% of the last calendar period's spend; that is, there are no other options yet. Future configuration options will be described here (for example, configuring a percentage of last period's spend). LastPeriodAmount cannot be set for a budget configured with a Filter.custom_period.",
      "type": "object"
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1LastPeriodAmountResponse": {
      "description": "Describes a budget amount targeted to the last Filter.calendar_period spend. At this time, the amount is automatically 100% of the last calendar period's spend; that is, there are no other options yet. Future configuration options will be described here (for example, configuring a percentage of last period's spend). LastPeriodAmount cannot be set for a budget configured with a Filter.custom_period.",
      "type": "object"
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1ThresholdRule": {
      "description": "ThresholdRule contains the definition of a threshold. Threshold rules define the triggering events used to generate a budget notification email. When a threshold is crossed (spend exceeds the specified percentages of the budget), budget alert emails are sent to the email recipients you specify in the [NotificationsRule](#notificationsrule). Threshold rules also affect the fields included in the [JSON data object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format) sent to a Pub/Sub topic. Threshold rules are _required_ if using email notifications. Threshold rules are _optional_ if only setting a [`pubsubTopic` NotificationsRule](#NotificationsRule), unless you want your JSON data object to include data about the thresholds you set. For more information, see [set budget threshold rules and actions](https://cloud.google.com/billing/docs/how-to/budgets#budget-actions).",
      "properties": {
        "spendBasis": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1ThresholdRuleSpendBasis",
          "description": "Optional. The type of basis used to determine if spend has passed the threshold. Behavior defaults to CURRENT_SPEND if not set."
        },
        "thresholdPercent": {
          "type": "number",
          "description": "Send an alert when this threshold is exceeded. This is a 1.0-based percentage, so 0.5 = 50%. Validation: non-negative number."
        }
      },
      "type": "object",
      "required": [
        "thresholdPercent"
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1ThresholdRuleResponse": {
      "description": "ThresholdRule contains the definition of a threshold. Threshold rules define the triggering events used to generate a budget notification email. When a threshold is crossed (spend exceeds the specified percentages of the budget), budget alert emails are sent to the email recipients you specify in the [NotificationsRule](#notificationsrule). Threshold rules also affect the fields included in the [JSON data object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format) sent to a Pub/Sub topic. Threshold rules are _required_ if using email notifications. Threshold rules are _optional_ if only setting a [`pubsubTopic` NotificationsRule](#NotificationsRule), unless you want your JSON data object to include data about the thresholds you set. For more information, see [set budget threshold rules and actions](https://cloud.google.com/billing/docs/how-to/budgets#budget-actions).",
      "properties": {
        "spendBasis": {
          "type": "string",
          "description": "Optional. The type of basis used to determine if spend has passed the threshold. Behavior defaults to CURRENT_SPEND if not set."
        },
        "thresholdPercent": {
          "type": "number",
          "description": "Send an alert when this threshold is exceeded. This is a 1.0-based percentage, so 0.5 = 50%. Validation: non-negative number."
        }
      },
      "type": "object",
      "required": [
        "spendBasis",
        "thresholdPercent"
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleCloudBillingBudgetsV1beta1ThresholdRuleSpendBasis": {
      "description": "Optional. The type of basis used to determine if spend has passed the threshold. Behavior defaults to CURRENT_SPEND if not set.",
      "type": "string",
      "enum": [
        {
          "name": "BasisUnspecified",
          "description": "Unspecified threshold basis.",
          "value": "BASIS_UNSPECIFIED"
        },
        {
          "name": "CurrentSpend",
          "description": "Use current spend as the basis for comparison against the threshold.",
          "value": "CURRENT_SPEND"
        },
        {
          "name": "ForecastedSpend",
          "description": "Use forecasted spend for the period as the basis for comparison against the threshold. FORECASTED_SPEND can only be set when the budget's time period is a Filter.calendar_period. It cannot be set in combination with Filter.custom_period.",
          "value": "FORECASTED_SPEND"
        }
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleTypeDate": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1beta1:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:billingbudgets/v1beta1:GoogleTypeMoney": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:billingbudgets/v1beta1:GoogleTypeMoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:binaryauthorization/v1:AttestationAuthenticator": {
      "description": "An attestation authenticator that will be used to verify attestations. Typically this is just a set of public keys. Conceptually, an authenticator can be treated as always returning either \"authenticated\" or \"not authenticated\" when presented with a signed attestation (almost always assumed to be a [DSSE](https://github.com/secure-systems-lab/dsse) attestation). The details of how an authenticator makes this decision are specific to the type of 'authenticator' that this message wraps.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Optional. A user-provided name for this `AttestationAuthenticator`. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results."
        },
        "pkixPublicKeySet": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:PkixPublicKeySet",
          "description": "Optional. A set of raw PKIX SubjectPublicKeyInfo format public keys. If any public key in the set validates the attestation signature, then the signature is considered authenticated (i.e. any one key is sufficient to authenticate)."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:AttestationAuthenticatorResponse": {
      "description": "An attestation authenticator that will be used to verify attestations. Typically this is just a set of public keys. Conceptually, an authenticator can be treated as always returning either \"authenticated\" or \"not authenticated\" when presented with a signed attestation (almost always assumed to be a [DSSE](https://github.com/secure-systems-lab/dsse) attestation). The details of how an authenticator makes this decision are specific to the type of 'authenticator' that this message wraps.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Optional. A user-provided name for this `AttestationAuthenticator`. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results."
        },
        "pkixPublicKeySet": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:PkixPublicKeySetResponse",
          "description": "Optional. A set of raw PKIX SubjectPublicKeyInfo format public keys. If any public key in the set validates the attestation signature, then the signature is considered authenticated (i.e. any one key is sufficient to authenticate)."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "pkixPublicKeySet"
      ]
    },
    "google-native:binaryauthorization/v1:AttestationSource": {
      "description": "Specifies the locations for fetching the provenance attestations.",
      "properties": {
        "containerAnalysisAttestationProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs of the GCP projects storing the SLSA attestations as Container Analysis Occurrences."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:AttestationSourceResponse": {
      "description": "Specifies the locations for fetching the provenance attestations.",
      "properties": {
        "containerAnalysisAttestationProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs of the GCP projects storing the SLSA attestations as Container Analysis Occurrences."
        }
      },
      "type": "object",
      "required": [
        "containerAnalysisAttestationProjects"
      ]
    },
    "google-native:binaryauthorization/v1:AttestorPublicKey": {
      "description": "An attestor public key that will be used to verify attestations signed by this attestor.",
      "properties": {
        "asciiArmoredPgpPublicKey": {
          "type": "string",
          "description": "ASCII-armored representation of a PGP public key, as the entire output by the command `gpg --export --armor foo@example.com` (either LF or CRLF line endings). When using this field, `id` should be left blank. The Binary Authorization API handlers will calculate the ID and fill it in automatically. Binary Authorization computes this ID as the OpenPGP RFC4880 V4 fingerprint, represented as upper-case hex. If `id` is provided by the caller, it will be overwritten by the API-calculated ID."
        },
        "comment": {
          "type": "string",
          "description": "Optional. A descriptive comment. This field may be updated."
        },
        "id": {
          "type": "string",
          "description": "The ID of this public key. Signatures verified by Binary Authorization must include the ID of the public key that can be used to verify them, and that ID must match the contents of this field exactly. Additional restrictions on this field can be imposed based on which public key type is encapsulated. See the documentation on `public_key` cases below for details."
        },
        "pkixPublicKey": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:PkixPublicKey",
          "description": "A raw PKIX SubjectPublicKeyInfo format public key. NOTE: `id` may be explicitly provided by the caller when using this type of public key, but it MUST be a valid RFC3986 URI. If `id` is left blank, a default one will be computed based on the digest of the DER encoding of the public key."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:AttestorPublicKeyResponse": {
      "description": "An attestor public key that will be used to verify attestations signed by this attestor.",
      "properties": {
        "asciiArmoredPgpPublicKey": {
          "type": "string",
          "description": "ASCII-armored representation of a PGP public key, as the entire output by the command `gpg --export --armor foo@example.com` (either LF or CRLF line endings). When using this field, `id` should be left blank. The Binary Authorization API handlers will calculate the ID and fill it in automatically. Binary Authorization computes this ID as the OpenPGP RFC4880 V4 fingerprint, represented as upper-case hex. If `id` is provided by the caller, it will be overwritten by the API-calculated ID."
        },
        "comment": {
          "type": "string",
          "description": "Optional. A descriptive comment. This field may be updated."
        },
        "pkixPublicKey": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:PkixPublicKeyResponse",
          "description": "A raw PKIX SubjectPublicKeyInfo format public key. NOTE: `id` may be explicitly provided by the caller when using this type of public key, but it MUST be a valid RFC3986 URI. If `id` is left blank, a default one will be computed based on the digest of the DER encoding of the public key."
        }
      },
      "type": "object",
      "required": [
        "asciiArmoredPgpPublicKey",
        "comment",
        "pkixPublicKey"
      ]
    },
    "google-native:binaryauthorization/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1:Check": {
      "description": "A single check to perform against a Pod. Checks are grouped into `CheckSet` objects, which are defined by the top-level policy.",
      "properties": {
        "alwaysDeny": {
          "type": "boolean",
          "description": "Optional. A special-case check that always denies. Note that this still only applies when the scope of the `CheckSet` applies and the image isn't exempted by an image allowlist. This check is primarily useful for testing, or to set the default behavior for all unmatched scopes to \"deny\"."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-provided name for this check. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results."
        },
        "imageAllowlist": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ImageAllowlist",
          "description": "Optional. Images exempted from this check. If any of the patterns match the image url, the check will not be evaluated."
        },
        "imageFreshnessCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ImageFreshnessCheck",
          "description": "Optional. Require that an image is no older than a configured expiration time. Image age is determined by its upload time."
        },
        "simpleSigningAttestationCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:SimpleSigningAttestationCheck",
          "description": "Optional. Require a SimpleSigning-type attestation for every image in the deployment."
        },
        "slsaCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:SlsaCheck",
          "description": "Optional. Require that an image was built by a trusted builder (such as Google Cloud Build), meets requirements for Supply chain Levels for Software Artifacts (SLSA), and was built from a trusted source code repostitory."
        },
        "trustedDirectoryCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:TrustedDirectoryCheck",
          "description": "Optional. Require that an image lives in a trusted directory."
        },
        "vulnerabilityCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:VulnerabilityCheck",
          "description": "Optional. Require that an image does not contain vulnerabilities that violate the configured rules, such as based on severity levels."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:CheckResponse": {
      "description": "A single check to perform against a Pod. Checks are grouped into `CheckSet` objects, which are defined by the top-level policy.",
      "properties": {
        "alwaysDeny": {
          "type": "boolean",
          "description": "Optional. A special-case check that always denies. Note that this still only applies when the scope of the `CheckSet` applies and the image isn't exempted by an image allowlist. This check is primarily useful for testing, or to set the default behavior for all unmatched scopes to \"deny\"."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-provided name for this check. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results."
        },
        "imageAllowlist": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ImageAllowlistResponse",
          "description": "Optional. Images exempted from this check. If any of the patterns match the image url, the check will not be evaluated."
        },
        "imageFreshnessCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ImageFreshnessCheckResponse",
          "description": "Optional. Require that an image is no older than a configured expiration time. Image age is determined by its upload time."
        },
        "simpleSigningAttestationCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:SimpleSigningAttestationCheckResponse",
          "description": "Optional. Require a SimpleSigning-type attestation for every image in the deployment."
        },
        "slsaCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:SlsaCheckResponse",
          "description": "Optional. Require that an image was built by a trusted builder (such as Google Cloud Build), meets requirements for Supply chain Levels for Software Artifacts (SLSA), and was built from a trusted source code repostitory."
        },
        "trustedDirectoryCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:TrustedDirectoryCheckResponse",
          "description": "Optional. Require that an image lives in a trusted directory."
        },
        "vulnerabilityCheck": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:VulnerabilityCheckResponse",
          "description": "Optional. Require that an image does not contain vulnerabilities that violate the configured rules, such as based on severity levels."
        }
      },
      "type": "object",
      "required": [
        "alwaysDeny",
        "displayName",
        "imageAllowlist",
        "imageFreshnessCheck",
        "simpleSigningAttestationCheck",
        "slsaCheck",
        "trustedDirectoryCheck",
        "vulnerabilityCheck"
      ]
    },
    "google-native:binaryauthorization/v1:CheckSet": {
      "description": "A conjunction of policy checks, scoped to a particular namespace or Kubernetes service account. In order for evaluation of a `CheckSet` to return \"allowed\" for a given image in a given Pod, one of the following conditions must be satisfied: * The image is explicitly exempted by an entry in `image_allowlist`, OR * ALL of the `checks` evaluate to \"allowed\".",
      "properties": {
        "checks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:Check"
          },
          "description": "Optional. The checks to apply. The ultimate result of evaluating the check set will be \"allow\" if and only if every check in `checks` evaluates to \"allow\". If `checks` is empty, the default behavior is \"always allow\"."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-provided name for this `CheckSet`. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results."
        },
        "imageAllowlist": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ImageAllowlist",
          "description": "Optional. Images exempted from this `CheckSet`. If any of the patterns match the image being evaluated, no checks in the `CheckSet` will be evaluated."
        },
        "scope": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:Scope",
          "description": "Optional. The scope to which this `CheckSet` applies. If unset or an empty string (the default), applies to all namespaces and service accounts. See the `Scope` message documentation for details on scoping rules."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:CheckSetResponse": {
      "description": "A conjunction of policy checks, scoped to a particular namespace or Kubernetes service account. In order for evaluation of a `CheckSet` to return \"allowed\" for a given image in a given Pod, one of the following conditions must be satisfied: * The image is explicitly exempted by an entry in `image_allowlist`, OR * ALL of the `checks` evaluate to \"allowed\".",
      "properties": {
        "checks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:CheckResponse"
          },
          "description": "Optional. The checks to apply. The ultimate result of evaluating the check set will be \"allow\" if and only if every check in `checks` evaluates to \"allow\". If `checks` is empty, the default behavior is \"always allow\"."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-provided name for this `CheckSet`. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results."
        },
        "imageAllowlist": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ImageAllowlistResponse",
          "description": "Optional. Images exempted from this `CheckSet`. If any of the patterns match the image being evaluated, no checks in the `CheckSet` will be evaluated."
        },
        "scope": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ScopeResponse",
          "description": "Optional. The scope to which this `CheckSet` applies. If unset or an empty string (the default), applies to all namespaces and service accounts. See the `Scope` message documentation for details on scoping rules."
        }
      },
      "type": "object",
      "required": [
        "checks",
        "displayName",
        "imageAllowlist",
        "scope"
      ]
    },
    "google-native:binaryauthorization/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:binaryauthorization/v1:GkePolicy": {
      "description": "A Binary Authorization policy for a GKE cluster. This is one type of policy that can occur as a `PlatformPolicy`.",
      "properties": {
        "checkSets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:CheckSet"
          },
          "description": "Optional. The `CheckSet` objects to apply, scoped by namespace or namespace and service account. Exactly one `CheckSet` will be evaluated for a given Pod (unless the list is empty, in which case the behavior is \"always allow\"). If multiple `CheckSet` objects have scopes that match the namespace and service account of the Pod being evaluated, only the `CheckSet` with the MOST SPECIFIC scope will match. `CheckSet` objects must be listed in order of decreasing specificity, i.e. if a scope matches a given service account (which must include the namespace), it must come before a `CheckSet` with a scope matching just that namespace. This property is enforced by server-side validation. The purpose of this restriction is to ensure that if more than one `CheckSet` matches a given Pod, the `CheckSet` that will be evaluated will always be the first in the list to match (because if any other matches, it must be less specific). If `check_sets` is empty, the default behavior is to allow all images. If `check_sets` is non-empty, the last `check_sets` entry must always be a `CheckSet` with no scope set, i.e. a catchall to handle any situation not caught by the preceding `CheckSet` objects."
        },
        "imageAllowlist": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ImageAllowlist",
          "description": "Optional. Images exempted from this policy. If any of the patterns match the image being evaluated, the rest of the policy will not be evaluated."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:GkePolicyResponse": {
      "description": "A Binary Authorization policy for a GKE cluster. This is one type of policy that can occur as a `PlatformPolicy`.",
      "properties": {
        "checkSets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:CheckSetResponse"
          },
          "description": "Optional. The `CheckSet` objects to apply, scoped by namespace or namespace and service account. Exactly one `CheckSet` will be evaluated for a given Pod (unless the list is empty, in which case the behavior is \"always allow\"). If multiple `CheckSet` objects have scopes that match the namespace and service account of the Pod being evaluated, only the `CheckSet` with the MOST SPECIFIC scope will match. `CheckSet` objects must be listed in order of decreasing specificity, i.e. if a scope matches a given service account (which must include the namespace), it must come before a `CheckSet` with a scope matching just that namespace. This property is enforced by server-side validation. The purpose of this restriction is to ensure that if more than one `CheckSet` matches a given Pod, the `CheckSet` that will be evaluated will always be the first in the list to match (because if any other matches, it must be less specific). If `check_sets` is empty, the default behavior is to allow all images. If `check_sets` is non-empty, the last `check_sets` entry must always be a `CheckSet` with no scope set, i.e. a catchall to handle any situation not caught by the preceding `CheckSet` objects."
        },
        "imageAllowlist": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:ImageAllowlistResponse",
          "description": "Optional. Images exempted from this policy. If any of the patterns match the image being evaluated, the rest of the policy will not be evaluated."
        }
      },
      "type": "object",
      "required": [
        "checkSets",
        "imageAllowlist"
      ]
    },
    "google-native:binaryauthorization/v1:ImageAllowlist": {
      "description": "Images that are exempted from normal checks based on name pattern only.",
      "properties": {
        "allowPattern": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A disjunction of image patterns to allow. If any of these patterns match, then the image is considered exempted by this allowlist."
        }
      },
      "type": "object",
      "required": [
        "allowPattern"
      ]
    },
    "google-native:binaryauthorization/v1:ImageAllowlistResponse": {
      "description": "Images that are exempted from normal checks based on name pattern only.",
      "properties": {
        "allowPattern": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A disjunction of image patterns to allow. If any of these patterns match, then the image is considered exempted by this allowlist."
        }
      },
      "type": "object",
      "required": [
        "allowPattern"
      ]
    },
    "google-native:binaryauthorization/v1:ImageFreshnessCheck": {
      "description": "An image freshness check, which rejects images that were uploaded before the set number of days ago to the supported repositories.",
      "properties": {
        "maxUploadAgeDays": {
          "type": "integer",
          "description": "The max number of days that is allowed since the image was uploaded. Must be greater than zero."
        }
      },
      "type": "object",
      "required": [
        "maxUploadAgeDays"
      ]
    },
    "google-native:binaryauthorization/v1:ImageFreshnessCheckResponse": {
      "description": "An image freshness check, which rejects images that were uploaded before the set number of days ago to the supported repositories.",
      "properties": {
        "maxUploadAgeDays": {
          "type": "integer",
          "description": "The max number of days that is allowed since the image was uploaded. Must be greater than zero."
        }
      },
      "type": "object",
      "required": [
        "maxUploadAgeDays"
      ]
    },
    "google-native:binaryauthorization/v1:PkixPublicKey": {
      "description": "A public key in the PkixPublicKey [format](https://tools.ietf.org/html/rfc5280#section-4.1.2.7). Public keys of this type are typically textually encoded using the PEM format.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "Optional. The ID of this public key. Signatures verified by Binary Authorization must include the ID of the public key that can be used to verify them, and that ID must match the contents of this field exactly. This may be explicitly provided by the caller, but it MUST be a valid RFC3986 URI. If `key_id` is left blank and this `PkixPublicKey` is not used in the context of a wrapper (see next paragraph), a default key ID will be computed based on the digest of the DER encoding of the public key. If this `PkixPublicKey` is used in the context of a wrapper that has its own notion of key ID (e.g. `AttestorPublicKey`), then this field can either: * Match that value exactly. * Or be left blank, in which case it behaves exactly as though it is equal to that wrapper value."
        },
        "publicKeyPem": {
          "type": "string",
          "description": "A PEM-encoded public key, as described in https://tools.ietf.org/html/rfc7468#section-13"
        },
        "signatureAlgorithm": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:PkixPublicKeySignatureAlgorithm",
          "description": "The signature algorithm used to verify a message against a signature using this key. These signature algorithm must match the structure and any object identifiers encoded in `public_key_pem` (i.e. this algorithm must match that of the public key)."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:PkixPublicKeyResponse": {
      "description": "A public key in the PkixPublicKey [format](https://tools.ietf.org/html/rfc5280#section-4.1.2.7). Public keys of this type are typically textually encoded using the PEM format.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "Optional. The ID of this public key. Signatures verified by Binary Authorization must include the ID of the public key that can be used to verify them, and that ID must match the contents of this field exactly. This may be explicitly provided by the caller, but it MUST be a valid RFC3986 URI. If `key_id` is left blank and this `PkixPublicKey` is not used in the context of a wrapper (see next paragraph), a default key ID will be computed based on the digest of the DER encoding of the public key. If this `PkixPublicKey` is used in the context of a wrapper that has its own notion of key ID (e.g. `AttestorPublicKey`), then this field can either: * Match that value exactly. * Or be left blank, in which case it behaves exactly as though it is equal to that wrapper value."
        },
        "publicKeyPem": {
          "type": "string",
          "description": "A PEM-encoded public key, as described in https://tools.ietf.org/html/rfc7468#section-13"
        },
        "signatureAlgorithm": {
          "type": "string",
          "description": "The signature algorithm used to verify a message against a signature using this key. These signature algorithm must match the structure and any object identifiers encoded in `public_key_pem` (i.e. this algorithm must match that of the public key)."
        }
      },
      "type": "object",
      "required": [
        "keyId",
        "publicKeyPem",
        "signatureAlgorithm"
      ]
    },
    "google-native:binaryauthorization/v1:PkixPublicKeySet": {
      "description": "A bundle of PKIX public keys, used to authenticate attestation signatures. Generally, a signature is considered to be authenticated by a `PkixPublicKeySet` if any of the public keys verify it (i.e. it is an \"OR\" of the keys).",
      "properties": {
        "pkixPublicKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:PkixPublicKey"
          },
          "description": "`pkix_public_keys` must have at least one entry."
        }
      },
      "type": "object",
      "required": [
        "pkixPublicKeys"
      ]
    },
    "google-native:binaryauthorization/v1:PkixPublicKeySetResponse": {
      "description": "A bundle of PKIX public keys, used to authenticate attestation signatures. Generally, a signature is considered to be authenticated by a `PkixPublicKeySet` if any of the public keys verify it (i.e. it is an \"OR\" of the keys).",
      "properties": {
        "pkixPublicKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:PkixPublicKeyResponse"
          },
          "description": "`pkix_public_keys` must have at least one entry."
        }
      },
      "type": "object",
      "required": [
        "pkixPublicKeys"
      ]
    },
    "google-native:binaryauthorization/v1:PkixPublicKeySignatureAlgorithm": {
      "description": "The signature algorithm used to verify a message against a signature using this key. These signature algorithm must match the structure and any object identifiers encoded in `public_key_pem` (i.e. this algorithm must match that of the public key).",
      "type": "string",
      "enum": [
        {
          "name": "SignatureAlgorithmUnspecified",
          "description": "Not specified.",
          "value": "SIGNATURE_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "RsaPss2048Sha256",
          "description": "RSASSA-PSS 2048 bit key with a SHA256 digest.",
          "value": "RSA_PSS_2048_SHA256"
        },
        {
          "name": "RsaSignPss2048Sha256",
          "description": "RSASSA-PSS 2048 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_2048_SHA256"
        },
        {
          "name": "RsaPss3072Sha256",
          "description": "RSASSA-PSS 3072 bit key with a SHA256 digest.",
          "value": "RSA_PSS_3072_SHA256"
        },
        {
          "name": "RsaSignPss3072Sha256",
          "description": "RSASSA-PSS 3072 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_3072_SHA256"
        },
        {
          "name": "RsaPss4096Sha256",
          "description": "RSASSA-PSS 4096 bit key with a SHA256 digest.",
          "value": "RSA_PSS_4096_SHA256"
        },
        {
          "name": "RsaSignPss4096Sha256",
          "description": "RSASSA-PSS 4096 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_4096_SHA256"
        },
        {
          "name": "RsaPss4096Sha512",
          "description": "RSASSA-PSS 4096 bit key with a SHA512 digest.",
          "value": "RSA_PSS_4096_SHA512"
        },
        {
          "name": "RsaSignPss4096Sha512",
          "description": "RSASSA-PSS 4096 bit key with a SHA512 digest.",
          "value": "RSA_SIGN_PSS_4096_SHA512"
        },
        {
          "name": "RsaSignPkcs12048Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 2048 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_2048_SHA256"
        },
        {
          "name": "RsaSignPkcs13072Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 3072 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_3072_SHA256"
        },
        {
          "name": "RsaSignPkcs14096Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_4096_SHA256"
        },
        {
          "name": "RsaSignPkcs14096Sha512",
          "description": "RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA512 digest.",
          "value": "RSA_SIGN_PKCS1_4096_SHA512"
        },
        {
          "name": "EcdsaP256Sha256",
          "description": "ECDSA on the NIST P-256 curve with a SHA256 digest.",
          "value": "ECDSA_P256_SHA256"
        },
        {
          "name": "EcSignP256Sha256",
          "description": "ECDSA on the NIST P-256 curve with a SHA256 digest.",
          "value": "EC_SIGN_P256_SHA256"
        },
        {
          "name": "EcdsaP384Sha384",
          "description": "ECDSA on the NIST P-384 curve with a SHA384 digest.",
          "value": "ECDSA_P384_SHA384"
        },
        {
          "name": "EcSignP384Sha384",
          "description": "ECDSA on the NIST P-384 curve with a SHA384 digest.",
          "value": "EC_SIGN_P384_SHA384"
        },
        {
          "name": "EcdsaP521Sha512",
          "description": "ECDSA on the NIST P-521 curve with a SHA512 digest.",
          "value": "ECDSA_P521_SHA512"
        },
        {
          "name": "EcSignP521Sha512",
          "description": "ECDSA on the NIST P-521 curve with a SHA512 digest.",
          "value": "EC_SIGN_P521_SHA512"
        }
      ]
    },
    "google-native:binaryauthorization/v1:Scope": {
      "description": "A scope specifier for `CheckSet` objects.",
      "properties": {
        "kubernetesNamespace": {
          "type": "string",
          "description": "Optional. Matches all Kubernetes service accounts in the provided namespace, unless a more specific `kubernetes_service_account` scope already matched."
        },
        "kubernetesServiceAccount": {
          "type": "string",
          "description": "Optional. Matches a single Kubernetes service account, e.g. `my-namespace:my-service-account`. `kubernetes_service_account` scope is always more specific than `kubernetes_namespace` scope for the same namespace."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:ScopeResponse": {
      "description": "A scope specifier for `CheckSet` objects.",
      "properties": {
        "kubernetesNamespace": {
          "type": "string",
          "description": "Optional. Matches all Kubernetes service accounts in the provided namespace, unless a more specific `kubernetes_service_account` scope already matched."
        },
        "kubernetesServiceAccount": {
          "type": "string",
          "description": "Optional. Matches a single Kubernetes service account, e.g. `my-namespace:my-service-account`. `kubernetes_service_account` scope is always more specific than `kubernetes_namespace` scope for the same namespace."
        }
      },
      "type": "object",
      "required": [
        "kubernetesNamespace",
        "kubernetesServiceAccount"
      ]
    },
    "google-native:binaryauthorization/v1:SimpleSigningAttestationCheck": {
      "description": "Require a signed [DSSE](https://github.com/secure-systems-lab/dsse) attestation with type SimpleSigning.",
      "properties": {
        "attestationAuthenticators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:AttestationAuthenticator"
          },
          "description": "The authenticators required by this check to verify an attestation. Typically this is one or more PKIX public keys for signature verification. Only one authenticator needs to consider an attestation verified in order for an attestation to be considered fully authenticated. In otherwords, this list of authenticators is an \"OR\" of the authenticator results. At least one authenticator is required."
        },
        "containerAnalysisAttestationProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The projects where attestations are stored as Container Analysis Occurrences. Only one attestation needs to successfully verify an image for this check to pass, so a single verified attestation found in any of `container_analysis_attestation_projects` is sufficient for the check to pass. When fetching Occurrences from Container Analysis, only 'AttestationOccurrence' kinds are considered. In the future, additional Occurrence kinds may be added to the query."
        }
      },
      "type": "object",
      "required": [
        "attestationAuthenticators"
      ]
    },
    "google-native:binaryauthorization/v1:SimpleSigningAttestationCheckResponse": {
      "description": "Require a signed [DSSE](https://github.com/secure-systems-lab/dsse) attestation with type SimpleSigning.",
      "properties": {
        "attestationAuthenticators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:AttestationAuthenticatorResponse"
          },
          "description": "The authenticators required by this check to verify an attestation. Typically this is one or more PKIX public keys for signature verification. Only one authenticator needs to consider an attestation verified in order for an attestation to be considered fully authenticated. In otherwords, this list of authenticators is an \"OR\" of the authenticator results. At least one authenticator is required."
        },
        "containerAnalysisAttestationProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The projects where attestations are stored as Container Analysis Occurrences. Only one attestation needs to successfully verify an image for this check to pass, so a single verified attestation found in any of `container_analysis_attestation_projects` is sufficient for the check to pass. When fetching Occurrences from Container Analysis, only 'AttestationOccurrence' kinds are considered. In the future, additional Occurrence kinds may be added to the query."
        }
      },
      "type": "object",
      "required": [
        "attestationAuthenticators",
        "containerAnalysisAttestationProjects"
      ]
    },
    "google-native:binaryauthorization/v1:SlsaCheck": {
      "description": "A SLSA provenance attestation check, which ensures that images are built by a trusted builder using source code from its trusted repositories only.",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:VerificationRule"
          },
          "description": "Specifies a list of verification rules for the SLSA attestations. An image is considered compliant with the SlsaCheck if any of the rules are satisfied."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:SlsaCheckResponse": {
      "description": "A SLSA provenance attestation check, which ensures that images are built by a trusted builder using source code from its trusted repositories only.",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:VerificationRuleResponse"
          },
          "description": "Specifies a list of verification rules for the SLSA attestations. An image is considered compliant with the SlsaCheck if any of the rules are satisfied."
        }
      },
      "type": "object",
      "required": [
        "rules"
      ]
    },
    "google-native:binaryauthorization/v1:TrustedDirectoryCheck": {
      "description": "A trusted directory check, which rejects images that do not come from the set of user-configured trusted directories.",
      "properties": {
        "trustedDirPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of trusted directory patterns. A pattern is in the form \"registry/path/to/directory\". The registry domain part is defined as two or more dot-separated words, e.g., `us.pkg.dev`, or `gcr.io`. Additionally, `*` can be used in three ways as wildcards: 1. leading `*` to match varying prefixes in registry subdomain (useful for location prefixes); 2. trailing `*` after registry/ to match varying endings; 3. trailing `**` after registry/ to match \"/\" as well. For example: -- `gcr.io/my-project/my-repo` is valid to match a single directory -- `*-docker.pkg.dev/my-project/my-repo` or `*.gcr.io/my-project` are valid to match varying prefixes -- `gcr.io/my-project/*` will match all direct directories in `my-project` -- `gcr.io/my-project/**` would match all directories in `my-project` -- `gcr.i*` is not allowed since the registry is not completely specified -- `sub*domain.gcr.io/nginx` is not valid because only leading `*` or trailing `*` are allowed. -- `*pkg.dev/my-project/my-repo` is not valid because leading `*` can only match subdomain -- `**-docker.pkg.dev` is not valid because one leading `*` is allowed, and that it cannot match `/`"
        }
      },
      "type": "object",
      "required": [
        "trustedDirPatterns"
      ]
    },
    "google-native:binaryauthorization/v1:TrustedDirectoryCheckResponse": {
      "description": "A trusted directory check, which rejects images that do not come from the set of user-configured trusted directories.",
      "properties": {
        "trustedDirPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of trusted directory patterns. A pattern is in the form \"registry/path/to/directory\". The registry domain part is defined as two or more dot-separated words, e.g., `us.pkg.dev`, or `gcr.io`. Additionally, `*` can be used in three ways as wildcards: 1. leading `*` to match varying prefixes in registry subdomain (useful for location prefixes); 2. trailing `*` after registry/ to match varying endings; 3. trailing `**` after registry/ to match \"/\" as well. For example: -- `gcr.io/my-project/my-repo` is valid to match a single directory -- `*-docker.pkg.dev/my-project/my-repo` or `*.gcr.io/my-project` are valid to match varying prefixes -- `gcr.io/my-project/*` will match all direct directories in `my-project` -- `gcr.io/my-project/**` would match all directories in `my-project` -- `gcr.i*` is not allowed since the registry is not completely specified -- `sub*domain.gcr.io/nginx` is not valid because only leading `*` or trailing `*` are allowed. -- `*pkg.dev/my-project/my-repo` is not valid because leading `*` can only match subdomain -- `**-docker.pkg.dev` is not valid because one leading `*` is allowed, and that it cannot match `/`"
        }
      },
      "type": "object",
      "required": [
        "trustedDirPatterns"
      ]
    },
    "google-native:binaryauthorization/v1:UserOwnedGrafeasNote": {
      "description": "An user owned Grafeas note references a Grafeas Attestation.Authority Note created by the user.",
      "properties": {
        "noteReference": {
          "type": "string",
          "description": "The Grafeas resource name of a Attestation.Authority Note, created by the user, in the format: `projects/*/notes/*`. This field may not be updated. An attestation by this attestor is stored as a Grafeas Attestation.Authority Occurrence that names a container image and that links to this Note. Grafeas is an external dependency."
        },
        "publicKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:AttestorPublicKey"
          },
          "description": "Optional. Public keys that verify attestations signed by this attestor. This field may be updated. If this field is non-empty, one of the specified public keys must verify that an attestation was signed by this attestor for the image specified in the admission request. If this field is empty, this attestor always returns that no valid attestations exist."
        }
      },
      "type": "object",
      "required": [
        "noteReference"
      ]
    },
    "google-native:binaryauthorization/v1:UserOwnedGrafeasNoteResponse": {
      "description": "An user owned Grafeas note references a Grafeas Attestation.Authority Note created by the user.",
      "properties": {
        "delegationServiceAccountEmail": {
          "type": "string",
          "description": "This field will contain the service account email address that this attestor will use as the principal when querying Container Analysis. Attestor administrators must grant this service account the IAM role needed to read attestations from the note_reference in Container Analysis (`containeranalysis.notes.occurrences.viewer`). This email address is fixed for the lifetime of the attestor, but callers should not make any other assumptions about the service account email; future versions may use an email based on a different naming pattern."
        },
        "noteReference": {
          "type": "string",
          "description": "The Grafeas resource name of a Attestation.Authority Note, created by the user, in the format: `projects/*/notes/*`. This field may not be updated. An attestation by this attestor is stored as a Grafeas Attestation.Authority Occurrence that names a container image and that links to this Note. Grafeas is an external dependency."
        },
        "publicKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:AttestorPublicKeyResponse"
          },
          "description": "Optional. Public keys that verify attestations signed by this attestor. This field may be updated. If this field is non-empty, one of the specified public keys must verify that an attestation was signed by this attestor for the image specified in the admission request. If this field is empty, this attestor always returns that no valid attestations exist."
        }
      },
      "type": "object",
      "required": [
        "delegationServiceAccountEmail",
        "noteReference",
        "publicKeys"
      ]
    },
    "google-native:binaryauthorization/v1:VerificationRule": {
      "description": "Specifies verification rules for evaluating the SLSA attestations including: which builders to trust, where to fetch the SLSA attestations generated by those builders, and other builder-specific evaluation rules such as which source repositories are trusted. An image is considered verified by the rule if any of the fetched SLSA attestations is verified.",
      "properties": {
        "attestationSource": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:AttestationSource",
          "description": "Specifies where to fetch the provenances attestations generated by the builder (group)."
        },
        "configBasedBuildRequired": {
          "type": "boolean",
          "description": "If true, require the image to be built from a top-level configuration. `trusted_source_repo_patterns` specifies the repositories containing this configuration."
        },
        "trustedBuilder": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:VerificationRuleTrustedBuilder",
          "description": "Each verification rule is used for evaluation against provenances generated by a specific builder (group). For some of the builders, such as the Google Cloud Build, users don't need to explicitly specify their roots of trust in the policy since the evaluation service can automatically fetch them based on the builder (group)."
        },
        "trustedSourceRepoPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of trusted source code repository URL patterns. These patterns match the full repository URL without its scheme (e.g. `https://`). The patterns must not include schemes. For example, the pattern `source.cloud.google.com/my-project/my-repo-name` matches the following URLs: - `source.cloud.google.com/my-project/my-repo-name` - `git+ssh://source.cloud.google.com/my-project/my-repo-name` - `https://source.cloud.google.com/my-project/my-repo-name` A pattern matches a URL either exactly or with `*` wildcards. `*` can be used in only two ways: 1. trailing `*` after hosturi/ to match varying endings; 2. trailing `**` after hosturi/ to match `/` as well. `*` and `**` can only be used as wildcards and can only occur at the end of the pattern after a `/`. (So it's not possible to match a URL that contains literal `*`.) For example: - `github.com/my-project/my-repo` is valid to match a single repo - `github.com/my-project/*` will match all direct repos in `my-project` - `github.com/**` matches all repos in GitHub"
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1:VerificationRuleResponse": {
      "description": "Specifies verification rules for evaluating the SLSA attestations including: which builders to trust, where to fetch the SLSA attestations generated by those builders, and other builder-specific evaluation rules such as which source repositories are trusted. An image is considered verified by the rule if any of the fetched SLSA attestations is verified.",
      "properties": {
        "attestationSource": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:AttestationSourceResponse",
          "description": "Specifies where to fetch the provenances attestations generated by the builder (group)."
        },
        "configBasedBuildRequired": {
          "type": "boolean",
          "description": "If true, require the image to be built from a top-level configuration. `trusted_source_repo_patterns` specifies the repositories containing this configuration."
        },
        "trustedBuilder": {
          "type": "string",
          "description": "Each verification rule is used for evaluation against provenances generated by a specific builder (group). For some of the builders, such as the Google Cloud Build, users don't need to explicitly specify their roots of trust in the policy since the evaluation service can automatically fetch them based on the builder (group)."
        },
        "trustedSourceRepoPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of trusted source code repository URL patterns. These patterns match the full repository URL without its scheme (e.g. `https://`). The patterns must not include schemes. For example, the pattern `source.cloud.google.com/my-project/my-repo-name` matches the following URLs: - `source.cloud.google.com/my-project/my-repo-name` - `git+ssh://source.cloud.google.com/my-project/my-repo-name` - `https://source.cloud.google.com/my-project/my-repo-name` A pattern matches a URL either exactly or with `*` wildcards. `*` can be used in only two ways: 1. trailing `*` after hosturi/ to match varying endings; 2. trailing `**` after hosturi/ to match `/` as well. `*` and `**` can only be used as wildcards and can only occur at the end of the pattern after a `/`. (So it's not possible to match a URL that contains literal `*`.) For example: - `github.com/my-project/my-repo` is valid to match a single repo - `github.com/my-project/*` will match all direct repos in `my-project` - `github.com/**` matches all repos in GitHub"
        }
      },
      "type": "object",
      "required": [
        "attestationSource",
        "configBasedBuildRequired",
        "trustedBuilder",
        "trustedSourceRepoPatterns"
      ]
    },
    "google-native:binaryauthorization/v1:VerificationRuleTrustedBuilder": {
      "description": "Each verification rule is used for evaluation against provenances generated by a specific builder (group). For some of the builders, such as the Google Cloud Build, users don't need to explicitly specify their roots of trust in the policy since the evaluation service can automatically fetch them based on the builder (group).",
      "type": "string",
      "enum": [
        {
          "name": "BuilderUnspecified",
          "description": "Should never happen.",
          "value": "BUILDER_UNSPECIFIED"
        },
        {
          "name": "GoogleCloudBuild",
          "description": "The whole Google Cloud Build (GCB) builder group, including all GCB builder types.",
          "value": "GOOGLE_CLOUD_BUILD"
        }
      ]
    },
    "google-native:binaryauthorization/v1:VulnerabilityCheck": {
      "description": "An image vulnerability check, which rejects images that violate the configured vulnerability rules.",
      "properties": {
        "allowedCves": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of specific CVEs to ignore even if the vulnerability level violates `maximumUnfixableSeverity` or `maximumFixableSeverity`. CVEs are listed in the format of Container Analysis note id. For example: - CVE-2021-20305 - CVE-2020-10543 The CVEs are applicable regardless of note provider project, e.g., an entry of `CVE-2021-20305` will allow vulnerabilities with a note name of either `projects/goog-vulnz/notes/CVE-2021-20305` or `projects/CUSTOM-PROJECT/notes/CVE-2021-20305`."
        },
        "blockedCves": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of specific CVEs to always raise warnings about even if the vulnerability level meets `maximumUnfixableSeverity` or `maximumFixableSeverity`. CVEs are listed in the format of Container Analysis note id. For example: - CVE-2021-20305 - CVE-2020-10543 The CVEs are applicable regardless of note provider project, e.g., an entry of `CVE-2021-20305` will block vulnerabilities with a note name of either `projects/goog-vulnz/notes/CVE-2021-20305` or `projects/CUSTOM-PROJECT/notes/CVE-2021-20305`."
        },
        "containerAnalysisVulnerabilityProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The projects where vulnerabilities are stored as Container Analysis Occurrences. Each project is expressed in the resource format of `projects/[PROJECT_ID]`, e.g., `projects/my-gcp-project`. An attempt will be made for each project to fetch vulnerabilities, and all valid vulnerabilities will be used to check against the vulnerability policy. If no valid scan is found in all projects configured here, an error will be returned for the check."
        },
        "maximumFixableSeverity": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:VulnerabilityCheckMaximumFixableSeverity",
          "description": "The threshold for severity for which a fix is currently available. This field is required and must be set."
        },
        "maximumUnfixableSeverity": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:VulnerabilityCheckMaximumUnfixableSeverity",
          "description": "The threshold for severity for which a fix isn't currently available. This field is required and must be set."
        }
      },
      "type": "object",
      "required": [
        "maximumFixableSeverity",
        "maximumUnfixableSeverity"
      ]
    },
    "google-native:binaryauthorization/v1:VulnerabilityCheckMaximumFixableSeverity": {
      "description": "Required. The threshold for severity for which a fix is currently available. This field is required and must be set.",
      "type": "string",
      "enum": [
        {
          "name": "MaximumAllowedSeverityUnspecified",
          "description": "Not specified.",
          "value": "MAXIMUM_ALLOWED_SEVERITY_UNSPECIFIED"
        },
        {
          "name": "BlockAll",
          "description": "Block any vulnerability.",
          "value": "BLOCK_ALL"
        },
        {
          "name": "Minimal",
          "description": "Allow only minimal severity.",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Allow only low severity and lower.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Allow medium severity and lower.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "Allow high severity and lower.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Allow critical severity and lower.",
          "value": "CRITICAL"
        },
        {
          "name": "AllowAll",
          "description": "Allow all severity, even vulnerability with unspecified severity.",
          "value": "ALLOW_ALL"
        }
      ]
    },
    "google-native:binaryauthorization/v1:VulnerabilityCheckMaximumUnfixableSeverity": {
      "description": "Required. The threshold for severity for which a fix isn't currently available. This field is required and must be set.",
      "type": "string",
      "enum": [
        {
          "name": "MaximumAllowedSeverityUnspecified",
          "description": "Not specified.",
          "value": "MAXIMUM_ALLOWED_SEVERITY_UNSPECIFIED"
        },
        {
          "name": "BlockAll",
          "description": "Block any vulnerability.",
          "value": "BLOCK_ALL"
        },
        {
          "name": "Minimal",
          "description": "Allow only minimal severity.",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Allow only low severity and lower.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Allow medium severity and lower.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "Allow high severity and lower.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Allow critical severity and lower.",
          "value": "CRITICAL"
        },
        {
          "name": "AllowAll",
          "description": "Allow all severity, even vulnerability with unspecified severity.",
          "value": "ALLOW_ALL"
        }
      ]
    },
    "google-native:binaryauthorization/v1:VulnerabilityCheckResponse": {
      "description": "An image vulnerability check, which rejects images that violate the configured vulnerability rules.",
      "properties": {
        "allowedCves": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of specific CVEs to ignore even if the vulnerability level violates `maximumUnfixableSeverity` or `maximumFixableSeverity`. CVEs are listed in the format of Container Analysis note id. For example: - CVE-2021-20305 - CVE-2020-10543 The CVEs are applicable regardless of note provider project, e.g., an entry of `CVE-2021-20305` will allow vulnerabilities with a note name of either `projects/goog-vulnz/notes/CVE-2021-20305` or `projects/CUSTOM-PROJECT/notes/CVE-2021-20305`."
        },
        "blockedCves": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of specific CVEs to always raise warnings about even if the vulnerability level meets `maximumUnfixableSeverity` or `maximumFixableSeverity`. CVEs are listed in the format of Container Analysis note id. For example: - CVE-2021-20305 - CVE-2020-10543 The CVEs are applicable regardless of note provider project, e.g., an entry of `CVE-2021-20305` will block vulnerabilities with a note name of either `projects/goog-vulnz/notes/CVE-2021-20305` or `projects/CUSTOM-PROJECT/notes/CVE-2021-20305`."
        },
        "containerAnalysisVulnerabilityProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The projects where vulnerabilities are stored as Container Analysis Occurrences. Each project is expressed in the resource format of `projects/[PROJECT_ID]`, e.g., `projects/my-gcp-project`. An attempt will be made for each project to fetch vulnerabilities, and all valid vulnerabilities will be used to check against the vulnerability policy. If no valid scan is found in all projects configured here, an error will be returned for the check."
        },
        "maximumFixableSeverity": {
          "type": "string",
          "description": "The threshold for severity for which a fix is currently available. This field is required and must be set."
        },
        "maximumUnfixableSeverity": {
          "type": "string",
          "description": "The threshold for severity for which a fix isn't currently available. This field is required and must be set."
        }
      },
      "type": "object",
      "required": [
        "allowedCves",
        "blockedCves",
        "containerAnalysisVulnerabilityProjects",
        "maximumFixableSeverity",
        "maximumUnfixableSeverity"
      ]
    },
    "google-native:binaryauthorization/v1beta1:AttestorPublicKey": {
      "description": "An attestor public key that will be used to verify attestations signed by this attestor.",
      "properties": {
        "asciiArmoredPgpPublicKey": {
          "type": "string",
          "description": "ASCII-armored representation of a PGP public key, as the entire output by the command `gpg --export --armor foo@example.com` (either LF or CRLF line endings). When using this field, `id` should be left blank. The BinAuthz API handlers will calculate the ID and fill it in automatically. BinAuthz computes this ID as the OpenPGP RFC4880 V4 fingerprint, represented as upper-case hex. If `id` is provided by the caller, it will be overwritten by the API-calculated ID."
        },
        "comment": {
          "type": "string",
          "description": "Optional. A descriptive comment. This field may be updated."
        },
        "id": {
          "type": "string",
          "description": "The ID of this public key. Signatures verified by BinAuthz must include the ID of the public key that can be used to verify them, and that ID must match the contents of this field exactly. Additional restrictions on this field can be imposed based on which public key type is encapsulated. See the documentation on `public_key` cases below for details."
        },
        "pkixPublicKey": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:PkixPublicKey",
          "description": "A raw PKIX SubjectPublicKeyInfo format public key. NOTE: `id` may be explicitly provided by the caller when using this type of public key, but it MUST be a valid RFC3986 URI. If `id` is left blank, a default one will be computed based on the digest of the DER encoding of the public key."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1beta1:AttestorPublicKeyResponse": {
      "description": "An attestor public key that will be used to verify attestations signed by this attestor.",
      "properties": {
        "asciiArmoredPgpPublicKey": {
          "type": "string",
          "description": "ASCII-armored representation of a PGP public key, as the entire output by the command `gpg --export --armor foo@example.com` (either LF or CRLF line endings). When using this field, `id` should be left blank. The BinAuthz API handlers will calculate the ID and fill it in automatically. BinAuthz computes this ID as the OpenPGP RFC4880 V4 fingerprint, represented as upper-case hex. If `id` is provided by the caller, it will be overwritten by the API-calculated ID."
        },
        "comment": {
          "type": "string",
          "description": "Optional. A descriptive comment. This field may be updated."
        },
        "pkixPublicKey": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:PkixPublicKeyResponse",
          "description": "A raw PKIX SubjectPublicKeyInfo format public key. NOTE: `id` may be explicitly provided by the caller when using this type of public key, but it MUST be a valid RFC3986 URI. If `id` is left blank, a default one will be computed based on the digest of the DER encoding of the public key."
        }
      },
      "type": "object",
      "required": [
        "asciiArmoredPgpPublicKey",
        "comment",
        "pkixPublicKey"
      ]
    },
    "google-native:binaryauthorization/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:binaryauthorization/v1beta1:PkixPublicKey": {
      "description": "A public key in the PkixPublicKey format (see https://tools.ietf.org/html/rfc5280#section-4.1.2.7 for details). Public keys of this type are typically textually encoded using the PEM format.",
      "properties": {
        "publicKeyPem": {
          "type": "string",
          "description": "A PEM-encoded public key, as described in https://tools.ietf.org/html/rfc7468#section-13"
        },
        "signatureAlgorithm": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:PkixPublicKeySignatureAlgorithm",
          "description": "The signature algorithm used to verify a message against a signature using this key. These signature algorithm must match the structure and any object identifiers encoded in `public_key_pem` (i.e. this algorithm must match that of the public key)."
        }
      },
      "type": "object"
    },
    "google-native:binaryauthorization/v1beta1:PkixPublicKeyResponse": {
      "description": "A public key in the PkixPublicKey format (see https://tools.ietf.org/html/rfc5280#section-4.1.2.7 for details). Public keys of this type are typically textually encoded using the PEM format.",
      "properties": {
        "publicKeyPem": {
          "type": "string",
          "description": "A PEM-encoded public key, as described in https://tools.ietf.org/html/rfc7468#section-13"
        },
        "signatureAlgorithm": {
          "type": "string",
          "description": "The signature algorithm used to verify a message against a signature using this key. These signature algorithm must match the structure and any object identifiers encoded in `public_key_pem` (i.e. this algorithm must match that of the public key)."
        }
      },
      "type": "object",
      "required": [
        "publicKeyPem",
        "signatureAlgorithm"
      ]
    },
    "google-native:binaryauthorization/v1beta1:PkixPublicKeySignatureAlgorithm": {
      "description": "The signature algorithm used to verify a message against a signature using this key. These signature algorithm must match the structure and any object identifiers encoded in `public_key_pem` (i.e. this algorithm must match that of the public key).",
      "type": "string",
      "enum": [
        {
          "name": "SignatureAlgorithmUnspecified",
          "description": "Not specified.",
          "value": "SIGNATURE_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "RsaPss2048Sha256",
          "description": "RSASSA-PSS 2048 bit key with a SHA256 digest.",
          "value": "RSA_PSS_2048_SHA256"
        },
        {
          "name": "RsaSignPss2048Sha256",
          "description": "RSASSA-PSS 2048 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_2048_SHA256"
        },
        {
          "name": "RsaPss3072Sha256",
          "description": "RSASSA-PSS 3072 bit key with a SHA256 digest.",
          "value": "RSA_PSS_3072_SHA256"
        },
        {
          "name": "RsaSignPss3072Sha256",
          "description": "RSASSA-PSS 3072 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_3072_SHA256"
        },
        {
          "name": "RsaPss4096Sha256",
          "description": "RSASSA-PSS 4096 bit key with a SHA256 digest.",
          "value": "RSA_PSS_4096_SHA256"
        },
        {
          "name": "RsaSignPss4096Sha256",
          "description": "RSASSA-PSS 4096 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_4096_SHA256"
        },
        {
          "name": "RsaPss4096Sha512",
          "description": "RSASSA-PSS 4096 bit key with a SHA512 digest.",
          "value": "RSA_PSS_4096_SHA512"
        },
        {
          "name": "RsaSignPss4096Sha512",
          "description": "RSASSA-PSS 4096 bit key with a SHA512 digest.",
          "value": "RSA_SIGN_PSS_4096_SHA512"
        },
        {
          "name": "RsaSignPkcs12048Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 2048 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_2048_SHA256"
        },
        {
          "name": "RsaSignPkcs13072Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 3072 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_3072_SHA256"
        },
        {
          "name": "RsaSignPkcs14096Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_4096_SHA256"
        },
        {
          "name": "RsaSignPkcs14096Sha512",
          "description": "RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA512 digest.",
          "value": "RSA_SIGN_PKCS1_4096_SHA512"
        },
        {
          "name": "EcdsaP256Sha256",
          "description": "ECDSA on the NIST P-256 curve with a SHA256 digest.",
          "value": "ECDSA_P256_SHA256"
        },
        {
          "name": "EcSignP256Sha256",
          "description": "ECDSA on the NIST P-256 curve with a SHA256 digest.",
          "value": "EC_SIGN_P256_SHA256"
        },
        {
          "name": "EcdsaP384Sha384",
          "description": "ECDSA on the NIST P-384 curve with a SHA384 digest.",
          "value": "ECDSA_P384_SHA384"
        },
        {
          "name": "EcSignP384Sha384",
          "description": "ECDSA on the NIST P-384 curve with a SHA384 digest.",
          "value": "EC_SIGN_P384_SHA384"
        },
        {
          "name": "EcdsaP521Sha512",
          "description": "ECDSA on the NIST P-521 curve with a SHA512 digest.",
          "value": "ECDSA_P521_SHA512"
        },
        {
          "name": "EcSignP521Sha512",
          "description": "ECDSA on the NIST P-521 curve with a SHA512 digest.",
          "value": "EC_SIGN_P521_SHA512"
        }
      ]
    },
    "google-native:binaryauthorization/v1beta1:UserOwnedDrydockNote": {
      "description": "An user owned drydock note references a Drydock ATTESTATION_AUTHORITY Note created by the user.",
      "properties": {
        "noteReference": {
          "type": "string",
          "description": "The Drydock resource name of a ATTESTATION_AUTHORITY Note, created by the user, in the format: `projects/*/notes/*` (or the legacy `providers/*/notes/*`). This field may not be updated. An attestation by this attestor is stored as a Drydock ATTESTATION_AUTHORITY Occurrence that names a container image and that links to this Note. Drydock is an external dependency."
        },
        "publicKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:AttestorPublicKey"
          },
          "description": "Optional. Public keys that verify attestations signed by this attestor. This field may be updated. If this field is non-empty, one of the specified public keys must verify that an attestation was signed by this attestor for the image specified in the admission request. If this field is empty, this attestor always returns that no valid attestations exist."
        }
      },
      "type": "object",
      "required": [
        "noteReference"
      ]
    },
    "google-native:binaryauthorization/v1beta1:UserOwnedDrydockNoteResponse": {
      "description": "An user owned drydock note references a Drydock ATTESTATION_AUTHORITY Note created by the user.",
      "properties": {
        "delegationServiceAccountEmail": {
          "type": "string",
          "description": "This field will contain the service account email address that this Attestor will use as the principal when querying Container Analysis. Attestor administrators must grant this service account the IAM role needed to read attestations from the note_reference in Container Analysis (`containeranalysis.notes.occurrences.viewer`). This email address is fixed for the lifetime of the Attestor, but callers should not make any other assumptions about the service account email; future versions may use an email based on a different naming pattern."
        },
        "noteReference": {
          "type": "string",
          "description": "The Drydock resource name of a ATTESTATION_AUTHORITY Note, created by the user, in the format: `projects/*/notes/*` (or the legacy `providers/*/notes/*`). This field may not be updated. An attestation by this attestor is stored as a Drydock ATTESTATION_AUTHORITY Occurrence that names a container image and that links to this Note. Drydock is an external dependency."
        },
        "publicKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:AttestorPublicKeyResponse"
          },
          "description": "Optional. Public keys that verify attestations signed by this attestor. This field may be updated. If this field is non-empty, one of the specified public keys must verify that an attestation was signed by this attestor for the image specified in the admission request. If this field is empty, this attestor always returns that no valid attestations exist."
        }
      },
      "type": "object",
      "required": [
        "delegationServiceAccountEmail",
        "noteReference",
        "publicKeys"
      ]
    },
    "google-native:blockchainnodeengine/v1:BlockchainNodeBlockchainType": {
      "description": "Immutable. The blockchain type of the node.",
      "type": "string",
      "enum": [
        {
          "name": "BlockchainTypeUnspecified",
          "description": "Blockchain type has not been specified, but should be.",
          "value": "BLOCKCHAIN_TYPE_UNSPECIFIED"
        },
        {
          "name": "Ethereum",
          "description": "The blockchain type is Ethereum.",
          "value": "ETHEREUM"
        }
      ]
    },
    "google-native:blockchainnodeengine/v1:ConnectionInfoResponse": {
      "description": "The connection information through which to interact with a blockchain node.",
      "properties": {
        "endpointInfo": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EndpointInfoResponse",
          "description": "The endpoint information through which to interact with a blockchain node."
        },
        "serviceAttachment": {
          "type": "string",
          "description": "A service attachment that exposes a node, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}"
        }
      },
      "type": "object",
      "required": [
        "endpointInfo",
        "serviceAttachment"
      ]
    },
    "google-native:blockchainnodeengine/v1:EndpointInfoResponse": {
      "description": "Contains endpoint information through which to interact with a blockchain node.",
      "properties": {
        "jsonRpcApiEndpoint": {
          "type": "string",
          "description": "The assigned URL for the node JSON-RPC API endpoint."
        },
        "websocketsApiEndpoint": {
          "type": "string",
          "description": "The assigned URL for the node WebSockets API endpoint."
        }
      },
      "type": "object",
      "required": [
        "jsonRpcApiEndpoint",
        "websocketsApiEndpoint"
      ]
    },
    "google-native:blockchainnodeengine/v1:EthereumDetails": {
      "description": "Ethereum-specific blockchain node details.",
      "properties": {
        "apiEnableAdmin": {
          "type": "boolean",
          "description": "Immutable. Enables JSON-RPC access to functions in the `admin` namespace. Defaults to `false`."
        },
        "apiEnableDebug": {
          "type": "boolean",
          "description": "Immutable. Enables JSON-RPC access to functions in the `debug` namespace. Defaults to `false`."
        },
        "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."
        },
        "consensusClient": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EthereumDetailsConsensusClient",
          "description": "Immutable. The consensus client."
        },
        "executionClient": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EthereumDetailsExecutionClient",
          "description": "Immutable. The execution client"
        },
        "gethDetails": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:GethDetails",
          "description": "Details for the Geth execution client."
        },
        "network": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EthereumDetailsNetwork",
          "description": "Immutable. The Ethereum environment being accessed."
        },
        "nodeType": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EthereumDetailsNodeType",
          "description": "Immutable. The type of Ethereum node."
        }
      },
      "type": "object"
    },
    "google-native:blockchainnodeengine/v1:EthereumDetailsConsensusClient": {
      "description": "Immutable. The consensus client.",
      "type": "string",
      "enum": [
        {
          "name": "ConsensusClientUnspecified",
          "description": "Consensus client has not been specified, but should be.",
          "value": "CONSENSUS_CLIENT_UNSPECIFIED"
        },
        {
          "name": "Lighthouse",
          "description": "Consensus client implementation written in Rust, maintained by Sigma Prime. See [Lighthouse - Sigma Prime](https://lighthouse.sigmaprime.io/) for details.",
          "value": "LIGHTHOUSE"
        },
        {
          "name": "ErigonEmbeddedConsensusLayer",
          "description": "Erigon's embedded consensus client embedded in the execution client. Note this option is not currently available when creating new blockchain nodes. See [Erigon on GitHub](https://github.com/ledgerwatch/erigon#embedded-consensus-layer) for details.",
          "value": "ERIGON_EMBEDDED_CONSENSUS_LAYER"
        }
      ]
    },
    "google-native:blockchainnodeengine/v1:EthereumDetailsExecutionClient": {
      "description": "Immutable. The execution client",
      "type": "string",
      "enum": [
        {
          "name": "ExecutionClientUnspecified",
          "description": "Execution client has not been specified, but should be.",
          "value": "EXECUTION_CLIENT_UNSPECIFIED"
        },
        {
          "name": "Geth",
          "description": "Official Go implementation of the Ethereum protocol. See [go-ethereum](https://geth.ethereum.org/) for details.",
          "value": "GETH"
        },
        {
          "name": "Erigon",
          "description": "An implementation of Ethereum (execution client), on the efficiency frontier, written in Go. See [Erigon on GitHub](https://github.com/ledgerwatch/erigon) for details.",
          "value": "ERIGON"
        }
      ]
    },
    "google-native:blockchainnodeengine/v1:EthereumDetailsNetwork": {
      "description": "Immutable. The Ethereum environment being accessed.",
      "type": "string",
      "enum": [
        {
          "name": "NetworkUnspecified",
          "description": "The network has not been specified, but should be.",
          "value": "NETWORK_UNSPECIFIED"
        },
        {
          "name": "Mainnet",
          "description": "The Ethereum Mainnet.",
          "value": "MAINNET"
        },
        {
          "name": "TestnetGoerliPrater",
          "description": "The Ethereum Testnet based on Goerli protocol.",
          "value": "TESTNET_GOERLI_PRATER"
        },
        {
          "name": "TestnetSepolia",
          "description": "The Ethereum Testnet based on Sepolia/Bepolia protocol. See https://github.com/eth-clients/sepolia.",
          "value": "TESTNET_SEPOLIA"
        },
        {
          "name": "TestnetHolesky",
          "description": "The Ethereum Testnet based on Holesky specification. See https://github.com/eth-clients/holesky.",
          "value": "TESTNET_HOLESKY"
        }
      ]
    },
    "google-native:blockchainnodeengine/v1:EthereumDetailsNodeType": {
      "description": "Immutable. The type of Ethereum node.",
      "type": "string",
      "enum": [
        {
          "name": "NodeTypeUnspecified",
          "description": "Node type has not been specified, but should be.",
          "value": "NODE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Light",
          "description": "An Ethereum node that only downloads Ethereum block headers.",
          "value": "LIGHT"
        },
        {
          "name": "Full",
          "description": "Keeps a complete copy of the blockchain data, and contributes to the network by receiving, validating, and forwarding transactions.",
          "value": "FULL"
        },
        {
          "name": "Archive",
          "description": "Holds the same data as full node as well as all of the blockchain's history state data dating back to the Genesis Block.",
          "value": "ARCHIVE"
        }
      ]
    },
    "google-native:blockchainnodeengine/v1:EthereumDetailsResponse": {
      "description": "Ethereum-specific blockchain node details.",
      "properties": {
        "additionalEndpoints": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EthereumEndpointsResponse",
          "description": "Ethereum-specific endpoint information."
        },
        "apiEnableAdmin": {
          "type": "boolean",
          "description": "Immutable. Enables JSON-RPC access to functions in the `admin` namespace. Defaults to `false`."
        },
        "apiEnableDebug": {
          "type": "boolean",
          "description": "Immutable. Enables JSON-RPC access to functions in the `debug` namespace. Defaults to `false`."
        },
        "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."
        },
        "consensusClient": {
          "type": "string",
          "description": "Immutable. The consensus client."
        },
        "executionClient": {
          "type": "string",
          "description": "Immutable. The execution client"
        },
        "gethDetails": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:GethDetailsResponse",
          "description": "Details for the Geth execution client."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The Ethereum environment being accessed."
        },
        "nodeType": {
          "type": "string",
          "description": "Immutable. The type of Ethereum node."
        }
      },
      "type": "object",
      "required": [
        "additionalEndpoints",
        "apiEnableAdmin",
        "apiEnableDebug",
        "beaconFeeRecipient",
        "consensusClient",
        "executionClient",
        "gethDetails",
        "network",
        "nodeType"
      ]
    },
    "google-native:blockchainnodeengine/v1:EthereumEndpointsResponse": {
      "description": "Contains endpoint information specific to Ethereum nodes.",
      "properties": {
        "beaconApiEndpoint": {
          "type": "string",
          "description": "The assigned URL for the node's Beacon API endpoint."
        },
        "beaconPrometheusMetricsApiEndpoint": {
          "type": "string",
          "description": "The assigned URL for the node's Beacon Prometheus metrics endpoint. See [Prometheus Metrics](https://lighthouse-book.sigmaprime.io/advanced_metrics.html) for more details."
        },
        "executionClientPrometheusMetricsApiEndpoint": {
          "type": "string",
          "description": "The assigned URL for the node's execution client's Prometheus metrics endpoint."
        }
      },
      "type": "object",
      "required": [
        "beaconApiEndpoint",
        "beaconPrometheusMetricsApiEndpoint",
        "executionClientPrometheusMetricsApiEndpoint"
      ]
    },
    "google-native:blockchainnodeengine/v1:GethDetails": {
      "description": "Options for the Geth execution client. See [Command-line Options](https://geth.ethereum.org/docs/fundamentals/command-line-options) for more details.",
      "properties": {
        "garbageCollectionMode": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:GethDetailsGarbageCollectionMode",
          "description": "Immutable. Blockchain garbage collection mode."
        }
      },
      "type": "object"
    },
    "google-native:blockchainnodeengine/v1:GethDetailsGarbageCollectionMode": {
      "description": "Immutable. Blockchain garbage collection mode.",
      "type": "string",
      "enum": [
        {
          "name": "GarbageCollectionModeUnspecified",
          "description": "The garbage collection has not been specified.",
          "value": "GARBAGE_COLLECTION_MODE_UNSPECIFIED"
        },
        {
          "name": "Full",
          "description": "Configures Geth's garbage collection so that older data not needed for a full node is deleted. This is the default mode when creating a full node.",
          "value": "FULL"
        },
        {
          "name": "Archive",
          "description": "Configures Geth's garbage collection so that old data is never deleted. This is the default mode when creating an archive node. This value can also be chosen when creating a full node in order to create a partial/recent archive node. See [Sync modes](https://geth.ethereum.org/docs/fundamentals/sync-modes) for more details.",
          "value": "ARCHIVE"
        }
      ]
    },
    "google-native:blockchainnodeengine/v1:GethDetailsResponse": {
      "description": "Options for the Geth execution client. See [Command-line Options](https://geth.ethereum.org/docs/fundamentals/command-line-options) for more details.",
      "properties": {
        "garbageCollectionMode": {
          "type": "string",
          "description": "Immutable. Blockchain garbage collection mode."
        }
      },
      "type": "object",
      "required": [
        "garbageCollectionMode"
      ]
    },
    "google-native:certificatemanager/v1:AuthorizationAttemptInfoResponse": {
      "description": "State of the latest attempt to authorize a domain for certificate issuance.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Human readable explanation for reaching the state. Provided to help address the configuration issues. Not guaranteed to be stable. For programmatic access use FailureReason enum."
        },
        "domain": {
          "type": "string",
          "description": "Domain name of the authorization attempt."
        },
        "failureReason": {
          "type": "string",
          "description": "Reason for failure of the authorization attempt for the domain."
        },
        "state": {
          "type": "string",
          "description": "State of the domain for managed certificate issuance."
        }
      },
      "type": "object",
      "required": [
        "details",
        "domain",
        "failureReason",
        "state"
      ]
    },
    "google-native:certificatemanager/v1:CertificateAuthorityConfig": {
      "description": "The CA that issues the workload certificate. It includes CA address, type, authentication to CA service, etc.",
      "properties": {
        "certificateAuthorityServiceConfig": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:CertificateAuthorityServiceConfig",
          "description": "Defines a CertificateAuthorityServiceConfig."
        }
      },
      "type": "object"
    },
    "google-native:certificatemanager/v1:CertificateAuthorityConfigResponse": {
      "description": "The CA that issues the workload certificate. It includes CA address, type, authentication to CA service, etc.",
      "properties": {
        "certificateAuthorityServiceConfig": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:CertificateAuthorityServiceConfigResponse",
          "description": "Defines a CertificateAuthorityServiceConfig."
        }
      },
      "type": "object",
      "required": [
        "certificateAuthorityServiceConfig"
      ]
    },
    "google-native:certificatemanager/v1:CertificateAuthorityServiceConfig": {
      "description": "Contains information required to contact CA service.",
      "properties": {
        "caPool": {
          "type": "string",
          "description": "A CA pool resource used to issue a certificate. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\"."
        }
      },
      "type": "object",
      "required": [
        "caPool"
      ]
    },
    "google-native:certificatemanager/v1:CertificateAuthorityServiceConfigResponse": {
      "description": "Contains information required to contact CA service.",
      "properties": {
        "caPool": {
          "type": "string",
          "description": "A CA pool resource used to issue a certificate. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\"."
        }
      },
      "type": "object",
      "required": [
        "caPool"
      ]
    },
    "google-native:certificatemanager/v1:CertificateIssuanceConfigKeyAlgorithm": {
      "description": "Required. The key algorithm to use when generating the private key.",
      "type": "string",
      "enum": [
        {
          "name": "KeyAlgorithmUnspecified",
          "description": "Unspecified key algorithm.",
          "value": "KEY_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "Rsa2048",
          "description": "Specifies RSA with a 2048-bit modulus.",
          "value": "RSA_2048"
        },
        {
          "name": "EcdsaP256",
          "description": "Specifies ECDSA with curve P256.",
          "value": "ECDSA_P256"
        }
      ]
    },
    "google-native:certificatemanager/v1:CertificateMapEntryMatcher": {
      "description": "A predefined matcher for particular cases, other than SNI selection.",
      "type": "string",
      "enum": [
        {
          "name": "MatcherUnspecified",
          "description": "A matcher has't been recognized.",
          "value": "MATCHER_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "A primary certificate that is served when SNI wasn't specified in the request or SNI couldn't be found in the map.",
          "value": "PRIMARY"
        }
      ]
    },
    "google-native:certificatemanager/v1:CertificateScope": {
      "description": "Immutable. The scope of the certificate.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "Certificates with default scope are served from core Google data centers. If unsure, choose this option.",
          "value": "DEFAULT"
        },
        {
          "name": "EdgeCache",
          "description": "Certificates with scope EDGE_CACHE are special-purposed certificates, served from Edge Points of Presence. See https://cloud.google.com/vpc/docs/edge-locations.",
          "value": "EDGE_CACHE"
        },
        {
          "name": "AllRegions",
          "description": "Certificates with ALL_REGIONS scope are served from all Google Cloud regions. See https://cloud.google.com/compute/docs/regions-zones.",
          "value": "ALL_REGIONS"
        }
      ]
    },
    "google-native:certificatemanager/v1:DnsResourceRecordResponse": {
      "description": "The structure describing the DNS Resource Record that needs to be added to DNS configuration for the authorization to be usable by certificate.",
      "properties": {
        "data": {
          "type": "string",
          "description": "Data of the DNS Resource Record."
        },
        "name": {
          "type": "string",
          "description": "Fully qualified name of the DNS Resource Record. e.g. `_acme-challenge.example.com`"
        },
        "type": {
          "type": "string",
          "description": "Type of the DNS Resource Record. Currently always set to \"CNAME\"."
        }
      },
      "type": "object",
      "required": [
        "data",
        "name",
        "type"
      ]
    },
    "google-native:certificatemanager/v1:GclbTargetResponse": {
      "description": "Describes a Target Proxy that uses this Certificate Map.",
      "properties": {
        "ipConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:IpConfigResponse"
          },
          "description": "IP configurations for this Target Proxy where the Certificate Map is serving."
        },
        "targetHttpsProxy": {
          "type": "string",
          "description": "This field returns the resource name in the following format: `//compute.googleapis.com/projects/*/global/targetHttpsProxies/*`."
        },
        "targetSslProxy": {
          "type": "string",
          "description": "This field returns the resource name in the following format: `//compute.googleapis.com/projects/*/global/targetSslProxies/*`."
        }
      },
      "type": "object",
      "required": [
        "ipConfigs",
        "targetHttpsProxy",
        "targetSslProxy"
      ]
    },
    "google-native:certificatemanager/v1:IntermediateCA": {
      "description": "Defines an intermediate CA.",
      "properties": {
        "pemCertificate": {
          "type": "string",
          "description": "PEM intermediate certificate used for building up paths for validation. Each certificate provided in PEM format may occupy up to 5kB."
        }
      },
      "type": "object"
    },
    "google-native:certificatemanager/v1:IntermediateCAResponse": {
      "description": "Defines an intermediate CA.",
      "properties": {
        "pemCertificate": {
          "type": "string",
          "description": "PEM intermediate certificate used for building up paths for validation. Each certificate provided in PEM format may occupy up to 5kB."
        }
      },
      "type": "object",
      "required": [
        "pemCertificate"
      ]
    },
    "google-native:certificatemanager/v1:IpConfigResponse": {
      "description": "Defines IP configuration where this Certificate Map is serving.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "An external IP address."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Ports."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ports"
      ]
    },
    "google-native:certificatemanager/v1:ManagedCertificate": {
      "description": "Configuration and state of a Managed Certificate. Certificate Manager provisions and renews Managed Certificates automatically, for as long as it's authorized to do so.",
      "properties": {
        "dnsAuthorizations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Authorizations that will be used for performing domain authorization."
        },
        "domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The domains for which a managed SSL certificate will be generated. Wildcard domains are only supported with DNS challenge resolution."
        },
        "issuanceConfig": {
          "type": "string",
          "description": "Immutable. The resource name for a CertificateIssuanceConfig used to configure private PKI certificates in the format `projects/*/locations/*/certificateIssuanceConfigs/*`. If 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."
        }
      },
      "type": "object"
    },
    "google-native:certificatemanager/v1:ManagedCertificateResponse": {
      "description": "Configuration and state of a Managed Certificate. Certificate Manager provisions and renews Managed Certificates automatically, for as long as it's authorized to do so.",
      "properties": {
        "authorizationAttemptInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:AuthorizationAttemptInfoResponse"
          },
          "description": "Detailed state of the latest authorization attempt for each domain specified for managed certificate resource."
        },
        "dnsAuthorizations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Authorizations that will be used for performing domain authorization."
        },
        "domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The domains for which a managed SSL certificate will be generated. Wildcard domains are only supported with DNS challenge resolution."
        },
        "issuanceConfig": {
          "type": "string",
          "description": "Immutable. The resource name for a CertificateIssuanceConfig used to configure private PKI certificates in the format `projects/*/locations/*/certificateIssuanceConfigs/*`. If 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."
        },
        "provisioningIssue": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:ProvisioningIssueResponse",
          "description": "Information about issues with provisioning a Managed Certificate."
        },
        "state": {
          "type": "string",
          "description": "State of the managed certificate resource."
        }
      },
      "type": "object",
      "required": [
        "authorizationAttemptInfo",
        "dnsAuthorizations",
        "domains",
        "issuanceConfig",
        "provisioningIssue",
        "state"
      ]
    },
    "google-native:certificatemanager/v1:ProvisioningIssueResponse": {
      "description": "Information about issues with provisioning a Managed Certificate.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Human readable explanation about the issue. Provided to help address the configuration issues. Not guaranteed to be stable. For programmatic access use Reason enum."
        },
        "reason": {
          "type": "string",
          "description": "Reason for provisioning failures."
        }
      },
      "type": "object",
      "required": [
        "details",
        "reason"
      ]
    },
    "google-native:certificatemanager/v1:SelfManagedCertificate": {
      "description": "Certificate data for a SelfManaged Certificate. SelfManaged Certificates are uploaded by the user. Updating such certificates before they expire remains the user's responsibility.",
      "properties": {
        "pemCertificate": {
          "type": "string",
          "description": "Input only. The PEM-encoded certificate chain. Leaf certificate comes first, followed by intermediate ones if any."
        },
        "pemPrivateKey": {
          "type": "string",
          "description": "Input only. The PEM-encoded private key of the leaf certificate."
        }
      },
      "type": "object"
    },
    "google-native:certificatemanager/v1:SelfManagedCertificateResponse": {
      "description": "Certificate data for a SelfManaged Certificate. SelfManaged Certificates are uploaded by the user. Updating such certificates before they expire remains the user's responsibility.",
      "properties": {
        "pemCertificate": {
          "type": "string",
          "description": "Input only. The PEM-encoded certificate chain. Leaf certificate comes first, followed by intermediate ones if any."
        },
        "pemPrivateKey": {
          "type": "string",
          "description": "Input only. The PEM-encoded private key of the leaf certificate."
        }
      },
      "type": "object",
      "required": [
        "pemCertificate",
        "pemPrivateKey"
      ]
    },
    "google-native:certificatemanager/v1:TrustAnchor": {
      "description": "Defines a trust anchor.",
      "properties": {
        "pemCertificate": {
          "type": "string",
          "description": "PEM root certificate of the PKI used for validation. Each certificate provided in PEM format may occupy up to 5kB."
        }
      },
      "type": "object"
    },
    "google-native:certificatemanager/v1:TrustAnchorResponse": {
      "description": "Defines a trust anchor.",
      "properties": {
        "pemCertificate": {
          "type": "string",
          "description": "PEM root certificate of the PKI used for validation. Each certificate provided in PEM format may occupy up to 5kB."
        }
      },
      "type": "object",
      "required": [
        "pemCertificate"
      ]
    },
    "google-native:certificatemanager/v1:TrustStore": {
      "description": "Defines a trust store.",
      "properties": {
        "intermediateCas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:IntermediateCA"
          },
          "description": "Set of intermediate CA certificates used for the path building phase of chain validation. The field is currently not supported if TrustConfig is used for the workload certificate feature."
        },
        "trustAnchors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:TrustAnchor"
          },
          "description": "List of Trust Anchors to be used while performing validation against a given TrustStore."
        }
      },
      "type": "object"
    },
    "google-native:certificatemanager/v1:TrustStoreResponse": {
      "description": "Defines a trust store.",
      "properties": {
        "intermediateCas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:IntermediateCAResponse"
          },
          "description": "Set of intermediate CA certificates used for the path building phase of chain validation. The field is currently not supported if TrustConfig is used for the workload certificate feature."
        },
        "trustAnchors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:TrustAnchorResponse"
          },
          "description": "List of Trust Anchors to be used while performing validation against a given TrustStore."
        }
      },
      "type": "object",
      "required": [
        "intermediateCas",
        "trustAnchors"
      ]
    },
    "google-native:cloudasset/v1:AccessSelector": {
      "description": "Specifies roles and/or permissions to analyze, to determine both the identities possessing them and the resources they control. If multiple values are specified, results will include roles or permissions matching any of them. The total number of roles and permissions should be equal or less than 10.",
      "properties": {
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The permissions to appear in result."
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The roles to appear in result."
        }
      },
      "type": "object"
    },
    "google-native:cloudasset/v1:AccessSelectorResponse": {
      "description": "Specifies roles and/or permissions to analyze, to determine both the identities possessing them and the resources they control. If multiple values are specified, results will include roles or permissions matching any of them. The total number of roles and permissions should be equal or less than 10.",
      "properties": {
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The permissions to appear in result."
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The roles to appear in result."
        }
      },
      "type": "object",
      "required": [
        "permissions",
        "roles"
      ]
    },
    "google-native:cloudasset/v1:ConditionContext": {
      "description": "The IAM conditions context.",
      "properties": {
        "accessTime": {
          "type": "string",
          "description": "The hypothetical access timestamp to evaluate IAM conditions. Note that this value must not be earlier than the current time; otherwise, an INVALID_ARGUMENT error will be returned."
        }
      },
      "type": "object"
    },
    "google-native:cloudasset/v1:ConditionContextResponse": {
      "description": "The IAM conditions context.",
      "properties": {
        "accessTime": {
          "type": "string",
          "description": "The hypothetical access timestamp to evaluate IAM conditions. Note that this value must not be earlier than the current time; otherwise, an INVALID_ARGUMENT error will be returned."
        }
      },
      "type": "object",
      "required": [
        "accessTime"
      ]
    },
    "google-native:cloudasset/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudasset/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudasset/v1:FeedContentType": {
      "description": "Asset content type. If not specified, no content but the asset name and type will be returned.",
      "type": "string",
      "enum": [
        {
          "name": "ContentTypeUnspecified",
          "description": "Unspecified content type.",
          "value": "CONTENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Resource",
          "description": "Resource metadata.",
          "value": "RESOURCE"
        },
        {
          "name": "IamPolicy",
          "description": "The actual IAM policy set on a resource.",
          "value": "IAM_POLICY"
        },
        {
          "name": "OrgPolicy",
          "description": "The organization policy set on an asset.",
          "value": "ORG_POLICY"
        },
        {
          "name": "AccessPolicy",
          "description": "The Access Context Manager policy set on an asset.",
          "value": "ACCESS_POLICY"
        },
        {
          "name": "OsInventory",
          "description": "The runtime OS Inventory information.",
          "value": "OS_INVENTORY"
        },
        {
          "name": "Relationship",
          "description": "The related resources.",
          "value": "RELATIONSHIP"
        }
      ]
    },
    "google-native:cloudasset/v1:FeedOutputConfig": {
      "description": "Output configuration for asset feed destination.",
      "properties": {
        "pubsubDestination": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:PubsubDestination",
          "description": "Destination on Pub/Sub."
        }
      },
      "type": "object"
    },
    "google-native:cloudasset/v1:FeedOutputConfigResponse": {
      "description": "Output configuration for asset feed destination.",
      "properties": {
        "pubsubDestination": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:PubsubDestinationResponse",
          "description": "Destination on Pub/Sub."
        }
      },
      "type": "object",
      "required": [
        "pubsubDestination"
      ]
    },
    "google-native:cloudasset/v1:IamPolicyAnalysisQuery": {
      "description": "IAM policy analysis query message.",
      "properties": {
        "accessSelector": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:AccessSelector",
          "description": "Optional. Specifies roles or permissions for analysis. This is optional."
        },
        "conditionContext": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:ConditionContext",
          "description": "Optional. The hypothetical context for IAM conditions evaluation."
        },
        "identitySelector": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:IdentitySelector",
          "description": "Optional. Specifies an identity for analysis."
        },
        "options": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:Options",
          "description": "Optional. The query options."
        },
        "resourceSelector": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:ResourceSelector",
          "description": "Optional. Specifies a resource for analysis."
        },
        "scope": {
          "type": "string",
          "description": "The relative name of the root asset. Only resources and IAM policies within the scope will be analyzed. This can only be an organization number (such as \"organizations/123\"), a folder number (such as \"folders/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\"). To know how to get organization id, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id). To know how to get folder or project id, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-folders#viewing_or_listing_folders_and_projects)."
        }
      },
      "type": "object",
      "required": [
        "scope"
      ]
    },
    "google-native:cloudasset/v1:IamPolicyAnalysisQueryResponse": {
      "description": "IAM policy analysis query message.",
      "properties": {
        "accessSelector": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:AccessSelectorResponse",
          "description": "Optional. Specifies roles or permissions for analysis. This is optional."
        },
        "conditionContext": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:ConditionContextResponse",
          "description": "Optional. The hypothetical context for IAM conditions evaluation."
        },
        "identitySelector": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:IdentitySelectorResponse",
          "description": "Optional. Specifies an identity for analysis."
        },
        "options": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:OptionsResponse",
          "description": "Optional. The query options."
        },
        "resourceSelector": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:ResourceSelectorResponse",
          "description": "Optional. Specifies a resource for analysis."
        },
        "scope": {
          "type": "string",
          "description": "The relative name of the root asset. Only resources and IAM policies within the scope will be analyzed. This can only be an organization number (such as \"organizations/123\"), a folder number (such as \"folders/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\"). To know how to get organization id, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id). To know how to get folder or project id, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-folders#viewing_or_listing_folders_and_projects)."
        }
      },
      "type": "object",
      "required": [
        "accessSelector",
        "conditionContext",
        "identitySelector",
        "options",
        "resourceSelector",
        "scope"
      ]
    },
    "google-native:cloudasset/v1:IdentitySelector": {
      "description": "Specifies an identity for which to determine resource access, based on roles assigned either directly to them or to the groups they belong to, directly or indirectly.",
      "properties": {
        "identity": {
          "type": "string",
          "description": "The identity appear in the form of principals in [IAM policy binding](https://cloud.google.com/iam/reference/rest/v1/Binding). The examples of supported forms are: \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\". Notice that wildcard characters (such as * and ?) are not supported. You must give a specific identity."
        }
      },
      "type": "object",
      "required": [
        "identity"
      ]
    },
    "google-native:cloudasset/v1:IdentitySelectorResponse": {
      "description": "Specifies an identity for which to determine resource access, based on roles assigned either directly to them or to the groups they belong to, directly or indirectly.",
      "properties": {
        "identity": {
          "type": "string",
          "description": "The identity appear in the form of principals in [IAM policy binding](https://cloud.google.com/iam/reference/rest/v1/Binding). The examples of supported forms are: \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\". Notice that wildcard characters (such as * and ?) are not supported. You must give a specific identity."
        }
      },
      "type": "object",
      "required": [
        "identity"
      ]
    },
    "google-native:cloudasset/v1:Options": {
      "description": "Contains query options.",
      "properties": {
        "analyzeServiceAccountImpersonation": {
          "type": "boolean",
          "description": "Optional. If true, the response will include access analysis from identities to resources via service account impersonation. This is a very expensive operation, because many derived queries will be executed. We highly recommend you use AssetService.AnalyzeIamPolicyLongrunning RPC instead. For example, if the request analyzes for which resources user A has permission P, and there's an IAM policy states user A has iam.serviceAccounts.getAccessToken permission to a service account SA, and there's another IAM policy states service account SA has permission P to a Google Cloud folder F, then user A potentially has access to the Google Cloud folder F. And those advanced analysis results will be included in AnalyzeIamPolicyResponse.service_account_impersonation_analysis. Another example, if the request analyzes for who has permission P to a Google Cloud folder F, and there's an IAM policy states user A has iam.serviceAccounts.actAs permission to a service account SA, and there's another IAM policy states service account SA has permission P to the Google Cloud folder F, then user A potentially has access to the Google Cloud folder F. And those advanced analysis results will be included in AnalyzeIamPolicyResponse.service_account_impersonation_analysis. Only the following permissions are considered in this analysis: * `iam.serviceAccounts.actAs` * `iam.serviceAccounts.signBlob` * `iam.serviceAccounts.signJwt` * `iam.serviceAccounts.getAccessToken` * `iam.serviceAccounts.getOpenIdToken` * `iam.serviceAccounts.implicitDelegation` Default is false."
        },
        "expandGroups": {
          "type": "boolean",
          "description": "Optional. If true, the identities section of the result will expand any Google groups appearing in an IAM policy binding. If IamPolicyAnalysisQuery.identity_selector is specified, the identity in the result will be determined by the selector, and this flag is not allowed to set. If true, the default max expansion per group is 1000 for AssetService.AnalyzeIamPolicy][]. Default is false."
        },
        "expandResources": {
          "type": "boolean",
          "description": "Optional. If true and IamPolicyAnalysisQuery.resource_selector is not specified, the resource section of the result will expand any resource attached to an IAM policy to include resources lower in the resource hierarchy. For example, if the request analyzes for which resources user A has permission P, and the results include an IAM policy with P on a Google Cloud folder, the results will also include resources in that folder with permission P. If true and IamPolicyAnalysisQuery.resource_selector is specified, the resource section of the result will expand the specified resource to include resources lower in the resource hierarchy. Only project or lower resources are supported. Folder and organization resources cannot be used together with this option. For example, if the request analyzes for which users have permission P on a Google Cloud project with this option enabled, the results will include all users who have permission P on that project or any lower resource. If true, the default max expansion per resource is 1000 for AssetService.AnalyzeIamPolicy][] and 100000 for AssetService.AnalyzeIamPolicyLongrunning][]. Default is false."
        },
        "expandRoles": {
          "type": "boolean",
          "description": "Optional. If true, the access section of result will expand any roles appearing in IAM policy bindings to include their permissions. If IamPolicyAnalysisQuery.access_selector is specified, the access section of the result will be determined by the selector, and this flag is not allowed to set. Default is false."
        },
        "outputGroupEdges": {
          "type": "boolean",
          "description": "Optional. If true, the result will output the relevant membership relationships between groups and other groups, and between groups and principals. Default is false."
        },
        "outputResourceEdges": {
          "type": "boolean",
          "description": "Optional. If true, the result will output the relevant parent/child relationships between resources. Default is false."
        }
      },
      "type": "object"
    },
    "google-native:cloudasset/v1:OptionsResponse": {
      "description": "Contains query options.",
      "properties": {
        "analyzeServiceAccountImpersonation": {
          "type": "boolean",
          "description": "Optional. If true, the response will include access analysis from identities to resources via service account impersonation. This is a very expensive operation, because many derived queries will be executed. We highly recommend you use AssetService.AnalyzeIamPolicyLongrunning RPC instead. For example, if the request analyzes for which resources user A has permission P, and there's an IAM policy states user A has iam.serviceAccounts.getAccessToken permission to a service account SA, and there's another IAM policy states service account SA has permission P to a Google Cloud folder F, then user A potentially has access to the Google Cloud folder F. And those advanced analysis results will be included in AnalyzeIamPolicyResponse.service_account_impersonation_analysis. Another example, if the request analyzes for who has permission P to a Google Cloud folder F, and there's an IAM policy states user A has iam.serviceAccounts.actAs permission to a service account SA, and there's another IAM policy states service account SA has permission P to the Google Cloud folder F, then user A potentially has access to the Google Cloud folder F. And those advanced analysis results will be included in AnalyzeIamPolicyResponse.service_account_impersonation_analysis. Only the following permissions are considered in this analysis: * `iam.serviceAccounts.actAs` * `iam.serviceAccounts.signBlob` * `iam.serviceAccounts.signJwt` * `iam.serviceAccounts.getAccessToken` * `iam.serviceAccounts.getOpenIdToken` * `iam.serviceAccounts.implicitDelegation` Default is false."
        },
        "expandGroups": {
          "type": "boolean",
          "description": "Optional. If true, the identities section of the result will expand any Google groups appearing in an IAM policy binding. If IamPolicyAnalysisQuery.identity_selector is specified, the identity in the result will be determined by the selector, and this flag is not allowed to set. If true, the default max expansion per group is 1000 for AssetService.AnalyzeIamPolicy][]. Default is false."
        },
        "expandResources": {
          "type": "boolean",
          "description": "Optional. If true and IamPolicyAnalysisQuery.resource_selector is not specified, the resource section of the result will expand any resource attached to an IAM policy to include resources lower in the resource hierarchy. For example, if the request analyzes for which resources user A has permission P, and the results include an IAM policy with P on a Google Cloud folder, the results will also include resources in that folder with permission P. If true and IamPolicyAnalysisQuery.resource_selector is specified, the resource section of the result will expand the specified resource to include resources lower in the resource hierarchy. Only project or lower resources are supported. Folder and organization resources cannot be used together with this option. For example, if the request analyzes for which users have permission P on a Google Cloud project with this option enabled, the results will include all users who have permission P on that project or any lower resource. If true, the default max expansion per resource is 1000 for AssetService.AnalyzeIamPolicy][] and 100000 for AssetService.AnalyzeIamPolicyLongrunning][]. Default is false."
        },
        "expandRoles": {
          "type": "boolean",
          "description": "Optional. If true, the access section of result will expand any roles appearing in IAM policy bindings to include their permissions. If IamPolicyAnalysisQuery.access_selector is specified, the access section of the result will be determined by the selector, and this flag is not allowed to set. Default is false."
        },
        "outputGroupEdges": {
          "type": "boolean",
          "description": "Optional. If true, the result will output the relevant membership relationships between groups and other groups, and between groups and principals. Default is false."
        },
        "outputResourceEdges": {
          "type": "boolean",
          "description": "Optional. If true, the result will output the relevant parent/child relationships between resources. Default is false."
        }
      },
      "type": "object",
      "required": [
        "analyzeServiceAccountImpersonation",
        "expandGroups",
        "expandResources",
        "expandRoles",
        "outputGroupEdges",
        "outputResourceEdges"
      ]
    },
    "google-native:cloudasset/v1:PubsubDestination": {
      "description": "A Pub/Sub destination.",
      "properties": {
        "topic": {
          "type": "string",
          "description": "The name of the Pub/Sub topic to publish to. Example: `projects/PROJECT_ID/topics/TOPIC_ID`."
        }
      },
      "type": "object"
    },
    "google-native:cloudasset/v1:PubsubDestinationResponse": {
      "description": "A Pub/Sub destination.",
      "properties": {
        "topic": {
          "type": "string",
          "description": "The name of the Pub/Sub topic to publish to. Example: `projects/PROJECT_ID/topics/TOPIC_ID`."
        }
      },
      "type": "object",
      "required": [
        "topic"
      ]
    },
    "google-native:cloudasset/v1:QueryContent": {
      "description": "The query content.",
      "properties": {
        "iamPolicyAnalysisQuery": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:IamPolicyAnalysisQuery",
          "description": "An IAM Policy Analysis query, which could be used in the AssetService.AnalyzeIamPolicy RPC or the AssetService.AnalyzeIamPolicyLongrunning RPC."
        }
      },
      "type": "object"
    },
    "google-native:cloudasset/v1:QueryContentResponse": {
      "description": "The query content.",
      "properties": {
        "iamPolicyAnalysisQuery": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:IamPolicyAnalysisQueryResponse",
          "description": "An IAM Policy Analysis query, which could be used in the AssetService.AnalyzeIamPolicy RPC or the AssetService.AnalyzeIamPolicyLongrunning RPC."
        }
      },
      "type": "object",
      "required": [
        "iamPolicyAnalysisQuery"
      ]
    },
    "google-native:cloudasset/v1:ResourceSelector": {
      "description": "Specifies the resource to analyze for access policies, which may be set directly on the resource, or on ancestors such as organizations, folders or projects.",
      "properties": {
        "fullResourceName": {
          "type": "string",
          "description": "The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of a resource of [supported resource types](https://cloud.google.com/asset-inventory/docs/supported-asset-types#analyzable_asset_types)."
        }
      },
      "type": "object",
      "required": [
        "fullResourceName"
      ]
    },
    "google-native:cloudasset/v1:ResourceSelectorResponse": {
      "description": "Specifies the resource to analyze for access policies, which may be set directly on the resource, or on ancestors such as organizations, folders or projects.",
      "properties": {
        "fullResourceName": {
          "type": "string",
          "description": "The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of a resource of [supported resource types](https://cloud.google.com/asset-inventory/docs/supported-asset-types#analyzable_asset_types)."
        }
      },
      "type": "object",
      "required": [
        "fullResourceName"
      ]
    },
    "google-native:cloudbilling/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbilling%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudbilling/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbilling%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudbilling/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudbilling%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudbilling/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudbilling/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudbilling/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudbilling%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudbilling/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudbilling%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudbilling/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudbilling/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudbuild/v1:ApprovalConfig": {
      "description": "ApprovalConfig describes configuration for manual approval of a build.",
      "properties": {
        "approvalRequired": {
          "type": "boolean",
          "description": "Whether or not approval is needed. If this is set on a build, it will become pending when created, and will need to be explicitly approved to start."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:ApprovalConfigResponse": {
      "description": "ApprovalConfig describes configuration for manual approval of a build.",
      "properties": {
        "approvalRequired": {
          "type": "boolean",
          "description": "Whether or not approval is needed. If this is set on a build, it will become pending when created, and will need to be explicitly approved to start."
        }
      },
      "type": "object",
      "required": [
        "approvalRequired"
      ]
    },
    "google-native:cloudbuild/v1:ApprovalResultResponse": {
      "description": "ApprovalResult describes the decision and associated metadata of a manual approval of a build.",
      "properties": {
        "approvalTime": {
          "type": "string",
          "description": "The time when the approval decision was made."
        },
        "approverAccount": {
          "type": "string",
          "description": "Email of the user that called the ApproveBuild API to approve or reject a build at the time that the API was called."
        },
        "comment": {
          "type": "string",
          "description": "Optional. An optional comment for this manual approval result."
        },
        "decision": {
          "type": "string",
          "description": "The decision of this manual approval."
        },
        "url": {
          "type": "string",
          "description": "Optional. An optional URL tied to this manual approval result. This field is essentially the same as comment, except that it will be rendered by the UI differently. An example use case is a link to an external job that approved this Build."
        }
      },
      "type": "object",
      "required": [
        "approvalTime",
        "approverAccount",
        "comment",
        "decision",
        "url"
      ]
    },
    "google-native:cloudbuild/v1:ArtifactObjects": {
      "description": "Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.",
      "properties": {
        "location": {
          "type": "string",
          "description": "Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\". (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Path globs used to match files in the build's workspace."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:ArtifactObjectsResponse": {
      "description": "Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.",
      "properties": {
        "location": {
          "type": "string",
          "description": "Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\". (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Path globs used to match files in the build's workspace."
        },
        "timing": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TimeSpanResponse",
          "description": "Stores timing information for pushing all artifact objects."
        }
      },
      "type": "object",
      "required": [
        "location",
        "paths",
        "timing"
      ]
    },
    "google-native:cloudbuild/v1:Artifacts": {
      "description": "Artifacts produced by a build that should be uploaded upon successful completion of all build steps.",
      "properties": {
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of images to be pushed upon the successful completion of all build steps. The images will be pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build is marked FAILURE."
        },
        "mavenArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:MavenArtifact"
          },
          "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE."
        },
        "npmPackages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:NpmPackage"
          },
          "description": "A list of npm packages to be uploaded to Artifact Registry upon successful completion of all build steps. Npm packages in the specified paths will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any packages fail to be pushed, the build is marked FAILURE."
        },
        "objects": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ArtifactObjects",
          "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE."
        },
        "pythonPackages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:PythonPackage"
          },
          "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:ArtifactsResponse": {
      "description": "Artifacts produced by a build that should be uploaded upon successful completion of all build steps.",
      "properties": {
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of images to be pushed upon the successful completion of all build steps. The images will be pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build is marked FAILURE."
        },
        "mavenArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:MavenArtifactResponse"
          },
          "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE."
        },
        "npmPackages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:NpmPackageResponse"
          },
          "description": "A list of npm packages to be uploaded to Artifact Registry upon successful completion of all build steps. Npm packages in the specified paths will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any packages fail to be pushed, the build is marked FAILURE."
        },
        "objects": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ArtifactObjectsResponse",
          "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE."
        },
        "pythonPackages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:PythonPackageResponse"
          },
          "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE."
        }
      },
      "type": "object",
      "required": [
        "images",
        "mavenArtifacts",
        "npmPackages",
        "objects",
        "pythonPackages"
      ]
    },
    "google-native:cloudbuild/v1:BitbucketServerConfigResponse": {
      "description": "BitbucketServerConfig represents the configuration for a Bitbucket Server.",
      "properties": {
        "apiKey": {
          "type": "string",
          "description": "Immutable. API Key that will be attached to webhook. Once this field has been set, it cannot be changed. If you need to change it, please create another BitbucketServerConfig."
        },
        "connectedRepositories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerRepositoryIdResponse"
          },
          "description": "Connected Bitbucket Server repositories for this config."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the config was created."
        },
        "hostUri": {
          "type": "string",
          "description": "Immutable. The URI of the Bitbucket Server host. Once this field has been set, it cannot be changed. If you need to change it, please create another BitbucketServerConfig."
        },
        "name": {
          "type": "string",
          "description": "The resource name for the config."
        },
        "peeredNetwork": {
          "type": "string",
          "description": "Optional. The network to be used when reaching out to the Bitbucket Server instance. The VPC network must be enabled for private service connection. This should be set if the Bitbucket Server instance is hosted on-premises and not reachable by public internet. If this field is left empty, no network peering will occur and calls to the Bitbucket Server instance will be made over the public internet. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number or id and {network} is the name of a VPC network in the project."
        },
        "peeredNetworkIpRange": {
          "type": "string",
          "description": "Immutable. 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 29 bit prefix size. `/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. The field only has an effect if peered_network is set."
        },
        "secrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerSecretsResponse",
          "description": "Secret Manager secrets needed by the config."
        },
        "sslCa": {
          "type": "string",
          "description": "Optional. SSL certificate to use for requests to Bitbucket Server. The format should be PEM format but the extension can be one of .pem, .cer, or .crt."
        },
        "username": {
          "type": "string",
          "description": "Username of the account Cloud Build will use on Bitbucket Server."
        },
        "webhookKey": {
          "type": "string",
          "description": "UUID included in webhook requests. The UUID is used to look up the corresponding config."
        }
      },
      "type": "object",
      "required": [
        "apiKey",
        "connectedRepositories",
        "createTime",
        "hostUri",
        "name",
        "peeredNetwork",
        "peeredNetworkIpRange",
        "secrets",
        "sslCa",
        "username",
        "webhookKey"
      ]
    },
    "google-native:cloudbuild/v1:BitbucketServerRepositoryIdResponse": {
      "description": "BitbucketServerRepositoryId identifies a specific repository hosted on a Bitbucket Server.",
      "properties": {
        "projectKey": {
          "type": "string",
          "description": "Identifier for the project storing the repository."
        },
        "repoSlug": {
          "type": "string",
          "description": "Identifier for the repository."
        },
        "webhookId": {
          "type": "integer",
          "description": "The ID of the webhook that was created for receiving events from this repo. We only create and manage a single webhook for each repo."
        }
      },
      "type": "object",
      "required": [
        "projectKey",
        "repoSlug",
        "webhookId"
      ]
    },
    "google-native:cloudbuild/v1:BitbucketServerSecrets": {
      "description": "BitbucketServerSecrets represents the secrets in Secret Manager for a Bitbucket Server.",
      "properties": {
        "adminAccessTokenVersionName": {
          "type": "string",
          "description": "The resource name for the admin access token's secret version."
        },
        "readAccessTokenVersionName": {
          "type": "string",
          "description": "The resource name for the read access token's secret version."
        },
        "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. If you need to change it, please create another BitbucketServerConfig."
        }
      },
      "type": "object",
      "required": [
        "adminAccessTokenVersionName",
        "readAccessTokenVersionName",
        "webhookSecretVersionName"
      ]
    },
    "google-native:cloudbuild/v1:BitbucketServerSecretsResponse": {
      "description": "BitbucketServerSecrets represents the secrets in Secret Manager for a Bitbucket Server.",
      "properties": {
        "adminAccessTokenVersionName": {
          "type": "string",
          "description": "The resource name for the admin access token's secret version."
        },
        "readAccessTokenVersionName": {
          "type": "string",
          "description": "The resource name for the read access token's secret version."
        },
        "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. If you need to change it, please create another BitbucketServerConfig."
        }
      },
      "type": "object",
      "required": [
        "adminAccessTokenVersionName",
        "readAccessTokenVersionName",
        "webhookSecretVersionName"
      ]
    },
    "google-native:cloudbuild/v1:BitbucketServerTriggerConfig": {
      "description": "BitbucketServerTriggerConfig describes the configuration of a trigger that creates a build whenever a Bitbucket Server event is received.",
      "properties": {
        "bitbucketServerConfigResource": {
          "type": "string",
          "description": "The Bitbucket server config resource that this trigger config maps to."
        },
        "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\"."
        },
        "pullRequest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilter",
          "description": "Filter to match changes in pull requests."
        },
        "push": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PushFilter",
          "description": "Filter to match changes in refs like branches, tags."
        },
        "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. For 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."
        }
      },
      "type": "object",
      "required": [
        "bitbucketServerConfigResource",
        "projectKey",
        "repoSlug"
      ]
    },
    "google-native:cloudbuild/v1:BitbucketServerTriggerConfigResponse": {
      "description": "BitbucketServerTriggerConfig describes the configuration of a trigger that creates a build whenever a Bitbucket Server event is received.",
      "properties": {
        "bitbucketServerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerConfigResponse",
          "description": "The BitbucketServerConfig specified in the bitbucket_server_config_resource field."
        },
        "bitbucketServerConfigResource": {
          "type": "string",
          "description": "The Bitbucket server config resource that this trigger config maps to."
        },
        "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\"."
        },
        "pullRequest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilterResponse",
          "description": "Filter to match changes in pull requests."
        },
        "push": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PushFilterResponse",
          "description": "Filter to match changes in refs like branches, tags."
        },
        "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. For 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."
        }
      },
      "type": "object",
      "required": [
        "bitbucketServerConfig",
        "bitbucketServerConfigResource",
        "projectKey",
        "pullRequest",
        "push",
        "repoSlug"
      ]
    },
    "google-native:cloudbuild/v1:Build": {
      "description": "A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $PROJECT_NUMBER: the project number of the build. - $LOCATION: the location/region of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.",
      "properties": {
        "artifacts": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:Artifacts",
          "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps."
        },
        "availableSecrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:Secrets",
          "description": "Secrets and secret environment variables."
        },
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the `Build` resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`."
        },
        "logsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`."
        },
        "options": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptions",
          "description": "Special options for this build."
        },
        "queueTtl": {
          "type": "string",
          "description": "TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time."
        },
        "secrets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:Secret"
          },
          "description": "Secrets to decrypt using Cloud Key Management Service. Note: Secret Manager is the recommended technique for managing sensitive data with Cloud Build. Use `available_secrets` to configure builds to access secrets from Secret Manager. For instructions, see: https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets"
        },
        "serviceAccount": {
          "type": "string",
          "description": "IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. "
        },
        "source": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:Source",
          "description": "The location of the source files to build."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildStep"
          },
          "description": "The operations to be performed on the workspace."
        },
        "substitutions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Substitutions data for `Build` resource."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags for annotation of a `Build`. These are not docker tags."
        },
        "timeout": {
          "type": "string",
          "description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`. `timeout` starts ticking from `startTime`. Default time is 60 minutes."
        }
      },
      "type": "object",
      "required": [
        "steps"
      ]
    },
    "google-native:cloudbuild/v1:BuildApprovalResponse": {
      "description": "BuildApproval describes a build's approval configuration, state, and result.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ApprovalConfigResponse",
          "description": "Configuration for manual approval of this build."
        },
        "result": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ApprovalResultResponse",
          "description": "Result of manual approval for this Build."
        },
        "state": {
          "type": "string",
          "description": "The state of this build's approval."
        }
      },
      "type": "object",
      "required": [
        "config",
        "result",
        "state"
      ]
    },
    "google-native:cloudbuild/v1:BuildOptions": {
      "description": "Optional arguments to enable specific features of builds.",
      "properties": {
        "automapSubstitutions": {
          "type": "boolean",
          "description": "Option to include built-in and custom substitutions as env variables for all build steps."
        },
        "defaultLogsBucketBehavior": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsDefaultLogsBucketBehavior",
          "description": "Optional. Option to specify how default logs buckets are setup."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Requested disk size for the VM that runs the build. Note that this is *NOT* \"disk free\"; some of the space will be used by the operating system and build utilities. Also note that this is the minimum disk size that will be allocated for the build -- the build may run with a larger disk than requested. At present, the maximum disk size is 2000GB; builds that request more than the maximum are rejected with an error."
        },
        "dynamicSubstitutions": {
          "type": "boolean",
          "description": "Option to specify whether or not to apply bash style string operations to the substitutions. NOTE: this is always enabled for triggered builds and cannot be overridden in the build configuration file."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of global environment variable definitions that will exist for all build steps in this build. If a variable is defined in both globally and in a build step, the variable will use the build step value. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\"."
        },
        "logStreamingOption": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsLogStreamingOption",
          "description": "Option to define build log streaming behavior to Cloud Storage."
        },
        "logging": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsLogging",
          "description": "Option to specify the logging mode, which determines if and where build logs are stored."
        },
        "machineType": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsMachineType",
          "description": "Compute Engine machine type on which to run the build."
        },
        "pool": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PoolOption",
          "description": "Optional. Specification for execution on a `WorkerPool`. See [running builds in a private pool](https://cloud.google.com/build/docs/private-pools/run-builds-in-private-pool) for more information."
        },
        "requestedVerifyOption": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsRequestedVerifyOption",
          "description": "Requested verifiability options."
        },
        "secretEnv": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's `Secret`. These variables will be available to all build steps in this build."
        },
        "sourceProvenanceHash": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsSourceProvenanceHashItem"
          },
          "description": "Requested hash for SourceProvenance."
        },
        "substitutionOption": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsSubstitutionOption",
          "description": "Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:Volume"
          },
          "description": "Global list of volumes to mount for ALL build steps Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a build with only one step is not valid as it is indicative of a build request with an incorrect configuration."
        },
        "workerPool": {
          "type": "string",
          "description": "This field deprecated; please use `pool.name` instead."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:BuildOptionsDefaultLogsBucketBehavior": {
      "description": "Optional. Option to specify how default logs buckets are setup.",
      "type": "string",
      "enum": [
        {
          "name": "DefaultLogsBucketBehaviorUnspecified",
          "description": "Unspecified.",
          "value": "DEFAULT_LOGS_BUCKET_BEHAVIOR_UNSPECIFIED"
        },
        {
          "name": "RegionalUserOwnedBucket",
          "description": "Bucket is located in user-owned project in the same region as the build. The builder service account must have access to create and write to Cloud Storage buckets in the build project.",
          "value": "REGIONAL_USER_OWNED_BUCKET"
        }
      ]
    },
    "google-native:cloudbuild/v1:BuildOptionsLogStreamingOption": {
      "description": "Option to define build log streaming behavior to Cloud Storage.",
      "type": "string",
      "enum": [
        {
          "name": "StreamDefault",
          "description": "Service may automatically determine build log streaming behavior.",
          "value": "STREAM_DEFAULT"
        },
        {
          "name": "StreamOn",
          "description": "Build logs should be streamed to Cloud Storage.",
          "value": "STREAM_ON"
        },
        {
          "name": "StreamOff",
          "description": "Build logs should not be streamed to Cloud Storage; they will be written when the build is completed.",
          "value": "STREAM_OFF"
        }
      ]
    },
    "google-native:cloudbuild/v1:BuildOptionsLogging": {
      "description": "Option to specify the logging mode, which determines if and where build logs are stored.",
      "type": "string",
      "enum": [
        {
          "name": "LoggingUnspecified",
          "description": "The service determines the logging mode. The default is `LEGACY`. Do not rely on the default logging behavior as it may change in the future.",
          "value": "LOGGING_UNSPECIFIED"
        },
        {
          "name": "Legacy",
          "description": "Build logs are stored in Cloud Logging and Cloud Storage.",
          "value": "LEGACY"
        },
        {
          "name": "GcsOnly",
          "description": "Build logs are stored in Cloud Storage.",
          "value": "GCS_ONLY"
        },
        {
          "name": "StackdriverOnly",
          "description": "This option is the same as CLOUD_LOGGING_ONLY.",
          "value": "STACKDRIVER_ONLY"
        },
        {
          "name": "CloudLoggingOnly",
          "description": "Build logs are stored in Cloud Logging. Selecting this option will not allow [logs streaming](https://cloud.google.com/sdk/gcloud/reference/builds/log).",
          "value": "CLOUD_LOGGING_ONLY"
        },
        {
          "name": "None",
          "description": "Turn off all logging. No build logs will be captured.",
          "value": "NONE"
        }
      ]
    },
    "google-native:cloudbuild/v1:BuildOptionsMachineType": {
      "description": "Compute Engine machine type on which to run the build.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Standard machine type.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "N1Highcpu8",
          "description": "Highcpu machine with 8 CPUs.",
          "value": "N1_HIGHCPU_8"
        },
        {
          "name": "N1Highcpu32",
          "description": "Highcpu machine with 32 CPUs.",
          "value": "N1_HIGHCPU_32"
        },
        {
          "name": "E2Highcpu8",
          "description": "Highcpu e2 machine with 8 CPUs.",
          "value": "E2_HIGHCPU_8"
        },
        {
          "name": "E2Highcpu32",
          "description": "Highcpu e2 machine with 32 CPUs.",
          "value": "E2_HIGHCPU_32"
        },
        {
          "name": "E2Medium",
          "description": "E2 machine with 1 CPU.",
          "value": "E2_MEDIUM"
        }
      ]
    },
    "google-native:cloudbuild/v1:BuildOptionsRequestedVerifyOption": {
      "description": "Requested verifiability options.",
      "type": "string",
      "enum": [
        {
          "name": "NotVerified",
          "description": "Not a verifiable build (the default).",
          "value": "NOT_VERIFIED"
        },
        {
          "name": "Verified",
          "description": "Build must be verified.",
          "value": "VERIFIED"
        }
      ]
    },
    "google-native:cloudbuild/v1:BuildOptionsResponse": {
      "description": "Optional arguments to enable specific features of builds.",
      "properties": {
        "automapSubstitutions": {
          "type": "boolean",
          "description": "Option to include built-in and custom substitutions as env variables for all build steps."
        },
        "defaultLogsBucketBehavior": {
          "type": "string",
          "description": "Optional. Option to specify how default logs buckets are setup."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Requested disk size for the VM that runs the build. Note that this is *NOT* \"disk free\"; some of the space will be used by the operating system and build utilities. Also note that this is the minimum disk size that will be allocated for the build -- the build may run with a larger disk than requested. At present, the maximum disk size is 2000GB; builds that request more than the maximum are rejected with an error."
        },
        "dynamicSubstitutions": {
          "type": "boolean",
          "description": "Option to specify whether or not to apply bash style string operations to the substitutions. NOTE: this is always enabled for triggered builds and cannot be overridden in the build configuration file."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of global environment variable definitions that will exist for all build steps in this build. If a variable is defined in both globally and in a build step, the variable will use the build step value. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\"."
        },
        "logStreamingOption": {
          "type": "string",
          "description": "Option to define build log streaming behavior to Cloud Storage."
        },
        "logging": {
          "type": "string",
          "description": "Option to specify the logging mode, which determines if and where build logs are stored."
        },
        "machineType": {
          "type": "string",
          "description": "Compute Engine machine type on which to run the build."
        },
        "pool": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PoolOptionResponse",
          "description": "Optional. Specification for execution on a `WorkerPool`. See [running builds in a private pool](https://cloud.google.com/build/docs/private-pools/run-builds-in-private-pool) for more information."
        },
        "requestedVerifyOption": {
          "type": "string",
          "description": "Requested verifiability options."
        },
        "secretEnv": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's `Secret`. These variables will be available to all build steps in this build."
        },
        "sourceProvenanceHash": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requested hash for SourceProvenance."
        },
        "substitutionOption": {
          "type": "string",
          "description": "Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:VolumeResponse"
          },
          "description": "Global list of volumes to mount for ALL build steps Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a build with only one step is not valid as it is indicative of a build request with an incorrect configuration."
        },
        "workerPool": {
          "type": "string",
          "description": "This field deprecated; please use `pool.name` instead."
        }
      },
      "type": "object",
      "required": [
        "automapSubstitutions",
        "defaultLogsBucketBehavior",
        "diskSizeGb",
        "dynamicSubstitutions",
        "env",
        "logStreamingOption",
        "logging",
        "machineType",
        "pool",
        "requestedVerifyOption",
        "secretEnv",
        "sourceProvenanceHash",
        "substitutionOption",
        "volumes",
        "workerPool"
      ]
    },
    "google-native:cloudbuild/v1:BuildOptionsSourceProvenanceHashItem": {
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "No hash requested.",
          "value": "NONE"
        },
        {
          "name": "Sha256",
          "description": "Use a sha256 hash.",
          "value": "SHA256"
        },
        {
          "name": "Md5",
          "description": "Use a md5 hash.",
          "value": "MD5"
        },
        {
          "name": "Sha512",
          "description": "Use a sha512 hash.",
          "value": "SHA512"
        }
      ]
    },
    "google-native:cloudbuild/v1:BuildOptionsSubstitutionOption": {
      "description": "Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file.",
      "type": "string",
      "enum": [
        {
          "name": "MustMatch",
          "description": "Fails the build if error in substitutions checks, like missing a substitution in the template or in the map.",
          "value": "MUST_MATCH"
        },
        {
          "name": "AllowLoose",
          "description": "Do not fail the build if error in substitutions checks.",
          "value": "ALLOW_LOOSE"
        }
      ]
    },
    "google-native:cloudbuild/v1:BuildResponse": {
      "description": "A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $PROJECT_NUMBER: the project number of the build. - $LOCATION: the location/region of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.",
      "properties": {
        "approval": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildApprovalResponse",
          "description": "Describes this build's approval configuration, status, and result."
        },
        "artifacts": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ArtifactsResponse",
          "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps."
        },
        "availableSecrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:SecretsResponse",
          "description": "Secrets and secret environment variables."
        },
        "buildTriggerId": {
          "type": "string",
          "description": "The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the request to create the build was received."
        },
        "failureInfo": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:FailureInfoResponse",
          "description": "Contains information about the build when status=FAILURE."
        },
        "finishTime": {
          "type": "string",
          "description": "Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build's execution."
        },
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the `Build` resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`."
        },
        "logUrl": {
          "type": "string",
          "description": "URL to logs for this build in Google Cloud Console."
        },
        "logsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`."
        },
        "name": {
          "type": "string",
          "description": "The 'Build' name with format: `projects/{project}/locations/{location}/builds/{build}`, where {build} is a unique identifier generated by the service."
        },
        "options": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsResponse",
          "description": "Special options for this build."
        },
        "project": {
          "type": "string",
          "description": "ID of the project."
        },
        "queueTtl": {
          "type": "string",
          "description": "TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time."
        },
        "results": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ResultsResponse",
          "description": "Results of the build."
        },
        "secrets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:SecretResponse"
          },
          "description": "Secrets to decrypt using Cloud Key Management Service. Note: Secret Manager is the recommended technique for managing sensitive data with Cloud Build. Use `available_secrets` to configure builds to access secrets from Secret Manager. For instructions, see: https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets"
        },
        "serviceAccount": {
          "type": "string",
          "description": "IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. "
        },
        "source": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:SourceResponse",
          "description": "The location of the source files to build."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:SourceProvenanceResponse",
          "description": "A permanent fixed identifier for source."
        },
        "startTime": {
          "type": "string",
          "description": "Time at which execution of the build was started."
        },
        "status": {
          "type": "string",
          "description": "Status of the build."
        },
        "statusDetail": {
          "type": "string",
          "description": "Customer-readable message about the current status."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildStepResponse"
          },
          "description": "The operations to be performed on the workspace."
        },
        "substitutions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Substitutions data for `Build` resource."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags for annotation of a `Build`. These are not docker tags."
        },
        "timeout": {
          "type": "string",
          "description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`. `timeout` starts ticking from `startTime`. Default time is 60 minutes."
        },
        "timing": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all artifacts including docker images and non docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:WarningResponse"
          },
          "description": "Non-fatal problems encountered during the execution of the build."
        }
      },
      "type": "object",
      "required": [
        "approval",
        "artifacts",
        "availableSecrets",
        "buildTriggerId",
        "createTime",
        "failureInfo",
        "finishTime",
        "images",
        "logUrl",
        "logsBucket",
        "name",
        "options",
        "project",
        "queueTtl",
        "results",
        "secrets",
        "serviceAccount",
        "source",
        "sourceProvenance",
        "startTime",
        "status",
        "statusDetail",
        "steps",
        "substitutions",
        "tags",
        "timeout",
        "timing",
        "warnings"
      ]
    },
    "google-native:cloudbuild/v1:BuildStep": {
      "description": "A step in the build pipeline.",
      "properties": {
        "allowExitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Allow this build step to fail without failing the entire build if and only if the exit code is one of the specified codes. If allow_failure is also specified, this field will take precedence."
        },
        "allowFailure": {
          "type": "boolean",
          "description": "Allow this build step to fail without failing the entire build. If false, the entire build will fail if this step fails. Otherwise, the build will succeed, but this step will still have a failure status. Error information will be reported in the failure_detail field."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of arguments that will be presented to the step when it is started. If the image used to run the step's container has an entrypoint, the `args` are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments."
        },
        "automapSubstitutions": {
          "type": "boolean",
          "description": "Option to include built-in and custom substitutions as env variables for this build step. This option will override the global option in BuildOption."
        },
        "dir": {
          "type": "string",
          "description": "Working directory to use when running this step's container. If this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a `volume` for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution."
        },
        "entrypoint": {
          "type": "string",
          "description": "Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of environment variable definitions to be used when running a step. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\"."
        },
        "id": {
          "type": "string",
          "description": "Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency."
        },
        "name": {
          "type": "string",
          "description": "The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary. The Docker daemon's cache will already have the latest versions of all of the officially supported build steps ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). The Docker daemon will also have cached many of the layers for some popular images, like \"ubuntu\", \"debian\", but they will be refreshed at the time you attempt to use them. If you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step."
        },
        "script": {
          "type": "string",
          "description": "A shell script to be executed in the step. When script is provided, the user cannot specify the entrypoint or args."
        },
        "secretEnv": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's `Secret`."
        },
        "timeout": {
          "type": "string",
          "description": "Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:Volume"
          },
          "description": "List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration."
        },
        "waitFor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all previous build steps in the `Build.Steps` list have completed successfully."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:cloudbuild/v1:BuildStepResponse": {
      "description": "A step in the build pipeline.",
      "properties": {
        "allowExitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Allow this build step to fail without failing the entire build if and only if the exit code is one of the specified codes. If allow_failure is also specified, this field will take precedence."
        },
        "allowFailure": {
          "type": "boolean",
          "description": "Allow this build step to fail without failing the entire build. If false, the entire build will fail if this step fails. Otherwise, the build will succeed, but this step will still have a failure status. Error information will be reported in the failure_detail field."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of arguments that will be presented to the step when it is started. If the image used to run the step's container has an entrypoint, the `args` are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments."
        },
        "automapSubstitutions": {
          "type": "boolean",
          "description": "Option to include built-in and custom substitutions as env variables for this build step. This option will override the global option in BuildOption."
        },
        "dir": {
          "type": "string",
          "description": "Working directory to use when running this step's container. If this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a `volume` for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution."
        },
        "entrypoint": {
          "type": "string",
          "description": "Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of environment variable definitions to be used when running a step. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\"."
        },
        "exitCode": {
          "type": "integer",
          "description": "Return code from running the step."
        },
        "name": {
          "type": "string",
          "description": "The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary. The Docker daemon's cache will already have the latest versions of all of the officially supported build steps ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). The Docker daemon will also have cached many of the layers for some popular images, like \"ubuntu\", \"debian\", but they will be refreshed at the time you attempt to use them. If you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step."
        },
        "pullTiming": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TimeSpanResponse",
          "description": "Stores timing information for pulling this build step's builder image only."
        },
        "script": {
          "type": "string",
          "description": "A shell script to be executed in the step. When script is provided, the user cannot specify the entrypoint or args."
        },
        "secretEnv": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's `Secret`."
        },
        "status": {
          "type": "string",
          "description": "Status of the build step. At this time, build step status is only updated on build completion; step status is not updated in real-time as the build progresses."
        },
        "timeout": {
          "type": "string",
          "description": "Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out."
        },
        "timing": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TimeSpanResponse",
          "description": "Stores timing information for executing this build step."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:VolumeResponse"
          },
          "description": "List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration."
        },
        "waitFor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all previous build steps in the `Build.Steps` list have completed successfully."
        }
      },
      "type": "object",
      "required": [
        "allowExitCodes",
        "allowFailure",
        "args",
        "automapSubstitutions",
        "dir",
        "entrypoint",
        "env",
        "exitCode",
        "name",
        "pullTiming",
        "script",
        "secretEnv",
        "status",
        "timeout",
        "timing",
        "volumes",
        "waitFor"
      ]
    },
    "google-native:cloudbuild/v1:BuiltImageResponse": {
      "description": "An image built by the pipeline.",
      "properties": {
        "digest": {
          "type": "string",
          "description": "Docker Registry 2.0 digest."
        },
        "name": {
          "type": "string",
          "description": "Name used to push the container image to Google Container Registry, as presented to `docker push`."
        },
        "pushTiming": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TimeSpanResponse",
          "description": "Stores timing information for pushing the specified image."
        }
      },
      "type": "object",
      "required": [
        "digest",
        "name",
        "pushTiming"
      ]
    },
    "google-native:cloudbuild/v1:ConnectedRepository": {
      "description": "Location of the source in a 2nd-gen Google Cloud Build repository resource.",
      "properties": {
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build."
        },
        "repository": {
          "type": "string",
          "description": "Name of the Google Cloud Build repository, formatted as `projects/*/locations/*/connections/*/repositories/*`."
        },
        "revision": {
          "type": "string",
          "description": "The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref."
        }
      },
      "type": "object",
      "required": [
        "repository"
      ]
    },
    "google-native:cloudbuild/v1:ConnectedRepositoryResponse": {
      "description": "Location of the source in a 2nd-gen Google Cloud Build repository resource.",
      "properties": {
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build."
        },
        "repository": {
          "type": "string",
          "description": "Name of the Google Cloud Build repository, formatted as `projects/*/locations/*/connections/*/repositories/*`."
        },
        "revision": {
          "type": "string",
          "description": "The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref."
        }
      },
      "type": "object",
      "required": [
        "dir",
        "repository",
        "revision"
      ]
    },
    "google-native:cloudbuild/v1:FailureInfoResponse": {
      "description": "A fatal problem encountered during the execution of the build.",
      "properties": {
        "detail": {
          "type": "string",
          "description": "Explains the failure issue in more detail using hard-coded text."
        },
        "type": {
          "type": "string",
          "description": "The name of the failure."
        }
      },
      "type": "object",
      "required": [
        "detail",
        "type"
      ]
    },
    "google-native:cloudbuild/v1:FileHashesResponse": {
      "description": "Container message for hashes of byte content of files, used in SourceProvenance messages to verify integrity of source input to the build.",
      "properties": {
        "fileHash": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:HashResponse"
          },
          "description": "Collection of file hashes."
        }
      },
      "type": "object",
      "required": [
        "fileHash"
      ]
    },
    "google-native:cloudbuild/v1:GitFileSource": {
      "description": "GitFileSource describes a file within a (possibly remote) code repository.",
      "properties": {
        "bitbucketServerConfig": {
          "type": "string",
          "description": "The full resource name of the bitbucket server config. Format: `projects/{project}/locations/{location}/bitbucketServerConfigs/{id}`."
        },
        "githubEnterpriseConfig": {
          "type": "string",
          "description": "The full resource name of the github enterprise config. Format: `projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}`. `projects/{project}/githubEnterpriseConfigs/{id}`."
        },
        "path": {
          "type": "string",
          "description": "The path of the file, with the repo root as the root of the path."
        },
        "repoType": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitFileSourceRepoType",
          "description": "See RepoType above."
        },
        "repository": {
          "type": "string",
          "description": "The fully qualified resource name of the Repos API repository. Either URI or repository can be specified. If unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path."
        },
        "revision": {
          "type": "string",
          "description": "The branch, tag, arbitrary ref, or SHA version of the repo to use when resolving the filename (optional). This field respects the same syntax/resolution as described here: https://git-scm.com/docs/gitrevisions If unspecified, the revision from which the trigger invocation originated is assumed to be the revision from which to read the specified path."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the repo. Either uri or repository can be specified. If unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:GitFileSourceRepoType": {
      "description": "See RepoType above.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "The default, unknown repo type. Don't use it, instead use one of the other repo types.",
          "value": "UNKNOWN"
        },
        {
          "name": "CloudSourceRepositories",
          "description": "A Google Cloud Source Repositories-hosted repo.",
          "value": "CLOUD_SOURCE_REPOSITORIES"
        },
        {
          "name": "Github",
          "description": "A GitHub-hosted repo not necessarily on \"github.com\" (i.e. GitHub Enterprise).",
          "value": "GITHUB"
        },
        {
          "name": "BitbucketServer",
          "description": "A Bitbucket Server-hosted repo.",
          "value": "BITBUCKET_SERVER"
        },
        {
          "name": "Gitlab",
          "description": "A GitLab-hosted repo.",
          "value": "GITLAB"
        }
      ]
    },
    "google-native:cloudbuild/v1:GitFileSourceResponse": {
      "description": "GitFileSource describes a file within a (possibly remote) code repository.",
      "properties": {
        "bitbucketServerConfig": {
          "type": "string",
          "description": "The full resource name of the bitbucket server config. Format: `projects/{project}/locations/{location}/bitbucketServerConfigs/{id}`."
        },
        "githubEnterpriseConfig": {
          "type": "string",
          "description": "The full resource name of the github enterprise config. Format: `projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}`. `projects/{project}/githubEnterpriseConfigs/{id}`."
        },
        "path": {
          "type": "string",
          "description": "The path of the file, with the repo root as the root of the path."
        },
        "repoType": {
          "type": "string",
          "description": "See RepoType above."
        },
        "repository": {
          "type": "string",
          "description": "The fully qualified resource name of the Repos API repository. Either URI or repository can be specified. If unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path."
        },
        "revision": {
          "type": "string",
          "description": "The branch, tag, arbitrary ref, or SHA version of the repo to use when resolving the filename (optional). This field respects the same syntax/resolution as described here: https://git-scm.com/docs/gitrevisions If unspecified, the revision from which the trigger invocation originated is assumed to be the revision from which to read the specified path."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the repo. Either uri or repository can be specified. If unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path."
        }
      },
      "type": "object",
      "required": [
        "bitbucketServerConfig",
        "githubEnterpriseConfig",
        "path",
        "repoType",
        "repository",
        "revision",
        "uri"
      ]
    },
    "google-native:cloudbuild/v1:GitHubEnterpriseSecrets": {
      "description": "GitHubEnterpriseSecrets represents the names of all necessary secrets in Secret Manager for a GitHub Enterprise server. Format is: projects//secrets/.",
      "properties": {
        "oauthClientIdName": {
          "type": "string",
          "description": "The resource name for the OAuth client ID secret in Secret Manager."
        },
        "oauthClientIdVersionName": {
          "type": "string",
          "description": "The resource name for the OAuth client ID secret version in Secret Manager."
        },
        "oauthSecretName": {
          "type": "string",
          "description": "The resource name for the OAuth secret in Secret Manager."
        },
        "oauthSecretVersionName": {
          "type": "string",
          "description": "The resource name for the OAuth secret secret version in Secret Manager."
        },
        "privateKeyName": {
          "type": "string",
          "description": "The resource name for the private key secret."
        },
        "privateKeyVersionName": {
          "type": "string",
          "description": "The resource name for the private key secret version."
        },
        "webhookSecretName": {
          "type": "string",
          "description": "The resource name for the webhook secret in Secret Manager."
        },
        "webhookSecretVersionName": {
          "type": "string",
          "description": "The resource name for the webhook secret secret version in Secret Manager."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:GitHubEnterpriseSecretsResponse": {
      "description": "GitHubEnterpriseSecrets represents the names of all necessary secrets in Secret Manager for a GitHub Enterprise server. Format is: projects//secrets/.",
      "properties": {
        "oauthClientIdName": {
          "type": "string",
          "description": "The resource name for the OAuth client ID secret in Secret Manager."
        },
        "oauthClientIdVersionName": {
          "type": "string",
          "description": "The resource name for the OAuth client ID secret version in Secret Manager."
        },
        "oauthSecretName": {
          "type": "string",
          "description": "The resource name for the OAuth secret in Secret Manager."
        },
        "oauthSecretVersionName": {
          "type": "string",
          "description": "The resource name for the OAuth secret secret version in Secret Manager."
        },
        "privateKeyName": {
          "type": "string",
          "description": "The resource name for the private key secret."
        },
        "privateKeyVersionName": {
          "type": "string",
          "description": "The resource name for the private key secret version."
        },
        "webhookSecretName": {
          "type": "string",
          "description": "The resource name for the webhook secret in Secret Manager."
        },
        "webhookSecretVersionName": {
          "type": "string",
          "description": "The resource name for the webhook secret secret version in Secret Manager."
        }
      },
      "type": "object",
      "required": [
        "oauthClientIdName",
        "oauthClientIdVersionName",
        "oauthSecretName",
        "oauthSecretVersionName",
        "privateKeyName",
        "privateKeyVersionName",
        "webhookSecretName",
        "webhookSecretVersionName"
      ]
    },
    "google-native:cloudbuild/v1:GitHubEventsConfig": {
      "description": "GitHubEventsConfig describes the configuration of a trigger that creates a build whenever a GitHub event is received.",
      "properties": {
        "enterpriseConfigResourceName": {
          "type": "string",
          "description": "Optional. The resource name of the github enterprise config that should be applied to this installation. For example: \"projects/{$project_id}/locations/{$location_id}/githubEnterpriseConfigs/{$config_id}\""
        },
        "installationId": {
          "type": "string",
          "description": "The installationID that emits the GitHub event."
        },
        "name": {
          "type": "string",
          "description": "Name of the repository. For example: The name for https://github.com/googlecloudplatform/cloud-builders is \"cloud-builders\"."
        },
        "owner": {
          "type": "string",
          "description": "Owner of the repository. For example: The owner for https://github.com/googlecloudplatform/cloud-builders is \"googlecloudplatform\"."
        },
        "pullRequest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilter",
          "description": "filter to match changes in pull requests."
        },
        "push": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PushFilter",
          "description": "filter to match changes in refs like branches, tags."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:GitHubEventsConfigResponse": {
      "description": "GitHubEventsConfig describes the configuration of a trigger that creates a build whenever a GitHub event is received.",
      "properties": {
        "enterpriseConfigResourceName": {
          "type": "string",
          "description": "Optional. The resource name of the github enterprise config that should be applied to this installation. For example: \"projects/{$project_id}/locations/{$location_id}/githubEnterpriseConfigs/{$config_id}\""
        },
        "installationId": {
          "type": "string",
          "description": "The installationID that emits the GitHub event."
        },
        "name": {
          "type": "string",
          "description": "Name of the repository. For example: The name for https://github.com/googlecloudplatform/cloud-builders is \"cloud-builders\"."
        },
        "owner": {
          "type": "string",
          "description": "Owner of the repository. For example: The owner for https://github.com/googlecloudplatform/cloud-builders is \"googlecloudplatform\"."
        },
        "pullRequest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilterResponse",
          "description": "filter to match changes in pull requests."
        },
        "push": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PushFilterResponse",
          "description": "filter to match changes in refs like branches, tags."
        }
      },
      "type": "object",
      "required": [
        "enterpriseConfigResourceName",
        "installationId",
        "name",
        "owner",
        "pullRequest",
        "push"
      ]
    },
    "google-native:cloudbuild/v1:GitLabConfigResponse": {
      "description": "GitLabConfig represents the configuration for a GitLab integration.",
      "properties": {
        "connectedRepositories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabRepositoryIdResponse"
          },
          "description": "Connected GitLab.com or GitLabEnterprise repositories for this config."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the config was created."
        },
        "enterpriseConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabEnterpriseConfigResponse",
          "description": "Optional. GitLabEnterprise config."
        },
        "name": {
          "type": "string",
          "description": "The resource name for the config."
        },
        "secrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabSecretsResponse",
          "description": "Secret Manager secrets needed by the config."
        },
        "username": {
          "type": "string",
          "description": "Username of the GitLab.com or GitLab Enterprise account Cloud Build will use."
        },
        "webhookKey": {
          "type": "string",
          "description": "UUID included in webhook requests. The UUID is used to look up the corresponding config."
        }
      },
      "type": "object",
      "required": [
        "connectedRepositories",
        "createTime",
        "enterpriseConfig",
        "name",
        "secrets",
        "username",
        "webhookKey"
      ]
    },
    "google-native:cloudbuild/v1:GitLabEnterpriseConfig": {
      "description": "GitLabEnterpriseConfig represents the configuration for a GitLabEnterprise integration.",
      "properties": {
        "hostUri": {
          "type": "string",
          "description": "Immutable. The URI of the GitlabEnterprise host."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ServiceDirectoryConfig",
          "description": "The Service Directory configuration to be used when reaching out to the GitLab Enterprise instance."
        },
        "sslCa": {
          "type": "string",
          "description": "The SSL certificate to use in requests to GitLab Enterprise instances."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:GitLabEnterpriseConfigResponse": {
      "description": "GitLabEnterpriseConfig represents the configuration for a GitLabEnterprise integration.",
      "properties": {
        "hostUri": {
          "type": "string",
          "description": "Immutable. The URI of the GitlabEnterprise host."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ServiceDirectoryConfigResponse",
          "description": "The Service Directory configuration to be used when reaching out to the GitLab Enterprise instance."
        },
        "sslCa": {
          "type": "string",
          "description": "The SSL certificate to use in requests to GitLab Enterprise instances."
        }
      },
      "type": "object",
      "required": [
        "hostUri",
        "serviceDirectoryConfig",
        "sslCa"
      ]
    },
    "google-native:cloudbuild/v1:GitLabEventsConfig": {
      "description": "GitLabEventsConfig describes the configuration of a trigger that creates a build whenever a GitLab event is received.",
      "properties": {
        "gitlabConfigResource": {
          "type": "string",
          "description": "The GitLab config resource that this trigger config maps to."
        },
        "projectNamespace": {
          "type": "string",
          "description": "Namespace of the GitLab project."
        },
        "pullRequest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilter",
          "description": "Filter to match changes in pull requests."
        },
        "push": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PushFilter",
          "description": "Filter to match changes in refs like branches, tags."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:GitLabEventsConfigResponse": {
      "description": "GitLabEventsConfig describes the configuration of a trigger that creates a build whenever a GitLab event is received.",
      "properties": {
        "gitlabConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabConfigResponse",
          "description": "The GitLabConfig specified in the gitlab_config_resource field."
        },
        "gitlabConfigResource": {
          "type": "string",
          "description": "The GitLab config resource that this trigger config maps to."
        },
        "projectNamespace": {
          "type": "string",
          "description": "Namespace of the GitLab project."
        },
        "pullRequest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilterResponse",
          "description": "Filter to match changes in pull requests."
        },
        "push": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PushFilterResponse",
          "description": "Filter to match changes in refs like branches, tags."
        }
      },
      "type": "object",
      "required": [
        "gitlabConfig",
        "gitlabConfigResource",
        "projectNamespace",
        "pullRequest",
        "push"
      ]
    },
    "google-native:cloudbuild/v1:GitLabRepositoryId": {
      "description": "GitLabRepositoryId identifies a specific repository hosted on GitLab.com or GitLabEnterprise",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifier for the repository. example: \"namespace/project-slug\", namespace is usually the username or group ID"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:cloudbuild/v1:GitLabRepositoryIdResponse": {
      "description": "GitLabRepositoryId identifies a specific repository hosted on GitLab.com or GitLabEnterprise",
      "properties": {
        "webhookId": {
          "type": "integer",
          "description": "The ID of the webhook that was created for receiving events from this repo. We only create and manage a single webhook for each repo."
        }
      },
      "type": "object",
      "required": [
        "webhookId"
      ]
    },
    "google-native:cloudbuild/v1:GitLabSecrets": {
      "description": "GitLabSecrets represents the secrets in Secret Manager for a GitLab integration.",
      "properties": {
        "apiAccessTokenVersion": {
          "type": "string",
          "description": "The resource name for the api access token’s secret version"
        },
        "apiKeyVersion": {
          "type": "string",
          "description": "Immutable. API Key that will be attached to webhook requests from GitLab to Cloud Build."
        },
        "readAccessTokenVersion": {
          "type": "string",
          "description": "The resource name for the read access token’s secret version"
        },
        "webhookSecretVersion": {
          "type": "string",
          "description": "Immutable. The resource name for the webhook secret’s secret version. Once this field has been set, it cannot be changed. If you need to change it, please create another GitLabConfig."
        }
      },
      "type": "object",
      "required": [
        "apiAccessTokenVersion",
        "apiKeyVersion",
        "readAccessTokenVersion",
        "webhookSecretVersion"
      ]
    },
    "google-native:cloudbuild/v1:GitLabSecretsResponse": {
      "description": "GitLabSecrets represents the secrets in Secret Manager for a GitLab integration.",
      "properties": {
        "apiAccessTokenVersion": {
          "type": "string",
          "description": "The resource name for the api access token’s secret version"
        },
        "apiKeyVersion": {
          "type": "string",
          "description": "Immutable. API Key that will be attached to webhook requests from GitLab to Cloud Build."
        },
        "readAccessTokenVersion": {
          "type": "string",
          "description": "The resource name for the read access token’s secret version"
        },
        "webhookSecretVersion": {
          "type": "string",
          "description": "Immutable. The resource name for the webhook secret’s secret version. Once this field has been set, it cannot be changed. If you need to change it, please create another GitLabConfig."
        }
      },
      "type": "object",
      "required": [
        "apiAccessTokenVersion",
        "apiKeyVersion",
        "readAccessTokenVersion",
        "webhookSecretVersion"
      ]
    },
    "google-native:cloudbuild/v1:GitRepoSource": {
      "description": "GitRepoSource describes a repo and ref of a code repository.",
      "properties": {
        "bitbucketServerConfig": {
          "type": "string",
          "description": "The full resource name of the bitbucket server config. Format: `projects/{project}/locations/{location}/bitbucketServerConfigs/{id}`."
        },
        "githubEnterpriseConfig": {
          "type": "string",
          "description": "The full resource name of the github enterprise config. Format: `projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}`. `projects/{project}/githubEnterpriseConfigs/{id}`."
        },
        "ref": {
          "type": "string",
          "description": "The branch or tag to use. Must start with \"refs/\" (required)."
        },
        "repoType": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitRepoSourceRepoType",
          "description": "See RepoType below."
        },
        "repository": {
          "type": "string",
          "description": "The connected repository resource name, in the format `projects/*/locations/*/connections/*/repositories/*`. Either `uri` or `repository` can be specified and is required."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the repo (e.g. https://github.com/user/repo.git). Either `uri` or `repository` can be specified and is required."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:GitRepoSourceRepoType": {
      "description": "See RepoType below.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "The default, unknown repo type. Don't use it, instead use one of the other repo types.",
          "value": "UNKNOWN"
        },
        {
          "name": "CloudSourceRepositories",
          "description": "A Google Cloud Source Repositories-hosted repo.",
          "value": "CLOUD_SOURCE_REPOSITORIES"
        },
        {
          "name": "Github",
          "description": "A GitHub-hosted repo not necessarily on \"github.com\" (i.e. GitHub Enterprise).",
          "value": "GITHUB"
        },
        {
          "name": "BitbucketServer",
          "description": "A Bitbucket Server-hosted repo.",
          "value": "BITBUCKET_SERVER"
        },
        {
          "name": "Gitlab",
          "description": "A GitLab-hosted repo.",
          "value": "GITLAB"
        }
      ]
    },
    "google-native:cloudbuild/v1:GitRepoSourceResponse": {
      "description": "GitRepoSource describes a repo and ref of a code repository.",
      "properties": {
        "bitbucketServerConfig": {
          "type": "string",
          "description": "The full resource name of the bitbucket server config. Format: `projects/{project}/locations/{location}/bitbucketServerConfigs/{id}`."
        },
        "githubEnterpriseConfig": {
          "type": "string",
          "description": "The full resource name of the github enterprise config. Format: `projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}`. `projects/{project}/githubEnterpriseConfigs/{id}`."
        },
        "ref": {
          "type": "string",
          "description": "The branch or tag to use. Must start with \"refs/\" (required)."
        },
        "repoType": {
          "type": "string",
          "description": "See RepoType below."
        },
        "repository": {
          "type": "string",
          "description": "The connected repository resource name, in the format `projects/*/locations/*/connections/*/repositories/*`. Either `uri` or `repository` can be specified and is required."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the repo (e.g. https://github.com/user/repo.git). Either `uri` or `repository` can be specified and is required."
        }
      },
      "type": "object",
      "required": [
        "bitbucketServerConfig",
        "githubEnterpriseConfig",
        "ref",
        "repoType",
        "repository",
        "uri"
      ]
    },
    "google-native:cloudbuild/v1:GitSource": {
      "description": "Location of the source in any accessible Git repository.",
      "properties": {
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution."
        },
        "revision": {
          "type": "string",
          "description": "The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref. Cloud Build uses `git fetch` to fetch the revision from the Git repository; therefore make sure that the string you provide for `revision` is parsable by the command. For information on string values accepted by `git fetch`, see https://git-scm.com/docs/gitrevisions#_specifying_revisions. For information on `git fetch`, see https://git-scm.com/docs/git-fetch."
        },
        "url": {
          "type": "string",
          "description": "Location of the Git repo to build. This will be used as a `git remote`, see https://git-scm.com/docs/git-remote."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:GitSourceResponse": {
      "description": "Location of the source in any accessible Git repository.",
      "properties": {
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution."
        },
        "revision": {
          "type": "string",
          "description": "The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref. Cloud Build uses `git fetch` to fetch the revision from the Git repository; therefore make sure that the string you provide for `revision` is parsable by the command. For information on string values accepted by `git fetch`, see https://git-scm.com/docs/gitrevisions#_specifying_revisions. For information on `git fetch`, see https://git-scm.com/docs/git-fetch."
        },
        "url": {
          "type": "string",
          "description": "Location of the Git repo to build. This will be used as a `git remote`, see https://git-scm.com/docs/git-remote."
        }
      },
      "type": "object",
      "required": [
        "dir",
        "revision",
        "url"
      ]
    },
    "google-native:cloudbuild/v1:HashResponse": {
      "description": "Container message for hash values.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of hash that was performed."
        },
        "value": {
          "type": "string",
          "description": "The hash value."
        }
      },
      "type": "object",
      "required": [
        "type",
        "value"
      ]
    },
    "google-native:cloudbuild/v1:InlineSecret": {
      "description": "Pairs a set of secret environment variables mapped to encrypted values with the Cloud KMS key to use to decrypt the value.",
      "properties": {
        "envMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of Cloud KMS crypto key to decrypt the encrypted value. In format: projects/*/locations/*/keyRings/*/cryptoKeys/*"
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:InlineSecretResponse": {
      "description": "Pairs a set of secret environment variables mapped to encrypted values with the Cloud KMS key to use to decrypt the value.",
      "properties": {
        "envMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of Cloud KMS crypto key to decrypt the encrypted value. In format: projects/*/locations/*/keyRings/*/cryptoKeys/*"
        }
      },
      "type": "object",
      "required": [
        "envMap",
        "kmsKeyName"
      ]
    },
    "google-native:cloudbuild/v1:MavenArtifact": {
      "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry."
        },
        "groupId": {
          "type": "string",
          "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry."
        },
        "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."
        },
        "repository": {
          "type": "string",
          "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix."
        },
        "version": {
          "type": "string",
          "description": "Maven `version` value used when uploading the artifact to Artifact Registry."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:MavenArtifactResponse": {
      "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry."
        },
        "groupId": {
          "type": "string",
          "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry."
        },
        "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."
        },
        "repository": {
          "type": "string",
          "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix."
        },
        "version": {
          "type": "string",
          "description": "Maven `version` value used when uploading the artifact to Artifact Registry."
        }
      },
      "type": "object",
      "required": [
        "artifactId",
        "groupId",
        "path",
        "repository",
        "version"
      ]
    },
    "google-native:cloudbuild/v1:NetworkConfig": {
      "description": "Defines the network configuration for the pool.",
      "properties": {
        "egressOption": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:NetworkConfigEgressOption",
          "description": "Option to configure network egress for the workers."
        },
        "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 `12345`, and `{network}` is the name of a VPC network in the project. See [Understanding network configuration options](https://cloud.google.com/build/docs/private-pools/set-up-private-pool-environment)"
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "peeredNetwork"
      ]
    },
    "google-native:cloudbuild/v1:NetworkConfigEgressOption": {
      "description": "Option to configure network egress for the workers.",
      "type": "string",
      "enum": [
        {
          "name": "EgressOptionUnspecified",
          "description": "If set, defaults to PUBLIC_EGRESS.",
          "value": "EGRESS_OPTION_UNSPECIFIED"
        },
        {
          "name": "NoPublicEgress",
          "description": "If set, workers are created without any public address, which prevents network egress to public IPs unless a network proxy is configured.",
          "value": "NO_PUBLIC_EGRESS"
        },
        {
          "name": "PublicEgress",
          "description": "If set, workers are created with a public address which allows for public internet egress.",
          "value": "PUBLIC_EGRESS"
        }
      ]
    },
    "google-native:cloudbuild/v1:NetworkConfigResponse": {
      "description": "Defines the network configuration for the pool.",
      "properties": {
        "egressOption": {
          "type": "string",
          "description": "Option to configure network egress for the workers."
        },
        "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 `12345`, and `{network}` is the name of a VPC network in the project. See [Understanding network configuration options](https://cloud.google.com/build/docs/private-pools/set-up-private-pool-environment)"
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "egressOption",
        "peeredNetwork",
        "peeredNetworkIpRange"
      ]
    },
    "google-native:cloudbuild/v1:NpmPackage": {
      "description": "Npm package to upload to Artifact Registry upon successful completion of all build steps.",
      "properties": {
        "packagePath": {
          "type": "string",
          "description": "Path to the package.json. e.g. workspace/path/to/package"
        },
        "repository": {
          "type": "string",
          "description": "Artifact Registry repository, in the form \"https://$REGION-npm.pkg.dev/$PROJECT/$REPOSITORY\" Npm package in the workspace specified by path will be zipped and uploaded to Artifact Registry with this location as a prefix."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:NpmPackageResponse": {
      "description": "Npm package to upload to Artifact Registry upon successful completion of all build steps.",
      "properties": {
        "packagePath": {
          "type": "string",
          "description": "Path to the package.json. e.g. workspace/path/to/package"
        },
        "repository": {
          "type": "string",
          "description": "Artifact Registry repository, in the form \"https://$REGION-npm.pkg.dev/$PROJECT/$REPOSITORY\" Npm package in the workspace specified by path will be zipped and uploaded to Artifact Registry with this location as a prefix."
        }
      },
      "type": "object",
      "required": [
        "packagePath",
        "repository"
      ]
    },
    "google-native:cloudbuild/v1:PoolOption": {
      "description": "Details about how a build should be executed on a `WorkerPool`. See [running builds in a private pool](https://cloud.google.com/build/docs/private-pools/run-builds-in-private-pool) for more information.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The `WorkerPool` resource to execute the build on. You must have `cloudbuild.workerpools.use` on the project hosting the WorkerPool. Format projects/{project}/locations/{location}/workerPools/{workerPoolId}"
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:PoolOptionResponse": {
      "description": "Details about how a build should be executed on a `WorkerPool`. See [running builds in a private pool](https://cloud.google.com/build/docs/private-pools/run-builds-in-private-pool) for more information.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The `WorkerPool` resource to execute the build on. You must have `cloudbuild.workerpools.use` on the project hosting the WorkerPool. Format projects/{project}/locations/{location}/workerPools/{workerPoolId}"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:cloudbuild/v1:PrivatePoolV1Config": {
      "description": "Configuration for a V1 `PrivatePool`.",
      "properties": {
        "networkConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:NetworkConfig",
          "description": "Network configuration for the pool."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:WorkerConfig",
          "description": "Machine configuration for the workers in the pool."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:PrivatePoolV1ConfigResponse": {
      "description": "Configuration for a V1 `PrivatePool`.",
      "properties": {
        "networkConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:NetworkConfigResponse",
          "description": "Network configuration for the pool."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:WorkerConfigResponse",
          "description": "Machine configuration for the workers in the pool."
        }
      },
      "type": "object",
      "required": [
        "networkConfig",
        "workerConfig"
      ]
    },
    "google-native:cloudbuild/v1:PubsubConfig": {
      "description": "PubsubConfig describes the configuration of a trigger that creates a build whenever a Pub/Sub message is published.",
      "properties": {
        "serviceAccountEmail": {
          "type": "string",
          "description": "Service account that will make the push request."
        },
        "state": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PubsubConfigState",
          "description": "Potential issues with the underlying Pub/Sub subscription configuration. Only populated on get requests."
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:PubsubConfigResponse": {
      "description": "PubsubConfig describes the configuration of a trigger that creates a build whenever a Pub/Sub message is published.",
      "properties": {
        "serviceAccountEmail": {
          "type": "string",
          "description": "Service account that will make the push request."
        },
        "state": {
          "type": "string",
          "description": "Potential issues with the underlying Pub/Sub subscription configuration. Only populated on get requests."
        },
        "subscription": {
          "type": "string",
          "description": "Name of the subscription. Format is `projects/{project}/subscriptions/{subscription}`."
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object",
      "required": [
        "serviceAccountEmail",
        "state",
        "subscription",
        "topic"
      ]
    },
    "google-native:cloudbuild/v1:PubsubConfigState": {
      "description": "Potential issues with the underlying Pub/Sub subscription configuration. Only populated on get requests.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The subscription configuration has not been checked.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Ok",
          "description": "The Pub/Sub subscription is properly configured.",
          "value": "OK"
        },
        {
          "name": "SubscriptionDeleted",
          "description": "The subscription has been deleted.",
          "value": "SUBSCRIPTION_DELETED"
        },
        {
          "name": "TopicDeleted",
          "description": "The topic has been deleted.",
          "value": "TOPIC_DELETED"
        },
        {
          "name": "SubscriptionMisconfigured",
          "description": "Some of the subscription's field are misconfigured.",
          "value": "SUBSCRIPTION_MISCONFIGURED"
        }
      ]
    },
    "google-native:cloudbuild/v1:PullRequestFilter": {
      "description": "PullRequestFilter contains filter properties for matching GitHub Pull Requests.",
      "properties": {
        "branch": {
          "type": "string",
          "description": "Regex of branches to match. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commentControl": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilterCommentControl",
          "description": "Configure builds to run whether a repository owner or collaborator need to comment `/gcbrun`."
        },
        "invertRegex": {
          "type": "boolean",
          "description": "If true, branches that do NOT match the git_ref will trigger a build."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:PullRequestFilterCommentControl": {
      "description": "Configure builds to run whether a repository owner or collaborator need to comment `/gcbrun`.",
      "type": "string",
      "enum": [
        {
          "name": "CommentsDisabled",
          "description": "Do not require comments on Pull Requests before builds are triggered.",
          "value": "COMMENTS_DISABLED"
        },
        {
          "name": "CommentsEnabled",
          "description": "Enforce that repository owners or collaborators must comment on Pull Requests before builds are triggered.",
          "value": "COMMENTS_ENABLED"
        },
        {
          "name": "CommentsEnabledForExternalContributorsOnly",
          "description": "Enforce that repository owners or collaborators must comment on external contributors' Pull Requests before builds are triggered.",
          "value": "COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY"
        }
      ]
    },
    "google-native:cloudbuild/v1:PullRequestFilterResponse": {
      "description": "PullRequestFilter contains filter properties for matching GitHub Pull Requests.",
      "properties": {
        "branch": {
          "type": "string",
          "description": "Regex of branches to match. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commentControl": {
          "type": "string",
          "description": "Configure builds to run whether a repository owner or collaborator need to comment `/gcbrun`."
        },
        "invertRegex": {
          "type": "boolean",
          "description": "If true, branches that do NOT match the git_ref will trigger a build."
        }
      },
      "type": "object",
      "required": [
        "branch",
        "commentControl",
        "invertRegex"
      ]
    },
    "google-native:cloudbuild/v1:PushFilter": {
      "description": "Push contains filter properties for matching GitHub git pushes.",
      "properties": {
        "branch": {
          "type": "string",
          "description": "Regexes matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "invertRegex": {
          "type": "boolean",
          "description": "When true, only trigger a build if the revision regex does NOT match the git_ref regex."
        },
        "tag": {
          "type": "string",
          "description": "Regexes matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:PushFilterResponse": {
      "description": "Push contains filter properties for matching GitHub git pushes.",
      "properties": {
        "branch": {
          "type": "string",
          "description": "Regexes matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "invertRegex": {
          "type": "boolean",
          "description": "When true, only trigger a build if the revision regex does NOT match the git_ref regex."
        },
        "tag": {
          "type": "string",
          "description": "Regexes matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object",
      "required": [
        "branch",
        "invertRegex",
        "tag"
      ]
    },
    "google-native:cloudbuild/v1:PythonPackage": {
      "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.",
      "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."
        },
        "repository": {
          "type": "string",
          "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:PythonPackageResponse": {
      "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.",
      "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."
        },
        "repository": {
          "type": "string",
          "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix."
        }
      },
      "type": "object",
      "required": [
        "paths",
        "repository"
      ]
    },
    "google-native:cloudbuild/v1:RepoSource": {
      "description": "Location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution."
        },
        "invertRegex": {
          "type": "boolean",
          "description": "Only trigger a build if the revision regex does NOT match the revision regex."
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the Cloud Source Repository."
        },
        "substitutions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Substitutions to use in a triggered build. Should only be used with RunBuildTrigger"
        },
        "tagName": {
          "type": "string",
          "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:RepoSourceResponse": {
      "description": "Location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution."
        },
        "invertRegex": {
          "type": "boolean",
          "description": "Only trigger a build if the revision regex does NOT match the revision regex."
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the Cloud Source Repository."
        },
        "substitutions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Substitutions to use in a triggered build. Should only be used with RunBuildTrigger"
        },
        "tagName": {
          "type": "string",
          "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object",
      "required": [
        "branchName",
        "commitSha",
        "dir",
        "invertRegex",
        "project",
        "repoName",
        "substitutions",
        "tagName"
      ]
    },
    "google-native:cloudbuild/v1:RepositoryEventConfig": {
      "description": "The configuration of a trigger that creates a build whenever an event from Repo API is received.",
      "properties": {
        "pullRequest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilter",
          "description": "Filter to match changes in pull requests."
        },
        "push": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PushFilter",
          "description": "Filter to match changes in refs like branches, tags."
        },
        "repository": {
          "type": "string",
          "description": "The resource name of the Repo API resource."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:RepositoryEventConfigResponse": {
      "description": "The configuration of a trigger that creates a build whenever an event from Repo API is received.",
      "properties": {
        "pullRequest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PullRequestFilterResponse",
          "description": "Filter to match changes in pull requests."
        },
        "push": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PushFilterResponse",
          "description": "Filter to match changes in refs like branches, tags."
        },
        "repository": {
          "type": "string",
          "description": "The resource name of the Repo API resource."
        },
        "repositoryType": {
          "type": "string",
          "description": "The type of the SCM vendor the repository points to."
        }
      },
      "type": "object",
      "required": [
        "pullRequest",
        "push",
        "repository",
        "repositoryType"
      ]
    },
    "google-native:cloudbuild/v1:ResultsResponse": {
      "description": "Artifacts created by the build pipeline.",
      "properties": {
        "artifactManifest": {
          "type": "string",
          "description": "Path to the artifact manifest for non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage."
        },
        "artifactTiming": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TimeSpanResponse",
          "description": "Time to push all non-container artifacts to Cloud Storage."
        },
        "buildStepImages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of build step digests, in the order corresponding to build step indices."
        },
        "buildStepOutputs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of build step outputs, produced by builder images, in the order corresponding to build step indices. [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders) can produce this output by writing to `$BUILDER_OUTPUT/output`. Only the first 50KB of data is stored."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuiltImageResponse"
          },
          "description": "Container images that were built as a part of the build."
        },
        "mavenArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:UploadedMavenArtifactResponse"
          },
          "description": "Maven artifacts uploaded to Artifact Registry at the end of the build."
        },
        "npmPackages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:UploadedNpmPackageResponse"
          },
          "description": "Npm packages uploaded to Artifact Registry at the end of the build."
        },
        "numArtifacts": {
          "type": "string",
          "description": "Number of non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage."
        },
        "pythonPackages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:UploadedPythonPackageResponse"
          },
          "description": "Python artifacts uploaded to Artifact Registry at the end of the build."
        }
      },
      "type": "object",
      "required": [
        "artifactManifest",
        "artifactTiming",
        "buildStepImages",
        "buildStepOutputs",
        "images",
        "mavenArtifacts",
        "npmPackages",
        "numArtifacts",
        "pythonPackages"
      ]
    },
    "google-native:cloudbuild/v1:Secret": {
      "description": "Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value. Note: Use `kmsKeyName` with `available_secrets` instead of using `kmsKeyName` with `secret`. For instructions see: https://cloud.google.com/cloud-build/docs/securing-builds/use-encrypted-credentials.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Cloud KMS key name to use to decrypt these envs."
        },
        "secretEnv": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:SecretManagerSecret": {
      "description": "Pairs a secret environment variable with a SecretVersion in Secret Manager.",
      "properties": {
        "env": {
          "type": "string",
          "description": "Environment variable name to associate with the secret. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step."
        },
        "versionName": {
          "type": "string",
          "description": "Resource name of the SecretVersion. In format: projects/*/secrets/*/versions/*"
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:SecretManagerSecretResponse": {
      "description": "Pairs a secret environment variable with a SecretVersion in Secret Manager.",
      "properties": {
        "env": {
          "type": "string",
          "description": "Environment variable name to associate with the secret. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step."
        },
        "versionName": {
          "type": "string",
          "description": "Resource name of the SecretVersion. In format: projects/*/secrets/*/versions/*"
        }
      },
      "type": "object",
      "required": [
        "env",
        "versionName"
      ]
    },
    "google-native:cloudbuild/v1:SecretResponse": {
      "description": "Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value. Note: Use `kmsKeyName` with `available_secrets` instead of using `kmsKeyName` with `secret`. For instructions see: https://cloud.google.com/cloud-build/docs/securing-builds/use-encrypted-credentials.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Cloud KMS key name to use to decrypt these envs."
        },
        "secretEnv": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName",
        "secretEnv"
      ]
    },
    "google-native:cloudbuild/v1:Secrets": {
      "description": "Secrets and secret environment variables.",
      "properties": {
        "inline": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:InlineSecret"
          },
          "description": "Secrets encrypted with KMS key and the associated secret environment variable."
        },
        "secretManager": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:SecretManagerSecret"
          },
          "description": "Secrets in Secret Manager and associated secret environment variable."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:SecretsResponse": {
      "description": "Secrets and secret environment variables.",
      "properties": {
        "inline": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:InlineSecretResponse"
          },
          "description": "Secrets encrypted with KMS key and the associated secret environment variable."
        },
        "secretManager": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:SecretManagerSecretResponse"
          },
          "description": "Secrets in Secret Manager and associated secret environment variable."
        }
      },
      "type": "object",
      "required": [
        "inline",
        "secretManager"
      ]
    },
    "google-native:cloudbuild/v1:ServiceDirectoryConfig": {
      "description": "ServiceDirectoryConfig represents Service Directory configuration for a SCM host connection.",
      "properties": {
        "service": {
          "type": "string",
          "description": "The Service Directory service name. Format: projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:ServiceDirectoryConfigResponse": {
      "description": "ServiceDirectoryConfig represents Service Directory configuration for a SCM host connection.",
      "properties": {
        "service": {
          "type": "string",
          "description": "The Service Directory service name. Format: projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}."
        }
      },
      "type": "object",
      "required": [
        "service"
      ]
    },
    "google-native:cloudbuild/v1:Source": {
      "description": "Location of the source in a supported storage service.",
      "properties": {
        "connectedRepository": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ConnectedRepository",
          "description": "Optional. If provided, get the source from this 2nd-gen Google Cloud Build repository resource."
        },
        "gitSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitSource",
          "description": "If provided, get the source from this Git repository."
        },
        "repoSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:RepoSource",
          "description": "If provided, get the source from this location in a Cloud Source Repository."
        },
        "storageSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:StorageSource",
          "description": "If provided, get the source from this location in Cloud Storage."
        },
        "storageSourceManifest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:StorageSourceManifest",
          "description": "If provided, get the source from this manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher)."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:SourceProvenanceResponse": {
      "description": "Provenance of the source. Ways to find the original source, or verify that some source was used for this build.",
      "properties": {
        "fileHashes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. Note that `FileHashes` will only be populated if `BuildOptions` has requested a `SourceProvenanceHash`. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (`.tar.gz`), the `FileHash` will be for the single path to that file."
        },
        "resolvedConnectedRepository": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ConnectedRepositoryResponse",
          "description": "A copy of the build's `source.connected_repository`, if exists, with any revisions resolved."
        },
        "resolvedGitSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitSourceResponse",
          "description": "A copy of the build's `source.git_source`, if exists, with any revisions resolved."
        },
        "resolvedRepoSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:RepoSourceResponse",
          "description": "A copy of the build's `source.repo_source`, if exists, with any revisions resolved."
        },
        "resolvedStorageSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:StorageSourceResponse",
          "description": "A copy of the build's `source.storage_source`, if exists, with any generations resolved."
        },
        "resolvedStorageSourceManifest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:StorageSourceManifestResponse",
          "description": "A copy of the build's `source.storage_source_manifest`, if exists, with any revisions resolved. This feature is in Preview."
        }
      },
      "type": "object",
      "required": [
        "fileHashes",
        "resolvedConnectedRepository",
        "resolvedGitSource",
        "resolvedRepoSource",
        "resolvedStorageSource",
        "resolvedStorageSourceManifest"
      ]
    },
    "google-native:cloudbuild/v1:SourceResponse": {
      "description": "Location of the source in a supported storage service.",
      "properties": {
        "connectedRepository": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ConnectedRepositoryResponse",
          "description": "Optional. If provided, get the source from this 2nd-gen Google Cloud Build repository resource."
        },
        "gitSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitSourceResponse",
          "description": "If provided, get the source from this Git repository."
        },
        "repoSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:RepoSourceResponse",
          "description": "If provided, get the source from this location in a Cloud Source Repository."
        },
        "storageSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:StorageSourceResponse",
          "description": "If provided, get the source from this location in Cloud Storage."
        },
        "storageSourceManifest": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:StorageSourceManifestResponse",
          "description": "If provided, get the source from this manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher)."
        }
      },
      "type": "object",
      "required": [
        "connectedRepository",
        "gitSource",
        "repoSource",
        "storageSource",
        "storageSourceManifest"
      ]
    },
    "google-native:cloudbuild/v1:StorageSource": {
      "description": "Location of the source in an archive file in Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Cloud Storage object containing the source. This object must be a zipped (`.zip`) or gzipped archive file (`.tar.gz`) containing source to build."
        },
        "sourceFetcher": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:StorageSourceSourceFetcher",
          "description": "Optional. Option to specify the tool to fetch the source file for the build."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:StorageSourceManifest": {
      "description": "Location of the source manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Cloud Storage bucket containing the source manifest (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Cloud Storage object containing the source manifest. This object must be a JSON file."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:StorageSourceManifestResponse": {
      "description": "Location of the source manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Cloud Storage bucket containing the source manifest (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Cloud Storage object containing the source manifest. This object must be a JSON file."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object"
      ]
    },
    "google-native:cloudbuild/v1:StorageSourceResponse": {
      "description": "Location of the source in an archive file in Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Cloud Storage object containing the source. This object must be a zipped (`.zip`) or gzipped archive file (`.tar.gz`) containing source to build."
        },
        "sourceFetcher": {
          "type": "string",
          "description": "Optional. Option to specify the tool to fetch the source file for the build."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object",
        "sourceFetcher"
      ]
    },
    "google-native:cloudbuild/v1:StorageSourceSourceFetcher": {
      "description": "Optional. Option to specify the tool to fetch the source file for the build.",
      "type": "string",
      "enum": [
        {
          "name": "SourceFetcherUnspecified",
          "description": "Unspecified defaults to GSUTIL.",
          "value": "SOURCE_FETCHER_UNSPECIFIED"
        },
        {
          "name": "Gsutil",
          "description": "Use the \"gsutil\" tool to download the source file.",
          "value": "GSUTIL"
        },
        {
          "name": "GcsFetcher",
          "description": "Use the Cloud Storage Fetcher tool to download the source file.",
          "value": "GCS_FETCHER"
        }
      ]
    },
    "google-native:cloudbuild/v1:TimeSpanResponse": {
      "description": "Start and end times for a build execution phase.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "End of time span."
        },
        "startTime": {
          "type": "string",
          "description": "Start of time span."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "startTime"
      ]
    },
    "google-native:cloudbuild/v1:TriggerEventType": {
      "description": "EventType allows the user to explicitly set the type of event to which this BuildTrigger should respond. This field will be validated against the rest of the configuration if it is set.",
      "type": "string",
      "enum": [
        {
          "name": "EventTypeUnspecified",
          "description": "EVENT_TYPE_UNSPECIFIED event_types are ignored.",
          "value": "EVENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Repo",
          "description": "REPO corresponds to the supported VCS integrations.",
          "value": "REPO"
        },
        {
          "name": "Webhook",
          "description": "WEBHOOK corresponds to webhook triggers.",
          "value": "WEBHOOK"
        },
        {
          "name": "Pubsub",
          "description": "PUBSUB corresponds to pubsub triggers.",
          "value": "PUBSUB"
        },
        {
          "name": "Manual",
          "description": "MANUAL corresponds to manual-only invoked triggers.",
          "value": "MANUAL"
        }
      ]
    },
    "google-native:cloudbuild/v1:TriggerIncludeBuildLogs": {
      "description": "If set to INCLUDE_BUILD_LOGS_WITH_STATUS, log url will be shown on GitHub page when build status is final. Setting this field to INCLUDE_BUILD_LOGS_WITH_STATUS for non GitHub triggers results in INVALID_ARGUMENT error.",
      "type": "string",
      "enum": [
        {
          "name": "IncludeBuildLogsUnspecified",
          "description": "Build logs will not be shown on GitHub.",
          "value": "INCLUDE_BUILD_LOGS_UNSPECIFIED"
        },
        {
          "name": "IncludeBuildLogsWithStatus",
          "description": "Build logs will be shown on GitHub.",
          "value": "INCLUDE_BUILD_LOGS_WITH_STATUS"
        }
      ]
    },
    "google-native:cloudbuild/v1:UploadedMavenArtifactResponse": {
      "description": "A Maven artifact uploaded using the MavenArtifact directive.",
      "properties": {
        "fileHashes": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:FileHashesResponse",
          "description": "Hash types and values of the Maven Artifact."
        },
        "pushTiming": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TimeSpanResponse",
          "description": "Stores timing information for pushing the specified artifact."
        },
        "uri": {
          "type": "string",
          "description": "URI of the uploaded artifact."
        }
      },
      "type": "object",
      "required": [
        "fileHashes",
        "pushTiming",
        "uri"
      ]
    },
    "google-native:cloudbuild/v1:UploadedNpmPackageResponse": {
      "description": "An npm package uploaded to Artifact Registry using the NpmPackage directive.",
      "properties": {
        "fileHashes": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:FileHashesResponse",
          "description": "Hash types and values of the npm package."
        },
        "pushTiming": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TimeSpanResponse",
          "description": "Stores timing information for pushing the specified artifact."
        },
        "uri": {
          "type": "string",
          "description": "URI of the uploaded npm package."
        }
      },
      "type": "object",
      "required": [
        "fileHashes",
        "pushTiming",
        "uri"
      ]
    },
    "google-native:cloudbuild/v1:UploadedPythonPackageResponse": {
      "description": "Artifact uploaded using the PythonPackage directive.",
      "properties": {
        "fileHashes": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:FileHashesResponse",
          "description": "Hash types and values of the Python Artifact."
        },
        "pushTiming": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TimeSpanResponse",
          "description": "Stores timing information for pushing the specified artifact."
        },
        "uri": {
          "type": "string",
          "description": "URI of the uploaded artifact."
        }
      },
      "type": "object",
      "required": [
        "fileHashes",
        "pushTiming",
        "uri"
      ]
    },
    "google-native:cloudbuild/v1:Volume": {
      "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps."
        },
        "path": {
          "type": "string",
          "description": "Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:VolumeResponse": {
      "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps."
        },
        "path": {
          "type": "string",
          "description": "Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths."
        }
      },
      "type": "object",
      "required": [
        "name",
        "path"
      ]
    },
    "google-native:cloudbuild/v1:WarningResponse": {
      "description": "A non-fatal problem encountered during the execution of the build.",
      "properties": {
        "priority": {
          "type": "string",
          "description": "The priority for this warning."
        },
        "text": {
          "type": "string",
          "description": "Explanation of the warning generated."
        }
      },
      "type": "object",
      "required": [
        "priority",
        "text"
      ]
    },
    "google-native:cloudbuild/v1:WebhookConfig": {
      "description": "WebhookConfig describes the configuration of a trigger that creates a build whenever a webhook is sent to a trigger's webhook URL.",
      "properties": {
        "secret": {
          "type": "string",
          "description": "Resource name for the secret required as a URL parameter."
        },
        "state": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:WebhookConfigState",
          "description": "Potential issues with the underlying Pub/Sub subscription configuration. Only populated on get requests."
        }
      },
      "type": "object",
      "required": [
        "secret"
      ]
    },
    "google-native:cloudbuild/v1:WebhookConfigResponse": {
      "description": "WebhookConfig describes the configuration of a trigger that creates a build whenever a webhook is sent to a trigger's webhook URL.",
      "properties": {
        "secret": {
          "type": "string",
          "description": "Resource name for the secret required as a URL parameter."
        },
        "state": {
          "type": "string",
          "description": "Potential issues with the underlying Pub/Sub subscription configuration. Only populated on get requests."
        }
      },
      "type": "object",
      "required": [
        "secret",
        "state"
      ]
    },
    "google-native:cloudbuild/v1:WebhookConfigState": {
      "description": "Potential issues with the underlying Pub/Sub subscription configuration. Only populated on get requests.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The webhook auth configuration not been checked.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Ok",
          "description": "The auth configuration is properly setup.",
          "value": "OK"
        },
        {
          "name": "SecretDeleted",
          "description": "The secret provided in auth_method has been deleted.",
          "value": "SECRET_DELETED"
        }
      ]
    },
    "google-native:cloudbuild/v1:WorkerConfig": {
      "description": "Defines the configuration to be used for creating workers in the pool.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See [Worker pool config file](https://cloud.google.com/build/docs/private-pools/worker-pool-config-file-schema). Specify a value of up to 2000. If `0` is specified, Cloud Build will use a standard disk size."
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of a worker, such as `e2-medium`. See [Worker pool config file](https://cloud.google.com/build/docs/private-pools/worker-pool-config-file-schema). If left blank, Cloud Build will use a sensible default."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1:WorkerConfigResponse": {
      "description": "Defines the configuration to be used for creating workers in the pool.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See [Worker pool config file](https://cloud.google.com/build/docs/private-pools/worker-pool-config-file-schema). Specify a value of up to 2000. If `0` is specified, Cloud Build will use a standard disk size."
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of a worker, such as `e2-medium`. See [Worker pool config file](https://cloud.google.com/build/docs/private-pools/worker-pool-config-file-schema). If left blank, Cloud Build will use a sensible default."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "machineType"
      ]
    },
    "google-native:cloudbuild/v1alpha1:Network": {
      "description": "Network describes the GCP network used to create workers in.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Network on which the workers are created. \"default\" network is used if empty."
        },
        "project": {
          "type": "string",
          "description": "Project id containing the defined network and subnetwork. For a peered VPC, this will be the same as the project_id in which the workers are created. For a shared VPC, this will be the project sharing the network with the project_id project in which workers will be created. For custom workers with no VPC, this will be the same as project_id."
        },
        "subnetwork": {
          "type": "string",
          "description": "Subnetwork on which the workers are created. \"default\" subnetwork is used if empty."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1alpha1:NetworkResponse": {
      "description": "Network describes the GCP network used to create workers in.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Network on which the workers are created. \"default\" network is used if empty."
        },
        "project": {
          "type": "string",
          "description": "Project id containing the defined network and subnetwork. For a peered VPC, this will be the same as the project_id in which the workers are created. For a shared VPC, this will be the project sharing the network with the project_id project in which workers will be created. For custom workers with no VPC, this will be the same as project_id."
        },
        "subnetwork": {
          "type": "string",
          "description": "Subnetwork on which the workers are created. \"default\" subnetwork is used if empty."
        }
      },
      "type": "object",
      "required": [
        "network",
        "project",
        "subnetwork"
      ]
    },
    "google-native:cloudbuild/v1alpha1:WorkerConfig": {
      "description": "WorkerConfig defines the configuration to be used for a creating workers in the pool.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See https://cloud.google.com/compute/docs/disks/ If `0` is specified, Cloud Build will use a standard disk size. `disk_size` is overridden if you specify a different disk size in `build_options`. In this case, a VM with a disk size specified in the `build_options` will be created on demand at build time. For more information see https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#buildoptions"
        },
        "machineType": {
          "type": "string",
          "description": "Machine Type of the worker, such as n1-standard-1. See https://cloud.google.com/compute/docs/machine-types. If left blank, Cloud Build will use a standard unspecified machine to create the worker pool. `machine_type` is overridden if you specify a different machine type in `build_options`. In this case, the VM specified in the `build_options` will be created on demand at build time. For more information see https://cloud.google.com/cloud-build/docs/speeding-up-builds#using_custom_virtual_machine_sizes"
        },
        "network": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1alpha1:Network",
          "description": "The network definition used to create the worker. If this section is left empty, the workers will be created in WorkerPool.project_id on the default network."
        },
        "tag": {
          "type": "string",
          "description": "The tag applied to the worker, and the same tag used by the firewall rule. It is used to identify the Cloud Build workers among other VMs. The default value for tag is `worker`."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1alpha1:WorkerConfigResponse": {
      "description": "WorkerConfig defines the configuration to be used for a creating workers in the pool.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See https://cloud.google.com/compute/docs/disks/ If `0` is specified, Cloud Build will use a standard disk size. `disk_size` is overridden if you specify a different disk size in `build_options`. In this case, a VM with a disk size specified in the `build_options` will be created on demand at build time. For more information see https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.builds#buildoptions"
        },
        "machineType": {
          "type": "string",
          "description": "Machine Type of the worker, such as n1-standard-1. See https://cloud.google.com/compute/docs/machine-types. If left blank, Cloud Build will use a standard unspecified machine to create the worker pool. `machine_type` is overridden if you specify a different machine type in `build_options`. In this case, the VM specified in the `build_options` will be created on demand at build time. For more information see https://cloud.google.com/cloud-build/docs/speeding-up-builds#using_custom_virtual_machine_sizes"
        },
        "network": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1alpha1:NetworkResponse",
          "description": "The network definition used to create the worker. If this section is left empty, the workers will be created in WorkerPool.project_id on the default network."
        },
        "tag": {
          "type": "string",
          "description": "The tag applied to the worker, and the same tag used by the firewall rule. It is used to identify the Cloud Build workers among other VMs. The default value for tag is `worker`."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "machineType",
        "network",
        "tag"
      ]
    },
    "google-native:cloudbuild/v1alpha1:WorkerPoolRegionsItem": {
      "type": "string",
      "enum": [
        {
          "name": "RegionUnspecified",
          "description": "no region",
          "value": "REGION_UNSPECIFIED"
        },
        {
          "name": "UsCentral1",
          "description": "us-central1 region",
          "value": "us-central1"
        },
        {
          "name": "UsWest1",
          "description": "us-west1 region",
          "value": "us-west1"
        },
        {
          "name": "UsEast1",
          "description": "us-east1 region",
          "value": "us-east1"
        },
        {
          "name": "UsEast4",
          "description": "us-east4 region",
          "value": "us-east4"
        }
      ]
    },
    "google-native:cloudbuild/v1alpha2:NetworkConfig": {
      "description": "Network describes the network configuration for a `WorkerPool`.",
      "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 default network. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number, such as `12345`, and {network} is the name of a VPC network in the project."
        }
      },
      "type": "object",
      "required": [
        "peeredNetwork"
      ]
    },
    "google-native:cloudbuild/v1alpha2:NetworkConfigResponse": {
      "description": "Network describes the network configuration for a `WorkerPool`.",
      "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 default network. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number, such as `12345`, and {network} is the name of a VPC network in the project."
        }
      },
      "type": "object",
      "required": [
        "peeredNetwork"
      ]
    },
    "google-native:cloudbuild/v1alpha2:WorkerConfig": {
      "description": "WorkerConfig defines the configuration to be used for a creating workers in the pool.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See https://cloud.google.com/compute/docs/disks/ If `0` is specified, Cloud Build will use a standard disk size."
        },
        "machineType": {
          "type": "string",
          "description": "Machine Type of the worker, such as n1-standard-1. See https://cloud.google.com/compute/docs/machine-types. If left blank, Cloud Build will use a standard unspecified machine to create the worker pool."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1alpha2:WorkerConfigResponse": {
      "description": "WorkerConfig defines the configuration to be used for a creating workers in the pool.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See https://cloud.google.com/compute/docs/disks/ If `0` is specified, Cloud Build will use a standard disk size."
        },
        "machineType": {
          "type": "string",
          "description": "Machine Type of the worker, such as n1-standard-1. See https://cloud.google.com/compute/docs/machine-types. If left blank, Cloud Build will use a standard unspecified machine to create the worker pool."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "machineType"
      ]
    },
    "google-native:cloudbuild/v1beta1:NetworkConfig": {
      "description": "Network describes the network configuration for a `WorkerPool`.",
      "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 `12345`, and `{network}` is the name of a VPC network in the project. See [Understanding network configuration options](https://cloud.google.com/cloud-build/docs/custom-workers/set-up-custom-worker-pool-environment#understanding_the_network_configuration_options)"
        }
      },
      "type": "object",
      "required": [
        "peeredNetwork"
      ]
    },
    "google-native:cloudbuild/v1beta1:NetworkConfigResponse": {
      "description": "Network describes the network configuration for a `WorkerPool`.",
      "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 `12345`, and `{network}` is the name of a VPC network in the project. See [Understanding network configuration options](https://cloud.google.com/cloud-build/docs/custom-workers/set-up-custom-worker-pool-environment#understanding_the_network_configuration_options)"
        }
      },
      "type": "object",
      "required": [
        "peeredNetwork"
      ]
    },
    "google-native:cloudbuild/v1beta1:WorkerConfig": {
      "description": "Defines the configuration to be used for creating workers in the pool.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See [Worker pool config file](https://cloud.google.com/cloud-build/docs/custom-workers/worker-pool-config-file). Specify a value of up to 1000. If `0` is specified, Cloud Build will use a standard disk size."
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of a worker, such as `n1-standard-1`. See [Worker pool config file](https://cloud.google.com/cloud-build/docs/custom-workers/worker-pool-config-file). If left blank, Cloud Build will use `n1-standard-1`."
        },
        "noExternalIp": {
          "type": "boolean",
          "description": "If true, workers are created without any public address, which prevents network egress to public IPs."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v1beta1:WorkerConfigResponse": {
      "description": "Defines the configuration to be used for creating workers in the pool.",
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See [Worker pool config file](https://cloud.google.com/cloud-build/docs/custom-workers/worker-pool-config-file). Specify a value of up to 1000. If `0` is specified, Cloud Build will use a standard disk size."
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of a worker, such as `n1-standard-1`. See [Worker pool config file](https://cloud.google.com/cloud-build/docs/custom-workers/worker-pool-config-file). If left blank, Cloud Build will use `n1-standard-1`."
        },
        "noExternalIp": {
          "type": "boolean",
          "description": "If true, workers are created without any public address, which prevents network egress to public IPs."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "machineType",
        "noExternalIp"
      ]
    },
    "google-native:cloudbuild/v2:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v2:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudbuild/v2:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v2:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudbuild/v2:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudbuild/v2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudbuild/v2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudbuild/v2:GitHubConfig": {
      "description": "Configuration for connections to github.com.",
      "properties": {
        "appInstallationId": {
          "type": "string",
          "description": "GitHub App installation id."
        },
        "authorizerCredential": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:OAuthCredential",
          "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v2:GitHubConfigResponse": {
      "description": "Configuration for connections to github.com.",
      "properties": {
        "appInstallationId": {
          "type": "string",
          "description": "GitHub App installation id."
        },
        "authorizerCredential": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:OAuthCredentialResponse",
          "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."
        }
      },
      "type": "object",
      "required": [
        "appInstallationId",
        "authorizerCredential"
      ]
    },
    "google-native:cloudbuild/v2:GoogleDevtoolsCloudbuildV2GitHubEnterpriseConfig": {
      "description": "Configuration for connections to an instance of GitHub Enterprise.",
      "properties": {
        "apiKey": {
          "type": "string",
          "description": "API Key used for authentication of webhook events."
        },
        "appId": {
          "type": "string",
          "description": "Id of the GitHub App created from the manifest."
        },
        "appInstallationId": {
          "type": "string",
          "description": "ID of the installation of the GitHub App."
        },
        "appSlug": {
          "type": "string",
          "description": "The URL-friendly name of the GitHub App."
        },
        "hostUri": {
          "type": "string",
          "description": "The URI of the GitHub Enterprise host this connection is for."
        },
        "privateKeySecretVersion": {
          "type": "string",
          "description": "SecretManager resource containing the private key of the GitHub App, formatted as `projects/*/secrets/*/versions/*`."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2ServiceDirectoryConfig",
          "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."
        },
        "sslCa": {
          "type": "string",
          "description": "SSL certificate to use for requests to GitHub Enterprise."
        },
        "webhookSecretSecretVersion": {
          "type": "string",
          "description": "SecretManager resource containing the webhook secret of the GitHub App, formatted as `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object",
      "required": [
        "apiKey",
        "hostUri"
      ]
    },
    "google-native:cloudbuild/v2:GoogleDevtoolsCloudbuildV2GitHubEnterpriseConfigResponse": {
      "description": "Configuration for connections to an instance of GitHub Enterprise.",
      "properties": {
        "apiKey": {
          "type": "string",
          "description": "API Key used for authentication of webhook events."
        },
        "appId": {
          "type": "string",
          "description": "Id of the GitHub App created from the manifest."
        },
        "appInstallationId": {
          "type": "string",
          "description": "ID of the installation of the GitHub App."
        },
        "appSlug": {
          "type": "string",
          "description": "The URL-friendly name of the GitHub App."
        },
        "hostUri": {
          "type": "string",
          "description": "The URI of the GitHub Enterprise host this connection is for."
        },
        "privateKeySecretVersion": {
          "type": "string",
          "description": "SecretManager resource containing the private key of the GitHub App, formatted as `projects/*/secrets/*/versions/*`."
        },
        "serverVersion": {
          "type": "string",
          "description": "GitHub Enterprise version installed at the host_uri."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2ServiceDirectoryConfigResponse",
          "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."
        },
        "sslCa": {
          "type": "string",
          "description": "SSL certificate to use for requests to GitHub Enterprise."
        },
        "webhookSecretSecretVersion": {
          "type": "string",
          "description": "SecretManager resource containing the webhook secret of the GitHub App, formatted as `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object",
      "required": [
        "apiKey",
        "appId",
        "appInstallationId",
        "appSlug",
        "hostUri",
        "privateKeySecretVersion",
        "serverVersion",
        "serviceDirectoryConfig",
        "sslCa",
        "webhookSecretSecretVersion"
      ]
    },
    "google-native:cloudbuild/v2:GoogleDevtoolsCloudbuildV2GitLabConfig": {
      "description": "Configuration for connections to gitlab.com or an instance of GitLab Enterprise.",
      "properties": {
        "authorizerCredential": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:UserCredential",
          "description": "A GitLab personal access token with the `api` scope access."
        },
        "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."
        },
        "readAuthorizerCredential": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:UserCredential",
          "description": "A GitLab personal access token with the minimum `read_api` scope access."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2ServiceDirectoryConfig",
          "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."
        },
        "sslCa": {
          "type": "string",
          "description": "SSL certificate to use for requests to GitLab Enterprise."
        },
        "webhookSecretSecretVersion": {
          "type": "string",
          "description": "Immutable. SecretManager resource containing the webhook secret of a GitLab Enterprise project, formatted as `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object",
      "required": [
        "authorizerCredential",
        "readAuthorizerCredential",
        "webhookSecretSecretVersion"
      ]
    },
    "google-native:cloudbuild/v2:GoogleDevtoolsCloudbuildV2GitLabConfigResponse": {
      "description": "Configuration for connections to gitlab.com or an instance of GitLab Enterprise.",
      "properties": {
        "authorizerCredential": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:UserCredentialResponse",
          "description": "A GitLab personal access token with the `api` scope access."
        },
        "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."
        },
        "readAuthorizerCredential": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:UserCredentialResponse",
          "description": "A GitLab personal access token with the minimum `read_api` scope access."
        },
        "serverVersion": {
          "type": "string",
          "description": "Version of the GitLab Enterprise server running on the `host_uri`."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2ServiceDirectoryConfigResponse",
          "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."
        },
        "sslCa": {
          "type": "string",
          "description": "SSL certificate to use for requests to GitLab Enterprise."
        },
        "webhookSecretSecretVersion": {
          "type": "string",
          "description": "Immutable. SecretManager resource containing the webhook secret of a GitLab Enterprise project, formatted as `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object",
      "required": [
        "authorizerCredential",
        "hostUri",
        "readAuthorizerCredential",
        "serverVersion",
        "serviceDirectoryConfig",
        "sslCa",
        "webhookSecretSecretVersion"
      ]
    },
    "google-native:cloudbuild/v2:GoogleDevtoolsCloudbuildV2ServiceDirectoryConfig": {
      "description": "ServiceDirectoryConfig represents Service Directory configuration for a connection.",
      "properties": {
        "service": {
          "type": "string",
          "description": "The Service Directory service name. Format: projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}."
        }
      },
      "type": "object",
      "required": [
        "service"
      ]
    },
    "google-native:cloudbuild/v2:GoogleDevtoolsCloudbuildV2ServiceDirectoryConfigResponse": {
      "description": "ServiceDirectoryConfig represents Service Directory configuration for a connection.",
      "properties": {
        "service": {
          "type": "string",
          "description": "The Service Directory service name. Format: projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}."
        }
      },
      "type": "object",
      "required": [
        "service"
      ]
    },
    "google-native:cloudbuild/v2:InstallationStateResponse": {
      "description": "Describes stage and necessary actions to be taken by the user to complete the installation. Used for GitHub and GitHub Enterprise based connections.",
      "properties": {
        "actionUri": {
          "type": "string",
          "description": "Link to follow for next action. Empty string if the installation is already complete."
        },
        "message": {
          "type": "string",
          "description": "Message of what the user should do next to continue the installation. Empty string if the installation is already complete."
        },
        "stage": {
          "type": "string",
          "description": "Current step of the installation process."
        }
      },
      "type": "object",
      "required": [
        "actionUri",
        "message",
        "stage"
      ]
    },
    "google-native:cloudbuild/v2:OAuthCredential": {
      "description": "Represents an OAuth token of the account that authorized the Connection, and associated metadata.",
      "properties": {
        "oauthTokenSecretVersion": {
          "type": "string",
          "description": "A SecretManager resource containing the OAuth token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object"
    },
    "google-native:cloudbuild/v2:OAuthCredentialResponse": {
      "description": "Represents an OAuth token of the account that authorized the Connection, and associated metadata.",
      "properties": {
        "oauthTokenSecretVersion": {
          "type": "string",
          "description": "A SecretManager resource containing the OAuth token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`."
        },
        "username": {
          "type": "string",
          "description": "The username associated to this token."
        }
      },
      "type": "object",
      "required": [
        "oauthTokenSecretVersion",
        "username"
      ]
    },
    "google-native:cloudbuild/v2:UserCredential": {
      "description": "Represents a personal access token that authorized the Connection, and associated metadata.",
      "properties": {
        "userTokenSecretVersion": {
          "type": "string",
          "description": "A SecretManager resource containing the user token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object",
      "required": [
        "userTokenSecretVersion"
      ]
    },
    "google-native:cloudbuild/v2:UserCredentialResponse": {
      "description": "Represents a personal access token that authorized the Connection, and associated metadata.",
      "properties": {
        "userTokenSecretVersion": {
          "type": "string",
          "description": "A SecretManager resource containing the user token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`."
        },
        "username": {
          "type": "string",
          "description": "The username associated to this token."
        }
      },
      "type": "object",
      "required": [
        "userTokenSecretVersion",
        "username"
      ]
    },
    "google-native:cloudchannel/v1:ChannelPartnerLinkLinkState": {
      "description": "Required. State of the channel partner link.",
      "type": "string",
      "enum": [
        {
          "name": "ChannelPartnerLinkStateUnspecified",
          "description": "Not used.",
          "value": "CHANNEL_PARTNER_LINK_STATE_UNSPECIFIED"
        },
        {
          "name": "Invited",
          "description": "An invitation has been sent to the reseller to create a channel partner link.",
          "value": "INVITED"
        },
        {
          "name": "Active",
          "description": "Status when the reseller is active.",
          "value": "ACTIVE"
        },
        {
          "name": "Revoked",
          "description": "Status when the reseller has been revoked by the distributor.",
          "value": "REVOKED"
        },
        {
          "name": "Suspended",
          "description": "Status when the reseller is suspended by Google or distributor.",
          "value": "SUSPENDED"
        }
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1AssociationInfo": {
      "description": "Association links that an entitlement has to other entitlements.",
      "properties": {
        "baseEntitlement": {
          "type": "string",
          "description": "The name of the base entitlement, for which this entitlement is an add-on."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1AssociationInfoResponse": {
      "description": "Association links that an entitlement has to other entitlements.",
      "properties": {
        "baseEntitlement": {
          "type": "string",
          "description": "The name of the base entitlement, for which this entitlement is an add-on."
        }
      },
      "type": "object",
      "required": [
        "baseEntitlement"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1CloudIdentityInfoResponse": {
      "description": "Cloud Identity information for the Cloud Channel Customer.",
      "properties": {
        "adminConsoleUri": {
          "type": "string",
          "description": "URI of Customer's Admin console dashboard."
        },
        "alternateEmail": {
          "type": "string",
          "description": "The alternate email."
        },
        "customerType": {
          "type": "string",
          "description": "CustomerType indicates verification type needed for using services."
        },
        "eduData": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1EduDataResponse",
          "description": "Edu information about the customer."
        },
        "isDomainVerified": {
          "type": "boolean",
          "description": "Whether the domain is verified. This field is not returned for a Customer's cloud_identity_info resource. Partners can use the domains.get() method of the Workspace SDK's Directory API, or listen to the PRIMARY_DOMAIN_VERIFIED Pub/Sub event in to track domain verification of their resolve Workspace customers."
        },
        "languageCode": {
          "type": "string",
          "description": "Language code."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone number associated with the Cloud Identity."
        },
        "primaryDomain": {
          "type": "string",
          "description": "The primary domain name."
        }
      },
      "type": "object",
      "required": [
        "adminConsoleUri",
        "alternateEmail",
        "customerType",
        "eduData",
        "isDomainVerified",
        "languageCode",
        "phoneNumber",
        "primaryDomain"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1CommitmentSettings": {
      "description": "Commitment settings for commitment-based offers.",
      "properties": {
        "renewalSettings": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RenewalSettings",
          "description": "Optional. Renewal settings applicable for a commitment-based Offer."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1CommitmentSettingsResponse": {
      "description": "Commitment settings for commitment-based offers.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Commitment end timestamp."
        },
        "renewalSettings": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RenewalSettingsResponse",
          "description": "Optional. Renewal settings applicable for a commitment-based Offer."
        },
        "startTime": {
          "type": "string",
          "description": "Commitment start timestamp."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "renewalSettings",
        "startTime"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1ConditionalOverride": {
      "description": "Specifies the override to conditionally apply.",
      "properties": {
        "adjustment": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingAdjustment",
          "description": "Information about the applied override's adjustment."
        },
        "rebillingBasis": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ConditionalOverrideRebillingBasis",
          "description": "The RebillingBasis to use for the applied override. Shows the relative cost based on your repricing costs."
        },
        "repricingCondition": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingCondition",
          "description": "Specifies the condition which, if met, will apply the override."
        }
      },
      "type": "object",
      "required": [
        "adjustment",
        "rebillingBasis",
        "repricingCondition"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1ConditionalOverrideRebillingBasis": {
      "description": "Required. The RebillingBasis to use for the applied override. Shows the relative cost based on your repricing costs.",
      "type": "string",
      "enum": [
        {
          "name": "RebillingBasisUnspecified",
          "description": "Not used.",
          "value": "REBILLING_BASIS_UNSPECIFIED"
        },
        {
          "name": "CostAtList",
          "description": "Use the list cost, also known as the MSRP.",
          "value": "COST_AT_LIST"
        },
        {
          "name": "DirectCustomerCost",
          "description": "Pass through all discounts except the Reseller Program Discount. If this is the default cost base and no adjustments are specified, the output cost will be exactly what the customer would see if they viewed the bill in the Google Cloud Console.",
          "value": "DIRECT_CUSTOMER_COST"
        }
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1ConditionalOverrideResponse": {
      "description": "Specifies the override to conditionally apply.",
      "properties": {
        "adjustment": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingAdjustmentResponse",
          "description": "Information about the applied override's adjustment."
        },
        "rebillingBasis": {
          "type": "string",
          "description": "The RebillingBasis to use for the applied override. Shows the relative cost based on your repricing costs."
        },
        "repricingCondition": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConditionResponse",
          "description": "Specifies the condition which, if met, will apply the override."
        }
      },
      "type": "object",
      "required": [
        "adjustment",
        "rebillingBasis",
        "repricingCondition"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1ContactInfo": {
      "description": "Contact information for a customer account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The customer account's contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer's username for those accounts. Use this email to invite Team customers."
        },
        "firstName": {
          "type": "string",
          "description": "The customer account contact's first name. Optional for Team customers."
        },
        "lastName": {
          "type": "string",
          "description": "The customer account contact's last name. Optional for Team customers."
        },
        "phone": {
          "type": "string",
          "description": "The customer account's contact phone number."
        },
        "title": {
          "type": "string",
          "description": "Optional. The customer account contact's job title."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1ContactInfoResponse": {
      "description": "Contact information for a customer account.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The customer account contact's display name, formatted as a combination of the customer's first and last name."
        },
        "email": {
          "type": "string",
          "description": "The customer account's contact email. Required for entitlements that create admin.google.com accounts, and serves as the customer's username for those accounts. Use this email to invite Team customers."
        },
        "firstName": {
          "type": "string",
          "description": "The customer account contact's first name. Optional for Team customers."
        },
        "lastName": {
          "type": "string",
          "description": "The customer account contact's last name. Optional for Team customers."
        },
        "phone": {
          "type": "string",
          "description": "The customer account's contact phone number."
        },
        "title": {
          "type": "string",
          "description": "Optional. The customer account contact's job title."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "email",
        "firstName",
        "lastName",
        "phone",
        "title"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1EduDataResponse": {
      "description": "Required Edu Attributes",
      "properties": {
        "instituteSize": {
          "type": "string",
          "description": "Size of the institute."
        },
        "instituteType": {
          "type": "string",
          "description": "Designated institute type of customer."
        },
        "website": {
          "type": "string",
          "description": "Web address for the edu customer's institution."
        }
      },
      "type": "object",
      "required": [
        "instituteSize",
        "instituteType",
        "website"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1Parameter": {
      "description": "Definition for extended entitlement parameters.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the parameter."
        },
        "value": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1Value",
          "description": "Value of the parameter."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1ParameterResponse": {
      "description": "Definition for extended entitlement parameters.",
      "properties": {
        "editable": {
          "type": "boolean",
          "description": "Specifies whether this parameter is allowed to be changed. For example, for a Google Workspace Business Starter entitlement in commitment plan, num_units is editable when entitlement is active."
        },
        "name": {
          "type": "string",
          "description": "Name of the parameter."
        },
        "value": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ValueResponse",
          "description": "Value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "editable",
        "name",
        "value"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1PercentageAdjustment": {
      "description": "An adjustment that applies a flat markup or markdown to an entire bill.",
      "properties": {
        "percentage": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleTypeDecimal",
          "description": "The percentage of the bill to adjust. For example: Mark down by 1% => \"-1.00\" Mark up by 1% => \"1.00\" Pass-Through => \"0.00\""
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1PercentageAdjustmentResponse": {
      "description": "An adjustment that applies a flat markup or markdown to an entire bill.",
      "properties": {
        "percentage": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleTypeDecimalResponse",
          "description": "The percentage of the bill to adjust. For example: Mark down by 1% => \"-1.00\" Mark up by 1% => \"1.00\" Pass-Through => \"0.00\""
        }
      },
      "type": "object",
      "required": [
        "percentage"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1Period": {
      "description": "Represents period in days/months/years.",
      "properties": {
        "duration": {
          "type": "integer",
          "description": "Total duration of Period Type defined."
        },
        "periodType": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1PeriodPeriodType",
          "description": "Period Type."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1PeriodPeriodType": {
      "description": "Period Type.",
      "type": "string",
      "enum": [
        {
          "name": "PeriodTypeUnspecified",
          "description": "Not used.",
          "value": "PERIOD_TYPE_UNSPECIFIED"
        },
        {
          "name": "Day",
          "description": "Day.",
          "value": "DAY"
        },
        {
          "name": "Month",
          "description": "Month.",
          "value": "MONTH"
        },
        {
          "name": "Year",
          "description": "Year.",
          "value": "YEAR"
        }
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1PeriodResponse": {
      "description": "Represents period in days/months/years.",
      "properties": {
        "duration": {
          "type": "integer",
          "description": "Total duration of Period Type defined."
        },
        "periodType": {
          "type": "string",
          "description": "Period Type."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "periodType"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1ProvisionedServiceResponse": {
      "description": "Service provisioned for an entitlement.",
      "properties": {
        "productId": {
          "type": "string",
          "description": "The product pertaining to the provisioning resource as specified in the Offer."
        },
        "provisioningId": {
          "type": "string",
          "description": "Provisioning ID of the entitlement. For Google Workspace, this is the underlying Subscription ID. For Google Cloud, this is the Billing Account ID of the billing subaccount."
        },
        "skuId": {
          "type": "string",
          "description": "The SKU pertaining to the provisioning resource as specified in the Offer."
        }
      },
      "type": "object",
      "required": [
        "productId",
        "provisioningId",
        "skuId"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RenewalSettings": {
      "description": "Renewal settings for renewable Offers.",
      "properties": {
        "enableRenewal": {
          "type": "boolean",
          "description": "If false, the plan will be completed at the end date."
        },
        "paymentCycle": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1Period",
          "description": "Describes how frequently the reseller will be billed, such as once per month."
        },
        "paymentPlan": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RenewalSettingsPaymentPlan",
          "description": "Describes how a reseller will be billed."
        },
        "resizeUnitCount": {
          "type": "boolean",
          "description": "If true and enable_renewal = true, the unit (for example seats or licenses) will be set to the number of active units at renewal time."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RenewalSettingsPaymentPlan": {
      "description": "Describes how a reseller will be billed.",
      "type": "string",
      "enum": [
        {
          "name": "PaymentPlanUnspecified",
          "description": "Not used.",
          "value": "PAYMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "Commitment",
          "description": "Commitment.",
          "value": "COMMITMENT"
        },
        {
          "name": "Flexible",
          "description": "No commitment.",
          "value": "FLEXIBLE"
        },
        {
          "name": "Free",
          "description": "Free.",
          "value": "FREE"
        },
        {
          "name": "Trial",
          "description": "Trial.",
          "value": "TRIAL"
        },
        {
          "name": "Offline",
          "description": "Price and ordering not available through API.",
          "value": "OFFLINE"
        }
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RenewalSettingsResponse": {
      "description": "Renewal settings for renewable Offers.",
      "properties": {
        "enableRenewal": {
          "type": "boolean",
          "description": "If false, the plan will be completed at the end date."
        },
        "paymentCycle": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1PeriodResponse",
          "description": "Describes how frequently the reseller will be billed, such as once per month."
        },
        "paymentPlan": {
          "type": "string",
          "description": "Describes how a reseller will be billed."
        },
        "resizeUnitCount": {
          "type": "boolean",
          "description": "If true and enable_renewal = true, the unit (for example seats or licenses) will be set to the number of active units at renewal time."
        }
      },
      "type": "object",
      "required": [
        "enableRenewal",
        "paymentCycle",
        "paymentPlan",
        "resizeUnitCount"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingAdjustment": {
      "description": "A type that represents the various adjustments you can apply to a bill.",
      "properties": {
        "percentageAdjustment": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1PercentageAdjustment",
          "description": "Flat markup or markdown on an entire bill."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingAdjustmentResponse": {
      "description": "A type that represents the various adjustments you can apply to a bill.",
      "properties": {
        "percentageAdjustment": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1PercentageAdjustmentResponse",
          "description": "Flat markup or markdown on an entire bill."
        }
      },
      "type": "object",
      "required": [
        "percentageAdjustment"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingCondition": {
      "description": "Represents the various repricing conditions you can use for a conditional override.",
      "properties": {
        "skuGroupCondition": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1SkuGroupCondition",
          "description": "SKU Group condition for override."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingConditionResponse": {
      "description": "Represents the various repricing conditions you can use for a conditional override.",
      "properties": {
        "skuGroupCondition": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1SkuGroupConditionResponse",
          "description": "SKU Group condition for override."
        }
      },
      "type": "object",
      "required": [
        "skuGroupCondition"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingConfig": {
      "description": "Configuration for repricing a Google bill over a period of time.",
      "properties": {
        "adjustment": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingAdjustment",
          "description": "Information about the adjustment."
        },
        "channelPartnerGranularity": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigChannelPartnerGranularity",
          "description": "Applies the repricing configuration at the channel partner level. Only ChannelPartnerRepricingConfig supports this value. Deprecated: This is no longer supported. Use RepricingConfig.entitlement_granularity instead.",
          "deprecationMessage": "Applies the repricing configuration at the channel partner level. Only ChannelPartnerRepricingConfig supports this value. Deprecated: This is no longer supported. Use RepricingConfig.entitlement_granularity instead."
        },
        "conditionalOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ConditionalOverride"
          },
          "description": "The conditional overrides to apply for this configuration. If you list multiple overrides, only the first valid override is used. If you don't list any overrides, the API uses the normal adjustment and rebilling basis."
        },
        "effectiveInvoiceMonth": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleTypeDate",
          "description": "The YearMonth when these adjustments activate. The Day field needs to be \"0\" since we only accept YearMonth repricing boundaries."
        },
        "entitlementGranularity": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigEntitlementGranularity",
          "description": "Applies the repricing configuration at the entitlement level. Note: If a ChannelPartnerRepricingConfig using RepricingConfig.EntitlementGranularity becomes effective, then no existing or future RepricingConfig.ChannelPartnerGranularity will apply to the RepricingConfig.EntitlementGranularity.entitlement. This is the recommended value for both CustomerRepricingConfig and ChannelPartnerRepricingConfig."
        },
        "rebillingBasis": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigRebillingBasis",
          "description": "The RebillingBasis to use for this bill. Specifies the relative cost based on repricing costs you will apply."
        }
      },
      "type": "object",
      "required": [
        "adjustment",
        "effectiveInvoiceMonth",
        "rebillingBasis"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingConfigChannelPartnerGranularity": {
      "description": "Applies the repricing configuration at the channel partner level. The channel partner value is derived from the resource name. Takes an empty json object. Deprecated: This is no longer supported. Use RepricingConfig.EntitlementGranularity instead.",
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingConfigChannelPartnerGranularityResponse": {
      "description": "Applies the repricing configuration at the channel partner level. The channel partner value is derived from the resource name. Takes an empty json object. Deprecated: This is no longer supported. Use RepricingConfig.EntitlementGranularity instead.",
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingConfigEntitlementGranularity": {
      "description": "Applies the repricing configuration at the entitlement level.",
      "properties": {
        "entitlement": {
          "type": "string",
          "description": "Resource name of the entitlement. Format: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}"
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingConfigEntitlementGranularityResponse": {
      "description": "Applies the repricing configuration at the entitlement level.",
      "properties": {
        "entitlement": {
          "type": "string",
          "description": "Resource name of the entitlement. Format: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}"
        }
      },
      "type": "object",
      "required": [
        "entitlement"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingConfigRebillingBasis": {
      "description": "Required. The RebillingBasis to use for this bill. Specifies the relative cost based on repricing costs you will apply.",
      "type": "string",
      "enum": [
        {
          "name": "RebillingBasisUnspecified",
          "description": "Not used.",
          "value": "REBILLING_BASIS_UNSPECIFIED"
        },
        {
          "name": "CostAtList",
          "description": "Use the list cost, also known as the MSRP.",
          "value": "COST_AT_LIST"
        },
        {
          "name": "DirectCustomerCost",
          "description": "Pass through all discounts except the Reseller Program Discount. If this is the default cost base and no adjustments are specified, the output cost will be exactly what the customer would see if they viewed the bill in the Google Cloud Console.",
          "value": "DIRECT_CUSTOMER_COST"
        }
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1RepricingConfigResponse": {
      "description": "Configuration for repricing a Google bill over a period of time.",
      "properties": {
        "adjustment": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingAdjustmentResponse",
          "description": "Information about the adjustment."
        },
        "channelPartnerGranularity": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigChannelPartnerGranularityResponse",
          "description": "Applies the repricing configuration at the channel partner level. Only ChannelPartnerRepricingConfig supports this value. Deprecated: This is no longer supported. Use RepricingConfig.entitlement_granularity instead.",
          "deprecationMessage": "Applies the repricing configuration at the channel partner level. Only ChannelPartnerRepricingConfig supports this value. Deprecated: This is no longer supported. Use RepricingConfig.entitlement_granularity instead."
        },
        "conditionalOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ConditionalOverrideResponse"
          },
          "description": "The conditional overrides to apply for this configuration. If you list multiple overrides, only the first valid override is used. If you don't list any overrides, the API uses the normal adjustment and rebilling basis."
        },
        "effectiveInvoiceMonth": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleTypeDateResponse",
          "description": "The YearMonth when these adjustments activate. The Day field needs to be \"0\" since we only accept YearMonth repricing boundaries."
        },
        "entitlementGranularity": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigEntitlementGranularityResponse",
          "description": "Applies the repricing configuration at the entitlement level. Note: If a ChannelPartnerRepricingConfig using RepricingConfig.EntitlementGranularity becomes effective, then no existing or future RepricingConfig.ChannelPartnerGranularity will apply to the RepricingConfig.EntitlementGranularity.entitlement. This is the recommended value for both CustomerRepricingConfig and ChannelPartnerRepricingConfig."
        },
        "rebillingBasis": {
          "type": "string",
          "description": "The RebillingBasis to use for this bill. Specifies the relative cost based on repricing costs you will apply."
        }
      },
      "type": "object",
      "required": [
        "adjustment",
        "channelPartnerGranularity",
        "conditionalOverrides",
        "effectiveInvoiceMonth",
        "entitlementGranularity",
        "rebillingBasis"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1SkuGroupCondition": {
      "description": "A condition that applies the override if a line item SKU is found in the SKU group.",
      "properties": {
        "skuGroup": {
          "type": "string",
          "description": "Specifies a SKU group (https://cloud.google.com/skus/sku-groups). Resource name of SKU group. Format: accounts/{account}/skuGroups/{sku_group}. Example: \"accounts/C01234/skuGroups/3d50fd57-3157-4577-a5a9-a219b8490041\"."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1SkuGroupConditionResponse": {
      "description": "A condition that applies the override if a line item SKU is found in the SKU group.",
      "properties": {
        "skuGroup": {
          "type": "string",
          "description": "Specifies a SKU group (https://cloud.google.com/skus/sku-groups). Resource name of SKU group. Format: accounts/{account}/skuGroups/{sku_group}. Example: \"accounts/C01234/skuGroups/3d50fd57-3157-4577-a5a9-a219b8490041\"."
        }
      },
      "type": "object",
      "required": [
        "skuGroup"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1TrialSettingsResponse": {
      "description": "Settings for trial offers.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Date when the trial ends. The value is in milliseconds using the UNIX Epoch format. See an example [Epoch converter](https://www.epochconverter.com)."
        },
        "trial": {
          "type": "boolean",
          "description": "Determines if the entitlement is in a trial or not: * `true` - The entitlement is in trial. * `false` - The entitlement is not in trial."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "trial"
      ]
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1Value": {
      "description": "Data type and value of a parameter.",
      "properties": {
        "boolValue": {
          "type": "boolean",
          "description": "Represents a boolean value."
        },
        "doubleValue": {
          "type": "number",
          "description": "Represents a double value."
        },
        "int64Value": {
          "type": "string",
          "description": "Represents an int64 value."
        },
        "protoValue": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Represents an 'Any' proto value."
        },
        "stringValue": {
          "type": "string",
          "description": "Represents a string value."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleCloudChannelV1ValueResponse": {
      "description": "Data type and value of a parameter.",
      "properties": {
        "boolValue": {
          "type": "boolean",
          "description": "Represents a boolean value."
        },
        "doubleValue": {
          "type": "number",
          "description": "Represents a double value."
        },
        "int64Value": {
          "type": "string",
          "description": "Represents an int64 value."
        },
        "protoValue": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Represents an 'Any' proto value."
        },
        "stringValue": {
          "type": "string",
          "description": "Represents a string value."
        }
      },
      "type": "object",
      "required": [
        "boolValue",
        "doubleValue",
        "int64Value",
        "protoValue",
        "stringValue"
      ]
    },
    "google-native:cloudchannel/v1:GoogleTypeDate": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:cloudchannel/v1:GoogleTypeDecimal": {
      "description": "A representation of a decimal value, such as 2.5. Clients may convert values into language-native decimal formats, such as Java's BigDecimal or Python's decimal.Decimal. [BigDecimal]: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html [decimal.Decimal]: https://docs.python.org/3/library/decimal.html",
      "properties": {
        "value": {
          "type": "string",
          "description": "The decimal value, as a string. The string representation consists of an optional sign, `+` (`U+002B`) or `-` (`U+002D`), followed by a sequence of zero or more decimal digits (\"the integer\"), optionally followed by a fraction, optionally followed by an exponent. An empty string **should** be interpreted as `0`. The fraction consists of a decimal point followed by zero or more decimal digits. The string must contain at least one digit in either the integer or the fraction. The number formed by the sign, the integer and the fraction is referred to as the significand. The exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`) followed by one or more decimal digits. Services **should** normalize decimal values before storing them by: - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`). - Replacing a zero-length integer value with `0` (`.5` -> `0.5`). - Coercing the exponent character to upper-case, with explicit sign (`2.5e8` -> `2.5E+8`). - Removing an explicitly-provided zero exponent (`2.5E0` -> `2.5`). Services **may** perform additional normalization based on its own needs and the internal decimal implementation selected, such as shifting the decimal point and exponent value together (example: `2.5E-1` <-> `0.25`). Additionally, services **may** preserve trailing zeroes in the fraction to indicate increased precision, but are not required to do so. Note that only the `.` character is supported to divide the integer and the fraction; `,` **should not** be supported regardless of locale. Additionally, thousand separators **should not** be supported. If a service does support them, values **must** be normalized. The ENBF grammar is: DecimalString = '' | [Sign] Significand [Exponent]; Sign = '+' | '-'; Significand = Digits '.' | [Digits] '.' Digits; Exponent = ('e' | 'E') [Sign] Digits; Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' }; Services **should** clearly document the range of supported values, the maximum supported precision (total number of digits), and, if applicable, the scale (number of digits after the decimal point), as well as how it behaves when receiving out-of-bounds values. Services **may** choose to accept values passed as input even when the value has a higher precision or scale than the service supports, and **should** round the value to fit the supported scale. Alternatively, the service **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if precision would be lost. Services **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if the service receives a value outside of the supported range."
        }
      },
      "type": "object"
    },
    "google-native:cloudchannel/v1:GoogleTypeDecimalResponse": {
      "description": "A representation of a decimal value, such as 2.5. Clients may convert values into language-native decimal formats, such as Java's BigDecimal or Python's decimal.Decimal. [BigDecimal]: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html [decimal.Decimal]: https://docs.python.org/3/library/decimal.html",
      "properties": {
        "value": {
          "type": "string",
          "description": "The decimal value, as a string. The string representation consists of an optional sign, `+` (`U+002B`) or `-` (`U+002D`), followed by a sequence of zero or more decimal digits (\"the integer\"), optionally followed by a fraction, optionally followed by an exponent. An empty string **should** be interpreted as `0`. The fraction consists of a decimal point followed by zero or more decimal digits. The string must contain at least one digit in either the integer or the fraction. The number formed by the sign, the integer and the fraction is referred to as the significand. The exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`) followed by one or more decimal digits. Services **should** normalize decimal values before storing them by: - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`). - Replacing a zero-length integer value with `0` (`.5` -> `0.5`). - Coercing the exponent character to upper-case, with explicit sign (`2.5e8` -> `2.5E+8`). - Removing an explicitly-provided zero exponent (`2.5E0` -> `2.5`). Services **may** perform additional normalization based on its own needs and the internal decimal implementation selected, such as shifting the decimal point and exponent value together (example: `2.5E-1` <-> `0.25`). Additionally, services **may** preserve trailing zeroes in the fraction to indicate increased precision, but are not required to do so. Note that only the `.` character is supported to divide the integer and the fraction; `,` **should not** be supported regardless of locale. Additionally, thousand separators **should not** be supported. If a service does support them, values **must** be normalized. The ENBF grammar is: DecimalString = '' | [Sign] Significand [Exponent]; Sign = '+' | '-'; Significand = Digits '.' | [Digits] '.' Digits; Exponent = ('e' | 'E') [Sign] Digits; Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' }; Services **should** clearly document the range of supported values, the maximum supported precision (total number of digits), and, if applicable, the scale (number of digits after the decimal point), as well as how it behaves when receiving out-of-bounds values. Services **may** choose to accept values passed as input even when the value has a higher precision or scale than the service supports, and **should** round the value to fit the supported scale. Alternatively, the service **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if precision would be lost. Services **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if the service receives a value outside of the supported range."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:cloudchannel/v1:GoogleTypePostalAddress": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "regionCode"
      ]
    },
    "google-native:cloudchannel/v1:GoogleTypePostalAddressResponse": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "addressLines",
        "administrativeArea",
        "languageCode",
        "locality",
        "organization",
        "postalCode",
        "recipients",
        "regionCode",
        "revision",
        "sortingCode",
        "sublocality"
      ]
    },
    "google-native:clouddeploy/v1:AdvanceChildRolloutJobResponse": {
      "description": "An advanceChildRollout Job.",
      "type": "object"
    },
    "google-native:clouddeploy/v1:AdvanceRolloutRule": {
      "description": "The `AdvanceRollout` automation rule will automatically advance a successful Rollout to the next phase.",
      "properties": {
        "id": {
          "type": "string",
          "description": "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}`."
        },
        "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]([a-z0-9-]{0,61}[a-z0-9])?$`."
        },
        "wait": {
          "type": "string",
          "description": "Optional. How long to wait after a rollout is finished."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:clouddeploy/v1:AdvanceRolloutRuleResponse": {
      "description": "The `AdvanceRollout` automation rule will automatically advance a successful Rollout to the next phase.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationRuleConditionResponse",
          "description": "Information around the state of the Automation rule."
        },
        "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]([a-z0-9-]{0,61}[a-z0-9])?$`."
        },
        "wait": {
          "type": "string",
          "description": "Optional. How long to wait after a rollout is finished."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "sourcePhases",
        "wait"
      ]
    },
    "google-native:clouddeploy/v1:AnthosCluster": {
      "description": "Information specifying an Anthos Cluster.",
      "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}`."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:AnthosClusterResponse": {
      "description": "Information specifying an Anthos Cluster.",
      "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}`."
        }
      },
      "type": "object",
      "required": [
        "membership"
      ]
    },
    "google-native:clouddeploy/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:clouddeploy/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:clouddeploy/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:clouddeploy/v1:AutomationResourceSelector": {
      "description": "AutomationResourceSelector contains the information to select the resources to which an Automation is going to be applied.",
      "properties": {
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:TargetAttribute"
          },
          "description": "Contains attributes about a target."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:AutomationResourceSelectorResponse": {
      "description": "AutomationResourceSelector contains the information to select the resources to which an Automation is going to be applied.",
      "properties": {
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:TargetAttributeResponse"
          },
          "description": "Contains attributes about a target."
        }
      },
      "type": "object",
      "required": [
        "targets"
      ]
    },
    "google-native:clouddeploy/v1:AutomationRolloutMetadataResponse": {
      "description": "AutomationRolloutMetadata contains Automation-related actions that were performed on a rollout.",
      "properties": {
        "advanceAutomationRuns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs of the AutomationRuns initiated by an advance rollout rule."
        },
        "promoteAutomationRun": {
          "type": "string",
          "description": "The ID of the AutomationRun initiated by a promote release rule."
        },
        "repairAutomationRuns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs of the AutomationRuns initiated by a repair rollout rule."
        }
      },
      "type": "object",
      "required": [
        "advanceAutomationRuns",
        "promoteAutomationRun",
        "repairAutomationRuns"
      ]
    },
    "google-native:clouddeploy/v1:AutomationRule": {
      "description": "`AutomationRule` defines the automation activities.",
      "properties": {
        "advanceRolloutRule": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AdvanceRolloutRule",
          "description": "Optional. The `AdvanceRolloutRule` will automatically advance a successful Rollout."
        },
        "promoteReleaseRule": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PromoteReleaseRule",
          "description": "Optional. `PromoteReleaseRule` will automatically promote a release from the current target to a specified target."
        },
        "repairRolloutRule": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:RepairRolloutRule",
          "description": "Optional. The `RepairRolloutRule` will automatically repair a failed rollout."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:AutomationRuleConditionResponse": {
      "description": "`AutomationRuleCondition` contains conditions relevant to an `Automation` rule.",
      "properties": {
        "targetsPresentCondition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:TargetsPresentConditionResponse",
          "description": "Optional. Details around targets enumerated in the rule."
        }
      },
      "type": "object",
      "required": [
        "targetsPresentCondition"
      ]
    },
    "google-native:clouddeploy/v1:AutomationRuleResponse": {
      "description": "`AutomationRule` defines the automation activities.",
      "properties": {
        "advanceRolloutRule": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AdvanceRolloutRuleResponse",
          "description": "Optional. The `AdvanceRolloutRule` will automatically advance a successful Rollout."
        },
        "promoteReleaseRule": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PromoteReleaseRuleResponse",
          "description": "Optional. `PromoteReleaseRule` will automatically promote a release from the current target to a specified target."
        },
        "repairRolloutRule": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:RepairRolloutRuleResponse",
          "description": "Optional. The `RepairRolloutRule` will automatically repair a failed rollout."
        }
      },
      "type": "object",
      "required": [
        "advanceRolloutRule",
        "promoteReleaseRule",
        "repairRolloutRule"
      ]
    },
    "google-native:clouddeploy/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:clouddeploy/v1:BuildArtifact": {
      "description": "Description of an a image to use during Skaffold rendering.",
      "properties": {
        "image": {
          "type": "string",
          "description": "Image name in Skaffold configuration."
        },
        "tag": {
          "type": "string",
          "description": "Image tag to use. This will generally be the full path to an image, such as \"gcr.io/my-project/busybox:1.2.3\" or \"gcr.io/my-project/busybox@sha256:abc123\"."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:BuildArtifactResponse": {
      "description": "Description of an a image to use during Skaffold rendering.",
      "properties": {
        "image": {
          "type": "string",
          "description": "Image name in Skaffold configuration."
        },
        "tag": {
          "type": "string",
          "description": "Image tag to use. This will generally be the full path to an image, such as \"gcr.io/my-project/busybox:1.2.3\" or \"gcr.io/my-project/busybox@sha256:abc123\"."
        }
      },
      "type": "object",
      "required": [
        "image",
        "tag"
      ]
    },
    "google-native:clouddeploy/v1:Canary": {
      "description": "Canary represents the canary deployment strategy.",
      "properties": {
        "canaryDeployment": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CanaryDeployment",
          "description": "Configures the progressive based deployment for a Target."
        },
        "customCanaryDeployment": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CustomCanaryDeployment",
          "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."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:RuntimeConfig",
          "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."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:CanaryDeployment": {
      "description": "CanaryDeployment represents the canary deployment configuration",
      "properties": {
        "percentages": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "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 <= n < 100."
        },
        "postdeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Postdeploy",
          "description": "Optional. Configuration for the postdeploy job of the last phase. If this is not configured, there will be no postdeploy job for this phase."
        },
        "predeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Predeploy",
          "description": "Optional. Configuration for the predeploy job of the first phase. If this is not configured, there will be no predeploy job for this phase."
        },
        "verify": {
          "type": "boolean",
          "description": "Whether to run verify tests after each percentage deployment."
        }
      },
      "type": "object",
      "required": [
        "percentages"
      ]
    },
    "google-native:clouddeploy/v1:CanaryDeploymentResponse": {
      "description": "CanaryDeployment represents the canary deployment configuration",
      "properties": {
        "percentages": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "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 <= n < 100."
        },
        "postdeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PostdeployResponse",
          "description": "Optional. Configuration for the postdeploy job of the last phase. If this is not configured, there will be no postdeploy job for this phase."
        },
        "predeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PredeployResponse",
          "description": "Optional. Configuration for the predeploy job of the first phase. If this is not configured, there will be no predeploy job for this phase."
        },
        "verify": {
          "type": "boolean",
          "description": "Whether to run verify tests after each percentage deployment."
        }
      },
      "type": "object",
      "required": [
        "percentages",
        "postdeploy",
        "predeploy",
        "verify"
      ]
    },
    "google-native:clouddeploy/v1:CanaryResponse": {
      "description": "Canary represents the canary deployment strategy.",
      "properties": {
        "canaryDeployment": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CanaryDeploymentResponse",
          "description": "Configures the progressive based deployment for a Target."
        },
        "customCanaryDeployment": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CustomCanaryDeploymentResponse",
          "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."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:RuntimeConfigResponse",
          "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."
        }
      },
      "type": "object",
      "required": [
        "canaryDeployment",
        "customCanaryDeployment",
        "runtimeConfig"
      ]
    },
    "google-native:clouddeploy/v1:ChildRolloutJobsResponse": {
      "description": "ChildRollouts job composition",
      "properties": {
        "advanceRolloutJobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:JobResponse"
          },
          "description": "List of AdvanceChildRolloutJobs"
        },
        "createRolloutJobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:JobResponse"
          },
          "description": "List of CreateChildRolloutJobs"
        }
      },
      "type": "object",
      "required": [
        "advanceRolloutJobs",
        "createRolloutJobs"
      ]
    },
    "google-native:clouddeploy/v1:CloudRunConfig": {
      "description": "CloudRunConfig contains the Cloud Run runtime configuration.",
      "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."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:CloudRunConfigResponse": {
      "description": "CloudRunConfig contains the Cloud Run runtime configuration.",
      "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."
        }
      },
      "type": "object",
      "required": [
        "automaticTrafficControl"
      ]
    },
    "google-native:clouddeploy/v1:CloudRunLocation": {
      "description": "Information specifying where to deploy a Cloud Run Service.",
      "properties": {
        "location": {
          "type": "string",
          "description": "The location for the Cloud Run Service. Format must be `projects/{project}/locations/{location}`."
        }
      },
      "type": "object",
      "required": [
        "location"
      ]
    },
    "google-native:clouddeploy/v1:CloudRunLocationResponse": {
      "description": "Information specifying where to deploy a Cloud Run Service.",
      "properties": {
        "location": {
          "type": "string",
          "description": "The location for the Cloud Run Service. Format must be `projects/{project}/locations/{location}`."
        }
      },
      "type": "object",
      "required": [
        "location"
      ]
    },
    "google-native:clouddeploy/v1:CloudRunMetadataResponse": {
      "description": "CloudRunMetadata contains information from a Cloud Run deployment.",
      "properties": {
        "job": {
          "type": "string",
          "description": "The name of the Cloud Run job that is associated with a `Rollout`. Format is `projects/{project}/locations/{location}/jobs/{job_name}`."
        },
        "revision": {
          "type": "string",
          "description": "The Cloud Run Revision id associated with a `Rollout`."
        },
        "service": {
          "type": "string",
          "description": "The name of the Cloud Run Service that is associated with a `Rollout`. Format is `projects/{project}/locations/{location}/services/{service}`."
        },
        "serviceUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Cloud Run Service urls that are associated with a `Rollout`."
        }
      },
      "type": "object",
      "required": [
        "job",
        "revision",
        "service",
        "serviceUrls"
      ]
    },
    "google-native:clouddeploy/v1:CreateChildRolloutJobResponse": {
      "description": "A createChildRollout Job.",
      "type": "object"
    },
    "google-native:clouddeploy/v1:CustomCanaryDeployment": {
      "description": "CustomCanaryDeployment represents the custom canary deployment configuration.",
      "properties": {
        "phaseConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:PhaseConfig"
          },
          "description": "Configuration for each phase in the canary deployment in the order executed."
        }
      },
      "type": "object",
      "required": [
        "phaseConfigs"
      ]
    },
    "google-native:clouddeploy/v1:CustomCanaryDeploymentResponse": {
      "description": "CustomCanaryDeployment represents the custom canary deployment configuration.",
      "properties": {
        "phaseConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:PhaseConfigResponse"
          },
          "description": "Configuration for each phase in the canary deployment in the order executed."
        }
      },
      "type": "object",
      "required": [
        "phaseConfigs"
      ]
    },
    "google-native:clouddeploy/v1:DefaultPool": {
      "description": "Execution using the default Cloud Build pool.",
      "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:DefaultPoolResponse": {
      "description": "Execution using the default Cloud Build pool.",
      "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "artifactStorage",
        "serviceAccount"
      ]
    },
    "google-native:clouddeploy/v1:DeliveryPipelineResponse": {
      "description": "A `DeliveryPipeline` resource in the Cloud Deploy API. A `DeliveryPipeline` defines a pipeline through which a Skaffold configuration can progress.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy."
        },
        "condition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PipelineConditionResponse",
          "description": "Information around the state of the Delivery Pipeline."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the pipeline was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the `DeliveryPipeline`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `DeliveryPipeline`. Format is `projects/{project}/locations/{location}/deliveryPipelines/a-z{0,62}`."
        },
        "serialPipeline": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:SerialPipelineResponse",
          "description": "SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`."
        },
        "suspended": {
          "type": "boolean",
          "description": "When suspended, no new releases or rollouts can be created, but in-progress ones will complete."
        },
        "uid": {
          "type": "string",
          "description": "Unique identifier of the `DeliveryPipeline`."
        },
        "updateTime": {
          "type": "string",
          "description": "Most recent time at which the pipeline was updated."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "condition",
        "createTime",
        "description",
        "etag",
        "labels",
        "name",
        "serialPipeline",
        "suspended",
        "uid",
        "updateTime"
      ]
    },
    "google-native:clouddeploy/v1:DeployJobResponse": {
      "description": "A deploy Job.",
      "type": "object"
    },
    "google-native:clouddeploy/v1:DeployParameters": {
      "description": "DeployParameters contains deploy parameters information.",
      "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)."
        },
        "values": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Values are deploy parameters in key-value pairs."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:clouddeploy/v1:DeployParametersResponse": {
      "description": "DeployParameters contains deploy parameters information.",
      "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)."
        },
        "values": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Values are deploy parameters in key-value pairs."
        }
      },
      "type": "object",
      "required": [
        "matchTargetLabels",
        "values"
      ]
    },
    "google-native:clouddeploy/v1:DeploymentJobsResponse": {
      "description": "Deployment job composition.",
      "properties": {
        "deployJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:JobResponse",
          "description": "The deploy Job. This is the deploy job in the phase."
        },
        "postdeployJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:JobResponse",
          "description": "The postdeploy Job, which is the last job on the phase."
        },
        "predeployJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:JobResponse",
          "description": "The predeploy Job, which is the first job on the phase."
        },
        "verifyJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:JobResponse",
          "description": "The verify Job. Runs after a deploy if the deploy succeeds."
        }
      },
      "type": "object",
      "required": [
        "deployJob",
        "postdeployJob",
        "predeployJob",
        "verifyJob"
      ]
    },
    "google-native:clouddeploy/v1:ExecutionConfig": {
      "description": "Configuration of the environment to use when calling Skaffold.",
      "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."
        },
        "defaultPool": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:DefaultPool",
          "description": "Optional. Use default Cloud Build pool."
        },
        "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."
        },
        "privatePool": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PrivatePool",
          "description": "Optional. Use private Cloud Build pool."
        },
        "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."
        },
        "usages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:ExecutionConfigUsagesItem"
          },
          "description": "Usages when this configuration should be applied."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "usages"
      ]
    },
    "google-native:clouddeploy/v1:ExecutionConfigResponse": {
      "description": "Configuration of the environment to use when calling Skaffold.",
      "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."
        },
        "defaultPool": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:DefaultPoolResponse",
          "description": "Optional. Use default Cloud Build pool."
        },
        "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."
        },
        "privatePool": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PrivatePoolResponse",
          "description": "Optional. Use private Cloud Build pool."
        },
        "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."
        },
        "usages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Usages when this configuration should be applied."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "artifactStorage",
        "defaultPool",
        "executionTimeout",
        "privatePool",
        "serviceAccount",
        "usages",
        "workerPool"
      ]
    },
    "google-native:clouddeploy/v1:ExecutionConfigUsagesItem": {
      "type": "string",
      "enum": [
        {
          "name": "ExecutionEnvironmentUsageUnspecified",
          "description": "Default value. This value is unused.",
          "value": "EXECUTION_ENVIRONMENT_USAGE_UNSPECIFIED"
        },
        {
          "name": "Render",
          "description": "Use for rendering.",
          "value": "RENDER"
        },
        {
          "name": "Deploy",
          "description": "Use for deploying and deployment hooks.",
          "value": "DEPLOY"
        },
        {
          "name": "Verify",
          "description": "Use for deployment verification.",
          "value": "VERIFY"
        },
        {
          "name": "Predeploy",
          "description": "Use for predeploy job execution.",
          "value": "PREDEPLOY"
        },
        {
          "name": "Postdeploy",
          "description": "Use for postdeploy job execution.",
          "value": "POSTDEPLOY"
        }
      ]
    },
    "google-native:clouddeploy/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:clouddeploy/v1:GatewayServiceMesh": {
      "description": "Information about the Kubernetes Gateway API service mesh configuration.",
      "properties": {
        "deployment": {
          "type": "string",
          "description": "Name of the Kubernetes Deployment whose traffic is managed by the specified HTTPRoute and Service."
        },
        "httpRoute": {
          "type": "string",
          "description": "Name of the Gateway API HTTPRoute."
        },
        "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."
        },
        "service": {
          "type": "string",
          "description": "Name of the Kubernetes Service."
        }
      },
      "type": "object",
      "required": [
        "deployment",
        "httpRoute",
        "service"
      ]
    },
    "google-native:clouddeploy/v1:GatewayServiceMeshResponse": {
      "description": "Information about the Kubernetes Gateway API service mesh configuration.",
      "properties": {
        "deployment": {
          "type": "string",
          "description": "Name of the Kubernetes Deployment whose traffic is managed by the specified HTTPRoute and Service."
        },
        "httpRoute": {
          "type": "string",
          "description": "Name of the Gateway API HTTPRoute."
        },
        "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."
        },
        "service": {
          "type": "string",
          "description": "Name of the Kubernetes Service."
        }
      },
      "type": "object",
      "required": [
        "deployment",
        "httpRoute",
        "routeUpdateWaitTime",
        "service"
      ]
    },
    "google-native:clouddeploy/v1:GkeCluster": {
      "description": "Information specifying a GKE Cluster.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`."
        },
        "internalIp": {
          "type": "boolean",
          "description": "Optional. If true, `cluster` 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 `cluster` is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept)."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:GkeClusterResponse": {
      "description": "Information specifying a GKE Cluster.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`."
        },
        "internalIp": {
          "type": "boolean",
          "description": "Optional. If true, `cluster` 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 `cluster` is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept)."
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "internalIp"
      ]
    },
    "google-native:clouddeploy/v1:JobResponse": {
      "description": "Job represents an operation for a `Rollout`.",
      "properties": {
        "advanceChildRolloutJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AdvanceChildRolloutJobResponse",
          "description": "An advanceChildRollout Job."
        },
        "createChildRolloutJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CreateChildRolloutJobResponse",
          "description": "A createChildRollout Job."
        },
        "deployJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:DeployJobResponse",
          "description": "A deploy Job."
        },
        "jobRun": {
          "type": "string",
          "description": "The name of the `JobRun` responsible for the most recent invocation of this Job."
        },
        "postdeployJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PostdeployJobResponse",
          "description": "A postdeploy Job."
        },
        "predeployJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PredeployJobResponse",
          "description": "A predeploy Job."
        },
        "skipMessage": {
          "type": "string",
          "description": "Additional information on why the Job was skipped, if available."
        },
        "state": {
          "type": "string",
          "description": "The current state of the Job."
        },
        "verifyJob": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:VerifyJobResponse",
          "description": "A verify Job."
        }
      },
      "type": "object",
      "required": [
        "advanceChildRolloutJob",
        "createChildRolloutJob",
        "deployJob",
        "jobRun",
        "postdeployJob",
        "predeployJob",
        "skipMessage",
        "state",
        "verifyJob"
      ]
    },
    "google-native:clouddeploy/v1:KubernetesConfig": {
      "description": "KubernetesConfig contains the Kubernetes runtime configuration.",
      "properties": {
        "gatewayServiceMesh": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:GatewayServiceMesh",
          "description": "Kubernetes Gateway API service mesh configuration."
        },
        "serviceNetworking": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:ServiceNetworking",
          "description": "Kubernetes Service networking configuration."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:KubernetesConfigResponse": {
      "description": "KubernetesConfig contains the Kubernetes runtime configuration.",
      "properties": {
        "gatewayServiceMesh": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:GatewayServiceMeshResponse",
          "description": "Kubernetes Gateway API service mesh configuration."
        },
        "serviceNetworking": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:ServiceNetworkingResponse",
          "description": "Kubernetes Service networking configuration."
        }
      },
      "type": "object",
      "required": [
        "gatewayServiceMesh",
        "serviceNetworking"
      ]
    },
    "google-native:clouddeploy/v1:MetadataResponse": {
      "description": "Metadata includes information associated with a `Rollout`.",
      "properties": {
        "automation": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationRolloutMetadataResponse",
          "description": "AutomationRolloutMetadata contains the information about the interactions between Automation service and this rollout."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CloudRunMetadataResponse",
          "description": "The name of the Cloud Run Service that is associated with a `Rollout`."
        }
      },
      "type": "object",
      "required": [
        "automation",
        "cloudRun"
      ]
    },
    "google-native:clouddeploy/v1:MultiTarget": {
      "description": "Information specifying a multiTarget.",
      "properties": {
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target_ids of this multiTarget."
        }
      },
      "type": "object",
      "required": [
        "targetIds"
      ]
    },
    "google-native:clouddeploy/v1:MultiTargetResponse": {
      "description": "Information specifying a multiTarget.",
      "properties": {
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target_ids of this multiTarget."
        }
      },
      "type": "object",
      "required": [
        "targetIds"
      ]
    },
    "google-native:clouddeploy/v1:PhaseConfig": {
      "description": "PhaseConfig represents the configuration for a phase in the custom canary deployment.",
      "properties": {
        "percentage": {
          "type": "integer",
          "description": "Percentage deployment for the phase."
        },
        "phaseId": {
          "type": "string",
          "description": "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]([a-z0-9-]{0,61}[a-z0-9])?$`."
        },
        "postdeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Postdeploy",
          "description": "Optional. Configuration for the postdeploy job of this phase. If this is not configured, there will be no postdeploy job for this phase."
        },
        "predeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Predeploy",
          "description": "Optional. Configuration for the predeploy job of this phase. If this is not configured, there will be no predeploy job for this phase."
        },
        "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."
        },
        "verify": {
          "type": "boolean",
          "description": "Whether to run verify tests after the deployment."
        }
      },
      "type": "object",
      "required": [
        "percentage",
        "phaseId"
      ]
    },
    "google-native:clouddeploy/v1:PhaseConfigResponse": {
      "description": "PhaseConfig represents the configuration for a phase in the custom canary deployment.",
      "properties": {
        "percentage": {
          "type": "integer",
          "description": "Percentage deployment for the phase."
        },
        "phaseId": {
          "type": "string",
          "description": "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]([a-z0-9-]{0,61}[a-z0-9])?$`."
        },
        "postdeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PostdeployResponse",
          "description": "Optional. Configuration for the postdeploy job of this phase. If this is not configured, there will be no postdeploy job for this phase."
        },
        "predeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PredeployResponse",
          "description": "Optional. Configuration for the predeploy job of this phase. If this is not configured, there will be no predeploy job for this phase."
        },
        "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."
        },
        "verify": {
          "type": "boolean",
          "description": "Whether to run verify tests after the deployment."
        }
      },
      "type": "object",
      "required": [
        "percentage",
        "phaseId",
        "postdeploy",
        "predeploy",
        "profiles",
        "verify"
      ]
    },
    "google-native:clouddeploy/v1:PhaseResponse": {
      "description": "Phase represents a collection of jobs that are logically grouped together for a `Rollout`.",
      "properties": {
        "childRolloutJobs": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:ChildRolloutJobsResponse",
          "description": "ChildRollout job composition."
        },
        "deploymentJobs": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:DeploymentJobsResponse",
          "description": "Deployment job composition."
        },
        "skipMessage": {
          "type": "string",
          "description": "Additional information on why the Phase was skipped, if available."
        },
        "state": {
          "type": "string",
          "description": "Current state of the Phase."
        }
      },
      "type": "object",
      "required": [
        "childRolloutJobs",
        "deploymentJobs",
        "skipMessage",
        "state"
      ]
    },
    "google-native:clouddeploy/v1:PipelineConditionResponse": {
      "description": "PipelineCondition contains all conditions relevant to a Delivery Pipeline.",
      "properties": {
        "pipelineReadyCondition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PipelineReadyConditionResponse",
          "description": "Details around the Pipeline's overall status."
        },
        "targetsPresentCondition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:TargetsPresentConditionResponse",
          "description": "Details around targets enumerated in the pipeline."
        },
        "targetsTypeCondition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:TargetsTypeConditionResponse",
          "description": "Details on the whether the targets enumerated in the pipeline are of the same type."
        }
      },
      "type": "object",
      "required": [
        "pipelineReadyCondition",
        "targetsPresentCondition",
        "targetsTypeCondition"
      ]
    },
    "google-native:clouddeploy/v1:PipelineReadyConditionResponse": {
      "description": "PipelineReadyCondition contains information around the status of the Pipeline.",
      "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."
        },
        "updateTime": {
          "type": "string",
          "description": "Last time the condition was updated."
        }
      },
      "type": "object",
      "required": [
        "status",
        "updateTime"
      ]
    },
    "google-native:clouddeploy/v1:Postdeploy": {
      "description": "Postdeploy contains the postdeploy job configuration information.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A sequence of Skaffold custom actions to invoke during execution of the postdeploy job."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:PostdeployJobResponse": {
      "description": "A postdeploy Job.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The custom actions that the postdeploy Job executes."
        }
      },
      "type": "object",
      "required": [
        "actions"
      ]
    },
    "google-native:clouddeploy/v1:PostdeployResponse": {
      "description": "Postdeploy contains the postdeploy job configuration information.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A sequence of Skaffold custom actions to invoke during execution of the postdeploy job."
        }
      },
      "type": "object",
      "required": [
        "actions"
      ]
    },
    "google-native:clouddeploy/v1:Predeploy": {
      "description": "Predeploy contains the predeploy job configuration information.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A sequence of Skaffold custom actions to invoke during execution of the predeploy job."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:PredeployJobResponse": {
      "description": "A predeploy Job.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The custom actions that the predeploy Job executes."
        }
      },
      "type": "object",
      "required": [
        "actions"
      ]
    },
    "google-native:clouddeploy/v1:PredeployResponse": {
      "description": "Predeploy contains the predeploy job configuration information.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A sequence of Skaffold custom actions to invoke during execution of the predeploy job."
        }
      },
      "type": "object",
      "required": [
        "actions"
      ]
    },
    "google-native:clouddeploy/v1:PrivatePool": {
      "description": "Execution using a private Cloud Build pool.",
      "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."
        },
        "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."
        },
        "workerPool": {
          "type": "string",
          "description": "Resource name of the Cloud Build worker pool to use. The format is `projects/{project}/locations/{location}/workerPools/{pool}`."
        }
      },
      "type": "object",
      "required": [
        "workerPool"
      ]
    },
    "google-native:clouddeploy/v1:PrivatePoolResponse": {
      "description": "Execution using a private Cloud Build pool.",
      "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."
        },
        "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."
        },
        "workerPool": {
          "type": "string",
          "description": "Resource name of the Cloud Build worker pool to use. The format is `projects/{project}/locations/{location}/workerPools/{pool}`."
        }
      },
      "type": "object",
      "required": [
        "artifactStorage",
        "serviceAccount",
        "workerPool"
      ]
    },
    "google-native:clouddeploy/v1:PromoteReleaseRule": {
      "description": "`PromoteRelease` rule will automatically promote a release from the current target to a specified target.",
      "properties": {
        "destinationPhase": {
          "type": "string",
          "description": "Optional. The starting phase of the rollout created by this operation. Default to the first phase."
        },
        "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."
        },
        "id": {
          "type": "string",
          "description": "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}`."
        },
        "wait": {
          "type": "string",
          "description": "Optional. How long the release need to be paused until being promoted to the next target."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:clouddeploy/v1:PromoteReleaseRuleResponse": {
      "description": "`PromoteRelease` rule will automatically promote a release from the current target to a specified target.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationRuleConditionResponse",
          "description": "Information around the state of the Automation rule."
        },
        "destinationPhase": {
          "type": "string",
          "description": "Optional. The starting phase of the rollout created by this operation. Default to the first phase."
        },
        "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."
        },
        "wait": {
          "type": "string",
          "description": "Optional. How long the release need to be paused until being promoted to the next target."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "destinationPhase",
        "destinationTargetId",
        "wait"
      ]
    },
    "google-native:clouddeploy/v1:ReleaseConditionResponse": {
      "description": "ReleaseCondition contains all conditions relevant to a Release.",
      "properties": {
        "releaseReadyCondition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:ReleaseReadyConditionResponse",
          "description": "Details around the Releases's overall status."
        },
        "skaffoldSupportedCondition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:SkaffoldSupportedConditionResponse",
          "description": "Details around the support state of the release's skaffold version."
        }
      },
      "type": "object",
      "required": [
        "releaseReadyCondition",
        "skaffoldSupportedCondition"
      ]
    },
    "google-native:clouddeploy/v1:ReleaseReadyConditionResponse": {
      "description": "ReleaseReadyCondition contains information around the status of the Release. If a release is not ready, you cannot create a rollout with the release.",
      "properties": {
        "status": {
          "type": "boolean",
          "description": "True if the Release is in a valid state. Otherwise at least one condition in `ReleaseCondition` 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 Release."
        }
      },
      "type": "object",
      "required": [
        "status"
      ]
    },
    "google-native:clouddeploy/v1:RepairMode": {
      "description": "Configuration of the repair action.",
      "properties": {
        "retry": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Retry",
          "description": "Optional. Retries a failed job."
        },
        "rollback": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Rollback",
          "description": "Optional. Rolls back a `Rollout`."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:RepairModeResponse": {
      "description": "Configuration of the repair action.",
      "properties": {
        "retry": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:RetryResponse",
          "description": "Optional. Retries a failed job."
        },
        "rollback": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:RollbackResponse",
          "description": "Optional. Rolls back a `Rollout`."
        }
      },
      "type": "object",
      "required": [
        "retry",
        "rollback"
      ]
    },
    "google-native:clouddeploy/v1:RepairRolloutRule": {
      "description": "The `RepairRolloutRule` automation rule will automatically repair a failed `Rollout`.",
      "properties": {
        "id": {
          "type": "string",
          "description": "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}`."
        },
        "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 `source_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]([a-z0-9-]{0,61}[a-z0-9])?$`."
        },
        "repairModes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:RepairMode"
          },
          "description": "Defines the types of automatic repair actions for failed jobs."
        },
        "sourcePhases": {
          "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]([a-z0-9-]{0,61}[a-z0-9])?$`."
        }
      },
      "type": "object",
      "required": [
        "id",
        "repairModes"
      ]
    },
    "google-native:clouddeploy/v1:RepairRolloutRuleResponse": {
      "description": "The `RepairRolloutRule` automation rule will automatically repair a failed `Rollout`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationRuleConditionResponse",
          "description": "Information around the state of the 'Automation' rule."
        },
        "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 `source_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]([a-z0-9-]{0,61}[a-z0-9])?$`."
        },
        "repairModes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:RepairModeResponse"
          },
          "description": "Defines the types of automatic repair actions for failed jobs."
        },
        "sourcePhases": {
          "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]([a-z0-9-]{0,61}[a-z0-9])?$`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "jobs",
        "repairModes",
        "sourcePhases"
      ]
    },
    "google-native:clouddeploy/v1:Retry": {
      "description": "Retries the failed job.",
      "properties": {
        "attempts": {
          "type": "string",
          "description": "Total number of retries. Retry will skipped if set to 0; The minimum value is 1, and the maximum value is 10."
        },
        "backoffMode": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:RetryBackoffMode",
          "description": "Optional. The pattern of how wait time will be increased. Default is linear. Backoff mode will be ignored if `wait` is 0."
        },
        "wait": {
          "type": "string",
          "description": "Optional. How long to wait for the first retry. Default is 0, and the maximum value is 14d."
        }
      },
      "type": "object",
      "required": [
        "attempts"
      ]
    },
    "google-native:clouddeploy/v1:RetryBackoffMode": {
      "description": "Optional. The pattern of how wait time will be increased. Default is linear. Backoff mode will be ignored if `wait` is 0.",
      "type": "string",
      "enum": [
        {
          "name": "BackoffModeUnspecified",
          "description": "No WaitMode is specified.",
          "value": "BACKOFF_MODE_UNSPECIFIED"
        },
        {
          "name": "BackoffModeLinear",
          "description": "Increases the wait time linearly.",
          "value": "BACKOFF_MODE_LINEAR"
        },
        {
          "name": "BackoffModeExponential",
          "description": "Increases the wait time exponentially.",
          "value": "BACKOFF_MODE_EXPONENTIAL"
        }
      ]
    },
    "google-native:clouddeploy/v1:RetryResponse": {
      "description": "Retries the failed job.",
      "properties": {
        "attempts": {
          "type": "string",
          "description": "Total number of retries. Retry will skipped if set to 0; The minimum value is 1, and the maximum value is 10."
        },
        "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."
        },
        "wait": {
          "type": "string",
          "description": "Optional. How long to wait for the first retry. Default is 0, and the maximum value is 14d."
        }
      },
      "type": "object",
      "required": [
        "attempts",
        "backoffMode",
        "wait"
      ]
    },
    "google-native:clouddeploy/v1:Rollback": {
      "description": "Rolls back a `Rollout`.",
      "properties": {
        "destinationPhase": {
          "type": "string",
          "description": "Optional. The starting phase ID for the `Rollout`. If unspecified, the `Rollout` will start in the stable phase."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:RollbackResponse": {
      "description": "Rolls back a `Rollout`.",
      "properties": {
        "destinationPhase": {
          "type": "string",
          "description": "Optional. The starting phase ID for the `Rollout`. If unspecified, the `Rollout` will start in the stable phase."
        }
      },
      "type": "object",
      "required": [
        "destinationPhase"
      ]
    },
    "google-native:clouddeploy/v1:RuntimeConfig": {
      "description": "RuntimeConfig contains the runtime specific configurations for a deployment strategy.",
      "properties": {
        "cloudRun": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CloudRunConfig",
          "description": "Cloud Run runtime configuration."
        },
        "kubernetes": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:KubernetesConfig",
          "description": "Kubernetes runtime configuration."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:RuntimeConfigResponse": {
      "description": "RuntimeConfig contains the runtime specific configurations for a deployment strategy.",
      "properties": {
        "cloudRun": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CloudRunConfigResponse",
          "description": "Cloud Run runtime configuration."
        },
        "kubernetes": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:KubernetesConfigResponse",
          "description": "Kubernetes runtime configuration."
        }
      },
      "type": "object",
      "required": [
        "cloudRun",
        "kubernetes"
      ]
    },
    "google-native:clouddeploy/v1:SerialPipeline": {
      "description": "SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`.",
      "properties": {
        "stages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:Stage"
          },
          "description": "Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:SerialPipelineResponse": {
      "description": "SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`.",
      "properties": {
        "stages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:StageResponse"
          },
          "description": "Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow."
        }
      },
      "type": "object",
      "required": [
        "stages"
      ]
    },
    "google-native:clouddeploy/v1:ServiceNetworking": {
      "description": "Information about the Kubernetes Service networking configuration.",
      "properties": {
        "deployment": {
          "type": "string",
          "description": "Name of the Kubernetes Deployment whose traffic is managed by the specified Service."
        },
        "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."
        },
        "service": {
          "type": "string",
          "description": "Name of the Kubernetes Service."
        }
      },
      "type": "object",
      "required": [
        "deployment",
        "service"
      ]
    },
    "google-native:clouddeploy/v1:ServiceNetworkingResponse": {
      "description": "Information about the Kubernetes Service networking configuration.",
      "properties": {
        "deployment": {
          "type": "string",
          "description": "Name of the Kubernetes Deployment whose traffic is managed by the specified Service."
        },
        "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."
        },
        "service": {
          "type": "string",
          "description": "Name of the Kubernetes Service."
        }
      },
      "type": "object",
      "required": [
        "deployment",
        "disablePodOverprovisioning",
        "service"
      ]
    },
    "google-native:clouddeploy/v1:SkaffoldSupportedConditionResponse": {
      "description": "SkaffoldSupportedCondition contains information about when support for the release's version of skaffold ends.",
      "properties": {
        "maintenanceModeTime": {
          "type": "string",
          "description": "The time at which this release's version of skaffold will enter maintenance mode."
        },
        "skaffoldSupportState": {
          "type": "string",
          "description": "The skaffold support state for this release's version of skaffold."
        },
        "status": {
          "type": "boolean",
          "description": "True if the version of skaffold used by this release is supported."
        },
        "supportExpirationTime": {
          "type": "string",
          "description": "The time at which this release's version of skaffold will no longer be supported."
        }
      },
      "type": "object",
      "required": [
        "maintenanceModeTime",
        "skaffoldSupportState",
        "status",
        "supportExpirationTime"
      ]
    },
    "google-native:clouddeploy/v1:Stage": {
      "description": "Stage specifies a location to which to deploy.",
      "properties": {
        "deployParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:DeployParameters"
          },
          "description": "Optional. The deploy parameters to use for the target in this stage."
        },
        "profiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Skaffold profiles to use when rendering the manifest for this stage's `Target`."
        },
        "strategy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Strategy",
          "description": "Optional. The strategy to use for a `Rollout` to this stage."
        },
        "targetId": {
          "type": "string",
          "description": "The target_id to 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`."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:StageResponse": {
      "description": "Stage specifies a location to which to deploy.",
      "properties": {
        "deployParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:DeployParametersResponse"
          },
          "description": "Optional. The deploy parameters to use for the target in this stage."
        },
        "profiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Skaffold profiles to use when rendering the manifest for this stage's `Target`."
        },
        "strategy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:StrategyResponse",
          "description": "Optional. The strategy to use for a `Rollout` to this stage."
        },
        "targetId": {
          "type": "string",
          "description": "The target_id to 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`."
        }
      },
      "type": "object",
      "required": [
        "deployParameters",
        "profiles",
        "strategy",
        "targetId"
      ]
    },
    "google-native:clouddeploy/v1:Standard": {
      "description": "Standard represents the standard deployment strategy.",
      "properties": {
        "postdeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Postdeploy",
          "description": "Optional. Configuration for the postdeploy job. If this is not configured, postdeploy job will not be present."
        },
        "predeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Predeploy",
          "description": "Optional. Configuration for the predeploy job. If this is not configured, predeploy job will not be present."
        },
        "verify": {
          "type": "boolean",
          "description": "Whether to verify a deployment."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:StandardResponse": {
      "description": "Standard represents the standard deployment strategy.",
      "properties": {
        "postdeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PostdeployResponse",
          "description": "Optional. Configuration for the postdeploy job. If this is not configured, postdeploy job will not be present."
        },
        "predeploy": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PredeployResponse",
          "description": "Optional. Configuration for the predeploy job. If this is not configured, predeploy job will not be present."
        },
        "verify": {
          "type": "boolean",
          "description": "Whether to verify a deployment."
        }
      },
      "type": "object",
      "required": [
        "postdeploy",
        "predeploy",
        "verify"
      ]
    },
    "google-native:clouddeploy/v1:Strategy": {
      "description": "Strategy contains deployment strategy information.",
      "properties": {
        "canary": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Canary",
          "description": "Canary deployment strategy provides progressive percentage based deployments to a Target."
        },
        "standard": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:Standard",
          "description": "Standard deployment strategy executes a single deploy and allows verifying the deployment."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:StrategyResponse": {
      "description": "Strategy contains deployment strategy information.",
      "properties": {
        "canary": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CanaryResponse",
          "description": "Canary deployment strategy provides progressive percentage based deployments to a Target."
        },
        "standard": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:StandardResponse",
          "description": "Standard deployment strategy executes a single deploy and allows verifying the deployment."
        }
      },
      "type": "object",
      "required": [
        "canary",
        "standard"
      ]
    },
    "google-native:clouddeploy/v1:TargetAttribute": {
      "description": "Contains criteria for selecting Targets. Attributes provided must match the target resource in order for policy restrictions to apply. E.g. if id \"prod\" and labels \"foo: bar\" are given the target resource must match both that id and have that label in order to be selected.",
      "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."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Target labels."
        }
      },
      "type": "object"
    },
    "google-native:clouddeploy/v1:TargetAttributeResponse": {
      "description": "Contains criteria for selecting Targets. Attributes provided must match the target resource in order for policy restrictions to apply. E.g. if id \"prod\" and labels \"foo: bar\" are given the target resource must match both that id and have that label in order to be selected.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Target labels."
        }
      },
      "type": "object",
      "required": [
        "labels"
      ]
    },
    "google-native:clouddeploy/v1:TargetResponse": {
      "description": "A `Target` resource in the Cloud Deploy API. A `Target` defines a location to which a Skaffold configuration can be deployed.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "anthosCluster": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AnthosClusterResponse",
          "description": "Optional. Information specifying an Anthos Cluster."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the `Target` was created."
        },
        "deployParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The deploy parameters to use for this target."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the `Target`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "executionConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:ExecutionConfigResponse"
          },
          "description": "Configurations for all execution that relates to this `Target`. Each `ExecutionEnvironmentUsage` value may only be used in a single configuration; using the same value multiple times is an error. When one or more configurations are specified, they must include the `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values. When no configurations are specified, execution will use the default specified in `DefaultPool`."
        },
        "gke": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:GkeClusterResponse",
          "description": "Optional. Information specifying a GKE Cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "multiTarget": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:MultiTargetResponse",
          "description": "Optional. Information specifying a multiTarget."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `Target`. Format is `projects/{project}/locations/{location}/targets/a-z{0,62}`."
        },
        "requireApproval": {
          "type": "boolean",
          "description": "Optional. Whether or not the `Target` requires approval."
        },
        "run": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CloudRunLocationResponse",
          "description": "Optional. Information specifying a Cloud Run deployment target."
        },
        "targetId": {
          "type": "string",
          "description": "Resource id of the `Target`."
        },
        "uid": {
          "type": "string",
          "description": "Unique identifier of the `Target`."
        },
        "updateTime": {
          "type": "string",
          "description": "Most recent time at which the `Target` was updated."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "anthosCluster",
        "createTime",
        "deployParameters",
        "description",
        "etag",
        "executionConfigs",
        "gke",
        "labels",
        "multiTarget",
        "name",
        "requireApproval",
        "run",
        "targetId",
        "uid",
        "updateTime"
      ]
    },
    "google-native:clouddeploy/v1:TargetsPresentConditionResponse": {
      "description": "TargetsPresentCondition contains information on any Targets defined in the Delivery Pipeline that do not actually exist.",
      "properties": {
        "missingTargets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Target names that do not exist. For example, `projects/{project_id}/locations/{location_name}/targets/{target_name}`."
        },
        "status": {
          "type": "boolean",
          "description": "True if there aren't any missing Targets."
        },
        "updateTime": {
          "type": "string",
          "description": "Last time the condition was updated."
        }
      },
      "type": "object",
      "required": [
        "missingTargets",
        "status",
        "updateTime"
      ]
    },
    "google-native:clouddeploy/v1:TargetsTypeConditionResponse": {
      "description": "TargetsTypeCondition contains information on whether the Targets defined in the Delivery Pipeline are of the same type.",
      "properties": {
        "errorDetails": {
          "type": "string",
          "description": "Human readable error message."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "errorDetails",
        "status"
      ]
    },
    "google-native:clouddeploy/v1:VerifyJobResponse": {
      "description": "A verify Job.",
      "type": "object"
    },
    "google-native:cloudfunctions/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudfunctions/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudfunctions/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudfunctions/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudfunctions/v1:EventTrigger": {
      "description": "Describes EventTrigger, used to request events be sent from another service.",
      "properties": {
        "eventType": {
          "type": "string",
          "description": "The type of event to observe. For example: `providers/cloud.storage/eventTypes/object.change` and `providers/cloud.pubsub/eventTypes/topic.publish`. Event types match pattern `providers/*/eventTypes/*.*`. The pattern contains: 1. namespace: For example, `cloud.storage` and `google.firebase.analytics`. 2. resource type: The type of resource on which event occurs. For example, the Google Cloud Storage API includes the type `object`. 3. action: The action that generates the event. For example, action for a Google Cloud Storage Object is 'change'. These parts are lower case."
        },
        "failurePolicy": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:FailurePolicy",
          "description": "Specifies policy for failed executions."
        },
        "resource": {
          "type": "string",
          "description": "The resource(s) from which to observe events, for example, `projects/_/buckets/myBucket`. Not all syntactically correct values are accepted by all services. For example: 1. The authorization model must support it. Google Cloud Functions only allows EventTriggers to be deployed that observe resources in the same project as the `CloudFunction`. 2. The resource type must match the pattern expected for an `event_type`. For example, an `EventTrigger` that has an `event_type` of \"google.pubsub.topic.publish\" should have a resource that matches Google Cloud Pub/Sub topics. Additionally, some services may support short names when creating an `EventTrigger`. These will always be returned in the normalized \"long\" format. See each *service's* documentation for supported formats."
        },
        "service": {
          "type": "string",
          "description": "The hostname of the service that should be observed. If no string is provided, the default service implementing the API will be used. For example, `storage.googleapis.com` is the default for all event types in the `google.storage` namespace."
        }
      },
      "type": "object",
      "required": [
        "eventType",
        "resource"
      ]
    },
    "google-native:cloudfunctions/v1:EventTriggerResponse": {
      "description": "Describes EventTrigger, used to request events be sent from another service.",
      "properties": {
        "eventType": {
          "type": "string",
          "description": "The type of event to observe. For example: `providers/cloud.storage/eventTypes/object.change` and `providers/cloud.pubsub/eventTypes/topic.publish`. Event types match pattern `providers/*/eventTypes/*.*`. The pattern contains: 1. namespace: For example, `cloud.storage` and `google.firebase.analytics`. 2. resource type: The type of resource on which event occurs. For example, the Google Cloud Storage API includes the type `object`. 3. action: The action that generates the event. For example, action for a Google Cloud Storage Object is 'change'. These parts are lower case."
        },
        "failurePolicy": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:FailurePolicyResponse",
          "description": "Specifies policy for failed executions."
        },
        "resource": {
          "type": "string",
          "description": "The resource(s) from which to observe events, for example, `projects/_/buckets/myBucket`. Not all syntactically correct values are accepted by all services. For example: 1. The authorization model must support it. Google Cloud Functions only allows EventTriggers to be deployed that observe resources in the same project as the `CloudFunction`. 2. The resource type must match the pattern expected for an `event_type`. For example, an `EventTrigger` that has an `event_type` of \"google.pubsub.topic.publish\" should have a resource that matches Google Cloud Pub/Sub topics. Additionally, some services may support short names when creating an `EventTrigger`. These will always be returned in the normalized \"long\" format. See each *service's* documentation for supported formats."
        },
        "service": {
          "type": "string",
          "description": "The hostname of the service that should be observed. If no string is provided, the default service implementing the API will be used. For example, `storage.googleapis.com` is the default for all event types in the `google.storage` namespace."
        }
      },
      "type": "object",
      "required": [
        "eventType",
        "failurePolicy",
        "resource",
        "service"
      ]
    },
    "google-native:cloudfunctions/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudfunctions/v1:FailurePolicy": {
      "description": "Describes the policy in case of function's execution failure. If empty, then defaults to ignoring failures (i.e. not retrying them).",
      "properties": {
        "retry": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:Retry",
          "description": "If specified, then the function will be retried in case of a failure."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:FailurePolicyResponse": {
      "description": "Describes the policy in case of function's execution failure. If empty, then defaults to ignoring failures (i.e. not retrying them).",
      "properties": {
        "retry": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:RetryResponse",
          "description": "If specified, then the function will be retried in case of a failure."
        }
      },
      "type": "object",
      "required": [
        "retry"
      ]
    },
    "google-native:cloudfunctions/v1:FunctionDockerRegistry": {
      "description": "Docker Registry to use for this deployment. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments.",
      "type": "string",
      "enum": [
        {
          "name": "DockerRegistryUnspecified",
          "description": "Unspecified.",
          "value": "DOCKER_REGISTRY_UNSPECIFIED"
        },
        {
          "name": "ContainerRegistry",
          "description": "Docker images will be stored in multi-regional Container Registry repositories named `gcf`.",
          "value": "CONTAINER_REGISTRY"
        },
        {
          "name": "ArtifactRegistry",
          "description": "Docker images will be stored in regional Artifact Registry repositories. By default, GCF will create and use repositories named `gcf-artifacts` in every region in which a function is deployed. But the repository to use can also be specified by the user using the `docker_repository` field.",
          "value": "ARTIFACT_REGISTRY"
        }
      ]
    },
    "google-native:cloudfunctions/v1:FunctionIngressSettings": {
      "description": "The ingress settings for the function, controlling what traffic can reach it.",
      "type": "string",
      "enum": [
        {
          "name": "IngressSettingsUnspecified",
          "description": "Unspecified.",
          "value": "INGRESS_SETTINGS_UNSPECIFIED"
        },
        {
          "name": "AllowAll",
          "description": "Allow HTTP traffic from public and private sources.",
          "value": "ALLOW_ALL"
        },
        {
          "name": "AllowInternalOnly",
          "description": "Allow HTTP traffic from only private VPC sources.",
          "value": "ALLOW_INTERNAL_ONLY"
        },
        {
          "name": "AllowInternalAndGclb",
          "description": "Allow HTTP traffic from private VPC sources and through GCLB.",
          "value": "ALLOW_INTERNAL_AND_GCLB"
        }
      ]
    },
    "google-native:cloudfunctions/v1:FunctionVpcConnectorEgressSettings": {
      "description": "The egress settings for the connector, controlling what traffic is diverted through it.",
      "type": "string",
      "enum": [
        {
          "name": "VpcConnectorEgressSettingsUnspecified",
          "description": "Unspecified.",
          "value": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED"
        },
        {
          "name": "PrivateRangesOnly",
          "description": "Use the VPC Access Connector only for private IP space from RFC1918.",
          "value": "PRIVATE_RANGES_ONLY"
        },
        {
          "name": "AllTraffic",
          "description": "Force the use of VPC Access Connector for all egress traffic from the function.",
          "value": "ALL_TRAFFIC"
        }
      ]
    },
    "google-native:cloudfunctions/v1:HttpsTrigger": {
      "description": "Describes HttpsTrigger, could be used to connect web hooks to function.",
      "properties": {
        "securityLevel": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:HttpsTriggerSecurityLevel",
          "description": "The security level for the function."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:HttpsTriggerResponse": {
      "description": "Describes HttpsTrigger, could be used to connect web hooks to function.",
      "properties": {
        "securityLevel": {
          "type": "string",
          "description": "The security level for the function."
        },
        "url": {
          "type": "string",
          "description": "The deployed url for the function."
        }
      },
      "type": "object",
      "required": [
        "securityLevel",
        "url"
      ]
    },
    "google-native:cloudfunctions/v1:HttpsTriggerSecurityLevel": {
      "description": "The security level for the function.",
      "type": "string",
      "enum": [
        {
          "name": "SecurityLevelUnspecified",
          "description": "Unspecified.",
          "value": "SECURITY_LEVEL_UNSPECIFIED"
        },
        {
          "name": "SecureAlways",
          "description": "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
          "value": "SECURE_ALWAYS"
        },
        {
          "name": "SecureOptional",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
          "value": "SECURE_OPTIONAL"
        }
      ]
    },
    "google-native:cloudfunctions/v1:Retry": {
      "description": "Describes the retry policy in case of function's execution failure. A function execution will be retried on any failure. A failed execution will be retried up to 7 days with an exponential backoff (capped at 10 seconds). Retried execution is charged as any other execution.",
      "type": "object"
    },
    "google-native:cloudfunctions/v1:RetryResponse": {
      "description": "Describes the retry policy in case of function's execution failure. A function execution will be retried on any failure. A failed execution will be retried up to 7 days with an exponential backoff (capped at 10 seconds). Retried execution is charged as any other execution.",
      "type": "object"
    },
    "google-native:cloudfunctions/v1:SecretEnvVar": {
      "description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "project": {
          "type": "string",
          "description": "Project identifier (preferrably 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."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:SecretEnvVarResponse": {
      "description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "project": {
          "type": "string",
          "description": "Project identifier (preferrably 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."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "key",
        "project",
        "secret",
        "version"
      ]
    },
    "google-native:cloudfunctions/v1:SecretVersion": {
      "description": "Configuration for a single version.",
      "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 mount_path as '/etc/secrets' and path as `/secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:SecretVersionResponse": {
      "description": "Configuration for a single version.",
      "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 mount_path as '/etc/secrets' and path as `/secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "path",
        "version"
      ]
    },
    "google-native:cloudfunctions/v1:SecretVolume": {
      "description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container. Secret value is not a part of the configuration. Every filesystem read operation performs a lookup in secret manager to retrieve the secret value.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "The path within the container to mount the secret volume. For example, setting the mount_path 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 paths: /etc/secrets Restricted mount paths: /cloudsql, /dev/log, /pod, /proc, /var/log"
        },
        "project": {
          "type": "string",
          "description": "Project identifier (preferrably 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."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:SecretVersion"
          },
          "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:SecretVolumeResponse": {
      "description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container. Secret value is not a part of the configuration. Every filesystem read operation performs a lookup in secret manager to retrieve the secret value.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "The path within the container to mount the secret volume. For example, setting the mount_path 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 paths: /etc/secrets Restricted mount paths: /cloudsql, /dev/log, /pod, /proc, /var/log"
        },
        "project": {
          "type": "string",
          "description": "Project identifier (preferrably 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."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:SecretVersionResponse"
          },
          "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."
        }
      },
      "type": "object",
      "required": [
        "mountPath",
        "project",
        "secret",
        "versions"
      ]
    },
    "google-native:cloudfunctions/v1:SourceRepository": {
      "description": "Describes SourceRepository, used to represent parameters related to source repository where a function is hosted.",
      "properties": {
        "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: To refer to a specific commit: `https://source.developers.google.com/projects/*/repos/*/revisions/*/paths/*` To refer to a moveable alias (branch): `https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*` In particular, to refer to HEAD use `master` moveable alias. To refer to a specific fixed alias (tag): `https://source.developers.google.com/projects/*/repos/*/fixed-aliases/*/paths/*` You may omit `paths/*` if you want to use the main directory."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v1:SourceRepositoryResponse": {
      "description": "Describes SourceRepository, used to represent parameters related to source repository where a function is hosted.",
      "properties": {
        "deployedUrl": {
          "type": "string",
          "description": "The URL pointing to the hosted repository where the function were defined at the time of deployment. It always points to a specific commit in the format described above."
        },
        "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: To refer to a specific commit: `https://source.developers.google.com/projects/*/repos/*/revisions/*/paths/*` To refer to a moveable alias (branch): `https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*` In particular, to refer to HEAD use `master` moveable alias. To refer to a specific fixed alias (tag): `https://source.developers.google.com/projects/*/repos/*/fixed-aliases/*/paths/*` You may omit `paths/*` if you want to use the main directory."
        }
      },
      "type": "object",
      "required": [
        "deployedUrl",
        "url"
      ]
    },
    "google-native:cloudfunctions/v2:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudfunctions/v2:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudfunctions/v2:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudfunctions/v2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2:BuildConfig": {
      "description": "Describes the Build step of the function that builds a container from the given source.",
      "properties": {
        "dockerRegistry": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:BuildConfigDockerRegistry",
          "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments."
        },
        "dockerRepository": {
          "type": "string",
          "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. If unspecified, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'."
        },
        "entryPoint": {
          "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\". For Node.js this is name of a function exported by the module specified in `source_location`."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided build-time environment variables for the function"
        },
        "runtime": {
          "type": "string",
          "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime)."
        },
        "source": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:Source",
          "description": "The location of the function source code."
        },
        "sourceToken": {
          "type": "string",
          "description": "An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments."
        },
        "workerPool": {
          "type": "string",
          "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (service-@gcf-admin-robot.iam.gserviceaccount.com) must be granted the role Cloud Build Custom Workers Builder (roles/cloudbuild.customworkers.builder) in the project."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:BuildConfigDockerRegistry": {
      "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments.",
      "type": "string",
      "enum": [
        {
          "name": "DockerRegistryUnspecified",
          "description": "Unspecified.",
          "value": "DOCKER_REGISTRY_UNSPECIFIED"
        },
        {
          "name": "ContainerRegistry",
          "description": "Docker images will be stored in multi-regional Container Registry repositories named `gcf`.",
          "value": "CONTAINER_REGISTRY"
        },
        {
          "name": "ArtifactRegistry",
          "description": "Docker images will be stored in regional Artifact Registry repositories. By default, GCF will create and use repositories named `gcf-artifacts` in every region in which a function is deployed. But the repository to use can also be specified by the user using the `docker_repository` field.",
          "value": "ARTIFACT_REGISTRY"
        }
      ]
    },
    "google-native:cloudfunctions/v2:BuildConfigResponse": {
      "description": "Describes the Build step of the function that builds a container from the given source.",
      "properties": {
        "build": {
          "type": "string",
          "description": "The Cloud Build name of the latest successful deployment of the function."
        },
        "dockerRegistry": {
          "type": "string",
          "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments."
        },
        "dockerRepository": {
          "type": "string",
          "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. If unspecified, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'."
        },
        "entryPoint": {
          "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\". For Node.js this is name of a function exported by the module specified in `source_location`."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided build-time environment variables for the function"
        },
        "runtime": {
          "type": "string",
          "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime)."
        },
        "source": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:SourceResponse",
          "description": "The location of the function source code."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:SourceProvenanceResponse",
          "description": "A permanent fixed identifier for source."
        },
        "sourceToken": {
          "type": "string",
          "description": "An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments."
        },
        "workerPool": {
          "type": "string",
          "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (service-@gcf-admin-robot.iam.gserviceaccount.com) must be granted the role Cloud Build Custom Workers Builder (roles/cloudbuild.customworkers.builder) in the project."
        }
      },
      "type": "object",
      "required": [
        "build",
        "dockerRegistry",
        "dockerRepository",
        "entryPoint",
        "environmentVariables",
        "runtime",
        "source",
        "sourceProvenance",
        "sourceToken",
        "workerPool"
      ]
    },
    "google-native:cloudfunctions/v2:EventFilter": {
      "description": "Filters events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute."
        },
        "operator": {
          "type": "string",
          "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The only allowed value is `match-path-pattern`."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "value"
      ]
    },
    "google-native:cloudfunctions/v2:EventFilterResponse": {
      "description": "Filters events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute."
        },
        "operator": {
          "type": "string",
          "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The only allowed value is `match-path-pattern`."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "operator",
        "value"
      ]
    },
    "google-native:cloudfunctions/v2:EventTrigger": {
      "description": "Describes EventTrigger, used to request events to be sent from another service.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners."
        },
        "eventFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:EventFilter"
          },
          "description": "Criteria used to filter events."
        },
        "eventType": {
          "type": "string",
          "description": "The type of event to observe. For example: `google.cloud.audit.log.v1.written` or `google.cloud.pubsub.topic.v1.messagePublished`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of a Pub/Sub topic in the same project that will be used as the transport topic for the event delivery. Format: `projects/{project}/topics/{topic}`. This is only valid for events of type `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here will not be deleted at function deletion."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:EventTriggerRetryPolicy",
          "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them)."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. The email of the trigger's service account. The service account must have permission to invoke Cloud Run services, the permission is `run.routes.invoke`. If empty, defaults to the Compute Engine default service account: `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "triggerRegion": {
          "type": "string",
          "description": "The region that the trigger will be in. The trigger will only receive events originating in this region. It can be the same region as the function, a different region or multi-region, or the global region. If not provided, defaults to the same region as the function."
        }
      },
      "type": "object",
      "required": [
        "eventType"
      ]
    },
    "google-native:cloudfunctions/v2:EventTriggerResponse": {
      "description": "Describes EventTrigger, used to request events to be sent from another service.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners."
        },
        "eventFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:EventFilterResponse"
          },
          "description": "Criteria used to filter events."
        },
        "eventType": {
          "type": "string",
          "description": "The type of event to observe. For example: `google.cloud.audit.log.v1.written` or `google.cloud.pubsub.topic.v1.messagePublished`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of a Pub/Sub topic in the same project that will be used as the transport topic for the event delivery. Format: `projects/{project}/topics/{topic}`. This is only valid for events of type `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here will not be deleted at function deletion."
        },
        "retryPolicy": {
          "type": "string",
          "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them)."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. The email of the trigger's service account. The service account must have permission to invoke Cloud Run services, the permission is `run.routes.invoke`. If empty, defaults to the Compute Engine default service account: `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "trigger": {
          "type": "string",
          "description": "The resource name of the Eventarc trigger. The format of this field is `projects/{project}/locations/{region}/triggers/{trigger}`."
        },
        "triggerRegion": {
          "type": "string",
          "description": "The region that the trigger will be in. The trigger will only receive events originating in this region. It can be the same region as the function, a different region or multi-region, or the global region. If not provided, defaults to the same region as the function."
        }
      },
      "type": "object",
      "required": [
        "channel",
        "eventFilters",
        "eventType",
        "pubsubTopic",
        "retryPolicy",
        "serviceAccountEmail",
        "trigger",
        "triggerRegion"
      ]
    },
    "google-native:cloudfunctions/v2:EventTriggerRetryPolicy": {
      "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them).",
      "type": "string",
      "enum": [
        {
          "name": "RetryPolicyUnspecified",
          "description": "Not specified.",
          "value": "RETRY_POLICY_UNSPECIFIED"
        },
        {
          "name": "RetryPolicyDoNotRetry",
          "description": "Do not retry.",
          "value": "RETRY_POLICY_DO_NOT_RETRY"
        },
        {
          "name": "RetryPolicyRetry",
          "description": "Retry on any failure, retry up to 7 days with an exponential backoff (capped at 10 seconds).",
          "value": "RETRY_POLICY_RETRY"
        }
      ]
    },
    "google-native:cloudfunctions/v2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudfunctions/v2:FunctionEnvironment": {
      "description": "Describe whether the function is 1st Gen or 2nd Gen.",
      "type": "string",
      "enum": [
        {
          "name": "EnvironmentUnspecified",
          "description": "Unspecified",
          "value": "ENVIRONMENT_UNSPECIFIED"
        },
        {
          "name": "Gen1",
          "description": "Gen 1",
          "value": "GEN_1"
        },
        {
          "name": "Gen2",
          "description": "Gen 2",
          "value": "GEN_2"
        }
      ]
    },
    "google-native:cloudfunctions/v2:GoogleCloudFunctionsV2StateMessageResponse": {
      "description": "Informational messages about the state of the Cloud Function or Operation.",
      "properties": {
        "message": {
          "type": "string",
          "description": "The message."
        },
        "severity": {
          "type": "string",
          "description": "Severity of the state message."
        },
        "type": {
          "type": "string",
          "description": "One-word CamelCase type of the state message."
        }
      },
      "type": "object",
      "required": [
        "message",
        "severity",
        "type"
      ]
    },
    "google-native:cloudfunctions/v2:RepoSource": {
      "description": "Location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution. eg. helloworld (no leading slash allowed)"
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the Cloud Source Repository."
        },
        "tagName": {
          "type": "string",
          "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:RepoSourceResponse": {
      "description": "Location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution. eg. helloworld (no leading slash allowed)"
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the Cloud Source Repository."
        },
        "tagName": {
          "type": "string",
          "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object",
      "required": [
        "branchName",
        "commitSha",
        "dir",
        "project",
        "repoName",
        "tagName"
      ]
    },
    "google-native:cloudfunctions/v2:SecretEnvVar": {
      "description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:SecretEnvVarResponse": {
      "description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "key",
        "project",
        "secret",
        "version"
      ]
    },
    "google-native:cloudfunctions/v2:SecretVersion": {
      "description": "Configuration for a single version.",
      "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 mount_path as '/etc/secrets' and path as `secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:SecretVersionResponse": {
      "description": "Configuration for a single version.",
      "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 mount_path as '/etc/secrets' and path as `secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "path",
        "version"
      ]
    },
    "google-native:cloudfunctions/v2:SecretVolume": {
      "description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "The path within the container to mount the secret volume. For example, setting the mount_path 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"
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:SecretVersion"
          },
          "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:SecretVolumeResponse": {
      "description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "The path within the container to mount the secret volume. For example, setting the mount_path 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"
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:SecretVersionResponse"
          },
          "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."
        }
      },
      "type": "object",
      "required": [
        "mountPath",
        "project",
        "secret",
        "versions"
      ]
    },
    "google-native:cloudfunctions/v2:ServiceConfig": {
      "description": "Describes the Service being deployed. Currently Supported : Cloud Run (fully managed).",
      "properties": {
        "allTrafficOnLatestRevision": {
          "type": "boolean",
          "description": "Whether 100% of traffic is routed to the latest revision. On CreateFunction and UpdateFunction, when set to true, the revision being deployed will serve 100% of traffic, ignoring any traffic split settings, if any. On GetFunction, true will be returned if the latest revision is serving 100% of traffic."
        },
        "availableCpu": {
          "type": "string",
          "description": "[Preview] The number of CPUs used in a single container instance. Default value is calculated from available memory. Supports the same values as Cloud Run, see https://cloud.google.com/run/docs/reference/rest/v1/Container#resourcerequirements Example: \"1\" indicates 1 vCPU"
        },
        "availableMemory": {
          "type": "string",
          "description": "The amount of memory available for a function. Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is supplied the value is interpreted as bytes. See https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go a full description."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables that shall be available during function execution."
        },
        "ingressSettings": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:ServiceConfigIngressSettings",
          "description": "The ingress settings for the function, controlling what traffic can reach it."
        },
        "maxInstanceCount": {
          "type": "integer",
          "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details."
        },
        "maxInstanceRequestConcurrency": {
          "type": "integer",
          "description": "[Preview] Sets the maximum number of concurrent requests that each instance can receive. Defaults to 1."
        },
        "minInstanceCount": {
          "type": "integer",
          "description": "The limit on the minimum number of function instances that may coexist at a given time. Function instances are kept in idle state for a short period after they finished executing the request to reduce cold start time for subsequent requests. Setting a minimum instance count will ensure that the given number of instances are kept running in idle state always. This can help with cold start times when jump in incoming request count occurs after the idle instance would have been stopped in the default case."
        },
        "secretEnvironmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:SecretEnvVar"
          },
          "description": "Secret environment variables configuration."
        },
        "secretVolumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:SecretVolume"
          },
          "description": "Secret volumes configuration."
        },
        "securityLevel": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:ServiceConfigSecurityLevel",
          "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email of the service's service account. If empty, defaults to `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds."
        },
        "vpcConnector": {
          "type": "string",
          "description": "The Serverless VPC Access connector that this cloud function can connect to. The format of this field is `projects/*/locations/*/connectors/*`."
        },
        "vpcConnectorEgressSettings": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:ServiceConfigVpcConnectorEgressSettings",
          "description": "The egress settings for the connector, controlling what traffic is diverted through it."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:ServiceConfigIngressSettings": {
      "description": "The ingress settings for the function, controlling what traffic can reach it.",
      "type": "string",
      "enum": [
        {
          "name": "IngressSettingsUnspecified",
          "description": "Unspecified.",
          "value": "INGRESS_SETTINGS_UNSPECIFIED"
        },
        {
          "name": "AllowAll",
          "description": "Allow HTTP traffic from public and private sources.",
          "value": "ALLOW_ALL"
        },
        {
          "name": "AllowInternalOnly",
          "description": "Allow HTTP traffic from only private VPC sources.",
          "value": "ALLOW_INTERNAL_ONLY"
        },
        {
          "name": "AllowInternalAndGclb",
          "description": "Allow HTTP traffic from private VPC sources and through GCLB.",
          "value": "ALLOW_INTERNAL_AND_GCLB"
        }
      ]
    },
    "google-native:cloudfunctions/v2:ServiceConfigResponse": {
      "description": "Describes the Service being deployed. Currently Supported : Cloud Run (fully managed).",
      "properties": {
        "allTrafficOnLatestRevision": {
          "type": "boolean",
          "description": "Whether 100% of traffic is routed to the latest revision. On CreateFunction and UpdateFunction, when set to true, the revision being deployed will serve 100% of traffic, ignoring any traffic split settings, if any. On GetFunction, true will be returned if the latest revision is serving 100% of traffic."
        },
        "availableCpu": {
          "type": "string",
          "description": "[Preview] The number of CPUs used in a single container instance. Default value is calculated from available memory. Supports the same values as Cloud Run, see https://cloud.google.com/run/docs/reference/rest/v1/Container#resourcerequirements Example: \"1\" indicates 1 vCPU"
        },
        "availableMemory": {
          "type": "string",
          "description": "The amount of memory available for a function. Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is supplied the value is interpreted as bytes. See https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go a full description."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables that shall be available during function execution."
        },
        "ingressSettings": {
          "type": "string",
          "description": "The ingress settings for the function, controlling what traffic can reach it."
        },
        "maxInstanceCount": {
          "type": "integer",
          "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details."
        },
        "maxInstanceRequestConcurrency": {
          "type": "integer",
          "description": "[Preview] Sets the maximum number of concurrent requests that each instance can receive. Defaults to 1."
        },
        "minInstanceCount": {
          "type": "integer",
          "description": "The limit on the minimum number of function instances that may coexist at a given time. Function instances are kept in idle state for a short period after they finished executing the request to reduce cold start time for subsequent requests. Setting a minimum instance count will ensure that the given number of instances are kept running in idle state always. This can help with cold start times when jump in incoming request count occurs after the idle instance would have been stopped in the default case."
        },
        "revision": {
          "type": "string",
          "description": "The name of service revision."
        },
        "secretEnvironmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:SecretEnvVarResponse"
          },
          "description": "Secret environment variables configuration."
        },
        "secretVolumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:SecretVolumeResponse"
          },
          "description": "Secret volumes configuration."
        },
        "securityLevel": {
          "type": "string",
          "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY."
        },
        "service": {
          "type": "string",
          "description": "Name of the service associated with a Function. The format of this field is `projects/{project}/locations/{region}/services/{service}`"
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email of the service's service account. If empty, defaults to `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds."
        },
        "uri": {
          "type": "string",
          "description": "URI of the Service deployed."
        },
        "vpcConnector": {
          "type": "string",
          "description": "The Serverless VPC Access connector that this cloud function can connect to. The format of this field is `projects/*/locations/*/connectors/*`."
        },
        "vpcConnectorEgressSettings": {
          "type": "string",
          "description": "The egress settings for the connector, controlling what traffic is diverted through it."
        }
      },
      "type": "object",
      "required": [
        "allTrafficOnLatestRevision",
        "availableCpu",
        "availableMemory",
        "environmentVariables",
        "ingressSettings",
        "maxInstanceCount",
        "maxInstanceRequestConcurrency",
        "minInstanceCount",
        "revision",
        "secretEnvironmentVariables",
        "secretVolumes",
        "securityLevel",
        "service",
        "serviceAccountEmail",
        "timeoutSeconds",
        "uri",
        "vpcConnector",
        "vpcConnectorEgressSettings"
      ]
    },
    "google-native:cloudfunctions/v2:ServiceConfigSecurityLevel": {
      "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY.",
      "type": "string",
      "enum": [
        {
          "name": "SecurityLevelUnspecified",
          "description": "Unspecified.",
          "value": "SECURITY_LEVEL_UNSPECIFIED"
        },
        {
          "name": "SecureAlways",
          "description": "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
          "value": "SECURE_ALWAYS"
        },
        {
          "name": "SecureOptional",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
          "value": "SECURE_OPTIONAL"
        }
      ]
    },
    "google-native:cloudfunctions/v2:ServiceConfigVpcConnectorEgressSettings": {
      "description": "The egress settings for the connector, controlling what traffic is diverted through it.",
      "type": "string",
      "enum": [
        {
          "name": "VpcConnectorEgressSettingsUnspecified",
          "description": "Unspecified.",
          "value": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED"
        },
        {
          "name": "PrivateRangesOnly",
          "description": "Use the VPC Access Connector only for private IP space from RFC1918.",
          "value": "PRIVATE_RANGES_ONLY"
        },
        {
          "name": "AllTraffic",
          "description": "Force the use of VPC Access Connector for all egress traffic from the function.",
          "value": "ALL_TRAFFIC"
        }
      ]
    },
    "google-native:cloudfunctions/v2:Source": {
      "description": "The location of the function source code.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "If provided, get the source from GitHub repository. This option is valid only for GCF 1st Gen function. Example: https://github.com///blob//"
        },
        "repoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:RepoSource",
          "description": "If provided, get the source from this location in a Cloud Source Repository."
        },
        "storageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:StorageSource",
          "description": "If provided, get the source from this location in Google Cloud Storage."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:SourceProvenanceResponse": {
      "description": "Provenance of the source. Ways to find the original source, or verify that some source was used for this build.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "A copy of the build's `source.git_uri`, if exists, with any commits resolved."
        },
        "resolvedRepoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:RepoSourceResponse",
          "description": "A copy of the build's `source.repo_source`, if exists, with any revisions resolved."
        },
        "resolvedStorageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:StorageSourceResponse",
          "description": "A copy of the build's `source.storage_source`, if exists, with any generations resolved."
        }
      },
      "type": "object",
      "required": [
        "gitUri",
        "resolvedRepoSource",
        "resolvedStorageSource"
      ]
    },
    "google-native:cloudfunctions/v2:SourceResponse": {
      "description": "The location of the function source code.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "If provided, get the source from GitHub repository. This option is valid only for GCF 1st Gen function. Example: https://github.com///blob//"
        },
        "repoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:RepoSourceResponse",
          "description": "If provided, get the source from this location in a Cloud Source Repository."
        },
        "storageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:StorageSourceResponse",
          "description": "If provided, get the source from this location in Google Cloud Storage."
        }
      },
      "type": "object",
      "required": [
        "gitUri",
        "repoSource",
        "storageSource"
      ]
    },
    "google-native:cloudfunctions/v2:StorageSource": {
      "description": "Location of the source in an archive file in Google Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2:StorageSourceResponse": {
      "description": "Location of the source in an archive file in Google Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object"
      ]
    },
    "google-native:cloudfunctions/v2alpha:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudfunctions/v2alpha:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudfunctions/v2alpha:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudfunctions/v2alpha:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2alpha:BuildConfig": {
      "description": "Describes the Build step of the function that builds a container from the given source.",
      "properties": {
        "dockerRegistry": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:BuildConfigDockerRegistry",
          "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments."
        },
        "dockerRepository": {
          "type": "string",
          "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. If unspecified, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'."
        },
        "entryPoint": {
          "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\". For Node.js this is name of a function exported by the module specified in `source_location`."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided build-time environment variables for the function"
        },
        "runtime": {
          "type": "string",
          "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime)."
        },
        "source": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:Source",
          "description": "The location of the function source code."
        },
        "sourceToken": {
          "type": "string",
          "description": "An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments."
        },
        "workerPool": {
          "type": "string",
          "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (service-@gcf-admin-robot.iam.gserviceaccount.com) must be granted the role Cloud Build Custom Workers Builder (roles/cloudbuild.customworkers.builder) in the project."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:BuildConfigDockerRegistry": {
      "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments.",
      "type": "string",
      "enum": [
        {
          "name": "DockerRegistryUnspecified",
          "description": "Unspecified.",
          "value": "DOCKER_REGISTRY_UNSPECIFIED"
        },
        {
          "name": "ContainerRegistry",
          "description": "Docker images will be stored in multi-regional Container Registry repositories named `gcf`.",
          "value": "CONTAINER_REGISTRY"
        },
        {
          "name": "ArtifactRegistry",
          "description": "Docker images will be stored in regional Artifact Registry repositories. By default, GCF will create and use repositories named `gcf-artifacts` in every region in which a function is deployed. But the repository to use can also be specified by the user using the `docker_repository` field.",
          "value": "ARTIFACT_REGISTRY"
        }
      ]
    },
    "google-native:cloudfunctions/v2alpha:BuildConfigResponse": {
      "description": "Describes the Build step of the function that builds a container from the given source.",
      "properties": {
        "build": {
          "type": "string",
          "description": "The Cloud Build name of the latest successful deployment of the function."
        },
        "dockerRegistry": {
          "type": "string",
          "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments."
        },
        "dockerRepository": {
          "type": "string",
          "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. If unspecified, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'."
        },
        "entryPoint": {
          "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\". For Node.js this is name of a function exported by the module specified in `source_location`."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided build-time environment variables for the function"
        },
        "runtime": {
          "type": "string",
          "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime)."
        },
        "source": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:SourceResponse",
          "description": "The location of the function source code."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:SourceProvenanceResponse",
          "description": "A permanent fixed identifier for source."
        },
        "sourceToken": {
          "type": "string",
          "description": "An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments."
        },
        "workerPool": {
          "type": "string",
          "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (service-@gcf-admin-robot.iam.gserviceaccount.com) must be granted the role Cloud Build Custom Workers Builder (roles/cloudbuild.customworkers.builder) in the project."
        }
      },
      "type": "object",
      "required": [
        "build",
        "dockerRegistry",
        "dockerRepository",
        "entryPoint",
        "environmentVariables",
        "runtime",
        "source",
        "sourceProvenance",
        "sourceToken",
        "workerPool"
      ]
    },
    "google-native:cloudfunctions/v2alpha:EventFilter": {
      "description": "Filters events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute."
        },
        "operator": {
          "type": "string",
          "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The only allowed value is `match-path-pattern`."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "value"
      ]
    },
    "google-native:cloudfunctions/v2alpha:EventFilterResponse": {
      "description": "Filters events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute."
        },
        "operator": {
          "type": "string",
          "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The only allowed value is `match-path-pattern`."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "operator",
        "value"
      ]
    },
    "google-native:cloudfunctions/v2alpha:EventTrigger": {
      "description": "Describes EventTrigger, used to request events to be sent from another service.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners."
        },
        "eventFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:EventFilter"
          },
          "description": "Criteria used to filter events."
        },
        "eventType": {
          "type": "string",
          "description": "The type of event to observe. For example: `google.cloud.audit.log.v1.written` or `google.cloud.pubsub.topic.v1.messagePublished`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of a Pub/Sub topic in the same project that will be used as the transport topic for the event delivery. Format: `projects/{project}/topics/{topic}`. This is only valid for events of type `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here will not be deleted at function deletion."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:EventTriggerRetryPolicy",
          "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them)."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. The email of the trigger's service account. The service account must have permission to invoke Cloud Run services, the permission is `run.routes.invoke`. If empty, defaults to the Compute Engine default service account: `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "triggerRegion": {
          "type": "string",
          "description": "The region that the trigger will be in. The trigger will only receive events originating in this region. It can be the same region as the function, a different region or multi-region, or the global region. If not provided, defaults to the same region as the function."
        }
      },
      "type": "object",
      "required": [
        "eventType"
      ]
    },
    "google-native:cloudfunctions/v2alpha:EventTriggerResponse": {
      "description": "Describes EventTrigger, used to request events to be sent from another service.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners."
        },
        "eventFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:EventFilterResponse"
          },
          "description": "Criteria used to filter events."
        },
        "eventType": {
          "type": "string",
          "description": "The type of event to observe. For example: `google.cloud.audit.log.v1.written` or `google.cloud.pubsub.topic.v1.messagePublished`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of a Pub/Sub topic in the same project that will be used as the transport topic for the event delivery. Format: `projects/{project}/topics/{topic}`. This is only valid for events of type `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here will not be deleted at function deletion."
        },
        "retryPolicy": {
          "type": "string",
          "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them)."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. The email of the trigger's service account. The service account must have permission to invoke Cloud Run services, the permission is `run.routes.invoke`. If empty, defaults to the Compute Engine default service account: `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "trigger": {
          "type": "string",
          "description": "The resource name of the Eventarc trigger. The format of this field is `projects/{project}/locations/{region}/triggers/{trigger}`."
        },
        "triggerRegion": {
          "type": "string",
          "description": "The region that the trigger will be in. The trigger will only receive events originating in this region. It can be the same region as the function, a different region or multi-region, or the global region. If not provided, defaults to the same region as the function."
        }
      },
      "type": "object",
      "required": [
        "channel",
        "eventFilters",
        "eventType",
        "pubsubTopic",
        "retryPolicy",
        "serviceAccountEmail",
        "trigger",
        "triggerRegion"
      ]
    },
    "google-native:cloudfunctions/v2alpha:EventTriggerRetryPolicy": {
      "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them).",
      "type": "string",
      "enum": [
        {
          "name": "RetryPolicyUnspecified",
          "description": "Not specified.",
          "value": "RETRY_POLICY_UNSPECIFIED"
        },
        {
          "name": "RetryPolicyDoNotRetry",
          "description": "Do not retry.",
          "value": "RETRY_POLICY_DO_NOT_RETRY"
        },
        {
          "name": "RetryPolicyRetry",
          "description": "Retry on any failure, retry up to 7 days with an exponential backoff (capped at 10 seconds).",
          "value": "RETRY_POLICY_RETRY"
        }
      ]
    },
    "google-native:cloudfunctions/v2alpha:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudfunctions/v2alpha:FunctionEnvironment": {
      "description": "Describe whether the function is 1st Gen or 2nd Gen.",
      "type": "string",
      "enum": [
        {
          "name": "EnvironmentUnspecified",
          "description": "Unspecified",
          "value": "ENVIRONMENT_UNSPECIFIED"
        },
        {
          "name": "Gen1",
          "description": "Gen 1",
          "value": "GEN_1"
        },
        {
          "name": "Gen2",
          "description": "Gen 2",
          "value": "GEN_2"
        }
      ]
    },
    "google-native:cloudfunctions/v2alpha:GoogleCloudFunctionsV2alphaStateMessageResponse": {
      "description": "Informational messages about the state of the Cloud Function or Operation.",
      "properties": {
        "message": {
          "type": "string",
          "description": "The message."
        },
        "severity": {
          "type": "string",
          "description": "Severity of the state message."
        },
        "type": {
          "type": "string",
          "description": "One-word CamelCase type of the state message."
        }
      },
      "type": "object",
      "required": [
        "message",
        "severity",
        "type"
      ]
    },
    "google-native:cloudfunctions/v2alpha:RepoSource": {
      "description": "Location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution. eg. helloworld (no leading slash allowed)"
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the Cloud Source Repository."
        },
        "tagName": {
          "type": "string",
          "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:RepoSourceResponse": {
      "description": "Location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution. eg. helloworld (no leading slash allowed)"
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the Cloud Source Repository."
        },
        "tagName": {
          "type": "string",
          "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object",
      "required": [
        "branchName",
        "commitSha",
        "dir",
        "project",
        "repoName",
        "tagName"
      ]
    },
    "google-native:cloudfunctions/v2alpha:SecretEnvVar": {
      "description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:SecretEnvVarResponse": {
      "description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "key",
        "project",
        "secret",
        "version"
      ]
    },
    "google-native:cloudfunctions/v2alpha:SecretVersion": {
      "description": "Configuration for a single version.",
      "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 mount_path as '/etc/secrets' and path as `secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:SecretVersionResponse": {
      "description": "Configuration for a single version.",
      "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 mount_path as '/etc/secrets' and path as `secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "path",
        "version"
      ]
    },
    "google-native:cloudfunctions/v2alpha:SecretVolume": {
      "description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "The path within the container to mount the secret volume. For example, setting the mount_path 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"
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:SecretVersion"
          },
          "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:SecretVolumeResponse": {
      "description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "The path within the container to mount the secret volume. For example, setting the mount_path 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"
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:SecretVersionResponse"
          },
          "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."
        }
      },
      "type": "object",
      "required": [
        "mountPath",
        "project",
        "secret",
        "versions"
      ]
    },
    "google-native:cloudfunctions/v2alpha:ServiceConfig": {
      "description": "Describes the Service being deployed. Currently Supported : Cloud Run (fully managed).",
      "properties": {
        "allTrafficOnLatestRevision": {
          "type": "boolean",
          "description": "Whether 100% of traffic is routed to the latest revision. On CreateFunction and UpdateFunction, when set to true, the revision being deployed will serve 100% of traffic, ignoring any traffic split settings, if any. On GetFunction, true will be returned if the latest revision is serving 100% of traffic."
        },
        "availableCpu": {
          "type": "string",
          "description": "[Preview] The number of CPUs used in a single container instance. Default value is calculated from available memory. Supports the same values as Cloud Run, see https://cloud.google.com/run/docs/reference/rest/v1/Container#resourcerequirements Example: \"1\" indicates 1 vCPU"
        },
        "availableMemory": {
          "type": "string",
          "description": "The amount of memory available for a function. Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is supplied the value is interpreted as bytes. See https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go a full description."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables that shall be available during function execution."
        },
        "ingressSettings": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:ServiceConfigIngressSettings",
          "description": "The ingress settings for the function, controlling what traffic can reach it."
        },
        "maxInstanceCount": {
          "type": "integer",
          "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details."
        },
        "maxInstanceRequestConcurrency": {
          "type": "integer",
          "description": "[Preview] Sets the maximum number of concurrent requests that each instance can receive. Defaults to 1."
        },
        "minInstanceCount": {
          "type": "integer",
          "description": "The limit on the minimum number of function instances that may coexist at a given time. Function instances are kept in idle state for a short period after they finished executing the request to reduce cold start time for subsequent requests. Setting a minimum instance count will ensure that the given number of instances are kept running in idle state always. This can help with cold start times when jump in incoming request count occurs after the idle instance would have been stopped in the default case."
        },
        "secretEnvironmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:SecretEnvVar"
          },
          "description": "Secret environment variables configuration."
        },
        "secretVolumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:SecretVolume"
          },
          "description": "Secret volumes configuration."
        },
        "securityLevel": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:ServiceConfigSecurityLevel",
          "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email of the service's service account. If empty, defaults to `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds."
        },
        "vpcConnector": {
          "type": "string",
          "description": "The Serverless VPC Access connector that this cloud function can connect to. The format of this field is `projects/*/locations/*/connectors/*`."
        },
        "vpcConnectorEgressSettings": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:ServiceConfigVpcConnectorEgressSettings",
          "description": "The egress settings for the connector, controlling what traffic is diverted through it."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:ServiceConfigIngressSettings": {
      "description": "The ingress settings for the function, controlling what traffic can reach it.",
      "type": "string",
      "enum": [
        {
          "name": "IngressSettingsUnspecified",
          "description": "Unspecified.",
          "value": "INGRESS_SETTINGS_UNSPECIFIED"
        },
        {
          "name": "AllowAll",
          "description": "Allow HTTP traffic from public and private sources.",
          "value": "ALLOW_ALL"
        },
        {
          "name": "AllowInternalOnly",
          "description": "Allow HTTP traffic from only private VPC sources.",
          "value": "ALLOW_INTERNAL_ONLY"
        },
        {
          "name": "AllowInternalAndGclb",
          "description": "Allow HTTP traffic from private VPC sources and through GCLB.",
          "value": "ALLOW_INTERNAL_AND_GCLB"
        }
      ]
    },
    "google-native:cloudfunctions/v2alpha:ServiceConfigResponse": {
      "description": "Describes the Service being deployed. Currently Supported : Cloud Run (fully managed).",
      "properties": {
        "allTrafficOnLatestRevision": {
          "type": "boolean",
          "description": "Whether 100% of traffic is routed to the latest revision. On CreateFunction and UpdateFunction, when set to true, the revision being deployed will serve 100% of traffic, ignoring any traffic split settings, if any. On GetFunction, true will be returned if the latest revision is serving 100% of traffic."
        },
        "availableCpu": {
          "type": "string",
          "description": "[Preview] The number of CPUs used in a single container instance. Default value is calculated from available memory. Supports the same values as Cloud Run, see https://cloud.google.com/run/docs/reference/rest/v1/Container#resourcerequirements Example: \"1\" indicates 1 vCPU"
        },
        "availableMemory": {
          "type": "string",
          "description": "The amount of memory available for a function. Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is supplied the value is interpreted as bytes. See https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go a full description."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables that shall be available during function execution."
        },
        "ingressSettings": {
          "type": "string",
          "description": "The ingress settings for the function, controlling what traffic can reach it."
        },
        "maxInstanceCount": {
          "type": "integer",
          "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details."
        },
        "maxInstanceRequestConcurrency": {
          "type": "integer",
          "description": "[Preview] Sets the maximum number of concurrent requests that each instance can receive. Defaults to 1."
        },
        "minInstanceCount": {
          "type": "integer",
          "description": "The limit on the minimum number of function instances that may coexist at a given time. Function instances are kept in idle state for a short period after they finished executing the request to reduce cold start time for subsequent requests. Setting a minimum instance count will ensure that the given number of instances are kept running in idle state always. This can help with cold start times when jump in incoming request count occurs after the idle instance would have been stopped in the default case."
        },
        "revision": {
          "type": "string",
          "description": "The name of service revision."
        },
        "secretEnvironmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:SecretEnvVarResponse"
          },
          "description": "Secret environment variables configuration."
        },
        "secretVolumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:SecretVolumeResponse"
          },
          "description": "Secret volumes configuration."
        },
        "securityLevel": {
          "type": "string",
          "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY."
        },
        "service": {
          "type": "string",
          "description": "Name of the service associated with a Function. The format of this field is `projects/{project}/locations/{region}/services/{service}`"
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email of the service's service account. If empty, defaults to `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds."
        },
        "uri": {
          "type": "string",
          "description": "URI of the Service deployed."
        },
        "vpcConnector": {
          "type": "string",
          "description": "The Serverless VPC Access connector that this cloud function can connect to. The format of this field is `projects/*/locations/*/connectors/*`."
        },
        "vpcConnectorEgressSettings": {
          "type": "string",
          "description": "The egress settings for the connector, controlling what traffic is diverted through it."
        }
      },
      "type": "object",
      "required": [
        "allTrafficOnLatestRevision",
        "availableCpu",
        "availableMemory",
        "environmentVariables",
        "ingressSettings",
        "maxInstanceCount",
        "maxInstanceRequestConcurrency",
        "minInstanceCount",
        "revision",
        "secretEnvironmentVariables",
        "secretVolumes",
        "securityLevel",
        "service",
        "serviceAccountEmail",
        "timeoutSeconds",
        "uri",
        "vpcConnector",
        "vpcConnectorEgressSettings"
      ]
    },
    "google-native:cloudfunctions/v2alpha:ServiceConfigSecurityLevel": {
      "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY.",
      "type": "string",
      "enum": [
        {
          "name": "SecurityLevelUnspecified",
          "description": "Unspecified.",
          "value": "SECURITY_LEVEL_UNSPECIFIED"
        },
        {
          "name": "SecureAlways",
          "description": "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
          "value": "SECURE_ALWAYS"
        },
        {
          "name": "SecureOptional",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
          "value": "SECURE_OPTIONAL"
        }
      ]
    },
    "google-native:cloudfunctions/v2alpha:ServiceConfigVpcConnectorEgressSettings": {
      "description": "The egress settings for the connector, controlling what traffic is diverted through it.",
      "type": "string",
      "enum": [
        {
          "name": "VpcConnectorEgressSettingsUnspecified",
          "description": "Unspecified.",
          "value": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED"
        },
        {
          "name": "PrivateRangesOnly",
          "description": "Use the VPC Access Connector only for private IP space from RFC1918.",
          "value": "PRIVATE_RANGES_ONLY"
        },
        {
          "name": "AllTraffic",
          "description": "Force the use of VPC Access Connector for all egress traffic from the function.",
          "value": "ALL_TRAFFIC"
        }
      ]
    },
    "google-native:cloudfunctions/v2alpha:Source": {
      "description": "The location of the function source code.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "If provided, get the source from GitHub repository. This option is valid only for GCF 1st Gen function. Example: https://github.com///blob//"
        },
        "repoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:RepoSource",
          "description": "If provided, get the source from this location in a Cloud Source Repository."
        },
        "storageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:StorageSource",
          "description": "If provided, get the source from this location in Google Cloud Storage."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:SourceProvenanceResponse": {
      "description": "Provenance of the source. Ways to find the original source, or verify that some source was used for this build.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "A copy of the build's `source.git_uri`, if exists, with any commits resolved."
        },
        "resolvedRepoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:RepoSourceResponse",
          "description": "A copy of the build's `source.repo_source`, if exists, with any revisions resolved."
        },
        "resolvedStorageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:StorageSourceResponse",
          "description": "A copy of the build's `source.storage_source`, if exists, with any generations resolved."
        }
      },
      "type": "object",
      "required": [
        "gitUri",
        "resolvedRepoSource",
        "resolvedStorageSource"
      ]
    },
    "google-native:cloudfunctions/v2alpha:SourceResponse": {
      "description": "The location of the function source code.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "If provided, get the source from GitHub repository. This option is valid only for GCF 1st Gen function. Example: https://github.com///blob//"
        },
        "repoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:RepoSourceResponse",
          "description": "If provided, get the source from this location in a Cloud Source Repository."
        },
        "storageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:StorageSourceResponse",
          "description": "If provided, get the source from this location in Google Cloud Storage."
        }
      },
      "type": "object",
      "required": [
        "gitUri",
        "repoSource",
        "storageSource"
      ]
    },
    "google-native:cloudfunctions/v2alpha:StorageSource": {
      "description": "Location of the source in an archive file in Google Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2alpha:StorageSourceResponse": {
      "description": "Location of the source in an archive file in Google Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object"
      ]
    },
    "google-native:cloudfunctions/v2beta:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudfunctions/v2beta:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudfunctions/v2beta:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudfunctions/v2beta:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2beta:BuildConfig": {
      "description": "Describes the Build step of the function that builds a container from the given source.",
      "properties": {
        "dockerRegistry": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:BuildConfigDockerRegistry",
          "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments."
        },
        "dockerRepository": {
          "type": "string",
          "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. If unspecified, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'."
        },
        "entryPoint": {
          "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\". For Node.js this is name of a function exported by the module specified in `source_location`."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided build-time environment variables for the function"
        },
        "runtime": {
          "type": "string",
          "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime)."
        },
        "source": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:Source",
          "description": "The location of the function source code."
        },
        "sourceToken": {
          "type": "string",
          "description": "An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments."
        },
        "workerPool": {
          "type": "string",
          "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (service-@gcf-admin-robot.iam.gserviceaccount.com) must be granted the role Cloud Build Custom Workers Builder (roles/cloudbuild.customworkers.builder) in the project."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:BuildConfigDockerRegistry": {
      "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments.",
      "type": "string",
      "enum": [
        {
          "name": "DockerRegistryUnspecified",
          "description": "Unspecified.",
          "value": "DOCKER_REGISTRY_UNSPECIFIED"
        },
        {
          "name": "ContainerRegistry",
          "description": "Docker images will be stored in multi-regional Container Registry repositories named `gcf`.",
          "value": "CONTAINER_REGISTRY"
        },
        {
          "name": "ArtifactRegistry",
          "description": "Docker images will be stored in regional Artifact Registry repositories. By default, GCF will create and use repositories named `gcf-artifacts` in every region in which a function is deployed. But the repository to use can also be specified by the user using the `docker_repository` field.",
          "value": "ARTIFACT_REGISTRY"
        }
      ]
    },
    "google-native:cloudfunctions/v2beta:BuildConfigResponse": {
      "description": "Describes the Build step of the function that builds a container from the given source.",
      "properties": {
        "build": {
          "type": "string",
          "description": "The Cloud Build name of the latest successful deployment of the function."
        },
        "dockerRegistry": {
          "type": "string",
          "description": "Docker Registry to use for this deployment. This configuration is only applicable to 1st Gen functions, 2nd Gen functions can only use Artifact Registry. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments."
        },
        "dockerRepository": {
          "type": "string",
          "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. If unspecified, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'."
        },
        "entryPoint": {
          "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\". For Node.js this is name of a function exported by the module specified in `source_location`."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided build-time environment variables for the function"
        },
        "runtime": {
          "type": "string",
          "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime)."
        },
        "source": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:SourceResponse",
          "description": "The location of the function source code."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:SourceProvenanceResponse",
          "description": "A permanent fixed identifier for source."
        },
        "sourceToken": {
          "type": "string",
          "description": "An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments."
        },
        "workerPool": {
          "type": "string",
          "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (service-@gcf-admin-robot.iam.gserviceaccount.com) must be granted the role Cloud Build Custom Workers Builder (roles/cloudbuild.customworkers.builder) in the project."
        }
      },
      "type": "object",
      "required": [
        "build",
        "dockerRegistry",
        "dockerRepository",
        "entryPoint",
        "environmentVariables",
        "runtime",
        "source",
        "sourceProvenance",
        "sourceToken",
        "workerPool"
      ]
    },
    "google-native:cloudfunctions/v2beta:EventFilter": {
      "description": "Filters events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute."
        },
        "operator": {
          "type": "string",
          "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The only allowed value is `match-path-pattern`."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "value"
      ]
    },
    "google-native:cloudfunctions/v2beta:EventFilterResponse": {
      "description": "Filters events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute."
        },
        "operator": {
          "type": "string",
          "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The only allowed value is `match-path-pattern`."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "operator",
        "value"
      ]
    },
    "google-native:cloudfunctions/v2beta:EventTrigger": {
      "description": "Describes EventTrigger, used to request events to be sent from another service.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners."
        },
        "eventFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:EventFilter"
          },
          "description": "Criteria used to filter events."
        },
        "eventType": {
          "type": "string",
          "description": "The type of event to observe. For example: `google.cloud.audit.log.v1.written` or `google.cloud.pubsub.topic.v1.messagePublished`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of a Pub/Sub topic in the same project that will be used as the transport topic for the event delivery. Format: `projects/{project}/topics/{topic}`. This is only valid for events of type `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here will not be deleted at function deletion."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:EventTriggerRetryPolicy",
          "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them)."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. The email of the trigger's service account. The service account must have permission to invoke Cloud Run services, the permission is `run.routes.invoke`. If empty, defaults to the Compute Engine default service account: `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "triggerRegion": {
          "type": "string",
          "description": "The region that the trigger will be in. The trigger will only receive events originating in this region. It can be the same region as the function, a different region or multi-region, or the global region. If not provided, defaults to the same region as the function."
        }
      },
      "type": "object",
      "required": [
        "eventType"
      ]
    },
    "google-native:cloudfunctions/v2beta:EventTriggerResponse": {
      "description": "Describes EventTrigger, used to request events to be sent from another service.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners."
        },
        "eventFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:EventFilterResponse"
          },
          "description": "Criteria used to filter events."
        },
        "eventType": {
          "type": "string",
          "description": "The type of event to observe. For example: `google.cloud.audit.log.v1.written` or `google.cloud.pubsub.topic.v1.messagePublished`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "Optional. The name of a Pub/Sub topic in the same project that will be used as the transport topic for the event delivery. Format: `projects/{project}/topics/{topic}`. This is only valid for events of type `google.cloud.pubsub.topic.v1.messagePublished`. The topic provided here will not be deleted at function deletion."
        },
        "retryPolicy": {
          "type": "string",
          "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them)."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. The email of the trigger's service account. The service account must have permission to invoke Cloud Run services, the permission is `run.routes.invoke`. If empty, defaults to the Compute Engine default service account: `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "trigger": {
          "type": "string",
          "description": "The resource name of the Eventarc trigger. The format of this field is `projects/{project}/locations/{region}/triggers/{trigger}`."
        },
        "triggerRegion": {
          "type": "string",
          "description": "The region that the trigger will be in. The trigger will only receive events originating in this region. It can be the same region as the function, a different region or multi-region, or the global region. If not provided, defaults to the same region as the function."
        }
      },
      "type": "object",
      "required": [
        "channel",
        "eventFilters",
        "eventType",
        "pubsubTopic",
        "retryPolicy",
        "serviceAccountEmail",
        "trigger",
        "triggerRegion"
      ]
    },
    "google-native:cloudfunctions/v2beta:EventTriggerRetryPolicy": {
      "description": "Optional. If unset, then defaults to ignoring failures (i.e. not retrying them).",
      "type": "string",
      "enum": [
        {
          "name": "RetryPolicyUnspecified",
          "description": "Not specified.",
          "value": "RETRY_POLICY_UNSPECIFIED"
        },
        {
          "name": "RetryPolicyDoNotRetry",
          "description": "Do not retry.",
          "value": "RETRY_POLICY_DO_NOT_RETRY"
        },
        {
          "name": "RetryPolicyRetry",
          "description": "Retry on any failure, retry up to 7 days with an exponential backoff (capped at 10 seconds).",
          "value": "RETRY_POLICY_RETRY"
        }
      ]
    },
    "google-native:cloudfunctions/v2beta:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudfunctions/v2beta:FunctionEnvironment": {
      "description": "Describe whether the function is 1st Gen or 2nd Gen.",
      "type": "string",
      "enum": [
        {
          "name": "EnvironmentUnspecified",
          "description": "Unspecified",
          "value": "ENVIRONMENT_UNSPECIFIED"
        },
        {
          "name": "Gen1",
          "description": "Gen 1",
          "value": "GEN_1"
        },
        {
          "name": "Gen2",
          "description": "Gen 2",
          "value": "GEN_2"
        }
      ]
    },
    "google-native:cloudfunctions/v2beta:GoogleCloudFunctionsV2betaStateMessageResponse": {
      "description": "Informational messages about the state of the Cloud Function or Operation.",
      "properties": {
        "message": {
          "type": "string",
          "description": "The message."
        },
        "severity": {
          "type": "string",
          "description": "Severity of the state message."
        },
        "type": {
          "type": "string",
          "description": "One-word CamelCase type of the state message."
        }
      },
      "type": "object",
      "required": [
        "message",
        "severity",
        "type"
      ]
    },
    "google-native:cloudfunctions/v2beta:RepoSource": {
      "description": "Location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution. eg. helloworld (no leading slash allowed)"
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the Cloud Source Repository."
        },
        "tagName": {
          "type": "string",
          "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:RepoSourceResponse": {
      "description": "Location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "dir": {
          "type": "string",
          "description": "Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution. eg. helloworld (no leading slash allowed)"
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the Cloud Source Repository."
        },
        "tagName": {
          "type": "string",
          "description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax"
        }
      },
      "type": "object",
      "required": [
        "branchName",
        "commitSha",
        "dir",
        "project",
        "repoName",
        "tagName"
      ]
    },
    "google-native:cloudfunctions/v2beta:SecretEnvVar": {
      "description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:SecretEnvVarResponse": {
      "description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "key",
        "project",
        "secret",
        "version"
      ]
    },
    "google-native:cloudfunctions/v2beta:SecretVersion": {
      "description": "Configuration for a single version.",
      "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 mount_path as '/etc/secrets' and path as `secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:SecretVersionResponse": {
      "description": "Configuration for a single version.",
      "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 mount_path as '/etc/secrets' and path as `secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "path",
        "version"
      ]
    },
    "google-native:cloudfunctions/v2beta:SecretVolume": {
      "description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "The path within the container to mount the secret volume. For example, setting the mount_path 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"
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:SecretVersion"
          },
          "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:SecretVolumeResponse": {
      "description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "The path within the container to mount the secret volume. For example, setting the mount_path 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"
        },
        "project": {
          "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 is assumed that the secret is in the same project as the function."
        },
        "secret": {
          "type": "string",
          "description": "Name of the secret in secret manager (not the full resource name)."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:SecretVersionResponse"
          },
          "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."
        }
      },
      "type": "object",
      "required": [
        "mountPath",
        "project",
        "secret",
        "versions"
      ]
    },
    "google-native:cloudfunctions/v2beta:ServiceConfig": {
      "description": "Describes the Service being deployed. Currently Supported : Cloud Run (fully managed).",
      "properties": {
        "allTrafficOnLatestRevision": {
          "type": "boolean",
          "description": "Whether 100% of traffic is routed to the latest revision. On CreateFunction and UpdateFunction, when set to true, the revision being deployed will serve 100% of traffic, ignoring any traffic split settings, if any. On GetFunction, true will be returned if the latest revision is serving 100% of traffic."
        },
        "availableCpu": {
          "type": "string",
          "description": "[Preview] The number of CPUs used in a single container instance. Default value is calculated from available memory. Supports the same values as Cloud Run, see https://cloud.google.com/run/docs/reference/rest/v1/Container#resourcerequirements Example: \"1\" indicates 1 vCPU"
        },
        "availableMemory": {
          "type": "string",
          "description": "The amount of memory available for a function. Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is supplied the value is interpreted as bytes. See https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go a full description."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables that shall be available during function execution."
        },
        "ingressSettings": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:ServiceConfigIngressSettings",
          "description": "The ingress settings for the function, controlling what traffic can reach it."
        },
        "maxInstanceCount": {
          "type": "integer",
          "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details."
        },
        "maxInstanceRequestConcurrency": {
          "type": "integer",
          "description": "[Preview] Sets the maximum number of concurrent requests that each instance can receive. Defaults to 1."
        },
        "minInstanceCount": {
          "type": "integer",
          "description": "The limit on the minimum number of function instances that may coexist at a given time. Function instances are kept in idle state for a short period after they finished executing the request to reduce cold start time for subsequent requests. Setting a minimum instance count will ensure that the given number of instances are kept running in idle state always. This can help with cold start times when jump in incoming request count occurs after the idle instance would have been stopped in the default case."
        },
        "secretEnvironmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:SecretEnvVar"
          },
          "description": "Secret environment variables configuration."
        },
        "secretVolumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:SecretVolume"
          },
          "description": "Secret volumes configuration."
        },
        "securityLevel": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:ServiceConfigSecurityLevel",
          "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email of the service's service account. If empty, defaults to `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds."
        },
        "vpcConnector": {
          "type": "string",
          "description": "The Serverless VPC Access connector that this cloud function can connect to. The format of this field is `projects/*/locations/*/connectors/*`."
        },
        "vpcConnectorEgressSettings": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:ServiceConfigVpcConnectorEgressSettings",
          "description": "The egress settings for the connector, controlling what traffic is diverted through it."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:ServiceConfigIngressSettings": {
      "description": "The ingress settings for the function, controlling what traffic can reach it.",
      "type": "string",
      "enum": [
        {
          "name": "IngressSettingsUnspecified",
          "description": "Unspecified.",
          "value": "INGRESS_SETTINGS_UNSPECIFIED"
        },
        {
          "name": "AllowAll",
          "description": "Allow HTTP traffic from public and private sources.",
          "value": "ALLOW_ALL"
        },
        {
          "name": "AllowInternalOnly",
          "description": "Allow HTTP traffic from only private VPC sources.",
          "value": "ALLOW_INTERNAL_ONLY"
        },
        {
          "name": "AllowInternalAndGclb",
          "description": "Allow HTTP traffic from private VPC sources and through GCLB.",
          "value": "ALLOW_INTERNAL_AND_GCLB"
        }
      ]
    },
    "google-native:cloudfunctions/v2beta:ServiceConfigResponse": {
      "description": "Describes the Service being deployed. Currently Supported : Cloud Run (fully managed).",
      "properties": {
        "allTrafficOnLatestRevision": {
          "type": "boolean",
          "description": "Whether 100% of traffic is routed to the latest revision. On CreateFunction and UpdateFunction, when set to true, the revision being deployed will serve 100% of traffic, ignoring any traffic split settings, if any. On GetFunction, true will be returned if the latest revision is serving 100% of traffic."
        },
        "availableCpu": {
          "type": "string",
          "description": "[Preview] The number of CPUs used in a single container instance. Default value is calculated from available memory. Supports the same values as Cloud Run, see https://cloud.google.com/run/docs/reference/rest/v1/Container#resourcerequirements Example: \"1\" indicates 1 vCPU"
        },
        "availableMemory": {
          "type": "string",
          "description": "The amount of memory available for a function. Defaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is supplied the value is interpreted as bytes. See https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go a full description."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables that shall be available during function execution."
        },
        "ingressSettings": {
          "type": "string",
          "description": "The ingress settings for the function, controlling what traffic can reach it."
        },
        "maxInstanceCount": {
          "type": "integer",
          "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details."
        },
        "maxInstanceRequestConcurrency": {
          "type": "integer",
          "description": "[Preview] Sets the maximum number of concurrent requests that each instance can receive. Defaults to 1."
        },
        "minInstanceCount": {
          "type": "integer",
          "description": "The limit on the minimum number of function instances that may coexist at a given time. Function instances are kept in idle state for a short period after they finished executing the request to reduce cold start time for subsequent requests. Setting a minimum instance count will ensure that the given number of instances are kept running in idle state always. This can help with cold start times when jump in incoming request count occurs after the idle instance would have been stopped in the default case."
        },
        "revision": {
          "type": "string",
          "description": "The name of service revision."
        },
        "secretEnvironmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:SecretEnvVarResponse"
          },
          "description": "Secret environment variables configuration."
        },
        "secretVolumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:SecretVolumeResponse"
          },
          "description": "Secret volumes configuration."
        },
        "securityLevel": {
          "type": "string",
          "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY."
        },
        "service": {
          "type": "string",
          "description": "Name of the service associated with a Function. The format of this field is `projects/{project}/locations/{region}/services/{service}`"
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email of the service's service account. If empty, defaults to `{project_number}-compute@developer.gserviceaccount.com`."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds."
        },
        "uri": {
          "type": "string",
          "description": "URI of the Service deployed."
        },
        "vpcConnector": {
          "type": "string",
          "description": "The Serverless VPC Access connector that this cloud function can connect to. The format of this field is `projects/*/locations/*/connectors/*`."
        },
        "vpcConnectorEgressSettings": {
          "type": "string",
          "description": "The egress settings for the connector, controlling what traffic is diverted through it."
        }
      },
      "type": "object",
      "required": [
        "allTrafficOnLatestRevision",
        "availableCpu",
        "availableMemory",
        "environmentVariables",
        "ingressSettings",
        "maxInstanceCount",
        "maxInstanceRequestConcurrency",
        "minInstanceCount",
        "revision",
        "secretEnvironmentVariables",
        "secretVolumes",
        "securityLevel",
        "service",
        "serviceAccountEmail",
        "timeoutSeconds",
        "uri",
        "vpcConnector",
        "vpcConnectorEgressSettings"
      ]
    },
    "google-native:cloudfunctions/v2beta:ServiceConfigSecurityLevel": {
      "description": "Security level configure whether the function only accepts https. This configuration is only applicable to 1st Gen functions with Http trigger. By default https is optional for 1st Gen functions; 2nd Gen functions are https ONLY.",
      "type": "string",
      "enum": [
        {
          "name": "SecurityLevelUnspecified",
          "description": "Unspecified.",
          "value": "SECURITY_LEVEL_UNSPECIFIED"
        },
        {
          "name": "SecureAlways",
          "description": "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
          "value": "SECURE_ALWAYS"
        },
        {
          "name": "SecureOptional",
          "description": "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.",
          "value": "SECURE_OPTIONAL"
        }
      ]
    },
    "google-native:cloudfunctions/v2beta:ServiceConfigVpcConnectorEgressSettings": {
      "description": "The egress settings for the connector, controlling what traffic is diverted through it.",
      "type": "string",
      "enum": [
        {
          "name": "VpcConnectorEgressSettingsUnspecified",
          "description": "Unspecified.",
          "value": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED"
        },
        {
          "name": "PrivateRangesOnly",
          "description": "Use the VPC Access Connector only for private IP space from RFC1918.",
          "value": "PRIVATE_RANGES_ONLY"
        },
        {
          "name": "AllTraffic",
          "description": "Force the use of VPC Access Connector for all egress traffic from the function.",
          "value": "ALL_TRAFFIC"
        }
      ]
    },
    "google-native:cloudfunctions/v2beta:Source": {
      "description": "The location of the function source code.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "If provided, get the source from GitHub repository. This option is valid only for GCF 1st Gen function. Example: https://github.com///blob//"
        },
        "repoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:RepoSource",
          "description": "If provided, get the source from this location in a Cloud Source Repository."
        },
        "storageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:StorageSource",
          "description": "If provided, get the source from this location in Google Cloud Storage."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:SourceProvenanceResponse": {
      "description": "Provenance of the source. Ways to find the original source, or verify that some source was used for this build.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "A copy of the build's `source.git_uri`, if exists, with any commits resolved."
        },
        "resolvedRepoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:RepoSourceResponse",
          "description": "A copy of the build's `source.repo_source`, if exists, with any revisions resolved."
        },
        "resolvedStorageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:StorageSourceResponse",
          "description": "A copy of the build's `source.storage_source`, if exists, with any generations resolved."
        }
      },
      "type": "object",
      "required": [
        "gitUri",
        "resolvedRepoSource",
        "resolvedStorageSource"
      ]
    },
    "google-native:cloudfunctions/v2beta:SourceResponse": {
      "description": "The location of the function source code.",
      "properties": {
        "gitUri": {
          "type": "string",
          "description": "If provided, get the source from GitHub repository. This option is valid only for GCF 1st Gen function. Example: https://github.com///blob//"
        },
        "repoSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:RepoSourceResponse",
          "description": "If provided, get the source from this location in a Cloud Source Repository."
        },
        "storageSource": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:StorageSourceResponse",
          "description": "If provided, get the source from this location in Google Cloud Storage."
        }
      },
      "type": "object",
      "required": [
        "gitUri",
        "repoSource",
        "storageSource"
      ]
    },
    "google-native:cloudfunctions/v2beta:StorageSource": {
      "description": "Location of the source in an archive file in Google Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build."
        }
      },
      "type": "object"
    },
    "google-native:cloudfunctions/v2beta:StorageSourceResponse": {
      "description": "Location of the source in an archive file in Google Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used."
        },
        "object": {
          "type": "string",
          "description": "Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object"
      ]
    },
    "google-native:cloudidentity/v1:DynamicGroupMetadata": {
      "description": "Dynamic group metadata like queries and status.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:DynamicGroupQuery"
          },
          "description": "Memberships will be the union of all queries. Only one entry with USER resource is currently supported. Customers can create up to 100 dynamic groups."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1:DynamicGroupMetadataResponse": {
      "description": "Dynamic group metadata like queries and status.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:DynamicGroupQueryResponse"
          },
          "description": "Memberships will be the union of all queries. Only one entry with USER resource is currently supported. Customers can create up to 100 dynamic groups."
        },
        "status": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:DynamicGroupStatusResponse",
          "description": "Status of the dynamic group."
        }
      },
      "type": "object",
      "required": [
        "queries",
        "status"
      ]
    },
    "google-native:cloudidentity/v1:DynamicGroupQuery": {
      "description": "Defines a query on a resource.",
      "properties": {
        "query": {
          "type": "string",
          "description": "Query that determines the memberships of the dynamic group. Examples: All users with at least one `organizations.department` of engineering. `user.organizations.exists(org, org.department=='engineering')` All users with at least one location that has `area` of `foo` and `building_id` of `bar`. `user.locations.exists(loc, loc.area=='foo' && loc.building_id=='bar')` All users with any variation of the name John Doe (case-insensitive queries add `equalsIgnoreCase()` to the value being queried). `user.name.value.equalsIgnoreCase('jOhn DoE')`"
        },
        "resourceType": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:DynamicGroupQueryResourceType",
          "description": "Resource type for the Dynamic Group Query"
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1:DynamicGroupQueryResourceType": {
      "description": "Resource type for the Dynamic Group Query",
      "type": "string",
      "enum": [
        {
          "name": "ResourceTypeUnspecified",
          "description": "Default value (not valid)",
          "value": "RESOURCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "User",
          "description": "For queries on User",
          "value": "USER"
        }
      ]
    },
    "google-native:cloudidentity/v1:DynamicGroupQueryResponse": {
      "description": "Defines a query on a resource.",
      "properties": {
        "query": {
          "type": "string",
          "description": "Query that determines the memberships of the dynamic group. Examples: All users with at least one `organizations.department` of engineering. `user.organizations.exists(org, org.department=='engineering')` All users with at least one location that has `area` of `foo` and `building_id` of `bar`. `user.locations.exists(loc, loc.area=='foo' && loc.building_id=='bar')` All users with any variation of the name John Doe (case-insensitive queries add `equalsIgnoreCase()` to the value being queried). `user.name.value.equalsIgnoreCase('jOhn DoE')`"
        },
        "resourceType": {
          "type": "string",
          "description": "Resource type for the Dynamic Group Query"
        }
      },
      "type": "object",
      "required": [
        "query",
        "resourceType"
      ]
    },
    "google-native:cloudidentity/v1:DynamicGroupStatusResponse": {
      "description": "The current status of a dynamic group along with timestamp.",
      "properties": {
        "status": {
          "type": "string",
          "description": "Status of the dynamic group."
        },
        "statusTime": {
          "type": "string",
          "description": "The latest time at which the dynamic group is guaranteed to be in the given status. If status is `UP_TO_DATE`, the latest time at which the dynamic group was confirmed to be up-to-date. If status is `UPDATING_MEMBERSHIPS`, the time at which dynamic group was created."
        }
      },
      "type": "object",
      "required": [
        "status",
        "statusTime"
      ]
    },
    "google-native:cloudidentity/v1:EntityKey": {
      "description": "A unique identifier for an entity in the Cloud Identity Groups API. An entity can represent either a group with an optional `namespace` or a user without a `namespace`. The combination of `id` and `namespace` must be unique; however, the same `id` can be used with different `namespace`s.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the entity. For Google-managed entities, the `id` should be the email address of an existing group or user. For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`."
        },
        "namespace": {
          "type": "string",
          "description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source}`."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1:EntityKeyResponse": {
      "description": "A unique identifier for an entity in the Cloud Identity Groups API. An entity can represent either a group with an optional `namespace` or a user without a `namespace`. The combination of `id` and `namespace` must be unique; however, the same `id` can be used with different `namespace`s.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source}`."
        }
      },
      "type": "object",
      "required": [
        "namespace"
      ]
    },
    "google-native:cloudidentity/v1:ExpiryDetail": {
      "description": "The `MembershipRole` expiry details.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time at which the `MembershipRole` will expire."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1:ExpiryDetailResponse": {
      "description": "The `MembershipRole` expiry details.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time at which the `MembershipRole` will expire."
        }
      },
      "type": "object",
      "required": [
        "expireTime"
      ]
    },
    "google-native:cloudidentity/v1:GoogleAppsCloudidentityDevicesV1AndroidAttributesResponse": {
      "description": "Resource representing the Android specific attributes of a Device.",
      "properties": {
        "ctsProfileMatch": {
          "type": "boolean",
          "description": "Whether the device passes Android CTS compliance."
        },
        "enabledUnknownSources": {
          "type": "boolean",
          "description": "Whether applications from unknown sources can be installed on device."
        },
        "hasPotentiallyHarmfulApps": {
          "type": "boolean",
          "description": "Whether any potentially harmful apps were detected on the device."
        },
        "ownerProfileAccount": {
          "type": "boolean",
          "description": "Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles."
        },
        "ownershipPrivilege": {
          "type": "string",
          "description": "Ownership privileges on device."
        },
        "supportsWorkProfile": {
          "type": "boolean",
          "description": "Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the \"Enforce Work Profile\" policy."
        },
        "verifiedBoot": {
          "type": "boolean",
          "description": "Whether Android verified boot status is GREEN."
        },
        "verifyAppsEnabled": {
          "type": "boolean",
          "description": "Whether Google Play Protect Verify Apps is enabled."
        }
      },
      "type": "object",
      "required": [
        "ctsProfileMatch",
        "enabledUnknownSources",
        "hasPotentiallyHarmfulApps",
        "ownerProfileAccount",
        "ownershipPrivilege",
        "supportsWorkProfile",
        "verifiedBoot",
        "verifyAppsEnabled"
      ]
    },
    "google-native:cloudidentity/v1:InboundSsoAssignmentSsoMode": {
      "description": "Inbound SSO behavior.",
      "type": "string",
      "enum": [
        {
          "name": "SsoModeUnspecified",
          "description": "Not allowed.",
          "value": "SSO_MODE_UNSPECIFIED"
        },
        {
          "name": "SsoOff",
          "description": "Disable SSO for the targeted users.",
          "value": "SSO_OFF"
        },
        {
          "name": "SamlSso",
          "description": "Use an external SAML Identity Provider for SSO for the targeted users.",
          "value": "SAML_SSO"
        },
        {
          "name": "DomainWideSamlIfEnabled",
          "description": "Use the domain-wide SAML Identity Provider for the targeted users if one is configured; otherwise, this is equivalent to `SSO_OFF`. Note that this will also be equivalent to `SSO_OFF` if/when support for domain-wide SAML is removed. Google may disallow this mode at that point and existing assignments with this mode may be automatically changed to `SSO_OFF`.",
          "value": "DOMAIN_WIDE_SAML_IF_ENABLED"
        }
      ]
    },
    "google-native:cloudidentity/v1:MembershipRole": {
      "description": "A membership role within the Cloud Identity Groups API. A `MembershipRole` defines the privileges granted to a `Membership`.",
      "properties": {
        "expiryDetail": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:ExpiryDetail",
          "description": "The expiry details of the `MembershipRole`. Expiry details are only supported for `MEMBER` `MembershipRoles`. May be set if `name` is `MEMBER`. Must not be set if `name` is any other value."
        },
        "name": {
          "type": "string",
          "description": "The name of the `MembershipRole`. Must be one of `OWNER`, `MANAGER`, `MEMBER`."
        },
        "restrictionEvaluations": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:RestrictionEvaluations",
          "description": "Evaluations of restrictions applied to parent group on this membership."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1:MembershipRoleResponse": {
      "description": "A membership role within the Cloud Identity Groups API. A `MembershipRole` defines the privileges granted to a `Membership`.",
      "properties": {
        "expiryDetail": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:ExpiryDetailResponse",
          "description": "The expiry details of the `MembershipRole`. Expiry details are only supported for `MEMBER` `MembershipRoles`. May be set if `name` is `MEMBER`. Must not be set if `name` is any other value."
        },
        "name": {
          "type": "string",
          "description": "The name of the `MembershipRole`. Must be one of `OWNER`, `MANAGER`, `MEMBER`."
        },
        "restrictionEvaluations": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:RestrictionEvaluationsResponse",
          "description": "Evaluations of restrictions applied to parent group on this membership."
        }
      },
      "type": "object",
      "required": [
        "expiryDetail",
        "name",
        "restrictionEvaluations"
      ]
    },
    "google-native:cloudidentity/v1:MembershipRoleRestrictionEvaluation": {
      "description": "The evaluated state of this restriction.",
      "type": "object"
    },
    "google-native:cloudidentity/v1:MembershipRoleRestrictionEvaluationResponse": {
      "description": "The evaluated state of this restriction.",
      "properties": {
        "state": {
          "type": "string",
          "description": "The current state of the restriction"
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:cloudidentity/v1:RestrictionEvaluations": {
      "description": "Evaluations of restrictions applied to parent group on this membership.",
      "properties": {
        "memberRestrictionEvaluation": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:MembershipRoleRestrictionEvaluation",
          "description": "Evaluation of the member restriction applied to this membership. Empty if the user lacks permission to view the restriction evaluation."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1:RestrictionEvaluationsResponse": {
      "description": "Evaluations of restrictions applied to parent group on this membership.",
      "properties": {
        "memberRestrictionEvaluation": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:MembershipRoleRestrictionEvaluationResponse",
          "description": "Evaluation of the member restriction applied to this membership. Empty if the user lacks permission to view the restriction evaluation."
        }
      },
      "type": "object",
      "required": [
        "memberRestrictionEvaluation"
      ]
    },
    "google-native:cloudidentity/v1:SamlIdpConfig": {
      "description": "SAML IDP (identity provider) configuration.",
      "properties": {
        "changePasswordUri": {
          "type": "string",
          "description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`."
        },
        "entityId": {
          "type": "string",
          "description": "The SAML **Entity ID** of the identity provider."
        },
        "logoutRedirectUri": {
          "type": "string",
          "description": "The **Logout Redirect URL** (sign-out page URL) of the identity provider. When a user clicks the sign-out link on a Google page, they will be redirected to this URL. This is a pure redirect with no attached SAML `LogoutRequest` i.e. SAML single logout is not supported. Must use `HTTPS`."
        },
        "singleSignOnServiceUri": {
          "type": "string",
          "description": "The `SingleSignOnService` endpoint location (sign-in page URL) of the identity provider. This is the URL where the `AuthnRequest` will be sent. Must use `HTTPS`. Assumed to accept the `HTTP-Redirect` binding."
        }
      },
      "type": "object",
      "required": [
        "entityId",
        "singleSignOnServiceUri"
      ]
    },
    "google-native:cloudidentity/v1:SamlIdpConfigResponse": {
      "description": "SAML IDP (identity provider) configuration.",
      "properties": {
        "changePasswordUri": {
          "type": "string",
          "description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`."
        },
        "entityId": {
          "type": "string",
          "description": "The SAML **Entity ID** of the identity provider."
        },
        "logoutRedirectUri": {
          "type": "string",
          "description": "The **Logout Redirect URL** (sign-out page URL) of the identity provider. When a user clicks the sign-out link on a Google page, they will be redirected to this URL. This is a pure redirect with no attached SAML `LogoutRequest` i.e. SAML single logout is not supported. Must use `HTTPS`."
        },
        "singleSignOnServiceUri": {
          "type": "string",
          "description": "The `SingleSignOnService` endpoint location (sign-in page URL) of the identity provider. This is the URL where the `AuthnRequest` will be sent. Must use `HTTPS`. Assumed to accept the `HTTP-Redirect` binding."
        }
      },
      "type": "object",
      "required": [
        "changePasswordUri",
        "entityId",
        "logoutRedirectUri",
        "singleSignOnServiceUri"
      ]
    },
    "google-native:cloudidentity/v1:SamlSpConfig": {
      "description": "SAML SP (service provider) configuration.",
      "type": "object"
    },
    "google-native:cloudidentity/v1:SamlSpConfigResponse": {
      "description": "SAML SP (service provider) configuration.",
      "properties": {
        "assertionConsumerServiceUri": {
          "type": "string",
          "description": "The SAML **Assertion Consumer Service (ACS) URL** to be used for the IDP-initiated login. Assumed to accept response messages via the `HTTP-POST` binding."
        },
        "entityId": {
          "type": "string",
          "description": "The SAML **Entity ID** for this service provider."
        }
      },
      "type": "object",
      "required": [
        "assertionConsumerServiceUri",
        "entityId"
      ]
    },
    "google-native:cloudidentity/v1:SamlSsoInfo": {
      "description": "Details that are applicable when `sso_mode` == `SAML_SSO`.",
      "properties": {
        "inboundSamlSsoProfile": {
          "type": "string",
          "description": "Name of the `InboundSamlSsoProfile` to use. Must be of the form `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. "
        }
      },
      "type": "object",
      "required": [
        "inboundSamlSsoProfile"
      ]
    },
    "google-native:cloudidentity/v1:SamlSsoInfoResponse": {
      "description": "Details that are applicable when `sso_mode` == `SAML_SSO`.",
      "properties": {
        "inboundSamlSsoProfile": {
          "type": "string",
          "description": "Name of the `InboundSamlSsoProfile` to use. Must be of the form `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. "
        }
      },
      "type": "object",
      "required": [
        "inboundSamlSsoProfile"
      ]
    },
    "google-native:cloudidentity/v1:SignInBehavior": {
      "description": "Controls sign-in behavior.",
      "properties": {
        "redirectCondition": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SignInBehaviorRedirectCondition",
          "description": "When to redirect sign-ins to the IdP."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1:SignInBehaviorRedirectCondition": {
      "description": "When to redirect sign-ins to the IdP.",
      "type": "string",
      "enum": [
        {
          "name": "RedirectConditionUnspecified",
          "description": "Default and means \"always\"",
          "value": "REDIRECT_CONDITION_UNSPECIFIED"
        },
        {
          "name": "Never",
          "description": "Sign-in flows where the user is prompted for their identity will not redirect to the IdP (so the user will most likely be prompted by Google for a password), but special flows like IdP-initiated SAML and sign-in following automatic redirection to the IdP by domain-specific service URLs will accept the IdP's assertion of the user's identity.",
          "value": "NEVER"
        }
      ]
    },
    "google-native:cloudidentity/v1:SignInBehaviorResponse": {
      "description": "Controls sign-in behavior.",
      "properties": {
        "redirectCondition": {
          "type": "string",
          "description": "When to redirect sign-ins to the IdP."
        }
      },
      "type": "object",
      "required": [
        "redirectCondition"
      ]
    },
    "google-native:cloudidentity/v1beta1:AndroidAttributesResponse": {
      "description": "Resource representing the Android specific attributes of a Device.",
      "properties": {
        "ctsProfileMatch": {
          "type": "boolean",
          "description": "Whether the device passes Android CTS compliance."
        },
        "enabledUnknownSources": {
          "type": "boolean",
          "description": "Whether applications from unknown sources can be installed on device."
        },
        "hasPotentiallyHarmfulApps": {
          "type": "boolean",
          "description": "Whether any potentially harmful apps were detected on the device."
        },
        "ownerProfileAccount": {
          "type": "boolean",
          "description": "Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles."
        },
        "ownershipPrivilege": {
          "type": "string",
          "description": "Ownership privileges on device."
        },
        "supportsWorkProfile": {
          "type": "boolean",
          "description": "Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the \"Enforce Work Profile\" policy."
        },
        "verifiedBoot": {
          "type": "boolean",
          "description": "Whether Android verified boot status is GREEN."
        },
        "verifyAppsEnabled": {
          "type": "boolean",
          "description": "Whether Google Play Protect Verify Apps is enabled."
        }
      },
      "type": "object",
      "required": [
        "ctsProfileMatch",
        "enabledUnknownSources",
        "hasPotentiallyHarmfulApps",
        "ownerProfileAccount",
        "ownershipPrivilege",
        "supportsWorkProfile",
        "verifiedBoot",
        "verifyAppsEnabled"
      ]
    },
    "google-native:cloudidentity/v1beta1:CertificateAttributesResponse": {
      "description": "Stores information about a certificate.",
      "properties": {
        "certificateTemplate": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:CertificateTemplateResponse",
          "description": "The X.509 extension for CertificateTemplate."
        },
        "fingerprint": {
          "type": "string",
          "description": "The encoded certificate fingerprint."
        },
        "issuer": {
          "type": "string",
          "description": "The name of the issuer of this certificate."
        },
        "serialNumber": {
          "type": "string",
          "description": "Serial number of the certificate, Example: \"123456789\"."
        },
        "subject": {
          "type": "string",
          "description": "The subject name of this certificate."
        },
        "thumbprint": {
          "type": "string",
          "description": "The certificate thumbprint."
        },
        "validationState": {
          "type": "string",
          "description": "Validation state of this certificate."
        },
        "validityExpirationTime": {
          "type": "string",
          "description": "Certificate not valid at or after this timestamp."
        },
        "validityStartTime": {
          "type": "string",
          "description": "Certificate not valid before this timestamp."
        }
      },
      "type": "object",
      "required": [
        "certificateTemplate",
        "fingerprint",
        "issuer",
        "serialNumber",
        "subject",
        "thumbprint",
        "validationState",
        "validityExpirationTime",
        "validityStartTime"
      ]
    },
    "google-native:cloudidentity/v1beta1:CertificateTemplateResponse": {
      "description": "CertificateTemplate (v3 Extension in X.509).",
      "properties": {
        "majorVersion": {
          "type": "integer",
          "description": "The Major version of the template. Example: 100."
        },
        "minorVersion": {
          "type": "integer",
          "description": "The minor version of the template. Example: 12."
        }
      },
      "type": "object",
      "required": [
        "majorVersion",
        "minorVersion"
      ]
    },
    "google-native:cloudidentity/v1beta1:DeviceClientTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "ClientTypeUnspecified",
          "description": "Default value",
          "value": "CLIENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "DriveFs",
          "description": "Managed by DriveFS",
          "value": "DRIVE_FS"
        },
        {
          "name": "Fundamental",
          "description": "Management type for every secure device",
          "value": "FUNDAMENTAL"
        },
        {
          "name": "EndpointVerification",
          "description": "Managed by Endpoint Verification",
          "value": "ENDPOINT_VERIFICATION"
        },
        {
          "name": "WindowsAdvanced",
          "description": "Managed by Windows",
          "value": "WINDOWS_ADVANCED"
        },
        {
          "name": "GoogleCredentialsProviderForWindows",
          "description": "Managed by Google credential provider for windows",
          "value": "GOOGLE_CREDENTIALS_PROVIDER_FOR_WINDOWS"
        }
      ]
    },
    "google-native:cloudidentity/v1beta1:DynamicGroupMetadata": {
      "description": "Dynamic group metadata like queries and status.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:DynamicGroupQuery"
          },
          "description": "Memberships will be the union of all queries. Only one entry with USER resource is currently supported. Customers can create up to 100 dynamic groups."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:DynamicGroupMetadataResponse": {
      "description": "Dynamic group metadata like queries and status.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:DynamicGroupQueryResponse"
          },
          "description": "Memberships will be the union of all queries. Only one entry with USER resource is currently supported. Customers can create up to 100 dynamic groups."
        },
        "status": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:DynamicGroupStatusResponse",
          "description": "Status of the dynamic group."
        }
      },
      "type": "object",
      "required": [
        "queries",
        "status"
      ]
    },
    "google-native:cloudidentity/v1beta1:DynamicGroupQuery": {
      "description": "Defines a query on a resource.",
      "properties": {
        "query": {
          "type": "string",
          "description": "Query that determines the memberships of the dynamic group. Examples: All users with at least one `organizations.department` of engineering. `user.organizations.exists(org, org.department=='engineering')` All users with at least one location that has `area` of `foo` and `building_id` of `bar`. `user.locations.exists(loc, loc.area=='foo' && loc.building_id=='bar')` All users with any variation of the name John Doe (case-insensitive queries add `equalsIgnoreCase()` to the value being queried). `user.name.value.equalsIgnoreCase('jOhn DoE')`"
        },
        "resourceType": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:DynamicGroupQueryResourceType"
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:DynamicGroupQueryResourceType": {
      "type": "string",
      "enum": [
        {
          "name": "ResourceTypeUnspecified",
          "description": "Default value (not valid)",
          "value": "RESOURCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "User",
          "description": "For queries on User",
          "value": "USER"
        }
      ]
    },
    "google-native:cloudidentity/v1beta1:DynamicGroupQueryResponse": {
      "description": "Defines a query on a resource.",
      "properties": {
        "query": {
          "type": "string",
          "description": "Query that determines the memberships of the dynamic group. Examples: All users with at least one `organizations.department` of engineering. `user.organizations.exists(org, org.department=='engineering')` All users with at least one location that has `area` of `foo` and `building_id` of `bar`. `user.locations.exists(loc, loc.area=='foo' && loc.building_id=='bar')` All users with any variation of the name John Doe (case-insensitive queries add `equalsIgnoreCase()` to the value being queried). `user.name.value.equalsIgnoreCase('jOhn DoE')`"
        },
        "resourceType": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "query",
        "resourceType"
      ]
    },
    "google-native:cloudidentity/v1beta1:DynamicGroupStatusResponse": {
      "description": "The current status of a dynamic group along with timestamp.",
      "properties": {
        "status": {
          "type": "string",
          "description": "Status of the dynamic group."
        },
        "statusTime": {
          "type": "string",
          "description": "The latest time at which the dynamic group is guaranteed to be in the given status. If status is `UP_TO_DATE`, the latest time at which the dynamic group was confirmed to be up-to-date. If status is `UPDATING_MEMBERSHIPS`, the time at which dynamic group was created."
        }
      },
      "type": "object",
      "required": [
        "status",
        "statusTime"
      ]
    },
    "google-native:cloudidentity/v1beta1:EndpointVerificationSpecificAttributesResponse": {
      "description": "Resource representing the Endpoint Verification-specific attributes of a Device. https://cloud.google.com/endpoint-verification/docs/overview",
      "properties": {
        "certificateAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:CertificateAttributesResponse"
          },
          "description": "Details of certificates."
        }
      },
      "type": "object",
      "required": [
        "certificateAttributes"
      ]
    },
    "google-native:cloudidentity/v1beta1:EntityKey": {
      "description": "A unique identifier for an entity in the Cloud Identity Groups API. An entity can represent either a group with an optional `namespace` or a user without a `namespace`. The combination of `id` and `namespace` must be unique; however, the same `id` can be used with different `namespace`s.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the entity. For Google-managed entities, the `id` must be the email address of an existing group or user. For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`."
        },
        "namespace": {
          "type": "string",
          "description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source_id}`."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:EntityKeyResponse": {
      "description": "A unique identifier for an entity in the Cloud Identity Groups API. An entity can represent either a group with an optional `namespace` or a user without a `namespace`. The combination of `id` and `namespace` must be unique; however, the same `id` can be used with different `namespace`s.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source_id}`."
        }
      },
      "type": "object",
      "required": [
        "namespace"
      ]
    },
    "google-native:cloudidentity/v1beta1:ExpiryDetail": {
      "description": "The `MembershipRole` expiry details.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time at which the `MembershipRole` will expire."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:ExpiryDetailResponse": {
      "description": "The `MembershipRole` expiry details.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time at which the `MembershipRole` will expire."
        }
      },
      "type": "object",
      "required": [
        "expireTime"
      ]
    },
    "google-native:cloudidentity/v1beta1:InboundSsoAssignmentSsoMode": {
      "description": "Inbound SSO behavior.",
      "type": "string",
      "enum": [
        {
          "name": "SsoModeUnspecified",
          "description": "Not allowed.",
          "value": "SSO_MODE_UNSPECIFIED"
        },
        {
          "name": "SsoOff",
          "description": "Disable SSO for the targeted users.",
          "value": "SSO_OFF"
        },
        {
          "name": "SamlSso",
          "description": "Use an external SAML Identity Provider for SSO for the targeted users.",
          "value": "SAML_SSO"
        },
        {
          "name": "DomainWideSamlIfEnabled",
          "description": "Use the domain-wide SAML Identity Provider for the targeted users if one is configured; otherwise, this is equivalent to `SSO_OFF`. Note that this will also be equivalent to `SSO_OFF` if/when support for domain-wide SAML is removed. Google may disallow this mode at that point and existing assignments with this mode may be automatically changed to `SSO_OFF`.",
          "value": "DOMAIN_WIDE_SAML_IF_ENABLED"
        }
      ]
    },
    "google-native:cloudidentity/v1beta1:MembershipRole": {
      "description": "A membership role within the Cloud Identity Groups API. A `MembershipRole` defines the privileges granted to a `Membership`.",
      "properties": {
        "expiryDetail": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:ExpiryDetail",
          "description": "The expiry details of the `MembershipRole`. Expiry details are only supported for `MEMBER` `MembershipRoles`. May be set if `name` is `MEMBER`. Must not be set if `name` is any other value."
        },
        "name": {
          "type": "string",
          "description": "The name of the `MembershipRole`. Must be one of `OWNER`, `MANAGER`, `MEMBER`."
        },
        "restrictionEvaluations": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:RestrictionEvaluations",
          "description": "Evaluations of restrictions applied to parent group on this membership."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:MembershipRoleResponse": {
      "description": "A membership role within the Cloud Identity Groups API. A `MembershipRole` defines the privileges granted to a `Membership`.",
      "properties": {
        "expiryDetail": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:ExpiryDetailResponse",
          "description": "The expiry details of the `MembershipRole`. Expiry details are only supported for `MEMBER` `MembershipRoles`. May be set if `name` is `MEMBER`. Must not be set if `name` is any other value."
        },
        "name": {
          "type": "string",
          "description": "The name of the `MembershipRole`. Must be one of `OWNER`, `MANAGER`, `MEMBER`."
        },
        "restrictionEvaluations": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:RestrictionEvaluationsResponse",
          "description": "Evaluations of restrictions applied to parent group on this membership."
        }
      },
      "type": "object",
      "required": [
        "expiryDetail",
        "name",
        "restrictionEvaluations"
      ]
    },
    "google-native:cloudidentity/v1beta1:MembershipRoleRestrictionEvaluation": {
      "description": "The evaluated state of this restriction.",
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:MembershipRoleRestrictionEvaluationResponse": {
      "description": "The evaluated state of this restriction.",
      "properties": {
        "state": {
          "type": "string",
          "description": "The current state of the restriction"
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:cloudidentity/v1beta1:PosixGroup": {
      "description": "POSIX Group definition to represent a group in a POSIX compliant system.",
      "properties": {
        "gid": {
          "type": "string",
          "description": "GID of the POSIX group."
        },
        "name": {
          "type": "string",
          "description": "Name of the POSIX group."
        },
        "systemId": {
          "type": "string",
          "description": "System identifier for which group name and gid apply to. If not specified it will default to empty value."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:PosixGroupResponse": {
      "description": "POSIX Group definition to represent a group in a POSIX compliant system.",
      "properties": {
        "gid": {
          "type": "string",
          "description": "GID of the POSIX group."
        },
        "name": {
          "type": "string",
          "description": "Name of the POSIX group."
        },
        "systemId": {
          "type": "string",
          "description": "System identifier for which group name and gid apply to. If not specified it will default to empty value."
        }
      },
      "type": "object",
      "required": [
        "gid",
        "name",
        "systemId"
      ]
    },
    "google-native:cloudidentity/v1beta1:RestrictionEvaluations": {
      "description": "Evaluations of restrictions applied to parent group on this membership.",
      "properties": {
        "memberRestrictionEvaluation": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:MembershipRoleRestrictionEvaluation",
          "description": "Evaluation of the member restriction applied to this membership. Empty if the user lacks permission to view the restriction evaluation."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:RestrictionEvaluationsResponse": {
      "description": "Evaluations of restrictions applied to parent group on this membership.",
      "properties": {
        "memberRestrictionEvaluation": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:MembershipRoleRestrictionEvaluationResponse",
          "description": "Evaluation of the member restriction applied to this membership. Empty if the user lacks permission to view the restriction evaluation."
        }
      },
      "type": "object",
      "required": [
        "memberRestrictionEvaluation"
      ]
    },
    "google-native:cloudidentity/v1beta1:SamlIdpConfig": {
      "description": "SAML IDP (identity provider) configuration.",
      "properties": {
        "changePasswordUri": {
          "type": "string",
          "description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`."
        },
        "entityId": {
          "type": "string",
          "description": "The SAML **Entity ID** of the identity provider."
        },
        "logoutRedirectUri": {
          "type": "string",
          "description": "The **Logout Redirect URL** (sign-out page URL) of the identity provider. When a user clicks the sign-out link on a Google page, they will be redirected to this URL. This is a pure redirect with no attached SAML `LogoutRequest` i.e. SAML single logout is not supported. Must use `HTTPS`."
        },
        "singleSignOnServiceUri": {
          "type": "string",
          "description": "The `SingleSignOnService` endpoint location (sign-in page URL) of the identity provider. This is the URL where the `AuthnRequest` will be sent. Must use `HTTPS`. Assumed to accept the `HTTP-Redirect` binding."
        }
      },
      "type": "object",
      "required": [
        "entityId",
        "singleSignOnServiceUri"
      ]
    },
    "google-native:cloudidentity/v1beta1:SamlIdpConfigResponse": {
      "description": "SAML IDP (identity provider) configuration.",
      "properties": {
        "changePasswordUri": {
          "type": "string",
          "description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`."
        },
        "entityId": {
          "type": "string",
          "description": "The SAML **Entity ID** of the identity provider."
        },
        "logoutRedirectUri": {
          "type": "string",
          "description": "The **Logout Redirect URL** (sign-out page URL) of the identity provider. When a user clicks the sign-out link on a Google page, they will be redirected to this URL. This is a pure redirect with no attached SAML `LogoutRequest` i.e. SAML single logout is not supported. Must use `HTTPS`."
        },
        "singleSignOnServiceUri": {
          "type": "string",
          "description": "The `SingleSignOnService` endpoint location (sign-in page URL) of the identity provider. This is the URL where the `AuthnRequest` will be sent. Must use `HTTPS`. Assumed to accept the `HTTP-Redirect` binding."
        }
      },
      "type": "object",
      "required": [
        "changePasswordUri",
        "entityId",
        "logoutRedirectUri",
        "singleSignOnServiceUri"
      ]
    },
    "google-native:cloudidentity/v1beta1:SamlSpConfig": {
      "description": "SAML SP (service provider) configuration.",
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:SamlSpConfigResponse": {
      "description": "SAML SP (service provider) configuration.",
      "properties": {
        "assertionConsumerServiceUri": {
          "type": "string",
          "description": "The SAML **Assertion Consumer Service (ACS) URL** to be used for the IDP-initiated login. Assumed to accept response messages via the `HTTP-POST` binding."
        },
        "entityId": {
          "type": "string",
          "description": "The SAML **Entity ID** for this service provider."
        }
      },
      "type": "object",
      "required": [
        "assertionConsumerServiceUri",
        "entityId"
      ]
    },
    "google-native:cloudidentity/v1beta1:SamlSsoInfo": {
      "description": "Details that are applicable when `sso_mode` == `SAML_SSO`.",
      "properties": {
        "inboundSamlSsoProfile": {
          "type": "string",
          "description": "Name of the `InboundSamlSsoProfile` to use. Must be of the form `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. "
        }
      },
      "type": "object",
      "required": [
        "inboundSamlSsoProfile"
      ]
    },
    "google-native:cloudidentity/v1beta1:SamlSsoInfoResponse": {
      "description": "Details that are applicable when `sso_mode` == `SAML_SSO`.",
      "properties": {
        "inboundSamlSsoProfile": {
          "type": "string",
          "description": "Name of the `InboundSamlSsoProfile` to use. Must be of the form `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. "
        }
      },
      "type": "object",
      "required": [
        "inboundSamlSsoProfile"
      ]
    },
    "google-native:cloudidentity/v1beta1:SignInBehavior": {
      "description": "Controls sign-in behavior.",
      "properties": {
        "redirectCondition": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SignInBehaviorRedirectCondition",
          "description": "When to redirect sign-ins to the IdP."
        }
      },
      "type": "object"
    },
    "google-native:cloudidentity/v1beta1:SignInBehaviorRedirectCondition": {
      "description": "When to redirect sign-ins to the IdP.",
      "type": "string",
      "enum": [
        {
          "name": "RedirectConditionUnspecified",
          "description": "Default and means \"always\"",
          "value": "REDIRECT_CONDITION_UNSPECIFIED"
        },
        {
          "name": "Never",
          "description": "Sign-in flows where the user is prompted for their identity will not redirect to the IdP (so the user will most likely be prompted by Google for a password), but special flows like IdP-initiated SAML and sign-in following automatic redirection to the IdP by domain-specific service URLs will accept the IdP's assertion of the user's identity.",
          "value": "NEVER"
        }
      ]
    },
    "google-native:cloudidentity/v1beta1:SignInBehaviorResponse": {
      "description": "Controls sign-in behavior.",
      "properties": {
        "redirectCondition": {
          "type": "string",
          "description": "When to redirect sign-ins to the IdP."
        }
      },
      "type": "object",
      "required": [
        "redirectCondition"
      ]
    },
    "google-native:cloudiot/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudiot/v1:DeviceConfig": {
      "description": "The device configuration. Eventually delivered to devices.",
      "properties": {
        "binaryData": {
          "type": "string",
          "description": "The device configuration data."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:DeviceConfigResponse": {
      "description": "The device configuration. Eventually delivered to devices.",
      "properties": {
        "binaryData": {
          "type": "string",
          "description": "The device configuration data."
        },
        "cloudUpdateTime": {
          "type": "string",
          "description": "[Output only] The time at which this configuration version was updated in Cloud IoT Core. This timestamp is set by the server."
        },
        "deviceAckTime": {
          "type": "string",
          "description": "[Output only] The time at which Cloud IoT Core received the acknowledgment from the device, indicating that the device has received this configuration version. If this field is not present, the device has not yet acknowledged that it received this version. Note that when the config was sent to the device, many config versions may have been available in Cloud IoT Core while the device was disconnected, and on connection, only the latest version is sent to the device. Some versions may never be sent to the device, and therefore are never acknowledged. This timestamp is set by Cloud IoT Core."
        },
        "version": {
          "type": "string",
          "description": "[Output only] The version of this update. The version number is assigned by the server, and is always greater than 0 after device creation. The version must be 0 on the `CreateDevice` request if a `config` is specified; the response of `CreateDevice` will always have a value of 1."
        }
      },
      "type": "object",
      "required": [
        "binaryData",
        "cloudUpdateTime",
        "deviceAckTime",
        "version"
      ]
    },
    "google-native:cloudiot/v1:DeviceCredential": {
      "description": "A server-stored device credential used for authentication.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "[Optional] The time at which this credential becomes invalid. This credential will be ignored for new client authentication requests after this timestamp; however, it will not be automatically deleted."
        },
        "publicKey": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:PublicKeyCredential",
          "description": "A public key used to verify the signature of JSON Web Tokens (JWTs). When adding a new device credential, either via device creation or via modifications, this public key credential may be required to be signed by one of the registry level certificates. More specifically, if the registry contains at least one certificate, any new device credential must be signed by one of the registry certificates. As a result, when the registry contains certificates, only X.509 certificates are accepted as device credentials. However, if the registry does not contain a certificate, self-signed certificates and public keys will be accepted. New device credentials must be different from every registry-level certificate."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:DeviceCredentialResponse": {
      "description": "A server-stored device credential used for authentication.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "[Optional] The time at which this credential becomes invalid. This credential will be ignored for new client authentication requests after this timestamp; however, it will not be automatically deleted."
        },
        "publicKey": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:PublicKeyCredentialResponse",
          "description": "A public key used to verify the signature of JSON Web Tokens (JWTs). When adding a new device credential, either via device creation or via modifications, this public key credential may be required to be signed by one of the registry level certificates. More specifically, if the registry contains at least one certificate, any new device credential must be signed by one of the registry certificates. As a result, when the registry contains certificates, only X.509 certificates are accepted as device credentials. However, if the registry does not contain a certificate, self-signed certificates and public keys will be accepted. New device credentials must be different from every registry-level certificate."
        }
      },
      "type": "object",
      "required": [
        "expirationTime",
        "publicKey"
      ]
    },
    "google-native:cloudiot/v1:DeviceLogLevel": {
      "description": "**Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.",
      "type": "string",
      "enum": [
        {
          "name": "LogLevelUnspecified",
          "description": "No logging specified. If not specified, logging will be disabled.",
          "value": "LOG_LEVEL_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Disables logging.",
          "value": "NONE"
        },
        {
          "name": "Error",
          "description": "Error events will be logged.",
          "value": "ERROR"
        },
        {
          "name": "Info",
          "description": "Informational events will be logged, such as connections and disconnections.",
          "value": "INFO"
        },
        {
          "name": "Debug",
          "description": "All events will be logged.",
          "value": "DEBUG"
        }
      ]
    },
    "google-native:cloudiot/v1:DeviceStateResponse": {
      "description": "The device state, as reported by the device.",
      "properties": {
        "binaryData": {
          "type": "string",
          "description": "The device state data."
        },
        "updateTime": {
          "type": "string",
          "description": "[Output only] The time at which this state version was updated in Cloud IoT Core."
        }
      },
      "type": "object",
      "required": [
        "binaryData",
        "updateTime"
      ]
    },
    "google-native:cloudiot/v1:EventNotificationConfig": {
      "description": "The configuration for forwarding telemetry events.",
      "properties": {
        "pubsubTopicName": {
          "type": "string",
          "description": "A Cloud Pub/Sub topic name. For example, `projects/myProject/topics/deviceEvents`."
        },
        "subfolderMatches": {
          "type": "string",
          "description": "If the subfolder name matches this string exactly, this configuration will be used. The string must not include the leading '/' character. If empty, all strings are matched. This field is used only for telemetry events; subfolders are not supported for state changes."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:EventNotificationConfigResponse": {
      "description": "The configuration for forwarding telemetry events.",
      "properties": {
        "pubsubTopicName": {
          "type": "string",
          "description": "A Cloud Pub/Sub topic name. For example, `projects/myProject/topics/deviceEvents`."
        },
        "subfolderMatches": {
          "type": "string",
          "description": "If the subfolder name matches this string exactly, this configuration will be used. The string must not include the leading '/' character. If empty, all strings are matched. This field is used only for telemetry events; subfolders are not supported for state changes."
        }
      },
      "type": "object",
      "required": [
        "pubsubTopicName",
        "subfolderMatches"
      ]
    },
    "google-native:cloudiot/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudiot/v1:GatewayConfig": {
      "description": "Gateway-related configuration and state.",
      "properties": {
        "gatewayAuthMethod": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:GatewayConfigGatewayAuthMethod",
          "description": "Indicates how to authorize and/or authenticate devices to access the gateway."
        },
        "gatewayType": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:GatewayConfigGatewayType",
          "description": "Indicates whether the device is a gateway."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:GatewayConfigGatewayAuthMethod": {
      "description": "Indicates how to authorize and/or authenticate devices to access the gateway.",
      "type": "string",
      "enum": [
        {
          "name": "GatewayAuthMethodUnspecified",
          "description": "No authentication/authorization method specified. No devices are allowed to access the gateway.",
          "value": "GATEWAY_AUTH_METHOD_UNSPECIFIED"
        },
        {
          "name": "AssociationOnly",
          "description": "The device is authenticated through the gateway association only. Device credentials are ignored even if provided.",
          "value": "ASSOCIATION_ONLY"
        },
        {
          "name": "DeviceAuthTokenOnly",
          "description": "The device is authenticated through its own credentials. Gateway association is not checked.",
          "value": "DEVICE_AUTH_TOKEN_ONLY"
        },
        {
          "name": "AssociationAndDeviceAuthToken",
          "description": "The device is authenticated through both device credentials and gateway association. The device must be bound to the gateway and must provide its own credentials.",
          "value": "ASSOCIATION_AND_DEVICE_AUTH_TOKEN"
        }
      ]
    },
    "google-native:cloudiot/v1:GatewayConfigGatewayType": {
      "description": "Indicates whether the device is a gateway.",
      "type": "string",
      "enum": [
        {
          "name": "GatewayTypeUnspecified",
          "description": "If unspecified, the device is considered a non-gateway device.",
          "value": "GATEWAY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Gateway",
          "description": "The device is a gateway.",
          "value": "GATEWAY"
        },
        {
          "name": "NonGateway",
          "description": "The device is not a gateway.",
          "value": "NON_GATEWAY"
        }
      ]
    },
    "google-native:cloudiot/v1:GatewayConfigResponse": {
      "description": "Gateway-related configuration and state.",
      "properties": {
        "gatewayAuthMethod": {
          "type": "string",
          "description": "Indicates how to authorize and/or authenticate devices to access the gateway."
        },
        "gatewayType": {
          "type": "string",
          "description": "Indicates whether the device is a gateway."
        },
        "lastAccessedGatewayId": {
          "type": "string",
          "description": "[Output only] The ID of the gateway the device accessed most recently."
        },
        "lastAccessedGatewayTime": {
          "type": "string",
          "description": "[Output only] The most recent time at which the device accessed the gateway specified in `last_accessed_gateway`."
        }
      },
      "type": "object",
      "required": [
        "gatewayAuthMethod",
        "gatewayType",
        "lastAccessedGatewayId",
        "lastAccessedGatewayTime"
      ]
    },
    "google-native:cloudiot/v1:HttpConfig": {
      "description": "The configuration of the HTTP bridge for a device registry.",
      "properties": {
        "httpEnabledState": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:HttpConfigHttpEnabledState",
          "description": "If enabled, allows devices to use DeviceService via the HTTP protocol. Otherwise, any requests to DeviceService will fail for this registry."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:HttpConfigHttpEnabledState": {
      "description": "If enabled, allows devices to use DeviceService via the HTTP protocol. Otherwise, any requests to DeviceService will fail for this registry.",
      "type": "string",
      "enum": [
        {
          "name": "HttpStateUnspecified",
          "description": "No HTTP state specified. If not specified, DeviceService will be enabled by default.",
          "value": "HTTP_STATE_UNSPECIFIED"
        },
        {
          "name": "HttpEnabled",
          "description": "Enables DeviceService (HTTP) service for the registry.",
          "value": "HTTP_ENABLED"
        },
        {
          "name": "HttpDisabled",
          "description": "Disables DeviceService (HTTP) service for the registry.",
          "value": "HTTP_DISABLED"
        }
      ]
    },
    "google-native:cloudiot/v1:HttpConfigResponse": {
      "description": "The configuration of the HTTP bridge for a device registry.",
      "properties": {
        "httpEnabledState": {
          "type": "string",
          "description": "If enabled, allows devices to use DeviceService via the HTTP protocol. Otherwise, any requests to DeviceService will fail for this registry."
        }
      },
      "type": "object",
      "required": [
        "httpEnabledState"
      ]
    },
    "google-native:cloudiot/v1:MqttConfig": {
      "description": "The configuration of MQTT for a device registry.",
      "properties": {
        "mqttEnabledState": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:MqttConfigMqttEnabledState",
          "description": "If enabled, allows connections using the MQTT protocol. Otherwise, MQTT connections to this registry will fail."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:MqttConfigMqttEnabledState": {
      "description": "If enabled, allows connections using the MQTT protocol. Otherwise, MQTT connections to this registry will fail.",
      "type": "string",
      "enum": [
        {
          "name": "MqttStateUnspecified",
          "description": "No MQTT state specified. If not specified, MQTT will be enabled by default.",
          "value": "MQTT_STATE_UNSPECIFIED"
        },
        {
          "name": "MqttEnabled",
          "description": "Enables a MQTT connection.",
          "value": "MQTT_ENABLED"
        },
        {
          "name": "MqttDisabled",
          "description": "Disables a MQTT connection.",
          "value": "MQTT_DISABLED"
        }
      ]
    },
    "google-native:cloudiot/v1:MqttConfigResponse": {
      "description": "The configuration of MQTT for a device registry.",
      "properties": {
        "mqttEnabledState": {
          "type": "string",
          "description": "If enabled, allows connections using the MQTT protocol. Otherwise, MQTT connections to this registry will fail."
        }
      },
      "type": "object",
      "required": [
        "mqttEnabledState"
      ]
    },
    "google-native:cloudiot/v1:PublicKeyCertificate": {
      "description": "A public key certificate format and data.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "The certificate data."
        },
        "format": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:PublicKeyCertificateFormat",
          "description": "The certificate format."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:PublicKeyCertificateFormat": {
      "description": "The certificate format.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedPublicKeyCertificateFormat",
          "description": "The format has not been specified. This is an invalid default value and must not be used.",
          "value": "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT"
        },
        {
          "name": "X509CertificatePem",
          "description": "An X.509v3 certificate ([RFC5280](https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.",
          "value": "X509_CERTIFICATE_PEM"
        }
      ]
    },
    "google-native:cloudiot/v1:PublicKeyCertificateResponse": {
      "description": "A public key certificate format and data.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "The certificate data."
        },
        "format": {
          "type": "string",
          "description": "The certificate format."
        },
        "x509Details": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:X509CertificateDetailsResponse",
          "description": "[Output only] The certificate details. Used only for X.509 certificates."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "format",
        "x509Details"
      ]
    },
    "google-native:cloudiot/v1:PublicKeyCredential": {
      "description": "A public key format and data.",
      "properties": {
        "format": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:PublicKeyCredentialFormat",
          "description": "The format of the key."
        },
        "key": {
          "type": "string",
          "description": "The key data."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:PublicKeyCredentialFormat": {
      "description": "The format of the key.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedPublicKeyFormat",
          "description": "The format has not been specified. This is an invalid default value and must not be used.",
          "value": "UNSPECIFIED_PUBLIC_KEY_FORMAT"
        },
        {
          "name": "RsaPem",
          "description": "An RSA public key encoded in base64, and wrapped by `-----BEGIN PUBLIC KEY-----` and `-----END PUBLIC KEY-----`. This can be used to verify `RS256` signatures in JWT tokens ([RFC7518]( https://www.ietf.org/rfc/rfc7518.txt)).",
          "value": "RSA_PEM"
        },
        {
          "name": "RsaX509Pem",
          "description": "As RSA_PEM, but wrapped in an X.509v3 certificate ([RFC5280]( https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.",
          "value": "RSA_X509_PEM"
        },
        {
          "name": "Es256Pem",
          "description": "Public key for the ECDSA algorithm using P-256 and SHA-256, encoded in base64, and wrapped by `-----BEGIN PUBLIC KEY-----` and `-----END PUBLIC KEY-----`. This can be used to verify JWT tokens with the `ES256` algorithm ([RFC7518](https://www.ietf.org/rfc/rfc7518.txt)). This curve is defined in [OpenSSL](https://www.openssl.org/) as the `prime256v1` curve.",
          "value": "ES256_PEM"
        },
        {
          "name": "Es256X509Pem",
          "description": "As ES256_PEM, but wrapped in an X.509v3 certificate ([RFC5280]( https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.",
          "value": "ES256_X509_PEM"
        }
      ]
    },
    "google-native:cloudiot/v1:PublicKeyCredentialResponse": {
      "description": "A public key format and data.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format of the key."
        },
        "key": {
          "type": "string",
          "description": "The key data."
        }
      },
      "type": "object",
      "required": [
        "format",
        "key"
      ]
    },
    "google-native:cloudiot/v1:RegistryCredential": {
      "description": "A server-stored registry credential used to validate device credentials.",
      "properties": {
        "publicKeyCertificate": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:PublicKeyCertificate",
          "description": "A public key certificate used to verify the device credentials."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:RegistryCredentialResponse": {
      "description": "A server-stored registry credential used to validate device credentials.",
      "properties": {
        "publicKeyCertificate": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:PublicKeyCertificateResponse",
          "description": "A public key certificate used to verify the device credentials."
        }
      },
      "type": "object",
      "required": [
        "publicKeyCertificate"
      ]
    },
    "google-native:cloudiot/v1:RegistryLogLevel": {
      "description": "**Beta Feature** The default logging verbosity for activity from devices in this registry. The verbosity level can be overridden by Device.log_level.",
      "type": "string",
      "enum": [
        {
          "name": "LogLevelUnspecified",
          "description": "No logging specified. If not specified, logging will be disabled.",
          "value": "LOG_LEVEL_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Disables logging.",
          "value": "NONE"
        },
        {
          "name": "Error",
          "description": "Error events will be logged.",
          "value": "ERROR"
        },
        {
          "name": "Info",
          "description": "Informational events will be logged, such as connections and disconnections.",
          "value": "INFO"
        },
        {
          "name": "Debug",
          "description": "All events will be logged.",
          "value": "DEBUG"
        }
      ]
    },
    "google-native:cloudiot/v1:StateNotificationConfig": {
      "description": "The configuration for notification of new states received from the device.",
      "properties": {
        "pubsubTopicName": {
          "type": "string",
          "description": "A Cloud Pub/Sub topic name. For example, `projects/myProject/topics/deviceEvents`."
        }
      },
      "type": "object"
    },
    "google-native:cloudiot/v1:StateNotificationConfigResponse": {
      "description": "The configuration for notification of new states received from the device.",
      "properties": {
        "pubsubTopicName": {
          "type": "string",
          "description": "A Cloud Pub/Sub topic name. For example, `projects/myProject/topics/deviceEvents`."
        }
      },
      "type": "object",
      "required": [
        "pubsubTopicName"
      ]
    },
    "google-native:cloudiot/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:cloudiot/v1:X509CertificateDetailsResponse": {
      "description": "Details of an X.509 certificate. For informational purposes only.",
      "properties": {
        "expiryTime": {
          "type": "string",
          "description": "The time the certificate becomes invalid."
        },
        "issuer": {
          "type": "string",
          "description": "The entity that signed the certificate."
        },
        "publicKeyType": {
          "type": "string",
          "description": "The type of public key in the certificate."
        },
        "signatureAlgorithm": {
          "type": "string",
          "description": "The algorithm used to sign the certificate."
        },
        "startTime": {
          "type": "string",
          "description": "The time the certificate becomes valid."
        },
        "subject": {
          "type": "string",
          "description": "The entity the certificate and public key belong to."
        }
      },
      "type": "object",
      "required": [
        "expiryTime",
        "issuer",
        "publicKeyType",
        "signatureAlgorithm",
        "startTime",
        "subject"
      ]
    },
    "google-native:cloudkms/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudkms/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudkms/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudkms/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudkms/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudkms/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudkms/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudkms/v1:Certificate": {
      "description": "A Certificate represents an X.509 certificate used to authenticate HTTPS connections to EKM replicas.",
      "properties": {
        "rawDer": {
          "type": "string",
          "description": "The raw certificate bytes in DER format."
        }
      },
      "type": "object",
      "required": [
        "rawDer"
      ]
    },
    "google-native:cloudkms/v1:CertificateChainsResponse": {
      "description": "Certificate chains needed to verify the attestation. Certificates in chains are PEM-encoded and are ordered based on https://tools.ietf.org/html/rfc5246#section-7.4.2.",
      "properties": {
        "caviumCerts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cavium certificate chain corresponding to the attestation."
        },
        "googleCardCerts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google card certificate chain corresponding to the attestation."
        },
        "googlePartitionCerts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google partition certificate chain corresponding to the attestation."
        }
      },
      "type": "object",
      "required": [
        "caviumCerts",
        "googleCardCerts",
        "googlePartitionCerts"
      ]
    },
    "google-native:cloudkms/v1:CertificateResponse": {
      "description": "A Certificate represents an X.509 certificate used to authenticate HTTPS connections to EKM replicas.",
      "properties": {
        "issuer": {
          "type": "string",
          "description": "The issuer distinguished name in RFC 2253 format. Only present if parsed is true."
        },
        "notAfterTime": {
          "type": "string",
          "description": "The certificate is not valid after this time. Only present if parsed is true."
        },
        "notBeforeTime": {
          "type": "string",
          "description": "The certificate is not valid before this time. Only present if parsed is true."
        },
        "parsed": {
          "type": "boolean",
          "description": "True if the certificate was parsed successfully."
        },
        "rawDer": {
          "type": "string",
          "description": "The raw certificate bytes in DER format."
        },
        "serialNumber": {
          "type": "string",
          "description": "The certificate serial number as a hex string. Only present if parsed is true."
        },
        "sha256Fingerprint": {
          "type": "string",
          "description": "The SHA-256 certificate fingerprint as a hex string. Only present if parsed is true."
        },
        "subject": {
          "type": "string",
          "description": "The subject distinguished name in RFC 2253 format. Only present if parsed is true."
        },
        "subjectAlternativeDnsNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The subject Alternative DNS names. Only present if parsed is true."
        }
      },
      "type": "object",
      "required": [
        "issuer",
        "notAfterTime",
        "notBeforeTime",
        "parsed",
        "rawDer",
        "serialNumber",
        "sha256Fingerprint",
        "subject",
        "subjectAlternativeDnsNames"
      ]
    },
    "google-native:cloudkms/v1:CryptoKeyPurpose": {
      "description": "Immutable. The immutable purpose of this CryptoKey.",
      "type": "string",
      "enum": [
        {
          "name": "CryptoKeyPurposeUnspecified",
          "description": "Not specified.",
          "value": "CRYPTO_KEY_PURPOSE_UNSPECIFIED"
        },
        {
          "name": "EncryptDecrypt",
          "description": "CryptoKeys with this purpose may be used with Encrypt and Decrypt.",
          "value": "ENCRYPT_DECRYPT"
        },
        {
          "name": "AsymmetricSign",
          "description": "CryptoKeys with this purpose may be used with AsymmetricSign and GetPublicKey.",
          "value": "ASYMMETRIC_SIGN"
        },
        {
          "name": "AsymmetricDecrypt",
          "description": "CryptoKeys with this purpose may be used with AsymmetricDecrypt and GetPublicKey.",
          "value": "ASYMMETRIC_DECRYPT"
        },
        {
          "name": "RawEncryptDecrypt",
          "description": "CryptoKeys with this purpose may be used with RawEncrypt and RawDecrypt. This purpose is meant to be used for interoperable symmetric encryption and does not support automatic CryptoKey rotation.",
          "value": "RAW_ENCRYPT_DECRYPT"
        },
        {
          "name": "Mac",
          "description": "CryptoKeys with this purpose may be used with MacSign.",
          "value": "MAC"
        }
      ]
    },
    "google-native:cloudkms/v1:CryptoKeyVersionResponse": {
      "description": "A CryptoKeyVersion represents an individual cryptographic key, and the associated key material. An ENABLED version can be used for cryptographic operations. For security reasons, the raw cryptographic key material represented by a CryptoKeyVersion can never be viewed or exported. It can only be used to encrypt, decrypt, or sign data when an authorized user or application invokes Cloud KMS.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports."
        },
        "attestation": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:KeyOperationAttestationResponse",
          "description": "Statement that was generated and signed by the HSM at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google. Only provided for key versions with protection_level HSM."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this CryptoKeyVersion was created."
        },
        "destroyEventTime": {
          "type": "string",
          "description": "The time this CryptoKeyVersion's key material was destroyed. Only present if state is DESTROYED."
        },
        "destroyTime": {
          "type": "string",
          "description": "The time this CryptoKeyVersion's key material is scheduled for destruction. Only present if state is DESTROY_SCHEDULED."
        },
        "externalDestructionFailureReason": {
          "type": "string",
          "description": "The root cause of the most recent external destruction failure. Only present if state is EXTERNAL_DESTRUCTION_FAILED."
        },
        "externalProtectionLevelOptions": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:ExternalProtectionLevelOptionsResponse",
          "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels."
        },
        "generateTime": {
          "type": "string",
          "description": "The time this CryptoKeyVersion's key material was generated."
        },
        "generationFailureReason": {
          "type": "string",
          "description": "The root cause of the most recent generation failure. Only present if state is GENERATION_FAILED."
        },
        "importFailureReason": {
          "type": "string",
          "description": "The root cause of the most recent import failure. Only present if state is IMPORT_FAILED."
        },
        "importJob": {
          "type": "string",
          "description": "The name of the ImportJob used in the most recent import of this CryptoKeyVersion. Only present if the underlying key material was imported."
        },
        "importTime": {
          "type": "string",
          "description": "The time at which this CryptoKeyVersion's key material was most recently imported."
        },
        "name": {
          "type": "string",
          "description": "The resource name for this CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`."
        },
        "protectionLevel": {
          "type": "string",
          "description": "The ProtectionLevel describing how crypto operations are performed with this CryptoKeyVersion."
        },
        "reimportEligible": {
          "type": "boolean",
          "description": "Whether or not this key version is eligible for reimport, by being specified as a target in ImportCryptoKeyVersionRequest.crypto_key_version."
        },
        "state": {
          "type": "string",
          "description": "The current state of the CryptoKeyVersion."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "attestation",
        "createTime",
        "destroyEventTime",
        "destroyTime",
        "externalDestructionFailureReason",
        "externalProtectionLevelOptions",
        "generateTime",
        "generationFailureReason",
        "importFailureReason",
        "importJob",
        "importTime",
        "name",
        "protectionLevel",
        "reimportEligible",
        "state"
      ]
    },
    "google-native:cloudkms/v1:CryptoKeyVersionState": {
      "description": "The current state of the CryptoKeyVersion.",
      "type": "string",
      "enum": [
        {
          "name": "CryptoKeyVersionStateUnspecified",
          "description": "Not specified.",
          "value": "CRYPTO_KEY_VERSION_STATE_UNSPECIFIED"
        },
        {
          "name": "PendingGeneration",
          "description": "This version is still being generated. It may not be used, enabled, disabled, or destroyed yet. Cloud KMS will automatically mark this version ENABLED as soon as the version is ready.",
          "value": "PENDING_GENERATION"
        },
        {
          "name": "Enabled",
          "description": "This version may be used for cryptographic operations.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "This version may not be used, but the key material is still available, and the version can be placed back into the ENABLED state.",
          "value": "DISABLED"
        },
        {
          "name": "Destroyed",
          "description": "This version is destroyed, and the key material is no longer stored. This version may only become ENABLED again if this version is reimport_eligible and the original key material is reimported with a call to KeyManagementService.ImportCryptoKeyVersion.",
          "value": "DESTROYED"
        },
        {
          "name": "DestroyScheduled",
          "description": "This version is scheduled for destruction, and will be destroyed soon. Call RestoreCryptoKeyVersion to put it back into the DISABLED state.",
          "value": "DESTROY_SCHEDULED"
        },
        {
          "name": "PendingImport",
          "description": "This version is still being imported. It may not be used, enabled, disabled, or destroyed yet. Cloud KMS will automatically mark this version ENABLED as soon as the version is ready.",
          "value": "PENDING_IMPORT"
        },
        {
          "name": "ImportFailed",
          "description": "This version was not imported successfully. It may not be used, enabled, disabled, or destroyed. The submitted key material has been discarded. Additional details can be found in CryptoKeyVersion.import_failure_reason.",
          "value": "IMPORT_FAILED"
        },
        {
          "name": "GenerationFailed",
          "description": "This version was not generated successfully. It may not be used, enabled, disabled, or destroyed. Additional details can be found in CryptoKeyVersion.generation_failure_reason.",
          "value": "GENERATION_FAILED"
        },
        {
          "name": "PendingExternalDestruction",
          "description": "This version was destroyed, and it may not be used or enabled again. Cloud KMS is waiting for the corresponding key material residing in an external key manager to be destroyed.",
          "value": "PENDING_EXTERNAL_DESTRUCTION"
        },
        {
          "name": "ExternalDestructionFailed",
          "description": "This version was destroyed, and it may not be used or enabled again. However, Cloud KMS could not confirm that the corresponding key material residing in an external key manager was destroyed. Additional details can be found in CryptoKeyVersion.external_destruction_failure_reason.",
          "value": "EXTERNAL_DESTRUCTION_FAILED"
        }
      ]
    },
    "google-native:cloudkms/v1:CryptoKeyVersionTemplate": {
      "description": "A CryptoKeyVersionTemplate specifies the properties to use when creating a new CryptoKeyVersion, either manually with CreateCryptoKeyVersion or automatically as a result of auto-rotation.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyVersionTemplateAlgorithm",
          "description": "Algorithm to use when creating a CryptoKeyVersion based on this template. For backwards compatibility, GOOGLE_SYMMETRIC_ENCRYPTION is implied if both this field is omitted and CryptoKey.purpose is ENCRYPT_DECRYPT."
        },
        "protectionLevel": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyVersionTemplateProtectionLevel",
          "description": "ProtectionLevel to use when creating a CryptoKeyVersion based on this template. Immutable. Defaults to SOFTWARE."
        }
      },
      "type": "object",
      "required": [
        "algorithm"
      ]
    },
    "google-native:cloudkms/v1:CryptoKeyVersionTemplateAlgorithm": {
      "description": "Required. Algorithm to use when creating a CryptoKeyVersion based on this template. For backwards compatibility, GOOGLE_SYMMETRIC_ENCRYPTION is implied if both this field is omitted and CryptoKey.purpose is ENCRYPT_DECRYPT.",
      "type": "string",
      "enum": [
        {
          "name": "CryptoKeyVersionAlgorithmUnspecified",
          "description": "Not specified.",
          "value": "CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "GoogleSymmetricEncryption",
          "description": "Creates symmetric encryption keys.",
          "value": "GOOGLE_SYMMETRIC_ENCRYPTION"
        },
        {
          "name": "Aes128Gcm",
          "description": "AES-GCM (Galois Counter Mode) using 128-bit keys.",
          "value": "AES_128_GCM"
        },
        {
          "name": "Aes256Gcm",
          "description": "AES-GCM (Galois Counter Mode) using 256-bit keys.",
          "value": "AES_256_GCM"
        },
        {
          "name": "Aes128Cbc",
          "description": "AES-CBC (Cipher Block Chaining Mode) using 128-bit keys.",
          "value": "AES_128_CBC"
        },
        {
          "name": "Aes256Cbc",
          "description": "AES-CBC (Cipher Block Chaining Mode) using 256-bit keys.",
          "value": "AES_256_CBC"
        },
        {
          "name": "Aes128Ctr",
          "description": "AES-CTR (Counter Mode) using 128-bit keys.",
          "value": "AES_128_CTR"
        },
        {
          "name": "Aes256Ctr",
          "description": "AES-CTR (Counter Mode) using 256-bit keys.",
          "value": "AES_256_CTR"
        },
        {
          "name": "RsaSignPss2048Sha256",
          "description": "RSASSA-PSS 2048 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_2048_SHA256"
        },
        {
          "name": "RsaSignPss3072Sha256",
          "description": "RSASSA-PSS 3072 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_3072_SHA256"
        },
        {
          "name": "RsaSignPss4096Sha256",
          "description": "RSASSA-PSS 4096 bit key with a SHA256 digest.",
          "value": "RSA_SIGN_PSS_4096_SHA256"
        },
        {
          "name": "RsaSignPss4096Sha512",
          "description": "RSASSA-PSS 4096 bit key with a SHA512 digest.",
          "value": "RSA_SIGN_PSS_4096_SHA512"
        },
        {
          "name": "RsaSignPkcs12048Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 2048 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_2048_SHA256"
        },
        {
          "name": "RsaSignPkcs13072Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 3072 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_3072_SHA256"
        },
        {
          "name": "RsaSignPkcs14096Sha256",
          "description": "RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA256 digest.",
          "value": "RSA_SIGN_PKCS1_4096_SHA256"
        },
        {
          "name": "RsaSignPkcs14096Sha512",
          "description": "RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA512 digest.",
          "value": "RSA_SIGN_PKCS1_4096_SHA512"
        },
        {
          "name": "RsaSignRawPkcs12048",
          "description": "RSASSA-PKCS1-v1_5 signing without encoding, with a 2048 bit key.",
          "value": "RSA_SIGN_RAW_PKCS1_2048"
        },
        {
          "name": "RsaSignRawPkcs13072",
          "description": "RSASSA-PKCS1-v1_5 signing without encoding, with a 3072 bit key.",
          "value": "RSA_SIGN_RAW_PKCS1_3072"
        },
        {
          "name": "RsaSignRawPkcs14096",
          "description": "RSASSA-PKCS1-v1_5 signing without encoding, with a 4096 bit key.",
          "value": "RSA_SIGN_RAW_PKCS1_4096"
        },
        {
          "name": "RsaDecryptOaep2048Sha256",
          "description": "RSAES-OAEP 2048 bit key with a SHA256 digest.",
          "value": "RSA_DECRYPT_OAEP_2048_SHA256"
        },
        {
          "name": "RsaDecryptOaep3072Sha256",
          "description": "RSAES-OAEP 3072 bit key with a SHA256 digest.",
          "value": "RSA_DECRYPT_OAEP_3072_SHA256"
        },
        {
          "name": "RsaDecryptOaep4096Sha256",
          "description": "RSAES-OAEP 4096 bit key with a SHA256 digest.",
          "value": "RSA_DECRYPT_OAEP_4096_SHA256"
        },
        {
          "name": "RsaDecryptOaep4096Sha512",
          "description": "RSAES-OAEP 4096 bit key with a SHA512 digest.",
          "value": "RSA_DECRYPT_OAEP_4096_SHA512"
        },
        {
          "name": "RsaDecryptOaep2048Sha1",
          "description": "RSAES-OAEP 2048 bit key with a SHA1 digest.",
          "value": "RSA_DECRYPT_OAEP_2048_SHA1"
        },
        {
          "name": "RsaDecryptOaep3072Sha1",
          "description": "RSAES-OAEP 3072 bit key with a SHA1 digest.",
          "value": "RSA_DECRYPT_OAEP_3072_SHA1"
        },
        {
          "name": "RsaDecryptOaep4096Sha1",
          "description": "RSAES-OAEP 4096 bit key with a SHA1 digest.",
          "value": "RSA_DECRYPT_OAEP_4096_SHA1"
        },
        {
          "name": "EcSignP256Sha256",
          "description": "ECDSA on the NIST P-256 curve with a SHA256 digest. Other hash functions can also be used: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms",
          "value": "EC_SIGN_P256_SHA256"
        },
        {
          "name": "EcSignP384Sha384",
          "description": "ECDSA on the NIST P-384 curve with a SHA384 digest. Other hash functions can also be used: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms",
          "value": "EC_SIGN_P384_SHA384"
        },
        {
          "name": "EcSignSecp256k1Sha256",
          "description": "ECDSA on the non-NIST secp256k1 curve. This curve is only supported for HSM protection level. Other hash functions can also be used: https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms",
          "value": "EC_SIGN_SECP256K1_SHA256"
        },
        {
          "name": "HmacSha256",
          "description": "HMAC-SHA256 signing with a 256 bit key.",
          "value": "HMAC_SHA256"
        },
        {
          "name": "HmacSha1",
          "description": "HMAC-SHA1 signing with a 160 bit key.",
          "value": "HMAC_SHA1"
        },
        {
          "name": "HmacSha384",
          "description": "HMAC-SHA384 signing with a 384 bit key.",
          "value": "HMAC_SHA384"
        },
        {
          "name": "HmacSha512",
          "description": "HMAC-SHA512 signing with a 512 bit key.",
          "value": "HMAC_SHA512"
        },
        {
          "name": "HmacSha224",
          "description": "HMAC-SHA224 signing with a 224 bit key.",
          "value": "HMAC_SHA224"
        },
        {
          "name": "ExternalSymmetricEncryption",
          "description": "Algorithm representing symmetric encryption by an external key manager.",
          "value": "EXTERNAL_SYMMETRIC_ENCRYPTION"
        }
      ]
    },
    "google-native:cloudkms/v1:CryptoKeyVersionTemplateProtectionLevel": {
      "description": "ProtectionLevel to use when creating a CryptoKeyVersion based on this template. Immutable. Defaults to SOFTWARE.",
      "type": "string",
      "enum": [
        {
          "name": "ProtectionLevelUnspecified",
          "description": "Not specified.",
          "value": "PROTECTION_LEVEL_UNSPECIFIED"
        },
        {
          "name": "Software",
          "description": "Crypto operations are performed in software.",
          "value": "SOFTWARE"
        },
        {
          "name": "Hsm",
          "description": "Crypto operations are performed in a Hardware Security Module.",
          "value": "HSM"
        },
        {
          "name": "External",
          "description": "Crypto operations are performed by an external key manager.",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalVpc",
          "description": "Crypto operations are performed in an EKM-over-VPC backend.",
          "value": "EXTERNAL_VPC"
        }
      ]
    },
    "google-native:cloudkms/v1:CryptoKeyVersionTemplateResponse": {
      "description": "A CryptoKeyVersionTemplate specifies the properties to use when creating a new CryptoKeyVersion, either manually with CreateCryptoKeyVersion or automatically as a result of auto-rotation.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "Algorithm to use when creating a CryptoKeyVersion based on this template. For backwards compatibility, GOOGLE_SYMMETRIC_ENCRYPTION is implied if both this field is omitted and CryptoKey.purpose is ENCRYPT_DECRYPT."
        },
        "protectionLevel": {
          "type": "string",
          "description": "ProtectionLevel to use when creating a CryptoKeyVersion based on this template. Immutable. Defaults to SOFTWARE."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "protectionLevel"
      ]
    },
    "google-native:cloudkms/v1:EkmConnectionKeyManagementMode": {
      "description": "Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL.",
      "type": "string",
      "enum": [
        {
          "name": "KeyManagementModeUnspecified",
          "description": "Not specified.",
          "value": "KEY_MANAGEMENT_MODE_UNSPECIFIED"
        },
        {
          "name": "Manual",
          "description": "EKM-side key management operations on CryptoKeys created with this EkmConnection must be initiated from the EKM directly and cannot be performed from Cloud KMS. This means that: * When creating a CryptoKeyVersion associated with this EkmConnection, the caller must supply the key path of pre-existing external key material that will be linked to the CryptoKeyVersion. * Destruction of external key material cannot be requested via the Cloud KMS API and must be performed directly in the EKM. * Automatic rotation of key material is not supported.",
          "value": "MANUAL"
        },
        {
          "name": "CloudKms",
          "description": "All CryptoKeys created with this EkmConnection use EKM-side key management operations initiated from Cloud KMS. This means that: * When a CryptoKeyVersion associated with this EkmConnection is created, the EKM automatically generates new key material and a new key path. The caller cannot supply the key path of pre-existing external key material. * Destruction of external key material associated with this EkmConnection can be requested by calling DestroyCryptoKeyVersion. * Automatic rotation of key material is supported.",
          "value": "CLOUD_KMS"
        }
      ]
    },
    "google-native:cloudkms/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudkms/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudkms/v1:ExternalProtectionLevelOptions": {
      "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels.",
      "properties": {
        "ekmConnectionKeyPath": {
          "type": "string",
          "description": "The path to the external key material on the EKM when using EkmConnection e.g., \"v0/my/key\". Set this field instead of external_key_uri when using an EkmConnection."
        },
        "externalKeyUri": {
          "type": "string",
          "description": "The URI for an external resource that this CryptoKeyVersion represents."
        }
      },
      "type": "object"
    },
    "google-native:cloudkms/v1:ExternalProtectionLevelOptionsResponse": {
      "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels.",
      "properties": {
        "ekmConnectionKeyPath": {
          "type": "string",
          "description": "The path to the external key material on the EKM when using EkmConnection e.g., \"v0/my/key\". Set this field instead of external_key_uri when using an EkmConnection."
        },
        "externalKeyUri": {
          "type": "string",
          "description": "The URI for an external resource that this CryptoKeyVersion represents."
        }
      },
      "type": "object",
      "required": [
        "ekmConnectionKeyPath",
        "externalKeyUri"
      ]
    },
    "google-native:cloudkms/v1:ImportJobImportMethod": {
      "description": "Required. Immutable. The wrapping method to be used for incoming key material.",
      "type": "string",
      "enum": [
        {
          "name": "ImportMethodUnspecified",
          "description": "Not specified.",
          "value": "IMPORT_METHOD_UNSPECIFIED"
        },
        {
          "name": "RsaOaep3072Sha1Aes256",
          "description": "This ImportMethod represents the CKM_RSA_AES_KEY_WRAP key wrapping scheme defined in the PKCS #11 standard. In summary, this involves wrapping the raw key with an ephemeral AES key, and wrapping the ephemeral AES key with a 3072 bit RSA key. For more details, see [RSA AES key wrap mechanism](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908).",
          "value": "RSA_OAEP_3072_SHA1_AES_256"
        },
        {
          "name": "RsaOaep4096Sha1Aes256",
          "description": "This ImportMethod represents the CKM_RSA_AES_KEY_WRAP key wrapping scheme defined in the PKCS #11 standard. In summary, this involves wrapping the raw key with an ephemeral AES key, and wrapping the ephemeral AES key with a 4096 bit RSA key. For more details, see [RSA AES key wrap mechanism](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908).",
          "value": "RSA_OAEP_4096_SHA1_AES_256"
        },
        {
          "name": "RsaOaep3072Sha256Aes256",
          "description": "This ImportMethod represents the CKM_RSA_AES_KEY_WRAP key wrapping scheme defined in the PKCS #11 standard. In summary, this involves wrapping the raw key with an ephemeral AES key, and wrapping the ephemeral AES key with a 3072 bit RSA key. For more details, see [RSA AES key wrap mechanism](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908).",
          "value": "RSA_OAEP_3072_SHA256_AES_256"
        },
        {
          "name": "RsaOaep4096Sha256Aes256",
          "description": "This ImportMethod represents the CKM_RSA_AES_KEY_WRAP key wrapping scheme defined in the PKCS #11 standard. In summary, this involves wrapping the raw key with an ephemeral AES key, and wrapping the ephemeral AES key with a 4096 bit RSA key. For more details, see [RSA AES key wrap mechanism](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226908).",
          "value": "RSA_OAEP_4096_SHA256_AES_256"
        },
        {
          "name": "RsaOaep3072Sha256",
          "description": "This ImportMethod represents RSAES-OAEP with a 3072 bit RSA key. The key material to be imported is wrapped directly with the RSA key. Due to technical limitations of RSA wrapping, this method cannot be used to wrap RSA keys for import.",
          "value": "RSA_OAEP_3072_SHA256"
        },
        {
          "name": "RsaOaep4096Sha256",
          "description": "This ImportMethod represents RSAES-OAEP with a 4096 bit RSA key. The key material to be imported is wrapped directly with the RSA key. Due to technical limitations of RSA wrapping, this method cannot be used to wrap RSA keys for import.",
          "value": "RSA_OAEP_4096_SHA256"
        }
      ]
    },
    "google-native:cloudkms/v1:ImportJobProtectionLevel": {
      "description": "Required. Immutable. The protection level of the ImportJob. This must match the protection_level of the version_template on the CryptoKey you attempt to import into.",
      "type": "string",
      "enum": [
        {
          "name": "ProtectionLevelUnspecified",
          "description": "Not specified.",
          "value": "PROTECTION_LEVEL_UNSPECIFIED"
        },
        {
          "name": "Software",
          "description": "Crypto operations are performed in software.",
          "value": "SOFTWARE"
        },
        {
          "name": "Hsm",
          "description": "Crypto operations are performed in a Hardware Security Module.",
          "value": "HSM"
        },
        {
          "name": "External",
          "description": "Crypto operations are performed by an external key manager.",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalVpc",
          "description": "Crypto operations are performed in an EKM-over-VPC backend.",
          "value": "EXTERNAL_VPC"
        }
      ]
    },
    "google-native:cloudkms/v1:KeyOperationAttestationResponse": {
      "description": "Contains an HSM-generated attestation about a key operation. For more information, see [Verifying attestations] (https://cloud.google.com/kms/docs/attest-key).",
      "properties": {
        "certChains": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:CertificateChainsResponse",
          "description": "The certificate chains needed to validate the attestation"
        },
        "content": {
          "type": "string",
          "description": "The attestation data provided by the HSM when the key operation was performed."
        },
        "format": {
          "type": "string",
          "description": "The format of the attestation data."
        }
      },
      "type": "object",
      "required": [
        "certChains",
        "content",
        "format"
      ]
    },
    "google-native:cloudkms/v1:ServiceResolver": {
      "description": "A ServiceResolver represents an EKM replica that can be reached within an EkmConnection.",
      "properties": {
        "endpointFilter": {
          "type": "string",
          "description": "Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest."
        },
        "hostname": {
          "type": "string",
          "description": "The hostname of the EKM replica used at TLS and HTTP layers."
        },
        "serverCertificates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:Certificate"
          },
          "description": "A list of leaf server certificates used to authenticate HTTPS connections to the EKM replica. Currently, a maximum of 10 Certificate is supported."
        },
        "serviceDirectoryService": {
          "type": "string",
          "description": "The resource name of the Service Directory service pointing to an EKM replica, in the format `projects/*/locations/*/namespaces/*/services/*`."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "serverCertificates",
        "serviceDirectoryService"
      ]
    },
    "google-native:cloudkms/v1:ServiceResolverResponse": {
      "description": "A ServiceResolver represents an EKM replica that can be reached within an EkmConnection.",
      "properties": {
        "endpointFilter": {
          "type": "string",
          "description": "Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest."
        },
        "hostname": {
          "type": "string",
          "description": "The hostname of the EKM replica used at TLS and HTTP layers."
        },
        "serverCertificates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:CertificateResponse"
          },
          "description": "A list of leaf server certificates used to authenticate HTTPS connections to the EKM replica. Currently, a maximum of 10 Certificate is supported."
        },
        "serviceDirectoryService": {
          "type": "string",
          "description": "The resource name of the Service Directory service pointing to an EKM replica, in the format `projects/*/locations/*/namespaces/*/services/*`."
        }
      },
      "type": "object",
      "required": [
        "endpointFilter",
        "hostname",
        "serverCertificates",
        "serviceDirectoryService"
      ]
    },
    "google-native:cloudkms/v1:WrappingPublicKeyResponse": {
      "description": "The public key component of the wrapping key. For details of the type of key this public key corresponds to, see the ImportMethod.",
      "properties": {
        "pem": {
          "type": "string",
          "description": "The public key, encoded in PEM format. For more information, see the [RFC 7468](https://tools.ietf.org/html/rfc7468) sections for [General Considerations](https://tools.ietf.org/html/rfc7468#section-2) and [Textual Encoding of Subject Public Key Info] (https://tools.ietf.org/html/rfc7468#section-13)."
        }
      },
      "type": "object",
      "required": [
        "pem"
      ]
    },
    "google-native:cloudresourcemanager/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudresourcemanager/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudresourcemanager/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudresourcemanager/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudresourcemanager/v1:ProjectLifecycleState": {
      "description": "The Project lifecycle state. Read-only.",
      "type": "string",
      "enum": [
        {
          "name": "LifecycleStateUnspecified",
          "description": "Unspecified state. This is only used/useful for distinguishing unset values.",
          "value": "LIFECYCLE_STATE_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "The normal and active state.",
          "value": "ACTIVE"
        },
        {
          "name": "DeleteRequested",
          "description": "The project has been marked for deletion by the user (by invoking DeleteProject) or by the system (Google Cloud Platform). This can generally be reversed by invoking UndeleteProject.",
          "value": "DELETE_REQUESTED"
        },
        {
          "name": "DeleteInProgress",
          "description": "This lifecycle state is no longer used and not returned by the API.",
          "value": "DELETE_IN_PROGRESS"
        }
      ]
    },
    "google-native:cloudresourcemanager/v1:ResourceId": {
      "description": "A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an App Engine app, a Compute Engine instance, a Cloud SQL database, and so on.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The type-specific id. This should correspond to the id used in the type-specific API's."
        },
        "type": {
          "type": "string",
          "description": "The resource type this id is for. At present, the valid types are: \"organization\", \"folder\", and \"project\"."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1:ResourceIdResponse": {
      "description": "A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an App Engine app, a Compute Engine instance, a Cloud SQL database, and so on.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The resource type this id is for. At present, the valid types are: \"organization\", \"folder\", and \"project\"."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:ProjectLifecycleState": {
      "description": "The Project lifecycle state. Read-only.",
      "type": "string",
      "enum": [
        {
          "name": "LifecycleStateUnspecified",
          "description": "Unspecified state. This is only used/useful for distinguishing unset values.",
          "value": "LIFECYCLE_STATE_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "The normal and active state.",
          "value": "ACTIVE"
        },
        {
          "name": "DeleteRequested",
          "description": "The project has been marked for deletion by the user (by invoking DeleteProject) or by the system (Google Cloud Platform). This can generally be reversed by invoking UndeleteProject.",
          "value": "DELETE_REQUESTED"
        },
        {
          "name": "DeleteInProgress",
          "description": "This lifecycle state is no longer used and is not returned by the API.",
          "value": "DELETE_IN_PROGRESS"
        }
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:ResourceId": {
      "description": "A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an App Engine app, a Compute Engine instance, a Cloud SQL database, and so on.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Required field for the type-specific id. This should correspond to the id used in the type-specific API's."
        },
        "type": {
          "type": "string",
          "description": "Required field representing the resource type this id is for. At present, the valid types are \"project\", \"folder\", and \"organization\"."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v1beta1:ResourceIdResponse": {
      "description": "A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an App Engine app, a Compute Engine instance, a Cloud SQL database, and so on.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Required field representing the resource type this id is for. At present, the valid types are \"project\", \"folder\", and \"organization\"."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:cloudresourcemanager/v2:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v2:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudresourcemanager/v2:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v2:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudresourcemanager/v2:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudresourcemanager/v2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v2beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v2beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v2beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v2beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudresourcemanager/v3:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v3:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:cloudresourcemanager/v3:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v3:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:cloudresourcemanager/v3:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:cloudresourcemanager/v3:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v3:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudresourcemanager/v3:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudresourcemanager/v3:TagKeyPurpose": {
      "description": "Optional. A purpose denotes that this Tag is intended for use in policies of a specific policy engine, and will involve that policy engine in management operations involving this Tag. A purpose does not grant a policy engine exclusive rights to the Tag, and it may be referenced by other policy engines. A purpose cannot be changed once set.",
      "type": "string",
      "enum": [
        {
          "name": "PurposeUnspecified",
          "description": "Unspecified purpose.",
          "value": "PURPOSE_UNSPECIFIED"
        },
        {
          "name": "GceFirewall",
          "description": "Purpose for Compute Engine firewalls. A corresponding `purpose_data` should be set for the network the tag is intended for. The key should be `network` and the value should be in ## either of these two formats: `https://www.googleapis.com/compute/{compute_version}/projects/{project_id}/global/networks/{network_id}` - `{project_id}/{network_name}` ## Examples: `https://www.googleapis.com/compute/staging_v1/projects/fail-closed-load-testing/global/networks/6992953698831725600` - `fail-closed-load-testing/load-testing-network`",
          "value": "GCE_FIREWALL"
        },
        {
          "name": "DataGovernance",
          "description": "Purpose for data governance. Tag Values created under a key with this purpose may have Tag Value children. No `purpose_data` should be set.",
          "value": "DATA_GOVERNANCE"
        }
      ]
    },
    "google-native:cloudscheduler/v1:AppEngineHttpTarget": {
      "description": "App Engine target. The job will be pushed to a job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. Error 503 is considered an App Engine system error instead of an application error. Requests returning error 503 will be retried regardless of retry configuration and not counted against retry counts. Any other response code, or a failure to receive a response before the deadline, constitutes a failed attempt.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:AppEngineRouting",
          "description": "App Engine Routing setting for the job."
        },
        "body": {
          "type": "string",
          "description": "Body. HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It will result in invalid argument error to set a body on a job with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the job is created. Cloud Scheduler sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Scheduler will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. * `X-CloudScheduler`: This header will be set to true. * `X-CloudScheduler-JobName`: This header will contain the job name. * `X-CloudScheduler-ScheduleTime`: For Cloud Scheduler jobs specified in the unix-cron format, this header will contain the job schedule time in RFC3339 UTC \"Zulu\" format. If the job has a body and the following headers are not set by the user, Cloud Scheduler sets default values: * `Content-Type`: This will be set to `\"application/octet-stream\"`. You can override this default by explicitly setting `Content-Type` to a particular media type when creating the job. For example, you can set `Content-Type` to `\"application/json\"`. The headers below are output only. They cannot be set or overridden: * `Content-Length`: This is computed by Cloud Scheduler. * `X-Google-*`: For Google internal use only. * `X-AppEngine-*`: For Google internal use only. In addition, some App Engine headers, which contain job-specific information, are also be sent to the job handler."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:AppEngineHttpTargetHttpMethod",
          "description": "The HTTP method to use for the request. PATCH and OPTIONS are not permitted."
        },
        "relativeUri": {
          "type": "string",
          "description": "The relative URI. The relative URL must begin with \"/\" and must be a valid HTTP relative URL. It can contain a path, query string arguments, and `#` fragments. If the relative URL is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1:AppEngineHttpTargetHttpMethod": {
      "description": "The HTTP method to use for the request. PATCH and OPTIONS are not permitted.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified. Defaults to POST.",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudscheduler/v1:AppEngineHttpTargetResponse": {
      "description": "App Engine target. The job will be pushed to a job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. Error 503 is considered an App Engine system error instead of an application error. Requests returning error 503 will be retried regardless of retry configuration and not counted against retry counts. Any other response code, or a failure to receive a response before the deadline, constitutes a failed attempt.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:AppEngineRoutingResponse",
          "description": "App Engine Routing setting for the job."
        },
        "body": {
          "type": "string",
          "description": "Body. HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It will result in invalid argument error to set a body on a job with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the job is created. Cloud Scheduler sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Scheduler will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. * `X-CloudScheduler`: This header will be set to true. * `X-CloudScheduler-JobName`: This header will contain the job name. * `X-CloudScheduler-ScheduleTime`: For Cloud Scheduler jobs specified in the unix-cron format, this header will contain the job schedule time in RFC3339 UTC \"Zulu\" format. If the job has a body and the following headers are not set by the user, Cloud Scheduler sets default values: * `Content-Type`: This will be set to `\"application/octet-stream\"`. You can override this default by explicitly setting `Content-Type` to a particular media type when creating the job. For example, you can set `Content-Type` to `\"application/json\"`. The headers below are output only. They cannot be set or overridden: * `Content-Length`: This is computed by Cloud Scheduler. * `X-Google-*`: For Google internal use only. * `X-AppEngine-*`: For Google internal use only. In addition, some App Engine headers, which contain job-specific information, are also be sent to the job handler."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. PATCH and OPTIONS are not permitted."
        },
        "relativeUri": {
          "type": "string",
          "description": "The relative URI. The relative URL must begin with \"/\" and must be a valid HTTP relative URL. It can contain a path, query string arguments, and `#` fragments. If the relative URL is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object",
      "required": [
        "appEngineRouting",
        "body",
        "headers",
        "httpMethod",
        "relativeUri"
      ]
    },
    "google-native:cloudscheduler/v1:AppEngineRouting": {
      "description": "App Engine Routing. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
      "properties": {
        "instance": {
          "type": "string",
          "description": "App instance. By default, the job is sent to an instance which is available when the job is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the job is sent to the service which is the default service when the job is attempted."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the job is sent to the version which is the default version when the job is attempted."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1:AppEngineRoutingResponse": {
      "description": "App Engine Routing. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
      "properties": {
        "host": {
          "type": "string",
          "description": "The host that the job is sent to. For more information about how App Engine requests are routed, see [here](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed). The host is constructed as: * `host = [application_domain_name]` `| [service] + '.' + [application_domain_name]` `| [version] + '.' + [application_domain_name]` `| [version_dot_service]+ '.' + [application_domain_name]` `| [instance] + '.' + [application_domain_name]` `| [instance_dot_service] + '.' + [application_domain_name]` `| [instance_dot_version] + '.' + [application_domain_name]` `| [instance_dot_version_dot_service] + '.' + [application_domain_name]` * `application_domain_name` = The domain name of the app, for example .appspot.com, which is associated with the job's project ID. * `service =` service * `version =` version * `version_dot_service =` version `+ '.' +` service * `instance =` instance * `instance_dot_service =` instance `+ '.' +` service * `instance_dot_version =` instance `+ '.' +` version * `instance_dot_version_dot_service =` instance `+ '.' +` version `+ '.' +` service If service is empty, then the job will be sent to the service which is the default service when the job is attempted. If version is empty, then the job will be sent to the version which is the default version when the job is attempted. If instance is empty, then the job will be sent to an instance which is available when the job is attempted. If service, version, or instance is invalid, then the job will be sent to the default version of the default service when the job is attempted."
        },
        "instance": {
          "type": "string",
          "description": "App instance. By default, the job is sent to an instance which is available when the job is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the job is sent to the service which is the default service when the job is attempted."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the job is sent to the version which is the default version when the job is attempted."
        }
      },
      "type": "object",
      "required": [
        "host",
        "instance",
        "service",
        "version"
      ]
    },
    "google-native:cloudscheduler/v1:HttpTarget": {
      "description": "Http target. The job will be pushed to the job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. A failure to receive a response constitutes a failed execution. For a redirected request, the response returned by the redirected request is considered.",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a job with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. The user can specify HTTP request headers to send with the job's HTTP request. Repeated headers are not supported, but a header value can contain commas. The following headers represent a subset of the headers that accompany the job's HTTP request. Some HTTP request headers are ignored or replaced. A partial list of headers that are ignored or replaced is below: * Host: This will be computed by Cloud Scheduler and derived from uri. * `Content-Length`: This will be computed by Cloud Scheduler. * `User-Agent`: This will be set to `\"Google-Cloud-Scheduler\"`. * `X-Google-*`: Google internal use only. * `X-AppEngine-*`: Google internal use only. * `X-CloudScheduler`: This header will be set to true. * `X-CloudScheduler-JobName`: This header will contain the job name. * `X-CloudScheduler-ScheduleTime`: For Cloud Scheduler jobs specified in the unix-cron format, this header will contain the job schedule time in RFC3339 UTC \"Zulu\" format. If the job has a body and the following headers are not set by the user, Cloud Scheduler sets default values: * `Content-Type`: This will be set to `\"application/octet-stream\"`. You can override this default by explicitly setting `Content-Type` to a particular media type when creating the job. For example, you can set `Content-Type` to `\"application/json\"`. The total size of headers must be less than 80KB."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:HttpTargetHttpMethod",
          "description": "Which HTTP method to use for the request."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:OAuthToken",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:OidcToken",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uri": {
          "type": "string",
          "description": "The full URI path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples of valid values for uri are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Scheduler will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:cloudscheduler/v1:HttpTargetHttpMethod": {
      "description": "Which HTTP method to use for the request.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified. Defaults to POST.",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudscheduler/v1:HttpTargetResponse": {
      "description": "Http target. The job will be pushed to the job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. A failure to receive a response constitutes a failed execution. For a redirected request, the response returned by the redirected request is considered.",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a job with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. The user can specify HTTP request headers to send with the job's HTTP request. Repeated headers are not supported, but a header value can contain commas. The following headers represent a subset of the headers that accompany the job's HTTP request. Some HTTP request headers are ignored or replaced. A partial list of headers that are ignored or replaced is below: * Host: This will be computed by Cloud Scheduler and derived from uri. * `Content-Length`: This will be computed by Cloud Scheduler. * `User-Agent`: This will be set to `\"Google-Cloud-Scheduler\"`. * `X-Google-*`: Google internal use only. * `X-AppEngine-*`: Google internal use only. * `X-CloudScheduler`: This header will be set to true. * `X-CloudScheduler-JobName`: This header will contain the job name. * `X-CloudScheduler-ScheduleTime`: For Cloud Scheduler jobs specified in the unix-cron format, this header will contain the job schedule time in RFC3339 UTC \"Zulu\" format. If the job has a body and the following headers are not set by the user, Cloud Scheduler sets default values: * `Content-Type`: This will be set to `\"application/octet-stream\"`. You can override this default by explicitly setting `Content-Type` to a particular media type when creating the job. For example, you can set `Content-Type` to `\"application/json\"`. The total size of headers must be less than 80KB."
        },
        "httpMethod": {
          "type": "string",
          "description": "Which HTTP method to use for the request."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:OAuthTokenResponse",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:OidcTokenResponse",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uri": {
          "type": "string",
          "description": "The full URI path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples of valid values for uri are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Scheduler will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding."
        }
      },
      "type": "object",
      "required": [
        "body",
        "headers",
        "httpMethod",
        "oauthToken",
        "oidcToken",
        "uri"
      ]
    },
    "google-native:cloudscheduler/v1:OAuthToken": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1:OAuthTokenResponse": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "scope",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudscheduler/v1:OidcToken": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1:OidcTokenResponse": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudscheduler/v1:PubsubTarget": {
      "description": "Pub/Sub target. The job will be delivered by publishing a message to the given Pub/Sub topic.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for PubsubMessage. Pubsub message must contain either non-empty data, or at least one attribute."
        },
        "data": {
          "type": "string",
          "description": "The message payload for PubsubMessage. Pubsub message must contain either non-empty data, or at least one attribute."
        },
        "topicName": {
          "type": "string",
          "description": "The name of the Cloud Pub/Sub topic to which messages will be published when a job is delivered. The topic name must be in the same format as required by Pub/Sub's [PublishRequest.name](https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#publishrequest), for example `projects/PROJECT_ID/topics/TOPIC_ID`. The topic must be in the same project as the Cloud Scheduler job."
        }
      },
      "type": "object",
      "required": [
        "topicName"
      ]
    },
    "google-native:cloudscheduler/v1:PubsubTargetResponse": {
      "description": "Pub/Sub target. The job will be delivered by publishing a message to the given Pub/Sub topic.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for PubsubMessage. Pubsub message must contain either non-empty data, or at least one attribute."
        },
        "data": {
          "type": "string",
          "description": "The message payload for PubsubMessage. Pubsub message must contain either non-empty data, or at least one attribute."
        },
        "topicName": {
          "type": "string",
          "description": "The name of the Cloud Pub/Sub topic to which messages will be published when a job is delivered. The topic name must be in the same format as required by Pub/Sub's [PublishRequest.name](https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#publishrequest), for example `projects/PROJECT_ID/topics/TOPIC_ID`. The topic must be in the same project as the Cloud Scheduler job."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "data",
        "topicName"
      ]
    },
    "google-native:cloudscheduler/v1:RetryConfig": {
      "description": "Settings that determine the retry behavior. By default, if a job does not complete successfully (meaning that an acknowledgement is not received from the handler, then it will be retried with exponential backoff according to the settings in RetryConfig.",
      "properties": {
        "maxBackoffDuration": {
          "type": "string",
          "description": "The maximum amount of time to wait before retrying a job after it fails. The default value of this field is 1 hour."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A job's retry interval starts at min_backoff_duration, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff_duration up to retry_count times. For example, if min_backoff_duration is 10s, max_backoff_duration is 300s, and `max_doublings` is 3, then the job will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the job will retry at intervals of max_backoff_duration until the job has been attempted retry_count times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... The default value of this field is 5."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "The time limit for retrying a failed job, measured from time when an execution was first attempted. If specified with retry_count, the job will be retried until both limits are reached. The default value for max_retry_duration is zero, which means retry duration is unlimited."
        },
        "minBackoffDuration": {
          "type": "string",
          "description": "The minimum amount of time to wait before retrying a job after it fails. The default value of this field is 5 seconds."
        },
        "retryCount": {
          "type": "integer",
          "description": "The number of attempts that the system will make to run a job using the exponential backoff procedure described by max_doublings. The default value of retry_count is zero. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure. If retry_count is set to a non-zero number then Cloud Scheduler will retry failed attempts, using exponential backoff, retry_count times, or until the next scheduled execution time, whichever comes first. Values greater than 5 and negative values are not allowed."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1:RetryConfigResponse": {
      "description": "Settings that determine the retry behavior. By default, if a job does not complete successfully (meaning that an acknowledgement is not received from the handler, then it will be retried with exponential backoff according to the settings in RetryConfig.",
      "properties": {
        "maxBackoffDuration": {
          "type": "string",
          "description": "The maximum amount of time to wait before retrying a job after it fails. The default value of this field is 1 hour."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A job's retry interval starts at min_backoff_duration, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff_duration up to retry_count times. For example, if min_backoff_duration is 10s, max_backoff_duration is 300s, and `max_doublings` is 3, then the job will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the job will retry at intervals of max_backoff_duration until the job has been attempted retry_count times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... The default value of this field is 5."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "The time limit for retrying a failed job, measured from time when an execution was first attempted. If specified with retry_count, the job will be retried until both limits are reached. The default value for max_retry_duration is zero, which means retry duration is unlimited."
        },
        "minBackoffDuration": {
          "type": "string",
          "description": "The minimum amount of time to wait before retrying a job after it fails. The default value of this field is 5 seconds."
        },
        "retryCount": {
          "type": "integer",
          "description": "The number of attempts that the system will make to run a job using the exponential backoff procedure described by max_doublings. The default value of retry_count is zero. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure. If retry_count is set to a non-zero number then Cloud Scheduler will retry failed attempts, using exponential backoff, retry_count times, or until the next scheduled execution time, whichever comes first. Values greater than 5 and negative values are not allowed."
        }
      },
      "type": "object",
      "required": [
        "maxBackoffDuration",
        "maxDoublings",
        "maxRetryDuration",
        "minBackoffDuration",
        "retryCount"
      ]
    },
    "google-native:cloudscheduler/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:cloudscheduler/v1beta1:AppEngineHttpTarget": {
      "description": "App Engine target. The job will be pushed to a job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. Error 503 is considered an App Engine system error instead of an application error. Requests returning error 503 will be retried regardless of retry configuration and not counted against retry counts. Any other response code, or a failure to receive a response before the deadline, constitutes a failed attempt.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:AppEngineRouting",
          "description": "App Engine Routing setting for the job."
        },
        "body": {
          "type": "string",
          "description": "Body. HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It will result in invalid argument error to set a body on a job with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the job is created. Cloud Scheduler sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Scheduler will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. * `X-CloudScheduler`: This header will be set to true. * `X-CloudScheduler-JobName`: This header will contain the job name. * `X-CloudScheduler-ScheduleTime`: For Cloud Scheduler jobs specified in the unix-cron format, this header will contain the job schedule time in RFC3339 UTC \"Zulu\" format. If the job has a body and the following headers are not set by the user, Cloud Scheduler sets default values: * `Content-Type`: This will be set to `\"application/octet-stream\"`. You can override this default by explicitly setting `Content-Type` to a particular media type when creating the job. For example, you can set `Content-Type` to `\"application/json\"`. The headers below are output only. They cannot be set or overridden: * `Content-Length`: This is computed by Cloud Scheduler. * `X-Google-*`: For Google internal use only. * `X-AppEngine-*`: For Google internal use only. In addition, some App Engine headers, which contain job-specific information, are also be sent to the job handler."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:AppEngineHttpTargetHttpMethod",
          "description": "The HTTP method to use for the request. PATCH and OPTIONS are not permitted."
        },
        "relativeUri": {
          "type": "string",
          "description": "The relative URI. The relative URL must begin with \"/\" and must be a valid HTTP relative URL. It can contain a path, query string arguments, and `#` fragments. If the relative URL is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1beta1:AppEngineHttpTargetHttpMethod": {
      "description": "The HTTP method to use for the request. PATCH and OPTIONS are not permitted.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified. Defaults to POST.",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudscheduler/v1beta1:AppEngineHttpTargetResponse": {
      "description": "App Engine target. The job will be pushed to a job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. Error 503 is considered an App Engine system error instead of an application error. Requests returning error 503 will be retried regardless of retry configuration and not counted against retry counts. Any other response code, or a failure to receive a response before the deadline, constitutes a failed attempt.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:AppEngineRoutingResponse",
          "description": "App Engine Routing setting for the job."
        },
        "body": {
          "type": "string",
          "description": "Body. HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It will result in invalid argument error to set a body on a job with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the job is created. Cloud Scheduler sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Scheduler will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. * `X-CloudScheduler`: This header will be set to true. * `X-CloudScheduler-JobName`: This header will contain the job name. * `X-CloudScheduler-ScheduleTime`: For Cloud Scheduler jobs specified in the unix-cron format, this header will contain the job schedule time in RFC3339 UTC \"Zulu\" format. If the job has a body and the following headers are not set by the user, Cloud Scheduler sets default values: * `Content-Type`: This will be set to `\"application/octet-stream\"`. You can override this default by explicitly setting `Content-Type` to a particular media type when creating the job. For example, you can set `Content-Type` to `\"application/json\"`. The headers below are output only. They cannot be set or overridden: * `Content-Length`: This is computed by Cloud Scheduler. * `X-Google-*`: For Google internal use only. * `X-AppEngine-*`: For Google internal use only. In addition, some App Engine headers, which contain job-specific information, are also be sent to the job handler."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. PATCH and OPTIONS are not permitted."
        },
        "relativeUri": {
          "type": "string",
          "description": "The relative URI. The relative URL must begin with \"/\" and must be a valid HTTP relative URL. It can contain a path, query string arguments, and `#` fragments. If the relative URL is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object",
      "required": [
        "appEngineRouting",
        "body",
        "headers",
        "httpMethod",
        "relativeUri"
      ]
    },
    "google-native:cloudscheduler/v1beta1:AppEngineRouting": {
      "description": "App Engine Routing. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
      "properties": {
        "instance": {
          "type": "string",
          "description": "App instance. By default, the job is sent to an instance which is available when the job is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the job is sent to the service which is the default service when the job is attempted."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the job is sent to the version which is the default version when the job is attempted."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1beta1:AppEngineRoutingResponse": {
      "description": "App Engine Routing. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
      "properties": {
        "host": {
          "type": "string",
          "description": "The host that the job is sent to. For more information about how App Engine requests are routed, see [here](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed). The host is constructed as: * `host = [application_domain_name]` `| [service] + '.' + [application_domain_name]` `| [version] + '.' + [application_domain_name]` `| [version_dot_service]+ '.' + [application_domain_name]` `| [instance] + '.' + [application_domain_name]` `| [instance_dot_service] + '.' + [application_domain_name]` `| [instance_dot_version] + '.' + [application_domain_name]` `| [instance_dot_version_dot_service] + '.' + [application_domain_name]` * `application_domain_name` = The domain name of the app, for example .appspot.com, which is associated with the job's project ID. * `service =` service * `version =` version * `version_dot_service =` version `+ '.' +` service * `instance =` instance * `instance_dot_service =` instance `+ '.' +` service * `instance_dot_version =` instance `+ '.' +` version * `instance_dot_version_dot_service =` instance `+ '.' +` version `+ '.' +` service If service is empty, then the job will be sent to the service which is the default service when the job is attempted. If version is empty, then the job will be sent to the version which is the default version when the job is attempted. If instance is empty, then the job will be sent to an instance which is available when the job is attempted. If service, version, or instance is invalid, then the job will be sent to the default version of the default service when the job is attempted."
        },
        "instance": {
          "type": "string",
          "description": "App instance. By default, the job is sent to an instance which is available when the job is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the job is sent to the service which is the default service when the job is attempted."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the job is sent to the version which is the default version when the job is attempted."
        }
      },
      "type": "object",
      "required": [
        "host",
        "instance",
        "service",
        "version"
      ]
    },
    "google-native:cloudscheduler/v1beta1:HttpTarget": {
      "description": "Http target. The job will be pushed to the job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. A failure to receive a response constitutes a failed execution. For a redirected request, the response returned by the redirected request is considered.",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a job with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. The user can specify HTTP request headers to send with the job's HTTP request. Repeated headers are not supported, but a header value can contain commas. The following headers represent a subset of the headers that accompany the job's HTTP request. Some HTTP request headers are ignored or replaced. A partial list of headers that are ignored or replaced is below: * Host: This will be computed by Cloud Scheduler and derived from uri. * `Content-Length`: This will be computed by Cloud Scheduler. * `User-Agent`: This will be set to `\"Google-Cloud-Scheduler\"`. * `X-Google-*`: Google internal use only. * `X-AppEngine-*`: Google internal use only. * `X-CloudScheduler`: This header will be set to true. * `X-CloudScheduler-JobName`: This header will contain the job name. * `X-CloudScheduler-ScheduleTime`: For Cloud Scheduler jobs specified in the unix-cron format, this header will contain the job schedule time in RFC3339 UTC \"Zulu\" format. If the job has a body and the following headers are not set by the user, Cloud Scheduler sets default values: * `Content-Type`: This will be set to `\"application/octet-stream\"`. You can override this default by explicitly setting `Content-Type` to a particular media type when creating the job. For example, you can set `Content-Type` to `\"application/json\"`. The total size of headers must be less than 80KB."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:HttpTargetHttpMethod",
          "description": "Which HTTP method to use for the request."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:OAuthToken",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:OidcToken",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uri": {
          "type": "string",
          "description": "The full URI path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples of valid values for uri are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Scheduler will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:cloudscheduler/v1beta1:HttpTargetHttpMethod": {
      "description": "Which HTTP method to use for the request.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified. Defaults to POST.",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudscheduler/v1beta1:HttpTargetResponse": {
      "description": "Http target. The job will be pushed to the job handler by means of an HTTP request via an http_method such as HTTP POST, HTTP GET, etc. The job is acknowledged by means of an HTTP response code in the range [200 - 299]. A failure to receive a response constitutes a failed execution. For a redirected request, the response returned by the redirected request is considered.",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a job with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. The user can specify HTTP request headers to send with the job's HTTP request. Repeated headers are not supported, but a header value can contain commas. The following headers represent a subset of the headers that accompany the job's HTTP request. Some HTTP request headers are ignored or replaced. A partial list of headers that are ignored or replaced is below: * Host: This will be computed by Cloud Scheduler and derived from uri. * `Content-Length`: This will be computed by Cloud Scheduler. * `User-Agent`: This will be set to `\"Google-Cloud-Scheduler\"`. * `X-Google-*`: Google internal use only. * `X-AppEngine-*`: Google internal use only. * `X-CloudScheduler`: This header will be set to true. * `X-CloudScheduler-JobName`: This header will contain the job name. * `X-CloudScheduler-ScheduleTime`: For Cloud Scheduler jobs specified in the unix-cron format, this header will contain the job schedule time in RFC3339 UTC \"Zulu\" format. If the job has a body and the following headers are not set by the user, Cloud Scheduler sets default values: * `Content-Type`: This will be set to `\"application/octet-stream\"`. You can override this default by explicitly setting `Content-Type` to a particular media type when creating the job. For example, you can set `Content-Type` to `\"application/json\"`. The total size of headers must be less than 80KB."
        },
        "httpMethod": {
          "type": "string",
          "description": "Which HTTP method to use for the request."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:OAuthTokenResponse",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:OidcTokenResponse",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uri": {
          "type": "string",
          "description": "The full URI path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples of valid values for uri are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Scheduler will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding."
        }
      },
      "type": "object",
      "required": [
        "body",
        "headers",
        "httpMethod",
        "oauthToken",
        "oidcToken",
        "uri"
      ]
    },
    "google-native:cloudscheduler/v1beta1:OAuthToken": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1beta1:OAuthTokenResponse": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "scope",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudscheduler/v1beta1:OidcToken": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1beta1:OidcTokenResponse": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudscheduler/v1beta1:PubsubTarget": {
      "description": "Pub/Sub target. The job will be delivered by publishing a message to the given Pub/Sub topic.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for PubsubMessage. Pubsub message must contain either non-empty data, or at least one attribute."
        },
        "data": {
          "type": "string",
          "description": "The message payload for PubsubMessage. Pubsub message must contain either non-empty data, or at least one attribute."
        },
        "topicName": {
          "type": "string",
          "description": "The name of the Cloud Pub/Sub topic to which messages will be published when a job is delivered. The topic name must be in the same format as required by Pub/Sub's [PublishRequest.name](https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#publishrequest), for example `projects/PROJECT_ID/topics/TOPIC_ID`. The topic must be in the same project as the Cloud Scheduler job."
        }
      },
      "type": "object",
      "required": [
        "topicName"
      ]
    },
    "google-native:cloudscheduler/v1beta1:PubsubTargetResponse": {
      "description": "Pub/Sub target. The job will be delivered by publishing a message to the given Pub/Sub topic.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for PubsubMessage. Pubsub message must contain either non-empty data, or at least one attribute."
        },
        "data": {
          "type": "string",
          "description": "The message payload for PubsubMessage. Pubsub message must contain either non-empty data, or at least one attribute."
        },
        "topicName": {
          "type": "string",
          "description": "The name of the Cloud Pub/Sub topic to which messages will be published when a job is delivered. The topic name must be in the same format as required by Pub/Sub's [PublishRequest.name](https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#publishrequest), for example `projects/PROJECT_ID/topics/TOPIC_ID`. The topic must be in the same project as the Cloud Scheduler job."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "data",
        "topicName"
      ]
    },
    "google-native:cloudscheduler/v1beta1:RetryConfig": {
      "description": "Settings that determine the retry behavior. By default, if a job does not complete successfully (meaning that an acknowledgement is not received from the handler, then it will be retried with exponential backoff according to the settings in RetryConfig.",
      "properties": {
        "maxBackoffDuration": {
          "type": "string",
          "description": "The maximum amount of time to wait before retrying a job after it fails. The default value of this field is 1 hour."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A job's retry interval starts at min_backoff_duration, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff_duration up to retry_count times. For example, if min_backoff_duration is 10s, max_backoff_duration is 300s, and `max_doublings` is 3, then the job will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the job will retry at intervals of max_backoff_duration until the job has been attempted retry_count times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... The default value of this field is 5."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "The time limit for retrying a failed job, measured from time when an execution was first attempted. If specified with retry_count, the job will be retried until both limits are reached. The default value for max_retry_duration is zero, which means retry duration is unlimited."
        },
        "minBackoffDuration": {
          "type": "string",
          "description": "The minimum amount of time to wait before retrying a job after it fails. The default value of this field is 5 seconds."
        },
        "retryCount": {
          "type": "integer",
          "description": "The number of attempts that the system will make to run a job using the exponential backoff procedure described by max_doublings. The default value of retry_count is zero. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure. If retry_count is set to a non-zero number then Cloud Scheduler will retry failed attempts, using exponential backoff, retry_count times, or until the next scheduled execution time, whichever comes first. Values greater than 5 and negative values are not allowed."
        }
      },
      "type": "object"
    },
    "google-native:cloudscheduler/v1beta1:RetryConfigResponse": {
      "description": "Settings that determine the retry behavior. By default, if a job does not complete successfully (meaning that an acknowledgement is not received from the handler, then it will be retried with exponential backoff according to the settings in RetryConfig.",
      "properties": {
        "maxBackoffDuration": {
          "type": "string",
          "description": "The maximum amount of time to wait before retrying a job after it fails. The default value of this field is 1 hour."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A job's retry interval starts at min_backoff_duration, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff_duration up to retry_count times. For example, if min_backoff_duration is 10s, max_backoff_duration is 300s, and `max_doublings` is 3, then the job will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the job will retry at intervals of max_backoff_duration until the job has been attempted retry_count times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... The default value of this field is 5."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "The time limit for retrying a failed job, measured from time when an execution was first attempted. If specified with retry_count, the job will be retried until both limits are reached. The default value for max_retry_duration is zero, which means retry duration is unlimited."
        },
        "minBackoffDuration": {
          "type": "string",
          "description": "The minimum amount of time to wait before retrying a job after it fails. The default value of this field is 5 seconds."
        },
        "retryCount": {
          "type": "integer",
          "description": "The number of attempts that the system will make to run a job using the exponential backoff procedure described by max_doublings. The default value of retry_count is zero. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure. If retry_count is set to a non-zero number then Cloud Scheduler will retry failed attempts, using exponential backoff, retry_count times, or until the next scheduled execution time, whichever comes first. Values greater than 5 and negative values are not allowed."
        }
      },
      "type": "object",
      "required": [
        "maxBackoffDuration",
        "maxDoublings",
        "maxRetryDuration",
        "minBackoffDuration",
        "retryCount"
      ]
    },
    "google-native:cloudscheduler/v1beta1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:cloudsearch/v1:CompositeFilter": {
      "properties": {
        "logicOperator": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:CompositeFilterLogicOperator",
          "description": "The logic operator of the sub filter."
        },
        "subFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:Filter"
          },
          "description": "Sub filters."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:CompositeFilterLogicOperator": {
      "description": "The logic operator of the sub filter.",
      "type": "string",
      "enum": [
        {
          "name": "And",
          "description": "Logical operators, which can only be applied to sub filters.",
          "value": "AND"
        },
        {
          "name": "Or",
          "value": "OR"
        },
        {
          "name": "Not",
          "description": "NOT can only be applied on a single sub filter.",
          "value": "NOT"
        }
      ]
    },
    "google-native:cloudsearch/v1:CompositeFilterResponse": {
      "properties": {
        "logicOperator": {
          "type": "string",
          "description": "The logic operator of the sub filter."
        },
        "subFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:FilterResponse"
          },
          "description": "Sub filters."
        }
      },
      "type": "object",
      "required": [
        "logicOperator",
        "subFilters"
      ]
    },
    "google-native:cloudsearch/v1:DataSourceRestriction": {
      "description": "Restriction on Datasource.",
      "properties": {
        "filterOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:FilterOptions"
          },
          "description": "Filter options restricting the results. If multiple filters are present, they are grouped by object type before joining. Filters with the same object type are joined conjunctively, then the resulting expressions are joined disjunctively. The maximum number of elements is 20. NOTE: Suggest API supports only few filters at the moment: \"objecttype\", \"type\" and \"mimetype\". For now, schema specific filters cannot be used to filter suggestions."
        },
        "source": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:Source",
          "description": "The source of restriction."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:DataSourceRestrictionResponse": {
      "description": "Restriction on Datasource.",
      "properties": {
        "filterOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:FilterOptionsResponse"
          },
          "description": "Filter options restricting the results. If multiple filters are present, they are grouped by object type before joining. Filters with the same object type are joined conjunctively, then the resulting expressions are joined disjunctively. The maximum number of elements is 20. NOTE: Suggest API supports only few filters at the moment: \"objecttype\", \"type\" and \"mimetype\". For now, schema specific filters cannot be used to filter suggestions."
        },
        "source": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceResponse",
          "description": "The source of restriction."
        }
      },
      "type": "object",
      "required": [
        "filterOptions",
        "source"
      ]
    },
    "google-native:cloudsearch/v1:Date": {
      "description": "Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.",
      "properties": {
        "day": {
          "type": "integer",
          "description": "Day of month. Must be from 1 to 31 and valid for the year and month."
        },
        "month": {
          "type": "integer",
          "description": "Month of date. Must be from 1 to 12."
        },
        "year": {
          "type": "integer",
          "description": "Year of date. Must be from 1 to 9999."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:DateResponse": {
      "description": "Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.",
      "properties": {
        "day": {
          "type": "integer",
          "description": "Day of month. Must be from 1 to 31 and valid for the year and month."
        },
        "month": {
          "type": "integer",
          "description": "Month of date. Must be from 1 to 12."
        },
        "year": {
          "type": "integer",
          "description": "Year of date. Must be from 1 to 9999."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:cloudsearch/v1:FacetOptions": {
      "description": "Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination.",
      "properties": {
        "integerFacetingOptions": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:IntegerFacetingOptions",
          "description": "If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets."
        },
        "numFacetBuckets": {
          "type": "integer",
          "description": "Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100."
        },
        "objectType": {
          "type": "string",
          "description": "If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets."
        },
        "operatorName": {
          "type": "string",
          "description": "The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions"
        },
        "sourceName": {
          "type": "string",
          "description": "Source name to facet on. Format: datasources/{source_id} If empty, all data sources will be used."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:FacetOptionsResponse": {
      "description": "Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination.",
      "properties": {
        "integerFacetingOptions": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:IntegerFacetingOptionsResponse",
          "description": "If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets."
        },
        "numFacetBuckets": {
          "type": "integer",
          "description": "Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100."
        },
        "objectType": {
          "type": "string",
          "description": "If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets."
        },
        "operatorName": {
          "type": "string",
          "description": "The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions"
        },
        "sourceName": {
          "type": "string",
          "description": "Source name to facet on. Format: datasources/{source_id} If empty, all data sources will be used."
        }
      },
      "type": "object",
      "required": [
        "integerFacetingOptions",
        "numFacetBuckets",
        "objectType",
        "operatorName",
        "sourceName"
      ]
    },
    "google-native:cloudsearch/v1:Filter": {
      "description": "A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND.",
      "properties": {
        "compositeFilter": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:CompositeFilter"
        },
        "valueFilter": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:ValueFilter"
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:FilterOptions": {
      "description": "Filter options to be applied on query.",
      "properties": {
        "filter": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:Filter",
          "description": "Generic filter to restrict the search, such as `lang:en`, `site:xyz`."
        },
        "objectType": {
          "type": "string",
          "description": "If object_type is set, only objects of that type are returned. This should correspond to the name of the object that was registered within the definition of schema. The maximum length is 256 characters."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:FilterOptionsResponse": {
      "description": "Filter options to be applied on query.",
      "properties": {
        "filter": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:FilterResponse",
          "description": "Generic filter to restrict the search, such as `lang:en`, `site:xyz`."
        },
        "objectType": {
          "type": "string",
          "description": "If object_type is set, only objects of that type are returned. This should correspond to the name of the object that was registered within the definition of schema. The maximum length is 256 characters."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "objectType"
      ]
    },
    "google-native:cloudsearch/v1:FilterResponse": {
      "description": "A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND.",
      "properties": {
        "compositeFilter": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:CompositeFilterResponse"
        },
        "valueFilter": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:ValueFilterResponse"
        }
      },
      "type": "object",
      "required": [
        "compositeFilter",
        "valueFilter"
      ]
    },
    "google-native:cloudsearch/v1:GSuitePrincipal": {
      "properties": {
        "gsuiteDomain": {
          "type": "boolean",
          "description": "This principal represents all users of the Google Workspace domain of the customer."
        },
        "gsuiteGroupEmail": {
          "type": "string",
          "description": "This principal references a Google Workspace group name."
        },
        "gsuiteUserEmail": {
          "type": "string",
          "description": "This principal references a Google Workspace user account."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:GSuitePrincipalResponse": {
      "properties": {
        "gsuiteDomain": {
          "type": "boolean",
          "description": "This principal represents all users of the Google Workspace domain of the customer."
        },
        "gsuiteGroupEmail": {
          "type": "string",
          "description": "This principal references a Google Workspace group name."
        },
        "gsuiteUserEmail": {
          "type": "string",
          "description": "This principal references a Google Workspace user account."
        }
      },
      "type": "object",
      "required": [
        "gsuiteDomain",
        "gsuiteGroupEmail",
        "gsuiteUserEmail"
      ]
    },
    "google-native:cloudsearch/v1:IntegerFacetingOptions": {
      "description": "Used to specify integer faceting options.",
      "properties": {
        "integerBuckets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:IntegerFacetingOptionsResponse": {
      "description": "Used to specify integer faceting options.",
      "properties": {
        "integerBuckets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}."
        }
      },
      "type": "object",
      "required": [
        "integerBuckets"
      ]
    },
    "google-native:cloudsearch/v1:QueryInterpretationConfig": {
      "description": "Default options to interpret user query.",
      "properties": {
        "forceDisableSupplementalResults": {
          "type": "boolean",
          "description": "Set this flag to disable supplemental results retrieval, setting a flag here will not retrieve supplemental results for queries associated with a given search application. If this flag is set to True, it will take precedence over the option set at Query level. For the default value of False, query level flag will set the correct interpretation for supplemental results."
        },
        "forceVerbatimMode": {
          "type": "boolean",
          "description": "Enable this flag to turn off all internal optimizations like natural language (NL) interpretation of queries, supplemental results retrieval, and usage of synonyms including custom ones. If this flag is set to True, it will take precedence over the option set at Query level. For the default value of False, query level flag will set the correct interpretation for verbatim mode."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:QueryInterpretationConfigResponse": {
      "description": "Default options to interpret user query.",
      "properties": {
        "forceDisableSupplementalResults": {
          "type": "boolean",
          "description": "Set this flag to disable supplemental results retrieval, setting a flag here will not retrieve supplemental results for queries associated with a given search application. If this flag is set to True, it will take precedence over the option set at Query level. For the default value of False, query level flag will set the correct interpretation for supplemental results."
        },
        "forceVerbatimMode": {
          "type": "boolean",
          "description": "Enable this flag to turn off all internal optimizations like natural language (NL) interpretation of queries, supplemental results retrieval, and usage of synonyms including custom ones. If this flag is set to True, it will take precedence over the option set at Query level. For the default value of False, query level flag will set the correct interpretation for verbatim mode."
        }
      },
      "type": "object",
      "required": [
        "forceDisableSupplementalResults",
        "forceVerbatimMode"
      ]
    },
    "google-native:cloudsearch/v1:ScoringConfig": {
      "description": "Scoring configurations for a source while processing a Search or Suggest request.",
      "properties": {
        "disableFreshness": {
          "type": "boolean",
          "description": "Whether to use freshness as a ranking signal. By default, freshness is used as a ranking signal. Note that this setting is not available in the Admin UI."
        },
        "disablePersonalization": {
          "type": "boolean",
          "description": "Whether to personalize the results. By default, personal signals will be used to boost results."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:ScoringConfigResponse": {
      "description": "Scoring configurations for a source while processing a Search or Suggest request.",
      "properties": {
        "disableFreshness": {
          "type": "boolean",
          "description": "Whether to use freshness as a ranking signal. By default, freshness is used as a ranking signal. Note that this setting is not available in the Admin UI."
        },
        "disablePersonalization": {
          "type": "boolean",
          "description": "Whether to personalize the results. By default, personal signals will be used to boost results."
        }
      },
      "type": "object",
      "required": [
        "disableFreshness",
        "disablePersonalization"
      ]
    },
    "google-native:cloudsearch/v1:SortOptions": {
      "properties": {
        "operatorName": {
          "type": "string",
          "description": "The name of the operator corresponding to the field to sort on. The corresponding property must be marked as sortable."
        },
        "sortOrder": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SortOptionsSortOrder",
          "description": "Ascending is the default sort order"
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:SortOptionsResponse": {
      "properties": {
        "operatorName": {
          "type": "string",
          "description": "The name of the operator corresponding to the field to sort on. The corresponding property must be marked as sortable."
        },
        "sortOrder": {
          "type": "string",
          "description": "Ascending is the default sort order"
        }
      },
      "type": "object",
      "required": [
        "operatorName",
        "sortOrder"
      ]
    },
    "google-native:cloudsearch/v1:SortOptionsSortOrder": {
      "description": "Ascending is the default sort order",
      "type": "string",
      "enum": [
        {
          "name": "Ascending",
          "value": "ASCENDING"
        },
        {
          "name": "Descending",
          "value": "DESCENDING"
        }
      ]
    },
    "google-native:cloudsearch/v1:Source": {
      "description": "Defines sources for the suggest/search APIs.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Source name for content indexed by the Indexing API."
        },
        "predefinedSource": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SourcePredefinedSource",
          "description": "Predefined content source for Google Apps."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:SourceConfig": {
      "description": "Configurations for a source while processing a Search or Suggest request.",
      "properties": {
        "crowdingConfig": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceCrowdingConfig",
          "description": "The crowding configuration for the source."
        },
        "scoringConfig": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceScoringConfig",
          "description": "The scoring configuration for the source."
        },
        "source": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:Source",
          "description": "The source for which this configuration is to be used."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:SourceConfigResponse": {
      "description": "Configurations for a source while processing a Search or Suggest request.",
      "properties": {
        "crowdingConfig": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceCrowdingConfigResponse",
          "description": "The crowding configuration for the source."
        },
        "scoringConfig": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceScoringConfigResponse",
          "description": "The scoring configuration for the source."
        },
        "source": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceResponse",
          "description": "The source for which this configuration is to be used."
        }
      },
      "type": "object",
      "required": [
        "crowdingConfig",
        "scoringConfig",
        "source"
      ]
    },
    "google-native:cloudsearch/v1:SourceCrowdingConfig": {
      "description": "Set search results crowding limits. Crowding is a situation in which multiple results from the same source or host \"crowd out\" other results, diminishing the quality of search for users. To foster better search quality and source diversity in search results, you can set a condition to reduce repetitive results by source.",
      "properties": {
        "numResults": {
          "type": "integer",
          "description": "Maximum number of results allowed from a datasource in a result page as long as results from other sources are not exhausted. Value specified must not be negative. A default value is used if this value is equal to 0. To disable crowding, set the value greater than 100."
        },
        "numSuggestions": {
          "type": "integer",
          "description": "Maximum number of suggestions allowed from a source. No limits will be set on results if this value is less than or equal to 0."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:SourceCrowdingConfigResponse": {
      "description": "Set search results crowding limits. Crowding is a situation in which multiple results from the same source or host \"crowd out\" other results, diminishing the quality of search for users. To foster better search quality and source diversity in search results, you can set a condition to reduce repetitive results by source.",
      "properties": {
        "numResults": {
          "type": "integer",
          "description": "Maximum number of results allowed from a datasource in a result page as long as results from other sources are not exhausted. Value specified must not be negative. A default value is used if this value is equal to 0. To disable crowding, set the value greater than 100."
        },
        "numSuggestions": {
          "type": "integer",
          "description": "Maximum number of suggestions allowed from a source. No limits will be set on results if this value is less than or equal to 0."
        }
      },
      "type": "object",
      "required": [
        "numResults",
        "numSuggestions"
      ]
    },
    "google-native:cloudsearch/v1:SourcePredefinedSource": {
      "description": "Predefined content source for Google Apps.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "QueryHistory",
          "description": "Suggests queries issued by the user in the past. Only valid when used with the suggest API. Ignored when used in the query API.",
          "value": "QUERY_HISTORY"
        },
        {
          "name": "Person",
          "description": "Suggests people in the organization. Only valid when used with the suggest API. Results in an error when used in the query API.",
          "value": "PERSON"
        },
        {
          "name": "GoogleDrive",
          "value": "GOOGLE_DRIVE"
        },
        {
          "name": "GoogleGmail",
          "value": "GOOGLE_GMAIL"
        },
        {
          "name": "GoogleSites",
          "value": "GOOGLE_SITES"
        },
        {
          "name": "GoogleGroups",
          "value": "GOOGLE_GROUPS"
        },
        {
          "name": "GoogleCalendar",
          "value": "GOOGLE_CALENDAR"
        },
        {
          "name": "GoogleKeep",
          "value": "GOOGLE_KEEP"
        }
      ]
    },
    "google-native:cloudsearch/v1:SourceResponse": {
      "description": "Defines sources for the suggest/search APIs.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Source name for content indexed by the Indexing API."
        },
        "predefinedSource": {
          "type": "string",
          "description": "Predefined content source for Google Apps."
        }
      },
      "type": "object",
      "required": [
        "name",
        "predefinedSource"
      ]
    },
    "google-native:cloudsearch/v1:SourceScoringConfig": {
      "description": "Set the scoring configuration. This allows modifying the ranking of results for a source.",
      "properties": {
        "sourceImportance": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceScoringConfigSourceImportance",
          "description": "Importance of the source."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:SourceScoringConfigResponse": {
      "description": "Set the scoring configuration. This allows modifying the ranking of results for a source.",
      "properties": {
        "sourceImportance": {
          "type": "string",
          "description": "Importance of the source."
        }
      },
      "type": "object",
      "required": [
        "sourceImportance"
      ]
    },
    "google-native:cloudsearch/v1:SourceScoringConfigSourceImportance": {
      "description": "Importance of the source.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "value": "DEFAULT"
        },
        {
          "name": "Low",
          "value": "LOW"
        },
        {
          "name": "High",
          "value": "HIGH"
        }
      ]
    },
    "google-native:cloudsearch/v1:Value": {
      "description": "Definition of a single value with generic type.",
      "properties": {
        "booleanValue": {
          "type": "boolean"
        },
        "dateValue": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:Date"
        },
        "doubleValue": {
          "type": "number"
        },
        "integerValue": {
          "type": "string"
        },
        "stringValue": {
          "type": "string"
        },
        "timestampValue": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:ValueFilter": {
      "properties": {
        "operatorName": {
          "type": "string",
          "description": "The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query."
        },
        "value": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:Value",
          "description": "The value to be compared with."
        }
      },
      "type": "object"
    },
    "google-native:cloudsearch/v1:ValueFilterResponse": {
      "properties": {
        "operatorName": {
          "type": "string",
          "description": "The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query."
        },
        "value": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:ValueResponse",
          "description": "The value to be compared with."
        }
      },
      "type": "object",
      "required": [
        "operatorName",
        "value"
      ]
    },
    "google-native:cloudsearch/v1:ValueResponse": {
      "description": "Definition of a single value with generic type.",
      "properties": {
        "booleanValue": {
          "type": "boolean"
        },
        "dateValue": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:DateResponse"
        },
        "doubleValue": {
          "type": "number"
        },
        "integerValue": {
          "type": "string"
        },
        "stringValue": {
          "type": "string"
        },
        "timestampValue": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "booleanValue",
        "dateValue",
        "doubleValue",
        "integerValue",
        "stringValue",
        "timestampValue"
      ]
    },
    "google-native:cloudsupport/v2:Actor": {
      "description": "An object containing information about the effective user and authenticated principal responsible for an action.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent."
        },
        "email": {
          "type": "string",
          "description": "The email address of the actor. If not provided, it is inferred from credentials supplied during case creation. If the authenticated principal does not have an email address, one must be provided. When a name is provided, an email must also be provided. This will be obfuscated if the user is a Google Support agent."
        }
      },
      "type": "object"
    },
    "google-native:cloudsupport/v2:ActorResponse": {
      "description": "An object containing information about the effective user and authenticated principal responsible for an action.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent."
        },
        "email": {
          "type": "string",
          "description": "The email address of the actor. If not provided, it is inferred from credentials supplied during case creation. If the authenticated principal does not have an email address, one must be provided. When a name is provided, an email must also be provided. This will be obfuscated if the user is a Google Support agent."
        },
        "googleSupport": {
          "type": "boolean",
          "description": "Whether the actor is a Google support actor."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "email",
        "googleSupport"
      ]
    },
    "google-native:cloudsupport/v2:CaseClassification": {
      "description": "A classification object with a product type and value.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field."
        },
        "id": {
          "type": "string",
          "description": "The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail."
        }
      },
      "type": "object"
    },
    "google-native:cloudsupport/v2:CaseClassificationResponse": {
      "description": "A classification object with a product type and value.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:cloudsupport/v2:CasePriority": {
      "description": "The priority of this case.",
      "type": "string",
      "enum": [
        {
          "name": "PriorityUnspecified",
          "description": "Priority is undefined or has not been set yet.",
          "value": "PRIORITY_UNSPECIFIED"
        },
        {
          "name": "P0",
          "description": "Extreme impact on a production service. Service is hard down.",
          "value": "P0"
        },
        {
          "name": "P1",
          "description": "Critical impact on a production service. Service is currently unusable.",
          "value": "P1"
        },
        {
          "name": "P2",
          "description": "Severe impact on a production service. Service is usable but greatly impaired.",
          "value": "P2"
        },
        {
          "name": "P3",
          "description": "Medium impact on a production service. Service is available, but moderately impaired.",
          "value": "P3"
        },
        {
          "name": "P4",
          "description": "General questions or minor issues. Production service is fully available.",
          "value": "P4"
        }
      ]
    },
    "google-native:cloudsupport/v2beta:Actor": {
      "description": "An object containing information about the effective user and authenticated principal responsible for an action.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent."
        },
        "email": {
          "type": "string",
          "description": "The email address of the actor. If not provided, it is inferred from credentials supplied during case creation. If the authenticated principal does not have an email address, one must be provided. When a name is provided, an email must also be provided. This will be obfuscated if the user is a Google Support agent."
        }
      },
      "type": "object"
    },
    "google-native:cloudsupport/v2beta:ActorResponse": {
      "description": "An object containing information about the effective user and authenticated principal responsible for an action.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent."
        },
        "email": {
          "type": "string",
          "description": "The email address of the actor. If not provided, it is inferred from credentials supplied during case creation. If the authenticated principal does not have an email address, one must be provided. When a name is provided, an email must also be provided. This will be obfuscated if the user is a Google Support agent."
        },
        "googleSupport": {
          "type": "boolean",
          "description": "Whether the actor is a Google support actor."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "email",
        "googleSupport"
      ]
    },
    "google-native:cloudsupport/v2beta:CaseClassification": {
      "description": "A classification object with a product type and value.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field."
        },
        "id": {
          "type": "string",
          "description": "The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail."
        }
      },
      "type": "object"
    },
    "google-native:cloudsupport/v2beta:CaseClassificationResponse": {
      "description": "A classification object with a product type and value.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:cloudsupport/v2beta:CasePriority": {
      "description": "The priority of this case.",
      "type": "string",
      "enum": [
        {
          "name": "PriorityUnspecified",
          "description": "Priority is undefined or has not been set yet.",
          "value": "PRIORITY_UNSPECIFIED"
        },
        {
          "name": "P0",
          "description": "Extreme impact on a production service. Service is hard down.",
          "value": "P0"
        },
        {
          "name": "P1",
          "description": "Critical impact on a production service. Service is currently unusable.",
          "value": "P1"
        },
        {
          "name": "P2",
          "description": "Severe impact on a production service. Service is usable but greatly impaired.",
          "value": "P2"
        },
        {
          "name": "P3",
          "description": "Medium impact on a production service. Service is available, but moderately impaired.",
          "value": "P3"
        },
        {
          "name": "P4",
          "description": "General questions or minor issues. Production service is fully available.",
          "value": "P4"
        }
      ]
    },
    "google-native:cloudsupport/v2beta:CaseSeverity": {
      "description": "REMOVED. The severity of this case. Use priority instead.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Severity is undefined or has not been set yet.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "S0",
          "description": "Extreme impact on a production service. Service is hard down.",
          "value": "S0"
        },
        {
          "name": "S1",
          "description": "Critical impact on a production service. Service is currently unusable.",
          "value": "S1"
        },
        {
          "name": "S2",
          "description": "Severe impact on a production service. Service is usable but greatly impaired.",
          "value": "S2"
        },
        {
          "name": "S3",
          "description": "Medium impact on a production service. Service is available, but moderately impaired.",
          "value": "S3"
        },
        {
          "name": "S4",
          "description": "General questions or minor issues. Production service is fully available.",
          "value": "S4"
        }
      ]
    },
    "google-native:cloudtasks/v2:AppEngineHttpRequest": {
      "description": "App Engine HTTP request. The message defines the HTTP request that is sent to an App Engine app when the task is dispatched. Using AppEngineHttpRequest requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform` The task will be delivered to the App Engine app which belongs to the same project as the queue. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and how routing is affected by [dispatch files](https://cloud.google.com/appengine/docs/python/config/dispatchref). Traffic is encrypted during transport and never leaves Google datacenters. Because this traffic is carried over a communication mechanism internal to Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS). The request to the handler, however, will appear to have used the HTTP protocol. The AppEngineRouting used to construct the URL that the task is delivered to can be set at the queue-level or task-level: * If app_engine_routing_override is set on the queue, this value is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing. The `url` that the task will be sent to is: * `url =` host `+` relative_uri Tasks can be dispatched to secure app handlers, unsecure app handlers, and URIs restricted with [`login: admin`](https://cloud.google.com/appengine/docs/standard/python/config/appref). Because tasks are not run as any user, they cannot be dispatched to URIs restricted with [`login: required`](https://cloud.google.com/appengine/docs/standard/python/config/appref) Task dispatches also do not follow redirects. The task attempt has succeeded if the app's request handler returns an HTTP response code in the range [`200` - `299`]. The task attempt has failed if the app's handler returns a non-2xx response code or Cloud Tasks does not receive response before the deadline. Failed tasks will be retried according to the retry configuration. `503` (Service Unavailable) is considered an App Engine system error instead of an application error and will cause Cloud Tasks' traffic congestion control to temporarily throttle the queue's dispatches. Unlike other types of task targets, a `429` (Too Many Requests) response from an app handler does not cause traffic congestion control to throttle the queue.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineRouting",
          "description": "Task-level setting for App Engine routing. * If app_engine_routing_override is set on the queue, this value is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        },
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It is an error to set a body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. Repeated headers are not supported but a header value can contain commas. Cloud Tasks sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Tasks will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. If the task has a body, Cloud Tasks sets the following headers: * `Content-Type`: By default, the `Content-Type` header is set to `\"application/octet-stream\"`. The default can be overridden by explicitly setting `Content-Type` to a particular media type when the task is created. For example, `Content-Type` can be set to `\"application/json\"`. * `Content-Length`: This is computed by Cloud Tasks. This value is output only. It cannot be changed. The headers below cannot be set or overridden: * `Host` * `X-Google-*` * `X-AppEngine-*` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the task; see [request headers](https://cloud.google.com/tasks/docs/creating-appengine-handlers#reading_request_headers). These headers are set only when the task is dispatched, so they are not visible when the task is returned in a Cloud Tasks response. Although there is no specific limit for the maximum number of headers or the size, there is a limit on the maximum size of the Task. For more information, see the CreateTask documentation."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineHttpRequestHttpMethod",
          "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled)."
        },
        "relativeUri": {
          "type": "string",
          "description": "The relative URI. The relative URI must begin with \"/\" and must be a valid HTTP relative URI. It can contain a path and query string arguments. If the relative URI is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:AppEngineHttpRequestHttpMethod": {
      "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled).",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2:AppEngineHttpRequestResponse": {
      "description": "App Engine HTTP request. The message defines the HTTP request that is sent to an App Engine app when the task is dispatched. Using AppEngineHttpRequest requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform` The task will be delivered to the App Engine app which belongs to the same project as the queue. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and how routing is affected by [dispatch files](https://cloud.google.com/appengine/docs/python/config/dispatchref). Traffic is encrypted during transport and never leaves Google datacenters. Because this traffic is carried over a communication mechanism internal to Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS). The request to the handler, however, will appear to have used the HTTP protocol. The AppEngineRouting used to construct the URL that the task is delivered to can be set at the queue-level or task-level: * If app_engine_routing_override is set on the queue, this value is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing. The `url` that the task will be sent to is: * `url =` host `+` relative_uri Tasks can be dispatched to secure app handlers, unsecure app handlers, and URIs restricted with [`login: admin`](https://cloud.google.com/appengine/docs/standard/python/config/appref). Because tasks are not run as any user, they cannot be dispatched to URIs restricted with [`login: required`](https://cloud.google.com/appengine/docs/standard/python/config/appref) Task dispatches also do not follow redirects. The task attempt has succeeded if the app's request handler returns an HTTP response code in the range [`200` - `299`]. The task attempt has failed if the app's handler returns a non-2xx response code or Cloud Tasks does not receive response before the deadline. Failed tasks will be retried according to the retry configuration. `503` (Service Unavailable) is considered an App Engine system error instead of an application error and will cause Cloud Tasks' traffic congestion control to temporarily throttle the queue's dispatches. Unlike other types of task targets, a `429` (Too Many Requests) response from an app handler does not cause traffic congestion control to throttle the queue.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineRoutingResponse",
          "description": "Task-level setting for App Engine routing. * If app_engine_routing_override is set on the queue, this value is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        },
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It is an error to set a body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. Repeated headers are not supported but a header value can contain commas. Cloud Tasks sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Tasks will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. If the task has a body, Cloud Tasks sets the following headers: * `Content-Type`: By default, the `Content-Type` header is set to `\"application/octet-stream\"`. The default can be overridden by explicitly setting `Content-Type` to a particular media type when the task is created. For example, `Content-Type` can be set to `\"application/json\"`. * `Content-Length`: This is computed by Cloud Tasks. This value is output only. It cannot be changed. The headers below cannot be set or overridden: * `Host` * `X-Google-*` * `X-AppEngine-*` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the task; see [request headers](https://cloud.google.com/tasks/docs/creating-appengine-handlers#reading_request_headers). These headers are set only when the task is dispatched, so they are not visible when the task is returned in a Cloud Tasks response. Although there is no specific limit for the maximum number of headers or the size, there is a limit on the maximum size of the Task. For more information, see the CreateTask documentation."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled)."
        },
        "relativeUri": {
          "type": "string",
          "description": "The relative URI. The relative URI must begin with \"/\" and must be a valid HTTP relative URI. It can contain a path and query string arguments. If the relative URI is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object",
      "required": [
        "appEngineRouting",
        "body",
        "headers",
        "httpMethod",
        "relativeUri"
      ]
    },
    "google-native:cloudtasks/v2:AppEngineRouting": {
      "description": "App Engine Routing. Defines routing characteristics specific to App Engine - service, version, and instance. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed). Using AppEngineRouting requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform`",
      "properties": {
        "instance": {
          "type": "string",
          "description": "App instance. By default, the task is sent to an instance which is available when the task is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the task is sent to the service which is the default service when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the task is sent to the version which is the default version when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:AppEngineRoutingResponse": {
      "description": "App Engine Routing. Defines routing characteristics specific to App Engine - service, version, and instance. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed). Using AppEngineRouting requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform`",
      "properties": {
        "host": {
          "type": "string",
          "description": "The host that the task is sent to. The host is constructed from the domain name of the app associated with the queue's project ID (for example .appspot.com), and the service, version, and instance. Tasks which were created using the App Engine SDK might have a custom domain name. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed)."
        },
        "instance": {
          "type": "string",
          "description": "App instance. By default, the task is sent to an instance which is available when the task is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the task is sent to the service which is the default service when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the task is sent to the version which is the default version when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        }
      },
      "type": "object",
      "required": [
        "host",
        "instance",
        "service",
        "version"
      ]
    },
    "google-native:cloudtasks/v2:AttemptResponse": {
      "description": "The status of a task attempt.",
      "properties": {
        "dispatchTime": {
          "type": "string",
          "description": "The time that this attempt was dispatched. `dispatch_time` will be truncated to the nearest microsecond."
        },
        "responseStatus": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:StatusResponse",
          "description": "The response from the worker for this attempt. If `response_time` is unset, then the task has not been attempted or is currently running and the `response_status` field is meaningless."
        },
        "responseTime": {
          "type": "string",
          "description": "The time that this attempt response was received. `response_time` will be truncated to the nearest microsecond."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time that this attempt was scheduled. `schedule_time` will be truncated to the nearest microsecond."
        }
      },
      "type": "object",
      "required": [
        "dispatchTime",
        "responseStatus",
        "responseTime",
        "scheduleTime"
      ]
    },
    "google-native:cloudtasks/v2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudtasks/v2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudtasks/v2:Header": {
      "description": "Defines a header message. A header can have a key and a value.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The Key of the header."
        },
        "value": {
          "type": "string",
          "description": "The Value of the header."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:HeaderOverride": {
      "description": "Wraps the Header object.",
      "properties": {
        "header": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:Header",
          "description": "header embodying a key and a value."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:HeaderOverrideResponse": {
      "description": "Wraps the Header object.",
      "properties": {
        "header": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:HeaderResponse",
          "description": "header embodying a key and a value."
        }
      },
      "type": "object",
      "required": [
        "header"
      ]
    },
    "google-native:cloudtasks/v2:HeaderResponse": {
      "description": "Defines a header message. A header can have a key and a value.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The Key of the header."
        },
        "value": {
          "type": "string",
          "description": "The Value of the header."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:cloudtasks/v2:HttpRequest": {
      "description": "HTTP request. The task will be pushed to the worker as an HTTP request. If the worker or the redirected worker acknowledges the task by returning a successful HTTP response code ([`200` - `299`]), the task will be removed from the queue. If any other HTTP response code is returned or no response is received, the task will be retried according to the following: * User-specified throttling: retry configuration, rate limits, and the queue's state. * System throttling: To prevent the worker from overloading, Cloud Tasks may temporarily reduce the queue's effective rate. User-specified settings will not be changed. System throttling happens because: * Cloud Tasks backs off on all errors. Normally the backoff specified in rate limits will be used. But if the worker returns `429` (Too Many Requests), `503` (Service Unavailable), or the rate of errors is high, Cloud Tasks will use a higher backoff rate. The retry specified in the `Retry-After` HTTP response header is considered. * To prevent traffic spikes and to smooth sudden increases in traffic, dispatches ramp up slowly when the queue is newly created or idle and if large numbers of tasks suddenly become available to dispatch (due to spikes in create task rates, the queue being unpaused, or many tasks that are scheduled at the same time).",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:HttpRequestHttpMethod",
          "description": "The HTTP method to use for the request. The default is POST."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:OAuthToken",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:OidcToken",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "url": {
          "type": "string",
          "description": "The full url path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Tasks will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding. The `Location` header response from a redirect response [`300` - `399`] may be followed. The redirect is not counted as a separate attempt."
        }
      },
      "type": "object",
      "required": [
        "url"
      ]
    },
    "google-native:cloudtasks/v2:HttpRequestHttpMethod": {
      "description": "The HTTP method to use for the request. The default is POST.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2:HttpRequestResponse": {
      "description": "HTTP request. The task will be pushed to the worker as an HTTP request. If the worker or the redirected worker acknowledges the task by returning a successful HTTP response code ([`200` - `299`]), the task will be removed from the queue. If any other HTTP response code is returned or no response is received, the task will be retried according to the following: * User-specified throttling: retry configuration, rate limits, and the queue's state. * System throttling: To prevent the worker from overloading, Cloud Tasks may temporarily reduce the queue's effective rate. User-specified settings will not be changed. System throttling happens because: * Cloud Tasks backs off on all errors. Normally the backoff specified in rate limits will be used. But if the worker returns `429` (Too Many Requests), `503` (Service Unavailable), or the rate of errors is high, Cloud Tasks will use a higher backoff rate. The retry specified in the `Retry-After` HTTP response header is considered. * To prevent traffic spikes and to smooth sudden increases in traffic, dispatches ramp up slowly when the queue is newly created or idle and if large numbers of tasks suddenly become available to dispatch (due to spikes in create task rates, the queue being unpaused, or many tasks that are scheduled at the same time).",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. The default is POST."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:OAuthTokenResponse",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:OidcTokenResponse",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "url": {
          "type": "string",
          "description": "The full url path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Tasks will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding. The `Location` header response from a redirect response [`300` - `399`] may be followed. The redirect is not counted as a separate attempt."
        }
      },
      "type": "object",
      "required": [
        "body",
        "headers",
        "httpMethod",
        "oauthToken",
        "oidcToken",
        "url"
      ]
    },
    "google-native:cloudtasks/v2:HttpTarget": {
      "description": "HTTP target. When specified as a Queue, all the tasks with [HttpRequest] will be overridden according to the target.",
      "properties": {
        "headerOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:HeaderOverride"
          },
          "description": "HTTP target headers. This map contains the header field names and values. Headers will be set when running the CreateTask and/or BufferTask. These headers represent a subset of the headers that will be configured for the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Several predefined headers, prefixed with \"X-CloudTasks-\", can be used to define properties of the task. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example,`Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. The default value is set to \"application/json\"`. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:HttpTargetHttpMethod",
          "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:OAuthToken",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as the `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:OidcToken",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uriOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:UriOverride",
          "description": "URI override. When specified, overrides the execution URI for all the tasks in the queue."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:HttpTargetHttpMethod": {
      "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2:HttpTargetResponse": {
      "description": "HTTP target. When specified as a Queue, all the tasks with [HttpRequest] will be overridden according to the target.",
      "properties": {
        "headerOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:HeaderOverrideResponse"
          },
          "description": "HTTP target headers. This map contains the header field names and values. Headers will be set when running the CreateTask and/or BufferTask. These headers represent a subset of the headers that will be configured for the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Several predefined headers, prefixed with \"X-CloudTasks-\", can be used to define properties of the task. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example,`Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. The default value is set to \"application/json\"`. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:OAuthTokenResponse",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as the `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:OidcTokenResponse",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uriOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:UriOverrideResponse",
          "description": "URI override. When specified, overrides the execution URI for all the tasks in the queue."
        }
      },
      "type": "object",
      "required": [
        "headerOverrides",
        "httpMethod",
        "oauthToken",
        "oidcToken",
        "uriOverride"
      ]
    },
    "google-native:cloudtasks/v2:OAuthToken": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:OAuthTokenResponse": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "scope",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudtasks/v2:OidcToken": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:OidcTokenResponse": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudtasks/v2:PathOverride": {
      "description": "PathOverride. Path message defines path override for HTTP targets.",
      "properties": {
        "path": {
          "type": "string",
          "description": "The URI path (e.g., /users/1234). Default is an empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:PathOverrideResponse": {
      "description": "PathOverride. Path message defines path override for HTTP targets.",
      "properties": {
        "path": {
          "type": "string",
          "description": "The URI path (e.g., /users/1234). Default is an empty string."
        }
      },
      "type": "object",
      "required": [
        "path"
      ]
    },
    "google-native:cloudtasks/v2:QueryOverride": {
      "description": "QueryOverride. Query message defines query override for HTTP targets.",
      "properties": {
        "queryParams": {
          "type": "string",
          "description": "The query parameters (e.g., qparam1=123&qparam2=456). Default is an empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:QueryOverrideResponse": {
      "description": "QueryOverride. Query message defines query override for HTTP targets.",
      "properties": {
        "queryParams": {
          "type": "string",
          "description": "The query parameters (e.g., qparam1=123&qparam2=456). Default is an empty string."
        }
      },
      "type": "object",
      "required": [
        "queryParams"
      ]
    },
    "google-native:cloudtasks/v2:RateLimits": {
      "description": "Rate limits. This message determines the maximum rate that tasks can be dispatched by a queue, regardless of whether the dispatch is a first task attempt or a retry. Note: The debugging command, RunTask, will run a task even if the queue has reached its RateLimits.",
      "properties": {
        "maxConcurrentDispatches": {
          "type": "integer",
          "description": "The maximum number of concurrent tasks that Cloud Tasks allows to be dispatched for this queue. After this threshold has been reached, Cloud Tasks stops dispatching tasks until the number of concurrent requests decreases. If unspecified when the queue is created, Cloud Tasks will pick the default. The maximum allowed value is 5,000. This field has the same meaning as [max_concurrent_requests in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests)."
        },
        "maxDispatchesPerSecond": {
          "type": "number",
          "description": "The maximum rate at which tasks are dispatched from this queue. If unspecified when the queue is created, Cloud Tasks will pick the default. * The maximum allowed value is 500. This field has the same meaning as [rate in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate)."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:RateLimitsResponse": {
      "description": "Rate limits. This message determines the maximum rate that tasks can be dispatched by a queue, regardless of whether the dispatch is a first task attempt or a retry. Note: The debugging command, RunTask, will run a task even if the queue has reached its RateLimits.",
      "properties": {
        "maxBurstSize": {
          "type": "integer",
          "description": "The max burst size. Max burst size limits how fast tasks in queue are processed when many tasks are in the queue and the rate is high. This field allows the queue to have a high rate so processing starts shortly after a task is enqueued, but still limits resource usage when many tasks are enqueued in a short period of time. The [token bucket](https://wikipedia.org/wiki/Token_Bucket) algorithm is used to control the rate of task dispatches. Each queue has a token bucket that holds tokens, up to the maximum specified by `max_burst_size`. Each time a task is dispatched, a token is removed from the bucket. Tasks will be dispatched until the queue's bucket runs out of tokens. The bucket will be continuously refilled with new tokens based on max_dispatches_per_second. Cloud Tasks will pick the value of `max_burst_size` based on the value of max_dispatches_per_second. For queues that were created or updated using `queue.yaml/xml`, `max_burst_size` is equal to [bucket_size](https://cloud.google.com/appengine/docs/standard/python/config/queueref#bucket_size). Since `max_burst_size` is output only, if UpdateQueue is called on a queue created by `queue.yaml/xml`, `max_burst_size` will be reset based on the value of max_dispatches_per_second, regardless of whether max_dispatches_per_second is updated. "
        },
        "maxConcurrentDispatches": {
          "type": "integer",
          "description": "The maximum number of concurrent tasks that Cloud Tasks allows to be dispatched for this queue. After this threshold has been reached, Cloud Tasks stops dispatching tasks until the number of concurrent requests decreases. If unspecified when the queue is created, Cloud Tasks will pick the default. The maximum allowed value is 5,000. This field has the same meaning as [max_concurrent_requests in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests)."
        },
        "maxDispatchesPerSecond": {
          "type": "number",
          "description": "The maximum rate at which tasks are dispatched from this queue. If unspecified when the queue is created, Cloud Tasks will pick the default. * The maximum allowed value is 500. This field has the same meaning as [rate in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate)."
        }
      },
      "type": "object",
      "required": [
        "maxBurstSize",
        "maxConcurrentDispatches",
        "maxDispatchesPerSecond"
      ]
    },
    "google-native:cloudtasks/v2:RetryConfig": {
      "description": "Retry config. These settings determine when a failed task attempt is retried.",
      "properties": {
        "maxAttempts": {
          "type": "integer",
          "description": "Number of attempts per task. Cloud Tasks will attempt the task `max_attempts` times (that is, if the first attempt fails, then there will be `max_attempts - 1` retries). Must be >= -1. If unspecified when the queue is created, Cloud Tasks will pick the default. -1 indicates unlimited attempts. This field has the same meaning as [task_retry_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_backoff` will be truncated to the nearest second. This field has the same meaning as [max_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A task's retry interval starts at min_backoff, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff up to max_attempts times. For example, if min_backoff is 10s, max_backoff is 300s, and `max_doublings` is 3, then the a task will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the task will retry at intervals of max_backoff until the task has been attempted max_attempts times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... If unspecified when the queue is created, Cloud Tasks will pick the default. This field has the same meaning as [max_doublings in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "If positive, `max_retry_duration` specifies the time limit for retrying a failed task, measured from when the task was first attempted. Once `max_retry_duration` time has passed *and* the task has been attempted max_attempts times, no further attempts will be made and the task will be deleted. If zero, then the task age is unlimited. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For the maximum possible value or the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_retry_duration` will be truncated to the nearest second. This field has the same meaning as [task_age_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "minBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `min_backoff` will be truncated to the nearest second. This field has the same meaning as [min_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:RetryConfigResponse": {
      "description": "Retry config. These settings determine when a failed task attempt is retried.",
      "properties": {
        "maxAttempts": {
          "type": "integer",
          "description": "Number of attempts per task. Cloud Tasks will attempt the task `max_attempts` times (that is, if the first attempt fails, then there will be `max_attempts - 1` retries). Must be >= -1. If unspecified when the queue is created, Cloud Tasks will pick the default. -1 indicates unlimited attempts. This field has the same meaning as [task_retry_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_backoff` will be truncated to the nearest second. This field has the same meaning as [max_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A task's retry interval starts at min_backoff, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff up to max_attempts times. For example, if min_backoff is 10s, max_backoff is 300s, and `max_doublings` is 3, then the a task will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the task will retry at intervals of max_backoff until the task has been attempted max_attempts times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... If unspecified when the queue is created, Cloud Tasks will pick the default. This field has the same meaning as [max_doublings in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "If positive, `max_retry_duration` specifies the time limit for retrying a failed task, measured from when the task was first attempted. Once `max_retry_duration` time has passed *and* the task has been attempted max_attempts times, no further attempts will be made and the task will be deleted. If zero, then the task age is unlimited. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For the maximum possible value or the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_retry_duration` will be truncated to the nearest second. This field has the same meaning as [task_age_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "minBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `min_backoff` will be truncated to the nearest second. This field has the same meaning as [min_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        }
      },
      "type": "object",
      "required": [
        "maxAttempts",
        "maxBackoff",
        "maxDoublings",
        "maxRetryDuration",
        "minBackoff"
      ]
    },
    "google-native:cloudtasks/v2:StackdriverLoggingConfig": {
      "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/).",
      "properties": {
        "samplingRatio": {
          "type": "number",
          "description": "Specifies the fraction of operations to write to [Stackdriver Logging](https://cloud.google.com/logging/docs/). This field may contain any value between 0.0 and 1.0, inclusive. 0.0 is the default and means that no operations are logged."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:StackdriverLoggingConfigResponse": {
      "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/).",
      "properties": {
        "samplingRatio": {
          "type": "number",
          "description": "Specifies the fraction of operations to write to [Stackdriver Logging](https://cloud.google.com/logging/docs/). This field may contain any value between 0.0 and 1.0, inclusive. 0.0 is the default and means that no operations are logged."
        }
      },
      "type": "object",
      "required": [
        "samplingRatio"
      ]
    },
    "google-native:cloudtasks/v2:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:cloudtasks/v2:TaskResponseView": {
      "description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource.",
      "type": "string",
      "enum": [
        {
          "name": "ViewUnspecified",
          "description": "Unspecified. Defaults to BASIC.",
          "value": "VIEW_UNSPECIFIED"
        },
        {
          "name": "Basic",
          "description": "The basic view omits fields which can be large or can contain sensitive data. This view does not include the body in AppEngineHttpRequest. Bodies are desirable to return only when needed, because they can be large and because of the sensitivity of the data that you choose to store in it.",
          "value": "BASIC"
        },
        {
          "name": "Full",
          "description": "All information is returned. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Queue resource.",
          "value": "FULL"
        }
      ]
    },
    "google-native:cloudtasks/v2:UriOverride": {
      "description": "URI Override. When specified, all the HTTP tasks inside the queue will be partially or fully overridden depending on the configured values.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Host override. When specified, replaces the host part of the task URL. For example, if the task URL is \"https://www.google.com,\" and host value is set to \"example.net\", the overridden URI will be changed to \"https://example.net.\" Host value cannot be an empty string (INVALID_ARGUMENT)."
        },
        "pathOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:PathOverride",
          "description": "URI path. When specified, replaces the existing path of the task URL. Setting the path value to an empty string clears the URI path segment."
        },
        "port": {
          "type": "string",
          "description": "Port override. When specified, replaces the port part of the task URI. For instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo. Note that the port value must be a positive integer. Setting the port to 0 (Zero) clears the URI port."
        },
        "queryOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:QueryOverride",
          "description": "URI query. When specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment."
        },
        "scheme": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:UriOverrideScheme",
          "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS)."
        },
        "uriOverrideEnforceMode": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:UriOverrideUriOverrideEnforceMode",
          "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2:UriOverrideResponse": {
      "description": "URI Override. When specified, all the HTTP tasks inside the queue will be partially or fully overridden depending on the configured values.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Host override. When specified, replaces the host part of the task URL. For example, if the task URL is \"https://www.google.com,\" and host value is set to \"example.net\", the overridden URI will be changed to \"https://example.net.\" Host value cannot be an empty string (INVALID_ARGUMENT)."
        },
        "pathOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:PathOverrideResponse",
          "description": "URI path. When specified, replaces the existing path of the task URL. Setting the path value to an empty string clears the URI path segment."
        },
        "port": {
          "type": "string",
          "description": "Port override. When specified, replaces the port part of the task URI. For instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo. Note that the port value must be a positive integer. Setting the port to 0 (Zero) clears the URI port."
        },
        "queryOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:QueryOverrideResponse",
          "description": "URI query. When specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment."
        },
        "scheme": {
          "type": "string",
          "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS)."
        },
        "uriOverrideEnforceMode": {
          "type": "string",
          "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS."
        }
      },
      "type": "object",
      "required": [
        "host",
        "pathOverride",
        "port",
        "queryOverride",
        "scheme",
        "uriOverrideEnforceMode"
      ]
    },
    "google-native:cloudtasks/v2:UriOverrideScheme": {
      "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS).",
      "type": "string",
      "enum": [
        {
          "name": "SchemeUnspecified",
          "description": "Scheme unspecified. Defaults to HTTPS.",
          "value": "SCHEME_UNSPECIFIED"
        },
        {
          "name": "Http",
          "description": "Convert the scheme to HTTP, e.g., https://www.google.ca will change to http://www.google.ca.",
          "value": "HTTP"
        },
        {
          "name": "Https",
          "description": "Convert the scheme to HTTPS, e.g., http://www.google.ca will change to https://www.google.ca.",
          "value": "HTTPS"
        }
      ]
    },
    "google-native:cloudtasks/v2:UriOverrideUriOverrideEnforceMode": {
      "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS.",
      "type": "string",
      "enum": [
        {
          "name": "UriOverrideEnforceModeUnspecified",
          "description": "UriOverrideEnforceMode Unspecified. Defaults to ALWAYS.",
          "value": "URI_OVERRIDE_ENFORCE_MODE_UNSPECIFIED"
        },
        {
          "name": "IfNotExists",
          "description": "In the IF_NOT_EXISTS mode, queue-level configuration is only applied where task-level configuration does not exist.",
          "value": "IF_NOT_EXISTS"
        },
        {
          "name": "Always",
          "description": "In the ALWAYS mode, queue-level configuration overrides all task-level configuration",
          "value": "ALWAYS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta2:AppEngineHttpRequest": {
      "description": "App Engine HTTP request. The message defines the HTTP request that is sent to an App Engine app when the task is dispatched. This proto can only be used for tasks in a queue which has app_engine_http_target set. Using AppEngineHttpRequest requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform` The task will be delivered to the App Engine app which belongs to the same project as the queue. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and how routing is affected by [dispatch files](https://cloud.google.com/appengine/docs/python/config/dispatchref). Traffic is encrypted during transport and never leaves Google datacenters. Because this traffic is carried over a communication mechanism internal to Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS). The request to the handler, however, will appear to have used the HTTP protocol. The AppEngineRouting used to construct the URL that the task is delivered to can be set at the queue-level or task-level: * If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing. The `url` that the task will be sent to is: * `url =` host `+` relative_url Tasks can be dispatched to secure app handlers, unsecure app handlers, and URIs restricted with [`login: admin`](https://cloud.google.com/appengine/docs/standard/python/config/appref). Because tasks are not run as any user, they cannot be dispatched to URIs restricted with [`login: required`](https://cloud.google.com/appengine/docs/standard/python/config/appref) Task dispatches also do not follow redirects. The task attempt has succeeded if the app's request handler returns an HTTP response code in the range [`200` - `299`]. The task attempt has failed if the app's handler returns a non-2xx response code or Cloud Tasks does not receive response before the deadline. Failed tasks will be retried according to the retry configuration. `503` (Service Unavailable) is considered an App Engine system error instead of an application error and will cause Cloud Tasks' traffic congestion control to temporarily throttle the queue's dispatches. Unlike other types of task targets, a `429` (Too Many Requests) response from an app handler does not cause traffic congestion control to throttle the queue.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineRouting",
          "description": "Task-level setting for App Engine routing. If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. Repeated headers are not supported but a header value can contain commas. Cloud Tasks sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Tasks will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. If the task has a payload, Cloud Tasks sets the following headers: * `Content-Type`: By default, the `Content-Type` header is set to `\"application/octet-stream\"`. The default can be overridden by explicitly setting `Content-Type` to a particular media type when the task is created. For example, `Content-Type` can be set to `\"application/json\"`. * `Content-Length`: This is computed by Cloud Tasks. This value is output only. It cannot be changed. The headers below cannot be set or overridden: * `Host` * `X-Google-*` * `X-AppEngine-*` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the task; see [request headers](https://cloud.google.com/appengine/docs/python/taskqueue/push/creating-handlers#reading_request_headers). These headers are set only when the task is dispatched, so they are not visible when the task is returned in a Cloud Tasks response. Although there is no specific limit for the maximum number of headers or the size, there is a limit on the maximum size of the Task. For more information, see the CreateTask documentation."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineHttpRequestHttpMethod",
          "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled)."
        },
        "payload": {
          "type": "string",
          "description": "Payload. The payload will be sent as the HTTP message body. A message body, and thus a payload, is allowed only if the HTTP method is POST or PUT. It is an error to set a data payload on a task with an incompatible HttpMethod."
        },
        "relativeUrl": {
          "type": "string",
          "description": "The relative URL. The relative URL must begin with \"/\" and must be a valid HTTP relative URL. It can contain a path and query string arguments. If the relative URL is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:AppEngineHttpRequestHttpMethod": {
      "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled).",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta2:AppEngineHttpRequestResponse": {
      "description": "App Engine HTTP request. The message defines the HTTP request that is sent to an App Engine app when the task is dispatched. This proto can only be used for tasks in a queue which has app_engine_http_target set. Using AppEngineHttpRequest requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform` The task will be delivered to the App Engine app which belongs to the same project as the queue. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and how routing is affected by [dispatch files](https://cloud.google.com/appengine/docs/python/config/dispatchref). Traffic is encrypted during transport and never leaves Google datacenters. Because this traffic is carried over a communication mechanism internal to Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS). The request to the handler, however, will appear to have used the HTTP protocol. The AppEngineRouting used to construct the URL that the task is delivered to can be set at the queue-level or task-level: * If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing. The `url` that the task will be sent to is: * `url =` host `+` relative_url Tasks can be dispatched to secure app handlers, unsecure app handlers, and URIs restricted with [`login: admin`](https://cloud.google.com/appengine/docs/standard/python/config/appref). Because tasks are not run as any user, they cannot be dispatched to URIs restricted with [`login: required`](https://cloud.google.com/appengine/docs/standard/python/config/appref) Task dispatches also do not follow redirects. The task attempt has succeeded if the app's request handler returns an HTTP response code in the range [`200` - `299`]. The task attempt has failed if the app's handler returns a non-2xx response code or Cloud Tasks does not receive response before the deadline. Failed tasks will be retried according to the retry configuration. `503` (Service Unavailable) is considered an App Engine system error instead of an application error and will cause Cloud Tasks' traffic congestion control to temporarily throttle the queue's dispatches. Unlike other types of task targets, a `429` (Too Many Requests) response from an app handler does not cause traffic congestion control to throttle the queue.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineRoutingResponse",
          "description": "Task-level setting for App Engine routing. If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. Repeated headers are not supported but a header value can contain commas. Cloud Tasks sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Tasks will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. If the task has a payload, Cloud Tasks sets the following headers: * `Content-Type`: By default, the `Content-Type` header is set to `\"application/octet-stream\"`. The default can be overridden by explicitly setting `Content-Type` to a particular media type when the task is created. For example, `Content-Type` can be set to `\"application/json\"`. * `Content-Length`: This is computed by Cloud Tasks. This value is output only. It cannot be changed. The headers below cannot be set or overridden: * `Host` * `X-Google-*` * `X-AppEngine-*` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the task; see [request headers](https://cloud.google.com/appengine/docs/python/taskqueue/push/creating-handlers#reading_request_headers). These headers are set only when the task is dispatched, so they are not visible when the task is returned in a Cloud Tasks response. Although there is no specific limit for the maximum number of headers or the size, there is a limit on the maximum size of the Task. For more information, see the CreateTask documentation."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled)."
        },
        "payload": {
          "type": "string",
          "description": "Payload. The payload will be sent as the HTTP message body. A message body, and thus a payload, is allowed only if the HTTP method is POST or PUT. It is an error to set a data payload on a task with an incompatible HttpMethod."
        },
        "relativeUrl": {
          "type": "string",
          "description": "The relative URL. The relative URL must begin with \"/\" and must be a valid HTTP relative URL. It can contain a path and query string arguments. If the relative URL is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object",
      "required": [
        "appEngineRouting",
        "headers",
        "httpMethod",
        "payload",
        "relativeUrl"
      ]
    },
    "google-native:cloudtasks/v2beta2:AppEngineHttpTarget": {
      "description": "App Engine HTTP target. The task will be delivered to the App Engine application hostname specified by its AppEngineHttpTarget and AppEngineHttpRequest. The documentation for AppEngineHttpRequest explains how the task's host URL is constructed. Using AppEngineHttpTarget requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform`",
      "properties": {
        "appEngineRoutingOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineRouting",
          "description": "Overrides for the task-level app_engine_routing. If set, `app_engine_routing_override` is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:AppEngineHttpTargetResponse": {
      "description": "App Engine HTTP target. The task will be delivered to the App Engine application hostname specified by its AppEngineHttpTarget and AppEngineHttpRequest. The documentation for AppEngineHttpRequest explains how the task's host URL is constructed. Using AppEngineHttpTarget requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform`",
      "properties": {
        "appEngineRoutingOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineRoutingResponse",
          "description": "Overrides for the task-level app_engine_routing. If set, `app_engine_routing_override` is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        }
      },
      "type": "object",
      "required": [
        "appEngineRoutingOverride"
      ]
    },
    "google-native:cloudtasks/v2beta2:AppEngineRouting": {
      "description": "App Engine Routing. Defines routing characteristics specific to App Engine - service, version, and instance. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
      "properties": {
        "instance": {
          "type": "string",
          "description": "App instance. By default, the task is sent to an instance which is available when the task is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the task is sent to the service which is the default service when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the task is sent to the version which is the default version when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:AppEngineRoutingResponse": {
      "description": "App Engine Routing. Defines routing characteristics specific to App Engine - service, version, and instance. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
      "properties": {
        "host": {
          "type": "string",
          "description": "The host that the task is sent to. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed). The host is constructed as: * `host = [application_domain_name]` `| [service] + '.' + [application_domain_name]` `| [version] + '.' + [application_domain_name]` `| [version_dot_service]+ '.' + [application_domain_name]` `| [instance] + '.' + [application_domain_name]` `| [instance_dot_service] + '.' + [application_domain_name]` `| [instance_dot_version] + '.' + [application_domain_name]` `| [instance_dot_version_dot_service] + '.' + [application_domain_name]` * `application_domain_name` = The domain name of the app, for example .appspot.com, which is associated with the queue's project ID. Some tasks which were created using the App Engine SDK use a custom domain name. * `service =` service * `version =` version * `version_dot_service =` version `+ '.' +` service * `instance =` instance * `instance_dot_service =` instance `+ '.' +` service * `instance_dot_version =` instance `+ '.' +` version * `instance_dot_version_dot_service =` instance `+ '.' +` version `+ '.' +` service If service is empty, then the task will be sent to the service which is the default service when the task is attempted. If version is empty, then the task will be sent to the version which is the default version when the task is attempted. If instance is empty, then the task will be sent to an instance which is available when the task is attempted. If service, version, or instance is invalid, then the task will be sent to the default version of the default service when the task is attempted."
        },
        "instance": {
          "type": "string",
          "description": "App instance. By default, the task is sent to an instance which is available when the task is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the task is sent to the service which is the default service when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the task is sent to the version which is the default version when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        }
      },
      "type": "object",
      "required": [
        "host",
        "instance",
        "service",
        "version"
      ]
    },
    "google-native:cloudtasks/v2beta2:AttemptStatusResponse": {
      "description": "The status of a task attempt.",
      "properties": {
        "dispatchTime": {
          "type": "string",
          "description": "The time that this attempt was dispatched. `dispatch_time` will be truncated to the nearest microsecond."
        },
        "responseStatus": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:StatusResponse",
          "description": "The response from the target for this attempt. If the task has not been attempted or the task is currently running then the response status is unset."
        },
        "responseTime": {
          "type": "string",
          "description": "The time that this attempt response was received. `response_time` will be truncated to the nearest microsecond."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time that this attempt was scheduled. `schedule_time` will be truncated to the nearest microsecond."
        }
      },
      "type": "object",
      "required": [
        "dispatchTime",
        "responseStatus",
        "responseTime",
        "scheduleTime"
      ]
    },
    "google-native:cloudtasks/v2beta2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudtasks/v2beta2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudtasks/v2beta2:Header": {
      "description": "Defines a header message. A header can have a key and a value.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of the header."
        },
        "value": {
          "type": "string",
          "description": "The value of the header."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:HeaderOverride": {
      "description": "Wraps the Header object.",
      "properties": {
        "header": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:Header",
          "description": "header embodying a key and a value."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:HeaderOverrideResponse": {
      "description": "Wraps the Header object.",
      "properties": {
        "header": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HeaderResponse",
          "description": "header embodying a key and a value."
        }
      },
      "type": "object",
      "required": [
        "header"
      ]
    },
    "google-native:cloudtasks/v2beta2:HeaderResponse": {
      "description": "Defines a header message. A header can have a key and a value.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of the header."
        },
        "value": {
          "type": "string",
          "description": "The value of the header."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:cloudtasks/v2beta2:HttpRequest": {
      "description": "HTTP request. The task will be pushed to the worker as an HTTP request. An HTTP request embodies a url, an http method, headers, body and authorization for the http task.",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when running the task is created or task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Any header that is prefixed with \"X-CloudTasks-\" will be treated as service header. Service headers define properties of the task and are predefined in CloudTask. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HttpRequestHttpMethod",
          "description": "The HTTP method to use for the request. The default is POST."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:OAuthToken",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:OidcToken",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "url": {
          "type": "string",
          "description": "The full url path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Tasks will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding. The `Location` header response from a redirect response [`300` - `399`] may be followed. The redirect is not counted as a separate attempt."
        }
      },
      "type": "object",
      "required": [
        "url"
      ]
    },
    "google-native:cloudtasks/v2beta2:HttpRequestHttpMethod": {
      "description": "The HTTP method to use for the request. The default is POST.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta2:HttpRequestResponse": {
      "description": "HTTP request. The task will be pushed to the worker as an HTTP request. An HTTP request embodies a url, an http method, headers, body and authorization for the http task.",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when running the task is created or task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Any header that is prefixed with \"X-CloudTasks-\" will be treated as service header. Service headers define properties of the task and are predefined in CloudTask. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. The default is POST."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:OAuthTokenResponse",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:OidcTokenResponse",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "url": {
          "type": "string",
          "description": "The full url path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Tasks will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding. The `Location` header response from a redirect response [`300` - `399`] may be followed. The redirect is not counted as a separate attempt."
        }
      },
      "type": "object",
      "required": [
        "body",
        "headers",
        "httpMethod",
        "oauthToken",
        "oidcToken",
        "url"
      ]
    },
    "google-native:cloudtasks/v2beta2:HttpTarget": {
      "description": "HTTP target. When specified as a Queue, all the tasks with [HttpRequest] will be overridden according to the target.",
      "properties": {
        "headerOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HeaderOverride"
          },
          "description": "HTTP target headers. This map contains the header field names and values. Headers will be set when running the task is created and/or task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Any header that is prefixed with \"X-CloudTasks-\" will be treated as service header. Service headers define properties of the task and are predefined in CloudTask. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-CloudTasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HttpTargetHttpMethod",
          "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:OAuthToken",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:OidcToken",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uriOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:UriOverride",
          "description": "Uri override. When specified, overrides the execution Uri for all the tasks in the queue."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:HttpTargetHttpMethod": {
      "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta2:HttpTargetResponse": {
      "description": "HTTP target. When specified as a Queue, all the tasks with [HttpRequest] will be overridden according to the target.",
      "properties": {
        "headerOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HeaderOverrideResponse"
          },
          "description": "HTTP target headers. This map contains the header field names and values. Headers will be set when running the task is created and/or task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Any header that is prefixed with \"X-CloudTasks-\" will be treated as service header. Service headers define properties of the task and are predefined in CloudTask. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-CloudTasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:OAuthTokenResponse",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:OidcTokenResponse",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uriOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:UriOverrideResponse",
          "description": "Uri override. When specified, overrides the execution Uri for all the tasks in the queue."
        }
      },
      "type": "object",
      "required": [
        "headerOverrides",
        "httpMethod",
        "oauthToken",
        "oidcToken",
        "uriOverride"
      ]
    },
    "google-native:cloudtasks/v2beta2:OAuthToken": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:OAuthTokenResponse": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "scope",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudtasks/v2beta2:OidcToken": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:OidcTokenResponse": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudtasks/v2beta2:PathOverride": {
      "description": "PathOverride. Path message defines path override for HTTP targets.",
      "properties": {
        "path": {
          "type": "string",
          "description": "The URI path (e.g., /users/1234). Default is an empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:PathOverrideResponse": {
      "description": "PathOverride. Path message defines path override for HTTP targets.",
      "properties": {
        "path": {
          "type": "string",
          "description": "The URI path (e.g., /users/1234). Default is an empty string."
        }
      },
      "type": "object",
      "required": [
        "path"
      ]
    },
    "google-native:cloudtasks/v2beta2:PullMessage": {
      "description": "The pull message contains data that can be used by the caller of LeaseTasks to process the task. This proto can only be used for tasks in a queue which has pull_target set.",
      "properties": {
        "payload": {
          "type": "string",
          "description": "A data payload consumed by the worker to execute the task."
        },
        "tag": {
          "type": "string",
          "description": "The task's tag. Tags allow similar tasks to be processed in a batch. If you label tasks with a tag, your worker can lease tasks with the same tag using filter. For example, if you want to aggregate the events associated with a specific user once a day, you could tag tasks with the user ID. The task's tag can only be set when the task is created. The tag must be less than 500 characters. SDK compatibility: Although the SDK allows tags to be either string or [bytes](https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/taskqueue/TaskOptions.html#tag-byte:A-), only UTF-8 encoded tags can be used in Cloud Tasks. If a tag isn't UTF-8 encoded, the tag will be empty when the task is returned by Cloud Tasks."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:PullMessageResponse": {
      "description": "The pull message contains data that can be used by the caller of LeaseTasks to process the task. This proto can only be used for tasks in a queue which has pull_target set.",
      "properties": {
        "payload": {
          "type": "string",
          "description": "A data payload consumed by the worker to execute the task."
        },
        "tag": {
          "type": "string",
          "description": "The task's tag. Tags allow similar tasks to be processed in a batch. If you label tasks with a tag, your worker can lease tasks with the same tag using filter. For example, if you want to aggregate the events associated with a specific user once a day, you could tag tasks with the user ID. The task's tag can only be set when the task is created. The tag must be less than 500 characters. SDK compatibility: Although the SDK allows tags to be either string or [bytes](https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/taskqueue/TaskOptions.html#tag-byte:A-), only UTF-8 encoded tags can be used in Cloud Tasks. If a tag isn't UTF-8 encoded, the tag will be empty when the task is returned by Cloud Tasks."
        }
      },
      "type": "object",
      "required": [
        "payload",
        "tag"
      ]
    },
    "google-native:cloudtasks/v2beta2:PullTarget": {
      "description": "Pull target.",
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:PullTargetResponse": {
      "description": "Pull target.",
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:QueryOverride": {
      "description": "QueryOverride. Query message defines query override for HTTP targets.",
      "properties": {
        "queryParams": {
          "type": "string",
          "description": "The query parameters (e.g., qparam1=123&qparam2=456). Default is an empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:QueryOverrideResponse": {
      "description": "QueryOverride. Query message defines query override for HTTP targets.",
      "properties": {
        "queryParams": {
          "type": "string",
          "description": "The query parameters (e.g., qparam1=123&qparam2=456). Default is an empty string."
        }
      },
      "type": "object",
      "required": [
        "queryParams"
      ]
    },
    "google-native:cloudtasks/v2beta2:QueueStatsResponse": {
      "description": "Statistics for a queue.",
      "properties": {
        "concurrentDispatchesCount": {
          "type": "string",
          "description": "The number of requests that the queue has dispatched but has not received a reply for yet."
        },
        "effectiveExecutionRate": {
          "type": "number",
          "description": "The current maximum number of tasks per second executed by the queue. The maximum value of this variable is controlled by the RateLimits of the Queue. However, this value could be less to avoid overloading the endpoints tasks in the queue are targeting."
        },
        "executedLastMinuteCount": {
          "type": "string",
          "description": "The number of tasks that the queue has dispatched and received a reply for during the last minute. This variable counts both successful and non-successful executions."
        },
        "oldestEstimatedArrivalTime": {
          "type": "string",
          "description": "An estimation of the nearest time in the future where a task in the queue is scheduled to be executed."
        },
        "tasksCount": {
          "type": "string",
          "description": "An estimation of the number of tasks in the queue, that is, the tasks in the queue that haven't been executed, the tasks in the queue which the queue has dispatched but has not yet received a reply for, and the failed tasks that the queue is retrying."
        }
      },
      "type": "object",
      "required": [
        "concurrentDispatchesCount",
        "effectiveExecutionRate",
        "executedLastMinuteCount",
        "oldestEstimatedArrivalTime",
        "tasksCount"
      ]
    },
    "google-native:cloudtasks/v2beta2:RateLimits": {
      "description": "Rate limits. This message determines the maximum rate that tasks can be dispatched by a queue, regardless of whether the dispatch is a first task attempt or a retry. Note: The debugging command, RunTask, will run a task even if the queue has reached its RateLimits.",
      "properties": {
        "maxBurstSize": {
          "type": "integer",
          "description": "The max burst size. Max burst size limits how fast tasks in queue are processed when many tasks are in the queue and the rate is high. This field allows the queue to have a high rate so processing starts shortly after a task is enqueued, but still limits resource usage when many tasks are enqueued in a short period of time. The [token bucket](https://wikipedia.org/wiki/Token_Bucket) algorithm is used to control the rate of task dispatches. Each queue has a token bucket that holds tokens, up to the maximum specified by `max_burst_size`. Each time a task is dispatched, a token is removed from the bucket. Tasks will be dispatched until the queue's bucket runs out of tokens. The bucket will be continuously refilled with new tokens based on max_dispatches_per_second. The default value of `max_burst_size` is picked by Cloud Tasks based on the value of max_dispatches_per_second. The maximum value of `max_burst_size` is 500. For App Engine queues that were created or updated using `queue.yaml/xml`, `max_burst_size` is equal to [bucket_size](https://cloud.google.com/appengine/docs/standard/python/config/queueref#bucket_size). If UpdateQueue is called on a queue without explicitly setting a value for `max_burst_size`, `max_burst_size` value will get updated if UpdateQueue is updating max_dispatches_per_second. "
        },
        "maxConcurrentTasks": {
          "type": "integer",
          "description": "The maximum number of concurrent tasks that Cloud Tasks allows to be dispatched for this queue. After this threshold has been reached, Cloud Tasks stops dispatching tasks until the number of concurrent requests decreases. If unspecified when the queue is created, Cloud Tasks will pick the default. The maximum allowed value is 5,000. This field is output only for pull queues and always -1, which indicates no limit. No other queue types can have `max_concurrent_tasks` set to -1. This field has the same meaning as [max_concurrent_requests in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests)."
        },
        "maxTasksDispatchedPerSecond": {
          "type": "number",
          "description": "The maximum rate at which tasks are dispatched from this queue. If unspecified when the queue is created, Cloud Tasks will pick the default. * For App Engine queues, the maximum allowed value is 500. * This field is output only for pull queues. In addition to the `max_tasks_dispatched_per_second` limit, a maximum of 10 QPS of LeaseTasks requests are allowed per pull queue. This field has the same meaning as [rate in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate)."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:RateLimitsResponse": {
      "description": "Rate limits. This message determines the maximum rate that tasks can be dispatched by a queue, regardless of whether the dispatch is a first task attempt or a retry. Note: The debugging command, RunTask, will run a task even if the queue has reached its RateLimits.",
      "properties": {
        "maxBurstSize": {
          "type": "integer",
          "description": "The max burst size. Max burst size limits how fast tasks in queue are processed when many tasks are in the queue and the rate is high. This field allows the queue to have a high rate so processing starts shortly after a task is enqueued, but still limits resource usage when many tasks are enqueued in a short period of time. The [token bucket](https://wikipedia.org/wiki/Token_Bucket) algorithm is used to control the rate of task dispatches. Each queue has a token bucket that holds tokens, up to the maximum specified by `max_burst_size`. Each time a task is dispatched, a token is removed from the bucket. Tasks will be dispatched until the queue's bucket runs out of tokens. The bucket will be continuously refilled with new tokens based on max_dispatches_per_second. The default value of `max_burst_size` is picked by Cloud Tasks based on the value of max_dispatches_per_second. The maximum value of `max_burst_size` is 500. For App Engine queues that were created or updated using `queue.yaml/xml`, `max_burst_size` is equal to [bucket_size](https://cloud.google.com/appengine/docs/standard/python/config/queueref#bucket_size). If UpdateQueue is called on a queue without explicitly setting a value for `max_burst_size`, `max_burst_size` value will get updated if UpdateQueue is updating max_dispatches_per_second. "
        },
        "maxConcurrentTasks": {
          "type": "integer",
          "description": "The maximum number of concurrent tasks that Cloud Tasks allows to be dispatched for this queue. After this threshold has been reached, Cloud Tasks stops dispatching tasks until the number of concurrent requests decreases. If unspecified when the queue is created, Cloud Tasks will pick the default. The maximum allowed value is 5,000. This field is output only for pull queues and always -1, which indicates no limit. No other queue types can have `max_concurrent_tasks` set to -1. This field has the same meaning as [max_concurrent_requests in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests)."
        },
        "maxTasksDispatchedPerSecond": {
          "type": "number",
          "description": "The maximum rate at which tasks are dispatched from this queue. If unspecified when the queue is created, Cloud Tasks will pick the default. * For App Engine queues, the maximum allowed value is 500. * This field is output only for pull queues. In addition to the `max_tasks_dispatched_per_second` limit, a maximum of 10 QPS of LeaseTasks requests are allowed per pull queue. This field has the same meaning as [rate in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate)."
        }
      },
      "type": "object",
      "required": [
        "maxBurstSize",
        "maxConcurrentTasks",
        "maxTasksDispatchedPerSecond"
      ]
    },
    "google-native:cloudtasks/v2beta2:RetryConfig": {
      "description": "Retry config. These settings determine how a failed task attempt is retried.",
      "properties": {
        "maxAttempts": {
          "type": "integer",
          "description": "The maximum number of attempts for a task. Cloud Tasks will attempt the task `max_attempts` times (that is, if the first attempt fails, then there will be `max_attempts - 1` retries). Must be > 0."
        },
        "maxBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. This field is output only for pull queues. `max_backoff` will be truncated to the nearest second. This field has the same meaning as [max_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A task's retry interval starts at min_backoff, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff up to max_attempts times. For example, if min_backoff is 10s, max_backoff is 300s, and `max_doublings` is 3, then the a task will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the task will retry at intervals of max_backoff until the task has been attempted max_attempts times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... If unspecified when the queue is created, Cloud Tasks will pick the default. This field is output only for pull queues. This field has the same meaning as [max_doublings in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "If positive, `max_retry_duration` specifies the time limit for retrying a failed task, measured from when the task was first attempted. Once `max_retry_duration` time has passed *and* the task has been attempted max_attempts times, no further attempts will be made and the task will be deleted. If zero, then the task age is unlimited. If unspecified when the queue is created, Cloud Tasks will pick the default. This field is output only for pull queues. `max_retry_duration` will be truncated to the nearest second. This field has the same meaning as [task_age_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "minBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. This field is output only for pull queues. `min_backoff` will be truncated to the nearest second. This field has the same meaning as [min_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "unlimitedAttempts": {
          "type": "boolean",
          "description": "If true, then the number of attempts is unlimited."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:RetryConfigResponse": {
      "description": "Retry config. These settings determine how a failed task attempt is retried.",
      "properties": {
        "maxAttempts": {
          "type": "integer",
          "description": "The maximum number of attempts for a task. Cloud Tasks will attempt the task `max_attempts` times (that is, if the first attempt fails, then there will be `max_attempts - 1` retries). Must be > 0."
        },
        "maxBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. This field is output only for pull queues. `max_backoff` will be truncated to the nearest second. This field has the same meaning as [max_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A task's retry interval starts at min_backoff, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff up to max_attempts times. For example, if min_backoff is 10s, max_backoff is 300s, and `max_doublings` is 3, then the a task will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the task will retry at intervals of max_backoff until the task has been attempted max_attempts times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... If unspecified when the queue is created, Cloud Tasks will pick the default. This field is output only for pull queues. This field has the same meaning as [max_doublings in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "If positive, `max_retry_duration` specifies the time limit for retrying a failed task, measured from when the task was first attempted. Once `max_retry_duration` time has passed *and* the task has been attempted max_attempts times, no further attempts will be made and the task will be deleted. If zero, then the task age is unlimited. If unspecified when the queue is created, Cloud Tasks will pick the default. This field is output only for pull queues. `max_retry_duration` will be truncated to the nearest second. This field has the same meaning as [task_age_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "minBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. This field is output only for pull queues. `min_backoff` will be truncated to the nearest second. This field has the same meaning as [min_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "unlimitedAttempts": {
          "type": "boolean",
          "description": "If true, then the number of attempts is unlimited."
        }
      },
      "type": "object",
      "required": [
        "maxAttempts",
        "maxBackoff",
        "maxDoublings",
        "maxRetryDuration",
        "minBackoff",
        "unlimitedAttempts"
      ]
    },
    "google-native:cloudtasks/v2beta2:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:cloudtasks/v2beta2:TaskResponseView": {
      "description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource.",
      "type": "string",
      "enum": [
        {
          "name": "ViewUnspecified",
          "description": "Unspecified. Defaults to BASIC.",
          "value": "VIEW_UNSPECIFIED"
        },
        {
          "name": "Basic",
          "description": "The basic view omits fields which can be large or can contain sensitive data. This view does not include the (payload in AppEngineHttpRequest and payload in PullMessage). These payloads are desirable to return only when needed, because they can be large and because of the sensitivity of the data that you choose to store in it.",
          "value": "BASIC"
        },
        {
          "name": "Full",
          "description": "All information is returned. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Queue resource.",
          "value": "FULL"
        }
      ]
    },
    "google-native:cloudtasks/v2beta2:TaskStatusResponse": {
      "description": "Status of the task.",
      "properties": {
        "attemptDispatchCount": {
          "type": "integer",
          "description": "The number of attempts dispatched. This count includes attempts which have been dispatched but haven't received a response."
        },
        "attemptResponseCount": {
          "type": "integer",
          "description": "The number of attempts which have received a response. This field is not calculated for pull tasks."
        },
        "firstAttemptStatus": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AttemptStatusResponse",
          "description": "The status of the task's first attempt. Only dispatch_time will be set. The other AttemptStatus information is not retained by Cloud Tasks. This field is not calculated for pull tasks."
        },
        "lastAttemptStatus": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AttemptStatusResponse",
          "description": "The status of the task's last attempt. This field is not calculated for pull tasks."
        }
      },
      "type": "object",
      "required": [
        "attemptDispatchCount",
        "attemptResponseCount",
        "firstAttemptStatus",
        "lastAttemptStatus"
      ]
    },
    "google-native:cloudtasks/v2beta2:UriOverride": {
      "description": "Uri Override. When specified, all the HTTP tasks inside the queue will be partially or fully overridden depending on the configured values.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Host override. When specified, replaces the host part of the task URL. For example, if the task URL is \"https://www.google.com,\" and host value is set to \"example.net\", the overridden URI will be changed to \"https://example.net.\" Host value cannot be an empty string (INVALID_ARGUMENT)."
        },
        "pathOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:PathOverride",
          "description": "URI path. When specified, replaces the existing path of the task URL. Setting the path value to an empty string clears the URI path segment."
        },
        "port": {
          "type": "string",
          "description": "Port override. When specified, replaces the port part of the task URI. For instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo. Note that the port value must be a positive integer. Setting the port to 0 (Zero) clears the URI port."
        },
        "queryOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:QueryOverride",
          "description": "URI Query. When specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment."
        },
        "scheme": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:UriOverrideScheme",
          "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS)."
        },
        "uriOverrideEnforceMode": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:UriOverrideUriOverrideEnforceMode",
          "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta2:UriOverrideResponse": {
      "description": "Uri Override. When specified, all the HTTP tasks inside the queue will be partially or fully overridden depending on the configured values.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Host override. When specified, replaces the host part of the task URL. For example, if the task URL is \"https://www.google.com,\" and host value is set to \"example.net\", the overridden URI will be changed to \"https://example.net.\" Host value cannot be an empty string (INVALID_ARGUMENT)."
        },
        "pathOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:PathOverrideResponse",
          "description": "URI path. When specified, replaces the existing path of the task URL. Setting the path value to an empty string clears the URI path segment."
        },
        "port": {
          "type": "string",
          "description": "Port override. When specified, replaces the port part of the task URI. For instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo. Note that the port value must be a positive integer. Setting the port to 0 (Zero) clears the URI port."
        },
        "queryOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:QueryOverrideResponse",
          "description": "URI Query. When specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment."
        },
        "scheme": {
          "type": "string",
          "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS)."
        },
        "uriOverrideEnforceMode": {
          "type": "string",
          "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS."
        }
      },
      "type": "object",
      "required": [
        "host",
        "pathOverride",
        "port",
        "queryOverride",
        "scheme",
        "uriOverrideEnforceMode"
      ]
    },
    "google-native:cloudtasks/v2beta2:UriOverrideScheme": {
      "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS).",
      "type": "string",
      "enum": [
        {
          "name": "SchemeUnspecified",
          "description": "Scheme unspecified. Defaults to HTTPS.",
          "value": "SCHEME_UNSPECIFIED"
        },
        {
          "name": "Http",
          "description": "Convert the scheme to HTTP, e.g., https://www.google.ca will change to http://www.google.ca.",
          "value": "HTTP"
        },
        {
          "name": "Https",
          "description": "Convert the scheme to HTTPS, e.g., http://www.google.ca will change to https://www.google.ca.",
          "value": "HTTPS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta2:UriOverrideUriOverrideEnforceMode": {
      "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS.",
      "type": "string",
      "enum": [
        {
          "name": "UriOverrideEnforceModeUnspecified",
          "description": "OverrideMode Unspecified. Defaults to ALWAYS.",
          "value": "URI_OVERRIDE_ENFORCE_MODE_UNSPECIFIED"
        },
        {
          "name": "IfNotExists",
          "description": "In the IF_NOT_EXISTS mode, queue-level configuration is only applied where task-level configuration does not exist.",
          "value": "IF_NOT_EXISTS"
        },
        {
          "name": "Always",
          "description": "In the ALWAYS mode, queue-level configuration overrides all task-level configuration",
          "value": "ALWAYS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta3:AppEngineHttpQueue": {
      "description": "App Engine HTTP queue. The task will be delivered to the App Engine application hostname specified by its AppEngineHttpQueue and AppEngineHttpRequest. The documentation for AppEngineHttpRequest explains how the task's host URL is constructed. Using AppEngineHttpQueue requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform`",
      "properties": {
        "appEngineRoutingOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineRouting",
          "description": "Overrides for the task-level app_engine_routing. If set, `app_engine_routing_override` is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:AppEngineHttpQueueResponse": {
      "description": "App Engine HTTP queue. The task will be delivered to the App Engine application hostname specified by its AppEngineHttpQueue and AppEngineHttpRequest. The documentation for AppEngineHttpRequest explains how the task's host URL is constructed. Using AppEngineHttpQueue requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform`",
      "properties": {
        "appEngineRoutingOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineRoutingResponse",
          "description": "Overrides for the task-level app_engine_routing. If set, `app_engine_routing_override` is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        }
      },
      "type": "object",
      "required": [
        "appEngineRoutingOverride"
      ]
    },
    "google-native:cloudtasks/v2beta3:AppEngineHttpRequest": {
      "description": "App Engine HTTP request. The message defines the HTTP request that is sent to an App Engine app when the task is dispatched. Using AppEngineHttpRequest requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform` The task will be delivered to the App Engine app which belongs to the same project as the queue. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and how routing is affected by [dispatch files](https://cloud.google.com/appengine/docs/python/config/dispatchref). Traffic is encrypted during transport and never leaves Google datacenters. Because this traffic is carried over a communication mechanism internal to Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS). The request to the handler, however, will appear to have used the HTTP protocol. The AppEngineRouting used to construct the URL that the task is delivered to can be set at the queue-level or task-level: * If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing. The `url` that the task will be sent to is: * `url =` host `+` relative_uri Tasks can be dispatched to secure app handlers, unsecure app handlers, and URIs restricted with [`login: admin`](https://cloud.google.com/appengine/docs/standard/python/config/appref). Because tasks are not run as any user, they cannot be dispatched to URIs restricted with [`login: required`](https://cloud.google.com/appengine/docs/standard/python/config/appref) Task dispatches also do not follow redirects. The task attempt has succeeded if the app's request handler returns an HTTP response code in the range [`200` - `299`]. The task attempt has failed if the app's handler returns a non-2xx response code or Cloud Tasks does not receive response before the deadline. Failed tasks will be retried according to the retry configuration. `503` (Service Unavailable) is considered an App Engine system error instead of an application error and will cause Cloud Tasks' traffic congestion control to temporarily throttle the queue's dispatches. Unlike other types of task targets, a `429` (Too Many Requests) response from an app handler does not cause traffic congestion control to throttle the queue.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineRouting",
          "description": "Task-level setting for App Engine routing. If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        },
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It is an error to set a body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. Repeated headers are not supported but a header value can contain commas. Cloud Tasks sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Tasks will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. If the task has a body, Cloud Tasks sets the following headers: * `Content-Type`: By default, the `Content-Type` header is set to `\"application/octet-stream\"`. The default can be overridden by explicitly setting `Content-Type` to a particular media type when the task is created. For example, `Content-Type` can be set to `\"application/json\"`. * `Content-Length`: This is computed by Cloud Tasks. This value is output only. It cannot be changed. The headers below cannot be set or overridden: * `Host` * `X-Google-*` * `X-AppEngine-*` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the task; see [request headers](https://cloud.google.com/tasks/docs/creating-appengine-handlers#reading_request_headers). These headers are set only when the task is dispatched, so they are not visible when the task is returned in a Cloud Tasks response. Although there is no specific limit for the maximum number of headers or the size, there is a limit on the maximum size of the Task. For more information, see the CreateTask documentation."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineHttpRequestHttpMethod",
          "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled)."
        },
        "relativeUri": {
          "type": "string",
          "description": "The relative URI. The relative URI must begin with \"/\" and must be a valid HTTP relative URI. It can contain a path and query string arguments. If the relative URI is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:AppEngineHttpRequestHttpMethod": {
      "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled).",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta3:AppEngineHttpRequestResponse": {
      "description": "App Engine HTTP request. The message defines the HTTP request that is sent to an App Engine app when the task is dispatched. Using AppEngineHttpRequest requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform` The task will be delivered to the App Engine app which belongs to the same project as the queue. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and how routing is affected by [dispatch files](https://cloud.google.com/appengine/docs/python/config/dispatchref). Traffic is encrypted during transport and never leaves Google datacenters. Because this traffic is carried over a communication mechanism internal to Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS). The request to the handler, however, will appear to have used the HTTP protocol. The AppEngineRouting used to construct the URL that the task is delivered to can be set at the queue-level or task-level: * If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing. The `url` that the task will be sent to is: * `url =` host `+` relative_uri Tasks can be dispatched to secure app handlers, unsecure app handlers, and URIs restricted with [`login: admin`](https://cloud.google.com/appengine/docs/standard/python/config/appref). Because tasks are not run as any user, they cannot be dispatched to URIs restricted with [`login: required`](https://cloud.google.com/appengine/docs/standard/python/config/appref) Task dispatches also do not follow redirects. The task attempt has succeeded if the app's request handler returns an HTTP response code in the range [`200` - `299`]. The task attempt has failed if the app's handler returns a non-2xx response code or Cloud Tasks does not receive response before the deadline. Failed tasks will be retried according to the retry configuration. `503` (Service Unavailable) is considered an App Engine system error instead of an application error and will cause Cloud Tasks' traffic congestion control to temporarily throttle the queue's dispatches. Unlike other types of task targets, a `429` (Too Many Requests) response from an app handler does not cause traffic congestion control to throttle the queue.",
      "properties": {
        "appEngineRouting": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineRoutingResponse",
          "description": "Task-level setting for App Engine routing. If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        },
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It is an error to set a body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. Repeated headers are not supported but a header value can contain commas. Cloud Tasks sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Tasks will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. If the task has a body, Cloud Tasks sets the following headers: * `Content-Type`: By default, the `Content-Type` header is set to `\"application/octet-stream\"`. The default can be overridden by explicitly setting `Content-Type` to a particular media type when the task is created. For example, `Content-Type` can be set to `\"application/json\"`. * `Content-Length`: This is computed by Cloud Tasks. This value is output only. It cannot be changed. The headers below cannot be set or overridden: * `Host` * `X-Google-*` * `X-AppEngine-*` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the task; see [request headers](https://cloud.google.com/tasks/docs/creating-appengine-handlers#reading_request_headers). These headers are set only when the task is dispatched, so they are not visible when the task is returned in a Cloud Tasks response. Although there is no specific limit for the maximum number of headers or the size, there is a limit on the maximum size of the Task. For more information, see the CreateTask documentation."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled)."
        },
        "relativeUri": {
          "type": "string",
          "description": "The relative URI. The relative URI must begin with \"/\" and must be a valid HTTP relative URI. It can contain a path and query string arguments. If the relative URI is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters."
        }
      },
      "type": "object",
      "required": [
        "appEngineRouting",
        "body",
        "headers",
        "httpMethod",
        "relativeUri"
      ]
    },
    "google-native:cloudtasks/v2beta3:AppEngineRouting": {
      "description": "App Engine Routing. Defines routing characteristics specific to App Engine - service, version, and instance. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
      "properties": {
        "instance": {
          "type": "string",
          "description": "App instance. By default, the task is sent to an instance which is available when the task is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the task is sent to the service which is the default service when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the task is sent to the version which is the default version when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:AppEngineRoutingResponse": {
      "description": "App Engine Routing. Defines routing characteristics specific to App Engine - service, version, and instance. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
      "properties": {
        "host": {
          "type": "string",
          "description": "The host that the task is sent to. The host is constructed from the domain name of the app associated with the queue's project ID (for example .appspot.com), and the service, version, and instance. Tasks which were created using the App Engine SDK might have a custom domain name. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed)."
        },
        "instance": {
          "type": "string",
          "description": "App instance. By default, the task is sent to an instance which is available when the task is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed)."
        },
        "service": {
          "type": "string",
          "description": "App service. By default, the task is sent to the service which is the default service when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        },
        "version": {
          "type": "string",
          "description": "App version. By default, the task is sent to the version which is the default version when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string."
        }
      },
      "type": "object",
      "required": [
        "host",
        "instance",
        "service",
        "version"
      ]
    },
    "google-native:cloudtasks/v2beta3:AttemptResponse": {
      "description": "The status of a task attempt.",
      "properties": {
        "dispatchTime": {
          "type": "string",
          "description": "The time that this attempt was dispatched. `dispatch_time` will be truncated to the nearest microsecond."
        },
        "responseStatus": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:StatusResponse",
          "description": "The response from the worker for this attempt. If `response_time` is unset, then the task has not been attempted or is currently running and the `response_status` field is meaningless."
        },
        "responseTime": {
          "type": "string",
          "description": "The time that this attempt response was received. `response_time` will be truncated to the nearest microsecond."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time that this attempt was scheduled. `schedule_time` will be truncated to the nearest microsecond."
        }
      },
      "type": "object",
      "required": [
        "dispatchTime",
        "responseStatus",
        "responseTime",
        "scheduleTime"
      ]
    },
    "google-native:cloudtasks/v2beta3:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:cloudtasks/v2beta3:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:cloudtasks/v2beta3:Header": {
      "description": "Defines a header message. A header can have a key and a value.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The Key of the header."
        },
        "value": {
          "type": "string",
          "description": "The Value of the header."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:HeaderOverride": {
      "description": "Wraps the Header object.",
      "properties": {
        "header": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:Header",
          "description": "header embodying a key and a value."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:HeaderOverrideResponse": {
      "description": "Wraps the Header object.",
      "properties": {
        "header": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HeaderResponse",
          "description": "header embodying a key and a value."
        }
      },
      "type": "object",
      "required": [
        "header"
      ]
    },
    "google-native:cloudtasks/v2beta3:HeaderResponse": {
      "description": "Defines a header message. A header can have a key and a value.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The Key of the header."
        },
        "value": {
          "type": "string",
          "description": "The Value of the header."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:cloudtasks/v2beta3:HttpRequest": {
      "description": "HTTP request. The task will be pushed to the worker as an HTTP request. If the worker or the redirected worker acknowledges the task by returning a successful HTTP response code ([`200` - `299`]), the task will be removed from the queue. If any other HTTP response code is returned or no response is received, the task will be retried according to the following: * User-specified throttling: retry configuration, rate limits, and the queue's state. * System throttling: To prevent the worker from overloading, Cloud Tasks may temporarily reduce the queue's effective rate. User-specified settings will not be changed. System throttling happens because: * Cloud Tasks backs off on all errors. Normally the backoff specified in rate limits will be used. But if the worker returns `429` (Too Many Requests), `503` (Service Unavailable), or the rate of errors is high, Cloud Tasks will use a higher backoff rate. The retry specified in the `Retry-After` HTTP response header is considered. * To prevent traffic spikes and to smooth sudden increases in traffic, dispatches ramp up slowly when the queue is newly created or idle and if large numbers of tasks suddenly become available to dispatch (due to spikes in create task rates, the queue being unpaused, or many tasks that are scheduled at the same time).",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Any header that is prefixed with \"X-CloudTasks-\" will be treated as service header. Service headers define properties of the task and are predefined in CloudTask. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HttpRequestHttpMethod",
          "description": "The HTTP method to use for the request. The default is POST."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:OAuthToken",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:OidcToken",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "url": {
          "type": "string",
          "description": "The full url path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Tasks will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding. The `Location` header response from a redirect response [`300` - `399`] may be followed. The redirect is not counted as a separate attempt."
        }
      },
      "type": "object",
      "required": [
        "url"
      ]
    },
    "google-native:cloudtasks/v2beta3:HttpRequestHttpMethod": {
      "description": "The HTTP method to use for the request. The default is POST.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta3:HttpRequestResponse": {
      "description": "HTTP request. The task will be pushed to the worker as an HTTP request. If the worker or the redirected worker acknowledges the task by returning a successful HTTP response code ([`200` - `299`]), the task will be removed from the queue. If any other HTTP response code is returned or no response is received, the task will be retried according to the following: * User-specified throttling: retry configuration, rate limits, and the queue's state. * System throttling: To prevent the worker from overloading, Cloud Tasks may temporarily reduce the queue's effective rate. User-specified settings will not be changed. System throttling happens because: * Cloud Tasks backs off on all errors. Normally the backoff specified in rate limits will be used. But if the worker returns `429` (Too Many Requests), `503` (Service Unavailable), or the rate of errors is high, Cloud Tasks will use a higher backoff rate. The retry specified in the `Retry-After` HTTP response header is considered. * To prevent traffic spikes and to smooth sudden increases in traffic, dispatches ramp up slowly when the queue is newly created or idle and if large numbers of tasks suddenly become available to dispatch (due to spikes in create task rates, the queue being unpaused, or many tasks that are scheduled at the same time).",
      "properties": {
        "body": {
          "type": "string",
          "description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a task with an incompatible HttpMethod."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Any header that is prefixed with \"X-CloudTasks-\" will be treated as service header. Service headers define properties of the task and are predefined in CloudTask. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. The default is POST."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:OAuthTokenResponse",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:OidcTokenResponse",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "url": {
          "type": "string",
          "description": "The full url path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Tasks will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding. The `Location` header response from a redirect response [`300` - `399`] may be followed. The redirect is not counted as a separate attempt."
        }
      },
      "type": "object",
      "required": [
        "body",
        "headers",
        "httpMethod",
        "oauthToken",
        "oidcToken",
        "url"
      ]
    },
    "google-native:cloudtasks/v2beta3:HttpTarget": {
      "description": "HTTP target. When specified as a Queue, all the tasks with [HttpRequest] will be overridden according to the target.",
      "properties": {
        "headerOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HeaderOverride"
          },
          "description": "HTTP target headers. This map contains the header field names and values. Headers will be set when running the CreateTask and/or BufferTask. These headers represent a subset of the headers that will be configured for the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Several predefined headers, prefixed with \"X-CloudTasks-\", can be used to define properties of the task. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example,`Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. The default value is set to `\"application/json\"`. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue."
        },
        "httpMethod": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HttpTargetHttpMethod",
          "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:OAuthToken",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as the `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:OidcToken",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uriOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:UriOverride",
          "description": "URI override. When specified, overrides the execution URI for all the tasks in the queue."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:HttpTargetHttpMethod": {
      "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method unspecified",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta3:HttpTargetResponse": {
      "description": "HTTP target. When specified as a Queue, all the tasks with [HttpRequest] will be overridden according to the target.",
      "properties": {
        "headerOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HeaderOverrideResponse"
          },
          "description": "HTTP target headers. This map contains the header field names and values. Headers will be set when running the CreateTask and/or BufferTask. These headers represent a subset of the headers that will be configured for the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Several predefined headers, prefixed with \"X-CloudTasks-\", can be used to define properties of the task. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example,`Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. The default value is set to `\"application/json\"`. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue."
        },
        "httpMethod": {
          "type": "string",
          "description": "The HTTP method to use for the request. When specified, it overrides HttpRequest for the task. Note that if the value is set to HttpMethod the HttpRequest of the task will be ignored at execution time."
        },
        "oauthToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:OAuthTokenResponse",
          "description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as the `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:OidcTokenResponse",
          "description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
        },
        "uriOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:UriOverrideResponse",
          "description": "URI override. When specified, overrides the execution URI for all the tasks in the queue."
        }
      },
      "type": "object",
      "required": [
        "headerOverrides",
        "httpMethod",
        "oauthToken",
        "oidcToken",
        "uriOverride"
      ]
    },
    "google-native:cloudtasks/v2beta3:OAuthToken": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:OAuthTokenResponse": {
      "description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "scope",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudtasks/v2beta3:OidcToken": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:OidcTokenResponse": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "serviceAccountEmail"
      ]
    },
    "google-native:cloudtasks/v2beta3:PathOverride": {
      "description": "PathOverride. Path message defines path override for HTTP targets.",
      "properties": {
        "path": {
          "type": "string",
          "description": "The URI path (e.g., /users/1234). Default is an empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:PathOverrideResponse": {
      "description": "PathOverride. Path message defines path override for HTTP targets.",
      "properties": {
        "path": {
          "type": "string",
          "description": "The URI path (e.g., /users/1234). Default is an empty string."
        }
      },
      "type": "object",
      "required": [
        "path"
      ]
    },
    "google-native:cloudtasks/v2beta3:PullMessage": {
      "description": "Pull Message. This proto can only be used for tasks in a queue which has PULL type. It currently exists for backwards compatibility with the App Engine Task Queue SDK. This message type maybe returned with methods list and get, when the response view is FULL.",
      "properties": {
        "payload": {
          "type": "string",
          "description": "A data payload consumed by the worker to execute the task."
        },
        "tag": {
          "type": "string",
          "description": "The tasks's tag. The tag is less than 500 characters. SDK compatibility: Although the SDK allows tags to be either string or [bytes](https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/taskqueue/TaskOptions.html#tag-byte:A-), only UTF-8 encoded tags can be used in Cloud Tasks. If a tag isn't UTF-8 encoded, the tag will be empty when the task is returned by Cloud Tasks."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:PullMessageResponse": {
      "description": "Pull Message. This proto can only be used for tasks in a queue which has PULL type. It currently exists for backwards compatibility with the App Engine Task Queue SDK. This message type maybe returned with methods list and get, when the response view is FULL.",
      "properties": {
        "payload": {
          "type": "string",
          "description": "A data payload consumed by the worker to execute the task."
        },
        "tag": {
          "type": "string",
          "description": "The tasks's tag. The tag is less than 500 characters. SDK compatibility: Although the SDK allows tags to be either string or [bytes](https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/taskqueue/TaskOptions.html#tag-byte:A-), only UTF-8 encoded tags can be used in Cloud Tasks. If a tag isn't UTF-8 encoded, the tag will be empty when the task is returned by Cloud Tasks."
        }
      },
      "type": "object",
      "required": [
        "payload",
        "tag"
      ]
    },
    "google-native:cloudtasks/v2beta3:QueryOverride": {
      "description": "QueryOverride. Query message defines query override for HTTP targets.",
      "properties": {
        "queryParams": {
          "type": "string",
          "description": "The query parameters (e.g., qparam1=123&qparam2=456). Default is an empty string."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:QueryOverrideResponse": {
      "description": "QueryOverride. Query message defines query override for HTTP targets.",
      "properties": {
        "queryParams": {
          "type": "string",
          "description": "The query parameters (e.g., qparam1=123&qparam2=456). Default is an empty string."
        }
      },
      "type": "object",
      "required": [
        "queryParams"
      ]
    },
    "google-native:cloudtasks/v2beta3:QueueStatsResponse": {
      "description": "Statistics for a queue.",
      "properties": {
        "concurrentDispatchesCount": {
          "type": "string",
          "description": "The number of requests that the queue has dispatched but has not received a reply for yet."
        },
        "effectiveExecutionRate": {
          "type": "number",
          "description": "The current maximum number of tasks per second executed by the queue. The maximum value of this variable is controlled by the RateLimits of the Queue. However, this value could be less to avoid overloading the endpoints tasks in the queue are targeting."
        },
        "executedLastMinuteCount": {
          "type": "string",
          "description": "The number of tasks that the queue has dispatched and received a reply for during the last minute. This variable counts both successful and non-successful executions."
        },
        "oldestEstimatedArrivalTime": {
          "type": "string",
          "description": "An estimation of the nearest time in the future where a task in the queue is scheduled to be executed."
        },
        "tasksCount": {
          "type": "string",
          "description": "An estimation of the number of tasks in the queue, that is, the tasks in the queue that haven't been executed, the tasks in the queue which the queue has dispatched but has not yet received a reply for, and the failed tasks that the queue is retrying."
        }
      },
      "type": "object",
      "required": [
        "concurrentDispatchesCount",
        "effectiveExecutionRate",
        "executedLastMinuteCount",
        "oldestEstimatedArrivalTime",
        "tasksCount"
      ]
    },
    "google-native:cloudtasks/v2beta3:QueueType": {
      "description": "Immutable. The type of a queue (push or pull). `Queue.type` is an immutable property of the queue that is set at the queue creation time. When left unspecified, the default value of `PUSH` is selected.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Pull",
          "description": "A pull queue.",
          "value": "PULL"
        },
        {
          "name": "Push",
          "description": "A push queue.",
          "value": "PUSH"
        }
      ]
    },
    "google-native:cloudtasks/v2beta3:RateLimits": {
      "description": "Rate limits. This message determines the maximum rate that tasks can be dispatched by a queue, regardless of whether the dispatch is a first task attempt or a retry. Note: The debugging command, RunTask, will run a task even if the queue has reached its RateLimits.",
      "properties": {
        "maxBurstSize": {
          "type": "integer",
          "description": "The max burst size. Max burst size limits how fast tasks in queue are processed when many tasks are in the queue and the rate is high. This field allows the queue to have a high rate so processing starts shortly after a task is enqueued, but still limits resource usage when many tasks are enqueued in a short period of time. The [token bucket](https://wikipedia.org/wiki/Token_Bucket) algorithm is used to control the rate of task dispatches. Each queue has a token bucket that holds tokens, up to the maximum specified by `max_burst_size`. Each time a task is dispatched, a token is removed from the bucket. Tasks will be dispatched until the queue's bucket runs out of tokens. The bucket will be continuously refilled with new tokens based on max_dispatches_per_second. The default value of `max_burst_size` is picked by Cloud Tasks based on the value of max_dispatches_per_second. The maximum value of `max_burst_size` is 500. For App Engine queues that were created or updated using `queue.yaml/xml`, `max_burst_size` is equal to [bucket_size](https://cloud.google.com/appengine/docs/standard/python/config/queueref#bucket_size). If UpdateQueue is called on a queue without explicitly setting a value for `max_burst_size`, `max_burst_size` value will get updated if UpdateQueue is updating max_dispatches_per_second. "
        },
        "maxConcurrentDispatches": {
          "type": "integer",
          "description": "The maximum number of concurrent tasks that Cloud Tasks allows to be dispatched for this queue. After this threshold has been reached, Cloud Tasks stops dispatching tasks until the number of concurrent requests decreases. If unspecified when the queue is created, Cloud Tasks will pick the default. The maximum allowed value is 5,000. This field has the same meaning as [max_concurrent_requests in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests)."
        },
        "maxDispatchesPerSecond": {
          "type": "number",
          "description": "The maximum rate at which tasks are dispatched from this queue. If unspecified when the queue is created, Cloud Tasks will pick the default. * For App Engine queues, the maximum allowed value is 500. This field has the same meaning as [rate in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate)."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:RateLimitsResponse": {
      "description": "Rate limits. This message determines the maximum rate that tasks can be dispatched by a queue, regardless of whether the dispatch is a first task attempt or a retry. Note: The debugging command, RunTask, will run a task even if the queue has reached its RateLimits.",
      "properties": {
        "maxBurstSize": {
          "type": "integer",
          "description": "The max burst size. Max burst size limits how fast tasks in queue are processed when many tasks are in the queue and the rate is high. This field allows the queue to have a high rate so processing starts shortly after a task is enqueued, but still limits resource usage when many tasks are enqueued in a short period of time. The [token bucket](https://wikipedia.org/wiki/Token_Bucket) algorithm is used to control the rate of task dispatches. Each queue has a token bucket that holds tokens, up to the maximum specified by `max_burst_size`. Each time a task is dispatched, a token is removed from the bucket. Tasks will be dispatched until the queue's bucket runs out of tokens. The bucket will be continuously refilled with new tokens based on max_dispatches_per_second. The default value of `max_burst_size` is picked by Cloud Tasks based on the value of max_dispatches_per_second. The maximum value of `max_burst_size` is 500. For App Engine queues that were created or updated using `queue.yaml/xml`, `max_burst_size` is equal to [bucket_size](https://cloud.google.com/appengine/docs/standard/python/config/queueref#bucket_size). If UpdateQueue is called on a queue without explicitly setting a value for `max_burst_size`, `max_burst_size` value will get updated if UpdateQueue is updating max_dispatches_per_second. "
        },
        "maxConcurrentDispatches": {
          "type": "integer",
          "description": "The maximum number of concurrent tasks that Cloud Tasks allows to be dispatched for this queue. After this threshold has been reached, Cloud Tasks stops dispatching tasks until the number of concurrent requests decreases. If unspecified when the queue is created, Cloud Tasks will pick the default. The maximum allowed value is 5,000. This field has the same meaning as [max_concurrent_requests in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests)."
        },
        "maxDispatchesPerSecond": {
          "type": "number",
          "description": "The maximum rate at which tasks are dispatched from this queue. If unspecified when the queue is created, Cloud Tasks will pick the default. * For App Engine queues, the maximum allowed value is 500. This field has the same meaning as [rate in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate)."
        }
      },
      "type": "object",
      "required": [
        "maxBurstSize",
        "maxConcurrentDispatches",
        "maxDispatchesPerSecond"
      ]
    },
    "google-native:cloudtasks/v2beta3:RetryConfig": {
      "description": "Retry config. These settings determine when a failed task attempt is retried.",
      "properties": {
        "maxAttempts": {
          "type": "integer",
          "description": "Number of attempts per task. Cloud Tasks will attempt the task `max_attempts` times (that is, if the first attempt fails, then there will be `max_attempts - 1` retries). Must be >= -1. If unspecified when the queue is created, Cloud Tasks will pick the default. -1 indicates unlimited attempts. This field has the same meaning as [task_retry_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_backoff` will be truncated to the nearest second. This field has the same meaning as [max_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A task's retry interval starts at min_backoff, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff up to max_attempts times. For example, if min_backoff is 10s, max_backoff is 300s, and `max_doublings` is 3, then the a task will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the task will retry at intervals of max_backoff until the task has been attempted max_attempts times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... If unspecified when the queue is created, Cloud Tasks will pick the default. This field has the same meaning as [max_doublings in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "If positive, `max_retry_duration` specifies the time limit for retrying a failed task, measured from when the task was first attempted. Once `max_retry_duration` time has passed *and* the task has been attempted max_attempts times, no further attempts will be made and the task will be deleted. If zero, then the task age is unlimited. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For the maximum possible value or the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_retry_duration` will be truncated to the nearest second. This field has the same meaning as [task_age_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "minBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `min_backoff` will be truncated to the nearest second. This field has the same meaning as [min_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:RetryConfigResponse": {
      "description": "Retry config. These settings determine when a failed task attempt is retried.",
      "properties": {
        "maxAttempts": {
          "type": "integer",
          "description": "Number of attempts per task. Cloud Tasks will attempt the task `max_attempts` times (that is, if the first attempt fails, then there will be `max_attempts - 1` retries). Must be >= -1. If unspecified when the queue is created, Cloud Tasks will pick the default. -1 indicates unlimited attempts. This field has the same meaning as [task_retry_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_backoff` will be truncated to the nearest second. This field has the same meaning as [max_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxDoublings": {
          "type": "integer",
          "description": "The time between retries will double `max_doublings` times. A task's retry interval starts at min_backoff, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff up to max_attempts times. For example, if min_backoff is 10s, max_backoff is 300s, and `max_doublings` is 3, then the a task will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the task will retry at intervals of max_backoff until the task has been attempted max_attempts times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... If unspecified when the queue is created, Cloud Tasks will pick the default. This field has the same meaning as [max_doublings in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "maxRetryDuration": {
          "type": "string",
          "description": "If positive, `max_retry_duration` specifies the time limit for retrying a failed task, measured from when the task was first attempted. Once `max_retry_duration` time has passed *and* the task has been attempted max_attempts times, no further attempts will be made and the task will be deleted. If zero, then the task age is unlimited. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For the maximum possible value or the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_retry_duration` will be truncated to the nearest second. This field has the same meaning as [task_age_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        },
        "minBackoff": {
          "type": "string",
          "description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `min_backoff` will be truncated to the nearest second. This field has the same meaning as [min_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters)."
        }
      },
      "type": "object",
      "required": [
        "maxAttempts",
        "maxBackoff",
        "maxDoublings",
        "maxRetryDuration",
        "minBackoff"
      ]
    },
    "google-native:cloudtasks/v2beta3:StackdriverLoggingConfig": {
      "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/).",
      "properties": {
        "samplingRatio": {
          "type": "number",
          "description": "Specifies the fraction of operations to write to [Stackdriver Logging](https://cloud.google.com/logging/docs/). This field may contain any value between 0.0 and 1.0, inclusive. 0.0 is the default and means that no operations are logged."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:StackdriverLoggingConfigResponse": {
      "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/).",
      "properties": {
        "samplingRatio": {
          "type": "number",
          "description": "Specifies the fraction of operations to write to [Stackdriver Logging](https://cloud.google.com/logging/docs/). This field may contain any value between 0.0 and 1.0, inclusive. 0.0 is the default and means that no operations are logged."
        }
      },
      "type": "object",
      "required": [
        "samplingRatio"
      ]
    },
    "google-native:cloudtasks/v2beta3:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:cloudtasks/v2beta3:TaskResponseView": {
      "description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource.",
      "type": "string",
      "enum": [
        {
          "name": "ViewUnspecified",
          "description": "Unspecified. Defaults to BASIC.",
          "value": "VIEW_UNSPECIFIED"
        },
        {
          "name": "Basic",
          "description": "The basic view omits fields which can be large or can contain sensitive data. This view does not include the body in AppEngineHttpRequest. Bodies are desirable to return only when needed, because they can be large and because of the sensitivity of the data that you choose to store in it.",
          "value": "BASIC"
        },
        {
          "name": "Full",
          "description": "All information is returned. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Queue resource.",
          "value": "FULL"
        }
      ]
    },
    "google-native:cloudtasks/v2beta3:UriOverride": {
      "description": "URI Override. When specified, all the HTTP tasks inside the queue will be partially or fully overridden depending on the configured values.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Host override. When specified, replaces the host part of the task URL. For example, if the task URL is \"https://www.google.com,\" and host value is set to \"example.net\", the overridden URI will be changed to \"https://example.net.\" Host value cannot be an empty string (INVALID_ARGUMENT)."
        },
        "pathOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:PathOverride",
          "description": "URI path. When specified, replaces the existing path of the task URL. Setting the path value to an empty string clears the URI path segment."
        },
        "port": {
          "type": "string",
          "description": "Port override. When specified, replaces the port part of the task URI. For instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo. Note that the port value must be a positive integer. Setting the port to 0 (Zero) clears the URI port."
        },
        "queryOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:QueryOverride",
          "description": "URI Query. When specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment."
        },
        "scheme": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:UriOverrideScheme",
          "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS)."
        },
        "uriOverrideEnforceMode": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:UriOverrideUriOverrideEnforceMode",
          "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS."
        }
      },
      "type": "object"
    },
    "google-native:cloudtasks/v2beta3:UriOverrideResponse": {
      "description": "URI Override. When specified, all the HTTP tasks inside the queue will be partially or fully overridden depending on the configured values.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Host override. When specified, replaces the host part of the task URL. For example, if the task URL is \"https://www.google.com,\" and host value is set to \"example.net\", the overridden URI will be changed to \"https://example.net.\" Host value cannot be an empty string (INVALID_ARGUMENT)."
        },
        "pathOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:PathOverrideResponse",
          "description": "URI path. When specified, replaces the existing path of the task URL. Setting the path value to an empty string clears the URI path segment."
        },
        "port": {
          "type": "string",
          "description": "Port override. When specified, replaces the port part of the task URI. For instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo. Note that the port value must be a positive integer. Setting the port to 0 (Zero) clears the URI port."
        },
        "queryOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:QueryOverrideResponse",
          "description": "URI Query. When specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment."
        },
        "scheme": {
          "type": "string",
          "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS)."
        },
        "uriOverrideEnforceMode": {
          "type": "string",
          "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS."
        }
      },
      "type": "object",
      "required": [
        "host",
        "pathOverride",
        "port",
        "queryOverride",
        "scheme",
        "uriOverrideEnforceMode"
      ]
    },
    "google-native:cloudtasks/v2beta3:UriOverrideScheme": {
      "description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS).",
      "type": "string",
      "enum": [
        {
          "name": "SchemeUnspecified",
          "description": "Scheme unspecified. Defaults to HTTPS.",
          "value": "SCHEME_UNSPECIFIED"
        },
        {
          "name": "Http",
          "description": "Convert the scheme to HTTP, e.g., https://www.google.ca will change to http://www.google.ca.",
          "value": "HTTP"
        },
        {
          "name": "Https",
          "description": "Convert the scheme to HTTPS, e.g., http://www.google.ca will change to https://www.google.ca.",
          "value": "HTTPS"
        }
      ]
    },
    "google-native:cloudtasks/v2beta3:UriOverrideUriOverrideEnforceMode": {
      "description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS.",
      "type": "string",
      "enum": [
        {
          "name": "UriOverrideEnforceModeUnspecified",
          "description": "OverrideMode Unspecified. Defaults to ALWAYS.",
          "value": "URI_OVERRIDE_ENFORCE_MODE_UNSPECIFIED"
        },
        {
          "name": "IfNotExists",
          "description": "In the IF_NOT_EXISTS mode, queue-level configuration is only applied where task-level configuration does not exist.",
          "value": "IF_NOT_EXISTS"
        },
        {
          "name": "Always",
          "description": "In the ALWAYS mode, queue-level configuration overrides all task-level configuration",
          "value": "ALWAYS"
        }
      ]
    },
    "google-native:cloudtrace/v2beta1:OutputConfig": {
      "description": "OutputConfig contains a destination for writing trace data.",
      "properties": {
        "destination": {
          "type": "string",
          "description": "The destination for writing trace data. Supported formats include: \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\""
        }
      },
      "type": "object"
    },
    "google-native:cloudtrace/v2beta1:OutputConfigResponse": {
      "description": "OutputConfig contains a destination for writing trace data.",
      "properties": {
        "destination": {
          "type": "string",
          "description": "The destination for writing trace data. Supported formats include: \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\""
        }
      },
      "type": "object",
      "required": [
        "destination"
      ]
    },
    "google-native:composer/v1:AllowedIpRange": {
      "description": "Allowed IP range with user-provided description.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description. It must contain at most 300 characters."
        },
        "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`."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:AllowedIpRangeResponse": {
      "description": "Allowed IP range with user-provided description.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description. It must contain at most 300 characters."
        },
        "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`."
        }
      },
      "type": "object",
      "required": [
        "description",
        "value"
      ]
    },
    "google-native:composer/v1:CidrBlock": {
      "description": "CIDR block with an optional name.",
      "properties": {
        "cidrBlock": {
          "type": "string",
          "description": "CIDR block that must be specified in CIDR notation."
        },
        "displayName": {
          "type": "string",
          "description": "User-defined name that identifies the CIDR block."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:CidrBlockResponse": {
      "description": "CIDR block with an optional name.",
      "properties": {
        "cidrBlock": {
          "type": "string",
          "description": "CIDR block that must be specified in CIDR notation."
        },
        "displayName": {
          "type": "string",
          "description": "User-defined name that identifies the CIDR block."
        }
      },
      "type": "object",
      "required": [
        "cidrBlock",
        "displayName"
      ]
    },
    "google-native:composer/v1:DatabaseConfig": {
      "description": "The configuration of Cloud SQL instance that is used by the Apache Airflow software.",
      "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. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The Compute Engine zone where the Airflow database is created. If zone is provided, it must be in the region selected for the environment. If zone is not provided, a zone is automatically selected. The zone can only be set during environment creation. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.*."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:DatabaseConfigResponse": {
      "description": "The configuration of Cloud SQL instance that is used by the Apache Airflow software.",
      "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. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The Compute Engine zone where the Airflow database is created. If zone is provided, it must be in the region selected for the environment. If zone is not provided, a zone is automatically selected. The zone can only be set during environment creation. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.*."
        }
      },
      "type": "object",
      "required": [
        "machineType",
        "zone"
      ]
    },
    "google-native:composer/v1:EncryptionConfig": {
      "description": "The encryption options for the Cloud Composer environment and its dependencies.Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated. If not specified, Google-managed key will be used."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:EncryptionConfigResponse": {
      "description": "The encryption options for the Cloud Composer environment and its dependencies.Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated. If not specified, Google-managed key will be used."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:composer/v1:EnvironmentConfig": {
      "description": "Configuration information for an environment.",
      "properties": {
        "databaseConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:DatabaseConfig",
          "description": "Optional. The configuration settings for Cloud SQL instance used internally by Apache Airflow software."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:EncryptionConfig",
          "description": "Optional. The encryption options for the Cloud Composer environment and its dependencies. Cannot be updated."
        },
        "environmentSize": {
          "$ref": "#/types/google-native:composer%2Fv1:EnvironmentConfigEnvironmentSize",
          "description": "Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:composer%2Fv1:MaintenanceWindow",
          "description": "Optional. The maintenance window is the period when Cloud Composer components may undergo maintenance. It is defined so that maintenance is not executed during peak hours or critical time periods. The system will not be under maintenance for every occurrence of this window, but when maintenance is planned, it will be scheduled during the window. The maintenance window period must encompass at least 12 hours per week. This may be split into multiple chunks, each with a size of at least 4 hours. If this value is omitted, the default value for maintenance window will be applied. The default value is Saturday and Sunday 00-06 GMT."
        },
        "masterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:MasterAuthorizedNetworksConfig",
          "description": "Optional. The configuration options for GKE cluster master authorized networks. By default master authorized networks feature is: - in case of private environment: enabled with no external networks allowlisted. - in case of public environment: disabled."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:NodeConfig",
          "description": "The configuration used for the Kubernetes Engine cluster."
        },
        "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-*.*.*."
        },
        "privateEnvironmentConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:PrivateEnvironmentConfig",
          "description": "The configuration used for the Private IP Cloud Composer environment."
        },
        "recoveryConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:RecoveryConfig",
          "description": "Optional. The Recovery settings configuration of an environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "resilienceMode": {
          "$ref": "#/types/google-native:composer%2Fv1:EnvironmentConfigResilienceMode",
          "description": "Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:SoftwareConfig",
          "description": "The configuration settings for software inside the environment."
        },
        "webServerConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:WebServerConfig",
          "description": "Optional. The configuration settings for the Airflow web server App Engine instance."
        },
        "webServerNetworkAccessControl": {
          "$ref": "#/types/google-native:composer%2Fv1:WebServerNetworkAccessControl",
          "description": "Optional. The network-level access control policy for the Airflow web server. If unspecified, no network-level access restrictions will be applied."
        },
        "workloadsConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:WorkloadsConfig",
          "description": "Optional. The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. The GKE cluster runs Airflow scheduler, web server and workers workloads. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:EnvironmentConfigEnvironmentSize": {
      "description": "Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.",
      "type": "string",
      "enum": [
        {
          "name": "EnvironmentSizeUnspecified",
          "description": "The size of the environment is unspecified.",
          "value": "ENVIRONMENT_SIZE_UNSPECIFIED"
        },
        {
          "name": "EnvironmentSizeSmall",
          "description": "The environment size is small.",
          "value": "ENVIRONMENT_SIZE_SMALL"
        },
        {
          "name": "EnvironmentSizeMedium",
          "description": "The environment size is medium.",
          "value": "ENVIRONMENT_SIZE_MEDIUM"
        },
        {
          "name": "EnvironmentSizeLarge",
          "description": "The environment size is large.",
          "value": "ENVIRONMENT_SIZE_LARGE"
        }
      ]
    },
    "google-native:composer/v1:EnvironmentConfigResilienceMode": {
      "description": "Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer.",
      "type": "string",
      "enum": [
        {
          "name": "ResilienceModeUnspecified",
          "description": "Default mode doesn't change environment parameters.",
          "value": "RESILIENCE_MODE_UNSPECIFIED"
        },
        {
          "name": "HighResilience",
          "description": "Enabled High Resilience mode, including Cloud SQL HA.",
          "value": "HIGH_RESILIENCE"
        }
      ]
    },
    "google-native:composer/v1:EnvironmentConfigResponse": {
      "description": "Configuration information for an environment.",
      "properties": {
        "airflowByoidUri": {
          "type": "string",
          "description": "The 'bring your own identity' variant of the URI of the Apache Airflow Web UI hosted within this environment, to be accessed with external identities using workforce identity federation (see [Access environments with workforce identity federation](/composer/docs/composer-2/access-environments-with-workforce-identity-federation))."
        },
        "airflowUri": {
          "type": "string",
          "description": "The URI of the Apache Airflow Web UI hosted within this environment (see [Airflow web interface](/composer/docs/how-to/accessing/airflow-web-interface))."
        },
        "dagGcsPrefix": {
          "type": "string",
          "description": "The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using \"/\"-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with the given prefix."
        },
        "databaseConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:DatabaseConfigResponse",
          "description": "Optional. The configuration settings for Cloud SQL instance used internally by Apache Airflow software."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:EncryptionConfigResponse",
          "description": "Optional. The encryption options for the Cloud Composer environment and its dependencies. Cannot be updated."
        },
        "environmentSize": {
          "type": "string",
          "description": "Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "gkeCluster": {
          "type": "string",
          "description": "The Kubernetes Engine cluster used to run this environment."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:composer%2Fv1:MaintenanceWindowResponse",
          "description": "Optional. The maintenance window is the period when Cloud Composer components may undergo maintenance. It is defined so that maintenance is not executed during peak hours or critical time periods. The system will not be under maintenance for every occurrence of this window, but when maintenance is planned, it will be scheduled during the window. The maintenance window period must encompass at least 12 hours per week. This may be split into multiple chunks, each with a size of at least 4 hours. If this value is omitted, the default value for maintenance window will be applied. The default value is Saturday and Sunday 00-06 GMT."
        },
        "masterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:MasterAuthorizedNetworksConfigResponse",
          "description": "Optional. The configuration options for GKE cluster master authorized networks. By default master authorized networks feature is: - in case of private environment: enabled with no external networks allowlisted. - in case of public environment: disabled."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:NodeConfigResponse",
          "description": "The configuration used for the Kubernetes Engine cluster."
        },
        "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-*.*.*."
        },
        "privateEnvironmentConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:PrivateEnvironmentConfigResponse",
          "description": "The configuration used for the Private IP Cloud Composer environment."
        },
        "recoveryConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:RecoveryConfigResponse",
          "description": "Optional. The Recovery settings configuration of an environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "resilienceMode": {
          "type": "string",
          "description": "Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:SoftwareConfigResponse",
          "description": "The configuration settings for software inside the environment."
        },
        "webServerConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:WebServerConfigResponse",
          "description": "Optional. The configuration settings for the Airflow web server App Engine instance."
        },
        "webServerNetworkAccessControl": {
          "$ref": "#/types/google-native:composer%2Fv1:WebServerNetworkAccessControlResponse",
          "description": "Optional. The network-level access control policy for the Airflow web server. If unspecified, no network-level access restrictions will be applied."
        },
        "workloadsConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:WorkloadsConfigResponse",
          "description": "Optional. The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. The GKE cluster runs Airflow scheduler, web server and workers workloads. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        }
      },
      "type": "object",
      "required": [
        "airflowByoidUri",
        "airflowUri",
        "dagGcsPrefix",
        "databaseConfig",
        "encryptionConfig",
        "environmentSize",
        "gkeCluster",
        "maintenanceWindow",
        "masterAuthorizedNetworksConfig",
        "nodeConfig",
        "nodeCount",
        "privateEnvironmentConfig",
        "recoveryConfig",
        "resilienceMode",
        "softwareConfig",
        "webServerConfig",
        "webServerNetworkAccessControl",
        "workloadsConfig"
      ]
    },
    "google-native:composer/v1:EnvironmentState": {
      "description": "The current state of the environment.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The state of the environment is unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Creating",
          "description": "The environment is in the process of being created.",
          "value": "CREATING"
        },
        {
          "name": "Running",
          "description": "The environment is currently running and healthy. It is ready for use.",
          "value": "RUNNING"
        },
        {
          "name": "Updating",
          "description": "The environment is being updated. It remains usable but cannot receive additional update requests or be deleted at this time.",
          "value": "UPDATING"
        },
        {
          "name": "Deleting",
          "description": "The environment is undergoing deletion. It cannot be used.",
          "value": "DELETING"
        },
        {
          "name": "Error",
          "description": "The environment has encountered an error and cannot be used.",
          "value": "ERROR"
        }
      ]
    },
    "google-native:composer/v1:IPAllocationPolicy": {
      "description": "Configuration for controlling how IPs are allocated in the GKE cluster running the Apache Airflow software.",
      "properties": {
        "clusterIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The IP address range used to allocate IP addresses to pods in the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is 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](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "clusterSecondaryRangeName": {
          "type": "string",
          "description": "Optional. The name of the GKE cluster's secondary range used to allocate IP addresses to pods. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true."
        },
        "servicesIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The IP address range of the services IP addresses in this GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is 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](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "servicesSecondaryRangeName": {
          "type": "string",
          "description": "Optional. The name of the services' secondary range used to allocate IP addresses to the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true."
        },
        "useIpAliases": {
          "type": "boolean",
          "description": "Optional. Whether or not to enable Alias IPs in the GKE cluster. If `true`, a VPC-native cluster is created. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:IPAllocationPolicyResponse": {
      "description": "Configuration for controlling how IPs are allocated in the GKE cluster running the Apache Airflow software.",
      "properties": {
        "clusterIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The IP address range used to allocate IP addresses to pods in the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is 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](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "clusterSecondaryRangeName": {
          "type": "string",
          "description": "Optional. The name of the GKE cluster's secondary range used to allocate IP addresses to pods. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true."
        },
        "servicesIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The IP address range of the services IP addresses in this GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is 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](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "servicesSecondaryRangeName": {
          "type": "string",
          "description": "Optional. The name of the services' secondary range used to allocate IP addresses to the GKE cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true."
        },
        "useIpAliases": {
          "type": "boolean",
          "description": "Optional. Whether or not to enable Alias IPs in the GKE cluster. If `true`, a VPC-native cluster is created. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters."
        }
      },
      "type": "object",
      "required": [
        "clusterIpv4CidrBlock",
        "clusterSecondaryRangeName",
        "servicesIpv4CidrBlock",
        "servicesSecondaryRangeName",
        "useIpAliases"
      ]
    },
    "google-native:composer/v1:MaintenanceWindow": {
      "description": "The configuration settings for Cloud Composer maintenance window. The following example: ``` { \"startTime\":\"2019-08-01T01:00:00Z\" \"endTime\":\"2019-08-01T07:00:00Z\" \"recurrence\":\"FREQ=WEEKLY;BYDAY=TU,WE\" } ``` would define a maintenance window between 01 and 07 hours UTC during each Tuesday and Wednesday.",
      "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`."
        },
        "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`."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the first recurrence of the maintenance window."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "recurrence",
        "startTime"
      ]
    },
    "google-native:composer/v1:MaintenanceWindowResponse": {
      "description": "The configuration settings for Cloud Composer maintenance window. The following example: ``` { \"startTime\":\"2019-08-01T01:00:00Z\" \"endTime\":\"2019-08-01T07:00:00Z\" \"recurrence\":\"FREQ=WEEKLY;BYDAY=TU,WE\" } ``` would define a maintenance window between 01 and 07 hours UTC during each Tuesday and Wednesday.",
      "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`."
        },
        "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`."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the first recurrence of the maintenance window."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "recurrence",
        "startTime"
      ]
    },
    "google-native:composer/v1:MasterAuthorizedNetworksConfig": {
      "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.",
      "properties": {
        "cidrBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:composer%2Fv1:CidrBlock"
          },
          "description": "Up to 50 external networks that could access Kubernetes master through HTTPS."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not master authorized networks feature is enabled."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:MasterAuthorizedNetworksConfigResponse": {
      "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.",
      "properties": {
        "cidrBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:composer%2Fv1:CidrBlockResponse"
          },
          "description": "Up to 50 external networks that could access Kubernetes master through HTTPS."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not master authorized networks feature is enabled."
        }
      },
      "type": "object",
      "required": [
        "cidrBlocks",
        "enabled"
      ]
    },
    "google-native:composer/v1:NetworkingConfig": {
      "description": "Configuration options for networking connections in the Composer 2 environment.",
      "properties": {
        "connectionType": {
          "$ref": "#/types/google-native:composer%2Fv1:NetworkingConfigConnectionType",
          "description": "Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:NetworkingConfigConnectionType": {
      "description": "Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectionTypeUnspecified",
          "description": "No specific connection type was requested, so the environment uses the default value corresponding to the rest of its configuration.",
          "value": "CONNECTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "VpcPeering",
          "description": "Requests the use of VPC peerings for connecting the Customer and Tenant projects.",
          "value": "VPC_PEERING"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "Requests the use of Private Service Connect for connecting the Customer and Tenant projects.",
          "value": "PRIVATE_SERVICE_CONNECT"
        }
      ]
    },
    "google-native:composer/v1:NetworkingConfigResponse": {
      "description": "Configuration options for networking connections in the Composer 2 environment.",
      "properties": {
        "connectionType": {
          "type": "string",
          "description": "Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment."
        }
      },
      "type": "object",
      "required": [
        "connectionType"
      ]
    },
    "google-native:composer/v1:NodeConfig": {
      "description": "The configuration information for the Kubernetes Engine nodes running the Apache Airflow software.",
      "properties": {
        "diskSizeGb": {
          "type": "integer",
          "description": "Optional. The disk size in GB used for node VMs. Minimum size is 30GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "enableIpMasqAgent": {
          "type": "boolean",
          "description": "Optional. 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"
        },
        "ipAllocationPolicy": {
          "$ref": "#/types/google-native:composer%2Fv1:IPAllocationPolicy",
          "description": "Optional. The configuration for controlling how IPs are allocated in the GKE cluster."
        },
        "location": {
          "type": "string",
          "description": "Optional. The Compute Engine [zone](/compute/docs/regions-zones) in which to deploy the VMs used to run the Apache Airflow software, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/zones/{zoneId}\". This `location` must belong to the enclosing environment's project and location. If both this field and `nodeConfig.machineType` are specified, `nodeConfig.machineType` must belong to this `location`; if both are unspecified, the service will pick a zone in the Compute Engine region corresponding to the Cloud Composer location, and propagate that choice to both fields. If only one field (`location` or `nodeConfig.machineType`) is specified, the location information from the specified field will be propagated to the unspecified field. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The Compute Engine [machine type](/compute/docs/machine-types) used for cluster instances, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/zones/{zoneId}/machineTypes/{machineTypeId}\". The `machineType` must belong to the enclosing environment's project and location. If both this field and `nodeConfig.location` are specified, this `machineType` must belong to the `nodeConfig.location`; if both are unspecified, the service will pick a zone in the Compute Engine region corresponding to the Cloud Composer location, and propagate that choice to both fields. If exactly one of this field and `nodeConfig.location` is specified, the location information from the specified field will be propagated to the unspecified field. The `machineTypeId` must not be a [shared-core machine type](/compute/docs/machine-types#sharedcore). If this field is unspecified, the `machineTypeId` defaults to \"n1-standard-1\". This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "network": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/global/networks/{networkId}\". If unspecified, the \"default\" network ID in the environment's project is used. If a [Custom Subnet Network](/vpc/docs/vpc#vpc_networks_and_subnets) is provided, `nodeConfig.subnetwork` must also be provided. For [Shared VPC](/vpc/docs/shared-vpc) subnetwork requirements, see `nodeConfig.subnetwork`."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of Google API scopes to be made available on all node VMs. If `oauth_scopes` is empty, defaults to [\"https://www.googleapis.com/auth/cloud-platform\"]. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. 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."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/regions/{regionId}/subnetworks/{subnetworkId}\" If a subnetwork is provided, `nodeConfig.network` must also be provided, and the subnetwork must belong to the enclosing environment's project and location."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. 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](https://www.ietf.org/rfc/rfc1035.txt). Cannot be updated."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:NodeConfigResponse": {
      "description": "The configuration information for the Kubernetes Engine nodes running the Apache Airflow software.",
      "properties": {
        "diskSizeGb": {
          "type": "integer",
          "description": "Optional. The disk size in GB used for node VMs. Minimum size is 30GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "enableIpMasqAgent": {
          "type": "boolean",
          "description": "Optional. 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"
        },
        "ipAllocationPolicy": {
          "$ref": "#/types/google-native:composer%2Fv1:IPAllocationPolicyResponse",
          "description": "Optional. The configuration for controlling how IPs are allocated in the GKE cluster."
        },
        "location": {
          "type": "string",
          "description": "Optional. The Compute Engine [zone](/compute/docs/regions-zones) in which to deploy the VMs used to run the Apache Airflow software, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/zones/{zoneId}\". This `location` must belong to the enclosing environment's project and location. If both this field and `nodeConfig.machineType` are specified, `nodeConfig.machineType` must belong to this `location`; if both are unspecified, the service will pick a zone in the Compute Engine region corresponding to the Cloud Composer location, and propagate that choice to both fields. If only one field (`location` or `nodeConfig.machineType`) is specified, the location information from the specified field will be propagated to the unspecified field. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The Compute Engine [machine type](/compute/docs/machine-types) used for cluster instances, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/zones/{zoneId}/machineTypes/{machineTypeId}\". The `machineType` must belong to the enclosing environment's project and location. If both this field and `nodeConfig.location` are specified, this `machineType` must belong to the `nodeConfig.location`; if both are unspecified, the service will pick a zone in the Compute Engine region corresponding to the Cloud Composer location, and propagate that choice to both fields. If exactly one of this field and `nodeConfig.location` is specified, the location information from the specified field will be propagated to the unspecified field. The `machineTypeId` must not be a [shared-core machine type](/compute/docs/machine-types#sharedcore). If this field is unspecified, the `machineTypeId` defaults to \"n1-standard-1\". This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "network": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/global/networks/{networkId}\". If unspecified, the \"default\" network ID in the environment's project is used. If a [Custom Subnet Network](/vpc/docs/vpc#vpc_networks_and_subnets) is provided, `nodeConfig.subnetwork` must also be provided. For [Shared VPC](/vpc/docs/shared-vpc) subnetwork requirements, see `nodeConfig.subnetwork`."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of Google API scopes to be made available on all node VMs. If `oauth_scopes` is empty, defaults to [\"https://www.googleapis.com/auth/cloud-platform\"]. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. 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."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/regions/{regionId}/subnetworks/{subnetworkId}\" If a subnetwork is provided, `nodeConfig.network` must also be provided, and the subnetwork must belong to the enclosing environment's project and location."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. 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](https://www.ietf.org/rfc/rfc1035.txt). Cannot be updated."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "enableIpMasqAgent",
        "ipAllocationPolicy",
        "location",
        "machineType",
        "network",
        "oauthScopes",
        "serviceAccount",
        "subnetwork",
        "tags"
      ]
    },
    "google-native:composer/v1:PrivateClusterConfig": {
      "description": "Configuration options for the private GKE cluster in a Cloud Composer environment.",
      "properties": {
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Optional. If `true`, access to the public endpoint of the GKE cluster is denied."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The CIDR block from which IPv4 range for GKE master will be reserved. If left blank, the default value of '172.16.0.0/23' is used."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:PrivateClusterConfigResponse": {
      "description": "Configuration options for the private GKE cluster in a Cloud Composer environment.",
      "properties": {
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Optional. If `true`, access to the public endpoint of the GKE cluster is denied."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The CIDR block from which IPv4 range for GKE master will be reserved. If left blank, the default value of '172.16.0.0/23' is used."
        },
        "masterIpv4ReservedRange": {
          "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 GKE 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."
        }
      },
      "type": "object",
      "required": [
        "enablePrivateEndpoint",
        "masterIpv4CidrBlock",
        "masterIpv4ReservedRange"
      ]
    },
    "google-native:composer/v1:PrivateEnvironmentConfig": {
      "description": "The configuration information for configuring a Private IP Cloud Composer environment.",
      "properties": {
        "cloudComposerConnectionSubnetwork": {
          "type": "string",
          "description": "Optional. 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."
        },
        "cloudComposerNetworkIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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."
        },
        "cloudSqlIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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`."
        },
        "enablePrivateEnvironment": {
          "type": "boolean",
          "description": "Optional. If `true`, a Private IP Cloud Composer environment is created. If this field is set to true, `IPAllocationPolicy.use_ip_aliases` must be set to true for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "enablePrivatelyUsedPublicIps": {
          "type": "boolean",
          "description": "Optional. When enabled, IPs from public (non-RFC1918) ranges can be used for `IPAllocationPolicy.cluster_ipv4_cidr_block` and `IPAllocationPolicy.service_ipv4_cidr_block`."
        },
        "networkingConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:NetworkingConfig",
          "description": "Optional. Configuration for the network connections configuration in the environment."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:PrivateClusterConfig",
          "description": "Optional. Configuration for the private GKE cluster for a Private IP Cloud Composer environment."
        },
        "webServerIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The CIDR block from which IP range for web server 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-1.*.*-airflow-*.*.*."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:PrivateEnvironmentConfigResponse": {
      "description": "The configuration information for configuring a Private IP Cloud Composer environment.",
      "properties": {
        "cloudComposerConnectionSubnetwork": {
          "type": "string",
          "description": "Optional. 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."
        },
        "cloudComposerNetworkIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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."
        },
        "cloudComposerNetworkIpv4ReservedRange": {
          "type": "string",
          "description": "The IP range reserved for the tenant project's Cloud Composer network. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "cloudSqlIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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`."
        },
        "enablePrivateEnvironment": {
          "type": "boolean",
          "description": "Optional. If `true`, a Private IP Cloud Composer environment is created. If this field is set to true, `IPAllocationPolicy.use_ip_aliases` must be set to true for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "enablePrivatelyUsedPublicIps": {
          "type": "boolean",
          "description": "Optional. When enabled, IPs from public (non-RFC1918) ranges can be used for `IPAllocationPolicy.cluster_ipv4_cidr_block` and `IPAllocationPolicy.service_ipv4_cidr_block`."
        },
        "networkingConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:NetworkingConfigResponse",
          "description": "Optional. Configuration for the network connections configuration in the environment."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:PrivateClusterConfigResponse",
          "description": "Optional. Configuration for the private GKE cluster for a Private IP Cloud Composer environment."
        },
        "webServerIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The CIDR block from which IP range for web server 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-1.*.*-airflow-*.*.*."
        },
        "webServerIpv4ReservedRange": {
          "type": "string",
          "description": "The IP range reserved for the tenant project's App Engine VMs. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        }
      },
      "type": "object",
      "required": [
        "cloudComposerConnectionSubnetwork",
        "cloudComposerNetworkIpv4CidrBlock",
        "cloudComposerNetworkIpv4ReservedRange",
        "cloudSqlIpv4CidrBlock",
        "enablePrivateEnvironment",
        "enablePrivatelyUsedPublicIps",
        "networkingConfig",
        "privateClusterConfig",
        "webServerIpv4CidrBlock",
        "webServerIpv4ReservedRange"
      ]
    },
    "google-native:composer/v1:RecoveryConfig": {
      "description": "The Recovery settings of an environment.",
      "properties": {
        "scheduledSnapshotsConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:ScheduledSnapshotsConfig",
          "description": "Optional. The configuration for scheduled snapshot creation mechanism."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:RecoveryConfigResponse": {
      "description": "The Recovery settings of an environment.",
      "properties": {
        "scheduledSnapshotsConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:ScheduledSnapshotsConfigResponse",
          "description": "Optional. The configuration for scheduled snapshot creation mechanism."
        }
      },
      "type": "object",
      "required": [
        "scheduledSnapshotsConfig"
      ]
    },
    "google-native:composer/v1:ScheduledSnapshotsConfig": {
      "description": "The configuration for scheduled snapshot creation mechanism.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether scheduled snapshots creation is enabled."
        },
        "snapshotCreationSchedule": {
          "type": "string",
          "description": "Optional. The cron expression representing the time when snapshots creation mechanism runs. This field is subject to additional validation around frequency of execution."
        },
        "snapshotLocation": {
          "type": "string",
          "description": "Optional. The Cloud Storage location for storing automatically created snapshots."
        },
        "timeZone": {
          "type": "string",
          "description": "Optional. Time zone that sets the context to interpret snapshot_creation_schedule."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:ScheduledSnapshotsConfigResponse": {
      "description": "The configuration for scheduled snapshot creation mechanism.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether scheduled snapshots creation is enabled."
        },
        "snapshotCreationSchedule": {
          "type": "string",
          "description": "Optional. The cron expression representing the time when snapshots creation mechanism runs. This field is subject to additional validation around frequency of execution."
        },
        "snapshotLocation": {
          "type": "string",
          "description": "Optional. The Cloud Storage location for storing automatically created snapshots."
        },
        "timeZone": {
          "type": "string",
          "description": "Optional. Time zone that sets the context to interpret snapshot_creation_schedule."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "snapshotCreationSchedule",
        "snapshotLocation",
        "timeZone"
      ]
    },
    "google-native:composer/v1:SchedulerResource": {
      "description": "Configuration for resources used by Airflow schedulers.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. The number of schedulers."
        },
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow scheduler replica."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow scheduler replica."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for a single Airflow scheduler replica."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:SchedulerResourceResponse": {
      "description": "Configuration for resources used by Airflow schedulers.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. The number of schedulers."
        },
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow scheduler replica."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow scheduler replica."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for a single Airflow scheduler replica."
        }
      },
      "type": "object",
      "required": [
        "count",
        "cpu",
        "memoryGb",
        "storageGb"
      ]
    },
    "google-native:composer/v1:SoftwareConfig": {
      "description": "Specifies the selection and configuration of software inside the environment.",
      "properties": {
        "airflowConfigOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. 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 must not contain an equals sign (\"=\") or semicolon (\";\"). Section and property names must not contain a period (\".\"). Apache Airflow configuration property names must be written in [snake_case](https://en.wikipedia.org/wiki/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 [blocked](/composer/docs/concepts/airflow-configurations), and cannot be overridden."
        },
        "envVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. 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_*`. 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`"
        },
        "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]+)?)?)`. When used as input, the server also checks if the provided version is supported and denies the request for an unsupported version. The Cloud Composer portion of the image version is a full [semantic version](https://semver.org), or an alias in the form of major version number or `latest`. When an alias is provided, the server replaces it with the current Cloud Composer version that satisfies the alias. 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. When an alias is provided, the server replaces it with the latest Apache Airflow version that satisfies the alias and is supported in the given Cloud Composer version. In all cases, the resolved image version is stored in the same field. See also [version list](/composer/docs/concepts/versioning/composer-versions) and [versioning overview](/composer/docs/concepts/versioning/composer-versioning-overview)."
        },
        "pypiPackages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name such as \"numpy\" and values are the lowercase extras and version specifier such as \"==1.12.0\", \"[devel,gcp_api]\", or \"[devel]>=1.8.2, <1.9.2\". To specify a package without pinning it to a version specifier, use the empty string as the value."
        },
        "pythonVersion": {
          "type": "string",
          "description": "Optional. 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 '3'. Cannot be updated. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3."
        },
        "schedulerCount": {
          "type": "integer",
          "description": "Optional. The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:SoftwareConfigResponse": {
      "description": "Specifies the selection and configuration of software inside the environment.",
      "properties": {
        "airflowConfigOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. 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 must not contain an equals sign (\"=\") or semicolon (\";\"). Section and property names must not contain a period (\".\"). Apache Airflow configuration property names must be written in [snake_case](https://en.wikipedia.org/wiki/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 [blocked](/composer/docs/concepts/airflow-configurations), and cannot be overridden."
        },
        "envVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. 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_*`. 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`"
        },
        "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]+)?)?)`. When used as input, the server also checks if the provided version is supported and denies the request for an unsupported version. The Cloud Composer portion of the image version is a full [semantic version](https://semver.org), or an alias in the form of major version number or `latest`. When an alias is provided, the server replaces it with the current Cloud Composer version that satisfies the alias. 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. When an alias is provided, the server replaces it with the latest Apache Airflow version that satisfies the alias and is supported in the given Cloud Composer version. In all cases, the resolved image version is stored in the same field. See also [version list](/composer/docs/concepts/versioning/composer-versions) and [versioning overview](/composer/docs/concepts/versioning/composer-versioning-overview)."
        },
        "pypiPackages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name such as \"numpy\" and values are the lowercase extras and version specifier such as \"==1.12.0\", \"[devel,gcp_api]\", or \"[devel]>=1.8.2, <1.9.2\". To specify a package without pinning it to a version specifier, use the empty string as the value."
        },
        "pythonVersion": {
          "type": "string",
          "description": "Optional. 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 '3'. Cannot be updated. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3."
        },
        "schedulerCount": {
          "type": "integer",
          "description": "Optional. The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*."
        }
      },
      "type": "object",
      "required": [
        "airflowConfigOverrides",
        "envVariables",
        "imageVersion",
        "pypiPackages",
        "pythonVersion",
        "schedulerCount"
      ]
    },
    "google-native:composer/v1:StorageConfig": {
      "description": "The configuration for data storage in the environment.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Optional. The name of the Cloud Storage bucket used by the environment. No `gs://` prefix."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:StorageConfigResponse": {
      "description": "The configuration for data storage in the environment.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Optional. The name of the Cloud Storage bucket used by the environment. No `gs://` prefix."
        }
      },
      "type": "object",
      "required": [
        "bucket"
      ]
    },
    "google-native:composer/v1:TriggererResource": {
      "description": "Configuration for resources used by Airflow triggerers.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. The number of triggerers."
        },
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow triggerer replica."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow triggerer replica."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:TriggererResourceResponse": {
      "description": "Configuration for resources used by Airflow triggerers.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. The number of triggerers."
        },
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow triggerer replica."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow triggerer replica."
        }
      },
      "type": "object",
      "required": [
        "count",
        "cpu",
        "memoryGb"
      ]
    },
    "google-native:composer/v1:WebServerConfig": {
      "description": "The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*",
      "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."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:WebServerConfigResponse": {
      "description": "The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*",
      "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."
        }
      },
      "type": "object",
      "required": [
        "machineType"
      ]
    },
    "google-native:composer/v1:WebServerNetworkAccessControl": {
      "description": "Network-level access control policy for the Airflow web server.",
      "properties": {
        "allowedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:composer%2Fv1:AllowedIpRange"
          },
          "description": "A collection of allowed IP ranges with descriptions."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:WebServerNetworkAccessControlResponse": {
      "description": "Network-level access control policy for the Airflow web server.",
      "properties": {
        "allowedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:composer%2Fv1:AllowedIpRangeResponse"
          },
          "description": "A collection of allowed IP ranges with descriptions."
        }
      },
      "type": "object",
      "required": [
        "allowedIpRanges"
      ]
    },
    "google-native:composer/v1:WebServerResource": {
      "description": "Configuration for resources used by Airflow web server.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for Airflow web server."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for Airflow web server."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for Airflow web server."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:WebServerResourceResponse": {
      "description": "Configuration for resources used by Airflow web server.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for Airflow web server."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for Airflow web server."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for Airflow web server."
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "memoryGb",
        "storageGb"
      ]
    },
    "google-native:composer/v1:WorkerResource": {
      "description": "Configuration for resources used by Airflow workers.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow worker replica."
        },
        "maxCount": {
          "type": "integer",
          "description": "Optional. Maximum number of workers for autoscaling."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow worker replica."
        },
        "minCount": {
          "type": "integer",
          "description": "Optional. Minimum number of workers for autoscaling."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for a single Airflow worker replica."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:WorkerResourceResponse": {
      "description": "Configuration for resources used by Airflow workers.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow worker replica."
        },
        "maxCount": {
          "type": "integer",
          "description": "Optional. Maximum number of workers for autoscaling."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow worker replica."
        },
        "minCount": {
          "type": "integer",
          "description": "Optional. Minimum number of workers for autoscaling."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for a single Airflow worker replica."
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "maxCount",
        "memoryGb",
        "minCount",
        "storageGb"
      ]
    },
    "google-native:composer/v1:WorkloadsConfig": {
      "description": "The Kubernetes workloads configuration for GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.",
      "properties": {
        "scheduler": {
          "$ref": "#/types/google-native:composer%2Fv1:SchedulerResource",
          "description": "Optional. Resources used by Airflow schedulers."
        },
        "triggerer": {
          "$ref": "#/types/google-native:composer%2Fv1:TriggererResource",
          "description": "Optional. Resources used by Airflow triggerers."
        },
        "webServer": {
          "$ref": "#/types/google-native:composer%2Fv1:WebServerResource",
          "description": "Optional. Resources used by Airflow web server."
        },
        "worker": {
          "$ref": "#/types/google-native:composer%2Fv1:WorkerResource",
          "description": "Optional. Resources used by Airflow workers."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1:WorkloadsConfigResponse": {
      "description": "The Kubernetes workloads configuration for GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.",
      "properties": {
        "scheduler": {
          "$ref": "#/types/google-native:composer%2Fv1:SchedulerResourceResponse",
          "description": "Optional. Resources used by Airflow schedulers."
        },
        "triggerer": {
          "$ref": "#/types/google-native:composer%2Fv1:TriggererResourceResponse",
          "description": "Optional. Resources used by Airflow triggerers."
        },
        "webServer": {
          "$ref": "#/types/google-native:composer%2Fv1:WebServerResourceResponse",
          "description": "Optional. Resources used by Airflow web server."
        },
        "worker": {
          "$ref": "#/types/google-native:composer%2Fv1:WorkerResourceResponse",
          "description": "Optional. Resources used by Airflow workers."
        }
      },
      "type": "object",
      "required": [
        "scheduler",
        "triggerer",
        "webServer",
        "worker"
      ]
    },
    "google-native:composer/v1beta1:AllowedIpRange": {
      "description": "Allowed IP range with user-provided description.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description. It must contain at most 300 characters."
        },
        "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`."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:AllowedIpRangeResponse": {
      "description": "Allowed IP range with user-provided description.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description. It must contain at most 300 characters."
        },
        "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`."
        }
      },
      "type": "object",
      "required": [
        "description",
        "value"
      ]
    },
    "google-native:composer/v1beta1:CidrBlock": {
      "description": "CIDR block with an optional name.",
      "properties": {
        "cidrBlock": {
          "type": "string",
          "description": "CIDR block that must be specified in CIDR notation."
        },
        "displayName": {
          "type": "string",
          "description": "User-defined name that identifies the CIDR block."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:CidrBlockResponse": {
      "description": "CIDR block with an optional name.",
      "properties": {
        "cidrBlock": {
          "type": "string",
          "description": "CIDR block that must be specified in CIDR notation."
        },
        "displayName": {
          "type": "string",
          "description": "User-defined name that identifies the CIDR block."
        }
      },
      "type": "object",
      "required": [
        "cidrBlock",
        "displayName"
      ]
    },
    "google-native:composer/v1beta1:CloudDataLineageIntegration": {
      "description": "Configuration for Cloud Data Lineage integration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether or not Cloud Data Lineage integration is enabled."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:CloudDataLineageIntegrationResponse": {
      "description": "Configuration for Cloud Data Lineage integration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether or not Cloud Data Lineage integration is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:composer/v1beta1:DatabaseConfig": {
      "description": "The configuration of Cloud SQL instance that is used by the Apache Airflow software.",
      "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. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The Compute Engine zone where the Airflow database is created. If zone is provided, it must be in the region selected for the environment. If zone is not provided, a zone is automatically selected. The zone can only be set during environment creation. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.*."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:DatabaseConfigResponse": {
      "description": "The configuration of Cloud SQL instance that is used by the Apache Airflow software.",
      "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. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The Compute Engine zone where the Airflow database is created. If zone is provided, it must be in the region selected for the environment. If zone is not provided, a zone is automatically selected. The zone can only be set during environment creation. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.*."
        }
      },
      "type": "object",
      "required": [
        "machineType",
        "zone"
      ]
    },
    "google-native:composer/v1beta1:EncryptionConfig": {
      "description": "The encryption options for the Cloud Composer environment and its dependencies. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated. If not specified, Google-managed key will be used."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:EncryptionConfigResponse": {
      "description": "The encryption options for the Cloud Composer environment and its dependencies. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated. If not specified, Google-managed key will be used."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:composer/v1beta1:EnvironmentConfig": {
      "description": "Configuration information for an environment.",
      "properties": {
        "databaseConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:DatabaseConfig",
          "description": "Optional. The configuration settings for Cloud SQL instance used internally by Apache Airflow software."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:EncryptionConfig",
          "description": "Optional. The encryption options for the Cloud Composer environment and its dependencies. Cannot be updated."
        },
        "environmentSize": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:EnvironmentConfigEnvironmentSize",
          "description": "Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:MaintenanceWindow",
          "description": "Optional. The maintenance window is the period when Cloud Composer components may undergo maintenance. It is defined so that maintenance is not executed during peak hours or critical time periods. The system will not be under maintenance for every occurrence of this window, but when maintenance is planned, it will be scheduled during the window. The maintenance window period must encompass at least 12 hours per week. This may be split into multiple chunks, each with a size of at least 4 hours. If this value is omitted, Cloud Composer components may be subject to maintenance at any time."
        },
        "masterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:MasterAuthorizedNetworksConfig",
          "description": "Optional. The configuration options for GKE cluster master authorized networks. By default master authorized networks feature is: - in case of private environment: enabled with no external networks allowlisted. - in case of public environment: disabled."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:NodeConfig",
          "description": "The configuration used for the Kubernetes Engine cluster."
        },
        "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-*.*.*."
        },
        "privateEnvironmentConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:PrivateEnvironmentConfig",
          "description": "The configuration used for the Private IP Cloud Composer environment."
        },
        "recoveryConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:RecoveryConfig",
          "description": "Optional. The Recovery settings configuration of an environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "resilienceMode": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:EnvironmentConfigResilienceMode",
          "description": "Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:SoftwareConfig",
          "description": "The configuration settings for software inside the environment."
        },
        "webServerConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WebServerConfig",
          "description": "Optional. The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "webServerNetworkAccessControl": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WebServerNetworkAccessControl",
          "description": "Optional. The network-level access control policy for the Airflow web server. If unspecified, no network-level access restrictions will be applied."
        },
        "workloadsConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WorkloadsConfig",
          "description": "Optional. The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. The GKE cluster runs Airflow scheduler, web server and workers workloads. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:EnvironmentConfigEnvironmentSize": {
      "description": "Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.",
      "type": "string",
      "enum": [
        {
          "name": "EnvironmentSizeUnspecified",
          "description": "The size of the environment is unspecified.",
          "value": "ENVIRONMENT_SIZE_UNSPECIFIED"
        },
        {
          "name": "EnvironmentSizeSmall",
          "description": "The environment size is small.",
          "value": "ENVIRONMENT_SIZE_SMALL"
        },
        {
          "name": "EnvironmentSizeMedium",
          "description": "The environment size is medium.",
          "value": "ENVIRONMENT_SIZE_MEDIUM"
        },
        {
          "name": "EnvironmentSizeLarge",
          "description": "The environment size is large.",
          "value": "ENVIRONMENT_SIZE_LARGE"
        }
      ]
    },
    "google-native:composer/v1beta1:EnvironmentConfigResilienceMode": {
      "description": "Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer.",
      "type": "string",
      "enum": [
        {
          "name": "ResilienceModeUnspecified",
          "description": "Default mode doesn't change environment parameters.",
          "value": "RESILIENCE_MODE_UNSPECIFIED"
        },
        {
          "name": "HighResilience",
          "description": "Enabled High Resilience mode, including Cloud SQL HA.",
          "value": "HIGH_RESILIENCE"
        }
      ]
    },
    "google-native:composer/v1beta1:EnvironmentConfigResponse": {
      "description": "Configuration information for an environment.",
      "properties": {
        "airflowByoidUri": {
          "type": "string",
          "description": "The 'bring your own identity' variant of the URI of the Apache Airflow Web UI hosted within this environment, to be accessed with external identities using workforce identity federation (see [Access environments with workforce identity federation](/composer/docs/composer-2/access-environments-with-workforce-identity-federation))."
        },
        "airflowUri": {
          "type": "string",
          "description": "The URI of the Apache Airflow Web UI hosted within this environment (see [Airflow web interface](/composer/docs/how-to/accessing/airflow-web-interface))."
        },
        "dagGcsPrefix": {
          "type": "string",
          "description": "The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using \"/\"-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with the given prefix."
        },
        "databaseConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:DatabaseConfigResponse",
          "description": "Optional. The configuration settings for Cloud SQL instance used internally by Apache Airflow software."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:EncryptionConfigResponse",
          "description": "Optional. The encryption options for the Cloud Composer environment and its dependencies. Cannot be updated."
        },
        "environmentSize": {
          "type": "string",
          "description": "Optional. The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "gkeCluster": {
          "type": "string",
          "description": "The Kubernetes Engine cluster used to run this environment."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:MaintenanceWindowResponse",
          "description": "Optional. The maintenance window is the period when Cloud Composer components may undergo maintenance. It is defined so that maintenance is not executed during peak hours or critical time periods. The system will not be under maintenance for every occurrence of this window, but when maintenance is planned, it will be scheduled during the window. The maintenance window period must encompass at least 12 hours per week. This may be split into multiple chunks, each with a size of at least 4 hours. If this value is omitted, Cloud Composer components may be subject to maintenance at any time."
        },
        "masterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:MasterAuthorizedNetworksConfigResponse",
          "description": "Optional. The configuration options for GKE cluster master authorized networks. By default master authorized networks feature is: - in case of private environment: enabled with no external networks allowlisted. - in case of public environment: disabled."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:NodeConfigResponse",
          "description": "The configuration used for the Kubernetes Engine cluster."
        },
        "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-*.*.*."
        },
        "privateEnvironmentConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:PrivateEnvironmentConfigResponse",
          "description": "The configuration used for the Private IP Cloud Composer environment."
        },
        "recoveryConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:RecoveryConfigResponse",
          "description": "Optional. The Recovery settings configuration of an environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "resilienceMode": {
          "type": "string",
          "description": "Optional. Resilience mode of the Cloud Composer Environment. This field is supported for Cloud Composer environments in versions composer-2.2.0-airflow-*.*.* and newer."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:SoftwareConfigResponse",
          "description": "The configuration settings for software inside the environment."
        },
        "webServerConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WebServerConfigResponse",
          "description": "Optional. The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "webServerNetworkAccessControl": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WebServerNetworkAccessControlResponse",
          "description": "Optional. The network-level access control policy for the Airflow web server. If unspecified, no network-level access restrictions will be applied."
        },
        "workloadsConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WorkloadsConfigResponse",
          "description": "Optional. The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. The GKE cluster runs Airflow scheduler, web server and workers workloads. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        }
      },
      "type": "object",
      "required": [
        "airflowByoidUri",
        "airflowUri",
        "dagGcsPrefix",
        "databaseConfig",
        "encryptionConfig",
        "environmentSize",
        "gkeCluster",
        "maintenanceWindow",
        "masterAuthorizedNetworksConfig",
        "nodeConfig",
        "nodeCount",
        "privateEnvironmentConfig",
        "recoveryConfig",
        "resilienceMode",
        "softwareConfig",
        "webServerConfig",
        "webServerNetworkAccessControl",
        "workloadsConfig"
      ]
    },
    "google-native:composer/v1beta1:EnvironmentState": {
      "description": "The current state of the environment.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The state of the environment is unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Creating",
          "description": "The environment is in the process of being created.",
          "value": "CREATING"
        },
        {
          "name": "Running",
          "description": "The environment is currently running and healthy. It is ready for use.",
          "value": "RUNNING"
        },
        {
          "name": "Updating",
          "description": "The environment is being updated. It remains usable but cannot receive additional update requests or be deleted at this time.",
          "value": "UPDATING"
        },
        {
          "name": "Deleting",
          "description": "The environment is undergoing deletion. It cannot be used.",
          "value": "DELETING"
        },
        {
          "name": "Error",
          "description": "The environment has encountered an error and cannot be used.",
          "value": "ERROR"
        }
      ]
    },
    "google-native:composer/v1beta1:IPAllocationPolicy": {
      "description": "Configuration for controlling how IPs are allocated in the GKE cluster.",
      "properties": {
        "clusterIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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 `use_ip_aliases` is 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](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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 `cluster_secondary_range_name` or `cluster_ipv4_cidr_block` but not both."
        },
        "clusterSecondaryRangeName": {
          "type": "string",
          "description": "Optional. The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either `cluster_secondary_range_name` or `cluster_ipv4_cidr_block` but not both. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true."
        },
        "servicesIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The IP address range of the services IP addresses in this cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is 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](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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 `services_secondary_range_name` or `services_ipv4_cidr_block` but not both."
        },
        "servicesSecondaryRangeName": {
          "type": "string",
          "description": "Optional. The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either `services_secondary_range_name` or `services_ipv4_cidr_block` but not both. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true."
        },
        "useIpAliases": {
          "type": "boolean",
          "description": "Optional. Whether or not to enable Alias IPs in the GKE cluster. If `true`, a VPC-native cluster is created. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:IPAllocationPolicyResponse": {
      "description": "Configuration for controlling how IPs are allocated in the GKE cluster.",
      "properties": {
        "clusterIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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 `use_ip_aliases` is 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](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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 `cluster_secondary_range_name` or `cluster_ipv4_cidr_block` but not both."
        },
        "clusterSecondaryRangeName": {
          "type": "string",
          "description": "Optional. The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either `cluster_secondary_range_name` or `cluster_ipv4_cidr_block` but not both. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true."
        },
        "servicesIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The IP address range of the services IP addresses in this cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is 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](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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 `services_secondary_range_name` or `services_ipv4_cidr_block` but not both."
        },
        "servicesSecondaryRangeName": {
          "type": "string",
          "description": "Optional. The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either `services_secondary_range_name` or `services_ipv4_cidr_block` but not both. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when `use_ip_aliases` is true."
        },
        "useIpAliases": {
          "type": "boolean",
          "description": "Optional. Whether or not to enable Alias IPs in the GKE cluster. If `true`, a VPC-native cluster is created. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters."
        }
      },
      "type": "object",
      "required": [
        "clusterIpv4CidrBlock",
        "clusterSecondaryRangeName",
        "servicesIpv4CidrBlock",
        "servicesSecondaryRangeName",
        "useIpAliases"
      ]
    },
    "google-native:composer/v1beta1:MaintenanceWindow": {
      "description": "The configuration settings for Cloud Composer maintenance window. The following example: ``` { \"startTime\":\"2019-08-01T01:00:00Z\" \"endTime\":\"2019-08-01T07:00:00Z\" \"recurrence\":\"FREQ=WEEKLY;BYDAY=TU,WE\" } ``` would define a maintenance window between 01 and 07 hours UTC during each Tuesday and Wednesday.",
      "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`."
        },
        "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`."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the first recurrence of the maintenance window."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "recurrence",
        "startTime"
      ]
    },
    "google-native:composer/v1beta1:MaintenanceWindowResponse": {
      "description": "The configuration settings for Cloud Composer maintenance window. The following example: ``` { \"startTime\":\"2019-08-01T01:00:00Z\" \"endTime\":\"2019-08-01T07:00:00Z\" \"recurrence\":\"FREQ=WEEKLY;BYDAY=TU,WE\" } ``` would define a maintenance window between 01 and 07 hours UTC during each Tuesday and Wednesday.",
      "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`."
        },
        "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`."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the first recurrence of the maintenance window."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "recurrence",
        "startTime"
      ]
    },
    "google-native:composer/v1beta1:MasterAuthorizedNetworksConfig": {
      "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.",
      "properties": {
        "cidrBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:composer%2Fv1beta1:CidrBlock"
          },
          "description": "Up to 50 external networks that could access Kubernetes master through HTTPS."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not master authorized networks feature is enabled."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:MasterAuthorizedNetworksConfigResponse": {
      "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.",
      "properties": {
        "cidrBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:composer%2Fv1beta1:CidrBlockResponse"
          },
          "description": "Up to 50 external networks that could access Kubernetes master through HTTPS."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not master authorized networks feature is enabled."
        }
      },
      "type": "object",
      "required": [
        "cidrBlocks",
        "enabled"
      ]
    },
    "google-native:composer/v1beta1:NetworkingConfig": {
      "description": "Configuration options for networking connections in the Composer 2 environment.",
      "properties": {
        "connectionType": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:NetworkingConfigConnectionType",
          "description": "Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:NetworkingConfigConnectionType": {
      "description": "Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectionTypeUnspecified",
          "description": "No specific connection type was requested, so the environment uses the default value corresponding to the rest of its configuration.",
          "value": "CONNECTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "VpcPeering",
          "description": "Requests the use of VPC peerings for connecting the Customer and Tenant projects.",
          "value": "VPC_PEERING"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "Requests the use of Private Service Connect for connecting the Customer and Tenant projects.",
          "value": "PRIVATE_SERVICE_CONNECT"
        }
      ]
    },
    "google-native:composer/v1beta1:NetworkingConfigResponse": {
      "description": "Configuration options for networking connections in the Composer 2 environment.",
      "properties": {
        "connectionType": {
          "type": "string",
          "description": "Optional. Indicates the user requested specifc connection type between Tenant and Customer projects. You cannot set networking connection type in public IP environment."
        }
      },
      "type": "object",
      "required": [
        "connectionType"
      ]
    },
    "google-native:composer/v1beta1:NodeConfig": {
      "description": "The configuration information for the Kubernetes Engine nodes running the Apache Airflow software.",
      "properties": {
        "diskSizeGb": {
          "type": "integer",
          "description": "Optional. The disk size in GB used for node VMs. Minimum size is 30GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "enableIpMasqAgent": {
          "type": "boolean",
          "description": "Optional. 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"
        },
        "ipAllocationPolicy": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:IPAllocationPolicy",
          "description": "Optional. The IPAllocationPolicy fields for the GKE cluster."
        },
        "location": {
          "type": "string",
          "description": "Optional. The Compute Engine [zone](/compute/docs/regions-zones) in which to deploy the VMs used to run the Apache Airflow software, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/zones/{zoneId}\". This `location` must belong to the enclosing environment's project and location. If both this field and `nodeConfig.machineType` are specified, `nodeConfig.machineType` must belong to this `location`; if both are unspecified, the service will pick a zone in the Compute Engine region corresponding to the Cloud Composer location, and propagate that choice to both fields. If only one field (`location` or `nodeConfig.machineType`) is specified, the location information from the specified field will be propagated to the unspecified field. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The Compute Engine [machine type](/compute/docs/machine-types) used for cluster instances, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/zones/{zoneId}/machineTypes/{machineTypeId}\". The `machineType` must belong to the enclosing environment's project and location. If both this field and `nodeConfig.location` are specified, this `machineType` must belong to the `nodeConfig.location`; if both are unspecified, the service will pick a zone in the Compute Engine region corresponding to the Cloud Composer location, and propagate that choice to both fields. If exactly one of this field and `nodeConfig.location` is specified, the location information from the specified field will be propagated to the unspecified field. The `machineTypeId` must not be a [shared-core machine type](/compute/docs/machine-types#sharedcore). If this field is unspecified, the `machineTypeId` defaults to \"n1-standard-1\". This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "maxPodsPerNode": {
          "type": "integer",
          "description": "Optional. The maximum number of pods per node in the Cloud Composer GKE cluster. The value must be between 8 and 110 and it can be set only if the environment is VPC-native. The default value is 32. Values of this field will be propagated both to the `default-pool` node pool of the newly created GKE cluster, and to the default \"Maximum Pods per Node\" value which is used for newly created node pools if their value is not explicitly set during node pool creation. For more information, see [Optimizing IP address allocation] (https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr). Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "network": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/global/networks/{networkId}\". If unspecified, the default network in the environment's project is used. If a [Custom Subnet Network](/vpc/docs/vpc#vpc_networks_and_subnets) is provided, `nodeConfig.subnetwork` must also be provided. For [Shared VPC](/vpc/docs/shared-vpc) subnetwork requirements, see `nodeConfig.subnetwork`."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of Google API scopes to be made available on all node VMs. If `oauth_scopes` is empty, defaults to [\"https://www.googleapis.com/auth/cloud-platform\"]. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The Google Cloud Platform Service Account to be used by the workloads. If a service account is not specified, the \"default\" Compute Engine service account is used. Cannot be updated."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/regions/{regionId}/subnetworks/{subnetworkId}\" If a subnetwork is provided, `nodeConfig.network` must also be provided, and the subnetwork must belong to the enclosing environment's project and location."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. 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](https://www.ietf.org/rfc/rfc1035.txt). Cannot be updated."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:NodeConfigResponse": {
      "description": "The configuration information for the Kubernetes Engine nodes running the Apache Airflow software.",
      "properties": {
        "diskSizeGb": {
          "type": "integer",
          "description": "Optional. The disk size in GB used for node VMs. Minimum size is 30GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "enableIpMasqAgent": {
          "type": "boolean",
          "description": "Optional. 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"
        },
        "ipAllocationPolicy": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:IPAllocationPolicyResponse",
          "description": "Optional. The IPAllocationPolicy fields for the GKE cluster."
        },
        "location": {
          "type": "string",
          "description": "Optional. The Compute Engine [zone](/compute/docs/regions-zones) in which to deploy the VMs used to run the Apache Airflow software, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/zones/{zoneId}\". This `location` must belong to the enclosing environment's project and location. If both this field and `nodeConfig.machineType` are specified, `nodeConfig.machineType` must belong to this `location`; if both are unspecified, the service will pick a zone in the Compute Engine region corresponding to the Cloud Composer location, and propagate that choice to both fields. If only one field (`location` or `nodeConfig.machineType`) is specified, the location information from the specified field will be propagated to the unspecified field. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The Compute Engine [machine type](/compute/docs/machine-types) used for cluster instances, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/zones/{zoneId}/machineTypes/{machineTypeId}\". The `machineType` must belong to the enclosing environment's project and location. If both this field and `nodeConfig.location` are specified, this `machineType` must belong to the `nodeConfig.location`; if both are unspecified, the service will pick a zone in the Compute Engine region corresponding to the Cloud Composer location, and propagate that choice to both fields. If exactly one of this field and `nodeConfig.location` is specified, the location information from the specified field will be propagated to the unspecified field. The `machineTypeId` must not be a [shared-core machine type](/compute/docs/machine-types#sharedcore). If this field is unspecified, the `machineTypeId` defaults to \"n1-standard-1\". This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "maxPodsPerNode": {
          "type": "integer",
          "description": "Optional. The maximum number of pods per node in the Cloud Composer GKE cluster. The value must be between 8 and 110 and it can be set only if the environment is VPC-native. The default value is 32. Values of this field will be propagated both to the `default-pool` node pool of the newly created GKE cluster, and to the default \"Maximum Pods per Node\" value which is used for newly created node pools if their value is not explicitly set during node pool creation. For more information, see [Optimizing IP address allocation] (https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr). Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "network": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/global/networks/{networkId}\". If unspecified, the default network in the environment's project is used. If a [Custom Subnet Network](/vpc/docs/vpc#vpc_networks_and_subnets) is provided, `nodeConfig.subnetwork` must also be provided. For [Shared VPC](/vpc/docs/shared-vpc) subnetwork requirements, see `nodeConfig.subnetwork`."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of Google API scopes to be made available on all node VMs. If `oauth_scopes` is empty, defaults to [\"https://www.googleapis.com/auth/cloud-platform\"]. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The Google Cloud Platform Service Account to be used by the workloads. If a service account is not specified, the \"default\" Compute Engine service account is used. Cannot be updated."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications, specified as a [relative resource name](/apis/design/resource_names#relative_resource_name). For example: \"projects/{projectId}/regions/{regionId}/subnetworks/{subnetworkId}\" If a subnetwork is provided, `nodeConfig.network` must also be provided, and the subnetwork must belong to the enclosing environment's project and location."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. 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](https://www.ietf.org/rfc/rfc1035.txt). Cannot be updated."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "enableIpMasqAgent",
        "ipAllocationPolicy",
        "location",
        "machineType",
        "maxPodsPerNode",
        "network",
        "oauthScopes",
        "serviceAccount",
        "subnetwork",
        "tags"
      ]
    },
    "google-native:composer/v1beta1:PrivateClusterConfig": {
      "description": "Configuration options for the private GKE cluster in a Cloud Composer environment.",
      "properties": {
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Optional. If `true`, access to the public endpoint of the GKE cluster is denied."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The CIDR block from which IPv4 range for GKE master will be reserved. If left blank, the default value of '172.16.0.0/23' is used."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:PrivateClusterConfigResponse": {
      "description": "Configuration options for the private GKE cluster in a Cloud Composer environment.",
      "properties": {
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Optional. If `true`, access to the public endpoint of the GKE cluster is denied."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The CIDR block from which IPv4 range for GKE master will be reserved. If left blank, the default value of '172.16.0.0/23' is used."
        },
        "masterIpv4ReservedRange": {
          "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."
        }
      },
      "type": "object",
      "required": [
        "enablePrivateEndpoint",
        "masterIpv4CidrBlock",
        "masterIpv4ReservedRange"
      ]
    },
    "google-native:composer/v1beta1:PrivateEnvironmentConfig": {
      "description": "The configuration information for configuring a Private IP Cloud Composer environment.",
      "properties": {
        "cloudComposerConnectionSubnetwork": {
          "type": "string",
          "description": "Optional. 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."
        },
        "cloudComposerNetworkIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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."
        },
        "cloudSqlIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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"
        },
        "enablePrivateEnvironment": {
          "type": "boolean",
          "description": "Optional. If `true`, a Private IP Cloud Composer environment is created. If this field is set to true, `IPAllocationPolicy.use_ip_aliases` must be set to true for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "enablePrivatelyUsedPublicIps": {
          "type": "boolean",
          "description": "Optional. When enabled, IPs from public (non-RFC1918) ranges can be used for `IPAllocationPolicy.cluster_ipv4_cidr_block` and `IPAllocationPolicy.service_ipv4_cidr_block`."
        },
        "networkingConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:NetworkingConfig",
          "description": "Optional. Configuration for the network connections configuration in the environment."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:PrivateClusterConfig",
          "description": "Optional. Configuration for the private GKE cluster for a Private IP Cloud Composer environment."
        },
        "webServerIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The CIDR block from which IP range for web server 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-1.*.*-airflow-*.*.*."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:PrivateEnvironmentConfigResponse": {
      "description": "The configuration information for configuring a Private IP Cloud Composer environment.",
      "properties": {
        "cloudComposerConnectionSubnetwork": {
          "type": "string",
          "description": "Optional. 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."
        },
        "cloudComposerNetworkIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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."
        },
        "cloudComposerNetworkIpv4ReservedRange": {
          "type": "string",
          "description": "The IP range reserved for the tenant project's Cloud Composer network. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer."
        },
        "cloudSqlIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. 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"
        },
        "enablePrivateEnvironment": {
          "type": "boolean",
          "description": "Optional. If `true`, a Private IP Cloud Composer environment is created. If this field is set to true, `IPAllocationPolicy.use_ip_aliases` must be set to true for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        },
        "enablePrivatelyUsedPublicIps": {
          "type": "boolean",
          "description": "Optional. When enabled, IPs from public (non-RFC1918) ranges can be used for `IPAllocationPolicy.cluster_ipv4_cidr_block` and `IPAllocationPolicy.service_ipv4_cidr_block`."
        },
        "networkingConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:NetworkingConfigResponse",
          "description": "Optional. Configuration for the network connections configuration in the environment."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:PrivateClusterConfigResponse",
          "description": "Optional. Configuration for the private GKE cluster for a Private IP Cloud Composer environment."
        },
        "webServerIpv4CidrBlock": {
          "type": "string",
          "description": "Optional. The CIDR block from which IP range for web server 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-1.*.*-airflow-*.*.*."
        },
        "webServerIpv4ReservedRange": {
          "type": "string",
          "description": "The IP range reserved for the tenant project's App Engine VMs. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*."
        }
      },
      "type": "object",
      "required": [
        "cloudComposerConnectionSubnetwork",
        "cloudComposerNetworkIpv4CidrBlock",
        "cloudComposerNetworkIpv4ReservedRange",
        "cloudSqlIpv4CidrBlock",
        "enablePrivateEnvironment",
        "enablePrivatelyUsedPublicIps",
        "networkingConfig",
        "privateClusterConfig",
        "webServerIpv4CidrBlock",
        "webServerIpv4ReservedRange"
      ]
    },
    "google-native:composer/v1beta1:RecoveryConfig": {
      "description": "The Recovery settings of an environment.",
      "properties": {
        "scheduledSnapshotsConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:ScheduledSnapshotsConfig",
          "description": "Optional. The configuration for scheduled snapshot creation mechanism."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:RecoveryConfigResponse": {
      "description": "The Recovery settings of an environment.",
      "properties": {
        "scheduledSnapshotsConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:ScheduledSnapshotsConfigResponse",
          "description": "Optional. The configuration for scheduled snapshot creation mechanism."
        }
      },
      "type": "object",
      "required": [
        "scheduledSnapshotsConfig"
      ]
    },
    "google-native:composer/v1beta1:ScheduledSnapshotsConfig": {
      "description": "The configuration for scheduled snapshot creation mechanism.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether scheduled snapshots creation is enabled."
        },
        "snapshotCreationSchedule": {
          "type": "string",
          "description": "Optional. The cron expression representing the time when snapshots creation mechanism runs. This field is subject to additional validation around frequency of execution."
        },
        "snapshotLocation": {
          "type": "string",
          "description": "Optional. The Cloud Storage location for storing automatically created snapshots."
        },
        "timeZone": {
          "type": "string",
          "description": "Optional. Time zone that sets the context to interpret snapshot_creation_schedule."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:ScheduledSnapshotsConfigResponse": {
      "description": "The configuration for scheduled snapshot creation mechanism.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether scheduled snapshots creation is enabled."
        },
        "snapshotCreationSchedule": {
          "type": "string",
          "description": "Optional. The cron expression representing the time when snapshots creation mechanism runs. This field is subject to additional validation around frequency of execution."
        },
        "snapshotLocation": {
          "type": "string",
          "description": "Optional. The Cloud Storage location for storing automatically created snapshots."
        },
        "timeZone": {
          "type": "string",
          "description": "Optional. Time zone that sets the context to interpret snapshot_creation_schedule."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "snapshotCreationSchedule",
        "snapshotLocation",
        "timeZone"
      ]
    },
    "google-native:composer/v1beta1:SchedulerResource": {
      "description": "Configuration for resources used by Airflow schedulers.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. The number of schedulers."
        },
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow scheduler replica."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow scheduler replica."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for a single Airflow scheduler replica."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:SchedulerResourceResponse": {
      "description": "Configuration for resources used by Airflow schedulers.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. The number of schedulers."
        },
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow scheduler replica."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow scheduler replica."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for a single Airflow scheduler replica."
        }
      },
      "type": "object",
      "required": [
        "count",
        "cpu",
        "memoryGb",
        "storageGb"
      ]
    },
    "google-native:composer/v1beta1:SoftwareConfig": {
      "description": "Specifies the selection and configuration of software inside the environment.",
      "properties": {
        "airflowConfigOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. 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 must not contain an equals sign (\"=\") or semicolon (\";\"). Section and property names must not contain a period (\".\"). Apache Airflow configuration property names must be written in [snake_case](https://en.wikipedia.org/wiki/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 [blocked](/composer/docs/concepts/airflow-configurations), and cannot be overridden."
        },
        "cloudDataLineageIntegration": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:CloudDataLineageIntegration",
          "description": "Optional. The configuration for Cloud Data Lineage integration."
        },
        "envVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. 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_*`. 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`"
        },
        "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]+)?)?)`. When used as input, the server also checks if the provided version is supported and denies the request for an unsupported version. The Cloud Composer portion of the image version is a full [semantic version](https://semver.org), or an alias in the form of major version number or `latest`. When an alias is provided, the server replaces it with the current Cloud Composer version that satisfies the alias. 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. When an alias is provided, the server replaces it with the latest Apache Airflow version that satisfies the alias and is supported in the given Cloud Composer version. In all cases, the resolved image version is stored in the same field. See also [version list](/composer/docs/concepts/versioning/composer-versions) and [versioning overview](/composer/docs/concepts/versioning/composer-versioning-overview)."
        },
        "pypiPackages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name such as \"numpy\" and values are the lowercase extras and version specifier such as \"==1.12.0\", \"[devel,gcp_api]\", or \"[devel]>=1.8.2, <1.9.2\". To specify a package without pinning it to a version specifier, use the empty string as the value."
        },
        "pythonVersion": {
          "type": "string",
          "description": "Optional. 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 '3'. Cannot be updated. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3."
        },
        "schedulerCount": {
          "type": "integer",
          "description": "Optional. The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:SoftwareConfigResponse": {
      "description": "Specifies the selection and configuration of software inside the environment.",
      "properties": {
        "airflowConfigOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. 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 must not contain an equals sign (\"=\") or semicolon (\";\"). Section and property names must not contain a period (\".\"). Apache Airflow configuration property names must be written in [snake_case](https://en.wikipedia.org/wiki/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 [blocked](/composer/docs/concepts/airflow-configurations), and cannot be overridden."
        },
        "cloudDataLineageIntegration": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:CloudDataLineageIntegrationResponse",
          "description": "Optional. The configuration for Cloud Data Lineage integration."
        },
        "envVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. 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_*`. 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`"
        },
        "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]+)?)?)`. When used as input, the server also checks if the provided version is supported and denies the request for an unsupported version. The Cloud Composer portion of the image version is a full [semantic version](https://semver.org), or an alias in the form of major version number or `latest`. When an alias is provided, the server replaces it with the current Cloud Composer version that satisfies the alias. 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. When an alias is provided, the server replaces it with the latest Apache Airflow version that satisfies the alias and is supported in the given Cloud Composer version. In all cases, the resolved image version is stored in the same field. See also [version list](/composer/docs/concepts/versioning/composer-versions) and [versioning overview](/composer/docs/concepts/versioning/composer-versioning-overview)."
        },
        "pypiPackages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name such as \"numpy\" and values are the lowercase extras and version specifier such as \"==1.12.0\", \"[devel,gcp_api]\", or \"[devel]>=1.8.2, <1.9.2\". To specify a package without pinning it to a version specifier, use the empty string as the value."
        },
        "pythonVersion": {
          "type": "string",
          "description": "Optional. 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 '3'. Cannot be updated. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3."
        },
        "schedulerCount": {
          "type": "integer",
          "description": "Optional. The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*."
        }
      },
      "type": "object",
      "required": [
        "airflowConfigOverrides",
        "cloudDataLineageIntegration",
        "envVariables",
        "imageVersion",
        "pypiPackages",
        "pythonVersion",
        "schedulerCount"
      ]
    },
    "google-native:composer/v1beta1:StorageConfig": {
      "description": "The configuration for data storage in the environment.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Optional. The name of the Cloud Storage bucket used by the environment. No `gs://` prefix."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:StorageConfigResponse": {
      "description": "The configuration for data storage in the environment.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Optional. The name of the Cloud Storage bucket used by the environment. No `gs://` prefix."
        }
      },
      "type": "object",
      "required": [
        "bucket"
      ]
    },
    "google-native:composer/v1beta1:TriggererResource": {
      "description": "Configuration for resources used by Airflow triggerers.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. The number of triggerers."
        },
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow triggerer replica."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow triggerer replica."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:TriggererResourceResponse": {
      "description": "Configuration for resources used by Airflow triggerers.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. The number of triggerers."
        },
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow triggerer replica."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow triggerer replica."
        }
      },
      "type": "object",
      "required": [
        "count",
        "cpu",
        "memoryGb"
      ]
    },
    "google-native:composer/v1beta1:WebServerConfig": {
      "description": "The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.",
      "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."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:WebServerConfigResponse": {
      "description": "The configuration settings for the Airflow web server App Engine instance. Supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.",
      "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."
        }
      },
      "type": "object",
      "required": [
        "machineType"
      ]
    },
    "google-native:composer/v1beta1:WebServerNetworkAccessControl": {
      "description": "Network-level access control policy for the Airflow web server.",
      "properties": {
        "allowedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:composer%2Fv1beta1:AllowedIpRange"
          },
          "description": "A collection of allowed IP ranges with descriptions."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:WebServerNetworkAccessControlResponse": {
      "description": "Network-level access control policy for the Airflow web server.",
      "properties": {
        "allowedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:composer%2Fv1beta1:AllowedIpRangeResponse"
          },
          "description": "A collection of allowed IP ranges with descriptions."
        }
      },
      "type": "object",
      "required": [
        "allowedIpRanges"
      ]
    },
    "google-native:composer/v1beta1:WebServerResource": {
      "description": "Configuration for resources used by Airflow web server.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for Airflow web server."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for Airflow web server."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for Airflow web server."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:WebServerResourceResponse": {
      "description": "Configuration for resources used by Airflow web server.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for Airflow web server."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for Airflow web server."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for Airflow web server."
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "memoryGb",
        "storageGb"
      ]
    },
    "google-native:composer/v1beta1:WorkerResource": {
      "description": "Configuration for resources used by Airflow workers.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow worker replica."
        },
        "maxCount": {
          "type": "integer",
          "description": "Optional. Maximum number of workers for autoscaling."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow worker replica."
        },
        "minCount": {
          "type": "integer",
          "description": "Optional. Minimum number of workers for autoscaling."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for a single Airflow worker replica."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:WorkerResourceResponse": {
      "description": "Configuration for resources used by Airflow workers.",
      "properties": {
        "cpu": {
          "type": "number",
          "description": "Optional. CPU request and limit for a single Airflow worker replica."
        },
        "maxCount": {
          "type": "integer",
          "description": "Optional. Maximum number of workers for autoscaling."
        },
        "memoryGb": {
          "type": "number",
          "description": "Optional. Memory (GB) request and limit for a single Airflow worker replica."
        },
        "minCount": {
          "type": "integer",
          "description": "Optional. Minimum number of workers for autoscaling."
        },
        "storageGb": {
          "type": "number",
          "description": "Optional. Storage (GB) request and limit for a single Airflow worker replica."
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "maxCount",
        "memoryGb",
        "minCount",
        "storageGb"
      ]
    },
    "google-native:composer/v1beta1:WorkloadsConfig": {
      "description": "The Kubernetes workloads configuration for GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.",
      "properties": {
        "scheduler": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:SchedulerResource",
          "description": "Optional. Resources used by Airflow schedulers."
        },
        "triggerer": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:TriggererResource",
          "description": "Optional. Resources used by Airflow triggerers."
        },
        "webServer": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WebServerResource",
          "description": "Optional. Resources used by Airflow web server."
        },
        "worker": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WorkerResource",
          "description": "Optional. Resources used by Airflow workers."
        }
      },
      "type": "object"
    },
    "google-native:composer/v1beta1:WorkloadsConfigResponse": {
      "description": "The Kubernetes workloads configuration for GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.",
      "properties": {
        "scheduler": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:SchedulerResourceResponse",
          "description": "Optional. Resources used by Airflow schedulers."
        },
        "triggerer": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:TriggererResourceResponse",
          "description": "Optional. Resources used by Airflow triggerers."
        },
        "webServer": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WebServerResourceResponse",
          "description": "Optional. Resources used by Airflow web server."
        },
        "worker": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:WorkerResourceResponse",
          "description": "Optional. Resources used by Airflow workers."
        }
      },
      "type": "object",
      "required": [
        "scheduler",
        "triggerer",
        "webServer",
        "worker"
      ]
    },
    "google-native:compute/alpha:AWSV4Signature": {
      "description": "Contains the configurations necessary to generate a signature for access to private storage buckets that support Signature Version 4 for authentication. The service name for generating the authentication header will always default to 's3'.",
      "properties": {
        "accessKey": {
          "type": "string",
          "description": "The access key used for s3 bucket authentication. Required 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. @InputOnly"
        },
        "accessKeyId": {
          "type": "string",
          "description": "The identifier of an access key used for s3 bucket authentication."
        },
        "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."
        },
        "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. For example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AWSV4SignatureResponse": {
      "description": "Contains the configurations necessary to generate a signature for access to private storage buckets that support Signature Version 4 for authentication. The service name for generating the authentication header will always default to 's3'.",
      "properties": {
        "accessKey": {
          "type": "string",
          "description": "The access key used for s3 bucket authentication. Required 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. @InputOnly"
        },
        "accessKeyId": {
          "type": "string",
          "description": "The identifier of an access key used for s3 bucket authentication."
        },
        "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."
        },
        "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. For example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI."
        }
      },
      "type": "object",
      "required": [
        "accessKey",
        "accessKeyId",
        "accessKeyVersion",
        "originRegion"
      ]
    },
    "google-native:compute/alpha:AcceleratorConfig": {
      "description": "A specification of the type and number of accelerator cards attached to the instance.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the guest accelerator cards exposed to this instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AcceleratorConfigResponse": {
      "description": "A specification of the type and number of accelerator cards attached to the instance.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the guest accelerator cards exposed to this instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType"
      ]
    },
    "google-native:compute/alpha:AccessConfig": {
      "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
      "properties": {
        "externalIpv6": {
          "type": "string",
          "description": "Applies to ipv6AccessConfigs only. 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."
        },
        "externalIpv6PrefixLength": {
          "type": "integer",
          "description": "Applies to ipv6AccessConfigs only. The prefix length of the external IPv6 range."
        },
        "name": {
          "type": "string",
          "description": "The name of this access configuration. In accessConfigs (IPv4), the default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access. In ipv6AccessConfigs, the recommend name is External IPv6."
        },
        "natIP": {
          "type": "string",
          "description": "Applies to accessConfigs (IPv4) only. An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Falpha:AccessConfigNetworkTier",
          "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP."
        },
        "publicPtrDomainName": {
          "type": "string",
          "description": "The DNS domain name for the public PTR record. You can set this field only if the `setPublicPtr` field is enabled in accessConfig. If this field is unspecified in ipv6AccessConfig, a default PTR record will be createc for first IP in associated external IPv6 range."
        },
        "setPublicDns": {
          "type": "boolean",
          "description": "Specifies whether a public DNS 'A' record should be created for the external IP address of this access configuration."
        },
        "setPublicPtr": {
          "type": "boolean",
          "description": "Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name. This field is not used in ipv6AccessConfig. A default PTR record will be created if the VM has external IPv6 range associated."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:AccessConfigType",
          "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AccessConfigNetworkTier": {
      "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Select",
          "description": "Price competitive network tier, support for all networking products.",
          "value": "SELECT"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:AccessConfigResponse": {
      "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
      "properties": {
        "externalIpv6": {
          "type": "string",
          "description": "Applies to ipv6AccessConfigs only. 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."
        },
        "externalIpv6PrefixLength": {
          "type": "integer",
          "description": "Applies to ipv6AccessConfigs only. The prefix length of the external IPv6 range."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#accessConfig for access configs."
        },
        "name": {
          "type": "string",
          "description": "The name of this access configuration. In accessConfigs (IPv4), the default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access. In ipv6AccessConfigs, the recommend name is External IPv6."
        },
        "natIP": {
          "type": "string",
          "description": "Applies to accessConfigs (IPv4) only. An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP."
        },
        "publicDnsName": {
          "type": "string",
          "description": "The public DNS domain name for the instance."
        },
        "publicPtrDomainName": {
          "type": "string",
          "description": "The DNS domain name for the public PTR record. You can set this field only if the `setPublicPtr` field is enabled in accessConfig. If this field is unspecified in ipv6AccessConfig, a default PTR record will be createc for first IP in associated external IPv6 range."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this access config."
        },
        "setPublicDns": {
          "type": "boolean",
          "description": "Specifies whether a public DNS 'A' record should be created for the external IP address of this access configuration."
        },
        "setPublicPtr": {
          "type": "boolean",
          "description": "Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name. This field is not used in ipv6AccessConfig. A default PTR record will be created if the VM has external IPv6 range associated."
        },
        "type": {
          "type": "string",
          "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6."
        }
      },
      "type": "object",
      "required": [
        "externalIpv6",
        "externalIpv6PrefixLength",
        "kind",
        "name",
        "natIP",
        "networkTier",
        "publicDnsName",
        "publicPtrDomainName",
        "securityPolicy",
        "setPublicDns",
        "setPublicPtr",
        "type"
      ]
    },
    "google-native:compute/alpha:AccessConfigType": {
      "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "DirectIpv6",
          "value": "DIRECT_IPV6"
        },
        {
          "name": "OneToOneNat",
          "value": "ONE_TO_ONE_NAT"
        }
      ]
    },
    "google-native:compute/alpha:AddressAddressType": {
      "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
      "type": "string",
      "enum": [
        {
          "name": "DnsForwarding",
          "description": "DNS resolver address in the subnetwork.",
          "value": "DNS_FORWARDING"
        },
        {
          "name": "External",
          "description": "A publicly visible external IP address.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "A private network IP address, for use with an Instance or Internal Load Balancer forwarding rule.",
          "value": "INTERNAL"
        },
        {
          "name": "UnspecifiedType",
          "value": "UNSPECIFIED_TYPE"
        }
      ]
    },
    "google-native:compute/alpha:AddressIpVersion": {
      "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/alpha:AddressIpv6EndpointType": {
      "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
      "type": "string",
      "enum": [
        {
          "name": "Netlb",
          "description": "Reserved IPv6 address can be used on network load balancer.",
          "value": "NETLB"
        },
        {
          "name": "Vm",
          "description": "Reserved IPv6 address can be used on VM.",
          "value": "VM"
        }
      ]
    },
    "google-native:compute/alpha:AddressNetworkTier": {
      "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Select",
          "description": "Price competitive network tier, support for all networking products.",
          "value": "SELECT"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:AddressPurpose": {
      "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
      "type": "string",
      "enum": [
        {
          "name": "DnsResolver",
          "description": "DNS resolver address in the subnetwork.",
          "value": "DNS_RESOLVER"
        },
        {
          "name": "GceEndpoint",
          "description": "VM internal/alias IP, Internal LB service IP, etc.",
          "value": "GCE_ENDPOINT"
        },
        {
          "name": "IpsecInterconnect",
          "description": "A regional internal IP address range reserved for the VLAN attachment that is used in HA VPN over Cloud Interconnect. This regional internal IP address range must not overlap with any IP address range of subnet/route in the VPC network and its peering networks. After the VLAN attachment is created with the reserved IP address range, when creating a new VPN gateway, its interface IP address is allocated from the associated VLAN attachment’s IP address range.",
          "value": "IPSEC_INTERCONNECT"
        },
        {
          "name": "NatAuto",
          "description": "External IP automatically reserved for Cloud NAT.",
          "value": "NAT_AUTO"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "A private network IP address that can be used to configure Private Service Connect. This purpose can be specified only for GLOBAL addresses of Type INTERNAL",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "A regional internal IP address range reserved for Serverless.",
          "value": "SERVERLESS"
        },
        {
          "name": "SharedLoadbalancerVip",
          "description": "A private network IP address that can be shared by multiple Internal Load Balancer forwarding rules.",
          "value": "SHARED_LOADBALANCER_VIP"
        },
        {
          "name": "VpcPeering",
          "description": "IP range for peer networks.",
          "value": "VPC_PEERING"
        }
      ]
    },
    "google-native:compute/alpha:AdvancedMachineFeatures": {
      "description": "Specifies options for controlling advanced machine features. Options that would traditionally be configured in a BIOS belong here. Features that require operating system support may have corresponding entries in the GuestOsFeatures of an Image (e.g., whether or not the OS in the Image supports nested virtualization being enabled or disabled).",
      "properties": {
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Whether to enable nested virtualization or not (default is false)."
        },
        "enableUefiNetworking": {
          "type": "boolean",
          "description": "Whether to enable UEFI networking for instance creation."
        },
        "numaNodeCount": {
          "type": "integer",
          "description": "The number of vNUMA nodes."
        },
        "performanceMonitoringUnit": {
          "$ref": "#/types/google-native:compute%2Falpha:AdvancedMachineFeaturesPerformanceMonitoringUnit",
          "description": "Type of Performance Monitoring Unit requested on instance."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AdvancedMachineFeaturesPerformanceMonitoringUnit": {
      "description": "Type of Performance Monitoring Unit requested on instance.",
      "type": "string",
      "enum": [
        {
          "name": "Architectural",
          "description": "Architecturally defined non-LLC events.",
          "value": "ARCHITECTURAL"
        },
        {
          "name": "Enhanced",
          "description": "Most documented core/L2 and LLC events.",
          "value": "ENHANCED"
        },
        {
          "name": "PerformanceMonitoringUnitUnspecified",
          "value": "PERFORMANCE_MONITORING_UNIT_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "Most documented core/L2 events.",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:AdvancedMachineFeaturesResponse": {
      "description": "Specifies options for controlling advanced machine features. Options that would traditionally be configured in a BIOS belong here. Features that require operating system support may have corresponding entries in the GuestOsFeatures of an Image (e.g., whether or not the OS in the Image supports nested virtualization being enabled or disabled).",
      "properties": {
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Whether to enable nested virtualization or not (default is false)."
        },
        "enableUefiNetworking": {
          "type": "boolean",
          "description": "Whether to enable UEFI networking for instance creation."
        },
        "numaNodeCount": {
          "type": "integer",
          "description": "The number of vNUMA nodes."
        },
        "performanceMonitoringUnit": {
          "type": "string",
          "description": "Type of Performance Monitoring Unit requested on instance."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "enableNestedVirtualization",
        "enableUefiNetworking",
        "numaNodeCount",
        "performanceMonitoringUnit",
        "threadsPerCore",
        "visibleCoreCount"
      ]
    },
    "google-native:compute/alpha:AliasIpRange": {
      "description": "An alias IP range attached to an instance's network interface.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The IP alias ranges to allocate for this interface. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24)."
        },
        "subnetworkRangeName": {
          "type": "string",
          "description": "The name of a subnetwork secondary IP range from which to allocate an IP alias range. If not specified, the primary range of the subnetwork is used."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AliasIpRangeResponse": {
      "description": "An alias IP range attached to an instance's network interface.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The IP alias ranges to allocate for this interface. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24)."
        },
        "subnetworkRangeName": {
          "type": "string",
          "description": "The name of a subnetwork secondary IP range from which to allocate an IP alias range. If not specified, the primary range of the subnetwork is used."
        }
      },
      "type": "object",
      "required": [
        "ipCidrRange",
        "subnetworkRangeName"
      ]
    },
    "google-native:compute/alpha:AllocationAggregateReservation": {
      "description": "This reservation type is specified by total resource amounts (e.g. total count of CPUs) and can account for multiple instance SKUs. In other words, one can create instances of varying shapes against this reservation.",
      "properties": {
        "reservedResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationReservedResourceInfo"
          },
          "description": "List of reserved resources (CPUs, memory, accelerators)."
        },
        "vmFamily": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationVmFamily",
          "description": "The VM family that all instances scheduled against this reservation must belong to."
        },
        "workloadType": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationWorkloadType",
          "description": "The workload type of the instances that will target this reservation."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AllocationAggregateReservationReservedResourceInfo": {
      "properties": {
        "accelerator": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationReservedResourceInfoAccelerator",
          "description": "Properties of accelerator resources in this reservation."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AllocationAggregateReservationReservedResourceInfoAccelerator": {
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "Number of accelerators of specified type."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL to accelerator type. e.g. \"projects/{PROJECT}/zones/{ZONE}/acceleratorTypes/ct4l\""
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AllocationAggregateReservationReservedResourceInfoAcceleratorResponse": {
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "Number of accelerators of specified type."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL to accelerator type. e.g. \"projects/{PROJECT}/zones/{ZONE}/acceleratorTypes/ct4l\""
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType"
      ]
    },
    "google-native:compute/alpha:AllocationAggregateReservationReservedResourceInfoResponse": {
      "properties": {
        "accelerator": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationReservedResourceInfoAcceleratorResponse",
          "description": "Properties of accelerator resources in this reservation."
        }
      },
      "type": "object",
      "required": [
        "accelerator"
      ]
    },
    "google-native:compute/alpha:AllocationAggregateReservationResponse": {
      "description": "This reservation type is specified by total resource amounts (e.g. total count of CPUs) and can account for multiple instance SKUs. In other words, one can create instances of varying shapes against this reservation.",
      "properties": {
        "inUseResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationReservedResourceInfoResponse"
          },
          "description": "[Output only] List of resources currently in use."
        },
        "reservedResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationReservedResourceInfoResponse"
          },
          "description": "List of reserved resources (CPUs, memory, accelerators)."
        },
        "vmFamily": {
          "type": "string",
          "description": "The VM family that all instances scheduled against this reservation must belong to."
        },
        "workloadType": {
          "type": "string",
          "description": "The workload type of the instances that will target this reservation."
        }
      },
      "type": "object",
      "required": [
        "inUseResources",
        "reservedResources",
        "vmFamily",
        "workloadType"
      ]
    },
    "google-native:compute/alpha:AllocationAggregateReservationVmFamily": {
      "description": "The VM family that all instances scheduled against this reservation must belong to.",
      "type": "string",
      "enum": [
        {
          "name": "VmFamilyCloudTpuLiteDeviceCt5l",
          "value": "VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L"
        },
        {
          "name": "VmFamilyCloudTpuLitePodSliceCt5lp",
          "value": "VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP"
        },
        {
          "name": "VmFamilyCloudTpuPodSliceCt4p",
          "value": "VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P"
        }
      ]
    },
    "google-native:compute/alpha:AllocationAggregateReservationWorkloadType": {
      "description": "The workload type of the instances that will target this reservation.",
      "type": "string",
      "enum": [
        {
          "name": "Batch",
          "description": "Reserved resources will be optimized for BATCH workloads, such as ML training.",
          "value": "BATCH"
        },
        {
          "name": "Serving",
          "description": "Reserved resources will be optimized for SERVING workloads, such as ML inference.",
          "value": "SERVING"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:AllocationResourceStatusResponse": {
      "description": "[Output Only] Contains output only fields.",
      "properties": {
        "specificSkuAllocation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationResourceStatusSpecificSKUAllocationResponse",
          "description": "Allocation Properties of this reservation."
        }
      },
      "type": "object",
      "required": [
        "specificSkuAllocation"
      ]
    },
    "google-native:compute/alpha:AllocationResourceStatusSpecificSKUAllocationResponse": {
      "description": "Contains Properties set for the reservation.",
      "properties": {
        "sourceInstanceTemplateId": {
          "type": "string",
          "description": "ID of the instance template used to populate reservation properties."
        }
      },
      "type": "object",
      "required": [
        "sourceInstanceTemplateId"
      ]
    },
    "google-native:compute/alpha:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk": {
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface": {
      "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
      "type": "string",
      "enum": [
        {
          "name": "Nvdimm",
          "value": "NVDIMM"
        },
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        }
      ]
    },
    "google-native:compute/alpha:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskResponse": {
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "interface"
      ]
    },
    "google-native:compute/alpha:AllocationSpecificSKUAllocationReservedInstanceProperties": {
      "description": "Properties of the SKU instances being reserved. Next ID: 9",
      "properties": {
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfig"
          },
          "description": "Specifies accelerator type and count."
        },
        "localSsds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk"
          },
          "description": "Specifies amount of local ssd to reserve with each instance. The type of disk is local-ssd."
        },
        "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."
        },
        "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."
        },
        "maintenanceFreezeDurationHours": {
          "type": "integer",
          "description": "Specifies the number of hours after reservation creation where instances using the reservation won't be scheduled for maintenance."
        },
        "maintenanceInterval": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu platform the reservation."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval": {
      "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.",
      "type": "string",
      "enum": [
        {
          "name": "AsNeeded",
          "description": "VMs are eligible to receive infrastructure and hypervisor updates as they become available. This may result in more maintenance operations (live migrations or terminations) for the VM than the PERIODIC and RECURRENT options.",
          "value": "AS_NEEDED"
        },
        {
          "name": "Periodic",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available.",
          "value": "PERIODIC"
        },
        {
          "name": "Recurrent",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available. RECURRENT is used for GEN3 and Slice of Hardware VMs.",
          "value": "RECURRENT"
        }
      ]
    },
    "google-native:compute/alpha:AllocationSpecificSKUAllocationReservedInstancePropertiesResponse": {
      "description": "Properties of the SKU instances being reserved. Next ID: 9",
      "properties": {
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfigResponse"
          },
          "description": "Specifies accelerator type and count."
        },
        "localSsds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskResponse"
          },
          "description": "Specifies amount of local ssd to reserve with each instance. The type of disk is local-ssd."
        },
        "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."
        },
        "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."
        },
        "maintenanceFreezeDurationHours": {
          "type": "integer",
          "description": "Specifies the number of hours after reservation creation where instances using the reservation won't be scheduled for maintenance."
        },
        "maintenanceInterval": {
          "type": "string",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu platform the reservation."
        }
      },
      "type": "object",
      "required": [
        "guestAccelerators",
        "localSsds",
        "locationHint",
        "machineType",
        "maintenanceFreezeDurationHours",
        "maintenanceInterval",
        "minCpuPlatform"
      ]
    },
    "google-native:compute/alpha:AllocationSpecificSKUReservation": {
      "description": "This reservation type allows to pre allocate specific instance configuration. Next ID: 6",
      "properties": {
        "count": {
          "type": "string",
          "description": "Specifies the number of resources that are allocated."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUAllocationReservedInstanceProperties",
          "description": "The instance properties for the reservation."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies the instance template to create the reservation. If you use this field, you must exclude the instanceProperties field. This field is optional, and it can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AllocationSpecificSKUReservationResponse": {
      "description": "This reservation type allows to pre allocate specific instance configuration. Next ID: 6",
      "properties": {
        "assuredCount": {
          "type": "string",
          "description": "Indicates how many instances are actually usable currently."
        },
        "count": {
          "type": "string",
          "description": "Specifies the number of resources that are allocated."
        },
        "inUseCount": {
          "type": "string",
          "description": "Indicates how many instances are in use."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUAllocationReservedInstancePropertiesResponse",
          "description": "The instance properties for the reservation."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies the instance template to create the reservation. If you use this field, you must exclude the instanceProperties field. This field is optional, and it can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        }
      },
      "type": "object",
      "required": [
        "assuredCount",
        "count",
        "inUseCount",
        "instanceProperties",
        "sourceInstanceTemplate"
      ]
    },
    "google-native:compute/alpha:AttachedDisk": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Encrypts or decrypts a disk using a customer-supplied encryption key. If 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. If 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. If 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. Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in GB."
        },
        "forceAttach": {
          "type": "boolean",
          "description": "[Input Only] 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."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "initializeParams": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskInitializeParams",
          "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskInterface",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskMode",
          "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode."
        },
        "savedState": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskSavedState",
          "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api."
        },
        "source": {
          "type": "string",
          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks. Note that for InstanceTemplate, specify the disk name for zonal disk, and the URL for regional disk."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskType",
          "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AttachedDiskInitializeParams": {
      "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This field is persisted and returned for instanceTemplate and not returned in the context of instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskInitializeParamsArchitecture",
          "description": "The architecture of the attached disk. Valid values are arm64 or x86_64."
        },
        "description": {
          "type": "string",
          "description": "An optional description. Provide this property when creating the disk."
        },
        "diskName": {
          "type": "string",
          "description": "Specifies the disk name. If not specified, the default is to use the name of the instance. If a disk with the same name already exists in the given region, the existing disk is attached to the new instance and the new disk is not created."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB. The size must be at least 10 GB. If you specify a sourceImage, which is required for boot disks, the default size is the size of the sourceImage. If you do not specify a sourceImage, the default disk size is 500 GB."
        },
        "diskType": {
          "type": "string",
          "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/pd-standard For a full list of acceptable values, see Persistent disk types. If you specify this field when creating a VM, you can provide either the full or partial URL. For example, the following values are valid: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType If you specify this field when creating or updating an instance template or all-instances configuration, specify the type of the disk, not the URL. For example: pd-standard."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options. Guest OS features are applied by merging initializeParams.guestOsFeatures and disks.guestOsFeatures"
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskInitializeParamsInterface",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "onUpdateAction": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskInitializeParamsOnUpdateAction",
          "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk."
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required for each regional disk associated with the instance. Specify the URLs of the zones where the disk should be replicated to. You must provide exactly two replica zones, and one zone must be the same as the instance zone."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations. Specified using the full or partial URL. For instance template, specify only the resource policy name."
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family If the source image is deleted later, this field will not be set."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. InstanceTemplate and InstancePropertiesPatch 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."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant-snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceInstantSnapshot initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: us-central1-a/instantSnapshots/my-backup If the source instant-snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: global/snapshots/my-backup If the source snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot."
        },
        "storagePool": {
          "type": "string",
          "description": "The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /storagePools/storagePool - projects/project/zones/zone/storagePools/storagePool - zones/zone/storagePools/storagePool "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AttachedDiskInitializeParamsArchitecture": {
      "description": "The architecture of the attached disk. Valid values are arm64 or x86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/alpha:AttachedDiskInitializeParamsInterface": {
      "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:AttachedDiskInitializeParamsOnUpdateAction": {
      "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk.",
      "type": "string",
      "enum": [
        {
          "name": "RecreateDisk",
          "description": "Always recreate the disk.",
          "value": "RECREATE_DISK"
        },
        {
          "name": "RecreateDiskIfSourceChanged",
          "description": "Recreate the disk if source (image, snapshot) of this disk is different from source of existing disk.",
          "value": "RECREATE_DISK_IF_SOURCE_CHANGED"
        },
        {
          "name": "UseExistingDisk",
          "description": "Use the existing disk, this is the default behaviour.",
          "value": "USE_EXISTING_DISK"
        }
      ]
    },
    "google-native:compute/alpha:AttachedDiskInitializeParamsResponse": {
      "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This field is persisted and returned for instanceTemplate and not returned in the context of instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk. Valid values are arm64 or x86_64."
        },
        "description": {
          "type": "string",
          "description": "An optional description. Provide this property when creating the disk."
        },
        "diskName": {
          "type": "string",
          "description": "Specifies the disk name. If not specified, the default is to use the name of the instance. If a disk with the same name already exists in the given region, the existing disk is attached to the new instance and the new disk is not created."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB. The size must be at least 10 GB. If you specify a sourceImage, which is required for boot disks, the default size is the size of the sourceImage. If you do not specify a sourceImage, the default disk size is 500 GB."
        },
        "diskType": {
          "type": "string",
          "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/pd-standard For a full list of acceptable values, see Persistent disk types. If you specify this field when creating a VM, you can provide either the full or partial URL. For example, the following values are valid: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType If you specify this field when creating or updating an instance template or all-instances configuration, specify the type of the disk, not the URL. For example: pd-standard."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options. Guest OS features are applied by merging initializeParams.guestOsFeatures and disks.guestOsFeatures"
        },
        "interface": {
          "type": "string",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "onUpdateAction": {
          "type": "string",
          "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk."
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required for each regional disk associated with the instance. Specify the URLs of the zones where the disk should be replicated to. You must provide exactly two replica zones, and one zone must be the same as the instance zone."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations. Specified using the full or partial URL. For instance template, specify only the resource policy name."
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family If the source image is deleted later, this field will not be set."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. InstanceTemplate and InstancePropertiesPatch 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."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant-snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceInstantSnapshot initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: us-central1-a/instantSnapshots/my-backup If the source instant-snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: global/snapshots/my-backup If the source snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot."
        },
        "storagePool": {
          "type": "string",
          "description": "The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /storagePools/storagePool - projects/project/zones/zone/storagePools/storagePool - zones/zone/storagePools/storagePool "
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "description",
        "diskName",
        "diskSizeGb",
        "diskType",
        "enableConfidentialCompute",
        "guestOsFeatures",
        "interface",
        "labels",
        "licenseCodes",
        "licenses",
        "multiWriter",
        "onUpdateAction",
        "provisionedIops",
        "provisionedThroughput",
        "replicaZones",
        "resourceManagerTags",
        "resourcePolicies",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceInstantSnapshot",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "storagePool"
      ]
    },
    "google-native:compute/alpha:AttachedDiskInterface": {
      "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks.",
      "type": "string",
      "enum": [
        {
          "name": "Nvdimm",
          "value": "NVDIMM"
        },
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        }
      ]
    },
    "google-native:compute/alpha:AttachedDiskMode": {
      "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
      "type": "string",
      "enum": [
        {
          "name": "ReadOnly",
          "description": "Attaches this disk in read-only mode. Multiple virtual machines can use a disk in read-only mode at a time.",
          "value": "READ_ONLY"
        },
        {
          "name": "ReadWrite",
          "description": "*[Default]* Attaches this disk in read-write mode. Only one virtual machine at a time can be attached to a disk in read-write mode.",
          "value": "READ_WRITE"
        }
      ]
    },
    "google-native:compute/alpha:AttachedDiskResponse": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk. Valid values are ARM64 or X86_64."
        },
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Encrypts or decrypts a disk using a customer-supplied encryption key. If 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. If 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. If 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. Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in GB."
        },
        "forceAttach": {
          "type": "boolean",
          "description": "[Input Only] 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."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "index": {
          "type": "integer",
          "description": "A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number."
        },
        "initializeParams": {
          "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskInitializeParamsResponse",
          "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#attachedDisk for attached disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any valid publicly visible licenses."
        },
        "locked": {
          "type": "boolean",
          "description": "Whether to indicate the attached disk is locked. The locked disk is not allowed to be detached from the instance, or to be used as the source of the snapshot creation, and the image creation. The instance with at least one locked attached disk is not allow to be used as source of machine image creation, instant snapshot creation, and not allowed to be deleted with --keep-disk parameter set to true for locked disks."
        },
        "mode": {
          "type": "string",
          "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode."
        },
        "savedState": {
          "type": "string",
          "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Falpha:InitialStateConfigResponse",
          "description": "shielded vm initial state stored on disk"
        },
        "source": {
          "type": "string",
          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks. Note that for InstanceTemplate, specify the disk name for zonal disk, and the URL for regional disk."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of user provided licenses. It represents a list of URLs to the license resource. Unlike regular licenses, user provided licenses can be modified after the disk is created."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "autoDelete",
        "boot",
        "deviceName",
        "diskEncryptionKey",
        "diskSizeGb",
        "forceAttach",
        "guestOsFeatures",
        "index",
        "initializeParams",
        "interface",
        "kind",
        "licenses",
        "locked",
        "mode",
        "savedState",
        "shieldedInstanceInitialState",
        "source",
        "type",
        "userLicenses"
      ]
    },
    "google-native:compute/alpha:AttachedDiskSavedState": {
      "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api.",
      "type": "string",
      "enum": [
        {
          "name": "DiskSavedStateUnspecified",
          "description": "*[Default]* Disk state has not been preserved.",
          "value": "DISK_SAVED_STATE_UNSPECIFIED"
        },
        {
          "name": "Preserved",
          "description": "Disk state has been preserved.",
          "value": "PRESERVED"
        }
      ]
    },
    "google-native:compute/alpha:AttachedDiskType": {
      "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
      "type": "string",
      "enum": [
        {
          "name": "Persistent",
          "value": "PERSISTENT"
        },
        {
          "name": "Scratch",
          "value": "SCRATCH"
        }
      ]
    },
    "google-native:compute/alpha:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "exemptedMembers",
        "service"
      ]
    },
    "google-native:compute/alpha:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logType": {
          "$ref": "#/types/google-native:compute%2Falpha:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "ignoreChildExemptions",
        "logType"
      ]
    },
    "google-native:compute/alpha:AuthenticationPolicy": {
      "description": "[Deprecated] The authentication settings for the backend service. The authentication settings for the backend service.",
      "properties": {
        "origins": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:OriginAuthenticationMethod"
          },
          "description": "List of authentication methods that can be used for origin authentication. Similar to peers, these will be evaluated in order the first valid one will be used to set origin identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if origin authentication is not required."
        },
        "peers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PeerAuthenticationMethod"
          },
          "description": "List of authentication methods that can be used for peer authentication. They will be evaluated in order the first valid one will be used to set peer identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if peer authentication is not required."
        },
        "principalBinding": {
          "$ref": "#/types/google-native:compute%2Falpha:AuthenticationPolicyPrincipalBinding",
          "description": "Define whether peer or origin identity should be used for principal. Default value is USE_PEER. If peer (or origin) identity is not available, either because peer/origin authentication is not defined, or failed, principal will be left unset. In other words, binding rule does not affect the decision to accept or reject request. This field can be set to one of the following: USE_PEER: Principal will be set to the identity from peer authentication. USE_ORIGIN: Principal will be set to the identity from origin authentication."
        },
        "serverTlsContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsContext",
          "description": "Configures the mechanism to obtain server-side security certificates and identity information."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AuthenticationPolicyPrincipalBinding": {
      "description": "Define whether peer or origin identity should be used for principal. Default value is USE_PEER. If peer (or origin) identity is not available, either because peer/origin authentication is not defined, or failed, principal will be left unset. In other words, binding rule does not affect the decision to accept or reject request. This field can be set to one of the following: USE_PEER: Principal will be set to the identity from peer authentication. USE_ORIGIN: Principal will be set to the identity from origin authentication.",
      "type": "string",
      "enum": [
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "UseOrigin",
          "description": "Principal will be set to the identity from origin authentication.",
          "value": "USE_ORIGIN"
        },
        {
          "name": "UsePeer",
          "description": "Principal will be set to the identity from peer authentication.",
          "value": "USE_PEER"
        }
      ]
    },
    "google-native:compute/alpha:AuthenticationPolicyResponse": {
      "description": "[Deprecated] The authentication settings for the backend service. The authentication settings for the backend service.",
      "properties": {
        "origins": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:OriginAuthenticationMethodResponse"
          },
          "description": "List of authentication methods that can be used for origin authentication. Similar to peers, these will be evaluated in order the first valid one will be used to set origin identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if origin authentication is not required."
        },
        "peers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PeerAuthenticationMethodResponse"
          },
          "description": "List of authentication methods that can be used for peer authentication. They will be evaluated in order the first valid one will be used to set peer identity. If none of these methods pass, the request will be rejected with authentication failed error (401). Leave the list empty if peer authentication is not required."
        },
        "principalBinding": {
          "type": "string",
          "description": "Define whether peer or origin identity should be used for principal. Default value is USE_PEER. If peer (or origin) identity is not available, either because peer/origin authentication is not defined, or failed, principal will be left unset. In other words, binding rule does not affect the decision to accept or reject request. This field can be set to one of the following: USE_PEER: Principal will be set to the identity from peer authentication. USE_ORIGIN: Principal will be set to the identity from origin authentication."
        },
        "serverTlsContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsContextResponse",
          "description": "Configures the mechanism to obtain server-side security certificates and identity information."
        }
      },
      "type": "object",
      "required": [
        "origins",
        "peers",
        "principalBinding",
        "serverTlsContext"
      ]
    },
    "google-native:compute/alpha:AuthorizationConfig": {
      "description": "[Deprecated] Authorization configuration provides service-level and method-level access control for a service. control for a service.",
      "properties": {
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RbacPolicy"
          },
          "description": "List of RbacPolicies."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AuthorizationConfigResponse": {
      "description": "[Deprecated] Authorization configuration provides service-level and method-level access control for a service. control for a service.",
      "properties": {
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RbacPolicyResponse"
          },
          "description": "List of RbacPolicies."
        }
      },
      "type": "object",
      "required": [
        "policies"
      ]
    },
    "google-native:compute/alpha:AuthorizationLoggingOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "permissionType": {
          "$ref": "#/types/google-native:compute%2Falpha:AuthorizationLoggingOptionsPermissionType",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AuthorizationLoggingOptionsPermissionType": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "AdminRead",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_READ"
        },
        {
          "name": "AdminWrite",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_WRITE"
        },
        {
          "name": "DataRead",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_READ"
        },
        {
          "name": "DataWrite",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_WRITE"
        },
        {
          "name": "PermissionTypeUnspecified",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "PERMISSION_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:AuthorizationLoggingOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "permissionType": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "permissionType"
      ]
    },
    "google-native:compute/alpha:AutoscalerStatusDetailsResponse": {
      "properties": {
        "message": {
          "type": "string",
          "description": "The status message."
        },
        "type": {
          "type": "string",
          "description": "The type of error, warning, or notice returned. Current set of possible values: - ALL_INSTANCES_UNHEALTHY (WARNING): All instances in the instance group are unhealthy (not in RUNNING state). - BACKEND_SERVICE_DOES_NOT_EXIST (ERROR): There is no backend service attached to the instance group. - CAPPED_AT_MAX_NUM_REPLICAS (WARNING): Autoscaler recommends a size greater than maxNumReplicas. - CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE (WARNING): The custom metric samples are not exported often enough to be a credible base for autoscaling. - CUSTOM_METRIC_INVALID (ERROR): The custom metric that was specified does not exist or does not have the necessary labels. - MIN_EQUALS_MAX (WARNING): The minNumReplicas is equal to maxNumReplicas. This means the autoscaler cannot add or remove instances from the instance group. - MISSING_CUSTOM_METRIC_DATA_POINTS (WARNING): The autoscaler did not receive any data from the custom metric configured for autoscaling. - MISSING_LOAD_BALANCING_DATA_POINTS (WARNING): The autoscaler is configured to scale based on a load balancing signal but the instance group has not received any requests from the load balancer. - MODE_OFF (WARNING): Autoscaling is turned off. The number of instances in the group won't change automatically. The autoscaling configuration is preserved. - MODE_ONLY_UP (WARNING): Autoscaling is in the \"Autoscale only out\" mode. The autoscaler can add instances but not remove any. - MORE_THAN_ONE_BACKEND_SERVICE (ERROR): The instance group cannot be autoscaled because it has more than one backend service attached to it. - NOT_ENOUGH_QUOTA_AVAILABLE (ERROR): There is insufficient quota for the necessary resources, such as CPU or number of instances. - REGION_RESOURCE_STOCKOUT (ERROR): Shown only for regional autoscalers: there is a resource stockout in the chosen region. - SCALING_TARGET_DOES_NOT_EXIST (ERROR): The target to be scaled does not exist. - UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION (ERROR): Autoscaling does not work with an HTTP/S load balancer that has been configured for maxRate. - ZONE_RESOURCE_STOCKOUT (ERROR): For zonal autoscalers: there is a resource stockout in the chosen zone. For regional autoscalers: in at least one of the zones you're using there is a resource stockout. New values might be added in the future. Some of the values might not be available in all API versions."
        }
      },
      "type": "object",
      "required": [
        "message",
        "type"
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicy": {
      "description": "Cloud Autoscaler policy.",
      "properties": {
        "coolDownPeriodSec": {
          "type": "integer",
          "description": "The number of seconds that your application takes to initialize on a VM instance. This is referred to as the [initialization period](/compute/docs/autoscaler#cool_down_period). Specifying an accurate initialization period improves autoscaler decisions. For example, when scaling out, the autoscaler ignores data from VMs that are still initializing because those VMs might not yet represent normal usage of your application. The default initialization period is 60 seconds. Initialization periods might vary because of numerous factors. We recommend that you test how long your application takes to initialize. To do this, create a VM and time your application's startup process."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyCpuUtilization",
          "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
        },
        "customMetricUtilizations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyCustomMetricUtilization"
          },
          "description": "Configuration parameters of autoscaling based on a custom metric."
        },
        "loadBalancingUtilization": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyLoadBalancingUtilization",
          "description": "Configuration parameters of autoscaling based on load balancer."
        },
        "maxNumReplicas": {
          "type": "integer",
          "description": "The maximum number of instances that the autoscaler can scale out to. This is required when creating or updating an autoscaler. The maximum number of replicas must not be lower than minimal number of replicas."
        },
        "minNumReplicas": {
          "type": "integer",
          "description": "The minimum number of replicas that the autoscaler can scale in to. This cannot be less than 0. If not provided, autoscaler chooses a default value depending on maximum number of instances allowed."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyMode",
          "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\""
        },
        "scaleDownControl": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyScaleDownControl"
        },
        "scaleInControl": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyScaleInControl"
        },
        "scalingSchedules": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scaling schedules defined for an autoscaler. Multiple schedules can be set on an autoscaler, and they can overlap. During overlapping periods the greatest min_required_replicas of all scaling schedules is applied. Up to 128 scaling schedules are allowed."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AutoscalingPolicyCpuUtilization": {
      "description": "CPU utilization policy.",
      "properties": {
        "predictiveMethod": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyCpuUtilizationPredictiveMethod",
          "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target CPU utilization that the autoscaler maintains. Must be a float value in the range (0, 1]. If not specified, the default is 0.6. If the CPU level is below the target utilization, the autoscaler scales in the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization. If the average CPU is above the target utilization, the autoscaler scales out until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AutoscalingPolicyCpuUtilizationPredictiveMethod": {
      "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics",
          "value": "NONE"
        },
        {
          "name": "OptimizeAvailability",
          "description": "Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.",
          "value": "OPTIMIZE_AVAILABILITY"
        },
        {
          "name": "PredictiveMethodUnspecified",
          "value": "PREDICTIVE_METHOD_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand. This value is being DEPRECATED - it won't be promoted to beta and v1. Use OPTIMIZE_AVAILABILITY instead.",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicyCpuUtilizationResponse": {
      "description": "CPU utilization policy.",
      "properties": {
        "predictiveMethod": {
          "type": "string",
          "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target CPU utilization that the autoscaler maintains. Must be a float value in the range (0, 1]. If not specified, the default is 0.6. If the CPU level is below the target utilization, the autoscaler scales in the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization. If the average CPU is above the target utilization, the autoscaler scales out until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization."
        }
      },
      "type": "object",
      "required": [
        "predictiveMethod",
        "utilizationTarget"
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicyCustomMetricUtilization": {
      "description": "Custom utilization metric policy.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data. For the filter to be valid for autoscaling purposes, the following rules apply: - You can only use the AND operator for joining selectors. - You can only use direct equality comparison operator (=) without any functions for each selector. - You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. - The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels. If the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a *per-group metric* for the purpose of autoscaling. If not specified, the type defaults to gce_instance. Try to provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value."
        },
        "metric": {
          "type": "string",
          "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values. The metric must have a value type of INT64 or DOUBLE."
        },
        "singleInstanceAssignment": {
          "type": "number",
          "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler keeps the number of instances proportional to the value of this metric. The metric itself does not change value due to group resizing. A good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances. A bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target value of the metric that autoscaler maintains. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric. For example, a good metric to use as a utilization_target is https://www.googleapis.com/compute/v1/instance/network/received_bytes_count. The autoscaler works to keep this value constant for each of the instances."
        },
        "utilizationTargetType": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType",
          "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AutoscalingPolicyCustomMetricUtilizationResponse": {
      "description": "Custom utilization metric policy.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data. For the filter to be valid for autoscaling purposes, the following rules apply: - You can only use the AND operator for joining selectors. - You can only use direct equality comparison operator (=) without any functions for each selector. - You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. - The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels. If the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a *per-group metric* for the purpose of autoscaling. If not specified, the type defaults to gce_instance. Try to provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value."
        },
        "metric": {
          "type": "string",
          "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values. The metric must have a value type of INT64 or DOUBLE."
        },
        "singleInstanceAssignment": {
          "type": "number",
          "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler keeps the number of instances proportional to the value of this metric. The metric itself does not change value due to group resizing. A good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances. A bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target value of the metric that autoscaler maintains. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric. For example, a good metric to use as a utilization_target is https://www.googleapis.com/compute/v1/instance/network/received_bytes_count. The autoscaler works to keep this value constant for each of the instances."
        },
        "utilizationTargetType": {
          "type": "string",
          "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "metric",
        "singleInstanceAssignment",
        "utilizationTarget",
        "utilizationTargetType"
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType": {
      "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.",
      "type": "string",
      "enum": [
        {
          "name": "DeltaPerMinute",
          "description": "Sets the utilization target value for a cumulative or delta metric, expressed as the rate of growth per minute.",
          "value": "DELTA_PER_MINUTE"
        },
        {
          "name": "DeltaPerSecond",
          "description": "Sets the utilization target value for a cumulative or delta metric, expressed as the rate of growth per second.",
          "value": "DELTA_PER_SECOND"
        },
        {
          "name": "Gauge",
          "description": "Sets the utilization target value for a gauge metric. The autoscaler will collect the average utilization of the virtual machines from the last couple of minutes, and compare the value to the utilization target value to perform autoscaling.",
          "value": "GAUGE"
        }
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicyLoadBalancingUtilization": {
      "description": "Configuration parameters of autoscaling based on load balancing.",
      "properties": {
        "utilizationTarget": {
          "type": "number",
          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that the autoscaler maintains. Must be a positive float value. If not defined, the default is 0.8."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AutoscalingPolicyLoadBalancingUtilizationResponse": {
      "description": "Configuration parameters of autoscaling based on load balancing.",
      "properties": {
        "utilizationTarget": {
          "type": "number",
          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that the autoscaler maintains. Must be a positive float value. If not defined, the default is 0.8."
        }
      },
      "type": "object",
      "required": [
        "utilizationTarget"
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicyMode": {
      "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\"",
      "type": "string",
      "enum": [
        {
          "name": "Off",
          "description": "Do not automatically scale the MIG in or out. The recommended_size field contains the size of MIG that would be set if the actuation mode was enabled.",
          "value": "OFF"
        },
        {
          "name": "On",
          "description": "Automatically scale the MIG in and out according to the policy.",
          "value": "ON"
        },
        {
          "name": "OnlyScaleOut",
          "description": "Automatically create VMs according to the policy, but do not scale the MIG in.",
          "value": "ONLY_SCALE_OUT"
        },
        {
          "name": "OnlyUp",
          "description": "Automatically create VMs according to the policy, but do not scale the MIG in.",
          "value": "ONLY_UP"
        }
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicyResponse": {
      "description": "Cloud Autoscaler policy.",
      "properties": {
        "coolDownPeriodSec": {
          "type": "integer",
          "description": "The number of seconds that your application takes to initialize on a VM instance. This is referred to as the [initialization period](/compute/docs/autoscaler#cool_down_period). Specifying an accurate initialization period improves autoscaler decisions. For example, when scaling out, the autoscaler ignores data from VMs that are still initializing because those VMs might not yet represent normal usage of your application. The default initialization period is 60 seconds. Initialization periods might vary because of numerous factors. We recommend that you test how long your application takes to initialize. To do this, create a VM and time your application's startup process."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyCpuUtilizationResponse",
          "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
        },
        "customMetricUtilizations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyCustomMetricUtilizationResponse"
          },
          "description": "Configuration parameters of autoscaling based on a custom metric."
        },
        "loadBalancingUtilization": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyLoadBalancingUtilizationResponse",
          "description": "Configuration parameters of autoscaling based on load balancer."
        },
        "maxNumReplicas": {
          "type": "integer",
          "description": "The maximum number of instances that the autoscaler can scale out to. This is required when creating or updating an autoscaler. The maximum number of replicas must not be lower than minimal number of replicas."
        },
        "minNumReplicas": {
          "type": "integer",
          "description": "The minimum number of replicas that the autoscaler can scale in to. This cannot be less than 0. If not provided, autoscaler chooses a default value depending on maximum number of instances allowed."
        },
        "mode": {
          "type": "string",
          "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\""
        },
        "scaleDownControl": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyScaleDownControlResponse"
        },
        "scaleInControl": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyScaleInControlResponse"
        },
        "scalingSchedules": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scaling schedules defined for an autoscaler. Multiple schedules can be set on an autoscaler, and they can overlap. During overlapping periods the greatest min_required_replicas of all scaling schedules is applied. Up to 128 scaling schedules are allowed."
        }
      },
      "type": "object",
      "required": [
        "coolDownPeriodSec",
        "cpuUtilization",
        "customMetricUtilizations",
        "loadBalancingUtilization",
        "maxNumReplicas",
        "minNumReplicas",
        "mode",
        "scaleDownControl",
        "scaleInControl",
        "scalingSchedules"
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicyScaleDownControl": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledDownReplicas": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercent",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AutoscalingPolicyScaleDownControlResponse": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledDownReplicas": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercentResponse",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object",
      "required": [
        "maxScaledDownReplicas",
        "timeWindowSec"
      ]
    },
    "google-native:compute/alpha:AutoscalingPolicyScaleInControl": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledInReplicas": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercent",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:AutoscalingPolicyScaleInControlResponse": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledInReplicas": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercentResponse",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object",
      "required": [
        "maxScaledInReplicas",
        "timeWindowSec"
      ]
    },
    "google-native:compute/alpha:Backend": {
      "description": "Message containing information of one individual backend.",
      "properties": {
        "balancingMode": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendBalancingMode",
          "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected."
        },
        "capacityScaler": {
          "type": "number",
          "description": "A multiplier applied to the backend's target capacity of its balancing mode. The default value is 1, which means the group serves up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. The valid ranges are 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service. Not available with backends that don't support using a balancingMode. This includes backends such as global internet NEGs, regional serverless NEGs, and PSC NEGs."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failover": {
          "type": "boolean",
          "description": "This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService."
        },
        "group": {
          "type": "string",
          "description": "The fully-qualified URL of an instance group or network endpoint group (NEG) resource. To determine what types of backends a load balancer supports, see the [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service#backends). You must use the *fully-qualified* URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported."
        },
        "maxConnections": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerEndpoint": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerInstance": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxRate": {
          "type": "integer",
          "description": "Defines a maximum number of HTTP requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerEndpoint": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerInstance": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxUtilization": {
          "type": "number",
          "description": "Optional parameter to define a target capacity for the UTILIZATION balancing mode. The valid range is [0.0, 1.0]. For usage guidelines, see Utilization balancing mode."
        },
        "preference": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendPreference",
          "description": "This field indicates whether this backend should be fully utilized before sending traffic to backends with default preference. The possible values are: - PREFERRED: Backends with this preference level will be filled up to their capacity limits first, based on RTT. - DEFAULT: If preferred backends don't have enough capacity, backends in this layer would be used and traffic would be assigned based on the load balancing algorithm you use. This is the default "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendBalancingMode": {
      "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected.",
      "type": "string",
      "enum": [
        {
          "name": "Connection",
          "description": "Balance based on the number of simultaneous connections.",
          "value": "CONNECTION"
        },
        {
          "name": "Rate",
          "description": "Balance based on requests per second (RPS).",
          "value": "RATE"
        },
        {
          "name": "Utilization",
          "description": "Balance based on the backend utilization.",
          "value": "UTILIZATION"
        }
      ]
    },
    "google-native:compute/alpha:BackendBucketCdnPolicy": {
      "description": "Message containing Cloud CDN configuration for a backend bucket.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha: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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicyCacheKeyPolicy",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicyCacheMode",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicyNegativeCachingPolicy"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendBucketCdnPolicyBypassCacheOnRequestHeader": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendBucketCdnPolicyBypassCacheOnRequestHeaderResponse": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object",
      "required": [
        "headerName"
      ]
    },
    "google-native:compute/alpha:BackendBucketCdnPolicyCacheKeyPolicy": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. Default parameters are always included. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendBucketCdnPolicyCacheKeyPolicyResponse": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. Default parameters are always included. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object",
      "required": [
        "includeHttpHeaders",
        "queryStringWhitelist"
      ]
    },
    "google-native:compute/alpha:BackendBucketCdnPolicyCacheMode": {
      "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
      "type": "string",
      "enum": [
        {
          "name": "CacheAllStatic",
          "description": "Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
          "value": "CACHE_ALL_STATIC"
        },
        {
          "name": "ForceCacheAll",
          "description": "Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content.",
          "value": "FORCE_CACHE_ALL"
        },
        {
          "name": "InvalidCacheMode",
          "value": "INVALID_CACHE_MODE"
        },
        {
          "name": "UseOriginHeaders",
          "description": "Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server.",
          "value": "USE_ORIGIN_HEADERS"
        }
      ]
    },
    "google-native:compute/alpha:BackendBucketCdnPolicyNegativeCachingPolicy": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendBucketCdnPolicyNegativeCachingPolicyResponse": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object",
      "required": [
        "code",
        "ttl"
      ]
    },
    "google-native:compute/alpha:BackendBucketCdnPolicyResponse": {
      "description": "Message containing Cloud CDN configuration for a backend bucket.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicyBypassCacheOnRequestHeaderResponse"
          },
          "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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicyCacheKeyPolicyResponse",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "type": "string",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicyNegativeCachingPolicyResponse"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        },
        "signedUrlKeyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the keys for signing request URLs."
        }
      },
      "type": "object",
      "required": [
        "bypassCacheOnRequestHeaders",
        "cacheKeyPolicy",
        "cacheMode",
        "clientTtl",
        "defaultTtl",
        "maxTtl",
        "negativeCaching",
        "negativeCachingPolicy",
        "requestCoalescing",
        "serveWhileStale",
        "signedUrlCacheMaxAgeSec",
        "signedUrlKeyNames"
      ]
    },
    "google-native:compute/alpha:BackendBucketCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/alpha:BackendPreference": {
      "description": "This field indicates whether this backend should be fully utilized before sending traffic to backends with default preference. The possible values are: - PREFERRED: Backends with this preference level will be filled up to their capacity limits first, based on RTT. - DEFAULT: If preferred backends don't have enough capacity, backends in this layer would be used and traffic would be assigned based on the load balancing algorithm you use. This is the default ",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "No preference.",
          "value": "DEFAULT"
        },
        {
          "name": "PreferenceUnspecified",
          "description": "If preference is unspecified, we set it to the DEFAULT value",
          "value": "PREFERENCE_UNSPECIFIED"
        },
        {
          "name": "Preferred",
          "description": "Traffic will be sent to this backend first.",
          "value": "PREFERRED"
        }
      ]
    },
    "google-native:compute/alpha:BackendResponse": {
      "description": "Message containing information of one individual backend.",
      "properties": {
        "balancingMode": {
          "type": "string",
          "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected."
        },
        "capacityScaler": {
          "type": "number",
          "description": "A multiplier applied to the backend's target capacity of its balancing mode. The default value is 1, which means the group serves up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. The valid ranges are 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service. Not available with backends that don't support using a balancingMode. This includes backends such as global internet NEGs, regional serverless NEGs, and PSC NEGs."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failover": {
          "type": "boolean",
          "description": "This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService."
        },
        "group": {
          "type": "string",
          "description": "The fully-qualified URL of an instance group or network endpoint group (NEG) resource. To determine what types of backends a load balancer supports, see the [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service#backends). You must use the *fully-qualified* URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported."
        },
        "maxConnections": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerEndpoint": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerInstance": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxRate": {
          "type": "integer",
          "description": "Defines a maximum number of HTTP requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerEndpoint": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerInstance": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxUtilization": {
          "type": "number",
          "description": "Optional parameter to define a target capacity for the UTILIZATION balancing mode. The valid range is [0.0, 1.0]. For usage guidelines, see Utilization balancing mode."
        },
        "preference": {
          "type": "string",
          "description": "This field indicates whether this backend should be fully utilized before sending traffic to backends with default preference. The possible values are: - PREFERRED: Backends with this preference level will be filled up to their capacity limits first, based on RTT. - DEFAULT: If preferred backends don't have enough capacity, backends in this layer would be used and traffic would be assigned based on the load balancing algorithm you use. This is the default "
        }
      },
      "type": "object",
      "required": [
        "balancingMode",
        "capacityScaler",
        "description",
        "failover",
        "group",
        "maxConnections",
        "maxConnectionsPerEndpoint",
        "maxConnectionsPerInstance",
        "maxRate",
        "maxRatePerEndpoint",
        "maxRatePerInstance",
        "maxUtilization",
        "preference"
      ]
    },
    "google-native:compute/alpha:BackendServiceCdnPolicy": {
      "description": "Message containing Cloud CDN configuration for a backend service.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha: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. The cache is bypassed for all cdnPolicy.cacheMode settings."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CacheKeyPolicy",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicyCacheMode",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicyNegativeCachingPolicy"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceCdnPolicyBypassCacheOnRequestHeader": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceCdnPolicyBypassCacheOnRequestHeaderResponse": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object",
      "required": [
        "headerName"
      ]
    },
    "google-native:compute/alpha:BackendServiceCdnPolicyCacheMode": {
      "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
      "type": "string",
      "enum": [
        {
          "name": "CacheAllStatic",
          "description": "Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
          "value": "CACHE_ALL_STATIC"
        },
        {
          "name": "ForceCacheAll",
          "description": "Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content.",
          "value": "FORCE_CACHE_ALL"
        },
        {
          "name": "InvalidCacheMode",
          "value": "INVALID_CACHE_MODE"
        },
        {
          "name": "UseOriginHeaders",
          "description": "Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server.",
          "value": "USE_ORIGIN_HEADERS"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceCdnPolicyNegativeCachingPolicy": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceCdnPolicyNegativeCachingPolicyResponse": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object",
      "required": [
        "code",
        "ttl"
      ]
    },
    "google-native:compute/alpha:BackendServiceCdnPolicyResponse": {
      "description": "Message containing Cloud CDN configuration for a backend service.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicyBypassCacheOnRequestHeaderResponse"
          },
          "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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CacheKeyPolicyResponse",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "type": "string",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicyNegativeCachingPolicyResponse"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        },
        "signedUrlKeyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the keys for signing request URLs."
        }
      },
      "type": "object",
      "required": [
        "bypassCacheOnRequestHeaders",
        "cacheKeyPolicy",
        "cacheMode",
        "clientTtl",
        "defaultTtl",
        "maxTtl",
        "negativeCaching",
        "negativeCachingPolicy",
        "requestCoalescing",
        "serveWhileStale",
        "signedUrlCacheMaxAgeSec",
        "signedUrlKeyNames"
      ]
    },
    "google-native:compute/alpha:BackendServiceCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceConnectionTrackingPolicy": {
      "description": "Connection Tracking configuration for this BackendService.",
      "properties": {
        "connectionPersistenceOnUnhealthyBackends": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends",
          "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence)."
        },
        "enableStrongAffinity": {
          "type": "boolean",
          "description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly."
        },
        "idleTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly."
        },
        "trackingMode": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceConnectionTrackingPolicyTrackingMode",
          "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode)."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends": {
      "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence).",
      "type": "string",
      "enum": [
        {
          "name": "AlwaysPersist",
          "value": "ALWAYS_PERSIST"
        },
        {
          "name": "DefaultForProtocol",
          "value": "DEFAULT_FOR_PROTOCOL"
        },
        {
          "name": "NeverPersist",
          "value": "NEVER_PERSIST"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceConnectionTrackingPolicyResponse": {
      "description": "Connection Tracking configuration for this BackendService.",
      "properties": {
        "connectionPersistenceOnUnhealthyBackends": {
          "type": "string",
          "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence)."
        },
        "enableStrongAffinity": {
          "type": "boolean",
          "description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly."
        },
        "idleTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly."
        },
        "trackingMode": {
          "type": "string",
          "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode)."
        }
      },
      "type": "object",
      "required": [
        "connectionPersistenceOnUnhealthyBackends",
        "enableStrongAffinity",
        "idleTimeoutSec",
        "trackingMode"
      ]
    },
    "google-native:compute/alpha:BackendServiceConnectionTrackingPolicyTrackingMode": {
      "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode).",
      "type": "string",
      "enum": [
        {
          "name": "InvalidTrackingMode",
          "value": "INVALID_TRACKING_MODE"
        },
        {
          "name": "PerConnection",
          "value": "PER_CONNECTION"
        },
        {
          "name": "PerSession",
          "value": "PER_SESSION"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceFailoverPolicy": {
      "description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
      "properties": {
        "disableConnectionDrainOnFailover": {
          "type": "boolean",
          "description": "This can be set to true only if the protocol is TCP. The default is false."
        },
        "dropTrafficIfUnhealthy": {
          "type": "boolean",
          "description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false."
        },
        "failoverRatio": {
          "type": "number",
          "description": "The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceFailoverPolicyResponse": {
      "description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
      "properties": {
        "disableConnectionDrainOnFailover": {
          "type": "boolean",
          "description": "This can be set to true only if the protocol is TCP. The default is false."
        },
        "dropTrafficIfUnhealthy": {
          "type": "boolean",
          "description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false."
        },
        "failoverRatio": {
          "type": "number",
          "description": "The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        }
      },
      "type": "object",
      "required": [
        "disableConnectionDrainOnFailover",
        "dropTrafficIfUnhealthy",
        "failoverRatio"
      ]
    },
    "google-native:compute/alpha:BackendServiceIAP": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientInfo": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIAPOAuth2ClientInfo",
          "description": "[Input Only] OAuth client info required to generate client id to be used for IAP."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field. @InputOnly"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceIAPOAuth2ClientInfo": {
      "properties": {
        "applicationName": {
          "type": "string",
          "description": "Application name to be used in OAuth consent screen."
        },
        "clientName": {
          "type": "string",
          "description": "Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend."
        },
        "developerEmailAddress": {
          "type": "string",
          "description": "Developer's information to be used in OAuth consent screen."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceIAPOAuth2ClientInfoResponse": {
      "properties": {
        "applicationName": {
          "type": "string",
          "description": "Application name to be used in OAuth consent screen."
        },
        "clientName": {
          "type": "string",
          "description": "Name of the client to be generated. Optional - If not provided, the name will be autogenerated by the backend."
        },
        "developerEmailAddress": {
          "type": "string",
          "description": "Developer's information to be used in OAuth consent screen."
        }
      },
      "type": "object",
      "required": [
        "applicationName",
        "clientName",
        "developerEmailAddress"
      ]
    },
    "google-native:compute/alpha:BackendServiceIAPResponse": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientInfo": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIAPOAuth2ClientInfoResponse",
          "description": "[Input Only] OAuth client info required to generate client id to be used for IAP."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field. @InputOnly"
        },
        "oauth2ClientSecretSha256": {
          "type": "string",
          "description": "SHA256 hash value for the field oauth2_client_secret above."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "oauth2ClientId",
        "oauth2ClientInfo",
        "oauth2ClientSecret",
        "oauth2ClientSecretSha256"
      ]
    },
    "google-native:compute/alpha:BackendServiceIpAddressSelectionPolicy": {
      "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Only",
          "description": "Only send IPv4 traffic to the backends of the Backend Service (Instance Group, Managed Instance Group, Network Endpoint Group) regardless of traffic from the client to the proxy. Only IPv4 health-checks are used to check the health of the backends. This is the default setting.",
          "value": "IPV4_ONLY"
        },
        {
          "name": "Ipv6Only",
          "description": "Only send IPv6 traffic to the backends of the Backend Service (Instance Group, Managed Instance Group, Network Endpoint Group) regardless of traffic from the client to the proxy. Only IPv6 health-checks are used to check the health of the backends.",
          "value": "IPV6_ONLY"
        },
        {
          "name": "IpAddressSelectionPolicyUnspecified",
          "description": "Unspecified IP address selection policy.",
          "value": "IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED"
        },
        {
          "name": "PreferIpv6",
          "description": "Prioritize the connection to the endpoints IPv6 address over its IPv4 address (provided there is a healthy IPv6 address).",
          "value": "PREFER_IPV6"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceLoadBalancingScheme": {
      "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "description": "Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "description": "Signifies that this will be used for Internal TCP/UDP Load Balancing.",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "description": "Signifies that this will be used for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "description": "Signifies that this will be used by Traffic Director.",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "InvalidLoadBalancingScheme",
          "value": "INVALID_LOAD_BALANCING_SCHEME"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceLocalityLbPolicy": {
      "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceLocalityLoadBalancingPolicyConfig": {
      "description": "Container for either a built-in LB policy supported by gRPC or Envoy or a custom one implemented by the end user.",
      "properties": {
        "customPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy"
        },
        "policy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigPolicy"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy": {
      "description": "The configuration for a custom policy implemented by the user and deployed with the client.",
      "properties": {
        "data": {
          "type": "string",
          "description": "An optional, arbitrary JSON object with configuration data, understood by a locally installed custom policy implementation."
        },
        "name": {
          "type": "string",
          "description": "Identifies the custom policy. The value should match the name of a custom implementation registered on the gRPC clients. It should follow protocol buffer message naming conventions and include the full path (for example, myorg.CustomLbPolicy). The maximum length is 256 characters. Do not specify the same custom policy more than once for a backend. If you do, the configuration is rejected. For an example of how to use this field, see Use a custom policy."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicyResponse": {
      "description": "The configuration for a custom policy implemented by the user and deployed with the client.",
      "properties": {
        "data": {
          "type": "string",
          "description": "An optional, arbitrary JSON object with configuration data, understood by a locally installed custom policy implementation."
        },
        "name": {
          "type": "string",
          "description": "Identifies the custom policy. The value should match the name of a custom implementation registered on the gRPC clients. It should follow protocol buffer message naming conventions and include the full path (for example, myorg.CustomLbPolicy). The maximum length is 256 characters. Do not specify the same custom policy more than once for a backend. If you do, the configuration is rejected. For an example of how to use this field, see Use a custom policy."
        }
      },
      "type": "object",
      "required": [
        "data",
        "name"
      ]
    },
    "google-native:compute/alpha:BackendServiceLocalityLoadBalancingPolicyConfigPolicy": {
      "description": "The configuration for a built-in load balancing policy.",
      "properties": {
        "name": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigPolicyName",
          "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceLocalityLoadBalancingPolicyConfigPolicyName": {
      "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceLocalityLoadBalancingPolicyConfigPolicyResponse": {
      "description": "The configuration for a built-in load balancing policy.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:compute/alpha:BackendServiceLocalityLoadBalancingPolicyConfigResponse": {
      "description": "Container for either a built-in LB policy supported by gRPC or Envoy or a custom one implemented by the end user.",
      "properties": {
        "customPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicyResponse"
        },
        "policy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigPolicyResponse"
        }
      },
      "type": "object",
      "required": [
        "customPolicy",
        "policy"
      ]
    },
    "google-native:compute/alpha:BackendServiceLogConfig": {
      "description": "The available logging options for the load balancer traffic served by this backend service.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for the load balancer traffic served by this backend service. The default value is false."
        },
        "optional": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLogConfigOptional",
          "description": "Deprecated in favor of optionalMode. This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL.",
          "deprecationMessage": "Deprecated in favor of optionalMode. This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL."
        },
        "optionalFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field can only be specified if logging is enabled for this backend service and \"logConfig.optionalMode\" was set to CUSTOM. Contains a list of optional fields you want to include in the logs. For example: serverInstance, serverGkeDetails.cluster, serverGkeDetails.pod.podNamespace"
        },
        "optionalMode": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLogConfigOptionalMode",
          "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL."
        },
        "sampleRate": {
          "type": "number",
          "description": "This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceLogConfigOptional": {
      "description": "Deprecated in favor of optionalMode. This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "description": "A subset of optional fields.",
          "value": "CUSTOM"
        },
        {
          "name": "ExcludeAllOptional",
          "description": "None optional fields.",
          "value": "EXCLUDE_ALL_OPTIONAL"
        },
        {
          "name": "IncludeAllOptional",
          "description": "All optional fields.",
          "value": "INCLUDE_ALL_OPTIONAL"
        },
        {
          "name": "UnspecifiedOptionalMode",
          "value": "UNSPECIFIED_OPTIONAL_MODE"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceLogConfigOptionalMode": {
      "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "description": "A subset of optional fields.",
          "value": "CUSTOM"
        },
        {
          "name": "ExcludeAllOptional",
          "description": "None optional fields.",
          "value": "EXCLUDE_ALL_OPTIONAL"
        },
        {
          "name": "IncludeAllOptional",
          "description": "All optional fields.",
          "value": "INCLUDE_ALL_OPTIONAL"
        },
        {
          "name": "UnspecifiedOptionalMode",
          "value": "UNSPECIFIED_OPTIONAL_MODE"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceLogConfigResponse": {
      "description": "The available logging options for the load balancer traffic served by this backend service.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for the load balancer traffic served by this backend service. The default value is false."
        },
        "optional": {
          "type": "string",
          "description": "Deprecated in favor of optionalMode. This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL.",
          "deprecationMessage": "Deprecated in favor of optionalMode. This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL."
        },
        "optionalFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field can only be specified if logging is enabled for this backend service and \"logConfig.optionalMode\" was set to CUSTOM. Contains a list of optional fields you want to include in the logs. For example: serverInstance, serverGkeDetails.cluster, serverGkeDetails.pod.podNamespace"
        },
        "optionalMode": {
          "type": "string",
          "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL."
        },
        "sampleRate": {
          "type": "number",
          "description": "This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "optional",
        "optionalFields",
        "optionalMode",
        "sampleRate"
      ]
    },
    "google-native:compute/alpha:BackendServiceProtocol": {
      "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "description": "ALL includes TCP, UDP, ICMP, ESP, AH and SCTP. Note that this should never be used together with target_xx_proxies.",
          "value": "ALL"
        },
        {
          "name": "Grpc",
          "description": "gRPC (available for Traffic Director).",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "description": "HTTP/2 with SSL.",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Ssl",
          "description": "TCP proxying with SSL.",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "description": "TCP proxying or TCP pass-through.",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "description": "UDP.",
          "value": "UDP"
        },
        {
          "name": "Unspecified",
          "description": "If a Backend Service has UNSPECIFIED as its protocol, it can be used with any L3/L4 Forwarding Rules.",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceSessionAffinity": {
      "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/alpha:BackendServiceUsedBy": {
      "properties": {
        "reference": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BackendServiceUsedByResponse": {
      "properties": {
        "reference": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "reference"
      ]
    },
    "google-native:compute/alpha:BackendServiceVpcNetworkScope": {
      "description": "The network scope of the backends that can be added to the backend service. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A backend service with the VPC scope set to GLOBAL_VPC_NETWORK is only allowed to have backends in global VPC networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the backend service is only allowed to have backends in regional networks in the same scope as the backend service. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
      "type": "string",
      "enum": [
        {
          "name": "GlobalVpcNetwork",
          "description": "The backend service can only have backends in global VPCs",
          "value": "GLOBAL_VPC_NETWORK"
        },
        {
          "name": "RegionalVpcNetwork",
          "description": "The backend service can only have backends in regional VPCs",
          "value": "REGIONAL_VPC_NETWORK"
        }
      ]
    },
    "google-native:compute/alpha:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "condition": {
          "$ref": "#/types/google-native:compute%2Falpha:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "condition": {
          "$ref": "#/types/google-native:compute%2Falpha:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "bindingId",
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:compute/alpha:BulkInsertInstanceResource": {
      "description": "A transient resource used in compute.instances.bulkInsert and compute.regionInstances.bulkInsert . This resource is not persisted anywhere, it is used only for processing the requests.",
      "properties": {
        "count": {
          "type": "string",
          "description": "The maximum number of instances to create."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceProperties",
          "description": "The instance properties defining the VM instances to be created. Required if sourceInstanceTemplate is not provided."
        },
        "locationPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:LocationPolicy",
          "description": "Policy for chosing target zone. For more information, see Create VMs in bulk ."
        },
        "minCount": {
          "type": "string",
          "description": "The minimum number of instances to create. If no min_count is specified then count is used as the default value. If min_count instances cannot be created, then no instances will be created and instances already created will be deleted."
        },
        "namePattern": {
          "type": "string",
          "description": "The string pattern used for the names of the VMs. Either name_pattern or per_instance_properties must be set. The pattern must contain one continuous sequence of placeholder hash characters (#) with each character corresponding to one digit of the generated instance name. Example: a name_pattern of inst-#### generates instance names such as inst-0001 and inst-0002. If existing instances in the same project and zone have names that match the name pattern then the generated instance numbers start after the biggest existing number. For example, if there exists an instance with name inst-0050, then instance names generated using the pattern inst-#### begin with inst-0051. The name pattern placeholder #...# can contain up to 18 characters."
        },
        "perInstanceProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Per-instance properties to be set on individual instances. Keys of this map specify requested instance names. Can be empty if name_pattern is used."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies the instance template from which to create instances. You may combine sourceInstanceTemplate with instanceProperties to override specific values from an existing instance template. Bulk API follows the semantics of JSON Merge Patch described by RFC 7396. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate This field is optional."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:BulkInsertInstanceResourceResponse": {
      "description": "A transient resource used in compute.instances.bulkInsert and compute.regionInstances.bulkInsert . This resource is not persisted anywhere, it is used only for processing the requests.",
      "properties": {
        "count": {
          "type": "string",
          "description": "The maximum number of instances to create."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesResponse",
          "description": "The instance properties defining the VM instances to be created. Required if sourceInstanceTemplate is not provided."
        },
        "locationPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:LocationPolicyResponse",
          "description": "Policy for chosing target zone. For more information, see Create VMs in bulk ."
        },
        "minCount": {
          "type": "string",
          "description": "The minimum number of instances to create. If no min_count is specified then count is used as the default value. If min_count instances cannot be created, then no instances will be created and instances already created will be deleted."
        },
        "namePattern": {
          "type": "string",
          "description": "The string pattern used for the names of the VMs. Either name_pattern or per_instance_properties must be set. The pattern must contain one continuous sequence of placeholder hash characters (#) with each character corresponding to one digit of the generated instance name. Example: a name_pattern of inst-#### generates instance names such as inst-0001 and inst-0002. If existing instances in the same project and zone have names that match the name pattern then the generated instance numbers start after the biggest existing number. For example, if there exists an instance with name inst-0050, then instance names generated using the pattern inst-#### begin with inst-0051. The name pattern placeholder #...# can contain up to 18 characters."
        },
        "perInstanceProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Per-instance properties to be set on individual instances. Keys of this map specify requested instance names. Can be empty if name_pattern is used."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies the instance template from which to create instances. You may combine sourceInstanceTemplate with instanceProperties to override specific values from an existing instance template. Bulk API follows the semantics of JSON Merge Patch described by RFC 7396. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate This field is optional."
        }
      },
      "type": "object",
      "required": [
        "count",
        "instanceProperties",
        "locationPolicy",
        "minCount",
        "namePattern",
        "perInstanceProperties",
        "sourceInstanceTemplate"
      ]
    },
    "google-native:compute/alpha:CacheKeyPolicy": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHost": {
          "type": "boolean",
          "description": "If true, requests to different hosts will be cached separately."
        },
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "includeNamedCookies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP cookies (by name) to be used in the cache key. The name=value pair will be used in the cache key Cloud CDN generates."
        },
        "includeProtocol": {
          "type": "boolean",
          "description": "If true, http and https requests will be cached separately."
        },
        "includeQueryString": {
          "type": "boolean",
          "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
        },
        "queryStringBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:CacheKeyPolicyResponse": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHost": {
          "type": "boolean",
          "description": "If true, requests to different hosts will be cached separately."
        },
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "includeNamedCookies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP cookies (by name) to be used in the cache key. The name=value pair will be used in the cache key Cloud CDN generates."
        },
        "includeProtocol": {
          "type": "boolean",
          "description": "If true, http and https requests will be cached separately."
        },
        "includeQueryString": {
          "type": "boolean",
          "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
        },
        "queryStringBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object",
      "required": [
        "includeHost",
        "includeHttpHeaders",
        "includeNamedCookies",
        "includeProtocol",
        "includeQueryString",
        "queryStringBlacklist",
        "queryStringWhitelist"
      ]
    },
    "google-native:compute/alpha:CallCredentials": {
      "description": "[Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server.",
      "properties": {
        "callCredentialType": {
          "$ref": "#/types/google-native:compute%2Falpha:CallCredentialsCallCredentialType",
          "description": "The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: - GCE_VM: The local GCE VM service account credentials are used to access the SDS server. - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server."
        },
        "fromPlugin": {
          "$ref": "#/types/google-native:compute%2Falpha:MetadataCredentialsFromPlugin",
          "description": "Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:CallCredentialsCallCredentialType": {
      "description": "The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: - GCE_VM: The local GCE VM service account credentials are used to access the SDS server. - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server.",
      "type": "string",
      "enum": [
        {
          "name": "FromPlugin",
          "description": "Custom authenticator credentials are used to access the SDS server.",
          "value": "FROM_PLUGIN"
        },
        {
          "name": "GceVm",
          "description": "The local GCE VM service account credentials are used to access the SDS server.",
          "value": "GCE_VM"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/alpha:CallCredentialsResponse": {
      "description": "[Deprecated] gRPC call credentials to access the SDS server. gRPC call credentials to access the SDS server.",
      "properties": {
        "callCredentialType": {
          "type": "string",
          "description": "The type of call credentials to use for GRPC requests to the SDS server. This field can be set to one of the following: - GCE_VM: The local GCE VM service account credentials are used to access the SDS server. - FROM_PLUGIN: Custom authenticator credentials are used to access the SDS server."
        },
        "fromPlugin": {
          "$ref": "#/types/google-native:compute%2Falpha:MetadataCredentialsFromPluginResponse",
          "description": "Custom authenticator credentials. Valid if callCredentialType is FROM_PLUGIN."
        }
      },
      "type": "object",
      "required": [
        "callCredentialType",
        "fromPlugin"
      ]
    },
    "google-native:compute/alpha:ChannelCredentials": {
      "description": "[Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server.",
      "properties": {
        "certificates": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsCertificatePaths",
          "description": "The call credentials to access the SDS server."
        },
        "channelCredentialType": {
          "$ref": "#/types/google-native:compute%2Falpha:ChannelCredentialsChannelCredentialType",
          "description": "The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ChannelCredentialsChannelCredentialType": {
      "description": "The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server.",
      "type": "string",
      "enum": [
        {
          "name": "Certificates",
          "description": "Use TLS certificates to access the SDS server.",
          "value": "CERTIFICATES"
        },
        {
          "name": "GceVm",
          "description": "Use local GCE VM credentials to access the SDS server.",
          "value": "GCE_VM"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/alpha:ChannelCredentialsResponse": {
      "description": "[Deprecated] gRPC channel credentials to access the SDS server. gRPC channel credentials to access the SDS server.",
      "properties": {
        "certificates": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsCertificatePathsResponse",
          "description": "The call credentials to access the SDS server."
        },
        "channelCredentialType": {
          "type": "string",
          "description": "The channel credentials to access the SDS server. This field can be set to one of the following: CERTIFICATES: Use TLS certificates to access the SDS server. GCE_VM: Use local GCE VM credentials to access the SDS server."
        }
      },
      "type": "object",
      "required": [
        "certificates",
        "channelCredentialType"
      ]
    },
    "google-native:compute/alpha:CircuitBreakers": {
      "description": "Settings controlling the volume of requests, connections and retries to this backend service.",
      "properties": {
        "connectTimeout": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "The timeout for new network connections to hosts."
        },
        "maxConnections": {
          "type": "integer",
          "description": "The maximum number of connections to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxPendingRequests": {
          "type": "integer",
          "description": "The maximum number of pending requests allowed to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRequests": {
          "type": "integer",
          "description": "The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit."
        },
        "maxRequestsPerConnection": {
          "type": "integer",
          "description": "Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRetries": {
          "type": "integer",
          "description": "The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:CircuitBreakersResponse": {
      "description": "Settings controlling the volume of requests, connections and retries to this backend service.",
      "properties": {
        "connectTimeout": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "The timeout for new network connections to hosts."
        },
        "maxConnections": {
          "type": "integer",
          "description": "The maximum number of connections to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxPendingRequests": {
          "type": "integer",
          "description": "The maximum number of pending requests allowed to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRequests": {
          "type": "integer",
          "description": "The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit."
        },
        "maxRequestsPerConnection": {
          "type": "integer",
          "description": "Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRetries": {
          "type": "integer",
          "description": "The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "connectTimeout",
        "maxConnections",
        "maxPendingRequests",
        "maxRequests",
        "maxRequestsPerConnection",
        "maxRetries"
      ]
    },
    "google-native:compute/alpha:ClientTlsSettings": {
      "description": "[Deprecated] The client side authentication settings for connection originating from the backend service. the backend service.",
      "properties": {
        "clientTlsContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsContext",
          "description": "Configures the mechanism to obtain client-side security certificates and identity information. This field is only applicable when mode is set to MUTUAL."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:ClientTlsSettingsMode",
          "description": "Indicates whether connections to this port should be secured using TLS. The value of this field determines how TLS is enforced. This can be set to one of the following values: DISABLE: Do not setup a TLS connection to the backends. SIMPLE: Originate a TLS connection to the backends. MUTUAL: Secure connections to the backends using mutual TLS by presenting client certificates for authentication."
        },
        "sni": {
          "type": "string",
          "description": "SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate's subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ClientTlsSettingsMode": {
      "description": "Indicates whether connections to this port should be secured using TLS. The value of this field determines how TLS is enforced. This can be set to one of the following values: DISABLE: Do not setup a TLS connection to the backends. SIMPLE: Originate a TLS connection to the backends. MUTUAL: Secure connections to the backends using mutual TLS by presenting client certificates for authentication.",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "Do not setup a TLS connection to the backends.",
          "value": "DISABLE"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Mutual",
          "description": "Secure connections to the backends using mutual TLS by presenting client certificates for authentication.",
          "value": "MUTUAL"
        },
        {
          "name": "Simple",
          "description": "Originate a TLS connection to the backends.",
          "value": "SIMPLE"
        }
      ]
    },
    "google-native:compute/alpha:ClientTlsSettingsResponse": {
      "description": "[Deprecated] The client side authentication settings for connection originating from the backend service. the backend service.",
      "properties": {
        "clientTlsContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsContextResponse",
          "description": "Configures the mechanism to obtain client-side security certificates and identity information. This field is only applicable when mode is set to MUTUAL."
        },
        "mode": {
          "type": "string",
          "description": "Indicates whether connections to this port should be secured using TLS. The value of this field determines how TLS is enforced. This can be set to one of the following values: DISABLE: Do not setup a TLS connection to the backends. SIMPLE: Originate a TLS connection to the backends. MUTUAL: Secure connections to the backends using mutual TLS by presenting client certificates for authentication."
        },
        "sni": {
          "type": "string",
          "description": "SNI string to present to the server during TLS handshake. This field is applicable only when mode is SIMPLE or MUTUAL."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of alternate names to verify the subject identity in the certificate.If specified, the proxy will verify that the server certificate's subject alt name matches one of the specified values. This field is applicable only when mode is SIMPLE or MUTUAL."
        }
      },
      "type": "object",
      "required": [
        "clientTlsContext",
        "mode",
        "sni",
        "subjectAltNames"
      ]
    },
    "google-native:compute/alpha:CommitmentResourceStatusCancellationInformationResponse": {
      "properties": {
        "canceledCommitment": {
          "$ref": "#/types/google-native:compute%2Falpha:MoneyResponse",
          "description": "An optional amount of CUDs canceled so far in the last 365 days."
        },
        "canceledCommitmentLastUpdatedTimestamp": {
          "type": "string",
          "description": "An optional last update time of canceled_commitment. RFC3339 text format."
        },
        "cancellationCap": {
          "$ref": "#/types/google-native:compute%2Falpha:MoneyResponse",
          "description": "An optional,the cancellation cap for how much commitments can be canceled in a rolling 365 per billing account."
        },
        "cancellationFee": {
          "$ref": "#/types/google-native:compute%2Falpha:MoneyResponse",
          "description": "An optional, cancellation fee."
        },
        "cancellationFeeExpirationTimestamp": {
          "type": "string",
          "description": "An optional, cancellation fee expiration time. RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "canceledCommitment",
        "canceledCommitmentLastUpdatedTimestamp",
        "cancellationCap",
        "cancellationFee",
        "cancellationFeeExpirationTimestamp"
      ]
    },
    "google-native:compute/alpha:CommitmentResourceStatusResponse": {
      "description": "[Output Only] Contains output only fields.",
      "properties": {
        "cancellationInformation": {
          "$ref": "#/types/google-native:compute%2Falpha:CommitmentResourceStatusCancellationInformationResponse",
          "description": "An optional, contains all the needed information of cancellation."
        }
      },
      "type": "object",
      "required": [
        "cancellationInformation"
      ]
    },
    "google-native:compute/alpha:Condition": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "iam": {
          "$ref": "#/types/google-native:compute%2Falpha:ConditionIam",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "op": {
          "$ref": "#/types/google-native:compute%2Falpha:ConditionOp",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "svc": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "sys": {
          "$ref": "#/types/google-native:compute%2Falpha:ConditionSys",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ConditionIam": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Approver",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "APPROVER"
        },
        {
          "name": "Attribution",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ATTRIBUTION"
        },
        {
          "name": "Authority",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "AUTHORITY"
        },
        {
          "name": "CredentialsType",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "CREDENTIALS_TYPE"
        },
        {
          "name": "CredsAssertion",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "CREDS_ASSERTION"
        },
        {
          "name": "JustificationType",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "JUSTIFICATION_TYPE"
        },
        {
          "name": "NoAttr",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ATTR"
        },
        {
          "name": "SecurityRealm",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "SECURITY_REALM"
        }
      ]
    },
    "google-native:compute/alpha:ConditionOp": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Discharged",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DISCHARGED"
        },
        {
          "name": "Equals",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "EQUALS"
        },
        {
          "name": "In",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "IN"
        },
        {
          "name": "NotEquals",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NOT_EQUALS"
        },
        {
          "name": "NotIn",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NOT_IN"
        },
        {
          "name": "NoOp",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_OP"
        }
      ]
    },
    "google-native:compute/alpha:ConditionResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "iam": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "op": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "svc": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "sys": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "iam",
        "op",
        "svc",
        "sys",
        "values"
      ]
    },
    "google-native:compute/alpha:ConditionSys": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Ip",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "IP"
        },
        {
          "name": "Name",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NAME"
        },
        {
          "name": "NoAttr",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ATTR"
        },
        {
          "name": "Region",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "REGION"
        },
        {
          "name": "Service",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "SERVICE"
        }
      ]
    },
    "google-native:compute/alpha:ConfidentialInstanceConfig": {
      "description": "A set of Confidential Instance options.",
      "properties": {
        "confidentialInstanceType": {
          "$ref": "#/types/google-native:compute%2Falpha:ConfidentialInstanceConfigConfidentialInstanceType",
          "description": "Defines the type of technology used by the confidential instance."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Defines whether the instance should have confidential compute enabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ConfidentialInstanceConfigConfidentialInstanceType": {
      "description": "Defines the type of technology used by the confidential instance.",
      "type": "string",
      "enum": [
        {
          "name": "ConfidentialInstanceTypeUnspecified",
          "description": "No type specified. Do not use this value.",
          "value": "CONFIDENTIAL_INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Sev",
          "description": "AMD Secure Encrypted Virtualization.",
          "value": "SEV"
        },
        {
          "name": "SevSnp",
          "description": "AMD Secure Encrypted Virtualization - Secure Nested Paging.",
          "value": "SEV_SNP"
        },
        {
          "name": "Tdx",
          "description": "Intel Trust Domain eXtension.",
          "value": "TDX"
        }
      ]
    },
    "google-native:compute/alpha:ConfidentialInstanceConfigResponse": {
      "description": "A set of Confidential Instance options.",
      "properties": {
        "confidentialInstanceType": {
          "type": "string",
          "description": "Defines the type of technology used by the confidential instance."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Defines whether the instance should have confidential compute enabled."
        }
      },
      "type": "object",
      "required": [
        "confidentialInstanceType",
        "enableConfidentialCompute"
      ]
    },
    "google-native:compute/alpha:ConnectionDraining": {
      "description": "Message containing connection draining configuration.",
      "properties": {
        "drainingTimeoutSec": {
          "type": "integer",
          "description": "Configures a duration timeout for existing requests on a removed backend instance. For supported load balancers and protocols, as described in Enabling connection draining."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ConnectionDrainingResponse": {
      "description": "Message containing connection draining configuration.",
      "properties": {
        "drainingTimeoutSec": {
          "type": "integer",
          "description": "Configures a duration timeout for existing requests on a removed backend instance. For supported load balancers and protocols, as described in Enabling connection draining."
        }
      },
      "type": "object",
      "required": [
        "drainingTimeoutSec"
      ]
    },
    "google-native:compute/alpha:ConsistentHashLoadBalancerSettings": {
      "description": "This message defines settings for a consistent hash style load balancer.",
      "properties": {
        "httpCookie": {
          "$ref": "#/types/google-native:compute%2Falpha:ConsistentHashLoadBalancerSettingsHttpCookie",
          "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpHeaderName": {
          "type": "string",
          "description": "The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD."
        },
        "minimumRingSize": {
          "type": "string",
          "description": "The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ConsistentHashLoadBalancerSettingsHttpCookie": {
      "description": "The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the cookie."
        },
        "path": {
          "type": "string",
          "description": "Path to set for the cookie."
        },
        "ttl": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Lifetime of the cookie."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ConsistentHashLoadBalancerSettingsHttpCookieResponse": {
      "description": "The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the cookie."
        },
        "path": {
          "type": "string",
          "description": "Path to set for the cookie."
        },
        "ttl": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Lifetime of the cookie."
        }
      },
      "type": "object",
      "required": [
        "name",
        "path",
        "ttl"
      ]
    },
    "google-native:compute/alpha:ConsistentHashLoadBalancerSettingsResponse": {
      "description": "This message defines settings for a consistent hash style load balancer.",
      "properties": {
        "httpCookie": {
          "$ref": "#/types/google-native:compute%2Falpha:ConsistentHashLoadBalancerSettingsHttpCookieResponse",
          "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpHeaderName": {
          "type": "string",
          "description": "The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD."
        },
        "minimumRingSize": {
          "type": "string",
          "description": "The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node."
        }
      },
      "type": "object",
      "required": [
        "httpCookie",
        "httpHeaderName",
        "minimumRingSize"
      ]
    },
    "google-native:compute/alpha:CorsPolicy": {
      "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard.",
      "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. Default is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies a regular expression that matches allowed origins. For more information about the regular expression syntax, see Syntax. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that is allowed to do CORS requests. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes."
        },
        "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."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "integer",
          "description": "Specifies how long results of a preflight request can be cached in seconds. This field translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:CorsPolicyResponse": {
      "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard.",
      "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. Default is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies a regular expression that matches allowed origins. For more information about the regular expression syntax, see Syntax. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that is allowed to do CORS requests. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes."
        },
        "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."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "integer",
          "description": "Specifies how long results of a preflight request can be cached in seconds. This field translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object",
      "required": [
        "allowCredentials",
        "allowHeaders",
        "allowMethods",
        "allowOriginRegexes",
        "allowOrigins",
        "disabled",
        "exposeHeaders",
        "maxAge"
      ]
    },
    "google-native:compute/alpha:CustomErrorResponsePolicy": {
      "description": "Specifies the custom error response policy that must be applied when the backend service or backend bucket responds with an error.",
      "properties": {
        "errorResponseRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyCustomErrorResponseRule"
          },
          "description": "Specifies rules for returning error responses. In 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. For example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX). If 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."
        },
        "errorService": {
          "type": "string",
          "description": "The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are: - https://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket - compute/v1/projects/project/global/backendBuckets/myBackendBucket - global/backendBuckets/myBackendBucket If 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. If load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured). errorService is not supported for internal or regional HTTP/HTTPS load balancers."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:CustomErrorResponsePolicyCustomErrorResponseRule": {
      "description": "Specifies the mapping between the response code that will be returned along with the custom error content and the response code returned by the backend service.",
      "properties": {
        "matchResponseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Valid values include: - 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. - 5xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 500 to 599. - 4xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 400 to 499. Values must be unique within matchResponseCodes and across all errorResponseRules of CustomErrorResponsePolicy."
        },
        "overrideResponseCode": {
          "type": "integer",
          "description": "The HTTP status code returned with the response containing the custom error content. If overrideResponseCode is not supplied, the same response code returned by the original backend bucket or backend service is returned to the client."
        },
        "path": {
          "type": "string",
          "description": "The full path to a file within backendBucket . For example: /errors/defaultError.html path must start with a leading slash. path cannot have trailing slashes. If 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. The value must be from 1 to 1024 characters"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:CustomErrorResponsePolicyCustomErrorResponseRuleResponse": {
      "description": "Specifies the mapping between the response code that will be returned along with the custom error content and the response code returned by the backend service.",
      "properties": {
        "matchResponseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Valid values include: - 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. - 5xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 500 to 599. - 4xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 400 to 499. Values must be unique within matchResponseCodes and across all errorResponseRules of CustomErrorResponsePolicy."
        },
        "overrideResponseCode": {
          "type": "integer",
          "description": "The HTTP status code returned with the response containing the custom error content. If overrideResponseCode is not supplied, the same response code returned by the original backend bucket or backend service is returned to the client."
        },
        "path": {
          "type": "string",
          "description": "The full path to a file within backendBucket . For example: /errors/defaultError.html path must start with a leading slash. path cannot have trailing slashes. If 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. The value must be from 1 to 1024 characters"
        }
      },
      "type": "object",
      "required": [
        "matchResponseCodes",
        "overrideResponseCode",
        "path"
      ]
    },
    "google-native:compute/alpha:CustomErrorResponsePolicyResponse": {
      "description": "Specifies the custom error response policy that must be applied when the backend service or backend bucket responds with an error.",
      "properties": {
        "errorResponseRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyCustomErrorResponseRuleResponse"
          },
          "description": "Specifies rules for returning error responses. In 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. For example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX). If 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."
        },
        "errorService": {
          "type": "string",
          "description": "The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are: - https://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket - compute/v1/projects/project/global/backendBuckets/myBackendBucket - global/backendBuckets/myBackendBucket If 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. If load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured). errorService is not supported for internal or regional HTTP/HTTPS load balancers."
        }
      },
      "type": "object",
      "required": [
        "errorResponseRules",
        "errorService"
      ]
    },
    "google-native:compute/alpha:CustomerEncryptionKey": {
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 "
        },
        "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. For example: \"kmsKeyServiceAccount\": \"name@project_id.iam.gserviceaccount.com/ "
        },
        "rawKey": {
          "type": "string",
          "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rawKey\": \"SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=\" "
        },
        "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. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rsaEncryptedKey\": \"ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFH z0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoD D6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oe==\" The key must meet the following requirements before you can provide it to Compute Engine: 1. The key is wrapped using a RSA public key certificate provided by Google. 2. After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Gets the RSA public key certificate provided by Google at: https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:CustomerEncryptionKeyResponse": {
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 "
        },
        "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. For example: \"kmsKeyServiceAccount\": \"name@project_id.iam.gserviceaccount.com/ "
        },
        "rawKey": {
          "type": "string",
          "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rawKey\": \"SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=\" "
        },
        "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. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rsaEncryptedKey\": \"ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFH z0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoD D6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oe==\" The key must meet the following requirements before you can provide it to Compute Engine: 1. The key is wrapped using a RSA public key certificate provided by Google. 2. After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Gets the RSA public key certificate provided by Google at: https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem "
        },
        "sha256": {
          "type": "string",
          "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName",
        "kmsKeyServiceAccount",
        "rawKey",
        "rsaEncryptedKey",
        "sha256"
      ]
    },
    "google-native:compute/alpha:DeprecationStatus": {
      "description": "Deprecation status for a public resource.",
      "properties": {
        "deleted": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "deprecated": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "obsolete": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "replacement": {
          "type": "string",
          "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
        },
        "state": {
          "$ref": "#/types/google-native:compute%2Falpha:DeprecationStatusState",
          "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error."
        },
        "stateOverride": {
          "$ref": "#/types/google-native:compute%2Falpha:RolloutPolicy",
          "description": "The rollout policy for this deprecation. This policy is only enforced by image family views. The rollout policy restricts the zones where the associated resource is considered in a deprecated state. When the rollout policy does not include the user specified zone, or if the zone is rolled out, the associated resource is considered in a deprecated state. The rollout policy for this deprecation is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:DeprecationStatusResponse": {
      "description": "Deprecation status for a public resource.",
      "properties": {
        "deleted": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "deprecated": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "obsolete": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "replacement": {
          "type": "string",
          "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
        },
        "state": {
          "type": "string",
          "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error."
        },
        "stateOverride": {
          "$ref": "#/types/google-native:compute%2Falpha:RolloutPolicyResponse",
          "description": "The rollout policy for this deprecation. This policy is only enforced by image family views. The rollout policy restricts the zones where the associated resource is considered in a deprecated state. When the rollout policy does not include the user specified zone, or if the zone is rolled out, the associated resource is considered in a deprecated state. The rollout policy for this deprecation is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
        }
      },
      "type": "object",
      "required": [
        "deleted",
        "deprecated",
        "obsolete",
        "replacement",
        "state",
        "stateOverride"
      ]
    },
    "google-native:compute/alpha:DeprecationStatusState": {
      "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "value": "ACTIVE"
        },
        {
          "name": "Deleted",
          "value": "DELETED"
        },
        {
          "name": "Deprecated",
          "value": "DEPRECATED"
        },
        {
          "name": "Obsolete",
          "value": "OBSOLETE"
        }
      ]
    },
    "google-native:compute/alpha:DiskAccessMode": {
      "description": "The access mode of the disk. - READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. - READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. - READ_ONLY_MANY: The AccessMode means the disk can be attached to multiple instances in RO mode. The AccessMode is only valid for Hyperdisk disk types.",
      "type": "string",
      "enum": [
        {
          "name": "ReadOnlyMany",
          "description": "The AccessMode means the disk can be attached to multiple instances in RO mode.",
          "value": "READ_ONLY_MANY"
        },
        {
          "name": "ReadWriteMany",
          "description": "The AccessMode means the disk can be attached to multiple instances in RW mode.",
          "value": "READ_WRITE_MANY"
        },
        {
          "name": "ReadWriteSingle",
          "description": "The default AccessMode, means the disk can be attached to single instance in RW mode.",
          "value": "READ_WRITE_SINGLE"
        }
      ]
    },
    "google-native:compute/alpha:DiskArchitecture": {
      "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/alpha:DiskAsyncReplication": {
      "properties": {
        "disk": {
          "type": "string",
          "description": "The other disk asynchronously replicated to or from the current disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:DiskAsyncReplicationResponse": {
      "properties": {
        "consistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy if replication was started on the disk as a member of a group."
        },
        "consistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy if replication was started on the disk as a member of a group."
        },
        "disk": {
          "type": "string",
          "description": "The other disk asynchronously replicated to or from the current disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        },
        "diskId": {
          "type": "string",
          "description": "The unique ID of the other disk asynchronously replicated to or from the current disk. This value identifies the exact disk that was used to create this replication. For example, if you started replicating the persistent disk from a disk that was later deleted and recreated under the same name, the disk ID would identify the exact version of the disk that was used."
        }
      },
      "type": "object",
      "required": [
        "consistencyGroupPolicy",
        "consistencyGroupPolicyId",
        "disk",
        "diskId"
      ]
    },
    "google-native:compute/alpha:DiskInstantiationConfig": {
      "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "customImage": {
          "type": "string",
          "description": "The custom source image to be used to restore this disk when instantiating this instance template."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the device name of the disk to which the configurations apply to."
        },
        "instantiateFrom": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskInstantiationConfigInstantiateFrom",
          "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:DiskInstantiationConfigInstantiateFrom": {
      "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. ",
      "type": "string",
      "enum": [
        {
          "name": "AttachReadOnly",
          "description": "Attach the existing disk in read-only mode. The request will fail if the disk was attached in read-write mode on the source instance. Applicable to: read-only disks.",
          "value": "ATTACH_READ_ONLY"
        },
        {
          "name": "Blank",
          "description": "Create a blank disk. The disk will be created unformatted. Applicable to: additional read-write disks, local SSDs.",
          "value": "BLANK"
        },
        {
          "name": "CustomImage",
          "description": "Use the custom image specified in the custom_image field. Applicable to: boot disk, additional read-write disks.",
          "value": "CUSTOM_IMAGE"
        },
        {
          "name": "Default",
          "description": "Use the default instantiation option for the corresponding type of disk. For boot disk and any other R/W disks, new custom images will be created from each disk. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes.",
          "value": "DEFAULT"
        },
        {
          "name": "DoNotInclude",
          "description": "Do not include the disk in the instance template. Applicable to: additional read-write disks, local SSDs, read-only disks.",
          "value": "DO_NOT_INCLUDE"
        },
        {
          "name": "SourceImage",
          "description": "Use the same source image used for creation of the source instance's corresponding disk. The request will fail if the source VM's disk was created from a snapshot. Applicable to: boot disk, additional read-write disks.",
          "value": "SOURCE_IMAGE"
        },
        {
          "name": "SourceImageFamily",
          "description": "Use the same source image family used for creation of the source instance's corresponding disk. The request will fail if the source image of the source disk does not belong to any image family. Applicable to: boot disk, additional read-write disks.",
          "value": "SOURCE_IMAGE_FAMILY"
        }
      ]
    },
    "google-native:compute/alpha:DiskInstantiationConfigResponse": {
      "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "customImage": {
          "type": "string",
          "description": "The custom source image to be used to restore this disk when instantiating this instance template."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the device name of the disk to which the configurations apply to."
        },
        "instantiateFrom": {
          "type": "string",
          "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. "
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "customImage",
        "deviceName",
        "instantiateFrom"
      ]
    },
    "google-native:compute/alpha:DiskInterface": {
      "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:DiskParams": {
      "description": "Additional disk params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:DiskParamsResponse": {
      "description": "Additional disk params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        }
      },
      "type": "object",
      "required": [
        "resourceManagerTags"
      ]
    },
    "google-native:compute/alpha:DiskResourceStatusAsyncReplicationStatusResponse": {
      "properties": {
        "state": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:compute/alpha:DiskResourceStatusResponse": {
      "properties": {
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskResourceStatusAsyncReplicationStatusResponse"
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key: disk, value: AsyncReplicationStatus message"
        },
        "usedBytes": {
          "type": "string",
          "description": "Space used by data stored in the disk (in bytes). Note that this field is set only when the disk is in a storage pool."
        }
      },
      "type": "object",
      "required": [
        "asyncPrimaryDisk",
        "asyncSecondaryDisks",
        "usedBytes"
      ]
    },
    "google-native:compute/alpha:DiskStorageType": {
      "description": "[Deprecated] Storage type of the persistent disk.",
      "type": "string",
      "enum": [
        {
          "name": "Hdd",
          "value": "HDD"
        },
        {
          "name": "Ssd",
          "value": "SSD"
        }
      ]
    },
    "google-native:compute/alpha:DisplayDevice": {
      "description": "A set of Display Device options",
      "properties": {
        "enableDisplay": {
          "type": "boolean",
          "description": "Defines whether the instance has Display enabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:DisplayDeviceResponse": {
      "description": "A set of Display Device options",
      "properties": {
        "enableDisplay": {
          "type": "boolean",
          "description": "Defines whether the instance has Display enabled."
        }
      },
      "type": "object",
      "required": [
        "enableDisplay"
      ]
    },
    "google-native:compute/alpha:DistributionPolicy": {
      "properties": {
        "targetShape": {
          "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicyTargetShape",
          "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType)."
        },
        "zones": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicyZoneConfiguration"
          },
          "description": "Zones where the regional managed instance group will create and manage its instances."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:DistributionPolicyResponse": {
      "properties": {
        "targetShape": {
          "type": "string",
          "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType)."
        },
        "zones": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicyZoneConfigurationResponse"
          },
          "description": "Zones where the regional managed instance group will create and manage its instances."
        }
      },
      "type": "object",
      "required": [
        "targetShape",
        "zones"
      ]
    },
    "google-native:compute/alpha:DistributionPolicyTargetShape": {
      "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType).",
      "type": "string",
      "enum": [
        {
          "name": "Any",
          "description": "The group picks zones for creating VM instances to fulfill the requested number of VMs within present resource constraints and to maximize utilization of unused zonal reservations. Recommended for batch workloads that do not require high availability.",
          "value": "ANY"
        },
        {
          "name": "AnySingleZone",
          "description": "The group creates all VM instances within a single zone. The zone is selected based on the present resource constraints and to maximize utilization of unused zonal reservations. Recommended for batch workloads with heavy interprocess communication.",
          "value": "ANY_SINGLE_ZONE"
        },
        {
          "name": "Balanced",
          "description": "The group prioritizes acquisition of resources, scheduling VMs in zones where resources are available while distributing VMs as evenly as possible across selected zones to minimize the impact of zonal failure. Recommended for highly available serving workloads.",
          "value": "BALANCED"
        },
        {
          "name": "Even",
          "description": "The group schedules VM instance creation and deletion to achieve and maintain an even number of managed instances across the selected zones. The distribution is even when the number of managed instances does not differ by more than 1 between any two zones. Recommended for highly available serving workloads.",
          "value": "EVEN"
        }
      ]
    },
    "google-native:compute/alpha:DistributionPolicyZoneConfiguration": {
      "properties": {
        "zone": {
          "type": "string",
          "description": "The URL of the zone. The zone must exist in the region where the managed instance group is located."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:DistributionPolicyZoneConfigurationResponse": {
      "properties": {
        "zone": {
          "type": "string",
          "description": "The URL of the zone. The zone must exist in the region where the managed instance group is located."
        }
      },
      "type": "object",
      "required": [
        "zone"
      ]
    },
    "google-native:compute/alpha:Duration": {
      "description": "A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". Range is approximately 10,000 years.",
      "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."
        },
        "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"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:DurationResponse": {
      "description": "A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". Range is approximately 10,000 years.",
      "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."
        },
        "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"
        }
      },
      "type": "object",
      "required": [
        "nanos",
        "seconds"
      ]
    },
    "google-native:compute/alpha:ErrorInfoResponse": {
      "description": "Describes the cause of the error with structured details. Example of an error when contacting the \"pubsub.googleapis.com\" API when it is not enabled: { \"reason\": \"API_DISABLED\" \"domain\": \"googleapis.com\" \"metadata\": { \"resource\": \"projects/123\", \"service\": \"pubsub.googleapis.com\" } } This response indicates that the pubsub.googleapis.com API is not enabled. Example of an error that is returned when attempting to create a Spanner instance in a region that is out of stock: { \"reason\": \"STOCKOUT\" \"domain\": \"spanner.googleapis.com\", \"metadata\": { \"availableRegions\": \"us-central1,us-east2\" } }",
      "properties": {
        "domain": {
          "type": "string",
          "description": "The 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\". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is \"googleapis.com\"."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional structured details about this error. Keys should match /[a-zA-Z0-9-_]/ and be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {\"instanceLimit\": \"100/request\"}, should be returned as, {\"instanceLimitPerRequest\": \"100\"}, if the client exceeds the number of instances that can be created in a single (batch) request."
        },
        "reason": {
          "type": "string",
          "description": "The 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. This should be at most 63 characters and match a regular expression of `A-Z+[A-Z0-9]`, which represents UPPER_SNAKE_CASE."
        }
      },
      "type": "object",
      "required": [
        "domain",
        "metadatas",
        "reason"
      ]
    },
    "google-native:compute/alpha:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:compute/alpha:ExternalVpnGatewayInterface": {
      "description": "The interface for the external VPN gateway.",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The numeric ID of this interface. The allowed input values for this id for different redundancy types of external VPN gateway: - SINGLE_IP_INTERNALLY_REDUNDANT - 0 - TWO_IPS_REDUNDANCY - 0, 1 - FOUR_IPS_REDUNDANCY - 0, 1, 2, 3 "
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface in the external VPN gateway. Only IPv4 is supported. This IP address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address of the interface in the external VPN gateway. This IPv6 address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine. Must specify an IPv6 address (not IPV4-mapped) using any format described in RFC 4291 (e.g. 2001:db8:0:0:2d9:51:0:0). The output format is RFC 5952 format (e.g. 2001:db8::2d9:51:0:0)."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ExternalVpnGatewayInterfaceResponse": {
      "description": "The interface for the external VPN gateway.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface in the external VPN gateway. Only IPv4 is supported. This IP address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address of the interface in the external VPN gateway. This IPv6 address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine. Must specify an IPv6 address (not IPV4-mapped) using any format described in RFC 4291 (e.g. 2001:db8:0:0:2d9:51:0:0). The output format is RFC 5952 format (e.g. 2001:db8::2d9:51:0:0)."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ipv6Address"
      ]
    },
    "google-native:compute/alpha:ExternalVpnGatewayRedundancyType": {
      "description": "Indicates the user-supplied redundancy type of this external VPN gateway.",
      "type": "string",
      "enum": [
        {
          "name": "FourIpsRedundancy",
          "description": "The external VPN gateway has four public IP addresses; at the time of writing this API, the AWS virtual private gateway is an example which has four public IP addresses for high availability connections; there should be two VPN connections in the AWS virtual private gateway , each AWS VPN connection has two public IP addresses; please make sure to put two public IP addresses from one AWS VPN connection into interfaces 0 and 1 of this external VPN gateway, and put the other two public IP addresses from another AWS VPN connection into interfaces 2 and 3 of this external VPN gateway. When displaying highly available configuration status for the VPN tunnels connected to FOUR_IPS_REDUNDANCY external VPN gateway, Google will always detect whether interfaces 0 and 1 are connected on one interface of HA Cloud VPN gateway, and detect whether interfaces 2 and 3 are connected to another interface of the HA Cloud VPN gateway.",
          "value": "FOUR_IPS_REDUNDANCY"
        },
        {
          "name": "SingleIpInternallyRedundant",
          "description": "The external VPN gateway has only one public IP address which internally provide redundancy or failover.",
          "value": "SINGLE_IP_INTERNALLY_REDUNDANT"
        },
        {
          "name": "TwoIpsRedundancy",
          "description": "The external VPN gateway has two public IP addresses which are redundant with each other, the following two types of setup on your on-premises side would have this type of redundancy: (1) Two separate on-premises gateways, each with one public IP address, the two on-premises gateways are redundant with each other. (2) A single on-premise gateway with two public IP addresses that are redundant with eatch other.",
          "value": "TWO_IPS_REDUNDANCY"
        }
      ]
    },
    "google-native:compute/alpha:FileContentBuffer": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The raw content in the secure keys file."
        },
        "fileType": {
          "$ref": "#/types/google-native:compute%2Falpha:FileContentBufferFileType",
          "description": "The file type of source file."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FileContentBufferFileType": {
      "description": "The file type of source file.",
      "type": "string",
      "enum": [
        {
          "name": "Bin",
          "value": "BIN"
        },
        {
          "name": "Undefined",
          "value": "UNDEFINED"
        },
        {
          "name": "X509",
          "value": "X509"
        }
      ]
    },
    "google-native:compute/alpha:FileContentBufferResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The raw content in the secure keys file."
        },
        "fileType": {
          "type": "string",
          "description": "The file type of source file."
        }
      },
      "type": "object",
      "required": [
        "content",
        "fileType"
      ]
    },
    "google-native:compute/alpha:FirewallAllowedItem": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FirewallAllowedItemResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/alpha:FirewallDeniedItem": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FirewallDeniedItemResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/alpha:FirewallDirection": {
      "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields.",
      "type": "string",
      "enum": [
        {
          "name": "Egress",
          "description": "Indicates that firewall should apply to outgoing traffic.",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "description": "Indicates that firewall should apply to incoming traffic.",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/alpha:FirewallLogConfig": {
      "description": "The available logging options for a firewall rule.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "This field denotes whether to enable logging for a particular firewall rule."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Falpha:FirewallLogConfigMetadata",
          "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FirewallLogConfigMetadata": {
      "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs.",
      "type": "string",
      "enum": [
        {
          "name": "ExcludeAllMetadata",
          "value": "EXCLUDE_ALL_METADATA"
        },
        {
          "name": "IncludeAllMetadata",
          "value": "INCLUDE_ALL_METADATA"
        }
      ]
    },
    "google-native:compute/alpha:FirewallLogConfigResponse": {
      "description": "The available logging options for a firewall rule.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "This field denotes whether to enable logging for a particular firewall rule."
        },
        "metadata": {
          "type": "string",
          "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "metadata"
      ]
    },
    "google-native:compute/alpha:FirewallPolicyAssociation": {
      "properties": {
        "attachmentTarget": {
          "type": "string",
          "description": "The target that the firewall policy is attached to."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of an association. The priority must be a positive value between 1 and 2147483647. Firewall Policies are evaluated from highest to lowest priority where 1 is the highest priority and 2147483647 is the lowest priority. The default value is `1000`. If two associations have the same priority then lexicographical order on association names is applied."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FirewallPolicyAssociationResponse": {
      "properties": {
        "attachmentTarget": {
          "type": "string",
          "description": "The target that the firewall policy is attached to."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. The display name of the firewall policy of the association."
        },
        "firewallPolicyId": {
          "type": "string",
          "description": "The firewall policy ID of the association."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of an association. The priority must be a positive value between 1 and 2147483647. Firewall Policies are evaluated from highest to lowest priority where 1 is the highest priority and 2147483647 is the lowest priority. The default value is `1000`. If two associations have the same priority then lexicographical order on association names is applied."
        },
        "shortName": {
          "type": "string",
          "description": "The short name of the firewall policy of the association."
        }
      },
      "type": "object",
      "required": [
        "attachmentTarget",
        "displayName",
        "firewallPolicyId",
        "name",
        "priority",
        "shortName"
      ]
    },
    "google-native:compute/alpha:FirewallPolicyRule": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the client connection triggers the rule. Valid actions are \"allow\", \"deny\" and \"goto_next\"."
        },
        "description": {
          "type": "string",
          "description": "An optional description for this resource."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleDirection",
          "description": "The direction in which this rule applies."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall policy rule is disabled. When set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist. If this is unspecified, the firewall policy rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules."
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleMatcher",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority."
        },
        "ruleName": {
          "type": "string",
          "description": "An optional name for the rule. This field is not a unique identifier and can be updated."
        },
        "securityProfileGroup": {
          "type": "string",
          "description": "A fully-qualified URL of a SecurityProfile resource instance. Example: https://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group Must be specified if action = 'apply_security_profile_group' and cannot be specified for other actions."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule."
        },
        "targetSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleSecureTag"
          },
          "description": "A list of secure tags that controls which instances the firewall rule applies to. If targetSecureTag are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the target_secure_tag are in INEFFECTIVE state, then this rule will be ignored. targetSecureTag may not be set at the same time as targetServiceAccounts. If neither targetServiceAccounts nor targetSecureTag are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        },
        "tlsInspect": {
          "type": "boolean",
          "description": "Boolean flag indicating if the traffic should be TLS decrypted. Can be set only if action = 'apply_security_profile_group' and cannot be set for other actions."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FirewallPolicyRuleDirection": {
      "description": "The direction in which this rule applies.",
      "type": "string",
      "enum": [
        {
          "name": "Egress",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/alpha:FirewallPolicyRuleMatcher": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "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."
        },
        "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."
        },
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "destThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleMatcherLayer4Config"
          },
          "description": "Pairs of IP protocols and ports that the rule should match."
        },
        "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."
        },
        "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."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "srcSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleSecureTag"
          },
          "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."
        },
        "srcThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FirewallPolicyRuleMatcherLayer4Config": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FirewallPolicyRuleMatcherLayer4ConfigResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/alpha:FirewallPolicyRuleMatcherResponse": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "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."
        },
        "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."
        },
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "destThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleMatcherLayer4ConfigResponse"
          },
          "description": "Pairs of IP protocols and ports that the rule should match."
        },
        "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."
        },
        "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."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "srcSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleSecureTagResponse"
          },
          "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."
        },
        "srcThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source."
        }
      },
      "type": "object",
      "required": [
        "destAddressGroups",
        "destFqdns",
        "destIpRanges",
        "destRegionCodes",
        "destThreatIntelligences",
        "layer4Configs",
        "srcAddressGroups",
        "srcFqdns",
        "srcIpRanges",
        "srcRegionCodes",
        "srcSecureTags",
        "srcThreatIntelligences"
      ]
    },
    "google-native:compute/alpha:FirewallPolicyRuleResponse": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the client connection triggers the rule. Valid actions are \"allow\", \"deny\" and \"goto_next\"."
        },
        "description": {
          "type": "string",
          "description": "An optional description for this resource."
        },
        "direction": {
          "type": "string",
          "description": "The direction in which this rule applies."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall policy rule is disabled. When set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist. If this is unspecified, the firewall policy rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyRule for firewall policy rules"
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleMatcherResponse",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority."
        },
        "ruleName": {
          "type": "string",
          "description": "An optional name for the rule. This field is not a unique identifier and can be updated."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Calculation of the complexity of a single firewall policy rule."
        },
        "securityProfileGroup": {
          "type": "string",
          "description": "A fully-qualified URL of a SecurityProfile resource instance. Example: https://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group Must be specified if action = 'apply_security_profile_group' and cannot be specified for other actions."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule."
        },
        "targetSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleSecureTagResponse"
          },
          "description": "A list of secure tags that controls which instances the firewall rule applies to. If targetSecureTag are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the target_secure_tag are in INEFFECTIVE state, then this rule will be ignored. targetSecureTag may not be set at the same time as targetServiceAccounts. If neither targetServiceAccounts nor targetSecureTag are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        },
        "tlsInspect": {
          "type": "boolean",
          "description": "Boolean flag indicating if the traffic should be TLS decrypted. Can be set only if action = 'apply_security_profile_group' and cannot be set for other actions."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "direction",
        "disabled",
        "enableLogging",
        "kind",
        "match",
        "priority",
        "ruleName",
        "ruleTupleCount",
        "securityProfileGroup",
        "targetResources",
        "targetSecureTags",
        "targetServiceAccounts",
        "tlsInspect"
      ]
    },
    "google-native:compute/alpha:FirewallPolicyRuleSecureTag": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the secure tag, created with TagManager's TagValue API."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FirewallPolicyRuleSecureTagResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the secure tag, created with TagManager's TagValue API."
        },
        "state": {
          "type": "string",
          "description": "State of the secure tag, either `EFFECTIVE` or `INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted or its network is deleted."
        }
      },
      "type": "object",
      "required": [
        "name",
        "state"
      ]
    },
    "google-native:compute/alpha:FirewallPolicyVpcNetworkScope": {
      "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
      "type": "string",
      "enum": [
        {
          "name": "GlobalVpcNetwork",
          "description": "The firewall policy is allowed to be attached only to global networks.",
          "value": "GLOBAL_VPC_NETWORK"
        },
        {
          "name": "RegionalVpcNetwork",
          "description": "The firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. This option is applicable only to regional firewall policies.",
          "value": "REGIONAL_VPC_NETWORK"
        }
      ]
    },
    "google-native:compute/alpha:FixedOrPercent": {
      "description": "Encapsulates numeric value that can be either absolute or relative.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed number of VM instances. This must be a positive integer."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FixedOrPercentResponse": {
      "description": "Encapsulates numeric value that can be either absolute or relative.",
      "properties": {
        "calculated": {
          "type": "integer",
          "description": "Absolute value of VM instances calculated based on the specific mode. - If the value is fixed, then the calculated value is equal to the fixed value. - If the value is a percent, then the calculated value is percent/100 * targetSize. For example, the calculated value of a 80% of a managed instance group with 150 instances would be (80/100 * 150) = 120 VM instances. If there is a remainder, the number is rounded. "
        },
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed number of VM instances. This must be a positive integer."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%."
        }
      },
      "type": "object",
      "required": [
        "calculated",
        "fixed",
        "percent"
      ]
    },
    "google-native:compute/alpha:ForwardingRuleIpProtocol": {
      "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
      "type": "string",
      "enum": [
        {
          "name": "Ah",
          "value": "AH"
        },
        {
          "name": "All",
          "value": "ALL"
        },
        {
          "name": "Esp",
          "value": "ESP"
        },
        {
          "name": "Icmp",
          "value": "ICMP"
        },
        {
          "name": "L3Default",
          "value": "L3_DEFAULT"
        },
        {
          "name": "Sctp",
          "value": "SCTP"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/alpha:ForwardingRuleIpVersion": {
      "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/alpha:ForwardingRuleLoadBalancingScheme": {
      "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/alpha:ForwardingRuleNetworkTier": {
      "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Select",
          "description": "Price competitive network tier, support for all networking products.",
          "value": "SELECT"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:ForwardingRulePscConnectionStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Accepted",
          "description": "The connection has been accepted by the producer.",
          "value": "ACCEPTED"
        },
        {
          "name": "Closed",
          "description": "The connection has been closed by the producer and will not serve traffic going forward.",
          "value": "CLOSED"
        },
        {
          "name": "NeedsAttention",
          "description": "The connection has been accepted by the producer, but the producer needs to take further action before the forwarding rule can serve traffic.",
          "value": "NEEDS_ATTENTION"
        },
        {
          "name": "Pending",
          "description": "The connection is pending acceptance by the producer.",
          "value": "PENDING"
        },
        {
          "name": "Rejected",
          "description": "The connection has been rejected by the producer.",
          "value": "REJECTED"
        },
        {
          "name": "StatusUnspecified",
          "value": "STATUS_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:ForwardingRuleServiceDirectoryRegistration": {
      "description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Service Directory namespace to register the forwarding rule under."
        },
        "service": {
          "type": "string",
          "description": "Service Directory service to register the forwarding rule under."
        },
        "serviceDirectoryRegion": {
          "type": "string",
          "description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ForwardingRuleServiceDirectoryRegistrationResponse": {
      "description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Service Directory namespace to register the forwarding rule under."
        },
        "service": {
          "type": "string",
          "description": "Service Directory service to register the forwarding rule under."
        },
        "serviceDirectoryRegion": {
          "type": "string",
          "description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region."
        }
      },
      "type": "object",
      "required": [
        "namespace",
        "service",
        "serviceDirectoryRegion"
      ]
    },
    "google-native:compute/alpha:FutureReservationPlanningStatus": {
      "description": "Planning state before being submitted for evaluation",
      "type": "string",
      "enum": [
        {
          "name": "Draft",
          "description": "Future Reservation is being drafted.",
          "value": "DRAFT"
        },
        {
          "name": "PlanningStatusUnspecified",
          "value": "PLANNING_STATUS_UNSPECIFIED"
        },
        {
          "name": "Submitted",
          "description": "Future Reservation has been submitted for evaluation by GCP.",
          "value": "SUBMITTED"
        }
      ]
    },
    "google-native:compute/alpha:FutureReservationSpecificSKUProperties": {
      "properties": {
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUAllocationReservedInstanceProperties",
          "description": "Properties of the SKU instances being reserved."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "The instance template that will be used to populate the ReservedInstanceProperties of the future reservation"
        },
        "totalCount": {
          "type": "string",
          "description": "Total number of instances for which capacity assurance is requested at a future time period."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FutureReservationSpecificSKUPropertiesResponse": {
      "properties": {
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUAllocationReservedInstancePropertiesResponse",
          "description": "Properties of the SKU instances being reserved."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "The instance template that will be used to populate the ReservedInstanceProperties of the future reservation"
        },
        "totalCount": {
          "type": "string",
          "description": "Total number of instances for which capacity assurance is requested at a future time period."
        }
      },
      "type": "object",
      "required": [
        "instanceProperties",
        "sourceInstanceTemplate",
        "totalCount"
      ]
    },
    "google-native:compute/alpha:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsResponse": {
      "description": "The properties of the last known good state for the Future Reservation.",
      "properties": {
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsResponse",
          "description": "The previous share settings of the Future Reservation."
        },
        "specificSkuProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationSpecificSKUPropertiesResponse",
          "description": "The previous instance related properties of the Future Reservation."
        },
        "timeWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationTimeWindowResponse",
          "description": "The previous time window of the Future Reservation."
        }
      },
      "type": "object",
      "required": [
        "shareSettings",
        "specificSkuProperties",
        "timeWindow"
      ]
    },
    "google-native:compute/alpha:FutureReservationStatusLastKnownGoodStateResponse": {
      "description": "The state that the future reservation will be reverted to should the amendment be declined.",
      "properties": {
        "description": {
          "type": "string",
          "description": "The description of the FutureReservation before an amendment was requested."
        },
        "futureReservationSpecs": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsResponse"
        },
        "lockTime": {
          "type": "string",
          "description": "The lock time of the FutureReservation before an amendment was requested."
        },
        "namePrefix": {
          "type": "string",
          "description": "The name prefix of the Future Reservation before an amendment was requested."
        },
        "procurementStatus": {
          "type": "string",
          "description": "The status of the last known good state for the Future Reservation."
        }
      },
      "type": "object",
      "required": [
        "description",
        "futureReservationSpecs",
        "lockTime",
        "namePrefix",
        "procurementStatus"
      ]
    },
    "google-native:compute/alpha:FutureReservationStatusResponse": {
      "description": "[Output only] Represents status related to the future reservation.",
      "properties": {
        "amendmentStatus": {
          "type": "string",
          "description": "The current status of the requested amendment."
        },
        "autoCreatedReservations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fully qualified urls of the automatically created reservations at start_time."
        },
        "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."
        },
        "lastKnownGoodState": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationStatusLastKnownGoodStateResponse",
          "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."
        },
        "lockTime": {
          "type": "string",
          "description": "Time when Future Reservation would become LOCKED, after which no modifications to Future Reservation will be allowed. Applicable only after the Future Reservation is in the APPROVED state. The lock_time is an RFC3339 string. The procurement_status will transition to PROCURING state at this time."
        },
        "procurementStatus": {
          "type": "string",
          "description": "Current state of this Future Reservation"
        },
        "specificSkuProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationStatusSpecificSKUPropertiesResponse"
        }
      },
      "type": "object",
      "required": [
        "amendmentStatus",
        "autoCreatedReservations",
        "fulfilledCount",
        "lastKnownGoodState",
        "lockTime",
        "procurementStatus",
        "specificSkuProperties"
      ]
    },
    "google-native:compute/alpha:FutureReservationStatusSpecificSKUPropertiesResponse": {
      "description": "Properties to be set for the Future Reservation.",
      "properties": {
        "sourceInstanceTemplateId": {
          "type": "string",
          "description": "ID of the instance template used to populate the Future Reservation properties."
        }
      },
      "type": "object",
      "required": [
        "sourceInstanceTemplateId"
      ]
    },
    "google-native:compute/alpha:FutureReservationTimeWindow": {
      "properties": {
        "duration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration"
        },
        "endTime": {
          "type": "string"
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the Future Reservation. The start_time is an RFC3339 string."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:FutureReservationTimeWindowResponse": {
      "properties": {
        "duration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse"
        },
        "endTime": {
          "type": "string"
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the Future Reservation. The start_time is an RFC3339 string."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "endTime",
        "startTime"
      ]
    },
    "google-native:compute/alpha:GRPCHealthCheck": {
      "properties": {
        "grpcServiceName": {
          "type": "string",
          "description": "The gRPC service name for the health check. This field is optional. The value of grpc_service_name has the following meanings by convention: - Empty service_name means the overall status of all services at the backend. - Non-empty service_name means the health of that gRPC service, as defined by the owner of the service. The grpc_service_name can only be ASCII."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Falpha:GRPCHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:GRPCHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/alpha:GRPCHealthCheckResponse": {
      "properties": {
        "grpcServiceName": {
          "type": "string",
          "description": "The gRPC service name for the health check. This field is optional. The value of grpc_service_name has the following meanings by convention: - Empty service_name means the overall status of all services at the backend. - Non-empty service_name means the health of that gRPC service, as defined by the owner of the service. The grpc_service_name can only be ASCII."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        }
      },
      "type": "object",
      "required": [
        "grpcServiceName",
        "port",
        "portName",
        "portSpecification"
      ]
    },
    "google-native:compute/alpha:GlobalAddressAddressType": {
      "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
      "type": "string",
      "enum": [
        {
          "name": "DnsForwarding",
          "description": "DNS resolver address in the subnetwork.",
          "value": "DNS_FORWARDING"
        },
        {
          "name": "External",
          "description": "A publicly visible external IP address.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "A private network IP address, for use with an Instance or Internal Load Balancer forwarding rule.",
          "value": "INTERNAL"
        },
        {
          "name": "UnspecifiedType",
          "value": "UNSPECIFIED_TYPE"
        }
      ]
    },
    "google-native:compute/alpha:GlobalAddressIpVersion": {
      "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/alpha:GlobalAddressIpv6EndpointType": {
      "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
      "type": "string",
      "enum": [
        {
          "name": "Netlb",
          "description": "Reserved IPv6 address can be used on network load balancer.",
          "value": "NETLB"
        },
        {
          "name": "Vm",
          "description": "Reserved IPv6 address can be used on VM.",
          "value": "VM"
        }
      ]
    },
    "google-native:compute/alpha:GlobalAddressNetworkTier": {
      "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Select",
          "description": "Price competitive network tier, support for all networking products.",
          "value": "SELECT"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:GlobalAddressPurpose": {
      "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
      "type": "string",
      "enum": [
        {
          "name": "DnsResolver",
          "description": "DNS resolver address in the subnetwork.",
          "value": "DNS_RESOLVER"
        },
        {
          "name": "GceEndpoint",
          "description": "VM internal/alias IP, Internal LB service IP, etc.",
          "value": "GCE_ENDPOINT"
        },
        {
          "name": "IpsecInterconnect",
          "description": "A regional internal IP address range reserved for the VLAN attachment that is used in HA VPN over Cloud Interconnect. This regional internal IP address range must not overlap with any IP address range of subnet/route in the VPC network and its peering networks. After the VLAN attachment is created with the reserved IP address range, when creating a new VPN gateway, its interface IP address is allocated from the associated VLAN attachment’s IP address range.",
          "value": "IPSEC_INTERCONNECT"
        },
        {
          "name": "NatAuto",
          "description": "External IP automatically reserved for Cloud NAT.",
          "value": "NAT_AUTO"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "A private network IP address that can be used to configure Private Service Connect. This purpose can be specified only for GLOBAL addresses of Type INTERNAL",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "A regional internal IP address range reserved for Serverless.",
          "value": "SERVERLESS"
        },
        {
          "name": "SharedLoadbalancerVip",
          "description": "A private network IP address that can be shared by multiple Internal Load Balancer forwarding rules.",
          "value": "SHARED_LOADBALANCER_VIP"
        },
        {
          "name": "VpcPeering",
          "description": "IP range for peer networks.",
          "value": "VPC_PEERING"
        }
      ]
    },
    "google-native:compute/alpha:GlobalForwardingRuleIpProtocol": {
      "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
      "type": "string",
      "enum": [
        {
          "name": "Ah",
          "value": "AH"
        },
        {
          "name": "All",
          "value": "ALL"
        },
        {
          "name": "Esp",
          "value": "ESP"
        },
        {
          "name": "Icmp",
          "value": "ICMP"
        },
        {
          "name": "L3Default",
          "value": "L3_DEFAULT"
        },
        {
          "name": "Sctp",
          "value": "SCTP"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/alpha:GlobalForwardingRuleIpVersion": {
      "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/alpha:GlobalForwardingRuleLoadBalancingScheme": {
      "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/alpha:GlobalForwardingRuleNetworkTier": {
      "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Select",
          "description": "Price competitive network tier, support for all networking products.",
          "value": "SELECT"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:GlobalForwardingRulePscConnectionStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Accepted",
          "description": "The connection has been accepted by the producer.",
          "value": "ACCEPTED"
        },
        {
          "name": "Closed",
          "description": "The connection has been closed by the producer and will not serve traffic going forward.",
          "value": "CLOSED"
        },
        {
          "name": "NeedsAttention",
          "description": "The connection has been accepted by the producer, but the producer needs to take further action before the forwarding rule can serve traffic.",
          "value": "NEEDS_ATTENTION"
        },
        {
          "name": "Pending",
          "description": "The connection is pending acceptance by the producer.",
          "value": "PENDING"
        },
        {
          "name": "Rejected",
          "description": "The connection has been rejected by the producer.",
          "value": "REJECTED"
        },
        {
          "name": "StatusUnspecified",
          "value": "STATUS_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:GlobalNetworkEndpointGroupClientPortMappingMode": {
      "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional.",
      "type": "string",
      "enum": [
        {
          "name": "ClientPortPerEndpoint",
          "description": "For each endpoint there is exactly one client port.",
          "value": "CLIENT_PORT_PER_ENDPOINT"
        },
        {
          "name": "PortMappingDisabled",
          "description": "NEG should not be used for mapping client port to destination.",
          "value": "PORT_MAPPING_DISABLED"
        }
      ]
    },
    "google-native:compute/alpha:GlobalNetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/alpha:GlobalNetworkEndpointGroupType": {
      "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now.",
      "type": "string",
      "enum": [
        {
          "name": "LoadBalancing",
          "description": "The network endpoint group is a backend of a load balancer.",
          "value": "LOAD_BALANCING"
        }
      ]
    },
    "google-native:compute/alpha:GlobalPublicDelegatedPrefixMode": {
      "description": "The public delegated prefix mode for IPv6 only.",
      "type": "string",
      "enum": [
        {
          "name": "Delegation",
          "description": "The public delegated prefix is used for further sub-delegation only. Such prefixes cannot set allocatablePrefixLength.",
          "value": "DELEGATION"
        },
        {
          "name": "ExternalIpv6ForwardingRuleCreation",
          "description": "The public delegated prefix is used for creating forwarding rules only. Such prefixes cannot set publicDelegatedSubPrefixes.",
          "value": "EXTERNAL_IPV6_FORWARDING_RULE_CREATION"
        }
      ]
    },
    "google-native:compute/alpha:GrpcServiceConfig": {
      "description": "[Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server.",
      "properties": {
        "callCredentials": {
          "$ref": "#/types/google-native:compute%2Falpha:CallCredentials",
          "description": "The call credentials to access the SDS server."
        },
        "channelCredentials": {
          "$ref": "#/types/google-native:compute%2Falpha:ChannelCredentials",
          "description": "The channel credentials to access the SDS server."
        },
        "targetUri": {
          "type": "string",
          "description": "The target URI of the SDS server."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:GrpcServiceConfigResponse": {
      "description": "[Deprecated] gRPC config to access the SDS server. gRPC config to access the SDS server.",
      "properties": {
        "callCredentials": {
          "$ref": "#/types/google-native:compute%2Falpha:CallCredentialsResponse",
          "description": "The call credentials to access the SDS server."
        },
        "channelCredentials": {
          "$ref": "#/types/google-native:compute%2Falpha:ChannelCredentialsResponse",
          "description": "The channel credentials to access the SDS server."
        },
        "targetUri": {
          "type": "string",
          "description": "The target URI of the SDS server."
        }
      },
      "type": "object",
      "required": [
        "callCredentials",
        "channelCredentials",
        "targetUri"
      ]
    },
    "google-native:compute/alpha:GuestOsFeature": {
      "description": "Guest OS features.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureType",
          "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:GuestOsFeatureResponse": {
      "description": "Guest OS features.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:compute/alpha:GuestOsFeatureType": {
      "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features.",
      "type": "string",
      "enum": [
        {
          "name": "BareMetalLinuxCompatible",
          "value": "BARE_METAL_LINUX_COMPATIBLE"
        },
        {
          "name": "FeatureTypeUnspecified",
          "value": "FEATURE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Gvnic",
          "value": "GVNIC"
        },
        {
          "name": "Idpf",
          "value": "IDPF"
        },
        {
          "name": "MultiIpSubnet",
          "value": "MULTI_IP_SUBNET"
        },
        {
          "name": "SecureBoot",
          "value": "SECURE_BOOT"
        },
        {
          "name": "SevCapable",
          "value": "SEV_CAPABLE"
        },
        {
          "name": "SevLiveMigratable",
          "value": "SEV_LIVE_MIGRATABLE"
        },
        {
          "name": "SevLiveMigratableV2",
          "value": "SEV_LIVE_MIGRATABLE_V2"
        },
        {
          "name": "SevSnpCapable",
          "value": "SEV_SNP_CAPABLE"
        },
        {
          "name": "TdxCapable",
          "value": "TDX_CAPABLE"
        },
        {
          "name": "UefiCompatible",
          "value": "UEFI_COMPATIBLE"
        },
        {
          "name": "VirtioScsiMultiqueue",
          "value": "VIRTIO_SCSI_MULTIQUEUE"
        },
        {
          "name": "Windows",
          "value": "WINDOWS"
        }
      ]
    },
    "google-native:compute/alpha:HTTP2HealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP/2 health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP/2 health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP/2 health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        },
        "weightReportMode": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheckWeightReportMode",
          "description": "Weight report mode. used for weighted Load Balancing."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HTTP2HealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/alpha:HTTP2HealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/alpha:HTTP2HealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP/2 health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP/2 health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP/2 health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        },
        "weightReportMode": {
          "type": "string",
          "description": "Weight report mode. used for weighted Load Balancing."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response",
        "weightReportMode"
      ]
    },
    "google-native:compute/alpha:HTTP2HealthCheckWeightReportMode": {
      "description": "Weight report mode. used for weighted Load Balancing.",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "Health Checker will not parse the header field.",
          "value": "DISABLE"
        },
        {
          "name": "DryRun",
          "description": "Health Checker will parse and report the weight in the header field, but load balancing will not be based on the weights and will use equal weights.",
          "value": "DRY_RUN"
        },
        {
          "name": "Enable",
          "description": "Health Checker will try to parse and report the weight in the header field, and load balancing will be based on the weights as long as all backends have a valid weight or only a subset of backends has the UNAVAILABLE_WEIGHT WeightError. The latter case is to continue the weighted load balancing while some backends are in TIMEOUT or UNKNOWN health status.",
          "value": "ENABLE"
        }
      ]
    },
    "google-native:compute/alpha:HTTPHealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        },
        "weightReportMode": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheckWeightReportMode",
          "description": "Weight report mode. used for weighted Load Balancing."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HTTPHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/alpha:HTTPHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/alpha:HTTPHealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        },
        "weightReportMode": {
          "type": "string",
          "description": "Weight report mode. used for weighted Load Balancing."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response",
        "weightReportMode"
      ]
    },
    "google-native:compute/alpha:HTTPHealthCheckWeightReportMode": {
      "description": "Weight report mode. used for weighted Load Balancing.",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "Health Checker will not parse the header field.",
          "value": "DISABLE"
        },
        {
          "name": "DryRun",
          "description": "Health Checker will parse and report the weight in the header field, but load balancing will not be based on the weights and will use equal weights.",
          "value": "DRY_RUN"
        },
        {
          "name": "Enable",
          "description": "Health Checker will try to parse and report the weight in the header field, and load balancing will be based on the weights as long as all backends have a valid weight or only a subset of backends has the UNAVAILABLE_WEIGHT WeightError. The latter case is to continue the weighted load balancing while some backends are in TIMEOUT or UNKNOWN health status.",
          "value": "ENABLE"
        }
      ]
    },
    "google-native:compute/alpha:HTTPSHealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTPS health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        },
        "weightReportMode": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheckWeightReportMode",
          "description": "Weight report mode. used for weighted Load Balancing."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HTTPSHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/alpha:HTTPSHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/alpha:HTTPSHealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTPS health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        },
        "weightReportMode": {
          "type": "string",
          "description": "Weight report mode. used for weighted Load Balancing."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response",
        "weightReportMode"
      ]
    },
    "google-native:compute/alpha:HTTPSHealthCheckWeightReportMode": {
      "description": "Weight report mode. used for weighted Load Balancing.",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "Health Checker will not parse the header field.",
          "value": "DISABLE"
        },
        {
          "name": "DryRun",
          "description": "Health Checker will parse and report the weight in the header field, but load balancing will not be based on the weights and will use equal weights.",
          "value": "DRY_RUN"
        },
        {
          "name": "Enable",
          "description": "Health Checker will try to parse and report the weight in the header field, and load balancing will be based on the weights as long as all backends have a valid weight or only a subset of backends has the UNAVAILABLE_WEIGHT WeightError. The latter case is to continue the weighted load balancing while some backends are in TIMEOUT or UNKNOWN health status.",
          "value": "ENABLE"
        }
      ]
    },
    "google-native:compute/alpha:HealthCheckLogConfig": {
      "description": "Configuration of logging on a health check. If logging is enabled, logs will be exported to Stackdriver.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default, which means no health check logging will be done."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HealthCheckLogConfigResponse": {
      "description": "Configuration of logging on a health check. If logging is enabled, logs will be exported to Stackdriver.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default, which means no health check logging will be done."
        }
      },
      "type": "object",
      "required": [
        "enable"
      ]
    },
    "google-native:compute/alpha:HealthCheckType": {
      "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ssl",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/alpha:HelpLinkResponse": {
      "description": "Describes a URL link.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Describes what the link offers."
        },
        "url": {
          "type": "string",
          "description": "The URL of the link."
        }
      },
      "type": "object",
      "required": [
        "description",
        "url"
      ]
    },
    "google-native:compute/alpha:HelpResponse": {
      "description": "Provides links to documentation or for performing an out of band action. For example, if a quota check failed with an error indicating the calling project hasn't enabled the accessed service, this can contain a URL pointing directly to the right place in the developer console to flip the bit.",
      "properties": {
        "links": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HelpLinkResponse"
          },
          "description": "URL(s) pointing to additional information on handling the current error."
        }
      },
      "type": "object",
      "required": [
        "links"
      ]
    },
    "google-native:compute/alpha:HostRule": {
      "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of host patterns to match. They must be valid hostnames with optional port numbers in the format host:port. * matches any string of ([a-z0-9-.]*). In that case, * must be the first character, and if followed by anything, the immediate following character must be either - or .. * based matching is not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "pathMatcher": {
          "type": "string",
          "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HostRuleResponse": {
      "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of host patterns to match. They must be valid hostnames with optional port numbers in the format host:port. * matches any string of ([a-z0-9-.]*). In that case, * must be the first character, and if followed by anything, the immediate following character must be either - or .. * based matching is not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "pathMatcher": {
          "type": "string",
          "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
        }
      },
      "type": "object",
      "required": [
        "description",
        "hosts",
        "pathMatcher"
      ]
    },
    "google-native:compute/alpha:HttpFaultAbort": {
      "description": "Specification for how requests are aborted as part of fault injection.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be from 200 to 599 inclusive. For gRPC protocol, the gRPC status code is mapped to HTTP status code according to this mapping table. HTTP status 200 is mapped to gRPC status UNKNOWN. Injecting an OK status is currently not supported by Traffic Director."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests that is aborted as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpFaultAbortResponse": {
      "description": "Specification for how requests are aborted as part of fault injection.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be from 200 to 599 inclusive. For gRPC protocol, the gRPC status code is mapped to HTTP status code according to this mapping table. HTTP status 200 is mapped to gRPC status UNKNOWN. Injecting an OK status is currently not supported by Traffic Director."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests that is aborted as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object",
      "required": [
        "httpStatus",
        "percentage"
      ]
    },
    "google-native:compute/alpha:HttpFaultDelay": {
      "description": "Specifies the delay introduced by the load balancer before forwarding the request to the backend service as part of fault injection.",
      "properties": {
        "fixedDelay": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Specifies the value of the fixed delay interval."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests for which a delay is introduced as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpFaultDelayResponse": {
      "description": "Specifies the delay introduced by the load balancer before forwarding the request to the backend service as part of fault injection.",
      "properties": {
        "fixedDelay": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Specifies the value of the fixed delay interval."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests for which a delay is introduced as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object",
      "required": [
        "fixedDelay",
        "percentage"
      ]
    },
    "google-native:compute/alpha:HttpFaultInjection": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced by the load balancer on a percentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted by the load balancer for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpFaultAbort",
          "description": "The specification for how client requests are aborted as part of fault injection."
        },
        "delay": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpFaultDelay",
          "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpFaultInjectionResponse": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced by the load balancer on a percentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted by the load balancer for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpFaultAbortResponse",
          "description": "The specification for how client requests are aborted as part of fault injection."
        },
        "delay": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpFaultDelayResponse",
          "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "delay"
      ]
    },
    "google-native:compute/alpha:HttpFilterConfig": {
      "description": "HttpFilterConfiguration supplies additional contextual settings for networkservices.HttpFilter resources enabled by Traffic Director.",
      "properties": {
        "config": {
          "type": "string",
          "description": "The configuration needed to enable the networkservices.HttpFilter resource. The configuration must be YAML formatted and only contain fields defined in the protobuf identified in configTypeUrl"
        },
        "configTypeUrl": {
          "type": "string",
          "description": "The fully qualified versioned proto3 type url of the protobuf that the filter expects for its contextual settings, for example: type.googleapis.com/google.protobuf.Struct"
        },
        "filterName": {
          "type": "string",
          "description": "Name of the networkservices.HttpFilter resource this configuration belongs to. This name must be known to the xDS client. Example: envoy.wasm"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpFilterConfigResponse": {
      "description": "HttpFilterConfiguration supplies additional contextual settings for networkservices.HttpFilter resources enabled by Traffic Director.",
      "properties": {
        "config": {
          "type": "string",
          "description": "The configuration needed to enable the networkservices.HttpFilter resource. The configuration must be YAML formatted and only contain fields defined in the protobuf identified in configTypeUrl"
        },
        "configTypeUrl": {
          "type": "string",
          "description": "The fully qualified versioned proto3 type url of the protobuf that the filter expects for its contextual settings, for example: type.googleapis.com/google.protobuf.Struct"
        },
        "filterName": {
          "type": "string",
          "description": "Name of the networkservices.HttpFilter resource this configuration belongs to. This name must be known to the xDS client. Example: envoy.wasm"
        }
      },
      "type": "object",
      "required": [
        "config",
        "configTypeUrl",
        "filterName"
      ]
    },
    "google-native:compute/alpha:HttpHeaderAction": {
      "description": "The request and response header transformations that take effect before the request is passed along to the selected backendService.",
      "properties": {
        "requestHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderOption"
          },
          "description": "Headers to add to a matching request before forwarding the request to the backendService."
        },
        "requestHeadersToRemove": {
          "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."
        },
        "responseHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderOption"
          },
          "description": "Headers to add the response before sending the response back to the client."
        },
        "responseHeadersToRemove": {
          "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpHeaderActionResponse": {
      "description": "The request and response header transformations that take effect before the request is passed along to the selected backendService.",
      "properties": {
        "requestHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderOptionResponse"
          },
          "description": "Headers to add to a matching request before forwarding the request to the backendService."
        },
        "requestHeadersToRemove": {
          "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."
        },
        "responseHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderOptionResponse"
          },
          "description": "Headers to add the response before sending the response back to the client."
        },
        "responseHeadersToRemove": {
          "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."
        }
      },
      "type": "object",
      "required": [
        "requestHeadersToAdd",
        "requestHeadersToRemove",
        "responseHeadersToAdd",
        "responseHeadersToRemove"
      ]
    },
    "google-native:compute/alpha:HttpHeaderMatch": {
      "description": "matchRule criteria for request header matches.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value should exactly match contents of exactMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\". When the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true, only non-binary user-specified custom metadata and the `content-type` header are supported. The following transport-level headers cannot be used in header matching rules: `:authority`, `:method`, `:path`, `:scheme`, `user-agent`, `accept-encoding`, `content-encoding`, `grpc-accept-encoding`, `grpc-encoding`, `grpc-previous-rpc-attempts`, `grpc-tags-bin`, `grpc-timeout` and `grpc-trace-bin`."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If set to false, the headerMatch is considered a match if the preceding match criteria are met. If set to true, the headerMatch is considered a match if the preceding match criteria are NOT met. The default setting is false. "
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with the contents of headerName must exist. The match takes place whether or not the request's header has a value. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:compute%2Falpha:Int64RangeMatch",
          "description": "The header value must be an integer and its value must be in the range specified in rangeMatch. If the header does not contain an integer, number or is empty, the match fails. For example for a range [-5, 0] - -3 will match. - 0 will not match. - 0.25 will not match. - -3someString will not match. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. rangeMatch is not supported for load balancers that have loadBalancingScheme set to EXTERNAL."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For more information about regular expression syntax, see Syntax. For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpHeaderMatchResponse": {
      "description": "matchRule criteria for request header matches.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value should exactly match contents of exactMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\". When the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true, only non-binary user-specified custom metadata and the `content-type` header are supported. The following transport-level headers cannot be used in header matching rules: `:authority`, `:method`, `:path`, `:scheme`, `user-agent`, `accept-encoding`, `content-encoding`, `grpc-accept-encoding`, `grpc-encoding`, `grpc-previous-rpc-attempts`, `grpc-tags-bin`, `grpc-timeout` and `grpc-trace-bin`."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If set to false, the headerMatch is considered a match if the preceding match criteria are met. If set to true, the headerMatch is considered a match if the preceding match criteria are NOT met. The default setting is false. "
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with the contents of headerName must exist. The match takes place whether or not the request's header has a value. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:compute%2Falpha:Int64RangeMatchResponse",
          "description": "The header value must be an integer and its value must be in the range specified in rangeMatch. If the header does not contain an integer, number or is empty, the match fails. For example for a range [-5, 0] - -3 will match. - 0 will not match. - 0.25 will not match. - -3someString will not match. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. rangeMatch is not supported for load balancers that have loadBalancingScheme set to EXTERNAL."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For more information about regular expression syntax, see Syntax. For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "headerName",
        "invertMatch",
        "prefixMatch",
        "presentMatch",
        "rangeMatch",
        "regexMatch",
        "suffixMatch"
      ]
    },
    "google-native:compute/alpha:HttpHeaderOption": {
      "description": "Specification determining how headers are added to requests or responses.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header."
        },
        "headerValue": {
          "type": "string",
          "description": "The value of the header to add."
        },
        "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. The default value is false. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpHeaderOptionResponse": {
      "description": "Specification determining how headers are added to requests or responses.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header."
        },
        "headerValue": {
          "type": "string",
          "description": "The value of the header to add."
        },
        "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. The default value is false. "
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "headerValue",
        "replace"
      ]
    },
    "google-native:compute/alpha:HttpQueryParameterMatch": {
      "description": "HttpRouteRuleMatch criteria for a request's query parameter.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter exactly matches the contents of exactMatch. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "name": {
          "type": "string",
          "description": "The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "regexMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For more information about regular expression syntax, see Syntax. Only one of presentMatch, exactMatch, or regexMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpQueryParameterMatchResponse": {
      "description": "HttpRouteRuleMatch criteria for a request's query parameter.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter exactly matches the contents of exactMatch. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "name": {
          "type": "string",
          "description": "The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "regexMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For more information about regular expression syntax, see Syntax. Only one of presentMatch, exactMatch, or regexMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED. "
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "name",
        "presentMatch",
        "regexMatch"
      ]
    },
    "google-native:compute/alpha:HttpRedirectAction": {
      "description": "Specifies settings for an HTTP redirect.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that is used in the redirect response instead of the one that was supplied in the request. The value must be from 1 to 255 characters."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to HTTPS. If set to false, the URL scheme of the redirected request remains the same as that of the request. This must only be set for URL maps used in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that is used in the redirect response instead of the one that was supplied in the request. pathRedirect cannot be supplied together with prefixRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "prefixRedirect": {
          "type": "string",
          "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch, retaining the remaining portion of the URL before redirecting the request. prefixRedirect cannot be supplied together with pathRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "redirectResponseCode": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectActionRedirectResponseCode",
          "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. "
        },
        "stripQuery": {
          "type": "boolean",
          "description": "If set to true, any accompanying query portion of the original URL is removed before redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpRedirectActionRedirectResponseCode": {
      "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. ",
      "type": "string",
      "enum": [
        {
          "name": "Found",
          "description": "Http Status Code 302 - Found.",
          "value": "FOUND"
        },
        {
          "name": "MovedPermanentlyDefault",
          "description": "Http Status Code 301 - Moved Permanently.",
          "value": "MOVED_PERMANENTLY_DEFAULT"
        },
        {
          "name": "PermanentRedirect",
          "description": "Http Status Code 308 - Permanent Redirect maintaining HTTP method.",
          "value": "PERMANENT_REDIRECT"
        },
        {
          "name": "SeeOther",
          "description": "Http Status Code 303 - See Other.",
          "value": "SEE_OTHER"
        },
        {
          "name": "TemporaryRedirect",
          "description": "Http Status Code 307 - Temporary Redirect maintaining HTTP method.",
          "value": "TEMPORARY_REDIRECT"
        }
      ]
    },
    "google-native:compute/alpha:HttpRedirectActionResponse": {
      "description": "Specifies settings for an HTTP redirect.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that is used in the redirect response instead of the one that was supplied in the request. The value must be from 1 to 255 characters."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to HTTPS. If set to false, the URL scheme of the redirected request remains the same as that of the request. This must only be set for URL maps used in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that is used in the redirect response instead of the one that was supplied in the request. pathRedirect cannot be supplied together with prefixRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "prefixRedirect": {
          "type": "string",
          "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch, retaining the remaining portion of the URL before redirecting the request. prefixRedirect cannot be supplied together with pathRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "redirectResponseCode": {
          "type": "string",
          "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. "
        },
        "stripQuery": {
          "type": "boolean",
          "description": "If set to true, any accompanying query portion of the original URL is removed before redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false. "
        }
      },
      "type": "object",
      "required": [
        "hostRedirect",
        "httpsRedirect",
        "pathRedirect",
        "prefixRedirect",
        "redirectResponseCode",
        "stripQuery"
      ]
    },
    "google-native:compute/alpha:HttpRetryPolicy": {
      "description": "The retry policy associates with HttpRouteRule",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number retries. This number must be > 0. If not specified, defaults to 1."
        },
        "perTryTimeout": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Specifies a non-zero timeout per retry attempt. If not specified, will use the timeout set in the HttpRouteAction field. If timeout in the HttpRouteAction field is not set, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: - 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. - gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504. - connect-failure: a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts. - 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. - 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. - cancelled: a retry is attempted if the gRPC status code in the response header is set to cancelled. - deadline-exceeded: a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded. - internal: a retry is attempted if the gRPC status code in the response header is set to internal. - resource-exhausted: a retry is attempted if the gRPC status code in the response header is set to resource-exhausted. - unavailable: a retry is attempted if the gRPC status code in the response header is set to unavailable. 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 "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpRetryPolicyResponse": {
      "description": "The retry policy associates with HttpRouteRule",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number retries. This number must be > 0. If not specified, defaults to 1."
        },
        "perTryTimeout": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Specifies a non-zero timeout per retry attempt. If not specified, will use the timeout set in the HttpRouteAction field. If timeout in the HttpRouteAction field is not set, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: - 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. - gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504. - connect-failure: a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts. - 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. - 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. - cancelled: a retry is attempted if the gRPC status code in the response header is set to cancelled. - deadline-exceeded: a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded. - internal: a retry is attempted if the gRPC status code in the response header is set to internal. - resource-exhausted: a retry is attempted if the gRPC status code in the response header is set to resource-exhausted. - unavailable: a retry is attempted if the gRPC status code in the response header is set to unavailable. 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 "
        }
      },
      "type": "object",
      "required": [
        "numRetries",
        "perTryTimeout",
        "retryConditions"
      ]
    },
    "google-native:compute/alpha:HttpRouteAction": {
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CorsPolicy",
          "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpFaultInjection",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As 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. Similarly requests from clients can be aborted by the load balancer for a percentage of requests. timeout and retry_policy is ignored by clients that are configured with a fault_injection_policy if: 1. The traffic is generated by fault injection AND 2. The fault injection is not a delay fault injection. Fault injection is not supported with the classic Application Load Balancer . To see which load balancers support fault injection, see Load balancing: Routing and traffic management features."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (known as *end-of-stream*), the duration in this field is computed from the beginning of the stream until the response has been processed, including all retries. A stream that does not complete in this duration is closed. If not specified, this field uses the maximum maxStreamDuration value among all backend services associated with the route. This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:RequestMirrorPolicy",
          "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. The 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. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRetryPolicy",
          "description": "Specifies the retry policy associated with this route."
        },
        "timeout": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "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. If not specified, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:compute%2Falpha:UrlRewrite",
          "description": "The spec to modify the URL of the request, before forwarding the request to the matched service. urlRewrite is the only action supported in UrlMaps for classic Application Load Balancers. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "weightedBackendServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:WeightedBackendService"
          },
          "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. After 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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpRouteActionResponse": {
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CorsPolicyResponse",
          "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpFaultInjectionResponse",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As 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. Similarly requests from clients can be aborted by the load balancer for a percentage of requests. timeout and retry_policy is ignored by clients that are configured with a fault_injection_policy if: 1. The traffic is generated by fault injection AND 2. The fault injection is not a delay fault injection. Fault injection is not supported with the classic Application Load Balancer . To see which load balancers support fault injection, see Load balancing: Routing and traffic management features."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (known as *end-of-stream*), the duration in this field is computed from the beginning of the stream until the response has been processed, including all retries. A stream that does not complete in this duration is closed. If not specified, this field uses the maximum maxStreamDuration value among all backend services associated with the route. This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:RequestMirrorPolicyResponse",
          "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. The 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. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRetryPolicyResponse",
          "description": "Specifies the retry policy associated with this route."
        },
        "timeout": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "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. If not specified, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:compute%2Falpha:UrlRewriteResponse",
          "description": "The spec to modify the URL of the request, before forwarding the request to the matched service. urlRewrite is the only action supported in UrlMaps for classic Application Load Balancers. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "weightedBackendServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:WeightedBackendServiceResponse"
          },
          "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. After 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."
        }
      },
      "type": "object",
      "required": [
        "corsPolicy",
        "faultInjectionPolicy",
        "maxStreamDuration",
        "requestMirrorPolicy",
        "retryPolicy",
        "timeout",
        "urlRewrite",
        "weightedBackendServices"
      ]
    },
    "google-native:compute/alpha:HttpRouteRule": {
      "description": "The HttpRouteRule setting specifies how to match an HTTP request and the corresponding routing action that load balancing proxies perform.",
      "properties": {
        "customErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicy",
          "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. If a policy for an error code is not configured for the RouteRule, 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is configured for the error code 404. If 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. When used in conjunction with routeRules.routeAction.retryPolicy, retries take precedence. Only once all retries are exhausted, the customErrorResponsePolicy is applied. While attempting a retry, if load balancer is successful in reaching the service, the customErrorResponsePolicy is ignored and the response from the service is returned to the client. customErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "description": {
          "type": "string",
          "description": "The short description conveying the intent of this routeRule. The description can have a maximum length of 1024 characters."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction value specified here is applied before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].routeAction.weightedBackendService.backendServiceWeightAction[].headerAction HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpFilterConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpFilterConfig"
          },
          "description": "Outbound route specific configuration for networkservices.HttpFilter resources enabled by Traffic Director. httpFilterConfigs only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpFilterMetadata": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpFilterConfig"
          },
          "description": "Outbound route specific metadata supplied to networkservices.HttpFilter resources enabled by Traffic Director. httpFilterMetadata only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details. The only configTypeUrl supported is type.googleapis.com/google.protobuf.Struct Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "matchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpRouteRuleMatch"
          },
          "description": "The list of criteria for matching attributes of a request to this routeRule. This list has OR semantics: the request matches this routeRule when any of the matchRules are satisfied. However predicates within a given matchRule have AND semantics. All predicates within a matchRule must match for the request to match the rule."
        },
        "priority": {
          "type": "integer",
          "description": "For routeRules within a given pathMatcher, priority determines the order in which a load balancer interprets routeRules. RouteRules are evaluated in order of priority, from the lowest to highest number. The priority of a rule decreases as its number increases (1, 2, 3, N+1). The first rule that matches the request is applied. You cannot configure two or more routeRules with the same priority. Priority for each rule must be set to a number from 0 to 2147483647 inclusive. Priority numbers can have gaps, which enable you to add or remove rules in the future without affecting the rest of the rules. For example, 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the future without any impact on existing rules."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteAction",
          "description": "In response to a matching matchRule, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of urlRedirect, service or routeAction.weightedBackendService must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a route rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectAction",
          "description": "When this rule is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpRouteRuleMatch": {
      "description": "HttpRouteRuleMatch specifies a set of criteria for matching requests to an HttpRouteRule. All specified criteria must be satisfied for a match to occur.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must exactly match the value specified in fullPathMatch after removing any query parameters and anchor that may be part of the original URL. fullPathMatch must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "headerMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderMatch"
          },
          "description": "Specifies a list of header match criteria, all of which must match corresponding headers in the request."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive. The default value is false. ignoreCase must not be used with regexMatch. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataFilter"
          },
          "description": "Opaque filter criteria used by the load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to the load balancer, xDS clients present node metadata. When there is a match, the relevant routing configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadata filters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here is applied after those specified in ForwardingRule that refers to the UrlMap this HttpRouteRuleMatch belongs to. metadataFilters only applies to load balancers that have loadBalancingScheme set to INTERNAL_SELF_MANAGED. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "pathTemplateMatch": {
          "type": "string",
          "description": "If specified, the route is a pattern match expression that must match the :path header once the query string is removed. A pattern match allows you to match - The value must be between 1 and 1024 characters - The pattern must start with a leading slash (\"/\") - There may be no more than 5 operators in pattern Precisely one of prefix_match, full_path_match, regex_match or path_template_match must be set."
        },
        "prefixMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the request's path must begin with the specified prefixMatch. prefixMatch must begin with a /. The value must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "queryParameterMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpQueryParameterMatch"
          },
          "description": "Specifies a list of query parameter match criteria, all of which must match corresponding query parameters in the request. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "regexMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For more information about regular expression syntax, see Syntax. Only one of prefixMatch, fullPathMatch or regexMatch must be specified. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:HttpRouteRuleMatchResponse": {
      "description": "HttpRouteRuleMatch specifies a set of criteria for matching requests to an HttpRouteRule. All specified criteria must be satisfied for a match to occur.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must exactly match the value specified in fullPathMatch after removing any query parameters and anchor that may be part of the original URL. fullPathMatch must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "headerMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderMatchResponse"
          },
          "description": "Specifies a list of header match criteria, all of which must match corresponding headers in the request."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive. The default value is false. ignoreCase must not be used with regexMatch. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by the load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to the load balancer, xDS clients present node metadata. When there is a match, the relevant routing configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadata filters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here is applied after those specified in ForwardingRule that refers to the UrlMap this HttpRouteRuleMatch belongs to. metadataFilters only applies to load balancers that have loadBalancingScheme set to INTERNAL_SELF_MANAGED. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "pathTemplateMatch": {
          "type": "string",
          "description": "If specified, the route is a pattern match expression that must match the :path header once the query string is removed. A pattern match allows you to match - The value must be between 1 and 1024 characters - The pattern must start with a leading slash (\"/\") - There may be no more than 5 operators in pattern Precisely one of prefix_match, full_path_match, regex_match or path_template_match must be set."
        },
        "prefixMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the request's path must begin with the specified prefixMatch. prefixMatch must begin with a /. The value must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "queryParameterMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpQueryParameterMatchResponse"
          },
          "description": "Specifies a list of query parameter match criteria, all of which must match corresponding query parameters in the request. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "regexMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For more information about regular expression syntax, see Syntax. Only one of prefixMatch, fullPathMatch or regexMatch must be specified. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        }
      },
      "type": "object",
      "required": [
        "fullPathMatch",
        "headerMatches",
        "ignoreCase",
        "metadataFilters",
        "pathTemplateMatch",
        "prefixMatch",
        "queryParameterMatches",
        "regexMatch"
      ]
    },
    "google-native:compute/alpha:HttpRouteRuleResponse": {
      "description": "The HttpRouteRule setting specifies how to match an HTTP request and the corresponding routing action that load balancing proxies perform.",
      "properties": {
        "customErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyResponse",
          "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. If a policy for an error code is not configured for the RouteRule, 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is configured for the error code 404. If 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. When used in conjunction with routeRules.routeAction.retryPolicy, retries take precedence. Only once all retries are exhausted, the customErrorResponsePolicy is applied. While attempting a retry, if load balancer is successful in reaching the service, the customErrorResponsePolicy is ignored and the response from the service is returned to the client. customErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "description": {
          "type": "string",
          "description": "The short description conveying the intent of this routeRule. The description can have a maximum length of 1024 characters."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction value specified here is applied before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].routeAction.weightedBackendService.backendServiceWeightAction[].headerAction HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpFilterConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpFilterConfigResponse"
          },
          "description": "Outbound route specific configuration for networkservices.HttpFilter resources enabled by Traffic Director. httpFilterConfigs only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpFilterMetadata": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpFilterConfigResponse"
          },
          "description": "Outbound route specific metadata supplied to networkservices.HttpFilter resources enabled by Traffic Director. httpFilterMetadata only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details. The only configTypeUrl supported is type.googleapis.com/google.protobuf.Struct Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "matchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpRouteRuleMatchResponse"
          },
          "description": "The list of criteria for matching attributes of a request to this routeRule. This list has OR semantics: the request matches this routeRule when any of the matchRules are satisfied. However predicates within a given matchRule have AND semantics. All predicates within a matchRule must match for the request to match the rule."
        },
        "priority": {
          "type": "integer",
          "description": "For routeRules within a given pathMatcher, priority determines the order in which a load balancer interprets routeRules. RouteRules are evaluated in order of priority, from the lowest to highest number. The priority of a rule decreases as its number increases (1, 2, 3, N+1). The first rule that matches the request is applied. You cannot configure two or more routeRules with the same priority. Priority for each rule must be set to a number from 0 to 2147483647 inclusive. Priority numbers can have gaps, which enable you to add or remove rules in the future without affecting the rest of the rules. For example, 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the future without any impact on existing rules."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteActionResponse",
          "description": "In response to a matching matchRule, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of urlRedirect, service or routeAction.weightedBackendService must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a route rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectActionResponse",
          "description": "When this rule is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object",
      "required": [
        "customErrorResponsePolicy",
        "description",
        "headerAction",
        "httpFilterConfigs",
        "httpFilterMetadata",
        "matchRules",
        "priority",
        "routeAction",
        "service",
        "urlRedirect"
      ]
    },
    "google-native:compute/alpha:ImageArchitecture": {
      "description": "The architecture of the image. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/alpha:ImageRawDisk": {
      "description": "The parameters of the raw disk image.",
      "properties": {
        "containerType": {
          "$ref": "#/types/google-native:compute%2Falpha:ImageRawDiskContainerType",
          "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created."
        },
        "sha1Checksum": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
          "deprecationMessage": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created."
        },
        "source": {
          "type": "string",
          "description": "The full Google Cloud Storage URL where the raw disk image archive is stored. The following are valid formats for the URL: - https://storage.googleapis.com/bucket_name/image_archive_name - https://storage.googleapis.com/bucket_name/folder_name/ image_archive_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ImageRawDiskContainerType": {
      "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
      "type": "string",
      "enum": [
        {
          "name": "Tar",
          "value": "TAR"
        }
      ]
    },
    "google-native:compute/alpha:ImageRawDiskResponse": {
      "description": "The parameters of the raw disk image.",
      "properties": {
        "containerType": {
          "type": "string",
          "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created."
        },
        "sha1Checksum": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
          "deprecationMessage": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created."
        },
        "source": {
          "type": "string",
          "description": "The full Google Cloud Storage URL where the raw disk image archive is stored. The following are valid formats for the URL: - https://storage.googleapis.com/bucket_name/image_archive_name - https://storage.googleapis.com/bucket_name/folder_name/ image_archive_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        }
      },
      "type": "object",
      "required": [
        "containerType",
        "sha1Checksum",
        "source"
      ]
    },
    "google-native:compute/alpha:ImageSourceType": {
      "description": "The type of the image used to create this disk. The default and only valid value is RAW.",
      "type": "string",
      "enum": [
        {
          "name": "Raw",
          "value": "RAW"
        }
      ]
    },
    "google-native:compute/alpha:InitialStateConfig": {
      "description": "Initial State for shielded instance, these are public keys which are safe to store in public",
      "properties": {
        "dbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FileContentBuffer"
          },
          "description": "The Key Database (db)."
        },
        "dbxs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FileContentBuffer"
          },
          "description": "The forbidden key database (dbx)."
        },
        "keks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FileContentBuffer"
          },
          "description": "The Key Exchange Key (KEK)."
        },
        "pk": {
          "$ref": "#/types/google-native:compute%2Falpha:FileContentBuffer",
          "description": "The Platform Key (PK)."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InitialStateConfigResponse": {
      "description": "Initial State for shielded instance, these are public keys which are safe to store in public",
      "properties": {
        "dbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FileContentBufferResponse"
          },
          "description": "The Key Database (db)."
        },
        "dbxs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FileContentBufferResponse"
          },
          "description": "The forbidden key database (dbx)."
        },
        "keks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FileContentBufferResponse"
          },
          "description": "The Key Exchange Key (KEK)."
        },
        "pk": {
          "$ref": "#/types/google-native:compute%2Falpha:FileContentBufferResponse",
          "description": "The Platform Key (PK)."
        }
      },
      "type": "object",
      "required": [
        "dbs",
        "dbxs",
        "keks",
        "pk"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerActionsSummaryResponse": {
      "properties": {
        "abandoning": {
          "type": "integer",
          "description": "The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it."
        },
        "creating": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully. If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated."
        },
        "creatingAtomically": {
          "type": "integer",
          "description": "The number of instances that the managed instance group will attempt to create atomically, in a batch mode. If the desired count of instances can not be created, entire batch will be deleted and the group will decrease its targetSize value accordingly."
        },
        "creatingWithoutRetries": {
          "type": "integer",
          "description": "The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly."
        },
        "deleting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted."
        },
        "none": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are running and have no scheduled actions."
        },
        "queuing": {
          "type": "integer",
          "description": "The number of instances that the managed instance group is currently queuing."
        },
        "recreating": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template."
        },
        "refreshing": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance."
        },
        "restarting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted."
        },
        "resuming": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be resumed or are currently being resumed."
        },
        "starting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be started or are currently being started."
        },
        "stopping": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be stopped or are currently being stopped."
        },
        "suspending": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be suspended or are currently being suspended."
        },
        "verifying": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are being verified. See the managedInstances[].currentAction property in the listManagedInstances method documentation."
        }
      },
      "type": "object",
      "required": [
        "abandoning",
        "creating",
        "creatingAtomically",
        "creatingWithoutRetries",
        "deleting",
        "none",
        "queuing",
        "recreating",
        "refreshing",
        "restarting",
        "resuming",
        "starting",
        "stopping",
        "suspending",
        "verifying"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerAllInstancesConfig": {
      "properties": {
        "properties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesPatch",
          "description": "Properties to set on all instances in the group. You can add or modify properties using the instanceGroupManagers.patch or regionInstanceGroupManagers.patch. After setting allInstancesConfig on the group, you must update the group's instances to apply the configuration. To apply the configuration, set the group's updatePolicy.type field to use proactive updates or use the applyUpdatesToInstances method."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerAllInstancesConfigResponse": {
      "properties": {
        "properties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesPatchResponse",
          "description": "Properties to set on all instances in the group. You can add or modify properties using the instanceGroupManagers.patch or regionInstanceGroupManagers.patch. After setting allInstancesConfig on the group, you must update the group's instances to apply the configuration. To apply the configuration, set the group's updatePolicy.type field to use proactive updates or use the applyUpdatesToInstances method."
        }
      },
      "type": "object",
      "required": [
        "properties"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerAutoHealingPolicy": {
      "properties": {
        "autoHealingTriggers": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicyAutoHealingTriggers",
          "description": "Restricts what triggers autohealing."
        },
        "healthCheck": {
          "type": "string",
          "description": "The URL for the health check that signals autohealing."
        },
        "initialDelaySec": {
          "type": "integer",
          "description": "The initial delay is the number of seconds that a new VM takes to initialize and run its startup script. During a VM's initial delay period, the MIG ignores unsuccessful health checks because the VM might be in the startup process. This prevents the MIG from prematurely recreating a VM. If the health check receives a healthy response during the initial delay, it indicates that the startup process is complete and the VM is ready. The value of initial delay must be between 0 and 3600 seconds. The default value is 0."
        },
        "maxUnavailable": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercent",
          "description": "Maximum number of instances that can be unavailable when autohealing. When 'percent' is used, the value is rounded if necessary. The instance is considered available if all of the following conditions are satisfied: 1. Instance's status is RUNNING. 2. Instance's currentAction is NONE (in particular its liveness health check result was observed to be HEALTHY at least once as it passed VERIFYING). 3. There is no outgoing action on an instance triggered by IGM. By default, number of concurrently autohealed instances is smaller than the managed instance group target size. However, if a zonal managed instance group has only one instance, or a regional managed instance group has only one instance per zone, autohealing will recreate these instances when they become unhealthy."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerAutoHealingPolicyAutoHealingTriggers": {
      "properties": {
        "onHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicyAutoHealingTriggersOnHealthCheck",
          "description": "If you have configured an application-based health check for the group, this field controls whether to trigger VM autohealing based on a failed health check. Valid values are: - ON (default): The group recreates running VMs that fail the application-based health check. - OFF: When set to OFF, you can still observe instance health state, but the group does not recreate VMs that fail the application-based health check. This is useful for troubleshooting and setting up your health check configuration. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerAutoHealingPolicyAutoHealingTriggersOnHealthCheck": {
      "description": "If you have configured an application-based health check for the group, this field controls whether to trigger VM autohealing based on a failed health check. Valid values are: - ON (default): The group recreates running VMs that fail the application-based health check. - OFF: When set to OFF, you can still observe instance health state, but the group does not recreate VMs that fail the application-based health check. This is useful for troubleshooting and setting up your health check configuration. ",
      "type": "string",
      "enum": [
        {
          "name": "Off",
          "description": "When set to OFF, you can still observe instance health state, but the group does not recreate VMs that fail the application-based health check. This is useful for troubleshooting and setting up your health check configuration.",
          "value": "OFF"
        },
        {
          "name": "On",
          "description": "(Default) The group recreates running VMs that fail the group's application-based health check.",
          "value": "ON"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerAutoHealingPolicyAutoHealingTriggersResponse": {
      "properties": {
        "onHealthCheck": {
          "type": "string",
          "description": "If you have configured an application-based health check for the group, this field controls whether to trigger VM autohealing based on a failed health check. Valid values are: - ON (default): The group recreates running VMs that fail the application-based health check. - OFF: When set to OFF, you can still observe instance health state, but the group does not recreate VMs that fail the application-based health check. This is useful for troubleshooting and setting up your health check configuration. "
        }
      },
      "type": "object",
      "required": [
        "onHealthCheck"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerAutoHealingPolicyResponse": {
      "properties": {
        "autoHealingTriggers": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicyAutoHealingTriggersResponse",
          "description": "Restricts what triggers autohealing."
        },
        "healthCheck": {
          "type": "string",
          "description": "The URL for the health check that signals autohealing."
        },
        "initialDelaySec": {
          "type": "integer",
          "description": "The initial delay is the number of seconds that a new VM takes to initialize and run its startup script. During a VM's initial delay period, the MIG ignores unsuccessful health checks because the VM might be in the startup process. This prevents the MIG from prematurely recreating a VM. If the health check receives a healthy response during the initial delay, it indicates that the startup process is complete and the VM is ready. The value of initial delay must be between 0 and 3600 seconds. The default value is 0."
        },
        "maxUnavailable": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercentResponse",
          "description": "Maximum number of instances that can be unavailable when autohealing. When 'percent' is used, the value is rounded if necessary. The instance is considered available if all of the following conditions are satisfied: 1. Instance's status is RUNNING. 2. Instance's currentAction is NONE (in particular its liveness health check result was observed to be HEALTHY at least once as it passed VERIFYING). 3. There is no outgoing action on an instance triggered by IGM. By default, number of concurrently autohealed instances is smaller than the managed instance group target size. However, if a zonal managed instance group has only one instance, or a regional managed instance group has only one instance per zone, autohealing will recreate these instances when they become unhealthy."
        }
      },
      "type": "object",
      "required": [
        "autoHealingTriggers",
        "healthCheck",
        "initialDelaySec",
        "maxUnavailable"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerFailoverAction": {
      "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
      "type": "string",
      "enum": [
        {
          "name": "NoFailover",
          "value": "NO_FAILOVER"
        },
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerInstanceFlexibilityPolicy": {
      "properties": {
        "instanceSelectionLists": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Named instance selections configuring properties that the group will use when creating new VMs."
        },
        "instanceSelections": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Named instance selections configuring properties that the group will use when creating new VMs."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerInstanceFlexibilityPolicyResponse": {
      "properties": {
        "instanceSelectionLists": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Named instance selections configuring properties that the group will use when creating new VMs."
        },
        "instanceSelections": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Named instance selections configuring properties that the group will use when creating new VMs."
        }
      },
      "type": "object",
      "required": [
        "instanceSelectionLists",
        "instanceSelections"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerInstanceLifecyclePolicy": {
      "properties": {
        "defaultActionOnFailure": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure",
          "description": "The action that a MIG performs on a failed or an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid values are - REPAIR (default): MIG automatically repairs a failed or an unhealthy VM by recreating it. For more information, see About repairing VMs in a MIG. - DO_NOTHING: MIG does not repair a failed or an unhealthy VM. "
        },
        "forceUpdateOnRepair": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair",
          "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. "
        },
        "metadataBasedReadinessSignal": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicyMetadataBasedReadinessSignal",
          "description": "The configuration for metadata based readiness signal sent by the instance during initialization when stopping / suspending an instance. The Instance Group Manager will wait for a signal that indicates successful initialization before stopping / suspending an instance. If a successful readiness signal is not sent before timeout, the corresponding instance will not be stopped / suspended. Instead, an error will be visible in the lastAttempt.errors field of the managed instance in the listmanagedinstances method. If metadataBasedReadinessSignal.timeoutSec is unset, the Instance Group Manager will directly proceed to suspend / stop instances, skipping initialization on them."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure": {
      "description": "The action that a MIG performs on a failed or an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid values are - REPAIR (default): MIG automatically repairs a failed or an unhealthy VM by recreating it. For more information, see About repairing VMs in a MIG. - DO_NOTHING: MIG does not repair a failed or an unhealthy VM. ",
      "type": "string",
      "enum": [
        {
          "name": "Delete",
          "description": "MIG deletes a failed or an unhealthy VM. Deleting the VM decreases the target size of the MIG.",
          "value": "DELETE"
        },
        {
          "name": "DoNothing",
          "description": "MIG does not repair a failed or an unhealthy VM.",
          "value": "DO_NOTHING"
        },
        {
          "name": "Repair",
          "description": "(Default) MIG automatically repairs a failed or an unhealthy VM by recreating it. For more information, see About repairing VMs in a MIG.",
          "value": "REPAIR"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair": {
      "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. ",
      "type": "string",
      "enum": [
        {
          "name": "No",
          "value": "NO"
        },
        {
          "name": "Yes",
          "value": "YES"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerInstanceLifecyclePolicyMetadataBasedReadinessSignal": {
      "properties": {
        "timeoutSec": {
          "type": "integer",
          "description": "The number of seconds to wait for a readiness signal during initialization before timing out."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerInstanceLifecyclePolicyMetadataBasedReadinessSignalResponse": {
      "properties": {
        "timeoutSec": {
          "type": "integer",
          "description": "The number of seconds to wait for a readiness signal during initialization before timing out."
        }
      },
      "type": "object",
      "required": [
        "timeoutSec"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerInstanceLifecyclePolicyResponse": {
      "properties": {
        "defaultActionOnFailure": {
          "type": "string",
          "description": "The action that a MIG performs on a failed or an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid values are - REPAIR (default): MIG automatically repairs a failed or an unhealthy VM by recreating it. For more information, see About repairing VMs in a MIG. - DO_NOTHING: MIG does not repair a failed or an unhealthy VM. "
        },
        "forceUpdateOnRepair": {
          "type": "string",
          "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. "
        },
        "metadataBasedReadinessSignal": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicyMetadataBasedReadinessSignalResponse",
          "description": "The configuration for metadata based readiness signal sent by the instance during initialization when stopping / suspending an instance. The Instance Group Manager will wait for a signal that indicates successful initialization before stopping / suspending an instance. If a successful readiness signal is not sent before timeout, the corresponding instance will not be stopped / suspended. Instead, an error will be visible in the lastAttempt.errors field of the managed instance in the listmanagedinstances method. If metadataBasedReadinessSignal.timeoutSec is unset, the Instance Group Manager will directly proceed to suspend / stop instances, skipping initialization on them."
        }
      },
      "type": "object",
      "required": [
        "defaultActionOnFailure",
        "forceUpdateOnRepair",
        "metadataBasedReadinessSignal"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerListManagedInstancesResults": {
      "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
      "type": "string",
      "enum": [
        {
          "name": "Pageless",
          "description": "(Default) Pagination is disabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are ignored and all instances are returned in a single response.",
          "value": "PAGELESS"
        },
        {
          "name": "Paginated",
          "description": "Pagination is enabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are respected.",
          "value": "PAGINATED"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerResizeRequestStatusErrorErrorsItemErrorDetailsItemResponse": {
      "properties": {
        "errorInfo": {
          "$ref": "#/types/google-native:compute%2Falpha:ErrorInfoResponse"
        },
        "help": {
          "$ref": "#/types/google-native:compute%2Falpha:HelpResponse"
        },
        "localizedMessage": {
          "$ref": "#/types/google-native:compute%2Falpha:LocalizedMessageResponse"
        },
        "quotaInfo": {
          "$ref": "#/types/google-native:compute%2Falpha:QuotaExceededInfoResponse"
        }
      },
      "type": "object",
      "required": [
        "errorInfo",
        "help",
        "localizedMessage",
        "quotaInfo"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerResizeRequestStatusErrorErrorsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "The error type identifier for this error."
        },
        "errorDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerResizeRequestStatusErrorErrorsItemErrorDetailsItemResponse"
          },
          "description": "An optional list 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."
        },
        "location": {
          "type": "string",
          "description": "Indicates the field in the request that caused the error. This property is optional."
        },
        "message": {
          "type": "string",
          "description": "An optional, human-readable error message."
        }
      },
      "type": "object",
      "required": [
        "code",
        "errorDetails",
        "location",
        "message"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerResizeRequestStatusErrorResponse": {
      "description": "Errors encountered during the queueing or provisioning phases of the ResizeRequest.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerResizeRequestStatusErrorErrorsItemResponse"
          },
          "description": "The array of errors encountered while processing this operation."
        }
      },
      "type": "object",
      "required": [
        "errors"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerResizeRequestStatusResponse": {
      "properties": {
        "error": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerResizeRequestStatusErrorResponse",
          "description": "Errors encountered during the queueing or provisioning phases of the ResizeRequest."
        },
        "queuingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuingPolicyResponse",
          "description": "Constraints for the time when the instances start provisioning. Always exposed as absolute time."
        }
      },
      "type": "object",
      "required": [
        "error",
        "queuingPolicy"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerStandbyPolicy": {
      "properties": {
        "initialDelaySec": {
          "type": "integer"
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStandbyPolicyMode",
          "description": "Defines behaviour of using instances from standby pool to resize MIG."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerStandbyPolicyMode": {
      "description": "Defines behaviour of using instances from standby pool to resize MIG.",
      "type": "string",
      "enum": [
        {
          "name": "Manual",
          "description": "MIG does not automatically stop/start or suspend/resume VMs.",
          "value": "MANUAL"
        },
        {
          "name": "ScaleOutPool",
          "description": "MIG automatically resumes and starts VMs when it scales out, and replenishes the standby pool afterwards.",
          "value": "SCALE_OUT_POOL"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerStandbyPolicyResponse": {
      "properties": {
        "initialDelaySec": {
          "type": "integer"
        },
        "mode": {
          "type": "string",
          "description": "Defines behaviour of using instances from standby pool to resize MIG."
        }
      },
      "type": "object",
      "required": [
        "initialDelaySec",
        "mode"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerStatusAllInstancesConfigResponse": {
      "properties": {
        "currentRevision": {
          "type": "string",
          "description": "Current all-instances configuration revision. This value is in RFC3339 text format."
        },
        "effective": {
          "type": "boolean",
          "description": "A bit indicating whether this configuration has been applied to all managed instances in the group."
        }
      },
      "type": "object",
      "required": [
        "currentRevision",
        "effective"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerStatusResponse": {
      "properties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStatusAllInstancesConfigResponse",
          "description": "[Output only] Status of all-instances configuration on the group."
        },
        "autoscaler": {
          "type": "string",
          "description": "The URL of the Autoscaler that targets this instance group manager."
        },
        "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."
        },
        "stateful": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStatusStatefulResponse",
          "description": "Stateful status of the given Instance Group Manager."
        },
        "versionTarget": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStatusVersionTargetResponse",
          "description": "A status of consistency of Instances' versions with their target version specified by version field on Instance Group Manager."
        }
      },
      "type": "object",
      "required": [
        "allInstancesConfig",
        "autoscaler",
        "isStable",
        "stateful",
        "versionTarget"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerStatusStatefulPerInstanceConfigsResponse": {
      "properties": {
        "allEffective": {
          "type": "boolean",
          "description": "A bit indicating if all of the group's per-instance configurations (listed in the output of a listPerInstanceConfigs API call) have status EFFECTIVE or there are no per-instance-configs."
        }
      },
      "type": "object",
      "required": [
        "allEffective"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerStatusStatefulResponse": {
      "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 configuration 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."
        },
        "isStateful": {
          "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 configuration 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. This field is deprecated in favor of has_stateful_config.",
          "deprecationMessage": "[Output Only] 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 configuration 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. This field is deprecated in favor of has_stateful_config."
        },
        "perInstanceConfigs": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStatusStatefulPerInstanceConfigsResponse",
          "description": "Status of per-instance configurations on the instance."
        }
      },
      "type": "object",
      "required": [
        "hasStatefulConfig",
        "isStateful",
        "perInstanceConfigs"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerStatusVersionTargetResponse": {
      "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."
        }
      },
      "type": "object",
      "required": [
        "isReached"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerTargetSizeUnit": {
      "description": "The unit of measure for the target size.",
      "type": "string",
      "enum": [
        {
          "name": "Instance",
          "description": "[Default] TargetSize is the target number of instances.",
          "value": "INSTANCE"
        },
        {
          "name": "Vcpu",
          "description": "TargetSize is the target count of vCPUs of VMs.",
          "value": "VCPU"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerUpdatePolicy": {
      "properties": {
        "instanceRedistributionType": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyInstanceRedistributionType",
          "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. "
        },
        "maxSurge": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercent",
          "description": "The maximum number of instances that can be created above the specified targetSize during the update process. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxSurge is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
        },
        "maxUnavailable": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercent",
          "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied: - The instance's status is RUNNING. - If there is a health check on the instance group, the instance's health check status must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxUnavailable is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
        },
        "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]."
        },
        "minimalAction": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyMinimalAction",
          "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. "
        },
        "mostDisruptiveAllowedAction": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction",
          "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to avoid restarting the VM and to limit disruption as much as possible. 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."
        },
        "replacementMethod": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyReplacementMethod",
          "description": "What action should be used to replace instances. See minimal_action.REPLACE"
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyType",
          "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerUpdatePolicyInstanceRedistributionType": {
      "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. ",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "No action is being proactively performed in order to bring this IGM to its target instance distribution.",
          "value": "NONE"
        },
        {
          "name": "Proactive",
          "description": "This IGM will actively converge to its target instance distribution.",
          "value": "PROACTIVE"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerUpdatePolicyMinimalAction": {
      "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. ",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "Do not perform any action.",
          "value": "NONE"
        },
        {
          "name": "Refresh",
          "description": "Do not stop the instance.",
          "value": "REFRESH"
        },
        {
          "name": "Replace",
          "description": "(Default.) Replace the instance according to the replacement method option.",
          "value": "REPLACE"
        },
        {
          "name": "Restart",
          "description": "Stop the instance and start it again.",
          "value": "RESTART"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction": {
      "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to avoid restarting the VM and to limit disruption as much as possible. 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.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "Do not perform any action.",
          "value": "NONE"
        },
        {
          "name": "Refresh",
          "description": "Do not stop the instance.",
          "value": "REFRESH"
        },
        {
          "name": "Replace",
          "description": "(Default.) Replace the instance according to the replacement method option.",
          "value": "REPLACE"
        },
        {
          "name": "Restart",
          "description": "Stop the instance and start it again.",
          "value": "RESTART"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerUpdatePolicyReplacementMethod": {
      "description": "What action should be used to replace instances. See minimal_action.REPLACE",
      "type": "string",
      "enum": [
        {
          "name": "Recreate",
          "description": "Instances will be recreated (with the same name)",
          "value": "RECREATE"
        },
        {
          "name": "Substitute",
          "description": "Default option: instances will be deleted and created (with a new name)",
          "value": "SUBSTITUTE"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerUpdatePolicyResponse": {
      "properties": {
        "instanceRedistributionType": {
          "type": "string",
          "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. "
        },
        "maxSurge": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercentResponse",
          "description": "The maximum number of instances that can be created above the specified targetSize during the update process. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxSurge is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
        },
        "maxUnavailable": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercentResponse",
          "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied: - The instance's status is RUNNING. - If there is a health check on the instance group, the instance's health check status must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxUnavailable is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
        },
        "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]."
        },
        "minimalAction": {
          "type": "string",
          "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. "
        },
        "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 avoid restarting the VM and to limit disruption as much as possible. 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."
        },
        "replacementMethod": {
          "type": "string",
          "description": "What action should be used to replace instances. See minimal_action.REPLACE"
        },
        "type": {
          "type": "string",
          "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update."
        }
      },
      "type": "object",
      "required": [
        "instanceRedistributionType",
        "maxSurge",
        "maxUnavailable",
        "minReadySec",
        "minimalAction",
        "mostDisruptiveAllowedAction",
        "replacementMethod",
        "type"
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerUpdatePolicyType": {
      "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update.",
      "type": "string",
      "enum": [
        {
          "name": "Opportunistic",
          "description": "MIG will apply new configurations to existing VMs only when you selectively target specific or all VMs to be updated.",
          "value": "OPPORTUNISTIC"
        },
        {
          "name": "Proactive",
          "description": "MIG will automatically apply new configurations to all or a subset of existing VMs and also to new VMs that are added to the group.",
          "value": "PROACTIVE"
        }
      ]
    },
    "google-native:compute/alpha:InstanceGroupManagerVersion": {
      "properties": {
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create new instances in the managed instance group until the `targetSize` for this version is reached. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE; in those cases, existing instances are updated until the `targetSize` for this version is reached."
        },
        "name": {
          "type": "string",
          "description": "Name of the version. Unique among all versions in the scope of this managed instance group."
        },
        "tag": {
          "type": "string",
          "description": "Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged. Deprecated in favor of 'name'.",
          "deprecationMessage": "Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged. Deprecated in favor of 'name'."
        },
        "targetSize": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercent",
          "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: - If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. - if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceGroupManagerVersionResponse": {
      "properties": {
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create new instances in the managed instance group until the `targetSize` for this version is reached. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE; in those cases, existing instances are updated until the `targetSize` for this version is reached."
        },
        "name": {
          "type": "string",
          "description": "Name of the version. Unique among all versions in the scope of this managed instance group."
        },
        "tag": {
          "type": "string",
          "description": "Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged. Deprecated in favor of 'name'.",
          "deprecationMessage": "Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged. Deprecated in favor of 'name'."
        },
        "targetSize": {
          "$ref": "#/types/google-native:compute%2Falpha:FixedOrPercentResponse",
          "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: - If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. - if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
        }
      },
      "type": "object",
      "required": [
        "instanceTemplate",
        "name",
        "tag",
        "targetSize"
      ]
    },
    "google-native:compute/alpha:InstanceKeyRevocationActionType": {
      "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "KeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Indicates user chose no operation.",
          "value": "NONE"
        },
        {
          "name": "Stop",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/alpha:InstanceParams": {
      "description": "Additional instance params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstanceParamsResponse": {
      "description": "Additional instance params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        }
      },
      "type": "object",
      "required": [
        "resourceManagerTags"
      ]
    },
    "google-native:compute/alpha:InstancePostKeyRevocationActionType": {
      "description": "PostKeyRevocationActionType of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Noop",
          "description": "Indicates user chose no operation.",
          "value": "NOOP"
        },
        {
          "name": "PostKeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "POST_KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Shutdown",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "SHUTDOWN"
        }
      ]
    },
    "google-native:compute/alpha:InstancePrivateIpv6GoogleAccess": {
      "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default.",
      "type": "string",
      "enum": [
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        },
        {
          "name": "InheritFromSubnetwork",
          "description": "Each network interface inherits PrivateIpv6GoogleAccess from its subnetwork.",
          "value": "INHERIT_FROM_SUBNETWORK"
        }
      ]
    },
    "google-native:compute/alpha:InstanceProperties": {
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Falpha:AdvancedMachineFeatures",
          "description": "Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ConfidentialInstanceConfig",
          "description": "Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from these properties."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AttachedDisk"
          },
          "description": "An array of disks that are associated with the instances that are created from these properties."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Falpha:DisplayDevice",
          "description": "Display Device properties to enable support for remote display products like: Teradici, VNC and TeamViewer Note that for MachineImage, this is not supported yet."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfig"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from these properties."
        },
        "keyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesKeyRevocationActionType",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from these properties."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from these properties."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Falpha:Metadata",
          "description": "The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkInterface"
          },
          "description": "An array of network access configurations for this interface."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkPerformanceConfig",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "partnerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Partner Metadata assigned to the instance properties. A map from a subdomain (namespace) to entries map."
        },
        "postKeyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesPostKeyRevocationActionType",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesPrivateIpv6GoogleAccess",
          "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Falpha:ReservationAffinity",
          "description": "Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Falpha:Scheduling",
          "description": "Specifies the scheduling options for the instances that are created from these properties."
        },
        "secureTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Input Only] Secure tags to apply to this instance. Maximum number of secure tags allowed is 50. Note that for MachineImage, this is not supported yet."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAccount"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances."
        },
        "serviceIntegrationSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Mapping of user defined keys to ServiceIntegrationSpec."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedInstanceConfig",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "shieldedVmConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedVmConfig",
          "description": "Specifies the Shielded VM options for the instances that are created from these properties."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Falpha:Tags",
          "description": "A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstancePropertiesKeyRevocationActionType": {
      "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "KeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Indicates user chose no operation.",
          "value": "NONE"
        },
        {
          "name": "Stop",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/alpha:InstancePropertiesPatch": {
      "description": "Represents the change that you want to make to the instance properties.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The label key-value pairs that you want to patch onto the instance."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InstancePropertiesPatchResponse": {
      "description": "Represents the change that you want to make to the instance properties.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The label key-value pairs that you want to patch onto the instance."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "metadata"
      ]
    },
    "google-native:compute/alpha:InstancePropertiesPostKeyRevocationActionType": {
      "description": "PostKeyRevocationActionType of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Noop",
          "description": "Indicates user chose no operation.",
          "value": "NOOP"
        },
        {
          "name": "PostKeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "POST_KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Shutdown",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "SHUTDOWN"
        }
      ]
    },
    "google-native:compute/alpha:InstancePropertiesPrivateIpv6GoogleAccess": {
      "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet.",
      "type": "string",
      "enum": [
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        },
        {
          "name": "InheritFromSubnetwork",
          "description": "Each network interface inherits PrivateIpv6GoogleAccess from its subnetwork.",
          "value": "INHERIT_FROM_SUBNETWORK"
        }
      ]
    },
    "google-native:compute/alpha:InstancePropertiesResponse": {
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Falpha:AdvancedMachineFeaturesResponse",
          "description": "Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ConfidentialInstanceConfigResponse",
          "description": "Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from these properties."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskResponse"
          },
          "description": "An array of disks that are associated with the instances that are created from these properties."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Falpha:DisplayDeviceResponse",
          "description": "Display Device properties to enable support for remote display products like: Teradici, VNC and TeamViewer Note that for MachineImage, this is not supported yet."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfigResponse"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from these properties."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from these properties."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from these properties."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Falpha:MetadataResponse",
          "description": "The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceResponse"
          },
          "description": "An array of network access configurations for this interface."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkPerformanceConfigResponse",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "partnerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Partner Metadata assigned to the instance properties. A map from a subdomain (namespace) to entries map."
        },
        "postKeyRevocationActionType": {
          "type": "string",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Falpha:ReservationAffinityResponse",
          "description": "Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingResponse",
          "description": "Specifies the scheduling options for the instances that are created from these properties."
        },
        "secureTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Input Only] Secure tags to apply to this instance. Maximum number of secure tags allowed is 50. Note that for MachineImage, this is not supported yet."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAccountResponse"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances."
        },
        "serviceIntegrationSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Mapping of user defined keys to ServiceIntegrationSpec."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedInstanceConfigResponse",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "shieldedVmConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedVmConfigResponse",
          "description": "Specifies the Shielded VM options for the instances that are created from these properties."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Falpha:TagsResponse",
          "description": "A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "advancedMachineFeatures",
        "canIpForward",
        "confidentialInstanceConfig",
        "description",
        "disks",
        "displayDevice",
        "guestAccelerators",
        "keyRevocationActionType",
        "labels",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "networkInterfaces",
        "networkPerformanceConfig",
        "partnerMetadata",
        "postKeyRevocationActionType",
        "privateIpv6GoogleAccess",
        "reservationAffinity",
        "resourceManagerTags",
        "resourcePolicies",
        "scheduling",
        "secureTags",
        "serviceAccounts",
        "serviceIntegrationSpecs",
        "shieldedInstanceConfig",
        "shieldedVmConfig",
        "tags"
      ]
    },
    "google-native:compute/alpha:InstantSnapshotResourceStatusResponse": {
      "properties": {
        "storageSizeBytes": {
          "type": "string",
          "description": "The storage size of this instant snapshot."
        }
      },
      "type": "object",
      "required": [
        "storageSizeBytes"
      ]
    },
    "google-native:compute/alpha:Int64RangeMatch": {
      "description": "HttpRouteRuleMatch criteria for field values that must stay within the specified integer range.",
      "properties": {
        "rangeEnd": {
          "type": "string",
          "description": "The end of the range (exclusive) in signed long integer format."
        },
        "rangeStart": {
          "type": "string",
          "description": "The start of the range (inclusive) in signed long integer format."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:Int64RangeMatchResponse": {
      "description": "HttpRouteRuleMatch criteria for field values that must stay within the specified integer range.",
      "properties": {
        "rangeEnd": {
          "type": "string",
          "description": "The end of the range (exclusive) in signed long integer format."
        },
        "rangeStart": {
          "type": "string",
          "description": "The start of the range (inclusive) in signed long integer format."
        }
      },
      "type": "object",
      "required": [
        "rangeEnd",
        "rangeStart"
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentBandwidth": {
      "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s ",
      "type": "string",
      "enum": [
        {
          "name": "Bps100m",
          "description": "100 Mbit/s",
          "value": "BPS_100M"
        },
        {
          "name": "Bps10g",
          "description": "10 Gbit/s",
          "value": "BPS_10G"
        },
        {
          "name": "Bps1g",
          "description": "1 Gbit/s",
          "value": "BPS_1G"
        },
        {
          "name": "Bps200m",
          "description": "200 Mbit/s",
          "value": "BPS_200M"
        },
        {
          "name": "Bps20g",
          "description": "20 Gbit/s",
          "value": "BPS_20G"
        },
        {
          "name": "Bps2g",
          "description": "2 Gbit/s",
          "value": "BPS_2G"
        },
        {
          "name": "Bps300m",
          "description": "300 Mbit/s",
          "value": "BPS_300M"
        },
        {
          "name": "Bps400m",
          "description": "400 Mbit/s",
          "value": "BPS_400M"
        },
        {
          "name": "Bps500m",
          "description": "500 Mbit/s",
          "value": "BPS_500M"
        },
        {
          "name": "Bps50g",
          "description": "50 Gbit/s",
          "value": "BPS_50G"
        },
        {
          "name": "Bps50m",
          "description": "50 Mbit/s",
          "value": "BPS_50M"
        },
        {
          "name": "Bps5g",
          "description": "5 Gbit/s",
          "value": "BPS_5G"
        }
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentConfigurationConstraintsBgpPeerASNRangeResponse": {
      "properties": {
        "max": {
          "type": "integer"
        },
        "min": {
          "type": "integer"
        }
      },
      "type": "object",
      "required": [
        "max",
        "min"
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentConfigurationConstraintsResponse": {
      "properties": {
        "bgpMd5": {
          "type": "string",
          "description": "Whether the attachment's BGP session requires/allows/disallows BGP MD5 authentication. This can take one of the following values: MD5_OPTIONAL, MD5_REQUIRED, MD5_UNSUPPORTED. For example, a Cross-Cloud Interconnect connection to a remote cloud provider that requires BGP MD5 authentication has the interconnectRemoteLocation attachment_configuration_constraints.bgp_md5 field set to MD5_REQUIRED, and that property is propagated to the attachment. Similarly, if BGP MD5 is MD5_UNSUPPORTED, an error is returned if MD5 is requested."
        },
        "bgpPeerAsnRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentConfigurationConstraintsBgpPeerASNRangeResponse"
          },
          "description": "List of ASN ranges that the remote location is known to support. Formatted as an array of inclusive ranges {min: min-value, max: max-value}. For example, [{min: 123, max: 123}, {min: 64512, max: 65534}] allows the peer ASN to be 123 or anything in the range 64512-65534. This field is only advisory. Although the API accepts other ranges, these are the ranges that we recommend."
        }
      },
      "type": "object",
      "required": [
        "bgpMd5",
        "bgpPeerAsnRanges"
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentEdgeAvailabilityDomain": {
      "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityDomain1",
          "value": "AVAILABILITY_DOMAIN_1"
        },
        {
          "name": "AvailabilityDomain2",
          "value": "AVAILABILITY_DOMAIN_2"
        },
        {
          "name": "AvailabilityDomainAny",
          "value": "AVAILABILITY_DOMAIN_ANY"
        }
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentEncryption": {
      "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. ",
      "type": "string",
      "enum": [
        {
          "name": "Ipsec",
          "description": "The interconnect attachment will carry only encrypted traffic that is encrypted by an IPsec device such as HA VPN gateway; VMs cannot directly send traffic to or receive traffic from such an interconnect attachment. To use HA VPN over Cloud Interconnect, the interconnect attachment must be created with this option.",
          "value": "IPSEC"
        },
        {
          "name": "None",
          "description": "This is the default value, which means the Interconnect Attachment will carry unencrypted traffic. VMs will be able to send traffic to or receive traffic from such interconnect attachment.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentPartnerMetadata": {
      "description": "Informational metadata about Partner attachments from Partners to display to customers. These fields are propagated from PARTNER_PROVIDER attachments to their corresponding PARTNER attachments.",
      "properties": {
        "interconnectName": {
          "type": "string",
          "description": "Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner's portal. For instance \"Chicago 1\". This value may be validated to match approved Partner values."
        },
        "partnerName": {
          "type": "string",
          "description": "Plain text name of the Partner providing this attachment. This value may be validated to match approved Partner values."
        },
        "portalUrl": {
          "type": "string",
          "description": "URL of the Partner's portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:InterconnectAttachmentPartnerMetadataResponse": {
      "description": "Informational metadata about Partner attachments from Partners to display to customers. These fields are propagated from PARTNER_PROVIDER attachments to their corresponding PARTNER attachments.",
      "properties": {
        "interconnectName": {
          "type": "string",
          "description": "Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner's portal. For instance \"Chicago 1\". This value may be validated to match approved Partner values."
        },
        "partnerName": {
          "type": "string",
          "description": "Plain text name of the Partner providing this attachment. This value may be validated to match approved Partner values."
        },
        "portalUrl": {
          "type": "string",
          "description": "URL of the Partner's portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values."
        }
      },
      "type": "object",
      "required": [
        "interconnectName",
        "partnerName",
        "portalUrl"
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentPrivateInfoResponse": {
      "description": "Information for an interconnect attachment when this belongs to an interconnect of type DEDICATED.",
      "properties": {
        "tag8021q": {
          "type": "integer",
          "description": "802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region."
        }
      },
      "type": "object",
      "required": [
        "tag8021q"
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentStackType": {
      "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "The interconnect attachment can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "The interconnect attachment will only be assigned IPv4 addresses.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentType": {
      "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. ",
      "type": "string",
      "enum": [
        {
          "name": "Dedicated",
          "description": "Attachment to a dedicated interconnect.",
          "value": "DEDICATED"
        },
        {
          "name": "Partner",
          "description": "Attachment to a partner interconnect, created by the customer.",
          "value": "PARTNER"
        },
        {
          "name": "PartnerProvider",
          "description": "Attachment to a partner interconnect, created by the partner.",
          "value": "PARTNER_PROVIDER"
        }
      ]
    },
    "google-native:compute/alpha:InterconnectCircuitInfoResponse": {
      "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only.",
      "properties": {
        "customerDemarcId": {
          "type": "string",
          "description": "Customer-side demarc ID for this circuit."
        },
        "googleCircuitId": {
          "type": "string",
          "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up."
        },
        "googleDemarcId": {
          "type": "string",
          "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA."
        }
      },
      "type": "object",
      "required": [
        "customerDemarcId",
        "googleCircuitId",
        "googleDemarcId"
      ]
    },
    "google-native:compute/alpha:InterconnectInterconnectType": {
      "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
      "type": "string",
      "enum": [
        {
          "name": "Dedicated",
          "description": "A dedicated physical interconnection with the customer.",
          "value": "DEDICATED"
        },
        {
          "name": "ItPrivate",
          "description": "[Deprecated] A private, physical interconnection with the customer.",
          "value": "IT_PRIVATE"
        },
        {
          "name": "Partner",
          "description": "A partner-managed interconnection shared between customers via partner.",
          "value": "PARTNER"
        }
      ]
    },
    "google-native:compute/alpha:InterconnectLinkType": {
      "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
      "type": "string",
      "enum": [
        {
          "name": "LinkTypeEthernet100gLr",
          "description": "100G Ethernet, LR Optics.",
          "value": "LINK_TYPE_ETHERNET_100G_LR"
        },
        {
          "name": "LinkTypeEthernet10gLr",
          "description": "10G Ethernet, LR Optics. [(rate_bps) = 10000000000];",
          "value": "LINK_TYPE_ETHERNET_10G_LR"
        }
      ]
    },
    "google-native:compute/alpha:InterconnectMacsec": {
      "description": "Configuration information for enabling Media Access Control security (MACsec) on this Cloud Interconnect connection between Google and your on-premises router.",
      "properties": {
        "failOpen": {
          "type": "boolean",
          "description": "If set to true, the Interconnect connection is configured with a should-secure MACsec security policy, that allows the Google router to fallback to cleartext traffic if the MKA session cannot be established. By default, the Interconnect connection is configured with a must-secure security policy that drops all traffic if the MKA session cannot be established with your router."
        },
        "preSharedKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectMacsecPreSharedKey"
          },
          "description": "A keychain placeholder describing a set of named key objects along with their start times. A MACsec CKN/CAK is generated for each key in the key chain. Google router automatically picks the key with the most recent startTime when establishing or re-establishing a MACsec secure link."
        }
      },
      "type": "object",
      "required": [
        "preSharedKeys"
      ]
    },
    "google-native:compute/alpha:InterconnectMacsecPreSharedKey": {
      "description": "Describes a pre-shared key used to setup MACsec in static connectivity association key (CAK) mode.",
      "properties": {
        "name": {
          "type": "string",
          "description": "A name for this pre-shared key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "startTime": {
          "type": "string",
          "description": "A RFC3339 timestamp on or after which the key is valid. startTime can be in the future. If the keychain has a single key, startTime can be omitted. If the keychain has multiple keys, startTime is mandatory for each key. The start times of keys must be in increasing order. The start times of two consecutive keys must be at least 6 hours apart."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:compute/alpha:InterconnectMacsecPreSharedKeyResponse": {
      "description": "Describes a pre-shared key used to setup MACsec in static connectivity association key (CAK) mode.",
      "properties": {
        "name": {
          "type": "string",
          "description": "A name for this pre-shared key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "startTime": {
          "type": "string",
          "description": "A RFC3339 timestamp on or after which the key is valid. startTime can be in the future. If the keychain has a single key, startTime can be omitted. If the keychain has multiple keys, startTime is mandatory for each key. The start times of keys must be in increasing order. The start times of two consecutive keys must be at least 6 hours apart."
        }
      },
      "type": "object",
      "required": [
        "name",
        "startTime"
      ]
    },
    "google-native:compute/alpha:InterconnectMacsecResponse": {
      "description": "Configuration information for enabling Media Access Control security (MACsec) on this Cloud Interconnect connection between Google and your on-premises router.",
      "properties": {
        "failOpen": {
          "type": "boolean",
          "description": "If set to true, the Interconnect connection is configured with a should-secure MACsec security policy, that allows the Google router to fallback to cleartext traffic if the MKA session cannot be established. By default, the Interconnect connection is configured with a must-secure security policy that drops all traffic if the MKA session cannot be established with your router."
        },
        "preSharedKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectMacsecPreSharedKeyResponse"
          },
          "description": "A keychain placeholder describing a set of named key objects along with their start times. A MACsec CKN/CAK is generated for each key in the key chain. Google router automatically picks the key with the most recent startTime when establishing or re-establishing a MACsec secure link."
        }
      },
      "type": "object",
      "required": [
        "failOpen",
        "preSharedKeys"
      ]
    },
    "google-native:compute/alpha:InterconnectOutageNotificationResponse": {
      "description": "Description of a planned outage on this Interconnect.",
      "properties": {
        "affectedCircuits": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected."
        },
        "description": {
          "type": "string",
          "description": "A description about the purpose of the outage."
        },
        "endTime": {
          "type": "string",
          "description": "Scheduled end time for the outage (milliseconds since Unix epoch)."
        },
        "issueType": {
          "type": "string",
          "description": "Form this outage is expected to take, which can take one of the following values: - OUTAGE: The Interconnect may be completely out of service for some or all of the specified window. - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain up, but with reduced bandwidth. Note that the versions of this enum prefixed with \"IT_\" have been deprecated in favor of the unprefixed values."
        },
        "name": {
          "type": "string",
          "description": "Unique identifier for this outage notification."
        },
        "source": {
          "type": "string",
          "description": "The party that generated this notification, which can take the following value: - GOOGLE: this notification as generated by Google. Note that the value of NSRC_GOOGLE has been deprecated in favor of GOOGLE."
        },
        "startTime": {
          "type": "string",
          "description": "Scheduled start time for the outage (milliseconds since Unix epoch)."
        },
        "state": {
          "type": "string",
          "description": "State of this notification, which can take one of the following values: - ACTIVE: This outage notification is active. The event could be in the past, present, or future. See start_time and end_time for scheduling. - CANCELLED: The outage associated with this notification was cancelled before the outage was due to start. - COMPLETED: The outage associated with this notification is complete. Note that the versions of this enum prefixed with \"NS_\" have been deprecated in favor of the unprefixed values."
        }
      },
      "type": "object",
      "required": [
        "affectedCircuits",
        "description",
        "endTime",
        "issueType",
        "name",
        "source",
        "startTime",
        "state"
      ]
    },
    "google-native:compute/alpha:InterconnectRequestedFeaturesItem": {
      "type": "string",
      "enum": [
        {
          "name": "IfMacsec",
          "description": "Media Access Control security (MACsec)",
          "value": "IF_MACSEC"
        }
      ]
    },
    "google-native:compute/alpha:Jwt": {
      "description": "[Deprecated] JWT configuration for origin authentication. JWT configuration for origin authentication.",
      "properties": {
        "audiences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A JWT containing any of these audiences will be accepted. The service name will be accepted if audiences is empty. Examples: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com"
        },
        "issuer": {
          "type": "string",
          "description": "Identifies the issuer that issued the JWT, which is usually a URL or an email address. Examples: https://securetoken.google.com, 1234567-compute@developer.gserviceaccount.com"
        },
        "jwksPublicKeys": {
          "type": "string",
          "description": "The provider's public key set to validate the signature of the JWT."
        },
        "jwtHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:JwtHeader"
          },
          "description": "jwt_headers and jwt_params define where to extract the JWT from an HTTP request. If no explicit location is specified, the following default locations are tried in order: 1. The Authorization header using the Bearer schema. See `here `_. Example: Authorization: Bearer . 2. `access_token` query parameter. See `this `_ Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations its issuer specified or from the default locations. This field is set if JWT is sent in a request header. This field specifies the header name. For example, if `header=x-goog-iap-jwt-assertion`, the header format will be x-goog-iap-jwt-assertion: ."
        },
        "jwtParams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is set if JWT is sent in a query parameter. This field specifies the query parameter name. For example, if jwt_params[0] is jwt_token, the JWT format in the query parameter is /path?jwt_token=."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:JwtHeader": {
      "description": "[Deprecated] This message specifies a header location to extract JWT token. This message specifies a header location to extract JWT token.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The HTTP header name."
        },
        "valuePrefix": {
          "type": "string",
          "description": "The value prefix. The value format is \"value_prefix\" For example, for \"Authorization: Bearer \", value_prefix=\"Bearer \" with a space at the end."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:JwtHeaderResponse": {
      "description": "[Deprecated] This message specifies a header location to extract JWT token. This message specifies a header location to extract JWT token.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The HTTP header name."
        },
        "valuePrefix": {
          "type": "string",
          "description": "The value prefix. The value format is \"value_prefix\" For example, for \"Authorization: Bearer \", value_prefix=\"Bearer \" with a space at the end."
        }
      },
      "type": "object",
      "required": [
        "name",
        "valuePrefix"
      ]
    },
    "google-native:compute/alpha:JwtResponse": {
      "description": "[Deprecated] JWT configuration for origin authentication. JWT configuration for origin authentication.",
      "properties": {
        "audiences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A JWT containing any of these audiences will be accepted. The service name will be accepted if audiences is empty. Examples: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com"
        },
        "issuer": {
          "type": "string",
          "description": "Identifies the issuer that issued the JWT, which is usually a URL or an email address. Examples: https://securetoken.google.com, 1234567-compute@developer.gserviceaccount.com"
        },
        "jwksPublicKeys": {
          "type": "string",
          "description": "The provider's public key set to validate the signature of the JWT."
        },
        "jwtHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:JwtHeaderResponse"
          },
          "description": "jwt_headers and jwt_params define where to extract the JWT from an HTTP request. If no explicit location is specified, the following default locations are tried in order: 1. The Authorization header using the Bearer schema. See `here `_. Example: Authorization: Bearer . 2. `access_token` query parameter. See `this `_ Multiple JWTs can be verified for a request. Each JWT has to be extracted from the locations its issuer specified or from the default locations. This field is set if JWT is sent in a request header. This field specifies the header name. For example, if `header=x-goog-iap-jwt-assertion`, the header format will be x-goog-iap-jwt-assertion: ."
        },
        "jwtParams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is set if JWT is sent in a query parameter. This field specifies the query parameter name. For example, if jwt_params[0] is jwt_token, the JWT format in the query parameter is /path?jwt_token=."
        }
      },
      "type": "object",
      "required": [
        "audiences",
        "issuer",
        "jwksPublicKeys",
        "jwtHeaders",
        "jwtParams"
      ]
    },
    "google-native:compute/alpha:LicenseResourceCommitment": {
      "description": "Commitment for a particular license resource.",
      "properties": {
        "amount": {
          "type": "string",
          "description": "The number of licenses purchased."
        },
        "coresPerLicense": {
          "type": "string",
          "description": "Specifies the core range of the instance for which this license applies."
        },
        "license": {
          "type": "string",
          "description": "Any applicable license URI."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LicenseResourceCommitmentResponse": {
      "description": "Commitment for a particular license resource.",
      "properties": {
        "amount": {
          "type": "string",
          "description": "The number of licenses purchased."
        },
        "coresPerLicense": {
          "type": "string",
          "description": "Specifies the core range of the instance for which this license applies."
        },
        "license": {
          "type": "string",
          "description": "Any applicable license URI."
        }
      },
      "type": "object",
      "required": [
        "amount",
        "coresPerLicense",
        "license"
      ]
    },
    "google-native:compute/alpha:LicenseResourceRequirements": {
      "properties": {
        "minGuestCpuCount": {
          "type": "integer",
          "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start."
        },
        "minMemoryMb": {
          "type": "integer",
          "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LicenseResourceRequirementsResponse": {
      "properties": {
        "minGuestCpuCount": {
          "type": "integer",
          "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start."
        },
        "minMemoryMb": {
          "type": "integer",
          "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start."
        }
      },
      "type": "object",
      "required": [
        "minGuestCpuCount",
        "minMemoryMb"
      ]
    },
    "google-native:compute/alpha:LocalDisk": {
      "properties": {
        "diskCount": {
          "type": "integer",
          "description": "Specifies the number of such disks."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LocalDiskResponse": {
      "properties": {
        "diskCount": {
          "type": "integer",
          "description": "Specifies the number of such disks."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "diskCount",
        "diskSizeGb",
        "diskType"
      ]
    },
    "google-native:compute/alpha:LocalizedMessageResponse": {
      "description": "Provides a localized error message that is safe to return to the user which can be attached to an RPC error.",
      "properties": {
        "locale": {
          "type": "string",
          "description": "The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\""
        },
        "message": {
          "type": "string",
          "description": "The localized error message in the above locale."
        }
      },
      "type": "object",
      "required": [
        "locale",
        "message"
      ]
    },
    "google-native:compute/alpha:LocationPolicy": {
      "description": "Configuration for location policy among multiple possible locations (e.g. preferences for zone selection among zones in a single region).",
      "properties": {
        "locations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Location configurations mapped by location name. Currently only zone names are supported and must be represented as valid internal URLs, such as zones/us-central1-a."
        },
        "targetShape": {
          "$ref": "#/types/google-native:compute%2Falpha:LocationPolicyTargetShape",
          "description": "Strategy for distributing VMs across zones in a region."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LocationPolicyResponse": {
      "description": "Configuration for location policy among multiple possible locations (e.g. preferences for zone selection among zones in a single region).",
      "properties": {
        "locations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Location configurations mapped by location name. Currently only zone names are supported and must be represented as valid internal URLs, such as zones/us-central1-a."
        },
        "targetShape": {
          "type": "string",
          "description": "Strategy for distributing VMs across zones in a region."
        }
      },
      "type": "object",
      "required": [
        "locations",
        "targetShape"
      ]
    },
    "google-native:compute/alpha:LocationPolicyTargetShape": {
      "description": "Strategy for distributing VMs across zones in a region.",
      "type": "string",
      "enum": [
        {
          "name": "Any",
          "description": "GCE picks zones for creating VM instances to fulfill the requested number of VMs within present resource constraints and to maximize utilization of unused zonal reservations. Recommended for batch workloads that do not require high availability.",
          "value": "ANY"
        },
        {
          "name": "AnySingleZone",
          "description": "GCE always selects a single zone for all the VMs, optimizing for resource quotas, available reservations and general capacity. Recommended for batch workloads that cannot tollerate distribution over multiple zones. This the default shape in Bulk Insert and Capacity Advisor APIs.",
          "value": "ANY_SINGLE_ZONE"
        },
        {
          "name": "Balanced",
          "description": "GCE prioritizes acquisition of resources, scheduling VMs in zones where resources are available while distributing VMs as evenly as possible across allowed zones to minimize the impact of zonal failure. Recommended for highly available serving workloads.",
          "value": "BALANCED"
        }
      ]
    },
    "google-native:compute/alpha:LogConfig": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:compute%2Falpha:LogConfigCloudAuditOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "counter": {
          "$ref": "#/types/google-native:compute%2Falpha:LogConfigCounterOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:compute%2Falpha:LogConfigDataAccessOptions",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LogConfigCloudAuditOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:AuthorizationLoggingOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logName": {
          "$ref": "#/types/google-native:compute%2Falpha:LogConfigCloudAuditOptionsLogName",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LogConfigCloudAuditOptionsLogName": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "AdminActivity",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_ACTIVITY"
        },
        {
          "name": "DataAccess",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_ACCESS"
        },
        {
          "name": "UnspecifiedLogName",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "UNSPECIFIED_LOG_NAME"
        }
      ]
    },
    "google-native:compute/alpha:LogConfigCloudAuditOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:AuthorizationLoggingOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logName": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "authorizationLoggingOptions",
        "logName"
      ]
    },
    "google-native:compute/alpha:LogConfigCounterOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:LogConfigCounterOptionsCustomField"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "field": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "metric": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LogConfigCounterOptionsCustomField": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "name": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "value": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LogConfigCounterOptionsCustomFieldResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "name": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "value": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/alpha:LogConfigCounterOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:LogConfigCounterOptionsCustomFieldResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "field": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "metric": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "customFields",
        "field",
        "metric"
      ]
    },
    "google-native:compute/alpha:LogConfigDataAccessOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "logMode": {
          "$ref": "#/types/google-native:compute%2Falpha:LogConfigDataAccessOptionsLogMode",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:LogConfigDataAccessOptionsLogMode": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "LogFailClosed",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG_FAIL_CLOSED"
        },
        {
          "name": "LogModeUnspecified",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG_MODE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:LogConfigDataAccessOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "logMode": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "logMode"
      ]
    },
    "google-native:compute/alpha:LogConfigResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:compute%2Falpha:LogConfigCloudAuditOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "counter": {
          "$ref": "#/types/google-native:compute%2Falpha:LogConfigCounterOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:compute%2Falpha:LogConfigDataAccessOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "cloudAudit",
        "counter",
        "dataAccess"
      ]
    },
    "google-native:compute/alpha:Metadata": {
      "description": "A metadata key/value entry.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataItemsItem"
          },
          "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:MetadataCredentialsFromPlugin": {
      "description": "[Deprecated] Custom authenticator credentials. Custom authenticator credentials.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Plugin name."
        },
        "structConfig": {
          "type": "string",
          "description": "A text proto that conforms to a Struct type definition interpreted by the plugin."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:MetadataCredentialsFromPluginResponse": {
      "description": "[Deprecated] Custom authenticator credentials. Custom authenticator credentials.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Plugin name."
        },
        "structConfig": {
          "type": "string",
          "description": "A text proto that conforms to a Struct type definition interpreted by the plugin."
        }
      },
      "type": "object",
      "required": [
        "name",
        "structConfig"
      ]
    },
    "google-native:compute/alpha:MetadataFilter": {
      "description": "Opaque filter criteria used by load balancers to restrict routing configuration to a limited set of load balancing proxies. Proxies and sidecars involved in load balancing would typically present metadata to the load balancers that need to match criteria specified here. If a match takes place, the relevant configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. An example for using metadataFilters would be: if load balancing involves Envoys, they receive routing configuration when values in metadataFilters match values supplied in of their XDS requests to loadbalancers.",
      "properties": {
        "filterLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataFilterLabelMatch"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list must not be empty and can have at the most 64 entries."
        },
        "filterMatchCriteria": {
          "$ref": "#/types/google-native:compute%2Falpha:MetadataFilterFilterMatchCriteria",
          "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:MetadataFilterFilterMatchCriteria": {
      "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. ",
      "type": "string",
      "enum": [
        {
          "name": "MatchAll",
          "description": "Specifies that all filterLabels must match for the metadataFilter to be considered a match.",
          "value": "MATCH_ALL"
        },
        {
          "name": "MatchAny",
          "description": "Specifies that any filterLabel must match for the metadataFilter to be considered a match.",
          "value": "MATCH_ANY"
        },
        {
          "name": "NotSet",
          "description": "Indicates that the match criteria was not set. A metadataFilter must never be created with this value.",
          "value": "NOT_SET"
        }
      ]
    },
    "google-native:compute/alpha:MetadataFilterLabelMatch": {
      "description": "MetadataFilter label name value pairs that are expected to match corresponding labels presented as metadata to the load balancer.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of metadata label. The name can have a maximum length of 1024 characters and must be at least 1 character long."
        },
        "value": {
          "type": "string",
          "description": "The value of the label must match the specified value. value can have a maximum length of 1024 characters."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:MetadataFilterLabelMatchResponse": {
      "description": "MetadataFilter label name value pairs that are expected to match corresponding labels presented as metadata to the load balancer.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of metadata label. The name can have a maximum length of 1024 characters and must be at least 1 character long."
        },
        "value": {
          "type": "string",
          "description": "The value of the label must match the specified value. value can have a maximum length of 1024 characters."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/alpha:MetadataFilterResponse": {
      "description": "Opaque filter criteria used by load balancers to restrict routing configuration to a limited set of load balancing proxies. Proxies and sidecars involved in load balancing would typically present metadata to the load balancers that need to match criteria specified here. If a match takes place, the relevant configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. An example for using metadataFilters would be: if load balancing involves Envoys, they receive routing configuration when values in metadataFilters match values supplied in of their XDS requests to loadbalancers.",
      "properties": {
        "filterLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataFilterLabelMatchResponse"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list must not be empty and can have at the most 64 entries."
        },
        "filterMatchCriteria": {
          "type": "string",
          "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. "
        }
      },
      "type": "object",
      "required": [
        "filterLabels",
        "filterMatchCriteria"
      ]
    },
    "google-native:compute/alpha:MetadataItemsItem": {
      "description": "Metadata",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project."
        },
        "value": {
          "type": "string",
          "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB)."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:MetadataItemsItemResponse": {
      "description": "Metadata",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project."
        },
        "value": {
          "type": "string",
          "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB)."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/alpha:MetadataResponse": {
      "description": "A metadata key/value entry.",
      "properties": {
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataItemsItemResponse"
          },
          "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#metadata for metadata."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "items",
        "kind"
      ]
    },
    "google-native:compute/alpha:MoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:compute/alpha:MutualTls": {
      "description": "[Deprecated] Configuration for the mutual Tls mode for peer authentication. Configuration for the mutual Tls mode for peer authentication.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:MutualTlsMode",
          "description": "Specifies if the server TLS is configured to be strict or permissive. This field can be set to one of the following: STRICT: Client certificate must be presented, connection is in TLS. PERMISSIVE: Client certificate can be omitted, connection can be either plaintext or TLS."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:MutualTlsMode": {
      "description": "Specifies if the server TLS is configured to be strict or permissive. This field can be set to one of the following: STRICT: Client certificate must be presented, connection is in TLS. PERMISSIVE: Client certificate can be omitted, connection can be either plaintext or TLS.",
      "type": "string",
      "enum": [
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Permissive",
          "description": "Client certificate can be omitted, connection can be either plaintext or TLS.",
          "value": "PERMISSIVE"
        },
        {
          "name": "Strict",
          "description": "Client certificate must be presented, connection is in TLS.",
          "value": "STRICT"
        }
      ]
    },
    "google-native:compute/alpha:MutualTlsResponse": {
      "description": "[Deprecated] Configuration for the mutual Tls mode for peer authentication. Configuration for the mutual Tls mode for peer authentication.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Specifies if the server TLS is configured to be strict or permissive. This field can be set to one of the following: STRICT: Client certificate must be presented, connection is in TLS. PERMISSIVE: Client certificate can be omitted, connection can be either plaintext or TLS."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:compute/alpha:NamedPort": {
      "description": "The named port. For example: <\"http\", 80>.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "port": {
          "type": "integer",
          "description": "The port number, which can be a value between 1 and 65535."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NamedPortResponse": {
      "description": "The named port. For example: <\"http\", 80>.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "port": {
          "type": "integer",
          "description": "The port number, which can be a value between 1 and 65535."
        }
      },
      "type": "object",
      "required": [
        "name",
        "port"
      ]
    },
    "google-native:compute/alpha:NetworkAttachmentConnectedEndpointResponse": {
      "description": "[Output Only] A connection connected to this network attachment.",
      "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."
        },
        "ipv6Address": {
          "type": "string",
          "description": "The IPv6 address assigned to the producer instance network interface. This is only assigned when the stack types of both the instance network interface and the consumer subnet are IPv4_IPv6."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number of the interface to which the IP was assigned."
        },
        "secondaryIpCidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alias IP ranges from the same subnetwork."
        },
        "status": {
          "type": "string",
          "description": "The status of a connected endpoint to this network attachment."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork used to assign the IP to the producer instance network interface."
        },
        "subnetworkCidrRange": {
          "type": "string",
          "description": "The CIDR range of the subnet from which the IPv4 internal IP was allocated from."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ipv6Address",
        "projectIdOrNum",
        "secondaryIpCidrRanges",
        "status",
        "subnetwork",
        "subnetworkCidrRange"
      ]
    },
    "google-native:compute/alpha:NetworkAttachmentConnectionPreference": {
      "type": "string",
      "enum": [
        {
          "name": "AcceptAutomatic",
          "value": "ACCEPT_AUTOMATIC"
        },
        {
          "name": "AcceptManual",
          "value": "ACCEPT_MANUAL"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupAppEngine": {
      "description": "Configuration for an App Engine network endpoint group (NEG). The service is optional, may be provided explicitly or in the URL mask. The version is optional and can only be provided explicitly or in the URL mask when service is present. Note: App Engine service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Optional serving service. The service name is case-sensitive and must be 1-63 characters long. Example value: \"default\", \"my-service\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse service and version fields from a request URL. URL mask allows for routing to multiple App Engine services without having to create multiple Network Endpoint Groups and backend services. For example, the request URLs \"foo1-dot-appname.appspot.com/v1\" and \"foo1-dot-appname.appspot.com/v2\" can be backed by the same Serverless NEG with URL mask \"<service>-dot-appname.appspot.com/<version>\". The URL mask will parse them to { service = \"foo1\", version = \"v1\" } and { service = \"foo1\", version = \"v2\" } respectively."
        },
        "version": {
          "type": "string",
          "description": "Optional serving version. The version name is case-sensitive and must be 1-100 characters long. Example value: \"v1\", \"v2\"."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkEndpointGroupAppEngineResponse": {
      "description": "Configuration for an App Engine network endpoint group (NEG). The service is optional, may be provided explicitly or in the URL mask. The version is optional and can only be provided explicitly or in the URL mask when service is present. Note: App Engine service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Optional serving service. The service name is case-sensitive and must be 1-63 characters long. Example value: \"default\", \"my-service\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse service and version fields from a request URL. URL mask allows for routing to multiple App Engine services without having to create multiple Network Endpoint Groups and backend services. For example, the request URLs \"foo1-dot-appname.appspot.com/v1\" and \"foo1-dot-appname.appspot.com/v2\" can be backed by the same Serverless NEG with URL mask \"<service>-dot-appname.appspot.com/<version>\". The URL mask will parse them to { service = \"foo1\", version = \"v1\" } and { service = \"foo1\", version = \"v2\" } respectively."
        },
        "version": {
          "type": "string",
          "description": "Optional serving version. The version name is case-sensitive and must be 1-100 characters long. Example value: \"v1\", \"v2\"."
        }
      },
      "type": "object",
      "required": [
        "service",
        "urlMask",
        "version"
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupClientPortMappingMode": {
      "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional.",
      "type": "string",
      "enum": [
        {
          "name": "ClientPortPerEndpoint",
          "description": "For each endpoint there is exactly one client port.",
          "value": "CLIENT_PORT_PER_ENDPOINT"
        },
        {
          "name": "PortMappingDisabled",
          "description": "NEG should not be used for mapping client port to destination.",
          "value": "PORT_MAPPING_DISABLED"
        }
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupCloudFunction": {
      "description": "Configuration for a Cloud Function network endpoint group (NEG). The function must be provided explicitly or in the URL mask. Note: Cloud Function must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "function": {
          "type": "string",
          "description": "A user-defined name of the Cloud Function. The function name is case-sensitive and must be 1-63 characters long. Example value: \"func1\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse function field from a request URL. URL mask allows for routing to multiple Cloud Functions without having to create multiple Network Endpoint Groups and backend services. For example, request URLs \" mydomain.com/function1\" and \"mydomain.com/function2\" can be backed by the same Serverless NEG with URL mask \"/<function>\". The URL mask will parse them to { function = \"function1\" } and { function = \"function2\" } respectively."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkEndpointGroupCloudFunctionResponse": {
      "description": "Configuration for a Cloud Function network endpoint group (NEG). The function must be provided explicitly or in the URL mask. Note: Cloud Function must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "function": {
          "type": "string",
          "description": "A user-defined name of the Cloud Function. The function name is case-sensitive and must be 1-63 characters long. Example value: \"func1\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse function field from a request URL. URL mask allows for routing to multiple Cloud Functions without having to create multiple Network Endpoint Groups and backend services. For example, request URLs \" mydomain.com/function1\" and \"mydomain.com/function2\" can be backed by the same Serverless NEG with URL mask \"/<function>\". The URL mask will parse them to { function = \"function1\" } and { function = \"function2\" } respectively."
        }
      },
      "type": "object",
      "required": [
        "function",
        "urlMask"
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupCloudRun": {
      "description": "Configuration for a Cloud Run network endpoint group (NEG). The service must be provided explicitly or in the URL mask. The tag is optional, may be provided explicitly or in the URL mask. Note: Cloud Run service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Cloud Run service is the main resource of Cloud Run. The service must be 1-63 characters long, and comply with RFC1035. Example value: \"run-service\"."
        },
        "tag": {
          "type": "string",
          "description": "Optional Cloud Run tag represents the \"named-revision\" to provide additional fine-grained traffic routing information. The tag must be 1-63 characters long, and comply with RFC1035. Example value: \"revision-0010\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse <service> and <tag> fields from a request URL. URL mask allows for routing to multiple Run services without having to create multiple network endpoint groups and backend services. For example, request URLs \"foo1.domain.com/bar1\" and \"foo1.domain.com/bar2\" can be backed by the same Serverless Network Endpoint Group (NEG) with URL mask \"<tag>.domain.com/<service>\". The URL mask will parse them to { service=\"bar1\", tag=\"foo1\" } and { service=\"bar2\", tag=\"foo2\" } respectively."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkEndpointGroupCloudRunResponse": {
      "description": "Configuration for a Cloud Run network endpoint group (NEG). The service must be provided explicitly or in the URL mask. The tag is optional, may be provided explicitly or in the URL mask. Note: Cloud Run service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Cloud Run service is the main resource of Cloud Run. The service must be 1-63 characters long, and comply with RFC1035. Example value: \"run-service\"."
        },
        "tag": {
          "type": "string",
          "description": "Optional Cloud Run tag represents the \"named-revision\" to provide additional fine-grained traffic routing information. The tag must be 1-63 characters long, and comply with RFC1035. Example value: \"revision-0010\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse <service> and <tag> fields from a request URL. URL mask allows for routing to multiple Run services without having to create multiple network endpoint groups and backend services. For example, request URLs \"foo1.domain.com/bar1\" and \"foo1.domain.com/bar2\" can be backed by the same Serverless Network Endpoint Group (NEG) with URL mask \"<tag>.domain.com/<service>\". The URL mask will parse them to { service=\"bar1\", tag=\"foo1\" } and { service=\"bar2\", tag=\"foo2\" } respectively."
        }
      },
      "type": "object",
      "required": [
        "service",
        "tag",
        "urlMask"
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupLbNetworkEndpointGroup": {
      "description": "Load balancing specific fields for network endpoint group.",
      "properties": {
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint. [Deprecated] This field is deprecated.",
          "deprecationMessage": "The default port used if the port number is not specified in the network endpoint. [Deprecated] This field is deprecated."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified. [Deprecated] This field is deprecated.",
          "deprecationMessage": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified. [Deprecated] This field is deprecated."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong. [Deprecated] This field is deprecated.",
          "deprecationMessage": "Optional URL of the subnetwork to which all network endpoints in the NEG belong. [Deprecated] This field is deprecated."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkEndpointGroupLbNetworkEndpointGroupResponse": {
      "description": "Load balancing specific fields for network endpoint group.",
      "properties": {
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint. [Deprecated] This field is deprecated.",
          "deprecationMessage": "The default port used if the port number is not specified in the network endpoint. [Deprecated] This field is deprecated."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified. [Deprecated] This field is deprecated.",
          "deprecationMessage": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified. [Deprecated] This field is deprecated."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong. [Deprecated] This field is deprecated.",
          "deprecationMessage": "Optional URL of the subnetwork to which all network endpoints in the NEG belong. [Deprecated] This field is deprecated."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the network endpoint group is located. [Deprecated] This field is deprecated.",
          "deprecationMessage": "[Output Only] The URL of the zone where the network endpoint group is located. [Deprecated] This field is deprecated."
        }
      },
      "type": "object",
      "required": [
        "defaultPort",
        "network",
        "subnetwork",
        "zone"
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupPscData": {
      "description": "All data that is specifically relevant to only network endpoint groups of type PRIVATE_SERVICE_CONNECT.",
      "type": "object"
    },
    "google-native:compute/alpha:NetworkEndpointGroupPscDataResponse": {
      "description": "All data that is specifically relevant to only network endpoint groups of type PRIVATE_SERVICE_CONNECT.",
      "properties": {
        "consumerPscAddress": {
          "type": "string",
          "description": "Address allocated from given subnetwork for PSC. This IP address acts as a VIP for a PSC NEG, allowing it to act as an endpoint in L7 PSC-XLB."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Network Endpoint Group Consumer."
        },
        "pscConnectionStatus": {
          "type": "string",
          "description": "The connection status of the PSC Forwarding Rule."
        }
      },
      "type": "object",
      "required": [
        "consumerPscAddress",
        "pscConnectionId",
        "pscConnectionStatus"
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupServerlessDeployment": {
      "description": "Configuration for a serverless network endpoint group (NEG). The platform must be provided. Note: The target backend service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "platform": {
          "type": "string",
          "description": "The platform of the backend target(s) of this NEG. The only supported value is API Gateway: apigateway.googleapis.com."
        },
        "resource": {
          "type": "string",
          "description": "The user-defined name of the workload/instance. This value must be provided explicitly or in the urlMask. The resource identified by this value is platform-specific and is as follows: 1. API Gateway: The gateway ID 2. App Engine: The service name 3. Cloud Functions: The function name 4. Cloud Run: The service name "
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse platform-specific fields from a request URL. URL mask allows for routing to multiple resources on the same serverless platform without having to create multiple Network Endpoint Groups and backend resources. The fields parsed by this template are platform-specific and are as follows: 1. API Gateway: The gateway ID 2. App Engine: The service and version 3. Cloud Functions: The function name 4. Cloud Run: The service and tag "
        },
        "version": {
          "type": "string",
          "description": "The optional resource version. The version identified by this value is platform-specific and is follows: 1. API Gateway: Unused 2. App Engine: The service version 3. Cloud Functions: Unused 4. Cloud Run: The service tag "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkEndpointGroupServerlessDeploymentResponse": {
      "description": "Configuration for a serverless network endpoint group (NEG). The platform must be provided. Note: The target backend service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "platform": {
          "type": "string",
          "description": "The platform of the backend target(s) of this NEG. The only supported value is API Gateway: apigateway.googleapis.com."
        },
        "resource": {
          "type": "string",
          "description": "The user-defined name of the workload/instance. This value must be provided explicitly or in the urlMask. The resource identified by this value is platform-specific and is as follows: 1. API Gateway: The gateway ID 2. App Engine: The service name 3. Cloud Functions: The function name 4. Cloud Run: The service name "
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse platform-specific fields from a request URL. URL mask allows for routing to multiple resources on the same serverless platform without having to create multiple Network Endpoint Groups and backend resources. The fields parsed by this template are platform-specific and are as follows: 1. API Gateway: The gateway ID 2. App Engine: The service and version 3. Cloud Functions: The function name 4. Cloud Run: The service and tag "
        },
        "version": {
          "type": "string",
          "description": "The optional resource version. The version identified by this value is platform-specific and is follows: 1. API Gateway: Unused 2. App Engine: The service version 3. Cloud Functions: Unused 4. Cloud Run: The service tag "
        }
      },
      "type": "object",
      "required": [
        "platform",
        "resource",
        "urlMask",
        "version"
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroupType": {
      "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now.",
      "type": "string",
      "enum": [
        {
          "name": "LoadBalancing",
          "description": "The network endpoint group is a backend of a load balancer.",
          "value": "LOAD_BALANCING"
        }
      ]
    },
    "google-native:compute/alpha:NetworkFirewallPolicyVpcNetworkScope": {
      "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
      "type": "string",
      "enum": [
        {
          "name": "GlobalVpcNetwork",
          "description": "The firewall policy is allowed to be attached only to global networks.",
          "value": "GLOBAL_VPC_NETWORK"
        },
        {
          "name": "RegionalVpcNetwork",
          "description": "The firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. This option is applicable only to regional firewall policies.",
          "value": "REGIONAL_VPC_NETWORK"
        }
      ]
    },
    "google-native:compute/alpha:NetworkInterface": {
      "description": "A network interface resource attached to an instance.",
      "properties": {
        "accessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AccessConfig"
          },
          "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access."
        },
        "aliasIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AliasIpRange"
          },
          "description": "An array of alias IP ranges for this network interface. You can only specify this field for network interfaces in VPC networks."
        },
        "internalIpv6PrefixLength": {
          "type": "integer",
          "description": "The prefix length of the primary internal IPv6 range."
        },
        "ipv6AccessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AccessConfig"
          },
          "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."
        },
        "ipv6Address": {
          "type": "string",
          "description": "An IPv6 internal network address for this network interface. To use a static internal 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 internal IPv6 address from the instance's subnetwork."
        },
        "network": {
          "type": "string",
          "description": "URL of the VPC network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used. If the selected project doesn't have the default network, you must specify a network or subnet. If the network is not specified but the subnetwork is specified, the network is inferred. If you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/global/networks/ network - projects/project/global/networks/network - global/networks/default "
        },
        "networkAttachment": {
          "type": "string",
          "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{project_number}/regions/{region_name}/networkAttachments/{network_attachment_name}."
        },
        "networkIP": {
          "type": "string",
          "description": "An IPv4 internal IP address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
        },
        "nicType": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceNicType",
          "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "parentNicName": {
          "type": "string",
          "description": "Name of the parent network interface of a VLAN based nic. If this field is specified, vlan must be set."
        },
        "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'll be empty if not specified by the users."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceStackType",
          "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations."
        },
        "subinterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceSubInterface"
          },
          "description": "SubInterfaces help enable L2 communication for the instance over subnetworks that support L2. Every network interface will get a default untagged (vlan not specified) subinterface. Users can specify additional tagged subinterfaces which are sub-fields to the Network Interface."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. If the network is in custom subnet mode, specifying the subnetwork is required. If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/regions/region /subnetworks/subnetwork - regions/region/subnetworks/subnetwork "
        },
        "vlan": {
          "type": "integer",
          "description": "VLAN tag of a VLAN based network interface, must be in range from 2 to 4094 inclusively. This field is mandatory if the parent network interface name is set."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkInterfaceNicType": {
      "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.",
      "type": "string",
      "enum": [
        {
          "name": "Gvnic",
          "description": "GVNIC",
          "value": "GVNIC"
        },
        {
          "name": "UnspecifiedNicType",
          "description": "No type specified.",
          "value": "UNSPECIFIED_NIC_TYPE"
        },
        {
          "name": "VirtioNet",
          "description": "VIRTIO",
          "value": "VIRTIO_NET"
        }
      ]
    },
    "google-native:compute/alpha:NetworkInterfaceResponse": {
      "description": "A network interface resource attached to an instance.",
      "properties": {
        "accessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AccessConfigResponse"
          },
          "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access."
        },
        "aliasIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AliasIpRangeResponse"
          },
          "description": "An array of alias IP ranges for this network interface. You can only specify this field for network interfaces in VPC networks."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint hash of contents stored in this network interface. This field will be ignored when inserting an Instance or adding a NetworkInterface. An up-to-date fingerprint must be provided in order to update the NetworkInterface. The request will fail with error 400 Bad Request if the fingerprint is not provided, or 412 Precondition Failed if the fingerprint is out of date."
        },
        "internalIpv6PrefixLength": {
          "type": "integer",
          "description": "The prefix length of the primary internal IPv6 range."
        },
        "ipv6AccessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AccessConfigResponse"
          },
          "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."
        },
        "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. Valid only if stackType is IPV4_IPV6."
        },
        "ipv6Address": {
          "type": "string",
          "description": "An IPv6 internal network address for this network interface. To use a static internal 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 internal IPv6 address from the instance's subnetwork."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkInterface for network interfaces."
        },
        "name": {
          "type": "string",
          "description": "The name of the network interface, which is generated by the server. For a VM, the network interface uses the nicN naming format. Where N is a value between 0 and 7. The default interface value is nic0."
        },
        "network": {
          "type": "string",
          "description": "URL of the VPC network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used. If the selected project doesn't have the default network, you must specify a network or subnet. If the network is not specified but the subnetwork is specified, the network is inferred. If you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/global/networks/ network - projects/project/global/networks/network - global/networks/default "
        },
        "networkAttachment": {
          "type": "string",
          "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{project_number}/regions/{region_name}/networkAttachments/{network_attachment_name}."
        },
        "networkIP": {
          "type": "string",
          "description": "An IPv4 internal IP address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
        },
        "nicType": {
          "type": "string",
          "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "parentNicName": {
          "type": "string",
          "description": "Name of the parent network interface of a VLAN based nic. If this field is specified, vlan must be set."
        },
        "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'll be empty if not specified by the users."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations."
        },
        "subinterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceSubInterfaceResponse"
          },
          "description": "SubInterfaces help enable L2 communication for the instance over subnetworks that support L2. Every network interface will get a default untagged (vlan not specified) subinterface. Users can specify additional tagged subinterfaces which are sub-fields to the Network Interface."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. If the network is in custom subnet mode, specifying the subnetwork is required. If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/regions/region /subnetworks/subnetwork - regions/region/subnetworks/subnetwork "
        },
        "vlan": {
          "type": "integer",
          "description": "VLAN tag of a VLAN based network interface, must be in range from 2 to 4094 inclusively. This field is mandatory if the parent network interface name is set."
        }
      },
      "type": "object",
      "required": [
        "accessConfigs",
        "aliasIpRanges",
        "fingerprint",
        "internalIpv6PrefixLength",
        "ipv6AccessConfigs",
        "ipv6AccessType",
        "ipv6Address",
        "kind",
        "name",
        "network",
        "networkAttachment",
        "networkIP",
        "nicType",
        "parentNicName",
        "queueCount",
        "stackType",
        "subinterfaces",
        "subnetwork",
        "vlan"
      ]
    },
    "google-native:compute/alpha:NetworkInterfaceStackType": {
      "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "The network interface can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "The network interface will be assigned IPv4 address.",
          "value": "IPV4_ONLY"
        },
        {
          "name": "Ipv6Only",
          "description": "The network interface will only be assigned IPv6 addresses.",
          "value": "IPV6_ONLY"
        }
      ]
    },
    "google-native:compute/alpha:NetworkInterfaceSubInterface": {
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "An IPv4 internal IP address to assign to the instance for this subinterface. If specified, ip_allocation_mode should be set to ALLOCATE_IP."
        },
        "ipAllocationMode": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceSubInterfaceIpAllocationMode"
        },
        "subnetwork": {
          "type": "string",
          "description": "If specified, this subnetwork must belong to the same network as that of the network interface. If not specified the subnet of network interface will be used. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/regions/region /subnetworks/subnetwork - regions/region/subnetworks/subnetwork "
        },
        "vlan": {
          "type": "integer",
          "description": "VLAN tag. Should match the VLAN(s) supported by the subnetwork to which this subinterface is connecting."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkInterfaceSubInterfaceIpAllocationMode": {
      "type": "string",
      "enum": [
        {
          "name": "AllocateIp",
          "description": "Allocates an internal IPv4 IP address from subnets secondary IP Range.",
          "value": "ALLOCATE_IP"
        },
        {
          "name": "DoNotAllocateIp",
          "description": "No IP allocation is done for the subinterface.",
          "value": "DO_NOT_ALLOCATE_IP"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:NetworkInterfaceSubInterfaceResponse": {
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "An IPv4 internal IP address to assign to the instance for this subinterface. If specified, ip_allocation_mode should be set to ALLOCATE_IP."
        },
        "ipAllocationMode": {
          "type": "string"
        },
        "subnetwork": {
          "type": "string",
          "description": "If specified, this subnetwork must belong to the same network as that of the network interface. If not specified the subnet of network interface will be used. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/regions/region /subnetworks/subnetwork - regions/region/subnetworks/subnetwork "
        },
        "vlan": {
          "type": "integer",
          "description": "VLAN tag. Should match the VLAN(s) supported by the subnetwork to which this subinterface is connecting."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ipAllocationMode",
        "subnetwork",
        "vlan"
      ]
    },
    "google-native:compute/alpha:NetworkNetworkFirewallPolicyEnforcementOrder": {
      "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "AfterClassicFirewall",
          "value": "AFTER_CLASSIC_FIREWALL"
        },
        {
          "name": "BeforeClassicFirewall",
          "value": "BEFORE_CLASSIC_FIREWALL"
        }
      ]
    },
    "google-native:compute/alpha:NetworkPeeringResponse": {
      "description": "A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.",
      "properties": {
        "advertisePeerSubnetsViaRouters": {
          "type": "boolean",
          "description": "Whether Cloud Routers in this network can automatically advertise subnets from the peer network."
        },
        "autoCreateRoutes": {
          "type": "boolean",
          "description": "This field will be deprecated soon. Use the exchange_subnet_routes field instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE."
        },
        "exchangeSubnetRoutes": {
          "type": "boolean",
          "description": "Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE."
        },
        "exportCustomRoutes": {
          "type": "boolean",
          "description": "Whether to export the custom routes to peer network. The default value is false."
        },
        "exportSubnetRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Whether subnet routes with public IP range are exported. The default value is true, all subnet routes are exported. IPv4 special-use ranges are always exported to peers and are not controlled by this field."
        },
        "importCustomRoutes": {
          "type": "boolean",
          "description": "Whether to import the custom routes from peer network. The default value is false."
        },
        "importSubnetRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Whether subnet routes with public IP range are imported. The default value is false. IPv4 special-use ranges are always imported from peers and are not controlled by this field."
        },
        "name": {
          "type": "string",
          "description": "Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
        },
        "peerMtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes."
        },
        "stackType": {
          "type": "string",
          "description": "Which IP version(s) of traffic and routes are allowed to be imported or exported between peer networks. The default value is IPV4_ONLY."
        },
        "state": {
          "type": "string",
          "description": "State for the peering, either `ACTIVE` or `INACTIVE`. The peering is `ACTIVE` when there's a matching configuration in the peer network."
        },
        "stateDetails": {
          "type": "string",
          "description": "Details about the current state of the peering."
        }
      },
      "type": "object",
      "required": [
        "advertisePeerSubnetsViaRouters",
        "autoCreateRoutes",
        "exchangeSubnetRoutes",
        "exportCustomRoutes",
        "exportSubnetRoutesWithPublicIp",
        "importCustomRoutes",
        "importSubnetRoutesWithPublicIp",
        "name",
        "network",
        "peerMtu",
        "stackType",
        "state",
        "stateDetails"
      ]
    },
    "google-native:compute/alpha:NetworkPerformanceConfig": {
      "properties": {
        "externalIpEgressBandwidthTier": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkPerformanceConfigExternalIpEgressBandwidthTier"
        },
        "totalEgressBandwidthTier": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkPerformanceConfigTotalEgressBandwidthTier"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkPerformanceConfigExternalIpEgressBandwidthTier": {
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "value": "DEFAULT"
        },
        {
          "name": "Tier1",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:compute/alpha:NetworkPerformanceConfigResponse": {
      "properties": {
        "externalIpEgressBandwidthTier": {
          "type": "string"
        },
        "totalEgressBandwidthTier": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "externalIpEgressBandwidthTier",
        "totalEgressBandwidthTier"
      ]
    },
    "google-native:compute/alpha:NetworkPerformanceConfigTotalEgressBandwidthTier": {
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "value": "DEFAULT"
        },
        {
          "name": "Tier1",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:compute/alpha:NetworkRoutingConfig": {
      "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
      "properties": {
        "bgpAlwaysCompareMed": {
          "type": "boolean",
          "description": "Enable comparison of Multi-Exit Discriminators (MED) across routes with different neighbor ASNs when using the STANDARD BGP best path selection algorithm."
        },
        "bgpBestPathSelectionMode": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkRoutingConfigBgpBestPathSelectionMode",
          "description": "The BGP best path selection algorithm to be employed within this network for dynamic routes learned by Cloud Routers. Can be LEGACY (default) or STANDARD."
        },
        "bgpInterRegionCost": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkRoutingConfigBgpInterRegionCost",
          "description": "Allows to define a preferred approach for handling inter-region cost in the selection process when using the STANDARD BGP best path selection algorithm. Can be DEFAULT or ADD_COST_TO_MED."
        },
        "routingMode": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkRoutingConfigRoutingMode",
          "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NetworkRoutingConfigBgpBestPathSelectionMode": {
      "description": "The BGP best path selection algorithm to be employed within this network for dynamic routes learned by Cloud Routers. Can be LEGACY (default) or STANDARD.",
      "type": "string",
      "enum": [
        {
          "name": "Legacy",
          "value": "LEGACY"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:NetworkRoutingConfigBgpInterRegionCost": {
      "description": "Allows to define a preferred approach for handling inter-region cost in the selection process when using the STANDARD BGP best path selection algorithm. Can be DEFAULT or ADD_COST_TO_MED.",
      "type": "string",
      "enum": [
        {
          "name": "AddCostToMed",
          "value": "ADD_COST_TO_MED"
        },
        {
          "name": "Default",
          "value": "DEFAULT"
        }
      ]
    },
    "google-native:compute/alpha:NetworkRoutingConfigResponse": {
      "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
      "properties": {
        "bgpAlwaysCompareMed": {
          "type": "boolean",
          "description": "Enable comparison of Multi-Exit Discriminators (MED) across routes with different neighbor ASNs when using the STANDARD BGP best path selection algorithm."
        },
        "bgpBestPathSelectionMode": {
          "type": "string",
          "description": "The BGP best path selection algorithm to be employed within this network for dynamic routes learned by Cloud Routers. Can be LEGACY (default) or STANDARD."
        },
        "bgpInterRegionCost": {
          "type": "string",
          "description": "Allows to define a preferred approach for handling inter-region cost in the selection process when using the STANDARD BGP best path selection algorithm. Can be DEFAULT or ADD_COST_TO_MED."
        },
        "routingMode": {
          "type": "string",
          "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions."
        }
      },
      "type": "object",
      "required": [
        "bgpAlwaysCompareMed",
        "bgpBestPathSelectionMode",
        "bgpInterRegionCost",
        "routingMode"
      ]
    },
    "google-native:compute/alpha:NetworkRoutingConfigRoutingMode": {
      "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions.",
      "type": "string",
      "enum": [
        {
          "name": "Global",
          "value": "GLOBAL"
        },
        {
          "name": "Regional",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:compute/alpha:NodeGroupAutoscalingPolicy": {
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "The maximum number of nodes that the group should have. Must be set if autoscaling is enabled. Maximum value allowed is 100."
        },
        "minNodes": {
          "type": "integer",
          "description": "The minimum number of nodes that the group should have."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeGroupAutoscalingPolicyMode",
          "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NodeGroupAutoscalingPolicyMode": {
      "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Off",
          "description": "Autoscaling is disabled.",
          "value": "OFF"
        },
        {
          "name": "On",
          "description": "Autocaling is fully enabled.",
          "value": "ON"
        },
        {
          "name": "OnlyScaleOut",
          "description": "Autoscaling will only scale out and will not remove nodes.",
          "value": "ONLY_SCALE_OUT"
        }
      ]
    },
    "google-native:compute/alpha:NodeGroupAutoscalingPolicyResponse": {
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "The maximum number of nodes that the group should have. Must be set if autoscaling is enabled. Maximum value allowed is 100."
        },
        "minNodes": {
          "type": "integer",
          "description": "The minimum number of nodes that the group should have."
        },
        "mode": {
          "type": "string",
          "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes."
        }
      },
      "type": "object",
      "required": [
        "maxNodes",
        "minNodes",
        "mode"
      ]
    },
    "google-native:compute/alpha:NodeGroupMaintenanceInterval": {
      "description": "Specifies the frequency of planned maintenance events. The accepted values are: `AS_NEEDED` and `RECURRENT`.",
      "type": "string",
      "enum": [
        {
          "name": "AsNeeded",
          "description": "VMs are eligible to receive infrastructure and hypervisor updates as they become available. This may result in more maintenance operations (live migrations or terminations) for the VM than the PERIODIC and RECURRENT options.",
          "value": "AS_NEEDED"
        },
        {
          "name": "Periodic",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available.",
          "value": "PERIODIC"
        },
        {
          "name": "Recurrent",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available. RECURRENT is used for GEN3 and Slice of Hardware VMs.",
          "value": "RECURRENT"
        }
      ]
    },
    "google-native:compute/alpha:NodeGroupMaintenancePolicy": {
      "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "Allow the node and corresponding instances to retain default maintenance behavior.",
          "value": "DEFAULT"
        },
        {
          "name": "MaintenancePolicyUnspecified",
          "value": "MAINTENANCE_POLICY_UNSPECIFIED"
        },
        {
          "name": "MigrateWithinNodeGroup",
          "description": "When maintenance must be done on a node, the instances on that node will be moved to other nodes in the group. Instances with onHostMaintenance = MIGRATE will live migrate to their destinations while instances with onHostMaintenance = TERMINATE will terminate and then restart on their destination nodes if automaticRestart = true.",
          "value": "MIGRATE_WITHIN_NODE_GROUP"
        },
        {
          "name": "RestartInPlace",
          "description": "Instances in this group will restart on the same node when maintenance has completed. Instances must have onHostMaintenance = TERMINATE, and they will only restart if automaticRestart = true.",
          "value": "RESTART_IN_PLACE"
        }
      ]
    },
    "google-native:compute/alpha:NodeGroupMaintenanceWindow": {
      "description": "Time window specified for daily maintenance operations. GCE's internal maintenance will be performed within this window.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NodeGroupMaintenanceWindowResponse": {
      "description": "Time window specified for daily maintenance operations. GCE's internal maintenance will be performed within this window.",
      "properties": {
        "duration": {
          "type": "string",
          "description": "[Output only] A predetermined duration for the window, automatically chosen to be the smallest possible in the given scenario."
        },
        "maintenanceDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "[Output only] A predetermined duration for the window, automatically chosen to be the smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "maintenanceDuration",
        "startTime"
      ]
    },
    "google-native:compute/alpha:NodeGroupStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Creating",
          "value": "CREATING"
        },
        {
          "name": "Deleting",
          "value": "DELETING"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ready",
          "value": "READY"
        }
      ]
    },
    "google-native:compute/alpha:NodeTemplateCpuOvercommitType": {
      "description": "CPU overcommit.",
      "type": "string",
      "enum": [
        {
          "name": "CpuOvercommitTypeUnspecified",
          "value": "CPU_OVERCOMMIT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "value": "ENABLED"
        },
        {
          "name": "None",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/alpha:NodeTemplateNodeTypeFlexibility": {
      "properties": {
        "cpus": {
          "type": "string"
        },
        "localSsd": {
          "type": "string"
        },
        "memory": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NodeTemplateNodeTypeFlexibilityResponse": {
      "properties": {
        "cpus": {
          "type": "string"
        },
        "localSsd": {
          "type": "string"
        },
        "memory": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "cpus",
        "localSsd",
        "memory"
      ]
    },
    "google-native:compute/alpha:NotificationEndpointGrpcSettings": {
      "description": "Represents a gRPC setting that describes one gRPC notification endpoint and the retry duration attempting to send notification to this endpoint.",
      "properties": {
        "authority": {
          "type": "string",
          "description": "Optional. If specified, this field is used to set the authority header by the sender of notifications. See https://tools.ietf.org/html/rfc7540#section-8.1.2.3"
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint to which gRPC notifications are sent. This must be a valid gRPCLB DNS name."
        },
        "payloadName": {
          "type": "string",
          "description": "Optional. If specified, this field is used to populate the \"name\" field in gRPC requests."
        },
        "resendInterval": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Optional. This field is used to configure how often to send a full update of all non-healthy backends. If unspecified, full updates are not sent. If specified, must be in the range between 600 seconds to 3600 seconds. Nanos are disallowed. Can only be set for regional notification endpoints."
        },
        "retryDurationSec": {
          "type": "integer",
          "description": "How much time (in seconds) is spent attempting notification retries until a successful response is received. Default is 30s. Limit is 20m (1200s). Must be a positive number."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:NotificationEndpointGrpcSettingsResponse": {
      "description": "Represents a gRPC setting that describes one gRPC notification endpoint and the retry duration attempting to send notification to this endpoint.",
      "properties": {
        "authority": {
          "type": "string",
          "description": "Optional. If specified, this field is used to set the authority header by the sender of notifications. See https://tools.ietf.org/html/rfc7540#section-8.1.2.3"
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint to which gRPC notifications are sent. This must be a valid gRPCLB DNS name."
        },
        "payloadName": {
          "type": "string",
          "description": "Optional. If specified, this field is used to populate the \"name\" field in gRPC requests."
        },
        "resendInterval": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Optional. This field is used to configure how often to send a full update of all non-healthy backends. If unspecified, full updates are not sent. If specified, must be in the range between 600 seconds to 3600 seconds. Nanos are disallowed. Can only be set for regional notification endpoints."
        },
        "retryDurationSec": {
          "type": "integer",
          "description": "How much time (in seconds) is spent attempting notification retries until a successful response is received. Default is 30s. Limit is 20m (1200s). Must be a positive number."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "endpoint",
        "payloadName",
        "resendInterval",
        "retryDurationSec"
      ]
    },
    "google-native:compute/alpha:OrganizationSecurityPolicyType": {
      "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
      "type": "string",
      "enum": [
        {
          "name": "CloudArmor",
          "value": "CLOUD_ARMOR"
        },
        {
          "name": "CloudArmorEdge",
          "value": "CLOUD_ARMOR_EDGE"
        },
        {
          "name": "CloudArmorInternalService",
          "value": "CLOUD_ARMOR_INTERNAL_SERVICE"
        },
        {
          "name": "CloudArmorNetwork",
          "value": "CLOUD_ARMOR_NETWORK"
        },
        {
          "name": "Firewall",
          "value": "FIREWALL"
        }
      ]
    },
    "google-native:compute/alpha:OriginAuthenticationMethod": {
      "description": "[Deprecated] Configuration for the origin authentication method. Configuration for the origin authentication method.",
      "properties": {
        "jwt": {
          "$ref": "#/types/google-native:compute%2Falpha:Jwt"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:OriginAuthenticationMethodResponse": {
      "description": "[Deprecated] Configuration for the origin authentication method. Configuration for the origin authentication method.",
      "properties": {
        "jwt": {
          "$ref": "#/types/google-native:compute%2Falpha:JwtResponse"
        }
      },
      "type": "object",
      "required": [
        "jwt"
      ]
    },
    "google-native:compute/alpha:OutlierDetection": {
      "description": "Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service.",
      "properties": {
        "baseEjectionTime": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "The base time that a backend endpoint is ejected for. Defaults to 30000ms or 30s. After a backend endpoint is returned back to the load balancing pool, it can be ejected again in another ejection analysis. Thus, the total ejection time is equal to the base ejection time multiplied by the number of times the backend endpoint has been ejected. Defaults to 30000ms or 30s."
        },
        "consecutiveErrors": {
          "type": "integer",
          "description": "Number of consecutive errors before a backend endpoint is ejected from the load balancing pool. When the backend endpoint is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5."
        },
        "consecutiveGatewayFailure": {
          "type": "integer",
          "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3."
        },
        "enforcingConsecutiveErrors": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0."
        },
        "enforcingConsecutiveGatewayFailure": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100."
        },
        "enforcingSuccessRate": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "interval": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Time interval between ejection analysis sweeps. This can result in both new ejections and backend endpoints being returned to service. The interval is equal to the number of seconds as defined in outlierDetection.interval.seconds plus the number of nanoseconds as defined in outlierDetection.interval.nanos. Defaults to 1 second."
        },
        "maxEjectionPercent": {
          "type": "integer",
          "description": "Maximum percentage of backend endpoints in the load balancing pool for the backend service that can be ejected if the ejection conditions are met. Defaults to 50%."
        },
        "successRateMinimumHosts": {
          "type": "integer",
          "description": "The number of backend endpoints in the load balancing pool that must have enough request volume to detect success rate outliers. If the number of backend endpoints is fewer than this setting, outlier detection via success rate statistics is not performed for any backend endpoint in the load balancing pool. Defaults to 5. Not supported when the backend service uses Serverless NEG."
        },
        "successRateRequestVolume": {
          "type": "integer",
          "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this backend endpoint in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that backend endpoint. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "successRateStdevFactor": {
          "type": "integer",
          "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * successRateStdevFactor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900. Not supported when the backend service uses Serverless NEG."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:OutlierDetectionResponse": {
      "description": "Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service.",
      "properties": {
        "baseEjectionTime": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "The base time that a backend endpoint is ejected for. Defaults to 30000ms or 30s. After a backend endpoint is returned back to the load balancing pool, it can be ejected again in another ejection analysis. Thus, the total ejection time is equal to the base ejection time multiplied by the number of times the backend endpoint has been ejected. Defaults to 30000ms or 30s."
        },
        "consecutiveErrors": {
          "type": "integer",
          "description": "Number of consecutive errors before a backend endpoint is ejected from the load balancing pool. When the backend endpoint is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5."
        },
        "consecutiveGatewayFailure": {
          "type": "integer",
          "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3."
        },
        "enforcingConsecutiveErrors": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0."
        },
        "enforcingConsecutiveGatewayFailure": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100."
        },
        "enforcingSuccessRate": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "interval": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Time interval between ejection analysis sweeps. This can result in both new ejections and backend endpoints being returned to service. The interval is equal to the number of seconds as defined in outlierDetection.interval.seconds plus the number of nanoseconds as defined in outlierDetection.interval.nanos. Defaults to 1 second."
        },
        "maxEjectionPercent": {
          "type": "integer",
          "description": "Maximum percentage of backend endpoints in the load balancing pool for the backend service that can be ejected if the ejection conditions are met. Defaults to 50%."
        },
        "successRateMinimumHosts": {
          "type": "integer",
          "description": "The number of backend endpoints in the load balancing pool that must have enough request volume to detect success rate outliers. If the number of backend endpoints is fewer than this setting, outlier detection via success rate statistics is not performed for any backend endpoint in the load balancing pool. Defaults to 5. Not supported when the backend service uses Serverless NEG."
        },
        "successRateRequestVolume": {
          "type": "integer",
          "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this backend endpoint in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that backend endpoint. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "successRateStdevFactor": {
          "type": "integer",
          "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * successRateStdevFactor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900. Not supported when the backend service uses Serverless NEG."
        }
      },
      "type": "object",
      "required": [
        "baseEjectionTime",
        "consecutiveErrors",
        "consecutiveGatewayFailure",
        "enforcingConsecutiveErrors",
        "enforcingConsecutiveGatewayFailure",
        "enforcingSuccessRate",
        "interval",
        "maxEjectionPercent",
        "successRateMinimumHosts",
        "successRateRequestVolume",
        "successRateStdevFactor"
      ]
    },
    "google-native:compute/alpha:PacketMirroringEnable": {
      "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE.",
      "type": "string",
      "enum": [
        {
          "name": "False",
          "value": "FALSE"
        },
        {
          "name": "True",
          "value": "TRUE"
        }
      ]
    },
    "google-native:compute/alpha:PacketMirroringFilter": {
      "properties": {
        "cidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IP CIDR ranges that apply as filter on the source (ingress) or destination (egress) IP in the IP header. Only IPv4 is supported. If no ranges are specified, all traffic that matches the specified IPProtocols is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringFilterDirection",
          "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH."
        },
        "ipProtocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Protocols that apply as filter on mirrored traffic. If no protocols are specified, all traffic that matches the specified CIDR ranges is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PacketMirroringFilterDirection": {
      "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH.",
      "type": "string",
      "enum": [
        {
          "name": "Both",
          "description": "Default, both directions are mirrored.",
          "value": "BOTH"
        },
        {
          "name": "Egress",
          "description": "Only egress traffic is mirrored.",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "description": "Only ingress traffic is mirrored.",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/alpha:PacketMirroringFilterResponse": {
      "properties": {
        "cidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IP CIDR ranges that apply as filter on the source (ingress) or destination (egress) IP in the IP header. Only IPv4 is supported. If no ranges are specified, all traffic that matches the specified IPProtocols is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        },
        "direction": {
          "type": "string",
          "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH."
        },
        "ipProtocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Protocols that apply as filter on mirrored traffic. If no protocols are specified, all traffic that matches the specified CIDR ranges is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        }
      },
      "type": "object",
      "required": [
        "cidrRanges",
        "direction",
        "ipProtocols"
      ]
    },
    "google-native:compute/alpha:PacketMirroringForwardingRuleInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the forwarding rule representing the ILB configured as destination of the mirrored traffic."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PacketMirroringForwardingRuleInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the forwarding rule; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the forwarding rule representing the ILB configured as destination of the mirrored traffic."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/alpha:PacketMirroringMirroredResourceInfo": {
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringMirroredResourceInfoInstanceInfo"
          },
          "description": "A set of virtual machine instances that are being mirrored. They must live in zones contained in the same region as this packetMirroring. Note that this config will apply only to those network interfaces of the Instances that belong to the network specified in this packetMirroring. You may specify a maximum of 50 Instances."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringMirroredResourceInfoSubnetInfo"
          },
          "description": "A set of subnetworks for which traffic from/to all VM instances will be mirrored. They must live in the same region as this packetMirroring. You may specify a maximum of 5 subnetworks."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of mirrored tags. Traffic from/to all VM instances that have one or more of these tags will be mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PacketMirroringMirroredResourceInfoInstanceInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the virtual machine instance which is being mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PacketMirroringMirroredResourceInfoInstanceInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the instance; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the virtual machine instance which is being mirrored."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/alpha:PacketMirroringMirroredResourceInfoResponse": {
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringMirroredResourceInfoInstanceInfoResponse"
          },
          "description": "A set of virtual machine instances that are being mirrored. They must live in zones contained in the same region as this packetMirroring. Note that this config will apply only to those network interfaces of the Instances that belong to the network specified in this packetMirroring. You may specify a maximum of 50 Instances."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringMirroredResourceInfoSubnetInfoResponse"
          },
          "description": "A set of subnetworks for which traffic from/to all VM instances will be mirrored. They must live in the same region as this packetMirroring. You may specify a maximum of 5 subnetworks."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of mirrored tags. Traffic from/to all VM instances that have one or more of these tags will be mirrored."
        }
      },
      "type": "object",
      "required": [
        "instances",
        "subnetworks",
        "tags"
      ]
    },
    "google-native:compute/alpha:PacketMirroringMirroredResourceInfoSubnetInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the subnetwork for which traffic from/to all VM instances will be mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PacketMirroringMirroredResourceInfoSubnetInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the subnetwork; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the subnetwork for which traffic from/to all VM instances will be mirrored."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/alpha:PacketMirroringNetworkInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "URL of the network resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PacketMirroringNetworkInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the network; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "URL of the network resource."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/alpha:PathMatcher": {
      "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service is used.",
      "properties": {
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicy",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy is configured with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is configured for the error code 404. If 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. When 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path matcher's defaultRouteAction."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource. This URL is used if none of the pathRules or routeRules defined by this PathMatcher are matched. For example, the following are all valid URLs to a BackendService resource: - https://www.googleapis.com/compute/v1/projects/project /global/backendServices/backendService - compute/v1/projects/project/global/backendServices/backendService - global/backendServices/backendService If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. Authorization requires one or more of the following Google IAM permissions on the specified resource default_service: - compute.backendBuckets.use - compute.backendServices.use "
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectAction",
          "description": "When none of the specified pathRules or routeRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backend service. HeaderAction specified here are applied after the matching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "name": {
          "type": "string",
          "description": "The name to which this PathMatcher is referred by the HostRule."
        },
        "pathRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PathRule"
          },
          "description": "The list of path rules. Use this list instead of routeRules when routing based on simple path matching is all that's required. The order by which path rules are specified does not matter. Matches are always done on the longest-path-first basis. For example: a pathRule with a path /a/b/c/* will match before /a/b/* irrespective of the order in which those paths appear in this list. Within a given pathMatcher, only one of pathRules or routeRules must be set."
        },
        "routeRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpRouteRule"
          },
          "description": "The list of HTTP route rules. Use this list instead of pathRules when advanced route matching and routing actions are desired. routeRules are evaluated in order of priority, from the lowest to highest number. Within a given pathMatcher, you can set only one of pathRules or routeRules."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PathMatcherResponse": {
      "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service is used.",
      "properties": {
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyResponse",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy is configured with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is configured for the error code 404. If 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. When 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path matcher's defaultRouteAction."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource. This URL is used if none of the pathRules or routeRules defined by this PathMatcher are matched. For example, the following are all valid URLs to a BackendService resource: - https://www.googleapis.com/compute/v1/projects/project /global/backendServices/backendService - compute/v1/projects/project/global/backendServices/backendService - global/backendServices/backendService If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. Authorization requires one or more of the following Google IAM permissions on the specified resource default_service: - compute.backendBuckets.use - compute.backendServices.use "
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectActionResponse",
          "description": "When none of the specified pathRules or routeRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backend service. HeaderAction specified here are applied after the matching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "name": {
          "type": "string",
          "description": "The name to which this PathMatcher is referred by the HostRule."
        },
        "pathRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PathRuleResponse"
          },
          "description": "The list of path rules. Use this list instead of routeRules when routing based on simple path matching is all that's required. The order by which path rules are specified does not matter. Matches are always done on the longest-path-first basis. For example: a pathRule with a path /a/b/c/* will match before /a/b/* irrespective of the order in which those paths appear in this list. Within a given pathMatcher, only one of pathRules or routeRules must be set."
        },
        "routeRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpRouteRuleResponse"
          },
          "description": "The list of HTTP route rules. Use this list instead of pathRules when advanced route matching and routing actions are desired. routeRules are evaluated in order of priority, from the lowest to highest number. Within a given pathMatcher, you can set only one of pathRules or routeRules."
        }
      },
      "type": "object",
      "required": [
        "defaultCustomErrorResponsePolicy",
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "headerAction",
        "name",
        "pathRules",
        "routeRules"
      ]
    },
    "google-native:compute/alpha:PathRule": {
      "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
      "properties": {
        "customErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicy",
          "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. If 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors - A PathRule for /coming_soon/ is configured for the error code 404. If 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. customErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteAction",
          "description": "In response to a matching path, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of routeAction or urlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectAction",
          "description": "When a path pattern is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PathRuleResponse": {
      "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
      "properties": {
        "customErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyResponse",
          "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. If 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors - A PathRule for /coming_soon/ is configured for the error code 404. If 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. customErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteActionResponse",
          "description": "In response to a matching path, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of routeAction or urlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectActionResponse",
          "description": "When a path pattern is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object",
      "required": [
        "customErrorResponsePolicy",
        "paths",
        "routeAction",
        "service",
        "urlRedirect"
      ]
    },
    "google-native:compute/alpha:PeerAuthenticationMethod": {
      "description": "[Deprecated] Configuration for the peer authentication method. Configuration for the peer authentication method.",
      "properties": {
        "mtls": {
          "$ref": "#/types/google-native:compute%2Falpha:MutualTls",
          "description": "Set if mTLS is used for peer authentication."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PeerAuthenticationMethodResponse": {
      "description": "[Deprecated] Configuration for the peer authentication method. Configuration for the peer authentication method.",
      "properties": {
        "mtls": {
          "$ref": "#/types/google-native:compute%2Falpha:MutualTlsResponse",
          "description": "Set if mTLS is used for peer authentication."
        }
      },
      "type": "object",
      "required": [
        "mtls"
      ]
    },
    "google-native:compute/alpha:Permission": {
      "description": "[Deprecated] All fields defined in a permission are ANDed.",
      "properties": {
        "constraints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PermissionConstraint"
          },
          "description": "Extra custom constraints. The constraints are ANDed together."
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported."
        },
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "HTTP method."
        },
        "notHosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of hosts. Specifies exclusions."
        },
        "notMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of methods. Specifies exclusions."
        },
        "notPaths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of paths. Specifies exclusions."
        },
        "notPorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of ports. Specifies exclusions."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Port names or numbers."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PermissionConstraint": {
      "description": "Custom constraint that specifies a key and a list of allowed values for Istio attributes.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the constraint."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of allowed values."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PermissionConstraintResponse": {
      "description": "Custom constraint that specifies a key and a list of allowed values for Istio attributes.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the constraint."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of allowed values."
        }
      },
      "type": "object",
      "required": [
        "key",
        "values"
      ]
    },
    "google-native:compute/alpha:PermissionResponse": {
      "description": "[Deprecated] All fields defined in a permission are ANDed.",
      "properties": {
        "constraints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PermissionConstraintResponse"
          },
          "description": "Extra custom constraints. The constraints are ANDed together."
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Used in Ingress or Egress Gateway cases to specify hosts that the policy applies to. Exact match, prefix match, and suffix match are supported."
        },
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "HTTP method."
        },
        "notHosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of hosts. Specifies exclusions."
        },
        "notMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of methods. Specifies exclusions."
        },
        "notPaths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of paths. Specifies exclusions."
        },
        "notPorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of ports. Specifies exclusions."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "HTTP request paths or gRPC methods. Exact match, prefix match, and suffix match are supported."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Port names or numbers."
        }
      },
      "type": "object",
      "required": [
        "constraints",
        "hosts",
        "methods",
        "notHosts",
        "notMethods",
        "notPaths",
        "notPorts",
        "paths",
        "ports"
      ]
    },
    "google-native:compute/alpha:Principal": {
      "description": "[Deprecated] All fields defined in a principal are ANDed.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "An expression to specify custom condition."
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The groups the principal belongs to. Exact match, prefix match, and suffix match are supported."
        },
        "ips": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IPv4 or IPv6 address or range (In CIDR format)"
        },
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The namespaces. Exact match, prefix match, and suffix match are supported."
        },
        "notGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of groups. Specifies exclusions."
        },
        "notIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of IPs. Specifies exclusions."
        },
        "notNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of namespaces. Specifies exclusions."
        },
        "notUsers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of users. Specifies exclusions."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: \"v1\"`. The properties are ANDed together."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PrincipalResponse": {
      "description": "[Deprecated] All fields defined in a principal are ANDed.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "An expression to specify custom condition."
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The groups the principal belongs to. Exact match, prefix match, and suffix match are supported."
        },
        "ips": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IPv4 or IPv6 address or range (In CIDR format)"
        },
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The namespaces. Exact match, prefix match, and suffix match are supported."
        },
        "notGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of groups. Specifies exclusions."
        },
        "notIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of IPs. Specifies exclusions."
        },
        "notNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of namespaces. Specifies exclusions."
        },
        "notUsers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Negate of users. Specifies exclusions."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of Istio attribute to expected values. Exact match, prefix match, and suffix match are supported for values. For example, `request.headers[version]: \"v1\"`. The properties are ANDed together."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The user names/IDs or service accounts. Exact match, prefix match, and suffix match are supported."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "groups",
        "ips",
        "namespaces",
        "notGroups",
        "notIps",
        "notNamespaces",
        "notUsers",
        "properties",
        "users"
      ]
    },
    "google-native:compute/alpha:PublicAdvertisedPrefixPdpScope": {
      "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. ",
      "type": "string",
      "enum": [
        {
          "name": "Global",
          "description": "The public delegated prefix is global only. The provisioning will take ~4 weeks.",
          "value": "GLOBAL"
        },
        {
          "name": "GlobalAndRegional",
          "description": "The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2.",
          "value": "GLOBAL_AND_REGIONAL"
        },
        {
          "name": "Regional",
          "description": "The public delegated prefix is regional only. The provisioning will take a few minutes.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:compute/alpha:PublicAdvertisedPrefixPublicDelegatedPrefixResponse": {
      "description": "Represents a CIDR range which can be used to assign addresses.",
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "The IP address range of the public delegated prefix"
        },
        "name": {
          "type": "string",
          "description": "The name of the public delegated prefix"
        },
        "project": {
          "type": "string",
          "description": "The project number of the public delegated prefix"
        },
        "region": {
          "type": "string",
          "description": "The region of the public delegated prefix if it is regional. If absent, the prefix is global."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix. Possible values are: INITIALIZING: The public delegated prefix is being initialized and addresses cannot be created yet. ANNOUNCED: The public delegated prefix is active."
        }
      },
      "type": "object",
      "required": [
        "ipRange",
        "name",
        "project",
        "region",
        "status"
      ]
    },
    "google-native:compute/alpha:PublicAdvertisedPrefixStatus": {
      "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. ",
      "type": "string",
      "enum": [
        {
          "name": "AnnouncedToInternet",
          "description": "The prefix is announced to Internet.",
          "value": "ANNOUNCED_TO_INTERNET"
        },
        {
          "name": "Initial",
          "description": "RPKI validation is complete.",
          "value": "INITIAL"
        },
        {
          "name": "PrefixConfigurationComplete",
          "description": "The prefix is fully configured.",
          "value": "PREFIX_CONFIGURATION_COMPLETE"
        },
        {
          "name": "PrefixConfigurationInProgress",
          "description": "The prefix is being configured.",
          "value": "PREFIX_CONFIGURATION_IN_PROGRESS"
        },
        {
          "name": "PrefixRemovalInProgress",
          "description": "The prefix is being removed.",
          "value": "PREFIX_REMOVAL_IN_PROGRESS"
        },
        {
          "name": "PtrConfigured",
          "description": "User has configured the PTR.",
          "value": "PTR_CONFIGURED"
        },
        {
          "name": "ReadyToAnnounce",
          "description": "The prefix is currently withdrawn but ready to be announced.",
          "value": "READY_TO_ANNOUNCE"
        },
        {
          "name": "ReverseDnsLookupFailed",
          "description": "Reverse DNS lookup failed.",
          "value": "REVERSE_DNS_LOOKUP_FAILED"
        },
        {
          "name": "Validated",
          "description": "Reverse DNS lookup is successful.",
          "value": "VALIDATED"
        }
      ]
    },
    "google-native:compute/alpha:PublicDelegatedPrefixMode": {
      "description": "The public delegated prefix mode for IPv6 only.",
      "type": "string",
      "enum": [
        {
          "name": "Delegation",
          "description": "The public delegated prefix is used for further sub-delegation only. Such prefixes cannot set allocatablePrefixLength.",
          "value": "DELEGATION"
        },
        {
          "name": "ExternalIpv6ForwardingRuleCreation",
          "description": "The public delegated prefix is used for creating forwarding rules only. Such prefixes cannot set publicDelegatedSubPrefixes.",
          "value": "EXTERNAL_IPV6_FORWARDING_RULE_CREATION"
        }
      ]
    },
    "google-native:compute/alpha:PublicDelegatedPrefixPublicDelegatedSubPrefix": {
      "description": "Represents a sub PublicDelegatedPrefix.",
      "properties": {
        "allocatablePrefixLength": {
          "type": "integer",
          "description": "The allocatable prefix length supported by this PublicDelegatedSubPrefix."
        },
        "delegateeProject": {
          "type": "string",
          "description": "Name of the project scoping this PublicDelegatedSubPrefix."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this sub public delegated prefix."
        },
        "isAddress": {
          "type": "boolean",
          "description": "Whether the sub prefix is delegated to create Address resources in the delegatee project."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:PublicDelegatedPrefixPublicDelegatedSubPrefixMode",
          "description": "The PublicDelegatedSubPrefix mode for IPv6 only."
        },
        "name": {
          "type": "string",
          "description": "The name of the sub public delegated prefix."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:PublicDelegatedPrefixPublicDelegatedSubPrefixMode": {
      "description": "The PublicDelegatedSubPrefix mode for IPv6 only.",
      "type": "string",
      "enum": [
        {
          "name": "Delegation",
          "description": "The public delegated prefix is used for further sub-delegation only. Such prefixes cannot set allocatablePrefixLength.",
          "value": "DELEGATION"
        },
        {
          "name": "ExternalIpv6ForwardingRuleCreation",
          "description": "The public delegated prefix is used for creating forwarding rules only. Such prefixes cannot set publicDelegatedSubPrefixes.",
          "value": "EXTERNAL_IPV6_FORWARDING_RULE_CREATION"
        }
      ]
    },
    "google-native:compute/alpha:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse": {
      "description": "Represents a sub PublicDelegatedPrefix.",
      "properties": {
        "allocatablePrefixLength": {
          "type": "integer",
          "description": "The allocatable prefix length supported by this PublicDelegatedSubPrefix."
        },
        "delegateeProject": {
          "type": "string",
          "description": "Name of the project scoping this PublicDelegatedSubPrefix."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this sub public delegated prefix."
        },
        "isAddress": {
          "type": "boolean",
          "description": "Whether the sub prefix is delegated to create Address resources in the delegatee project."
        },
        "mode": {
          "type": "string",
          "description": "The PublicDelegatedSubPrefix mode for IPv6 only."
        },
        "name": {
          "type": "string",
          "description": "The name of the sub public delegated prefix."
        },
        "region": {
          "type": "string",
          "description": "The region of the sub public delegated prefix if it is regional. If absent, the sub prefix is global."
        },
        "status": {
          "type": "string",
          "description": "The status of the sub public delegated prefix."
        }
      },
      "type": "object",
      "required": [
        "allocatablePrefixLength",
        "delegateeProject",
        "description",
        "ipCidrRange",
        "isAddress",
        "mode",
        "name",
        "region",
        "status"
      ]
    },
    "google-native:compute/alpha:QueuedResourceStatusFailedDataErrorErrorsItemErrorDetailsItemResponse": {
      "properties": {
        "errorInfo": {
          "$ref": "#/types/google-native:compute%2Falpha:ErrorInfoResponse"
        },
        "help": {
          "$ref": "#/types/google-native:compute%2Falpha:HelpResponse"
        },
        "localizedMessage": {
          "$ref": "#/types/google-native:compute%2Falpha:LocalizedMessageResponse"
        },
        "quotaInfo": {
          "$ref": "#/types/google-native:compute%2Falpha:QuotaExceededInfoResponse"
        }
      },
      "type": "object",
      "required": [
        "errorInfo",
        "help",
        "localizedMessage",
        "quotaInfo"
      ]
    },
    "google-native:compute/alpha:QueuedResourceStatusFailedDataErrorErrorsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "The error type identifier for this error."
        },
        "errorDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:QueuedResourceStatusFailedDataErrorErrorsItemErrorDetailsItemResponse"
          },
          "description": "An optional list 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."
        },
        "location": {
          "type": "string",
          "description": "Indicates the field in the request that caused the error. This property is optional."
        },
        "message": {
          "type": "string",
          "description": "An optional, human-readable error message."
        }
      },
      "type": "object",
      "required": [
        "code",
        "errorDetails",
        "location",
        "message"
      ]
    },
    "google-native:compute/alpha:QueuedResourceStatusFailedDataErrorResponse": {
      "description": "The error(s) that caused the QueuedResource to enter the FAILED state.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:QueuedResourceStatusFailedDataErrorErrorsItemResponse"
          },
          "description": "The array of errors encountered while processing this operation."
        }
      },
      "type": "object",
      "required": [
        "errors"
      ]
    },
    "google-native:compute/alpha:QueuedResourceStatusFailedDataResponse": {
      "description": "Additional status detail for the FAILED state.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuedResourceStatusFailedDataErrorResponse",
          "description": "The error(s) that caused the QueuedResource to enter the FAILED state."
        }
      },
      "type": "object",
      "required": [
        "error"
      ]
    },
    "google-native:compute/alpha:QueuedResourceStatusResponse": {
      "description": "[Output only] Result of queuing and provisioning based on deferred capacity.",
      "properties": {
        "failedData": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuedResourceStatusFailedDataResponse",
          "description": "Additional status detail for the FAILED state."
        },
        "provisioningOperations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] Fully qualified URL of the provisioning GCE operation to track the provisioning along with provisioning errors. The referenced operation may not exist after having been deleted or expired."
        },
        "queuingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuingPolicyResponse",
          "description": "Constraints for the time when the resource(s) start provisioning. Always exposed as absolute times."
        }
      },
      "type": "object",
      "required": [
        "failedData",
        "provisioningOperations",
        "queuingPolicy"
      ]
    },
    "google-native:compute/alpha:QueuingPolicy": {
      "description": "Queuing parameters for the requested deferred capacity.",
      "properties": {
        "validUntilDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Relative deadline for waiting for capacity."
        },
        "validUntilTime": {
          "type": "string",
          "description": "Absolute deadline for waiting for capacity in RFC3339 text format."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:QueuingPolicyResponse": {
      "description": "Queuing parameters for the requested deferred capacity.",
      "properties": {
        "validUntilDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Relative deadline for waiting for capacity."
        },
        "validUntilTime": {
          "type": "string",
          "description": "Absolute deadline for waiting for capacity in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "validUntilDuration",
        "validUntilTime"
      ]
    },
    "google-native:compute/alpha:QuotaExceededInfoResponse": {
      "description": "Additional details for quota exceeded error for resource quota.",
      "properties": {
        "dimensions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map holding related quota dimensions."
        },
        "futureLimit": {
          "type": "number",
          "description": "Future quota limit being rolled out. The limit's unit depends on the quota type or metric."
        },
        "limit": {
          "type": "number",
          "description": "Current effective quota limit. The limit's unit depends on the quota type or metric."
        },
        "limitName": {
          "type": "string",
          "description": "The name of the quota limit."
        },
        "metricName": {
          "type": "string",
          "description": "The Compute Engine quota metric name."
        },
        "rolloutStatus": {
          "type": "string",
          "description": "Rollout status of the future quota limit."
        }
      },
      "type": "object",
      "required": [
        "dimensions",
        "futureLimit",
        "limit",
        "limitName",
        "metricName",
        "rolloutStatus"
      ]
    },
    "google-native:compute/alpha:RbacPolicy": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the RbacPolicy."
        },
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Permission"
          },
          "description": "The list of permissions."
        },
        "principals": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Principal"
          },
          "description": "The list of principals."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RbacPolicyResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the RbacPolicy."
        },
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PermissionResponse"
          },
          "description": "The list of permissions."
        },
        "principals": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PrincipalResponse"
          },
          "description": "The list of principals."
        }
      },
      "type": "object",
      "required": [
        "name",
        "permissions",
        "principals"
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceIpAddressSelectionPolicy": {
      "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Only",
          "description": "Only send IPv4 traffic to the backends of the Backend Service (Instance Group, Managed Instance Group, Network Endpoint Group) regardless of traffic from the client to the proxy. Only IPv4 health-checks are used to check the health of the backends. This is the default setting.",
          "value": "IPV4_ONLY"
        },
        {
          "name": "Ipv6Only",
          "description": "Only send IPv6 traffic to the backends of the Backend Service (Instance Group, Managed Instance Group, Network Endpoint Group) regardless of traffic from the client to the proxy. Only IPv6 health-checks are used to check the health of the backends.",
          "value": "IPV6_ONLY"
        },
        {
          "name": "IpAddressSelectionPolicyUnspecified",
          "description": "Unspecified IP address selection policy.",
          "value": "IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED"
        },
        {
          "name": "PreferIpv6",
          "description": "Prioritize the connection to the endpoints IPv6 address over its IPv4 address (provided there is a healthy IPv6 address).",
          "value": "PREFER_IPV6"
        }
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceLoadBalancingScheme": {
      "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "description": "Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "description": "Signifies that this will be used for Internal TCP/UDP Load Balancing.",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "description": "Signifies that this will be used for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "description": "Signifies that this will be used by Traffic Director.",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "InvalidLoadBalancingScheme",
          "value": "INVALID_LOAD_BALANCING_SCHEME"
        }
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceLocalityLbPolicy": {
      "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceProtocol": {
      "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "description": "ALL includes TCP, UDP, ICMP, ESP, AH and SCTP. Note that this should never be used together with target_xx_proxies.",
          "value": "ALL"
        },
        {
          "name": "Grpc",
          "description": "gRPC (available for Traffic Director).",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "description": "HTTP/2 with SSL.",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Ssl",
          "description": "TCP proxying with SSL.",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "description": "TCP proxying or TCP pass-through.",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "description": "UDP.",
          "value": "UDP"
        },
        {
          "name": "Unspecified",
          "description": "If a Backend Service has UNSPECIFIED as its protocol, it can be used with any L3/L4 Forwarding Rules.",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceSessionAffinity": {
      "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceVpcNetworkScope": {
      "description": "The network scope of the backends that can be added to the backend service. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A backend service with the VPC scope set to GLOBAL_VPC_NETWORK is only allowed to have backends in global VPC networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the backend service is only allowed to have backends in regional networks in the same scope as the backend service. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
      "type": "string",
      "enum": [
        {
          "name": "GlobalVpcNetwork",
          "description": "The backend service can only have backends in global VPCs",
          "value": "GLOBAL_VPC_NETWORK"
        },
        {
          "name": "RegionalVpcNetwork",
          "description": "The backend service can only have backends in regional VPCs",
          "value": "REGIONAL_VPC_NETWORK"
        }
      ]
    },
    "google-native:compute/alpha:RegionCommitmentCategory": {
      "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified.",
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "License",
          "value": "LICENSE"
        },
        {
          "name": "Machine",
          "value": "MACHINE"
        }
      ]
    },
    "google-native:compute/alpha:RegionCommitmentPlan": {
      "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
      "type": "string",
      "enum": [
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "ThirtySixMonth",
          "value": "THIRTY_SIX_MONTH"
        },
        {
          "name": "TwelveMonth",
          "value": "TWELVE_MONTH"
        }
      ]
    },
    "google-native:compute/alpha:RegionCommitmentType": {
      "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorOptimized",
          "value": "ACCELERATOR_OPTIMIZED"
        },
        {
          "name": "AcceleratorOptimizedA3",
          "value": "ACCELERATOR_OPTIMIZED_A3"
        },
        {
          "name": "ComputeOptimized",
          "value": "COMPUTE_OPTIMIZED"
        },
        {
          "name": "ComputeOptimizedC2d",
          "value": "COMPUTE_OPTIMIZED_C2D"
        },
        {
          "name": "ComputeOptimizedC3",
          "value": "COMPUTE_OPTIMIZED_C3"
        },
        {
          "name": "ComputeOptimizedC3d",
          "value": "COMPUTE_OPTIMIZED_C3D"
        },
        {
          "name": "ComputeOptimizedH3",
          "value": "COMPUTE_OPTIMIZED_H3"
        },
        {
          "name": "GeneralPurpose",
          "value": "GENERAL_PURPOSE"
        },
        {
          "name": "GeneralPurposeE2",
          "value": "GENERAL_PURPOSE_E2"
        },
        {
          "name": "GeneralPurposeN2",
          "value": "GENERAL_PURPOSE_N2"
        },
        {
          "name": "GeneralPurposeN2d",
          "value": "GENERAL_PURPOSE_N2D"
        },
        {
          "name": "GeneralPurposeT2d",
          "value": "GENERAL_PURPOSE_T2D"
        },
        {
          "name": "GraphicsOptimized",
          "value": "GRAPHICS_OPTIMIZED"
        },
        {
          "name": "MemoryOptimized",
          "value": "MEMORY_OPTIMIZED"
        },
        {
          "name": "MemoryOptimizedM3",
          "value": "MEMORY_OPTIMIZED_M3"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:RegionDiskAccessMode": {
      "description": "The access mode of the disk. - READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. - READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. - READ_ONLY_MANY: The AccessMode means the disk can be attached to multiple instances in RO mode. The AccessMode is only valid for Hyperdisk disk types.",
      "type": "string",
      "enum": [
        {
          "name": "ReadOnlyMany",
          "description": "The AccessMode means the disk can be attached to multiple instances in RO mode.",
          "value": "READ_ONLY_MANY"
        },
        {
          "name": "ReadWriteMany",
          "description": "The AccessMode means the disk can be attached to multiple instances in RW mode.",
          "value": "READ_WRITE_MANY"
        },
        {
          "name": "ReadWriteSingle",
          "description": "The default AccessMode, means the disk can be attached to single instance in RW mode.",
          "value": "READ_WRITE_SINGLE"
        }
      ]
    },
    "google-native:compute/alpha:RegionDiskArchitecture": {
      "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/alpha:RegionDiskInterface": {
      "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:RegionDiskStorageType": {
      "description": "[Deprecated] Storage type of the persistent disk.",
      "type": "string",
      "enum": [
        {
          "name": "Hdd",
          "value": "HDD"
        },
        {
          "name": "Ssd",
          "value": "SSD"
        }
      ]
    },
    "google-native:compute/alpha:RegionHealthCheckServiceHealthStatusAggregationPolicy": {
      "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService.",
      "type": "string",
      "enum": [
        {
          "name": "And",
          "description": "If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY.",
          "value": "AND"
        },
        {
          "name": "NoAggregation",
          "description": "An EndpointHealth message is returned for each backend in the health check service.",
          "value": "NO_AGGREGATION"
        }
      ]
    },
    "google-native:compute/alpha:RegionHealthCheckServiceHealthStatusAggregationStrategy": {
      "description": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
      "type": "string",
      "enum": [
        {
          "name": "And",
          "description": "This is deprecated. Use health_status_aggregation_policy instead. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY.",
          "value": "AND"
        },
        {
          "name": "NoAggregation",
          "description": "This is deprecated. Use health_status_aggregation_policy instead. An EndpointHealth message is returned for each backend in the health check service.",
          "value": "NO_AGGREGATION"
        }
      ]
    },
    "google-native:compute/alpha:RegionHealthCheckType": {
      "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ssl",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/alpha:RegionInstanceGroupManagerFailoverAction": {
      "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
      "type": "string",
      "enum": [
        {
          "name": "NoFailover",
          "value": "NO_FAILOVER"
        },
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        }
      ]
    },
    "google-native:compute/alpha:RegionInstanceGroupManagerListManagedInstancesResults": {
      "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
      "type": "string",
      "enum": [
        {
          "name": "Pageless",
          "description": "(Default) Pagination is disabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are ignored and all instances are returned in a single response.",
          "value": "PAGELESS"
        },
        {
          "name": "Paginated",
          "description": "Pagination is enabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are respected.",
          "value": "PAGINATED"
        }
      ]
    },
    "google-native:compute/alpha:RegionInstanceGroupManagerTargetSizeUnit": {
      "description": "The unit of measure for the target size.",
      "type": "string",
      "enum": [
        {
          "name": "Instance",
          "description": "[Default] TargetSize is the target number of instances.",
          "value": "INSTANCE"
        },
        {
          "name": "Vcpu",
          "description": "TargetSize is the target count of vCPUs of VMs.",
          "value": "VCPU"
        }
      ]
    },
    "google-native:compute/alpha:RegionNetworkEndpointGroupClientPortMappingMode": {
      "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional.",
      "type": "string",
      "enum": [
        {
          "name": "ClientPortPerEndpoint",
          "description": "For each endpoint there is exactly one client port.",
          "value": "CLIENT_PORT_PER_ENDPOINT"
        },
        {
          "name": "PortMappingDisabled",
          "description": "NEG should not be used for mapping client port to destination.",
          "value": "PORT_MAPPING_DISABLED"
        }
      ]
    },
    "google-native:compute/alpha:RegionNetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/alpha:RegionNetworkEndpointGroupType": {
      "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now.",
      "type": "string",
      "enum": [
        {
          "name": "LoadBalancing",
          "description": "The network endpoint group is a backend of a load balancer.",
          "value": "LOAD_BALANCING"
        }
      ]
    },
    "google-native:compute/alpha:RegionNetworkFirewallPolicyVpcNetworkScope": {
      "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
      "type": "string",
      "enum": [
        {
          "name": "GlobalVpcNetwork",
          "description": "The firewall policy is allowed to be attached only to global networks.",
          "value": "GLOBAL_VPC_NETWORK"
        },
        {
          "name": "RegionalVpcNetwork",
          "description": "The firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. This option is applicable only to regional firewall policies.",
          "value": "REGIONAL_VPC_NETWORK"
        }
      ]
    },
    "google-native:compute/alpha:RegionSecurityPolicyType": {
      "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
      "type": "string",
      "enum": [
        {
          "name": "CloudArmor",
          "value": "CLOUD_ARMOR"
        },
        {
          "name": "CloudArmorEdge",
          "value": "CLOUD_ARMOR_EDGE"
        },
        {
          "name": "CloudArmorInternalService",
          "value": "CLOUD_ARMOR_INTERNAL_SERVICE"
        },
        {
          "name": "CloudArmorNetwork",
          "value": "CLOUD_ARMOR_NETWORK"
        },
        {
          "name": "Firewall",
          "value": "FIREWALL"
        }
      ]
    },
    "google-native:compute/alpha:RegionSnapshotSnapshotType": {
      "description": "Indicates the type of the snapshot.",
      "type": "string",
      "enum": [
        {
          "name": "Archive",
          "value": "ARCHIVE"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:RegionSslCertificateType": {
      "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
      "type": "string",
      "enum": [
        {
          "name": "Managed",
          "description": "Google-managed SSLCertificate.",
          "value": "MANAGED"
        },
        {
          "name": "SelfManaged",
          "description": "Certificate uploaded by user.",
          "value": "SELF_MANAGED"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:RegionSslPolicyMinTlsVersion": {
      "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
      "type": "string",
      "enum": [
        {
          "name": "Tls10",
          "description": "TLS 1.0",
          "value": "TLS_1_0"
        },
        {
          "name": "Tls11",
          "description": "TLS 1.1",
          "value": "TLS_1_1"
        },
        {
          "name": "Tls12",
          "description": "TLS 1.2",
          "value": "TLS_1_2"
        }
      ]
    },
    "google-native:compute/alpha:RegionSslPolicyProfile": {
      "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
      "type": "string",
      "enum": [
        {
          "name": "Compatible",
          "description": "Compatible profile. Allows the broadset set of clients, even those which support only out-of-date SSL features to negotiate with the load balancer.",
          "value": "COMPATIBLE"
        },
        {
          "name": "Custom",
          "description": "Custom profile. Allow only the set of allowed SSL features specified in the customFeatures field.",
          "value": "CUSTOM"
        },
        {
          "name": "Modern",
          "description": "Modern profile. Supports a wide set of SSL features, allowing modern clients to negotiate SSL with the load balancer.",
          "value": "MODERN"
        },
        {
          "name": "Restricted",
          "description": "Restricted profile. Supports a reduced set of SSL features, intended to meet stricter compliance requirements.",
          "value": "RESTRICTED"
        }
      ]
    },
    "google-native:compute/alpha:RegionSslPolicyWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/alpha:RegionSslPolicyWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RegionSslPolicyWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/alpha:RegionTargetHttpsProxyQuicOverride": {
      "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "The load balancer will not attempt to negotiate QUIC with clients.",
          "value": "DISABLE"
        },
        {
          "name": "Enable",
          "description": "The load balancer will attempt to negotiate QUIC with clients.",
          "value": "ENABLE"
        },
        {
          "name": "None",
          "description": "No overrides to the default QUIC policy. This option is implicit if no QUIC override has been specified in the request.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/alpha:RegionTargetTcpProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/alpha:RequestMirrorPolicy": {
      "description": "A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. The load balancer doesn't wait for responses from the shadow service. Before sending traffic to the shadow service, the host or authority header is suffixed with -shadow.",
      "properties": {
        "backendService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource being mirrored to. The 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. Serverless NEG backends are not currently supported as a mirrored backend service. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RequestMirrorPolicyResponse": {
      "description": "A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. The load balancer doesn't wait for responses from the shadow service. Before sending traffic to the shadow service, the host or authority header is suffixed with -shadow.",
      "properties": {
        "backendService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource being mirrored to. The 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. Serverless NEG backends are not currently supported as a mirrored backend service. "
        }
      },
      "type": "object",
      "required": [
        "backendService"
      ]
    },
    "google-native:compute/alpha:Reservation": {
      "description": "Represents a reservation resource. A reservation ensures that capacity is held in a specific zone even if the reserved VMs are not running. For more information, read Reserving zonal resources.",
      "properties": {
        "aggregateReservation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservation",
          "description": "Reservation for aggregated resources, providing shape flexibility."
        },
        "deleteAfterDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
        },
        "deleteAtTime": {
          "type": "string",
          "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettings",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUReservation",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ReservationAffinity": {
      "description": "Specifies the reservations that this instance can consume from.",
      "properties": {
        "consumeReservationType": {
          "$ref": "#/types/google-native:compute%2Falpha:ReservationAffinityConsumeReservationType",
          "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples."
        },
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify googleapis.com/reservation-name as the key and specify the name of your reservation as its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of a reservation resource. This can be either a name to a reservation in the same project or \"projects/different-project/reservations/some-reservation-name\" to target a shared reservation in the same zone but in a different project."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ReservationAffinityConsumeReservationType": {
      "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples.",
      "type": "string",
      "enum": [
        {
          "name": "AnyReservation",
          "description": "Consume any allocation available.",
          "value": "ANY_RESERVATION"
        },
        {
          "name": "NoReservation",
          "description": "Do not consume from any allocated capacity.",
          "value": "NO_RESERVATION"
        },
        {
          "name": "SpecificReservation",
          "description": "Must consume from a specific reservation. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_RESERVATION"
        },
        {
          "name": "SpecificThenAnyReservation",
          "description": "Prefer to consume from a specific reservation, but still consume any reservation available if the specified reservation is not available or exhausted. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_THEN_ANY_RESERVATION"
        },
        {
          "name": "SpecificThenNoReservation",
          "description": "Prefer to consume from a specific reservation, but still consume from the on-demand pool if the specified reservation is exhausted. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_THEN_NO_RESERVATION"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:ReservationAffinityResponse": {
      "description": "Specifies the reservations that this instance can consume from.",
      "properties": {
        "consumeReservationType": {
          "type": "string",
          "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples."
        },
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify googleapis.com/reservation-name as the key and specify the name of your reservation as its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of a reservation resource. This can be either a name to a reservation in the same project or \"projects/different-project/reservations/some-reservation-name\" to target a shared reservation in the same zone but in a different project."
        }
      },
      "type": "object",
      "required": [
        "consumeReservationType",
        "key",
        "values"
      ]
    },
    "google-native:compute/alpha:ReservationResponse": {
      "description": "Represents a reservation resource. A reservation ensures that capacity is held in a specific zone even if the reserved VMs are not running. For more information, read Reserving zonal resources.",
      "properties": {
        "aggregateReservation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationResponse",
          "description": "Reservation for aggregated resources, providing shape flexibility."
        },
        "commitment": {
          "type": "string",
          "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deleteAfterDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
        },
        "deleteAtTime": {
          "type": "string",
          "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#reservations for reservations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationResourceStatusResponse",
          "description": "Status information for Reservation resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsResponse",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUReservationResponse",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "status": {
          "type": "string",
          "description": "The status of the reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      },
      "type": "object",
      "required": [
        "aggregateReservation",
        "commitment",
        "creationTimestamp",
        "deleteAfterDuration",
        "deleteAtTime",
        "description",
        "kind",
        "name",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "shareSettings",
        "specificReservation",
        "specificReservationRequired",
        "status",
        "zone"
      ]
    },
    "google-native:compute/alpha:ResourceCommitment": {
      "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "Name of the accelerator type resource. Applicable only when the type is ACCELERATOR."
        },
        "amount": {
          "type": "string",
          "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourceCommitmentType",
          "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourceCommitmentResponse": {
      "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "Name of the accelerator type resource. Applicable only when the type is ACCELERATOR."
        },
        "amount": {
          "type": "string",
          "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU."
        },
        "type": {
          "type": "string",
          "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "amount",
        "type"
      ]
    },
    "google-native:compute/alpha:ResourceCommitmentType": {
      "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR.",
      "type": "string",
      "enum": [
        {
          "name": "Accelerator",
          "value": "ACCELERATOR"
        },
        {
          "name": "LocalSsd",
          "value": "LOCAL_SSD"
        },
        {
          "name": "Memory",
          "value": "MEMORY"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Vcpu",
          "value": "VCPU"
        }
      ]
    },
    "google-native:compute/alpha:ResourcePolicyDailyCycle": {
      "description": "Time window specified for daily operations.",
      "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."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyDailyCycleResponse": {
      "description": "Time window specified for daily operations.",
      "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."
        },
        "duration": {
          "type": "string",
          "description": "[Output only] A predetermined duration for the window, automatically chosen to be the smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "daysInCycle",
        "duration",
        "startTime"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyDiskConsistencyGroupPolicy": {
      "description": "Resource policy for disk consistency groups.",
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyDiskConsistencyGroupPolicyResponse": {
      "description": "Resource policy for disk consistency groups.",
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyGroupPlacementPolicy": {
      "description": "A GroupPlacementPolicy specifies resource placement configuration. It specifies the failure bucket separation as well as network locality",
      "properties": {
        "availabilityDomainCount": {
          "type": "integer",
          "description": "The number of availability domains to spread instances across. If two instances are in different availability domain, they are not in the same low latency network."
        },
        "collocation": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyGroupPlacementPolicyCollocation",
          "description": "Specifies network collocation"
        },
        "locality": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyGroupPlacementPolicyLocality",
          "description": "Specifies network locality"
        },
        "maxDistance": {
          "type": "integer",
          "description": "Specifies the number of max logical switches."
        },
        "scope": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyGroupPlacementPolicyScope",
          "description": "Scope specifies the availability domain to which the VMs should be spread."
        },
        "sliceCount": {
          "type": "integer",
          "description": "Specifies the number of slices in a multislice workload."
        },
        "style": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyGroupPlacementPolicyStyle",
          "description": "Specifies instances to hosts placement relationship"
        },
        "tpuTopology": {
          "type": "string",
          "description": "Specifies the shape of the TPU slice"
        },
        "vmCount": {
          "type": "integer",
          "description": "Number of VMs in this placement group. Google does not recommend that you use this field unless you use a compact policy and you want your policy to work only if it contains this exact number of VMs."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyGroupPlacementPolicyCollocation": {
      "description": "Specifies network collocation",
      "type": "string",
      "enum": [
        {
          "name": "Clustered",
          "description": "Specifies collocation option that provides tight collocation with minimum network latency.",
          "value": "CLUSTERED"
        },
        {
          "name": "Collocated",
          "value": "COLLOCATED"
        },
        {
          "name": "UnspecifiedCollocation",
          "value": "UNSPECIFIED_COLLOCATION"
        }
      ]
    },
    "google-native:compute/alpha:ResourcePolicyGroupPlacementPolicyLocality": {
      "description": "Specifies network locality",
      "type": "string",
      "enum": [
        {
          "name": "BestEffort",
          "value": "BEST_EFFORT"
        },
        {
          "name": "Strict",
          "value": "STRICT"
        },
        {
          "name": "UnspecifiedLocality",
          "value": "UNSPECIFIED_LOCALITY"
        }
      ]
    },
    "google-native:compute/alpha:ResourcePolicyGroupPlacementPolicyResponse": {
      "description": "A GroupPlacementPolicy specifies resource placement configuration. It specifies the failure bucket separation as well as network locality",
      "properties": {
        "availabilityDomainCount": {
          "type": "integer",
          "description": "The number of availability domains to spread instances across. If two instances are in different availability domain, they are not in the same low latency network."
        },
        "collocation": {
          "type": "string",
          "description": "Specifies network collocation"
        },
        "locality": {
          "type": "string",
          "description": "Specifies network locality"
        },
        "maxDistance": {
          "type": "integer",
          "description": "Specifies the number of max logical switches."
        },
        "scope": {
          "type": "string",
          "description": "Scope specifies the availability domain to which the VMs should be spread."
        },
        "sliceCount": {
          "type": "integer",
          "description": "Specifies the number of slices in a multislice workload."
        },
        "style": {
          "type": "string",
          "description": "Specifies instances to hosts placement relationship"
        },
        "tpuTopology": {
          "type": "string",
          "description": "Specifies the shape of the TPU slice"
        },
        "vmCount": {
          "type": "integer",
          "description": "Number of VMs in this placement group. Google does not recommend that you use this field unless you use a compact policy and you want your policy to work only if it contains this exact number of VMs."
        }
      },
      "type": "object",
      "required": [
        "availabilityDomainCount",
        "collocation",
        "locality",
        "maxDistance",
        "scope",
        "sliceCount",
        "style",
        "tpuTopology",
        "vmCount"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyGroupPlacementPolicyScope": {
      "description": "Scope specifies the availability domain to which the VMs should be spread.",
      "type": "string",
      "enum": [
        {
          "name": "Host",
          "description": "Specifies availability domain scope across hosts. VMs will be spread across different hosts.",
          "value": "HOST"
        },
        {
          "name": "UnspecifiedScope",
          "description": "VMs will be spread across different instrastructure to not share power, host and networking.",
          "value": "UNSPECIFIED_SCOPE"
        }
      ]
    },
    "google-native:compute/alpha:ResourcePolicyGroupPlacementPolicyStyle": {
      "description": "Specifies instances to hosts placement relationship",
      "type": "string",
      "enum": [
        {
          "name": "Compact",
          "description": "VMs are placed without regard for shared hosts",
          "value": "COMPACT"
        },
        {
          "name": "FullySpread",
          "description": "VMs do not share the same hosts",
          "value": "FULLY_SPREAD"
        },
        {
          "name": "UnspecifiedPlacementType",
          "value": "UNSPECIFIED_PLACEMENT_TYPE"
        }
      ]
    },
    "google-native:compute/alpha:ResourcePolicyHourlyCycle": {
      "description": "Time window specified for hourly operations.",
      "properties": {
        "hoursInCycle": {
          "type": "integer",
          "description": "Defines a schedule with units measured in hours. The value determines how many hours pass between the start of each cycle."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyHourlyCycleResponse": {
      "description": "Time window specified for hourly operations.",
      "properties": {
        "duration": {
          "type": "string",
          "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
        },
        "hoursInCycle": {
          "type": "integer",
          "description": "Defines a schedule with units measured in hours. The value determines how many hours pass between the start of each cycle."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "hoursInCycle",
        "startTime"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyInstanceSchedulePolicy": {
      "description": "An InstanceSchedulePolicy specifies when and how frequent certain operations are performed on the instance.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The expiration time of the schedule. The timestamp is an RFC3339 string."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of the schedule. The timestamp is an RFC3339 string."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting Schedule.schedule. The value of this field must be a time zone name from the tz database: https://wikipedia.org/wiki/Tz_database."
        },
        "vmStartSchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyInstanceSchedulePolicySchedule",
          "description": "Specifies the schedule for starting instances."
        },
        "vmStopSchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyInstanceSchedulePolicySchedule",
          "description": "Specifies the schedule for stopping instances."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyInstanceSchedulePolicyResponse": {
      "description": "An InstanceSchedulePolicy specifies when and how frequent certain operations are performed on the instance.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The expiration time of the schedule. The timestamp is an RFC3339 string."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of the schedule. The timestamp is an RFC3339 string."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting Schedule.schedule. The value of this field must be a time zone name from the tz database: https://wikipedia.org/wiki/Tz_database."
        },
        "vmStartSchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyInstanceSchedulePolicyScheduleResponse",
          "description": "Specifies the schedule for starting instances."
        },
        "vmStopSchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyInstanceSchedulePolicyScheduleResponse",
          "description": "Specifies the schedule for stopping instances."
        }
      },
      "type": "object",
      "required": [
        "expirationTime",
        "startTime",
        "timeZone",
        "vmStartSchedule",
        "vmStopSchedule"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyInstanceSchedulePolicySchedule": {
      "description": "Schedule for an instance operation.",
      "properties": {
        "schedule": {
          "type": "string",
          "description": "Specifies the frequency for the operation, using the unix-cron format."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyInstanceSchedulePolicyScheduleResponse": {
      "description": "Schedule for an instance operation.",
      "properties": {
        "schedule": {
          "type": "string",
          "description": "Specifies the frequency for the operation, using the unix-cron format."
        }
      },
      "type": "object",
      "required": [
        "schedule"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyResourceStatusInstanceSchedulePolicyStatusResponse": {
      "properties": {
        "lastRunStartTime": {
          "type": "string",
          "description": "The last time the schedule successfully ran. The timestamp is an RFC3339 string."
        },
        "nextRunStartTime": {
          "type": "string",
          "description": "The next time the schedule is planned to run. The actual time might be slightly different. The timestamp is an RFC3339 string."
        }
      },
      "type": "object",
      "required": [
        "lastRunStartTime",
        "nextRunStartTime"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyResourceStatusResponse": {
      "description": "Contains output only fields. Use this sub-message for all output fields set on ResourcePolicy. The internal structure of this \"status\" field should mimic the structure of ResourcePolicy proto specification.",
      "properties": {
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyResourceStatusInstanceSchedulePolicyStatusResponse",
          "description": "Specifies a set of output values reffering to the instance_schedule_policy system status. This field should have the same name as corresponding policy field."
        }
      },
      "type": "object",
      "required": [
        "instanceSchedulePolicy"
      ]
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicy": {
      "description": "A snapshot schedule policy specifies when and how frequently snapshots are to be created for the target disk. Also specifies how many and how long these scheduled snapshots should be retained.",
      "properties": {
        "retentionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicyRetentionPolicy",
          "description": "Retention policy applied to snapshots created by this resource policy."
        },
        "schedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicySchedule",
          "description": "A Vm Maintenance Policy specifies what kind of infrastructure maintenance we are allowed to perform on this VM and when. Schedule that is applied to disks covered by this policy."
        },
        "snapshotProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicySnapshotProperties",
          "description": "Properties with which snapshots are created such as labels, encryption keys."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicyResponse": {
      "description": "A snapshot schedule policy specifies when and how frequently snapshots are to be created for the target disk. Also specifies how many and how long these scheduled snapshots should be retained.",
      "properties": {
        "retentionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicyRetentionPolicyResponse",
          "description": "Retention policy applied to snapshots created by this resource policy."
        },
        "schedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicyScheduleResponse",
          "description": "A Vm Maintenance Policy specifies what kind of infrastructure maintenance we are allowed to perform on this VM and when. Schedule that is applied to disks covered by this policy."
        },
        "snapshotProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicySnapshotPropertiesResponse",
          "description": "Properties with which snapshots are created such as labels, encryption keys."
        }
      },
      "type": "object",
      "required": [
        "retentionPolicy",
        "schedule",
        "snapshotProperties"
      ]
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicyRetentionPolicy": {
      "description": "Policy for retention of scheduled snapshots.",
      "properties": {
        "maxRetentionDays": {
          "type": "integer",
          "description": "Maximum age of the snapshot that is allowed to be kept."
        },
        "onPolicySwitch": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnPolicySwitch"
        },
        "onSourceDiskDelete": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete",
          "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnPolicySwitch": {
      "type": "string",
      "enum": [
        {
          "name": "DoNotRetroactivelyApply",
          "value": "DO_NOT_RETROACTIVELY_APPLY"
        },
        {
          "name": "RetroactivelyApply",
          "value": "RETROACTIVELY_APPLY"
        },
        {
          "name": "UnspecifiedOnPolicySwitch",
          "value": "UNSPECIFIED_ON_POLICY_SWITCH"
        }
      ]
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete": {
      "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted.",
      "type": "string",
      "enum": [
        {
          "name": "ApplyRetentionPolicy",
          "value": "APPLY_RETENTION_POLICY"
        },
        {
          "name": "KeepAutoSnapshots",
          "value": "KEEP_AUTO_SNAPSHOTS"
        },
        {
          "name": "UnspecifiedOnSourceDiskDelete",
          "value": "UNSPECIFIED_ON_SOURCE_DISK_DELETE"
        }
      ]
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicyRetentionPolicyResponse": {
      "description": "Policy for retention of scheduled snapshots.",
      "properties": {
        "maxRetentionDays": {
          "type": "integer",
          "description": "Maximum age of the snapshot that is allowed to be kept."
        },
        "onPolicySwitch": {
          "type": "string"
        },
        "onSourceDiskDelete": {
          "type": "string",
          "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted."
        }
      },
      "type": "object",
      "required": [
        "maxRetentionDays",
        "onPolicySwitch",
        "onSourceDiskDelete"
      ]
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicySchedule": {
      "description": "A schedule for disks where the schedueled operations are performed.",
      "properties": {
        "dailySchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyDailyCycle"
        },
        "hourlySchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyHourlyCycle"
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyWeeklyCycle"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicyScheduleResponse": {
      "description": "A schedule for disks where the schedueled operations are performed.",
      "properties": {
        "dailySchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyDailyCycleResponse"
        },
        "hourlySchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyHourlyCycleResponse"
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyWeeklyCycleResponse"
        }
      },
      "type": "object",
      "required": [
        "dailySchedule",
        "hourlySchedule",
        "weeklySchedule"
      ]
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicySnapshotProperties": {
      "description": "Specified snapshot properties for scheduled snapshots created by this policy.",
      "properties": {
        "chainName": {
          "type": "string",
          "description": "Chain name that the snapshot is created in."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Indication to perform a 'guest aware' snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to scheduled snapshots. These can be later modified by the setLabels method. Label values may be empty."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the auto snapshot (regional or multi-regional)."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicySnapshotSchedulePolicySnapshotPropertiesResponse": {
      "description": "Specified snapshot properties for scheduled snapshots created by this policy.",
      "properties": {
        "chainName": {
          "type": "string",
          "description": "Chain name that the snapshot is created in."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Indication to perform a 'guest aware' snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to scheduled snapshots. These can be later modified by the setLabels method. Label values may be empty."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the auto snapshot (regional or multi-regional)."
        }
      },
      "type": "object",
      "required": [
        "chainName",
        "guestFlush",
        "labels",
        "storageLocations"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyVmMaintenancePolicy": {
      "properties": {
        "concurrencyControlGroup": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyVmMaintenancePolicyConcurrencyControl"
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyVmMaintenancePolicyMaintenanceWindow",
          "description": "Maintenance windows that are applied to VMs covered by this policy."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyVmMaintenancePolicyConcurrencyControl": {
      "description": "A concurrency control configuration. Defines a group config that, when attached to an instance, recognizes that instance as part of a group of instances where only up the concurrency_limit of instances in that group can undergo simultaneous maintenance. For more information: go/concurrency-control-design-doc",
      "properties": {
        "concurrencyLimit": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyVmMaintenancePolicyConcurrencyControlResponse": {
      "description": "A concurrency control configuration. Defines a group config that, when attached to an instance, recognizes that instance as part of a group of instances where only up the concurrency_limit of instances in that group can undergo simultaneous maintenance. For more information: go/concurrency-control-design-doc",
      "properties": {
        "concurrencyLimit": {
          "type": "integer"
        }
      },
      "type": "object",
      "required": [
        "concurrencyLimit"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyVmMaintenancePolicyMaintenanceWindow": {
      "description": "A maintenance window for VMs. When set, we restrict our maintenance operations to this window.",
      "properties": {
        "dailyMaintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyDailyCycle"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyVmMaintenancePolicyMaintenanceWindowResponse": {
      "description": "A maintenance window for VMs. When set, we restrict our maintenance operations to this window.",
      "properties": {
        "dailyMaintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyDailyCycleResponse"
        }
      },
      "type": "object",
      "required": [
        "dailyMaintenanceWindow"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyVmMaintenancePolicyResponse": {
      "properties": {
        "concurrencyControlGroup": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyVmMaintenancePolicyConcurrencyControlResponse"
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyVmMaintenancePolicyMaintenanceWindowResponse",
          "description": "Maintenance windows that are applied to VMs covered by this policy."
        }
      },
      "type": "object",
      "required": [
        "concurrencyControlGroup",
        "maintenanceWindow"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyWeeklyCycle": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "dayOfWeeks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyWeeklyCycleDayOfWeek"
          },
          "description": "Up to 7 intervals/windows, one for each day of the week."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyWeeklyCycleDayOfWeek": {
      "properties": {
        "day": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyWeeklyCycleDayOfWeekDay",
          "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ResourcePolicyWeeklyCycleDayOfWeekDay": {
      "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY.",
      "type": "string",
      "enum": [
        {
          "name": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "value": "SUNDAY"
        },
        {
          "name": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "value": "WEDNESDAY"
        }
      ]
    },
    "google-native:compute/alpha:ResourcePolicyWeeklyCycleDayOfWeekResponse": {
      "properties": {
        "day": {
          "type": "string",
          "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY."
        },
        "duration": {
          "type": "string",
          "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyWeeklyCycleResponse": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "dayOfWeeks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyWeeklyCycleDayOfWeekResponse"
          },
          "description": "Up to 7 intervals/windows, one for each day of the week."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeeks"
      ]
    },
    "google-native:compute/alpha:ResourceStatusLastInstanceTerminationDetailsResponse": {
      "properties": {
        "terminationReason": {
          "type": "string",
          "description": "Reason for termination"
        }
      },
      "type": "object",
      "required": [
        "terminationReason"
      ]
    },
    "google-native:compute/alpha:ResourceStatusResponse": {
      "description": "Contains output only fields. Use this sub-message for actual values set on Instance attributes as compared to the value requested by the user (intent) in their instance CRUD calls.",
      "properties": {
        "lastInstanceTerminationDetails": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourceStatusLastInstanceTerminationDetailsResponse",
          "description": "Contains last termination details why the instance was terminated."
        },
        "physicalHost": {
          "type": "string",
          "description": "An opaque ID of the host on which the VM is running."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourceStatusSchedulingResponse"
        },
        "serviceIntegrationStatuses": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Represents the status of the service integration specs defined by the user in instance.serviceIntegrationSpecs."
        },
        "shutdownDetails": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourceStatusShutdownDetailsResponse",
          "description": "Details about stopping state of instance"
        },
        "upcomingMaintenance": {
          "$ref": "#/types/google-native:compute%2Falpha:UpcomingMaintenanceResponse"
        }
      },
      "type": "object",
      "required": [
        "lastInstanceTerminationDetails",
        "physicalHost",
        "scheduling",
        "serviceIntegrationStatuses",
        "shutdownDetails",
        "upcomingMaintenance"
      ]
    },
    "google-native:compute/alpha:ResourceStatusSchedulingResponse": {
      "properties": {
        "availabilityDomain": {
          "type": "integer",
          "description": "Specifies the availability domain (AD), which this instance should be scheduled on. The AD belongs to the spread GroupPlacementPolicy resource policy that has been assigned to the instance. Specify a value between 1-max count of availability domains in your GroupPlacementPolicy. See go/placement-policy-extension for more details."
        },
        "terminationTimestamp": {
          "type": "string",
          "description": "Time in future when the instance will be terminated in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "availabilityDomain",
        "terminationTimestamp"
      ]
    },
    "google-native:compute/alpha:ResourceStatusShutdownDetailsResponse": {
      "description": "Specifies if the instance is in `SHUTTING_DOWN` state or there is a instance stopping scheduled.",
      "properties": {
        "maxDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Duration for graceful shutdown. Only applicable when `stop_state=SHUTTING_DOWN`."
        },
        "requestTimestamp": {
          "type": "string",
          "description": "Past timestamp indicating the beginning of current `stopState` in RFC3339 text format."
        },
        "stopState": {
          "type": "string",
          "description": "Current stopping state of the instance."
        },
        "targetState": {
          "type": "string",
          "description": "Target instance state."
        }
      },
      "type": "object",
      "required": [
        "maxDuration",
        "requestTimestamp",
        "stopState",
        "targetState"
      ]
    },
    "google-native:compute/alpha:RolloutPolicy": {
      "description": "A rollout policy configuration.",
      "properties": {
        "defaultRolloutTime": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the update is considered rolled out to any zone that is not explicitly stated."
        },
        "locationRolloutPolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Location based rollout policies to apply to the resource. Currently only zone names are supported and must be represented as valid URLs, like: zones/us-central1-a. The value expects an RFC3339 timestamp on or after which the update is considered rolled out to the specified location."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RolloutPolicyResponse": {
      "description": "A rollout policy configuration.",
      "properties": {
        "defaultRolloutTime": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the update is considered rolled out to any zone that is not explicitly stated."
        },
        "locationRolloutPolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Location based rollout policies to apply to the resource. Currently only zone names are supported and must be represented as valid URLs, like: zones/us-central1-a. The value expects an RFC3339 timestamp on or after which the update is considered rolled out to the specified location."
        }
      },
      "type": "object",
      "required": [
        "defaultRolloutTime",
        "locationRolloutPolicies"
      ]
    },
    "google-native:compute/alpha:RouteAsPathResponse": {
      "properties": {
        "asLists": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The AS numbers of the AS Path."
        },
        "pathSegmentType": {
          "type": "string",
          "description": "The type of the AS Path, which can be one of the following values: - 'AS_SET': unordered set of autonomous systems that the route in has traversed - 'AS_SEQUENCE': ordered set of autonomous systems that the route has traversed - 'AS_CONFED_SEQUENCE': ordered set of Member Autonomous Systems in the local confederation that the route has traversed - 'AS_CONFED_SET': unordered set of Member Autonomous Systems in the local confederation that the route has traversed "
        }
      },
      "type": "object",
      "required": [
        "asLists",
        "pathSegmentType"
      ]
    },
    "google-native:compute/alpha:RouteIlbRouteBehaviorOnUnhealthy": {
      "description": "ILB route behavior when ILB is deemed unhealthy based on user specified threshold on the Backend Service of the internal load balancing.",
      "type": "string",
      "enum": [
        {
          "name": "DoNotWithdrawRouteIfIlbUnhealthy",
          "description": "Do not Withdraw route if the ILB is deemed unhealthy based on user specified threshold on the Backend Service of the ILB. This is default behavior for ilb as next hop route without IlbRouteBehavior.",
          "value": "DO_NOT_WITHDRAW_ROUTE_IF_ILB_UNHEALTHY"
        },
        {
          "name": "WithdrawRouteIfIlbUnhealthy",
          "description": "Withdraw route if the ILB is deemed unhealthy based on user specified threshold on the Backend Service of the internal load balancing. Currently the withdrawn route will be reinserted when the backends are restored to healthy. If you wish to prevent the re-insertion of the route and trigger the fall-back at your discretion, override the health result from the backends to signal as healthy only when ready to fallback.",
          "value": "WITHDRAW_ROUTE_IF_ILB_UNHEALTHY"
        }
      ]
    },
    "google-native:compute/alpha:RouteWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/alpha:RouteWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouteWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/alpha:RouterAdvertisedIpRange": {
      "description": "Description-tagged IP ranges for the router to advertise.",
      "properties": {
        "description": {
          "type": "string",
          "description": "User-specified description for the IP range."
        },
        "range": {
          "type": "string",
          "description": "The IP range to advertise. The value must be a CIDR-formatted string."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterAdvertisedIpRangeResponse": {
      "description": "Description-tagged IP ranges for the router to advertise.",
      "properties": {
        "description": {
          "type": "string",
          "description": "User-specified description for the IP range."
        },
        "range": {
          "type": "string",
          "description": "The IP range to advertise. The value must be a CIDR-formatted string."
        }
      },
      "type": "object",
      "required": [
        "description",
        "range"
      ]
    },
    "google-native:compute/alpha:RouterBgp": {
      "properties": {
        "advertiseMode": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpAdvertiseMode",
          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterBgpAdvertisedGroupsItem"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterAdvertisedIpRange"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "asn": {
          "type": "integer",
          "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN."
        },
        "identifierRange": {
          "type": "string",
          "description": "Explicitly specifies a range of valid BGP Identifiers for this Router. It is provided as a link-local IPv4 range (from 169.254.0.0/16), of size at least /30, even if the BGP sessions are over IPv6. It must not overlap with any IPv4 BGP session ranges. Other vendors commonly call this \"router ID\"."
        },
        "keepaliveInterval": {
          "type": "integer",
          "description": "The interval in seconds between BGP keepalive messages that are sent to the peer. Hold time is three times the interval at which keepalive messages are sent, and the hold time is the maximum number of seconds allowed to elapse between successive keepalive messages that BGP receives from a peer. BGP will use the smaller of either the local hold time value or the peer's hold time value as the hold time for the BGP connection between the two peers. If set, this value must be between 20 and 60. The default is 20."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterBgpAdvertiseMode": {
      "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "value": "CUSTOM"
        },
        {
          "name": "Default",
          "value": "DEFAULT"
        }
      ]
    },
    "google-native:compute/alpha:RouterBgpAdvertisedGroupsItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllPeerVpcSubnets",
          "description": "Advertise peer subnets of the router's VPC.",
          "value": "ALL_PEER_VPC_SUBNETS"
        },
        {
          "name": "AllSubnets",
          "description": "Advertise all available subnets (including peer VPC subnets).",
          "value": "ALL_SUBNETS"
        },
        {
          "name": "AllVpcSubnets",
          "description": "Advertise the router's own VPC subnets.",
          "value": "ALL_VPC_SUBNETS"
        }
      ]
    },
    "google-native:compute/alpha:RouterBgpPeer": {
      "properties": {
        "advertiseMode": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerAdvertiseMode",
          "description": "User-specified flag to indicate which mode to use for advertisement."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerAdvertisedGroupsItem"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode, which currently supports the following option: - ALL_SUBNETS: Advertises all of the router's own VPC subnets. This excludes any routes learned for subnets that use VPC Network Peering. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterAdvertisedIpRange"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "advertisedRoutePriority": {
          "type": "integer",
          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win."
        },
        "bfd": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerBfd",
          "description": "BFD configuration for the BGP peering."
        },
        "customLearnedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerCustomLearnedIpRange"
          },
          "description": "A list of user-defined custom learned route IP address ranges for a BGP session."
        },
        "customLearnedRoutePriority": {
          "type": "integer",
          "description": "The user-defined custom learned route priority for a BGP session. This value is applied to all custom learned route ranges for the session. You can choose a value from `0` to `65335`. If you don't provide a value, Google Cloud assigns a priority of `100` to the ranges."
        },
        "enable": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerEnable",
          "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE."
        },
        "enableIpv4": {
          "type": "boolean",
          "description": "Enable IPv4 traffic over BGP Peer. It is enabled by default if the peerIpAddress is version 4."
        },
        "enableIpv6": {
          "type": "boolean",
          "description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default."
        },
        "exportPolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of export policies applied to this peer, in the order they must be evaluated. The name must correspond to an existing policy that has ROUTE_POLICY_TYPE_EXPORT type."
        },
        "importPolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of import policies applied to this peer, in the order they must be evaluated. The name must correspond to an existing policy that has ROUTE_POLICY_TYPE_IMPORT type."
        },
        "interfaceName": {
          "type": "string",
          "description": "Name of the interface the BGP peer is associated with."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
        },
        "ipv4NexthopAddress": {
          "type": "string",
          "description": "IPv4 address of the interface inside Google Cloud Platform."
        },
        "ipv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the interface inside Google Cloud Platform."
        },
        "md5AuthenticationKeyName": {
          "type": "string",
          "description": "Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the Router.md5_authentication_keys. The field must comply with RFC1035."
        },
        "name": {
          "type": "string",
          "description": "Name of this BGP peer. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerAsn": {
          "type": "integer",
          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value."
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported."
        },
        "peerIpv4NexthopAddress": {
          "type": "string",
          "description": "IPv4 address of the BGP interface outside Google Cloud Platform."
        },
        "peerIpv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the BGP interface outside Google Cloud Platform."
        },
        "routerApplianceInstance": {
          "type": "string",
          "description": "URI of the VM instance that is used as third-party router appliances such as Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance must be located in zones contained in the same region as this Cloud Router. The VM instance is the peer side of the BGP session."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterBgpPeerAdvertiseMode": {
      "description": "User-specified flag to indicate which mode to use for advertisement.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "value": "CUSTOM"
        },
        {
          "name": "Default",
          "value": "DEFAULT"
        }
      ]
    },
    "google-native:compute/alpha:RouterBgpPeerAdvertisedGroupsItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllPeerVpcSubnets",
          "description": "Advertise peer subnets of the router's VPC.",
          "value": "ALL_PEER_VPC_SUBNETS"
        },
        {
          "name": "AllSubnets",
          "description": "Advertise all available subnets (including peer VPC subnets).",
          "value": "ALL_SUBNETS"
        },
        {
          "name": "AllVpcSubnets",
          "description": "Advertise the router's own VPC subnets.",
          "value": "ALL_VPC_SUBNETS"
        }
      ]
    },
    "google-native:compute/alpha:RouterBgpPeerBfd": {
      "properties": {
        "minReceiveInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets received from the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the transmit interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "minTransmitInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the corresponding receive interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerBfdMode",
          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is PASSIVE."
        },
        "multiplier": {
          "type": "integer",
          "description": "The number of consecutive BFD packets that must be missed before BFD declares that a peer is unavailable. If set, the value must be a value between 5 and 16. The default is 5."
        },
        "packetMode": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerBfdPacketMode",
          "description": "The BFD packet mode for this BGP peer. If set to CONTROL_AND_ECHO, BFD echo mode is enabled for this BGP peer. In this mode, if the peer router also has BFD echo mode enabled, BFD echo packets will be sent to the other router. If the peer router does not have BFD echo mode enabled, only control packets will be sent. If set to CONTROL_ONLY, BFD echo mode is disabled for this BGP peer. If this router and the peer router have a multihop connection, this should be set to CONTROL_ONLY as BFD echo mode is only supported on singlehop connections. The default is CONTROL_AND_ECHO."
        },
        "sessionInitializationMode": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerBfdSessionInitializationMode",
          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED."
        },
        "slowTimerInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to and received from the peer router when BFD echo mode is enabled on both routers. The actual transmit and receive intervals are negotiated between the two routers and are equal to the greater of this value and the corresponding interval on the other router. If set, this value must be between 1000 and 30000. The default is 5000."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterBgpPeerBfdMode": {
      "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is PASSIVE.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "value": "ACTIVE"
        },
        {
          "name": "Disabled",
          "value": "DISABLED"
        },
        {
          "name": "Passive",
          "value": "PASSIVE"
        }
      ]
    },
    "google-native:compute/alpha:RouterBgpPeerBfdPacketMode": {
      "description": "The BFD packet mode for this BGP peer. If set to CONTROL_AND_ECHO, BFD echo mode is enabled for this BGP peer. In this mode, if the peer router also has BFD echo mode enabled, BFD echo packets will be sent to the other router. If the peer router does not have BFD echo mode enabled, only control packets will be sent. If set to CONTROL_ONLY, BFD echo mode is disabled for this BGP peer. If this router and the peer router have a multihop connection, this should be set to CONTROL_ONLY as BFD echo mode is only supported on singlehop connections. The default is CONTROL_AND_ECHO.",
      "type": "string",
      "enum": [
        {
          "name": "ControlAndEcho",
          "value": "CONTROL_AND_ECHO"
        },
        {
          "name": "ControlOnly",
          "value": "CONTROL_ONLY"
        }
      ]
    },
    "google-native:compute/alpha:RouterBgpPeerBfdResponse": {
      "properties": {
        "minReceiveInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets received from the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the transmit interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "minTransmitInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the corresponding receive interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "mode": {
          "type": "string",
          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is PASSIVE."
        },
        "multiplier": {
          "type": "integer",
          "description": "The number of consecutive BFD packets that must be missed before BFD declares that a peer is unavailable. If set, the value must be a value between 5 and 16. The default is 5."
        },
        "packetMode": {
          "type": "string",
          "description": "The BFD packet mode for this BGP peer. If set to CONTROL_AND_ECHO, BFD echo mode is enabled for this BGP peer. In this mode, if the peer router also has BFD echo mode enabled, BFD echo packets will be sent to the other router. If the peer router does not have BFD echo mode enabled, only control packets will be sent. If set to CONTROL_ONLY, BFD echo mode is disabled for this BGP peer. If this router and the peer router have a multihop connection, this should be set to CONTROL_ONLY as BFD echo mode is only supported on singlehop connections. The default is CONTROL_AND_ECHO."
        },
        "sessionInitializationMode": {
          "type": "string",
          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED."
        },
        "slowTimerInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to and received from the peer router when BFD echo mode is enabled on both routers. The actual transmit and receive intervals are negotiated between the two routers and are equal to the greater of this value and the corresponding interval on the other router. If set, this value must be between 1000 and 30000. The default is 5000."
        }
      },
      "type": "object",
      "required": [
        "minReceiveInterval",
        "minTransmitInterval",
        "mode",
        "multiplier",
        "packetMode",
        "sessionInitializationMode",
        "slowTimerInterval"
      ]
    },
    "google-native:compute/alpha:RouterBgpPeerBfdSessionInitializationMode": {
      "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "value": "ACTIVE"
        },
        {
          "name": "Disabled",
          "value": "DISABLED"
        },
        {
          "name": "Passive",
          "value": "PASSIVE"
        }
      ]
    },
    "google-native:compute/alpha:RouterBgpPeerCustomLearnedIpRange": {
      "properties": {
        "range": {
          "type": "string",
          "description": "The custom learned route IP address range. Must be a valid CIDR-formatted prefix. If an IP address is provided without a subnet mask, it is interpreted as, for IPv4, a `/32` singular IP address range, and, for IPv6, `/128`."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterBgpPeerCustomLearnedIpRangeResponse": {
      "properties": {
        "range": {
          "type": "string",
          "description": "The custom learned route IP address range. Must be a valid CIDR-formatted prefix. If an IP address is provided without a subnet mask, it is interpreted as, for IPv4, a `/32` singular IP address range, and, for IPv6, `/128`."
        }
      },
      "type": "object",
      "required": [
        "range"
      ]
    },
    "google-native:compute/alpha:RouterBgpPeerEnable": {
      "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE.",
      "type": "string",
      "enum": [
        {
          "name": "False",
          "value": "FALSE"
        },
        {
          "name": "True",
          "value": "TRUE"
        }
      ]
    },
    "google-native:compute/alpha:RouterBgpPeerResponse": {
      "properties": {
        "advertiseMode": {
          "type": "string",
          "description": "User-specified flag to indicate which mode to use for advertisement."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode, which currently supports the following option: - ALL_SUBNETS: Advertises all of the router's own VPC subnets. This excludes any routes learned for subnets that use VPC Network Peering. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterAdvertisedIpRangeResponse"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "advertisedRoutePriority": {
          "type": "integer",
          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win."
        },
        "bfd": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerBfdResponse",
          "description": "BFD configuration for the BGP peering."
        },
        "customLearnedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerCustomLearnedIpRangeResponse"
          },
          "description": "A list of user-defined custom learned route IP address ranges for a BGP session."
        },
        "customLearnedRoutePriority": {
          "type": "integer",
          "description": "The user-defined custom learned route priority for a BGP session. This value is applied to all custom learned route ranges for the session. You can choose a value from `0` to `65335`. If you don't provide a value, Google Cloud assigns a priority of `100` to the ranges."
        },
        "enable": {
          "type": "string",
          "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE."
        },
        "enableIpv4": {
          "type": "boolean",
          "description": "Enable IPv4 traffic over BGP Peer. It is enabled by default if the peerIpAddress is version 4."
        },
        "enableIpv6": {
          "type": "boolean",
          "description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default."
        },
        "exportPolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of export policies applied to this peer, in the order they must be evaluated. The name must correspond to an existing policy that has ROUTE_POLICY_TYPE_EXPORT type."
        },
        "importPolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of import policies applied to this peer, in the order they must be evaluated. The name must correspond to an existing policy that has ROUTE_POLICY_TYPE_IMPORT type."
        },
        "interfaceName": {
          "type": "string",
          "description": "Name of the interface the BGP peer is associated with."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
        },
        "ipv4NexthopAddress": {
          "type": "string",
          "description": "IPv4 address of the interface inside Google Cloud Platform."
        },
        "ipv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the interface inside Google Cloud Platform."
        },
        "managementType": {
          "type": "string",
          "description": "The resource that configures and manages this BGP peer. - MANAGED_BY_USER is the default value and can be managed by you or other users - MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted. "
        },
        "md5AuthenticationKeyName": {
          "type": "string",
          "description": "Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the Router.md5_authentication_keys. The field must comply with RFC1035."
        },
        "name": {
          "type": "string",
          "description": "Name of this BGP peer. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerAsn": {
          "type": "integer",
          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value."
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported."
        },
        "peerIpv4NexthopAddress": {
          "type": "string",
          "description": "IPv4 address of the BGP interface outside Google Cloud Platform."
        },
        "peerIpv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the BGP interface outside Google Cloud Platform."
        },
        "routerApplianceInstance": {
          "type": "string",
          "description": "URI of the VM instance that is used as third-party router appliances such as Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance must be located in zones contained in the same region as this Cloud Router. The VM instance is the peer side of the BGP session."
        }
      },
      "type": "object",
      "required": [
        "advertiseMode",
        "advertisedGroups",
        "advertisedIpRanges",
        "advertisedRoutePriority",
        "bfd",
        "customLearnedIpRanges",
        "customLearnedRoutePriority",
        "enable",
        "enableIpv4",
        "enableIpv6",
        "exportPolicies",
        "importPolicies",
        "interfaceName",
        "ipAddress",
        "ipv4NexthopAddress",
        "ipv6NexthopAddress",
        "managementType",
        "md5AuthenticationKeyName",
        "name",
        "peerAsn",
        "peerIpAddress",
        "peerIpv4NexthopAddress",
        "peerIpv6NexthopAddress",
        "routerApplianceInstance"
      ]
    },
    "google-native:compute/alpha:RouterBgpResponse": {
      "properties": {
        "advertiseMode": {
          "type": "string",
          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterAdvertisedIpRangeResponse"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "asn": {
          "type": "integer",
          "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN."
        },
        "identifierRange": {
          "type": "string",
          "description": "Explicitly specifies a range of valid BGP Identifiers for this Router. It is provided as a link-local IPv4 range (from 169.254.0.0/16), of size at least /30, even if the BGP sessions are over IPv6. It must not overlap with any IPv4 BGP session ranges. Other vendors commonly call this \"router ID\"."
        },
        "keepaliveInterval": {
          "type": "integer",
          "description": "The interval in seconds between BGP keepalive messages that are sent to the peer. Hold time is three times the interval at which keepalive messages are sent, and the hold time is the maximum number of seconds allowed to elapse between successive keepalive messages that BGP receives from a peer. BGP will use the smaller of either the local hold time value or the peer's hold time value as the hold time for the BGP connection between the two peers. If set, this value must be between 20 and 60. The default is 20."
        }
      },
      "type": "object",
      "required": [
        "advertiseMode",
        "advertisedGroups",
        "advertisedIpRanges",
        "asn",
        "identifierRange",
        "keepaliveInterval"
      ]
    },
    "google-native:compute/alpha:RouterInterface": {
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterInterfaceIpVersion",
          "description": "IP version of this interface."
        },
        "linkedInterconnectAttachment": {
          "type": "string",
          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "linkedVpnTunnel": {
          "type": "string",
          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "name": {
          "type": "string",
          "description": "Name of this interface entry. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateIpAddress": {
          "type": "string",
          "description": "The regional private internal IP address that is used to establish BGP sessions to a VM instance acting as a third-party Router Appliance, such as a Next Gen Firewall, a Virtual Router, or an SD-WAN VM."
        },
        "redundantInterface": {
          "type": "string",
          "description": "Name of the interface that will be redundant with the current interface you are creating. The redundantInterface must belong to the same Cloud Router as the interface here. To establish the BGP session to a Router Appliance VM, you must create two BGP peers. The two BGP peers must be attached to two separate interfaces that are redundant with each other. The redundant_interface must be 1-63 characters long, and comply with RFC1035. Specifically, the redundant_interface must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URI of the subnetwork resource that this interface belongs to, which must be in the same region as the Cloud Router. When you establish a BGP session to a VM instance using this interface, the VM instance must belong to the same subnetwork as the subnetwork specified here."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterInterfaceIpVersion": {
      "description": "IP version of this interface.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        }
      ]
    },
    "google-native:compute/alpha:RouterInterfaceResponse": {
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
        },
        "ipVersion": {
          "type": "string",
          "description": "IP version of this interface."
        },
        "linkedInterconnectAttachment": {
          "type": "string",
          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "linkedVpnTunnel": {
          "type": "string",
          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "managementType": {
          "type": "string",
          "description": "The resource that configures and manages this interface. - MANAGED_BY_USER is the default value and can be managed directly by users. - MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically, by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted. "
        },
        "name": {
          "type": "string",
          "description": "Name of this interface entry. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateIpAddress": {
          "type": "string",
          "description": "The regional private internal IP address that is used to establish BGP sessions to a VM instance acting as a third-party Router Appliance, such as a Next Gen Firewall, a Virtual Router, or an SD-WAN VM."
        },
        "redundantInterface": {
          "type": "string",
          "description": "Name of the interface that will be redundant with the current interface you are creating. The redundantInterface must belong to the same Cloud Router as the interface here. To establish the BGP session to a Router Appliance VM, you must create two BGP peers. The two BGP peers must be attached to two separate interfaces that are redundant with each other. The redundant_interface must be 1-63 characters long, and comply with RFC1035. Specifically, the redundant_interface must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URI of the subnetwork resource that this interface belongs to, which must be in the same region as the Cloud Router. When you establish a BGP session to a VM instance using this interface, the VM instance must belong to the same subnetwork as the subnetwork specified here."
        }
      },
      "type": "object",
      "required": [
        "ipRange",
        "ipVersion",
        "linkedInterconnectAttachment",
        "linkedVpnTunnel",
        "managementType",
        "name",
        "privateIpAddress",
        "redundantInterface",
        "subnetwork"
      ]
    },
    "google-native:compute/alpha:RouterMd5AuthenticationKey": {
      "properties": {
        "key": {
          "type": "string",
          "description": "[Input only] Value of the key. For patch and update calls, it can be skipped to copy the value from the previous configuration. This is allowed if the key with the same name existed before the operation. Maximum length is 80 characters. Can only contain printable ASCII characters."
        },
        "name": {
          "type": "string",
          "description": "Name used to identify the key. Must be unique within a router. Must be referenced by exactly one bgpPeer. Must comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterMd5AuthenticationKeyResponse": {
      "properties": {
        "key": {
          "type": "string",
          "description": "[Input only] Value of the key. For patch and update calls, it can be skipped to copy the value from the previous configuration. This is allowed if the key with the same name existed before the operation. Maximum length is 80 characters. Can only contain printable ASCII characters."
        },
        "name": {
          "type": "string",
          "description": "Name used to identify the key. Must be unique within a router. Must be referenced by exactly one bgpPeer. Must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "key",
        "name"
      ]
    },
    "google-native:compute/alpha:RouterNat": {
      "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
      "properties": {
        "autoNetworkTier": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatAutoNetworkTier",
          "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used."
        },
        "drainNatIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT only."
        },
        "enableDynamicPortAllocation": {
          "type": "boolean",
          "description": "Enable Dynamic Port Allocation. If not specified, it is disabled by default. If set to true, - Dynamic Port Allocation will be enabled on this NAT config. - enableEndpointIndependentMapping cannot be set to true. - If minPorts is set, minPortsPerVm must be set to a power of two greater than or equal to 32. If minPortsPerVm is not set, a minimum of 32 ports will be allocated to a VM from this NAT config. "
        },
        "enableEndpointIndependentMapping": {
          "type": "boolean"
        },
        "endpointTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterNatEndpointTypesItem"
          },
          "description": "List of NAT-ted endpoint types supported by the Nat Gateway. If the list is empty, then it will be equivalent to include ENDPOINT_TYPE_VM"
        },
        "icmpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for ICMP connections. Defaults to 30s if not set."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatLogConfig",
          "description": "Configure logging on this NAT."
        },
        "maxPortsPerVm": {
          "type": "integer",
          "description": "Maximum number of ports allocated to a VM from this NAT config when Dynamic Port Allocation is enabled. If Dynamic Port Allocation is not enabled, this field has no effect. If Dynamic Port Allocation is enabled, and this field is set, it must be set to a power of two greater than minPortsPerVm, or 64 if minPortsPerVm is not set. If Dynamic Port Allocation is enabled and this field is not set, a maximum of 65536 ports will be allocated to a VM from this NAT config."
        },
        "minPortsPerVm": {
          "type": "integer",
          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM."
        },
        "name": {
          "type": "string",
          "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035."
        },
        "natIpAllocateOption": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatNatIpAllocateOption",
          "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. "
        },
        "natIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterNatRule"
          },
          "description": "A list of rules associated with this NAT."
        },
        "sourceSubnetworkIpRangesToNat": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatSourceSubnetworkIpRangesToNat",
          "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterNatSubnetworkToNat"
          },
          "description": "A list of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above."
        },
        "tcpEstablishedIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP established connections. Defaults to 1200s if not set."
        },
        "tcpTimeWaitTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP connections that are in TIME_WAIT state. Defaults to 120s if not set."
        },
        "tcpTransitoryIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP transitory connections. Defaults to 30s if not set."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatType",
          "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC."
        },
        "udpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for UDP connections. Defaults to 30s if not set."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterNatAutoNetworkTier": {
      "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Select",
          "description": "Price competitive network tier, support for all networking products.",
          "value": "SELECT"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:RouterNatEndpointTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "EndpointTypeManagedProxyLb",
          "description": "This is used for regional Application Load Balancers (internal and external) and regional proxy Network Load Balancers (internal and external) endpoints.",
          "value": "ENDPOINT_TYPE_MANAGED_PROXY_LB"
        },
        {
          "name": "EndpointTypeSwg",
          "description": "This is used for Secure Web Gateway endpoints.",
          "value": "ENDPOINT_TYPE_SWG"
        },
        {
          "name": "EndpointTypeVm",
          "description": "This is the default.",
          "value": "ENDPOINT_TYPE_VM"
        }
      ]
    },
    "google-native:compute/alpha:RouterNatLogConfig": {
      "description": "Configuration of logging on a NAT.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatLogConfigFilter",
          "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterNatLogConfigFilter": {
      "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "description": "Export logs for all (successful and unsuccessful) connections.",
          "value": "ALL"
        },
        {
          "name": "ErrorsOnly",
          "description": "Export logs for connection failures only.",
          "value": "ERRORS_ONLY"
        },
        {
          "name": "TranslationsOnly",
          "description": "Export logs for successful connections only.",
          "value": "TRANSLATIONS_ONLY"
        }
      ]
    },
    "google-native:compute/alpha:RouterNatLogConfigResponse": {
      "description": "Configuration of logging on a NAT.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default."
        },
        "filter": {
          "type": "string",
          "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. "
        }
      },
      "type": "object",
      "required": [
        "enable",
        "filter"
      ]
    },
    "google-native:compute/alpha:RouterNatNatIpAllocateOption": {
      "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. ",
      "type": "string",
      "enum": [
        {
          "name": "AutoOnly",
          "description": "Nat IPs are allocated by GCP; customers can not specify any Nat IPs.",
          "value": "AUTO_ONLY"
        },
        {
          "name": "ManualOnly",
          "description": "Only use Nat IPs provided by customers. When specified Nat IPs are not enough then the Nat service fails for new VMs.",
          "value": "MANUAL_ONLY"
        }
      ]
    },
    "google-native:compute/alpha:RouterNatResponse": {
      "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
      "properties": {
        "autoNetworkTier": {
          "type": "string",
          "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used."
        },
        "drainNatIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT only."
        },
        "enableDynamicPortAllocation": {
          "type": "boolean",
          "description": "Enable Dynamic Port Allocation. If not specified, it is disabled by default. If set to true, - Dynamic Port Allocation will be enabled on this NAT config. - enableEndpointIndependentMapping cannot be set to true. - If minPorts is set, minPortsPerVm must be set to a power of two greater than or equal to 32. If minPortsPerVm is not set, a minimum of 32 ports will be allocated to a VM from this NAT config. "
        },
        "enableEndpointIndependentMapping": {
          "type": "boolean"
        },
        "endpointTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of NAT-ted endpoint types supported by the Nat Gateway. If the list is empty, then it will be equivalent to include ENDPOINT_TYPE_VM"
        },
        "icmpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for ICMP connections. Defaults to 30s if not set."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatLogConfigResponse",
          "description": "Configure logging on this NAT."
        },
        "maxPortsPerVm": {
          "type": "integer",
          "description": "Maximum number of ports allocated to a VM from this NAT config when Dynamic Port Allocation is enabled. If Dynamic Port Allocation is not enabled, this field has no effect. If Dynamic Port Allocation is enabled, and this field is set, it must be set to a power of two greater than minPortsPerVm, or 64 if minPortsPerVm is not set. If Dynamic Port Allocation is enabled and this field is not set, a maximum of 65536 ports will be allocated to a VM from this NAT config."
        },
        "minPortsPerVm": {
          "type": "integer",
          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM."
        },
        "name": {
          "type": "string",
          "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035."
        },
        "natIpAllocateOption": {
          "type": "string",
          "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. "
        },
        "natIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterNatRuleResponse"
          },
          "description": "A list of rules associated with this NAT."
        },
        "sourceSubnetworkIpRangesToNat": {
          "type": "string",
          "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterNatSubnetworkToNatResponse"
          },
          "description": "A list of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above."
        },
        "tcpEstablishedIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP established connections. Defaults to 1200s if not set."
        },
        "tcpTimeWaitTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP connections that are in TIME_WAIT state. Defaults to 120s if not set."
        },
        "tcpTransitoryIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP transitory connections. Defaults to 30s if not set."
        },
        "type": {
          "type": "string",
          "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC."
        },
        "udpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for UDP connections. Defaults to 30s if not set."
        }
      },
      "type": "object",
      "required": [
        "autoNetworkTier",
        "drainNatIps",
        "enableDynamicPortAllocation",
        "enableEndpointIndependentMapping",
        "endpointTypes",
        "icmpIdleTimeoutSec",
        "logConfig",
        "maxPortsPerVm",
        "minPortsPerVm",
        "name",
        "natIpAllocateOption",
        "natIps",
        "rules",
        "sourceSubnetworkIpRangesToNat",
        "subnetworks",
        "tcpEstablishedIdleTimeoutSec",
        "tcpTimeWaitTimeoutSec",
        "tcpTransitoryIdleTimeoutSec",
        "type",
        "udpIdleTimeoutSec"
      ]
    },
    "google-native:compute/alpha:RouterNatRule": {
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatRuleAction",
          "description": "The action to be enforced for traffic that matches this rule."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this rule."
        },
        "match": {
          "type": "string",
          "description": "CEL expression that specifies the match condition that egress traffic from a VM is evaluated against. If it evaluates to true, the corresponding `action` is enforced. The following examples are valid match expressions for public NAT: \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\" \"destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'\" The following example is a valid match expression for private NAT: \"nexthop.hub == '//networkconnectivity.googleapis.com/projects/my-project/locations/global/hubs/hub-1'\""
        },
        "ruleNumber": {
          "type": "integer",
          "description": "An integer uniquely identifying a rule in the list. The rule number must be a positive value between 0 and 65000, and must be unique among rules within a NAT."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterNatRuleAction": {
      "properties": {
        "sourceNatActiveIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this NAT rule. These IP addresses must be valid static external IP addresses assigned to the project. This field is used for public NAT."
        },
        "sourceNatActiveRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the subnetworks used as source ranges for this NAT Rule. These subnetworks must have purpose set to PRIVATE_NAT. This field is used for private NAT."
        },
        "sourceNatDrainIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT rule only. This field is used for public NAT."
        },
        "sourceNatDrainRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of subnetworks representing source ranges to be drained. This is only supported on patch/update, and these subnetworks must have previously been used as active ranges in this NAT Rule. This field is used for private NAT."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterNatRuleActionResponse": {
      "properties": {
        "sourceNatActiveIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this NAT rule. These IP addresses must be valid static external IP addresses assigned to the project. This field is used for public NAT."
        },
        "sourceNatActiveRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the subnetworks used as source ranges for this NAT Rule. These subnetworks must have purpose set to PRIVATE_NAT. This field is used for private NAT."
        },
        "sourceNatDrainIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT rule only. This field is used for public NAT."
        },
        "sourceNatDrainRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of subnetworks representing source ranges to be drained. This is only supported on patch/update, and these subnetworks must have previously been used as active ranges in this NAT Rule. This field is used for private NAT."
        }
      },
      "type": "object",
      "required": [
        "sourceNatActiveIps",
        "sourceNatActiveRanges",
        "sourceNatDrainIps",
        "sourceNatDrainRanges"
      ]
    },
    "google-native:compute/alpha:RouterNatRuleResponse": {
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterNatRuleActionResponse",
          "description": "The action to be enforced for traffic that matches this rule."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this rule."
        },
        "match": {
          "type": "string",
          "description": "CEL expression that specifies the match condition that egress traffic from a VM is evaluated against. If it evaluates to true, the corresponding `action` is enforced. The following examples are valid match expressions for public NAT: \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\" \"destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'\" The following example is a valid match expression for private NAT: \"nexthop.hub == '//networkconnectivity.googleapis.com/projects/my-project/locations/global/hubs/hub-1'\""
        },
        "ruleNumber": {
          "type": "integer",
          "description": "An integer uniquely identifying a rule in the list. The rule number must be a positive value between 0 and 65000, and must be unique among rules within a NAT."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "match",
        "ruleNumber"
      ]
    },
    "google-native:compute/alpha:RouterNatSourceSubnetworkIpRangesToNat": {
      "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region.",
      "type": "string",
      "enum": [
        {
          "name": "AllSubnetworksAllIpRanges",
          "description": "All the IP ranges in every Subnetwork are allowed to Nat.",
          "value": "ALL_SUBNETWORKS_ALL_IP_RANGES"
        },
        {
          "name": "AllSubnetworksAllPrimaryIpRanges",
          "description": "All the primary IP ranges in every Subnetwork are allowed to Nat.",
          "value": "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES"
        },
        {
          "name": "ListOfSubnetworks",
          "description": "A list of Subnetworks are allowed to Nat (specified in the field subnetwork below)",
          "value": "LIST_OF_SUBNETWORKS"
        }
      ]
    },
    "google-native:compute/alpha:RouterNatSubnetworkToNat": {
      "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
      "properties": {
        "name": {
          "type": "string",
          "description": "URL for the subnetwork resource that will use NAT."
        },
        "secondaryIpRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the secondary ranges of the Subnetwork that are allowed to use NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is one of the values in source_ip_ranges_to_nat."
        },
        "sourceIpRangesToNat": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterNatSubnetworkToNatSourceIpRangesToNatItem"
          },
          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RouterNatSubnetworkToNatResponse": {
      "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
      "properties": {
        "name": {
          "type": "string",
          "description": "URL for the subnetwork resource that will use NAT."
        },
        "secondaryIpRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the secondary ranges of the Subnetwork that are allowed to use NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is one of the values in source_ip_ranges_to_nat."
        },
        "sourceIpRangesToNat": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]"
        }
      },
      "type": "object",
      "required": [
        "name",
        "secondaryIpRangeNames",
        "sourceIpRangesToNat"
      ]
    },
    "google-native:compute/alpha:RouterNatSubnetworkToNatSourceIpRangesToNatItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllIpRanges",
          "description": "The primary and all the secondary ranges are allowed to Nat.",
          "value": "ALL_IP_RANGES"
        },
        {
          "name": "ListOfSecondaryIpRanges",
          "description": "A list of secondary ranges are allowed to Nat.",
          "value": "LIST_OF_SECONDARY_IP_RANGES"
        },
        {
          "name": "PrimaryIpRange",
          "description": "The primary range is allowed to Nat.",
          "value": "PRIMARY_IP_RANGE"
        }
      ]
    },
    "google-native:compute/alpha:RouterNatType": {
      "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC.",
      "type": "string",
      "enum": [
        {
          "name": "Private",
          "description": "NAT used for private IP translation.",
          "value": "PRIVATE"
        },
        {
          "name": "Public",
          "description": "NAT used for public IP translation. This is the default.",
          "value": "PUBLIC"
        }
      ]
    },
    "google-native:compute/alpha:Rule": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Falpha:RuleAction",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Condition"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "description": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "ins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:LogConfig"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "notIns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:RuleAction": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Allow",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ALLOW"
        },
        {
          "name": "AllowWithLog",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ALLOW_WITH_LOG"
        },
        {
          "name": "Deny",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DENY"
        },
        {
          "name": "DenyWithLog",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DENY_WITH_LOG"
        },
        {
          "name": "Log",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG"
        },
        {
          "name": "NoAction",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ACTION"
        }
      ]
    },
    "google-native:compute/alpha:RuleResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "action": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ConditionResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "description": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "ins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:LogConfigResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "notIns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "action",
        "conditions",
        "description",
        "ins",
        "logConfigs",
        "notIns",
        "permissions"
      ]
    },
    "google-native:compute/alpha:SSLHealthCheck": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Falpha:SSLHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Falpha:SSLHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection and SSL handshake."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based SSL health check. In addition to establishing a TCP connection and the TLS handshake, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SSLHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/alpha:SSLHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/alpha:SSLHealthCheckResponse": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection and SSL handshake."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based SSL health check. In addition to establishing a TCP connection and the TLS handshake, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object",
      "required": [
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "request",
        "response"
      ]
    },
    "google-native:compute/alpha:SavedAttachedDiskResponse": {
      "description": "DEPRECATED: Please use compute#savedDisk instead. An instance-attached disk resource.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the name of the disk attached to the source instance."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The encryption key for the disk."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in base-2 GB."
        },
        "diskType": {
          "type": "string",
          "description": "URL of the disk type resource. For example: projects/project /zones/zone/diskTypes/pd-standard or pd-ssd"
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "index": {
          "type": "integer",
          "description": "Specifies zero-based index of the disk that is attached to the source instance."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#attachedDisk for attached disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any valid publicly visible licenses."
        },
        "mode": {
          "type": "string",
          "description": "The mode in which this disk is attached to the source instance, either READ_WRITE or READ_ONLY."
        },
        "source": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        },
        "storageBytes": {
          "type": "string",
          "description": "A size of the storage used by the disk's snapshot by this machine image."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the attached disk, either SCRATCH or PERSISTENT."
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "boot",
        "deviceName",
        "diskEncryptionKey",
        "diskSizeGb",
        "diskType",
        "guestOsFeatures",
        "index",
        "interface",
        "kind",
        "licenses",
        "mode",
        "source",
        "storageBytes",
        "storageBytesStatus",
        "type"
      ]
    },
    "google-native:compute/alpha:SavedDisk": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "sourceDisk": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SavedDiskResponse": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#savedDisk for attached disks."
        },
        "sourceDisk": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        },
        "storageBytes": {
          "type": "string",
          "description": "Size of the individual disk snapshot used by this machine image."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "kind",
        "sourceDisk",
        "storageBytes",
        "storageBytesStatus"
      ]
    },
    "google-native:compute/alpha:Scheduling": {
      "description": "Sets the scheduling options for an Instance.",
      "properties": {
        "automaticRestart": {
          "type": "boolean",
          "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted. By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
        },
        "availabilityDomain": {
          "type": "integer",
          "description": "Specifies the availability domain (AD), which this instance should be scheduled on. The AD belongs to the spread GroupPlacementPolicy resource policy that has been assigned to the instance. Specify a value between 1-max count of availability domains in your GroupPlacementPolicy. See go/placement-policy-extension for more details."
        },
        "currentCpus": {
          "type": "integer",
          "description": "Current number of vCPUs available for VM. 0 or unset means default vCPUs of the current machine type."
        },
        "currentMemoryMb": {
          "type": "string",
          "description": "Current amount of memory (in MB) available for VM. 0 or unset means default amount of memory of the current machine type."
        },
        "gracefulShutdown": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingGracefulShutdown"
        },
        "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."
        },
        "instanceTerminationAction": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingInstanceTerminationAction",
          "description": "Specifies the termination action for the instance."
        },
        "latencyTolerant": {
          "type": "boolean",
          "description": "Defines whether the instance is tolerant of higher cpu latency. This can only be set during instance creation, or when the instance is not currently running. It must not be set if the preemptible option is also set."
        },
        "localSsdRecoveryTimeout": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "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."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the instance close to other resources. This field is for use by internal tools that use the public API."
        },
        "maintenanceFreezeDurationHours": {
          "type": "integer",
          "description": "Specifies the number of hours after VM instance creation where the VM won't be scheduled for maintenance."
        },
        "maintenanceInterval": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingMaintenanceInterval",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`."
        },
        "maxRunDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Specifies the max run duration for the given instance. If specified, the instance termination action will be performed at the end of the run duration."
        },
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SchedulingNodeAffinity"
          },
          "description": "A set of node affinity and anti-affinity configurations. Refer to Configuring node affinity for more information. Overrides reservationAffinity."
        },
        "onHostMaintenance": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingOnHostMaintenance",
          "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the instance is preemptible. This can only be set during instance creation or while the instance is stopped and therefore, in a `TERMINATED` state. See Instance Life Cycle for more information on the possible instance states."
        },
        "provisioningModel": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingProvisioningModel",
          "description": "Specifies the provisioning model of the instance."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SchedulingGracefulShutdown": {
      "description": "Configuration for gracefully shutting down the instance.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Opts-in for graceful shutdown."
        },
        "maxDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Specifies time needed to gracefully shut down the instance. After that time, the instance goes to STOPPING even if graceful shutdown is not completed."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SchedulingGracefulShutdownResponse": {
      "description": "Configuration for gracefully shutting down the instance.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Opts-in for graceful shutdown."
        },
        "maxDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Specifies time needed to gracefully shut down the instance. After that time, the instance goes to STOPPING even if graceful shutdown is not completed."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "maxDuration"
      ]
    },
    "google-native:compute/alpha:SchedulingInstanceTerminationAction": {
      "description": "Specifies the termination action for the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Delete",
          "description": "Delete the VM.",
          "value": "DELETE"
        },
        {
          "name": "InstanceTerminationActionUnspecified",
          "description": "Default value. This value is unused.",
          "value": "INSTANCE_TERMINATION_ACTION_UNSPECIFIED"
        },
        {
          "name": "Stop",
          "description": "Stop the VM without storing in-memory content. default action.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/alpha:SchedulingMaintenanceInterval": {
      "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.",
      "type": "string",
      "enum": [
        {
          "name": "AsNeeded",
          "description": "VMs are eligible to receive infrastructure and hypervisor updates as they become available. This may result in more maintenance operations (live migrations or terminations) for the VM than the PERIODIC and RECURRENT options.",
          "value": "AS_NEEDED"
        },
        {
          "name": "Periodic",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available.",
          "value": "PERIODIC"
        },
        {
          "name": "Recurrent",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available. RECURRENT is used for GEN3 and Slice of Hardware VMs.",
          "value": "RECURRENT"
        }
      ]
    },
    "google-native:compute/alpha:SchedulingNodeAffinity": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of Node resource."
        },
        "operator": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingNodeAffinityOperator",
          "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SchedulingNodeAffinityOperator": {
      "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity.",
      "type": "string",
      "enum": [
        {
          "name": "In",
          "description": "Requires Compute Engine to seek for matched nodes.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "Requires Compute Engine to avoid certain nodes.",
          "value": "NOT_IN"
        },
        {
          "name": "OperatorUnspecified",
          "value": "OPERATOR_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:SchedulingNodeAffinityResponse": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of Node resource."
        },
        "operator": {
          "type": "string",
          "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "google-native:compute/alpha:SchedulingOnHostMaintenance": {
      "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy.",
      "type": "string",
      "enum": [
        {
          "name": "Migrate",
          "description": "*[Default]* Allows Compute Engine to automatically migrate instances out of the way of maintenance events.",
          "value": "MIGRATE"
        },
        {
          "name": "Terminate",
          "description": "Tells Compute Engine to terminate and (optionally) restart the instance away from the maintenance activity. If you would like your instance to be restarted, set the automaticRestart flag to true. Your instance may be restarted more than once, and it may be restarted outside the window of maintenance events.",
          "value": "TERMINATE"
        }
      ]
    },
    "google-native:compute/alpha:SchedulingProvisioningModel": {
      "description": "Specifies the provisioning model of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Spot",
          "description": "Heavily discounted, no guaranteed runtime.",
          "value": "SPOT"
        },
        {
          "name": "Standard",
          "description": "Standard provisioning with user controlled runtime, no discounts.",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:SchedulingResponse": {
      "description": "Sets the scheduling options for an Instance.",
      "properties": {
        "automaticRestart": {
          "type": "boolean",
          "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted. By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
        },
        "availabilityDomain": {
          "type": "integer",
          "description": "Specifies the availability domain (AD), which this instance should be scheduled on. The AD belongs to the spread GroupPlacementPolicy resource policy that has been assigned to the instance. Specify a value between 1-max count of availability domains in your GroupPlacementPolicy. See go/placement-policy-extension for more details."
        },
        "currentCpus": {
          "type": "integer",
          "description": "Current number of vCPUs available for VM. 0 or unset means default vCPUs of the current machine type."
        },
        "currentMemoryMb": {
          "type": "string",
          "description": "Current amount of memory (in MB) available for VM. 0 or unset means default amount of memory of the current machine type."
        },
        "gracefulShutdown": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingGracefulShutdownResponse"
        },
        "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."
        },
        "instanceTerminationAction": {
          "type": "string",
          "description": "Specifies the termination action for the instance."
        },
        "latencyTolerant": {
          "type": "boolean",
          "description": "Defines whether the instance is tolerant of higher cpu latency. This can only be set during instance creation, or when the instance is not currently running. It must not be set if the preemptible option is also set."
        },
        "localSsdRecoveryTimeout": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "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."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the instance close to other resources. This field is for use by internal tools that use the public API."
        },
        "maintenanceFreezeDurationHours": {
          "type": "integer",
          "description": "Specifies the number of hours after VM instance creation where the VM won't be scheduled for maintenance."
        },
        "maintenanceInterval": {
          "type": "string",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`."
        },
        "maxRunDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Specifies the max run duration for the given instance. If specified, the instance termination action will be performed at the end of the run duration."
        },
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SchedulingNodeAffinityResponse"
          },
          "description": "A set of node affinity and anti-affinity configurations. Refer to Configuring node affinity for more information. Overrides reservationAffinity."
        },
        "onHostMaintenance": {
          "type": "string",
          "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the instance is preemptible. This can only be set during instance creation or while the instance is stopped and therefore, in a `TERMINATED` state. See Instance Life Cycle for more information on the possible instance states."
        },
        "provisioningModel": {
          "type": "string",
          "description": "Specifies the provisioning model of the instance."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "automaticRestart",
        "availabilityDomain",
        "currentCpus",
        "currentMemoryMb",
        "gracefulShutdown",
        "hostErrorTimeoutSeconds",
        "instanceTerminationAction",
        "latencyTolerant",
        "localSsdRecoveryTimeout",
        "locationHint",
        "maintenanceFreezeDurationHours",
        "maintenanceInterval",
        "maxRunDuration",
        "minNodeCpus",
        "nodeAffinities",
        "onHostMaintenance",
        "preemptible",
        "provisioningModel",
        "terminationTime"
      ]
    },
    "google-native:compute/alpha:SdsConfig": {
      "description": "[Deprecated] The configuration to access the SDS server. The configuration to access the SDS server.",
      "properties": {
        "grpcServiceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:GrpcServiceConfig",
          "description": "The configuration to access the SDS server over GRPC."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SdsConfigResponse": {
      "description": "[Deprecated] The configuration to access the SDS server. The configuration to access the SDS server.",
      "properties": {
        "grpcServiceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:GrpcServiceConfigResponse",
          "description": "The configuration to access the SDS server over GRPC."
        }
      },
      "type": "object",
      "required": [
        "grpcServiceConfig"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfig": {
      "description": "Configuration options for Cloud Armor Adaptive Protection (CAAP).",
      "properties": {
        "autoDeployConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig"
        },
        "layer7DdosDefenseConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig",
          "description": "If set to true, enables Cloud Armor Machine Learning."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig": {
      "description": "Configuration options for Adaptive Protection auto-deploy feature.",
      "properties": {
        "confidenceThreshold": {
          "type": "number"
        },
        "expirationSec": {
          "type": "integer"
        },
        "impactedBaselineThreshold": {
          "type": "number"
        },
        "loadThreshold": {
          "type": "number"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfigResponse": {
      "description": "Configuration options for Adaptive Protection auto-deploy feature.",
      "properties": {
        "confidenceThreshold": {
          "type": "number"
        },
        "expirationSec": {
          "type": "integer"
        },
        "impactedBaselineThreshold": {
          "type": "number"
        },
        "loadThreshold": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "confidenceThreshold",
        "expirationSec",
        "impactedBaselineThreshold",
        "loadThreshold"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig": {
      "description": "Configuration options for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "If set to true, enables CAAP for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "ruleVisibility": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility",
          "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "thresholdConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig"
          },
          "description": "Configuration options for layer7 adaptive protection for various customizable thresholds."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResponse": {
      "description": "Configuration options for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "If set to true, enables CAAP for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "ruleVisibility": {
          "type": "string",
          "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "thresholdConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigResponse"
          },
          "description": "Configuration options for layer7 adaptive protection for various customizable thresholds."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "ruleVisibility",
        "thresholdConfigs"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility": {
      "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "type": "string",
      "enum": [
        {
          "name": "Premium",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig": {
      "properties": {
        "autoDeployConfidenceThreshold": {
          "type": "number"
        },
        "autoDeployExpirationSec": {
          "type": "integer"
        },
        "autoDeployImpactedBaselineThreshold": {
          "type": "number"
        },
        "autoDeployLoadThreshold": {
          "type": "number"
        },
        "name": {
          "type": "string",
          "description": "The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigResponse": {
      "properties": {
        "autoDeployConfidenceThreshold": {
          "type": "number"
        },
        "autoDeployExpirationSec": {
          "type": "integer"
        },
        "autoDeployImpactedBaselineThreshold": {
          "type": "number"
        },
        "autoDeployLoadThreshold": {
          "type": "number"
        },
        "name": {
          "type": "string",
          "description": "The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy."
        }
      },
      "type": "object",
      "required": [
        "autoDeployConfidenceThreshold",
        "autoDeployExpirationSec",
        "autoDeployImpactedBaselineThreshold",
        "autoDeployLoadThreshold",
        "name"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdaptiveProtectionConfigResponse": {
      "description": "Configuration options for Cloud Armor Adaptive Protection (CAAP).",
      "properties": {
        "autoDeployConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfigResponse"
        },
        "layer7DdosDefenseConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResponse",
          "description": "If set to true, enables Cloud Armor Machine Learning."
        }
      },
      "type": "object",
      "required": [
        "autoDeployConfig",
        "layer7DdosDefenseConfig"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdvancedOptionsConfig": {
      "properties": {
        "jsonCustomConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig",
          "description": "Custom configuration to apply the JSON parsing. Only applicable when json_parsing is set to STANDARD."
        },
        "jsonParsing": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigJsonParsing"
        },
        "logLevel": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigLogLevel"
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig": {
      "properties": {
        "contentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of custom Content-Type header values to apply the JSON parsing. As per RFC 1341, a Content-Type header value has the following format: Content-Type := type \"/\" subtype *[\";\" parameter] When configuring a custom Content-Type header value, only the type/subtype needs to be specified, and the parameters should be excluded."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyAdvancedOptionsConfigJsonCustomConfigResponse": {
      "properties": {
        "contentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of custom Content-Type header values to apply the JSON parsing. As per RFC 1341, a Content-Type header value has the following format: Content-Type := type \"/\" subtype *[\";\" parameter] When configuring a custom Content-Type header value, only the type/subtype needs to be specified, and the parameters should be excluded."
        }
      },
      "type": "object",
      "required": [
        "contentTypes"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdvancedOptionsConfigJsonParsing": {
      "type": "string",
      "enum": [
        {
          "name": "Disabled",
          "value": "DISABLED"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        },
        {
          "name": "StandardWithGraphql",
          "value": "STANDARD_WITH_GRAPHQL"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdvancedOptionsConfigLogLevel": {
      "type": "string",
      "enum": [
        {
          "name": "Normal",
          "value": "NORMAL"
        },
        {
          "name": "Verbose",
          "value": "VERBOSE"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAdvancedOptionsConfigResponse": {
      "properties": {
        "jsonCustomConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigJsonCustomConfigResponse",
          "description": "Custom configuration to apply the JSON parsing. Only applicable when json_parsing is set to STANDARD."
        },
        "jsonParsing": {
          "type": "string"
        },
        "logLevel": {
          "type": "string"
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "jsonCustomConfig",
        "jsonParsing",
        "logLevel",
        "userIpRequestHeaders"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyAssociation": {
      "properties": {
        "attachmentId": {
          "type": "string",
          "description": "The resource that the security policy is attached to."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyAssociationResponse": {
      "properties": {
        "attachmentId": {
          "type": "string",
          "description": "The resource that the security policy is attached to."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the security policy of the association."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        },
        "securityPolicyId": {
          "type": "string",
          "description": "The security policy ID of the association."
        }
      },
      "type": "object",
      "required": [
        "attachmentId",
        "displayName",
        "name",
        "securityPolicyId"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyCloudArmorConfig": {
      "description": "Configuration options for Cloud Armor.",
      "properties": {
        "enableMl": {
          "type": "boolean",
          "description": "If set to true, enables Cloud Armor Machine Learning."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyCloudArmorConfigResponse": {
      "description": "Configuration options for Cloud Armor.",
      "properties": {
        "enableMl": {
          "type": "boolean",
          "description": "If set to true, enables Cloud Armor Machine Learning."
        }
      },
      "type": "object",
      "required": [
        "enableMl"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyDdosProtectionConfig": {
      "properties": {
        "ddosProtection": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfigDdosProtection"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyDdosProtectionConfigDdosProtection": {
      "type": "string",
      "enum": [
        {
          "name": "Advanced",
          "value": "ADVANCED"
        },
        {
          "name": "AdvancedPreview",
          "value": "ADVANCED_PREVIEW"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyDdosProtectionConfigResponse": {
      "properties": {
        "ddosProtection": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "ddosProtection"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRecaptchaOptionsConfig": {
      "properties": {
        "redirectSiteKey": {
          "type": "string",
          "description": "An optional 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. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRecaptchaOptionsConfigResponse": {
      "properties": {
        "redirectSiteKey": {
          "type": "string",
          "description": "An optional 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. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        }
      },
      "type": "object",
      "required": [
        "redirectSiteKey"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRule": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the rule is matched. The following are the valid actions: - allow: allow access to target. - deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for `STATUS` are 403, 404, and 502. - 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 rate_limit_options to be set. - 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. - throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rate_limit_options to be set for this. "
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleDirection",
          "description": "The direction in which this rule applies. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules. This field may only be specified when the versioned_expr is set to FIREWALL."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleHttpHeaderAction",
          "description": "Optional, additional actions that are performed on headers. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcher",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "networkMatch": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleNetworkMatcher",
          "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). Field 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. Each 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. For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. Example: networkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\" The 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 \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive."
        },
        "preconfiguredWafConfig": {
          "$ref": "#/types/google-native:compute%2Falpha: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."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, the specified action is not enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority."
        },
        "rateLimitOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptions",
          "description": "Must be specified if the action is \"rate_based_ban\" or \"throttle\". Cannot be specified for any other actions."
        },
        "redirectOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRedirectOptions",
          "description": "Parameters defining the redirect action. Cannot be specified for any other actions. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "redirectTarget": {
          "type": "string",
          "description": "This must be specified for redirect actions. Cannot be specified for any other actions."
        },
        "ruleNumber": {
          "type": "string",
          "description": "Identifier for the rule. This is only unique within the given security policy. This can only be set during rule creation, if rule number is not specified it will be generated by the server."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleDirection": {
      "description": "The direction in which this rule applies. This field may only be specified when versioned_expr is set to FIREWALL.",
      "type": "string",
      "enum": [
        {
          "name": "Egress",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleHttpHeaderAction": {
      "properties": {
        "requestHeadersToAdds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleHttpHeaderActionHttpHeaderOption"
          },
          "description": "The list of request headers to add or overwrite if they're already present."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleHttpHeaderActionHttpHeaderOption": {
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header to set."
        },
        "headerValue": {
          "type": "string",
          "description": "The value to set the named header to."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleHttpHeaderActionHttpHeaderOptionResponse": {
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header to set."
        },
        "headerValue": {
          "type": "string",
          "description": "The value to set the named header to."
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "headerValue"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleHttpHeaderActionResponse": {
      "properties": {
        "requestHeadersToAdds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleHttpHeaderActionHttpHeaderOptionResponse"
          },
          "description": "The list of request headers to add or overwrite if they're already present."
        }
      },
      "type": "object",
      "required": [
        "requestHeadersToAdds"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcher": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherConfig",
          "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
        },
        "expr": {
          "$ref": "#/types/google-native:compute%2Falpha:Expr",
          "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. Expressions containing `evaluateThreatIntelligence` require Cloud Armor Managed Protection Plus tier and are not supported in Edge Policies nor in Regional Policies. Expressions containing `evaluatePreconfiguredExpr('sourceiplist-*')` require Cloud Armor Managed Protection Plus tier and are only supported in Global Security Policies."
        },
        "exprOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherExprOptions",
          "description": "The configuration options available when specifying a user defined CEVAL expression (i.e., 'expr')."
        },
        "versionedExpr": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherVersionedExpr",
          "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherConfig": {
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "destPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherConfigDestinationPort"
          },
          "description": "Pairs of IP protocols and ports that the rule should match. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherConfigLayer4Config"
          },
          "description": "Pairs of IP protocols and ports that the rule should match. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of src_ip_ranges allowed is 10."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherConfigDestinationPort": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]. This field may only be specified when versioned_expr is set to FIREWALL."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherConfigDestinationPortResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]. This field may only be specified when versioned_expr is set to FIREWALL."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherConfigLayer4Config": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]. This field may only be specified when versioned_expr is set to FIREWALL."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherConfigLayer4ConfigResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]. This field may only be specified when versioned_expr is set to FIREWALL."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherConfigResponse": {
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "destPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherConfigDestinationPortResponse"
          },
          "description": "Pairs of IP protocols and ports that the rule should match. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherConfigLayer4ConfigResponse"
          },
          "description": "Pairs of IP protocols and ports that the rule should match. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of src_ip_ranges allowed is 10."
        }
      },
      "type": "object",
      "required": [
        "destIpRanges",
        "destPorts",
        "layer4Configs",
        "srcIpRanges"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherExprOptions": {
      "properties": {
        "recaptchaOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherExprOptionsRecaptchaOptions",
          "description": "reCAPTCHA configuration options to be applied for the rule. If the rule does not evaluate reCAPTCHA tokens, this field will have no effect."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherExprOptionsRecaptchaOptions": {
      "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherExprOptionsRecaptchaOptionsResponse": {
      "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "actionTokenSiteKeys",
        "sessionTokenSiteKeys"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherExprOptionsResponse": {
      "properties": {
        "recaptchaOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherExprOptionsRecaptchaOptionsResponse",
          "description": "reCAPTCHA configuration options to be applied for the rule. If the rule does not evaluate reCAPTCHA tokens, this field will have no effect."
        }
      },
      "type": "object",
      "required": [
        "recaptchaOptions"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherResponse": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherConfigResponse",
          "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
        },
        "expr": {
          "$ref": "#/types/google-native:compute%2Falpha:ExprResponse",
          "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. Expressions containing `evaluateThreatIntelligence` require Cloud Armor Managed Protection Plus tier and are not supported in Edge Policies nor in Regional Policies. Expressions containing `evaluatePreconfiguredExpr('sourceiplist-*')` require Cloud Armor Managed Protection Plus tier and are only supported in Global Security Policies."
        },
        "exprOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherExprOptionsResponse",
          "description": "The configuration options available when specifying a user defined CEVAL expression (i.e., 'expr')."
        },
        "versionedExpr": {
          "type": "string",
          "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config."
        }
      },
      "type": "object",
      "required": [
        "config",
        "expr",
        "exprOptions",
        "versionedExpr"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleMatcherVersionedExpr": {
      "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config.",
      "type": "string",
      "enum": [
        {
          "name": "Firewall",
          "value": "FIREWALL"
        },
        {
          "name": "SrcIpsV1",
          "description": "Matches the source IP address of a request to the IP ranges supplied in config.",
          "value": "SRC_IPS_V1"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleNetworkMatcher": {
      "description": "Represents a match condition that incoming network traffic is evaluated against.",
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "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\"."
        },
        "srcAsns": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "BGP Autonomous System Number associated with the source IP address."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "srcRegionCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatch"
          },
          "description": "User-defined fields. Each element names a defined field and lists the matching values for that field."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleNetworkMatcherResponse": {
      "description": "Represents a match condition that incoming network traffic is evaluated against.",
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "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\"."
        },
        "srcAsns": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "BGP Autonomous System Number associated with the source IP address."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "srcRegionCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatchResponse"
          },
          "description": "User-defined fields. Each element names a defined field and lists the matching values for that field."
        }
      },
      "type": "object",
      "required": [
        "destIpRanges",
        "destPorts",
        "ipProtocols",
        "srcAsns",
        "srcIpRanges",
        "srcPorts",
        "srcRegionCodes",
        "userDefinedFields"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatch": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the user-defined field, as given in the definition."
        },
        "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\")."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatchResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the user-defined field, as given in the definition."
        },
        "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\")."
        }
      },
      "type": "object",
      "required": [
        "name",
        "values"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRulePreconfiguredWafConfig": {
      "properties": {
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusion"
          },
          "description": "A list of exclusions to apply during preconfigured WAF evaluation."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRulePreconfiguredWafConfigExclusion": {
      "properties": {
        "requestCookiesToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request cookie names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestHeadersToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request header names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestQueryParamsToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request query parameter names whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body."
        },
        "requestUrisToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request URIs from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded."
        },
        "targetRuleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set."
        },
        "targetRuleSet": {
          "type": "string",
          "description": "Target WAF rule set to apply the preconfigured WAF exclusion."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams": {
      "properties": {
        "op": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp",
          "description": "The match operator for the field."
        },
        "val": {
          "type": "string",
          "description": "The value of the field."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp": {
      "description": "The match operator for the field.",
      "type": "string",
      "enum": [
        {
          "name": "Contains",
          "description": "The operator matches if the field value contains the specified value.",
          "value": "CONTAINS"
        },
        {
          "name": "EndsWith",
          "description": "The operator matches if the field value ends with the specified value.",
          "value": "ENDS_WITH"
        },
        {
          "name": "Equals",
          "description": "The operator matches if the field value equals the specified value.",
          "value": "EQUALS"
        },
        {
          "name": "EqualsAny",
          "description": "The operator matches if the field value is any value.",
          "value": "EQUALS_ANY"
        },
        {
          "name": "StartsWith",
          "description": "The operator matches if the field value starts with the specified value.",
          "value": "STARTS_WITH"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse": {
      "properties": {
        "op": {
          "type": "string",
          "description": "The match operator for the field."
        },
        "val": {
          "type": "string",
          "description": "The value of the field."
        }
      },
      "type": "object",
      "required": [
        "op",
        "val"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRulePreconfiguredWafConfigExclusionResponse": {
      "properties": {
        "requestCookiesToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request cookie names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestHeadersToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request header names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestQueryParamsToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request query parameter names whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body."
        },
        "requestUrisToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request URIs from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded."
        },
        "targetRuleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set."
        },
        "targetRuleSet": {
          "type": "string",
          "description": "Target WAF rule set to apply the preconfigured WAF exclusion."
        }
      },
      "type": "object",
      "required": [
        "requestCookiesToExclude",
        "requestHeadersToExclude",
        "requestQueryParamsToExclude",
        "requestUrisToExclude",
        "targetRuleIds",
        "targetRuleSet"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRulePreconfiguredWafConfigResponse": {
      "properties": {
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigExclusionResponse"
          },
          "description": "A list of exclusions to apply during preconfigured WAF evaluation."
        }
      },
      "type": "object",
      "required": [
        "exclusions"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptions": {
      "properties": {
        "banDurationSec": {
          "type": "integer",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold."
        },
        "banThreshold": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsThreshold",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, the key will be banned for the configured 'ban_duration_sec' when the number of requests that exceed the 'rate_limit_threshold' also exceed this 'ban_threshold'."
        },
        "conformAction": {
          "type": "string",
          "description": "Action to take for requests that are under the configured rate limit threshold. Valid option is \"allow\" only."
        },
        "enforceOnKey": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsEnforceOnKey",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        },
        "enforceOnKeyConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig"
          },
          "description": "If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which ratelimit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If enforce_on_key_configs is specified, enforce_on_key must not be specified."
        },
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "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. Valid options are `deny(STATUS)`, where valid values for `STATUS` are 403, 404, 429, and 502, and `redirect`, where the redirect parameters come from `exceedRedirectOptions` below. The `redirect` action is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "exceedActionRpcStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsRpcStatus",
          "description": "Specified gRPC response status for proxyless gRPC requests that are above the configured rate limit threshold"
        },
        "exceedRedirectOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRedirectOptions",
          "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."
        },
        "rateLimitThreshold": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsThreshold",
          "description": "Threshold at which to begin ratelimiting."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsEnforceOnKey": {
      "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "value": "ALL"
        },
        {
          "name": "AllIps",
          "value": "ALL_IPS"
        },
        {
          "name": "HttpCookie",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "HttpHeader",
          "value": "HTTP_HEADER"
        },
        {
          "name": "HttpPath",
          "value": "HTTP_PATH"
        },
        {
          "name": "Ip",
          "value": "IP"
        },
        {
          "name": "RegionCode",
          "value": "REGION_CODE"
        },
        {
          "name": "Sni",
          "value": "SNI"
        },
        {
          "name": "XffIp",
          "value": "XFF_IP"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig": {
      "properties": {
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "enforceOnKeyType": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType": {
      "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "value": "ALL"
        },
        {
          "name": "AllIps",
          "value": "ALL_IPS"
        },
        {
          "name": "HttpCookie",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "HttpHeader",
          "value": "HTTP_HEADER"
        },
        {
          "name": "HttpPath",
          "value": "HTTP_PATH"
        },
        {
          "name": "Ip",
          "value": "IP"
        },
        {
          "name": "RegionCode",
          "value": "REGION_CODE"
        },
        {
          "name": "Sni",
          "value": "SNI"
        },
        {
          "name": "XffIp",
          "value": "XFF_IP"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigResponse": {
      "properties": {
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "enforceOnKeyType": {
          "type": "string",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        }
      },
      "type": "object",
      "required": [
        "enforceOnKeyName",
        "enforceOnKeyType"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsResponse": {
      "properties": {
        "banDurationSec": {
          "type": "integer",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold."
        },
        "banThreshold": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsThresholdResponse",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, the key will be banned for the configured 'ban_duration_sec' when the number of requests that exceed the 'rate_limit_threshold' also exceed this 'ban_threshold'."
        },
        "conformAction": {
          "type": "string",
          "description": "Action to take for requests that are under the configured rate limit threshold. Valid option is \"allow\" only."
        },
        "enforceOnKey": {
          "type": "string",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        },
        "enforceOnKeyConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigResponse"
          },
          "description": "If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which ratelimit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If enforce_on_key_configs is specified, enforce_on_key must not be specified."
        },
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "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. Valid options are `deny(STATUS)`, where valid values for `STATUS` are 403, 404, 429, and 502, and `redirect`, where the redirect parameters come from `exceedRedirectOptions` below. The `redirect` action is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "exceedActionRpcStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsRpcStatusResponse",
          "description": "Specified gRPC response status for proxyless gRPC requests that are above the configured rate limit threshold"
        },
        "exceedRedirectOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRedirectOptionsResponse",
          "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."
        },
        "rateLimitThreshold": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsThresholdResponse",
          "description": "Threshold at which to begin ratelimiting."
        }
      },
      "type": "object",
      "required": [
        "banDurationSec",
        "banThreshold",
        "conformAction",
        "enforceOnKey",
        "enforceOnKeyConfigs",
        "enforceOnKeyName",
        "exceedAction",
        "exceedActionRpcStatus",
        "exceedRedirectOptions",
        "rateLimitThreshold"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsRpcStatus": {
      "description": "Simplified google.rpc.Status type (omitting details).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsRpcStatusResponse": {
      "description": "Simplified google.rpc.Status type (omitting details).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English."
        }
      },
      "type": "object",
      "required": [
        "code",
        "message"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsThreshold": {
      "properties": {
        "count": {
          "type": "integer",
          "description": "Number of HTTP(S) requests for calculating the threshold."
        },
        "intervalSec": {
          "type": "integer",
          "description": "Interval over which the threshold is computed."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleRateLimitOptionsThresholdResponse": {
      "properties": {
        "count": {
          "type": "integer",
          "description": "Number of HTTP(S) requests for calculating the threshold."
        },
        "intervalSec": {
          "type": "integer",
          "description": "Interval over which the threshold is computed."
        }
      },
      "type": "object",
      "required": [
        "count",
        "intervalSec"
      ]
    },
    "google-native:compute/alpha: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."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRedirectOptionsType",
          "description": "Type of the redirect action."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyRuleRedirectOptionsResponse": {
      "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."
        },
        "type": {
          "type": "string",
          "description": "Type of the redirect action."
        }
      },
      "type": "object",
      "required": [
        "target",
        "type"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleRedirectOptionsType": {
      "description": "Type of the redirect action.",
      "type": "string",
      "enum": [
        {
          "name": "External302",
          "value": "EXTERNAL_302"
        },
        {
          "name": "GoogleRecaptcha",
          "value": "GOOGLE_RECAPTCHA"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyRuleResponse": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the rule is matched. The following are the valid actions: - allow: allow access to target. - deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for `STATUS` are 403, 404, and 502. - 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 rate_limit_options to be set. - 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. - throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rate_limit_options to be set for this. "
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "direction": {
          "type": "string",
          "description": "The direction in which this rule applies. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules. This field may only be specified when the versioned_expr is set to FIREWALL."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleHttpHeaderActionResponse",
          "description": "Optional, additional actions that are performed on headers. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyRule for security policy rules"
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleMatcherResponse",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "networkMatch": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleNetworkMatcherResponse",
          "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). Field 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. Each 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. For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. Example: networkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\" The 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 \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive."
        },
        "preconfiguredWafConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRulePreconfiguredWafConfigResponse",
          "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."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, the specified action is not enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority."
        },
        "rateLimitOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRateLimitOptionsResponse",
          "description": "Must be specified if the action is \"rate_based_ban\" or \"throttle\". Cannot be specified for any other actions."
        },
        "redirectOptions": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleRedirectOptionsResponse",
          "description": "Parameters defining the redirect action. Cannot be specified for any other actions. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "redirectTarget": {
          "type": "string",
          "description": "This must be specified for redirect actions. Cannot be specified for any other actions."
        },
        "ruleManagedProtectionTier": {
          "type": "string",
          "description": "The minimum managed protection tier required for this rule. [Deprecated] Use requiredManagedProtectionTiers instead.",
          "deprecationMessage": "[Output Only] The minimum managed protection tier required for this rule. [Deprecated] Use requiredManagedProtectionTiers instead."
        },
        "ruleNumber": {
          "type": "string",
          "description": "Identifier for the rule. This is only unique within the given security policy. This can only be set during rule creation, if rule number is not specified it will be generated by the server."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Calculation of the complexity of a single firewall security policy rule."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "direction",
        "enableLogging",
        "headerAction",
        "kind",
        "match",
        "networkMatch",
        "preconfiguredWafConfig",
        "preview",
        "priority",
        "rateLimitOptions",
        "redirectOptions",
        "redirectTarget",
        "ruleManagedProtectionTier",
        "ruleNumber",
        "ruleTupleCount",
        "targetResources",
        "targetServiceAccounts"
      ]
    },
    "google-native:compute/alpha:SecurityPolicyType": {
      "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
      "type": "string",
      "enum": [
        {
          "name": "CloudArmor",
          "value": "CLOUD_ARMOR"
        },
        {
          "name": "CloudArmorEdge",
          "value": "CLOUD_ARMOR_EDGE"
        },
        {
          "name": "CloudArmorInternalService",
          "value": "CLOUD_ARMOR_INTERNAL_SERVICE"
        },
        {
          "name": "CloudArmorNetwork",
          "value": "CLOUD_ARMOR_NETWORK"
        },
        {
          "name": "Firewall",
          "value": "FIREWALL"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyUserDefinedField": {
      "properties": {
        "base": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedFieldBase",
          "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required"
        },
        "mask": {
          "type": "string",
          "description": "If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. Encoded as a hexadecimal number (starting with \"0x\"). The last byte of the field (in network byte order) corresponds to the least significant byte of the mask."
        },
        "name": {
          "type": "string",
          "description": "The name of this field. Must be unique within the policy."
        },
        "offset": {
          "type": "integer",
          "description": "Offset of the first byte of the field (in network byte order) relative to 'base'."
        },
        "size": {
          "type": "integer",
          "description": "Size of the field in bytes. Valid values: 1-4."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecurityPolicyUserDefinedFieldBase": {
      "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/alpha:SecurityPolicyUserDefinedFieldResponse": {
      "properties": {
        "base": {
          "type": "string",
          "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required"
        },
        "mask": {
          "type": "string",
          "description": "If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. Encoded as a hexadecimal number (starting with \"0x\"). The last byte of the field (in network byte order) corresponds to the least significant byte of the mask."
        },
        "name": {
          "type": "string",
          "description": "The name of this field. Must be unique within the policy."
        },
        "offset": {
          "type": "integer",
          "description": "Offset of the first byte of the field (in network byte order) relative to 'base'."
        },
        "size": {
          "type": "integer",
          "description": "Size of the field in bytes. Valid values: 1-4."
        }
      },
      "type": "object",
      "required": [
        "base",
        "mask",
        "name",
        "offset",
        "size"
      ]
    },
    "google-native:compute/alpha:SecuritySettings": {
      "description": "The authentication and authorization settings for a BackendService.",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use clientTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use clientTlsPolicy instead."
        },
        "authenticationPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:AuthenticationPolicy",
          "description": "[Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal.",
          "deprecationMessage": "[Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal."
        },
        "authorizationConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:AuthorizationConfig",
          "description": "[Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config.",
          "deprecationMessage": "[Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config."
        },
        "awsV4Authentication": {
          "$ref": "#/types/google-native:compute%2Falpha:AWSV4Signature",
          "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication. Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service's backends. clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left blank, communications are not encrypted."
        },
        "clientTlsSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ClientTlsSettings",
          "description": "[Deprecated] TLS Settings for the backend service.",
          "deprecationMessage": "[Deprecated] TLS Settings for the backend service."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate's subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service. Note that the contents of the server certificate's subjectAltName field are configured by the Public Key Infrastructure which provisions server identities. Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode)."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SecuritySettingsResponse": {
      "description": "The authentication and authorization settings for a BackendService.",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use clientTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use clientTlsPolicy instead."
        },
        "authenticationPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:AuthenticationPolicyResponse",
          "description": "[Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal.",
          "deprecationMessage": "[Deprecated] Authentication policy defines what authentication methods can be accepted on backends, and if authenticated, which method/certificate will set the request principal. request principal."
        },
        "authorizationConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:AuthorizationConfigResponse",
          "description": "[Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config.",
          "deprecationMessage": "[Deprecated] Authorization config defines the Role Based Access Control (RBAC) config. Authorization config defines the Role Based Access Control (RBAC) config."
        },
        "awsV4Authentication": {
          "$ref": "#/types/google-native:compute%2Falpha:AWSV4SignatureResponse",
          "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication. Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service's backends. clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left blank, communications are not encrypted."
        },
        "clientTlsSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ClientTlsSettingsResponse",
          "description": "[Deprecated] TLS Settings for the backend service.",
          "deprecationMessage": "[Deprecated] TLS Settings for the backend service."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate's subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service. Note that the contents of the server certificate's subjectAltName field are configured by the Public Key Infrastructure which provisions server identities. Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode)."
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "authenticationPolicy",
        "authorizationConfig",
        "awsV4Authentication",
        "clientTlsPolicy",
        "clientTlsSettings",
        "subjectAltNames"
      ]
    },
    "google-native:compute/alpha:ServerBinding": {
      "properties": {
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:ServerBindingType"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ServerBindingResponse": {
      "properties": {
        "type": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:compute/alpha:ServerBindingType": {
      "type": "string",
      "enum": [
        {
          "name": "RestartNodeOnAnyServer",
          "description": "Node may associate with any physical server over its lifetime.",
          "value": "RESTART_NODE_ON_ANY_SERVER"
        },
        {
          "name": "RestartNodeOnMinimalServers",
          "description": "Node may associate with minimal physical servers over its lifetime.",
          "value": "RESTART_NODE_ON_MINIMAL_SERVERS"
        },
        {
          "name": "ServerBindingTypeUnspecified",
          "value": "SERVER_BINDING_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:ServerTlsSettings": {
      "description": "The TLS settings for the server.",
      "properties": {
        "proxyTlsContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsContext",
          "description": "Configures the mechanism to obtain security certificates and identity information."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of alternate names to verify the subject identity in the certificate presented by the client."
        },
        "tlsMode": {
          "$ref": "#/types/google-native:compute%2Falpha:ServerTlsSettingsTlsMode",
          "description": "Indicates whether connections should be secured using TLS. The value of this field determines how TLS is enforced. This field can be set to one of the following: - SIMPLE Secure connections with standard TLS semantics. - MUTUAL Secure connections to the backends using mutual TLS by presenting client certificates for authentication. "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ServerTlsSettingsResponse": {
      "description": "The TLS settings for the server.",
      "properties": {
        "proxyTlsContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsContextResponse",
          "description": "Configures the mechanism to obtain security certificates and identity information."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of alternate names to verify the subject identity in the certificate presented by the client."
        },
        "tlsMode": {
          "type": "string",
          "description": "Indicates whether connections should be secured using TLS. The value of this field determines how TLS is enforced. This field can be set to one of the following: - SIMPLE Secure connections with standard TLS semantics. - MUTUAL Secure connections to the backends using mutual TLS by presenting client certificates for authentication. "
        }
      },
      "type": "object",
      "required": [
        "proxyTlsContext",
        "subjectAltNames",
        "tlsMode"
      ]
    },
    "google-native:compute/alpha:ServerTlsSettingsTlsMode": {
      "description": "Indicates whether connections should be secured using TLS. The value of this field determines how TLS is enforced. This field can be set to one of the following: - SIMPLE Secure connections with standard TLS semantics. - MUTUAL Secure connections to the backends using mutual TLS by presenting client certificates for authentication. ",
      "type": "string",
      "enum": [
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Mutual",
          "description": "Secure connections to the backends using mutual TLS by presenting client certificates for authentication.",
          "value": "MUTUAL"
        },
        {
          "name": "Simple",
          "description": "Secure connections with standard TLS semantics.",
          "value": "SIMPLE"
        }
      ]
    },
    "google-native:compute/alpha:ServiceAccount": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ServiceAccountResponse": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account."
        }
      },
      "type": "object",
      "required": [
        "email",
        "scopes"
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentConnectedEndpointResponse": {
      "description": "[Output Only] A connection connected to this service attachment.",
      "properties": {
        "consumerNetwork": {
          "type": "string",
          "description": "The url of the consumer network."
        },
        "endpoint": {
          "type": "string",
          "description": "The url of a connected endpoint."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the connected endpoint."
        },
        "status": {
          "type": "string",
          "description": "The status of a connected endpoint to this service attachment."
        }
      },
      "type": "object",
      "required": [
        "consumerNetwork",
        "endpoint",
        "pscConnectionId",
        "status"
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentConnectionPreference": {
      "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules.",
      "type": "string",
      "enum": [
        {
          "name": "AcceptAutomatic",
          "value": "ACCEPT_AUTOMATIC"
        },
        {
          "name": "AcceptManual",
          "value": "ACCEPT_MANUAL"
        },
        {
          "name": "ConnectionPreferenceUnspecified",
          "value": "CONNECTION_PREFERENCE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentConsumerProjectLimit": {
      "properties": {
        "connectionLimit": {
          "type": "integer",
          "description": "The value of the limit to set."
        },
        "networkUrl": {
          "type": "string",
          "description": "The network URL for the network to set the limit for."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number for the project to set the limit for."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ServiceAttachmentConsumerProjectLimitResponse": {
      "properties": {
        "connectionLimit": {
          "type": "integer",
          "description": "The value of the limit to set."
        },
        "networkUrl": {
          "type": "string",
          "description": "The network URL for the network to set the limit for."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number for the project to set the limit for."
        }
      },
      "type": "object",
      "required": [
        "connectionLimit",
        "networkUrl",
        "projectIdOrNum"
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentTunnelingConfig": {
      "description": "Use to configure this PSC connection in tunneling mode. In tunneling mode traffic from consumer to producer will be encapsulated as it crosses the VPC boundary and traffic from producer to consumer will be decapsulated in the same manner.",
      "properties": {
        "encapsulationProfile": {
          "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentTunnelingConfigEncapsulationProfile",
          "description": "Specify the encapsulation protocol and what metadata to include in incoming encapsulated packet headers."
        },
        "routingMode": {
          "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentTunnelingConfigRoutingMode",
          "description": "How this Service Attachment will treat traffic sent to the tunnel_ip, destined for the consumer network."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ServiceAttachmentTunnelingConfigEncapsulationProfile": {
      "description": "Specify the encapsulation protocol and what metadata to include in incoming encapsulated packet headers.",
      "type": "string",
      "enum": [
        {
          "name": "GeneveSecurityV1",
          "description": "Use GENEVE encapsulation protocol and include the SECURITY_V1 set of GENEVE headers.",
          "value": "GENEVE_SECURITY_V1"
        },
        {
          "name": "UnspecifiedEncapsulationProfile",
          "value": "UNSPECIFIED_ENCAPSULATION_PROFILE"
        }
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentTunnelingConfigResponse": {
      "description": "Use to configure this PSC connection in tunneling mode. In tunneling mode traffic from consumer to producer will be encapsulated as it crosses the VPC boundary and traffic from producer to consumer will be decapsulated in the same manner.",
      "properties": {
        "encapsulationProfile": {
          "type": "string",
          "description": "Specify the encapsulation protocol and what metadata to include in incoming encapsulated packet headers."
        },
        "routingMode": {
          "type": "string",
          "description": "How this Service Attachment will treat traffic sent to the tunnel_ip, destined for the consumer network."
        }
      },
      "type": "object",
      "required": [
        "encapsulationProfile",
        "routingMode"
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentTunnelingConfigRoutingMode": {
      "description": "How this Service Attachment will treat traffic sent to the tunnel_ip, destined for the consumer network.",
      "type": "string",
      "enum": [
        {
          "name": "PacketInjection",
          "description": "Traffic sent to this service attachment will be reinjected into the consumer network.",
          "value": "PACKET_INJECTION"
        },
        {
          "name": "StandardRouting",
          "description": "Response traffic, after de-encapsulation, will be returned to the client.",
          "value": "STANDARD_ROUTING"
        },
        {
          "name": "UnspecifiedRoutingMode",
          "value": "UNSPECIFIED_ROUTING_MODE"
        }
      ]
    },
    "google-native:compute/alpha:ShareSettings": {
      "description": "The share setting for reservations and sole tenancy node groups.",
      "properties": {
        "folderMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of folder id and folder config to specify consumer projects for this shared-reservation. This is only valid when share_type's value is DIRECT_PROJECTS_UNDER_SPECIFIC_FOLDERS. Folder id should be a string of number, and without \"folders/\" prefix."
        },
        "projectMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of project id and project config. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A List of Project names to specify consumer projects for this shared-reservation. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "shareType": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsShareType",
          "description": "Type of sharing for this shared-reservation"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ShareSettingsResponse": {
      "description": "The share setting for reservations and sole tenancy node groups.",
      "properties": {
        "folderMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of folder id and folder config to specify consumer projects for this shared-reservation. This is only valid when share_type's value is DIRECT_PROJECTS_UNDER_SPECIFIC_FOLDERS. Folder id should be a string of number, and without \"folders/\" prefix."
        },
        "projectMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of project id and project config. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A List of Project names to specify consumer projects for this shared-reservation. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "shareType": {
          "type": "string",
          "description": "Type of sharing for this shared-reservation"
        }
      },
      "type": "object",
      "required": [
        "folderMap",
        "projectMap",
        "projects",
        "shareType"
      ]
    },
    "google-native:compute/alpha:ShareSettingsShareType": {
      "description": "Type of sharing for this shared-reservation",
      "type": "string",
      "enum": [
        {
          "name": "DirectProjectsUnderSpecificFolders",
          "description": "Shared-reservation is open to direct child projects of specific folders.",
          "value": "DIRECT_PROJECTS_UNDER_SPECIFIC_FOLDERS"
        },
        {
          "name": "Local",
          "description": "Default value.",
          "value": "LOCAL"
        },
        {
          "name": "Organization",
          "description": "Shared-reservation is open to entire Organization",
          "value": "ORGANIZATION"
        },
        {
          "name": "ShareTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "SHARE_TYPE_UNSPECIFIED"
        },
        {
          "name": "SpecificProjects",
          "description": "Shared-reservation is open to specific projects",
          "value": "SPECIFIC_PROJECTS"
        }
      ]
    },
    "google-native:compute/alpha:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:compute/alpha:ShieldedInstanceIntegrityPolicy": {
      "description": "The policy describes the baseline against which Instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ShieldedInstanceIntegrityPolicyResponse": {
      "description": "The policy describes the baseline against which Instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object",
      "required": [
        "updateAutoLearnPolicy"
      ]
    },
    "google-native:compute/alpha:ShieldedVmConfig": {
      "description": "A set of Shielded VM options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ShieldedVmConfigResponse": {
      "description": "A set of Shielded VM options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:compute/alpha:ShieldedVmIntegrityPolicy": {
      "description": "The policy describes the baseline against which VM instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:ShieldedVmIntegrityPolicyResponse": {
      "description": "The policy describes the baseline against which VM instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object",
      "required": [
        "updateAutoLearnPolicy"
      ]
    },
    "google-native:compute/alpha:SnapshotSnapshotType": {
      "description": "Indicates the type of the snapshot.",
      "type": "string",
      "enum": [
        {
          "name": "Archive",
          "value": "ARCHIVE"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/alpha:SourceDiskEncryptionKey": {
      "properties": {
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the disk attached to the source instance. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SourceDiskEncryptionKeyResponse": {
      "properties": {
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the disk attached to the source instance. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object",
      "required": [
        "diskEncryptionKey",
        "sourceDisk"
      ]
    },
    "google-native:compute/alpha:SourceInstanceParams": {
      "description": "A specification of the parameters to use when creating the instance template from a source instance.",
      "properties": {
        "diskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:DiskInstantiationConfig"
          },
          "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, the source images for each disk will be used. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SourceInstanceParamsResponse": {
      "description": "A specification of the parameters to use when creating the instance template from a source instance.",
      "properties": {
        "diskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:DiskInstantiationConfigResponse"
          },
          "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, the source images for each disk will be used. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes."
        }
      },
      "type": "object",
      "required": [
        "diskConfigs"
      ]
    },
    "google-native:compute/alpha:SourceInstancePropertiesResponse": {
      "description": "DEPRECATED: Please use compute#instanceProperties instead. New properties will not be added to this field.",
      "properties": {
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on this machine image to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the instance created from this machine image should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from this machine image."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SavedAttachedDiskResponse"
          },
          "description": "An array of disks that are associated with the instances that are created from this machine image."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfigResponse"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from this machine image."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from this machine image."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from this machine image."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Falpha:MetadataResponse",
          "description": "The metadata key/value pairs to assign to instances that are created from this machine image. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances created from this machine image. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceResponse"
          },
          "description": "An array of network access configurations for this interface."
        },
        "postKeyRevocationActionType": {
          "type": "string",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingResponse",
          "description": "Specifies the scheduling options for the instances that are created from this machine image."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAccountResponse"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this machine image. Use metadata queries to obtain the access tokens for these instances."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Falpha:TagsResponse",
          "description": "A list of tags to apply to the instances that are created from this machine image. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "canIpForward",
        "deletionProtection",
        "description",
        "disks",
        "guestAccelerators",
        "keyRevocationActionType",
        "labels",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "networkInterfaces",
        "postKeyRevocationActionType",
        "scheduling",
        "serviceAccounts",
        "tags"
      ]
    },
    "google-native:compute/alpha:SslCertificateManagedSslCertificate": {
      "description": "Configuration and status of a managed SSL certificate.",
      "properties": {
        "domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The domains for which a managed SSL certificate will be generated. Each Google-managed SSL certificate supports up to the [maximum number of domains per Google-managed SSL certificate](/load-balancing/docs/quotas#ssl_certificates)."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SslCertificateManagedSslCertificateResponse": {
      "description": "Configuration and status of a managed SSL certificate.",
      "properties": {
        "domainStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Output only] Detailed statuses of the domains specified for managed certificate resource."
        },
        "domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The domains for which a managed SSL certificate will be generated. Each Google-managed SSL certificate supports up to the [maximum number of domains per Google-managed SSL certificate](/load-balancing/docs/quotas#ssl_certificates)."
        },
        "status": {
          "type": "string",
          "description": "[Output only] Status of the managed certificate resource."
        }
      },
      "type": "object",
      "required": [
        "domainStatus",
        "domains",
        "status"
      ]
    },
    "google-native:compute/alpha:SslCertificateSelfManagedSslCertificate": {
      "description": "Configuration and status of a self-managed SSL certificate.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "privateKey": {
          "type": "string",
          "description": "A write-only private key in PEM format. Only insert requests will include this field."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SslCertificateSelfManagedSslCertificateResponse": {
      "description": "Configuration and status of a self-managed SSL certificate.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "privateKey": {
          "type": "string",
          "description": "A write-only private key in PEM format. Only insert requests will include this field."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "privateKey"
      ]
    },
    "google-native:compute/alpha:SslCertificateType": {
      "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
      "type": "string",
      "enum": [
        {
          "name": "Managed",
          "description": "Google-managed SSLCertificate.",
          "value": "MANAGED"
        },
        {
          "name": "SelfManaged",
          "description": "Certificate uploaded by user.",
          "value": "SELF_MANAGED"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:SslPolicyMinTlsVersion": {
      "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
      "type": "string",
      "enum": [
        {
          "name": "Tls10",
          "description": "TLS 1.0",
          "value": "TLS_1_0"
        },
        {
          "name": "Tls11",
          "description": "TLS 1.1",
          "value": "TLS_1_1"
        },
        {
          "name": "Tls12",
          "description": "TLS 1.2",
          "value": "TLS_1_2"
        }
      ]
    },
    "google-native:compute/alpha:SslPolicyProfile": {
      "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
      "type": "string",
      "enum": [
        {
          "name": "Compatible",
          "description": "Compatible profile. Allows the broadset set of clients, even those which support only out-of-date SSL features to negotiate with the load balancer.",
          "value": "COMPATIBLE"
        },
        {
          "name": "Custom",
          "description": "Custom profile. Allow only the set of allowed SSL features specified in the customFeatures field.",
          "value": "CUSTOM"
        },
        {
          "name": "Modern",
          "description": "Modern profile. Supports a wide set of SSL features, allowing modern clients to negotiate SSL with the load balancer.",
          "value": "MODERN"
        },
        {
          "name": "Restricted",
          "description": "Restricted profile. Supports a reduced set of SSL features, intended to meet stricter compliance requirements.",
          "value": "RESTRICTED"
        }
      ]
    },
    "google-native:compute/alpha:SslPolicyWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/alpha:SslPolicyWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SslPolicyWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/alpha:StatefulPolicy": {
      "properties": {
        "preservedState": {
          "$ref": "#/types/google-native:compute%2Falpha:StatefulPolicyPreservedState"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:StatefulPolicyPreservedState": {
      "description": "Configuration of preserved resources.",
      "properties": {
        "disks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Disks created on the instances that will be preserved on instance delete, update, etc. This map is keyed with the device names of the disks."
        },
        "externalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        },
        "internalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:StatefulPolicyPreservedStateResponse": {
      "description": "Configuration of preserved resources.",
      "properties": {
        "disks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Disks created on the instances that will be preserved on instance delete, update, etc. This map is keyed with the device names of the disks."
        },
        "externalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        },
        "internalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        }
      },
      "type": "object",
      "required": [
        "disks",
        "externalIPs",
        "internalIPs"
      ]
    },
    "google-native:compute/alpha:StatefulPolicyResponse": {
      "properties": {
        "preservedState": {
          "$ref": "#/types/google-native:compute%2Falpha:StatefulPolicyPreservedStateResponse"
        }
      },
      "type": "object",
      "required": [
        "preservedState"
      ]
    },
    "google-native:compute/alpha:StoragePoolCapacityProvisioningType": {
      "description": "Provisioning type of the byte capacity of the pool.",
      "type": "string",
      "enum": [
        {
          "name": "Advanced",
          "description": "Advanced provisioning \"thinly\" allocates the related resource.",
          "value": "ADVANCED"
        },
        {
          "name": "Standard",
          "description": "Standard provisioning allocates the related resource for the pool disks' exclusive use.",
          "value": "STANDARD"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:StoragePoolPerformanceProvisioningType": {
      "description": "Provisioning type of the performance-related parameters of the pool, such as throughput and IOPS.",
      "type": "string",
      "enum": [
        {
          "name": "Advanced",
          "description": "Advanced provisioning \"thinly\" allocates the related resource.",
          "value": "ADVANCED"
        },
        {
          "name": "Standard",
          "description": "Standard provisioning allocates the related resource for the pool disks' exclusive use.",
          "value": "STANDARD"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/alpha:StoragePoolResourceStatusResponse": {
      "description": "[Output Only] Contains output only fields.",
      "properties": {
        "aggregateDiskProvisionedIops": {
          "type": "string",
          "description": "Sum of all the disks' provisioned IOPS."
        },
        "aggregateDiskSizeGb": {
          "type": "string",
          "description": "Sum of all the capacity provisioned in disks in this storage pool. A disk's provisioned capacity is the same as its total capacity."
        },
        "lastResizeTimestamp": {
          "type": "string",
          "description": "Timestamp of the last successful resize in RFC3339 text format."
        },
        "maxAggregateDiskSizeGb": {
          "type": "string",
          "description": "Maximum allowed aggregate disk size in gigabytes."
        },
        "numberOfDisks": {
          "type": "string",
          "description": "Number of disks used."
        },
        "usedBytes": {
          "type": "string",
          "description": "Space used by data stored in disks within the storage pool (in bytes)."
        },
        "usedReducedBytes": {
          "type": "string",
          "description": "Space used by compressed and deduped data stored in disks within the storage pool (in bytes)."
        },
        "usedThroughput": {
          "type": "string",
          "description": "Sum of all the disks' provisioned throughput in MB/s."
        }
      },
      "type": "object",
      "required": [
        "aggregateDiskProvisionedIops",
        "aggregateDiskSizeGb",
        "lastResizeTimestamp",
        "maxAggregateDiskSizeGb",
        "numberOfDisks",
        "usedBytes",
        "usedReducedBytes",
        "usedThroughput"
      ]
    },
    "google-native:compute/alpha:SubnetworkAggregationInterval": {
      "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Sets the aggregation interval for collecting flow logs. Increasing the interval time reduces the amount of generated flow logs for long-lasting connections. Default is an interval of 5 seconds per connection. Valid values: INTERVAL_5_SEC, INTERVAL_30_SEC, INTERVAL_1_MIN, INTERVAL_5_MIN, INTERVAL_10_MIN, INTERVAL_15_MIN.",
      "type": "string",
      "enum": [
        {
          "name": "Interval10Min",
          "value": "INTERVAL_10_MIN"
        },
        {
          "name": "Interval15Min",
          "value": "INTERVAL_15_MIN"
        },
        {
          "name": "Interval1Min",
          "value": "INTERVAL_1_MIN"
        },
        {
          "name": "Interval30Sec",
          "value": "INTERVAL_30_SEC"
        },
        {
          "name": "Interval5Min",
          "value": "INTERVAL_5_MIN"
        },
        {
          "name": "Interval5Sec",
          "value": "INTERVAL_5_SEC"
        }
      ]
    },
    "google-native:compute/alpha:SubnetworkIpv6AccessType": {
      "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "VMs on this subnet will be assigned IPv6 addresses that are accessible via the Internet, as well as the VPC network.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "VMs on this subnet will be assigned IPv6 addresses that are only accessible over the VPC network.",
          "value": "INTERNAL"
        }
      ]
    },
    "google-native:compute/alpha:SubnetworkLogConfig": {
      "description": "The available logging options for this subnetwork.",
      "properties": {
        "aggregationInterval": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkLogConfigAggregationInterval",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection."
        },
        "enable": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. Flow logging isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "filterExpr": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. The filter expression is used to define which VPC flow logs should be exported to Cloud Logging."
        },
        "flowSampling": {
          "type": "number",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkLogConfigMetadata",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA."
        },
        "metadataFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled and \"metadata\" was set to CUSTOM_METADATA."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SubnetworkLogConfigAggregationInterval": {
      "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection.",
      "type": "string",
      "enum": [
        {
          "name": "Interval10Min",
          "value": "INTERVAL_10_MIN"
        },
        {
          "name": "Interval15Min",
          "value": "INTERVAL_15_MIN"
        },
        {
          "name": "Interval1Min",
          "value": "INTERVAL_1_MIN"
        },
        {
          "name": "Interval30Sec",
          "value": "INTERVAL_30_SEC"
        },
        {
          "name": "Interval5Min",
          "value": "INTERVAL_5_MIN"
        },
        {
          "name": "Interval5Sec",
          "value": "INTERVAL_5_SEC"
        }
      ]
    },
    "google-native:compute/alpha:SubnetworkLogConfigMetadata": {
      "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA.",
      "type": "string",
      "enum": [
        {
          "name": "CustomMetadata",
          "value": "CUSTOM_METADATA"
        },
        {
          "name": "ExcludeAllMetadata",
          "value": "EXCLUDE_ALL_METADATA"
        },
        {
          "name": "IncludeAllMetadata",
          "value": "INCLUDE_ALL_METADATA"
        }
      ]
    },
    "google-native:compute/alpha:SubnetworkLogConfigResponse": {
      "description": "The available logging options for this subnetwork.",
      "properties": {
        "aggregationInterval": {
          "type": "string",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection."
        },
        "enable": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. Flow logging isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "filterExpr": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. The filter expression is used to define which VPC flow logs should be exported to Cloud Logging."
        },
        "flowSampling": {
          "type": "number",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported."
        },
        "metadata": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA."
        },
        "metadataFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled and \"metadata\" was set to CUSTOM_METADATA."
        }
      },
      "type": "object",
      "required": [
        "aggregationInterval",
        "enable",
        "filterExpr",
        "flowSampling",
        "metadata",
        "metadataFields"
      ]
    },
    "google-native:compute/alpha:SubnetworkMetadata": {
      "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Configures whether metadata fields should be added to the reported VPC flow logs. Options are INCLUDE_ALL_METADATA, EXCLUDE_ALL_METADATA, and CUSTOM_METADATA. Default is EXCLUDE_ALL_METADATA.",
      "type": "string",
      "enum": [
        {
          "name": "ExcludeAllMetadata",
          "value": "EXCLUDE_ALL_METADATA"
        },
        {
          "name": "IncludeAllMetadata",
          "value": "INCLUDE_ALL_METADATA"
        }
      ]
    },
    "google-native:compute/alpha:SubnetworkPrivateIpv6GoogleAccess": {
      "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch.",
      "type": "string",
      "enum": [
        {
          "name": "DisableGoogleAccess",
          "description": "Disable private IPv6 access to/from Google services.",
          "value": "DISABLE_GOOGLE_ACCESS"
        },
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        }
      ]
    },
    "google-native:compute/alpha:SubnetworkPurpose": {
      "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
      "type": "string",
      "enum": [
        {
          "name": "Aggregate",
          "description": "Subnetwork used to aggregate multiple private subnetworks.",
          "value": "AGGREGATE"
        },
        {
          "name": "CloudExtension",
          "description": "Subnetworks created for Cloud Extension Machines.",
          "value": "CLOUD_EXTENSION"
        },
        {
          "name": "GlobalManagedProxy",
          "description": "Subnet reserved for Global Envoy-based Load Balancing.",
          "value": "GLOBAL_MANAGED_PROXY"
        },
        {
          "name": "InternalHttpsLoadBalancer",
          "description": "Subnet reserved for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_HTTPS_LOAD_BALANCER"
        },
        {
          "name": "Private",
          "description": "Regular user created or automatically created subnet.",
          "value": "PRIVATE"
        },
        {
          "name": "PrivateNat",
          "description": "Subnetwork used as source range for Private NAT Gateways.",
          "value": "PRIVATE_NAT"
        },
        {
          "name": "PrivateRfc1918",
          "description": "Regular user created or automatically created subnet.",
          "value": "PRIVATE_RFC_1918"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "Subnetworks created for Private Service Connect in the producer network.",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "RegionalManagedProxy",
          "description": "Subnetwork used for Regional Envoy-based Load Balancing.",
          "value": "REGIONAL_MANAGED_PROXY"
        }
      ]
    },
    "google-native:compute/alpha:SubnetworkRole": {
      "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "description": "The ACTIVE subnet that is currently used.",
          "value": "ACTIVE"
        },
        {
          "name": "Backup",
          "description": "The BACKUP subnet that could be promoted to ACTIVE.",
          "value": "BACKUP"
        }
      ]
    },
    "google-native:compute/alpha:SubnetworkSecondaryRange": {
      "description": "Represents a secondary IP range of a subnetwork.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported. The range can be any range listed in the Valid ranges list."
        },
        "rangeName": {
          "type": "string",
          "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
        },
        "reservedInternalRange": {
          "type": "string",
          "description": "The URL of the reserved internal range."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SubnetworkSecondaryRangeResponse": {
      "description": "Represents a secondary IP range of a subnetwork.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported. The range can be any range listed in the Valid ranges list."
        },
        "rangeName": {
          "type": "string",
          "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
        },
        "reservedInternalRange": {
          "type": "string",
          "description": "The URL of the reserved internal range."
        }
      },
      "type": "object",
      "required": [
        "ipCidrRange",
        "rangeName",
        "reservedInternalRange"
      ]
    },
    "google-native:compute/alpha:SubnetworkStackType": {
      "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "New VMs in this subnet can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "New VMs in this subnet will only be assigned IPv4 addresses.",
          "value": "IPV4_ONLY"
        },
        {
          "name": "Ipv6Only",
          "description": "New VMs in this subnet will only be assigned IPv6 addresses.",
          "value": "IPV6_ONLY"
        }
      ]
    },
    "google-native:compute/alpha:Subsetting": {
      "description": "Subsetting configuration for this BackendService. Currently this is applicable only for Internal TCP/UDP load balancing, Internal HTTP(S) load balancing and Traffic Director.",
      "properties": {
        "policy": {
          "$ref": "#/types/google-native:compute%2Falpha:SubsettingPolicy"
        },
        "subsetSize": {
          "type": "integer",
          "description": "The number of backends per backend group assigned to each proxy instance or each service mesh client. An input parameter to the `CONSISTENT_HASH_SUBSETTING` algorithm. Can only be set if `policy` is set to `CONSISTENT_HASH_SUBSETTING`. Can only be set if load balancing scheme is `INTERNAL_MANAGED` or `INTERNAL_SELF_MANAGED`. `subset_size` is optional for Internal HTTP(S) load balancing and required for Traffic Director. If you do not provide this value, Cloud Load Balancing will calculate it dynamically to optimize the number of proxies/clients visible to each backend and vice versa. Must be greater than 0. If `subset_size` is larger than the number of backends/endpoints, then subsetting is disabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:SubsettingPolicy": {
      "type": "string",
      "enum": [
        {
          "name": "ConsistentHashSubsetting",
          "description": "Subsetting based on consistent hashing. For Traffic Director, the number of backends per backend group (the subset size) is based on the `subset_size` parameter. For Internal HTTP(S) load balancing, the number of backends per backend group (the subset size) is dynamically adjusted in two cases: - As the number of proxy instances participating in Internal HTTP(S) load balancing increases, the subset size decreases. - When the total number of backends in a network exceeds the capacity of a single proxy instance, subset sizes are reduced automatically for each service that has backend subsetting enabled.",
          "value": "CONSISTENT_HASH_SUBSETTING"
        },
        {
          "name": "None",
          "description": "No Subsetting. Clients may open connections and send traffic to all backends of this backend service. This can lead to performance issues if there is substantial imbalance in the count of clients and backends.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/alpha:SubsettingResponse": {
      "description": "Subsetting configuration for this BackendService. Currently this is applicable only for Internal TCP/UDP load balancing, Internal HTTP(S) load balancing and Traffic Director.",
      "properties": {
        "policy": {
          "type": "string"
        },
        "subsetSize": {
          "type": "integer",
          "description": "The number of backends per backend group assigned to each proxy instance or each service mesh client. An input parameter to the `CONSISTENT_HASH_SUBSETTING` algorithm. Can only be set if `policy` is set to `CONSISTENT_HASH_SUBSETTING`. Can only be set if load balancing scheme is `INTERNAL_MANAGED` or `INTERNAL_SELF_MANAGED`. `subset_size` is optional for Internal HTTP(S) load balancing and required for Traffic Director. If you do not provide this value, Cloud Load Balancing will calculate it dynamically to optimize the number of proxies/clients visible to each backend and vice versa. Must be greater than 0. If `subset_size` is larger than the number of backends/endpoints, then subsetting is disabled."
        }
      },
      "type": "object",
      "required": [
        "policy",
        "subsetSize"
      ]
    },
    "google-native:compute/alpha:TCPHealthCheck": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Falpha:TCPHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Falpha:TCPHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based TCP health check. In addition to establishing a TCP connection, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:TCPHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/alpha:TCPHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/alpha:TCPHealthCheckResponse": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based TCP health check. In addition to establishing a TCP connection, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object",
      "required": [
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "request",
        "response"
      ]
    },
    "google-native:compute/alpha:Tags": {
      "description": "A set of instance tags.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:TagsResponse": {
      "description": "A set of instance tags.",
      "properties": {
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this request, which is essentially a hash of the tags' contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update tags. You must always provide an up-to-date fingerprint hash in order to update or change tags. To see the latest fingerprint, make get() request to the instance."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "items"
      ]
    },
    "google-native:compute/alpha:TargetHttpsProxyQuicOverride": {
      "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "The load balancer will not attempt to negotiate QUIC with clients.",
          "value": "DISABLE"
        },
        {
          "name": "Enable",
          "description": "The load balancer will attempt to negotiate QUIC with clients.",
          "value": "ENABLE"
        },
        {
          "name": "None",
          "description": "No overrides to the default QUIC policy. This option is implicit if no QUIC override has been specified in the request.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/alpha:TargetInstanceNatPolicy": {
      "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance.",
      "type": "string",
      "enum": [
        {
          "name": "NoNat",
          "description": "No NAT performed.",
          "value": "NO_NAT"
        }
      ]
    },
    "google-native:compute/alpha:TargetPoolSessionAffinity": {
      "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/alpha:TargetSslProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/alpha:TargetTcpProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/alpha:TlsCertificateContext": {
      "description": "[Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate.",
      "properties": {
        "certificatePaths": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsCertificatePaths",
          "description": "Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH."
        },
        "certificateSource": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsCertificateContextCertificateSource",
          "description": "Defines how TLS certificates are obtained."
        },
        "sdsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SdsConfig",
          "description": "Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:TlsCertificateContextCertificateSource": {
      "description": "Defines how TLS certificates are obtained.",
      "type": "string",
      "enum": [
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "UsePath",
          "description": "USE_PATH specifies that the certificates and private key are obtained from a locally mounted filesystem path.",
          "value": "USE_PATH"
        },
        {
          "name": "UseSds",
          "description": "USE_SDS specifies that the certificates and private key are obtained from a SDS server.",
          "value": "USE_SDS"
        }
      ]
    },
    "google-native:compute/alpha:TlsCertificateContextResponse": {
      "description": "[Deprecated] Defines the mechanism to obtain the client or server certificate. Defines the mechanism to obtain the client or server certificate.",
      "properties": {
        "certificatePaths": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsCertificatePathsResponse",
          "description": "Specifies the certificate and private key paths. This field is applicable only if tlsCertificateSource is set to USE_PATH."
        },
        "certificateSource": {
          "type": "string",
          "description": "Defines how TLS certificates are obtained."
        },
        "sdsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SdsConfigResponse",
          "description": "Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS."
        }
      },
      "type": "object",
      "required": [
        "certificatePaths",
        "certificateSource",
        "sdsConfig"
      ]
    },
    "google-native:compute/alpha:TlsCertificatePaths": {
      "description": "[Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key.",
      "properties": {
        "certificatePath": {
          "type": "string",
          "description": "The path to the file holding the client or server TLS certificate to use."
        },
        "privateKeyPath": {
          "type": "string",
          "description": "The path to the file holding the client or server private key."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:TlsCertificatePathsResponse": {
      "description": "[Deprecated] The paths to the mounted TLS Certificates and private key. The paths to the mounted TLS Certificates and private key.",
      "properties": {
        "certificatePath": {
          "type": "string",
          "description": "The path to the file holding the client or server TLS certificate to use."
        },
        "privateKeyPath": {
          "type": "string",
          "description": "The path to the file holding the client or server private key."
        }
      },
      "type": "object",
      "required": [
        "certificatePath",
        "privateKeyPath"
      ]
    },
    "google-native:compute/alpha:TlsContext": {
      "description": "[Deprecated] The TLS settings for the client or server. The TLS settings for the client or server.",
      "properties": {
        "certificateContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsCertificateContext",
          "description": "Defines the mechanism to obtain the client or server certificate."
        },
        "validationContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsValidationContext",
          "description": "Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:TlsContextResponse": {
      "description": "[Deprecated] The TLS settings for the client or server. The TLS settings for the client or server.",
      "properties": {
        "certificateContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsCertificateContextResponse",
          "description": "Defines the mechanism to obtain the client or server certificate."
        },
        "validationContext": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsValidationContextResponse",
          "description": "Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. If omitted, the proxy will not validate the server or client certificate."
        }
      },
      "type": "object",
      "required": [
        "certificateContext",
        "validationContext"
      ]
    },
    "google-native:compute/alpha:TlsValidationContext": {
      "description": "[Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate.",
      "properties": {
        "certificatePath": {
          "type": "string",
          "description": "The path to the file holding the CA certificate to validate the client or server certificate."
        },
        "sdsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SdsConfig",
          "description": "Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS."
        },
        "validationSource": {
          "$ref": "#/types/google-native:compute%2Falpha:TlsValidationContextValidationSource",
          "description": "Defines how TLS certificates are obtained."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:TlsValidationContextResponse": {
      "description": "[Deprecated] Defines the mechanism to obtain the Certificate Authority certificate to validate the client/server certificate. validate the client/server certificate.",
      "properties": {
        "certificatePath": {
          "type": "string",
          "description": "The path to the file holding the CA certificate to validate the client or server certificate."
        },
        "sdsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SdsConfigResponse",
          "description": "Specifies the config to retrieve certificates through SDS. This field is applicable only if tlsCertificateSource is set to USE_SDS."
        },
        "validationSource": {
          "type": "string",
          "description": "Defines how TLS certificates are obtained."
        }
      },
      "type": "object",
      "required": [
        "certificatePath",
        "sdsConfig",
        "validationSource"
      ]
    },
    "google-native:compute/alpha:TlsValidationContextValidationSource": {
      "description": "Defines how TLS certificates are obtained.",
      "type": "string",
      "enum": [
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "UsePath",
          "description": "USE_PATH specifies that the certificates and private key are obtained from a locally mounted filesystem path.",
          "value": "USE_PATH"
        },
        {
          "name": "UseSds",
          "description": "USE_SDS specifies that the certificates and private key are obtained from a SDS server.",
          "value": "USE_SDS"
        }
      ]
    },
    "google-native:compute/alpha:UDPHealthCheck": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The UDP port number to which the health check prober sends packets. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "request": {
          "type": "string",
          "description": "Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII."
        },
        "response": {
          "type": "string",
          "description": "The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:UDPHealthCheckResponse": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The UDP port number to which the health check prober sends packets. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "request": {
          "type": "string",
          "description": "Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII."
        },
        "response": {
          "type": "string",
          "description": "The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII."
        }
      },
      "type": "object",
      "required": [
        "port",
        "portName",
        "request",
        "response"
      ]
    },
    "google-native:compute/alpha:Uint128Response": {
      "properties": {
        "high": {
          "type": "string"
        },
        "low": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "high",
        "low"
      ]
    },
    "google-native:compute/alpha:UpcomingMaintenanceResponse": {
      "description": "Upcoming Maintenance notification information.",
      "properties": {
        "canReschedule": {
          "type": "boolean",
          "description": "Indicates if the maintenance can be customer triggered."
        },
        "date": {
          "type": "string",
          "description": "The date when the maintenance will take place. This value is in RFC3339 text format. DEPRECATED: Use window_start_time instead.",
          "deprecationMessage": "[Output Only] The date when the maintenance will take place. This value is in RFC3339 text format. DEPRECATED: Use window_start_time instead."
        },
        "latestWindowStartTime": {
          "type": "string",
          "description": "The latest time for the planned maintenance window to start. This timestamp value is in RFC3339 text format."
        },
        "maintenanceStatus": {
          "type": "string"
        },
        "startTimeWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:UpcomingMaintenanceTimeWindowResponse",
          "description": "The start time window of the maintenance disruption. DEPRECATED: Use window_start_time instead. TimeWindow is a container for two strings that represent timestamps in \"yyyy-MM-dd'T'HH:mm:ssZ\" text format.",
          "deprecationMessage": "[Output Only] The start time window of the maintenance disruption. DEPRECATED: Use window_start_time instead. TimeWindow is a container for two strings that represent timestamps in \"yyyy-MM-dd'T'HH:mm:ssZ\" text format."
        },
        "time": {
          "type": "string",
          "description": "The time when the maintenance will take place. This value is in RFC3339 text format. DEPRECATED: Use window_start_time instead.",
          "deprecationMessage": "[Output Only] The time when the maintenance will take place. This value is in RFC3339 text format. DEPRECATED: Use window_start_time instead."
        },
        "type": {
          "type": "string",
          "description": "Defines the type of maintenance."
        },
        "windowEndTime": {
          "type": "string",
          "description": "The time by which the maintenance disruption will be completed. This timestamp value is in RFC3339 text format."
        },
        "windowStartTime": {
          "type": "string",
          "description": "The current start time of the maintenance window. This timestamp value is in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "canReschedule",
        "date",
        "latestWindowStartTime",
        "maintenanceStatus",
        "startTimeWindow",
        "time",
        "type",
        "windowEndTime",
        "windowStartTime"
      ]
    },
    "google-native:compute/alpha:UpcomingMaintenanceTimeWindowResponse": {
      "description": "Represents a window of time using two timestamps: `earliest` and `latest`.",
      "properties": {
        "earliest": {
          "type": "string"
        },
        "latest": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "earliest",
        "latest"
      ]
    },
    "google-native:compute/alpha:UrlMapTest": {
      "description": "Message for the expected URL mappings.",
      "properties": {
        "backendServiceWeight": {
          "type": "integer",
          "description": "The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting."
        },
        "description": {
          "type": "string",
          "description": "Description of this test case."
        },
        "expectedOutputUrl": {
          "type": "string",
          "description": "The expected output URL evaluated by the load balancer containing the scheme, host, path and query parameters. For 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. For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to HTTPS. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters. expectedOutputUrl is optional when service is specified."
        },
        "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. expectedRedirectResponseCode cannot be set when service is set."
        },
        "expectedUrlRedirect": {
          "type": "string",
          "description": "The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead.",
          "deprecationMessage": "The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:UrlMapTestHeader"
          },
          "description": "HTTP headers for this request. If headers contains a host header, then host must also match the header value."
        },
        "host": {
          "type": "string",
          "description": "Host portion of the URL. If headers contains a host header, then host must also match the header value."
        },
        "path": {
          "type": "string",
          "description": "Path portion of the URL."
        },
        "service": {
          "type": "string",
          "description": "Expected BackendService or BackendBucket resource the given URL should be mapped to. The service field cannot be set if expectedRedirectResponseCode is set."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:UrlMapTestHeader": {
      "description": "HTTP headers used in UrlMapTests.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Header name."
        },
        "value": {
          "type": "string",
          "description": "Header value."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:UrlMapTestHeaderResponse": {
      "description": "HTTP headers used in UrlMapTests.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Header name."
        },
        "value": {
          "type": "string",
          "description": "Header value."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/alpha:UrlMapTestResponse": {
      "description": "Message for the expected URL mappings.",
      "properties": {
        "backendServiceWeight": {
          "type": "integer",
          "description": "The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting."
        },
        "description": {
          "type": "string",
          "description": "Description of this test case."
        },
        "expectedOutputUrl": {
          "type": "string",
          "description": "The expected output URL evaluated by the load balancer containing the scheme, host, path and query parameters. For 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. For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to HTTPS. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters. expectedOutputUrl is optional when service is specified."
        },
        "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. expectedRedirectResponseCode cannot be set when service is set."
        },
        "expectedUrlRedirect": {
          "type": "string",
          "description": "The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead.",
          "deprecationMessage": "The expected URL that should be redirected to for the host and path being tested. [Deprecated] This field is deprecated. Use expected_output_url instead."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:UrlMapTestHeaderResponse"
          },
          "description": "HTTP headers for this request. If headers contains a host header, then host must also match the header value."
        },
        "host": {
          "type": "string",
          "description": "Host portion of the URL. If headers contains a host header, then host must also match the header value."
        },
        "path": {
          "type": "string",
          "description": "Path portion of the URL."
        },
        "service": {
          "type": "string",
          "description": "Expected BackendService or BackendBucket resource the given URL should be mapped to. The service field cannot be set if expectedRedirectResponseCode is set."
        }
      },
      "type": "object",
      "required": [
        "backendServiceWeight",
        "description",
        "expectedOutputUrl",
        "expectedRedirectResponseCode",
        "expectedUrlRedirect",
        "headers",
        "host",
        "path",
        "service"
      ]
    },
    "google-native:compute/alpha:UrlRewrite": {
      "description": "The spec for modifying the path before sending the request to the matched backend service.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite. The value must be from 1 to 255 characters."
        },
        "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. The value must be from 1 to 1024 characters."
        },
        "pathTemplateRewrite": {
          "type": "string",
          "description": " If specified, the pattern rewrites the URL path (based on the :path header) using the HTTP template syntax. A corresponding path_template_match must be specified. Any template variables must exist in the path_template_match field. - -At least one variable must be specified in the path_template_match field - You can omit variables from the rewritten URL - The * and ** operators cannot be matched unless they have a corresponding variable name - e.g. {format=*} or {var=**}. For example, a path_template_match of /static/{format=**} could be rewritten as /static/content/{format} to prefix /content to the URL. Variables can also be re-ordered in a rewrite, so that /{country}/{format}/{suffix=**} can be rewritten as /content/{format}/{country}/{suffix}. At least one non-empty routeRules[].matchRules[].path_template_match is required. Only one of path_prefix_rewrite or path_template_rewrite may be specified."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:UrlRewriteResponse": {
      "description": "The spec for modifying the path before sending the request to the matched backend service.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite. The value must be from 1 to 255 characters."
        },
        "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. The value must be from 1 to 1024 characters."
        },
        "pathTemplateRewrite": {
          "type": "string",
          "description": " If specified, the pattern rewrites the URL path (based on the :path header) using the HTTP template syntax. A corresponding path_template_match must be specified. Any template variables must exist in the path_template_match field. - -At least one variable must be specified in the path_template_match field - You can omit variables from the rewritten URL - The * and ** operators cannot be matched unless they have a corresponding variable name - e.g. {format=*} or {var=**}. For example, a path_template_match of /static/{format=**} could be rewritten as /static/content/{format} to prefix /content to the URL. Variables can also be re-ordered in a rewrite, so that /{country}/{format}/{suffix=**} can be rewritten as /content/{format}/{country}/{suffix}. At least one non-empty routeRules[].matchRules[].path_template_match is required. Only one of path_prefix_rewrite or path_template_rewrite may be specified."
        }
      },
      "type": "object",
      "required": [
        "hostRewrite",
        "pathPrefixRewrite",
        "pathTemplateRewrite"
      ]
    },
    "google-native:compute/alpha:VpnGatewayGatewayIpVersion": {
      "description": "The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "description": "Every HA-VPN gateway interface is configured with an IPv4 address.",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "description": "Every HA-VPN gateway interface is configured with an IPv6 address.",
          "value": "IPV6"
        }
      ]
    },
    "google-native:compute/alpha:VpnGatewayStackType": {
      "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "Enable VPN gateway with both IPv4 and IPv6 protocols.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "Enable VPN gateway with only IPv4 protocol.",
          "value": "IPV4_ONLY"
        },
        {
          "name": "Ipv6Only",
          "description": "Enable VPN gateway with only IPv6 protocol.",
          "value": "IPV6_ONLY"
        }
      ]
    },
    "google-native:compute/alpha:VpnGatewayVpnGatewayInterface": {
      "description": "A VPN gateway interface.",
      "properties": {
        "interconnectAttachment": {
          "type": "string",
          "description": "URL of the VLAN attachment (interconnectAttachment) resource for this VPN gateway interface. When the value of this field is present, the VPN gateway is used for HA VPN over Cloud Interconnect; all egress or ingress traffic for this VPN gateway interface goes through the specified VLAN attachment resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:VpnGatewayVpnGatewayInterfaceResponse": {
      "description": "A VPN gateway interface.",
      "properties": {
        "interconnectAttachment": {
          "type": "string",
          "description": "URL of the VLAN attachment (interconnectAttachment) resource for this VPN gateway interface. When the value of this field is present, the VPN gateway is used for HA VPN over Cloud Interconnect; all egress or ingress traffic for this VPN gateway interface goes through the specified VLAN attachment resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for this VPN interface associated with the VPN gateway. The IP address could be either a regional external IP address or a regional internal IP address. The two IP addresses for a VPN gateway must be all regional external or regional internal IP addresses. There cannot be a mix of regional external IP addresses and regional internal IP addresses. For HA VPN over Cloud Interconnect, the IP addresses for both interfaces could either be regional internal IP addresses or regional external IP addresses. For regular (non HA VPN over Cloud Interconnect) HA VPN tunnels, the IP address must be a regional external IP address."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address for this VPN interface associated with the VPN gateway. The IPv6 address must be a regional external IPv6 address. The format is RFC 5952 format (e.g. 2001:db8::2d9:51:0:0)."
        }
      },
      "type": "object",
      "required": [
        "interconnectAttachment",
        "ipAddress",
        "ipv6Address"
      ]
    },
    "google-native:compute/alpha:WeightedBackendService": {
      "description": "In contrast to a single BackendService in HttpRouteAction to which all matching traffic is directed to, WeightedBackendService allows traffic to be split across multiple backend services. The volume of traffic for each backend service is proportional to the weight specified in each WeightedBackendService",
      "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."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. headerAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) . The 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. The value must be from 0 to 1000."
        }
      },
      "type": "object"
    },
    "google-native:compute/alpha:WeightedBackendServiceResponse": {
      "description": "In contrast to a single BackendService in HttpRouteAction to which all matching traffic is directed to, WeightedBackendService allows traffic to be split across multiple backend services. The volume of traffic for each backend service is proportional to the weight specified in each WeightedBackendService",
      "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."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. headerAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) . The 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. The value must be from 0 to 1000."
        }
      },
      "type": "object",
      "required": [
        "backendService",
        "headerAction",
        "weight"
      ]
    },
    "google-native:compute/beta:AWSV4Signature": {
      "description": "Contains the configurations necessary to generate a signature for access to private storage buckets that support Signature Version 4 for authentication. The service name for generating the authentication header will always default to 's3'.",
      "properties": {
        "accessKey": {
          "type": "string",
          "description": "The access key used for s3 bucket authentication. Required 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. @InputOnly"
        },
        "accessKeyId": {
          "type": "string",
          "description": "The identifier of an access key used for s3 bucket authentication."
        },
        "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."
        },
        "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. For example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AWSV4SignatureResponse": {
      "description": "Contains the configurations necessary to generate a signature for access to private storage buckets that support Signature Version 4 for authentication. The service name for generating the authentication header will always default to 's3'.",
      "properties": {
        "accessKey": {
          "type": "string",
          "description": "The access key used for s3 bucket authentication. Required 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. @InputOnly"
        },
        "accessKeyId": {
          "type": "string",
          "description": "The identifier of an access key used for s3 bucket authentication."
        },
        "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."
        },
        "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. For example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI."
        }
      },
      "type": "object",
      "required": [
        "accessKey",
        "accessKeyId",
        "accessKeyVersion",
        "originRegion"
      ]
    },
    "google-native:compute/beta:AcceleratorConfig": {
      "description": "A specification of the type and number of accelerator cards attached to the instance.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the guest accelerator cards exposed to this instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AcceleratorConfigResponse": {
      "description": "A specification of the type and number of accelerator cards attached to the instance.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the guest accelerator cards exposed to this instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType"
      ]
    },
    "google-native:compute/beta:AccessConfig": {
      "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
      "properties": {
        "externalIpv6": {
          "type": "string",
          "description": "Applies to ipv6AccessConfigs only. 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."
        },
        "externalIpv6PrefixLength": {
          "type": "integer",
          "description": "Applies to ipv6AccessConfigs only. The prefix length of the external IPv6 range."
        },
        "name": {
          "type": "string",
          "description": "The name of this access configuration. In accessConfigs (IPv4), the default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access. In ipv6AccessConfigs, the recommend name is External IPv6."
        },
        "natIP": {
          "type": "string",
          "description": "Applies to accessConfigs (IPv4) only. An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fbeta:AccessConfigNetworkTier",
          "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP."
        },
        "publicPtrDomainName": {
          "type": "string",
          "description": "The DNS domain name for the public PTR record. You can set this field only if the `setPublicPtr` field is enabled in accessConfig. If this field is unspecified in ipv6AccessConfig, a default PTR record will be createc for first IP in associated external IPv6 range."
        },
        "setPublicPtr": {
          "type": "boolean",
          "description": "Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name. This field is not used in ipv6AccessConfig. A default PTR record will be created if the VM has external IPv6 range associated."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:AccessConfigType",
          "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AccessConfigNetworkTier": {
      "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/beta:AccessConfigResponse": {
      "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
      "properties": {
        "externalIpv6": {
          "type": "string",
          "description": "Applies to ipv6AccessConfigs only. 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."
        },
        "externalIpv6PrefixLength": {
          "type": "integer",
          "description": "Applies to ipv6AccessConfigs only. The prefix length of the external IPv6 range."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#accessConfig for access configs."
        },
        "name": {
          "type": "string",
          "description": "The name of this access configuration. In accessConfigs (IPv4), the default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access. In ipv6AccessConfigs, the recommend name is External IPv6."
        },
        "natIP": {
          "type": "string",
          "description": "Applies to accessConfigs (IPv4) only. An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP."
        },
        "publicPtrDomainName": {
          "type": "string",
          "description": "The DNS domain name for the public PTR record. You can set this field only if the `setPublicPtr` field is enabled in accessConfig. If this field is unspecified in ipv6AccessConfig, a default PTR record will be createc for first IP in associated external IPv6 range."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this access config."
        },
        "setPublicPtr": {
          "type": "boolean",
          "description": "Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name. This field is not used in ipv6AccessConfig. A default PTR record will be created if the VM has external IPv6 range associated."
        },
        "type": {
          "type": "string",
          "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6."
        }
      },
      "type": "object",
      "required": [
        "externalIpv6",
        "externalIpv6PrefixLength",
        "kind",
        "name",
        "natIP",
        "networkTier",
        "publicPtrDomainName",
        "securityPolicy",
        "setPublicPtr",
        "type"
      ]
    },
    "google-native:compute/beta:AccessConfigType": {
      "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "DirectIpv6",
          "value": "DIRECT_IPV6"
        },
        {
          "name": "OneToOneNat",
          "value": "ONE_TO_ONE_NAT"
        }
      ]
    },
    "google-native:compute/beta:AddressAddressType": {
      "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "A publicly visible external IP address.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "A private network IP address, for use with an Instance or Internal Load Balancer forwarding rule.",
          "value": "INTERNAL"
        },
        {
          "name": "UnspecifiedType",
          "value": "UNSPECIFIED_TYPE"
        }
      ]
    },
    "google-native:compute/beta:AddressIpVersion": {
      "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/beta:AddressIpv6EndpointType": {
      "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
      "type": "string",
      "enum": [
        {
          "name": "Netlb",
          "description": "Reserved IPv6 address can be used on network load balancer.",
          "value": "NETLB"
        },
        {
          "name": "Vm",
          "description": "Reserved IPv6 address can be used on VM.",
          "value": "VM"
        }
      ]
    },
    "google-native:compute/beta:AddressNetworkTier": {
      "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/beta:AddressPurpose": {
      "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
      "type": "string",
      "enum": [
        {
          "name": "DnsResolver",
          "description": "DNS resolver address in the subnetwork.",
          "value": "DNS_RESOLVER"
        },
        {
          "name": "GceEndpoint",
          "description": "VM internal/alias IP, Internal LB service IP, etc.",
          "value": "GCE_ENDPOINT"
        },
        {
          "name": "IpsecInterconnect",
          "description": "A regional internal IP address range reserved for the VLAN attachment that is used in HA VPN over Cloud Interconnect. This regional internal IP address range must not overlap with any IP address range of subnet/route in the VPC network and its peering networks. After the VLAN attachment is created with the reserved IP address range, when creating a new VPN gateway, its interface IP address is allocated from the associated VLAN attachment’s IP address range.",
          "value": "IPSEC_INTERCONNECT"
        },
        {
          "name": "NatAuto",
          "description": "External IP automatically reserved for Cloud NAT.",
          "value": "NAT_AUTO"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "A private network IP address that can be used to configure Private Service Connect. This purpose can be specified only for GLOBAL addresses of Type INTERNAL",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "A regional internal IP address range reserved for Serverless.",
          "value": "SERVERLESS"
        },
        {
          "name": "SharedLoadbalancerVip",
          "description": "A private network IP address that can be shared by multiple Internal Load Balancer forwarding rules.",
          "value": "SHARED_LOADBALANCER_VIP"
        },
        {
          "name": "VpcPeering",
          "description": "IP range for peer networks.",
          "value": "VPC_PEERING"
        }
      ]
    },
    "google-native:compute/beta:AdvancedMachineFeatures": {
      "description": "Specifies options for controlling advanced machine features. Options that would traditionally be configured in a BIOS belong here. Features that require operating system support may have corresponding entries in the GuestOsFeatures of an Image (e.g., whether or not the OS in the Image supports nested virtualization being enabled or disabled).",
      "properties": {
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Whether to enable nested virtualization or not (default is false)."
        },
        "enableUefiNetworking": {
          "type": "boolean",
          "description": "Whether to enable UEFI networking for instance creation."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AdvancedMachineFeaturesResponse": {
      "description": "Specifies options for controlling advanced machine features. Options that would traditionally be configured in a BIOS belong here. Features that require operating system support may have corresponding entries in the GuestOsFeatures of an Image (e.g., whether or not the OS in the Image supports nested virtualization being enabled or disabled).",
      "properties": {
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Whether to enable nested virtualization or not (default is false)."
        },
        "enableUefiNetworking": {
          "type": "boolean",
          "description": "Whether to enable UEFI networking for instance creation."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "enableNestedVirtualization",
        "enableUefiNetworking",
        "threadsPerCore",
        "visibleCoreCount"
      ]
    },
    "google-native:compute/beta:AliasIpRange": {
      "description": "An alias IP range attached to an instance's network interface.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The IP alias ranges to allocate for this interface. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24)."
        },
        "subnetworkRangeName": {
          "type": "string",
          "description": "The name of a subnetwork secondary IP range from which to allocate an IP alias range. If not specified, the primary range of the subnetwork is used."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AliasIpRangeResponse": {
      "description": "An alias IP range attached to an instance's network interface.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The IP alias ranges to allocate for this interface. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24)."
        },
        "subnetworkRangeName": {
          "type": "string",
          "description": "The name of a subnetwork secondary IP range from which to allocate an IP alias range. If not specified, the primary range of the subnetwork is used."
        }
      },
      "type": "object",
      "required": [
        "ipCidrRange",
        "subnetworkRangeName"
      ]
    },
    "google-native:compute/beta:AllocationAggregateReservation": {
      "description": "This reservation type is specified by total resource amounts (e.g. total count of CPUs) and can account for multiple instance SKUs. In other words, one can create instances of varying shapes against this reservation.",
      "properties": {
        "reservedResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationReservedResourceInfo"
          },
          "description": "List of reserved resources (CPUs, memory, accelerators)."
        },
        "vmFamily": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationVmFamily",
          "description": "The VM family that all instances scheduled against this reservation must belong to."
        },
        "workloadType": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationWorkloadType",
          "description": "The workload type of the instances that will target this reservation."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AllocationAggregateReservationReservedResourceInfo": {
      "properties": {
        "accelerator": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationReservedResourceInfoAccelerator",
          "description": "Properties of accelerator resources in this reservation."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AllocationAggregateReservationReservedResourceInfoAccelerator": {
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "Number of accelerators of specified type."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL to accelerator type. e.g. \"projects/{PROJECT}/zones/{ZONE}/acceleratorTypes/ct4l\""
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AllocationAggregateReservationReservedResourceInfoAcceleratorResponse": {
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "Number of accelerators of specified type."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL to accelerator type. e.g. \"projects/{PROJECT}/zones/{ZONE}/acceleratorTypes/ct4l\""
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType"
      ]
    },
    "google-native:compute/beta:AllocationAggregateReservationReservedResourceInfoResponse": {
      "properties": {
        "accelerator": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationReservedResourceInfoAcceleratorResponse",
          "description": "Properties of accelerator resources in this reservation."
        }
      },
      "type": "object",
      "required": [
        "accelerator"
      ]
    },
    "google-native:compute/beta:AllocationAggregateReservationResponse": {
      "description": "This reservation type is specified by total resource amounts (e.g. total count of CPUs) and can account for multiple instance SKUs. In other words, one can create instances of varying shapes against this reservation.",
      "properties": {
        "inUseResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationReservedResourceInfoResponse"
          },
          "description": "[Output only] List of resources currently in use."
        },
        "reservedResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationReservedResourceInfoResponse"
          },
          "description": "List of reserved resources (CPUs, memory, accelerators)."
        },
        "vmFamily": {
          "type": "string",
          "description": "The VM family that all instances scheduled against this reservation must belong to."
        },
        "workloadType": {
          "type": "string",
          "description": "The workload type of the instances that will target this reservation."
        }
      },
      "type": "object",
      "required": [
        "inUseResources",
        "reservedResources",
        "vmFamily",
        "workloadType"
      ]
    },
    "google-native:compute/beta:AllocationAggregateReservationVmFamily": {
      "description": "The VM family that all instances scheduled against this reservation must belong to.",
      "type": "string",
      "enum": [
        {
          "name": "VmFamilyCloudTpuLiteDeviceCt5l",
          "value": "VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L"
        },
        {
          "name": "VmFamilyCloudTpuLitePodSliceCt5lp",
          "value": "VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP"
        },
        {
          "name": "VmFamilyCloudTpuPodSliceCt4p",
          "value": "VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P"
        }
      ]
    },
    "google-native:compute/beta:AllocationAggregateReservationWorkloadType": {
      "description": "The workload type of the instances that will target this reservation.",
      "type": "string",
      "enum": [
        {
          "name": "Batch",
          "description": "Reserved resources will be optimized for BATCH workloads, such as ML training.",
          "value": "BATCH"
        },
        {
          "name": "Serving",
          "description": "Reserved resources will be optimized for SERVING workloads, such as ML inference.",
          "value": "SERVING"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:AllocationResourceStatusResponse": {
      "description": "[Output Only] Contains output only fields.",
      "properties": {
        "specificSkuAllocation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationResourceStatusSpecificSKUAllocationResponse",
          "description": "Allocation Properties of this reservation."
        }
      },
      "type": "object",
      "required": [
        "specificSkuAllocation"
      ]
    },
    "google-native:compute/beta:AllocationResourceStatusSpecificSKUAllocationResponse": {
      "description": "Contains Properties set for the reservation.",
      "properties": {
        "sourceInstanceTemplateId": {
          "type": "string",
          "description": "ID of the instance template used to populate reservation properties."
        }
      },
      "type": "object",
      "required": [
        "sourceInstanceTemplateId"
      ]
    },
    "google-native:compute/beta:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk": {
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface": {
      "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        }
      ]
    },
    "google-native:compute/beta:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskResponse": {
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "interface"
      ]
    },
    "google-native:compute/beta:AllocationSpecificSKUAllocationReservedInstanceProperties": {
      "description": "Properties of the SKU instances being reserved. Next ID: 9",
      "properties": {
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfig"
          },
          "description": "Specifies accelerator type and count."
        },
        "localSsds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk"
          },
          "description": "Specifies amount of local ssd to reserve with each instance. The type of disk is local-ssd."
        },
        "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."
        },
        "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."
        },
        "maintenanceFreezeDurationHours": {
          "type": "integer",
          "description": "Specifies the number of hours after reservation creation where instances using the reservation won't be scheduled for maintenance."
        },
        "maintenanceInterval": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu platform the reservation."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval": {
      "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.",
      "type": "string",
      "enum": [
        {
          "name": "AsNeeded",
          "description": "VMs are eligible to receive infrastructure and hypervisor updates as they become available. This may result in more maintenance operations (live migrations or terminations) for the VM than the PERIODIC and RECURRENT options.",
          "value": "AS_NEEDED"
        },
        {
          "name": "Periodic",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available.",
          "value": "PERIODIC"
        },
        {
          "name": "Recurrent",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available. RECURRENT is used for GEN3 and Slice of Hardware VMs.",
          "value": "RECURRENT"
        }
      ]
    },
    "google-native:compute/beta:AllocationSpecificSKUAllocationReservedInstancePropertiesResponse": {
      "description": "Properties of the SKU instances being reserved. Next ID: 9",
      "properties": {
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfigResponse"
          },
          "description": "Specifies accelerator type and count."
        },
        "localSsds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskResponse"
          },
          "description": "Specifies amount of local ssd to reserve with each instance. The type of disk is local-ssd."
        },
        "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."
        },
        "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."
        },
        "maintenanceFreezeDurationHours": {
          "type": "integer",
          "description": "Specifies the number of hours after reservation creation where instances using the reservation won't be scheduled for maintenance."
        },
        "maintenanceInterval": {
          "type": "string",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu platform the reservation."
        }
      },
      "type": "object",
      "required": [
        "guestAccelerators",
        "localSsds",
        "locationHint",
        "machineType",
        "maintenanceFreezeDurationHours",
        "maintenanceInterval",
        "minCpuPlatform"
      ]
    },
    "google-native:compute/beta:AllocationSpecificSKUReservation": {
      "description": "This reservation type allows to pre allocate specific instance configuration. Next ID: 6",
      "properties": {
        "count": {
          "type": "string",
          "description": "Specifies the number of resources that are allocated."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUAllocationReservedInstanceProperties",
          "description": "The instance properties for the reservation."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies the instance template to create the reservation. If you use this field, you must exclude the instanceProperties field. This field is optional, and it can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AllocationSpecificSKUReservationResponse": {
      "description": "This reservation type allows to pre allocate specific instance configuration. Next ID: 6",
      "properties": {
        "assuredCount": {
          "type": "string",
          "description": "Indicates how many instances are actually usable currently."
        },
        "count": {
          "type": "string",
          "description": "Specifies the number of resources that are allocated."
        },
        "inUseCount": {
          "type": "string",
          "description": "Indicates how many instances are in use."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUAllocationReservedInstancePropertiesResponse",
          "description": "The instance properties for the reservation."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies the instance template to create the reservation. If you use this field, you must exclude the instanceProperties field. This field is optional, and it can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        }
      },
      "type": "object",
      "required": [
        "assuredCount",
        "count",
        "inUseCount",
        "instanceProperties",
        "sourceInstanceTemplate"
      ]
    },
    "google-native:compute/beta:AttachedDisk": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Encrypts or decrypts a disk using a customer-supplied encryption key. If 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. If 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. If 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. Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in GB."
        },
        "forceAttach": {
          "type": "boolean",
          "description": "[Input Only] 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."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "initializeParams": {
          "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskInitializeParams",
          "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskInterface",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskMode",
          "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode."
        },
        "savedState": {
          "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskSavedState",
          "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api."
        },
        "source": {
          "type": "string",
          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks. Note that for InstanceTemplate, specify the disk name for zonal disk, and the URL for regional disk."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskType",
          "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AttachedDiskInitializeParams": {
      "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This field is persisted and returned for instanceTemplate and not returned in the context of instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskInitializeParamsArchitecture",
          "description": "The architecture of the attached disk. Valid values are arm64 or x86_64."
        },
        "description": {
          "type": "string",
          "description": "An optional description. Provide this property when creating the disk."
        },
        "diskName": {
          "type": "string",
          "description": "Specifies the disk name. If not specified, the default is to use the name of the instance. If a disk with the same name already exists in the given region, the existing disk is attached to the new instance and the new disk is not created."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB. The size must be at least 10 GB. If you specify a sourceImage, which is required for boot disks, the default size is the size of the sourceImage. If you do not specify a sourceImage, the default disk size is 500 GB."
        },
        "diskType": {
          "type": "string",
          "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/pd-standard For a full list of acceptable values, see Persistent disk types. If you specify this field when creating a VM, you can provide either the full or partial URL. For example, the following values are valid: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType If you specify this field when creating or updating an instance template or all-instances configuration, specify the type of the disk, not the URL. For example: pd-standard."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options. Guest OS features are applied by merging initializeParams.guestOsFeatures and disks.guestOsFeatures"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "onUpdateAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskInitializeParamsOnUpdateAction",
          "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk."
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required for each regional disk associated with the instance. Specify the URLs of the zones where the disk should be replicated to. You must provide exactly two replica zones, and one zone must be the same as the instance zone."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations. Specified using the full or partial URL. For instance template, specify only the resource policy name."
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family If the source image is deleted later, this field will not be set."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. InstanceTemplate and InstancePropertiesPatch 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."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant-snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceInstantSnapshot initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: us-central1-a/instantSnapshots/my-backup If the source instant-snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: global/snapshots/my-backup If the source snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AttachedDiskInitializeParamsArchitecture": {
      "description": "The architecture of the attached disk. Valid values are arm64 or x86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/beta:AttachedDiskInitializeParamsOnUpdateAction": {
      "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk.",
      "type": "string",
      "enum": [
        {
          "name": "RecreateDisk",
          "description": "Always recreate the disk.",
          "value": "RECREATE_DISK"
        },
        {
          "name": "RecreateDiskIfSourceChanged",
          "description": "Recreate the disk if source (image, snapshot) of this disk is different from source of existing disk.",
          "value": "RECREATE_DISK_IF_SOURCE_CHANGED"
        },
        {
          "name": "UseExistingDisk",
          "description": "Use the existing disk, this is the default behaviour.",
          "value": "USE_EXISTING_DISK"
        }
      ]
    },
    "google-native:compute/beta:AttachedDiskInitializeParamsResponse": {
      "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This field is persisted and returned for instanceTemplate and not returned in the context of instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk. Valid values are arm64 or x86_64."
        },
        "description": {
          "type": "string",
          "description": "An optional description. Provide this property when creating the disk."
        },
        "diskName": {
          "type": "string",
          "description": "Specifies the disk name. If not specified, the default is to use the name of the instance. If a disk with the same name already exists in the given region, the existing disk is attached to the new instance and the new disk is not created."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB. The size must be at least 10 GB. If you specify a sourceImage, which is required for boot disks, the default size is the size of the sourceImage. If you do not specify a sourceImage, the default disk size is 500 GB."
        },
        "diskType": {
          "type": "string",
          "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/pd-standard For a full list of acceptable values, see Persistent disk types. If you specify this field when creating a VM, you can provide either the full or partial URL. For example, the following values are valid: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType If you specify this field when creating or updating an instance template or all-instances configuration, specify the type of the disk, not the URL. For example: pd-standard."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options. Guest OS features are applied by merging initializeParams.guestOsFeatures and disks.guestOsFeatures"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "onUpdateAction": {
          "type": "string",
          "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk."
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required for each regional disk associated with the instance. Specify the URLs of the zones where the disk should be replicated to. You must provide exactly two replica zones, and one zone must be the same as the instance zone."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations. Specified using the full or partial URL. For instance template, specify only the resource policy name."
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family If the source image is deleted later, this field will not be set."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. InstanceTemplate and InstancePropertiesPatch 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."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant-snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceInstantSnapshot initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: us-central1-a/instantSnapshots/my-backup If the source instant-snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: global/snapshots/my-backup If the source snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "description",
        "diskName",
        "diskSizeGb",
        "diskType",
        "enableConfidentialCompute",
        "guestOsFeatures",
        "labels",
        "licenses",
        "multiWriter",
        "onUpdateAction",
        "provisionedIops",
        "provisionedThroughput",
        "replicaZones",
        "resourceManagerTags",
        "resourcePolicies",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceInstantSnapshot",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey"
      ]
    },
    "google-native:compute/beta:AttachedDiskInterface": {
      "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        }
      ]
    },
    "google-native:compute/beta:AttachedDiskMode": {
      "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
      "type": "string",
      "enum": [
        {
          "name": "ReadOnly",
          "description": "Attaches this disk in read-only mode. Multiple virtual machines can use a disk in read-only mode at a time.",
          "value": "READ_ONLY"
        },
        {
          "name": "ReadWrite",
          "description": "*[Default]* Attaches this disk in read-write mode. Only one virtual machine at a time can be attached to a disk in read-write mode.",
          "value": "READ_WRITE"
        }
      ]
    },
    "google-native:compute/beta:AttachedDiskResponse": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk. Valid values are ARM64 or X86_64."
        },
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Encrypts or decrypts a disk using a customer-supplied encryption key. If 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. If 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. If 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. Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in GB."
        },
        "forceAttach": {
          "type": "boolean",
          "description": "[Input Only] 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."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "index": {
          "type": "integer",
          "description": "A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number."
        },
        "initializeParams": {
          "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskInitializeParamsResponse",
          "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#attachedDisk for attached disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any valid publicly visible licenses."
        },
        "locked": {
          "type": "boolean",
          "description": "Whether to indicate the attached disk is locked. The locked disk is not allowed to be detached from the instance, or to be used as the source of the snapshot creation, and the image creation. The instance with at least one locked attached disk is not allow to be used as source of machine image creation, instant snapshot creation, and not allowed to be deleted with --keep-disk parameter set to true for locked disks."
        },
        "mode": {
          "type": "string",
          "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode."
        },
        "savedState": {
          "type": "string",
          "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Fbeta:InitialStateConfigResponse",
          "description": "shielded vm initial state stored on disk"
        },
        "source": {
          "type": "string",
          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks. Note that for InstanceTemplate, specify the disk name for zonal disk, and the URL for regional disk."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of user provided licenses. It represents a list of URLs to the license resource. Unlike regular licenses, user provided licenses can be modified after the disk is created."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "autoDelete",
        "boot",
        "deviceName",
        "diskEncryptionKey",
        "diskSizeGb",
        "forceAttach",
        "guestOsFeatures",
        "index",
        "initializeParams",
        "interface",
        "kind",
        "licenses",
        "locked",
        "mode",
        "savedState",
        "shieldedInstanceInitialState",
        "source",
        "type",
        "userLicenses"
      ]
    },
    "google-native:compute/beta:AttachedDiskSavedState": {
      "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api.",
      "type": "string",
      "enum": [
        {
          "name": "DiskSavedStateUnspecified",
          "description": "*[Default]* Disk state has not been preserved.",
          "value": "DISK_SAVED_STATE_UNSPECIFIED"
        },
        {
          "name": "Preserved",
          "description": "Disk state has been preserved.",
          "value": "PRESERVED"
        }
      ]
    },
    "google-native:compute/beta:AttachedDiskType": {
      "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
      "type": "string",
      "enum": [
        {
          "name": "Persistent",
          "value": "PERSISTENT"
        },
        {
          "name": "Scratch",
          "value": "SCRATCH"
        }
      ]
    },
    "google-native:compute/beta:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "exemptedMembers",
        "service"
      ]
    },
    "google-native:compute/beta:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logType": {
          "$ref": "#/types/google-native:compute%2Fbeta:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "ignoreChildExemptions",
        "logType"
      ]
    },
    "google-native:compute/beta:AuthorizationLoggingOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "permissionType": {
          "$ref": "#/types/google-native:compute%2Fbeta:AuthorizationLoggingOptionsPermissionType",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AuthorizationLoggingOptionsPermissionType": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "AdminRead",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_READ"
        },
        {
          "name": "AdminWrite",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_WRITE"
        },
        {
          "name": "DataRead",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_READ"
        },
        {
          "name": "DataWrite",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_WRITE"
        },
        {
          "name": "PermissionTypeUnspecified",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "PERMISSION_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:AuthorizationLoggingOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "permissionType": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "permissionType"
      ]
    },
    "google-native:compute/beta:AutoscalerStatusDetailsResponse": {
      "properties": {
        "message": {
          "type": "string",
          "description": "The status message."
        },
        "type": {
          "type": "string",
          "description": "The type of error, warning, or notice returned. Current set of possible values: - ALL_INSTANCES_UNHEALTHY (WARNING): All instances in the instance group are unhealthy (not in RUNNING state). - BACKEND_SERVICE_DOES_NOT_EXIST (ERROR): There is no backend service attached to the instance group. - CAPPED_AT_MAX_NUM_REPLICAS (WARNING): Autoscaler recommends a size greater than maxNumReplicas. - CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE (WARNING): The custom metric samples are not exported often enough to be a credible base for autoscaling. - CUSTOM_METRIC_INVALID (ERROR): The custom metric that was specified does not exist or does not have the necessary labels. - MIN_EQUALS_MAX (WARNING): The minNumReplicas is equal to maxNumReplicas. This means the autoscaler cannot add or remove instances from the instance group. - MISSING_CUSTOM_METRIC_DATA_POINTS (WARNING): The autoscaler did not receive any data from the custom metric configured for autoscaling. - MISSING_LOAD_BALANCING_DATA_POINTS (WARNING): The autoscaler is configured to scale based on a load balancing signal but the instance group has not received any requests from the load balancer. - MODE_OFF (WARNING): Autoscaling is turned off. The number of instances in the group won't change automatically. The autoscaling configuration is preserved. - MODE_ONLY_UP (WARNING): Autoscaling is in the \"Autoscale only out\" mode. The autoscaler can add instances but not remove any. - MORE_THAN_ONE_BACKEND_SERVICE (ERROR): The instance group cannot be autoscaled because it has more than one backend service attached to it. - NOT_ENOUGH_QUOTA_AVAILABLE (ERROR): There is insufficient quota for the necessary resources, such as CPU or number of instances. - REGION_RESOURCE_STOCKOUT (ERROR): Shown only for regional autoscalers: there is a resource stockout in the chosen region. - SCALING_TARGET_DOES_NOT_EXIST (ERROR): The target to be scaled does not exist. - UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION (ERROR): Autoscaling does not work with an HTTP/S load balancer that has been configured for maxRate. - ZONE_RESOURCE_STOCKOUT (ERROR): For zonal autoscalers: there is a resource stockout in the chosen zone. For regional autoscalers: in at least one of the zones you're using there is a resource stockout. New values might be added in the future. Some of the values might not be available in all API versions."
        }
      },
      "type": "object",
      "required": [
        "message",
        "type"
      ]
    },
    "google-native:compute/beta:AutoscalingPolicy": {
      "description": "Cloud Autoscaler policy.",
      "properties": {
        "coolDownPeriodSec": {
          "type": "integer",
          "description": "The number of seconds that your application takes to initialize on a VM instance. This is referred to as the [initialization period](/compute/docs/autoscaler#cool_down_period). Specifying an accurate initialization period improves autoscaler decisions. For example, when scaling out, the autoscaler ignores data from VMs that are still initializing because those VMs might not yet represent normal usage of your application. The default initialization period is 60 seconds. Initialization periods might vary because of numerous factors. We recommend that you test how long your application takes to initialize. To do this, create a VM and time your application's startup process."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyCpuUtilization",
          "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
        },
        "customMetricUtilizations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyCustomMetricUtilization"
          },
          "description": "Configuration parameters of autoscaling based on a custom metric."
        },
        "loadBalancingUtilization": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyLoadBalancingUtilization",
          "description": "Configuration parameters of autoscaling based on load balancer."
        },
        "maxNumReplicas": {
          "type": "integer",
          "description": "The maximum number of instances that the autoscaler can scale out to. This is required when creating or updating an autoscaler. The maximum number of replicas must not be lower than minimal number of replicas."
        },
        "minNumReplicas": {
          "type": "integer",
          "description": "The minimum number of replicas that the autoscaler can scale in to. This cannot be less than 0. If not provided, autoscaler chooses a default value depending on maximum number of instances allowed."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyMode",
          "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\""
        },
        "scaleDownControl": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyScaleDownControl"
        },
        "scaleInControl": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyScaleInControl"
        },
        "scalingSchedules": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scaling schedules defined for an autoscaler. Multiple schedules can be set on an autoscaler, and they can overlap. During overlapping periods the greatest min_required_replicas of all scaling schedules is applied. Up to 128 scaling schedules are allowed."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AutoscalingPolicyCpuUtilization": {
      "description": "CPU utilization policy.",
      "properties": {
        "predictiveMethod": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyCpuUtilizationPredictiveMethod",
          "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target CPU utilization that the autoscaler maintains. Must be a float value in the range (0, 1]. If not specified, the default is 0.6. If the CPU level is below the target utilization, the autoscaler scales in the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization. If the average CPU is above the target utilization, the autoscaler scales out until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AutoscalingPolicyCpuUtilizationPredictiveMethod": {
      "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics",
          "value": "NONE"
        },
        {
          "name": "OptimizeAvailability",
          "description": "Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.",
          "value": "OPTIMIZE_AVAILABILITY"
        },
        {
          "name": "PredictiveMethodUnspecified",
          "value": "PREDICTIVE_METHOD_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:AutoscalingPolicyCpuUtilizationResponse": {
      "description": "CPU utilization policy.",
      "properties": {
        "predictiveMethod": {
          "type": "string",
          "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target CPU utilization that the autoscaler maintains. Must be a float value in the range (0, 1]. If not specified, the default is 0.6. If the CPU level is below the target utilization, the autoscaler scales in the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization. If the average CPU is above the target utilization, the autoscaler scales out until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization."
        }
      },
      "type": "object",
      "required": [
        "predictiveMethod",
        "utilizationTarget"
      ]
    },
    "google-native:compute/beta:AutoscalingPolicyCustomMetricUtilization": {
      "description": "Custom utilization metric policy.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data. For the filter to be valid for autoscaling purposes, the following rules apply: - You can only use the AND operator for joining selectors. - You can only use direct equality comparison operator (=) without any functions for each selector. - You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. - The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels. If the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a *per-group metric* for the purpose of autoscaling. If not specified, the type defaults to gce_instance. Try to provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value."
        },
        "metric": {
          "type": "string",
          "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values. The metric must have a value type of INT64 or DOUBLE."
        },
        "singleInstanceAssignment": {
          "type": "number",
          "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler keeps the number of instances proportional to the value of this metric. The metric itself does not change value due to group resizing. A good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances. A bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target value of the metric that autoscaler maintains. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric. For example, a good metric to use as a utilization_target is https://www.googleapis.com/compute/v1/instance/network/received_bytes_count. The autoscaler works to keep this value constant for each of the instances."
        },
        "utilizationTargetType": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType",
          "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AutoscalingPolicyCustomMetricUtilizationResponse": {
      "description": "Custom utilization metric policy.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data. For the filter to be valid for autoscaling purposes, the following rules apply: - You can only use the AND operator for joining selectors. - You can only use direct equality comparison operator (=) without any functions for each selector. - You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. - The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels. If the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a *per-group metric* for the purpose of autoscaling. If not specified, the type defaults to gce_instance. Try to provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value."
        },
        "metric": {
          "type": "string",
          "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values. The metric must have a value type of INT64 or DOUBLE."
        },
        "singleInstanceAssignment": {
          "type": "number",
          "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler keeps the number of instances proportional to the value of this metric. The metric itself does not change value due to group resizing. A good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances. A bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target value of the metric that autoscaler maintains. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric. For example, a good metric to use as a utilization_target is https://www.googleapis.com/compute/v1/instance/network/received_bytes_count. The autoscaler works to keep this value constant for each of the instances."
        },
        "utilizationTargetType": {
          "type": "string",
          "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "metric",
        "singleInstanceAssignment",
        "utilizationTarget",
        "utilizationTargetType"
      ]
    },
    "google-native:compute/beta:AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType": {
      "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.",
      "type": "string",
      "enum": [
        {
          "name": "DeltaPerMinute",
          "description": "Sets the utilization target value for a cumulative or delta metric, expressed as the rate of growth per minute.",
          "value": "DELTA_PER_MINUTE"
        },
        {
          "name": "DeltaPerSecond",
          "description": "Sets the utilization target value for a cumulative or delta metric, expressed as the rate of growth per second.",
          "value": "DELTA_PER_SECOND"
        },
        {
          "name": "Gauge",
          "description": "Sets the utilization target value for a gauge metric. The autoscaler will collect the average utilization of the virtual machines from the last couple of minutes, and compare the value to the utilization target value to perform autoscaling.",
          "value": "GAUGE"
        }
      ]
    },
    "google-native:compute/beta:AutoscalingPolicyLoadBalancingUtilization": {
      "description": "Configuration parameters of autoscaling based on load balancing.",
      "properties": {
        "utilizationTarget": {
          "type": "number",
          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that the autoscaler maintains. Must be a positive float value. If not defined, the default is 0.8."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AutoscalingPolicyLoadBalancingUtilizationResponse": {
      "description": "Configuration parameters of autoscaling based on load balancing.",
      "properties": {
        "utilizationTarget": {
          "type": "number",
          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that the autoscaler maintains. Must be a positive float value. If not defined, the default is 0.8."
        }
      },
      "type": "object",
      "required": [
        "utilizationTarget"
      ]
    },
    "google-native:compute/beta:AutoscalingPolicyMode": {
      "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\"",
      "type": "string",
      "enum": [
        {
          "name": "Off",
          "description": "Do not automatically scale the MIG in or out. The recommended_size field contains the size of MIG that would be set if the actuation mode was enabled.",
          "value": "OFF"
        },
        {
          "name": "On",
          "description": "Automatically scale the MIG in and out according to the policy.",
          "value": "ON"
        },
        {
          "name": "OnlyScaleOut",
          "description": "Automatically create VMs according to the policy, but do not scale the MIG in.",
          "value": "ONLY_SCALE_OUT"
        },
        {
          "name": "OnlyUp",
          "description": "Automatically create VMs according to the policy, but do not scale the MIG in.",
          "value": "ONLY_UP"
        }
      ]
    },
    "google-native:compute/beta:AutoscalingPolicyResponse": {
      "description": "Cloud Autoscaler policy.",
      "properties": {
        "coolDownPeriodSec": {
          "type": "integer",
          "description": "The number of seconds that your application takes to initialize on a VM instance. This is referred to as the [initialization period](/compute/docs/autoscaler#cool_down_period). Specifying an accurate initialization period improves autoscaler decisions. For example, when scaling out, the autoscaler ignores data from VMs that are still initializing because those VMs might not yet represent normal usage of your application. The default initialization period is 60 seconds. Initialization periods might vary because of numerous factors. We recommend that you test how long your application takes to initialize. To do this, create a VM and time your application's startup process."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyCpuUtilizationResponse",
          "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
        },
        "customMetricUtilizations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyCustomMetricUtilizationResponse"
          },
          "description": "Configuration parameters of autoscaling based on a custom metric."
        },
        "loadBalancingUtilization": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyLoadBalancingUtilizationResponse",
          "description": "Configuration parameters of autoscaling based on load balancer."
        },
        "maxNumReplicas": {
          "type": "integer",
          "description": "The maximum number of instances that the autoscaler can scale out to. This is required when creating or updating an autoscaler. The maximum number of replicas must not be lower than minimal number of replicas."
        },
        "minNumReplicas": {
          "type": "integer",
          "description": "The minimum number of replicas that the autoscaler can scale in to. This cannot be less than 0. If not provided, autoscaler chooses a default value depending on maximum number of instances allowed."
        },
        "mode": {
          "type": "string",
          "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\""
        },
        "scaleDownControl": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyScaleDownControlResponse"
        },
        "scaleInControl": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyScaleInControlResponse"
        },
        "scalingSchedules": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scaling schedules defined for an autoscaler. Multiple schedules can be set on an autoscaler, and they can overlap. During overlapping periods the greatest min_required_replicas of all scaling schedules is applied. Up to 128 scaling schedules are allowed."
        }
      },
      "type": "object",
      "required": [
        "coolDownPeriodSec",
        "cpuUtilization",
        "customMetricUtilizations",
        "loadBalancingUtilization",
        "maxNumReplicas",
        "minNumReplicas",
        "mode",
        "scaleDownControl",
        "scaleInControl",
        "scalingSchedules"
      ]
    },
    "google-native:compute/beta:AutoscalingPolicyScaleDownControl": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledDownReplicas": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercent",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AutoscalingPolicyScaleDownControlResponse": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledDownReplicas": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercentResponse",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object",
      "required": [
        "maxScaledDownReplicas",
        "timeWindowSec"
      ]
    },
    "google-native:compute/beta:AutoscalingPolicyScaleInControl": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledInReplicas": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercent",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:AutoscalingPolicyScaleInControlResponse": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledInReplicas": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercentResponse",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object",
      "required": [
        "maxScaledInReplicas",
        "timeWindowSec"
      ]
    },
    "google-native:compute/beta:Backend": {
      "description": "Message containing information of one individual backend.",
      "properties": {
        "balancingMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendBalancingMode",
          "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected."
        },
        "capacityScaler": {
          "type": "number",
          "description": "A multiplier applied to the backend's target capacity of its balancing mode. The default value is 1, which means the group serves up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. The valid ranges are 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service. Not available with backends that don't support using a balancingMode. This includes backends such as global internet NEGs, regional serverless NEGs, and PSC NEGs."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failover": {
          "type": "boolean",
          "description": "This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService."
        },
        "group": {
          "type": "string",
          "description": "The fully-qualified URL of an instance group or network endpoint group (NEG) resource. To determine what types of backends a load balancer supports, see the [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service#backends). You must use the *fully-qualified* URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported."
        },
        "maxConnections": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerEndpoint": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerInstance": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxRate": {
          "type": "integer",
          "description": "Defines a maximum number of HTTP requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerEndpoint": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerInstance": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxUtilization": {
          "type": "number",
          "description": "Optional parameter to define a target capacity for the UTILIZATION balancing mode. The valid range is [0.0, 1.0]. For usage guidelines, see Utilization balancing mode."
        },
        "preference": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendPreference",
          "description": "This field indicates whether this backend should be fully utilized before sending traffic to backends with default preference. The possible values are: - PREFERRED: Backends with this preference level will be filled up to their capacity limits first, based on RTT. - DEFAULT: If preferred backends don't have enough capacity, backends in this layer would be used and traffic would be assigned based on the load balancing algorithm you use. This is the default "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendBalancingMode": {
      "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected.",
      "type": "string",
      "enum": [
        {
          "name": "Connection",
          "description": "Balance based on the number of simultaneous connections.",
          "value": "CONNECTION"
        },
        {
          "name": "Rate",
          "description": "Balance based on requests per second (RPS).",
          "value": "RATE"
        },
        {
          "name": "Utilization",
          "description": "Balance based on the backend utilization.",
          "value": "UTILIZATION"
        }
      ]
    },
    "google-native:compute/beta:BackendBucketCdnPolicy": {
      "description": "Message containing Cloud CDN configuration for a backend bucket.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta: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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicyCacheKeyPolicy",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicyCacheMode",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicyNegativeCachingPolicy"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendBucketCdnPolicyBypassCacheOnRequestHeader": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendBucketCdnPolicyBypassCacheOnRequestHeaderResponse": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object",
      "required": [
        "headerName"
      ]
    },
    "google-native:compute/beta:BackendBucketCdnPolicyCacheKeyPolicy": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. Default parameters are always included. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendBucketCdnPolicyCacheKeyPolicyResponse": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. Default parameters are always included. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object",
      "required": [
        "includeHttpHeaders",
        "queryStringWhitelist"
      ]
    },
    "google-native:compute/beta:BackendBucketCdnPolicyCacheMode": {
      "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
      "type": "string",
      "enum": [
        {
          "name": "CacheAllStatic",
          "description": "Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
          "value": "CACHE_ALL_STATIC"
        },
        {
          "name": "ForceCacheAll",
          "description": "Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content.",
          "value": "FORCE_CACHE_ALL"
        },
        {
          "name": "InvalidCacheMode",
          "value": "INVALID_CACHE_MODE"
        },
        {
          "name": "UseOriginHeaders",
          "description": "Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server.",
          "value": "USE_ORIGIN_HEADERS"
        }
      ]
    },
    "google-native:compute/beta:BackendBucketCdnPolicyNegativeCachingPolicy": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendBucketCdnPolicyNegativeCachingPolicyResponse": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object",
      "required": [
        "code",
        "ttl"
      ]
    },
    "google-native:compute/beta:BackendBucketCdnPolicyResponse": {
      "description": "Message containing Cloud CDN configuration for a backend bucket.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicyBypassCacheOnRequestHeaderResponse"
          },
          "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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicyCacheKeyPolicyResponse",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "type": "string",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicyNegativeCachingPolicyResponse"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        },
        "signedUrlKeyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the keys for signing request URLs."
        }
      },
      "type": "object",
      "required": [
        "bypassCacheOnRequestHeaders",
        "cacheKeyPolicy",
        "cacheMode",
        "clientTtl",
        "defaultTtl",
        "maxTtl",
        "negativeCaching",
        "negativeCachingPolicy",
        "requestCoalescing",
        "serveWhileStale",
        "signedUrlCacheMaxAgeSec",
        "signedUrlKeyNames"
      ]
    },
    "google-native:compute/beta:BackendBucketCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/beta:BackendPreference": {
      "description": "This field indicates whether this backend should be fully utilized before sending traffic to backends with default preference. The possible values are: - PREFERRED: Backends with this preference level will be filled up to their capacity limits first, based on RTT. - DEFAULT: If preferred backends don't have enough capacity, backends in this layer would be used and traffic would be assigned based on the load balancing algorithm you use. This is the default ",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "No preference.",
          "value": "DEFAULT"
        },
        {
          "name": "PreferenceUnspecified",
          "description": "If preference is unspecified, we set it to the DEFAULT value",
          "value": "PREFERENCE_UNSPECIFIED"
        },
        {
          "name": "Preferred",
          "description": "Traffic will be sent to this backend first.",
          "value": "PREFERRED"
        }
      ]
    },
    "google-native:compute/beta:BackendResponse": {
      "description": "Message containing information of one individual backend.",
      "properties": {
        "balancingMode": {
          "type": "string",
          "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected."
        },
        "capacityScaler": {
          "type": "number",
          "description": "A multiplier applied to the backend's target capacity of its balancing mode. The default value is 1, which means the group serves up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. The valid ranges are 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service. Not available with backends that don't support using a balancingMode. This includes backends such as global internet NEGs, regional serverless NEGs, and PSC NEGs."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failover": {
          "type": "boolean",
          "description": "This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService."
        },
        "group": {
          "type": "string",
          "description": "The fully-qualified URL of an instance group or network endpoint group (NEG) resource. To determine what types of backends a load balancer supports, see the [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service#backends). You must use the *fully-qualified* URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported."
        },
        "maxConnections": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerEndpoint": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerInstance": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxRate": {
          "type": "integer",
          "description": "Defines a maximum number of HTTP requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerEndpoint": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerInstance": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxUtilization": {
          "type": "number",
          "description": "Optional parameter to define a target capacity for the UTILIZATION balancing mode. The valid range is [0.0, 1.0]. For usage guidelines, see Utilization balancing mode."
        },
        "preference": {
          "type": "string",
          "description": "This field indicates whether this backend should be fully utilized before sending traffic to backends with default preference. The possible values are: - PREFERRED: Backends with this preference level will be filled up to their capacity limits first, based on RTT. - DEFAULT: If preferred backends don't have enough capacity, backends in this layer would be used and traffic would be assigned based on the load balancing algorithm you use. This is the default "
        }
      },
      "type": "object",
      "required": [
        "balancingMode",
        "capacityScaler",
        "description",
        "failover",
        "group",
        "maxConnections",
        "maxConnectionsPerEndpoint",
        "maxConnectionsPerInstance",
        "maxRate",
        "maxRatePerEndpoint",
        "maxRatePerInstance",
        "maxUtilization",
        "preference"
      ]
    },
    "google-native:compute/beta:BackendServiceCdnPolicy": {
      "description": "Message containing Cloud CDN configuration for a backend service.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta: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. The cache is bypassed for all cdnPolicy.cacheMode settings."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CacheKeyPolicy",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicyCacheMode",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicyNegativeCachingPolicy"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceCdnPolicyBypassCacheOnRequestHeader": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceCdnPolicyBypassCacheOnRequestHeaderResponse": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object",
      "required": [
        "headerName"
      ]
    },
    "google-native:compute/beta:BackendServiceCdnPolicyCacheMode": {
      "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
      "type": "string",
      "enum": [
        {
          "name": "CacheAllStatic",
          "description": "Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
          "value": "CACHE_ALL_STATIC"
        },
        {
          "name": "ForceCacheAll",
          "description": "Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content.",
          "value": "FORCE_CACHE_ALL"
        },
        {
          "name": "InvalidCacheMode",
          "value": "INVALID_CACHE_MODE"
        },
        {
          "name": "UseOriginHeaders",
          "description": "Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server.",
          "value": "USE_ORIGIN_HEADERS"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceCdnPolicyNegativeCachingPolicy": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceCdnPolicyNegativeCachingPolicyResponse": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object",
      "required": [
        "code",
        "ttl"
      ]
    },
    "google-native:compute/beta:BackendServiceCdnPolicyResponse": {
      "description": "Message containing Cloud CDN configuration for a backend service.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicyBypassCacheOnRequestHeaderResponse"
          },
          "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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CacheKeyPolicyResponse",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "type": "string",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicyNegativeCachingPolicyResponse"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        },
        "signedUrlKeyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the keys for signing request URLs."
        }
      },
      "type": "object",
      "required": [
        "bypassCacheOnRequestHeaders",
        "cacheKeyPolicy",
        "cacheMode",
        "clientTtl",
        "defaultTtl",
        "maxTtl",
        "negativeCaching",
        "negativeCachingPolicy",
        "requestCoalescing",
        "serveWhileStale",
        "signedUrlCacheMaxAgeSec",
        "signedUrlKeyNames"
      ]
    },
    "google-native:compute/beta:BackendServiceCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceConnectionTrackingPolicy": {
      "description": "Connection Tracking configuration for this BackendService.",
      "properties": {
        "connectionPersistenceOnUnhealthyBackends": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends",
          "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence)."
        },
        "enableStrongAffinity": {
          "type": "boolean",
          "description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly."
        },
        "idleTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly."
        },
        "trackingMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceConnectionTrackingPolicyTrackingMode",
          "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode)."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends": {
      "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence).",
      "type": "string",
      "enum": [
        {
          "name": "AlwaysPersist",
          "value": "ALWAYS_PERSIST"
        },
        {
          "name": "DefaultForProtocol",
          "value": "DEFAULT_FOR_PROTOCOL"
        },
        {
          "name": "NeverPersist",
          "value": "NEVER_PERSIST"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceConnectionTrackingPolicyResponse": {
      "description": "Connection Tracking configuration for this BackendService.",
      "properties": {
        "connectionPersistenceOnUnhealthyBackends": {
          "type": "string",
          "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence)."
        },
        "enableStrongAffinity": {
          "type": "boolean",
          "description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly."
        },
        "idleTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly."
        },
        "trackingMode": {
          "type": "string",
          "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode)."
        }
      },
      "type": "object",
      "required": [
        "connectionPersistenceOnUnhealthyBackends",
        "enableStrongAffinity",
        "idleTimeoutSec",
        "trackingMode"
      ]
    },
    "google-native:compute/beta:BackendServiceConnectionTrackingPolicyTrackingMode": {
      "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode).",
      "type": "string",
      "enum": [
        {
          "name": "InvalidTrackingMode",
          "value": "INVALID_TRACKING_MODE"
        },
        {
          "name": "PerConnection",
          "value": "PER_CONNECTION"
        },
        {
          "name": "PerSession",
          "value": "PER_SESSION"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceFailoverPolicy": {
      "description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
      "properties": {
        "disableConnectionDrainOnFailover": {
          "type": "boolean",
          "description": "This can be set to true only if the protocol is TCP. The default is false."
        },
        "dropTrafficIfUnhealthy": {
          "type": "boolean",
          "description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false."
        },
        "failoverRatio": {
          "type": "number",
          "description": "The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceFailoverPolicyResponse": {
      "description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
      "properties": {
        "disableConnectionDrainOnFailover": {
          "type": "boolean",
          "description": "This can be set to true only if the protocol is TCP. The default is false."
        },
        "dropTrafficIfUnhealthy": {
          "type": "boolean",
          "description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false."
        },
        "failoverRatio": {
          "type": "number",
          "description": "The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        }
      },
      "type": "object",
      "required": [
        "disableConnectionDrainOnFailover",
        "dropTrafficIfUnhealthy",
        "failoverRatio"
      ]
    },
    "google-native:compute/beta:BackendServiceIAP": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field. @InputOnly"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceIAPResponse": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field. @InputOnly"
        },
        "oauth2ClientSecretSha256": {
          "type": "string",
          "description": "SHA256 hash value for the field oauth2_client_secret above."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "oauth2ClientId",
        "oauth2ClientSecret",
        "oauth2ClientSecretSha256"
      ]
    },
    "google-native:compute/beta:BackendServiceIpAddressSelectionPolicy": {
      "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Only",
          "description": "Only send IPv4 traffic to the backends of the Backend Service (Instance Group, Managed Instance Group, Network Endpoint Group) regardless of traffic from the client to the proxy. Only IPv4 health-checks are used to check the health of the backends. This is the default setting.",
          "value": "IPV4_ONLY"
        },
        {
          "name": "Ipv6Only",
          "description": "Only send IPv6 traffic to the backends of the Backend Service (Instance Group, Managed Instance Group, Network Endpoint Group) regardless of traffic from the client to the proxy. Only IPv6 health-checks are used to check the health of the backends.",
          "value": "IPV6_ONLY"
        },
        {
          "name": "IpAddressSelectionPolicyUnspecified",
          "description": "Unspecified IP address selection policy.",
          "value": "IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED"
        },
        {
          "name": "PreferIpv6",
          "description": "Prioritize the connection to the endpoints IPv6 address over its IPv4 address (provided there is a healthy IPv6 address).",
          "value": "PREFER_IPV6"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceLoadBalancingScheme": {
      "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "description": "Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "description": "Signifies that this will be used for Internal TCP/UDP Load Balancing.",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "description": "Signifies that this will be used for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "description": "Signifies that this will be used by Traffic Director.",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "InvalidLoadBalancingScheme",
          "value": "INVALID_LOAD_BALANCING_SCHEME"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceLocalityLbPolicy": {
      "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceLocalityLoadBalancingPolicyConfig": {
      "description": "Container for either a built-in LB policy supported by gRPC or Envoy or a custom one implemented by the end user.",
      "properties": {
        "customPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy"
        },
        "policy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigPolicy"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy": {
      "description": "The configuration for a custom policy implemented by the user and deployed with the client.",
      "properties": {
        "data": {
          "type": "string",
          "description": "An optional, arbitrary JSON object with configuration data, understood by a locally installed custom policy implementation."
        },
        "name": {
          "type": "string",
          "description": "Identifies the custom policy. The value should match the name of a custom implementation registered on the gRPC clients. It should follow protocol buffer message naming conventions and include the full path (for example, myorg.CustomLbPolicy). The maximum length is 256 characters. Do not specify the same custom policy more than once for a backend. If you do, the configuration is rejected. For an example of how to use this field, see Use a custom policy."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicyResponse": {
      "description": "The configuration for a custom policy implemented by the user and deployed with the client.",
      "properties": {
        "data": {
          "type": "string",
          "description": "An optional, arbitrary JSON object with configuration data, understood by a locally installed custom policy implementation."
        },
        "name": {
          "type": "string",
          "description": "Identifies the custom policy. The value should match the name of a custom implementation registered on the gRPC clients. It should follow protocol buffer message naming conventions and include the full path (for example, myorg.CustomLbPolicy). The maximum length is 256 characters. Do not specify the same custom policy more than once for a backend. If you do, the configuration is rejected. For an example of how to use this field, see Use a custom policy."
        }
      },
      "type": "object",
      "required": [
        "data",
        "name"
      ]
    },
    "google-native:compute/beta:BackendServiceLocalityLoadBalancingPolicyConfigPolicy": {
      "description": "The configuration for a built-in load balancing policy.",
      "properties": {
        "name": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigPolicyName",
          "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceLocalityLoadBalancingPolicyConfigPolicyName": {
      "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceLocalityLoadBalancingPolicyConfigPolicyResponse": {
      "description": "The configuration for a built-in load balancing policy.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:compute/beta:BackendServiceLocalityLoadBalancingPolicyConfigResponse": {
      "description": "Container for either a built-in LB policy supported by gRPC or Envoy or a custom one implemented by the end user.",
      "properties": {
        "customPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicyResponse"
        },
        "policy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigPolicyResponse"
        }
      },
      "type": "object",
      "required": [
        "customPolicy",
        "policy"
      ]
    },
    "google-native:compute/beta:BackendServiceLogConfig": {
      "description": "The available logging options for the load balancer traffic served by this backend service.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for the load balancer traffic served by this backend service. The default value is false."
        },
        "optionalFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field can only be specified if logging is enabled for this backend service and \"logConfig.optionalMode\" was set to CUSTOM. Contains a list of optional fields you want to include in the logs. For example: serverInstance, serverGkeDetails.cluster, serverGkeDetails.pod.podNamespace"
        },
        "optionalMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLogConfigOptionalMode",
          "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL."
        },
        "sampleRate": {
          "type": "number",
          "description": "This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceLogConfigOptionalMode": {
      "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "description": "A subset of optional fields.",
          "value": "CUSTOM"
        },
        {
          "name": "ExcludeAllOptional",
          "description": "None optional fields.",
          "value": "EXCLUDE_ALL_OPTIONAL"
        },
        {
          "name": "IncludeAllOptional",
          "description": "All optional fields.",
          "value": "INCLUDE_ALL_OPTIONAL"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceLogConfigResponse": {
      "description": "The available logging options for the load balancer traffic served by this backend service.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for the load balancer traffic served by this backend service. The default value is false."
        },
        "optionalFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field can only be specified if logging is enabled for this backend service and \"logConfig.optionalMode\" was set to CUSTOM. Contains a list of optional fields you want to include in the logs. For example: serverInstance, serverGkeDetails.cluster, serverGkeDetails.pod.podNamespace"
        },
        "optionalMode": {
          "type": "string",
          "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL."
        },
        "sampleRate": {
          "type": "number",
          "description": "This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "optionalFields",
        "optionalMode",
        "sampleRate"
      ]
    },
    "google-native:compute/beta:BackendServiceProtocol": {
      "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "description": "gRPC (available for Traffic Director).",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "description": "HTTP/2 with SSL.",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Ssl",
          "description": "TCP proxying with SSL.",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "description": "TCP proxying or TCP pass-through.",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "description": "UDP.",
          "value": "UDP"
        },
        {
          "name": "Unspecified",
          "description": "If a Backend Service has UNSPECIFIED as its protocol, it can be used with any L3/L4 Forwarding Rules.",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceSessionAffinity": {
      "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/beta:BackendServiceUsedBy": {
      "properties": {
        "reference": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BackendServiceUsedByResponse": {
      "properties": {
        "reference": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "reference"
      ]
    },
    "google-native:compute/beta:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "condition": {
          "$ref": "#/types/google-native:compute%2Fbeta:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "condition": {
          "$ref": "#/types/google-native:compute%2Fbeta:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "bindingId",
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:compute/beta:CacheKeyPolicy": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHost": {
          "type": "boolean",
          "description": "If true, requests to different hosts will be cached separately."
        },
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "includeNamedCookies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP cookies (by name) to be used in the cache key. The name=value pair will be used in the cache key Cloud CDN generates."
        },
        "includeProtocol": {
          "type": "boolean",
          "description": "If true, http and https requests will be cached separately."
        },
        "includeQueryString": {
          "type": "boolean",
          "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
        },
        "queryStringBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:CacheKeyPolicyResponse": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHost": {
          "type": "boolean",
          "description": "If true, requests to different hosts will be cached separately."
        },
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "includeNamedCookies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP cookies (by name) to be used in the cache key. The name=value pair will be used in the cache key Cloud CDN generates."
        },
        "includeProtocol": {
          "type": "boolean",
          "description": "If true, http and https requests will be cached separately."
        },
        "includeQueryString": {
          "type": "boolean",
          "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
        },
        "queryStringBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object",
      "required": [
        "includeHost",
        "includeHttpHeaders",
        "includeNamedCookies",
        "includeProtocol",
        "includeQueryString",
        "queryStringBlacklist",
        "queryStringWhitelist"
      ]
    },
    "google-native:compute/beta:CircuitBreakers": {
      "description": "Settings controlling the volume of requests, connections and retries to this backend service.",
      "properties": {
        "connectTimeout": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "The timeout for new network connections to hosts."
        },
        "maxConnections": {
          "type": "integer",
          "description": "The maximum number of connections to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxPendingRequests": {
          "type": "integer",
          "description": "The maximum number of pending requests allowed to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRequests": {
          "type": "integer",
          "description": "The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit."
        },
        "maxRequestsPerConnection": {
          "type": "integer",
          "description": "Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRetries": {
          "type": "integer",
          "description": "The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:CircuitBreakersResponse": {
      "description": "Settings controlling the volume of requests, connections and retries to this backend service.",
      "properties": {
        "connectTimeout": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "The timeout for new network connections to hosts."
        },
        "maxConnections": {
          "type": "integer",
          "description": "The maximum number of connections to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxPendingRequests": {
          "type": "integer",
          "description": "The maximum number of pending requests allowed to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRequests": {
          "type": "integer",
          "description": "The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit."
        },
        "maxRequestsPerConnection": {
          "type": "integer",
          "description": "Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRetries": {
          "type": "integer",
          "description": "The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "connectTimeout",
        "maxConnections",
        "maxPendingRequests",
        "maxRequests",
        "maxRequestsPerConnection",
        "maxRetries"
      ]
    },
    "google-native:compute/beta:Condition": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "iam": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConditionIam",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "op": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConditionOp",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "svc": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "sys": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConditionSys",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ConditionIam": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Approver",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "APPROVER"
        },
        {
          "name": "Attribution",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ATTRIBUTION"
        },
        {
          "name": "Authority",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "AUTHORITY"
        },
        {
          "name": "CredentialsType",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "CREDENTIALS_TYPE"
        },
        {
          "name": "CredsAssertion",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "CREDS_ASSERTION"
        },
        {
          "name": "JustificationType",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "JUSTIFICATION_TYPE"
        },
        {
          "name": "NoAttr",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ATTR"
        },
        {
          "name": "SecurityRealm",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "SECURITY_REALM"
        }
      ]
    },
    "google-native:compute/beta:ConditionOp": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Discharged",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DISCHARGED"
        },
        {
          "name": "Equals",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "EQUALS"
        },
        {
          "name": "In",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "IN"
        },
        {
          "name": "NotEquals",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NOT_EQUALS"
        },
        {
          "name": "NotIn",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NOT_IN"
        },
        {
          "name": "NoOp",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_OP"
        }
      ]
    },
    "google-native:compute/beta:ConditionResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "iam": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "op": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "svc": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "sys": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "iam",
        "op",
        "svc",
        "sys",
        "values"
      ]
    },
    "google-native:compute/beta:ConditionSys": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Ip",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "IP"
        },
        {
          "name": "Name",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NAME"
        },
        {
          "name": "NoAttr",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ATTR"
        },
        {
          "name": "Region",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "REGION"
        },
        {
          "name": "Service",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "SERVICE"
        }
      ]
    },
    "google-native:compute/beta:ConfidentialInstanceConfig": {
      "description": "A set of Confidential Instance options.",
      "properties": {
        "confidentialInstanceType": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConfidentialInstanceConfigConfidentialInstanceType",
          "description": "Defines the type of technology used by the confidential instance."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Defines whether the instance should have confidential compute enabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ConfidentialInstanceConfigConfidentialInstanceType": {
      "description": "Defines the type of technology used by the confidential instance.",
      "type": "string",
      "enum": [
        {
          "name": "ConfidentialInstanceTypeUnspecified",
          "description": "No type specified. Do not use this value.",
          "value": "CONFIDENTIAL_INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Sev",
          "description": "AMD Secure Encrypted Virtualization.",
          "value": "SEV"
        },
        {
          "name": "SevSnp",
          "description": "AMD Secure Encrypted Virtualization - Secure Nested Paging.",
          "value": "SEV_SNP"
        }
      ]
    },
    "google-native:compute/beta:ConfidentialInstanceConfigResponse": {
      "description": "A set of Confidential Instance options.",
      "properties": {
        "confidentialInstanceType": {
          "type": "string",
          "description": "Defines the type of technology used by the confidential instance."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Defines whether the instance should have confidential compute enabled."
        }
      },
      "type": "object",
      "required": [
        "confidentialInstanceType",
        "enableConfidentialCompute"
      ]
    },
    "google-native:compute/beta:ConnectionDraining": {
      "description": "Message containing connection draining configuration.",
      "properties": {
        "drainingTimeoutSec": {
          "type": "integer",
          "description": "Configures a duration timeout for existing requests on a removed backend instance. For supported load balancers and protocols, as described in Enabling connection draining."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ConnectionDrainingResponse": {
      "description": "Message containing connection draining configuration.",
      "properties": {
        "drainingTimeoutSec": {
          "type": "integer",
          "description": "Configures a duration timeout for existing requests on a removed backend instance. For supported load balancers and protocols, as described in Enabling connection draining."
        }
      },
      "type": "object",
      "required": [
        "drainingTimeoutSec"
      ]
    },
    "google-native:compute/beta:ConsistentHashLoadBalancerSettings": {
      "description": "This message defines settings for a consistent hash style load balancer.",
      "properties": {
        "httpCookie": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConsistentHashLoadBalancerSettingsHttpCookie",
          "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpHeaderName": {
          "type": "string",
          "description": "The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD."
        },
        "minimumRingSize": {
          "type": "string",
          "description": "The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ConsistentHashLoadBalancerSettingsHttpCookie": {
      "description": "The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the cookie."
        },
        "path": {
          "type": "string",
          "description": "Path to set for the cookie."
        },
        "ttl": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Lifetime of the cookie."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ConsistentHashLoadBalancerSettingsHttpCookieResponse": {
      "description": "The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the cookie."
        },
        "path": {
          "type": "string",
          "description": "Path to set for the cookie."
        },
        "ttl": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Lifetime of the cookie."
        }
      },
      "type": "object",
      "required": [
        "name",
        "path",
        "ttl"
      ]
    },
    "google-native:compute/beta:ConsistentHashLoadBalancerSettingsResponse": {
      "description": "This message defines settings for a consistent hash style load balancer.",
      "properties": {
        "httpCookie": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConsistentHashLoadBalancerSettingsHttpCookieResponse",
          "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpHeaderName": {
          "type": "string",
          "description": "The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD."
        },
        "minimumRingSize": {
          "type": "string",
          "description": "The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node."
        }
      },
      "type": "object",
      "required": [
        "httpCookie",
        "httpHeaderName",
        "minimumRingSize"
      ]
    },
    "google-native:compute/beta:CorsPolicy": {
      "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard.",
      "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. Default is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies a regular expression that matches allowed origins. For more information about the regular expression syntax, see Syntax. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that is allowed to do CORS requests. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes."
        },
        "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."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "integer",
          "description": "Specifies how long results of a preflight request can be cached in seconds. This field translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:CorsPolicyResponse": {
      "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard.",
      "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. Default is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies a regular expression that matches allowed origins. For more information about the regular expression syntax, see Syntax. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that is allowed to do CORS requests. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes."
        },
        "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."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "integer",
          "description": "Specifies how long results of a preflight request can be cached in seconds. This field translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object",
      "required": [
        "allowCredentials",
        "allowHeaders",
        "allowMethods",
        "allowOriginRegexes",
        "allowOrigins",
        "disabled",
        "exposeHeaders",
        "maxAge"
      ]
    },
    "google-native:compute/beta:CustomErrorResponsePolicy": {
      "description": "Specifies the custom error response policy that must be applied when the backend service or backend bucket responds with an error.",
      "properties": {
        "errorResponseRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyCustomErrorResponseRule"
          },
          "description": "Specifies rules for returning error responses. In 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. For example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX). If 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."
        },
        "errorService": {
          "type": "string",
          "description": "The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are: - https://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket - compute/v1/projects/project/global/backendBuckets/myBackendBucket - global/backendBuckets/myBackendBucket If 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. If load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured). errorService is not supported for internal or regional HTTP/HTTPS load balancers."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:CustomErrorResponsePolicyCustomErrorResponseRule": {
      "description": "Specifies the mapping between the response code that will be returned along with the custom error content and the response code returned by the backend service.",
      "properties": {
        "matchResponseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Valid values include: - 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. - 5xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 500 to 599. - 4xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 400 to 499. Values must be unique within matchResponseCodes and across all errorResponseRules of CustomErrorResponsePolicy."
        },
        "overrideResponseCode": {
          "type": "integer",
          "description": "The HTTP status code returned with the response containing the custom error content. If overrideResponseCode is not supplied, the same response code returned by the original backend bucket or backend service is returned to the client."
        },
        "path": {
          "type": "string",
          "description": "The full path to a file within backendBucket . For example: /errors/defaultError.html path must start with a leading slash. path cannot have trailing slashes. If 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. The value must be from 1 to 1024 characters"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:CustomErrorResponsePolicyCustomErrorResponseRuleResponse": {
      "description": "Specifies the mapping between the response code that will be returned along with the custom error content and the response code returned by the backend service.",
      "properties": {
        "matchResponseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Valid values include: - 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. - 5xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 500 to 599. - 4xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 400 to 499. Values must be unique within matchResponseCodes and across all errorResponseRules of CustomErrorResponsePolicy."
        },
        "overrideResponseCode": {
          "type": "integer",
          "description": "The HTTP status code returned with the response containing the custom error content. If overrideResponseCode is not supplied, the same response code returned by the original backend bucket or backend service is returned to the client."
        },
        "path": {
          "type": "string",
          "description": "The full path to a file within backendBucket . For example: /errors/defaultError.html path must start with a leading slash. path cannot have trailing slashes. If 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. The value must be from 1 to 1024 characters"
        }
      },
      "type": "object",
      "required": [
        "matchResponseCodes",
        "overrideResponseCode",
        "path"
      ]
    },
    "google-native:compute/beta:CustomErrorResponsePolicyResponse": {
      "description": "Specifies the custom error response policy that must be applied when the backend service or backend bucket responds with an error.",
      "properties": {
        "errorResponseRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyCustomErrorResponseRuleResponse"
          },
          "description": "Specifies rules for returning error responses. In 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. For example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX). If 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."
        },
        "errorService": {
          "type": "string",
          "description": "The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are: - https://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket - compute/v1/projects/project/global/backendBuckets/myBackendBucket - global/backendBuckets/myBackendBucket If 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. If load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured). errorService is not supported for internal or regional HTTP/HTTPS load balancers."
        }
      },
      "type": "object",
      "required": [
        "errorResponseRules",
        "errorService"
      ]
    },
    "google-native:compute/beta:CustomerEncryptionKey": {
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 "
        },
        "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. For example: \"kmsKeyServiceAccount\": \"name@project_id.iam.gserviceaccount.com/ "
        },
        "rawKey": {
          "type": "string",
          "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rawKey\": \"SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=\" "
        },
        "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. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rsaEncryptedKey\": \"ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFH z0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoD D6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oe==\" The key must meet the following requirements before you can provide it to Compute Engine: 1. The key is wrapped using a RSA public key certificate provided by Google. 2. After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Gets the RSA public key certificate provided by Google at: https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:CustomerEncryptionKeyResponse": {
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 "
        },
        "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. For example: \"kmsKeyServiceAccount\": \"name@project_id.iam.gserviceaccount.com/ "
        },
        "rawKey": {
          "type": "string",
          "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rawKey\": \"SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=\" "
        },
        "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. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rsaEncryptedKey\": \"ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFH z0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoD D6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oe==\" The key must meet the following requirements before you can provide it to Compute Engine: 1. The key is wrapped using a RSA public key certificate provided by Google. 2. After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Gets the RSA public key certificate provided by Google at: https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem "
        },
        "sha256": {
          "type": "string",
          "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName",
        "kmsKeyServiceAccount",
        "rawKey",
        "rsaEncryptedKey",
        "sha256"
      ]
    },
    "google-native:compute/beta:DeprecationStatus": {
      "description": "Deprecation status for a public resource.",
      "properties": {
        "deleted": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "deprecated": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "obsolete": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "replacement": {
          "type": "string",
          "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
        },
        "state": {
          "$ref": "#/types/google-native:compute%2Fbeta:DeprecationStatusState",
          "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error."
        },
        "stateOverride": {
          "$ref": "#/types/google-native:compute%2Fbeta:RolloutPolicy",
          "description": "The rollout policy for this deprecation. This policy is only enforced by image family views. The rollout policy restricts the zones where the associated resource is considered in a deprecated state. When the rollout policy does not include the user specified zone, or if the zone is rolled out, the associated resource is considered in a deprecated state. The rollout policy for this deprecation is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:DeprecationStatusResponse": {
      "description": "Deprecation status for a public resource.",
      "properties": {
        "deleted": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "deprecated": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "obsolete": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "replacement": {
          "type": "string",
          "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
        },
        "state": {
          "type": "string",
          "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error."
        },
        "stateOverride": {
          "$ref": "#/types/google-native:compute%2Fbeta:RolloutPolicyResponse",
          "description": "The rollout policy for this deprecation. This policy is only enforced by image family views. The rollout policy restricts the zones where the associated resource is considered in a deprecated state. When the rollout policy does not include the user specified zone, or if the zone is rolled out, the associated resource is considered in a deprecated state. The rollout policy for this deprecation is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
        }
      },
      "type": "object",
      "required": [
        "deleted",
        "deprecated",
        "obsolete",
        "replacement",
        "state",
        "stateOverride"
      ]
    },
    "google-native:compute/beta:DeprecationStatusState": {
      "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "value": "ACTIVE"
        },
        {
          "name": "Deleted",
          "value": "DELETED"
        },
        {
          "name": "Deprecated",
          "value": "DEPRECATED"
        },
        {
          "name": "Obsolete",
          "value": "OBSOLETE"
        }
      ]
    },
    "google-native:compute/beta:DiskArchitecture": {
      "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/beta:DiskAsyncReplication": {
      "properties": {
        "disk": {
          "type": "string",
          "description": "The other disk asynchronously replicated to or from the current disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:DiskAsyncReplicationResponse": {
      "properties": {
        "consistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy if replication was started on the disk as a member of a group."
        },
        "consistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy if replication was started on the disk as a member of a group."
        },
        "disk": {
          "type": "string",
          "description": "The other disk asynchronously replicated to or from the current disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        },
        "diskId": {
          "type": "string",
          "description": "The unique ID of the other disk asynchronously replicated to or from the current disk. This value identifies the exact disk that was used to create this replication. For example, if you started replicating the persistent disk from a disk that was later deleted and recreated under the same name, the disk ID would identify the exact version of the disk that was used."
        }
      },
      "type": "object",
      "required": [
        "consistencyGroupPolicy",
        "consistencyGroupPolicyId",
        "disk",
        "diskId"
      ]
    },
    "google-native:compute/beta:DiskInstantiationConfig": {
      "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "customImage": {
          "type": "string",
          "description": "The custom source image to be used to restore this disk when instantiating this instance template."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the device name of the disk to which the configurations apply to."
        },
        "instantiateFrom": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskInstantiationConfigInstantiateFrom",
          "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:DiskInstantiationConfigInstantiateFrom": {
      "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. ",
      "type": "string",
      "enum": [
        {
          "name": "AttachReadOnly",
          "description": "Attach the existing disk in read-only mode. The request will fail if the disk was attached in read-write mode on the source instance. Applicable to: read-only disks.",
          "value": "ATTACH_READ_ONLY"
        },
        {
          "name": "Blank",
          "description": "Create a blank disk. The disk will be created unformatted. Applicable to: additional read-write disks, local SSDs.",
          "value": "BLANK"
        },
        {
          "name": "CustomImage",
          "description": "Use the custom image specified in the custom_image field. Applicable to: boot disk, additional read-write disks.",
          "value": "CUSTOM_IMAGE"
        },
        {
          "name": "Default",
          "description": "Use the default instantiation option for the corresponding type of disk. For boot disk and any other R/W disks, new custom images will be created from each disk. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes.",
          "value": "DEFAULT"
        },
        {
          "name": "DoNotInclude",
          "description": "Do not include the disk in the instance template. Applicable to: additional read-write disks, local SSDs, read-only disks.",
          "value": "DO_NOT_INCLUDE"
        },
        {
          "name": "SourceImage",
          "description": "Use the same source image used for creation of the source instance's corresponding disk. The request will fail if the source VM's disk was created from a snapshot. Applicable to: boot disk, additional read-write disks.",
          "value": "SOURCE_IMAGE"
        },
        {
          "name": "SourceImageFamily",
          "description": "Use the same source image family used for creation of the source instance's corresponding disk. The request will fail if the source image of the source disk does not belong to any image family. Applicable to: boot disk, additional read-write disks.",
          "value": "SOURCE_IMAGE_FAMILY"
        }
      ]
    },
    "google-native:compute/beta:DiskInstantiationConfigResponse": {
      "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "customImage": {
          "type": "string",
          "description": "The custom source image to be used to restore this disk when instantiating this instance template."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the device name of the disk to which the configurations apply to."
        },
        "instantiateFrom": {
          "type": "string",
          "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. "
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "customImage",
        "deviceName",
        "instantiateFrom"
      ]
    },
    "google-native:compute/beta:DiskInterface": {
      "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:DiskParams": {
      "description": "Additional disk params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:DiskParamsResponse": {
      "description": "Additional disk params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        }
      },
      "type": "object",
      "required": [
        "resourceManagerTags"
      ]
    },
    "google-native:compute/beta:DiskResourceStatusAsyncReplicationStatusResponse": {
      "properties": {
        "state": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:compute/beta:DiskResourceStatusResponse": {
      "properties": {
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskResourceStatusAsyncReplicationStatusResponse"
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key: disk, value: AsyncReplicationStatus message"
        }
      },
      "type": "object",
      "required": [
        "asyncPrimaryDisk",
        "asyncSecondaryDisks"
      ]
    },
    "google-native:compute/beta:DiskStorageType": {
      "description": "[Deprecated] Storage type of the persistent disk.",
      "type": "string",
      "enum": [
        {
          "name": "Hdd",
          "value": "HDD"
        },
        {
          "name": "Ssd",
          "value": "SSD"
        }
      ]
    },
    "google-native:compute/beta:DisplayDevice": {
      "description": "A set of Display Device options",
      "properties": {
        "enableDisplay": {
          "type": "boolean",
          "description": "Defines whether the instance has Display enabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:DisplayDeviceResponse": {
      "description": "A set of Display Device options",
      "properties": {
        "enableDisplay": {
          "type": "boolean",
          "description": "Defines whether the instance has Display enabled."
        }
      },
      "type": "object",
      "required": [
        "enableDisplay"
      ]
    },
    "google-native:compute/beta:DistributionPolicy": {
      "properties": {
        "targetShape": {
          "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicyTargetShape",
          "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType)."
        },
        "zones": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicyZoneConfiguration"
          },
          "description": "Zones where the regional managed instance group will create and manage its instances."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:DistributionPolicyResponse": {
      "properties": {
        "targetShape": {
          "type": "string",
          "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType)."
        },
        "zones": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicyZoneConfigurationResponse"
          },
          "description": "Zones where the regional managed instance group will create and manage its instances."
        }
      },
      "type": "object",
      "required": [
        "targetShape",
        "zones"
      ]
    },
    "google-native:compute/beta:DistributionPolicyTargetShape": {
      "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType).",
      "type": "string",
      "enum": [
        {
          "name": "Any",
          "description": "The group picks zones for creating VM instances to fulfill the requested number of VMs within present resource constraints and to maximize utilization of unused zonal reservations. Recommended for batch workloads that do not require high availability.",
          "value": "ANY"
        },
        {
          "name": "AnySingleZone",
          "description": "The group creates all VM instances within a single zone. The zone is selected based on the present resource constraints and to maximize utilization of unused zonal reservations. Recommended for batch workloads with heavy interprocess communication.",
          "value": "ANY_SINGLE_ZONE"
        },
        {
          "name": "Balanced",
          "description": "The group prioritizes acquisition of resources, scheduling VMs in zones where resources are available while distributing VMs as evenly as possible across selected zones to minimize the impact of zonal failure. Recommended for highly available serving workloads.",
          "value": "BALANCED"
        },
        {
          "name": "Even",
          "description": "The group schedules VM instance creation and deletion to achieve and maintain an even number of managed instances across the selected zones. The distribution is even when the number of managed instances does not differ by more than 1 between any two zones. Recommended for highly available serving workloads.",
          "value": "EVEN"
        }
      ]
    },
    "google-native:compute/beta:DistributionPolicyZoneConfiguration": {
      "properties": {
        "zone": {
          "type": "string",
          "description": "The URL of the zone. The zone must exist in the region where the managed instance group is located."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:DistributionPolicyZoneConfigurationResponse": {
      "properties": {
        "zone": {
          "type": "string",
          "description": "The URL of the zone. The zone must exist in the region where the managed instance group is located."
        }
      },
      "type": "object",
      "required": [
        "zone"
      ]
    },
    "google-native:compute/beta:Duration": {
      "description": "A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". Range is approximately 10,000 years.",
      "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."
        },
        "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"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:DurationResponse": {
      "description": "A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". Range is approximately 10,000 years.",
      "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."
        },
        "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"
        }
      },
      "type": "object",
      "required": [
        "nanos",
        "seconds"
      ]
    },
    "google-native:compute/beta:ErrorInfoResponse": {
      "description": "Describes the cause of the error with structured details. Example of an error when contacting the \"pubsub.googleapis.com\" API when it is not enabled: { \"reason\": \"API_DISABLED\" \"domain\": \"googleapis.com\" \"metadata\": { \"resource\": \"projects/123\", \"service\": \"pubsub.googleapis.com\" } } This response indicates that the pubsub.googleapis.com API is not enabled. Example of an error that is returned when attempting to create a Spanner instance in a region that is out of stock: { \"reason\": \"STOCKOUT\" \"domain\": \"spanner.googleapis.com\", \"metadata\": { \"availableRegions\": \"us-central1,us-east2\" } }",
      "properties": {
        "domain": {
          "type": "string",
          "description": "The 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\". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is \"googleapis.com\"."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional structured details about this error. Keys should match /[a-zA-Z0-9-_]/ and be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {\"instanceLimit\": \"100/request\"}, should be returned as, {\"instanceLimitPerRequest\": \"100\"}, if the client exceeds the number of instances that can be created in a single (batch) request."
        },
        "reason": {
          "type": "string",
          "description": "The 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. This should be at most 63 characters and match a regular expression of `A-Z+[A-Z0-9]`, which represents UPPER_SNAKE_CASE."
        }
      },
      "type": "object",
      "required": [
        "domain",
        "metadatas",
        "reason"
      ]
    },
    "google-native:compute/beta:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:compute/beta:ExternalVpnGatewayInterface": {
      "description": "The interface for the external VPN gateway.",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The numeric ID of this interface. The allowed input values for this id for different redundancy types of external VPN gateway: - SINGLE_IP_INTERNALLY_REDUNDANT - 0 - TWO_IPS_REDUNDANCY - 0, 1 - FOUR_IPS_REDUNDANCY - 0, 1, 2, 3 "
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface in the external VPN gateway. Only IPv4 is supported. This IP address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address of the interface in the external VPN gateway. This IPv6 address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine. Must specify an IPv6 address (not IPV4-mapped) using any format described in RFC 4291 (e.g. 2001:db8:0:0:2d9:51:0:0). The output format is RFC 5952 format (e.g. 2001:db8::2d9:51:0:0)."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ExternalVpnGatewayInterfaceResponse": {
      "description": "The interface for the external VPN gateway.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface in the external VPN gateway. Only IPv4 is supported. This IP address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address of the interface in the external VPN gateway. This IPv6 address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine. Must specify an IPv6 address (not IPV4-mapped) using any format described in RFC 4291 (e.g. 2001:db8:0:0:2d9:51:0:0). The output format is RFC 5952 format (e.g. 2001:db8::2d9:51:0:0)."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ipv6Address"
      ]
    },
    "google-native:compute/beta:ExternalVpnGatewayRedundancyType": {
      "description": "Indicates the user-supplied redundancy type of this external VPN gateway.",
      "type": "string",
      "enum": [
        {
          "name": "FourIpsRedundancy",
          "description": "The external VPN gateway has four public IP addresses; at the time of writing this API, the AWS virtual private gateway is an example which has four public IP addresses for high availability connections; there should be two VPN connections in the AWS virtual private gateway , each AWS VPN connection has two public IP addresses; please make sure to put two public IP addresses from one AWS VPN connection into interfaces 0 and 1 of this external VPN gateway, and put the other two public IP addresses from another AWS VPN connection into interfaces 2 and 3 of this external VPN gateway. When displaying highly available configuration status for the VPN tunnels connected to FOUR_IPS_REDUNDANCY external VPN gateway, Google will always detect whether interfaces 0 and 1 are connected on one interface of HA Cloud VPN gateway, and detect whether interfaces 2 and 3 are connected to another interface of the HA Cloud VPN gateway.",
          "value": "FOUR_IPS_REDUNDANCY"
        },
        {
          "name": "SingleIpInternallyRedundant",
          "description": "The external VPN gateway has only one public IP address which internally provide redundancy or failover.",
          "value": "SINGLE_IP_INTERNALLY_REDUNDANT"
        },
        {
          "name": "TwoIpsRedundancy",
          "description": "The external VPN gateway has two public IP addresses which are redundant with each other, the following two types of setup on your on-premises side would have this type of redundancy: (1) Two separate on-premises gateways, each with one public IP address, the two on-premises gateways are redundant with each other. (2) A single on-premise gateway with two public IP addresses that are redundant with eatch other.",
          "value": "TWO_IPS_REDUNDANCY"
        }
      ]
    },
    "google-native:compute/beta:FileContentBuffer": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The raw content in the secure keys file."
        },
        "fileType": {
          "$ref": "#/types/google-native:compute%2Fbeta:FileContentBufferFileType",
          "description": "The file type of source file."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FileContentBufferFileType": {
      "description": "The file type of source file.",
      "type": "string",
      "enum": [
        {
          "name": "Bin",
          "value": "BIN"
        },
        {
          "name": "Undefined",
          "value": "UNDEFINED"
        },
        {
          "name": "X509",
          "value": "X509"
        }
      ]
    },
    "google-native:compute/beta:FileContentBufferResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The raw content in the secure keys file."
        },
        "fileType": {
          "type": "string",
          "description": "The file type of source file."
        }
      },
      "type": "object",
      "required": [
        "content",
        "fileType"
      ]
    },
    "google-native:compute/beta:FirewallAllowedItem": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FirewallAllowedItemResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/beta:FirewallDeniedItem": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FirewallDeniedItemResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/beta:FirewallDirection": {
      "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields.",
      "type": "string",
      "enum": [
        {
          "name": "Egress",
          "description": "Indicates that firewall should apply to outgoing traffic.",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "description": "Indicates that firewall should apply to incoming traffic.",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/beta:FirewallLogConfig": {
      "description": "The available logging options for a firewall rule.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "This field denotes whether to enable logging for a particular firewall rule."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:FirewallLogConfigMetadata",
          "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FirewallLogConfigMetadata": {
      "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs.",
      "type": "string",
      "enum": [
        {
          "name": "ExcludeAllMetadata",
          "value": "EXCLUDE_ALL_METADATA"
        },
        {
          "name": "IncludeAllMetadata",
          "value": "INCLUDE_ALL_METADATA"
        }
      ]
    },
    "google-native:compute/beta:FirewallLogConfigResponse": {
      "description": "The available logging options for a firewall rule.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "This field denotes whether to enable logging for a particular firewall rule."
        },
        "metadata": {
          "type": "string",
          "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "metadata"
      ]
    },
    "google-native:compute/beta:FirewallPolicyAssociation": {
      "properties": {
        "attachmentTarget": {
          "type": "string",
          "description": "The target that the firewall policy is attached to."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FirewallPolicyAssociationResponse": {
      "properties": {
        "attachmentTarget": {
          "type": "string",
          "description": "The target that the firewall policy is attached to."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. The display name of the firewall policy of the association."
        },
        "firewallPolicyId": {
          "type": "string",
          "description": "The firewall policy ID of the association."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        },
        "shortName": {
          "type": "string",
          "description": "The short name of the firewall policy of the association."
        }
      },
      "type": "object",
      "required": [
        "attachmentTarget",
        "displayName",
        "firewallPolicyId",
        "name",
        "shortName"
      ]
    },
    "google-native:compute/beta:FirewallPolicyRule": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the client connection triggers the rule. Valid actions are \"allow\", \"deny\" and \"goto_next\"."
        },
        "description": {
          "type": "string",
          "description": "An optional description for this resource."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleDirection",
          "description": "The direction in which this rule applies."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall policy rule is disabled. When set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist. If this is unspecified, the firewall policy rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules."
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleMatcher",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority."
        },
        "ruleName": {
          "type": "string",
          "description": "An optional name for the rule. This field is not a unique identifier and can be updated."
        },
        "securityProfileGroup": {
          "type": "string",
          "description": "A fully-qualified URL of a SecurityProfile resource instance. Example: https://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group Must be specified if action = 'apply_security_profile_group' and cannot be specified for other actions."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule."
        },
        "targetSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleSecureTag"
          },
          "description": "A list of secure tags that controls which instances the firewall rule applies to. If targetSecureTag are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the target_secure_tag are in INEFFECTIVE state, then this rule will be ignored. targetSecureTag may not be set at the same time as targetServiceAccounts. If neither targetServiceAccounts nor targetSecureTag are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        },
        "tlsInspect": {
          "type": "boolean",
          "description": "Boolean flag indicating if the traffic should be TLS decrypted. Can be set only if action = 'apply_security_profile_group' and cannot be set for other actions."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FirewallPolicyRuleDirection": {
      "description": "The direction in which this rule applies.",
      "type": "string",
      "enum": [
        {
          "name": "Egress",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/beta:FirewallPolicyRuleMatcher": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "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."
        },
        "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."
        },
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "destThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleMatcherLayer4Config"
          },
          "description": "Pairs of IP protocols and ports that the rule should match."
        },
        "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."
        },
        "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."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "srcSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleSecureTag"
          },
          "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."
        },
        "srcThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FirewallPolicyRuleMatcherLayer4Config": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FirewallPolicyRuleMatcherLayer4ConfigResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/beta:FirewallPolicyRuleMatcherResponse": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "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."
        },
        "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."
        },
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "destThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleMatcherLayer4ConfigResponse"
          },
          "description": "Pairs of IP protocols and ports that the rule should match."
        },
        "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."
        },
        "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."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "srcSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleSecureTagResponse"
          },
          "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."
        },
        "srcThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source."
        }
      },
      "type": "object",
      "required": [
        "destAddressGroups",
        "destFqdns",
        "destIpRanges",
        "destRegionCodes",
        "destThreatIntelligences",
        "layer4Configs",
        "srcAddressGroups",
        "srcFqdns",
        "srcIpRanges",
        "srcRegionCodes",
        "srcSecureTags",
        "srcThreatIntelligences"
      ]
    },
    "google-native:compute/beta:FirewallPolicyRuleResponse": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the client connection triggers the rule. Valid actions are \"allow\", \"deny\" and \"goto_next\"."
        },
        "description": {
          "type": "string",
          "description": "An optional description for this resource."
        },
        "direction": {
          "type": "string",
          "description": "The direction in which this rule applies."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall policy rule is disabled. When set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist. If this is unspecified, the firewall policy rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyRule for firewall policy rules"
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleMatcherResponse",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority."
        },
        "ruleName": {
          "type": "string",
          "description": "An optional name for the rule. This field is not a unique identifier and can be updated."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Calculation of the complexity of a single firewall policy rule."
        },
        "securityProfileGroup": {
          "type": "string",
          "description": "A fully-qualified URL of a SecurityProfile resource instance. Example: https://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group Must be specified if action = 'apply_security_profile_group' and cannot be specified for other actions."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule."
        },
        "targetSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleSecureTagResponse"
          },
          "description": "A list of secure tags that controls which instances the firewall rule applies to. If targetSecureTag are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the target_secure_tag are in INEFFECTIVE state, then this rule will be ignored. targetSecureTag may not be set at the same time as targetServiceAccounts. If neither targetServiceAccounts nor targetSecureTag are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        },
        "tlsInspect": {
          "type": "boolean",
          "description": "Boolean flag indicating if the traffic should be TLS decrypted. Can be set only if action = 'apply_security_profile_group' and cannot be set for other actions."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "direction",
        "disabled",
        "enableLogging",
        "kind",
        "match",
        "priority",
        "ruleName",
        "ruleTupleCount",
        "securityProfileGroup",
        "targetResources",
        "targetSecureTags",
        "targetServiceAccounts",
        "tlsInspect"
      ]
    },
    "google-native:compute/beta:FirewallPolicyRuleSecureTag": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the secure tag, created with TagManager's TagValue API."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FirewallPolicyRuleSecureTagResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the secure tag, created with TagManager's TagValue API."
        },
        "state": {
          "type": "string",
          "description": "State of the secure tag, either `EFFECTIVE` or `INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted or its network is deleted."
        }
      },
      "type": "object",
      "required": [
        "name",
        "state"
      ]
    },
    "google-native:compute/beta:FixedOrPercent": {
      "description": "Encapsulates numeric value that can be either absolute or relative.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed number of VM instances. This must be a positive integer."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FixedOrPercentResponse": {
      "description": "Encapsulates numeric value that can be either absolute or relative.",
      "properties": {
        "calculated": {
          "type": "integer",
          "description": "Absolute value of VM instances calculated based on the specific mode. - If the value is fixed, then the calculated value is equal to the fixed value. - If the value is a percent, then the calculated value is percent/100 * targetSize. For example, the calculated value of a 80% of a managed instance group with 150 instances would be (80/100 * 150) = 120 VM instances. If there is a remainder, the number is rounded. "
        },
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed number of VM instances. This must be a positive integer."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%."
        }
      },
      "type": "object",
      "required": [
        "calculated",
        "fixed",
        "percent"
      ]
    },
    "google-native:compute/beta:ForwardingRuleIpProtocol": {
      "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
      "type": "string",
      "enum": [
        {
          "name": "Ah",
          "value": "AH"
        },
        {
          "name": "Esp",
          "value": "ESP"
        },
        {
          "name": "Icmp",
          "value": "ICMP"
        },
        {
          "name": "L3Default",
          "value": "L3_DEFAULT"
        },
        {
          "name": "Sctp",
          "value": "SCTP"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/beta:ForwardingRuleIpVersion": {
      "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/beta:ForwardingRuleLoadBalancingScheme": {
      "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/beta:ForwardingRuleNetworkTier": {
      "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/beta:ForwardingRulePscConnectionStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Accepted",
          "description": "The connection has been accepted by the producer.",
          "value": "ACCEPTED"
        },
        {
          "name": "Closed",
          "description": "The connection has been closed by the producer and will not serve traffic going forward.",
          "value": "CLOSED"
        },
        {
          "name": "NeedsAttention",
          "description": "The connection has been accepted by the producer, but the producer needs to take further action before the forwarding rule can serve traffic.",
          "value": "NEEDS_ATTENTION"
        },
        {
          "name": "Pending",
          "description": "The connection is pending acceptance by the producer.",
          "value": "PENDING"
        },
        {
          "name": "Rejected",
          "description": "The connection has been rejected by the producer.",
          "value": "REJECTED"
        },
        {
          "name": "StatusUnspecified",
          "value": "STATUS_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:ForwardingRuleServiceDirectoryRegistration": {
      "description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Service Directory namespace to register the forwarding rule under."
        },
        "service": {
          "type": "string",
          "description": "Service Directory service to register the forwarding rule under."
        },
        "serviceDirectoryRegion": {
          "type": "string",
          "description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ForwardingRuleServiceDirectoryRegistrationResponse": {
      "description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Service Directory namespace to register the forwarding rule under."
        },
        "service": {
          "type": "string",
          "description": "Service Directory service to register the forwarding rule under."
        },
        "serviceDirectoryRegion": {
          "type": "string",
          "description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region."
        }
      },
      "type": "object",
      "required": [
        "namespace",
        "service",
        "serviceDirectoryRegion"
      ]
    },
    "google-native:compute/beta:FutureReservationPlanningStatus": {
      "description": "Planning state before being submitted for evaluation",
      "type": "string",
      "enum": [
        {
          "name": "Draft",
          "description": "Future Reservation is being drafted.",
          "value": "DRAFT"
        },
        {
          "name": "PlanningStatusUnspecified",
          "value": "PLANNING_STATUS_UNSPECIFIED"
        },
        {
          "name": "Submitted",
          "description": "Future Reservation has been submitted for evaluation by GCP.",
          "value": "SUBMITTED"
        }
      ]
    },
    "google-native:compute/beta:FutureReservationSpecificSKUProperties": {
      "properties": {
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUAllocationReservedInstanceProperties",
          "description": "Properties of the SKU instances being reserved."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "The instance template that will be used to populate the ReservedInstanceProperties of the future reservation"
        },
        "totalCount": {
          "type": "string",
          "description": "Total number of instances for which capacity assurance is requested at a future time period."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FutureReservationSpecificSKUPropertiesResponse": {
      "properties": {
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUAllocationReservedInstancePropertiesResponse",
          "description": "Properties of the SKU instances being reserved."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "The instance template that will be used to populate the ReservedInstanceProperties of the future reservation"
        },
        "totalCount": {
          "type": "string",
          "description": "Total number of instances for which capacity assurance is requested at a future time period."
        }
      },
      "type": "object",
      "required": [
        "instanceProperties",
        "sourceInstanceTemplate",
        "totalCount"
      ]
    },
    "google-native:compute/beta:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsResponse": {
      "description": "The properties of the last known good state for the Future Reservation.",
      "properties": {
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsResponse",
          "description": "The previous share settings of the Future Reservation."
        },
        "specificSkuProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationSpecificSKUPropertiesResponse",
          "description": "The previous instance related properties of the Future Reservation."
        },
        "timeWindow": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationTimeWindowResponse",
          "description": "The previous time window of the Future Reservation."
        }
      },
      "type": "object",
      "required": [
        "shareSettings",
        "specificSkuProperties",
        "timeWindow"
      ]
    },
    "google-native:compute/beta:FutureReservationStatusLastKnownGoodStateResponse": {
      "description": "The state that the future reservation will be reverted to should the amendment be declined.",
      "properties": {
        "description": {
          "type": "string",
          "description": "The description of the FutureReservation before an amendment was requested."
        },
        "futureReservationSpecs": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsResponse"
        },
        "lockTime": {
          "type": "string",
          "description": "The lock time of the FutureReservation before an amendment was requested."
        },
        "namePrefix": {
          "type": "string",
          "description": "The name prefix of the Future Reservation before an amendment was requested."
        },
        "procurementStatus": {
          "type": "string",
          "description": "The status of the last known good state for the Future Reservation."
        }
      },
      "type": "object",
      "required": [
        "description",
        "futureReservationSpecs",
        "lockTime",
        "namePrefix",
        "procurementStatus"
      ]
    },
    "google-native:compute/beta:FutureReservationStatusResponse": {
      "description": "[Output only] Represents status related to the future reservation.",
      "properties": {
        "amendmentStatus": {
          "type": "string",
          "description": "The current status of the requested amendment."
        },
        "autoCreatedReservations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fully qualified urls of the automatically created reservations at start_time."
        },
        "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."
        },
        "lastKnownGoodState": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationStatusLastKnownGoodStateResponse",
          "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."
        },
        "lockTime": {
          "type": "string",
          "description": "Time when Future Reservation would become LOCKED, after which no modifications to Future Reservation will be allowed. Applicable only after the Future Reservation is in the APPROVED state. The lock_time is an RFC3339 string. The procurement_status will transition to PROCURING state at this time."
        },
        "procurementStatus": {
          "type": "string",
          "description": "Current state of this Future Reservation"
        },
        "specificSkuProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationStatusSpecificSKUPropertiesResponse"
        }
      },
      "type": "object",
      "required": [
        "amendmentStatus",
        "autoCreatedReservations",
        "fulfilledCount",
        "lastKnownGoodState",
        "lockTime",
        "procurementStatus",
        "specificSkuProperties"
      ]
    },
    "google-native:compute/beta:FutureReservationStatusSpecificSKUPropertiesResponse": {
      "description": "Properties to be set for the Future Reservation.",
      "properties": {
        "sourceInstanceTemplateId": {
          "type": "string",
          "description": "ID of the instance template used to populate the Future Reservation properties."
        }
      },
      "type": "object",
      "required": [
        "sourceInstanceTemplateId"
      ]
    },
    "google-native:compute/beta:FutureReservationTimeWindow": {
      "properties": {
        "duration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration"
        },
        "endTime": {
          "type": "string"
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the Future Reservation. The start_time is an RFC3339 string."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:FutureReservationTimeWindowResponse": {
      "properties": {
        "duration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse"
        },
        "endTime": {
          "type": "string"
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the Future Reservation. The start_time is an RFC3339 string."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "endTime",
        "startTime"
      ]
    },
    "google-native:compute/beta:GRPCHealthCheck": {
      "properties": {
        "grpcServiceName": {
          "type": "string",
          "description": "The gRPC service name for the health check. This field is optional. The value of grpc_service_name has the following meanings by convention: - Empty service_name means the overall status of all services at the backend. - Non-empty service_name means the health of that gRPC service, as defined by the owner of the service. The grpc_service_name can only be ASCII."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fbeta:GRPCHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:GRPCHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/beta:GRPCHealthCheckResponse": {
      "properties": {
        "grpcServiceName": {
          "type": "string",
          "description": "The gRPC service name for the health check. This field is optional. The value of grpc_service_name has the following meanings by convention: - Empty service_name means the overall status of all services at the backend. - Non-empty service_name means the health of that gRPC service, as defined by the owner of the service. The grpc_service_name can only be ASCII."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        }
      },
      "type": "object",
      "required": [
        "grpcServiceName",
        "port",
        "portName",
        "portSpecification"
      ]
    },
    "google-native:compute/beta:GlobalAddressAddressType": {
      "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "A publicly visible external IP address.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "A private network IP address, for use with an Instance or Internal Load Balancer forwarding rule.",
          "value": "INTERNAL"
        },
        {
          "name": "UnspecifiedType",
          "value": "UNSPECIFIED_TYPE"
        }
      ]
    },
    "google-native:compute/beta:GlobalAddressIpVersion": {
      "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/beta:GlobalAddressIpv6EndpointType": {
      "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
      "type": "string",
      "enum": [
        {
          "name": "Netlb",
          "description": "Reserved IPv6 address can be used on network load balancer.",
          "value": "NETLB"
        },
        {
          "name": "Vm",
          "description": "Reserved IPv6 address can be used on VM.",
          "value": "VM"
        }
      ]
    },
    "google-native:compute/beta:GlobalAddressNetworkTier": {
      "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/beta:GlobalAddressPurpose": {
      "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
      "type": "string",
      "enum": [
        {
          "name": "DnsResolver",
          "description": "DNS resolver address in the subnetwork.",
          "value": "DNS_RESOLVER"
        },
        {
          "name": "GceEndpoint",
          "description": "VM internal/alias IP, Internal LB service IP, etc.",
          "value": "GCE_ENDPOINT"
        },
        {
          "name": "IpsecInterconnect",
          "description": "A regional internal IP address range reserved for the VLAN attachment that is used in HA VPN over Cloud Interconnect. This regional internal IP address range must not overlap with any IP address range of subnet/route in the VPC network and its peering networks. After the VLAN attachment is created with the reserved IP address range, when creating a new VPN gateway, its interface IP address is allocated from the associated VLAN attachment’s IP address range.",
          "value": "IPSEC_INTERCONNECT"
        },
        {
          "name": "NatAuto",
          "description": "External IP automatically reserved for Cloud NAT.",
          "value": "NAT_AUTO"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "A private network IP address that can be used to configure Private Service Connect. This purpose can be specified only for GLOBAL addresses of Type INTERNAL",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "A regional internal IP address range reserved for Serverless.",
          "value": "SERVERLESS"
        },
        {
          "name": "SharedLoadbalancerVip",
          "description": "A private network IP address that can be shared by multiple Internal Load Balancer forwarding rules.",
          "value": "SHARED_LOADBALANCER_VIP"
        },
        {
          "name": "VpcPeering",
          "description": "IP range for peer networks.",
          "value": "VPC_PEERING"
        }
      ]
    },
    "google-native:compute/beta:GlobalForwardingRuleIpProtocol": {
      "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
      "type": "string",
      "enum": [
        {
          "name": "Ah",
          "value": "AH"
        },
        {
          "name": "Esp",
          "value": "ESP"
        },
        {
          "name": "Icmp",
          "value": "ICMP"
        },
        {
          "name": "L3Default",
          "value": "L3_DEFAULT"
        },
        {
          "name": "Sctp",
          "value": "SCTP"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/beta:GlobalForwardingRuleIpVersion": {
      "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/beta:GlobalForwardingRuleLoadBalancingScheme": {
      "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/beta:GlobalForwardingRuleNetworkTier": {
      "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/beta:GlobalForwardingRulePscConnectionStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Accepted",
          "description": "The connection has been accepted by the producer.",
          "value": "ACCEPTED"
        },
        {
          "name": "Closed",
          "description": "The connection has been closed by the producer and will not serve traffic going forward.",
          "value": "CLOSED"
        },
        {
          "name": "NeedsAttention",
          "description": "The connection has been accepted by the producer, but the producer needs to take further action before the forwarding rule can serve traffic.",
          "value": "NEEDS_ATTENTION"
        },
        {
          "name": "Pending",
          "description": "The connection is pending acceptance by the producer.",
          "value": "PENDING"
        },
        {
          "name": "Rejected",
          "description": "The connection has been rejected by the producer.",
          "value": "REJECTED"
        },
        {
          "name": "StatusUnspecified",
          "value": "STATUS_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:GlobalNetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/beta:GuestOsFeature": {
      "description": "Guest OS features.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureType",
          "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:GuestOsFeatureResponse": {
      "description": "Guest OS features.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:compute/beta:GuestOsFeatureType": {
      "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features.",
      "type": "string",
      "enum": [
        {
          "name": "FeatureTypeUnspecified",
          "value": "FEATURE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Gvnic",
          "value": "GVNIC"
        },
        {
          "name": "MultiIpSubnet",
          "value": "MULTI_IP_SUBNET"
        },
        {
          "name": "SecureBoot",
          "value": "SECURE_BOOT"
        },
        {
          "name": "SevCapable",
          "value": "SEV_CAPABLE"
        },
        {
          "name": "SevLiveMigratable",
          "value": "SEV_LIVE_MIGRATABLE"
        },
        {
          "name": "SevLiveMigratableV2",
          "value": "SEV_LIVE_MIGRATABLE_V2"
        },
        {
          "name": "SevSnpCapable",
          "value": "SEV_SNP_CAPABLE"
        },
        {
          "name": "UefiCompatible",
          "value": "UEFI_COMPATIBLE"
        },
        {
          "name": "VirtioScsiMultiqueue",
          "value": "VIRTIO_SCSI_MULTIQUEUE"
        },
        {
          "name": "Windows",
          "value": "WINDOWS"
        }
      ]
    },
    "google-native:compute/beta:HTTP2HealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP/2 health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTP2HealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTP2HealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP/2 health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP/2 health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HTTP2HealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/beta:HTTP2HealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/beta:HTTP2HealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP/2 health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP/2 health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP/2 health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response"
      ]
    },
    "google-native:compute/beta:HTTPHealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HTTPHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/beta:HTTPHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/beta:HTTPHealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response"
      ]
    },
    "google-native:compute/beta:HTTPSHealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPSHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPSHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTPS health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HTTPSHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/beta:HTTPSHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/beta:HTTPSHealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTPS health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response"
      ]
    },
    "google-native:compute/beta:HealthCheckLogConfig": {
      "description": "Configuration of logging on a health check. If logging is enabled, logs will be exported to Stackdriver.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default, which means no health check logging will be done."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HealthCheckLogConfigResponse": {
      "description": "Configuration of logging on a health check. If logging is enabled, logs will be exported to Stackdriver.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default, which means no health check logging will be done."
        }
      },
      "type": "object",
      "required": [
        "enable"
      ]
    },
    "google-native:compute/beta:HealthCheckType": {
      "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ssl",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        }
      ]
    },
    "google-native:compute/beta:HelpLinkResponse": {
      "description": "Describes a URL link.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Describes what the link offers."
        },
        "url": {
          "type": "string",
          "description": "The URL of the link."
        }
      },
      "type": "object",
      "required": [
        "description",
        "url"
      ]
    },
    "google-native:compute/beta:HelpResponse": {
      "description": "Provides links to documentation or for performing an out of band action. For example, if a quota check failed with an error indicating the calling project hasn't enabled the accessed service, this can contain a URL pointing directly to the right place in the developer console to flip the bit.",
      "properties": {
        "links": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HelpLinkResponse"
          },
          "description": "URL(s) pointing to additional information on handling the current error."
        }
      },
      "type": "object",
      "required": [
        "links"
      ]
    },
    "google-native:compute/beta:HostRule": {
      "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of host patterns to match. They must be valid hostnames with optional port numbers in the format host:port. * matches any string of ([a-z0-9-.]*). In that case, * must be the first character, and if followed by anything, the immediate following character must be either - or .. * based matching is not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "pathMatcher": {
          "type": "string",
          "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HostRuleResponse": {
      "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of host patterns to match. They must be valid hostnames with optional port numbers in the format host:port. * matches any string of ([a-z0-9-.]*). In that case, * must be the first character, and if followed by anything, the immediate following character must be either - or .. * based matching is not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "pathMatcher": {
          "type": "string",
          "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
        }
      },
      "type": "object",
      "required": [
        "description",
        "hosts",
        "pathMatcher"
      ]
    },
    "google-native:compute/beta:HttpFaultAbort": {
      "description": "Specification for how requests are aborted as part of fault injection.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be from 200 to 599 inclusive. For gRPC protocol, the gRPC status code is mapped to HTTP status code according to this mapping table. HTTP status 200 is mapped to gRPC status UNKNOWN. Injecting an OK status is currently not supported by Traffic Director."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests that is aborted as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpFaultAbortResponse": {
      "description": "Specification for how requests are aborted as part of fault injection.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be from 200 to 599 inclusive. For gRPC protocol, the gRPC status code is mapped to HTTP status code according to this mapping table. HTTP status 200 is mapped to gRPC status UNKNOWN. Injecting an OK status is currently not supported by Traffic Director."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests that is aborted as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object",
      "required": [
        "httpStatus",
        "percentage"
      ]
    },
    "google-native:compute/beta:HttpFaultDelay": {
      "description": "Specifies the delay introduced by the load balancer before forwarding the request to the backend service as part of fault injection.",
      "properties": {
        "fixedDelay": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Specifies the value of the fixed delay interval."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests for which a delay is introduced as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpFaultDelayResponse": {
      "description": "Specifies the delay introduced by the load balancer before forwarding the request to the backend service as part of fault injection.",
      "properties": {
        "fixedDelay": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Specifies the value of the fixed delay interval."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests for which a delay is introduced as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object",
      "required": [
        "fixedDelay",
        "percentage"
      ]
    },
    "google-native:compute/beta:HttpFaultInjection": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced by the load balancer on a percentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted by the load balancer for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpFaultAbort",
          "description": "The specification for how client requests are aborted as part of fault injection."
        },
        "delay": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpFaultDelay",
          "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpFaultInjectionResponse": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced by the load balancer on a percentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted by the load balancer for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpFaultAbortResponse",
          "description": "The specification for how client requests are aborted as part of fault injection."
        },
        "delay": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpFaultDelayResponse",
          "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "delay"
      ]
    },
    "google-native:compute/beta:HttpFilterConfig": {
      "description": "HttpFilterConfiguration supplies additional contextual settings for networkservices.HttpFilter resources enabled by Traffic Director.",
      "properties": {
        "config": {
          "type": "string",
          "description": "The configuration needed to enable the networkservices.HttpFilter resource. The configuration must be YAML formatted and only contain fields defined in the protobuf identified in configTypeUrl"
        },
        "configTypeUrl": {
          "type": "string",
          "description": "The fully qualified versioned proto3 type url of the protobuf that the filter expects for its contextual settings, for example: type.googleapis.com/google.protobuf.Struct"
        },
        "filterName": {
          "type": "string",
          "description": "Name of the networkservices.HttpFilter resource this configuration belongs to. This name must be known to the xDS client. Example: envoy.wasm"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpFilterConfigResponse": {
      "description": "HttpFilterConfiguration supplies additional contextual settings for networkservices.HttpFilter resources enabled by Traffic Director.",
      "properties": {
        "config": {
          "type": "string",
          "description": "The configuration needed to enable the networkservices.HttpFilter resource. The configuration must be YAML formatted and only contain fields defined in the protobuf identified in configTypeUrl"
        },
        "configTypeUrl": {
          "type": "string",
          "description": "The fully qualified versioned proto3 type url of the protobuf that the filter expects for its contextual settings, for example: type.googleapis.com/google.protobuf.Struct"
        },
        "filterName": {
          "type": "string",
          "description": "Name of the networkservices.HttpFilter resource this configuration belongs to. This name must be known to the xDS client. Example: envoy.wasm"
        }
      },
      "type": "object",
      "required": [
        "config",
        "configTypeUrl",
        "filterName"
      ]
    },
    "google-native:compute/beta:HttpHeaderAction": {
      "description": "The request and response header transformations that take effect before the request is passed along to the selected backendService.",
      "properties": {
        "requestHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderOption"
          },
          "description": "Headers to add to a matching request before forwarding the request to the backendService."
        },
        "requestHeadersToRemove": {
          "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."
        },
        "responseHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderOption"
          },
          "description": "Headers to add the response before sending the response back to the client."
        },
        "responseHeadersToRemove": {
          "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpHeaderActionResponse": {
      "description": "The request and response header transformations that take effect before the request is passed along to the selected backendService.",
      "properties": {
        "requestHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderOptionResponse"
          },
          "description": "Headers to add to a matching request before forwarding the request to the backendService."
        },
        "requestHeadersToRemove": {
          "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."
        },
        "responseHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderOptionResponse"
          },
          "description": "Headers to add the response before sending the response back to the client."
        },
        "responseHeadersToRemove": {
          "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."
        }
      },
      "type": "object",
      "required": [
        "requestHeadersToAdd",
        "requestHeadersToRemove",
        "responseHeadersToAdd",
        "responseHeadersToRemove"
      ]
    },
    "google-native:compute/beta:HttpHeaderMatch": {
      "description": "matchRule criteria for request header matches.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value should exactly match contents of exactMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\". When the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true, only non-binary user-specified custom metadata and the `content-type` header are supported. The following transport-level headers cannot be used in header matching rules: `:authority`, `:method`, `:path`, `:scheme`, `user-agent`, `accept-encoding`, `content-encoding`, `grpc-accept-encoding`, `grpc-encoding`, `grpc-previous-rpc-attempts`, `grpc-tags-bin`, `grpc-timeout` and `grpc-trace-bin`."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If set to false, the headerMatch is considered a match if the preceding match criteria are met. If set to true, the headerMatch is considered a match if the preceding match criteria are NOT met. The default setting is false. "
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with the contents of headerName must exist. The match takes place whether or not the request's header has a value. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:compute%2Fbeta:Int64RangeMatch",
          "description": "The header value must be an integer and its value must be in the range specified in rangeMatch. If the header does not contain an integer, number or is empty, the match fails. For example for a range [-5, 0] - -3 will match. - 0 will not match. - 0.25 will not match. - -3someString will not match. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. rangeMatch is not supported for load balancers that have loadBalancingScheme set to EXTERNAL."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For more information about regular expression syntax, see Syntax. For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpHeaderMatchResponse": {
      "description": "matchRule criteria for request header matches.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value should exactly match contents of exactMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\". When the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true, only non-binary user-specified custom metadata and the `content-type` header are supported. The following transport-level headers cannot be used in header matching rules: `:authority`, `:method`, `:path`, `:scheme`, `user-agent`, `accept-encoding`, `content-encoding`, `grpc-accept-encoding`, `grpc-encoding`, `grpc-previous-rpc-attempts`, `grpc-tags-bin`, `grpc-timeout` and `grpc-trace-bin`."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If set to false, the headerMatch is considered a match if the preceding match criteria are met. If set to true, the headerMatch is considered a match if the preceding match criteria are NOT met. The default setting is false. "
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with the contents of headerName must exist. The match takes place whether or not the request's header has a value. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:compute%2Fbeta:Int64RangeMatchResponse",
          "description": "The header value must be an integer and its value must be in the range specified in rangeMatch. If the header does not contain an integer, number or is empty, the match fails. For example for a range [-5, 0] - -3 will match. - 0 will not match. - 0.25 will not match. - -3someString will not match. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. rangeMatch is not supported for load balancers that have loadBalancingScheme set to EXTERNAL."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For more information about regular expression syntax, see Syntax. For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "headerName",
        "invertMatch",
        "prefixMatch",
        "presentMatch",
        "rangeMatch",
        "regexMatch",
        "suffixMatch"
      ]
    },
    "google-native:compute/beta:HttpHeaderOption": {
      "description": "Specification determining how headers are added to requests or responses.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header."
        },
        "headerValue": {
          "type": "string",
          "description": "The value of the header to add."
        },
        "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. The default value is false. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpHeaderOptionResponse": {
      "description": "Specification determining how headers are added to requests or responses.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header."
        },
        "headerValue": {
          "type": "string",
          "description": "The value of the header to add."
        },
        "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. The default value is false. "
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "headerValue",
        "replace"
      ]
    },
    "google-native:compute/beta:HttpQueryParameterMatch": {
      "description": "HttpRouteRuleMatch criteria for a request's query parameter.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter exactly matches the contents of exactMatch. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "name": {
          "type": "string",
          "description": "The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "regexMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For more information about regular expression syntax, see Syntax. Only one of presentMatch, exactMatch, or regexMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpQueryParameterMatchResponse": {
      "description": "HttpRouteRuleMatch criteria for a request's query parameter.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter exactly matches the contents of exactMatch. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "name": {
          "type": "string",
          "description": "The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "regexMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For more information about regular expression syntax, see Syntax. Only one of presentMatch, exactMatch, or regexMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED. "
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "name",
        "presentMatch",
        "regexMatch"
      ]
    },
    "google-native:compute/beta:HttpRedirectAction": {
      "description": "Specifies settings for an HTTP redirect.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that is used in the redirect response instead of the one that was supplied in the request. The value must be from 1 to 255 characters."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to HTTPS. If set to false, the URL scheme of the redirected request remains the same as that of the request. This must only be set for URL maps used in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that is used in the redirect response instead of the one that was supplied in the request. pathRedirect cannot be supplied together with prefixRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "prefixRedirect": {
          "type": "string",
          "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch, retaining the remaining portion of the URL before redirecting the request. prefixRedirect cannot be supplied together with pathRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "redirectResponseCode": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectActionRedirectResponseCode",
          "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. "
        },
        "stripQuery": {
          "type": "boolean",
          "description": "If set to true, any accompanying query portion of the original URL is removed before redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpRedirectActionRedirectResponseCode": {
      "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. ",
      "type": "string",
      "enum": [
        {
          "name": "Found",
          "description": "Http Status Code 302 - Found.",
          "value": "FOUND"
        },
        {
          "name": "MovedPermanentlyDefault",
          "description": "Http Status Code 301 - Moved Permanently.",
          "value": "MOVED_PERMANENTLY_DEFAULT"
        },
        {
          "name": "PermanentRedirect",
          "description": "Http Status Code 308 - Permanent Redirect maintaining HTTP method.",
          "value": "PERMANENT_REDIRECT"
        },
        {
          "name": "SeeOther",
          "description": "Http Status Code 303 - See Other.",
          "value": "SEE_OTHER"
        },
        {
          "name": "TemporaryRedirect",
          "description": "Http Status Code 307 - Temporary Redirect maintaining HTTP method.",
          "value": "TEMPORARY_REDIRECT"
        }
      ]
    },
    "google-native:compute/beta:HttpRedirectActionResponse": {
      "description": "Specifies settings for an HTTP redirect.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that is used in the redirect response instead of the one that was supplied in the request. The value must be from 1 to 255 characters."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to HTTPS. If set to false, the URL scheme of the redirected request remains the same as that of the request. This must only be set for URL maps used in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that is used in the redirect response instead of the one that was supplied in the request. pathRedirect cannot be supplied together with prefixRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "prefixRedirect": {
          "type": "string",
          "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch, retaining the remaining portion of the URL before redirecting the request. prefixRedirect cannot be supplied together with pathRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "redirectResponseCode": {
          "type": "string",
          "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. "
        },
        "stripQuery": {
          "type": "boolean",
          "description": "If set to true, any accompanying query portion of the original URL is removed before redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false. "
        }
      },
      "type": "object",
      "required": [
        "hostRedirect",
        "httpsRedirect",
        "pathRedirect",
        "prefixRedirect",
        "redirectResponseCode",
        "stripQuery"
      ]
    },
    "google-native:compute/beta:HttpRetryPolicy": {
      "description": "The retry policy associates with HttpRouteRule",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number retries. This number must be > 0. If not specified, defaults to 1."
        },
        "perTryTimeout": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Specifies a non-zero timeout per retry attempt. If not specified, will use the timeout set in the HttpRouteAction field. If timeout in the HttpRouteAction field is not set, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: - 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. - gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504. - connect-failure: a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts. - 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. - 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. - cancelled: a retry is attempted if the gRPC status code in the response header is set to cancelled. - deadline-exceeded: a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded. - internal: a retry is attempted if the gRPC status code in the response header is set to internal. - resource-exhausted: a retry is attempted if the gRPC status code in the response header is set to resource-exhausted. - unavailable: a retry is attempted if the gRPC status code in the response header is set to unavailable. 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 "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpRetryPolicyResponse": {
      "description": "The retry policy associates with HttpRouteRule",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number retries. This number must be > 0. If not specified, defaults to 1."
        },
        "perTryTimeout": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Specifies a non-zero timeout per retry attempt. If not specified, will use the timeout set in the HttpRouteAction field. If timeout in the HttpRouteAction field is not set, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: - 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. - gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504. - connect-failure: a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts. - 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. - 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. - cancelled: a retry is attempted if the gRPC status code in the response header is set to cancelled. - deadline-exceeded: a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded. - internal: a retry is attempted if the gRPC status code in the response header is set to internal. - resource-exhausted: a retry is attempted if the gRPC status code in the response header is set to resource-exhausted. - unavailable: a retry is attempted if the gRPC status code in the response header is set to unavailable. 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 "
        }
      },
      "type": "object",
      "required": [
        "numRetries",
        "perTryTimeout",
        "retryConditions"
      ]
    },
    "google-native:compute/beta:HttpRouteAction": {
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CorsPolicy",
          "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpFaultInjection",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As 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. Similarly requests from clients can be aborted by the load balancer for a percentage of requests. timeout and retry_policy is ignored by clients that are configured with a fault_injection_policy if: 1. The traffic is generated by fault injection AND 2. The fault injection is not a delay fault injection. Fault injection is not supported with the classic Application Load Balancer . To see which load balancers support fault injection, see Load balancing: Routing and traffic management features."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (known as *end-of-stream*), the duration in this field is computed from the beginning of the stream until the response has been processed, including all retries. A stream that does not complete in this duration is closed. If not specified, this field uses the maximum maxStreamDuration value among all backend services associated with the route. This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:RequestMirrorPolicy",
          "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. The 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. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRetryPolicy",
          "description": "Specifies the retry policy associated with this route."
        },
        "timeout": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "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. If not specified, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:compute%2Fbeta:UrlRewrite",
          "description": "The spec to modify the URL of the request, before forwarding the request to the matched service. urlRewrite is the only action supported in UrlMaps for classic Application Load Balancers. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "weightedBackendServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:WeightedBackendService"
          },
          "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. After 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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpRouteActionResponse": {
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CorsPolicyResponse",
          "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpFaultInjectionResponse",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As 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. Similarly requests from clients can be aborted by the load balancer for a percentage of requests. timeout and retry_policy is ignored by clients that are configured with a fault_injection_policy if: 1. The traffic is generated by fault injection AND 2. The fault injection is not a delay fault injection. Fault injection is not supported with the classic Application Load Balancer . To see which load balancers support fault injection, see Load balancing: Routing and traffic management features."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (known as *end-of-stream*), the duration in this field is computed from the beginning of the stream until the response has been processed, including all retries. A stream that does not complete in this duration is closed. If not specified, this field uses the maximum maxStreamDuration value among all backend services associated with the route. This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:RequestMirrorPolicyResponse",
          "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. The 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. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRetryPolicyResponse",
          "description": "Specifies the retry policy associated with this route."
        },
        "timeout": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "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. If not specified, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:compute%2Fbeta:UrlRewriteResponse",
          "description": "The spec to modify the URL of the request, before forwarding the request to the matched service. urlRewrite is the only action supported in UrlMaps for classic Application Load Balancers. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "weightedBackendServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:WeightedBackendServiceResponse"
          },
          "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. After 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."
        }
      },
      "type": "object",
      "required": [
        "corsPolicy",
        "faultInjectionPolicy",
        "maxStreamDuration",
        "requestMirrorPolicy",
        "retryPolicy",
        "timeout",
        "urlRewrite",
        "weightedBackendServices"
      ]
    },
    "google-native:compute/beta:HttpRouteRule": {
      "description": "The HttpRouteRule setting specifies how to match an HTTP request and the corresponding routing action that load balancing proxies perform.",
      "properties": {
        "customErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicy",
          "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. If a policy for an error code is not configured for the RouteRule, 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is configured for the error code 404. If 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. When used in conjunction with routeRules.routeAction.retryPolicy, retries take precedence. Only once all retries are exhausted, the customErrorResponsePolicy is applied. While attempting a retry, if load balancer is successful in reaching the service, the customErrorResponsePolicy is ignored and the response from the service is returned to the client. customErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "description": {
          "type": "string",
          "description": "The short description conveying the intent of this routeRule. The description can have a maximum length of 1024 characters."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction value specified here is applied before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].routeAction.weightedBackendService.backendServiceWeightAction[].headerAction HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpFilterConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpFilterConfig"
          },
          "description": "Outbound route specific configuration for networkservices.HttpFilter resources enabled by Traffic Director. httpFilterConfigs only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpFilterMetadata": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpFilterConfig"
          },
          "description": "Outbound route specific metadata supplied to networkservices.HttpFilter resources enabled by Traffic Director. httpFilterMetadata only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details. The only configTypeUrl supported is type.googleapis.com/google.protobuf.Struct Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "matchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteRuleMatch"
          },
          "description": "The list of criteria for matching attributes of a request to this routeRule. This list has OR semantics: the request matches this routeRule when any of the matchRules are satisfied. However predicates within a given matchRule have AND semantics. All predicates within a matchRule must match for the request to match the rule."
        },
        "priority": {
          "type": "integer",
          "description": "For routeRules within a given pathMatcher, priority determines the order in which a load balancer interprets routeRules. RouteRules are evaluated in order of priority, from the lowest to highest number. The priority of a rule decreases as its number increases (1, 2, 3, N+1). The first rule that matches the request is applied. You cannot configure two or more routeRules with the same priority. Priority for each rule must be set to a number from 0 to 2147483647 inclusive. Priority numbers can have gaps, which enable you to add or remove rules in the future without affecting the rest of the rules. For example, 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the future without any impact on existing rules."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteAction",
          "description": "In response to a matching matchRule, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of urlRedirect, service or routeAction.weightedBackendService must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a route rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectAction",
          "description": "When this rule is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpRouteRuleMatch": {
      "description": "HttpRouteRuleMatch specifies a set of criteria for matching requests to an HttpRouteRule. All specified criteria must be satisfied for a match to occur.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must exactly match the value specified in fullPathMatch after removing any query parameters and anchor that may be part of the original URL. fullPathMatch must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "headerMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderMatch"
          },
          "description": "Specifies a list of header match criteria, all of which must match corresponding headers in the request."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive. The default value is false. ignoreCase must not be used with regexMatch. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilter"
          },
          "description": "Opaque filter criteria used by the load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to the load balancer, xDS clients present node metadata. When there is a match, the relevant routing configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadata filters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here is applied after those specified in ForwardingRule that refers to the UrlMap this HttpRouteRuleMatch belongs to. metadataFilters only applies to load balancers that have loadBalancingScheme set to INTERNAL_SELF_MANAGED. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "pathTemplateMatch": {
          "type": "string",
          "description": "If specified, the route is a pattern match expression that must match the :path header once the query string is removed. A pattern match allows you to match - The value must be between 1 and 1024 characters - The pattern must start with a leading slash (\"/\") - There may be no more than 5 operators in pattern Precisely one of prefix_match, full_path_match, regex_match or path_template_match must be set."
        },
        "prefixMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the request's path must begin with the specified prefixMatch. prefixMatch must begin with a /. The value must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "queryParameterMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpQueryParameterMatch"
          },
          "description": "Specifies a list of query parameter match criteria, all of which must match corresponding query parameters in the request. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "regexMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For more information about regular expression syntax, see Syntax. Only one of prefixMatch, fullPathMatch or regexMatch must be specified. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:HttpRouteRuleMatchResponse": {
      "description": "HttpRouteRuleMatch specifies a set of criteria for matching requests to an HttpRouteRule. All specified criteria must be satisfied for a match to occur.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must exactly match the value specified in fullPathMatch after removing any query parameters and anchor that may be part of the original URL. fullPathMatch must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "headerMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderMatchResponse"
          },
          "description": "Specifies a list of header match criteria, all of which must match corresponding headers in the request."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive. The default value is false. ignoreCase must not be used with regexMatch. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by the load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to the load balancer, xDS clients present node metadata. When there is a match, the relevant routing configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadata filters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here is applied after those specified in ForwardingRule that refers to the UrlMap this HttpRouteRuleMatch belongs to. metadataFilters only applies to load balancers that have loadBalancingScheme set to INTERNAL_SELF_MANAGED. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "pathTemplateMatch": {
          "type": "string",
          "description": "If specified, the route is a pattern match expression that must match the :path header once the query string is removed. A pattern match allows you to match - The value must be between 1 and 1024 characters - The pattern must start with a leading slash (\"/\") - There may be no more than 5 operators in pattern Precisely one of prefix_match, full_path_match, regex_match or path_template_match must be set."
        },
        "prefixMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the request's path must begin with the specified prefixMatch. prefixMatch must begin with a /. The value must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "queryParameterMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpQueryParameterMatchResponse"
          },
          "description": "Specifies a list of query parameter match criteria, all of which must match corresponding query parameters in the request. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "regexMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For more information about regular expression syntax, see Syntax. Only one of prefixMatch, fullPathMatch or regexMatch must be specified. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        }
      },
      "type": "object",
      "required": [
        "fullPathMatch",
        "headerMatches",
        "ignoreCase",
        "metadataFilters",
        "pathTemplateMatch",
        "prefixMatch",
        "queryParameterMatches",
        "regexMatch"
      ]
    },
    "google-native:compute/beta:HttpRouteRuleResponse": {
      "description": "The HttpRouteRule setting specifies how to match an HTTP request and the corresponding routing action that load balancing proxies perform.",
      "properties": {
        "customErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyResponse",
          "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. If a policy for an error code is not configured for the RouteRule, 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is configured for the error code 404. If 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. When used in conjunction with routeRules.routeAction.retryPolicy, retries take precedence. Only once all retries are exhausted, the customErrorResponsePolicy is applied. While attempting a retry, if load balancer is successful in reaching the service, the customErrorResponsePolicy is ignored and the response from the service is returned to the client. customErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "description": {
          "type": "string",
          "description": "The short description conveying the intent of this routeRule. The description can have a maximum length of 1024 characters."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction value specified here is applied before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].routeAction.weightedBackendService.backendServiceWeightAction[].headerAction HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpFilterConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpFilterConfigResponse"
          },
          "description": "Outbound route specific configuration for networkservices.HttpFilter resources enabled by Traffic Director. httpFilterConfigs only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpFilterMetadata": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpFilterConfigResponse"
          },
          "description": "Outbound route specific metadata supplied to networkservices.HttpFilter resources enabled by Traffic Director. httpFilterMetadata only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details. The only configTypeUrl supported is type.googleapis.com/google.protobuf.Struct Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "matchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteRuleMatchResponse"
          },
          "description": "The list of criteria for matching attributes of a request to this routeRule. This list has OR semantics: the request matches this routeRule when any of the matchRules are satisfied. However predicates within a given matchRule have AND semantics. All predicates within a matchRule must match for the request to match the rule."
        },
        "priority": {
          "type": "integer",
          "description": "For routeRules within a given pathMatcher, priority determines the order in which a load balancer interprets routeRules. RouteRules are evaluated in order of priority, from the lowest to highest number. The priority of a rule decreases as its number increases (1, 2, 3, N+1). The first rule that matches the request is applied. You cannot configure two or more routeRules with the same priority. Priority for each rule must be set to a number from 0 to 2147483647 inclusive. Priority numbers can have gaps, which enable you to add or remove rules in the future without affecting the rest of the rules. For example, 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the future without any impact on existing rules."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteActionResponse",
          "description": "In response to a matching matchRule, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of urlRedirect, service or routeAction.weightedBackendService must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a route rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectActionResponse",
          "description": "When this rule is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object",
      "required": [
        "customErrorResponsePolicy",
        "description",
        "headerAction",
        "httpFilterConfigs",
        "httpFilterMetadata",
        "matchRules",
        "priority",
        "routeAction",
        "service",
        "urlRedirect"
      ]
    },
    "google-native:compute/beta:ImageArchitecture": {
      "description": "The architecture of the image. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/beta:ImageRawDisk": {
      "description": "The parameters of the raw disk image.",
      "properties": {
        "containerType": {
          "$ref": "#/types/google-native:compute%2Fbeta:ImageRawDiskContainerType",
          "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created."
        },
        "sha1Checksum": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
          "deprecationMessage": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created."
        },
        "source": {
          "type": "string",
          "description": "The full Google Cloud Storage URL where the raw disk image archive is stored. The following are valid formats for the URL: - https://storage.googleapis.com/bucket_name/image_archive_name - https://storage.googleapis.com/bucket_name/folder_name/ image_archive_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ImageRawDiskContainerType": {
      "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
      "type": "string",
      "enum": [
        {
          "name": "Tar",
          "value": "TAR"
        }
      ]
    },
    "google-native:compute/beta:ImageRawDiskResponse": {
      "description": "The parameters of the raw disk image.",
      "properties": {
        "containerType": {
          "type": "string",
          "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created."
        },
        "sha1Checksum": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
          "deprecationMessage": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created."
        },
        "source": {
          "type": "string",
          "description": "The full Google Cloud Storage URL where the raw disk image archive is stored. The following are valid formats for the URL: - https://storage.googleapis.com/bucket_name/image_archive_name - https://storage.googleapis.com/bucket_name/folder_name/ image_archive_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        }
      },
      "type": "object",
      "required": [
        "containerType",
        "sha1Checksum",
        "source"
      ]
    },
    "google-native:compute/beta:ImageSourceType": {
      "description": "The type of the image used to create this disk. The default and only valid value is RAW.",
      "type": "string",
      "enum": [
        {
          "name": "Raw",
          "value": "RAW"
        }
      ]
    },
    "google-native:compute/beta:InitialStateConfig": {
      "description": "Initial State for shielded instance, these are public keys which are safe to store in public",
      "properties": {
        "dbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FileContentBuffer"
          },
          "description": "The Key Database (db)."
        },
        "dbxs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FileContentBuffer"
          },
          "description": "The forbidden key database (dbx)."
        },
        "keks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FileContentBuffer"
          },
          "description": "The Key Exchange Key (KEK)."
        },
        "pk": {
          "$ref": "#/types/google-native:compute%2Fbeta:FileContentBuffer",
          "description": "The Platform Key (PK)."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InitialStateConfigResponse": {
      "description": "Initial State for shielded instance, these are public keys which are safe to store in public",
      "properties": {
        "dbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FileContentBufferResponse"
          },
          "description": "The Key Database (db)."
        },
        "dbxs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FileContentBufferResponse"
          },
          "description": "The forbidden key database (dbx)."
        },
        "keks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FileContentBufferResponse"
          },
          "description": "The Key Exchange Key (KEK)."
        },
        "pk": {
          "$ref": "#/types/google-native:compute%2Fbeta:FileContentBufferResponse",
          "description": "The Platform Key (PK)."
        }
      },
      "type": "object",
      "required": [
        "dbs",
        "dbxs",
        "keks",
        "pk"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerActionsSummaryResponse": {
      "properties": {
        "abandoning": {
          "type": "integer",
          "description": "The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it."
        },
        "creating": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully. If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated."
        },
        "creatingWithoutRetries": {
          "type": "integer",
          "description": "The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly."
        },
        "deleting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted."
        },
        "none": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are running and have no scheduled actions."
        },
        "recreating": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template."
        },
        "refreshing": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance."
        },
        "restarting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted."
        },
        "resuming": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be resumed or are currently being resumed."
        },
        "starting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be started or are currently being started."
        },
        "stopping": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be stopped or are currently being stopped."
        },
        "suspending": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be suspended or are currently being suspended."
        },
        "verifying": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are being verified. See the managedInstances[].currentAction property in the listManagedInstances method documentation."
        }
      },
      "type": "object",
      "required": [
        "abandoning",
        "creating",
        "creatingWithoutRetries",
        "deleting",
        "none",
        "recreating",
        "refreshing",
        "restarting",
        "resuming",
        "starting",
        "stopping",
        "suspending",
        "verifying"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerAllInstancesConfig": {
      "properties": {
        "properties": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesPatch",
          "description": "Properties to set on all instances in the group. You can add or modify properties using the instanceGroupManagers.patch or regionInstanceGroupManagers.patch. After setting allInstancesConfig on the group, you must update the group's instances to apply the configuration. To apply the configuration, set the group's updatePolicy.type field to use proactive updates or use the applyUpdatesToInstances method."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstanceGroupManagerAllInstancesConfigResponse": {
      "properties": {
        "properties": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesPatchResponse",
          "description": "Properties to set on all instances in the group. You can add or modify properties using the instanceGroupManagers.patch or regionInstanceGroupManagers.patch. After setting allInstancesConfig on the group, you must update the group's instances to apply the configuration. To apply the configuration, set the group's updatePolicy.type field to use proactive updates or use the applyUpdatesToInstances method."
        }
      },
      "type": "object",
      "required": [
        "properties"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerAutoHealingPolicy": {
      "properties": {
        "healthCheck": {
          "type": "string",
          "description": "The URL for the health check that signals autohealing."
        },
        "initialDelaySec": {
          "type": "integer",
          "description": "The initial delay is the number of seconds that a new VM takes to initialize and run its startup script. During a VM's initial delay period, the MIG ignores unsuccessful health checks because the VM might be in the startup process. This prevents the MIG from prematurely recreating a VM. If the health check receives a healthy response during the initial delay, it indicates that the startup process is complete and the VM is ready. The value of initial delay must be between 0 and 3600 seconds. The default value is 0."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstanceGroupManagerAutoHealingPolicyResponse": {
      "properties": {
        "healthCheck": {
          "type": "string",
          "description": "The URL for the health check that signals autohealing."
        },
        "initialDelaySec": {
          "type": "integer",
          "description": "The initial delay is the number of seconds that a new VM takes to initialize and run its startup script. During a VM's initial delay period, the MIG ignores unsuccessful health checks because the VM might be in the startup process. This prevents the MIG from prematurely recreating a VM. If the health check receives a healthy response during the initial delay, it indicates that the startup process is complete and the VM is ready. The value of initial delay must be between 0 and 3600 seconds. The default value is 0."
        }
      },
      "type": "object",
      "required": [
        "healthCheck",
        "initialDelaySec"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerFailoverAction": {
      "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
      "type": "string",
      "enum": [
        {
          "name": "NoFailover",
          "value": "NO_FAILOVER"
        },
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerInstanceFlexibilityPolicy": {
      "properties": {
        "instanceSelectionLists": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Named instance selections configuring properties that the group will use when creating new VMs."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstanceGroupManagerInstanceFlexibilityPolicyResponse": {
      "properties": {
        "instanceSelectionLists": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Named instance selections configuring properties that the group will use when creating new VMs."
        }
      },
      "type": "object",
      "required": [
        "instanceSelectionLists"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerInstanceLifecyclePolicy": {
      "properties": {
        "defaultActionOnFailure": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure",
          "description": "The action that a MIG performs on a failed or an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid values are - REPAIR (default): MIG automatically repairs a failed or an unhealthy VM by recreating it. For more information, see About repairing VMs in a MIG. - DO_NOTHING: MIG does not repair a failed or an unhealthy VM. "
        },
        "forceUpdateOnRepair": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair",
          "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure": {
      "description": "The action that a MIG performs on a failed or an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid values are - REPAIR (default): MIG automatically repairs a failed or an unhealthy VM by recreating it. For more information, see About repairing VMs in a MIG. - DO_NOTHING: MIG does not repair a failed or an unhealthy VM. ",
      "type": "string",
      "enum": [
        {
          "name": "Delete",
          "description": "MIG deletes a failed or an unhealthy VM. Deleting the VM decreases the target size of the MIG.",
          "value": "DELETE"
        },
        {
          "name": "DoNothing",
          "description": "MIG does not repair a failed or an unhealthy VM.",
          "value": "DO_NOTHING"
        },
        {
          "name": "Repair",
          "description": "(Default) MIG automatically repairs a failed or an unhealthy VM by recreating it. For more information, see About repairing VMs in a MIG.",
          "value": "REPAIR"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair": {
      "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. ",
      "type": "string",
      "enum": [
        {
          "name": "No",
          "value": "NO"
        },
        {
          "name": "Yes",
          "value": "YES"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerInstanceLifecyclePolicyResponse": {
      "properties": {
        "defaultActionOnFailure": {
          "type": "string",
          "description": "The action that a MIG performs on a failed or an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid values are - REPAIR (default): MIG automatically repairs a failed or an unhealthy VM by recreating it. For more information, see About repairing VMs in a MIG. - DO_NOTHING: MIG does not repair a failed or an unhealthy VM. "
        },
        "forceUpdateOnRepair": {
          "type": "string",
          "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. "
        }
      },
      "type": "object",
      "required": [
        "defaultActionOnFailure",
        "forceUpdateOnRepair"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerListManagedInstancesResults": {
      "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
      "type": "string",
      "enum": [
        {
          "name": "Pageless",
          "description": "(Default) Pagination is disabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are ignored and all instances are returned in a single response.",
          "value": "PAGELESS"
        },
        {
          "name": "Paginated",
          "description": "Pagination is enabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are respected.",
          "value": "PAGINATED"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerResizeRequestStatusErrorErrorsItemErrorDetailsItemResponse": {
      "properties": {
        "errorInfo": {
          "$ref": "#/types/google-native:compute%2Fbeta:ErrorInfoResponse"
        },
        "help": {
          "$ref": "#/types/google-native:compute%2Fbeta:HelpResponse"
        },
        "localizedMessage": {
          "$ref": "#/types/google-native:compute%2Fbeta:LocalizedMessageResponse"
        },
        "quotaInfo": {
          "$ref": "#/types/google-native:compute%2Fbeta:QuotaExceededInfoResponse"
        }
      },
      "type": "object",
      "required": [
        "errorInfo",
        "help",
        "localizedMessage",
        "quotaInfo"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerResizeRequestStatusErrorErrorsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "The error type identifier for this error."
        },
        "errorDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerResizeRequestStatusErrorErrorsItemErrorDetailsItemResponse"
          },
          "description": "An optional list 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."
        },
        "location": {
          "type": "string",
          "description": "Indicates the field in the request that caused the error. This property is optional."
        },
        "message": {
          "type": "string",
          "description": "An optional, human-readable error message."
        }
      },
      "type": "object",
      "required": [
        "code",
        "errorDetails",
        "location",
        "message"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerResizeRequestStatusErrorResponse": {
      "description": "Errors encountered during the queueing or provisioning phases of the ResizeRequest.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerResizeRequestStatusErrorErrorsItemResponse"
          },
          "description": "The array of errors encountered while processing this operation."
        }
      },
      "type": "object",
      "required": [
        "errors"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerResizeRequestStatusResponse": {
      "properties": {
        "error": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerResizeRequestStatusErrorResponse",
          "description": "Errors encountered during the queueing or provisioning phases of the ResizeRequest."
        }
      },
      "type": "object",
      "required": [
        "error"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerStandbyPolicy": {
      "properties": {
        "initialDelaySec": {
          "type": "integer"
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStandbyPolicyMode",
          "description": "Defines behaviour of using instances from standby pool to resize MIG."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstanceGroupManagerStandbyPolicyMode": {
      "description": "Defines behaviour of using instances from standby pool to resize MIG.",
      "type": "string",
      "enum": [
        {
          "name": "Manual",
          "description": "MIG does not automatically stop/start or suspend/resume VMs.",
          "value": "MANUAL"
        },
        {
          "name": "ScaleOutPool",
          "description": "MIG automatically resumes and starts VMs when it scales out, and replenishes the standby pool afterwards.",
          "value": "SCALE_OUT_POOL"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerStandbyPolicyResponse": {
      "properties": {
        "initialDelaySec": {
          "type": "integer"
        },
        "mode": {
          "type": "string",
          "description": "Defines behaviour of using instances from standby pool to resize MIG."
        }
      },
      "type": "object",
      "required": [
        "initialDelaySec",
        "mode"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerStatusAllInstancesConfigResponse": {
      "properties": {
        "currentRevision": {
          "type": "string",
          "description": "Current all-instances configuration revision. This value is in RFC3339 text format."
        },
        "effective": {
          "type": "boolean",
          "description": "A bit indicating whether this configuration has been applied to all managed instances in the group."
        }
      },
      "type": "object",
      "required": [
        "currentRevision",
        "effective"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerStatusResponse": {
      "properties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStatusAllInstancesConfigResponse",
          "description": "[Output only] Status of all-instances configuration on the group."
        },
        "autoscaler": {
          "type": "string",
          "description": "The URL of the Autoscaler that targets this instance group manager."
        },
        "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."
        },
        "stateful": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStatusStatefulResponse",
          "description": "Stateful status of the given Instance Group Manager."
        },
        "versionTarget": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStatusVersionTargetResponse",
          "description": "A status of consistency of Instances' versions with their target version specified by version field on Instance Group Manager."
        }
      },
      "type": "object",
      "required": [
        "allInstancesConfig",
        "autoscaler",
        "isStable",
        "stateful",
        "versionTarget"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerStatusStatefulPerInstanceConfigsResponse": {
      "properties": {
        "allEffective": {
          "type": "boolean",
          "description": "A bit indicating if all of the group's per-instance configurations (listed in the output of a listPerInstanceConfigs API call) have status EFFECTIVE or there are no per-instance-configs."
        }
      },
      "type": "object",
      "required": [
        "allEffective"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerStatusStatefulResponse": {
      "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 configuration 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."
        },
        "isStateful": {
          "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 configuration 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. This field is deprecated in favor of has_stateful_config.",
          "deprecationMessage": "[Output Only] 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 configuration 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. This field is deprecated in favor of has_stateful_config."
        },
        "perInstanceConfigs": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStatusStatefulPerInstanceConfigsResponse",
          "description": "Status of per-instance configurations on the instance."
        }
      },
      "type": "object",
      "required": [
        "hasStatefulConfig",
        "isStateful",
        "perInstanceConfigs"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerStatusVersionTargetResponse": {
      "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."
        }
      },
      "type": "object",
      "required": [
        "isReached"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerUpdatePolicy": {
      "properties": {
        "instanceRedistributionType": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyInstanceRedistributionType",
          "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. "
        },
        "maxSurge": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercent",
          "description": "The maximum number of instances that can be created above the specified targetSize during the update process. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxSurge is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
        },
        "maxUnavailable": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercent",
          "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied: - The instance's status is RUNNING. - If there is a health check on the instance group, the instance's health check status must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxUnavailable is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
        },
        "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]."
        },
        "minimalAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyMinimalAction",
          "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. "
        },
        "mostDisruptiveAllowedAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction",
          "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to avoid restarting the VM and to limit disruption as much as possible. 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."
        },
        "replacementMethod": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyReplacementMethod",
          "description": "What action should be used to replace instances. See minimal_action.REPLACE"
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyType",
          "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstanceGroupManagerUpdatePolicyInstanceRedistributionType": {
      "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. ",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "No action is being proactively performed in order to bring this IGM to its target instance distribution.",
          "value": "NONE"
        },
        {
          "name": "Proactive",
          "description": "This IGM will actively converge to its target instance distribution.",
          "value": "PROACTIVE"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerUpdatePolicyMinimalAction": {
      "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. ",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "Do not perform any action.",
          "value": "NONE"
        },
        {
          "name": "Refresh",
          "description": "Do not stop the instance.",
          "value": "REFRESH"
        },
        {
          "name": "Replace",
          "description": "(Default.) Replace the instance according to the replacement method option.",
          "value": "REPLACE"
        },
        {
          "name": "Restart",
          "description": "Stop the instance and start it again.",
          "value": "RESTART"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction": {
      "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to avoid restarting the VM and to limit disruption as much as possible. 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.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "Do not perform any action.",
          "value": "NONE"
        },
        {
          "name": "Refresh",
          "description": "Do not stop the instance.",
          "value": "REFRESH"
        },
        {
          "name": "Replace",
          "description": "(Default.) Replace the instance according to the replacement method option.",
          "value": "REPLACE"
        },
        {
          "name": "Restart",
          "description": "Stop the instance and start it again.",
          "value": "RESTART"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerUpdatePolicyReplacementMethod": {
      "description": "What action should be used to replace instances. See minimal_action.REPLACE",
      "type": "string",
      "enum": [
        {
          "name": "Recreate",
          "description": "Instances will be recreated (with the same name)",
          "value": "RECREATE"
        },
        {
          "name": "Substitute",
          "description": "Default option: instances will be deleted and created (with a new name)",
          "value": "SUBSTITUTE"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerUpdatePolicyResponse": {
      "properties": {
        "instanceRedistributionType": {
          "type": "string",
          "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. "
        },
        "maxSurge": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercentResponse",
          "description": "The maximum number of instances that can be created above the specified targetSize during the update process. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxSurge is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
        },
        "maxUnavailable": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercentResponse",
          "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied: - The instance's status is RUNNING. - If there is a health check on the instance group, the instance's health check status must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxUnavailable is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
        },
        "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]."
        },
        "minimalAction": {
          "type": "string",
          "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. "
        },
        "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 avoid restarting the VM and to limit disruption as much as possible. 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."
        },
        "replacementMethod": {
          "type": "string",
          "description": "What action should be used to replace instances. See minimal_action.REPLACE"
        },
        "type": {
          "type": "string",
          "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update."
        }
      },
      "type": "object",
      "required": [
        "instanceRedistributionType",
        "maxSurge",
        "maxUnavailable",
        "minReadySec",
        "minimalAction",
        "mostDisruptiveAllowedAction",
        "replacementMethod",
        "type"
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerUpdatePolicyType": {
      "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update.",
      "type": "string",
      "enum": [
        {
          "name": "Opportunistic",
          "description": "MIG will apply new configurations to existing VMs only when you selectively target specific or all VMs to be updated.",
          "value": "OPPORTUNISTIC"
        },
        {
          "name": "Proactive",
          "description": "MIG will automatically apply new configurations to all or a subset of existing VMs and also to new VMs that are added to the group.",
          "value": "PROACTIVE"
        }
      ]
    },
    "google-native:compute/beta:InstanceGroupManagerVersion": {
      "properties": {
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create new instances in the managed instance group until the `targetSize` for this version is reached. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE; in those cases, existing instances are updated until the `targetSize` for this version is reached."
        },
        "name": {
          "type": "string",
          "description": "Name of the version. Unique among all versions in the scope of this managed instance group."
        },
        "targetSize": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercent",
          "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: - If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. - if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstanceGroupManagerVersionResponse": {
      "properties": {
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create new instances in the managed instance group until the `targetSize` for this version is reached. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE; in those cases, existing instances are updated until the `targetSize` for this version is reached."
        },
        "name": {
          "type": "string",
          "description": "Name of the version. Unique among all versions in the scope of this managed instance group."
        },
        "targetSize": {
          "$ref": "#/types/google-native:compute%2Fbeta:FixedOrPercentResponse",
          "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: - If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. - if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
        }
      },
      "type": "object",
      "required": [
        "instanceTemplate",
        "name",
        "targetSize"
      ]
    },
    "google-native:compute/beta:InstanceKeyRevocationActionType": {
      "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "KeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Indicates user chose no operation.",
          "value": "NONE"
        },
        {
          "name": "Stop",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/beta:InstanceParams": {
      "description": "Additional instance params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstanceParamsResponse": {
      "description": "Additional instance params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        }
      },
      "type": "object",
      "required": [
        "resourceManagerTags"
      ]
    },
    "google-native:compute/beta:InstancePostKeyRevocationActionType": {
      "description": "PostKeyRevocationActionType of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Noop",
          "description": "Indicates user chose no operation.",
          "value": "NOOP"
        },
        {
          "name": "PostKeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "POST_KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Shutdown",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "SHUTDOWN"
        }
      ]
    },
    "google-native:compute/beta:InstancePrivateIpv6GoogleAccess": {
      "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default.",
      "type": "string",
      "enum": [
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        },
        {
          "name": "InheritFromSubnetwork",
          "description": "Each network interface inherits PrivateIpv6GoogleAccess from its subnetwork.",
          "value": "INHERIT_FROM_SUBNETWORK"
        }
      ]
    },
    "google-native:compute/beta:InstanceProperties": {
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Fbeta:AdvancedMachineFeatures",
          "description": "Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConfidentialInstanceConfig",
          "description": "Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from these properties."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AttachedDisk"
          },
          "description": "An array of disks that are associated with the instances that are created from these properties."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Fbeta:DisplayDevice",
          "description": "Display Device properties to enable support for remote display products like: Teradici, VNC and TeamViewer Note that for MachineImage, this is not supported yet."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfig"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from these properties."
        },
        "keyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesKeyRevocationActionType",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from these properties."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from these properties."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:Metadata",
          "description": "The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkInterface"
          },
          "description": "An array of network access configurations for this interface."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkPerformanceConfig",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "postKeyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesPostKeyRevocationActionType",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesPrivateIpv6GoogleAccess",
          "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Fbeta:ReservationAffinity",
          "description": "Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fbeta:Scheduling",
          "description": "Specifies the scheduling options for the instances that are created from these properties."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAccount"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedInstanceConfig",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "shieldedVmConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedVmConfig",
          "description": "Specifies the Shielded VM options for the instances that are created from these properties."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fbeta:Tags",
          "description": "A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstancePropertiesKeyRevocationActionType": {
      "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "KeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Indicates user chose no operation.",
          "value": "NONE"
        },
        {
          "name": "Stop",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/beta:InstancePropertiesPatch": {
      "description": "Represents the change that you want to make to the instance properties.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The label key-value pairs that you want to patch onto the instance."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InstancePropertiesPatchResponse": {
      "description": "Represents the change that you want to make to the instance properties.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The label key-value pairs that you want to patch onto the instance."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "metadata"
      ]
    },
    "google-native:compute/beta:InstancePropertiesPostKeyRevocationActionType": {
      "description": "PostKeyRevocationActionType of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Noop",
          "description": "Indicates user chose no operation.",
          "value": "NOOP"
        },
        {
          "name": "PostKeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "POST_KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Shutdown",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "SHUTDOWN"
        }
      ]
    },
    "google-native:compute/beta:InstancePropertiesPrivateIpv6GoogleAccess": {
      "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet.",
      "type": "string",
      "enum": [
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        },
        {
          "name": "InheritFromSubnetwork",
          "description": "Each network interface inherits PrivateIpv6GoogleAccess from its subnetwork.",
          "value": "INHERIT_FROM_SUBNETWORK"
        }
      ]
    },
    "google-native:compute/beta:InstancePropertiesResponse": {
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Fbeta:AdvancedMachineFeaturesResponse",
          "description": "Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConfidentialInstanceConfigResponse",
          "description": "Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from these properties."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskResponse"
          },
          "description": "An array of disks that are associated with the instances that are created from these properties."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Fbeta:DisplayDeviceResponse",
          "description": "Display Device properties to enable support for remote display products like: Teradici, VNC and TeamViewer Note that for MachineImage, this is not supported yet."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfigResponse"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from these properties."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from these properties."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from these properties."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:MetadataResponse",
          "description": "The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkInterfaceResponse"
          },
          "description": "An array of network access configurations for this interface."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkPerformanceConfigResponse",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "postKeyRevocationActionType": {
          "type": "string",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Fbeta:ReservationAffinityResponse",
          "description": "Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fbeta:SchedulingResponse",
          "description": "Specifies the scheduling options for the instances that are created from these properties."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAccountResponse"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedInstanceConfigResponse",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "shieldedVmConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedVmConfigResponse",
          "description": "Specifies the Shielded VM options for the instances that are created from these properties."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fbeta:TagsResponse",
          "description": "A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "advancedMachineFeatures",
        "canIpForward",
        "confidentialInstanceConfig",
        "description",
        "disks",
        "displayDevice",
        "guestAccelerators",
        "keyRevocationActionType",
        "labels",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "networkInterfaces",
        "networkPerformanceConfig",
        "postKeyRevocationActionType",
        "privateIpv6GoogleAccess",
        "reservationAffinity",
        "resourceManagerTags",
        "resourcePolicies",
        "scheduling",
        "serviceAccounts",
        "shieldedInstanceConfig",
        "shieldedVmConfig",
        "tags"
      ]
    },
    "google-native:compute/beta:InstantSnapshotResourceStatusResponse": {
      "properties": {
        "storageSizeBytes": {
          "type": "string",
          "description": "The storage size of this instant snapshot."
        }
      },
      "type": "object",
      "required": [
        "storageSizeBytes"
      ]
    },
    "google-native:compute/beta:Int64RangeMatch": {
      "description": "HttpRouteRuleMatch criteria for field values that must stay within the specified integer range.",
      "properties": {
        "rangeEnd": {
          "type": "string",
          "description": "The end of the range (exclusive) in signed long integer format."
        },
        "rangeStart": {
          "type": "string",
          "description": "The start of the range (inclusive) in signed long integer format."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:Int64RangeMatchResponse": {
      "description": "HttpRouteRuleMatch criteria for field values that must stay within the specified integer range.",
      "properties": {
        "rangeEnd": {
          "type": "string",
          "description": "The end of the range (exclusive) in signed long integer format."
        },
        "rangeStart": {
          "type": "string",
          "description": "The start of the range (inclusive) in signed long integer format."
        }
      },
      "type": "object",
      "required": [
        "rangeEnd",
        "rangeStart"
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentBandwidth": {
      "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s ",
      "type": "string",
      "enum": [
        {
          "name": "Bps100m",
          "description": "100 Mbit/s",
          "value": "BPS_100M"
        },
        {
          "name": "Bps10g",
          "description": "10 Gbit/s",
          "value": "BPS_10G"
        },
        {
          "name": "Bps1g",
          "description": "1 Gbit/s",
          "value": "BPS_1G"
        },
        {
          "name": "Bps200m",
          "description": "200 Mbit/s",
          "value": "BPS_200M"
        },
        {
          "name": "Bps20g",
          "description": "20 Gbit/s",
          "value": "BPS_20G"
        },
        {
          "name": "Bps2g",
          "description": "2 Gbit/s",
          "value": "BPS_2G"
        },
        {
          "name": "Bps300m",
          "description": "300 Mbit/s",
          "value": "BPS_300M"
        },
        {
          "name": "Bps400m",
          "description": "400 Mbit/s",
          "value": "BPS_400M"
        },
        {
          "name": "Bps500m",
          "description": "500 Mbit/s",
          "value": "BPS_500M"
        },
        {
          "name": "Bps50g",
          "description": "50 Gbit/s",
          "value": "BPS_50G"
        },
        {
          "name": "Bps50m",
          "description": "50 Mbit/s",
          "value": "BPS_50M"
        },
        {
          "name": "Bps5g",
          "description": "5 Gbit/s",
          "value": "BPS_5G"
        }
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentConfigurationConstraintsBgpPeerASNRangeResponse": {
      "properties": {
        "max": {
          "type": "integer"
        },
        "min": {
          "type": "integer"
        }
      },
      "type": "object",
      "required": [
        "max",
        "min"
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentConfigurationConstraintsResponse": {
      "properties": {
        "bgpMd5": {
          "type": "string",
          "description": "Whether the attachment's BGP session requires/allows/disallows BGP MD5 authentication. This can take one of the following values: MD5_OPTIONAL, MD5_REQUIRED, MD5_UNSUPPORTED. For example, a Cross-Cloud Interconnect connection to a remote cloud provider that requires BGP MD5 authentication has the interconnectRemoteLocation attachment_configuration_constraints.bgp_md5 field set to MD5_REQUIRED, and that property is propagated to the attachment. Similarly, if BGP MD5 is MD5_UNSUPPORTED, an error is returned if MD5 is requested."
        },
        "bgpPeerAsnRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentConfigurationConstraintsBgpPeerASNRangeResponse"
          },
          "description": "List of ASN ranges that the remote location is known to support. Formatted as an array of inclusive ranges {min: min-value, max: max-value}. For example, [{min: 123, max: 123}, {min: 64512, max: 65534}] allows the peer ASN to be 123 or anything in the range 64512-65534. This field is only advisory. Although the API accepts other ranges, these are the ranges that we recommend."
        }
      },
      "type": "object",
      "required": [
        "bgpMd5",
        "bgpPeerAsnRanges"
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentEdgeAvailabilityDomain": {
      "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityDomain1",
          "value": "AVAILABILITY_DOMAIN_1"
        },
        {
          "name": "AvailabilityDomain2",
          "value": "AVAILABILITY_DOMAIN_2"
        },
        {
          "name": "AvailabilityDomainAny",
          "value": "AVAILABILITY_DOMAIN_ANY"
        }
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentEncryption": {
      "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. ",
      "type": "string",
      "enum": [
        {
          "name": "Ipsec",
          "description": "The interconnect attachment will carry only encrypted traffic that is encrypted by an IPsec device such as HA VPN gateway; VMs cannot directly send traffic to or receive traffic from such an interconnect attachment. To use HA VPN over Cloud Interconnect, the interconnect attachment must be created with this option.",
          "value": "IPSEC"
        },
        {
          "name": "None",
          "description": "This is the default value, which means the Interconnect Attachment will carry unencrypted traffic. VMs will be able to send traffic to or receive traffic from such interconnect attachment.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentPartnerMetadata": {
      "description": "Informational metadata about Partner attachments from Partners to display to customers. These fields are propagated from PARTNER_PROVIDER attachments to their corresponding PARTNER attachments.",
      "properties": {
        "interconnectName": {
          "type": "string",
          "description": "Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner's portal. For instance \"Chicago 1\". This value may be validated to match approved Partner values."
        },
        "partnerName": {
          "type": "string",
          "description": "Plain text name of the Partner providing this attachment. This value may be validated to match approved Partner values."
        },
        "portalUrl": {
          "type": "string",
          "description": "URL of the Partner's portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:InterconnectAttachmentPartnerMetadataResponse": {
      "description": "Informational metadata about Partner attachments from Partners to display to customers. These fields are propagated from PARTNER_PROVIDER attachments to their corresponding PARTNER attachments.",
      "properties": {
        "interconnectName": {
          "type": "string",
          "description": "Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner's portal. For instance \"Chicago 1\". This value may be validated to match approved Partner values."
        },
        "partnerName": {
          "type": "string",
          "description": "Plain text name of the Partner providing this attachment. This value may be validated to match approved Partner values."
        },
        "portalUrl": {
          "type": "string",
          "description": "URL of the Partner's portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values."
        }
      },
      "type": "object",
      "required": [
        "interconnectName",
        "partnerName",
        "portalUrl"
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentPrivateInfoResponse": {
      "description": "Information for an interconnect attachment when this belongs to an interconnect of type DEDICATED.",
      "properties": {
        "tag8021q": {
          "type": "integer",
          "description": "802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region."
        }
      },
      "type": "object",
      "required": [
        "tag8021q"
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentStackType": {
      "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "The interconnect attachment can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "The interconnect attachment will only be assigned IPv4 addresses.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/beta:InterconnectAttachmentType": {
      "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. ",
      "type": "string",
      "enum": [
        {
          "name": "Dedicated",
          "description": "Attachment to a dedicated interconnect.",
          "value": "DEDICATED"
        },
        {
          "name": "Partner",
          "description": "Attachment to a partner interconnect, created by the customer.",
          "value": "PARTNER"
        },
        {
          "name": "PartnerProvider",
          "description": "Attachment to a partner interconnect, created by the partner.",
          "value": "PARTNER_PROVIDER"
        }
      ]
    },
    "google-native:compute/beta:InterconnectCircuitInfoResponse": {
      "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only.",
      "properties": {
        "customerDemarcId": {
          "type": "string",
          "description": "Customer-side demarc ID for this circuit."
        },
        "googleCircuitId": {
          "type": "string",
          "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up."
        },
        "googleDemarcId": {
          "type": "string",
          "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA."
        }
      },
      "type": "object",
      "required": [
        "customerDemarcId",
        "googleCircuitId",
        "googleDemarcId"
      ]
    },
    "google-native:compute/beta:InterconnectInterconnectType": {
      "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
      "type": "string",
      "enum": [
        {
          "name": "Dedicated",
          "description": "A dedicated physical interconnection with the customer.",
          "value": "DEDICATED"
        },
        {
          "name": "ItPrivate",
          "description": "[Deprecated] A private, physical interconnection with the customer.",
          "value": "IT_PRIVATE"
        },
        {
          "name": "Partner",
          "description": "A partner-managed interconnection shared between customers via partner.",
          "value": "PARTNER"
        }
      ]
    },
    "google-native:compute/beta:InterconnectLinkType": {
      "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
      "type": "string",
      "enum": [
        {
          "name": "LinkTypeEthernet100gLr",
          "description": "100G Ethernet, LR Optics.",
          "value": "LINK_TYPE_ETHERNET_100G_LR"
        },
        {
          "name": "LinkTypeEthernet10gLr",
          "description": "10G Ethernet, LR Optics. [(rate_bps) = 10000000000];",
          "value": "LINK_TYPE_ETHERNET_10G_LR"
        }
      ]
    },
    "google-native:compute/beta:InterconnectMacsec": {
      "description": "Configuration information for enabling Media Access Control security (MACsec) on this Cloud Interconnect connection between Google and your on-premises router.",
      "properties": {
        "failOpen": {
          "type": "boolean",
          "description": "If set to true, the Interconnect connection is configured with a should-secure MACsec security policy, that allows the Google router to fallback to cleartext traffic if the MKA session cannot be established. By default, the Interconnect connection is configured with a must-secure security policy that drops all traffic if the MKA session cannot be established with your router."
        },
        "preSharedKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectMacsecPreSharedKey"
          },
          "description": "A keychain placeholder describing a set of named key objects along with their start times. A MACsec CKN/CAK is generated for each key in the key chain. Google router automatically picks the key with the most recent startTime when establishing or re-establishing a MACsec secure link."
        }
      },
      "type": "object",
      "required": [
        "preSharedKeys"
      ]
    },
    "google-native:compute/beta:InterconnectMacsecPreSharedKey": {
      "description": "Describes a pre-shared key used to setup MACsec in static connectivity association key (CAK) mode.",
      "properties": {
        "name": {
          "type": "string",
          "description": "A name for this pre-shared key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "startTime": {
          "type": "string",
          "description": "A RFC3339 timestamp on or after which the key is valid. startTime can be in the future. If the keychain has a single key, startTime can be omitted. If the keychain has multiple keys, startTime is mandatory for each key. The start times of keys must be in increasing order. The start times of two consecutive keys must be at least 6 hours apart."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:compute/beta:InterconnectMacsecPreSharedKeyResponse": {
      "description": "Describes a pre-shared key used to setup MACsec in static connectivity association key (CAK) mode.",
      "properties": {
        "name": {
          "type": "string",
          "description": "A name for this pre-shared key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "startTime": {
          "type": "string",
          "description": "A RFC3339 timestamp on or after which the key is valid. startTime can be in the future. If the keychain has a single key, startTime can be omitted. If the keychain has multiple keys, startTime is mandatory for each key. The start times of keys must be in increasing order. The start times of two consecutive keys must be at least 6 hours apart."
        }
      },
      "type": "object",
      "required": [
        "name",
        "startTime"
      ]
    },
    "google-native:compute/beta:InterconnectMacsecResponse": {
      "description": "Configuration information for enabling Media Access Control security (MACsec) on this Cloud Interconnect connection between Google and your on-premises router.",
      "properties": {
        "failOpen": {
          "type": "boolean",
          "description": "If set to true, the Interconnect connection is configured with a should-secure MACsec security policy, that allows the Google router to fallback to cleartext traffic if the MKA session cannot be established. By default, the Interconnect connection is configured with a must-secure security policy that drops all traffic if the MKA session cannot be established with your router."
        },
        "preSharedKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectMacsecPreSharedKeyResponse"
          },
          "description": "A keychain placeholder describing a set of named key objects along with their start times. A MACsec CKN/CAK is generated for each key in the key chain. Google router automatically picks the key with the most recent startTime when establishing or re-establishing a MACsec secure link."
        }
      },
      "type": "object",
      "required": [
        "failOpen",
        "preSharedKeys"
      ]
    },
    "google-native:compute/beta:InterconnectOutageNotificationResponse": {
      "description": "Description of a planned outage on this Interconnect.",
      "properties": {
        "affectedCircuits": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected."
        },
        "description": {
          "type": "string",
          "description": "A description about the purpose of the outage."
        },
        "endTime": {
          "type": "string",
          "description": "Scheduled end time for the outage (milliseconds since Unix epoch)."
        },
        "issueType": {
          "type": "string",
          "description": "Form this outage is expected to take, which can take one of the following values: - OUTAGE: The Interconnect may be completely out of service for some or all of the specified window. - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain up, but with reduced bandwidth. Note that the versions of this enum prefixed with \"IT_\" have been deprecated in favor of the unprefixed values."
        },
        "name": {
          "type": "string",
          "description": "Unique identifier for this outage notification."
        },
        "source": {
          "type": "string",
          "description": "The party that generated this notification, which can take the following value: - GOOGLE: this notification as generated by Google. Note that the value of NSRC_GOOGLE has been deprecated in favor of GOOGLE."
        },
        "startTime": {
          "type": "string",
          "description": "Scheduled start time for the outage (milliseconds since Unix epoch)."
        },
        "state": {
          "type": "string",
          "description": "State of this notification, which can take one of the following values: - ACTIVE: This outage notification is active. The event could be in the past, present, or future. See start_time and end_time for scheduling. - CANCELLED: The outage associated with this notification was cancelled before the outage was due to start. - COMPLETED: The outage associated with this notification is complete. Note that the versions of this enum prefixed with \"NS_\" have been deprecated in favor of the unprefixed values."
        }
      },
      "type": "object",
      "required": [
        "affectedCircuits",
        "description",
        "endTime",
        "issueType",
        "name",
        "source",
        "startTime",
        "state"
      ]
    },
    "google-native:compute/beta:InterconnectRequestedFeaturesItem": {
      "type": "string",
      "enum": [
        {
          "name": "IfMacsec",
          "description": "Media Access Control security (MACsec)",
          "value": "IF_MACSEC"
        }
      ]
    },
    "google-native:compute/beta:LicenseResourceCommitment": {
      "description": "Commitment for a particular license resource.",
      "properties": {
        "amount": {
          "type": "string",
          "description": "The number of licenses purchased."
        },
        "coresPerLicense": {
          "type": "string",
          "description": "Specifies the core range of the instance for which this license applies."
        },
        "license": {
          "type": "string",
          "description": "Any applicable license URI."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:LicenseResourceCommitmentResponse": {
      "description": "Commitment for a particular license resource.",
      "properties": {
        "amount": {
          "type": "string",
          "description": "The number of licenses purchased."
        },
        "coresPerLicense": {
          "type": "string",
          "description": "Specifies the core range of the instance for which this license applies."
        },
        "license": {
          "type": "string",
          "description": "Any applicable license URI."
        }
      },
      "type": "object",
      "required": [
        "amount",
        "coresPerLicense",
        "license"
      ]
    },
    "google-native:compute/beta:LicenseResourceRequirements": {
      "properties": {
        "minGuestCpuCount": {
          "type": "integer",
          "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start."
        },
        "minMemoryMb": {
          "type": "integer",
          "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:LicenseResourceRequirementsResponse": {
      "properties": {
        "minGuestCpuCount": {
          "type": "integer",
          "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start."
        },
        "minMemoryMb": {
          "type": "integer",
          "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start."
        }
      },
      "type": "object",
      "required": [
        "minGuestCpuCount",
        "minMemoryMb"
      ]
    },
    "google-native:compute/beta:LocalDisk": {
      "properties": {
        "diskCount": {
          "type": "integer",
          "description": "Specifies the number of such disks."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:LocalDiskResponse": {
      "properties": {
        "diskCount": {
          "type": "integer",
          "description": "Specifies the number of such disks."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "diskCount",
        "diskSizeGb",
        "diskType"
      ]
    },
    "google-native:compute/beta:LocalizedMessageResponse": {
      "description": "Provides a localized error message that is safe to return to the user which can be attached to an RPC error.",
      "properties": {
        "locale": {
          "type": "string",
          "description": "The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\""
        },
        "message": {
          "type": "string",
          "description": "The localized error message in the above locale."
        }
      },
      "type": "object",
      "required": [
        "locale",
        "message"
      ]
    },
    "google-native:compute/beta:LogConfig": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:compute%2Fbeta:LogConfigCloudAuditOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "counter": {
          "$ref": "#/types/google-native:compute%2Fbeta:LogConfigCounterOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:compute%2Fbeta:LogConfigDataAccessOptions",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:LogConfigCloudAuditOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:AuthorizationLoggingOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logName": {
          "$ref": "#/types/google-native:compute%2Fbeta:LogConfigCloudAuditOptionsLogName",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:LogConfigCloudAuditOptionsLogName": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "AdminActivity",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_ACTIVITY"
        },
        {
          "name": "DataAccess",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_ACCESS"
        },
        {
          "name": "UnspecifiedLogName",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "UNSPECIFIED_LOG_NAME"
        }
      ]
    },
    "google-native:compute/beta:LogConfigCloudAuditOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:AuthorizationLoggingOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logName": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "authorizationLoggingOptions",
        "logName"
      ]
    },
    "google-native:compute/beta:LogConfigCounterOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:LogConfigCounterOptionsCustomField"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "field": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "metric": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:LogConfigCounterOptionsCustomField": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "name": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "value": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:LogConfigCounterOptionsCustomFieldResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "name": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "value": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/beta:LogConfigCounterOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:LogConfigCounterOptionsCustomFieldResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "field": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "metric": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "customFields",
        "field",
        "metric"
      ]
    },
    "google-native:compute/beta:LogConfigDataAccessOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "logMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:LogConfigDataAccessOptionsLogMode",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:LogConfigDataAccessOptionsLogMode": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "LogFailClosed",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG_FAIL_CLOSED"
        },
        {
          "name": "LogModeUnspecified",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG_MODE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:LogConfigDataAccessOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "logMode": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "logMode"
      ]
    },
    "google-native:compute/beta:LogConfigResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:compute%2Fbeta:LogConfigCloudAuditOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "counter": {
          "$ref": "#/types/google-native:compute%2Fbeta:LogConfigCounterOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:compute%2Fbeta:LogConfigDataAccessOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "cloudAudit",
        "counter",
        "dataAccess"
      ]
    },
    "google-native:compute/beta:Metadata": {
      "description": "A metadata key/value entry.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataItemsItem"
          },
          "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:MetadataFilter": {
      "description": "Opaque filter criteria used by load balancers to restrict routing configuration to a limited set of load balancing proxies. Proxies and sidecars involved in load balancing would typically present metadata to the load balancers that need to match criteria specified here. If a match takes place, the relevant configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. An example for using metadataFilters would be: if load balancing involves Envoys, they receive routing configuration when values in metadataFilters match values supplied in of their XDS requests to loadbalancers.",
      "properties": {
        "filterLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilterLabelMatch"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list must not be empty and can have at the most 64 entries."
        },
        "filterMatchCriteria": {
          "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilterFilterMatchCriteria",
          "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:MetadataFilterFilterMatchCriteria": {
      "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. ",
      "type": "string",
      "enum": [
        {
          "name": "MatchAll",
          "description": "Specifies that all filterLabels must match for the metadataFilter to be considered a match.",
          "value": "MATCH_ALL"
        },
        {
          "name": "MatchAny",
          "description": "Specifies that any filterLabel must match for the metadataFilter to be considered a match.",
          "value": "MATCH_ANY"
        },
        {
          "name": "NotSet",
          "description": "Indicates that the match criteria was not set. A metadataFilter must never be created with this value.",
          "value": "NOT_SET"
        }
      ]
    },
    "google-native:compute/beta:MetadataFilterLabelMatch": {
      "description": "MetadataFilter label name value pairs that are expected to match corresponding labels presented as metadata to the load balancer.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of metadata label. The name can have a maximum length of 1024 characters and must be at least 1 character long."
        },
        "value": {
          "type": "string",
          "description": "The value of the label must match the specified value. value can have a maximum length of 1024 characters."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:MetadataFilterLabelMatchResponse": {
      "description": "MetadataFilter label name value pairs that are expected to match corresponding labels presented as metadata to the load balancer.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of metadata label. The name can have a maximum length of 1024 characters and must be at least 1 character long."
        },
        "value": {
          "type": "string",
          "description": "The value of the label must match the specified value. value can have a maximum length of 1024 characters."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/beta:MetadataFilterResponse": {
      "description": "Opaque filter criteria used by load balancers to restrict routing configuration to a limited set of load balancing proxies. Proxies and sidecars involved in load balancing would typically present metadata to the load balancers that need to match criteria specified here. If a match takes place, the relevant configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. An example for using metadataFilters would be: if load balancing involves Envoys, they receive routing configuration when values in metadataFilters match values supplied in of their XDS requests to loadbalancers.",
      "properties": {
        "filterLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilterLabelMatchResponse"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list must not be empty and can have at the most 64 entries."
        },
        "filterMatchCriteria": {
          "type": "string",
          "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. "
        }
      },
      "type": "object",
      "required": [
        "filterLabels",
        "filterMatchCriteria"
      ]
    },
    "google-native:compute/beta:MetadataItemsItem": {
      "description": "Metadata",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project."
        },
        "value": {
          "type": "string",
          "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB)."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:MetadataItemsItemResponse": {
      "description": "Metadata",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project."
        },
        "value": {
          "type": "string",
          "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB)."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/beta:MetadataResponse": {
      "description": "A metadata key/value entry.",
      "properties": {
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataItemsItemResponse"
          },
          "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#metadata for metadata."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "items",
        "kind"
      ]
    },
    "google-native:compute/beta:NamedPort": {
      "description": "The named port. For example: <\"http\", 80>.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "port": {
          "type": "integer",
          "description": "The port number, which can be a value between 1 and 65535."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NamedPortResponse": {
      "description": "The named port. For example: <\"http\", 80>.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "port": {
          "type": "integer",
          "description": "The port number, which can be a value between 1 and 65535."
        }
      },
      "type": "object",
      "required": [
        "name",
        "port"
      ]
    },
    "google-native:compute/beta:NetworkAttachmentConnectedEndpointResponse": {
      "description": "[Output Only] A connection connected to this network attachment.",
      "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."
        },
        "ipv6Address": {
          "type": "string",
          "description": "The IPv6 address assigned to the producer instance network interface. This is only assigned when the stack types of both the instance network interface and the consumer subnet are IPv4_IPv6."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number of the interface to which the IP was assigned."
        },
        "secondaryIpCidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alias IP ranges from the same subnetwork."
        },
        "status": {
          "type": "string",
          "description": "The status of a connected endpoint to this network attachment."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork used to assign the IP to the producer instance network interface."
        },
        "subnetworkCidrRange": {
          "type": "string",
          "description": "The CIDR range of the subnet from which the IPv4 internal IP was allocated from."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ipv6Address",
        "projectIdOrNum",
        "secondaryIpCidrRanges",
        "status",
        "subnetwork",
        "subnetworkCidrRange"
      ]
    },
    "google-native:compute/beta:NetworkAttachmentConnectionPreference": {
      "type": "string",
      "enum": [
        {
          "name": "AcceptAutomatic",
          "value": "ACCEPT_AUTOMATIC"
        },
        {
          "name": "AcceptManual",
          "value": "ACCEPT_MANUAL"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/beta:NetworkEndpointGroupAppEngine": {
      "description": "Configuration for an App Engine network endpoint group (NEG). The service is optional, may be provided explicitly or in the URL mask. The version is optional and can only be provided explicitly or in the URL mask when service is present. Note: App Engine service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Optional serving service. The service name is case-sensitive and must be 1-63 characters long. Example value: \"default\", \"my-service\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse service and version fields from a request URL. URL mask allows for routing to multiple App Engine services without having to create multiple Network Endpoint Groups and backend services. For example, the request URLs \"foo1-dot-appname.appspot.com/v1\" and \"foo1-dot-appname.appspot.com/v2\" can be backed by the same Serverless NEG with URL mask \"<service>-dot-appname.appspot.com/<version>\". The URL mask will parse them to { service = \"foo1\", version = \"v1\" } and { service = \"foo1\", version = \"v2\" } respectively."
        },
        "version": {
          "type": "string",
          "description": "Optional serving version. The version name is case-sensitive and must be 1-100 characters long. Example value: \"v1\", \"v2\"."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NetworkEndpointGroupAppEngineResponse": {
      "description": "Configuration for an App Engine network endpoint group (NEG). The service is optional, may be provided explicitly or in the URL mask. The version is optional and can only be provided explicitly or in the URL mask when service is present. Note: App Engine service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Optional serving service. The service name is case-sensitive and must be 1-63 characters long. Example value: \"default\", \"my-service\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse service and version fields from a request URL. URL mask allows for routing to multiple App Engine services without having to create multiple Network Endpoint Groups and backend services. For example, the request URLs \"foo1-dot-appname.appspot.com/v1\" and \"foo1-dot-appname.appspot.com/v2\" can be backed by the same Serverless NEG with URL mask \"<service>-dot-appname.appspot.com/<version>\". The URL mask will parse them to { service = \"foo1\", version = \"v1\" } and { service = \"foo1\", version = \"v2\" } respectively."
        },
        "version": {
          "type": "string",
          "description": "Optional serving version. The version name is case-sensitive and must be 1-100 characters long. Example value: \"v1\", \"v2\"."
        }
      },
      "type": "object",
      "required": [
        "service",
        "urlMask",
        "version"
      ]
    },
    "google-native:compute/beta:NetworkEndpointGroupCloudFunction": {
      "description": "Configuration for a Cloud Function network endpoint group (NEG). The function must be provided explicitly or in the URL mask. Note: Cloud Function must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "function": {
          "type": "string",
          "description": "A user-defined name of the Cloud Function. The function name is case-sensitive and must be 1-63 characters long. Example value: \"func1\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse function field from a request URL. URL mask allows for routing to multiple Cloud Functions without having to create multiple Network Endpoint Groups and backend services. For example, request URLs \" mydomain.com/function1\" and \"mydomain.com/function2\" can be backed by the same Serverless NEG with URL mask \"/<function>\". The URL mask will parse them to { function = \"function1\" } and { function = \"function2\" } respectively."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NetworkEndpointGroupCloudFunctionResponse": {
      "description": "Configuration for a Cloud Function network endpoint group (NEG). The function must be provided explicitly or in the URL mask. Note: Cloud Function must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "function": {
          "type": "string",
          "description": "A user-defined name of the Cloud Function. The function name is case-sensitive and must be 1-63 characters long. Example value: \"func1\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse function field from a request URL. URL mask allows for routing to multiple Cloud Functions without having to create multiple Network Endpoint Groups and backend services. For example, request URLs \" mydomain.com/function1\" and \"mydomain.com/function2\" can be backed by the same Serverless NEG with URL mask \"/<function>\". The URL mask will parse them to { function = \"function1\" } and { function = \"function2\" } respectively."
        }
      },
      "type": "object",
      "required": [
        "function",
        "urlMask"
      ]
    },
    "google-native:compute/beta:NetworkEndpointGroupCloudRun": {
      "description": "Configuration for a Cloud Run network endpoint group (NEG). The service must be provided explicitly or in the URL mask. The tag is optional, may be provided explicitly or in the URL mask. Note: Cloud Run service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Cloud Run service is the main resource of Cloud Run. The service must be 1-63 characters long, and comply with RFC1035. Example value: \"run-service\"."
        },
        "tag": {
          "type": "string",
          "description": "Optional Cloud Run tag represents the \"named-revision\" to provide additional fine-grained traffic routing information. The tag must be 1-63 characters long, and comply with RFC1035. Example value: \"revision-0010\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse <service> and <tag> fields from a request URL. URL mask allows for routing to multiple Run services without having to create multiple network endpoint groups and backend services. For example, request URLs \"foo1.domain.com/bar1\" and \"foo1.domain.com/bar2\" can be backed by the same Serverless Network Endpoint Group (NEG) with URL mask \"<tag>.domain.com/<service>\". The URL mask will parse them to { service=\"bar1\", tag=\"foo1\" } and { service=\"bar2\", tag=\"foo2\" } respectively."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NetworkEndpointGroupCloudRunResponse": {
      "description": "Configuration for a Cloud Run network endpoint group (NEG). The service must be provided explicitly or in the URL mask. The tag is optional, may be provided explicitly or in the URL mask. Note: Cloud Run service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Cloud Run service is the main resource of Cloud Run. The service must be 1-63 characters long, and comply with RFC1035. Example value: \"run-service\"."
        },
        "tag": {
          "type": "string",
          "description": "Optional Cloud Run tag represents the \"named-revision\" to provide additional fine-grained traffic routing information. The tag must be 1-63 characters long, and comply with RFC1035. Example value: \"revision-0010\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse <service> and <tag> fields from a request URL. URL mask allows for routing to multiple Run services without having to create multiple network endpoint groups and backend services. For example, request URLs \"foo1.domain.com/bar1\" and \"foo1.domain.com/bar2\" can be backed by the same Serverless Network Endpoint Group (NEG) with URL mask \"<tag>.domain.com/<service>\". The URL mask will parse them to { service=\"bar1\", tag=\"foo1\" } and { service=\"bar2\", tag=\"foo2\" } respectively."
        }
      },
      "type": "object",
      "required": [
        "service",
        "tag",
        "urlMask"
      ]
    },
    "google-native:compute/beta:NetworkEndpointGroupLbNetworkEndpointGroup": {
      "description": "Load balancing specific fields for network endpoint group.",
      "properties": {
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint. [Deprecated] This field is deprecated.",
          "deprecationMessage": "The default port used if the port number is not specified in the network endpoint. [Deprecated] This field is deprecated."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified. [Deprecated] This field is deprecated.",
          "deprecationMessage": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified. [Deprecated] This field is deprecated."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong. [Deprecated] This field is deprecated.",
          "deprecationMessage": "Optional URL of the subnetwork to which all network endpoints in the NEG belong. [Deprecated] This field is deprecated."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NetworkEndpointGroupLbNetworkEndpointGroupResponse": {
      "description": "Load balancing specific fields for network endpoint group.",
      "properties": {
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint. [Deprecated] This field is deprecated.",
          "deprecationMessage": "The default port used if the port number is not specified in the network endpoint. [Deprecated] This field is deprecated."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified. [Deprecated] This field is deprecated.",
          "deprecationMessage": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified. [Deprecated] This field is deprecated."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong. [Deprecated] This field is deprecated.",
          "deprecationMessage": "Optional URL of the subnetwork to which all network endpoints in the NEG belong. [Deprecated] This field is deprecated."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the network endpoint group is located. [Deprecated] This field is deprecated.",
          "deprecationMessage": "[Output Only] The URL of the zone where the network endpoint group is located. [Deprecated] This field is deprecated."
        }
      },
      "type": "object",
      "required": [
        "defaultPort",
        "network",
        "subnetwork",
        "zone"
      ]
    },
    "google-native:compute/beta:NetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/beta:NetworkEndpointGroupPscData": {
      "description": "All data that is specifically relevant to only network endpoint groups of type PRIVATE_SERVICE_CONNECT.",
      "type": "object"
    },
    "google-native:compute/beta:NetworkEndpointGroupPscDataResponse": {
      "description": "All data that is specifically relevant to only network endpoint groups of type PRIVATE_SERVICE_CONNECT.",
      "properties": {
        "consumerPscAddress": {
          "type": "string",
          "description": "Address allocated from given subnetwork for PSC. This IP address acts as a VIP for a PSC NEG, allowing it to act as an endpoint in L7 PSC-XLB."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Network Endpoint Group Consumer."
        },
        "pscConnectionStatus": {
          "type": "string",
          "description": "The connection status of the PSC Forwarding Rule."
        }
      },
      "type": "object",
      "required": [
        "consumerPscAddress",
        "pscConnectionId",
        "pscConnectionStatus"
      ]
    },
    "google-native:compute/beta:NetworkEndpointGroupServerlessDeployment": {
      "description": "Configuration for a serverless network endpoint group (NEG). The platform must be provided. Note: The target backend service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "platform": {
          "type": "string",
          "description": "The platform of the backend target(s) of this NEG. The only supported value is API Gateway: apigateway.googleapis.com."
        },
        "resource": {
          "type": "string",
          "description": "The user-defined name of the workload/instance. This value must be provided explicitly or in the urlMask. The resource identified by this value is platform-specific and is as follows: 1. API Gateway: The gateway ID 2. App Engine: The service name 3. Cloud Functions: The function name 4. Cloud Run: The service name "
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse platform-specific fields from a request URL. URL mask allows for routing to multiple resources on the same serverless platform without having to create multiple Network Endpoint Groups and backend resources. The fields parsed by this template are platform-specific and are as follows: 1. API Gateway: The gateway ID 2. App Engine: The service and version 3. Cloud Functions: The function name 4. Cloud Run: The service and tag "
        },
        "version": {
          "type": "string",
          "description": "The optional resource version. The version identified by this value is platform-specific and is follows: 1. API Gateway: Unused 2. App Engine: The service version 3. Cloud Functions: Unused 4. Cloud Run: The service tag "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NetworkEndpointGroupServerlessDeploymentResponse": {
      "description": "Configuration for a serverless network endpoint group (NEG). The platform must be provided. Note: The target backend service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "platform": {
          "type": "string",
          "description": "The platform of the backend target(s) of this NEG. The only supported value is API Gateway: apigateway.googleapis.com."
        },
        "resource": {
          "type": "string",
          "description": "The user-defined name of the workload/instance. This value must be provided explicitly or in the urlMask. The resource identified by this value is platform-specific and is as follows: 1. API Gateway: The gateway ID 2. App Engine: The service name 3. Cloud Functions: The function name 4. Cloud Run: The service name "
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse platform-specific fields from a request URL. URL mask allows for routing to multiple resources on the same serverless platform without having to create multiple Network Endpoint Groups and backend resources. The fields parsed by this template are platform-specific and are as follows: 1. API Gateway: The gateway ID 2. App Engine: The service and version 3. Cloud Functions: The function name 4. Cloud Run: The service and tag "
        },
        "version": {
          "type": "string",
          "description": "The optional resource version. The version identified by this value is platform-specific and is follows: 1. API Gateway: Unused 2. App Engine: The service version 3. Cloud Functions: Unused 4. Cloud Run: The service tag "
        }
      },
      "type": "object",
      "required": [
        "platform",
        "resource",
        "urlMask",
        "version"
      ]
    },
    "google-native:compute/beta:NetworkInterface": {
      "description": "A network interface resource attached to an instance.",
      "properties": {
        "accessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AccessConfig"
          },
          "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access."
        },
        "aliasIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AliasIpRange"
          },
          "description": "An array of alias IP ranges for this network interface. You can only specify this field for network interfaces in VPC networks."
        },
        "internalIpv6PrefixLength": {
          "type": "integer",
          "description": "The prefix length of the primary internal IPv6 range."
        },
        "ipv6AccessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AccessConfig"
          },
          "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."
        },
        "ipv6Address": {
          "type": "string",
          "description": "An IPv6 internal network address for this network interface. To use a static internal 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 internal IPv6 address from the instance's subnetwork."
        },
        "network": {
          "type": "string",
          "description": "URL of the VPC network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used. If the selected project doesn't have the default network, you must specify a network or subnet. If the network is not specified but the subnetwork is specified, the network is inferred. If you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/global/networks/ network - projects/project/global/networks/network - global/networks/default "
        },
        "networkAttachment": {
          "type": "string",
          "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{project_number}/regions/{region_name}/networkAttachments/{network_attachment_name}."
        },
        "networkIP": {
          "type": "string",
          "description": "An IPv4 internal IP address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
        },
        "nicType": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkInterfaceNicType",
          "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "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'll be empty if not specified by the users."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkInterfaceStackType",
          "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. If the network is in custom subnet mode, specifying the subnetwork is required. If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/regions/region /subnetworks/subnetwork - regions/region/subnetworks/subnetwork "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NetworkInterfaceNicType": {
      "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.",
      "type": "string",
      "enum": [
        {
          "name": "Gvnic",
          "description": "GVNIC",
          "value": "GVNIC"
        },
        {
          "name": "UnspecifiedNicType",
          "description": "No type specified.",
          "value": "UNSPECIFIED_NIC_TYPE"
        },
        {
          "name": "VirtioNet",
          "description": "VIRTIO",
          "value": "VIRTIO_NET"
        }
      ]
    },
    "google-native:compute/beta:NetworkInterfaceResponse": {
      "description": "A network interface resource attached to an instance.",
      "properties": {
        "accessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AccessConfigResponse"
          },
          "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access."
        },
        "aliasIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AliasIpRangeResponse"
          },
          "description": "An array of alias IP ranges for this network interface. You can only specify this field for network interfaces in VPC networks."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint hash of contents stored in this network interface. This field will be ignored when inserting an Instance or adding a NetworkInterface. An up-to-date fingerprint must be provided in order to update the NetworkInterface. The request will fail with error 400 Bad Request if the fingerprint is not provided, or 412 Precondition Failed if the fingerprint is out of date."
        },
        "internalIpv6PrefixLength": {
          "type": "integer",
          "description": "The prefix length of the primary internal IPv6 range."
        },
        "ipv6AccessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AccessConfigResponse"
          },
          "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."
        },
        "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. Valid only if stackType is IPV4_IPV6."
        },
        "ipv6Address": {
          "type": "string",
          "description": "An IPv6 internal network address for this network interface. To use a static internal 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 internal IPv6 address from the instance's subnetwork."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkInterface for network interfaces."
        },
        "name": {
          "type": "string",
          "description": "The name of the network interface, which is generated by the server. For a VM, the network interface uses the nicN naming format. Where N is a value between 0 and 7. The default interface value is nic0."
        },
        "network": {
          "type": "string",
          "description": "URL of the VPC network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used. If the selected project doesn't have the default network, you must specify a network or subnet. If the network is not specified but the subnetwork is specified, the network is inferred. If you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/global/networks/ network - projects/project/global/networks/network - global/networks/default "
        },
        "networkAttachment": {
          "type": "string",
          "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{project_number}/regions/{region_name}/networkAttachments/{network_attachment_name}."
        },
        "networkIP": {
          "type": "string",
          "description": "An IPv4 internal IP address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
        },
        "nicType": {
          "type": "string",
          "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "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'll be empty if not specified by the users."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. If the network is in custom subnet mode, specifying the subnetwork is required. If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/regions/region /subnetworks/subnetwork - regions/region/subnetworks/subnetwork "
        }
      },
      "type": "object",
      "required": [
        "accessConfigs",
        "aliasIpRanges",
        "fingerprint",
        "internalIpv6PrefixLength",
        "ipv6AccessConfigs",
        "ipv6AccessType",
        "ipv6Address",
        "kind",
        "name",
        "network",
        "networkAttachment",
        "networkIP",
        "nicType",
        "queueCount",
        "stackType",
        "subnetwork"
      ]
    },
    "google-native:compute/beta:NetworkInterfaceStackType": {
      "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "The network interface can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "The network interface will be assigned IPv4 address.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/beta:NetworkNetworkFirewallPolicyEnforcementOrder": {
      "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "AfterClassicFirewall",
          "value": "AFTER_CLASSIC_FIREWALL"
        },
        {
          "name": "BeforeClassicFirewall",
          "value": "BEFORE_CLASSIC_FIREWALL"
        }
      ]
    },
    "google-native:compute/beta:NetworkPeeringResponse": {
      "description": "A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.",
      "properties": {
        "autoCreateRoutes": {
          "type": "boolean",
          "description": "This field will be deprecated soon. Use the exchange_subnet_routes field instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE."
        },
        "exchangeSubnetRoutes": {
          "type": "boolean",
          "description": "Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE."
        },
        "exportCustomRoutes": {
          "type": "boolean",
          "description": "Whether to export the custom routes to peer network. The default value is false."
        },
        "exportSubnetRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Whether subnet routes with public IP range are exported. The default value is true, all subnet routes are exported. IPv4 special-use ranges are always exported to peers and are not controlled by this field."
        },
        "importCustomRoutes": {
          "type": "boolean",
          "description": "Whether to import the custom routes from peer network. The default value is false."
        },
        "importSubnetRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Whether subnet routes with public IP range are imported. The default value is false. IPv4 special-use ranges are always imported from peers and are not controlled by this field."
        },
        "name": {
          "type": "string",
          "description": "Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
        },
        "peerMtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes."
        },
        "stackType": {
          "type": "string",
          "description": "Which IP version(s) of traffic and routes are allowed to be imported or exported between peer networks. The default value is IPV4_ONLY."
        },
        "state": {
          "type": "string",
          "description": "State for the peering, either `ACTIVE` or `INACTIVE`. The peering is `ACTIVE` when there's a matching configuration in the peer network."
        },
        "stateDetails": {
          "type": "string",
          "description": "Details about the current state of the peering."
        }
      },
      "type": "object",
      "required": [
        "autoCreateRoutes",
        "exchangeSubnetRoutes",
        "exportCustomRoutes",
        "exportSubnetRoutesWithPublicIp",
        "importCustomRoutes",
        "importSubnetRoutesWithPublicIp",
        "name",
        "network",
        "peerMtu",
        "stackType",
        "state",
        "stateDetails"
      ]
    },
    "google-native:compute/beta:NetworkPerformanceConfig": {
      "properties": {
        "totalEgressBandwidthTier": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkPerformanceConfigTotalEgressBandwidthTier"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NetworkPerformanceConfigResponse": {
      "properties": {
        "totalEgressBandwidthTier": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "totalEgressBandwidthTier"
      ]
    },
    "google-native:compute/beta:NetworkPerformanceConfigTotalEgressBandwidthTier": {
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "value": "DEFAULT"
        },
        {
          "name": "Tier1",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:compute/beta:NetworkRoutingConfig": {
      "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
      "properties": {
        "routingMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkRoutingConfigRoutingMode",
          "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NetworkRoutingConfigResponse": {
      "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
      "properties": {
        "routingMode": {
          "type": "string",
          "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions."
        }
      },
      "type": "object",
      "required": [
        "routingMode"
      ]
    },
    "google-native:compute/beta:NetworkRoutingConfigRoutingMode": {
      "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions.",
      "type": "string",
      "enum": [
        {
          "name": "Global",
          "value": "GLOBAL"
        },
        {
          "name": "Regional",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:compute/beta:NodeGroupAutoscalingPolicy": {
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "The maximum number of nodes that the group should have. Must be set if autoscaling is enabled. Maximum value allowed is 100."
        },
        "minNodes": {
          "type": "integer",
          "description": "The minimum number of nodes that the group should have."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupAutoscalingPolicyMode",
          "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NodeGroupAutoscalingPolicyMode": {
      "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Off",
          "description": "Autoscaling is disabled.",
          "value": "OFF"
        },
        {
          "name": "On",
          "description": "Autocaling is fully enabled.",
          "value": "ON"
        },
        {
          "name": "OnlyScaleOut",
          "description": "Autoscaling will only scale out and will not remove nodes.",
          "value": "ONLY_SCALE_OUT"
        }
      ]
    },
    "google-native:compute/beta:NodeGroupAutoscalingPolicyResponse": {
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "The maximum number of nodes that the group should have. Must be set if autoscaling is enabled. Maximum value allowed is 100."
        },
        "minNodes": {
          "type": "integer",
          "description": "The minimum number of nodes that the group should have."
        },
        "mode": {
          "type": "string",
          "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes."
        }
      },
      "type": "object",
      "required": [
        "maxNodes",
        "minNodes",
        "mode"
      ]
    },
    "google-native:compute/beta:NodeGroupMaintenanceInterval": {
      "description": "Specifies the frequency of planned maintenance events. The accepted values are: `AS_NEEDED` and `RECURRENT`.",
      "type": "string",
      "enum": [
        {
          "name": "AsNeeded",
          "description": "VMs are eligible to receive infrastructure and hypervisor updates as they become available. This may result in more maintenance operations (live migrations or terminations) for the VM than the PERIODIC and RECURRENT options.",
          "value": "AS_NEEDED"
        },
        {
          "name": "Periodic",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available.",
          "value": "PERIODIC"
        },
        {
          "name": "Recurrent",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available. RECURRENT is used for GEN3 and Slice of Hardware VMs.",
          "value": "RECURRENT"
        }
      ]
    },
    "google-native:compute/beta:NodeGroupMaintenancePolicy": {
      "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "Allow the node and corresponding instances to retain default maintenance behavior.",
          "value": "DEFAULT"
        },
        {
          "name": "MaintenancePolicyUnspecified",
          "value": "MAINTENANCE_POLICY_UNSPECIFIED"
        },
        {
          "name": "MigrateWithinNodeGroup",
          "description": "When maintenance must be done on a node, the instances on that node will be moved to other nodes in the group. Instances with onHostMaintenance = MIGRATE will live migrate to their destinations while instances with onHostMaintenance = TERMINATE will terminate and then restart on their destination nodes if automaticRestart = true.",
          "value": "MIGRATE_WITHIN_NODE_GROUP"
        },
        {
          "name": "RestartInPlace",
          "description": "Instances in this group will restart on the same node when maintenance has completed. Instances must have onHostMaintenance = TERMINATE, and they will only restart if automaticRestart = true.",
          "value": "RESTART_IN_PLACE"
        }
      ]
    },
    "google-native:compute/beta:NodeGroupMaintenanceWindow": {
      "description": "Time window specified for daily maintenance operations. GCE's internal maintenance will be performed within this window.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NodeGroupMaintenanceWindowResponse": {
      "description": "Time window specified for daily maintenance operations. GCE's internal maintenance will be performed within this window.",
      "properties": {
        "maintenanceDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "[Output only] A predetermined duration for the window, automatically chosen to be the smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "maintenanceDuration",
        "startTime"
      ]
    },
    "google-native:compute/beta:NodeGroupStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Creating",
          "value": "CREATING"
        },
        {
          "name": "Deleting",
          "value": "DELETING"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ready",
          "value": "READY"
        }
      ]
    },
    "google-native:compute/beta:NodeTemplateCpuOvercommitType": {
      "description": "CPU overcommit.",
      "type": "string",
      "enum": [
        {
          "name": "CpuOvercommitTypeUnspecified",
          "value": "CPU_OVERCOMMIT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "value": "ENABLED"
        },
        {
          "name": "None",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/beta:NodeTemplateNodeTypeFlexibility": {
      "properties": {
        "cpus": {
          "type": "string"
        },
        "localSsd": {
          "type": "string"
        },
        "memory": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NodeTemplateNodeTypeFlexibilityResponse": {
      "properties": {
        "cpus": {
          "type": "string"
        },
        "localSsd": {
          "type": "string"
        },
        "memory": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "cpus",
        "localSsd",
        "memory"
      ]
    },
    "google-native:compute/beta:NotificationEndpointGrpcSettings": {
      "description": "Represents a gRPC setting that describes one gRPC notification endpoint and the retry duration attempting to send notification to this endpoint.",
      "properties": {
        "authority": {
          "type": "string",
          "description": "Optional. If specified, this field is used to set the authority header by the sender of notifications. See https://tools.ietf.org/html/rfc7540#section-8.1.2.3"
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint to which gRPC notifications are sent. This must be a valid gRPCLB DNS name."
        },
        "payloadName": {
          "type": "string",
          "description": "Optional. If specified, this field is used to populate the \"name\" field in gRPC requests."
        },
        "resendInterval": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Optional. This field is used to configure how often to send a full update of all non-healthy backends. If unspecified, full updates are not sent. If specified, must be in the range between 600 seconds to 3600 seconds. Nanos are disallowed. Can only be set for regional notification endpoints."
        },
        "retryDurationSec": {
          "type": "integer",
          "description": "How much time (in seconds) is spent attempting notification retries until a successful response is received. Default is 30s. Limit is 20m (1200s). Must be a positive number."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:NotificationEndpointGrpcSettingsResponse": {
      "description": "Represents a gRPC setting that describes one gRPC notification endpoint and the retry duration attempting to send notification to this endpoint.",
      "properties": {
        "authority": {
          "type": "string",
          "description": "Optional. If specified, this field is used to set the authority header by the sender of notifications. See https://tools.ietf.org/html/rfc7540#section-8.1.2.3"
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint to which gRPC notifications are sent. This must be a valid gRPCLB DNS name."
        },
        "payloadName": {
          "type": "string",
          "description": "Optional. If specified, this field is used to populate the \"name\" field in gRPC requests."
        },
        "resendInterval": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Optional. This field is used to configure how often to send a full update of all non-healthy backends. If unspecified, full updates are not sent. If specified, must be in the range between 600 seconds to 3600 seconds. Nanos are disallowed. Can only be set for regional notification endpoints."
        },
        "retryDurationSec": {
          "type": "integer",
          "description": "How much time (in seconds) is spent attempting notification retries until a successful response is received. Default is 30s. Limit is 20m (1200s). Must be a positive number."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "endpoint",
        "payloadName",
        "resendInterval",
        "retryDurationSec"
      ]
    },
    "google-native:compute/beta:OrganizationSecurityPolicyType": {
      "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
      "type": "string",
      "enum": [
        {
          "name": "CloudArmor",
          "value": "CLOUD_ARMOR"
        },
        {
          "name": "CloudArmorEdge",
          "value": "CLOUD_ARMOR_EDGE"
        },
        {
          "name": "CloudArmorNetwork",
          "value": "CLOUD_ARMOR_NETWORK"
        },
        {
          "name": "Firewall",
          "value": "FIREWALL"
        }
      ]
    },
    "google-native:compute/beta:OutlierDetection": {
      "description": "Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service.",
      "properties": {
        "baseEjectionTime": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "The base time that a backend endpoint is ejected for. Defaults to 30000ms or 30s. After a backend endpoint is returned back to the load balancing pool, it can be ejected again in another ejection analysis. Thus, the total ejection time is equal to the base ejection time multiplied by the number of times the backend endpoint has been ejected. Defaults to 30000ms or 30s."
        },
        "consecutiveErrors": {
          "type": "integer",
          "description": "Number of consecutive errors before a backend endpoint is ejected from the load balancing pool. When the backend endpoint is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5."
        },
        "consecutiveGatewayFailure": {
          "type": "integer",
          "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3."
        },
        "enforcingConsecutiveErrors": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0."
        },
        "enforcingConsecutiveGatewayFailure": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100."
        },
        "enforcingSuccessRate": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "interval": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Time interval between ejection analysis sweeps. This can result in both new ejections and backend endpoints being returned to service. The interval is equal to the number of seconds as defined in outlierDetection.interval.seconds plus the number of nanoseconds as defined in outlierDetection.interval.nanos. Defaults to 1 second."
        },
        "maxEjectionPercent": {
          "type": "integer",
          "description": "Maximum percentage of backend endpoints in the load balancing pool for the backend service that can be ejected if the ejection conditions are met. Defaults to 50%."
        },
        "successRateMinimumHosts": {
          "type": "integer",
          "description": "The number of backend endpoints in the load balancing pool that must have enough request volume to detect success rate outliers. If the number of backend endpoints is fewer than this setting, outlier detection via success rate statistics is not performed for any backend endpoint in the load balancing pool. Defaults to 5. Not supported when the backend service uses Serverless NEG."
        },
        "successRateRequestVolume": {
          "type": "integer",
          "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this backend endpoint in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that backend endpoint. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "successRateStdevFactor": {
          "type": "integer",
          "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * successRateStdevFactor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900. Not supported when the backend service uses Serverless NEG."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:OutlierDetectionResponse": {
      "description": "Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service.",
      "properties": {
        "baseEjectionTime": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "The base time that a backend endpoint is ejected for. Defaults to 30000ms or 30s. After a backend endpoint is returned back to the load balancing pool, it can be ejected again in another ejection analysis. Thus, the total ejection time is equal to the base ejection time multiplied by the number of times the backend endpoint has been ejected. Defaults to 30000ms or 30s."
        },
        "consecutiveErrors": {
          "type": "integer",
          "description": "Number of consecutive errors before a backend endpoint is ejected from the load balancing pool. When the backend endpoint is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5."
        },
        "consecutiveGatewayFailure": {
          "type": "integer",
          "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3."
        },
        "enforcingConsecutiveErrors": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0."
        },
        "enforcingConsecutiveGatewayFailure": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100."
        },
        "enforcingSuccessRate": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "interval": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Time interval between ejection analysis sweeps. This can result in both new ejections and backend endpoints being returned to service. The interval is equal to the number of seconds as defined in outlierDetection.interval.seconds plus the number of nanoseconds as defined in outlierDetection.interval.nanos. Defaults to 1 second."
        },
        "maxEjectionPercent": {
          "type": "integer",
          "description": "Maximum percentage of backend endpoints in the load balancing pool for the backend service that can be ejected if the ejection conditions are met. Defaults to 50%."
        },
        "successRateMinimumHosts": {
          "type": "integer",
          "description": "The number of backend endpoints in the load balancing pool that must have enough request volume to detect success rate outliers. If the number of backend endpoints is fewer than this setting, outlier detection via success rate statistics is not performed for any backend endpoint in the load balancing pool. Defaults to 5. Not supported when the backend service uses Serverless NEG."
        },
        "successRateRequestVolume": {
          "type": "integer",
          "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this backend endpoint in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that backend endpoint. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "successRateStdevFactor": {
          "type": "integer",
          "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * successRateStdevFactor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900. Not supported when the backend service uses Serverless NEG."
        }
      },
      "type": "object",
      "required": [
        "baseEjectionTime",
        "consecutiveErrors",
        "consecutiveGatewayFailure",
        "enforcingConsecutiveErrors",
        "enforcingConsecutiveGatewayFailure",
        "enforcingSuccessRate",
        "interval",
        "maxEjectionPercent",
        "successRateMinimumHosts",
        "successRateRequestVolume",
        "successRateStdevFactor"
      ]
    },
    "google-native:compute/beta:PacketMirroringEnable": {
      "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE.",
      "type": "string",
      "enum": [
        {
          "name": "False",
          "value": "FALSE"
        },
        {
          "name": "True",
          "value": "TRUE"
        }
      ]
    },
    "google-native:compute/beta:PacketMirroringFilter": {
      "properties": {
        "cidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IP CIDR ranges that apply as filter on the source (ingress) or destination (egress) IP in the IP header. Only IPv4 is supported. If no ranges are specified, all traffic that matches the specified IPProtocols is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringFilterDirection",
          "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH."
        },
        "ipProtocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Protocols that apply as filter on mirrored traffic. If no protocols are specified, all traffic that matches the specified CIDR ranges is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PacketMirroringFilterDirection": {
      "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH.",
      "type": "string",
      "enum": [
        {
          "name": "Both",
          "description": "Default, both directions are mirrored.",
          "value": "BOTH"
        },
        {
          "name": "Egress",
          "description": "Only egress traffic is mirrored.",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "description": "Only ingress traffic is mirrored.",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/beta:PacketMirroringFilterResponse": {
      "properties": {
        "cidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IP CIDR ranges that apply as filter on the source (ingress) or destination (egress) IP in the IP header. Only IPv4 is supported. If no ranges are specified, all traffic that matches the specified IPProtocols is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        },
        "direction": {
          "type": "string",
          "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH."
        },
        "ipProtocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Protocols that apply as filter on mirrored traffic. If no protocols are specified, all traffic that matches the specified CIDR ranges is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        }
      },
      "type": "object",
      "required": [
        "cidrRanges",
        "direction",
        "ipProtocols"
      ]
    },
    "google-native:compute/beta:PacketMirroringForwardingRuleInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the forwarding rule representing the ILB configured as destination of the mirrored traffic."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PacketMirroringForwardingRuleInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the forwarding rule; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the forwarding rule representing the ILB configured as destination of the mirrored traffic."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/beta:PacketMirroringMirroredResourceInfo": {
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringMirroredResourceInfoInstanceInfo"
          },
          "description": "A set of virtual machine instances that are being mirrored. They must live in zones contained in the same region as this packetMirroring. Note that this config will apply only to those network interfaces of the Instances that belong to the network specified in this packetMirroring. You may specify a maximum of 50 Instances."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringMirroredResourceInfoSubnetInfo"
          },
          "description": "A set of subnetworks for which traffic from/to all VM instances will be mirrored. They must live in the same region as this packetMirroring. You may specify a maximum of 5 subnetworks."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of mirrored tags. Traffic from/to all VM instances that have one or more of these tags will be mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PacketMirroringMirroredResourceInfoInstanceInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the virtual machine instance which is being mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PacketMirroringMirroredResourceInfoInstanceInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the instance; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the virtual machine instance which is being mirrored."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/beta:PacketMirroringMirroredResourceInfoResponse": {
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringMirroredResourceInfoInstanceInfoResponse"
          },
          "description": "A set of virtual machine instances that are being mirrored. They must live in zones contained in the same region as this packetMirroring. Note that this config will apply only to those network interfaces of the Instances that belong to the network specified in this packetMirroring. You may specify a maximum of 50 Instances."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringMirroredResourceInfoSubnetInfoResponse"
          },
          "description": "A set of subnetworks for which traffic from/to all VM instances will be mirrored. They must live in the same region as this packetMirroring. You may specify a maximum of 5 subnetworks."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of mirrored tags. Traffic from/to all VM instances that have one or more of these tags will be mirrored."
        }
      },
      "type": "object",
      "required": [
        "instances",
        "subnetworks",
        "tags"
      ]
    },
    "google-native:compute/beta:PacketMirroringMirroredResourceInfoSubnetInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the subnetwork for which traffic from/to all VM instances will be mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PacketMirroringMirroredResourceInfoSubnetInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the subnetwork; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the subnetwork for which traffic from/to all VM instances will be mirrored."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/beta:PacketMirroringNetworkInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "URL of the network resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PacketMirroringNetworkInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the network; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "URL of the network resource."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/beta:PathMatcher": {
      "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service is used.",
      "properties": {
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicy",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy is configured with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is configured for the error code 404. If 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. When 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path matcher's defaultRouteAction."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource. This URL is used if none of the pathRules or routeRules defined by this PathMatcher are matched. For example, the following are all valid URLs to a BackendService resource: - https://www.googleapis.com/compute/v1/projects/project /global/backendServices/backendService - compute/v1/projects/project/global/backendServices/backendService - global/backendServices/backendService If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. Authorization requires one or more of the following Google IAM permissions on the specified resource default_service: - compute.backendBuckets.use - compute.backendServices.use "
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectAction",
          "description": "When none of the specified pathRules or routeRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backend service. HeaderAction specified here are applied after the matching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "name": {
          "type": "string",
          "description": "The name to which this PathMatcher is referred by the HostRule."
        },
        "pathRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PathRule"
          },
          "description": "The list of path rules. Use this list instead of routeRules when routing based on simple path matching is all that's required. The order by which path rules are specified does not matter. Matches are always done on the longest-path-first basis. For example: a pathRule with a path /a/b/c/* will match before /a/b/* irrespective of the order in which those paths appear in this list. Within a given pathMatcher, only one of pathRules or routeRules must be set."
        },
        "routeRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteRule"
          },
          "description": "The list of HTTP route rules. Use this list instead of pathRules when advanced route matching and routing actions are desired. routeRules are evaluated in order of priority, from the lowest to highest number. Within a given pathMatcher, you can set only one of pathRules or routeRules."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PathMatcherResponse": {
      "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service is used.",
      "properties": {
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyResponse",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy is configured with policies for 5xx and 4xx errors - A RouteRule for /coming_soon/ is configured for the error code 404. If 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. When 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path matcher's defaultRouteAction."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource. This URL is used if none of the pathRules or routeRules defined by this PathMatcher are matched. For example, the following are all valid URLs to a BackendService resource: - https://www.googleapis.com/compute/v1/projects/project /global/backendServices/backendService - compute/v1/projects/project/global/backendServices/backendService - global/backendServices/backendService If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. Authorization requires one or more of the following Google IAM permissions on the specified resource default_service: - compute.backendBuckets.use - compute.backendServices.use "
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectActionResponse",
          "description": "When none of the specified pathRules or routeRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backend service. HeaderAction specified here are applied after the matching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "name": {
          "type": "string",
          "description": "The name to which this PathMatcher is referred by the HostRule."
        },
        "pathRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PathRuleResponse"
          },
          "description": "The list of path rules. Use this list instead of routeRules when routing based on simple path matching is all that's required. The order by which path rules are specified does not matter. Matches are always done on the longest-path-first basis. For example: a pathRule with a path /a/b/c/* will match before /a/b/* irrespective of the order in which those paths appear in this list. Within a given pathMatcher, only one of pathRules or routeRules must be set."
        },
        "routeRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteRuleResponse"
          },
          "description": "The list of HTTP route rules. Use this list instead of pathRules when advanced route matching and routing actions are desired. routeRules are evaluated in order of priority, from the lowest to highest number. Within a given pathMatcher, you can set only one of pathRules or routeRules."
        }
      },
      "type": "object",
      "required": [
        "defaultCustomErrorResponsePolicy",
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "headerAction",
        "name",
        "pathRules",
        "routeRules"
      ]
    },
    "google-native:compute/beta:PathRule": {
      "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
      "properties": {
        "customErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicy",
          "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. If 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors - A PathRule for /coming_soon/ is configured for the error code 404. If 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. customErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteAction",
          "description": "In response to a matching path, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of routeAction or urlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectAction",
          "description": "When a path pattern is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PathRuleResponse": {
      "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
      "properties": {
        "customErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyResponse",
          "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. If 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. For example, consider a UrlMap with the following configuration: - UrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors - A PathRule for /coming_soon/ is configured for the error code 404. If 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. customErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteActionResponse",
          "description": "In response to a matching path, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of routeAction or urlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectActionResponse",
          "description": "When a path pattern is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object",
      "required": [
        "customErrorResponsePolicy",
        "paths",
        "routeAction",
        "service",
        "urlRedirect"
      ]
    },
    "google-native:compute/beta:PublicAdvertisedPrefixPdpScope": {
      "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. ",
      "type": "string",
      "enum": [
        {
          "name": "Global",
          "description": "The public delegated prefix is global only. The provisioning will take ~4 weeks.",
          "value": "GLOBAL"
        },
        {
          "name": "GlobalAndRegional",
          "description": "The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2.",
          "value": "GLOBAL_AND_REGIONAL"
        },
        {
          "name": "Regional",
          "description": "The public delegated prefix is regional only. The provisioning will take a few minutes.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:compute/beta:PublicAdvertisedPrefixPublicDelegatedPrefixResponse": {
      "description": "Represents a CIDR range which can be used to assign addresses.",
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "The IP address range of the public delegated prefix"
        },
        "name": {
          "type": "string",
          "description": "The name of the public delegated prefix"
        },
        "project": {
          "type": "string",
          "description": "The project number of the public delegated prefix"
        },
        "region": {
          "type": "string",
          "description": "The region of the public delegated prefix if it is regional. If absent, the prefix is global."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix. Possible values are: INITIALIZING: The public delegated prefix is being initialized and addresses cannot be created yet. ANNOUNCED: The public delegated prefix is active."
        }
      },
      "type": "object",
      "required": [
        "ipRange",
        "name",
        "project",
        "region",
        "status"
      ]
    },
    "google-native:compute/beta:PublicAdvertisedPrefixStatus": {
      "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. ",
      "type": "string",
      "enum": [
        {
          "name": "AnnouncedToInternet",
          "description": "The prefix is announced to Internet.",
          "value": "ANNOUNCED_TO_INTERNET"
        },
        {
          "name": "Initial",
          "description": "RPKI validation is complete.",
          "value": "INITIAL"
        },
        {
          "name": "PrefixConfigurationComplete",
          "description": "The prefix is fully configured.",
          "value": "PREFIX_CONFIGURATION_COMPLETE"
        },
        {
          "name": "PrefixConfigurationInProgress",
          "description": "The prefix is being configured.",
          "value": "PREFIX_CONFIGURATION_IN_PROGRESS"
        },
        {
          "name": "PrefixRemovalInProgress",
          "description": "The prefix is being removed.",
          "value": "PREFIX_REMOVAL_IN_PROGRESS"
        },
        {
          "name": "PtrConfigured",
          "description": "User has configured the PTR.",
          "value": "PTR_CONFIGURED"
        },
        {
          "name": "ReadyToAnnounce",
          "description": "The prefix is currently withdrawn but ready to be announced.",
          "value": "READY_TO_ANNOUNCE"
        },
        {
          "name": "ReverseDnsLookupFailed",
          "description": "Reverse DNS lookup failed.",
          "value": "REVERSE_DNS_LOOKUP_FAILED"
        },
        {
          "name": "Validated",
          "description": "Reverse DNS lookup is successful.",
          "value": "VALIDATED"
        }
      ]
    },
    "google-native:compute/beta:PublicDelegatedPrefixPublicDelegatedSubPrefix": {
      "description": "Represents a sub PublicDelegatedPrefix.",
      "properties": {
        "delegateeProject": {
          "type": "string",
          "description": "Name of the project scoping this PublicDelegatedSubPrefix."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this sub public delegated prefix."
        },
        "isAddress": {
          "type": "boolean",
          "description": "Whether the sub prefix is delegated to create Address resources in the delegatee project."
        },
        "name": {
          "type": "string",
          "description": "The name of the sub public delegated prefix."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse": {
      "description": "Represents a sub PublicDelegatedPrefix.",
      "properties": {
        "delegateeProject": {
          "type": "string",
          "description": "Name of the project scoping this PublicDelegatedSubPrefix."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this sub public delegated prefix."
        },
        "isAddress": {
          "type": "boolean",
          "description": "Whether the sub prefix is delegated to create Address resources in the delegatee project."
        },
        "name": {
          "type": "string",
          "description": "The name of the sub public delegated prefix."
        },
        "region": {
          "type": "string",
          "description": "The region of the sub public delegated prefix if it is regional. If absent, the sub prefix is global."
        },
        "status": {
          "type": "string",
          "description": "The status of the sub public delegated prefix."
        }
      },
      "type": "object",
      "required": [
        "delegateeProject",
        "description",
        "ipCidrRange",
        "isAddress",
        "name",
        "region",
        "status"
      ]
    },
    "google-native:compute/beta:QuotaExceededInfoResponse": {
      "description": "Additional details for quota exceeded error for resource quota.",
      "properties": {
        "dimensions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map holding related quota dimensions."
        },
        "futureLimit": {
          "type": "number",
          "description": "Future quota limit being rolled out. The limit's unit depends on the quota type or metric."
        },
        "limit": {
          "type": "number",
          "description": "Current effective quota limit. The limit's unit depends on the quota type or metric."
        },
        "limitName": {
          "type": "string",
          "description": "The name of the quota limit."
        },
        "metricName": {
          "type": "string",
          "description": "The Compute Engine quota metric name."
        },
        "rolloutStatus": {
          "type": "string",
          "description": "Rollout status of the future quota limit."
        }
      },
      "type": "object",
      "required": [
        "dimensions",
        "futureLimit",
        "limit",
        "limitName",
        "metricName",
        "rolloutStatus"
      ]
    },
    "google-native:compute/beta:RegionBackendServiceCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/beta:RegionBackendServiceIpAddressSelectionPolicy": {
      "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Only",
          "description": "Only send IPv4 traffic to the backends of the Backend Service (Instance Group, Managed Instance Group, Network Endpoint Group) regardless of traffic from the client to the proxy. Only IPv4 health-checks are used to check the health of the backends. This is the default setting.",
          "value": "IPV4_ONLY"
        },
        {
          "name": "Ipv6Only",
          "description": "Only send IPv6 traffic to the backends of the Backend Service (Instance Group, Managed Instance Group, Network Endpoint Group) regardless of traffic from the client to the proxy. Only IPv6 health-checks are used to check the health of the backends.",
          "value": "IPV6_ONLY"
        },
        {
          "name": "IpAddressSelectionPolicyUnspecified",
          "description": "Unspecified IP address selection policy.",
          "value": "IP_ADDRESS_SELECTION_POLICY_UNSPECIFIED"
        },
        {
          "name": "PreferIpv6",
          "description": "Prioritize the connection to the endpoints IPv6 address over its IPv4 address (provided there is a healthy IPv6 address).",
          "value": "PREFER_IPV6"
        }
      ]
    },
    "google-native:compute/beta:RegionBackendServiceLoadBalancingScheme": {
      "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "description": "Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "description": "Signifies that this will be used for Internal TCP/UDP Load Balancing.",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "description": "Signifies that this will be used for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "description": "Signifies that this will be used by Traffic Director.",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "InvalidLoadBalancingScheme",
          "value": "INVALID_LOAD_BALANCING_SCHEME"
        }
      ]
    },
    "google-native:compute/beta:RegionBackendServiceLocalityLbPolicy": {
      "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/beta:RegionBackendServiceProtocol": {
      "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "description": "gRPC (available for Traffic Director).",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "description": "HTTP/2 with SSL.",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Ssl",
          "description": "TCP proxying with SSL.",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "description": "TCP proxying or TCP pass-through.",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "description": "UDP.",
          "value": "UDP"
        },
        {
          "name": "Unspecified",
          "description": "If a Backend Service has UNSPECIFIED as its protocol, it can be used with any L3/L4 Forwarding Rules.",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:RegionBackendServiceSessionAffinity": {
      "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/beta:RegionCommitmentCategory": {
      "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified.",
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "License",
          "value": "LICENSE"
        },
        {
          "name": "Machine",
          "value": "MACHINE"
        }
      ]
    },
    "google-native:compute/beta:RegionCommitmentPlan": {
      "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
      "type": "string",
      "enum": [
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "ThirtySixMonth",
          "value": "THIRTY_SIX_MONTH"
        },
        {
          "name": "TwelveMonth",
          "value": "TWELVE_MONTH"
        }
      ]
    },
    "google-native:compute/beta:RegionCommitmentType": {
      "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorOptimized",
          "value": "ACCELERATOR_OPTIMIZED"
        },
        {
          "name": "AcceleratorOptimizedA3",
          "value": "ACCELERATOR_OPTIMIZED_A3"
        },
        {
          "name": "ComputeOptimized",
          "value": "COMPUTE_OPTIMIZED"
        },
        {
          "name": "ComputeOptimizedC2d",
          "value": "COMPUTE_OPTIMIZED_C2D"
        },
        {
          "name": "ComputeOptimizedC3",
          "value": "COMPUTE_OPTIMIZED_C3"
        },
        {
          "name": "ComputeOptimizedC3d",
          "value": "COMPUTE_OPTIMIZED_C3D"
        },
        {
          "name": "ComputeOptimizedH3",
          "value": "COMPUTE_OPTIMIZED_H3"
        },
        {
          "name": "GeneralPurpose",
          "value": "GENERAL_PURPOSE"
        },
        {
          "name": "GeneralPurposeE2",
          "value": "GENERAL_PURPOSE_E2"
        },
        {
          "name": "GeneralPurposeN2",
          "value": "GENERAL_PURPOSE_N2"
        },
        {
          "name": "GeneralPurposeN2d",
          "value": "GENERAL_PURPOSE_N2D"
        },
        {
          "name": "GeneralPurposeT2d",
          "value": "GENERAL_PURPOSE_T2D"
        },
        {
          "name": "GraphicsOptimized",
          "value": "GRAPHICS_OPTIMIZED"
        },
        {
          "name": "MemoryOptimized",
          "value": "MEMORY_OPTIMIZED"
        },
        {
          "name": "MemoryOptimizedM3",
          "value": "MEMORY_OPTIMIZED_M3"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:RegionDiskArchitecture": {
      "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/beta:RegionDiskInterface": {
      "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:RegionDiskStorageType": {
      "description": "[Deprecated] Storage type of the persistent disk.",
      "type": "string",
      "enum": [
        {
          "name": "Hdd",
          "value": "HDD"
        },
        {
          "name": "Ssd",
          "value": "SSD"
        }
      ]
    },
    "google-native:compute/beta:RegionHealthCheckServiceHealthStatusAggregationPolicy": {
      "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService.",
      "type": "string",
      "enum": [
        {
          "name": "And",
          "description": "If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY.",
          "value": "AND"
        },
        {
          "name": "NoAggregation",
          "description": "An EndpointHealth message is returned for each backend in the health check service.",
          "value": "NO_AGGREGATION"
        }
      ]
    },
    "google-native:compute/beta:RegionHealthCheckServiceHealthStatusAggregationStrategy": {
      "description": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
      "type": "string",
      "enum": [
        {
          "name": "And",
          "description": "This is deprecated. Use health_status_aggregation_policy instead. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY.",
          "value": "AND"
        },
        {
          "name": "NoAggregation",
          "description": "This is deprecated. Use health_status_aggregation_policy instead. An EndpointHealth message is returned for each backend in the health check service.",
          "value": "NO_AGGREGATION"
        }
      ]
    },
    "google-native:compute/beta:RegionHealthCheckType": {
      "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ssl",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        }
      ]
    },
    "google-native:compute/beta:RegionInstanceGroupManagerFailoverAction": {
      "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
      "type": "string",
      "enum": [
        {
          "name": "NoFailover",
          "value": "NO_FAILOVER"
        },
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        }
      ]
    },
    "google-native:compute/beta:RegionInstanceGroupManagerListManagedInstancesResults": {
      "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
      "type": "string",
      "enum": [
        {
          "name": "Pageless",
          "description": "(Default) Pagination is disabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are ignored and all instances are returned in a single response.",
          "value": "PAGELESS"
        },
        {
          "name": "Paginated",
          "description": "Pagination is enabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are respected.",
          "value": "PAGINATED"
        }
      ]
    },
    "google-native:compute/beta:RegionNetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/beta:RegionSecurityPolicyType": {
      "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
      "type": "string",
      "enum": [
        {
          "name": "CloudArmor",
          "value": "CLOUD_ARMOR"
        },
        {
          "name": "CloudArmorEdge",
          "value": "CLOUD_ARMOR_EDGE"
        },
        {
          "name": "CloudArmorNetwork",
          "value": "CLOUD_ARMOR_NETWORK"
        },
        {
          "name": "Firewall",
          "value": "FIREWALL"
        }
      ]
    },
    "google-native:compute/beta:RegionSslCertificateType": {
      "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
      "type": "string",
      "enum": [
        {
          "name": "Managed",
          "description": "Google-managed SSLCertificate.",
          "value": "MANAGED"
        },
        {
          "name": "SelfManaged",
          "description": "Certificate uploaded by user.",
          "value": "SELF_MANAGED"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:RegionSslPolicyMinTlsVersion": {
      "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
      "type": "string",
      "enum": [
        {
          "name": "Tls10",
          "description": "TLS 1.0",
          "value": "TLS_1_0"
        },
        {
          "name": "Tls11",
          "description": "TLS 1.1",
          "value": "TLS_1_1"
        },
        {
          "name": "Tls12",
          "description": "TLS 1.2",
          "value": "TLS_1_2"
        }
      ]
    },
    "google-native:compute/beta:RegionSslPolicyProfile": {
      "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
      "type": "string",
      "enum": [
        {
          "name": "Compatible",
          "description": "Compatible profile. Allows the broadset set of clients, even those which support only out-of-date SSL features to negotiate with the load balancer.",
          "value": "COMPATIBLE"
        },
        {
          "name": "Custom",
          "description": "Custom profile. Allow only the set of allowed SSL features specified in the customFeatures field.",
          "value": "CUSTOM"
        },
        {
          "name": "Modern",
          "description": "Modern profile. Supports a wide set of SSL features, allowing modern clients to negotiate SSL with the load balancer.",
          "value": "MODERN"
        },
        {
          "name": "Restricted",
          "description": "Restricted profile. Supports a reduced set of SSL features, intended to meet stricter compliance requirements.",
          "value": "RESTRICTED"
        }
      ]
    },
    "google-native:compute/beta:RegionSslPolicyWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/beta:RegionSslPolicyWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RegionSslPolicyWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/beta:RegionTargetHttpsProxyQuicOverride": {
      "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "The load balancer will not attempt to negotiate QUIC with clients.",
          "value": "DISABLE"
        },
        {
          "name": "Enable",
          "description": "The load balancer will attempt to negotiate QUIC with clients.",
          "value": "ENABLE"
        },
        {
          "name": "None",
          "description": "No overrides to the default QUIC policy. This option is implicit if no QUIC override has been specified in the request.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/beta:RegionTargetTcpProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/beta:RequestMirrorPolicy": {
      "description": "A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. The load balancer doesn't wait for responses from the shadow service. Before sending traffic to the shadow service, the host or authority header is suffixed with -shadow.",
      "properties": {
        "backendService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource being mirrored to. The 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. Serverless NEG backends are not currently supported as a mirrored backend service. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RequestMirrorPolicyResponse": {
      "description": "A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. The load balancer doesn't wait for responses from the shadow service. Before sending traffic to the shadow service, the host or authority header is suffixed with -shadow.",
      "properties": {
        "backendService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource being mirrored to. The 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. Serverless NEG backends are not currently supported as a mirrored backend service. "
        }
      },
      "type": "object",
      "required": [
        "backendService"
      ]
    },
    "google-native:compute/beta:Reservation": {
      "description": "Represents a reservation resource. A reservation ensures that capacity is held in a specific zone even if the reserved VMs are not running. For more information, read Reserving zonal resources.",
      "properties": {
        "aggregateReservation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservation",
          "description": "Reservation for aggregated resources, providing shape flexibility."
        },
        "deleteAfterDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
        },
        "deleteAtTime": {
          "type": "string",
          "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettings",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUReservation",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ReservationAffinity": {
      "description": "Specifies the reservations that this instance can consume from.",
      "properties": {
        "consumeReservationType": {
          "$ref": "#/types/google-native:compute%2Fbeta:ReservationAffinityConsumeReservationType",
          "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples."
        },
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify googleapis.com/reservation-name as the key and specify the name of your reservation as its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of a reservation resource. This can be either a name to a reservation in the same project or \"projects/different-project/reservations/some-reservation-name\" to target a shared reservation in the same zone but in a different project."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ReservationAffinityConsumeReservationType": {
      "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples.",
      "type": "string",
      "enum": [
        {
          "name": "AnyReservation",
          "description": "Consume any allocation available.",
          "value": "ANY_RESERVATION"
        },
        {
          "name": "NoReservation",
          "description": "Do not consume from any allocated capacity.",
          "value": "NO_RESERVATION"
        },
        {
          "name": "SpecificReservation",
          "description": "Must consume from a specific reservation. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_RESERVATION"
        },
        {
          "name": "SpecificThenAnyReservation",
          "description": "Prefer to consume from a specific reservation, but still consume any reservation available if the specified reservation is not available or exhausted. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_THEN_ANY_RESERVATION"
        },
        {
          "name": "SpecificThenNoReservation",
          "description": "Prefer to consume from a specific reservation, but still consume from the on-demand pool if the specified reservation is exhausted. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_THEN_NO_RESERVATION"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:ReservationAffinityResponse": {
      "description": "Specifies the reservations that this instance can consume from.",
      "properties": {
        "consumeReservationType": {
          "type": "string",
          "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples."
        },
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify googleapis.com/reservation-name as the key and specify the name of your reservation as its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of a reservation resource. This can be either a name to a reservation in the same project or \"projects/different-project/reservations/some-reservation-name\" to target a shared reservation in the same zone but in a different project."
        }
      },
      "type": "object",
      "required": [
        "consumeReservationType",
        "key",
        "values"
      ]
    },
    "google-native:compute/beta:ReservationResponse": {
      "description": "Represents a reservation resource. A reservation ensures that capacity is held in a specific zone even if the reserved VMs are not running. For more information, read Reserving zonal resources.",
      "properties": {
        "aggregateReservation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationResponse",
          "description": "Reservation for aggregated resources, providing shape flexibility."
        },
        "commitment": {
          "type": "string",
          "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deleteAfterDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
        },
        "deleteAtTime": {
          "type": "string",
          "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#reservations for reservations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationResourceStatusResponse",
          "description": "Status information for Reservation resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsResponse",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUReservationResponse",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "status": {
          "type": "string",
          "description": "The status of the reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      },
      "type": "object",
      "required": [
        "aggregateReservation",
        "commitment",
        "creationTimestamp",
        "deleteAfterDuration",
        "deleteAtTime",
        "description",
        "kind",
        "name",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "shareSettings",
        "specificReservation",
        "specificReservationRequired",
        "status",
        "zone"
      ]
    },
    "google-native:compute/beta:ResourceCommitment": {
      "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "Name of the accelerator type resource. Applicable only when the type is ACCELERATOR."
        },
        "amount": {
          "type": "string",
          "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourceCommitmentType",
          "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourceCommitmentResponse": {
      "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "Name of the accelerator type resource. Applicable only when the type is ACCELERATOR."
        },
        "amount": {
          "type": "string",
          "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU."
        },
        "type": {
          "type": "string",
          "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "amount",
        "type"
      ]
    },
    "google-native:compute/beta:ResourceCommitmentType": {
      "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR.",
      "type": "string",
      "enum": [
        {
          "name": "Accelerator",
          "value": "ACCELERATOR"
        },
        {
          "name": "LocalSsd",
          "value": "LOCAL_SSD"
        },
        {
          "name": "Memory",
          "value": "MEMORY"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Vcpu",
          "value": "VCPU"
        }
      ]
    },
    "google-native:compute/beta:ResourcePolicyDailyCycle": {
      "description": "Time window specified for daily operations.",
      "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."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyDailyCycleResponse": {
      "description": "Time window specified for daily operations.",
      "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."
        },
        "duration": {
          "type": "string",
          "description": "[Output only] A predetermined duration for the window, automatically chosen to be the smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "daysInCycle",
        "duration",
        "startTime"
      ]
    },
    "google-native:compute/beta:ResourcePolicyDiskConsistencyGroupPolicy": {
      "description": "Resource policy for disk consistency groups.",
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyDiskConsistencyGroupPolicyResponse": {
      "description": "Resource policy for disk consistency groups.",
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyGroupPlacementPolicy": {
      "description": "A GroupPlacementPolicy specifies resource placement configuration. It specifies the failure bucket separation as well as network locality",
      "properties": {
        "availabilityDomainCount": {
          "type": "integer",
          "description": "The number of availability domains to spread instances across. If two instances are in different availability domain, they are not in the same low latency network."
        },
        "collocation": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyGroupPlacementPolicyCollocation",
          "description": "Specifies network collocation"
        },
        "maxDistance": {
          "type": "integer",
          "description": "Specifies the number of max logical switches."
        },
        "sliceCount": {
          "type": "integer",
          "description": "Specifies the number of slices in a multislice workload."
        },
        "tpuTopology": {
          "type": "string",
          "description": "Specifies the shape of the TPU slice"
        },
        "vmCount": {
          "type": "integer",
          "description": "Number of VMs in this placement group. Google does not recommend that you use this field unless you use a compact policy and you want your policy to work only if it contains this exact number of VMs."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyGroupPlacementPolicyCollocation": {
      "description": "Specifies network collocation",
      "type": "string",
      "enum": [
        {
          "name": "Collocated",
          "value": "COLLOCATED"
        },
        {
          "name": "UnspecifiedCollocation",
          "value": "UNSPECIFIED_COLLOCATION"
        }
      ]
    },
    "google-native:compute/beta:ResourcePolicyGroupPlacementPolicyResponse": {
      "description": "A GroupPlacementPolicy specifies resource placement configuration. It specifies the failure bucket separation as well as network locality",
      "properties": {
        "availabilityDomainCount": {
          "type": "integer",
          "description": "The number of availability domains to spread instances across. If two instances are in different availability domain, they are not in the same low latency network."
        },
        "collocation": {
          "type": "string",
          "description": "Specifies network collocation"
        },
        "maxDistance": {
          "type": "integer",
          "description": "Specifies the number of max logical switches."
        },
        "sliceCount": {
          "type": "integer",
          "description": "Specifies the number of slices in a multislice workload."
        },
        "tpuTopology": {
          "type": "string",
          "description": "Specifies the shape of the TPU slice"
        },
        "vmCount": {
          "type": "integer",
          "description": "Number of VMs in this placement group. Google does not recommend that you use this field unless you use a compact policy and you want your policy to work only if it contains this exact number of VMs."
        }
      },
      "type": "object",
      "required": [
        "availabilityDomainCount",
        "collocation",
        "maxDistance",
        "sliceCount",
        "tpuTopology",
        "vmCount"
      ]
    },
    "google-native:compute/beta:ResourcePolicyHourlyCycle": {
      "description": "Time window specified for hourly operations.",
      "properties": {
        "hoursInCycle": {
          "type": "integer",
          "description": "Defines a schedule with units measured in hours. The value determines how many hours pass between the start of each cycle."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyHourlyCycleResponse": {
      "description": "Time window specified for hourly operations.",
      "properties": {
        "duration": {
          "type": "string",
          "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
        },
        "hoursInCycle": {
          "type": "integer",
          "description": "Defines a schedule with units measured in hours. The value determines how many hours pass between the start of each cycle."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "hoursInCycle",
        "startTime"
      ]
    },
    "google-native:compute/beta:ResourcePolicyInstanceSchedulePolicy": {
      "description": "An InstanceSchedulePolicy specifies when and how frequent certain operations are performed on the instance.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The expiration time of the schedule. The timestamp is an RFC3339 string."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of the schedule. The timestamp is an RFC3339 string."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting Schedule.schedule. The value of this field must be a time zone name from the tz database: https://wikipedia.org/wiki/Tz_database."
        },
        "vmStartSchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyInstanceSchedulePolicySchedule",
          "description": "Specifies the schedule for starting instances."
        },
        "vmStopSchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyInstanceSchedulePolicySchedule",
          "description": "Specifies the schedule for stopping instances."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyInstanceSchedulePolicyResponse": {
      "description": "An InstanceSchedulePolicy specifies when and how frequent certain operations are performed on the instance.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The expiration time of the schedule. The timestamp is an RFC3339 string."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of the schedule. The timestamp is an RFC3339 string."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting Schedule.schedule. The value of this field must be a time zone name from the tz database: https://wikipedia.org/wiki/Tz_database."
        },
        "vmStartSchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyInstanceSchedulePolicyScheduleResponse",
          "description": "Specifies the schedule for starting instances."
        },
        "vmStopSchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyInstanceSchedulePolicyScheduleResponse",
          "description": "Specifies the schedule for stopping instances."
        }
      },
      "type": "object",
      "required": [
        "expirationTime",
        "startTime",
        "timeZone",
        "vmStartSchedule",
        "vmStopSchedule"
      ]
    },
    "google-native:compute/beta:ResourcePolicyInstanceSchedulePolicySchedule": {
      "description": "Schedule for an instance operation.",
      "properties": {
        "schedule": {
          "type": "string",
          "description": "Specifies the frequency for the operation, using the unix-cron format."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyInstanceSchedulePolicyScheduleResponse": {
      "description": "Schedule for an instance operation.",
      "properties": {
        "schedule": {
          "type": "string",
          "description": "Specifies the frequency for the operation, using the unix-cron format."
        }
      },
      "type": "object",
      "required": [
        "schedule"
      ]
    },
    "google-native:compute/beta:ResourcePolicyResourceStatusInstanceSchedulePolicyStatusResponse": {
      "properties": {
        "lastRunStartTime": {
          "type": "string",
          "description": "The last time the schedule successfully ran. The timestamp is an RFC3339 string."
        },
        "nextRunStartTime": {
          "type": "string",
          "description": "The next time the schedule is planned to run. The actual time might be slightly different. The timestamp is an RFC3339 string."
        }
      },
      "type": "object",
      "required": [
        "lastRunStartTime",
        "nextRunStartTime"
      ]
    },
    "google-native:compute/beta:ResourcePolicyResourceStatusResponse": {
      "description": "Contains output only fields. Use this sub-message for all output fields set on ResourcePolicy. The internal structure of this \"status\" field should mimic the structure of ResourcePolicy proto specification.",
      "properties": {
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyResourceStatusInstanceSchedulePolicyStatusResponse",
          "description": "Specifies a set of output values reffering to the instance_schedule_policy system status. This field should have the same name as corresponding policy field."
        }
      },
      "type": "object",
      "required": [
        "instanceSchedulePolicy"
      ]
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicy": {
      "description": "A snapshot schedule policy specifies when and how frequently snapshots are to be created for the target disk. Also specifies how many and how long these scheduled snapshots should be retained.",
      "properties": {
        "retentionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicyRetentionPolicy",
          "description": "Retention policy applied to snapshots created by this resource policy."
        },
        "schedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicySchedule",
          "description": "A Vm Maintenance Policy specifies what kind of infrastructure maintenance we are allowed to perform on this VM and when. Schedule that is applied to disks covered by this policy."
        },
        "snapshotProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicySnapshotProperties",
          "description": "Properties with which snapshots are created such as labels, encryption keys."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicyResponse": {
      "description": "A snapshot schedule policy specifies when and how frequently snapshots are to be created for the target disk. Also specifies how many and how long these scheduled snapshots should be retained.",
      "properties": {
        "retentionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicyRetentionPolicyResponse",
          "description": "Retention policy applied to snapshots created by this resource policy."
        },
        "schedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicyScheduleResponse",
          "description": "A Vm Maintenance Policy specifies what kind of infrastructure maintenance we are allowed to perform on this VM and when. Schedule that is applied to disks covered by this policy."
        },
        "snapshotProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicySnapshotPropertiesResponse",
          "description": "Properties with which snapshots are created such as labels, encryption keys."
        }
      },
      "type": "object",
      "required": [
        "retentionPolicy",
        "schedule",
        "snapshotProperties"
      ]
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicyRetentionPolicy": {
      "description": "Policy for retention of scheduled snapshots.",
      "properties": {
        "maxRetentionDays": {
          "type": "integer",
          "description": "Maximum age of the snapshot that is allowed to be kept."
        },
        "onSourceDiskDelete": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete",
          "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete": {
      "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted.",
      "type": "string",
      "enum": [
        {
          "name": "ApplyRetentionPolicy",
          "value": "APPLY_RETENTION_POLICY"
        },
        {
          "name": "KeepAutoSnapshots",
          "value": "KEEP_AUTO_SNAPSHOTS"
        },
        {
          "name": "UnspecifiedOnSourceDiskDelete",
          "value": "UNSPECIFIED_ON_SOURCE_DISK_DELETE"
        }
      ]
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicyRetentionPolicyResponse": {
      "description": "Policy for retention of scheduled snapshots.",
      "properties": {
        "maxRetentionDays": {
          "type": "integer",
          "description": "Maximum age of the snapshot that is allowed to be kept."
        },
        "onSourceDiskDelete": {
          "type": "string",
          "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted."
        }
      },
      "type": "object",
      "required": [
        "maxRetentionDays",
        "onSourceDiskDelete"
      ]
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicySchedule": {
      "description": "A schedule for disks where the schedueled operations are performed.",
      "properties": {
        "dailySchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyDailyCycle"
        },
        "hourlySchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyHourlyCycle"
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyWeeklyCycle"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicyScheduleResponse": {
      "description": "A schedule for disks where the schedueled operations are performed.",
      "properties": {
        "dailySchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyDailyCycleResponse"
        },
        "hourlySchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyHourlyCycleResponse"
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyWeeklyCycleResponse"
        }
      },
      "type": "object",
      "required": [
        "dailySchedule",
        "hourlySchedule",
        "weeklySchedule"
      ]
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicySnapshotProperties": {
      "description": "Specified snapshot properties for scheduled snapshots created by this policy.",
      "properties": {
        "chainName": {
          "type": "string",
          "description": "Chain name that the snapshot is created in."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Indication to perform a 'guest aware' snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to scheduled snapshots. These can be later modified by the setLabels method. Label values may be empty."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the auto snapshot (regional or multi-regional)."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicySnapshotSchedulePolicySnapshotPropertiesResponse": {
      "description": "Specified snapshot properties for scheduled snapshots created by this policy.",
      "properties": {
        "chainName": {
          "type": "string",
          "description": "Chain name that the snapshot is created in."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Indication to perform a 'guest aware' snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to scheduled snapshots. These can be later modified by the setLabels method. Label values may be empty."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the auto snapshot (regional or multi-regional)."
        }
      },
      "type": "object",
      "required": [
        "chainName",
        "guestFlush",
        "labels",
        "storageLocations"
      ]
    },
    "google-native:compute/beta:ResourcePolicyWeeklyCycle": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "dayOfWeeks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyWeeklyCycleDayOfWeek"
          },
          "description": "Up to 7 intervals/windows, one for each day of the week."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyWeeklyCycleDayOfWeek": {
      "properties": {
        "day": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyWeeklyCycleDayOfWeekDay",
          "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ResourcePolicyWeeklyCycleDayOfWeekDay": {
      "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY.",
      "type": "string",
      "enum": [
        {
          "name": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "value": "SUNDAY"
        },
        {
          "name": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "value": "WEDNESDAY"
        }
      ]
    },
    "google-native:compute/beta:ResourcePolicyWeeklyCycleDayOfWeekResponse": {
      "properties": {
        "day": {
          "type": "string",
          "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY."
        },
        "duration": {
          "type": "string",
          "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:compute/beta:ResourcePolicyWeeklyCycleResponse": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "dayOfWeeks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyWeeklyCycleDayOfWeekResponse"
          },
          "description": "Up to 7 intervals/windows, one for each day of the week."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeeks"
      ]
    },
    "google-native:compute/beta:ResourceStatusResponse": {
      "description": "Contains output only fields. Use this sub-message for actual values set on Instance attributes as compared to the value requested by the user (intent) in their instance CRUD calls.",
      "properties": {
        "physicalHost": {
          "type": "string",
          "description": "An opaque ID of the host on which the VM is running."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourceStatusSchedulingResponse"
        },
        "upcomingMaintenance": {
          "$ref": "#/types/google-native:compute%2Fbeta:UpcomingMaintenanceResponse"
        }
      },
      "type": "object",
      "required": [
        "physicalHost",
        "scheduling",
        "upcomingMaintenance"
      ]
    },
    "google-native:compute/beta:ResourceStatusSchedulingResponse": {
      "properties": {
        "terminationTimestamp": {
          "type": "string",
          "description": "Time in future when the instance will be terminated in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "terminationTimestamp"
      ]
    },
    "google-native:compute/beta:RolloutPolicy": {
      "description": "A rollout policy configuration.",
      "properties": {
        "defaultRolloutTime": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the update is considered rolled out to any zone that is not explicitly stated."
        },
        "locationRolloutPolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Location based rollout policies to apply to the resource. Currently only zone names are supported and must be represented as valid URLs, like: zones/us-central1-a. The value expects an RFC3339 timestamp on or after which the update is considered rolled out to the specified location."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RolloutPolicyResponse": {
      "description": "A rollout policy configuration.",
      "properties": {
        "defaultRolloutTime": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the update is considered rolled out to any zone that is not explicitly stated."
        },
        "locationRolloutPolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Location based rollout policies to apply to the resource. Currently only zone names are supported and must be represented as valid URLs, like: zones/us-central1-a. The value expects an RFC3339 timestamp on or after which the update is considered rolled out to the specified location."
        }
      },
      "type": "object",
      "required": [
        "defaultRolloutTime",
        "locationRolloutPolicies"
      ]
    },
    "google-native:compute/beta:RouteAsPathResponse": {
      "properties": {
        "asLists": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The AS numbers of the AS Path."
        },
        "pathSegmentType": {
          "type": "string",
          "description": "The type of the AS Path, which can be one of the following values: - 'AS_SET': unordered set of autonomous systems that the route in has traversed - 'AS_SEQUENCE': ordered set of autonomous systems that the route has traversed - 'AS_CONFED_SEQUENCE': ordered set of Member Autonomous Systems in the local confederation that the route has traversed - 'AS_CONFED_SET': unordered set of Member Autonomous Systems in the local confederation that the route has traversed "
        }
      },
      "type": "object",
      "required": [
        "asLists",
        "pathSegmentType"
      ]
    },
    "google-native:compute/beta:RouteWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/beta:RouteWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouteWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/beta:RouterAdvertisedIpRange": {
      "description": "Description-tagged IP ranges for the router to advertise.",
      "properties": {
        "description": {
          "type": "string",
          "description": "User-specified description for the IP range."
        },
        "range": {
          "type": "string",
          "description": "The IP range to advertise. The value must be a CIDR-formatted string."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterAdvertisedIpRangeResponse": {
      "description": "Description-tagged IP ranges for the router to advertise.",
      "properties": {
        "description": {
          "type": "string",
          "description": "User-specified description for the IP range."
        },
        "range": {
          "type": "string",
          "description": "The IP range to advertise. The value must be a CIDR-formatted string."
        }
      },
      "type": "object",
      "required": [
        "description",
        "range"
      ]
    },
    "google-native:compute/beta:RouterBgp": {
      "properties": {
        "advertiseMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpAdvertiseMode",
          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpAdvertisedGroupsItem"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterAdvertisedIpRange"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "asn": {
          "type": "integer",
          "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN."
        },
        "identifierRange": {
          "type": "string",
          "description": "Explicitly specifies a range of valid BGP Identifiers for this Router. It is provided as a link-local IPv4 range (from 169.254.0.0/16), of size at least /30, even if the BGP sessions are over IPv6. It must not overlap with any IPv4 BGP session ranges. Other vendors commonly call this \"router ID\"."
        },
        "keepaliveInterval": {
          "type": "integer",
          "description": "The interval in seconds between BGP keepalive messages that are sent to the peer. Hold time is three times the interval at which keepalive messages are sent, and the hold time is the maximum number of seconds allowed to elapse between successive keepalive messages that BGP receives from a peer. BGP will use the smaller of either the local hold time value or the peer's hold time value as the hold time for the BGP connection between the two peers. If set, this value must be between 20 and 60. The default is 20."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterBgpAdvertiseMode": {
      "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "value": "CUSTOM"
        },
        {
          "name": "Default",
          "value": "DEFAULT"
        }
      ]
    },
    "google-native:compute/beta:RouterBgpAdvertisedGroupsItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllSubnets",
          "description": "Advertise all available subnets (including peer VPC subnets).",
          "value": "ALL_SUBNETS"
        }
      ]
    },
    "google-native:compute/beta:RouterBgpPeer": {
      "properties": {
        "advertiseMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerAdvertiseMode",
          "description": "User-specified flag to indicate which mode to use for advertisement."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerAdvertisedGroupsItem"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode, which currently supports the following option: - ALL_SUBNETS: Advertises all of the router's own VPC subnets. This excludes any routes learned for subnets that use VPC Network Peering. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterAdvertisedIpRange"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "advertisedRoutePriority": {
          "type": "integer",
          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win."
        },
        "bfd": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerBfd",
          "description": "BFD configuration for the BGP peering."
        },
        "customLearnedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerCustomLearnedIpRange"
          },
          "description": "A list of user-defined custom learned route IP address ranges for a BGP session."
        },
        "customLearnedRoutePriority": {
          "type": "integer",
          "description": "The user-defined custom learned route priority for a BGP session. This value is applied to all custom learned route ranges for the session. You can choose a value from `0` to `65335`. If you don't provide a value, Google Cloud assigns a priority of `100` to the ranges."
        },
        "enable": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerEnable",
          "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE."
        },
        "enableIpv4": {
          "type": "boolean",
          "description": "Enable IPv4 traffic over BGP Peer. It is enabled by default if the peerIpAddress is version 4."
        },
        "enableIpv6": {
          "type": "boolean",
          "description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default."
        },
        "interfaceName": {
          "type": "string",
          "description": "Name of the interface the BGP peer is associated with."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
        },
        "ipv4NexthopAddress": {
          "type": "string",
          "description": "IPv4 address of the interface inside Google Cloud Platform."
        },
        "ipv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the interface inside Google Cloud Platform."
        },
        "md5AuthenticationKeyName": {
          "type": "string",
          "description": "Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the Router.md5_authentication_keys. The field must comply with RFC1035."
        },
        "name": {
          "type": "string",
          "description": "Name of this BGP peer. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerAsn": {
          "type": "integer",
          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value."
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported."
        },
        "peerIpv4NexthopAddress": {
          "type": "string",
          "description": "IPv4 address of the BGP interface outside Google Cloud Platform."
        },
        "peerIpv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the BGP interface outside Google Cloud Platform."
        },
        "routerApplianceInstance": {
          "type": "string",
          "description": "URI of the VM instance that is used as third-party router appliances such as Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance must be located in zones contained in the same region as this Cloud Router. The VM instance is the peer side of the BGP session."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterBgpPeerAdvertiseMode": {
      "description": "User-specified flag to indicate which mode to use for advertisement.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "value": "CUSTOM"
        },
        {
          "name": "Default",
          "value": "DEFAULT"
        }
      ]
    },
    "google-native:compute/beta:RouterBgpPeerAdvertisedGroupsItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllSubnets",
          "description": "Advertise all available subnets (including peer VPC subnets).",
          "value": "ALL_SUBNETS"
        }
      ]
    },
    "google-native:compute/beta:RouterBgpPeerBfd": {
      "properties": {
        "minReceiveInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets received from the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the transmit interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "minTransmitInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the corresponding receive interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "multiplier": {
          "type": "integer",
          "description": "The number of consecutive BFD packets that must be missed before BFD declares that a peer is unavailable. If set, the value must be a value between 5 and 16. The default is 5."
        },
        "sessionInitializationMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerBfdSessionInitializationMode",
          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterBgpPeerBfdResponse": {
      "properties": {
        "minReceiveInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets received from the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the transmit interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "minTransmitInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the corresponding receive interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "multiplier": {
          "type": "integer",
          "description": "The number of consecutive BFD packets that must be missed before BFD declares that a peer is unavailable. If set, the value must be a value between 5 and 16. The default is 5."
        },
        "sessionInitializationMode": {
          "type": "string",
          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED."
        }
      },
      "type": "object",
      "required": [
        "minReceiveInterval",
        "minTransmitInterval",
        "multiplier",
        "sessionInitializationMode"
      ]
    },
    "google-native:compute/beta:RouterBgpPeerBfdSessionInitializationMode": {
      "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "value": "ACTIVE"
        },
        {
          "name": "Disabled",
          "value": "DISABLED"
        },
        {
          "name": "Passive",
          "value": "PASSIVE"
        }
      ]
    },
    "google-native:compute/beta:RouterBgpPeerCustomLearnedIpRange": {
      "properties": {
        "range": {
          "type": "string",
          "description": "The custom learned route IP address range. Must be a valid CIDR-formatted prefix. If an IP address is provided without a subnet mask, it is interpreted as, for IPv4, a `/32` singular IP address range, and, for IPv6, `/128`."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterBgpPeerCustomLearnedIpRangeResponse": {
      "properties": {
        "range": {
          "type": "string",
          "description": "The custom learned route IP address range. Must be a valid CIDR-formatted prefix. If an IP address is provided without a subnet mask, it is interpreted as, for IPv4, a `/32` singular IP address range, and, for IPv6, `/128`."
        }
      },
      "type": "object",
      "required": [
        "range"
      ]
    },
    "google-native:compute/beta:RouterBgpPeerEnable": {
      "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE.",
      "type": "string",
      "enum": [
        {
          "name": "False",
          "value": "FALSE"
        },
        {
          "name": "True",
          "value": "TRUE"
        }
      ]
    },
    "google-native:compute/beta:RouterBgpPeerResponse": {
      "properties": {
        "advertiseMode": {
          "type": "string",
          "description": "User-specified flag to indicate which mode to use for advertisement."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode, which currently supports the following option: - ALL_SUBNETS: Advertises all of the router's own VPC subnets. This excludes any routes learned for subnets that use VPC Network Peering. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterAdvertisedIpRangeResponse"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "advertisedRoutePriority": {
          "type": "integer",
          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win."
        },
        "bfd": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerBfdResponse",
          "description": "BFD configuration for the BGP peering."
        },
        "customLearnedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerCustomLearnedIpRangeResponse"
          },
          "description": "A list of user-defined custom learned route IP address ranges for a BGP session."
        },
        "customLearnedRoutePriority": {
          "type": "integer",
          "description": "The user-defined custom learned route priority for a BGP session. This value is applied to all custom learned route ranges for the session. You can choose a value from `0` to `65335`. If you don't provide a value, Google Cloud assigns a priority of `100` to the ranges."
        },
        "enable": {
          "type": "string",
          "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE."
        },
        "enableIpv4": {
          "type": "boolean",
          "description": "Enable IPv4 traffic over BGP Peer. It is enabled by default if the peerIpAddress is version 4."
        },
        "enableIpv6": {
          "type": "boolean",
          "description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default."
        },
        "interfaceName": {
          "type": "string",
          "description": "Name of the interface the BGP peer is associated with."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
        },
        "ipv4NexthopAddress": {
          "type": "string",
          "description": "IPv4 address of the interface inside Google Cloud Platform."
        },
        "ipv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the interface inside Google Cloud Platform."
        },
        "managementType": {
          "type": "string",
          "description": "The resource that configures and manages this BGP peer. - MANAGED_BY_USER is the default value and can be managed by you or other users - MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted. "
        },
        "md5AuthenticationKeyName": {
          "type": "string",
          "description": "Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the Router.md5_authentication_keys. The field must comply with RFC1035."
        },
        "name": {
          "type": "string",
          "description": "Name of this BGP peer. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerAsn": {
          "type": "integer",
          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value."
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported."
        },
        "peerIpv4NexthopAddress": {
          "type": "string",
          "description": "IPv4 address of the BGP interface outside Google Cloud Platform."
        },
        "peerIpv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the BGP interface outside Google Cloud Platform."
        },
        "routerApplianceInstance": {
          "type": "string",
          "description": "URI of the VM instance that is used as third-party router appliances such as Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance must be located in zones contained in the same region as this Cloud Router. The VM instance is the peer side of the BGP session."
        }
      },
      "type": "object",
      "required": [
        "advertiseMode",
        "advertisedGroups",
        "advertisedIpRanges",
        "advertisedRoutePriority",
        "bfd",
        "customLearnedIpRanges",
        "customLearnedRoutePriority",
        "enable",
        "enableIpv4",
        "enableIpv6",
        "interfaceName",
        "ipAddress",
        "ipv4NexthopAddress",
        "ipv6NexthopAddress",
        "managementType",
        "md5AuthenticationKeyName",
        "name",
        "peerAsn",
        "peerIpAddress",
        "peerIpv4NexthopAddress",
        "peerIpv6NexthopAddress",
        "routerApplianceInstance"
      ]
    },
    "google-native:compute/beta:RouterBgpResponse": {
      "properties": {
        "advertiseMode": {
          "type": "string",
          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterAdvertisedIpRangeResponse"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "asn": {
          "type": "integer",
          "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN."
        },
        "identifierRange": {
          "type": "string",
          "description": "Explicitly specifies a range of valid BGP Identifiers for this Router. It is provided as a link-local IPv4 range (from 169.254.0.0/16), of size at least /30, even if the BGP sessions are over IPv6. It must not overlap with any IPv4 BGP session ranges. Other vendors commonly call this \"router ID\"."
        },
        "keepaliveInterval": {
          "type": "integer",
          "description": "The interval in seconds between BGP keepalive messages that are sent to the peer. Hold time is three times the interval at which keepalive messages are sent, and the hold time is the maximum number of seconds allowed to elapse between successive keepalive messages that BGP receives from a peer. BGP will use the smaller of either the local hold time value or the peer's hold time value as the hold time for the BGP connection between the two peers. If set, this value must be between 20 and 60. The default is 20."
        }
      },
      "type": "object",
      "required": [
        "advertiseMode",
        "advertisedGroups",
        "advertisedIpRanges",
        "asn",
        "identifierRange",
        "keepaliveInterval"
      ]
    },
    "google-native:compute/beta:RouterInterface": {
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterInterfaceIpVersion",
          "description": "IP version of this interface."
        },
        "linkedInterconnectAttachment": {
          "type": "string",
          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "linkedVpnTunnel": {
          "type": "string",
          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "name": {
          "type": "string",
          "description": "Name of this interface entry. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateIpAddress": {
          "type": "string",
          "description": "The regional private internal IP address that is used to establish BGP sessions to a VM instance acting as a third-party Router Appliance, such as a Next Gen Firewall, a Virtual Router, or an SD-WAN VM."
        },
        "redundantInterface": {
          "type": "string",
          "description": "Name of the interface that will be redundant with the current interface you are creating. The redundantInterface must belong to the same Cloud Router as the interface here. To establish the BGP session to a Router Appliance VM, you must create two BGP peers. The two BGP peers must be attached to two separate interfaces that are redundant with each other. The redundant_interface must be 1-63 characters long, and comply with RFC1035. Specifically, the redundant_interface must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URI of the subnetwork resource that this interface belongs to, which must be in the same region as the Cloud Router. When you establish a BGP session to a VM instance using this interface, the VM instance must belong to the same subnetwork as the subnetwork specified here."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterInterfaceIpVersion": {
      "description": "IP version of this interface.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        }
      ]
    },
    "google-native:compute/beta:RouterInterfaceResponse": {
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
        },
        "ipVersion": {
          "type": "string",
          "description": "IP version of this interface."
        },
        "linkedInterconnectAttachment": {
          "type": "string",
          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "linkedVpnTunnel": {
          "type": "string",
          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "managementType": {
          "type": "string",
          "description": "The resource that configures and manages this interface. - MANAGED_BY_USER is the default value and can be managed directly by users. - MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically, by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted. "
        },
        "name": {
          "type": "string",
          "description": "Name of this interface entry. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateIpAddress": {
          "type": "string",
          "description": "The regional private internal IP address that is used to establish BGP sessions to a VM instance acting as a third-party Router Appliance, such as a Next Gen Firewall, a Virtual Router, or an SD-WAN VM."
        },
        "redundantInterface": {
          "type": "string",
          "description": "Name of the interface that will be redundant with the current interface you are creating. The redundantInterface must belong to the same Cloud Router as the interface here. To establish the BGP session to a Router Appliance VM, you must create two BGP peers. The two BGP peers must be attached to two separate interfaces that are redundant with each other. The redundant_interface must be 1-63 characters long, and comply with RFC1035. Specifically, the redundant_interface must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URI of the subnetwork resource that this interface belongs to, which must be in the same region as the Cloud Router. When you establish a BGP session to a VM instance using this interface, the VM instance must belong to the same subnetwork as the subnetwork specified here."
        }
      },
      "type": "object",
      "required": [
        "ipRange",
        "ipVersion",
        "linkedInterconnectAttachment",
        "linkedVpnTunnel",
        "managementType",
        "name",
        "privateIpAddress",
        "redundantInterface",
        "subnetwork"
      ]
    },
    "google-native:compute/beta:RouterMd5AuthenticationKey": {
      "properties": {
        "key": {
          "type": "string",
          "description": "[Input only] Value of the key. For patch and update calls, it can be skipped to copy the value from the previous configuration. This is allowed if the key with the same name existed before the operation. Maximum length is 80 characters. Can only contain printable ASCII characters."
        },
        "name": {
          "type": "string",
          "description": "Name used to identify the key. Must be unique within a router. Must be referenced by exactly one bgpPeer. Must comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterMd5AuthenticationKeyResponse": {
      "properties": {
        "key": {
          "type": "string",
          "description": "[Input only] Value of the key. For patch and update calls, it can be skipped to copy the value from the previous configuration. This is allowed if the key with the same name existed before the operation. Maximum length is 80 characters. Can only contain printable ASCII characters."
        },
        "name": {
          "type": "string",
          "description": "Name used to identify the key. Must be unique within a router. Must be referenced by exactly one bgpPeer. Must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "key",
        "name"
      ]
    },
    "google-native:compute/beta:RouterNat": {
      "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
      "properties": {
        "autoNetworkTier": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatAutoNetworkTier",
          "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used."
        },
        "drainNatIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT only."
        },
        "enableDynamicPortAllocation": {
          "type": "boolean",
          "description": "Enable Dynamic Port Allocation. If not specified, it is disabled by default. If set to true, - Dynamic Port Allocation will be enabled on this NAT config. - enableEndpointIndependentMapping cannot be set to true. - If minPorts is set, minPortsPerVm must be set to a power of two greater than or equal to 32. If minPortsPerVm is not set, a minimum of 32 ports will be allocated to a VM from this NAT config. "
        },
        "enableEndpointIndependentMapping": {
          "type": "boolean"
        },
        "endpointTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterNatEndpointTypesItem"
          },
          "description": "List of NAT-ted endpoint types supported by the Nat Gateway. If the list is empty, then it will be equivalent to include ENDPOINT_TYPE_VM"
        },
        "icmpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for ICMP connections. Defaults to 30s if not set."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatLogConfig",
          "description": "Configure logging on this NAT."
        },
        "maxPortsPerVm": {
          "type": "integer",
          "description": "Maximum number of ports allocated to a VM from this NAT config when Dynamic Port Allocation is enabled. If Dynamic Port Allocation is not enabled, this field has no effect. If Dynamic Port Allocation is enabled, and this field is set, it must be set to a power of two greater than minPortsPerVm, or 64 if minPortsPerVm is not set. If Dynamic Port Allocation is enabled and this field is not set, a maximum of 65536 ports will be allocated to a VM from this NAT config."
        },
        "minPortsPerVm": {
          "type": "integer",
          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM."
        },
        "name": {
          "type": "string",
          "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035."
        },
        "natIpAllocateOption": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatNatIpAllocateOption",
          "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. "
        },
        "natIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterNatRule"
          },
          "description": "A list of rules associated with this NAT."
        },
        "sourceSubnetworkIpRangesToNat": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatSourceSubnetworkIpRangesToNat",
          "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterNatSubnetworkToNat"
          },
          "description": "A list of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above."
        },
        "tcpEstablishedIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP established connections. Defaults to 1200s if not set."
        },
        "tcpTimeWaitTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP connections that are in TIME_WAIT state. Defaults to 120s if not set."
        },
        "tcpTransitoryIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP transitory connections. Defaults to 30s if not set."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatType",
          "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC."
        },
        "udpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for UDP connections. Defaults to 30s if not set."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterNatAutoNetworkTier": {
      "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/beta:RouterNatEndpointTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "EndpointTypeManagedProxyLb",
          "description": "This is used for regional Application Load Balancers (internal and external) and regional proxy Network Load Balancers (internal and external) endpoints.",
          "value": "ENDPOINT_TYPE_MANAGED_PROXY_LB"
        },
        {
          "name": "EndpointTypeSwg",
          "description": "This is used for Secure Web Gateway endpoints.",
          "value": "ENDPOINT_TYPE_SWG"
        },
        {
          "name": "EndpointTypeVm",
          "description": "This is the default.",
          "value": "ENDPOINT_TYPE_VM"
        }
      ]
    },
    "google-native:compute/beta:RouterNatLogConfig": {
      "description": "Configuration of logging on a NAT.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatLogConfigFilter",
          "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterNatLogConfigFilter": {
      "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "description": "Export logs for all (successful and unsuccessful) connections.",
          "value": "ALL"
        },
        {
          "name": "ErrorsOnly",
          "description": "Export logs for connection failures only.",
          "value": "ERRORS_ONLY"
        },
        {
          "name": "TranslationsOnly",
          "description": "Export logs for successful connections only.",
          "value": "TRANSLATIONS_ONLY"
        }
      ]
    },
    "google-native:compute/beta:RouterNatLogConfigResponse": {
      "description": "Configuration of logging on a NAT.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default."
        },
        "filter": {
          "type": "string",
          "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. "
        }
      },
      "type": "object",
      "required": [
        "enable",
        "filter"
      ]
    },
    "google-native:compute/beta:RouterNatNatIpAllocateOption": {
      "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. ",
      "type": "string",
      "enum": [
        {
          "name": "AutoOnly",
          "description": "Nat IPs are allocated by GCP; customers can not specify any Nat IPs.",
          "value": "AUTO_ONLY"
        },
        {
          "name": "ManualOnly",
          "description": "Only use Nat IPs provided by customers. When specified Nat IPs are not enough then the Nat service fails for new VMs.",
          "value": "MANUAL_ONLY"
        }
      ]
    },
    "google-native:compute/beta:RouterNatResponse": {
      "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
      "properties": {
        "autoNetworkTier": {
          "type": "string",
          "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used."
        },
        "drainNatIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT only."
        },
        "enableDynamicPortAllocation": {
          "type": "boolean",
          "description": "Enable Dynamic Port Allocation. If not specified, it is disabled by default. If set to true, - Dynamic Port Allocation will be enabled on this NAT config. - enableEndpointIndependentMapping cannot be set to true. - If minPorts is set, minPortsPerVm must be set to a power of two greater than or equal to 32. If minPortsPerVm is not set, a minimum of 32 ports will be allocated to a VM from this NAT config. "
        },
        "enableEndpointIndependentMapping": {
          "type": "boolean"
        },
        "endpointTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of NAT-ted endpoint types supported by the Nat Gateway. If the list is empty, then it will be equivalent to include ENDPOINT_TYPE_VM"
        },
        "icmpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for ICMP connections. Defaults to 30s if not set."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatLogConfigResponse",
          "description": "Configure logging on this NAT."
        },
        "maxPortsPerVm": {
          "type": "integer",
          "description": "Maximum number of ports allocated to a VM from this NAT config when Dynamic Port Allocation is enabled. If Dynamic Port Allocation is not enabled, this field has no effect. If Dynamic Port Allocation is enabled, and this field is set, it must be set to a power of two greater than minPortsPerVm, or 64 if minPortsPerVm is not set. If Dynamic Port Allocation is enabled and this field is not set, a maximum of 65536 ports will be allocated to a VM from this NAT config."
        },
        "minPortsPerVm": {
          "type": "integer",
          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM."
        },
        "name": {
          "type": "string",
          "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035."
        },
        "natIpAllocateOption": {
          "type": "string",
          "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. "
        },
        "natIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterNatRuleResponse"
          },
          "description": "A list of rules associated with this NAT."
        },
        "sourceSubnetworkIpRangesToNat": {
          "type": "string",
          "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterNatSubnetworkToNatResponse"
          },
          "description": "A list of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above."
        },
        "tcpEstablishedIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP established connections. Defaults to 1200s if not set."
        },
        "tcpTimeWaitTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP connections that are in TIME_WAIT state. Defaults to 120s if not set."
        },
        "tcpTransitoryIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP transitory connections. Defaults to 30s if not set."
        },
        "type": {
          "type": "string",
          "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC."
        },
        "udpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for UDP connections. Defaults to 30s if not set."
        }
      },
      "type": "object",
      "required": [
        "autoNetworkTier",
        "drainNatIps",
        "enableDynamicPortAllocation",
        "enableEndpointIndependentMapping",
        "endpointTypes",
        "icmpIdleTimeoutSec",
        "logConfig",
        "maxPortsPerVm",
        "minPortsPerVm",
        "name",
        "natIpAllocateOption",
        "natIps",
        "rules",
        "sourceSubnetworkIpRangesToNat",
        "subnetworks",
        "tcpEstablishedIdleTimeoutSec",
        "tcpTimeWaitTimeoutSec",
        "tcpTransitoryIdleTimeoutSec",
        "type",
        "udpIdleTimeoutSec"
      ]
    },
    "google-native:compute/beta:RouterNatRule": {
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatRuleAction",
          "description": "The action to be enforced for traffic that matches this rule."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this rule."
        },
        "match": {
          "type": "string",
          "description": "CEL expression that specifies the match condition that egress traffic from a VM is evaluated against. If it evaluates to true, the corresponding `action` is enforced. The following examples are valid match expressions for public NAT: \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\" \"destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'\" The following example is a valid match expression for private NAT: \"nexthop.hub == '//networkconnectivity.googleapis.com/projects/my-project/locations/global/hubs/hub-1'\""
        },
        "ruleNumber": {
          "type": "integer",
          "description": "An integer uniquely identifying a rule in the list. The rule number must be a positive value between 0 and 65000, and must be unique among rules within a NAT."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterNatRuleAction": {
      "properties": {
        "sourceNatActiveIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this NAT rule. These IP addresses must be valid static external IP addresses assigned to the project. This field is used for public NAT."
        },
        "sourceNatActiveRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the subnetworks used as source ranges for this NAT Rule. These subnetworks must have purpose set to PRIVATE_NAT. This field is used for private NAT."
        },
        "sourceNatDrainIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT rule only. This field is used for public NAT."
        },
        "sourceNatDrainRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of subnetworks representing source ranges to be drained. This is only supported on patch/update, and these subnetworks must have previously been used as active ranges in this NAT Rule. This field is used for private NAT."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterNatRuleActionResponse": {
      "properties": {
        "sourceNatActiveIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this NAT rule. These IP addresses must be valid static external IP addresses assigned to the project. This field is used for public NAT."
        },
        "sourceNatActiveRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the subnetworks used as source ranges for this NAT Rule. These subnetworks must have purpose set to PRIVATE_NAT. This field is used for private NAT."
        },
        "sourceNatDrainIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT rule only. This field is used for public NAT."
        },
        "sourceNatDrainRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of subnetworks representing source ranges to be drained. This is only supported on patch/update, and these subnetworks must have previously been used as active ranges in this NAT Rule. This field is used for private NAT."
        }
      },
      "type": "object",
      "required": [
        "sourceNatActiveIps",
        "sourceNatActiveRanges",
        "sourceNatDrainIps",
        "sourceNatDrainRanges"
      ]
    },
    "google-native:compute/beta:RouterNatRuleResponse": {
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterNatRuleActionResponse",
          "description": "The action to be enforced for traffic that matches this rule."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this rule."
        },
        "match": {
          "type": "string",
          "description": "CEL expression that specifies the match condition that egress traffic from a VM is evaluated against. If it evaluates to true, the corresponding `action` is enforced. The following examples are valid match expressions for public NAT: \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\" \"destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'\" The following example is a valid match expression for private NAT: \"nexthop.hub == '//networkconnectivity.googleapis.com/projects/my-project/locations/global/hubs/hub-1'\""
        },
        "ruleNumber": {
          "type": "integer",
          "description": "An integer uniquely identifying a rule in the list. The rule number must be a positive value between 0 and 65000, and must be unique among rules within a NAT."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "match",
        "ruleNumber"
      ]
    },
    "google-native:compute/beta:RouterNatSourceSubnetworkIpRangesToNat": {
      "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region.",
      "type": "string",
      "enum": [
        {
          "name": "AllSubnetworksAllIpRanges",
          "description": "All the IP ranges in every Subnetwork are allowed to Nat.",
          "value": "ALL_SUBNETWORKS_ALL_IP_RANGES"
        },
        {
          "name": "AllSubnetworksAllPrimaryIpRanges",
          "description": "All the primary IP ranges in every Subnetwork are allowed to Nat.",
          "value": "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES"
        },
        {
          "name": "ListOfSubnetworks",
          "description": "A list of Subnetworks are allowed to Nat (specified in the field subnetwork below)",
          "value": "LIST_OF_SUBNETWORKS"
        }
      ]
    },
    "google-native:compute/beta:RouterNatSubnetworkToNat": {
      "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
      "properties": {
        "name": {
          "type": "string",
          "description": "URL for the subnetwork resource that will use NAT."
        },
        "secondaryIpRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the secondary ranges of the Subnetwork that are allowed to use NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is one of the values in source_ip_ranges_to_nat."
        },
        "sourceIpRangesToNat": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterNatSubnetworkToNatSourceIpRangesToNatItem"
          },
          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RouterNatSubnetworkToNatResponse": {
      "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
      "properties": {
        "name": {
          "type": "string",
          "description": "URL for the subnetwork resource that will use NAT."
        },
        "secondaryIpRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the secondary ranges of the Subnetwork that are allowed to use NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is one of the values in source_ip_ranges_to_nat."
        },
        "sourceIpRangesToNat": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]"
        }
      },
      "type": "object",
      "required": [
        "name",
        "secondaryIpRangeNames",
        "sourceIpRangesToNat"
      ]
    },
    "google-native:compute/beta:RouterNatSubnetworkToNatSourceIpRangesToNatItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllIpRanges",
          "description": "The primary and all the secondary ranges are allowed to Nat.",
          "value": "ALL_IP_RANGES"
        },
        {
          "name": "ListOfSecondaryIpRanges",
          "description": "A list of secondary ranges are allowed to Nat.",
          "value": "LIST_OF_SECONDARY_IP_RANGES"
        },
        {
          "name": "PrimaryIpRange",
          "description": "The primary range is allowed to Nat.",
          "value": "PRIMARY_IP_RANGE"
        }
      ]
    },
    "google-native:compute/beta:RouterNatType": {
      "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC.",
      "type": "string",
      "enum": [
        {
          "name": "Private",
          "description": "NAT used for private IP translation.",
          "value": "PRIVATE"
        },
        {
          "name": "Public",
          "description": "NAT used for public IP translation. This is the default.",
          "value": "PUBLIC"
        }
      ]
    },
    "google-native:compute/beta:Rule": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Fbeta:RuleAction",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Condition"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "description": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "ins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:LogConfig"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "notIns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:RuleAction": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Allow",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ALLOW"
        },
        {
          "name": "AllowWithLog",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ALLOW_WITH_LOG"
        },
        {
          "name": "Deny",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DENY"
        },
        {
          "name": "DenyWithLog",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DENY_WITH_LOG"
        },
        {
          "name": "Log",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG"
        },
        {
          "name": "NoAction",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ACTION"
        }
      ]
    },
    "google-native:compute/beta:RuleResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "action": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ConditionResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "description": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "ins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:LogConfigResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "notIns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "action",
        "conditions",
        "description",
        "ins",
        "logConfigs",
        "notIns",
        "permissions"
      ]
    },
    "google-native:compute/beta:SSLHealthCheck": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fbeta:SSLHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fbeta:SSLHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection and SSL handshake."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based SSL health check. In addition to establishing a TCP connection and the TLS handshake, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SSLHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/beta:SSLHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/beta:SSLHealthCheckResponse": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection and SSL handshake."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based SSL health check. In addition to establishing a TCP connection and the TLS handshake, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object",
      "required": [
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "request",
        "response"
      ]
    },
    "google-native:compute/beta:SavedAttachedDiskResponse": {
      "description": "DEPRECATED: Please use compute#savedDisk instead. An instance-attached disk resource.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the name of the disk attached to the source instance."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The encryption key for the disk."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in base-2 GB."
        },
        "diskType": {
          "type": "string",
          "description": "URL of the disk type resource. For example: projects/project /zones/zone/diskTypes/pd-standard or pd-ssd"
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "index": {
          "type": "integer",
          "description": "Specifies zero-based index of the disk that is attached to the source instance."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#attachedDisk for attached disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any valid publicly visible licenses."
        },
        "mode": {
          "type": "string",
          "description": "The mode in which this disk is attached to the source instance, either READ_WRITE or READ_ONLY."
        },
        "source": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        },
        "storageBytes": {
          "type": "string",
          "description": "A size of the storage used by the disk's snapshot by this machine image."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the attached disk, either SCRATCH or PERSISTENT."
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "boot",
        "deviceName",
        "diskEncryptionKey",
        "diskSizeGb",
        "diskType",
        "guestOsFeatures",
        "index",
        "interface",
        "kind",
        "licenses",
        "mode",
        "source",
        "storageBytes",
        "storageBytesStatus",
        "type"
      ]
    },
    "google-native:compute/beta:SavedDisk": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "sourceDisk": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SavedDiskResponse": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#savedDisk for attached disks."
        },
        "sourceDisk": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        },
        "storageBytes": {
          "type": "string",
          "description": "Size of the individual disk snapshot used by this machine image."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "kind",
        "sourceDisk",
        "storageBytes",
        "storageBytesStatus"
      ]
    },
    "google-native:compute/beta:Scheduling": {
      "description": "Sets the scheduling options for an Instance.",
      "properties": {
        "automaticRestart": {
          "type": "boolean",
          "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted. By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
        },
        "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."
        },
        "instanceTerminationAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:SchedulingInstanceTerminationAction",
          "description": "Specifies the termination action for the instance."
        },
        "localSsdRecoveryTimeout": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "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."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the instance close to other resources. This field is for use by internal tools that use the public API."
        },
        "maintenanceFreezeDurationHours": {
          "type": "integer",
          "description": "Specifies the number of hours after VM instance creation where the VM won't be scheduled for maintenance."
        },
        "maintenanceInterval": {
          "$ref": "#/types/google-native:compute%2Fbeta:SchedulingMaintenanceInterval",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`."
        },
        "maxRunDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Specifies the max run duration for the given instance. If specified, the instance termination action will be performed at the end of the run duration."
        },
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SchedulingNodeAffinity"
          },
          "description": "A set of node affinity and anti-affinity configurations. Refer to Configuring node affinity for more information. Overrides reservationAffinity."
        },
        "onHostMaintenance": {
          "$ref": "#/types/google-native:compute%2Fbeta:SchedulingOnHostMaintenance",
          "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the instance is preemptible. This can only be set during instance creation or while the instance is stopped and therefore, in a `TERMINATED` state. See Instance Life Cycle for more information on the possible instance states."
        },
        "provisioningModel": {
          "$ref": "#/types/google-native:compute%2Fbeta:SchedulingProvisioningModel",
          "description": "Specifies the provisioning model of the instance."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SchedulingInstanceTerminationAction": {
      "description": "Specifies the termination action for the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Delete",
          "description": "Delete the VM.",
          "value": "DELETE"
        },
        {
          "name": "InstanceTerminationActionUnspecified",
          "description": "Default value. This value is unused.",
          "value": "INSTANCE_TERMINATION_ACTION_UNSPECIFIED"
        },
        {
          "name": "Stop",
          "description": "Stop the VM without storing in-memory content. default action.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/beta:SchedulingMaintenanceInterval": {
      "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.",
      "type": "string",
      "enum": [
        {
          "name": "AsNeeded",
          "description": "VMs are eligible to receive infrastructure and hypervisor updates as they become available. This may result in more maintenance operations (live migrations or terminations) for the VM than the PERIODIC and RECURRENT options.",
          "value": "AS_NEEDED"
        },
        {
          "name": "Periodic",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available.",
          "value": "PERIODIC"
        },
        {
          "name": "Recurrent",
          "description": "VMs receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean a VM will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available. RECURRENT is used for GEN3 and Slice of Hardware VMs.",
          "value": "RECURRENT"
        }
      ]
    },
    "google-native:compute/beta:SchedulingNodeAffinity": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of Node resource."
        },
        "operator": {
          "$ref": "#/types/google-native:compute%2Fbeta:SchedulingNodeAffinityOperator",
          "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SchedulingNodeAffinityOperator": {
      "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity.",
      "type": "string",
      "enum": [
        {
          "name": "In",
          "description": "Requires Compute Engine to seek for matched nodes.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "Requires Compute Engine to avoid certain nodes.",
          "value": "NOT_IN"
        },
        {
          "name": "OperatorUnspecified",
          "value": "OPERATOR_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:SchedulingNodeAffinityResponse": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of Node resource."
        },
        "operator": {
          "type": "string",
          "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "google-native:compute/beta:SchedulingOnHostMaintenance": {
      "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy.",
      "type": "string",
      "enum": [
        {
          "name": "Migrate",
          "description": "*[Default]* Allows Compute Engine to automatically migrate instances out of the way of maintenance events.",
          "value": "MIGRATE"
        },
        {
          "name": "Terminate",
          "description": "Tells Compute Engine to terminate and (optionally) restart the instance away from the maintenance activity. If you would like your instance to be restarted, set the automaticRestart flag to true. Your instance may be restarted more than once, and it may be restarted outside the window of maintenance events.",
          "value": "TERMINATE"
        }
      ]
    },
    "google-native:compute/beta:SchedulingProvisioningModel": {
      "description": "Specifies the provisioning model of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Spot",
          "description": "Heavily discounted, no guaranteed runtime.",
          "value": "SPOT"
        },
        {
          "name": "Standard",
          "description": "Standard provisioning with user controlled runtime, no discounts.",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/beta:SchedulingResponse": {
      "description": "Sets the scheduling options for an Instance.",
      "properties": {
        "automaticRestart": {
          "type": "boolean",
          "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted. By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
        },
        "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."
        },
        "instanceTerminationAction": {
          "type": "string",
          "description": "Specifies the termination action for the instance."
        },
        "localSsdRecoveryTimeout": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "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."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the instance close to other resources. This field is for use by internal tools that use the public API."
        },
        "maintenanceFreezeDurationHours": {
          "type": "integer",
          "description": "Specifies the number of hours after VM instance creation where the VM won't be scheduled for maintenance."
        },
        "maintenanceInterval": {
          "type": "string",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`."
        },
        "maxRunDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Specifies the max run duration for the given instance. If specified, the instance termination action will be performed at the end of the run duration."
        },
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SchedulingNodeAffinityResponse"
          },
          "description": "A set of node affinity and anti-affinity configurations. Refer to Configuring node affinity for more information. Overrides reservationAffinity."
        },
        "onHostMaintenance": {
          "type": "string",
          "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the instance is preemptible. This can only be set during instance creation or while the instance is stopped and therefore, in a `TERMINATED` state. See Instance Life Cycle for more information on the possible instance states."
        },
        "provisioningModel": {
          "type": "string",
          "description": "Specifies the provisioning model of the instance."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "automaticRestart",
        "hostErrorTimeoutSeconds",
        "instanceTerminationAction",
        "localSsdRecoveryTimeout",
        "locationHint",
        "maintenanceFreezeDurationHours",
        "maintenanceInterval",
        "maxRunDuration",
        "minNodeCpus",
        "nodeAffinities",
        "onHostMaintenance",
        "preemptible",
        "provisioningModel",
        "terminationTime"
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfig": {
      "description": "Configuration options for Cloud Armor Adaptive Protection (CAAP).",
      "properties": {
        "autoDeployConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig"
        },
        "layer7DdosDefenseConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig",
          "description": "If set to true, enables Cloud Armor Machine Learning."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig": {
      "description": "Configuration options for Adaptive Protection auto-deploy feature.",
      "properties": {
        "confidenceThreshold": {
          "type": "number"
        },
        "expirationSec": {
          "type": "integer"
        },
        "impactedBaselineThreshold": {
          "type": "number"
        },
        "loadThreshold": {
          "type": "number"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfigResponse": {
      "description": "Configuration options for Adaptive Protection auto-deploy feature.",
      "properties": {
        "confidenceThreshold": {
          "type": "number"
        },
        "expirationSec": {
          "type": "integer"
        },
        "impactedBaselineThreshold": {
          "type": "number"
        },
        "loadThreshold": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "confidenceThreshold",
        "expirationSec",
        "impactedBaselineThreshold",
        "loadThreshold"
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig": {
      "description": "Configuration options for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "If set to true, enables CAAP for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "ruleVisibility": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility",
          "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "thresholdConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig"
          },
          "description": "Configuration options for layer7 adaptive protection for various customizable thresholds."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResponse": {
      "description": "Configuration options for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "If set to true, enables CAAP for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "ruleVisibility": {
          "type": "string",
          "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "thresholdConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigResponse"
          },
          "description": "Configuration options for layer7 adaptive protection for various customizable thresholds."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "ruleVisibility",
        "thresholdConfigs"
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility": {
      "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "type": "string",
      "enum": [
        {
          "name": "Premium",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig": {
      "properties": {
        "autoDeployConfidenceThreshold": {
          "type": "number"
        },
        "autoDeployExpirationSec": {
          "type": "integer"
        },
        "autoDeployImpactedBaselineThreshold": {
          "type": "number"
        },
        "autoDeployLoadThreshold": {
          "type": "number"
        },
        "name": {
          "type": "string",
          "description": "The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigResponse": {
      "properties": {
        "autoDeployConfidenceThreshold": {
          "type": "number"
        },
        "autoDeployExpirationSec": {
          "type": "integer"
        },
        "autoDeployImpactedBaselineThreshold": {
          "type": "number"
        },
        "autoDeployLoadThreshold": {
          "type": "number"
        },
        "name": {
          "type": "string",
          "description": "The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy."
        }
      },
      "type": "object",
      "required": [
        "autoDeployConfidenceThreshold",
        "autoDeployExpirationSec",
        "autoDeployImpactedBaselineThreshold",
        "autoDeployLoadThreshold",
        "name"
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdaptiveProtectionConfigResponse": {
      "description": "Configuration options for Cloud Armor Adaptive Protection (CAAP).",
      "properties": {
        "autoDeployConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfigResponse"
        },
        "layer7DdosDefenseConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResponse",
          "description": "If set to true, enables Cloud Armor Machine Learning."
        }
      },
      "type": "object",
      "required": [
        "autoDeployConfig",
        "layer7DdosDefenseConfig"
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdvancedOptionsConfig": {
      "properties": {
        "jsonCustomConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig",
          "description": "Custom configuration to apply the JSON parsing. Only applicable when json_parsing is set to STANDARD."
        },
        "jsonParsing": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigJsonParsing"
        },
        "logLevel": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigLogLevel"
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig": {
      "properties": {
        "contentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of custom Content-Type header values to apply the JSON parsing. As per RFC 1341, a Content-Type header value has the following format: Content-Type := type \"/\" subtype *[\";\" parameter] When configuring a custom Content-Type header value, only the type/subtype needs to be specified, and the parameters should be excluded."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyAdvancedOptionsConfigJsonCustomConfigResponse": {
      "properties": {
        "contentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of custom Content-Type header values to apply the JSON parsing. As per RFC 1341, a Content-Type header value has the following format: Content-Type := type \"/\" subtype *[\";\" parameter] When configuring a custom Content-Type header value, only the type/subtype needs to be specified, and the parameters should be excluded."
        }
      },
      "type": "object",
      "required": [
        "contentTypes"
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdvancedOptionsConfigJsonParsing": {
      "type": "string",
      "enum": [
        {
          "name": "Disabled",
          "value": "DISABLED"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        },
        {
          "name": "StandardWithGraphql",
          "value": "STANDARD_WITH_GRAPHQL"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdvancedOptionsConfigLogLevel": {
      "type": "string",
      "enum": [
        {
          "name": "Normal",
          "value": "NORMAL"
        },
        {
          "name": "Verbose",
          "value": "VERBOSE"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyAdvancedOptionsConfigResponse": {
      "properties": {
        "jsonCustomConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigJsonCustomConfigResponse",
          "description": "Custom configuration to apply the JSON parsing. Only applicable when json_parsing is set to STANDARD."
        },
        "jsonParsing": {
          "type": "string"
        },
        "logLevel": {
          "type": "string"
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "jsonCustomConfig",
        "jsonParsing",
        "logLevel",
        "userIpRequestHeaders"
      ]
    },
    "google-native:compute/beta:SecurityPolicyAssociation": {
      "properties": {
        "attachmentId": {
          "type": "string",
          "description": "The resource that the security policy is attached to."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyAssociationResponse": {
      "properties": {
        "attachmentId": {
          "type": "string",
          "description": "The resource that the security policy is attached to."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the security policy of the association."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        },
        "securityPolicyId": {
          "type": "string",
          "description": "The security policy ID of the association."
        }
      },
      "type": "object",
      "required": [
        "attachmentId",
        "displayName",
        "name",
        "securityPolicyId"
      ]
    },
    "google-native:compute/beta:SecurityPolicyDdosProtectionConfig": {
      "properties": {
        "ddosProtection": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfigDdosProtection"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyDdosProtectionConfigDdosProtection": {
      "type": "string",
      "enum": [
        {
          "name": "Advanced",
          "value": "ADVANCED"
        },
        {
          "name": "AdvancedPreview",
          "value": "ADVANCED_PREVIEW"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyDdosProtectionConfigResponse": {
      "properties": {
        "ddosProtection": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "ddosProtection"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRecaptchaOptionsConfig": {
      "properties": {
        "redirectSiteKey": {
          "type": "string",
          "description": "An optional 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. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRecaptchaOptionsConfigResponse": {
      "properties": {
        "redirectSiteKey": {
          "type": "string",
          "description": "An optional 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. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        }
      },
      "type": "object",
      "required": [
        "redirectSiteKey"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRule": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the rule is matched. The following are the valid actions: - allow: allow access to target. - deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for `STATUS` are 403, 404, and 502. - 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 rate_limit_options to be set. - 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. - throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rate_limit_options to be set for this. "
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleDirection",
          "description": "The direction in which this rule applies. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules. This field may only be specified when the versioned_expr is set to FIREWALL."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleHttpHeaderAction",
          "description": "Optional, additional actions that are performed on headers. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcher",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "networkMatch": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleNetworkMatcher",
          "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). Field 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. Each 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. For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. Example: networkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\" The 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 \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive."
        },
        "preconfiguredWafConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta: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."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, the specified action is not enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority."
        },
        "rateLimitOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptions",
          "description": "Must be specified if the action is \"rate_based_ban\" or \"throttle\". Cannot be specified for any other actions."
        },
        "redirectOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRedirectOptions",
          "description": "Parameters defining the redirect action. Cannot be specified for any other actions. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "ruleNumber": {
          "type": "string",
          "description": "Identifier for the rule. This is only unique within the given security policy. This can only be set during rule creation, if rule number is not specified it will be generated by the server."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleDirection": {
      "description": "The direction in which this rule applies. This field may only be specified when versioned_expr is set to FIREWALL.",
      "type": "string",
      "enum": [
        {
          "name": "Egress",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleHttpHeaderAction": {
      "properties": {
        "requestHeadersToAdds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleHttpHeaderActionHttpHeaderOption"
          },
          "description": "The list of request headers to add or overwrite if they're already present."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleHttpHeaderActionHttpHeaderOption": {
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header to set."
        },
        "headerValue": {
          "type": "string",
          "description": "The value to set the named header to."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleHttpHeaderActionHttpHeaderOptionResponse": {
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header to set."
        },
        "headerValue": {
          "type": "string",
          "description": "The value to set the named header to."
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "headerValue"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleHttpHeaderActionResponse": {
      "properties": {
        "requestHeadersToAdds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleHttpHeaderActionHttpHeaderOptionResponse"
          },
          "description": "The list of request headers to add or overwrite if they're already present."
        }
      },
      "type": "object",
      "required": [
        "requestHeadersToAdds"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcher": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherConfig",
          "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
        },
        "expr": {
          "$ref": "#/types/google-native:compute%2Fbeta:Expr",
          "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. Expressions containing `evaluateThreatIntelligence` require Cloud Armor Managed Protection Plus tier and are not supported in Edge Policies nor in Regional Policies. Expressions containing `evaluatePreconfiguredExpr('sourceiplist-*')` require Cloud Armor Managed Protection Plus tier and are only supported in Global Security Policies."
        },
        "exprOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherExprOptions",
          "description": "The configuration options available when specifying a user defined CEVAL expression (i.e., 'expr')."
        },
        "versionedExpr": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherVersionedExpr",
          "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherConfig": {
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherConfigLayer4Config"
          },
          "description": "Pairs of IP protocols and ports that the rule should match. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of src_ip_ranges allowed is 10."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherConfigLayer4Config": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]. This field may only be specified when versioned_expr is set to FIREWALL."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherConfigLayer4ConfigResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]. This field may only be specified when versioned_expr is set to FIREWALL."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherConfigResponse": {
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherConfigLayer4ConfigResponse"
          },
          "description": "Pairs of IP protocols and ports that the rule should match. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of src_ip_ranges allowed is 10."
        }
      },
      "type": "object",
      "required": [
        "destIpRanges",
        "layer4Configs",
        "srcIpRanges"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherExprOptions": {
      "properties": {
        "recaptchaOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherExprOptionsRecaptchaOptions",
          "description": "reCAPTCHA configuration options to be applied for the rule. If the rule does not evaluate reCAPTCHA tokens, this field will have no effect."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherExprOptionsRecaptchaOptions": {
      "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherExprOptionsRecaptchaOptionsResponse": {
      "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "actionTokenSiteKeys",
        "sessionTokenSiteKeys"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherExprOptionsResponse": {
      "properties": {
        "recaptchaOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherExprOptionsRecaptchaOptionsResponse",
          "description": "reCAPTCHA configuration options to be applied for the rule. If the rule does not evaluate reCAPTCHA tokens, this field will have no effect."
        }
      },
      "type": "object",
      "required": [
        "recaptchaOptions"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherResponse": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherConfigResponse",
          "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
        },
        "expr": {
          "$ref": "#/types/google-native:compute%2Fbeta:ExprResponse",
          "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. Expressions containing `evaluateThreatIntelligence` require Cloud Armor Managed Protection Plus tier and are not supported in Edge Policies nor in Regional Policies. Expressions containing `evaluatePreconfiguredExpr('sourceiplist-*')` require Cloud Armor Managed Protection Plus tier and are only supported in Global Security Policies."
        },
        "exprOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherExprOptionsResponse",
          "description": "The configuration options available when specifying a user defined CEVAL expression (i.e., 'expr')."
        },
        "versionedExpr": {
          "type": "string",
          "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config."
        }
      },
      "type": "object",
      "required": [
        "config",
        "expr",
        "exprOptions",
        "versionedExpr"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleMatcherVersionedExpr": {
      "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config.",
      "type": "string",
      "enum": [
        {
          "name": "Firewall",
          "value": "FIREWALL"
        },
        {
          "name": "SrcIpsV1",
          "description": "Matches the source IP address of a request to the IP ranges supplied in config.",
          "value": "SRC_IPS_V1"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleNetworkMatcher": {
      "description": "Represents a match condition that incoming network traffic is evaluated against.",
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "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\"."
        },
        "srcAsns": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "BGP Autonomous System Number associated with the source IP address."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "srcRegionCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatch"
          },
          "description": "User-defined fields. Each element names a defined field and lists the matching values for that field."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleNetworkMatcherResponse": {
      "description": "Represents a match condition that incoming network traffic is evaluated against.",
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "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\"."
        },
        "srcAsns": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "BGP Autonomous System Number associated with the source IP address."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "srcRegionCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatchResponse"
          },
          "description": "User-defined fields. Each element names a defined field and lists the matching values for that field."
        }
      },
      "type": "object",
      "required": [
        "destIpRanges",
        "destPorts",
        "ipProtocols",
        "srcAsns",
        "srcIpRanges",
        "srcPorts",
        "srcRegionCodes",
        "userDefinedFields"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatch": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the user-defined field, as given in the definition."
        },
        "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\")."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatchResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the user-defined field, as given in the definition."
        },
        "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\")."
        }
      },
      "type": "object",
      "required": [
        "name",
        "values"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRulePreconfiguredWafConfig": {
      "properties": {
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusion"
          },
          "description": "A list of exclusions to apply during preconfigured WAF evaluation."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRulePreconfiguredWafConfigExclusion": {
      "properties": {
        "requestCookiesToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request cookie names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestHeadersToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request header names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestQueryParamsToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request query parameter names whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body."
        },
        "requestUrisToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request URIs from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded."
        },
        "targetRuleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set."
        },
        "targetRuleSet": {
          "type": "string",
          "description": "Target WAF rule set to apply the preconfigured WAF exclusion."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams": {
      "properties": {
        "op": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp",
          "description": "The match operator for the field."
        },
        "val": {
          "type": "string",
          "description": "The value of the field."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp": {
      "description": "The match operator for the field.",
      "type": "string",
      "enum": [
        {
          "name": "Contains",
          "description": "The operator matches if the field value contains the specified value.",
          "value": "CONTAINS"
        },
        {
          "name": "EndsWith",
          "description": "The operator matches if the field value ends with the specified value.",
          "value": "ENDS_WITH"
        },
        {
          "name": "Equals",
          "description": "The operator matches if the field value equals the specified value.",
          "value": "EQUALS"
        },
        {
          "name": "EqualsAny",
          "description": "The operator matches if the field value is any value.",
          "value": "EQUALS_ANY"
        },
        {
          "name": "StartsWith",
          "description": "The operator matches if the field value starts with the specified value.",
          "value": "STARTS_WITH"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse": {
      "properties": {
        "op": {
          "type": "string",
          "description": "The match operator for the field."
        },
        "val": {
          "type": "string",
          "description": "The value of the field."
        }
      },
      "type": "object",
      "required": [
        "op",
        "val"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRulePreconfiguredWafConfigExclusionResponse": {
      "properties": {
        "requestCookiesToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request cookie names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestHeadersToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request header names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestQueryParamsToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request query parameter names whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body."
        },
        "requestUrisToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request URIs from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded."
        },
        "targetRuleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set."
        },
        "targetRuleSet": {
          "type": "string",
          "description": "Target WAF rule set to apply the preconfigured WAF exclusion."
        }
      },
      "type": "object",
      "required": [
        "requestCookiesToExclude",
        "requestHeadersToExclude",
        "requestQueryParamsToExclude",
        "requestUrisToExclude",
        "targetRuleIds",
        "targetRuleSet"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRulePreconfiguredWafConfigResponse": {
      "properties": {
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigExclusionResponse"
          },
          "description": "A list of exclusions to apply during preconfigured WAF evaluation."
        }
      },
      "type": "object",
      "required": [
        "exclusions"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleRateLimitOptions": {
      "properties": {
        "banDurationSec": {
          "type": "integer",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold."
        },
        "banThreshold": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsThreshold",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, the key will be banned for the configured 'ban_duration_sec' when the number of requests that exceed the 'rate_limit_threshold' also exceed this 'ban_threshold'."
        },
        "conformAction": {
          "type": "string",
          "description": "Action to take for requests that are under the configured rate limit threshold. Valid option is \"allow\" only."
        },
        "enforceOnKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsEnforceOnKey",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        },
        "enforceOnKeyConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig"
          },
          "description": "If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which ratelimit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If enforce_on_key_configs is specified, enforce_on_key must not be specified."
        },
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "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. Valid options are `deny(STATUS)`, where valid values for `STATUS` are 403, 404, 429, and 502, and `redirect`, where the redirect parameters come from `exceedRedirectOptions` below. The `redirect` action is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "exceedRedirectOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRedirectOptions",
          "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."
        },
        "rateLimitThreshold": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsThreshold",
          "description": "Threshold at which to begin ratelimiting."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleRateLimitOptionsEnforceOnKey": {
      "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "value": "ALL"
        },
        {
          "name": "AllIps",
          "value": "ALL_IPS"
        },
        {
          "name": "HttpCookie",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "HttpHeader",
          "value": "HTTP_HEADER"
        },
        {
          "name": "HttpPath",
          "value": "HTTP_PATH"
        },
        {
          "name": "Ip",
          "value": "IP"
        },
        {
          "name": "RegionCode",
          "value": "REGION_CODE"
        },
        {
          "name": "Sni",
          "value": "SNI"
        },
        {
          "name": "XffIp",
          "value": "XFF_IP"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig": {
      "properties": {
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "enforceOnKeyType": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType": {
      "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "value": "ALL"
        },
        {
          "name": "AllIps",
          "value": "ALL_IPS"
        },
        {
          "name": "HttpCookie",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "HttpHeader",
          "value": "HTTP_HEADER"
        },
        {
          "name": "HttpPath",
          "value": "HTTP_PATH"
        },
        {
          "name": "Ip",
          "value": "IP"
        },
        {
          "name": "RegionCode",
          "value": "REGION_CODE"
        },
        {
          "name": "Sni",
          "value": "SNI"
        },
        {
          "name": "XffIp",
          "value": "XFF_IP"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigResponse": {
      "properties": {
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "enforceOnKeyType": {
          "type": "string",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        }
      },
      "type": "object",
      "required": [
        "enforceOnKeyName",
        "enforceOnKeyType"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleRateLimitOptionsResponse": {
      "properties": {
        "banDurationSec": {
          "type": "integer",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold."
        },
        "banThreshold": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsThresholdResponse",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, the key will be banned for the configured 'ban_duration_sec' when the number of requests that exceed the 'rate_limit_threshold' also exceed this 'ban_threshold'."
        },
        "conformAction": {
          "type": "string",
          "description": "Action to take for requests that are under the configured rate limit threshold. Valid option is \"allow\" only."
        },
        "enforceOnKey": {
          "type": "string",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        },
        "enforceOnKeyConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigResponse"
          },
          "description": "If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which ratelimit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If enforce_on_key_configs is specified, enforce_on_key must not be specified."
        },
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "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. Valid options are `deny(STATUS)`, where valid values for `STATUS` are 403, 404, 429, and 502, and `redirect`, where the redirect parameters come from `exceedRedirectOptions` below. The `redirect` action is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "exceedRedirectOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRedirectOptionsResponse",
          "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."
        },
        "rateLimitThreshold": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsThresholdResponse",
          "description": "Threshold at which to begin ratelimiting."
        }
      },
      "type": "object",
      "required": [
        "banDurationSec",
        "banThreshold",
        "conformAction",
        "enforceOnKey",
        "enforceOnKeyConfigs",
        "enforceOnKeyName",
        "exceedAction",
        "exceedRedirectOptions",
        "rateLimitThreshold"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleRateLimitOptionsThreshold": {
      "properties": {
        "count": {
          "type": "integer",
          "description": "Number of HTTP(S) requests for calculating the threshold."
        },
        "intervalSec": {
          "type": "integer",
          "description": "Interval over which the threshold is computed."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleRateLimitOptionsThresholdResponse": {
      "properties": {
        "count": {
          "type": "integer",
          "description": "Number of HTTP(S) requests for calculating the threshold."
        },
        "intervalSec": {
          "type": "integer",
          "description": "Interval over which the threshold is computed."
        }
      },
      "type": "object",
      "required": [
        "count",
        "intervalSec"
      ]
    },
    "google-native:compute/beta: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."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRedirectOptionsType",
          "description": "Type of the redirect action."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyRuleRedirectOptionsResponse": {
      "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."
        },
        "type": {
          "type": "string",
          "description": "Type of the redirect action."
        }
      },
      "type": "object",
      "required": [
        "target",
        "type"
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleRedirectOptionsType": {
      "description": "Type of the redirect action.",
      "type": "string",
      "enum": [
        {
          "name": "External302",
          "value": "EXTERNAL_302"
        },
        {
          "name": "GoogleRecaptcha",
          "value": "GOOGLE_RECAPTCHA"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyRuleResponse": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the rule is matched. The following are the valid actions: - allow: allow access to target. - deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for `STATUS` are 403, 404, and 502. - 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 rate_limit_options to be set. - 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. - throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rate_limit_options to be set for this. "
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "direction": {
          "type": "string",
          "description": "The direction in which this rule applies. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules. This field may only be specified when the versioned_expr is set to FIREWALL."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleHttpHeaderActionResponse",
          "description": "Optional, additional actions that are performed on headers. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyRule for security policy rules"
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleMatcherResponse",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "networkMatch": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleNetworkMatcherResponse",
          "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). Field 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. Each 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. For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. Example: networkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\" The 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 \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive."
        },
        "preconfiguredWafConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRulePreconfiguredWafConfigResponse",
          "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."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, the specified action is not enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority."
        },
        "rateLimitOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRateLimitOptionsResponse",
          "description": "Must be specified if the action is \"rate_based_ban\" or \"throttle\". Cannot be specified for any other actions."
        },
        "redirectOptions": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleRedirectOptionsResponse",
          "description": "Parameters defining the redirect action. Cannot be specified for any other actions. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "ruleNumber": {
          "type": "string",
          "description": "Identifier for the rule. This is only unique within the given security policy. This can only be set during rule creation, if rule number is not specified it will be generated by the server."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Calculation of the complexity of a single firewall security policy rule."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule. This field may only be specified when versioned_expr is set to FIREWALL."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "direction",
        "enableLogging",
        "headerAction",
        "kind",
        "match",
        "networkMatch",
        "preconfiguredWafConfig",
        "preview",
        "priority",
        "rateLimitOptions",
        "redirectOptions",
        "ruleNumber",
        "ruleTupleCount",
        "targetResources",
        "targetServiceAccounts"
      ]
    },
    "google-native:compute/beta:SecurityPolicyType": {
      "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
      "type": "string",
      "enum": [
        {
          "name": "CloudArmor",
          "value": "CLOUD_ARMOR"
        },
        {
          "name": "CloudArmorEdge",
          "value": "CLOUD_ARMOR_EDGE"
        },
        {
          "name": "CloudArmorNetwork",
          "value": "CLOUD_ARMOR_NETWORK"
        },
        {
          "name": "Firewall",
          "value": "FIREWALL"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyUserDefinedField": {
      "properties": {
        "base": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedFieldBase",
          "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required"
        },
        "mask": {
          "type": "string",
          "description": "If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. Encoded as a hexadecimal number (starting with \"0x\"). The last byte of the field (in network byte order) corresponds to the least significant byte of the mask."
        },
        "name": {
          "type": "string",
          "description": "The name of this field. Must be unique within the policy."
        },
        "offset": {
          "type": "integer",
          "description": "Offset of the first byte of the field (in network byte order) relative to 'base'."
        },
        "size": {
          "type": "integer",
          "description": "Size of the field in bytes. Valid values: 1-4."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecurityPolicyUserDefinedFieldBase": {
      "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/beta:SecurityPolicyUserDefinedFieldResponse": {
      "properties": {
        "base": {
          "type": "string",
          "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required"
        },
        "mask": {
          "type": "string",
          "description": "If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. Encoded as a hexadecimal number (starting with \"0x\"). The last byte of the field (in network byte order) corresponds to the least significant byte of the mask."
        },
        "name": {
          "type": "string",
          "description": "The name of this field. Must be unique within the policy."
        },
        "offset": {
          "type": "integer",
          "description": "Offset of the first byte of the field (in network byte order) relative to 'base'."
        },
        "size": {
          "type": "integer",
          "description": "Size of the field in bytes. Valid values: 1-4."
        }
      },
      "type": "object",
      "required": [
        "base",
        "mask",
        "name",
        "offset",
        "size"
      ]
    },
    "google-native:compute/beta:SecuritySettings": {
      "description": "The authentication and authorization settings for a BackendService.",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use clientTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use clientTlsPolicy instead."
        },
        "awsV4Authentication": {
          "$ref": "#/types/google-native:compute%2Fbeta:AWSV4Signature",
          "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication. Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service's backends. clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left blank, communications are not encrypted."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate's subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service. Note that the contents of the server certificate's subjectAltName field are configured by the Public Key Infrastructure which provisions server identities. Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode)."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SecuritySettingsResponse": {
      "description": "The authentication and authorization settings for a BackendService.",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use clientTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use clientTlsPolicy instead."
        },
        "awsV4Authentication": {
          "$ref": "#/types/google-native:compute%2Fbeta:AWSV4SignatureResponse",
          "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication. Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service's backends. clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left blank, communications are not encrypted."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate's subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service. Note that the contents of the server certificate's subjectAltName field are configured by the Public Key Infrastructure which provisions server identities. Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode)."
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "awsV4Authentication",
        "clientTlsPolicy",
        "subjectAltNames"
      ]
    },
    "google-native:compute/beta:ServerBinding": {
      "properties": {
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:ServerBindingType"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ServerBindingResponse": {
      "properties": {
        "type": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:compute/beta:ServerBindingType": {
      "type": "string",
      "enum": [
        {
          "name": "RestartNodeOnAnyServer",
          "description": "Node may associate with any physical server over its lifetime.",
          "value": "RESTART_NODE_ON_ANY_SERVER"
        },
        {
          "name": "RestartNodeOnMinimalServers",
          "description": "Node may associate with minimal physical servers over its lifetime.",
          "value": "RESTART_NODE_ON_MINIMAL_SERVERS"
        },
        {
          "name": "ServerBindingTypeUnspecified",
          "value": "SERVER_BINDING_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:ServiceAccount": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ServiceAccountResponse": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account."
        }
      },
      "type": "object",
      "required": [
        "email",
        "scopes"
      ]
    },
    "google-native:compute/beta:ServiceAttachmentConnectedEndpointResponse": {
      "description": "[Output Only] A connection connected to this service attachment.",
      "properties": {
        "consumerNetwork": {
          "type": "string",
          "description": "The url of the consumer network."
        },
        "endpoint": {
          "type": "string",
          "description": "The url of a connected endpoint."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the connected endpoint."
        },
        "status": {
          "type": "string",
          "description": "The status of a connected endpoint to this service attachment."
        }
      },
      "type": "object",
      "required": [
        "consumerNetwork",
        "endpoint",
        "pscConnectionId",
        "status"
      ]
    },
    "google-native:compute/beta:ServiceAttachmentConnectionPreference": {
      "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules.",
      "type": "string",
      "enum": [
        {
          "name": "AcceptAutomatic",
          "value": "ACCEPT_AUTOMATIC"
        },
        {
          "name": "AcceptManual",
          "value": "ACCEPT_MANUAL"
        },
        {
          "name": "ConnectionPreferenceUnspecified",
          "value": "CONNECTION_PREFERENCE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:ServiceAttachmentConsumerProjectLimit": {
      "properties": {
        "connectionLimit": {
          "type": "integer",
          "description": "The value of the limit to set."
        },
        "networkUrl": {
          "type": "string",
          "description": "The network URL for the network to set the limit for."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number for the project to set the limit for."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ServiceAttachmentConsumerProjectLimitResponse": {
      "properties": {
        "connectionLimit": {
          "type": "integer",
          "description": "The value of the limit to set."
        },
        "networkUrl": {
          "type": "string",
          "description": "The network URL for the network to set the limit for."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number for the project to set the limit for."
        }
      },
      "type": "object",
      "required": [
        "connectionLimit",
        "networkUrl",
        "projectIdOrNum"
      ]
    },
    "google-native:compute/beta:ServiceAttachmentTunnelingConfig": {
      "description": "Use to configure this PSC connection in tunneling mode. In tunneling mode traffic from consumer to producer will be encapsulated as it crosses the VPC boundary and traffic from producer to consumer will be decapsulated in the same manner.",
      "properties": {
        "encapsulationProfile": {
          "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentTunnelingConfigEncapsulationProfile",
          "description": "Specify the encapsulation protocol and what metadata to include in incoming encapsulated packet headers."
        },
        "routingMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentTunnelingConfigRoutingMode",
          "description": "How this Service Attachment will treat traffic sent to the tunnel_ip, destined for the consumer network."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ServiceAttachmentTunnelingConfigEncapsulationProfile": {
      "description": "Specify the encapsulation protocol and what metadata to include in incoming encapsulated packet headers.",
      "type": "string",
      "enum": [
        {
          "name": "GeneveSecurityV1",
          "description": "Use GENEVE encapsulation protocol and include the SECURITY_V1 set of GENEVE headers.",
          "value": "GENEVE_SECURITY_V1"
        },
        {
          "name": "UnspecifiedEncapsulationProfile",
          "value": "UNSPECIFIED_ENCAPSULATION_PROFILE"
        }
      ]
    },
    "google-native:compute/beta:ServiceAttachmentTunnelingConfigResponse": {
      "description": "Use to configure this PSC connection in tunneling mode. In tunneling mode traffic from consumer to producer will be encapsulated as it crosses the VPC boundary and traffic from producer to consumer will be decapsulated in the same manner.",
      "properties": {
        "encapsulationProfile": {
          "type": "string",
          "description": "Specify the encapsulation protocol and what metadata to include in incoming encapsulated packet headers."
        },
        "routingMode": {
          "type": "string",
          "description": "How this Service Attachment will treat traffic sent to the tunnel_ip, destined for the consumer network."
        }
      },
      "type": "object",
      "required": [
        "encapsulationProfile",
        "routingMode"
      ]
    },
    "google-native:compute/beta:ServiceAttachmentTunnelingConfigRoutingMode": {
      "description": "How this Service Attachment will treat traffic sent to the tunnel_ip, destined for the consumer network.",
      "type": "string",
      "enum": [
        {
          "name": "PacketInjection",
          "description": "Traffic sent to this service attachment will be reinjected into the consumer network.",
          "value": "PACKET_INJECTION"
        },
        {
          "name": "StandardRouting",
          "description": "Response traffic, after de-encapsulation, will be returned to the client.",
          "value": "STANDARD_ROUTING"
        },
        {
          "name": "UnspecifiedRoutingMode",
          "value": "UNSPECIFIED_ROUTING_MODE"
        }
      ]
    },
    "google-native:compute/beta:ShareSettings": {
      "description": "The share setting for reservations and sole tenancy node groups.",
      "properties": {
        "projectMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of project id and project config. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A List of Project names to specify consumer projects for this shared-reservation. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "shareType": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsShareType",
          "description": "Type of sharing for this shared-reservation"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ShareSettingsResponse": {
      "description": "The share setting for reservations and sole tenancy node groups.",
      "properties": {
        "projectMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of project id and project config. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A List of Project names to specify consumer projects for this shared-reservation. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "shareType": {
          "type": "string",
          "description": "Type of sharing for this shared-reservation"
        }
      },
      "type": "object",
      "required": [
        "projectMap",
        "projects",
        "shareType"
      ]
    },
    "google-native:compute/beta:ShareSettingsShareType": {
      "description": "Type of sharing for this shared-reservation",
      "type": "string",
      "enum": [
        {
          "name": "Local",
          "description": "Default value.",
          "value": "LOCAL"
        },
        {
          "name": "Organization",
          "description": "Shared-reservation is open to entire Organization",
          "value": "ORGANIZATION"
        },
        {
          "name": "ShareTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "SHARE_TYPE_UNSPECIFIED"
        },
        {
          "name": "SpecificProjects",
          "description": "Shared-reservation is open to specific projects",
          "value": "SPECIFIC_PROJECTS"
        }
      ]
    },
    "google-native:compute/beta:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:compute/beta:ShieldedInstanceIntegrityPolicy": {
      "description": "The policy describes the baseline against which Instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ShieldedInstanceIntegrityPolicyResponse": {
      "description": "The policy describes the baseline against which Instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object",
      "required": [
        "updateAutoLearnPolicy"
      ]
    },
    "google-native:compute/beta:ShieldedVmConfig": {
      "description": "A set of Shielded VM options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ShieldedVmConfigResponse": {
      "description": "A set of Shielded VM options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:compute/beta:ShieldedVmIntegrityPolicy": {
      "description": "The policy describes the baseline against which VM instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:ShieldedVmIntegrityPolicyResponse": {
      "description": "The policy describes the baseline against which VM instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object",
      "required": [
        "updateAutoLearnPolicy"
      ]
    },
    "google-native:compute/beta:SnapshotSnapshotType": {
      "description": "Indicates the type of the snapshot.",
      "type": "string",
      "enum": [
        {
          "name": "Archive",
          "value": "ARCHIVE"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/beta:SourceDiskEncryptionKey": {
      "properties": {
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the disk attached to the source instance. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SourceDiskEncryptionKeyResponse": {
      "properties": {
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the disk attached to the source instance. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object",
      "required": [
        "diskEncryptionKey",
        "sourceDisk"
      ]
    },
    "google-native:compute/beta:SourceInstanceParams": {
      "description": "A specification of the parameters to use when creating the instance template from a source instance.",
      "properties": {
        "diskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:DiskInstantiationConfig"
          },
          "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, the source images for each disk will be used. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SourceInstanceParamsResponse": {
      "description": "A specification of the parameters to use when creating the instance template from a source instance.",
      "properties": {
        "diskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:DiskInstantiationConfigResponse"
          },
          "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, the source images for each disk will be used. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes."
        }
      },
      "type": "object",
      "required": [
        "diskConfigs"
      ]
    },
    "google-native:compute/beta:SourceInstancePropertiesResponse": {
      "description": "DEPRECATED: Please use compute#instanceProperties instead. New properties will not be added to this field.",
      "properties": {
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on this machine image to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the instance created from this machine image should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from this machine image."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SavedAttachedDiskResponse"
          },
          "description": "An array of disks that are associated with the instances that are created from this machine image."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfigResponse"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from this machine image."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from this machine image."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from this machine image."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:MetadataResponse",
          "description": "The metadata key/value pairs to assign to instances that are created from this machine image. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances created from this machine image. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkInterfaceResponse"
          },
          "description": "An array of network access configurations for this interface."
        },
        "postKeyRevocationActionType": {
          "type": "string",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fbeta:SchedulingResponse",
          "description": "Specifies the scheduling options for the instances that are created from this machine image."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAccountResponse"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this machine image. Use metadata queries to obtain the access tokens for these instances."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fbeta:TagsResponse",
          "description": "A list of tags to apply to the instances that are created from this machine image. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "canIpForward",
        "deletionProtection",
        "description",
        "disks",
        "guestAccelerators",
        "keyRevocationActionType",
        "labels",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "networkInterfaces",
        "postKeyRevocationActionType",
        "scheduling",
        "serviceAccounts",
        "tags"
      ]
    },
    "google-native:compute/beta:SslCertificateManagedSslCertificate": {
      "description": "Configuration and status of a managed SSL certificate.",
      "properties": {
        "domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The domains for which a managed SSL certificate will be generated. Each Google-managed SSL certificate supports up to the [maximum number of domains per Google-managed SSL certificate](/load-balancing/docs/quotas#ssl_certificates)."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SslCertificateManagedSslCertificateResponse": {
      "description": "Configuration and status of a managed SSL certificate.",
      "properties": {
        "domainStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Output only] Detailed statuses of the domains specified for managed certificate resource."
        },
        "domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The domains for which a managed SSL certificate will be generated. Each Google-managed SSL certificate supports up to the [maximum number of domains per Google-managed SSL certificate](/load-balancing/docs/quotas#ssl_certificates)."
        },
        "status": {
          "type": "string",
          "description": "[Output only] Status of the managed certificate resource."
        }
      },
      "type": "object",
      "required": [
        "domainStatus",
        "domains",
        "status"
      ]
    },
    "google-native:compute/beta:SslCertificateSelfManagedSslCertificate": {
      "description": "Configuration and status of a self-managed SSL certificate.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "privateKey": {
          "type": "string",
          "description": "A write-only private key in PEM format. Only insert requests will include this field."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SslCertificateSelfManagedSslCertificateResponse": {
      "description": "Configuration and status of a self-managed SSL certificate.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "privateKey": {
          "type": "string",
          "description": "A write-only private key in PEM format. Only insert requests will include this field."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "privateKey"
      ]
    },
    "google-native:compute/beta:SslCertificateType": {
      "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
      "type": "string",
      "enum": [
        {
          "name": "Managed",
          "description": "Google-managed SSLCertificate.",
          "value": "MANAGED"
        },
        {
          "name": "SelfManaged",
          "description": "Certificate uploaded by user.",
          "value": "SELF_MANAGED"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/beta:SslPolicyMinTlsVersion": {
      "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
      "type": "string",
      "enum": [
        {
          "name": "Tls10",
          "description": "TLS 1.0",
          "value": "TLS_1_0"
        },
        {
          "name": "Tls11",
          "description": "TLS 1.1",
          "value": "TLS_1_1"
        },
        {
          "name": "Tls12",
          "description": "TLS 1.2",
          "value": "TLS_1_2"
        }
      ]
    },
    "google-native:compute/beta:SslPolicyProfile": {
      "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
      "type": "string",
      "enum": [
        {
          "name": "Compatible",
          "description": "Compatible profile. Allows the broadset set of clients, even those which support only out-of-date SSL features to negotiate with the load balancer.",
          "value": "COMPATIBLE"
        },
        {
          "name": "Custom",
          "description": "Custom profile. Allow only the set of allowed SSL features specified in the customFeatures field.",
          "value": "CUSTOM"
        },
        {
          "name": "Modern",
          "description": "Modern profile. Supports a wide set of SSL features, allowing modern clients to negotiate SSL with the load balancer.",
          "value": "MODERN"
        },
        {
          "name": "Restricted",
          "description": "Restricted profile. Supports a reduced set of SSL features, intended to meet stricter compliance requirements.",
          "value": "RESTRICTED"
        }
      ]
    },
    "google-native:compute/beta:SslPolicyWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/beta:SslPolicyWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SslPolicyWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/beta:StatefulPolicy": {
      "properties": {
        "preservedState": {
          "$ref": "#/types/google-native:compute%2Fbeta:StatefulPolicyPreservedState"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:StatefulPolicyPreservedState": {
      "description": "Configuration of preserved resources.",
      "properties": {
        "disks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Disks created on the instances that will be preserved on instance delete, update, etc. This map is keyed with the device names of the disks."
        },
        "externalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        },
        "internalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:StatefulPolicyPreservedStateResponse": {
      "description": "Configuration of preserved resources.",
      "properties": {
        "disks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Disks created on the instances that will be preserved on instance delete, update, etc. This map is keyed with the device names of the disks."
        },
        "externalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        },
        "internalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        }
      },
      "type": "object",
      "required": [
        "disks",
        "externalIPs",
        "internalIPs"
      ]
    },
    "google-native:compute/beta:StatefulPolicyResponse": {
      "properties": {
        "preservedState": {
          "$ref": "#/types/google-native:compute%2Fbeta:StatefulPolicyPreservedStateResponse"
        }
      },
      "type": "object",
      "required": [
        "preservedState"
      ]
    },
    "google-native:compute/beta:SubnetworkIpv6AccessType": {
      "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "VMs on this subnet will be assigned IPv6 addresses that are accessible via the Internet, as well as the VPC network.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "VMs on this subnet will be assigned IPv6 addresses that are only accessible over the VPC network.",
          "value": "INTERNAL"
        }
      ]
    },
    "google-native:compute/beta:SubnetworkLogConfig": {
      "description": "The available logging options for this subnetwork.",
      "properties": {
        "aggregationInterval": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkLogConfigAggregationInterval",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection."
        },
        "enable": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. Flow logging isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "filterExpr": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. The filter expression is used to define which VPC flow logs should be exported to Cloud Logging."
        },
        "flowSampling": {
          "type": "number",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkLogConfigMetadata",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA."
        },
        "metadataFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled and \"metadata\" was set to CUSTOM_METADATA."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SubnetworkLogConfigAggregationInterval": {
      "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection.",
      "type": "string",
      "enum": [
        {
          "name": "Interval10Min",
          "value": "INTERVAL_10_MIN"
        },
        {
          "name": "Interval15Min",
          "value": "INTERVAL_15_MIN"
        },
        {
          "name": "Interval1Min",
          "value": "INTERVAL_1_MIN"
        },
        {
          "name": "Interval30Sec",
          "value": "INTERVAL_30_SEC"
        },
        {
          "name": "Interval5Min",
          "value": "INTERVAL_5_MIN"
        },
        {
          "name": "Interval5Sec",
          "value": "INTERVAL_5_SEC"
        }
      ]
    },
    "google-native:compute/beta:SubnetworkLogConfigMetadata": {
      "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA.",
      "type": "string",
      "enum": [
        {
          "name": "CustomMetadata",
          "value": "CUSTOM_METADATA"
        },
        {
          "name": "ExcludeAllMetadata",
          "value": "EXCLUDE_ALL_METADATA"
        },
        {
          "name": "IncludeAllMetadata",
          "value": "INCLUDE_ALL_METADATA"
        }
      ]
    },
    "google-native:compute/beta:SubnetworkLogConfigResponse": {
      "description": "The available logging options for this subnetwork.",
      "properties": {
        "aggregationInterval": {
          "type": "string",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection."
        },
        "enable": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. Flow logging isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "filterExpr": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. The filter expression is used to define which VPC flow logs should be exported to Cloud Logging."
        },
        "flowSampling": {
          "type": "number",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported."
        },
        "metadata": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA."
        },
        "metadataFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled and \"metadata\" was set to CUSTOM_METADATA."
        }
      },
      "type": "object",
      "required": [
        "aggregationInterval",
        "enable",
        "filterExpr",
        "flowSampling",
        "metadata",
        "metadataFields"
      ]
    },
    "google-native:compute/beta:SubnetworkPrivateIpv6GoogleAccess": {
      "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch.",
      "type": "string",
      "enum": [
        {
          "name": "DisableGoogleAccess",
          "description": "Disable private IPv6 access to/from Google services.",
          "value": "DISABLE_GOOGLE_ACCESS"
        },
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        }
      ]
    },
    "google-native:compute/beta:SubnetworkPurpose": {
      "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
      "type": "string",
      "enum": [
        {
          "name": "GlobalManagedProxy",
          "description": "Subnet reserved for Global Envoy-based Load Balancing.",
          "value": "GLOBAL_MANAGED_PROXY"
        },
        {
          "name": "InternalHttpsLoadBalancer",
          "description": "Subnet reserved for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_HTTPS_LOAD_BALANCER"
        },
        {
          "name": "Private",
          "description": "Regular user created or automatically created subnet.",
          "value": "PRIVATE"
        },
        {
          "name": "PrivateNat",
          "description": "Subnetwork used as source range for Private NAT Gateways.",
          "value": "PRIVATE_NAT"
        },
        {
          "name": "PrivateRfc1918",
          "description": "Regular user created or automatically created subnet.",
          "value": "PRIVATE_RFC_1918"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "Subnetworks created for Private Service Connect in the producer network.",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "RegionalManagedProxy",
          "description": "Subnetwork used for Regional Envoy-based Load Balancing.",
          "value": "REGIONAL_MANAGED_PROXY"
        }
      ]
    },
    "google-native:compute/beta:SubnetworkRole": {
      "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "description": "The ACTIVE subnet that is currently used.",
          "value": "ACTIVE"
        },
        {
          "name": "Backup",
          "description": "The BACKUP subnet that could be promoted to ACTIVE.",
          "value": "BACKUP"
        }
      ]
    },
    "google-native:compute/beta:SubnetworkSecondaryRange": {
      "description": "Represents a secondary IP range of a subnetwork.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported. The range can be any range listed in the Valid ranges list."
        },
        "rangeName": {
          "type": "string",
          "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
        },
        "reservedInternalRange": {
          "type": "string",
          "description": "The URL of the reserved internal range."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SubnetworkSecondaryRangeResponse": {
      "description": "Represents a secondary IP range of a subnetwork.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported. The range can be any range listed in the Valid ranges list."
        },
        "rangeName": {
          "type": "string",
          "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
        },
        "reservedInternalRange": {
          "type": "string",
          "description": "The URL of the reserved internal range."
        }
      },
      "type": "object",
      "required": [
        "ipCidrRange",
        "rangeName",
        "reservedInternalRange"
      ]
    },
    "google-native:compute/beta:SubnetworkStackType": {
      "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "New VMs in this subnet can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "New VMs in this subnet will only be assigned IPv4 addresses.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/beta:Subsetting": {
      "description": "Subsetting configuration for this BackendService. Currently this is applicable only for Internal TCP/UDP load balancing, Internal HTTP(S) load balancing and Traffic Director.",
      "properties": {
        "policy": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubsettingPolicy"
        },
        "subsetSize": {
          "type": "integer",
          "description": "The number of backends per backend group assigned to each proxy instance or each service mesh client. An input parameter to the `CONSISTENT_HASH_SUBSETTING` algorithm. Can only be set if `policy` is set to `CONSISTENT_HASH_SUBSETTING`. Can only be set if load balancing scheme is `INTERNAL_MANAGED` or `INTERNAL_SELF_MANAGED`. `subset_size` is optional for Internal HTTP(S) load balancing and required for Traffic Director. If you do not provide this value, Cloud Load Balancing will calculate it dynamically to optimize the number of proxies/clients visible to each backend and vice versa. Must be greater than 0. If `subset_size` is larger than the number of backends/endpoints, then subsetting is disabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:SubsettingPolicy": {
      "type": "string",
      "enum": [
        {
          "name": "ConsistentHashSubsetting",
          "description": "Subsetting based on consistent hashing. For Traffic Director, the number of backends per backend group (the subset size) is based on the `subset_size` parameter. For Internal HTTP(S) load balancing, the number of backends per backend group (the subset size) is dynamically adjusted in two cases: - As the number of proxy instances participating in Internal HTTP(S) load balancing increases, the subset size decreases. - When the total number of backends in a network exceeds the capacity of a single proxy instance, subset sizes are reduced automatically for each service that has backend subsetting enabled.",
          "value": "CONSISTENT_HASH_SUBSETTING"
        },
        {
          "name": "None",
          "description": "No Subsetting. Clients may open connections and send traffic to all backends of this backend service. This can lead to performance issues if there is substantial imbalance in the count of clients and backends.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/beta:SubsettingResponse": {
      "description": "Subsetting configuration for this BackendService. Currently this is applicable only for Internal TCP/UDP load balancing, Internal HTTP(S) load balancing and Traffic Director.",
      "properties": {
        "policy": {
          "type": "string"
        },
        "subsetSize": {
          "type": "integer",
          "description": "The number of backends per backend group assigned to each proxy instance or each service mesh client. An input parameter to the `CONSISTENT_HASH_SUBSETTING` algorithm. Can only be set if `policy` is set to `CONSISTENT_HASH_SUBSETTING`. Can only be set if load balancing scheme is `INTERNAL_MANAGED` or `INTERNAL_SELF_MANAGED`. `subset_size` is optional for Internal HTTP(S) load balancing and required for Traffic Director. If you do not provide this value, Cloud Load Balancing will calculate it dynamically to optimize the number of proxies/clients visible to each backend and vice versa. Must be greater than 0. If `subset_size` is larger than the number of backends/endpoints, then subsetting is disabled."
        }
      },
      "type": "object",
      "required": [
        "policy",
        "subsetSize"
      ]
    },
    "google-native:compute/beta:TCPHealthCheck": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fbeta:TCPHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fbeta:TCPHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based TCP health check. In addition to establishing a TCP connection, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:TCPHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/beta:TCPHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/beta:TCPHealthCheckResponse": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based TCP health check. In addition to establishing a TCP connection, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object",
      "required": [
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "request",
        "response"
      ]
    },
    "google-native:compute/beta:Tags": {
      "description": "A set of instance tags.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:TagsResponse": {
      "description": "A set of instance tags.",
      "properties": {
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this request, which is essentially a hash of the tags' contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update tags. You must always provide an up-to-date fingerprint hash in order to update or change tags. To see the latest fingerprint, make get() request to the instance."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "items"
      ]
    },
    "google-native:compute/beta:TargetHttpsProxyQuicOverride": {
      "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "The load balancer will not attempt to negotiate QUIC with clients.",
          "value": "DISABLE"
        },
        {
          "name": "Enable",
          "description": "The load balancer will attempt to negotiate QUIC with clients.",
          "value": "ENABLE"
        },
        {
          "name": "None",
          "description": "No overrides to the default QUIC policy. This option is implicit if no QUIC override has been specified in the request.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/beta:TargetInstanceNatPolicy": {
      "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance.",
      "type": "string",
      "enum": [
        {
          "name": "NoNat",
          "description": "No NAT performed.",
          "value": "NO_NAT"
        }
      ]
    },
    "google-native:compute/beta:TargetPoolSessionAffinity": {
      "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/beta:TargetSslProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/beta:TargetTcpProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/beta:Uint128Response": {
      "properties": {
        "high": {
          "type": "string"
        },
        "low": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "high",
        "low"
      ]
    },
    "google-native:compute/beta:UpcomingMaintenanceResponse": {
      "description": "Upcoming Maintenance notification information.",
      "properties": {
        "canReschedule": {
          "type": "boolean",
          "description": "Indicates if the maintenance can be customer triggered."
        },
        "latestWindowStartTime": {
          "type": "string",
          "description": "The latest time for the planned maintenance window to start. This timestamp value is in RFC3339 text format."
        },
        "maintenanceStatus": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "description": "Defines the type of maintenance."
        },
        "windowEndTime": {
          "type": "string",
          "description": "The time by which the maintenance disruption will be completed. This timestamp value is in RFC3339 text format."
        },
        "windowStartTime": {
          "type": "string",
          "description": "The current start time of the maintenance window. This timestamp value is in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "canReschedule",
        "latestWindowStartTime",
        "maintenanceStatus",
        "type",
        "windowEndTime",
        "windowStartTime"
      ]
    },
    "google-native:compute/beta:UrlMapTest": {
      "description": "Message for the expected URL mappings.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of this test case."
        },
        "expectedOutputUrl": {
          "type": "string",
          "description": "The expected output URL evaluated by the load balancer containing the scheme, host, path and query parameters. For 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. For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to HTTPS. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters. expectedOutputUrl is optional when service is specified."
        },
        "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. expectedRedirectResponseCode cannot be set when service is set."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:UrlMapTestHeader"
          },
          "description": "HTTP headers for this request. If headers contains a host header, then host must also match the header value."
        },
        "host": {
          "type": "string",
          "description": "Host portion of the URL. If headers contains a host header, then host must also match the header value."
        },
        "path": {
          "type": "string",
          "description": "Path portion of the URL."
        },
        "service": {
          "type": "string",
          "description": "Expected BackendService or BackendBucket resource the given URL should be mapped to. The service field cannot be set if expectedRedirectResponseCode is set."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:UrlMapTestHeader": {
      "description": "HTTP headers used in UrlMapTests.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Header name."
        },
        "value": {
          "type": "string",
          "description": "Header value."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:UrlMapTestHeaderResponse": {
      "description": "HTTP headers used in UrlMapTests.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Header name."
        },
        "value": {
          "type": "string",
          "description": "Header value."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/beta:UrlMapTestResponse": {
      "description": "Message for the expected URL mappings.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of this test case."
        },
        "expectedOutputUrl": {
          "type": "string",
          "description": "The expected output URL evaluated by the load balancer containing the scheme, host, path and query parameters. For 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. For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to HTTPS. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters. expectedOutputUrl is optional when service is specified."
        },
        "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. expectedRedirectResponseCode cannot be set when service is set."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:UrlMapTestHeaderResponse"
          },
          "description": "HTTP headers for this request. If headers contains a host header, then host must also match the header value."
        },
        "host": {
          "type": "string",
          "description": "Host portion of the URL. If headers contains a host header, then host must also match the header value."
        },
        "path": {
          "type": "string",
          "description": "Path portion of the URL."
        },
        "service": {
          "type": "string",
          "description": "Expected BackendService or BackendBucket resource the given URL should be mapped to. The service field cannot be set if expectedRedirectResponseCode is set."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expectedOutputUrl",
        "expectedRedirectResponseCode",
        "headers",
        "host",
        "path",
        "service"
      ]
    },
    "google-native:compute/beta:UrlRewrite": {
      "description": "The spec for modifying the path before sending the request to the matched backend service.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite. The value must be from 1 to 255 characters."
        },
        "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. The value must be from 1 to 1024 characters."
        },
        "pathTemplateRewrite": {
          "type": "string",
          "description": " If specified, the pattern rewrites the URL path (based on the :path header) using the HTTP template syntax. A corresponding path_template_match must be specified. Any template variables must exist in the path_template_match field. - -At least one variable must be specified in the path_template_match field - You can omit variables from the rewritten URL - The * and ** operators cannot be matched unless they have a corresponding variable name - e.g. {format=*} or {var=**}. For example, a path_template_match of /static/{format=**} could be rewritten as /static/content/{format} to prefix /content to the URL. Variables can also be re-ordered in a rewrite, so that /{country}/{format}/{suffix=**} can be rewritten as /content/{format}/{country}/{suffix}. At least one non-empty routeRules[].matchRules[].path_template_match is required. Only one of path_prefix_rewrite or path_template_rewrite may be specified."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:UrlRewriteResponse": {
      "description": "The spec for modifying the path before sending the request to the matched backend service.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite. The value must be from 1 to 255 characters."
        },
        "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. The value must be from 1 to 1024 characters."
        },
        "pathTemplateRewrite": {
          "type": "string",
          "description": " If specified, the pattern rewrites the URL path (based on the :path header) using the HTTP template syntax. A corresponding path_template_match must be specified. Any template variables must exist in the path_template_match field. - -At least one variable must be specified in the path_template_match field - You can omit variables from the rewritten URL - The * and ** operators cannot be matched unless they have a corresponding variable name - e.g. {format=*} or {var=**}. For example, a path_template_match of /static/{format=**} could be rewritten as /static/content/{format} to prefix /content to the URL. Variables can also be re-ordered in a rewrite, so that /{country}/{format}/{suffix=**} can be rewritten as /content/{format}/{country}/{suffix}. At least one non-empty routeRules[].matchRules[].path_template_match is required. Only one of path_prefix_rewrite or path_template_rewrite may be specified."
        }
      },
      "type": "object",
      "required": [
        "hostRewrite",
        "pathPrefixRewrite",
        "pathTemplateRewrite"
      ]
    },
    "google-native:compute/beta:VpnGatewayGatewayIpVersion": {
      "description": "The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "description": "Every HA-VPN gateway interface is configured with an IPv4 address.",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "description": "Every HA-VPN gateway interface is configured with an IPv6 address.",
          "value": "IPV6"
        }
      ]
    },
    "google-native:compute/beta:VpnGatewayStackType": {
      "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "Enable VPN gateway with both IPv4 and IPv6 protocols.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "Enable VPN gateway with only IPv4 protocol.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/beta:VpnGatewayVpnGatewayInterface": {
      "description": "A VPN gateway interface.",
      "properties": {
        "interconnectAttachment": {
          "type": "string",
          "description": "URL of the VLAN attachment (interconnectAttachment) resource for this VPN gateway interface. When the value of this field is present, the VPN gateway is used for HA VPN over Cloud Interconnect; all egress or ingress traffic for this VPN gateway interface goes through the specified VLAN attachment resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:VpnGatewayVpnGatewayInterfaceResponse": {
      "description": "A VPN gateway interface.",
      "properties": {
        "interconnectAttachment": {
          "type": "string",
          "description": "URL of the VLAN attachment (interconnectAttachment) resource for this VPN gateway interface. When the value of this field is present, the VPN gateway is used for HA VPN over Cloud Interconnect; all egress or ingress traffic for this VPN gateway interface goes through the specified VLAN attachment resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for this VPN interface associated with the VPN gateway. The IP address could be either a regional external IP address or a regional internal IP address. The two IP addresses for a VPN gateway must be all regional external or regional internal IP addresses. There cannot be a mix of regional external IP addresses and regional internal IP addresses. For HA VPN over Cloud Interconnect, the IP addresses for both interfaces could either be regional internal IP addresses or regional external IP addresses. For regular (non HA VPN over Cloud Interconnect) HA VPN tunnels, the IP address must be a regional external IP address."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address for this VPN interface associated with the VPN gateway. The IPv6 address must be a regional external IPv6 address. The format is RFC 5952 format (e.g. 2001:db8::2d9:51:0:0)."
        }
      },
      "type": "object",
      "required": [
        "interconnectAttachment",
        "ipAddress",
        "ipv6Address"
      ]
    },
    "google-native:compute/beta:WeightedBackendService": {
      "description": "In contrast to a single BackendService in HttpRouteAction to which all matching traffic is directed to, WeightedBackendService allows traffic to be split across multiple backend services. The volume of traffic for each backend service is proportional to the weight specified in each WeightedBackendService",
      "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."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. headerAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) . The 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. The value must be from 0 to 1000."
        }
      },
      "type": "object"
    },
    "google-native:compute/beta:WeightedBackendServiceResponse": {
      "description": "In contrast to a single BackendService in HttpRouteAction to which all matching traffic is directed to, WeightedBackendService allows traffic to be split across multiple backend services. The volume of traffic for each backend service is proportional to the weight specified in each WeightedBackendService",
      "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."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. headerAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) . The 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. The value must be from 0 to 1000."
        }
      },
      "type": "object",
      "required": [
        "backendService",
        "headerAction",
        "weight"
      ]
    },
    "google-native:compute/v1:AWSV4Signature": {
      "description": "Contains the configurations necessary to generate a signature for access to private storage buckets that support Signature Version 4 for authentication. The service name for generating the authentication header will always default to 's3'.",
      "properties": {
        "accessKey": {
          "type": "string",
          "description": "The access key used for s3 bucket authentication. Required 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. @InputOnly"
        },
        "accessKeyId": {
          "type": "string",
          "description": "The identifier of an access key used for s3 bucket authentication."
        },
        "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."
        },
        "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. For example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AWSV4SignatureResponse": {
      "description": "Contains the configurations necessary to generate a signature for access to private storage buckets that support Signature Version 4 for authentication. The service name for generating the authentication header will always default to 's3'.",
      "properties": {
        "accessKey": {
          "type": "string",
          "description": "The access key used for s3 bucket authentication. Required 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. @InputOnly"
        },
        "accessKeyId": {
          "type": "string",
          "description": "The identifier of an access key used for s3 bucket authentication."
        },
        "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."
        },
        "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. For example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI."
        }
      },
      "type": "object",
      "required": [
        "accessKey",
        "accessKeyId",
        "accessKeyVersion",
        "originRegion"
      ]
    },
    "google-native:compute/v1:AcceleratorConfig": {
      "description": "A specification of the type and number of accelerator cards attached to the instance.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the guest accelerator cards exposed to this instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AcceleratorConfigResponse": {
      "description": "A specification of the type and number of accelerator cards attached to the instance.",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the guest accelerator cards exposed to this instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType"
      ]
    },
    "google-native:compute/v1:AccessConfig": {
      "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
      "properties": {
        "externalIpv6": {
          "type": "string",
          "description": "Applies to ipv6AccessConfigs only. 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."
        },
        "externalIpv6PrefixLength": {
          "type": "integer",
          "description": "Applies to ipv6AccessConfigs only. The prefix length of the external IPv6 range."
        },
        "name": {
          "type": "string",
          "description": "The name of this access configuration. In accessConfigs (IPv4), the default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access. In ipv6AccessConfigs, the recommend name is External IPv6."
        },
        "natIP": {
          "type": "string",
          "description": "Applies to accessConfigs (IPv4) only. An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fv1:AccessConfigNetworkTier",
          "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP."
        },
        "publicPtrDomainName": {
          "type": "string",
          "description": "The DNS domain name for the public PTR record. You can set this field only if the `setPublicPtr` field is enabled in accessConfig. If this field is unspecified in ipv6AccessConfig, a default PTR record will be createc for first IP in associated external IPv6 range."
        },
        "setPublicPtr": {
          "type": "boolean",
          "description": "Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name. This field is not used in ipv6AccessConfig. A default PTR record will be created if the VM has external IPv6 range associated."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:AccessConfigType",
          "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AccessConfigNetworkTier": {
      "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/v1:AccessConfigResponse": {
      "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
      "properties": {
        "externalIpv6": {
          "type": "string",
          "description": "Applies to ipv6AccessConfigs only. 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."
        },
        "externalIpv6PrefixLength": {
          "type": "integer",
          "description": "Applies to ipv6AccessConfigs only. The prefix length of the external IPv6 range."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#accessConfig for access configs."
        },
        "name": {
          "type": "string",
          "description": "The name of this access configuration. In accessConfigs (IPv4), the default and recommended name is External NAT, but you can use any arbitrary string, such as My external IP or Network Access. In ipv6AccessConfigs, the recommend name is External IPv6."
        },
        "natIP": {
          "type": "string",
          "description": "Applies to accessConfigs (IPv4) only. An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP."
        },
        "publicPtrDomainName": {
          "type": "string",
          "description": "The DNS domain name for the public PTR record. You can set this field only if the `setPublicPtr` field is enabled in accessConfig. If this field is unspecified in ipv6AccessConfig, a default PTR record will be createc for first IP in associated external IPv6 range."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this access config."
        },
        "setPublicPtr": {
          "type": "boolean",
          "description": "Specifies whether a public DNS 'PTR' record should be created to map the external IP address of the instance to a DNS domain name. This field is not used in ipv6AccessConfig. A default PTR record will be created if the VM has external IPv6 range associated."
        },
        "type": {
          "type": "string",
          "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6."
        }
      },
      "type": "object",
      "required": [
        "externalIpv6",
        "externalIpv6PrefixLength",
        "kind",
        "name",
        "natIP",
        "networkTier",
        "publicPtrDomainName",
        "securityPolicy",
        "setPublicPtr",
        "type"
      ]
    },
    "google-native:compute/v1:AccessConfigType": {
      "description": "The type of configuration. In accessConfigs (IPv4), the default and only option is ONE_TO_ONE_NAT. In ipv6AccessConfigs, the default and only option is DIRECT_IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "DirectIpv6",
          "value": "DIRECT_IPV6"
        },
        {
          "name": "OneToOneNat",
          "value": "ONE_TO_ONE_NAT"
        }
      ]
    },
    "google-native:compute/v1:AddressAddressType": {
      "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "A publicly visible external IP address.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "A private network IP address, for use with an Instance or Internal Load Balancer forwarding rule.",
          "value": "INTERNAL"
        },
        {
          "name": "UnspecifiedType",
          "value": "UNSPECIFIED_TYPE"
        }
      ]
    },
    "google-native:compute/v1:AddressIpVersion": {
      "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/v1:AddressIpv6EndpointType": {
      "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
      "type": "string",
      "enum": [
        {
          "name": "Netlb",
          "description": "Reserved IPv6 address can be used on network load balancer.",
          "value": "NETLB"
        },
        {
          "name": "Vm",
          "description": "Reserved IPv6 address can be used on VM.",
          "value": "VM"
        }
      ]
    },
    "google-native:compute/v1:AddressNetworkTier": {
      "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/v1:AddressPurpose": {
      "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
      "type": "string",
      "enum": [
        {
          "name": "DnsResolver",
          "description": "DNS resolver address in the subnetwork.",
          "value": "DNS_RESOLVER"
        },
        {
          "name": "GceEndpoint",
          "description": "VM internal/alias IP, Internal LB service IP, etc.",
          "value": "GCE_ENDPOINT"
        },
        {
          "name": "IpsecInterconnect",
          "description": "A regional internal IP address range reserved for the VLAN attachment that is used in HA VPN over Cloud Interconnect. This regional internal IP address range must not overlap with any IP address range of subnet/route in the VPC network and its peering networks. After the VLAN attachment is created with the reserved IP address range, when creating a new VPN gateway, its interface IP address is allocated from the associated VLAN attachment’s IP address range.",
          "value": "IPSEC_INTERCONNECT"
        },
        {
          "name": "NatAuto",
          "description": "External IP automatically reserved for Cloud NAT.",
          "value": "NAT_AUTO"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "A private network IP address that can be used to configure Private Service Connect. This purpose can be specified only for GLOBAL addresses of Type INTERNAL",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "A regional internal IP address range reserved for Serverless.",
          "value": "SERVERLESS"
        },
        {
          "name": "SharedLoadbalancerVip",
          "description": "A private network IP address that can be shared by multiple Internal Load Balancer forwarding rules.",
          "value": "SHARED_LOADBALANCER_VIP"
        },
        {
          "name": "VpcPeering",
          "description": "IP range for peer networks.",
          "value": "VPC_PEERING"
        }
      ]
    },
    "google-native:compute/v1:AdvancedMachineFeatures": {
      "description": "Specifies options for controlling advanced machine features. Options that would traditionally be configured in a BIOS belong here. Features that require operating system support may have corresponding entries in the GuestOsFeatures of an Image (e.g., whether or not the OS in the Image supports nested virtualization being enabled or disabled).",
      "properties": {
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Whether to enable nested virtualization or not (default is false)."
        },
        "enableUefiNetworking": {
          "type": "boolean",
          "description": "Whether to enable UEFI networking for instance creation."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AdvancedMachineFeaturesResponse": {
      "description": "Specifies options for controlling advanced machine features. Options that would traditionally be configured in a BIOS belong here. Features that require operating system support may have corresponding entries in the GuestOsFeatures of an Image (e.g., whether or not the OS in the Image supports nested virtualization being enabled or disabled).",
      "properties": {
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Whether to enable nested virtualization or not (default is false)."
        },
        "enableUefiNetworking": {
          "type": "boolean",
          "description": "Whether to enable UEFI networking for instance creation."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "enableNestedVirtualization",
        "enableUefiNetworking",
        "threadsPerCore",
        "visibleCoreCount"
      ]
    },
    "google-native:compute/v1:AliasIpRange": {
      "description": "An alias IP range attached to an instance's network interface.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The IP alias ranges to allocate for this interface. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24)."
        },
        "subnetworkRangeName": {
          "type": "string",
          "description": "The name of a subnetwork secondary IP range from which to allocate an IP alias range. If not specified, the primary range of the subnetwork is used."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AliasIpRangeResponse": {
      "description": "An alias IP range attached to an instance's network interface.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The IP alias ranges to allocate for this interface. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (such as 10.2.3.4), a netmask (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24)."
        },
        "subnetworkRangeName": {
          "type": "string",
          "description": "The name of a subnetwork secondary IP range from which to allocate an IP alias range. If not specified, the primary range of the subnetwork is used."
        }
      },
      "type": "object",
      "required": [
        "ipCidrRange",
        "subnetworkRangeName"
      ]
    },
    "google-native:compute/v1:AllocationResourceStatusResponse": {
      "description": "[Output Only] Contains output only fields.",
      "properties": {
        "specificSkuAllocation": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationResourceStatusSpecificSKUAllocationResponse",
          "description": "Allocation Properties of this reservation."
        }
      },
      "type": "object",
      "required": [
        "specificSkuAllocation"
      ]
    },
    "google-native:compute/v1:AllocationResourceStatusSpecificSKUAllocationResponse": {
      "description": "Contains Properties set for the reservation.",
      "properties": {
        "sourceInstanceTemplateId": {
          "type": "string",
          "description": "ID of the instance template used to populate reservation properties."
        }
      },
      "type": "object",
      "required": [
        "sourceInstanceTemplateId"
      ]
    },
    "google-native:compute/v1:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk": {
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface": {
      "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        }
      ]
    },
    "google-native:compute/v1:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskResponse": {
      "properties": {
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "interface"
      ]
    },
    "google-native:compute/v1:AllocationSpecificSKUAllocationReservedInstanceProperties": {
      "description": "Properties of the SKU instances being reserved. Next ID: 9",
      "properties": {
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfig"
          },
          "description": "Specifies accelerator type and count."
        },
        "localSsds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk"
          },
          "description": "Specifies amount of local ssd to reserve with each instance. The type of disk is local-ssd."
        },
        "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."
        },
        "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."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu platform the reservation."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AllocationSpecificSKUAllocationReservedInstancePropertiesResponse": {
      "description": "Properties of the SKU instances being reserved. Next ID: 9",
      "properties": {
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfigResponse"
          },
          "description": "Specifies accelerator type and count."
        },
        "localSsds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskResponse"
          },
          "description": "Specifies amount of local ssd to reserve with each instance. The type of disk is local-ssd."
        },
        "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."
        },
        "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."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu platform the reservation."
        }
      },
      "type": "object",
      "required": [
        "guestAccelerators",
        "localSsds",
        "locationHint",
        "machineType",
        "minCpuPlatform"
      ]
    },
    "google-native:compute/v1:AllocationSpecificSKUReservation": {
      "description": "This reservation type allows to pre allocate specific instance configuration. Next ID: 6",
      "properties": {
        "count": {
          "type": "string",
          "description": "Specifies the number of resources that are allocated."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUAllocationReservedInstanceProperties",
          "description": "The instance properties for the reservation."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies the instance template to create the reservation. If you use this field, you must exclude the instanceProperties field. This field is optional, and it can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AllocationSpecificSKUReservationResponse": {
      "description": "This reservation type allows to pre allocate specific instance configuration. Next ID: 6",
      "properties": {
        "assuredCount": {
          "type": "string",
          "description": "Indicates how many instances are actually usable currently."
        },
        "count": {
          "type": "string",
          "description": "Specifies the number of resources that are allocated."
        },
        "inUseCount": {
          "type": "string",
          "description": "Indicates how many instances are in use."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUAllocationReservedInstancePropertiesResponse",
          "description": "The instance properties for the reservation."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies the instance template to create the reservation. If you use this field, you must exclude the instanceProperties field. This field is optional, and it can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        }
      },
      "type": "object",
      "required": [
        "assuredCount",
        "count",
        "inUseCount",
        "instanceProperties",
        "sourceInstanceTemplate"
      ]
    },
    "google-native:compute/v1:AttachedDisk": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "Encrypts or decrypts a disk using a customer-supplied encryption key. If 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. If 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. If 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. Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in GB."
        },
        "forceAttach": {
          "type": "boolean",
          "description": "[Input Only] 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."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "initializeParams": {
          "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskInitializeParams",
          "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskInterface",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskMode",
          "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode."
        },
        "savedState": {
          "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskSavedState",
          "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api."
        },
        "source": {
          "type": "string",
          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks. Note that for InstanceTemplate, specify the disk name for zonal disk, and the URL for regional disk."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskType",
          "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AttachedDiskInitializeParams": {
      "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This field is persisted and returned for instanceTemplate and not returned in the context of instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskInitializeParamsArchitecture",
          "description": "The architecture of the attached disk. Valid values are arm64 or x86_64."
        },
        "description": {
          "type": "string",
          "description": "An optional description. Provide this property when creating the disk."
        },
        "diskName": {
          "type": "string",
          "description": "Specifies the disk name. If not specified, the default is to use the name of the instance. If a disk with the same name already exists in the given region, the existing disk is attached to the new instance and the new disk is not created."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB. The size must be at least 10 GB. If you specify a sourceImage, which is required for boot disks, the default size is the size of the sourceImage. If you do not specify a sourceImage, the default disk size is 500 GB."
        },
        "diskType": {
          "type": "string",
          "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/pd-standard For a full list of acceptable values, see Persistent disk types. If you specify this field when creating a VM, you can provide either the full or partial URL. For example, the following values are valid: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType If you specify this field when creating or updating an instance template or all-instances configuration, specify the type of the disk, not the URL. For example: pd-standard."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "onUpdateAction": {
          "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskInitializeParamsOnUpdateAction",
          "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk."
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required for each regional disk associated with the instance. Specify the URLs of the zones where the disk should be replicated to. You must provide exactly two replica zones, and one zone must be the same as the instance zone."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations. Specified using the full or partial URL. For instance template, specify only the resource policy name."
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family If the source image is deleted later, this field will not be set."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. InstanceTemplate and InstancePropertiesPatch 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."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: global/snapshots/my-backup If the source snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AttachedDiskInitializeParamsArchitecture": {
      "description": "The architecture of the attached disk. Valid values are arm64 or x86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/v1:AttachedDiskInitializeParamsOnUpdateAction": {
      "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk.",
      "type": "string",
      "enum": [
        {
          "name": "RecreateDisk",
          "description": "Always recreate the disk.",
          "value": "RECREATE_DISK"
        },
        {
          "name": "RecreateDiskIfSourceChanged",
          "description": "Recreate the disk if source (image, snapshot) of this disk is different from source of existing disk.",
          "value": "RECREATE_DISK_IF_SOURCE_CHANGED"
        },
        {
          "name": "UseExistingDisk",
          "description": "Use the existing disk, this is the default behaviour.",
          "value": "USE_EXISTING_DISK"
        }
      ]
    },
    "google-native:compute/v1:AttachedDiskInitializeParamsResponse": {
      "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This field is persisted and returned for instanceTemplate and not returned in the context of instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk. Valid values are arm64 or x86_64."
        },
        "description": {
          "type": "string",
          "description": "An optional description. Provide this property when creating the disk."
        },
        "diskName": {
          "type": "string",
          "description": "Specifies the disk name. If not specified, the default is to use the name of the instance. If a disk with the same name already exists in the given region, the existing disk is attached to the new instance and the new disk is not created."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Specifies the size of the disk in base-2 GB. The size must be at least 10 GB. If you specify a sourceImage, which is required for boot disks, the default size is the size of the sourceImage. If you do not specify a sourceImage, the default disk size is 500 GB."
        },
        "diskType": {
          "type": "string",
          "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/pd-standard For a full list of acceptable values, see Persistent disk types. If you specify this field when creating a VM, you can provide either the full or partial URL. For example, the following values are valid: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType If you specify this field when creating or updating an instance template or all-instances configuration, specify the type of the disk, not the URL. For example: pd-standard."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "onUpdateAction": {
          "type": "string",
          "description": "Specifies which action to take on instance update with this disk. Default is to use the existing disk."
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required for each regional disk associated with the instance. Specify the URLs of the zones where the disk should be replicated to. You must provide exactly two replica zones, and one zone must be the same as the instance zone."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations. Specified using the full or partial URL. For instance template, specify only the resource policy name."
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family If the source image is deleted later, this field will not be set."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. InstanceTemplate and InstancePropertiesPatch 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."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or initializeParams.sourceImage or disks.source is required except for local SSD. To create a disk with a snapshot that you created, specify the snapshot name in the following format: global/snapshots/my-backup If the source snapshot is deleted later, this field will not be set."
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "description",
        "diskName",
        "diskSizeGb",
        "diskType",
        "labels",
        "licenses",
        "onUpdateAction",
        "provisionedIops",
        "provisionedThroughput",
        "replicaZones",
        "resourceManagerTags",
        "resourcePolicies",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey"
      ]
    },
    "google-native:compute/v1:AttachedDiskInterface": {
      "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks.",
      "type": "string",
      "enum": [
        {
          "name": "Nvme",
          "value": "NVME"
        },
        {
          "name": "Scsi",
          "value": "SCSI"
        }
      ]
    },
    "google-native:compute/v1:AttachedDiskMode": {
      "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
      "type": "string",
      "enum": [
        {
          "name": "ReadOnly",
          "description": "Attaches this disk in read-only mode. Multiple virtual machines can use a disk in read-only mode at a time.",
          "value": "READ_ONLY"
        },
        {
          "name": "ReadWrite",
          "description": "*[Default]* Attaches this disk in read-write mode. Only one virtual machine at a time can be attached to a disk in read-write mode.",
          "value": "READ_WRITE"
        }
      ]
    },
    "google-native:compute/v1:AttachedDiskResponse": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk. Valid values are ARM64 or X86_64."
        },
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Encrypts or decrypts a disk using a customer-supplied encryption key. If 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. If 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. If 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. Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in GB."
        },
        "forceAttach": {
          "type": "boolean",
          "description": "[Input Only] 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."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "index": {
          "type": "integer",
          "description": "A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number."
        },
        "initializeParams": {
          "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskInitializeParamsResponse",
          "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. For most machine types, the default is SCSI. Local SSDs can use either NVME or SCSI. In certain configurations, persistent disks can use NVMe. For more information, see About persistent disks."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#attachedDisk for attached disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any valid publicly visible licenses."
        },
        "mode": {
          "type": "string",
          "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode."
        },
        "savedState": {
          "type": "string",
          "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Fv1:InitialStateConfigResponse",
          "description": "shielded vm initial state stored on disk"
        },
        "source": {
          "type": "string",
          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or initializeParams.sourceSnapshot or disks.source is required except for local SSD. If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks. Note that for InstanceTemplate, specify the disk name for zonal disk, and the URL for regional disk."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "autoDelete",
        "boot",
        "deviceName",
        "diskEncryptionKey",
        "diskSizeGb",
        "forceAttach",
        "guestOsFeatures",
        "index",
        "initializeParams",
        "interface",
        "kind",
        "licenses",
        "mode",
        "savedState",
        "shieldedInstanceInitialState",
        "source",
        "type"
      ]
    },
    "google-native:compute/v1:AttachedDiskSavedState": {
      "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api.",
      "type": "string",
      "enum": [
        {
          "name": "DiskSavedStateUnspecified",
          "description": "*[Default]* Disk state has not been preserved.",
          "value": "DISK_SAVED_STATE_UNSPECIFIED"
        },
        {
          "name": "Preserved",
          "description": "Disk state has been preserved.",
          "value": "PRESERVED"
        }
      ]
    },
    "google-native:compute/v1:AttachedDiskType": {
      "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
      "type": "string",
      "enum": [
        {
          "name": "Persistent",
          "value": "PERSISTENT"
        },
        {
          "name": "Scratch",
          "value": "SCRATCH"
        }
      ]
    },
    "google-native:compute/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "exemptedMembers",
        "service"
      ]
    },
    "google-native:compute/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logType": {
          "$ref": "#/types/google-native:compute%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "ignoreChildExemptions",
        "logType"
      ]
    },
    "google-native:compute/v1:AuthorizationLoggingOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "permissionType": {
          "$ref": "#/types/google-native:compute%2Fv1:AuthorizationLoggingOptionsPermissionType",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AuthorizationLoggingOptionsPermissionType": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "AdminRead",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_READ"
        },
        {
          "name": "AdminWrite",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_WRITE"
        },
        {
          "name": "DataRead",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_READ"
        },
        {
          "name": "DataWrite",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_WRITE"
        },
        {
          "name": "PermissionTypeUnspecified",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "PERMISSION_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:AuthorizationLoggingOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "permissionType": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "permissionType"
      ]
    },
    "google-native:compute/v1:AutoscalerStatusDetailsResponse": {
      "properties": {
        "message": {
          "type": "string",
          "description": "The status message."
        },
        "type": {
          "type": "string",
          "description": "The type of error, warning, or notice returned. Current set of possible values: - ALL_INSTANCES_UNHEALTHY (WARNING): All instances in the instance group are unhealthy (not in RUNNING state). - BACKEND_SERVICE_DOES_NOT_EXIST (ERROR): There is no backend service attached to the instance group. - CAPPED_AT_MAX_NUM_REPLICAS (WARNING): Autoscaler recommends a size greater than maxNumReplicas. - CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE (WARNING): The custom metric samples are not exported often enough to be a credible base for autoscaling. - CUSTOM_METRIC_INVALID (ERROR): The custom metric that was specified does not exist or does not have the necessary labels. - MIN_EQUALS_MAX (WARNING): The minNumReplicas is equal to maxNumReplicas. This means the autoscaler cannot add or remove instances from the instance group. - MISSING_CUSTOM_METRIC_DATA_POINTS (WARNING): The autoscaler did not receive any data from the custom metric configured for autoscaling. - MISSING_LOAD_BALANCING_DATA_POINTS (WARNING): The autoscaler is configured to scale based on a load balancing signal but the instance group has not received any requests from the load balancer. - MODE_OFF (WARNING): Autoscaling is turned off. The number of instances in the group won't change automatically. The autoscaling configuration is preserved. - MODE_ONLY_UP (WARNING): Autoscaling is in the \"Autoscale only out\" mode. The autoscaler can add instances but not remove any. - MORE_THAN_ONE_BACKEND_SERVICE (ERROR): The instance group cannot be autoscaled because it has more than one backend service attached to it. - NOT_ENOUGH_QUOTA_AVAILABLE (ERROR): There is insufficient quota for the necessary resources, such as CPU or number of instances. - REGION_RESOURCE_STOCKOUT (ERROR): Shown only for regional autoscalers: there is a resource stockout in the chosen region. - SCALING_TARGET_DOES_NOT_EXIST (ERROR): The target to be scaled does not exist. - UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION (ERROR): Autoscaling does not work with an HTTP/S load balancer that has been configured for maxRate. - ZONE_RESOURCE_STOCKOUT (ERROR): For zonal autoscalers: there is a resource stockout in the chosen zone. For regional autoscalers: in at least one of the zones you're using there is a resource stockout. New values might be added in the future. Some of the values might not be available in all API versions."
        }
      },
      "type": "object",
      "required": [
        "message",
        "type"
      ]
    },
    "google-native:compute/v1:AutoscalingPolicy": {
      "description": "Cloud Autoscaler policy.",
      "properties": {
        "coolDownPeriodSec": {
          "type": "integer",
          "description": "The number of seconds that your application takes to initialize on a VM instance. This is referred to as the [initialization period](/compute/docs/autoscaler#cool_down_period). Specifying an accurate initialization period improves autoscaler decisions. For example, when scaling out, the autoscaler ignores data from VMs that are still initializing because those VMs might not yet represent normal usage of your application. The default initialization period is 60 seconds. Initialization periods might vary because of numerous factors. We recommend that you test how long your application takes to initialize. To do this, create a VM and time your application's startup process."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyCpuUtilization",
          "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
        },
        "customMetricUtilizations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyCustomMetricUtilization"
          },
          "description": "Configuration parameters of autoscaling based on a custom metric."
        },
        "loadBalancingUtilization": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyLoadBalancingUtilization",
          "description": "Configuration parameters of autoscaling based on load balancer."
        },
        "maxNumReplicas": {
          "type": "integer",
          "description": "The maximum number of instances that the autoscaler can scale out to. This is required when creating or updating an autoscaler. The maximum number of replicas must not be lower than minimal number of replicas."
        },
        "minNumReplicas": {
          "type": "integer",
          "description": "The minimum number of replicas that the autoscaler can scale in to. This cannot be less than 0. If not provided, autoscaler chooses a default value depending on maximum number of instances allowed."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyMode",
          "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\""
        },
        "scaleInControl": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyScaleInControl"
        },
        "scalingSchedules": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scaling schedules defined for an autoscaler. Multiple schedules can be set on an autoscaler, and they can overlap. During overlapping periods the greatest min_required_replicas of all scaling schedules is applied. Up to 128 scaling schedules are allowed."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AutoscalingPolicyCpuUtilization": {
      "description": "CPU utilization policy.",
      "properties": {
        "predictiveMethod": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyCpuUtilizationPredictiveMethod",
          "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target CPU utilization that the autoscaler maintains. Must be a float value in the range (0, 1]. If not specified, the default is 0.6. If the CPU level is below the target utilization, the autoscaler scales in the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization. If the average CPU is above the target utilization, the autoscaler scales out until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AutoscalingPolicyCpuUtilizationPredictiveMethod": {
      "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics",
          "value": "NONE"
        },
        {
          "name": "OptimizeAvailability",
          "description": "Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.",
          "value": "OPTIMIZE_AVAILABILITY"
        }
      ]
    },
    "google-native:compute/v1:AutoscalingPolicyCpuUtilizationResponse": {
      "description": "CPU utilization policy.",
      "properties": {
        "predictiveMethod": {
          "type": "string",
          "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are: * NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics. * OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target CPU utilization that the autoscaler maintains. Must be a float value in the range (0, 1]. If not specified, the default is 0.6. If the CPU level is below the target utilization, the autoscaler scales in the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization. If the average CPU is above the target utilization, the autoscaler scales out until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization."
        }
      },
      "type": "object",
      "required": [
        "predictiveMethod",
        "utilizationTarget"
      ]
    },
    "google-native:compute/v1:AutoscalingPolicyCustomMetricUtilization": {
      "description": "Custom utilization metric policy.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data. For the filter to be valid for autoscaling purposes, the following rules apply: - You can only use the AND operator for joining selectors. - You can only use direct equality comparison operator (=) without any functions for each selector. - You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. - The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels. If the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a *per-group metric* for the purpose of autoscaling. If not specified, the type defaults to gce_instance. Try to provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value."
        },
        "metric": {
          "type": "string",
          "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values. The metric must have a value type of INT64 or DOUBLE."
        },
        "singleInstanceAssignment": {
          "type": "number",
          "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler keeps the number of instances proportional to the value of this metric. The metric itself does not change value due to group resizing. A good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances. A bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target value of the metric that autoscaler maintains. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric. For example, a good metric to use as a utilization_target is https://www.googleapis.com/compute/v1/instance/network/received_bytes_count. The autoscaler works to keep this value constant for each of the instances."
        },
        "utilizationTargetType": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType",
          "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AutoscalingPolicyCustomMetricUtilizationResponse": {
      "description": "Custom utilization metric policy.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data. For the filter to be valid for autoscaling purposes, the following rules apply: - You can only use the AND operator for joining selectors. - You can only use direct equality comparison operator (=) without any functions for each selector. - You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. - The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels. If the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a *per-group metric* for the purpose of autoscaling. If not specified, the type defaults to gce_instance. Try to provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value."
        },
        "metric": {
          "type": "string",
          "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values. The metric must have a value type of INT64 or DOUBLE."
        },
        "singleInstanceAssignment": {
          "type": "number",
          "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler keeps the number of instances proportional to the value of this metric. The metric itself does not change value due to group resizing. A good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances. A bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead."
        },
        "utilizationTarget": {
          "type": "number",
          "description": "The target value of the metric that autoscaler maintains. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric. For example, a good metric to use as a utilization_target is https://www.googleapis.com/compute/v1/instance/network/received_bytes_count. The autoscaler works to keep this value constant for each of the instances."
        },
        "utilizationTargetType": {
          "type": "string",
          "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "metric",
        "singleInstanceAssignment",
        "utilizationTarget",
        "utilizationTargetType"
      ]
    },
    "google-native:compute/v1:AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType": {
      "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.",
      "type": "string",
      "enum": [
        {
          "name": "DeltaPerMinute",
          "description": "Sets the utilization target value for a cumulative or delta metric, expressed as the rate of growth per minute.",
          "value": "DELTA_PER_MINUTE"
        },
        {
          "name": "DeltaPerSecond",
          "description": "Sets the utilization target value for a cumulative or delta metric, expressed as the rate of growth per second.",
          "value": "DELTA_PER_SECOND"
        },
        {
          "name": "Gauge",
          "description": "Sets the utilization target value for a gauge metric. The autoscaler will collect the average utilization of the virtual machines from the last couple of minutes, and compare the value to the utilization target value to perform autoscaling.",
          "value": "GAUGE"
        }
      ]
    },
    "google-native:compute/v1:AutoscalingPolicyLoadBalancingUtilization": {
      "description": "Configuration parameters of autoscaling based on load balancing.",
      "properties": {
        "utilizationTarget": {
          "type": "number",
          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that the autoscaler maintains. Must be a positive float value. If not defined, the default is 0.8."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AutoscalingPolicyLoadBalancingUtilizationResponse": {
      "description": "Configuration parameters of autoscaling based on load balancing.",
      "properties": {
        "utilizationTarget": {
          "type": "number",
          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that the autoscaler maintains. Must be a positive float value. If not defined, the default is 0.8."
        }
      },
      "type": "object",
      "required": [
        "utilizationTarget"
      ]
    },
    "google-native:compute/v1:AutoscalingPolicyMode": {
      "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\"",
      "type": "string",
      "enum": [
        {
          "name": "Off",
          "description": "Do not automatically scale the MIG in or out. The recommended_size field contains the size of MIG that would be set if the actuation mode was enabled.",
          "value": "OFF"
        },
        {
          "name": "On",
          "description": "Automatically scale the MIG in and out according to the policy.",
          "value": "ON"
        },
        {
          "name": "OnlyScaleOut",
          "description": "Automatically create VMs according to the policy, but do not scale the MIG in.",
          "value": "ONLY_SCALE_OUT"
        },
        {
          "name": "OnlyUp",
          "description": "Automatically create VMs according to the policy, but do not scale the MIG in.",
          "value": "ONLY_UP"
        }
      ]
    },
    "google-native:compute/v1:AutoscalingPolicyResponse": {
      "description": "Cloud Autoscaler policy.",
      "properties": {
        "coolDownPeriodSec": {
          "type": "integer",
          "description": "The number of seconds that your application takes to initialize on a VM instance. This is referred to as the [initialization period](/compute/docs/autoscaler#cool_down_period). Specifying an accurate initialization period improves autoscaler decisions. For example, when scaling out, the autoscaler ignores data from VMs that are still initializing because those VMs might not yet represent normal usage of your application. The default initialization period is 60 seconds. Initialization periods might vary because of numerous factors. We recommend that you test how long your application takes to initialize. To do this, create a VM and time your application's startup process."
        },
        "cpuUtilization": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyCpuUtilizationResponse",
          "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
        },
        "customMetricUtilizations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyCustomMetricUtilizationResponse"
          },
          "description": "Configuration parameters of autoscaling based on a custom metric."
        },
        "loadBalancingUtilization": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyLoadBalancingUtilizationResponse",
          "description": "Configuration parameters of autoscaling based on load balancer."
        },
        "maxNumReplicas": {
          "type": "integer",
          "description": "The maximum number of instances that the autoscaler can scale out to. This is required when creating or updating an autoscaler. The maximum number of replicas must not be lower than minimal number of replicas."
        },
        "minNumReplicas": {
          "type": "integer",
          "description": "The minimum number of replicas that the autoscaler can scale in to. This cannot be less than 0. If not provided, autoscaler chooses a default value depending on maximum number of instances allowed."
        },
        "mode": {
          "type": "string",
          "description": "Defines the operating mode for this policy. The following modes are available: - OFF: Disables the autoscaler but maintains its configuration. - ONLY_SCALE_OUT: Restricts the autoscaler to add VM instances only. - ON: Enables all autoscaler activities according to its policy. For more information, see \"Turning off or restricting an autoscaler\""
        },
        "scaleInControl": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyScaleInControlResponse"
        },
        "scalingSchedules": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scaling schedules defined for an autoscaler. Multiple schedules can be set on an autoscaler, and they can overlap. During overlapping periods the greatest min_required_replicas of all scaling schedules is applied. Up to 128 scaling schedules are allowed."
        }
      },
      "type": "object",
      "required": [
        "coolDownPeriodSec",
        "cpuUtilization",
        "customMetricUtilizations",
        "loadBalancingUtilization",
        "maxNumReplicas",
        "minNumReplicas",
        "mode",
        "scaleInControl",
        "scalingSchedules"
      ]
    },
    "google-native:compute/v1:AutoscalingPolicyScaleInControl": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledInReplicas": {
          "$ref": "#/types/google-native:compute%2Fv1:FixedOrPercent",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:AutoscalingPolicyScaleInControlResponse": {
      "description": "Configuration that allows for slower scale in so that even if Autoscaler recommends an abrupt scale in of a MIG, it will be throttled as specified by the parameters below.",
      "properties": {
        "maxScaledInReplicas": {
          "$ref": "#/types/google-native:compute%2Fv1:FixedOrPercentResponse",
          "description": "Maximum allowed number (or %) of VMs that can be deducted from the peak recommendation during the window autoscaler looks at when computing recommendations. Possibly all these VMs can be deleted at once so user service needs to be prepared to lose that many VMs in one step."
        },
        "timeWindowSec": {
          "type": "integer",
          "description": "How far back autoscaling looks when computing recommendations to include directives regarding slower scale in, as described above."
        }
      },
      "type": "object",
      "required": [
        "maxScaledInReplicas",
        "timeWindowSec"
      ]
    },
    "google-native:compute/v1:Backend": {
      "description": "Message containing information of one individual backend.",
      "properties": {
        "balancingMode": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendBalancingMode",
          "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected."
        },
        "capacityScaler": {
          "type": "number",
          "description": "A multiplier applied to the backend's target capacity of its balancing mode. The default value is 1, which means the group serves up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. The valid ranges are 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service. Not available with backends that don't support using a balancingMode. This includes backends such as global internet NEGs, regional serverless NEGs, and PSC NEGs."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failover": {
          "type": "boolean",
          "description": "This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService."
        },
        "group": {
          "type": "string",
          "description": "The fully-qualified URL of an instance group or network endpoint group (NEG) resource. To determine what types of backends a load balancer supports, see the [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service#backends). You must use the *fully-qualified* URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported."
        },
        "maxConnections": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerEndpoint": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerInstance": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxRate": {
          "type": "integer",
          "description": "Defines a maximum number of HTTP requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerEndpoint": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerInstance": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxUtilization": {
          "type": "number",
          "description": "Optional parameter to define a target capacity for the UTILIZATION balancing mode. The valid range is [0.0, 1.0]. For usage guidelines, see Utilization balancing mode."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendBalancingMode": {
      "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected.",
      "type": "string",
      "enum": [
        {
          "name": "Connection",
          "description": "Balance based on the number of simultaneous connections.",
          "value": "CONNECTION"
        },
        {
          "name": "Rate",
          "description": "Balance based on requests per second (RPS).",
          "value": "RATE"
        },
        {
          "name": "Utilization",
          "description": "Balance based on the backend utilization.",
          "value": "UTILIZATION"
        }
      ]
    },
    "google-native:compute/v1:BackendBucketCdnPolicy": {
      "description": "Message containing Cloud CDN configuration for a backend bucket.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1: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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicyCacheKeyPolicy",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicyCacheMode",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicyNegativeCachingPolicy"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendBucketCdnPolicyBypassCacheOnRequestHeader": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendBucketCdnPolicyBypassCacheOnRequestHeaderResponse": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object",
      "required": [
        "headerName"
      ]
    },
    "google-native:compute/v1:BackendBucketCdnPolicyCacheKeyPolicy": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. Default parameters are always included. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendBucketCdnPolicyCacheKeyPolicyResponse": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. Default parameters are always included. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object",
      "required": [
        "includeHttpHeaders",
        "queryStringWhitelist"
      ]
    },
    "google-native:compute/v1:BackendBucketCdnPolicyCacheMode": {
      "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
      "type": "string",
      "enum": [
        {
          "name": "CacheAllStatic",
          "description": "Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
          "value": "CACHE_ALL_STATIC"
        },
        {
          "name": "ForceCacheAll",
          "description": "Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content.",
          "value": "FORCE_CACHE_ALL"
        },
        {
          "name": "InvalidCacheMode",
          "value": "INVALID_CACHE_MODE"
        },
        {
          "name": "UseOriginHeaders",
          "description": "Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server.",
          "value": "USE_ORIGIN_HEADERS"
        }
      ]
    },
    "google-native:compute/v1:BackendBucketCdnPolicyNegativeCachingPolicy": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendBucketCdnPolicyNegativeCachingPolicyResponse": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object",
      "required": [
        "code",
        "ttl"
      ]
    },
    "google-native:compute/v1:BackendBucketCdnPolicyResponse": {
      "description": "Message containing Cloud CDN configuration for a backend bucket.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicyBypassCacheOnRequestHeaderResponse"
          },
          "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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicyCacheKeyPolicyResponse",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "type": "string",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicyNegativeCachingPolicyResponse"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        },
        "signedUrlKeyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the keys for signing request URLs."
        }
      },
      "type": "object",
      "required": [
        "bypassCacheOnRequestHeaders",
        "cacheKeyPolicy",
        "cacheMode",
        "clientTtl",
        "defaultTtl",
        "maxTtl",
        "negativeCaching",
        "negativeCachingPolicy",
        "requestCoalescing",
        "serveWhileStale",
        "signedUrlCacheMaxAgeSec",
        "signedUrlKeyNames"
      ]
    },
    "google-native:compute/v1:BackendBucketCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/v1:BackendResponse": {
      "description": "Message containing information of one individual backend.",
      "properties": {
        "balancingMode": {
          "type": "string",
          "description": "Specifies how to determine whether the backend of a load balancer can handle additional traffic or is fully loaded. For usage guidelines, see Connection balancing mode. Backends must use compatible balancing modes. For more information, see Supported balancing modes and target capacity settings and Restrictions and guidance for instance groups. Note: Currently, if you use the API to configure incompatible balancing modes, the configuration might be accepted even though it has no impact and is ignored. Specifically, Backend.maxUtilization is ignored when Backend.balancingMode is RATE. In the future, this incompatible combination will be rejected."
        },
        "capacityScaler": {
          "type": "number",
          "description": "A multiplier applied to the backend's target capacity of its balancing mode. The default value is 1, which means the group serves up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available capacity. The valid ranges are 0.0 and [0.1,1.0]. You cannot configure a setting larger than 0 and smaller than 0.1. You cannot configure a setting of 0 when there is only one backend attached to the backend service. Not available with backends that don't support using a balancingMode. This includes backends such as global internet NEGs, regional serverless NEGs, and PSC NEGs."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failover": {
          "type": "boolean",
          "description": "This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService."
        },
        "group": {
          "type": "string",
          "description": "The fully-qualified URL of an instance group or network endpoint group (NEG) resource. To determine what types of backends a load balancer supports, see the [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service#backends). You must use the *fully-qualified* URL (starting with https://www.googleapis.com/) to specify the instance group or NEG. Partial URLs are not supported."
        },
        "maxConnections": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerEndpoint": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxConnectionsPerInstance": {
          "type": "integer",
          "description": "Defines a target maximum number of simultaneous connections. For usage guidelines, see Connection balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is RATE."
        },
        "maxRate": {
          "type": "integer",
          "description": "Defines a maximum number of HTTP requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerEndpoint": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxRatePerInstance": {
          "type": "number",
          "description": "Defines a maximum target for requests per second (RPS). For usage guidelines, see Rate balancing mode and Utilization balancing mode. Not available if the backend's balancingMode is CONNECTION."
        },
        "maxUtilization": {
          "type": "number",
          "description": "Optional parameter to define a target capacity for the UTILIZATION balancing mode. The valid range is [0.0, 1.0]. For usage guidelines, see Utilization balancing mode."
        }
      },
      "type": "object",
      "required": [
        "balancingMode",
        "capacityScaler",
        "description",
        "failover",
        "group",
        "maxConnections",
        "maxConnectionsPerEndpoint",
        "maxConnectionsPerInstance",
        "maxRate",
        "maxRatePerEndpoint",
        "maxRatePerInstance",
        "maxUtilization"
      ]
    },
    "google-native:compute/v1:BackendServiceCdnPolicy": {
      "description": "Message containing Cloud CDN configuration for a backend service.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1: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. The cache is bypassed for all cdnPolicy.cacheMode settings."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:CacheKeyPolicy",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicyCacheMode",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicyNegativeCachingPolicy"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceCdnPolicyBypassCacheOnRequestHeader": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceCdnPolicyBypassCacheOnRequestHeaderResponse": {
      "description": "Bypass the cache when the specified request headers are present, e.g. Pragma or Authorization headers. Values are case insensitive. The presence of such a header overrides the cache_mode setting.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The header field name to match on when bypassing cache. Values are case-insensitive."
        }
      },
      "type": "object",
      "required": [
        "headerName"
      ]
    },
    "google-native:compute/v1:BackendServiceCdnPolicyCacheMode": {
      "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
      "type": "string",
      "enum": [
        {
          "name": "CacheAllStatic",
          "description": "Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached.",
          "value": "CACHE_ALL_STATIC"
        },
        {
          "name": "ForceCacheAll",
          "description": "Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content.",
          "value": "FORCE_CACHE_ALL"
        },
        {
          "name": "InvalidCacheMode",
          "value": "INVALID_CACHE_MODE"
        },
        {
          "name": "UseOriginHeaders",
          "description": "Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server.",
          "value": "USE_ORIGIN_HEADERS"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceCdnPolicyNegativeCachingPolicy": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceCdnPolicyNegativeCachingPolicyResponse": {
      "description": "Specify CDN TTLs for response error codes.",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 are can be specified as values, and you cannot specify a status code more than once."
        },
        "ttl": {
          "type": "integer",
          "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s (30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        }
      },
      "type": "object",
      "required": [
        "code",
        "ttl"
      ]
    },
    "google-native:compute/v1:BackendServiceCdnPolicyResponse": {
      "description": "Message containing Cloud CDN configuration for a backend service.",
      "properties": {
        "bypassCacheOnRequestHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicyBypassCacheOnRequestHeaderResponse"
          },
          "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."
        },
        "cacheKeyPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:CacheKeyPolicyResponse",
          "description": "The CacheKeyPolicy for this CdnPolicy."
        },
        "cacheMode": {
          "type": "string",
          "description": "Specifies the cache setting for all responses from this backend. The possible values are: USE_ORIGIN_HEADERS Requires the origin to set valid caching headers to cache content. Responses without these headers will not be cached at Google's edge, and will require a full trip to the origin on every request, potentially impacting performance and increasing load on the origin server. FORCE_CACHE_ALL Cache all content, ignoring any \"private\", \"no-store\" or \"no-cache\" directives in Cache-Control response headers. Warning: this may result in Cloud CDN caching private, per-user (user identifiable) content. CACHE_ALL_STATIC Automatically cache static content, including common image formats, media (video and audio), and web assets (JavaScript and CSS). Requests and responses that are marked as uncacheable, as well as dynamic content (including HTML), will not be cached."
        },
        "clientTtl": {
          "type": "integer",
          "description": "Specifies a separate client (e.g. browser client) maximum TTL. This is used to clamp the max-age (or Expires) value sent to the client. With FORCE_CACHE_ALL, the lesser of client_ttl and default_ttl is used for the response max-age directive, along with a \"public\" directive. For cacheable content in CACHE_ALL_STATIC mode, client_ttl clamps the max-age from the origin (if specified), or else sets the response max-age directive to the lesser of the client_ttl and default_ttl, and also ensures a \"public\" cache-control directive is present. If a client TTL is not specified, a default value (1 hour) will be used. The maximum allowed value is 31,622,400s (1 year)."
        },
        "defaultTtl": {
          "type": "integer",
          "description": "Specifies the default TTL for cached content served by this origin for responses that do not have an existing valid TTL (max-age or s-max-age). Setting a TTL of \"0\" means \"always revalidate\". The value of defaultTTL cannot be set to a value greater than that of maxTTL, but can be equal. When the cacheMode is set to FORCE_CACHE_ALL, the defaultTTL will overwrite the TTL set in all responses. The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "maxTtl": {
          "type": "integer",
          "description": "Specifies the maximum allowed TTL for cached content served by this origin. Cache directives that attempt to set a max-age or s-maxage higher than this, or an Expires header more than maxTTL seconds in the future will be capped at the value of maxTTL, as if it were the value of an s-maxage Cache-Control directive. Headers sent to the client will not be modified. Setting a TTL of \"0\" means \"always revalidate\". The maximum allowed value is 31,622,400s (1 year), noting that infrequently accessed objects may be evicted from the cache before the defined TTL."
        },
        "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. This can reduce the load on your origin and improve end-user experience by reducing response latency. When the cache mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative caching applies to responses with the specified response code that lack any Cache-Control, Expires, or Pragma: no-cache directives. When the cache mode is set to FORCE_CACHE_ALL, negative caching applies to all responses with the specified response code, and override any caching headers. By default, Cloud CDN will apply the following default TTLs to these status codes: HTTP 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m HTTP 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s HTTP 405 (Method Not Found), 421 (Misdirected Request), 501 (Not Implemented): 60s. These defaults can be overridden in negative_caching_policy."
        },
        "negativeCachingPolicy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicyNegativeCachingPolicyResponse"
          },
          "description": "Sets a cache TTL for the specified HTTP status code. negative_caching must be enabled to configure negative_caching_policy. Omitting the policy and leaving negative_caching enabled will use Cloud CDN's default cache TTLs. Note that when specifying an explicit negative_caching_policy, you should take care to specify a cache TTL for all response codes that you wish to cache. Cloud CDN will not apply any default negative caching when a policy exists."
        },
        "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."
        },
        "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. This setting defines the default \"max-stale\" duration for any cached responses that do not specify a max-stale directive. Stale responses that exceed the TTL configured here will not be served. The default limit (max-stale) is 86400s (1 day), which will allow stale content to be served up to this limit beyond the max-age (or s-max-age) of a cached response. The maximum allowed value is 604800 (1 week). Set this to zero (0) to disable serve-while-stale."
        },
        "signedUrlCacheMaxAgeSec": {
          "type": "string",
          "description": "Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. Defaults to 1hr (3600s). When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a \"Cache-Control: public, max-age=[TTL]\" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered."
        },
        "signedUrlKeyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the keys for signing request URLs."
        }
      },
      "type": "object",
      "required": [
        "bypassCacheOnRequestHeaders",
        "cacheKeyPolicy",
        "cacheMode",
        "clientTtl",
        "defaultTtl",
        "maxTtl",
        "negativeCaching",
        "negativeCachingPolicy",
        "requestCoalescing",
        "serveWhileStale",
        "signedUrlCacheMaxAgeSec",
        "signedUrlKeyNames"
      ]
    },
    "google-native:compute/v1:BackendServiceCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceConnectionTrackingPolicy": {
      "description": "Connection Tracking configuration for this BackendService.",
      "properties": {
        "connectionPersistenceOnUnhealthyBackends": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends",
          "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence)."
        },
        "enableStrongAffinity": {
          "type": "boolean",
          "description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly."
        },
        "idleTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly."
        },
        "trackingMode": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceConnectionTrackingPolicyTrackingMode",
          "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode)."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends": {
      "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence).",
      "type": "string",
      "enum": [
        {
          "name": "AlwaysPersist",
          "value": "ALWAYS_PERSIST"
        },
        {
          "name": "DefaultForProtocol",
          "value": "DEFAULT_FOR_PROTOCOL"
        },
        {
          "name": "NeverPersist",
          "value": "NEVER_PERSIST"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceConnectionTrackingPolicyResponse": {
      "description": "Connection Tracking configuration for this BackendService.",
      "properties": {
        "connectionPersistenceOnUnhealthyBackends": {
          "type": "string",
          "description": "Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence)."
        },
        "enableStrongAffinity": {
          "type": "boolean",
          "description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly."
        },
        "idleTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly."
        },
        "trackingMode": {
          "type": "string",
          "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode)."
        }
      },
      "type": "object",
      "required": [
        "connectionPersistenceOnUnhealthyBackends",
        "enableStrongAffinity",
        "idleTimeoutSec",
        "trackingMode"
      ]
    },
    "google-native:compute/v1:BackendServiceConnectionTrackingPolicyTrackingMode": {
      "description": "Specifies the key used for connection tracking. There are two options: - PER_CONNECTION: This is the default mode. The Connection Tracking is performed as per the Connection Key (default Hash Method) for the specific protocol. - PER_SESSION: The Connection Tracking is performed as per the configured Session Affinity. It matches the configured Session Affinity. For more details, see [Tracking Mode for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#tracking-mode) and [Tracking Mode for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#tracking-mode).",
      "type": "string",
      "enum": [
        {
          "name": "InvalidTrackingMode",
          "value": "INVALID_TRACKING_MODE"
        },
        {
          "name": "PerConnection",
          "value": "PER_CONNECTION"
        },
        {
          "name": "PerSession",
          "value": "PER_SESSION"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceFailoverPolicy": {
      "description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
      "properties": {
        "disableConnectionDrainOnFailover": {
          "type": "boolean",
          "description": "This can be set to true only if the protocol is TCP. The default is false."
        },
        "dropTrafficIfUnhealthy": {
          "type": "boolean",
          "description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false."
        },
        "failoverRatio": {
          "type": "number",
          "description": "The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceFailoverPolicyResponse": {
      "description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
      "properties": {
        "disableConnectionDrainOnFailover": {
          "type": "boolean",
          "description": "This can be set to true only if the protocol is TCP. The default is false."
        },
        "dropTrafficIfUnhealthy": {
          "type": "boolean",
          "description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false."
        },
        "failoverRatio": {
          "type": "number",
          "description": "The value of the field must be in the range [0, 1]. If the value is 0, the load balancer performs a failover when the number of healthy primary VMs equals zero. For all other values, the load balancer performs a failover when the total number of healthy primary VMs is less than this ratio. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        }
      },
      "type": "object",
      "required": [
        "disableConnectionDrainOnFailover",
        "dropTrafficIfUnhealthy",
        "failoverRatio"
      ]
    },
    "google-native:compute/v1:BackendServiceIAP": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field. @InputOnly"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceIAPResponse": {
      "description": "Identity-Aware Proxy",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "OAuth2 client ID to use for the authentication flow."
        },
        "oauth2ClientSecret": {
          "type": "string",
          "description": "OAuth2 client secret to use for the authentication flow. For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field. @InputOnly"
        },
        "oauth2ClientSecretSha256": {
          "type": "string",
          "description": "SHA256 hash value for the field oauth2_client_secret above."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "oauth2ClientId",
        "oauth2ClientSecret",
        "oauth2ClientSecretSha256"
      ]
    },
    "google-native:compute/v1:BackendServiceLoadBalancingScheme": {
      "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "description": "Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "description": "Signifies that this will be used for Internal TCP/UDP Load Balancing.",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "description": "Signifies that this will be used for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "description": "Signifies that this will be used by Traffic Director.",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "InvalidLoadBalancingScheme",
          "value": "INVALID_LOAD_BALANCING_SCHEME"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceLocalityLbPolicy": {
      "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceLocalityLoadBalancingPolicyConfig": {
      "description": "Container for either a built-in LB policy supported by gRPC or Envoy or a custom one implemented by the end user.",
      "properties": {
        "customPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy"
        },
        "policy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigPolicy"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicy": {
      "description": "The configuration for a custom policy implemented by the user and deployed with the client.",
      "properties": {
        "data": {
          "type": "string",
          "description": "An optional, arbitrary JSON object with configuration data, understood by a locally installed custom policy implementation."
        },
        "name": {
          "type": "string",
          "description": "Identifies the custom policy. The value should match the name of a custom implementation registered on the gRPC clients. It should follow protocol buffer message naming conventions and include the full path (for example, myorg.CustomLbPolicy). The maximum length is 256 characters. Do not specify the same custom policy more than once for a backend. If you do, the configuration is rejected. For an example of how to use this field, see Use a custom policy."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicyResponse": {
      "description": "The configuration for a custom policy implemented by the user and deployed with the client.",
      "properties": {
        "data": {
          "type": "string",
          "description": "An optional, arbitrary JSON object with configuration data, understood by a locally installed custom policy implementation."
        },
        "name": {
          "type": "string",
          "description": "Identifies the custom policy. The value should match the name of a custom implementation registered on the gRPC clients. It should follow protocol buffer message naming conventions and include the full path (for example, myorg.CustomLbPolicy). The maximum length is 256 characters. Do not specify the same custom policy more than once for a backend. If you do, the configuration is rejected. For an example of how to use this field, see Use a custom policy."
        }
      },
      "type": "object",
      "required": [
        "data",
        "name"
      ]
    },
    "google-native:compute/v1:BackendServiceLocalityLoadBalancingPolicyConfigPolicy": {
      "description": "The configuration for a built-in load balancing policy.",
      "properties": {
        "name": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigPolicyName",
          "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceLocalityLoadBalancingPolicyConfigPolicyName": {
      "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceLocalityLoadBalancingPolicyConfigPolicyResponse": {
      "description": "The configuration for a built-in load balancing policy.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of a locality load-balancing policy. Valid values include ROUND_ROBIN and, for Java clients, LEAST_REQUEST. For information about these values, see the description of localityLbPolicy. Do not specify the same policy more than once for a backend. If you do, the configuration is rejected."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:compute/v1:BackendServiceLocalityLoadBalancingPolicyConfigResponse": {
      "description": "Container for either a built-in LB policy supported by gRPC or Envoy or a custom one implemented by the end user.",
      "properties": {
        "customPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigCustomPolicyResponse"
        },
        "policy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigPolicyResponse"
        }
      },
      "type": "object",
      "required": [
        "customPolicy",
        "policy"
      ]
    },
    "google-native:compute/v1:BackendServiceLogConfig": {
      "description": "The available logging options for the load balancer traffic served by this backend service.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for the load balancer traffic served by this backend service. The default value is false."
        },
        "optionalFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field can only be specified if logging is enabled for this backend service and \"logConfig.optionalMode\" was set to CUSTOM. Contains a list of optional fields you want to include in the logs. For example: serverInstance, serverGkeDetails.cluster, serverGkeDetails.pod.podNamespace"
        },
        "optionalMode": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLogConfigOptionalMode",
          "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL."
        },
        "sampleRate": {
          "type": "number",
          "description": "This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceLogConfigOptionalMode": {
      "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "description": "A subset of optional fields.",
          "value": "CUSTOM"
        },
        {
          "name": "ExcludeAllOptional",
          "description": "None optional fields.",
          "value": "EXCLUDE_ALL_OPTIONAL"
        },
        {
          "name": "IncludeAllOptional",
          "description": "All optional fields.",
          "value": "INCLUDE_ALL_OPTIONAL"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceLogConfigResponse": {
      "description": "The available logging options for the load balancer traffic served by this backend service.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for the load balancer traffic served by this backend service. The default value is false."
        },
        "optionalFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field can only be specified if logging is enabled for this backend service and \"logConfig.optionalMode\" was set to CUSTOM. Contains a list of optional fields you want to include in the logs. For example: serverInstance, serverGkeDetails.cluster, serverGkeDetails.pod.podNamespace"
        },
        "optionalMode": {
          "type": "string",
          "description": "This field can only be specified if logging is enabled for this backend service. Configures whether all, none or a subset of optional fields should be added to the reported logs. One of [INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM]. Default is EXCLUDE_ALL_OPTIONAL."
        },
        "sampleRate": {
          "type": "number",
          "description": "This field can only be specified if logging is enabled for this backend service. The value of the field must be in [0, 1]. This configures the sampling rate of requests to the load balancer where 1.0 means all logged requests are reported and 0.0 means no logged requests are reported. The default value is 1.0."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "optionalFields",
        "optionalMode",
        "sampleRate"
      ]
    },
    "google-native:compute/v1:BackendServiceProtocol": {
      "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "description": "gRPC (available for Traffic Director).",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "description": "HTTP/2 with SSL.",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Ssl",
          "description": "TCP proxying with SSL.",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "description": "TCP proxying or TCP pass-through.",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "description": "UDP.",
          "value": "UDP"
        },
        {
          "name": "Unspecified",
          "description": "If a Backend Service has UNSPECIFIED as its protocol, it can be used with any L3/L4 Forwarding Rules.",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceSessionAffinity": {
      "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/v1:BackendServiceUsedBy": {
      "properties": {
        "reference": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BackendServiceUsedByResponse": {
      "properties": {
        "reference": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "reference"
      ]
    },
    "google-native:compute/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "condition": {
          "$ref": "#/types/google-native:compute%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "condition": {
          "$ref": "#/types/google-native:compute%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "bindingId",
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:compute/v1:CacheKeyPolicy": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHost": {
          "type": "boolean",
          "description": "If true, requests to different hosts will be cached separately."
        },
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "includeNamedCookies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP cookies (by name) to be used in the cache key. The name=value pair will be used in the cache key Cloud CDN generates."
        },
        "includeProtocol": {
          "type": "boolean",
          "description": "If true, http and https requests will be cached separately."
        },
        "includeQueryString": {
          "type": "boolean",
          "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
        },
        "queryStringBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:CacheKeyPolicyResponse": {
      "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
      "properties": {
        "includeHost": {
          "type": "boolean",
          "description": "If true, requests to different hosts will be cached separately."
        },
        "includeHttpHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP request headers (by name) to be used in the cache key."
        },
        "includeNamedCookies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allows HTTP cookies (by name) to be used in the cache key. The name=value pair will be used in the cache key Cloud CDN generates."
        },
        "includeProtocol": {
          "type": "boolean",
          "description": "If true, http and https requests will be cached separately."
        },
        "includeQueryString": {
          "type": "boolean",
          "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
        },
        "queryStringBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        },
        "queryStringWhitelist": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters."
        }
      },
      "type": "object",
      "required": [
        "includeHost",
        "includeHttpHeaders",
        "includeNamedCookies",
        "includeProtocol",
        "includeQueryString",
        "queryStringBlacklist",
        "queryStringWhitelist"
      ]
    },
    "google-native:compute/v1:CircuitBreakers": {
      "description": "Settings controlling the volume of requests, connections and retries to this backend service.",
      "properties": {
        "maxConnections": {
          "type": "integer",
          "description": "The maximum number of connections to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxPendingRequests": {
          "type": "integer",
          "description": "The maximum number of pending requests allowed to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRequests": {
          "type": "integer",
          "description": "The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit."
        },
        "maxRequestsPerConnection": {
          "type": "integer",
          "description": "Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRetries": {
          "type": "integer",
          "description": "The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:CircuitBreakersResponse": {
      "description": "Settings controlling the volume of requests, connections and retries to this backend service.",
      "properties": {
        "maxConnections": {
          "type": "integer",
          "description": "The maximum number of connections to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxPendingRequests": {
          "type": "integer",
          "description": "The maximum number of pending requests allowed to the backend service. If not specified, there is no limit. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRequests": {
          "type": "integer",
          "description": "The maximum number of parallel requests that allowed to the backend service. If not specified, there is no limit."
        },
        "maxRequestsPerConnection": {
          "type": "integer",
          "description": "Maximum requests for a single connection to the backend service. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "maxRetries": {
          "type": "integer",
          "description": "The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 1. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "maxConnections",
        "maxPendingRequests",
        "maxRequests",
        "maxRequestsPerConnection",
        "maxRetries"
      ]
    },
    "google-native:compute/v1:Condition": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "iam": {
          "$ref": "#/types/google-native:compute%2Fv1:ConditionIam",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "op": {
          "$ref": "#/types/google-native:compute%2Fv1:ConditionOp",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "svc": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "sys": {
          "$ref": "#/types/google-native:compute%2Fv1:ConditionSys",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ConditionIam": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Approver",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "APPROVER"
        },
        {
          "name": "Attribution",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ATTRIBUTION"
        },
        {
          "name": "Authority",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "AUTHORITY"
        },
        {
          "name": "CredentialsType",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "CREDENTIALS_TYPE"
        },
        {
          "name": "CredsAssertion",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "CREDS_ASSERTION"
        },
        {
          "name": "JustificationType",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "JUSTIFICATION_TYPE"
        },
        {
          "name": "NoAttr",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ATTR"
        },
        {
          "name": "SecurityRealm",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "SECURITY_REALM"
        }
      ]
    },
    "google-native:compute/v1:ConditionOp": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Discharged",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DISCHARGED"
        },
        {
          "name": "Equals",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "EQUALS"
        },
        {
          "name": "In",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "IN"
        },
        {
          "name": "NotEquals",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NOT_EQUALS"
        },
        {
          "name": "NotIn",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NOT_IN"
        },
        {
          "name": "NoOp",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_OP"
        }
      ]
    },
    "google-native:compute/v1:ConditionResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "iam": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "op": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "svc": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "sys": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "iam",
        "op",
        "svc",
        "sys",
        "values"
      ]
    },
    "google-native:compute/v1:ConditionSys": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Ip",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "IP"
        },
        {
          "name": "Name",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NAME"
        },
        {
          "name": "NoAttr",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ATTR"
        },
        {
          "name": "Region",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "REGION"
        },
        {
          "name": "Service",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "SERVICE"
        }
      ]
    },
    "google-native:compute/v1:ConfidentialInstanceConfig": {
      "description": "A set of Confidential Instance options.",
      "properties": {
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Defines whether the instance should have confidential compute enabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ConfidentialInstanceConfigResponse": {
      "description": "A set of Confidential Instance options.",
      "properties": {
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Defines whether the instance should have confidential compute enabled."
        }
      },
      "type": "object",
      "required": [
        "enableConfidentialCompute"
      ]
    },
    "google-native:compute/v1:ConnectionDraining": {
      "description": "Message containing connection draining configuration.",
      "properties": {
        "drainingTimeoutSec": {
          "type": "integer",
          "description": "Configures a duration timeout for existing requests on a removed backend instance. For supported load balancers and protocols, as described in Enabling connection draining."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ConnectionDrainingResponse": {
      "description": "Message containing connection draining configuration.",
      "properties": {
        "drainingTimeoutSec": {
          "type": "integer",
          "description": "Configures a duration timeout for existing requests on a removed backend instance. For supported load balancers and protocols, as described in Enabling connection draining."
        }
      },
      "type": "object",
      "required": [
        "drainingTimeoutSec"
      ]
    },
    "google-native:compute/v1:ConsistentHashLoadBalancerSettings": {
      "description": "This message defines settings for a consistent hash style load balancer.",
      "properties": {
        "httpCookie": {
          "$ref": "#/types/google-native:compute%2Fv1:ConsistentHashLoadBalancerSettingsHttpCookie",
          "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpHeaderName": {
          "type": "string",
          "description": "The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD."
        },
        "minimumRingSize": {
          "type": "string",
          "description": "The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ConsistentHashLoadBalancerSettingsHttpCookie": {
      "description": "The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the cookie."
        },
        "path": {
          "type": "string",
          "description": "Path to set for the cookie."
        },
        "ttl": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "Lifetime of the cookie."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ConsistentHashLoadBalancerSettingsHttpCookieResponse": {
      "description": "The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the cookie."
        },
        "path": {
          "type": "string",
          "description": "Path to set for the cookie."
        },
        "ttl": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "Lifetime of the cookie."
        }
      },
      "type": "object",
      "required": [
        "name",
        "path",
        "ttl"
      ]
    },
    "google-native:compute/v1:ConsistentHashLoadBalancerSettingsResponse": {
      "description": "This message defines settings for a consistent hash style load balancer.",
      "properties": {
        "httpCookie": {
          "$ref": "#/types/google-native:compute%2Fv1:ConsistentHashLoadBalancerSettingsHttpCookieResponse",
          "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "httpHeaderName": {
          "type": "string",
          "description": "The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD."
        },
        "minimumRingSize": {
          "type": "string",
          "description": "The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node."
        }
      },
      "type": "object",
      "required": [
        "httpCookie",
        "httpHeaderName",
        "minimumRingSize"
      ]
    },
    "google-native:compute/v1:CorsPolicy": {
      "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard.",
      "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. Default is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies a regular expression that matches allowed origins. For more information about the regular expression syntax, see Syntax. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that is allowed to do CORS requests. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes."
        },
        "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."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "integer",
          "description": "Specifies how long results of a preflight request can be cached in seconds. This field translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:CorsPolicyResponse": {
      "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard.",
      "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. Default is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies a regular expression that matches allowed origins. For more information about the regular expression syntax, see Syntax. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that is allowed to do CORS requests. An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes."
        },
        "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."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for the Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "integer",
          "description": "Specifies how long results of a preflight request can be cached in seconds. This field translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object",
      "required": [
        "allowCredentials",
        "allowHeaders",
        "allowMethods",
        "allowOriginRegexes",
        "allowOrigins",
        "disabled",
        "exposeHeaders",
        "maxAge"
      ]
    },
    "google-native:compute/v1:CustomerEncryptionKey": {
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 "
        },
        "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. For example: \"kmsKeyServiceAccount\": \"name@project_id.iam.gserviceaccount.com/ "
        },
        "rawKey": {
          "type": "string",
          "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rawKey\": \"SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=\" "
        },
        "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. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rsaEncryptedKey\": \"ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFH z0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoD D6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oe==\" The key must meet the following requirements before you can provide it to Compute Engine: 1. The key is wrapped using a RSA public key certificate provided by Google. 2. After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Gets the RSA public key certificate provided by Google at: https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:CustomerEncryptionKeyResponse": {
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 "
        },
        "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. For example: \"kmsKeyServiceAccount\": \"name@project_id.iam.gserviceaccount.com/ "
        },
        "rawKey": {
          "type": "string",
          "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rawKey\": \"SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=\" "
        },
        "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. You can provide either the rawKey or the rsaEncryptedKey. For example: \"rsaEncryptedKey\": \"ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFH z0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoD D6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oe==\" The key must meet the following requirements before you can provide it to Compute Engine: 1. The key is wrapped using a RSA public key certificate provided by Google. 2. After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Gets the RSA public key certificate provided by Google at: https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem "
        },
        "sha256": {
          "type": "string",
          "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName",
        "kmsKeyServiceAccount",
        "rawKey",
        "rsaEncryptedKey",
        "sha256"
      ]
    },
    "google-native:compute/v1:DeprecationStatus": {
      "description": "Deprecation status for a public resource.",
      "properties": {
        "deleted": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "deprecated": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "obsolete": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "replacement": {
          "type": "string",
          "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
        },
        "state": {
          "$ref": "#/types/google-native:compute%2Fv1:DeprecationStatusState",
          "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:DeprecationStatusResponse": {
      "description": "Deprecation status for a public resource.",
      "properties": {
        "deleted": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "deprecated": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "obsolete": {
          "type": "string",
          "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
        },
        "replacement": {
          "type": "string",
          "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
        },
        "state": {
          "type": "string",
          "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error."
        }
      },
      "type": "object",
      "required": [
        "deleted",
        "deprecated",
        "obsolete",
        "replacement",
        "state"
      ]
    },
    "google-native:compute/v1:DeprecationStatusState": {
      "description": "The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "value": "ACTIVE"
        },
        {
          "name": "Deleted",
          "value": "DELETED"
        },
        {
          "name": "Deprecated",
          "value": "DEPRECATED"
        },
        {
          "name": "Obsolete",
          "value": "OBSOLETE"
        }
      ]
    },
    "google-native:compute/v1:DiskArchitecture": {
      "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/v1:DiskAsyncReplication": {
      "properties": {
        "disk": {
          "type": "string",
          "description": "The other disk asynchronously replicated to or from the current disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:DiskAsyncReplicationResponse": {
      "properties": {
        "consistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy if replication was started on the disk as a member of a group."
        },
        "consistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy if replication was started on the disk as a member of a group."
        },
        "disk": {
          "type": "string",
          "description": "The other disk asynchronously replicated to or from the current disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        },
        "diskId": {
          "type": "string",
          "description": "The unique ID of the other disk asynchronously replicated to or from the current disk. This value identifies the exact disk that was used to create this replication. For example, if you started replicating the persistent disk from a disk that was later deleted and recreated under the same name, the disk ID would identify the exact version of the disk that was used."
        }
      },
      "type": "object",
      "required": [
        "consistencyGroupPolicy",
        "consistencyGroupPolicyId",
        "disk",
        "diskId"
      ]
    },
    "google-native:compute/v1:DiskInstantiationConfig": {
      "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "customImage": {
          "type": "string",
          "description": "The custom source image to be used to restore this disk when instantiating this instance template."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the device name of the disk to which the configurations apply to."
        },
        "instantiateFrom": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskInstantiationConfigInstantiateFrom",
          "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:DiskInstantiationConfigInstantiateFrom": {
      "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. ",
      "type": "string",
      "enum": [
        {
          "name": "AttachReadOnly",
          "description": "Attach the existing disk in read-only mode. The request will fail if the disk was attached in read-write mode on the source instance. Applicable to: read-only disks.",
          "value": "ATTACH_READ_ONLY"
        },
        {
          "name": "Blank",
          "description": "Create a blank disk. The disk will be created unformatted. Applicable to: additional read-write disks, local SSDs.",
          "value": "BLANK"
        },
        {
          "name": "CustomImage",
          "description": "Use the custom image specified in the custom_image field. Applicable to: boot disk, additional read-write disks.",
          "value": "CUSTOM_IMAGE"
        },
        {
          "name": "Default",
          "description": "Use the default instantiation option for the corresponding type of disk. For boot disk and any other R/W disks, new custom images will be created from each disk. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes.",
          "value": "DEFAULT"
        },
        {
          "name": "DoNotInclude",
          "description": "Do not include the disk in the instance template. Applicable to: additional read-write disks, local SSDs, read-only disks.",
          "value": "DO_NOT_INCLUDE"
        },
        {
          "name": "SourceImage",
          "description": "Use the same source image used for creation of the source instance's corresponding disk. The request will fail if the source VM's disk was created from a snapshot. Applicable to: boot disk, additional read-write disks.",
          "value": "SOURCE_IMAGE"
        },
        {
          "name": "SourceImageFamily",
          "description": "Use the same source image family used for creation of the source instance's corresponding disk. The request will fail if the source image of the source disk does not belong to any image family. Applicable to: boot disk, additional read-write disks.",
          "value": "SOURCE_IMAGE_FAMILY"
        }
      ]
    },
    "google-native:compute/v1:DiskInstantiationConfigResponse": {
      "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "customImage": {
          "type": "string",
          "description": "The custom source image to be used to restore this disk when instantiating this instance template."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the device name of the disk to which the configurations apply to."
        },
        "instantiateFrom": {
          "type": "string",
          "description": "Specifies whether to include the disk and what image to use. Possible values are: - source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. - custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. - attach-read-only: to attach a read-only disk. Applicable to read-only disks. - do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks. "
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "customImage",
        "deviceName",
        "instantiateFrom"
      ]
    },
    "google-native:compute/v1:DiskParams": {
      "description": "Additional disk params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:DiskParamsResponse": {
      "description": "Additional disk params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the disk. 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 & PATCH) when empty."
        }
      },
      "type": "object",
      "required": [
        "resourceManagerTags"
      ]
    },
    "google-native:compute/v1:DiskResourceStatusAsyncReplicationStatusResponse": {
      "properties": {
        "state": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:compute/v1:DiskResourceStatusResponse": {
      "properties": {
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskResourceStatusAsyncReplicationStatusResponse"
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key: disk, value: AsyncReplicationStatus message"
        }
      },
      "type": "object",
      "required": [
        "asyncPrimaryDisk",
        "asyncSecondaryDisks"
      ]
    },
    "google-native:compute/v1:DisplayDevice": {
      "description": "A set of Display Device options",
      "properties": {
        "enableDisplay": {
          "type": "boolean",
          "description": "Defines whether the instance has Display enabled."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:DisplayDeviceResponse": {
      "description": "A set of Display Device options",
      "properties": {
        "enableDisplay": {
          "type": "boolean",
          "description": "Defines whether the instance has Display enabled."
        }
      },
      "type": "object",
      "required": [
        "enableDisplay"
      ]
    },
    "google-native:compute/v1:DistributionPolicy": {
      "properties": {
        "targetShape": {
          "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicyTargetShape",
          "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType)."
        },
        "zones": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicyZoneConfiguration"
          },
          "description": "Zones where the regional managed instance group will create and manage its instances."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:DistributionPolicyResponse": {
      "properties": {
        "targetShape": {
          "type": "string",
          "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType)."
        },
        "zones": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicyZoneConfigurationResponse"
          },
          "description": "Zones where the regional managed instance group will create and manage its instances."
        }
      },
      "type": "object",
      "required": [
        "targetShape",
        "zones"
      ]
    },
    "google-native:compute/v1:DistributionPolicyTargetShape": {
      "description": "The distribution shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType).",
      "type": "string",
      "enum": [
        {
          "name": "Any",
          "description": "The group picks zones for creating VM instances to fulfill the requested number of VMs within present resource constraints and to maximize utilization of unused zonal reservations. Recommended for batch workloads that do not require high availability.",
          "value": "ANY"
        },
        {
          "name": "AnySingleZone",
          "description": "The group creates all VM instances within a single zone. The zone is selected based on the present resource constraints and to maximize utilization of unused zonal reservations. Recommended for batch workloads with heavy interprocess communication.",
          "value": "ANY_SINGLE_ZONE"
        },
        {
          "name": "Balanced",
          "description": "The group prioritizes acquisition of resources, scheduling VMs in zones where resources are available while distributing VMs as evenly as possible across selected zones to minimize the impact of zonal failure. Recommended for highly available serving workloads.",
          "value": "BALANCED"
        },
        {
          "name": "Even",
          "description": "The group schedules VM instance creation and deletion to achieve and maintain an even number of managed instances across the selected zones. The distribution is even when the number of managed instances does not differ by more than 1 between any two zones. Recommended for highly available serving workloads.",
          "value": "EVEN"
        }
      ]
    },
    "google-native:compute/v1:DistributionPolicyZoneConfiguration": {
      "properties": {
        "zone": {
          "type": "string",
          "description": "The URL of the zone. The zone must exist in the region where the managed instance group is located."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:DistributionPolicyZoneConfigurationResponse": {
      "properties": {
        "zone": {
          "type": "string",
          "description": "The URL of the zone. The zone must exist in the region where the managed instance group is located."
        }
      },
      "type": "object",
      "required": [
        "zone"
      ]
    },
    "google-native:compute/v1:Duration": {
      "description": "A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". Range is approximately 10,000 years.",
      "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."
        },
        "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"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:DurationResponse": {
      "description": "A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". Range is approximately 10,000 years.",
      "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."
        },
        "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"
        }
      },
      "type": "object",
      "required": [
        "nanos",
        "seconds"
      ]
    },
    "google-native:compute/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:compute/v1:ExternalVpnGatewayInterface": {
      "description": "The interface for the external VPN gateway.",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The numeric ID of this interface. The allowed input values for this id for different redundancy types of external VPN gateway: - SINGLE_IP_INTERNALLY_REDUNDANT - 0 - TWO_IPS_REDUNDANCY - 0, 1 - FOUR_IPS_REDUNDANCY - 0, 1, 2, 3 "
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface in the external VPN gateway. Only IPv4 is supported. This IP address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ExternalVpnGatewayInterfaceResponse": {
      "description": "The interface for the external VPN gateway.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface in the external VPN gateway. Only IPv4 is supported. This IP address can be either from your on-premise gateway or another Cloud provider's VPN gateway, it cannot be an IP address from Google Compute Engine."
        }
      },
      "type": "object",
      "required": [
        "ipAddress"
      ]
    },
    "google-native:compute/v1:ExternalVpnGatewayRedundancyType": {
      "description": "Indicates the user-supplied redundancy type of this external VPN gateway.",
      "type": "string",
      "enum": [
        {
          "name": "FourIpsRedundancy",
          "description": "The external VPN gateway has four public IP addresses; at the time of writing this API, the AWS virtual private gateway is an example which has four public IP addresses for high availability connections; there should be two VPN connections in the AWS virtual private gateway , each AWS VPN connection has two public IP addresses; please make sure to put two public IP addresses from one AWS VPN connection into interfaces 0 and 1 of this external VPN gateway, and put the other two public IP addresses from another AWS VPN connection into interfaces 2 and 3 of this external VPN gateway. When displaying highly available configuration status for the VPN tunnels connected to FOUR_IPS_REDUNDANCY external VPN gateway, Google will always detect whether interfaces 0 and 1 are connected on one interface of HA Cloud VPN gateway, and detect whether interfaces 2 and 3 are connected to another interface of the HA Cloud VPN gateway.",
          "value": "FOUR_IPS_REDUNDANCY"
        },
        {
          "name": "SingleIpInternallyRedundant",
          "description": "The external VPN gateway has only one public IP address which internally provide redundancy or failover.",
          "value": "SINGLE_IP_INTERNALLY_REDUNDANT"
        },
        {
          "name": "TwoIpsRedundancy",
          "description": "The external VPN gateway has two public IP addresses which are redundant with each other, the following two types of setup on your on-premises side would have this type of redundancy: (1) Two separate on-premises gateways, each with one public IP address, the two on-premises gateways are redundant with each other. (2) A single on-premise gateway with two public IP addresses that are redundant with eatch other.",
          "value": "TWO_IPS_REDUNDANCY"
        }
      ]
    },
    "google-native:compute/v1:FileContentBuffer": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The raw content in the secure keys file."
        },
        "fileType": {
          "$ref": "#/types/google-native:compute%2Fv1:FileContentBufferFileType",
          "description": "The file type of source file."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FileContentBufferFileType": {
      "description": "The file type of source file.",
      "type": "string",
      "enum": [
        {
          "name": "Bin",
          "value": "BIN"
        },
        {
          "name": "Undefined",
          "value": "UNDEFINED"
        },
        {
          "name": "X509",
          "value": "X509"
        }
      ]
    },
    "google-native:compute/v1:FileContentBufferResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The raw content in the secure keys file."
        },
        "fileType": {
          "type": "string",
          "description": "The file type of source file."
        }
      },
      "type": "object",
      "required": [
        "content",
        "fileType"
      ]
    },
    "google-native:compute/v1:FirewallAllowedItem": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FirewallAllowedItemResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/v1:FirewallDeniedItem": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FirewallDeniedItemResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp) or the IP protocol number."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An optional list of ports to which this rule applies. This field is only applicable for the 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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/v1:FirewallDirection": {
      "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields.",
      "type": "string",
      "enum": [
        {
          "name": "Egress",
          "description": "Indicates that firewall should apply to outgoing traffic.",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "description": "Indicates that firewall should apply to incoming traffic.",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/v1:FirewallLogConfig": {
      "description": "The available logging options for a firewall rule.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "This field denotes whether to enable logging for a particular firewall rule."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fv1:FirewallLogConfigMetadata",
          "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FirewallLogConfigMetadata": {
      "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs.",
      "type": "string",
      "enum": [
        {
          "name": "ExcludeAllMetadata",
          "value": "EXCLUDE_ALL_METADATA"
        },
        {
          "name": "IncludeAllMetadata",
          "value": "INCLUDE_ALL_METADATA"
        }
      ]
    },
    "google-native:compute/v1:FirewallLogConfigResponse": {
      "description": "The available logging options for a firewall rule.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "This field denotes whether to enable logging for a particular firewall rule."
        },
        "metadata": {
          "type": "string",
          "description": "This field can only be specified for a particular firewall rule if logging is enabled for that rule. This field denotes whether to include or exclude metadata for firewall logs."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "metadata"
      ]
    },
    "google-native:compute/v1:FirewallPolicyAssociation": {
      "properties": {
        "attachmentTarget": {
          "type": "string",
          "description": "The target that the firewall policy is attached to."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FirewallPolicyAssociationResponse": {
      "properties": {
        "attachmentTarget": {
          "type": "string",
          "description": "The target that the firewall policy is attached to."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. The display name of the firewall policy of the association."
        },
        "firewallPolicyId": {
          "type": "string",
          "description": "The firewall policy ID of the association."
        },
        "name": {
          "type": "string",
          "description": "The name for an association."
        },
        "shortName": {
          "type": "string",
          "description": "The short name of the firewall policy of the association."
        }
      },
      "type": "object",
      "required": [
        "attachmentTarget",
        "displayName",
        "firewallPolicyId",
        "name",
        "shortName"
      ]
    },
    "google-native:compute/v1:FirewallPolicyRule": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the client connection triggers the rule. Valid actions are \"allow\", \"deny\" and \"goto_next\"."
        },
        "description": {
          "type": "string",
          "description": "An optional description for this resource."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleDirection",
          "description": "The direction in which this rule applies."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall policy rule is disabled. When set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist. If this is unspecified, the firewall policy rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules."
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleMatcher",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority."
        },
        "ruleName": {
          "type": "string",
          "description": "An optional name for the rule. This field is not a unique identifier and can be updated."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule."
        },
        "targetSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleSecureTag"
          },
          "description": "A list of secure tags that controls which instances the firewall rule applies to. If targetSecureTag are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the target_secure_tag are in INEFFECTIVE state, then this rule will be ignored. targetSecureTag may not be set at the same time as targetServiceAccounts. If neither targetServiceAccounts nor targetSecureTag are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FirewallPolicyRuleDirection": {
      "description": "The direction in which this rule applies.",
      "type": "string",
      "enum": [
        {
          "name": "Egress",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/v1:FirewallPolicyRuleMatcher": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "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."
        },
        "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."
        },
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "destThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleMatcherLayer4Config"
          },
          "description": "Pairs of IP protocols and ports that the rule should match."
        },
        "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."
        },
        "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."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "srcSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleSecureTag"
          },
          "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."
        },
        "srcThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FirewallPolicyRuleMatcherLayer4Config": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FirewallPolicyRuleMatcherLayer4ConfigResponse": {
      "properties": {
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
        },
        "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. Example inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"]."
        }
      },
      "type": "object",
      "required": [
        "ipProtocol",
        "ports"
      ]
    },
    "google-native:compute/v1:FirewallPolicyRuleMatcherResponse": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "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."
        },
        "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."
        },
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "destThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination."
        },
        "layer4Configs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleMatcherLayer4ConfigResponse"
          },
          "description": "Pairs of IP protocols and ports that the rule should match."
        },
        "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."
        },
        "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."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000."
        },
        "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."
        },
        "srcSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleSecureTagResponse"
          },
          "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."
        },
        "srcThreatIntelligences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source."
        }
      },
      "type": "object",
      "required": [
        "destAddressGroups",
        "destFqdns",
        "destIpRanges",
        "destRegionCodes",
        "destThreatIntelligences",
        "layer4Configs",
        "srcAddressGroups",
        "srcFqdns",
        "srcIpRanges",
        "srcRegionCodes",
        "srcSecureTags",
        "srcThreatIntelligences"
      ]
    },
    "google-native:compute/v1:FirewallPolicyRuleResponse": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the client connection triggers the rule. Valid actions are \"allow\", \"deny\" and \"goto_next\"."
        },
        "description": {
          "type": "string",
          "description": "An optional description for this resource."
        },
        "direction": {
          "type": "string",
          "description": "The direction in which this rule applies."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall policy rule is disabled. When set to true, the firewall policy rule is not enforced and traffic behaves as if it did not exist. If this is unspecified, the firewall policy rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Denotes whether to enable logging for a particular rule. If logging is enabled, logs will be exported to the configured export destination in Stackdriver. Logs may be exported to BigQuery or Pub/Sub. Note: you cannot enable logging on \"goto_next\" rules."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyRule for firewall policy rules"
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleMatcherResponse",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest prority."
        },
        "ruleName": {
          "type": "string",
          "description": "An optional name for the rule. This field is not a unique identifier and can be updated."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Calculation of the complexity of a single firewall policy rule."
        },
        "targetResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network resource URLs to which this rule applies. This field allows you to control which network's VMs get this rule. If this field is left blank, all VMs within the organization will receive the rule."
        },
        "targetSecureTags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleSecureTagResponse"
          },
          "description": "A list of secure tags that controls which instances the firewall rule applies to. If targetSecureTag are specified, then the firewall rule applies only to instances in the VPC network that have one of those EFFECTIVE secure tags, if all the target_secure_tag are in INEFFECTIVE state, then this rule will be ignored. targetSecureTag may not be set at the same time as targetServiceAccounts. If neither targetServiceAccounts nor targetSecureTag are specified, the firewall rule applies to all instances on the specified network. Maximum number of target label tags allowed is 256."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating the sets of instances that are applied with this rule."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "direction",
        "disabled",
        "enableLogging",
        "kind",
        "match",
        "priority",
        "ruleName",
        "ruleTupleCount",
        "targetResources",
        "targetSecureTags",
        "targetServiceAccounts"
      ]
    },
    "google-native:compute/v1:FirewallPolicyRuleSecureTag": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the secure tag, created with TagManager's TagValue API."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FirewallPolicyRuleSecureTagResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the secure tag, created with TagManager's TagValue API."
        },
        "state": {
          "type": "string",
          "description": "State of the secure tag, either `EFFECTIVE` or `INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted or its network is deleted."
        }
      },
      "type": "object",
      "required": [
        "name",
        "state"
      ]
    },
    "google-native:compute/v1:FixedOrPercent": {
      "description": "Encapsulates numeric value that can be either absolute or relative.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed number of VM instances. This must be a positive integer."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:FixedOrPercentResponse": {
      "description": "Encapsulates numeric value that can be either absolute or relative.",
      "properties": {
        "calculated": {
          "type": "integer",
          "description": "Absolute value of VM instances calculated based on the specific mode. - If the value is fixed, then the calculated value is equal to the fixed value. - If the value is a percent, then the calculated value is percent/100 * targetSize. For example, the calculated value of a 80% of a managed instance group with 150 instances would be (80/100 * 150) = 120 VM instances. If there is a remainder, the number is rounded. "
        },
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed number of VM instances. This must be a positive integer."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%."
        }
      },
      "type": "object",
      "required": [
        "calculated",
        "fixed",
        "percent"
      ]
    },
    "google-native:compute/v1:ForwardingRuleIpProtocol": {
      "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
      "type": "string",
      "enum": [
        {
          "name": "Ah",
          "value": "AH"
        },
        {
          "name": "Esp",
          "value": "ESP"
        },
        {
          "name": "Icmp",
          "value": "ICMP"
        },
        {
          "name": "L3Default",
          "value": "L3_DEFAULT"
        },
        {
          "name": "Sctp",
          "value": "SCTP"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/v1:ForwardingRuleIpVersion": {
      "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/v1:ForwardingRuleLoadBalancingScheme": {
      "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/v1:ForwardingRuleNetworkTier": {
      "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/v1:ForwardingRulePscConnectionStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Accepted",
          "description": "The connection has been accepted by the producer.",
          "value": "ACCEPTED"
        },
        {
          "name": "Closed",
          "description": "The connection has been closed by the producer and will not serve traffic going forward.",
          "value": "CLOSED"
        },
        {
          "name": "NeedsAttention",
          "description": "The connection has been accepted by the producer, but the producer needs to take further action before the forwarding rule can serve traffic.",
          "value": "NEEDS_ATTENTION"
        },
        {
          "name": "Pending",
          "description": "The connection is pending acceptance by the producer.",
          "value": "PENDING"
        },
        {
          "name": "Rejected",
          "description": "The connection has been rejected by the producer.",
          "value": "REJECTED"
        },
        {
          "name": "StatusUnspecified",
          "value": "STATUS_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:ForwardingRuleServiceDirectoryRegistration": {
      "description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Service Directory namespace to register the forwarding rule under."
        },
        "service": {
          "type": "string",
          "description": "Service Directory service to register the forwarding rule under."
        },
        "serviceDirectoryRegion": {
          "type": "string",
          "description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ForwardingRuleServiceDirectoryRegistrationResponse": {
      "description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Service Directory namespace to register the forwarding rule under."
        },
        "service": {
          "type": "string",
          "description": "Service Directory service to register the forwarding rule under."
        },
        "serviceDirectoryRegion": {
          "type": "string",
          "description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region."
        }
      },
      "type": "object",
      "required": [
        "namespace",
        "service",
        "serviceDirectoryRegion"
      ]
    },
    "google-native:compute/v1:GRPCHealthCheck": {
      "properties": {
        "grpcServiceName": {
          "type": "string",
          "description": "The gRPC service name for the health check. This field is optional. The value of grpc_service_name has the following meanings by convention: - Empty service_name means the overall status of all services at the backend. - Non-empty service_name means the health of that gRPC service, as defined by the owner of the service. The grpc_service_name can only be ASCII."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fv1:GRPCHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:GRPCHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/v1:GRPCHealthCheckResponse": {
      "properties": {
        "grpcServiceName": {
          "type": "string",
          "description": "The gRPC service name for the health check. This field is optional. The value of grpc_service_name has the following meanings by convention: - Empty service_name means the overall status of all services at the backend. - Non-empty service_name means the health of that gRPC service, as defined by the owner of the service. The grpc_service_name can only be ASCII."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        }
      },
      "type": "object",
      "required": [
        "grpcServiceName",
        "port",
        "portName",
        "portSpecification"
      ]
    },
    "google-native:compute/v1:GlobalAddressAddressType": {
      "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "A publicly visible external IP address.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "A private network IP address, for use with an Instance or Internal Load Balancer forwarding rule.",
          "value": "INTERNAL"
        },
        {
          "name": "UnspecifiedType",
          "value": "UNSPECIFIED_TYPE"
        }
      ]
    },
    "google-native:compute/v1:GlobalAddressIpVersion": {
      "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/v1:GlobalAddressIpv6EndpointType": {
      "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
      "type": "string",
      "enum": [
        {
          "name": "Netlb",
          "description": "Reserved IPv6 address can be used on network load balancer.",
          "value": "NETLB"
        },
        {
          "name": "Vm",
          "description": "Reserved IPv6 address can be used on VM.",
          "value": "VM"
        }
      ]
    },
    "google-native:compute/v1:GlobalAddressNetworkTier": {
      "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/v1:GlobalAddressPurpose": {
      "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
      "type": "string",
      "enum": [
        {
          "name": "DnsResolver",
          "description": "DNS resolver address in the subnetwork.",
          "value": "DNS_RESOLVER"
        },
        {
          "name": "GceEndpoint",
          "description": "VM internal/alias IP, Internal LB service IP, etc.",
          "value": "GCE_ENDPOINT"
        },
        {
          "name": "IpsecInterconnect",
          "description": "A regional internal IP address range reserved for the VLAN attachment that is used in HA VPN over Cloud Interconnect. This regional internal IP address range must not overlap with any IP address range of subnet/route in the VPC network and its peering networks. After the VLAN attachment is created with the reserved IP address range, when creating a new VPN gateway, its interface IP address is allocated from the associated VLAN attachment’s IP address range.",
          "value": "IPSEC_INTERCONNECT"
        },
        {
          "name": "NatAuto",
          "description": "External IP automatically reserved for Cloud NAT.",
          "value": "NAT_AUTO"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "A private network IP address that can be used to configure Private Service Connect. This purpose can be specified only for GLOBAL addresses of Type INTERNAL",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "A regional internal IP address range reserved for Serverless.",
          "value": "SERVERLESS"
        },
        {
          "name": "SharedLoadbalancerVip",
          "description": "A private network IP address that can be shared by multiple Internal Load Balancer forwarding rules.",
          "value": "SHARED_LOADBALANCER_VIP"
        },
        {
          "name": "VpcPeering",
          "description": "IP range for peer networks.",
          "value": "VPC_PEERING"
        }
      ]
    },
    "google-native:compute/v1:GlobalForwardingRuleIpProtocol": {
      "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
      "type": "string",
      "enum": [
        {
          "name": "Ah",
          "value": "AH"
        },
        {
          "name": "Esp",
          "value": "ESP"
        },
        {
          "name": "Icmp",
          "value": "ICMP"
        },
        {
          "name": "L3Default",
          "value": "L3_DEFAULT"
        },
        {
          "name": "Sctp",
          "value": "SCTP"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/v1:GlobalForwardingRuleIpVersion": {
      "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "UnspecifiedVersion",
          "value": "UNSPECIFIED_VERSION"
        }
      ]
    },
    "google-native:compute/v1:GlobalForwardingRuleLoadBalancingScheme": {
      "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/v1:GlobalForwardingRuleNetworkTier": {
      "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/v1:GlobalForwardingRulePscConnectionStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Accepted",
          "description": "The connection has been accepted by the producer.",
          "value": "ACCEPTED"
        },
        {
          "name": "Closed",
          "description": "The connection has been closed by the producer and will not serve traffic going forward.",
          "value": "CLOSED"
        },
        {
          "name": "NeedsAttention",
          "description": "The connection has been accepted by the producer, but the producer needs to take further action before the forwarding rule can serve traffic.",
          "value": "NEEDS_ATTENTION"
        },
        {
          "name": "Pending",
          "description": "The connection is pending acceptance by the producer.",
          "value": "PENDING"
        },
        {
          "name": "Rejected",
          "description": "The connection has been rejected by the producer.",
          "value": "REJECTED"
        },
        {
          "name": "StatusUnspecified",
          "value": "STATUS_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:GlobalNetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/v1:GuestOsFeature": {
      "description": "Guest OS features.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureType",
          "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:GuestOsFeatureResponse": {
      "description": "Guest OS features.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:compute/v1:GuestOsFeatureType": {
      "description": "The ID of a supported feature. To add multiple values, use commas to separate values. Set to one or more of the following values: - VIRTIO_SCSI_MULTIQUEUE - WINDOWS - MULTI_IP_SUBNET - UEFI_COMPATIBLE - GVNIC - SEV_CAPABLE - SUSPEND_RESUME_COMPATIBLE - SEV_LIVE_MIGRATABLE - SEV_SNP_CAPABLE For more information, see Enabling guest operating system features.",
      "type": "string",
      "enum": [
        {
          "name": "FeatureTypeUnspecified",
          "value": "FEATURE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Gvnic",
          "value": "GVNIC"
        },
        {
          "name": "MultiIpSubnet",
          "value": "MULTI_IP_SUBNET"
        },
        {
          "name": "SecureBoot",
          "value": "SECURE_BOOT"
        },
        {
          "name": "SevCapable",
          "value": "SEV_CAPABLE"
        },
        {
          "name": "SevLiveMigratable",
          "value": "SEV_LIVE_MIGRATABLE"
        },
        {
          "name": "SevLiveMigratableV2",
          "value": "SEV_LIVE_MIGRATABLE_V2"
        },
        {
          "name": "SevSnpCapable",
          "value": "SEV_SNP_CAPABLE"
        },
        {
          "name": "UefiCompatible",
          "value": "UEFI_COMPATIBLE"
        },
        {
          "name": "VirtioScsiMultiqueue",
          "value": "VIRTIO_SCSI_MULTIQUEUE"
        },
        {
          "name": "Windows",
          "value": "WINDOWS"
        }
      ]
    },
    "google-native:compute/v1:HTTP2HealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP/2 health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTP2HealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTP2HealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP/2 health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP/2 health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HTTP2HealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/v1:HTTP2HealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/v1:HTTP2HealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP/2 health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP/2 health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP/2 health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response"
      ]
    },
    "google-native:compute/v1:HTTPHealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HTTPHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/v1:HTTPHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/v1:HTTPHealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTP health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response"
      ]
    },
    "google-native:compute/v1:HTTPSHealthCheck": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPSHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPSHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTPS health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HTTPSHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/v1:HTTPSHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/v1:HTTPSHealthCheckResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the host header is set to the destination IP address to which health check packets are sent. The destination IP address depends on the type of load balancer. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#hc-packet-dest"
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is /."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based HTTPS health check. In addition to the required HTTP 200 (OK) status code, you can configure the health check to pass only when the backend sends this specific ASCII response string within the first 1024 bytes of the HTTP response body. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-http"
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "requestPath",
        "response"
      ]
    },
    "google-native:compute/v1:HealthCheckLogConfig": {
      "description": "Configuration of logging on a health check. If logging is enabled, logs will be exported to Stackdriver.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default, which means no health check logging will be done."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HealthCheckLogConfigResponse": {
      "description": "Configuration of logging on a health check. If logging is enabled, logs will be exported to Stackdriver.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default, which means no health check logging will be done."
        }
      },
      "type": "object",
      "required": [
        "enable"
      ]
    },
    "google-native:compute/v1:HealthCheckType": {
      "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ssl",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        }
      ]
    },
    "google-native:compute/v1:HostRule": {
      "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of host patterns to match. They must be valid hostnames with optional port numbers in the format host:port. * matches any string of ([a-z0-9-.]*). In that case, * must be the first character, and if followed by anything, the immediate following character must be either - or .. * based matching is not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "pathMatcher": {
          "type": "string",
          "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HostRuleResponse": {
      "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of host patterns to match. They must be valid hostnames with optional port numbers in the format host:port. * matches any string of ([a-z0-9-.]*). In that case, * must be the first character, and if followed by anything, the immediate following character must be either - or .. * based matching is not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "pathMatcher": {
          "type": "string",
          "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
        }
      },
      "type": "object",
      "required": [
        "description",
        "hosts",
        "pathMatcher"
      ]
    },
    "google-native:compute/v1:HttpFaultAbort": {
      "description": "Specification for how requests are aborted as part of fault injection.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be from 200 to 599 inclusive. For gRPC protocol, the gRPC status code is mapped to HTTP status code according to this mapping table. HTTP status 200 is mapped to gRPC status UNKNOWN. Injecting an OK status is currently not supported by Traffic Director."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests that is aborted as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpFaultAbortResponse": {
      "description": "Specification for how requests are aborted as part of fault injection.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be from 200 to 599 inclusive. For gRPC protocol, the gRPC status code is mapped to HTTP status code according to this mapping table. HTTP status 200 is mapped to gRPC status UNKNOWN. Injecting an OK status is currently not supported by Traffic Director."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests that is aborted as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object",
      "required": [
        "httpStatus",
        "percentage"
      ]
    },
    "google-native:compute/v1:HttpFaultDelay": {
      "description": "Specifies the delay introduced by the load balancer before forwarding the request to the backend service as part of fault injection.",
      "properties": {
        "fixedDelay": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "Specifies the value of the fixed delay interval."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests for which a delay is introduced as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpFaultDelayResponse": {
      "description": "Specifies the delay introduced by the load balancer before forwarding the request to the backend service as part of fault injection.",
      "properties": {
        "fixedDelay": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "Specifies the value of the fixed delay interval."
        },
        "percentage": {
          "type": "number",
          "description": "The percentage of traffic for connections, operations, or requests for which a delay is introduced as part of fault injection. The value must be from 0.0 to 100.0 inclusive."
        }
      },
      "type": "object",
      "required": [
        "fixedDelay",
        "percentage"
      ]
    },
    "google-native:compute/v1:HttpFaultInjection": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced by the load balancer on a percentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted by the load balancer for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpFaultAbort",
          "description": "The specification for how client requests are aborted as part of fault injection."
        },
        "delay": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpFaultDelay",
          "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpFaultInjectionResponse": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced by the load balancer on a percentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted by the load balancer for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpFaultAbortResponse",
          "description": "The specification for how client requests are aborted as part of fault injection."
        },
        "delay": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpFaultDelayResponse",
          "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "delay"
      ]
    },
    "google-native:compute/v1:HttpHeaderAction": {
      "description": "The request and response header transformations that take effect before the request is passed along to the selected backendService.",
      "properties": {
        "requestHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderOption"
          },
          "description": "Headers to add to a matching request before forwarding the request to the backendService."
        },
        "requestHeadersToRemove": {
          "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."
        },
        "responseHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderOption"
          },
          "description": "Headers to add the response before sending the response back to the client."
        },
        "responseHeadersToRemove": {
          "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpHeaderActionResponse": {
      "description": "The request and response header transformations that take effect before the request is passed along to the selected backendService.",
      "properties": {
        "requestHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderOptionResponse"
          },
          "description": "Headers to add to a matching request before forwarding the request to the backendService."
        },
        "requestHeadersToRemove": {
          "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."
        },
        "responseHeadersToAdd": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderOptionResponse"
          },
          "description": "Headers to add the response before sending the response back to the client."
        },
        "responseHeadersToRemove": {
          "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."
        }
      },
      "type": "object",
      "required": [
        "requestHeadersToAdd",
        "requestHeadersToRemove",
        "responseHeadersToAdd",
        "responseHeadersToRemove"
      ]
    },
    "google-native:compute/v1:HttpHeaderMatch": {
      "description": "matchRule criteria for request header matches.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value should exactly match contents of exactMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\". When the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true, only non-binary user-specified custom metadata and the `content-type` header are supported. The following transport-level headers cannot be used in header matching rules: `:authority`, `:method`, `:path`, `:scheme`, `user-agent`, `accept-encoding`, `content-encoding`, `grpc-accept-encoding`, `grpc-encoding`, `grpc-previous-rpc-attempts`, `grpc-tags-bin`, `grpc-timeout` and `grpc-trace-bin`."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If set to false, the headerMatch is considered a match if the preceding match criteria are met. If set to true, the headerMatch is considered a match if the preceding match criteria are NOT met. The default setting is false. "
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with the contents of headerName must exist. The match takes place whether or not the request's header has a value. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:compute%2Fv1:Int64RangeMatch",
          "description": "The header value must be an integer and its value must be in the range specified in rangeMatch. If the header does not contain an integer, number or is empty, the match fails. For example for a range [-5, 0] - -3 will match. - 0 will not match. - 0.25 will not match. - -3someString will not match. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. rangeMatch is not supported for load balancers that have loadBalancingScheme set to EXTERNAL."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For more information about regular expression syntax, see Syntax. For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpHeaderMatchResponse": {
      "description": "matchRule criteria for request header matches.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value should exactly match contents of exactMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\". When the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true, only non-binary user-specified custom metadata and the `content-type` header are supported. The following transport-level headers cannot be used in header matching rules: `:authority`, `:method`, `:path`, `:scheme`, `user-agent`, `accept-encoding`, `content-encoding`, `grpc-accept-encoding`, `grpc-encoding`, `grpc-previous-rpc-attempts`, `grpc-tags-bin`, `grpc-timeout` and `grpc-trace-bin`."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If set to false, the headerMatch is considered a match if the preceding match criteria are met. If set to true, the headerMatch is considered a match if the preceding match criteria are NOT met. The default setting is false. "
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with the contents of headerName must exist. The match takes place whether or not the request's header has a value. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:compute%2Fv1:Int64RangeMatchResponse",
          "description": "The header value must be an integer and its value must be in the range specified in rangeMatch. If the header does not contain an integer, number or is empty, the match fails. For example for a range [-5, 0] - -3 will match. - 0 will not match. - 0.25 will not match. - -3someString will not match. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. rangeMatch is not supported for load balancers that have loadBalancingScheme set to EXTERNAL."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For more information about regular expression syntax, see Syntax. For matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffixMatch. Only one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "headerName",
        "invertMatch",
        "prefixMatch",
        "presentMatch",
        "rangeMatch",
        "regexMatch",
        "suffixMatch"
      ]
    },
    "google-native:compute/v1:HttpHeaderOption": {
      "description": "Specification determining how headers are added to requests or responses.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header."
        },
        "headerValue": {
          "type": "string",
          "description": "The value of the header to add."
        },
        "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. The default value is false. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpHeaderOptionResponse": {
      "description": "Specification determining how headers are added to requests or responses.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header."
        },
        "headerValue": {
          "type": "string",
          "description": "The value of the header to add."
        },
        "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. The default value is false. "
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "headerValue",
        "replace"
      ]
    },
    "google-native:compute/v1:HttpQueryParameterMatch": {
      "description": "HttpRouteRuleMatch criteria for a request's query parameter.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter exactly matches the contents of exactMatch. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "name": {
          "type": "string",
          "description": "The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "regexMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For more information about regular expression syntax, see Syntax. Only one of presentMatch, exactMatch, or regexMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpQueryParameterMatchResponse": {
      "description": "HttpRouteRuleMatch criteria for a request's query parameter.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter exactly matches the contents of exactMatch. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "name": {
          "type": "string",
          "description": "The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not. Only one of presentMatch, exactMatch, or regexMatch must be set. "
        },
        "regexMatch": {
          "type": "string",
          "description": "The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For more information about regular expression syntax, see Syntax. Only one of presentMatch, exactMatch, or regexMatch must be set. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED. "
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "name",
        "presentMatch",
        "regexMatch"
      ]
    },
    "google-native:compute/v1:HttpRedirectAction": {
      "description": "Specifies settings for an HTTP redirect.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that is used in the redirect response instead of the one that was supplied in the request. The value must be from 1 to 255 characters."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to HTTPS. If set to false, the URL scheme of the redirected request remains the same as that of the request. This must only be set for URL maps used in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that is used in the redirect response instead of the one that was supplied in the request. pathRedirect cannot be supplied together with prefixRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "prefixRedirect": {
          "type": "string",
          "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch, retaining the remaining portion of the URL before redirecting the request. prefixRedirect cannot be supplied together with pathRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "redirectResponseCode": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectActionRedirectResponseCode",
          "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. "
        },
        "stripQuery": {
          "type": "boolean",
          "description": "If set to true, any accompanying query portion of the original URL is removed before redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpRedirectActionRedirectResponseCode": {
      "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. ",
      "type": "string",
      "enum": [
        {
          "name": "Found",
          "description": "Http Status Code 302 - Found.",
          "value": "FOUND"
        },
        {
          "name": "MovedPermanentlyDefault",
          "description": "Http Status Code 301 - Moved Permanently.",
          "value": "MOVED_PERMANENTLY_DEFAULT"
        },
        {
          "name": "PermanentRedirect",
          "description": "Http Status Code 308 - Permanent Redirect maintaining HTTP method.",
          "value": "PERMANENT_REDIRECT"
        },
        {
          "name": "SeeOther",
          "description": "Http Status Code 303 - See Other.",
          "value": "SEE_OTHER"
        },
        {
          "name": "TemporaryRedirect",
          "description": "Http Status Code 307 - Temporary Redirect maintaining HTTP method.",
          "value": "TEMPORARY_REDIRECT"
        }
      ]
    },
    "google-native:compute/v1:HttpRedirectActionResponse": {
      "description": "Specifies settings for an HTTP redirect.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that is used in the redirect response instead of the one that was supplied in the request. The value must be from 1 to 255 characters."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to HTTPS. If set to false, the URL scheme of the redirected request remains the same as that of the request. This must only be set for URL maps used in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that is used in the redirect response instead of the one that was supplied in the request. pathRedirect cannot be supplied together with prefixRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "prefixRedirect": {
          "type": "string",
          "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch, retaining the remaining portion of the URL before redirecting the request. prefixRedirect cannot be supplied together with pathRedirect. Supply one alone or neither. If neither is supplied, the path of the original request is used for the redirect. The value must be from 1 to 1024 characters."
        },
        "redirectResponseCode": {
          "type": "string",
          "description": "The HTTP Status code to use for this RedirectAction. Supported values are: - MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. - FOUND, which corresponds to 302. - SEE_OTHER which corresponds to 303. - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method is retained. - PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method is retained. "
        },
        "stripQuery": {
          "type": "boolean",
          "description": "If set to true, any accompanying query portion of the original URL is removed before redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false. "
        }
      },
      "type": "object",
      "required": [
        "hostRedirect",
        "httpsRedirect",
        "pathRedirect",
        "prefixRedirect",
        "redirectResponseCode",
        "stripQuery"
      ]
    },
    "google-native:compute/v1:HttpRetryPolicy": {
      "description": "The retry policy associates with HttpRouteRule",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number retries. This number must be > 0. If not specified, defaults to 1."
        },
        "perTryTimeout": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "Specifies a non-zero timeout per retry attempt. If not specified, will use the timeout set in the HttpRouteAction field. If timeout in the HttpRouteAction field is not set, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: - 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. - gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504. - connect-failure: a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts. - 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. - 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. - cancelled: a retry is attempted if the gRPC status code in the response header is set to cancelled. - deadline-exceeded: a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded. - internal: a retry is attempted if the gRPC status code in the response header is set to internal. - resource-exhausted: a retry is attempted if the gRPC status code in the response header is set to resource-exhausted. - unavailable: a retry is attempted if the gRPC status code in the response header is set to unavailable. 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 "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpRetryPolicyResponse": {
      "description": "The retry policy associates with HttpRouteRule",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number retries. This number must be > 0. If not specified, defaults to 1."
        },
        "perTryTimeout": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "Specifies a non-zero timeout per retry attempt. If not specified, will use the timeout set in the HttpRouteAction field. If timeout in the HttpRouteAction field is not set, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: - 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. - gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504. - connect-failure: a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts. - 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. - 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. - cancelled: a retry is attempted if the gRPC status code in the response header is set to cancelled. - deadline-exceeded: a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded. - internal: a retry is attempted if the gRPC status code in the response header is set to internal. - resource-exhausted: a retry is attempted if the gRPC status code in the response header is set to resource-exhausted. - unavailable: a retry is attempted if the gRPC status code in the response header is set to unavailable. 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 "
        }
      },
      "type": "object",
      "required": [
        "numRetries",
        "perTryTimeout",
        "retryConditions"
      ]
    },
    "google-native:compute/v1:HttpRouteAction": {
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:CorsPolicy",
          "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpFaultInjection",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As 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. Similarly requests from clients can be aborted by the load balancer for a percentage of requests. timeout and retry_policy is ignored by clients that are configured with a fault_injection_policy if: 1. The traffic is generated by fault injection AND 2. The fault injection is not a delay fault injection. Fault injection is not supported with the classic Application Load Balancer . To see which load balancers support fault injection, see Load balancing: Routing and traffic management features."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (known as *end-of-stream*), the duration in this field is computed from the beginning of the stream until the response has been processed, including all retries. A stream that does not complete in this duration is closed. If not specified, this field uses the maximum maxStreamDuration value among all backend services associated with the route. This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:RequestMirrorPolicy",
          "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. The 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. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRetryPolicy",
          "description": "Specifies the retry policy associated with this route."
        },
        "timeout": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "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. If not specified, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:compute%2Fv1:UrlRewrite",
          "description": "The spec to modify the URL of the request, before forwarding the request to the matched service. urlRewrite is the only action supported in UrlMaps for classic Application Load Balancers. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "weightedBackendServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:WeightedBackendService"
          },
          "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. After 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."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpRouteActionResponse": {
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:CorsPolicyResponse",
          "description": "The specification for allowing client-side cross-origin requests. For more information about the W3C recommendation for cross-origin resource sharing (CORS), see Fetch API Living Standard. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpFaultInjectionResponse",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As 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. Similarly requests from clients can be aborted by the load balancer for a percentage of requests. timeout and retry_policy is ignored by clients that are configured with a fault_injection_policy if: 1. The traffic is generated by fault injection AND 2. The fault injection is not a delay fault injection. Fault injection is not supported with the classic Application Load Balancer . To see which load balancers support fault injection, see Load balancing: Routing and traffic management features."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "Specifies the maximum duration (timeout) for streams on the selected route. Unlike the timeout field where the timeout duration starts from the time the request has been fully processed (known as *end-of-stream*), the duration in this field is computed from the beginning of the stream until the response has been processed, including all retries. A stream that does not complete in this duration is closed. If not specified, this field uses the maximum maxStreamDuration value among all backend services associated with the route. This field is only allowed if the Url map is used with backend services with loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:RequestMirrorPolicyResponse",
          "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. The 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. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRetryPolicyResponse",
          "description": "Specifies the retry policy associated with this route."
        },
        "timeout": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "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. If not specified, this field uses the largest timeout among all backend services associated with the route. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:compute%2Fv1:UrlRewriteResponse",
          "description": "The spec to modify the URL of the request, before forwarding the request to the matched service. urlRewrite is the only action supported in UrlMaps for classic Application Load Balancers. Not supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "weightedBackendServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:WeightedBackendServiceResponse"
          },
          "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. After 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."
        }
      },
      "type": "object",
      "required": [
        "corsPolicy",
        "faultInjectionPolicy",
        "maxStreamDuration",
        "requestMirrorPolicy",
        "retryPolicy",
        "timeout",
        "urlRewrite",
        "weightedBackendServices"
      ]
    },
    "google-native:compute/v1:HttpRouteRule": {
      "description": "The HttpRouteRule setting specifies how to match an HTTP request and the corresponding routing action that load balancing proxies perform.",
      "properties": {
        "description": {
          "type": "string",
          "description": "The short description conveying the intent of this routeRule. The description can have a maximum length of 1024 characters."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction value specified here is applied before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].routeAction.weightedBackendService.backendServiceWeightAction[].headerAction HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "matchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpRouteRuleMatch"
          },
          "description": "The list of criteria for matching attributes of a request to this routeRule. This list has OR semantics: the request matches this routeRule when any of the matchRules are satisfied. However predicates within a given matchRule have AND semantics. All predicates within a matchRule must match for the request to match the rule."
        },
        "priority": {
          "type": "integer",
          "description": "For routeRules within a given pathMatcher, priority determines the order in which a load balancer interprets routeRules. RouteRules are evaluated in order of priority, from the lowest to highest number. The priority of a rule decreases as its number increases (1, 2, 3, N+1). The first rule that matches the request is applied. You cannot configure two or more routeRules with the same priority. Priority for each rule must be set to a number from 0 to 2147483647 inclusive. Priority numbers can have gaps, which enable you to add or remove rules in the future without affecting the rest of the rules. For example, 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the future without any impact on existing rules."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteAction",
          "description": "In response to a matching matchRule, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of urlRedirect, service or routeAction.weightedBackendService must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a route rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectAction",
          "description": "When this rule is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpRouteRuleMatch": {
      "description": "HttpRouteRuleMatch specifies a set of criteria for matching requests to an HttpRouteRule. All specified criteria must be satisfied for a match to occur.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must exactly match the value specified in fullPathMatch after removing any query parameters and anchor that may be part of the original URL. fullPathMatch must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "headerMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderMatch"
          },
          "description": "Specifies a list of header match criteria, all of which must match corresponding headers in the request."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive. The default value is false. ignoreCase must not be used with regexMatch. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataFilter"
          },
          "description": "Opaque filter criteria used by the load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to the load balancer, xDS clients present node metadata. When there is a match, the relevant routing configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadata filters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here is applied after those specified in ForwardingRule that refers to the UrlMap this HttpRouteRuleMatch belongs to. metadataFilters only applies to load balancers that have loadBalancingScheme set to INTERNAL_SELF_MANAGED. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "pathTemplateMatch": {
          "type": "string",
          "description": "If specified, the route is a pattern match expression that must match the :path header once the query string is removed. A pattern match allows you to match - The value must be between 1 and 1024 characters - The pattern must start with a leading slash (\"/\") - There may be no more than 5 operators in pattern Precisely one of prefix_match, full_path_match, regex_match or path_template_match must be set."
        },
        "prefixMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the request's path must begin with the specified prefixMatch. prefixMatch must begin with a /. The value must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "queryParameterMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpQueryParameterMatch"
          },
          "description": "Specifies a list of query parameter match criteria, all of which must match corresponding query parameters in the request. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "regexMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For more information about regular expression syntax, see Syntax. Only one of prefixMatch, fullPathMatch or regexMatch must be specified. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:HttpRouteRuleMatchResponse": {
      "description": "HttpRouteRuleMatch specifies a set of criteria for matching requests to an HttpRouteRule. All specified criteria must be satisfied for a match to occur.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must exactly match the value specified in fullPathMatch after removing any query parameters and anchor that may be part of the original URL. fullPathMatch must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "headerMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderMatchResponse"
          },
          "description": "Specifies a list of header match criteria, all of which must match corresponding headers in the request."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive. The default value is false. ignoreCase must not be used with regexMatch. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by the load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to the load balancer, xDS clients present node metadata. When there is a match, the relevant routing configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadata filters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here is applied after those specified in ForwardingRule that refers to the UrlMap this HttpRouteRuleMatch belongs to. metadataFilters only applies to load balancers that have loadBalancingScheme set to INTERNAL_SELF_MANAGED. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "pathTemplateMatch": {
          "type": "string",
          "description": "If specified, the route is a pattern match expression that must match the :path header once the query string is removed. A pattern match allows you to match - The value must be between 1 and 1024 characters - The pattern must start with a leading slash (\"/\") - There may be no more than 5 operators in pattern Precisely one of prefix_match, full_path_match, regex_match or path_template_match must be set."
        },
        "prefixMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the request's path must begin with the specified prefixMatch. prefixMatch must begin with a /. The value must be from 1 to 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must be specified."
        },
        "queryParameterMatches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpQueryParameterMatchResponse"
          },
          "description": "Specifies a list of query parameter match criteria, all of which must match corresponding query parameters in the request. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "regexMatch": {
          "type": "string",
          "description": "For satisfying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For more information about regular expression syntax, see Syntax. Only one of prefixMatch, fullPathMatch or regexMatch must be specified. Regular expressions can only be used when the loadBalancingScheme is set to INTERNAL_SELF_MANAGED."
        }
      },
      "type": "object",
      "required": [
        "fullPathMatch",
        "headerMatches",
        "ignoreCase",
        "metadataFilters",
        "pathTemplateMatch",
        "prefixMatch",
        "queryParameterMatches",
        "regexMatch"
      ]
    },
    "google-native:compute/v1:HttpRouteRuleResponse": {
      "description": "The HttpRouteRule setting specifies how to match an HTTP request and the corresponding routing action that load balancing proxies perform.",
      "properties": {
        "description": {
          "type": "string",
          "description": "The short description conveying the intent of this routeRule. The description can have a maximum length of 1024 characters."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction value specified here is applied before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].routeAction.weightedBackendService.backendServiceWeightAction[].headerAction HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "matchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpRouteRuleMatchResponse"
          },
          "description": "The list of criteria for matching attributes of a request to this routeRule. This list has OR semantics: the request matches this routeRule when any of the matchRules are satisfied. However predicates within a given matchRule have AND semantics. All predicates within a matchRule must match for the request to match the rule."
        },
        "priority": {
          "type": "integer",
          "description": "For routeRules within a given pathMatcher, priority determines the order in which a load balancer interprets routeRules. RouteRules are evaluated in order of priority, from the lowest to highest number. The priority of a rule decreases as its number increases (1, 2, 3, N+1). The first rule that matches the request is applied. You cannot configure two or more routeRules with the same priority. Priority for each rule must be set to a number from 0 to 2147483647 inclusive. Priority numbers can have gaps, which enable you to add or remove rules in the future without affecting the rest of the rules. For example, 1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which you could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the future without any impact on existing rules."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteActionResponse",
          "description": "In response to a matching matchRule, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of urlRedirect, service or routeAction.weightedBackendService must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a route rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectActionResponse",
          "description": "When this rule is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object",
      "required": [
        "description",
        "headerAction",
        "matchRules",
        "priority",
        "routeAction",
        "service",
        "urlRedirect"
      ]
    },
    "google-native:compute/v1:ImageArchitecture": {
      "description": "The architecture of the image. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/v1:ImageRawDisk": {
      "description": "The parameters of the raw disk image.",
      "properties": {
        "containerType": {
          "$ref": "#/types/google-native:compute%2Fv1:ImageRawDiskContainerType",
          "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created."
        },
        "sha1Checksum": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
          "deprecationMessage": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created."
        },
        "source": {
          "type": "string",
          "description": "The full Google Cloud Storage URL where the raw disk image archive is stored. The following are valid formats for the URL: - https://storage.googleapis.com/bucket_name/image_archive_name - https://storage.googleapis.com/bucket_name/folder_name/ image_archive_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ImageRawDiskContainerType": {
      "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
      "type": "string",
      "enum": [
        {
          "name": "Tar",
          "value": "TAR"
        }
      ]
    },
    "google-native:compute/v1:ImageRawDiskResponse": {
      "description": "The parameters of the raw disk image.",
      "properties": {
        "containerType": {
          "type": "string",
          "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created."
        },
        "sha1Checksum": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
          "deprecationMessage": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created."
        },
        "source": {
          "type": "string",
          "description": "The full Google Cloud Storage URL where the raw disk image archive is stored. The following are valid formats for the URL: - https://storage.googleapis.com/bucket_name/image_archive_name - https://storage.googleapis.com/bucket_name/folder_name/ image_archive_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        }
      },
      "type": "object",
      "required": [
        "containerType",
        "sha1Checksum",
        "source"
      ]
    },
    "google-native:compute/v1:ImageSourceType": {
      "description": "The type of the image used to create this disk. The default and only valid value is RAW.",
      "type": "string",
      "enum": [
        {
          "name": "Raw",
          "value": "RAW"
        }
      ]
    },
    "google-native:compute/v1:InitialStateConfig": {
      "description": "Initial State for shielded instance, these are public keys which are safe to store in public",
      "properties": {
        "dbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FileContentBuffer"
          },
          "description": "The Key Database (db)."
        },
        "dbxs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FileContentBuffer"
          },
          "description": "The forbidden key database (dbx)."
        },
        "keks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FileContentBuffer"
          },
          "description": "The Key Exchange Key (KEK)."
        },
        "pk": {
          "$ref": "#/types/google-native:compute%2Fv1:FileContentBuffer",
          "description": "The Platform Key (PK)."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:InitialStateConfigResponse": {
      "description": "Initial State for shielded instance, these are public keys which are safe to store in public",
      "properties": {
        "dbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FileContentBufferResponse"
          },
          "description": "The Key Database (db)."
        },
        "dbxs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FileContentBufferResponse"
          },
          "description": "The forbidden key database (dbx)."
        },
        "keks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FileContentBufferResponse"
          },
          "description": "The Key Exchange Key (KEK)."
        },
        "pk": {
          "$ref": "#/types/google-native:compute%2Fv1:FileContentBufferResponse",
          "description": "The Platform Key (PK)."
        }
      },
      "type": "object",
      "required": [
        "dbs",
        "dbxs",
        "keks",
        "pk"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerActionsSummaryResponse": {
      "properties": {
        "abandoning": {
          "type": "integer",
          "description": "The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it."
        },
        "creating": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully. If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated."
        },
        "creatingWithoutRetries": {
          "type": "integer",
          "description": "The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly."
        },
        "deleting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted."
        },
        "none": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are running and have no scheduled actions."
        },
        "recreating": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template."
        },
        "refreshing": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance."
        },
        "restarting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted."
        },
        "resuming": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be resumed or are currently being resumed."
        },
        "starting": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be started or are currently being started."
        },
        "stopping": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be stopped or are currently being stopped."
        },
        "suspending": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are scheduled to be suspended or are currently being suspended."
        },
        "verifying": {
          "type": "integer",
          "description": "The number of instances in the managed instance group that are being verified. See the managedInstances[].currentAction property in the listManagedInstances method documentation."
        }
      },
      "type": "object",
      "required": [
        "abandoning",
        "creating",
        "creatingWithoutRetries",
        "deleting",
        "none",
        "recreating",
        "refreshing",
        "restarting",
        "resuming",
        "starting",
        "stopping",
        "suspending",
        "verifying"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerAutoHealingPolicy": {
      "properties": {
        "healthCheck": {
          "type": "string",
          "description": "The URL for the health check that signals autohealing."
        },
        "initialDelaySec": {
          "type": "integer",
          "description": "The initial delay is the number of seconds that a new VM takes to initialize and run its startup script. During a VM's initial delay period, the MIG ignores unsuccessful health checks because the VM might be in the startup process. This prevents the MIG from prematurely recreating a VM. If the health check receives a healthy response during the initial delay, it indicates that the startup process is complete and the VM is ready. The value of initial delay must be between 0 and 3600 seconds. The default value is 0."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:InstanceGroupManagerAutoHealingPolicyResponse": {
      "properties": {
        "healthCheck": {
          "type": "string",
          "description": "The URL for the health check that signals autohealing."
        },
        "initialDelaySec": {
          "type": "integer",
          "description": "The initial delay is the number of seconds that a new VM takes to initialize and run its startup script. During a VM's initial delay period, the MIG ignores unsuccessful health checks because the VM might be in the startup process. This prevents the MIG from prematurely recreating a VM. If the health check receives a healthy response during the initial delay, it indicates that the startup process is complete and the VM is ready. The value of initial delay must be between 0 and 3600 seconds. The default value is 0."
        }
      },
      "type": "object",
      "required": [
        "healthCheck",
        "initialDelaySec"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerInstanceLifecyclePolicy": {
      "properties": {
        "forceUpdateOnRepair": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair",
          "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair": {
      "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. ",
      "type": "string",
      "enum": [
        {
          "name": "No",
          "value": "NO"
        },
        {
          "name": "Yes",
          "value": "YES"
        }
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerInstanceLifecyclePolicyResponse": {
      "properties": {
        "forceUpdateOnRepair": {
          "type": "string",
          "description": "A bit indicating whether to forcefully apply the group's latest configuration when repairing a VM. Valid options are: - NO (default): If configuration updates are available, they are not forcefully applied during repair. Instead, configuration updates are applied according to the group's update policy. - YES: If configuration updates are available, they are applied during repair. "
        }
      },
      "type": "object",
      "required": [
        "forceUpdateOnRepair"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerListManagedInstancesResults": {
      "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
      "type": "string",
      "enum": [
        {
          "name": "Pageless",
          "description": "(Default) Pagination is disabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are ignored and all instances are returned in a single response.",
          "value": "PAGELESS"
        },
        {
          "name": "Paginated",
          "description": "Pagination is enabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are respected.",
          "value": "PAGINATED"
        }
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerStatusResponse": {
      "properties": {
        "autoscaler": {
          "type": "string",
          "description": "The URL of the Autoscaler that targets this instance group manager."
        },
        "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."
        },
        "stateful": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerStatusStatefulResponse",
          "description": "Stateful status of the given Instance Group Manager."
        },
        "versionTarget": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerStatusVersionTargetResponse",
          "description": "A status of consistency of Instances' versions with their target version specified by version field on Instance Group Manager."
        }
      },
      "type": "object",
      "required": [
        "autoscaler",
        "isStable",
        "stateful",
        "versionTarget"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerStatusStatefulPerInstanceConfigsResponse": {
      "properties": {
        "allEffective": {
          "type": "boolean",
          "description": "A bit indicating if all of the group's per-instance configurations (listed in the output of a listPerInstanceConfigs API call) have status EFFECTIVE or there are no per-instance-configs."
        }
      },
      "type": "object",
      "required": [
        "allEffective"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerStatusStatefulResponse": {
      "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 configuration 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."
        },
        "perInstanceConfigs": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerStatusStatefulPerInstanceConfigsResponse",
          "description": "Status of per-instance configurations on the instance."
        }
      },
      "type": "object",
      "required": [
        "hasStatefulConfig",
        "perInstanceConfigs"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerStatusVersionTargetResponse": {
      "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."
        }
      },
      "type": "object",
      "required": [
        "isReached"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerUpdatePolicy": {
      "properties": {
        "instanceRedistributionType": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyInstanceRedistributionType",
          "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. "
        },
        "maxSurge": {
          "$ref": "#/types/google-native:compute%2Fv1:FixedOrPercent",
          "description": "The maximum number of instances that can be created above the specified targetSize during the update process. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxSurge is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
        },
        "maxUnavailable": {
          "$ref": "#/types/google-native:compute%2Fv1:FixedOrPercent",
          "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied: - The instance's status is RUNNING. - If there is a health check on the instance group, the instance's health check status must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxUnavailable is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
        },
        "minimalAction": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyMinimalAction",
          "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. "
        },
        "mostDisruptiveAllowedAction": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction",
          "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to avoid restarting the VM and to limit disruption as much as possible. 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."
        },
        "replacementMethod": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyReplacementMethod",
          "description": "What action should be used to replace instances. See minimal_action.REPLACE"
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyType",
          "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:InstanceGroupManagerUpdatePolicyInstanceRedistributionType": {
      "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. ",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "No action is being proactively performed in order to bring this IGM to its target instance distribution.",
          "value": "NONE"
        },
        {
          "name": "Proactive",
          "description": "This IGM will actively converge to its target instance distribution.",
          "value": "PROACTIVE"
        }
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerUpdatePolicyMinimalAction": {
      "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. ",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "Do not perform any action.",
          "value": "NONE"
        },
        {
          "name": "Refresh",
          "description": "Do not stop the instance.",
          "value": "REFRESH"
        },
        {
          "name": "Replace",
          "description": "(Default.) Replace the instance according to the replacement method option.",
          "value": "REPLACE"
        },
        {
          "name": "Restart",
          "description": "Stop the instance and start it again.",
          "value": "RESTART"
        }
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction": {
      "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to avoid restarting the VM and to limit disruption as much as possible. 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.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "Do not perform any action.",
          "value": "NONE"
        },
        {
          "name": "Refresh",
          "description": "Do not stop the instance.",
          "value": "REFRESH"
        },
        {
          "name": "Replace",
          "description": "(Default.) Replace the instance according to the replacement method option.",
          "value": "REPLACE"
        },
        {
          "name": "Restart",
          "description": "Stop the instance and start it again.",
          "value": "RESTART"
        }
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerUpdatePolicyReplacementMethod": {
      "description": "What action should be used to replace instances. See minimal_action.REPLACE",
      "type": "string",
      "enum": [
        {
          "name": "Recreate",
          "description": "Instances will be recreated (with the same name)",
          "value": "RECREATE"
        },
        {
          "name": "Substitute",
          "description": "Default option: instances will be deleted and created (with a new name)",
          "value": "SUBSTITUTE"
        }
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerUpdatePolicyResponse": {
      "properties": {
        "instanceRedistributionType": {
          "type": "string",
          "description": "The instance redistribution policy for regional managed instance groups. Valid values are: - PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region. - NONE: For non-autoscaled groups, proactive redistribution is disabled. "
        },
        "maxSurge": {
          "$ref": "#/types/google-native:compute%2Fv1:FixedOrPercentResponse",
          "description": "The maximum number of instances that can be created above the specified targetSize during the update process. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxSurge is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
        },
        "maxUnavailable": {
          "$ref": "#/types/google-native:compute%2Fv1:FixedOrPercentResponse",
          "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied: - The instance's status is RUNNING. - If there is a health check on the instance group, the instance's health check status must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxUnavailable is a fixed value equal to the number of zones in which the managed instance group operates. At least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
        },
        "minimalAction": {
          "type": "string",
          "description": "Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary. - To limit disruption as much as possible, set the minimal action to REFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update. - To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes. "
        },
        "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 avoid restarting the VM and to limit disruption as much as possible. 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."
        },
        "replacementMethod": {
          "type": "string",
          "description": "What action should be used to replace instances. See minimal_action.REPLACE"
        },
        "type": {
          "type": "string",
          "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update."
        }
      },
      "type": "object",
      "required": [
        "instanceRedistributionType",
        "maxSurge",
        "maxUnavailable",
        "minimalAction",
        "mostDisruptiveAllowedAction",
        "replacementMethod",
        "type"
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerUpdatePolicyType": {
      "description": "The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations or OPPORTUNISTIC so that you can select the VMs that you want to update.",
      "type": "string",
      "enum": [
        {
          "name": "Opportunistic",
          "description": "MIG will apply new configurations to existing VMs only when you selectively target specific or all VMs to be updated.",
          "value": "OPPORTUNISTIC"
        },
        {
          "name": "Proactive",
          "description": "MIG will automatically apply new configurations to all or a subset of existing VMs and also to new VMs that are added to the group.",
          "value": "PROACTIVE"
        }
      ]
    },
    "google-native:compute/v1:InstanceGroupManagerVersion": {
      "properties": {
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create new instances in the managed instance group until the `targetSize` for this version is reached. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE; in those cases, existing instances are updated until the `targetSize` for this version is reached."
        },
        "name": {
          "type": "string",
          "description": "Name of the version. Unique among all versions in the scope of this managed instance group."
        },
        "targetSize": {
          "$ref": "#/types/google-native:compute%2Fv1:FixedOrPercent",
          "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: - If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. - if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:InstanceGroupManagerVersionResponse": {
      "properties": {
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create new instances in the managed instance group until the `targetSize` for this version is reached. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE; in those cases, existing instances are updated until the `targetSize` for this version is reached."
        },
        "name": {
          "type": "string",
          "description": "Name of the version. Unique among all versions in the scope of this managed instance group."
        },
        "targetSize": {
          "$ref": "#/types/google-native:compute%2Fv1:FixedOrPercentResponse",
          "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: - If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. - if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
        }
      },
      "type": "object",
      "required": [
        "instanceTemplate",
        "name",
        "targetSize"
      ]
    },
    "google-native:compute/v1:InstanceKeyRevocationActionType": {
      "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "KeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Indicates user chose no operation.",
          "value": "NONE"
        },
        {
          "name": "Stop",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/v1:InstanceParams": {
      "description": "Additional instance params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:InstanceParamsResponse": {
      "description": "Additional instance params.",
      "properties": {
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        }
      },
      "type": "object",
      "required": [
        "resourceManagerTags"
      ]
    },
    "google-native:compute/v1:InstancePrivateIpv6GoogleAccess": {
      "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default.",
      "type": "string",
      "enum": [
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        },
        {
          "name": "InheritFromSubnetwork",
          "description": "Each network interface inherits PrivateIpv6GoogleAccess from its subnetwork.",
          "value": "INHERIT_FROM_SUBNETWORK"
        }
      ]
    },
    "google-native:compute/v1:InstanceProperties": {
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Fv1:AdvancedMachineFeatures",
          "description": "Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:ConfidentialInstanceConfig",
          "description": "Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from these properties."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AttachedDisk"
          },
          "description": "An array of disks that are associated with the instances that are created from these properties."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfig"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from these properties."
        },
        "keyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Fv1:InstancePropertiesKeyRevocationActionType",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from these properties."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from these properties."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fv1:Metadata",
          "description": "The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkInterface"
          },
          "description": "An array of network access configurations for this interface."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkPerformanceConfig",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Fv1:InstancePropertiesPrivateIpv6GoogleAccess",
          "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Fv1:ReservationAffinity",
          "description": "Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fv1:Scheduling",
          "description": "Specifies the scheduling options for the instances that are created from these properties."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ServiceAccount"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:ShieldedInstanceConfig",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fv1:Tags",
          "description": "A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:InstancePropertiesKeyRevocationActionType": {
      "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "KeyRevocationActionTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Indicates user chose no operation.",
          "value": "NONE"
        },
        {
          "name": "Stop",
          "description": "Indicates user chose to opt for VM shutdown on key revocation.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/v1:InstancePropertiesPrivateIpv6GoogleAccess": {
      "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet.",
      "type": "string",
      "enum": [
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services. If specified, the subnetwork who is attached to the instance's default network interface will be assigned an internal IPv6 prefix if it doesn't have before.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        },
        {
          "name": "InheritFromSubnetwork",
          "description": "Each network interface inherits PrivateIpv6GoogleAccess from its subnetwork.",
          "value": "INHERIT_FROM_SUBNETWORK"
        }
      ]
    },
    "google-native:compute/v1:InstancePropertiesResponse": {
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Fv1:AdvancedMachineFeaturesResponse",
          "description": "Controls for advanced machine-related behavior features. Note that for MachineImage, this is not supported yet."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on these properties to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:ConfidentialInstanceConfigResponse",
          "description": "Specifies the Confidential Instance options. Note that for MachineImage, this is not supported yet."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from these properties."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskResponse"
          },
          "description": "An array of disks that are associated with the instances that are created from these properties."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfigResponse"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from these properties."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from these properties."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from these properties."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fv1:MetadataResponse",
          "description": "The metadata key/value pairs to assign to instances that are created from these properties. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkInterfaceResponse"
          },
          "description": "An array of network access configurations for this interface."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkPerformanceConfigResponse",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "The private IPv6 google access type for VMs. If not specified, use INHERIT_FROM_SUBNETWORK as default. Note that for MachineImage, this is not supported yet."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Fv1:ReservationAffinityResponse",
          "description": "Specifies the reservations that instances can consume from. Note that for MachineImage, this is not supported yet."
        },
        "resourceManagerTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource manager tags to be bound to the instance. 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 & PATCH) when empty."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies (names, not URLs) applied to instances created from these properties. Note that for MachineImage, this is not supported yet."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fv1:SchedulingResponse",
          "description": "Specifies the scheduling options for the instances that are created from these properties."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ServiceAccountResponse"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from these properties. Use metadata queries to obtain the access tokens for these instances."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:ShieldedInstanceConfigResponse",
          "description": "Note that for MachineImage, this is not supported yet."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fv1:TagsResponse",
          "description": "A list of tags to apply to the instances that are created from these properties. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "advancedMachineFeatures",
        "canIpForward",
        "confidentialInstanceConfig",
        "description",
        "disks",
        "guestAccelerators",
        "keyRevocationActionType",
        "labels",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "networkInterfaces",
        "networkPerformanceConfig",
        "privateIpv6GoogleAccess",
        "reservationAffinity",
        "resourceManagerTags",
        "resourcePolicies",
        "scheduling",
        "serviceAccounts",
        "shieldedInstanceConfig",
        "tags"
      ]
    },
    "google-native:compute/v1:Int64RangeMatch": {
      "description": "HttpRouteRuleMatch criteria for field values that must stay within the specified integer range.",
      "properties": {
        "rangeEnd": {
          "type": "string",
          "description": "The end of the range (exclusive) in signed long integer format."
        },
        "rangeStart": {
          "type": "string",
          "description": "The start of the range (inclusive) in signed long integer format."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:Int64RangeMatchResponse": {
      "description": "HttpRouteRuleMatch criteria for field values that must stay within the specified integer range.",
      "properties": {
        "rangeEnd": {
          "type": "string",
          "description": "The end of the range (exclusive) in signed long integer format."
        },
        "rangeStart": {
          "type": "string",
          "description": "The start of the range (inclusive) in signed long integer format."
        }
      },
      "type": "object",
      "required": [
        "rangeEnd",
        "rangeStart"
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentBandwidth": {
      "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s ",
      "type": "string",
      "enum": [
        {
          "name": "Bps100m",
          "description": "100 Mbit/s",
          "value": "BPS_100M"
        },
        {
          "name": "Bps10g",
          "description": "10 Gbit/s",
          "value": "BPS_10G"
        },
        {
          "name": "Bps1g",
          "description": "1 Gbit/s",
          "value": "BPS_1G"
        },
        {
          "name": "Bps200m",
          "description": "200 Mbit/s",
          "value": "BPS_200M"
        },
        {
          "name": "Bps20g",
          "description": "20 Gbit/s",
          "value": "BPS_20G"
        },
        {
          "name": "Bps2g",
          "description": "2 Gbit/s",
          "value": "BPS_2G"
        },
        {
          "name": "Bps300m",
          "description": "300 Mbit/s",
          "value": "BPS_300M"
        },
        {
          "name": "Bps400m",
          "description": "400 Mbit/s",
          "value": "BPS_400M"
        },
        {
          "name": "Bps500m",
          "description": "500 Mbit/s",
          "value": "BPS_500M"
        },
        {
          "name": "Bps50g",
          "description": "50 Gbit/s",
          "value": "BPS_50G"
        },
        {
          "name": "Bps50m",
          "description": "50 Mbit/s",
          "value": "BPS_50M"
        },
        {
          "name": "Bps5g",
          "description": "5 Gbit/s",
          "value": "BPS_5G"
        }
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentConfigurationConstraintsBgpPeerASNRangeResponse": {
      "properties": {
        "max": {
          "type": "integer"
        },
        "min": {
          "type": "integer"
        }
      },
      "type": "object",
      "required": [
        "max",
        "min"
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentConfigurationConstraintsResponse": {
      "properties": {
        "bgpMd5": {
          "type": "string",
          "description": "Whether the attachment's BGP session requires/allows/disallows BGP MD5 authentication. This can take one of the following values: MD5_OPTIONAL, MD5_REQUIRED, MD5_UNSUPPORTED. For example, a Cross-Cloud Interconnect connection to a remote cloud provider that requires BGP MD5 authentication has the interconnectRemoteLocation attachment_configuration_constraints.bgp_md5 field set to MD5_REQUIRED, and that property is propagated to the attachment. Similarly, if BGP MD5 is MD5_UNSUPPORTED, an error is returned if MD5 is requested."
        },
        "bgpPeerAsnRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentConfigurationConstraintsBgpPeerASNRangeResponse"
          },
          "description": "List of ASN ranges that the remote location is known to support. Formatted as an array of inclusive ranges {min: min-value, max: max-value}. For example, [{min: 123, max: 123}, {min: 64512, max: 65534}] allows the peer ASN to be 123 or anything in the range 64512-65534. This field is only advisory. Although the API accepts other ranges, these are the ranges that we recommend."
        }
      },
      "type": "object",
      "required": [
        "bgpMd5",
        "bgpPeerAsnRanges"
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentEdgeAvailabilityDomain": {
      "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityDomain1",
          "value": "AVAILABILITY_DOMAIN_1"
        },
        {
          "name": "AvailabilityDomain2",
          "value": "AVAILABILITY_DOMAIN_2"
        },
        {
          "name": "AvailabilityDomainAny",
          "value": "AVAILABILITY_DOMAIN_ANY"
        }
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentEncryption": {
      "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. ",
      "type": "string",
      "enum": [
        {
          "name": "Ipsec",
          "description": "The interconnect attachment will carry only encrypted traffic that is encrypted by an IPsec device such as HA VPN gateway; VMs cannot directly send traffic to or receive traffic from such an interconnect attachment. To use HA VPN over Cloud Interconnect, the interconnect attachment must be created with this option.",
          "value": "IPSEC"
        },
        {
          "name": "None",
          "description": "This is the default value, which means the Interconnect Attachment will carry unencrypted traffic. VMs will be able to send traffic to or receive traffic from such interconnect attachment.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentPartnerMetadata": {
      "description": "Informational metadata about Partner attachments from Partners to display to customers. These fields are propagated from PARTNER_PROVIDER attachments to their corresponding PARTNER attachments.",
      "properties": {
        "interconnectName": {
          "type": "string",
          "description": "Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner's portal. For instance \"Chicago 1\". This value may be validated to match approved Partner values."
        },
        "partnerName": {
          "type": "string",
          "description": "Plain text name of the Partner providing this attachment. This value may be validated to match approved Partner values."
        },
        "portalUrl": {
          "type": "string",
          "description": "URL of the Partner's portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:InterconnectAttachmentPartnerMetadataResponse": {
      "description": "Informational metadata about Partner attachments from Partners to display to customers. These fields are propagated from PARTNER_PROVIDER attachments to their corresponding PARTNER attachments.",
      "properties": {
        "interconnectName": {
          "type": "string",
          "description": "Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner's portal. For instance \"Chicago 1\". This value may be validated to match approved Partner values."
        },
        "partnerName": {
          "type": "string",
          "description": "Plain text name of the Partner providing this attachment. This value may be validated to match approved Partner values."
        },
        "portalUrl": {
          "type": "string",
          "description": "URL of the Partner's portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values."
        }
      },
      "type": "object",
      "required": [
        "interconnectName",
        "partnerName",
        "portalUrl"
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentPrivateInfoResponse": {
      "description": "Information for an interconnect attachment when this belongs to an interconnect of type DEDICATED.",
      "properties": {
        "tag8021q": {
          "type": "integer",
          "description": "802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region."
        }
      },
      "type": "object",
      "required": [
        "tag8021q"
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentStackType": {
      "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "The interconnect attachment can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "The interconnect attachment will only be assigned IPv4 addresses.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/v1:InterconnectAttachmentType": {
      "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. ",
      "type": "string",
      "enum": [
        {
          "name": "Dedicated",
          "description": "Attachment to a dedicated interconnect.",
          "value": "DEDICATED"
        },
        {
          "name": "Partner",
          "description": "Attachment to a partner interconnect, created by the customer.",
          "value": "PARTNER"
        },
        {
          "name": "PartnerProvider",
          "description": "Attachment to a partner interconnect, created by the partner.",
          "value": "PARTNER_PROVIDER"
        }
      ]
    },
    "google-native:compute/v1:InterconnectCircuitInfoResponse": {
      "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only.",
      "properties": {
        "customerDemarcId": {
          "type": "string",
          "description": "Customer-side demarc ID for this circuit."
        },
        "googleCircuitId": {
          "type": "string",
          "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up."
        },
        "googleDemarcId": {
          "type": "string",
          "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA."
        }
      },
      "type": "object",
      "required": [
        "customerDemarcId",
        "googleCircuitId",
        "googleDemarcId"
      ]
    },
    "google-native:compute/v1:InterconnectInterconnectType": {
      "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
      "type": "string",
      "enum": [
        {
          "name": "Dedicated",
          "description": "A dedicated physical interconnection with the customer.",
          "value": "DEDICATED"
        },
        {
          "name": "ItPrivate",
          "description": "[Deprecated] A private, physical interconnection with the customer.",
          "value": "IT_PRIVATE"
        },
        {
          "name": "Partner",
          "description": "A partner-managed interconnection shared between customers via partner.",
          "value": "PARTNER"
        }
      ]
    },
    "google-native:compute/v1:InterconnectLinkType": {
      "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
      "type": "string",
      "enum": [
        {
          "name": "LinkTypeEthernet100gLr",
          "description": "100G Ethernet, LR Optics.",
          "value": "LINK_TYPE_ETHERNET_100G_LR"
        },
        {
          "name": "LinkTypeEthernet10gLr",
          "description": "10G Ethernet, LR Optics. [(rate_bps) = 10000000000];",
          "value": "LINK_TYPE_ETHERNET_10G_LR"
        }
      ]
    },
    "google-native:compute/v1:InterconnectMacsec": {
      "description": "Configuration information for enabling Media Access Control security (MACsec) on this Cloud Interconnect connection between Google and your on-premises router.",
      "properties": {
        "failOpen": {
          "type": "boolean",
          "description": "If set to true, the Interconnect connection is configured with a should-secure MACsec security policy, that allows the Google router to fallback to cleartext traffic if the MKA session cannot be established. By default, the Interconnect connection is configured with a must-secure security policy that drops all traffic if the MKA session cannot be established with your router."
        },
        "preSharedKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectMacsecPreSharedKey"
          },
          "description": "A keychain placeholder describing a set of named key objects along with their start times. A MACsec CKN/CAK is generated for each key in the key chain. Google router automatically picks the key with the most recent startTime when establishing or re-establishing a MACsec secure link."
        }
      },
      "type": "object",
      "required": [
        "preSharedKeys"
      ]
    },
    "google-native:compute/v1:InterconnectMacsecPreSharedKey": {
      "description": "Describes a pre-shared key used to setup MACsec in static connectivity association key (CAK) mode.",
      "properties": {
        "name": {
          "type": "string",
          "description": "A name for this pre-shared key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "startTime": {
          "type": "string",
          "description": "A RFC3339 timestamp on or after which the key is valid. startTime can be in the future. If the keychain has a single key, startTime can be omitted. If the keychain has multiple keys, startTime is mandatory for each key. The start times of keys must be in increasing order. The start times of two consecutive keys must be at least 6 hours apart."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:compute/v1:InterconnectMacsecPreSharedKeyResponse": {
      "description": "Describes a pre-shared key used to setup MACsec in static connectivity association key (CAK) mode.",
      "properties": {
        "name": {
          "type": "string",
          "description": "A name for this pre-shared key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "startTime": {
          "type": "string",
          "description": "A RFC3339 timestamp on or after which the key is valid. startTime can be in the future. If the keychain has a single key, startTime can be omitted. If the keychain has multiple keys, startTime is mandatory for each key. The start times of keys must be in increasing order. The start times of two consecutive keys must be at least 6 hours apart."
        }
      },
      "type": "object",
      "required": [
        "name",
        "startTime"
      ]
    },
    "google-native:compute/v1:InterconnectMacsecResponse": {
      "description": "Configuration information for enabling Media Access Control security (MACsec) on this Cloud Interconnect connection between Google and your on-premises router.",
      "properties": {
        "failOpen": {
          "type": "boolean",
          "description": "If set to true, the Interconnect connection is configured with a should-secure MACsec security policy, that allows the Google router to fallback to cleartext traffic if the MKA session cannot be established. By default, the Interconnect connection is configured with a must-secure security policy that drops all traffic if the MKA session cannot be established with your router."
        },
        "preSharedKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectMacsecPreSharedKeyResponse"
          },
          "description": "A keychain placeholder describing a set of named key objects along with their start times. A MACsec CKN/CAK is generated for each key in the key chain. Google router automatically picks the key with the most recent startTime when establishing or re-establishing a MACsec secure link."
        }
      },
      "type": "object",
      "required": [
        "failOpen",
        "preSharedKeys"
      ]
    },
    "google-native:compute/v1:InterconnectOutageNotificationResponse": {
      "description": "Description of a planned outage on this Interconnect.",
      "properties": {
        "affectedCircuits": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected."
        },
        "description": {
          "type": "string",
          "description": "A description about the purpose of the outage."
        },
        "endTime": {
          "type": "string",
          "description": "Scheduled end time for the outage (milliseconds since Unix epoch)."
        },
        "issueType": {
          "type": "string",
          "description": "Form this outage is expected to take, which can take one of the following values: - OUTAGE: The Interconnect may be completely out of service for some or all of the specified window. - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain up, but with reduced bandwidth. Note that the versions of this enum prefixed with \"IT_\" have been deprecated in favor of the unprefixed values."
        },
        "name": {
          "type": "string",
          "description": "Unique identifier for this outage notification."
        },
        "source": {
          "type": "string",
          "description": "The party that generated this notification, which can take the following value: - GOOGLE: this notification as generated by Google. Note that the value of NSRC_GOOGLE has been deprecated in favor of GOOGLE."
        },
        "startTime": {
          "type": "string",
          "description": "Scheduled start time for the outage (milliseconds since Unix epoch)."
        },
        "state": {
          "type": "string",
          "description": "State of this notification, which can take one of the following values: - ACTIVE: This outage notification is active. The event could be in the past, present, or future. See start_time and end_time for scheduling. - CANCELLED: The outage associated with this notification was cancelled before the outage was due to start. - COMPLETED: The outage associated with this notification is complete. Note that the versions of this enum prefixed with \"NS_\" have been deprecated in favor of the unprefixed values."
        }
      },
      "type": "object",
      "required": [
        "affectedCircuits",
        "description",
        "endTime",
        "issueType",
        "name",
        "source",
        "startTime",
        "state"
      ]
    },
    "google-native:compute/v1:InterconnectRequestedFeaturesItem": {
      "type": "string",
      "enum": [
        {
          "name": "IfMacsec",
          "description": "Media Access Control security (MACsec)",
          "value": "IF_MACSEC"
        }
      ]
    },
    "google-native:compute/v1:LicenseResourceCommitment": {
      "description": "Commitment for a particular license resource.",
      "properties": {
        "amount": {
          "type": "string",
          "description": "The number of licenses purchased."
        },
        "coresPerLicense": {
          "type": "string",
          "description": "Specifies the core range of the instance for which this license applies."
        },
        "license": {
          "type": "string",
          "description": "Any applicable license URI."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:LicenseResourceCommitmentResponse": {
      "description": "Commitment for a particular license resource.",
      "properties": {
        "amount": {
          "type": "string",
          "description": "The number of licenses purchased."
        },
        "coresPerLicense": {
          "type": "string",
          "description": "Specifies the core range of the instance for which this license applies."
        },
        "license": {
          "type": "string",
          "description": "Any applicable license URI."
        }
      },
      "type": "object",
      "required": [
        "amount",
        "coresPerLicense",
        "license"
      ]
    },
    "google-native:compute/v1:LicenseResourceRequirements": {
      "properties": {
        "minGuestCpuCount": {
          "type": "integer",
          "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start."
        },
        "minMemoryMb": {
          "type": "integer",
          "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:LicenseResourceRequirementsResponse": {
      "properties": {
        "minGuestCpuCount": {
          "type": "integer",
          "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start."
        },
        "minMemoryMb": {
          "type": "integer",
          "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start."
        }
      },
      "type": "object",
      "required": [
        "minGuestCpuCount",
        "minMemoryMb"
      ]
    },
    "google-native:compute/v1:LocalDisk": {
      "properties": {
        "diskCount": {
          "type": "integer",
          "description": "Specifies the number of such disks."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:LocalDiskResponse": {
      "properties": {
        "diskCount": {
          "type": "integer",
          "description": "Specifies the number of such disks."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Specifies the size of the disk in base-2 GB."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "diskCount",
        "diskSizeGb",
        "diskType"
      ]
    },
    "google-native:compute/v1:LogConfig": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:compute%2Fv1:LogConfigCloudAuditOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "counter": {
          "$ref": "#/types/google-native:compute%2Fv1:LogConfigCounterOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:compute%2Fv1:LogConfigDataAccessOptions",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:LogConfigCloudAuditOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:compute%2Fv1:AuthorizationLoggingOptions",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logName": {
          "$ref": "#/types/google-native:compute%2Fv1:LogConfigCloudAuditOptionsLogName",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:LogConfigCloudAuditOptionsLogName": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "AdminActivity",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ADMIN_ACTIVITY"
        },
        {
          "name": "DataAccess",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DATA_ACCESS"
        },
        {
          "name": "UnspecifiedLogName",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "UNSPECIFIED_LOG_NAME"
        }
      ]
    },
    "google-native:compute/v1:LogConfigCloudAuditOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:compute%2Fv1:AuthorizationLoggingOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logName": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "authorizationLoggingOptions",
        "logName"
      ]
    },
    "google-native:compute/v1:LogConfigCounterOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:LogConfigCounterOptionsCustomField"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "field": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "metric": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:LogConfigCounterOptionsCustomField": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "name": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "value": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:LogConfigCounterOptionsCustomFieldResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "name": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "value": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/v1:LogConfigCounterOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:LogConfigCounterOptionsCustomFieldResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "field": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "metric": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "customFields",
        "field",
        "metric"
      ]
    },
    "google-native:compute/v1:LogConfigDataAccessOptions": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "logMode": {
          "$ref": "#/types/google-native:compute%2Fv1:LogConfigDataAccessOptionsLogMode",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:LogConfigDataAccessOptionsLogMode": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "LogFailClosed",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG_FAIL_CLOSED"
        },
        {
          "name": "LogModeUnspecified",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG_MODE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:LogConfigDataAccessOptionsResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "logMode": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "logMode"
      ]
    },
    "google-native:compute/v1:LogConfigResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:compute%2Fv1:LogConfigCloudAuditOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "counter": {
          "$ref": "#/types/google-native:compute%2Fv1:LogConfigCounterOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:compute%2Fv1:LogConfigDataAccessOptionsResponse",
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "cloudAudit",
        "counter",
        "dataAccess"
      ]
    },
    "google-native:compute/v1:Metadata": {
      "description": "A metadata key/value entry.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataItemsItem"
          },
          "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:MetadataFilter": {
      "description": "Opaque filter criteria used by load balancers to restrict routing configuration to a limited set of load balancing proxies. Proxies and sidecars involved in load balancing would typically present metadata to the load balancers that need to match criteria specified here. If a match takes place, the relevant configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. An example for using metadataFilters would be: if load balancing involves Envoys, they receive routing configuration when values in metadataFilters match values supplied in of their XDS requests to loadbalancers.",
      "properties": {
        "filterLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataFilterLabelMatch"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list must not be empty and can have at the most 64 entries."
        },
        "filterMatchCriteria": {
          "$ref": "#/types/google-native:compute%2Fv1:MetadataFilterFilterMatchCriteria",
          "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:MetadataFilterFilterMatchCriteria": {
      "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. ",
      "type": "string",
      "enum": [
        {
          "name": "MatchAll",
          "description": "Specifies that all filterLabels must match for the metadataFilter to be considered a match.",
          "value": "MATCH_ALL"
        },
        {
          "name": "MatchAny",
          "description": "Specifies that any filterLabel must match for the metadataFilter to be considered a match.",
          "value": "MATCH_ANY"
        },
        {
          "name": "NotSet",
          "description": "Indicates that the match criteria was not set. A metadataFilter must never be created with this value.",
          "value": "NOT_SET"
        }
      ]
    },
    "google-native:compute/v1:MetadataFilterLabelMatch": {
      "description": "MetadataFilter label name value pairs that are expected to match corresponding labels presented as metadata to the load balancer.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of metadata label. The name can have a maximum length of 1024 characters and must be at least 1 character long."
        },
        "value": {
          "type": "string",
          "description": "The value of the label must match the specified value. value can have a maximum length of 1024 characters."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:MetadataFilterLabelMatchResponse": {
      "description": "MetadataFilter label name value pairs that are expected to match corresponding labels presented as metadata to the load balancer.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of metadata label. The name can have a maximum length of 1024 characters and must be at least 1 character long."
        },
        "value": {
          "type": "string",
          "description": "The value of the label must match the specified value. value can have a maximum length of 1024 characters."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/v1:MetadataFilterResponse": {
      "description": "Opaque filter criteria used by load balancers to restrict routing configuration to a limited set of load balancing proxies. Proxies and sidecars involved in load balancing would typically present metadata to the load balancers that need to match criteria specified here. If a match takes place, the relevant configuration is made available to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. An example for using metadataFilters would be: if load balancing involves Envoys, they receive routing configuration when values in metadataFilters match values supplied in of their XDS requests to loadbalancers.",
      "properties": {
        "filterLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataFilterLabelMatchResponse"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list must not be empty and can have at the most 64 entries."
        },
        "filterMatchCriteria": {
          "type": "string",
          "description": "Specifies how individual filter label matches within the list of filterLabels and contributes toward the overall metadataFilter match. Supported values are: - MATCH_ANY: at least one of the filterLabels must have a matching label in the provided metadata. - MATCH_ALL: all filterLabels must have matching labels in the provided metadata. "
        }
      },
      "type": "object",
      "required": [
        "filterLabels",
        "filterMatchCriteria"
      ]
    },
    "google-native:compute/v1:MetadataItemsItem": {
      "description": "Metadata",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project."
        },
        "value": {
          "type": "string",
          "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB)."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:MetadataItemsItemResponse": {
      "description": "Metadata",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project."
        },
        "value": {
          "type": "string",
          "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB)."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/v1:MetadataResponse": {
      "description": "A metadata key/value entry.",
      "properties": {
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataItemsItemResponse"
          },
          "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#metadata for metadata."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "items",
        "kind"
      ]
    },
    "google-native:compute/v1:NamedPort": {
      "description": "The named port. For example: <\"http\", 80>.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "port": {
          "type": "integer",
          "description": "The port number, which can be a value between 1 and 65535."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NamedPortResponse": {
      "description": "The named port. For example: <\"http\", 80>.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "port": {
          "type": "integer",
          "description": "The port number, which can be a value between 1 and 65535."
        }
      },
      "type": "object",
      "required": [
        "name",
        "port"
      ]
    },
    "google-native:compute/v1:NetworkAttachmentConnectedEndpointResponse": {
      "description": "[Output Only] A connection connected to this network attachment.",
      "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."
        },
        "ipv6Address": {
          "type": "string",
          "description": "The IPv6 address assigned to the producer instance network interface. This is only assigned when the stack types of both the instance network interface and the consumer subnet are IPv4_IPv6."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number of the interface to which the IP was assigned."
        },
        "secondaryIpCidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alias IP ranges from the same subnetwork."
        },
        "status": {
          "type": "string",
          "description": "The status of a connected endpoint to this network attachment."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork used to assign the IP to the producer instance network interface."
        },
        "subnetworkCidrRange": {
          "type": "string",
          "description": "The CIDR range of the subnet from which the IPv4 internal IP was allocated from."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ipv6Address",
        "projectIdOrNum",
        "secondaryIpCidrRanges",
        "status",
        "subnetwork",
        "subnetworkCidrRange"
      ]
    },
    "google-native:compute/v1:NetworkAttachmentConnectionPreference": {
      "type": "string",
      "enum": [
        {
          "name": "AcceptAutomatic",
          "value": "ACCEPT_AUTOMATIC"
        },
        {
          "name": "AcceptManual",
          "value": "ACCEPT_MANUAL"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        }
      ]
    },
    "google-native:compute/v1:NetworkEndpointGroupAppEngine": {
      "description": "Configuration for an App Engine network endpoint group (NEG). The service is optional, may be provided explicitly or in the URL mask. The version is optional and can only be provided explicitly or in the URL mask when service is present. Note: App Engine service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Optional serving service. The service name is case-sensitive and must be 1-63 characters long. Example value: \"default\", \"my-service\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse service and version fields from a request URL. URL mask allows for routing to multiple App Engine services without having to create multiple Network Endpoint Groups and backend services. For example, the request URLs \"foo1-dot-appname.appspot.com/v1\" and \"foo1-dot-appname.appspot.com/v2\" can be backed by the same Serverless NEG with URL mask \"<service>-dot-appname.appspot.com/<version>\". The URL mask will parse them to { service = \"foo1\", version = \"v1\" } and { service = \"foo1\", version = \"v2\" } respectively."
        },
        "version": {
          "type": "string",
          "description": "Optional serving version. The version name is case-sensitive and must be 1-100 characters long. Example value: \"v1\", \"v2\"."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NetworkEndpointGroupAppEngineResponse": {
      "description": "Configuration for an App Engine network endpoint group (NEG). The service is optional, may be provided explicitly or in the URL mask. The version is optional and can only be provided explicitly or in the URL mask when service is present. Note: App Engine service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Optional serving service. The service name is case-sensitive and must be 1-63 characters long. Example value: \"default\", \"my-service\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse service and version fields from a request URL. URL mask allows for routing to multiple App Engine services without having to create multiple Network Endpoint Groups and backend services. For example, the request URLs \"foo1-dot-appname.appspot.com/v1\" and \"foo1-dot-appname.appspot.com/v2\" can be backed by the same Serverless NEG with URL mask \"<service>-dot-appname.appspot.com/<version>\". The URL mask will parse them to { service = \"foo1\", version = \"v1\" } and { service = \"foo1\", version = \"v2\" } respectively."
        },
        "version": {
          "type": "string",
          "description": "Optional serving version. The version name is case-sensitive and must be 1-100 characters long. Example value: \"v1\", \"v2\"."
        }
      },
      "type": "object",
      "required": [
        "service",
        "urlMask",
        "version"
      ]
    },
    "google-native:compute/v1:NetworkEndpointGroupCloudFunction": {
      "description": "Configuration for a Cloud Function network endpoint group (NEG). The function must be provided explicitly or in the URL mask. Note: Cloud Function must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "function": {
          "type": "string",
          "description": "A user-defined name of the Cloud Function. The function name is case-sensitive and must be 1-63 characters long. Example value: \"func1\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse function field from a request URL. URL mask allows for routing to multiple Cloud Functions without having to create multiple Network Endpoint Groups and backend services. For example, request URLs \" mydomain.com/function1\" and \"mydomain.com/function2\" can be backed by the same Serverless NEG with URL mask \"/<function>\". The URL mask will parse them to { function = \"function1\" } and { function = \"function2\" } respectively."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NetworkEndpointGroupCloudFunctionResponse": {
      "description": "Configuration for a Cloud Function network endpoint group (NEG). The function must be provided explicitly or in the URL mask. Note: Cloud Function must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "function": {
          "type": "string",
          "description": "A user-defined name of the Cloud Function. The function name is case-sensitive and must be 1-63 characters long. Example value: \"func1\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse function field from a request URL. URL mask allows for routing to multiple Cloud Functions without having to create multiple Network Endpoint Groups and backend services. For example, request URLs \" mydomain.com/function1\" and \"mydomain.com/function2\" can be backed by the same Serverless NEG with URL mask \"/<function>\". The URL mask will parse them to { function = \"function1\" } and { function = \"function2\" } respectively."
        }
      },
      "type": "object",
      "required": [
        "function",
        "urlMask"
      ]
    },
    "google-native:compute/v1:NetworkEndpointGroupCloudRun": {
      "description": "Configuration for a Cloud Run network endpoint group (NEG). The service must be provided explicitly or in the URL mask. The tag is optional, may be provided explicitly or in the URL mask. Note: Cloud Run service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Cloud Run service is the main resource of Cloud Run. The service must be 1-63 characters long, and comply with RFC1035. Example value: \"run-service\"."
        },
        "tag": {
          "type": "string",
          "description": "Optional Cloud Run tag represents the \"named-revision\" to provide additional fine-grained traffic routing information. The tag must be 1-63 characters long, and comply with RFC1035. Example value: \"revision-0010\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse <service> and <tag> fields from a request URL. URL mask allows for routing to multiple Run services without having to create multiple network endpoint groups and backend services. For example, request URLs \"foo1.domain.com/bar1\" and \"foo1.domain.com/bar2\" can be backed by the same Serverless Network Endpoint Group (NEG) with URL mask \"<tag>.domain.com/<service>\". The URL mask will parse them to { service=\"bar1\", tag=\"foo1\" } and { service=\"bar2\", tag=\"foo2\" } respectively."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NetworkEndpointGroupCloudRunResponse": {
      "description": "Configuration for a Cloud Run network endpoint group (NEG). The service must be provided explicitly or in the URL mask. The tag is optional, may be provided explicitly or in the URL mask. Note: Cloud Run service must be in the same project and located in the same region as the Serverless NEG.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Cloud Run service is the main resource of Cloud Run. The service must be 1-63 characters long, and comply with RFC1035. Example value: \"run-service\"."
        },
        "tag": {
          "type": "string",
          "description": "Optional Cloud Run tag represents the \"named-revision\" to provide additional fine-grained traffic routing information. The tag must be 1-63 characters long, and comply with RFC1035. Example value: \"revision-0010\"."
        },
        "urlMask": {
          "type": "string",
          "description": "A template to parse <service> and <tag> fields from a request URL. URL mask allows for routing to multiple Run services without having to create multiple network endpoint groups and backend services. For example, request URLs \"foo1.domain.com/bar1\" and \"foo1.domain.com/bar2\" can be backed by the same Serverless Network Endpoint Group (NEG) with URL mask \"<tag>.domain.com/<service>\". The URL mask will parse them to { service=\"bar1\", tag=\"foo1\" } and { service=\"bar2\", tag=\"foo2\" } respectively."
        }
      },
      "type": "object",
      "required": [
        "service",
        "tag",
        "urlMask"
      ]
    },
    "google-native:compute/v1:NetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/v1:NetworkEndpointGroupPscData": {
      "description": "All data that is specifically relevant to only network endpoint groups of type PRIVATE_SERVICE_CONNECT.",
      "type": "object"
    },
    "google-native:compute/v1:NetworkEndpointGroupPscDataResponse": {
      "description": "All data that is specifically relevant to only network endpoint groups of type PRIVATE_SERVICE_CONNECT.",
      "properties": {
        "consumerPscAddress": {
          "type": "string",
          "description": "Address allocated from given subnetwork for PSC. This IP address acts as a VIP for a PSC NEG, allowing it to act as an endpoint in L7 PSC-XLB."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Network Endpoint Group Consumer."
        },
        "pscConnectionStatus": {
          "type": "string",
          "description": "The connection status of the PSC Forwarding Rule."
        }
      },
      "type": "object",
      "required": [
        "consumerPscAddress",
        "pscConnectionId",
        "pscConnectionStatus"
      ]
    },
    "google-native:compute/v1:NetworkInterface": {
      "description": "A network interface resource attached to an instance.",
      "properties": {
        "accessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AccessConfig"
          },
          "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access."
        },
        "aliasIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AliasIpRange"
          },
          "description": "An array of alias IP ranges for this network interface. You can only specify this field for network interfaces in VPC networks."
        },
        "internalIpv6PrefixLength": {
          "type": "integer",
          "description": "The prefix length of the primary internal IPv6 range."
        },
        "ipv6AccessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AccessConfig"
          },
          "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."
        },
        "ipv6Address": {
          "type": "string",
          "description": "An IPv6 internal network address for this network interface. To use a static internal 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 internal IPv6 address from the instance's subnetwork."
        },
        "network": {
          "type": "string",
          "description": "URL of the VPC network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used. If the selected project doesn't have the default network, you must specify a network or subnet. If the network is not specified but the subnetwork is specified, the network is inferred. If you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/global/networks/ network - projects/project/global/networks/network - global/networks/default "
        },
        "networkAttachment": {
          "type": "string",
          "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{project_number}/regions/{region_name}/networkAttachments/{network_attachment_name}."
        },
        "networkIP": {
          "type": "string",
          "description": "An IPv4 internal IP address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
        },
        "nicType": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkInterfaceNicType",
          "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "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'll be empty if not specified by the users."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkInterfaceStackType",
          "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. If the network is in custom subnet mode, specifying the subnetwork is required. If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/regions/region /subnetworks/subnetwork - regions/region/subnetworks/subnetwork "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NetworkInterfaceNicType": {
      "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.",
      "type": "string",
      "enum": [
        {
          "name": "Gvnic",
          "description": "GVNIC",
          "value": "GVNIC"
        },
        {
          "name": "UnspecifiedNicType",
          "description": "No type specified.",
          "value": "UNSPECIFIED_NIC_TYPE"
        },
        {
          "name": "VirtioNet",
          "description": "VIRTIO",
          "value": "VIRTIO_NET"
        }
      ]
    },
    "google-native:compute/v1:NetworkInterfaceResponse": {
      "description": "A network interface resource attached to an instance.",
      "properties": {
        "accessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AccessConfigResponse"
          },
          "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access."
        },
        "aliasIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AliasIpRangeResponse"
          },
          "description": "An array of alias IP ranges for this network interface. You can only specify this field for network interfaces in VPC networks."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint hash of contents stored in this network interface. This field will be ignored when inserting an Instance or adding a NetworkInterface. An up-to-date fingerprint must be provided in order to update the NetworkInterface. The request will fail with error 400 Bad Request if the fingerprint is not provided, or 412 Precondition Failed if the fingerprint is out of date."
        },
        "internalIpv6PrefixLength": {
          "type": "integer",
          "description": "The prefix length of the primary internal IPv6 range."
        },
        "ipv6AccessConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AccessConfigResponse"
          },
          "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."
        },
        "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. Valid only if stackType is IPV4_IPV6."
        },
        "ipv6Address": {
          "type": "string",
          "description": "An IPv6 internal network address for this network interface. To use a static internal 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 internal IPv6 address from the instance's subnetwork."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkInterface for network interfaces."
        },
        "name": {
          "type": "string",
          "description": "The name of the network interface, which is generated by the server. For a VM, the network interface uses the nicN naming format. Where N is a value between 0 and 7. The default interface value is nic0."
        },
        "network": {
          "type": "string",
          "description": "URL of the VPC network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used. If the selected project doesn't have the default network, you must specify a network or subnet. If the network is not specified but the subnetwork is specified, the network is inferred. If you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/global/networks/ network - projects/project/global/networks/network - global/networks/default "
        },
        "networkAttachment": {
          "type": "string",
          "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{project_number}/regions/{region_name}/networkAttachments/{network_attachment_name}."
        },
        "networkIP": {
          "type": "string",
          "description": "An IPv4 internal IP address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
        },
        "nicType": {
          "type": "string",
          "description": "The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "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'll be empty if not specified by the users."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. If the network is in custom subnet mode, specifying the subnetwork is required. If you specify this field, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/regions/region /subnetworks/subnetwork - regions/region/subnetworks/subnetwork "
        }
      },
      "type": "object",
      "required": [
        "accessConfigs",
        "aliasIpRanges",
        "fingerprint",
        "internalIpv6PrefixLength",
        "ipv6AccessConfigs",
        "ipv6AccessType",
        "ipv6Address",
        "kind",
        "name",
        "network",
        "networkAttachment",
        "networkIP",
        "nicType",
        "queueCount",
        "stackType",
        "subnetwork"
      ]
    },
    "google-native:compute/v1:NetworkInterfaceStackType": {
      "description": "The stack type for this network interface. To assign only IPv4 addresses, use IPV4_ONLY. To assign both IPv4 and IPv6 addresses, use IPV4_IPV6. If not specified, IPV4_ONLY is used. This field can be both set at instance creation and update network interface operations.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "The network interface can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "The network interface will be assigned IPv4 address.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/v1:NetworkNetworkFirewallPolicyEnforcementOrder": {
      "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified.",
      "type": "string",
      "enum": [
        {
          "name": "AfterClassicFirewall",
          "value": "AFTER_CLASSIC_FIREWALL"
        },
        {
          "name": "BeforeClassicFirewall",
          "value": "BEFORE_CLASSIC_FIREWALL"
        }
      ]
    },
    "google-native:compute/v1:NetworkPeeringResponse": {
      "description": "A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.",
      "properties": {
        "autoCreateRoutes": {
          "type": "boolean",
          "description": "This field will be deprecated soon. Use the exchange_subnet_routes field instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE."
        },
        "exchangeSubnetRoutes": {
          "type": "boolean",
          "description": "Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE."
        },
        "exportCustomRoutes": {
          "type": "boolean",
          "description": "Whether to export the custom routes to peer network. The default value is false."
        },
        "exportSubnetRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Whether subnet routes with public IP range are exported. The default value is true, all subnet routes are exported. IPv4 special-use ranges are always exported to peers and are not controlled by this field."
        },
        "importCustomRoutes": {
          "type": "boolean",
          "description": "Whether to import the custom routes from peer network. The default value is false."
        },
        "importSubnetRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Whether subnet routes with public IP range are imported. The default value is false. IPv4 special-use ranges are always imported from peers and are not controlled by this field."
        },
        "name": {
          "type": "string",
          "description": "Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
        },
        "peerMtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes."
        },
        "stackType": {
          "type": "string",
          "description": "Which IP version(s) of traffic and routes are allowed to be imported or exported between peer networks. The default value is IPV4_ONLY."
        },
        "state": {
          "type": "string",
          "description": "State for the peering, either `ACTIVE` or `INACTIVE`. The peering is `ACTIVE` when there's a matching configuration in the peer network."
        },
        "stateDetails": {
          "type": "string",
          "description": "Details about the current state of the peering."
        }
      },
      "type": "object",
      "required": [
        "autoCreateRoutes",
        "exchangeSubnetRoutes",
        "exportCustomRoutes",
        "exportSubnetRoutesWithPublicIp",
        "importCustomRoutes",
        "importSubnetRoutesWithPublicIp",
        "name",
        "network",
        "peerMtu",
        "stackType",
        "state",
        "stateDetails"
      ]
    },
    "google-native:compute/v1:NetworkPerformanceConfig": {
      "properties": {
        "totalEgressBandwidthTier": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkPerformanceConfigTotalEgressBandwidthTier"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NetworkPerformanceConfigResponse": {
      "properties": {
        "totalEgressBandwidthTier": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "totalEgressBandwidthTier"
      ]
    },
    "google-native:compute/v1:NetworkPerformanceConfigTotalEgressBandwidthTier": {
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "value": "DEFAULT"
        },
        {
          "name": "Tier1",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:compute/v1:NetworkRoutingConfig": {
      "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
      "properties": {
        "routingMode": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkRoutingConfigRoutingMode",
          "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NetworkRoutingConfigResponse": {
      "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
      "properties": {
        "routingMode": {
          "type": "string",
          "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions."
        }
      },
      "type": "object",
      "required": [
        "routingMode"
      ]
    },
    "google-native:compute/v1:NetworkRoutingConfigRoutingMode": {
      "description": "The network-wide routing mode to use. If set to REGIONAL, this network's Cloud Routers will only advertise routes with subnets of this network in the same region as the router. If set to GLOBAL, this network's Cloud Routers will advertise routes with all subnets of this network, across regions.",
      "type": "string",
      "enum": [
        {
          "name": "Global",
          "value": "GLOBAL"
        },
        {
          "name": "Regional",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:compute/v1:NodeGroupAutoscalingPolicy": {
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "The maximum number of nodes that the group should have. Must be set if autoscaling is enabled. Maximum value allowed is 100."
        },
        "minNodes": {
          "type": "integer",
          "description": "The minimum number of nodes that the group should have."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeGroupAutoscalingPolicyMode",
          "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NodeGroupAutoscalingPolicyMode": {
      "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Off",
          "description": "Autoscaling is disabled.",
          "value": "OFF"
        },
        {
          "name": "On",
          "description": "Autocaling is fully enabled.",
          "value": "ON"
        },
        {
          "name": "OnlyScaleOut",
          "description": "Autoscaling will only scale out and will not remove nodes.",
          "value": "ONLY_SCALE_OUT"
        }
      ]
    },
    "google-native:compute/v1:NodeGroupAutoscalingPolicyResponse": {
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "The maximum number of nodes that the group should have. Must be set if autoscaling is enabled. Maximum value allowed is 100."
        },
        "minNodes": {
          "type": "integer",
          "description": "The minimum number of nodes that the group should have."
        },
        "mode": {
          "type": "string",
          "description": "The autoscaling mode. Set to one of: ON, OFF, or ONLY_SCALE_OUT. For more information, see Autoscaler modes."
        }
      },
      "type": "object",
      "required": [
        "maxNodes",
        "minNodes",
        "mode"
      ]
    },
    "google-native:compute/v1:NodeGroupMaintenancePolicy": {
      "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "Allow the node and corresponding instances to retain default maintenance behavior.",
          "value": "DEFAULT"
        },
        {
          "name": "MaintenancePolicyUnspecified",
          "value": "MAINTENANCE_POLICY_UNSPECIFIED"
        },
        {
          "name": "MigrateWithinNodeGroup",
          "description": "When maintenance must be done on a node, the instances on that node will be moved to other nodes in the group. Instances with onHostMaintenance = MIGRATE will live migrate to their destinations while instances with onHostMaintenance = TERMINATE will terminate and then restart on their destination nodes if automaticRestart = true.",
          "value": "MIGRATE_WITHIN_NODE_GROUP"
        },
        {
          "name": "RestartInPlace",
          "description": "Instances in this group will restart on the same node when maintenance has completed. Instances must have onHostMaintenance = TERMINATE, and they will only restart if automaticRestart = true.",
          "value": "RESTART_IN_PLACE"
        }
      ]
    },
    "google-native:compute/v1:NodeGroupMaintenanceWindow": {
      "description": "Time window specified for daily maintenance operations. GCE's internal maintenance will be performed within this window.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NodeGroupMaintenanceWindowResponse": {
      "description": "Time window specified for daily maintenance operations. GCE's internal maintenance will be performed within this window.",
      "properties": {
        "maintenanceDuration": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "[Output only] A predetermined duration for the window, automatically chosen to be the smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "maintenanceDuration",
        "startTime"
      ]
    },
    "google-native:compute/v1:NodeGroupStatus": {
      "type": "string",
      "enum": [
        {
          "name": "Creating",
          "value": "CREATING"
        },
        {
          "name": "Deleting",
          "value": "DELETING"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ready",
          "value": "READY"
        }
      ]
    },
    "google-native:compute/v1:NodeTemplateCpuOvercommitType": {
      "description": "CPU overcommit.",
      "type": "string",
      "enum": [
        {
          "name": "CpuOvercommitTypeUnspecified",
          "value": "CPU_OVERCOMMIT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "value": "ENABLED"
        },
        {
          "name": "None",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/v1:NodeTemplateNodeTypeFlexibility": {
      "properties": {
        "cpus": {
          "type": "string"
        },
        "localSsd": {
          "type": "string"
        },
        "memory": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NodeTemplateNodeTypeFlexibilityResponse": {
      "properties": {
        "cpus": {
          "type": "string"
        },
        "localSsd": {
          "type": "string"
        },
        "memory": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "cpus",
        "localSsd",
        "memory"
      ]
    },
    "google-native:compute/v1:NotificationEndpointGrpcSettings": {
      "description": "Represents a gRPC setting that describes one gRPC notification endpoint and the retry duration attempting to send notification to this endpoint.",
      "properties": {
        "authority": {
          "type": "string",
          "description": "Optional. If specified, this field is used to set the authority header by the sender of notifications. See https://tools.ietf.org/html/rfc7540#section-8.1.2.3"
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint to which gRPC notifications are sent. This must be a valid gRPCLB DNS name."
        },
        "payloadName": {
          "type": "string",
          "description": "Optional. If specified, this field is used to populate the \"name\" field in gRPC requests."
        },
        "resendInterval": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "Optional. This field is used to configure how often to send a full update of all non-healthy backends. If unspecified, full updates are not sent. If specified, must be in the range between 600 seconds to 3600 seconds. Nanos are disallowed. Can only be set for regional notification endpoints."
        },
        "retryDurationSec": {
          "type": "integer",
          "description": "How much time (in seconds) is spent attempting notification retries until a successful response is received. Default is 30s. Limit is 20m (1200s). Must be a positive number."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:NotificationEndpointGrpcSettingsResponse": {
      "description": "Represents a gRPC setting that describes one gRPC notification endpoint and the retry duration attempting to send notification to this endpoint.",
      "properties": {
        "authority": {
          "type": "string",
          "description": "Optional. If specified, this field is used to set the authority header by the sender of notifications. See https://tools.ietf.org/html/rfc7540#section-8.1.2.3"
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint to which gRPC notifications are sent. This must be a valid gRPCLB DNS name."
        },
        "payloadName": {
          "type": "string",
          "description": "Optional. If specified, this field is used to populate the \"name\" field in gRPC requests."
        },
        "resendInterval": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "Optional. This field is used to configure how often to send a full update of all non-healthy backends. If unspecified, full updates are not sent. If specified, must be in the range between 600 seconds to 3600 seconds. Nanos are disallowed. Can only be set for regional notification endpoints."
        },
        "retryDurationSec": {
          "type": "integer",
          "description": "How much time (in seconds) is spent attempting notification retries until a successful response is received. Default is 30s. Limit is 20m (1200s). Must be a positive number."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "endpoint",
        "payloadName",
        "resendInterval",
        "retryDurationSec"
      ]
    },
    "google-native:compute/v1:OutlierDetection": {
      "description": "Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service.",
      "properties": {
        "baseEjectionTime": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "The base time that a backend endpoint is ejected for. Defaults to 30000ms or 30s. After a backend endpoint is returned back to the load balancing pool, it can be ejected again in another ejection analysis. Thus, the total ejection time is equal to the base ejection time multiplied by the number of times the backend endpoint has been ejected. Defaults to 30000ms or 30s."
        },
        "consecutiveErrors": {
          "type": "integer",
          "description": "Number of consecutive errors before a backend endpoint is ejected from the load balancing pool. When the backend endpoint is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5."
        },
        "consecutiveGatewayFailure": {
          "type": "integer",
          "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3."
        },
        "enforcingConsecutiveErrors": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0."
        },
        "enforcingConsecutiveGatewayFailure": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100."
        },
        "enforcingSuccessRate": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "interval": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "Time interval between ejection analysis sweeps. This can result in both new ejections and backend endpoints being returned to service. The interval is equal to the number of seconds as defined in outlierDetection.interval.seconds plus the number of nanoseconds as defined in outlierDetection.interval.nanos. Defaults to 1 second."
        },
        "maxEjectionPercent": {
          "type": "integer",
          "description": "Maximum percentage of backend endpoints in the load balancing pool for the backend service that can be ejected if the ejection conditions are met. Defaults to 50%."
        },
        "successRateMinimumHosts": {
          "type": "integer",
          "description": "The number of backend endpoints in the load balancing pool that must have enough request volume to detect success rate outliers. If the number of backend endpoints is fewer than this setting, outlier detection via success rate statistics is not performed for any backend endpoint in the load balancing pool. Defaults to 5. Not supported when the backend service uses Serverless NEG."
        },
        "successRateRequestVolume": {
          "type": "integer",
          "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this backend endpoint in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that backend endpoint. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "successRateStdevFactor": {
          "type": "integer",
          "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * successRateStdevFactor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900. Not supported when the backend service uses Serverless NEG."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:OutlierDetectionResponse": {
      "description": "Settings controlling the eviction of unhealthy hosts from the load balancing pool for the backend service.",
      "properties": {
        "baseEjectionTime": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "The base time that a backend endpoint is ejected for. Defaults to 30000ms or 30s. After a backend endpoint is returned back to the load balancing pool, it can be ejected again in another ejection analysis. Thus, the total ejection time is equal to the base ejection time multiplied by the number of times the backend endpoint has been ejected. Defaults to 30000ms or 30s."
        },
        "consecutiveErrors": {
          "type": "integer",
          "description": "Number of consecutive errors before a backend endpoint is ejected from the load balancing pool. When the backend endpoint is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5."
        },
        "consecutiveGatewayFailure": {
          "type": "integer",
          "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 3."
        },
        "enforcingConsecutiveErrors": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0."
        },
        "enforcingConsecutiveGatewayFailure": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100."
        },
        "enforcingSuccessRate": {
          "type": "integer",
          "description": "The percentage chance that a backend endpoint will be ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "interval": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "Time interval between ejection analysis sweeps. This can result in both new ejections and backend endpoints being returned to service. The interval is equal to the number of seconds as defined in outlierDetection.interval.seconds plus the number of nanoseconds as defined in outlierDetection.interval.nanos. Defaults to 1 second."
        },
        "maxEjectionPercent": {
          "type": "integer",
          "description": "Maximum percentage of backend endpoints in the load balancing pool for the backend service that can be ejected if the ejection conditions are met. Defaults to 50%."
        },
        "successRateMinimumHosts": {
          "type": "integer",
          "description": "The number of backend endpoints in the load balancing pool that must have enough request volume to detect success rate outliers. If the number of backend endpoints is fewer than this setting, outlier detection via success rate statistics is not performed for any backend endpoint in the load balancing pool. Defaults to 5. Not supported when the backend service uses Serverless NEG."
        },
        "successRateRequestVolume": {
          "type": "integer",
          "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this backend endpoint in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that backend endpoint. Defaults to 100. Not supported when the backend service uses Serverless NEG."
        },
        "successRateStdevFactor": {
          "type": "integer",
          "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * successRateStdevFactor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900. Not supported when the backend service uses Serverless NEG."
        }
      },
      "type": "object",
      "required": [
        "baseEjectionTime",
        "consecutiveErrors",
        "consecutiveGatewayFailure",
        "enforcingConsecutiveErrors",
        "enforcingConsecutiveGatewayFailure",
        "enforcingSuccessRate",
        "interval",
        "maxEjectionPercent",
        "successRateMinimumHosts",
        "successRateRequestVolume",
        "successRateStdevFactor"
      ]
    },
    "google-native:compute/v1:PacketMirroringEnable": {
      "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE.",
      "type": "string",
      "enum": [
        {
          "name": "False",
          "value": "FALSE"
        },
        {
          "name": "True",
          "value": "TRUE"
        }
      ]
    },
    "google-native:compute/v1:PacketMirroringFilter": {
      "properties": {
        "cidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IP CIDR ranges that apply as filter on the source (ingress) or destination (egress) IP in the IP header. Only IPv4 is supported. If no ranges are specified, all traffic that matches the specified IPProtocols is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringFilterDirection",
          "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH."
        },
        "ipProtocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Protocols that apply as filter on mirrored traffic. If no protocols are specified, all traffic that matches the specified CIDR ranges is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PacketMirroringFilterDirection": {
      "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH.",
      "type": "string",
      "enum": [
        {
          "name": "Both",
          "description": "Default, both directions are mirrored.",
          "value": "BOTH"
        },
        {
          "name": "Egress",
          "description": "Only egress traffic is mirrored.",
          "value": "EGRESS"
        },
        {
          "name": "Ingress",
          "description": "Only ingress traffic is mirrored.",
          "value": "INGRESS"
        }
      ]
    },
    "google-native:compute/v1:PacketMirroringFilterResponse": {
      "properties": {
        "cidrRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IP CIDR ranges that apply as filter on the source (ingress) or destination (egress) IP in the IP header. Only IPv4 is supported. If no ranges are specified, all traffic that matches the specified IPProtocols is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        },
        "direction": {
          "type": "string",
          "description": "Direction of traffic to mirror, either INGRESS, EGRESS, or BOTH. The default is BOTH."
        },
        "ipProtocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Protocols that apply as filter on mirrored traffic. If no protocols are specified, all traffic that matches the specified CIDR ranges is mirrored. If neither cidrRanges nor IPProtocols is specified, all traffic is mirrored."
        }
      },
      "type": "object",
      "required": [
        "cidrRanges",
        "direction",
        "ipProtocols"
      ]
    },
    "google-native:compute/v1:PacketMirroringForwardingRuleInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the forwarding rule representing the ILB configured as destination of the mirrored traffic."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PacketMirroringForwardingRuleInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the forwarding rule; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the forwarding rule representing the ILB configured as destination of the mirrored traffic."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/v1:PacketMirroringMirroredResourceInfo": {
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringMirroredResourceInfoInstanceInfo"
          },
          "description": "A set of virtual machine instances that are being mirrored. They must live in zones contained in the same region as this packetMirroring. Note that this config will apply only to those network interfaces of the Instances that belong to the network specified in this packetMirroring. You may specify a maximum of 50 Instances."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringMirroredResourceInfoSubnetInfo"
          },
          "description": "A set of subnetworks for which traffic from/to all VM instances will be mirrored. They must live in the same region as this packetMirroring. You may specify a maximum of 5 subnetworks."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of mirrored tags. Traffic from/to all VM instances that have one or more of these tags will be mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PacketMirroringMirroredResourceInfoInstanceInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the virtual machine instance which is being mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PacketMirroringMirroredResourceInfoInstanceInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the instance; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the virtual machine instance which is being mirrored."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/v1:PacketMirroringMirroredResourceInfoResponse": {
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringMirroredResourceInfoInstanceInfoResponse"
          },
          "description": "A set of virtual machine instances that are being mirrored. They must live in zones contained in the same region as this packetMirroring. Note that this config will apply only to those network interfaces of the Instances that belong to the network specified in this packetMirroring. You may specify a maximum of 50 Instances."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringMirroredResourceInfoSubnetInfoResponse"
          },
          "description": "A set of subnetworks for which traffic from/to all VM instances will be mirrored. They must live in the same region as this packetMirroring. You may specify a maximum of 5 subnetworks."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of mirrored tags. Traffic from/to all VM instances that have one or more of these tags will be mirrored."
        }
      },
      "type": "object",
      "required": [
        "instances",
        "subnetworks",
        "tags"
      ]
    },
    "google-native:compute/v1:PacketMirroringMirroredResourceInfoSubnetInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "Resource URL to the subnetwork for which traffic from/to all VM instances will be mirrored."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PacketMirroringMirroredResourceInfoSubnetInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the subnetwork; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "Resource URL to the subnetwork for which traffic from/to all VM instances will be mirrored."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/v1:PacketMirroringNetworkInfo": {
      "properties": {
        "url": {
          "type": "string",
          "description": "URL of the network resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PacketMirroringNetworkInfoResponse": {
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "Unique identifier for the network; defined by the server."
        },
        "url": {
          "type": "string",
          "description": "URL of the network resource."
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "url"
      ]
    },
    "google-native:compute/v1:PathMatcher": {
      "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service is used.",
      "properties": {
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path matcher's defaultRouteAction."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource. This URL is used if none of the pathRules or routeRules defined by this PathMatcher are matched. For example, the following are all valid URLs to a BackendService resource: - https://www.googleapis.com/compute/v1/projects/project /global/backendServices/backendService - compute/v1/projects/project/global/backendServices/backendService - global/backendServices/backendService If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. Authorization requires one or more of the following Google IAM permissions on the specified resource default_service: - compute.backendBuckets.use - compute.backendServices.use "
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectAction",
          "description": "When none of the specified pathRules or routeRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backend service. HeaderAction specified here are applied after the matching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "name": {
          "type": "string",
          "description": "The name to which this PathMatcher is referred by the HostRule."
        },
        "pathRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PathRule"
          },
          "description": "The list of path rules. Use this list instead of routeRules when routing based on simple path matching is all that's required. The order by which path rules are specified does not matter. Matches are always done on the longest-path-first basis. For example: a pathRule with a path /a/b/c/* will match before /a/b/* irrespective of the order in which those paths appear in this list. Within a given pathMatcher, only one of pathRules or routeRules must be set."
        },
        "routeRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpRouteRule"
          },
          "description": "The list of HTTP route rules. Use this list instead of pathRules when advanced route matching and routing actions are desired. routeRules are evaluated in order of priority, from the lowest to highest number. Within a given pathMatcher, you can set only one of pathRules or routeRules."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PathMatcherResponse": {
      "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service is used.",
      "properties": {
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path matcher's defaultRouteAction."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource. This URL is used if none of the pathRules or routeRules defined by this PathMatcher are matched. For example, the following are all valid URLs to a BackendService resource: - https://www.googleapis.com/compute/v1/projects/project /global/backendServices/backendService - compute/v1/projects/project/global/backendServices/backendService - global/backendServices/backendService If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. Authorization requires one or more of the following Google IAM permissions on the specified resource default_service: - compute.backendBuckets.use - compute.backendServices.use "
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectActionResponse",
          "description": "When none of the specified pathRules or routeRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backend service. HeaderAction specified here are applied after the matching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap HeaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "name": {
          "type": "string",
          "description": "The name to which this PathMatcher is referred by the HostRule."
        },
        "pathRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PathRuleResponse"
          },
          "description": "The list of path rules. Use this list instead of routeRules when routing based on simple path matching is all that's required. The order by which path rules are specified does not matter. Matches are always done on the longest-path-first basis. For example: a pathRule with a path /a/b/c/* will match before /a/b/* irrespective of the order in which those paths appear in this list. Within a given pathMatcher, only one of pathRules or routeRules must be set."
        },
        "routeRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpRouteRuleResponse"
          },
          "description": "The list of HTTP route rules. Use this list instead of pathRules when advanced route matching and routing actions are desired. routeRules are evaluated in order of priority, from the lowest to highest number. Within a given pathMatcher, you can set only one of pathRules or routeRules."
        }
      },
      "type": "object",
      "required": [
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "headerAction",
        "name",
        "pathRules",
        "routeRules"
      ]
    },
    "google-native:compute/v1:PathRule": {
      "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
      "properties": {
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteAction",
          "description": "In response to a matching path, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of routeAction or urlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectAction",
          "description": "When a path pattern is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PathRuleResponse": {
      "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
      "properties": {
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here."
        },
        "routeAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteActionResponse",
          "description": "In response to a matching path, the load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If routeAction specifies any weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any weightedBackendServices. Only one of routeAction or urlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within a path rule's routeAction."
        },
        "service": {
          "type": "string",
          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of urlRedirect, service or routeAction.weightedBackendService must be set."
        },
        "urlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectActionResponse",
          "description": "When a path pattern is matched, the request is redirected to a URL specified by urlRedirect. If urlRedirect is specified, service or routeAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        }
      },
      "type": "object",
      "required": [
        "paths",
        "routeAction",
        "service",
        "urlRedirect"
      ]
    },
    "google-native:compute/v1:PublicAdvertisedPrefixPdpScope": {
      "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. ",
      "type": "string",
      "enum": [
        {
          "name": "Global",
          "description": "The public delegated prefix is global only. The provisioning will take ~4 weeks.",
          "value": "GLOBAL"
        },
        {
          "name": "GlobalAndRegional",
          "description": "The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2.",
          "value": "GLOBAL_AND_REGIONAL"
        },
        {
          "name": "Regional",
          "description": "The public delegated prefix is regional only. The provisioning will take a few minutes.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:compute/v1:PublicAdvertisedPrefixPublicDelegatedPrefixResponse": {
      "description": "Represents a CIDR range which can be used to assign addresses.",
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "The IP address range of the public delegated prefix"
        },
        "name": {
          "type": "string",
          "description": "The name of the public delegated prefix"
        },
        "project": {
          "type": "string",
          "description": "The project number of the public delegated prefix"
        },
        "region": {
          "type": "string",
          "description": "The region of the public delegated prefix if it is regional. If absent, the prefix is global."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix. Possible values are: INITIALIZING: The public delegated prefix is being initialized and addresses cannot be created yet. ANNOUNCED: The public delegated prefix is active."
        }
      },
      "type": "object",
      "required": [
        "ipRange",
        "name",
        "project",
        "region",
        "status"
      ]
    },
    "google-native:compute/v1:PublicAdvertisedPrefixStatus": {
      "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. ",
      "type": "string",
      "enum": [
        {
          "name": "AnnouncedToInternet",
          "description": "The prefix is announced to Internet.",
          "value": "ANNOUNCED_TO_INTERNET"
        },
        {
          "name": "Initial",
          "description": "RPKI validation is complete.",
          "value": "INITIAL"
        },
        {
          "name": "PrefixConfigurationComplete",
          "description": "The prefix is fully configured.",
          "value": "PREFIX_CONFIGURATION_COMPLETE"
        },
        {
          "name": "PrefixConfigurationInProgress",
          "description": "The prefix is being configured.",
          "value": "PREFIX_CONFIGURATION_IN_PROGRESS"
        },
        {
          "name": "PrefixRemovalInProgress",
          "description": "The prefix is being removed.",
          "value": "PREFIX_REMOVAL_IN_PROGRESS"
        },
        {
          "name": "PtrConfigured",
          "description": "User has configured the PTR.",
          "value": "PTR_CONFIGURED"
        },
        {
          "name": "ReadyToAnnounce",
          "description": "The prefix is currently withdrawn but ready to be announced.",
          "value": "READY_TO_ANNOUNCE"
        },
        {
          "name": "ReverseDnsLookupFailed",
          "description": "Reverse DNS lookup failed.",
          "value": "REVERSE_DNS_LOOKUP_FAILED"
        },
        {
          "name": "Validated",
          "description": "Reverse DNS lookup is successful.",
          "value": "VALIDATED"
        }
      ]
    },
    "google-native:compute/v1:PublicDelegatedPrefixPublicDelegatedSubPrefix": {
      "description": "Represents a sub PublicDelegatedPrefix.",
      "properties": {
        "delegateeProject": {
          "type": "string",
          "description": "Name of the project scoping this PublicDelegatedSubPrefix."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this sub public delegated prefix."
        },
        "isAddress": {
          "type": "boolean",
          "description": "Whether the sub prefix is delegated to create Address resources in the delegatee project."
        },
        "name": {
          "type": "string",
          "description": "The name of the sub public delegated prefix."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse": {
      "description": "Represents a sub PublicDelegatedPrefix.",
      "properties": {
        "delegateeProject": {
          "type": "string",
          "description": "Name of the project scoping this PublicDelegatedSubPrefix."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this sub public delegated prefix."
        },
        "isAddress": {
          "type": "boolean",
          "description": "Whether the sub prefix is delegated to create Address resources in the delegatee project."
        },
        "name": {
          "type": "string",
          "description": "The name of the sub public delegated prefix."
        },
        "region": {
          "type": "string",
          "description": "The region of the sub public delegated prefix if it is regional. If absent, the sub prefix is global."
        },
        "status": {
          "type": "string",
          "description": "The status of the sub public delegated prefix."
        }
      },
      "type": "object",
      "required": [
        "delegateeProject",
        "description",
        "ipCidrRange",
        "isAddress",
        "name",
        "region",
        "status"
      ]
    },
    "google-native:compute/v1:RegionBackendServiceCompressionMode": {
      "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
      "type": "string",
      "enum": [
        {
          "name": "Automatic",
          "description": "Automatically uses the best compression based on the Accept-Encoding header sent by the client.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Disabled",
          "description": "Disables compression. Existing compressed responses cached by Cloud CDN will not be served to clients.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:compute/v1:RegionBackendServiceLoadBalancingScheme": {
      "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
          "value": "EXTERNAL"
        },
        {
          "name": "ExternalManaged",
          "description": "Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
          "value": "EXTERNAL_MANAGED"
        },
        {
          "name": "Internal",
          "description": "Signifies that this will be used for Internal TCP/UDP Load Balancing.",
          "value": "INTERNAL"
        },
        {
          "name": "InternalManaged",
          "description": "Signifies that this will be used for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "InternalSelfManaged",
          "description": "Signifies that this will be used by Traffic Director.",
          "value": "INTERNAL_SELF_MANAGED"
        },
        {
          "name": "InvalidLoadBalancingScheme",
          "value": "INVALID_LOAD_BALANCING_SCHEME"
        }
      ]
    },
    "google-native:compute/v1:RegionBackendServiceLocalityLbPolicy": {
      "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
      "type": "string",
      "enum": [
        {
          "name": "InvalidLbPolicy",
          "value": "INVALID_LB_POLICY"
        },
        {
          "name": "LeastRequest",
          "description": "An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.",
          "value": "LEAST_REQUEST"
        },
        {
          "name": "Maglev",
          "description": "This algorithm implements consistent hashing to backends. Maglev can be used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824",
          "value": "MAGLEV"
        },
        {
          "name": "OriginalDestination",
          "description": "Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer.",
          "value": "ORIGINAL_DESTINATION"
        },
        {
          "name": "Random",
          "description": "The load balancer selects a random healthy host.",
          "value": "RANDOM"
        },
        {
          "name": "RingHash",
          "description": "The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests.",
          "value": "RING_HASH"
        },
        {
          "name": "RoundRobin",
          "description": "This is a simple policy in which each healthy backend is selected in round robin order. This is the default.",
          "value": "ROUND_ROBIN"
        },
        {
          "name": "WeightedMaglev",
          "description": "Per-instance weighted Load Balancing via health check reported weights. If set, the Backend Service must configure a non legacy HTTP-based Health Check, and health check replies are expected to contain non-standard HTTP response header field X-Load-Balancing-Endpoint-Weight to specify the per-instance weights. If set, Load Balancing is weighted based on the per-instance weights reported in the last processed health check replies, as long as every instance either reported a valid weight or had UNAVAILABLE_WEIGHT. Otherwise, Load Balancing remains equal-weight. This option is only supported in Network Load Balancing.",
          "value": "WEIGHTED_MAGLEV"
        }
      ]
    },
    "google-native:compute/v1:RegionBackendServiceProtocol": {
      "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "description": "gRPC (available for Traffic Director).",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "description": "HTTP/2 with SSL.",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Ssl",
          "description": "TCP proxying with SSL.",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "description": "TCP proxying or TCP pass-through.",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "description": "UDP.",
          "value": "UDP"
        },
        {
          "name": "Unspecified",
          "description": "If a Backend Service has UNSPECIFIED as its protocol, it can be used with any L3/L4 Forwarding Rules.",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:RegionBackendServiceSessionAffinity": {
      "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/v1:RegionCommitmentCategory": {
      "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified.",
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "License",
          "value": "LICENSE"
        },
        {
          "name": "Machine",
          "value": "MACHINE"
        }
      ]
    },
    "google-native:compute/v1:RegionCommitmentPlan": {
      "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
      "type": "string",
      "enum": [
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "ThirtySixMonth",
          "value": "THIRTY_SIX_MONTH"
        },
        {
          "name": "TwelveMonth",
          "value": "TWELVE_MONTH"
        }
      ]
    },
    "google-native:compute/v1:RegionCommitmentType": {
      "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorOptimized",
          "value": "ACCELERATOR_OPTIMIZED"
        },
        {
          "name": "AcceleratorOptimizedA3",
          "value": "ACCELERATOR_OPTIMIZED_A3"
        },
        {
          "name": "ComputeOptimized",
          "value": "COMPUTE_OPTIMIZED"
        },
        {
          "name": "ComputeOptimizedC2d",
          "value": "COMPUTE_OPTIMIZED_C2D"
        },
        {
          "name": "ComputeOptimizedC3",
          "value": "COMPUTE_OPTIMIZED_C3"
        },
        {
          "name": "ComputeOptimizedC3d",
          "value": "COMPUTE_OPTIMIZED_C3D"
        },
        {
          "name": "ComputeOptimizedH3",
          "value": "COMPUTE_OPTIMIZED_H3"
        },
        {
          "name": "GeneralPurpose",
          "value": "GENERAL_PURPOSE"
        },
        {
          "name": "GeneralPurposeE2",
          "value": "GENERAL_PURPOSE_E2"
        },
        {
          "name": "GeneralPurposeN2",
          "value": "GENERAL_PURPOSE_N2"
        },
        {
          "name": "GeneralPurposeN2d",
          "value": "GENERAL_PURPOSE_N2D"
        },
        {
          "name": "GeneralPurposeT2d",
          "value": "GENERAL_PURPOSE_T2D"
        },
        {
          "name": "GraphicsOptimized",
          "value": "GRAPHICS_OPTIMIZED"
        },
        {
          "name": "MemoryOptimized",
          "value": "MEMORY_OPTIMIZED"
        },
        {
          "name": "MemoryOptimizedM3",
          "value": "MEMORY_OPTIMIZED_M3"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:RegionDiskArchitecture": {
      "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Default value indicating Architecture is not set.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "Arm64",
          "description": "Machines with architecture ARM64",
          "value": "ARM64"
        },
        {
          "name": "X8664",
          "description": "Machines with architecture X86_64",
          "value": "X86_64"
        }
      ]
    },
    "google-native:compute/v1:RegionHealthCheckServiceHealthStatusAggregationPolicy": {
      "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService.",
      "type": "string",
      "enum": [
        {
          "name": "And",
          "description": "If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY.",
          "value": "AND"
        },
        {
          "name": "NoAggregation",
          "description": "An EndpointHealth message is returned for each backend in the health check service.",
          "value": "NO_AGGREGATION"
        }
      ]
    },
    "google-native:compute/v1:RegionHealthCheckType": {
      "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
      "type": "string",
      "enum": [
        {
          "name": "Grpc",
          "value": "GRPC"
        },
        {
          "name": "Http",
          "value": "HTTP"
        },
        {
          "name": "Http2",
          "value": "HTTP2"
        },
        {
          "name": "Https",
          "value": "HTTPS"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Ssl",
          "value": "SSL"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        }
      ]
    },
    "google-native:compute/v1:RegionInstanceGroupManagerListManagedInstancesResults": {
      "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
      "type": "string",
      "enum": [
        {
          "name": "Pageless",
          "description": "(Default) Pagination is disabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are ignored and all instances are returned in a single response.",
          "value": "PAGELESS"
        },
        {
          "name": "Paginated",
          "description": "Pagination is enabled for the group's listManagedInstances API method. maxResults and pageToken query parameters are respected.",
          "value": "PAGINATED"
        }
      ]
    },
    "google-native:compute/v1:RegionNetworkEndpointGroupNetworkEndpointType": {
      "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
      "type": "string",
      "enum": [
        {
          "name": "GceVmIp",
          "description": "The network endpoint is represented by an IP address.",
          "value": "GCE_VM_IP"
        },
        {
          "name": "GceVmIpPort",
          "description": "The network endpoint is represented by IP address and port pair.",
          "value": "GCE_VM_IP_PORT"
        },
        {
          "name": "InternetFqdnPort",
          "description": "The network endpoint is represented by fully qualified domain name and port.",
          "value": "INTERNET_FQDN_PORT"
        },
        {
          "name": "InternetIpPort",
          "description": "The network endpoint is represented by an internet IP address and port.",
          "value": "INTERNET_IP_PORT"
        },
        {
          "name": "NonGcpPrivateIpPort",
          "description": "The network endpoint is represented by an IP address and port. The endpoint belongs to a VM or pod running in a customer's on-premises.",
          "value": "NON_GCP_PRIVATE_IP_PORT"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "The network endpoint is either public Google APIs or services exposed by other GCP Project with a Service Attachment. The connection is set up by private service connect",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "Serverless",
          "description": "The network endpoint is handled by specified serverless infrastructure.",
          "value": "SERVERLESS"
        }
      ]
    },
    "google-native:compute/v1:RegionSecurityPolicyType": {
      "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
      "type": "string",
      "enum": [
        {
          "name": "CloudArmor",
          "value": "CLOUD_ARMOR"
        },
        {
          "name": "CloudArmorEdge",
          "value": "CLOUD_ARMOR_EDGE"
        },
        {
          "name": "CloudArmorNetwork",
          "value": "CLOUD_ARMOR_NETWORK"
        }
      ]
    },
    "google-native:compute/v1:RegionSslCertificateType": {
      "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
      "type": "string",
      "enum": [
        {
          "name": "Managed",
          "description": "Google-managed SSLCertificate.",
          "value": "MANAGED"
        },
        {
          "name": "SelfManaged",
          "description": "Certificate uploaded by user.",
          "value": "SELF_MANAGED"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:RegionSslPolicyMinTlsVersion": {
      "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
      "type": "string",
      "enum": [
        {
          "name": "Tls10",
          "description": "TLS 1.0",
          "value": "TLS_1_0"
        },
        {
          "name": "Tls11",
          "description": "TLS 1.1",
          "value": "TLS_1_1"
        },
        {
          "name": "Tls12",
          "description": "TLS 1.2",
          "value": "TLS_1_2"
        }
      ]
    },
    "google-native:compute/v1:RegionSslPolicyProfile": {
      "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
      "type": "string",
      "enum": [
        {
          "name": "Compatible",
          "description": "Compatible profile. Allows the broadset set of clients, even those which support only out-of-date SSL features to negotiate with the load balancer.",
          "value": "COMPATIBLE"
        },
        {
          "name": "Custom",
          "description": "Custom profile. Allow only the set of allowed SSL features specified in the customFeatures field.",
          "value": "CUSTOM"
        },
        {
          "name": "Modern",
          "description": "Modern profile. Supports a wide set of SSL features, allowing modern clients to negotiate SSL with the load balancer.",
          "value": "MODERN"
        },
        {
          "name": "Restricted",
          "description": "Restricted profile. Supports a reduced set of SSL features, intended to meet stricter compliance requirements.",
          "value": "RESTRICTED"
        }
      ]
    },
    "google-native:compute/v1:RegionSslPolicyWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/v1:RegionSslPolicyWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RegionSslPolicyWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/v1:RegionTargetHttpsProxyQuicOverride": {
      "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "The load balancer will not attempt to negotiate QUIC with clients.",
          "value": "DISABLE"
        },
        {
          "name": "Enable",
          "description": "The load balancer will attempt to negotiate QUIC with clients.",
          "value": "ENABLE"
        },
        {
          "name": "None",
          "description": "No overrides to the default QUIC policy. This option is implicit if no QUIC override has been specified in the request.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/v1:RegionTargetTcpProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/v1:RequestMirrorPolicy": {
      "description": "A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. The load balancer doesn't wait for responses from the shadow service. Before sending traffic to the shadow service, the host or authority header is suffixed with -shadow.",
      "properties": {
        "backendService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource being mirrored to. The 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. Serverless NEG backends are not currently supported as a mirrored backend service. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RequestMirrorPolicyResponse": {
      "description": "A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. The load balancer doesn't wait for responses from the shadow service. Before sending traffic to the shadow service, the host or authority header is suffixed with -shadow.",
      "properties": {
        "backendService": {
          "type": "string",
          "description": "The full or partial URL to the BackendService resource being mirrored to. The 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. Serverless NEG backends are not currently supported as a mirrored backend service. "
        }
      },
      "type": "object",
      "required": [
        "backendService"
      ]
    },
    "google-native:compute/v1:Reservation": {
      "description": "Represents a reservation resource. A reservation ensures that capacity is held in a specific zone even if the reserved VMs are not running. For more information, read Reserving zonal resources.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fv1:ShareSettings",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUReservation",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ReservationAffinity": {
      "description": "Specifies the reservations that this instance can consume from.",
      "properties": {
        "consumeReservationType": {
          "$ref": "#/types/google-native:compute%2Fv1:ReservationAffinityConsumeReservationType",
          "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples."
        },
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify googleapis.com/reservation-name as the key and specify the name of your reservation as its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of a reservation resource. This can be either a name to a reservation in the same project or \"projects/different-project/reservations/some-reservation-name\" to target a shared reservation in the same zone but in a different project."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ReservationAffinityConsumeReservationType": {
      "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples.",
      "type": "string",
      "enum": [
        {
          "name": "AnyReservation",
          "description": "Consume any allocation available.",
          "value": "ANY_RESERVATION"
        },
        {
          "name": "NoReservation",
          "description": "Do not consume from any allocated capacity.",
          "value": "NO_RESERVATION"
        },
        {
          "name": "SpecificReservation",
          "description": "Must consume from a specific reservation. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_RESERVATION"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:ReservationAffinityResponse": {
      "description": "Specifies the reservations that this instance can consume from.",
      "properties": {
        "consumeReservationType": {
          "type": "string",
          "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See Consuming reserved instances for examples."
        },
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify googleapis.com/reservation-name as the key and specify the name of your reservation as its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of a reservation resource. This can be either a name to a reservation in the same project or \"projects/different-project/reservations/some-reservation-name\" to target a shared reservation in the same zone but in a different project."
        }
      },
      "type": "object",
      "required": [
        "consumeReservationType",
        "key",
        "values"
      ]
    },
    "google-native:compute/v1:ReservationResponse": {
      "description": "Represents a reservation resource. A reservation ensures that capacity is held in a specific zone even if the reserved VMs are not running. For more information, read Reserving zonal resources.",
      "properties": {
        "commitment": {
          "type": "string",
          "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#reservations for reservations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationResourceStatusResponse",
          "description": "Status information for Reservation resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fv1:ShareSettingsResponse",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUReservationResponse",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "status": {
          "type": "string",
          "description": "The status of the reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      },
      "type": "object",
      "required": [
        "commitment",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "shareSettings",
        "specificReservation",
        "specificReservationRequired",
        "status",
        "zone"
      ]
    },
    "google-native:compute/v1:ResourceCommitment": {
      "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "Name of the accelerator type resource. Applicable only when the type is ACCELERATOR."
        },
        "amount": {
          "type": "string",
          "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourceCommitmentType",
          "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourceCommitmentResponse": {
      "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "Name of the accelerator type resource. Applicable only when the type is ACCELERATOR."
        },
        "amount": {
          "type": "string",
          "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU."
        },
        "type": {
          "type": "string",
          "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "amount",
        "type"
      ]
    },
    "google-native:compute/v1:ResourceCommitmentType": {
      "description": "Type of resource for which this commitment applies. Possible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR.",
      "type": "string",
      "enum": [
        {
          "name": "Accelerator",
          "value": "ACCELERATOR"
        },
        {
          "name": "LocalSsd",
          "value": "LOCAL_SSD"
        },
        {
          "name": "Memory",
          "value": "MEMORY"
        },
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Vcpu",
          "value": "VCPU"
        }
      ]
    },
    "google-native:compute/v1:ResourcePolicyDailyCycle": {
      "description": "Time window specified for daily operations.",
      "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."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyDailyCycleResponse": {
      "description": "Time window specified for daily operations.",
      "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."
        },
        "duration": {
          "type": "string",
          "description": "[Output only] A predetermined duration for the window, automatically chosen to be the smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "daysInCycle",
        "duration",
        "startTime"
      ]
    },
    "google-native:compute/v1:ResourcePolicyDiskConsistencyGroupPolicy": {
      "description": "Resource policy for disk consistency groups.",
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyDiskConsistencyGroupPolicyResponse": {
      "description": "Resource policy for disk consistency groups.",
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyGroupPlacementPolicy": {
      "description": "A GroupPlacementPolicy specifies resource placement configuration. It specifies the failure bucket separation as well as network locality",
      "properties": {
        "availabilityDomainCount": {
          "type": "integer",
          "description": "The number of availability domains to spread instances across. If two instances are in different availability domain, they are not in the same low latency network."
        },
        "collocation": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyGroupPlacementPolicyCollocation",
          "description": "Specifies network collocation"
        },
        "vmCount": {
          "type": "integer",
          "description": "Number of VMs in this placement group. Google does not recommend that you use this field unless you use a compact policy and you want your policy to work only if it contains this exact number of VMs."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyGroupPlacementPolicyCollocation": {
      "description": "Specifies network collocation",
      "type": "string",
      "enum": [
        {
          "name": "Collocated",
          "value": "COLLOCATED"
        },
        {
          "name": "UnspecifiedCollocation",
          "value": "UNSPECIFIED_COLLOCATION"
        }
      ]
    },
    "google-native:compute/v1:ResourcePolicyGroupPlacementPolicyResponse": {
      "description": "A GroupPlacementPolicy specifies resource placement configuration. It specifies the failure bucket separation as well as network locality",
      "properties": {
        "availabilityDomainCount": {
          "type": "integer",
          "description": "The number of availability domains to spread instances across. If two instances are in different availability domain, they are not in the same low latency network."
        },
        "collocation": {
          "type": "string",
          "description": "Specifies network collocation"
        },
        "vmCount": {
          "type": "integer",
          "description": "Number of VMs in this placement group. Google does not recommend that you use this field unless you use a compact policy and you want your policy to work only if it contains this exact number of VMs."
        }
      },
      "type": "object",
      "required": [
        "availabilityDomainCount",
        "collocation",
        "vmCount"
      ]
    },
    "google-native:compute/v1:ResourcePolicyHourlyCycle": {
      "description": "Time window specified for hourly operations.",
      "properties": {
        "hoursInCycle": {
          "type": "integer",
          "description": "Defines a schedule with units measured in hours. The value determines how many hours pass between the start of each cycle."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyHourlyCycleResponse": {
      "description": "Time window specified for hourly operations.",
      "properties": {
        "duration": {
          "type": "string",
          "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
        },
        "hoursInCycle": {
          "type": "integer",
          "description": "Defines a schedule with units measured in hours. The value determines how many hours pass between the start of each cycle."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "hoursInCycle",
        "startTime"
      ]
    },
    "google-native:compute/v1:ResourcePolicyInstanceSchedulePolicy": {
      "description": "An InstanceSchedulePolicy specifies when and how frequent certain operations are performed on the instance.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The expiration time of the schedule. The timestamp is an RFC3339 string."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of the schedule. The timestamp is an RFC3339 string."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting Schedule.schedule. The value of this field must be a time zone name from the tz database: https://wikipedia.org/wiki/Tz_database."
        },
        "vmStartSchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyInstanceSchedulePolicySchedule",
          "description": "Specifies the schedule for starting instances."
        },
        "vmStopSchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyInstanceSchedulePolicySchedule",
          "description": "Specifies the schedule for stopping instances."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyInstanceSchedulePolicyResponse": {
      "description": "An InstanceSchedulePolicy specifies when and how frequent certain operations are performed on the instance.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The expiration time of the schedule. The timestamp is an RFC3339 string."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of the schedule. The timestamp is an RFC3339 string."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting Schedule.schedule. The value of this field must be a time zone name from the tz database: https://wikipedia.org/wiki/Tz_database."
        },
        "vmStartSchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyInstanceSchedulePolicyScheduleResponse",
          "description": "Specifies the schedule for starting instances."
        },
        "vmStopSchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyInstanceSchedulePolicyScheduleResponse",
          "description": "Specifies the schedule for stopping instances."
        }
      },
      "type": "object",
      "required": [
        "expirationTime",
        "startTime",
        "timeZone",
        "vmStartSchedule",
        "vmStopSchedule"
      ]
    },
    "google-native:compute/v1:ResourcePolicyInstanceSchedulePolicySchedule": {
      "description": "Schedule for an instance operation.",
      "properties": {
        "schedule": {
          "type": "string",
          "description": "Specifies the frequency for the operation, using the unix-cron format."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyInstanceSchedulePolicyScheduleResponse": {
      "description": "Schedule for an instance operation.",
      "properties": {
        "schedule": {
          "type": "string",
          "description": "Specifies the frequency for the operation, using the unix-cron format."
        }
      },
      "type": "object",
      "required": [
        "schedule"
      ]
    },
    "google-native:compute/v1:ResourcePolicyResourceStatusInstanceSchedulePolicyStatusResponse": {
      "properties": {
        "lastRunStartTime": {
          "type": "string",
          "description": "The last time the schedule successfully ran. The timestamp is an RFC3339 string."
        },
        "nextRunStartTime": {
          "type": "string",
          "description": "The next time the schedule is planned to run. The actual time might be slightly different. The timestamp is an RFC3339 string."
        }
      },
      "type": "object",
      "required": [
        "lastRunStartTime",
        "nextRunStartTime"
      ]
    },
    "google-native:compute/v1:ResourcePolicyResourceStatusResponse": {
      "description": "Contains output only fields. Use this sub-message for all output fields set on ResourcePolicy. The internal structure of this \"status\" field should mimic the structure of ResourcePolicy proto specification.",
      "properties": {
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyResourceStatusInstanceSchedulePolicyStatusResponse",
          "description": "Specifies a set of output values reffering to the instance_schedule_policy system status. This field should have the same name as corresponding policy field."
        }
      },
      "type": "object",
      "required": [
        "instanceSchedulePolicy"
      ]
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicy": {
      "description": "A snapshot schedule policy specifies when and how frequently snapshots are to be created for the target disk. Also specifies how many and how long these scheduled snapshots should be retained.",
      "properties": {
        "retentionPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicyRetentionPolicy",
          "description": "Retention policy applied to snapshots created by this resource policy."
        },
        "schedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicySchedule",
          "description": "A Vm Maintenance Policy specifies what kind of infrastructure maintenance we are allowed to perform on this VM and when. Schedule that is applied to disks covered by this policy."
        },
        "snapshotProperties": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicySnapshotProperties",
          "description": "Properties with which snapshots are created such as labels, encryption keys."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicyResponse": {
      "description": "A snapshot schedule policy specifies when and how frequently snapshots are to be created for the target disk. Also specifies how many and how long these scheduled snapshots should be retained.",
      "properties": {
        "retentionPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicyRetentionPolicyResponse",
          "description": "Retention policy applied to snapshots created by this resource policy."
        },
        "schedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicyScheduleResponse",
          "description": "A Vm Maintenance Policy specifies what kind of infrastructure maintenance we are allowed to perform on this VM and when. Schedule that is applied to disks covered by this policy."
        },
        "snapshotProperties": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicySnapshotPropertiesResponse",
          "description": "Properties with which snapshots are created such as labels, encryption keys."
        }
      },
      "type": "object",
      "required": [
        "retentionPolicy",
        "schedule",
        "snapshotProperties"
      ]
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicyRetentionPolicy": {
      "description": "Policy for retention of scheduled snapshots.",
      "properties": {
        "maxRetentionDays": {
          "type": "integer",
          "description": "Maximum age of the snapshot that is allowed to be kept."
        },
        "onSourceDiskDelete": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete",
          "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete": {
      "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted.",
      "type": "string",
      "enum": [
        {
          "name": "ApplyRetentionPolicy",
          "value": "APPLY_RETENTION_POLICY"
        },
        {
          "name": "KeepAutoSnapshots",
          "value": "KEEP_AUTO_SNAPSHOTS"
        },
        {
          "name": "UnspecifiedOnSourceDiskDelete",
          "value": "UNSPECIFIED_ON_SOURCE_DISK_DELETE"
        }
      ]
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicyRetentionPolicyResponse": {
      "description": "Policy for retention of scheduled snapshots.",
      "properties": {
        "maxRetentionDays": {
          "type": "integer",
          "description": "Maximum age of the snapshot that is allowed to be kept."
        },
        "onSourceDiskDelete": {
          "type": "string",
          "description": "Specifies the behavior to apply to scheduled snapshots when the source disk is deleted."
        }
      },
      "type": "object",
      "required": [
        "maxRetentionDays",
        "onSourceDiskDelete"
      ]
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicySchedule": {
      "description": "A schedule for disks where the schedueled operations are performed.",
      "properties": {
        "dailySchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyDailyCycle"
        },
        "hourlySchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyHourlyCycle"
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyWeeklyCycle"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicyScheduleResponse": {
      "description": "A schedule for disks where the schedueled operations are performed.",
      "properties": {
        "dailySchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyDailyCycleResponse"
        },
        "hourlySchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyHourlyCycleResponse"
        },
        "weeklySchedule": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyWeeklyCycleResponse"
        }
      },
      "type": "object",
      "required": [
        "dailySchedule",
        "hourlySchedule",
        "weeklySchedule"
      ]
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicySnapshotProperties": {
      "description": "Specified snapshot properties for scheduled snapshots created by this policy.",
      "properties": {
        "chainName": {
          "type": "string",
          "description": "Chain name that the snapshot is created in."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Indication to perform a 'guest aware' snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to scheduled snapshots. These can be later modified by the setLabels method. Label values may be empty."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the auto snapshot (regional or multi-regional)."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicySnapshotSchedulePolicySnapshotPropertiesResponse": {
      "description": "Specified snapshot properties for scheduled snapshots created by this policy.",
      "properties": {
        "chainName": {
          "type": "string",
          "description": "Chain name that the snapshot is created in."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Indication to perform a 'guest aware' snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to scheduled snapshots. These can be later modified by the setLabels method. Label values may be empty."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the auto snapshot (regional or multi-regional)."
        }
      },
      "type": "object",
      "required": [
        "chainName",
        "guestFlush",
        "labels",
        "storageLocations"
      ]
    },
    "google-native:compute/v1:ResourcePolicyWeeklyCycle": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "dayOfWeeks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyWeeklyCycleDayOfWeek"
          },
          "description": "Up to 7 intervals/windows, one for each day of the week."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyWeeklyCycleDayOfWeek": {
      "properties": {
        "day": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyWeeklyCycleDayOfWeekDay",
          "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ResourcePolicyWeeklyCycleDayOfWeekDay": {
      "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY.",
      "type": "string",
      "enum": [
        {
          "name": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Invalid",
          "value": "INVALID"
        },
        {
          "name": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "value": "SUNDAY"
        },
        {
          "name": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "value": "WEDNESDAY"
        }
      ]
    },
    "google-native:compute/v1:ResourcePolicyWeeklyCycleDayOfWeekResponse": {
      "properties": {
        "day": {
          "type": "string",
          "description": "Defines a schedule that runs on specific days of the week. Specify one or more days. The following options are available: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY."
        },
        "duration": {
          "type": "string",
          "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the window to start the operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:compute/v1:ResourcePolicyWeeklyCycleResponse": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "dayOfWeeks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyWeeklyCycleDayOfWeekResponse"
          },
          "description": "Up to 7 intervals/windows, one for each day of the week."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeeks"
      ]
    },
    "google-native:compute/v1:ResourceStatusResponse": {
      "description": "Contains output only fields. Use this sub-message for actual values set on Instance attributes as compared to the value requested by the user (intent) in their instance CRUD calls.",
      "properties": {
        "physicalHost": {
          "type": "string",
          "description": "An opaque ID of the host on which the VM is running."
        },
        "upcomingMaintenance": {
          "$ref": "#/types/google-native:compute%2Fv1:UpcomingMaintenanceResponse"
        }
      },
      "type": "object",
      "required": [
        "physicalHost",
        "upcomingMaintenance"
      ]
    },
    "google-native:compute/v1:RouteAsPathResponse": {
      "properties": {
        "asLists": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The AS numbers of the AS Path."
        },
        "pathSegmentType": {
          "type": "string",
          "description": "The type of the AS Path, which can be one of the following values: - 'AS_SET': unordered set of autonomous systems that the route in has traversed - 'AS_SEQUENCE': ordered set of autonomous systems that the route has traversed - 'AS_CONFED_SEQUENCE': ordered set of Member Autonomous Systems in the local confederation that the route has traversed - 'AS_CONFED_SET': unordered set of Member Autonomous Systems in the local confederation that the route has traversed "
        }
      },
      "type": "object",
      "required": [
        "asLists",
        "pathSegmentType"
      ]
    },
    "google-native:compute/v1:RouteWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/v1:RouteWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouteWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/v1:RouterAdvertisedIpRange": {
      "description": "Description-tagged IP ranges for the router to advertise.",
      "properties": {
        "description": {
          "type": "string",
          "description": "User-specified description for the IP range."
        },
        "range": {
          "type": "string",
          "description": "The IP range to advertise. The value must be a CIDR-formatted string."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterAdvertisedIpRangeResponse": {
      "description": "Description-tagged IP ranges for the router to advertise.",
      "properties": {
        "description": {
          "type": "string",
          "description": "User-specified description for the IP range."
        },
        "range": {
          "type": "string",
          "description": "The IP range to advertise. The value must be a CIDR-formatted string."
        }
      },
      "type": "object",
      "required": [
        "description",
        "range"
      ]
    },
    "google-native:compute/v1:RouterBgp": {
      "properties": {
        "advertiseMode": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterBgpAdvertiseMode",
          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterBgpAdvertisedGroupsItem"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterAdvertisedIpRange"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "asn": {
          "type": "integer",
          "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN."
        },
        "keepaliveInterval": {
          "type": "integer",
          "description": "The interval in seconds between BGP keepalive messages that are sent to the peer. Hold time is three times the interval at which keepalive messages are sent, and the hold time is the maximum number of seconds allowed to elapse between successive keepalive messages that BGP receives from a peer. BGP will use the smaller of either the local hold time value or the peer's hold time value as the hold time for the BGP connection between the two peers. If set, this value must be between 20 and 60. The default is 20."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterBgpAdvertiseMode": {
      "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "value": "CUSTOM"
        },
        {
          "name": "Default",
          "value": "DEFAULT"
        }
      ]
    },
    "google-native:compute/v1:RouterBgpAdvertisedGroupsItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllSubnets",
          "description": "Advertise all available subnets (including peer VPC subnets).",
          "value": "ALL_SUBNETS"
        }
      ]
    },
    "google-native:compute/v1:RouterBgpPeer": {
      "properties": {
        "advertiseMode": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerAdvertiseMode",
          "description": "User-specified flag to indicate which mode to use for advertisement."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerAdvertisedGroupsItem"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode, which currently supports the following option: - ALL_SUBNETS: Advertises all of the router's own VPC subnets. This excludes any routes learned for subnets that use VPC Network Peering. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterAdvertisedIpRange"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "advertisedRoutePriority": {
          "type": "integer",
          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win."
        },
        "bfd": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerBfd",
          "description": "BFD configuration for the BGP peering."
        },
        "customLearnedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerCustomLearnedIpRange"
          },
          "description": "A list of user-defined custom learned route IP address ranges for a BGP session."
        },
        "customLearnedRoutePriority": {
          "type": "integer",
          "description": "The user-defined custom learned route priority for a BGP session. This value is applied to all custom learned route ranges for the session. You can choose a value from `0` to `65335`. If you don't provide a value, Google Cloud assigns a priority of `100` to the ranges."
        },
        "enable": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerEnable",
          "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE."
        },
        "enableIpv6": {
          "type": "boolean",
          "description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default."
        },
        "interfaceName": {
          "type": "string",
          "description": "Name of the interface the BGP peer is associated with."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
        },
        "ipv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the interface inside Google Cloud Platform."
        },
        "md5AuthenticationKeyName": {
          "type": "string",
          "description": "Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the Router.md5_authentication_keys. The field must comply with RFC1035."
        },
        "name": {
          "type": "string",
          "description": "Name of this BGP peer. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerAsn": {
          "type": "integer",
          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value."
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported."
        },
        "peerIpv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the BGP interface outside Google Cloud Platform."
        },
        "routerApplianceInstance": {
          "type": "string",
          "description": "URI of the VM instance that is used as third-party router appliances such as Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance must be located in zones contained in the same region as this Cloud Router. The VM instance is the peer side of the BGP session."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterBgpPeerAdvertiseMode": {
      "description": "User-specified flag to indicate which mode to use for advertisement.",
      "type": "string",
      "enum": [
        {
          "name": "Custom",
          "value": "CUSTOM"
        },
        {
          "name": "Default",
          "value": "DEFAULT"
        }
      ]
    },
    "google-native:compute/v1:RouterBgpPeerAdvertisedGroupsItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllSubnets",
          "description": "Advertise all available subnets (including peer VPC subnets).",
          "value": "ALL_SUBNETS"
        }
      ]
    },
    "google-native:compute/v1:RouterBgpPeerBfd": {
      "properties": {
        "minReceiveInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets received from the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the transmit interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "minTransmitInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the corresponding receive interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "multiplier": {
          "type": "integer",
          "description": "The number of consecutive BFD packets that must be missed before BFD declares that a peer is unavailable. If set, the value must be a value between 5 and 16. The default is 5."
        },
        "sessionInitializationMode": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerBfdSessionInitializationMode",
          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterBgpPeerBfdResponse": {
      "properties": {
        "minReceiveInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets received from the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the transmit interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "minTransmitInterval": {
          "type": "integer",
          "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to the peer router. The actual value is negotiated between the two routers and is equal to the greater of this value and the corresponding receive interval of the other router. If set, this value must be between 1000 and 30000. The default is 1000."
        },
        "multiplier": {
          "type": "integer",
          "description": "The number of consecutive BFD packets that must be missed before BFD declares that a peer is unavailable. If set, the value must be a value between 5 and 16. The default is 5."
        },
        "sessionInitializationMode": {
          "type": "string",
          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED."
        }
      },
      "type": "object",
      "required": [
        "minReceiveInterval",
        "minTransmitInterval",
        "multiplier",
        "sessionInitializationMode"
      ]
    },
    "google-native:compute/v1:RouterBgpPeerBfdSessionInitializationMode": {
      "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is DISABLED.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "value": "ACTIVE"
        },
        {
          "name": "Disabled",
          "value": "DISABLED"
        },
        {
          "name": "Passive",
          "value": "PASSIVE"
        }
      ]
    },
    "google-native:compute/v1:RouterBgpPeerCustomLearnedIpRange": {
      "properties": {
        "range": {
          "type": "string",
          "description": "The custom learned route IP address range. Must be a valid CIDR-formatted prefix. If an IP address is provided without a subnet mask, it is interpreted as, for IPv4, a `/32` singular IP address range, and, for IPv6, `/128`."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterBgpPeerCustomLearnedIpRangeResponse": {
      "properties": {
        "range": {
          "type": "string",
          "description": "The custom learned route IP address range. Must be a valid CIDR-formatted prefix. If an IP address is provided without a subnet mask, it is interpreted as, for IPv4, a `/32` singular IP address range, and, for IPv6, `/128`."
        }
      },
      "type": "object",
      "required": [
        "range"
      ]
    },
    "google-native:compute/v1:RouterBgpPeerEnable": {
      "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE.",
      "type": "string",
      "enum": [
        {
          "name": "False",
          "value": "FALSE"
        },
        {
          "name": "True",
          "value": "TRUE"
        }
      ]
    },
    "google-native:compute/v1:RouterBgpPeerResponse": {
      "properties": {
        "advertiseMode": {
          "type": "string",
          "description": "User-specified flag to indicate which mode to use for advertisement."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode, which currently supports the following option: - ALL_SUBNETS: Advertises all of the router's own VPC subnets. This excludes any routes learned for subnets that use VPC Network Peering. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterAdvertisedIpRangeResponse"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "advertisedRoutePriority": {
          "type": "integer",
          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win."
        },
        "bfd": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerBfdResponse",
          "description": "BFD configuration for the BGP peering."
        },
        "customLearnedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerCustomLearnedIpRangeResponse"
          },
          "description": "A list of user-defined custom learned route IP address ranges for a BGP session."
        },
        "customLearnedRoutePriority": {
          "type": "integer",
          "description": "The user-defined custom learned route priority for a BGP session. This value is applied to all custom learned route ranges for the session. You can choose a value from `0` to `65335`. If you don't provide a value, Google Cloud assigns a priority of `100` to the ranges."
        },
        "enable": {
          "type": "string",
          "description": "The status of the BGP peer connection. If set to FALSE, any active session with the peer is terminated and all associated routing information is removed. If set to TRUE, the peer connection can be established with routing information. The default is TRUE."
        },
        "enableIpv6": {
          "type": "boolean",
          "description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default."
        },
        "interfaceName": {
          "type": "string",
          "description": "Name of the interface the BGP peer is associated with."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
        },
        "ipv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the interface inside Google Cloud Platform."
        },
        "managementType": {
          "type": "string",
          "description": "The resource that configures and manages this BGP peer. - MANAGED_BY_USER is the default value and can be managed by you or other users - MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted. "
        },
        "md5AuthenticationKeyName": {
          "type": "string",
          "description": "Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the Router.md5_authentication_keys. The field must comply with RFC1035."
        },
        "name": {
          "type": "string",
          "description": "Name of this BGP peer. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerAsn": {
          "type": "integer",
          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value."
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported."
        },
        "peerIpv6NexthopAddress": {
          "type": "string",
          "description": "IPv6 address of the BGP interface outside Google Cloud Platform."
        },
        "routerApplianceInstance": {
          "type": "string",
          "description": "URI of the VM instance that is used as third-party router appliances such as Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance must be located in zones contained in the same region as this Cloud Router. The VM instance is the peer side of the BGP session."
        }
      },
      "type": "object",
      "required": [
        "advertiseMode",
        "advertisedGroups",
        "advertisedIpRanges",
        "advertisedRoutePriority",
        "bfd",
        "customLearnedIpRanges",
        "customLearnedRoutePriority",
        "enable",
        "enableIpv6",
        "interfaceName",
        "ipAddress",
        "ipv6NexthopAddress",
        "managementType",
        "md5AuthenticationKeyName",
        "name",
        "peerAsn",
        "peerIpAddress",
        "peerIpv6NexthopAddress",
        "routerApplianceInstance"
      ]
    },
    "google-native:compute/v1:RouterBgpResponse": {
      "properties": {
        "advertiseMode": {
          "type": "string",
          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM."
        },
        "advertisedGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups."
        },
        "advertisedIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterAdvertisedIpRangeResponse"
          },
          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges."
        },
        "asn": {
          "type": "integer",
          "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN."
        },
        "keepaliveInterval": {
          "type": "integer",
          "description": "The interval in seconds between BGP keepalive messages that are sent to the peer. Hold time is three times the interval at which keepalive messages are sent, and the hold time is the maximum number of seconds allowed to elapse between successive keepalive messages that BGP receives from a peer. BGP will use the smaller of either the local hold time value or the peer's hold time value as the hold time for the BGP connection between the two peers. If set, this value must be between 20 and 60. The default is 20."
        }
      },
      "type": "object",
      "required": [
        "advertiseMode",
        "advertisedGroups",
        "advertisedIpRanges",
        "asn",
        "keepaliveInterval"
      ]
    },
    "google-native:compute/v1:RouterInterface": {
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
        },
        "linkedInterconnectAttachment": {
          "type": "string",
          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "linkedVpnTunnel": {
          "type": "string",
          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "name": {
          "type": "string",
          "description": "Name of this interface entry. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateIpAddress": {
          "type": "string",
          "description": "The regional private internal IP address that is used to establish BGP sessions to a VM instance acting as a third-party Router Appliance, such as a Next Gen Firewall, a Virtual Router, or an SD-WAN VM."
        },
        "redundantInterface": {
          "type": "string",
          "description": "Name of the interface that will be redundant with the current interface you are creating. The redundantInterface must belong to the same Cloud Router as the interface here. To establish the BGP session to a Router Appliance VM, you must create two BGP peers. The two BGP peers must be attached to two separate interfaces that are redundant with each other. The redundant_interface must be 1-63 characters long, and comply with RFC1035. Specifically, the redundant_interface must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URI of the subnetwork resource that this interface belongs to, which must be in the same region as the Cloud Router. When you establish a BGP session to a VM instance using this interface, the VM instance must belong to the same subnetwork as the subnetwork specified here."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterInterfaceResponse": {
      "properties": {
        "ipRange": {
          "type": "string",
          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
        },
        "linkedInterconnectAttachment": {
          "type": "string",
          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "linkedVpnTunnel": {
          "type": "string",
          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be a VPN tunnel, an Interconnect attachment, or a subnetwork."
        },
        "managementType": {
          "type": "string",
          "description": "The resource that configures and manages this interface. - MANAGED_BY_USER is the default value and can be managed directly by users. - MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically, by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted. "
        },
        "name": {
          "type": "string",
          "description": "Name of this interface entry. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateIpAddress": {
          "type": "string",
          "description": "The regional private internal IP address that is used to establish BGP sessions to a VM instance acting as a third-party Router Appliance, such as a Next Gen Firewall, a Virtual Router, or an SD-WAN VM."
        },
        "redundantInterface": {
          "type": "string",
          "description": "Name of the interface that will be redundant with the current interface you are creating. The redundantInterface must belong to the same Cloud Router as the interface here. To establish the BGP session to a Router Appliance VM, you must create two BGP peers. The two BGP peers must be attached to two separate interfaces that are redundant with each other. The redundant_interface must be 1-63 characters long, and comply with RFC1035. Specifically, the redundant_interface must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URI of the subnetwork resource that this interface belongs to, which must be in the same region as the Cloud Router. When you establish a BGP session to a VM instance using this interface, the VM instance must belong to the same subnetwork as the subnetwork specified here."
        }
      },
      "type": "object",
      "required": [
        "ipRange",
        "linkedInterconnectAttachment",
        "linkedVpnTunnel",
        "managementType",
        "name",
        "privateIpAddress",
        "redundantInterface",
        "subnetwork"
      ]
    },
    "google-native:compute/v1:RouterMd5AuthenticationKey": {
      "properties": {
        "key": {
          "type": "string",
          "description": "[Input only] Value of the key. For patch and update calls, it can be skipped to copy the value from the previous configuration. This is allowed if the key with the same name existed before the operation. Maximum length is 80 characters. Can only contain printable ASCII characters."
        },
        "name": {
          "type": "string",
          "description": "Name used to identify the key. Must be unique within a router. Must be referenced by exactly one bgpPeer. Must comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterMd5AuthenticationKeyResponse": {
      "properties": {
        "key": {
          "type": "string",
          "description": "[Input only] Value of the key. For patch and update calls, it can be skipped to copy the value from the previous configuration. This is allowed if the key with the same name existed before the operation. Maximum length is 80 characters. Can only contain printable ASCII characters."
        },
        "name": {
          "type": "string",
          "description": "Name used to identify the key. Must be unique within a router. Must be referenced by exactly one bgpPeer. Must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "key",
        "name"
      ]
    },
    "google-native:compute/v1:RouterNat": {
      "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
      "properties": {
        "autoNetworkTier": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatAutoNetworkTier",
          "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used."
        },
        "drainNatIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT only."
        },
        "enableDynamicPortAllocation": {
          "type": "boolean",
          "description": "Enable Dynamic Port Allocation. If not specified, it is disabled by default. If set to true, - Dynamic Port Allocation will be enabled on this NAT config. - enableEndpointIndependentMapping cannot be set to true. - If minPorts is set, minPortsPerVm must be set to a power of two greater than or equal to 32. If minPortsPerVm is not set, a minimum of 32 ports will be allocated to a VM from this NAT config. "
        },
        "enableEndpointIndependentMapping": {
          "type": "boolean"
        },
        "endpointTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterNatEndpointTypesItem"
          },
          "description": "List of NAT-ted endpoint types supported by the Nat Gateway. If the list is empty, then it will be equivalent to include ENDPOINT_TYPE_VM"
        },
        "icmpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for ICMP connections. Defaults to 30s if not set."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatLogConfig",
          "description": "Configure logging on this NAT."
        },
        "maxPortsPerVm": {
          "type": "integer",
          "description": "Maximum number of ports allocated to a VM from this NAT config when Dynamic Port Allocation is enabled. If Dynamic Port Allocation is not enabled, this field has no effect. If Dynamic Port Allocation is enabled, and this field is set, it must be set to a power of two greater than minPortsPerVm, or 64 if minPortsPerVm is not set. If Dynamic Port Allocation is enabled and this field is not set, a maximum of 65536 ports will be allocated to a VM from this NAT config."
        },
        "minPortsPerVm": {
          "type": "integer",
          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM."
        },
        "name": {
          "type": "string",
          "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035."
        },
        "natIpAllocateOption": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatNatIpAllocateOption",
          "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. "
        },
        "natIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterNatRule"
          },
          "description": "A list of rules associated with this NAT."
        },
        "sourceSubnetworkIpRangesToNat": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatSourceSubnetworkIpRangesToNat",
          "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterNatSubnetworkToNat"
          },
          "description": "A list of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above."
        },
        "tcpEstablishedIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP established connections. Defaults to 1200s if not set."
        },
        "tcpTimeWaitTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP connections that are in TIME_WAIT state. Defaults to 120s if not set."
        },
        "tcpTransitoryIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP transitory connections. Defaults to 30s if not set."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatType",
          "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC."
        },
        "udpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for UDP connections. Defaults to 30s if not set."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterNatAutoNetworkTier": {
      "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used.",
      "type": "string",
      "enum": [
        {
          "name": "FixedStandard",
          "description": "Public internet quality with fixed bandwidth.",
          "value": "FIXED_STANDARD"
        },
        {
          "name": "Premium",
          "description": "High quality, Google-grade network tier, support for all networking products.",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "description": "Public internet quality, only limited support for other networking products.",
          "value": "STANDARD"
        },
        {
          "name": "StandardOverridesFixedStandard",
          "description": "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured.",
          "value": "STANDARD_OVERRIDES_FIXED_STANDARD"
        }
      ]
    },
    "google-native:compute/v1:RouterNatEndpointTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "EndpointTypeManagedProxyLb",
          "description": "This is used for regional Application Load Balancers (internal and external) and regional proxy Network Load Balancers (internal and external) endpoints.",
          "value": "ENDPOINT_TYPE_MANAGED_PROXY_LB"
        },
        {
          "name": "EndpointTypeSwg",
          "description": "This is used for Secure Web Gateway endpoints.",
          "value": "ENDPOINT_TYPE_SWG"
        },
        {
          "name": "EndpointTypeVm",
          "description": "This is the default.",
          "value": "ENDPOINT_TYPE_VM"
        }
      ]
    },
    "google-native:compute/v1:RouterNatLogConfig": {
      "description": "Configuration of logging on a NAT.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatLogConfigFilter",
          "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterNatLogConfigFilter": {
      "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "description": "Export logs for all (successful and unsuccessful) connections.",
          "value": "ALL"
        },
        {
          "name": "ErrorsOnly",
          "description": "Export logs for connection failures only.",
          "value": "ERRORS_ONLY"
        },
        {
          "name": "TranslationsOnly",
          "description": "Export logs for successful connections only.",
          "value": "TRANSLATIONS_ONLY"
        }
      ]
    },
    "google-native:compute/v1:RouterNatLogConfigResponse": {
      "description": "Configuration of logging on a NAT.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Indicates whether or not to export logs. This is false by default."
        },
        "filter": {
          "type": "string",
          "description": "Specify the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT. This option can take one of the following values: - ERRORS_ONLY: Export logs only for connection failures. - TRANSLATIONS_ONLY: Export logs only for successful connections. - ALL: Export logs for all connections, successful and unsuccessful. "
        }
      },
      "type": "object",
      "required": [
        "enable",
        "filter"
      ]
    },
    "google-native:compute/v1:RouterNatNatIpAllocateOption": {
      "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. ",
      "type": "string",
      "enum": [
        {
          "name": "AutoOnly",
          "description": "Nat IPs are allocated by GCP; customers can not specify any Nat IPs.",
          "value": "AUTO_ONLY"
        },
        {
          "name": "ManualOnly",
          "description": "Only use Nat IPs provided by customers. When specified Nat IPs are not enough then the Nat service fails for new VMs.",
          "value": "MANUAL_ONLY"
        }
      ]
    },
    "google-native:compute/v1:RouterNatResponse": {
      "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
      "properties": {
        "autoNetworkTier": {
          "type": "string",
          "description": "The network tier to use when automatically reserving NAT IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, then the current project-level default tier is used."
        },
        "drainNatIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT only."
        },
        "enableDynamicPortAllocation": {
          "type": "boolean",
          "description": "Enable Dynamic Port Allocation. If not specified, it is disabled by default. If set to true, - Dynamic Port Allocation will be enabled on this NAT config. - enableEndpointIndependentMapping cannot be set to true. - If minPorts is set, minPortsPerVm must be set to a power of two greater than or equal to 32. If minPortsPerVm is not set, a minimum of 32 ports will be allocated to a VM from this NAT config. "
        },
        "enableEndpointIndependentMapping": {
          "type": "boolean"
        },
        "endpointTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of NAT-ted endpoint types supported by the Nat Gateway. If the list is empty, then it will be equivalent to include ENDPOINT_TYPE_VM"
        },
        "icmpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for ICMP connections. Defaults to 30s if not set."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatLogConfigResponse",
          "description": "Configure logging on this NAT."
        },
        "maxPortsPerVm": {
          "type": "integer",
          "description": "Maximum number of ports allocated to a VM from this NAT config when Dynamic Port Allocation is enabled. If Dynamic Port Allocation is not enabled, this field has no effect. If Dynamic Port Allocation is enabled, and this field is set, it must be set to a power of two greater than minPortsPerVm, or 64 if minPortsPerVm is not set. If Dynamic Port Allocation is enabled and this field is not set, a maximum of 65536 ports will be allocated to a VM from this NAT config."
        },
        "minPortsPerVm": {
          "type": "integer",
          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM."
        },
        "name": {
          "type": "string",
          "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035."
        },
        "natIpAllocateOption": {
          "type": "string",
          "description": "Specify the NatIpAllocateOption, which can take one of the following values: - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty. "
        },
        "natIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterNatRuleResponse"
          },
          "description": "A list of rules associated with this NAT."
        },
        "sourceSubnetworkIpRangesToNat": {
          "type": "string",
          "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterNatSubnetworkToNatResponse"
          },
          "description": "A list of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above."
        },
        "tcpEstablishedIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP established connections. Defaults to 1200s if not set."
        },
        "tcpTimeWaitTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP connections that are in TIME_WAIT state. Defaults to 120s if not set."
        },
        "tcpTransitoryIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for TCP transitory connections. Defaults to 30s if not set."
        },
        "type": {
          "type": "string",
          "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC."
        },
        "udpIdleTimeoutSec": {
          "type": "integer",
          "description": "Timeout (in seconds) for UDP connections. Defaults to 30s if not set."
        }
      },
      "type": "object",
      "required": [
        "autoNetworkTier",
        "drainNatIps",
        "enableDynamicPortAllocation",
        "enableEndpointIndependentMapping",
        "endpointTypes",
        "icmpIdleTimeoutSec",
        "logConfig",
        "maxPortsPerVm",
        "minPortsPerVm",
        "name",
        "natIpAllocateOption",
        "natIps",
        "rules",
        "sourceSubnetworkIpRangesToNat",
        "subnetworks",
        "tcpEstablishedIdleTimeoutSec",
        "tcpTimeWaitTimeoutSec",
        "tcpTransitoryIdleTimeoutSec",
        "type",
        "udpIdleTimeoutSec"
      ]
    },
    "google-native:compute/v1:RouterNatRule": {
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatRuleAction",
          "description": "The action to be enforced for traffic that matches this rule."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this rule."
        },
        "match": {
          "type": "string",
          "description": "CEL expression that specifies the match condition that egress traffic from a VM is evaluated against. If it evaluates to true, the corresponding `action` is enforced. The following examples are valid match expressions for public NAT: \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\" \"destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'\" The following example is a valid match expression for private NAT: \"nexthop.hub == '//networkconnectivity.googleapis.com/projects/my-project/locations/global/hubs/hub-1'\""
        },
        "ruleNumber": {
          "type": "integer",
          "description": "An integer uniquely identifying a rule in the list. The rule number must be a positive value between 0 and 65000, and must be unique among rules within a NAT."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterNatRuleAction": {
      "properties": {
        "sourceNatActiveIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this NAT rule. These IP addresses must be valid static external IP addresses assigned to the project. This field is used for public NAT."
        },
        "sourceNatActiveRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the subnetworks used as source ranges for this NAT Rule. These subnetworks must have purpose set to PRIVATE_NAT. This field is used for private NAT."
        },
        "sourceNatDrainIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT rule only. This field is used for public NAT."
        },
        "sourceNatDrainRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of subnetworks representing source ranges to be drained. This is only supported on patch/update, and these subnetworks must have previously been used as active ranges in this NAT Rule. This field is used for private NAT."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterNatRuleActionResponse": {
      "properties": {
        "sourceNatActiveIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources used for this NAT rule. These IP addresses must be valid static external IP addresses assigned to the project. This field is used for public NAT."
        },
        "sourceNatActiveRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the subnetworks used as source ranges for this NAT Rule. These subnetworks must have purpose set to PRIVATE_NAT. This field is used for private NAT."
        },
        "sourceNatDrainIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT rule only. This field is used for public NAT."
        },
        "sourceNatDrainRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of subnetworks representing source ranges to be drained. This is only supported on patch/update, and these subnetworks must have previously been used as active ranges in this NAT Rule. This field is used for private NAT."
        }
      },
      "type": "object",
      "required": [
        "sourceNatActiveIps",
        "sourceNatActiveRanges",
        "sourceNatDrainIps",
        "sourceNatDrainRanges"
      ]
    },
    "google-native:compute/v1:RouterNatRuleResponse": {
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterNatRuleActionResponse",
          "description": "The action to be enforced for traffic that matches this rule."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this rule."
        },
        "match": {
          "type": "string",
          "description": "CEL expression that specifies the match condition that egress traffic from a VM is evaluated against. If it evaluates to true, the corresponding `action` is enforced. The following examples are valid match expressions for public NAT: \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\" \"destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'\" The following example is a valid match expression for private NAT: \"nexthop.hub == '//networkconnectivity.googleapis.com/projects/my-project/locations/global/hubs/hub-1'\""
        },
        "ruleNumber": {
          "type": "integer",
          "description": "An integer uniquely identifying a rule in the list. The rule number must be a positive value between 0 and 65000, and must be unique among rules within a NAT."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "match",
        "ruleNumber"
      ]
    },
    "google-native:compute/v1:RouterNatSourceSubnetworkIpRangesToNat": {
      "description": "Specify the Nat option, which can take one of the following values: - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES then there should not be any other Router.Nat section in any Router for this network in this region.",
      "type": "string",
      "enum": [
        {
          "name": "AllSubnetworksAllIpRanges",
          "description": "All the IP ranges in every Subnetwork are allowed to Nat.",
          "value": "ALL_SUBNETWORKS_ALL_IP_RANGES"
        },
        {
          "name": "AllSubnetworksAllPrimaryIpRanges",
          "description": "All the primary IP ranges in every Subnetwork are allowed to Nat.",
          "value": "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES"
        },
        {
          "name": "ListOfSubnetworks",
          "description": "A list of Subnetworks are allowed to Nat (specified in the field subnetwork below)",
          "value": "LIST_OF_SUBNETWORKS"
        }
      ]
    },
    "google-native:compute/v1:RouterNatSubnetworkToNat": {
      "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
      "properties": {
        "name": {
          "type": "string",
          "description": "URL for the subnetwork resource that will use NAT."
        },
        "secondaryIpRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the secondary ranges of the Subnetwork that are allowed to use NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is one of the values in source_ip_ranges_to_nat."
        },
        "sourceIpRangesToNat": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterNatSubnetworkToNatSourceIpRangesToNatItem"
          },
          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RouterNatSubnetworkToNatResponse": {
      "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
      "properties": {
        "name": {
          "type": "string",
          "description": "URL for the subnetwork resource that will use NAT."
        },
        "secondaryIpRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the secondary ranges of the Subnetwork that are allowed to use NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is one of the values in source_ip_ranges_to_nat."
        },
        "sourceIpRangesToNat": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]"
        }
      },
      "type": "object",
      "required": [
        "name",
        "secondaryIpRangeNames",
        "sourceIpRangesToNat"
      ]
    },
    "google-native:compute/v1:RouterNatSubnetworkToNatSourceIpRangesToNatItem": {
      "type": "string",
      "enum": [
        {
          "name": "AllIpRanges",
          "description": "The primary and all the secondary ranges are allowed to Nat.",
          "value": "ALL_IP_RANGES"
        },
        {
          "name": "ListOfSecondaryIpRanges",
          "description": "A list of secondary ranges are allowed to Nat.",
          "value": "LIST_OF_SECONDARY_IP_RANGES"
        },
        {
          "name": "PrimaryIpRange",
          "description": "The primary range is allowed to Nat.",
          "value": "PRIMARY_IP_RANGE"
        }
      ]
    },
    "google-native:compute/v1:RouterNatType": {
      "description": "Indicates whether this NAT is used for public or private IP translation. If unspecified, it defaults to PUBLIC.",
      "type": "string",
      "enum": [
        {
          "name": "Private",
          "description": "NAT used for private IP translation.",
          "value": "PRIVATE"
        },
        {
          "name": "Public",
          "description": "NAT used for public IP translation. This is the default.",
          "value": "PUBLIC"
        }
      ]
    },
    "google-native:compute/v1:Rule": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:compute%2Fv1:RuleAction",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Condition"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "description": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "ins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:LogConfig"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "notIns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:RuleAction": {
      "description": "This is deprecated and has no effect. Do not use.",
      "type": "string",
      "enum": [
        {
          "name": "Allow",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ALLOW"
        },
        {
          "name": "AllowWithLog",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "ALLOW_WITH_LOG"
        },
        {
          "name": "Deny",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DENY"
        },
        {
          "name": "DenyWithLog",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "DENY_WITH_LOG"
        },
        {
          "name": "Log",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "LOG"
        },
        {
          "name": "NoAction",
          "description": "This is deprecated and has no effect. Do not use.",
          "value": "NO_ACTION"
        }
      ]
    },
    "google-native:compute/v1:RuleResponse": {
      "description": "This is deprecated and has no effect. Do not use.",
      "properties": {
        "action": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ConditionResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "description": {
          "type": "string",
          "description": "This is deprecated and has no effect. Do not use."
        },
        "ins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "logConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:LogConfigResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "notIns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This is deprecated and has no effect. Do not use."
        }
      },
      "type": "object",
      "required": [
        "action",
        "conditions",
        "description",
        "ins",
        "logConfigs",
        "notIns",
        "permissions"
      ]
    },
    "google-native:compute/v1:SSLHealthCheck": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fv1:SSLHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fv1:SSLHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection and SSL handshake."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based SSL health check. In addition to establishing a TCP connection and the TLS handshake, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SSLHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/v1:SSLHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/v1:SSLHealthCheckResponse": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 443. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection and SSL handshake."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based SSL health check. In addition to establishing a TCP connection and the TLS handshake, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object",
      "required": [
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "request",
        "response"
      ]
    },
    "google-native:compute/v1:SavedAttachedDiskResponse": {
      "description": "DEPRECATED: Please use compute#savedDisk instead. An instance-attached disk resource.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Specifies the name of the disk attached to the source instance."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The encryption key for the disk."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "The size of the disk in base-2 GB."
        },
        "diskType": {
          "type": "string",
          "description": "URL of the disk type resource. For example: projects/project /zones/zone/diskTypes/pd-standard or pd-ssd"
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "index": {
          "type": "integer",
          "description": "Specifies zero-based index of the disk that is attached to the source instance."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#attachedDisk for attached disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any valid publicly visible licenses."
        },
        "mode": {
          "type": "string",
          "description": "The mode in which this disk is attached to the source instance, either READ_WRITE or READ_ONLY."
        },
        "source": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        },
        "storageBytes": {
          "type": "string",
          "description": "A size of the storage used by the disk's snapshot by this machine image."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the attached disk, either SCRATCH or PERSISTENT."
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "boot",
        "deviceName",
        "diskEncryptionKey",
        "diskSizeGb",
        "diskType",
        "guestOsFeatures",
        "index",
        "interface",
        "kind",
        "licenses",
        "mode",
        "source",
        "storageBytes",
        "storageBytesStatus",
        "type"
      ]
    },
    "google-native:compute/v1:SavedDisk": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "sourceDisk": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SavedDiskResponse": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the attached disk."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#savedDisk for attached disks."
        },
        "sourceDisk": {
          "type": "string",
          "description": "Specifies a URL of the disk attached to the source instance."
        },
        "storageBytes": {
          "type": "string",
          "description": "Size of the individual disk snapshot used by this machine image."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "kind",
        "sourceDisk",
        "storageBytes",
        "storageBytesStatus"
      ]
    },
    "google-native:compute/v1:Scheduling": {
      "description": "Sets the scheduling options for an Instance.",
      "properties": {
        "automaticRestart": {
          "type": "boolean",
          "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted. By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
        },
        "instanceTerminationAction": {
          "$ref": "#/types/google-native:compute%2Fv1:SchedulingInstanceTerminationAction",
          "description": "Specifies the termination action for the instance."
        },
        "localSsdRecoveryTimeout": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "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."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the instance close to other resources. This field is for use by internal tools that use the public API."
        },
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SchedulingNodeAffinity"
          },
          "description": "A set of node affinity and anti-affinity configurations. Refer to Configuring node affinity for more information. Overrides reservationAffinity."
        },
        "onHostMaintenance": {
          "$ref": "#/types/google-native:compute%2Fv1:SchedulingOnHostMaintenance",
          "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the instance is preemptible. This can only be set during instance creation or while the instance is stopped and therefore, in a `TERMINATED` state. See Instance Life Cycle for more information on the possible instance states."
        },
        "provisioningModel": {
          "$ref": "#/types/google-native:compute%2Fv1:SchedulingProvisioningModel",
          "description": "Specifies the provisioning model of the instance."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SchedulingInstanceTerminationAction": {
      "description": "Specifies the termination action for the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Delete",
          "description": "Delete the VM.",
          "value": "DELETE"
        },
        {
          "name": "InstanceTerminationActionUnspecified",
          "description": "Default value. This value is unused.",
          "value": "INSTANCE_TERMINATION_ACTION_UNSPECIFIED"
        },
        {
          "name": "Stop",
          "description": "Stop the VM without storing in-memory content. default action.",
          "value": "STOP"
        }
      ]
    },
    "google-native:compute/v1:SchedulingNodeAffinity": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of Node resource."
        },
        "operator": {
          "$ref": "#/types/google-native:compute%2Fv1:SchedulingNodeAffinityOperator",
          "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SchedulingNodeAffinityOperator": {
      "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity.",
      "type": "string",
      "enum": [
        {
          "name": "In",
          "description": "Requires Compute Engine to seek for matched nodes.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "Requires Compute Engine to avoid certain nodes.",
          "value": "NOT_IN"
        },
        {
          "name": "OperatorUnspecified",
          "value": "OPERATOR_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:SchedulingNodeAffinityResponse": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Corresponds to the label key of Node resource."
        },
        "operator": {
          "type": "string",
          "description": "Defines the operation of node selection. Valid operators are IN for affinity and NOT_IN for anti-affinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "google-native:compute/v1:SchedulingOnHostMaintenance": {
      "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy.",
      "type": "string",
      "enum": [
        {
          "name": "Migrate",
          "description": "*[Default]* Allows Compute Engine to automatically migrate instances out of the way of maintenance events.",
          "value": "MIGRATE"
        },
        {
          "name": "Terminate",
          "description": "Tells Compute Engine to terminate and (optionally) restart the instance away from the maintenance activity. If you would like your instance to be restarted, set the automaticRestart flag to true. Your instance may be restarted more than once, and it may be restarted outside the window of maintenance events.",
          "value": "TERMINATE"
        }
      ]
    },
    "google-native:compute/v1:SchedulingProvisioningModel": {
      "description": "Specifies the provisioning model of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "Spot",
          "description": "Heavily discounted, no guaranteed runtime.",
          "value": "SPOT"
        },
        {
          "name": "Standard",
          "description": "Standard provisioning with user controlled runtime, no discounts.",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/v1:SchedulingResponse": {
      "description": "Sets the scheduling options for an Instance.",
      "properties": {
        "automaticRestart": {
          "type": "boolean",
          "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted. By default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
        },
        "instanceTerminationAction": {
          "type": "string",
          "description": "Specifies the termination action for the instance."
        },
        "localSsdRecoveryTimeout": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "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."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the instance close to other resources. This field is for use by internal tools that use the public API."
        },
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SchedulingNodeAffinityResponse"
          },
          "description": "A set of node affinity and anti-affinity configurations. Refer to Configuring node affinity for more information. Overrides reservationAffinity."
        },
        "onHostMaintenance": {
          "type": "string",
          "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Set VM host maintenance policy."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the instance is preemptible. This can only be set during instance creation or while the instance is stopped and therefore, in a `TERMINATED` state. See Instance Life Cycle for more information on the possible instance states."
        },
        "provisioningModel": {
          "type": "string",
          "description": "Specifies the provisioning model of the instance."
        }
      },
      "type": "object",
      "required": [
        "automaticRestart",
        "instanceTerminationAction",
        "localSsdRecoveryTimeout",
        "locationHint",
        "minNodeCpus",
        "nodeAffinities",
        "onHostMaintenance",
        "preemptible",
        "provisioningModel"
      ]
    },
    "google-native:compute/v1:SecurityPolicyAdaptiveProtectionConfig": {
      "description": "Configuration options for Cloud Armor Adaptive Protection (CAAP).",
      "properties": {
        "layer7DdosDefenseConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig",
          "description": "If set to true, enables Cloud Armor Machine Learning."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig": {
      "description": "Configuration options for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "If set to true, enables CAAP for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "ruleVisibility": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility",
          "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "thresholdConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig"
          },
          "description": "Configuration options for layer7 adaptive protection for various customizable thresholds."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResponse": {
      "description": "Configuration options for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "If set to true, enables CAAP for L7 DDoS detection. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "ruleVisibility": {
          "type": "string",
          "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "thresholdConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigResponse"
          },
          "description": "Configuration options for layer7 adaptive protection for various customizable thresholds."
        }
      },
      "type": "object",
      "required": [
        "enable",
        "ruleVisibility",
        "thresholdConfigs"
      ]
    },
    "google-native:compute/v1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility": {
      "description": "Rule visibility can be one of the following: STANDARD - opaque rules. (default) PREMIUM - transparent rules. This field is only supported in Global Security Policies of type CLOUD_ARMOR.",
      "type": "string",
      "enum": [
        {
          "name": "Premium",
          "value": "PREMIUM"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig": {
      "properties": {
        "autoDeployConfidenceThreshold": {
          "type": "number"
        },
        "autoDeployExpirationSec": {
          "type": "integer"
        },
        "autoDeployImpactedBaselineThreshold": {
          "type": "number"
        },
        "autoDeployLoadThreshold": {
          "type": "number"
        },
        "name": {
          "type": "string",
          "description": "The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigResponse": {
      "properties": {
        "autoDeployConfidenceThreshold": {
          "type": "number"
        },
        "autoDeployExpirationSec": {
          "type": "integer"
        },
        "autoDeployImpactedBaselineThreshold": {
          "type": "number"
        },
        "autoDeployLoadThreshold": {
          "type": "number"
        },
        "name": {
          "type": "string",
          "description": "The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy."
        }
      },
      "type": "object",
      "required": [
        "autoDeployConfidenceThreshold",
        "autoDeployExpirationSec",
        "autoDeployImpactedBaselineThreshold",
        "autoDeployLoadThreshold",
        "name"
      ]
    },
    "google-native:compute/v1:SecurityPolicyAdaptiveProtectionConfigResponse": {
      "description": "Configuration options for Cloud Armor Adaptive Protection (CAAP).",
      "properties": {
        "layer7DdosDefenseConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigResponse",
          "description": "If set to true, enables Cloud Armor Machine Learning."
        }
      },
      "type": "object",
      "required": [
        "layer7DdosDefenseConfig"
      ]
    },
    "google-native:compute/v1:SecurityPolicyAdvancedOptionsConfig": {
      "properties": {
        "jsonCustomConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig",
          "description": "Custom configuration to apply the JSON parsing. Only applicable when json_parsing is set to STANDARD."
        },
        "jsonParsing": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfigJsonParsing"
        },
        "logLevel": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfigLogLevel"
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig": {
      "properties": {
        "contentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of custom Content-Type header values to apply the JSON parsing. As per RFC 1341, a Content-Type header value has the following format: Content-Type := type \"/\" subtype *[\";\" parameter] When configuring a custom Content-Type header value, only the type/subtype needs to be specified, and the parameters should be excluded."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyAdvancedOptionsConfigJsonCustomConfigResponse": {
      "properties": {
        "contentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of custom Content-Type header values to apply the JSON parsing. As per RFC 1341, a Content-Type header value has the following format: Content-Type := type \"/\" subtype *[\";\" parameter] When configuring a custom Content-Type header value, only the type/subtype needs to be specified, and the parameters should be excluded."
        }
      },
      "type": "object",
      "required": [
        "contentTypes"
      ]
    },
    "google-native:compute/v1:SecurityPolicyAdvancedOptionsConfigJsonParsing": {
      "type": "string",
      "enum": [
        {
          "name": "Disabled",
          "value": "DISABLED"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        },
        {
          "name": "StandardWithGraphql",
          "value": "STANDARD_WITH_GRAPHQL"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyAdvancedOptionsConfigLogLevel": {
      "type": "string",
      "enum": [
        {
          "name": "Normal",
          "value": "NORMAL"
        },
        {
          "name": "Verbose",
          "value": "VERBOSE"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyAdvancedOptionsConfigResponse": {
      "properties": {
        "jsonCustomConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfigJsonCustomConfigResponse",
          "description": "Custom configuration to apply the JSON parsing. Only applicable when json_parsing is set to STANDARD."
        },
        "jsonParsing": {
          "type": "string"
        },
        "logLevel": {
          "type": "string"
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "jsonCustomConfig",
        "jsonParsing",
        "logLevel",
        "userIpRequestHeaders"
      ]
    },
    "google-native:compute/v1:SecurityPolicyDdosProtectionConfig": {
      "properties": {
        "ddosProtection": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyDdosProtectionConfigDdosProtection"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyDdosProtectionConfigDdosProtection": {
      "type": "string",
      "enum": [
        {
          "name": "Advanced",
          "value": "ADVANCED"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyDdosProtectionConfigResponse": {
      "properties": {
        "ddosProtection": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "ddosProtection"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRecaptchaOptionsConfig": {
      "properties": {
        "redirectSiteKey": {
          "type": "string",
          "description": "An optional 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. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRecaptchaOptionsConfigResponse": {
      "properties": {
        "redirectSiteKey": {
          "type": "string",
          "description": "An optional 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. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        }
      },
      "type": "object",
      "required": [
        "redirectSiteKey"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRule": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the rule is matched. The following are the valid actions: - allow: allow access to target. - deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for `STATUS` are 403, 404, and 502. - 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 rate_limit_options to be set. - 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. - throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rate_limit_options to be set for this. "
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleHttpHeaderAction",
          "description": "Optional, additional actions that are performed on headers. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleMatcher",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "networkMatch": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleNetworkMatcher",
          "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). Field 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. Each 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. For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. Example: networkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\" The 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 \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive."
        },
        "preconfiguredWafConfig": {
          "$ref": "#/types/google-native:compute%2Fv1: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."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, the specified action is not enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority."
        },
        "rateLimitOptions": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptions",
          "description": "Must be specified if the action is \"rate_based_ban\" or \"throttle\". Cannot be specified for any other actions."
        },
        "redirectOptions": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRedirectOptions",
          "description": "Parameters defining the redirect action. Cannot be specified for any other actions. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleHttpHeaderAction": {
      "properties": {
        "requestHeadersToAdds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleHttpHeaderActionHttpHeaderOption"
          },
          "description": "The list of request headers to add or overwrite if they're already present."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleHttpHeaderActionHttpHeaderOption": {
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header to set."
        },
        "headerValue": {
          "type": "string",
          "description": "The value to set the named header to."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleHttpHeaderActionHttpHeaderOptionResponse": {
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the header to set."
        },
        "headerValue": {
          "type": "string",
          "description": "The value to set the named header to."
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "headerValue"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleHttpHeaderActionResponse": {
      "properties": {
        "requestHeadersToAdds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleHttpHeaderActionHttpHeaderOptionResponse"
          },
          "description": "The list of request headers to add or overwrite if they're already present."
        }
      },
      "type": "object",
      "required": [
        "requestHeadersToAdds"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleMatcher": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleMatcherConfig",
          "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
        },
        "expr": {
          "$ref": "#/types/google-native:compute%2Fv1:Expr",
          "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. Expressions containing `evaluateThreatIntelligence` require Cloud Armor Managed Protection Plus tier and are not supported in Edge Policies nor in Regional Policies. Expressions containing `evaluatePreconfiguredExpr('sourceiplist-*')` require Cloud Armor Managed Protection Plus tier and are only supported in Global Security Policies."
        },
        "versionedExpr": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleMatcherVersionedExpr",
          "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleMatcherConfig": {
      "properties": {
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of src_ip_ranges allowed is 10."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleMatcherConfigResponse": {
      "properties": {
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "CIDR IP address range. Maximum number of src_ip_ranges allowed is 10."
        }
      },
      "type": "object",
      "required": [
        "srcIpRanges"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleMatcherResponse": {
      "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleMatcherConfigResponse",
          "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
        },
        "expr": {
          "$ref": "#/types/google-native:compute%2Fv1:ExprResponse",
          "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. Expressions containing `evaluateThreatIntelligence` require Cloud Armor Managed Protection Plus tier and are not supported in Edge Policies nor in Regional Policies. Expressions containing `evaluatePreconfiguredExpr('sourceiplist-*')` require Cloud Armor Managed Protection Plus tier and are only supported in Global Security Policies."
        },
        "versionedExpr": {
          "type": "string",
          "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config."
        }
      },
      "type": "object",
      "required": [
        "config",
        "expr",
        "versionedExpr"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleMatcherVersionedExpr": {
      "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config.",
      "type": "string",
      "enum": [
        {
          "name": "SrcIpsV1",
          "description": "Matches the source IP address of a request to the IP ranges supplied in config.",
          "value": "SRC_IPS_V1"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleNetworkMatcher": {
      "description": "Represents a match condition that incoming network traffic is evaluated against.",
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "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\"."
        },
        "srcAsns": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "BGP Autonomous System Number associated with the source IP address."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "srcRegionCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatch"
          },
          "description": "User-defined fields. Each element names a defined field and lists the matching values for that field."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleNetworkMatcherResponse": {
      "description": "Represents a match condition that incoming network traffic is evaluated against.",
      "properties": {
        "destIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "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\"."
        },
        "srcAsns": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "BGP Autonomous System Number associated with the source IP address."
        },
        "srcIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format."
        },
        "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\")."
        },
        "srcRegionCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatchResponse"
          },
          "description": "User-defined fields. Each element names a defined field and lists the matching values for that field."
        }
      },
      "type": "object",
      "required": [
        "destIpRanges",
        "destPorts",
        "ipProtocols",
        "srcAsns",
        "srcIpRanges",
        "srcPorts",
        "srcRegionCodes",
        "userDefinedFields"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatch": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the user-defined field, as given in the definition."
        },
        "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\")."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleNetworkMatcherUserDefinedFieldMatchResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the user-defined field, as given in the definition."
        },
        "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\")."
        }
      },
      "type": "object",
      "required": [
        "name",
        "values"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRulePreconfiguredWafConfig": {
      "properties": {
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusion"
          },
          "description": "A list of exclusions to apply during preconfigured WAF evaluation."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRulePreconfiguredWafConfigExclusion": {
      "properties": {
        "requestCookiesToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request cookie names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestHeadersToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request header names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestQueryParamsToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request query parameter names whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body."
        },
        "requestUrisToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams"
          },
          "description": "A list of request URIs from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded."
        },
        "targetRuleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set."
        },
        "targetRuleSet": {
          "type": "string",
          "description": "Target WAF rule set to apply the preconfigured WAF exclusion."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams": {
      "properties": {
        "op": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp",
          "description": "The match operator for the field."
        },
        "val": {
          "type": "string",
          "description": "The value of the field."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp": {
      "description": "The match operator for the field.",
      "type": "string",
      "enum": [
        {
          "name": "Contains",
          "description": "The operator matches if the field value contains the specified value.",
          "value": "CONTAINS"
        },
        {
          "name": "EndsWith",
          "description": "The operator matches if the field value ends with the specified value.",
          "value": "ENDS_WITH"
        },
        {
          "name": "Equals",
          "description": "The operator matches if the field value equals the specified value.",
          "value": "EQUALS"
        },
        {
          "name": "EqualsAny",
          "description": "The operator matches if the field value is any value.",
          "value": "EQUALS_ANY"
        },
        {
          "name": "StartsWith",
          "description": "The operator matches if the field value starts with the specified value.",
          "value": "STARTS_WITH"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse": {
      "properties": {
        "op": {
          "type": "string",
          "description": "The match operator for the field."
        },
        "val": {
          "type": "string",
          "description": "The value of the field."
        }
      },
      "type": "object",
      "required": [
        "op",
        "val"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRulePreconfiguredWafConfigExclusionResponse": {
      "properties": {
        "requestCookiesToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request cookie names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestHeadersToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request header names whose value will be excluded from inspection during preconfigured WAF evaluation."
        },
        "requestQueryParamsToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request query parameter names whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body."
        },
        "requestUrisToExclude": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsResponse"
          },
          "description": "A list of request URIs from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded."
        },
        "targetRuleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set."
        },
        "targetRuleSet": {
          "type": "string",
          "description": "Target WAF rule set to apply the preconfigured WAF exclusion."
        }
      },
      "type": "object",
      "required": [
        "requestCookiesToExclude",
        "requestHeadersToExclude",
        "requestQueryParamsToExclude",
        "requestUrisToExclude",
        "targetRuleIds",
        "targetRuleSet"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRulePreconfiguredWafConfigResponse": {
      "properties": {
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigExclusionResponse"
          },
          "description": "A list of exclusions to apply during preconfigured WAF evaluation."
        }
      },
      "type": "object",
      "required": [
        "exclusions"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleRateLimitOptions": {
      "properties": {
        "banDurationSec": {
          "type": "integer",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold."
        },
        "banThreshold": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsThreshold",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, the key will be banned for the configured 'ban_duration_sec' when the number of requests that exceed the 'rate_limit_threshold' also exceed this 'ban_threshold'."
        },
        "conformAction": {
          "type": "string",
          "description": "Action to take for requests that are under the configured rate limit threshold. Valid option is \"allow\" only."
        },
        "enforceOnKey": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsEnforceOnKey",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        },
        "enforceOnKeyConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig"
          },
          "description": "If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which ratelimit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If enforce_on_key_configs is specified, enforce_on_key must not be specified."
        },
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "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. Valid options are `deny(STATUS)`, where valid values for `STATUS` are 403, 404, 429, and 502, and `redirect`, where the redirect parameters come from `exceedRedirectOptions` below. The `redirect` action is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "exceedRedirectOptions": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRedirectOptions",
          "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."
        },
        "rateLimitThreshold": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsThreshold",
          "description": "Threshold at which to begin ratelimiting."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleRateLimitOptionsEnforceOnKey": {
      "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "value": "ALL"
        },
        {
          "name": "HttpCookie",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "HttpHeader",
          "value": "HTTP_HEADER"
        },
        {
          "name": "HttpPath",
          "value": "HTTP_PATH"
        },
        {
          "name": "Ip",
          "value": "IP"
        },
        {
          "name": "RegionCode",
          "value": "REGION_CODE"
        },
        {
          "name": "Sni",
          "value": "SNI"
        },
        {
          "name": "XffIp",
          "value": "XFF_IP"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig": {
      "properties": {
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "enforceOnKeyType": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType": {
      "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. ",
      "type": "string",
      "enum": [
        {
          "name": "All",
          "value": "ALL"
        },
        {
          "name": "HttpCookie",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "HttpHeader",
          "value": "HTTP_HEADER"
        },
        {
          "name": "HttpPath",
          "value": "HTTP_PATH"
        },
        {
          "name": "Ip",
          "value": "IP"
        },
        {
          "name": "RegionCode",
          "value": "REGION_CODE"
        },
        {
          "name": "Sni",
          "value": "SNI"
        },
        {
          "name": "XffIp",
          "value": "XFF_IP"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigResponse": {
      "properties": {
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "enforceOnKeyType": {
          "type": "string",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        }
      },
      "type": "object",
      "required": [
        "enforceOnKeyName",
        "enforceOnKeyType"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleRateLimitOptionsResponse": {
      "properties": {
        "banDurationSec": {
          "type": "integer",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold."
        },
        "banThreshold": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsThresholdResponse",
          "description": "Can only be specified if the action for the rule is \"rate_based_ban\". If specified, the key will be banned for the configured 'ban_duration_sec' when the number of requests that exceed the 'rate_limit_threshold' also exceed this 'ban_threshold'."
        },
        "conformAction": {
          "type": "string",
          "description": "Action to take for requests that are under the configured rate limit threshold. Valid option is \"allow\" only."
        },
        "enforceOnKey": {
          "type": "string",
          "description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - 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. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - 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. - 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. - 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. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - 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. - REGION_CODE: The country/region from which the request originates. "
        },
        "enforceOnKeyConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigResponse"
          },
          "description": "If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which ratelimit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If enforce_on_key_configs is specified, enforce_on_key must not be specified."
        },
        "enforceOnKeyName": {
          "type": "string",
          "description": "Rate limit key name applicable only for the following key types: HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value. HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value."
        },
        "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. Valid options are `deny(STATUS)`, where valid values for `STATUS` are 403, 404, 429, and 502, and `redirect`, where the redirect parameters come from `exceedRedirectOptions` below. The `redirect` action is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "exceedRedirectOptions": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRedirectOptionsResponse",
          "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."
        },
        "rateLimitThreshold": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsThresholdResponse",
          "description": "Threshold at which to begin ratelimiting."
        }
      },
      "type": "object",
      "required": [
        "banDurationSec",
        "banThreshold",
        "conformAction",
        "enforceOnKey",
        "enforceOnKeyConfigs",
        "enforceOnKeyName",
        "exceedAction",
        "exceedRedirectOptions",
        "rateLimitThreshold"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleRateLimitOptionsThreshold": {
      "properties": {
        "count": {
          "type": "integer",
          "description": "Number of HTTP(S) requests for calculating the threshold."
        },
        "intervalSec": {
          "type": "integer",
          "description": "Interval over which the threshold is computed."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleRateLimitOptionsThresholdResponse": {
      "properties": {
        "count": {
          "type": "integer",
          "description": "Number of HTTP(S) requests for calculating the threshold."
        },
        "intervalSec": {
          "type": "integer",
          "description": "Interval over which the threshold is computed."
        }
      },
      "type": "object",
      "required": [
        "count",
        "intervalSec"
      ]
    },
    "google-native:compute/v1: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."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRedirectOptionsType",
          "description": "Type of the redirect action."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyRuleRedirectOptionsResponse": {
      "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."
        },
        "type": {
          "type": "string",
          "description": "Type of the redirect action."
        }
      },
      "type": "object",
      "required": [
        "target",
        "type"
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleRedirectOptionsType": {
      "description": "Type of the redirect action.",
      "type": "string",
      "enum": [
        {
          "name": "External302",
          "value": "EXTERNAL_302"
        },
        {
          "name": "GoogleRecaptcha",
          "value": "GOOGLE_RECAPTCHA"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyRuleResponse": {
      "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
      "properties": {
        "action": {
          "type": "string",
          "description": "The Action to perform when the rule is matched. The following are the valid actions: - allow: allow access to target. - deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for `STATUS` are 403, 404, and 502. - 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 rate_limit_options to be set. - 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. - throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rate_limit_options to be set for this. "
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleHttpHeaderActionResponse",
          "description": "Optional, additional actions that are performed on headers. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyRule for security policy rules"
        },
        "match": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleMatcherResponse",
          "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced."
        },
        "networkMatch": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleNetworkMatcherResponse",
          "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). Field 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. Each 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. For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. Example: networkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\" The 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 \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive."
        },
        "preconfiguredWafConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRulePreconfiguredWafConfigResponse",
          "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."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, the specified action is not enforced."
        },
        "priority": {
          "type": "integer",
          "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority."
        },
        "rateLimitOptions": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRateLimitOptionsResponse",
          "description": "Must be specified if the action is \"rate_based_ban\" or \"throttle\". Cannot be specified for any other actions."
        },
        "redirectOptions": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleRedirectOptionsResponse",
          "description": "Parameters defining the redirect action. Cannot be specified for any other actions. This field is only supported in Global Security Policies of type CLOUD_ARMOR."
        }
      },
      "type": "object",
      "required": [
        "action",
        "description",
        "headerAction",
        "kind",
        "match",
        "networkMatch",
        "preconfiguredWafConfig",
        "preview",
        "priority",
        "rateLimitOptions",
        "redirectOptions"
      ]
    },
    "google-native:compute/v1:SecurityPolicyType": {
      "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
      "type": "string",
      "enum": [
        {
          "name": "CloudArmor",
          "value": "CLOUD_ARMOR"
        },
        {
          "name": "CloudArmorEdge",
          "value": "CLOUD_ARMOR_EDGE"
        },
        {
          "name": "CloudArmorNetwork",
          "value": "CLOUD_ARMOR_NETWORK"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyUserDefinedField": {
      "properties": {
        "base": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyUserDefinedFieldBase",
          "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required"
        },
        "mask": {
          "type": "string",
          "description": "If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. Encoded as a hexadecimal number (starting with \"0x\"). The last byte of the field (in network byte order) corresponds to the least significant byte of the mask."
        },
        "name": {
          "type": "string",
          "description": "The name of this field. Must be unique within the policy."
        },
        "offset": {
          "type": "integer",
          "description": "Offset of the first byte of the field (in network byte order) relative to 'base'."
        },
        "size": {
          "type": "integer",
          "description": "Size of the field in bytes. Valid values: 1-4."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecurityPolicyUserDefinedFieldBase": {
      "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "value": "IPV6"
        },
        {
          "name": "Tcp",
          "value": "TCP"
        },
        {
          "name": "Udp",
          "value": "UDP"
        }
      ]
    },
    "google-native:compute/v1:SecurityPolicyUserDefinedFieldResponse": {
      "properties": {
        "base": {
          "type": "string",
          "description": "The base relative to which 'offset' is measured. Possible values are: - IPV4: Points to the beginning of the IPv4 header. - IPV6: Points to the beginning of the IPv6 header. - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. required"
        },
        "mask": {
          "type": "string",
          "description": "If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. Encoded as a hexadecimal number (starting with \"0x\"). The last byte of the field (in network byte order) corresponds to the least significant byte of the mask."
        },
        "name": {
          "type": "string",
          "description": "The name of this field. Must be unique within the policy."
        },
        "offset": {
          "type": "integer",
          "description": "Offset of the first byte of the field (in network byte order) relative to 'base'."
        },
        "size": {
          "type": "integer",
          "description": "Size of the field in bytes. Valid values: 1-4."
        }
      },
      "type": "object",
      "required": [
        "base",
        "mask",
        "name",
        "offset",
        "size"
      ]
    },
    "google-native:compute/v1:SecuritySettings": {
      "description": "The authentication and authorization settings for a BackendService.",
      "properties": {
        "awsV4Authentication": {
          "$ref": "#/types/google-native:compute%2Fv1:AWSV4Signature",
          "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication. Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service's backends. clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left blank, communications are not encrypted."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate's subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service. Note that the contents of the server certificate's subjectAltName field are configured by the Public Key Infrastructure which provisions server identities. Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode)."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SecuritySettingsResponse": {
      "description": "The authentication and authorization settings for a BackendService.",
      "properties": {
        "awsV4Authentication": {
          "$ref": "#/types/google-native:compute%2Fv1:AWSV4SignatureResponse",
          "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication. Allowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ClientTlsPolicy resource that describes how clients should authenticate with this service's backends. clientTlsPolicy only applies to a global BackendService with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. If left blank, communications are not encrypted."
        },
        "subjectAltNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Subject Alternative Names (SANs) that the client verifies during a mutual TLS handshake with an server/endpoint for this BackendService. When the server presents its X.509 certificate to the client, the client inspects the certificate's subjectAltName field. If the field contains one of the specified values, the communication continues. Otherwise, it fails. This additional check enables the client to verify that the server is authorized to run the requested service. Note that the contents of the server certificate's subjectAltName field are configured by the Public Key Infrastructure which provisions server identities. Only applies to a global BackendService with loadBalancingScheme set to INTERNAL_SELF_MANAGED. Only applies when BackendService has an attached clientTlsPolicy with clientCertificate (mTLS mode)."
        }
      },
      "type": "object",
      "required": [
        "awsV4Authentication",
        "clientTlsPolicy",
        "subjectAltNames"
      ]
    },
    "google-native:compute/v1:ServerBinding": {
      "properties": {
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:ServerBindingType"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ServerBindingResponse": {
      "properties": {
        "type": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:compute/v1:ServerBindingType": {
      "type": "string",
      "enum": [
        {
          "name": "RestartNodeOnAnyServer",
          "description": "Node may associate with any physical server over its lifetime.",
          "value": "RESTART_NODE_ON_ANY_SERVER"
        },
        {
          "name": "RestartNodeOnMinimalServers",
          "description": "Node may associate with minimal physical servers over its lifetime.",
          "value": "RESTART_NODE_ON_MINIMAL_SERVERS"
        },
        {
          "name": "ServerBindingTypeUnspecified",
          "value": "SERVER_BINDING_TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:ServiceAccount": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ServiceAccountResponse": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account."
        }
      },
      "type": "object",
      "required": [
        "email",
        "scopes"
      ]
    },
    "google-native:compute/v1:ServiceAttachmentConnectedEndpointResponse": {
      "description": "[Output Only] A connection connected to this service attachment.",
      "properties": {
        "consumerNetwork": {
          "type": "string",
          "description": "The url of the consumer network."
        },
        "endpoint": {
          "type": "string",
          "description": "The url of a connected endpoint."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the connected endpoint."
        },
        "status": {
          "type": "string",
          "description": "The status of a connected endpoint to this service attachment."
        }
      },
      "type": "object",
      "required": [
        "consumerNetwork",
        "endpoint",
        "pscConnectionId",
        "status"
      ]
    },
    "google-native:compute/v1:ServiceAttachmentConnectionPreference": {
      "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules.",
      "type": "string",
      "enum": [
        {
          "name": "AcceptAutomatic",
          "value": "ACCEPT_AUTOMATIC"
        },
        {
          "name": "AcceptManual",
          "value": "ACCEPT_MANUAL"
        },
        {
          "name": "ConnectionPreferenceUnspecified",
          "value": "CONNECTION_PREFERENCE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:ServiceAttachmentConsumerProjectLimit": {
      "properties": {
        "connectionLimit": {
          "type": "integer",
          "description": "The value of the limit to set."
        },
        "networkUrl": {
          "type": "string",
          "description": "The network URL for the network to set the limit for."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number for the project to set the limit for."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ServiceAttachmentConsumerProjectLimitResponse": {
      "properties": {
        "connectionLimit": {
          "type": "integer",
          "description": "The value of the limit to set."
        },
        "networkUrl": {
          "type": "string",
          "description": "The network URL for the network to set the limit for."
        },
        "projectIdOrNum": {
          "type": "string",
          "description": "The project id or number for the project to set the limit for."
        }
      },
      "type": "object",
      "required": [
        "connectionLimit",
        "networkUrl",
        "projectIdOrNum"
      ]
    },
    "google-native:compute/v1:ShareSettings": {
      "description": "The share setting for reservations and sole tenancy node groups.",
      "properties": {
        "projectMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of project id and project config. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "shareType": {
          "$ref": "#/types/google-native:compute%2Fv1:ShareSettingsShareType",
          "description": "Type of sharing for this shared-reservation"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ShareSettingsResponse": {
      "description": "The share setting for reservations and sole tenancy node groups.",
      "properties": {
        "projectMap": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of project id and project config. This is only valid when share_type's value is SPECIFIC_PROJECTS."
        },
        "shareType": {
          "type": "string",
          "description": "Type of sharing for this shared-reservation"
        }
      },
      "type": "object",
      "required": [
        "projectMap",
        "shareType"
      ]
    },
    "google-native:compute/v1:ShareSettingsShareType": {
      "description": "Type of sharing for this shared-reservation",
      "type": "string",
      "enum": [
        {
          "name": "Local",
          "description": "Default value.",
          "value": "LOCAL"
        },
        {
          "name": "Organization",
          "description": "Shared-reservation is open to entire Organization",
          "value": "ORGANIZATION"
        },
        {
          "name": "ShareTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "SHARE_TYPE_UNSPECIFIED"
        },
        {
          "name": "SpecificProjects",
          "description": "Shared-reservation is open to specific projects",
          "value": "SPECIFIC_PROJECTS"
        }
      ]
    },
    "google-native:compute/v1:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:compute/v1:ShieldedInstanceIntegrityPolicy": {
      "description": "The policy describes the baseline against which Instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:ShieldedInstanceIntegrityPolicyResponse": {
      "description": "The policy describes the baseline against which Instance boot integrity is measured.",
      "properties": {
        "updateAutoLearnPolicy": {
          "type": "boolean",
          "description": "Updates the integrity policy baseline using the measurements from the VM instance's most recent boot."
        }
      },
      "type": "object",
      "required": [
        "updateAutoLearnPolicy"
      ]
    },
    "google-native:compute/v1:SnapshotSnapshotType": {
      "description": "Indicates the type of the snapshot.",
      "type": "string",
      "enum": [
        {
          "name": "Archive",
          "value": "ARCHIVE"
        },
        {
          "name": "Standard",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:compute/v1:SourceDiskEncryptionKey": {
      "properties": {
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the disk attached to the source instance. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SourceDiskEncryptionKeyResponse": {
      "properties": {
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the disk attached to the source instance. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk "
        }
      },
      "type": "object",
      "required": [
        "diskEncryptionKey",
        "sourceDisk"
      ]
    },
    "google-native:compute/v1:SourceInstanceParams": {
      "description": "A specification of the parameters to use when creating the instance template from a source instance.",
      "properties": {
        "diskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:DiskInstantiationConfig"
          },
          "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, the source images for each disk will be used. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SourceInstanceParamsResponse": {
      "description": "A specification of the parameters to use when creating the instance template from a source instance.",
      "properties": {
        "diskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:DiskInstantiationConfigResponse"
          },
          "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, the source images for each disk will be used. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes."
        }
      },
      "type": "object",
      "required": [
        "diskConfigs"
      ]
    },
    "google-native:compute/v1:SourceInstancePropertiesResponse": {
      "description": "DEPRECATED: Please use compute#instanceProperties instead. New properties will not be added to this field.",
      "properties": {
        "canIpForward": {
          "type": "boolean",
          "description": "Enables instances created based on this machine image to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the instance created from this machine image should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional text description for the instances that are created from this machine image."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SavedAttachedDiskResponse"
          },
          "description": "An array of disks that are associated with the instances that are created from this machine image."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfigResponse"
          },
          "description": "A list of guest accelerator cards' type and count to use for instances created from this machine image."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to instances that are created from this machine image."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for instances that are created from this machine image."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fv1:MetadataResponse",
          "description": "The metadata key/value pairs to assign to instances that are created from this machine image. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum cpu/platform to be used by instances created from this machine image. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkInterfaceResponse"
          },
          "description": "An array of network access configurations for this interface."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fv1:SchedulingResponse",
          "description": "Specifies the scheduling options for the instances that are created from this machine image."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ServiceAccountResponse"
          },
          "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this machine image. Use metadata queries to obtain the access tokens for these instances."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fv1:TagsResponse",
          "description": "A list of tags to apply to the instances that are created from this machine image. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "canIpForward",
        "deletionProtection",
        "description",
        "disks",
        "guestAccelerators",
        "keyRevocationActionType",
        "labels",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "networkInterfaces",
        "scheduling",
        "serviceAccounts",
        "tags"
      ]
    },
    "google-native:compute/v1:SslCertificateManagedSslCertificate": {
      "description": "Configuration and status of a managed SSL certificate.",
      "properties": {
        "domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The domains for which a managed SSL certificate will be generated. Each Google-managed SSL certificate supports up to the [maximum number of domains per Google-managed SSL certificate](/load-balancing/docs/quotas#ssl_certificates)."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SslCertificateManagedSslCertificateResponse": {
      "description": "Configuration and status of a managed SSL certificate.",
      "properties": {
        "domainStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Output only] Detailed statuses of the domains specified for managed certificate resource."
        },
        "domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The domains for which a managed SSL certificate will be generated. Each Google-managed SSL certificate supports up to the [maximum number of domains per Google-managed SSL certificate](/load-balancing/docs/quotas#ssl_certificates)."
        },
        "status": {
          "type": "string",
          "description": "[Output only] Status of the managed certificate resource."
        }
      },
      "type": "object",
      "required": [
        "domainStatus",
        "domains",
        "status"
      ]
    },
    "google-native:compute/v1:SslCertificateSelfManagedSslCertificate": {
      "description": "Configuration and status of a self-managed SSL certificate.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "privateKey": {
          "type": "string",
          "description": "A write-only private key in PEM format. Only insert requests will include this field."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SslCertificateSelfManagedSslCertificateResponse": {
      "description": "Configuration and status of a self-managed SSL certificate.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "privateKey": {
          "type": "string",
          "description": "A write-only private key in PEM format. Only insert requests will include this field."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "privateKey"
      ]
    },
    "google-native:compute/v1:SslCertificateType": {
      "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
      "type": "string",
      "enum": [
        {
          "name": "Managed",
          "description": "Google-managed SSLCertificate.",
          "value": "MANAGED"
        },
        {
          "name": "SelfManaged",
          "description": "Certificate uploaded by user.",
          "value": "SELF_MANAGED"
        },
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        }
      ]
    },
    "google-native:compute/v1:SslPolicyMinTlsVersion": {
      "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
      "type": "string",
      "enum": [
        {
          "name": "Tls10",
          "description": "TLS 1.0",
          "value": "TLS_1_0"
        },
        {
          "name": "Tls11",
          "description": "TLS 1.1",
          "value": "TLS_1_1"
        },
        {
          "name": "Tls12",
          "description": "TLS 1.2",
          "value": "TLS_1_2"
        }
      ]
    },
    "google-native:compute/v1:SslPolicyProfile": {
      "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
      "type": "string",
      "enum": [
        {
          "name": "Compatible",
          "description": "Compatible profile. Allows the broadset set of clients, even those which support only out-of-date SSL features to negotiate with the load balancer.",
          "value": "COMPATIBLE"
        },
        {
          "name": "Custom",
          "description": "Custom profile. Allow only the set of allowed SSL features specified in the customFeatures field.",
          "value": "CUSTOM"
        },
        {
          "name": "Modern",
          "description": "Modern profile. Supports a wide set of SSL features, allowing modern clients to negotiate SSL with the load balancer.",
          "value": "MODERN"
        },
        {
          "name": "Restricted",
          "description": "Restricted profile. Supports a reduced set of SSL features, intended to meet stricter compliance requirements.",
          "value": "RESTRICTED"
        }
      ]
    },
    "google-native:compute/v1:SslPolicyWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:compute/v1:SslPolicyWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SslPolicyWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:compute/v1:StatefulPolicy": {
      "properties": {
        "preservedState": {
          "$ref": "#/types/google-native:compute%2Fv1:StatefulPolicyPreservedState"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:StatefulPolicyPreservedState": {
      "description": "Configuration of preserved resources.",
      "properties": {
        "disks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Disks created on the instances that will be preserved on instance delete, update, etc. This map is keyed with the device names of the disks."
        },
        "externalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        },
        "internalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:StatefulPolicyPreservedStateResponse": {
      "description": "Configuration of preserved resources.",
      "properties": {
        "disks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Disks created on the instances that will be preserved on instance delete, update, etc. This map is keyed with the device names of the disks."
        },
        "externalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        },
        "internalIPs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name."
        }
      },
      "type": "object",
      "required": [
        "disks",
        "externalIPs",
        "internalIPs"
      ]
    },
    "google-native:compute/v1:StatefulPolicyResponse": {
      "properties": {
        "preservedState": {
          "$ref": "#/types/google-native:compute%2Fv1:StatefulPolicyPreservedStateResponse"
        }
      },
      "type": "object",
      "required": [
        "preservedState"
      ]
    },
    "google-native:compute/v1:SubnetworkIpv6AccessType": {
      "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack.",
      "type": "string",
      "enum": [
        {
          "name": "External",
          "description": "VMs on this subnet will be assigned IPv6 addresses that are accessible via the Internet, as well as the VPC network.",
          "value": "EXTERNAL"
        },
        {
          "name": "Internal",
          "description": "VMs on this subnet will be assigned IPv6 addresses that are only accessible over the VPC network.",
          "value": "INTERNAL"
        }
      ]
    },
    "google-native:compute/v1:SubnetworkLogConfig": {
      "description": "The available logging options for this subnetwork.",
      "properties": {
        "aggregationInterval": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkLogConfigAggregationInterval",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection."
        },
        "enable": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. Flow logging isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "filterExpr": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. The filter expression is used to define which VPC flow logs should be exported to Cloud Logging."
        },
        "flowSampling": {
          "type": "number",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkLogConfigMetadata",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA."
        },
        "metadataFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled and \"metadata\" was set to CUSTOM_METADATA."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SubnetworkLogConfigAggregationInterval": {
      "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection.",
      "type": "string",
      "enum": [
        {
          "name": "Interval10Min",
          "value": "INTERVAL_10_MIN"
        },
        {
          "name": "Interval15Min",
          "value": "INTERVAL_15_MIN"
        },
        {
          "name": "Interval1Min",
          "value": "INTERVAL_1_MIN"
        },
        {
          "name": "Interval30Sec",
          "value": "INTERVAL_30_SEC"
        },
        {
          "name": "Interval5Min",
          "value": "INTERVAL_5_MIN"
        },
        {
          "name": "Interval5Sec",
          "value": "INTERVAL_5_SEC"
        }
      ]
    },
    "google-native:compute/v1:SubnetworkLogConfigMetadata": {
      "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA.",
      "type": "string",
      "enum": [
        {
          "name": "CustomMetadata",
          "value": "CUSTOM_METADATA"
        },
        {
          "name": "ExcludeAllMetadata",
          "value": "EXCLUDE_ALL_METADATA"
        },
        {
          "name": "IncludeAllMetadata",
          "value": "INCLUDE_ALL_METADATA"
        }
      ]
    },
    "google-native:compute/v1:SubnetworkLogConfigResponse": {
      "description": "The available logging options for this subnetwork.",
      "properties": {
        "aggregationInterval": {
          "type": "string",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection."
        },
        "enable": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. Flow logging isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "filterExpr": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. The filter expression is used to define which VPC flow logs should be exported to Cloud Logging."
        },
        "flowSampling": {
          "type": "number",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported."
        },
        "metadata": {
          "type": "string",
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled. Configures whether all, none or a subset of metadata fields should be added to the reported VPC flow logs. Default is EXCLUDE_ALL_METADATA."
        },
        "metadataFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Can only be specified if VPC flow logs for this subnetwork is enabled and \"metadata\" was set to CUSTOM_METADATA."
        }
      },
      "type": "object",
      "required": [
        "aggregationInterval",
        "enable",
        "filterExpr",
        "flowSampling",
        "metadata",
        "metadataFields"
      ]
    },
    "google-native:compute/v1:SubnetworkPrivateIpv6GoogleAccess": {
      "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch.",
      "type": "string",
      "enum": [
        {
          "name": "DisableGoogleAccess",
          "description": "Disable private IPv6 access to/from Google services.",
          "value": "DISABLE_GOOGLE_ACCESS"
        },
        {
          "name": "EnableBidirectionalAccessToGoogle",
          "description": "Bidirectional private IPv6 access to/from Google services.",
          "value": "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE"
        },
        {
          "name": "EnableOutboundVmAccessToGoogle",
          "description": "Outbound private IPv6 access from VMs in this subnet to Google services.",
          "value": "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE"
        }
      ]
    },
    "google-native:compute/v1:SubnetworkPurpose": {
      "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
      "type": "string",
      "enum": [
        {
          "name": "GlobalManagedProxy",
          "description": "Subnet reserved for Global Envoy-based Load Balancing.",
          "value": "GLOBAL_MANAGED_PROXY"
        },
        {
          "name": "InternalHttpsLoadBalancer",
          "description": "Subnet reserved for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_HTTPS_LOAD_BALANCER"
        },
        {
          "name": "Private",
          "description": "Regular user created or automatically created subnet.",
          "value": "PRIVATE"
        },
        {
          "name": "PrivateNat",
          "description": "Subnetwork used as source range for Private NAT Gateways.",
          "value": "PRIVATE_NAT"
        },
        {
          "name": "PrivateRfc1918",
          "description": "Regular user created or automatically created subnet.",
          "value": "PRIVATE_RFC_1918"
        },
        {
          "name": "PrivateServiceConnect",
          "description": "Subnetworks created for Private Service Connect in the producer network.",
          "value": "PRIVATE_SERVICE_CONNECT"
        },
        {
          "name": "RegionalManagedProxy",
          "description": "Subnetwork used for Regional Envoy-based Load Balancing.",
          "value": "REGIONAL_MANAGED_PROXY"
        }
      ]
    },
    "google-native:compute/v1:SubnetworkRole": {
      "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request.",
      "type": "string",
      "enum": [
        {
          "name": "Active",
          "description": "The ACTIVE subnet that is currently used.",
          "value": "ACTIVE"
        },
        {
          "name": "Backup",
          "description": "The BACKUP subnet that could be promoted to ACTIVE.",
          "value": "BACKUP"
        }
      ]
    },
    "google-native:compute/v1:SubnetworkSecondaryRange": {
      "description": "Represents a secondary IP range of a subnetwork.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported. The range can be any range listed in the Valid ranges list."
        },
        "rangeName": {
          "type": "string",
          "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SubnetworkSecondaryRangeResponse": {
      "description": "Represents a secondary IP range of a subnetwork.",
      "properties": {
        "ipCidrRange": {
          "type": "string",
          "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported. The range can be any range listed in the Valid ranges list."
        },
        "rangeName": {
          "type": "string",
          "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
        }
      },
      "type": "object",
      "required": [
        "ipCidrRange",
        "rangeName"
      ]
    },
    "google-native:compute/v1:SubnetworkStackType": {
      "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "New VMs in this subnet can have both IPv4 and IPv6 addresses.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "New VMs in this subnet will only be assigned IPv4 addresses.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/v1:Subsetting": {
      "description": "Subsetting configuration for this BackendService. Currently this is applicable only for Internal TCP/UDP load balancing, Internal HTTP(S) load balancing and Traffic Director.",
      "properties": {
        "policy": {
          "$ref": "#/types/google-native:compute%2Fv1:SubsettingPolicy"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:SubsettingPolicy": {
      "type": "string",
      "enum": [
        {
          "name": "ConsistentHashSubsetting",
          "description": "Subsetting based on consistent hashing. For Traffic Director, the number of backends per backend group (the subset size) is based on the `subset_size` parameter. For Internal HTTP(S) load balancing, the number of backends per backend group (the subset size) is dynamically adjusted in two cases: - As the number of proxy instances participating in Internal HTTP(S) load balancing increases, the subset size decreases. - When the total number of backends in a network exceeds the capacity of a single proxy instance, subset sizes are reduced automatically for each service that has backend subsetting enabled.",
          "value": "CONSISTENT_HASH_SUBSETTING"
        },
        {
          "name": "None",
          "description": "No Subsetting. Clients may open connections and send traffic to all backends of this backend service. This can lead to performance issues if there is substantial imbalance in the count of clients and backends.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/v1:SubsettingResponse": {
      "description": "Subsetting configuration for this BackendService. Currently this is applicable only for Internal TCP/UDP load balancing, Internal HTTP(S) load balancing and Traffic Director.",
      "properties": {
        "policy": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "policy"
      ]
    },
    "google-native:compute/v1:TCPHealthCheck": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "$ref": "#/types/google-native:compute%2Fv1:TCPHealthCheckPortSpecification",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fv1:TCPHealthCheckProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based TCP health check. In addition to establishing a TCP connection, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:TCPHealthCheckPortSpecification": {
      "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
      "type": "string",
      "enum": [
        {
          "name": "UseFixedPort",
          "description": "The port number in the health check's port is used for health checking. Applies to network endpoint group and instance group backends.",
          "value": "USE_FIXED_PORT"
        },
        {
          "name": "UseNamedPort",
          "description": "Not supported.",
          "value": "USE_NAMED_PORT"
        },
        {
          "name": "UseServingPort",
          "description": "For network endpoint group backends, the health check uses the port number specified on each endpoint in the network endpoint group. For instance group backends, the health check uses the port number specified for the backend service's named port defined in the instance group's named ports.",
          "value": "USE_SERVING_PORT"
        }
      ]
    },
    "google-native:compute/v1:TCPHealthCheckProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/v1:TCPHealthCheckResponse": {
      "properties": {
        "port": {
          "type": "integer",
          "description": "The TCP port number to which the health check prober sends packets. The default value is 80. Valid values are 1 through 65535."
        },
        "portName": {
          "type": "string",
          "description": "Not supported."
        },
        "portSpecification": {
          "type": "string",
          "description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "request": {
          "type": "string",
          "description": "Instructs the health check prober to send this exact ASCII string, up to 1024 bytes in length, after establishing the TCP connection."
        },
        "response": {
          "type": "string",
          "description": "Creates a content-based TCP health check. In addition to establishing a TCP connection, you can configure the health check to pass only when the backend sends this exact response ASCII string, up to 1024 bytes in length. For details, see: https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp"
        }
      },
      "type": "object",
      "required": [
        "port",
        "portName",
        "portSpecification",
        "proxyHeader",
        "request",
        "response"
      ]
    },
    "google-native:compute/v1:Tags": {
      "description": "A set of instance tags.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:TagsResponse": {
      "description": "A set of instance tags.",
      "properties": {
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this request, which is essentially a hash of the tags' contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update tags. You must always provide an up-to-date fingerprint hash in order to update or change tags. To see the latest fingerprint, make get() request to the instance."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "items"
      ]
    },
    "google-native:compute/v1:TargetHttpsProxyQuicOverride": {
      "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
      "type": "string",
      "enum": [
        {
          "name": "Disable",
          "description": "The load balancer will not attempt to negotiate QUIC with clients.",
          "value": "DISABLE"
        },
        {
          "name": "Enable",
          "description": "The load balancer will attempt to negotiate QUIC with clients.",
          "value": "ENABLE"
        },
        {
          "name": "None",
          "description": "No overrides to the default QUIC policy. This option is implicit if no QUIC override has been specified in the request.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/v1:TargetInstanceNatPolicy": {
      "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance.",
      "type": "string",
      "enum": [
        {
          "name": "NoNat",
          "description": "No NAT performed.",
          "value": "NO_NAT"
        }
      ]
    },
    "google-native:compute/v1:TargetPoolSessionAffinity": {
      "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
      "type": "string",
      "enum": [
        {
          "name": "ClientIp",
          "description": "2-tuple hash on packet's source and destination IP addresses. Connections from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy.",
          "value": "CLIENT_IP"
        },
        {
          "name": "ClientIpNoDestination",
          "description": "1-tuple hash only on packet's source IP address. Connections from the same source IP address will be served by the same backend VM while that VM remains healthy. This option can only be used for Internal TCP/UDP Load Balancing.",
          "value": "CLIENT_IP_NO_DESTINATION"
        },
        {
          "name": "ClientIpPortProto",
          "description": "5-tuple hash on packet's source and destination IP addresses, IP protocol, and source and destination ports. Connections for the same IP protocol from the same source IP address and port to the same destination IP address and port will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PORT_PROTO"
        },
        {
          "name": "ClientIpProto",
          "description": "3-tuple hash on packet's source and destination IP addresses, and IP protocol. Connections for the same IP protocol from the same source IP address to the same destination IP address will be served by the same backend VM while that VM remains healthy. This option cannot be used for HTTP(S) load balancing.",
          "value": "CLIENT_IP_PROTO"
        },
        {
          "name": "GeneratedCookie",
          "description": "Hash based on a cookie generated by the L7 loadbalancer. Only valid for HTTP(S) load balancing.",
          "value": "GENERATED_COOKIE"
        },
        {
          "name": "HeaderField",
          "description": "The hash is based on a user specified header field.",
          "value": "HEADER_FIELD"
        },
        {
          "name": "HttpCookie",
          "description": "The hash is based on a user provided cookie.",
          "value": "HTTP_COOKIE"
        },
        {
          "name": "None",
          "description": "No session affinity. Connections from the same client IP may go to any instance in the pool.",
          "value": "NONE"
        }
      ]
    },
    "google-native:compute/v1:TargetSslProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/v1:TargetTcpProxyProxyHeader": {
      "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "NONE"
        },
        {
          "name": "ProxyV1",
          "value": "PROXY_V1"
        }
      ]
    },
    "google-native:compute/v1:Uint128Response": {
      "properties": {
        "high": {
          "type": "string"
        },
        "low": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "high",
        "low"
      ]
    },
    "google-native:compute/v1:UpcomingMaintenanceResponse": {
      "description": "Upcoming Maintenance notification information.",
      "properties": {
        "canReschedule": {
          "type": "boolean",
          "description": "Indicates if the maintenance can be customer triggered."
        },
        "latestWindowStartTime": {
          "type": "string",
          "description": "The latest time for the planned maintenance window to start. This timestamp value is in RFC3339 text format."
        },
        "maintenanceStatus": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "description": "Defines the type of maintenance."
        },
        "windowEndTime": {
          "type": "string",
          "description": "The time by which the maintenance disruption will be completed. This timestamp value is in RFC3339 text format."
        },
        "windowStartTime": {
          "type": "string",
          "description": "The current start time of the maintenance window. This timestamp value is in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "canReschedule",
        "latestWindowStartTime",
        "maintenanceStatus",
        "type",
        "windowEndTime",
        "windowStartTime"
      ]
    },
    "google-native:compute/v1:UrlMapTest": {
      "description": "Message for the expected URL mappings.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of this test case."
        },
        "expectedOutputUrl": {
          "type": "string",
          "description": "The expected output URL evaluated by the load balancer containing the scheme, host, path and query parameters. For 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. For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to HTTPS. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters. expectedOutputUrl is optional when service is specified."
        },
        "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. expectedRedirectResponseCode cannot be set when service is set."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:UrlMapTestHeader"
          },
          "description": "HTTP headers for this request. If headers contains a host header, then host must also match the header value."
        },
        "host": {
          "type": "string",
          "description": "Host portion of the URL. If headers contains a host header, then host must also match the header value."
        },
        "path": {
          "type": "string",
          "description": "Path portion of the URL."
        },
        "service": {
          "type": "string",
          "description": "Expected BackendService or BackendBucket resource the given URL should be mapped to. The service field cannot be set if expectedRedirectResponseCode is set."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:UrlMapTestHeader": {
      "description": "HTTP headers used in UrlMapTests.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Header name."
        },
        "value": {
          "type": "string",
          "description": "Header value."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:UrlMapTestHeaderResponse": {
      "description": "HTTP headers used in UrlMapTests.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Header name."
        },
        "value": {
          "type": "string",
          "description": "Header value."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:compute/v1:UrlMapTestResponse": {
      "description": "Message for the expected URL mappings.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of this test case."
        },
        "expectedOutputUrl": {
          "type": "string",
          "description": "The expected output URL evaluated by the load balancer containing the scheme, host, path and query parameters. For 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. For rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies https_redirect, the test passes only if the scheme in expectedOutputUrl is also set to HTTPS. If urlRedirect specifies strip_query, the test passes only if expectedOutputUrl does not contain any query parameters. expectedOutputUrl is optional when service is specified."
        },
        "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. expectedRedirectResponseCode cannot be set when service is set."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:UrlMapTestHeaderResponse"
          },
          "description": "HTTP headers for this request. If headers contains a host header, then host must also match the header value."
        },
        "host": {
          "type": "string",
          "description": "Host portion of the URL. If headers contains a host header, then host must also match the header value."
        },
        "path": {
          "type": "string",
          "description": "Path portion of the URL."
        },
        "service": {
          "type": "string",
          "description": "Expected BackendService or BackendBucket resource the given URL should be mapped to. The service field cannot be set if expectedRedirectResponseCode is set."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expectedOutputUrl",
        "expectedRedirectResponseCode",
        "headers",
        "host",
        "path",
        "service"
      ]
    },
    "google-native:compute/v1:UrlRewrite": {
      "description": "The spec for modifying the path before sending the request to the matched backend service.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite. The value must be from 1 to 255 characters."
        },
        "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. The value must be from 1 to 1024 characters."
        },
        "pathTemplateRewrite": {
          "type": "string",
          "description": " If specified, the pattern rewrites the URL path (based on the :path header) using the HTTP template syntax. A corresponding path_template_match must be specified. Any template variables must exist in the path_template_match field. - -At least one variable must be specified in the path_template_match field - You can omit variables from the rewritten URL - The * and ** operators cannot be matched unless they have a corresponding variable name - e.g. {format=*} or {var=**}. For example, a path_template_match of /static/{format=**} could be rewritten as /static/content/{format} to prefix /content to the URL. Variables can also be re-ordered in a rewrite, so that /{country}/{format}/{suffix=**} can be rewritten as /content/{format}/{country}/{suffix}. At least one non-empty routeRules[].matchRules[].path_template_match is required. Only one of path_prefix_rewrite or path_template_rewrite may be specified."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:UrlRewriteResponse": {
      "description": "The spec for modifying the path before sending the request to the matched backend service.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite. The value must be from 1 to 255 characters."
        },
        "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. The value must be from 1 to 1024 characters."
        },
        "pathTemplateRewrite": {
          "type": "string",
          "description": " If specified, the pattern rewrites the URL path (based on the :path header) using the HTTP template syntax. A corresponding path_template_match must be specified. Any template variables must exist in the path_template_match field. - -At least one variable must be specified in the path_template_match field - You can omit variables from the rewritten URL - The * and ** operators cannot be matched unless they have a corresponding variable name - e.g. {format=*} or {var=**}. For example, a path_template_match of /static/{format=**} could be rewritten as /static/content/{format} to prefix /content to the URL. Variables can also be re-ordered in a rewrite, so that /{country}/{format}/{suffix=**} can be rewritten as /content/{format}/{country}/{suffix}. At least one non-empty routeRules[].matchRules[].path_template_match is required. Only one of path_prefix_rewrite or path_template_rewrite may be specified."
        }
      },
      "type": "object",
      "required": [
        "hostRewrite",
        "pathPrefixRewrite",
        "pathTemplateRewrite"
      ]
    },
    "google-native:compute/v1:VpnGatewayStackType": {
      "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used.",
      "type": "string",
      "enum": [
        {
          "name": "Ipv4Ipv6",
          "description": "Enable VPN gateway with both IPv4 and IPv6 protocols.",
          "value": "IPV4_IPV6"
        },
        {
          "name": "Ipv4Only",
          "description": "Enable VPN gateway with only IPv4 protocol.",
          "value": "IPV4_ONLY"
        }
      ]
    },
    "google-native:compute/v1:VpnGatewayVpnGatewayInterface": {
      "description": "A VPN gateway interface.",
      "properties": {
        "interconnectAttachment": {
          "type": "string",
          "description": "URL of the VLAN attachment (interconnectAttachment) resource for this VPN gateway interface. When the value of this field is present, the VPN gateway is used for HA VPN over Cloud Interconnect; all egress or ingress traffic for this VPN gateway interface goes through the specified VLAN attachment resource."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:VpnGatewayVpnGatewayInterfaceResponse": {
      "description": "A VPN gateway interface.",
      "properties": {
        "interconnectAttachment": {
          "type": "string",
          "description": "URL of the VLAN attachment (interconnectAttachment) resource for this VPN gateway interface. When the value of this field is present, the VPN gateway is used for HA VPN over Cloud Interconnect; all egress or ingress traffic for this VPN gateway interface goes through the specified VLAN attachment resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for this VPN interface associated with the VPN gateway. The IP address could be either a regional external IP address or a regional internal IP address. The two IP addresses for a VPN gateway must be all regional external or regional internal IP addresses. There cannot be a mix of regional external IP addresses and regional internal IP addresses. For HA VPN over Cloud Interconnect, the IP addresses for both interfaces could either be regional internal IP addresses or regional external IP addresses. For regular (non HA VPN over Cloud Interconnect) HA VPN tunnels, the IP address must be a regional external IP address."
        }
      },
      "type": "object",
      "required": [
        "interconnectAttachment",
        "ipAddress"
      ]
    },
    "google-native:compute/v1:WeightedBackendService": {
      "description": "In contrast to a single BackendService in HttpRouteAction to which all matching traffic is directed to, WeightedBackendService allows traffic to be split across multiple backend services. The volume of traffic for each backend service is proportional to the weight specified in each WeightedBackendService",
      "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."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. headerAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) . The 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. The value must be from 0 to 1000."
        }
      },
      "type": "object"
    },
    "google-native:compute/v1:WeightedBackendServiceResponse": {
      "description": "In contrast to a single BackendService in HttpRouteAction to which all matching traffic is directed to, WeightedBackendService allows traffic to be split across multiple backend services. The volume of traffic for each backend service is proportional to the weight specified in each WeightedBackendService",
      "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."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. headerAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) . The 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. The value must be from 0 to 1000."
        }
      },
      "type": "object",
      "required": [
        "backendService",
        "headerAction",
        "weight"
      ]
    },
    "google-native:connectors/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:connectors/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:connectors%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:connectors/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:connectors/v1:AuthConfig": {
      "description": "AuthConfig defines details of a authentication type.",
      "properties": {
        "additionalVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariable"
          },
          "description": "List containing additional auth configs."
        },
        "authKey": {
          "type": "string",
          "description": "Identifier key for auth config"
        },
        "authType": {
          "$ref": "#/types/google-native:connectors%2Fv1:AuthConfigAuthType",
          "description": "The type of authentication configured."
        },
        "oauth2AuthCodeFlow": {
          "$ref": "#/types/google-native:connectors%2Fv1:Oauth2AuthCodeFlow",
          "description": "Oauth2AuthCodeFlow."
        },
        "oauth2ClientCredentials": {
          "$ref": "#/types/google-native:connectors%2Fv1:Oauth2ClientCredentials",
          "description": "Oauth2ClientCredentials."
        },
        "oauth2JwtBearer": {
          "$ref": "#/types/google-native:connectors%2Fv1:Oauth2JwtBearer",
          "description": "Oauth2JwtBearer."
        },
        "sshPublicKey": {
          "$ref": "#/types/google-native:connectors%2Fv1:SshPublicKey",
          "description": "SSH Public Key."
        },
        "userPassword": {
          "$ref": "#/types/google-native:connectors%2Fv1:UserPassword",
          "description": "UserPassword."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:AuthConfigAuthType": {
      "description": "The type of authentication configured.",
      "type": "string",
      "enum": [
        {
          "name": "AuthTypeUnspecified",
          "description": "Authentication type not specified.",
          "value": "AUTH_TYPE_UNSPECIFIED"
        },
        {
          "name": "UserPassword",
          "description": "Username and Password Authentication.",
          "value": "USER_PASSWORD"
        },
        {
          "name": "Oauth2JwtBearer",
          "description": "JSON Web Token (JWT) Profile for Oauth 2.0 Authorization Grant based authentication",
          "value": "OAUTH2_JWT_BEARER"
        },
        {
          "name": "Oauth2ClientCredentials",
          "description": "Oauth 2.0 Client Credentials Grant Authentication",
          "value": "OAUTH2_CLIENT_CREDENTIALS"
        },
        {
          "name": "SshPublicKey",
          "description": "SSH Public Key Authentication",
          "value": "SSH_PUBLIC_KEY"
        },
        {
          "name": "Oauth2AuthCodeFlow",
          "description": "Oauth 2.0 Authorization Code Flow",
          "value": "OAUTH2_AUTH_CODE_FLOW"
        }
      ]
    },
    "google-native:connectors/v1:AuthConfigResponse": {
      "description": "AuthConfig defines details of a authentication type.",
      "properties": {
        "additionalVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariableResponse"
          },
          "description": "List containing additional auth configs."
        },
        "authKey": {
          "type": "string",
          "description": "Identifier key for auth config"
        },
        "authType": {
          "type": "string",
          "description": "The type of authentication configured."
        },
        "oauth2AuthCodeFlow": {
          "$ref": "#/types/google-native:connectors%2Fv1:Oauth2AuthCodeFlowResponse",
          "description": "Oauth2AuthCodeFlow."
        },
        "oauth2ClientCredentials": {
          "$ref": "#/types/google-native:connectors%2Fv1:Oauth2ClientCredentialsResponse",
          "description": "Oauth2ClientCredentials."
        },
        "oauth2JwtBearer": {
          "$ref": "#/types/google-native:connectors%2Fv1:Oauth2JwtBearerResponse",
          "description": "Oauth2JwtBearer."
        },
        "sshPublicKey": {
          "$ref": "#/types/google-native:connectors%2Fv1:SshPublicKeyResponse",
          "description": "SSH Public Key."
        },
        "userPassword": {
          "$ref": "#/types/google-native:connectors%2Fv1:UserPasswordResponse",
          "description": "UserPassword."
        }
      },
      "type": "object",
      "required": [
        "additionalVariables",
        "authKey",
        "authType",
        "oauth2AuthCodeFlow",
        "oauth2ClientCredentials",
        "oauth2JwtBearer",
        "sshPublicKey",
        "userPassword"
      ]
    },
    "google-native:connectors/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:connectors%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:connectors%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:connectors/v1:ConfigVariable": {
      "description": "ConfigVariable represents a configuration variable present in a Connection. or AuthConfig.",
      "properties": {
        "boolValue": {
          "type": "boolean",
          "description": "Value is a bool."
        },
        "encryptionKeyValue": {
          "$ref": "#/types/google-native:connectors%2Fv1:EncryptionKey",
          "description": "Value is a Encryption Key."
        },
        "intValue": {
          "type": "string",
          "description": "Value is an integer"
        },
        "key": {
          "type": "string",
          "description": "Key of the config variable."
        },
        "secretValue": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Value is a secret."
        },
        "stringValue": {
          "type": "string",
          "description": "Value is a string."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:ConfigVariableResponse": {
      "description": "ConfigVariable represents a configuration variable present in a Connection. or AuthConfig.",
      "properties": {
        "boolValue": {
          "type": "boolean",
          "description": "Value is a bool."
        },
        "encryptionKeyValue": {
          "$ref": "#/types/google-native:connectors%2Fv1:EncryptionKeyResponse",
          "description": "Value is a Encryption Key."
        },
        "intValue": {
          "type": "string",
          "description": "Value is an integer"
        },
        "key": {
          "type": "string",
          "description": "Key of the config variable."
        },
        "secretValue": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Value is a secret."
        },
        "stringValue": {
          "type": "string",
          "description": "Value is a string."
        }
      },
      "type": "object",
      "required": [
        "boolValue",
        "encryptionKeyValue",
        "intValue",
        "key",
        "secretValue",
        "stringValue"
      ]
    },
    "google-native:connectors/v1:ConnectionEventingEnablementType": {
      "description": "Optional. Eventing enablement type. Will be nil if eventing is not enabled.",
      "type": "string",
      "enum": [
        {
          "name": "EventingEnablementTypeUnspecified",
          "description": "Eventing Enablement Type Unspecifeied.",
          "value": "EVENTING_ENABLEMENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "EventingAndConnection",
          "description": "Both connection and eventing.",
          "value": "EVENTING_AND_CONNECTION"
        },
        {
          "name": "OnlyEventing",
          "description": "Only Eventing.",
          "value": "ONLY_EVENTING"
        }
      ]
    },
    "google-native:connectors/v1:ConnectionStatusResponse": {
      "description": "ConnectionStatus indicates the state of the connection.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description."
        },
        "state": {
          "type": "string",
          "description": "State."
        },
        "status": {
          "type": "string",
          "description": "Status provides detailed information for the state."
        }
      },
      "type": "object",
      "required": [
        "description",
        "state",
        "status"
      ]
    },
    "google-native:connectors/v1:ConnectorVersionInfraConfigResponse": {
      "description": "This cofiguration provides infra configs like rate limit threshold which need to be configurable for every connector version",
      "properties": {
        "connectionRatelimitWindowSeconds": {
          "type": "string",
          "description": "The window used for ratelimiting runtime requests to connections."
        },
        "hpaConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:HPAConfigResponse",
          "description": "HPA autoscaling config."
        },
        "internalclientRatelimitThreshold": {
          "type": "string",
          "description": "Max QPS supported for internal requests originating from Connd."
        },
        "ratelimitThreshold": {
          "type": "string",
          "description": "Max QPS supported by the connector version before throttling of requests."
        },
        "resourceLimits": {
          "$ref": "#/types/google-native:connectors%2Fv1:ResourceLimitsResponse",
          "description": "System resource limits."
        },
        "resourceRequests": {
          "$ref": "#/types/google-native:connectors%2Fv1:ResourceRequestsResponse",
          "description": "System resource requests."
        },
        "sharedDeployment": {
          "type": "string",
          "description": "The name of shared connector deployment."
        }
      },
      "type": "object",
      "required": [
        "connectionRatelimitWindowSeconds",
        "hpaConfig",
        "internalclientRatelimitThreshold",
        "ratelimitThreshold",
        "resourceLimits",
        "resourceRequests",
        "sharedDeployment"
      ]
    },
    "google-native:connectors/v1:ConnectorsLogConfig": {
      "description": "Log configuration for the connection.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enabled represents whether logging is enabled or not for a connection."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:ConnectorsLogConfigResponse": {
      "description": "Log configuration for the connection.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enabled represents whether logging is enabled or not for a connection."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:connectors/v1:CustomConnectorCustomConnectorType": {
      "description": "Required. Type of the custom connector.",
      "type": "string",
      "enum": [
        {
          "name": "CustomConnectorTypeUnspecified",
          "description": "Connector type is not specified.",
          "value": "CUSTOM_CONNECTOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "OpenApi",
          "description": "OpenAPI connector.",
          "value": "OPEN_API"
        },
        {
          "name": "Proto",
          "description": "Proto connector.",
          "value": "PROTO"
        }
      ]
    },
    "google-native:connectors/v1:CustomConnectorVersionType": {
      "description": "Required. Type of the customConnector.",
      "type": "string",
      "enum": [
        {
          "name": "CustomConnectorTypeUnspecified",
          "description": "Connector type is not specified.",
          "value": "CUSTOM_CONNECTOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "OpenApi",
          "description": "OpenAPI connector.",
          "value": "OPEN_API"
        },
        {
          "name": "Proto",
          "description": "Proto connector.",
          "value": "PROTO"
        }
      ]
    },
    "google-native:connectors/v1:Destination": {
      "properties": {
        "host": {
          "type": "string",
          "description": "For publicly routable host."
        },
        "port": {
          "type": "integer",
          "description": "The port is the target port number that is accepted by the destination."
        },
        "serviceAttachment": {
          "type": "string",
          "description": "PSC service attachments. Format: projects/*/regions/*/serviceAttachments/*"
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:DestinationConfig": {
      "description": "Define the Connectors target endpoint.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:Destination"
          },
          "description": "The destinations for the key."
        },
        "key": {
          "type": "string",
          "description": "The key is the destination identifier that is supported by the Connector."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:DestinationConfigResponse": {
      "description": "Define the Connectors target endpoint.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:DestinationResponse"
          },
          "description": "The destinations for the key."
        },
        "key": {
          "type": "string",
          "description": "The key is the destination identifier that is supported by the Connector."
        }
      },
      "type": "object",
      "required": [
        "destinations",
        "key"
      ]
    },
    "google-native:connectors/v1:DestinationResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "For publicly routable host."
        },
        "port": {
          "type": "integer",
          "description": "The port is the target port number that is accepted by the destination."
        },
        "serviceAttachment": {
          "type": "string",
          "description": "PSC service attachments. Format: projects/*/regions/*/serviceAttachments/*"
        }
      },
      "type": "object",
      "required": [
        "host",
        "port",
        "serviceAttachment"
      ]
    },
    "google-native:connectors/v1:EncryptionKey": {
      "description": "Encryption Key value.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The [KMS key name] with which the content of the Operation is encrypted. The expected format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`. Will be empty string if google managed."
        },
        "type": {
          "$ref": "#/types/google-native:connectors%2Fv1:EncryptionKeyType",
          "description": "Type."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:EncryptionKeyResponse": {
      "description": "Encryption Key value.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The [KMS key name] with which the content of the Operation is encrypted. The expected format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`. Will be empty string if google managed."
        },
        "type": {
          "type": "string",
          "description": "Type."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName",
        "type"
      ]
    },
    "google-native:connectors/v1:EncryptionKeyType": {
      "description": "Type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Value type is not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "GoogleManaged",
          "description": "Google Managed.",
          "value": "GOOGLE_MANAGED"
        },
        {
          "name": "CustomerManaged",
          "description": "Customer Managed.",
          "value": "CUSTOMER_MANAGED"
        }
      ]
    },
    "google-native:connectors/v1:EndPoint": {
      "description": "Endpoint message includes details of the Destination endpoint.",
      "properties": {
        "endpointUri": {
          "type": "string",
          "description": "The URI of the Endpoint."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:Header"
          },
          "description": "List of Header to be added to the Endpoint."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:EndPointResponse": {
      "description": "Endpoint message includes details of the Destination endpoint.",
      "properties": {
        "endpointUri": {
          "type": "string",
          "description": "The URI of the Endpoint."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:HeaderResponse"
          },
          "description": "List of Header to be added to the Endpoint."
        }
      },
      "type": "object",
      "required": [
        "endpointUri",
        "headers"
      ]
    },
    "google-native:connectors/v1:EventSubscriptionDestination": {
      "description": "Message for EventSubscription Destination to act on receiving an event",
      "properties": {
        "endpoint": {
          "$ref": "#/types/google-native:connectors%2Fv1:EndPoint",
          "description": "OPTION 1: Hit an endpoint when we receive an event."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service account needed for runtime plane to trigger IP workflow."
        },
        "type": {
          "$ref": "#/types/google-native:connectors%2Fv1:EventSubscriptionDestinationType",
          "description": "type of the destination"
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:EventSubscriptionDestinationResponse": {
      "description": "Message for EventSubscription Destination to act on receiving an event",
      "properties": {
        "endpoint": {
          "$ref": "#/types/google-native:connectors%2Fv1:EndPointResponse",
          "description": "OPTION 1: Hit an endpoint when we receive an event."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service account needed for runtime plane to trigger IP workflow."
        },
        "type": {
          "type": "string",
          "description": "type of the destination"
        }
      },
      "type": "object",
      "required": [
        "endpoint",
        "serviceAccount",
        "type"
      ]
    },
    "google-native:connectors/v1:EventSubscriptionDestinationType": {
      "description": "type of the destination",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default state.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Endpoint",
          "description": "Endpoint - Hit the value of endpoint when event is received",
          "value": "ENDPOINT"
        }
      ]
    },
    "google-native:connectors/v1:EventSubscriptionStatus": {
      "description": "EventSubscription Status denotes the status of the EventSubscription resource.",
      "type": "object"
    },
    "google-native:connectors/v1:EventSubscriptionStatusResponse": {
      "description": "EventSubscription Status denotes the status of the EventSubscription resource.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the state."
        },
        "state": {
          "type": "string",
          "description": "State of Event Subscription resource."
        }
      },
      "type": "object",
      "required": [
        "description",
        "state"
      ]
    },
    "google-native:connectors/v1:EventingConfig": {
      "description": "Eventing Configuration of a connection",
      "properties": {
        "additionalVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariable"
          },
          "description": "Additional eventing related field values"
        },
        "authConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:AuthConfig",
          "description": "Auth details for the webhook adapter."
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariable",
          "description": "Encryption key (can be either Google managed or CMEK)."
        },
        "enrichmentEnabled": {
          "type": "boolean",
          "description": "Enrichment Enabled."
        },
        "eventsListenerIngressEndpoint": {
          "type": "string",
          "description": "Optional. Ingress endpoint of the event listener. This is used only when private connectivity is enabled."
        },
        "privateConnectivityEnabled": {
          "type": "boolean",
          "description": "Optional. Private Connectivity Enabled."
        },
        "registrationDestinationConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:DestinationConfig",
          "description": "Registration endpoint for auto registration."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:EventingConfigResponse": {
      "description": "Eventing Configuration of a connection",
      "properties": {
        "additionalVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariableResponse"
          },
          "description": "Additional eventing related field values"
        },
        "authConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:AuthConfigResponse",
          "description": "Auth details for the webhook adapter."
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariableResponse",
          "description": "Encryption key (can be either Google managed or CMEK)."
        },
        "enrichmentEnabled": {
          "type": "boolean",
          "description": "Enrichment Enabled."
        },
        "eventsListenerIngressEndpoint": {
          "type": "string",
          "description": "Optional. Ingress endpoint of the event listener. This is used only when private connectivity is enabled."
        },
        "privateConnectivityEnabled": {
          "type": "boolean",
          "description": "Optional. Private Connectivity Enabled."
        },
        "registrationDestinationConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:DestinationConfigResponse",
          "description": "Registration endpoint for auto registration."
        }
      },
      "type": "object",
      "required": [
        "additionalVariables",
        "authConfig",
        "encryptionKey",
        "enrichmentEnabled",
        "eventsListenerIngressEndpoint",
        "privateConnectivityEnabled",
        "registrationDestinationConfig"
      ]
    },
    "google-native:connectors/v1:EventingRuntimeDataResponse": {
      "description": "Eventing runtime data has the details related to eventing managed by the system.",
      "properties": {
        "eventsListenerEndpoint": {
          "type": "string",
          "description": "Events listener endpoint. The value will populated after provisioning the events listener."
        },
        "eventsListenerPscSa": {
          "type": "string",
          "description": "Events listener PSC Service attachment. The value will be populated after provisioning the events listener with private connectivity enabled."
        },
        "status": {
          "$ref": "#/types/google-native:connectors%2Fv1:EventingStatusResponse",
          "description": "Current status of eventing."
        }
      },
      "type": "object",
      "required": [
        "eventsListenerEndpoint",
        "eventsListenerPscSa",
        "status"
      ]
    },
    "google-native:connectors/v1:EventingStatusResponse": {
      "description": "EventingStatus indicates the state of eventing.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of error if State is set to \"ERROR\"."
        },
        "state": {
          "type": "string",
          "description": "State."
        }
      },
      "type": "object",
      "required": [
        "description",
        "state"
      ]
    },
    "google-native:connectors/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:connectors/v1:HPAConfigResponse": {
      "description": "Autoscaling config for connector deployment system metrics.",
      "properties": {
        "cpuUtilizationThreshold": {
          "type": "string",
          "description": "Percent CPU utilization where HPA triggers autoscaling."
        },
        "memoryUtilizationThreshold": {
          "type": "string",
          "description": "Percent Memory utilization where HPA triggers autoscaling."
        }
      },
      "type": "object",
      "required": [
        "cpuUtilizationThreshold",
        "memoryUtilizationThreshold"
      ]
    },
    "google-native:connectors/v1:Header": {
      "description": "Header details for a given header to be added to Endpoint.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of Header."
        },
        "value": {
          "type": "string",
          "description": "Value of Header."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:HeaderResponse": {
      "description": "Header details for a given header to be added to Endpoint.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of Header."
        },
        "value": {
          "type": "string",
          "description": "Value of Header."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:connectors/v1:JMS": {
      "description": "JMS message denotes the source of the event",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the JMS source. i.e. queueName or topicName"
        },
        "type": {
          "$ref": "#/types/google-native:connectors%2Fv1:JMSType",
          "description": "Optional. Type of the JMS Source. i.e. Queue or Topic"
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:JMSResponse": {
      "description": "JMS message denotes the source of the event",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. Name of the JMS source. i.e. queueName or topicName"
        },
        "type": {
          "type": "string",
          "description": "Optional. Type of the JMS Source. i.e. Queue or Topic"
        }
      },
      "type": "object",
      "required": [
        "name",
        "type"
      ]
    },
    "google-native:connectors/v1:JMSType": {
      "description": "Optional. Type of the JMS Source. i.e. Queue or Topic",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default state.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Queue",
          "description": "JMS Queue.",
          "value": "QUEUE"
        },
        {
          "name": "Topic",
          "description": "JMS Topic.",
          "value": "TOPIC"
        }
      ]
    },
    "google-native:connectors/v1:JwtClaims": {
      "description": "JWT claims used for the jwt-bearer authorization grant.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Value for the \"aud\" claim."
        },
        "issuer": {
          "type": "string",
          "description": "Value for the \"iss\" claim."
        },
        "subject": {
          "type": "string",
          "description": "Value for the \"sub\" claim."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:JwtClaimsResponse": {
      "description": "JWT claims used for the jwt-bearer authorization grant.",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Value for the \"aud\" claim."
        },
        "issuer": {
          "type": "string",
          "description": "Value for the \"iss\" claim."
        },
        "subject": {
          "type": "string",
          "description": "Value for the \"sub\" claim."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "issuer",
        "subject"
      ]
    },
    "google-native:connectors/v1:LockConfig": {
      "description": "Determines whether or no a connection is locked. If locked, a reason must be specified.",
      "properties": {
        "locked": {
          "type": "boolean",
          "description": "Indicates whether or not the connection is locked."
        },
        "reason": {
          "type": "string",
          "description": "Describes why a connection is locked."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:LockConfigResponse": {
      "description": "Determines whether or no a connection is locked. If locked, a reason must be specified.",
      "properties": {
        "locked": {
          "type": "boolean",
          "description": "Indicates whether or not the connection is locked."
        },
        "reason": {
          "type": "string",
          "description": "Describes why a connection is locked."
        }
      },
      "type": "object",
      "required": [
        "locked",
        "reason"
      ]
    },
    "google-native:connectors/v1:NodeConfig": {
      "description": "Node configuration for the connection.",
      "properties": {
        "maxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes in the runtime nodes."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes in the runtime nodes."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:NodeConfigResponse": {
      "description": "Node configuration for the connection.",
      "properties": {
        "maxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes in the runtime nodes."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes in the runtime nodes."
        }
      },
      "type": "object",
      "required": [
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:connectors/v1:Oauth2AuthCodeFlow": {
      "description": "Parameters to support Oauth 2.0 Auth Code Grant Authentication. See https://www.rfc-editor.org/rfc/rfc6749#section-1.3.1 for more details.",
      "properties": {
        "authCode": {
          "type": "string",
          "description": "Authorization code to be exchanged for access and refresh tokens."
        },
        "authUri": {
          "type": "string",
          "description": "Auth URL for Authorization Code Flow"
        },
        "clientId": {
          "type": "string",
          "description": "Client ID for user-provided OAuth app."
        },
        "clientSecret": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Client secret for user-provided OAuth app."
        },
        "enablePkce": {
          "type": "boolean",
          "description": "Whether to enable PKCE when the user performs the auth code flow."
        },
        "pkceVerifier": {
          "type": "string",
          "description": "PKCE verifier to be used during the auth code exchange."
        },
        "redirectUri": {
          "type": "string",
          "description": "Redirect URI to be provided during the auth code exchange."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes the connection will request when the user performs the auth code flow."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:Oauth2AuthCodeFlowResponse": {
      "description": "Parameters to support Oauth 2.0 Auth Code Grant Authentication. See https://www.rfc-editor.org/rfc/rfc6749#section-1.3.1 for more details.",
      "properties": {
        "authCode": {
          "type": "string",
          "description": "Authorization code to be exchanged for access and refresh tokens."
        },
        "authUri": {
          "type": "string",
          "description": "Auth URL for Authorization Code Flow"
        },
        "clientId": {
          "type": "string",
          "description": "Client ID for user-provided OAuth app."
        },
        "clientSecret": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Client secret for user-provided OAuth app."
        },
        "enablePkce": {
          "type": "boolean",
          "description": "Whether to enable PKCE when the user performs the auth code flow."
        },
        "pkceVerifier": {
          "type": "string",
          "description": "PKCE verifier to be used during the auth code exchange."
        },
        "redirectUri": {
          "type": "string",
          "description": "Redirect URI to be provided during the auth code exchange."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes the connection will request when the user performs the auth code flow."
        }
      },
      "type": "object",
      "required": [
        "authCode",
        "authUri",
        "clientId",
        "clientSecret",
        "enablePkce",
        "pkceVerifier",
        "redirectUri",
        "scopes"
      ]
    },
    "google-native:connectors/v1:Oauth2ClientCredentials": {
      "description": "Parameters to support Oauth 2.0 Client Credentials Grant Authentication. See https://tools.ietf.org/html/rfc6749#section-1.3.4 for more details.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The client identifier."
        },
        "clientSecret": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Secret version reference containing the client secret."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:Oauth2ClientCredentialsResponse": {
      "description": "Parameters to support Oauth 2.0 Client Credentials Grant Authentication. See https://tools.ietf.org/html/rfc6749#section-1.3.4 for more details.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The client identifier."
        },
        "clientSecret": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Secret version reference containing the client secret."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret"
      ]
    },
    "google-native:connectors/v1:Oauth2JwtBearer": {
      "description": "Parameters to support JSON Web Token (JWT) Profile for Oauth 2.0 Authorization Grant based authentication. See https://tools.ietf.org/html/rfc7523 for more details.",
      "properties": {
        "clientKey": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Secret version reference containing a PKCS#8 PEM-encoded private key associated with the Client Certificate. This private key will be used to sign JWTs used for the jwt-bearer authorization grant. Specified in the form as: `projects/*/secrets/*/versions/*`."
        },
        "jwtClaims": {
          "$ref": "#/types/google-native:connectors%2Fv1:JwtClaims",
          "description": "JwtClaims providers fields to generate the token."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:Oauth2JwtBearerResponse": {
      "description": "Parameters to support JSON Web Token (JWT) Profile for Oauth 2.0 Authorization Grant based authentication. See https://tools.ietf.org/html/rfc7523 for more details.",
      "properties": {
        "clientKey": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Secret version reference containing a PKCS#8 PEM-encoded private key associated with the Client Certificate. This private key will be used to sign JWTs used for the jwt-bearer authorization grant. Specified in the form as: `projects/*/secrets/*/versions/*`."
        },
        "jwtClaims": {
          "$ref": "#/types/google-native:connectors%2Fv1:JwtClaimsResponse",
          "description": "JwtClaims providers fields to generate the token."
        }
      },
      "type": "object",
      "required": [
        "clientKey",
        "jwtClaims"
      ]
    },
    "google-native:connectors/v1:ResourceLimitsResponse": {
      "description": "Resource limits defined for connection pods of a given connector type.",
      "properties": {
        "cpu": {
          "type": "string",
          "description": "CPU limit."
        },
        "memory": {
          "type": "string",
          "description": "Memory limit."
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "memory"
      ]
    },
    "google-native:connectors/v1:ResourceRequestsResponse": {
      "description": "Resource requests defined for connection pods of a given connector type.",
      "properties": {
        "cpu": {
          "type": "string",
          "description": "CPU request."
        },
        "memory": {
          "type": "string",
          "description": "Memory request."
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "memory"
      ]
    },
    "google-native:connectors/v1:Secret": {
      "description": "Secret provides a reference to entries in Secret Manager.",
      "properties": {
        "secretVersion": {
          "type": "string",
          "description": "The resource name of the secret version in the format, format as: `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:SecretResponse": {
      "description": "Secret provides a reference to entries in Secret Manager.",
      "properties": {
        "secretVersion": {
          "type": "string",
          "description": "The resource name of the secret version in the format, format as: `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object",
      "required": [
        "secretVersion"
      ]
    },
    "google-native:connectors/v1:SshPublicKey": {
      "description": "Parameters to support Ssh public key Authentication.",
      "properties": {
        "certType": {
          "type": "string",
          "description": "Format of SSH Client cert."
        },
        "sshClientCert": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "SSH Client Cert. It should contain both public and private key."
        },
        "sshClientCertPass": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Password (passphrase) for ssh client certificate if it has one."
        },
        "username": {
          "type": "string",
          "description": "The user account used to authenticate."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:SshPublicKeyResponse": {
      "description": "Parameters to support Ssh public key Authentication.",
      "properties": {
        "certType": {
          "type": "string",
          "description": "Format of SSH Client cert."
        },
        "sshClientCert": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "SSH Client Cert. It should contain both public and private key."
        },
        "sshClientCertPass": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Password (passphrase) for ssh client certificate if it has one."
        },
        "username": {
          "type": "string",
          "description": "The user account used to authenticate."
        }
      },
      "type": "object",
      "required": [
        "certType",
        "sshClientCert",
        "sshClientCertPass",
        "username"
      ]
    },
    "google-native:connectors/v1:SslConfig": {
      "description": "SSL Configuration of a connection",
      "properties": {
        "additionalVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariable"
          },
          "description": "Additional SSL related field values"
        },
        "clientCertType": {
          "$ref": "#/types/google-native:connectors%2Fv1:SslConfigClientCertType",
          "description": "Type of Client Cert (PEM/JKS/.. etc.)"
        },
        "clientCertificate": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Client Certificate"
        },
        "clientPrivateKey": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Client Private Key"
        },
        "clientPrivateKeyPass": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Secret containing the passphrase protecting the Client Private Key"
        },
        "privateServerCertificate": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Private Server Certificate. Needs to be specified if trust model is `PRIVATE`."
        },
        "serverCertType": {
          "$ref": "#/types/google-native:connectors%2Fv1:SslConfigServerCertType",
          "description": "Type of Server Cert (PEM/JKS/.. etc.)"
        },
        "trustModel": {
          "$ref": "#/types/google-native:connectors%2Fv1:SslConfigTrustModel",
          "description": "Trust Model of the SSL connection"
        },
        "type": {
          "$ref": "#/types/google-native:connectors%2Fv1:SslConfigType",
          "description": "Controls the ssl type for the given connector version."
        },
        "useSsl": {
          "type": "boolean",
          "description": "Bool for enabling SSL"
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:SslConfigClientCertType": {
      "description": "Type of Client Cert (PEM/JKS/.. etc.)",
      "type": "string",
      "enum": [
        {
          "name": "CertTypeUnspecified",
          "description": "Cert type unspecified.",
          "value": "CERT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Pem",
          "description": "Privacy Enhanced Mail (PEM) Type",
          "value": "PEM"
        }
      ]
    },
    "google-native:connectors/v1:SslConfigResponse": {
      "description": "SSL Configuration of a connection",
      "properties": {
        "additionalVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariableResponse"
          },
          "description": "Additional SSL related field values"
        },
        "clientCertType": {
          "type": "string",
          "description": "Type of Client Cert (PEM/JKS/.. etc.)"
        },
        "clientCertificate": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Client Certificate"
        },
        "clientPrivateKey": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Client Private Key"
        },
        "clientPrivateKeyPass": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Secret containing the passphrase protecting the Client Private Key"
        },
        "privateServerCertificate": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Private Server Certificate. Needs to be specified if trust model is `PRIVATE`."
        },
        "serverCertType": {
          "type": "string",
          "description": "Type of Server Cert (PEM/JKS/.. etc.)"
        },
        "trustModel": {
          "type": "string",
          "description": "Trust Model of the SSL connection"
        },
        "type": {
          "type": "string",
          "description": "Controls the ssl type for the given connector version."
        },
        "useSsl": {
          "type": "boolean",
          "description": "Bool for enabling SSL"
        }
      },
      "type": "object",
      "required": [
        "additionalVariables",
        "clientCertType",
        "clientCertificate",
        "clientPrivateKey",
        "clientPrivateKeyPass",
        "privateServerCertificate",
        "serverCertType",
        "trustModel",
        "type",
        "useSsl"
      ]
    },
    "google-native:connectors/v1:SslConfigServerCertType": {
      "description": "Type of Server Cert (PEM/JKS/.. etc.)",
      "type": "string",
      "enum": [
        {
          "name": "CertTypeUnspecified",
          "description": "Cert type unspecified.",
          "value": "CERT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Pem",
          "description": "Privacy Enhanced Mail (PEM) Type",
          "value": "PEM"
        }
      ]
    },
    "google-native:connectors/v1:SslConfigTrustModel": {
      "description": "Trust Model of the SSL connection",
      "type": "string",
      "enum": [
        {
          "name": "Public",
          "description": "Public Trust Model. Takes the Default Java trust store.",
          "value": "PUBLIC"
        },
        {
          "name": "Private",
          "description": "Private Trust Model. Takes custom/private trust store.",
          "value": "PRIVATE"
        },
        {
          "name": "Insecure",
          "description": "Insecure Trust Model. Accept all certificates.",
          "value": "INSECURE"
        }
      ]
    },
    "google-native:connectors/v1:SslConfigType": {
      "description": "Controls the ssl type for the given connector version.",
      "type": "string",
      "enum": [
        {
          "name": "SslTypeUnspecified",
          "description": "No SSL configuration required.",
          "value": "SSL_TYPE_UNSPECIFIED"
        },
        {
          "name": "Tls",
          "description": "TLS Handshake",
          "value": "TLS"
        },
        {
          "name": "Mtls",
          "description": "mutual TLS (MTLS) Handshake",
          "value": "MTLS"
        }
      ]
    },
    "google-native:connectors/v1:UserPassword": {
      "description": "Parameters to support Username and Password Authentication.",
      "properties": {
        "password": {
          "$ref": "#/types/google-native:connectors%2Fv1:Secret",
          "description": "Secret version reference containing the password."
        },
        "username": {
          "type": "string",
          "description": "Username."
        }
      },
      "type": "object"
    },
    "google-native:connectors/v1:UserPasswordResponse": {
      "description": "Parameters to support Username and Password Authentication.",
      "properties": {
        "password": {
          "$ref": "#/types/google-native:connectors%2Fv1:SecretResponse",
          "description": "Secret version reference containing the password."
        },
        "username": {
          "type": "string",
          "description": "Username."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:contactcenteraiplatform/v1alpha1:AdminUser": {
      "description": "Message storing info about the first admin user. Next ID: 3",
      "properties": {
        "familyName": {
          "type": "string",
          "description": "Optional. Last/family name of the first admin user."
        },
        "givenName": {
          "type": "string",
          "description": "Optional. First/given name of the first admin user."
        }
      },
      "type": "object"
    },
    "google-native:contactcenteraiplatform/v1alpha1:AdminUserResponse": {
      "description": "Message storing info about the first admin user. Next ID: 3",
      "properties": {
        "familyName": {
          "type": "string",
          "description": "Optional. Last/family name of the first admin user."
        },
        "givenName": {
          "type": "string",
          "description": "Optional. First/given name of the first admin user."
        }
      },
      "type": "object",
      "required": [
        "familyName",
        "givenName"
      ]
    },
    "google-native:contactcenteraiplatform/v1alpha1:InstanceConfig": {
      "description": "Message storing the instance configuration.",
      "properties": {
        "instanceSize": {
          "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:InstanceConfigInstanceSize",
          "description": "The instance size of this the instance configuration."
        }
      },
      "type": "object"
    },
    "google-native:contactcenteraiplatform/v1alpha1:InstanceConfigInstanceSize": {
      "description": "The instance size of this the instance configuration.",
      "type": "string",
      "enum": [
        {
          "name": "InstanceSizeUnspecified",
          "description": "The default value. This value is used if the state is omitted.",
          "value": "INSTANCE_SIZE_UNSPECIFIED"
        },
        {
          "name": "StandardSmall",
          "description": "Instance Size STANDARD_SMALL.",
          "value": "STANDARD_SMALL"
        },
        {
          "name": "StandardMedium",
          "description": "Instance Size STANDARD_MEDIUM.",
          "value": "STANDARD_MEDIUM"
        },
        {
          "name": "StandardLarge",
          "description": "Instance Size STANDARD_LARGE.",
          "value": "STANDARD_LARGE"
        },
        {
          "name": "StandardXlarge",
          "description": "Instance Size STANDARD_XLARGE.",
          "value": "STANDARD_XLARGE"
        },
        {
          "name": "Standard2xlarge",
          "description": "Instance Size STANDARD_2XLARGE.",
          "value": "STANDARD_2XLARGE"
        },
        {
          "name": "Standard3xlarge",
          "description": "Instance Size STANDARD_3XLARGE.",
          "value": "STANDARD_3XLARGE"
        },
        {
          "name": "DevXsmall",
          "description": "Instance Size DEV_EXTRA_SMALL.",
          "value": "DEV_XSMALL"
        }
      ]
    },
    "google-native:contactcenteraiplatform/v1alpha1:InstanceConfigResponse": {
      "description": "Message storing the instance configuration.",
      "properties": {
        "instanceSize": {
          "type": "string",
          "description": "The instance size of this the instance configuration."
        }
      },
      "type": "object",
      "required": [
        "instanceSize"
      ]
    },
    "google-native:contactcenteraiplatform/v1alpha1:SAMLParams": {
      "description": "Message storing SAML params to enable Google as IDP.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "SAML certificate"
        },
        "emailMapping": {
          "type": "string",
          "description": "IdP field that maps to the user’s email address"
        },
        "entityId": {
          "type": "string",
          "description": "Entity id URL"
        },
        "ssoUri": {
          "type": "string",
          "description": "Single sign-on URL"
        },
        "userEmail": {
          "type": "string",
          "description": "Email address of the first admin users."
        }
      },
      "type": "object"
    },
    "google-native:contactcenteraiplatform/v1alpha1:SAMLParamsResponse": {
      "description": "Message storing SAML params to enable Google as IDP.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "SAML certificate"
        },
        "emailMapping": {
          "type": "string",
          "description": "IdP field that maps to the user’s email address"
        },
        "entityId": {
          "type": "string",
          "description": "Entity id URL"
        },
        "ssoUri": {
          "type": "string",
          "description": "Single sign-on URL"
        },
        "userEmail": {
          "type": "string",
          "description": "Email address of the first admin users."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "emailMapping",
        "entityId",
        "ssoUri",
        "userEmail"
      ]
    },
    "google-native:contactcenteraiplatform/v1alpha1:URIsResponse": {
      "description": "Message storing the URIs of the ContactCenter.",
      "properties": {
        "chatBotUri": {
          "type": "string",
          "description": "Chat Bot Uri of the ContactCenter"
        },
        "mediaUri": {
          "type": "string",
          "description": "Media Uri of the ContactCenter."
        },
        "rootUri": {
          "type": "string",
          "description": "Root Uri of the ContactCenter."
        },
        "virtualAgentStreamingServiceUri": {
          "type": "string",
          "description": "Virtual Agent Streaming Service Uri of the ContactCenter."
        }
      },
      "type": "object",
      "required": [
        "chatBotUri",
        "mediaUri",
        "rootUri",
        "virtualAgentStreamingServiceUri"
      ]
    },
    "google-native:contactcenterinsights/v1:ConversationMedium": {
      "description": "Immutable. The conversation medium, if unspecified will default to PHONE_CALL.",
      "type": "string",
      "enum": [
        {
          "name": "MediumUnspecified",
          "description": "Default value, if unspecified will default to PHONE_CALL.",
          "value": "MEDIUM_UNSPECIFIED"
        },
        {
          "name": "PhoneCall",
          "description": "The format for conversations that took place over the phone.",
          "value": "PHONE_CALL"
        },
        {
          "name": "Chat",
          "description": "The format for conversations that took place over chat.",
          "value": "CHAT"
        }
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnalysisResponse": {
      "description": "The analysis resource.",
      "properties": {
        "analysisResult": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnalysisResultResponse",
          "description": "The result of the analysis, which is populated when the analysis finishes."
        },
        "annotatorSelector": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorResponse",
          "description": "To select the annotators to run and the phrase matchers to use (if any). If not specified, all annotators will be run."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the analysis was created, which occurs when the long-running operation completes."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the analysis. Format: projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis}"
        },
        "requestTime": {
          "type": "string",
          "description": "The time at which the analysis was requested."
        }
      },
      "type": "object",
      "required": [
        "analysisResult",
        "annotatorSelector",
        "createTime",
        "name",
        "requestTime"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnalysisResultCallAnalysisMetadataResponse": {
      "description": "Call-specific metadata created during analysis.",
      "properties": {
        "annotations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1CallAnnotationResponse"
          },
          "description": "A list of call annotations that apply to this call."
        },
        "entities": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "All the entities in the call."
        },
        "intents": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "All the matched intents in the call."
        },
        "issueModelResult": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueModelResultResponse",
          "description": "Overall conversation-level issue modeling result."
        },
        "phraseMatchers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "All the matched phrase matchers in the call."
        },
        "sentiments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationLevelSentimentResponse"
          },
          "description": "Overall conversation-level sentiment for each channel of the call."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "entities",
        "intents",
        "issueModelResult",
        "phraseMatchers",
        "sentiments"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnalysisResultResponse": {
      "description": "The result of an analysis.",
      "properties": {
        "callAnalysisMetadata": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnalysisResultCallAnalysisMetadataResponse",
          "description": "Call-specific metadata created by the analysis."
        },
        "endTime": {
          "type": "string",
          "description": "The time at which the analysis ended."
        }
      },
      "type": "object",
      "required": [
        "callAnalysisMetadata",
        "endTime"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnnotationBoundaryResponse": {
      "description": "A point in a conversation that marks the start or the end of an annotation.",
      "properties": {
        "transcriptIndex": {
          "type": "integer",
          "description": "The index in the sequence of transcribed pieces of the conversation where the boundary is located. This index starts at zero."
        },
        "wordIndex": {
          "type": "integer",
          "description": "The word index of this boundary with respect to the first word in the transcript piece. This index starts at zero."
        }
      },
      "type": "object",
      "required": [
        "transcriptIndex",
        "wordIndex"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnnotatorSelector": {
      "description": "Selector of all available annotators and phrase matchers to run.",
      "properties": {
        "issueModels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The issue model to run. If not provided, the most recently deployed topic model will be used. The provided issue model will only be used for inference if the issue model is deployed and if run_issue_model_annotator is set to true. If more than one issue model is provided, only the first provided issue model will be used for inference."
        },
        "phraseMatchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of phrase matchers to run. If not provided, all active phrase matchers will be used. If inactive phrase matchers are provided, they will not be used. Phrase matchers will be run only if run_phrase_matcher_annotator is set to true. Format: projects/{project}/locations/{location}/phraseMatchers/{phrase_matcher}"
        },
        "runEntityAnnotator": {
          "type": "boolean",
          "description": "Whether to run the entity annotator."
        },
        "runIntentAnnotator": {
          "type": "boolean",
          "description": "Whether to run the intent annotator."
        },
        "runInterruptionAnnotator": {
          "type": "boolean",
          "description": "Whether to run the interruption annotator."
        },
        "runIssueModelAnnotator": {
          "type": "boolean",
          "description": "Whether to run the issue model annotator. A model should have already been deployed for this to take effect."
        },
        "runPhraseMatcherAnnotator": {
          "type": "boolean",
          "description": "Whether to run the active phrase matcher annotator(s)."
        },
        "runSentimentAnnotator": {
          "type": "boolean",
          "description": "Whether to run the sentiment annotator."
        },
        "runSilenceAnnotator": {
          "type": "boolean",
          "description": "Whether to run the silence annotator."
        },
        "runSummarizationAnnotator": {
          "type": "boolean",
          "description": "Whether to run the summarization annotator."
        },
        "summarizationConfig": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorSummarizationConfig",
          "description": "Configuration for the summarization annotator."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorResponse": {
      "description": "Selector of all available annotators and phrase matchers to run.",
      "properties": {
        "issueModels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The issue model to run. If not provided, the most recently deployed topic model will be used. The provided issue model will only be used for inference if the issue model is deployed and if run_issue_model_annotator is set to true. If more than one issue model is provided, only the first provided issue model will be used for inference."
        },
        "phraseMatchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of phrase matchers to run. If not provided, all active phrase matchers will be used. If inactive phrase matchers are provided, they will not be used. Phrase matchers will be run only if run_phrase_matcher_annotator is set to true. Format: projects/{project}/locations/{location}/phraseMatchers/{phrase_matcher}"
        },
        "runEntityAnnotator": {
          "type": "boolean",
          "description": "Whether to run the entity annotator."
        },
        "runIntentAnnotator": {
          "type": "boolean",
          "description": "Whether to run the intent annotator."
        },
        "runInterruptionAnnotator": {
          "type": "boolean",
          "description": "Whether to run the interruption annotator."
        },
        "runIssueModelAnnotator": {
          "type": "boolean",
          "description": "Whether to run the issue model annotator. A model should have already been deployed for this to take effect."
        },
        "runPhraseMatcherAnnotator": {
          "type": "boolean",
          "description": "Whether to run the active phrase matcher annotator(s)."
        },
        "runSentimentAnnotator": {
          "type": "boolean",
          "description": "Whether to run the sentiment annotator."
        },
        "runSilenceAnnotator": {
          "type": "boolean",
          "description": "Whether to run the silence annotator."
        },
        "runSummarizationAnnotator": {
          "type": "boolean",
          "description": "Whether to run the summarization annotator."
        },
        "summarizationConfig": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorSummarizationConfigResponse",
          "description": "Configuration for the summarization annotator."
        }
      },
      "type": "object",
      "required": [
        "issueModels",
        "phraseMatchers",
        "runEntityAnnotator",
        "runIntentAnnotator",
        "runInterruptionAnnotator",
        "runIssueModelAnnotator",
        "runPhraseMatcherAnnotator",
        "runSentimentAnnotator",
        "runSilenceAnnotator",
        "runSummarizationAnnotator",
        "summarizationConfig"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorSummarizationConfig": {
      "description": "Configuration for summarization.",
      "properties": {
        "conversationProfile": {
          "type": "string",
          "description": "Resource name of the Dialogflow conversation profile. Format: projects/{project}/locations/{location}/conversationProfiles/{conversation_profile}"
        },
        "summarizationModel": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorSummarizationConfigSummarizationModel",
          "description": "Default summarization model to be used."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorSummarizationConfigResponse": {
      "description": "Configuration for summarization.",
      "properties": {
        "conversationProfile": {
          "type": "string",
          "description": "Resource name of the Dialogflow conversation profile. Format: projects/{project}/locations/{location}/conversationProfiles/{conversation_profile}"
        },
        "summarizationModel": {
          "type": "string",
          "description": "Default summarization model to be used."
        }
      },
      "type": "object",
      "required": [
        "conversationProfile",
        "summarizationModel"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorSummarizationConfigSummarizationModel": {
      "description": "Default summarization model to be used.",
      "type": "string",
      "enum": [
        {
          "name": "SummarizationModelUnspecified",
          "description": "Unspecified summarization model.",
          "value": "SUMMARIZATION_MODEL_UNSPECIFIED"
        },
        {
          "name": "BaselineModel",
          "description": "The CCAI baseline model.",
          "value": "BASELINE_MODEL"
        }
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1AnswerFeedbackResponse": {
      "description": "The feedback that the customer has about a certain answer in the conversation.",
      "properties": {
        "clicked": {
          "type": "boolean",
          "description": "Indicates whether an answer or item was clicked by the human agent."
        },
        "correctnessLevel": {
          "type": "string",
          "description": "The correctness level of an answer."
        },
        "displayed": {
          "type": "boolean",
          "description": "Indicates whether an answer or item was displayed to the human agent in the agent desktop UI."
        }
      },
      "type": "object",
      "required": [
        "clicked",
        "correctnessLevel",
        "displayed"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ArticleSuggestionDataResponse": {
      "description": "Agent Assist Article Suggestion data.",
      "properties": {
        "confidenceScore": {
          "type": "number",
          "description": "The system's confidence score that this article is a good match for this conversation, ranging from 0.0 (completely uncertain) to 1.0 (completely certain)."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map that contains metadata about the Article Suggestion and the document that it originates from."
        },
        "queryRecord": {
          "type": "string",
          "description": "The name of the answer record. Format: projects/{project}/locations/{location}/answerRecords/{answer_record}"
        },
        "source": {
          "type": "string",
          "description": "The knowledge document that this answer was extracted from. Format: projects/{project}/knowledgeBases/{knowledge_base}/documents/{document}"
        },
        "title": {
          "type": "string",
          "description": "Article title."
        },
        "uri": {
          "type": "string",
          "description": "Article URI."
        }
      },
      "type": "object",
      "required": [
        "confidenceScore",
        "metadata",
        "queryRecord",
        "source",
        "title",
        "uri"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1CallAnnotationResponse": {
      "description": "A piece of metadata that applies to a window of a call.",
      "properties": {
        "annotationEndBoundary": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotationBoundaryResponse",
          "description": "The boundary in the conversation where the annotation ends, inclusive."
        },
        "annotationStartBoundary": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotationBoundaryResponse",
          "description": "The boundary in the conversation where the annotation starts, inclusive."
        },
        "channelTag": {
          "type": "integer",
          "description": "The channel of the audio where the annotation occurs. For single-channel audio, this field is not populated."
        },
        "entityMentionData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1EntityMentionDataResponse",
          "description": "Data specifying an entity mention."
        },
        "holdData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1HoldDataResponse",
          "description": "Data specifying a hold."
        },
        "intentMatchData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IntentMatchDataResponse",
          "description": "Data specifying an intent match."
        },
        "interruptionData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1InterruptionDataResponse",
          "description": "Data specifying an interruption."
        },
        "issueMatchData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueMatchDataResponse",
          "description": "Data specifying an issue match."
        },
        "phraseMatchData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchDataResponse",
          "description": "Data specifying a phrase match."
        },
        "sentimentData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1SentimentDataResponse",
          "description": "Data specifying sentiment."
        },
        "silenceData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1SilenceDataResponse",
          "description": "Data specifying silence."
        }
      },
      "type": "object",
      "required": [
        "annotationEndBoundary",
        "annotationStartBoundary",
        "channelTag",
        "entityMentionData",
        "holdData",
        "intentMatchData",
        "interruptionData",
        "issueMatchData",
        "phraseMatchData",
        "sentimentData",
        "silenceData"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationCallMetadata": {
      "description": "Call-specific metadata.",
      "properties": {
        "agentChannel": {
          "type": "integer",
          "description": "The audio channel that contains the agent."
        },
        "customerChannel": {
          "type": "integer",
          "description": "The audio channel that contains the customer."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationCallMetadataResponse": {
      "description": "Call-specific metadata.",
      "properties": {
        "agentChannel": {
          "type": "integer",
          "description": "The audio channel that contains the agent."
        },
        "customerChannel": {
          "type": "integer",
          "description": "The audio channel that contains the customer."
        }
      },
      "type": "object",
      "required": [
        "agentChannel",
        "customerChannel"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationDataSource": {
      "description": "The conversation source, which is a combination of transcript, audio, and metadata.",
      "properties": {
        "dialogflowSource": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1DialogflowSource",
          "description": "The source when the conversation comes from Dialogflow."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1GcsSource",
          "description": "A Cloud Storage location specification for the audio and transcript."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationDataSourceResponse": {
      "description": "The conversation source, which is a combination of transcript, audio, and metadata.",
      "properties": {
        "dialogflowSource": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1DialogflowSourceResponse",
          "description": "The source when the conversation comes from Dialogflow."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1GcsSourceResponse",
          "description": "A Cloud Storage location specification for the audio and transcript."
        }
      },
      "type": "object",
      "required": [
        "dialogflowSource",
        "gcsSource"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationLevelSentimentResponse": {
      "description": "One channel of conversation-level sentiment data.",
      "properties": {
        "channelTag": {
          "type": "integer",
          "description": "The channel of the audio that the data applies to."
        },
        "sentimentData": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1SentimentDataResponse",
          "description": "Data specifying sentiment."
        }
      },
      "type": "object",
      "required": [
        "channelTag",
        "sentimentData"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationParticipantResponse": {
      "description": "The call participant speaking for a given utterance.",
      "properties": {
        "dialogflowParticipant": {
          "type": "string",
          "description": "Deprecated. Use `dialogflow_participant_name` instead. The name of the Dialogflow participant. Format: projects/{project}/locations/{location}/conversations/{conversation}/participants/{participant}",
          "deprecationMessage": "Deprecated. Use `dialogflow_participant_name` instead. The name of the Dialogflow participant. Format: projects/{project}/locations/{location}/conversations/{conversation}/participants/{participant}"
        },
        "dialogflowParticipantName": {
          "type": "string",
          "description": "The name of the participant provided by Dialogflow. Format: projects/{project}/locations/{location}/conversations/{conversation}/participants/{participant}"
        },
        "obfuscatedExternalUserId": {
          "type": "string",
          "description": "Obfuscated user ID from Dialogflow."
        },
        "role": {
          "type": "string",
          "description": "The role of the participant."
        },
        "userId": {
          "type": "string",
          "description": "A user-specified ID representing the participant."
        }
      },
      "type": "object",
      "required": [
        "dialogflowParticipant",
        "dialogflowParticipantName",
        "obfuscatedExternalUserId",
        "role",
        "userId"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationSummarizationSuggestionDataResponse": {
      "description": "Conversation summarization suggestion data.",
      "properties": {
        "answerRecord": {
          "type": "string",
          "description": "The name of the answer record. Format: projects/{project}/locations/{location}/answerRecords/{answer_record}"
        },
        "confidence": {
          "type": "number",
          "description": "The confidence score of the summarization."
        },
        "conversationModel": {
          "type": "string",
          "description": "The name of the model that generates this summary. Format: projects/{project}/locations/{location}/conversationModels/{conversation_model}"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map that contains metadata about the summarization and the document from which it originates."
        },
        "text": {
          "type": "string",
          "description": "The summarization content that is concatenated into one string."
        },
        "textSections": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The summarization content that is divided into sections. The key is the section's name and the value is the section's content. There is no specific format for the key or value."
        }
      },
      "type": "object",
      "required": [
        "answerRecord",
        "confidence",
        "conversationModel",
        "metadata",
        "text",
        "textSections"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationTranscriptResponse": {
      "description": "A message representing the transcript of a conversation.",
      "properties": {
        "transcriptSegments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationTranscriptTranscriptSegmentResponse"
          },
          "description": "A list of sequential transcript segments that comprise the conversation."
        }
      },
      "type": "object",
      "required": [
        "transcriptSegments"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationTranscriptTranscriptSegmentDialogflowSegmentMetadataResponse": {
      "description": "Metadata from Dialogflow relating to the current transcript segment.",
      "properties": {
        "smartReplyAllowlistCovered": {
          "type": "boolean",
          "description": "Whether the transcript segment was covered under the configured smart reply allowlist in Agent Assist."
        }
      },
      "type": "object",
      "required": [
        "smartReplyAllowlistCovered"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationTranscriptTranscriptSegmentResponse": {
      "description": "A segment of a full transcript.",
      "properties": {
        "channelTag": {
          "type": "integer",
          "description": "For conversations derived from multi-channel audio, this is the channel number corresponding to the audio from that channel. For audioChannelCount = N, its output values can range from '1' to 'N'. A channel tag of 0 indicates that the audio is mono."
        },
        "confidence": {
          "type": "number",
          "description": "A confidence estimate between 0.0 and 1.0 of the fidelity of this segment. A default value of 0.0 indicates that the value is unset."
        },
        "dialogflowSegmentMetadata": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationTranscriptTranscriptSegmentDialogflowSegmentMetadataResponse",
          "description": "CCAI metadata relating to the current transcript segment."
        },
        "languageCode": {
          "type": "string",
          "description": "The language code of this segment as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\"."
        },
        "messageTime": {
          "type": "string",
          "description": "The time that the message occurred, if provided."
        },
        "segmentParticipant": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationParticipantResponse",
          "description": "The participant of this segment."
        },
        "sentiment": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1SentimentDataResponse",
          "description": "The sentiment for this transcript segment."
        },
        "text": {
          "type": "string",
          "description": "The text of this segment."
        },
        "words": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationTranscriptTranscriptSegmentWordInfoResponse"
          },
          "description": "A list of the word-specific information for each word in the segment."
        }
      },
      "type": "object",
      "required": [
        "channelTag",
        "confidence",
        "dialogflowSegmentMetadata",
        "languageCode",
        "messageTime",
        "segmentParticipant",
        "sentiment",
        "text",
        "words"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ConversationTranscriptTranscriptSegmentWordInfoResponse": {
      "description": "Word-level info for words in a transcript.",
      "properties": {
        "confidence": {
          "type": "number",
          "description": "A confidence estimate between 0.0 and 1.0 of the fidelity of this word. A default value of 0.0 indicates that the value is unset."
        },
        "endOffset": {
          "type": "string",
          "description": "Time offset of the end of this word relative to the beginning of the total conversation."
        },
        "startOffset": {
          "type": "string",
          "description": "Time offset of the start of this word relative to the beginning of the total conversation."
        },
        "word": {
          "type": "string",
          "description": "The word itself. Includes punctuation marks that surround the word."
        }
      },
      "type": "object",
      "required": [
        "confidence",
        "endOffset",
        "startOffset",
        "word"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1DialogflowInteractionDataResponse": {
      "description": "Dialogflow interaction data.",
      "properties": {
        "confidence": {
          "type": "number",
          "description": "The confidence of the match ranging from 0.0 (completely uncertain) to 1.0 (completely certain)."
        },
        "dialogflowIntentId": {
          "type": "string",
          "description": "The Dialogflow intent resource path. Format: projects/{project}/agent/{agent}/intents/{intent}"
        }
      },
      "type": "object",
      "required": [
        "confidence",
        "dialogflowIntentId"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1DialogflowSource": {
      "description": "A Dialogflow source of conversation data.",
      "properties": {
        "audioUri": {
          "type": "string",
          "description": "Cloud Storage URI that points to a file that contains the conversation audio."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1DialogflowSourceResponse": {
      "description": "A Dialogflow source of conversation data.",
      "properties": {
        "audioUri": {
          "type": "string",
          "description": "Cloud Storage URI that points to a file that contains the conversation audio."
        },
        "dialogflowConversation": {
          "type": "string",
          "description": "The name of the Dialogflow conversation that this conversation resource is derived from. Format: projects/{project}/locations/{location}/conversations/{conversation}"
        }
      },
      "type": "object",
      "required": [
        "audioUri",
        "dialogflowConversation"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1EntityMentionDataResponse": {
      "description": "The data for an entity mention annotation. This represents a mention of an `Entity` in the conversation.",
      "properties": {
        "entityUniqueId": {
          "type": "string",
          "description": "The key of this entity in conversation entities. Can be used to retrieve the exact `Entity` this mention is attached to."
        },
        "sentiment": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1SentimentDataResponse",
          "description": "Sentiment expressed for this mention of the entity."
        },
        "type": {
          "type": "string",
          "description": "The type of the entity mention."
        }
      },
      "type": "object",
      "required": [
        "entityUniqueId",
        "sentiment",
        "type"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ExactMatchConfig": {
      "description": "Exact match configuration.",
      "properties": {
        "caseSensitive": {
          "type": "boolean",
          "description": "Whether to consider case sensitivity when performing an exact match."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1ExactMatchConfigResponse": {
      "description": "Exact match configuration.",
      "properties": {
        "caseSensitive": {
          "type": "boolean",
          "description": "Whether to consider case sensitivity when performing an exact match."
        }
      },
      "type": "object",
      "required": [
        "caseSensitive"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1FaqAnswerDataResponse": {
      "description": "Agent Assist frequently-asked-question answer data.",
      "properties": {
        "answer": {
          "type": "string",
          "description": "The piece of text from the `source` knowledge base document."
        },
        "confidenceScore": {
          "type": "number",
          "description": "The system's confidence score that this answer is a good match for this conversation, ranging from 0.0 (completely uncertain) to 1.0 (completely certain)."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map that contains metadata about the FAQ answer and the document that it originates from."
        },
        "queryRecord": {
          "type": "string",
          "description": "The name of the answer record. Format: projects/{project}/locations/{location}/answerRecords/{answer_record}"
        },
        "question": {
          "type": "string",
          "description": "The corresponding FAQ question."
        },
        "source": {
          "type": "string",
          "description": "The knowledge document that this answer was extracted from. Format: projects/{project}/knowledgeBases/{knowledge_base}/documents/{document}."
        }
      },
      "type": "object",
      "required": [
        "answer",
        "confidenceScore",
        "metadata",
        "queryRecord",
        "question",
        "source"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1GcsSource": {
      "description": "A Cloud Storage source of conversation data.",
      "properties": {
        "audioUri": {
          "type": "string",
          "description": "Cloud Storage URI that points to a file that contains the conversation audio."
        },
        "transcriptUri": {
          "type": "string",
          "description": "Immutable. Cloud Storage URI that points to a file that contains the conversation transcript."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1GcsSourceResponse": {
      "description": "A Cloud Storage source of conversation data.",
      "properties": {
        "audioUri": {
          "type": "string",
          "description": "Cloud Storage URI that points to a file that contains the conversation audio."
        },
        "transcriptUri": {
          "type": "string",
          "description": "Immutable. Cloud Storage URI that points to a file that contains the conversation transcript."
        }
      },
      "type": "object",
      "required": [
        "audioUri",
        "transcriptUri"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1HoldDataResponse": {
      "description": "The data for a hold annotation.",
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1IntentMatchDataResponse": {
      "description": "The data for an intent match. Represents an intent match for a text segment in the conversation. A text segment can be part of a sentence, a complete sentence, or an utterance with multiple sentences.",
      "properties": {
        "intentUniqueId": {
          "type": "string",
          "description": "The id of the matched intent. Can be used to retrieve the corresponding intent information."
        }
      },
      "type": "object",
      "required": [
        "intentUniqueId"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1InterruptionDataResponse": {
      "description": "The data for an interruption annotation.",
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1IssueAssignmentResponse": {
      "description": "Information about the issue.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Immutable. Display name of the assigned issue. This field is set at time of analyis and immutable since then."
        },
        "issue": {
          "type": "string",
          "description": "Resource name of the assigned issue."
        },
        "score": {
          "type": "number",
          "description": "Score indicating the likelihood of the issue assignment. currently bounded on [0,1]."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "issue",
        "score"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1IssueMatchDataResponse": {
      "description": "The data for an issue match annotation.",
      "properties": {
        "issueAssignment": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueAssignmentResponse",
          "description": "Information about the issue's assignment."
        }
      },
      "type": "object",
      "required": [
        "issueAssignment"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1IssueModelInputDataConfig": {
      "description": "Configs for the input data used to create the issue model.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter to reduce the conversations used for training the model to a specific subset."
        },
        "medium": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueModelInputDataConfigMedium",
          "description": "Medium of conversations used in training data. This field is being deprecated. To specify the medium to be used in training a new issue model, set the `medium` field on `filter`."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1IssueModelInputDataConfigMedium": {
      "description": "Medium of conversations used in training data. This field is being deprecated. To specify the medium to be used in training a new issue model, set the `medium` field on `filter`.",
      "type": "string",
      "enum": [
        {
          "name": "MediumUnspecified",
          "description": "Default value, if unspecified will default to PHONE_CALL.",
          "value": "MEDIUM_UNSPECIFIED"
        },
        {
          "name": "PhoneCall",
          "description": "The format for conversations that took place over the phone.",
          "value": "PHONE_CALL"
        },
        {
          "name": "Chat",
          "description": "The format for conversations that took place over chat.",
          "value": "CHAT"
        }
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1IssueModelInputDataConfigResponse": {
      "description": "Configs for the input data used to create the issue model.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter to reduce the conversations used for training the model to a specific subset."
        },
        "medium": {
          "type": "string",
          "description": "Medium of conversations used in training data. This field is being deprecated. To specify the medium to be used in training a new issue model, set the `medium` field on `filter`."
        },
        "trainingConversationsCount": {
          "type": "string",
          "description": "Number of conversations used in training. Output only."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "medium",
        "trainingConversationsCount"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1IssueModelLabelStatsResponse": {
      "description": "Aggregated statistics about an issue model.",
      "properties": {
        "analyzedConversationsCount": {
          "type": "string",
          "description": "Number of conversations the issue model has analyzed at this point in time."
        },
        "issueStats": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Statistics on each issue. Key is the issue's resource name."
        },
        "unclassifiedConversationsCount": {
          "type": "string",
          "description": "Number of analyzed conversations for which no issue was applicable at this point in time."
        }
      },
      "type": "object",
      "required": [
        "analyzedConversationsCount",
        "issueStats",
        "unclassifiedConversationsCount"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1IssueModelResultResponse": {
      "description": "Issue Modeling result on a conversation.",
      "properties": {
        "issueModel": {
          "type": "string",
          "description": "Issue model that generates the result. Format: projects/{project}/locations/{location}/issueModels/{issue_model}"
        },
        "issues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueAssignmentResponse"
          },
          "description": "All the matched issues."
        }
      },
      "type": "object",
      "required": [
        "issueModel",
        "issues"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1PhraseMatchDataResponse": {
      "description": "The data for a matched phrase matcher. Represents information identifying a phrase matcher for a given match.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the phrase matcher."
        },
        "phraseMatcher": {
          "type": "string",
          "description": "The unique identifier (the resource name) of the phrase matcher."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "phraseMatcher"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1PhraseMatchRule": {
      "description": "The data for a phrase match rule.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleConfig",
          "description": "Provides additional information about the rule that specifies how to apply the rule."
        },
        "negated": {
          "type": "boolean",
          "description": "Specifies whether the phrase must be missing from the transcript segment or present in the transcript segment."
        },
        "query": {
          "type": "string",
          "description": "The phrase to be matched."
        }
      },
      "type": "object",
      "required": [
        "query"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleConfig": {
      "description": "Configuration information of a phrase match rule.",
      "properties": {
        "exactMatchConfig": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ExactMatchConfig",
          "description": "The configuration for the exact match rule."
        }
      },
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleConfigResponse": {
      "description": "Configuration information of a phrase match rule.",
      "properties": {
        "exactMatchConfig": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ExactMatchConfigResponse",
          "description": "The configuration for the exact match rule."
        }
      },
      "type": "object",
      "required": [
        "exactMatchConfig"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleGroup": {
      "description": "A message representing a rule in the phrase matcher.",
      "properties": {
        "phraseMatchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchRule"
          },
          "description": "A list of phrase match rules that are included in this group."
        },
        "type": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleGroupType",
          "description": "The type of this phrase match rule group."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleGroupResponse": {
      "description": "A message representing a rule in the phrase matcher.",
      "properties": {
        "phraseMatchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleResponse"
          },
          "description": "A list of phrase match rules that are included in this group."
        },
        "type": {
          "type": "string",
          "description": "The type of this phrase match rule group."
        }
      },
      "type": "object",
      "required": [
        "phraseMatchRules",
        "type"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleGroupType": {
      "description": "Required. The type of this phrase match rule group.",
      "type": "string",
      "enum": [
        {
          "name": "PhraseMatchRuleGroupTypeUnspecified",
          "description": "Unspecified.",
          "value": "PHRASE_MATCH_RULE_GROUP_TYPE_UNSPECIFIED"
        },
        {
          "name": "AllOf",
          "description": "Must meet all phrase match rules or there is no match.",
          "value": "ALL_OF"
        },
        {
          "name": "AnyOf",
          "description": "If any of the phrase match rules are met, there is a match.",
          "value": "ANY_OF"
        }
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleResponse": {
      "description": "The data for a phrase match rule.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleConfigResponse",
          "description": "Provides additional information about the rule that specifies how to apply the rule."
        },
        "negated": {
          "type": "boolean",
          "description": "Specifies whether the phrase must be missing from the transcript segment or present in the transcript segment."
        },
        "query": {
          "type": "string",
          "description": "The phrase to be matched."
        }
      },
      "type": "object",
      "required": [
        "config",
        "negated",
        "query"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1RuntimeAnnotationResponse": {
      "description": "An annotation that was generated during the customer and agent interaction.",
      "properties": {
        "annotationId": {
          "type": "string",
          "description": "The unique identifier of the annotation. Format: projects/{project}/locations/{location}/conversationDatasets/{dataset}/conversationDataItems/{data_item}/conversationAnnotations/{annotation}"
        },
        "answerFeedback": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnswerFeedbackResponse",
          "description": "The feedback that the customer has about the answer in `data`."
        },
        "articleSuggestion": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ArticleSuggestionDataResponse",
          "description": "Agent Assist Article Suggestion data."
        },
        "conversationSummarizationSuggestion": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationSummarizationSuggestionDataResponse",
          "description": "Conversation summarization suggestion data."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this annotation was created."
        },
        "dialogflowInteraction": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1DialogflowInteractionDataResponse",
          "description": "Dialogflow interaction data."
        },
        "endBoundary": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotationBoundaryResponse",
          "description": "The boundary in the conversation where the annotation ends, inclusive."
        },
        "faqAnswer": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1FaqAnswerDataResponse",
          "description": "Agent Assist FAQ answer data."
        },
        "smartComposeSuggestion": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1SmartComposeSuggestionDataResponse",
          "description": "Agent Assist Smart Compose suggestion data."
        },
        "smartReply": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1SmartReplyDataResponse",
          "description": "Agent Assist Smart Reply data."
        },
        "startBoundary": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotationBoundaryResponse",
          "description": "The boundary in the conversation where the annotation starts, inclusive."
        }
      },
      "type": "object",
      "required": [
        "annotationId",
        "answerFeedback",
        "articleSuggestion",
        "conversationSummarizationSuggestion",
        "createTime",
        "dialogflowInteraction",
        "endBoundary",
        "faqAnswer",
        "smartComposeSuggestion",
        "smartReply",
        "startBoundary"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1SentimentDataResponse": {
      "description": "The data for a sentiment annotation.",
      "properties": {
        "magnitude": {
          "type": "number",
          "description": "A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score."
        },
        "score": {
          "type": "number",
          "description": "The sentiment score between -1.0 (negative) and 1.0 (positive)."
        }
      },
      "type": "object",
      "required": [
        "magnitude",
        "score"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1SilenceDataResponse": {
      "description": "The data for a silence annotation.",
      "type": "object"
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1SmartComposeSuggestionDataResponse": {
      "description": "Agent Assist Smart Compose suggestion data.",
      "properties": {
        "confidenceScore": {
          "type": "number",
          "description": "The system's confidence score that this suggestion is a good match for this conversation, ranging from 0.0 (completely uncertain) to 1.0 (completely certain)."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map that contains metadata about the Smart Compose suggestion and the document from which it originates."
        },
        "queryRecord": {
          "type": "string",
          "description": "The name of the answer record. Format: projects/{project}/locations/{location}/answerRecords/{answer_record}"
        },
        "suggestion": {
          "type": "string",
          "description": "The content of the suggestion."
        }
      },
      "type": "object",
      "required": [
        "confidenceScore",
        "metadata",
        "queryRecord",
        "suggestion"
      ]
    },
    "google-native:contactcenterinsights/v1:GoogleCloudContactcenterinsightsV1SmartReplyDataResponse": {
      "description": "Agent Assist Smart Reply data.",
      "properties": {
        "confidenceScore": {
          "type": "number",
          "description": "The system's confidence score that this reply is a good match for this conversation, ranging from 0.0 (completely uncertain) to 1.0 (completely certain)."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map that contains metadata about the Smart Reply and the document from which it originates."
        },
        "queryRecord": {
          "type": "string",
          "description": "The name of the answer record. Format: projects/{project}/locations/{location}/answerRecords/{answer_record}"
        },
        "reply": {
          "type": "string",
          "description": "The content of the reply."
        }
      },
      "type": "object",
      "required": [
        "confidenceScore",
        "metadata",
        "queryRecord",
        "reply"
      ]
    },
    "google-native:contactcenterinsights/v1:IssueModelModelType": {
      "description": "Type of the model.",
      "type": "string",
      "enum": [
        {
          "name": "ModelTypeUnspecified",
          "description": "Unspecified model type.",
          "value": "MODEL_TYPE_UNSPECIFIED"
        },
        {
          "name": "TypeV1",
          "description": "Type V1.",
          "value": "TYPE_V1"
        },
        {
          "name": "TypeV2",
          "description": "Type V2.",
          "value": "TYPE_V2"
        }
      ]
    },
    "google-native:contactcenterinsights/v1:PhraseMatcherRoleMatch": {
      "description": "The role whose utterances the phrase matcher should be matched against. If the role is ROLE_UNSPECIFIED it will be matched against any utterances in the transcript.",
      "type": "string",
      "enum": [
        {
          "name": "RoleUnspecified",
          "description": "Participant's role is not set.",
          "value": "ROLE_UNSPECIFIED"
        },
        {
          "name": "HumanAgent",
          "description": "Participant is a human agent.",
          "value": "HUMAN_AGENT"
        },
        {
          "name": "AutomatedAgent",
          "description": "Participant is an automated agent.",
          "value": "AUTOMATED_AGENT"
        },
        {
          "name": "EndUser",
          "description": "Participant is an end user who conversed with the contact center.",
          "value": "END_USER"
        },
        {
          "name": "AnyAgent",
          "description": "Participant is either a human or automated agent.",
          "value": "ANY_AGENT"
        }
      ]
    },
    "google-native:contactcenterinsights/v1:PhraseMatcherType": {
      "description": "Required. The type of this phrase matcher.",
      "type": "string",
      "enum": [
        {
          "name": "PhraseMatcherTypeUnspecified",
          "description": "Unspecified.",
          "value": "PHRASE_MATCHER_TYPE_UNSPECIFIED"
        },
        {
          "name": "AllOf",
          "description": "Must meet all phrase match rule groups or there is no match.",
          "value": "ALL_OF"
        },
        {
          "name": "AnyOf",
          "description": "If any of the phrase match rule groups are met, there is a match.",
          "value": "ANY_OF"
        }
      ]
    },
    "google-native:container/v1:AcceleratorConfig": {
      "description": "AcceleratorConfig represents a Hardware Accelerator request.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "The number of the accelerator cards exposed to an instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)"
        },
        "gpuDriverInstallationConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GPUDriverInstallationConfig",
          "description": "The configuration for auto installation of GPU driver."
        },
        "gpuPartitionSize": {
          "type": "string",
          "description": "Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning)."
        },
        "gpuSharingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GPUSharingConfig",
          "description": "The configuration for GPU sharing options."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AcceleratorConfigResponse": {
      "description": "AcceleratorConfig represents a Hardware Accelerator request.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "The number of the accelerator cards exposed to an instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)"
        },
        "gpuDriverInstallationConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GPUDriverInstallationConfigResponse",
          "description": "The configuration for auto installation of GPU driver."
        },
        "gpuPartitionSize": {
          "type": "string",
          "description": "Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning)."
        },
        "gpuSharingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GPUSharingConfigResponse",
          "description": "The configuration for GPU sharing options."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType",
        "gpuDriverInstallationConfig",
        "gpuPartitionSize",
        "gpuSharingConfig"
      ]
    },
    "google-native:container/v1:AdditionalNodeNetworkConfig": {
      "description": "AdditionalNodeNetworkConfig is the configuration for additional node networks within the NodeNetworkConfig message",
      "properties": {
        "network": {
          "type": "string",
          "description": "Name of the VPC where the additional interface belongs"
        },
        "subnetwork": {
          "type": "string",
          "description": "Name of the subnetwork where the additional interface belongs"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AdditionalNodeNetworkConfigResponse": {
      "description": "AdditionalNodeNetworkConfig is the configuration for additional node networks within the NodeNetworkConfig message",
      "properties": {
        "network": {
          "type": "string",
          "description": "Name of the VPC where the additional interface belongs"
        },
        "subnetwork": {
          "type": "string",
          "description": "Name of the subnetwork where the additional interface belongs"
        }
      },
      "type": "object",
      "required": [
        "network",
        "subnetwork"
      ]
    },
    "google-native:container/v1:AdditionalPodNetworkConfig": {
      "description": "AdditionalPodNetworkConfig is the configuration for additional pod networks within the NodeNetworkConfig message",
      "properties": {
        "maxPodsPerNode": {
          "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraint",
          "description": "The maximum number of pods per node which use this pod network"
        },
        "secondaryPodRange": {
          "type": "string",
          "description": "The name of the secondary range on the subnet which provides IP address for this pod range"
        },
        "subnetwork": {
          "type": "string",
          "description": "Name of the subnetwork where the additional pod network belongs"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AdditionalPodNetworkConfigResponse": {
      "description": "AdditionalPodNetworkConfig is the configuration for additional pod networks within the NodeNetworkConfig message",
      "properties": {
        "maxPodsPerNode": {
          "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraintResponse",
          "description": "The maximum number of pods per node which use this pod network"
        },
        "secondaryPodRange": {
          "type": "string",
          "description": "The name of the secondary range on the subnet which provides IP address for this pod range"
        },
        "subnetwork": {
          "type": "string",
          "description": "Name of the subnetwork where the additional pod network belongs"
        }
      },
      "type": "object",
      "required": [
        "maxPodsPerNode",
        "secondaryPodRange",
        "subnetwork"
      ]
    },
    "google-native:container/v1:AdditionalPodRangesConfig": {
      "description": "AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message.",
      "properties": {
        "podRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Name for pod secondary ipv4 range which has the actual range defined ahead."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AdditionalPodRangesConfigResponse": {
      "description": "AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message.",
      "properties": {
        "podRangeInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:RangeInfoResponse"
          },
          "description": "[Output only] Information for additional pod range."
        },
        "podRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Name for pod secondary ipv4 range which has the actual range defined ahead."
        }
      },
      "type": "object",
      "required": [
        "podRangeInfo",
        "podRangeNames"
      ]
    },
    "google-native:container/v1:AddonsConfig": {
      "description": "Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality.",
      "properties": {
        "cloudRunConfig": {
          "$ref": "#/types/google-native:container%2Fv1:CloudRunConfig",
          "description": "Configuration for the Cloud Run addon, which allows the user to use a managed Knative service."
        },
        "configConnectorConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ConfigConnectorConfig",
          "description": "Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API"
        },
        "dnsCacheConfig": {
          "$ref": "#/types/google-native:container%2Fv1:DnsCacheConfig",
          "description": "Configuration for NodeLocalDNS, a dns cache running on cluster nodes"
        },
        "gcePersistentDiskCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcePersistentDiskCsiDriverConfig",
          "description": "Configuration for the Compute Engine Persistent Disk CSI driver."
        },
        "gcpFilestoreCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcpFilestoreCsiDriverConfig",
          "description": "Configuration for the GCP Filestore CSI driver."
        },
        "gcsFuseCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcsFuseCsiDriverConfig",
          "description": "Configuration for the Cloud Storage Fuse CSI driver."
        },
        "gkeBackupAgentConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GkeBackupAgentConfig",
          "description": "Configuration for the Backup for GKE agent addon."
        },
        "horizontalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:HorizontalPodAutoscaling",
          "description": "Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods."
        },
        "httpLoadBalancing": {
          "$ref": "#/types/google-native:container%2Fv1:HttpLoadBalancing",
          "description": "Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster."
        },
        "kubernetesDashboard": {
          "$ref": "#/types/google-native:container%2Fv1:KubernetesDashboard",
          "description": "Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards"
        },
        "networkPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkPolicyConfig",
          "description": "Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AddonsConfigResponse": {
      "description": "Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality.",
      "properties": {
        "cloudRunConfig": {
          "$ref": "#/types/google-native:container%2Fv1:CloudRunConfigResponse",
          "description": "Configuration for the Cloud Run addon, which allows the user to use a managed Knative service."
        },
        "configConnectorConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ConfigConnectorConfigResponse",
          "description": "Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API"
        },
        "dnsCacheConfig": {
          "$ref": "#/types/google-native:container%2Fv1:DnsCacheConfigResponse",
          "description": "Configuration for NodeLocalDNS, a dns cache running on cluster nodes"
        },
        "gcePersistentDiskCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcePersistentDiskCsiDriverConfigResponse",
          "description": "Configuration for the Compute Engine Persistent Disk CSI driver."
        },
        "gcpFilestoreCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcpFilestoreCsiDriverConfigResponse",
          "description": "Configuration for the GCP Filestore CSI driver."
        },
        "gcsFuseCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcsFuseCsiDriverConfigResponse",
          "description": "Configuration for the Cloud Storage Fuse CSI driver."
        },
        "gkeBackupAgentConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GkeBackupAgentConfigResponse",
          "description": "Configuration for the Backup for GKE agent addon."
        },
        "horizontalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:HorizontalPodAutoscalingResponse",
          "description": "Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods."
        },
        "httpLoadBalancing": {
          "$ref": "#/types/google-native:container%2Fv1:HttpLoadBalancingResponse",
          "description": "Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster."
        },
        "kubernetesDashboard": {
          "$ref": "#/types/google-native:container%2Fv1:KubernetesDashboardResponse",
          "description": "Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards"
        },
        "networkPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkPolicyConfigResponse",
          "description": "Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes."
        }
      },
      "type": "object",
      "required": [
        "cloudRunConfig",
        "configConnectorConfig",
        "dnsCacheConfig",
        "gcePersistentDiskCsiDriverConfig",
        "gcpFilestoreCsiDriverConfig",
        "gcsFuseCsiDriverConfig",
        "gkeBackupAgentConfig",
        "horizontalPodAutoscaling",
        "httpLoadBalancing",
        "kubernetesDashboard",
        "networkPolicyConfig"
      ]
    },
    "google-native:container/v1:AdvancedDatapathObservabilityConfig": {
      "description": "AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath.",
      "properties": {
        "enableMetrics": {
          "type": "boolean",
          "description": "Expose flow metrics on nodes"
        },
        "relayMode": {
          "$ref": "#/types/google-native:container%2Fv1:AdvancedDatapathObservabilityConfigRelayMode",
          "description": "Method used to make Relay available"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AdvancedDatapathObservabilityConfigRelayMode": {
      "description": "Method used to make Relay available",
      "type": "string",
      "enum": [
        {
          "name": "RelayModeUnspecified",
          "description": "Default value. This shouldn't be used.",
          "value": "RELAY_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "disabled",
          "value": "DISABLED"
        },
        {
          "name": "InternalVpcLb",
          "description": "exposed via internal load balancer",
          "value": "INTERNAL_VPC_LB"
        },
        {
          "name": "ExternalLb",
          "description": "exposed via external load balancer",
          "value": "EXTERNAL_LB"
        }
      ]
    },
    "google-native:container/v1:AdvancedDatapathObservabilityConfigResponse": {
      "description": "AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath.",
      "properties": {
        "enableMetrics": {
          "type": "boolean",
          "description": "Expose flow metrics on nodes"
        },
        "relayMode": {
          "type": "string",
          "description": "Method used to make Relay available"
        }
      },
      "type": "object",
      "required": [
        "enableMetrics",
        "relayMode"
      ]
    },
    "google-native:container/v1:AdvancedMachineFeatures": {
      "description": "Specifies options for controlling advanced machine features.",
      "properties": {
        "threadsPerCore": {
          "type": "string",
          "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."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AdvancedMachineFeaturesResponse": {
      "description": "Specifies options for controlling advanced machine features.",
      "properties": {
        "threadsPerCore": {
          "type": "string",
          "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."
        }
      },
      "type": "object",
      "required": [
        "threadsPerCore"
      ]
    },
    "google-native:container/v1:AuthenticatorGroupsConfig": {
      "description": "Configuration for returning group information from authenticators.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether this cluster should return group membership lookups during authentication using a group of security groups."
        },
        "securityGroup": {
          "type": "string",
          "description": "The name of the security group-of-groups to be used. Only relevant if enabled = true."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AuthenticatorGroupsConfigResponse": {
      "description": "Configuration for returning group information from authenticators.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether this cluster should return group membership lookups during authentication using a group of security groups."
        },
        "securityGroup": {
          "type": "string",
          "description": "The name of the security group-of-groups to be used. Only relevant if enabled = true."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "securityGroup"
      ]
    },
    "google-native:container/v1:AutoUpgradeOptions": {
      "description": "AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed.",
      "type": "object"
    },
    "google-native:container/v1:AutoUpgradeOptionsResponse": {
      "description": "AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed.",
      "properties": {
        "autoUpgradeStartTime": {
          "type": "string",
          "description": "[Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "description": {
          "type": "string",
          "description": "[Output only] This field is set when upgrades are about to commence with the description of the upgrade."
        }
      },
      "type": "object",
      "required": [
        "autoUpgradeStartTime",
        "description"
      ]
    },
    "google-native:container/v1:Autopilot": {
      "description": "Autopilot is the configuration for Autopilot settings on the cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable Autopilot"
        },
        "workloadPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadPolicyConfig",
          "description": "Workload policy configuration for Autopilot."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AutopilotResponse": {
      "description": "Autopilot is the configuration for Autopilot settings on the cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable Autopilot"
        },
        "workloadPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadPolicyConfigResponse",
          "description": "Workload policy configuration for Autopilot."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "workloadPolicyConfig"
      ]
    },
    "google-native:container/v1:AutoprovisioningNodePoolDefaults": {
      "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.",
      "properties": {
        "bootDiskKmsKey": {
          "type": "string",
          "description": "The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption"
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') If unspecified, the default disk type is 'pd-standard'"
        },
        "imageType": {
          "type": "string",
          "description": "The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types."
        },
        "insecureKubeletReadonlyPortEnabled": {
          "type": "boolean",
          "description": "Enable or disable Kubelet read only port."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1:NodeManagement",
          "description": "Specifies the node management options for NAP created node-pools."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass \"automatic\" as field value.",
          "deprecationMessage": "Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass \"automatic\" as field value."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes that are used by NAP when creating node pools."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The Google Cloud Platform Service Account to be used by the node VMs."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ShieldedInstanceConfig",
          "description": "Shielded Instance options."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1:UpgradeSettings",
          "description": "Specifies the upgrade settings for NAP created node pools"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:AutoprovisioningNodePoolDefaultsResponse": {
      "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.",
      "properties": {
        "bootDiskKmsKey": {
          "type": "string",
          "description": "The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption"
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') If unspecified, the default disk type is 'pd-standard'"
        },
        "imageType": {
          "type": "string",
          "description": "The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types."
        },
        "insecureKubeletReadonlyPortEnabled": {
          "type": "boolean",
          "description": "Enable or disable Kubelet read only port."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1:NodeManagementResponse",
          "description": "Specifies the node management options for NAP created node-pools."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass \"automatic\" as field value.",
          "deprecationMessage": "Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass \"automatic\" as field value."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes that are used by NAP when creating node pools."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The Google Cloud Platform Service Account to be used by the node VMs."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ShieldedInstanceConfigResponse",
          "description": "Shielded Instance options."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1:UpgradeSettingsResponse",
          "description": "Specifies the upgrade settings for NAP created node pools"
        }
      },
      "type": "object",
      "required": [
        "bootDiskKmsKey",
        "diskSizeGb",
        "diskType",
        "imageType",
        "insecureKubeletReadonlyPortEnabled",
        "management",
        "minCpuPlatform",
        "oauthScopes",
        "serviceAccount",
        "shieldedInstanceConfig",
        "upgradeSettings"
      ]
    },
    "google-native:container/v1:BestEffortProvisioning": {
      "description": "Best effort provisioning.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "When this is enabled, cluster/node pool creations will ignore non-fatal errors like stockout to best provision as many nodes as possible right now and eventually bring up all target number of nodes"
        },
        "minProvisionNodes": {
          "type": "integer",
          "description": "Minimum number of nodes to be provisioned to be considered as succeeded, and the rest of nodes will be provisioned gradually and eventually when stockout issue has been resolved."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:BestEffortProvisioningResponse": {
      "description": "Best effort provisioning.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "When this is enabled, cluster/node pool creations will ignore non-fatal errors like stockout to best provision as many nodes as possible right now and eventually bring up all target number of nodes"
        },
        "minProvisionNodes": {
          "type": "integer",
          "description": "Minimum number of nodes to be provisioned to be considered as succeeded, and the rest of nodes will be provisioned gradually and eventually when stockout issue has been resolved."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "minProvisionNodes"
      ]
    },
    "google-native:container/v1:BigQueryDestination": {
      "description": "Parameters for using BigQuery as the destination of resource usage export.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of a BigQuery Dataset."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:BigQueryDestinationResponse": {
      "description": "Parameters for using BigQuery as the destination of resource usage export.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of a BigQuery Dataset."
        }
      },
      "type": "object",
      "required": [
        "datasetId"
      ]
    },
    "google-native:container/v1:BinaryAuthorization": {
      "description": "Configuration for Binary Authorization.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.",
          "deprecationMessage": "This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored."
        },
        "evaluationMode": {
          "$ref": "#/types/google-native:container%2Fv1:BinaryAuthorizationEvaluationMode",
          "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:BinaryAuthorizationEvaluationMode": {
      "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.",
      "type": "string",
      "enum": [
        {
          "name": "EvaluationModeUnspecified",
          "description": "Default value",
          "value": "EVALUATION_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable BinaryAuthorization",
          "value": "DISABLED"
        },
        {
          "name": "ProjectSingletonPolicyEnforce",
          "description": "Enforce Kubernetes admission requests with BinaryAuthorization using the project's singleton policy. This is equivalent to setting the enabled boolean to true.",
          "value": "PROJECT_SINGLETON_POLICY_ENFORCE"
        }
      ]
    },
    "google-native:container/v1:BinaryAuthorizationResponse": {
      "description": "Configuration for Binary Authorization.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.",
          "deprecationMessage": "This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored."
        },
        "evaluationMode": {
          "type": "string",
          "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "evaluationMode"
      ]
    },
    "google-native:container/v1:BlueGreenInfoResponse": {
      "description": "Information relevant to blue-green upgrade.",
      "properties": {
        "blueInstanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with blue pool."
        },
        "bluePoolDeletionStartTime": {
          "type": "string",
          "description": "Time to start deleting blue pool to complete blue-green upgrade, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "greenInstanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with green pool."
        },
        "greenPoolVersion": {
          "type": "string",
          "description": "Version of green pool."
        },
        "phase": {
          "type": "string",
          "description": "Current blue-green upgrade phase."
        }
      },
      "type": "object",
      "required": [
        "blueInstanceGroupUrls",
        "bluePoolDeletionStartTime",
        "greenInstanceGroupUrls",
        "greenPoolVersion",
        "phase"
      ]
    },
    "google-native:container/v1:BlueGreenSettings": {
      "description": "Settings for blue-green upgrade.",
      "properties": {
        "nodePoolSoakDuration": {
          "type": "string",
          "description": "Time needed after draining entire blue pool. After this period, blue pool will be cleaned up."
        },
        "standardRolloutPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:StandardRolloutPolicy",
          "description": "Standard policy for the blue-green upgrade."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:BlueGreenSettingsResponse": {
      "description": "Settings for blue-green upgrade.",
      "properties": {
        "nodePoolSoakDuration": {
          "type": "string",
          "description": "Time needed after draining entire blue pool. After this period, blue pool will be cleaned up."
        },
        "standardRolloutPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:StandardRolloutPolicyResponse",
          "description": "Standard policy for the blue-green upgrade."
        }
      },
      "type": "object",
      "required": [
        "nodePoolSoakDuration",
        "standardRolloutPolicy"
      ]
    },
    "google-native:container/v1:CidrBlock": {
      "description": "CidrBlock contains an optional name and one CIDR block.",
      "properties": {
        "cidrBlock": {
          "type": "string",
          "description": "cidr_block must be specified in CIDR notation."
        },
        "displayName": {
          "type": "string",
          "description": "display_name is an optional field for users to identify CIDR blocks."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:CidrBlockResponse": {
      "description": "CidrBlock contains an optional name and one CIDR block.",
      "properties": {
        "cidrBlock": {
          "type": "string",
          "description": "cidr_block must be specified in CIDR notation."
        },
        "displayName": {
          "type": "string",
          "description": "display_name is an optional field for users to identify CIDR blocks."
        }
      },
      "type": "object",
      "required": [
        "cidrBlock",
        "displayName"
      ]
    },
    "google-native:container/v1:ClientCertificateConfig": {
      "description": "Configuration for client certificates on the cluster.",
      "properties": {
        "issueClientCertificate": {
          "type": "boolean",
          "description": "Issue a client certificate."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ClientCertificateConfigResponse": {
      "description": "Configuration for client certificates on the cluster.",
      "properties": {
        "issueClientCertificate": {
          "type": "boolean",
          "description": "Issue a client certificate."
        }
      },
      "type": "object",
      "required": [
        "issueClientCertificate"
      ]
    },
    "google-native:container/v1:CloudRunConfig": {
      "description": "Configuration options for the Cloud Run feature.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether Cloud Run addon is enabled for this cluster."
        },
        "loadBalancerType": {
          "$ref": "#/types/google-native:container%2Fv1:CloudRunConfigLoadBalancerType",
          "description": "Which load balancer type is installed for Cloud Run."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:CloudRunConfigLoadBalancerType": {
      "description": "Which load balancer type is installed for Cloud Run.",
      "type": "string",
      "enum": [
        {
          "name": "LoadBalancerTypeUnspecified",
          "description": "Load balancer type for Cloud Run is unspecified.",
          "value": "LOAD_BALANCER_TYPE_UNSPECIFIED"
        },
        {
          "name": "LoadBalancerTypeExternal",
          "description": "Install external load balancer for Cloud Run.",
          "value": "LOAD_BALANCER_TYPE_EXTERNAL"
        },
        {
          "name": "LoadBalancerTypeInternal",
          "description": "Install internal load balancer for Cloud Run.",
          "value": "LOAD_BALANCER_TYPE_INTERNAL"
        }
      ]
    },
    "google-native:container/v1:CloudRunConfigResponse": {
      "description": "Configuration options for the Cloud Run feature.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether Cloud Run addon is enabled for this cluster."
        },
        "loadBalancerType": {
          "type": "string",
          "description": "Which load balancer type is installed for Cloud Run."
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "loadBalancerType"
      ]
    },
    "google-native:container/v1:ClusterAutoscaling": {
      "description": "ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs.",
      "properties": {
        "autoprovisioningLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes can be created by NAP."
        },
        "autoprovisioningNodePoolDefaults": {
          "$ref": "#/types/google-native:container%2Fv1:AutoprovisioningNodePoolDefaults",
          "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP."
        },
        "autoscalingProfile": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterAutoscalingAutoscalingProfile",
          "description": "Defines autoscaling behaviour."
        },
        "enableNodeAutoprovisioning": {
          "type": "boolean",
          "description": "Enables automatic node pool creation and deletion."
        },
        "resourceLimits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:ResourceLimit"
          },
          "description": "Contains global constraints regarding minimum and maximum amount of resources in the cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ClusterAutoscalingAutoscalingProfile": {
      "description": "Defines autoscaling behaviour.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileUnspecified",
          "description": "No change to autoscaling configuration.",
          "value": "PROFILE_UNSPECIFIED"
        },
        {
          "name": "OptimizeUtilization",
          "description": "Prioritize optimizing utilization of resources.",
          "value": "OPTIMIZE_UTILIZATION"
        },
        {
          "name": "Balanced",
          "description": "Use default (balanced) autoscaling configuration.",
          "value": "BALANCED"
        }
      ]
    },
    "google-native:container/v1:ClusterAutoscalingResponse": {
      "description": "ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs.",
      "properties": {
        "autoprovisioningLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes can be created by NAP."
        },
        "autoprovisioningNodePoolDefaults": {
          "$ref": "#/types/google-native:container%2Fv1:AutoprovisioningNodePoolDefaultsResponse",
          "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP."
        },
        "autoscalingProfile": {
          "type": "string",
          "description": "Defines autoscaling behaviour."
        },
        "enableNodeAutoprovisioning": {
          "type": "boolean",
          "description": "Enables automatic node pool creation and deletion."
        },
        "resourceLimits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:ResourceLimitResponse"
          },
          "description": "Contains global constraints regarding minimum and maximum amount of resources in the cluster."
        }
      },
      "type": "object",
      "required": [
        "autoprovisioningLocations",
        "autoprovisioningNodePoolDefaults",
        "autoscalingProfile",
        "enableNodeAutoprovisioning",
        "resourceLimits"
      ]
    },
    "google-native:container/v1:ClusterNetworkPerformanceConfig": {
      "description": "Configuration of network bandwidth tiers",
      "properties": {
        "totalEgressBandwidthTier": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterNetworkPerformanceConfigTotalEgressBandwidthTier",
          "description": "Specifies the total network bandwidth tier for NodePools in the cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ClusterNetworkPerformanceConfigResponse": {
      "description": "Configuration of network bandwidth tiers",
      "properties": {
        "totalEgressBandwidthTier": {
          "type": "string",
          "description": "Specifies the total network bandwidth tier for NodePools in the cluster."
        }
      },
      "type": "object",
      "required": [
        "totalEgressBandwidthTier"
      ]
    },
    "google-native:container/v1:ClusterNetworkPerformanceConfigTotalEgressBandwidthTier": {
      "description": "Specifies the total network bandwidth tier for NodePools in the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Default value",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Tier1",
          "description": "Higher bandwidth, actual values based on VM size.",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:container/v1:ClusterUpdate": {
      "description": "ClusterUpdate describes an update to the cluster. Exactly one update can be applied to a cluster with each request, so at most one field can be provided.",
      "properties": {
        "additionalPodRangesConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AdditionalPodRangesConfig",
          "description": "The additional pod ranges to be added to the cluster. These pod ranges can be used by node pools to allocate pod IPs."
        },
        "desiredAddonsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AddonsConfig",
          "description": "Configurations for the various addons available to run in the cluster."
        },
        "desiredAuthenticatorGroupsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AuthenticatorGroupsConfig",
          "description": "The desired authenticator groups config for the cluster."
        },
        "desiredAutopilotWorkloadPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadPolicyConfig",
          "description": "The desired workload policy configuration for the autopilot cluster."
        },
        "desiredBinaryAuthorization": {
          "$ref": "#/types/google-native:container%2Fv1:BinaryAuthorization",
          "description": "The desired configuration options for the Binary Authorization feature."
        },
        "desiredClusterAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterAutoscaling",
          "description": "Cluster-level autoscaling configuration."
        },
        "desiredCostManagementConfig": {
          "$ref": "#/types/google-native:container%2Fv1:CostManagementConfig",
          "description": "The desired configuration for the fine-grained cost management feature."
        },
        "desiredDatabaseEncryption": {
          "$ref": "#/types/google-native:container%2Fv1:DatabaseEncryption",
          "description": "Configuration of etcd encryption."
        },
        "desiredDatapathProvider": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterUpdateDesiredDatapathProvider",
          "description": "The desired datapath provider for the cluster."
        },
        "desiredDefaultSnatStatus": {
          "$ref": "#/types/google-native:container%2Fv1:DefaultSnatStatus",
          "description": "The desired status of whether to disable default sNAT for this cluster."
        },
        "desiredDnsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:DNSConfig",
          "description": "DNSConfig contains clusterDNS config for this cluster."
        },
        "desiredEnableFqdnNetworkPolicy": {
          "type": "boolean",
          "description": "Enable/Disable FQDN Network Policy for the cluster."
        },
        "desiredEnablePrivateEndpoint": {
          "type": "boolean",
          "description": "Enable/Disable private endpoint for the cluster's master."
        },
        "desiredFleet": {
          "$ref": "#/types/google-native:container%2Fv1:Fleet",
          "description": "The desired fleet configuration for the cluster."
        },
        "desiredGatewayApiConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GatewayAPIConfig",
          "description": "The desired config of Gateway API on this cluster."
        },
        "desiredGcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcfsConfig",
          "description": "The desired GCFS config for the cluster"
        },
        "desiredIdentityServiceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:IdentityServiceConfig",
          "description": "The desired Identity Service component configuration."
        },
        "desiredImageType": {
          "type": "string",
          "description": "The desired image type for the node pool. NOTE: Set the \"desired_node_pool\" field as well."
        },
        "desiredIntraNodeVisibilityConfig": {
          "$ref": "#/types/google-native:container%2Fv1:IntraNodeVisibilityConfig",
          "description": "The desired config of Intra-node visibility."
        },
        "desiredK8sBetaApis": {
          "$ref": "#/types/google-native:container%2Fv1:K8sBetaAPIConfig",
          "description": "Desired Beta APIs to be enabled for cluster."
        },
        "desiredL4ilbSubsettingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ILBSubsettingConfig",
          "description": "The desired L4 Internal Load Balancer Subsetting configuration."
        },
        "desiredLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The desired list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes should be located. This list must always include the cluster's primary zone. Warning: changing cluster locations will update the locations of all node pools and will result in nodes being added and/or removed."
        },
        "desiredLoggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LoggingConfig",
          "description": "The desired logging configuration."
        },
        "desiredLoggingService": {
          "type": "string",
          "description": "The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions."
        },
        "desiredMasterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:container%2Fv1:MasterAuthorizedNetworksConfig",
          "description": "The desired configuration options for master authorized networks feature."
        },
        "desiredMasterVersion": {
          "type": "string",
          "description": "The Kubernetes version to change the master to. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"-\": picks the default Kubernetes version"
        },
        "desiredMeshCertificates": {
          "$ref": "#/types/google-native:container%2Fv1:MeshCertificates",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "desiredMonitoringConfig": {
          "$ref": "#/types/google-native:container%2Fv1:MonitoringConfig",
          "description": "The desired monitoring configuration."
        },
        "desiredMonitoringService": {
          "type": "string",
          "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions."
        },
        "desiredNetworkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterNetworkPerformanceConfig",
          "description": "The desired network performance config."
        },
        "desiredNodePoolAutoConfigNetworkTags": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkTags",
          "description": "The desired network tags that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
        },
        "desiredNodePoolAutoConfigResourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1:ResourceManagerTags",
          "description": "The desired resource manager tags that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
        },
        "desiredNodePoolAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoscaling",
          "description": "Autoscaler configuration for the node pool specified in desired_node_pool_id. If there is only one pool in the cluster and desired_node_pool_id is not provided then the change applies to that single node pool."
        },
        "desiredNodePoolId": {
          "type": "string",
          "description": "The node pool to be upgraded. This field is mandatory if \"desired_node_version\", \"desired_image_family\" or \"desired_node_pool_autoscaling\" is specified and there is more than one node pool on the cluster."
        },
        "desiredNodePoolLoggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolLoggingConfig",
          "description": "The desired node pool logging configuration defaults for the cluster."
        },
        "desiredNodeVersion": {
          "type": "string",
          "description": "The Kubernetes version to change the nodes to (typically an upgrade). Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"-\": picks the Kubernetes master version"
        },
        "desiredNotificationConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NotificationConfig",
          "description": "The desired notification configuration."
        },
        "desiredParentProductConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ParentProductConfig",
          "description": "The desired parent product config for the cluster."
        },
        "desiredPrivateClusterConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PrivateClusterConfig",
          "description": "The desired private cluster configuration."
        },
        "desiredPrivateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterUpdateDesiredPrivateIpv6GoogleAccess",
          "description": "The desired state of IPv6 connectivity to Google Services."
        },
        "desiredReleaseChannel": {
          "$ref": "#/types/google-native:container%2Fv1:ReleaseChannel",
          "description": "The desired release channel configuration."
        },
        "desiredResourceUsageExportConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ResourceUsageExportConfig",
          "description": "The desired configuration for exporting resource usage."
        },
        "desiredSecurityPostureConfig": {
          "$ref": "#/types/google-native:container%2Fv1:SecurityPostureConfig",
          "description": "Enable/Disable Security Posture API features for the cluster."
        },
        "desiredServiceExternalIpsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ServiceExternalIPsConfig",
          "description": "ServiceExternalIPsConfig specifies the config for the use of Services with ExternalIPs field."
        },
        "desiredShieldedNodes": {
          "$ref": "#/types/google-native:container%2Fv1:ShieldedNodes",
          "description": "Configuration for Shielded Nodes."
        },
        "desiredStackType": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterUpdateDesiredStackType",
          "description": "The desired stack type of the cluster. If a stack type is provided and does not match the current stack type of the cluster, update will attempt to change the stack type to the new type."
        },
        "desiredVerticalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:VerticalPodAutoscaling",
          "description": "Cluster-level Vertical Pod Autoscaling configuration."
        },
        "desiredWorkloadIdentityConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadIdentityConfig",
          "description": "Configuration for Workload Identity."
        },
        "enableK8sBetaApis": {
          "$ref": "#/types/google-native:container%2Fv1:K8sBetaAPIConfig",
          "description": "Kubernetes open source beta apis enabled on the cluster. Only beta apis"
        },
        "etag": {
          "type": "string",
          "description": "The current etag of the cluster. If an etag is provided and does not match the current etag of the cluster, update will be blocked and an ABORTED error will be returned."
        },
        "removedAdditionalPodRangesConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AdditionalPodRangesConfig",
          "description": "The additional pod ranges that are to be removed from the cluster. The pod ranges specified here must have been specified earlier in the 'additional_pod_ranges_config' argument."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ClusterUpdateDesiredDatapathProvider": {
      "description": "The desired datapath provider for the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "DatapathProviderUnspecified",
          "description": "Default value.",
          "value": "DATAPATH_PROVIDER_UNSPECIFIED"
        },
        {
          "name": "LegacyDatapath",
          "description": "Use the IPTables implementation based on kube-proxy.",
          "value": "LEGACY_DATAPATH"
        },
        {
          "name": "AdvancedDatapath",
          "description": "Use the eBPF based GKE Dataplane V2 with additional features. See the [GKE Dataplane V2 documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2) for more.",
          "value": "ADVANCED_DATAPATH"
        }
      ]
    },
    "google-native:container/v1:ClusterUpdateDesiredPrivateIpv6GoogleAccess": {
      "description": "The desired state of IPv6 connectivity to Google Services.",
      "type": "string",
      "enum": [
        {
          "name": "PrivateIpv6GoogleAccessUnspecified",
          "description": "Default value. Same as DISABLED",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED"
        },
        {
          "name": "PrivateIpv6GoogleAccessDisabled",
          "description": "No private access to or from Google Services",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED"
        },
        {
          "name": "PrivateIpv6GoogleAccessToGoogle",
          "description": "Enables private IPv6 access to Google Services from GKE",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE"
        },
        {
          "name": "PrivateIpv6GoogleAccessBidirectional",
          "description": "Enables private IPv6 access to and from Google Services",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL"
        }
      ]
    },
    "google-native:container/v1:ClusterUpdateDesiredStackType": {
      "description": "The desired stack type of the cluster. If a stack type is provided and does not match the current stack type of the cluster, update will attempt to change the stack type to the new type.",
      "type": "string",
      "enum": [
        {
          "name": "StackTypeUnspecified",
          "description": "Default value, will be defaulted as IPV4 only",
          "value": "STACK_TYPE_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "Cluster is IPV4 only",
          "value": "IPV4"
        },
        {
          "name": "Ipv4Ipv6",
          "description": "Cluster can use both IPv4 and IPv6",
          "value": "IPV4_IPV6"
        }
      ]
    },
    "google-native:container/v1:ConfidentialNodes": {
      "description": "ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Confidential Nodes feature is enabled."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ConfidentialNodesResponse": {
      "description": "ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Confidential Nodes feature is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:ConfigConnectorConfig": {
      "description": "Configuration options for the Config Connector add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Cloud Connector is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ConfigConnectorConfigResponse": {
      "description": "Configuration options for the Config Connector add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Cloud Connector is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:ConsumptionMeteringConfig": {
      "description": "Parameters for controlling consumption metering.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ConsumptionMeteringConfigResponse": {
      "description": "Parameters for controlling consumption metering.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:CostManagementConfig": {
      "description": "Configuration for fine-grained cost management feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the feature is enabled or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:CostManagementConfigResponse": {
      "description": "Configuration for fine-grained cost management feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the feature is enabled or not."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:DNSConfig": {
      "description": "DNSConfig contains the desired set of options for configuring clusterDNS.",
      "properties": {
        "clusterDns": {
          "$ref": "#/types/google-native:container%2Fv1:DNSConfigClusterDns",
          "description": "cluster_dns indicates which in-cluster DNS provider should be used."
        },
        "clusterDnsDomain": {
          "type": "string",
          "description": "cluster_dns_domain is the suffix used for all cluster service records."
        },
        "clusterDnsScope": {
          "$ref": "#/types/google-native:container%2Fv1:DNSConfigClusterDnsScope",
          "description": "cluster_dns_scope indicates the scope of access to cluster DNS records."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:DNSConfigClusterDns": {
      "description": "cluster_dns indicates which in-cluster DNS provider should be used.",
      "type": "string",
      "enum": [
        {
          "name": "ProviderUnspecified",
          "description": "Default value",
          "value": "PROVIDER_UNSPECIFIED"
        },
        {
          "name": "PlatformDefault",
          "description": "Use GKE default DNS provider(kube-dns) for DNS resolution.",
          "value": "PLATFORM_DEFAULT"
        },
        {
          "name": "CloudDns",
          "description": "Use CloudDNS for DNS resolution.",
          "value": "CLOUD_DNS"
        },
        {
          "name": "KubeDns",
          "description": "Use KubeDNS for DNS resolution.",
          "value": "KUBE_DNS"
        }
      ]
    },
    "google-native:container/v1:DNSConfigClusterDnsScope": {
      "description": "cluster_dns_scope indicates the scope of access to cluster DNS records.",
      "type": "string",
      "enum": [
        {
          "name": "DnsScopeUnspecified",
          "description": "Default value, will be inferred as cluster scope.",
          "value": "DNS_SCOPE_UNSPECIFIED"
        },
        {
          "name": "ClusterScope",
          "description": "DNS records are accessible from within the cluster.",
          "value": "CLUSTER_SCOPE"
        },
        {
          "name": "VpcScope",
          "description": "DNS records are accessible from within the VPC.",
          "value": "VPC_SCOPE"
        }
      ]
    },
    "google-native:container/v1:DNSConfigResponse": {
      "description": "DNSConfig contains the desired set of options for configuring clusterDNS.",
      "properties": {
        "clusterDns": {
          "type": "string",
          "description": "cluster_dns indicates which in-cluster DNS provider should be used."
        },
        "clusterDnsDomain": {
          "type": "string",
          "description": "cluster_dns_domain is the suffix used for all cluster service records."
        },
        "clusterDnsScope": {
          "type": "string",
          "description": "cluster_dns_scope indicates the scope of access to cluster DNS records."
        }
      },
      "type": "object",
      "required": [
        "clusterDns",
        "clusterDnsDomain",
        "clusterDnsScope"
      ]
    },
    "google-native:container/v1:DailyMaintenanceWindow": {
      "description": "Time window specified for daily maintenance operations.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format \"HH:MM\", where HH : [00-23] and MM : [00-59] GMT."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:DailyMaintenanceWindowResponse": {
      "description": "Time window specified for daily maintenance operations.",
      "properties": {
        "duration": {
          "type": "string",
          "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format \"PTnHnMnS\"."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format \"HH:MM\", where HH : [00-23] and MM : [00-59] GMT."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "startTime"
      ]
    },
    "google-native:container/v1:DatabaseEncryption": {
      "description": "Configuration of etcd encryption.",
      "properties": {
        "keyName": {
          "type": "string",
          "description": "Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key"
        },
        "state": {
          "$ref": "#/types/google-native:container%2Fv1:DatabaseEncryptionState",
          "description": "The desired state of etcd encryption."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:DatabaseEncryptionResponse": {
      "description": "Configuration of etcd encryption.",
      "properties": {
        "keyName": {
          "type": "string",
          "description": "Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key"
        },
        "state": {
          "type": "string",
          "description": "The desired state of etcd encryption."
        }
      },
      "type": "object",
      "required": [
        "keyName",
        "state"
      ]
    },
    "google-native:container/v1:DatabaseEncryptionState": {
      "description": "The desired state of etcd encryption.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "Should never be set",
          "value": "UNKNOWN"
        },
        {
          "name": "Encrypted",
          "description": "Secrets in etcd are encrypted.",
          "value": "ENCRYPTED"
        },
        {
          "name": "Decrypted",
          "description": "Secrets in etcd are stored in plain text (at etcd level) - this is unrelated to Compute Engine level full disk encryption.",
          "value": "DECRYPTED"
        }
      ]
    },
    "google-native:container/v1:DefaultSnatStatus": {
      "description": "DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Disables cluster default sNAT rules."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:DefaultSnatStatusResponse": {
      "description": "DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Disables cluster default sNAT rules."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1:DnsCacheConfig": {
      "description": "Configuration for NodeLocal DNSCache",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether NodeLocal DNSCache is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:DnsCacheConfigResponse": {
      "description": "Configuration for NodeLocal DNSCache",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether NodeLocal DNSCache is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:EnterpriseConfig": {
      "description": "EnterpriseConfig is the cluster enterprise configuration.",
      "type": "object"
    },
    "google-native:container/v1:EnterpriseConfigResponse": {
      "description": "EnterpriseConfig is the cluster enterprise configuration.",
      "properties": {
        "clusterTier": {
          "type": "string",
          "description": "[Output only] cluster_tier specifies the premium tier of the cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterTier"
      ]
    },
    "google-native:container/v1:EphemeralStorageLocalSsdConfig": {
      "description": "EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs.",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:EphemeralStorageLocalSsdConfigResponse": {
      "description": "EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs.",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object",
      "required": [
        "localSsdCount"
      ]
    },
    "google-native:container/v1:FastSocket": {
      "description": "Configuration of Fast Socket feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Fast Socket features are enabled in the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:FastSocketResponse": {
      "description": "Configuration of Fast Socket feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Fast Socket features are enabled in the node pool."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:Filter": {
      "description": "Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent",
      "properties": {
        "eventType": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:FilterEventTypeItem"
          },
          "description": "Event types to allowlist."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:FilterEventTypeItem": {
      "type": "string",
      "enum": [
        {
          "name": "EventTypeUnspecified",
          "description": "Not set, will be ignored.",
          "value": "EVENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "UpgradeAvailableEvent",
          "description": "Corresponds with UpgradeAvailableEvent.",
          "value": "UPGRADE_AVAILABLE_EVENT"
        },
        {
          "name": "UpgradeEvent",
          "description": "Corresponds with UpgradeEvent.",
          "value": "UPGRADE_EVENT"
        },
        {
          "name": "SecurityBulletinEvent",
          "description": "Corresponds with SecurityBulletinEvent.",
          "value": "SECURITY_BULLETIN_EVENT"
        }
      ]
    },
    "google-native:container/v1:FilterResponse": {
      "description": "Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent",
      "properties": {
        "eventType": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Event types to allowlist."
        }
      },
      "type": "object",
      "required": [
        "eventType"
      ]
    },
    "google-native:container/v1:Fleet": {
      "description": "Fleet is the fleet configuration for the cluster.",
      "properties": {
        "project": {
          "type": "string",
          "description": "The Fleet host project(project ID or project number) where this cluster will be registered to. This field cannot be changed after the cluster has been registered."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:FleetResponse": {
      "description": "Fleet is the fleet configuration for the cluster.",
      "properties": {
        "membership": {
          "type": "string",
          "description": "[Output only] The full resource name of the registered fleet membership of the cluster, in the format `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`."
        },
        "preRegistered": {
          "type": "boolean",
          "description": "[Output only] Whether the cluster has been registered through the fleet API."
        },
        "project": {
          "type": "string",
          "description": "The Fleet host project(project ID or project number) where this cluster will be registered to. This field cannot be changed after the cluster has been registered."
        }
      },
      "type": "object",
      "required": [
        "membership",
        "preRegistered",
        "project"
      ]
    },
    "google-native:container/v1:GPUDriverInstallationConfig": {
      "description": "GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed.",
      "properties": {
        "gpuDriverVersion": {
          "$ref": "#/types/google-native:container%2Fv1:GPUDriverInstallationConfigGpuDriverVersion",
          "description": "Mode for how the GPU driver is installed."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:GPUDriverInstallationConfigGpuDriverVersion": {
      "description": "Mode for how the GPU driver is installed.",
      "type": "string",
      "enum": [
        {
          "name": "GpuDriverVersionUnspecified",
          "description": "Default value is to not install any GPU driver.",
          "value": "GPU_DRIVER_VERSION_UNSPECIFIED"
        },
        {
          "name": "InstallationDisabled",
          "description": "Disable GPU driver auto installation and needs manual installation",
          "value": "INSTALLATION_DISABLED"
        },
        {
          "name": "Default",
          "description": "\"Default\" GPU driver in COS and Ubuntu.",
          "value": "DEFAULT"
        },
        {
          "name": "Latest",
          "description": "\"Latest\" GPU driver in COS.",
          "value": "LATEST"
        }
      ]
    },
    "google-native:container/v1:GPUDriverInstallationConfigResponse": {
      "description": "GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed.",
      "properties": {
        "gpuDriverVersion": {
          "type": "string",
          "description": "Mode for how the GPU driver is installed."
        }
      },
      "type": "object",
      "required": [
        "gpuDriverVersion"
      ]
    },
    "google-native:container/v1:GPUSharingConfig": {
      "description": "GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators.",
      "properties": {
        "gpuSharingStrategy": {
          "$ref": "#/types/google-native:container%2Fv1:GPUSharingConfigGpuSharingStrategy",
          "description": "The type of GPU sharing strategy to enable on the GPU node."
        },
        "maxSharedClientsPerGpu": {
          "type": "string",
          "description": "The max number of containers that can share a physical GPU."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:GPUSharingConfigGpuSharingStrategy": {
      "description": "The type of GPU sharing strategy to enable on the GPU node.",
      "type": "string",
      "enum": [
        {
          "name": "GpuSharingStrategyUnspecified",
          "description": "Default value.",
          "value": "GPU_SHARING_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "TimeSharing",
          "description": "GPUs are time-shared between containers.",
          "value": "TIME_SHARING"
        }
      ]
    },
    "google-native:container/v1:GPUSharingConfigResponse": {
      "description": "GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators.",
      "properties": {
        "gpuSharingStrategy": {
          "type": "string",
          "description": "The type of GPU sharing strategy to enable on the GPU node."
        },
        "maxSharedClientsPerGpu": {
          "type": "string",
          "description": "The max number of containers that can share a physical GPU."
        }
      },
      "type": "object",
      "required": [
        "gpuSharingStrategy",
        "maxSharedClientsPerGpu"
      ]
    },
    "google-native:container/v1:GatewayAPIConfig": {
      "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster.",
      "properties": {
        "channel": {
          "$ref": "#/types/google-native:container%2Fv1:GatewayAPIConfigChannel",
          "description": "The Gateway API release channel to use for Gateway API."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:GatewayAPIConfigChannel": {
      "description": "The Gateway API release channel to use for Gateway API.",
      "type": "string",
      "enum": [
        {
          "name": "ChannelUnspecified",
          "description": "Default value.",
          "value": "CHANNEL_UNSPECIFIED"
        },
        {
          "name": "ChannelDisabled",
          "description": "Gateway API support is disabled",
          "value": "CHANNEL_DISABLED"
        },
        {
          "name": "ChannelExperimental",
          "description": "Gateway API support is enabled, experimental CRDs are installed",
          "value": "CHANNEL_EXPERIMENTAL"
        },
        {
          "name": "ChannelStandard",
          "description": "Gateway API support is enabled, standard CRDs are installed",
          "value": "CHANNEL_STANDARD"
        }
      ]
    },
    "google-native:container/v1:GatewayAPIConfigResponse": {
      "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "The Gateway API release channel to use for Gateway API."
        }
      },
      "type": "object",
      "required": [
        "channel"
      ]
    },
    "google-native:container/v1:GcePersistentDiskCsiDriverConfig": {
      "description": "Configuration for the Compute Engine PD CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Compute Engine PD CSI driver is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:GcePersistentDiskCsiDriverConfigResponse": {
      "description": "Configuration for the Compute Engine PD CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Compute Engine PD CSI driver is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:GcfsConfig": {
      "description": "GcfsConfig contains configurations of Google Container File System (image streaming).",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to use GCFS."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:GcfsConfigResponse": {
      "description": "GcfsConfig contains configurations of Google Container File System (image streaming).",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to use GCFS."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:GcpFilestoreCsiDriverConfig": {
      "description": "Configuration for the GCP Filestore CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the GCP Filestore CSI driver is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:GcpFilestoreCsiDriverConfigResponse": {
      "description": "Configuration for the GCP Filestore CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the GCP Filestore CSI driver is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:GcsFuseCsiDriverConfig": {
      "description": "Configuration for the Cloud Storage Fuse CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Cloud Storage Fuse CSI driver is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:GcsFuseCsiDriverConfigResponse": {
      "description": "Configuration for the Cloud Storage Fuse CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Cloud Storage Fuse CSI driver is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:GkeBackupAgentConfig": {
      "description": "Configuration for the Backup for GKE Agent.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Backup for GKE agent is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:GkeBackupAgentConfigResponse": {
      "description": "Configuration for the Backup for GKE Agent.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Backup for GKE agent is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:HorizontalPodAutoscaling": {
      "description": "Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:HorizontalPodAutoscalingResponse": {
      "description": "Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1:HttpLoadBalancing": {
      "description": "Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:HttpLoadBalancingResponse": {
      "description": "Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1:ILBSubsettingConfig": {
      "description": "ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer subsetting on this cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables l4 ILB subsetting for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:IPAllocationPolicy": {
      "description": "Configuration for controlling how IPs are allocated in the cluster.",
      "properties": {
        "clusterIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use cluster_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use cluster_ipv4_cidr_block."
        },
        "clusterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "clusterSecondaryRangeName": {
          "type": "string",
          "description": "The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false."
        },
        "createSubnetwork": {
          "type": "boolean",
          "description": "Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true."
        },
        "ipv6AccessType": {
          "$ref": "#/types/google-native:container%2Fv1:IPAllocationPolicyIpv6AccessType",
          "description": "The ipv6 access type (internal or external) when create_subnetwork is true"
        },
        "nodeIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use node_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use node_ipv4_cidr_block."
        },
        "nodeIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "podCidrOverprovisionConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PodCIDROverprovisionConfig",
          "description": "[PRIVATE FIELD] Pod CIDR size overprovisioning config for the cluster. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is doubled and then rounded off to next power of 2 to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled."
        },
        "servicesIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use services_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use services_ipv4_cidr_block."
        },
        "servicesIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "servicesSecondaryRangeName": {
          "type": "string",
          "description": "The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false."
        },
        "stackType": {
          "$ref": "#/types/google-native:container%2Fv1:IPAllocationPolicyStackType",
          "description": "The IP stack type of the cluster"
        },
        "subnetworkName": {
          "type": "string",
          "description": "A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork."
        },
        "tpuIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "useIpAliases": {
          "type": "boolean",
          "description": "Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode"
        },
        "useRoutes": {
          "type": "boolean",
          "description": "Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:IPAllocationPolicyIpv6AccessType": {
      "description": "The ipv6 access type (internal or external) when create_subnetwork is true",
      "type": "string",
      "enum": [
        {
          "name": "Ipv6AccessTypeUnspecified",
          "description": "Default value, will be defaulted as type external.",
          "value": "IPV6_ACCESS_TYPE_UNSPECIFIED"
        },
        {
          "name": "Internal",
          "description": "Access type internal (all v6 addresses are internal IPs)",
          "value": "INTERNAL"
        },
        {
          "name": "External",
          "description": "Access type external (all v6 addresses are external IPs)",
          "value": "EXTERNAL"
        }
      ]
    },
    "google-native:container/v1:IPAllocationPolicyResponse": {
      "description": "Configuration for controlling how IPs are allocated in the cluster.",
      "properties": {
        "additionalPodRangesConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AdditionalPodRangesConfigResponse",
          "description": "[Output only] The additional pod ranges that are added to the cluster. These pod ranges can be used by new node pools to allocate pod IPs automatically. Once the range is removed it will not show up in IPAllocationPolicy."
        },
        "clusterIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use cluster_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use cluster_ipv4_cidr_block."
        },
        "clusterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "clusterSecondaryRangeName": {
          "type": "string",
          "description": "The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false."
        },
        "createSubnetwork": {
          "type": "boolean",
          "description": "Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true."
        },
        "defaultPodIpv4RangeUtilization": {
          "type": "number",
          "description": "[Output only] The utilization of the cluster default IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode."
        },
        "ipv6AccessType": {
          "type": "string",
          "description": "The ipv6 access type (internal or external) when create_subnetwork is true"
        },
        "nodeIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use node_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use node_ipv4_cidr_block."
        },
        "nodeIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "podCidrOverprovisionConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PodCIDROverprovisionConfigResponse",
          "description": "[PRIVATE FIELD] Pod CIDR size overprovisioning config for the cluster. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is doubled and then rounded off to next power of 2 to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled."
        },
        "servicesIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use services_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use services_ipv4_cidr_block."
        },
        "servicesIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "servicesIpv6CidrBlock": {
          "type": "string",
          "description": "[Output only] The services IPv6 CIDR block for the cluster."
        },
        "servicesSecondaryRangeName": {
          "type": "string",
          "description": "The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false."
        },
        "stackType": {
          "type": "string",
          "description": "The IP stack type of the cluster"
        },
        "subnetIpv6CidrBlock": {
          "type": "string",
          "description": "[Output only] The subnet's IPv6 CIDR block used by nodes and pods."
        },
        "subnetworkName": {
          "type": "string",
          "description": "A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork."
        },
        "tpuIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "useIpAliases": {
          "type": "boolean",
          "description": "Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode"
        },
        "useRoutes": {
          "type": "boolean",
          "description": "Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode"
        }
      },
      "type": "object",
      "required": [
        "additionalPodRangesConfig",
        "clusterIpv4Cidr",
        "clusterIpv4CidrBlock",
        "clusterSecondaryRangeName",
        "createSubnetwork",
        "defaultPodIpv4RangeUtilization",
        "ipv6AccessType",
        "nodeIpv4Cidr",
        "nodeIpv4CidrBlock",
        "podCidrOverprovisionConfig",
        "servicesIpv4Cidr",
        "servicesIpv4CidrBlock",
        "servicesIpv6CidrBlock",
        "servicesSecondaryRangeName",
        "stackType",
        "subnetIpv6CidrBlock",
        "subnetworkName",
        "tpuIpv4CidrBlock",
        "useIpAliases",
        "useRoutes"
      ]
    },
    "google-native:container/v1:IPAllocationPolicyStackType": {
      "description": "The IP stack type of the cluster",
      "type": "string",
      "enum": [
        {
          "name": "StackTypeUnspecified",
          "description": "Default value, will be defaulted as IPV4 only",
          "value": "STACK_TYPE_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "Cluster is IPV4 only",
          "value": "IPV4"
        },
        {
          "name": "Ipv4Ipv6",
          "description": "Cluster can use both IPv4 and IPv6",
          "value": "IPV4_IPV6"
        }
      ]
    },
    "google-native:container/v1:IdentityServiceConfig": {
      "description": "IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable the Identity Service component"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:IdentityServiceConfigResponse": {
      "description": "IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable the Identity Service component"
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:IntraNodeVisibilityConfig": {
      "description": "IntraNodeVisibilityConfig contains the desired config of the intra-node visibility on this cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables intra node visibility for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:K8sBetaAPIConfig": {
      "description": "K8sBetaAPIConfig , configuration for beta APIs",
      "properties": {
        "enabledApis": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Enabled k8s beta APIs."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:K8sBetaAPIConfigResponse": {
      "description": "K8sBetaAPIConfig , configuration for beta APIs",
      "properties": {
        "enabledApis": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Enabled k8s beta APIs."
        }
      },
      "type": "object",
      "required": [
        "enabledApis"
      ]
    },
    "google-native:container/v1:KubernetesDashboard": {
      "description": "Configuration for the Kubernetes Dashboard.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the Kubernetes Dashboard is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:KubernetesDashboardResponse": {
      "description": "Configuration for the Kubernetes Dashboard.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the Kubernetes Dashboard is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1:LegacyAbac": {
      "description": "Configuration for the legacy Attribute Based Access Control authorization mode.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:LegacyAbacResponse": {
      "description": "Configuration for the legacy Attribute Based Access Control authorization mode.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:LinuxNodeConfig": {
      "description": "Parameters that can be configured on Linux nodes.",
      "properties": {
        "cgroupMode": {
          "$ref": "#/types/google-native:container%2Fv1:LinuxNodeConfigCgroupMode",
          "description": "cgroup_mode specifies the cgroup mode to be used on the node."
        },
        "sysctls": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:LinuxNodeConfigCgroupMode": {
      "description": "cgroup_mode specifies the cgroup mode to be used on the node.",
      "type": "string",
      "enum": [
        {
          "name": "CgroupModeUnspecified",
          "description": "CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used. The default for the GKE node OS image will be used.",
          "value": "CGROUP_MODE_UNSPECIFIED"
        },
        {
          "name": "CgroupModeV1",
          "description": "CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on the node image.",
          "value": "CGROUP_MODE_V1"
        },
        {
          "name": "CgroupModeV2",
          "description": "CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on the node image.",
          "value": "CGROUP_MODE_V2"
        }
      ]
    },
    "google-native:container/v1:LinuxNodeConfigResponse": {
      "description": "Parameters that can be configured on Linux nodes.",
      "properties": {
        "cgroupMode": {
          "type": "string",
          "description": "cgroup_mode specifies the cgroup mode to be used on the node."
        },
        "sysctls": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse"
        }
      },
      "type": "object",
      "required": [
        "cgroupMode",
        "sysctls"
      ]
    },
    "google-native:container/v1:LocalNvmeSsdBlockConfig": {
      "description": "LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:LocalNvmeSsdBlockConfigResponse": {
      "description": "LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object",
      "required": [
        "localSsdCount"
      ]
    },
    "google-native:container/v1:LoggingComponentConfig": {
      "description": "LoggingComponentConfig is cluster logging component configuration.",
      "properties": {
        "enableComponents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:LoggingComponentConfigEnableComponentsItem"
          },
          "description": "Select components to collect logs. An empty set would disable all logging."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:LoggingComponentConfigEnableComponentsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ComponentUnspecified",
          "description": "Default value. This shouldn't be used.",
          "value": "COMPONENT_UNSPECIFIED"
        },
        {
          "name": "SystemComponents",
          "description": "system components",
          "value": "SYSTEM_COMPONENTS"
        },
        {
          "name": "Workloads",
          "description": "workloads",
          "value": "WORKLOADS"
        },
        {
          "name": "Apiserver",
          "description": "kube-apiserver",
          "value": "APISERVER"
        },
        {
          "name": "Scheduler",
          "description": "kube-scheduler",
          "value": "SCHEDULER"
        },
        {
          "name": "ControllerManager",
          "description": "kube-controller-manager",
          "value": "CONTROLLER_MANAGER"
        }
      ]
    },
    "google-native:container/v1:LoggingComponentConfigResponse": {
      "description": "LoggingComponentConfig is cluster logging component configuration.",
      "properties": {
        "enableComponents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Select components to collect logs. An empty set would disable all logging."
        }
      },
      "type": "object",
      "required": [
        "enableComponents"
      ]
    },
    "google-native:container/v1:LoggingConfig": {
      "description": "LoggingConfig is cluster logging configuration.",
      "properties": {
        "componentConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LoggingComponentConfig",
          "description": "Logging components configuration"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:LoggingConfigResponse": {
      "description": "LoggingConfig is cluster logging configuration.",
      "properties": {
        "componentConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LoggingComponentConfigResponse",
          "description": "Logging components configuration"
        }
      },
      "type": "object",
      "required": [
        "componentConfig"
      ]
    },
    "google-native:container/v1:LoggingVariantConfig": {
      "description": "LoggingVariantConfig specifies the behaviour of the logging component.",
      "properties": {
        "variant": {
          "$ref": "#/types/google-native:container%2Fv1:LoggingVariantConfigVariant",
          "description": "Logging variant deployed on nodes."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:LoggingVariantConfigResponse": {
      "description": "LoggingVariantConfig specifies the behaviour of the logging component.",
      "properties": {
        "variant": {
          "type": "string",
          "description": "Logging variant deployed on nodes."
        }
      },
      "type": "object",
      "required": [
        "variant"
      ]
    },
    "google-native:container/v1:LoggingVariantConfigVariant": {
      "description": "Logging variant deployed on nodes.",
      "type": "string",
      "enum": [
        {
          "name": "VariantUnspecified",
          "description": "Default value. This shouldn't be used.",
          "value": "VARIANT_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "default logging variant.",
          "value": "DEFAULT"
        },
        {
          "name": "MaxThroughput",
          "description": "maximum logging throughput variant.",
          "value": "MAX_THROUGHPUT"
        }
      ]
    },
    "google-native:container/v1:MaintenanceExclusionOptions": {
      "description": "Represents the Maintenance exclusion option.",
      "properties": {
        "scope": {
          "$ref": "#/types/google-native:container%2Fv1:MaintenanceExclusionOptionsScope",
          "description": "Scope specifies the upgrade scope which upgrades are blocked by the exclusion."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MaintenanceExclusionOptionsResponse": {
      "description": "Represents the Maintenance exclusion option.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "Scope specifies the upgrade scope which upgrades are blocked by the exclusion."
        }
      },
      "type": "object",
      "required": [
        "scope"
      ]
    },
    "google-native:container/v1:MaintenanceExclusionOptionsScope": {
      "description": "Scope specifies the upgrade scope which upgrades are blocked by the exclusion.",
      "type": "string",
      "enum": [
        {
          "name": "NoUpgrades",
          "description": "NO_UPGRADES excludes all upgrades, including patch upgrades and minor upgrades across control planes and nodes. This is the default exclusion behavior.",
          "value": "NO_UPGRADES"
        },
        {
          "name": "NoMinorUpgrades",
          "description": "NO_MINOR_UPGRADES excludes all minor upgrades for the cluster, only patches are allowed.",
          "value": "NO_MINOR_UPGRADES"
        },
        {
          "name": "NoMinorOrNodeUpgrades",
          "description": "NO_MINOR_OR_NODE_UPGRADES excludes all minor upgrades for the cluster, and also exclude all node pool upgrades. Only control plane patches are allowed.",
          "value": "NO_MINOR_OR_NODE_UPGRADES"
        }
      ]
    },
    "google-native:container/v1:MaintenancePolicy": {
      "description": "MaintenancePolicy defines the maintenance policy to be used for the cluster.",
      "properties": {
        "resourceVersion": {
          "type": "string",
          "description": "A hash identifying the version of this policy, so that updates to fields of the policy won't accidentally undo intermediate changes (and so that users of the API unaware of some fields won't accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy."
        },
        "window": {
          "$ref": "#/types/google-native:container%2Fv1:MaintenanceWindow",
          "description": "Specifies the maintenance window in which maintenance may be performed."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MaintenancePolicyResponse": {
      "description": "MaintenancePolicy defines the maintenance policy to be used for the cluster.",
      "properties": {
        "resourceVersion": {
          "type": "string",
          "description": "A hash identifying the version of this policy, so that updates to fields of the policy won't accidentally undo intermediate changes (and so that users of the API unaware of some fields won't accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy."
        },
        "window": {
          "$ref": "#/types/google-native:container%2Fv1:MaintenanceWindowResponse",
          "description": "Specifies the maintenance window in which maintenance may be performed."
        }
      },
      "type": "object",
      "required": [
        "resourceVersion",
        "window"
      ]
    },
    "google-native:container/v1:MaintenanceWindow": {
      "description": "MaintenanceWindow defines the maintenance window to be used for the cluster.",
      "properties": {
        "dailyMaintenanceWindow": {
          "$ref": "#/types/google-native:container%2Fv1:DailyMaintenanceWindow",
          "description": "DailyMaintenanceWindow specifies a daily maintenance operation window."
        },
        "maintenanceExclusions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows."
        },
        "recurringWindow": {
          "$ref": "#/types/google-native:container%2Fv1:RecurringTimeWindow",
          "description": "RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MaintenanceWindowResponse": {
      "description": "MaintenanceWindow defines the maintenance window to be used for the cluster.",
      "properties": {
        "dailyMaintenanceWindow": {
          "$ref": "#/types/google-native:container%2Fv1:DailyMaintenanceWindowResponse",
          "description": "DailyMaintenanceWindow specifies a daily maintenance operation window."
        },
        "maintenanceExclusions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows."
        },
        "recurringWindow": {
          "$ref": "#/types/google-native:container%2Fv1:RecurringTimeWindowResponse",
          "description": "RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time."
        }
      },
      "type": "object",
      "required": [
        "dailyMaintenanceWindow",
        "maintenanceExclusions",
        "recurringWindow"
      ]
    },
    "google-native:container/v1:ManagedPrometheusConfig": {
      "description": "ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable Managed Collection."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ManagedPrometheusConfigResponse": {
      "description": "ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable Managed Collection."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:MasterAuth": {
      "description": "The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates.",
      "properties": {
        "clientCertificateConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ClientCertificateConfig",
          "description": "Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued."
        },
        "password": {
          "type": "string",
          "description": "The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication"
        },
        "username": {
          "type": "string",
          "description": "The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MasterAuthResponse": {
      "description": "The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates.",
      "properties": {
        "clientCertificate": {
          "type": "string",
          "description": "[Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint."
        },
        "clientCertificateConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ClientCertificateConfigResponse",
          "description": "Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued."
        },
        "clientKey": {
          "type": "string",
          "description": "[Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint."
        },
        "clusterCaCertificate": {
          "type": "string",
          "description": "[Output only] Base64-encoded public certificate that is the root of trust for the cluster."
        },
        "password": {
          "type": "string",
          "description": "The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication"
        },
        "username": {
          "type": "string",
          "description": "The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication"
        }
      },
      "type": "object",
      "required": [
        "clientCertificate",
        "clientCertificateConfig",
        "clientKey",
        "clusterCaCertificate",
        "password",
        "username"
      ]
    },
    "google-native:container/v1:MasterAuthorizedNetworksConfig": {
      "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.",
      "properties": {
        "cidrBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:CidrBlock"
          },
          "description": "cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not master authorized networks is enabled."
        },
        "gcpPublicCidrsAccessEnabled": {
          "type": "boolean",
          "description": "Whether master is accessbile via Google Compute Engine Public IP addresses."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MasterAuthorizedNetworksConfigResponse": {
      "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.",
      "properties": {
        "cidrBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:CidrBlockResponse"
          },
          "description": "cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not master authorized networks is enabled."
        },
        "gcpPublicCidrsAccessEnabled": {
          "type": "boolean",
          "description": "Whether master is accessbile via Google Compute Engine Public IP addresses."
        }
      },
      "type": "object",
      "required": [
        "cidrBlocks",
        "enabled",
        "gcpPublicCidrsAccessEnabled"
      ]
    },
    "google-native:container/v1:MaxPodsConstraint": {
      "description": "Constraints applied to pods.",
      "properties": {
        "maxPodsPerNode": {
          "type": "string",
          "description": "Constraint enforced on the max num of pods per node."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MaxPodsConstraintResponse": {
      "description": "Constraints applied to pods.",
      "properties": {
        "maxPodsPerNode": {
          "type": "string",
          "description": "Constraint enforced on the max num of pods per node."
        }
      },
      "type": "object",
      "required": [
        "maxPodsPerNode"
      ]
    },
    "google-native:container/v1:MeshCertificates": {
      "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods.",
      "properties": {
        "enableCertificates": {
          "type": "boolean",
          "description": "enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty)."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MeshCertificatesResponse": {
      "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods.",
      "properties": {
        "enableCertificates": {
          "type": "boolean",
          "description": "enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty)."
        }
      },
      "type": "object",
      "required": [
        "enableCertificates"
      ]
    },
    "google-native:container/v1:MonitoringComponentConfig": {
      "description": "MonitoringComponentConfig is cluster monitoring component configuration.",
      "properties": {
        "enableComponents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:MonitoringComponentConfigEnableComponentsItem"
          },
          "description": "Select components to collect metrics. An empty set would disable all monitoring."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MonitoringComponentConfigEnableComponentsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ComponentUnspecified",
          "description": "Default value. This shouldn't be used.",
          "value": "COMPONENT_UNSPECIFIED"
        },
        {
          "name": "SystemComponents",
          "description": "system components",
          "value": "SYSTEM_COMPONENTS"
        },
        {
          "name": "Apiserver",
          "description": "kube-apiserver",
          "value": "APISERVER"
        },
        {
          "name": "Scheduler",
          "description": "kube-scheduler",
          "value": "SCHEDULER"
        },
        {
          "name": "ControllerManager",
          "description": "kube-controller-manager",
          "value": "CONTROLLER_MANAGER"
        },
        {
          "name": "Storage",
          "description": "Storage",
          "value": "STORAGE"
        },
        {
          "name": "Hpa",
          "description": "Horizontal Pod Autoscaling",
          "value": "HPA"
        },
        {
          "name": "Pod",
          "description": "Pod",
          "value": "POD"
        },
        {
          "name": "Daemonset",
          "description": "DaemonSet",
          "value": "DAEMONSET"
        },
        {
          "name": "Deployment",
          "description": "Deployment",
          "value": "DEPLOYMENT"
        },
        {
          "name": "Statefulset",
          "description": "Statefulset",
          "value": "STATEFULSET"
        }
      ]
    },
    "google-native:container/v1:MonitoringComponentConfigResponse": {
      "description": "MonitoringComponentConfig is cluster monitoring component configuration.",
      "properties": {
        "enableComponents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Select components to collect metrics. An empty set would disable all monitoring."
        }
      },
      "type": "object",
      "required": [
        "enableComponents"
      ]
    },
    "google-native:container/v1:MonitoringConfig": {
      "description": "MonitoringConfig is cluster monitoring configuration.",
      "properties": {
        "advancedDatapathObservabilityConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AdvancedDatapathObservabilityConfig",
          "description": "Configuration of Advanced Datapath Observability features."
        },
        "componentConfig": {
          "$ref": "#/types/google-native:container%2Fv1:MonitoringComponentConfig",
          "description": "Monitoring components configuration"
        },
        "managedPrometheusConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ManagedPrometheusConfig",
          "description": "Enable Google Cloud Managed Service for Prometheus in the cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:MonitoringConfigResponse": {
      "description": "MonitoringConfig is cluster monitoring configuration.",
      "properties": {
        "advancedDatapathObservabilityConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AdvancedDatapathObservabilityConfigResponse",
          "description": "Configuration of Advanced Datapath Observability features."
        },
        "componentConfig": {
          "$ref": "#/types/google-native:container%2Fv1:MonitoringComponentConfigResponse",
          "description": "Monitoring components configuration"
        },
        "managedPrometheusConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ManagedPrometheusConfigResponse",
          "description": "Enable Google Cloud Managed Service for Prometheus in the cluster."
        }
      },
      "type": "object",
      "required": [
        "advancedDatapathObservabilityConfig",
        "componentConfig",
        "managedPrometheusConfig"
      ]
    },
    "google-native:container/v1:NetworkConfig": {
      "description": "NetworkConfig reports the relative names of network & subnetwork.",
      "properties": {
        "datapathProvider": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkConfigDatapathProvider",
          "description": "The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation."
        },
        "defaultSnatStatus": {
          "$ref": "#/types/google-native:container%2Fv1:DefaultSnatStatus",
          "description": "Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic."
        },
        "dnsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:DNSConfig",
          "description": "DNSConfig contains clusterDNS config for this cluster."
        },
        "enableFqdnNetworkPolicy": {
          "type": "boolean",
          "description": "Whether FQDN Network Policy is enabled on this cluster."
        },
        "enableIntraNodeVisibility": {
          "type": "boolean",
          "description": "Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network."
        },
        "enableL4ilbSubsetting": {
          "type": "boolean",
          "description": "Whether L4ILB Subsetting is enabled for this cluster."
        },
        "enableMultiNetworking": {
          "type": "boolean",
          "description": "Whether multi-networking is enabled for this cluster."
        },
        "gatewayApiConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GatewayAPIConfig",
          "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterNetworkPerformanceConfig",
          "description": "Network bandwidth tier configuration."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkConfigPrivateIpv6GoogleAccess",
          "description": "The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)"
        },
        "serviceExternalIpsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ServiceExternalIPsConfig",
          "description": "ServiceExternalIPsConfig specifies if services with externalIPs field are blocked or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NetworkConfigDatapathProvider": {
      "description": "The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.",
      "type": "string",
      "enum": [
        {
          "name": "DatapathProviderUnspecified",
          "description": "Default value.",
          "value": "DATAPATH_PROVIDER_UNSPECIFIED"
        },
        {
          "name": "LegacyDatapath",
          "description": "Use the IPTables implementation based on kube-proxy.",
          "value": "LEGACY_DATAPATH"
        },
        {
          "name": "AdvancedDatapath",
          "description": "Use the eBPF based GKE Dataplane V2 with additional features. See the [GKE Dataplane V2 documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2) for more.",
          "value": "ADVANCED_DATAPATH"
        }
      ]
    },
    "google-native:container/v1:NetworkConfigPrivateIpv6GoogleAccess": {
      "description": "The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)",
      "type": "string",
      "enum": [
        {
          "name": "PrivateIpv6GoogleAccessUnspecified",
          "description": "Default value. Same as DISABLED",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED"
        },
        {
          "name": "PrivateIpv6GoogleAccessDisabled",
          "description": "No private access to or from Google Services",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED"
        },
        {
          "name": "PrivateIpv6GoogleAccessToGoogle",
          "description": "Enables private IPv6 access to Google Services from GKE",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE"
        },
        {
          "name": "PrivateIpv6GoogleAccessBidirectional",
          "description": "Enables private IPv6 access to and from Google Services",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL"
        }
      ]
    },
    "google-native:container/v1:NetworkConfigResponse": {
      "description": "NetworkConfig reports the relative names of network & subnetwork.",
      "properties": {
        "datapathProvider": {
          "type": "string",
          "description": "The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation."
        },
        "defaultSnatStatus": {
          "$ref": "#/types/google-native:container%2Fv1:DefaultSnatStatusResponse",
          "description": "Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic."
        },
        "dnsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:DNSConfigResponse",
          "description": "DNSConfig contains clusterDNS config for this cluster."
        },
        "enableFqdnNetworkPolicy": {
          "type": "boolean",
          "description": "Whether FQDN Network Policy is enabled on this cluster."
        },
        "enableIntraNodeVisibility": {
          "type": "boolean",
          "description": "Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network."
        },
        "enableL4ilbSubsetting": {
          "type": "boolean",
          "description": "Whether L4ILB Subsetting is enabled for this cluster."
        },
        "enableMultiNetworking": {
          "type": "boolean",
          "description": "Whether multi-networking is enabled for this cluster."
        },
        "gatewayApiConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GatewayAPIConfigResponse",
          "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster."
        },
        "network": {
          "type": "string",
          "description": "The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network"
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterNetworkPerformanceConfigResponse",
          "description": "Network bandwidth tier configuration."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)"
        },
        "serviceExternalIpsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ServiceExternalIPsConfigResponse",
          "description": "ServiceExternalIPsConfig specifies if services with externalIPs field are blocked or not."
        },
        "subnetwork": {
          "type": "string",
          "description": "The relative name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet"
        }
      },
      "type": "object",
      "required": [
        "datapathProvider",
        "defaultSnatStatus",
        "dnsConfig",
        "enableFqdnNetworkPolicy",
        "enableIntraNodeVisibility",
        "enableL4ilbSubsetting",
        "enableMultiNetworking",
        "gatewayApiConfig",
        "network",
        "networkPerformanceConfig",
        "privateIpv6GoogleAccess",
        "serviceExternalIpsConfig",
        "subnetwork"
      ]
    },
    "google-native:container/v1:NetworkPerformanceConfig": {
      "description": "Configuration of all network bandwidth tiers",
      "properties": {
        "totalEgressBandwidthTier": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkPerformanceConfigTotalEgressBandwidthTier",
          "description": "Specifies the total network bandwidth tier for the NodePool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NetworkPerformanceConfigResponse": {
      "description": "Configuration of all network bandwidth tiers",
      "properties": {
        "totalEgressBandwidthTier": {
          "type": "string",
          "description": "Specifies the total network bandwidth tier for the NodePool."
        }
      },
      "type": "object",
      "required": [
        "totalEgressBandwidthTier"
      ]
    },
    "google-native:container/v1:NetworkPerformanceConfigTotalEgressBandwidthTier": {
      "description": "Specifies the total network bandwidth tier for the NodePool.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Default value",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Tier1",
          "description": "Higher bandwidth, actual values based on VM size.",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:container/v1:NetworkPolicy": {
      "description": "Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether network policy is enabled on the cluster."
        },
        "provider": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkPolicyProvider",
          "description": "The selected network policy provider."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NetworkPolicyConfig": {
      "description": "Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether NetworkPolicy is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NetworkPolicyConfigResponse": {
      "description": "Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether NetworkPolicy is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1:NetworkPolicyProvider": {
      "description": "The selected network policy provider.",
      "type": "string",
      "enum": [
        {
          "name": "ProviderUnspecified",
          "description": "Not set",
          "value": "PROVIDER_UNSPECIFIED"
        },
        {
          "name": "Calico",
          "description": "Tigera (Calico Felix).",
          "value": "CALICO"
        }
      ]
    },
    "google-native:container/v1:NetworkPolicyResponse": {
      "description": "Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether network policy is enabled on the cluster."
        },
        "provider": {
          "type": "string",
          "description": "The selected network policy provider."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "provider"
      ]
    },
    "google-native:container/v1:NetworkTags": {
      "description": "Collection of Compute Engine network tags that can be applied to a node's underlying VM instance.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of network tags."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NetworkTagsResponse": {
      "description": "Collection of Compute Engine network tags that can be applied to a node's underlying VM instance.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of network tags."
        }
      },
      "type": "object",
      "required": [
        "tags"
      ]
    },
    "google-native:container/v1:NodeAffinity": {
      "description": "Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for NodeAffinity."
        },
        "operator": {
          "$ref": "#/types/google-native:container%2Fv1:NodeAffinityOperator",
          "description": "Operator for NodeAffinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Values for NodeAffinity."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodeAffinityOperator": {
      "description": "Operator for NodeAffinity.",
      "type": "string",
      "enum": [
        {
          "name": "OperatorUnspecified",
          "description": "Invalid or unspecified affinity operator.",
          "value": "OPERATOR_UNSPECIFIED"
        },
        {
          "name": "In",
          "description": "Affinity operator.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "Anti-affinity operator.",
          "value": "NOT_IN"
        }
      ]
    },
    "google-native:container/v1:NodeAffinityResponse": {
      "description": "Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for NodeAffinity."
        },
        "operator": {
          "type": "string",
          "description": "Operator for NodeAffinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Values for NodeAffinity."
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "google-native:container/v1:NodeConfig": {
      "description": "Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:AcceleratorConfig"
          },
          "description": "A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs."
        },
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:container%2Fv1:AdvancedMachineFeatures",
          "description": "Advanced features for the Compute Engine VM."
        },
        "bootDiskKmsKey": {
          "type": "string",
          "description": " The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption"
        },
        "confidentialNodes": {
          "$ref": "#/types/google-native:container%2Fv1:ConfidentialNodes",
          "description": "Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') If unspecified, the default disk type is 'pd-standard'"
        },
        "ephemeralStorageLocalSsdConfig": {
          "$ref": "#/types/google-native:container%2Fv1:EphemeralStorageLocalSsdConfig",
          "description": "Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk."
        },
        "fastSocket": {
          "$ref": "#/types/google-native:container%2Fv1:FastSocket",
          "description": "Enable or disable NCCL fast socket for the node pool."
        },
        "gcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcfsConfig",
          "description": "Google Container File System (image streaming) configs."
        },
        "gvnic": {
          "$ref": "#/types/google-native:container%2Fv1:VirtualNIC",
          "description": "Enable or disable gvnic in the node pool."
        },
        "imageType": {
          "type": "string",
          "description": "The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types."
        },
        "kubeletConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodeKubeletConfig",
          "description": "Node kubelet configs."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it's best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/"
        },
        "linuxNodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LinuxNodeConfig",
          "description": "Parameters that can be configured on Linux nodes."
        },
        "localNvmeSsdBlockConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LocalNvmeSsdBlockConfig",
          "description": "Parameters for using raw-block Local NVMe SSDs."
        },
        "localSsdCount": {
          "type": "integer",
          "description": "The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolLoggingConfig",
          "description": "Logging configuration."
        },
        "machineType": {
          "type": "string",
          "description": "The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types) If unspecified, the default machine type is `e2-medium`."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - \"cluster-location\" - \"cluster-name\" - \"cluster-uid\" - \"configure-sh\" - \"containerd-configure-sh\" - \"enable-os-login\" - \"gci-ensure-gke-docker\" - \"gci-metrics-enabled\" - \"gci-update-strategy\" - \"instance-template\" - \"kube-env\" - \"startup-script\" - \"user-data\" - \"disable-address-manager\" - \"windows-startup-script-ps1\" - \"common-psm1\" - \"k8s-node-setup-psm1\" - \"install-ssh-psm1\" - \"user-profile-psm1\" Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value's size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: \"Intel Haswell\"` or `minCpuPlatform: \"Intel Sandy Bridge\"`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)"
        },
        "nodeGroup": {
          "type": "string",
          "description": "Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes)."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of Google API scopes to be made available on all of the node VMs under the \"default\" service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:container%2Fv1:ReservationAffinity",
          "description": "The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool."
        },
        "resourceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for the node pool to use to annotate any related Google Compute Engine resources."
        },
        "resourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1:ResourceManagerTags",
          "description": "A map of resource manager tag keys and values to be attached to the nodes."
        },
        "sandboxConfig": {
          "$ref": "#/types/google-native:container%2Fv1:SandboxConfig",
          "description": "Sandbox configuration for this node."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the \"default\" service account is used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ShieldedInstanceConfig",
          "description": "Shielded Instance options."
        },
        "soleTenantConfig": {
          "$ref": "#/types/google-native:container%2Fv1:SoleTenantConfig",
          "description": "Parameters for node pools to be backed by shared sole tenant node groups."
        },
        "spot": {
          "type": "boolean",
          "description": "Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035."
        },
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:NodeTaint"
          },
          "description": "List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/"
        },
        "windowsNodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WindowsNodeConfig",
          "description": "Parameters that can be configured on Windows nodes."
        },
        "workloadMetadataConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadMetadataConfig",
          "description": "The workload metadata configuration for this node."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodeConfigDefaults": {
      "description": "Subset of NodeConfig message that has defaults.",
      "properties": {
        "gcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcfsConfig",
          "description": "GCFS (Google Container File System, also known as Riptide) options."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolLoggingConfig",
          "description": "Logging configuration for node pools."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodeConfigDefaultsResponse": {
      "description": "Subset of NodeConfig message that has defaults.",
      "properties": {
        "gcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcfsConfigResponse",
          "description": "GCFS (Google Container File System, also known as Riptide) options."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolLoggingConfigResponse",
          "description": "Logging configuration for node pools."
        }
      },
      "type": "object",
      "required": [
        "gcfsConfig",
        "loggingConfig"
      ]
    },
    "google-native:container/v1:NodeConfigResponse": {
      "description": "Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:AcceleratorConfigResponse"
          },
          "description": "A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs."
        },
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:container%2Fv1:AdvancedMachineFeaturesResponse",
          "description": "Advanced features for the Compute Engine VM."
        },
        "bootDiskKmsKey": {
          "type": "string",
          "description": " The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption"
        },
        "confidentialNodes": {
          "$ref": "#/types/google-native:container%2Fv1:ConfidentialNodesResponse",
          "description": "Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') If unspecified, the default disk type is 'pd-standard'"
        },
        "ephemeralStorageLocalSsdConfig": {
          "$ref": "#/types/google-native:container%2Fv1:EphemeralStorageLocalSsdConfigResponse",
          "description": "Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk."
        },
        "fastSocket": {
          "$ref": "#/types/google-native:container%2Fv1:FastSocketResponse",
          "description": "Enable or disable NCCL fast socket for the node pool."
        },
        "gcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:GcfsConfigResponse",
          "description": "Google Container File System (image streaming) configs."
        },
        "gvnic": {
          "$ref": "#/types/google-native:container%2Fv1:VirtualNICResponse",
          "description": "Enable or disable gvnic in the node pool."
        },
        "imageType": {
          "type": "string",
          "description": "The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types."
        },
        "kubeletConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodeKubeletConfigResponse",
          "description": "Node kubelet configs."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it's best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/"
        },
        "linuxNodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LinuxNodeConfigResponse",
          "description": "Parameters that can be configured on Linux nodes."
        },
        "localNvmeSsdBlockConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LocalNvmeSsdBlockConfigResponse",
          "description": "Parameters for using raw-block Local NVMe SSDs."
        },
        "localSsdCount": {
          "type": "integer",
          "description": "The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolLoggingConfigResponse",
          "description": "Logging configuration."
        },
        "machineType": {
          "type": "string",
          "description": "The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types) If unspecified, the default machine type is `e2-medium`."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - \"cluster-location\" - \"cluster-name\" - \"cluster-uid\" - \"configure-sh\" - \"containerd-configure-sh\" - \"enable-os-login\" - \"gci-ensure-gke-docker\" - \"gci-metrics-enabled\" - \"gci-update-strategy\" - \"instance-template\" - \"kube-env\" - \"startup-script\" - \"user-data\" - \"disable-address-manager\" - \"windows-startup-script-ps1\" - \"common-psm1\" - \"k8s-node-setup-psm1\" - \"install-ssh-psm1\" - \"user-profile-psm1\" Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value's size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: \"Intel Haswell\"` or `minCpuPlatform: \"Intel Sandy Bridge\"`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)"
        },
        "nodeGroup": {
          "type": "string",
          "description": "Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes)."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of Google API scopes to be made available on all of the node VMs under the \"default\" service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:container%2Fv1:ReservationAffinityResponse",
          "description": "The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool."
        },
        "resourceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for the node pool to use to annotate any related Google Compute Engine resources."
        },
        "resourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1:ResourceManagerTagsResponse",
          "description": "A map of resource manager tag keys and values to be attached to the nodes."
        },
        "sandboxConfig": {
          "$ref": "#/types/google-native:container%2Fv1:SandboxConfigResponse",
          "description": "Sandbox configuration for this node."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the \"default\" service account is used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ShieldedInstanceConfigResponse",
          "description": "Shielded Instance options."
        },
        "soleTenantConfig": {
          "$ref": "#/types/google-native:container%2Fv1:SoleTenantConfigResponse",
          "description": "Parameters for node pools to be backed by shared sole tenant node groups."
        },
        "spot": {
          "type": "boolean",
          "description": "Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035."
        },
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:NodeTaintResponse"
          },
          "description": "List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/"
        },
        "windowsNodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WindowsNodeConfigResponse",
          "description": "Parameters that can be configured on Windows nodes."
        },
        "workloadMetadataConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadMetadataConfigResponse",
          "description": "The workload metadata configuration for this node."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "advancedMachineFeatures",
        "bootDiskKmsKey",
        "confidentialNodes",
        "diskSizeGb",
        "diskType",
        "ephemeralStorageLocalSsdConfig",
        "fastSocket",
        "gcfsConfig",
        "gvnic",
        "imageType",
        "kubeletConfig",
        "labels",
        "linuxNodeConfig",
        "localNvmeSsdBlockConfig",
        "localSsdCount",
        "loggingConfig",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "nodeGroup",
        "oauthScopes",
        "preemptible",
        "reservationAffinity",
        "resourceLabels",
        "resourceManagerTags",
        "sandboxConfig",
        "serviceAccount",
        "shieldedInstanceConfig",
        "soleTenantConfig",
        "spot",
        "tags",
        "taints",
        "windowsNodeConfig",
        "workloadMetadataConfig"
      ]
    },
    "google-native:container/v1:NodeKubeletConfig": {
      "description": "Node kubelet configs.",
      "properties": {
        "cpuCfsQuota": {
          "type": "boolean",
          "description": "Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is 'true' if unspecified."
        },
        "cpuCfsQuotaPeriod": {
          "type": "string",
          "description": "Set the CPU CFS quota period value 'cpu.cfs_period_us'. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\". The value must be a positive duration."
        },
        "cpuManagerPolicy": {
          "type": "string",
          "description": "Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * \"none\": the default, which represents the existing scheduling behavior. * \"static\": allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is 'none' if unspecified."
        },
        "insecureKubeletReadonlyPortEnabled": {
          "type": "boolean",
          "description": "Enable or disable Kubelet read only port."
        },
        "podPidsLimit": {
          "type": "string",
          "description": "Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodeKubeletConfigResponse": {
      "description": "Node kubelet configs.",
      "properties": {
        "cpuCfsQuota": {
          "type": "boolean",
          "description": "Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is 'true' if unspecified."
        },
        "cpuCfsQuotaPeriod": {
          "type": "string",
          "description": "Set the CPU CFS quota period value 'cpu.cfs_period_us'. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\". The value must be a positive duration."
        },
        "cpuManagerPolicy": {
          "type": "string",
          "description": "Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * \"none\": the default, which represents the existing scheduling behavior. * \"static\": allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is 'none' if unspecified."
        },
        "insecureKubeletReadonlyPortEnabled": {
          "type": "boolean",
          "description": "Enable or disable Kubelet read only port."
        },
        "podPidsLimit": {
          "type": "string",
          "description": "Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304."
        }
      },
      "type": "object",
      "required": [
        "cpuCfsQuota",
        "cpuCfsQuotaPeriod",
        "cpuManagerPolicy",
        "insecureKubeletReadonlyPortEnabled",
        "podPidsLimit"
      ]
    },
    "google-native:container/v1:NodeLabels": {
      "description": "Collection of node-level [Kubernetes labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels).",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of node label keys and node label values."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodeManagement": {
      "description": "NodeManagement defines the set of node management services turned on for the node pool.",
      "properties": {
        "autoRepair": {
          "type": "boolean",
          "description": "A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered."
        },
        "autoUpgrade": {
          "type": "boolean",
          "description": "A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes."
        },
        "upgradeOptions": {
          "$ref": "#/types/google-native:container%2Fv1:AutoUpgradeOptions",
          "description": "Specifies the Auto Upgrade knobs for the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodeManagementResponse": {
      "description": "NodeManagement defines the set of node management services turned on for the node pool.",
      "properties": {
        "autoRepair": {
          "type": "boolean",
          "description": "A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered."
        },
        "autoUpgrade": {
          "type": "boolean",
          "description": "A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes."
        },
        "upgradeOptions": {
          "$ref": "#/types/google-native:container%2Fv1:AutoUpgradeOptionsResponse",
          "description": "Specifies the Auto Upgrade knobs for the node pool."
        }
      },
      "type": "object",
      "required": [
        "autoRepair",
        "autoUpgrade",
        "upgradeOptions"
      ]
    },
    "google-native:container/v1:NodeNetworkConfig": {
      "description": "Parameters for node pool-level network config.",
      "properties": {
        "additionalNodeNetworkConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:AdditionalNodeNetworkConfig"
          },
          "description": "We specify the additional node networks for this node pool using this list. Each node network corresponds to an additional interface"
        },
        "additionalPodNetworkConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:AdditionalPodNetworkConfig"
          },
          "description": "We specify the additional pod networks for this node pool using this list. Each pod network corresponds to an additional alias IP range for the node"
        },
        "createPodRange": {
          "type": "boolean",
          "description": "Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        },
        "enablePrivateNodes": {
          "type": "boolean",
          "description": "Whether nodes have internal IP addresses only. If enable_private_nodes is not specified, then the value is derived from cluster.privateClusterConfig.enablePrivateNodes"
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkPerformanceConfig",
          "description": "Network bandwidth tier configuration."
        },
        "podCidrOverprovisionConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PodCIDROverprovisionConfig",
          "description": "[PRIVATE FIELD] Pod CIDR size overprovisioning config for the nodepool. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is rounded off to next power of 2 and we then double that to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled."
        },
        "podIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        },
        "podRange": {
          "type": "string",
          "description": "The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodeNetworkConfigResponse": {
      "description": "Parameters for node pool-level network config.",
      "properties": {
        "additionalNodeNetworkConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:AdditionalNodeNetworkConfigResponse"
          },
          "description": "We specify the additional node networks for this node pool using this list. Each node network corresponds to an additional interface"
        },
        "additionalPodNetworkConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:AdditionalPodNetworkConfigResponse"
          },
          "description": "We specify the additional pod networks for this node pool using this list. Each pod network corresponds to an additional alias IP range for the node"
        },
        "createPodRange": {
          "type": "boolean",
          "description": "Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        },
        "enablePrivateNodes": {
          "type": "boolean",
          "description": "Whether nodes have internal IP addresses only. If enable_private_nodes is not specified, then the value is derived from cluster.privateClusterConfig.enablePrivateNodes"
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkPerformanceConfigResponse",
          "description": "Network bandwidth tier configuration."
        },
        "podCidrOverprovisionConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PodCIDROverprovisionConfigResponse",
          "description": "[PRIVATE FIELD] Pod CIDR size overprovisioning config for the nodepool. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is rounded off to next power of 2 and we then double that to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled."
        },
        "podIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        },
        "podIpv4RangeUtilization": {
          "type": "number",
          "description": "[Output only] The utilization of the IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode."
        },
        "podRange": {
          "type": "string",
          "description": "The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        }
      },
      "type": "object",
      "required": [
        "additionalNodeNetworkConfigs",
        "additionalPodNetworkConfigs",
        "createPodRange",
        "enablePrivateNodes",
        "networkPerformanceConfig",
        "podCidrOverprovisionConfig",
        "podIpv4CidrBlock",
        "podIpv4RangeUtilization",
        "podRange"
      ]
    },
    "google-native:container/v1:NodePool": {
      "description": "NodePool contains the name and configuration for a cluster's node pool. Node pools are a set of nodes (i.e. VM's), with a common configuration and specification, under the control of the cluster master. They may have a set of Kubernetes labels applied to them, which may be used to reference them during pod scheduling. They may also be resized up or down, to accommodate the workload.",
      "properties": {
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoscaling",
          "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
        },
        "bestEffortProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1:BestEffortProvisioning",
          "description": "Enable best effort provisioning for nodes"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:StatusCondition"
          },
          "description": "Which conditions caused the current node pool state."
        },
        "config": {
          "$ref": "#/types/google-native:container%2Fv1:NodeConfig",
          "description": "The node configuration of the pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1:NodeManagement",
          "description": "NodeManagement configuration for this NodePool."
        },
        "maxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraint",
          "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
        },
        "name": {
          "type": "string",
          "description": "The name of the node pool."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodeNetworkConfig",
          "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
        },
        "placementPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:PlacementPolicy",
          "description": "Specifies the node placement policy."
        },
        "queuedProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1:QueuedProvisioning",
          "description": "Specifies the configuration of queued provisioning."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1:UpgradeSettings",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        },
        "version": {
          "type": "string",
          "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version)."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodePoolAutoConfig": {
      "description": "Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.",
      "properties": {
        "networkTags": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkTags",
          "description": "The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster creation. Each tag within the list must comply with RFC1035."
        },
        "resourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1:ResourceManagerTags",
          "description": "Resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodePoolAutoConfigResponse": {
      "description": "Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.",
      "properties": {
        "networkTags": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkTagsResponse",
          "description": "The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster creation. Each tag within the list must comply with RFC1035."
        },
        "resourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1:ResourceManagerTagsResponse",
          "description": "Resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies."
        }
      },
      "type": "object",
      "required": [
        "networkTags",
        "resourceManagerTags"
      ]
    },
    "google-native:container/v1:NodePoolAutoscaling": {
      "description": "NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage.",
      "properties": {
        "autoprovisioned": {
          "type": "boolean",
          "description": "Can this node pool be deleted automatically."
        },
        "enabled": {
          "type": "boolean",
          "description": "Is autoscaling enabled for this node pool."
        },
        "locationPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoscalingLocationPolicy",
          "description": "Location policy used when scaling up a nodepool."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes for one location in the NodePool. Must be >= min_node_count. There has to be enough quota to scale up the cluster."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes for one location in the NodePool. Must be >= 1 and <= max_node_count."
        },
        "totalMaxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes in the node pool. Must be greater than total_min_node_count. There has to be enough quota to scale up the cluster. The total_*_node_count fields are mutually exclusive with the *_node_count fields."
        },
        "totalMinNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes in the node pool. Must be greater than 1 less than total_max_node_count. The total_*_node_count fields are mutually exclusive with the *_node_count fields."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodePoolAutoscalingLocationPolicy": {
      "description": "Location policy used when scaling up a nodepool.",
      "type": "string",
      "enum": [
        {
          "name": "LocationPolicyUnspecified",
          "description": "Not set.",
          "value": "LOCATION_POLICY_UNSPECIFIED"
        },
        {
          "name": "Balanced",
          "description": "BALANCED is a best effort policy that aims to balance the sizes of different zones.",
          "value": "BALANCED"
        },
        {
          "name": "Any",
          "description": "ANY policy picks zones that have the highest capacity available.",
          "value": "ANY"
        }
      ]
    },
    "google-native:container/v1:NodePoolAutoscalingResponse": {
      "description": "NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage.",
      "properties": {
        "autoprovisioned": {
          "type": "boolean",
          "description": "Can this node pool be deleted automatically."
        },
        "enabled": {
          "type": "boolean",
          "description": "Is autoscaling enabled for this node pool."
        },
        "locationPolicy": {
          "type": "string",
          "description": "Location policy used when scaling up a nodepool."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes for one location in the NodePool. Must be >= min_node_count. There has to be enough quota to scale up the cluster."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes for one location in the NodePool. Must be >= 1 and <= max_node_count."
        },
        "totalMaxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes in the node pool. Must be greater than total_min_node_count. There has to be enough quota to scale up the cluster. The total_*_node_count fields are mutually exclusive with the *_node_count fields."
        },
        "totalMinNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes in the node pool. Must be greater than 1 less than total_max_node_count. The total_*_node_count fields are mutually exclusive with the *_node_count fields."
        }
      },
      "type": "object",
      "required": [
        "autoprovisioned",
        "enabled",
        "locationPolicy",
        "maxNodeCount",
        "minNodeCount",
        "totalMaxNodeCount",
        "totalMinNodeCount"
      ]
    },
    "google-native:container/v1:NodePoolDefaults": {
      "description": "Subset of Nodepool message that has defaults.",
      "properties": {
        "nodeConfigDefaults": {
          "$ref": "#/types/google-native:container%2Fv1:NodeConfigDefaults",
          "description": "Subset of NodeConfig message that has defaults."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodePoolDefaultsResponse": {
      "description": "Subset of Nodepool message that has defaults.",
      "properties": {
        "nodeConfigDefaults": {
          "$ref": "#/types/google-native:container%2Fv1:NodeConfigDefaultsResponse",
          "description": "Subset of NodeConfig message that has defaults."
        }
      },
      "type": "object",
      "required": [
        "nodeConfigDefaults"
      ]
    },
    "google-native:container/v1:NodePoolLoggingConfig": {
      "description": "NodePoolLoggingConfig specifies logging configuration for nodepools.",
      "properties": {
        "variantConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LoggingVariantConfig",
          "description": "Logging variant configuration."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodePoolLoggingConfigResponse": {
      "description": "NodePoolLoggingConfig specifies logging configuration for nodepools.",
      "properties": {
        "variantConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LoggingVariantConfigResponse",
          "description": "Logging variant configuration."
        }
      },
      "type": "object",
      "required": [
        "variantConfig"
      ]
    },
    "google-native:container/v1:NodePoolResponse": {
      "description": "NodePool contains the name and configuration for a cluster's node pool. Node pools are a set of nodes (i.e. VM's), with a common configuration and specification, under the control of the cluster master. They may have a set of Kubernetes labels applied to them, which may be used to reference them during pod scheduling. They may also be resized up or down, to accommodate the workload.",
      "properties": {
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoscalingResponse",
          "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
        },
        "bestEffortProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1:BestEffortProvisioningResponse",
          "description": "Enable best effort provisioning for nodes"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:StatusConditionResponse"
          },
          "description": "Which conditions caused the current node pool state."
        },
        "config": {
          "$ref": "#/types/google-native:container%2Fv1:NodeConfigResponse",
          "description": "The node configuration of the pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota."
        },
        "instanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1:NodeManagementResponse",
          "description": "NodeManagement configuration for this NodePool."
        },
        "maxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraintResponse",
          "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
        },
        "name": {
          "type": "string",
          "description": "The name of the node pool."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodeNetworkConfigResponse",
          "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
        },
        "placementPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:PlacementPolicyResponse",
          "description": "Specifies the node placement policy."
        },
        "podIpv4CidrSize": {
          "type": "integer",
          "description": "[Output only] The pod CIDR block size per node in this node pool."
        },
        "queuedProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1:QueuedProvisioningResponse",
          "description": "Specifies the configuration of queued provisioning."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "[Output only] The status of the nodes in this pool instance."
        },
        "statusMessage": {
          "type": "string",
          "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.",
          "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available."
        },
        "updateInfo": {
          "$ref": "#/types/google-native:container%2Fv1:UpdateInfoResponse",
          "description": "[Output only] Update info contains relevant information during a node pool update."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1:UpgradeSettingsResponse",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        },
        "version": {
          "type": "string",
          "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version)."
        }
      },
      "type": "object",
      "required": [
        "autoscaling",
        "bestEffortProvisioning",
        "conditions",
        "config",
        "etag",
        "initialNodeCount",
        "instanceGroupUrls",
        "locations",
        "management",
        "maxPodsConstraint",
        "name",
        "networkConfig",
        "placementPolicy",
        "podIpv4CidrSize",
        "queuedProvisioning",
        "selfLink",
        "status",
        "statusMessage",
        "updateInfo",
        "upgradeSettings",
        "version"
      ]
    },
    "google-native:container/v1:NodeTaint": {
      "description": "Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.",
      "properties": {
        "effect": {
          "$ref": "#/types/google-native:container%2Fv1:NodeTaintEffect",
          "description": "Effect for taint."
        },
        "key": {
          "type": "string",
          "description": "Key for taint."
        },
        "value": {
          "type": "string",
          "description": "Value for taint."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NodeTaintEffect": {
      "description": "Effect for taint.",
      "type": "string",
      "enum": [
        {
          "name": "EffectUnspecified",
          "description": "Not set",
          "value": "EFFECT_UNSPECIFIED"
        },
        {
          "name": "NoSchedule",
          "description": "NoSchedule",
          "value": "NO_SCHEDULE"
        },
        {
          "name": "PreferNoSchedule",
          "description": "PreferNoSchedule",
          "value": "PREFER_NO_SCHEDULE"
        },
        {
          "name": "NoExecute",
          "description": "NoExecute",
          "value": "NO_EXECUTE"
        }
      ]
    },
    "google-native:container/v1:NodeTaintResponse": {
      "description": "Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.",
      "properties": {
        "effect": {
          "type": "string",
          "description": "Effect for taint."
        },
        "key": {
          "type": "string",
          "description": "Key for taint."
        },
        "value": {
          "type": "string",
          "description": "Value for taint."
        }
      },
      "type": "object",
      "required": [
        "effect",
        "key",
        "value"
      ]
    },
    "google-native:container/v1:NodeTaints": {
      "description": "Collection of Kubernetes [node taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration).",
      "properties": {
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:NodeTaint"
          },
          "description": "List of node taints."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NotificationConfig": {
      "description": "NotificationConfig is the configuration of notifications.",
      "properties": {
        "pubsub": {
          "$ref": "#/types/google-native:container%2Fv1:PubSub",
          "description": "Notification config for Pub/Sub."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:NotificationConfigResponse": {
      "description": "NotificationConfig is the configuration of notifications.",
      "properties": {
        "pubsub": {
          "$ref": "#/types/google-native:container%2Fv1:PubSubResponse",
          "description": "Notification config for Pub/Sub."
        }
      },
      "type": "object",
      "required": [
        "pubsub"
      ]
    },
    "google-native:container/v1:ParentProductConfig": {
      "description": "ParentProductConfig is the configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of a GKE cluster and take the ownership of the cluster.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels contain the configuration of the parent product."
        },
        "productName": {
          "type": "string",
          "description": "Name of the parent product associated with the cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ParentProductConfigResponse": {
      "description": "ParentProductConfig is the configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of a GKE cluster and take the ownership of the cluster.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels contain the configuration of the parent product."
        },
        "productName": {
          "type": "string",
          "description": "Name of the parent product associated with the cluster."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "productName"
      ]
    },
    "google-native:container/v1:PlacementPolicy": {
      "description": "PlacementPolicy defines the placement policy used by the node pool.",
      "properties": {
        "policyName": {
          "type": "string",
          "description": "If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned."
        },
        "tpuTopology": {
          "type": "string",
          "description": "Optional. TPU placement topology for pod slice node pool. https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies"
        },
        "type": {
          "$ref": "#/types/google-native:container%2Fv1:PlacementPolicyType",
          "description": "The type of placement."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:PlacementPolicyResponse": {
      "description": "PlacementPolicy defines the placement policy used by the node pool.",
      "properties": {
        "policyName": {
          "type": "string",
          "description": "If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned."
        },
        "tpuTopology": {
          "type": "string",
          "description": "Optional. TPU placement topology for pod slice node pool. https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies"
        },
        "type": {
          "type": "string",
          "description": "The type of placement."
        }
      },
      "type": "object",
      "required": [
        "policyName",
        "tpuTopology",
        "type"
      ]
    },
    "google-native:container/v1:PlacementPolicyType": {
      "description": "The type of placement.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "TYPE_UNSPECIFIED specifies no requirements on nodes placement.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Compact",
          "description": "COMPACT specifies node placement in the same availability domain to ensure low communication latency.",
          "value": "COMPACT"
        }
      ]
    },
    "google-native:container/v1:PodCIDROverprovisionConfig": {
      "description": "[PRIVATE FIELD] Config for pod CIDR size overprovisioning.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:PodCIDROverprovisionConfigResponse": {
      "description": "[PRIVATE FIELD] Config for pod CIDR size overprovisioning.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default."
        }
      },
      "type": "object",
      "required": [
        "disable"
      ]
    },
    "google-native:container/v1:PrivateClusterConfig": {
      "description": "Configuration options for private clusters.",
      "properties": {
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Whether the master's internal IP address is used as the cluster endpoint."
        },
        "enablePrivateNodes": {
          "type": "boolean",
          "description": "Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking."
        },
        "masterGlobalAccessConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PrivateClusterMasterGlobalAccessConfig",
          "description": "Controls master global access settings."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster's network."
        },
        "privateEndpointSubnetwork": {
          "type": "string",
          "description": "Subnet to provision the master's private endpoint during cluster creation. Specified in projects/*/regions/*/subnetworks/* format."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:PrivateClusterConfigResponse": {
      "description": "Configuration options for private clusters.",
      "properties": {
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Whether the master's internal IP address is used as the cluster endpoint."
        },
        "enablePrivateNodes": {
          "type": "boolean",
          "description": "Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking."
        },
        "masterGlobalAccessConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PrivateClusterMasterGlobalAccessConfigResponse",
          "description": "Controls master global access settings."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster's network."
        },
        "peeringName": {
          "type": "string",
          "description": "The peering name in the customer VPC used by this cluster."
        },
        "privateEndpoint": {
          "type": "string",
          "description": "The internal IP address of this cluster's master endpoint."
        },
        "privateEndpointSubnetwork": {
          "type": "string",
          "description": "Subnet to provision the master's private endpoint during cluster creation. Specified in projects/*/regions/*/subnetworks/* format."
        },
        "publicEndpoint": {
          "type": "string",
          "description": "The external IP address of this cluster's master endpoint."
        }
      },
      "type": "object",
      "required": [
        "enablePrivateEndpoint",
        "enablePrivateNodes",
        "masterGlobalAccessConfig",
        "masterIpv4CidrBlock",
        "peeringName",
        "privateEndpoint",
        "privateEndpointSubnetwork",
        "publicEndpoint"
      ]
    },
    "google-native:container/v1:PrivateClusterMasterGlobalAccessConfig": {
      "description": "Configuration for controlling master global access settings.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whenever master is accessible globally or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:PrivateClusterMasterGlobalAccessConfigResponse": {
      "description": "Configuration for controlling master global access settings.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whenever master is accessible globally or not."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:PubSub": {
      "description": "Pub/Sub specific notification config.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable notifications for Pub/Sub."
        },
        "filter": {
          "$ref": "#/types/google-native:container%2Fv1:Filter",
          "description": "Allows filtering to one or more specific event types. If no filter is specified, or if a filter is specified with no event types, all event types will be sent"
        },
        "topic": {
          "type": "string",
          "description": "The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:PubSubResponse": {
      "description": "Pub/Sub specific notification config.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable notifications for Pub/Sub."
        },
        "filter": {
          "$ref": "#/types/google-native:container%2Fv1:FilterResponse",
          "description": "Allows filtering to one or more specific event types. If no filter is specified, or if a filter is specified with no event types, all event types will be sent"
        },
        "topic": {
          "type": "string",
          "description": "The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "filter",
        "topic"
      ]
    },
    "google-native:container/v1:QueuedProvisioning": {
      "description": "QueuedProvisioning defines the queued provisioning used by the node pool.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Denotes that this nodepool is QRM specific, meaning nodes can be only obtained through queuing via the Cluster Autoscaler ProvisioningRequest API."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:QueuedProvisioningResponse": {
      "description": "QueuedProvisioning defines the queued provisioning used by the node pool.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Denotes that this nodepool is QRM specific, meaning nodes can be only obtained through queuing via the Cluster Autoscaler ProvisioningRequest API."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:RangeInfoResponse": {
      "description": "RangeInfo contains the range name and the range utilization by this cluster.",
      "properties": {
        "rangeName": {
          "type": "string",
          "description": "[Output only] Name of a range."
        },
        "utilization": {
          "type": "number",
          "description": "[Output only] The utilization of the range."
        }
      },
      "type": "object",
      "required": [
        "rangeName",
        "utilization"
      ]
    },
    "google-native:container/v1:RecurringTimeWindow": {
      "description": "Represents an arbitrary window of time that recurs.",
      "properties": {
        "recurrence": {
          "type": "string",
          "description": "An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you'd use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you'd use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time's specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported."
        },
        "window": {
          "$ref": "#/types/google-native:container%2Fv1:TimeWindow",
          "description": "The window of the first recurrence."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:RecurringTimeWindowResponse": {
      "description": "Represents an arbitrary window of time that recurs.",
      "properties": {
        "recurrence": {
          "type": "string",
          "description": "An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you'd use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you'd use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time's specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported."
        },
        "window": {
          "$ref": "#/types/google-native:container%2Fv1:TimeWindowResponse",
          "description": "The window of the first recurrence."
        }
      },
      "type": "object",
      "required": [
        "recurrence",
        "window"
      ]
    },
    "google-native:container/v1:ReleaseChannel": {
      "description": "ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled.",
      "properties": {
        "channel": {
          "$ref": "#/types/google-native:container%2Fv1:ReleaseChannelChannel",
          "description": "channel specifies which release channel the cluster is subscribed to."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ReleaseChannelChannel": {
      "description": "channel specifies which release channel the cluster is subscribed to.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "No channel specified.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Rapid",
          "description": "RAPID channel is offered on an early access basis for customers who want to test new releases. WARNING: Versions available in the RAPID Channel may be subject to unresolved issues with no known workaround and are not subject to any SLAs.",
          "value": "RAPID"
        },
        {
          "name": "Regular",
          "description": "Clusters subscribed to REGULAR receive versions that are considered GA quality. REGULAR is intended for production users who want to take advantage of new features.",
          "value": "REGULAR"
        },
        {
          "name": "Stable",
          "description": "Clusters subscribed to STABLE receive versions that are known to be stable and reliable in production.",
          "value": "STABLE"
        }
      ]
    },
    "google-native:container/v1:ReleaseChannelConfigResponse": {
      "description": "ReleaseChannelConfig exposes configuration for a release channel.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "The release channel this configuration applies to."
        },
        "defaultVersion": {
          "type": "string",
          "description": "The default version for newly created clusters on the channel."
        },
        "validVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of valid versions for the channel."
        }
      },
      "type": "object",
      "required": [
        "channel",
        "defaultVersion",
        "validVersions"
      ]
    },
    "google-native:container/v1:ReleaseChannelResponse": {
      "description": "ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "channel specifies which release channel the cluster is subscribed to."
        }
      },
      "type": "object",
      "required": [
        "channel"
      ]
    },
    "google-native:container/v1:ReservationAffinity": {
      "description": "[ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from.",
      "properties": {
        "consumeReservationType": {
          "$ref": "#/types/google-native:container%2Fv1:ReservationAffinityConsumeReservationType",
          "description": "Corresponds to the type of reservation consumption."
        },
        "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 its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label value(s) of reservation resource(s)."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ReservationAffinityConsumeReservationType": {
      "description": "Corresponds to the type of reservation consumption.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Default value. This should not be used.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "NoReservation",
          "description": "Do not consume from any reserved capacity.",
          "value": "NO_RESERVATION"
        },
        {
          "name": "AnyReservation",
          "description": "Consume any reservation available.",
          "value": "ANY_RESERVATION"
        },
        {
          "name": "SpecificReservation",
          "description": "Must consume from a specific reservation. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_RESERVATION"
        }
      ]
    },
    "google-native:container/v1:ReservationAffinityResponse": {
      "description": "[ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from.",
      "properties": {
        "consumeReservationType": {
          "type": "string",
          "description": "Corresponds to the type of reservation consumption."
        },
        "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 its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label value(s) of reservation resource(s)."
        }
      },
      "type": "object",
      "required": [
        "consumeReservationType",
        "key",
        "values"
      ]
    },
    "google-native:container/v1:ResourceLabels": {
      "description": "Collection of [GCP labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels).",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of node label keys and node label values."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ResourceLimit": {
      "description": "Contains information about amount of some resource in the cluster. For memory, value should be in GB.",
      "properties": {
        "maximum": {
          "type": "string",
          "description": "Maximum amount of the resource in the cluster."
        },
        "minimum": {
          "type": "string",
          "description": "Minimum amount of the resource in the cluster."
        },
        "resourceType": {
          "type": "string",
          "description": "Resource name \"cpu\", \"memory\" or gpu-specific string."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ResourceLimitResponse": {
      "description": "Contains information about amount of some resource in the cluster. For memory, value should be in GB.",
      "properties": {
        "maximum": {
          "type": "string",
          "description": "Maximum amount of the resource in the cluster."
        },
        "minimum": {
          "type": "string",
          "description": "Minimum amount of the resource in the cluster."
        },
        "resourceType": {
          "type": "string",
          "description": "Resource name \"cpu\", \"memory\" or gpu-specific string."
        }
      },
      "type": "object",
      "required": [
        "maximum",
        "minimum",
        "resourceType"
      ]
    },
    "google-native:container/v1:ResourceManagerTags": {
      "description": "A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values.",
      "properties": {
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ResourceManagerTagsResponse": {
      "description": "A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values.",
      "properties": {
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`"
        }
      },
      "type": "object",
      "required": [
        "tags"
      ]
    },
    "google-native:container/v1:ResourceUsageExportConfig": {
      "description": "Configuration for exporting cluster resource usages.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:container%2Fv1:BigQueryDestination",
          "description": "Configuration to use BigQuery as usage export destination."
        },
        "consumptionMeteringConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ConsumptionMeteringConfig",
          "description": "Configuration to enable resource consumption metering."
        },
        "enableNetworkEgressMetering": {
          "type": "boolean",
          "description": "Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ResourceUsageExportConfigResponse": {
      "description": "Configuration for exporting cluster resource usages.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:container%2Fv1:BigQueryDestinationResponse",
          "description": "Configuration to use BigQuery as usage export destination."
        },
        "consumptionMeteringConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ConsumptionMeteringConfigResponse",
          "description": "Configuration to enable resource consumption metering."
        },
        "enableNetworkEgressMetering": {
          "type": "boolean",
          "description": "Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination",
        "consumptionMeteringConfig",
        "enableNetworkEgressMetering"
      ]
    },
    "google-native:container/v1:SandboxConfig": {
      "description": "SandboxConfig contains configurations of the sandbox to use for the node.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:container%2Fv1:SandboxConfigType",
          "description": "Type of the sandbox to use for the node."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:SandboxConfigResponse": {
      "description": "SandboxConfig contains configurations of the sandbox to use for the node.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of the sandbox to use for the node."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:container/v1:SandboxConfigType": {
      "description": "Type of the sandbox to use for the node.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Default value. This should not be used.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Gvisor",
          "description": "Run sandbox using gvisor.",
          "value": "GVISOR"
        }
      ]
    },
    "google-native:container/v1:SecurityPostureConfig": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:container%2Fv1:SecurityPostureConfigMode",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "$ref": "#/types/google-native:container%2Fv1:SecurityPostureConfigVulnerabilityMode",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:SecurityPostureConfigMode": {
      "description": "Sets which mode to use for Security Posture features.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value not specified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disables Security Posture features on the cluster.",
          "value": "DISABLED"
        },
        {
          "name": "Basic",
          "description": "Applies Security Posture features on the cluster.",
          "value": "BASIC"
        }
      ]
    },
    "google-native:container/v1:SecurityPostureConfigResponse": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "type": "string",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "vulnerabilityMode"
      ]
    },
    "google-native:container/v1:SecurityPostureConfigVulnerabilityMode": {
      "description": "Sets which mode to use for vulnerability scanning.",
      "type": "string",
      "enum": [
        {
          "name": "VulnerabilityModeUnspecified",
          "description": "Default value not specified.",
          "value": "VULNERABILITY_MODE_UNSPECIFIED"
        },
        {
          "name": "VulnerabilityDisabled",
          "description": "Disables vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_DISABLED"
        },
        {
          "name": "VulnerabilityBasic",
          "description": "Applies basic vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_BASIC"
        }
      ]
    },
    "google-native:container/v1:ServiceExternalIPsConfig": {
      "description": "Config to block services with externalIPs field.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Services with ExternalIPs field are allowed or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ServiceExternalIPsConfigResponse": {
      "description": "Config to block services with externalIPs field.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Services with ExternalIPs field are allowed or not."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot"
      ]
    },
    "google-native:container/v1:ShieldedNodes": {
      "description": "Configuration of Shielded Nodes feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Shielded Nodes features are enabled on all nodes in this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:ShieldedNodesResponse": {
      "description": "Configuration of Shielded Nodes feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Shielded Nodes features are enabled on all nodes in this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:SoleTenantConfig": {
      "description": "SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool.",
      "properties": {
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:NodeAffinity"
          },
          "description": "NodeAffinities used to match to a shared sole tenant node group."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:SoleTenantConfigResponse": {
      "description": "SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool.",
      "properties": {
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:NodeAffinityResponse"
          },
          "description": "NodeAffinities used to match to a shared sole tenant node group."
        }
      },
      "type": "object",
      "required": [
        "nodeAffinities"
      ]
    },
    "google-native:container/v1:StandardRolloutPolicy": {
      "description": "Standard rollout policy is the default policy for blue-green.",
      "properties": {
        "batchNodeCount": {
          "type": "integer",
          "description": "Number of blue nodes to drain in a batch."
        },
        "batchPercentage": {
          "type": "number",
          "description": "Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0]."
        },
        "batchSoakDuration": {
          "type": "string",
          "description": "Soak time after each batch gets drained. Default to zero."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:StandardRolloutPolicyResponse": {
      "description": "Standard rollout policy is the default policy for blue-green.",
      "properties": {
        "batchNodeCount": {
          "type": "integer",
          "description": "Number of blue nodes to drain in a batch."
        },
        "batchPercentage": {
          "type": "number",
          "description": "Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0]."
        },
        "batchSoakDuration": {
          "type": "string",
          "description": "Soak time after each batch gets drained. Default to zero."
        }
      },
      "type": "object",
      "required": [
        "batchNodeCount",
        "batchPercentage",
        "batchSoakDuration"
      ]
    },
    "google-native:container/v1:StatusCondition": {
      "description": "StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).",
      "properties": {
        "canonicalCode": {
          "$ref": "#/types/google-native:container%2Fv1:StatusConditionCanonicalCode",
          "description": "Canonical code of the condition."
        },
        "code": {
          "$ref": "#/types/google-native:container%2Fv1:StatusConditionCode",
          "description": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead.",
          "deprecationMessage": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead."
        },
        "message": {
          "type": "string",
          "description": "Human-friendly representation of the condition"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:StatusConditionCanonicalCode": {
      "description": "Canonical code of the condition.",
      "type": "string",
      "enum": [
        {
          "name": "Ok",
          "description": "Not an error; returned on success. HTTP Mapping: 200 OK",
          "value": "OK"
        },
        {
          "name": "Cancelled",
          "description": "The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request",
          "value": "CANCELLED"
        },
        {
          "name": "Unknown",
          "description": "Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error",
          "value": "UNKNOWN"
        },
        {
          "name": "InvalidArgument",
          "description": "The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request",
          "value": "INVALID_ARGUMENT"
        },
        {
          "name": "DeadlineExceeded",
          "description": "The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout",
          "value": "DEADLINE_EXCEEDED"
        },
        {
          "name": "NotFound",
          "description": "Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found",
          "value": "NOT_FOUND"
        },
        {
          "name": "AlreadyExists",
          "description": "The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict",
          "value": "ALREADY_EXISTS"
        },
        {
          "name": "PermissionDenied",
          "description": "The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden",
          "value": "PERMISSION_DENIED"
        },
        {
          "name": "Unauthenticated",
          "description": "The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized",
          "value": "UNAUTHENTICATED"
        },
        {
          "name": "ResourceExhausted",
          "description": "Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests",
          "value": "RESOURCE_EXHAUSTED"
        },
        {
          "name": "FailedPrecondition",
          "description": "The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an \"rmdir\" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request",
          "value": "FAILED_PRECONDITION"
        },
        {
          "name": "Aborted",
          "description": "The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict",
          "value": "ABORTED"
        },
        {
          "name": "OutOfRange",
          "description": "The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request",
          "value": "OUT_OF_RANGE"
        },
        {
          "name": "Unimplemented",
          "description": "The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Internal",
          "description": "Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error",
          "value": "INTERNAL"
        },
        {
          "name": "Unavailable",
          "description": "The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable",
          "value": "UNAVAILABLE"
        },
        {
          "name": "DataLoss",
          "description": "Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error",
          "value": "DATA_LOSS"
        }
      ]
    },
    "google-native:container/v1:StatusConditionCode": {
      "description": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "UNKNOWN indicates a generic condition.",
          "value": "UNKNOWN"
        },
        {
          "name": "GceStockout",
          "description": "GCE_STOCKOUT indicates that Google Compute Engine resources are temporarily unavailable.",
          "value": "GCE_STOCKOUT"
        },
        {
          "name": "GkeServiceAccountDeleted",
          "description": "GKE_SERVICE_ACCOUNT_DELETED indicates that the user deleted their robot service account.",
          "value": "GKE_SERVICE_ACCOUNT_DELETED"
        },
        {
          "name": "GceQuotaExceeded",
          "description": "Google Compute Engine quota was exceeded.",
          "value": "GCE_QUOTA_EXCEEDED"
        },
        {
          "name": "SetByOperator",
          "description": "Cluster state was manually changed by an SRE due to a system logic error.",
          "value": "SET_BY_OPERATOR"
        },
        {
          "name": "CloudKmsKeyError",
          "description": "Unable to perform an encrypt operation against the CloudKMS key used for etcd level encryption.",
          "value": "CLOUD_KMS_KEY_ERROR"
        },
        {
          "name": "CaExpiring",
          "description": "Cluster CA is expiring soon.",
          "value": "CA_EXPIRING"
        }
      ]
    },
    "google-native:container/v1:StatusConditionResponse": {
      "description": "StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).",
      "properties": {
        "canonicalCode": {
          "type": "string",
          "description": "Canonical code of the condition."
        },
        "code": {
          "type": "string",
          "description": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead.",
          "deprecationMessage": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead."
        },
        "message": {
          "type": "string",
          "description": "Human-friendly representation of the condition"
        }
      },
      "type": "object",
      "required": [
        "canonicalCode",
        "code",
        "message"
      ]
    },
    "google-native:container/v1:TimeWindow": {
      "description": "Represents an arbitrary window of time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time that the window ends. The end time should take place after the start time."
        },
        "maintenanceExclusionOptions": {
          "$ref": "#/types/google-native:container%2Fv1:MaintenanceExclusionOptions",
          "description": "MaintenanceExclusionOptions provides maintenance exclusion related options."
        },
        "startTime": {
          "type": "string",
          "description": "The time that the window first starts."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:TimeWindowResponse": {
      "description": "Represents an arbitrary window of time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time that the window ends. The end time should take place after the start time."
        },
        "maintenanceExclusionOptions": {
          "$ref": "#/types/google-native:container%2Fv1:MaintenanceExclusionOptionsResponse",
          "description": "MaintenanceExclusionOptions provides maintenance exclusion related options."
        },
        "startTime": {
          "type": "string",
          "description": "The time that the window first starts."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "maintenanceExclusionOptions",
        "startTime"
      ]
    },
    "google-native:container/v1:UpdateInfoResponse": {
      "description": "UpdateInfo contains resource (instance groups, etc), status and other intermediate information relevant to a node pool upgrade.",
      "properties": {
        "blueGreenInfo": {
          "$ref": "#/types/google-native:container%2Fv1:BlueGreenInfoResponse",
          "description": "Information of a blue-green upgrade."
        }
      },
      "type": "object",
      "required": [
        "blueGreenInfo"
      ]
    },
    "google-native:container/v1:UpgradeSettings": {
      "description": "These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted.",
      "properties": {
        "blueGreenSettings": {
          "$ref": "#/types/google-native:container%2Fv1:BlueGreenSettings",
          "description": "Settings for blue-green upgrade strategy."
        },
        "maxSurge": {
          "type": "integer",
          "description": "The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process."
        },
        "maxUnavailable": {
          "type": "integer",
          "description": "The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready."
        },
        "strategy": {
          "$ref": "#/types/google-native:container%2Fv1:UpgradeSettingsStrategy",
          "description": "Update strategy of the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:UpgradeSettingsResponse": {
      "description": "These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted.",
      "properties": {
        "blueGreenSettings": {
          "$ref": "#/types/google-native:container%2Fv1:BlueGreenSettingsResponse",
          "description": "Settings for blue-green upgrade strategy."
        },
        "maxSurge": {
          "type": "integer",
          "description": "The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process."
        },
        "maxUnavailable": {
          "type": "integer",
          "description": "The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready."
        },
        "strategy": {
          "type": "string",
          "description": "Update strategy of the node pool."
        }
      },
      "type": "object",
      "required": [
        "blueGreenSettings",
        "maxSurge",
        "maxUnavailable",
        "strategy"
      ]
    },
    "google-native:container/v1:UpgradeSettingsStrategy": {
      "description": "Update strategy of the node pool.",
      "type": "string",
      "enum": [
        {
          "name": "NodePoolUpdateStrategyUnspecified",
          "description": "Default value if unset. GKE internally defaults the update strategy to SURGE for unspecified strategies.",
          "value": "NODE_POOL_UPDATE_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "BlueGreen",
          "description": "blue-green upgrade.",
          "value": "BLUE_GREEN"
        },
        {
          "name": "Surge",
          "description": "SURGE is the traditional way of upgrade a node pool. max_surge and max_unavailable determines the level of upgrade parallelism.",
          "value": "SURGE"
        }
      ]
    },
    "google-native:container/v1:VerticalPodAutoscaling": {
      "description": "VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables vertical pod autoscaling."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:VerticalPodAutoscalingResponse": {
      "description": "VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables vertical pod autoscaling."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:VirtualNIC": {
      "description": "Configuration of gVNIC feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether gVNIC features are enabled in the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:VirtualNICResponse": {
      "description": "Configuration of gVNIC feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether gVNIC features are enabled in the node pool."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1:WindowsNodeConfig": {
      "description": "Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings",
      "properties": {
        "osVersion": {
          "$ref": "#/types/google-native:container%2Fv1:WindowsNodeConfigOsVersion",
          "description": "OSVersion specifies the Windows node config to be used on the node"
        }
      },
      "type": "object"
    },
    "google-native:container/v1:WindowsNodeConfigOsVersion": {
      "description": "OSVersion specifies the Windows node config to be used on the node",
      "type": "string",
      "enum": [
        {
          "name": "OsVersionUnspecified",
          "description": "When OSVersion is not specified",
          "value": "OS_VERSION_UNSPECIFIED"
        },
        {
          "name": "OsVersionLtsc2019",
          "description": "LTSC2019 specifies to use LTSC2019 as the Windows Servercore Base Image",
          "value": "OS_VERSION_LTSC2019"
        },
        {
          "name": "OsVersionLtsc2022",
          "description": "LTSC2022 specifies to use LTSC2022 as the Windows Servercore Base Image",
          "value": "OS_VERSION_LTSC2022"
        }
      ]
    },
    "google-native:container/v1:WindowsNodeConfigResponse": {
      "description": "Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings",
      "properties": {
        "osVersion": {
          "type": "string",
          "description": "OSVersion specifies the Windows node config to be used on the node"
        }
      },
      "type": "object",
      "required": [
        "osVersion"
      ]
    },
    "google-native:container/v1:WorkloadIdentityConfig": {
      "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.",
      "properties": {
        "workloadPool": {
          "type": "string",
          "description": "The workload pool to attach all Kubernetes service accounts to."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:WorkloadIdentityConfigResponse": {
      "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.",
      "properties": {
        "workloadPool": {
          "type": "string",
          "description": "The workload pool to attach all Kubernetes service accounts to."
        }
      },
      "type": "object",
      "required": [
        "workloadPool"
      ]
    },
    "google-native:container/v1:WorkloadMetadataConfig": {
      "description": "WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadMetadataConfigMode",
          "description": "Mode is the configuration for how to expose metadata to workloads running on the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:WorkloadMetadataConfigMode": {
      "description": "Mode is the configuration for how to expose metadata to workloads running on the node pool.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Not set.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "GceMetadata",
          "description": "Expose all Compute Engine metadata to pods.",
          "value": "GCE_METADATA"
        },
        {
          "name": "GkeMetadata",
          "description": "Run the GKE Metadata Server on this node. The GKE Metadata Server exposes a metadata API to workloads that is compatible with the V1 Compute Metadata APIs exposed by the Compute Engine and App Engine Metadata Servers. This feature can only be enabled if Workload Identity is enabled at the cluster level.",
          "value": "GKE_METADATA"
        }
      ]
    },
    "google-native:container/v1:WorkloadMetadataConfigResponse": {
      "description": "WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Mode is the configuration for how to expose metadata to workloads running on the node pool."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:container/v1:WorkloadPolicyConfig": {
      "description": "WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters.",
      "properties": {
        "allowNetAdmin": {
          "type": "boolean",
          "description": "If true, workloads can use NET_ADMIN capability."
        }
      },
      "type": "object"
    },
    "google-native:container/v1:WorkloadPolicyConfigResponse": {
      "description": "WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters.",
      "properties": {
        "allowNetAdmin": {
          "type": "boolean",
          "description": "If true, workloads can use NET_ADMIN capability."
        }
      },
      "type": "object",
      "required": [
        "allowNetAdmin"
      ]
    },
    "google-native:container/v1beta1:AcceleratorConfig": {
      "description": "AcceleratorConfig represents a Hardware Accelerator request.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "The number of the accelerator cards exposed to an instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)"
        },
        "gpuDriverInstallationConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GPUDriverInstallationConfig",
          "description": "The configuration for auto installation of GPU driver."
        },
        "gpuPartitionSize": {
          "type": "string",
          "description": "Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning)."
        },
        "gpuSharingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GPUSharingConfig",
          "description": "The configuration for GPU sharing options."
        },
        "maxTimeSharedClientsPerGpu": {
          "type": "string",
          "description": "The number of time-shared GPU resources to expose for each physical GPU."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AcceleratorConfigResponse": {
      "description": "AcceleratorConfig represents a Hardware Accelerator request.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "The number of the accelerator cards exposed to an instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)"
        },
        "gpuDriverInstallationConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GPUDriverInstallationConfigResponse",
          "description": "The configuration for auto installation of GPU driver."
        },
        "gpuPartitionSize": {
          "type": "string",
          "description": "Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning)."
        },
        "gpuSharingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GPUSharingConfigResponse",
          "description": "The configuration for GPU sharing options."
        },
        "maxTimeSharedClientsPerGpu": {
          "type": "string",
          "description": "The number of time-shared GPU resources to expose for each physical GPU."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType",
        "gpuDriverInstallationConfig",
        "gpuPartitionSize",
        "gpuSharingConfig",
        "maxTimeSharedClientsPerGpu"
      ]
    },
    "google-native:container/v1beta1:AdditionalNodeNetworkConfig": {
      "description": "AdditionalNodeNetworkConfig is the configuration for additional node networks within the NodeNetworkConfig message",
      "properties": {
        "network": {
          "type": "string",
          "description": "Name of the VPC where the additional interface belongs"
        },
        "subnetwork": {
          "type": "string",
          "description": "Name of the subnetwork where the additional interface belongs"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AdditionalNodeNetworkConfigResponse": {
      "description": "AdditionalNodeNetworkConfig is the configuration for additional node networks within the NodeNetworkConfig message",
      "properties": {
        "network": {
          "type": "string",
          "description": "Name of the VPC where the additional interface belongs"
        },
        "subnetwork": {
          "type": "string",
          "description": "Name of the subnetwork where the additional interface belongs"
        }
      },
      "type": "object",
      "required": [
        "network",
        "subnetwork"
      ]
    },
    "google-native:container/v1beta1:AdditionalPodNetworkConfig": {
      "description": "AdditionalPodNetworkConfig is the configuration for additional pod networks within the NodeNetworkConfig message",
      "properties": {
        "maxPodsPerNode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraint",
          "description": "The maximum number of pods per node which use this pod network"
        },
        "secondaryPodRange": {
          "type": "string",
          "description": "The name of the secondary range on the subnet which provides IP address for this pod range"
        },
        "subnetwork": {
          "type": "string",
          "description": "Name of the subnetwork where the additional pod network belongs"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AdditionalPodNetworkConfigResponse": {
      "description": "AdditionalPodNetworkConfig is the configuration for additional pod networks within the NodeNetworkConfig message",
      "properties": {
        "maxPodsPerNode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraintResponse",
          "description": "The maximum number of pods per node which use this pod network"
        },
        "secondaryPodRange": {
          "type": "string",
          "description": "The name of the secondary range on the subnet which provides IP address for this pod range"
        },
        "subnetwork": {
          "type": "string",
          "description": "Name of the subnetwork where the additional pod network belongs"
        }
      },
      "type": "object",
      "required": [
        "maxPodsPerNode",
        "secondaryPodRange",
        "subnetwork"
      ]
    },
    "google-native:container/v1beta1:AdditionalPodRangesConfig": {
      "description": "AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message.",
      "properties": {
        "podRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Name for pod secondary ipv4 range which has the actual range defined ahead."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AdditionalPodRangesConfigResponse": {
      "description": "AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message.",
      "properties": {
        "podRangeInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:RangeInfoResponse"
          },
          "description": "[Output only] Information for additional pod range."
        },
        "podRangeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Name for pod secondary ipv4 range which has the actual range defined ahead."
        }
      },
      "type": "object",
      "required": [
        "podRangeInfo",
        "podRangeNames"
      ]
    },
    "google-native:container/v1beta1:AddonsConfig": {
      "description": "Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality.",
      "properties": {
        "cloudRunConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:CloudRunConfig",
          "description": "Configuration for the Cloud Run addon. The `IstioConfig` addon must be enabled in order to enable Cloud Run addon. This option can only be enabled at cluster creation time."
        },
        "configConnectorConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ConfigConnectorConfig",
          "description": "Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API"
        },
        "dnsCacheConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DnsCacheConfig",
          "description": "Configuration for NodeLocalDNS, a dns cache running on cluster nodes"
        },
        "gcePersistentDiskCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcePersistentDiskCsiDriverConfig",
          "description": "Configuration for the Compute Engine Persistent Disk CSI driver."
        },
        "gcpFilestoreCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcpFilestoreCsiDriverConfig",
          "description": "Configuration for the GCP Filestore CSI driver."
        },
        "gcsFuseCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcsFuseCsiDriverConfig",
          "description": "Configuration for the Cloud Storage Fuse CSI driver."
        },
        "gkeBackupAgentConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GkeBackupAgentConfig",
          "description": "Configuration for the Backup for GKE agent addon."
        },
        "horizontalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HorizontalPodAutoscaling",
          "description": "Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods."
        },
        "httpLoadBalancing": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HttpLoadBalancing",
          "description": "Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster."
        },
        "istioConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IstioConfig",
          "description": "Configuration for Istio, an open platform to connect, manage, and secure microservices."
        },
        "kalmConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:KalmConfig",
          "description": "Configuration for the KALM addon, which manages the lifecycle of k8s applications."
        },
        "kubernetesDashboard": {
          "$ref": "#/types/google-native:container%2Fv1beta1:KubernetesDashboard",
          "description": "Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards"
        },
        "networkPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPolicyConfig",
          "description": "Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AddonsConfigResponse": {
      "description": "Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality.",
      "properties": {
        "cloudRunConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:CloudRunConfigResponse",
          "description": "Configuration for the Cloud Run addon. The `IstioConfig` addon must be enabled in order to enable Cloud Run addon. This option can only be enabled at cluster creation time."
        },
        "configConnectorConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ConfigConnectorConfigResponse",
          "description": "Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API"
        },
        "dnsCacheConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DnsCacheConfigResponse",
          "description": "Configuration for NodeLocalDNS, a dns cache running on cluster nodes"
        },
        "gcePersistentDiskCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcePersistentDiskCsiDriverConfigResponse",
          "description": "Configuration for the Compute Engine Persistent Disk CSI driver."
        },
        "gcpFilestoreCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcpFilestoreCsiDriverConfigResponse",
          "description": "Configuration for the GCP Filestore CSI driver."
        },
        "gcsFuseCsiDriverConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcsFuseCsiDriverConfigResponse",
          "description": "Configuration for the Cloud Storage Fuse CSI driver."
        },
        "gkeBackupAgentConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GkeBackupAgentConfigResponse",
          "description": "Configuration for the Backup for GKE agent addon."
        },
        "horizontalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HorizontalPodAutoscalingResponse",
          "description": "Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods."
        },
        "httpLoadBalancing": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HttpLoadBalancingResponse",
          "description": "Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster."
        },
        "istioConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IstioConfigResponse",
          "description": "Configuration for Istio, an open platform to connect, manage, and secure microservices."
        },
        "kalmConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:KalmConfigResponse",
          "description": "Configuration for the KALM addon, which manages the lifecycle of k8s applications."
        },
        "kubernetesDashboard": {
          "$ref": "#/types/google-native:container%2Fv1beta1:KubernetesDashboardResponse",
          "description": "Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards"
        },
        "networkPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPolicyConfigResponse",
          "description": "Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes."
        }
      },
      "type": "object",
      "required": [
        "cloudRunConfig",
        "configConnectorConfig",
        "dnsCacheConfig",
        "gcePersistentDiskCsiDriverConfig",
        "gcpFilestoreCsiDriverConfig",
        "gcsFuseCsiDriverConfig",
        "gkeBackupAgentConfig",
        "horizontalPodAutoscaling",
        "httpLoadBalancing",
        "istioConfig",
        "kalmConfig",
        "kubernetesDashboard",
        "networkPolicyConfig"
      ]
    },
    "google-native:container/v1beta1:AdvancedDatapathObservabilityConfig": {
      "description": "AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath.",
      "properties": {
        "enableMetrics": {
          "type": "boolean",
          "description": "Expose flow metrics on nodes"
        },
        "relayMode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AdvancedDatapathObservabilityConfigRelayMode",
          "description": "Method used to make Relay available"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AdvancedDatapathObservabilityConfigRelayMode": {
      "description": "Method used to make Relay available",
      "type": "string",
      "enum": [
        {
          "name": "RelayModeUnspecified",
          "description": "Default value. This shouldn't be used.",
          "value": "RELAY_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "disabled",
          "value": "DISABLED"
        },
        {
          "name": "InternalVpcLb",
          "description": "exposed via internal load balancer",
          "value": "INTERNAL_VPC_LB"
        },
        {
          "name": "ExternalLb",
          "description": "exposed via external load balancer",
          "value": "EXTERNAL_LB"
        }
      ]
    },
    "google-native:container/v1beta1:AdvancedDatapathObservabilityConfigResponse": {
      "description": "AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath.",
      "properties": {
        "enableMetrics": {
          "type": "boolean",
          "description": "Expose flow metrics on nodes"
        },
        "relayMode": {
          "type": "string",
          "description": "Method used to make Relay available"
        }
      },
      "type": "object",
      "required": [
        "enableMetrics",
        "relayMode"
      ]
    },
    "google-native:container/v1beta1:AdvancedMachineFeatures": {
      "description": "Specifies options for controlling advanced machine features.",
      "properties": {
        "threadsPerCore": {
          "type": "string",
          "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."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AdvancedMachineFeaturesResponse": {
      "description": "Specifies options for controlling advanced machine features.",
      "properties": {
        "threadsPerCore": {
          "type": "string",
          "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."
        }
      },
      "type": "object",
      "required": [
        "threadsPerCore"
      ]
    },
    "google-native:container/v1beta1:AuthenticatorGroupsConfig": {
      "description": "Configuration for returning group information from authenticators.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether this cluster should return group membership lookups during authentication using a group of security groups."
        },
        "securityGroup": {
          "type": "string",
          "description": "The name of the security group-of-groups to be used. Only relevant if enabled = true."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AuthenticatorGroupsConfigResponse": {
      "description": "Configuration for returning group information from authenticators.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether this cluster should return group membership lookups during authentication using a group of security groups."
        },
        "securityGroup": {
          "type": "string",
          "description": "The name of the security group-of-groups to be used. Only relevant if enabled = true."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "securityGroup"
      ]
    },
    "google-native:container/v1beta1:AutoUpgradeOptions": {
      "description": "AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed.",
      "type": "object"
    },
    "google-native:container/v1beta1:AutoUpgradeOptionsResponse": {
      "description": "AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed.",
      "properties": {
        "autoUpgradeStartTime": {
          "type": "string",
          "description": "[Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "description": {
          "type": "string",
          "description": "[Output only] This field is set when upgrades are about to commence with the description of the upgrade."
        }
      },
      "type": "object",
      "required": [
        "autoUpgradeStartTime",
        "description"
      ]
    },
    "google-native:container/v1beta1:Autopilot": {
      "description": "Autopilot is the configuration for Autopilot settings on the cluster.",
      "properties": {
        "conversionStatus": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AutopilotConversionStatus",
          "description": "ConversionStatus shows conversion status."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enable Autopilot"
        },
        "workloadPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadPolicyConfig",
          "description": "Workload policy configuration for Autopilot."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AutopilotConversionStatus": {
      "description": "AutopilotConversionStatus represents conversion status.",
      "type": "object"
    },
    "google-native:container/v1beta1:AutopilotConversionStatusResponse": {
      "description": "AutopilotConversionStatus represents conversion status.",
      "properties": {
        "state": {
          "type": "string",
          "description": "The current state of the conversion."
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:container/v1beta1:AutopilotResponse": {
      "description": "Autopilot is the configuration for Autopilot settings on the cluster.",
      "properties": {
        "conversionStatus": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AutopilotConversionStatusResponse",
          "description": "ConversionStatus shows conversion status."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enable Autopilot"
        },
        "workloadPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadPolicyConfigResponse",
          "description": "Workload policy configuration for Autopilot."
        }
      },
      "type": "object",
      "required": [
        "conversionStatus",
        "enabled",
        "workloadPolicyConfig"
      ]
    },
    "google-native:container/v1beta1:AutoprovisioningNodePoolDefaults": {
      "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.",
      "properties": {
        "bootDiskKmsKey": {
          "type": "string",
          "description": " The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption"
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') If unspecified, the default disk type is 'pd-standard'"
        },
        "imageType": {
          "type": "string",
          "description": "The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types."
        },
        "insecureKubeletReadonlyPortEnabled": {
          "type": "boolean",
          "description": "Enable or disable Kubelet read only port."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeManagement",
          "description": "NodeManagement configuration for this NodePool."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass \"automatic\" as field value.",
          "deprecationMessage": "Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass \"automatic\" as field value."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of Google API scopes to be made available on all of the node VMs under the \"default\" service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the \"default\" service account is used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ShieldedInstanceConfig",
          "description": "Shielded Instance options."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpgradeSettings",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:AutoprovisioningNodePoolDefaultsResponse": {
      "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.",
      "properties": {
        "bootDiskKmsKey": {
          "type": "string",
          "description": " The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption"
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') If unspecified, the default disk type is 'pd-standard'"
        },
        "imageType": {
          "type": "string",
          "description": "The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types."
        },
        "insecureKubeletReadonlyPortEnabled": {
          "type": "boolean",
          "description": "Enable or disable Kubelet read only port."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeManagementResponse",
          "description": "NodeManagement configuration for this NodePool."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass \"automatic\" as field value.",
          "deprecationMessage": "Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass \"automatic\" as field value."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of Google API scopes to be made available on all of the node VMs under the \"default\" service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the \"default\" service account is used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ShieldedInstanceConfigResponse",
          "description": "Shielded Instance options."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpgradeSettingsResponse",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        }
      },
      "type": "object",
      "required": [
        "bootDiskKmsKey",
        "diskSizeGb",
        "diskType",
        "imageType",
        "insecureKubeletReadonlyPortEnabled",
        "management",
        "minCpuPlatform",
        "oauthScopes",
        "serviceAccount",
        "shieldedInstanceConfig",
        "upgradeSettings"
      ]
    },
    "google-native:container/v1beta1:AvailableVersionResponse": {
      "description": "Deprecated.",
      "properties": {
        "reason": {
          "type": "string",
          "description": "Reason for availability."
        },
        "version": {
          "type": "string",
          "description": "Kubernetes version."
        }
      },
      "type": "object",
      "required": [
        "reason",
        "version"
      ]
    },
    "google-native:container/v1beta1:BestEffortProvisioning": {
      "description": "Best effort provisioning.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "When this is enabled, cluster/node pool creations will ignore non-fatal errors like stockout to best provision as many nodes as possible right now and eventually bring up all target number of nodes"
        },
        "minProvisionNodes": {
          "type": "integer",
          "description": "Minimum number of nodes to be provisioned to be considered as succeeded, and the rest of nodes will be provisioned gradually and eventually when stockout issue has been resolved."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:BestEffortProvisioningResponse": {
      "description": "Best effort provisioning.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "When this is enabled, cluster/node pool creations will ignore non-fatal errors like stockout to best provision as many nodes as possible right now and eventually bring up all target number of nodes"
        },
        "minProvisionNodes": {
          "type": "integer",
          "description": "Minimum number of nodes to be provisioned to be considered as succeeded, and the rest of nodes will be provisioned gradually and eventually when stockout issue has been resolved."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "minProvisionNodes"
      ]
    },
    "google-native:container/v1beta1:BigQueryDestination": {
      "description": "Parameters for using BigQuery as the destination of resource usage export.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of a BigQuery Dataset."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:BigQueryDestinationResponse": {
      "description": "Parameters for using BigQuery as the destination of resource usage export.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of a BigQuery Dataset."
        }
      },
      "type": "object",
      "required": [
        "datasetId"
      ]
    },
    "google-native:container/v1beta1:BinaryAuthorization": {
      "description": "Configuration for Binary Authorization.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.",
          "deprecationMessage": "This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored."
        },
        "evaluationMode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BinaryAuthorizationEvaluationMode",
          "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED."
        },
        "policyBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:PolicyBinding"
          },
          "description": "Optional. Binauthz policies that apply to this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:BinaryAuthorizationEvaluationMode": {
      "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.",
      "type": "string",
      "enum": [
        {
          "name": "EvaluationModeUnspecified",
          "description": "Default value",
          "value": "EVALUATION_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable BinaryAuthorization",
          "value": "DISABLED"
        },
        {
          "name": "ProjectSingletonPolicyEnforce",
          "description": "Enforce Kubernetes admission requests with BinaryAuthorization using the project's singleton policy. This is equivalent to setting the enabled boolean to true.",
          "value": "PROJECT_SINGLETON_POLICY_ENFORCE"
        },
        {
          "name": "PolicyBindings",
          "description": "Use Binary Authorization with the policies specified in policy_bindings.",
          "value": "POLICY_BINDINGS"
        },
        {
          "name": "PolicyBindingsAndProjectSingletonPolicyEnforce",
          "description": "Use Binary Authorization with the policies specified in policy_bindings, and also with the project's singleton policy in enforcement mode.",
          "value": "POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE"
        }
      ]
    },
    "google-native:container/v1beta1:BinaryAuthorizationResponse": {
      "description": "Configuration for Binary Authorization.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.",
          "deprecationMessage": "This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored."
        },
        "evaluationMode": {
          "type": "string",
          "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED."
        },
        "policyBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:PolicyBindingResponse"
          },
          "description": "Optional. Binauthz policies that apply to this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "evaluationMode",
        "policyBindings"
      ]
    },
    "google-native:container/v1beta1:BlueGreenInfoResponse": {
      "description": "Information relevant to blue-green upgrade.",
      "properties": {
        "blueInstanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with blue pool."
        },
        "bluePoolDeletionStartTime": {
          "type": "string",
          "description": "Time to start deleting blue pool to complete blue-green upgrade, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "greenInstanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with green pool."
        },
        "greenPoolVersion": {
          "type": "string",
          "description": "Version of green pool."
        },
        "phase": {
          "type": "string",
          "description": "Current blue-green upgrade phase."
        }
      },
      "type": "object",
      "required": [
        "blueInstanceGroupUrls",
        "bluePoolDeletionStartTime",
        "greenInstanceGroupUrls",
        "greenPoolVersion",
        "phase"
      ]
    },
    "google-native:container/v1beta1:BlueGreenSettings": {
      "description": "Settings for blue-green upgrade.",
      "properties": {
        "nodePoolSoakDuration": {
          "type": "string",
          "description": "Time needed after draining entire blue pool. After this period, blue pool will be cleaned up."
        },
        "standardRolloutPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:StandardRolloutPolicy",
          "description": "Standard policy for the blue-green upgrade."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:BlueGreenSettingsResponse": {
      "description": "Settings for blue-green upgrade.",
      "properties": {
        "nodePoolSoakDuration": {
          "type": "string",
          "description": "Time needed after draining entire blue pool. After this period, blue pool will be cleaned up."
        },
        "standardRolloutPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:StandardRolloutPolicyResponse",
          "description": "Standard policy for the blue-green upgrade."
        }
      },
      "type": "object",
      "required": [
        "nodePoolSoakDuration",
        "standardRolloutPolicy"
      ]
    },
    "google-native:container/v1beta1:CidrBlock": {
      "description": "CidrBlock contains an optional name and one CIDR block.",
      "properties": {
        "cidrBlock": {
          "type": "string",
          "description": "cidr_block must be specified in CIDR notation."
        },
        "displayName": {
          "type": "string",
          "description": "display_name is an optional field for users to identify CIDR blocks."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:CidrBlockResponse": {
      "description": "CidrBlock contains an optional name and one CIDR block.",
      "properties": {
        "cidrBlock": {
          "type": "string",
          "description": "cidr_block must be specified in CIDR notation."
        },
        "displayName": {
          "type": "string",
          "description": "display_name is an optional field for users to identify CIDR blocks."
        }
      },
      "type": "object",
      "required": [
        "cidrBlock",
        "displayName"
      ]
    },
    "google-native:container/v1beta1:ClientCertificateConfig": {
      "description": "Configuration for client certificates on the cluster.",
      "properties": {
        "issueClientCertificate": {
          "type": "boolean",
          "description": "Issue a client certificate."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ClientCertificateConfigResponse": {
      "description": "Configuration for client certificates on the cluster.",
      "properties": {
        "issueClientCertificate": {
          "type": "boolean",
          "description": "Issue a client certificate."
        }
      },
      "type": "object",
      "required": [
        "issueClientCertificate"
      ]
    },
    "google-native:container/v1beta1:CloudRunConfig": {
      "description": "Configuration options for the Cloud Run feature.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether Cloud Run addon is enabled for this cluster."
        },
        "loadBalancerType": {
          "$ref": "#/types/google-native:container%2Fv1beta1:CloudRunConfigLoadBalancerType",
          "description": "Which load balancer type is installed for Cloud Run."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:CloudRunConfigLoadBalancerType": {
      "description": "Which load balancer type is installed for Cloud Run.",
      "type": "string",
      "enum": [
        {
          "name": "LoadBalancerTypeUnspecified",
          "description": "Load balancer type for Cloud Run is unspecified.",
          "value": "LOAD_BALANCER_TYPE_UNSPECIFIED"
        },
        {
          "name": "LoadBalancerTypeExternal",
          "description": "Install external load balancer for Cloud Run.",
          "value": "LOAD_BALANCER_TYPE_EXTERNAL"
        },
        {
          "name": "LoadBalancerTypeInternal",
          "description": "Install internal load balancer for Cloud Run.",
          "value": "LOAD_BALANCER_TYPE_INTERNAL"
        }
      ]
    },
    "google-native:container/v1beta1:CloudRunConfigResponse": {
      "description": "Configuration options for the Cloud Run feature.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether Cloud Run addon is enabled for this cluster."
        },
        "loadBalancerType": {
          "type": "string",
          "description": "Which load balancer type is installed for Cloud Run."
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "loadBalancerType"
      ]
    },
    "google-native:container/v1beta1:ClusterAutoscaling": {
      "description": "ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs.",
      "properties": {
        "autoprovisioningLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes can be created by NAP."
        },
        "autoprovisioningNodePoolDefaults": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AutoprovisioningNodePoolDefaults",
          "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP."
        },
        "autoscalingProfile": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterAutoscalingAutoscalingProfile",
          "description": "Defines autoscaling behaviour."
        },
        "enableNodeAutoprovisioning": {
          "type": "boolean",
          "description": "Enables automatic node pool creation and deletion."
        },
        "resourceLimits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ResourceLimit"
          },
          "description": "Contains global constraints regarding minimum and maximum amount of resources in the cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ClusterAutoscalingAutoscalingProfile": {
      "description": "Defines autoscaling behaviour.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileUnspecified",
          "description": "No change to autoscaling configuration.",
          "value": "PROFILE_UNSPECIFIED"
        },
        {
          "name": "OptimizeUtilization",
          "description": "Prioritize optimizing utilization of resources.",
          "value": "OPTIMIZE_UTILIZATION"
        },
        {
          "name": "Balanced",
          "description": "Use default (balanced) autoscaling configuration.",
          "value": "BALANCED"
        }
      ]
    },
    "google-native:container/v1beta1:ClusterAutoscalingResponse": {
      "description": "ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs.",
      "properties": {
        "autoprovisioningLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes can be created by NAP."
        },
        "autoprovisioningNodePoolDefaults": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AutoprovisioningNodePoolDefaultsResponse",
          "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP."
        },
        "autoscalingProfile": {
          "type": "string",
          "description": "Defines autoscaling behaviour."
        },
        "enableNodeAutoprovisioning": {
          "type": "boolean",
          "description": "Enables automatic node pool creation and deletion."
        },
        "resourceLimits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ResourceLimitResponse"
          },
          "description": "Contains global constraints regarding minimum and maximum amount of resources in the cluster."
        }
      },
      "type": "object",
      "required": [
        "autoprovisioningLocations",
        "autoprovisioningNodePoolDefaults",
        "autoscalingProfile",
        "enableNodeAutoprovisioning",
        "resourceLimits"
      ]
    },
    "google-native:container/v1beta1:ClusterNetworkPerformanceConfig": {
      "description": "Configuration of all network bandwidth tiers",
      "properties": {
        "totalEgressBandwidthTier": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterNetworkPerformanceConfigTotalEgressBandwidthTier",
          "description": "Specifies the total network bandwidth tier for the NodePool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ClusterNetworkPerformanceConfigResponse": {
      "description": "Configuration of all network bandwidth tiers",
      "properties": {
        "totalEgressBandwidthTier": {
          "type": "string",
          "description": "Specifies the total network bandwidth tier for the NodePool."
        }
      },
      "type": "object",
      "required": [
        "totalEgressBandwidthTier"
      ]
    },
    "google-native:container/v1beta1:ClusterNetworkPerformanceConfigTotalEgressBandwidthTier": {
      "description": "Specifies the total network bandwidth tier for the NodePool.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Default value",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Tier1",
          "description": "Higher bandwidth, actual values based on VM size.",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:container/v1beta1:ClusterTelemetry": {
      "description": "Telemetry integration for the cluster.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterTelemetryType",
          "description": "Type of the integration."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ClusterTelemetryResponse": {
      "description": "Telemetry integration for the cluster.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of the integration."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:container/v1beta1:ClusterTelemetryType": {
      "description": "Type of the integration.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Not set.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Monitoring integration is disabled.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "Monitoring integration is enabled.",
          "value": "ENABLED"
        },
        {
          "name": "SystemOnly",
          "description": "Only system components are monitored and logged.",
          "value": "SYSTEM_ONLY"
        }
      ]
    },
    "google-native:container/v1beta1:ClusterUpdate": {
      "description": "ClusterUpdate describes an update to the cluster. Exactly one update can be applied to a cluster with each request, so at most one field can be provided.",
      "properties": {
        "additionalPodRangesConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AdditionalPodRangesConfig",
          "description": "The additional pod ranges to be added to the cluster. These pod ranges can be used by node pools to allocate pod IPs."
        },
        "desiredAddonsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AddonsConfig",
          "description": "Configurations for the various addons available to run in the cluster."
        },
        "desiredAuthenticatorGroupsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AuthenticatorGroupsConfig",
          "description": "AuthenticatorGroupsConfig specifies the config for the cluster security groups settings."
        },
        "desiredAutopilotWorkloadPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadPolicyConfig",
          "description": "The desired workload policy configuration for the autopilot cluster."
        },
        "desiredBinaryAuthorization": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BinaryAuthorization",
          "description": "The desired configuration options for the Binary Authorization feature."
        },
        "desiredClusterAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterAutoscaling",
          "description": "Cluster-level autoscaling configuration."
        },
        "desiredClusterTelemetry": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterTelemetry",
          "description": "The desired telemetry integration for the cluster."
        },
        "desiredCostManagementConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:CostManagementConfig",
          "description": "The desired configuration for the fine-grained cost management feature."
        },
        "desiredDatabaseEncryption": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DatabaseEncryption",
          "description": "Configuration of etcd encryption."
        },
        "desiredDatapathProvider": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterUpdateDesiredDatapathProvider",
          "description": "The desired datapath provider for the cluster."
        },
        "desiredDefaultSnatStatus": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DefaultSnatStatus",
          "description": "The desired status of whether to disable default sNAT for this cluster."
        },
        "desiredDnsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DNSConfig",
          "description": "DNSConfig contains clusterDNS config for this cluster."
        },
        "desiredEnableFqdnNetworkPolicy": {
          "type": "boolean",
          "description": "Enable/Disable FQDN Network Policy for the cluster."
        },
        "desiredEnablePrivateEndpoint": {
          "type": "boolean",
          "description": "Enable/Disable private endpoint for the cluster's master."
        },
        "desiredFleet": {
          "$ref": "#/types/google-native:container%2Fv1beta1:Fleet",
          "description": "The desired fleet configuration for the cluster."
        },
        "desiredGatewayApiConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GatewayAPIConfig",
          "description": "The desired config of Gateway API on this cluster."
        },
        "desiredGcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcfsConfig",
          "description": "The desired GCFS config for the cluster."
        },
        "desiredHostMaintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HostMaintenancePolicy",
          "description": "HostMaintenancePolicy contains the desired maintenance policy for the Google Compute Engine hosts."
        },
        "desiredIdentityServiceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IdentityServiceConfig",
          "description": "The desired Identity Service component configuration."
        },
        "desiredImageType": {
          "type": "string",
          "description": "The desired image type for the node pool. NOTE: Set the \"desired_node_pool\" field as well."
        },
        "desiredInTransitEncryptionConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterUpdateDesiredInTransitEncryptionConfig",
          "description": "Specify the details of in-transit encryption."
        },
        "desiredIntraNodeVisibilityConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IntraNodeVisibilityConfig",
          "description": "The desired config of Intra-node visibility."
        },
        "desiredK8sBetaApis": {
          "$ref": "#/types/google-native:container%2Fv1beta1:K8sBetaAPIConfig",
          "description": "Beta APIs enabled for cluster."
        },
        "desiredL4ilbSubsettingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ILBSubsettingConfig",
          "description": "The desired L4 Internal Load Balancer Subsetting configuration."
        },
        "desiredLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The desired list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes should be located. This list must always include the cluster's primary zone. Warning: changing cluster locations will update the locations of all node pools and will result in nodes being added and/or removed."
        },
        "desiredLoggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LoggingConfig",
          "description": "The desired logging configuration."
        },
        "desiredLoggingService": {
          "type": "string",
          "description": "The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions."
        },
        "desiredMaster": {
          "$ref": "#/types/google-native:container%2Fv1beta1:Master",
          "description": "Configuration for master components."
        },
        "desiredMasterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MasterAuthorizedNetworksConfig",
          "description": "The desired configuration options for master authorized networks feature."
        },
        "desiredMasterVersion": {
          "type": "string",
          "description": "The Kubernetes version to change the master to. The only valid value is the latest supported version. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"-\": picks the default Kubernetes version"
        },
        "desiredMeshCertificates": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MeshCertificates",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "desiredMonitoringConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MonitoringConfig",
          "description": "The desired monitoring configuration."
        },
        "desiredMonitoringService": {
          "type": "string",
          "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions."
        },
        "desiredNetworkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterNetworkPerformanceConfig",
          "description": "The desired network performance config."
        },
        "desiredNodePoolAutoConfigNetworkTags": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkTags",
          "description": "The desired network tags that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
        },
        "desiredNodePoolAutoConfigResourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ResourceManagerTags",
          "description": "The desired resource manager tags that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
        },
        "desiredNodePoolAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoscaling",
          "description": "Autoscaler configuration for the node pool specified in desired_node_pool_id. If there is only one pool in the cluster and desired_node_pool_id is not provided then the change applies to that single node pool."
        },
        "desiredNodePoolId": {
          "type": "string",
          "description": "The node pool to be upgraded. This field is mandatory if \"desired_node_version\", \"desired_image_family\", \"desired_node_pool_autoscaling\", or \"desired_workload_metadata_config\" is specified and there is more than one node pool on the cluster."
        },
        "desiredNodePoolLoggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolLoggingConfig",
          "description": "The desired node pool logging configuration defaults for the cluster."
        },
        "desiredNodeVersion": {
          "type": "string",
          "description": "The Kubernetes version to change the nodes to (typically an upgrade). Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"-\": picks the Kubernetes master version"
        },
        "desiredNotificationConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NotificationConfig",
          "description": "The desired notification configuration."
        },
        "desiredParentProductConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ParentProductConfig",
          "description": "The desired parent product config for the cluster."
        },
        "desiredPodSecurityPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PodSecurityPolicyConfig",
          "description": "The desired configuration options for the PodSecurityPolicy feature."
        },
        "desiredPrivateClusterConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PrivateClusterConfig",
          "description": "The desired private cluster configuration."
        },
        "desiredPrivateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterUpdateDesiredPrivateIpv6GoogleAccess",
          "description": "The desired state of IPv6 connectivity to Google Services."
        },
        "desiredProtectConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ProtectConfig",
          "description": "Deprecated: Use DesiredSecurityPostureConfig instead. Enable/Disable Protect API features for the cluster.",
          "deprecationMessage": "Deprecated: Use DesiredSecurityPostureConfig instead. Enable/Disable Protect API features for the cluster."
        },
        "desiredReleaseChannel": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ReleaseChannel",
          "description": "The desired release channel configuration."
        },
        "desiredResourceUsageExportConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ResourceUsageExportConfig",
          "description": "The desired configuration for exporting resource usage."
        },
        "desiredSecurityPostureConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SecurityPostureConfig",
          "description": "Enable/Disable Security Posture API features for the cluster."
        },
        "desiredServiceExternalIpsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ServiceExternalIPsConfig",
          "description": "ServiceExternalIPsConfig specifies the config for the use of Services with ExternalIPs field."
        },
        "desiredShieldedNodes": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ShieldedNodes",
          "description": "Configuration for Shielded Nodes."
        },
        "desiredStackType": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterUpdateDesiredStackType",
          "description": "The desired stack type of the cluster. If a stack type is provided and does not match the current stack type of the cluster, update will attempt to change the stack type to the new type."
        },
        "desiredTpuConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:TpuConfig",
          "description": "The desired Cloud TPU configuration."
        },
        "desiredVerticalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:VerticalPodAutoscaling",
          "description": "Cluster-level Vertical Pod Autoscaling configuration."
        },
        "desiredWorkloadAltsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadALTSConfig",
          "description": "Configuration for direct-path (via ALTS) with workload identity."
        },
        "desiredWorkloadCertificates": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadCertificates",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "desiredWorkloadIdentityConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadIdentityConfig",
          "description": "Configuration for Workload Identity."
        },
        "enableK8sBetaApis": {
          "$ref": "#/types/google-native:container%2Fv1beta1:K8sBetaAPIConfig",
          "description": "Kubernetes open source beta apis enabled on the cluster. Only beta apis"
        },
        "etag": {
          "type": "string",
          "description": "The current etag of the cluster. If an etag is provided and does not match the current etag of the cluster, update will be blocked and an ABORTED error will be returned."
        },
        "removedAdditionalPodRangesConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AdditionalPodRangesConfig",
          "description": "The additional pod ranges that are to be removed from the cluster. The pod ranges specified here must have been specified earlier in the 'additional_pod_ranges_config' argument."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ClusterUpdateDesiredDatapathProvider": {
      "description": "The desired datapath provider for the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "DatapathProviderUnspecified",
          "description": "Default value.",
          "value": "DATAPATH_PROVIDER_UNSPECIFIED"
        },
        {
          "name": "LegacyDatapath",
          "description": "Use the IPTables implementation based on kube-proxy.",
          "value": "LEGACY_DATAPATH"
        },
        {
          "name": "AdvancedDatapath",
          "description": "Use the eBPF based GKE Dataplane V2 with additional features. See the [GKE Dataplane V2 documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2) for more.",
          "value": "ADVANCED_DATAPATH"
        }
      ]
    },
    "google-native:container/v1beta1:ClusterUpdateDesiredInTransitEncryptionConfig": {
      "description": "Specify the details of in-transit encryption.",
      "type": "string",
      "enum": [
        {
          "name": "InTransitEncryptionConfigUnspecified",
          "description": "Unspecified, will be inferred as default - IN_TRANSIT_ENCRYPTION_UNSPECIFIED.",
          "value": "IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED"
        },
        {
          "name": "InTransitEncryptionDisabled",
          "description": "In-transit encryption is disabled.",
          "value": "IN_TRANSIT_ENCRYPTION_DISABLED"
        },
        {
          "name": "InTransitEncryptionInterNodeTransparent",
          "description": "Data in-transit is encrypted using inter-node transparent encryption.",
          "value": "IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT"
        }
      ]
    },
    "google-native:container/v1beta1:ClusterUpdateDesiredPrivateIpv6GoogleAccess": {
      "description": "The desired state of IPv6 connectivity to Google Services.",
      "type": "string",
      "enum": [
        {
          "name": "PrivateIpv6GoogleAccessUnspecified",
          "description": "Default value. Same as DISABLED",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED"
        },
        {
          "name": "PrivateIpv6GoogleAccessDisabled",
          "description": "No private access to or from Google Services",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED"
        },
        {
          "name": "PrivateIpv6GoogleAccessToGoogle",
          "description": "Enables private IPv6 access to Google Services from GKE",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE"
        },
        {
          "name": "PrivateIpv6GoogleAccessBidirectional",
          "description": "Enables private IPv6 access to and from Google Services",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL"
        }
      ]
    },
    "google-native:container/v1beta1:ClusterUpdateDesiredStackType": {
      "description": "The desired stack type of the cluster. If a stack type is provided and does not match the current stack type of the cluster, update will attempt to change the stack type to the new type.",
      "type": "string",
      "enum": [
        {
          "name": "StackTypeUnspecified",
          "description": "By default, the clusters will be IPV4 only",
          "value": "STACK_TYPE_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "The value used if the cluster is a IPV4 only",
          "value": "IPV4"
        },
        {
          "name": "Ipv4Ipv6",
          "description": "The value used if the cluster is a dual stack cluster",
          "value": "IPV4_IPV6"
        }
      ]
    },
    "google-native:container/v1beta1:ConfidentialNodes": {
      "description": "ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Confidential Nodes feature is enabled."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ConfidentialNodesResponse": {
      "description": "ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Confidential Nodes feature is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:ConfigConnectorConfig": {
      "description": "Configuration options for the Config Connector add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Cloud Connector is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ConfigConnectorConfigResponse": {
      "description": "Configuration options for the Config Connector add-on.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Cloud Connector is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:ConsumptionMeteringConfig": {
      "description": "Parameters for controlling consumption metering.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ConsumptionMeteringConfigResponse": {
      "description": "Parameters for controlling consumption metering.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:CostManagementConfig": {
      "description": "Configuration for fine-grained cost management feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the feature is enabled or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:CostManagementConfigResponse": {
      "description": "Configuration for fine-grained cost management feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the feature is enabled or not."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:DNSConfig": {
      "description": "DNSConfig contains the desired set of options for configuring clusterDNS.",
      "properties": {
        "clusterDns": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DNSConfigClusterDns",
          "description": "cluster_dns indicates which in-cluster DNS provider should be used."
        },
        "clusterDnsDomain": {
          "type": "string",
          "description": "cluster_dns_domain is the suffix used for all cluster service records."
        },
        "clusterDnsScope": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DNSConfigClusterDnsScope",
          "description": "cluster_dns_scope indicates the scope of access to cluster DNS records."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:DNSConfigClusterDns": {
      "description": "cluster_dns indicates which in-cluster DNS provider should be used.",
      "type": "string",
      "enum": [
        {
          "name": "ProviderUnspecified",
          "description": "Default value",
          "value": "PROVIDER_UNSPECIFIED"
        },
        {
          "name": "PlatformDefault",
          "description": "Use GKE default DNS provider(kube-dns) for DNS resolution.",
          "value": "PLATFORM_DEFAULT"
        },
        {
          "name": "CloudDns",
          "description": "Use CloudDNS for DNS resolution.",
          "value": "CLOUD_DNS"
        },
        {
          "name": "KubeDns",
          "description": "Use KubeDNS for DNS resolution.",
          "value": "KUBE_DNS"
        }
      ]
    },
    "google-native:container/v1beta1:DNSConfigClusterDnsScope": {
      "description": "cluster_dns_scope indicates the scope of access to cluster DNS records.",
      "type": "string",
      "enum": [
        {
          "name": "DnsScopeUnspecified",
          "description": "Default value, will be inferred as cluster scope.",
          "value": "DNS_SCOPE_UNSPECIFIED"
        },
        {
          "name": "ClusterScope",
          "description": "DNS records are accessible from within the cluster.",
          "value": "CLUSTER_SCOPE"
        },
        {
          "name": "VpcScope",
          "description": "DNS records are accessible from within the VPC.",
          "value": "VPC_SCOPE"
        }
      ]
    },
    "google-native:container/v1beta1:DNSConfigResponse": {
      "description": "DNSConfig contains the desired set of options for configuring clusterDNS.",
      "properties": {
        "clusterDns": {
          "type": "string",
          "description": "cluster_dns indicates which in-cluster DNS provider should be used."
        },
        "clusterDnsDomain": {
          "type": "string",
          "description": "cluster_dns_domain is the suffix used for all cluster service records."
        },
        "clusterDnsScope": {
          "type": "string",
          "description": "cluster_dns_scope indicates the scope of access to cluster DNS records."
        }
      },
      "type": "object",
      "required": [
        "clusterDns",
        "clusterDnsDomain",
        "clusterDnsScope"
      ]
    },
    "google-native:container/v1beta1:DailyMaintenanceWindow": {
      "description": "Time window specified for daily maintenance operations.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "Time within the maintenance window to start the maintenance operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-59] GMT."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:DailyMaintenanceWindowResponse": {
      "description": "Time window specified for daily maintenance operations.",
      "properties": {
        "duration": {
          "type": "string",
          "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
        },
        "startTime": {
          "type": "string",
          "description": "Time within the maintenance window to start the maintenance operations. It must be in format \"HH:MM\", where HH : [00-23] and MM : [00-59] GMT."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "startTime"
      ]
    },
    "google-native:container/v1beta1:DatabaseEncryption": {
      "description": "Configuration of etcd encryption.",
      "properties": {
        "keyName": {
          "type": "string",
          "description": "Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key"
        },
        "state": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DatabaseEncryptionState",
          "description": "The desired state of etcd encryption."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:DatabaseEncryptionResponse": {
      "description": "Configuration of etcd encryption.",
      "properties": {
        "keyName": {
          "type": "string",
          "description": "Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key"
        },
        "state": {
          "type": "string",
          "description": "The desired state of etcd encryption."
        }
      },
      "type": "object",
      "required": [
        "keyName",
        "state"
      ]
    },
    "google-native:container/v1beta1:DatabaseEncryptionState": {
      "description": "The desired state of etcd encryption.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "Should never be set",
          "value": "UNKNOWN"
        },
        {
          "name": "Encrypted",
          "description": "Secrets in etcd are encrypted.",
          "value": "ENCRYPTED"
        },
        {
          "name": "Decrypted",
          "description": "Secrets in etcd are stored in plain text (at etcd level) - this is unrelated to Compute Engine level full disk encryption.",
          "value": "DECRYPTED"
        }
      ]
    },
    "google-native:container/v1beta1:DefaultSnatStatus": {
      "description": "DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Disables cluster default sNAT rules."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:DefaultSnatStatusResponse": {
      "description": "DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Disables cluster default sNAT rules."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1beta1:DnsCacheConfig": {
      "description": "Configuration for NodeLocal DNSCache",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether NodeLocal DNSCache is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:DnsCacheConfigResponse": {
      "description": "Configuration for NodeLocal DNSCache",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether NodeLocal DNSCache is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:EnterpriseConfig": {
      "description": "EnterpriseConfig is the cluster enterprise configuration.",
      "type": "object"
    },
    "google-native:container/v1beta1:EnterpriseConfigResponse": {
      "description": "EnterpriseConfig is the cluster enterprise configuration.",
      "properties": {
        "clusterTier": {
          "type": "string",
          "description": "[Output only] cluster_tier specifies the premium tier of the cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterTier"
      ]
    },
    "google-native:container/v1beta1:EphemeralStorageConfig": {
      "description": "EphemeralStorageConfig contains configuration for the ephemeral storage filesystem.",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:EphemeralStorageConfigResponse": {
      "description": "EphemeralStorageConfig contains configuration for the ephemeral storage filesystem.",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object",
      "required": [
        "localSsdCount"
      ]
    },
    "google-native:container/v1beta1:EphemeralStorageLocalSsdConfig": {
      "description": "EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs.",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:EphemeralStorageLocalSsdConfigResponse": {
      "description": "EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs.",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object",
      "required": [
        "localSsdCount"
      ]
    },
    "google-native:container/v1beta1:FastSocket": {
      "description": "Configuration of Fast Socket feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Fast Socket features are enabled in the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:FastSocketResponse": {
      "description": "Configuration of Fast Socket feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Fast Socket features are enabled in the node pool."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:Filter": {
      "description": "Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent",
      "properties": {
        "eventType": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:FilterEventTypeItem"
          },
          "description": "Event types to allowlist."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:FilterEventTypeItem": {
      "type": "string",
      "enum": [
        {
          "name": "EventTypeUnspecified",
          "description": "Not set, will be ignored.",
          "value": "EVENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "UpgradeAvailableEvent",
          "description": "Corresponds with UpgradeAvailableEvent.",
          "value": "UPGRADE_AVAILABLE_EVENT"
        },
        {
          "name": "UpgradeEvent",
          "description": "Corresponds with UpgradeEvent.",
          "value": "UPGRADE_EVENT"
        },
        {
          "name": "SecurityBulletinEvent",
          "description": "Corresponds with SecurityBulletinEvent.",
          "value": "SECURITY_BULLETIN_EVENT"
        }
      ]
    },
    "google-native:container/v1beta1:FilterResponse": {
      "description": "Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent",
      "properties": {
        "eventType": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Event types to allowlist."
        }
      },
      "type": "object",
      "required": [
        "eventType"
      ]
    },
    "google-native:container/v1beta1:Fleet": {
      "description": "Fleet is the fleet configuration for the cluster.",
      "properties": {
        "project": {
          "type": "string",
          "description": "The Fleet host project(project ID or project number) where this cluster will be registered to. This field cannot be changed after the cluster has been registered."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:FleetResponse": {
      "description": "Fleet is the fleet configuration for the cluster.",
      "properties": {
        "membership": {
          "type": "string",
          "description": "[Output only] The full resource name of the registered fleet membership of the cluster, in the format `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`."
        },
        "preRegistered": {
          "type": "boolean",
          "description": "[Output only] Whether the cluster has been registered through the fleet API."
        },
        "project": {
          "type": "string",
          "description": "The Fleet host project(project ID or project number) where this cluster will be registered to. This field cannot be changed after the cluster has been registered."
        }
      },
      "type": "object",
      "required": [
        "membership",
        "preRegistered",
        "project"
      ]
    },
    "google-native:container/v1beta1:GPUDriverInstallationConfig": {
      "description": "GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed.",
      "properties": {
        "gpuDriverVersion": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GPUDriverInstallationConfigGpuDriverVersion",
          "description": "Mode for how the GPU driver is installed."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:GPUDriverInstallationConfigGpuDriverVersion": {
      "description": "Mode for how the GPU driver is installed.",
      "type": "string",
      "enum": [
        {
          "name": "GpuDriverVersionUnspecified",
          "description": "Default value is to not install any GPU driver.",
          "value": "GPU_DRIVER_VERSION_UNSPECIFIED"
        },
        {
          "name": "InstallationDisabled",
          "description": "Disable GPU driver auto installation and needs manual installation",
          "value": "INSTALLATION_DISABLED"
        },
        {
          "name": "Default",
          "description": "\"Default\" GPU driver in COS and Ubuntu.",
          "value": "DEFAULT"
        },
        {
          "name": "Latest",
          "description": "\"Latest\" GPU driver in COS.",
          "value": "LATEST"
        }
      ]
    },
    "google-native:container/v1beta1:GPUDriverInstallationConfigResponse": {
      "description": "GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed.",
      "properties": {
        "gpuDriverVersion": {
          "type": "string",
          "description": "Mode for how the GPU driver is installed."
        }
      },
      "type": "object",
      "required": [
        "gpuDriverVersion"
      ]
    },
    "google-native:container/v1beta1:GPUSharingConfig": {
      "description": "GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators.",
      "properties": {
        "gpuSharingStrategy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GPUSharingConfigGpuSharingStrategy",
          "description": "The type of GPU sharing strategy to enable on the GPU node."
        },
        "maxSharedClientsPerGpu": {
          "type": "string",
          "description": "The max number of containers that can share a physical GPU."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:GPUSharingConfigGpuSharingStrategy": {
      "description": "The type of GPU sharing strategy to enable on the GPU node.",
      "type": "string",
      "enum": [
        {
          "name": "GpuSharingStrategyUnspecified",
          "description": "Default value.",
          "value": "GPU_SHARING_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "TimeSharing",
          "description": "GPUs are time-shared between containers.",
          "value": "TIME_SHARING"
        }
      ]
    },
    "google-native:container/v1beta1:GPUSharingConfigResponse": {
      "description": "GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators.",
      "properties": {
        "gpuSharingStrategy": {
          "type": "string",
          "description": "The type of GPU sharing strategy to enable on the GPU node."
        },
        "maxSharedClientsPerGpu": {
          "type": "string",
          "description": "The max number of containers that can share a physical GPU."
        }
      },
      "type": "object",
      "required": [
        "gpuSharingStrategy",
        "maxSharedClientsPerGpu"
      ]
    },
    "google-native:container/v1beta1:GatewayAPIConfig": {
      "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster.",
      "properties": {
        "channel": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GatewayAPIConfigChannel",
          "description": "The Gateway API release channel to use for Gateway API."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:GatewayAPIConfigChannel": {
      "description": "The Gateway API release channel to use for Gateway API.",
      "type": "string",
      "enum": [
        {
          "name": "ChannelUnspecified",
          "description": "Default value.",
          "value": "CHANNEL_UNSPECIFIED"
        },
        {
          "name": "ChannelDisabled",
          "description": "Gateway API support is disabled",
          "value": "CHANNEL_DISABLED"
        },
        {
          "name": "ChannelExperimental",
          "description": "Gateway API support is enabled, experimental CRDs are installed",
          "value": "CHANNEL_EXPERIMENTAL"
        },
        {
          "name": "ChannelStandard",
          "description": "Gateway API support is enabled, standard CRDs are installed",
          "value": "CHANNEL_STANDARD"
        }
      ]
    },
    "google-native:container/v1beta1:GatewayAPIConfigResponse": {
      "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "The Gateway API release channel to use for Gateway API."
        }
      },
      "type": "object",
      "required": [
        "channel"
      ]
    },
    "google-native:container/v1beta1:GcePersistentDiskCsiDriverConfig": {
      "description": "Configuration for the Compute Engine PD CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Compute Engine PD CSI driver is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:GcePersistentDiskCsiDriverConfigResponse": {
      "description": "Configuration for the Compute Engine PD CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Compute Engine PD CSI driver is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:GcfsConfig": {
      "description": "GcfsConfig contains configurations of Google Container File System.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to use GCFS."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:GcfsConfigResponse": {
      "description": "GcfsConfig contains configurations of Google Container File System.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to use GCFS."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:GcpFilestoreCsiDriverConfig": {
      "description": "Configuration for the GCP Filestore CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the GCP Filestore CSI driver is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:GcpFilestoreCsiDriverConfigResponse": {
      "description": "Configuration for the GCP Filestore CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the GCP Filestore CSI driver is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:GcsFuseCsiDriverConfig": {
      "description": "Configuration for the Cloud Storage Fuse CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Cloud Storage Fuse CSI driver is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:GcsFuseCsiDriverConfigResponse": {
      "description": "Configuration for the Cloud Storage Fuse CSI driver.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Cloud Storage Fuse CSI driver is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:GkeBackupAgentConfig": {
      "description": "Configuration for the Backup for GKE Agent.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Backup for GKE agent is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:GkeBackupAgentConfigResponse": {
      "description": "Configuration for the Backup for GKE Agent.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the Backup for GKE agent is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:HorizontalPodAutoscaling": {
      "description": "Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:HorizontalPodAutoscalingResponse": {
      "description": "Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1beta1:HostMaintenancePolicy": {
      "description": "HostMaintenancePolicy contains the maintenance policy for the hosts on which the GKE VMs run on.",
      "properties": {
        "maintenanceInterval": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HostMaintenancePolicyMaintenanceInterval",
          "description": "Specifies the frequency of planned maintenance events."
        },
        "opportunisticMaintenanceStrategy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:OpportunisticMaintenanceStrategy",
          "description": "Strategy that will trigger maintenance on behalf of the customer."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:HostMaintenancePolicyMaintenanceInterval": {
      "description": "Specifies the frequency of planned maintenance events.",
      "type": "string",
      "enum": [
        {
          "name": "MaintenanceIntervalUnspecified",
          "description": "The maintenance interval is not explicitly specified.",
          "value": "MAINTENANCE_INTERVAL_UNSPECIFIED"
        },
        {
          "name": "AsNeeded",
          "description": "Nodes are eligible to receive infrastructure and hypervisor updates as they become available. This may result in more maintenance operations (live migrations or terminations) for the node than the PERIODIC option.",
          "value": "AS_NEEDED"
        },
        {
          "name": "Periodic",
          "description": "Nodes receive infrastructure and hypervisor updates on a periodic basis, minimizing the number of maintenance operations (live migrations or terminations) on an individual VM. This may mean underlying VMs will take longer to receive an update than if it was configured for AS_NEEDED. Security updates will still be applied as soon as they are available.",
          "value": "PERIODIC"
        }
      ]
    },
    "google-native:container/v1beta1:HostMaintenancePolicyResponse": {
      "description": "HostMaintenancePolicy contains the maintenance policy for the hosts on which the GKE VMs run on.",
      "properties": {
        "maintenanceInterval": {
          "type": "string",
          "description": "Specifies the frequency of planned maintenance events."
        },
        "opportunisticMaintenanceStrategy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:OpportunisticMaintenanceStrategyResponse",
          "description": "Strategy that will trigger maintenance on behalf of the customer."
        }
      },
      "type": "object",
      "required": [
        "maintenanceInterval",
        "opportunisticMaintenanceStrategy"
      ]
    },
    "google-native:container/v1beta1:HttpLoadBalancing": {
      "description": "Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:HttpLoadBalancingResponse": {
      "description": "Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1beta1:ILBSubsettingConfig": {
      "description": "ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer subsetting on this cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables l4 ILB subsetting for this cluster"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:IPAllocationPolicy": {
      "description": "Configuration for controlling how IPs are allocated in the cluster.",
      "properties": {
        "allowRouteOverlap": {
          "type": "boolean",
          "description": "If true, allow allocation of cluster CIDR ranges that overlap with certain kinds of network routes. By default we do not allow cluster CIDR ranges to intersect with any user declared routes. With allow_route_overlap == true, we allow overlapping with CIDR ranges that are larger than the cluster CIDR range. If this field is set to true, then cluster and services CIDRs must be fully-specified (e.g. `10.96.0.0/14`, but not `/14`), which means: 1) When `use_ip_aliases` is true, `cluster_ipv4_cidr_block` and `services_ipv4_cidr_block` must be fully-specified. 2) When `use_ip_aliases` is false, `cluster.cluster_ipv4_cidr` muse be fully-specified."
        },
        "clusterIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use cluster_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use cluster_ipv4_cidr_block."
        },
        "clusterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "clusterSecondaryRangeName": {
          "type": "string",
          "description": "The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases and create_subnetwork is false."
        },
        "createSubnetwork": {
          "type": "boolean",
          "description": "Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true."
        },
        "ipv6AccessType": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IPAllocationPolicyIpv6AccessType",
          "description": "The ipv6 access type (internal or external) when create_subnetwork is true"
        },
        "nodeIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use node_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use node_ipv4_cidr_block."
        },
        "nodeIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "podCidrOverprovisionConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PodCIDROverprovisionConfig",
          "description": "[PRIVATE FIELD] Pod CIDR size overprovisioning config for the cluster. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is doubled and then rounded off to next power of 2 to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled."
        },
        "servicesIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use services_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use services_ipv4_cidr_block."
        },
        "servicesIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "servicesSecondaryRangeName": {
          "type": "string",
          "description": "The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases and create_subnetwork is false."
        },
        "stackType": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IPAllocationPolicyStackType",
          "description": "IP stack type"
        },
        "subnetworkName": {
          "type": "string",
          "description": "A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork."
        },
        "tpuIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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. This field is deprecated, use cluster.tpu_config.ipv4_cidr_block instead.",
          "deprecationMessage": "The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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. This field is deprecated, use cluster.tpu_config.ipv4_cidr_block instead."
        },
        "useIpAliases": {
          "type": "boolean",
          "description": "Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode"
        },
        "useRoutes": {
          "type": "boolean",
          "description": "Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:IPAllocationPolicyIpv6AccessType": {
      "description": "The ipv6 access type (internal or external) when create_subnetwork is true",
      "type": "string",
      "enum": [
        {
          "name": "Ipv6AccessTypeUnspecified",
          "description": "Default value, will be defaulted as type external.",
          "value": "IPV6_ACCESS_TYPE_UNSPECIFIED"
        },
        {
          "name": "Internal",
          "description": "Access type internal (all v6 addresses are internal IPs)",
          "value": "INTERNAL"
        },
        {
          "name": "External",
          "description": "Access type external (all v6 addresses are external IPs)",
          "value": "EXTERNAL"
        }
      ]
    },
    "google-native:container/v1beta1:IPAllocationPolicyResponse": {
      "description": "Configuration for controlling how IPs are allocated in the cluster.",
      "properties": {
        "additionalPodRangesConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AdditionalPodRangesConfigResponse",
          "description": "[Output only] The additional pod ranges that are added to the cluster. These pod ranges can be used by new node pools to allocate pod IPs automatically. Once the range is removed it will not show up in IPAllocationPolicy."
        },
        "allowRouteOverlap": {
          "type": "boolean",
          "description": "If true, allow allocation of cluster CIDR ranges that overlap with certain kinds of network routes. By default we do not allow cluster CIDR ranges to intersect with any user declared routes. With allow_route_overlap == true, we allow overlapping with CIDR ranges that are larger than the cluster CIDR range. If this field is set to true, then cluster and services CIDRs must be fully-specified (e.g. `10.96.0.0/14`, but not `/14`), which means: 1) When `use_ip_aliases` is true, `cluster_ipv4_cidr_block` and `services_ipv4_cidr_block` must be fully-specified. 2) When `use_ip_aliases` is false, `cluster.cluster_ipv4_cidr` muse be fully-specified."
        },
        "clusterIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use cluster_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use cluster_ipv4_cidr_block."
        },
        "clusterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "clusterSecondaryRangeName": {
          "type": "string",
          "description": "The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases and create_subnetwork is false."
        },
        "createSubnetwork": {
          "type": "boolean",
          "description": "Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true."
        },
        "defaultPodIpv4RangeUtilization": {
          "type": "number",
          "description": "[Output only] The utilization of the cluster default IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode."
        },
        "ipv6AccessType": {
          "type": "string",
          "description": "The ipv6 access type (internal or external) when create_subnetwork is true"
        },
        "nodeIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use node_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use node_ipv4_cidr_block."
        },
        "nodeIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "podCidrOverprovisionConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PodCIDROverprovisionConfigResponse",
          "description": "[PRIVATE FIELD] Pod CIDR size overprovisioning config for the cluster. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is doubled and then rounded off to next power of 2 to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled."
        },
        "servicesIpv4Cidr": {
          "type": "string",
          "description": "This field is deprecated, use services_ipv4_cidr_block.",
          "deprecationMessage": "This field is deprecated, use services_ipv4_cidr_block."
        },
        "servicesIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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."
        },
        "servicesIpv6CidrBlock": {
          "type": "string",
          "description": "[Output only] The services IPv6 CIDR block for the cluster."
        },
        "servicesSecondaryRangeName": {
          "type": "string",
          "description": "The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases and create_subnetwork is false."
        },
        "stackType": {
          "type": "string",
          "description": "IP stack type"
        },
        "subnetIpv6CidrBlock": {
          "type": "string",
          "description": "[Output only] The subnet's IPv6 CIDR block used by nodes and pods."
        },
        "subnetworkName": {
          "type": "string",
          "description": "A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork."
        },
        "tpuIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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. This field is deprecated, use cluster.tpu_config.ipv4_cidr_block instead.",
          "deprecationMessage": "The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 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. This field is deprecated, use cluster.tpu_config.ipv4_cidr_block instead."
        },
        "useIpAliases": {
          "type": "boolean",
          "description": "Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode"
        },
        "useRoutes": {
          "type": "boolean",
          "description": "Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode"
        }
      },
      "type": "object",
      "required": [
        "additionalPodRangesConfig",
        "allowRouteOverlap",
        "clusterIpv4Cidr",
        "clusterIpv4CidrBlock",
        "clusterSecondaryRangeName",
        "createSubnetwork",
        "defaultPodIpv4RangeUtilization",
        "ipv6AccessType",
        "nodeIpv4Cidr",
        "nodeIpv4CidrBlock",
        "podCidrOverprovisionConfig",
        "servicesIpv4Cidr",
        "servicesIpv4CidrBlock",
        "servicesIpv6CidrBlock",
        "servicesSecondaryRangeName",
        "stackType",
        "subnetIpv6CidrBlock",
        "subnetworkName",
        "tpuIpv4CidrBlock",
        "useIpAliases",
        "useRoutes"
      ]
    },
    "google-native:container/v1beta1:IPAllocationPolicyStackType": {
      "description": "IP stack type",
      "type": "string",
      "enum": [
        {
          "name": "StackTypeUnspecified",
          "description": "By default, the clusters will be IPV4 only",
          "value": "STACK_TYPE_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "The value used if the cluster is a IPV4 only",
          "value": "IPV4"
        },
        {
          "name": "Ipv4Ipv6",
          "description": "The value used if the cluster is a dual stack cluster",
          "value": "IPV4_IPV6"
        }
      ]
    },
    "google-native:container/v1beta1:IdentityServiceConfig": {
      "description": "IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable the Identity Service component"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:IdentityServiceConfigResponse": {
      "description": "IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable the Identity Service component"
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:IntraNodeVisibilityConfig": {
      "description": "IntraNodeVisibilityConfig contains the desired config of the intra-node visibility on this cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables intra node visibility for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:IstioConfig": {
      "description": "Configuration options for Istio addon.",
      "properties": {
        "auth": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IstioConfigAuth",
          "description": "The specified Istio auth mode, either none, or mutual TLS."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether Istio is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:IstioConfigAuth": {
      "description": "The specified Istio auth mode, either none, or mutual TLS.",
      "type": "string",
      "enum": [
        {
          "name": "AuthNone",
          "description": "auth not enabled",
          "value": "AUTH_NONE"
        },
        {
          "name": "AuthMutualTls",
          "description": "auth mutual TLS enabled",
          "value": "AUTH_MUTUAL_TLS"
        }
      ]
    },
    "google-native:container/v1beta1:IstioConfigResponse": {
      "description": "Configuration options for Istio addon.",
      "properties": {
        "auth": {
          "type": "string",
          "description": "The specified Istio auth mode, either none, or mutual TLS."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether Istio is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "auth",
        "disabled"
      ]
    },
    "google-native:container/v1beta1:K8sBetaAPIConfig": {
      "description": "Kubernetes open source beta apis enabled on the cluster.",
      "properties": {
        "enabledApis": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "api name, e.g. storage.k8s.io/v1beta1/csistoragecapacities."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:K8sBetaAPIConfigResponse": {
      "description": "Kubernetes open source beta apis enabled on the cluster.",
      "properties": {
        "enabledApis": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "api name, e.g. storage.k8s.io/v1beta1/csistoragecapacities."
        }
      },
      "type": "object",
      "required": [
        "enabledApis"
      ]
    },
    "google-native:container/v1beta1:KalmConfig": {
      "description": "Configuration options for the KALM addon.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether KALM is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:KalmConfigResponse": {
      "description": "Configuration options for the KALM addon.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether KALM is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:KubernetesDashboard": {
      "description": "Configuration for the Kubernetes Dashboard.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the Kubernetes Dashboard is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:KubernetesDashboardResponse": {
      "description": "Configuration for the Kubernetes Dashboard.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether the Kubernetes Dashboard is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1beta1:LegacyAbac": {
      "description": "Configuration for the legacy Attribute Based Access Control authorization mode.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:LegacyAbacResponse": {
      "description": "Configuration for the legacy Attribute Based Access Control authorization mode.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:LinuxNodeConfig": {
      "description": "Parameters that can be configured on Linux nodes.",
      "properties": {
        "cgroupMode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LinuxNodeConfigCgroupMode",
          "description": "cgroup_mode specifies the cgroup mode to be used on the node."
        },
        "sysctls": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:LinuxNodeConfigCgroupMode": {
      "description": "cgroup_mode specifies the cgroup mode to be used on the node.",
      "type": "string",
      "enum": [
        {
          "name": "CgroupModeUnspecified",
          "description": "CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used. The default for the GKE node OS image will be used.",
          "value": "CGROUP_MODE_UNSPECIFIED"
        },
        {
          "name": "CgroupModeV1",
          "description": "CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on the node image.",
          "value": "CGROUP_MODE_V1"
        },
        {
          "name": "CgroupModeV2",
          "description": "CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on the node image.",
          "value": "CGROUP_MODE_V2"
        }
      ]
    },
    "google-native:container/v1beta1:LinuxNodeConfigResponse": {
      "description": "Parameters that can be configured on Linux nodes.",
      "properties": {
        "cgroupMode": {
          "type": "string",
          "description": "cgroup_mode specifies the cgroup mode to be used on the node."
        },
        "sysctls": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse"
        }
      },
      "type": "object",
      "required": [
        "cgroupMode",
        "sysctls"
      ]
    },
    "google-native:container/v1beta1:LocalNvmeSsdBlockConfig": {
      "description": "LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:LocalNvmeSsdBlockConfigResponse": {
      "description": "LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs",
      "properties": {
        "localSsdCount": {
          "type": "integer",
          "description": "Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn't support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info."
        }
      },
      "type": "object",
      "required": [
        "localSsdCount"
      ]
    },
    "google-native:container/v1beta1:LoggingComponentConfig": {
      "description": "LoggingComponentConfig is cluster logging component configuration.",
      "properties": {
        "enableComponents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:LoggingComponentConfigEnableComponentsItem"
          },
          "description": "Select components to collect logs. An empty set would disable all logging."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:LoggingComponentConfigEnableComponentsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ComponentUnspecified",
          "description": "Default value. This shouldn't be used.",
          "value": "COMPONENT_UNSPECIFIED"
        },
        {
          "name": "SystemComponents",
          "description": "system components",
          "value": "SYSTEM_COMPONENTS"
        },
        {
          "name": "Workloads",
          "description": "workloads",
          "value": "WORKLOADS"
        },
        {
          "name": "Apiserver",
          "description": "kube-apiserver",
          "value": "APISERVER"
        },
        {
          "name": "Scheduler",
          "description": "kube-scheduler",
          "value": "SCHEDULER"
        },
        {
          "name": "ControllerManager",
          "description": "kube-controller-manager",
          "value": "CONTROLLER_MANAGER"
        }
      ]
    },
    "google-native:container/v1beta1:LoggingComponentConfigResponse": {
      "description": "LoggingComponentConfig is cluster logging component configuration.",
      "properties": {
        "enableComponents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Select components to collect logs. An empty set would disable all logging."
        }
      },
      "type": "object",
      "required": [
        "enableComponents"
      ]
    },
    "google-native:container/v1beta1:LoggingConfig": {
      "description": "LoggingConfig is cluster logging configuration.",
      "properties": {
        "componentConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LoggingComponentConfig",
          "description": "Logging components configuration"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:LoggingConfigResponse": {
      "description": "LoggingConfig is cluster logging configuration.",
      "properties": {
        "componentConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LoggingComponentConfigResponse",
          "description": "Logging components configuration"
        }
      },
      "type": "object",
      "required": [
        "componentConfig"
      ]
    },
    "google-native:container/v1beta1:LoggingVariantConfig": {
      "description": "LoggingVariantConfig specifies the behaviour of the logging component.",
      "properties": {
        "variant": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LoggingVariantConfigVariant",
          "description": "Logging variant deployed on nodes."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:LoggingVariantConfigResponse": {
      "description": "LoggingVariantConfig specifies the behaviour of the logging component.",
      "properties": {
        "variant": {
          "type": "string",
          "description": "Logging variant deployed on nodes."
        }
      },
      "type": "object",
      "required": [
        "variant"
      ]
    },
    "google-native:container/v1beta1:LoggingVariantConfigVariant": {
      "description": "Logging variant deployed on nodes.",
      "type": "string",
      "enum": [
        {
          "name": "VariantUnspecified",
          "description": "Default value. This shouldn't be used.",
          "value": "VARIANT_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "default logging variant.",
          "value": "DEFAULT"
        },
        {
          "name": "MaxThroughput",
          "description": "maximum logging throughput variant.",
          "value": "MAX_THROUGHPUT"
        }
      ]
    },
    "google-native:container/v1beta1:MaintenanceExclusionOptions": {
      "description": "Represents the Maintenance exclusion option.",
      "properties": {
        "scope": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaintenanceExclusionOptionsScope",
          "description": "Scope specifies the upgrade scope which upgrades are blocked by the exclusion."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MaintenanceExclusionOptionsResponse": {
      "description": "Represents the Maintenance exclusion option.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "Scope specifies the upgrade scope which upgrades are blocked by the exclusion."
        }
      },
      "type": "object",
      "required": [
        "scope"
      ]
    },
    "google-native:container/v1beta1:MaintenanceExclusionOptionsScope": {
      "description": "Scope specifies the upgrade scope which upgrades are blocked by the exclusion.",
      "type": "string",
      "enum": [
        {
          "name": "NoUpgrades",
          "description": "NO_UPGRADES excludes all upgrades, including patch upgrades and minor upgrades across control planes and nodes. This is the default exclusion behavior.",
          "value": "NO_UPGRADES"
        },
        {
          "name": "NoMinorUpgrades",
          "description": "NO_MINOR_UPGRADES excludes all minor upgrades for the cluster, only patches are allowed.",
          "value": "NO_MINOR_UPGRADES"
        },
        {
          "name": "NoMinorOrNodeUpgrades",
          "description": "NO_MINOR_OR_NODE_UPGRADES excludes all minor upgrades for the cluster, and also exclude all node pool upgrades. Only control plane patches are allowed.",
          "value": "NO_MINOR_OR_NODE_UPGRADES"
        }
      ]
    },
    "google-native:container/v1beta1:MaintenancePolicy": {
      "description": "MaintenancePolicy defines the maintenance policy to be used for the cluster.",
      "properties": {
        "resourceVersion": {
          "type": "string",
          "description": "A hash identifying the version of this policy, so that updates to fields of the policy won't accidentally undo intermediate changes (and so that users of the API unaware of some fields won't accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy."
        },
        "window": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaintenanceWindow",
          "description": "Specifies the maintenance window in which maintenance may be performed."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MaintenancePolicyResponse": {
      "description": "MaintenancePolicy defines the maintenance policy to be used for the cluster.",
      "properties": {
        "resourceVersion": {
          "type": "string",
          "description": "A hash identifying the version of this policy, so that updates to fields of the policy won't accidentally undo intermediate changes (and so that users of the API unaware of some fields won't accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy."
        },
        "window": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaintenanceWindowResponse",
          "description": "Specifies the maintenance window in which maintenance may be performed."
        }
      },
      "type": "object",
      "required": [
        "resourceVersion",
        "window"
      ]
    },
    "google-native:container/v1beta1:MaintenanceWindow": {
      "description": "MaintenanceWindow defines the maintenance window to be used for the cluster.",
      "properties": {
        "dailyMaintenanceWindow": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DailyMaintenanceWindow",
          "description": "DailyMaintenanceWindow specifies a daily maintenance operation window."
        },
        "maintenanceExclusions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows."
        },
        "recurringWindow": {
          "$ref": "#/types/google-native:container%2Fv1beta1:RecurringTimeWindow",
          "description": "RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MaintenanceWindowResponse": {
      "description": "MaintenanceWindow defines the maintenance window to be used for the cluster.",
      "properties": {
        "dailyMaintenanceWindow": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DailyMaintenanceWindowResponse",
          "description": "DailyMaintenanceWindow specifies a daily maintenance operation window."
        },
        "maintenanceExclusions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows."
        },
        "recurringWindow": {
          "$ref": "#/types/google-native:container%2Fv1beta1:RecurringTimeWindowResponse",
          "description": "RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time."
        }
      },
      "type": "object",
      "required": [
        "dailyMaintenanceWindow",
        "maintenanceExclusions",
        "recurringWindow"
      ]
    },
    "google-native:container/v1beta1:ManagedPrometheusConfig": {
      "description": "ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable Managed Collection."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ManagedPrometheusConfigResponse": {
      "description": "ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable Managed Collection."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:Master": {
      "description": "Master is the configuration for components on master.",
      "type": "object"
    },
    "google-native:container/v1beta1:MasterAuth": {
      "description": "The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates.",
      "properties": {
        "clientCertificateConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClientCertificateConfig",
          "description": "Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued."
        },
        "clusterCaCertificate": {
          "type": "string"
        },
        "password": {
          "type": "string",
          "description": "The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication"
        },
        "username": {
          "type": "string",
          "description": "The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MasterAuthResponse": {
      "description": "The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates.",
      "properties": {
        "clientCertificate": {
          "type": "string",
          "description": "[Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint."
        },
        "clientCertificateConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClientCertificateConfigResponse",
          "description": "Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued."
        },
        "clientKey": {
          "type": "string",
          "description": "[Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint."
        },
        "clusterCaCertificate": {
          "type": "string"
        },
        "password": {
          "type": "string",
          "description": "The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication"
        },
        "username": {
          "type": "string",
          "description": "The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication"
        }
      },
      "type": "object",
      "required": [
        "clientCertificate",
        "clientCertificateConfig",
        "clientKey",
        "clusterCaCertificate",
        "password",
        "username"
      ]
    },
    "google-native:container/v1beta1:MasterAuthorizedNetworksConfig": {
      "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.",
      "properties": {
        "cidrBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:CidrBlock"
          },
          "description": "cidr_blocks define up to 10 external networks that could access Kubernetes master through HTTPS."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not master authorized networks is enabled."
        },
        "gcpPublicCidrsAccessEnabled": {
          "type": "boolean",
          "description": "Whether master is accessbile via Google Compute Engine Public IP addresses."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MasterAuthorizedNetworksConfigResponse": {
      "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.",
      "properties": {
        "cidrBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:CidrBlockResponse"
          },
          "description": "cidr_blocks define up to 10 external networks that could access Kubernetes master through HTTPS."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not master authorized networks is enabled."
        },
        "gcpPublicCidrsAccessEnabled": {
          "type": "boolean",
          "description": "Whether master is accessbile via Google Compute Engine Public IP addresses."
        }
      },
      "type": "object",
      "required": [
        "cidrBlocks",
        "enabled",
        "gcpPublicCidrsAccessEnabled"
      ]
    },
    "google-native:container/v1beta1:MasterResponse": {
      "description": "Master is the configuration for components on master.",
      "type": "object"
    },
    "google-native:container/v1beta1:MaxPodsConstraint": {
      "description": "Constraints applied to pods.",
      "properties": {
        "maxPodsPerNode": {
          "type": "string",
          "description": "Constraint enforced on the max num of pods per node."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MaxPodsConstraintResponse": {
      "description": "Constraints applied to pods.",
      "properties": {
        "maxPodsPerNode": {
          "type": "string",
          "description": "Constraint enforced on the max num of pods per node."
        }
      },
      "type": "object",
      "required": [
        "maxPodsPerNode"
      ]
    },
    "google-native:container/v1beta1:MeshCertificates": {
      "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods.",
      "properties": {
        "enableCertificates": {
          "type": "boolean",
          "description": "enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty)."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MeshCertificatesResponse": {
      "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods.",
      "properties": {
        "enableCertificates": {
          "type": "boolean",
          "description": "enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty)."
        }
      },
      "type": "object",
      "required": [
        "enableCertificates"
      ]
    },
    "google-native:container/v1beta1:MonitoringComponentConfig": {
      "description": "MonitoringComponentConfig is cluster monitoring component configuration.",
      "properties": {
        "enableComponents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MonitoringComponentConfigEnableComponentsItem"
          },
          "description": "Select components to collect metrics. An empty set would disable all monitoring."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MonitoringComponentConfigEnableComponentsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ComponentUnspecified",
          "description": "Default value. This shouldn't be used.",
          "value": "COMPONENT_UNSPECIFIED"
        },
        {
          "name": "SystemComponents",
          "description": "system components",
          "value": "SYSTEM_COMPONENTS"
        },
        {
          "name": "Workloads",
          "description": "Deprecated: Use Google Cloud Managed Service for Prometheus.",
          "value": "WORKLOADS"
        },
        {
          "name": "Apiserver",
          "description": "kube-apiserver",
          "value": "APISERVER"
        },
        {
          "name": "Scheduler",
          "description": "kube-scheduler",
          "value": "SCHEDULER"
        },
        {
          "name": "ControllerManager",
          "description": "kube-controller-manager",
          "value": "CONTROLLER_MANAGER"
        },
        {
          "name": "Storage",
          "description": "Storage",
          "value": "STORAGE"
        },
        {
          "name": "Hpa",
          "description": "Horizontal Pod Autoscaling",
          "value": "HPA"
        },
        {
          "name": "Pod",
          "description": "Pod",
          "value": "POD"
        },
        {
          "name": "Daemonset",
          "description": "DaemonSet",
          "value": "DAEMONSET"
        },
        {
          "name": "Deployment",
          "description": "Deployment",
          "value": "DEPLOYMENT"
        },
        {
          "name": "Statefulset",
          "description": "Statefulset",
          "value": "STATEFULSET"
        }
      ]
    },
    "google-native:container/v1beta1:MonitoringComponentConfigResponse": {
      "description": "MonitoringComponentConfig is cluster monitoring component configuration.",
      "properties": {
        "enableComponents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Select components to collect metrics. An empty set would disable all monitoring."
        }
      },
      "type": "object",
      "required": [
        "enableComponents"
      ]
    },
    "google-native:container/v1beta1:MonitoringConfig": {
      "description": "MonitoringConfig is cluster monitoring configuration.",
      "properties": {
        "advancedDatapathObservabilityConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AdvancedDatapathObservabilityConfig",
          "description": "Configuration of Advanced Datapath Observability features."
        },
        "componentConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MonitoringComponentConfig",
          "description": "Monitoring components configuration"
        },
        "managedPrometheusConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ManagedPrometheusConfig",
          "description": "Enable Google Cloud Managed Service for Prometheus in the cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:MonitoringConfigResponse": {
      "description": "MonitoringConfig is cluster monitoring configuration.",
      "properties": {
        "advancedDatapathObservabilityConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AdvancedDatapathObservabilityConfigResponse",
          "description": "Configuration of Advanced Datapath Observability features."
        },
        "componentConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MonitoringComponentConfigResponse",
          "description": "Monitoring components configuration"
        },
        "managedPrometheusConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ManagedPrometheusConfigResponse",
          "description": "Enable Google Cloud Managed Service for Prometheus in the cluster."
        }
      },
      "type": "object",
      "required": [
        "advancedDatapathObservabilityConfig",
        "componentConfig",
        "managedPrometheusConfig"
      ]
    },
    "google-native:container/v1beta1:NetworkConfig": {
      "description": "NetworkConfig reports the relative names of network & subnetwork.",
      "properties": {
        "datapathProvider": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkConfigDatapathProvider",
          "description": "The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation."
        },
        "defaultSnatStatus": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DefaultSnatStatus",
          "description": "Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic."
        },
        "dnsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DNSConfig",
          "description": "DNSConfig contains clusterDNS config for this cluster."
        },
        "enableFqdnNetworkPolicy": {
          "type": "boolean",
          "description": "Whether FQDN Network Policy is enabled on this cluster."
        },
        "enableIntraNodeVisibility": {
          "type": "boolean",
          "description": "Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network."
        },
        "enableL4ilbSubsetting": {
          "type": "boolean",
          "description": "Whether L4ILB Subsetting is enabled for this cluster."
        },
        "enableMultiNetworking": {
          "type": "boolean",
          "description": "Whether multi-networking is enabled for this cluster."
        },
        "gatewayApiConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GatewayAPIConfig",
          "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster."
        },
        "inTransitEncryptionConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkConfigInTransitEncryptionConfig",
          "description": "Specify the details of in-transit encryption."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterNetworkPerformanceConfig",
          "description": "Network bandwidth tier configuration."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkConfigPrivateIpv6GoogleAccess",
          "description": "The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)"
        },
        "serviceExternalIpsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ServiceExternalIPsConfig",
          "description": "ServiceExternalIPsConfig specifies if services with externalIPs field are blocked or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NetworkConfigDatapathProvider": {
      "description": "The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.",
      "type": "string",
      "enum": [
        {
          "name": "DatapathProviderUnspecified",
          "description": "Default value.",
          "value": "DATAPATH_PROVIDER_UNSPECIFIED"
        },
        {
          "name": "LegacyDatapath",
          "description": "Use the IPTables implementation based on kube-proxy.",
          "value": "LEGACY_DATAPATH"
        },
        {
          "name": "AdvancedDatapath",
          "description": "Use the eBPF based GKE Dataplane V2 with additional features. See the [GKE Dataplane V2 documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2) for more.",
          "value": "ADVANCED_DATAPATH"
        }
      ]
    },
    "google-native:container/v1beta1:NetworkConfigInTransitEncryptionConfig": {
      "description": "Specify the details of in-transit encryption.",
      "type": "string",
      "enum": [
        {
          "name": "InTransitEncryptionConfigUnspecified",
          "description": "Unspecified, will be inferred as default - IN_TRANSIT_ENCRYPTION_UNSPECIFIED.",
          "value": "IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED"
        },
        {
          "name": "InTransitEncryptionDisabled",
          "description": "In-transit encryption is disabled.",
          "value": "IN_TRANSIT_ENCRYPTION_DISABLED"
        },
        {
          "name": "InTransitEncryptionInterNodeTransparent",
          "description": "Data in-transit is encrypted using inter-node transparent encryption.",
          "value": "IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT"
        }
      ]
    },
    "google-native:container/v1beta1:NetworkConfigPrivateIpv6GoogleAccess": {
      "description": "The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)",
      "type": "string",
      "enum": [
        {
          "name": "PrivateIpv6GoogleAccessUnspecified",
          "description": "Default value. Same as DISABLED",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED"
        },
        {
          "name": "PrivateIpv6GoogleAccessDisabled",
          "description": "No private access to or from Google Services",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED"
        },
        {
          "name": "PrivateIpv6GoogleAccessToGoogle",
          "description": "Enables private IPv6 access to Google Services from GKE",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE"
        },
        {
          "name": "PrivateIpv6GoogleAccessBidirectional",
          "description": "Enables private IPv6 access to and from Google Services",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL"
        }
      ]
    },
    "google-native:container/v1beta1:NetworkConfigResponse": {
      "description": "NetworkConfig reports the relative names of network & subnetwork.",
      "properties": {
        "datapathProvider": {
          "type": "string",
          "description": "The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation."
        },
        "defaultSnatStatus": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DefaultSnatStatusResponse",
          "description": "Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic."
        },
        "dnsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DNSConfigResponse",
          "description": "DNSConfig contains clusterDNS config for this cluster."
        },
        "enableFqdnNetworkPolicy": {
          "type": "boolean",
          "description": "Whether FQDN Network Policy is enabled on this cluster."
        },
        "enableIntraNodeVisibility": {
          "type": "boolean",
          "description": "Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network."
        },
        "enableL4ilbSubsetting": {
          "type": "boolean",
          "description": "Whether L4ILB Subsetting is enabled for this cluster."
        },
        "enableMultiNetworking": {
          "type": "boolean",
          "description": "Whether multi-networking is enabled for this cluster."
        },
        "gatewayApiConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GatewayAPIConfigResponse",
          "description": "GatewayAPIConfig contains the desired config of Gateway API on this cluster."
        },
        "inTransitEncryptionConfig": {
          "type": "string",
          "description": "Specify the details of in-transit encryption."
        },
        "network": {
          "type": "string",
          "description": "The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network"
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterNetworkPerformanceConfigResponse",
          "description": "Network bandwidth tier configuration."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)"
        },
        "serviceExternalIpsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ServiceExternalIPsConfigResponse",
          "description": "ServiceExternalIPsConfig specifies if services with externalIPs field are blocked or not."
        },
        "subnetwork": {
          "type": "string",
          "description": "The relative name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet"
        }
      },
      "type": "object",
      "required": [
        "datapathProvider",
        "defaultSnatStatus",
        "dnsConfig",
        "enableFqdnNetworkPolicy",
        "enableIntraNodeVisibility",
        "enableL4ilbSubsetting",
        "enableMultiNetworking",
        "gatewayApiConfig",
        "inTransitEncryptionConfig",
        "network",
        "networkPerformanceConfig",
        "privateIpv6GoogleAccess",
        "serviceExternalIpsConfig",
        "subnetwork"
      ]
    },
    "google-native:container/v1beta1:NetworkPerformanceConfig": {
      "description": "Configuration of all network bandwidth tiers",
      "properties": {
        "externalIpEgressBandwidthTier": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPerformanceConfigExternalIpEgressBandwidthTier",
          "description": "Specifies the network bandwidth tier for the NodePool for traffic to external/public IP addresses."
        },
        "totalEgressBandwidthTier": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPerformanceConfigTotalEgressBandwidthTier",
          "description": "Specifies the total network bandwidth tier for the NodePool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NetworkPerformanceConfigExternalIpEgressBandwidthTier": {
      "description": "Specifies the network bandwidth tier for the NodePool for traffic to external/public IP addresses.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Default value",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Tier1",
          "description": "Higher bandwidth, actual values based on VM size.",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:container/v1beta1:NetworkPerformanceConfigResponse": {
      "description": "Configuration of all network bandwidth tiers",
      "properties": {
        "externalIpEgressBandwidthTier": {
          "type": "string",
          "description": "Specifies the network bandwidth tier for the NodePool for traffic to external/public IP addresses."
        },
        "totalEgressBandwidthTier": {
          "type": "string",
          "description": "Specifies the total network bandwidth tier for the NodePool."
        }
      },
      "type": "object",
      "required": [
        "externalIpEgressBandwidthTier",
        "totalEgressBandwidthTier"
      ]
    },
    "google-native:container/v1beta1:NetworkPerformanceConfigTotalEgressBandwidthTier": {
      "description": "Specifies the total network bandwidth tier for the NodePool.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Default value",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Tier1",
          "description": "Higher bandwidth, actual values based on VM size.",
          "value": "TIER_1"
        }
      ]
    },
    "google-native:container/v1beta1:NetworkPolicy": {
      "description": "Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether network policy is enabled on the cluster."
        },
        "provider": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPolicyProvider",
          "description": "The selected network policy provider."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NetworkPolicyConfig": {
      "description": "Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether NetworkPolicy is enabled for this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NetworkPolicyConfigResponse": {
      "description": "Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Whether NetworkPolicy is enabled for this cluster."
        }
      },
      "type": "object",
      "required": [
        "disabled"
      ]
    },
    "google-native:container/v1beta1:NetworkPolicyProvider": {
      "description": "The selected network policy provider.",
      "type": "string",
      "enum": [
        {
          "name": "ProviderUnspecified",
          "description": "Not set",
          "value": "PROVIDER_UNSPECIFIED"
        },
        {
          "name": "Calico",
          "description": "Tigera (Calico Felix).",
          "value": "CALICO"
        }
      ]
    },
    "google-native:container/v1beta1:NetworkPolicyResponse": {
      "description": "Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether network policy is enabled on the cluster."
        },
        "provider": {
          "type": "string",
          "description": "The selected network policy provider."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "provider"
      ]
    },
    "google-native:container/v1beta1:NetworkTags": {
      "description": "Collection of Compute Engine network tags that can be applied to a node's underlying VM instance. (See `tags` field in [`NodeConfig`](/kubernetes-engine/docs/reference/rest/v1/NodeConfig)).",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of network tags."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NetworkTagsResponse": {
      "description": "Collection of Compute Engine network tags that can be applied to a node's underlying VM instance. (See `tags` field in [`NodeConfig`](/kubernetes-engine/docs/reference/rest/v1/NodeConfig)).",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of network tags."
        }
      },
      "type": "object",
      "required": [
        "tags"
      ]
    },
    "google-native:container/v1beta1:NodeAffinity": {
      "description": "Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for NodeAffinity."
        },
        "operator": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeAffinityOperator",
          "description": "Operator for NodeAffinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Values for NodeAffinity."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodeAffinityOperator": {
      "description": "Operator for NodeAffinity.",
      "type": "string",
      "enum": [
        {
          "name": "OperatorUnspecified",
          "description": "Invalid or unspecified affinity operator.",
          "value": "OPERATOR_UNSPECIFIED"
        },
        {
          "name": "In",
          "description": "Affinity operator.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "Anti-affinity operator.",
          "value": "NOT_IN"
        }
      ]
    },
    "google-native:container/v1beta1:NodeAffinityResponse": {
      "description": "Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for NodeAffinity."
        },
        "operator": {
          "type": "string",
          "description": "Operator for NodeAffinity."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Values for NodeAffinity."
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "google-native:container/v1beta1:NodeConfig": {
      "description": "Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AcceleratorConfig"
          },
          "description": "A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs."
        },
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AdvancedMachineFeatures",
          "description": "Advanced features for the Compute Engine VM."
        },
        "bootDiskKmsKey": {
          "type": "string",
          "description": " The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption"
        },
        "confidentialNodes": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ConfidentialNodes",
          "description": "Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') If unspecified, the default disk type is 'pd-standard'"
        },
        "enableConfidentialStorage": {
          "type": "boolean",
          "description": "Optional. Enable confidential storage on Hyperdisk. boot_disk_kms_key is required when enable_confidential_storage is true. This is only available for private preview."
        },
        "ephemeralStorageConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:EphemeralStorageConfig",
          "description": "Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk."
        },
        "ephemeralStorageLocalSsdConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:EphemeralStorageLocalSsdConfig",
          "description": "Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk. This field is functionally equivalent to the ephemeral_storage_config"
        },
        "fastSocket": {
          "$ref": "#/types/google-native:container%2Fv1beta1:FastSocket",
          "description": "Enable or disable NCCL fast socket for the node pool."
        },
        "gcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcfsConfig",
          "description": "GCFS (Google Container File System) configs."
        },
        "gvnic": {
          "$ref": "#/types/google-native:container%2Fv1beta1:VirtualNIC",
          "description": "Enable or disable gvnic on the node pool."
        },
        "hostMaintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HostMaintenancePolicy",
          "description": "HostMaintenancePolicy contains the desired maintenance policy for the Google Compute Engine hosts."
        },
        "imageType": {
          "type": "string",
          "description": "The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types."
        },
        "kubeletConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeKubeletConfig",
          "description": "Node kubelet configs."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it's best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/"
        },
        "linuxNodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LinuxNodeConfig",
          "description": "Parameters that can be configured on Linux nodes."
        },
        "localNvmeSsdBlockConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LocalNvmeSsdBlockConfig",
          "description": "Parameters for using raw-block Local NVMe SSDs."
        },
        "localSsdCount": {
          "type": "integer",
          "description": "The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolLoggingConfig",
          "description": "Logging configuration."
        },
        "machineType": {
          "type": "string",
          "description": "The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types). If unspecified, the default machine type is `e2-medium`."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - \"cluster-location\" - \"cluster-name\" - \"cluster-uid\" - \"configure-sh\" - \"containerd-configure-sh\" - \"enable-oslogin\" - \"gci-ensure-gke-docker\" - \"gci-metrics-enabled\" - \"gci-update-strategy\" - \"instance-template\" - \"kube-env\" - \"startup-script\" - \"user-data\" - \"disable-address-manager\" - \"windows-startup-script-ps1\" - \"common-psm1\" - \"k8s-node-setup-psm1\" - \"install-ssh-psm1\" - \"user-profile-psm1\" Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value's size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: \"Intel Haswell\"` or `minCpuPlatform: \"Intel Sandy Bridge\"`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)."
        },
        "nodeGroup": {
          "type": "string",
          "description": "Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes)."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of Google API scopes to be made available on all of the node VMs under the \"default\" service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ReservationAffinity",
          "description": "The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool."
        },
        "resourceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for the node pool to use to annotate any related Google Compute Engine resources."
        },
        "resourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ResourceManagerTags",
          "description": "A map of resource manager tag keys and values to be attached to the nodes."
        },
        "sandboxConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SandboxConfig",
          "description": "Sandbox configuration for this node."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the \"default\" service account is used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ShieldedInstanceConfig",
          "description": "Shielded Instance options."
        },
        "soleTenantConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SoleTenantConfig",
          "description": "Parameters for node pools to be backed by shared sole tenant node groups."
        },
        "spot": {
          "type": "boolean",
          "description": "Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035."
        },
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeTaint"
          },
          "description": "List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/"
        },
        "windowsNodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WindowsNodeConfig",
          "description": "Parameters that can be configured on Windows nodes."
        },
        "workloadMetadataConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadMetadataConfig",
          "description": "The workload metadata configuration for this node."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodeConfigDefaults": {
      "description": "Subset of NodeConfig message that has defaults.",
      "properties": {
        "gcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcfsConfig",
          "description": "GCFS (Google Container File System, also known as Riptide) options."
        },
        "hostMaintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HostMaintenancePolicy",
          "description": "HostMaintenancePolicy contains the desired maintenance policy for the Google Compute Engine hosts."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolLoggingConfig",
          "description": "Logging configuration for node pools."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodeConfigDefaultsResponse": {
      "description": "Subset of NodeConfig message that has defaults.",
      "properties": {
        "gcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcfsConfigResponse",
          "description": "GCFS (Google Container File System, also known as Riptide) options."
        },
        "hostMaintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HostMaintenancePolicyResponse",
          "description": "HostMaintenancePolicy contains the desired maintenance policy for the Google Compute Engine hosts."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolLoggingConfigResponse",
          "description": "Logging configuration for node pools."
        }
      },
      "type": "object",
      "required": [
        "gcfsConfig",
        "hostMaintenancePolicy",
        "loggingConfig"
      ]
    },
    "google-native:container/v1beta1:NodeConfigResponse": {
      "description": "Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AcceleratorConfigResponse"
          },
          "description": "A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs."
        },
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AdvancedMachineFeaturesResponse",
          "description": "Advanced features for the Compute Engine VM."
        },
        "bootDiskKmsKey": {
          "type": "string",
          "description": " The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption"
        },
        "confidentialNodes": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ConfidentialNodesResponse",
          "description": "Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB."
        },
        "diskType": {
          "type": "string",
          "description": "Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') If unspecified, the default disk type is 'pd-standard'"
        },
        "enableConfidentialStorage": {
          "type": "boolean",
          "description": "Optional. Enable confidential storage on Hyperdisk. boot_disk_kms_key is required when enable_confidential_storage is true. This is only available for private preview."
        },
        "ephemeralStorageConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:EphemeralStorageConfigResponse",
          "description": "Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk."
        },
        "ephemeralStorageLocalSsdConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:EphemeralStorageLocalSsdConfigResponse",
          "description": "Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk. This field is functionally equivalent to the ephemeral_storage_config"
        },
        "fastSocket": {
          "$ref": "#/types/google-native:container%2Fv1beta1:FastSocketResponse",
          "description": "Enable or disable NCCL fast socket for the node pool."
        },
        "gcfsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:GcfsConfigResponse",
          "description": "GCFS (Google Container File System) configs."
        },
        "gvnic": {
          "$ref": "#/types/google-native:container%2Fv1beta1:VirtualNICResponse",
          "description": "Enable or disable gvnic on the node pool."
        },
        "hostMaintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:HostMaintenancePolicyResponse",
          "description": "HostMaintenancePolicy contains the desired maintenance policy for the Google Compute Engine hosts."
        },
        "imageType": {
          "type": "string",
          "description": "The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types."
        },
        "kubeletConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeKubeletConfigResponse",
          "description": "Node kubelet configs."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it's best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/"
        },
        "linuxNodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LinuxNodeConfigResponse",
          "description": "Parameters that can be configured on Linux nodes."
        },
        "localNvmeSsdBlockConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LocalNvmeSsdBlockConfigResponse",
          "description": "Parameters for using raw-block Local NVMe SSDs."
        },
        "localSsdCount": {
          "type": "integer",
          "description": "The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolLoggingConfigResponse",
          "description": "Logging configuration."
        },
        "machineType": {
          "type": "string",
          "description": "The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types). If unspecified, the default machine type is `e2-medium`."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - \"cluster-location\" - \"cluster-name\" - \"cluster-uid\" - \"configure-sh\" - \"containerd-configure-sh\" - \"enable-oslogin\" - \"gci-ensure-gke-docker\" - \"gci-metrics-enabled\" - \"gci-update-strategy\" - \"instance-template\" - \"kube-env\" - \"startup-script\" - \"user-data\" - \"disable-address-manager\" - \"windows-startup-script-ps1\" - \"common-psm1\" - \"k8s-node-setup-psm1\" - \"install-ssh-psm1\" - \"user-profile-psm1\" Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value's size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: \"Intel Haswell\"` or `minCpuPlatform: \"Intel Sandy Bridge\"`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)."
        },
        "nodeGroup": {
          "type": "string",
          "description": "Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes)."
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of Google API scopes to be made available on all of the node VMs under the \"default\" service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ReservationAffinityResponse",
          "description": "The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool."
        },
        "resourceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for the node pool to use to annotate any related Google Compute Engine resources."
        },
        "resourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ResourceManagerTagsResponse",
          "description": "A map of resource manager tag keys and values to be attached to the nodes."
        },
        "sandboxConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SandboxConfigResponse",
          "description": "Sandbox configuration for this node."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the \"default\" service account is used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ShieldedInstanceConfigResponse",
          "description": "Shielded Instance options."
        },
        "soleTenantConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SoleTenantConfigResponse",
          "description": "Parameters for node pools to be backed by shared sole tenant node groups."
        },
        "spot": {
          "type": "boolean",
          "description": "Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035."
        },
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeTaintResponse"
          },
          "description": "List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/"
        },
        "windowsNodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WindowsNodeConfigResponse",
          "description": "Parameters that can be configured on Windows nodes."
        },
        "workloadMetadataConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadMetadataConfigResponse",
          "description": "The workload metadata configuration for this node."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "advancedMachineFeatures",
        "bootDiskKmsKey",
        "confidentialNodes",
        "diskSizeGb",
        "diskType",
        "enableConfidentialStorage",
        "ephemeralStorageConfig",
        "ephemeralStorageLocalSsdConfig",
        "fastSocket",
        "gcfsConfig",
        "gvnic",
        "hostMaintenancePolicy",
        "imageType",
        "kubeletConfig",
        "labels",
        "linuxNodeConfig",
        "localNvmeSsdBlockConfig",
        "localSsdCount",
        "loggingConfig",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "nodeGroup",
        "oauthScopes",
        "preemptible",
        "reservationAffinity",
        "resourceLabels",
        "resourceManagerTags",
        "sandboxConfig",
        "serviceAccount",
        "shieldedInstanceConfig",
        "soleTenantConfig",
        "spot",
        "tags",
        "taints",
        "windowsNodeConfig",
        "workloadMetadataConfig"
      ]
    },
    "google-native:container/v1beta1:NodeKubeletConfig": {
      "description": "Node kubelet configs.",
      "properties": {
        "cpuCfsQuota": {
          "type": "boolean",
          "description": "Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is 'true' if unspecified."
        },
        "cpuCfsQuotaPeriod": {
          "type": "string",
          "description": "Set the CPU CFS quota period value 'cpu.cfs_period_us'. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\". The value must be a positive duration."
        },
        "cpuManagerPolicy": {
          "type": "string",
          "description": "Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * \"none\": the default, which represents the existing scheduling behavior. * \"static\": allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is 'none' if unspecified."
        },
        "insecureKubeletReadonlyPortEnabled": {
          "type": "boolean",
          "description": "Enable or disable Kubelet read only port."
        },
        "podPidsLimit": {
          "type": "string",
          "description": "Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodeKubeletConfigResponse": {
      "description": "Node kubelet configs.",
      "properties": {
        "cpuCfsQuota": {
          "type": "boolean",
          "description": "Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is 'true' if unspecified."
        },
        "cpuCfsQuotaPeriod": {
          "type": "string",
          "description": "Set the CPU CFS quota period value 'cpu.cfs_period_us'. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as \"300ms\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\". The value must be a positive duration."
        },
        "cpuManagerPolicy": {
          "type": "string",
          "description": "Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * \"none\": the default, which represents the existing scheduling behavior. * \"static\": allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is 'none' if unspecified."
        },
        "insecureKubeletReadonlyPortEnabled": {
          "type": "boolean",
          "description": "Enable or disable Kubelet read only port."
        },
        "podPidsLimit": {
          "type": "string",
          "description": "Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304."
        }
      },
      "type": "object",
      "required": [
        "cpuCfsQuota",
        "cpuCfsQuotaPeriod",
        "cpuManagerPolicy",
        "insecureKubeletReadonlyPortEnabled",
        "podPidsLimit"
      ]
    },
    "google-native:container/v1beta1:NodeLabels": {
      "description": "Collection of node-level [Kubernetes labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels).",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of node label keys and node label values."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodeManagement": {
      "description": "NodeManagement defines the set of node management services turned on for the node pool.",
      "properties": {
        "autoRepair": {
          "type": "boolean",
          "description": "Whether the nodes will be automatically repaired."
        },
        "autoUpgrade": {
          "type": "boolean",
          "description": "Whether the nodes will be automatically upgraded."
        },
        "upgradeOptions": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AutoUpgradeOptions",
          "description": "Specifies the Auto Upgrade knobs for the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodeManagementResponse": {
      "description": "NodeManagement defines the set of node management services turned on for the node pool.",
      "properties": {
        "autoRepair": {
          "type": "boolean",
          "description": "Whether the nodes will be automatically repaired."
        },
        "autoUpgrade": {
          "type": "boolean",
          "description": "Whether the nodes will be automatically upgraded."
        },
        "upgradeOptions": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AutoUpgradeOptionsResponse",
          "description": "Specifies the Auto Upgrade knobs for the node pool."
        }
      },
      "type": "object",
      "required": [
        "autoRepair",
        "autoUpgrade",
        "upgradeOptions"
      ]
    },
    "google-native:container/v1beta1:NodeNetworkConfig": {
      "description": "Parameters for node pool-level network config.",
      "properties": {
        "additionalNodeNetworkConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AdditionalNodeNetworkConfig"
          },
          "description": "We specify the additional node networks for this node pool using this list. Each node network corresponds to an additional interface"
        },
        "additionalPodNetworkConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AdditionalPodNetworkConfig"
          },
          "description": "We specify the additional pod networks for this node pool using this list. Each pod network corresponds to an additional alias IP range for the node"
        },
        "createPodRange": {
          "type": "boolean",
          "description": "Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        },
        "enablePrivateNodes": {
          "type": "boolean",
          "description": "Whether nodes have internal IP addresses only. If enable_private_nodes is not specified, then the value is derived from cluster.privateClusterConfig.enablePrivateNodes"
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPerformanceConfig",
          "description": "Network bandwidth tier configuration."
        },
        "podCidrOverprovisionConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PodCIDROverprovisionConfig",
          "description": "[PRIVATE FIELD] Pod CIDR size overprovisioning config for the nodepool. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is rounded off to next power of 2 and we then double that to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled."
        },
        "podIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        },
        "podRange": {
          "type": "string",
          "description": "The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodeNetworkConfigResponse": {
      "description": "Parameters for node pool-level network config.",
      "properties": {
        "additionalNodeNetworkConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AdditionalNodeNetworkConfigResponse"
          },
          "description": "We specify the additional node networks for this node pool using this list. Each node network corresponds to an additional interface"
        },
        "additionalPodNetworkConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AdditionalPodNetworkConfigResponse"
          },
          "description": "We specify the additional pod networks for this node pool using this list. Each pod network corresponds to an additional alias IP range for the node"
        },
        "createPodRange": {
          "type": "boolean",
          "description": "Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        },
        "enablePrivateNodes": {
          "type": "boolean",
          "description": "Whether nodes have internal IP addresses only. If enable_private_nodes is not specified, then the value is derived from cluster.privateClusterConfig.enablePrivateNodes"
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPerformanceConfigResponse",
          "description": "Network bandwidth tier configuration."
        },
        "podCidrOverprovisionConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PodCIDROverprovisionConfigResponse",
          "description": "[PRIVATE FIELD] Pod CIDR size overprovisioning config for the nodepool. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is rounded off to next power of 2 and we then double that to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled."
        },
        "podIpv4CidrBlock": {
          "type": "string",
          "description": "The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        },
        "podIpv4RangeUtilization": {
          "type": "number",
          "description": "[Output only] The utilization of the IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode."
        },
        "podRange": {
          "type": "string",
          "description": "The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created."
        }
      },
      "type": "object",
      "required": [
        "additionalNodeNetworkConfigs",
        "additionalPodNetworkConfigs",
        "createPodRange",
        "enablePrivateNodes",
        "networkPerformanceConfig",
        "podCidrOverprovisionConfig",
        "podIpv4CidrBlock",
        "podIpv4RangeUtilization",
        "podRange"
      ]
    },
    "google-native:container/v1beta1:NodePool": {
      "description": "NodePool contains the name and configuration for a cluster's node pool. Node pools are a set of nodes (i.e. VM's), with a common configuration and specification, under the control of the cluster master. They may have a set of Kubernetes labels applied to them, which may be used to reference them during pod scheduling. They may also be resized up or down, to accommodate the workload.",
      "properties": {
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoscaling",
          "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
        },
        "bestEffortProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BestEffortProvisioning",
          "description": "Enable best effort provisioning for nodes"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:StatusCondition"
          },
          "description": "Which conditions caused the current node pool state."
        },
        "config": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfig",
          "description": "The node configuration of the pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeManagement",
          "description": "NodeManagement configuration for this NodePool."
        },
        "maxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraint",
          "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
        },
        "name": {
          "type": "string",
          "description": "The name of the node pool."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeNetworkConfig",
          "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
        },
        "placementPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PlacementPolicy",
          "description": "Specifies the node placement policy."
        },
        "queuedProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1beta1:QueuedProvisioning",
          "description": "Specifies the configuration of queued provisioning."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpgradeSettings",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        },
        "version": {
          "type": "string",
          "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version)."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodePoolAutoConfig": {
      "description": "node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters",
      "properties": {
        "networkTags": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkTags",
          "description": "The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster creation. Each tag within the list must comply with RFC1035."
        },
        "resourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ResourceManagerTags",
          "description": "Resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodePoolAutoConfigResponse": {
      "description": "node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters",
      "properties": {
        "networkTags": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkTagsResponse",
          "description": "The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster creation. Each tag within the list must comply with RFC1035."
        },
        "resourceManagerTags": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ResourceManagerTagsResponse",
          "description": "Resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies."
        }
      },
      "type": "object",
      "required": [
        "networkTags",
        "resourceManagerTags"
      ]
    },
    "google-native:container/v1beta1:NodePoolAutoscaling": {
      "description": "NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage.",
      "properties": {
        "autoprovisioned": {
          "type": "boolean",
          "description": "Can this node pool be deleted automatically."
        },
        "enabled": {
          "type": "boolean",
          "description": "Is autoscaling enabled for this node pool."
        },
        "locationPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoscalingLocationPolicy",
          "description": "Location policy used when scaling up a nodepool."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes for one location in the NodePool. Must be >= min_node_count. There has to be enough quota to scale up the cluster."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes for one location in the NodePool. Must be >= 1 and <= max_node_count."
        },
        "totalMaxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes in the node pool. Must be greater than total_min_node_count. There has to be enough quota to scale up the cluster. The total_*_node_count fields are mutually exclusive with the *_node_count fields."
        },
        "totalMinNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes in the node pool. Must be greater than 1 less than total_max_node_count. The total_*_node_count fields are mutually exclusive with the *_node_count fields."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodePoolAutoscalingLocationPolicy": {
      "description": "Location policy used when scaling up a nodepool.",
      "type": "string",
      "enum": [
        {
          "name": "LocationPolicyUnspecified",
          "description": "Not set.",
          "value": "LOCATION_POLICY_UNSPECIFIED"
        },
        {
          "name": "Balanced",
          "description": "BALANCED is a best effort policy that aims to balance the sizes of different zones.",
          "value": "BALANCED"
        },
        {
          "name": "Any",
          "description": "ANY policy picks zones that have the highest capacity available.",
          "value": "ANY"
        }
      ]
    },
    "google-native:container/v1beta1:NodePoolAutoscalingResponse": {
      "description": "NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage.",
      "properties": {
        "autoprovisioned": {
          "type": "boolean",
          "description": "Can this node pool be deleted automatically."
        },
        "enabled": {
          "type": "boolean",
          "description": "Is autoscaling enabled for this node pool."
        },
        "locationPolicy": {
          "type": "string",
          "description": "Location policy used when scaling up a nodepool."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes for one location in the NodePool. Must be >= min_node_count. There has to be enough quota to scale up the cluster."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes for one location in the NodePool. Must be >= 1 and <= max_node_count."
        },
        "totalMaxNodeCount": {
          "type": "integer",
          "description": "Maximum number of nodes in the node pool. Must be greater than total_min_node_count. There has to be enough quota to scale up the cluster. The total_*_node_count fields are mutually exclusive with the *_node_count fields."
        },
        "totalMinNodeCount": {
          "type": "integer",
          "description": "Minimum number of nodes in the node pool. Must be greater than 1 less than total_max_node_count. The total_*_node_count fields are mutually exclusive with the *_node_count fields."
        }
      },
      "type": "object",
      "required": [
        "autoprovisioned",
        "enabled",
        "locationPolicy",
        "maxNodeCount",
        "minNodeCount",
        "totalMaxNodeCount",
        "totalMinNodeCount"
      ]
    },
    "google-native:container/v1beta1:NodePoolDefaults": {
      "description": "Subset of Nodepool message that has defaults.",
      "properties": {
        "nodeConfigDefaults": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfigDefaults",
          "description": "Subset of NodeConfig message that has defaults."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodePoolDefaultsResponse": {
      "description": "Subset of Nodepool message that has defaults.",
      "properties": {
        "nodeConfigDefaults": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfigDefaultsResponse",
          "description": "Subset of NodeConfig message that has defaults."
        }
      },
      "type": "object",
      "required": [
        "nodeConfigDefaults"
      ]
    },
    "google-native:container/v1beta1:NodePoolLoggingConfig": {
      "description": "NodePoolLoggingConfig specifies logging configuration for nodepools.",
      "properties": {
        "variantConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LoggingVariantConfig",
          "description": "Logging variant configuration."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodePoolLoggingConfigResponse": {
      "description": "NodePoolLoggingConfig specifies logging configuration for nodepools.",
      "properties": {
        "variantConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LoggingVariantConfigResponse",
          "description": "Logging variant configuration."
        }
      },
      "type": "object",
      "required": [
        "variantConfig"
      ]
    },
    "google-native:container/v1beta1:NodePoolResponse": {
      "description": "NodePool contains the name and configuration for a cluster's node pool. Node pools are a set of nodes (i.e. VM's), with a common configuration and specification, under the control of the cluster master. They may have a set of Kubernetes labels applied to them, which may be used to reference them during pod scheduling. They may also be resized up or down, to accommodate the workload.",
      "properties": {
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoscalingResponse",
          "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
        },
        "bestEffortProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BestEffortProvisioningResponse",
          "description": "Enable best effort provisioning for nodes"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:StatusConditionResponse"
          },
          "description": "Which conditions caused the current node pool state."
        },
        "config": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfigResponse",
          "description": "The node configuration of the pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota."
        },
        "instanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeManagementResponse",
          "description": "NodeManagement configuration for this NodePool."
        },
        "maxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraintResponse",
          "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
        },
        "name": {
          "type": "string",
          "description": "The name of the node pool."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeNetworkConfigResponse",
          "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
        },
        "placementPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PlacementPolicyResponse",
          "description": "Specifies the node placement policy."
        },
        "podIpv4CidrSize": {
          "type": "integer",
          "description": "[Output only] The pod CIDR block size per node in this node pool."
        },
        "queuedProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1beta1:QueuedProvisioningResponse",
          "description": "Specifies the configuration of queued provisioning."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "[Output only] The status of the nodes in this pool instance."
        },
        "statusMessage": {
          "type": "string",
          "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.",
          "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available."
        },
        "updateInfo": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpdateInfoResponse",
          "description": "[Output only] Update info contains relevant information during a node pool update."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpgradeSettingsResponse",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        },
        "version": {
          "type": "string",
          "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version)."
        }
      },
      "type": "object",
      "required": [
        "autoscaling",
        "bestEffortProvisioning",
        "conditions",
        "config",
        "etag",
        "initialNodeCount",
        "instanceGroupUrls",
        "locations",
        "management",
        "maxPodsConstraint",
        "name",
        "networkConfig",
        "placementPolicy",
        "podIpv4CidrSize",
        "queuedProvisioning",
        "selfLink",
        "status",
        "statusMessage",
        "updateInfo",
        "upgradeSettings",
        "version"
      ]
    },
    "google-native:container/v1beta1:NodeTaint": {
      "description": "Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.",
      "properties": {
        "effect": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeTaintEffect",
          "description": "Effect for taint."
        },
        "key": {
          "type": "string",
          "description": "Key for taint."
        },
        "value": {
          "type": "string",
          "description": "Value for taint."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NodeTaintEffect": {
      "description": "Effect for taint.",
      "type": "string",
      "enum": [
        {
          "name": "EffectUnspecified",
          "description": "Not set",
          "value": "EFFECT_UNSPECIFIED"
        },
        {
          "name": "NoSchedule",
          "description": "NoSchedule",
          "value": "NO_SCHEDULE"
        },
        {
          "name": "PreferNoSchedule",
          "description": "PreferNoSchedule",
          "value": "PREFER_NO_SCHEDULE"
        },
        {
          "name": "NoExecute",
          "description": "NoExecute",
          "value": "NO_EXECUTE"
        }
      ]
    },
    "google-native:container/v1beta1:NodeTaintResponse": {
      "description": "Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.",
      "properties": {
        "effect": {
          "type": "string",
          "description": "Effect for taint."
        },
        "key": {
          "type": "string",
          "description": "Key for taint."
        },
        "value": {
          "type": "string",
          "description": "Value for taint."
        }
      },
      "type": "object",
      "required": [
        "effect",
        "key",
        "value"
      ]
    },
    "google-native:container/v1beta1:NodeTaints": {
      "description": "Collection of Kubernetes [node taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration).",
      "properties": {
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeTaint"
          },
          "description": "List of node taints."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NotificationConfig": {
      "description": "NotificationConfig is the configuration of notifications.",
      "properties": {
        "pubsub": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PubSub",
          "description": "Notification config for Pub/Sub."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:NotificationConfigResponse": {
      "description": "NotificationConfig is the configuration of notifications.",
      "properties": {
        "pubsub": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PubSubResponse",
          "description": "Notification config for Pub/Sub."
        }
      },
      "type": "object",
      "required": [
        "pubsub"
      ]
    },
    "google-native:container/v1beta1:OpportunisticMaintenanceStrategy": {
      "description": "Strategy that will trigger maintenance on behalf of the customer.",
      "properties": {
        "maintenanceAvailabilityWindow": {
          "type": "string",
          "description": "The window of time that opportunistic maintenance can run. Example: A setting of 14 days implies that opportunistic maintenance can only be ran in the 2 weeks leading up to the scheduled maintenance date. Setting 28 days allows opportunistic maintenance to run at any time in the scheduled maintenance window (all `PERIODIC` maintenance is set 28 days in advance)."
        },
        "minNodesPerPool": {
          "type": "string",
          "description": "The minimum nodes required to be available in a pool. Blocks maintenance if it would cause the number of running nodes to dip below this value."
        },
        "nodeIdleTimeWindow": {
          "type": "string",
          "description": "The amount of time that a node can remain idle (no customer owned workloads running), before triggering maintenance."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:OpportunisticMaintenanceStrategyResponse": {
      "description": "Strategy that will trigger maintenance on behalf of the customer.",
      "properties": {
        "maintenanceAvailabilityWindow": {
          "type": "string",
          "description": "The window of time that opportunistic maintenance can run. Example: A setting of 14 days implies that opportunistic maintenance can only be ran in the 2 weeks leading up to the scheduled maintenance date. Setting 28 days allows opportunistic maintenance to run at any time in the scheduled maintenance window (all `PERIODIC` maintenance is set 28 days in advance)."
        },
        "minNodesPerPool": {
          "type": "string",
          "description": "The minimum nodes required to be available in a pool. Blocks maintenance if it would cause the number of running nodes to dip below this value."
        },
        "nodeIdleTimeWindow": {
          "type": "string",
          "description": "The amount of time that a node can remain idle (no customer owned workloads running), before triggering maintenance."
        }
      },
      "type": "object",
      "required": [
        "maintenanceAvailabilityWindow",
        "minNodesPerPool",
        "nodeIdleTimeWindow"
      ]
    },
    "google-native:container/v1beta1:ParentProductConfig": {
      "description": "ParentProductConfig is the configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of a GKE cluster and take the ownership of the cluster.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels contain the configuration of the parent product."
        },
        "productName": {
          "type": "string",
          "description": "Name of the parent product associated with the cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ParentProductConfigResponse": {
      "description": "ParentProductConfig is the configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of a GKE cluster and take the ownership of the cluster.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels contain the configuration of the parent product."
        },
        "productName": {
          "type": "string",
          "description": "Name of the parent product associated with the cluster."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "productName"
      ]
    },
    "google-native:container/v1beta1:PlacementPolicy": {
      "description": "PlacementPolicy defines the placement policy used by the node pool.",
      "properties": {
        "policyName": {
          "type": "string",
          "description": "If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned."
        },
        "tpuTopology": {
          "type": "string",
          "description": "TPU placement topology for pod slice node pool. https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies"
        },
        "type": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PlacementPolicyType",
          "description": "The type of placement."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:PlacementPolicyResponse": {
      "description": "PlacementPolicy defines the placement policy used by the node pool.",
      "properties": {
        "policyName": {
          "type": "string",
          "description": "If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned."
        },
        "tpuTopology": {
          "type": "string",
          "description": "TPU placement topology for pod slice node pool. https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies"
        },
        "type": {
          "type": "string",
          "description": "The type of placement."
        }
      },
      "type": "object",
      "required": [
        "policyName",
        "tpuTopology",
        "type"
      ]
    },
    "google-native:container/v1beta1:PlacementPolicyType": {
      "description": "The type of placement.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "TYPE_UNSPECIFIED specifies no requirements on nodes placement.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Compact",
          "description": "COMPACT specifies node placement in the same availability domain to ensure low communication latency.",
          "value": "COMPACT"
        }
      ]
    },
    "google-native:container/v1beta1:PodCIDROverprovisionConfig": {
      "description": "[PRIVATE FIELD] Config for pod CIDR size overprovisioning.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:PodCIDROverprovisionConfigResponse": {
      "description": "[PRIVATE FIELD] Config for pod CIDR size overprovisioning.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default."
        }
      },
      "type": "object",
      "required": [
        "disable"
      ]
    },
    "google-native:container/v1beta1:PodSecurityPolicyConfig": {
      "description": "Configuration for the PodSecurityPolicy feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the PodSecurityPolicy controller for this cluster. If enabled, pods must be valid under a PodSecurityPolicy to be created."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:PodSecurityPolicyConfigResponse": {
      "description": "Configuration for the PodSecurityPolicy feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable the PodSecurityPolicy controller for this cluster. If enabled, pods must be valid under a PodSecurityPolicy to be created."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:PolicyBinding": {
      "description": "Binauthz policy that applies to this cluster.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The relative resource name of the binauthz platform policy to audit. GKE platform policies have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:PolicyBindingResponse": {
      "description": "Binauthz policy that applies to this cluster.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The relative resource name of the binauthz platform policy to audit. GKE platform policies have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:container/v1beta1:PrivateClusterConfig": {
      "description": "Configuration options for private clusters.",
      "properties": {
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Whether the master's internal IP address is used as the cluster endpoint."
        },
        "enablePrivateNodes": {
          "type": "boolean",
          "description": "Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking."
        },
        "masterGlobalAccessConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PrivateClusterMasterGlobalAccessConfig",
          "description": "Controls master global access settings."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster's network."
        },
        "privateEndpointSubnetwork": {
          "type": "string",
          "description": "Subnet to provision the master's private endpoint during cluster creation. Specified in projects/*/regions/*/subnetworks/* format."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:PrivateClusterConfigResponse": {
      "description": "Configuration options for private clusters.",
      "properties": {
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Whether the master's internal IP address is used as the cluster endpoint."
        },
        "enablePrivateNodes": {
          "type": "boolean",
          "description": "Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking."
        },
        "masterGlobalAccessConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PrivateClusterMasterGlobalAccessConfigResponse",
          "description": "Controls master global access settings."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster's network."
        },
        "peeringName": {
          "type": "string",
          "description": "The peering name in the customer VPC used by this cluster."
        },
        "privateEndpoint": {
          "type": "string",
          "description": "The internal IP address of this cluster's master endpoint."
        },
        "privateEndpointSubnetwork": {
          "type": "string",
          "description": "Subnet to provision the master's private endpoint during cluster creation. Specified in projects/*/regions/*/subnetworks/* format."
        },
        "publicEndpoint": {
          "type": "string",
          "description": "The external IP address of this cluster's master endpoint."
        }
      },
      "type": "object",
      "required": [
        "enablePrivateEndpoint",
        "enablePrivateNodes",
        "masterGlobalAccessConfig",
        "masterIpv4CidrBlock",
        "peeringName",
        "privateEndpoint",
        "privateEndpointSubnetwork",
        "publicEndpoint"
      ]
    },
    "google-native:container/v1beta1:PrivateClusterMasterGlobalAccessConfig": {
      "description": "Configuration for controlling master global access settings.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whenever master is accessible globally or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:PrivateClusterMasterGlobalAccessConfigResponse": {
      "description": "Configuration for controlling master global access settings.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whenever master is accessible globally or not."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:ProtectConfig": {
      "description": "ProtectConfig defines the flags needed to enable/disable features for the Protect API.",
      "properties": {
        "workloadConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadConfig",
          "description": "WorkloadConfig defines which actions are enabled for a cluster's workload configurations."
        },
        "workloadVulnerabilityMode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ProtectConfigWorkloadVulnerabilityMode",
          "description": "Sets which mode to use for Protect workload vulnerability scanning feature."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ProtectConfigResponse": {
      "description": "ProtectConfig defines the flags needed to enable/disable features for the Protect API.",
      "properties": {
        "workloadConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadConfigResponse",
          "description": "WorkloadConfig defines which actions are enabled for a cluster's workload configurations."
        },
        "workloadVulnerabilityMode": {
          "type": "string",
          "description": "Sets which mode to use for Protect workload vulnerability scanning feature."
        }
      },
      "type": "object",
      "required": [
        "workloadConfig",
        "workloadVulnerabilityMode"
      ]
    },
    "google-native:container/v1beta1:ProtectConfigWorkloadVulnerabilityMode": {
      "description": "Sets which mode to use for Protect workload vulnerability scanning feature.",
      "type": "string",
      "enum": [
        {
          "name": "WorkloadVulnerabilityModeUnspecified",
          "description": "Default value not specified.",
          "value": "WORKLOAD_VULNERABILITY_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disables Workload Vulnerability Scanning feature on the cluster.",
          "value": "DISABLED"
        },
        {
          "name": "Basic",
          "description": "Applies basic vulnerability scanning settings for cluster workloads.",
          "value": "BASIC"
        }
      ]
    },
    "google-native:container/v1beta1:PubSub": {
      "description": "Pub/Sub specific notification config.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable notifications for Pub/Sub."
        },
        "filter": {
          "$ref": "#/types/google-native:container%2Fv1beta1:Filter",
          "description": "Allows filtering to one or more specific event types. If no filter is specified, or if a filter is specified with no event types, all event types will be sent"
        },
        "topic": {
          "type": "string",
          "description": "The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:PubSubResponse": {
      "description": "Pub/Sub specific notification config.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable notifications for Pub/Sub."
        },
        "filter": {
          "$ref": "#/types/google-native:container%2Fv1beta1:FilterResponse",
          "description": "Allows filtering to one or more specific event types. If no filter is specified, or if a filter is specified with no event types, all event types will be sent"
        },
        "topic": {
          "type": "string",
          "description": "The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "filter",
        "topic"
      ]
    },
    "google-native:container/v1beta1:QueuedProvisioning": {
      "description": "QueuedProvisioning defines the queued provisioning used by the node pool.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Denotes that this nodepool is QRM specific, meaning nodes can be only obtained through queuing via the Cluster Autoscaler ProvisioningRequest API."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:QueuedProvisioningResponse": {
      "description": "QueuedProvisioning defines the queued provisioning used by the node pool.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Denotes that this nodepool is QRM specific, meaning nodes can be only obtained through queuing via the Cluster Autoscaler ProvisioningRequest API."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:RangeInfoResponse": {
      "description": "RangeInfo contains the range name and the range utilization by this cluster.",
      "properties": {
        "rangeName": {
          "type": "string",
          "description": "[Output only] Name of a range."
        },
        "utilization": {
          "type": "number",
          "description": "[Output only] The utilization of the range."
        }
      },
      "type": "object",
      "required": [
        "rangeName",
        "utilization"
      ]
    },
    "google-native:container/v1beta1:RecurringTimeWindow": {
      "description": "Represents an arbitrary window of time that recurs.",
      "properties": {
        "recurrence": {
          "type": "string",
          "description": "An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you'd use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you'd use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time's specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported."
        },
        "window": {
          "$ref": "#/types/google-native:container%2Fv1beta1:TimeWindow",
          "description": "The window of the first recurrence."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:RecurringTimeWindowResponse": {
      "description": "Represents an arbitrary window of time that recurs.",
      "properties": {
        "recurrence": {
          "type": "string",
          "description": "An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you'd use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you'd use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time's specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported."
        },
        "window": {
          "$ref": "#/types/google-native:container%2Fv1beta1:TimeWindowResponse",
          "description": "The window of the first recurrence."
        }
      },
      "type": "object",
      "required": [
        "recurrence",
        "window"
      ]
    },
    "google-native:container/v1beta1:ReleaseChannel": {
      "description": "ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled.",
      "properties": {
        "channel": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ReleaseChannelChannel",
          "description": "channel specifies which release channel the cluster is subscribed to."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ReleaseChannelChannel": {
      "description": "channel specifies which release channel the cluster is subscribed to.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "No channel specified.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Rapid",
          "description": "RAPID channel is offered on an early access basis for customers who want to test new releases. WARNING: Versions available in the RAPID Channel may be subject to unresolved issues with no known workaround and are not subject to any SLAs.",
          "value": "RAPID"
        },
        {
          "name": "Regular",
          "description": "Clusters subscribed to REGULAR receive versions that are considered GA quality. REGULAR is intended for production users who want to take advantage of new features.",
          "value": "REGULAR"
        },
        {
          "name": "Stable",
          "description": "Clusters subscribed to STABLE receive versions that are known to be stable and reliable in production.",
          "value": "STABLE"
        }
      ]
    },
    "google-native:container/v1beta1:ReleaseChannelConfigResponse": {
      "description": "ReleaseChannelConfig exposes configuration for a release channel.",
      "properties": {
        "availableVersions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AvailableVersionResponse"
          },
          "description": "Deprecated. This field has been deprecated and replaced with the valid_versions field.",
          "deprecationMessage": "Deprecated. This field has been deprecated and replaced with the valid_versions field."
        },
        "channel": {
          "type": "string",
          "description": "The release channel this configuration applies to."
        },
        "defaultVersion": {
          "type": "string",
          "description": "The default version for newly created clusters on the channel."
        },
        "validVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of valid versions for the channel."
        }
      },
      "type": "object",
      "required": [
        "availableVersions",
        "channel",
        "defaultVersion",
        "validVersions"
      ]
    },
    "google-native:container/v1beta1:ReleaseChannelResponse": {
      "description": "ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "channel specifies which release channel the cluster is subscribed to."
        }
      },
      "type": "object",
      "required": [
        "channel"
      ]
    },
    "google-native:container/v1beta1:ReservationAffinity": {
      "description": "[ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from.",
      "properties": {
        "consumeReservationType": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ReservationAffinityConsumeReservationType",
          "description": "Corresponds to the type of reservation consumption."
        },
        "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 its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label value(s) of reservation resource(s)."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ReservationAffinityConsumeReservationType": {
      "description": "Corresponds to the type of reservation consumption.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Default value. This should not be used.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "NoReservation",
          "description": "Do not consume from any reserved capacity.",
          "value": "NO_RESERVATION"
        },
        {
          "name": "AnyReservation",
          "description": "Consume any reservation available.",
          "value": "ANY_RESERVATION"
        },
        {
          "name": "SpecificReservation",
          "description": "Must consume from a specific reservation. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_RESERVATION"
        }
      ]
    },
    "google-native:container/v1beta1:ReservationAffinityResponse": {
      "description": "[ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from.",
      "properties": {
        "consumeReservationType": {
          "type": "string",
          "description": "Corresponds to the type of reservation consumption."
        },
        "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 its value."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label value(s) of reservation resource(s)."
        }
      },
      "type": "object",
      "required": [
        "consumeReservationType",
        "key",
        "values"
      ]
    },
    "google-native:container/v1beta1:ResourceLabels": {
      "description": "Collection of [GCP labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels).",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of node label keys and node label values."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ResourceLimit": {
      "description": "Contains information about amount of some resource in the cluster. For memory, value should be in GB.",
      "properties": {
        "maximum": {
          "type": "string",
          "description": "Maximum amount of the resource in the cluster."
        },
        "minimum": {
          "type": "string",
          "description": "Minimum amount of the resource in the cluster."
        },
        "resourceType": {
          "type": "string",
          "description": "Resource name \"cpu\", \"memory\" or gpu-specific string."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ResourceLimitResponse": {
      "description": "Contains information about amount of some resource in the cluster. For memory, value should be in GB.",
      "properties": {
        "maximum": {
          "type": "string",
          "description": "Maximum amount of the resource in the cluster."
        },
        "minimum": {
          "type": "string",
          "description": "Minimum amount of the resource in the cluster."
        },
        "resourceType": {
          "type": "string",
          "description": "Resource name \"cpu\", \"memory\" or gpu-specific string."
        }
      },
      "type": "object",
      "required": [
        "maximum",
        "minimum",
        "resourceType"
      ]
    },
    "google-native:container/v1beta1:ResourceManagerTags": {
      "description": "A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values.",
      "properties": {
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ResourceManagerTagsResponse": {
      "description": "A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values.",
      "properties": {
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`"
        }
      },
      "type": "object",
      "required": [
        "tags"
      ]
    },
    "google-native:container/v1beta1:ResourceUsageExportConfig": {
      "description": "Configuration for exporting cluster resource usages.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BigQueryDestination",
          "description": "Configuration to use BigQuery as usage export destination."
        },
        "consumptionMeteringConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ConsumptionMeteringConfig",
          "description": "Configuration to enable resource consumption metering."
        },
        "enableNetworkEgressMetering": {
          "type": "boolean",
          "description": "Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ResourceUsageExportConfigResponse": {
      "description": "Configuration for exporting cluster resource usages.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BigQueryDestinationResponse",
          "description": "Configuration to use BigQuery as usage export destination."
        },
        "consumptionMeteringConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ConsumptionMeteringConfigResponse",
          "description": "Configuration to enable resource consumption metering."
        },
        "enableNetworkEgressMetering": {
          "type": "boolean",
          "description": "Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination",
        "consumptionMeteringConfig",
        "enableNetworkEgressMetering"
      ]
    },
    "google-native:container/v1beta1:SandboxConfig": {
      "description": "SandboxConfig contains configurations of the sandbox to use for the node.",
      "properties": {
        "sandboxType": {
          "type": "string",
          "description": "Type of the sandbox to use for the node (e.g. 'gvisor')"
        },
        "type": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SandboxConfigType",
          "description": "Type of the sandbox to use for the node."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:SandboxConfigResponse": {
      "description": "SandboxConfig contains configurations of the sandbox to use for the node.",
      "properties": {
        "sandboxType": {
          "type": "string",
          "description": "Type of the sandbox to use for the node (e.g. 'gvisor')"
        },
        "type": {
          "type": "string",
          "description": "Type of the sandbox to use for the node."
        }
      },
      "type": "object",
      "required": [
        "sandboxType",
        "type"
      ]
    },
    "google-native:container/v1beta1:SandboxConfigType": {
      "description": "Type of the sandbox to use for the node.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Default value. This should not be used.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Gvisor",
          "description": "Run sandbox using gvisor.",
          "value": "GVISOR"
        }
      ]
    },
    "google-native:container/v1beta1:SecurityPostureConfig": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SecurityPostureConfigMode",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SecurityPostureConfigVulnerabilityMode",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:SecurityPostureConfigMode": {
      "description": "Sets which mode to use for Security Posture features.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value not specified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disables Security Posture features on the cluster.",
          "value": "DISABLED"
        },
        {
          "name": "Basic",
          "description": "Applies Security Posture features on the cluster.",
          "value": "BASIC"
        }
      ]
    },
    "google-native:container/v1beta1:SecurityPostureConfigResponse": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "type": "string",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "vulnerabilityMode"
      ]
    },
    "google-native:container/v1beta1:SecurityPostureConfigVulnerabilityMode": {
      "description": "Sets which mode to use for vulnerability scanning.",
      "type": "string",
      "enum": [
        {
          "name": "VulnerabilityModeUnspecified",
          "description": "Default value not specified.",
          "value": "VULNERABILITY_MODE_UNSPECIFIED"
        },
        {
          "name": "VulnerabilityDisabled",
          "description": "Disables vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_DISABLED"
        },
        {
          "name": "VulnerabilityBasic",
          "description": "Applies basic vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_BASIC"
        },
        {
          "name": "VulnerabilityEnterprise",
          "description": "Applies the Security Posture's vulnerability on cluster Enterprise level features.",
          "value": "VULNERABILITY_ENTERPRISE"
        }
      ]
    },
    "google-native:container/v1beta1:ServiceExternalIPsConfig": {
      "description": "Config to block services with externalIPs field.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Services with ExternalIPs field are allowed or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ServiceExternalIPsConfigResponse": {
      "description": "Config to block services with externalIPs field.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Services with ExternalIPs field are allowed or not."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot"
      ]
    },
    "google-native:container/v1beta1:ShieldedNodes": {
      "description": "Configuration of Shielded Nodes feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Shielded Nodes features are enabled on all nodes in this cluster."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:ShieldedNodesResponse": {
      "description": "Configuration of Shielded Nodes feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Shielded Nodes features are enabled on all nodes in this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:SoleTenantConfig": {
      "description": "SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool.",
      "properties": {
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeAffinity"
          },
          "description": "NodeAffinities used to match to a shared sole tenant node group."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:SoleTenantConfigResponse": {
      "description": "SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool.",
      "properties": {
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeAffinityResponse"
          },
          "description": "NodeAffinities used to match to a shared sole tenant node group."
        }
      },
      "type": "object",
      "required": [
        "nodeAffinities"
      ]
    },
    "google-native:container/v1beta1:StandardRolloutPolicy": {
      "description": "Standard rollout policy is the default policy for blue-green.",
      "properties": {
        "batchNodeCount": {
          "type": "integer",
          "description": "Number of blue nodes to drain in a batch."
        },
        "batchPercentage": {
          "type": "number",
          "description": "Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0]."
        },
        "batchSoakDuration": {
          "type": "string",
          "description": "Soak time after each batch gets drained. Default to zero."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:StandardRolloutPolicyResponse": {
      "description": "Standard rollout policy is the default policy for blue-green.",
      "properties": {
        "batchNodeCount": {
          "type": "integer",
          "description": "Number of blue nodes to drain in a batch."
        },
        "batchPercentage": {
          "type": "number",
          "description": "Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0]."
        },
        "batchSoakDuration": {
          "type": "string",
          "description": "Soak time after each batch gets drained. Default to zero."
        }
      },
      "type": "object",
      "required": [
        "batchNodeCount",
        "batchPercentage",
        "batchSoakDuration"
      ]
    },
    "google-native:container/v1beta1:StatusCondition": {
      "description": "StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).",
      "properties": {
        "canonicalCode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:StatusConditionCanonicalCode",
          "description": "Canonical code of the condition."
        },
        "code": {
          "$ref": "#/types/google-native:container%2Fv1beta1:StatusConditionCode",
          "description": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead.",
          "deprecationMessage": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead."
        },
        "message": {
          "type": "string",
          "description": "Human-friendly representation of the condition"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:StatusConditionCanonicalCode": {
      "description": "Canonical code of the condition.",
      "type": "string",
      "enum": [
        {
          "name": "Ok",
          "description": "Not an error; returned on success. HTTP Mapping: 200 OK",
          "value": "OK"
        },
        {
          "name": "Cancelled",
          "description": "The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request",
          "value": "CANCELLED"
        },
        {
          "name": "Unknown",
          "description": "Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error",
          "value": "UNKNOWN"
        },
        {
          "name": "InvalidArgument",
          "description": "The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request",
          "value": "INVALID_ARGUMENT"
        },
        {
          "name": "DeadlineExceeded",
          "description": "The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout",
          "value": "DEADLINE_EXCEEDED"
        },
        {
          "name": "NotFound",
          "description": "Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found",
          "value": "NOT_FOUND"
        },
        {
          "name": "AlreadyExists",
          "description": "The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict",
          "value": "ALREADY_EXISTS"
        },
        {
          "name": "PermissionDenied",
          "description": "The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden",
          "value": "PERMISSION_DENIED"
        },
        {
          "name": "Unauthenticated",
          "description": "The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized",
          "value": "UNAUTHENTICATED"
        },
        {
          "name": "ResourceExhausted",
          "description": "Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests",
          "value": "RESOURCE_EXHAUSTED"
        },
        {
          "name": "FailedPrecondition",
          "description": "The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an \"rmdir\" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request",
          "value": "FAILED_PRECONDITION"
        },
        {
          "name": "Aborted",
          "description": "The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict",
          "value": "ABORTED"
        },
        {
          "name": "OutOfRange",
          "description": "The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request",
          "value": "OUT_OF_RANGE"
        },
        {
          "name": "Unimplemented",
          "description": "The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Internal",
          "description": "Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error",
          "value": "INTERNAL"
        },
        {
          "name": "Unavailable",
          "description": "The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable",
          "value": "UNAVAILABLE"
        },
        {
          "name": "DataLoss",
          "description": "Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error",
          "value": "DATA_LOSS"
        }
      ]
    },
    "google-native:container/v1beta1:StatusConditionCode": {
      "description": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "UNKNOWN indicates a generic condition.",
          "value": "UNKNOWN"
        },
        {
          "name": "GceStockout",
          "description": "GCE_STOCKOUT indicates that Google Compute Engine resources are temporarily unavailable.",
          "value": "GCE_STOCKOUT"
        },
        {
          "name": "GkeServiceAccountDeleted",
          "description": "GKE_SERVICE_ACCOUNT_DELETED indicates that the user deleted their robot service account.",
          "value": "GKE_SERVICE_ACCOUNT_DELETED"
        },
        {
          "name": "GceQuotaExceeded",
          "description": "Google Compute Engine quota was exceeded.",
          "value": "GCE_QUOTA_EXCEEDED"
        },
        {
          "name": "SetByOperator",
          "description": "Cluster state was manually changed by an SRE due to a system logic error.",
          "value": "SET_BY_OPERATOR"
        },
        {
          "name": "CloudKmsKeyError",
          "description": "Unable to perform an encrypt operation against the CloudKMS key used for etcd level encryption.",
          "value": "CLOUD_KMS_KEY_ERROR"
        },
        {
          "name": "CaExpiring",
          "description": "Cluster CA is expiring soon. More codes TBA",
          "value": "CA_EXPIRING"
        }
      ]
    },
    "google-native:container/v1beta1:StatusConditionResponse": {
      "description": "StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).",
      "properties": {
        "canonicalCode": {
          "type": "string",
          "description": "Canonical code of the condition."
        },
        "code": {
          "type": "string",
          "description": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead.",
          "deprecationMessage": "Machine-friendly representation of the condition Deprecated. Use canonical_code instead."
        },
        "message": {
          "type": "string",
          "description": "Human-friendly representation of the condition"
        }
      },
      "type": "object",
      "required": [
        "canonicalCode",
        "code",
        "message"
      ]
    },
    "google-native:container/v1beta1:TimeWindow": {
      "description": "Represents an arbitrary window of time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time that the window ends. The end time should take place after the start time."
        },
        "maintenanceExclusionOptions": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaintenanceExclusionOptions",
          "description": "MaintenanceExclusionOptions provides maintenance exclusion related options."
        },
        "startTime": {
          "type": "string",
          "description": "The time that the window first starts."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:TimeWindowResponse": {
      "description": "Represents an arbitrary window of time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time that the window ends. The end time should take place after the start time."
        },
        "maintenanceExclusionOptions": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaintenanceExclusionOptionsResponse",
          "description": "MaintenanceExclusionOptions provides maintenance exclusion related options."
        },
        "startTime": {
          "type": "string",
          "description": "The time that the window first starts."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "maintenanceExclusionOptions",
        "startTime"
      ]
    },
    "google-native:container/v1beta1:TpuConfig": {
      "description": "Configuration for Cloud TPU.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Cloud TPU integration is enabled or not."
        },
        "ipv4CidrBlock": {
          "type": "string",
          "description": "IPv4 CIDR block reserved for Cloud TPU in the VPC."
        },
        "useServiceNetworking": {
          "type": "boolean",
          "description": "Whether to use service networking for Cloud TPU or not."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:TpuConfigResponse": {
      "description": "Configuration for Cloud TPU.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether Cloud TPU integration is enabled or not."
        },
        "ipv4CidrBlock": {
          "type": "string",
          "description": "IPv4 CIDR block reserved for Cloud TPU in the VPC."
        },
        "useServiceNetworking": {
          "type": "boolean",
          "description": "Whether to use service networking for Cloud TPU or not."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "ipv4CidrBlock",
        "useServiceNetworking"
      ]
    },
    "google-native:container/v1beta1:UpdateInfoResponse": {
      "description": "UpdateInfo contains resource (instance groups, etc), status and other intermediate information relevant to a node pool upgrade.",
      "properties": {
        "blueGreenInfo": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BlueGreenInfoResponse",
          "description": "Information of a blue-green upgrade."
        }
      },
      "type": "object",
      "required": [
        "blueGreenInfo"
      ]
    },
    "google-native:container/v1beta1:UpgradeSettings": {
      "description": "These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is SURGE, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted.",
      "properties": {
        "blueGreenSettings": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BlueGreenSettings",
          "description": "Settings for blue-green upgrade strategy."
        },
        "maxSurge": {
          "type": "integer",
          "description": "The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process."
        },
        "maxUnavailable": {
          "type": "integer",
          "description": "The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready."
        },
        "strategy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpgradeSettingsStrategy",
          "description": "Update strategy of the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:UpgradeSettingsResponse": {
      "description": "These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is SURGE, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted.",
      "properties": {
        "blueGreenSettings": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BlueGreenSettingsResponse",
          "description": "Settings for blue-green upgrade strategy."
        },
        "maxSurge": {
          "type": "integer",
          "description": "The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process."
        },
        "maxUnavailable": {
          "type": "integer",
          "description": "The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready."
        },
        "strategy": {
          "type": "string",
          "description": "Update strategy of the node pool."
        }
      },
      "type": "object",
      "required": [
        "blueGreenSettings",
        "maxSurge",
        "maxUnavailable",
        "strategy"
      ]
    },
    "google-native:container/v1beta1:UpgradeSettingsStrategy": {
      "description": "Update strategy of the node pool.",
      "type": "string",
      "enum": [
        {
          "name": "NodePoolUpdateStrategyUnspecified",
          "description": "Default value if unset. GKE internally defaults the update strategy to SURGE for unspecified strategies.",
          "value": "NODE_POOL_UPDATE_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "BlueGreen",
          "description": "blue-green upgrade.",
          "value": "BLUE_GREEN"
        },
        {
          "name": "Surge",
          "description": "SURGE is the traditional way of upgrading a node pool. max_surge and max_unavailable determines the level of upgrade parallelism.",
          "value": "SURGE"
        }
      ]
    },
    "google-native:container/v1beta1:VerticalPodAutoscaling": {
      "description": "VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables vertical pod autoscaling."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:VerticalPodAutoscalingResponse": {
      "description": "VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables vertical pod autoscaling."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:VirtualNIC": {
      "description": "Configuration of gVNIC feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether gVNIC features are enabled in the node pool."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:VirtualNICResponse": {
      "description": "Configuration of gVNIC feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether gVNIC features are enabled in the node pool."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:container/v1beta1:WindowsNodeConfig": {
      "description": "Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings",
      "properties": {
        "osVersion": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WindowsNodeConfigOsVersion",
          "description": "OSVersion specifies the Windows node config to be used on the node"
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:WindowsNodeConfigOsVersion": {
      "description": "OSVersion specifies the Windows node config to be used on the node",
      "type": "string",
      "enum": [
        {
          "name": "OsVersionUnspecified",
          "description": "When OSVersion is not specified",
          "value": "OS_VERSION_UNSPECIFIED"
        },
        {
          "name": "OsVersionLtsc2019",
          "description": "LTSC2019 specifies to use LTSC2019 as the Windows Servercore Base Image",
          "value": "OS_VERSION_LTSC2019"
        },
        {
          "name": "OsVersionLtsc2022",
          "description": "LTSC2022 specifies to use LTSC2022 as the Windows Servercore Base Image",
          "value": "OS_VERSION_LTSC2022"
        }
      ]
    },
    "google-native:container/v1beta1:WindowsNodeConfigResponse": {
      "description": "Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings",
      "properties": {
        "osVersion": {
          "type": "string",
          "description": "OSVersion specifies the Windows node config to be used on the node"
        }
      },
      "type": "object",
      "required": [
        "osVersion"
      ]
    },
    "google-native:container/v1beta1:WorkloadALTSConfig": {
      "description": "Configuration for direct-path (via ALTS) with workload identity.",
      "properties": {
        "enableAlts": {
          "type": "boolean",
          "description": "enable_alts controls whether the alts handshaker should be enabled or not for direct-path. Requires Workload Identity (workload_pool must be non-empty)."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:WorkloadALTSConfigResponse": {
      "description": "Configuration for direct-path (via ALTS) with workload identity.",
      "properties": {
        "enableAlts": {
          "type": "boolean",
          "description": "enable_alts controls whether the alts handshaker should be enabled or not for direct-path. Requires Workload Identity (workload_pool must be non-empty)."
        }
      },
      "type": "object",
      "required": [
        "enableAlts"
      ]
    },
    "google-native:container/v1beta1:WorkloadCertificates": {
      "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods.",
      "properties": {
        "enableCertificates": {
          "type": "boolean",
          "description": "enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty)."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:WorkloadCertificatesResponse": {
      "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods.",
      "properties": {
        "enableCertificates": {
          "type": "boolean",
          "description": "enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty)."
        }
      },
      "type": "object",
      "required": [
        "enableCertificates"
      ]
    },
    "google-native:container/v1beta1:WorkloadConfig": {
      "description": "WorkloadConfig defines the flags to enable or disable the workload configurations for the cluster.",
      "properties": {
        "auditMode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadConfigAuditMode",
          "description": "Sets which mode of auditing should be used for the cluster's workloads."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:WorkloadConfigAuditMode": {
      "description": "Sets which mode of auditing should be used for the cluster's workloads.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value meaning that no mode has been specified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "This disables Workload Configuration auditing on the cluster, meaning that nothing is surfaced.",
          "value": "DISABLED"
        },
        {
          "name": "Basic",
          "description": "Applies the default set of policy auditing to a cluster's workloads.",
          "value": "BASIC"
        },
        {
          "name": "Baseline",
          "description": "Surfaces configurations that are not in line with the Pod Security Standard Baseline policy.",
          "value": "BASELINE"
        },
        {
          "name": "Restricted",
          "description": "Surfaces configurations that are not in line with the Pod Security Standard Restricted policy.",
          "value": "RESTRICTED"
        }
      ]
    },
    "google-native:container/v1beta1:WorkloadConfigResponse": {
      "description": "WorkloadConfig defines the flags to enable or disable the workload configurations for the cluster.",
      "properties": {
        "auditMode": {
          "type": "string",
          "description": "Sets which mode of auditing should be used for the cluster's workloads."
        }
      },
      "type": "object",
      "required": [
        "auditMode"
      ]
    },
    "google-native:container/v1beta1:WorkloadIdentityConfig": {
      "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.",
      "properties": {
        "identityNamespace": {
          "type": "string",
          "description": "IAM Identity Namespace to attach all Kubernetes Service Accounts to."
        },
        "identityProvider": {
          "type": "string",
          "description": "identity provider is the third party identity provider."
        },
        "workloadPool": {
          "type": "string",
          "description": "The workload pool to attach all Kubernetes service accounts to."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:WorkloadIdentityConfigResponse": {
      "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.",
      "properties": {
        "identityNamespace": {
          "type": "string",
          "description": "IAM Identity Namespace to attach all Kubernetes Service Accounts to."
        },
        "identityProvider": {
          "type": "string",
          "description": "identity provider is the third party identity provider."
        },
        "workloadPool": {
          "type": "string",
          "description": "The workload pool to attach all Kubernetes service accounts to."
        }
      },
      "type": "object",
      "required": [
        "identityNamespace",
        "identityProvider",
        "workloadPool"
      ]
    },
    "google-native:container/v1beta1:WorkloadMetadataConfig": {
      "description": "WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadMetadataConfigMode",
          "description": "Mode is the configuration for how to expose metadata to workloads running on the node pool."
        },
        "nodeMetadata": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadMetadataConfigNodeMetadata",
          "description": "NodeMetadata is the configuration for how to expose metadata to the workloads running on the node."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:WorkloadMetadataConfigMode": {
      "description": "Mode is the configuration for how to expose metadata to workloads running on the node pool.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Not set.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "GceMetadata",
          "description": "Expose all Compute Engine metadata to pods.",
          "value": "GCE_METADATA"
        },
        {
          "name": "GkeMetadata",
          "description": "Run the GKE Metadata Server on this node. The GKE Metadata Server exposes a metadata API to workloads that is compatible with the V1 Compute Metadata APIs exposed by the Compute Engine and App Engine Metadata Servers. This feature can only be enabled if Workload Identity is enabled at the cluster level.",
          "value": "GKE_METADATA"
        }
      ]
    },
    "google-native:container/v1beta1:WorkloadMetadataConfigNodeMetadata": {
      "description": "NodeMetadata is the configuration for how to expose metadata to the workloads running on the node.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Not set.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Secure",
          "description": "Prevent workloads not in hostNetwork from accessing certain VM metadata, specifically kube-env, which contains Kubelet credentials, and the instance identity token. Metadata concealment is a temporary security solution available while the bootstrapping process for cluster nodes is being redesigned with significant security improvements. This feature is scheduled to be deprecated in the future and later removed.",
          "value": "SECURE"
        },
        {
          "name": "Expose",
          "description": "Expose all VM metadata to pods.",
          "value": "EXPOSE"
        },
        {
          "name": "GkeMetadataServer",
          "description": "Run the GKE Metadata Server on this node. The GKE Metadata Server exposes a metadata API to workloads that is compatible with the V1 Compute Metadata APIs exposed by the Compute Engine and App Engine Metadata Servers. This feature can only be enabled if Workload Identity is enabled at the cluster level.",
          "value": "GKE_METADATA_SERVER"
        }
      ]
    },
    "google-native:container/v1beta1:WorkloadMetadataConfigResponse": {
      "description": "WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Mode is the configuration for how to expose metadata to workloads running on the node pool."
        },
        "nodeMetadata": {
          "type": "string",
          "description": "NodeMetadata is the configuration for how to expose metadata to the workloads running on the node."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "nodeMetadata"
      ]
    },
    "google-native:container/v1beta1:WorkloadPolicyConfig": {
      "description": "WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters.",
      "properties": {
        "allowNetAdmin": {
          "type": "boolean",
          "description": "If true, workloads can use NET_ADMIN capability."
        }
      },
      "type": "object"
    },
    "google-native:container/v1beta1:WorkloadPolicyConfigResponse": {
      "description": "WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters.",
      "properties": {
        "allowNetAdmin": {
          "type": "boolean",
          "description": "If true, workloads can use NET_ADMIN capability."
        }
      },
      "type": "object",
      "required": [
        "allowNetAdmin"
      ]
    },
    "google-native:containeranalysis/v1:AliasContext": {
      "description": "An alias to a repo revision.",
      "properties": {
        "kind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AliasContextKind",
          "description": "The alias kind."
        },
        "name": {
          "type": "string",
          "description": "The alias name."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:AliasContextKind": {
      "description": "The alias kind.",
      "type": "string",
      "enum": [
        {
          "name": "KindUnspecified",
          "description": "Unknown.",
          "value": "KIND_UNSPECIFIED"
        },
        {
          "name": "Fixed",
          "description": "Git tag.",
          "value": "FIXED"
        },
        {
          "name": "Movable",
          "description": "Git branch.",
          "value": "MOVABLE"
        },
        {
          "name": "Other",
          "description": "Used to specify non-standard aliases. For example, if a Git repo has a ref named \"refs/foo/bar\".",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1:AliasContextResponse": {
      "description": "An alias to a repo revision.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The alias kind."
        },
        "name": {
          "type": "string",
          "description": "The alias name."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "name"
      ]
    },
    "google-native:containeranalysis/v1:AnalysisCompleted": {
      "description": "Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource.",
      "properties": {
        "analysisType": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:AnalysisCompletedResponse": {
      "description": "Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource.",
      "properties": {
        "analysisType": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "analysisType"
      ]
    },
    "google-native:containeranalysis/v1:Artifact": {
      "description": "Artifact describes a build product.",
      "properties": {
        "checksum": {
          "type": "string",
          "description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container."
        },
        "id": {
          "type": "string",
          "description": "Artifact ID, if any; for container images, this will be a URL by digest like `gcr.io/projectID/imagename@sha256:123456`."
        },
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ArtifactResponse": {
      "description": "Artifact describes a build product.",
      "properties": {
        "checksum": {
          "type": "string",
          "description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container."
        },
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image."
        }
      },
      "type": "object",
      "required": [
        "checksum",
        "names"
      ]
    },
    "google-native:containeranalysis/v1:Assessment": {
      "description": "Assessment provides all information that is related to a single vulnerability for this product.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
          "deprecationMessage": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Justification",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrl"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Remediation"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "state": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AssessmentState",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:AssessmentResponse": {
      "description": "Assessment provides all information that is related to a single vulnerability for this product.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
          "deprecationMessage": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:JustificationResponse",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrlResponse"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RemediationResponse"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "state": {
          "type": "string",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object",
      "required": [
        "cve",
        "impacts",
        "justification",
        "longDescription",
        "relatedUris",
        "remediations",
        "shortDescription",
        "state",
        "vulnerabilityId"
      ]
    },
    "google-native:containeranalysis/v1:AssessmentState": {
      "description": "Provides the state of this Vulnerability assessment.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "No state is specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Affected",
          "description": "This product is known to be affected by this vulnerability.",
          "value": "AFFECTED"
        },
        {
          "name": "NotAffected",
          "description": "This product is known to be not affected by this vulnerability.",
          "value": "NOT_AFFECTED"
        },
        {
          "name": "Fixed",
          "description": "This product contains a fix for this vulnerability.",
          "value": "FIXED"
        },
        {
          "name": "UnderInvestigation",
          "description": "It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation.",
          "value": "UNDER_INVESTIGATION"
        }
      ]
    },
    "google-native:containeranalysis/v1:AttestationNote": {
      "description": "Note kind that represents a logical attestation \"role\" or \"authority\". For example, an organization might have one `Authority` for \"QA\" and one for \"build\". This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don't all live in the same project.",
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Hint",
          "description": "Hint hints at the purpose of the attestation authority."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:AttestationNoteResponse": {
      "description": "Note kind that represents a logical attestation \"role\" or \"authority\". For example, an organization might have one `Authority` for \"QA\" and one for \"build\". This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don't all live in the same project.",
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:HintResponse",
          "description": "Hint hints at the purpose of the attestation authority."
        }
      },
      "type": "object",
      "required": [
        "hint"
      ]
    },
    "google-native:containeranalysis/v1:AttestationOccurrence": {
      "description": "Occurrence that represents a single \"attestation\". The authenticity of an attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the authority to which this attestation is attached is primarily useful for lookup (how to find this attestation if you already know the authority and artifact to be verified) and intent (for which authority this attestation was intended to sign.",
      "properties": {
        "jwts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Jwt"
          },
          "description": "One or more JWTs encoding a self-contained attestation. Each JWT encodes the payload that it verifies within the JWT itself. Verifier implementation SHOULD ignore the `serialized_payload` field when verifying these JWTs. If only JWTs are present on this AttestationOccurrence, then the `serialized_payload` SHOULD be left empty. Each JWT SHOULD encode a claim specific to the `resource_uri` of this Occurrence, but this is not validated by Grafeas metadata API implementations. The JWT itself is opaque to Grafeas."
        },
        "serializedPayload": {
          "type": "string",
          "description": "The serialized payload that is verified by one or more `signatures`."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Signature"
          },
          "description": "One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto for more details on signature structure and verification."
        }
      },
      "type": "object",
      "required": [
        "serializedPayload"
      ]
    },
    "google-native:containeranalysis/v1:AttestationOccurrenceResponse": {
      "description": "Occurrence that represents a single \"attestation\". The authenticity of an attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the authority to which this attestation is attached is primarily useful for lookup (how to find this attestation if you already know the authority and artifact to be verified) and intent (for which authority this attestation was intended to sign.",
      "properties": {
        "jwts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:JwtResponse"
          },
          "description": "One or more JWTs encoding a self-contained attestation. Each JWT encodes the payload that it verifies within the JWT itself. Verifier implementation SHOULD ignore the `serialized_payload` field when verifying these JWTs. If only JWTs are present on this AttestationOccurrence, then the `serialized_payload` SHOULD be left empty. Each JWT SHOULD encode a claim specific to the `resource_uri` of this Occurrence, but this is not validated by Grafeas metadata API implementations. The JWT itself is opaque to Grafeas."
        },
        "serializedPayload": {
          "type": "string",
          "description": "The serialized payload that is verified by one or more `signatures`."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:SignatureResponse"
          },
          "description": "One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto for more details on signature structure and verification."
        }
      },
      "type": "object",
      "required": [
        "jwts",
        "serializedPayload",
        "signatures"
      ]
    },
    "google-native:containeranalysis/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:containeranalysis/v1:BuildDefinition": {
      "properties": {
        "buildType": {
          "type": "string"
        },
        "externalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "internalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "resolvedDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ResourceDescriptor"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:BuildDefinitionResponse": {
      "properties": {
        "buildType": {
          "type": "string"
        },
        "externalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "internalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "resolvedDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ResourceDescriptorResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "buildType",
        "externalParameters",
        "internalParameters",
        "resolvedDependencies"
      ]
    },
    "google-native:containeranalysis/v1:BuildMetadata": {
      "properties": {
        "finishedOn": {
          "type": "string"
        },
        "invocationId": {
          "type": "string"
        },
        "startedOn": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:BuildMetadataResponse": {
      "properties": {
        "finishedOn": {
          "type": "string"
        },
        "invocationId": {
          "type": "string"
        },
        "startedOn": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "finishedOn",
        "invocationId",
        "startedOn"
      ]
    },
    "google-native:containeranalysis/v1:BuildNote": {
      "description": "Note holding the version of the provider's builder and the signature of the provenance message in the build details occurrence.",
      "properties": {
        "builderVersion": {
          "type": "string",
          "description": "Immutable. Version of the builder which produced this build."
        }
      },
      "type": "object",
      "required": [
        "builderVersion"
      ]
    },
    "google-native:containeranalysis/v1:BuildNoteResponse": {
      "description": "Note holding the version of the provider's builder and the signature of the provenance message in the build details occurrence.",
      "properties": {
        "builderVersion": {
          "type": "string",
          "description": "Immutable. Version of the builder which produced this build."
        }
      },
      "type": "object",
      "required": [
        "builderVersion"
      ]
    },
    "google-native:containeranalysis/v1:BuildOccurrence": {
      "description": "Details of a build occurrence.",
      "properties": {
        "inTotoSlsaProvenanceV1": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoSlsaProvenanceV1",
          "description": "In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance."
        },
        "intotoProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoProvenance",
          "description": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.",
          "deprecationMessage": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec."
        },
        "intotoStatement": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoStatement",
          "description": "In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence's envelope."
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildProvenance",
          "description": "The actual provenance for the build."
        },
        "provenanceBytes": {
          "type": "string",
          "description": "Serialized JSON representation of the provenance, used in generating the build signature in the corresponding build note. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:BuildOccurrenceResponse": {
      "description": "Details of a build occurrence.",
      "properties": {
        "inTotoSlsaProvenanceV1": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoSlsaProvenanceV1Response",
          "description": "In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance."
        },
        "intotoProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoProvenanceResponse",
          "description": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.",
          "deprecationMessage": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec."
        },
        "intotoStatement": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoStatementResponse",
          "description": "In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence's envelope."
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildProvenanceResponse",
          "description": "The actual provenance for the build."
        },
        "provenanceBytes": {
          "type": "string",
          "description": "Serialized JSON representation of the provenance, used in generating the build signature in the corresponding build note. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes."
        }
      },
      "type": "object",
      "required": [
        "inTotoSlsaProvenanceV1",
        "intotoProvenance",
        "intotoStatement",
        "provenance",
        "provenanceBytes"
      ]
    },
    "google-native:containeranalysis/v1:BuildProvenance": {
      "description": "Provenance of a build. Contains all information needed to verify the full details about the build from source to completion.",
      "properties": {
        "buildOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details."
        },
        "builderVersion": {
          "type": "string",
          "description": "Version string of the builder at the time this build was executed."
        },
        "builtArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Artifact"
          },
          "description": "Output of the build."
        },
        "commands": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Command"
          },
          "description": "Commands requested by the build."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the build was created."
        },
        "creator": {
          "type": "string",
          "description": "E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the time the build was initiated; this address may not represent the same end-user for all time."
        },
        "endTime": {
          "type": "string",
          "description": "Time at which execution of the build was finished."
        },
        "id": {
          "type": "string",
          "description": "Unique identifier of the build."
        },
        "logsUri": {
          "type": "string",
          "description": "URI where any logs for this provenance were written."
        },
        "project": {
          "type": "string",
          "description": "ID of the project."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Source",
          "description": "Details of the Source input to the build."
        },
        "startTime": {
          "type": "string",
          "description": "Time at which execution of the build was started."
        },
        "triggerId": {
          "type": "string",
          "description": "Trigger identifier if the build was triggered automatically; empty if not."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:containeranalysis/v1:BuildProvenanceResponse": {
      "description": "Provenance of a build. Contains all information needed to verify the full details about the build from source to completion.",
      "properties": {
        "buildOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details."
        },
        "builderVersion": {
          "type": "string",
          "description": "Version string of the builder at the time this build was executed."
        },
        "builtArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ArtifactResponse"
          },
          "description": "Output of the build."
        },
        "commands": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:CommandResponse"
          },
          "description": "Commands requested by the build."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the build was created."
        },
        "creator": {
          "type": "string",
          "description": "E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the time the build was initiated; this address may not represent the same end-user for all time."
        },
        "endTime": {
          "type": "string",
          "description": "Time at which execution of the build was finished."
        },
        "logsUri": {
          "type": "string",
          "description": "URI where any logs for this provenance were written."
        },
        "project": {
          "type": "string",
          "description": "ID of the project."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SourceResponse",
          "description": "Details of the Source input to the build."
        },
        "startTime": {
          "type": "string",
          "description": "Time at which execution of the build was started."
        },
        "triggerId": {
          "type": "string",
          "description": "Trigger identifier if the build was triggered automatically; empty if not."
        }
      },
      "type": "object",
      "required": [
        "buildOptions",
        "builderVersion",
        "builtArtifacts",
        "commands",
        "createTime",
        "creator",
        "endTime",
        "logsUri",
        "project",
        "sourceProvenance",
        "startTime",
        "triggerId"
      ]
    },
    "google-native:containeranalysis/v1:BuilderConfig": {
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:BuilderConfigResponse": {
      "type": "object"
    },
    "google-native:containeranalysis/v1:CVSS": {
      "description": "Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version.",
      "properties": {
        "attackComplexity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSAttackComplexity"
        },
        "attackVector": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSAttackVector",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments."
        },
        "authentication": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSAuthentication"
        },
        "availabilityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSAvailabilityImpact"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSConfidentialityImpact"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSIntegrityImpact"
        },
        "privilegesRequired": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSPrivilegesRequired"
        },
        "scope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSScope"
        },
        "userInteraction": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSUserInteraction"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:CVSSAttackComplexity": {
      "type": "string",
      "enum": [
        {
          "name": "AttackComplexityUnspecified",
          "value": "ATTACK_COMPLEXITY_UNSPECIFIED"
        },
        {
          "name": "AttackComplexityLow",
          "value": "ATTACK_COMPLEXITY_LOW"
        },
        {
          "name": "AttackComplexityHigh",
          "value": "ATTACK_COMPLEXITY_HIGH"
        },
        {
          "name": "AttackComplexityMedium",
          "value": "ATTACK_COMPLEXITY_MEDIUM"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSAttackVector": {
      "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments.",
      "type": "string",
      "enum": [
        {
          "name": "AttackVectorUnspecified",
          "value": "ATTACK_VECTOR_UNSPECIFIED"
        },
        {
          "name": "AttackVectorNetwork",
          "value": "ATTACK_VECTOR_NETWORK"
        },
        {
          "name": "AttackVectorAdjacent",
          "value": "ATTACK_VECTOR_ADJACENT"
        },
        {
          "name": "AttackVectorLocal",
          "value": "ATTACK_VECTOR_LOCAL"
        },
        {
          "name": "AttackVectorPhysical",
          "value": "ATTACK_VECTOR_PHYSICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSAuthentication": {
      "type": "string",
      "enum": [
        {
          "name": "AuthenticationUnspecified",
          "value": "AUTHENTICATION_UNSPECIFIED"
        },
        {
          "name": "AuthenticationMultiple",
          "value": "AUTHENTICATION_MULTIPLE"
        },
        {
          "name": "AuthenticationSingle",
          "value": "AUTHENTICATION_SINGLE"
        },
        {
          "name": "AuthenticationNone",
          "value": "AUTHENTICATION_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSAvailabilityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSConfidentialityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSIntegrityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSPrivilegesRequired": {
      "type": "string",
      "enum": [
        {
          "name": "PrivilegesRequiredUnspecified",
          "value": "PRIVILEGES_REQUIRED_UNSPECIFIED"
        },
        {
          "name": "PrivilegesRequiredNone",
          "value": "PRIVILEGES_REQUIRED_NONE"
        },
        {
          "name": "PrivilegesRequiredLow",
          "value": "PRIVILEGES_REQUIRED_LOW"
        },
        {
          "name": "PrivilegesRequiredHigh",
          "value": "PRIVILEGES_REQUIRED_HIGH"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSResponse": {
      "description": "Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version.",
      "properties": {
        "attackComplexity": {
          "type": "string"
        },
        "attackVector": {
          "type": "string",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments."
        },
        "authentication": {
          "type": "string"
        },
        "availabilityImpact": {
          "type": "string"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "type": "string"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "type": "string"
        },
        "privilegesRequired": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "userInteraction": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "attackComplexity",
        "attackVector",
        "authentication",
        "availabilityImpact",
        "baseScore",
        "confidentialityImpact",
        "exploitabilityScore",
        "impactScore",
        "integrityImpact",
        "privilegesRequired",
        "scope",
        "userInteraction"
      ]
    },
    "google-native:containeranalysis/v1:CVSSScope": {
      "type": "string",
      "enum": [
        {
          "name": "ScopeUnspecified",
          "value": "SCOPE_UNSPECIFIED"
        },
        {
          "name": "ScopeUnchanged",
          "value": "SCOPE_UNCHANGED"
        },
        {
          "name": "ScopeChanged",
          "value": "SCOPE_CHANGED"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSUserInteraction": {
      "type": "string",
      "enum": [
        {
          "name": "UserInteractionUnspecified",
          "value": "USER_INTERACTION_UNSPECIFIED"
        },
        {
          "name": "UserInteractionNone",
          "value": "USER_INTERACTION_NONE"
        },
        {
          "name": "UserInteractionRequired",
          "value": "USER_INTERACTION_REQUIRED"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3": {
      "description": "Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document",
      "properties": {
        "attackComplexity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3AttackComplexity"
        },
        "attackVector": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3AttackVector",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments."
        },
        "availabilityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3AvailabilityImpact"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3ConfidentialityImpact"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3IntegrityImpact"
        },
        "privilegesRequired": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3PrivilegesRequired"
        },
        "scope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3Scope"
        },
        "userInteraction": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3UserInteraction"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:CVSSv3AttackComplexity": {
      "type": "string",
      "enum": [
        {
          "name": "AttackComplexityUnspecified",
          "value": "ATTACK_COMPLEXITY_UNSPECIFIED"
        },
        {
          "name": "AttackComplexityLow",
          "value": "ATTACK_COMPLEXITY_LOW"
        },
        {
          "name": "AttackComplexityHigh",
          "value": "ATTACK_COMPLEXITY_HIGH"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3AttackVector": {
      "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments.",
      "type": "string",
      "enum": [
        {
          "name": "AttackVectorUnspecified",
          "value": "ATTACK_VECTOR_UNSPECIFIED"
        },
        {
          "name": "AttackVectorNetwork",
          "value": "ATTACK_VECTOR_NETWORK"
        },
        {
          "name": "AttackVectorAdjacent",
          "value": "ATTACK_VECTOR_ADJACENT"
        },
        {
          "name": "AttackVectorLocal",
          "value": "ATTACK_VECTOR_LOCAL"
        },
        {
          "name": "AttackVectorPhysical",
          "value": "ATTACK_VECTOR_PHYSICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3AvailabilityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3ConfidentialityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3IntegrityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3PrivilegesRequired": {
      "type": "string",
      "enum": [
        {
          "name": "PrivilegesRequiredUnspecified",
          "value": "PRIVILEGES_REQUIRED_UNSPECIFIED"
        },
        {
          "name": "PrivilegesRequiredNone",
          "value": "PRIVILEGES_REQUIRED_NONE"
        },
        {
          "name": "PrivilegesRequiredLow",
          "value": "PRIVILEGES_REQUIRED_LOW"
        },
        {
          "name": "PrivilegesRequiredHigh",
          "value": "PRIVILEGES_REQUIRED_HIGH"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3Response": {
      "description": "Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document",
      "properties": {
        "attackComplexity": {
          "type": "string"
        },
        "attackVector": {
          "type": "string",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments."
        },
        "availabilityImpact": {
          "type": "string"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "type": "string"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "type": "string"
        },
        "privilegesRequired": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "userInteraction": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "attackComplexity",
        "attackVector",
        "availabilityImpact",
        "baseScore",
        "confidentialityImpact",
        "exploitabilityScore",
        "impactScore",
        "integrityImpact",
        "privilegesRequired",
        "scope",
        "userInteraction"
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3Scope": {
      "type": "string",
      "enum": [
        {
          "name": "ScopeUnspecified",
          "value": "SCOPE_UNSPECIFIED"
        },
        {
          "name": "ScopeUnchanged",
          "value": "SCOPE_UNCHANGED"
        },
        {
          "name": "ScopeChanged",
          "value": "SCOPE_CHANGED"
        }
      ]
    },
    "google-native:containeranalysis/v1:CVSSv3UserInteraction": {
      "type": "string",
      "enum": [
        {
          "name": "UserInteractionUnspecified",
          "value": "USER_INTERACTION_UNSPECIFIED"
        },
        {
          "name": "UserInteractionNone",
          "value": "USER_INTERACTION_NONE"
        },
        {
          "name": "UserInteractionRequired",
          "value": "USER_INTERACTION_REQUIRED"
        }
      ]
    },
    "google-native:containeranalysis/v1:Category": {
      "description": "The category to which the update belongs.",
      "properties": {
        "categoryId": {
          "type": "string",
          "description": "The identifier of the category."
        },
        "name": {
          "type": "string",
          "description": "The localized name of the category."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:CategoryResponse": {
      "description": "The category to which the update belongs.",
      "properties": {
        "categoryId": {
          "type": "string",
          "description": "The identifier of the category."
        },
        "name": {
          "type": "string",
          "description": "The localized name of the category."
        }
      },
      "type": "object",
      "required": [
        "categoryId",
        "name"
      ]
    },
    "google-native:containeranalysis/v1:CisBenchmark": {
      "description": "A compliance check that is a CIS benchmark.",
      "properties": {
        "profileLevel": {
          "type": "integer"
        },
        "severity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CisBenchmarkSeverity"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:CisBenchmarkResponse": {
      "description": "A compliance check that is a CIS benchmark.",
      "properties": {
        "profileLevel": {
          "type": "integer"
        },
        "severity": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "profileLevel",
        "severity"
      ]
    },
    "google-native:containeranalysis/v1:CisBenchmarkSeverity": {
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unknown.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Minimal",
          "description": "Minimal severity.",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Low severity.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium severity.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High severity.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical severity.",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1:CloudRepoSourceContext": {
      "description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AliasContext",
          "description": "An alias, which may be a branch or tag."
        },
        "repoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:RepoId",
          "description": "The ID of the repo."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision ID."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:CloudRepoSourceContextResponse": {
      "description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AliasContextResponse",
          "description": "An alias, which may be a branch or tag."
        },
        "repoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:RepoIdResponse",
          "description": "The ID of the repo."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision ID."
        }
      },
      "type": "object",
      "required": [
        "aliasContext",
        "repoId",
        "revisionId"
      ]
    },
    "google-native:containeranalysis/v1:Command": {
      "description": "Command describes a step performed as part of the build pipeline.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command-line arguments used when executing this command."
        },
        "dir": {
          "type": "string",
          "description": "Working directory (relative to project source root) used when running this command."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Environment variables set before running this command."
        },
        "id": {
          "type": "string",
          "description": "Optional unique identifier for this command, used in wait_for to reference this command as a dependency."
        },
        "name": {
          "type": "string",
          "description": "Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`."
        },
        "waitFor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID(s) of the command(s) that this command depends on."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:containeranalysis/v1:CommandResponse": {
      "description": "Command describes a step performed as part of the build pipeline.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command-line arguments used when executing this command."
        },
        "dir": {
          "type": "string",
          "description": "Working directory (relative to project source root) used when running this command."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Environment variables set before running this command."
        },
        "name": {
          "type": "string",
          "description": "Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`."
        },
        "waitFor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID(s) of the command(s) that this command depends on."
        }
      },
      "type": "object",
      "required": [
        "args",
        "dir",
        "env",
        "name",
        "waitFor"
      ]
    },
    "google-native:containeranalysis/v1:Completeness": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "arguments": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe."
        },
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.environment is claimed to be complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:CompletenessResponse": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "arguments": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe."
        },
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.environment is claimed to be complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\"."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "environment",
        "materials"
      ]
    },
    "google-native:containeranalysis/v1:ComplianceNote": {
      "properties": {
        "cisBenchmark": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CisBenchmark"
        },
        "description": {
          "type": "string",
          "description": "A description about this compliance check."
        },
        "rationale": {
          "type": "string",
          "description": "A rationale for the existence of this compliance check."
        },
        "remediation": {
          "type": "string",
          "description": "A description of remediation steps if the compliance check fails."
        },
        "scanInstructions": {
          "type": "string",
          "description": "Serialized scan instructions with a predefined format."
        },
        "title": {
          "type": "string",
          "description": "The title that identifies this compliance check."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ComplianceVersion"
          },
          "description": "The OS and config versions the benchmark applies to."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ComplianceNoteResponse": {
      "properties": {
        "cisBenchmark": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CisBenchmarkResponse"
        },
        "description": {
          "type": "string",
          "description": "A description about this compliance check."
        },
        "rationale": {
          "type": "string",
          "description": "A rationale for the existence of this compliance check."
        },
        "remediation": {
          "type": "string",
          "description": "A description of remediation steps if the compliance check fails."
        },
        "scanInstructions": {
          "type": "string",
          "description": "Serialized scan instructions with a predefined format."
        },
        "title": {
          "type": "string",
          "description": "The title that identifies this compliance check."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ComplianceVersionResponse"
          },
          "description": "The OS and config versions the benchmark applies to."
        }
      },
      "type": "object",
      "required": [
        "cisBenchmark",
        "description",
        "rationale",
        "remediation",
        "scanInstructions",
        "title",
        "version"
      ]
    },
    "google-native:containeranalysis/v1:ComplianceOccurrence": {
      "description": "An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason.",
      "properties": {
        "nonComplianceReason": {
          "type": "string"
        },
        "nonCompliantFiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:NonCompliantFile"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ComplianceOccurrenceResponse": {
      "description": "An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason.",
      "properties": {
        "nonComplianceReason": {
          "type": "string"
        },
        "nonCompliantFiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:NonCompliantFileResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "nonComplianceReason",
        "nonCompliantFiles"
      ]
    },
    "google-native:containeranalysis/v1:ComplianceVersion": {
      "description": "Describes the CIS benchmark version that is applicable to a given OS and os version.",
      "properties": {
        "benchmarkDocument": {
          "type": "string",
          "description": "The name of the document that defines this benchmark, e.g. \"CIS Container-Optimized OS\"."
        },
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to."
        },
        "version": {
          "type": "string",
          "description": "The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ComplianceVersionResponse": {
      "description": "Describes the CIS benchmark version that is applicable to a given OS and os version.",
      "properties": {
        "benchmarkDocument": {
          "type": "string",
          "description": "The name of the document that defines this benchmark, e.g. \"CIS Container-Optimized OS\"."
        },
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to."
        },
        "version": {
          "type": "string",
          "description": "The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in."
        }
      },
      "type": "object",
      "required": [
        "benchmarkDocument",
        "cpeUri",
        "version"
      ]
    },
    "google-native:containeranalysis/v1:DSSEAttestationNote": {
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DSSEHint",
          "description": "DSSEHint hints at the purpose of the attestation authority."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:DSSEAttestationNoteResponse": {
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DSSEHintResponse",
          "description": "DSSEHint hints at the purpose of the attestation authority."
        }
      },
      "type": "object",
      "required": [
        "hint"
      ]
    },
    "google-native:containeranalysis/v1:DSSEAttestationOccurrence": {
      "description": "Deprecated. Prefer to use a regular Occurrence, and populate the Envelope at the top level of the Occurrence.",
      "properties": {
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Envelope",
          "description": "If doing something security critical, make sure to verify the signatures in this metadata."
        },
        "statement": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoStatement"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:DSSEAttestationOccurrenceResponse": {
      "description": "Deprecated. Prefer to use a regular Occurrence, and populate the Envelope at the top level of the Occurrence.",
      "properties": {
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:EnvelopeResponse",
          "description": "If doing something security critical, make sure to verify the signatures in this metadata."
        },
        "statement": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoStatementResponse"
        }
      },
      "type": "object",
      "required": [
        "envelope",
        "statement"
      ]
    },
    "google-native:containeranalysis/v1:DSSEHint": {
      "description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this attestation authority, for example \"cloudbuild-prod\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1:DSSEHintResponse": {
      "description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this attestation authority, for example \"cloudbuild-prod\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1:DeploymentNote": {
      "description": "An artifact that can be deployed in some runtime.",
      "properties": {
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed."
        }
      },
      "type": "object",
      "required": [
        "resourceUri"
      ]
    },
    "google-native:containeranalysis/v1:DeploymentNoteResponse": {
      "description": "An artifact that can be deployed in some runtime.",
      "properties": {
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed."
        }
      },
      "type": "object",
      "required": [
        "resourceUri"
      ]
    },
    "google-native:containeranalysis/v1:DeploymentOccurrence": {
      "description": "The period during which some deployable was active in a runtime.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Address of the runtime element hosting this deployment."
        },
        "config": {
          "type": "string",
          "description": "Configuration used to create this deployment."
        },
        "deployTime": {
          "type": "string",
          "description": "Beginning of the lifetime of this deployment."
        },
        "platform": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DeploymentOccurrencePlatform",
          "description": "Platform hosting this deployment."
        },
        "undeployTime": {
          "type": "string",
          "description": "End of the lifetime of this deployment."
        },
        "userEmail": {
          "type": "string",
          "description": "Identity of the user that triggered this deployment."
        }
      },
      "type": "object",
      "required": [
        "deployTime"
      ]
    },
    "google-native:containeranalysis/v1:DeploymentOccurrencePlatform": {
      "description": "Platform hosting this deployment.",
      "type": "string",
      "enum": [
        {
          "name": "PlatformUnspecified",
          "description": "Unknown.",
          "value": "PLATFORM_UNSPECIFIED"
        },
        {
          "name": "Gke",
          "description": "Google Container Engine.",
          "value": "GKE"
        },
        {
          "name": "Flex",
          "description": "Google App Engine: Flexible Environment.",
          "value": "FLEX"
        },
        {
          "name": "Custom",
          "description": "Custom user-defined platform.",
          "value": "CUSTOM"
        }
      ]
    },
    "google-native:containeranalysis/v1:DeploymentOccurrenceResponse": {
      "description": "The period during which some deployable was active in a runtime.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Address of the runtime element hosting this deployment."
        },
        "config": {
          "type": "string",
          "description": "Configuration used to create this deployment."
        },
        "deployTime": {
          "type": "string",
          "description": "Beginning of the lifetime of this deployment."
        },
        "platform": {
          "type": "string",
          "description": "Platform hosting this deployment."
        },
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed taken from the deployable field with the same name."
        },
        "undeployTime": {
          "type": "string",
          "description": "End of the lifetime of this deployment."
        },
        "userEmail": {
          "type": "string",
          "description": "Identity of the user that triggered this deployment."
        }
      },
      "type": "object",
      "required": [
        "address",
        "config",
        "deployTime",
        "platform",
        "resourceUri",
        "undeployTime",
        "userEmail"
      ]
    },
    "google-native:containeranalysis/v1:Detail": {
      "description": "A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).",
      "properties": {
        "affectedCpeUri": {
          "type": "string",
          "description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects."
        },
        "affectedPackage": {
          "type": "string",
          "description": "The package this vulnerability affects."
        },
        "affectedVersionEnd": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail."
        },
        "affectedVersionStart": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail."
        },
        "description": {
          "type": "string",
          "description": "A vendor-specific description of this vulnerability."
        },
        "fixedCpeUri": {
          "type": "string",
          "description": "The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri."
        },
        "fixedPackage": {
          "type": "string",
          "description": "The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package."
        },
        "fixedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available."
        },
        "isObsolete": {
          "type": "boolean",
          "description": "Whether this detail is obsolete. Occurrences are expected not to point to obsolete details."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "severityName": {
          "type": "string",
          "description": "The distro assigned severity of this vulnerability."
        },
        "source": {
          "type": "string",
          "description": "The source from which the information in this Detail was obtained."
        },
        "sourceUpdateTime": {
          "type": "string",
          "description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker."
        },
        "vendor": {
          "type": "string",
          "description": "The name of the vendor of the product."
        }
      },
      "type": "object",
      "required": [
        "affectedCpeUri",
        "affectedPackage"
      ]
    },
    "google-native:containeranalysis/v1:DetailResponse": {
      "description": "A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).",
      "properties": {
        "affectedCpeUri": {
          "type": "string",
          "description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects."
        },
        "affectedPackage": {
          "type": "string",
          "description": "The package this vulnerability affects."
        },
        "affectedVersionEnd": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail."
        },
        "affectedVersionStart": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail."
        },
        "description": {
          "type": "string",
          "description": "A vendor-specific description of this vulnerability."
        },
        "fixedCpeUri": {
          "type": "string",
          "description": "The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri."
        },
        "fixedPackage": {
          "type": "string",
          "description": "The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package."
        },
        "fixedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available."
        },
        "isObsolete": {
          "type": "boolean",
          "description": "Whether this detail is obsolete. Occurrences are expected not to point to obsolete details."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "severityName": {
          "type": "string",
          "description": "The distro assigned severity of this vulnerability."
        },
        "source": {
          "type": "string",
          "description": "The source from which the information in this Detail was obtained."
        },
        "sourceUpdateTime": {
          "type": "string",
          "description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker."
        },
        "vendor": {
          "type": "string",
          "description": "The name of the vendor of the product."
        }
      },
      "type": "object",
      "required": [
        "affectedCpeUri",
        "affectedPackage",
        "affectedVersionEnd",
        "affectedVersionStart",
        "description",
        "fixedCpeUri",
        "fixedPackage",
        "fixedVersion",
        "isObsolete",
        "packageType",
        "severityName",
        "source",
        "sourceUpdateTime",
        "vendor"
      ]
    },
    "google-native:containeranalysis/v1:Digest": {
      "description": "Digest information.",
      "properties": {
        "algo": {
          "type": "string",
          "description": "`SHA1`, `SHA512` etc."
        },
        "digestBytes": {
          "type": "string",
          "description": "Value of the digest."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:DigestResponse": {
      "description": "Digest information.",
      "properties": {
        "algo": {
          "type": "string",
          "description": "`SHA1`, `SHA512` etc."
        },
        "digestBytes": {
          "type": "string",
          "description": "Value of the digest."
        }
      },
      "type": "object",
      "required": [
        "algo",
        "digestBytes"
      ]
    },
    "google-native:containeranalysis/v1:DiscoveryNote": {
      "description": "A note that indicates a type of analysis a provider would perform. This note exists in a provider's project. A `Discovery` occurrence is created in a consumer's project at the start of analysis.",
      "properties": {
        "analysisKind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryNoteAnalysisKind",
          "description": "Immutable. The kind of analysis that is handled by this discovery."
        }
      },
      "type": "object",
      "required": [
        "analysisKind"
      ]
    },
    "google-native:containeranalysis/v1:DiscoveryNoteAnalysisKind": {
      "description": "Required. Immutable. The kind of analysis that is handled by this discovery.",
      "type": "string",
      "enum": [
        {
          "name": "NoteKindUnspecified",
          "description": "Default value. This value is unused.",
          "value": "NOTE_KIND_UNSPECIFIED"
        },
        {
          "name": "Vulnerability",
          "description": "The note and occurrence represent a package vulnerability.",
          "value": "VULNERABILITY"
        },
        {
          "name": "Build",
          "description": "The note and occurrence assert build provenance.",
          "value": "BUILD"
        },
        {
          "name": "Image",
          "description": "This represents an image basis relationship.",
          "value": "IMAGE"
        },
        {
          "name": "Package",
          "description": "This represents a package installed via a package manager.",
          "value": "PACKAGE"
        },
        {
          "name": "Deployment",
          "description": "The note and occurrence track deployment events.",
          "value": "DEPLOYMENT"
        },
        {
          "name": "Discovery",
          "description": "The note and occurrence track the initial discovery status of a resource.",
          "value": "DISCOVERY"
        },
        {
          "name": "Attestation",
          "description": "This represents a logical \"role\" that can attest to artifacts.",
          "value": "ATTESTATION"
        },
        {
          "name": "Upgrade",
          "description": "This represents an available package upgrade.",
          "value": "UPGRADE"
        },
        {
          "name": "Compliance",
          "description": "This represents a Compliance Note",
          "value": "COMPLIANCE"
        },
        {
          "name": "DsseAttestation",
          "description": "This represents a DSSE attestation Note",
          "value": "DSSE_ATTESTATION"
        },
        {
          "name": "VulnerabilityAssessment",
          "description": "This represents a Vulnerability Assessment.",
          "value": "VULNERABILITY_ASSESSMENT"
        },
        {
          "name": "SbomReference",
          "description": "This represents an SBOM Reference.",
          "value": "SBOM_REFERENCE"
        }
      ]
    },
    "google-native:containeranalysis/v1:DiscoveryNoteResponse": {
      "description": "A note that indicates a type of analysis a provider would perform. This note exists in a provider's project. A `Discovery` occurrence is created in a consumer's project at the start of analysis.",
      "properties": {
        "analysisKind": {
          "type": "string",
          "description": "Immutable. The kind of analysis that is handled by this discovery."
        }
      },
      "type": "object",
      "required": [
        "analysisKind"
      ]
    },
    "google-native:containeranalysis/v1:DiscoveryOccurrence": {
      "description": "Provides information about the analysis status of a discovered resource.",
      "properties": {
        "analysisCompleted": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AnalysisCompleted"
        },
        "analysisError": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Status"
          },
          "description": "Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors."
        },
        "analysisStatus": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryOccurrenceAnalysisStatus",
          "description": "The status of discovery for the resource."
        },
        "analysisStatusError": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Status",
          "description": "When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage is output only and populated by the API."
        },
        "continuousAnalysis": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryOccurrenceContinuousAnalysis",
          "description": "Whether the resource is continuously analyzed."
        },
        "cpe": {
          "type": "string",
          "description": "The CPE of the resource being scanned."
        },
        "lastScanTime": {
          "type": "string",
          "description": "The last time this resource was scanned."
        },
        "sbomStatus": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMStatus",
          "description": "The status of an SBOM generation."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:DiscoveryOccurrenceAnalysisStatus": {
      "description": "The status of discovery for the resource.",
      "type": "string",
      "enum": [
        {
          "name": "AnalysisStatusUnspecified",
          "description": "Unknown.",
          "value": "ANALYSIS_STATUS_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "Resource is known but no action has been taken yet.",
          "value": "PENDING"
        },
        {
          "name": "Scanning",
          "description": "Resource is being analyzed.",
          "value": "SCANNING"
        },
        {
          "name": "FinishedSuccess",
          "description": "Analysis has finished successfully.",
          "value": "FINISHED_SUCCESS"
        },
        {
          "name": "Complete",
          "description": "Analysis has completed.",
          "value": "COMPLETE"
        },
        {
          "name": "FinishedFailed",
          "description": "Analysis has finished unsuccessfully, the analysis itself is in a bad state.",
          "value": "FINISHED_FAILED"
        },
        {
          "name": "FinishedUnsupported",
          "description": "The resource is known not to be supported.",
          "value": "FINISHED_UNSUPPORTED"
        }
      ]
    },
    "google-native:containeranalysis/v1:DiscoveryOccurrenceContinuousAnalysis": {
      "description": "Whether the resource is continuously analyzed.",
      "type": "string",
      "enum": [
        {
          "name": "ContinuousAnalysisUnspecified",
          "description": "Unknown.",
          "value": "CONTINUOUS_ANALYSIS_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "The resource is continuously analyzed.",
          "value": "ACTIVE"
        },
        {
          "name": "Inactive",
          "description": "The resource is ignored for continuous analysis.",
          "value": "INACTIVE"
        }
      ]
    },
    "google-native:containeranalysis/v1:DiscoveryOccurrenceResponse": {
      "description": "Provides information about the analysis status of a discovered resource.",
      "properties": {
        "analysisCompleted": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AnalysisCompletedResponse"
        },
        "analysisError": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:StatusResponse"
          },
          "description": "Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors."
        },
        "analysisStatus": {
          "type": "string",
          "description": "The status of discovery for the resource."
        },
        "analysisStatusError": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:StatusResponse",
          "description": "When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage is output only and populated by the API."
        },
        "archiveTime": {
          "type": "string",
          "description": "The time occurrences related to this discovery occurrence were archived."
        },
        "continuousAnalysis": {
          "type": "string",
          "description": "Whether the resource is continuously analyzed."
        },
        "cpe": {
          "type": "string",
          "description": "The CPE of the resource being scanned."
        },
        "lastScanTime": {
          "type": "string",
          "description": "The last time this resource was scanned."
        },
        "sbomStatus": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMStatusResponse",
          "description": "The status of an SBOM generation."
        }
      },
      "type": "object",
      "required": [
        "analysisCompleted",
        "analysisError",
        "analysisStatus",
        "analysisStatusError",
        "archiveTime",
        "continuousAnalysis",
        "cpe",
        "lastScanTime",
        "sbomStatus"
      ]
    },
    "google-native:containeranalysis/v1:Distribution": {
      "description": "This represents a particular channel of distribution for a given package. E.g., Debian's jessie-backports dpkg mirror.",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DistributionArchitecture",
          "description": "The CPU architecture for which packages in this distribution channel were built."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "description": {
          "type": "string",
          "description": "The distribution channel-specific description of this package."
        },
        "latestVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "The latest available version of this package in this distribution channel."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform string denoting the maintainer of this package."
        },
        "url": {
          "type": "string",
          "description": "The distribution channel-specific homepage for this package."
        }
      },
      "type": "object",
      "required": [
        "cpeUri"
      ]
    },
    "google-native:containeranalysis/v1:DistributionArchitecture": {
      "description": "The CPU architecture for which packages in this distribution channel were built.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Unknown architecture.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "X86",
          "description": "X86 architecture.",
          "value": "X86"
        },
        {
          "name": "X64",
          "description": "X64 architecture.",
          "value": "X64"
        }
      ]
    },
    "google-native:containeranalysis/v1:DistributionResponse": {
      "description": "This represents a particular channel of distribution for a given package. E.g., Debian's jessie-backports dpkg mirror.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "description": {
          "type": "string",
          "description": "The distribution channel-specific description of this package."
        },
        "latestVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "The latest available version of this package in this distribution channel."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform string denoting the maintainer of this package."
        },
        "url": {
          "type": "string",
          "description": "The distribution channel-specific homepage for this package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "description",
        "latestVersion",
        "maintainer",
        "url"
      ]
    },
    "google-native:containeranalysis/v1:Envelope": {
      "description": "MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type.",
      "properties": {
        "payload": {
          "type": "string"
        },
        "payloadType": {
          "type": "string"
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:EnvelopeSignature"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:EnvelopeResponse": {
      "description": "MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type.",
      "properties": {
        "payload": {
          "type": "string"
        },
        "payloadType": {
          "type": "string"
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:EnvelopeSignatureResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "payload",
        "payloadType",
        "signatures"
      ]
    },
    "google-native:containeranalysis/v1:EnvelopeSignature": {
      "properties": {
        "keyid": {
          "type": "string"
        },
        "sig": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:EnvelopeSignatureResponse": {
      "properties": {
        "keyid": {
          "type": "string"
        },
        "sig": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "keyid",
        "sig"
      ]
    },
    "google-native:containeranalysis/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:containeranalysis/v1:Fingerprint": {
      "description": "A set of properties that uniquely identify a given Docker image.",
      "properties": {
        "v1Name": {
          "type": "string",
          "description": "The layer ID of the final layer in the Docker image's v1 representation."
        },
        "v2Blob": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ordered list of v2 blobs that represent a given image."
        }
      },
      "type": "object",
      "required": [
        "v1Name",
        "v2Blob"
      ]
    },
    "google-native:containeranalysis/v1:FingerprintResponse": {
      "description": "A set of properties that uniquely identify a given Docker image.",
      "properties": {
        "v1Name": {
          "type": "string",
          "description": "The layer ID of the final layer in the Docker image's v1 representation."
        },
        "v2Blob": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ordered list of v2 blobs that represent a given image."
        },
        "v2Name": {
          "type": "string",
          "description": "The name of the image's v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + \" \" + v2_name[N+1]) Only the name of the final blob is kept."
        }
      },
      "type": "object",
      "required": [
        "v1Name",
        "v2Blob",
        "v2Name"
      ]
    },
    "google-native:containeranalysis/v1:GerritSourceContext": {
      "description": "A SourceContext referring to a Gerrit project.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AliasContext",
          "description": "An alias, which may be a branch or tag."
        },
        "gerritProject": {
          "type": "string",
          "description": "The full project name within the host. Projects may be nested, so \"project/subproject\" is a valid project name. The \"repo name\" is the hostURI/project."
        },
        "hostUri": {
          "type": "string",
          "description": "The URI of a running Gerrit instance."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision (commit) ID."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GerritSourceContextResponse": {
      "description": "A SourceContext referring to a Gerrit project.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AliasContextResponse",
          "description": "An alias, which may be a branch or tag."
        },
        "gerritProject": {
          "type": "string",
          "description": "The full project name within the host. Projects may be nested, so \"project/subproject\" is a valid project name. The \"repo name\" is the hostURI/project."
        },
        "hostUri": {
          "type": "string",
          "description": "The URI of a running Gerrit instance."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision (commit) ID."
        }
      },
      "type": "object",
      "required": [
        "aliasContext",
        "gerritProject",
        "hostUri",
        "revisionId"
      ]
    },
    "google-native:containeranalysis/v1:GitSourceContext": {
      "description": "A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).",
      "properties": {
        "revisionId": {
          "type": "string",
          "description": "Git commit hash."
        },
        "url": {
          "type": "string",
          "description": "Git repository URL."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GitSourceContextResponse": {
      "description": "A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).",
      "properties": {
        "revisionId": {
          "type": "string",
          "description": "Git commit hash."
        },
        "url": {
          "type": "string",
          "description": "Git repository URL."
        }
      },
      "type": "object",
      "required": [
        "revisionId",
        "url"
      ]
    },
    "google-native:containeranalysis/v1:GrafeasV1FileLocation": {
      "description": "Indicates the location at which a package was found.",
      "properties": {
        "filePath": {
          "type": "string",
          "description": "For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GrafeasV1FileLocationResponse": {
      "description": "Indicates the location at which a package was found.",
      "properties": {
        "filePath": {
          "type": "string",
          "description": "For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file."
        }
      },
      "type": "object",
      "required": [
        "filePath"
      ]
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaBuilder": {
      "description": "Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.",
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaBuilderResponse": {
      "description": "Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.",
      "type": "object"
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaCompleteness": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "environment": {
          "type": "boolean"
        },
        "materials": {
          "type": "boolean"
        },
        "parameters": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaCompletenessResponse": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "environment": {
          "type": "boolean"
        },
        "materials": {
          "type": "boolean"
        },
        "parameters": {
          "type": "boolean"
        }
      },
      "type": "object",
      "required": [
        "environment",
        "materials",
        "parameters"
      ]
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaConfigSource": {
      "description": "Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "entryPoint": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaConfigSourceResponse": {
      "description": "Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "entryPoint": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "digest",
        "entryPoint",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaInvocation": {
      "description": "Identifies the event that kicked off the build.",
      "properties": {
        "configSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaConfigSource"
        },
        "environment": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaInvocationResponse": {
      "description": "Identifies the event that kicked off the build.",
      "properties": {
        "configSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaConfigSourceResponse"
        },
        "environment": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "configSource",
        "environment",
        "parameters"
      ]
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaMaterial": {
      "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaMaterialResponse": {
      "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "digest",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaMetadata": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string"
        },
        "buildInvocationId": {
          "type": "string"
        },
        "buildStartedOn": {
          "type": "string"
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaCompleteness"
        },
        "reproducible": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:GrafeasV1SlsaProvenanceZeroTwoSlsaMetadataResponse": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string"
        },
        "buildInvocationId": {
          "type": "string"
        },
        "buildStartedOn": {
          "type": "string"
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaCompletenessResponse"
        },
        "reproducible": {
          "type": "boolean"
        }
      },
      "type": "object",
      "required": [
        "buildFinishedOn",
        "buildInvocationId",
        "buildStartedOn",
        "completeness",
        "reproducible"
      ]
    },
    "google-native:containeranalysis/v1:Hint": {
      "description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this attestation authority, for example \"qa\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1:HintResponse": {
      "description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this attestation authority, for example \"qa\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1:Identity": {
      "description": "The unique identifier of the update.",
      "properties": {
        "revision": {
          "type": "integer",
          "description": "The revision number of the update."
        },
        "updateId": {
          "type": "string",
          "description": "The revision independent identifier of the update."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:IdentityResponse": {
      "description": "The unique identifier of the update.",
      "properties": {
        "revision": {
          "type": "integer",
          "description": "The revision number of the update."
        },
        "updateId": {
          "type": "string",
          "description": "The revision independent identifier of the update."
        }
      },
      "type": "object",
      "required": [
        "revision",
        "updateId"
      ]
    },
    "google-native:containeranalysis/v1:ImageNote": {
      "description": "Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url.",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Fingerprint",
          "description": "Immutable. The fingerprint of the base image."
        },
        "resourceUrl": {
          "type": "string",
          "description": "Immutable. The resource_url for the resource representing the basis of associated occurrence images."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "resourceUrl"
      ]
    },
    "google-native:containeranalysis/v1:ImageNoteResponse": {
      "description": "Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url.",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:FingerprintResponse",
          "description": "Immutable. The fingerprint of the base image."
        },
        "resourceUrl": {
          "type": "string",
          "description": "Immutable. The resource_url for the resource representing the basis of associated occurrence images."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "resourceUrl"
      ]
    },
    "google-native:containeranalysis/v1:ImageOccurrence": {
      "description": "Details of the derived image portion of the DockerImage relationship. This image would be produced from a Dockerfile with FROM .",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Fingerprint",
          "description": "The fingerprint of the derived image."
        },
        "layerInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Layer"
          },
          "description": "This contains layer-specific metadata, if populated it has length \"distance\" and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer."
        }
      },
      "type": "object",
      "required": [
        "fingerprint"
      ]
    },
    "google-native:containeranalysis/v1:ImageOccurrenceResponse": {
      "description": "Details of the derived image portion of the DockerImage relationship. This image would be produced from a Dockerfile with FROM .",
      "properties": {
        "baseResourceUrl": {
          "type": "string",
          "description": "This contains the base image URL for the derived image occurrence."
        },
        "distance": {
          "type": "integer",
          "description": "The number of layers by which this image differs from the associated image basis."
        },
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:FingerprintResponse",
          "description": "The fingerprint of the derived image."
        },
        "layerInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:LayerResponse"
          },
          "description": "This contains layer-specific metadata, if populated it has length \"distance\" and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer."
        }
      },
      "type": "object",
      "required": [
        "baseResourceUrl",
        "distance",
        "fingerprint",
        "layerInfo"
      ]
    },
    "google-native:containeranalysis/v1:InTotoProvenance": {
      "properties": {
        "builderConfig": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuilderConfig",
          "description": "required"
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Metadata"
        },
        "recipe": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Recipe",
          "description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:InTotoProvenanceResponse": {
      "properties": {
        "builderConfig": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuilderConfigResponse",
          "description": "required"
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:MetadataResponse"
        },
        "recipe": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:RecipeResponse",
          "description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required"
        }
      },
      "type": "object",
      "required": [
        "builderConfig",
        "materials",
        "metadata",
        "recipe"
      ]
    },
    "google-native:containeranalysis/v1:InTotoSlsaProvenanceV1": {
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaProvenanceV1"
        },
        "predicateType": {
          "type": "string"
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Subject"
          }
        },
        "type": {
          "type": "string",
          "description": "InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:InTotoSlsaProvenanceV1Response": {
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaProvenanceV1Response"
        },
        "predicateType": {
          "type": "string"
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:SubjectResponse"
          }
        },
        "type": {
          "type": "string",
          "description": "InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement"
        }
      },
      "type": "object",
      "required": [
        "predicate",
        "predicateType",
        "subject",
        "type"
      ]
    },
    "google-native:containeranalysis/v1:InTotoStatement": {
      "description": "Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always \"application/vnd.in-toto+json\".",
      "properties": {
        "predicateType": {
          "type": "string",
          "description": "`https://slsa.dev/provenance/v0.1` for SlsaProvenance."
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoProvenance"
        },
        "slsaProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaProvenance"
        },
        "slsaProvenanceZeroTwo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaProvenanceZeroTwo"
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Subject"
          }
        },
        "type": {
          "type": "string",
          "description": "Always `https://in-toto.io/Statement/v0.1`."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:InTotoStatementResponse": {
      "description": "Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always \"application/vnd.in-toto+json\".",
      "properties": {
        "predicateType": {
          "type": "string",
          "description": "`https://slsa.dev/provenance/v0.1` for SlsaProvenance."
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:InTotoProvenanceResponse"
        },
        "slsaProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaProvenanceResponse"
        },
        "slsaProvenanceZeroTwo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaProvenanceZeroTwoResponse"
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:SubjectResponse"
          }
        },
        "type": {
          "type": "string",
          "description": "Always `https://in-toto.io/Statement/v0.1`."
        }
      },
      "type": "object",
      "required": [
        "predicateType",
        "provenance",
        "slsaProvenance",
        "slsaProvenanceZeroTwo",
        "subject",
        "type"
      ]
    },
    "google-native:containeranalysis/v1:Justification": {
      "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Additional details on why this justification was chosen."
        },
        "justificationType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:JustificationJustificationType",
          "description": "The justification type for this vulnerability."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:JustificationJustificationType": {
      "description": "The justification type for this vulnerability.",
      "type": "string",
      "enum": [
        {
          "name": "JustificationTypeUnspecified",
          "description": "JUSTIFICATION_TYPE_UNSPECIFIED.",
          "value": "JUSTIFICATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComponentNotPresent",
          "description": "The vulnerable component is not present in the product.",
          "value": "COMPONENT_NOT_PRESENT"
        },
        {
          "name": "VulnerableCodeNotPresent",
          "description": "The vulnerable code is not present. Typically this case occurs when source code is configured or built in a way that excludes the vulnerable code.",
          "value": "VULNERABLE_CODE_NOT_PRESENT"
        },
        {
          "name": "VulnerableCodeNotInExecutePath",
          "description": "The vulnerable code can not be executed. Typically this case occurs when the product includes the vulnerable code but does not call or use the vulnerable code.",
          "value": "VULNERABLE_CODE_NOT_IN_EXECUTE_PATH"
        },
        {
          "name": "VulnerableCodeCannotBeControlledByAdversary",
          "description": "The vulnerable code cannot be controlled by an attacker to exploit the vulnerability.",
          "value": "VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY"
        },
        {
          "name": "InlineMitigationsAlreadyExist",
          "description": "The product includes built-in protections or features that prevent exploitation of the vulnerability. These built-in protections cannot be subverted by the attacker and cannot be configured or disabled by the user. These mitigations completely prevent exploitation based on known attack vectors.",
          "value": "INLINE_MITIGATIONS_ALREADY_EXIST"
        }
      ]
    },
    "google-native:containeranalysis/v1:JustificationResponse": {
      "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Additional details on why this justification was chosen."
        },
        "justificationType": {
          "type": "string",
          "description": "The justification type for this vulnerability."
        }
      },
      "type": "object",
      "required": [
        "details",
        "justificationType"
      ]
    },
    "google-native:containeranalysis/v1:Jwt": {
      "properties": {
        "compactJwt": {
          "type": "string",
          "description": "The compact encoding of a JWS, which is always three base64 encoded strings joined by periods. For details, see: https://tools.ietf.org/html/rfc7515.html#section-3.1"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:JwtResponse": {
      "properties": {
        "compactJwt": {
          "type": "string",
          "description": "The compact encoding of a JWS, which is always three base64 encoded strings joined by periods. For details, see: https://tools.ietf.org/html/rfc7515.html#section-3.1"
        }
      },
      "type": "object",
      "required": [
        "compactJwt"
      ]
    },
    "google-native:containeranalysis/v1:KnowledgeBase": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The KB name (generally of the form KB[0-9]+ (e.g., KB123456))."
        },
        "url": {
          "type": "string",
          "description": "A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/)."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:KnowledgeBaseResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The KB name (generally of the form KB[0-9]+ (e.g., KB123456))."
        },
        "url": {
          "type": "string",
          "description": "A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/)."
        }
      },
      "type": "object",
      "required": [
        "name",
        "url"
      ]
    },
    "google-native:containeranalysis/v1:Layer": {
      "description": "Layer holds metadata specific to a layer of a Docker image.",
      "properties": {
        "arguments": {
          "type": "string",
          "description": "The recovered arguments to the Dockerfile directive."
        },
        "directive": {
          "type": "string",
          "description": "The recovered Dockerfile directive used to construct this layer. See https://docs.docker.com/engine/reference/builder/ for more information."
        }
      },
      "type": "object",
      "required": [
        "directive"
      ]
    },
    "google-native:containeranalysis/v1:LayerResponse": {
      "description": "Layer holds metadata specific to a layer of a Docker image.",
      "properties": {
        "arguments": {
          "type": "string",
          "description": "The recovered arguments to the Dockerfile directive."
        },
        "directive": {
          "type": "string",
          "description": "The recovered Dockerfile directive used to construct this layer. See https://docs.docker.com/engine/reference/builder/ for more information."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "directive"
      ]
    },
    "google-native:containeranalysis/v1:License": {
      "description": "License information.",
      "properties": {
        "comments": {
          "type": "string",
          "description": "Comments"
        },
        "expression": {
          "type": "string",
          "description": "Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: \"LGPL-2.1-only OR MIT\", \"LGPL-2.1-only AND MIT\", \"GPL-2.0-or-later WITH Bison-exception-2.2\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:LicenseResponse": {
      "description": "License information.",
      "properties": {
        "comments": {
          "type": "string",
          "description": "Comments"
        },
        "expression": {
          "type": "string",
          "description": "Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: \"LGPL-2.1-only OR MIT\", \"LGPL-2.1-only AND MIT\", \"GPL-2.0-or-later WITH Bison-exception-2.2\"."
        }
      },
      "type": "object",
      "required": [
        "comments",
        "expression"
      ]
    },
    "google-native:containeranalysis/v1:Location": {
      "description": "An occurrence of a particular package installation found within a system's filesystem. E.g., glibc was found in `/var/lib/dpkg/status`.",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/)",
          "deprecationMessage": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/)"
        },
        "path": {
          "type": "string",
          "description": "The path from which we gathered that this package/version is installed."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "Deprecated. The version installed at this location.",
          "deprecationMessage": "Deprecated. The version installed at this location."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:LocationResponse": {
      "description": "An occurrence of a particular package installation found within a system's filesystem. E.g., glibc was found in `/var/lib/dpkg/status`.",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/)",
          "deprecationMessage": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/)"
        },
        "path": {
          "type": "string",
          "description": "The path from which we gathered that this package/version is installed."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "Deprecated. The version installed at this location.",
          "deprecationMessage": "Deprecated. The version installed at this location."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "path",
        "version"
      ]
    },
    "google-native:containeranalysis/v1:Material": {
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:MaterialResponse": {
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "digest",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1:Metadata": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Completeness",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:MetadataResponse": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CompletenessResponse",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object",
      "required": [
        "buildFinishedOn",
        "buildInvocationId",
        "buildStartedOn",
        "completeness",
        "reproducible"
      ]
    },
    "google-native:containeranalysis/v1:NonCompliantFile": {
      "description": "Details about files that caused a compliance check to fail. display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using 'path'.",
      "properties": {
        "displayCommand": {
          "type": "string",
          "description": "Command to display the non-compliant files."
        },
        "path": {
          "type": "string",
          "description": "Empty if `display_command` is set."
        },
        "reason": {
          "type": "string",
          "description": "Explains why a file is non compliant for a CIS check."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:NonCompliantFileResponse": {
      "description": "Details about files that caused a compliance check to fail. display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using 'path'.",
      "properties": {
        "displayCommand": {
          "type": "string",
          "description": "Command to display the non-compliant files."
        },
        "path": {
          "type": "string",
          "description": "Empty if `display_command` is set."
        },
        "reason": {
          "type": "string",
          "description": "Explains why a file is non compliant for a CIS check."
        }
      },
      "type": "object",
      "required": [
        "displayCommand",
        "path",
        "reason"
      ]
    },
    "google-native:containeranalysis/v1:PackageIssue": {
      "description": "A detail for a distro and package this vulnerability occurrence was found in and its associated fix (if one is available).",
      "properties": {
        "affectedCpeUri": {
          "type": "string",
          "description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability was found in."
        },
        "affectedPackage": {
          "type": "string",
          "description": "The package this vulnerability was found in."
        },
        "affectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "The version of the package that is installed on the resource affected by this vulnerability."
        },
        "fileLocation": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1FileLocation"
          },
          "description": "The location at which this package was found."
        },
        "fixedCpeUri": {
          "type": "string",
          "description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability was fixed in. It is possible for this to be different from the affected_cpe_uri."
        },
        "fixedPackage": {
          "type": "string",
          "description": "The package this vulnerability was fixed in. It is possible for this to be different from the affected_package."
        },
        "fixedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "The version of the package this vulnerability was fixed in. Setting this to VersionKind.MAXIMUM means no fix is yet available."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package (e.g. OS, MAVEN, GO)."
        }
      },
      "type": "object",
      "required": [
        "affectedCpeUri",
        "affectedPackage",
        "affectedVersion",
        "fixedVersion"
      ]
    },
    "google-native:containeranalysis/v1:PackageIssueResponse": {
      "description": "A detail for a distro and package this vulnerability occurrence was found in and its associated fix (if one is available).",
      "properties": {
        "affectedCpeUri": {
          "type": "string",
          "description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability was found in."
        },
        "affectedPackage": {
          "type": "string",
          "description": "The package this vulnerability was found in."
        },
        "affectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "The version of the package that is installed on the resource affected by this vulnerability."
        },
        "effectiveSeverity": {
          "type": "string",
          "description": "The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when it is not available."
        },
        "fileLocation": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1FileLocationResponse"
          },
          "description": "The location at which this package was found."
        },
        "fixAvailable": {
          "type": "boolean",
          "description": "Whether a fix is available for this package."
        },
        "fixedCpeUri": {
          "type": "string",
          "description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability was fixed in. It is possible for this to be different from the affected_cpe_uri."
        },
        "fixedPackage": {
          "type": "string",
          "description": "The package this vulnerability was fixed in. It is possible for this to be different from the affected_package."
        },
        "fixedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "The version of the package this vulnerability was fixed in. Setting this to VersionKind.MAXIMUM means no fix is yet available."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package (e.g. OS, MAVEN, GO)."
        }
      },
      "type": "object",
      "required": [
        "affectedCpeUri",
        "affectedPackage",
        "affectedVersion",
        "effectiveSeverity",
        "fileLocation",
        "fixAvailable",
        "fixedCpeUri",
        "fixedPackage",
        "fixedVersion",
        "packageType"
      ]
    },
    "google-native:containeranalysis/v1:PackageNote": {
      "description": "PackageNote represents a particular package version.",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageNoteArchitecture",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "description": {
          "type": "string",
          "description": "The description of this package."
        },
        "digest": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Digest"
          },
          "description": "Hash value, typically a file digest, that allows unique identification a specific package."
        },
        "distribution": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Distribution"
          },
          "description": "Deprecated. The various channels by which a package is distributed.",
          "deprecationMessage": "Deprecated. The various channels by which a package is distributed."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:License",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform text denoting the maintainer of this package."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "url": {
          "type": "string",
          "description": "The homepage for this package."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "The version of the package."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:containeranalysis/v1:PackageNoteArchitecture": {
      "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Unknown architecture.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "X86",
          "description": "X86 architecture.",
          "value": "X86"
        },
        {
          "name": "X64",
          "description": "X64 architecture.",
          "value": "X64"
        }
      ]
    },
    "google-native:containeranalysis/v1:PackageNoteResponse": {
      "description": "PackageNote represents a particular package version.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "description": {
          "type": "string",
          "description": "The description of this package."
        },
        "digest": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DigestResponse"
          },
          "description": "Hash value, typically a file digest, that allows unique identification a specific package."
        },
        "distribution": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DistributionResponse"
          },
          "description": "Deprecated. The various channels by which a package is distributed.",
          "deprecationMessage": "Deprecated. The various channels by which a package is distributed."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:LicenseResponse",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform text denoting the maintainer of this package."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "url": {
          "type": "string",
          "description": "The homepage for this package."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "The version of the package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "description",
        "digest",
        "distribution",
        "license",
        "maintainer",
        "name",
        "packageType",
        "url",
        "version"
      ]
    },
    "google-native:containeranalysis/v1:PackageOccurrence": {
      "description": "Details on how a particular software package was installed on a system.",
      "properties": {
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:License",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "location": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Location"
          },
          "description": "All of the places within the filesystem versions of this package have been found."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:PackageOccurrenceResponse": {
      "description": "Details on how a particular software package was installed on a system.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:LicenseResponse",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "location": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:LocationResponse"
          },
          "description": "All of the places within the filesystem versions of this package have been found."
        },
        "name": {
          "type": "string",
          "description": "The name of the installed package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "The version of the package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "license",
        "location",
        "name",
        "packageType",
        "version"
      ]
    },
    "google-native:containeranalysis/v1:Product": {
      "description": "Product contains information about a product and how to uniquely identify it.",
      "properties": {
        "genericUri": {
          "type": "string",
          "description": "Contains a URI which is vendor-specific. Example: The artifact repository URL of an image."
        },
        "id": {
          "type": "string",
          "description": "Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document."
        },
        "name": {
          "type": "string",
          "description": "Name of the product."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ProductResponse": {
      "description": "Product contains information about a product and how to uniquely identify it.",
      "properties": {
        "genericUri": {
          "type": "string",
          "description": "Contains a URI which is vendor-specific. Example: The artifact repository URL of an image."
        },
        "name": {
          "type": "string",
          "description": "Name of the product."
        }
      },
      "type": "object",
      "required": [
        "genericUri",
        "name"
      ]
    },
    "google-native:containeranalysis/v1:ProjectRepoId": {
      "description": "Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project.",
      "properties": {
        "project": {
          "type": "string",
          "description": "The ID of the project."
        },
        "repoName": {
          "type": "string",
          "description": "The name of the repo. Leave empty for the default repo."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ProjectRepoIdResponse": {
      "description": "Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project.",
      "properties": {
        "project": {
          "type": "string",
          "description": "The ID of the project."
        },
        "repoName": {
          "type": "string",
          "description": "The name of the repo. Leave empty for the default repo."
        }
      },
      "type": "object",
      "required": [
        "project",
        "repoName"
      ]
    },
    "google-native:containeranalysis/v1:ProvenanceBuilder": {
      "properties": {
        "builderDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ResourceDescriptor"
          }
        },
        "id": {
          "type": "string"
        },
        "version": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ProvenanceBuilderResponse": {
      "properties": {
        "builderDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ResourceDescriptorResponse"
          }
        },
        "version": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "builderDependencies",
        "version"
      ]
    },
    "google-native:containeranalysis/v1:Publisher": {
      "description": "Publisher contains information about the publisher of this Note.",
      "properties": {
        "issuingAuthority": {
          "type": "string",
          "description": "Provides information about the authority of the issuing party to release the document, in particular, the party's constituency and responsibilities or other obligations."
        },
        "name": {
          "type": "string",
          "description": "Name of the publisher. Examples: 'Google', 'Google Cloud Platform'."
        },
        "publisherNamespace": {
          "type": "string",
          "description": "The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:PublisherResponse": {
      "description": "Publisher contains information about the publisher of this Note.",
      "properties": {
        "issuingAuthority": {
          "type": "string",
          "description": "Provides information about the authority of the issuing party to release the document, in particular, the party's constituency and responsibilities or other obligations."
        },
        "name": {
          "type": "string",
          "description": "Name of the publisher. Examples: 'Google', 'Google Cloud Platform'."
        },
        "publisherNamespace": {
          "type": "string",
          "description": "The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io"
        }
      },
      "type": "object",
      "required": [
        "issuingAuthority",
        "name",
        "publisherNamespace"
      ]
    },
    "google-native:containeranalysis/v1:Recipe": {
      "description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
      "properties": {
        "arguments": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Since the arguments field can greatly vary in structure, depending on the builder and recipe type, this is of form \"Any\"."
        },
        "definedInMaterial": {
          "type": "string",
          "description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use."
        },
        "environment": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Since the environment field can greatly vary in structure, depending on the builder and recipe type, this is of form \"Any\"."
        },
        "type": {
          "type": "string",
          "description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:RecipeResponse": {
      "description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
      "properties": {
        "arguments": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Since the arguments field can greatly vary in structure, depending on the builder and recipe type, this is of form \"Any\"."
        },
        "definedInMaterial": {
          "type": "string",
          "description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use."
        },
        "environment": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Since the environment field can greatly vary in structure, depending on the builder and recipe type, this is of form \"Any\"."
        },
        "type": {
          "type": "string",
          "description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "definedInMaterial",
        "entryPoint",
        "environment",
        "type"
      ]
    },
    "google-native:containeranalysis/v1:RelatedUrl": {
      "description": "Metadata for any related URL information.",
      "properties": {
        "label": {
          "type": "string",
          "description": "Label to describe usage of the URL."
        },
        "url": {
          "type": "string",
          "description": "Specific URL associated with the resource."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:RelatedUrlResponse": {
      "description": "Metadata for any related URL information.",
      "properties": {
        "label": {
          "type": "string",
          "description": "Label to describe usage of the URL."
        },
        "url": {
          "type": "string",
          "description": "Specific URL associated with the resource."
        }
      },
      "type": "object",
      "required": [
        "label",
        "url"
      ]
    },
    "google-native:containeranalysis/v1:Remediation": {
      "description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Contains a comprehensive human-readable discussion of the remediation."
        },
        "remediationType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:RemediationRemediationType",
          "description": "The type of remediation that can be applied."
        },
        "remediationUri": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrl",
          "description": "Contains the URL where to obtain the remediation."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:RemediationRemediationType": {
      "description": "The type of remediation that can be applied.",
      "type": "string",
      "enum": [
        {
          "name": "RemediationTypeUnspecified",
          "description": "No remediation type specified.",
          "value": "REMEDIATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mitigation",
          "description": "A MITIGATION is available.",
          "value": "MITIGATION"
        },
        {
          "name": "NoFixPlanned",
          "description": "No fix is planned.",
          "value": "NO_FIX_PLANNED"
        },
        {
          "name": "NoneAvailable",
          "description": "Not available.",
          "value": "NONE_AVAILABLE"
        },
        {
          "name": "VendorFix",
          "description": "A vendor fix is available.",
          "value": "VENDOR_FIX"
        },
        {
          "name": "Workaround",
          "description": "A workaround is available.",
          "value": "WORKAROUND"
        }
      ]
    },
    "google-native:containeranalysis/v1:RemediationResponse": {
      "description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Contains a comprehensive human-readable discussion of the remediation."
        },
        "remediationType": {
          "type": "string",
          "description": "The type of remediation that can be applied."
        },
        "remediationUri": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrlResponse",
          "description": "Contains the URL where to obtain the remediation."
        }
      },
      "type": "object",
      "required": [
        "details",
        "remediationType",
        "remediationUri"
      ]
    },
    "google-native:containeranalysis/v1:RepoId": {
      "description": "A unique identifier for a Cloud Repo.",
      "properties": {
        "projectRepoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ProjectRepoId",
          "description": "A combination of a project ID and a repo name."
        },
        "uid": {
          "type": "string",
          "description": "A server-assigned, globally unique identifier."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:RepoIdResponse": {
      "description": "A unique identifier for a Cloud Repo.",
      "properties": {
        "projectRepoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ProjectRepoIdResponse",
          "description": "A combination of a project ID and a repo name."
        },
        "uid": {
          "type": "string",
          "description": "A server-assigned, globally unique identifier."
        }
      },
      "type": "object",
      "required": [
        "projectRepoId",
        "uid"
      ]
    },
    "google-native:containeranalysis/v1:ResourceDescriptor": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "content": {
          "type": "string"
        },
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "downloadLocation": {
          "type": "string"
        },
        "mediaType": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:ResourceDescriptorResponse": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "content": {
          "type": "string"
        },
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "downloadLocation": {
          "type": "string"
        },
        "mediaType": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "content",
        "digest",
        "downloadLocation",
        "mediaType",
        "name",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1:RunDetails": {
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ProvenanceBuilder"
        },
        "byproducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ResourceDescriptor"
          }
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildMetadata"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:RunDetailsResponse": {
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ProvenanceBuilderResponse"
        },
        "byproducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ResourceDescriptorResponse"
          }
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildMetadataResponse"
        }
      },
      "type": "object",
      "required": [
        "builder",
        "byproducts",
        "metadata"
      ]
    },
    "google-native:containeranalysis/v1:SBOMReferenceNote": {
      "description": "The note representing an SBOM reference.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format that SBOM takes. E.g. may be spdx, cyclonedx, etc..."
        },
        "version": {
          "type": "string",
          "description": "The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SBOMReferenceNoteResponse": {
      "description": "The note representing an SBOM reference.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format that SBOM takes. E.g. may be spdx, cyclonedx, etc..."
        },
        "version": {
          "type": "string",
          "description": "The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3."
        }
      },
      "type": "object",
      "required": [
        "format",
        "version"
      ]
    },
    "google-native:containeranalysis/v1:SBOMReferenceOccurrence": {
      "description": "The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details.",
      "properties": {
        "payload": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SbomReferenceIntotoPayload",
          "description": "The actual payload that contains the SBOM reference data."
        },
        "payloadType": {
          "type": "string",
          "description": "The kind of payload that SbomReferenceIntotoPayload takes. Since it's in the intoto format, this value is expected to be 'application/vnd.in-toto+json'."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:EnvelopeSignature"
          },
          "description": "The signatures over the payload."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SBOMReferenceOccurrenceResponse": {
      "description": "The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details.",
      "properties": {
        "payload": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SbomReferenceIntotoPayloadResponse",
          "description": "The actual payload that contains the SBOM reference data."
        },
        "payloadType": {
          "type": "string",
          "description": "The kind of payload that SbomReferenceIntotoPayload takes. Since it's in the intoto format, this value is expected to be 'application/vnd.in-toto+json'."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:EnvelopeSignatureResponse"
          },
          "description": "The signatures over the payload."
        }
      },
      "type": "object",
      "required": [
        "payload",
        "payloadType",
        "signatures"
      ]
    },
    "google-native:containeranalysis/v1:SBOMStatus": {
      "description": "The status of an SBOM generation.",
      "properties": {
        "error": {
          "type": "string",
          "description": "If there was an error generating an SBOM, this will indicate what that error was."
        },
        "sbomState": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMStatusSbomState",
          "description": "The progress of the SBOM generation."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SBOMStatusResponse": {
      "description": "The status of an SBOM generation.",
      "properties": {
        "error": {
          "type": "string",
          "description": "If there was an error generating an SBOM, this will indicate what that error was."
        },
        "sbomState": {
          "type": "string",
          "description": "The progress of the SBOM generation."
        }
      },
      "type": "object",
      "required": [
        "error",
        "sbomState"
      ]
    },
    "google-native:containeranalysis/v1:SBOMStatusSbomState": {
      "description": "The progress of the SBOM generation.",
      "type": "string",
      "enum": [
        {
          "name": "SbomStateUnspecified",
          "description": "Default unknown state.",
          "value": "SBOM_STATE_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "SBOM scanning is pending.",
          "value": "PENDING"
        },
        {
          "name": "Complete",
          "description": "SBOM scanning has completed.",
          "value": "COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1:SbomReferenceIntotoPayload": {
      "description": "The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details.",
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SbomReferenceIntotoPredicate",
          "description": "Additional parameters of the Predicate. Includes the actual data about the SBOM."
        },
        "predicateType": {
          "type": "string",
          "description": "URI identifying the type of the Predicate."
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Subject"
          },
          "description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact."
        },
        "type": {
          "type": "string",
          "description": "Identifier for the schema of the Statement."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SbomReferenceIntotoPayloadResponse": {
      "description": "The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details.",
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SbomReferenceIntotoPredicateResponse",
          "description": "Additional parameters of the Predicate. Includes the actual data about the SBOM."
        },
        "predicateType": {
          "type": "string",
          "description": "URI identifying the type of the Predicate."
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:SubjectResponse"
          },
          "description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact."
        },
        "type": {
          "type": "string",
          "description": "Identifier for the schema of the Statement."
        }
      },
      "type": "object",
      "required": [
        "predicate",
        "predicateType",
        "subject",
        "type"
      ]
    },
    "google-native:containeranalysis/v1:SbomReferenceIntotoPredicate": {
      "description": "A predicate which describes the SBOM being referenced.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of algorithm to digest of the contents of the SBOM."
        },
        "location": {
          "type": "string",
          "description": "The location of the SBOM."
        },
        "mimeType": {
          "type": "string",
          "description": "The mime type of the SBOM."
        },
        "referrerId": {
          "type": "string",
          "description": "The person or system referring this predicate to the consumer."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SbomReferenceIntotoPredicateResponse": {
      "description": "A predicate which describes the SBOM being referenced.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of algorithm to digest of the contents of the SBOM."
        },
        "location": {
          "type": "string",
          "description": "The location of the SBOM."
        },
        "mimeType": {
          "type": "string",
          "description": "The mime type of the SBOM."
        },
        "referrerId": {
          "type": "string",
          "description": "The person or system referring this predicate to the consumer."
        }
      },
      "type": "object",
      "required": [
        "digest",
        "location",
        "mimeType",
        "referrerId"
      ]
    },
    "google-native:containeranalysis/v1:Signature": {
      "description": "Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular, verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with respect to the payload. The `signature` contents SHOULD NOT be \"attached\" (where the payload is included with the serialized `signature` bytes). Verifiers MUST ignore any \"attached\" payload and only verify signatures with respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature, or the canonical serialization of the proto message that holds this signature).",
      "properties": {
        "publicKeyId": {
          "type": "string",
          "description": "The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public key fingerprint: * \"openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA\" See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization): * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\" * \"nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5\""
        },
        "signature": {
          "type": "string",
          "description": "The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be unambiguously provided with the Signature during verification. A wrapper message might provide the payload explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously computed to derive the payload."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SignatureResponse": {
      "description": "Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular, verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with respect to the payload. The `signature` contents SHOULD NOT be \"attached\" (where the payload is included with the serialized `signature` bytes). Verifiers MUST ignore any \"attached\" payload and only verify signatures with respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature, or the canonical serialization of the proto message that holds this signature).",
      "properties": {
        "publicKeyId": {
          "type": "string",
          "description": "The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public key fingerprint: * \"openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA\" See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization): * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\" * \"nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5\""
        },
        "signature": {
          "type": "string",
          "description": "The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be unambiguously provided with the Signature during verification. A wrapper message might provide the payload explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously computed to derive the payload."
        }
      },
      "type": "object",
      "required": [
        "publicKeyId",
        "signature"
      ]
    },
    "google-native:containeranalysis/v1:SlsaBuilder": {
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SlsaBuilderResponse": {
      "type": "object"
    },
    "google-native:containeranalysis/v1:SlsaCompleteness": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "arguments": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe."
        },
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.environment is claimed to be complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SlsaCompletenessResponse": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "arguments": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe."
        },
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.environment is claimed to be complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\"."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "environment",
        "materials"
      ]
    },
    "google-native:containeranalysis/v1:SlsaMetadata": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaCompleteness",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SlsaMetadataResponse": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaCompletenessResponse",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object",
      "required": [
        "buildFinishedOn",
        "buildInvocationId",
        "buildStartedOn",
        "completeness",
        "reproducible"
      ]
    },
    "google-native:containeranalysis/v1:SlsaProvenance": {
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaBuilder",
          "description": "required"
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Material"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaMetadata"
        },
        "recipe": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaRecipe",
          "description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SlsaProvenanceResponse": {
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaBuilderResponse",
          "description": "required"
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:MaterialResponse"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaMetadataResponse"
        },
        "recipe": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SlsaRecipeResponse",
          "description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required"
        }
      },
      "type": "object",
      "required": [
        "builder",
        "materials",
        "metadata",
        "recipe"
      ]
    },
    "google-native:containeranalysis/v1:SlsaProvenanceV1": {
      "description": "Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.",
      "properties": {
        "buildDefinition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildDefinition"
        },
        "runDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:RunDetails"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SlsaProvenanceV1Response": {
      "description": "Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.",
      "properties": {
        "buildDefinition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildDefinitionResponse"
        },
        "runDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:RunDetailsResponse"
        }
      },
      "type": "object",
      "required": [
        "buildDefinition",
        "runDetails"
      ]
    },
    "google-native:containeranalysis/v1:SlsaProvenanceZeroTwo": {
      "description": "See full explanation of fields at slsa.dev/provenance/v0.2.",
      "properties": {
        "buildConfig": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "buildType": {
          "type": "string"
        },
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaBuilder"
        },
        "invocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaInvocation"
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaMaterial"
          }
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaMetadata"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SlsaProvenanceZeroTwoResponse": {
      "description": "See full explanation of fields at slsa.dev/provenance/v0.2.",
      "properties": {
        "buildConfig": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "buildType": {
          "type": "string"
        },
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaBuilderResponse"
        },
        "invocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaInvocationResponse"
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaMaterialResponse"
          }
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GrafeasV1SlsaProvenanceZeroTwoSlsaMetadataResponse"
        }
      },
      "type": "object",
      "required": [
        "buildConfig",
        "buildType",
        "builder",
        "invocation",
        "materials",
        "metadata"
      ]
    },
    "google-native:containeranalysis/v1:SlsaRecipe": {
      "description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
      "properties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different."
        },
        "definedInMaterial": {
          "type": "string",
          "description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use."
        },
        "environment": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different."
        },
        "type": {
          "type": "string",
          "description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SlsaRecipeResponse": {
      "description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
      "properties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different."
        },
        "definedInMaterial": {
          "type": "string",
          "description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use."
        },
        "environment": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different."
        },
        "type": {
          "type": "string",
          "description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "definedInMaterial",
        "entryPoint",
        "environment",
        "type"
      ]
    },
    "google-native:containeranalysis/v1:Source": {
      "description": "Source describes the location of the source used for the build.",
      "properties": {
        "additionalContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:SourceContext"
          },
          "description": "If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field."
        },
        "artifactStorageSourceUri": {
          "type": "string",
          "description": "If provided, the input binary artifacts for the build came from this location."
        },
        "context": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SourceContext",
          "description": "If provided, the source code used for the build came from this location."
        },
        "fileHashes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SourceContext": {
      "description": "A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.",
      "properties": {
        "cloudRepo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CloudRepoSourceContext",
          "description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
        },
        "gerrit": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GerritSourceContext",
          "description": "A SourceContext referring to a Gerrit project."
        },
        "git": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GitSourceContext",
          "description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user defined metadata."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SourceContextResponse": {
      "description": "A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.",
      "properties": {
        "cloudRepo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CloudRepoSourceContextResponse",
          "description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
        },
        "gerrit": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GerritSourceContextResponse",
          "description": "A SourceContext referring to a Gerrit project."
        },
        "git": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:GitSourceContextResponse",
          "description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user defined metadata."
        }
      },
      "type": "object",
      "required": [
        "cloudRepo",
        "gerrit",
        "git",
        "labels"
      ]
    },
    "google-native:containeranalysis/v1:SourceResponse": {
      "description": "Source describes the location of the source used for the build.",
      "properties": {
        "additionalContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:SourceContextResponse"
          },
          "description": "If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field."
        },
        "artifactStorageSourceUri": {
          "type": "string",
          "description": "If provided, the input binary artifacts for the build came from this location."
        },
        "context": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SourceContextResponse",
          "description": "If provided, the source code used for the build came from this location."
        },
        "fileHashes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file."
        }
      },
      "type": "object",
      "required": [
        "additionalContexts",
        "artifactStorageSourceUri",
        "context",
        "fileHashes"
      ]
    },
    "google-native:containeranalysis/v1:Status": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:containeranalysis/v1:Subject": {
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "`\"\": \"\"` Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:SubjectResponse": {
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "`\"\": \"\"` Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "digest",
        "name"
      ]
    },
    "google-native:containeranalysis/v1:UpgradeDistribution": {
      "description": "The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.",
      "properties": {
        "classification": {
          "type": "string",
          "description": "The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)"
        },
        "cpeUri": {
          "type": "string",
          "description": "Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/."
        },
        "cve": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The cve tied to this Upgrade."
        },
        "severity": {
          "type": "string",
          "description": "The severity as specified by the upstream operating system."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:UpgradeDistributionResponse": {
      "description": "The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.",
      "properties": {
        "classification": {
          "type": "string",
          "description": "The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)"
        },
        "cpeUri": {
          "type": "string",
          "description": "Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/."
        },
        "cve": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The cve tied to this Upgrade."
        },
        "severity": {
          "type": "string",
          "description": "The severity as specified by the upstream operating system."
        }
      },
      "type": "object",
      "required": [
        "classification",
        "cpeUri",
        "cve",
        "severity"
      ]
    },
    "google-native:containeranalysis/v1:UpgradeNote": {
      "description": "An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update.",
      "properties": {
        "distributions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeDistribution"
          },
          "description": "Metadata about the upgrade for each specific operating system."
        },
        "package": {
          "type": "string",
          "description": "Required for non-Windows OS. The package this Upgrade is for."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "Required for non-Windows OS. The version of the package in machine + human readable form."
        },
        "windowsUpdate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:WindowsUpdate",
          "description": "Required for Windows OS. Represents the metadata about the Windows update."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:UpgradeNoteResponse": {
      "description": "An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update.",
      "properties": {
        "distributions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeDistributionResponse"
          },
          "description": "Metadata about the upgrade for each specific operating system."
        },
        "package": {
          "type": "string",
          "description": "Required for non-Windows OS. The package this Upgrade is for."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "Required for non-Windows OS. The version of the package in machine + human readable form."
        },
        "windowsUpdate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:WindowsUpdateResponse",
          "description": "Required for Windows OS. Represents the metadata about the Windows update."
        }
      },
      "type": "object",
      "required": [
        "distributions",
        "package",
        "version",
        "windowsUpdate"
      ]
    },
    "google-native:containeranalysis/v1:UpgradeOccurrence": {
      "description": "An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). For Windows, both distribution and windows_update contain information for the Windows update.",
      "properties": {
        "distribution": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeDistribution",
          "description": "Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence."
        },
        "package": {
          "type": "string",
          "description": "Required for non-Windows OS. The package this Upgrade is for."
        },
        "parsedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Version",
          "description": "Required for non-Windows OS. The version of the package in a machine + human readable form."
        },
        "windowsUpdate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:WindowsUpdate",
          "description": "Required for Windows OS. Represents the metadata about the Windows update."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:UpgradeOccurrenceResponse": {
      "description": "An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). For Windows, both distribution and windows_update contain information for the Windows update.",
      "properties": {
        "distribution": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeDistributionResponse",
          "description": "Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence."
        },
        "package": {
          "type": "string",
          "description": "Required for non-Windows OS. The package this Upgrade is for."
        },
        "parsedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionResponse",
          "description": "Required for non-Windows OS. The version of the package in a machine + human readable form."
        },
        "windowsUpdate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:WindowsUpdateResponse",
          "description": "Required for Windows OS. Represents the metadata about the Windows update."
        }
      },
      "type": "object",
      "required": [
        "distribution",
        "package",
        "parsedVersion",
        "windowsUpdate"
      ]
    },
    "google-native:containeranalysis/v1:Version": {
      "description": "Version contains structured information about the version of a package.",
      "properties": {
        "epoch": {
          "type": "integer",
          "description": "Used to correct mistakes in the version numbering scheme."
        },
        "fullName": {
          "type": "string",
          "description": "Human readable version string. This string is of the form :- and is only set when kind is NORMAL."
        },
        "inclusive": {
          "type": "boolean",
          "description": "Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range."
        },
        "kind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VersionKind",
          "description": "Distinguishes between sentinel MIN/MAX versions and normal versions."
        },
        "name": {
          "type": "string",
          "description": "Required only when version kind is NORMAL. The main part of the version name."
        },
        "revision": {
          "type": "string",
          "description": "The iteration of the package build from the above version."
        }
      },
      "type": "object",
      "required": [
        "kind"
      ]
    },
    "google-native:containeranalysis/v1:VersionKind": {
      "description": "Required. Distinguishes between sentinel MIN/MAX versions and normal versions.",
      "type": "string",
      "enum": [
        {
          "name": "VersionKindUnspecified",
          "description": "Unknown.",
          "value": "VERSION_KIND_UNSPECIFIED"
        },
        {
          "name": "Normal",
          "description": "A standard package version.",
          "value": "NORMAL"
        },
        {
          "name": "Minimum",
          "description": "A special version representing negative infinity.",
          "value": "MINIMUM"
        },
        {
          "name": "Maximum",
          "description": "A special version representing positive infinity.",
          "value": "MAXIMUM"
        }
      ]
    },
    "google-native:containeranalysis/v1:VersionResponse": {
      "description": "Version contains structured information about the version of a package.",
      "properties": {
        "epoch": {
          "type": "integer",
          "description": "Used to correct mistakes in the version numbering scheme."
        },
        "fullName": {
          "type": "string",
          "description": "Human readable version string. This string is of the form :- and is only set when kind is NORMAL."
        },
        "inclusive": {
          "type": "boolean",
          "description": "Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range."
        },
        "kind": {
          "type": "string",
          "description": "Distinguishes between sentinel MIN/MAX versions and normal versions."
        },
        "name": {
          "type": "string",
          "description": "Required only when version kind is NORMAL. The main part of the version name."
        },
        "revision": {
          "type": "string",
          "description": "The iteration of the package build from the above version."
        }
      },
      "type": "object",
      "required": [
        "epoch",
        "fullName",
        "inclusive",
        "kind",
        "name",
        "revision"
      ]
    },
    "google-native:containeranalysis/v1:VexAssessment": {
      "description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
          "deprecationMessage": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Justification",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "noteName": {
          "type": "string",
          "description": "The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrl"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Remediation"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "state": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VexAssessmentState",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:VexAssessmentResponse": {
      "description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
          "deprecationMessage": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:JustificationResponse",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "noteName": {
          "type": "string",
          "description": "The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrlResponse"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RemediationResponse"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "state": {
          "type": "string",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object",
      "required": [
        "cve",
        "impacts",
        "justification",
        "noteName",
        "relatedUris",
        "remediations",
        "state",
        "vulnerabilityId"
      ]
    },
    "google-native:containeranalysis/v1:VexAssessmentState": {
      "description": "Provides the state of this Vulnerability assessment.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "No state is specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Affected",
          "description": "This product is known to be affected by this vulnerability.",
          "value": "AFFECTED"
        },
        {
          "name": "NotAffected",
          "description": "This product is known to be not affected by this vulnerability.",
          "value": "NOT_AFFECTED"
        },
        {
          "name": "Fixed",
          "description": "This product contains a fix for this vulnerability.",
          "value": "FIXED"
        },
        {
          "name": "UnderInvestigation",
          "description": "It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation.",
          "value": "UNDER_INVESTIGATION"
        }
      ]
    },
    "google-native:containeranalysis/v1:VulnerabilityAssessmentNote": {
      "description": "A single VulnerabilityAssessmentNote represents one particular product's vulnerability assessment for one CVE.",
      "properties": {
        "assessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Assessment",
          "description": "Represents a vulnerability assessment for the product."
        },
        "languageCode": {
          "type": "string",
          "description": "Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "product": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Product",
          "description": "The product affected by this vex."
        },
        "publisher": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Publisher",
          "description": "Publisher details of this Note."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "title": {
          "type": "string",
          "description": "The title of the note. E.g. `Vex-Debian-11.4`"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:VulnerabilityAssessmentNoteResponse": {
      "description": "A single VulnerabilityAssessmentNote represents one particular product's vulnerability assessment for one CVE.",
      "properties": {
        "assessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AssessmentResponse",
          "description": "Represents a vulnerability assessment for the product."
        },
        "languageCode": {
          "type": "string",
          "description": "Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "product": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ProductResponse",
          "description": "The product affected by this vex."
        },
        "publisher": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:PublisherResponse",
          "description": "Publisher details of this Note."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "title": {
          "type": "string",
          "description": "The title of the note. E.g. `Vex-Debian-11.4`"
        }
      },
      "type": "object",
      "required": [
        "assessment",
        "languageCode",
        "longDescription",
        "product",
        "publisher",
        "shortDescription",
        "title"
      ]
    },
    "google-native:containeranalysis/v1:VulnerabilityNote": {
      "description": "A security vulnerability that can be found in resources.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSS",
          "description": "The full description of the v2 CVSS for this vulnerability."
        },
        "cvssV3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3",
          "description": "The full description of the CVSSv3 for this vulnerability."
        },
        "cvssVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityNoteCvssVersion",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Detail"
          },
          "description": "Details of all known distros and packages affected by this vulnerability."
        },
        "severity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityNoteSeverity",
          "description": "The note provider assigned severity of this vulnerability."
        },
        "sourceUpdateTime": {
          "type": "string",
          "description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker."
        },
        "windowsDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:WindowsDetail"
          },
          "description": "Windows details get their own format because the information format and model don't match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:VulnerabilityNoteCvssVersion": {
      "description": "CVSS version used to populate cvss_score and severity.",
      "type": "string",
      "enum": [
        {
          "name": "CvssVersionUnspecified",
          "value": "CVSS_VERSION_UNSPECIFIED"
        },
        {
          "name": "CvssVersion2",
          "value": "CVSS_VERSION_2"
        },
        {
          "name": "CvssVersion3",
          "value": "CVSS_VERSION_3"
        }
      ]
    },
    "google-native:containeranalysis/v1:VulnerabilityNoteResponse": {
      "description": "A security vulnerability that can be found in resources.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSResponse",
          "description": "The full description of the v2 CVSS for this vulnerability."
        },
        "cvssV3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSv3Response",
          "description": "The full description of the CVSSv3 for this vulnerability."
        },
        "cvssVersion": {
          "type": "string",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DetailResponse"
          },
          "description": "Details of all known distros and packages affected by this vulnerability."
        },
        "severity": {
          "type": "string",
          "description": "The note provider assigned severity of this vulnerability."
        },
        "sourceUpdateTime": {
          "type": "string",
          "description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker."
        },
        "windowsDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:WindowsDetailResponse"
          },
          "description": "Windows details get their own format because the information format and model don't match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version."
        }
      },
      "type": "object",
      "required": [
        "cvssScore",
        "cvssV2",
        "cvssV3",
        "cvssVersion",
        "details",
        "severity",
        "sourceUpdateTime",
        "windowsDetails"
      ]
    },
    "google-native:containeranalysis/v1:VulnerabilityNoteSeverity": {
      "description": "The note provider assigned severity of this vulnerability.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unknown.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Minimal",
          "description": "Minimal severity.",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Low severity.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium severity.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High severity.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical severity.",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1:VulnerabilityOccurrence": {
      "description": "An occurrence of a severity vulnerability on a resource.",
      "properties": {
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSS",
          "description": "The cvss v2 score for the vulnerability."
        },
        "cvssv3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSS",
          "description": "The cvss v3 score for the vulnerability."
        },
        "effectiveSeverity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityOccurrenceEffectiveSeverity",
          "description": "The distro assigned severity for this vulnerability when it is available, otherwise this is the note provider assigned severity. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues."
        },
        "extraDetails": {
          "type": "string",
          "description": "Occurrence-specific extra details about the vulnerability."
        },
        "packageIssue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageIssue"
          },
          "description": "The set of affected locations and their fixes (if available) within the associated resource."
        },
        "type": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "vexAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VexAssessment"
        }
      },
      "type": "object",
      "required": [
        "packageIssue"
      ]
    },
    "google-native:containeranalysis/v1:VulnerabilityOccurrenceEffectiveSeverity": {
      "description": "The distro assigned severity for this vulnerability when it is available, otherwise this is the note provider assigned severity. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unknown.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Minimal",
          "description": "Minimal severity.",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Low severity.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium severity.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High severity.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical severity.",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1:VulnerabilityOccurrenceResponse": {
      "description": "An occurrence of a severity vulnerability on a resource.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSResponse",
          "description": "The cvss v2 score for the vulnerability."
        },
        "cvssVersion": {
          "type": "string",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "cvssv3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:CVSSResponse",
          "description": "The cvss v3 score for the vulnerability."
        },
        "effectiveSeverity": {
          "type": "string",
          "description": "The distro assigned severity for this vulnerability when it is available, otherwise this is the note provider assigned severity. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues."
        },
        "extraDetails": {
          "type": "string",
          "description": "Occurrence-specific extra details about the vulnerability."
        },
        "fixAvailable": {
          "type": "boolean",
          "description": "Whether at least one of the affected packages has a fix available."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this vulnerability."
        },
        "packageIssue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageIssueResponse"
          },
          "description": "The set of affected locations and their fixes (if available) within the associated resource."
        },
        "relatedUrls": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrlResponse"
          },
          "description": "URLs related to this vulnerability."
        },
        "severity": {
          "type": "string",
          "description": "The note provider assigned severity of this vulnerability."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this vulnerability."
        },
        "type": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "vexAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VexAssessmentResponse"
        }
      },
      "type": "object",
      "required": [
        "cvssScore",
        "cvssV2",
        "cvssVersion",
        "cvssv3",
        "effectiveSeverity",
        "extraDetails",
        "fixAvailable",
        "longDescription",
        "packageIssue",
        "relatedUrls",
        "severity",
        "shortDescription",
        "type",
        "vexAssessment"
      ]
    },
    "google-native:containeranalysis/v1:WindowsDetail": {
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects."
        },
        "description": {
          "type": "string",
          "description": "The description of this vulnerability."
        },
        "fixingKbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:KnowledgeBase"
          },
          "description": "The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix."
        },
        "name": {
          "type": "string",
          "description": "The name of this vulnerability."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "fixingKbs",
        "name"
      ]
    },
    "google-native:containeranalysis/v1:WindowsDetailResponse": {
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects."
        },
        "description": {
          "type": "string",
          "description": "The description of this vulnerability."
        },
        "fixingKbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:KnowledgeBaseResponse"
          },
          "description": "The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix."
        },
        "name": {
          "type": "string",
          "description": "The name of this vulnerability."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "description",
        "fixingKbs",
        "name"
      ]
    },
    "google-native:containeranalysis/v1:WindowsUpdate": {
      "description": "Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Category"
          },
          "description": "The list of categories to which the update belongs."
        },
        "description": {
          "type": "string",
          "description": "The localized description of the update."
        },
        "identity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Identity",
          "description": "Required - The unique identifier for the update."
        },
        "kbArticleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Microsoft Knowledge Base article IDs that are associated with the update."
        },
        "lastPublishedTimestamp": {
          "type": "string",
          "description": "The last published timestamp of the update."
        },
        "supportUrl": {
          "type": "string",
          "description": "The hyperlink to the support information for the update."
        },
        "title": {
          "type": "string",
          "description": "The localized title of the update."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1:WindowsUpdateResponse": {
      "description": "Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:CategoryResponse"
          },
          "description": "The list of categories to which the update belongs."
        },
        "description": {
          "type": "string",
          "description": "The localized description of the update."
        },
        "identity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:IdentityResponse",
          "description": "Required - The unique identifier for the update."
        },
        "kbArticleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Microsoft Knowledge Base article IDs that are associated with the update."
        },
        "lastPublishedTimestamp": {
          "type": "string",
          "description": "The last published timestamp of the update."
        },
        "supportUrl": {
          "type": "string",
          "description": "The hyperlink to the support information for the update."
        },
        "title": {
          "type": "string",
          "description": "The localized title of the update."
        }
      },
      "type": "object",
      "required": [
        "categories",
        "description",
        "identity",
        "kbArticleIds",
        "lastPublishedTimestamp",
        "supportUrl",
        "title"
      ]
    },
    "google-native:containeranalysis/v1alpha1:AnalysisCompleted": {
      "description": "Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource.",
      "properties": {
        "analysisType": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "type of analysis that were completed on a resource."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:AnalysisCompletedResponse": {
      "description": "Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource.",
      "properties": {
        "analysisType": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "type of analysis that were completed on a resource."
        }
      },
      "type": "object",
      "required": [
        "analysisType"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Artifact": {
      "description": "Artifact describes a build product.",
      "properties": {
        "checksum": {
          "type": "string",
          "description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container."
        },
        "id": {
          "type": "string",
          "description": "Artifact ID, if any; for container images, this will be a URL by digest like gcr.io/projectID/imagename@sha256:123456"
        },
        "name": {
          "type": "string",
          "description": "Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto.",
          "deprecationMessage": "Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto."
        },
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ArtifactResponse": {
      "description": "Artifact describes a build product.",
      "properties": {
        "checksum": {
          "type": "string",
          "description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container."
        },
        "name": {
          "type": "string",
          "description": "Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto.",
          "deprecationMessage": "Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto."
        },
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image."
        }
      },
      "type": "object",
      "required": [
        "checksum",
        "name",
        "names"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Assessment": {
      "description": "Assessment provides all information that is related to a single vulnerability for this product.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Justification",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:URI"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Remediation"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "state": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AssessmentState",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:AssessmentResponse": {
      "description": "Assessment provides all information that is related to a single vulnerability for this product.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:JustificationResponse",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:URIResponse"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RemediationResponse"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "state": {
          "type": "string",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object",
      "required": [
        "cve",
        "impacts",
        "justification",
        "longDescription",
        "relatedUris",
        "remediations",
        "shortDescription",
        "state",
        "vulnerabilityId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:AssessmentState": {
      "description": "Provides the state of this Vulnerability assessment.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "No state is specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Affected",
          "description": "This product is known to be affected by this vulnerability.",
          "value": "AFFECTED"
        },
        {
          "name": "NotAffected",
          "description": "This product is known to be not affected by this vulnerability.",
          "value": "NOT_AFFECTED"
        },
        {
          "name": "Fixed",
          "description": "This product contains a fix for this vulnerability.",
          "value": "FIXED"
        },
        {
          "name": "UnderInvestigation",
          "description": "It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation.",
          "value": "UNDER_INVESTIGATION"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:Attestation": {
      "description": "Occurrence that represents a single \"attestation\". The authenticity of an Attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the AttestationAuthority to which this Attestation is attached is primarily useful for look-up (how to find this Attestation if you already know the Authority and artifact to be verified) and intent (which authority was this attestation intended to sign for).",
      "properties": {
        "pgpSignedAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PgpSignedAttestation"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:AttestationAuthority": {
      "description": "Note kind that represents a logical attestation \"role\" or \"authority\". For example, an organization might have one `AttestationAuthority` for \"QA\" and one for \"build\". This Note is intended to act strictly as a grouping mechanism for the attached Occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an Occurrence to a given Note. It also provides a single point of lookup to find all attached Attestation Occurrences, even if they don't all live in the same project.",
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AttestationAuthorityHint"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:AttestationAuthorityHint": {
      "description": "This submessage provides human-readable hints about the purpose of the AttestationAuthority. Because the name of a Note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should NOT be used to look up AttestationAuthorities in security sensitive contexts, such as when looking up Attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this Attestation Authority, for example \"qa\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:AttestationAuthorityHintResponse": {
      "description": "This submessage provides human-readable hints about the purpose of the AttestationAuthority. Because the name of a Note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should NOT be used to look up AttestationAuthorities in security sensitive contexts, such as when looking up Attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this Attestation Authority, for example \"qa\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1alpha1:AttestationAuthorityResponse": {
      "description": "Note kind that represents a logical attestation \"role\" or \"authority\". For example, an organization might have one `AttestationAuthority` for \"QA\" and one for \"build\". This Note is intended to act strictly as a grouping mechanism for the attached Occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an Occurrence to a given Note. It also provides a single point of lookup to find all attached Attestation Occurrences, even if they don't all live in the same project.",
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AttestationAuthorityHintResponse"
        }
      },
      "type": "object",
      "required": [
        "hint"
      ]
    },
    "google-native:containeranalysis/v1alpha1:AttestationResponse": {
      "description": "Occurrence that represents a single \"attestation\". The authenticity of an Attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the AttestationAuthority to which this Attestation is attached is primarily useful for look-up (how to find this Attestation if you already know the Authority and artifact to be verified) and intent (which authority was this attestation intended to sign for).",
      "properties": {
        "pgpSignedAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PgpSignedAttestationResponse"
        }
      },
      "type": "object",
      "required": [
        "pgpSignedAttestation"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Basis": {
      "description": "Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g. a tag of the resource_url.",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Fingerprint",
          "description": "The fingerprint of the base image."
        },
        "resourceUrl": {
          "type": "string",
          "description": "The resource_url for the resource representing the basis of associated occurrence images."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BasisResponse": {
      "description": "Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g. a tag of the resource_url.",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FingerprintResponse",
          "description": "The fingerprint of the base image."
        },
        "resourceUrl": {
          "type": "string",
          "description": "The resource_url for the resource representing the basis of associated occurrence images."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "resourceUrl"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:containeranalysis/v1alpha1:BuildDefinition": {
      "properties": {
        "buildType": {
          "type": "string"
        },
        "externalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "internalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "resolvedDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ResourceDescriptor"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BuildDefinitionResponse": {
      "properties": {
        "buildType": {
          "type": "string"
        },
        "externalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "internalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "resolvedDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ResourceDescriptorResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "buildType",
        "externalParameters",
        "internalParameters",
        "resolvedDependencies"
      ]
    },
    "google-native:containeranalysis/v1alpha1:BuildDetails": {
      "description": "Message encapsulating build provenance details.",
      "properties": {
        "inTotoSlsaProvenanceV1": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoSlsaProvenanceV1",
          "description": "In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance."
        },
        "intotoProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoProvenance",
          "description": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.",
          "deprecationMessage": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec."
        },
        "intotoStatement": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoStatement",
          "description": "In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence's envelope."
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildProvenance",
          "description": "The actual provenance"
        },
        "provenanceBytes": {
          "type": "string",
          "description": "Serialized JSON representation of the provenance, used in generating the `BuildSignature` in the corresponding Result. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BuildDetailsResponse": {
      "description": "Message encapsulating build provenance details.",
      "properties": {
        "inTotoSlsaProvenanceV1": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoSlsaProvenanceV1Response",
          "description": "In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance."
        },
        "intotoProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoProvenanceResponse",
          "description": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.",
          "deprecationMessage": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec."
        },
        "intotoStatement": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoStatementResponse",
          "description": "In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence's envelope."
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildProvenanceResponse",
          "description": "The actual provenance"
        },
        "provenanceBytes": {
          "type": "string",
          "description": "Serialized JSON representation of the provenance, used in generating the `BuildSignature` in the corresponding Result. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes."
        }
      },
      "type": "object",
      "required": [
        "inTotoSlsaProvenanceV1",
        "intotoProvenance",
        "intotoStatement",
        "provenance",
        "provenanceBytes"
      ]
    },
    "google-native:containeranalysis/v1alpha1:BuildMetadata": {
      "properties": {
        "finishedOn": {
          "type": "string"
        },
        "invocationId": {
          "type": "string"
        },
        "startedOn": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BuildMetadataResponse": {
      "properties": {
        "finishedOn": {
          "type": "string"
        },
        "invocationId": {
          "type": "string"
        },
        "startedOn": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "finishedOn",
        "invocationId",
        "startedOn"
      ]
    },
    "google-native:containeranalysis/v1alpha1:BuildProvenance": {
      "description": "Provenance of a build. Contains all information needed to verify the full details about the build from source to completion.",
      "properties": {
        "buildOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details."
        },
        "builderVersion": {
          "type": "string",
          "description": "Version string of the builder at the time this build was executed."
        },
        "builtArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Artifact"
          },
          "description": "Output of the build."
        },
        "commands": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Command"
          },
          "description": "Commands requested by the build."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the build was created."
        },
        "creator": {
          "type": "string",
          "description": "E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the time the build was initiated; this address may not represent the same end-user for all time."
        },
        "finishTime": {
          "type": "string",
          "description": "Time at which execution of the build was finished."
        },
        "id": {
          "type": "string",
          "description": "Unique identifier of the build."
        },
        "logsBucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket where logs were written."
        },
        "project": {
          "type": "string",
          "description": "ID of the project."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Source",
          "description": "Details of the Source input to the build."
        },
        "startTime": {
          "type": "string",
          "description": "Time at which execution of the build was started."
        },
        "triggerId": {
          "type": "string",
          "description": "Trigger identifier if the build was triggered automatically; empty if not."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BuildProvenanceResponse": {
      "description": "Provenance of a build. Contains all information needed to verify the full details about the build from source to completion.",
      "properties": {
        "buildOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details."
        },
        "builderVersion": {
          "type": "string",
          "description": "Version string of the builder at the time this build was executed."
        },
        "builtArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ArtifactResponse"
          },
          "description": "Output of the build."
        },
        "commands": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CommandResponse"
          },
          "description": "Commands requested by the build."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the build was created."
        },
        "creator": {
          "type": "string",
          "description": "E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the time the build was initiated; this address may not represent the same end-user for all time."
        },
        "finishTime": {
          "type": "string",
          "description": "Time at which execution of the build was finished."
        },
        "logsBucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket where logs were written."
        },
        "project": {
          "type": "string",
          "description": "ID of the project."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SourceResponse",
          "description": "Details of the Source input to the build."
        },
        "startTime": {
          "type": "string",
          "description": "Time at which execution of the build was started."
        },
        "triggerId": {
          "type": "string",
          "description": "Trigger identifier if the build was triggered automatically; empty if not."
        }
      },
      "type": "object",
      "required": [
        "buildOptions",
        "builderVersion",
        "builtArtifacts",
        "commands",
        "createTime",
        "creator",
        "finishTime",
        "logsBucket",
        "project",
        "sourceProvenance",
        "startTime",
        "triggerId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:BuildSignature": {
      "description": "Message encapsulating the signature of the verified build.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "An Id for the key used to sign. This could be either an Id for the key stored in `public_key` (such as the Id or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service)."
        },
        "keyType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildSignatureKeyType",
          "description": "The type of the key, either stored in `public_key` or referenced in `key_id`"
        },
        "publicKey": {
          "type": "string",
          "description": "Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`"
        },
        "signature": {
          "type": "string",
          "description": "Signature of the related `BuildProvenance`, encoded in a base64 string."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BuildSignatureKeyType": {
      "description": "The type of the key, either stored in `public_key` or referenced in `key_id`",
      "type": "string",
      "enum": [
        {
          "name": "KeyTypeUnspecified",
          "description": "`KeyType` is not set.",
          "value": "KEY_TYPE_UNSPECIFIED"
        },
        {
          "name": "PgpAsciiArmored",
          "description": "`PGP ASCII Armored` public key.",
          "value": "PGP_ASCII_ARMORED"
        },
        {
          "name": "PkixPem",
          "description": "`PKIX PEM` public key.",
          "value": "PKIX_PEM"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:BuildSignatureResponse": {
      "description": "Message encapsulating the signature of the verified build.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "An Id for the key used to sign. This could be either an Id for the key stored in `public_key` (such as the Id or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service)."
        },
        "keyType": {
          "type": "string",
          "description": "The type of the key, either stored in `public_key` or referenced in `key_id`"
        },
        "publicKey": {
          "type": "string",
          "description": "Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`"
        },
        "signature": {
          "type": "string",
          "description": "Signature of the related `BuildProvenance`, encoded in a base64 string."
        }
      },
      "type": "object",
      "required": [
        "keyId",
        "keyType",
        "publicKey",
        "signature"
      ]
    },
    "google-native:containeranalysis/v1alpha1:BuildType": {
      "description": "Note holding the version of the provider's builder and the signature of the provenance message in linked BuildDetails.",
      "properties": {
        "builderVersion": {
          "type": "string",
          "description": "Version of the builder which produced this Note."
        },
        "signature": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildSignature",
          "description": "Signature of the build in Occurrences pointing to the Note containing this `BuilderDetails`."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BuildTypeResponse": {
      "description": "Note holding the version of the provider's builder and the signature of the provenance message in linked BuildDetails.",
      "properties": {
        "builderVersion": {
          "type": "string",
          "description": "Version of the builder which produced this Note."
        },
        "signature": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildSignatureResponse",
          "description": "Signature of the build in Occurrences pointing to the Note containing this `BuilderDetails`."
        }
      },
      "type": "object",
      "required": [
        "builderVersion",
        "signature"
      ]
    },
    "google-native:containeranalysis/v1alpha1:BuilderConfig": {
      "properties": {
        "id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:BuilderConfigResponse": {
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:CVSS": {
      "description": "Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator",
      "properties": {
        "attackComplexity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSAttackComplexity",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "attackVector": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSAttackVector",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. Defined in CVSS v3, CVSS v2"
        },
        "authentication": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSAuthentication",
          "description": "Defined in CVSS v2"
        },
        "availabilityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSAvailabilityImpact",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSConfidentialityImpact",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSIntegrityImpact",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "privilegesRequired": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSPrivilegesRequired",
          "description": "Defined in CVSS v3"
        },
        "scope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSScope",
          "description": "Defined in CVSS v3"
        },
        "userInteraction": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSUserInteraction",
          "description": "Defined in CVSS v3"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:CVSSAttackComplexity": {
      "description": "Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "AttackComplexityUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_COMPLEXITY_UNSPECIFIED"
        },
        {
          "name": "AttackComplexityLow",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_COMPLEXITY_LOW"
        },
        {
          "name": "AttackComplexityHigh",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_COMPLEXITY_HIGH"
        },
        {
          "name": "AttackComplexityMedium",
          "description": "Defined in CVSS v2",
          "value": "ATTACK_COMPLEXITY_MEDIUM"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSAttackVector": {
      "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "AttackVectorUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_VECTOR_UNSPECIFIED"
        },
        {
          "name": "AttackVectorNetwork",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_VECTOR_NETWORK"
        },
        {
          "name": "AttackVectorAdjacent",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_VECTOR_ADJACENT"
        },
        {
          "name": "AttackVectorLocal",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_VECTOR_LOCAL"
        },
        {
          "name": "AttackVectorPhysical",
          "description": "Defined in CVSS v3",
          "value": "ATTACK_VECTOR_PHYSICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSAuthentication": {
      "description": "Defined in CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "AuthenticationUnspecified",
          "description": "Defined in CVSS v2",
          "value": "AUTHENTICATION_UNSPECIFIED"
        },
        {
          "name": "AuthenticationMultiple",
          "description": "Defined in CVSS v2",
          "value": "AUTHENTICATION_MULTIPLE"
        },
        {
          "name": "AuthenticationSingle",
          "description": "Defined in CVSS v2",
          "value": "AUTHENTICATION_SINGLE"
        },
        {
          "name": "AuthenticationNone",
          "description": "Defined in CVSS v2",
          "value": "AUTHENTICATION_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSAvailabilityImpact": {
      "description": "Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSConfidentialityImpact": {
      "description": "Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSIntegrityImpact": {
      "description": "Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSPrivilegesRequired": {
      "description": "Defined in CVSS v3",
      "type": "string",
      "enum": [
        {
          "name": "PrivilegesRequiredUnspecified",
          "description": "Defined in CVSS v3",
          "value": "PRIVILEGES_REQUIRED_UNSPECIFIED"
        },
        {
          "name": "PrivilegesRequiredNone",
          "description": "Defined in CVSS v3",
          "value": "PRIVILEGES_REQUIRED_NONE"
        },
        {
          "name": "PrivilegesRequiredLow",
          "description": "Defined in CVSS v3",
          "value": "PRIVILEGES_REQUIRED_LOW"
        },
        {
          "name": "PrivilegesRequiredHigh",
          "description": "Defined in CVSS v3",
          "value": "PRIVILEGES_REQUIRED_HIGH"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSResponse": {
      "description": "Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator",
      "properties": {
        "attackComplexity": {
          "type": "string",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "attackVector": {
          "type": "string",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. Defined in CVSS v3, CVSS v2"
        },
        "authentication": {
          "type": "string",
          "description": "Defined in CVSS v2"
        },
        "availabilityImpact": {
          "type": "string",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "type": "string",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "type": "string",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "privilegesRequired": {
          "type": "string",
          "description": "Defined in CVSS v3"
        },
        "scope": {
          "type": "string",
          "description": "Defined in CVSS v3"
        },
        "userInteraction": {
          "type": "string",
          "description": "Defined in CVSS v3"
        }
      },
      "type": "object",
      "required": [
        "attackComplexity",
        "attackVector",
        "authentication",
        "availabilityImpact",
        "baseScore",
        "confidentialityImpact",
        "exploitabilityScore",
        "impactScore",
        "integrityImpact",
        "privilegesRequired",
        "scope",
        "userInteraction"
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSScope": {
      "description": "Defined in CVSS v3",
      "type": "string",
      "enum": [
        {
          "name": "ScopeUnspecified",
          "description": "Defined in CVSS v3",
          "value": "SCOPE_UNSPECIFIED"
        },
        {
          "name": "ScopeUnchanged",
          "description": "Defined in CVSS v3",
          "value": "SCOPE_UNCHANGED"
        },
        {
          "name": "ScopeChanged",
          "description": "Defined in CVSS v3",
          "value": "SCOPE_CHANGED"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CVSSUserInteraction": {
      "description": "Defined in CVSS v3",
      "type": "string",
      "enum": [
        {
          "name": "UserInteractionUnspecified",
          "description": "Defined in CVSS v3",
          "value": "USER_INTERACTION_UNSPECIFIED"
        },
        {
          "name": "UserInteractionNone",
          "description": "Defined in CVSS v3",
          "value": "USER_INTERACTION_NONE"
        },
        {
          "name": "UserInteractionRequired",
          "description": "Defined in CVSS v3",
          "value": "USER_INTERACTION_REQUIRED"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:CisBenchmark": {
      "description": "A compliance check that is a CIS benchmark.",
      "properties": {
        "profileLevel": {
          "type": "integer",
          "description": "The profile level of this CIS benchmark check."
        },
        "severity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CisBenchmarkSeverity",
          "description": "The severity level of this CIS benchmark check."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:CisBenchmarkResponse": {
      "description": "A compliance check that is a CIS benchmark.",
      "properties": {
        "profileLevel": {
          "type": "integer",
          "description": "The profile level of this CIS benchmark check."
        },
        "severity": {
          "type": "string",
          "description": "The severity level of this CIS benchmark check."
        }
      },
      "type": "object",
      "required": [
        "profileLevel",
        "severity"
      ]
    },
    "google-native:containeranalysis/v1alpha1:CisBenchmarkSeverity": {
      "description": "The severity level of this CIS benchmark check.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unknown Impact",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Minimal",
          "description": "Minimal Impact",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Low Impact",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium Impact",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High Impact",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical Impact",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:Command": {
      "description": "Command describes a step performed as part of the build pipeline.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command-line arguments used when executing this Command."
        },
        "dir": {
          "type": "string",
          "description": "Working directory (relative to project source root) used when running this Command."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Environment variables set before running this Command."
        },
        "id": {
          "type": "string",
          "description": "Optional unique identifier for this Command, used in wait_for to reference this Command as a dependency."
        },
        "name": {
          "type": "string",
          "description": "Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`."
        },
        "waitFor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID(s) of the Command(s) that this Command depends on."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:CommandResponse": {
      "description": "Command describes a step performed as part of the build pipeline.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command-line arguments used when executing this Command."
        },
        "dir": {
          "type": "string",
          "description": "Working directory (relative to project source root) used when running this Command."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Environment variables set before running this Command."
        },
        "name": {
          "type": "string",
          "description": "Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`."
        },
        "waitFor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID(s) of the Command(s) that this Command depends on."
        }
      },
      "type": "object",
      "required": [
        "args",
        "dir",
        "env",
        "name",
        "waitFor"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Completeness": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "arguments": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe."
        },
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.environment is claimed to be complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:CompletenessResponse": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "arguments": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe."
        },
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.environment is claimed to be complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\"."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "environment",
        "materials"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ComplianceNote": {
      "description": "ComplianceNote encapsulates all information about a specific compliance check.",
      "properties": {
        "cisBenchmark": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CisBenchmark",
          "description": "Right now we only have one compliance type, but we may add additional types in the future."
        },
        "description": {
          "type": "string",
          "description": "A description about this compliance check."
        },
        "rationale": {
          "type": "string",
          "description": "A rationale for the existence of this compliance check."
        },
        "remediation": {
          "type": "string",
          "description": "A description of remediation steps if the compliance check fails."
        },
        "scanInstructions": {
          "type": "string",
          "description": "Serialized scan instructions with a predefined format."
        },
        "title": {
          "type": "string",
          "description": "The title that identifies this compliance check."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ComplianceVersion"
          },
          "description": "The OS and config versions the benchmark applies to."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ComplianceNoteResponse": {
      "description": "ComplianceNote encapsulates all information about a specific compliance check.",
      "properties": {
        "cisBenchmark": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CisBenchmarkResponse",
          "description": "Right now we only have one compliance type, but we may add additional types in the future."
        },
        "description": {
          "type": "string",
          "description": "A description about this compliance check."
        },
        "rationale": {
          "type": "string",
          "description": "A rationale for the existence of this compliance check."
        },
        "remediation": {
          "type": "string",
          "description": "A description of remediation steps if the compliance check fails."
        },
        "scanInstructions": {
          "type": "string",
          "description": "Serialized scan instructions with a predefined format."
        },
        "title": {
          "type": "string",
          "description": "The title that identifies this compliance check."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ComplianceVersionResponse"
          },
          "description": "The OS and config versions the benchmark applies to."
        }
      },
      "type": "object",
      "required": [
        "cisBenchmark",
        "description",
        "rationale",
        "remediation",
        "scanInstructions",
        "title",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ComplianceOccurrence": {
      "description": "An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason.",
      "properties": {
        "nonComplianceReason": {
          "type": "string",
          "description": "The reason for non compliance of these files."
        },
        "nonCompliantFiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:NonCompliantFile"
          },
          "description": "A list of files which are violating compliance checks."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ComplianceOccurrenceResponse": {
      "description": "An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason.",
      "properties": {
        "nonComplianceReason": {
          "type": "string",
          "description": "The reason for non compliance of these files."
        },
        "nonCompliantFiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:NonCompliantFileResponse"
          },
          "description": "A list of files which are violating compliance checks."
        }
      },
      "type": "object",
      "required": [
        "nonComplianceReason",
        "nonCompliantFiles"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ComplianceVersion": {
      "description": "Describes the CIS benchmark version that is applicable to a given OS and os version.",
      "properties": {
        "benchmarkDocument": {
          "type": "string",
          "description": "The name of the document that defines this benchmark, e.g. \"CIS Container-Optimized OS\"."
        },
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to."
        },
        "version": {
          "type": "string",
          "description": "The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ComplianceVersionResponse": {
      "description": "Describes the CIS benchmark version that is applicable to a given OS and os version.",
      "properties": {
        "benchmarkDocument": {
          "type": "string",
          "description": "The name of the document that defines this benchmark, e.g. \"CIS Container-Optimized OS\"."
        },
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to."
        },
        "version": {
          "type": "string",
          "description": "The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in."
        }
      },
      "type": "object",
      "required": [
        "benchmarkDocument",
        "cpeUri",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:DSSEAttestationNote": {
      "description": "A note describing an attestation",
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DSSEHint",
          "description": "DSSEHint hints at the purpose of the attestation authority."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DSSEAttestationNoteResponse": {
      "description": "A note describing an attestation",
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DSSEHintResponse",
          "description": "DSSEHint hints at the purpose of the attestation authority."
        }
      },
      "type": "object",
      "required": [
        "hint"
      ]
    },
    "google-native:containeranalysis/v1alpha1:DSSEAttestationOccurrence": {
      "description": "An occurrence describing an attestation on a resource",
      "properties": {
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Envelope",
          "description": "If doing something security critical, make sure to verify the signatures in this metadata."
        },
        "statement": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoStatement"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DSSEAttestationOccurrenceResponse": {
      "description": "An occurrence describing an attestation on a resource",
      "properties": {
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:EnvelopeResponse",
          "description": "If doing something security critical, make sure to verify the signatures in this metadata."
        },
        "statement": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoStatementResponse"
        }
      },
      "type": "object",
      "required": [
        "envelope",
        "statement"
      ]
    },
    "google-native:containeranalysis/v1alpha1:DSSEHint": {
      "description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this attestation authority, for example \"cloudbuild-prod\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1alpha1:DSSEHintResponse": {
      "description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this attestation authority, for example \"cloudbuild-prod\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Deployable": {
      "description": "An artifact that can be deployed in some runtime.",
      "properties": {
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DeployableResponse": {
      "description": "An artifact that can be deployed in some runtime.",
      "properties": {
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed."
        }
      },
      "type": "object",
      "required": [
        "resourceUri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Deployment": {
      "description": "The period during which some deployable was active in a runtime.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Address of the runtime element hosting this deployment."
        },
        "config": {
          "type": "string",
          "description": "Configuration used to create this deployment."
        },
        "deployTime": {
          "type": "string",
          "description": "Beginning of the lifetime of this deployment."
        },
        "platform": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DeploymentPlatform",
          "description": "Platform hosting this deployment."
        },
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed taken from the deployable field with the same name."
        },
        "undeployTime": {
          "type": "string",
          "description": "End of the lifetime of this deployment."
        },
        "userEmail": {
          "type": "string",
          "description": "Identity of the user that triggered this deployment."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DeploymentPlatform": {
      "description": "Platform hosting this deployment.",
      "type": "string",
      "enum": [
        {
          "name": "PlatformUnspecified",
          "description": "Unknown",
          "value": "PLATFORM_UNSPECIFIED"
        },
        {
          "name": "Gke",
          "description": "Google Container Engine",
          "value": "GKE"
        },
        {
          "name": "Flex",
          "description": "Google App Engine: Flexible Environment",
          "value": "FLEX"
        },
        {
          "name": "Custom",
          "description": "Custom user-defined platform",
          "value": "CUSTOM"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:DeploymentResponse": {
      "description": "The period during which some deployable was active in a runtime.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Address of the runtime element hosting this deployment."
        },
        "config": {
          "type": "string",
          "description": "Configuration used to create this deployment."
        },
        "deployTime": {
          "type": "string",
          "description": "Beginning of the lifetime of this deployment."
        },
        "platform": {
          "type": "string",
          "description": "Platform hosting this deployment."
        },
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed taken from the deployable field with the same name."
        },
        "undeployTime": {
          "type": "string",
          "description": "End of the lifetime of this deployment."
        },
        "userEmail": {
          "type": "string",
          "description": "Identity of the user that triggered this deployment."
        }
      },
      "type": "object",
      "required": [
        "address",
        "config",
        "deployTime",
        "platform",
        "resourceUri",
        "undeployTime",
        "userEmail"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Derived": {
      "description": "Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM .",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Fingerprint",
          "description": "The fingerprint of the derived image."
        },
        "layerInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Layer"
          },
          "description": "This contains layer-specific metadata, if populated it has length \"distance\" and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DerivedResponse": {
      "description": "Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM .",
      "properties": {
        "baseResourceUrl": {
          "type": "string",
          "description": "This contains the base image URL for the derived image occurrence."
        },
        "distance": {
          "type": "integer",
          "description": "The number of layers by which this image differs from the associated image basis."
        },
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FingerprintResponse",
          "description": "The fingerprint of the derived image."
        },
        "layerInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:LayerResponse"
          },
          "description": "This contains layer-specific metadata, if populated it has length \"distance\" and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer."
        }
      },
      "type": "object",
      "required": [
        "baseResourceUrl",
        "distance",
        "fingerprint",
        "layerInfo"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Detail": {
      "description": "Identifies all occurrences of this vulnerability in the package for a specific distro/location For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests."
        },
        "description": {
          "type": "string",
          "description": "A vendor-specific description of this note."
        },
        "fixedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityLocation",
          "description": "The fix for this specific package version."
        },
        "isObsolete": {
          "type": "boolean",
          "description": "Whether this Detail is obsolete. Occurrences are expected not to point to obsolete details."
        },
        "maxAffectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Version",
          "description": "The max version of the package in which the vulnerability exists."
        },
        "minAffectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Version",
          "description": "The min version of the package in which the vulnerability exists."
        },
        "package": {
          "type": "string",
          "description": "The name of the package where the vulnerability was found. This field can be used as a filter in list requests."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native(ruby gems, node.js packages etc)"
        },
        "severityName": {
          "type": "string",
          "description": "The severity (eg: distro assigned severity) for this vulnerability."
        },
        "source": {
          "type": "string",
          "description": "The source from which the information in this Detail was obtained."
        },
        "vendor": {
          "type": "string",
          "description": "The vendor of the product. e.g. \"google\""
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DetailResponse": {
      "description": "Identifies all occurrences of this vulnerability in the package for a specific distro/location For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests."
        },
        "description": {
          "type": "string",
          "description": "A vendor-specific description of this note."
        },
        "fixedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityLocationResponse",
          "description": "The fix for this specific package version."
        },
        "isObsolete": {
          "type": "boolean",
          "description": "Whether this Detail is obsolete. Occurrences are expected not to point to obsolete details."
        },
        "maxAffectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "The max version of the package in which the vulnerability exists."
        },
        "minAffectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "The min version of the package in which the vulnerability exists."
        },
        "package": {
          "type": "string",
          "description": "The name of the package where the vulnerability was found. This field can be used as a filter in list requests."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native(ruby gems, node.js packages etc)"
        },
        "severityName": {
          "type": "string",
          "description": "The severity (eg: distro assigned severity) for this vulnerability."
        },
        "source": {
          "type": "string",
          "description": "The source from which the information in this Detail was obtained."
        },
        "vendor": {
          "type": "string",
          "description": "The vendor of the product. e.g. \"google\""
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "description",
        "fixedLocation",
        "isObsolete",
        "maxAffectedVersion",
        "minAffectedVersion",
        "package",
        "packageType",
        "severityName",
        "source",
        "vendor"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Digest": {
      "description": "Digest information.",
      "properties": {
        "algo": {
          "type": "string",
          "description": "`SHA1`, `SHA512` etc."
        },
        "digestBytes": {
          "type": "string",
          "description": "Value of the digest."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DigestResponse": {
      "description": "Digest information.",
      "properties": {
        "algo": {
          "type": "string",
          "description": "`SHA1`, `SHA512` etc."
        },
        "digestBytes": {
          "type": "string",
          "description": "Value of the digest."
        }
      },
      "type": "object",
      "required": [
        "algo",
        "digestBytes"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Discovered": {
      "description": "Provides information about the scan status of a discovered resource.",
      "properties": {
        "analysisCompleted": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AnalysisCompleted",
          "description": "The list of analysis that were completed for a resource."
        },
        "analysisError": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Status"
          },
          "description": "Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors."
        },
        "analysisStatus": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DiscoveredAnalysisStatus",
          "description": "The status of discovery for the resource."
        },
        "analysisStatusError": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Status",
          "description": "When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage output only and populated by the API."
        },
        "archiveTime": {
          "type": "string",
          "description": "The time occurrences related to this discovery occurrence were archived."
        },
        "continuousAnalysis": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DiscoveredContinuousAnalysis",
          "description": "Whether the resource is continuously analyzed."
        },
        "cpe": {
          "type": "string",
          "description": "The CPE of the resource being scanned."
        },
        "lastScanTime": {
          "type": "string",
          "description": "The last time this resource was scanned."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DiscoveredAnalysisStatus": {
      "description": "The status of discovery for the resource.",
      "type": "string",
      "enum": [
        {
          "name": "AnalysisStatusUnspecified",
          "description": "Unknown",
          "value": "ANALYSIS_STATUS_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "Resource is known but no action has been taken yet.",
          "value": "PENDING"
        },
        {
          "name": "Scanning",
          "description": "Resource is being analyzed.",
          "value": "SCANNING"
        },
        {
          "name": "Complete",
          "description": "Analysis has completed",
          "value": "COMPLETE"
        },
        {
          "name": "FinishedSuccess",
          "description": "Analysis has finished successfully.",
          "value": "FINISHED_SUCCESS"
        },
        {
          "name": "FinishedFailed",
          "description": "Analysis has finished unsuccessfully, the analysis itself is in a bad state.",
          "value": "FINISHED_FAILED"
        },
        {
          "name": "FinishedUnsupported",
          "description": "The resource is known not to be supported.",
          "value": "FINISHED_UNSUPPORTED"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:DiscoveredContinuousAnalysis": {
      "description": "Whether the resource is continuously analyzed.",
      "type": "string",
      "enum": [
        {
          "name": "ContinuousAnalysisUnspecified",
          "description": "Unknown",
          "value": "CONTINUOUS_ANALYSIS_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "The resource is continuously analyzed.",
          "value": "ACTIVE"
        },
        {
          "name": "Inactive",
          "description": "The resource is ignored for continuous analysis.",
          "value": "INACTIVE"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:DiscoveredResponse": {
      "description": "Provides information about the scan status of a discovered resource.",
      "properties": {
        "analysisCompleted": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AnalysisCompletedResponse",
          "description": "The list of analysis that were completed for a resource."
        },
        "analysisError": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:StatusResponse"
          },
          "description": "Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors."
        },
        "analysisStatus": {
          "type": "string",
          "description": "The status of discovery for the resource."
        },
        "analysisStatusError": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:StatusResponse",
          "description": "When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage output only and populated by the API."
        },
        "archiveTime": {
          "type": "string",
          "description": "The time occurrences related to this discovery occurrence were archived."
        },
        "continuousAnalysis": {
          "type": "string",
          "description": "Whether the resource is continuously analyzed."
        },
        "cpe": {
          "type": "string",
          "description": "The CPE of the resource being scanned."
        },
        "lastScanTime": {
          "type": "string",
          "description": "The last time this resource was scanned."
        },
        "operation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:OperationResponse",
          "description": "An operation that indicates the status of the current scan. This field is deprecated, do not use.",
          "deprecationMessage": "Output only. An operation that indicates the status of the current scan. This field is deprecated, do not use."
        },
        "sbomStatus": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SBOMStatusResponse",
          "description": "The status of an SBOM generation."
        }
      },
      "type": "object",
      "required": [
        "analysisCompleted",
        "analysisError",
        "analysisStatus",
        "analysisStatusError",
        "archiveTime",
        "continuousAnalysis",
        "cpe",
        "lastScanTime",
        "operation",
        "sbomStatus"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Discovery": {
      "description": "A note that indicates a type of analysis a provider would perform. This note exists in a provider's project. A `Discovery` occurrence is created in a consumer's project at the start of analysis. The occurrence's operation will indicate the status of the analysis. Absence of an occurrence linked to this note for a resource indicates that analysis hasn't started.",
      "properties": {
        "analysisKind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DiscoveryAnalysisKind",
          "description": "The kind of analysis that is handled by this discovery."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DiscoveryAnalysisKind": {
      "description": "The kind of analysis that is handled by this discovery.",
      "type": "string",
      "enum": [
        {
          "name": "KindUnspecified",
          "description": "Unknown",
          "value": "KIND_UNSPECIFIED"
        },
        {
          "name": "PackageVulnerability",
          "description": "The note and occurrence represent a package vulnerability.",
          "value": "PACKAGE_VULNERABILITY"
        },
        {
          "name": "BuildDetails",
          "description": "The note and occurrence assert build provenance.",
          "value": "BUILD_DETAILS"
        },
        {
          "name": "ImageBasis",
          "description": "This represents an image basis relationship.",
          "value": "IMAGE_BASIS"
        },
        {
          "name": "PackageManager",
          "description": "This represents a package installed via a package manager.",
          "value": "PACKAGE_MANAGER"
        },
        {
          "name": "Deployable",
          "description": "The note and occurrence track deployment events.",
          "value": "DEPLOYABLE"
        },
        {
          "name": "Discovery",
          "description": "The note and occurrence track the initial discovery status of a resource.",
          "value": "DISCOVERY"
        },
        {
          "name": "AttestationAuthority",
          "description": "This represents a logical \"role\" that can attest to artifacts.",
          "value": "ATTESTATION_AUTHORITY"
        },
        {
          "name": "Upgrade",
          "description": "This represents an available software upgrade.",
          "value": "UPGRADE"
        },
        {
          "name": "Compliance",
          "description": "This represents a compliance check that can be applied to a resource.",
          "value": "COMPLIANCE"
        },
        {
          "name": "Sbom",
          "description": "This represents a software bill of materials.",
          "value": "SBOM"
        },
        {
          "name": "SpdxPackage",
          "description": "This represents an SPDX Package.",
          "value": "SPDX_PACKAGE"
        },
        {
          "name": "SpdxFile",
          "description": "This represents an SPDX File.",
          "value": "SPDX_FILE"
        },
        {
          "name": "SpdxRelationship",
          "description": "This represents an SPDX Relationship.",
          "value": "SPDX_RELATIONSHIP"
        },
        {
          "name": "DsseAttestation",
          "description": "This represents a DSSE attestation Note",
          "value": "DSSE_ATTESTATION"
        },
        {
          "name": "VulnerabilityAssessment",
          "description": "This represents a Vulnerability Assessment.",
          "value": "VULNERABILITY_ASSESSMENT"
        },
        {
          "name": "SbomReference",
          "description": "This represents a reference to an SBOM.",
          "value": "SBOM_REFERENCE"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:DiscoveryResponse": {
      "description": "A note that indicates a type of analysis a provider would perform. This note exists in a provider's project. A `Discovery` occurrence is created in a consumer's project at the start of analysis. The occurrence's operation will indicate the status of the analysis. Absence of an occurrence linked to this note for a resource indicates that analysis hasn't started.",
      "properties": {
        "analysisKind": {
          "type": "string",
          "description": "The kind of analysis that is handled by this discovery."
        }
      },
      "type": "object",
      "required": [
        "analysisKind"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Distribution": {
      "description": "This represents a particular channel of distribution for a given package. e.g. Debian's jessie-backports dpkg mirror",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DistributionArchitecture",
          "description": "The CPU architecture for which packages in this distribution channel were built"
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "description": {
          "type": "string",
          "description": "The distribution channel-specific description of this package."
        },
        "latestVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Version",
          "description": "The latest available version of this package in this distribution channel."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform string denoting the maintainer of this package."
        },
        "url": {
          "type": "string",
          "description": "The distribution channel-specific homepage for this package."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DistributionArchitecture": {
      "description": "The CPU architecture for which packages in this distribution channel were built",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Unknown architecture",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "X86",
          "description": "X86 architecture",
          "value": "X86"
        },
        {
          "name": "X64",
          "description": "X64 architecture",
          "value": "X64"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:DistributionResponse": {
      "description": "This represents a particular channel of distribution for a given package. e.g. Debian's jessie-backports dpkg mirror",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built"
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "description": {
          "type": "string",
          "description": "The distribution channel-specific description of this package."
        },
        "latestVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "The latest available version of this package in this distribution channel."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform string denoting the maintainer of this package."
        },
        "url": {
          "type": "string",
          "description": "The distribution channel-specific homepage for this package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "description",
        "latestVersion",
        "maintainer",
        "url"
      ]
    },
    "google-native:containeranalysis/v1alpha1:DocumentNote": {
      "description": "DocumentNote represents an SPDX Document Creation Infromation section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
      "properties": {
        "dataLicence": {
          "type": "string",
          "description": "Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such fields (\"SPDX-Metadata\")"
        },
        "spdxVersion": {
          "type": "string",
          "description": "Provide a reference number that can be used to understand how to parse and interpret the rest of the file"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DocumentNoteResponse": {
      "description": "DocumentNote represents an SPDX Document Creation Infromation section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
      "properties": {
        "dataLicence": {
          "type": "string",
          "description": "Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such fields (\"SPDX-Metadata\")"
        },
        "spdxVersion": {
          "type": "string",
          "description": "Provide a reference number that can be used to understand how to parse and interpret the rest of the file"
        }
      },
      "type": "object",
      "required": [
        "dataLicence",
        "spdxVersion"
      ]
    },
    "google-native:containeranalysis/v1alpha1:DocumentOccurrence": {
      "description": "DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard"
        },
        "creatorComment": {
          "type": "string",
          "description": "A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields"
        },
        "creators": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person's name"
        },
        "documentComment": {
          "type": "string",
          "description": "A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document"
        },
        "externalDocumentRefs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identify any external SPDX documents referenced within this SPDX document"
        },
        "id": {
          "type": "string",
          "description": "Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally"
        },
        "licenseListVersion": {
          "type": "string",
          "description": "A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created"
        },
        "namespace": {
          "type": "string",
          "description": "Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter"
        },
        "title": {
          "type": "string",
          "description": "Identify name of this document as designated by creator"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:DocumentOccurrenceResponse": {
      "description": "DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard"
        },
        "creatorComment": {
          "type": "string",
          "description": "A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields"
        },
        "creators": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person's name"
        },
        "documentComment": {
          "type": "string",
          "description": "A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document"
        },
        "externalDocumentRefs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identify any external SPDX documents referenced within this SPDX document"
        },
        "licenseListVersion": {
          "type": "string",
          "description": "A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created"
        },
        "namespace": {
          "type": "string",
          "description": "Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter"
        },
        "title": {
          "type": "string",
          "description": "Identify name of this document as designated by creator"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "creatorComment",
        "creators",
        "documentComment",
        "externalDocumentRefs",
        "licenseListVersion",
        "namespace",
        "title"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Envelope": {
      "description": "MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type.",
      "properties": {
        "payload": {
          "type": "string",
          "description": "The bytes being signed"
        },
        "payloadType": {
          "type": "string",
          "description": "The type of payload being signed"
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:EnvelopeSignature"
          },
          "description": "The signatures over the payload"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:EnvelopeResponse": {
      "description": "MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type.",
      "properties": {
        "payload": {
          "type": "string",
          "description": "The bytes being signed"
        },
        "payloadType": {
          "type": "string",
          "description": "The type of payload being signed"
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:EnvelopeSignatureResponse"
          },
          "description": "The signatures over the payload"
        }
      },
      "type": "object",
      "required": [
        "payload",
        "payloadType",
        "signatures"
      ]
    },
    "google-native:containeranalysis/v1alpha1:EnvelopeSignature": {
      "description": "A DSSE signature",
      "properties": {
        "keyid": {
          "type": "string",
          "description": "A reference id to the key being used for signing"
        },
        "sig": {
          "type": "string",
          "description": "The signature itself"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:EnvelopeSignatureResponse": {
      "description": "A DSSE signature",
      "properties": {
        "keyid": {
          "type": "string",
          "description": "A reference id to the key being used for signing"
        },
        "sig": {
          "type": "string",
          "description": "The signature itself"
        }
      },
      "type": "object",
      "required": [
        "keyid",
        "sig"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ExternalRef": {
      "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package",
      "properties": {
        "category": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ExternalRefCategory",
          "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package"
        },
        "comment": {
          "type": "string",
          "description": "Human-readable information about the purpose and target of the reference"
        },
        "locator": {
          "type": "string",
          "description": "The unique string with no spaces necessary to access the package-specific information, metadata, or content within the target location"
        },
        "type": {
          "type": "string",
          "description": "Type of category (e.g. 'npm' for the PACKAGE_MANAGER category)"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ExternalRefCategory": {
      "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package",
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "description": "Unspecified",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "Security",
          "description": "Security (e.g. cpe22Type, cpe23Type)",
          "value": "SECURITY"
        },
        {
          "name": "PackageManager",
          "description": "Package Manager (e.g. maven-central, npm, nuget, bower, purl)",
          "value": "PACKAGE_MANAGER"
        },
        {
          "name": "PersistentId",
          "description": "Persistent-Id (e.g. swh)",
          "value": "PERSISTENT_ID"
        },
        {
          "name": "Other",
          "description": "Other",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:ExternalRefResponse": {
      "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package",
      "properties": {
        "category": {
          "type": "string",
          "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package"
        },
        "comment": {
          "type": "string",
          "description": "Human-readable information about the purpose and target of the reference"
        },
        "locator": {
          "type": "string",
          "description": "The unique string with no spaces necessary to access the package-specific information, metadata, or content within the target location"
        },
        "type": {
          "type": "string",
          "description": "Type of category (e.g. 'npm' for the PACKAGE_MANAGER category)"
        }
      },
      "type": "object",
      "required": [
        "category",
        "comment",
        "locator",
        "type"
      ]
    },
    "google-native:containeranalysis/v1alpha1:FileLocation": {
      "description": "Indicates the location at which a package was found.",
      "properties": {
        "filePath": {
          "type": "string",
          "description": "For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:FileLocationResponse": {
      "description": "Indicates the location at which a package was found.",
      "properties": {
        "filePath": {
          "type": "string",
          "description": "For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file."
        }
      },
      "type": "object",
      "required": [
        "filePath"
      ]
    },
    "google-native:containeranalysis/v1alpha1:FileNote": {
      "description": "FileNote represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
      "properties": {
        "checksum": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provide a unique identifier to match analysis information on each specific file in a package"
        },
        "fileType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileNoteFileType",
          "description": "This field provides information about the type of file identified"
        },
        "title": {
          "type": "string",
          "description": "Identify the full path and filename that corresponds to the file information in this section"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:FileNoteFileType": {
      "description": "This field provides information about the type of file identified",
      "type": "string",
      "enum": [
        {
          "name": "FileTypeUnspecified",
          "description": "Unspecified",
          "value": "FILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Source",
          "description": "The file is human readable source code (.c, .html, etc.)",
          "value": "SOURCE"
        },
        {
          "name": "Binary",
          "description": "The file is a compiled object, target image or binary executable (.o, .a, etc.)",
          "value": "BINARY"
        },
        {
          "name": "Archive",
          "description": "The file represents an archive (.tar, .jar, etc.)",
          "value": "ARCHIVE"
        },
        {
          "name": "Application",
          "description": "The file is associated with a specific application type (MIME type of application/*)",
          "value": "APPLICATION"
        },
        {
          "name": "Audio",
          "description": "The file is associated with an audio file (MIME type of audio/* , e.g. .mp3)",
          "value": "AUDIO"
        },
        {
          "name": "Image",
          "description": "The file is associated with an picture image file (MIME type of image/*, e.g., .jpg, .gif)",
          "value": "IMAGE"
        },
        {
          "name": "Text",
          "description": "The file is human readable text file (MIME type of text/*)",
          "value": "TEXT"
        },
        {
          "name": "Video",
          "description": "The file is associated with a video file type (MIME type of video/*)",
          "value": "VIDEO"
        },
        {
          "name": "Documentation",
          "description": "The file serves as documentation",
          "value": "DOCUMENTATION"
        },
        {
          "name": "Spdx",
          "description": "The file is an SPDX document",
          "value": "SPDX"
        },
        {
          "name": "Other",
          "description": "The file doesn't fit into the above categories (generated artifacts, data files, etc.)",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:FileNoteResponse": {
      "description": "FileNote represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
      "properties": {
        "checksum": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provide a unique identifier to match analysis information on each specific file in a package"
        },
        "fileType": {
          "type": "string",
          "description": "This field provides information about the type of file identified"
        },
        "title": {
          "type": "string",
          "description": "Identify the full path and filename that corresponds to the file information in this section"
        }
      },
      "type": "object",
      "required": [
        "checksum",
        "fileType",
        "title"
      ]
    },
    "google-native:containeranalysis/v1alpha1:FileOccurrence": {
      "description": "FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
      "properties": {
        "attributions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts"
        },
        "comment": {
          "type": "string",
          "description": "This field provides a place for the SPDX file creator to record any general comments about the file"
        },
        "contributors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field provides a place for the SPDX file creator to record file contributors"
        },
        "copyright": {
          "type": "string",
          "description": "Identify the copyright holder of the file, as well as any dates present"
        },
        "filesLicenseInfo": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field contains the license information actually found in the file, if any"
        },
        "id": {
          "type": "string",
          "description": "Uniquely identify any element in an SPDX document which may be referenced by other elements"
        },
        "licenseConcluded": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:License",
          "description": "This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined"
        },
        "notice": {
          "type": "string",
          "description": "This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:FileOccurrenceResponse": {
      "description": "FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
      "properties": {
        "attributions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts"
        },
        "comment": {
          "type": "string",
          "description": "This field provides a place for the SPDX file creator to record any general comments about the file"
        },
        "contributors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field provides a place for the SPDX file creator to record file contributors"
        },
        "copyright": {
          "type": "string",
          "description": "Identify the copyright holder of the file, as well as any dates present"
        },
        "filesLicenseInfo": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field contains the license information actually found in the file, if any"
        },
        "licenseConcluded": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:LicenseResponse",
          "description": "This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined"
        },
        "notice": {
          "type": "string",
          "description": "This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file"
        }
      },
      "type": "object",
      "required": [
        "attributions",
        "comment",
        "contributors",
        "copyright",
        "filesLicenseInfo",
        "licenseConcluded",
        "notice"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Fingerprint": {
      "description": "A set of properties that uniquely identify a given Docker image.",
      "properties": {
        "v1Name": {
          "type": "string",
          "description": "The layer-id of the final layer in the Docker image's v1 representation. This field can be used as a filter in list requests."
        },
        "v2Blob": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ordered list of v2 blobs that represent a given image."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:FingerprintResponse": {
      "description": "A set of properties that uniquely identify a given Docker image.",
      "properties": {
        "v1Name": {
          "type": "string",
          "description": "The layer-id of the final layer in the Docker image's v1 representation. This field can be used as a filter in list requests."
        },
        "v2Blob": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ordered list of v2 blobs that represent a given image."
        },
        "v2Name": {
          "type": "string",
          "description": "The name of the image's v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + \" \" + v2_name[N+1]) Only the name of the final blob is kept. This field can be used as a filter in list requests."
        }
      },
      "type": "object",
      "required": [
        "v1Name",
        "v2Blob",
        "v2Name"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1AliasContext": {
      "description": "An alias to a repo revision.",
      "properties": {
        "kind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1AliasContextKind",
          "description": "The alias kind."
        },
        "name": {
          "type": "string",
          "description": "The alias name."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1AliasContextKind": {
      "description": "The alias kind.",
      "type": "string",
      "enum": [
        {
          "name": "KindUnspecified",
          "description": "Unknown.",
          "value": "KIND_UNSPECIFIED"
        },
        {
          "name": "Fixed",
          "description": "Git tag.",
          "value": "FIXED"
        },
        {
          "name": "Movable",
          "description": "Git branch.",
          "value": "MOVABLE"
        },
        {
          "name": "Other",
          "description": "Used to specify non-standard aliases. For example, if a Git repo has a ref named \"refs/foo/bar\".",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1AliasContextResponse": {
      "description": "An alias to a repo revision.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The alias kind."
        },
        "name": {
          "type": "string",
          "description": "The alias name."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "name"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext": {
      "description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1AliasContext",
          "description": "An alias, which may be a branch or tag."
        },
        "repoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1RepoId",
          "description": "The ID of the repo."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision ID."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContextResponse": {
      "description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1AliasContextResponse",
          "description": "An alias, which may be a branch or tag."
        },
        "repoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1RepoIdResponse",
          "description": "The ID of the repo."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision ID."
        }
      },
      "type": "object",
      "required": [
        "aliasContext",
        "repoId",
        "revisionId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext": {
      "description": "A SourceContext referring to a Gerrit project.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1AliasContext",
          "description": "An alias, which may be a branch or tag."
        },
        "gerritProject": {
          "type": "string",
          "description": "The full project name within the host. Projects may be nested, so \"project/subproject\" is a valid project name. The \"repo name\" is the hostURI/project."
        },
        "hostUri": {
          "type": "string",
          "description": "The URI of a running Gerrit instance."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision (commit) ID."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContextResponse": {
      "description": "A SourceContext referring to a Gerrit project.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1AliasContextResponse",
          "description": "An alias, which may be a branch or tag."
        },
        "gerritProject": {
          "type": "string",
          "description": "The full project name within the host. Projects may be nested, so \"project/subproject\" is a valid project name. The \"repo name\" is the hostURI/project."
        },
        "hostUri": {
          "type": "string",
          "description": "The URI of a running Gerrit instance."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision (commit) ID."
        }
      },
      "type": "object",
      "required": [
        "aliasContext",
        "gerritProject",
        "hostUri",
        "revisionId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext": {
      "description": "A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).",
      "properties": {
        "revisionId": {
          "type": "string",
          "description": "Git commit hash."
        },
        "url": {
          "type": "string",
          "description": "Git repository URL."
        }
      },
      "type": "object",
      "required": [
        "revisionId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1GitSourceContextResponse": {
      "description": "A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).",
      "properties": {
        "revisionId": {
          "type": "string",
          "description": "Git commit hash."
        },
        "url": {
          "type": "string",
          "description": "Git repository URL."
        }
      },
      "type": "object",
      "required": [
        "revisionId",
        "url"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId": {
      "description": "Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project.",
      "properties": {
        "project": {
          "type": "string",
          "description": "The ID of the project."
        },
        "repoName": {
          "type": "string",
          "description": "The name of the repo. Leave empty for the default repo."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoIdResponse": {
      "description": "Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project.",
      "properties": {
        "project": {
          "type": "string",
          "description": "The ID of the project."
        },
        "repoName": {
          "type": "string",
          "description": "The name of the repo. Leave empty for the default repo."
        }
      },
      "type": "object",
      "required": [
        "project",
        "repoName"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1RepoId": {
      "description": "A unique identifier for a Cloud Repo.",
      "properties": {
        "projectRepoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId",
          "description": "A combination of a project ID and a repo name."
        },
        "uid": {
          "type": "string",
          "description": "A server-assigned, globally unique identifier."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1RepoIdResponse": {
      "description": "A unique identifier for a Cloud Repo.",
      "properties": {
        "projectRepoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoIdResponse",
          "description": "A combination of a project ID and a repo name."
        },
        "uid": {
          "type": "string",
          "description": "A server-assigned, globally unique identifier."
        }
      },
      "type": "object",
      "required": [
        "projectRepoId",
        "uid"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaBuilder": {
      "description": "Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.",
      "properties": {
        "id": {
          "type": "string",
          "description": "URI indicating the builder’s identity."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaBuilderResponse": {
      "description": "Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.",
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaCompleteness": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that invocation.environment is complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials is complete."
        },
        "parameters": {
          "type": "boolean",
          "description": "If true, the builder claims that invocation.parameters is complete."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaCompletenessResponse": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that invocation.environment is complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials is complete."
        },
        "parameters": {
          "type": "boolean",
          "description": "If true, the builder claims that invocation.parameters is complete."
        }
      },
      "type": "object",
      "required": [
        "environment",
        "materials",
        "parameters"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaConfigSource": {
      "description": "Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build."
        },
        "uri": {
          "type": "string",
          "description": "URI indicating the identity of the source of the config."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaConfigSourceResponse": {
      "description": "Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build."
        },
        "uri": {
          "type": "string",
          "description": "URI indicating the identity of the source of the config."
        }
      },
      "type": "object",
      "required": [
        "digest",
        "entryPoint",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaInvocation": {
      "description": "Identifies the event that kicked off the build.",
      "properties": {
        "configSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaConfigSource",
          "description": "Describes where the config file that kicked off the build came from."
        },
        "environment": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the build."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of all external inputs that influenced the build on top of invocation.configSource."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaInvocationResponse": {
      "description": "Identifies the event that kicked off the build.",
      "properties": {
        "configSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaConfigSourceResponse",
          "description": "Describes where the config file that kicked off the build came from."
        },
        "environment": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the build."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of all external inputs that influenced the build on top of invocation.configSource."
        }
      },
      "type": "object",
      "required": [
        "configSource",
        "environment",
        "parameters"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaMaterial": {
      "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of cryptographic digests for the contents of this artifact."
        },
        "uri": {
          "type": "string",
          "description": "The method by which this artifact was referenced during the build."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaMaterialResponse": {
      "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of cryptographic digests for the contents of this artifact."
        },
        "uri": {
          "type": "string",
          "description": "The method by which this artifact was referenced during the build."
        }
      },
      "type": "object",
      "required": [
        "digest",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaMetadata": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaCompleteness",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running invocation on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaMetadataResponse": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaCompletenessResponse",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running invocation on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object",
      "required": [
        "buildFinishedOn",
        "buildInvocationId",
        "buildStartedOn",
        "completeness",
        "reproducible"
      ]
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SourceContext": {
      "description": "A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.",
      "properties": {
        "cloudRepo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext",
          "description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
        },
        "gerrit": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext",
          "description": "A SourceContext referring to a Gerrit project."
        },
        "git": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext",
          "description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user defined metadata."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SourceContextResponse": {
      "description": "A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.",
      "properties": {
        "cloudRepo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContextResponse",
          "description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
        },
        "gerrit": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContextResponse",
          "description": "A SourceContext referring to a Gerrit project."
        },
        "git": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1GitSourceContextResponse",
          "description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user defined metadata."
        }
      },
      "type": "object",
      "required": [
        "cloudRepo",
        "gerrit",
        "git",
        "labels"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Hash": {
      "description": "Container message for hash values.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:HashType",
          "description": "The type of hash that was performed."
        },
        "value": {
          "type": "string",
          "description": "The hash value."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:HashResponse": {
      "description": "Container message for hash values.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of hash that was performed."
        },
        "value": {
          "type": "string",
          "description": "The hash value."
        }
      },
      "type": "object",
      "required": [
        "type",
        "value"
      ]
    },
    "google-native:containeranalysis/v1alpha1:HashType": {
      "description": "The type of hash that was performed.",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "No hash requested.",
          "value": "NONE"
        },
        {
          "name": "Sha256",
          "description": "A sha256 hash.",
          "value": "SHA256"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:IdentifierHelper": {
      "description": "Helps in identifying the underlying product. This should be treated like a one-of field. Only one field should be set in this proto. This is a workaround because spanner indexes on one-of fields restrict addition and deletion of fields.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:IdentifierHelperField",
          "description": "The field that is set in the API proto."
        },
        "genericUri": {
          "type": "string",
          "description": "Contains a URI which is vendor-specific. Example: The artifact repository URL of an image."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:IdentifierHelperField": {
      "description": "The field that is set in the API proto.",
      "type": "string",
      "enum": [
        {
          "name": "IdentifierHelperFieldUnspecified",
          "description": "The helper isn't set.",
          "value": "IDENTIFIER_HELPER_FIELD_UNSPECIFIED"
        },
        {
          "name": "GenericUri",
          "description": "The generic_uri one-of field is set.",
          "value": "GENERIC_URI"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:IdentifierHelperResponse": {
      "description": "Helps in identifying the underlying product. This should be treated like a one-of field. Only one field should be set in this proto. This is a workaround because spanner indexes on one-of fields restrict addition and deletion of fields.",
      "properties": {
        "field": {
          "type": "string",
          "description": "The field that is set in the API proto."
        },
        "genericUri": {
          "type": "string",
          "description": "Contains a URI which is vendor-specific. Example: The artifact repository URL of an image."
        }
      },
      "type": "object",
      "required": [
        "field",
        "genericUri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:InTotoProvenance": {
      "properties": {
        "builderConfig": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuilderConfig",
          "description": "required"
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Metadata"
        },
        "recipe": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Recipe",
          "description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:InTotoProvenanceResponse": {
      "properties": {
        "builderConfig": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuilderConfigResponse",
          "description": "required"
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:MetadataResponse"
        },
        "recipe": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RecipeResponse",
          "description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required"
        }
      },
      "type": "object",
      "required": [
        "builderConfig",
        "materials",
        "metadata",
        "recipe"
      ]
    },
    "google-native:containeranalysis/v1alpha1:InTotoSlsaProvenanceV1": {
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaProvenanceV1"
        },
        "predicateType": {
          "type": "string"
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Subject"
          }
        },
        "type": {
          "type": "string",
          "description": "InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:InTotoSlsaProvenanceV1Response": {
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaProvenanceV1Response"
        },
        "predicateType": {
          "type": "string"
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SubjectResponse"
          }
        },
        "type": {
          "type": "string",
          "description": "InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement"
        }
      },
      "type": "object",
      "required": [
        "predicate",
        "predicateType",
        "subject",
        "type"
      ]
    },
    "google-native:containeranalysis/v1alpha1:InTotoStatement": {
      "description": "Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always \"application/vnd.in-toto+json\".",
      "properties": {
        "predicateType": {
          "type": "string",
          "description": "\"https://slsa.dev/provenance/v0.1\" for SlsaProvenance."
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoProvenance",
          "description": "Generic Grafeas provenance."
        },
        "slsaProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaProvenance",
          "description": "SLSA 0.1 provenance."
        },
        "slsaProvenanceZeroTwo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaProvenanceZeroTwo",
          "description": "SLSA 0.2 provenance."
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Subject"
          },
          "description": "subject is the subjects of the intoto statement"
        },
        "type": {
          "type": "string",
          "description": "Always \"https://in-toto.io/Statement/v0.1\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:InTotoStatementResponse": {
      "description": "Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always \"application/vnd.in-toto+json\".",
      "properties": {
        "predicateType": {
          "type": "string",
          "description": "\"https://slsa.dev/provenance/v0.1\" for SlsaProvenance."
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InTotoProvenanceResponse",
          "description": "Generic Grafeas provenance."
        },
        "slsaProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaProvenanceResponse",
          "description": "SLSA 0.1 provenance."
        },
        "slsaProvenanceZeroTwo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaProvenanceZeroTwoResponse",
          "description": "SLSA 0.2 provenance."
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SubjectResponse"
          },
          "description": "subject is the subjects of the intoto statement"
        },
        "type": {
          "type": "string",
          "description": "Always \"https://in-toto.io/Statement/v0.1\"."
        }
      },
      "type": "object",
      "required": [
        "predicateType",
        "provenance",
        "slsaProvenance",
        "slsaProvenanceZeroTwo",
        "subject",
        "type"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Installation": {
      "description": "This represents how a particular software package may be installed on a system.",
      "properties": {
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:License",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "location": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Location"
          },
          "description": "All of the places within the filesystem versions of this package have been found."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:InstallationResponse": {
      "description": "This represents how a particular software package may be installed on a system.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:LicenseResponse",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "location": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:LocationResponse"
          },
          "description": "All of the places within the filesystem versions of this package have been found."
        },
        "name": {
          "type": "string",
          "description": "The name of the installed package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "The version of the package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "license",
        "location",
        "name",
        "packageType",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Justification": {
      "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Additional details on why this justification was chosen."
        },
        "justificationType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:JustificationJustificationType",
          "description": "The justification type for this vulnerability."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:JustificationJustificationType": {
      "description": "The justification type for this vulnerability.",
      "type": "string",
      "enum": [
        {
          "name": "JustificationTypeUnspecified",
          "description": "JUSTIFICATION_TYPE_UNSPECIFIED.",
          "value": "JUSTIFICATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComponentNotPresent",
          "description": "The vulnerable component is not present in the product.",
          "value": "COMPONENT_NOT_PRESENT"
        },
        {
          "name": "VulnerableCodeNotPresent",
          "description": "The vulnerable code is not present. Typically this case occurs when source code is configured or built in a way that excludes the vulnerable code.",
          "value": "VULNERABLE_CODE_NOT_PRESENT"
        },
        {
          "name": "VulnerableCodeNotInExecutePath",
          "description": "The vulnerable code can not be executed. Typically this case occurs when the product includes the vulnerable code but does not call or use the vulnerable code.",
          "value": "VULNERABLE_CODE_NOT_IN_EXECUTE_PATH"
        },
        {
          "name": "VulnerableCodeCannotBeControlledByAdversary",
          "description": "The vulnerable code cannot be controlled by an attacker to exploit the vulnerability.",
          "value": "VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY"
        },
        {
          "name": "InlineMitigationsAlreadyExist",
          "description": "The product includes built-in protections or features that prevent exploitation of the vulnerability. These built-in protections cannot be subverted by the attacker and cannot be configured or disabled by the user. These mitigations completely prevent exploitation based on known attack vectors.",
          "value": "INLINE_MITIGATIONS_ALREADY_EXIST"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:JustificationResponse": {
      "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Additional details on why this justification was chosen."
        },
        "justificationType": {
          "type": "string",
          "description": "The justification type for this vulnerability."
        }
      },
      "type": "object",
      "required": [
        "details",
        "justificationType"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Layer": {
      "description": "Layer holds metadata specific to a layer of a Docker image.",
      "properties": {
        "arguments": {
          "type": "string",
          "description": "The recovered arguments to the Dockerfile directive."
        },
        "directive": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:LayerDirective",
          "description": "The recovered Dockerfile directive used to construct this layer."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:LayerDirective": {
      "description": "The recovered Dockerfile directive used to construct this layer.",
      "type": "string",
      "enum": [
        {
          "name": "DirectiveUnspecified",
          "description": "Default value for unsupported/missing directive",
          "value": "DIRECTIVE_UNSPECIFIED"
        },
        {
          "name": "Maintainer",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "MAINTAINER"
        },
        {
          "name": "Run",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "RUN"
        },
        {
          "name": "Cmd",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "CMD"
        },
        {
          "name": "Label",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "LABEL"
        },
        {
          "name": "Expose",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "EXPOSE"
        },
        {
          "name": "Env",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ENV"
        },
        {
          "name": "Add",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ADD"
        },
        {
          "name": "Copy",
          "description": "https://docs.docker.com/reference/builder/#copy",
          "value": "COPY"
        },
        {
          "name": "Entrypoint",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ENTRYPOINT"
        },
        {
          "name": "Volume",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "VOLUME"
        },
        {
          "name": "User",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "USER"
        },
        {
          "name": "Workdir",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "WORKDIR"
        },
        {
          "name": "Arg",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ARG"
        },
        {
          "name": "Onbuild",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ONBUILD"
        },
        {
          "name": "Stopsignal",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "STOPSIGNAL"
        },
        {
          "name": "Healthcheck",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "HEALTHCHECK"
        },
        {
          "name": "Shell",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "SHELL"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:LayerResponse": {
      "description": "Layer holds metadata specific to a layer of a Docker image.",
      "properties": {
        "arguments": {
          "type": "string",
          "description": "The recovered arguments to the Dockerfile directive."
        },
        "directive": {
          "type": "string",
          "description": "The recovered Dockerfile directive used to construct this layer."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "directive"
      ]
    },
    "google-native:containeranalysis/v1alpha1:License": {
      "description": "License information.",
      "properties": {
        "comments": {
          "type": "string",
          "description": "Comments"
        },
        "expression": {
          "type": "string",
          "description": "Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: \"LGPL-2.1-only OR MIT\", \"LGPL-2.1-only AND MIT\", \"GPL-2.0-or-later WITH Bison-exception-2.2\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:LicenseResponse": {
      "description": "License information.",
      "properties": {
        "comments": {
          "type": "string",
          "description": "Comments"
        },
        "expression": {
          "type": "string",
          "description": "Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: \"LGPL-2.1-only OR MIT\", \"LGPL-2.1-only AND MIT\", \"GPL-2.0-or-later WITH Bison-exception-2.2\"."
        }
      },
      "type": "object",
      "required": [
        "comments",
        "expression"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Location": {
      "description": "An occurrence of a particular package installation found within a system's filesystem. e.g. glibc was found in /var/lib/dpkg/status",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.",
          "deprecationMessage": "Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "path": {
          "type": "string",
          "description": "The path from which we gathered that this package/version is installed."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Version",
          "description": "Deprecated. The version installed at this location.",
          "deprecationMessage": "Deprecated. The version installed at this location."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:LocationResponse": {
      "description": "An occurrence of a particular package installation found within a system's filesystem. e.g. glibc was found in /var/lib/dpkg/status",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.",
          "deprecationMessage": "Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "path": {
          "type": "string",
          "description": "The path from which we gathered that this package/version is installed."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "Deprecated. The version installed at this location.",
          "deprecationMessage": "Deprecated. The version installed at this location."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "path",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Material": {
      "description": "Material is a material used in the generation of the provenance",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "digest is a map from a hash algorithm (e.g. sha256) to the value in the material"
        },
        "uri": {
          "type": "string",
          "description": "uri is the uri of the material"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:MaterialResponse": {
      "description": "Material is a material used in the generation of the provenance",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "digest is a map from a hash algorithm (e.g. sha256) to the value in the material"
        },
        "uri": {
          "type": "string",
          "description": "uri is the uri of the material"
        }
      },
      "type": "object",
      "required": [
        "digest",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Metadata": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Completeness",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:MetadataResponse": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CompletenessResponse",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object",
      "required": [
        "buildFinishedOn",
        "buildInvocationId",
        "buildStartedOn",
        "completeness",
        "reproducible"
      ]
    },
    "google-native:containeranalysis/v1alpha1:NonCompliantFile": {
      "description": "Details about files that caused a compliance check to fail.",
      "properties": {
        "displayCommand": {
          "type": "string",
          "description": "Command to display the non-compliant files."
        },
        "path": {
          "type": "string",
          "description": "display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using 'path'. Empty if `display_command` is set."
        },
        "reason": {
          "type": "string",
          "description": "Explains why a file is non compliant for a CIS check."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:NonCompliantFileResponse": {
      "description": "Details about files that caused a compliance check to fail.",
      "properties": {
        "displayCommand": {
          "type": "string",
          "description": "Command to display the non-compliant files."
        },
        "path": {
          "type": "string",
          "description": "display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using 'path'. Empty if `display_command` is set."
        },
        "reason": {
          "type": "string",
          "description": "Explains why a file is non compliant for a CIS check."
        }
      },
      "type": "object",
      "required": [
        "displayCommand",
        "path",
        "reason"
      ]
    },
    "google-native:containeranalysis/v1alpha1:OperationResponse": {
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "properties": {
        "done": {
          "type": "boolean",
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available."
        },
        "error": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:StatusResponse",
          "description": "The error result of the operation in case of failure or cancellation."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any."
        },
        "name": {
          "type": "string",
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`."
        },
        "response": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`."
        }
      },
      "type": "object",
      "required": [
        "done",
        "error",
        "metadata",
        "name",
        "response"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Package": {
      "description": "This represents a particular package that is distributed over various channels. e.g. glibc (aka libc6) is distributed by many, at various versions.",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageArchitecture",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "description": {
          "type": "string",
          "description": "The description of this package."
        },
        "digest": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Digest"
          },
          "description": "Hash value, typically a file digest, that allows unique identification a specific package."
        },
        "distribution": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Distribution"
          },
          "description": "The various channels by which a package is distributed."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:License",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform text denoting the maintainer of this package."
        },
        "name": {
          "type": "string",
          "description": "The name of the package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "url": {
          "type": "string",
          "description": "The homepage for this package."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Version",
          "description": "The version of the package."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:PackageArchitecture": {
      "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Unknown architecture",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "X86",
          "description": "X86 architecture",
          "value": "X86"
        },
        {
          "name": "X64",
          "description": "X64 architecture",
          "value": "X64"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:PackageInfoNote": {
      "description": "PackageInfoNote represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
      "properties": {
        "analyzed": {
          "type": "boolean",
          "description": "Indicates whether the file content of this package has been available for or subjected to analysis when creating the SPDX document"
        },
        "attribution": {
          "type": "string",
          "description": "A place for the SPDX data creator to record, at the package level, acknowledgements that may be needed to be communicated in some contexts"
        },
        "checksum": {
          "type": "string",
          "description": "Provide an independently reproducible mechanism that permits unique identification of a specific package that correlates to the data in this SPDX file"
        },
        "copyright": {
          "type": "string",
          "description": "Identify the copyright holders of the package, as well as any dates present"
        },
        "detailedDescription": {
          "type": "string",
          "description": "A more detailed description of the package"
        },
        "downloadLocation": {
          "type": "string",
          "description": "This section identifies the download Universal Resource Locator (URL), or a specific location within a version control system (VCS) for the package at the time that the SPDX file was created"
        },
        "externalRefs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ExternalRef"
          },
          "description": "ExternalRef"
        },
        "filesLicenseInfo": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contain the license the SPDX file creator has concluded as governing the This field is to contain a list of all licenses found in the package. The relationship between licenses (i.e., conjunctive, disjunctive) is not specified in this field – it is simply a listing of all licenses found"
        },
        "homePage": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record a web site that serves as the package's home page"
        },
        "licenseDeclared": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:License",
          "description": "List the licenses that have been declared by the authors of the package"
        },
        "originator": {
          "type": "string",
          "description": "If the package identified in the SPDX file originated from a different person or organization than identified as Package Supplier, this field identifies from where or whom the package originally came"
        },
        "packageType": {
          "type": "string",
          "description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc."
        },
        "summaryDescription": {
          "type": "string",
          "description": "A short description of the package"
        },
        "supplier": {
          "type": "string",
          "description": "Identify the actual distribution source for the package/directory identified in the SPDX file"
        },
        "title": {
          "type": "string",
          "description": "Identify the full name of the package as given by the Package Originator"
        },
        "verificationCode": {
          "type": "string",
          "description": "This field provides an independently reproducible mechanism identifying specific contents of a package based on the actual files (except the SPDX file itself, if it is included in the package) that make up each package and that correlates to the data in this SPDX file"
        },
        "version": {
          "type": "string",
          "description": "Identify the version of the package"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:PackageInfoNoteResponse": {
      "description": "PackageInfoNote represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
      "properties": {
        "analyzed": {
          "type": "boolean",
          "description": "Indicates whether the file content of this package has been available for or subjected to analysis when creating the SPDX document"
        },
        "attribution": {
          "type": "string",
          "description": "A place for the SPDX data creator to record, at the package level, acknowledgements that may be needed to be communicated in some contexts"
        },
        "checksum": {
          "type": "string",
          "description": "Provide an independently reproducible mechanism that permits unique identification of a specific package that correlates to the data in this SPDX file"
        },
        "copyright": {
          "type": "string",
          "description": "Identify the copyright holders of the package, as well as any dates present"
        },
        "detailedDescription": {
          "type": "string",
          "description": "A more detailed description of the package"
        },
        "downloadLocation": {
          "type": "string",
          "description": "This section identifies the download Universal Resource Locator (URL), or a specific location within a version control system (VCS) for the package at the time that the SPDX file was created"
        },
        "externalRefs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ExternalRefResponse"
          },
          "description": "ExternalRef"
        },
        "filesLicenseInfo": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contain the license the SPDX file creator has concluded as governing the This field is to contain a list of all licenses found in the package. The relationship between licenses (i.e., conjunctive, disjunctive) is not specified in this field – it is simply a listing of all licenses found"
        },
        "homePage": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record a web site that serves as the package's home page"
        },
        "licenseDeclared": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:LicenseResponse",
          "description": "List the licenses that have been declared by the authors of the package"
        },
        "originator": {
          "type": "string",
          "description": "If the package identified in the SPDX file originated from a different person or organization than identified as Package Supplier, this field identifies from where or whom the package originally came"
        },
        "packageType": {
          "type": "string",
          "description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc."
        },
        "summaryDescription": {
          "type": "string",
          "description": "A short description of the package"
        },
        "supplier": {
          "type": "string",
          "description": "Identify the actual distribution source for the package/directory identified in the SPDX file"
        },
        "title": {
          "type": "string",
          "description": "Identify the full name of the package as given by the Package Originator"
        },
        "verificationCode": {
          "type": "string",
          "description": "This field provides an independently reproducible mechanism identifying specific contents of a package based on the actual files (except the SPDX file itself, if it is included in the package) that make up each package and that correlates to the data in this SPDX file"
        },
        "version": {
          "type": "string",
          "description": "Identify the version of the package"
        }
      },
      "type": "object",
      "required": [
        "analyzed",
        "attribution",
        "checksum",
        "copyright",
        "detailedDescription",
        "downloadLocation",
        "externalRefs",
        "filesLicenseInfo",
        "homePage",
        "licenseDeclared",
        "originator",
        "packageType",
        "summaryDescription",
        "supplier",
        "title",
        "verificationCode",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:PackageInfoOccurrence": {
      "description": "PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
      "properties": {
        "comment": {
          "type": "string",
          "description": "A place for the SPDX file creator to record any general comments about the package being described"
        },
        "filename": {
          "type": "string",
          "description": "Provide the actual file name of the package, or path of the directory being treated as a package"
        },
        "id": {
          "type": "string",
          "description": "Uniquely identify any element in an SPDX document which may be referenced by other elements"
        },
        "licenseConcluded": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:License",
          "description": "package or alternative values, if the governing license cannot be determined"
        },
        "sourceInfo": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:PackageInfoOccurrenceResponse": {
      "description": "PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
      "properties": {
        "comment": {
          "type": "string",
          "description": "A place for the SPDX file creator to record any general comments about the package being described"
        },
        "filename": {
          "type": "string",
          "description": "Provide the actual file name of the package, or path of the directory being treated as a package"
        },
        "homePage": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record a web site that serves as the package's home page"
        },
        "licenseConcluded": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:LicenseResponse",
          "description": "package or alternative values, if the governing license cannot be determined"
        },
        "packageType": {
          "type": "string",
          "description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc."
        },
        "sourceInfo": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package"
        },
        "summaryDescription": {
          "type": "string",
          "description": "A short description of the package"
        },
        "title": {
          "type": "string",
          "description": "Identify the full name of the package as given by the Package Originator"
        },
        "version": {
          "type": "string",
          "description": "Identify the version of the package"
        }
      },
      "type": "object",
      "required": [
        "comment",
        "filename",
        "homePage",
        "licenseConcluded",
        "packageType",
        "sourceInfo",
        "summaryDescription",
        "title",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:PackageIssue": {
      "description": "This message wraps a location affected by a vulnerability and its associated fix (if one is available).",
      "properties": {
        "affectedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityLocation",
          "description": "The location of the vulnerability."
        },
        "fixedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityLocation",
          "description": "The location of the available fix for vulnerability."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package (e.g. OS, MAVEN, GO)."
        },
        "severityName": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:PackageIssueResponse": {
      "description": "This message wraps a location affected by a vulnerability and its associated fix (if one is available).",
      "properties": {
        "affectedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityLocationResponse",
          "description": "The location of the vulnerability."
        },
        "effectiveSeverity": {
          "type": "string",
          "description": "The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when distro or language system has not yet assigned a severity for this vulnerability."
        },
        "fixedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityLocationResponse",
          "description": "The location of the available fix for vulnerability."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package (e.g. OS, MAVEN, GO)."
        },
        "severityName": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "affectedLocation",
        "effectiveSeverity",
        "fixedLocation",
        "packageType",
        "severityName"
      ]
    },
    "google-native:containeranalysis/v1alpha1:PackageResponse": {
      "description": "This represents a particular package that is distributed over various channels. e.g. glibc (aka libc6) is distributed by many, at various versions.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "description": {
          "type": "string",
          "description": "The description of this package."
        },
        "digest": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DigestResponse"
          },
          "description": "Hash value, typically a file digest, that allows unique identification a specific package."
        },
        "distribution": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DistributionResponse"
          },
          "description": "The various channels by which a package is distributed."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:LicenseResponse",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform text denoting the maintainer of this package."
        },
        "name": {
          "type": "string",
          "description": "The name of the package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "url": {
          "type": "string",
          "description": "The homepage for this package."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "The version of the package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "description",
        "digest",
        "distribution",
        "license",
        "maintainer",
        "name",
        "packageType",
        "url",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:PgpSignedAttestation": {
      "description": "An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.",
      "properties": {
        "contentType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PgpSignedAttestationContentType",
          "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema)."
        },
        "pgpKeyId": {
          "type": "string",
          "description": "The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge \"LONG\", \"SHORT\", or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \\ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`."
        },
        "signature": {
          "type": "string",
          "description": "The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:PgpSignedAttestationContentType": {
      "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).",
      "type": "string",
      "enum": [
        {
          "name": "ContentTypeUnspecified",
          "description": "`ContentType` is not set.",
          "value": "CONTENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "SimpleSigningJson",
          "description": "Atomic format attestation signature. See https://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7/docs/atomic-signature.md The payload extracted from `signature` is a JSON blob conforming to the linked schema.",
          "value": "SIMPLE_SIGNING_JSON"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:PgpSignedAttestationResponse": {
      "description": "An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.",
      "properties": {
        "contentType": {
          "type": "string",
          "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema)."
        },
        "pgpKeyId": {
          "type": "string",
          "description": "The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge \"LONG\", \"SHORT\", or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \\ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`."
        },
        "signature": {
          "type": "string",
          "description": "The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload."
        }
      },
      "type": "object",
      "required": [
        "contentType",
        "pgpKeyId",
        "signature"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Product": {
      "description": "Product contains information about a product and how to uniquely identify it.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document."
        },
        "identifierHelper": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:IdentifierHelper",
          "description": "Helps in identifying the underlying product."
        },
        "name": {
          "type": "string",
          "description": "Name of the product."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ProductResponse": {
      "description": "Product contains information about a product and how to uniquely identify it.",
      "properties": {
        "identifierHelper": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:IdentifierHelperResponse",
          "description": "Helps in identifying the underlying product."
        },
        "name": {
          "type": "string",
          "description": "Name of the product."
        }
      },
      "type": "object",
      "required": [
        "identifierHelper",
        "name"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ProvenanceBuilder": {
      "properties": {
        "builderDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ResourceDescriptor"
          }
        },
        "id": {
          "type": "string"
        },
        "version": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ProvenanceBuilderResponse": {
      "properties": {
        "builderDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ResourceDescriptorResponse"
          }
        },
        "version": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "builderDependencies",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Publisher": {
      "description": "Publisher contains information about the publisher of this Note.",
      "properties": {
        "issuingAuthority": {
          "type": "string",
          "description": "Provides information about the authority of the issuing party to release the document, in particular, the party's constituency and responsibilities or other obligations."
        },
        "name": {
          "type": "string",
          "description": "Name of the publisher. Examples: 'Google', 'Google Cloud Platform'."
        },
        "publisherNamespace": {
          "type": "string",
          "description": "The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:PublisherResponse": {
      "description": "Publisher contains information about the publisher of this Note.",
      "properties": {
        "issuingAuthority": {
          "type": "string",
          "description": "Provides information about the authority of the issuing party to release the document, in particular, the party's constituency and responsibilities or other obligations."
        },
        "name": {
          "type": "string",
          "description": "Name of the publisher. Examples: 'Google', 'Google Cloud Platform'."
        },
        "publisherNamespace": {
          "type": "string",
          "description": "The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io"
        }
      },
      "type": "object",
      "required": [
        "issuingAuthority",
        "name",
        "publisherNamespace"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Recipe": {
      "description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
      "properties": {
        "arguments": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint."
        },
        "definedInMaterial": {
          "type": "string",
          "description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use."
        },
        "environment": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy."
        },
        "type": {
          "type": "string",
          "description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:RecipeResponse": {
      "description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
      "properties": {
        "arguments": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint."
        },
        "definedInMaterial": {
          "type": "string",
          "description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use."
        },
        "environment": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy."
        },
        "type": {
          "type": "string",
          "description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "definedInMaterial",
        "entryPoint",
        "environment",
        "type"
      ]
    },
    "google-native:containeranalysis/v1alpha1:RelatedUrl": {
      "description": "Metadata for any related URL information",
      "properties": {
        "label": {
          "type": "string",
          "description": "Label to describe usage of the URL"
        },
        "url": {
          "type": "string",
          "description": "Specific URL to associate with the note"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:RelatedUrlResponse": {
      "description": "Metadata for any related URL information",
      "properties": {
        "label": {
          "type": "string",
          "description": "Label to describe usage of the URL"
        },
        "url": {
          "type": "string",
          "description": "Specific URL to associate with the note"
        }
      },
      "type": "object",
      "required": [
        "label",
        "url"
      ]
    },
    "google-native:containeranalysis/v1alpha1:RelationshipNote": {
      "description": "RelationshipNote represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelationshipNoteType",
          "description": "The type of relationship between the source and target SPDX elements"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:RelationshipNoteResponse": {
      "description": "RelationshipNote represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of relationship between the source and target SPDX elements"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:containeranalysis/v1alpha1:RelationshipNoteType": {
      "description": "The type of relationship between the source and target SPDX elements",
      "type": "string",
      "enum": [
        {
          "name": "RelationshipTypeUnspecified",
          "description": "Unspecified",
          "value": "RELATIONSHIP_TYPE_UNSPECIFIED"
        },
        {
          "name": "Describes",
          "description": "Is to be used when SPDXRef-DOCUMENT describes SPDXRef-A",
          "value": "DESCRIBES"
        },
        {
          "name": "DescribedBy",
          "description": "Is to be used when SPDXRef-A is described by SPDXREF-Document",
          "value": "DESCRIBED_BY"
        },
        {
          "name": "Contains",
          "description": "Is to be used when SPDXRef-A contains SPDXRef-B",
          "value": "CONTAINS"
        },
        {
          "name": "ContainedBy",
          "description": "Is to be used when SPDXRef-A is contained by SPDXRef-B",
          "value": "CONTAINED_BY"
        },
        {
          "name": "DependsOn",
          "description": "Is to be used when SPDXRef-A depends on SPDXRef-B",
          "value": "DEPENDS_ON"
        },
        {
          "name": "DependencyOf",
          "description": "Is to be used when SPDXRef-A is dependency of SPDXRef-B",
          "value": "DEPENDENCY_OF"
        },
        {
          "name": "DependencyManifestOf",
          "description": "Is to be used when SPDXRef-A is a manifest file that lists a set of dependencies for SPDXRef-B",
          "value": "DEPENDENCY_MANIFEST_OF"
        },
        {
          "name": "BuildDependencyOf",
          "description": "Is to be used when SPDXRef-A is a build dependency of SPDXRef-B",
          "value": "BUILD_DEPENDENCY_OF"
        },
        {
          "name": "DevDependencyOf",
          "description": "Is to be used when SPDXRef-A is a development dependency of SPDXRef-B",
          "value": "DEV_DEPENDENCY_OF"
        },
        {
          "name": "OptionalDependencyOf",
          "description": "Is to be used when SPDXRef-A is an optional dependency of SPDXRef-B",
          "value": "OPTIONAL_DEPENDENCY_OF"
        },
        {
          "name": "ProvidedDependencyOf",
          "description": "Is to be used when SPDXRef-A is a to be provided dependency of SPDXRef-B",
          "value": "PROVIDED_DEPENDENCY_OF"
        },
        {
          "name": "TestDependencyOf",
          "description": "Is to be used when SPDXRef-A is a test dependency of SPDXRef-B",
          "value": "TEST_DEPENDENCY_OF"
        },
        {
          "name": "RuntimeDependencyOf",
          "description": "Is to be used when SPDXRef-A is a dependency required for the execution of SPDXRef-B",
          "value": "RUNTIME_DEPENDENCY_OF"
        },
        {
          "name": "ExampleOf",
          "description": "Is to be used when SPDXRef-A is an example of SPDXRef-B",
          "value": "EXAMPLE_OF"
        },
        {
          "name": "Generates",
          "description": "Is to be used when SPDXRef-A generates SPDXRef-B",
          "value": "GENERATES"
        },
        {
          "name": "GeneratedFrom",
          "description": "Is to be used when SPDXRef-A was generated from SPDXRef-B",
          "value": "GENERATED_FROM"
        },
        {
          "name": "AncestorOf",
          "description": "Is to be used when SPDXRef-A is an ancestor (same lineage but pre-dates) SPDXRef-B",
          "value": "ANCESTOR_OF"
        },
        {
          "name": "DescendantOf",
          "description": "Is to be used when SPDXRef-A is a descendant of (same lineage but postdates) SPDXRef-B",
          "value": "DESCENDANT_OF"
        },
        {
          "name": "VariantOf",
          "description": "Is to be used when SPDXRef-A is a variant of (same lineage but not clear which came first) SPDXRef-B",
          "value": "VARIANT_OF"
        },
        {
          "name": "DistributionArtifact",
          "description": "Is to be used when distributing SPDXRef-A requires that SPDXRef-B also be distributed",
          "value": "DISTRIBUTION_ARTIFACT"
        },
        {
          "name": "PatchFor",
          "description": "Is to be used when SPDXRef-A is a patch file for (to be applied to) SPDXRef-B",
          "value": "PATCH_FOR"
        },
        {
          "name": "PatchApplied",
          "description": "Is to be used when SPDXRef-A is a patch file that has been applied to SPDXRef-B",
          "value": "PATCH_APPLIED"
        },
        {
          "name": "CopyOf",
          "description": "Is to be used when SPDXRef-A is an exact copy of SPDXRef-B",
          "value": "COPY_OF"
        },
        {
          "name": "FileAdded",
          "description": "Is to be used when SPDXRef-A is a file that was added to SPDXRef-B",
          "value": "FILE_ADDED"
        },
        {
          "name": "FileDeleted",
          "description": "Is to be used when SPDXRef-A is a file that was deleted from SPDXRef-B",
          "value": "FILE_DELETED"
        },
        {
          "name": "FileModified",
          "description": "Is to be used when SPDXRef-A is a file that was modified from SPDXRef-B",
          "value": "FILE_MODIFIED"
        },
        {
          "name": "ExpandedFromArchive",
          "description": "Is to be used when SPDXRef-A is expanded from the archive SPDXRef-B",
          "value": "EXPANDED_FROM_ARCHIVE"
        },
        {
          "name": "DynamicLink",
          "description": "Is to be used when SPDXRef-A dynamically links to SPDXRef-B",
          "value": "DYNAMIC_LINK"
        },
        {
          "name": "StaticLink",
          "description": "Is to be used when SPDXRef-A statically links to SPDXRef-B",
          "value": "STATIC_LINK"
        },
        {
          "name": "DataFileOf",
          "description": "Is to be used when SPDXRef-A is a data file used in SPDXRef-B",
          "value": "DATA_FILE_OF"
        },
        {
          "name": "TestCaseOf",
          "description": "Is to be used when SPDXRef-A is a test case used in testing SPDXRef-B",
          "value": "TEST_CASE_OF"
        },
        {
          "name": "BuildToolOf",
          "description": "Is to be used when SPDXRef-A is used to build SPDXRef-B",
          "value": "BUILD_TOOL_OF"
        },
        {
          "name": "DevToolOf",
          "description": "Is to be used when SPDXRef-A is used as a development tool for SPDXRef-B",
          "value": "DEV_TOOL_OF"
        },
        {
          "name": "TestOf",
          "description": "Is to be used when SPDXRef-A is used for testing SPDXRef-B",
          "value": "TEST_OF"
        },
        {
          "name": "TestToolOf",
          "description": "Is to be used when SPDXRef-A is used as a test tool for SPDXRef-B",
          "value": "TEST_TOOL_OF"
        },
        {
          "name": "DocumentationOf",
          "description": "Is to be used when SPDXRef-A provides documentation of SPDXRef-B",
          "value": "DOCUMENTATION_OF"
        },
        {
          "name": "OptionalComponentOf",
          "description": "Is to be used when SPDXRef-A is an optional component of SPDXRef-B",
          "value": "OPTIONAL_COMPONENT_OF"
        },
        {
          "name": "MetafileOf",
          "description": "Is to be used when SPDXRef-A is a metafile of SPDXRef-B",
          "value": "METAFILE_OF"
        },
        {
          "name": "PackageOf",
          "description": "Is to be used when SPDXRef-A is used as a package as part of SPDXRef-B",
          "value": "PACKAGE_OF"
        },
        {
          "name": "Amends",
          "description": "Is to be used when (current) SPDXRef-DOCUMENT amends the SPDX information in SPDXRef-B",
          "value": "AMENDS"
        },
        {
          "name": "PrerequisiteFor",
          "description": "Is to be used when SPDXRef-A is a prerequisite for SPDXRef-B",
          "value": "PREREQUISITE_FOR"
        },
        {
          "name": "HasPrerequisite",
          "description": "Is to be used when SPDXRef-A has as a prerequisite SPDXRef-B",
          "value": "HAS_PREREQUISITE"
        },
        {
          "name": "Other",
          "description": "Is to be used for a relationship which has not been defined in the formal SPDX specification. A description of the relationship should be included in the Relationship comments field",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:RelationshipOccurrence": {
      "description": "RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
      "properties": {
        "comment": {
          "type": "string",
          "description": "A place for the SPDX file creator to record any general comments about the relationship"
        },
        "source": {
          "type": "string",
          "description": "Also referred to as SPDXRef-A The source SPDX element (file, package, etc)"
        },
        "target": {
          "type": "string",
          "description": "Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are \"known unknowns\", the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:RelationshipOccurrenceResponse": {
      "description": "RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
      "properties": {
        "comment": {
          "type": "string",
          "description": "A place for the SPDX file creator to record any general comments about the relationship"
        },
        "source": {
          "type": "string",
          "description": "Also referred to as SPDXRef-A The source SPDX element (file, package, etc)"
        },
        "target": {
          "type": "string",
          "description": "Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are \"known unknowns\", the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it"
        },
        "type": {
          "type": "string",
          "description": "The type of relationship between the source and target SPDX elements"
        }
      },
      "type": "object",
      "required": [
        "comment",
        "source",
        "target",
        "type"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Remediation": {
      "description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Contains a comprehensive human-readable discussion of the remediation."
        },
        "remediationType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RemediationRemediationType",
          "description": "The type of remediation that can be applied."
        },
        "remediationUri": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:URI",
          "description": "Contains the URL where to obtain the remediation."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:RemediationRemediationType": {
      "description": "The type of remediation that can be applied.",
      "type": "string",
      "enum": [
        {
          "name": "RemediationTypeUnspecified",
          "description": "No remediation type specified.",
          "value": "REMEDIATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mitigation",
          "description": "A MITIGATION is available.",
          "value": "MITIGATION"
        },
        {
          "name": "NoFixPlanned",
          "description": "No fix is planned.",
          "value": "NO_FIX_PLANNED"
        },
        {
          "name": "NoneAvailable",
          "description": "Not available.",
          "value": "NONE_AVAILABLE"
        },
        {
          "name": "VendorFix",
          "description": "A vendor fix is available.",
          "value": "VENDOR_FIX"
        },
        {
          "name": "Workaround",
          "description": "A workaround is available.",
          "value": "WORKAROUND"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:RemediationResponse": {
      "description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Contains a comprehensive human-readable discussion of the remediation."
        },
        "remediationType": {
          "type": "string",
          "description": "The type of remediation that can be applied."
        },
        "remediationUri": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:URIResponse",
          "description": "Contains the URL where to obtain the remediation."
        }
      },
      "type": "object",
      "required": [
        "details",
        "remediationType",
        "remediationUri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:RepoSource": {
      "description": "RepoSource describes the location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Name of the branch to build."
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the repo."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the repo."
        },
        "tagName": {
          "type": "string",
          "description": "Name of the tag to build."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:RepoSourceResponse": {
      "description": "RepoSource describes the location of the source in a Google Cloud Source Repository.",
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Name of the branch to build."
        },
        "commitSha": {
          "type": "string",
          "description": "Explicit commit SHA to build."
        },
        "project": {
          "type": "string",
          "description": "ID of the project that owns the repo."
        },
        "repoName": {
          "type": "string",
          "description": "Name of the repo."
        },
        "tagName": {
          "type": "string",
          "description": "Name of the tag to build."
        }
      },
      "type": "object",
      "required": [
        "branchName",
        "commitSha",
        "project",
        "repoName",
        "tagName"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Resource": {
      "description": " Resource is an entity that can have metadata. E.g., a Docker image.",
      "properties": {
        "contentHash": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Hash",
          "description": "The hash of the resource content. E.g., the Docker digest."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource. E.g., the name of a Docker image - \"Debian\"."
        },
        "uri": {
          "type": "string",
          "description": "The unique URI of the resource. E.g., \"https://gcr.io/project/image@sha256:foo\" for a Docker image."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ResourceDescriptor": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "content": {
          "type": "string"
        },
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "downloadLocation": {
          "type": "string"
        },
        "mediaType": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:ResourceDescriptorResponse": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "content": {
          "type": "string"
        },
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "downloadLocation": {
          "type": "string"
        },
        "mediaType": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "content",
        "digest",
        "downloadLocation",
        "mediaType",
        "name",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ResourceResponse": {
      "description": " Resource is an entity that can have metadata. E.g., a Docker image.",
      "properties": {
        "contentHash": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:HashResponse",
          "description": "The hash of the resource content. E.g., the Docker digest."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource. E.g., the name of a Docker image - \"Debian\"."
        },
        "uri": {
          "type": "string",
          "description": "The unique URI of the resource. E.g., \"https://gcr.io/project/image@sha256:foo\" for a Docker image."
        }
      },
      "type": "object",
      "required": [
        "contentHash",
        "name",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:RunDetails": {
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ProvenanceBuilder"
        },
        "byproducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ResourceDescriptor"
          }
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildMetadata"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:RunDetailsResponse": {
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ProvenanceBuilderResponse"
        },
        "byproducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ResourceDescriptorResponse"
          }
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildMetadataResponse"
        }
      },
      "type": "object",
      "required": [
        "builder",
        "byproducts",
        "metadata"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SBOMReferenceNote": {
      "description": "The note representing an SBOM reference.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format that SBOM takes. E.g. may be spdx, cyclonedx, etc..."
        },
        "version": {
          "type": "string",
          "description": "The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SBOMReferenceNoteResponse": {
      "description": "The note representing an SBOM reference.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format that SBOM takes. E.g. may be spdx, cyclonedx, etc..."
        },
        "version": {
          "type": "string",
          "description": "The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3."
        }
      },
      "type": "object",
      "required": [
        "format",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SBOMReferenceOccurrence": {
      "description": "The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details.",
      "properties": {
        "payload": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SbomReferenceIntotoPayload",
          "description": "The actual payload that contains the SBOM reference data."
        },
        "payloadType": {
          "type": "string",
          "description": "The kind of payload that SbomReferenceIntotoPayload takes. Since it's in the intoto format, this value is expected to be 'application/vnd.in-toto+json'."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:EnvelopeSignature"
          },
          "description": "The signatures over the payload."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SBOMReferenceOccurrenceResponse": {
      "description": "The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details.",
      "properties": {
        "payload": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SbomReferenceIntotoPayloadResponse",
          "description": "The actual payload that contains the SBOM reference data."
        },
        "payloadType": {
          "type": "string",
          "description": "The kind of payload that SbomReferenceIntotoPayload takes. Since it's in the intoto format, this value is expected to be 'application/vnd.in-toto+json'."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:EnvelopeSignatureResponse"
          },
          "description": "The signatures over the payload."
        }
      },
      "type": "object",
      "required": [
        "payload",
        "payloadType",
        "signatures"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SBOMStatusResponse": {
      "description": "The status of an SBOM generation.",
      "properties": {
        "error": {
          "type": "string",
          "description": "If there was an error generating an SBOM, this will indicate what that error was."
        },
        "sbomState": {
          "type": "string",
          "description": "The progress of the SBOM generation."
        }
      },
      "type": "object",
      "required": [
        "error",
        "sbomState"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SbomReferenceIntotoPayload": {
      "description": "The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details.",
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SbomReferenceIntotoPredicate",
          "description": "Additional parameters of the Predicate. Includes the actual data about the SBOM."
        },
        "predicateType": {
          "type": "string",
          "description": "URI identifying the type of the Predicate."
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Subject"
          },
          "description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact."
        },
        "type": {
          "type": "string",
          "description": "Identifier for the schema of the Statement."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SbomReferenceIntotoPayloadResponse": {
      "description": "The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details.",
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SbomReferenceIntotoPredicateResponse",
          "description": "Additional parameters of the Predicate. Includes the actual data about the SBOM."
        },
        "predicateType": {
          "type": "string",
          "description": "URI identifying the type of the Predicate."
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SubjectResponse"
          },
          "description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact."
        },
        "type": {
          "type": "string",
          "description": "Identifier for the schema of the Statement."
        }
      },
      "type": "object",
      "required": [
        "predicate",
        "predicateType",
        "subject",
        "type"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SbomReferenceIntotoPredicate": {
      "description": "A predicate which describes the SBOM being referenced.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of algorithm to digest of the contents of the SBOM."
        },
        "location": {
          "type": "string",
          "description": "The location of the SBOM."
        },
        "mimeType": {
          "type": "string",
          "description": "The mime type of the SBOM."
        },
        "referrerId": {
          "type": "string",
          "description": "The person or system referring this predicate to the consumer."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SbomReferenceIntotoPredicateResponse": {
      "description": "A predicate which describes the SBOM being referenced.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of algorithm to digest of the contents of the SBOM."
        },
        "location": {
          "type": "string",
          "description": "The location of the SBOM."
        },
        "mimeType": {
          "type": "string",
          "description": "The mime type of the SBOM."
        },
        "referrerId": {
          "type": "string",
          "description": "The person or system referring this predicate to the consumer."
        }
      },
      "type": "object",
      "required": [
        "digest",
        "location",
        "mimeType",
        "referrerId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SlsaBuilder": {
      "description": "SlsaBuilder encapsulates the identity of the builder of this provenance.",
      "properties": {
        "id": {
          "type": "string",
          "description": "id is the id of the slsa provenance builder"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SlsaBuilderResponse": {
      "description": "SlsaBuilder encapsulates the identity of the builder of this provenance.",
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SlsaCompleteness": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "arguments": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe."
        },
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.environment is claimed to be complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SlsaCompletenessResponse": {
      "description": "Indicates that the builder claims certain fields in this message to be complete.",
      "properties": {
        "arguments": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe."
        },
        "environment": {
          "type": "boolean",
          "description": "If true, the builder claims that recipe.environment is claimed to be complete."
        },
        "materials": {
          "type": "boolean",
          "description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\"."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "environment",
        "materials"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SlsaMetadata": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaCompleteness",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SlsaMetadataResponse": {
      "description": "Other properties of the build.",
      "properties": {
        "buildFinishedOn": {
          "type": "string",
          "description": "The timestamp of when the build completed."
        },
        "buildInvocationId": {
          "type": "string",
          "description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec."
        },
        "buildStartedOn": {
          "type": "string",
          "description": "The timestamp of when the build started."
        },
        "completeness": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaCompletenessResponse",
          "description": "Indicates that the builder claims certain fields in this message to be complete."
        },
        "reproducible": {
          "type": "boolean",
          "description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output."
        }
      },
      "type": "object",
      "required": [
        "buildFinishedOn",
        "buildInvocationId",
        "buildStartedOn",
        "completeness",
        "reproducible"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SlsaProvenance": {
      "description": "SlsaProvenance is the slsa provenance as defined by the slsa spec.",
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaBuilder",
          "description": "builder is the builder of this provenance"
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Material"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaMetadata",
          "description": "metadata is the metadata of the provenance"
        },
        "recipe": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaRecipe",
          "description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible)."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SlsaProvenanceResponse": {
      "description": "SlsaProvenance is the slsa provenance as defined by the slsa spec.",
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaBuilderResponse",
          "description": "builder is the builder of this provenance"
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:MaterialResponse"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaMetadataResponse",
          "description": "metadata is the metadata of the provenance"
        },
        "recipe": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SlsaRecipeResponse",
          "description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible)."
        }
      },
      "type": "object",
      "required": [
        "builder",
        "materials",
        "metadata",
        "recipe"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SlsaProvenanceV1": {
      "description": "Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.",
      "properties": {
        "buildDefinition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildDefinition"
        },
        "runDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RunDetails"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SlsaProvenanceV1Response": {
      "description": "Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.",
      "properties": {
        "buildDefinition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildDefinitionResponse"
        },
        "runDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RunDetailsResponse"
        }
      },
      "type": "object",
      "required": [
        "buildDefinition",
        "runDetails"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SlsaProvenanceZeroTwo": {
      "description": "SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2.",
      "properties": {
        "buildConfig": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Lists the steps in the build."
        },
        "buildType": {
          "type": "string",
          "description": "URI indicating what type of build was performed."
        },
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaBuilder",
          "description": "Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance."
        },
        "invocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaInvocation",
          "description": "Identifies the event that kicked off the build."
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaMaterial"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaMetadata",
          "description": "Other properties of the build."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SlsaProvenanceZeroTwoResponse": {
      "description": "SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2.",
      "properties": {
        "buildConfig": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Lists the steps in the build."
        },
        "buildType": {
          "type": "string",
          "description": "URI indicating what type of build was performed."
        },
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaBuilderResponse",
          "description": "Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance."
        },
        "invocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaInvocationResponse",
          "description": "Identifies the event that kicked off the build."
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaMaterialResponse"
          },
          "description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on."
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SlsaProvenanceZeroTwoSlsaMetadataResponse",
          "description": "Other properties of the build."
        }
      },
      "type": "object",
      "required": [
        "buildConfig",
        "buildType",
        "builder",
        "invocation",
        "materials",
        "metadata"
      ]
    },
    "google-native:containeranalysis/v1alpha1:SlsaRecipe": {
      "description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
      "properties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different."
        },
        "definedInMaterial": {
          "type": "string",
          "description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use."
        },
        "environment": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different."
        },
        "type": {
          "type": "string",
          "description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SlsaRecipeResponse": {
      "description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
      "properties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different."
        },
        "definedInMaterial": {
          "type": "string",
          "description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64."
        },
        "entryPoint": {
          "type": "string",
          "description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use."
        },
        "environment": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different."
        },
        "type": {
          "type": "string",
          "description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "definedInMaterial",
        "entryPoint",
        "environment",
        "type"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Source": {
      "description": "Source describes the location of the source used for the build.",
      "properties": {
        "additionalContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SourceContext"
          },
          "description": "If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field."
        },
        "artifactStorageSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:StorageSource",
          "description": "If provided, the input binary artifacts for the build came from this location."
        },
        "context": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SourceContext",
          "description": "If provided, the source code used for the build came from this location."
        },
        "fileHashes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file."
        },
        "repoSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RepoSource",
          "description": "If provided, get source from this location in a Cloud Repo."
        },
        "storageSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:StorageSource",
          "description": "If provided, get the source from this location in Google Cloud Storage."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SourceResponse": {
      "description": "Source describes the location of the source used for the build.",
      "properties": {
        "additionalContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SourceContextResponse"
          },
          "description": "If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field."
        },
        "artifactStorageSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:StorageSourceResponse",
          "description": "If provided, the input binary artifacts for the build came from this location."
        },
        "context": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:GoogleDevtoolsContaineranalysisV1alpha1SourceContextResponse",
          "description": "If provided, the source code used for the build came from this location."
        },
        "fileHashes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file."
        },
        "repoSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RepoSourceResponse",
          "description": "If provided, get source from this location in a Cloud Repo."
        },
        "storageSource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:StorageSourceResponse",
          "description": "If provided, get the source from this location in Google Cloud Storage."
        }
      },
      "type": "object",
      "required": [
        "additionalContexts",
        "artifactStorageSource",
        "context",
        "fileHashes",
        "repoSource",
        "storageSource"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Status": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:containeranalysis/v1alpha1:StorageSource": {
      "description": "StorageSource describes the location of the source in an archive file in Google Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Google Cloud Storage generation for the object."
        },
        "object": {
          "type": "string",
          "description": "Google Cloud Storage object containing source."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:StorageSourceResponse": {
      "description": "StorageSource describes the location of the source in an archive file in Google Cloud Storage.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements))."
        },
        "generation": {
          "type": "string",
          "description": "Google Cloud Storage generation for the object."
        },
        "object": {
          "type": "string",
          "description": "Google Cloud Storage object containing source."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Subject": {
      "description": "Subject refers to the subject of the intoto statement",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "\"\": \"\" Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet"
        },
        "name": {
          "type": "string",
          "description": "name is the name of the Subject used here"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:SubjectResponse": {
      "description": "Subject refers to the subject of the intoto statement",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "\"\": \"\" Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet"
        },
        "name": {
          "type": "string",
          "description": "name is the name of the Subject used here"
        }
      },
      "type": "object",
      "required": [
        "digest",
        "name"
      ]
    },
    "google-native:containeranalysis/v1alpha1:URI": {
      "description": "An URI message.",
      "properties": {
        "label": {
          "type": "string",
          "description": "A label for the URI."
        },
        "uri": {
          "type": "string",
          "description": "The unique resource identifier."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:URIResponse": {
      "description": "An URI message.",
      "properties": {
        "label": {
          "type": "string",
          "description": "A label for the URI."
        },
        "uri": {
          "type": "string",
          "description": "The unique resource identifier."
        }
      },
      "type": "object",
      "required": [
        "label",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1alpha1:UpgradeDistribution": {
      "description": "The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.",
      "properties": {
        "classification": {
          "type": "string",
          "description": "The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed."
        },
        "cpeUri": {
          "type": "string",
          "description": "Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/."
        },
        "cve": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The cve that would be resolved by this upgrade."
        },
        "severity": {
          "type": "string",
          "description": "The severity as specified by the upstream operating system."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:UpgradeDistributionResponse": {
      "description": "The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.",
      "properties": {
        "classification": {
          "type": "string",
          "description": "The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed."
        },
        "cpeUri": {
          "type": "string",
          "description": "Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/."
        },
        "cve": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The cve that would be resolved by this upgrade."
        },
        "severity": {
          "type": "string",
          "description": "The severity as specified by the upstream operating system."
        }
      },
      "type": "object",
      "required": [
        "classification",
        "cpeUri",
        "cve",
        "severity"
      ]
    },
    "google-native:containeranalysis/v1alpha1:UpgradeNote": {
      "description": "An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be a Upgrade Note.",
      "properties": {
        "distributions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeDistribution"
          },
          "description": "Metadata about the upgrade for each specific operating system."
        },
        "package": {
          "type": "string",
          "description": "Required - The package this Upgrade is for."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Version",
          "description": "Required - The version of the package in machine + human readable form."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:UpgradeNoteResponse": {
      "description": "An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be a Upgrade Note.",
      "properties": {
        "distributions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeDistributionResponse"
          },
          "description": "Metadata about the upgrade for each specific operating system."
        },
        "package": {
          "type": "string",
          "description": "Required - The package this Upgrade is for."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "Required - The version of the package in machine + human readable form."
        }
      },
      "type": "object",
      "required": [
        "distributions",
        "package",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:UpgradeOccurrence": {
      "description": "An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability).",
      "properties": {
        "distribution": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeDistribution",
          "description": "Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence."
        },
        "package": {
          "type": "string",
          "description": "Required - The package this Upgrade is for."
        },
        "parsedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Version",
          "description": "Required - The version of the package in a machine + human readable form."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:UpgradeOccurrenceResponse": {
      "description": "An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability).",
      "properties": {
        "distribution": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeDistributionResponse",
          "description": "Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence."
        },
        "package": {
          "type": "string",
          "description": "Required - The package this Upgrade is for."
        },
        "parsedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "Required - The version of the package in a machine + human readable form."
        }
      },
      "type": "object",
      "required": [
        "distribution",
        "package",
        "parsedVersion"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Version": {
      "description": "Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/",
      "properties": {
        "epoch": {
          "type": "integer",
          "description": "Used to correct mistakes in the version numbering scheme."
        },
        "inclusive": {
          "type": "boolean",
          "description": "Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it's not"
        },
        "kind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionKind",
          "description": "Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored."
        },
        "name": {
          "type": "string",
          "description": "The main part of the version name."
        },
        "revision": {
          "type": "string",
          "description": "The iteration of the package build from the above version."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:VersionKind": {
      "description": "Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.",
      "type": "string",
      "enum": [
        {
          "name": "Normal",
          "description": "A standard package version, defined by the other fields.",
          "value": "NORMAL"
        },
        {
          "name": "Minimum",
          "description": "A special version representing negative infinity, other fields are ignored.",
          "value": "MINIMUM"
        },
        {
          "name": "Maximum",
          "description": "A special version representing positive infinity, other fields are ignored.",
          "value": "MAXIMUM"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:VersionResponse": {
      "description": "Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/",
      "properties": {
        "epoch": {
          "type": "integer",
          "description": "Used to correct mistakes in the version numbering scheme."
        },
        "inclusive": {
          "type": "boolean",
          "description": "Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it's not"
        },
        "kind": {
          "type": "string",
          "description": "Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored."
        },
        "name": {
          "type": "string",
          "description": "The main part of the version name."
        },
        "revision": {
          "type": "string",
          "description": "The iteration of the package build from the above version."
        }
      },
      "type": "object",
      "required": [
        "epoch",
        "inclusive",
        "kind",
        "name",
        "revision"
      ]
    },
    "google-native:containeranalysis/v1alpha1:VexAssessment": {
      "description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Justification",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "noteName": {
          "type": "string",
          "description": "The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:URI"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Remediation"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "state": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VexAssessmentState",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:VexAssessmentResponse": {
      "description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:JustificationResponse",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "noteName": {
          "type": "string",
          "description": "The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:URIResponse"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RemediationResponse"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "state": {
          "type": "string",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object",
      "required": [
        "cve",
        "impacts",
        "justification",
        "noteName",
        "relatedUris",
        "remediations",
        "state",
        "vulnerabilityId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:VexAssessmentState": {
      "description": "Provides the state of this Vulnerability assessment.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "No state is specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Affected",
          "description": "This product is known to be affected by this vulnerability.",
          "value": "AFFECTED"
        },
        {
          "name": "NotAffected",
          "description": "This product is known to be not affected by this vulnerability.",
          "value": "NOT_AFFECTED"
        },
        {
          "name": "Fixed",
          "description": "This product contains a fix for this vulnerability.",
          "value": "FIXED"
        },
        {
          "name": "UnderInvestigation",
          "description": "It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation.",
          "value": "UNDER_INVESTIGATION"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityAssessmentNote": {
      "description": "A single VulnerabilityAssessmentNote represents one particular product's vulnerability assessment for one CVE. Multiple VulnerabilityAssessmentNotes together form a Vex statement. Please go/sds-vex-example for a sample Vex statement in the CSAF format.",
      "properties": {
        "assessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Assessment",
          "description": "Represents a vulnerability assessment for the product."
        },
        "languageCode": {
          "type": "string",
          "description": "Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "product": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Product",
          "description": "The product affected by this vex."
        },
        "publisher": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Publisher",
          "description": "Publisher details of this Note."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "title": {
          "type": "string",
          "description": "The title of the note. E.g. `Vex-Debian-11.4`"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityAssessmentNoteResponse": {
      "description": "A single VulnerabilityAssessmentNote represents one particular product's vulnerability assessment for one CVE. Multiple VulnerabilityAssessmentNotes together form a Vex statement. Please go/sds-vex-example for a sample Vex statement in the CSAF format.",
      "properties": {
        "assessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AssessmentResponse",
          "description": "Represents a vulnerability assessment for the product."
        },
        "languageCode": {
          "type": "string",
          "description": "Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "product": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ProductResponse",
          "description": "The product affected by this vex."
        },
        "publisher": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PublisherResponse",
          "description": "Publisher details of this Note."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "title": {
          "type": "string",
          "description": "The title of the note. E.g. `Vex-Debian-11.4`"
        }
      },
      "type": "object",
      "required": [
        "assessment",
        "languageCode",
        "longDescription",
        "product",
        "publisher",
        "shortDescription",
        "title"
      ]
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityDetails": {
      "description": "Used by Occurrence to point to where the vulnerability exists and how to fix it.",
      "properties": {
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSS",
          "description": "The CVSS v2 score of this vulnerability."
        },
        "cvssV3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSS",
          "description": "The CVSS v3 score of this vulnerability."
        },
        "effectiveSeverity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityDetailsEffectiveSeverity",
          "description": "The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues."
        },
        "extraDetails": {
          "type": "string",
          "description": "Occurrence-specific extra details about the vulnerability."
        },
        "packageIssue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageIssue"
          },
          "description": "The set of affected locations and their fixes (if available) within the associated resource."
        },
        "type": {
          "type": "string",
          "description": "The type of package; whether native or non native(ruby gems, node.js packages etc). This may be deprecated in the future because we can have multiple PackageIssues with different package types."
        },
        "vexAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VexAssessment",
          "description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability for this resource."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityDetailsEffectiveSeverity": {
      "description": "The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unknown Impact",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Minimal",
          "description": "Minimal Impact",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Low Impact",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium Impact",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High Impact",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical Impact",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityDetailsResponse": {
      "description": "Used by Occurrence to point to where the vulnerability exists and how to fix it.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSResponse",
          "description": "The CVSS v2 score of this vulnerability."
        },
        "cvssV3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSResponse",
          "description": "The CVSS v3 score of this vulnerability."
        },
        "cvssVersion": {
          "type": "string",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "effectiveSeverity": {
          "type": "string",
          "description": "The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues."
        },
        "extraDetails": {
          "type": "string",
          "description": "Occurrence-specific extra details about the vulnerability."
        },
        "packageIssue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageIssueResponse"
          },
          "description": "The set of affected locations and their fixes (if available) within the associated resource."
        },
        "severity": {
          "type": "string",
          "description": "The note provider assigned Severity of the vulnerability."
        },
        "type": {
          "type": "string",
          "description": "The type of package; whether native or non native(ruby gems, node.js packages etc). This may be deprecated in the future because we can have multiple PackageIssues with different package types."
        },
        "vexAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VexAssessmentResponse",
          "description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability for this resource."
        }
      },
      "type": "object",
      "required": [
        "cvssScore",
        "cvssV2",
        "cvssV3",
        "cvssVersion",
        "effectiveSeverity",
        "extraDetails",
        "packageIssue",
        "severity",
        "type",
        "vexAssessment"
      ]
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityLocation": {
      "description": "The location of the vulnerability",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests."
        },
        "fileLocation": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileLocation"
          },
          "description": "The file location at which this package was found."
        },
        "package": {
          "type": "string",
          "description": "The package being described."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Version",
          "description": "The version of the package being described. This field can be used as a filter in list requests."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityLocationResponse": {
      "description": "The location of the vulnerability",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests."
        },
        "fileLocation": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileLocationResponse"
          },
          "description": "The file location at which this package was found."
        },
        "package": {
          "type": "string",
          "description": "The package being described."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VersionResponse",
          "description": "The version of the package being described. This field can be used as a filter in list requests."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "fileLocation",
        "package",
        "version"
      ]
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityType": {
      "description": "VulnerabilityType provides metadata about a security vulnerability.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score for this Vulnerability."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSS",
          "description": "The full description of the CVSS for version 2."
        },
        "cvssVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityTypeCvssVersion",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "cwe": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CWE for this vulnerability. For details, see: https://cwe.mitre.org/index.html"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Detail"
          },
          "description": "All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in."
        },
        "severity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityTypeSeverity",
          "description": "Note provider assigned impact of the vulnerability"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityTypeCvssVersion": {
      "description": "CVSS version used to populate cvss_score and severity.",
      "type": "string",
      "enum": [
        {
          "name": "CvssVersionUnspecified",
          "description": "CVSS Version unspecified.",
          "value": "CVSS_VERSION_UNSPECIFIED"
        },
        {
          "name": "CvssVersion2",
          "description": "CVSS v2.",
          "value": "CVSS_VERSION_2"
        },
        {
          "name": "CvssVersion3",
          "description": "CVSS v3.",
          "value": "CVSS_VERSION_3"
        }
      ]
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityTypeResponse": {
      "description": "VulnerabilityType provides metadata about a security vulnerability.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score for this Vulnerability."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:CVSSResponse",
          "description": "The full description of the CVSS for version 2."
        },
        "cvssVersion": {
          "type": "string",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "cwe": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CWE for this vulnerability. For details, see: https://cwe.mitre.org/index.html"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DetailResponse"
          },
          "description": "All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in."
        },
        "severity": {
          "type": "string",
          "description": "Note provider assigned impact of the vulnerability"
        }
      },
      "type": "object",
      "required": [
        "cvssScore",
        "cvssV2",
        "cvssVersion",
        "cwe",
        "details",
        "severity"
      ]
    },
    "google-native:containeranalysis/v1alpha1:VulnerabilityTypeSeverity": {
      "description": "Note provider assigned impact of the vulnerability",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unknown Impact",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Minimal",
          "description": "Minimal Impact",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Low Impact",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium Impact",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High Impact",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical Impact",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:AliasContext": {
      "description": "An alias to a repo revision.",
      "properties": {
        "kind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AliasContextKind",
          "description": "The alias kind."
        },
        "name": {
          "type": "string",
          "description": "The alias name."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:AliasContextKind": {
      "description": "The alias kind.",
      "type": "string",
      "enum": [
        {
          "name": "KindUnspecified",
          "description": "Unknown.",
          "value": "KIND_UNSPECIFIED"
        },
        {
          "name": "Fixed",
          "description": "Git tag.",
          "value": "FIXED"
        },
        {
          "name": "Movable",
          "description": "Git branch.",
          "value": "MOVABLE"
        },
        {
          "name": "Other",
          "description": "Used to specify non-standard aliases. For example, if a Git repo has a ref named \"refs/foo/bar\".",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:AliasContextResponse": {
      "description": "An alias to a repo revision.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The alias kind."
        },
        "name": {
          "type": "string",
          "description": "The alias name."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "name"
      ]
    },
    "google-native:containeranalysis/v1beta1:AnalysisCompleted": {
      "description": "Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource.",
      "properties": {
        "analysisType": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:AnalysisCompletedResponse": {
      "description": "Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource.",
      "properties": {
        "analysisType": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "analysisType"
      ]
    },
    "google-native:containeranalysis/v1beta1:Artifact": {
      "description": "Artifact describes a build product.",
      "properties": {
        "checksum": {
          "type": "string",
          "description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container."
        },
        "id": {
          "type": "string",
          "description": "Artifact ID, if any; for container images, this will be a URL by digest like `gcr.io/projectID/imagename@sha256:123456`."
        },
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ArtifactHashes": {
      "description": "Defines a hash object for use in Materials and Products.",
      "properties": {
        "sha256": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ArtifactHashesResponse": {
      "description": "Defines a hash object for use in Materials and Products.",
      "properties": {
        "sha256": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "sha256"
      ]
    },
    "google-native:containeranalysis/v1beta1:ArtifactResponse": {
      "description": "Artifact describes a build product.",
      "properties": {
        "checksum": {
          "type": "string",
          "description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container."
        },
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image."
        }
      },
      "type": "object",
      "required": [
        "checksum",
        "names"
      ]
    },
    "google-native:containeranalysis/v1beta1:ArtifactRule": {
      "description": "Defines an object to declare an in-toto artifact rule",
      "properties": {
        "artifactRule": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ArtifactRuleResponse": {
      "description": "Defines an object to declare an in-toto artifact rule",
      "properties": {
        "artifactRule": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "artifactRule"
      ]
    },
    "google-native:containeranalysis/v1beta1:Assessment": {
      "description": "Assessment provides all information that is related to a single vulnerability for this product.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
          "deprecationMessage": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Justification",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrl"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Remediation"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "state": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AssessmentState",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:AssessmentResponse": {
      "description": "Assessment provides all information that is related to a single vulnerability for this product.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
          "deprecationMessage": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:JustificationResponse",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrlResponse"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RemediationResponse"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "state": {
          "type": "string",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object",
      "required": [
        "cve",
        "impacts",
        "justification",
        "longDescription",
        "relatedUris",
        "remediations",
        "shortDescription",
        "state",
        "vulnerabilityId"
      ]
    },
    "google-native:containeranalysis/v1beta1:AssessmentState": {
      "description": "Provides the state of this Vulnerability assessment.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "No state is specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Affected",
          "description": "This product is known to be affected by this vulnerability.",
          "value": "AFFECTED"
        },
        {
          "name": "NotAffected",
          "description": "This product is known to be not affected by this vulnerability.",
          "value": "NOT_AFFECTED"
        },
        {
          "name": "Fixed",
          "description": "This product contains a fix for this vulnerability.",
          "value": "FIXED"
        },
        {
          "name": "UnderInvestigation",
          "description": "It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation.",
          "value": "UNDER_INVESTIGATION"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:Attestation": {
      "description": "Occurrence that represents a single \"attestation\". The authenticity of an attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the authority to which this attestation is attached is primarily useful for look-up (how to find this attestation if you already know the authority and artifact to be verified) and intent (which authority was this attestation intended to sign for).",
      "properties": {
        "genericSignedAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GenericSignedAttestation"
        },
        "pgpSignedAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PgpSignedAttestation",
          "description": "A PGP signed attestation."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:AttestationResponse": {
      "description": "Occurrence that represents a single \"attestation\". The authenticity of an attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the authority to which this attestation is attached is primarily useful for look-up (how to find this attestation if you already know the authority and artifact to be verified) and intent (which authority was this attestation intended to sign for).",
      "properties": {
        "genericSignedAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GenericSignedAttestationResponse"
        },
        "pgpSignedAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PgpSignedAttestationResponse",
          "description": "A PGP signed attestation."
        }
      },
      "type": "object",
      "required": [
        "genericSignedAttestation",
        "pgpSignedAttestation"
      ]
    },
    "google-native:containeranalysis/v1beta1:Authority": {
      "description": "Note kind that represents a logical attestation \"role\" or \"authority\". For example, an organization might have one `Authority` for \"QA\" and one for \"build\". This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don't all live in the same project.",
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Hint",
          "description": "Hint hints at the purpose of the attestation authority."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:AuthorityResponse": {
      "description": "Note kind that represents a logical attestation \"role\" or \"authority\". For example, an organization might have one `Authority` for \"QA\" and one for \"build\". This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don't all live in the same project.",
      "properties": {
        "hint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:HintResponse",
          "description": "Hint hints at the purpose of the attestation authority."
        }
      },
      "type": "object",
      "required": [
        "hint"
      ]
    },
    "google-native:containeranalysis/v1beta1:Basis": {
      "description": "Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g. a tag of the resource_url.",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Fingerprint",
          "description": "Immutable. The fingerprint of the base image."
        },
        "resourceUrl": {
          "type": "string",
          "description": "Immutable. The resource_url for the resource representing the basis of associated occurrence images."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "resourceUrl"
      ]
    },
    "google-native:containeranalysis/v1beta1:BasisResponse": {
      "description": "Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g. a tag of the resource_url.",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FingerprintResponse",
          "description": "Immutable. The fingerprint of the base image."
        },
        "resourceUrl": {
          "type": "string",
          "description": "Immutable. The resource_url for the resource representing the basis of associated occurrence images."
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "resourceUrl"
      ]
    },
    "google-native:containeranalysis/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:containeranalysis/v1beta1:Build": {
      "description": "Note holding the version of the provider's builder and the signature of the provenance message in the build details occurrence.",
      "properties": {
        "builderVersion": {
          "type": "string",
          "description": "Immutable. Version of the builder which produced this build."
        },
        "signature": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildSignature",
          "description": "Signature of the build in occurrences pointing to this build note containing build details."
        }
      },
      "type": "object",
      "required": [
        "builderVersion"
      ]
    },
    "google-native:containeranalysis/v1beta1:BuildDefinition": {
      "properties": {
        "buildType": {
          "type": "string"
        },
        "externalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "internalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "resolvedDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ResourceDescriptor"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:BuildDefinitionResponse": {
      "properties": {
        "buildType": {
          "type": "string"
        },
        "externalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "internalParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "resolvedDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ResourceDescriptorResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "buildType",
        "externalParameters",
        "internalParameters",
        "resolvedDependencies"
      ]
    },
    "google-native:containeranalysis/v1beta1:BuildMetadata": {
      "properties": {
        "finishedOn": {
          "type": "string"
        },
        "invocationId": {
          "type": "string"
        },
        "startedOn": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:BuildMetadataResponse": {
      "properties": {
        "finishedOn": {
          "type": "string"
        },
        "invocationId": {
          "type": "string"
        },
        "startedOn": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "finishedOn",
        "invocationId",
        "startedOn"
      ]
    },
    "google-native:containeranalysis/v1beta1:BuildProvenance": {
      "description": "Provenance of a build. Contains all information needed to verify the full details about the build from source to completion.",
      "properties": {
        "buildOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details."
        },
        "builderVersion": {
          "type": "string",
          "description": "Version string of the builder at the time this build was executed."
        },
        "builtArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Artifact"
          },
          "description": "Output of the build."
        },
        "commands": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Command"
          },
          "description": "Commands requested by the build."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the build was created."
        },
        "creator": {
          "type": "string",
          "description": "E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the time the build was initiated; this address may not represent the same end-user for all time."
        },
        "endTime": {
          "type": "string",
          "description": "Time at which execution of the build was finished."
        },
        "id": {
          "type": "string",
          "description": "Unique identifier of the build."
        },
        "logsUri": {
          "type": "string",
          "description": "URI where any logs for this provenance were written."
        },
        "project": {
          "type": "string",
          "description": "ID of the project."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Source",
          "description": "Details of the Source input to the build."
        },
        "startTime": {
          "type": "string",
          "description": "Time at which execution of the build was started."
        },
        "triggerId": {
          "type": "string",
          "description": "Trigger identifier if the build was triggered automatically; empty if not."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:containeranalysis/v1beta1:BuildProvenanceResponse": {
      "description": "Provenance of a build. Contains all information needed to verify the full details about the build from source to completion.",
      "properties": {
        "buildOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details."
        },
        "builderVersion": {
          "type": "string",
          "description": "Version string of the builder at the time this build was executed."
        },
        "builtArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ArtifactResponse"
          },
          "description": "Output of the build."
        },
        "commands": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CommandResponse"
          },
          "description": "Commands requested by the build."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the build was created."
        },
        "creator": {
          "type": "string",
          "description": "E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the time the build was initiated; this address may not represent the same end-user for all time."
        },
        "endTime": {
          "type": "string",
          "description": "Time at which execution of the build was finished."
        },
        "logsUri": {
          "type": "string",
          "description": "URI where any logs for this provenance were written."
        },
        "project": {
          "type": "string",
          "description": "ID of the project."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SourceResponse",
          "description": "Details of the Source input to the build."
        },
        "startTime": {
          "type": "string",
          "description": "Time at which execution of the build was started."
        },
        "triggerId": {
          "type": "string",
          "description": "Trigger identifier if the build was triggered automatically; empty if not."
        }
      },
      "type": "object",
      "required": [
        "buildOptions",
        "builderVersion",
        "builtArtifacts",
        "commands",
        "createTime",
        "creator",
        "endTime",
        "logsUri",
        "project",
        "sourceProvenance",
        "startTime",
        "triggerId"
      ]
    },
    "google-native:containeranalysis/v1beta1:BuildResponse": {
      "description": "Note holding the version of the provider's builder and the signature of the provenance message in the build details occurrence.",
      "properties": {
        "builderVersion": {
          "type": "string",
          "description": "Immutable. Version of the builder which produced this build."
        },
        "signature": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildSignatureResponse",
          "description": "Signature of the build in occurrences pointing to this build note containing build details."
        }
      },
      "type": "object",
      "required": [
        "builderVersion",
        "signature"
      ]
    },
    "google-native:containeranalysis/v1beta1:BuildSignature": {
      "description": "Message encapsulating the signature of the verified build.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service)."
        },
        "keyType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildSignatureKeyType",
          "description": "The type of the key, either stored in `public_key` or referenced in `key_id`."
        },
        "publicKey": {
          "type": "string",
          "description": "Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`"
        },
        "signature": {
          "type": "string",
          "description": "Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded."
        }
      },
      "type": "object",
      "required": [
        "signature"
      ]
    },
    "google-native:containeranalysis/v1beta1:BuildSignatureKeyType": {
      "description": "The type of the key, either stored in `public_key` or referenced in `key_id`.",
      "type": "string",
      "enum": [
        {
          "name": "KeyTypeUnspecified",
          "description": "`KeyType` is not set.",
          "value": "KEY_TYPE_UNSPECIFIED"
        },
        {
          "name": "PgpAsciiArmored",
          "description": "`PGP ASCII Armored` public key.",
          "value": "PGP_ASCII_ARMORED"
        },
        {
          "name": "PkixPem",
          "description": "`PKIX PEM` public key.",
          "value": "PKIX_PEM"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:BuildSignatureResponse": {
      "description": "Message encapsulating the signature of the verified build.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service)."
        },
        "keyType": {
          "type": "string",
          "description": "The type of the key, either stored in `public_key` or referenced in `key_id`."
        },
        "publicKey": {
          "type": "string",
          "description": "Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`"
        },
        "signature": {
          "type": "string",
          "description": "Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded."
        }
      },
      "type": "object",
      "required": [
        "keyId",
        "keyType",
        "publicKey",
        "signature"
      ]
    },
    "google-native:containeranalysis/v1beta1:ByProducts": {
      "description": "Defines an object for the byproducts field in in-toto links. The suggested fields are \"stderr\", \"stdout\", and \"return-value\".",
      "properties": {
        "customValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ByProductsResponse": {
      "description": "Defines an object for the byproducts field in in-toto links. The suggested fields are \"stderr\", \"stdout\", and \"return-value\".",
      "properties": {
        "customValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "customValues"
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSS": {
      "description": "Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator",
      "properties": {
        "attackComplexity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSAttackComplexity",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "attackVector": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSAttackVector",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. Defined in CVSS v3, CVSS v2"
        },
        "authentication": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSAuthentication",
          "description": "Defined in CVSS v2"
        },
        "availabilityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSAvailabilityImpact",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSConfidentialityImpact",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSIntegrityImpact",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "privilegesRequired": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSPrivilegesRequired",
          "description": "Defined in CVSS v3"
        },
        "scope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSScope",
          "description": "Defined in CVSS v3"
        },
        "userInteraction": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSUserInteraction",
          "description": "Defined in CVSS v3"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:CVSSAttackComplexity": {
      "description": "Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "AttackComplexityUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_COMPLEXITY_UNSPECIFIED"
        },
        {
          "name": "AttackComplexityLow",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_COMPLEXITY_LOW"
        },
        {
          "name": "AttackComplexityHigh",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_COMPLEXITY_HIGH"
        },
        {
          "name": "AttackComplexityMedium",
          "description": "Defined in CVSS v2",
          "value": "ATTACK_COMPLEXITY_MEDIUM"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSAttackVector": {
      "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "AttackVectorUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_VECTOR_UNSPECIFIED"
        },
        {
          "name": "AttackVectorNetwork",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_VECTOR_NETWORK"
        },
        {
          "name": "AttackVectorAdjacent",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_VECTOR_ADJACENT"
        },
        {
          "name": "AttackVectorLocal",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "ATTACK_VECTOR_LOCAL"
        },
        {
          "name": "AttackVectorPhysical",
          "description": "Defined in CVSS v3",
          "value": "ATTACK_VECTOR_PHYSICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSAuthentication": {
      "description": "Defined in CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "AuthenticationUnspecified",
          "description": "Defined in CVSS v2",
          "value": "AUTHENTICATION_UNSPECIFIED"
        },
        {
          "name": "AuthenticationMultiple",
          "description": "Defined in CVSS v2",
          "value": "AUTHENTICATION_MULTIPLE"
        },
        {
          "name": "AuthenticationSingle",
          "description": "Defined in CVSS v2",
          "value": "AUTHENTICATION_SINGLE"
        },
        {
          "name": "AuthenticationNone",
          "description": "Defined in CVSS v2",
          "value": "AUTHENTICATION_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSAvailabilityImpact": {
      "description": "Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSConfidentialityImpact": {
      "description": "Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSIntegrityImpact": {
      "description": "Defined in CVSS v3, CVSS v2",
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "description": "Defined in CVSS v3",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "description": "Defined in CVSS v3, CVSS v2",
          "value": "IMPACT_NONE"
        },
        {
          "name": "ImpactPartial",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_PARTIAL"
        },
        {
          "name": "ImpactComplete",
          "description": "Defined in CVSS v2",
          "value": "IMPACT_COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSPrivilegesRequired": {
      "description": "Defined in CVSS v3",
      "type": "string",
      "enum": [
        {
          "name": "PrivilegesRequiredUnspecified",
          "description": "Defined in CVSS v3",
          "value": "PRIVILEGES_REQUIRED_UNSPECIFIED"
        },
        {
          "name": "PrivilegesRequiredNone",
          "description": "Defined in CVSS v3",
          "value": "PRIVILEGES_REQUIRED_NONE"
        },
        {
          "name": "PrivilegesRequiredLow",
          "description": "Defined in CVSS v3",
          "value": "PRIVILEGES_REQUIRED_LOW"
        },
        {
          "name": "PrivilegesRequiredHigh",
          "description": "Defined in CVSS v3",
          "value": "PRIVILEGES_REQUIRED_HIGH"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSResponse": {
      "description": "Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator",
      "properties": {
        "attackComplexity": {
          "type": "string",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "attackVector": {
          "type": "string",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. Defined in CVSS v3, CVSS v2"
        },
        "authentication": {
          "type": "string",
          "description": "Defined in CVSS v2"
        },
        "availabilityImpact": {
          "type": "string",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "type": "string",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "type": "string",
          "description": "Defined in CVSS v3, CVSS v2"
        },
        "privilegesRequired": {
          "type": "string",
          "description": "Defined in CVSS v3"
        },
        "scope": {
          "type": "string",
          "description": "Defined in CVSS v3"
        },
        "userInteraction": {
          "type": "string",
          "description": "Defined in CVSS v3"
        }
      },
      "type": "object",
      "required": [
        "attackComplexity",
        "attackVector",
        "authentication",
        "availabilityImpact",
        "baseScore",
        "confidentialityImpact",
        "exploitabilityScore",
        "impactScore",
        "integrityImpact",
        "privilegesRequired",
        "scope",
        "userInteraction"
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSScope": {
      "description": "Defined in CVSS v3",
      "type": "string",
      "enum": [
        {
          "name": "ScopeUnspecified",
          "description": "Defined in CVSS v3",
          "value": "SCOPE_UNSPECIFIED"
        },
        {
          "name": "ScopeUnchanged",
          "description": "Defined in CVSS v3",
          "value": "SCOPE_UNCHANGED"
        },
        {
          "name": "ScopeChanged",
          "description": "Defined in CVSS v3",
          "value": "SCOPE_CHANGED"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSUserInteraction": {
      "description": "Defined in CVSS v3",
      "type": "string",
      "enum": [
        {
          "name": "UserInteractionUnspecified",
          "description": "Defined in CVSS v3",
          "value": "USER_INTERACTION_UNSPECIFIED"
        },
        {
          "name": "UserInteractionNone",
          "description": "Defined in CVSS v3",
          "value": "USER_INTERACTION_NONE"
        },
        {
          "name": "UserInteractionRequired",
          "description": "Defined in CVSS v3",
          "value": "USER_INTERACTION_REQUIRED"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3": {
      "description": "Deprecated. Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document",
      "properties": {
        "attackComplexity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3AttackComplexity"
        },
        "attackVector": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3AttackVector",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments."
        },
        "availabilityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3AvailabilityImpact"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3ConfidentialityImpact"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3IntegrityImpact"
        },
        "privilegesRequired": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3PrivilegesRequired"
        },
        "scope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3Scope"
        },
        "userInteraction": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3UserInteraction"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:CVSSv3AttackComplexity": {
      "type": "string",
      "enum": [
        {
          "name": "AttackComplexityUnspecified",
          "value": "ATTACK_COMPLEXITY_UNSPECIFIED"
        },
        {
          "name": "AttackComplexityLow",
          "value": "ATTACK_COMPLEXITY_LOW"
        },
        {
          "name": "AttackComplexityHigh",
          "value": "ATTACK_COMPLEXITY_HIGH"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3AttackVector": {
      "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments.",
      "type": "string",
      "enum": [
        {
          "name": "AttackVectorUnspecified",
          "value": "ATTACK_VECTOR_UNSPECIFIED"
        },
        {
          "name": "AttackVectorNetwork",
          "value": "ATTACK_VECTOR_NETWORK"
        },
        {
          "name": "AttackVectorAdjacent",
          "value": "ATTACK_VECTOR_ADJACENT"
        },
        {
          "name": "AttackVectorLocal",
          "value": "ATTACK_VECTOR_LOCAL"
        },
        {
          "name": "AttackVectorPhysical",
          "value": "ATTACK_VECTOR_PHYSICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3AvailabilityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3ConfidentialityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3IntegrityImpact": {
      "type": "string",
      "enum": [
        {
          "name": "ImpactUnspecified",
          "value": "IMPACT_UNSPECIFIED"
        },
        {
          "name": "ImpactHigh",
          "value": "IMPACT_HIGH"
        },
        {
          "name": "ImpactLow",
          "value": "IMPACT_LOW"
        },
        {
          "name": "ImpactNone",
          "value": "IMPACT_NONE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3PrivilegesRequired": {
      "type": "string",
      "enum": [
        {
          "name": "PrivilegesRequiredUnspecified",
          "value": "PRIVILEGES_REQUIRED_UNSPECIFIED"
        },
        {
          "name": "PrivilegesRequiredNone",
          "value": "PRIVILEGES_REQUIRED_NONE"
        },
        {
          "name": "PrivilegesRequiredLow",
          "value": "PRIVILEGES_REQUIRED_LOW"
        },
        {
          "name": "PrivilegesRequiredHigh",
          "value": "PRIVILEGES_REQUIRED_HIGH"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3Response": {
      "description": "Deprecated. Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document",
      "properties": {
        "attackComplexity": {
          "type": "string"
        },
        "attackVector": {
          "type": "string",
          "description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments."
        },
        "availabilityImpact": {
          "type": "string"
        },
        "baseScore": {
          "type": "number",
          "description": "The base score is a function of the base metric scores."
        },
        "confidentialityImpact": {
          "type": "string"
        },
        "exploitabilityScore": {
          "type": "number"
        },
        "impactScore": {
          "type": "number"
        },
        "integrityImpact": {
          "type": "string"
        },
        "privilegesRequired": {
          "type": "string"
        },
        "scope": {
          "type": "string"
        },
        "userInteraction": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "attackComplexity",
        "attackVector",
        "availabilityImpact",
        "baseScore",
        "confidentialityImpact",
        "exploitabilityScore",
        "impactScore",
        "integrityImpact",
        "privilegesRequired",
        "scope",
        "userInteraction"
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3Scope": {
      "type": "string",
      "enum": [
        {
          "name": "ScopeUnspecified",
          "value": "SCOPE_UNSPECIFIED"
        },
        {
          "name": "ScopeUnchanged",
          "value": "SCOPE_UNCHANGED"
        },
        {
          "name": "ScopeChanged",
          "value": "SCOPE_CHANGED"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CVSSv3UserInteraction": {
      "type": "string",
      "enum": [
        {
          "name": "UserInteractionUnspecified",
          "value": "USER_INTERACTION_UNSPECIFIED"
        },
        {
          "name": "UserInteractionNone",
          "value": "USER_INTERACTION_NONE"
        },
        {
          "name": "UserInteractionRequired",
          "value": "USER_INTERACTION_REQUIRED"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:CloudRepoSourceContext": {
      "description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AliasContext",
          "description": "An alias, which may be a branch or tag."
        },
        "repoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RepoId",
          "description": "The ID of the repo."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision ID."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:CloudRepoSourceContextResponse": {
      "description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AliasContextResponse",
          "description": "An alias, which may be a branch or tag."
        },
        "repoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RepoIdResponse",
          "description": "The ID of the repo."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision ID."
        }
      },
      "type": "object",
      "required": [
        "aliasContext",
        "repoId",
        "revisionId"
      ]
    },
    "google-native:containeranalysis/v1beta1:Command": {
      "description": "Command describes a step performed as part of the build pipeline.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command-line arguments used when executing this command."
        },
        "dir": {
          "type": "string",
          "description": "Working directory (relative to project source root) used when running this command."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Environment variables set before running this command."
        },
        "id": {
          "type": "string",
          "description": "Optional unique identifier for this command, used in wait_for to reference this command as a dependency."
        },
        "name": {
          "type": "string",
          "description": "Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`."
        },
        "waitFor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID(s) of the command(s) that this command depends on."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:containeranalysis/v1beta1:CommandResponse": {
      "description": "Command describes a step performed as part of the build pipeline.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command-line arguments used when executing this command."
        },
        "dir": {
          "type": "string",
          "description": "Working directory (relative to project source root) used when running this command."
        },
        "env": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Environment variables set before running this command."
        },
        "name": {
          "type": "string",
          "description": "Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`."
        },
        "waitFor": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID(s) of the command(s) that this command depends on."
        }
      },
      "type": "object",
      "required": [
        "args",
        "dir",
        "env",
        "name",
        "waitFor"
      ]
    },
    "google-native:containeranalysis/v1beta1:Deployable": {
      "description": "An artifact that can be deployed in some runtime.",
      "properties": {
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed."
        }
      },
      "type": "object",
      "required": [
        "resourceUri"
      ]
    },
    "google-native:containeranalysis/v1beta1:DeployableResponse": {
      "description": "An artifact that can be deployed in some runtime.",
      "properties": {
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed."
        }
      },
      "type": "object",
      "required": [
        "resourceUri"
      ]
    },
    "google-native:containeranalysis/v1beta1:Deployment": {
      "description": "The period during which some deployable was active in a runtime.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Address of the runtime element hosting this deployment."
        },
        "config": {
          "type": "string",
          "description": "Configuration used to create this deployment."
        },
        "deployTime": {
          "type": "string",
          "description": "Beginning of the lifetime of this deployment."
        },
        "platform": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DeploymentPlatform",
          "description": "Platform hosting this deployment."
        },
        "undeployTime": {
          "type": "string",
          "description": "End of the lifetime of this deployment."
        },
        "userEmail": {
          "type": "string",
          "description": "Identity of the user that triggered this deployment."
        }
      },
      "type": "object",
      "required": [
        "deployTime"
      ]
    },
    "google-native:containeranalysis/v1beta1:DeploymentPlatform": {
      "description": "Platform hosting this deployment.",
      "type": "string",
      "enum": [
        {
          "name": "PlatformUnspecified",
          "description": "Unknown.",
          "value": "PLATFORM_UNSPECIFIED"
        },
        {
          "name": "Gke",
          "description": "Google Container Engine.",
          "value": "GKE"
        },
        {
          "name": "Flex",
          "description": "Google App Engine: Flexible Environment.",
          "value": "FLEX"
        },
        {
          "name": "Custom",
          "description": "Custom user-defined platform.",
          "value": "CUSTOM"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:DeploymentResponse": {
      "description": "The period during which some deployable was active in a runtime.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Address of the runtime element hosting this deployment."
        },
        "config": {
          "type": "string",
          "description": "Configuration used to create this deployment."
        },
        "deployTime": {
          "type": "string",
          "description": "Beginning of the lifetime of this deployment."
        },
        "platform": {
          "type": "string",
          "description": "Platform hosting this deployment."
        },
        "resourceUri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource URI for the artifact being deployed taken from the deployable field with the same name."
        },
        "undeployTime": {
          "type": "string",
          "description": "End of the lifetime of this deployment."
        },
        "userEmail": {
          "type": "string",
          "description": "Identity of the user that triggered this deployment."
        }
      },
      "type": "object",
      "required": [
        "address",
        "config",
        "deployTime",
        "platform",
        "resourceUri",
        "undeployTime",
        "userEmail"
      ]
    },
    "google-native:containeranalysis/v1beta1:Derived": {
      "description": "Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM .",
      "properties": {
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Fingerprint",
          "description": "The fingerprint of the derived image."
        },
        "layerInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Layer"
          },
          "description": "This contains layer-specific metadata, if populated it has length \"distance\" and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer."
        }
      },
      "type": "object",
      "required": [
        "fingerprint"
      ]
    },
    "google-native:containeranalysis/v1beta1:DerivedResponse": {
      "description": "Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM .",
      "properties": {
        "baseResourceUrl": {
          "type": "string",
          "description": "This contains the base image URL for the derived image occurrence."
        },
        "distance": {
          "type": "integer",
          "description": "The number of layers by which this image differs from the associated image basis."
        },
        "fingerprint": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FingerprintResponse",
          "description": "The fingerprint of the derived image."
        },
        "layerInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LayerResponse"
          },
          "description": "This contains layer-specific metadata, if populated it has length \"distance\" and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer."
        }
      },
      "type": "object",
      "required": [
        "baseResourceUrl",
        "distance",
        "fingerprint",
        "layerInfo"
      ]
    },
    "google-native:containeranalysis/v1beta1:Detail": {
      "description": "Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar."
        },
        "description": {
          "type": "string",
          "description": "A vendor-specific description of this note."
        },
        "fixedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityLocation",
          "description": "The fix for this specific package version."
        },
        "isObsolete": {
          "type": "boolean",
          "description": "Whether this detail is obsolete. Occurrences are expected not to point to obsolete details."
        },
        "maxAffectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Version",
          "description": "The max version of the package in which the vulnerability exists."
        },
        "minAffectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Version",
          "description": "The min version of the package in which the vulnerability exists."
        },
        "package": {
          "type": "string",
          "description": "The name of the package where the vulnerability was found."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native(ruby gems, node.js packages etc)."
        },
        "severityName": {
          "type": "string",
          "description": "The severity (eg: distro assigned severity) for this vulnerability."
        },
        "source": {
          "type": "string",
          "description": "The source from which the information in this Detail was obtained."
        },
        "sourceUpdateTime": {
          "type": "string",
          "description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker."
        },
        "vendor": {
          "type": "string",
          "description": "The name of the vendor of the product."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "package"
      ]
    },
    "google-native:containeranalysis/v1beta1:DetailResponse": {
      "description": "Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar."
        },
        "description": {
          "type": "string",
          "description": "A vendor-specific description of this note."
        },
        "fixedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityLocationResponse",
          "description": "The fix for this specific package version."
        },
        "isObsolete": {
          "type": "boolean",
          "description": "Whether this detail is obsolete. Occurrences are expected not to point to obsolete details."
        },
        "maxAffectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VersionResponse",
          "description": "The max version of the package in which the vulnerability exists."
        },
        "minAffectedVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VersionResponse",
          "description": "The min version of the package in which the vulnerability exists."
        },
        "package": {
          "type": "string",
          "description": "The name of the package where the vulnerability was found."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native(ruby gems, node.js packages etc)."
        },
        "severityName": {
          "type": "string",
          "description": "The severity (eg: distro assigned severity) for this vulnerability."
        },
        "source": {
          "type": "string",
          "description": "The source from which the information in this Detail was obtained."
        },
        "sourceUpdateTime": {
          "type": "string",
          "description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker."
        },
        "vendor": {
          "type": "string",
          "description": "The name of the vendor of the product."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "description",
        "fixedLocation",
        "isObsolete",
        "maxAffectedVersion",
        "minAffectedVersion",
        "package",
        "packageType",
        "severityName",
        "source",
        "sourceUpdateTime",
        "vendor"
      ]
    },
    "google-native:containeranalysis/v1beta1:Details": {
      "description": "Details of an attestation occurrence.",
      "properties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Attestation",
          "description": "Attestation for the resource."
        }
      },
      "type": "object",
      "required": [
        "attestation"
      ]
    },
    "google-native:containeranalysis/v1beta1:DetailsResponse": {
      "description": "Details of an attestation occurrence.",
      "properties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AttestationResponse",
          "description": "Attestation for the resource."
        }
      },
      "type": "object",
      "required": [
        "attestation"
      ]
    },
    "google-native:containeranalysis/v1beta1:Digest": {
      "description": "Digest information.",
      "properties": {
        "algo": {
          "type": "string",
          "description": "`SHA1`, `SHA512` etc."
        },
        "digestBytes": {
          "type": "string",
          "description": "Value of the digest."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:DigestResponse": {
      "description": "Digest information.",
      "properties": {
        "algo": {
          "type": "string",
          "description": "`SHA1`, `SHA512` etc."
        },
        "digestBytes": {
          "type": "string",
          "description": "Value of the digest."
        }
      },
      "type": "object",
      "required": [
        "algo",
        "digestBytes"
      ]
    },
    "google-native:containeranalysis/v1beta1:Discovered": {
      "description": "Provides information about the analysis status of a discovered resource.",
      "properties": {
        "analysisCompleted": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AnalysisCompleted"
        },
        "analysisError": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Status"
          },
          "description": "Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors."
        },
        "analysisStatus": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DiscoveredAnalysisStatus",
          "description": "The status of discovery for the resource."
        },
        "analysisStatusError": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Status",
          "description": "When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage is output only and populated by the API."
        },
        "continuousAnalysis": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DiscoveredContinuousAnalysis",
          "description": "Whether the resource is continuously analyzed."
        },
        "lastAnalysisTime": {
          "type": "string",
          "description": "The last time continuous analysis was done for this resource. Deprecated, do not use.",
          "deprecationMessage": "The last time continuous analysis was done for this resource. Deprecated, do not use."
        },
        "lastScanTime": {
          "type": "string",
          "description": "The last time this resource was scanned."
        },
        "sbomStatus": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMStatus",
          "description": "The status of an SBOM generation."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:DiscoveredAnalysisStatus": {
      "description": "The status of discovery for the resource.",
      "type": "string",
      "enum": [
        {
          "name": "AnalysisStatusUnspecified",
          "description": "Unknown.",
          "value": "ANALYSIS_STATUS_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "Resource is known but no action has been taken yet.",
          "value": "PENDING"
        },
        {
          "name": "Scanning",
          "description": "Resource is being analyzed.",
          "value": "SCANNING"
        },
        {
          "name": "FinishedSuccess",
          "description": "Analysis has finished successfully.",
          "value": "FINISHED_SUCCESS"
        },
        {
          "name": "Complete",
          "description": "Analysis has completed.",
          "value": "COMPLETE"
        },
        {
          "name": "FinishedFailed",
          "description": "Analysis has finished unsuccessfully, the analysis itself is in a bad state.",
          "value": "FINISHED_FAILED"
        },
        {
          "name": "FinishedUnsupported",
          "description": "The resource is known not to be supported",
          "value": "FINISHED_UNSUPPORTED"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:DiscoveredContinuousAnalysis": {
      "description": "Whether the resource is continuously analyzed.",
      "type": "string",
      "enum": [
        {
          "name": "ContinuousAnalysisUnspecified",
          "description": "Unknown.",
          "value": "CONTINUOUS_ANALYSIS_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "The resource is continuously analyzed.",
          "value": "ACTIVE"
        },
        {
          "name": "Inactive",
          "description": "The resource is ignored for continuous analysis.",
          "value": "INACTIVE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:DiscoveredResponse": {
      "description": "Provides information about the analysis status of a discovered resource.",
      "properties": {
        "analysisCompleted": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AnalysisCompletedResponse"
        },
        "analysisError": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:StatusResponse"
          },
          "description": "Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors."
        },
        "analysisStatus": {
          "type": "string",
          "description": "The status of discovery for the resource."
        },
        "analysisStatusError": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:StatusResponse",
          "description": "When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage is output only and populated by the API."
        },
        "continuousAnalysis": {
          "type": "string",
          "description": "Whether the resource is continuously analyzed."
        },
        "lastAnalysisTime": {
          "type": "string",
          "description": "The last time continuous analysis was done for this resource. Deprecated, do not use.",
          "deprecationMessage": "The last time continuous analysis was done for this resource. Deprecated, do not use."
        },
        "lastScanTime": {
          "type": "string",
          "description": "The last time this resource was scanned."
        },
        "sbomStatus": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMStatusResponse",
          "description": "The status of an SBOM generation."
        }
      },
      "type": "object",
      "required": [
        "analysisCompleted",
        "analysisError",
        "analysisStatus",
        "analysisStatusError",
        "continuousAnalysis",
        "lastAnalysisTime",
        "lastScanTime",
        "sbomStatus"
      ]
    },
    "google-native:containeranalysis/v1beta1:Discovery": {
      "description": "A note that indicates a type of analysis a provider would perform. This note exists in a provider's project. A `Discovery` occurrence is created in a consumer's project at the start of analysis.",
      "properties": {
        "analysisKind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DiscoveryAnalysisKind",
          "description": "Immutable. The kind of analysis that is handled by this discovery."
        }
      },
      "type": "object",
      "required": [
        "analysisKind"
      ]
    },
    "google-native:containeranalysis/v1beta1:DiscoveryAnalysisKind": {
      "description": "Required. Immutable. The kind of analysis that is handled by this discovery.",
      "type": "string",
      "enum": [
        {
          "name": "NoteKindUnspecified",
          "description": "Default value. This value is unused.",
          "value": "NOTE_KIND_UNSPECIFIED"
        },
        {
          "name": "Vulnerability",
          "description": "The note and occurrence represent a package vulnerability.",
          "value": "VULNERABILITY"
        },
        {
          "name": "Build",
          "description": "The note and occurrence assert build provenance.",
          "value": "BUILD"
        },
        {
          "name": "Image",
          "description": "This represents an image basis relationship.",
          "value": "IMAGE"
        },
        {
          "name": "Package",
          "description": "This represents a package installed via a package manager.",
          "value": "PACKAGE"
        },
        {
          "name": "Deployment",
          "description": "The note and occurrence track deployment events.",
          "value": "DEPLOYMENT"
        },
        {
          "name": "Discovery",
          "description": "The note and occurrence track the initial discovery status of a resource.",
          "value": "DISCOVERY"
        },
        {
          "name": "Attestation",
          "description": "This represents a logical \"role\" that can attest to artifacts.",
          "value": "ATTESTATION"
        },
        {
          "name": "Intoto",
          "description": "This represents an in-toto link.",
          "value": "INTOTO"
        },
        {
          "name": "Sbom",
          "description": "This represents a software bill of materials.",
          "value": "SBOM"
        },
        {
          "name": "SpdxPackage",
          "description": "This represents an SPDX Package.",
          "value": "SPDX_PACKAGE"
        },
        {
          "name": "SpdxFile",
          "description": "This represents an SPDX File.",
          "value": "SPDX_FILE"
        },
        {
          "name": "SpdxRelationship",
          "description": "This represents an SPDX Relationship.",
          "value": "SPDX_RELATIONSHIP"
        },
        {
          "name": "VulnerabilityAssessment",
          "description": "This represents a Vulnerability Assessment.",
          "value": "VULNERABILITY_ASSESSMENT"
        },
        {
          "name": "SbomReference",
          "description": "This represents an SBOM Reference.",
          "value": "SBOM_REFERENCE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:DiscoveryResponse": {
      "description": "A note that indicates a type of analysis a provider would perform. This note exists in a provider's project. A `Discovery` occurrence is created in a consumer's project at the start of analysis.",
      "properties": {
        "analysisKind": {
          "type": "string",
          "description": "Immutable. The kind of analysis that is handled by this discovery."
        }
      },
      "type": "object",
      "required": [
        "analysisKind"
      ]
    },
    "google-native:containeranalysis/v1beta1:Distribution": {
      "description": "This represents a particular channel of distribution for a given package. E.g., Debian's jessie-backports dpkg mirror.",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DistributionArchitecture",
          "description": "The CPU architecture for which packages in this distribution channel were built."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "description": {
          "type": "string",
          "description": "The distribution channel-specific description of this package."
        },
        "latestVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Version",
          "description": "The latest available version of this package in this distribution channel."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform string denoting the maintainer of this package."
        },
        "url": {
          "type": "string",
          "description": "The distribution channel-specific homepage for this package."
        }
      },
      "type": "object",
      "required": [
        "cpeUri"
      ]
    },
    "google-native:containeranalysis/v1beta1:DistributionArchitecture": {
      "description": "The CPU architecture for which packages in this distribution channel were built.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Unknown architecture.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "X86",
          "description": "X86 architecture.",
          "value": "X86"
        },
        {
          "name": "X64",
          "description": "X64 architecture.",
          "value": "X64"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:DistributionResponse": {
      "description": "This represents a particular channel of distribution for a given package. E.g., Debian's jessie-backports dpkg mirror.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "description": {
          "type": "string",
          "description": "The distribution channel-specific description of this package."
        },
        "latestVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VersionResponse",
          "description": "The latest available version of this package in this distribution channel."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform string denoting the maintainer of this package."
        },
        "url": {
          "type": "string",
          "description": "The distribution channel-specific homepage for this package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "description",
        "latestVersion",
        "maintainer",
        "url"
      ]
    },
    "google-native:containeranalysis/v1beta1:DocumentNote": {
      "description": "DocumentNote represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
      "properties": {
        "dataLicence": {
          "type": "string",
          "description": "Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such fields (\"SPDX-Metadata\")"
        },
        "spdxVersion": {
          "type": "string",
          "description": "Provide a reference number that can be used to understand how to parse and interpret the rest of the file"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:DocumentNoteResponse": {
      "description": "DocumentNote represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
      "properties": {
        "dataLicence": {
          "type": "string",
          "description": "Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such fields (\"SPDX-Metadata\")"
        },
        "spdxVersion": {
          "type": "string",
          "description": "Provide a reference number that can be used to understand how to parse and interpret the rest of the file"
        }
      },
      "type": "object",
      "required": [
        "dataLicence",
        "spdxVersion"
      ]
    },
    "google-native:containeranalysis/v1beta1:DocumentOccurrence": {
      "description": "DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard"
        },
        "creatorComment": {
          "type": "string",
          "description": "A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields"
        },
        "creators": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person's name"
        },
        "documentComment": {
          "type": "string",
          "description": "A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document"
        },
        "externalDocumentRefs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identify any external SPDX documents referenced within this SPDX document"
        },
        "id": {
          "type": "string",
          "description": "Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally"
        },
        "licenseListVersion": {
          "type": "string",
          "description": "A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created"
        },
        "namespace": {
          "type": "string",
          "description": "Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter"
        },
        "title": {
          "type": "string",
          "description": "Identify name of this document as designated by creator"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:DocumentOccurrenceResponse": {
      "description": "DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard"
        },
        "creatorComment": {
          "type": "string",
          "description": "A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields"
        },
        "creators": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person's name"
        },
        "documentComment": {
          "type": "string",
          "description": "A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document"
        },
        "externalDocumentRefs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identify any external SPDX documents referenced within this SPDX document"
        },
        "licenseListVersion": {
          "type": "string",
          "description": "A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created"
        },
        "namespace": {
          "type": "string",
          "description": "Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter"
        },
        "title": {
          "type": "string",
          "description": "Identify name of this document as designated by creator"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "creatorComment",
        "creators",
        "documentComment",
        "externalDocumentRefs",
        "licenseListVersion",
        "namespace",
        "title"
      ]
    },
    "google-native:containeranalysis/v1beta1:Envelope": {
      "description": "MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type.",
      "properties": {
        "payload": {
          "type": "string"
        },
        "payloadType": {
          "type": "string"
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:EnvelopeSignature"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:EnvelopeResponse": {
      "description": "MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type.",
      "properties": {
        "payload": {
          "type": "string"
        },
        "payloadType": {
          "type": "string"
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:EnvelopeSignatureResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "payload",
        "payloadType",
        "signatures"
      ]
    },
    "google-native:containeranalysis/v1beta1:EnvelopeSignature": {
      "properties": {
        "keyid": {
          "type": "string"
        },
        "sig": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:EnvelopeSignatureResponse": {
      "properties": {
        "keyid": {
          "type": "string"
        },
        "sig": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "keyid",
        "sig"
      ]
    },
    "google-native:containeranalysis/v1beta1:Environment": {
      "description": "Defines an object for the environment field in in-toto links. The suggested fields are \"variables\", \"filesystem\", and \"workdir\".",
      "properties": {
        "customValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:EnvironmentResponse": {
      "description": "Defines an object for the environment field in in-toto links. The suggested fields are \"variables\", \"filesystem\", and \"workdir\".",
      "properties": {
        "customValues": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "customValues"
      ]
    },
    "google-native:containeranalysis/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:containeranalysis/v1beta1:ExternalRef": {
      "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package",
      "properties": {
        "category": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ExternalRefCategory",
          "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package"
        },
        "comment": {
          "type": "string",
          "description": "Human-readable information about the purpose and target of the reference"
        },
        "locator": {
          "type": "string",
          "description": "The unique string with no spaces necessary to access the package-specific information, metadata, or content within the target location"
        },
        "type": {
          "type": "string",
          "description": "Type of category (e.g. 'npm' for the PACKAGE_MANAGER category)"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ExternalRefCategory": {
      "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package",
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "description": "Unspecified",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "Security",
          "description": "Security (e.g. cpe22Type, cpe23Type)",
          "value": "SECURITY"
        },
        {
          "name": "PackageManager",
          "description": "Package Manager (e.g. maven-central, npm, nuget, bower, purl)",
          "value": "PACKAGE_MANAGER"
        },
        {
          "name": "PersistentId",
          "description": "Persistent-Id (e.g. swh)",
          "value": "PERSISTENT_ID"
        },
        {
          "name": "Other",
          "description": "Other",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:ExternalRefResponse": {
      "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package",
      "properties": {
        "category": {
          "type": "string",
          "description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package"
        },
        "comment": {
          "type": "string",
          "description": "Human-readable information about the purpose and target of the reference"
        },
        "locator": {
          "type": "string",
          "description": "The unique string with no spaces necessary to access the package-specific information, metadata, or content within the target location"
        },
        "type": {
          "type": "string",
          "description": "Type of category (e.g. 'npm' for the PACKAGE_MANAGER category)"
        }
      },
      "type": "object",
      "required": [
        "category",
        "comment",
        "locator",
        "type"
      ]
    },
    "google-native:containeranalysis/v1beta1:FileNote": {
      "description": "FileNote represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
      "properties": {
        "checksum": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provide a unique identifier to match analysis information on each specific file in a package"
        },
        "fileType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FileNoteFileType",
          "description": "This field provides information about the type of file identified"
        },
        "title": {
          "type": "string",
          "description": "Identify the full path and filename that corresponds to the file information in this section"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:FileNoteFileType": {
      "description": "This field provides information about the type of file identified",
      "type": "string",
      "enum": [
        {
          "name": "FileTypeUnspecified",
          "description": "Unspecified",
          "value": "FILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Source",
          "description": "The file is human readable source code (.c, .html, etc.)",
          "value": "SOURCE"
        },
        {
          "name": "Binary",
          "description": "The file is a compiled object, target image or binary executable (.o, .a, etc.)",
          "value": "BINARY"
        },
        {
          "name": "Archive",
          "description": "The file represents an archive (.tar, .jar, etc.)",
          "value": "ARCHIVE"
        },
        {
          "name": "Application",
          "description": "The file is associated with a specific application type (MIME type of application/*)",
          "value": "APPLICATION"
        },
        {
          "name": "Audio",
          "description": "The file is associated with an audio file (MIME type of audio/* , e.g. .mp3)",
          "value": "AUDIO"
        },
        {
          "name": "Image",
          "description": "The file is associated with an picture image file (MIME type of image/*, e.g., .jpg, .gif)",
          "value": "IMAGE"
        },
        {
          "name": "Text",
          "description": "The file is human readable text file (MIME type of text/*)",
          "value": "TEXT"
        },
        {
          "name": "Video",
          "description": "The file is associated with a video file type (MIME type of video/*)",
          "value": "VIDEO"
        },
        {
          "name": "Documentation",
          "description": "The file serves as documentation",
          "value": "DOCUMENTATION"
        },
        {
          "name": "Spdx",
          "description": "The file is an SPDX document",
          "value": "SPDX"
        },
        {
          "name": "Other",
          "description": "The file doesn't fit into the above categories (generated artifacts, data files, etc.)",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:FileNoteResponse": {
      "description": "FileNote represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
      "properties": {
        "checksum": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Provide a unique identifier to match analysis information on each specific file in a package"
        },
        "fileType": {
          "type": "string",
          "description": "This field provides information about the type of file identified"
        },
        "title": {
          "type": "string",
          "description": "Identify the full path and filename that corresponds to the file information in this section"
        }
      },
      "type": "object",
      "required": [
        "checksum",
        "fileType",
        "title"
      ]
    },
    "google-native:containeranalysis/v1beta1:FileOccurrence": {
      "description": "FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
      "properties": {
        "attributions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts"
        },
        "comment": {
          "type": "string",
          "description": "This field provides a place for the SPDX file creator to record any general comments about the file"
        },
        "contributors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field provides a place for the SPDX file creator to record file contributors"
        },
        "copyright": {
          "type": "string",
          "description": "Identify the copyright holder of the file, as well as any dates present"
        },
        "filesLicenseInfo": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field contains the license information actually found in the file, if any"
        },
        "id": {
          "type": "string",
          "description": "Uniquely identify any element in an SPDX document which may be referenced by other elements"
        },
        "licenseConcluded": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:License",
          "description": "This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined"
        },
        "notice": {
          "type": "string",
          "description": "This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:FileOccurrenceResponse": {
      "description": "FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
      "properties": {
        "attributions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts"
        },
        "comment": {
          "type": "string",
          "description": "This field provides a place for the SPDX file creator to record any general comments about the file"
        },
        "contributors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field provides a place for the SPDX file creator to record file contributors"
        },
        "copyright": {
          "type": "string",
          "description": "Identify the copyright holder of the file, as well as any dates present"
        },
        "filesLicenseInfo": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field contains the license information actually found in the file, if any"
        },
        "licenseConcluded": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LicenseResponse",
          "description": "This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined"
        },
        "notice": {
          "type": "string",
          "description": "This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file"
        }
      },
      "type": "object",
      "required": [
        "attributions",
        "comment",
        "contributors",
        "copyright",
        "filesLicenseInfo",
        "licenseConcluded",
        "notice"
      ]
    },
    "google-native:containeranalysis/v1beta1:Fingerprint": {
      "description": "A set of properties that uniquely identify a given Docker image.",
      "properties": {
        "v1Name": {
          "type": "string",
          "description": "The layer ID of the final layer in the Docker image's v1 representation."
        },
        "v2Blob": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ordered list of v2 blobs that represent a given image."
        }
      },
      "type": "object",
      "required": [
        "v1Name",
        "v2Blob"
      ]
    },
    "google-native:containeranalysis/v1beta1:FingerprintResponse": {
      "description": "A set of properties that uniquely identify a given Docker image.",
      "properties": {
        "v1Name": {
          "type": "string",
          "description": "The layer ID of the final layer in the Docker image's v1 representation."
        },
        "v2Blob": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ordered list of v2 blobs that represent a given image."
        },
        "v2Name": {
          "type": "string",
          "description": "The name of the image's v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + \" \" + v2_name[N+1]) Only the name of the final blob is kept."
        }
      },
      "type": "object",
      "required": [
        "v1Name",
        "v2Blob",
        "v2Name"
      ]
    },
    "google-native:containeranalysis/v1beta1:GenericSignedAttestation": {
      "description": "An attestation wrapper that uses the Grafeas `Signature` message. This attestation must define the `serialized_payload` that the `signatures` verify and any metadata necessary to interpret that plaintext. The signatures should always be over the `serialized_payload` bytestring.",
      "properties": {
        "contentType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GenericSignedAttestationContentType",
          "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema)."
        },
        "serializedPayload": {
          "type": "string",
          "description": "The serialized payload that is verified by one or more `signatures`. The encoding and semantic meaning of this payload must match what is set in `content_type`."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Signature"
          },
          "description": "One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto for more details on signature structure and verification."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:GenericSignedAttestationContentType": {
      "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).",
      "type": "string",
      "enum": [
        {
          "name": "ContentTypeUnspecified",
          "description": "`ContentType` is not set.",
          "value": "CONTENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "SimpleSigningJson",
          "description": "Atomic format attestation signature. See https://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7/docs/atomic-signature.md The payload extracted in `plaintext` is a JSON blob conforming to the linked schema.",
          "value": "SIMPLE_SIGNING_JSON"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:GenericSignedAttestationResponse": {
      "description": "An attestation wrapper that uses the Grafeas `Signature` message. This attestation must define the `serialized_payload` that the `signatures` verify and any metadata necessary to interpret that plaintext. The signatures should always be over the `serialized_payload` bytestring.",
      "properties": {
        "contentType": {
          "type": "string",
          "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema)."
        },
        "serializedPayload": {
          "type": "string",
          "description": "The serialized payload that is verified by one or more `signatures`. The encoding and semantic meaning of this payload must match what is set in `content_type`."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SignatureResponse"
          },
          "description": "One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto for more details on signature structure and verification."
        }
      },
      "type": "object",
      "required": [
        "contentType",
        "serializedPayload",
        "signatures"
      ]
    },
    "google-native:containeranalysis/v1beta1:GerritSourceContext": {
      "description": "A SourceContext referring to a Gerrit project.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AliasContext",
          "description": "An alias, which may be a branch or tag."
        },
        "gerritProject": {
          "type": "string",
          "description": "The full project name within the host. Projects may be nested, so \"project/subproject\" is a valid project name. The \"repo name\" is the hostURI/project."
        },
        "hostUri": {
          "type": "string",
          "description": "The URI of a running Gerrit instance."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision (commit) ID."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:GerritSourceContextResponse": {
      "description": "A SourceContext referring to a Gerrit project.",
      "properties": {
        "aliasContext": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AliasContextResponse",
          "description": "An alias, which may be a branch or tag."
        },
        "gerritProject": {
          "type": "string",
          "description": "The full project name within the host. Projects may be nested, so \"project/subproject\" is a valid project name. The \"repo name\" is the hostURI/project."
        },
        "hostUri": {
          "type": "string",
          "description": "The URI of a running Gerrit instance."
        },
        "revisionId": {
          "type": "string",
          "description": "A revision (commit) ID."
        }
      },
      "type": "object",
      "required": [
        "aliasContext",
        "gerritProject",
        "hostUri",
        "revisionId"
      ]
    },
    "google-native:containeranalysis/v1beta1:GitSourceContext": {
      "description": "A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).",
      "properties": {
        "revisionId": {
          "type": "string",
          "description": "Git commit hash."
        },
        "url": {
          "type": "string",
          "description": "Git repository URL."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:GitSourceContextResponse": {
      "description": "A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).",
      "properties": {
        "revisionId": {
          "type": "string",
          "description": "Git commit hash."
        },
        "url": {
          "type": "string",
          "description": "Git repository URL."
        }
      },
      "type": "object",
      "required": [
        "revisionId",
        "url"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1BuildDetails": {
      "description": "Details of a build occurrence.",
      "properties": {
        "inTotoSlsaProvenanceV1": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:InTotoSlsaProvenanceV1"
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildProvenance",
          "description": "The actual provenance for the build."
        },
        "provenanceBytes": {
          "type": "string",
          "description": "Serialized JSON representation of the provenance, used in generating the build signature in the corresponding build note. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes."
        }
      },
      "type": "object",
      "required": [
        "provenance"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1BuildDetailsResponse": {
      "description": "Details of a build occurrence.",
      "properties": {
        "inTotoSlsaProvenanceV1": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:InTotoSlsaProvenanceV1Response"
        },
        "provenance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildProvenanceResponse",
          "description": "The actual provenance for the build."
        },
        "provenanceBytes": {
          "type": "string",
          "description": "Serialized JSON representation of the provenance, used in generating the build signature in the corresponding build note. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes."
        }
      },
      "type": "object",
      "required": [
        "inTotoSlsaProvenanceV1",
        "provenance",
        "provenanceBytes"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1DeploymentDetails": {
      "description": "Details of a deployment occurrence.",
      "properties": {
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Deployment",
          "description": "Deployment history for the resource."
        }
      },
      "type": "object",
      "required": [
        "deployment"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1DeploymentDetailsResponse": {
      "description": "Details of a deployment occurrence.",
      "properties": {
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DeploymentResponse",
          "description": "Deployment history for the resource."
        }
      },
      "type": "object",
      "required": [
        "deployment"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1DiscoveryDetails": {
      "description": "Details of a discovery occurrence.",
      "properties": {
        "discovered": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Discovered",
          "description": "Analysis status for the discovered resource."
        }
      },
      "type": "object",
      "required": [
        "discovered"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1DiscoveryDetailsResponse": {
      "description": "Details of a discovery occurrence.",
      "properties": {
        "discovered": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DiscoveredResponse",
          "description": "Analysis status for the discovered resource."
        }
      },
      "type": "object",
      "required": [
        "discovered"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1ImageDetails": {
      "description": "Details of an image occurrence.",
      "properties": {
        "derivedImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Derived",
          "description": "Immutable. The child image derived from the base image."
        }
      },
      "type": "object",
      "required": [
        "derivedImage"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1ImageDetailsResponse": {
      "description": "Details of an image occurrence.",
      "properties": {
        "derivedImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DerivedResponse",
          "description": "Immutable. The child image derived from the base image."
        }
      },
      "type": "object",
      "required": [
        "derivedImage"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1IntotoArtifact": {
      "properties": {
        "hashes": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ArtifactHashes"
        },
        "resourceUri": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1IntotoArtifactResponse": {
      "properties": {
        "hashes": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ArtifactHashesResponse"
        },
        "resourceUri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "hashes",
        "resourceUri"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1IntotoDetails": {
      "description": "This corresponds to a signed in-toto link - it is made up of one or more signatures and the in-toto link itself. This is used for occurrences of a Grafeas in-toto note.",
      "properties": {
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoSignature"
          }
        },
        "signed": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Link"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1IntotoDetailsResponse": {
      "description": "This corresponds to a signed in-toto link - it is made up of one or more signatures and the in-toto link itself. This is used for occurrences of a Grafeas in-toto note.",
      "properties": {
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoSignatureResponse"
          }
        },
        "signed": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LinkResponse"
        }
      },
      "type": "object",
      "required": [
        "signatures",
        "signed"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1IntotoSignature": {
      "description": "A signature object consists of the KeyID used and the signature itself.",
      "properties": {
        "keyid": {
          "type": "string"
        },
        "sig": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1IntotoSignatureResponse": {
      "description": "A signature object consists of the KeyID used and the signature itself.",
      "properties": {
        "keyid": {
          "type": "string"
        },
        "sig": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "keyid",
        "sig"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1PackageDetails": {
      "description": "Details of a package occurrence.",
      "properties": {
        "installation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Installation",
          "description": "Where the package was installed."
        }
      },
      "type": "object",
      "required": [
        "installation"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1PackageDetailsResponse": {
      "description": "Details of a package occurrence.",
      "properties": {
        "installation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:InstallationResponse",
          "description": "Where the package was installed."
        }
      },
      "type": "object",
      "required": [
        "installation"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1VulnerabilityDetails": {
      "description": "Details of a vulnerability Occurrence.",
      "properties": {
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSS",
          "description": "The cvss v2 score for the vulnerability."
        },
        "cvssV3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSS",
          "description": "The cvss v3 score for the vulnerability."
        },
        "effectiveSeverity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1VulnerabilityDetailsEffectiveSeverity",
          "description": "The distro assigned severity for this vulnerability when it is available, and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues."
        },
        "extraDetails": {
          "type": "string",
          "description": "Occurrence-specific extra details about the vulnerability."
        },
        "packageIssue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageIssue"
          },
          "description": "The set of affected locations and their fixes (if available) within the associated resource."
        },
        "type": {
          "type": "string",
          "description": "The type of package; whether native or non native(ruby gems, node.js packages etc)"
        },
        "vexAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VexAssessment"
        }
      },
      "type": "object",
      "required": [
        "packageIssue"
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1VulnerabilityDetailsEffectiveSeverity": {
      "description": "The distro assigned severity for this vulnerability when it is available, and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unknown.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Minimal",
          "description": "Minimal severity.",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Low severity.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium severity.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High severity.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical severity.",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:GrafeasV1beta1VulnerabilityDetailsResponse": {
      "description": "Details of a vulnerability Occurrence.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSResponse",
          "description": "The cvss v2 score for the vulnerability."
        },
        "cvssV3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSResponse",
          "description": "The cvss v3 score for the vulnerability."
        },
        "cvssVersion": {
          "type": "string",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "effectiveSeverity": {
          "type": "string",
          "description": "The distro assigned severity for this vulnerability when it is available, and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues."
        },
        "extraDetails": {
          "type": "string",
          "description": "Occurrence-specific extra details about the vulnerability."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this vulnerability."
        },
        "packageIssue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageIssueResponse"
          },
          "description": "The set of affected locations and their fixes (if available) within the associated resource."
        },
        "relatedUrls": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrlResponse"
          },
          "description": "URLs related to this vulnerability."
        },
        "severity": {
          "type": "string",
          "description": "The note provider assigned Severity of the vulnerability."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this vulnerability."
        },
        "type": {
          "type": "string",
          "description": "The type of package; whether native or non native(ruby gems, node.js packages etc)"
        },
        "vexAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VexAssessmentResponse"
        }
      },
      "type": "object",
      "required": [
        "cvssScore",
        "cvssV2",
        "cvssV3",
        "cvssVersion",
        "effectiveSeverity",
        "extraDetails",
        "longDescription",
        "packageIssue",
        "relatedUrls",
        "severity",
        "shortDescription",
        "type",
        "vexAssessment"
      ]
    },
    "google-native:containeranalysis/v1beta1:Hash": {
      "description": "Container message for hash values.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:HashType",
          "description": "The type of hash that was performed."
        },
        "value": {
          "type": "string",
          "description": "The hash value."
        }
      },
      "type": "object",
      "required": [
        "type",
        "value"
      ]
    },
    "google-native:containeranalysis/v1beta1:HashResponse": {
      "description": "Container message for hash values.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of hash that was performed."
        },
        "value": {
          "type": "string",
          "description": "The hash value."
        }
      },
      "type": "object",
      "required": [
        "type",
        "value"
      ]
    },
    "google-native:containeranalysis/v1beta1:HashType": {
      "description": "Required. The type of hash that was performed.",
      "type": "string",
      "enum": [
        {
          "name": "HashTypeUnspecified",
          "description": "Unknown.",
          "value": "HASH_TYPE_UNSPECIFIED"
        },
        {
          "name": "Sha256",
          "description": "A SHA-256 hash.",
          "value": "SHA256"
        },
        {
          "name": "GoModuleH1",
          "description": "Dirhash of a Go module's source code which is then hex-encoded. See b/244466565 and https://github.com/in-toto/attestation/pull/108.",
          "value": "GO_MODULE_H1"
        },
        {
          "name": "Sha512",
          "description": "A SHA-512 hash.",
          "value": "SHA512"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:Hint": {
      "description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this attestation authority, for example \"qa\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1beta1:HintResponse": {
      "description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
      "properties": {
        "humanReadableName": {
          "type": "string",
          "description": "The human readable name of this attestation authority, for example \"qa\"."
        }
      },
      "type": "object",
      "required": [
        "humanReadableName"
      ]
    },
    "google-native:containeranalysis/v1beta1:InToto": {
      "description": "This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note.",
      "properties": {
        "expectedCommand": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field contains the expected command used to perform the step."
        },
        "expectedMaterials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ArtifactRule"
          },
          "description": "The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step."
        },
        "expectedProducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ArtifactRule"
          }
        },
        "signingKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SigningKey"
          },
          "description": "This field contains the public keys that can be used to verify the signatures on the step metadata."
        },
        "stepName": {
          "type": "string",
          "description": "This field identifies the name of the step in the supply chain."
        },
        "threshold": {
          "type": "string",
          "description": "This field contains a value that indicates the minimum number of keys that need to be used to sign the step's in-toto link."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:InTotoResponse": {
      "description": "This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note.",
      "properties": {
        "expectedCommand": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field contains the expected command used to perform the step."
        },
        "expectedMaterials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ArtifactRuleResponse"
          },
          "description": "The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step."
        },
        "expectedProducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ArtifactRuleResponse"
          }
        },
        "signingKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SigningKeyResponse"
          },
          "description": "This field contains the public keys that can be used to verify the signatures on the step metadata."
        },
        "stepName": {
          "type": "string",
          "description": "This field identifies the name of the step in the supply chain."
        },
        "threshold": {
          "type": "string",
          "description": "This field contains a value that indicates the minimum number of keys that need to be used to sign the step's in-toto link."
        }
      },
      "type": "object",
      "required": [
        "expectedCommand",
        "expectedMaterials",
        "expectedProducts",
        "signingKeys",
        "stepName",
        "threshold"
      ]
    },
    "google-native:containeranalysis/v1beta1:InTotoSlsaProvenanceV1": {
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SlsaProvenanceV1"
        },
        "predicateType": {
          "type": "string"
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Subject"
          }
        },
        "type": {
          "type": "string",
          "description": "InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:InTotoSlsaProvenanceV1Response": {
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SlsaProvenanceV1Response"
        },
        "predicateType": {
          "type": "string"
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SubjectResponse"
          }
        },
        "type": {
          "type": "string",
          "description": "InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement"
        }
      },
      "type": "object",
      "required": [
        "predicate",
        "predicateType",
        "subject",
        "type"
      ]
    },
    "google-native:containeranalysis/v1beta1:Installation": {
      "description": "This represents how a particular software package may be installed on a system.",
      "properties": {
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:License",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "location": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Location"
          },
          "description": "All of the places within the filesystem versions of this package have been found."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:InstallationResponse": {
      "description": "This represents how a particular software package may be installed on a system.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LicenseResponse",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "location": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LocationResponse"
          },
          "description": "All of the places within the filesystem versions of this package have been found."
        },
        "name": {
          "type": "string",
          "description": "The name of the installed package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VersionResponse",
          "description": "The version of the package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "license",
        "location",
        "name",
        "packageType",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:Justification": {
      "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Additional details on why this justification was chosen."
        },
        "justificationType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:JustificationJustificationType",
          "description": "The justification type for this vulnerability."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:JustificationJustificationType": {
      "description": "The justification type for this vulnerability.",
      "type": "string",
      "enum": [
        {
          "name": "JustificationTypeUnspecified",
          "description": "JUSTIFICATION_TYPE_UNSPECIFIED.",
          "value": "JUSTIFICATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComponentNotPresent",
          "description": "The vulnerable component is not present in the product.",
          "value": "COMPONENT_NOT_PRESENT"
        },
        {
          "name": "VulnerableCodeNotPresent",
          "description": "The vulnerable code is not present. Typically this case occurs when source code is configured or built in a way that excludes the vulnerable code.",
          "value": "VULNERABLE_CODE_NOT_PRESENT"
        },
        {
          "name": "VulnerableCodeNotInExecutePath",
          "description": "The vulnerable code can not be executed. Typically this case occurs when the product includes the vulnerable code but does not call or use the vulnerable code.",
          "value": "VULNERABLE_CODE_NOT_IN_EXECUTE_PATH"
        },
        {
          "name": "VulnerableCodeCannotBeControlledByAdversary",
          "description": "The vulnerable code cannot be controlled by an attacker to exploit the vulnerability.",
          "value": "VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY"
        },
        {
          "name": "InlineMitigationsAlreadyExist",
          "description": "The product includes built-in protections or features that prevent exploitation of the vulnerability. These built-in protections cannot be subverted by the attacker and cannot be configured or disabled by the user. These mitigations completely prevent exploitation based on known attack vectors.",
          "value": "INLINE_MITIGATIONS_ALREADY_EXIST"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:JustificationResponse": {
      "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Additional details on why this justification was chosen."
        },
        "justificationType": {
          "type": "string",
          "description": "The justification type for this vulnerability."
        }
      },
      "type": "object",
      "required": [
        "details",
        "justificationType"
      ]
    },
    "google-native:containeranalysis/v1beta1:KnowledgeBase": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The KB name (generally of the form KB[0-9]+ i.e. KB123456)."
        },
        "url": {
          "type": "string",
          "description": "A link to the KB in the Windows update catalog - https://www.catalog.update.microsoft.com/"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:KnowledgeBaseResponse": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The KB name (generally of the form KB[0-9]+ i.e. KB123456)."
        },
        "url": {
          "type": "string",
          "description": "A link to the KB in the Windows update catalog - https://www.catalog.update.microsoft.com/"
        }
      },
      "type": "object",
      "required": [
        "name",
        "url"
      ]
    },
    "google-native:containeranalysis/v1beta1:Layer": {
      "description": "Layer holds metadata specific to a layer of a Docker image.",
      "properties": {
        "arguments": {
          "type": "string",
          "description": "The recovered arguments to the Dockerfile directive."
        },
        "directive": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LayerDirective",
          "description": "The recovered Dockerfile directive used to construct this layer."
        }
      },
      "type": "object",
      "required": [
        "directive"
      ]
    },
    "google-native:containeranalysis/v1beta1:LayerDirective": {
      "description": "Required. The recovered Dockerfile directive used to construct this layer.",
      "type": "string",
      "enum": [
        {
          "name": "DirectiveUnspecified",
          "description": "Default value for unsupported/missing directive.",
          "value": "DIRECTIVE_UNSPECIFIED"
        },
        {
          "name": "Maintainer",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "MAINTAINER"
        },
        {
          "name": "Run",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "RUN"
        },
        {
          "name": "Cmd",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "CMD"
        },
        {
          "name": "Label",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "LABEL"
        },
        {
          "name": "Expose",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "EXPOSE"
        },
        {
          "name": "Env",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ENV"
        },
        {
          "name": "Add",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ADD"
        },
        {
          "name": "Copy",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "COPY"
        },
        {
          "name": "Entrypoint",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ENTRYPOINT"
        },
        {
          "name": "Volume",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "VOLUME"
        },
        {
          "name": "User",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "USER"
        },
        {
          "name": "Workdir",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "WORKDIR"
        },
        {
          "name": "Arg",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ARG"
        },
        {
          "name": "Onbuild",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "ONBUILD"
        },
        {
          "name": "Stopsignal",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "STOPSIGNAL"
        },
        {
          "name": "Healthcheck",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "HEALTHCHECK"
        },
        {
          "name": "Shell",
          "description": "https://docs.docker.com/engine/reference/builder/",
          "value": "SHELL"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:LayerResponse": {
      "description": "Layer holds metadata specific to a layer of a Docker image.",
      "properties": {
        "arguments": {
          "type": "string",
          "description": "The recovered arguments to the Dockerfile directive."
        },
        "directive": {
          "type": "string",
          "description": "The recovered Dockerfile directive used to construct this layer."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "directive"
      ]
    },
    "google-native:containeranalysis/v1beta1:License": {
      "description": "License information.",
      "properties": {
        "comments": {
          "type": "string",
          "description": "Comments"
        },
        "expression": {
          "type": "string",
          "description": "Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: \"LGPL-2.1-only OR MIT\", \"LGPL-2.1-only AND MIT\", \"GPL-2.0-or-later WITH Bison-exception-2.2\"."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:LicenseResponse": {
      "description": "License information.",
      "properties": {
        "comments": {
          "type": "string",
          "description": "Comments"
        },
        "expression": {
          "type": "string",
          "description": "Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: \"LGPL-2.1-only OR MIT\", \"LGPL-2.1-only AND MIT\", \"GPL-2.0-or-later WITH Bison-exception-2.2\"."
        }
      },
      "type": "object",
      "required": [
        "comments",
        "expression"
      ]
    },
    "google-native:containeranalysis/v1beta1:Link": {
      "description": "This corresponds to an in-toto link.",
      "properties": {
        "byproducts": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ByProducts",
          "description": "ByProducts are data generated as part of a software supply chain step, but are not the actual result of the step."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field contains the full command executed for the step. This can also be empty if links are generated for operations that aren't directly mapped to a specific command. Each term in the command is an independent string in the list. An example of a command in the in-toto metadata field is: \"command\": [\"git\", \"clone\", \"https://github.com/in-toto/demo-project.git\"]"
        },
        "environment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Environment",
          "description": "This is a field that can be used to capture information about the environment. It is suggested for this field to contain information that details environment variables, filesystem information, and the present working directory. The recommended structure of this field is: \"environment\": { \"custom_values\": { \"variables\": \"\", \"filesystem\": \"\", \"workdir\": \"\", \"\": \"...\" } }"
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoArtifact"
          },
          "description": "Materials are the supply chain artifacts that go into the step and are used for the operation performed. The key of the map is the path of the artifact and the structure contains the recorded hash information. An example is: \"materials\": [ { \"resource_uri\": \"foo/bar\", \"hashes\": { \"sha256\": \"ebebf...\", : } } ]"
        },
        "products": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoArtifact"
          },
          "description": "Products are the supply chain artifacts generated as a result of the step. The structure is identical to that of materials."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:LinkResponse": {
      "description": "This corresponds to an in-toto link.",
      "properties": {
        "byproducts": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ByProductsResponse",
          "description": "ByProducts are data generated as part of a software supply chain step, but are not the actual result of the step."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field contains the full command executed for the step. This can also be empty if links are generated for operations that aren't directly mapped to a specific command. Each term in the command is an independent string in the list. An example of a command in the in-toto metadata field is: \"command\": [\"git\", \"clone\", \"https://github.com/in-toto/demo-project.git\"]"
        },
        "environment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:EnvironmentResponse",
          "description": "This is a field that can be used to capture information about the environment. It is suggested for this field to contain information that details environment variables, filesystem information, and the present working directory. The recommended structure of this field is: \"environment\": { \"custom_values\": { \"variables\": \"\", \"filesystem\": \"\", \"workdir\": \"\", \"\": \"...\" } }"
        },
        "materials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoArtifactResponse"
          },
          "description": "Materials are the supply chain artifacts that go into the step and are used for the operation performed. The key of the map is the path of the artifact and the structure contains the recorded hash information. An example is: \"materials\": [ { \"resource_uri\": \"foo/bar\", \"hashes\": { \"sha256\": \"ebebf...\", : } } ]"
        },
        "products": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoArtifactResponse"
          },
          "description": "Products are the supply chain artifacts generated as a result of the step. The structure is identical to that of materials."
        }
      },
      "type": "object",
      "required": [
        "byproducts",
        "command",
        "environment",
        "materials",
        "products"
      ]
    },
    "google-native:containeranalysis/v1beta1:Location": {
      "description": "An occurrence of a particular package installation found within a system's filesystem. E.g., glibc was found in `/var/lib/dpkg/status`.",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.",
          "deprecationMessage": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "path": {
          "type": "string",
          "description": "The path from which we gathered that this package/version is installed."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Version",
          "description": "Deprecated. The version installed at this location.",
          "deprecationMessage": "Deprecated. The version installed at this location."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:LocationResponse": {
      "description": "An occurrence of a particular package installation found within a system's filesystem. E.g., glibc was found in `/var/lib/dpkg/status`.",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.",
          "deprecationMessage": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package."
        },
        "path": {
          "type": "string",
          "description": "The path from which we gathered that this package/version is installed."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VersionResponse",
          "description": "Deprecated. The version installed at this location.",
          "deprecationMessage": "Deprecated. The version installed at this location."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "path",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:Package": {
      "description": "Package represents a particular package version.",
      "properties": {
        "architecture": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageArchitecture",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "description": {
          "type": "string",
          "description": "The description of this package."
        },
        "digest": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Digest"
          },
          "description": "Hash value, typically a file digest, that allows unique identification a specific package."
        },
        "distribution": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Distribution"
          },
          "description": "The various channels by which a package is distributed."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:License",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform text denoting the maintainer of this package."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "url": {
          "type": "string",
          "description": "The homepage for this package."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Version",
          "description": "The version of the package."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:containeranalysis/v1beta1:PackageArchitecture": {
      "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.",
      "type": "string",
      "enum": [
        {
          "name": "ArchitectureUnspecified",
          "description": "Unknown architecture.",
          "value": "ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "X86",
          "description": "X86 architecture.",
          "value": "X86"
        },
        {
          "name": "X64",
          "description": "X64 architecture.",
          "value": "X64"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:PackageInfoNote": {
      "description": "PackageInfoNote represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
      "properties": {
        "analyzed": {
          "type": "boolean",
          "description": "Indicates whether the file content of this package has been available for or subjected to analysis when creating the SPDX document"
        },
        "attribution": {
          "type": "string",
          "description": "A place for the SPDX data creator to record, at the package level, acknowledgements that may be needed to be communicated in some contexts"
        },
        "checksum": {
          "type": "string",
          "description": "Provide an independently reproducible mechanism that permits unique identification of a specific package that correlates to the data in this SPDX file"
        },
        "copyright": {
          "type": "string",
          "description": "Identify the copyright holders of the package, as well as any dates present"
        },
        "detailedDescription": {
          "type": "string",
          "description": "A more detailed description of the package"
        },
        "downloadLocation": {
          "type": "string",
          "description": "This section identifies the download Universal Resource Locator (URL), or a specific location within a version control system (VCS) for the package at the time that the SPDX file was created"
        },
        "externalRefs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ExternalRef"
          },
          "description": "ExternalRef"
        },
        "filesLicenseInfo": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contain the license the SPDX file creator has concluded as governing the This field is to contain a list of all licenses found in the package. The relationship between licenses (i.e., conjunctive, disjunctive) is not specified in this field – it is simply a listing of all licenses found"
        },
        "homePage": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record a web site that serves as the package's home page"
        },
        "licenseDeclared": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:License",
          "description": "List the licenses that have been declared by the authors of the package"
        },
        "originator": {
          "type": "string",
          "description": "If the package identified in the SPDX file originated from a different person or organization than identified as Package Supplier, this field identifies from where or whom the package originally came"
        },
        "packageType": {
          "type": "string",
          "description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc."
        },
        "summaryDescription": {
          "type": "string",
          "description": "A short description of the package"
        },
        "supplier": {
          "type": "string",
          "description": "Identify the actual distribution source for the package/directory identified in the SPDX file"
        },
        "title": {
          "type": "string",
          "description": "Identify the full name of the package as given by the Package Originator"
        },
        "verificationCode": {
          "type": "string",
          "description": "This field provides an independently reproducible mechanism identifying specific contents of a package based on the actual files (except the SPDX file itself, if it is included in the package) that make up each package and that correlates to the data in this SPDX file"
        },
        "version": {
          "type": "string",
          "description": "Identify the version of the package"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:PackageInfoNoteResponse": {
      "description": "PackageInfoNote represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
      "properties": {
        "analyzed": {
          "type": "boolean",
          "description": "Indicates whether the file content of this package has been available for or subjected to analysis when creating the SPDX document"
        },
        "attribution": {
          "type": "string",
          "description": "A place for the SPDX data creator to record, at the package level, acknowledgements that may be needed to be communicated in some contexts"
        },
        "checksum": {
          "type": "string",
          "description": "Provide an independently reproducible mechanism that permits unique identification of a specific package that correlates to the data in this SPDX file"
        },
        "copyright": {
          "type": "string",
          "description": "Identify the copyright holders of the package, as well as any dates present"
        },
        "detailedDescription": {
          "type": "string",
          "description": "A more detailed description of the package"
        },
        "downloadLocation": {
          "type": "string",
          "description": "This section identifies the download Universal Resource Locator (URL), or a specific location within a version control system (VCS) for the package at the time that the SPDX file was created"
        },
        "externalRefs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ExternalRefResponse"
          },
          "description": "ExternalRef"
        },
        "filesLicenseInfo": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contain the license the SPDX file creator has concluded as governing the This field is to contain a list of all licenses found in the package. The relationship between licenses (i.e., conjunctive, disjunctive) is not specified in this field – it is simply a listing of all licenses found"
        },
        "homePage": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record a web site that serves as the package's home page"
        },
        "licenseDeclared": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LicenseResponse",
          "description": "List the licenses that have been declared by the authors of the package"
        },
        "originator": {
          "type": "string",
          "description": "If the package identified in the SPDX file originated from a different person or organization than identified as Package Supplier, this field identifies from where or whom the package originally came"
        },
        "packageType": {
          "type": "string",
          "description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc."
        },
        "summaryDescription": {
          "type": "string",
          "description": "A short description of the package"
        },
        "supplier": {
          "type": "string",
          "description": "Identify the actual distribution source for the package/directory identified in the SPDX file"
        },
        "title": {
          "type": "string",
          "description": "Identify the full name of the package as given by the Package Originator"
        },
        "verificationCode": {
          "type": "string",
          "description": "This field provides an independently reproducible mechanism identifying specific contents of a package based on the actual files (except the SPDX file itself, if it is included in the package) that make up each package and that correlates to the data in this SPDX file"
        },
        "version": {
          "type": "string",
          "description": "Identify the version of the package"
        }
      },
      "type": "object",
      "required": [
        "analyzed",
        "attribution",
        "checksum",
        "copyright",
        "detailedDescription",
        "downloadLocation",
        "externalRefs",
        "filesLicenseInfo",
        "homePage",
        "licenseDeclared",
        "originator",
        "packageType",
        "summaryDescription",
        "supplier",
        "title",
        "verificationCode",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:PackageInfoOccurrence": {
      "description": "PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
      "properties": {
        "comment": {
          "type": "string",
          "description": "A place for the SPDX file creator to record any general comments about the package being described"
        },
        "filename": {
          "type": "string",
          "description": "Provide the actual file name of the package, or path of the directory being treated as a package"
        },
        "id": {
          "type": "string",
          "description": "Uniquely identify any element in an SPDX document which may be referenced by other elements"
        },
        "licenseConcluded": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:License",
          "description": "package or alternative values, if the governing license cannot be determined"
        },
        "sourceInfo": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:PackageInfoOccurrenceResponse": {
      "description": "PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
      "properties": {
        "comment": {
          "type": "string",
          "description": "A place for the SPDX file creator to record any general comments about the package being described"
        },
        "filename": {
          "type": "string",
          "description": "Provide the actual file name of the package, or path of the directory being treated as a package"
        },
        "homePage": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record a web site that serves as the package's home page"
        },
        "licenseConcluded": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LicenseResponse",
          "description": "package or alternative values, if the governing license cannot be determined"
        },
        "packageType": {
          "type": "string",
          "description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc."
        },
        "sourceInfo": {
          "type": "string",
          "description": "Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package"
        },
        "summaryDescription": {
          "type": "string",
          "description": "A short description of the package"
        },
        "title": {
          "type": "string",
          "description": "Identify the full name of the package as given by the Package Originator"
        },
        "version": {
          "type": "string",
          "description": "Identify the version of the package"
        }
      },
      "type": "object",
      "required": [
        "comment",
        "filename",
        "homePage",
        "licenseConcluded",
        "packageType",
        "sourceInfo",
        "summaryDescription",
        "title",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:PackageIssue": {
      "description": "This message wraps a location affected by a vulnerability and its associated fix (if one is available).",
      "properties": {
        "affectedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityLocation",
          "description": "The location of the vulnerability."
        },
        "fixedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityLocation",
          "description": "The location of the available fix for vulnerability."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package (e.g. OS, MAVEN, GO)."
        },
        "severityName": {
          "type": "string",
          "description": "Deprecated, use Details.effective_severity instead The severity (e.g., distro assigned severity) for this vulnerability.",
          "deprecationMessage": "Deprecated, use Details.effective_severity instead The severity (e.g., distro assigned severity) for this vulnerability."
        }
      },
      "type": "object",
      "required": [
        "affectedLocation"
      ]
    },
    "google-native:containeranalysis/v1beta1:PackageIssueResponse": {
      "description": "This message wraps a location affected by a vulnerability and its associated fix (if one is available).",
      "properties": {
        "affectedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityLocationResponse",
          "description": "The location of the vulnerability."
        },
        "effectiveSeverity": {
          "type": "string",
          "description": "The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when it is not available."
        },
        "fixedLocation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityLocationResponse",
          "description": "The location of the available fix for vulnerability."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package (e.g. OS, MAVEN, GO)."
        },
        "severityName": {
          "type": "string",
          "description": "Deprecated, use Details.effective_severity instead The severity (e.g., distro assigned severity) for this vulnerability.",
          "deprecationMessage": "Deprecated, use Details.effective_severity instead The severity (e.g., distro assigned severity) for this vulnerability."
        }
      },
      "type": "object",
      "required": [
        "affectedLocation",
        "effectiveSeverity",
        "fixedLocation",
        "packageType",
        "severityName"
      ]
    },
    "google-native:containeranalysis/v1beta1:PackageResponse": {
      "description": "Package represents a particular package version.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages."
        },
        "cpeUri": {
          "type": "string",
          "description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages."
        },
        "description": {
          "type": "string",
          "description": "The description of this package."
        },
        "digest": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DigestResponse"
          },
          "description": "Hash value, typically a file digest, that allows unique identification a specific package."
        },
        "distribution": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DistributionResponse"
          },
          "description": "The various channels by which a package is distributed."
        },
        "license": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:LicenseResponse",
          "description": "Licenses that have been declared by the authors of the package."
        },
        "maintainer": {
          "type": "string",
          "description": "A freeform text denoting the maintainer of this package."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the package."
        },
        "packageType": {
          "type": "string",
          "description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.)."
        },
        "url": {
          "type": "string",
          "description": "The homepage for this package."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VersionResponse",
          "description": "The version of the package."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "cpeUri",
        "description",
        "digest",
        "distribution",
        "license",
        "maintainer",
        "name",
        "packageType",
        "url",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:PgpSignedAttestation": {
      "description": "An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.",
      "properties": {
        "contentType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PgpSignedAttestationContentType",
          "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema)."
        },
        "pgpKeyId": {
          "type": "string",
          "description": "The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge \"LONG\", \"SHORT\", or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \\ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`."
        },
        "signature": {
          "type": "string",
          "description": "The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload."
        }
      },
      "type": "object",
      "required": [
        "signature"
      ]
    },
    "google-native:containeranalysis/v1beta1:PgpSignedAttestationContentType": {
      "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).",
      "type": "string",
      "enum": [
        {
          "name": "ContentTypeUnspecified",
          "description": "`ContentType` is not set.",
          "value": "CONTENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "SimpleSigningJson",
          "description": "Atomic format attestation signature. See https://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7/docs/atomic-signature.md The payload extracted from `signature` is a JSON blob conforming to the linked schema.",
          "value": "SIMPLE_SIGNING_JSON"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:PgpSignedAttestationResponse": {
      "description": "An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.",
      "properties": {
        "contentType": {
          "type": "string",
          "description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema)."
        },
        "pgpKeyId": {
          "type": "string",
          "description": "The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge \"LONG\", \"SHORT\", or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \\ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`."
        },
        "signature": {
          "type": "string",
          "description": "The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload."
        }
      },
      "type": "object",
      "required": [
        "contentType",
        "pgpKeyId",
        "signature"
      ]
    },
    "google-native:containeranalysis/v1beta1:Product": {
      "description": "Product contains information about a product and how to uniquely identify it.",
      "properties": {
        "genericUri": {
          "type": "string",
          "description": "Contains a URI which is vendor-specific. Example: The artifact repository URL of an image."
        },
        "id": {
          "type": "string",
          "description": "Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document."
        },
        "name": {
          "type": "string",
          "description": "Name of the product."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ProductResponse": {
      "description": "Product contains information about a product and how to uniquely identify it.",
      "properties": {
        "genericUri": {
          "type": "string",
          "description": "Contains a URI which is vendor-specific. Example: The artifact repository URL of an image."
        },
        "name": {
          "type": "string",
          "description": "Name of the product."
        }
      },
      "type": "object",
      "required": [
        "genericUri",
        "name"
      ]
    },
    "google-native:containeranalysis/v1beta1:ProjectRepoId": {
      "description": "Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project.",
      "properties": {
        "project": {
          "type": "string",
          "description": "The ID of the project."
        },
        "repoName": {
          "type": "string",
          "description": "The name of the repo. Leave empty for the default repo."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ProjectRepoIdResponse": {
      "description": "Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project.",
      "properties": {
        "project": {
          "type": "string",
          "description": "The ID of the project."
        },
        "repoName": {
          "type": "string",
          "description": "The name of the repo. Leave empty for the default repo."
        }
      },
      "type": "object",
      "required": [
        "project",
        "repoName"
      ]
    },
    "google-native:containeranalysis/v1beta1:ProvenanceBuilder": {
      "properties": {
        "builderDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ResourceDescriptor"
          }
        },
        "id": {
          "type": "string"
        },
        "version": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ProvenanceBuilderResponse": {
      "properties": {
        "builderDependencies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ResourceDescriptorResponse"
          }
        },
        "version": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "builderDependencies",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:Publisher": {
      "description": "Publisher contains information about the publisher of this Note.",
      "properties": {
        "issuingAuthority": {
          "type": "string",
          "description": "Provides information about the authority of the issuing party to release the document, in particular, the party's constituency and responsibilities or other obligations."
        },
        "name": {
          "type": "string",
          "description": "Name of the publisher. Examples: 'Google', 'Google Cloud Platform'."
        },
        "publisherNamespace": {
          "type": "string",
          "description": "The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:PublisherResponse": {
      "description": "Publisher contains information about the publisher of this Note.",
      "properties": {
        "issuingAuthority": {
          "type": "string",
          "description": "Provides information about the authority of the issuing party to release the document, in particular, the party's constituency and responsibilities or other obligations."
        },
        "name": {
          "type": "string",
          "description": "Name of the publisher. Examples: 'Google', 'Google Cloud Platform'."
        },
        "publisherNamespace": {
          "type": "string",
          "description": "The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io"
        }
      },
      "type": "object",
      "required": [
        "issuingAuthority",
        "name",
        "publisherNamespace"
      ]
    },
    "google-native:containeranalysis/v1beta1:RelatedUrl": {
      "description": "Metadata for any related URL information.",
      "properties": {
        "label": {
          "type": "string",
          "description": "Label to describe usage of the URL."
        },
        "url": {
          "type": "string",
          "description": "Specific URL associated with the resource."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:RelatedUrlResponse": {
      "description": "Metadata for any related URL information.",
      "properties": {
        "label": {
          "type": "string",
          "description": "Label to describe usage of the URL."
        },
        "url": {
          "type": "string",
          "description": "Specific URL associated with the resource."
        }
      },
      "type": "object",
      "required": [
        "label",
        "url"
      ]
    },
    "google-native:containeranalysis/v1beta1:RelationshipNote": {
      "description": "RelationshipNote represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelationshipNoteType",
          "description": "The type of relationship between the source and target SPDX elements"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:RelationshipNoteResponse": {
      "description": "RelationshipNote represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of relationship between the source and target SPDX elements"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:containeranalysis/v1beta1:RelationshipNoteType": {
      "description": "The type of relationship between the source and target SPDX elements",
      "type": "string",
      "enum": [
        {
          "name": "RelationshipTypeUnspecified",
          "description": "Unspecified",
          "value": "RELATIONSHIP_TYPE_UNSPECIFIED"
        },
        {
          "name": "Describes",
          "description": "Is to be used when SPDXRef-DOCUMENT describes SPDXRef-A",
          "value": "DESCRIBES"
        },
        {
          "name": "DescribedBy",
          "description": "Is to be used when SPDXRef-A is described by SPDXREF-Document",
          "value": "DESCRIBED_BY"
        },
        {
          "name": "Contains",
          "description": "Is to be used when SPDXRef-A contains SPDXRef-B",
          "value": "CONTAINS"
        },
        {
          "name": "ContainedBy",
          "description": "Is to be used when SPDXRef-A is contained by SPDXRef-B",
          "value": "CONTAINED_BY"
        },
        {
          "name": "DependsOn",
          "description": "Is to be used when SPDXRef-A depends on SPDXRef-B",
          "value": "DEPENDS_ON"
        },
        {
          "name": "DependencyOf",
          "description": "Is to be used when SPDXRef-A is dependency of SPDXRef-B",
          "value": "DEPENDENCY_OF"
        },
        {
          "name": "DependencyManifestOf",
          "description": "Is to be used when SPDXRef-A is a manifest file that lists a set of dependencies for SPDXRef-B",
          "value": "DEPENDENCY_MANIFEST_OF"
        },
        {
          "name": "BuildDependencyOf",
          "description": "Is to be used when SPDXRef-A is a build dependency of SPDXRef-B",
          "value": "BUILD_DEPENDENCY_OF"
        },
        {
          "name": "DevDependencyOf",
          "description": "Is to be used when SPDXRef-A is a development dependency of SPDXRef-B",
          "value": "DEV_DEPENDENCY_OF"
        },
        {
          "name": "OptionalDependencyOf",
          "description": "Is to be used when SPDXRef-A is an optional dependency of SPDXRef-B",
          "value": "OPTIONAL_DEPENDENCY_OF"
        },
        {
          "name": "ProvidedDependencyOf",
          "description": "Is to be used when SPDXRef-A is a to be provided dependency of SPDXRef-B",
          "value": "PROVIDED_DEPENDENCY_OF"
        },
        {
          "name": "TestDependencyOf",
          "description": "Is to be used when SPDXRef-A is a test dependency of SPDXRef-B",
          "value": "TEST_DEPENDENCY_OF"
        },
        {
          "name": "RuntimeDependencyOf",
          "description": "Is to be used when SPDXRef-A is a dependency required for the execution of SPDXRef-B",
          "value": "RUNTIME_DEPENDENCY_OF"
        },
        {
          "name": "ExampleOf",
          "description": "Is to be used when SPDXRef-A is an example of SPDXRef-B",
          "value": "EXAMPLE_OF"
        },
        {
          "name": "Generates",
          "description": "Is to be used when SPDXRef-A generates SPDXRef-B",
          "value": "GENERATES"
        },
        {
          "name": "GeneratedFrom",
          "description": "Is to be used when SPDXRef-A was generated from SPDXRef-B",
          "value": "GENERATED_FROM"
        },
        {
          "name": "AncestorOf",
          "description": "Is to be used when SPDXRef-A is an ancestor (same lineage but pre-dates) SPDXRef-B",
          "value": "ANCESTOR_OF"
        },
        {
          "name": "DescendantOf",
          "description": "Is to be used when SPDXRef-A is a descendant of (same lineage but postdates) SPDXRef-B",
          "value": "DESCENDANT_OF"
        },
        {
          "name": "VariantOf",
          "description": "Is to be used when SPDXRef-A is a variant of (same lineage but not clear which came first) SPDXRef-B",
          "value": "VARIANT_OF"
        },
        {
          "name": "DistributionArtifact",
          "description": "Is to be used when distributing SPDXRef-A requires that SPDXRef-B also be distributed",
          "value": "DISTRIBUTION_ARTIFACT"
        },
        {
          "name": "PatchFor",
          "description": "Is to be used when SPDXRef-A is a patch file for (to be applied to) SPDXRef-B",
          "value": "PATCH_FOR"
        },
        {
          "name": "PatchApplied",
          "description": "Is to be used when SPDXRef-A is a patch file that has been applied to SPDXRef-B",
          "value": "PATCH_APPLIED"
        },
        {
          "name": "CopyOf",
          "description": "Is to be used when SPDXRef-A is an exact copy of SPDXRef-B",
          "value": "COPY_OF"
        },
        {
          "name": "FileAdded",
          "description": "Is to be used when SPDXRef-A is a file that was added to SPDXRef-B",
          "value": "FILE_ADDED"
        },
        {
          "name": "FileDeleted",
          "description": "Is to be used when SPDXRef-A is a file that was deleted from SPDXRef-B",
          "value": "FILE_DELETED"
        },
        {
          "name": "FileModified",
          "description": "Is to be used when SPDXRef-A is a file that was modified from SPDXRef-B",
          "value": "FILE_MODIFIED"
        },
        {
          "name": "ExpandedFromArchive",
          "description": "Is to be used when SPDXRef-A is expanded from the archive SPDXRef-B",
          "value": "EXPANDED_FROM_ARCHIVE"
        },
        {
          "name": "DynamicLink",
          "description": "Is to be used when SPDXRef-A dynamically links to SPDXRef-B",
          "value": "DYNAMIC_LINK"
        },
        {
          "name": "StaticLink",
          "description": "Is to be used when SPDXRef-A statically links to SPDXRef-B",
          "value": "STATIC_LINK"
        },
        {
          "name": "DataFileOf",
          "description": "Is to be used when SPDXRef-A is a data file used in SPDXRef-B",
          "value": "DATA_FILE_OF"
        },
        {
          "name": "TestCaseOf",
          "description": "Is to be used when SPDXRef-A is a test case used in testing SPDXRef-B",
          "value": "TEST_CASE_OF"
        },
        {
          "name": "BuildToolOf",
          "description": "Is to be used when SPDXRef-A is used to build SPDXRef-B",
          "value": "BUILD_TOOL_OF"
        },
        {
          "name": "DevToolOf",
          "description": "Is to be used when SPDXRef-A is used as a development tool for SPDXRef-B",
          "value": "DEV_TOOL_OF"
        },
        {
          "name": "TestOf",
          "description": "Is to be used when SPDXRef-A is used for testing SPDXRef-B",
          "value": "TEST_OF"
        },
        {
          "name": "TestToolOf",
          "description": "Is to be used when SPDXRef-A is used as a test tool for SPDXRef-B",
          "value": "TEST_TOOL_OF"
        },
        {
          "name": "DocumentationOf",
          "description": "Is to be used when SPDXRef-A provides documentation of SPDXRef-B",
          "value": "DOCUMENTATION_OF"
        },
        {
          "name": "OptionalComponentOf",
          "description": "Is to be used when SPDXRef-A is an optional component of SPDXRef-B",
          "value": "OPTIONAL_COMPONENT_OF"
        },
        {
          "name": "MetafileOf",
          "description": "Is to be used when SPDXRef-A is a metafile of SPDXRef-B",
          "value": "METAFILE_OF"
        },
        {
          "name": "PackageOf",
          "description": "Is to be used when SPDXRef-A is used as a package as part of SPDXRef-B",
          "value": "PACKAGE_OF"
        },
        {
          "name": "Amends",
          "description": "Is to be used when (current) SPDXRef-DOCUMENT amends the SPDX information in SPDXRef-B",
          "value": "AMENDS"
        },
        {
          "name": "PrerequisiteFor",
          "description": "Is to be used when SPDXRef-A is a prerequisite for SPDXRef-B",
          "value": "PREREQUISITE_FOR"
        },
        {
          "name": "HasPrerequisite",
          "description": "Is to be used when SPDXRef-A has as a prerequisite SPDXRef-B",
          "value": "HAS_PREREQUISITE"
        },
        {
          "name": "Other",
          "description": "Is to be used for a relationship which has not been defined in the formal SPDX specification. A description of the relationship should be included in the Relationship comments field",
          "value": "OTHER"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:RelationshipOccurrence": {
      "description": "RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
      "properties": {
        "comment": {
          "type": "string",
          "description": "A place for the SPDX file creator to record any general comments about the relationship"
        },
        "source": {
          "type": "string",
          "description": "Also referred to as SPDXRef-A The source SPDX element (file, package, etc)"
        },
        "target": {
          "type": "string",
          "description": "Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are \"known unknowns\", the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:RelationshipOccurrenceResponse": {
      "description": "RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
      "properties": {
        "comment": {
          "type": "string",
          "description": "A place for the SPDX file creator to record any general comments about the relationship"
        },
        "source": {
          "type": "string",
          "description": "Also referred to as SPDXRef-A The source SPDX element (file, package, etc)"
        },
        "target": {
          "type": "string",
          "description": "Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are \"known unknowns\", the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it"
        },
        "type": {
          "type": "string",
          "description": "The type of relationship between the source and target SPDX elements"
        }
      },
      "type": "object",
      "required": [
        "comment",
        "source",
        "target",
        "type"
      ]
    },
    "google-native:containeranalysis/v1beta1:Remediation": {
      "description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Contains a comprehensive human-readable discussion of the remediation."
        },
        "remediationType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RemediationRemediationType",
          "description": "The type of remediation that can be applied."
        },
        "remediationUri": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrl",
          "description": "Contains the URL where to obtain the remediation."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:RemediationRemediationType": {
      "description": "The type of remediation that can be applied.",
      "type": "string",
      "enum": [
        {
          "name": "RemediationTypeUnspecified",
          "description": "No remediation type specified.",
          "value": "REMEDIATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mitigation",
          "description": "A MITIGATION is available.",
          "value": "MITIGATION"
        },
        {
          "name": "NoFixPlanned",
          "description": "No fix is planned.",
          "value": "NO_FIX_PLANNED"
        },
        {
          "name": "NoneAvailable",
          "description": "Not available.",
          "value": "NONE_AVAILABLE"
        },
        {
          "name": "VendorFix",
          "description": "A vendor fix is available.",
          "value": "VENDOR_FIX"
        },
        {
          "name": "Workaround",
          "description": "A workaround is available.",
          "value": "WORKAROUND"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:RemediationResponse": {
      "description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Contains a comprehensive human-readable discussion of the remediation."
        },
        "remediationType": {
          "type": "string",
          "description": "The type of remediation that can be applied."
        },
        "remediationUri": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrlResponse",
          "description": "Contains the URL where to obtain the remediation."
        }
      },
      "type": "object",
      "required": [
        "details",
        "remediationType",
        "remediationUri"
      ]
    },
    "google-native:containeranalysis/v1beta1:RepoId": {
      "description": "A unique identifier for a Cloud Repo.",
      "properties": {
        "projectRepoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ProjectRepoId",
          "description": "A combination of a project ID and a repo name."
        },
        "uid": {
          "type": "string",
          "description": "A server-assigned, globally unique identifier."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:RepoIdResponse": {
      "description": "A unique identifier for a Cloud Repo.",
      "properties": {
        "projectRepoId": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ProjectRepoIdResponse",
          "description": "A combination of a project ID and a repo name."
        },
        "uid": {
          "type": "string",
          "description": "A server-assigned, globally unique identifier."
        }
      },
      "type": "object",
      "required": [
        "projectRepoId",
        "uid"
      ]
    },
    "google-native:containeranalysis/v1beta1:Resource": {
      "description": "An entity that can have metadata. For example, a Docker image.",
      "properties": {
        "contentHash": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Hash",
          "description": "Deprecated, do not use. Use uri instead. The hash of the resource content. For example, the Docker digest.",
          "deprecationMessage": "Deprecated, do not use. Use uri instead. The hash of the resource content. For example, the Docker digest."
        },
        "name": {
          "type": "string",
          "description": "Deprecated, do not use. Use uri instead. The name of the resource. For example, the name of a Docker image - \"Debian\".",
          "deprecationMessage": "Deprecated, do not use. Use uri instead. The name of the resource. For example, the name of a Docker image - \"Debian\"."
        },
        "uri": {
          "type": "string",
          "description": "The unique URI of the resource. For example, `https://gcr.io/project/image@sha256:foo` for a Docker image."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:containeranalysis/v1beta1:ResourceDescriptor": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "content": {
          "type": "string"
        },
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "downloadLocation": {
          "type": "string"
        },
        "mediaType": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:ResourceDescriptorResponse": {
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "content": {
          "type": "string"
        },
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "downloadLocation": {
          "type": "string"
        },
        "mediaType": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "content",
        "digest",
        "downloadLocation",
        "mediaType",
        "name",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1beta1:ResourceResponse": {
      "description": "An entity that can have metadata. For example, a Docker image.",
      "properties": {
        "contentHash": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:HashResponse",
          "description": "Deprecated, do not use. Use uri instead. The hash of the resource content. For example, the Docker digest.",
          "deprecationMessage": "Deprecated, do not use. Use uri instead. The hash of the resource content. For example, the Docker digest."
        },
        "name": {
          "type": "string",
          "description": "Deprecated, do not use. Use uri instead. The name of the resource. For example, the name of a Docker image - \"Debian\".",
          "deprecationMessage": "Deprecated, do not use. Use uri instead. The name of the resource. For example, the name of a Docker image - \"Debian\"."
        },
        "uri": {
          "type": "string",
          "description": "The unique URI of the resource. For example, `https://gcr.io/project/image@sha256:foo` for a Docker image."
        }
      },
      "type": "object",
      "required": [
        "contentHash",
        "name",
        "uri"
      ]
    },
    "google-native:containeranalysis/v1beta1:RunDetails": {
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ProvenanceBuilder"
        },
        "byproducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ResourceDescriptor"
          }
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildMetadata"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:RunDetailsResponse": {
      "properties": {
        "builder": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ProvenanceBuilderResponse"
        },
        "byproducts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ResourceDescriptorResponse"
          }
        },
        "metadata": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildMetadataResponse"
        }
      },
      "type": "object",
      "required": [
        "builder",
        "byproducts",
        "metadata"
      ]
    },
    "google-native:containeranalysis/v1beta1:SBOMReferenceNote": {
      "description": "The note representing an SBOM reference.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format that SBOM takes. E.g. may be spdx, cyclonedx, etc..."
        },
        "version": {
          "type": "string",
          "description": "The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SBOMReferenceNoteResponse": {
      "description": "The note representing an SBOM reference.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format that SBOM takes. E.g. may be spdx, cyclonedx, etc..."
        },
        "version": {
          "type": "string",
          "description": "The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3."
        }
      },
      "type": "object",
      "required": [
        "format",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:SBOMReferenceOccurrence": {
      "description": "The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details.",
      "properties": {
        "payload": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SbomReferenceIntotoPayload",
          "description": "The actual payload that contains the SBOM reference data."
        },
        "payloadType": {
          "type": "string",
          "description": "The kind of payload that SbomReferenceIntotoPayload takes. Since it's in the intoto format, this value is expected to be 'application/vnd.in-toto+json'."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:EnvelopeSignature"
          },
          "description": "The signatures over the payload."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SBOMReferenceOccurrenceResponse": {
      "description": "The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details.",
      "properties": {
        "payload": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SbomReferenceIntotoPayloadResponse",
          "description": "The actual payload that contains the SBOM reference data."
        },
        "payloadType": {
          "type": "string",
          "description": "The kind of payload that SbomReferenceIntotoPayload takes. Since it's in the intoto format, this value is expected to be 'application/vnd.in-toto+json'."
        },
        "signatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:EnvelopeSignatureResponse"
          },
          "description": "The signatures over the payload."
        }
      },
      "type": "object",
      "required": [
        "payload",
        "payloadType",
        "signatures"
      ]
    },
    "google-native:containeranalysis/v1beta1:SBOMStatus": {
      "description": "The status of an SBOM generation.",
      "properties": {
        "error": {
          "type": "string",
          "description": "If there was an error generating an SBOM, this will indicate what that error was."
        },
        "sbomState": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMStatusSbomState",
          "description": "The progress of the SBOM generation."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SBOMStatusResponse": {
      "description": "The status of an SBOM generation.",
      "properties": {
        "error": {
          "type": "string",
          "description": "If there was an error generating an SBOM, this will indicate what that error was."
        },
        "sbomState": {
          "type": "string",
          "description": "The progress of the SBOM generation."
        }
      },
      "type": "object",
      "required": [
        "error",
        "sbomState"
      ]
    },
    "google-native:containeranalysis/v1beta1:SBOMStatusSbomState": {
      "description": "The progress of the SBOM generation.",
      "type": "string",
      "enum": [
        {
          "name": "SbomStateUnspecified",
          "description": "Default unknown state.",
          "value": "SBOM_STATE_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "SBOM scanning is pending.",
          "value": "PENDING"
        },
        {
          "name": "Complete",
          "description": "SBOM scanning has completed.",
          "value": "COMPLETE"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:SbomReferenceIntotoPayload": {
      "description": "The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details.",
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SbomReferenceIntotoPredicate",
          "description": "Additional parameters of the Predicate. Includes the actual data about the SBOM."
        },
        "predicateType": {
          "type": "string",
          "description": "URI identifying the type of the Predicate."
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Subject"
          },
          "description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact."
        },
        "type": {
          "type": "string",
          "description": "Identifier for the schema of the Statement."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SbomReferenceIntotoPayloadResponse": {
      "description": "The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details.",
      "properties": {
        "predicate": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SbomReferenceIntotoPredicateResponse",
          "description": "Additional parameters of the Predicate. Includes the actual data about the SBOM."
        },
        "predicateType": {
          "type": "string",
          "description": "URI identifying the type of the Predicate."
        },
        "subject": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SubjectResponse"
          },
          "description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact."
        },
        "type": {
          "type": "string",
          "description": "Identifier for the schema of the Statement."
        }
      },
      "type": "object",
      "required": [
        "predicate",
        "predicateType",
        "subject",
        "type"
      ]
    },
    "google-native:containeranalysis/v1beta1:SbomReferenceIntotoPredicate": {
      "description": "A predicate which describes the SBOM being referenced.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of algorithm to digest of the contents of the SBOM."
        },
        "location": {
          "type": "string",
          "description": "The location of the SBOM."
        },
        "mimeType": {
          "type": "string",
          "description": "The mime type of the SBOM."
        },
        "referrerId": {
          "type": "string",
          "description": "The person or system referring this predicate to the consumer."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SbomReferenceIntotoPredicateResponse": {
      "description": "A predicate which describes the SBOM being referenced.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of algorithm to digest of the contents of the SBOM."
        },
        "location": {
          "type": "string",
          "description": "The location of the SBOM."
        },
        "mimeType": {
          "type": "string",
          "description": "The mime type of the SBOM."
        },
        "referrerId": {
          "type": "string",
          "description": "The person or system referring this predicate to the consumer."
        }
      },
      "type": "object",
      "required": [
        "digest",
        "location",
        "mimeType",
        "referrerId"
      ]
    },
    "google-native:containeranalysis/v1beta1:Signature": {
      "description": "Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular, verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with respect to the payload. The `signature` contents SHOULD NOT be \"attached\" (where the payload is included with the serialized `signature` bytes). Verifiers MUST ignore any \"attached\" payload and only verify signatures with respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature, or the canonical serialization of the proto message that holds this signature).",
      "properties": {
        "publicKeyId": {
          "type": "string",
          "description": "The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public key fingerprint: * \"openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA\" See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization): * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\" * \"nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5\""
        },
        "signature": {
          "type": "string",
          "description": "The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be unambiguously provided with the Signature during verification. A wrapper message might provide the payload explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously computed to derive the payload."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SignatureResponse": {
      "description": "Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular, verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with respect to the payload. The `signature` contents SHOULD NOT be \"attached\" (where the payload is included with the serialized `signature` bytes). Verifiers MUST ignore any \"attached\" payload and only verify signatures with respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature, or the canonical serialization of the proto message that holds this signature).",
      "properties": {
        "publicKeyId": {
          "type": "string",
          "description": "The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public key fingerprint: * \"openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA\" See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization): * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\" * \"nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5\""
        },
        "signature": {
          "type": "string",
          "description": "The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be unambiguously provided with the Signature during verification. A wrapper message might provide the payload explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously computed to derive the payload."
        }
      },
      "type": "object",
      "required": [
        "publicKeyId",
        "signature"
      ]
    },
    "google-native:containeranalysis/v1beta1:SigningKey": {
      "description": "This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { \"key_id\": \"776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...\", \"key_type\": \"rsa\", \"public_key_value\": \"-----BEGIN PUBLIC KEY-----\\nMIIBojANBgkqhkiG9w0B...\", \"key_scheme\": \"rsassa-pss-sha256\" } The format for in-toto's key definition can be found in section 4.2 of the in-toto specification.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "key_id is an identifier for the signing key."
        },
        "keyScheme": {
          "type": "string",
          "description": "This field contains the corresponding signature scheme. Eg: \"rsassa-pss-sha256\"."
        },
        "keyType": {
          "type": "string",
          "description": "This field identifies the specific signing method. Eg: \"rsa\", \"ed25519\", and \"ecdsa\"."
        },
        "publicKeyValue": {
          "type": "string",
          "description": "This field contains the actual public key."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SigningKeyResponse": {
      "description": "This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { \"key_id\": \"776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...\", \"key_type\": \"rsa\", \"public_key_value\": \"-----BEGIN PUBLIC KEY-----\\nMIIBojANBgkqhkiG9w0B...\", \"key_scheme\": \"rsassa-pss-sha256\" } The format for in-toto's key definition can be found in section 4.2 of the in-toto specification.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "key_id is an identifier for the signing key."
        },
        "keyScheme": {
          "type": "string",
          "description": "This field contains the corresponding signature scheme. Eg: \"rsassa-pss-sha256\"."
        },
        "keyType": {
          "type": "string",
          "description": "This field identifies the specific signing method. Eg: \"rsa\", \"ed25519\", and \"ecdsa\"."
        },
        "publicKeyValue": {
          "type": "string",
          "description": "This field contains the actual public key."
        }
      },
      "type": "object",
      "required": [
        "keyId",
        "keyScheme",
        "keyType",
        "publicKeyValue"
      ]
    },
    "google-native:containeranalysis/v1beta1:SlsaProvenanceV1": {
      "description": "Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.",
      "properties": {
        "buildDefinition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildDefinition"
        },
        "runDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RunDetails"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SlsaProvenanceV1Response": {
      "description": "Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.",
      "properties": {
        "buildDefinition": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildDefinitionResponse"
        },
        "runDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RunDetailsResponse"
        }
      },
      "type": "object",
      "required": [
        "buildDefinition",
        "runDetails"
      ]
    },
    "google-native:containeranalysis/v1beta1:Source": {
      "description": "Source describes the location of the source used for the build.",
      "properties": {
        "additionalContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SourceContext"
          },
          "description": "If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field."
        },
        "artifactStorageSourceUri": {
          "type": "string",
          "description": "If provided, the input binary artifacts for the build came from this location."
        },
        "context": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SourceContext",
          "description": "If provided, the source code used for the build came from this location."
        },
        "fileHashes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SourceContext": {
      "description": "A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.",
      "properties": {
        "cloudRepo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CloudRepoSourceContext",
          "description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
        },
        "gerrit": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GerritSourceContext",
          "description": "A SourceContext referring to a Gerrit project."
        },
        "git": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GitSourceContext",
          "description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user defined metadata."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SourceContextResponse": {
      "description": "A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.",
      "properties": {
        "cloudRepo": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CloudRepoSourceContextResponse",
          "description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
        },
        "gerrit": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GerritSourceContextResponse",
          "description": "A SourceContext referring to a Gerrit project."
        },
        "git": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GitSourceContextResponse",
          "description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user defined metadata."
        }
      },
      "type": "object",
      "required": [
        "cloudRepo",
        "gerrit",
        "git",
        "labels"
      ]
    },
    "google-native:containeranalysis/v1beta1:SourceResponse": {
      "description": "Source describes the location of the source used for the build.",
      "properties": {
        "additionalContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SourceContextResponse"
          },
          "description": "If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field."
        },
        "artifactStorageSourceUri": {
          "type": "string",
          "description": "If provided, the input binary artifacts for the build came from this location."
        },
        "context": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SourceContextResponse",
          "description": "If provided, the source code used for the build came from this location."
        },
        "fileHashes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file."
        }
      },
      "type": "object",
      "required": [
        "additionalContexts",
        "artifactStorageSourceUri",
        "context",
        "fileHashes"
      ]
    },
    "google-native:containeranalysis/v1beta1:Status": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:containeranalysis/v1beta1:Subject": {
      "description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "`\"\": \"\"` Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet"
        },
        "name": {
          "type": "string",
          "description": "Identifier to distinguish this artifact from others within the subject."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:SubjectResponse": {
      "description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact.",
      "properties": {
        "digest": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "`\"\": \"\"` Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet"
        },
        "name": {
          "type": "string",
          "description": "Identifier to distinguish this artifact from others within the subject."
        }
      },
      "type": "object",
      "required": [
        "digest",
        "name"
      ]
    },
    "google-native:containeranalysis/v1beta1:Version": {
      "description": "Version contains structured information about the version of a package.",
      "properties": {
        "epoch": {
          "type": "integer",
          "description": "Used to correct mistakes in the version numbering scheme."
        },
        "inclusive": {
          "type": "boolean",
          "description": "Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range."
        },
        "kind": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VersionKind",
          "description": "Distinguishes between sentinel MIN/MAX versions and normal versions."
        },
        "name": {
          "type": "string",
          "description": "Required only when version kind is NORMAL. The main part of the version name."
        },
        "revision": {
          "type": "string",
          "description": "The iteration of the package build from the above version."
        }
      },
      "type": "object",
      "required": [
        "kind"
      ]
    },
    "google-native:containeranalysis/v1beta1:VersionKind": {
      "description": "Required. Distinguishes between sentinel MIN/MAX versions and normal versions.",
      "type": "string",
      "enum": [
        {
          "name": "VersionKindUnspecified",
          "description": "Unknown.",
          "value": "VERSION_KIND_UNSPECIFIED"
        },
        {
          "name": "Normal",
          "description": "A standard package version.",
          "value": "NORMAL"
        },
        {
          "name": "Minimum",
          "description": "A special version representing negative infinity.",
          "value": "MINIMUM"
        },
        {
          "name": "Maximum",
          "description": "A special version representing positive infinity.",
          "value": "MAXIMUM"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:VersionResponse": {
      "description": "Version contains structured information about the version of a package.",
      "properties": {
        "epoch": {
          "type": "integer",
          "description": "Used to correct mistakes in the version numbering scheme."
        },
        "inclusive": {
          "type": "boolean",
          "description": "Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range."
        },
        "kind": {
          "type": "string",
          "description": "Distinguishes between sentinel MIN/MAX versions and normal versions."
        },
        "name": {
          "type": "string",
          "description": "Required only when version kind is NORMAL. The main part of the version name."
        },
        "revision": {
          "type": "string",
          "description": "The iteration of the package build from the above version."
        }
      },
      "type": "object",
      "required": [
        "epoch",
        "inclusive",
        "kind",
        "name",
        "revision"
      ]
    },
    "google-native:containeranalysis/v1beta1:VexAssessment": {
      "description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
          "deprecationMessage": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Justification",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "noteName": {
          "type": "string",
          "description": "The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrl"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Remediation"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "state": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VexAssessmentState",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:VexAssessmentResponse": {
      "description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability.",
      "properties": {
        "cve": {
          "type": "string",
          "description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
          "deprecationMessage": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs."
        },
        "impacts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains information about the impact of this vulnerability, this will change with time."
        },
        "justification": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:JustificationResponse",
          "description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
        },
        "noteName": {
          "type": "string",
          "description": "The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`."
        },
        "relatedUris": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrlResponse"
          },
          "description": "Holds a list of references associated with this vulnerability item and assessment."
        },
        "remediations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RemediationResponse"
          },
          "description": "Specifies details on how to handle (and presumably, fix) a vulnerability."
        },
        "state": {
          "type": "string",
          "description": "Provides the state of this Vulnerability assessment."
        },
        "vulnerabilityId": {
          "type": "string",
          "description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc."
        }
      },
      "type": "object",
      "required": [
        "cve",
        "impacts",
        "justification",
        "noteName",
        "relatedUris",
        "remediations",
        "state",
        "vulnerabilityId"
      ]
    },
    "google-native:containeranalysis/v1beta1:VexAssessmentState": {
      "description": "Provides the state of this Vulnerability assessment.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "No state is specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Affected",
          "description": "This product is known to be affected by this vulnerability.",
          "value": "AFFECTED"
        },
        {
          "name": "NotAffected",
          "description": "This product is known to be not affected by this vulnerability.",
          "value": "NOT_AFFECTED"
        },
        {
          "name": "Fixed",
          "description": "This product contains a fix for this vulnerability.",
          "value": "FIXED"
        },
        {
          "name": "UnderInvestigation",
          "description": "It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation.",
          "value": "UNDER_INVESTIGATION"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:Vulnerability": {
      "description": "Vulnerability provides metadata about a security vulnerability in a Note.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score for this vulnerability."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSS",
          "description": "The full description of the CVSS for version 2."
        },
        "cvssV3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3",
          "description": "The full description of the CVSS for version 3."
        },
        "cvssVersion": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityCvssVersion",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "cwe": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CWE for this vulnerability. For details, see: https://cwe.mitre.org/index.html"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Detail"
          },
          "description": "All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in."
        },
        "severity": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilitySeverity",
          "description": "Note provider assigned impact of the vulnerability."
        },
        "sourceUpdateTime": {
          "type": "string",
          "description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker."
        },
        "windowsDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:WindowsDetail"
          },
          "description": "Windows details get their own format because the information format and model don't match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version."
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:VulnerabilityAssessmentNote": {
      "description": "A single VulnerabilityAssessmentNote represents one particular product's vulnerability assessment for one CVE.",
      "properties": {
        "assessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Assessment",
          "description": "Represents a vulnerability assessment for the product."
        },
        "languageCode": {
          "type": "string",
          "description": "Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "product": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Product",
          "description": "The product affected by this vex."
        },
        "publisher": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Publisher",
          "description": "Publisher details of this Note."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "title": {
          "type": "string",
          "description": "The title of the note. E.g. `Vex-Debian-11.4`"
        }
      },
      "type": "object"
    },
    "google-native:containeranalysis/v1beta1:VulnerabilityAssessmentNoteResponse": {
      "description": "A single VulnerabilityAssessmentNote represents one particular product's vulnerability assessment for one CVE.",
      "properties": {
        "assessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AssessmentResponse",
          "description": "Represents a vulnerability assessment for the product."
        },
        "languageCode": {
          "type": "string",
          "description": "Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this Vex."
        },
        "product": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ProductResponse",
          "description": "The product affected by this vex."
        },
        "publisher": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PublisherResponse",
          "description": "Publisher details of this Note."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this Vex."
        },
        "title": {
          "type": "string",
          "description": "The title of the note. E.g. `Vex-Debian-11.4`"
        }
      },
      "type": "object",
      "required": [
        "assessment",
        "languageCode",
        "longDescription",
        "product",
        "publisher",
        "shortDescription",
        "title"
      ]
    },
    "google-native:containeranalysis/v1beta1:VulnerabilityCvssVersion": {
      "description": "CVSS version used to populate cvss_score and severity.",
      "type": "string",
      "enum": [
        {
          "name": "CvssVersionUnspecified",
          "value": "CVSS_VERSION_UNSPECIFIED"
        },
        {
          "name": "CvssVersion2",
          "value": "CVSS_VERSION_2"
        },
        {
          "name": "CvssVersion3",
          "value": "CVSS_VERSION_3"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:VulnerabilityLocation": {
      "description": "The location of the vulnerability.",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar."
        },
        "package": {
          "type": "string",
          "description": "The package being described."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Version",
          "description": "The version of the package being described."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "package",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:VulnerabilityLocationResponse": {
      "description": "The location of the vulnerability.",
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar."
        },
        "package": {
          "type": "string",
          "description": "The package being described."
        },
        "version": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VersionResponse",
          "description": "The version of the package being described."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "package",
        "version"
      ]
    },
    "google-native:containeranalysis/v1beta1:VulnerabilityResponse": {
      "description": "Vulnerability provides metadata about a security vulnerability in a Note.",
      "properties": {
        "cvssScore": {
          "type": "number",
          "description": "The CVSS score for this vulnerability."
        },
        "cvssV2": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSResponse",
          "description": "The full description of the CVSS for version 2."
        },
        "cvssV3": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:CVSSv3Response",
          "description": "The full description of the CVSS for version 3."
        },
        "cvssVersion": {
          "type": "string",
          "description": "CVSS version used to populate cvss_score and severity."
        },
        "cwe": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CWE for this vulnerability. For details, see: https://cwe.mitre.org/index.html"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DetailResponse"
          },
          "description": "All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in."
        },
        "severity": {
          "type": "string",
          "description": "Note provider assigned impact of the vulnerability."
        },
        "sourceUpdateTime": {
          "type": "string",
          "description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker."
        },
        "windowsDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:WindowsDetailResponse"
          },
          "description": "Windows details get their own format because the information format and model don't match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version."
        }
      },
      "type": "object",
      "required": [
        "cvssScore",
        "cvssV2",
        "cvssV3",
        "cvssVersion",
        "cwe",
        "details",
        "severity",
        "sourceUpdateTime",
        "windowsDetails"
      ]
    },
    "google-native:containeranalysis/v1beta1:VulnerabilitySeverity": {
      "description": "Note provider assigned impact of the vulnerability.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unknown.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Minimal",
          "description": "Minimal severity.",
          "value": "MINIMAL"
        },
        {
          "name": "Low",
          "description": "Low severity.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium severity.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High severity.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical severity.",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:containeranalysis/v1beta1:WindowsDetail": {
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar."
        },
        "description": {
          "type": "string",
          "description": "The description of the vulnerability."
        },
        "fixingKbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:KnowledgeBase"
          },
          "description": "The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed kb's presence is considered a fix."
        },
        "name": {
          "type": "string",
          "description": "The name of the vulnerability."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "fixingKbs",
        "name"
      ]
    },
    "google-native:containeranalysis/v1beta1:WindowsDetailResponse": {
      "properties": {
        "cpeUri": {
          "type": "string",
          "description": "The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar."
        },
        "description": {
          "type": "string",
          "description": "The description of the vulnerability."
        },
        "fixingKbs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:KnowledgeBaseResponse"
          },
          "description": "The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed kb's presence is considered a fix."
        },
        "name": {
          "type": "string",
          "description": "The name of the vulnerability."
        }
      },
      "type": "object",
      "required": [
        "cpeUri",
        "description",
        "fixingKbs",
        "name"
      ]
    },
    "google-native:contentwarehouse/v1:DocumentContentCategory": {
      "description": "Indicates the category (image, audio, video etc.) of the original content.",
      "type": "string",
      "enum": [
        {
          "name": "ContentCategoryUnspecified",
          "description": "No category is specified.",
          "value": "CONTENT_CATEGORY_UNSPECIFIED"
        },
        {
          "name": "ContentCategoryImage",
          "description": "Content is of image type.",
          "value": "CONTENT_CATEGORY_IMAGE"
        },
        {
          "name": "ContentCategoryAudio",
          "description": "Content is of audio type.",
          "value": "CONTENT_CATEGORY_AUDIO"
        },
        {
          "name": "ContentCategoryVideo",
          "description": "Content is of video type.",
          "value": "CONTENT_CATEGORY_VIDEO"
        }
      ]
    },
    "google-native:contentwarehouse/v1:DocumentRawDocumentFileType": {
      "description": "This is used when DocAI was not used to load the document and parsing/ extracting is needed for the inline_raw_document. For example, if inline_raw_document is the byte representation of a PDF file, then this should be set to: RAW_DOCUMENT_FILE_TYPE_PDF.",
      "type": "string",
      "enum": [
        {
          "name": "RawDocumentFileTypeUnspecified",
          "description": "No raw document specified or it is non-parsable",
          "value": "RAW_DOCUMENT_FILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "RawDocumentFileTypePdf",
          "description": "Adobe PDF format",
          "value": "RAW_DOCUMENT_FILE_TYPE_PDF"
        },
        {
          "name": "RawDocumentFileTypeDocx",
          "description": "Microsoft Word format",
          "value": "RAW_DOCUMENT_FILE_TYPE_DOCX"
        },
        {
          "name": "RawDocumentFileTypeXlsx",
          "description": "Microsoft Excel format",
          "value": "RAW_DOCUMENT_FILE_TYPE_XLSX"
        },
        {
          "name": "RawDocumentFileTypePptx",
          "description": "Microsoft Powerpoint format",
          "value": "RAW_DOCUMENT_FILE_TYPE_PPTX"
        },
        {
          "name": "RawDocumentFileTypeText",
          "description": "UTF-8 encoded text format",
          "value": "RAW_DOCUMENT_FILE_TYPE_TEXT"
        },
        {
          "name": "RawDocumentFileTypeTiff",
          "description": "TIFF or TIF image file format",
          "value": "RAW_DOCUMENT_FILE_TYPE_TIFF"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1AccessControlAction": {
      "description": "Represents the action responsible for access control list management operations.",
      "properties": {
        "operationType": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1AccessControlActionOperationType",
          "description": "Identifies the type of operation."
        },
        "policy": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1Policy",
          "description": "Represents the new policy from which bindings are added, removed or replaced based on the type of the operation. the policy is limited to a few 10s of KB."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1AccessControlActionOperationType": {
      "description": "Identifies the type of operation.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "The unknown operation type.",
          "value": "UNKNOWN"
        },
        {
          "name": "AddPolicyBinding",
          "description": "Adds newly given policy bindings in the existing bindings list.",
          "value": "ADD_POLICY_BINDING"
        },
        {
          "name": "RemovePolicyBinding",
          "description": "Removes newly given policy bindings from the existing bindings list.",
          "value": "REMOVE_POLICY_BINDING"
        },
        {
          "name": "ReplacePolicyBinding",
          "description": "Replaces existing policy bindings with the given policy binding list",
          "value": "REPLACE_POLICY_BINDING"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1AccessControlActionResponse": {
      "description": "Represents the action responsible for access control list management operations.",
      "properties": {
        "operationType": {
          "type": "string",
          "description": "Identifies the type of operation."
        },
        "policy": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1PolicyResponse",
          "description": "Represents the new policy from which bindings are added, removed or replaced based on the type of the operation. the policy is limited to a few 10s of KB."
        }
      },
      "type": "object",
      "required": [
        "operationType",
        "policy"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1Action": {
      "description": "Represents the action triggered by Rule Engine when the rule is true.",
      "properties": {
        "accessControl": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1AccessControlAction",
          "description": "Action triggering access control operations."
        },
        "actionId": {
          "type": "string",
          "description": "ID of the action. Managed internally."
        },
        "addToFolder": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1AddToFolderAction",
          "description": "Action triggering create document link operation."
        },
        "dataUpdate": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DataUpdateAction",
          "description": "Action triggering data update operations."
        },
        "dataValidation": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DataValidationAction",
          "description": "Action triggering data validation operations."
        },
        "deleteDocumentAction": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DeleteDocumentAction",
          "description": "Action deleting the document."
        },
        "publishToPubSub": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PublishAction",
          "description": "Action publish to Pub/Sub operation."
        },
        "removeFromFolderAction": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1RemoveFromFolderAction",
          "description": "Action removing a document from a folder."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1ActionResponse": {
      "description": "Represents the action triggered by Rule Engine when the rule is true.",
      "properties": {
        "accessControl": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1AccessControlActionResponse",
          "description": "Action triggering access control operations."
        },
        "actionId": {
          "type": "string",
          "description": "ID of the action. Managed internally."
        },
        "addToFolder": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1AddToFolderActionResponse",
          "description": "Action triggering create document link operation."
        },
        "dataUpdate": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DataUpdateActionResponse",
          "description": "Action triggering data update operations."
        },
        "dataValidation": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DataValidationActionResponse",
          "description": "Action triggering data validation operations."
        },
        "deleteDocumentAction": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DeleteDocumentActionResponse",
          "description": "Action deleting the document."
        },
        "publishToPubSub": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PublishActionResponse",
          "description": "Action publish to Pub/Sub operation."
        },
        "removeFromFolderAction": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1RemoveFromFolderActionResponse",
          "description": "Action removing a document from a folder."
        }
      },
      "type": "object",
      "required": [
        "accessControl",
        "actionId",
        "addToFolder",
        "dataUpdate",
        "dataValidation",
        "deleteDocumentAction",
        "publishToPubSub",
        "removeFromFolderAction"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1AddToFolderAction": {
      "description": "Represents the action responsible for adding document under a folder.",
      "properties": {
        "folders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the folder under which new document is to be added. Format: projects/{project_number}/locations/{location}/documents/{document_id}."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1AddToFolderActionResponse": {
      "description": "Represents the action responsible for adding document under a folder.",
      "properties": {
        "folders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the folder under which new document is to be added. Format: projects/{project_number}/locations/{location}/documents/{document_id}."
        }
      },
      "type": "object",
      "required": [
        "folders"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1CloudAIDocumentOption": {
      "description": "Request Option for processing Cloud AI Document in CW Document.",
      "properties": {
        "customizedEntitiesPropertiesConversions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "If set, only selected entities will be converted to properties."
        },
        "enableEntitiesConversions": {
          "type": "boolean",
          "description": "Whether to convert all the entities to properties."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DataUpdateAction": {
      "description": "Represents the action responsible for properties update operations.",
      "properties": {
        "entries": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of (K, V) -> (valid name of the field, new value of the field) E.g., (\"age\", \"60\") entry triggers update of field age with a value of 60. If the field is not present then new entry is added. During update action execution, value strings will be casted to appropriate types."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DataUpdateActionResponse": {
      "description": "Represents the action responsible for properties update operations.",
      "properties": {
        "entries": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of (K, V) -> (valid name of the field, new value of the field) E.g., (\"age\", \"60\") entry triggers update of field age with a value of 60. If the field is not present then new entry is added. During update action execution, value strings will be casted to appropriate types."
        }
      },
      "type": "object",
      "required": [
        "entries"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DataValidationAction": {
      "description": "Represents the action responsible for data validation operations.",
      "properties": {
        "conditions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of (K, V) -> (field, string condition to be evaluated on the field) E.g., (\"age\", \"age > 18 && age < 60\") entry triggers validation of field age with the given condition. Map entries will be ANDed during validation."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DataValidationActionResponse": {
      "description": "Represents the action responsible for data validation operations.",
      "properties": {
        "conditions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of (K, V) -> (field, string condition to be evaluated on the field) E.g., (\"age\", \"age > 18 && age < 60\") entry triggers validation of field age with the given condition. Map entries will be ANDed during validation."
        }
      },
      "type": "object",
      "required": [
        "conditions"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DateTimeArray": {
      "description": "DateTime values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeDateTime"
          },
          "description": "List of datetime values. Both OffsetDateTime and ZonedDateTime are supported."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DateTimeArrayResponse": {
      "description": "DateTime values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeDateTimeResponse"
          },
          "description": "List of datetime values. Both OffsetDateTime and ZonedDateTime are supported."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DateTimeTypeOptions": {
      "description": "Configurations for a date time property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DateTimeTypeOptionsResponse": {
      "description": "Configurations for a date time property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DeleteDocumentAction": {
      "description": "Represents the action responsible for deleting the document.",
      "properties": {
        "enableHardDelete": {
          "type": "boolean",
          "description": "Boolean field to select between hard vs soft delete options. Set 'true' for 'hard delete' and 'false' for 'soft delete'."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1DeleteDocumentActionResponse": {
      "description": "Represents the action responsible for deleting the document.",
      "properties": {
        "enableHardDelete": {
          "type": "boolean",
          "description": "Boolean field to select between hard vs soft delete options. Set 'true' for 'hard delete' and 'false' for 'soft delete'."
        }
      },
      "type": "object",
      "required": [
        "enableHardDelete"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1EnumArray": {
      "description": "Enum values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of enum values."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1EnumArrayResponse": {
      "description": "Enum values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of enum values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1EnumTypeOptions": {
      "description": "Configurations for an enum/categorical property.",
      "properties": {
        "possibleValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of possible enum values."
        },
        "validationCheckDisabled": {
          "type": "boolean",
          "description": "Make sure the Enum property value provided in the document is in the possile value list during document creation. The validation check runs by default."
        }
      },
      "type": "object",
      "required": [
        "possibleValues"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1EnumTypeOptionsResponse": {
      "description": "Configurations for an enum/categorical property.",
      "properties": {
        "possibleValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of possible enum values."
        },
        "validationCheckDisabled": {
          "type": "boolean",
          "description": "Make sure the Enum property value provided in the document is in the possile value list during document creation. The validation check runs by default."
        }
      },
      "type": "object",
      "required": [
        "possibleValues",
        "validationCheckDisabled"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1FloatArray": {
      "description": "Float values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "List of float values."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1FloatArrayResponse": {
      "description": "Float values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "List of float values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1FloatTypeOptions": {
      "description": "Configurations for a float property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1FloatTypeOptionsResponse": {
      "description": "Configurations for a float property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1IntegerArray": {
      "description": "Integer values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of integer values."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1IntegerArrayResponse": {
      "description": "Integer values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of integer values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1IntegerTypeOptions": {
      "description": "Configurations for an integer property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1IntegerTypeOptionsResponse": {
      "description": "Configurations for an integer property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1MapProperty": {
      "description": "Map property value. Represents a structured entries of key value pairs, consisting of field names which map to dynamically typed values.",
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Unordered map of dynamically typed values."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1MapPropertyResponse": {
      "description": "Map property value. Represents a structured entries of key value pairs, consisting of field names which map to dynamically typed values.",
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Unordered map of dynamically typed values."
        }
      },
      "type": "object",
      "required": [
        "fields"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1MapTypeOptions": {
      "description": "Configurations for a Map property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1MapTypeOptionsResponse": {
      "description": "Configurations for a Map property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1MergeFieldsOptions": {
      "description": "Options for merging updated fields.",
      "properties": {
        "replaceMessageFields": {
          "type": "boolean",
          "description": "When merging message fields, the default behavior is to merge the content of two message fields together. If you instead want to use the field from the source message to replace the corresponding field in the destination message, set this flag to true. When this flag is set, specified submessage fields that are missing in source will be cleared in destination."
        },
        "replaceRepeatedFields": {
          "type": "boolean",
          "description": "When merging repeated fields, the default behavior is to append entries from the source repeated field to the destination repeated field. If you instead want to keep only the entries from the source repeated field, set this flag to true. If you want to replace a repeated field within a message field on the destination message, you must set both replace_repeated_fields and replace_message_fields to true, otherwise the repeated fields will be appended."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1Property": {
      "description": "Property of a document.",
      "properties": {
        "dateTimeValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DateTimeArray",
          "description": "Date time property values. It is not supported by CMEK compliant deployment."
        },
        "enumValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1EnumArray",
          "description": "Enum property values."
        },
        "floatValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1FloatArray",
          "description": "Float property values."
        },
        "integerValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1IntegerArray",
          "description": "Integer property values."
        },
        "mapProperty": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1MapProperty",
          "description": "Map property values."
        },
        "name": {
          "type": "string",
          "description": "Must match the name of a PropertyDefinition in the DocumentSchema."
        },
        "propertyValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyArray",
          "description": "Nested structured data property values."
        },
        "textValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TextArray",
          "description": "String/text property values."
        },
        "timestampValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TimestampArray",
          "description": "Timestamp property values. It is not supported by CMEK compliant deployment."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyArray": {
      "description": "Property values.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1Property"
          },
          "description": "List of property values."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyArrayResponse": {
      "description": "Property values.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyResponse"
          },
          "description": "List of property values."
        }
      },
      "type": "object",
      "required": [
        "properties"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyDefinition": {
      "description": "Defines the metadata for a schema property.",
      "properties": {
        "dateTimeTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DateTimeTypeOptions",
          "description": "Date time property. It is not supported by CMEK compliant deployment."
        },
        "displayName": {
          "type": "string",
          "description": "The display-name for the property, used for front-end."
        },
        "enumTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1EnumTypeOptions",
          "description": "Enum/categorical property."
        },
        "floatTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1FloatTypeOptions",
          "description": "Float property."
        },
        "integerTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1IntegerTypeOptions",
          "description": "Integer property."
        },
        "isFilterable": {
          "type": "boolean",
          "description": "Whether the property can be filtered. If this is a sub-property, all the parent properties must be marked filterable."
        },
        "isMetadata": {
          "type": "boolean",
          "description": "Whether the property is user supplied metadata. This out-of-the box placeholder setting can be used to tag derived properties. Its value and interpretation logic should be implemented by API user."
        },
        "isRepeatable": {
          "type": "boolean",
          "description": "Whether the property can have multiple values."
        },
        "isRequired": {
          "type": "boolean",
          "description": "Whether the property is mandatory. Default is 'false', i.e. populating property value can be skipped. If 'true' then user must populate the value for this property."
        },
        "isSearchable": {
          "type": "boolean",
          "description": "Indicates that the property should be included in a global search."
        },
        "mapTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1MapTypeOptions",
          "description": "Map property."
        },
        "name": {
          "type": "string",
          "description": "The name of the metadata property. Must be unique within a document schema and is case insensitive. Names must be non-blank, start with a letter, and can contain alphanumeric characters and: /, :, -, _, and ."
        },
        "propertyTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyTypeOptions",
          "description": "Nested structured data property."
        },
        "retrievalImportance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyDefinitionRetrievalImportance",
          "description": "The retrieval importance of the property during search."
        },
        "schemaSources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource"
          },
          "description": "The mapping information between this property to another schema source."
        },
        "textTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TextTypeOptions",
          "description": "Text/string property."
        },
        "timestampTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TimestampTypeOptions",
          "description": "Timestamp property. It is not supported by CMEK compliant deployment."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyDefinitionResponse": {
      "description": "Defines the metadata for a schema property.",
      "properties": {
        "dateTimeTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DateTimeTypeOptionsResponse",
          "description": "Date time property. It is not supported by CMEK compliant deployment."
        },
        "displayName": {
          "type": "string",
          "description": "The display-name for the property, used for front-end."
        },
        "enumTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1EnumTypeOptionsResponse",
          "description": "Enum/categorical property."
        },
        "floatTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1FloatTypeOptionsResponse",
          "description": "Float property."
        },
        "integerTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1IntegerTypeOptionsResponse",
          "description": "Integer property."
        },
        "isFilterable": {
          "type": "boolean",
          "description": "Whether the property can be filtered. If this is a sub-property, all the parent properties must be marked filterable."
        },
        "isMetadata": {
          "type": "boolean",
          "description": "Whether the property is user supplied metadata. This out-of-the box placeholder setting can be used to tag derived properties. Its value and interpretation logic should be implemented by API user."
        },
        "isRepeatable": {
          "type": "boolean",
          "description": "Whether the property can have multiple values."
        },
        "isRequired": {
          "type": "boolean",
          "description": "Whether the property is mandatory. Default is 'false', i.e. populating property value can be skipped. If 'true' then user must populate the value for this property."
        },
        "isSearchable": {
          "type": "boolean",
          "description": "Indicates that the property should be included in a global search."
        },
        "mapTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1MapTypeOptionsResponse",
          "description": "Map property."
        },
        "name": {
          "type": "string",
          "description": "The name of the metadata property. Must be unique within a document schema and is case insensitive. Names must be non-blank, start with a letter, and can contain alphanumeric characters and: /, :, -, _, and ."
        },
        "propertyTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyTypeOptionsResponse",
          "description": "Nested structured data property."
        },
        "retrievalImportance": {
          "type": "string",
          "description": "The retrieval importance of the property during search."
        },
        "schemaSources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSourceResponse"
          },
          "description": "The mapping information between this property to another schema source."
        },
        "textTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TextTypeOptionsResponse",
          "description": "Text/string property."
        },
        "timestampTypeOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TimestampTypeOptionsResponse",
          "description": "Timestamp property. It is not supported by CMEK compliant deployment."
        }
      },
      "type": "object",
      "required": [
        "dateTimeTypeOptions",
        "displayName",
        "enumTypeOptions",
        "floatTypeOptions",
        "integerTypeOptions",
        "isFilterable",
        "isMetadata",
        "isRepeatable",
        "isRequired",
        "isSearchable",
        "mapTypeOptions",
        "name",
        "propertyTypeOptions",
        "retrievalImportance",
        "schemaSources",
        "textTypeOptions",
        "timestampTypeOptions"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyDefinitionRetrievalImportance": {
      "description": "The retrieval importance of the property during search.",
      "type": "string",
      "enum": [
        {
          "name": "RetrievalImportanceUnspecified",
          "description": "No importance specified. Default medium importance.",
          "value": "RETRIEVAL_IMPORTANCE_UNSPECIFIED"
        },
        {
          "name": "Highest",
          "description": "Highest importance.",
          "value": "HIGHEST"
        },
        {
          "name": "Higher",
          "description": "Higher importance.",
          "value": "HIGHER"
        },
        {
          "name": "High",
          "description": "High importance.",
          "value": "HIGH"
        },
        {
          "name": "Medium",
          "description": "Medium importance.",
          "value": "MEDIUM"
        },
        {
          "name": "Low",
          "description": "Low importance (negative).",
          "value": "LOW"
        },
        {
          "name": "Lowest",
          "description": "Lowest importance (negative).",
          "value": "LOWEST"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource": {
      "description": "The schema source information.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The schema name in the source."
        },
        "processorType": {
          "type": "string",
          "description": "The Doc AI processor type name."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSourceResponse": {
      "description": "The schema source information.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The schema name in the source."
        },
        "processorType": {
          "type": "string",
          "description": "The Doc AI processor type name."
        }
      },
      "type": "object",
      "required": [
        "name",
        "processorType"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyResponse": {
      "description": "Property of a document.",
      "properties": {
        "dateTimeValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1DateTimeArrayResponse",
          "description": "Date time property values. It is not supported by CMEK compliant deployment."
        },
        "enumValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1EnumArrayResponse",
          "description": "Enum property values."
        },
        "floatValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1FloatArrayResponse",
          "description": "Float property values."
        },
        "integerValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1IntegerArrayResponse",
          "description": "Integer property values."
        },
        "mapProperty": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1MapPropertyResponse",
          "description": "Map property values."
        },
        "name": {
          "type": "string",
          "description": "Must match the name of a PropertyDefinition in the DocumentSchema."
        },
        "propertyValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyArrayResponse",
          "description": "Nested structured data property values."
        },
        "textValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TextArrayResponse",
          "description": "String/text property values."
        },
        "timestampValues": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TimestampArrayResponse",
          "description": "Timestamp property values. It is not supported by CMEK compliant deployment."
        }
      },
      "type": "object",
      "required": [
        "dateTimeValues",
        "enumValues",
        "floatValues",
        "integerValues",
        "mapProperty",
        "name",
        "propertyValues",
        "textValues",
        "timestampValues"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyTypeOptions": {
      "description": "Configurations for a nested structured data property.",
      "properties": {
        "propertyDefinitions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyDefinition"
          },
          "description": "List of property definitions."
        }
      },
      "type": "object",
      "required": [
        "propertyDefinitions"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PropertyTypeOptionsResponse": {
      "description": "Configurations for a nested structured data property.",
      "properties": {
        "propertyDefinitions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyDefinitionResponse"
          },
          "description": "List of property definitions."
        }
      },
      "type": "object",
      "required": [
        "propertyDefinitions"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PublishAction": {
      "description": "Represents the action responsible for publishing messages to a Pub/Sub topic.",
      "properties": {
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Messages to be published."
        },
        "topicId": {
          "type": "string",
          "description": "The topic id in the Pub/Sub service for which messages will be published to."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1PublishActionResponse": {
      "description": "Represents the action responsible for publishing messages to a Pub/Sub topic.",
      "properties": {
        "messages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Messages to be published."
        },
        "topicId": {
          "type": "string",
          "description": "The topic id in the Pub/Sub service for which messages will be published to."
        }
      },
      "type": "object",
      "required": [
        "messages",
        "topicId"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1RemoveFromFolderAction": {
      "description": "Represents the action responsible for remove a document from a specific folder.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "Condition of the action to be executed."
        },
        "folder": {
          "type": "string",
          "description": "Name of the folder under which new document is to be added. Format: projects/{project_number}/locations/{location}/documents/{document_id}."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1RemoveFromFolderActionResponse": {
      "description": "Represents the action responsible for remove a document from a specific folder.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "Condition of the action to be executed."
        },
        "folder": {
          "type": "string",
          "description": "Name of the folder under which new document is to be added. Format: projects/{project_number}/locations/{location}/documents/{document_id}."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "folder"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1RequestMetadata": {
      "description": "Meta information is used to improve the performance of the service.",
      "properties": {
        "userInfo": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1UserInfo",
          "description": "Provides user unique identification and groups information."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1Rule": {
      "description": "Represents the rule for a content warehouse trigger.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1Action"
          },
          "description": "List of actions that are executed when the rule is satisfied."
        },
        "condition": {
          "type": "string",
          "description": "Represents the conditional expression to be evaluated. Expression should evaluate to a boolean result. When the condition is true actions are executed. Example: user_role = \"hsbc_role_1\" AND doc.salary > 20000"
        },
        "description": {
          "type": "string",
          "description": "Short description of the rule and its context."
        },
        "ruleId": {
          "type": "string",
          "description": "ID of the rule. It has to be unique across all the examples. This is managed internally."
        },
        "triggerType": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1RuleTriggerType",
          "description": "Identifies the trigger type for running the policy."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1RuleResponse": {
      "description": "Represents the rule for a content warehouse trigger.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1ActionResponse"
          },
          "description": "List of actions that are executed when the rule is satisfied."
        },
        "condition": {
          "type": "string",
          "description": "Represents the conditional expression to be evaluated. Expression should evaluate to a boolean result. When the condition is true actions are executed. Example: user_role = \"hsbc_role_1\" AND doc.salary > 20000"
        },
        "description": {
          "type": "string",
          "description": "Short description of the rule and its context."
        },
        "ruleId": {
          "type": "string",
          "description": "ID of the rule. It has to be unique across all the examples. This is managed internally."
        },
        "triggerType": {
          "type": "string",
          "description": "Identifies the trigger type for running the policy."
        }
      },
      "type": "object",
      "required": [
        "actions",
        "condition",
        "description",
        "ruleId",
        "triggerType"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1RuleTriggerType": {
      "description": "Identifies the trigger type for running the policy.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "Trigger for unknown action.",
          "value": "UNKNOWN"
        },
        {
          "name": "OnCreate",
          "description": "Trigger for create document action.",
          "value": "ON_CREATE"
        },
        {
          "name": "OnUpdate",
          "description": "Trigger for update document action.",
          "value": "ON_UPDATE"
        },
        {
          "name": "OnCreateLink",
          "description": "Trigger for create link action.",
          "value": "ON_CREATE_LINK"
        },
        {
          "name": "OnDeleteLink",
          "description": "Trigger for delete link action.",
          "value": "ON_DELETE_LINK"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1SynonymSetSynonym": {
      "description": "Represents a list of words given by the customer All these words are synonyms of each other.",
      "properties": {
        "words": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "For example: sale, invoice, bill, order"
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1SynonymSetSynonymResponse": {
      "description": "Represents a list of words given by the customer All these words are synonyms of each other.",
      "properties": {
        "words": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "For example: sale, invoice, bill, order"
        }
      },
      "type": "object",
      "required": [
        "words"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TextArray": {
      "description": "String/text values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of text values."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TextArrayResponse": {
      "description": "String/text values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of text values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TextTypeOptions": {
      "description": "Configurations for a text property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TextTypeOptionsResponse": {
      "description": "Configurations for a text property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TimestampArray": {
      "description": "Timestamp values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TimestampValue"
          },
          "description": "List of timestamp values."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TimestampArrayResponse": {
      "description": "Timestamp values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1TimestampValueResponse"
          },
          "description": "List of timestamp values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TimestampTypeOptions": {
      "description": "Configurations for a timestamp property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TimestampTypeOptionsResponse": {
      "description": "Configurations for a timestamp property.",
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TimestampValue": {
      "description": "Timestamp value type.",
      "properties": {
        "textValue": {
          "type": "string",
          "description": "The string must represent a valid instant in UTC and is parsed using java.time.format.DateTimeFormatter.ISO_INSTANT. e.g. \"2013-09-29T18:46:19Z\""
        },
        "timestampValue": {
          "type": "string",
          "description": "Timestamp value"
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1TimestampValueResponse": {
      "description": "Timestamp value type.",
      "properties": {
        "textValue": {
          "type": "string",
          "description": "The string must represent a valid instant in UTC and is parsed using java.time.format.DateTimeFormatter.ISO_INSTANT. e.g. \"2013-09-29T18:46:19Z\""
        },
        "timestampValue": {
          "type": "string",
          "description": "Timestamp value"
        }
      },
      "type": "object",
      "required": [
        "textValue",
        "timestampValue"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1UpdateOptions": {
      "description": "Options for Update operations.",
      "properties": {
        "mergeFieldsOptions": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1MergeFieldsOptions",
          "description": "Options for merging."
        },
        "updateMask": {
          "type": "string",
          "description": "Field mask for merging Document fields. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask"
        },
        "updateType": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1UpdateOptionsUpdateType",
          "description": "Type for update."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1UpdateOptionsUpdateType": {
      "description": "Type for update.",
      "type": "string",
      "enum": [
        {
          "name": "UpdateTypeUnspecified",
          "description": "Defaults to full replace behavior, ie. FULL_REPLACE.",
          "value": "UPDATE_TYPE_UNSPECIFIED"
        },
        {
          "name": "UpdateTypeReplace",
          "description": "Fully replace all the fields (including previously linked raw document). Any field masks will be ignored.",
          "value": "UPDATE_TYPE_REPLACE"
        },
        {
          "name": "UpdateTypeMerge",
          "description": "Merge the fields into the existing entities.",
          "value": "UPDATE_TYPE_MERGE"
        },
        {
          "name": "UpdateTypeInsertPropertiesByNames",
          "description": "Inserts the properties by names.",
          "value": "UPDATE_TYPE_INSERT_PROPERTIES_BY_NAMES"
        },
        {
          "name": "UpdateTypeReplacePropertiesByNames",
          "description": "Replace the properties by names.",
          "value": "UPDATE_TYPE_REPLACE_PROPERTIES_BY_NAMES"
        },
        {
          "name": "UpdateTypeDeletePropertiesByNames",
          "description": "Delete the properties by names.",
          "value": "UPDATE_TYPE_DELETE_PROPERTIES_BY_NAMES"
        },
        {
          "name": "UpdateTypeMergeAndReplaceOrInsertPropertiesByNames",
          "description": "For each of the property, replaces the property if the it exists, otherwise inserts a new property. And for the rest of the fields, merge them based on update mask and merge fields options.",
          "value": "UPDATE_TYPE_MERGE_AND_REPLACE_OR_INSERT_PROPERTIES_BY_NAMES"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudContentwarehouseV1UserInfo": {
      "description": "The user information.",
      "properties": {
        "groupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The unique group identifications which the user is belong to. The format is \"group:yyyy@example.com\";"
        },
        "id": {
          "type": "string",
          "description": "A unique user identification string, as determined by the client. The maximum number of allowed characters is 255. Allowed characters include numbers 0 to 9, uppercase and lowercase letters, and restricted special symbols (:, @, +, -, _, ~) The format is \"user:xxxx@example.com\";"
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1Barcode": {
      "description": "Encodes the detailed information of a barcode.",
      "properties": {
        "format": {
          "type": "string",
          "description": "Format of a barcode. The supported formats are: - `CODE_128`: Code 128 type. - `CODE_39`: Code 39 type. - `CODE_93`: Code 93 type. - `CODABAR`: Codabar type. - `DATA_MATRIX`: 2D Data Matrix type. - `ITF`: ITF type. - `EAN_13`: EAN-13 type. - `EAN_8`: EAN-8 type. - `QR_CODE`: 2D QR code type. - `UPC_A`: UPC-A type. - `UPC_E`: UPC-E type. - `PDF417`: PDF417 type. - `AZTEC`: 2D Aztec code type. - `DATABAR`: GS1 DataBar code type."
        },
        "rawValue": {
          "type": "string",
          "description": "Raw value encoded in the barcode. For example: `'MEBKM:TITLE:Google;URL:https://www.google.com;;'`."
        },
        "valueFormat": {
          "type": "string",
          "description": "Value format describes the format of the value that a barcode encodes. The supported formats are: - `CONTACT_INFO`: Contact information. - `EMAIL`: Email address. - `ISBN`: ISBN identifier. - `PHONE`: Phone number. - `PRODUCT`: Product. - `SMS`: SMS message. - `TEXT`: Text string. - `URL`: URL address. - `WIFI`: Wifi information. - `GEO`: Geo-localization. - `CALENDAR_EVENT`: Calendar event. - `DRIVER_LICENSE`: Driver's license."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1BarcodeResponse": {
      "description": "Encodes the detailed information of a barcode.",
      "properties": {
        "format": {
          "type": "string",
          "description": "Format of a barcode. The supported formats are: - `CODE_128`: Code 128 type. - `CODE_39`: Code 39 type. - `CODE_93`: Code 93 type. - `CODABAR`: Codabar type. - `DATA_MATRIX`: 2D Data Matrix type. - `ITF`: ITF type. - `EAN_13`: EAN-13 type. - `EAN_8`: EAN-8 type. - `QR_CODE`: 2D QR code type. - `UPC_A`: UPC-A type. - `UPC_E`: UPC-E type. - `PDF417`: PDF417 type. - `AZTEC`: 2D Aztec code type. - `DATABAR`: GS1 DataBar code type."
        },
        "rawValue": {
          "type": "string",
          "description": "Raw value encoded in the barcode. For example: `'MEBKM:TITLE:Google;URL:https://www.google.com;;'`."
        },
        "valueFormat": {
          "type": "string",
          "description": "Value format describes the format of the value that a barcode encodes. The supported formats are: - `CONTACT_INFO`: Contact information. - `EMAIL`: Email address. - `ISBN`: ISBN identifier. - `PHONE`: Phone number. - `PRODUCT`: Product. - `SMS`: SMS message. - `TEXT`: Text string. - `URL`: URL address. - `WIFI`: Wifi information. - `GEO`: Geo-localization. - `CALENDAR_EVENT`: Calendar event. - `DRIVER_LICENSE`: Driver's license."
        }
      },
      "type": "object",
      "required": [
        "format",
        "rawValue",
        "valueFormat"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1BoundingPoly": {
      "description": "A bounding polygon for the detected image annotation.",
      "properties": {
        "normalizedVertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1NormalizedVertex"
          },
          "description": "The bounding polygon normalized vertices."
        },
        "vertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1Vertex"
          },
          "description": "The bounding polygon vertices."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1BoundingPolyResponse": {
      "description": "A bounding polygon for the detected image annotation.",
      "properties": {
        "normalizedVertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1NormalizedVertexResponse"
          },
          "description": "The bounding polygon normalized vertices."
        },
        "vertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1VertexResponse"
          },
          "description": "The bounding polygon vertices."
        }
      },
      "type": "object",
      "required": [
        "normalizedVertices",
        "vertices"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1Document": {
      "description": "Document represents the canonical document resource in Document AI. It is an interchange format that provides insights into documents and allows for collaboration between users and Document AI to iterate and optimize for quality.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Optional. Inline document content, represented as a stream of bytes. Note: As with all `bytes` fields, protobuffers use a pure binary representation, whereas JSON representations use base64."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentEntity"
          },
          "description": "A list of entities detected on Document.text. For document shards, entities in this list may cross shard boundaries."
        },
        "entityRelations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentEntityRelation"
          },
          "description": "Placeholder. Relationship among Document.entities."
        },
        "error": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleRpcStatus",
          "description": "Any error that occurred while processing this document."
        },
        "mimeType": {
          "type": "string",
          "description": "An IANA published [media type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml)."
        },
        "pages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPage"
          },
          "description": "Visual page layout for the Document."
        },
        "revisions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentRevision"
          },
          "description": "Placeholder. Revision history of this document."
        },
        "shardInfo": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentShardInfo",
          "description": "Information about the sharding if this document is sharded part of a larger document. If the document is not sharded, this message is not specified."
        },
        "text": {
          "type": "string",
          "description": "Optional. UTF-8 encoded text in reading order from the document."
        },
        "textChanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextChange"
          },
          "description": "Placeholder. A list of text corrections made to Document.text. This is usually used for annotating corrections to OCR mistakes. Text changes for a given revision may not overlap with each other."
        },
        "textStyles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentStyle"
          },
          "description": "Styles for the Document.text."
        },
        "uri": {
          "type": "string",
          "description": "Optional. Currently supports Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. For more information, refer to [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris)."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentEntity": {
      "description": "An entity that could be a phrase in the text or a property that belongs to the document. It is a known entity type, such as a person, an organization, or location.",
      "properties": {
        "confidence": {
          "type": "number",
          "description": "Optional. Confidence of detected Schema entity. Range `[0, 1]`."
        },
        "id": {
          "type": "string",
          "description": "Optional. Canonical id. This will be a unique value in the entity list for this document."
        },
        "mentionId": {
          "type": "string",
          "description": "Optional. Deprecated. Use `id` field instead.",
          "deprecationMessage": "Optional. Deprecated. Use `id` field instead."
        },
        "mentionText": {
          "type": "string",
          "description": "Optional. Text value of the entity e.g. `1600 Amphitheatre Pkwy`."
        },
        "normalizedValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentEntityNormalizedValue",
          "description": "Optional. Normalized entity value. Absent if the extracted value could not be converted or the type (e.g. address) is not supported for certain parsers. This field is also only populated for certain supported document types."
        },
        "pageAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageAnchor",
          "description": "Optional. Represents the provenance of this entity wrt. the location on the page where it was found."
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentEntity"
          },
          "description": "Optional. Entities can be nested to form a hierarchical data structure representing the content in the document."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance",
          "description": "Optional. The history of this annotation."
        },
        "redacted": {
          "type": "boolean",
          "description": "Optional. Whether the entity will be redacted for de-identification purposes."
        },
        "textAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchor",
          "description": "Optional. Provenance of the entity. Text anchor indexing into the Document.text."
        },
        "type": {
          "type": "string",
          "description": "Entity type from a schema e.g. `Address`."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentEntityNormalizedValue": {
      "description": "Parsed and normalized entity value.",
      "properties": {
        "addressValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypePostalAddress",
          "description": "Postal address. See also: https://github.com/googleapis/googleapis/blob/master/google/type/postal_address.proto"
        },
        "booleanValue": {
          "type": "boolean",
          "description": "Boolean value. Can be used for entities with binary values, or for checkboxes."
        },
        "dateValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeDate",
          "description": "Date value. Includes year, month, day. See also: https://github.com/googleapis/googleapis/blob/master/google/type/date.proto"
        },
        "datetimeValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeDateTime",
          "description": "DateTime value. Includes date, time, and timezone. See also: https://github.com/googleapis/googleapis/blob/master/google/type/datetime.proto"
        },
        "floatValue": {
          "type": "number",
          "description": "Float value."
        },
        "integerValue": {
          "type": "integer",
          "description": "Integer value."
        },
        "moneyValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeMoney",
          "description": "Money value. See also: https://github.com/googleapis/googleapis/blob/master/google/type/money.proto"
        },
        "text": {
          "type": "string",
          "description": "Optional. An optional field to store a normalized string. For some entity types, one of respective `structured_value` fields may also be populated. Also not all the types of `structured_value` will be normalized. For example, some processors may not generate `float` or `integer` normalized text by default. Below are sample formats mapped to structured values. - Money/Currency type (`money_value`) is in the ISO 4217 text format. - Date type (`date_value`) is in the ISO 8601 text format. - Datetime type (`datetime_value`) is in the ISO 8601 text format."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentEntityNormalizedValueResponse": {
      "description": "Parsed and normalized entity value.",
      "properties": {
        "addressValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypePostalAddressResponse",
          "description": "Postal address. See also: https://github.com/googleapis/googleapis/blob/master/google/type/postal_address.proto"
        },
        "booleanValue": {
          "type": "boolean",
          "description": "Boolean value. Can be used for entities with binary values, or for checkboxes."
        },
        "dateValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeDateResponse",
          "description": "Date value. Includes year, month, day. See also: https://github.com/googleapis/googleapis/blob/master/google/type/date.proto"
        },
        "datetimeValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeDateTimeResponse",
          "description": "DateTime value. Includes date, time, and timezone. See also: https://github.com/googleapis/googleapis/blob/master/google/type/datetime.proto"
        },
        "floatValue": {
          "type": "number",
          "description": "Float value."
        },
        "integerValue": {
          "type": "integer",
          "description": "Integer value."
        },
        "moneyValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeMoneyResponse",
          "description": "Money value. See also: https://github.com/googleapis/googleapis/blob/master/google/type/money.proto"
        },
        "text": {
          "type": "string",
          "description": "Optional. An optional field to store a normalized string. For some entity types, one of respective `structured_value` fields may also be populated. Also not all the types of `structured_value` will be normalized. For example, some processors may not generate `float` or `integer` normalized text by default. Below are sample formats mapped to structured values. - Money/Currency type (`money_value`) is in the ISO 4217 text format. - Date type (`date_value`) is in the ISO 8601 text format. - Datetime type (`datetime_value`) is in the ISO 8601 text format."
        }
      },
      "type": "object",
      "required": [
        "addressValue",
        "booleanValue",
        "dateValue",
        "datetimeValue",
        "floatValue",
        "integerValue",
        "moneyValue",
        "text"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentEntityRelation": {
      "description": "Relationship between Entities.",
      "properties": {
        "objectId": {
          "type": "string",
          "description": "Object entity id."
        },
        "relation": {
          "type": "string",
          "description": "Relationship description."
        },
        "subjectId": {
          "type": "string",
          "description": "Subject entity id."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentEntityRelationResponse": {
      "description": "Relationship between Entities.",
      "properties": {
        "objectId": {
          "type": "string",
          "description": "Object entity id."
        },
        "relation": {
          "type": "string",
          "description": "Relationship description."
        },
        "subjectId": {
          "type": "string",
          "description": "Subject entity id."
        }
      },
      "type": "object",
      "required": [
        "objectId",
        "relation",
        "subjectId"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentEntityResponse": {
      "description": "An entity that could be a phrase in the text or a property that belongs to the document. It is a known entity type, such as a person, an organization, or location.",
      "properties": {
        "confidence": {
          "type": "number",
          "description": "Optional. Confidence of detected Schema entity. Range `[0, 1]`."
        },
        "mentionId": {
          "type": "string",
          "description": "Optional. Deprecated. Use `id` field instead.",
          "deprecationMessage": "Optional. Deprecated. Use `id` field instead."
        },
        "mentionText": {
          "type": "string",
          "description": "Optional. Text value of the entity e.g. `1600 Amphitheatre Pkwy`."
        },
        "normalizedValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentEntityNormalizedValueResponse",
          "description": "Optional. Normalized entity value. Absent if the extracted value could not be converted or the type (e.g. address) is not supported for certain parsers. This field is also only populated for certain supported document types."
        },
        "pageAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageAnchorResponse",
          "description": "Optional. Represents the provenance of this entity wrt. the location on the page where it was found."
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentEntityResponse"
          },
          "description": "Optional. Entities can be nested to form a hierarchical data structure representing the content in the document."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse",
          "description": "Optional. The history of this annotation."
        },
        "redacted": {
          "type": "boolean",
          "description": "Optional. Whether the entity will be redacted for de-identification purposes."
        },
        "textAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchorResponse",
          "description": "Optional. Provenance of the entity. Text anchor indexing into the Document.text."
        },
        "type": {
          "type": "string",
          "description": "Entity type from a schema e.g. `Address`."
        }
      },
      "type": "object",
      "required": [
        "confidence",
        "mentionId",
        "mentionText",
        "normalizedValue",
        "pageAnchor",
        "properties",
        "provenance",
        "redacted",
        "textAnchor",
        "type"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPage": {
      "description": "A page in a Document.",
      "properties": {
        "blocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageBlock"
          },
          "description": "A list of visually detected text blocks on the page. A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation."
        },
        "detectedBarcodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedBarcode"
          },
          "description": "A list of detected barcodes."
        },
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "dimension": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDimension",
          "description": "Physical dimension of the page."
        },
        "formFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageFormField"
          },
          "description": "A list of visually detected form fields on the page."
        },
        "image": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageImage",
          "description": "Rendered image for this page. This image is preprocessed to remove any skew, rotation, and distortions such that the annotation bounding boxes can be upright and axis-aligned."
        },
        "imageQualityScores": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageImageQualityScores",
          "description": "Image quality scores."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for the page."
        },
        "lines": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLine"
          },
          "description": "A list of visually detected text lines on the page. A collection of tokens that a human would perceive as a line."
        },
        "pageNumber": {
          "type": "integer",
          "description": "1-based index for current Page in a parent Document. Useful when a page is taken out of a Document for individual processing."
        },
        "paragraphs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageParagraph"
          },
          "description": "A list of visually detected text paragraphs on the page. A collection of lines that a human would perceive as a paragraph."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance",
          "description": "The history of this page."
        },
        "symbols": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageSymbol"
          },
          "description": "A list of visually detected symbols on the page."
        },
        "tables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTable"
          },
          "description": "A list of visually detected tables on the page."
        },
        "tokens": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageToken"
          },
          "description": "A list of visually detected tokens on the page."
        },
        "transforms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageMatrix"
          },
          "description": "Transformation matrices that were applied to the original document image to produce Page.image."
        },
        "visualElements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageVisualElement"
          },
          "description": "A list of detected non-text visual elements e.g. checkbox, signature etc. on the page."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageAnchor": {
      "description": "Referencing the visual context of the entity in the Document.pages. Page anchors can be cross-page, consist of multiple bounding polygons and optionally reference specific layout element types.",
      "properties": {
        "pageRefs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageAnchorPageRef"
          },
          "description": "One or more references to visual page elements"
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageAnchorPageRef": {
      "description": "Represents a weak reference to a page element within a document.",
      "properties": {
        "boundingPoly": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1BoundingPoly",
          "description": "Optional. Identifies the bounding polygon of a layout element on the page."
        },
        "confidence": {
          "type": "number",
          "description": "Optional. Confidence of detected page element, if applicable. Range `[0, 1]`."
        },
        "layoutId": {
          "type": "string",
          "description": "Optional. Deprecated. Use PageRef.bounding_poly instead.",
          "deprecationMessage": "Optional. Deprecated. Use PageRef.bounding_poly instead."
        },
        "layoutType": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageAnchorPageRefLayoutType",
          "description": "Optional. The type of the layout element that is being referenced if any."
        },
        "page": {
          "type": "string",
          "description": "Index into the Document.pages element, for example using `Document.pages` to locate the related page element. This field is skipped when its value is the default `0`. See https://developers.google.com/protocol-buffers/docs/proto3#json."
        }
      },
      "type": "object",
      "required": [
        "page"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageAnchorPageRefLayoutType": {
      "description": "Optional. The type of the layout element that is being referenced if any.",
      "type": "string",
      "enum": [
        {
          "name": "LayoutTypeUnspecified",
          "description": "Layout Unspecified.",
          "value": "LAYOUT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Block",
          "description": "References a Page.blocks element.",
          "value": "BLOCK"
        },
        {
          "name": "Paragraph",
          "description": "References a Page.paragraphs element.",
          "value": "PARAGRAPH"
        },
        {
          "name": "Line",
          "description": "References a Page.lines element.",
          "value": "LINE"
        },
        {
          "name": "Token",
          "description": "References a Page.tokens element.",
          "value": "TOKEN"
        },
        {
          "name": "VisualElement",
          "description": "References a Page.visual_elements element.",
          "value": "VISUAL_ELEMENT"
        },
        {
          "name": "Table",
          "description": "Refrrences a Page.tables element.",
          "value": "TABLE"
        },
        {
          "name": "FormField",
          "description": "References a Page.form_fields element.",
          "value": "FORM_FIELD"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageAnchorPageRefResponse": {
      "description": "Represents a weak reference to a page element within a document.",
      "properties": {
        "boundingPoly": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1BoundingPolyResponse",
          "description": "Optional. Identifies the bounding polygon of a layout element on the page."
        },
        "confidence": {
          "type": "number",
          "description": "Optional. Confidence of detected page element, if applicable. Range `[0, 1]`."
        },
        "layoutId": {
          "type": "string",
          "description": "Optional. Deprecated. Use PageRef.bounding_poly instead.",
          "deprecationMessage": "Optional. Deprecated. Use PageRef.bounding_poly instead."
        },
        "layoutType": {
          "type": "string",
          "description": "Optional. The type of the layout element that is being referenced if any."
        },
        "page": {
          "type": "string",
          "description": "Index into the Document.pages element, for example using `Document.pages` to locate the related page element. This field is skipped when its value is the default `0`. See https://developers.google.com/protocol-buffers/docs/proto3#json."
        }
      },
      "type": "object",
      "required": [
        "boundingPoly",
        "confidence",
        "layoutId",
        "layoutType",
        "page"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageAnchorResponse": {
      "description": "Referencing the visual context of the entity in the Document.pages. Page anchors can be cross-page, consist of multiple bounding polygons and optionally reference specific layout element types.",
      "properties": {
        "pageRefs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageAnchorPageRefResponse"
          },
          "description": "One or more references to visual page elements"
        }
      },
      "type": "object",
      "required": [
        "pageRefs"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageBlock": {
      "description": "A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for Block."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance",
          "description": "The history of this annotation."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageBlockResponse": {
      "description": "A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for Block."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse",
          "description": "The history of this annotation."
        }
      },
      "type": "object",
      "required": [
        "detectedLanguages",
        "layout",
        "provenance"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageDetectedBarcode": {
      "description": "A detected barcode.",
      "properties": {
        "barcode": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1Barcode",
          "description": "Detailed barcode information of the DetectedBarcode."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for DetectedBarcode."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageDetectedBarcodeResponse": {
      "description": "A detected barcode.",
      "properties": {
        "barcode": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1BarcodeResponse",
          "description": "Detailed barcode information of the DetectedBarcode."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for DetectedBarcode."
        }
      },
      "type": "object",
      "required": [
        "barcode",
        "layout"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage": {
      "description": "Detected language for a structural component.",
      "properties": {
        "confidence": {
          "type": "number",
          "description": "Confidence of detected language. Range `[0, 1]`."
        },
        "languageCode": {
          "type": "string",
          "description": "The [BCP-47 language code](https://www.unicode.org/reports/tr35/#Unicode_locale_identifier), such as `en-US` or `sr-Latn`."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse": {
      "description": "Detected language for a structural component.",
      "properties": {
        "confidence": {
          "type": "number",
          "description": "Confidence of detected language. Range `[0, 1]`."
        },
        "languageCode": {
          "type": "string",
          "description": "The [BCP-47 language code](https://www.unicode.org/reports/tr35/#Unicode_locale_identifier), such as `en-US` or `sr-Latn`."
        }
      },
      "type": "object",
      "required": [
        "confidence",
        "languageCode"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageDimension": {
      "description": "Dimension for the page.",
      "properties": {
        "height": {
          "type": "number",
          "description": "Page height."
        },
        "unit": {
          "type": "string",
          "description": "Dimension unit."
        },
        "width": {
          "type": "number",
          "description": "Page width."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageDimensionResponse": {
      "description": "Dimension for the page.",
      "properties": {
        "height": {
          "type": "number",
          "description": "Page height."
        },
        "unit": {
          "type": "string",
          "description": "Dimension unit."
        },
        "width": {
          "type": "number",
          "description": "Page width."
        }
      },
      "type": "object",
      "required": [
        "height",
        "unit",
        "width"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageFormField": {
      "description": "A form field detected on the page.",
      "properties": {
        "correctedKeyText": {
          "type": "string",
          "description": "Created for Labeling UI to export key text. If corrections were made to the text identified by the `field_name.text_anchor`, this field will contain the correction."
        },
        "correctedValueText": {
          "type": "string",
          "description": "Created for Labeling UI to export value text. If corrections were made to the text identified by the `field_value.text_anchor`, this field will contain the correction."
        },
        "fieldName": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for the FormField name. e.g. `Address`, `Email`, `Grand total`, `Phone number`, etc."
        },
        "fieldValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for the FormField value."
        },
        "nameDetectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages for name together with confidence."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance",
          "description": "The history of this annotation."
        },
        "valueDetectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages for value together with confidence."
        },
        "valueType": {
          "type": "string",
          "description": "If the value is non-textual, this field represents the type. Current valid values are: - blank (this indicates the `field_value` is normal text) - `unfilled_checkbox` - `filled_checkbox`"
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageFormFieldResponse": {
      "description": "A form field detected on the page.",
      "properties": {
        "correctedKeyText": {
          "type": "string",
          "description": "Created for Labeling UI to export key text. If corrections were made to the text identified by the `field_name.text_anchor`, this field will contain the correction."
        },
        "correctedValueText": {
          "type": "string",
          "description": "Created for Labeling UI to export value text. If corrections were made to the text identified by the `field_value.text_anchor`, this field will contain the correction."
        },
        "fieldName": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for the FormField name. e.g. `Address`, `Email`, `Grand total`, `Phone number`, etc."
        },
        "fieldValue": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for the FormField value."
        },
        "nameDetectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages for name together with confidence."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse",
          "description": "The history of this annotation."
        },
        "valueDetectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages for value together with confidence."
        },
        "valueType": {
          "type": "string",
          "description": "If the value is non-textual, this field represents the type. Current valid values are: - blank (this indicates the `field_value` is normal text) - `unfilled_checkbox` - `filled_checkbox`"
        }
      },
      "type": "object",
      "required": [
        "correctedKeyText",
        "correctedValueText",
        "fieldName",
        "fieldValue",
        "nameDetectedLanguages",
        "provenance",
        "valueDetectedLanguages",
        "valueType"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageImage": {
      "description": "Rendered image contents for this page.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Raw byte content of the image."
        },
        "height": {
          "type": "integer",
          "description": "Height of the image in pixels."
        },
        "mimeType": {
          "type": "string",
          "description": "Encoding [media type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml) for the image."
        },
        "width": {
          "type": "integer",
          "description": "Width of the image in pixels."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageImageQualityScores": {
      "description": "Image quality scores for the page image.",
      "properties": {
        "detectedDefects": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect"
          },
          "description": "A list of detected defects."
        },
        "qualityScore": {
          "type": "number",
          "description": "The overall quality score. Range `[0, 1]` where `1` is perfect quality."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect": {
      "description": "Image Quality Defects",
      "properties": {
        "confidence": {
          "type": "number",
          "description": "Confidence of detected defect. Range `[0, 1]` where `1` indicates strong confidence that the defect exists."
        },
        "type": {
          "type": "string",
          "description": "Name of the defect type. Supported values are: - `quality/defect_blurry` - `quality/defect_noisy` - `quality/defect_dark` - `quality/defect_faint` - `quality/defect_text_too_small` - `quality/defect_document_cutoff` - `quality/defect_text_cutoff` - `quality/defect_glare`"
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefectResponse": {
      "description": "Image Quality Defects",
      "properties": {
        "confidence": {
          "type": "number",
          "description": "Confidence of detected defect. Range `[0, 1]` where `1` indicates strong confidence that the defect exists."
        },
        "type": {
          "type": "string",
          "description": "Name of the defect type. Supported values are: - `quality/defect_blurry` - `quality/defect_noisy` - `quality/defect_dark` - `quality/defect_faint` - `quality/defect_text_too_small` - `quality/defect_document_cutoff` - `quality/defect_text_cutoff` - `quality/defect_glare`"
        }
      },
      "type": "object",
      "required": [
        "confidence",
        "type"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageImageQualityScoresResponse": {
      "description": "Image quality scores for the page image.",
      "properties": {
        "detectedDefects": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefectResponse"
          },
          "description": "A list of detected defects."
        },
        "qualityScore": {
          "type": "number",
          "description": "The overall quality score. Range `[0, 1]` where `1` is perfect quality."
        }
      },
      "type": "object",
      "required": [
        "detectedDefects",
        "qualityScore"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageImageResponse": {
      "description": "Rendered image contents for this page.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Raw byte content of the image."
        },
        "height": {
          "type": "integer",
          "description": "Height of the image in pixels."
        },
        "mimeType": {
          "type": "string",
          "description": "Encoding [media type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml) for the image."
        },
        "width": {
          "type": "integer",
          "description": "Width of the image in pixels."
        }
      },
      "type": "object",
      "required": [
        "content",
        "height",
        "mimeType",
        "width"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageLayout": {
      "description": "Visual element describing a layout unit on a page.",
      "properties": {
        "boundingPoly": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1BoundingPoly",
          "description": "The bounding polygon for the Layout."
        },
        "confidence": {
          "type": "number",
          "description": "Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range `[0, 1]`."
        },
        "orientation": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutOrientation",
          "description": "Detected orientation for the Layout."
        },
        "textAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchor",
          "description": "Text anchor indexing into the Document.text."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageLayoutOrientation": {
      "description": "Detected orientation for the Layout.",
      "type": "string",
      "enum": [
        {
          "name": "OrientationUnspecified",
          "description": "Unspecified orientation.",
          "value": "ORIENTATION_UNSPECIFIED"
        },
        {
          "name": "PageUp",
          "description": "Orientation is aligned with page up.",
          "value": "PAGE_UP"
        },
        {
          "name": "PageRight",
          "description": "Orientation is aligned with page right. Turn the head 90 degrees clockwise from upright to read.",
          "value": "PAGE_RIGHT"
        },
        {
          "name": "PageDown",
          "description": "Orientation is aligned with page down. Turn the head 180 degrees from upright to read.",
          "value": "PAGE_DOWN"
        },
        {
          "name": "PageLeft",
          "description": "Orientation is aligned with page left. Turn the head 90 degrees counterclockwise from upright to read.",
          "value": "PAGE_LEFT"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse": {
      "description": "Visual element describing a layout unit on a page.",
      "properties": {
        "boundingPoly": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1BoundingPolyResponse",
          "description": "The bounding polygon for the Layout."
        },
        "confidence": {
          "type": "number",
          "description": "Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range `[0, 1]`."
        },
        "orientation": {
          "type": "string",
          "description": "Detected orientation for the Layout."
        },
        "textAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchorResponse",
          "description": "Text anchor indexing into the Document.text."
        }
      },
      "type": "object",
      "required": [
        "boundingPoly",
        "confidence",
        "orientation",
        "textAnchor"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageLine": {
      "description": "A collection of tokens that a human would perceive as a line. Does not cross column boundaries, can be horizontal, vertical, etc.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for Line."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance",
          "description": "The history of this annotation."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageLineResponse": {
      "description": "A collection of tokens that a human would perceive as a line. Does not cross column boundaries, can be horizontal, vertical, etc.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for Line."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse",
          "description": "The history of this annotation."
        }
      },
      "type": "object",
      "required": [
        "detectedLanguages",
        "layout",
        "provenance"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageMatrix": {
      "description": "Representation for transformation matrix, intended to be compatible and used with OpenCV format for image manipulation.",
      "properties": {
        "cols": {
          "type": "integer",
          "description": "Number of columns in the matrix."
        },
        "data": {
          "type": "string",
          "description": "The matrix data."
        },
        "rows": {
          "type": "integer",
          "description": "Number of rows in the matrix."
        },
        "type": {
          "type": "integer",
          "description": "This encodes information about what data type the matrix uses. For example, 0 (CV_8U) is an unsigned 8-bit image. For the full list of OpenCV primitive data types, please refer to https://docs.opencv.org/4.3.0/d1/d1b/group__core__hal__interface.html"
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageMatrixResponse": {
      "description": "Representation for transformation matrix, intended to be compatible and used with OpenCV format for image manipulation.",
      "properties": {
        "cols": {
          "type": "integer",
          "description": "Number of columns in the matrix."
        },
        "data": {
          "type": "string",
          "description": "The matrix data."
        },
        "rows": {
          "type": "integer",
          "description": "Number of rows in the matrix."
        },
        "type": {
          "type": "integer",
          "description": "This encodes information about what data type the matrix uses. For example, 0 (CV_8U) is an unsigned 8-bit image. For the full list of OpenCV primitive data types, please refer to https://docs.opencv.org/4.3.0/d1/d1b/group__core__hal__interface.html"
        }
      },
      "type": "object",
      "required": [
        "cols",
        "data",
        "rows",
        "type"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageParagraph": {
      "description": "A collection of lines that a human would perceive as a paragraph.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for Paragraph."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance",
          "description": "The history of this annotation."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageParagraphResponse": {
      "description": "A collection of lines that a human would perceive as a paragraph.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for Paragraph."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse",
          "description": "The history of this annotation."
        }
      },
      "type": "object",
      "required": [
        "detectedLanguages",
        "layout",
        "provenance"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageResponse": {
      "description": "A page in a Document.",
      "properties": {
        "blocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageBlockResponse"
          },
          "description": "A list of visually detected text blocks on the page. A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation."
        },
        "detectedBarcodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedBarcodeResponse"
          },
          "description": "A list of detected barcodes."
        },
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "dimension": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDimensionResponse",
          "description": "Physical dimension of the page."
        },
        "formFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageFormFieldResponse"
          },
          "description": "A list of visually detected form fields on the page."
        },
        "image": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageImageResponse",
          "description": "Rendered image for this page. This image is preprocessed to remove any skew, rotation, and distortions such that the annotation bounding boxes can be upright and axis-aligned."
        },
        "imageQualityScores": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageImageQualityScoresResponse",
          "description": "Image quality scores."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for the page."
        },
        "lines": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLineResponse"
          },
          "description": "A list of visually detected text lines on the page. A collection of tokens that a human would perceive as a line."
        },
        "pageNumber": {
          "type": "integer",
          "description": "1-based index for current Page in a parent Document. Useful when a page is taken out of a Document for individual processing."
        },
        "paragraphs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageParagraphResponse"
          },
          "description": "A list of visually detected text paragraphs on the page. A collection of lines that a human would perceive as a paragraph."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse",
          "description": "The history of this page."
        },
        "symbols": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageSymbolResponse"
          },
          "description": "A list of visually detected symbols on the page."
        },
        "tables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTableResponse"
          },
          "description": "A list of visually detected tables on the page."
        },
        "tokens": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTokenResponse"
          },
          "description": "A list of visually detected tokens on the page."
        },
        "transforms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageMatrixResponse"
          },
          "description": "Transformation matrices that were applied to the original document image to produce Page.image."
        },
        "visualElements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageVisualElementResponse"
          },
          "description": "A list of detected non-text visual elements e.g. checkbox, signature etc. on the page."
        }
      },
      "type": "object",
      "required": [
        "blocks",
        "detectedBarcodes",
        "detectedLanguages",
        "dimension",
        "formFields",
        "image",
        "imageQualityScores",
        "layout",
        "lines",
        "pageNumber",
        "paragraphs",
        "provenance",
        "symbols",
        "tables",
        "tokens",
        "transforms",
        "visualElements"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageSymbol": {
      "description": "A detected symbol.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for Symbol."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageSymbolResponse": {
      "description": "A detected symbol.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for Symbol."
        }
      },
      "type": "object",
      "required": [
        "detectedLanguages",
        "layout"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTable": {
      "description": "A table representation similar to HTML table structure.",
      "properties": {
        "bodyRows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTableTableRow"
          },
          "description": "Body rows of the table."
        },
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "headerRows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTableTableRow"
          },
          "description": "Header rows of the table."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for Table."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance",
          "description": "The history of this table."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTableResponse": {
      "description": "A table representation similar to HTML table structure.",
      "properties": {
        "bodyRows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTableTableRowResponse"
          },
          "description": "Body rows of the table."
        },
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "headerRows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTableTableRowResponse"
          },
          "description": "Header rows of the table."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for Table."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse",
          "description": "The history of this table."
        }
      },
      "type": "object",
      "required": [
        "bodyRows",
        "detectedLanguages",
        "headerRows",
        "layout",
        "provenance"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTableTableCell": {
      "description": "A cell representation inside the table.",
      "properties": {
        "colSpan": {
          "type": "integer",
          "description": "How many columns this cell spans."
        },
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for TableCell."
        },
        "rowSpan": {
          "type": "integer",
          "description": "How many rows this cell spans."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTableTableCellResponse": {
      "description": "A cell representation inside the table.",
      "properties": {
        "colSpan": {
          "type": "integer",
          "description": "How many columns this cell spans."
        },
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for TableCell."
        },
        "rowSpan": {
          "type": "integer",
          "description": "How many rows this cell spans."
        }
      },
      "type": "object",
      "required": [
        "colSpan",
        "detectedLanguages",
        "layout",
        "rowSpan"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTableTableRow": {
      "description": "A row of table cells.",
      "properties": {
        "cells": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTableTableCell"
          },
          "description": "Cells that make up this row."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTableTableRowResponse": {
      "description": "A row of table cells.",
      "properties": {
        "cells": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTableTableCellResponse"
          },
          "description": "Cells that make up this row."
        }
      },
      "type": "object",
      "required": [
        "cells"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageToken": {
      "description": "A detected token.",
      "properties": {
        "detectedBreak": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak",
          "description": "Detected break at the end of a Token."
        },
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for Token."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance",
          "description": "The history of this annotation."
        },
        "styleInfo": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTokenStyleInfo",
          "description": "Text style attributes."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak": {
      "description": "Detected break at the end of a Token.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreakType",
          "description": "Detected break type."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreakResponse": {
      "description": "Detected break at the end of a Token.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Detected break type."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreakType": {
      "description": "Detected break type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified break type.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Space",
          "description": "A single whitespace.",
          "value": "SPACE"
        },
        {
          "name": "WideSpace",
          "description": "A wider whitespace.",
          "value": "WIDE_SPACE"
        },
        {
          "name": "Hyphen",
          "description": "A hyphen that indicates that a token has been split across lines.",
          "value": "HYPHEN"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTokenResponse": {
      "description": "A detected token.",
      "properties": {
        "detectedBreak": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreakResponse",
          "description": "Detected break at the end of a Token."
        },
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for Token."
        },
        "provenance": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse",
          "description": "The history of this annotation."
        },
        "styleInfo": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageTokenStyleInfoResponse",
          "description": "Text style attributes."
        }
      },
      "type": "object",
      "required": [
        "detectedBreak",
        "detectedLanguages",
        "layout",
        "provenance",
        "styleInfo"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTokenStyleInfo": {
      "description": "Font and other text style attributes.",
      "properties": {
        "backgroundColor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeColor",
          "description": "Color of the background."
        },
        "bold": {
          "type": "boolean",
          "description": "Whether the text is bold (equivalent to font_weight is at least `700`)."
        },
        "fontSize": {
          "type": "integer",
          "description": "Font size in points (`1` point is `¹⁄₇₂` inches)."
        },
        "fontType": {
          "type": "string",
          "description": "Name or style of the font."
        },
        "fontWeight": {
          "type": "integer",
          "description": "TrueType weight on a scale `100` (thin) to `1000` (ultra-heavy). Normal is `400`, bold is `700`."
        },
        "handwritten": {
          "type": "boolean",
          "description": "Whether the text is handwritten."
        },
        "italic": {
          "type": "boolean",
          "description": "Whether the text is italic."
        },
        "letterSpacing": {
          "type": "number",
          "description": "Letter spacing in points."
        },
        "pixelFontSize": {
          "type": "number",
          "description": "Font size in pixels, equal to _unrounded font_size_ * _resolution_ ÷ `72.0`."
        },
        "smallcaps": {
          "type": "boolean",
          "description": "Whether the text is in small caps."
        },
        "strikeout": {
          "type": "boolean",
          "description": "Whether the text is strikethrough."
        },
        "subscript": {
          "type": "boolean",
          "description": "Whether the text is a subscript."
        },
        "superscript": {
          "type": "boolean",
          "description": "Whether the text is a superscript."
        },
        "textColor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeColor",
          "description": "Color of the text."
        },
        "underlined": {
          "type": "boolean",
          "description": "Whether the text is underlined."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageTokenStyleInfoResponse": {
      "description": "Font and other text style attributes.",
      "properties": {
        "backgroundColor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeColorResponse",
          "description": "Color of the background."
        },
        "bold": {
          "type": "boolean",
          "description": "Whether the text is bold (equivalent to font_weight is at least `700`)."
        },
        "fontSize": {
          "type": "integer",
          "description": "Font size in points (`1` point is `¹⁄₇₂` inches)."
        },
        "fontType": {
          "type": "string",
          "description": "Name or style of the font."
        },
        "fontWeight": {
          "type": "integer",
          "description": "TrueType weight on a scale `100` (thin) to `1000` (ultra-heavy). Normal is `400`, bold is `700`."
        },
        "handwritten": {
          "type": "boolean",
          "description": "Whether the text is handwritten."
        },
        "italic": {
          "type": "boolean",
          "description": "Whether the text is italic."
        },
        "letterSpacing": {
          "type": "number",
          "description": "Letter spacing in points."
        },
        "pixelFontSize": {
          "type": "number",
          "description": "Font size in pixels, equal to _unrounded font_size_ * _resolution_ ÷ `72.0`."
        },
        "smallcaps": {
          "type": "boolean",
          "description": "Whether the text is in small caps."
        },
        "strikeout": {
          "type": "boolean",
          "description": "Whether the text is strikethrough."
        },
        "subscript": {
          "type": "boolean",
          "description": "Whether the text is a subscript."
        },
        "superscript": {
          "type": "boolean",
          "description": "Whether the text is a superscript."
        },
        "textColor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeColorResponse",
          "description": "Color of the text."
        },
        "underlined": {
          "type": "boolean",
          "description": "Whether the text is underlined."
        }
      },
      "type": "object",
      "required": [
        "backgroundColor",
        "bold",
        "fontSize",
        "fontType",
        "fontWeight",
        "handwritten",
        "italic",
        "letterSpacing",
        "pixelFontSize",
        "smallcaps",
        "strikeout",
        "subscript",
        "superscript",
        "textColor",
        "underlined"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageVisualElement": {
      "description": "Detected non-text visual elements e.g. checkbox, signature etc. on the page.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayout",
          "description": "Layout for VisualElement."
        },
        "type": {
          "type": "string",
          "description": "Type of the VisualElement."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentPageVisualElementResponse": {
      "description": "Detected non-text visual elements e.g. checkbox, signature etc. on the page.",
      "properties": {
        "detectedLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageDetectedLanguageResponse"
          },
          "description": "A list of detected languages together with confidence."
        },
        "layout": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageLayoutResponse",
          "description": "Layout for VisualElement."
        },
        "type": {
          "type": "string",
          "description": "Type of the VisualElement."
        }
      },
      "type": "object",
      "required": [
        "detectedLanguages",
        "layout",
        "type"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentProvenance": {
      "description": "Structure to identify provenance relationships between annotations in different revisions.",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The Id of this operation. Needs to be unique within the scope of the revision."
        },
        "parents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceParent"
          },
          "description": "References to the original elements that are replaced."
        },
        "revision": {
          "type": "integer",
          "description": "The index of the revision that produced this element."
        },
        "type": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceType",
          "description": "The type of provenance operation."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentProvenanceParent": {
      "description": "The parent element the current element is based on. Used for referencing/aligning, removal and replacement operations.",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The id of the parent provenance."
        },
        "index": {
          "type": "integer",
          "description": "The index of the parent item in the corresponding item list (eg. list of entities, properties within entities, etc.) in the parent revision."
        },
        "revision": {
          "type": "integer",
          "description": "The index of the index into current revision's parent_ids list."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentProvenanceParentResponse": {
      "description": "The parent element the current element is based on. Used for referencing/aligning, removal and replacement operations.",
      "properties": {
        "index": {
          "type": "integer",
          "description": "The index of the parent item in the corresponding item list (eg. list of entities, properties within entities, etc.) in the parent revision."
        },
        "revision": {
          "type": "integer",
          "description": "The index of the index into current revision's parent_ids list."
        }
      },
      "type": "object",
      "required": [
        "index",
        "revision"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentProvenanceResponse": {
      "description": "Structure to identify provenance relationships between annotations in different revisions.",
      "properties": {
        "parents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceParentResponse"
          },
          "description": "References to the original elements that are replaced."
        },
        "revision": {
          "type": "integer",
          "description": "The index of the revision that produced this element."
        },
        "type": {
          "type": "string",
          "description": "The type of provenance operation."
        }
      },
      "type": "object",
      "required": [
        "parents",
        "revision",
        "type"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentProvenanceType": {
      "description": "The type of provenance operation.",
      "type": "string",
      "enum": [
        {
          "name": "OperationTypeUnspecified",
          "description": "Operation type unspecified. If no operation is specified a provenance entry is simply used to match against a `parent`.",
          "value": "OPERATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Add",
          "description": "Add an element.",
          "value": "ADD"
        },
        {
          "name": "Remove",
          "description": "Remove an element identified by `parent`.",
          "value": "REMOVE"
        },
        {
          "name": "Update",
          "description": "Updates any fields within the given provenance scope of the message. It overwrites the fields rather than replacing them. Use this when you want to update a field value of an entity without also updating all the child properties.",
          "value": "UPDATE"
        },
        {
          "name": "Replace",
          "description": "Currently unused. Replace an element identified by `parent`.",
          "value": "REPLACE"
        },
        {
          "name": "EvalRequested",
          "description": "Deprecated. Request human review for the element identified by `parent`.",
          "value": "EVAL_REQUESTED"
        },
        {
          "name": "EvalApproved",
          "description": "Deprecated. Element is reviewed and approved at human review, confidence will be set to 1.0.",
          "value": "EVAL_APPROVED"
        },
        {
          "name": "EvalSkipped",
          "description": "Deprecated. Element is skipped in the validation process.",
          "value": "EVAL_SKIPPED"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentResponse": {
      "description": "Document represents the canonical document resource in Document AI. It is an interchange format that provides insights into documents and allows for collaboration between users and Document AI to iterate and optimize for quality.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Optional. Inline document content, represented as a stream of bytes. Note: As with all `bytes` fields, protobuffers use a pure binary representation, whereas JSON representations use base64."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentEntityResponse"
          },
          "description": "A list of entities detected on Document.text. For document shards, entities in this list may cross shard boundaries."
        },
        "entityRelations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentEntityRelationResponse"
          },
          "description": "Placeholder. Relationship among Document.entities."
        },
        "error": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleRpcStatusResponse",
          "description": "Any error that occurred while processing this document."
        },
        "mimeType": {
          "type": "string",
          "description": "An IANA published [media type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml)."
        },
        "pages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentPageResponse"
          },
          "description": "Visual page layout for the Document."
        },
        "revisions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentRevisionResponse"
          },
          "description": "Placeholder. Revision history of this document."
        },
        "shardInfo": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentShardInfoResponse",
          "description": "Information about the sharding if this document is sharded part of a larger document. If the document is not sharded, this message is not specified."
        },
        "text": {
          "type": "string",
          "description": "Optional. UTF-8 encoded text in reading order from the document."
        },
        "textChanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextChangeResponse"
          },
          "description": "Placeholder. A list of text corrections made to Document.text. This is usually used for annotating corrections to OCR mistakes. Text changes for a given revision may not overlap with each other."
        },
        "textStyles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentStyleResponse"
          },
          "description": "Styles for the Document.text."
        },
        "uri": {
          "type": "string",
          "description": "Optional. Currently supports Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. For more information, refer to [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris)."
        }
      },
      "type": "object",
      "required": [
        "content",
        "entities",
        "entityRelations",
        "error",
        "mimeType",
        "pages",
        "revisions",
        "shardInfo",
        "text",
        "textChanges",
        "textStyles",
        "uri"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentRevision": {
      "description": "Contains past or forward revisions of this document.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "If the change was made by a person specify the name or id of that person."
        },
        "createTime": {
          "type": "string",
          "description": "The time that the revision was created, internally generated by doc proto storage at the time of create."
        },
        "humanReview": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentRevisionHumanReview",
          "description": "Human Review information of this revision."
        },
        "id": {
          "type": "string",
          "description": "Id of the revision, internally generated by doc proto storage. Unique within the context of the document."
        },
        "parent": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The revisions that this revision is based on. This can include one or more parent (when documents are merged.) This field represents the index into the `revisions` field."
        },
        "parentIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The revisions that this revision is based on. Must include all the ids that have anything to do with this revision - eg. there are `provenance.parent.revision` fields that index into this field."
        },
        "processor": {
          "type": "string",
          "description": "If the annotation was made by processor identify the processor by its resource name."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentRevisionHumanReview": {
      "description": "Human Review information of the document.",
      "properties": {
        "state": {
          "type": "string",
          "description": "Human review state. e.g. `requested`, `succeeded`, `rejected`."
        },
        "stateMessage": {
          "type": "string",
          "description": "A message providing more details about the current state of processing. For example, the rejection reason when the state is `rejected`."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentRevisionHumanReviewResponse": {
      "description": "Human Review information of the document.",
      "properties": {
        "state": {
          "type": "string",
          "description": "Human review state. e.g. `requested`, `succeeded`, `rejected`."
        },
        "stateMessage": {
          "type": "string",
          "description": "A message providing more details about the current state of processing. For example, the rejection reason when the state is `rejected`."
        }
      },
      "type": "object",
      "required": [
        "state",
        "stateMessage"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentRevisionResponse": {
      "description": "Contains past or forward revisions of this document.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "If the change was made by a person specify the name or id of that person."
        },
        "createTime": {
          "type": "string",
          "description": "The time that the revision was created, internally generated by doc proto storage at the time of create."
        },
        "humanReview": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentRevisionHumanReviewResponse",
          "description": "Human Review information of this revision."
        },
        "parent": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The revisions that this revision is based on. This can include one or more parent (when documents are merged.) This field represents the index into the `revisions` field."
        },
        "parentIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The revisions that this revision is based on. Must include all the ids that have anything to do with this revision - eg. there are `provenance.parent.revision` fields that index into this field."
        },
        "processor": {
          "type": "string",
          "description": "If the annotation was made by processor identify the processor by its resource name."
        }
      },
      "type": "object",
      "required": [
        "agent",
        "createTime",
        "humanReview",
        "parent",
        "parentIds",
        "processor"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentShardInfo": {
      "description": "For a large document, sharding may be performed to produce several document shards. Each document shard contains this field to detail which shard it is.",
      "properties": {
        "shardCount": {
          "type": "string",
          "description": "Total number of shards."
        },
        "shardIndex": {
          "type": "string",
          "description": "The 0-based index of this shard."
        },
        "textOffset": {
          "type": "string",
          "description": "The index of the first character in Document.text in the overall document global text."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentShardInfoResponse": {
      "description": "For a large document, sharding may be performed to produce several document shards. Each document shard contains this field to detail which shard it is.",
      "properties": {
        "shardCount": {
          "type": "string",
          "description": "Total number of shards."
        },
        "shardIndex": {
          "type": "string",
          "description": "The 0-based index of this shard."
        },
        "textOffset": {
          "type": "string",
          "description": "The index of the first character in Document.text in the overall document global text."
        }
      },
      "type": "object",
      "required": [
        "shardCount",
        "shardIndex",
        "textOffset"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentStyle": {
      "description": "Annotation for common text style attributes. This adheres to CSS conventions as much as possible.",
      "properties": {
        "backgroundColor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeColor",
          "description": "Text background color."
        },
        "color": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeColor",
          "description": "Text color."
        },
        "fontFamily": {
          "type": "string",
          "description": "Font family such as `Arial`, `Times New Roman`. https://www.w3schools.com/cssref/pr_font_font-family.asp"
        },
        "fontSize": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentStyleFontSize",
          "description": "Font size."
        },
        "fontWeight": {
          "type": "string",
          "description": "[Font weight](https://www.w3schools.com/cssref/pr_font_weight.asp). Possible values are `normal`, `bold`, `bolder`, and `lighter`."
        },
        "textAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchor",
          "description": "Text anchor indexing into the Document.text."
        },
        "textDecoration": {
          "type": "string",
          "description": "[Text decoration](https://www.w3schools.com/cssref/pr_text_text-decoration.asp). Follows CSS standard. "
        },
        "textStyle": {
          "type": "string",
          "description": "[Text style](https://www.w3schools.com/cssref/pr_font_font-style.asp). Possible values are `normal`, `italic`, and `oblique`."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentStyleFontSize": {
      "description": "Font size with unit.",
      "properties": {
        "size": {
          "type": "number",
          "description": "Font size for the text."
        },
        "unit": {
          "type": "string",
          "description": "Unit for the font size. Follows CSS naming (such as `in`, `px`, and `pt`)."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentStyleFontSizeResponse": {
      "description": "Font size with unit.",
      "properties": {
        "size": {
          "type": "number",
          "description": "Font size for the text."
        },
        "unit": {
          "type": "string",
          "description": "Unit for the font size. Follows CSS naming (such as `in`, `px`, and `pt`)."
        }
      },
      "type": "object",
      "required": [
        "size",
        "unit"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentStyleResponse": {
      "description": "Annotation for common text style attributes. This adheres to CSS conventions as much as possible.",
      "properties": {
        "backgroundColor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeColorResponse",
          "description": "Text background color."
        },
        "color": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeColorResponse",
          "description": "Text color."
        },
        "fontFamily": {
          "type": "string",
          "description": "Font family such as `Arial`, `Times New Roman`. https://www.w3schools.com/cssref/pr_font_font-family.asp"
        },
        "fontSize": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentStyleFontSizeResponse",
          "description": "Font size."
        },
        "fontWeight": {
          "type": "string",
          "description": "[Font weight](https://www.w3schools.com/cssref/pr_font_weight.asp). Possible values are `normal`, `bold`, `bolder`, and `lighter`."
        },
        "textAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchorResponse",
          "description": "Text anchor indexing into the Document.text."
        },
        "textDecoration": {
          "type": "string",
          "description": "[Text decoration](https://www.w3schools.com/cssref/pr_text_text-decoration.asp). Follows CSS standard. "
        },
        "textStyle": {
          "type": "string",
          "description": "[Text style](https://www.w3schools.com/cssref/pr_font_font-style.asp). Possible values are `normal`, `italic`, and `oblique`."
        }
      },
      "type": "object",
      "required": [
        "backgroundColor",
        "color",
        "fontFamily",
        "fontSize",
        "fontWeight",
        "textAnchor",
        "textDecoration",
        "textStyle"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentTextAnchor": {
      "description": "Text reference indexing into the Document.text.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Contains the content of the text span so that users do not have to look it up in the text_segments. It is always populated for formFields."
        },
        "textSegments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment"
          },
          "description": "The text segments from the Document.text."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentTextAnchorResponse": {
      "description": "Text reference indexing into the Document.text.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Contains the content of the text span so that users do not have to look it up in the text_segments. It is always populated for formFields."
        },
        "textSegments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchorTextSegmentResponse"
          },
          "description": "The text segments from the Document.text."
        }
      },
      "type": "object",
      "required": [
        "content",
        "textSegments"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment": {
      "description": "A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset",
      "properties": {
        "endIndex": {
          "type": "string",
          "description": "TextSegment half open end UTF-8 char index in the Document.text."
        },
        "startIndex": {
          "type": "string",
          "description": "TextSegment start UTF-8 char index in the Document.text."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentTextAnchorTextSegmentResponse": {
      "description": "A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset",
      "properties": {
        "endIndex": {
          "type": "string",
          "description": "TextSegment half open end UTF-8 char index in the Document.text."
        },
        "startIndex": {
          "type": "string",
          "description": "TextSegment start UTF-8 char index in the Document.text."
        }
      },
      "type": "object",
      "required": [
        "endIndex",
        "startIndex"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentTextChange": {
      "description": "This message is used for text changes aka. OCR corrections.",
      "properties": {
        "changedText": {
          "type": "string",
          "description": "The text that replaces the text identified in the `text_anchor`."
        },
        "provenance": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenance"
          },
          "description": "The history of this annotation."
        },
        "textAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchor",
          "description": "Provenance of the correction. Text anchor indexing into the Document.text. There can only be a single `TextAnchor.text_segments` element. If the start and end index of the text segment are the same, the text change is inserted before that index."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1DocumentTextChangeResponse": {
      "description": "This message is used for text changes aka. OCR corrections.",
      "properties": {
        "changedText": {
          "type": "string",
          "description": "The text that replaces the text identified in the `text_anchor`."
        },
        "provenance": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentProvenanceResponse"
          },
          "description": "The history of this annotation."
        },
        "textAnchor": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentTextAnchorResponse",
          "description": "Provenance of the correction. Text anchor indexing into the Document.text. There can only be a single `TextAnchor.text_segments` element. If the start and end index of the text segment are the same, the text change is inserted before that index."
        }
      },
      "type": "object",
      "required": [
        "changedText",
        "provenance",
        "textAnchor"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1NormalizedVertex": {
      "description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
      "properties": {
        "x": {
          "type": "number",
          "description": "X coordinate."
        },
        "y": {
          "type": "number",
          "description": "Y coordinate (starts from the top of the image)."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1NormalizedVertexResponse": {
      "description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
      "properties": {
        "x": {
          "type": "number",
          "description": "X coordinate."
        },
        "y": {
          "type": "number",
          "description": "Y coordinate (starts from the top of the image)."
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1Vertex": {
      "description": "A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.",
      "properties": {
        "x": {
          "type": "integer",
          "description": "X coordinate."
        },
        "y": {
          "type": "integer",
          "description": "Y coordinate (starts from the top of the image)."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleCloudDocumentaiV1VertexResponse": {
      "description": "A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.",
      "properties": {
        "x": {
          "type": "integer",
          "description": "X coordinate."
        },
        "y": {
          "type": "integer",
          "description": "Y coordinate (starts from the top of the image)."
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:contentwarehouse/v1:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleIamV1Policy": {
      "description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleIamV1PolicyResponse": {
      "description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "version"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleRpcStatus": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleTypeColor": {
      "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
      "properties": {
        "alpha": {
          "type": "number",
          "description": "The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is rendered as a solid color (as if the alpha value had been explicitly given a value of 1.0)."
        },
        "blue": {
          "type": "number",
          "description": "The amount of blue in the color as a value in the interval [0, 1]."
        },
        "green": {
          "type": "number",
          "description": "The amount of green in the color as a value in the interval [0, 1]."
        },
        "red": {
          "type": "number",
          "description": "The amount of red in the color as a value in the interval [0, 1]."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleTypeColorResponse": {
      "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't have information about the absolute color space that should be used to interpret the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
      "properties": {
        "alpha": {
          "type": "number",
          "description": "The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is rendered as a solid color (as if the alpha value had been explicitly given a value of 1.0)."
        },
        "blue": {
          "type": "number",
          "description": "The amount of blue in the color as a value in the interval [0, 1]."
        },
        "green": {
          "type": "number",
          "description": "The amount of green in the color as a value in the interval [0, 1]."
        },
        "red": {
          "type": "number",
          "description": "The amount of red in the color as a value in the interval [0, 1]."
        }
      },
      "type": "object",
      "required": [
        "alpha",
        "blue",
        "green",
        "red"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleTypeDate": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleTypeDateTime": {
      "description": "Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user's timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application's limitations.",
      "properties": {
        "day": {
          "type": "integer",
          "description": "Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day."
        },
        "hours": {
          "type": "integer",
          "description": "Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value \"24:00:00\" for scenarios like business closing time."
        },
        "minutes": {
          "type": "integer",
          "description": "Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0."
        },
        "month": {
          "type": "integer",
          "description": "Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month."
        },
        "nanos": {
          "type": "integer",
          "description": "Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0."
        },
        "seconds": {
          "type": "integer",
          "description": "Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds."
        },
        "timeZone": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeTimeZone",
          "description": "Time zone."
        },
        "utcOffset": {
          "type": "string",
          "description": "UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }."
        },
        "year": {
          "type": "integer",
          "description": "Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleTypeDateTimeResponse": {
      "description": "Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user's timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application's limitations.",
      "properties": {
        "day": {
          "type": "integer",
          "description": "Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day."
        },
        "hours": {
          "type": "integer",
          "description": "Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value \"24:00:00\" for scenarios like business closing time."
        },
        "minutes": {
          "type": "integer",
          "description": "Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0."
        },
        "month": {
          "type": "integer",
          "description": "Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month."
        },
        "nanos": {
          "type": "integer",
          "description": "Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0."
        },
        "seconds": {
          "type": "integer",
          "description": "Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds."
        },
        "timeZone": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleTypeTimeZoneResponse",
          "description": "Time zone."
        },
        "utcOffset": {
          "type": "string",
          "description": "UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }."
        },
        "year": {
          "type": "integer",
          "description": "Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "hours",
        "minutes",
        "month",
        "nanos",
        "seconds",
        "timeZone",
        "utcOffset",
        "year"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleTypeMoney": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleTypeMoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleTypePostalAddress": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "regionCode"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleTypePostalAddressResponse": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "addressLines",
        "administrativeArea",
        "languageCode",
        "locality",
        "organization",
        "postalCode",
        "recipients",
        "regionCode",
        "revision",
        "sortingCode",
        "sublocality"
      ]
    },
    "google-native:contentwarehouse/v1:GoogleTypeTimeZone": {
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "properties": {
        "id": {
          "type": "string",
          "description": "IANA Time Zone Database time zone, e.g. \"America/New_York\"."
        },
        "version": {
          "type": "string",
          "description": "Optional. IANA Time Zone Database version number, e.g. \"2019a\"."
        }
      },
      "type": "object"
    },
    "google-native:contentwarehouse/v1:GoogleTypeTimeZoneResponse": {
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "properties": {
        "version": {
          "type": "string",
          "description": "Optional. IANA Time Zone Database version number, e.g. \"2019a\"."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:datacatalog/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:datacatalog/v1:EntryType": {
      "description": "The type of the entry. For details, see [`EntryType`](#entrytype).",
      "type": "string",
      "enum": [
        {
          "name": "EntryTypeUnspecified",
          "description": "Default unknown type.",
          "value": "ENTRY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Table",
          "description": "The entry type that has a GoogleSQL schema, including logical views.",
          "value": "TABLE"
        },
        {
          "name": "Model",
          "description": "The type of models. For more information, see [Supported models in BigQuery ML](/bigquery/docs/bqml-introduction#supported_models).",
          "value": "MODEL"
        },
        {
          "name": "DataStream",
          "description": "An entry type for streaming entries. For example, a Pub/Sub topic.",
          "value": "DATA_STREAM"
        },
        {
          "name": "Fileset",
          "description": "An entry type for a set of files or objects. For example, a Cloud Storage fileset.",
          "value": "FILESET"
        },
        {
          "name": "Cluster",
          "description": "A group of servers that work together. For example, a Kafka cluster.",
          "value": "CLUSTER"
        },
        {
          "name": "Database",
          "description": "A database.",
          "value": "DATABASE"
        },
        {
          "name": "DataSourceConnection",
          "description": "Connection to a data source. For example, a BigQuery connection.",
          "value": "DATA_SOURCE_CONNECTION"
        },
        {
          "name": "Routine",
          "description": "Routine, for example, a BigQuery routine.",
          "value": "ROUTINE"
        },
        {
          "name": "Lake",
          "description": "A Dataplex lake.",
          "value": "LAKE"
        },
        {
          "name": "Zone",
          "description": "A Dataplex zone.",
          "value": "ZONE"
        },
        {
          "name": "Service",
          "description": "A service, for example, a Dataproc Metastore service.",
          "value": "SERVICE"
        },
        {
          "name": "DatabaseSchema",
          "description": "Schema within a relational database.",
          "value": "DATABASE_SCHEMA"
        },
        {
          "name": "Dashboard",
          "description": "A Dashboard, for example from Looker.",
          "value": "DASHBOARD"
        },
        {
          "name": "Explore",
          "description": "A Looker Explore. For more information, see [Looker Explore API] (https://developers.looker.com/api/explorer/4.0/methods/LookmlModel/lookml_model_explore).",
          "value": "EXPLORE"
        },
        {
          "name": "Look",
          "description": "A Looker Look. For more information, see [Looker Look API] (https://developers.looker.com/api/explorer/4.0/methods/Look).",
          "value": "LOOK"
        }
      ]
    },
    "google-native:datacatalog/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1BigQueryConnectionSpecResponse": {
      "description": "Specification for the BigQuery connection.",
      "properties": {
        "cloudSql": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1CloudSqlBigQueryConnectionSpecResponse",
          "description": "Specification for the BigQuery connection to a Cloud SQL instance."
        },
        "connectionType": {
          "type": "string",
          "description": "The type of the BigQuery connection."
        },
        "hasCredential": {
          "type": "boolean",
          "description": "True if there are credentials attached to the BigQuery connection; false otherwise."
        }
      },
      "type": "object",
      "required": [
        "cloudSql",
        "connectionType",
        "hasCredential"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1BigQueryDateShardedSpecResponse": {
      "description": "Specification for a group of BigQuery tables with the `[prefix]YYYYMMDD` name pattern. For more information, see [Introduction to partitioned tables] (https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding).",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "The Data Catalog resource name of the dataset entry the current table belongs to. For example: `projects/{PROJECT_ID}/locations/{LOCATION}/entrygroups/{ENTRY_GROUP_ID}/entries/{ENTRY_ID}`."
        },
        "latestShardResource": {
          "type": "string",
          "description": "BigQuery resource name of the latest shard."
        },
        "shardCount": {
          "type": "string",
          "description": "Total number of shards."
        },
        "tablePrefix": {
          "type": "string",
          "description": "The table name prefix of the shards. The name of any given shard is `[table_prefix]YYYYMMDD`. For example, for the `MyTable20180101` shard, the `table_prefix` is `MyTable`."
        }
      },
      "type": "object",
      "required": [
        "dataset",
        "latestShardResource",
        "shardCount",
        "tablePrefix"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1BigQueryRoutineSpec": {
      "description": "Fields specific for BigQuery routines.",
      "properties": {
        "importedLibraries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Paths of the imported libraries."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1BigQueryRoutineSpecResponse": {
      "description": "Fields specific for BigQuery routines.",
      "properties": {
        "importedLibraries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Paths of the imported libraries."
        }
      },
      "type": "object",
      "required": [
        "importedLibraries"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1BigQueryTableSpecResponse": {
      "description": "Describes a BigQuery table.",
      "properties": {
        "tableSourceType": {
          "type": "string",
          "description": "The table source type."
        },
        "tableSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1TableSpecResponse",
          "description": "Specification of a BigQuery table. Populated only if the `table_source_type` is `BIGQUERY_TABLE`."
        },
        "viewSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ViewSpecResponse",
          "description": "Table view specification. Populated only if the `table_source_type` is `BIGQUERY_VIEW`."
        }
      },
      "type": "object",
      "required": [
        "tableSourceType",
        "tableSpec",
        "viewSpec"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1BusinessContext": {
      "description": "Business Context of the entry.",
      "properties": {
        "contacts": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1Contacts",
          "description": "Contact people for the entry."
        },
        "entryOverview": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1EntryOverview",
          "description": "Entry overview fields for rich text descriptions of entries."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1BusinessContextResponse": {
      "description": "Business Context of the entry.",
      "properties": {
        "contacts": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ContactsResponse",
          "description": "Contact people for the entry."
        },
        "entryOverview": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1EntryOverviewResponse",
          "description": "Entry overview fields for rich text descriptions of entries."
        }
      },
      "type": "object",
      "required": [
        "contacts",
        "entryOverview"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1CloudBigtableInstanceSpec": {
      "description": "Specification that applies to Instance entries that are part of `CLOUD_BIGTABLE` system. (user_specified_type)",
      "properties": {
        "cloudBigtableClusterSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1CloudBigtableInstanceSpecCloudBigtableClusterSpec"
          },
          "description": "The list of clusters for the Instance."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1CloudBigtableInstanceSpecCloudBigtableClusterSpec": {
      "description": "Spec that applies to clusters of an Instance of Cloud Bigtable.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of the cluster."
        },
        "linkedResource": {
          "type": "string",
          "description": "A link back to the parent resource, in this case Instance."
        },
        "location": {
          "type": "string",
          "description": "Location of the cluster, typically a Cloud zone."
        },
        "type": {
          "type": "string",
          "description": "Type of the resource. For a cluster this would be \"CLUSTER\"."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1CloudBigtableInstanceSpecCloudBigtableClusterSpecResponse": {
      "description": "Spec that applies to clusters of an Instance of Cloud Bigtable.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of the cluster."
        },
        "linkedResource": {
          "type": "string",
          "description": "A link back to the parent resource, in this case Instance."
        },
        "location": {
          "type": "string",
          "description": "Location of the cluster, typically a Cloud zone."
        },
        "type": {
          "type": "string",
          "description": "Type of the resource. For a cluster this would be \"CLUSTER\"."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "linkedResource",
        "location",
        "type"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1CloudBigtableInstanceSpecResponse": {
      "description": "Specification that applies to Instance entries that are part of `CLOUD_BIGTABLE` system. (user_specified_type)",
      "properties": {
        "cloudBigtableClusterSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1CloudBigtableInstanceSpecCloudBigtableClusterSpecResponse"
          },
          "description": "The list of clusters for the Instance."
        }
      },
      "type": "object",
      "required": [
        "cloudBigtableClusterSpecs"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1CloudBigtableSystemSpec": {
      "description": "Specification that applies to all entries that are part of `CLOUD_BIGTABLE` system (user_specified_type)",
      "properties": {
        "instanceDisplayName": {
          "type": "string",
          "description": "Display name of the Instance. This is user specified and different from the resource name."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1CloudBigtableSystemSpecResponse": {
      "description": "Specification that applies to all entries that are part of `CLOUD_BIGTABLE` system (user_specified_type)",
      "properties": {
        "instanceDisplayName": {
          "type": "string",
          "description": "Display name of the Instance. This is user specified and different from the resource name."
        }
      },
      "type": "object",
      "required": [
        "instanceDisplayName"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1CloudSqlBigQueryConnectionSpecResponse": {
      "description": "Specification for the BigQuery connection to a Cloud SQL instance.",
      "properties": {
        "database": {
          "type": "string",
          "description": "Database name."
        },
        "instanceId": {
          "type": "string",
          "description": "Cloud SQL instance ID in the format of `project:location:instance`."
        },
        "type": {
          "type": "string",
          "description": "Type of the Cloud SQL database."
        }
      },
      "type": "object",
      "required": [
        "database",
        "instanceId",
        "type"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ColumnSchema": {
      "description": "A column within a schema. Columns can be nested inside other columns.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Name of the column. Must be a UTF-8 string without dots (.). The maximum size is 64 bytes."
        },
        "defaultValue": {
          "type": "string",
          "description": "Optional. Default value for the column."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the column. Default value is an empty string. The description must be a UTF-8 string with the maximum size of 2000 bytes."
        },
        "gcRule": {
          "type": "string",
          "description": "Optional. Garbage collection policy for the column or column family. Applies to systems like Cloud Bigtable."
        },
        "highestIndexingType": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ColumnSchemaHighestIndexingType",
          "description": "Optional. Most important inclusion of this column."
        },
        "lookerColumnSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpec",
          "description": "Looker specific column info of this column."
        },
        "mode": {
          "type": "string",
          "description": "Optional. A column's mode indicates whether values in this column are required, nullable, or repeated. Only `NULLABLE`, `REQUIRED`, and `REPEATED` values are supported. Default mode is `NULLABLE`."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "Optional. Ordinal position"
        },
        "subcolumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ColumnSchema"
          },
          "description": "Optional. Schema of sub-columns. A column can have zero or more sub-columns."
        },
        "type": {
          "type": "string",
          "description": "Type of the column. Must be a UTF-8 string with the maximum size of 128 bytes."
        }
      },
      "type": "object",
      "required": [
        "column",
        "type"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ColumnSchemaHighestIndexingType": {
      "description": "Optional. Most important inclusion of this column.",
      "type": "string",
      "enum": [
        {
          "name": "IndexingTypeUnspecified",
          "description": "Unspecified.",
          "value": "INDEXING_TYPE_UNSPECIFIED"
        },
        {
          "name": "IndexingTypeNone",
          "description": "Column not a part of an index.",
          "value": "INDEXING_TYPE_NONE"
        },
        {
          "name": "IndexingTypeNonUnique",
          "description": "Column Part of non unique index.",
          "value": "INDEXING_TYPE_NON_UNIQUE"
        },
        {
          "name": "IndexingTypeUnique",
          "description": "Column part of unique index.",
          "value": "INDEXING_TYPE_UNIQUE"
        },
        {
          "name": "IndexingTypePrimaryKey",
          "description": "Column part of the primary key.",
          "value": "INDEXING_TYPE_PRIMARY_KEY"
        }
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpec": {
      "description": "Column info specific to Looker System.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpecType",
          "description": "Looker specific column type of this column."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpecResponse": {
      "description": "Column info specific to Looker System.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Looker specific column type of this column."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpecType": {
      "description": "Looker specific column type of this column.",
      "type": "string",
      "enum": [
        {
          "name": "LookerColumnTypeUnspecified",
          "description": "Unspecified.",
          "value": "LOOKER_COLUMN_TYPE_UNSPECIFIED"
        },
        {
          "name": "Dimension",
          "description": "Dimension.",
          "value": "DIMENSION"
        },
        {
          "name": "DimensionGroup",
          "description": "Dimension group - parent for Dimension.",
          "value": "DIMENSION_GROUP"
        },
        {
          "name": "Filter",
          "description": "Filter.",
          "value": "FILTER"
        },
        {
          "name": "Measure",
          "description": "Measure.",
          "value": "MEASURE"
        },
        {
          "name": "Parameter",
          "description": "Parameter.",
          "value": "PARAMETER"
        }
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ColumnSchemaResponse": {
      "description": "A column within a schema. Columns can be nested inside other columns.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Name of the column. Must be a UTF-8 string without dots (.). The maximum size is 64 bytes."
        },
        "defaultValue": {
          "type": "string",
          "description": "Optional. Default value for the column."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the column. Default value is an empty string. The description must be a UTF-8 string with the maximum size of 2000 bytes."
        },
        "gcRule": {
          "type": "string",
          "description": "Optional. Garbage collection policy for the column or column family. Applies to systems like Cloud Bigtable."
        },
        "highestIndexingType": {
          "type": "string",
          "description": "Optional. Most important inclusion of this column."
        },
        "lookerColumnSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpecResponse",
          "description": "Looker specific column info of this column."
        },
        "mode": {
          "type": "string",
          "description": "Optional. A column's mode indicates whether values in this column are required, nullable, or repeated. Only `NULLABLE`, `REQUIRED`, and `REPEATED` values are supported. Default mode is `NULLABLE`."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "Optional. Ordinal position"
        },
        "subcolumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ColumnSchemaResponse"
          },
          "description": "Optional. Schema of sub-columns. A column can have zero or more sub-columns."
        },
        "type": {
          "type": "string",
          "description": "Type of the column. Must be a UTF-8 string with the maximum size of 128 bytes."
        }
      },
      "type": "object",
      "required": [
        "column",
        "defaultValue",
        "description",
        "gcRule",
        "highestIndexingType",
        "lookerColumnSpec",
        "mode",
        "ordinalPosition",
        "subcolumns",
        "type"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1Contacts": {
      "description": "Contact people for the entry.",
      "properties": {
        "people": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ContactsPerson"
          },
          "description": "The list of contact people for the entry."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ContactsPerson": {
      "description": "A contact person for the entry.",
      "properties": {
        "designation": {
          "type": "string",
          "description": "Designation of the person, for example, Data Steward."
        },
        "email": {
          "type": "string",
          "description": "Email of the person in the format of `john.doe@xyz`, ``, or `John Doe`."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ContactsPersonResponse": {
      "description": "A contact person for the entry.",
      "properties": {
        "designation": {
          "type": "string",
          "description": "Designation of the person, for example, Data Steward."
        },
        "email": {
          "type": "string",
          "description": "Email of the person in the format of `john.doe@xyz`, ``, or `John Doe`."
        }
      },
      "type": "object",
      "required": [
        "designation",
        "email"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ContactsResponse": {
      "description": "Contact people for the entry.",
      "properties": {
        "people": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ContactsPersonResponse"
          },
          "description": "The list of contact people for the entry."
        }
      },
      "type": "object",
      "required": [
        "people"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataSourceConnectionSpec": {
      "description": "Specification that applies to a data source connection. Valid only for entries with the `DATA_SOURCE_CONNECTION` type. Only one of internal specs can be set at the time, and cannot be changed later.",
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataSourceConnectionSpecResponse": {
      "description": "Specification that applies to a data source connection. Valid only for entries with the `DATA_SOURCE_CONNECTION` type. Only one of internal specs can be set at the time, and cannot be changed later.",
      "properties": {
        "bigqueryConnectionSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BigQueryConnectionSpecResponse",
          "description": "Fields specific to BigQuery connections."
        }
      },
      "type": "object",
      "required": [
        "bigqueryConnectionSpec"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataSourceResponse": {
      "description": "Physical location of an entry.",
      "properties": {
        "resource": {
          "type": "string",
          "description": "Full name of a resource as defined by the service. For example: `//bigquery.googleapis.com/projects/{PROJECT_ID}/locations/{LOCATION}/datasets/{DATASET_ID}/tables/{TABLE_ID}`"
        },
        "service": {
          "type": "string",
          "description": "Service that physically stores the data."
        },
        "sourceEntry": {
          "type": "string",
          "description": "Data Catalog entry name, if applicable."
        },
        "storageProperties": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1StoragePropertiesResponse",
          "description": "Detailed properties of the underlying storage."
        }
      },
      "type": "object",
      "required": [
        "resource",
        "service",
        "sourceEntry",
        "storageProperties"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DatabaseTableSpec": {
      "description": "Specification that applies to a table resource. Valid only for entries with the `TABLE` type.",
      "properties": {
        "databaseViewSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpec",
          "description": "Spec what aplies to tables that are actually views. Not set for \"real\" tables."
        },
        "type": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatabaseTableSpecType",
          "description": "Type of this table."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpec": {
      "description": "Specification that applies to database view.",
      "properties": {
        "baseTable": {
          "type": "string",
          "description": "Name of a singular table this view reflects one to one."
        },
        "sqlQuery": {
          "type": "string",
          "description": "SQL query used to generate this view."
        },
        "viewType": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpecViewType",
          "description": "Type of this view."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpecResponse": {
      "description": "Specification that applies to database view.",
      "properties": {
        "baseTable": {
          "type": "string",
          "description": "Name of a singular table this view reflects one to one."
        },
        "sqlQuery": {
          "type": "string",
          "description": "SQL query used to generate this view."
        },
        "viewType": {
          "type": "string",
          "description": "Type of this view."
        }
      },
      "type": "object",
      "required": [
        "baseTable",
        "sqlQuery",
        "viewType"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpecViewType": {
      "description": "Type of this view.",
      "type": "string",
      "enum": [
        {
          "name": "ViewTypeUnspecified",
          "description": "Default unknown view type.",
          "value": "VIEW_TYPE_UNSPECIFIED"
        },
        {
          "name": "StandardView",
          "description": "Standard view.",
          "value": "STANDARD_VIEW"
        },
        {
          "name": "MaterializedView",
          "description": "Materialized view.",
          "value": "MATERIALIZED_VIEW"
        }
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DatabaseTableSpecResponse": {
      "description": "Specification that applies to a table resource. Valid only for entries with the `TABLE` type.",
      "properties": {
        "databaseViewSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpecResponse",
          "description": "Spec what aplies to tables that are actually views. Not set for \"real\" tables."
        },
        "dataplexTable": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataplexTableSpecResponse",
          "description": "Fields specific to a Dataplex table and present only in the Dataplex table entries."
        },
        "type": {
          "type": "string",
          "description": "Type of this table."
        }
      },
      "type": "object",
      "required": [
        "databaseViewSpec",
        "dataplexTable",
        "type"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DatabaseTableSpecType": {
      "description": "Type of this table.",
      "type": "string",
      "enum": [
        {
          "name": "TableTypeUnspecified",
          "description": "Default unknown table type.",
          "value": "TABLE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Native",
          "description": "Native table.",
          "value": "NATIVE"
        },
        {
          "name": "External",
          "description": "External table.",
          "value": "EXTERNAL"
        }
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataplexExternalTableResponse": {
      "description": "External table registered by Dataplex. Dataplex publishes data discovered from an asset into multiple other systems (BigQuery, DPMS) in form of tables. We call them \"external tables\". External tables are also synced into the Data Catalog. This message contains pointers to those external tables (fully qualified name, resource name et cetera) within the Data Catalog.",
      "properties": {
        "dataCatalogEntry": {
          "type": "string",
          "description": "Name of the Data Catalog entry representing the external table."
        },
        "fullyQualifiedName": {
          "type": "string",
          "description": "Fully qualified name (FQN) of the external table."
        },
        "googleCloudResource": {
          "type": "string",
          "description": "Google Cloud resource name of the external table."
        },
        "system": {
          "type": "string",
          "description": "Service in which the external table is registered."
        }
      },
      "type": "object",
      "required": [
        "dataCatalogEntry",
        "fullyQualifiedName",
        "googleCloudResource",
        "system"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataplexFilesetSpec": {
      "description": "Entry specyfication for a Dataplex fileset.",
      "properties": {
        "dataplexSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataplexSpec",
          "description": "Common Dataplex fields."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataplexFilesetSpecResponse": {
      "description": "Entry specyfication for a Dataplex fileset.",
      "properties": {
        "dataplexSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataplexSpecResponse",
          "description": "Common Dataplex fields."
        }
      },
      "type": "object",
      "required": [
        "dataplexSpec"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataplexSpec": {
      "description": "Common Dataplex fields.",
      "properties": {
        "asset": {
          "type": "string",
          "description": "Fully qualified resource name of an asset in Dataplex, to which the underlying data source (Cloud Storage bucket or BigQuery dataset) of the entity is attached."
        },
        "compressionFormat": {
          "type": "string",
          "description": "Compression format of the data, e.g., zip, gzip etc."
        },
        "dataFormat": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchema",
          "description": "Format of the data."
        },
        "project": {
          "type": "string",
          "description": "Project ID of the underlying Cloud Storage or BigQuery data. Note that this may not be the same project as the correspondingly Dataplex lake / zone / asset."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataplexSpecResponse": {
      "description": "Common Dataplex fields.",
      "properties": {
        "asset": {
          "type": "string",
          "description": "Fully qualified resource name of an asset in Dataplex, to which the underlying data source (Cloud Storage bucket or BigQuery dataset) of the entity is attached."
        },
        "compressionFormat": {
          "type": "string",
          "description": "Compression format of the data, e.g., zip, gzip etc."
        },
        "dataFormat": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaResponse",
          "description": "Format of the data."
        },
        "project": {
          "type": "string",
          "description": "Project ID of the underlying Cloud Storage or BigQuery data. Note that this may not be the same project as the correspondingly Dataplex lake / zone / asset."
        }
      },
      "type": "object",
      "required": [
        "asset",
        "compressionFormat",
        "dataFormat",
        "project"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DataplexTableSpecResponse": {
      "description": "Entry specification for a Dataplex table.",
      "properties": {
        "dataplexSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataplexSpecResponse",
          "description": "Common Dataplex fields."
        },
        "externalTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataplexExternalTableResponse"
          },
          "description": "List of external tables registered by Dataplex in other systems based on the same underlying data. External tables allow to query this data in those systems."
        },
        "userManaged": {
          "type": "boolean",
          "description": "Indicates if the table schema is managed by the user or not."
        }
      },
      "type": "object",
      "required": [
        "dataplexSpec",
        "externalTables",
        "userManaged"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DatasetSpec": {
      "description": "Specification that applies to a dataset. Valid only for entries with the `DATASET` type.",
      "properties": {
        "vertexDatasetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1VertexDatasetSpec",
          "description": "Vertex AI Dataset specific fields"
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1DatasetSpecResponse": {
      "description": "Specification that applies to a dataset. Valid only for entries with the `DATASET` type.",
      "properties": {
        "vertexDatasetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1VertexDatasetSpecResponse",
          "description": "Vertex AI Dataset specific fields"
        }
      },
      "type": "object",
      "required": [
        "vertexDatasetSpec"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1EntryOverview": {
      "description": "Entry overview fields for rich text descriptions of entries.",
      "properties": {
        "overview": {
          "type": "string",
          "description": "Entry overview with support for rich text. The overview must only contain Unicode characters, and should be formatted using HTML. The maximum length is 10 MiB as this value holds HTML descriptions including encoded images. The maximum length of the text without images is 100 KiB."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1EntryOverviewResponse": {
      "description": "Entry overview fields for rich text descriptions of entries.",
      "properties": {
        "overview": {
          "type": "string",
          "description": "Entry overview with support for rich text. The overview must only contain Unicode characters, and should be formatted using HTML. The maximum length is 10 MiB as this value holds HTML descriptions including encoded images. The maximum length of the text without images is 100 KiB."
        }
      },
      "type": "object",
      "required": [
        "overview"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1FilesetSpec": {
      "description": "Specification that applies to a fileset. Valid only for entries with the 'FILESET' type.",
      "properties": {
        "dataplexFileset": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataplexFilesetSpec",
          "description": "Fields specific to a Dataplex fileset and present only in the Dataplex fileset entries."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1FilesetSpecResponse": {
      "description": "Specification that applies to a fileset. Valid only for entries with the 'FILESET' type.",
      "properties": {
        "dataplexFileset": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataplexFilesetSpecResponse",
          "description": "Fields specific to a Dataplex fileset and present only in the Dataplex fileset entries."
        }
      },
      "type": "object",
      "required": [
        "dataplexFileset"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1GcsFileSpecResponse": {
      "description": "Specification of a single file in Cloud Storage.",
      "properties": {
        "filePath": {
          "type": "string",
          "description": "Full file path. Example: `gs://bucket_name/a/b.txt`."
        },
        "gcsTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SystemTimestampsResponse",
          "description": "Creation, modification, and expiration timestamps of a Cloud Storage file."
        },
        "sizeBytes": {
          "type": "string",
          "description": "File size in bytes."
        }
      },
      "type": "object",
      "required": [
        "filePath",
        "gcsTimestamps",
        "sizeBytes"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1GcsFilesetSpec": {
      "description": "Describes a Cloud Storage fileset entry.",
      "properties": {
        "filePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Patterns to identify a set of files in Google Cloud Storage. For more information, see [Wildcard Names] (https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames). Note: Currently, bucket wildcards are not supported. Examples of valid `file_patterns`: * `gs://bucket_name/dir/*`: matches all files in `bucket_name/dir` directory * `gs://bucket_name/dir/**`: matches all files in `bucket_name/dir` and all subdirectories * `gs://bucket_name/file*`: matches files prefixed by `file` in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two characters followed by `.txt` in `bucket_name` * `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel character followed by `.txt` in `bucket_name` * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match the `a/*/b` pattern, such as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt` You can combine wildcards to match complex sets of files, for example: `gs://bucket_name/[a-m]??.j*g`"
        }
      },
      "type": "object",
      "required": [
        "filePatterns"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1GcsFilesetSpecResponse": {
      "description": "Describes a Cloud Storage fileset entry.",
      "properties": {
        "filePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Patterns to identify a set of files in Google Cloud Storage. For more information, see [Wildcard Names] (https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames). Note: Currently, bucket wildcards are not supported. Examples of valid `file_patterns`: * `gs://bucket_name/dir/*`: matches all files in `bucket_name/dir` directory * `gs://bucket_name/dir/**`: matches all files in `bucket_name/dir` and all subdirectories * `gs://bucket_name/file*`: matches files prefixed by `file` in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two characters followed by `.txt` in `bucket_name` * `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel character followed by `.txt` in `bucket_name` * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match the `a/*/b` pattern, such as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt` You can combine wildcards to match complex sets of files, for example: `gs://bucket_name/[a-m]??.j*g`"
        },
        "sampleGcsFileSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1GcsFileSpecResponse"
          },
          "description": "Sample files contained in this fileset, not all files contained in this fileset are represented here."
        }
      },
      "type": "object",
      "required": [
        "filePatterns",
        "sampleGcsFileSpecs"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1LookerSystemSpec": {
      "description": "Specification that applies to entries that are part `LOOKER` system (user_specified_type)",
      "properties": {
        "parentInstanceDisplayName": {
          "type": "string",
          "description": "Name of the parent Looker Instance. Empty if it does not exist."
        },
        "parentInstanceId": {
          "type": "string",
          "description": "ID of the parent Looker Instance. Empty if it does not exist. Example value: `someinstance.looker.com`"
        },
        "parentModelDisplayName": {
          "type": "string",
          "description": "Name of the parent Model. Empty if it does not exist."
        },
        "parentModelId": {
          "type": "string",
          "description": "ID of the parent Model. Empty if it does not exist."
        },
        "parentViewDisplayName": {
          "type": "string",
          "description": "Name of the parent View. Empty if it does not exist."
        },
        "parentViewId": {
          "type": "string",
          "description": "ID of the parent View. Empty if it does not exist."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1LookerSystemSpecResponse": {
      "description": "Specification that applies to entries that are part `LOOKER` system (user_specified_type)",
      "properties": {
        "parentInstanceDisplayName": {
          "type": "string",
          "description": "Name of the parent Looker Instance. Empty if it does not exist."
        },
        "parentInstanceId": {
          "type": "string",
          "description": "ID of the parent Looker Instance. Empty if it does not exist. Example value: `someinstance.looker.com`"
        },
        "parentModelDisplayName": {
          "type": "string",
          "description": "Name of the parent Model. Empty if it does not exist."
        },
        "parentModelId": {
          "type": "string",
          "description": "ID of the parent Model. Empty if it does not exist."
        },
        "parentViewDisplayName": {
          "type": "string",
          "description": "Name of the parent View. Empty if it does not exist."
        },
        "parentViewId": {
          "type": "string",
          "description": "ID of the parent View. Empty if it does not exist."
        }
      },
      "type": "object",
      "required": [
        "parentInstanceDisplayName",
        "parentInstanceId",
        "parentModelDisplayName",
        "parentModelId",
        "parentViewDisplayName",
        "parentViewId"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ModelSpec": {
      "description": "Specification that applies to a model. Valid only for entries with the `MODEL` type.",
      "properties": {
        "vertexModelSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1VertexModelSpec",
          "description": "Specification for vertex model resources."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ModelSpecResponse": {
      "description": "Specification that applies to a model. Valid only for entries with the `MODEL` type.",
      "properties": {
        "vertexModelSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1VertexModelSpecResponse",
          "description": "Specification for vertex model resources."
        }
      },
      "type": "object",
      "required": [
        "vertexModelSpec"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PersonalDetailsResponse": {
      "description": "Entry metadata relevant only to the user and private to them.",
      "properties": {
        "starTime": {
          "type": "string",
          "description": "Set if the entry is starred; unset otherwise."
        },
        "starred": {
          "type": "boolean",
          "description": "True if the entry is starred by the user; false otherwise."
        }
      },
      "type": "object",
      "required": [
        "starTime",
        "starred"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchema": {
      "description": "Native schema used by a resource represented as an entry. Used by query engines for deserializing and parsing source data.",
      "properties": {
        "avro": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema",
          "description": "Schema in Avro JSON format."
        },
        "csv": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema",
          "description": "Marks a CSV-encoded data source."
        },
        "orc": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema",
          "description": "Marks an ORC-encoded data source."
        },
        "parquet": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema",
          "description": "Marks a Parquet-encoded data source."
        },
        "protobuf": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema",
          "description": "Schema in protocol buffer format."
        },
        "thrift": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema",
          "description": "Schema in Thrift format."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema": {
      "description": "Schema in Avro JSON format.",
      "properties": {
        "text": {
          "type": "string",
          "description": "JSON source of the Avro schema."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaAvroSchemaResponse": {
      "description": "Schema in Avro JSON format.",
      "properties": {
        "text": {
          "type": "string",
          "description": "JSON source of the Avro schema."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema": {
      "description": "Marks a CSV-encoded data source.",
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaCsvSchemaResponse": {
      "description": "Marks a CSV-encoded data source.",
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema": {
      "description": "Marks an ORC-encoded data source.",
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaOrcSchemaResponse": {
      "description": "Marks an ORC-encoded data source.",
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema": {
      "description": "Marks a Parquet-encoded data source.",
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaParquetSchemaResponse": {
      "description": "Marks a Parquet-encoded data source.",
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema": {
      "description": "Schema in protocol buffer format.",
      "properties": {
        "text": {
          "type": "string",
          "description": "Protocol buffer source of the schema."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchemaResponse": {
      "description": "Schema in protocol buffer format.",
      "properties": {
        "text": {
          "type": "string",
          "description": "Protocol buffer source of the schema."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaResponse": {
      "description": "Native schema used by a resource represented as an entry. Used by query engines for deserializing and parsing source data.",
      "properties": {
        "avro": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaAvroSchemaResponse",
          "description": "Schema in Avro JSON format."
        },
        "csv": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaCsvSchemaResponse",
          "description": "Marks a CSV-encoded data source."
        },
        "orc": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaOrcSchemaResponse",
          "description": "Marks an ORC-encoded data source."
        },
        "parquet": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaParquetSchemaResponse",
          "description": "Marks a Parquet-encoded data source."
        },
        "protobuf": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchemaResponse",
          "description": "Schema in protocol buffer format."
        },
        "thrift": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PhysicalSchemaThriftSchemaResponse",
          "description": "Schema in Thrift format."
        }
      },
      "type": "object",
      "required": [
        "avro",
        "csv",
        "orc",
        "parquet",
        "protobuf",
        "thrift"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema": {
      "description": "Schema in Thrift format.",
      "properties": {
        "text": {
          "type": "string",
          "description": "Thrift IDL source of the schema."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1PhysicalSchemaThriftSchemaResponse": {
      "description": "Schema in Thrift format.",
      "properties": {
        "text": {
          "type": "string",
          "description": "Thrift IDL source of the schema."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1RoutineSpec": {
      "description": "Specification that applies to a routine. Valid only for entries with the `ROUTINE` type.",
      "properties": {
        "bigqueryRoutineSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BigQueryRoutineSpec",
          "description": "Fields specific for BigQuery routines."
        },
        "definitionBody": {
          "type": "string",
          "description": "The body of the routine."
        },
        "language": {
          "type": "string",
          "description": "The language the routine is written in. The exact value depends on the source system. For BigQuery routines, possible values are: * `SQL` * `JAVASCRIPT`"
        },
        "returnType": {
          "type": "string",
          "description": "Return type of the argument. The exact value depends on the source system and the language."
        },
        "routineArguments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1RoutineSpecArgument"
          },
          "description": "Arguments of the routine."
        },
        "routineType": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1RoutineSpecRoutineType",
          "description": "The type of the routine."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1RoutineSpecArgument": {
      "description": "Input or output argument of a function or stored procedure.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1RoutineSpecArgumentMode",
          "description": "Specifies whether the argument is input or output."
        },
        "name": {
          "type": "string",
          "description": "The name of the argument. A return argument of a function might not have a name."
        },
        "type": {
          "type": "string",
          "description": "Type of the argument. The exact value depends on the source system and the language."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1RoutineSpecArgumentMode": {
      "description": "Specifies whether the argument is input or output.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Unspecified mode.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "In",
          "description": "The argument is input-only.",
          "value": "IN"
        },
        {
          "name": "Out",
          "description": "The argument is output-only.",
          "value": "OUT"
        },
        {
          "name": "Inout",
          "description": "The argument is both an input and an output.",
          "value": "INOUT"
        }
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1RoutineSpecArgumentResponse": {
      "description": "Input or output argument of a function or stored procedure.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Specifies whether the argument is input or output."
        },
        "name": {
          "type": "string",
          "description": "The name of the argument. A return argument of a function might not have a name."
        },
        "type": {
          "type": "string",
          "description": "Type of the argument. The exact value depends on the source system and the language."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "name",
        "type"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1RoutineSpecResponse": {
      "description": "Specification that applies to a routine. Valid only for entries with the `ROUTINE` type.",
      "properties": {
        "bigqueryRoutineSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BigQueryRoutineSpecResponse",
          "description": "Fields specific for BigQuery routines."
        },
        "definitionBody": {
          "type": "string",
          "description": "The body of the routine."
        },
        "language": {
          "type": "string",
          "description": "The language the routine is written in. The exact value depends on the source system. For BigQuery routines, possible values are: * `SQL` * `JAVASCRIPT`"
        },
        "returnType": {
          "type": "string",
          "description": "Return type of the argument. The exact value depends on the source system and the language."
        },
        "routineArguments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1RoutineSpecArgumentResponse"
          },
          "description": "Arguments of the routine."
        },
        "routineType": {
          "type": "string",
          "description": "The type of the routine."
        }
      },
      "type": "object",
      "required": [
        "bigqueryRoutineSpec",
        "definitionBody",
        "language",
        "returnType",
        "routineArguments",
        "routineType"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1RoutineSpecRoutineType": {
      "description": "The type of the routine.",
      "type": "string",
      "enum": [
        {
          "name": "RoutineTypeUnspecified",
          "description": "Unspecified type.",
          "value": "ROUTINE_TYPE_UNSPECIFIED"
        },
        {
          "name": "ScalarFunction",
          "description": "Non-builtin permanent scalar function.",
          "value": "SCALAR_FUNCTION"
        },
        {
          "name": "Procedure",
          "description": "Stored procedure.",
          "value": "PROCEDURE"
        }
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1Schema": {
      "description": "Represents a schema, for example, a BigQuery, GoogleSQL, or Avro schema.",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ColumnSchema"
          },
          "description": "The unified GoogleSQL-like schema of columns. The overall maximum number of columns and nested columns is 10,000. The maximum nested depth is 15 levels."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1SchemaResponse": {
      "description": "Represents a schema, for example, a BigQuery, GoogleSQL, or Avro schema.",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ColumnSchemaResponse"
          },
          "description": "The unified GoogleSQL-like schema of columns. The overall maximum number of columns and nested columns is 10,000. The maximum nested depth is 15 levels."
        }
      },
      "type": "object",
      "required": [
        "columns"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ServiceSpec": {
      "description": "Specification that applies to a Service resource. Valid only for entries with the `SERVICE` type.",
      "properties": {
        "cloudBigtableInstanceSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1CloudBigtableInstanceSpec",
          "description": "Specification that applies to Instance entries of `CLOUD_BIGTABLE` system."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ServiceSpecResponse": {
      "description": "Specification that applies to a Service resource. Valid only for entries with the `SERVICE` type.",
      "properties": {
        "cloudBigtableInstanceSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1CloudBigtableInstanceSpecResponse",
          "description": "Specification that applies to Instance entries of `CLOUD_BIGTABLE` system."
        }
      },
      "type": "object",
      "required": [
        "cloudBigtableInstanceSpec"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1SqlDatabaseSystemSpec": {
      "description": "Specification that applies to entries that are part `SQL_DATABASE` system (user_specified_type)",
      "properties": {
        "databaseVersion": {
          "type": "string",
          "description": "Version of the database engine."
        },
        "instanceHost": {
          "type": "string",
          "description": "Host of the SQL database enum InstanceHost { UNDEFINED = 0; SELF_HOSTED = 1; CLOUD_SQL = 2; AMAZON_RDS = 3; AZURE_SQL = 4; } Host of the enclousing database instance."
        },
        "sqlEngine": {
          "type": "string",
          "description": "SQL Database Engine. enum SqlEngine { UNDEFINED = 0; MY_SQL = 1; POSTGRE_SQL = 2; SQL_SERVER = 3; } Engine of the enclosing database instance."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1SqlDatabaseSystemSpecResponse": {
      "description": "Specification that applies to entries that are part `SQL_DATABASE` system (user_specified_type)",
      "properties": {
        "databaseVersion": {
          "type": "string",
          "description": "Version of the database engine."
        },
        "instanceHost": {
          "type": "string",
          "description": "Host of the SQL database enum InstanceHost { UNDEFINED = 0; SELF_HOSTED = 1; CLOUD_SQL = 2; AMAZON_RDS = 3; AZURE_SQL = 4; } Host of the enclousing database instance."
        },
        "sqlEngine": {
          "type": "string",
          "description": "SQL Database Engine. enum SqlEngine { UNDEFINED = 0; MY_SQL = 1; POSTGRE_SQL = 2; SQL_SERVER = 3; } Engine of the enclosing database instance."
        }
      },
      "type": "object",
      "required": [
        "databaseVersion",
        "instanceHost",
        "sqlEngine"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1StoragePropertiesResponse": {
      "description": "Details the properties of the underlying storage.",
      "properties": {
        "filePattern": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Patterns to identify a set of files for this fileset. Examples of a valid `file_pattern`: * `gs://bucket_name/dir/*`: matches all files in the `bucket_name/dir` directory * `gs://bucket_name/dir/**`: matches all files in the `bucket_name/dir` and all subdirectories recursively * `gs://bucket_name/file*`: matches files prefixed by `file` in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two characters followed by `.txt` in `bucket_name` * `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel character followed by `.txt` in `bucket_name` * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match the `a/*/b` pattern, such as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt`"
        },
        "fileType": {
          "type": "string",
          "description": "File type in MIME format, for example, `text/plain`."
        }
      },
      "type": "object",
      "required": [
        "filePattern",
        "fileType"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1SystemTimestamps": {
      "description": "Timestamps associated with this resource in a particular system.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation timestamp of the resource within the given system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp of the last modification of the resource or its metadata within a given system. Note: Depending on the source system, not every modification updates this timestamp. For example, BigQuery timestamps every metadata modification but not data or permission changes."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1SystemTimestampsResponse": {
      "description": "Timestamps associated with this resource in a particular system.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation timestamp of the resource within the given system."
        },
        "expireTime": {
          "type": "string",
          "description": "Expiration timestamp of the resource within the given system. Currently only applicable to BigQuery resources."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp of the last modification of the resource or its metadata within a given system. Note: Depending on the source system, not every modification updates this timestamp. For example, BigQuery timestamps every metadata modification but not data or permission changes."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "expireTime",
        "updateTime"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1TableSpecResponse": {
      "description": "Normal BigQuery table specification.",
      "properties": {
        "groupedEntry": {
          "type": "string",
          "description": "If the table is date-sharded, that is, it matches the `[prefix]YYYYMMDD` name pattern, this field is the Data Catalog resource name of the date-sharded grouped entry. For example: `projects/{PROJECT_ID}/locations/{LOCATION}/entrygroups/{ENTRY_GROUP_ID}/entries/{ENTRY_ID}`. Otherwise, `grouped_entry` is empty."
        }
      },
      "type": "object",
      "required": [
        "groupedEntry"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1TaxonomyServiceResponse": {
      "description": "The source system of the Taxonomy.",
      "properties": {
        "identity": {
          "type": "string",
          "description": "The service agent for the service."
        },
        "name": {
          "type": "string",
          "description": "The Google Cloud service name."
        }
      },
      "type": "object",
      "required": [
        "identity",
        "name"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1UsageSignal": {
      "description": "The set of all usage signals that Data Catalog stores. Note: Usually, these signals are updated daily. In rare cases, an update may fail but will be performed again on the next day.",
      "properties": {
        "commonUsageWithinTimeRange": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Common usage statistics over each of the predefined time ranges. Supported time ranges are `{\"24H\", \"7D\", \"30D\", \"Lifetime\"}`."
        },
        "favoriteCount": {
          "type": "string",
          "description": "Favorite count in the source system."
        },
        "updateTime": {
          "type": "string",
          "description": "The end timestamp of the duration of usage statistics."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1UsageSignalResponse": {
      "description": "The set of all usage signals that Data Catalog stores. Note: Usually, these signals are updated daily. In rare cases, an update may fail but will be performed again on the next day.",
      "properties": {
        "commonUsageWithinTimeRange": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Common usage statistics over each of the predefined time ranges. Supported time ranges are `{\"24H\", \"7D\", \"30D\", \"Lifetime\"}`."
        },
        "favoriteCount": {
          "type": "string",
          "description": "Favorite count in the source system."
        },
        "updateTime": {
          "type": "string",
          "description": "The end timestamp of the duration of usage statistics."
        },
        "usageWithinTimeRange": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "BigQuery usage statistics over each of the predefined time ranges. Supported time ranges are `{\"24H\", \"7D\", \"30D\"}`."
        }
      },
      "type": "object",
      "required": [
        "commonUsageWithinTimeRange",
        "favoriteCount",
        "updateTime",
        "usageWithinTimeRange"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1VertexDatasetSpec": {
      "description": "Specification for vertex dataset resources.",
      "properties": {
        "dataItemCount": {
          "type": "string",
          "description": "The number of DataItems in this Dataset. Only apply for non-structured Dataset."
        },
        "dataType": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1VertexDatasetSpecDataType",
          "description": "Type of the dataset."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1VertexDatasetSpecDataType": {
      "description": "Type of the dataset.",
      "type": "string",
      "enum": [
        {
          "name": "DataTypeUnspecified",
          "description": "Should not be used.",
          "value": "DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "Table",
          "description": "Structured data dataset.",
          "value": "TABLE"
        },
        {
          "name": "Image",
          "description": "Image dataset which supports ImageClassification, ImageObjectDetection and ImageSegmentation problems.",
          "value": "IMAGE"
        },
        {
          "name": "Text",
          "description": "Document dataset which supports TextClassification, TextExtraction and TextSentiment problems.",
          "value": "TEXT"
        },
        {
          "name": "Video",
          "description": "Video dataset which supports VideoClassification, VideoObjectTracking and VideoActionRecognition problems.",
          "value": "VIDEO"
        },
        {
          "name": "Conversation",
          "description": "Conversation dataset which supports conversation problems.",
          "value": "CONVERSATION"
        },
        {
          "name": "TimeSeries",
          "description": "TimeSeries dataset.",
          "value": "TIME_SERIES"
        },
        {
          "name": "Document",
          "description": "Document dataset which supports DocumentAnnotation problems.",
          "value": "DOCUMENT"
        },
        {
          "name": "TextToSpeech",
          "description": "TextToSpeech dataset which supports TextToSpeech problems.",
          "value": "TEXT_TO_SPEECH"
        },
        {
          "name": "Translation",
          "description": "Translation dataset which supports Translation problems.",
          "value": "TRANSLATION"
        },
        {
          "name": "StoreVision",
          "description": "Store Vision dataset which is used for HITL integration.",
          "value": "STORE_VISION"
        },
        {
          "name": "EnterpriseKnowledgeGraph",
          "description": "Enterprise Knowledge Graph dataset which is used for HITL labeling integration.",
          "value": "ENTERPRISE_KNOWLEDGE_GRAPH"
        },
        {
          "name": "TextPrompt",
          "description": "Text prompt dataset which supports Large Language Models.",
          "value": "TEXT_PROMPT"
        }
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1VertexDatasetSpecResponse": {
      "description": "Specification for vertex dataset resources.",
      "properties": {
        "dataItemCount": {
          "type": "string",
          "description": "The number of DataItems in this Dataset. Only apply for non-structured Dataset."
        },
        "dataType": {
          "type": "string",
          "description": "Type of the dataset."
        }
      },
      "type": "object",
      "required": [
        "dataItemCount",
        "dataType"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1VertexModelSourceInfo": {
      "description": "Detail description of the source information of a Vertex model.",
      "properties": {
        "copy": {
          "type": "boolean",
          "description": "If this Model is copy of another Model. If true then source_type pertains to the original."
        },
        "sourceType": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1VertexModelSourceInfoSourceType",
          "description": "Type of the model source."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1VertexModelSourceInfoResponse": {
      "description": "Detail description of the source information of a Vertex model.",
      "properties": {
        "copy": {
          "type": "boolean",
          "description": "If this Model is copy of another Model. If true then source_type pertains to the original."
        },
        "sourceType": {
          "type": "string",
          "description": "Type of the model source."
        }
      },
      "type": "object",
      "required": [
        "copy",
        "sourceType"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1VertexModelSourceInfoSourceType": {
      "description": "Type of the model source.",
      "type": "string",
      "enum": [
        {
          "name": "ModelSourceTypeUnspecified",
          "description": "Should not be used.",
          "value": "MODEL_SOURCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Automl",
          "description": "The Model is uploaded by automl training pipeline.",
          "value": "AUTOML"
        },
        {
          "name": "Custom",
          "description": "The Model is uploaded by user or custom training pipeline.",
          "value": "CUSTOM"
        },
        {
          "name": "Bqml",
          "description": "The Model is registered and sync'ed from BigQuery ML.",
          "value": "BQML"
        },
        {
          "name": "ModelGarden",
          "description": "The Model is saved or tuned from Model Garden.",
          "value": "MODEL_GARDEN"
        }
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1VertexModelSpec": {
      "description": "Specification for vertex model resources.",
      "properties": {
        "containerImageUri": {
          "type": "string",
          "description": "URI of the Docker image to be used as the custom container for serving predictions."
        },
        "versionAliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User provided version aliases so that a model version can be referenced via alias"
        },
        "versionDescription": {
          "type": "string",
          "description": "The description of this version."
        },
        "versionId": {
          "type": "string",
          "description": "The version ID of the model."
        },
        "vertexModelSourceInfo": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1VertexModelSourceInfo",
          "description": "Source of a Vertex model."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1VertexModelSpecResponse": {
      "description": "Specification for vertex model resources.",
      "properties": {
        "containerImageUri": {
          "type": "string",
          "description": "URI of the Docker image to be used as the custom container for serving predictions."
        },
        "versionAliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User provided version aliases so that a model version can be referenced via alias"
        },
        "versionDescription": {
          "type": "string",
          "description": "The description of this version."
        },
        "versionId": {
          "type": "string",
          "description": "The version ID of the model."
        },
        "vertexModelSourceInfo": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1VertexModelSourceInfoResponse",
          "description": "Source of a Vertex model."
        }
      },
      "type": "object",
      "required": [
        "containerImageUri",
        "versionAliases",
        "versionDescription",
        "versionId",
        "vertexModelSourceInfo"
      ]
    },
    "google-native:datacatalog/v1:GoogleCloudDatacatalogV1ViewSpecResponse": {
      "description": "Table view specification.",
      "properties": {
        "viewQuery": {
          "type": "string",
          "description": "The query that defines the table view."
        }
      },
      "type": "object",
      "required": [
        "viewQuery"
      ]
    },
    "google-native:datacatalog/v1:TaxonomyActivatedPolicyTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "PolicyTypeUnspecified",
          "description": "Unspecified policy type.",
          "value": "POLICY_TYPE_UNSPECIFIED"
        },
        {
          "name": "FineGrainedAccessControl",
          "description": "Fine-grained access control policy that enables access control on tagged sub-resources.",
          "value": "FINE_GRAINED_ACCESS_CONTROL"
        }
      ]
    },
    "google-native:datacatalog/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:EntryType": {
      "description": "The type of the entry. Only used for Entries with types in the EntryType enum.",
      "type": "string",
      "enum": [
        {
          "name": "EntryTypeUnspecified",
          "description": "Default unknown type.",
          "value": "ENTRY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Table",
          "description": "Output only. The type of entry that has a GoogleSQL schema, including logical views.",
          "value": "TABLE"
        },
        {
          "name": "Model",
          "description": "Output only. The type of models. https://cloud.google.com/bigquery-ml/docs/bigqueryml-intro",
          "value": "MODEL"
        },
        {
          "name": "DataStream",
          "description": "Output only. An entry type which is used for streaming entries. Example: Pub/Sub topic.",
          "value": "DATA_STREAM"
        },
        {
          "name": "Fileset",
          "description": "An entry type which is a set of files or objects. Example: Cloud Storage fileset.",
          "value": "FILESET"
        }
      ]
    },
    "google-native:datacatalog/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1BigQueryDateShardedSpec": {
      "description": "Spec for a group of BigQuery tables with name pattern `[prefix]YYYYMMDD`. Context: https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding",
      "type": "object"
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1BigQueryDateShardedSpecResponse": {
      "description": "Spec for a group of BigQuery tables with name pattern `[prefix]YYYYMMDD`. Context: https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "The Data Catalog resource name of the dataset entry the current table belongs to, for example, `projects/{project_id}/locations/{location}/entrygroups/{entry_group_id}/entries/{entry_id}`."
        },
        "shardCount": {
          "type": "string",
          "description": "Total number of shards."
        },
        "tablePrefix": {
          "type": "string",
          "description": "The table name prefix of the shards. The name of any given shard is `[table_prefix]YYYYMMDD`, for example, for shard `MyTable20180101`, the `table_prefix` is `MyTable`."
        }
      },
      "type": "object",
      "required": [
        "dataset",
        "shardCount",
        "tablePrefix"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1BigQueryTableSpec": {
      "description": "Describes a BigQuery table.",
      "properties": {
        "tableSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1TableSpec",
          "description": "Spec of a BigQuery table. This field should only be populated if `table_source_type` is `BIGQUERY_TABLE`."
        },
        "viewSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1ViewSpec",
          "description": "Table view specification. This field should only be populated if `table_source_type` is `BIGQUERY_VIEW`."
        }
      },
      "type": "object"
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1BigQueryTableSpecResponse": {
      "description": "Describes a BigQuery table.",
      "properties": {
        "tableSourceType": {
          "type": "string",
          "description": "The table source type."
        },
        "tableSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1TableSpecResponse",
          "description": "Spec of a BigQuery table. This field should only be populated if `table_source_type` is `BIGQUERY_TABLE`."
        },
        "viewSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1ViewSpecResponse",
          "description": "Table view specification. This field should only be populated if `table_source_type` is `BIGQUERY_VIEW`."
        }
      },
      "type": "object",
      "required": [
        "tableSourceType",
        "tableSpec",
        "viewSpec"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1ColumnSchema": {
      "description": "Representation of a column within a schema. Columns could be nested inside other columns.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Name of the column."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the column. Default value is an empty string."
        },
        "mode": {
          "type": "string",
          "description": "Optional. A column's mode indicates whether the values in this column are required, nullable, etc. Only `NULLABLE`, `REQUIRED` and `REPEATED` are supported. Default mode is `NULLABLE`."
        },
        "subcolumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1ColumnSchema"
          },
          "description": "Optional. Schema of sub-columns. A column can have zero or more sub-columns."
        },
        "type": {
          "type": "string",
          "description": "Type of the column."
        }
      },
      "type": "object",
      "required": [
        "column",
        "type"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1ColumnSchemaResponse": {
      "description": "Representation of a column within a schema. Columns could be nested inside other columns.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Name of the column."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the column. Default value is an empty string."
        },
        "mode": {
          "type": "string",
          "description": "Optional. A column's mode indicates whether the values in this column are required, nullable, etc. Only `NULLABLE`, `REQUIRED` and `REPEATED` are supported. Default mode is `NULLABLE`."
        },
        "subcolumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1ColumnSchemaResponse"
          },
          "description": "Optional. Schema of sub-columns. A column can have zero or more sub-columns."
        },
        "type": {
          "type": "string",
          "description": "Type of the column."
        }
      },
      "type": "object",
      "required": [
        "column",
        "description",
        "mode",
        "subcolumns",
        "type"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1GcsFileSpecResponse": {
      "description": "Specifications of a single file in Cloud Storage.",
      "properties": {
        "filePath": {
          "type": "string",
          "description": "The full file path. Example: `gs://bucket_name/a/b.txt`."
        },
        "gcsTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SystemTimestampsResponse",
          "description": "Timestamps about the Cloud Storage file."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The size of the file, in bytes."
        }
      },
      "type": "object",
      "required": [
        "filePath",
        "gcsTimestamps",
        "sizeBytes"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1GcsFilesetSpec": {
      "description": "Describes a Cloud Storage fileset entry.",
      "properties": {
        "filePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Patterns to identify a set of files in Google Cloud Storage. See [Cloud Storage documentation](https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames) for more information. Note that bucket wildcards are currently not supported. Examples of valid file_patterns: * `gs://bucket_name/dir/*`: matches all files within `bucket_name/dir` directory. * `gs://bucket_name/dir/**`: matches all files in `bucket_name/dir` spanning all subdirectories. * `gs://bucket_name/file*`: matches files prefixed by `file` in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two characters followed by `.txt` in `bucket_name` * `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel character followed by `.txt` in `bucket_name` * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match `a/*/b` pattern, such as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt` You can combine wildcards to provide more powerful matches, for example: * `gs://bucket_name/[a-m]??.j*g`"
        }
      },
      "type": "object",
      "required": [
        "filePatterns"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1GcsFilesetSpecResponse": {
      "description": "Describes a Cloud Storage fileset entry.",
      "properties": {
        "filePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Patterns to identify a set of files in Google Cloud Storage. See [Cloud Storage documentation](https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames) for more information. Note that bucket wildcards are currently not supported. Examples of valid file_patterns: * `gs://bucket_name/dir/*`: matches all files within `bucket_name/dir` directory. * `gs://bucket_name/dir/**`: matches all files in `bucket_name/dir` spanning all subdirectories. * `gs://bucket_name/file*`: matches files prefixed by `file` in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two characters followed by `.txt` in `bucket_name` * `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel character followed by `.txt` in `bucket_name` * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match `a/*/b` pattern, such as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt` You can combine wildcards to provide more powerful matches, for example: * `gs://bucket_name/[a-m]??.j*g`"
        },
        "sampleGcsFileSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1GcsFileSpecResponse"
          },
          "description": "Sample files contained in this fileset, not all files contained in this fileset are represented here."
        }
      },
      "type": "object",
      "required": [
        "filePatterns",
        "sampleGcsFileSpecs"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1Schema": {
      "description": "Represents a schema (e.g. BigQuery, GoogleSQL, Avro schema).",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1ColumnSchema"
          },
          "description": "Schema of columns. A maximum of 10,000 columns and sub-columns can be specified."
        }
      },
      "type": "object",
      "required": [
        "columns"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1SchemaResponse": {
      "description": "Represents a schema (e.g. BigQuery, GoogleSQL, Avro schema).",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1ColumnSchemaResponse"
          },
          "description": "Schema of columns. A maximum of 10,000 columns and sub-columns can be specified."
        }
      },
      "type": "object",
      "required": [
        "columns"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1SystemTimestampsResponse": {
      "description": "Timestamps about this resource according to a particular system.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation time of the resource within the given system."
        },
        "expireTime": {
          "type": "string",
          "description": "The expiration time of the resource within the given system. Currently only apllicable to BigQuery resources."
        },
        "updateTime": {
          "type": "string",
          "description": "The last-modified time of the resource within the given system."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "expireTime",
        "updateTime"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1TableSpec": {
      "description": "Normal BigQuery table spec.",
      "type": "object"
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1TableSpecResponse": {
      "description": "Normal BigQuery table spec.",
      "properties": {
        "groupedEntry": {
          "type": "string",
          "description": "If the table is a dated shard, i.e., with name pattern `[prefix]YYYYMMDD`, `grouped_entry` is the Data Catalog resource name of the date sharded grouped entry, for example, `projects/{project_id}/locations/{location}/entrygroups/{entry_group_id}/entries/{entry_id}`. Otherwise, `grouped_entry` is empty."
        }
      },
      "type": "object",
      "required": [
        "groupedEntry"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1TaxonomyServiceResponse": {
      "description": "The source system of the Taxonomy.",
      "properties": {
        "identity": {
          "type": "string",
          "description": "The service agent for the service."
        },
        "name": {
          "type": "string",
          "description": "The Google Cloud service name."
        }
      },
      "type": "object",
      "required": [
        "identity",
        "name"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1UsageSignalResponse": {
      "description": "The set of all usage signals that we store in Data Catalog.",
      "properties": {
        "updateTime": {
          "type": "string",
          "description": "The timestamp of the end of the usage statistics duration."
        },
        "usageWithinTimeRange": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Usage statistics over each of the pre-defined time ranges, supported strings for time ranges are {\"24H\", \"7D\", \"30D\"}."
        }
      },
      "type": "object",
      "required": [
        "updateTime",
        "usageWithinTimeRange"
      ]
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1ViewSpec": {
      "description": "Table view specification.",
      "type": "object"
    },
    "google-native:datacatalog/v1beta1:GoogleCloudDatacatalogV1beta1ViewSpecResponse": {
      "description": "Table view specification.",
      "properties": {
        "viewQuery": {
          "type": "string",
          "description": "The query that defines the table view."
        }
      },
      "type": "object",
      "required": [
        "viewQuery"
      ]
    },
    "google-native:datacatalog/v1beta1:TaxonomyActivatedPolicyTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "PolicyTypeUnspecified",
          "description": "Unspecified policy type.",
          "value": "POLICY_TYPE_UNSPECIFIED"
        },
        {
          "name": "FineGrainedAccessControl",
          "description": "Fine grained access control policy, which enables access control on tagged resources.",
          "value": "FINE_GRAINED_ACCESS_CONTROL"
        }
      ]
    },
    "google-native:dataflow/v1b3:AutoscalingSettings": {
      "description": "Settings for WorkerPool autoscaling.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:AutoscalingSettingsAlgorithm",
          "description": "The algorithm to use for autoscaling."
        },
        "maxNumWorkers": {
          "type": "integer",
          "description": "The maximum number of workers to cap scaling at."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:AutoscalingSettingsAlgorithm": {
      "description": "The algorithm to use for autoscaling.",
      "type": "string",
      "enum": [
        {
          "name": "AutoscalingAlgorithmUnknown",
          "description": "The algorithm is unknown, or unspecified.",
          "value": "AUTOSCALING_ALGORITHM_UNKNOWN"
        },
        {
          "name": "AutoscalingAlgorithmNone",
          "description": "Disable autoscaling.",
          "value": "AUTOSCALING_ALGORITHM_NONE"
        },
        {
          "name": "AutoscalingAlgorithmBasic",
          "description": "Increase worker count over time to reduce job execution time.",
          "value": "AUTOSCALING_ALGORITHM_BASIC"
        }
      ]
    },
    "google-native:dataflow/v1b3:AutoscalingSettingsResponse": {
      "description": "Settings for WorkerPool autoscaling.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The algorithm to use for autoscaling."
        },
        "maxNumWorkers": {
          "type": "integer",
          "description": "The maximum number of workers to cap scaling at."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "maxNumWorkers"
      ]
    },
    "google-native:dataflow/v1b3:BigQueryIODetails": {
      "description": "Metadata for a BigQuery connector used by the job.",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "Dataset accessed in the connection."
        },
        "project": {
          "type": "string",
          "description": "Project accessed in the connection."
        },
        "query": {
          "type": "string",
          "description": "Query used to access data in the connection."
        },
        "table": {
          "type": "string",
          "description": "Table accessed in the connection."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:BigQueryIODetailsResponse": {
      "description": "Metadata for a BigQuery connector used by the job.",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "Dataset accessed in the connection."
        },
        "project": {
          "type": "string",
          "description": "Project accessed in the connection."
        },
        "query": {
          "type": "string",
          "description": "Query used to access data in the connection."
        },
        "table": {
          "type": "string",
          "description": "Table accessed in the connection."
        }
      },
      "type": "object",
      "required": [
        "dataset",
        "project",
        "query",
        "table"
      ]
    },
    "google-native:dataflow/v1b3:BigTableIODetails": {
      "description": "Metadata for a Cloud Bigtable connector used by the job.",
      "properties": {
        "instanceId": {
          "type": "string",
          "description": "InstanceId accessed in the connection."
        },
        "project": {
          "type": "string",
          "description": "ProjectId accessed in the connection."
        },
        "tableId": {
          "type": "string",
          "description": "TableId accessed in the connection."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:BigTableIODetailsResponse": {
      "description": "Metadata for a Cloud Bigtable connector used by the job.",
      "properties": {
        "instanceId": {
          "type": "string",
          "description": "InstanceId accessed in the connection."
        },
        "project": {
          "type": "string",
          "description": "ProjectId accessed in the connection."
        },
        "tableId": {
          "type": "string",
          "description": "TableId accessed in the connection."
        }
      },
      "type": "object",
      "required": [
        "instanceId",
        "project",
        "tableId"
      ]
    },
    "google-native:dataflow/v1b3:ComponentSource": {
      "description": "Description of an interstitial value between transforms in an execution stage.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Dataflow service generated name for this source."
        },
        "originalTransformOrCollection": {
          "type": "string",
          "description": "User name for the original user transform or collection with which this source is most closely associated."
        },
        "userName": {
          "type": "string",
          "description": "Human-readable name for this transform; may be user or system generated."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:ComponentSourceResponse": {
      "description": "Description of an interstitial value between transforms in an execution stage.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Dataflow service generated name for this source."
        },
        "originalTransformOrCollection": {
          "type": "string",
          "description": "User name for the original user transform or collection with which this source is most closely associated."
        },
        "userName": {
          "type": "string",
          "description": "Human-readable name for this transform; may be user or system generated."
        }
      },
      "type": "object",
      "required": [
        "name",
        "originalTransformOrCollection",
        "userName"
      ]
    },
    "google-native:dataflow/v1b3:ComponentTransform": {
      "description": "Description of a transform executed as part of an execution stage.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Dataflow service generated name for this source."
        },
        "originalTransform": {
          "type": "string",
          "description": "User name for the original user transform with which this transform is most closely associated."
        },
        "userName": {
          "type": "string",
          "description": "Human-readable name for this transform; may be user or system generated."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:ComponentTransformResponse": {
      "description": "Description of a transform executed as part of an execution stage.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Dataflow service generated name for this source."
        },
        "originalTransform": {
          "type": "string",
          "description": "User name for the original user transform with which this transform is most closely associated."
        },
        "userName": {
          "type": "string",
          "description": "Human-readable name for this transform; may be user or system generated."
        }
      },
      "type": "object",
      "required": [
        "name",
        "originalTransform",
        "userName"
      ]
    },
    "google-native:dataflow/v1b3:DataSamplingConfig": {
      "description": "Configuration options for sampling elements.",
      "properties": {
        "behaviors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:DataSamplingConfigBehaviorsItem"
          },
          "description": "List of given sampling behaviors to enable. For example, specifying behaviors = [ALWAYS_ON] samples in-flight elements but does not sample exceptions. Can be used to specify multiple behaviors like, behaviors = [ALWAYS_ON, EXCEPTIONS] for specifying periodic sampling and exception sampling. If DISABLED is in the list, then sampling will be disabled and ignore the other given behaviors. Ordering does not matter."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:DataSamplingConfigBehaviorsItem": {
      "type": "string",
      "enum": [
        {
          "name": "DataSamplingBehaviorUnspecified",
          "description": "If given, has no effect on sampling behavior. Used as an unknown or unset sentinel value.",
          "value": "DATA_SAMPLING_BEHAVIOR_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "When given, disables element sampling. Has same behavior as not setting the behavior.",
          "value": "DISABLED"
        },
        {
          "name": "AlwaysOn",
          "description": "When given, enables sampling in-flight from all PCollections.",
          "value": "ALWAYS_ON"
        },
        {
          "name": "Exceptions",
          "description": "When given, enables sampling input elements when a user-defined DoFn causes an exception.",
          "value": "EXCEPTIONS"
        }
      ]
    },
    "google-native:dataflow/v1b3:DataSamplingConfigResponse": {
      "description": "Configuration options for sampling elements.",
      "properties": {
        "behaviors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of given sampling behaviors to enable. For example, specifying behaviors = [ALWAYS_ON] samples in-flight elements but does not sample exceptions. Can be used to specify multiple behaviors like, behaviors = [ALWAYS_ON, EXCEPTIONS] for specifying periodic sampling and exception sampling. If DISABLED is in the list, then sampling will be disabled and ignore the other given behaviors. Ordering does not matter."
        }
      },
      "type": "object",
      "required": [
        "behaviors"
      ]
    },
    "google-native:dataflow/v1b3:DatastoreIODetails": {
      "description": "Metadata for a Datastore connector used by the job.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Namespace used in the connection."
        },
        "project": {
          "type": "string",
          "description": "ProjectId accessed in the connection."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:DatastoreIODetailsResponse": {
      "description": "Metadata for a Datastore connector used by the job.",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Namespace used in the connection."
        },
        "project": {
          "type": "string",
          "description": "ProjectId accessed in the connection."
        }
      },
      "type": "object",
      "required": [
        "namespace",
        "project"
      ]
    },
    "google-native:dataflow/v1b3:DebugOptions": {
      "description": "Describes any options that have an effect on the debugging of pipelines.",
      "properties": {
        "dataSampling": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:DataSamplingConfig",
          "description": "Configuration options for sampling elements from a running pipeline."
        },
        "enableHotKeyLogging": {
          "type": "boolean",
          "description": "When true, enables the logging of the literal hot key to the user's Cloud Logging."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:DebugOptionsResponse": {
      "description": "Describes any options that have an effect on the debugging of pipelines.",
      "properties": {
        "dataSampling": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:DataSamplingConfigResponse",
          "description": "Configuration options for sampling elements from a running pipeline."
        },
        "enableHotKeyLogging": {
          "type": "boolean",
          "description": "When true, enables the logging of the literal hot key to the user's Cloud Logging."
        }
      },
      "type": "object",
      "required": [
        "dataSampling",
        "enableHotKeyLogging"
      ]
    },
    "google-native:dataflow/v1b3:Disk": {
      "description": "Describes the data disk used by a workflow job.",
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in \"pd-standard\". If SSD persistent disks are available, the resource name typically ends with \"pd-ssd\". The actual valid values are defined the Google Compute Engine API, not by the Cloud Dataflow API; consult the Google Compute Engine documentation for more information about determining the set of available disk types for a particular project and zone. Google Compute Engine Disk types are local to a particular project in a particular zone, and so the resource name will typically look something like this: compute.googleapis.com/projects/project-id/zones/zone/diskTypes/pd-standard"
        },
        "mountPoint": {
          "type": "string",
          "description": "Directory in a VM where disk is mounted."
        },
        "sizeGb": {
          "type": "integer",
          "description": "Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:DiskResponse": {
      "description": "Describes the data disk used by a workflow job.",
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in \"pd-standard\". If SSD persistent disks are available, the resource name typically ends with \"pd-ssd\". The actual valid values are defined the Google Compute Engine API, not by the Cloud Dataflow API; consult the Google Compute Engine documentation for more information about determining the set of available disk types for a particular project and zone. Google Compute Engine Disk types are local to a particular project in a particular zone, and so the resource name will typically look something like this: compute.googleapis.com/projects/project-id/zones/zone/diskTypes/pd-standard"
        },
        "mountPoint": {
          "type": "string",
          "description": "Directory in a VM where disk is mounted."
        },
        "sizeGb": {
          "type": "integer",
          "description": "Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default."
        }
      },
      "type": "object",
      "required": [
        "diskType",
        "mountPoint",
        "sizeGb"
      ]
    },
    "google-native:dataflow/v1b3:DisplayData": {
      "description": "Data provided with a pipeline or transform to provide descriptive info.",
      "properties": {
        "boolValue": {
          "type": "boolean",
          "description": "Contains value if the data is of a boolean type."
        },
        "durationValue": {
          "type": "string",
          "description": "Contains value if the data is of duration type."
        },
        "floatValue": {
          "type": "number",
          "description": "Contains value if the data is of float type."
        },
        "int64Value": {
          "type": "string",
          "description": "Contains value if the data is of int64 type."
        },
        "javaClassValue": {
          "type": "string",
          "description": "Contains value if the data is of java class type."
        },
        "key": {
          "type": "string",
          "description": "The key identifying the display data. This is intended to be used as a label for the display data when viewed in a dax monitoring system."
        },
        "label": {
          "type": "string",
          "description": "An optional label to display in a dax UI for the element."
        },
        "namespace": {
          "type": "string",
          "description": "The namespace for the key. This is usually a class name or programming language namespace (i.e. python module) which defines the display data. This allows a dax monitoring system to specially handle the data and perform custom rendering."
        },
        "shortStrValue": {
          "type": "string",
          "description": "A possible additional shorter value to display. For example a java_class_name_value of com.mypackage.MyDoFn will be stored with MyDoFn as the short_str_value and com.mypackage.MyDoFn as the java_class_name value. short_str_value can be displayed and java_class_name_value will be displayed as a tooltip."
        },
        "strValue": {
          "type": "string",
          "description": "Contains value if the data is of string type."
        },
        "timestampValue": {
          "type": "string",
          "description": "Contains value if the data is of timestamp type."
        },
        "url": {
          "type": "string",
          "description": "An optional full URL."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:DisplayDataResponse": {
      "description": "Data provided with a pipeline or transform to provide descriptive info.",
      "properties": {
        "boolValue": {
          "type": "boolean",
          "description": "Contains value if the data is of a boolean type."
        },
        "durationValue": {
          "type": "string",
          "description": "Contains value if the data is of duration type."
        },
        "floatValue": {
          "type": "number",
          "description": "Contains value if the data is of float type."
        },
        "int64Value": {
          "type": "string",
          "description": "Contains value if the data is of int64 type."
        },
        "javaClassValue": {
          "type": "string",
          "description": "Contains value if the data is of java class type."
        },
        "key": {
          "type": "string",
          "description": "The key identifying the display data. This is intended to be used as a label for the display data when viewed in a dax monitoring system."
        },
        "label": {
          "type": "string",
          "description": "An optional label to display in a dax UI for the element."
        },
        "namespace": {
          "type": "string",
          "description": "The namespace for the key. This is usually a class name or programming language namespace (i.e. python module) which defines the display data. This allows a dax monitoring system to specially handle the data and perform custom rendering."
        },
        "shortStrValue": {
          "type": "string",
          "description": "A possible additional shorter value to display. For example a java_class_name_value of com.mypackage.MyDoFn will be stored with MyDoFn as the short_str_value and com.mypackage.MyDoFn as the java_class_name value. short_str_value can be displayed and java_class_name_value will be displayed as a tooltip."
        },
        "strValue": {
          "type": "string",
          "description": "Contains value if the data is of string type."
        },
        "timestampValue": {
          "type": "string",
          "description": "Contains value if the data is of timestamp type."
        },
        "url": {
          "type": "string",
          "description": "An optional full URL."
        }
      },
      "type": "object",
      "required": [
        "boolValue",
        "durationValue",
        "floatValue",
        "int64Value",
        "javaClassValue",
        "key",
        "label",
        "namespace",
        "shortStrValue",
        "strValue",
        "timestampValue",
        "url"
      ]
    },
    "google-native:dataflow/v1b3:Environment": {
      "description": "Describes the environment in which a Dataflow Job runs.",
      "properties": {
        "clusterManagerApiService": {
          "type": "string",
          "description": "The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. \"compute.googleapis.com\"."
        },
        "dataset": {
          "type": "string",
          "description": "The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}"
        },
        "debugOptions": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:DebugOptions",
          "description": "Any debugging options to be supplied to the job."
        },
        "experiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of experiments to enable. This field should be used for SDK related experiments and not for service related experiments. The proper field for service related experiments is service_options."
        },
        "flexResourceSchedulingGoal": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:EnvironmentFlexResourceSchedulingGoal",
          "description": "Which Flexible Resource Scheduling mode to run in."
        },
        "internalExperiments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Experimental settings."
        },
        "sdkPipelineOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Cloud Dataflow SDK pipeline options specified by the user. These options are passed through the service and are used to recreate the SDK pipeline options on the worker in a language agnostic and platform independent way."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Identity to run virtual machines as. Defaults to the default account."
        },
        "serviceKmsKeyName": {
          "type": "string",
          "description": "If set, contains the Cloud KMS key identifier used to encrypt data at rest, AKA a Customer Managed Encryption Key (CMEK). Format: projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY"
        },
        "serviceOptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of service options to enable. This field should be used for service related experiments only. These experiments, when graduating to GA, should be replaced by dedicated fields or become default (i.e. always on)."
        },
        "tempStoragePrefix": {
          "type": "string",
          "description": "The prefix of the resources the system should use for temporary storage. The system will append the suffix \"/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "userAgent": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A description of the process that generated the request."
        },
        "version": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A structure describing which components and their versions of the service are required in order to run the job."
        },
        "workerPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:WorkerPool"
          },
          "description": "The worker pools. At least one \"harness\" worker pool must be specified in order for the job to have workers."
        },
        "workerRegion": {
          "type": "string",
          "description": "The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane's region."
        },
        "workerZone": {
          "type": "string",
          "description": "The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane's region is chosen based on available capacity."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:EnvironmentFlexResourceSchedulingGoal": {
      "description": "Which Flexible Resource Scheduling mode to run in.",
      "type": "string",
      "enum": [
        {
          "name": "FlexrsUnspecified",
          "description": "Run in the default mode.",
          "value": "FLEXRS_UNSPECIFIED"
        },
        {
          "name": "FlexrsSpeedOptimized",
          "description": "Optimize for lower execution time.",
          "value": "FLEXRS_SPEED_OPTIMIZED"
        },
        {
          "name": "FlexrsCostOptimized",
          "description": "Optimize for lower cost.",
          "value": "FLEXRS_COST_OPTIMIZED"
        }
      ]
    },
    "google-native:dataflow/v1b3:EnvironmentResponse": {
      "description": "Describes the environment in which a Dataflow Job runs.",
      "properties": {
        "clusterManagerApiService": {
          "type": "string",
          "description": "The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. \"compute.googleapis.com\"."
        },
        "dataset": {
          "type": "string",
          "description": "The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}"
        },
        "debugOptions": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:DebugOptionsResponse",
          "description": "Any debugging options to be supplied to the job."
        },
        "experiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of experiments to enable. This field should be used for SDK related experiments and not for service related experiments. The proper field for service related experiments is service_options."
        },
        "flexResourceSchedulingGoal": {
          "type": "string",
          "description": "Which Flexible Resource Scheduling mode to run in."
        },
        "internalExperiments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Experimental settings."
        },
        "sdkPipelineOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Cloud Dataflow SDK pipeline options specified by the user. These options are passed through the service and are used to recreate the SDK pipeline options on the worker in a language agnostic and platform independent way."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Identity to run virtual machines as. Defaults to the default account."
        },
        "serviceKmsKeyName": {
          "type": "string",
          "description": "If set, contains the Cloud KMS key identifier used to encrypt data at rest, AKA a Customer Managed Encryption Key (CMEK). Format: projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY"
        },
        "serviceOptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of service options to enable. This field should be used for service related experiments only. These experiments, when graduating to GA, should be replaced by dedicated fields or become default (i.e. always on)."
        },
        "shuffleMode": {
          "type": "string",
          "description": "The shuffle mode used for the job."
        },
        "tempStoragePrefix": {
          "type": "string",
          "description": "The prefix of the resources the system should use for temporary storage. The system will append the suffix \"/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "useStreamingEngineResourceBasedBilling": {
          "type": "boolean",
          "description": "Whether the job uses the new streaming engine billing model based on resource usage."
        },
        "userAgent": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A description of the process that generated the request."
        },
        "version": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A structure describing which components and their versions of the service are required in order to run the job."
        },
        "workerPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:WorkerPoolResponse"
          },
          "description": "The worker pools. At least one \"harness\" worker pool must be specified in order for the job to have workers."
        },
        "workerRegion": {
          "type": "string",
          "description": "The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane's region."
        },
        "workerZone": {
          "type": "string",
          "description": "The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane's region is chosen based on available capacity."
        }
      },
      "type": "object",
      "required": [
        "clusterManagerApiService",
        "dataset",
        "debugOptions",
        "experiments",
        "flexResourceSchedulingGoal",
        "internalExperiments",
        "sdkPipelineOptions",
        "serviceAccountEmail",
        "serviceKmsKeyName",
        "serviceOptions",
        "shuffleMode",
        "tempStoragePrefix",
        "useStreamingEngineResourceBasedBilling",
        "userAgent",
        "version",
        "workerPools",
        "workerRegion",
        "workerZone"
      ]
    },
    "google-native:dataflow/v1b3:ExecutionStageState": {
      "description": "A message describing the state of a particular execution stage.",
      "properties": {
        "currentStateTime": {
          "type": "string",
          "description": "The time at which the stage transitioned to this state."
        },
        "executionStageName": {
          "type": "string",
          "description": "The name of the execution stage."
        },
        "executionStageState": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:ExecutionStageStateExecutionStageState",
          "description": "Executions stage states allow the same set of values as JobState."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:ExecutionStageStateExecutionStageState": {
      "description": "Executions stage states allow the same set of values as JobState.",
      "type": "string",
      "enum": [
        {
          "name": "JobStateUnknown",
          "description": "The job's run state isn't specified.",
          "value": "JOB_STATE_UNKNOWN"
        },
        {
          "name": "JobStateStopped",
          "description": "`JOB_STATE_STOPPED` indicates that the job has not yet started to run.",
          "value": "JOB_STATE_STOPPED"
        },
        {
          "name": "JobStateRunning",
          "description": "`JOB_STATE_RUNNING` indicates that the job is currently running.",
          "value": "JOB_STATE_RUNNING"
        },
        {
          "name": "JobStateDone",
          "description": "`JOB_STATE_DONE` indicates that the job has successfully completed. This is a terminal job state. This state may be set by the Cloud Dataflow service, as a transition from `JOB_STATE_RUNNING`. It may also be set via a Cloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal state.",
          "value": "JOB_STATE_DONE"
        },
        {
          "name": "JobStateFailed",
          "description": "`JOB_STATE_FAILED` indicates that the job has failed. This is a terminal job state. This state may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_RUNNING`.",
          "value": "JOB_STATE_FAILED"
        },
        {
          "name": "JobStateCancelled",
          "description": "`JOB_STATE_CANCELLED` indicates that the job has been explicitly cancelled. This is a terminal job state. This state may only be set via a Cloud Dataflow `UpdateJob` call, and only if the job has not yet reached another terminal state.",
          "value": "JOB_STATE_CANCELLED"
        },
        {
          "name": "JobStateUpdated",
          "description": "`JOB_STATE_UPDATED` indicates that the job was successfully updated, meaning that this job was stopped and another job was started, inheriting state from this one. This is a terminal job state. This state may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_RUNNING`.",
          "value": "JOB_STATE_UPDATED"
        },
        {
          "name": "JobStateDraining",
          "description": "`JOB_STATE_DRAINING` indicates that the job is in the process of draining. A draining job has stopped pulling from its input sources and is processing any data that remains in-flight. This state may be set via a Cloud Dataflow `UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs that are draining may only transition to `JOB_STATE_DRAINED`, `JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_DRAINING"
        },
        {
          "name": "JobStateDrained",
          "description": "`JOB_STATE_DRAINED` indicates that the job has been drained. A drained job terminated by stopping pulling from its input sources and processing any data that remained in-flight when draining was requested. This state is a terminal state, may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_DRAINING`.",
          "value": "JOB_STATE_DRAINED"
        },
        {
          "name": "JobStatePending",
          "description": "`JOB_STATE_PENDING` indicates that the job has been created but is not yet running. Jobs that are pending may only transition to `JOB_STATE_RUNNING`, or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_PENDING"
        },
        {
          "name": "JobStateCancelling",
          "description": "`JOB_STATE_CANCELLING` indicates that the job has been explicitly cancelled and is in the process of stopping. Jobs that are cancelling may only transition to `JOB_STATE_CANCELLED` or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_CANCELLING"
        },
        {
          "name": "JobStateQueued",
          "description": "`JOB_STATE_QUEUED` indicates that the job has been created but is being delayed until launch. Jobs that are queued may only transition to `JOB_STATE_PENDING` or `JOB_STATE_CANCELLED`.",
          "value": "JOB_STATE_QUEUED"
        },
        {
          "name": "JobStateResourceCleaningUp",
          "description": "`JOB_STATE_RESOURCE_CLEANING_UP` indicates that the batch job's associated resources are currently being cleaned up after a successful run. Currently, this is an opt-in feature, please reach out to Cloud support team if you are interested.",
          "value": "JOB_STATE_RESOURCE_CLEANING_UP"
        }
      ]
    },
    "google-native:dataflow/v1b3:ExecutionStageStateResponse": {
      "description": "A message describing the state of a particular execution stage.",
      "properties": {
        "currentStateTime": {
          "type": "string",
          "description": "The time at which the stage transitioned to this state."
        },
        "executionStageName": {
          "type": "string",
          "description": "The name of the execution stage."
        },
        "executionStageState": {
          "type": "string",
          "description": "Executions stage states allow the same set of values as JobState."
        }
      },
      "type": "object",
      "required": [
        "currentStateTime",
        "executionStageName",
        "executionStageState"
      ]
    },
    "google-native:dataflow/v1b3:ExecutionStageSummary": {
      "description": "Description of the composing transforms, names/ids, and input/outputs of a stage of execution. Some composing transforms and sources may have been generated by the Dataflow service during execution planning.",
      "properties": {
        "componentSource": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ComponentSource"
          },
          "description": "Collections produced and consumed by component transforms of this stage."
        },
        "componentTransform": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ComponentTransform"
          },
          "description": "Transforms that comprise this execution stage."
        },
        "id": {
          "type": "string",
          "description": "Dataflow service generated id for this stage."
        },
        "inputSource": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:StageSource"
          },
          "description": "Input sources for this stage."
        },
        "kind": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:ExecutionStageSummaryKind",
          "description": "Type of transform this stage is executing."
        },
        "name": {
          "type": "string",
          "description": "Dataflow service generated name for this stage."
        },
        "outputSource": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:StageSource"
          },
          "description": "Output sources for this stage."
        },
        "prerequisiteStage": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other stages that must complete before this stage can run."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:ExecutionStageSummaryKind": {
      "description": "Type of transform this stage is executing.",
      "type": "string",
      "enum": [
        {
          "name": "UnknownKind",
          "description": "Unrecognized transform type.",
          "value": "UNKNOWN_KIND"
        },
        {
          "name": "ParDoKind",
          "description": "ParDo transform.",
          "value": "PAR_DO_KIND"
        },
        {
          "name": "GroupByKeyKind",
          "description": "Group By Key transform.",
          "value": "GROUP_BY_KEY_KIND"
        },
        {
          "name": "FlattenKind",
          "description": "Flatten transform.",
          "value": "FLATTEN_KIND"
        },
        {
          "name": "ReadKind",
          "description": "Read transform.",
          "value": "READ_KIND"
        },
        {
          "name": "WriteKind",
          "description": "Write transform.",
          "value": "WRITE_KIND"
        },
        {
          "name": "ConstantKind",
          "description": "Constructs from a constant value, such as with Create.of.",
          "value": "CONSTANT_KIND"
        },
        {
          "name": "SingletonKind",
          "description": "Creates a Singleton view of a collection.",
          "value": "SINGLETON_KIND"
        },
        {
          "name": "ShuffleKind",
          "description": "Opening or closing a shuffle session, often as part of a GroupByKey.",
          "value": "SHUFFLE_KIND"
        }
      ]
    },
    "google-native:dataflow/v1b3:ExecutionStageSummaryResponse": {
      "description": "Description of the composing transforms, names/ids, and input/outputs of a stage of execution. Some composing transforms and sources may have been generated by the Dataflow service during execution planning.",
      "properties": {
        "componentSource": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ComponentSourceResponse"
          },
          "description": "Collections produced and consumed by component transforms of this stage."
        },
        "componentTransform": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ComponentTransformResponse"
          },
          "description": "Transforms that comprise this execution stage."
        },
        "inputSource": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:StageSourceResponse"
          },
          "description": "Input sources for this stage."
        },
        "kind": {
          "type": "string",
          "description": "Type of transform this stage is executing."
        },
        "name": {
          "type": "string",
          "description": "Dataflow service generated name for this stage."
        },
        "outputSource": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:StageSourceResponse"
          },
          "description": "Output sources for this stage."
        },
        "prerequisiteStage": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other stages that must complete before this stage can run."
        }
      },
      "type": "object",
      "required": [
        "componentSource",
        "componentTransform",
        "inputSource",
        "kind",
        "name",
        "outputSource",
        "prerequisiteStage"
      ]
    },
    "google-native:dataflow/v1b3:FileIODetails": {
      "description": "Metadata for a File connector used by the job.",
      "properties": {
        "filePattern": {
          "type": "string",
          "description": "File Pattern used to access files by the connector."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:FileIODetailsResponse": {
      "description": "Metadata for a File connector used by the job.",
      "properties": {
        "filePattern": {
          "type": "string",
          "description": "File Pattern used to access files by the connector."
        }
      },
      "type": "object",
      "required": [
        "filePattern"
      ]
    },
    "google-native:dataflow/v1b3:JobCurrentState": {
      "description": "The current state of the job. Jobs are created in the `JOB_STATE_STOPPED` state unless otherwise specified. A job in the `JOB_STATE_RUNNING` state may asynchronously enter a terminal state. After a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Cloud Dataflow service; callers cannot mutate it.",
      "type": "string",
      "enum": [
        {
          "name": "JobStateUnknown",
          "description": "The job's run state isn't specified.",
          "value": "JOB_STATE_UNKNOWN"
        },
        {
          "name": "JobStateStopped",
          "description": "`JOB_STATE_STOPPED` indicates that the job has not yet started to run.",
          "value": "JOB_STATE_STOPPED"
        },
        {
          "name": "JobStateRunning",
          "description": "`JOB_STATE_RUNNING` indicates that the job is currently running.",
          "value": "JOB_STATE_RUNNING"
        },
        {
          "name": "JobStateDone",
          "description": "`JOB_STATE_DONE` indicates that the job has successfully completed. This is a terminal job state. This state may be set by the Cloud Dataflow service, as a transition from `JOB_STATE_RUNNING`. It may also be set via a Cloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal state.",
          "value": "JOB_STATE_DONE"
        },
        {
          "name": "JobStateFailed",
          "description": "`JOB_STATE_FAILED` indicates that the job has failed. This is a terminal job state. This state may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_RUNNING`.",
          "value": "JOB_STATE_FAILED"
        },
        {
          "name": "JobStateCancelled",
          "description": "`JOB_STATE_CANCELLED` indicates that the job has been explicitly cancelled. This is a terminal job state. This state may only be set via a Cloud Dataflow `UpdateJob` call, and only if the job has not yet reached another terminal state.",
          "value": "JOB_STATE_CANCELLED"
        },
        {
          "name": "JobStateUpdated",
          "description": "`JOB_STATE_UPDATED` indicates that the job was successfully updated, meaning that this job was stopped and another job was started, inheriting state from this one. This is a terminal job state. This state may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_RUNNING`.",
          "value": "JOB_STATE_UPDATED"
        },
        {
          "name": "JobStateDraining",
          "description": "`JOB_STATE_DRAINING` indicates that the job is in the process of draining. A draining job has stopped pulling from its input sources and is processing any data that remains in-flight. This state may be set via a Cloud Dataflow `UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs that are draining may only transition to `JOB_STATE_DRAINED`, `JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_DRAINING"
        },
        {
          "name": "JobStateDrained",
          "description": "`JOB_STATE_DRAINED` indicates that the job has been drained. A drained job terminated by stopping pulling from its input sources and processing any data that remained in-flight when draining was requested. This state is a terminal state, may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_DRAINING`.",
          "value": "JOB_STATE_DRAINED"
        },
        {
          "name": "JobStatePending",
          "description": "`JOB_STATE_PENDING` indicates that the job has been created but is not yet running. Jobs that are pending may only transition to `JOB_STATE_RUNNING`, or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_PENDING"
        },
        {
          "name": "JobStateCancelling",
          "description": "`JOB_STATE_CANCELLING` indicates that the job has been explicitly cancelled and is in the process of stopping. Jobs that are cancelling may only transition to `JOB_STATE_CANCELLED` or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_CANCELLING"
        },
        {
          "name": "JobStateQueued",
          "description": "`JOB_STATE_QUEUED` indicates that the job has been created but is being delayed until launch. Jobs that are queued may only transition to `JOB_STATE_PENDING` or `JOB_STATE_CANCELLED`.",
          "value": "JOB_STATE_QUEUED"
        },
        {
          "name": "JobStateResourceCleaningUp",
          "description": "`JOB_STATE_RESOURCE_CLEANING_UP` indicates that the batch job's associated resources are currently being cleaned up after a successful run. Currently, this is an opt-in feature, please reach out to Cloud support team if you are interested.",
          "value": "JOB_STATE_RESOURCE_CLEANING_UP"
        }
      ]
    },
    "google-native:dataflow/v1b3:JobExecutionInfo": {
      "description": "Additional information about how a Cloud Dataflow job will be executed that isn't contained in the submitted job.",
      "properties": {
        "stages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping from each stage to the information about that stage."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:JobExecutionInfoResponse": {
      "description": "Additional information about how a Cloud Dataflow job will be executed that isn't contained in the submitted job.",
      "properties": {
        "stages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping from each stage to the information about that stage."
        }
      },
      "type": "object",
      "required": [
        "stages"
      ]
    },
    "google-native:dataflow/v1b3:JobMetadata": {
      "description": "Metadata available primarily for filtering jobs. Will be included in the ListJob response and Job SUMMARY view.",
      "properties": {
        "bigTableDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:BigTableIODetails"
          },
          "description": "Identification of a Cloud Bigtable source used in the Dataflow job."
        },
        "bigqueryDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:BigQueryIODetails"
          },
          "description": "Identification of a BigQuery source used in the Dataflow job."
        },
        "datastoreDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:DatastoreIODetails"
          },
          "description": "Identification of a Datastore source used in the Dataflow job."
        },
        "fileDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:FileIODetails"
          },
          "description": "Identification of a File source used in the Dataflow job."
        },
        "pubsubDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:PubSubIODetails"
          },
          "description": "Identification of a Pub/Sub source used in the Dataflow job."
        },
        "sdkVersion": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:SdkVersion",
          "description": "The SDK version used to run the job."
        },
        "spannerDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:SpannerIODetails"
          },
          "description": "Identification of a Spanner source used in the Dataflow job."
        },
        "userDisplayProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "List of display properties to help UI filter jobs."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:JobMetadataResponse": {
      "description": "Metadata available primarily for filtering jobs. Will be included in the ListJob response and Job SUMMARY view.",
      "properties": {
        "bigTableDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:BigTableIODetailsResponse"
          },
          "description": "Identification of a Cloud Bigtable source used in the Dataflow job."
        },
        "bigqueryDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:BigQueryIODetailsResponse"
          },
          "description": "Identification of a BigQuery source used in the Dataflow job."
        },
        "datastoreDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:DatastoreIODetailsResponse"
          },
          "description": "Identification of a Datastore source used in the Dataflow job."
        },
        "fileDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:FileIODetailsResponse"
          },
          "description": "Identification of a File source used in the Dataflow job."
        },
        "pubsubDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:PubSubIODetailsResponse"
          },
          "description": "Identification of a Pub/Sub source used in the Dataflow job."
        },
        "sdkVersion": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:SdkVersionResponse",
          "description": "The SDK version used to run the job."
        },
        "spannerDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:SpannerIODetailsResponse"
          },
          "description": "Identification of a Spanner source used in the Dataflow job."
        },
        "userDisplayProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "List of display properties to help UI filter jobs."
        }
      },
      "type": "object",
      "required": [
        "bigTableDetails",
        "bigqueryDetails",
        "datastoreDetails",
        "fileDetails",
        "pubsubDetails",
        "sdkVersion",
        "spannerDetails",
        "userDisplayProperties"
      ]
    },
    "google-native:dataflow/v1b3:JobRequestedState": {
      "description": "The job's requested state. Applies to `UpdateJob` requests. Set `requested_state` with `UpdateJob` requests to switch between the states `JOB_STATE_STOPPED` and `JOB_STATE_RUNNING`. You can also use `UpdateJob` requests to change a job's state from `JOB_STATE_RUNNING` to `JOB_STATE_CANCELLED`, `JOB_STATE_DONE`, or `JOB_STATE_DRAINED`. These states irrevocably terminate the job if it hasn't already reached a terminal state. This field has no effect on `CreateJob` requests.",
      "type": "string",
      "enum": [
        {
          "name": "JobStateUnknown",
          "description": "The job's run state isn't specified.",
          "value": "JOB_STATE_UNKNOWN"
        },
        {
          "name": "JobStateStopped",
          "description": "`JOB_STATE_STOPPED` indicates that the job has not yet started to run.",
          "value": "JOB_STATE_STOPPED"
        },
        {
          "name": "JobStateRunning",
          "description": "`JOB_STATE_RUNNING` indicates that the job is currently running.",
          "value": "JOB_STATE_RUNNING"
        },
        {
          "name": "JobStateDone",
          "description": "`JOB_STATE_DONE` indicates that the job has successfully completed. This is a terminal job state. This state may be set by the Cloud Dataflow service, as a transition from `JOB_STATE_RUNNING`. It may also be set via a Cloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal state.",
          "value": "JOB_STATE_DONE"
        },
        {
          "name": "JobStateFailed",
          "description": "`JOB_STATE_FAILED` indicates that the job has failed. This is a terminal job state. This state may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_RUNNING`.",
          "value": "JOB_STATE_FAILED"
        },
        {
          "name": "JobStateCancelled",
          "description": "`JOB_STATE_CANCELLED` indicates that the job has been explicitly cancelled. This is a terminal job state. This state may only be set via a Cloud Dataflow `UpdateJob` call, and only if the job has not yet reached another terminal state.",
          "value": "JOB_STATE_CANCELLED"
        },
        {
          "name": "JobStateUpdated",
          "description": "`JOB_STATE_UPDATED` indicates that the job was successfully updated, meaning that this job was stopped and another job was started, inheriting state from this one. This is a terminal job state. This state may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_RUNNING`.",
          "value": "JOB_STATE_UPDATED"
        },
        {
          "name": "JobStateDraining",
          "description": "`JOB_STATE_DRAINING` indicates that the job is in the process of draining. A draining job has stopped pulling from its input sources and is processing any data that remains in-flight. This state may be set via a Cloud Dataflow `UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs that are draining may only transition to `JOB_STATE_DRAINED`, `JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_DRAINING"
        },
        {
          "name": "JobStateDrained",
          "description": "`JOB_STATE_DRAINED` indicates that the job has been drained. A drained job terminated by stopping pulling from its input sources and processing any data that remained in-flight when draining was requested. This state is a terminal state, may only be set by the Cloud Dataflow service, and only as a transition from `JOB_STATE_DRAINING`.",
          "value": "JOB_STATE_DRAINED"
        },
        {
          "name": "JobStatePending",
          "description": "`JOB_STATE_PENDING` indicates that the job has been created but is not yet running. Jobs that are pending may only transition to `JOB_STATE_RUNNING`, or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_PENDING"
        },
        {
          "name": "JobStateCancelling",
          "description": "`JOB_STATE_CANCELLING` indicates that the job has been explicitly cancelled and is in the process of stopping. Jobs that are cancelling may only transition to `JOB_STATE_CANCELLED` or `JOB_STATE_FAILED`.",
          "value": "JOB_STATE_CANCELLING"
        },
        {
          "name": "JobStateQueued",
          "description": "`JOB_STATE_QUEUED` indicates that the job has been created but is being delayed until launch. Jobs that are queued may only transition to `JOB_STATE_PENDING` or `JOB_STATE_CANCELLED`.",
          "value": "JOB_STATE_QUEUED"
        },
        {
          "name": "JobStateResourceCleaningUp",
          "description": "`JOB_STATE_RESOURCE_CLEANING_UP` indicates that the batch job's associated resources are currently being cleaned up after a successful run. Currently, this is an opt-in feature, please reach out to Cloud support team if you are interested.",
          "value": "JOB_STATE_RESOURCE_CLEANING_UP"
        }
      ]
    },
    "google-native:dataflow/v1b3:JobType": {
      "description": "The type of Cloud Dataflow job.",
      "type": "string",
      "enum": [
        {
          "name": "JobTypeUnknown",
          "description": "The type of the job is unspecified, or unknown.",
          "value": "JOB_TYPE_UNKNOWN"
        },
        {
          "name": "JobTypeBatch",
          "description": "A batch job with a well-defined end point: data is read, data is processed, data is written, and the job is done.",
          "value": "JOB_TYPE_BATCH"
        },
        {
          "name": "JobTypeStreaming",
          "description": "A continuously streaming job with no end: data is read, processed, and written continuously.",
          "value": "JOB_TYPE_STREAMING"
        }
      ]
    },
    "google-native:dataflow/v1b3:Package": {
      "description": "The packages that must be installed in order for a worker to run the steps of the Cloud Dataflow job that will be assigned to its worker pool. This is the mechanism by which the Cloud Dataflow SDK causes code to be loaded onto the workers. For example, the Cloud Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc.) required in order for that code to run.",
      "properties": {
        "location": {
          "type": "string",
          "description": "The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/"
        },
        "name": {
          "type": "string",
          "description": "The name of the package."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:PackageResponse": {
      "description": "The packages that must be installed in order for a worker to run the steps of the Cloud Dataflow job that will be assigned to its worker pool. This is the mechanism by which the Cloud Dataflow SDK causes code to be loaded onto the workers. For example, the Cloud Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc.) required in order for that code to run.",
      "properties": {
        "location": {
          "type": "string",
          "description": "The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/"
        },
        "name": {
          "type": "string",
          "description": "The name of the package."
        }
      },
      "type": "object",
      "required": [
        "location",
        "name"
      ]
    },
    "google-native:dataflow/v1b3:ParameterMetadataEnumOptionResponse": {
      "description": "ParameterMetadataEnumOption specifies the option shown in the enum form.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The description to display for the enum option."
        },
        "label": {
          "type": "string",
          "description": "Optional. The label to display for the enum option."
        },
        "value": {
          "type": "string",
          "description": "The value of the enum option."
        }
      },
      "type": "object",
      "required": [
        "description",
        "label",
        "value"
      ]
    },
    "google-native:dataflow/v1b3:ParameterMetadataResponse": {
      "description": "Metadata for a specific parameter.",
      "properties": {
        "customMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Additional metadata for describing this parameter."
        },
        "defaultValue": {
          "type": "string",
          "description": "Optional. The default values will pre-populate the parameter with the given value from the proto. If default_value is left empty, the parameter will be populated with a default of the relevant type, e.g. false for a boolean."
        },
        "enumOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ParameterMetadataEnumOptionResponse"
          },
          "description": "Optional. The options shown when ENUM ParameterType is specified."
        },
        "groupName": {
          "type": "string",
          "description": "Optional. Specifies a group name for this parameter to be rendered under. Group header text will be rendered exactly as specified in this field. Only considered when parent_name is NOT provided."
        },
        "helpText": {
          "type": "string",
          "description": "The help text to display for the parameter."
        },
        "isOptional": {
          "type": "boolean",
          "description": "Optional. Whether the parameter is optional. Defaults to false."
        },
        "label": {
          "type": "string",
          "description": "The label to display for the parameter."
        },
        "name": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "paramType": {
          "type": "string",
          "description": "Optional. The type of the parameter. Used for selecting input picker."
        },
        "parentName": {
          "type": "string",
          "description": "Optional. Specifies the name of the parent parameter. Used in conjunction with 'parent_trigger_values' to make this parameter conditional (will only be rendered conditionally). Should be mappable to a ParameterMetadata.name field."
        },
        "parentTriggerValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The value(s) of the 'parent_name' parameter which will trigger this parameter to be shown. If left empty, ANY non-empty value in parent_name will trigger this parameter to be shown. Only considered when this parameter is conditional (when 'parent_name' has been provided)."
        },
        "regexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Regexes that the parameter must match."
        }
      },
      "type": "object",
      "required": [
        "customMetadata",
        "defaultValue",
        "enumOptions",
        "groupName",
        "helpText",
        "isOptional",
        "label",
        "name",
        "paramType",
        "parentName",
        "parentTriggerValues",
        "regexes"
      ]
    },
    "google-native:dataflow/v1b3:PipelineDescription": {
      "description": "A descriptive representation of submitted pipeline as well as the executed form. This data is provided by the Dataflow service for ease of visualizing the pipeline and interpreting Dataflow provided metrics.",
      "properties": {
        "displayData": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:DisplayData"
          },
          "description": "Pipeline level display data."
        },
        "executionPipelineStage": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ExecutionStageSummary"
          },
          "description": "Description of each stage of execution of the pipeline."
        },
        "originalPipelineTransform": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:TransformSummary"
          },
          "description": "Description of each transform in the pipeline and collections between them."
        },
        "stepNamesHash": {
          "type": "string",
          "description": "A hash value of the submitted pipeline portable graph step names if exists."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:PipelineDescriptionResponse": {
      "description": "A descriptive representation of submitted pipeline as well as the executed form. This data is provided by the Dataflow service for ease of visualizing the pipeline and interpreting Dataflow provided metrics.",
      "properties": {
        "displayData": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:DisplayDataResponse"
          },
          "description": "Pipeline level display data."
        },
        "executionPipelineStage": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ExecutionStageSummaryResponse"
          },
          "description": "Description of each stage of execution of the pipeline."
        },
        "originalPipelineTransform": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:TransformSummaryResponse"
          },
          "description": "Description of each transform in the pipeline and collections between them."
        },
        "stepNamesHash": {
          "type": "string",
          "description": "A hash value of the submitted pipeline portable graph step names if exists."
        }
      },
      "type": "object",
      "required": [
        "displayData",
        "executionPipelineStage",
        "originalPipelineTransform",
        "stepNamesHash"
      ]
    },
    "google-native:dataflow/v1b3:PubSubIODetails": {
      "description": "Metadata for a Pub/Sub connector used by the job.",
      "properties": {
        "subscription": {
          "type": "string",
          "description": "Subscription used in the connection."
        },
        "topic": {
          "type": "string",
          "description": "Topic accessed in the connection."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:PubSubIODetailsResponse": {
      "description": "Metadata for a Pub/Sub connector used by the job.",
      "properties": {
        "subscription": {
          "type": "string",
          "description": "Subscription used in the connection."
        },
        "topic": {
          "type": "string",
          "description": "Topic accessed in the connection."
        }
      },
      "type": "object",
      "required": [
        "subscription",
        "topic"
      ]
    },
    "google-native:dataflow/v1b3:RuntimeEnvironment": {
      "description": "The environment values to set at runtime.",
      "properties": {
        "additionalExperiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional experiment flags for the job, specified with the `--experiments` option."
        },
        "additionalUserLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Additional user labels to be specified for the job. Keys and values should follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) page. An object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1kg\", \"count\": \"3\" }."
        },
        "bypassTempDirValidation": {
          "type": "boolean",
          "description": "Optional. Whether to bypass the safety checks for the job's temporary directory. Use with caution."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Optional. The disk size, in gigabytes, to use on each remote Compute Engine worker instance."
        },
        "enableStreamingEngine": {
          "type": "boolean",
          "description": "Optional. Whether to enable Streaming Engine for the job."
        },
        "ipConfiguration": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:RuntimeEnvironmentIpConfiguration",
          "description": "Optional. Configuration for VM IPs."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. Name for the Cloud KMS key for the job. Key format is: projects//locations//keyRings//cryptoKeys/"
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The machine type to use for the job. Defaults to the value from the template if not specified."
        },
        "maxWorkers": {
          "type": "integer",
          "description": "Optional. The maximum number of Google Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000. The default value is 1."
        },
        "network": {
          "type": "string",
          "description": "Optional. Network to which VMs will be assigned. If empty or unspecified, the service will use the network \"default\"."
        },
        "numWorkers": {
          "type": "integer",
          "description": "Optional. The initial number of Google Compute Engine instances for the job. The default value is 11."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. The email address of the service account to run the job as."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form \"https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK\" or \"regions/REGION/subnetworks/SUBNETWORK\". If the subnetwork is located in a Shared VPC network, you must use the complete URL."
        },
        "tempLocation": {
          "type": "string",
          "description": "The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`."
        },
        "workerRegion": {
          "type": "string",
          "description": "The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane's region."
        },
        "workerZone": {
          "type": "string",
          "description": "Optional. The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane's region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence."
        }
      },
      "type": "object",
      "required": [
        "tempLocation",
        "workerRegion"
      ]
    },
    "google-native:dataflow/v1b3:RuntimeEnvironmentIpConfiguration": {
      "description": "Optional. Configuration for VM IPs.",
      "type": "string",
      "enum": [
        {
          "name": "WorkerIpUnspecified",
          "description": "The configuration is unknown, or unspecified.",
          "value": "WORKER_IP_UNSPECIFIED"
        },
        {
          "name": "WorkerIpPublic",
          "description": "Workers should have public IP addresses.",
          "value": "WORKER_IP_PUBLIC"
        },
        {
          "name": "WorkerIpPrivate",
          "description": "Workers should have private IP addresses.",
          "value": "WORKER_IP_PRIVATE"
        }
      ]
    },
    "google-native:dataflow/v1b3:RuntimeMetadataResponse": {
      "description": "RuntimeMetadata describing a runtime environment.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ParameterMetadataResponse"
          },
          "description": "The parameters for the template."
        },
        "sdkInfo": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:SDKInfoResponse",
          "description": "SDK Info for the template."
        }
      },
      "type": "object",
      "required": [
        "parameters",
        "sdkInfo"
      ]
    },
    "google-native:dataflow/v1b3:RuntimeUpdatableParams": {
      "description": "Additional job parameters that can only be updated during runtime using the projects.jobs.update method. These fields have no effect when specified during job creation.",
      "properties": {
        "maxNumWorkers": {
          "type": "integer",
          "description": "The maximum number of workers to cap autoscaling at. This field is currently only supported for Streaming Engine jobs."
        },
        "minNumWorkers": {
          "type": "integer",
          "description": "The minimum number of workers to scale down to. This field is currently only supported for Streaming Engine jobs."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:RuntimeUpdatableParamsResponse": {
      "description": "Additional job parameters that can only be updated during runtime using the projects.jobs.update method. These fields have no effect when specified during job creation.",
      "properties": {
        "maxNumWorkers": {
          "type": "integer",
          "description": "The maximum number of workers to cap autoscaling at. This field is currently only supported for Streaming Engine jobs."
        },
        "minNumWorkers": {
          "type": "integer",
          "description": "The minimum number of workers to scale down to. This field is currently only supported for Streaming Engine jobs."
        }
      },
      "type": "object",
      "required": [
        "maxNumWorkers",
        "minNumWorkers"
      ]
    },
    "google-native:dataflow/v1b3:SDKInfoResponse": {
      "description": "SDK Information.",
      "properties": {
        "language": {
          "type": "string",
          "description": "The SDK Language."
        },
        "version": {
          "type": "string",
          "description": "Optional. The SDK version."
        }
      },
      "type": "object",
      "required": [
        "language",
        "version"
      ]
    },
    "google-native:dataflow/v1b3:SdkBugResponse": {
      "description": "A bug found in the Dataflow SDK.",
      "properties": {
        "severity": {
          "type": "string",
          "description": "How severe the SDK bug is."
        },
        "type": {
          "type": "string",
          "description": "Describes the impact of this SDK bug."
        },
        "uri": {
          "type": "string",
          "description": "Link to more information on the bug."
        }
      },
      "type": "object",
      "required": [
        "severity",
        "type",
        "uri"
      ]
    },
    "google-native:dataflow/v1b3:SdkHarnessContainerImage": {
      "description": "Defines an SDK harness container for executing Dataflow pipelines.",
      "properties": {
        "capabilities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of capabilities enumerated in the above Environment proto. See also [beam_runner_api.proto](https://github.com/apache/beam/blob/master/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto)"
        },
        "containerImage": {
          "type": "string",
          "description": "A docker container image that resides in Google Container Registry."
        },
        "environmentId": {
          "type": "string",
          "description": "Environment ID for the Beam runner API proto Environment that corresponds to the current SDK Harness."
        },
        "useSingleCorePerContainer": {
          "type": "boolean",
          "description": "If true, recommends the Dataflow service to use only one core per SDK container instance with this image. If false (or unset) recommends using more than one core per SDK container instance with this image for efficiency. Note that Dataflow service may choose to override this property if needed."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:SdkHarnessContainerImageResponse": {
      "description": "Defines an SDK harness container for executing Dataflow pipelines.",
      "properties": {
        "capabilities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of capabilities enumerated in the above Environment proto. See also [beam_runner_api.proto](https://github.com/apache/beam/blob/master/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto)"
        },
        "containerImage": {
          "type": "string",
          "description": "A docker container image that resides in Google Container Registry."
        },
        "environmentId": {
          "type": "string",
          "description": "Environment ID for the Beam runner API proto Environment that corresponds to the current SDK Harness."
        },
        "useSingleCorePerContainer": {
          "type": "boolean",
          "description": "If true, recommends the Dataflow service to use only one core per SDK container instance with this image. If false (or unset) recommends using more than one core per SDK container instance with this image for efficiency. Note that Dataflow service may choose to override this property if needed."
        }
      },
      "type": "object",
      "required": [
        "capabilities",
        "containerImage",
        "environmentId",
        "useSingleCorePerContainer"
      ]
    },
    "google-native:dataflow/v1b3:SdkVersion": {
      "description": "The version of the SDK used to run the job.",
      "properties": {
        "sdkSupportStatus": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:SdkVersionSdkSupportStatus",
          "description": "The support status for this SDK version."
        },
        "version": {
          "type": "string",
          "description": "The version of the SDK used to run the job."
        },
        "versionDisplayName": {
          "type": "string",
          "description": "A readable string describing the version of the SDK."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:SdkVersionResponse": {
      "description": "The version of the SDK used to run the job.",
      "properties": {
        "bugs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:SdkBugResponse"
          },
          "description": "Known bugs found in this SDK version."
        },
        "sdkSupportStatus": {
          "type": "string",
          "description": "The support status for this SDK version."
        },
        "version": {
          "type": "string",
          "description": "The version of the SDK used to run the job."
        },
        "versionDisplayName": {
          "type": "string",
          "description": "A readable string describing the version of the SDK."
        }
      },
      "type": "object",
      "required": [
        "bugs",
        "sdkSupportStatus",
        "version",
        "versionDisplayName"
      ]
    },
    "google-native:dataflow/v1b3:SdkVersionSdkSupportStatus": {
      "description": "The support status for this SDK version.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "Cloud Dataflow is unaware of this version.",
          "value": "UNKNOWN"
        },
        {
          "name": "Supported",
          "description": "This is a known version of an SDK, and is supported.",
          "value": "SUPPORTED"
        },
        {
          "name": "Stale",
          "description": "A newer version of the SDK family exists, and an update is recommended.",
          "value": "STALE"
        },
        {
          "name": "Deprecated",
          "description": "This version of the SDK is deprecated and will eventually be unsupported.",
          "value": "DEPRECATED"
        },
        {
          "name": "Unsupported",
          "description": "Support for this SDK version has ended and it should no longer be used.",
          "value": "UNSUPPORTED"
        }
      ]
    },
    "google-native:dataflow/v1b3:SpannerIODetails": {
      "description": "Metadata for a Spanner connector used by the job.",
      "properties": {
        "databaseId": {
          "type": "string",
          "description": "DatabaseId accessed in the connection."
        },
        "instanceId": {
          "type": "string",
          "description": "InstanceId accessed in the connection."
        },
        "project": {
          "type": "string",
          "description": "ProjectId accessed in the connection."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:SpannerIODetailsResponse": {
      "description": "Metadata for a Spanner connector used by the job.",
      "properties": {
        "databaseId": {
          "type": "string",
          "description": "DatabaseId accessed in the connection."
        },
        "instanceId": {
          "type": "string",
          "description": "InstanceId accessed in the connection."
        },
        "project": {
          "type": "string",
          "description": "ProjectId accessed in the connection."
        }
      },
      "type": "object",
      "required": [
        "databaseId",
        "instanceId",
        "project"
      ]
    },
    "google-native:dataflow/v1b3:StageSource": {
      "description": "Description of an input or output of an execution stage.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Dataflow service generated name for this source."
        },
        "originalTransformOrCollection": {
          "type": "string",
          "description": "User name for the original user transform or collection with which this source is most closely associated."
        },
        "sizeBytes": {
          "type": "string",
          "description": "Size of the source, if measurable."
        },
        "userName": {
          "type": "string",
          "description": "Human-readable name for this source; may be user or system generated."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:StageSourceResponse": {
      "description": "Description of an input or output of an execution stage.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Dataflow service generated name for this source."
        },
        "originalTransformOrCollection": {
          "type": "string",
          "description": "User name for the original user transform or collection with which this source is most closely associated."
        },
        "sizeBytes": {
          "type": "string",
          "description": "Size of the source, if measurable."
        },
        "userName": {
          "type": "string",
          "description": "Human-readable name for this source; may be user or system generated."
        }
      },
      "type": "object",
      "required": [
        "name",
        "originalTransformOrCollection",
        "sizeBytes",
        "userName"
      ]
    },
    "google-native:dataflow/v1b3:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:dataflow/v1b3:Step": {
      "description": "Defines a particular step within a Cloud Dataflow job. A job consists of multiple steps, each of which performs some specific operation as part of the overall job. Data is typically passed from one step to another as part of the job. **Note:** The properties of this object are not stable and might change. Here's an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection's elements. * Validate the elements. * Apply a user-defined function to map each element to some value and extract an element-specific key value. * Group elements with the same key into a single element with that key, transforming a multiply-keyed collection into a uniquely-keyed collection. * Write the elements out to some data sink. Note that the Cloud Dataflow service may be used to run many different types of jobs, not just Map-Reduce.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The kind of step in the Cloud Dataflow job."
        },
        "name": {
          "type": "string",
          "description": "The name that identifies the step. This must be unique for each step with respect to all other steps in the Cloud Dataflow job."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Named properties associated with the step. Each kind of predefined step has its own required set of properties. Must be provided on Create. Only retrieved with JOB_VIEW_ALL."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:StepResponse": {
      "description": "Defines a particular step within a Cloud Dataflow job. A job consists of multiple steps, each of which performs some specific operation as part of the overall job. Data is typically passed from one step to another as part of the job. **Note:** The properties of this object are not stable and might change. Here's an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection's elements. * Validate the elements. * Apply a user-defined function to map each element to some value and extract an element-specific key value. * Group elements with the same key into a single element with that key, transforming a multiply-keyed collection into a uniquely-keyed collection. * Write the elements out to some data sink. Note that the Cloud Dataflow service may be used to run many different types of jobs, not just Map-Reduce.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The kind of step in the Cloud Dataflow job."
        },
        "name": {
          "type": "string",
          "description": "The name that identifies the step. This must be unique for each step with respect to all other steps in the Cloud Dataflow job."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Named properties associated with the step. Each kind of predefined step has its own required set of properties. Must be provided on Create. Only retrieved with JOB_VIEW_ALL."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "name",
        "properties"
      ]
    },
    "google-native:dataflow/v1b3:TaskRunnerSettings": {
      "description": "Taskrunner configuration settings.",
      "properties": {
        "alsologtostderr": {
          "type": "boolean",
          "description": "Whether to also send taskrunner log info to stderr."
        },
        "baseTaskDir": {
          "type": "string",
          "description": "The location on the worker for task-specific subdirectories."
        },
        "baseUrl": {
          "type": "string",
          "description": "The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, \"Relative Uniform Resource Locators\". If not specified, the default value is \"http://www.googleapis.com/\""
        },
        "commandlinesFileName": {
          "type": "string",
          "description": "The file to store preprocessing commands in."
        },
        "continueOnException": {
          "type": "boolean",
          "description": "Whether to continue taskrunner if an exception is hit."
        },
        "dataflowApiVersion": {
          "type": "string",
          "description": "The API version of endpoint, e.g. \"v1b3\""
        },
        "harnessCommand": {
          "type": "string",
          "description": "The command to launch the worker harness."
        },
        "languageHint": {
          "type": "string",
          "description": "The suggested backend language."
        },
        "logDir": {
          "type": "string",
          "description": "The directory on the VM to store logs."
        },
        "logToSerialconsole": {
          "type": "boolean",
          "description": "Whether to send taskrunner log info to Google Compute Engine VM serial console."
        },
        "logUploadLocation": {
          "type": "string",
          "description": "Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The OAuth2 scopes to be requested by the taskrunner in order to access the Cloud Dataflow API."
        },
        "parallelWorkerSettings": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:WorkerSettings",
          "description": "The settings to pass to the parallel worker harness."
        },
        "streamingWorkerMainClass": {
          "type": "string",
          "description": "The streaming worker main class name."
        },
        "taskGroup": {
          "type": "string",
          "description": "The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. \"wheel\"."
        },
        "taskUser": {
          "type": "string",
          "description": "The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. \"root\"."
        },
        "tempStoragePrefix": {
          "type": "string",
          "description": "The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "vmId": {
          "type": "string",
          "description": "The ID string of the VM."
        },
        "workflowFileName": {
          "type": "string",
          "description": "The file to store the workflow in."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:TaskRunnerSettingsResponse": {
      "description": "Taskrunner configuration settings.",
      "properties": {
        "alsologtostderr": {
          "type": "boolean",
          "description": "Whether to also send taskrunner log info to stderr."
        },
        "baseTaskDir": {
          "type": "string",
          "description": "The location on the worker for task-specific subdirectories."
        },
        "baseUrl": {
          "type": "string",
          "description": "The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, \"Relative Uniform Resource Locators\". If not specified, the default value is \"http://www.googleapis.com/\""
        },
        "commandlinesFileName": {
          "type": "string",
          "description": "The file to store preprocessing commands in."
        },
        "continueOnException": {
          "type": "boolean",
          "description": "Whether to continue taskrunner if an exception is hit."
        },
        "dataflowApiVersion": {
          "type": "string",
          "description": "The API version of endpoint, e.g. \"v1b3\""
        },
        "harnessCommand": {
          "type": "string",
          "description": "The command to launch the worker harness."
        },
        "languageHint": {
          "type": "string",
          "description": "The suggested backend language."
        },
        "logDir": {
          "type": "string",
          "description": "The directory on the VM to store logs."
        },
        "logToSerialconsole": {
          "type": "boolean",
          "description": "Whether to send taskrunner log info to Google Compute Engine VM serial console."
        },
        "logUploadLocation": {
          "type": "string",
          "description": "Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "oauthScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The OAuth2 scopes to be requested by the taskrunner in order to access the Cloud Dataflow API."
        },
        "parallelWorkerSettings": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:WorkerSettingsResponse",
          "description": "The settings to pass to the parallel worker harness."
        },
        "streamingWorkerMainClass": {
          "type": "string",
          "description": "The streaming worker main class name."
        },
        "taskGroup": {
          "type": "string",
          "description": "The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. \"wheel\"."
        },
        "taskUser": {
          "type": "string",
          "description": "The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. \"root\"."
        },
        "tempStoragePrefix": {
          "type": "string",
          "description": "The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "vmId": {
          "type": "string",
          "description": "The ID string of the VM."
        },
        "workflowFileName": {
          "type": "string",
          "description": "The file to store the workflow in."
        }
      },
      "type": "object",
      "required": [
        "alsologtostderr",
        "baseTaskDir",
        "baseUrl",
        "commandlinesFileName",
        "continueOnException",
        "dataflowApiVersion",
        "harnessCommand",
        "languageHint",
        "logDir",
        "logToSerialconsole",
        "logUploadLocation",
        "oauthScopes",
        "parallelWorkerSettings",
        "streamingWorkerMainClass",
        "taskGroup",
        "taskUser",
        "tempStoragePrefix",
        "vmId",
        "workflowFileName"
      ]
    },
    "google-native:dataflow/v1b3:TemplateMetadataResponse": {
      "description": "Metadata describing a template.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. A description of the template."
        },
        "name": {
          "type": "string",
          "description": "The name of the template."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ParameterMetadataResponse"
          },
          "description": "The parameters for the template."
        }
      },
      "type": "object",
      "required": [
        "description",
        "name",
        "parameters"
      ]
    },
    "google-native:dataflow/v1b3:TransformSummary": {
      "description": "Description of the type, names/ids, and input/outputs for a transform.",
      "properties": {
        "displayData": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:DisplayData"
          },
          "description": "Transform-specific display data."
        },
        "id": {
          "type": "string",
          "description": "SDK generated id of this transform instance."
        },
        "inputCollectionName": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User names for all collection inputs to this transform."
        },
        "kind": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:TransformSummaryKind",
          "description": "Type of transform."
        },
        "name": {
          "type": "string",
          "description": "User provided name for this transform instance."
        },
        "outputCollectionName": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User names for all collection outputs to this transform."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:TransformSummaryKind": {
      "description": "Type of transform.",
      "type": "string",
      "enum": [
        {
          "name": "UnknownKind",
          "description": "Unrecognized transform type.",
          "value": "UNKNOWN_KIND"
        },
        {
          "name": "ParDoKind",
          "description": "ParDo transform.",
          "value": "PAR_DO_KIND"
        },
        {
          "name": "GroupByKeyKind",
          "description": "Group By Key transform.",
          "value": "GROUP_BY_KEY_KIND"
        },
        {
          "name": "FlattenKind",
          "description": "Flatten transform.",
          "value": "FLATTEN_KIND"
        },
        {
          "name": "ReadKind",
          "description": "Read transform.",
          "value": "READ_KIND"
        },
        {
          "name": "WriteKind",
          "description": "Write transform.",
          "value": "WRITE_KIND"
        },
        {
          "name": "ConstantKind",
          "description": "Constructs from a constant value, such as with Create.of.",
          "value": "CONSTANT_KIND"
        },
        {
          "name": "SingletonKind",
          "description": "Creates a Singleton view of a collection.",
          "value": "SINGLETON_KIND"
        },
        {
          "name": "ShuffleKind",
          "description": "Opening or closing a shuffle session, often as part of a GroupByKey.",
          "value": "SHUFFLE_KIND"
        }
      ]
    },
    "google-native:dataflow/v1b3:TransformSummaryResponse": {
      "description": "Description of the type, names/ids, and input/outputs for a transform.",
      "properties": {
        "displayData": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:DisplayDataResponse"
          },
          "description": "Transform-specific display data."
        },
        "inputCollectionName": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User names for all collection inputs to this transform."
        },
        "kind": {
          "type": "string",
          "description": "Type of transform."
        },
        "name": {
          "type": "string",
          "description": "User provided name for this transform instance."
        },
        "outputCollectionName": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User names for all collection outputs to this transform."
        }
      },
      "type": "object",
      "required": [
        "displayData",
        "inputCollectionName",
        "kind",
        "name",
        "outputCollectionName"
      ]
    },
    "google-native:dataflow/v1b3:WorkerPool": {
      "description": "Describes one particular pool of Cloud Dataflow workers to be instantiated by the Cloud Dataflow service in order to perform the computations required by a job. Note that a workflow job may use multiple pools, in order to match the various computational requirements of the various stages of the job.",
      "properties": {
        "autoscalingSettings": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:AutoscalingSettings",
          "description": "Settings for autoscaling of this WorkerPool."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:Disk"
          },
          "description": "Data disks that are used by a VM in this workflow."
        },
        "defaultPackageSet": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:WorkerPoolDefaultPackageSet",
          "description": "The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default."
        },
        "diskSourceImage": {
          "type": "string",
          "description": "Fully qualified source image for disks."
        },
        "diskType": {
          "type": "string",
          "description": "Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default."
        },
        "ipConfiguration": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:WorkerPoolIpConfiguration",
          "description": "Configuration for VM IPs."
        },
        "kind": {
          "type": "string",
          "description": "The kind of the worker pool; currently only `harness` and `shuffle` are supported."
        },
        "machineType": {
          "type": "string",
          "description": "Machine type (e.g. \"n1-standard-1\"). If empty or unspecified, the service will attempt to choose a reasonable default."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata to set on the Google Compute Engine VMs."
        },
        "network": {
          "type": "string",
          "description": "Network to which VMs will be assigned. If empty or unspecified, the service will use the network \"default\"."
        },
        "numThreadsPerWorker": {
          "type": "integer",
          "description": "The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming)."
        },
        "numWorkers": {
          "type": "integer",
          "description": "Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default."
        },
        "onHostMaintenance": {
          "type": "string",
          "description": "The action to take on host maintenance, as defined by the Google Compute Engine API."
        },
        "packages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:Package"
          },
          "description": "Packages to be installed on workers."
        },
        "poolArgs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Extra arguments for this worker pool."
        },
        "sdkHarnessContainerImages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:SdkHarnessContainerImage"
          },
          "description": "Set of SDK harness containers needed to execute this pipeline. This will only be set in the Fn API path. For non-cross-language pipelines this should have only one entry. Cross-language pipelines will have two or more entries."
        },
        "subnetwork": {
          "type": "string",
          "description": "Subnetwork to which VMs will be assigned, if desired. Expected to be of the form \"regions/REGION/subnetworks/SUBNETWORK\"."
        },
        "taskrunnerSettings": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:TaskRunnerSettings",
          "description": "Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field."
        },
        "teardownPolicy": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:WorkerPoolTeardownPolicy",
          "description": "Sets the policy for determining when to turndown worker pool. Allowed values are: `TEARDOWN_ALWAYS`, `TEARDOWN_ON_SUCCESS`, and `TEARDOWN_NEVER`. `TEARDOWN_ALWAYS` means workers are always torn down regardless of whether the job succeeds. `TEARDOWN_ON_SUCCESS` means workers are torn down if the job succeeds. `TEARDOWN_NEVER` means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the `TEARDOWN_ALWAYS` policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default."
        },
        "workerHarnessContainerImage": {
          "type": "string",
          "description": "Docker container image that executes the Cloud Dataflow worker harness, residing in Google Container Registry. Deprecated for the Fn API path. Use sdk_harness_container_images instead.",
          "deprecationMessage": "Required. Docker container image that executes the Cloud Dataflow worker harness, residing in Google Container Registry. Deprecated for the Fn API path. Use sdk_harness_container_images instead."
        },
        "zone": {
          "type": "string",
          "description": "Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default."
        }
      },
      "type": "object",
      "required": [
        "workerHarnessContainerImage"
      ]
    },
    "google-native:dataflow/v1b3:WorkerPoolDefaultPackageSet": {
      "description": "The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language.",
      "type": "string",
      "enum": [
        {
          "name": "DefaultPackageSetUnknown",
          "description": "The default set of packages to stage is unknown, or unspecified.",
          "value": "DEFAULT_PACKAGE_SET_UNKNOWN"
        },
        {
          "name": "DefaultPackageSetNone",
          "description": "Indicates that no packages should be staged at the worker unless explicitly specified by the job.",
          "value": "DEFAULT_PACKAGE_SET_NONE"
        },
        {
          "name": "DefaultPackageSetJava",
          "description": "Stage packages typically useful to workers written in Java.",
          "value": "DEFAULT_PACKAGE_SET_JAVA"
        },
        {
          "name": "DefaultPackageSetPython",
          "description": "Stage packages typically useful to workers written in Python.",
          "value": "DEFAULT_PACKAGE_SET_PYTHON"
        }
      ]
    },
    "google-native:dataflow/v1b3:WorkerPoolIpConfiguration": {
      "description": "Configuration for VM IPs.",
      "type": "string",
      "enum": [
        {
          "name": "WorkerIpUnspecified",
          "description": "The configuration is unknown, or unspecified.",
          "value": "WORKER_IP_UNSPECIFIED"
        },
        {
          "name": "WorkerIpPublic",
          "description": "Workers should have public IP addresses.",
          "value": "WORKER_IP_PUBLIC"
        },
        {
          "name": "WorkerIpPrivate",
          "description": "Workers should have private IP addresses.",
          "value": "WORKER_IP_PRIVATE"
        }
      ]
    },
    "google-native:dataflow/v1b3:WorkerPoolResponse": {
      "description": "Describes one particular pool of Cloud Dataflow workers to be instantiated by the Cloud Dataflow service in order to perform the computations required by a job. Note that a workflow job may use multiple pools, in order to match the various computational requirements of the various stages of the job.",
      "properties": {
        "autoscalingSettings": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:AutoscalingSettingsResponse",
          "description": "Settings for autoscaling of this WorkerPool."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:DiskResponse"
          },
          "description": "Data disks that are used by a VM in this workflow."
        },
        "defaultPackageSet": {
          "type": "string",
          "description": "The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language."
        },
        "diskSizeGb": {
          "type": "integer",
          "description": "Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default."
        },
        "diskSourceImage": {
          "type": "string",
          "description": "Fully qualified source image for disks."
        },
        "diskType": {
          "type": "string",
          "description": "Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default."
        },
        "ipConfiguration": {
          "type": "string",
          "description": "Configuration for VM IPs."
        },
        "kind": {
          "type": "string",
          "description": "The kind of the worker pool; currently only `harness` and `shuffle` are supported."
        },
        "machineType": {
          "type": "string",
          "description": "Machine type (e.g. \"n1-standard-1\"). If empty or unspecified, the service will attempt to choose a reasonable default."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata to set on the Google Compute Engine VMs."
        },
        "network": {
          "type": "string",
          "description": "Network to which VMs will be assigned. If empty or unspecified, the service will use the network \"default\"."
        },
        "numThreadsPerWorker": {
          "type": "integer",
          "description": "The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming)."
        },
        "numWorkers": {
          "type": "integer",
          "description": "Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default."
        },
        "onHostMaintenance": {
          "type": "string",
          "description": "The action to take on host maintenance, as defined by the Google Compute Engine API."
        },
        "packages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:PackageResponse"
          },
          "description": "Packages to be installed on workers."
        },
        "poolArgs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Extra arguments for this worker pool."
        },
        "sdkHarnessContainerImages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:SdkHarnessContainerImageResponse"
          },
          "description": "Set of SDK harness containers needed to execute this pipeline. This will only be set in the Fn API path. For non-cross-language pipelines this should have only one entry. Cross-language pipelines will have two or more entries."
        },
        "subnetwork": {
          "type": "string",
          "description": "Subnetwork to which VMs will be assigned, if desired. Expected to be of the form \"regions/REGION/subnetworks/SUBNETWORK\"."
        },
        "taskrunnerSettings": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:TaskRunnerSettingsResponse",
          "description": "Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field."
        },
        "teardownPolicy": {
          "type": "string",
          "description": "Sets the policy for determining when to turndown worker pool. Allowed values are: `TEARDOWN_ALWAYS`, `TEARDOWN_ON_SUCCESS`, and `TEARDOWN_NEVER`. `TEARDOWN_ALWAYS` means workers are always torn down regardless of whether the job succeeds. `TEARDOWN_ON_SUCCESS` means workers are torn down if the job succeeds. `TEARDOWN_NEVER` means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the `TEARDOWN_ALWAYS` policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default."
        },
        "workerHarnessContainerImage": {
          "type": "string",
          "description": "Docker container image that executes the Cloud Dataflow worker harness, residing in Google Container Registry. Deprecated for the Fn API path. Use sdk_harness_container_images instead.",
          "deprecationMessage": "Required. Docker container image that executes the Cloud Dataflow worker harness, residing in Google Container Registry. Deprecated for the Fn API path. Use sdk_harness_container_images instead."
        },
        "zone": {
          "type": "string",
          "description": "Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default."
        }
      },
      "type": "object",
      "required": [
        "autoscalingSettings",
        "dataDisks",
        "defaultPackageSet",
        "diskSizeGb",
        "diskSourceImage",
        "diskType",
        "ipConfiguration",
        "kind",
        "machineType",
        "metadata",
        "network",
        "numThreadsPerWorker",
        "numWorkers",
        "onHostMaintenance",
        "packages",
        "poolArgs",
        "sdkHarnessContainerImages",
        "subnetwork",
        "taskrunnerSettings",
        "teardownPolicy",
        "workerHarnessContainerImage",
        "zone"
      ]
    },
    "google-native:dataflow/v1b3:WorkerPoolTeardownPolicy": {
      "description": "Sets the policy for determining when to turndown worker pool. Allowed values are: `TEARDOWN_ALWAYS`, `TEARDOWN_ON_SUCCESS`, and `TEARDOWN_NEVER`. `TEARDOWN_ALWAYS` means workers are always torn down regardless of whether the job succeeds. `TEARDOWN_ON_SUCCESS` means workers are torn down if the job succeeds. `TEARDOWN_NEVER` means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the `TEARDOWN_ALWAYS` policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default.",
      "type": "string",
      "enum": [
        {
          "name": "TeardownPolicyUnknown",
          "description": "The teardown policy isn't specified, or is unknown.",
          "value": "TEARDOWN_POLICY_UNKNOWN"
        },
        {
          "name": "TeardownAlways",
          "description": "Always teardown the resource.",
          "value": "TEARDOWN_ALWAYS"
        },
        {
          "name": "TeardownOnSuccess",
          "description": "Teardown the resource on success. This is useful for debugging failures.",
          "value": "TEARDOWN_ON_SUCCESS"
        },
        {
          "name": "TeardownNever",
          "description": "Never teardown the resource. This is useful for debugging and development.",
          "value": "TEARDOWN_NEVER"
        }
      ]
    },
    "google-native:dataflow/v1b3:WorkerSettings": {
      "description": "Provides data to pass through to the worker harness.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, \"Relative Uniform Resource Locators\". If not specified, the default value is \"http://www.googleapis.com/\""
        },
        "reportingEnabled": {
          "type": "boolean",
          "description": "Whether to send work progress updates to the service."
        },
        "servicePath": {
          "type": "string",
          "description": "The Cloud Dataflow service path relative to the root URL, for example, \"dataflow/v1b3/projects\"."
        },
        "shuffleServicePath": {
          "type": "string",
          "description": "The Shuffle service path relative to the root URL, for example, \"shuffle/v1beta1\"."
        },
        "tempStoragePrefix": {
          "type": "string",
          "description": "The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "workerId": {
          "type": "string",
          "description": "The ID of the worker running this pipeline."
        }
      },
      "type": "object"
    },
    "google-native:dataflow/v1b3:WorkerSettingsResponse": {
      "description": "Provides data to pass through to the worker harness.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, \"Relative Uniform Resource Locators\". If not specified, the default value is \"http://www.googleapis.com/\""
        },
        "reportingEnabled": {
          "type": "boolean",
          "description": "Whether to send work progress updates to the service."
        },
        "servicePath": {
          "type": "string",
          "description": "The Cloud Dataflow service path relative to the root URL, for example, \"dataflow/v1b3/projects\"."
        },
        "shuffleServicePath": {
          "type": "string",
          "description": "The Shuffle service path relative to the root URL, for example, \"shuffle/v1beta1\"."
        },
        "tempStoragePrefix": {
          "type": "string",
          "description": "The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "workerId": {
          "type": "string",
          "description": "The ID of the worker running this pipeline."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "reportingEnabled",
        "servicePath",
        "shuffleServicePath",
        "tempStoragePrefix",
        "workerId"
      ]
    },
    "google-native:dataform/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:dataform/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:dataform/v1beta1:CodeCompilationConfig": {
      "description": "Configures various aspects of Dataform code compilation.",
      "properties": {
        "assertionSchema": {
          "type": "string",
          "description": "Optional. The default schema (BigQuery dataset ID) for assertions."
        },
        "databaseSuffix": {
          "type": "string",
          "description": "Optional. The suffix that should be appended to all database (Google Cloud project ID) names."
        },
        "defaultDatabase": {
          "type": "string",
          "description": "Optional. The default database (Google Cloud project ID)."
        },
        "defaultLocation": {
          "type": "string",
          "description": "Optional. The default BigQuery location to use. Defaults to \"US\". See the BigQuery docs for a full list of locations: https://cloud.google.com/bigquery/docs/locations."
        },
        "defaultSchema": {
          "type": "string",
          "description": "Optional. The default schema (BigQuery dataset ID)."
        },
        "schemaSuffix": {
          "type": "string",
          "description": "Optional. The suffix that should be appended to all schema (BigQuery dataset ID) names."
        },
        "tablePrefix": {
          "type": "string",
          "description": "Optional. The prefix that should be prepended to all table names."
        },
        "vars": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined variables that are made available to project code during compilation."
        }
      },
      "type": "object"
    },
    "google-native:dataform/v1beta1:CodeCompilationConfigResponse": {
      "description": "Configures various aspects of Dataform code compilation.",
      "properties": {
        "assertionSchema": {
          "type": "string",
          "description": "Optional. The default schema (BigQuery dataset ID) for assertions."
        },
        "databaseSuffix": {
          "type": "string",
          "description": "Optional. The suffix that should be appended to all database (Google Cloud project ID) names."
        },
        "defaultDatabase": {
          "type": "string",
          "description": "Optional. The default database (Google Cloud project ID)."
        },
        "defaultLocation": {
          "type": "string",
          "description": "Optional. The default BigQuery location to use. Defaults to \"US\". See the BigQuery docs for a full list of locations: https://cloud.google.com/bigquery/docs/locations."
        },
        "defaultSchema": {
          "type": "string",
          "description": "Optional. The default schema (BigQuery dataset ID)."
        },
        "schemaSuffix": {
          "type": "string",
          "description": "Optional. The suffix that should be appended to all schema (BigQuery dataset ID) names."
        },
        "tablePrefix": {
          "type": "string",
          "description": "Optional. The prefix that should be prepended to all table names."
        },
        "vars": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined variables that are made available to project code during compilation."
        }
      },
      "type": "object",
      "required": [
        "assertionSchema",
        "databaseSuffix",
        "defaultDatabase",
        "defaultLocation",
        "defaultSchema",
        "schemaSuffix",
        "tablePrefix",
        "vars"
      ]
    },
    "google-native:dataform/v1beta1:CompilationErrorResponse": {
      "description": "An error encountered when attempting to compile a Dataform project.",
      "properties": {
        "actionTarget": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:TargetResponse",
          "description": "The identifier of the action where this error occurred, if available."
        },
        "message": {
          "type": "string",
          "description": "The error's top level message."
        },
        "path": {
          "type": "string",
          "description": "The path of the file where this error occurred, if available, relative to the project root."
        },
        "stack": {
          "type": "string",
          "description": "The error's full stack trace."
        }
      },
      "type": "object",
      "required": [
        "actionTarget",
        "message",
        "path",
        "stack"
      ]
    },
    "google-native:dataform/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:dataform/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:dataform/v1beta1:GitRemoteSettings": {
      "description": "Controls Git remote configuration for a repository.",
      "properties": {
        "authenticationTokenSecretVersion": {
          "type": "string",
          "description": "Optional. The name of the Secret Manager secret version to use as an authentication token for Git operations. Must be in the format `projects/*/secrets/*/versions/*`."
        },
        "defaultBranch": {
          "type": "string",
          "description": "The Git remote's default branch name."
        },
        "sshAuthenticationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:SshAuthenticationConfig",
          "description": "Optional. Authentication fields for remote uris using SSH protocol."
        },
        "url": {
          "type": "string",
          "description": "The Git remote's URL."
        }
      },
      "type": "object",
      "required": [
        "defaultBranch",
        "url"
      ]
    },
    "google-native:dataform/v1beta1:GitRemoteSettingsResponse": {
      "description": "Controls Git remote configuration for a repository.",
      "properties": {
        "authenticationTokenSecretVersion": {
          "type": "string",
          "description": "Optional. The name of the Secret Manager secret version to use as an authentication token for Git operations. Must be in the format `projects/*/secrets/*/versions/*`."
        },
        "defaultBranch": {
          "type": "string",
          "description": "The Git remote's default branch name."
        },
        "sshAuthenticationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:SshAuthenticationConfigResponse",
          "description": "Optional. Authentication fields for remote uris using SSH protocol."
        },
        "tokenStatus": {
          "type": "string",
          "description": "Deprecated: The field does not contain any token status information. Instead use https://cloud.google.com/dataform/reference/rest/v1beta1/projects.locations.repositories/computeAccessTokenStatus",
          "deprecationMessage": "Output only. Deprecated: The field does not contain any token status information. Instead use https://cloud.google.com/dataform/reference/rest/v1beta1/projects.locations.repositories/computeAccessTokenStatus"
        },
        "url": {
          "type": "string",
          "description": "The Git remote's URL."
        }
      },
      "type": "object",
      "required": [
        "authenticationTokenSecretVersion",
        "defaultBranch",
        "sshAuthenticationConfig",
        "tokenStatus",
        "url"
      ]
    },
    "google-native:dataform/v1beta1:IntervalResponse": {
      "description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "startTime"
      ]
    },
    "google-native:dataform/v1beta1:InvocationConfig": {
      "description": "Includes various configuration options for a workflow invocation. If both `included_targets` and `included_tags` are unset, all actions will be included.",
      "properties": {
        "fullyRefreshIncrementalTablesEnabled": {
          "type": "boolean",
          "description": "Optional. When set to true, any incremental tables will be fully refreshed."
        },
        "includedTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of tags to include."
        },
        "includedTargets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:Target"
          },
          "description": "Optional. The set of action identifiers to include."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The service account to run workflow invocations under."
        },
        "transitiveDependenciesIncluded": {
          "type": "boolean",
          "description": "Optional. When set to true, transitive dependencies of included actions will be executed."
        },
        "transitiveDependentsIncluded": {
          "type": "boolean",
          "description": "Optional. When set to true, transitive dependents of included actions will be executed."
        }
      },
      "type": "object"
    },
    "google-native:dataform/v1beta1:InvocationConfigResponse": {
      "description": "Includes various configuration options for a workflow invocation. If both `included_targets` and `included_tags` are unset, all actions will be included.",
      "properties": {
        "fullyRefreshIncrementalTablesEnabled": {
          "type": "boolean",
          "description": "Optional. When set to true, any incremental tables will be fully refreshed."
        },
        "includedTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of tags to include."
        },
        "includedTargets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:TargetResponse"
          },
          "description": "Optional. The set of action identifiers to include."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The service account to run workflow invocations under."
        },
        "transitiveDependenciesIncluded": {
          "type": "boolean",
          "description": "Optional. When set to true, transitive dependencies of included actions will be executed."
        },
        "transitiveDependentsIncluded": {
          "type": "boolean",
          "description": "Optional. When set to true, transitive dependents of included actions will be executed."
        }
      },
      "type": "object",
      "required": [
        "fullyRefreshIncrementalTablesEnabled",
        "includedTags",
        "includedTargets",
        "serviceAccount",
        "transitiveDependenciesIncluded",
        "transitiveDependentsIncluded"
      ]
    },
    "google-native:dataform/v1beta1:ScheduledExecutionRecordResponse": {
      "description": "A record of an attempt to create a workflow invocation for this workflow config.",
      "properties": {
        "errorStatus": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:StatusResponse",
          "description": "The error status encountered upon this attempt to create the workflow invocation, if the attempt was unsuccessful."
        },
        "executionTime": {
          "type": "string",
          "description": "The timestamp of this execution attempt."
        },
        "workflowInvocation": {
          "type": "string",
          "description": "The name of the created workflow invocation, if one was successfully created. Must be in the format `projects/*/locations/*/repositories/*/workflowInvocations/*`."
        }
      },
      "type": "object",
      "required": [
        "errorStatus",
        "executionTime",
        "workflowInvocation"
      ]
    },
    "google-native:dataform/v1beta1:ScheduledReleaseRecordResponse": {
      "description": "A record of an attempt to create a compilation result for this release config.",
      "properties": {
        "compilationResult": {
          "type": "string",
          "description": "The name of the created compilation result, if one was successfully created. Must be in the format `projects/*/locations/*/repositories/*/compilationResults/*`."
        },
        "errorStatus": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:StatusResponse",
          "description": "The error status encountered upon this attempt to create the compilation result, if the attempt was unsuccessful."
        },
        "releaseTime": {
          "type": "string",
          "description": "The timestamp of this release attempt."
        }
      },
      "type": "object",
      "required": [
        "compilationResult",
        "errorStatus",
        "releaseTime"
      ]
    },
    "google-native:dataform/v1beta1:SshAuthenticationConfig": {
      "description": "Configures fields for performing SSH authentication.",
      "properties": {
        "hostPublicKey": {
          "type": "string",
          "description": "Content of a public SSH key to verify an identity of a remote Git host."
        },
        "userPrivateKeySecretVersion": {
          "type": "string",
          "description": "The name of the Secret Manager secret version to use as a ssh private key for Git operations. Must be in the format `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object",
      "required": [
        "hostPublicKey",
        "userPrivateKeySecretVersion"
      ]
    },
    "google-native:dataform/v1beta1:SshAuthenticationConfigResponse": {
      "description": "Configures fields for performing SSH authentication.",
      "properties": {
        "hostPublicKey": {
          "type": "string",
          "description": "Content of a public SSH key to verify an identity of a remote Git host."
        },
        "userPrivateKeySecretVersion": {
          "type": "string",
          "description": "The name of the Secret Manager secret version to use as a ssh private key for Git operations. Must be in the format `projects/*/secrets/*/versions/*`."
        }
      },
      "type": "object",
      "required": [
        "hostPublicKey",
        "userPrivateKeySecretVersion"
      ]
    },
    "google-native:dataform/v1beta1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:dataform/v1beta1:Target": {
      "description": "Represents an action identifier. If the action writes output, the output will be written to the referenced database object.",
      "properties": {
        "database": {
          "type": "string",
          "description": "The action's database (Google Cloud project ID) ."
        },
        "name": {
          "type": "string",
          "description": "The action's name, within `database` and `schema`."
        },
        "schema": {
          "type": "string",
          "description": "The action's schema (BigQuery dataset ID), within `database`."
        }
      },
      "type": "object"
    },
    "google-native:dataform/v1beta1:TargetResponse": {
      "description": "Represents an action identifier. If the action writes output, the output will be written to the referenced database object.",
      "properties": {
        "database": {
          "type": "string",
          "description": "The action's database (Google Cloud project ID) ."
        },
        "name": {
          "type": "string",
          "description": "The action's name, within `database` and `schema`."
        },
        "schema": {
          "type": "string",
          "description": "The action's schema (BigQuery dataset ID), within `database`."
        }
      },
      "type": "object",
      "required": [
        "database",
        "name",
        "schema"
      ]
    },
    "google-native:dataform/v1beta1:WorkspaceCompilationOverrides": {
      "description": "Configures workspace compilation overrides for a repository. Primarily used by the UI (`console.cloud.google.com`). `schema_suffix` and `table_prefix` can have a special expression - `${workspaceName}`, which refers to the workspace name from which the compilation results will be created. API callers are expected to resolve the expression in these overrides and provide them explicitly in `code_compilation_config` (https://cloud.google.com/dataform/reference/rest/v1beta1/projects.locations.repositories.compilationResults#codecompilationconfig) when creating workspace-scoped compilation results.",
      "properties": {
        "defaultDatabase": {
          "type": "string",
          "description": "Optional. The default database (Google Cloud project ID)."
        },
        "schemaSuffix": {
          "type": "string",
          "description": "Optional. The suffix that should be appended to all schema (BigQuery dataset ID) names."
        },
        "tablePrefix": {
          "type": "string",
          "description": "Optional. The prefix that should be prepended to all table names."
        }
      },
      "type": "object"
    },
    "google-native:dataform/v1beta1:WorkspaceCompilationOverridesResponse": {
      "description": "Configures workspace compilation overrides for a repository. Primarily used by the UI (`console.cloud.google.com`). `schema_suffix` and `table_prefix` can have a special expression - `${workspaceName}`, which refers to the workspace name from which the compilation results will be created. API callers are expected to resolve the expression in these overrides and provide them explicitly in `code_compilation_config` (https://cloud.google.com/dataform/reference/rest/v1beta1/projects.locations.repositories.compilationResults#codecompilationconfig) when creating workspace-scoped compilation results.",
      "properties": {
        "defaultDatabase": {
          "type": "string",
          "description": "Optional. The default database (Google Cloud project ID)."
        },
        "schemaSuffix": {
          "type": "string",
          "description": "Optional. The suffix that should be appended to all schema (BigQuery dataset ID) names."
        },
        "tablePrefix": {
          "type": "string",
          "description": "Optional. The prefix that should be prepended to all table names."
        }
      },
      "type": "object",
      "required": [
        "defaultDatabase",
        "schemaSuffix",
        "tablePrefix"
      ]
    },
    "google-native:datafusion/v1:AcceleratorResponse": {
      "description": "Identifies Data Fusion accelerators for an instance.",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "The type of an accelator for a CDF instance."
        },
        "state": {
          "type": "string",
          "description": "The state of the accelerator."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "state"
      ]
    },
    "google-native:datafusion/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:datafusion/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:datafusion%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:datafusion/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:datafusion/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datafusion%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datafusion%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:datafusion/v1:CryptoKeyConfig": {
      "description": "The crypto key configuration. This field is used by the Customer-managed encryption keys (CMEK) feature.",
      "properties": {
        "keyReference": {
          "type": "string",
          "description": "The name of the key which is used to encrypt/decrypt customer data. For key in Cloud KMS, the key should be in the format of `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1:CryptoKeyConfigResponse": {
      "description": "The crypto key configuration. This field is used by the Customer-managed encryption keys (CMEK) feature.",
      "properties": {
        "keyReference": {
          "type": "string",
          "description": "The name of the key which is used to encrypt/decrypt customer data. For key in Cloud KMS, the key should be in the format of `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        }
      },
      "type": "object",
      "required": [
        "keyReference"
      ]
    },
    "google-native:datafusion/v1:EventPublishConfig": {
      "description": "Confirguration of PubSubEventWriter.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Option to enable Event Publishing."
        },
        "topic": {
          "type": "string",
          "description": "The resource name of the Pub/Sub topic. Format: projects/{project_id}/topics/{topic_id}"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "topic"
      ]
    },
    "google-native:datafusion/v1:EventPublishConfigResponse": {
      "description": "Confirguration of PubSubEventWriter.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Option to enable Event Publishing."
        },
        "topic": {
          "type": "string",
          "description": "The resource name of the Pub/Sub topic. Format: projects/{project_id}/topics/{topic_id}"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "topic"
      ]
    },
    "google-native:datafusion/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:datafusion/v1:InstanceType": {
      "description": "Required. Instance type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "No type specified. The instance creation will fail.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Basic",
          "description": "Basic Data Fusion instance. In Basic type, the user will be able to create data pipelines using point and click UI. However, there are certain limitations, such as fewer number of concurrent pipelines, no support for streaming pipelines, etc.",
          "value": "BASIC"
        },
        {
          "name": "Enterprise",
          "description": "Enterprise Data Fusion instance. In Enterprise type, the user will have all features available, such as support for streaming pipelines, higher number of concurrent pipelines, etc.",
          "value": "ENTERPRISE"
        },
        {
          "name": "Developer",
          "description": "Developer Data Fusion instance. In Developer type, the user will have all features available but with restrictive capabilities. This is to help enterprises design and develop their data ingestion and integration pipelines at low cost.",
          "value": "DEVELOPER"
        }
      ]
    },
    "google-native:datafusion/v1:NetworkConfig": {
      "description": "Network configuration for a Data Fusion instance. These configurations are used for peering with the customer network. Configurations are optional when a public Data Fusion instance is to be created. However, providing these configurations allows several benefits, such as reduced network latency while accessing the customer resources from managed Data Fusion instance nodes, as well as access to the customer on-prem resources.",
      "properties": {
        "ipAllocation": {
          "type": "string",
          "description": "The IP range in CIDR notation to use for the managed Data Fusion instance nodes. This range must not overlap with any other ranges used in the customer network."
        },
        "network": {
          "type": "string",
          "description": "Name of the network in the customer project with which the Tenant Project will be peered for executing pipelines. In case of shared VPC where the network resides in another host project the network should specified in the form of projects/{host-project-id}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1:NetworkConfigResponse": {
      "description": "Network configuration for a Data Fusion instance. These configurations are used for peering with the customer network. Configurations are optional when a public Data Fusion instance is to be created. However, providing these configurations allows several benefits, such as reduced network latency while accessing the customer resources from managed Data Fusion instance nodes, as well as access to the customer on-prem resources.",
      "properties": {
        "ipAllocation": {
          "type": "string",
          "description": "The IP range in CIDR notation to use for the managed Data Fusion instance nodes. This range must not overlap with any other ranges used in the customer network."
        },
        "network": {
          "type": "string",
          "description": "Name of the network in the customer project with which the Tenant Project will be peered for executing pipelines. In case of shared VPC where the network resides in another host project the network should specified in the form of projects/{host-project-id}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "ipAllocation",
        "network"
      ]
    },
    "google-native:datafusion/v1:VersionResponse": {
      "description": "The Data Fusion version. This proto message stores information about certain Data Fusion version, which is used for Data Fusion version upgrade.",
      "properties": {
        "availableFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Represents a list of available feature names for a given version."
        },
        "defaultVersion": {
          "type": "boolean",
          "description": "Whether this is currently the default version for Cloud Data Fusion"
        },
        "type": {
          "type": "string",
          "description": "Type represents the release availability of the version"
        },
        "versionNumber": {
          "type": "string",
          "description": "The version number of the Data Fusion instance, such as '6.0.1.0'."
        }
      },
      "type": "object",
      "required": [
        "availableFeatures",
        "defaultVersion",
        "type",
        "versionNumber"
      ]
    },
    "google-native:datafusion/v1beta1:AcceleratorResponse": {
      "description": "Identifies Data Fusion accelerators for an instance.",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "The type of an accelator for a CDF instance."
        },
        "state": {
          "type": "string",
          "description": "The state of the accelerator."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "state"
      ]
    },
    "google-native:datafusion/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:datafusion/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:datafusion/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:datafusion/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:datafusion/v1beta1:CryptoKeyConfig": {
      "description": "The crypto key configuration. This field is used by the Customer-managed encryption keys (CMEK) feature.",
      "properties": {
        "keyReference": {
          "type": "string",
          "description": "The name of the key which is used to encrypt/decrypt customer data. For key in Cloud KMS, the key should be in the format of `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1beta1:CryptoKeyConfigResponse": {
      "description": "The crypto key configuration. This field is used by the Customer-managed encryption keys (CMEK) feature.",
      "properties": {
        "keyReference": {
          "type": "string",
          "description": "The name of the key which is used to encrypt/decrypt customer data. For key in Cloud KMS, the key should be in the format of `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        }
      },
      "type": "object",
      "required": [
        "keyReference"
      ]
    },
    "google-native:datafusion/v1beta1:EventPublishConfig": {
      "description": "Confirguration of PubSubEventWriter.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Option to enable Event Publishing."
        },
        "topic": {
          "type": "string",
          "description": "The resource name of the Pub/Sub topic. Format: projects/{project_id}/topics/{topic_id}"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "topic"
      ]
    },
    "google-native:datafusion/v1beta1:EventPublishConfigResponse": {
      "description": "Confirguration of PubSubEventWriter.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Option to enable Event Publishing."
        },
        "topic": {
          "type": "string",
          "description": "The resource name of the Pub/Sub topic. Format: projects/{project_id}/topics/{topic_id}"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "topic"
      ]
    },
    "google-native:datafusion/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:datafusion/v1beta1:InstanceType": {
      "description": "Required. Instance type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "No type specified. The instance creation will fail.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Basic",
          "description": "Basic Data Fusion instance. In Basic type, the user will be able to create data pipelines using point and click UI. However, there are certain limitations, such as fewer number of concurrent pipelines, no support for streaming pipelines, etc.",
          "value": "BASIC"
        },
        {
          "name": "Enterprise",
          "description": "Enterprise Data Fusion instance. In Enterprise type, the user will have all features available, such as support for streaming pipelines, unlimited number of concurrent pipelines, etc.",
          "value": "ENTERPRISE"
        },
        {
          "name": "Developer",
          "description": "Developer Data Fusion instance. In Developer type, the user will have all features available but with restrictive capabilities. This is to help enterprises design and develop their data ingestion and integration pipelines at low cost.",
          "value": "DEVELOPER"
        }
      ]
    },
    "google-native:datafusion/v1beta1:NetworkConfig": {
      "description": "Network configuration for a Data Fusion instance. These configurations are used for peering with the customer network. Configurations are optional when a public Data Fusion instance is to be created. However, providing these configurations allows several benefits, such as reduced network latency while accessing the customer resources from managed Data Fusion instance nodes, as well as access to the customer on-prem resources.",
      "properties": {
        "connectionType": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:NetworkConfigConnectionType",
          "description": "Optional. Type of connection for establishing private IP connectivity between the Data Fusion customer project VPC and the corresponding tenant project from a predefined list of available connection modes. If this field is unspecified for a private instance, VPC peering is used."
        },
        "ipAllocation": {
          "type": "string",
          "description": "Optional. The IP range in CIDR notation to use for the managed Data Fusion instance nodes. This range must not overlap with any other ranges used in the Data Fusion instance network. This is required only when using connection type VPC_PEERING. Format: a.b.c.d/22 Example: 192.168.0.0/22"
        },
        "network": {
          "type": "string",
          "description": "Optional. Name of the network in the customer project with which the Tenant Project will be peered for executing pipelines. This is required only when using connection type VPC peering. In case of shared VPC where the network resides in another host project the network should specified in the form of projects/{project-id}/global/networks/{network}. This is only required for connectivity type VPC_PEERING."
        },
        "privateServiceConnectConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:PrivateServiceConnectConfig",
          "description": "Optional. Configuration for Private Service Connect. This is required only when using connection type PRIVATE_SERVICE_CONNECT_INTERFACES."
        }
      },
      "type": "object"
    },
    "google-native:datafusion/v1beta1:NetworkConfigConnectionType": {
      "description": "Optional. Type of connection for establishing private IP connectivity between the Data Fusion customer project VPC and the corresponding tenant project from a predefined list of available connection modes. If this field is unspecified for a private instance, VPC peering is used.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectionTypeUnspecified",
          "description": "No specific connection type was requested, the default value of VPC_PEERING is chosen.",
          "value": "CONNECTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "VpcPeering",
          "description": "Requests the use of VPC peerings for connecting the consumer and tenant projects.",
          "value": "VPC_PEERING"
        },
        {
          "name": "PrivateServiceConnectInterfaces",
          "description": "Requests the use of Private Service Connect Interfaces for connecting the consumer and tenant projects.",
          "value": "PRIVATE_SERVICE_CONNECT_INTERFACES"
        }
      ]
    },
    "google-native:datafusion/v1beta1:NetworkConfigResponse": {
      "description": "Network configuration for a Data Fusion instance. These configurations are used for peering with the customer network. Configurations are optional when a public Data Fusion instance is to be created. However, providing these configurations allows several benefits, such as reduced network latency while accessing the customer resources from managed Data Fusion instance nodes, as well as access to the customer on-prem resources.",
      "properties": {
        "connectionType": {
          "type": "string",
          "description": "Optional. Type of connection for establishing private IP connectivity between the Data Fusion customer project VPC and the corresponding tenant project from a predefined list of available connection modes. If this field is unspecified for a private instance, VPC peering is used."
        },
        "ipAllocation": {
          "type": "string",
          "description": "Optional. The IP range in CIDR notation to use for the managed Data Fusion instance nodes. This range must not overlap with any other ranges used in the Data Fusion instance network. This is required only when using connection type VPC_PEERING. Format: a.b.c.d/22 Example: 192.168.0.0/22"
        },
        "network": {
          "type": "string",
          "description": "Optional. Name of the network in the customer project with which the Tenant Project will be peered for executing pipelines. This is required only when using connection type VPC peering. In case of shared VPC where the network resides in another host project the network should specified in the form of projects/{project-id}/global/networks/{network}. This is only required for connectivity type VPC_PEERING."
        },
        "privateServiceConnectConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:PrivateServiceConnectConfigResponse",
          "description": "Optional. Configuration for Private Service Connect. This is required only when using connection type PRIVATE_SERVICE_CONNECT_INTERFACES."
        }
      },
      "type": "object",
      "required": [
        "connectionType",
        "ipAllocation",
        "network",
        "privateServiceConnectConfig"
      ]
    },
    "google-native:datafusion/v1beta1:PrivateServiceConnectConfig": {
      "description": "Configuration for using Private Service Connect to establish connectivity between the Data Fusion consumer project and the corresponding tenant project.",
      "properties": {
        "networkAttachment": {
          "type": "string",
          "description": "The reference to the network attachment used to establish private connectivity. It will be of the form projects/{project-id}/regions/{region}/networkAttachments/{network-attachment-id}."
        },
        "unreachableCidrBlock": {
          "type": "string",
          "description": "Optional. Input only. The CIDR block to which the CDF instance can't route traffic to in the consumer project VPC. The size of this block should be at least /25. This range should not overlap with the primary address range of any subnetwork used by the network attachment. This range can be used for other purposes in the consumer VPC as long as there is no requirement for CDF to reach destinations using these addresses. If this value is not provided, the server chooses a non RFC 1918 address range. The format of this field is governed by RFC 4632. Example: 192.168.0.0/25"
        }
      },
      "type": "object",
      "required": [
        "networkAttachment"
      ]
    },
    "google-native:datafusion/v1beta1:PrivateServiceConnectConfigResponse": {
      "description": "Configuration for using Private Service Connect to establish connectivity between the Data Fusion consumer project and the corresponding tenant project.",
      "properties": {
        "effectiveUnreachableCidrBlock": {
          "type": "string",
          "description": "The CIDR block to which the CDF instance can't route traffic to in the consumer project VPC. The size of this block is /25. The format of this field is governed by RFC 4632. Example: 240.0.0.0/25"
        },
        "networkAttachment": {
          "type": "string",
          "description": "The reference to the network attachment used to establish private connectivity. It will be of the form projects/{project-id}/regions/{region}/networkAttachments/{network-attachment-id}."
        },
        "unreachableCidrBlock": {
          "type": "string",
          "description": "Optional. Input only. The CIDR block to which the CDF instance can't route traffic to in the consumer project VPC. The size of this block should be at least /25. This range should not overlap with the primary address range of any subnetwork used by the network attachment. This range can be used for other purposes in the consumer VPC as long as there is no requirement for CDF to reach destinations using these addresses. If this value is not provided, the server chooses a non RFC 1918 address range. The format of this field is governed by RFC 4632. Example: 192.168.0.0/25"
        }
      },
      "type": "object",
      "required": [
        "effectiveUnreachableCidrBlock",
        "networkAttachment",
        "unreachableCidrBlock"
      ]
    },
    "google-native:datafusion/v1beta1:VersionResponse": {
      "description": "The Data Fusion version.",
      "properties": {
        "availableFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Represents a list of available feature names for a given version."
        },
        "defaultVersion": {
          "type": "boolean",
          "description": "Whether this is currently the default version for Cloud Data Fusion"
        },
        "type": {
          "type": "string",
          "description": "Type represents the release availability of the version"
        },
        "versionNumber": {
          "type": "string",
          "description": "The version number of the Data Fusion instance, such as '6.0.1.0'."
        }
      },
      "type": "object",
      "required": [
        "availableFeatures",
        "defaultVersion",
        "type",
        "versionNumber"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1AnnotationSpec": {
      "description": "Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the AnnotationSpec. Maximum of 64 characters."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1AnnotationSpecResponse": {
      "description": "Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the AnnotationSpec. Maximum of 64 characters."
        },
        "index": {
          "type": "integer",
          "description": "This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: \"dog\", index: 0 }` and one AnnotationSpec with `{ display_name: \"cat\", index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "index"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1AttemptResponse": {
      "description": "Records a failed evaluation job run.",
      "properties": {
        "attemptTime": {
          "type": "string"
        },
        "partialFailures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleRpcStatusResponse"
          },
          "description": "Details of errors that occurred."
        }
      },
      "type": "object",
      "required": [
        "attemptTime",
        "partialFailures"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1BigQuerySource": {
      "description": "The BigQuery location for input data. If used in an EvaluationJob, this is where the service saves the prediction input and output sampled from the model version.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2,000 characters long. If you specify the URI of a table that does not exist, Data Labeling Service creates a table at the URI with the correct schema when you create your EvaluationJob. If you specify the URI of a table that already exists, it must have the [correct schema](/ml-engine/docs/continuous-evaluation/create-job#table-schema). Provide the table URI in the following format: \"bq://{your_project_id}/ {your_dataset_name}/{your_table_name}\" [Learn more](/ml-engine/docs/continuous-evaluation/create-job#table-schema)."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1BigQuerySourceResponse": {
      "description": "The BigQuery location for input data. If used in an EvaluationJob, this is where the service saves the prediction input and output sampled from the model version.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2,000 characters long. If you specify the URI of a table that does not exist, Data Labeling Service creates a table at the URI with the correct schema when you create your EvaluationJob. If you specify the URI of a table that already exists, it must have the [correct schema](/ml-engine/docs/continuous-evaluation/create-job#table-schema). Provide the table URI in the following format: \"bq://{your_project_id}/ {your_dataset_name}/{your_table_name}\" [Learn more](/ml-engine/docs/continuous-evaluation/create-job#table-schema)."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1BoundingBoxEvaluationOptions": {
      "description": "Options regarding evaluation between bounding boxes.",
      "properties": {
        "iouThreshold": {
          "type": "number",
          "description": "Minimum [intersection-over-union (IOU)](/vision/automl/object-detection/docs/evaluate#intersection-over-union) required for 2 bounding boxes to be considered a match. This must be a number between 0 and 1."
        }
      },
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1BoundingBoxEvaluationOptionsResponse": {
      "description": "Options regarding evaluation between bounding boxes.",
      "properties": {
        "iouThreshold": {
          "type": "number",
          "description": "Minimum [intersection-over-union (IOU)](/vision/automl/object-detection/docs/evaluate#intersection-over-union) required for 2 bounding boxes to be considered a match. This must be a number between 0 and 1."
        }
      },
      "type": "object",
      "required": [
        "iouThreshold"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1BoundingPolyConfig": {
      "description": "Config for image bounding poly (and bounding box) human labeling task.",
      "properties": {
        "annotationSpecSet": {
          "type": "string",
          "description": "Annotation spec set resource name."
        },
        "instructionMessage": {
          "type": "string",
          "description": "Optional. Instruction message showed on contributors UI."
        }
      },
      "type": "object",
      "required": [
        "annotationSpecSet"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1BoundingPolyConfigResponse": {
      "description": "Config for image bounding poly (and bounding box) human labeling task.",
      "properties": {
        "annotationSpecSet": {
          "type": "string",
          "description": "Annotation spec set resource name."
        },
        "instructionMessage": {
          "type": "string",
          "description": "Optional. Instruction message showed on contributors UI."
        }
      },
      "type": "object",
      "required": [
        "annotationSpecSet",
        "instructionMessage"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1ClassificationMetadata": {
      "description": "Metadata for classification annotations.",
      "properties": {
        "isMultiLabel": {
          "type": "boolean",
          "description": "Whether the classification task is multi-label or not."
        }
      },
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1ClassificationMetadataResponse": {
      "description": "Metadata for classification annotations.",
      "properties": {
        "isMultiLabel": {
          "type": "boolean",
          "description": "Whether the classification task is multi-label or not."
        }
      },
      "type": "object",
      "required": [
        "isMultiLabel"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1CsvInstruction": {
      "description": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file.",
      "properties": {
        "gcsFileUri": {
          "type": "string",
          "description": "CSV file for the instruction. Only gcs path is allowed."
        }
      },
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1CsvInstructionResponse": {
      "description": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file.",
      "properties": {
        "gcsFileUri": {
          "type": "string",
          "description": "CSV file for the instruction. Only gcs path is allowed."
        }
      },
      "type": "object",
      "required": [
        "gcsFileUri"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1EvaluationConfig": {
      "description": "Configuration details used for calculating evaluation metrics and creating an Evaluation.",
      "properties": {
        "boundingBoxEvaluationOptions": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1BoundingBoxEvaluationOptions",
          "description": "Only specify this field if the related model performs image object detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate bounding boxes."
        }
      },
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1EvaluationConfigResponse": {
      "description": "Configuration details used for calculating evaluation metrics and creating an Evaluation.",
      "properties": {
        "boundingBoxEvaluationOptions": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1BoundingBoxEvaluationOptionsResponse",
          "description": "Only specify this field if the related model performs image object detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate bounding boxes."
        }
      },
      "type": "object",
      "required": [
        "boundingBoxEvaluationOptions"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobAlertConfig": {
      "description": "Provides details for how an evaluation job sends email alerts based on the results of a run.",
      "properties": {
        "email": {
          "type": "string",
          "description": "An email address to send alerts to."
        },
        "minAcceptableMeanAveragePrecision": {
          "type": "number",
          "description": "A number between 0 and 1 that describes a minimum mean average precision threshold. When the evaluation job runs, if it calculates that your model version's predictions from the recent interval have meanAveragePrecision below this threshold, then it sends an alert to your specified email."
        }
      },
      "type": "object",
      "required": [
        "email",
        "minAcceptableMeanAveragePrecision"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobAlertConfigResponse": {
      "description": "Provides details for how an evaluation job sends email alerts based on the results of a run.",
      "properties": {
        "email": {
          "type": "string",
          "description": "An email address to send alerts to."
        },
        "minAcceptableMeanAveragePrecision": {
          "type": "number",
          "description": "A number between 0 and 1 that describes a minimum mean average precision threshold. When the evaluation job runs, if it calculates that your model version's predictions from the recent interval have meanAveragePrecision below this threshold, then it sends an alert to your specified email."
        }
      },
      "type": "object",
      "required": [
        "email",
        "minAcceptableMeanAveragePrecision"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobConfig": {
      "description": "Configures specific details of how a continuous evaluation job works. Provide this configuration when you create an EvaluationJob.",
      "properties": {
        "bigqueryImportKeys": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Prediction keys that tell Data Labeling Service where to find the data for evaluation in your BigQuery table. When the service samples prediction input and output from your model version and saves it to BigQuery, the data gets stored as JSON strings in the BigQuery table. These keys tell Data Labeling Service how to parse the JSON. You can provide the following entries in this field: * `data_json_key`: the data key for prediction input. You must provide either this key or `reference_json_key`. * `reference_json_key`: the data reference key for prediction input. You must provide either this key or `data_json_key`. * `label_json_key`: the label key for prediction output. Required. * `label_score_json_key`: the score key for prediction output. Required. * `bounding_box_json_key`: the bounding box key for prediction output. Required if your model version perform image object detection. Learn [how to configure prediction keys](/ml-engine/docs/continuous-evaluation/create-job#prediction-keys)."
        },
        "boundingPolyConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1BoundingPolyConfig",
          "description": "Specify this field if your model version performs image object detection (bounding box detection). `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet."
        },
        "evaluationConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1EvaluationConfig",
          "description": "Details for calculating evaluation metrics and creating Evaulations. If your model version performs image object detection, you must specify the `boundingBoxEvaluationOptions` field within this configuration. Otherwise, provide an empty object for this configuration."
        },
        "evaluationJobAlertConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobAlertConfig",
          "description": "Optional. Configuration details for evaluation job alerts. Specify this field if you want to receive email alerts if the evaluation job finds that your predictions have low mean average precision during a run."
        },
        "exampleCount": {
          "type": "integer",
          "description": "The maximum number of predictions to sample and save to BigQuery during each evaluation interval. This limit overrides `example_sample_percentage`: even if the service has not sampled enough predictions to fulfill `example_sample_perecentage` during an interval, it stops sampling predictions when it meets this limit."
        },
        "exampleSamplePercentage": {
          "type": "number",
          "description": "Fraction of predictions to sample and save to BigQuery during each evaluation interval. For example, 0.1 means 10% of predictions served by your model version get saved to BigQuery."
        },
        "humanAnnotationConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
          "description": "Optional. Details for human annotation of your data. If you set labelMissingGroundTruth to `true` for this evaluation job, then you must specify this field. If you plan to provide your own ground truth labels, then omit this field. Note that you must create an Instruction resource before you can specify this field. Provide the name of the instruction resource in the `instruction` field within this configuration."
        },
        "imageClassificationConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1ImageClassificationConfig",
          "description": "Specify this field if your model version performs image classification or general classification. `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet. `allowMultiLabel` in this configuration must match `classificationMetadata.isMultiLabel` in input_config."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1InputConfig",
          "description": "Rquired. Details for the sampled prediction input. Within this configuration, there are requirements for several fields: * `dataType` must be one of `IMAGE`, `TEXT`, or `GENERAL_DATA`. * `annotationType` must be one of `IMAGE_CLASSIFICATION_ANNOTATION`, `TEXT_CLASSIFICATION_ANNOTATION`, `GENERAL_CLASSIFICATION_ANNOTATION`, or `IMAGE_BOUNDING_BOX_ANNOTATION` (image object detection). * If your machine learning model performs classification, you must specify `classificationMetadata.isMultiLabel`. * You must specify `bigquerySource` (not `gcsSource`)."
        },
        "textClassificationConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1TextClassificationConfig",
          "description": "Specify this field if your model version performs text classification. `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet. `allowMultiLabel` in this configuration must match `classificationMetadata.isMultiLabel` in input_config."
        }
      },
      "type": "object",
      "required": [
        "bigqueryImportKeys",
        "evaluationConfig",
        "exampleCount",
        "exampleSamplePercentage"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobConfigResponse": {
      "description": "Configures specific details of how a continuous evaluation job works. Provide this configuration when you create an EvaluationJob.",
      "properties": {
        "bigqueryImportKeys": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Prediction keys that tell Data Labeling Service where to find the data for evaluation in your BigQuery table. When the service samples prediction input and output from your model version and saves it to BigQuery, the data gets stored as JSON strings in the BigQuery table. These keys tell Data Labeling Service how to parse the JSON. You can provide the following entries in this field: * `data_json_key`: the data key for prediction input. You must provide either this key or `reference_json_key`. * `reference_json_key`: the data reference key for prediction input. You must provide either this key or `data_json_key`. * `label_json_key`: the label key for prediction output. Required. * `label_score_json_key`: the score key for prediction output. Required. * `bounding_box_json_key`: the bounding box key for prediction output. Required if your model version perform image object detection. Learn [how to configure prediction keys](/ml-engine/docs/continuous-evaluation/create-job#prediction-keys)."
        },
        "boundingPolyConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1BoundingPolyConfigResponse",
          "description": "Specify this field if your model version performs image object detection (bounding box detection). `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet."
        },
        "evaluationConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1EvaluationConfigResponse",
          "description": "Details for calculating evaluation metrics and creating Evaulations. If your model version performs image object detection, you must specify the `boundingBoxEvaluationOptions` field within this configuration. Otherwise, provide an empty object for this configuration."
        },
        "evaluationJobAlertConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobAlertConfigResponse",
          "description": "Optional. Configuration details for evaluation job alerts. Specify this field if you want to receive email alerts if the evaluation job finds that your predictions have low mean average precision during a run."
        },
        "exampleCount": {
          "type": "integer",
          "description": "The maximum number of predictions to sample and save to BigQuery during each evaluation interval. This limit overrides `example_sample_percentage`: even if the service has not sampled enough predictions to fulfill `example_sample_perecentage` during an interval, it stops sampling predictions when it meets this limit."
        },
        "exampleSamplePercentage": {
          "type": "number",
          "description": "Fraction of predictions to sample and save to BigQuery during each evaluation interval. For example, 0.1 means 10% of predictions served by your model version get saved to BigQuery."
        },
        "humanAnnotationConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1HumanAnnotationConfigResponse",
          "description": "Optional. Details for human annotation of your data. If you set labelMissingGroundTruth to `true` for this evaluation job, then you must specify this field. If you plan to provide your own ground truth labels, then omit this field. Note that you must create an Instruction resource before you can specify this field. Provide the name of the instruction resource in the `instruction` field within this configuration."
        },
        "imageClassificationConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1ImageClassificationConfigResponse",
          "description": "Specify this field if your model version performs image classification or general classification. `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet. `allowMultiLabel` in this configuration must match `classificationMetadata.isMultiLabel` in input_config."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1InputConfigResponse",
          "description": "Rquired. Details for the sampled prediction input. Within this configuration, there are requirements for several fields: * `dataType` must be one of `IMAGE`, `TEXT`, or `GENERAL_DATA`. * `annotationType` must be one of `IMAGE_CLASSIFICATION_ANNOTATION`, `TEXT_CLASSIFICATION_ANNOTATION`, `GENERAL_CLASSIFICATION_ANNOTATION`, or `IMAGE_BOUNDING_BOX_ANNOTATION` (image object detection). * If your machine learning model performs classification, you must specify `classificationMetadata.isMultiLabel`. * You must specify `bigquerySource` (not `gcsSource`)."
        },
        "textClassificationConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1TextClassificationConfigResponse",
          "description": "Specify this field if your model version performs text classification. `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet. `allowMultiLabel` in this configuration must match `classificationMetadata.isMultiLabel` in input_config."
        }
      },
      "type": "object",
      "required": [
        "bigqueryImportKeys",
        "boundingPolyConfig",
        "evaluationConfig",
        "evaluationJobAlertConfig",
        "exampleCount",
        "exampleSamplePercentage",
        "humanAnnotationConfig",
        "imageClassificationConfig",
        "inputConfig",
        "textClassificationConfig"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1GcsSource": {
      "description": "Source of the Cloud Storage file to be imported.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "The input URI of source file. This must be a Cloud Storage path (`gs://...`)."
        },
        "mimeType": {
          "type": "string",
          "description": "The format of the source file. Only \"text/csv\" is supported."
        }
      },
      "type": "object",
      "required": [
        "inputUri",
        "mimeType"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1GcsSourceResponse": {
      "description": "Source of the Cloud Storage file to be imported.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "The input URI of source file. This must be a Cloud Storage path (`gs://...`)."
        },
        "mimeType": {
          "type": "string",
          "description": "The format of the source file. Only \"text/csv\" is supported."
        }
      },
      "type": "object",
      "required": [
        "inputUri",
        "mimeType"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1HumanAnnotationConfig": {
      "description": "Configuration for how human labeling task should be done.",
      "properties": {
        "annotatedDatasetDescription": {
          "type": "string",
          "description": "Optional. A human-readable description for AnnotatedDataset. The description can be up to 10000 characters long."
        },
        "annotatedDatasetDisplayName": {
          "type": "string",
          "description": "A human-readable name for AnnotatedDataset defined by users. Maximum of 64 characters ."
        },
        "contributorEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If you want your own labeling contributors to manage and work on this labeling request, you can set these contributors here. We will give them access to the question types in crowdcompute. Note that these emails must be registered in crowdcompute worker UI: https://crowd-compute.appspot.com/"
        },
        "instruction": {
          "type": "string",
          "description": "Instruction resource name."
        },
        "labelGroup": {
          "type": "string",
          "description": "Optional. A human-readable label used to logically group labeling tasks. This string must match the regular expression `[a-zA-Z\\\\d_-]{0,128}`."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The Language of this question, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US. Only need to set this when task is language related. For example, French text classification."
        },
        "questionDuration": {
          "type": "string",
          "description": "Optional. Maximum duration for contributors to answer a question. Maximum is 3600 seconds. Default is 3600 seconds."
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. Replication of questions. Each question will be sent to up to this number of contributors to label. Aggregated answers will be returned. Default is set to 1. For image related labeling, valid values are 1, 3, 5."
        },
        "userEmailAddress": {
          "type": "string",
          "description": "Email of the user who started the labeling task and should be notified by email. If empty no notification will be sent."
        }
      },
      "type": "object",
      "required": [
        "annotatedDatasetDisplayName",
        "instruction"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1HumanAnnotationConfigResponse": {
      "description": "Configuration for how human labeling task should be done.",
      "properties": {
        "annotatedDatasetDescription": {
          "type": "string",
          "description": "Optional. A human-readable description for AnnotatedDataset. The description can be up to 10000 characters long."
        },
        "annotatedDatasetDisplayName": {
          "type": "string",
          "description": "A human-readable name for AnnotatedDataset defined by users. Maximum of 64 characters ."
        },
        "contributorEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If you want your own labeling contributors to manage and work on this labeling request, you can set these contributors here. We will give them access to the question types in crowdcompute. Note that these emails must be registered in crowdcompute worker UI: https://crowd-compute.appspot.com/"
        },
        "instruction": {
          "type": "string",
          "description": "Instruction resource name."
        },
        "labelGroup": {
          "type": "string",
          "description": "Optional. A human-readable label used to logically group labeling tasks. This string must match the regular expression `[a-zA-Z\\\\d_-]{0,128}`."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The Language of this question, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US. Only need to set this when task is language related. For example, French text classification."
        },
        "questionDuration": {
          "type": "string",
          "description": "Optional. Maximum duration for contributors to answer a question. Maximum is 3600 seconds. Default is 3600 seconds."
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. Replication of questions. Each question will be sent to up to this number of contributors to label. Aggregated answers will be returned. Default is set to 1. For image related labeling, valid values are 1, 3, 5."
        },
        "userEmailAddress": {
          "type": "string",
          "description": "Email of the user who started the labeling task and should be notified by email. If empty no notification will be sent."
        }
      },
      "type": "object",
      "required": [
        "annotatedDatasetDescription",
        "annotatedDatasetDisplayName",
        "contributorEmails",
        "instruction",
        "labelGroup",
        "languageCode",
        "questionDuration",
        "replicaCount",
        "userEmailAddress"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1ImageClassificationConfig": {
      "description": "Config for image classification human labeling task.",
      "properties": {
        "allowMultiLabel": {
          "type": "boolean",
          "description": "Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one image."
        },
        "annotationSpecSet": {
          "type": "string",
          "description": "Annotation spec set resource name."
        },
        "answerAggregationType": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1ImageClassificationConfigAnswerAggregationType",
          "description": "Optional. The type of how to aggregate answers."
        }
      },
      "type": "object",
      "required": [
        "annotationSpecSet"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1ImageClassificationConfigAnswerAggregationType": {
      "description": "Optional. The type of how to aggregate answers.",
      "type": "string",
      "enum": [
        {
          "name": "StringAggregationTypeUnspecified",
          "value": "STRING_AGGREGATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "MajorityVote",
          "description": "Majority vote to aggregate answers.",
          "value": "MAJORITY_VOTE"
        },
        {
          "name": "UnanimousVote",
          "description": "Unanimous answers will be adopted.",
          "value": "UNANIMOUS_VOTE"
        },
        {
          "name": "NoAggregation",
          "description": "Preserve all answers by crowd compute.",
          "value": "NO_AGGREGATION"
        }
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1ImageClassificationConfigResponse": {
      "description": "Config for image classification human labeling task.",
      "properties": {
        "allowMultiLabel": {
          "type": "boolean",
          "description": "Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one image."
        },
        "annotationSpecSet": {
          "type": "string",
          "description": "Annotation spec set resource name."
        },
        "answerAggregationType": {
          "type": "string",
          "description": "Optional. The type of how to aggregate answers."
        }
      },
      "type": "object",
      "required": [
        "allowMultiLabel",
        "annotationSpecSet",
        "answerAggregationType"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1InputConfig": {
      "description": "The configuration of input data, including data type, location, etc.",
      "properties": {
        "annotationType": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1InputConfigAnnotationType",
          "description": "Optional. The type of annotation to be performed on this data. You must specify this field if you are using this InputConfig in an EvaluationJob."
        },
        "bigquerySource": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1BigQuerySource",
          "description": "Source located in BigQuery. You must specify this field if you are using this InputConfig in an EvaluationJob."
        },
        "classificationMetadata": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1ClassificationMetadata",
          "description": "Optional. Metadata about annotations for the input. You must specify this field if you are using this InputConfig in an EvaluationJob for a model version that performs classification."
        },
        "dataType": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1InputConfigDataType",
          "description": "Data type must be specifed when user tries to import data."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1GcsSource",
          "description": "Source located in Cloud Storage."
        },
        "textMetadata": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1TextMetadata",
          "description": "Required for text import, as language code must be specified."
        }
      },
      "type": "object",
      "required": [
        "dataType"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1InputConfigAnnotationType": {
      "description": "Optional. The type of annotation to be performed on this data. You must specify this field if you are using this InputConfig in an EvaluationJob.",
      "type": "string",
      "enum": [
        {
          "name": "AnnotationTypeUnspecified",
          "value": "ANNOTATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "ImageClassificationAnnotation",
          "description": "Classification annotations in an image. Allowed for continuous evaluation.",
          "value": "IMAGE_CLASSIFICATION_ANNOTATION"
        },
        {
          "name": "ImageBoundingBoxAnnotation",
          "description": "Bounding box annotations in an image. A form of image object detection. Allowed for continuous evaluation.",
          "value": "IMAGE_BOUNDING_BOX_ANNOTATION"
        },
        {
          "name": "ImageOrientedBoundingBoxAnnotation",
          "description": "Oriented bounding box. The box does not have to be parallel to horizontal line.",
          "value": "IMAGE_ORIENTED_BOUNDING_BOX_ANNOTATION"
        },
        {
          "name": "ImageBoundingPolyAnnotation",
          "description": "Bounding poly annotations in an image.",
          "value": "IMAGE_BOUNDING_POLY_ANNOTATION"
        },
        {
          "name": "ImagePolylineAnnotation",
          "description": "Polyline annotations in an image.",
          "value": "IMAGE_POLYLINE_ANNOTATION"
        },
        {
          "name": "ImageSegmentationAnnotation",
          "description": "Segmentation annotations in an image.",
          "value": "IMAGE_SEGMENTATION_ANNOTATION"
        },
        {
          "name": "VideoShotsClassificationAnnotation",
          "description": "Classification annotations in video shots.",
          "value": "VIDEO_SHOTS_CLASSIFICATION_ANNOTATION"
        },
        {
          "name": "VideoObjectTrackingAnnotation",
          "description": "Video object tracking annotation.",
          "value": "VIDEO_OBJECT_TRACKING_ANNOTATION"
        },
        {
          "name": "VideoObjectDetectionAnnotation",
          "description": "Video object detection annotation.",
          "value": "VIDEO_OBJECT_DETECTION_ANNOTATION"
        },
        {
          "name": "VideoEventAnnotation",
          "description": "Video event annotation.",
          "value": "VIDEO_EVENT_ANNOTATION"
        },
        {
          "name": "TextClassificationAnnotation",
          "description": "Classification for text. Allowed for continuous evaluation.",
          "value": "TEXT_CLASSIFICATION_ANNOTATION"
        },
        {
          "name": "TextEntityExtractionAnnotation",
          "description": "Entity extraction for text.",
          "value": "TEXT_ENTITY_EXTRACTION_ANNOTATION"
        },
        {
          "name": "GeneralClassificationAnnotation",
          "description": "General classification. Allowed for continuous evaluation.",
          "value": "GENERAL_CLASSIFICATION_ANNOTATION"
        }
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1InputConfigDataType": {
      "description": "Required. Data type must be specifed when user tries to import data.",
      "type": "string",
      "enum": [
        {
          "name": "DataTypeUnspecified",
          "description": "Data type is unspecified.",
          "value": "DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "Image",
          "description": "Allowed for continuous evaluation.",
          "value": "IMAGE"
        },
        {
          "name": "Video",
          "description": "Video data type.",
          "value": "VIDEO"
        },
        {
          "name": "Text",
          "description": "Allowed for continuous evaluation.",
          "value": "TEXT"
        },
        {
          "name": "GeneralData",
          "description": "Allowed for continuous evaluation.",
          "value": "GENERAL_DATA"
        }
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1InputConfigResponse": {
      "description": "The configuration of input data, including data type, location, etc.",
      "properties": {
        "annotationType": {
          "type": "string",
          "description": "Optional. The type of annotation to be performed on this data. You must specify this field if you are using this InputConfig in an EvaluationJob."
        },
        "bigquerySource": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1BigQuerySourceResponse",
          "description": "Source located in BigQuery. You must specify this field if you are using this InputConfig in an EvaluationJob."
        },
        "classificationMetadata": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1ClassificationMetadataResponse",
          "description": "Optional. Metadata about annotations for the input. You must specify this field if you are using this InputConfig in an EvaluationJob for a model version that performs classification."
        },
        "dataType": {
          "type": "string",
          "description": "Data type must be specifed when user tries to import data."
        },
        "gcsSource": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1GcsSourceResponse",
          "description": "Source located in Cloud Storage."
        },
        "textMetadata": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1TextMetadataResponse",
          "description": "Required for text import, as language code must be specified."
        }
      },
      "type": "object",
      "required": [
        "annotationType",
        "bigquerySource",
        "classificationMetadata",
        "dataType",
        "gcsSource",
        "textMetadata"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1OperatorFeedbackMetadata": {
      "description": "Metadata describing the feedback from the operator.",
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1OperatorFeedbackMetadataResponse": {
      "description": "Metadata describing the feedback from the operator.",
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1PdfInstruction": {
      "description": "Instruction from a PDF file.",
      "properties": {
        "gcsFileUri": {
          "type": "string",
          "description": "PDF file for the instruction. Only gcs path is allowed."
        }
      },
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1PdfInstructionResponse": {
      "description": "Instruction from a PDF file.",
      "properties": {
        "gcsFileUri": {
          "type": "string",
          "description": "PDF file for the instruction. Only gcs path is allowed."
        }
      },
      "type": "object",
      "required": [
        "gcsFileUri"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1RequesterFeedbackMetadata": {
      "description": "Metadata describing the feedback from the labeling task requester.",
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1RequesterFeedbackMetadataResponse": {
      "description": "Metadata describing the feedback from the labeling task requester.",
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1SentimentConfig": {
      "description": "Config for setting up sentiments.",
      "properties": {
        "enableLabelSentimentSelection": {
          "type": "boolean",
          "description": "If set to true, contributors will have the option to select sentiment of the label they selected, to mark it as negative or positive label. Default is false."
        }
      },
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1SentimentConfigResponse": {
      "description": "Config for setting up sentiments.",
      "properties": {
        "enableLabelSentimentSelection": {
          "type": "boolean",
          "description": "If set to true, contributors will have the option to select sentiment of the label they selected, to mark it as negative or positive label. Default is false."
        }
      },
      "type": "object",
      "required": [
        "enableLabelSentimentSelection"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1TextClassificationConfig": {
      "description": "Config for text classification human labeling task.",
      "properties": {
        "allowMultiLabel": {
          "type": "boolean",
          "description": "Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one text segment."
        },
        "annotationSpecSet": {
          "type": "string",
          "description": "Annotation spec set resource name."
        },
        "sentimentConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1SentimentConfig",
          "description": "Optional. Configs for sentiment selection. We deprecate sentiment analysis in data labeling side as it is incompatible with uCAIP."
        }
      },
      "type": "object",
      "required": [
        "annotationSpecSet"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1TextClassificationConfigResponse": {
      "description": "Config for text classification human labeling task.",
      "properties": {
        "allowMultiLabel": {
          "type": "boolean",
          "description": "Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one text segment."
        },
        "annotationSpecSet": {
          "type": "string",
          "description": "Annotation spec set resource name."
        },
        "sentimentConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1SentimentConfigResponse",
          "description": "Optional. Configs for sentiment selection. We deprecate sentiment analysis in data labeling side as it is incompatible with uCAIP."
        }
      },
      "type": "object",
      "required": [
        "allowMultiLabel",
        "annotationSpecSet",
        "sentimentConfig"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1TextMetadata": {
      "description": "Metadata for the text.",
      "properties": {
        "languageCode": {
          "type": "string",
          "description": "The language of this text, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US."
        }
      },
      "type": "object"
    },
    "google-native:datalabeling/v1beta1:GoogleCloudDatalabelingV1beta1TextMetadataResponse": {
      "description": "Metadata for the text.",
      "properties": {
        "languageCode": {
          "type": "string",
          "description": "The language of this text, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US."
        }
      },
      "type": "object",
      "required": [
        "languageCode"
      ]
    },
    "google-native:datalabeling/v1beta1:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:datalabeling/v1beta1:InstructionDataType": {
      "description": "Required. The data type of this instruction.",
      "type": "string",
      "enum": [
        {
          "name": "DataTypeUnspecified",
          "description": "Data type is unspecified.",
          "value": "DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "Image",
          "description": "Allowed for continuous evaluation.",
          "value": "IMAGE"
        },
        {
          "name": "Video",
          "description": "Video data type.",
          "value": "VIDEO"
        },
        {
          "name": "Text",
          "description": "Allowed for continuous evaluation.",
          "value": "TEXT"
        },
        {
          "name": "GeneralData",
          "description": "Allowed for continuous evaluation.",
          "value": "GENERAL_DATA"
        }
      ]
    },
    "google-native:datalineage/v1:GoogleCloudDatacatalogLineageV1EntityReference": {
      "description": "The soft reference to everything you can attach a lineage event to.",
      "properties": {
        "fullyQualifiedName": {
          "type": "string",
          "description": "[Fully Qualified Name (FQN)](https://cloud.google.com/data-catalog/docs/fully-qualified-names) of the entity."
        }
      },
      "type": "object",
      "required": [
        "fullyQualifiedName"
      ]
    },
    "google-native:datalineage/v1:GoogleCloudDatacatalogLineageV1EntityReferenceResponse": {
      "description": "The soft reference to everything you can attach a lineage event to.",
      "properties": {
        "fullyQualifiedName": {
          "type": "string",
          "description": "[Fully Qualified Name (FQN)](https://cloud.google.com/data-catalog/docs/fully-qualified-names) of the entity."
        }
      },
      "type": "object",
      "required": [
        "fullyQualifiedName"
      ]
    },
    "google-native:datalineage/v1:GoogleCloudDatacatalogLineageV1EventLink": {
      "description": "A lineage between source and target entities.",
      "properties": {
        "source": {
          "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1EntityReference",
          "description": "Reference to the source entity"
        },
        "target": {
          "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1EntityReference",
          "description": "Reference to the target entity"
        }
      },
      "type": "object",
      "required": [
        "source",
        "target"
      ]
    },
    "google-native:datalineage/v1:GoogleCloudDatacatalogLineageV1EventLinkResponse": {
      "description": "A lineage between source and target entities.",
      "properties": {
        "source": {
          "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1EntityReferenceResponse",
          "description": "Reference to the source entity"
        },
        "target": {
          "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1EntityReferenceResponse",
          "description": "Reference to the target entity"
        }
      },
      "type": "object",
      "required": [
        "source",
        "target"
      ]
    },
    "google-native:datalineage/v1:GoogleCloudDatacatalogLineageV1Origin": {
      "description": "Origin of a process.",
      "properties": {
        "name": {
          "type": "string",
          "description": "If the source_type isn't CUSTOM, the value of this field should be a GCP resource name of the system, which reports lineage. The project and location parts of the resource name must match the project and location of the lineage resource being created. Examples: - `{source_type: COMPOSER, name: \"projects/foo/locations/us/environments/bar\"}` - `{source_type: BIGQUERY, name: \"projects/foo/locations/eu\"}` - `{source_type: CUSTOM, name: \"myCustomIntegration\"}`"
        },
        "sourceType": {
          "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1OriginSourceType",
          "description": "Type of the source. Use of a source_type other than `CUSTOM` for process creation or updating is highly discouraged, and may be restricted in the future without notice."
        }
      },
      "type": "object"
    },
    "google-native:datalineage/v1:GoogleCloudDatacatalogLineageV1OriginResponse": {
      "description": "Origin of a process.",
      "properties": {
        "name": {
          "type": "string",
          "description": "If the source_type isn't CUSTOM, the value of this field should be a GCP resource name of the system, which reports lineage. The project and location parts of the resource name must match the project and location of the lineage resource being created. Examples: - `{source_type: COMPOSER, name: \"projects/foo/locations/us/environments/bar\"}` - `{source_type: BIGQUERY, name: \"projects/foo/locations/eu\"}` - `{source_type: CUSTOM, name: \"myCustomIntegration\"}`"
        },
        "sourceType": {
          "type": "string",
          "description": "Type of the source. Use of a source_type other than `CUSTOM` for process creation or updating is highly discouraged, and may be restricted in the future without notice."
        }
      },
      "type": "object",
      "required": [
        "name",
        "sourceType"
      ]
    },
    "google-native:datalineage/v1:GoogleCloudDatacatalogLineageV1OriginSourceType": {
      "description": "Type of the source. Use of a source_type other than `CUSTOM` for process creation or updating is highly discouraged, and may be restricted in the future without notice.",
      "type": "string",
      "enum": [
        {
          "name": "SourceTypeUnspecified",
          "description": "Source is Unspecified",
          "value": "SOURCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Custom",
          "description": "A custom source",
          "value": "CUSTOM"
        },
        {
          "name": "Bigquery",
          "description": "BigQuery",
          "value": "BIGQUERY"
        },
        {
          "name": "DataFusion",
          "description": "Data Fusion",
          "value": "DATA_FUSION"
        },
        {
          "name": "Composer",
          "description": "Composer",
          "value": "COMPOSER"
        },
        {
          "name": "LookerStudio",
          "description": "Looker Studio",
          "value": "LOOKER_STUDIO"
        },
        {
          "name": "Dataproc",
          "description": "Dataproc",
          "value": "DATAPROC"
        }
      ]
    },
    "google-native:datalineage/v1:RunState": {
      "description": "Required. The state of the run.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "The state is unknown. The true state may be any of the below or a different state that is not supported here explicitly.",
          "value": "UNKNOWN"
        },
        {
          "name": "Started",
          "description": "The run is still executing.",
          "value": "STARTED"
        },
        {
          "name": "Completed",
          "description": "The run completed.",
          "value": "COMPLETED"
        },
        {
          "name": "Failed",
          "description": "The run failed.",
          "value": "FAILED"
        },
        {
          "name": "Aborted",
          "description": "The run aborted.",
          "value": "ABORTED"
        }
      ]
    },
    "google-native:datamigration/v1:AlloyDbConnectionProfile": {
      "description": "Specifies required connection parameters, and the parameters required to create an AlloyDB destination cluster.",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "The AlloyDB cluster ID that this connection profile is associated with."
        },
        "settings": {
          "$ref": "#/types/google-native:datamigration%2Fv1:AlloyDbSettings",
          "description": "Immutable. Metadata used to create the destination AlloyDB cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterId"
      ]
    },
    "google-native:datamigration/v1:AlloyDbConnectionProfileResponse": {
      "description": "Specifies required connection parameters, and the parameters required to create an AlloyDB destination cluster.",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "The AlloyDB cluster ID that this connection profile is associated with."
        },
        "settings": {
          "$ref": "#/types/google-native:datamigration%2Fv1:AlloyDbSettingsResponse",
          "description": "Immutable. Metadata used to create the destination AlloyDB cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "settings"
      ]
    },
    "google-native:datamigration/v1:AlloyDbSettings": {
      "description": "Settings for creating an AlloyDB cluster.",
      "properties": {
        "databaseVersion": {
          "$ref": "#/types/google-native:datamigration%2Fv1:AlloyDbSettingsDatabaseVersion",
          "description": "Optional. The database engine major version. This is an optional field. If a database version is not supplied at cluster creation time, then a default database version will be used."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
        },
        "initialUser": {
          "$ref": "#/types/google-native:datamigration%2Fv1:UserPassword",
          "description": "Input only. Initial user to setup during cluster creation. Required."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for the AlloyDB cluster created by DMS. An object containing a list of 'key', 'value' pairs."
        },
        "primaryInstanceSettings": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PrimaryInstanceSettings"
        },
        "vpcNetwork": {
          "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. It is specified in the form: \"projects/{project_number}/global/networks/{network_id}\". This is required to create a cluster."
        }
      },
      "type": "object",
      "required": [
        "initialUser",
        "vpcNetwork"
      ]
    },
    "google-native:datamigration/v1:AlloyDbSettingsDatabaseVersion": {
      "description": "Optional. The database engine major version. This is an optional field. If a database version is not supplied at cluster creation time, then a default database version will be used.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseVersionUnspecified",
          "description": "This is an unknown database version.",
          "value": "DATABASE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Postgres14",
          "description": "The database version is Postgres 14.",
          "value": "POSTGRES_14"
        },
        {
          "name": "Postgres15",
          "description": "The database version is Postgres 15.",
          "value": "POSTGRES_15"
        }
      ]
    },
    "google-native:datamigration/v1:AlloyDbSettingsResponse": {
      "description": "Settings for creating an AlloyDB cluster.",
      "properties": {
        "databaseVersion": {
          "type": "string",
          "description": "Optional. The database engine major version. This is an optional field. If a database version is not supplied at cluster creation time, then a default database version will be used."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
        },
        "initialUser": {
          "$ref": "#/types/google-native:datamigration%2Fv1:UserPasswordResponse",
          "description": "Input only. Initial user to setup during cluster creation. Required."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for the AlloyDB cluster created by DMS. An object containing a list of 'key', 'value' pairs."
        },
        "primaryInstanceSettings": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PrimaryInstanceSettingsResponse"
        },
        "vpcNetwork": {
          "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. It is specified in the form: \"projects/{project_number}/global/networks/{network_id}\". This is required to create a cluster."
        }
      },
      "type": "object",
      "required": [
        "databaseVersion",
        "encryptionConfig",
        "initialUser",
        "labels",
        "primaryInstanceSettings",
        "vpcNetwork"
      ]
    },
    "google-native:datamigration/v1:ApplyHash": {
      "description": "Apply a hash function on the value.",
      "properties": {
        "uuidFromBytes": {
          "$ref": "#/types/google-native:datamigration%2Fv1:Empty",
          "description": "Optional. Generate UUID from the data's byte array"
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:ApplyHashResponse": {
      "description": "Apply a hash function on the value.",
      "properties": {
        "uuidFromBytes": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EmptyResponse",
          "description": "Optional. Generate UUID from the data's byte array"
        }
      },
      "type": "object",
      "required": [
        "uuidFromBytes"
      ]
    },
    "google-native:datamigration/v1:AssignSpecificValue": {
      "description": "Set to a specific value (value is converted to fit the target data type)",
      "properties": {
        "value": {
          "type": "string",
          "description": "Specific value to be assigned"
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:datamigration/v1:AssignSpecificValueResponse": {
      "description": "Set to a specific value (value is converted to fit the target data type)",
      "properties": {
        "value": {
          "type": "string",
          "description": "Specific value to be assigned"
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:datamigration/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:datamigration/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:datamigration%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:datamigration/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:datamigration/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datamigration%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:datamigration/v1:CloudSqlConnectionProfile": {
      "description": "Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance.",
      "properties": {
        "settings": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlSettings",
          "description": "Immutable. Metadata used to create the destination Cloud SQL database."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:CloudSqlConnectionProfileResponse": {
      "description": "Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance.",
      "properties": {
        "additionalPublicIp": {
          "type": "string",
          "description": "The Cloud SQL database instance's additional (outgoing) public IP. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available)."
        },
        "cloudSqlId": {
          "type": "string",
          "description": "The Cloud SQL instance ID that this connection profile is associated with."
        },
        "privateIp": {
          "type": "string",
          "description": "The Cloud SQL database instance's private IP."
        },
        "publicIp": {
          "type": "string",
          "description": "The Cloud SQL database instance's public IP."
        },
        "settings": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlSettingsResponse",
          "description": "Immutable. Metadata used to create the destination Cloud SQL database."
        }
      },
      "type": "object",
      "required": [
        "additionalPublicIp",
        "cloudSqlId",
        "privateIp",
        "publicIp",
        "settings"
      ]
    },
    "google-native:datamigration/v1:CloudSqlSettings": {
      "description": "Settings for creating a Cloud SQL database instance.",
      "properties": {
        "activationPolicy": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlSettingsActivationPolicy",
          "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is 'RUNNABLE'. Valid values: 'ALWAYS': The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives."
        },
        "autoStorageIncrease": {
          "type": "boolean",
          "description": "[default: ON] If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity. If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB."
        },
        "availabilityType": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlSettingsAvailabilityType",
          "description": "Optional. Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data availability. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)."
        },
        "cmekKeyName": {
          "type": "string",
          "description": "The KMS key name used for the csql instance."
        },
        "collation": {
          "type": "string",
          "description": "The Cloud SQL default instance level collation."
        },
        "dataCacheConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DataCacheConfig",
          "description": "Optional. Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "The storage capacity available to the database, in GB. The minimum (and default) size is 10GB."
        },
        "dataDiskType": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlSettingsDataDiskType",
          "description": "The type of storage: `PD_SSD` (default) or `PD_HDD`."
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The database flags passed to the Cloud SQL instance at startup. An object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }."
        },
        "databaseVersion": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlSettingsDatabaseVersion",
          "description": "The database engine type and version."
        },
        "edition": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlSettingsEdition",
          "description": "Optional. The edition of the given Cloud SQL instance."
        },
        "ipConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SqlIpConfig",
          "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled."
        },
        "rootPassword": {
          "type": "string",
          "description": "Input only. Initial root password."
        },
        "secondaryZone": {
          "type": "string",
          "description": "Optional. The Google Cloud Platform zone where the failover Cloud SQL database instance is located. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available)."
        },
        "sourceId": {
          "type": "string",
          "description": "The Database Migration Service source connection profile ID, in the format: `projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID`"
        },
        "storageAutoResizeLimit": {
          "type": "string",
          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
        },
        "tier": {
          "type": "string",
          "description": "The tier (or machine type) for this instance, for example: `db-n1-standard-1` (MySQL instances) or `db-custom-1-3840` (PostgreSQL instances). For more information, see [Cloud SQL Instance Settings](https://cloud.google.com/sql/docs/mysql/instance-settings)."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"18kg\", \"count\": \"3\" }`."
        },
        "zone": {
          "type": "string",
          "description": "The Google Cloud Platform zone where your Cloud SQL database instance is located."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:CloudSqlSettingsActivationPolicy": {
      "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is 'RUNNABLE'. Valid values: 'ALWAYS': The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives.",
      "type": "string",
      "enum": [
        {
          "name": "SqlActivationPolicyUnspecified",
          "description": "unspecified policy.",
          "value": "SQL_ACTIVATION_POLICY_UNSPECIFIED"
        },
        {
          "name": "Always",
          "description": "The instance is always up and running.",
          "value": "ALWAYS"
        },
        {
          "name": "Never",
          "description": "The instance should never spin up.",
          "value": "NEVER"
        }
      ]
    },
    "google-native:datamigration/v1:CloudSqlSettingsAvailabilityType": {
      "description": "Optional. Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data availability. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available).",
      "type": "string",
      "enum": [
        {
          "name": "SqlAvailabilityTypeUnspecified",
          "description": "This is an unknown Availability type.",
          "value": "SQL_AVAILABILITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Zonal",
          "description": "Zonal availablility instance.",
          "value": "ZONAL"
        },
        {
          "name": "Regional",
          "description": "Regional availability instance.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:datamigration/v1:CloudSqlSettingsDataDiskType": {
      "description": "The type of storage: `PD_SSD` (default) or `PD_HDD`.",
      "type": "string",
      "enum": [
        {
          "name": "SqlDataDiskTypeUnspecified",
          "description": "Unspecified.",
          "value": "SQL_DATA_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdSsd",
          "description": "SSD disk.",
          "value": "PD_SSD"
        },
        {
          "name": "PdHdd",
          "description": "HDD disk.",
          "value": "PD_HDD"
        }
      ]
    },
    "google-native:datamigration/v1:CloudSqlSettingsDatabaseVersion": {
      "description": "The database engine type and version.",
      "type": "string",
      "enum": [
        {
          "name": "SqlDatabaseVersionUnspecified",
          "description": "Unspecified version.",
          "value": "SQL_DATABASE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Mysql56",
          "description": "MySQL 5.6.",
          "value": "MYSQL_5_6"
        },
        {
          "name": "Mysql57",
          "description": "MySQL 5.7.",
          "value": "MYSQL_5_7"
        },
        {
          "name": "Mysql80",
          "description": "MySQL 8.0.",
          "value": "MYSQL_8_0"
        },
        {
          "name": "Mysql8018",
          "description": "The database major version is MySQL 8.0 and the minor version is 18.",
          "value": "MYSQL_8_0_18"
        },
        {
          "name": "Mysql8026",
          "description": "The database major version is MySQL 8.0 and the minor version is 26.",
          "value": "MYSQL_8_0_26"
        },
        {
          "name": "Mysql8027",
          "description": "The database major version is MySQL 8.0 and the minor version is 27.",
          "value": "MYSQL_8_0_27"
        },
        {
          "name": "Mysql8028",
          "description": "The database major version is MySQL 8.0 and the minor version is 28.",
          "value": "MYSQL_8_0_28"
        },
        {
          "name": "Mysql8030",
          "description": "The database major version is MySQL 8.0 and the minor version is 30.",
          "value": "MYSQL_8_0_30"
        },
        {
          "name": "Mysql8031",
          "description": "The database major version is MySQL 8.0 and the minor version is 31.",
          "value": "MYSQL_8_0_31"
        },
        {
          "name": "Mysql8032",
          "description": "The database major version is MySQL 8.0 and the minor version is 32.",
          "value": "MYSQL_8_0_32"
        },
        {
          "name": "Mysql8033",
          "description": "The database major version is MySQL 8.0 and the minor version is 33.",
          "value": "MYSQL_8_0_33"
        },
        {
          "name": "Mysql8034",
          "description": "The database major version is MySQL 8.0 and the minor version is 34.",
          "value": "MYSQL_8_0_34"
        },
        {
          "name": "Postgres96",
          "description": "PostgreSQL 9.6.",
          "value": "POSTGRES_9_6"
        },
        {
          "name": "Postgres11",
          "description": "PostgreSQL 11.",
          "value": "POSTGRES_11"
        },
        {
          "name": "Postgres10",
          "description": "PostgreSQL 10.",
          "value": "POSTGRES_10"
        },
        {
          "name": "Postgres12",
          "description": "PostgreSQL 12.",
          "value": "POSTGRES_12"
        },
        {
          "name": "Postgres13",
          "description": "PostgreSQL 13.",
          "value": "POSTGRES_13"
        },
        {
          "name": "Postgres14",
          "description": "PostgreSQL 14.",
          "value": "POSTGRES_14"
        },
        {
          "name": "Postgres15",
          "description": "PostgreSQL 15.",
          "value": "POSTGRES_15"
        }
      ]
    },
    "google-native:datamigration/v1:CloudSqlSettingsEdition": {
      "description": "Optional. The edition of the given Cloud SQL instance.",
      "type": "string",
      "enum": [
        {
          "name": "EditionUnspecified",
          "description": "The instance did not specify the edition.",
          "value": "EDITION_UNSPECIFIED"
        },
        {
          "name": "Enterprise",
          "description": "The instance is an enterprise edition.",
          "value": "ENTERPRISE"
        },
        {
          "name": "EnterprisePlus",
          "description": "The instance is an enterprise plus edition.",
          "value": "ENTERPRISE_PLUS"
        }
      ]
    },
    "google-native:datamigration/v1:CloudSqlSettingsResponse": {
      "description": "Settings for creating a Cloud SQL database instance.",
      "properties": {
        "activationPolicy": {
          "type": "string",
          "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is 'RUNNABLE'. Valid values: 'ALWAYS': The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives."
        },
        "autoStorageIncrease": {
          "type": "boolean",
          "description": "[default: ON] If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity. If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB."
        },
        "availabilityType": {
          "type": "string",
          "description": "Optional. Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data availability. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)."
        },
        "cmekKeyName": {
          "type": "string",
          "description": "The KMS key name used for the csql instance."
        },
        "collation": {
          "type": "string",
          "description": "The Cloud SQL default instance level collation."
        },
        "dataCacheConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DataCacheConfigResponse",
          "description": "Optional. Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "The storage capacity available to the database, in GB. The minimum (and default) size is 10GB."
        },
        "dataDiskType": {
          "type": "string",
          "description": "The type of storage: `PD_SSD` (default) or `PD_HDD`."
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The database flags passed to the Cloud SQL instance at startup. An object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }."
        },
        "databaseVersion": {
          "type": "string",
          "description": "The database engine type and version."
        },
        "edition": {
          "type": "string",
          "description": "Optional. The edition of the given Cloud SQL instance."
        },
        "ipConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SqlIpConfigResponse",
          "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled."
        },
        "rootPassword": {
          "type": "string",
          "description": "Input only. Initial root password."
        },
        "rootPasswordSet": {
          "type": "boolean",
          "description": "Indicates If this connection profile root password is stored."
        },
        "secondaryZone": {
          "type": "string",
          "description": "Optional. The Google Cloud Platform zone where the failover Cloud SQL database instance is located. Used when the Cloud SQL database availability type is REGIONAL (i.e. multiple zones / highly available)."
        },
        "sourceId": {
          "type": "string",
          "description": "The Database Migration Service source connection profile ID, in the format: `projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID`"
        },
        "storageAutoResizeLimit": {
          "type": "string",
          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
        },
        "tier": {
          "type": "string",
          "description": "The tier (or machine type) for this instance, for example: `db-n1-standard-1` (MySQL instances) or `db-custom-1-3840` (PostgreSQL instances). For more information, see [Cloud SQL Instance Settings](https://cloud.google.com/sql/docs/mysql/instance-settings)."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"18kg\", \"count\": \"3\" }`."
        },
        "zone": {
          "type": "string",
          "description": "The Google Cloud Platform zone where your Cloud SQL database instance is located."
        }
      },
      "type": "object",
      "required": [
        "activationPolicy",
        "autoStorageIncrease",
        "availabilityType",
        "cmekKeyName",
        "collation",
        "dataCacheConfig",
        "dataDiskSizeGb",
        "dataDiskType",
        "databaseFlags",
        "databaseVersion",
        "edition",
        "ipConfig",
        "rootPassword",
        "rootPasswordSet",
        "secondaryZone",
        "sourceId",
        "storageAutoResizeLimit",
        "tier",
        "userLabels",
        "zone"
      ]
    },
    "google-native:datamigration/v1:ConditionalColumnSetValue": {
      "description": "Options to configure rule type ConditionalColumnSetValue. The rule is used to transform the data which is being replicated/migrated. The rule filter field can refer to one or more entities. The rule scope can be one of: Column.",
      "properties": {
        "customFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom engine specific features."
        },
        "sourceNumericFilter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceNumericFilter",
          "description": "Optional. Optional filter on source column precision and scale. Used for fixed point numbers such as NUMERIC/NUMBER data types."
        },
        "sourceTextFilter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceTextFilter",
          "description": "Optional. Optional filter on source column length. Used for text based data types like varchar."
        },
        "valueTransformation": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ValueTransformation",
          "description": "Description of data transformation during migration."
        }
      },
      "type": "object",
      "required": [
        "valueTransformation"
      ]
    },
    "google-native:datamigration/v1:ConditionalColumnSetValueResponse": {
      "description": "Options to configure rule type ConditionalColumnSetValue. The rule is used to transform the data which is being replicated/migrated. The rule filter field can refer to one or more entities. The rule scope can be one of: Column.",
      "properties": {
        "customFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom engine specific features."
        },
        "sourceNumericFilter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceNumericFilterResponse",
          "description": "Optional. Optional filter on source column precision and scale. Used for fixed point numbers such as NUMERIC/NUMBER data types."
        },
        "sourceTextFilter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceTextFilterResponse",
          "description": "Optional. Optional filter on source column length. Used for text based data types like varchar."
        },
        "valueTransformation": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ValueTransformationResponse",
          "description": "Description of data transformation during migration."
        }
      },
      "type": "object",
      "required": [
        "customFeatures",
        "sourceNumericFilter",
        "sourceTextFilter",
        "valueTransformation"
      ]
    },
    "google-native:datamigration/v1:ConnectionProfileProvider": {
      "description": "The database provider.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseProviderUnspecified",
          "description": "The database provider is unknown.",
          "value": "DATABASE_PROVIDER_UNSPECIFIED"
        },
        {
          "name": "Cloudsql",
          "description": "CloudSQL runs the database.",
          "value": "CLOUDSQL"
        },
        {
          "name": "Rds",
          "description": "RDS runs the database.",
          "value": "RDS"
        },
        {
          "name": "Aurora",
          "description": "Amazon Aurora.",
          "value": "AURORA"
        },
        {
          "name": "Alloydb",
          "description": "AlloyDB.",
          "value": "ALLOYDB"
        }
      ]
    },
    "google-native:datamigration/v1:ConnectionProfileState": {
      "description": "The current connection profile state (e.g. DRAFT, READY, or FAILED).",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The state of the connection profile is unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Draft",
          "description": "The connection profile is in draft mode and fully editable.",
          "value": "DRAFT"
        },
        {
          "name": "Creating",
          "description": "The connection profile is being created.",
          "value": "CREATING"
        },
        {
          "name": "Ready",
          "description": "The connection profile is ready.",
          "value": "READY"
        },
        {
          "name": "Updating",
          "description": "The connection profile is being updated.",
          "value": "UPDATING"
        },
        {
          "name": "Deleting",
          "description": "The connection profile is being deleted.",
          "value": "DELETING"
        },
        {
          "name": "Deleted",
          "description": "The connection profile has been deleted.",
          "value": "DELETED"
        },
        {
          "name": "Failed",
          "description": "The last action on the connection profile failed.",
          "value": "FAILED"
        }
      ]
    },
    "google-native:datamigration/v1:ConversionWorkspaceInfo": {
      "description": "A conversion workspace's version.",
      "properties": {
        "commitId": {
          "type": "string",
          "description": "The commit ID of the conversion workspace."
        },
        "name": {
          "type": "string",
          "description": "The resource name (URI) of the conversion workspace."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:ConversionWorkspaceInfoResponse": {
      "description": "A conversion workspace's version.",
      "properties": {
        "commitId": {
          "type": "string",
          "description": "The commit ID of the conversion workspace."
        },
        "name": {
          "type": "string",
          "description": "The resource name (URI) of the conversion workspace."
        }
      },
      "type": "object",
      "required": [
        "commitId",
        "name"
      ]
    },
    "google-native:datamigration/v1:ConvertRowIdToColumn": {
      "description": "Options to configure rule type ConvertROWIDToColumn. The rule is used to add column rowid to destination tables based on an Oracle rowid function/property. The rule filter field can refer to one or more entities. The rule scope can be one of: Table. This rule requires additional filter to be specified beyond the basic rule filter field, which is whether or not to work on tables which already have a primary key defined.",
      "properties": {
        "onlyIfNoPrimaryKey": {
          "type": "boolean",
          "description": "Only work on tables without primary key defined"
        }
      },
      "type": "object",
      "required": [
        "onlyIfNoPrimaryKey"
      ]
    },
    "google-native:datamigration/v1:ConvertRowIdToColumnResponse": {
      "description": "Options to configure rule type ConvertROWIDToColumn. The rule is used to add column rowid to destination tables based on an Oracle rowid function/property. The rule filter field can refer to one or more entities. The rule scope can be one of: Table. This rule requires additional filter to be specified beyond the basic rule filter field, which is whether or not to work on tables which already have a primary key defined.",
      "properties": {
        "onlyIfNoPrimaryKey": {
          "type": "boolean",
          "description": "Only work on tables without primary key defined"
        }
      },
      "type": "object",
      "required": [
        "onlyIfNoPrimaryKey"
      ]
    },
    "google-native:datamigration/v1:DataCacheConfig": {
      "description": "Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation.",
      "properties": {
        "dataCacheEnabled": {
          "type": "boolean",
          "description": "Optional. Whether data cache is enabled for the instance."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:DataCacheConfigResponse": {
      "description": "Data cache is an optional feature available for Cloud SQL for MySQL Enterprise Plus edition only. For more information on data cache, see [Data cache overview](https://cloud.google.com/sql/help/mysql-data-cache) in Cloud SQL documentation.",
      "properties": {
        "dataCacheEnabled": {
          "type": "boolean",
          "description": "Optional. Whether data cache is enabled for the instance."
        }
      },
      "type": "object",
      "required": [
        "dataCacheEnabled"
      ]
    },
    "google-native:datamigration/v1:DatabaseEngineInfo": {
      "description": "The type and version of a source or destination database.",
      "properties": {
        "engine": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseEngineInfoEngine",
          "description": "Engine type."
        },
        "version": {
          "type": "string",
          "description": "Engine version, for example \"12.c.1\"."
        }
      },
      "type": "object",
      "required": [
        "engine",
        "version"
      ]
    },
    "google-native:datamigration/v1:DatabaseEngineInfoEngine": {
      "description": "Required. Engine type.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseEngineUnspecified",
          "description": "The source database engine of the migration job is unknown.",
          "value": "DATABASE_ENGINE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "The source engine is MySQL.",
          "value": "MYSQL"
        },
        {
          "name": "Postgresql",
          "description": "The source engine is PostgreSQL.",
          "value": "POSTGRESQL"
        },
        {
          "name": "Oracle",
          "description": "The source engine is Oracle.",
          "value": "ORACLE"
        }
      ]
    },
    "google-native:datamigration/v1:DatabaseEngineInfoResponse": {
      "description": "The type and version of a source or destination database.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "Engine type."
        },
        "version": {
          "type": "string",
          "description": "Engine version, for example \"12.c.1\"."
        }
      },
      "type": "object",
      "required": [
        "engine",
        "version"
      ]
    },
    "google-native:datamigration/v1:DatabaseType": {
      "description": "A message defining the database engine and provider.",
      "properties": {
        "engine": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseTypeEngine",
          "description": "The database engine."
        },
        "provider": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseTypeProvider",
          "description": "The database provider."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:DatabaseTypeEngine": {
      "description": "The database engine.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseEngineUnspecified",
          "description": "The source database engine of the migration job is unknown.",
          "value": "DATABASE_ENGINE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "The source engine is MySQL.",
          "value": "MYSQL"
        },
        {
          "name": "Postgresql",
          "description": "The source engine is PostgreSQL.",
          "value": "POSTGRESQL"
        },
        {
          "name": "Oracle",
          "description": "The source engine is Oracle.",
          "value": "ORACLE"
        }
      ]
    },
    "google-native:datamigration/v1:DatabaseTypeProvider": {
      "description": "The database provider.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseProviderUnspecified",
          "description": "The database provider is unknown.",
          "value": "DATABASE_PROVIDER_UNSPECIFIED"
        },
        {
          "name": "Cloudsql",
          "description": "CloudSQL runs the database.",
          "value": "CLOUDSQL"
        },
        {
          "name": "Rds",
          "description": "RDS runs the database.",
          "value": "RDS"
        },
        {
          "name": "Aurora",
          "description": "Amazon Aurora.",
          "value": "AURORA"
        },
        {
          "name": "Alloydb",
          "description": "AlloyDB.",
          "value": "ALLOYDB"
        }
      ]
    },
    "google-native:datamigration/v1:DatabaseTypeResponse": {
      "description": "A message defining the database engine and provider.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "The database engine."
        },
        "provider": {
          "type": "string",
          "description": "The database provider."
        }
      },
      "type": "object",
      "required": [
        "engine",
        "provider"
      ]
    },
    "google-native:datamigration/v1:DoubleComparisonFilter": {
      "description": "Filter based on relation between source value and compare value of type double in ConditionalColumnSetValue",
      "properties": {
        "value": {
          "type": "number",
          "description": "Double compare value to be used"
        },
        "valueComparison": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DoubleComparisonFilterValueComparison",
          "description": "Relation between source value and compare value"
        }
      },
      "type": "object",
      "required": [
        "value",
        "valueComparison"
      ]
    },
    "google-native:datamigration/v1:DoubleComparisonFilterResponse": {
      "description": "Filter based on relation between source value and compare value of type double in ConditionalColumnSetValue",
      "properties": {
        "value": {
          "type": "number",
          "description": "Double compare value to be used"
        },
        "valueComparison": {
          "type": "string",
          "description": "Relation between source value and compare value"
        }
      },
      "type": "object",
      "required": [
        "value",
        "valueComparison"
      ]
    },
    "google-native:datamigration/v1:DoubleComparisonFilterValueComparison": {
      "description": "Required. Relation between source value and compare value",
      "type": "string",
      "enum": [
        {
          "name": "ValueComparisonUnspecified",
          "description": "Value comparison unspecified.",
          "value": "VALUE_COMPARISON_UNSPECIFIED"
        },
        {
          "name": "ValueComparisonIfValueSmallerThan",
          "description": "Value is smaller than the Compare value.",
          "value": "VALUE_COMPARISON_IF_VALUE_SMALLER_THAN"
        },
        {
          "name": "ValueComparisonIfValueSmallerEqualThan",
          "description": "Value is smaller or equal than the Compare value.",
          "value": "VALUE_COMPARISON_IF_VALUE_SMALLER_EQUAL_THAN"
        },
        {
          "name": "ValueComparisonIfValueLargerThan",
          "description": "Value is larger than the Compare value.",
          "value": "VALUE_COMPARISON_IF_VALUE_LARGER_THAN"
        },
        {
          "name": "ValueComparisonIfValueLargerEqualThan",
          "description": "Value is larger or equal than the Compare value.",
          "value": "VALUE_COMPARISON_IF_VALUE_LARGER_EQUAL_THAN"
        }
      ]
    },
    "google-native:datamigration/v1:DumpFlag": {
      "description": "Dump flag definition.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the flag"
        },
        "value": {
          "type": "string",
          "description": "The value of the flag."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:DumpFlagResponse": {
      "description": "Dump flag definition.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the flag"
        },
        "value": {
          "type": "string",
          "description": "The value of the flag."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:datamigration/v1:DumpFlags": {
      "description": "Dump flags definition.",
      "properties": {
        "dumpFlags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:DumpFlag"
          },
          "description": "The flags for the initial dump."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:DumpFlagsResponse": {
      "description": "Dump flags definition.",
      "properties": {
        "dumpFlags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:DumpFlagResponse"
          },
          "description": "The flags for the initial dump."
        }
      },
      "type": "object",
      "required": [
        "dumpFlags"
      ]
    },
    "google-native:datamigration/v1:Empty": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object"
    },
    "google-native:datamigration/v1:EmptyResponse": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object"
    },
    "google-native:datamigration/v1:EncryptionConfig": {
      "description": "EncryptionConfig describes the encryption config of a cluster that is encrypted with a CMEK (customer-managed encryption key).",
      "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]"
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:EncryptionConfigResponse": {
      "description": "EncryptionConfig describes the encryption config of a cluster that is encrypted with a CMEK (customer-managed encryption key).",
      "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]"
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:datamigration/v1:EntityMove": {
      "description": "Options to configure rule type EntityMove. The rule is used to move an entity to a new schema. The rule filter field can refer to one or more entities. The rule scope can be one of: Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT",
      "properties": {
        "newSchema": {
          "type": "string",
          "description": "The new schema"
        }
      },
      "type": "object",
      "required": [
        "newSchema"
      ]
    },
    "google-native:datamigration/v1:EntityMoveResponse": {
      "description": "Options to configure rule type EntityMove. The rule is used to move an entity to a new schema. The rule filter field can refer to one or more entities. The rule scope can be one of: Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT",
      "properties": {
        "newSchema": {
          "type": "string",
          "description": "The new schema"
        }
      },
      "type": "object",
      "required": [
        "newSchema"
      ]
    },
    "google-native:datamigration/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:datamigration/v1:FilterTableColumns": {
      "description": "Options to configure rule type FilterTableColumns. The rule is used to filter the list of columns to include or exclude from a table. The rule filter field can refer to one entity. The rule scope can be: Table Only one of the two lists can be specified for the rule.",
      "properties": {
        "excludeColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of columns to be excluded for a particular table."
        },
        "includeColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of columns to be included for a particular table."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:FilterTableColumnsResponse": {
      "description": "Options to configure rule type FilterTableColumns. The rule is used to filter the list of columns to include or exclude from a table. The rule filter field can refer to one entity. The rule scope can be: Table Only one of the two lists can be specified for the rule.",
      "properties": {
        "excludeColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of columns to be excluded for a particular table."
        },
        "includeColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of columns to be included for a particular table."
        }
      },
      "type": "object",
      "required": [
        "excludeColumns",
        "includeColumns"
      ]
    },
    "google-native:datamigration/v1:ForwardSshTunnelConnectivity": {
      "description": "Forward SSH Tunnel connectivity.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the SSH tunnel."
        },
        "password": {
          "type": "string",
          "description": "Input only. SSH password."
        },
        "port": {
          "type": "integer",
          "description": "Port for the SSH tunnel, default value is 22."
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. SSH private key."
        },
        "username": {
          "type": "string",
          "description": "Username for the SSH tunnel."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "username"
      ]
    },
    "google-native:datamigration/v1:ForwardSshTunnelConnectivityResponse": {
      "description": "Forward SSH Tunnel connectivity.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the SSH tunnel."
        },
        "password": {
          "type": "string",
          "description": "Input only. SSH password."
        },
        "port": {
          "type": "integer",
          "description": "Port for the SSH tunnel, default value is 22."
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. SSH private key."
        },
        "username": {
          "type": "string",
          "description": "Username for the SSH tunnel."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "password",
        "port",
        "privateKey",
        "username"
      ]
    },
    "google-native:datamigration/v1:IntComparisonFilter": {
      "description": "Filter based on relation between source value and compare value of type integer in ConditionalColumnSetValue",
      "properties": {
        "value": {
          "type": "string",
          "description": "Integer compare value to be used"
        },
        "valueComparison": {
          "$ref": "#/types/google-native:datamigration%2Fv1:IntComparisonFilterValueComparison",
          "description": "Relation between source value and compare value"
        }
      },
      "type": "object",
      "required": [
        "value",
        "valueComparison"
      ]
    },
    "google-native:datamigration/v1:IntComparisonFilterResponse": {
      "description": "Filter based on relation between source value and compare value of type integer in ConditionalColumnSetValue",
      "properties": {
        "value": {
          "type": "string",
          "description": "Integer compare value to be used"
        },
        "valueComparison": {
          "type": "string",
          "description": "Relation between source value and compare value"
        }
      },
      "type": "object",
      "required": [
        "value",
        "valueComparison"
      ]
    },
    "google-native:datamigration/v1:IntComparisonFilterValueComparison": {
      "description": "Required. Relation between source value and compare value",
      "type": "string",
      "enum": [
        {
          "name": "ValueComparisonUnspecified",
          "description": "Value comparison unspecified.",
          "value": "VALUE_COMPARISON_UNSPECIFIED"
        },
        {
          "name": "ValueComparisonIfValueSmallerThan",
          "description": "Value is smaller than the Compare value.",
          "value": "VALUE_COMPARISON_IF_VALUE_SMALLER_THAN"
        },
        {
          "name": "ValueComparisonIfValueSmallerEqualThan",
          "description": "Value is smaller or equal than the Compare value.",
          "value": "VALUE_COMPARISON_IF_VALUE_SMALLER_EQUAL_THAN"
        },
        {
          "name": "ValueComparisonIfValueLargerThan",
          "description": "Value is larger than the Compare value.",
          "value": "VALUE_COMPARISON_IF_VALUE_LARGER_THAN"
        },
        {
          "name": "ValueComparisonIfValueLargerEqualThan",
          "description": "Value is larger or equal than the Compare value.",
          "value": "VALUE_COMPARISON_IF_VALUE_LARGER_EQUAL_THAN"
        }
      ]
    },
    "google-native:datamigration/v1:MachineConfig": {
      "description": "MachineConfig describes the configuration of a machine.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "The number of CPU's in the VM instance."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:MachineConfigResponse": {
      "description": "MachineConfig describes the configuration of a machine.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "The number of CPU's in the VM instance."
        }
      },
      "type": "object",
      "required": [
        "cpuCount"
      ]
    },
    "google-native:datamigration/v1:MappingRuleFilter": {
      "description": "A filter defining the entities that a mapping rule should be applied to. When more than one field is specified, the rule is applied only to entities which match all the fields.",
      "properties": {
        "entities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The rule should be applied to specific entities defined by their fully qualified names."
        },
        "entityNameContains": {
          "type": "string",
          "description": "Optional. The rule should be applied to entities whose non-qualified name contains the given string."
        },
        "entityNamePrefix": {
          "type": "string",
          "description": "Optional. The rule should be applied to entities whose non-qualified name starts with the given prefix."
        },
        "entityNameSuffix": {
          "type": "string",
          "description": "Optional. The rule should be applied to entities whose non-qualified name ends with the given suffix."
        },
        "parentEntity": {
          "type": "string",
          "description": "Optional. The rule should be applied to entities whose parent entity (fully qualified name) matches the given value. For example, if the rule applies to a table entity, the expected value should be a schema (schema). If the rule applies to a column or index entity, the expected value can be either a schema (schema) or a table (schema.table)"
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:MappingRuleFilterResponse": {
      "description": "A filter defining the entities that a mapping rule should be applied to. When more than one field is specified, the rule is applied only to entities which match all the fields.",
      "properties": {
        "entities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The rule should be applied to specific entities defined by their fully qualified names."
        },
        "entityNameContains": {
          "type": "string",
          "description": "Optional. The rule should be applied to entities whose non-qualified name contains the given string."
        },
        "entityNamePrefix": {
          "type": "string",
          "description": "Optional. The rule should be applied to entities whose non-qualified name starts with the given prefix."
        },
        "entityNameSuffix": {
          "type": "string",
          "description": "Optional. The rule should be applied to entities whose non-qualified name ends with the given suffix."
        },
        "parentEntity": {
          "type": "string",
          "description": "Optional. The rule should be applied to entities whose parent entity (fully qualified name) matches the given value. For example, if the rule applies to a table entity, the expected value should be a schema (schema). If the rule applies to a column or index entity, the expected value can be either a schema (schema) or a table (schema.table)"
        }
      },
      "type": "object",
      "required": [
        "entities",
        "entityNameContains",
        "entityNamePrefix",
        "entityNameSuffix",
        "parentEntity"
      ]
    },
    "google-native:datamigration/v1:MappingRuleRuleScope": {
      "description": "Required. The rule scope",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseEntityTypeUnspecified",
          "description": "Unspecified database entity type.",
          "value": "DATABASE_ENTITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "DatabaseEntityTypeSchema",
          "description": "Schema.",
          "value": "DATABASE_ENTITY_TYPE_SCHEMA"
        },
        {
          "name": "DatabaseEntityTypeTable",
          "description": "Table.",
          "value": "DATABASE_ENTITY_TYPE_TABLE"
        },
        {
          "name": "DatabaseEntityTypeColumn",
          "description": "Column.",
          "value": "DATABASE_ENTITY_TYPE_COLUMN"
        },
        {
          "name": "DatabaseEntityTypeConstraint",
          "description": "Constraint.",
          "value": "DATABASE_ENTITY_TYPE_CONSTRAINT"
        },
        {
          "name": "DatabaseEntityTypeIndex",
          "description": "Index.",
          "value": "DATABASE_ENTITY_TYPE_INDEX"
        },
        {
          "name": "DatabaseEntityTypeTrigger",
          "description": "Trigger.",
          "value": "DATABASE_ENTITY_TYPE_TRIGGER"
        },
        {
          "name": "DatabaseEntityTypeView",
          "description": "View.",
          "value": "DATABASE_ENTITY_TYPE_VIEW"
        },
        {
          "name": "DatabaseEntityTypeSequence",
          "description": "Sequence.",
          "value": "DATABASE_ENTITY_TYPE_SEQUENCE"
        },
        {
          "name": "DatabaseEntityTypeStoredProcedure",
          "description": "Stored Procedure.",
          "value": "DATABASE_ENTITY_TYPE_STORED_PROCEDURE"
        },
        {
          "name": "DatabaseEntityTypeFunction",
          "description": "Function.",
          "value": "DATABASE_ENTITY_TYPE_FUNCTION"
        },
        {
          "name": "DatabaseEntityTypeSynonym",
          "description": "Synonym.",
          "value": "DATABASE_ENTITY_TYPE_SYNONYM"
        },
        {
          "name": "DatabaseEntityTypeDatabasePackage",
          "description": "Package.",
          "value": "DATABASE_ENTITY_TYPE_DATABASE_PACKAGE"
        },
        {
          "name": "DatabaseEntityTypeUdt",
          "description": "UDT.",
          "value": "DATABASE_ENTITY_TYPE_UDT"
        },
        {
          "name": "DatabaseEntityTypeMaterializedView",
          "description": "Materialized View.",
          "value": "DATABASE_ENTITY_TYPE_MATERIALIZED_VIEW"
        },
        {
          "name": "DatabaseEntityTypeDatabase",
          "description": "Database.",
          "value": "DATABASE_ENTITY_TYPE_DATABASE"
        }
      ]
    },
    "google-native:datamigration/v1:MappingRuleState": {
      "description": "Optional. The mapping rule state",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The state of the mapping rule is unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "The rule is enabled.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "The rule is disabled.",
          "value": "DISABLED"
        },
        {
          "name": "Deleted",
          "description": "The rule is logically deleted.",
          "value": "DELETED"
        }
      ]
    },
    "google-native:datamigration/v1:MigrationJobState": {
      "description": "The current migration job state.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The state of the migration job is unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Maintenance",
          "description": "The migration job is down for maintenance.",
          "value": "MAINTENANCE"
        },
        {
          "name": "Draft",
          "description": "The migration job is in draft mode and no resources are created.",
          "value": "DRAFT"
        },
        {
          "name": "Creating",
          "description": "The migration job is being created.",
          "value": "CREATING"
        },
        {
          "name": "NotStarted",
          "description": "The migration job is created and not started.",
          "value": "NOT_STARTED"
        },
        {
          "name": "Running",
          "description": "The migration job is running.",
          "value": "RUNNING"
        },
        {
          "name": "Failed",
          "description": "The migration job failed.",
          "value": "FAILED"
        },
        {
          "name": "Completed",
          "description": "The migration job has been completed.",
          "value": "COMPLETED"
        },
        {
          "name": "Deleting",
          "description": "The migration job is being deleted.",
          "value": "DELETING"
        },
        {
          "name": "Stopping",
          "description": "The migration job is being stopped.",
          "value": "STOPPING"
        },
        {
          "name": "Stopped",
          "description": "The migration job is currently stopped.",
          "value": "STOPPED"
        },
        {
          "name": "Deleted",
          "description": "The migration job has been deleted.",
          "value": "DELETED"
        },
        {
          "name": "Updating",
          "description": "The migration job is being updated.",
          "value": "UPDATING"
        },
        {
          "name": "Starting",
          "description": "The migration job is starting.",
          "value": "STARTING"
        },
        {
          "name": "Restarting",
          "description": "The migration job is restarting.",
          "value": "RESTARTING"
        },
        {
          "name": "Resuming",
          "description": "The migration job is resuming.",
          "value": "RESUMING"
        }
      ]
    },
    "google-native:datamigration/v1:MigrationJobType": {
      "description": "Required. The migration job type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type of the migration job is unknown.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "OneTime",
          "description": "The migration job is a one time migration.",
          "value": "ONE_TIME"
        },
        {
          "name": "Continuous",
          "description": "The migration job is a continuous migration.",
          "value": "CONTINUOUS"
        }
      ]
    },
    "google-native:datamigration/v1:MultiColumnDatatypeChange": {
      "description": "Options to configure rule type MultiColumnDatatypeChange. The rule is used to change the data type and associated properties of multiple columns at once. The rule filter field can refer to one or more entities. The rule scope can be one of:Column. This rule requires additional filters to be specified beyond the basic rule filter field, which is the source data type, but the rule supports additional filtering capabilities such as the minimum and maximum field length. All additional filters which are specified are required to be met in order for the rule to be applied (logical AND between the fields).",
      "properties": {
        "customFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom engine specific features."
        },
        "newDataType": {
          "type": "string",
          "description": "New data type."
        },
        "overrideFractionalSecondsPrecision": {
          "type": "integer",
          "description": "Optional. Column fractional seconds precision - used only for timestamp based datatypes - if not specified and relevant uses the source column fractional seconds precision."
        },
        "overrideLength": {
          "type": "string",
          "description": "Optional. Column length - e.g. varchar (50) - if not specified and relevant uses the source column length."
        },
        "overridePrecision": {
          "type": "integer",
          "description": "Optional. Column precision - when relevant - if not specified and relevant uses the source column precision."
        },
        "overrideScale": {
          "type": "integer",
          "description": "Optional. Column scale - when relevant - if not specified and relevant uses the source column scale."
        },
        "sourceDataTypeFilter": {
          "type": "string",
          "description": "Filter on source data type."
        },
        "sourceNumericFilter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceNumericFilter",
          "description": "Optional. Filter for fixed point number data types such as NUMERIC/NUMBER."
        },
        "sourceTextFilter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceTextFilter",
          "description": "Optional. Filter for text-based data types like varchar."
        }
      },
      "type": "object",
      "required": [
        "newDataType",
        "sourceDataTypeFilter"
      ]
    },
    "google-native:datamigration/v1:MultiColumnDatatypeChangeResponse": {
      "description": "Options to configure rule type MultiColumnDatatypeChange. The rule is used to change the data type and associated properties of multiple columns at once. The rule filter field can refer to one or more entities. The rule scope can be one of:Column. This rule requires additional filters to be specified beyond the basic rule filter field, which is the source data type, but the rule supports additional filtering capabilities such as the minimum and maximum field length. All additional filters which are specified are required to be met in order for the rule to be applied (logical AND between the fields).",
      "properties": {
        "customFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom engine specific features."
        },
        "newDataType": {
          "type": "string",
          "description": "New data type."
        },
        "overrideFractionalSecondsPrecision": {
          "type": "integer",
          "description": "Optional. Column fractional seconds precision - used only for timestamp based datatypes - if not specified and relevant uses the source column fractional seconds precision."
        },
        "overrideLength": {
          "type": "string",
          "description": "Optional. Column length - e.g. varchar (50) - if not specified and relevant uses the source column length."
        },
        "overridePrecision": {
          "type": "integer",
          "description": "Optional. Column precision - when relevant - if not specified and relevant uses the source column precision."
        },
        "overrideScale": {
          "type": "integer",
          "description": "Optional. Column scale - when relevant - if not specified and relevant uses the source column scale."
        },
        "sourceDataTypeFilter": {
          "type": "string",
          "description": "Filter on source data type."
        },
        "sourceNumericFilter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceNumericFilterResponse",
          "description": "Optional. Filter for fixed point number data types such as NUMERIC/NUMBER."
        },
        "sourceTextFilter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceTextFilterResponse",
          "description": "Optional. Filter for text-based data types like varchar."
        }
      },
      "type": "object",
      "required": [
        "customFeatures",
        "newDataType",
        "overrideFractionalSecondsPrecision",
        "overrideLength",
        "overridePrecision",
        "overrideScale",
        "sourceDataTypeFilter",
        "sourceNumericFilter",
        "sourceTextFilter"
      ]
    },
    "google-native:datamigration/v1:MultiEntityRename": {
      "description": "Options to configure rule type MultiEntityRename. The rule is used to rename multiple entities. The rule filter field can refer to one or more entities. The rule scope can be one of: Database, Schema, Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT",
      "properties": {
        "newNamePattern": {
          "type": "string",
          "description": "Optional. The pattern used to generate the new entity's name. This pattern must include the characters '{name}', which will be replaced with the name of the original entity. For example, the pattern 't_{name}' for an entity name jobs would be converted to 't_jobs'. If unspecified, the default value for this field is '{name}'"
        },
        "sourceNameTransformation": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MultiEntityRenameSourceNameTransformation",
          "description": "Optional. Additional transformation that can be done on the source entity name before it is being used by the new_name_pattern, for example lower case. If no transformation is desired, use NO_TRANSFORMATION"
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:MultiEntityRenameResponse": {
      "description": "Options to configure rule type MultiEntityRename. The rule is used to rename multiple entities. The rule filter field can refer to one or more entities. The rule scope can be one of: Database, Schema, Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT",
      "properties": {
        "newNamePattern": {
          "type": "string",
          "description": "Optional. The pattern used to generate the new entity's name. This pattern must include the characters '{name}', which will be replaced with the name of the original entity. For example, the pattern 't_{name}' for an entity name jobs would be converted to 't_jobs'. If unspecified, the default value for this field is '{name}'"
        },
        "sourceNameTransformation": {
          "type": "string",
          "description": "Optional. Additional transformation that can be done on the source entity name before it is being used by the new_name_pattern, for example lower case. If no transformation is desired, use NO_TRANSFORMATION"
        }
      },
      "type": "object",
      "required": [
        "newNamePattern",
        "sourceNameTransformation"
      ]
    },
    "google-native:datamigration/v1:MultiEntityRenameSourceNameTransformation": {
      "description": "Optional. Additional transformation that can be done on the source entity name before it is being used by the new_name_pattern, for example lower case. If no transformation is desired, use NO_TRANSFORMATION",
      "type": "string",
      "enum": [
        {
          "name": "EntityNameTransformationUnspecified",
          "description": "Entity name transformation unspecified.",
          "value": "ENTITY_NAME_TRANSFORMATION_UNSPECIFIED"
        },
        {
          "name": "EntityNameTransformationNoTransformation",
          "description": "No transformation.",
          "value": "ENTITY_NAME_TRANSFORMATION_NO_TRANSFORMATION"
        },
        {
          "name": "EntityNameTransformationLowerCase",
          "description": "Transform to lower case.",
          "value": "ENTITY_NAME_TRANSFORMATION_LOWER_CASE"
        },
        {
          "name": "EntityNameTransformationUpperCase",
          "description": "Transform to upper case.",
          "value": "ENTITY_NAME_TRANSFORMATION_UPPER_CASE"
        },
        {
          "name": "EntityNameTransformationCapitalizedCase",
          "description": "Transform to capitalized case.",
          "value": "ENTITY_NAME_TRANSFORMATION_CAPITALIZED_CASE"
        }
      ]
    },
    "google-native:datamigration/v1:MySqlConnectionProfile": {
      "description": "Specifies connection parameters required specifically for MySQL databases.",
      "properties": {
        "cloudSqlId": {
          "type": "string",
          "description": "If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source."
        },
        "host": {
          "type": "string",
          "description": "The IP or hostname of the source MySQL database."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service."
        },
        "port": {
          "type": "integer",
          "description": "The network port of the source MySQL database."
        },
        "ssl": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SslConfig",
          "description": "SSL configuration for the destination to connect to the source database."
        },
        "username": {
          "type": "string",
          "description": "The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service."
        }
      },
      "type": "object",
      "required": [
        "host",
        "password",
        "port",
        "username"
      ]
    },
    "google-native:datamigration/v1:MySqlConnectionProfileResponse": {
      "description": "Specifies connection parameters required specifically for MySQL databases.",
      "properties": {
        "cloudSqlId": {
          "type": "string",
          "description": "If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source."
        },
        "host": {
          "type": "string",
          "description": "The IP or hostname of the source MySQL database."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service."
        },
        "passwordSet": {
          "type": "boolean",
          "description": "Indicates If this connection profile password is stored."
        },
        "port": {
          "type": "integer",
          "description": "The network port of the source MySQL database."
        },
        "ssl": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SslConfigResponse",
          "description": "SSL configuration for the destination to connect to the source database."
        },
        "username": {
          "type": "string",
          "description": "The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service."
        }
      },
      "type": "object",
      "required": [
        "cloudSqlId",
        "host",
        "password",
        "passwordSet",
        "port",
        "ssl",
        "username"
      ]
    },
    "google-native:datamigration/v1:OracleConnectionProfile": {
      "description": "Specifies connection parameters required specifically for Oracle databases.",
      "properties": {
        "databaseService": {
          "type": "string",
          "description": "Database service for the Oracle connection."
        },
        "forwardSshConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ForwardSshTunnelConnectivity",
          "description": "Forward SSH tunnel connectivity."
        },
        "host": {
          "type": "string",
          "description": "The IP or hostname of the source Oracle database."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service."
        },
        "port": {
          "type": "integer",
          "description": "The network port of the source Oracle database."
        },
        "privateConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PrivateConnectivity",
          "description": "Private connectivity."
        },
        "ssl": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SslConfig",
          "description": "SSL configuration for the connection to the source Oracle database. * Only `SERVER_ONLY` configuration is supported for Oracle SSL. * SSL is supported for Oracle versions 12 and above."
        },
        "staticServiceIpConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StaticServiceIpConnectivity",
          "description": "Static Service IP connectivity."
        },
        "username": {
          "type": "string",
          "description": "The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service."
        }
      },
      "type": "object",
      "required": [
        "databaseService",
        "host",
        "password",
        "port",
        "username"
      ]
    },
    "google-native:datamigration/v1:OracleConnectionProfileResponse": {
      "description": "Specifies connection parameters required specifically for Oracle databases.",
      "properties": {
        "databaseService": {
          "type": "string",
          "description": "Database service for the Oracle connection."
        },
        "forwardSshConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ForwardSshTunnelConnectivityResponse",
          "description": "Forward SSH tunnel connectivity."
        },
        "host": {
          "type": "string",
          "description": "The IP or hostname of the source Oracle database."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service."
        },
        "passwordSet": {
          "type": "boolean",
          "description": "Indicates whether a new password is included in the request."
        },
        "port": {
          "type": "integer",
          "description": "The network port of the source Oracle database."
        },
        "privateConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PrivateConnectivityResponse",
          "description": "Private connectivity."
        },
        "ssl": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SslConfigResponse",
          "description": "SSL configuration for the connection to the source Oracle database. * Only `SERVER_ONLY` configuration is supported for Oracle SSL. * SSL is supported for Oracle versions 12 and above."
        },
        "staticServiceIpConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StaticServiceIpConnectivityResponse",
          "description": "Static Service IP connectivity."
        },
        "username": {
          "type": "string",
          "description": "The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service."
        }
      },
      "type": "object",
      "required": [
        "databaseService",
        "forwardSshConnectivity",
        "host",
        "password",
        "passwordSet",
        "port",
        "privateConnectivity",
        "ssl",
        "staticServiceIpConnectivity",
        "username"
      ]
    },
    "google-native:datamigration/v1:PerformanceConfig": {
      "description": "Performance configuration definition.",
      "properties": {
        "dumpParallelLevel": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PerformanceConfigDumpParallelLevel",
          "description": "Initial dump parallelism level."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:PerformanceConfigDumpParallelLevel": {
      "description": "Initial dump parallelism level.",
      "type": "string",
      "enum": [
        {
          "name": "DumpParallelLevelUnspecified",
          "description": "Unknown dump parallel level. Will be defaulted to OPTIMAL.",
          "value": "DUMP_PARALLEL_LEVEL_UNSPECIFIED"
        },
        {
          "name": "Min",
          "description": "Minimal parallel level.",
          "value": "MIN"
        },
        {
          "name": "Optimal",
          "description": "Optimal parallel level.",
          "value": "OPTIMAL"
        },
        {
          "name": "Max",
          "description": "Maximum parallel level.",
          "value": "MAX"
        }
      ]
    },
    "google-native:datamigration/v1:PerformanceConfigResponse": {
      "description": "Performance configuration definition.",
      "properties": {
        "dumpParallelLevel": {
          "type": "string",
          "description": "Initial dump parallelism level."
        }
      },
      "type": "object",
      "required": [
        "dumpParallelLevel"
      ]
    },
    "google-native:datamigration/v1:PostgreSqlConnectionProfile": {
      "description": "Specifies connection parameters required specifically for PostgreSQL databases.",
      "properties": {
        "alloydbClusterId": {
          "type": "string",
          "description": "Optional. If the destination is an AlloyDB database, use this field to provide the AlloyDB cluster ID."
        },
        "cloudSqlId": {
          "type": "string",
          "description": "If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source."
        },
        "host": {
          "type": "string",
          "description": "The IP or hostname of the source PostgreSQL database."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service."
        },
        "port": {
          "type": "integer",
          "description": "The network port of the source PostgreSQL database."
        },
        "privateServiceConnectConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PrivateServiceConnectConnectivity",
          "description": "Private service connect connectivity."
        },
        "ssl": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SslConfig",
          "description": "SSL configuration for the destination to connect to the source database."
        },
        "staticIpConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StaticIpConnectivity",
          "description": "Static ip connectivity data (default, no additional details needed)."
        },
        "username": {
          "type": "string",
          "description": "The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service."
        }
      },
      "type": "object",
      "required": [
        "host",
        "password",
        "port",
        "username"
      ]
    },
    "google-native:datamigration/v1:PostgreSqlConnectionProfileResponse": {
      "description": "Specifies connection parameters required specifically for PostgreSQL databases.",
      "properties": {
        "alloydbClusterId": {
          "type": "string",
          "description": "Optional. If the destination is an AlloyDB database, use this field to provide the AlloyDB cluster ID."
        },
        "cloudSqlId": {
          "type": "string",
          "description": "If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source."
        },
        "host": {
          "type": "string",
          "description": "The IP or hostname of the source PostgreSQL database."
        },
        "networkArchitecture": {
          "type": "string",
          "description": "If the source is a Cloud SQL database, this field indicates the network architecture it's associated with."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service."
        },
        "passwordSet": {
          "type": "boolean",
          "description": "Indicates If this connection profile password is stored."
        },
        "port": {
          "type": "integer",
          "description": "The network port of the source PostgreSQL database."
        },
        "privateServiceConnectConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PrivateServiceConnectConnectivityResponse",
          "description": "Private service connect connectivity."
        },
        "ssl": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SslConfigResponse",
          "description": "SSL configuration for the destination to connect to the source database."
        },
        "staticIpConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StaticIpConnectivityResponse",
          "description": "Static ip connectivity data (default, no additional details needed)."
        },
        "username": {
          "type": "string",
          "description": "The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service."
        }
      },
      "type": "object",
      "required": [
        "alloydbClusterId",
        "cloudSqlId",
        "host",
        "networkArchitecture",
        "password",
        "passwordSet",
        "port",
        "privateServiceConnectConnectivity",
        "ssl",
        "staticIpConnectivity",
        "username"
      ]
    },
    "google-native:datamigration/v1:PrimaryInstanceSettings": {
      "description": "Settings for the cluster's primary instance",
      "properties": {
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Database flags to pass to AlloyDB when DMS is creating the AlloyDB cluster and instances. See the AlloyDB documentation for how these can be used."
        },
        "id": {
          "type": "string",
          "description": "The ID of the AlloyDB primary instance. The ID must satisfy the regex expression \"[a-z0-9-]+\"."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for the AlloyDB primary instance created by DMS. An object containing a list of 'key', 'value' pairs."
        },
        "machineConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MachineConfig",
          "description": "Configuration for the machines that host the underlying database engine."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:datamigration/v1:PrimaryInstanceSettingsResponse": {
      "description": "Settings for the cluster's primary instance",
      "properties": {
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Database flags to pass to AlloyDB when DMS is creating the AlloyDB cluster and instances. See the AlloyDB documentation for how these can be used."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for the AlloyDB primary instance created by DMS. An object containing a list of 'key', 'value' pairs."
        },
        "machineConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MachineConfigResponse",
          "description": "Configuration for the machines that host the underlying database engine."
        },
        "privateIp": {
          "type": "string",
          "description": "The private IP address for the Instance. This is the connection endpoint for an end-user application."
        }
      },
      "type": "object",
      "required": [
        "databaseFlags",
        "labels",
        "machineConfig",
        "privateIp"
      ]
    },
    "google-native:datamigration/v1:PrivateConnectivity": {
      "description": "Private Connectivity.",
      "properties": {
        "privateConnection": {
          "type": "string",
          "description": "The resource name (URI) of the private connection."
        }
      },
      "type": "object",
      "required": [
        "privateConnection"
      ]
    },
    "google-native:datamigration/v1:PrivateConnectivityResponse": {
      "description": "Private Connectivity.",
      "properties": {
        "privateConnection": {
          "type": "string",
          "description": "The resource name (URI) of the private connection."
        }
      },
      "type": "object",
      "required": [
        "privateConnection"
      ]
    },
    "google-native:datamigration/v1:PrivateServiceConnectConnectivity": {
      "description": "[Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments)",
      "properties": {
        "serviceAttachment": {
          "type": "string",
          "description": "A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}"
        }
      },
      "type": "object",
      "required": [
        "serviceAttachment"
      ]
    },
    "google-native:datamigration/v1:PrivateServiceConnectConnectivityResponse": {
      "description": "[Private Service Connect connectivity](https://cloud.google.com/vpc/docs/private-service-connect#service-attachments)",
      "properties": {
        "serviceAttachment": {
          "type": "string",
          "description": "A service attachment that exposes a database, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}"
        }
      },
      "type": "object",
      "required": [
        "serviceAttachment"
      ]
    },
    "google-native:datamigration/v1:ReverseSshConnectivity": {
      "description": "The details needed to configure a reverse SSH tunnel between the source and destination databases. These details will be used when calling the generateSshScript method (see https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.migrationJobs/generateSshScript) to produce the script that will help set up the reverse SSH tunnel, and to set up the VPC peering between the Cloud SQL private network and the VPC.",
      "properties": {
        "vm": {
          "type": "string",
          "description": "The name of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vmIp": {
          "type": "string",
          "description": "The IP of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vmPort": {
          "type": "integer",
          "description": "The forwarding port of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vpc": {
          "type": "string",
          "description": "The name of the VPC to peer with the Cloud SQL private network."
        }
      },
      "type": "object",
      "required": [
        "vmIp",
        "vmPort"
      ]
    },
    "google-native:datamigration/v1:ReverseSshConnectivityResponse": {
      "description": "The details needed to configure a reverse SSH tunnel between the source and destination databases. These details will be used when calling the generateSshScript method (see https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.migrationJobs/generateSshScript) to produce the script that will help set up the reverse SSH tunnel, and to set up the VPC peering between the Cloud SQL private network and the VPC.",
      "properties": {
        "vm": {
          "type": "string",
          "description": "The name of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vmIp": {
          "type": "string",
          "description": "The IP of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vmPort": {
          "type": "integer",
          "description": "The forwarding port of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vpc": {
          "type": "string",
          "description": "The name of the VPC to peer with the Cloud SQL private network."
        }
      },
      "type": "object",
      "required": [
        "vm",
        "vmIp",
        "vmPort",
        "vpc"
      ]
    },
    "google-native:datamigration/v1:RoundToScale": {
      "description": "This allows the data to change scale, for example if the source is 2 digits after the decimal point, specify round to scale value = 2. If for example the value needs to be converted to an integer, use round to scale value = 0.",
      "properties": {
        "scale": {
          "type": "integer",
          "description": "Scale value to be used"
        }
      },
      "type": "object",
      "required": [
        "scale"
      ]
    },
    "google-native:datamigration/v1:RoundToScaleResponse": {
      "description": "This allows the data to change scale, for example if the source is 2 digits after the decimal point, specify round to scale value = 2. If for example the value needs to be converted to an integer, use round to scale value = 0.",
      "properties": {
        "scale": {
          "type": "integer",
          "description": "Scale value to be used"
        }
      },
      "type": "object",
      "required": [
        "scale"
      ]
    },
    "google-native:datamigration/v1:SetTablePrimaryKey": {
      "description": "Options to configure rule type SetTablePrimaryKey. The rule is used to specify the columns and name to configure/alter the primary key of a table. The rule filter field can refer to one entity. The rule scope can be one of: Table.",
      "properties": {
        "primaryKey": {
          "type": "string",
          "description": "Optional. Name for the primary key"
        },
        "primaryKeyColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of column names for the primary key"
        }
      },
      "type": "object",
      "required": [
        "primaryKeyColumns"
      ]
    },
    "google-native:datamigration/v1:SetTablePrimaryKeyResponse": {
      "description": "Options to configure rule type SetTablePrimaryKey. The rule is used to specify the columns and name to configure/alter the primary key of a table. The rule filter field can refer to one entity. The rule scope can be one of: Table.",
      "properties": {
        "primaryKey": {
          "type": "string",
          "description": "Optional. Name for the primary key"
        },
        "primaryKeyColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of column names for the primary key"
        }
      },
      "type": "object",
      "required": [
        "primaryKey",
        "primaryKeyColumns"
      ]
    },
    "google-native:datamigration/v1:SingleColumnChange": {
      "description": "Options to configure rule type SingleColumnChange. The rule is used to change the properties of a column. The rule filter field can refer to one entity. The rule scope can be one of: Column. When using this rule, if a field is not specified than the destination column's configuration will be the same as the one in the source column..",
      "properties": {
        "array": {
          "type": "boolean",
          "description": "Optional. Is the column of array type."
        },
        "arrayLength": {
          "type": "integer",
          "description": "Optional. The length of the array, only relevant if the column type is an array."
        },
        "autoGenerated": {
          "type": "boolean",
          "description": "Optional. Is the column auto-generated/identity."
        },
        "charset": {
          "type": "string",
          "description": "Optional. Charset override - instead of table level charset."
        },
        "collation": {
          "type": "string",
          "description": "Optional. Collation override - instead of table level collation."
        },
        "comment": {
          "type": "string",
          "description": "Optional. Comment associated with the column."
        },
        "customFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom engine specific features."
        },
        "dataType": {
          "type": "string",
          "description": "Optional. Column data type name."
        },
        "fractionalSecondsPrecision": {
          "type": "integer",
          "description": "Optional. Column fractional seconds precision - e.g. 2 as in timestamp (2) - when relevant."
        },
        "length": {
          "type": "string",
          "description": "Optional. Column length - e.g. 50 as in varchar (50) - when relevant."
        },
        "nullable": {
          "type": "boolean",
          "description": "Optional. Is the column nullable."
        },
        "precision": {
          "type": "integer",
          "description": "Optional. Column precision - e.g. 8 as in double (8,2) - when relevant."
        },
        "scale": {
          "type": "integer",
          "description": "Optional. Column scale - e.g. 2 as in double (8,2) - when relevant."
        },
        "setValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Specifies the list of values allowed in the column."
        },
        "udt": {
          "type": "boolean",
          "description": "Optional. Is the column a UDT (User-defined Type)."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:SingleColumnChangeResponse": {
      "description": "Options to configure rule type SingleColumnChange. The rule is used to change the properties of a column. The rule filter field can refer to one entity. The rule scope can be one of: Column. When using this rule, if a field is not specified than the destination column's configuration will be the same as the one in the source column..",
      "properties": {
        "array": {
          "type": "boolean",
          "description": "Optional. Is the column of array type."
        },
        "arrayLength": {
          "type": "integer",
          "description": "Optional. The length of the array, only relevant if the column type is an array."
        },
        "autoGenerated": {
          "type": "boolean",
          "description": "Optional. Is the column auto-generated/identity."
        },
        "charset": {
          "type": "string",
          "description": "Optional. Charset override - instead of table level charset."
        },
        "collation": {
          "type": "string",
          "description": "Optional. Collation override - instead of table level collation."
        },
        "comment": {
          "type": "string",
          "description": "Optional. Comment associated with the column."
        },
        "customFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom engine specific features."
        },
        "dataType": {
          "type": "string",
          "description": "Optional. Column data type name."
        },
        "fractionalSecondsPrecision": {
          "type": "integer",
          "description": "Optional. Column fractional seconds precision - e.g. 2 as in timestamp (2) - when relevant."
        },
        "length": {
          "type": "string",
          "description": "Optional. Column length - e.g. 50 as in varchar (50) - when relevant."
        },
        "nullable": {
          "type": "boolean",
          "description": "Optional. Is the column nullable."
        },
        "precision": {
          "type": "integer",
          "description": "Optional. Column precision - e.g. 8 as in double (8,2) - when relevant."
        },
        "scale": {
          "type": "integer",
          "description": "Optional. Column scale - e.g. 2 as in double (8,2) - when relevant."
        },
        "setValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Specifies the list of values allowed in the column."
        },
        "udt": {
          "type": "boolean",
          "description": "Optional. Is the column a UDT (User-defined Type)."
        }
      },
      "type": "object",
      "required": [
        "array",
        "arrayLength",
        "autoGenerated",
        "charset",
        "collation",
        "comment",
        "customFeatures",
        "dataType",
        "fractionalSecondsPrecision",
        "length",
        "nullable",
        "precision",
        "scale",
        "setValues",
        "udt"
      ]
    },
    "google-native:datamigration/v1:SingleEntityRename": {
      "description": "Options to configure rule type SingleEntityRename. The rule is used to rename an entity. The rule filter field can refer to only one entity. The rule scope can be one of: Database, Schema, Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT, Synonym",
      "properties": {
        "newName": {
          "type": "string",
          "description": "The new name of the destination entity"
        }
      },
      "type": "object",
      "required": [
        "newName"
      ]
    },
    "google-native:datamigration/v1:SingleEntityRenameResponse": {
      "description": "Options to configure rule type SingleEntityRename. The rule is used to rename an entity. The rule filter field can refer to only one entity. The rule scope can be one of: Database, Schema, Table, Column, Constraint, Index, View, Function, Stored Procedure, Materialized View, Sequence, UDT, Synonym",
      "properties": {
        "newName": {
          "type": "string",
          "description": "The new name of the destination entity"
        }
      },
      "type": "object",
      "required": [
        "newName"
      ]
    },
    "google-native:datamigration/v1:SinglePackageChange": {
      "description": "Options to configure rule type SinglePackageChange. The rule is used to alter the sql code for a package entities. The rule filter field can refer to one entity. The rule scope can be: Package",
      "properties": {
        "packageBody": {
          "type": "string",
          "description": "Optional. Sql code for package body"
        },
        "packageDescription": {
          "type": "string",
          "description": "Optional. Sql code for package description"
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:SinglePackageChangeResponse": {
      "description": "Options to configure rule type SinglePackageChange. The rule is used to alter the sql code for a package entities. The rule filter field can refer to one entity. The rule scope can be: Package",
      "properties": {
        "packageBody": {
          "type": "string",
          "description": "Optional. Sql code for package body"
        },
        "packageDescription": {
          "type": "string",
          "description": "Optional. Sql code for package description"
        }
      },
      "type": "object",
      "required": [
        "packageBody",
        "packageDescription"
      ]
    },
    "google-native:datamigration/v1:SourceNumericFilter": {
      "description": "Filter for fixed point number data types such as NUMERIC/NUMBER",
      "properties": {
        "numericFilterOption": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceNumericFilterNumericFilterOption",
          "description": "Enum to set the option defining the datatypes numeric filter has to be applied to"
        },
        "sourceMaxPrecisionFilter": {
          "type": "integer",
          "description": "Optional. The filter will match columns with precision smaller than or equal to this number."
        },
        "sourceMaxScaleFilter": {
          "type": "integer",
          "description": "Optional. The filter will match columns with scale smaller than or equal to this number."
        },
        "sourceMinPrecisionFilter": {
          "type": "integer",
          "description": "Optional. The filter will match columns with precision greater than or equal to this number."
        },
        "sourceMinScaleFilter": {
          "type": "integer",
          "description": "Optional. The filter will match columns with scale greater than or equal to this number."
        }
      },
      "type": "object",
      "required": [
        "numericFilterOption"
      ]
    },
    "google-native:datamigration/v1:SourceNumericFilterNumericFilterOption": {
      "description": "Required. Enum to set the option defining the datatypes numeric filter has to be applied to",
      "type": "string",
      "enum": [
        {
          "name": "NumericFilterOptionUnspecified",
          "description": "Numeric filter option unspecified",
          "value": "NUMERIC_FILTER_OPTION_UNSPECIFIED"
        },
        {
          "name": "NumericFilterOptionAll",
          "description": "Numeric filter option that matches all numeric columns.",
          "value": "NUMERIC_FILTER_OPTION_ALL"
        },
        {
          "name": "NumericFilterOptionLimit",
          "description": "Numeric filter option that matches columns having numeric datatypes with specified precision and scale within the limited range of filter.",
          "value": "NUMERIC_FILTER_OPTION_LIMIT"
        },
        {
          "name": "NumericFilterOptionLimitless",
          "description": "Numeric filter option that matches only the numeric columns with no precision and scale specified.",
          "value": "NUMERIC_FILTER_OPTION_LIMITLESS"
        }
      ]
    },
    "google-native:datamigration/v1:SourceNumericFilterResponse": {
      "description": "Filter for fixed point number data types such as NUMERIC/NUMBER",
      "properties": {
        "numericFilterOption": {
          "type": "string",
          "description": "Enum to set the option defining the datatypes numeric filter has to be applied to"
        },
        "sourceMaxPrecisionFilter": {
          "type": "integer",
          "description": "Optional. The filter will match columns with precision smaller than or equal to this number."
        },
        "sourceMaxScaleFilter": {
          "type": "integer",
          "description": "Optional. The filter will match columns with scale smaller than or equal to this number."
        },
        "sourceMinPrecisionFilter": {
          "type": "integer",
          "description": "Optional. The filter will match columns with precision greater than or equal to this number."
        },
        "sourceMinScaleFilter": {
          "type": "integer",
          "description": "Optional. The filter will match columns with scale greater than or equal to this number."
        }
      },
      "type": "object",
      "required": [
        "numericFilterOption",
        "sourceMaxPrecisionFilter",
        "sourceMaxScaleFilter",
        "sourceMinPrecisionFilter",
        "sourceMinScaleFilter"
      ]
    },
    "google-native:datamigration/v1:SourceSqlChange": {
      "description": "Options to configure rule type SourceSqlChange. The rule is used to alter the sql code for database entities. The rule filter field can refer to one entity. The rule scope can be: StoredProcedure, Function, Trigger, View",
      "properties": {
        "sqlCode": {
          "type": "string",
          "description": "Sql code for source (stored procedure, function, trigger or view)"
        }
      },
      "type": "object",
      "required": [
        "sqlCode"
      ]
    },
    "google-native:datamigration/v1:SourceSqlChangeResponse": {
      "description": "Options to configure rule type SourceSqlChange. The rule is used to alter the sql code for database entities. The rule filter field can refer to one entity. The rule scope can be: StoredProcedure, Function, Trigger, View",
      "properties": {
        "sqlCode": {
          "type": "string",
          "description": "Sql code for source (stored procedure, function, trigger or view)"
        }
      },
      "type": "object",
      "required": [
        "sqlCode"
      ]
    },
    "google-native:datamigration/v1:SourceTextFilter": {
      "description": "Filter for text-based data types like varchar.",
      "properties": {
        "sourceMaxLengthFilter": {
          "type": "string",
          "description": "Optional. The filter will match columns with length smaller than or equal to this number."
        },
        "sourceMinLengthFilter": {
          "type": "string",
          "description": "Optional. The filter will match columns with length greater than or equal to this number."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:SourceTextFilterResponse": {
      "description": "Filter for text-based data types like varchar.",
      "properties": {
        "sourceMaxLengthFilter": {
          "type": "string",
          "description": "Optional. The filter will match columns with length smaller than or equal to this number."
        },
        "sourceMinLengthFilter": {
          "type": "string",
          "description": "Optional. The filter will match columns with length greater than or equal to this number."
        }
      },
      "type": "object",
      "required": [
        "sourceMaxLengthFilter",
        "sourceMinLengthFilter"
      ]
    },
    "google-native:datamigration/v1:SqlAclEntry": {
      "description": "An entry for an Access Control list.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example: `2012-11-15T16:19:00.094Z`."
        },
        "label": {
          "type": "string",
          "description": "A label to identify this entry."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The time-to-leave of this access control entry."
        },
        "value": {
          "type": "string",
          "description": "The allowlisted value for the access control list."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:SqlAclEntryResponse": {
      "description": "An entry for an Access Control list.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example: `2012-11-15T16:19:00.094Z`."
        },
        "label": {
          "type": "string",
          "description": "A label to identify this entry."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The time-to-leave of this access control entry."
        },
        "value": {
          "type": "string",
          "description": "The allowlisted value for the access control list."
        }
      },
      "type": "object",
      "required": [
        "expireTime",
        "label",
        "ttl",
        "value"
      ]
    },
    "google-native:datamigration/v1:SqlIpConfig": {
      "description": "IP Management configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "Optional. The name of the allocated IP address range for the private IP Cloud SQL instance. This name refers to an already allocated IP range address. If set, the instance IP address will be created in the allocated range. Note that this IP address range can't be modified after the instance is created. If you change the VPC when configuring connectivity settings for the migration job, this field is not relevant."
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:SqlAclEntry"
          },
          "description": "The list of external networks that are allowed to connect to the instance using the IP. See https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation, also known as 'slash' notation (e.g. `192.168.100.0/24`)."
        },
        "enableIpv4": {
          "type": "boolean",
          "description": "Whether the instance should be assigned an IPv4 address or not."
        },
        "privateNetwork": {
          "type": "string",
          "description": "The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set."
        },
        "requireSsl": {
          "type": "boolean",
          "description": "Whether SSL connections over IP should be enforced or not."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:SqlIpConfigResponse": {
      "description": "IP Management configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "Optional. The name of the allocated IP address range for the private IP Cloud SQL instance. This name refers to an already allocated IP range address. If set, the instance IP address will be created in the allocated range. Note that this IP address range can't be modified after the instance is created. If you change the VPC when configuring connectivity settings for the migration job, this field is not relevant."
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:SqlAclEntryResponse"
          },
          "description": "The list of external networks that are allowed to connect to the instance using the IP. See https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation, also known as 'slash' notation (e.g. `192.168.100.0/24`)."
        },
        "enableIpv4": {
          "type": "boolean",
          "description": "Whether the instance should be assigned an IPv4 address or not."
        },
        "privateNetwork": {
          "type": "string",
          "description": "The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set."
        },
        "requireSsl": {
          "type": "boolean",
          "description": "Whether SSL connections over IP should be enforced or not."
        }
      },
      "type": "object",
      "required": [
        "allocatedIpRange",
        "authorizedNetworks",
        "enableIpv4",
        "privateNetwork",
        "requireSsl"
      ]
    },
    "google-native:datamigration/v1:SslConfig": {
      "description": "SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. The x509 PEM-encoded certificate of the CA that signed the source database server's certificate. The replica will use this certificate to verify it's connecting to the right host."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Input only. The x509 PEM-encoded certificate that will be used by the replica to authenticate against the source database server.If this field is used then the 'client_key' field is mandatory."
        },
        "clientKey": {
          "type": "string",
          "description": "Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' field is mandatory."
        }
      },
      "type": "object",
      "required": [
        "caCertificate"
      ]
    },
    "google-native:datamigration/v1:SslConfigResponse": {
      "description": "SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. The x509 PEM-encoded certificate of the CA that signed the source database server's certificate. The replica will use this certificate to verify it's connecting to the right host."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Input only. The x509 PEM-encoded certificate that will be used by the replica to authenticate against the source database server.If this field is used then the 'client_key' field is mandatory."
        },
        "clientKey": {
          "type": "string",
          "description": "Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' field is mandatory."
        },
        "type": {
          "type": "string",
          "description": "The ssl config type according to 'client_key', 'client_certificate' and 'ca_certificate'."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "clientCertificate",
        "clientKey",
        "type"
      ]
    },
    "google-native:datamigration/v1:StaticIpConnectivity": {
      "description": "The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required.",
      "type": "object"
    },
    "google-native:datamigration/v1:StaticIpConnectivityResponse": {
      "description": "The source database will allow incoming connections from the public IP of the destination database. You can retrieve the public IP of the Cloud SQL instance from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required.",
      "type": "object"
    },
    "google-native:datamigration/v1:StaticServiceIpConnectivity": {
      "description": "Static IP address connectivity configured on service project.",
      "type": "object"
    },
    "google-native:datamigration/v1:StaticServiceIpConnectivityResponse": {
      "description": "Static IP address connectivity configured on service project.",
      "type": "object"
    },
    "google-native:datamigration/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:datamigration/v1:UserPassword": {
      "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The initial password for the user."
        },
        "user": {
          "type": "string",
          "description": "The database username."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:UserPasswordResponse": {
      "description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The initial password for the user."
        },
        "passwordSet": {
          "type": "boolean",
          "description": "Indicates if the initial_user.password field has been set."
        },
        "user": {
          "type": "string",
          "description": "The database username."
        }
      },
      "type": "object",
      "required": [
        "password",
        "passwordSet",
        "user"
      ]
    },
    "google-native:datamigration/v1:ValueListFilter": {
      "description": "A list of values to filter by in ConditionalColumnSetValue",
      "properties": {
        "ignoreCase": {
          "type": "boolean",
          "description": "Whether to ignore case when filtering by values. Defaults to false"
        },
        "valuePresentList": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ValueListFilterValuePresentList",
          "description": "Indicates whether the filter matches rows with values that are present in the list or those with values not present in it."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list to be used to filter by"
        }
      },
      "type": "object",
      "required": [
        "ignoreCase",
        "valuePresentList",
        "values"
      ]
    },
    "google-native:datamigration/v1:ValueListFilterResponse": {
      "description": "A list of values to filter by in ConditionalColumnSetValue",
      "properties": {
        "ignoreCase": {
          "type": "boolean",
          "description": "Whether to ignore case when filtering by values. Defaults to false"
        },
        "valuePresentList": {
          "type": "string",
          "description": "Indicates whether the filter matches rows with values that are present in the list or those with values not present in it."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list to be used to filter by"
        }
      },
      "type": "object",
      "required": [
        "ignoreCase",
        "valuePresentList",
        "values"
      ]
    },
    "google-native:datamigration/v1:ValueListFilterValuePresentList": {
      "description": "Required. Indicates whether the filter matches rows with values that are present in the list or those with values not present in it.",
      "type": "string",
      "enum": [
        {
          "name": "ValuePresentInListUnspecified",
          "description": "Value present in list unspecified",
          "value": "VALUE_PRESENT_IN_LIST_UNSPECIFIED"
        },
        {
          "name": "ValuePresentInListIfValueList",
          "description": "If the source value is in the supplied list at value_list",
          "value": "VALUE_PRESENT_IN_LIST_IF_VALUE_LIST"
        },
        {
          "name": "ValuePresentInListIfValueNotList",
          "description": "If the source value is not in the supplied list at value_list",
          "value": "VALUE_PRESENT_IN_LIST_IF_VALUE_NOT_LIST"
        }
      ]
    },
    "google-native:datamigration/v1:ValueTransformation": {
      "description": "Description of data transformation during migration as part of the ConditionalColumnSetValue.",
      "properties": {
        "applyHash": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ApplyHash",
          "description": "Optional. Applies a hash function on the data"
        },
        "assignMaxValue": {
          "$ref": "#/types/google-native:datamigration%2Fv1:Empty",
          "description": "Optional. Set to max_value - if integer or numeric, will use int.maxvalue, etc"
        },
        "assignMinValue": {
          "$ref": "#/types/google-native:datamigration%2Fv1:Empty",
          "description": "Optional. Set to min_value - if integer or numeric, will use int.minvalue, etc"
        },
        "assignNull": {
          "$ref": "#/types/google-native:datamigration%2Fv1:Empty",
          "description": "Optional. Set to null"
        },
        "assignSpecificValue": {
          "$ref": "#/types/google-native:datamigration%2Fv1:AssignSpecificValue",
          "description": "Optional. Set to a specific value (value is converted to fit the target data type)"
        },
        "doubleComparison": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DoubleComparisonFilter",
          "description": "Optional. Filter on relation between source value and compare value of type double."
        },
        "intComparison": {
          "$ref": "#/types/google-native:datamigration%2Fv1:IntComparisonFilter",
          "description": "Optional. Filter on relation between source value and compare value of type integer."
        },
        "isNull": {
          "$ref": "#/types/google-native:datamigration%2Fv1:Empty",
          "description": "Optional. Value is null"
        },
        "roundScale": {
          "$ref": "#/types/google-native:datamigration%2Fv1:RoundToScale",
          "description": "Optional. Allows the data to change scale"
        },
        "valueList": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ValueListFilter",
          "description": "Optional. Value is found in the specified list."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:ValueTransformationResponse": {
      "description": "Description of data transformation during migration as part of the ConditionalColumnSetValue.",
      "properties": {
        "applyHash": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ApplyHashResponse",
          "description": "Optional. Applies a hash function on the data"
        },
        "assignMaxValue": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EmptyResponse",
          "description": "Optional. Set to max_value - if integer or numeric, will use int.maxvalue, etc"
        },
        "assignMinValue": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EmptyResponse",
          "description": "Optional. Set to min_value - if integer or numeric, will use int.minvalue, etc"
        },
        "assignNull": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EmptyResponse",
          "description": "Optional. Set to null"
        },
        "assignSpecificValue": {
          "$ref": "#/types/google-native:datamigration%2Fv1:AssignSpecificValueResponse",
          "description": "Optional. Set to a specific value (value is converted to fit the target data type)"
        },
        "doubleComparison": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DoubleComparisonFilterResponse",
          "description": "Optional. Filter on relation between source value and compare value of type double."
        },
        "intComparison": {
          "$ref": "#/types/google-native:datamigration%2Fv1:IntComparisonFilterResponse",
          "description": "Optional. Filter on relation between source value and compare value of type integer."
        },
        "isNull": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EmptyResponse",
          "description": "Optional. Value is null"
        },
        "roundScale": {
          "$ref": "#/types/google-native:datamigration%2Fv1:RoundToScaleResponse",
          "description": "Optional. Allows the data to change scale"
        },
        "valueList": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ValueListFilterResponse",
          "description": "Optional. Value is found in the specified list."
        }
      },
      "type": "object",
      "required": [
        "applyHash",
        "assignMaxValue",
        "assignMinValue",
        "assignNull",
        "assignSpecificValue",
        "doubleComparison",
        "intComparison",
        "isNull",
        "roundScale",
        "valueList"
      ]
    },
    "google-native:datamigration/v1:VpcPeeringConfig": {
      "description": "The VPC peering configuration is used to create VPC peering with the consumer's VPC.",
      "properties": {
        "subnet": {
          "type": "string",
          "description": "A free subnet for peering. (CIDR of /29)"
        },
        "vpcName": {
          "type": "string",
          "description": "Fully qualified name of the VPC that Database Migration Service will peer to."
        }
      },
      "type": "object",
      "required": [
        "subnet",
        "vpcName"
      ]
    },
    "google-native:datamigration/v1:VpcPeeringConfigResponse": {
      "description": "The VPC peering configuration is used to create VPC peering with the consumer's VPC.",
      "properties": {
        "subnet": {
          "type": "string",
          "description": "A free subnet for peering. (CIDR of /29)"
        },
        "vpcName": {
          "type": "string",
          "description": "Fully qualified name of the VPC that Database Migration Service will peer to."
        }
      },
      "type": "object",
      "required": [
        "subnet",
        "vpcName"
      ]
    },
    "google-native:datamigration/v1:VpcPeeringConnectivity": {
      "description": "The details of the VPC where the source database is located in Google Cloud. We will use this information to set up the VPC peering connection between Cloud SQL and this VPC.",
      "properties": {
        "vpc": {
          "type": "string",
          "description": "The name of the VPC network to peer with the Cloud SQL private network."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1:VpcPeeringConnectivityResponse": {
      "description": "The details of the VPC where the source database is located in Google Cloud. We will use this information to set up the VPC peering connection between Cloud SQL and this VPC.",
      "properties": {
        "vpc": {
          "type": "string",
          "description": "The name of the VPC network to peer with the Cloud SQL private network."
        }
      },
      "type": "object",
      "required": [
        "vpc"
      ]
    },
    "google-native:datamigration/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:datamigration/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:datamigration/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:datamigration/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:datamigration/v1beta1:CloudSqlConnectionProfile": {
      "description": "Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance.",
      "properties": {
        "settings": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:CloudSqlSettings",
          "description": "Immutable. Metadata used to create the destination Cloud SQL database."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:CloudSqlConnectionProfileResponse": {
      "description": "Specifies required connection parameters, and, optionally, the parameters required to create a Cloud SQL destination database instance.",
      "properties": {
        "cloudSqlId": {
          "type": "string",
          "description": "The Cloud SQL instance ID that this connection profile is associated with."
        },
        "privateIp": {
          "type": "string",
          "description": "The Cloud SQL database instance's private IP."
        },
        "publicIp": {
          "type": "string",
          "description": "The Cloud SQL database instance's public IP."
        },
        "settings": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:CloudSqlSettingsResponse",
          "description": "Immutable. Metadata used to create the destination Cloud SQL database."
        }
      },
      "type": "object",
      "required": [
        "cloudSqlId",
        "privateIp",
        "publicIp",
        "settings"
      ]
    },
    "google-native:datamigration/v1beta1:CloudSqlSettings": {
      "description": "Settings for creating a Cloud SQL database instance.",
      "properties": {
        "activationPolicy": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:CloudSqlSettingsActivationPolicy",
          "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is 'RUNNABLE'. Valid values: 'ALWAYS': The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives."
        },
        "autoStorageIncrease": {
          "type": "boolean",
          "description": "[default: ON] If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity. If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "The storage capacity available to the database, in GB. The minimum (and default) size is 10GB."
        },
        "dataDiskType": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:CloudSqlSettingsDataDiskType",
          "description": "The type of storage: `PD_SSD` (default) or `PD_HDD`."
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The database flags passed to the Cloud SQL instance at startup. An object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }."
        },
        "databaseVersion": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:CloudSqlSettingsDatabaseVersion",
          "description": "The database engine type and version."
        },
        "ipConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:SqlIpConfig",
          "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled."
        },
        "rootPassword": {
          "type": "string",
          "description": "Input only. Initial root password."
        },
        "sourceId": {
          "type": "string",
          "description": "The Database Migration Service source connection profile ID, in the format: `projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID`"
        },
        "storageAutoResizeLimit": {
          "type": "string",
          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
        },
        "tier": {
          "type": "string",
          "description": "The tier (or machine type) for this instance, for example: `db-n1-standard-1` (MySQL instances). For more information, see [Cloud SQL Instance Settings](https://cloud.google.com/sql/docs/mysql/instance-settings)."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"18kg\", \"count\": \"3\" }`."
        },
        "zone": {
          "type": "string",
          "description": "The Google Cloud Platform zone where your Cloud SQL database instance is located."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:CloudSqlSettingsActivationPolicy": {
      "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is 'RUNNABLE'. Valid values: 'ALWAYS': The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives.",
      "type": "string",
      "enum": [
        {
          "name": "SqlActivationPolicyUnspecified",
          "description": "unspecified policy.",
          "value": "SQL_ACTIVATION_POLICY_UNSPECIFIED"
        },
        {
          "name": "Always",
          "description": "The instance is always up and running.",
          "value": "ALWAYS"
        },
        {
          "name": "Never",
          "description": "The instance should never spin up.",
          "value": "NEVER"
        }
      ]
    },
    "google-native:datamigration/v1beta1:CloudSqlSettingsDataDiskType": {
      "description": "The type of storage: `PD_SSD` (default) or `PD_HDD`.",
      "type": "string",
      "enum": [
        {
          "name": "SqlDataDiskTypeUnspecified",
          "description": "Unspecified.",
          "value": "SQL_DATA_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdSsd",
          "description": "SSD disk.",
          "value": "PD_SSD"
        },
        {
          "name": "PdHdd",
          "description": "HDD disk.",
          "value": "PD_HDD"
        }
      ]
    },
    "google-native:datamigration/v1beta1:CloudSqlSettingsDatabaseVersion": {
      "description": "The database engine type and version.",
      "type": "string",
      "enum": [
        {
          "name": "SqlDatabaseVersionUnspecified",
          "description": "Unspecified version.",
          "value": "SQL_DATABASE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Mysql56",
          "description": "MySQL 5.6.",
          "value": "MYSQL_5_6"
        },
        {
          "name": "Mysql57",
          "description": "MySQL 5.7.",
          "value": "MYSQL_5_7"
        },
        {
          "name": "Mysql80",
          "description": "MySQL 8.0.",
          "value": "MYSQL_8_0"
        }
      ]
    },
    "google-native:datamigration/v1beta1:CloudSqlSettingsResponse": {
      "description": "Settings for creating a Cloud SQL database instance.",
      "properties": {
        "activationPolicy": {
          "type": "string",
          "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is 'RUNNABLE'. Valid values: 'ALWAYS': The instance is on, and remains so even in the absence of connection requests. `NEVER`: The instance is off; it is not activated, even if a connection request arrives."
        },
        "autoStorageIncrease": {
          "type": "boolean",
          "description": "[default: ON] If you enable this setting, Cloud SQL checks your available storage every 30 seconds. If the available storage falls below a threshold size, Cloud SQL automatically adds additional storage capacity. If the available storage repeatedly falls below the threshold size, Cloud SQL continues to add storage until it reaches the maximum of 30 TB."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "The storage capacity available to the database, in GB. The minimum (and default) size is 10GB."
        },
        "dataDiskType": {
          "type": "string",
          "description": "The type of storage: `PD_SSD` (default) or `PD_HDD`."
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The database flags passed to the Cloud SQL instance at startup. An object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }."
        },
        "databaseVersion": {
          "type": "string",
          "description": "The database engine type and version."
        },
        "ipConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:SqlIpConfigResponse",
          "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled."
        },
        "rootPassword": {
          "type": "string",
          "description": "Input only. Initial root password."
        },
        "rootPasswordSet": {
          "type": "boolean",
          "description": "Indicates If this connection profile root password is stored."
        },
        "sourceId": {
          "type": "string",
          "description": "The Database Migration Service source connection profile ID, in the format: `projects/my_project_name/locations/us-central1/connectionProfiles/connection_profile_ID`"
        },
        "storageAutoResizeLimit": {
          "type": "string",
          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
        },
        "tier": {
          "type": "string",
          "description": "The tier (or machine type) for this instance, for example: `db-n1-standard-1` (MySQL instances). For more information, see [Cloud SQL Instance Settings](https://cloud.google.com/sql/docs/mysql/instance-settings)."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for a Cloud SQL instance to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"18kg\", \"count\": \"3\" }`."
        },
        "zone": {
          "type": "string",
          "description": "The Google Cloud Platform zone where your Cloud SQL database instance is located."
        }
      },
      "type": "object",
      "required": [
        "activationPolicy",
        "autoStorageIncrease",
        "dataDiskSizeGb",
        "dataDiskType",
        "databaseFlags",
        "databaseVersion",
        "ipConfig",
        "rootPassword",
        "rootPasswordSet",
        "sourceId",
        "storageAutoResizeLimit",
        "tier",
        "userLabels",
        "zone"
      ]
    },
    "google-native:datamigration/v1beta1:ConnectionProfileProvider": {
      "description": "The database provider.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseProviderUnspecified",
          "description": "The database provider is unknown.",
          "value": "DATABASE_PROVIDER_UNSPECIFIED"
        },
        {
          "name": "Cloudsql",
          "description": "CloudSQL runs the database.",
          "value": "CLOUDSQL"
        },
        {
          "name": "Rds",
          "description": "RDS runs the database.",
          "value": "RDS"
        }
      ]
    },
    "google-native:datamigration/v1beta1:ConnectionProfileState": {
      "description": "The current connection profile state (e.g. DRAFT, READY, or FAILED).",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The state of the connection profile is unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Draft",
          "description": "The connection profile is in draft mode and fully editable.",
          "value": "DRAFT"
        },
        {
          "name": "Creating",
          "description": "The connection profile is being created.",
          "value": "CREATING"
        },
        {
          "name": "Ready",
          "description": "The connection profile is ready.",
          "value": "READY"
        },
        {
          "name": "Updating",
          "description": "The connection profile is being updated.",
          "value": "UPDATING"
        },
        {
          "name": "Deleting",
          "description": "The connection profile is being deleted.",
          "value": "DELETING"
        },
        {
          "name": "Deleted",
          "description": "The connection profile has been deleted.",
          "value": "DELETED"
        },
        {
          "name": "Failed",
          "description": "The last action on the connection profile failed.",
          "value": "FAILED"
        }
      ]
    },
    "google-native:datamigration/v1beta1:DatabaseType": {
      "description": "A message defining the database engine and provider.",
      "properties": {
        "engine": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:DatabaseTypeEngine",
          "description": "The database engine."
        },
        "provider": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:DatabaseTypeProvider",
          "description": "The database provider."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:DatabaseTypeEngine": {
      "description": "The database engine.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseEngineUnspecified",
          "description": "The source database engine of the migration job is unknown.",
          "value": "DATABASE_ENGINE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "The source engine is MySQL.",
          "value": "MYSQL"
        }
      ]
    },
    "google-native:datamigration/v1beta1:DatabaseTypeProvider": {
      "description": "The database provider.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseProviderUnspecified",
          "description": "The database provider is unknown.",
          "value": "DATABASE_PROVIDER_UNSPECIFIED"
        },
        {
          "name": "Cloudsql",
          "description": "CloudSQL runs the database.",
          "value": "CLOUDSQL"
        },
        {
          "name": "Rds",
          "description": "RDS runs the database.",
          "value": "RDS"
        }
      ]
    },
    "google-native:datamigration/v1beta1:DatabaseTypeResponse": {
      "description": "A message defining the database engine and provider.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "The database engine."
        },
        "provider": {
          "type": "string",
          "description": "The database provider."
        }
      },
      "type": "object",
      "required": [
        "engine",
        "provider"
      ]
    },
    "google-native:datamigration/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:datamigration/v1beta1:MigrationJobState": {
      "description": "The current migration job state.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The state of the migration job is unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Maintenance",
          "description": "The migration job is down for maintenance.",
          "value": "MAINTENANCE"
        },
        {
          "name": "Draft",
          "description": "The migration job is in draft mode and no resources are created.",
          "value": "DRAFT"
        },
        {
          "name": "Creating",
          "description": "The migration job is being created.",
          "value": "CREATING"
        },
        {
          "name": "NotStarted",
          "description": "The migration job is created and not started.",
          "value": "NOT_STARTED"
        },
        {
          "name": "Running",
          "description": "The migration job is running.",
          "value": "RUNNING"
        },
        {
          "name": "Failed",
          "description": "The migration job failed.",
          "value": "FAILED"
        },
        {
          "name": "Completed",
          "description": "The migration job has been completed.",
          "value": "COMPLETED"
        },
        {
          "name": "Deleting",
          "description": "The migration job is being deleted.",
          "value": "DELETING"
        },
        {
          "name": "Stopping",
          "description": "The migration job is being stopped.",
          "value": "STOPPING"
        },
        {
          "name": "Stopped",
          "description": "The migration job is currently stopped.",
          "value": "STOPPED"
        },
        {
          "name": "Deleted",
          "description": "The migration job has been deleted.",
          "value": "DELETED"
        },
        {
          "name": "Updating",
          "description": "The migration job is being updated.",
          "value": "UPDATING"
        },
        {
          "name": "Starting",
          "description": "The migration job is starting.",
          "value": "STARTING"
        },
        {
          "name": "Restarting",
          "description": "The migration job is restarting.",
          "value": "RESTARTING"
        },
        {
          "name": "Resuming",
          "description": "The migration job is resuming.",
          "value": "RESUMING"
        }
      ]
    },
    "google-native:datamigration/v1beta1:MigrationJobType": {
      "description": "Required. The migration job type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type of the migration job is unknown.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "OneTime",
          "description": "The migration job is a one time migration.",
          "value": "ONE_TIME"
        },
        {
          "name": "Continuous",
          "description": "The migration job is a continuous migration.",
          "value": "CONTINUOUS"
        }
      ]
    },
    "google-native:datamigration/v1beta1:MySqlConnectionProfile": {
      "description": "Specifies connection parameters required specifically for MySQL databases.",
      "properties": {
        "cloudSqlId": {
          "type": "string",
          "description": "If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source."
        },
        "host": {
          "type": "string",
          "description": "The IP or hostname of the source MySQL database."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service."
        },
        "port": {
          "type": "integer",
          "description": "The network port of the source MySQL database."
        },
        "ssl": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:SslConfig",
          "description": "SSL configuration for the destination to connect to the source database."
        },
        "username": {
          "type": "string",
          "description": "The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service."
        }
      },
      "type": "object",
      "required": [
        "host",
        "password",
        "port",
        "username"
      ]
    },
    "google-native:datamigration/v1beta1:MySqlConnectionProfileResponse": {
      "description": "Specifies connection parameters required specifically for MySQL databases.",
      "properties": {
        "cloudSqlId": {
          "type": "string",
          "description": "If the source is a Cloud SQL database, use this field to provide the Cloud SQL instance ID of the source."
        },
        "host": {
          "type": "string",
          "description": "The IP or hostname of the source MySQL database."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password for the user that Database Migration Service will be using to connect to the database. This field is not returned on request, and the value is encrypted when stored in Database Migration Service."
        },
        "passwordSet": {
          "type": "boolean",
          "description": "Indicates If this connection profile password is stored."
        },
        "port": {
          "type": "integer",
          "description": "The network port of the source MySQL database."
        },
        "ssl": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:SslConfigResponse",
          "description": "SSL configuration for the destination to connect to the source database."
        },
        "username": {
          "type": "string",
          "description": "The username that Database Migration Service will use to connect to the database. The value is encrypted when stored in Database Migration Service."
        }
      },
      "type": "object",
      "required": [
        "cloudSqlId",
        "host",
        "password",
        "passwordSet",
        "port",
        "ssl",
        "username"
      ]
    },
    "google-native:datamigration/v1beta1:ReverseSshConnectivity": {
      "description": "The details needed to configure a reverse SSH tunnel between the source and destination databases. These details will be used when calling the generateSshScript method (see https://cloud.google.com/database-migration/docs/reference/rest/v1beta1/projects.locations.migrationJobs/generateSshScript) to produce the script that will help set up the reverse SSH tunnel, and to set up the VPC peering between the Cloud SQL private network and the VPC.",
      "properties": {
        "vm": {
          "type": "string",
          "description": "The name of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vmIp": {
          "type": "string",
          "description": "The IP of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vmPort": {
          "type": "integer",
          "description": "The forwarding port of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vpc": {
          "type": "string",
          "description": "The name of the VPC to peer with the Cloud SQL private network."
        }
      },
      "type": "object",
      "required": [
        "vmIp",
        "vmPort"
      ]
    },
    "google-native:datamigration/v1beta1:ReverseSshConnectivityResponse": {
      "description": "The details needed to configure a reverse SSH tunnel between the source and destination databases. These details will be used when calling the generateSshScript method (see https://cloud.google.com/database-migration/docs/reference/rest/v1beta1/projects.locations.migrationJobs/generateSshScript) to produce the script that will help set up the reverse SSH tunnel, and to set up the VPC peering between the Cloud SQL private network and the VPC.",
      "properties": {
        "vm": {
          "type": "string",
          "description": "The name of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vmIp": {
          "type": "string",
          "description": "The IP of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vmPort": {
          "type": "integer",
          "description": "The forwarding port of the virtual machine (Compute Engine) used as the bastion server for the SSH tunnel."
        },
        "vpc": {
          "type": "string",
          "description": "The name of the VPC to peer with the Cloud SQL private network."
        }
      },
      "type": "object",
      "required": [
        "vm",
        "vmIp",
        "vmPort",
        "vpc"
      ]
    },
    "google-native:datamigration/v1beta1:SqlAclEntry": {
      "description": "An entry for an Access Control list.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example: `2012-11-15T16:19:00.094Z`."
        },
        "label": {
          "type": "string",
          "description": "A label to identify this entry."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The time-to-leave of this access control entry."
        },
        "value": {
          "type": "string",
          "description": "The allowlisted value for the access control list."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:SqlAclEntryResponse": {
      "description": "An entry for an Access Control list.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example: `2012-11-15T16:19:00.094Z`."
        },
        "label": {
          "type": "string",
          "description": "A label to identify this entry."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The time-to-leave of this access control entry."
        },
        "value": {
          "type": "string",
          "description": "The allowlisted value for the access control list."
        }
      },
      "type": "object",
      "required": [
        "expireTime",
        "label",
        "ttl",
        "value"
      ]
    },
    "google-native:datamigration/v1beta1:SqlIpConfig": {
      "description": "IP Management configuration.",
      "properties": {
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:SqlAclEntry"
          },
          "description": "The list of external networks that are allowed to connect to the instance using the IP. See https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation, also known as 'slash' notation (e.g. `192.168.100.0/24`)."
        },
        "enableIpv4": {
          "type": "boolean",
          "description": "Whether the instance is assigned a public IP address or not."
        },
        "privateNetwork": {
          "type": "string",
          "description": "The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `/projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set."
        },
        "requireSsl": {
          "type": "boolean",
          "description": "Whether SSL connections over IP should be enforced or not."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:SqlIpConfigResponse": {
      "description": "IP Management configuration.",
      "properties": {
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:SqlAclEntryResponse"
          },
          "description": "The list of external networks that are allowed to connect to the instance using the IP. See https://en.wikipedia.org/wiki/CIDR_notation#CIDR_notation, also known as 'slash' notation (e.g. `192.168.100.0/24`)."
        },
        "enableIpv4": {
          "type": "boolean",
          "description": "Whether the instance is assigned a public IP address or not."
        },
        "privateNetwork": {
          "type": "string",
          "description": "The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `/projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set."
        },
        "requireSsl": {
          "type": "boolean",
          "description": "Whether SSL connections over IP should be enforced or not."
        }
      },
      "type": "object",
      "required": [
        "authorizedNetworks",
        "enableIpv4",
        "privateNetwork",
        "requireSsl"
      ]
    },
    "google-native:datamigration/v1beta1:SslConfig": {
      "description": "SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. The x509 PEM-encoded certificate of the CA that signed the source database server's certificate. The replica will use this certificate to verify it's connecting to the right host."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Input only. The x509 PEM-encoded certificate that will be used by the replica to authenticate against the source database server.If this field is used then the 'client_key' field is mandatory."
        },
        "clientKey": {
          "type": "string",
          "description": "Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' field is mandatory."
        }
      },
      "type": "object",
      "required": [
        "caCertificate"
      ]
    },
    "google-native:datamigration/v1beta1:SslConfigResponse": {
      "description": "SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. The x509 PEM-encoded certificate of the CA that signed the source database server's certificate. The replica will use this certificate to verify it's connecting to the right host."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Input only. The x509 PEM-encoded certificate that will be used by the replica to authenticate against the source database server.If this field is used then the 'client_key' field is mandatory."
        },
        "clientKey": {
          "type": "string",
          "description": "Input only. The unencrypted PKCS#1 or PKCS#8 PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' field is mandatory."
        },
        "type": {
          "type": "string",
          "description": "The ssl config type according to 'client_key', 'client_certificate' and 'ca_certificate'."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "clientCertificate",
        "clientKey",
        "type"
      ]
    },
    "google-native:datamigration/v1beta1:StaticIpConnectivity": {
      "description": "The source database will allow incoming connections from the destination database's public IP. You can retrieve the Cloud SQL instance's public IP from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required.",
      "type": "object"
    },
    "google-native:datamigration/v1beta1:StaticIpConnectivityResponse": {
      "description": "The source database will allow incoming connections from the destination database's public IP. You can retrieve the Cloud SQL instance's public IP from the Cloud SQL console or using Cloud SQL APIs. No additional configuration is required.",
      "type": "object"
    },
    "google-native:datamigration/v1beta1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:datamigration/v1beta1:VpcPeeringConnectivity": {
      "description": "The details of the VPC where the source database is located in Google Cloud. We will use this information to set up the VPC peering connection between Cloud SQL and this VPC.",
      "properties": {
        "vpc": {
          "type": "string",
          "description": "The name of the VPC network to peer with the Cloud SQL private network."
        }
      },
      "type": "object"
    },
    "google-native:datamigration/v1beta1:VpcPeeringConnectivityResponse": {
      "description": "The details of the VPC where the source database is located in Google Cloud. We will use this information to set up the VPC peering connection between Cloud SQL and this VPC.",
      "properties": {
        "vpc": {
          "type": "string",
          "description": "The name of the VPC network to peer with the Cloud SQL private network."
        }
      },
      "type": "object",
      "required": [
        "vpc"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironment": {
      "description": "The environment values to be set at runtime for a Flex Template.",
      "properties": {
        "additionalExperiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional experiment flags for the job."
        },
        "additionalUserLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional user labels to be specified for the job. Keys and values must follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions). An object containing a list of key/value pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1kg\", \"count\": \"3\" }`."
        },
        "enableStreamingEngine": {
          "type": "boolean",
          "description": "Whether to enable Streaming Engine for the job."
        },
        "flexrsGoal": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironmentFlexrsGoal",
          "description": "Set FlexRS goal for the job. https://cloud.google.com/dataflow/docs/guides/flexrs"
        },
        "ipConfiguration": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironmentIpConfiguration",
          "description": "Configuration for VM IPs."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Name for the Cloud KMS key for the job. Key format is: projects//locations//keyRings//cryptoKeys/"
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for the job. Defaults to the value from the template if not specified."
        },
        "maxWorkers": {
          "type": "integer",
          "description": "The maximum number of Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000."
        },
        "network": {
          "type": "string",
          "description": "Network to which VMs will be assigned. If empty or unspecified, the service will use the network \"default\"."
        },
        "numWorkers": {
          "type": "integer",
          "description": "The initial number of Compute Engine instances for the job."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email address of the service account to run the job as."
        },
        "subnetwork": {
          "type": "string",
          "description": "Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form \"https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK\" or \"regions/REGION/subnetworks/SUBNETWORK\". If the subnetwork is located in a Shared VPC network, you must use the complete URL."
        },
        "tempLocation": {
          "type": "string",
          "description": "The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`."
        },
        "workerRegion": {
          "type": "string",
          "description": "The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, defaults to the control plane region."
        },
        "workerZone": {
          "type": "string",
          "description": "The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence."
        },
        "zone": {
          "type": "string",
          "description": "The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence."
        }
      },
      "type": "object"
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironmentFlexrsGoal": {
      "description": "Set FlexRS goal for the job. https://cloud.google.com/dataflow/docs/guides/flexrs",
      "type": "string",
      "enum": [
        {
          "name": "FlexrsUnspecified",
          "description": "Run in the default mode.",
          "value": "FLEXRS_UNSPECIFIED"
        },
        {
          "name": "FlexrsSpeedOptimized",
          "description": "Optimize for lower execution time.",
          "value": "FLEXRS_SPEED_OPTIMIZED"
        },
        {
          "name": "FlexrsCostOptimized",
          "description": "Optimize for lower cost.",
          "value": "FLEXRS_COST_OPTIMIZED"
        }
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironmentIpConfiguration": {
      "description": "Configuration for VM IPs.",
      "type": "string",
      "enum": [
        {
          "name": "WorkerIpUnspecified",
          "description": "The configuration is unknown, or unspecified.",
          "value": "WORKER_IP_UNSPECIFIED"
        },
        {
          "name": "WorkerIpPublic",
          "description": "Workers should have public IP addresses.",
          "value": "WORKER_IP_PUBLIC"
        },
        {
          "name": "WorkerIpPrivate",
          "description": "Workers should have private IP addresses.",
          "value": "WORKER_IP_PRIVATE"
        }
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironmentResponse": {
      "description": "The environment values to be set at runtime for a Flex Template.",
      "properties": {
        "additionalExperiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional experiment flags for the job."
        },
        "additionalUserLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional user labels to be specified for the job. Keys and values must follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions). An object containing a list of key/value pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1kg\", \"count\": \"3\" }`."
        },
        "enableStreamingEngine": {
          "type": "boolean",
          "description": "Whether to enable Streaming Engine for the job."
        },
        "flexrsGoal": {
          "type": "string",
          "description": "Set FlexRS goal for the job. https://cloud.google.com/dataflow/docs/guides/flexrs"
        },
        "ipConfiguration": {
          "type": "string",
          "description": "Configuration for VM IPs."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Name for the Cloud KMS key for the job. Key format is: projects//locations//keyRings//cryptoKeys/"
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for the job. Defaults to the value from the template if not specified."
        },
        "maxWorkers": {
          "type": "integer",
          "description": "The maximum number of Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000."
        },
        "network": {
          "type": "string",
          "description": "Network to which VMs will be assigned. If empty or unspecified, the service will use the network \"default\"."
        },
        "numWorkers": {
          "type": "integer",
          "description": "The initial number of Compute Engine instances for the job."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email address of the service account to run the job as."
        },
        "subnetwork": {
          "type": "string",
          "description": "Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form \"https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK\" or \"regions/REGION/subnetworks/SUBNETWORK\". If the subnetwork is located in a Shared VPC network, you must use the complete URL."
        },
        "tempLocation": {
          "type": "string",
          "description": "The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`."
        },
        "workerRegion": {
          "type": "string",
          "description": "The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, defaults to the control plane region."
        },
        "workerZone": {
          "type": "string",
          "description": "The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence."
        },
        "zone": {
          "type": "string",
          "description": "The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence."
        }
      },
      "type": "object",
      "required": [
        "additionalExperiments",
        "additionalUserLabels",
        "enableStreamingEngine",
        "flexrsGoal",
        "ipConfiguration",
        "kmsKeyName",
        "machineType",
        "maxWorkers",
        "network",
        "numWorkers",
        "serviceAccountEmail",
        "subnetwork",
        "tempLocation",
        "workerRegion",
        "workerZone",
        "zone"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1LaunchFlexTemplateParameter": {
      "description": "Launch Flex Template parameter.",
      "properties": {
        "containerSpecGcsPath": {
          "type": "string",
          "description": "Cloud Storage path to a file with a JSON-serialized ContainerSpec as content."
        },
        "environment": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironment",
          "description": "The runtime environment for the Flex Template job."
        },
        "jobName": {
          "type": "string",
          "description": "The job name to use for the created job. For an update job request, the job name should be the same as the existing running job."
        },
        "launchOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Launch options for this Flex Template job. This is a common set of options across languages and templates. This should not be used to pass job parameters."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The parameters for the Flex Template. Example: `{\"num_workers\":\"5\"}`"
        },
        "transformNameMappings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Use this to pass transform name mappings for streaming update jobs. Example: `{\"oldTransformName\":\"newTransformName\",...}`"
        },
        "update": {
          "type": "boolean",
          "description": "Set this to true if you are sending a request to update a running streaming job. When set, the job name should be the same as the running job."
        }
      },
      "type": "object",
      "required": [
        "jobName"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1LaunchFlexTemplateParameterResponse": {
      "description": "Launch Flex Template parameter.",
      "properties": {
        "containerSpecGcsPath": {
          "type": "string",
          "description": "Cloud Storage path to a file with a JSON-serialized ContainerSpec as content."
        },
        "environment": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1FlexTemplateRuntimeEnvironmentResponse",
          "description": "The runtime environment for the Flex Template job."
        },
        "jobName": {
          "type": "string",
          "description": "The job name to use for the created job. For an update job request, the job name should be the same as the existing running job."
        },
        "launchOptions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Launch options for this Flex Template job. This is a common set of options across languages and templates. This should not be used to pass job parameters."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The parameters for the Flex Template. Example: `{\"num_workers\":\"5\"}`"
        },
        "transformNameMappings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Use this to pass transform name mappings for streaming update jobs. Example: `{\"oldTransformName\":\"newTransformName\",...}`"
        },
        "update": {
          "type": "boolean",
          "description": "Set this to true if you are sending a request to update a running streaming job. When set, the job name should be the same as the running job."
        }
      },
      "type": "object",
      "required": [
        "containerSpecGcsPath",
        "environment",
        "jobName",
        "launchOptions",
        "parameters",
        "transformNameMappings",
        "update"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1LaunchFlexTemplateRequest": {
      "description": "A request to launch a Dataflow job from a Flex Template.",
      "properties": {
        "launchParameter": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1LaunchFlexTemplateParameter",
          "description": "Parameter to launch a job from a Flex Template."
        },
        "location": {
          "type": "string",
          "description": "The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) to which to direct the request. For example, `us-central1`, `us-west1`."
        },
        "project": {
          "type": "string",
          "description": "The ID of the Cloud Platform project that the job belongs to."
        },
        "validateOnly": {
          "type": "boolean",
          "description": "If true, the request is validated but not actually executed. Defaults to false."
        }
      },
      "type": "object",
      "required": [
        "launchParameter",
        "location",
        "project"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1LaunchFlexTemplateRequestResponse": {
      "description": "A request to launch a Dataflow job from a Flex Template.",
      "properties": {
        "launchParameter": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1LaunchFlexTemplateParameterResponse",
          "description": "Parameter to launch a job from a Flex Template."
        },
        "location": {
          "type": "string",
          "description": "The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) to which to direct the request. For example, `us-central1`, `us-west1`."
        },
        "project": {
          "type": "string",
          "description": "The ID of the Cloud Platform project that the job belongs to."
        },
        "validateOnly": {
          "type": "boolean",
          "description": "If true, the request is validated but not actually executed. Defaults to false."
        }
      },
      "type": "object",
      "required": [
        "launchParameter",
        "location",
        "project",
        "validateOnly"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1LaunchTemplateParameters": {
      "description": "Parameters to provide to the template being launched.",
      "properties": {
        "environment": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1RuntimeEnvironment",
          "description": "The runtime environment for the job."
        },
        "jobName": {
          "type": "string",
          "description": "The job name to use for the created job."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime parameters to pass to the job."
        },
        "transformNameMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job. Only applicable when updating a pipeline."
        },
        "update": {
          "type": "boolean",
          "description": "If set, replace the existing pipeline with the name specified by jobName with this pipeline, preserving state."
        }
      },
      "type": "object",
      "required": [
        "jobName"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1LaunchTemplateParametersResponse": {
      "description": "Parameters to provide to the template being launched.",
      "properties": {
        "environment": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1RuntimeEnvironmentResponse",
          "description": "The runtime environment for the job."
        },
        "jobName": {
          "type": "string",
          "description": "The job name to use for the created job."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime parameters to pass to the job."
        },
        "transformNameMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job. Only applicable when updating a pipeline."
        },
        "update": {
          "type": "boolean",
          "description": "If set, replace the existing pipeline with the name specified by jobName with this pipeline, preserving state."
        }
      },
      "type": "object",
      "required": [
        "environment",
        "jobName",
        "parameters",
        "transformNameMapping",
        "update"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1LaunchTemplateRequest": {
      "description": "A request to launch a template.",
      "properties": {
        "gcsPath": {
          "type": "string",
          "description": "A Cloud Storage path to the template from which to create the job. Must be a valid Cloud Storage URL, beginning with 'gs://'."
        },
        "launchParameters": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1LaunchTemplateParameters",
          "description": "The parameters of the template to launch. This should be part of the body of the POST request."
        },
        "location": {
          "type": "string",
          "description": "The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) to which to direct the request."
        },
        "project": {
          "type": "string",
          "description": "The ID of the Cloud Platform project that the job belongs to."
        },
        "validateOnly": {
          "type": "boolean",
          "description": "If true, the request is validated but not actually executed. Defaults to false."
        }
      },
      "type": "object",
      "required": [
        "project"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1LaunchTemplateRequestResponse": {
      "description": "A request to launch a template.",
      "properties": {
        "gcsPath": {
          "type": "string",
          "description": "A Cloud Storage path to the template from which to create the job. Must be a valid Cloud Storage URL, beginning with 'gs://'."
        },
        "launchParameters": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1LaunchTemplateParametersResponse",
          "description": "The parameters of the template to launch. This should be part of the body of the POST request."
        },
        "location": {
          "type": "string",
          "description": "The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) to which to direct the request."
        },
        "project": {
          "type": "string",
          "description": "The ID of the Cloud Platform project that the job belongs to."
        },
        "validateOnly": {
          "type": "boolean",
          "description": "If true, the request is validated but not actually executed. Defaults to false."
        }
      },
      "type": "object",
      "required": [
        "gcsPath",
        "launchParameters",
        "location",
        "project",
        "validateOnly"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1RuntimeEnvironment": {
      "description": "The environment values to set at runtime.",
      "properties": {
        "additionalExperiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional experiment flags for the job."
        },
        "additionalUserLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional user labels to be specified for the job. Keys and values should follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) page. An object containing a list of key/value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1kg\", \"count\": \"3\" }."
        },
        "bypassTempDirValidation": {
          "type": "boolean",
          "description": "Whether to bypass the safety checks for the job's temporary directory. Use with caution."
        },
        "enableStreamingEngine": {
          "type": "boolean",
          "description": "Whether to enable Streaming Engine for the job."
        },
        "ipConfiguration": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1RuntimeEnvironmentIpConfiguration",
          "description": "Configuration for VM IPs."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Name for the Cloud KMS key for the job. The key format is: projects//locations//keyRings//cryptoKeys/"
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for the job. Defaults to the value from the template if not specified."
        },
        "maxWorkers": {
          "type": "integer",
          "description": "The maximum number of Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000."
        },
        "network": {
          "type": "string",
          "description": "Network to which VMs will be assigned. If empty or unspecified, the service will use the network \"default\"."
        },
        "numWorkers": {
          "type": "integer",
          "description": "The initial number of Compute Engine instances for the job."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email address of the service account to run the job as."
        },
        "subnetwork": {
          "type": "string",
          "description": "Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form \"https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK\" or \"regions/REGION/subnetworks/SUBNETWORK\". If the subnetwork is located in a Shared VPC network, you must use the complete URL."
        },
        "tempLocation": {
          "type": "string",
          "description": "The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`."
        },
        "workerRegion": {
          "type": "string",
          "description": "The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane's region."
        },
        "workerZone": {
          "type": "string",
          "description": "The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane's region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence."
        },
        "zone": {
          "type": "string",
          "description": "The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence."
        }
      },
      "type": "object"
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1RuntimeEnvironmentIpConfiguration": {
      "description": "Configuration for VM IPs.",
      "type": "string",
      "enum": [
        {
          "name": "WorkerIpUnspecified",
          "description": "The configuration is unknown, or unspecified.",
          "value": "WORKER_IP_UNSPECIFIED"
        },
        {
          "name": "WorkerIpPublic",
          "description": "Workers should have public IP addresses.",
          "value": "WORKER_IP_PUBLIC"
        },
        {
          "name": "WorkerIpPrivate",
          "description": "Workers should have private IP addresses.",
          "value": "WORKER_IP_PRIVATE"
        }
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1RuntimeEnvironmentResponse": {
      "description": "The environment values to set at runtime.",
      "properties": {
        "additionalExperiments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional experiment flags for the job."
        },
        "additionalUserLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional user labels to be specified for the job. Keys and values should follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) page. An object containing a list of key/value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1kg\", \"count\": \"3\" }."
        },
        "bypassTempDirValidation": {
          "type": "boolean",
          "description": "Whether to bypass the safety checks for the job's temporary directory. Use with caution."
        },
        "enableStreamingEngine": {
          "type": "boolean",
          "description": "Whether to enable Streaming Engine for the job."
        },
        "ipConfiguration": {
          "type": "string",
          "description": "Configuration for VM IPs."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Name for the Cloud KMS key for the job. The key format is: projects//locations//keyRings//cryptoKeys/"
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to use for the job. Defaults to the value from the template if not specified."
        },
        "maxWorkers": {
          "type": "integer",
          "description": "The maximum number of Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000."
        },
        "network": {
          "type": "string",
          "description": "Network to which VMs will be assigned. If empty or unspecified, the service will use the network \"default\"."
        },
        "numWorkers": {
          "type": "integer",
          "description": "The initial number of Compute Engine instances for the job."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email address of the service account to run the job as."
        },
        "subnetwork": {
          "type": "string",
          "description": "Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form \"https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK\" or \"regions/REGION/subnetworks/SUBNETWORK\". If the subnetwork is located in a Shared VPC network, you must use the complete URL."
        },
        "tempLocation": {
          "type": "string",
          "description": "The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`."
        },
        "workerRegion": {
          "type": "string",
          "description": "The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1\". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane's region."
        },
        "workerZone": {
          "type": "string",
          "description": "The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. \"us-west1-a\". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane's region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence."
        },
        "zone": {
          "type": "string",
          "description": "The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence."
        }
      },
      "type": "object",
      "required": [
        "additionalExperiments",
        "additionalUserLabels",
        "bypassTempDirValidation",
        "enableStreamingEngine",
        "ipConfiguration",
        "kmsKeyName",
        "machineType",
        "maxWorkers",
        "network",
        "numWorkers",
        "serviceAccountEmail",
        "subnetwork",
        "tempLocation",
        "workerRegion",
        "workerZone",
        "zone"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1ScheduleSpec": {
      "description": "Details of the schedule the pipeline runs on.",
      "properties": {
        "schedule": {
          "type": "string",
          "description": "Unix-cron format of the schedule. This information is retrieved from the linked Cloud Scheduler."
        },
        "timeZone": {
          "type": "string",
          "description": "Timezone ID. This matches the timezone IDs used by the Cloud Scheduler API. If empty, UTC time is assumed."
        }
      },
      "type": "object"
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1ScheduleSpecResponse": {
      "description": "Details of the schedule the pipeline runs on.",
      "properties": {
        "nextJobTime": {
          "type": "string",
          "description": "When the next Scheduler job is going to run."
        },
        "schedule": {
          "type": "string",
          "description": "Unix-cron format of the schedule. This information is retrieved from the linked Cloud Scheduler."
        },
        "timeZone": {
          "type": "string",
          "description": "Timezone ID. This matches the timezone IDs used by the Cloud Scheduler API. If empty, UTC time is assumed."
        }
      },
      "type": "object",
      "required": [
        "nextJobTime",
        "schedule",
        "timeZone"
      ]
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1Workload": {
      "description": "Workload details for creating the pipeline jobs.",
      "properties": {
        "dataflowFlexTemplateRequest": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1LaunchFlexTemplateRequest",
          "description": "Template information and additional parameters needed to launch a Dataflow job using the flex launch API."
        },
        "dataflowLaunchTemplateRequest": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1LaunchTemplateRequest",
          "description": "Template information and additional parameters needed to launch a Dataflow job using the standard launch API."
        }
      },
      "type": "object"
    },
    "google-native:datapipelines/v1:GoogleCloudDatapipelinesV1WorkloadResponse": {
      "description": "Workload details for creating the pipeline jobs.",
      "properties": {
        "dataflowFlexTemplateRequest": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1LaunchFlexTemplateRequestResponse",
          "description": "Template information and additional parameters needed to launch a Dataflow job using the flex launch API."
        },
        "dataflowLaunchTemplateRequest": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1LaunchTemplateRequestResponse",
          "description": "Template information and additional parameters needed to launch a Dataflow job using the standard launch API."
        }
      },
      "type": "object",
      "required": [
        "dataflowFlexTemplateRequest",
        "dataflowLaunchTemplateRequest"
      ]
    },
    "google-native:datapipelines/v1:PipelineState": {
      "description": "Required. The state of the pipeline. When the pipeline is created, the state is set to 'PIPELINE_STATE_ACTIVE' by default. State changes can be requested by setting the state to stopping, paused, or resuming. State cannot be changed through UpdatePipeline requests.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The pipeline state isn't specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "StateResuming",
          "description": "The pipeline is getting started or resumed. When finished, the pipeline state will be 'PIPELINE_STATE_ACTIVE'.",
          "value": "STATE_RESUMING"
        },
        {
          "name": "StateActive",
          "description": "The pipeline is actively running.",
          "value": "STATE_ACTIVE"
        },
        {
          "name": "StateStopping",
          "description": "The pipeline is in the process of stopping. When finished, the pipeline state will be 'PIPELINE_STATE_ARCHIVED'.",
          "value": "STATE_STOPPING"
        },
        {
          "name": "StateArchived",
          "description": "The pipeline has been stopped. This is a terminal state and cannot be undone.",
          "value": "STATE_ARCHIVED"
        },
        {
          "name": "StatePaused",
          "description": "The pipeline is paused. This is a non-terminal state. When the pipeline is paused, it will hold processing jobs, but can be resumed later. For a batch pipeline, this means pausing the scheduler job. For a streaming pipeline, creating a job snapshot to resume from will give the same effect.",
          "value": "STATE_PAUSED"
        }
      ]
    },
    "google-native:datapipelines/v1:PipelineType": {
      "description": "Required. The type of the pipeline. This field affects the scheduling of the pipeline and the type of metrics to show for the pipeline.",
      "type": "string",
      "enum": [
        {
          "name": "PipelineTypeUnspecified",
          "description": "The pipeline type isn't specified.",
          "value": "PIPELINE_TYPE_UNSPECIFIED"
        },
        {
          "name": "PipelineTypeBatch",
          "description": "A batch pipeline. It runs jobs on a specific schedule, and each job will automatically terminate once execution is finished.",
          "value": "PIPELINE_TYPE_BATCH"
        },
        {
          "name": "PipelineTypeStreaming",
          "description": "A streaming pipeline. The underlying job is continuously running until it is manually terminated by the user. This type of pipeline doesn't have a schedule to run on, and the linked job gets created when the pipeline is created.",
          "value": "PIPELINE_TYPE_STREAMING"
        }
      ]
    },
    "google-native:dataplex/v1:EntitySystem": {
      "description": "Required. Immutable. Identifies the storage system of the entity data.",
      "type": "string",
      "enum": [
        {
          "name": "StorageSystemUnspecified",
          "description": "Storage system unspecified.",
          "value": "STORAGE_SYSTEM_UNSPECIFIED"
        },
        {
          "name": "CloudStorage",
          "description": "The entity data is contained within a Cloud Storage bucket.",
          "value": "CLOUD_STORAGE"
        },
        {
          "name": "Bigquery",
          "description": "The entity data is contained within a BigQuery dataset.",
          "value": "BIGQUERY"
        }
      ]
    },
    "google-native:dataplex/v1:EntityType": {
      "description": "Required. Immutable. The type of entity.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Type unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Table",
          "description": "Structured and semi-structured data.",
          "value": "TABLE"
        },
        {
          "name": "Fileset",
          "description": "Unstructured data.",
          "value": "FILESET"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetDiscoverySpec": {
      "description": "Settings to manage the metadata discovery and publishing for an asset.",
      "properties": {
        "csvOptions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions",
          "description": "Optional. Configuration for CSV data."
        },
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether discovery is enabled."
        },
        "excludePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of patterns to apply for selecting data to exclude during discovery. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names."
        },
        "includePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of patterns to apply for selecting data to include during discovery if only a subset of the data should considered. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names."
        },
        "jsonOptions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions",
          "description": "Optional. Configuration for Json data."
        },
        "schedule": {
          "type": "string",
          "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running discovery periodically. Successive discovery runs must be scheduled at least 60 minutes apart. The default value is to run discovery every 60 minutes. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, CRON_TZ=America/New_York 1 * * * *, or TZ=America/New_York 1 * * * *."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetDiscoverySpecCsvOptions": {
      "description": "Describe CSV and similar semi-structured data formats.",
      "properties": {
        "delimiter": {
          "type": "string",
          "description": "Optional. The delimiter being used to separate values. This defaults to ','."
        },
        "disableTypeInference": {
          "type": "boolean",
          "description": "Optional. Whether to disable the inference of data type for CSV data. If true, all columns will be registered as strings."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. The default is UTF-8."
        },
        "headerRows": {
          "type": "integer",
          "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetDiscoverySpecCsvOptionsResponse": {
      "description": "Describe CSV and similar semi-structured data formats.",
      "properties": {
        "delimiter": {
          "type": "string",
          "description": "Optional. The delimiter being used to separate values. This defaults to ','."
        },
        "disableTypeInference": {
          "type": "boolean",
          "description": "Optional. Whether to disable the inference of data type for CSV data. If true, all columns will be registered as strings."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. The default is UTF-8."
        },
        "headerRows": {
          "type": "integer",
          "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows."
        }
      },
      "type": "object",
      "required": [
        "delimiter",
        "disableTypeInference",
        "encoding",
        "headerRows"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetDiscoverySpecJsonOptions": {
      "description": "Describe JSON data format.",
      "properties": {
        "disableTypeInference": {
          "type": "boolean",
          "description": "Optional. Whether to disable the inference of data type for Json data. If true, all columns will be registered as their primitive types (strings, number or boolean)."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. The default is UTF-8."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetDiscoverySpecJsonOptionsResponse": {
      "description": "Describe JSON data format.",
      "properties": {
        "disableTypeInference": {
          "type": "boolean",
          "description": "Optional. Whether to disable the inference of data type for Json data. If true, all columns will be registered as their primitive types (strings, number or boolean)."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. The default is UTF-8."
        }
      },
      "type": "object",
      "required": [
        "disableTypeInference",
        "encoding"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetDiscoverySpecResponse": {
      "description": "Settings to manage the metadata discovery and publishing for an asset.",
      "properties": {
        "csvOptions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoverySpecCsvOptionsResponse",
          "description": "Optional. Configuration for CSV data."
        },
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether discovery is enabled."
        },
        "excludePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of patterns to apply for selecting data to exclude during discovery. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names."
        },
        "includePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of patterns to apply for selecting data to include during discovery if only a subset of the data should considered. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names."
        },
        "jsonOptions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoverySpecJsonOptionsResponse",
          "description": "Optional. Configuration for Json data."
        },
        "schedule": {
          "type": "string",
          "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running discovery periodically. Successive discovery runs must be scheduled at least 60 minutes apart. The default value is to run discovery every 60 minutes. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, CRON_TZ=America/New_York 1 * * * *, or TZ=America/New_York 1 * * * *."
        }
      },
      "type": "object",
      "required": [
        "csvOptions",
        "enabled",
        "excludePatterns",
        "includePatterns",
        "jsonOptions",
        "schedule"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetDiscoveryStatusResponse": {
      "description": "Status of discovery for an asset.",
      "properties": {
        "lastRunDuration": {
          "type": "string",
          "description": "The duration of the last discovery run."
        },
        "lastRunTime": {
          "type": "string",
          "description": "The start time of the last discovery run."
        },
        "message": {
          "type": "string",
          "description": "Additional information about the current state."
        },
        "state": {
          "type": "string",
          "description": "The current status of the discovery feature."
        },
        "stats": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoveryStatusStatsResponse",
          "description": "Data Stats of the asset reported by discovery."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of the status."
        }
      },
      "type": "object",
      "required": [
        "lastRunDuration",
        "lastRunTime",
        "message",
        "state",
        "stats",
        "updateTime"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetDiscoveryStatusStatsResponse": {
      "description": "The aggregated data statistics for the asset reported by discovery.",
      "properties": {
        "dataItems": {
          "type": "string",
          "description": "The count of data items within the referenced resource."
        },
        "dataSize": {
          "type": "string",
          "description": "The number of stored data bytes within the referenced resource."
        },
        "filesets": {
          "type": "string",
          "description": "The count of fileset entities within the referenced resource."
        },
        "tables": {
          "type": "string",
          "description": "The count of table entities within the referenced resource."
        }
      },
      "type": "object",
      "required": [
        "dataItems",
        "dataSize",
        "filesets",
        "tables"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetResourceSpec": {
      "description": "Identifies the cloud resource that is referenced by this asset.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Immutable. Relative name of the cloud resource that contains the data that is being managed within a lake. For example: projects/{project_number}/buckets/{bucket_id} projects/{project_number}/datasets/{dataset_id}"
        },
        "readAccessMode": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetResourceSpecReadAccessMode",
          "description": "Optional. Determines how read permissions are handled for each asset and their associated tables. Only available to storage buckets assets."
        },
        "type": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetResourceSpecType",
          "description": "Immutable. Type of resource."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetResourceSpecReadAccessMode": {
      "description": "Optional. Determines how read permissions are handled for each asset and their associated tables. Only available to storage buckets assets.",
      "type": "string",
      "enum": [
        {
          "name": "AccessModeUnspecified",
          "description": "Access mode unspecified.",
          "value": "ACCESS_MODE_UNSPECIFIED"
        },
        {
          "name": "Direct",
          "description": "Default. Data is accessed directly using storage APIs.",
          "value": "DIRECT"
        },
        {
          "name": "Managed",
          "description": "Data is accessed through a managed interface using BigQuery APIs.",
          "value": "MANAGED"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetResourceSpecResponse": {
      "description": "Identifies the cloud resource that is referenced by this asset.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Immutable. Relative name of the cloud resource that contains the data that is being managed within a lake. For example: projects/{project_number}/buckets/{bucket_id} projects/{project_number}/datasets/{dataset_id}"
        },
        "readAccessMode": {
          "type": "string",
          "description": "Optional. Determines how read permissions are handled for each asset and their associated tables. Only available to storage buckets assets."
        },
        "type": {
          "type": "string",
          "description": "Immutable. Type of resource."
        }
      },
      "type": "object",
      "required": [
        "name",
        "readAccessMode",
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetResourceSpecType": {
      "description": "Required. Immutable. Type of resource.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Type not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "StorageBucket",
          "description": "Cloud Storage bucket.",
          "value": "STORAGE_BUCKET"
        },
        {
          "name": "BigqueryDataset",
          "description": "BigQuery dataset.",
          "value": "BIGQUERY_DATASET"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetResourceStatusResponse": {
      "description": "Status of the resource referenced by an asset.",
      "properties": {
        "managedAccessIdentity": {
          "type": "string",
          "description": "Service account associated with the BigQuery Connection."
        },
        "message": {
          "type": "string",
          "description": "Additional information about the current state."
        },
        "state": {
          "type": "string",
          "description": "The current state of the managed resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of the status."
        }
      },
      "type": "object",
      "required": [
        "managedAccessIdentity",
        "message",
        "state",
        "updateTime"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetSecurityStatusResponse": {
      "description": "Security policy status of the asset. Data security policy, i.e., readers, writers & owners, should be specified in the lake/zone/asset IAM policy.",
      "properties": {
        "message": {
          "type": "string",
          "description": "Additional information about the current state."
        },
        "state": {
          "type": "string",
          "description": "The current state of the security policy applied to the attached resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of the status."
        }
      },
      "type": "object",
      "required": [
        "message",
        "state",
        "updateTime"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1AssetStatusResponse": {
      "description": "Aggregated status of the underlying assets of a lake or zone.",
      "properties": {
        "activeAssets": {
          "type": "integer",
          "description": "Number of active assets."
        },
        "securityPolicyApplyingAssets": {
          "type": "integer",
          "description": "Number of assets that are in process of updating the security policy on attached resources."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of the status."
        }
      },
      "type": "object",
      "required": [
        "activeAssets",
        "securityPolicyApplyingAssets",
        "updateTime"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ContentNotebook": {
      "description": "Configuration for Notebook content.",
      "properties": {
        "kernelType": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentNotebookKernelType",
          "description": "Kernel Type of the notebook."
        }
      },
      "type": "object",
      "required": [
        "kernelType"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ContentNotebookKernelType": {
      "description": "Required. Kernel Type of the notebook.",
      "type": "string",
      "enum": [
        {
          "name": "KernelTypeUnspecified",
          "description": "Kernel Type unspecified.",
          "value": "KERNEL_TYPE_UNSPECIFIED"
        },
        {
          "name": "Python3",
          "description": "Python 3 Kernel.",
          "value": "PYTHON3"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ContentNotebookResponse": {
      "description": "Configuration for Notebook content.",
      "properties": {
        "kernelType": {
          "type": "string",
          "description": "Kernel Type of the notebook."
        }
      },
      "type": "object",
      "required": [
        "kernelType"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ContentSqlScript": {
      "description": "Configuration for the Sql Script content.",
      "properties": {
        "engine": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentSqlScriptEngine",
          "description": "Query Engine to be used for the Sql Query."
        }
      },
      "type": "object",
      "required": [
        "engine"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ContentSqlScriptEngine": {
      "description": "Required. Query Engine to be used for the Sql Query.",
      "type": "string",
      "enum": [
        {
          "name": "QueryEngineUnspecified",
          "description": "Value was unspecified.",
          "value": "QUERY_ENGINE_UNSPECIFIED"
        },
        {
          "name": "Spark",
          "description": "Spark SQL Query.",
          "value": "SPARK"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ContentSqlScriptResponse": {
      "description": "Configuration for the Sql Script content.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "Query Engine to be used for the Sql Query."
        }
      },
      "type": "object",
      "required": [
        "engine"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataAccessSpec": {
      "description": "DataAccessSpec holds the access control configuration to be enforced on data stored within resources (eg: rows, columns in BigQuery Tables). When associated with data, the data is only accessible to principals explicitly granted access through the DataAccessSpec. Principals with access to the containing resource are not implicitly granted access.",
      "properties": {
        "readers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The format of strings follows the pattern followed by IAM in the bindings. user:{email}, serviceAccount:{email} group:{email}. The set of principals to be granted reader role on data stored within resources."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataAccessSpecResponse": {
      "description": "DataAccessSpec holds the access control configuration to be enforced on data stored within resources (eg: rows, columns in BigQuery Tables). When associated with data, the data is only accessible to principals explicitly granted access through the DataAccessSpec. Principals with access to the containing resource are not implicitly granted access.",
      "properties": {
        "readers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The format of strings follows the pattern followed by IAM in the bindings. user:{email}, serviceAccount:{email} group:{email}. The set of principals to be granted reader role on data stored within resources."
        }
      },
      "type": "object",
      "required": [
        "readers"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataAttributeBindingPath": {
      "description": "Represents a subresource of the given resource, and associated bindings with it. Currently supported subresources are column and partition schema fields within a table.",
      "properties": {
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of attributes to be associated with the path of the resource, provided in the form: projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}"
        },
        "name": {
          "type": "string",
          "description": "The name identifier of the path. Nested columns should be of the form: 'address.city'."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataAttributeBindingPathResponse": {
      "description": "Represents a subresource of the given resource, and associated bindings with it. Currently supported subresources are column and partition schema fields within a table.",
      "properties": {
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of attributes to be associated with the path of the resource, provided in the form: projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}"
        },
        "name": {
          "type": "string",
          "description": "The name identifier of the path. Nested columns should be of the form: 'address.city'."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "name"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultPostScanActionsResultBigQueryExportResultResponse": {
      "description": "The result of BigQuery export post scan action.",
      "properties": {
        "message": {
          "type": "string",
          "description": "Additional information about the BigQuery exporting."
        },
        "state": {
          "type": "string",
          "description": "Execution state for the BigQuery exporting."
        }
      },
      "type": "object",
      "required": [
        "message",
        "state"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultPostScanActionsResultResponse": {
      "description": "The result of post scan actions of DataProfileScan job.",
      "properties": {
        "bigqueryExportResult": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultPostScanActionsResultBigQueryExportResultResponse",
          "description": "The result of BigQuery export post scan action."
        }
      },
      "type": "object",
      "required": [
        "bigqueryExportResult"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoDoubleFieldInfoResponse": {
      "description": "The profile information for a double type field.",
      "properties": {
        "average": {
          "type": "number",
          "description": "Average of non-null values in the scanned data. NaN, if the field has a NaN."
        },
        "max": {
          "type": "number",
          "description": "Maximum of non-null values in the scanned data. NaN, if the field has a NaN."
        },
        "min": {
          "type": "number",
          "description": "Minimum of non-null values in the scanned data. NaN, if the field has a NaN."
        },
        "quartiles": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "A quartile divides the number of data points into four parts, or quarters, of more-or-less equal size. Three main quartiles used are: The first quartile (Q1) splits off the lowest 25% of data from the highest 75%. It is also known as the lower or 25th empirical quartile, as 25% of the data is below this point. The second quartile (Q2) is the median of a data set. So, 50% of the data lies below this point. The third quartile (Q3) splits off the highest 25% of data from the lowest 75%. It is known as the upper or 75th empirical quartile, as 75% of the data lies below this point. Here, the quartiles is provided as an ordered list of quartile values for the scanned data, occurring in order Q1, median, Q3."
        },
        "standardDeviation": {
          "type": "number",
          "description": "Standard deviation of non-null values in the scanned data. NaN, if the field has a NaN."
        }
      },
      "type": "object",
      "required": [
        "average",
        "max",
        "min",
        "quartiles",
        "standardDeviation"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoIntegerFieldInfoResponse": {
      "description": "The profile information for an integer type field.",
      "properties": {
        "average": {
          "type": "number",
          "description": "Average of non-null values in the scanned data. NaN, if the field has a NaN."
        },
        "max": {
          "type": "string",
          "description": "Maximum of non-null values in the scanned data. NaN, if the field has a NaN."
        },
        "min": {
          "type": "string",
          "description": "Minimum of non-null values in the scanned data. NaN, if the field has a NaN."
        },
        "quartiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A quartile divides the number of data points into four parts, or quarters, of more-or-less equal size. Three main quartiles used are: The first quartile (Q1) splits off the lowest 25% of data from the highest 75%. It is also known as the lower or 25th empirical quartile, as 25% of the data is below this point. The second quartile (Q2) is the median of a data set. So, 50% of the data lies below this point. The third quartile (Q3) splits off the highest 25% of data from the lowest 75%. It is known as the upper or 75th empirical quartile, as 75% of the data lies below this point. Here, the quartiles is provided as an ordered list of approximate quartile values for the scanned data, occurring in order Q1, median, Q3."
        },
        "standardDeviation": {
          "type": "number",
          "description": "Standard deviation of non-null values in the scanned data. NaN, if the field has a NaN."
        }
      },
      "type": "object",
      "required": [
        "average",
        "max",
        "min",
        "quartiles",
        "standardDeviation"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoResponse": {
      "description": "The profile information for each field type.",
      "properties": {
        "distinctRatio": {
          "type": "number",
          "description": "Ratio of rows with distinct values against total scanned rows. Not available for complex non-groupable field type RECORD and fields with REPEATABLE mode."
        },
        "doubleProfile": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoDoubleFieldInfoResponse",
          "description": "Double type field information."
        },
        "integerProfile": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoIntegerFieldInfoResponse",
          "description": "Integer type field information."
        },
        "nullRatio": {
          "type": "number",
          "description": "Ratio of rows with null value against total scanned rows."
        },
        "stringProfile": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoStringFieldInfoResponse",
          "description": "String type field information."
        },
        "topNValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoTopNValueResponse"
          },
          "description": "The list of top N non-null values, frequency and ratio with which they occur in the scanned data. N is 10 or equal to the number of distinct values in the field, whichever is smaller. Not available for complex non-groupable field type RECORD and fields with REPEATABLE mode."
        }
      },
      "type": "object",
      "required": [
        "distinctRatio",
        "doubleProfile",
        "integerProfile",
        "nullRatio",
        "stringProfile",
        "topNValues"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoStringFieldInfoResponse": {
      "description": "The profile information for a string type field.",
      "properties": {
        "averageLength": {
          "type": "number",
          "description": "Average length of non-null values in the scanned data."
        },
        "maxLength": {
          "type": "string",
          "description": "Maximum length of non-null values in the scanned data."
        },
        "minLength": {
          "type": "string",
          "description": "Minimum length of non-null values in the scanned data."
        }
      },
      "type": "object",
      "required": [
        "averageLength",
        "maxLength",
        "minLength"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoTopNValueResponse": {
      "description": "Top N non-null values in the scanned data.",
      "properties": {
        "count": {
          "type": "string",
          "description": "Count of the corresponding value in the scanned data."
        },
        "ratio": {
          "type": "number",
          "description": "Ratio of the corresponding value in the field against the total number of rows in the scanned data."
        },
        "value": {
          "type": "string",
          "description": "String value of a top N non-null value."
        }
      },
      "type": "object",
      "required": [
        "count",
        "ratio",
        "value"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultProfileFieldResponse": {
      "description": "A field within a table.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "The mode of the field. Possible values include: REQUIRED, if it is a required field. NULLABLE, if it is an optional field. REPEATED, if it is a repeated field."
        },
        "name": {
          "type": "string",
          "description": "The name of the field."
        },
        "profile": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultProfileFieldProfileInfoResponse",
          "description": "Profile information for the corresponding field."
        },
        "type": {
          "type": "string",
          "description": "The data type retrieved from the schema of the data source. For instance, for a BigQuery native table, it is the BigQuery Table Schema (https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#tablefieldschema). For a Dataplex Entity, it is the Entity Schema (https://cloud.google.com/dataplex/docs/reference/rpc/google.cloud.dataplex.v1#type_3)."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "name",
        "profile",
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultProfileResponse": {
      "description": "Contains name, type, mode and field type specific profile information.",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultProfileFieldResponse"
          },
          "description": "List of fields with structural and profile information for each field."
        }
      },
      "type": "object",
      "required": [
        "fields"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileResultResponse": {
      "description": "DataProfileResult defines the output of DataProfileScan. Each field of the table will have field type specific profile result.",
      "properties": {
        "postScanActionsResult": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultPostScanActionsResultResponse",
          "description": "The result of post scan actions."
        },
        "profile": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultProfileResponse",
          "description": "The profile information per field."
        },
        "rowCount": {
          "type": "string",
          "description": "The count of rows scanned."
        },
        "scannedData": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ScannedDataResponse",
          "description": "The data scanned for this result."
        }
      },
      "type": "object",
      "required": [
        "postScanActionsResult",
        "profile",
        "rowCount",
        "scannedData"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileSpec": {
      "description": "DataProfileScan related setting.",
      "properties": {
        "excludeFields": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecSelectedFields",
          "description": "Optional. The fields to exclude from data profile.If specified, the fields will be excluded from data profile, regardless of include_fields value."
        },
        "includeFields": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecSelectedFields",
          "description": "Optional. The fields to include in data profile.If not specified, all fields at the time of profile scan job execution are included, except for ones listed in exclude_fields."
        },
        "postScanActions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecPostScanActions",
          "description": "Optional. Actions to take upon job completion.."
        },
        "rowFilter": {
          "type": "string",
          "description": "Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in BigQuery standard SQL syntax. Example: col1 >= 0 AND col2 < 10"
        },
        "samplingPercent": {
          "type": "number",
          "description": "Optional. The percentage of the records to be selected from the dataset for DataScan. Value can range between 0.0 and 100.0 with up to 3 significant decimal digits. Sampling is not applied if sampling_percent is not specified, 0 or 100."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileSpecPostScanActions": {
      "description": "The configuration of post scan actions of DataProfileScan job.",
      "properties": {
        "bigqueryExport": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecPostScanActionsBigQueryExport",
          "description": "Optional. If set, results will be exported to the provided BigQuery table."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileSpecPostScanActionsBigQueryExport": {
      "description": "The configuration of BigQuery export post scan action.",
      "properties": {
        "resultsTable": {
          "type": "string",
          "description": "Optional. The BigQuery table to export DataProfileScan results to. Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileSpecPostScanActionsBigQueryExportResponse": {
      "description": "The configuration of BigQuery export post scan action.",
      "properties": {
        "resultsTable": {
          "type": "string",
          "description": "Optional. The BigQuery table to export DataProfileScan results to. Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      },
      "type": "object",
      "required": [
        "resultsTable"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileSpecPostScanActionsResponse": {
      "description": "The configuration of post scan actions of DataProfileScan job.",
      "properties": {
        "bigqueryExport": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecPostScanActionsBigQueryExportResponse",
          "description": "Optional. If set, results will be exported to the provided BigQuery table."
        }
      },
      "type": "object",
      "required": [
        "bigqueryExport"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileSpecResponse": {
      "description": "DataProfileScan related setting.",
      "properties": {
        "excludeFields": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecSelectedFieldsResponse",
          "description": "Optional. The fields to exclude from data profile.If specified, the fields will be excluded from data profile, regardless of include_fields value."
        },
        "includeFields": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecSelectedFieldsResponse",
          "description": "Optional. The fields to include in data profile.If not specified, all fields at the time of profile scan job execution are included, except for ones listed in exclude_fields."
        },
        "postScanActions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecPostScanActionsResponse",
          "description": "Optional. Actions to take upon job completion.."
        },
        "rowFilter": {
          "type": "string",
          "description": "Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in BigQuery standard SQL syntax. Example: col1 >= 0 AND col2 < 10"
        },
        "samplingPercent": {
          "type": "number",
          "description": "Optional. The percentage of the records to be selected from the dataset for DataScan. Value can range between 0.0 and 100.0 with up to 3 significant decimal digits. Sampling is not applied if sampling_percent is not specified, 0 or 100."
        }
      },
      "type": "object",
      "required": [
        "excludeFields",
        "includeFields",
        "postScanActions",
        "rowFilter",
        "samplingPercent"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileSpecSelectedFields": {
      "description": "The specification for fields to include or exclude in data profile scan.",
      "properties": {
        "fieldNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Expected input is a list of fully qualified names of fields as in the schema.Only top-level field names for nested fields are supported. For instance, if 'x' is of nested field type, listing 'x' is supported but 'x.y.z' is not supported. Here 'y' and 'y.z' are nested fields of 'x'."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataProfileSpecSelectedFieldsResponse": {
      "description": "The specification for fields to include or exclude in data profile scan.",
      "properties": {
        "fieldNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Expected input is a list of fully qualified names of fields as in the schema.Only top-level field names for nested fields are supported. For instance, if 'x' is of nested field type, listing 'x' is supported but 'x.y.z' is not supported. Here 'y' and 'y.z' are nested fields of 'x'."
        }
      },
      "type": "object",
      "required": [
        "fieldNames"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityColumnResultResponse": {
      "description": "DataQualityColumnResult provides a more detailed, per-column view of the results.",
      "properties": {
        "column": {
          "type": "string",
          "description": "The column specified in the DataQualityRule."
        },
        "score": {
          "type": "number",
          "description": "The column-level data quality score for this data scan job if and only if the 'column' field is set.The score ranges between between 0, 100 (up to two decimal points)."
        }
      },
      "type": "object",
      "required": [
        "column",
        "score"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityDimensionResponse": {
      "description": "A dimension captures data quality intent about a defined subset of the rules specified.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The dimension name a rule belongs to. Supported dimensions are \"COMPLETENESS\", \"ACCURACY\", \"CONSISTENCY\", \"VALIDITY\", \"UNIQUENESS\", \"INTEGRITY\""
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityDimensionResultResponse": {
      "description": "DataQualityDimensionResult provides a more detailed, per-dimension view of the results.",
      "properties": {
        "dimension": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityDimensionResponse",
          "description": "The dimension config specified in the DataQualitySpec, as is."
        },
        "passed": {
          "type": "boolean",
          "description": "Whether the dimension passed or failed."
        },
        "score": {
          "type": "number",
          "description": "The dimension-level data quality score for this data scan job if and only if the 'dimension' field is set.The score ranges between 0, 100 (up to two decimal points)."
        }
      },
      "type": "object",
      "required": [
        "dimension",
        "passed",
        "score"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityResultPostScanActionsResultBigQueryExportResultResponse": {
      "description": "The result of BigQuery export post scan action.",
      "properties": {
        "message": {
          "type": "string",
          "description": "Additional information about the BigQuery exporting."
        },
        "state": {
          "type": "string",
          "description": "Execution state for the BigQuery exporting."
        }
      },
      "type": "object",
      "required": [
        "message",
        "state"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityResultPostScanActionsResultResponse": {
      "description": "The result of post scan actions of DataQualityScan job.",
      "properties": {
        "bigqueryExportResult": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityResultPostScanActionsResultBigQueryExportResultResponse",
          "description": "The result of BigQuery export post scan action."
        }
      },
      "type": "object",
      "required": [
        "bigqueryExportResult"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityResultResponse": {
      "description": "The output of a DataQualityScan.",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityColumnResultResponse"
          },
          "description": "A list of results at the column level.A column will have a corresponding DataQualityColumnResult if and only if there is at least one rule with the 'column' field set to it."
        },
        "dimensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityDimensionResultResponse"
          },
          "description": "A list of results at the dimension level.A dimension will have a corresponding DataQualityDimensionResult if and only if there is at least one rule with the 'dimension' field set to it."
        },
        "passed": {
          "type": "boolean",
          "description": "Overall data quality result -- true if all rules passed."
        },
        "postScanActionsResult": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityResultPostScanActionsResultResponse",
          "description": "The result of post scan actions."
        },
        "rowCount": {
          "type": "string",
          "description": "The count of rows processed."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleResultResponse"
          },
          "description": "A list of all the rules in a job, and their results."
        },
        "scannedData": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ScannedDataResponse",
          "description": "The data scanned for this result."
        },
        "score": {
          "type": "number",
          "description": "The overall data quality score.The score ranges between 0, 100 (up to two decimal points)."
        }
      },
      "type": "object",
      "required": [
        "columns",
        "dimensions",
        "passed",
        "postScanActionsResult",
        "rowCount",
        "rules",
        "scannedData",
        "score"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRule": {
      "description": "A rule captures data quality intent about a data source.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Optional. The unnested column which this rule is evaluated against."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the rule. The maximum length is 1,024 characters."
        },
        "dimension": {
          "type": "string",
          "description": "The dimension a rule belongs to. Results are also aggregated at the dimension level. Supported dimensions are \"COMPLETENESS\", \"ACCURACY\", \"CONSISTENCY\", \"VALIDITY\", \"UNIQUENESS\", \"INTEGRITY\""
        },
        "ignoreNull": {
          "type": "boolean",
          "description": "Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.This field is only valid for row-level type rules."
        },
        "name": {
          "type": "string",
          "description": "Optional. A mutable name for the rule. The name must contain only letters (a-z, A-Z), numbers (0-9), or hyphens (-). The maximum length is 63 characters. Must start with a letter. Must end with a number or a letter."
        },
        "nonNullExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleNonNullExpectation",
          "description": "Row-level rule which evaluates whether each column value is null."
        },
        "rangeExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleRangeExpectation",
          "description": "Row-level rule which evaluates whether each column value lies between a specified range."
        },
        "regexExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleRegexExpectation",
          "description": "Row-level rule which evaluates whether each column value matches a specified regex."
        },
        "rowConditionExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleRowConditionExpectation",
          "description": "Row-level rule which evaluates whether each row in a table passes the specified condition."
        },
        "setExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleSetExpectation",
          "description": "Row-level rule which evaluates whether each column value is contained by a specified set."
        },
        "statisticRangeExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleStatisticRangeExpectation",
          "description": "Aggregate rule which evaluates whether the column aggregate statistic lies between a specified range."
        },
        "tableConditionExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleTableConditionExpectation",
          "description": "Aggregate rule which evaluates whether the provided expression is true for a table."
        },
        "threshold": {
          "type": "number",
          "description": "Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).This field is only valid for row-level type rules."
        },
        "uniquenessExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleUniquenessExpectation",
          "description": "Row-level rule which evaluates whether each column value is unique."
        }
      },
      "type": "object",
      "required": [
        "dimension"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleNonNullExpectation": {
      "description": "Evaluates whether each column value is null.",
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleNonNullExpectationResponse": {
      "description": "Evaluates whether each column value is null.",
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleRangeExpectation": {
      "description": "Evaluates whether each column value lies between a specified range.",
      "properties": {
        "maxValue": {
          "type": "string",
          "description": "Optional. The maximum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided."
        },
        "minValue": {
          "type": "string",
          "description": "Optional. The minimum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided."
        },
        "strictMaxEnabled": {
          "type": "boolean",
          "description": "Optional. Whether each value needs to be strictly lesser than ('<') the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false."
        },
        "strictMinEnabled": {
          "type": "boolean",
          "description": "Optional. Whether each value needs to be strictly greater than ('>') the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleRangeExpectationResponse": {
      "description": "Evaluates whether each column value lies between a specified range.",
      "properties": {
        "maxValue": {
          "type": "string",
          "description": "Optional. The maximum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided."
        },
        "minValue": {
          "type": "string",
          "description": "Optional. The minimum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided."
        },
        "strictMaxEnabled": {
          "type": "boolean",
          "description": "Optional. Whether each value needs to be strictly lesser than ('<') the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false."
        },
        "strictMinEnabled": {
          "type": "boolean",
          "description": "Optional. Whether each value needs to be strictly greater than ('>') the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue",
        "strictMaxEnabled",
        "strictMinEnabled"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleRegexExpectation": {
      "description": "Evaluates whether each column value matches a specified regex.",
      "properties": {
        "regex": {
          "type": "string",
          "description": "Optional. A regular expression the column value is expected to match."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleRegexExpectationResponse": {
      "description": "Evaluates whether each column value matches a specified regex.",
      "properties": {
        "regex": {
          "type": "string",
          "description": "Optional. A regular expression the column value is expected to match."
        }
      },
      "type": "object",
      "required": [
        "regex"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleResponse": {
      "description": "A rule captures data quality intent about a data source.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Optional. The unnested column which this rule is evaluated against."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the rule. The maximum length is 1,024 characters."
        },
        "dimension": {
          "type": "string",
          "description": "The dimension a rule belongs to. Results are also aggregated at the dimension level. Supported dimensions are \"COMPLETENESS\", \"ACCURACY\", \"CONSISTENCY\", \"VALIDITY\", \"UNIQUENESS\", \"INTEGRITY\""
        },
        "ignoreNull": {
          "type": "boolean",
          "description": "Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.This field is only valid for row-level type rules."
        },
        "name": {
          "type": "string",
          "description": "Optional. A mutable name for the rule. The name must contain only letters (a-z, A-Z), numbers (0-9), or hyphens (-). The maximum length is 63 characters. Must start with a letter. Must end with a number or a letter."
        },
        "nonNullExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleNonNullExpectationResponse",
          "description": "Row-level rule which evaluates whether each column value is null."
        },
        "rangeExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleRangeExpectationResponse",
          "description": "Row-level rule which evaluates whether each column value lies between a specified range."
        },
        "regexExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleRegexExpectationResponse",
          "description": "Row-level rule which evaluates whether each column value matches a specified regex."
        },
        "rowConditionExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleRowConditionExpectationResponse",
          "description": "Row-level rule which evaluates whether each row in a table passes the specified condition."
        },
        "setExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleSetExpectationResponse",
          "description": "Row-level rule which evaluates whether each column value is contained by a specified set."
        },
        "statisticRangeExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleStatisticRangeExpectationResponse",
          "description": "Aggregate rule which evaluates whether the column aggregate statistic lies between a specified range."
        },
        "tableConditionExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleTableConditionExpectationResponse",
          "description": "Aggregate rule which evaluates whether the provided expression is true for a table."
        },
        "threshold": {
          "type": "number",
          "description": "Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).This field is only valid for row-level type rules."
        },
        "uniquenessExpectation": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleUniquenessExpectationResponse",
          "description": "Row-level rule which evaluates whether each column value is unique."
        }
      },
      "type": "object",
      "required": [
        "column",
        "description",
        "dimension",
        "ignoreNull",
        "name",
        "nonNullExpectation",
        "rangeExpectation",
        "regexExpectation",
        "rowConditionExpectation",
        "setExpectation",
        "statisticRangeExpectation",
        "tableConditionExpectation",
        "threshold",
        "uniquenessExpectation"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleResultResponse": {
      "description": "DataQualityRuleResult provides a more detailed, per-rule view of the results.",
      "properties": {
        "evaluatedCount": {
          "type": "string",
          "description": "The number of rows a rule was evaluated against.This field is only valid for row-level type rules.Evaluated count can be configured to either include all rows (default) - with null rows automatically failing rule evaluation, or exclude null rows from the evaluated_count, by setting ignore_nulls = true."
        },
        "failingRowsQuery": {
          "type": "string",
          "description": "The query to find rows that did not pass this rule.This field is only valid for row-level type rules."
        },
        "nullCount": {
          "type": "string",
          "description": "The number of rows with null values in the specified column."
        },
        "passRatio": {
          "type": "number",
          "description": "The ratio of passed_count / evaluated_count.This field is only valid for row-level type rules."
        },
        "passed": {
          "type": "boolean",
          "description": "Whether the rule passed or failed."
        },
        "passedCount": {
          "type": "string",
          "description": "The number of rows which passed a rule evaluation.This field is only valid for row-level type rules."
        },
        "rule": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleResponse",
          "description": "The rule specified in the DataQualitySpec, as is."
        }
      },
      "type": "object",
      "required": [
        "evaluatedCount",
        "failingRowsQuery",
        "nullCount",
        "passRatio",
        "passed",
        "passedCount",
        "rule"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleRowConditionExpectation": {
      "description": "Evaluates whether each row passes the specified condition.The SQL expression needs to use BigQuery standard SQL syntax and should produce a boolean value per row as the result.Example: col1 >= 0 AND col2 < 10",
      "properties": {
        "sqlExpression": {
          "type": "string",
          "description": "Optional. The SQL expression."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleRowConditionExpectationResponse": {
      "description": "Evaluates whether each row passes the specified condition.The SQL expression needs to use BigQuery standard SQL syntax and should produce a boolean value per row as the result.Example: col1 >= 0 AND col2 < 10",
      "properties": {
        "sqlExpression": {
          "type": "string",
          "description": "Optional. The SQL expression."
        }
      },
      "type": "object",
      "required": [
        "sqlExpression"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleSetExpectation": {
      "description": "Evaluates whether each column value is contained by a specified set.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Expected values for the column value."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleSetExpectationResponse": {
      "description": "Evaluates whether each column value is contained by a specified set.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Expected values for the column value."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleStatisticRangeExpectation": {
      "description": "Evaluates whether the column aggregate statistic lies between a specified range.",
      "properties": {
        "maxValue": {
          "type": "string",
          "description": "Optional. The maximum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided."
        },
        "minValue": {
          "type": "string",
          "description": "Optional. The minimum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided."
        },
        "statistic": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleStatisticRangeExpectationStatistic",
          "description": "Optional. The aggregate metric to evaluate."
        },
        "strictMaxEnabled": {
          "type": "boolean",
          "description": "Optional. Whether column statistic needs to be strictly lesser than ('<') the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false."
        },
        "strictMinEnabled": {
          "type": "boolean",
          "description": "Optional. Whether column statistic needs to be strictly greater than ('>') the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleStatisticRangeExpectationResponse": {
      "description": "Evaluates whether the column aggregate statistic lies between a specified range.",
      "properties": {
        "maxValue": {
          "type": "string",
          "description": "Optional. The maximum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided."
        },
        "minValue": {
          "type": "string",
          "description": "Optional. The minimum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided."
        },
        "statistic": {
          "type": "string",
          "description": "Optional. The aggregate metric to evaluate."
        },
        "strictMaxEnabled": {
          "type": "boolean",
          "description": "Optional. Whether column statistic needs to be strictly lesser than ('<') the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false."
        },
        "strictMinEnabled": {
          "type": "boolean",
          "description": "Optional. Whether column statistic needs to be strictly greater than ('>') the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue",
        "statistic",
        "strictMaxEnabled",
        "strictMinEnabled"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleStatisticRangeExpectationStatistic": {
      "description": "Optional. The aggregate metric to evaluate.",
      "type": "string",
      "enum": [
        {
          "name": "StatisticUndefined",
          "description": "Unspecified statistic type",
          "value": "STATISTIC_UNDEFINED"
        },
        {
          "name": "Mean",
          "description": "Evaluate the column mean",
          "value": "MEAN"
        },
        {
          "name": "Min",
          "description": "Evaluate the column min",
          "value": "MIN"
        },
        {
          "name": "Max",
          "description": "Evaluate the column max",
          "value": "MAX"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleTableConditionExpectation": {
      "description": "Evaluates whether the provided expression is true.The SQL expression needs to use BigQuery standard SQL syntax and should produce a scalar boolean result.Example: MIN(col1) >= 0",
      "properties": {
        "sqlExpression": {
          "type": "string",
          "description": "Optional. The SQL expression."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleTableConditionExpectationResponse": {
      "description": "Evaluates whether the provided expression is true.The SQL expression needs to use BigQuery standard SQL syntax and should produce a scalar boolean result.Example: MIN(col1) >= 0",
      "properties": {
        "sqlExpression": {
          "type": "string",
          "description": "Optional. The SQL expression."
        }
      },
      "type": "object",
      "required": [
        "sqlExpression"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleUniquenessExpectation": {
      "description": "Evaluates whether the column has duplicates.",
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualityRuleUniquenessExpectationResponse": {
      "description": "Evaluates whether the column has duplicates.",
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualitySpec": {
      "description": "DataQualityScan related setting.",
      "properties": {
        "postScanActions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualitySpecPostScanActions",
          "description": "Optional. Actions to take upon job completion."
        },
        "rowFilter": {
          "type": "string",
          "description": "Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in BigQuery standard SQL syntax. Example: col1 >= 0 AND col2 < 10"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRule"
          },
          "description": "The list of rules to evaluate against a data source. At least one rule is required."
        },
        "samplingPercent": {
          "type": "number",
          "description": "Optional. The percentage of the records to be selected from the dataset for DataScan. Value can range between 0.0 and 100.0 with up to 3 significant decimal digits. Sampling is not applied if sampling_percent is not specified, 0 or 100."
        }
      },
      "type": "object",
      "required": [
        "rules"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualitySpecPostScanActions": {
      "description": "The configuration of post scan actions of DataQualityScan.",
      "properties": {
        "bigqueryExport": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualitySpecPostScanActionsBigQueryExport",
          "description": "Optional. If set, results will be exported to the provided BigQuery table."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualitySpecPostScanActionsBigQueryExport": {
      "description": "The configuration of BigQuery export post scan action.",
      "properties": {
        "resultsTable": {
          "type": "string",
          "description": "Optional. The BigQuery table to export DataQualityScan results to. Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualitySpecPostScanActionsBigQueryExportResponse": {
      "description": "The configuration of BigQuery export post scan action.",
      "properties": {
        "resultsTable": {
          "type": "string",
          "description": "Optional. The BigQuery table to export DataQualityScan results to. Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      },
      "type": "object",
      "required": [
        "resultsTable"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualitySpecPostScanActionsResponse": {
      "description": "The configuration of post scan actions of DataQualityScan.",
      "properties": {
        "bigqueryExport": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualitySpecPostScanActionsBigQueryExportResponse",
          "description": "Optional. If set, results will be exported to the provided BigQuery table."
        }
      },
      "type": "object",
      "required": [
        "bigqueryExport"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataQualitySpecResponse": {
      "description": "DataQualityScan related setting.",
      "properties": {
        "postScanActions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualitySpecPostScanActionsResponse",
          "description": "Optional. Actions to take upon job completion."
        },
        "rowFilter": {
          "type": "string",
          "description": "Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in BigQuery standard SQL syntax. Example: col1 >= 0 AND col2 < 10"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityRuleResponse"
          },
          "description": "The list of rules to evaluate against a data source. At least one rule is required."
        },
        "samplingPercent": {
          "type": "number",
          "description": "Optional. The percentage of the records to be selected from the dataset for DataScan. Value can range between 0.0 and 100.0 with up to 3 significant decimal digits. Sampling is not applied if sampling_percent is not specified, 0 or 100."
        }
      },
      "type": "object",
      "required": [
        "postScanActions",
        "rowFilter",
        "rules",
        "samplingPercent"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataScanExecutionSpec": {
      "description": "DataScan execution settings.",
      "properties": {
        "field": {
          "type": "string",
          "description": "Immutable. The unnested field (of type Date or Timestamp) that contains values which monotonically increase over time.If not specified, a data scan will run for all data in the table."
        },
        "trigger": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1Trigger",
          "description": "Optional. Spec related to how often and when a scan should be triggered.If not specified, the default is OnDemand, which means the scan will not run until the user calls RunDataScan API."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataScanExecutionSpecResponse": {
      "description": "DataScan execution settings.",
      "properties": {
        "field": {
          "type": "string",
          "description": "Immutable. The unnested field (of type Date or Timestamp) that contains values which monotonically increase over time.If not specified, a data scan will run for all data in the table."
        },
        "trigger": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TriggerResponse",
          "description": "Optional. Spec related to how often and when a scan should be triggered.If not specified, the default is OnDemand, which means the scan will not run until the user calls RunDataScan API."
        }
      },
      "type": "object",
      "required": [
        "field",
        "trigger"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataScanExecutionStatusResponse": {
      "description": "Status of the data scan execution.",
      "properties": {
        "latestJobEndTime": {
          "type": "string",
          "description": "The time when the latest DataScanJob ended."
        },
        "latestJobStartTime": {
          "type": "string",
          "description": "The time when the latest DataScanJob started."
        }
      },
      "type": "object",
      "required": [
        "latestJobEndTime",
        "latestJobStartTime"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataSource": {
      "description": "The data source for DataScan.",
      "properties": {
        "entity": {
          "type": "string",
          "description": "Immutable. The Dataplex entity that represents the data source (e.g. BigQuery table) for DataScan, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}."
        },
        "resource": {
          "type": "string",
          "description": "Immutable. The service-qualified full resource name of the cloud resource for a DataScan job to scan against. The field could be: BigQuery table of type \"TABLE\" for DataProfileScan/DataQualityScan Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1DataSourceResponse": {
      "description": "The data source for DataScan.",
      "properties": {
        "entity": {
          "type": "string",
          "description": "Immutable. The Dataplex entity that represents the data source (e.g. BigQuery table) for DataScan, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}."
        },
        "resource": {
          "type": "string",
          "description": "Immutable. The service-qualified full resource name of the cloud resource for a DataScan job to scan against. The field could be: BigQuery table of type \"TABLE\" for DataProfileScan/DataQualityScan Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      },
      "type": "object",
      "required": [
        "entity",
        "resource"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EntityCompatibilityStatusCompatibilityResponse": {
      "description": "Provides compatibility information for a specific metadata store.",
      "properties": {
        "compatible": {
          "type": "boolean",
          "description": "Whether the entity is compatible and can be represented in the metadata store."
        },
        "reason": {
          "type": "string",
          "description": "Provides additional detail if the entity is incompatible with the metadata store."
        }
      },
      "type": "object",
      "required": [
        "compatible",
        "reason"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EntityCompatibilityStatusResponse": {
      "description": "Provides compatibility information for various metadata stores.",
      "properties": {
        "bigquery": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EntityCompatibilityStatusCompatibilityResponse",
          "description": "Whether this entity is compatible with BigQuery."
        },
        "hiveMetastore": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EntityCompatibilityStatusCompatibilityResponse",
          "description": "Whether this entity is compatible with Hive Metastore."
        }
      },
      "type": "object",
      "required": [
        "bigquery",
        "hiveMetastore"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentEndpointsResponse": {
      "description": "URI Endpoints to access sessions associated with the Environment.",
      "properties": {
        "notebooks": {
          "type": "string",
          "description": "URI to serve notebook APIs"
        },
        "sql": {
          "type": "string",
          "description": "URI to serve SQL APIs"
        }
      },
      "type": "object",
      "required": [
        "notebooks",
        "sql"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentInfrastructureSpec": {
      "description": "Configuration for the underlying infrastructure used to run workloads.",
      "properties": {
        "compute": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources",
          "description": "Optional. Compute resources needed for analyze interactive workloads."
        },
        "osImage": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime",
          "description": "Software Runtime Configuration for analyze interactive workloads."
        }
      },
      "type": "object",
      "required": [
        "osImage"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResources": {
      "description": "Compute resources associated with the analyze interactive workloads.",
      "properties": {
        "diskSizeGb": {
          "type": "integer",
          "description": "Optional. Size in GB of the disk. Default is 100 GB."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "Optional. Max configurable nodes. If max_node_count > node_count, then auto-scaling is enabled."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Optional. Total number of nodes in the sessions created for this environment."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResourcesResponse": {
      "description": "Compute resources associated with the analyze interactive workloads.",
      "properties": {
        "diskSizeGb": {
          "type": "integer",
          "description": "Optional. Size in GB of the disk. Default is 100 GB."
        },
        "maxNodeCount": {
          "type": "integer",
          "description": "Optional. Max configurable nodes. If max_node_count > node_count, then auto-scaling is enabled."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Optional. Total number of nodes in the sessions created for this environment."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "maxNodeCount",
        "nodeCount"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntime": {
      "description": "Software Runtime Configuration to run Analyze.",
      "properties": {
        "imageVersion": {
          "type": "string",
          "description": "Dataplex Image version."
        },
        "javaLibraries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of Java jars to be included in the runtime environment. Valid input includes Cloud Storage URIs to Jar binaries. For example, gs://bucket-name/my/path/to/file.jar"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Spark properties to provide configuration for use in sessions created for this environment. The properties to set on daemon config files. Property keys are specified in prefix:property format. The prefix must be \"spark\"."
        },
        "pythonPackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of python packages to be installed. Valid formats include Cloud Storage URI to a PIP installable library. For example, gs://bucket-name/my/path/to/lib.tar.gz"
        }
      },
      "type": "object",
      "required": [
        "imageVersion"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntimeResponse": {
      "description": "Software Runtime Configuration to run Analyze.",
      "properties": {
        "imageVersion": {
          "type": "string",
          "description": "Dataplex Image version."
        },
        "javaLibraries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of Java jars to be included in the runtime environment. Valid input includes Cloud Storage URIs to Jar binaries. For example, gs://bucket-name/my/path/to/file.jar"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Spark properties to provide configuration for use in sessions created for this environment. The properties to set on daemon config files. Property keys are specified in prefix:property format. The prefix must be \"spark\"."
        },
        "pythonPackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of python packages to be installed. Valid formats include Cloud Storage URI to a PIP installable library. For example, gs://bucket-name/my/path/to/lib.tar.gz"
        }
      },
      "type": "object",
      "required": [
        "imageVersion",
        "javaLibraries",
        "properties",
        "pythonPackages"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecResponse": {
      "description": "Configuration for the underlying infrastructure used to run workloads.",
      "properties": {
        "compute": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecComputeResourcesResponse",
          "description": "Optional. Compute resources needed for analyze interactive workloads."
        },
        "osImage": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecOsImageRuntimeResponse",
          "description": "Software Runtime Configuration for analyze interactive workloads."
        }
      },
      "type": "object",
      "required": [
        "compute",
        "osImage"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentSessionSpec": {
      "description": "Configuration for sessions created for this environment.",
      "properties": {
        "enableFastStartup": {
          "type": "boolean",
          "description": "Optional. If True, this causes sessions to be pre-created and available for faster startup to enable interactive exploration use-cases. This defaults to False to avoid additional billed charges. These can only be set to True for the environment with name set to \"default\", and with default configuration."
        },
        "maxIdleDuration": {
          "type": "string",
          "description": "Optional. The idle time configuration of the session. The session will be auto-terminated at the end of this period."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentSessionSpecResponse": {
      "description": "Configuration for sessions created for this environment.",
      "properties": {
        "enableFastStartup": {
          "type": "boolean",
          "description": "Optional. If True, this causes sessions to be pre-created and available for faster startup to enable interactive exploration use-cases. This defaults to False to avoid additional billed charges. These can only be set to True for the environment with name set to \"default\", and with default configuration."
        },
        "maxIdleDuration": {
          "type": "string",
          "description": "Optional. The idle time configuration of the session. The session will be auto-terminated at the end of this period."
        }
      },
      "type": "object",
      "required": [
        "enableFastStartup",
        "maxIdleDuration"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1EnvironmentSessionStatusResponse": {
      "description": "Status of sessions created for this environment.",
      "properties": {
        "active": {
          "type": "boolean",
          "description": "Queries over sessions to mark whether the environment is currently active or not"
        }
      },
      "type": "object",
      "required": [
        "active"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1JobResponse": {
      "description": "A job represents an instance of a task.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time when the job ended."
        },
        "executionSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskExecutionSpecResponse",
          "description": "Spec related to how a task is executed."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the task."
        },
        "message": {
          "type": "string",
          "description": "Additional information about the current state."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the job, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/tasks/{task_id}/jobs/{job_id}."
        },
        "retryCount": {
          "type": "integer",
          "description": "The number of times the job has been retried (excluding the initial attempt)."
        },
        "service": {
          "type": "string",
          "description": "The underlying service running a job."
        },
        "serviceJob": {
          "type": "string",
          "description": "The full resource name for the job run under a particular service."
        },
        "startTime": {
          "type": "string",
          "description": "The time when the job was started."
        },
        "state": {
          "type": "string",
          "description": "Execution state for the job."
        },
        "trigger": {
          "type": "string",
          "description": "Job execution trigger."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the job."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "executionSpec",
        "labels",
        "message",
        "name",
        "retryCount",
        "service",
        "serviceJob",
        "startTime",
        "state",
        "trigger",
        "uid"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1LakeMetastore": {
      "description": "Settings to manage association of Dataproc Metastore with a lake.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Optional. A relative reference to the Dataproc Metastore (https://cloud.google.com/dataproc-metastore/docs) service associated with the lake: projects/{project_id}/locations/{location_id}/services/{service_id}"
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1LakeMetastoreResponse": {
      "description": "Settings to manage association of Dataproc Metastore with a lake.",
      "properties": {
        "service": {
          "type": "string",
          "description": "Optional. A relative reference to the Dataproc Metastore (https://cloud.google.com/dataproc-metastore/docs) service associated with the lake: projects/{project_id}/locations/{location_id}/services/{service_id}"
        }
      },
      "type": "object",
      "required": [
        "service"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1LakeMetastoreStatusResponse": {
      "description": "Status of Lake and Dataproc Metastore service instance association.",
      "properties": {
        "endpoint": {
          "type": "string",
          "description": "The URI of the endpoint used to access the Metastore service."
        },
        "message": {
          "type": "string",
          "description": "Additional information about the current status."
        },
        "state": {
          "type": "string",
          "description": "Current state of association."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of the metastore status of the lake."
        }
      },
      "type": "object",
      "required": [
        "endpoint",
        "message",
        "state",
        "updateTime"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ResourceAccessSpec": {
      "description": "ResourceAccessSpec holds the access control configuration to be enforced on the resources, for example, Cloud Storage bucket, BigQuery dataset, BigQuery table.",
      "properties": {
        "owners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of principals to be granted owner role on the resource."
        },
        "readers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The format of strings follows the pattern followed by IAM in the bindings. user:{email}, serviceAccount:{email} group:{email}. The set of principals to be granted reader role on the resource."
        },
        "writers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of principals to be granted writer role on the resource."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ResourceAccessSpecResponse": {
      "description": "ResourceAccessSpec holds the access control configuration to be enforced on the resources, for example, Cloud Storage bucket, BigQuery dataset, BigQuery table.",
      "properties": {
        "owners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of principals to be granted owner role on the resource."
        },
        "readers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The format of strings follows the pattern followed by IAM in the bindings. user:{email}, serviceAccount:{email} group:{email}. The set of principals to be granted reader role on the resource."
        },
        "writers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of principals to be granted writer role on the resource."
        }
      },
      "type": "object",
      "required": [
        "owners",
        "readers",
        "writers"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ScannedDataIncrementalFieldResponse": {
      "description": "A data range denoted by a pair of start/end values of a field.",
      "properties": {
        "end": {
          "type": "string",
          "description": "Value that marks the end of the range."
        },
        "field": {
          "type": "string",
          "description": "The field that contains values which monotonically increases over time (e.g. a timestamp column)."
        },
        "start": {
          "type": "string",
          "description": "Value that marks the start of the range."
        }
      },
      "type": "object",
      "required": [
        "end",
        "field",
        "start"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ScannedDataResponse": {
      "description": "The data scanned during processing (e.g. in incremental DataScan)",
      "properties": {
        "incrementalField": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ScannedDataIncrementalFieldResponse",
          "description": "The range denoted by values of an incremental field"
        }
      },
      "type": "object",
      "required": [
        "incrementalField"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1Schema": {
      "description": "Schema information describing the structure and layout of the data.",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaSchemaField"
          },
          "description": "Optional. The sequence of fields describing data in table entities. Note: BigQuery SchemaFields are immutable."
        },
        "partitionFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaPartitionField"
          },
          "description": "Optional. The sequence of fields describing the partition structure in entities. If this field is empty, there are no partitions within the data."
        },
        "partitionStyle": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaPartitionStyle",
          "description": "Optional. The structure of paths containing partition data within the entity."
        },
        "userManaged": {
          "type": "boolean",
          "description": "Set to true if user-managed or false if managed by Dataplex. The default is false (managed by Dataplex). Set to falseto enable Dataplex discovery to update the schema. including new data discovery, schema inference, and schema evolution. Users retain the ability to input and edit the schema. Dataplex treats schema input by the user as though produced by a previous Dataplex discovery operation, and it will evolve the schema and take action based on that treatment. Set to true to fully manage the entity schema. This setting guarantees that Dataplex will not change schema fields."
        }
      },
      "type": "object",
      "required": [
        "userManaged"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaPartitionField": {
      "description": "Represents a key field within the entity's partition structure. You could have up to 20 partition fields, but only the first 10 partitions have the filtering ability due to performance consideration. Note: Partition fields are immutable.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Partition field name must consist of letters, numbers, and underscores only, with a maximum of length of 256 characters, and must begin with a letter or underscore.."
        },
        "type": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaPartitionFieldType",
          "description": "Immutable. The type of field."
        }
      },
      "type": "object",
      "required": [
        "name",
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaPartitionFieldResponse": {
      "description": "Represents a key field within the entity's partition structure. You could have up to 20 partition fields, but only the first 10 partitions have the filtering ability due to performance consideration. Note: Partition fields are immutable.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Partition field name must consist of letters, numbers, and underscores only, with a maximum of length of 256 characters, and must begin with a letter or underscore.."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of field."
        }
      },
      "type": "object",
      "required": [
        "name",
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaPartitionFieldType": {
      "description": "Required. Immutable. The type of field.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "SchemaType unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Boolean",
          "description": "Boolean field.",
          "value": "BOOLEAN"
        },
        {
          "name": "Byte",
          "description": "Single byte numeric field.",
          "value": "BYTE"
        },
        {
          "name": "Int16",
          "description": "16-bit numeric field.",
          "value": "INT16"
        },
        {
          "name": "Int32",
          "description": "32-bit numeric field.",
          "value": "INT32"
        },
        {
          "name": "Int64",
          "description": "64-bit numeric field.",
          "value": "INT64"
        },
        {
          "name": "Float",
          "description": "Floating point numeric field.",
          "value": "FLOAT"
        },
        {
          "name": "Double",
          "description": "Double precision numeric field.",
          "value": "DOUBLE"
        },
        {
          "name": "Decimal",
          "description": "Real value numeric field.",
          "value": "DECIMAL"
        },
        {
          "name": "String",
          "description": "Sequence of characters field.",
          "value": "STRING"
        },
        {
          "name": "Binary",
          "description": "Sequence of bytes field.",
          "value": "BINARY"
        },
        {
          "name": "Timestamp",
          "description": "Date and time field.",
          "value": "TIMESTAMP"
        },
        {
          "name": "Date",
          "description": "Date field.",
          "value": "DATE"
        },
        {
          "name": "Time",
          "description": "Time field.",
          "value": "TIME"
        },
        {
          "name": "Record",
          "description": "Structured field. Nested fields that define the structure of the map. If all nested fields are nullable, this field represents a union.",
          "value": "RECORD"
        },
        {
          "name": "Null",
          "description": "Null field that does not have values.",
          "value": "NULL"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaPartitionStyle": {
      "description": "Optional. The structure of paths containing partition data within the entity.",
      "type": "string",
      "enum": [
        {
          "name": "PartitionStyleUnspecified",
          "description": "PartitionStyle unspecified",
          "value": "PARTITION_STYLE_UNSPECIFIED"
        },
        {
          "name": "HiveCompatible",
          "description": "Partitions are hive-compatible. Examples: gs://bucket/path/to/table/dt=2019-10-31/lang=en, gs://bucket/path/to/table/dt=2019-10-31/lang=en/late.",
          "value": "HIVE_COMPATIBLE"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaResponse": {
      "description": "Schema information describing the structure and layout of the data.",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaSchemaFieldResponse"
          },
          "description": "Optional. The sequence of fields describing data in table entities. Note: BigQuery SchemaFields are immutable."
        },
        "partitionFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaPartitionFieldResponse"
          },
          "description": "Optional. The sequence of fields describing the partition structure in entities. If this field is empty, there are no partitions within the data."
        },
        "partitionStyle": {
          "type": "string",
          "description": "Optional. The structure of paths containing partition data within the entity."
        },
        "userManaged": {
          "type": "boolean",
          "description": "Set to true if user-managed or false if managed by Dataplex. The default is false (managed by Dataplex). Set to falseto enable Dataplex discovery to update the schema. including new data discovery, schema inference, and schema evolution. Users retain the ability to input and edit the schema. Dataplex treats schema input by the user as though produced by a previous Dataplex discovery operation, and it will evolve the schema and take action based on that treatment. Set to true to fully manage the entity schema. This setting guarantees that Dataplex will not change schema fields."
        }
      },
      "type": "object",
      "required": [
        "fields",
        "partitionFields",
        "partitionStyle",
        "userManaged"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaSchemaField": {
      "description": "Represents a column field within a table schema.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User friendly field description. Must be less than or equal to 1024 characters."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaSchemaField"
          },
          "description": "Optional. Any nested field for complex types."
        },
        "mode": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaSchemaFieldMode",
          "description": "Additional field semantics."
        },
        "name": {
          "type": "string",
          "description": "The name of the field. Must contain only letters, numbers and underscores, with a maximum length of 767 characters, and must begin with a letter or underscore."
        },
        "type": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaSchemaFieldType",
          "description": "The type of field."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "name",
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaSchemaFieldMode": {
      "description": "Required. Additional field semantics.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Mode unspecified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Required",
          "description": "The field has required semantics.",
          "value": "REQUIRED"
        },
        {
          "name": "Nullable",
          "description": "The field has optional semantics, and may be null.",
          "value": "NULLABLE"
        },
        {
          "name": "Repeated",
          "description": "The field has repeated (0 or more) semantics, and is a list of values.",
          "value": "REPEATED"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaSchemaFieldResponse": {
      "description": "Represents a column field within a table schema.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User friendly field description. Must be less than or equal to 1024 characters."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaSchemaFieldResponse"
          },
          "description": "Optional. Any nested field for complex types."
        },
        "mode": {
          "type": "string",
          "description": "Additional field semantics."
        },
        "name": {
          "type": "string",
          "description": "The name of the field. Must contain only letters, numbers and underscores, with a maximum length of 767 characters, and must begin with a letter or underscore."
        },
        "type": {
          "type": "string",
          "description": "The type of field."
        }
      },
      "type": "object",
      "required": [
        "description",
        "fields",
        "mode",
        "name",
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1SchemaSchemaFieldType": {
      "description": "Required. The type of field.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "SchemaType unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Boolean",
          "description": "Boolean field.",
          "value": "BOOLEAN"
        },
        {
          "name": "Byte",
          "description": "Single byte numeric field.",
          "value": "BYTE"
        },
        {
          "name": "Int16",
          "description": "16-bit numeric field.",
          "value": "INT16"
        },
        {
          "name": "Int32",
          "description": "32-bit numeric field.",
          "value": "INT32"
        },
        {
          "name": "Int64",
          "description": "64-bit numeric field.",
          "value": "INT64"
        },
        {
          "name": "Float",
          "description": "Floating point numeric field.",
          "value": "FLOAT"
        },
        {
          "name": "Double",
          "description": "Double precision numeric field.",
          "value": "DOUBLE"
        },
        {
          "name": "Decimal",
          "description": "Real value numeric field.",
          "value": "DECIMAL"
        },
        {
          "name": "String",
          "description": "Sequence of characters field.",
          "value": "STRING"
        },
        {
          "name": "Binary",
          "description": "Sequence of bytes field.",
          "value": "BINARY"
        },
        {
          "name": "Timestamp",
          "description": "Date and time field.",
          "value": "TIMESTAMP"
        },
        {
          "name": "Date",
          "description": "Date field.",
          "value": "DATE"
        },
        {
          "name": "Time",
          "description": "Time field.",
          "value": "TIME"
        },
        {
          "name": "Record",
          "description": "Structured field. Nested fields that define the structure of the map. If all nested fields are nullable, this field represents a union.",
          "value": "RECORD"
        },
        {
          "name": "Null",
          "description": "Null field that does not have values.",
          "value": "NULL"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageAccessResponse": {
      "description": "Describes the access mechanism of the data within its storage location.",
      "properties": {
        "read": {
          "type": "string",
          "description": "Describes the read access mechanism of the data. Not user settable."
        }
      },
      "type": "object",
      "required": [
        "read"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormat": {
      "description": "Describes the format of the data within its storage location.",
      "properties": {
        "compressionFormat": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatCompressionFormat",
          "description": "Optional. The compression type associated with the stored data. If unspecified, the data is uncompressed."
        },
        "csv": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatCsvOptions",
          "description": "Optional. Additional information about CSV formatted data."
        },
        "iceberg": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatIcebergOptions",
          "description": "Optional. Additional information about iceberg tables."
        },
        "json": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatJsonOptions",
          "description": "Optional. Additional information about CSV formatted data."
        },
        "mimeType": {
          "type": "string",
          "description": "The mime type descriptor for the data. Must match the pattern {type}/{subtype}. Supported values: application/x-parquet application/x-avro application/x-orc application/x-tfrecord application/x-parquet+iceberg application/x-avro+iceberg application/x-orc+iceberg application/json application/{subtypes} text/csv text/ image/{image subtype} video/{video subtype} audio/{audio subtype}"
        }
      },
      "type": "object",
      "required": [
        "mimeType"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormatCompressionFormat": {
      "description": "Optional. The compression type associated with the stored data. If unspecified, the data is uncompressed.",
      "type": "string",
      "enum": [
        {
          "name": "CompressionFormatUnspecified",
          "description": "CompressionFormat unspecified. Implies uncompressed data.",
          "value": "COMPRESSION_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Gzip",
          "description": "GZip compressed set of files.",
          "value": "GZIP"
        },
        {
          "name": "Bzip2",
          "description": "BZip2 compressed set of files.",
          "value": "BZIP2"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormatCsvOptions": {
      "description": "Describes CSV and similar semi-structured data formats.",
      "properties": {
        "delimiter": {
          "type": "string",
          "description": "Optional. The delimiter used to separate values. Defaults to ','."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. Accepts \"US-ASCII\", \"UTF-8\", and \"ISO-8859-1\". Defaults to UTF-8 if unspecified."
        },
        "headerRows": {
          "type": "integer",
          "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows. Defaults to 0."
        },
        "quote": {
          "type": "string",
          "description": "Optional. The character used to quote column values. Accepts '\"' (double quotation mark) or ''' (single quotation mark). Defaults to '\"' (double quotation mark) if unspecified."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormatCsvOptionsResponse": {
      "description": "Describes CSV and similar semi-structured data formats.",
      "properties": {
        "delimiter": {
          "type": "string",
          "description": "Optional. The delimiter used to separate values. Defaults to ','."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. Accepts \"US-ASCII\", \"UTF-8\", and \"ISO-8859-1\". Defaults to UTF-8 if unspecified."
        },
        "headerRows": {
          "type": "integer",
          "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows. Defaults to 0."
        },
        "quote": {
          "type": "string",
          "description": "Optional. The character used to quote column values. Accepts '\"' (double quotation mark) or ''' (single quotation mark). Defaults to '\"' (double quotation mark) if unspecified."
        }
      },
      "type": "object",
      "required": [
        "delimiter",
        "encoding",
        "headerRows",
        "quote"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormatIcebergOptions": {
      "description": "Describes Iceberg data format.",
      "properties": {
        "metadataLocation": {
          "type": "string",
          "description": "Optional. The location of where the iceberg metadata is present, must be within the table path"
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormatIcebergOptionsResponse": {
      "description": "Describes Iceberg data format.",
      "properties": {
        "metadataLocation": {
          "type": "string",
          "description": "Optional. The location of where the iceberg metadata is present, must be within the table path"
        }
      },
      "type": "object",
      "required": [
        "metadataLocation"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormatJsonOptions": {
      "description": "Describes JSON data format.",
      "properties": {
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. Accepts \"US-ASCII\", \"UTF-8\" and \"ISO-8859-1\". Defaults to UTF-8 if not specified."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormatJsonOptionsResponse": {
      "description": "Describes JSON data format.",
      "properties": {
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. Accepts \"US-ASCII\", \"UTF-8\" and \"ISO-8859-1\". Defaults to UTF-8 if not specified."
        }
      },
      "type": "object",
      "required": [
        "encoding"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1StorageFormatResponse": {
      "description": "Describes the format of the data within its storage location.",
      "properties": {
        "compressionFormat": {
          "type": "string",
          "description": "Optional. The compression type associated with the stored data. If unspecified, the data is uncompressed."
        },
        "csv": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatCsvOptionsResponse",
          "description": "Optional. Additional information about CSV formatted data."
        },
        "format": {
          "type": "string",
          "description": "The data format associated with the stored data, which represents content type values. The value is inferred from mime type."
        },
        "iceberg": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatIcebergOptionsResponse",
          "description": "Optional. Additional information about iceberg tables."
        },
        "json": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatJsonOptionsResponse",
          "description": "Optional. Additional information about CSV formatted data."
        },
        "mimeType": {
          "type": "string",
          "description": "The mime type descriptor for the data. Must match the pattern {type}/{subtype}. Supported values: application/x-parquet application/x-avro application/x-orc application/x-tfrecord application/x-parquet+iceberg application/x-avro+iceberg application/x-orc+iceberg application/json application/{subtypes} text/csv text/ image/{image subtype} video/{video subtype} audio/{audio subtype}"
        }
      },
      "type": "object",
      "required": [
        "compressionFormat",
        "csv",
        "format",
        "iceberg",
        "json",
        "mimeType"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskExecutionSpec": {
      "description": "Execution related settings, like retry and service_account.",
      "properties": {
        "args": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the task. The args can use placeholders of the format ${placeholder} as part of key/value string. These will be interpolated before passing the args to the driver. Currently supported placeholders: - ${task_id} - ${job_time} To pass positional args, set the key as TASK_ARGS. The value should be a comma-separated string of all the positional arguments. To use a delimiter other than comma, refer to https://cloud.google.com/sdk/gcloud/reference/topic/escaping. In case of other keys being present in the args, then TASK_ARGS will be passed as the last argument."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. The Cloud KMS key to use for encryption, of the form: projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}."
        },
        "maxJobExecutionLifetime": {
          "type": "string",
          "description": "Optional. The maximum duration after which the job execution is expired."
        },
        "project": {
          "type": "string",
          "description": "Optional. The project in which jobs are run. By default, the project containing the Lake is used. If a project is provided, the ExecutionSpec.service_account must belong to this project."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service account to use to execute a task. If not provided, the default Compute service account for the project is used."
        }
      },
      "type": "object",
      "required": [
        "serviceAccount"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskExecutionSpecResponse": {
      "description": "Execution related settings, like retry and service_account.",
      "properties": {
        "args": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the task. The args can use placeholders of the format ${placeholder} as part of key/value string. These will be interpolated before passing the args to the driver. Currently supported placeholders: - ${task_id} - ${job_time} To pass positional args, set the key as TASK_ARGS. The value should be a comma-separated string of all the positional arguments. To use a delimiter other than comma, refer to https://cloud.google.com/sdk/gcloud/reference/topic/escaping. In case of other keys being present in the args, then TASK_ARGS will be passed as the last argument."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. The Cloud KMS key to use for encryption, of the form: projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}."
        },
        "maxJobExecutionLifetime": {
          "type": "string",
          "description": "Optional. The maximum duration after which the job execution is expired."
        },
        "project": {
          "type": "string",
          "description": "Optional. The project in which jobs are run. By default, the project containing the Lake is used. If a project is provided, the ExecutionSpec.service_account must belong to this project."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service account to use to execute a task. If not provided, the default Compute service account for the project is used."
        }
      },
      "type": "object",
      "required": [
        "args",
        "kmsKey",
        "maxJobExecutionLifetime",
        "project",
        "serviceAccount"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskExecutionStatusResponse": {
      "description": "Status of the task execution (e.g. Jobs).",
      "properties": {
        "latestJob": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1JobResponse",
          "description": "latest job execution"
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of the status."
        }
      },
      "type": "object",
      "required": [
        "latestJob",
        "updateTime"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskInfrastructureSpec": {
      "description": "Configuration for the underlying infrastructure used to run workloads.",
      "properties": {
        "batch": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources",
          "description": "Compute resources needed for a Task when using Dataproc Serverless."
        },
        "containerImage": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime",
          "description": "Container Image Runtime Configuration."
        },
        "vpcNetwork": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork",
          "description": "Vpc network."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResources": {
      "description": "Batch compute resources associated with the task.",
      "properties": {
        "executorsCount": {
          "type": "integer",
          "description": "Optional. Total number of job executors. Executor Count should be between 2 and 100. Default=2"
        },
        "maxExecutorsCount": {
          "type": "integer",
          "description": "Optional. Max configurable executors. If max_executors_count > executors_count, then auto-scaling is enabled. Max Executor Count should be between 2 and 1000. Default=1000"
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResourcesResponse": {
      "description": "Batch compute resources associated with the task.",
      "properties": {
        "executorsCount": {
          "type": "integer",
          "description": "Optional. Total number of job executors. Executor Count should be between 2 and 100. Default=2"
        },
        "maxExecutorsCount": {
          "type": "integer",
          "description": "Optional. Max configurable executors. If max_executors_count > executors_count, then auto-scaling is enabled. Max Executor Count should be between 2 and 1000. Default=1000"
        }
      },
      "type": "object",
      "required": [
        "executorsCount",
        "maxExecutorsCount"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntime": {
      "description": "Container Image Runtime Configuration used with Batch execution.",
      "properties": {
        "image": {
          "type": "string",
          "description": "Optional. Container image to use."
        },
        "javaJars": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Java JARS to add to the classpath. Valid input includes Cloud Storage URIs to Jar binaries. For example, gs://bucket-name/my/path/to/file.jar"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Override to common configuration of open source components installed on the Dataproc cluster. The properties to set on daemon config files. Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. For more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties)."
        },
        "pythonPackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of python packages to be installed. Valid formats include Cloud Storage URI to a PIP installable library. For example, gs://bucket-name/my/path/to/lib.tar.gz"
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntimeResponse": {
      "description": "Container Image Runtime Configuration used with Batch execution.",
      "properties": {
        "image": {
          "type": "string",
          "description": "Optional. Container image to use."
        },
        "javaJars": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Java JARS to add to the classpath. Valid input includes Cloud Storage URIs to Jar binaries. For example, gs://bucket-name/my/path/to/file.jar"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Override to common configuration of open source components installed on the Dataproc cluster. The properties to set on daemon config files. Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. For more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties)."
        },
        "pythonPackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of python packages to be installed. Valid formats include Cloud Storage URI to a PIP installable library. For example, gs://bucket-name/my/path/to/lib.tar.gz"
        }
      },
      "type": "object",
      "required": [
        "image",
        "javaJars",
        "properties",
        "pythonPackages"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskInfrastructureSpecResponse": {
      "description": "Configuration for the underlying infrastructure used to run workloads.",
      "properties": {
        "batch": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpecBatchComputeResourcesResponse",
          "description": "Compute resources needed for a Task when using Dataproc Serverless."
        },
        "containerImage": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpecContainerImageRuntimeResponse",
          "description": "Container Image Runtime Configuration."
        },
        "vpcNetwork": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetworkResponse",
          "description": "Vpc network."
        }
      },
      "type": "object",
      "required": [
        "batch",
        "containerImage",
        "vpcNetwork"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetwork": {
      "description": "Cloud VPC Network used to run the infrastructure.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Optional. The Cloud VPC network in which the job is run. By default, the Cloud VPC network named Default within the project is used."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of network tags to apply to the job."
        },
        "subNetwork": {
          "type": "string",
          "description": "Optional. The Cloud VPC sub-network in which the job is run."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskInfrastructureSpecVpcNetworkResponse": {
      "description": "Cloud VPC Network used to run the infrastructure.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Optional. The Cloud VPC network in which the job is run. By default, the Cloud VPC network named Default within the project is used."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of network tags to apply to the job."
        },
        "subNetwork": {
          "type": "string",
          "description": "Optional. The Cloud VPC sub-network in which the job is run."
        }
      },
      "type": "object",
      "required": [
        "network",
        "networkTags",
        "subNetwork"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskNotebookTaskConfig": {
      "description": "Config for running scheduled notebooks.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage URIs of files to be placed in the working directory of each executor."
        },
        "infrastructureSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpec",
          "description": "Optional. Infrastructure specification for the execution."
        },
        "notebook": {
          "type": "string",
          "description": "Path to input notebook. This can be the Cloud Storage URI of the notebook file or the path to a Notebook Content. The execution args are accessible as environment variables (TASK_key=value)."
        }
      },
      "type": "object",
      "required": [
        "notebook"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskNotebookTaskConfigResponse": {
      "description": "Config for running scheduled notebooks.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage URIs of files to be placed in the working directory of each executor."
        },
        "infrastructureSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpecResponse",
          "description": "Optional. Infrastructure specification for the execution."
        },
        "notebook": {
          "type": "string",
          "description": "Path to input notebook. This can be the Cloud Storage URI of the notebook file or the path to a Notebook Content. The execution args are accessible as environment variables (TASK_key=value)."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "fileUris",
        "infrastructureSpec",
        "notebook"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskSparkTaskConfig": {
      "description": "User-specified config for running a Spark task.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage URIs of files to be placed in the working directory of each executor."
        },
        "infrastructureSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpec",
          "description": "Optional. Infrastructure specification for the execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris. The execution args are passed in as a sequence of named process arguments (--key=value)."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The Cloud Storage URI of the jar file that contains the main class. The execution args are passed in as a sequence of named process arguments (--key=value)."
        },
        "pythonScriptFile": {
          "type": "string",
          "description": "The Gcloud Storage URI of the main Python file to use as the driver. Must be a .py file. The execution args are passed in as a sequence of named process arguments (--key=value)."
        },
        "sqlScript": {
          "type": "string",
          "description": "The query text. The execution args are used to declare a set of script variables (set key=\"value\";)."
        },
        "sqlScriptFile": {
          "type": "string",
          "description": "A reference to a query file. This can be the Cloud Storage URI of the query file or it can the path to a SqlScript Content. The execution args are used to declare a set of script variables (set key=\"value\";)."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskSparkTaskConfigResponse": {
      "description": "User-specified config for running a Spark task.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage URIs of files to be placed in the working directory of each executor."
        },
        "infrastructureSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskInfrastructureSpecResponse",
          "description": "Optional. Infrastructure specification for the execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris. The execution args are passed in as a sequence of named process arguments (--key=value)."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The Cloud Storage URI of the jar file that contains the main class. The execution args are passed in as a sequence of named process arguments (--key=value)."
        },
        "pythonScriptFile": {
          "type": "string",
          "description": "The Gcloud Storage URI of the main Python file to use as the driver. Must be a .py file. The execution args are passed in as a sequence of named process arguments (--key=value)."
        },
        "sqlScript": {
          "type": "string",
          "description": "The query text. The execution args are used to declare a set of script variables (set key=\"value\";)."
        },
        "sqlScriptFile": {
          "type": "string",
          "description": "A reference to a query file. This can be the Cloud Storage URI of the query file or it can the path to a SqlScript Content. The execution args are used to declare a set of script variables (set key=\"value\";)."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "fileUris",
        "infrastructureSpec",
        "mainClass",
        "mainJarFileUri",
        "pythonScriptFile",
        "sqlScript",
        "sqlScriptFile"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskTriggerSpec": {
      "description": "Task scheduling and trigger settings.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Optional. Prevent the task from executing. This does not cancel already running tasks. It is intended to temporarily disable RECURRING tasks."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Optional. Number of retry attempts before aborting. Set to zero to never attempt to retry a failed task."
        },
        "schedule": {
          "type": "string",
          "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running tasks periodically. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, CRON_TZ=America/New_York 1 * * * *, or TZ=America/New_York 1 * * * *. This field is required for RECURRING tasks."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. The first run of the task will be after this time. If not specified, the task will run shortly after being submitted if ON_DEMAND and based on the schedule if RECURRING."
        },
        "type": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskTriggerSpecType",
          "description": "Immutable. Trigger type of the user-specified Task."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskTriggerSpecResponse": {
      "description": "Task scheduling and trigger settings.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Optional. Prevent the task from executing. This does not cancel already running tasks. It is intended to temporarily disable RECURRING tasks."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Optional. Number of retry attempts before aborting. Set to zero to never attempt to retry a failed task."
        },
        "schedule": {
          "type": "string",
          "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running tasks periodically. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, CRON_TZ=America/New_York 1 * * * *, or TZ=America/New_York 1 * * * *. This field is required for RECURRING tasks."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. The first run of the task will be after this time. If not specified, the task will run shortly after being submitted if ON_DEMAND and based on the schedule if RECURRING."
        },
        "type": {
          "type": "string",
          "description": "Immutable. Trigger type of the user-specified Task."
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "maxRetries",
        "schedule",
        "startTime",
        "type"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TaskTriggerSpecType": {
      "description": "Required. Immutable. Trigger type of the user-specified Task.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified trigger type.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "OnDemand",
          "description": "The task runs one-time shortly after Task Creation.",
          "value": "ON_DEMAND"
        },
        {
          "name": "Recurring",
          "description": "The task is scheduled to run periodically.",
          "value": "RECURRING"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1Trigger": {
      "description": "DataScan scheduling and trigger settings.",
      "properties": {
        "onDemand": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TriggerOnDemand",
          "description": "The scan runs once via RunDataScan API."
        },
        "schedule": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TriggerSchedule",
          "description": "The scan is scheduled to run periodically."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TriggerOnDemand": {
      "description": "The scan runs once via RunDataScan API.",
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TriggerOnDemandResponse": {
      "description": "The scan runs once via RunDataScan API.",
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TriggerResponse": {
      "description": "DataScan scheduling and trigger settings.",
      "properties": {
        "onDemand": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TriggerOnDemandResponse",
          "description": "The scan runs once via RunDataScan API."
        },
        "schedule": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TriggerScheduleResponse",
          "description": "The scan is scheduled to run periodically."
        }
      },
      "type": "object",
      "required": [
        "onDemand",
        "schedule"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TriggerSchedule": {
      "description": "The scan is scheduled to run periodically.",
      "properties": {
        "cron": {
          "type": "string",
          "description": "Cron (https://en.wikipedia.org/wiki/Cron) schedule for running scans periodically.To explicitly set a timezone in the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database (wikipedia (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List)). For example, CRON_TZ=America/New_York 1 * * * *, or TZ=America/New_York 1 * * * *.This field is required for Schedule scans."
        }
      },
      "type": "object",
      "required": [
        "cron"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1TriggerScheduleResponse": {
      "description": "The scan is scheduled to run periodically.",
      "properties": {
        "cron": {
          "type": "string",
          "description": "Cron (https://en.wikipedia.org/wiki/Cron) schedule for running scans periodically.To explicitly set a timezone in the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database (wikipedia (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List)). For example, CRON_TZ=America/New_York 1 * * * *, or TZ=America/New_York 1 * * * *.This field is required for Schedule scans."
        }
      },
      "type": "object",
      "required": [
        "cron"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneDiscoverySpec": {
      "description": "Settings to manage the metadata discovery and publishing in a zone.",
      "properties": {
        "csvOptions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions",
          "description": "Optional. Configuration for CSV data."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether discovery is enabled."
        },
        "excludePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of patterns to apply for selecting data to exclude during discovery. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names."
        },
        "includePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of patterns to apply for selecting data to include during discovery if only a subset of the data should considered. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names."
        },
        "jsonOptions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions",
          "description": "Optional. Configuration for Json data."
        },
        "schedule": {
          "type": "string",
          "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running discovery periodically. Successive discovery runs must be scheduled at least 60 minutes apart. The default value is to run discovery every 60 minutes. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, CRON_TZ=America/New_York 1 * * * *, or TZ=America/New_York 1 * * * *."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptions": {
      "description": "Describe CSV and similar semi-structured data formats.",
      "properties": {
        "delimiter": {
          "type": "string",
          "description": "Optional. The delimiter being used to separate values. This defaults to ','."
        },
        "disableTypeInference": {
          "type": "boolean",
          "description": "Optional. Whether to disable the inference of data type for CSV data. If true, all columns will be registered as strings."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. The default is UTF-8."
        },
        "headerRows": {
          "type": "integer",
          "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptionsResponse": {
      "description": "Describe CSV and similar semi-structured data formats.",
      "properties": {
        "delimiter": {
          "type": "string",
          "description": "Optional. The delimiter being used to separate values. This defaults to ','."
        },
        "disableTypeInference": {
          "type": "boolean",
          "description": "Optional. Whether to disable the inference of data type for CSV data. If true, all columns will be registered as strings."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. The default is UTF-8."
        },
        "headerRows": {
          "type": "integer",
          "description": "Optional. The number of rows to interpret as header rows that should be skipped when reading data rows."
        }
      },
      "type": "object",
      "required": [
        "delimiter",
        "disableTypeInference",
        "encoding",
        "headerRows"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptions": {
      "description": "Describe JSON data format.",
      "properties": {
        "disableTypeInference": {
          "type": "boolean",
          "description": "Optional. Whether to disable the inference of data type for Json data. If true, all columns will be registered as their primitive types (strings, number or boolean)."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. The default is UTF-8."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptionsResponse": {
      "description": "Describe JSON data format.",
      "properties": {
        "disableTypeInference": {
          "type": "boolean",
          "description": "Optional. Whether to disable the inference of data type for Json data. If true, all columns will be registered as their primitive types (strings, number or boolean)."
        },
        "encoding": {
          "type": "string",
          "description": "Optional. The character encoding of the data. The default is UTF-8."
        }
      },
      "type": "object",
      "required": [
        "disableTypeInference",
        "encoding"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneDiscoverySpecResponse": {
      "description": "Settings to manage the metadata discovery and publishing in a zone.",
      "properties": {
        "csvOptions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneDiscoverySpecCsvOptionsResponse",
          "description": "Optional. Configuration for CSV data."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether discovery is enabled."
        },
        "excludePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of patterns to apply for selecting data to exclude during discovery. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names."
        },
        "includePatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of patterns to apply for selecting data to include during discovery if only a subset of the data should considered. For Cloud Storage bucket assets, these are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these are interpreted as patterns to match table names."
        },
        "jsonOptions": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneDiscoverySpecJsonOptionsResponse",
          "description": "Optional. Configuration for Json data."
        },
        "schedule": {
          "type": "string",
          "description": "Optional. Cron schedule (https://en.wikipedia.org/wiki/Cron) for running discovery periodically. Successive discovery runs must be scheduled at least 60 minutes apart. The default value is to run discovery every 60 minutes. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, CRON_TZ=America/New_York 1 * * * *, or TZ=America/New_York 1 * * * *."
        }
      },
      "type": "object",
      "required": [
        "csvOptions",
        "enabled",
        "excludePatterns",
        "includePatterns",
        "jsonOptions",
        "schedule"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneResourceSpec": {
      "description": "Settings for resources attached as assets within a zone.",
      "properties": {
        "locationType": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneResourceSpecLocationType",
          "description": "Immutable. The location type of the resources that are allowed to be attached to the assets within this zone."
        }
      },
      "type": "object",
      "required": [
        "locationType"
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneResourceSpecLocationType": {
      "description": "Required. Immutable. The location type of the resources that are allowed to be attached to the assets within this zone.",
      "type": "string",
      "enum": [
        {
          "name": "LocationTypeUnspecified",
          "description": "Unspecified location type.",
          "value": "LOCATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SingleRegion",
          "description": "Resources that are associated with a single region.",
          "value": "SINGLE_REGION"
        },
        {
          "name": "MultiRegion",
          "description": "Resources that are associated with a multi-region location.",
          "value": "MULTI_REGION"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleCloudDataplexV1ZoneResourceSpecResponse": {
      "description": "Settings for resources attached as assets within a zone.",
      "properties": {
        "locationType": {
          "type": "string",
          "description": "Immutable. The location type of the resources that are allowed to be attached to the assets within this zone."
        }
      },
      "type": "object",
      "required": [
        "locationType"
      ]
    },
    "google-native:dataplex/v1:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:dataplex/v1:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:dataplex/v1:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:dataplex/v1:GoogleIamV1Binding": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleTypeExpr",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleIamV1BindingResponse": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:dataplex/v1:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:dataplex/v1:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:dataplex/v1:ZoneType": {
      "description": "Required. Immutable. The type of the zone.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Zone type not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Raw",
          "description": "A zone that contains data that needs further processing before it is considered generally ready for consumption and analytics workloads.",
          "value": "RAW"
        },
        {
          "name": "Curated",
          "description": "A zone that contains data that is considered to be ready for broader consumption and analytics workloads. Curated structured data stored in Cloud Storage must conform to certain file formats (parquet, avro and orc) and organized in a hive-compatible directory layout.",
          "value": "CURATED"
        }
      ]
    },
    "google-native:dataproc/v1:AcceleratorConfig": {
      "description": "Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the accelerator cards of this type exposed to this instance."
        },
        "acceleratorTypeUri": {
          "type": "string",
          "description": "Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/v1/acceleratorTypes).Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/[zone]/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:AcceleratorConfigResponse": {
      "description": "Specifies the type and number of accelerator cards attached to the instances of an instance. See GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/).",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the accelerator cards of this type exposed to this instance."
        },
        "acceleratorTypeUri": {
          "type": "string",
          "description": "Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/v1/acceleratorTypes).Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]/acceleratorTypes/nvidia-tesla-k80 projects/[project_id]/zones/[zone]/acceleratorTypes/nvidia-tesla-k80 nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorTypeUri"
      ]
    },
    "google-native:dataproc/v1:AutoscalingConfig": {
      "description": "Autoscaling Policy config associated with the cluster.",
      "properties": {
        "policyUri": {
          "type": "string",
          "description": "Optional. The autoscaling policy used by the cluster.Only resource names including projectid and location (region) are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id] projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]Note that the policy must be in the same project and Dataproc region."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:AutoscalingConfigResponse": {
      "description": "Autoscaling Policy config associated with the cluster.",
      "properties": {
        "policyUri": {
          "type": "string",
          "description": "Optional. The autoscaling policy used by the cluster.Only resource names including projectid and location (region) are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id] projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]Note that the policy must be in the same project and Dataproc region."
        }
      },
      "type": "object",
      "required": [
        "policyUri"
      ]
    },
    "google-native:dataproc/v1:AuxiliaryNodeGroup": {
      "description": "Node group identification and configuration information.",
      "properties": {
        "nodeGroup": {
          "$ref": "#/types/google-native:dataproc%2Fv1:NodeGroup",
          "description": "Node group configuration."
        },
        "nodeGroupId": {
          "type": "string",
          "description": "Optional. A node group ID. Generated if not specified.The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of from 3 to 33 characters."
        }
      },
      "type": "object",
      "required": [
        "nodeGroup"
      ]
    },
    "google-native:dataproc/v1:AuxiliaryNodeGroupResponse": {
      "description": "Node group identification and configuration information.",
      "properties": {
        "nodeGroup": {
          "$ref": "#/types/google-native:dataproc%2Fv1:NodeGroupResponse",
          "description": "Node group configuration."
        },
        "nodeGroupId": {
          "type": "string",
          "description": "Optional. A node group ID. Generated if not specified.The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of from 3 to 33 characters."
        }
      },
      "type": "object",
      "required": [
        "nodeGroup",
        "nodeGroupId"
      ]
    },
    "google-native:dataproc/v1:AuxiliaryServicesConfig": {
      "description": "Auxiliary services configuration for a Cluster.",
      "properties": {
        "metastoreConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:MetastoreConfig",
          "description": "Optional. The Hive Metastore configuration for this workload."
        },
        "sparkHistoryServerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkHistoryServerConfig",
          "description": "Optional. The Spark History Server configuration for the workload."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:AuxiliaryServicesConfigResponse": {
      "description": "Auxiliary services configuration for a Cluster.",
      "properties": {
        "metastoreConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:MetastoreConfigResponse",
          "description": "Optional. The Hive Metastore configuration for this workload."
        },
        "sparkHistoryServerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkHistoryServerConfigResponse",
          "description": "Optional. The Spark History Server configuration for the workload."
        }
      },
      "type": "object",
      "required": [
        "metastoreConfig",
        "sparkHistoryServerConfig"
      ]
    },
    "google-native:dataproc/v1:BasicAutoscalingAlgorithm": {
      "description": "Basic algorithm for autoscaling.",
      "properties": {
        "cooldownPeriod": {
          "type": "string",
          "description": "Optional. Duration between scaling events. A scaling period starts after the update operation from the previous event has completed.Bounds: 2m, 1d. Default: 2m."
        },
        "sparkStandaloneConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkStandaloneAutoscalingConfig",
          "description": "Optional. Spark Standalone autoscaling configuration"
        },
        "yarnConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:BasicYarnAutoscalingConfig",
          "description": "Optional. YARN autoscaling configuration."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:BasicAutoscalingAlgorithmResponse": {
      "description": "Basic algorithm for autoscaling.",
      "properties": {
        "cooldownPeriod": {
          "type": "string",
          "description": "Optional. Duration between scaling events. A scaling period starts after the update operation from the previous event has completed.Bounds: 2m, 1d. Default: 2m."
        },
        "sparkStandaloneConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkStandaloneAutoscalingConfigResponse",
          "description": "Optional. Spark Standalone autoscaling configuration"
        },
        "yarnConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:BasicYarnAutoscalingConfigResponse",
          "description": "Optional. YARN autoscaling configuration."
        }
      },
      "type": "object",
      "required": [
        "cooldownPeriod",
        "sparkStandaloneConfig",
        "yarnConfig"
      ]
    },
    "google-native:dataproc/v1:BasicYarnAutoscalingConfig": {
      "description": "Basic autoscaling configurations for YARN.",
      "properties": {
        "gracefulDecommissionTimeout": {
          "type": "string",
          "description": "Timeout for YARN graceful decommissioning of Node Managers. Specifies the duration to wait for jobs to complete before forcefully removing workers (and potentially interrupting jobs). Only applicable to downscaling operations.Bounds: 0s, 1d."
        },
        "scaleDownFactor": {
          "type": "number",
          "description": "Fraction of average YARN pending memory in the last cooldown period for which to remove workers. A scale-down factor of 1 will result in scaling down so that there is no available memory remaining after the update (more aggressive scaling). A scale-down factor of 0 disables removing workers, which can be beneficial for autoscaling a single job. See How autoscaling works (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/autoscaling#how_autoscaling_works) for more information.Bounds: 0.0, 1.0."
        },
        "scaleDownMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-down threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2 worker scale-down for the cluster to scale. A threshold of 0 means the autoscaler will scale down on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        },
        "scaleUpFactor": {
          "type": "number",
          "description": "Fraction of average YARN pending memory in the last cooldown period for which to add workers. A scale-up factor of 1.0 will result in scaling up so that there is no pending memory remaining after the update (more aggressive scaling). A scale-up factor closer to 0 will result in a smaller magnitude of scaling up (less aggressive scaling). See How autoscaling works (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/autoscaling#how_autoscaling_works) for more information.Bounds: 0.0, 1.0."
        },
        "scaleUpMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-up threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2-worker scale-up for the cluster to scale. A threshold of 0 means the autoscaler will scale up on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        }
      },
      "type": "object",
      "required": [
        "gracefulDecommissionTimeout",
        "scaleDownFactor",
        "scaleUpFactor"
      ]
    },
    "google-native:dataproc/v1:BasicYarnAutoscalingConfigResponse": {
      "description": "Basic autoscaling configurations for YARN.",
      "properties": {
        "gracefulDecommissionTimeout": {
          "type": "string",
          "description": "Timeout for YARN graceful decommissioning of Node Managers. Specifies the duration to wait for jobs to complete before forcefully removing workers (and potentially interrupting jobs). Only applicable to downscaling operations.Bounds: 0s, 1d."
        },
        "scaleDownFactor": {
          "type": "number",
          "description": "Fraction of average YARN pending memory in the last cooldown period for which to remove workers. A scale-down factor of 1 will result in scaling down so that there is no available memory remaining after the update (more aggressive scaling). A scale-down factor of 0 disables removing workers, which can be beneficial for autoscaling a single job. See How autoscaling works (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/autoscaling#how_autoscaling_works) for more information.Bounds: 0.0, 1.0."
        },
        "scaleDownMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-down threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2 worker scale-down for the cluster to scale. A threshold of 0 means the autoscaler will scale down on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        },
        "scaleUpFactor": {
          "type": "number",
          "description": "Fraction of average YARN pending memory in the last cooldown period for which to add workers. A scale-up factor of 1.0 will result in scaling up so that there is no pending memory remaining after the update (more aggressive scaling). A scale-up factor closer to 0 will result in a smaller magnitude of scaling up (less aggressive scaling). See How autoscaling works (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/autoscaling#how_autoscaling_works) for more information.Bounds: 0.0, 1.0."
        },
        "scaleUpMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-up threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2-worker scale-up for the cluster to scale. A threshold of 0 means the autoscaler will scale up on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        }
      },
      "type": "object",
      "required": [
        "gracefulDecommissionTimeout",
        "scaleDownFactor",
        "scaleDownMinWorkerFraction",
        "scaleUpFactor",
        "scaleUpMinWorkerFraction"
      ]
    },
    "google-native:dataproc/v1:Binding": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dataproc%2Fv1:Expr",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:BindingResponse": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:dataproc/v1:ClusterConfig": {
      "description": "The cluster config.",
      "properties": {
        "autoscalingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:AutoscalingConfig",
          "description": "Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset."
        },
        "auxiliaryNodeGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:AuxiliaryNodeGroup"
          },
          "description": "Optional. The node group settings."
        },
        "configBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging and temp buckets (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket."
        },
        "dataprocMetricConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:DataprocMetricConfig",
          "description": "Optional. The config for Dataproc metrics."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EncryptionConfig",
          "description": "Optional. Encryption settings for the cluster."
        },
        "endpointConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EndpointConfig",
          "description": "Optional. Port/endpoint configuration for this cluster"
        },
        "gceClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GceClusterConfig",
          "description": "Optional. The shared Compute Engine config settings for all instances in a cluster."
        },
        "gkeClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeClusterConfig",
          "description": "Optional. BETA. The Kubernetes Engine config for Dataproc clusters deployed to The Kubernetes Engine config for Dataproc clusters deployed to Kubernetes. These config settings are mutually exclusive with Compute Engine-based options, such as gce_cluster_config, master_config, worker_config, secondary_worker_config, and autoscaling_config."
        },
        "initializationActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:NodeInitializationAction"
          },
          "description": "Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ \"${ROLE}\" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi "
        },
        "lifecycleConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LifecycleConfig",
          "description": "Optional. Lifecycle setting for the cluster."
        },
        "masterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfig",
          "description": "Optional. The Compute Engine config settings for the cluster's master instance."
        },
        "metastoreConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:MetastoreConfig",
          "description": "Optional. Metastore configuration."
        },
        "secondaryWorkerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfig",
          "description": "Optional. The Compute Engine config settings for a cluster's secondary worker instances"
        },
        "securityConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SecurityConfig",
          "description": "Optional. Security settings for the cluster."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SoftwareConfig",
          "description": "Optional. The config settings for cluster software."
        },
        "tempBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket (see Dataproc staging and temp buckets (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfig",
          "description": "Optional. The Compute Engine config settings for the cluster's worker instances."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:ClusterConfigResponse": {
      "description": "The cluster config.",
      "properties": {
        "autoscalingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:AutoscalingConfigResponse",
          "description": "Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset."
        },
        "auxiliaryNodeGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:AuxiliaryNodeGroupResponse"
          },
          "description": "Optional. The node group settings."
        },
        "configBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging and temp buckets (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket."
        },
        "dataprocMetricConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:DataprocMetricConfigResponse",
          "description": "Optional. The config for Dataproc metrics."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EncryptionConfigResponse",
          "description": "Optional. Encryption settings for the cluster."
        },
        "endpointConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EndpointConfigResponse",
          "description": "Optional. Port/endpoint configuration for this cluster"
        },
        "gceClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GceClusterConfigResponse",
          "description": "Optional. The shared Compute Engine config settings for all instances in a cluster."
        },
        "gkeClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeClusterConfigResponse",
          "description": "Optional. BETA. The Kubernetes Engine config for Dataproc clusters deployed to The Kubernetes Engine config for Dataproc clusters deployed to Kubernetes. These config settings are mutually exclusive with Compute Engine-based options, such as gce_cluster_config, master_config, worker_config, secondary_worker_config, and autoscaling_config."
        },
        "initializationActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:NodeInitializationActionResponse"
          },
          "description": "Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ \"${ROLE}\" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi "
        },
        "lifecycleConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LifecycleConfigResponse",
          "description": "Optional. Lifecycle setting for the cluster."
        },
        "masterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfigResponse",
          "description": "Optional. The Compute Engine config settings for the cluster's master instance."
        },
        "metastoreConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:MetastoreConfigResponse",
          "description": "Optional. Metastore configuration."
        },
        "secondaryWorkerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfigResponse",
          "description": "Optional. The Compute Engine config settings for a cluster's secondary worker instances"
        },
        "securityConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SecurityConfigResponse",
          "description": "Optional. Security settings for the cluster."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SoftwareConfigResponse",
          "description": "Optional. The config settings for cluster software."
        },
        "tempBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket (see Dataproc staging and temp buckets (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfigResponse",
          "description": "Optional. The Compute Engine config settings for the cluster's worker instances."
        }
      },
      "type": "object",
      "required": [
        "autoscalingConfig",
        "auxiliaryNodeGroups",
        "configBucket",
        "dataprocMetricConfig",
        "encryptionConfig",
        "endpointConfig",
        "gceClusterConfig",
        "gkeClusterConfig",
        "initializationActions",
        "lifecycleConfig",
        "masterConfig",
        "metastoreConfig",
        "secondaryWorkerConfig",
        "securityConfig",
        "softwareConfig",
        "tempBucket",
        "workerConfig"
      ]
    },
    "google-native:dataproc/v1:ClusterMetricsResponse": {
      "description": "Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
      "properties": {
        "hdfsMetrics": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HDFS metrics."
        },
        "yarnMetrics": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "YARN metrics."
        }
      },
      "type": "object",
      "required": [
        "hdfsMetrics",
        "yarnMetrics"
      ]
    },
    "google-native:dataproc/v1:ClusterSelector": {
      "description": "A selector that chooses target cluster for jobs based on metadata.",
      "properties": {
        "clusterLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The cluster labels. Cluster must have all labels to match."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The zone where workflow process executes. This parameter does not affect the selection of the cluster.If unspecified, the zone of the first cluster matching the selector is used."
        }
      },
      "type": "object",
      "required": [
        "clusterLabels"
      ]
    },
    "google-native:dataproc/v1:ClusterSelectorResponse": {
      "description": "A selector that chooses target cluster for jobs based on metadata.",
      "properties": {
        "clusterLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The cluster labels. Cluster must have all labels to match."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The zone where workflow process executes. This parameter does not affect the selection of the cluster.If unspecified, the zone of the first cluster matching the selector is used."
        }
      },
      "type": "object",
      "required": [
        "clusterLabels",
        "zone"
      ]
    },
    "google-native:dataproc/v1:ClusterStatusResponse": {
      "description": "The status of a cluster and its instances.",
      "properties": {
        "detail": {
          "type": "string",
          "description": "Optional. Output only. Details of cluster's state."
        },
        "state": {
          "type": "string",
          "description": "The cluster's state."
        },
        "stateStartTime": {
          "type": "string",
          "description": "Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "substate": {
          "type": "string",
          "description": "Additional state information that includes status reported by the agent."
        }
      },
      "type": "object",
      "required": [
        "detail",
        "state",
        "stateStartTime",
        "substate"
      ]
    },
    "google-native:dataproc/v1:ConfidentialInstanceConfig": {
      "description": "Confidential Instance Config for clusters using Confidential VMs (https://cloud.google.com/compute/confidential-vm/docs)",
      "properties": {
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Optional. Defines whether the instance should have confidential compute enabled."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:ConfidentialInstanceConfigResponse": {
      "description": "Confidential Instance Config for clusters using Confidential VMs (https://cloud.google.com/compute/confidential-vm/docs)",
      "properties": {
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Optional. Defines whether the instance should have confidential compute enabled."
        }
      },
      "type": "object",
      "required": [
        "enableConfidentialCompute"
      ]
    },
    "google-native:dataproc/v1:DataprocMetricConfig": {
      "description": "Dataproc metric config.",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:Metric"
          },
          "description": "Metrics sources to enable."
        }
      },
      "type": "object",
      "required": [
        "metrics"
      ]
    },
    "google-native:dataproc/v1:DataprocMetricConfigResponse": {
      "description": "Dataproc metric config.",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:MetricResponse"
          },
          "description": "Metrics sources to enable."
        }
      },
      "type": "object",
      "required": [
        "metrics"
      ]
    },
    "google-native:dataproc/v1:DiskConfig": {
      "description": "Specifies the config of disk options for a group of VM instances.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Optional. Size in GB of the boot disk (default is 500GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See Disk types (https://cloud.google.com/compute/docs/disks#disk-types)."
        },
        "localSsdInterface": {
          "type": "string",
          "description": "Optional. Interface type of local SSDs (default is \"scsi\"). Valid values: \"scsi\" (Small Computer System Interface), \"nvme\" (Non-Volatile Memory Express). See local SSD performance (https://cloud.google.com/compute/docs/disks/local-ssd#performance)."
        },
        "numLocalSsds": {
          "type": "integer",
          "description": "Optional. Number of attached SSDs, from 0 to 8 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.Note: Local SSD options may vary by machine type and number of vCPUs selected."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:DiskConfigResponse": {
      "description": "Specifies the config of disk options for a group of VM instances.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Optional. Size in GB of the boot disk (default is 500GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See Disk types (https://cloud.google.com/compute/docs/disks#disk-types)."
        },
        "localSsdInterface": {
          "type": "string",
          "description": "Optional. Interface type of local SSDs (default is \"scsi\"). Valid values: \"scsi\" (Small Computer System Interface), \"nvme\" (Non-Volatile Memory Express). See local SSD performance (https://cloud.google.com/compute/docs/disks/local-ssd#performance)."
        },
        "numLocalSsds": {
          "type": "integer",
          "description": "Optional. Number of attached SSDs, from 0 to 8 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.Note: Local SSD options may vary by machine type and number of vCPUs selected."
        }
      },
      "type": "object",
      "required": [
        "bootDiskSizeGb",
        "bootDiskType",
        "localSsdInterface",
        "numLocalSsds"
      ]
    },
    "google-native:dataproc/v1:DriverSchedulingConfig": {
      "description": "Driver scheduling configuration.",
      "properties": {
        "memoryMb": {
          "type": "integer",
          "description": "The amount of memory in MB the driver is requesting."
        },
        "vcores": {
          "type": "integer",
          "description": "The number of vCPUs the driver is requesting."
        }
      },
      "type": "object",
      "required": [
        "memoryMb",
        "vcores"
      ]
    },
    "google-native:dataproc/v1:DriverSchedulingConfigResponse": {
      "description": "Driver scheduling configuration.",
      "properties": {
        "memoryMb": {
          "type": "integer",
          "description": "The amount of memory in MB the driver is requesting."
        },
        "vcores": {
          "type": "integer",
          "description": "The number of vCPUs the driver is requesting."
        }
      },
      "type": "object",
      "required": [
        "memoryMb",
        "vcores"
      ]
    },
    "google-native:dataproc/v1:EncryptionConfig": {
      "description": "Encryption settings for the cluster.",
      "properties": {
        "gcePdKmsKeyName": {
          "type": "string",
          "description": "Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. The Cloud KMS key name to use for encrypting customer core content in spanner and cluster PD disk for all instances in the cluster."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:EncryptionConfigResponse": {
      "description": "Encryption settings for the cluster.",
      "properties": {
        "gcePdKmsKeyName": {
          "type": "string",
          "description": "Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. The Cloud KMS key name to use for encrypting customer core content in spanner and cluster PD disk for all instances in the cluster."
        }
      },
      "type": "object",
      "required": [
        "gcePdKmsKeyName",
        "kmsKey"
      ]
    },
    "google-native:dataproc/v1:EndpointConfig": {
      "description": "Endpoint config for this cluster",
      "properties": {
        "enableHttpPortAccess": {
          "type": "boolean",
          "description": "Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:EndpointConfigResponse": {
      "description": "Endpoint config for this cluster",
      "properties": {
        "enableHttpPortAccess": {
          "type": "boolean",
          "description": "Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false."
        },
        "httpPorts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of port descriptions to URLs. Will only be populated if enable_http_port_access is true."
        }
      },
      "type": "object",
      "required": [
        "enableHttpPortAccess",
        "httpPorts"
      ]
    },
    "google-native:dataproc/v1:EnvironmentConfig": {
      "description": "Environment configuration for a workload.",
      "properties": {
        "executionConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ExecutionConfig",
          "description": "Optional. Execution configuration for a workload."
        },
        "peripheralsConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PeripheralsConfig",
          "description": "Optional. Peripherals configuration that workload has access to."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:EnvironmentConfigResponse": {
      "description": "Environment configuration for a workload.",
      "properties": {
        "executionConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ExecutionConfigResponse",
          "description": "Optional. Execution configuration for a workload."
        },
        "peripheralsConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PeripheralsConfigResponse",
          "description": "Optional. Peripherals configuration that workload has access to."
        }
      },
      "type": "object",
      "required": [
        "executionConfig",
        "peripheralsConfig"
      ]
    },
    "google-native:dataproc/v1:ExecutionConfig": {
      "description": "Execution configuration for a workload.",
      "properties": {
        "idleTtl": {
          "type": "string",
          "description": "Optional. Applies to sessions only. The duration to keep the session alive while it's idling. Exceeding this threshold causes the session to terminate. This field cannot be set on a batch workload. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). Defaults to 1 hour if not set. If both ttl and idle_ttl are specified for an interactive session, the conditions are treated as OR conditions: the workload will be terminated when it has been idle for idle_ttl or when ttl has been exceeded, whichever occurs first."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. The Cloud KMS key to use for encryption."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Tags used for network traffic control."
        },
        "networkUri": {
          "type": "string",
          "description": "Optional. Network URI to connect workload to."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Service account that used to execute workload."
        },
        "stagingBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to stage workload dependencies, config files, and store workload output and other ephemeral data, such as Spark history files. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location according to the region where your workload is running, and then create and manage project-level, per-location staging and temporary buckets. This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket."
        },
        "subnetworkUri": {
          "type": "string",
          "description": "Optional. Subnetwork URI to connect workload to."
        },
        "ttl": {
          "type": "string",
          "description": "Optional. The duration after which the workload will be terminated, specified as the JSON representation for Duration (https://protobuf.dev/programming-guides/proto3/#json). When the workload exceeds this duration, it will be unconditionally terminated without waiting for ongoing work to finish. If ttl is not specified for a batch workload, the workload will be allowed to run until it exits naturally (or run forever without exiting). If ttl is not specified for an interactive session, it defaults to 24 hours. If ttl is not specified for a batch that uses 2.1+ runtime version, it defaults to 4 hours. Minimum value is 10 minutes; maximum value is 14 days. If both ttl and idle_ttl are specified (for an interactive session), the conditions are treated as OR conditions: the workload will be terminated when it has been idle for idle_ttl or when ttl has been exceeded, whichever occurs first."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:ExecutionConfigResponse": {
      "description": "Execution configuration for a workload.",
      "properties": {
        "idleTtl": {
          "type": "string",
          "description": "Optional. Applies to sessions only. The duration to keep the session alive while it's idling. Exceeding this threshold causes the session to terminate. This field cannot be set on a batch workload. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). Defaults to 1 hour if not set. If both ttl and idle_ttl are specified for an interactive session, the conditions are treated as OR conditions: the workload will be terminated when it has been idle for idle_ttl or when ttl has been exceeded, whichever occurs first."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. The Cloud KMS key to use for encryption."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Tags used for network traffic control."
        },
        "networkUri": {
          "type": "string",
          "description": "Optional. Network URI to connect workload to."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Service account that used to execute workload."
        },
        "stagingBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to stage workload dependencies, config files, and store workload output and other ephemeral data, such as Spark history files. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location according to the region where your workload is running, and then create and manage project-level, per-location staging and temporary buckets. This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket."
        },
        "subnetworkUri": {
          "type": "string",
          "description": "Optional. Subnetwork URI to connect workload to."
        },
        "ttl": {
          "type": "string",
          "description": "Optional. The duration after which the workload will be terminated, specified as the JSON representation for Duration (https://protobuf.dev/programming-guides/proto3/#json). When the workload exceeds this duration, it will be unconditionally terminated without waiting for ongoing work to finish. If ttl is not specified for a batch workload, the workload will be allowed to run until it exits naturally (or run forever without exiting). If ttl is not specified for an interactive session, it defaults to 24 hours. If ttl is not specified for a batch that uses 2.1+ runtime version, it defaults to 4 hours. Minimum value is 10 minutes; maximum value is 14 days. If both ttl and idle_ttl are specified (for an interactive session), the conditions are treated as OR conditions: the workload will be terminated when it has been idle for idle_ttl or when ttl has been exceeded, whichever occurs first."
        }
      },
      "type": "object",
      "required": [
        "idleTtl",
        "kmsKey",
        "networkTags",
        "networkUri",
        "serviceAccount",
        "stagingBucket",
        "subnetworkUri",
        "ttl"
      ]
    },
    "google-native:dataproc/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:dataproc/v1:FlinkJob": {
      "description": "A Dataproc job for running Apache Flink applications on YARN.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision might occur that causes an incorrect job submission."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Flink driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jarFileUris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file that contains the main class."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Flink. Properties that conflict with values set by the Dataproc API might beoverwritten. Can include properties set in/etc/flink/conf/flink-defaults.conf and classes in user code."
        },
        "savepointUri": {
          "type": "string",
          "description": "Optional. HCFS URI of the savepoint, which contains the last saved progress for starting the current job."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:FlinkJobResponse": {
      "description": "A Dataproc job for running Apache Flink applications on YARN.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision might occur that causes an incorrect job submission."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Flink driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jarFileUris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file that contains the main class."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Flink. Properties that conflict with values set by the Dataproc API might beoverwritten. Can include properties set in/etc/flink/conf/flink-defaults.conf and classes in user code."
        },
        "savepointUri": {
          "type": "string",
          "description": "Optional. HCFS URI of the savepoint, which contains the last saved progress for starting the current job."
        }
      },
      "type": "object",
      "required": [
        "args",
        "jarFileUris",
        "loggingConfig",
        "mainClass",
        "mainJarFileUri",
        "properties",
        "savepointUri"
      ]
    },
    "google-native:dataproc/v1:GceClusterConfig": {
      "description": "Common config settings for resources of Compute Engine cluster instances, applicable to all instances in the cluster.",
      "properties": {
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ConfidentialInstanceConfig",
          "description": "Optional. Confidential Instance Config for clusters using Confidential VMs (https://cloud.google.com/compute/confidential-vm/docs)."
        },
        "internalIpOnly": {
          "type": "boolean",
          "description": "Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata))."
        },
        "networkUri": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see Using Subnetworks (https://cloud.google.com/compute/docs/subnetworks) for more information).A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/global/networks/default projects/[project_id]/global/networks/default default"
        },
        "nodeGroupAffinity": {
          "$ref": "#/types/google-native:dataproc%2Fv1:NodeGroupAffinity",
          "description": "Optional. Node Group Affinity for sole-tenant clusters."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GceClusterConfigPrivateIpv6GoogleAccess",
          "description": "Optional. The type of IPv6 access for a cluster."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ReservationAffinity",
          "description": "Optional. Reservation Affinity for consuming Zonal reservation."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The Dataproc service account (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see VM Data Plane identity (https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services.If not specified, the Compute Engine default service account (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: https://www.googleapis.com/auth/cloud.useraccounts.readonly https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided: https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/bigtable.admin.table https://www.googleapis.com/auth/bigtable.data https://www.googleapis.com/auth/devstorage.full_control"
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ShieldedInstanceConfig",
          "description": "Optional. Shielded Instance Config for clusters using Compute Engine Shielded VMs (https://cloud.google.com/security/shielded-cloud/shielded-vm)."
        },
        "subnetworkUri": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/[region]/subnetworks/sub0 projects/[project_id]/regions/[region]/subnetworks/sub0 sub0"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Compute Engine tags to add to all instances (see Tagging instances (https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "zoneUri": {
          "type": "string",
          "description": "Optional. The Compute Engine zone where the Dataproc cluster will be located. If omitted, the service will pick a zone in the cluster's Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone] projects/[project_id]/zones/[zone] [zone]"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:GceClusterConfigPrivateIpv6GoogleAccess": {
      "description": "Optional. The type of IPv6 access for a cluster.",
      "type": "string",
      "enum": [
        {
          "name": "PrivateIpv6GoogleAccessUnspecified",
          "description": "If unspecified, Compute Engine default behavior will apply, which is the same as INHERIT_FROM_SUBNETWORK.",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED"
        },
        {
          "name": "InheritFromSubnetwork",
          "description": "Private access to and from Google Services configuration inherited from the subnetwork configuration. This is the default Compute Engine behavior.",
          "value": "INHERIT_FROM_SUBNETWORK"
        },
        {
          "name": "Outbound",
          "description": "Enables outbound private IPv6 access to Google Services from the Dataproc cluster.",
          "value": "OUTBOUND"
        },
        {
          "name": "Bidirectional",
          "description": "Enables bidirectional private IPv6 access between Google Services and the Dataproc cluster.",
          "value": "BIDIRECTIONAL"
        }
      ]
    },
    "google-native:dataproc/v1:GceClusterConfigResponse": {
      "description": "Common config settings for resources of Compute Engine cluster instances, applicable to all instances in the cluster.",
      "properties": {
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ConfidentialInstanceConfigResponse",
          "description": "Optional. Confidential Instance Config for clusters using Confidential VMs (https://cloud.google.com/compute/confidential-vm/docs)."
        },
        "internalIpOnly": {
          "type": "boolean",
          "description": "Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata))."
        },
        "networkUri": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see Using Subnetworks (https://cloud.google.com/compute/docs/subnetworks) for more information).A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/global/networks/default projects/[project_id]/global/networks/default default"
        },
        "nodeGroupAffinity": {
          "$ref": "#/types/google-native:dataproc%2Fv1:NodeGroupAffinityResponse",
          "description": "Optional. Node Group Affinity for sole-tenant clusters."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "Optional. The type of IPv6 access for a cluster."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ReservationAffinityResponse",
          "description": "Optional. Reservation Affinity for consuming Zonal reservation."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The Dataproc service account (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see VM Data Plane identity (https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services.If not specified, the Compute Engine default service account (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: https://www.googleapis.com/auth/cloud.useraccounts.readonly https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided: https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/bigtable.admin.table https://www.googleapis.com/auth/bigtable.data https://www.googleapis.com/auth/devstorage.full_control"
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ShieldedInstanceConfigResponse",
          "description": "Optional. Shielded Instance Config for clusters using Compute Engine Shielded VMs (https://cloud.google.com/security/shielded-cloud/shielded-vm)."
        },
        "subnetworkUri": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/[region]/subnetworks/sub0 projects/[project_id]/regions/[region]/subnetworks/sub0 sub0"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Compute Engine tags to add to all instances (see Tagging instances (https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "zoneUri": {
          "type": "string",
          "description": "Optional. The Compute Engine zone where the Dataproc cluster will be located. If omitted, the service will pick a zone in the cluster's Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone] projects/[project_id]/zones/[zone] [zone]"
        }
      },
      "type": "object",
      "required": [
        "confidentialInstanceConfig",
        "internalIpOnly",
        "metadata",
        "networkUri",
        "nodeGroupAffinity",
        "privateIpv6GoogleAccess",
        "reservationAffinity",
        "serviceAccount",
        "serviceAccountScopes",
        "shieldedInstanceConfig",
        "subnetworkUri",
        "tags",
        "zoneUri"
      ]
    },
    "google-native:dataproc/v1:GkeClusterConfig": {
      "description": "The cluster's GKE config.",
      "properties": {
        "gkeClusterTarget": {
          "type": "string",
          "description": "Optional. A target GKE cluster to deploy to. It must be in the same project and region as the Dataproc cluster (the GKE cluster can be zonal or regional). Format: 'projects/{project}/locations/{location}/clusters/{cluster_id}'"
        },
        "namespacedGkeDeploymentTarget": {
          "$ref": "#/types/google-native:dataproc%2Fv1:NamespacedGkeDeploymentTarget",
          "description": "Optional. Deprecated. Use gkeClusterTarget. Used only for the deprecated beta. A target for the deployment.",
          "deprecationMessage": "Optional. Deprecated. Use gkeClusterTarget. Used only for the deprecated beta. A target for the deployment."
        },
        "nodePoolTarget": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolTarget"
          },
          "description": "Optional. GKE node pools where workloads will be scheduled. At least one node pool must be assigned the DEFAULT GkeNodePoolTarget.Role. If a GkeNodePoolTarget is not specified, Dataproc constructs a DEFAULT GkeNodePoolTarget. Each role can be given to only one GkeNodePoolTarget. All node pools must have the same location settings."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:GkeClusterConfigResponse": {
      "description": "The cluster's GKE config.",
      "properties": {
        "gkeClusterTarget": {
          "type": "string",
          "description": "Optional. A target GKE cluster to deploy to. It must be in the same project and region as the Dataproc cluster (the GKE cluster can be zonal or regional). Format: 'projects/{project}/locations/{location}/clusters/{cluster_id}'"
        },
        "namespacedGkeDeploymentTarget": {
          "$ref": "#/types/google-native:dataproc%2Fv1:NamespacedGkeDeploymentTargetResponse",
          "description": "Optional. Deprecated. Use gkeClusterTarget. Used only for the deprecated beta. A target for the deployment.",
          "deprecationMessage": "Optional. Deprecated. Use gkeClusterTarget. Used only for the deprecated beta. A target for the deployment."
        },
        "nodePoolTarget": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolTargetResponse"
          },
          "description": "Optional. GKE node pools where workloads will be scheduled. At least one node pool must be assigned the DEFAULT GkeNodePoolTarget.Role. If a GkeNodePoolTarget is not specified, Dataproc constructs a DEFAULT GkeNodePoolTarget. Each role can be given to only one GkeNodePoolTarget. All node pools must have the same location settings."
        }
      },
      "type": "object",
      "required": [
        "gkeClusterTarget",
        "namespacedGkeDeploymentTarget",
        "nodePoolTarget"
      ]
    },
    "google-native:dataproc/v1:GkeNodeConfig": {
      "description": "Parameters that describe cluster nodes.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolAcceleratorConfig"
          },
          "description": "Optional. A list of hardware accelerators (https://cloud.google.com/compute/docs/gpus) to attach to each node."
        },
        "bootDiskKmsKey": {
          "type": "string",
          "description": "Optional. The Customer Managed Encryption Key (CMEK) (https://cloud.google.com/kubernetes-engine/docs/how-to/using-cmek) used to encrypt the boot disk attached to each node in the node pool. Specify the key using the following format: projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}"
        },
        "localSsdCount": {
          "type": "integer",
          "description": "Optional. The number of local SSD disks to attach to the node, which is limited by the maximum number of disks allowable per zone (see Adding Local SSDs (https://cloud.google.com/compute/docs/disks/local-ssd))."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The name of a Compute Engine machine type (https://cloud.google.com/compute/docs/machine-types)."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Optional. Minimum CPU platform (https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) to be used by this instance. The instance may be scheduled on the specified or a newer CPU platform. Specify the friendly names of CPU platforms, such as \"Intel Haswell\"` or Intel Sandy Bridge\"."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Optional. Whether the nodes are created as legacy preemptible VM instances (https://cloud.google.com/compute/docs/instances/preemptible). Also see Spot VMs, preemptible VM instances without a maximum lifetime. Legacy and Spot preemptible nodes cannot be used in a node pool with the CONTROLLER role or in the DEFAULT node pool if the CONTROLLER role is not assigned (the DEFAULT node pool will assume the CONTROLLER role)."
        },
        "spot": {
          "type": "boolean",
          "description": "Optional. Whether the nodes are created as Spot VM instances (https://cloud.google.com/compute/docs/instances/spot). Spot VMs are the latest update to legacy preemptible VMs. Spot VMs do not have a maximum lifetime. Legacy and Spot preemptible nodes cannot be used in a node pool with the CONTROLLER role or in the DEFAULT node pool if the CONTROLLER role is not assigned (the DEFAULT node pool will assume the CONTROLLER role)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:GkeNodeConfigResponse": {
      "description": "Parameters that describe cluster nodes.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolAcceleratorConfigResponse"
          },
          "description": "Optional. A list of hardware accelerators (https://cloud.google.com/compute/docs/gpus) to attach to each node."
        },
        "bootDiskKmsKey": {
          "type": "string",
          "description": "Optional. The Customer Managed Encryption Key (CMEK) (https://cloud.google.com/kubernetes-engine/docs/how-to/using-cmek) used to encrypt the boot disk attached to each node in the node pool. Specify the key using the following format: projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}"
        },
        "localSsdCount": {
          "type": "integer",
          "description": "Optional. The number of local SSD disks to attach to the node, which is limited by the maximum number of disks allowable per zone (see Adding Local SSDs (https://cloud.google.com/compute/docs/disks/local-ssd))."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The name of a Compute Engine machine type (https://cloud.google.com/compute/docs/machine-types)."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Optional. Minimum CPU platform (https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) to be used by this instance. The instance may be scheduled on the specified or a newer CPU platform. Specify the friendly names of CPU platforms, such as \"Intel Haswell\"` or Intel Sandy Bridge\"."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Optional. Whether the nodes are created as legacy preemptible VM instances (https://cloud.google.com/compute/docs/instances/preemptible). Also see Spot VMs, preemptible VM instances without a maximum lifetime. Legacy and Spot preemptible nodes cannot be used in a node pool with the CONTROLLER role or in the DEFAULT node pool if the CONTROLLER role is not assigned (the DEFAULT node pool will assume the CONTROLLER role)."
        },
        "spot": {
          "type": "boolean",
          "description": "Optional. Whether the nodes are created as Spot VM instances (https://cloud.google.com/compute/docs/instances/spot). Spot VMs are the latest update to legacy preemptible VMs. Spot VMs do not have a maximum lifetime. Legacy and Spot preemptible nodes cannot be used in a node pool with the CONTROLLER role or in the DEFAULT node pool if the CONTROLLER role is not assigned (the DEFAULT node pool will assume the CONTROLLER role)."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "bootDiskKmsKey",
        "localSsdCount",
        "machineType",
        "minCpuPlatform",
        "preemptible",
        "spot"
      ]
    },
    "google-native:dataproc/v1:GkeNodePoolAcceleratorConfig": {
      "description": "A GkeNodeConfigAcceleratorConfig represents a Hardware Accelerator request for a node pool.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "The number of accelerator cards exposed to an instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The accelerator type resource namename (see GPUs on Compute Engine)."
        },
        "gpuPartitionSize": {
          "type": "string",
          "description": "Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide (https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:GkeNodePoolAcceleratorConfigResponse": {
      "description": "A GkeNodeConfigAcceleratorConfig represents a Hardware Accelerator request for a node pool.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "The number of accelerator cards exposed to an instance."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The accelerator type resource namename (see GPUs on Compute Engine)."
        },
        "gpuPartitionSize": {
          "type": "string",
          "description": "Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide (https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning)."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType",
        "gpuPartitionSize"
      ]
    },
    "google-native:dataproc/v1:GkeNodePoolAutoscalingConfig": {
      "description": "GkeNodePoolAutoscaling contains information the cluster autoscaler needs to adjust the size of the node pool to the current cluster usage.",
      "properties": {
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes in the node pool. Must be >= min_node_count, and must be > 0. Note: Quota must be sufficient to scale up the cluster."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes in the node pool. Must be >= 0 and <= max_node_count."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:GkeNodePoolAutoscalingConfigResponse": {
      "description": "GkeNodePoolAutoscaling contains information the cluster autoscaler needs to adjust the size of the node pool to the current cluster usage.",
      "properties": {
        "maxNodeCount": {
          "type": "integer",
          "description": "The maximum number of nodes in the node pool. Must be >= min_node_count, and must be > 0. Note: Quota must be sufficient to scale up the cluster."
        },
        "minNodeCount": {
          "type": "integer",
          "description": "The minimum number of nodes in the node pool. Must be >= 0 and <= max_node_count."
        }
      },
      "type": "object",
      "required": [
        "maxNodeCount",
        "minNodeCount"
      ]
    },
    "google-native:dataproc/v1:GkeNodePoolConfig": {
      "description": "The configuration of a GKE node pool used by a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/concepts/jobs/dataproc-gke#create-a-dataproc-on-gke-cluster).",
      "properties": {
        "autoscaling": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolAutoscalingConfig",
          "description": "Optional. The autoscaler configuration for this node pool. The autoscaler is enabled only when a valid configuration is present."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodeConfig",
          "description": "Optional. The node pool configuration."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of Compute Engine zones (https://cloud.google.com/compute/docs/zones#available) where node pool nodes associated with a Dataproc on GKE virtual cluster will be located.Note: All node pools associated with a virtual cluster must be located in the same region as the virtual cluster, and they must be located in the same zone within that region.If a location is not specified during node pool creation, Dataproc on GKE will choose the zone."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:GkeNodePoolConfigResponse": {
      "description": "The configuration of a GKE node pool used by a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/concepts/jobs/dataproc-gke#create-a-dataproc-on-gke-cluster).",
      "properties": {
        "autoscaling": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolAutoscalingConfigResponse",
          "description": "Optional. The autoscaler configuration for this node pool. The autoscaler is enabled only when a valid configuration is present."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodeConfigResponse",
          "description": "Optional. The node pool configuration."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of Compute Engine zones (https://cloud.google.com/compute/docs/zones#available) where node pool nodes associated with a Dataproc on GKE virtual cluster will be located.Note: All node pools associated with a virtual cluster must be located in the same region as the virtual cluster, and they must be located in the same zone within that region.If a location is not specified during node pool creation, Dataproc on GKE will choose the zone."
        }
      },
      "type": "object",
      "required": [
        "autoscaling",
        "config",
        "locations"
      ]
    },
    "google-native:dataproc/v1:GkeNodePoolTarget": {
      "description": "GKE node pools that Dataproc workloads run on.",
      "properties": {
        "nodePool": {
          "type": "string",
          "description": "The target GKE node pool. Format: 'projects/{project}/locations/{location}/clusters/{cluster}/nodePools/{node_pool}'"
        },
        "nodePoolConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolConfig",
          "description": "Input only. The configuration for the GKE node pool.If specified, Dataproc attempts to create a node pool with the specified shape. If one with the same name already exists, it is verified against all specified fields. If a field differs, the virtual cluster creation will fail.If omitted, any node pool with the specified name is used. If a node pool with the specified name does not exist, Dataproc create a node pool with default values.This is an input only field. It will not be returned by the API."
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolTargetRolesItem"
          },
          "description": "The roles associated with the GKE node pool."
        }
      },
      "type": "object",
      "required": [
        "nodePool",
        "roles"
      ]
    },
    "google-native:dataproc/v1:GkeNodePoolTargetResponse": {
      "description": "GKE node pools that Dataproc workloads run on.",
      "properties": {
        "nodePool": {
          "type": "string",
          "description": "The target GKE node pool. Format: 'projects/{project}/locations/{location}/clusters/{cluster}/nodePools/{node_pool}'"
        },
        "nodePoolConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeNodePoolConfigResponse",
          "description": "Input only. The configuration for the GKE node pool.If specified, Dataproc attempts to create a node pool with the specified shape. If one with the same name already exists, it is verified against all specified fields. If a field differs, the virtual cluster creation will fail.If omitted, any node pool with the specified name is used. If a node pool with the specified name does not exist, Dataproc create a node pool with default values.This is an input only field. It will not be returned by the API."
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The roles associated with the GKE node pool."
        }
      },
      "type": "object",
      "required": [
        "nodePool",
        "nodePoolConfig",
        "roles"
      ]
    },
    "google-native:dataproc/v1:GkeNodePoolTargetRolesItem": {
      "type": "string",
      "enum": [
        {
          "name": "RoleUnspecified",
          "description": "Role is unspecified.",
          "value": "ROLE_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "At least one node pool must have the DEFAULT role. Work assigned to a role that is not associated with a node pool is assigned to the node pool with the DEFAULT role. For example, work assigned to the CONTROLLER role will be assigned to the node pool with the DEFAULT role if no node pool has the CONTROLLER role.",
          "value": "DEFAULT"
        },
        {
          "name": "Controller",
          "description": "Run work associated with the Dataproc control plane (for example, controllers and webhooks). Very low resource requirements.",
          "value": "CONTROLLER"
        },
        {
          "name": "SparkDriver",
          "description": "Run work associated with a Spark driver of a job.",
          "value": "SPARK_DRIVER"
        },
        {
          "name": "SparkExecutor",
          "description": "Run work associated with a Spark executor of a job.",
          "value": "SPARK_EXECUTOR"
        }
      ]
    },
    "google-native:dataproc/v1:GoogleCloudDataprocV1WorkflowTemplateEncryptionConfig": {
      "description": "Encryption settings for the encrypting customer core content. NEXT ID: 2",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "Optional. The Cloud KMS key name to use for encrypting customer core content."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:GoogleCloudDataprocV1WorkflowTemplateEncryptionConfigResponse": {
      "description": "Encryption settings for the encrypting customer core content. NEXT ID: 2",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "Optional. The Cloud KMS key name to use for encrypting customer core content."
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:dataproc/v1:HadoopJob": {
      "description": "A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html).",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision might occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:HadoopJobResponse": {
      "description": "A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html).",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision might occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "jarFileUris",
        "loggingConfig",
        "mainClass",
        "mainJarFileUri",
        "properties"
      ]
    },
    "google-native:dataproc/v1:HiveJob": {
      "description": "A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN.",
      "properties": {
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains Hive queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryList",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=\"value\";)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:HiveJobResponse": {
      "description": "A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN.",
      "properties": {
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains Hive queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryListResponse",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=\"value\";)."
        }
      },
      "type": "object",
      "required": [
        "continueOnFailure",
        "jarFileUris",
        "properties",
        "queryFileUri",
        "queryList",
        "scriptVariables"
      ]
    },
    "google-native:dataproc/v1:IdentityConfig": {
      "description": "Identity related configuration, including service account based secure multi-tenancy user mappings.",
      "properties": {
        "userServiceAccountMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of user to service account."
        }
      },
      "type": "object",
      "required": [
        "userServiceAccountMapping"
      ]
    },
    "google-native:dataproc/v1:IdentityConfigResponse": {
      "description": "Identity related configuration, including service account based secure multi-tenancy user mappings.",
      "properties": {
        "userServiceAccountMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of user to service account."
        }
      },
      "type": "object",
      "required": [
        "userServiceAccountMapping"
      ]
    },
    "google-native:dataproc/v1:InstanceFlexibilityPolicy": {
      "description": "Instance flexibility Policy allowing a mixture of VM shapes and provisioning models.",
      "properties": {
        "instanceSelectionList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:InstanceSelection"
          },
          "description": "Optional. List of instance selection options that the group will use when creating new VMs."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:InstanceFlexibilityPolicyResponse": {
      "description": "Instance flexibility Policy allowing a mixture of VM shapes and provisioning models.",
      "properties": {
        "instanceSelectionList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:InstanceSelectionResponse"
          },
          "description": "Optional. List of instance selection options that the group will use when creating new VMs."
        },
        "instanceSelectionResults": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:InstanceSelectionResultResponse"
          },
          "description": "A list of instance selection results in the group."
        }
      },
      "type": "object",
      "required": [
        "instanceSelectionList",
        "instanceSelectionResults"
      ]
    },
    "google-native:dataproc/v1:InstanceGroupAutoscalingPolicyConfig": {
      "description": "Configuration for the size bounds of an instance group, including its proportional size to other groups.",
      "properties": {
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances for this group. Required for primary workers. Note that by default, clusters will not use secondary workers. Required for secondary workers if the minimum secondary instances is set.Primary workers - Bounds: [min_instances, ). Secondary workers - Bounds: [min_instances, ). Default: 0."
        },
        "minInstances": {
          "type": "integer",
          "description": "Optional. Minimum number of instances for this group.Primary workers - Bounds: 2, max_instances. Default: 2. Secondary workers - Bounds: 0, max_instances. Default: 0."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Weight for the instance group, which is used to determine the fraction of total workers in the cluster from this instance group. For example, if primary workers have weight 2, and secondary workers have weight 1, the cluster will have approximately 2 primary workers for each secondary worker.The cluster may not reach the specified balance if constrained by min/max bounds or other autoscaling settings. For example, if max_instances for secondary workers is 0, then only primary workers will be added. The cluster can also be out of balance when created.If weight is not set on any instance group, the cluster will default to equal weight for all groups: the cluster will attempt to maintain an equal number of workers in each group within the configured size bounds for each group. If weight is set for one group only, the cluster will default to zero weight on the unset group. For example if weight is set only on primary workers, the cluster will use primary workers only and no secondary workers."
        }
      },
      "type": "object",
      "required": [
        "maxInstances"
      ]
    },
    "google-native:dataproc/v1:InstanceGroupAutoscalingPolicyConfigResponse": {
      "description": "Configuration for the size bounds of an instance group, including its proportional size to other groups.",
      "properties": {
        "maxInstances": {
          "type": "integer",
          "description": "Maximum number of instances for this group. Required for primary workers. Note that by default, clusters will not use secondary workers. Required for secondary workers if the minimum secondary instances is set.Primary workers - Bounds: [min_instances, ). Secondary workers - Bounds: [min_instances, ). Default: 0."
        },
        "minInstances": {
          "type": "integer",
          "description": "Optional. Minimum number of instances for this group.Primary workers - Bounds: 2, max_instances. Default: 2. Secondary workers - Bounds: 0, max_instances. Default: 0."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Weight for the instance group, which is used to determine the fraction of total workers in the cluster from this instance group. For example, if primary workers have weight 2, and secondary workers have weight 1, the cluster will have approximately 2 primary workers for each secondary worker.The cluster may not reach the specified balance if constrained by min/max bounds or other autoscaling settings. For example, if max_instances for secondary workers is 0, then only primary workers will be added. The cluster can also be out of balance when created.If weight is not set on any instance group, the cluster will default to equal weight for all groups: the cluster will attempt to maintain an equal number of workers in each group within the configured size bounds for each group. If weight is set for one group only, the cluster will default to zero weight on the unset group. For example if weight is set only on primary workers, the cluster will use primary workers only and no secondary workers."
        }
      },
      "type": "object",
      "required": [
        "maxInstances",
        "minInstances",
        "weight"
      ]
    },
    "google-native:dataproc/v1:InstanceGroupConfig": {
      "description": "The config settings for Compute Engine resources in an instance group, such as a master or worker group.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:AcceleratorConfig"
          },
          "description": "Optional. The Compute Engine accelerator configuration for these instances."
        },
        "diskConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:DiskConfig",
          "description": "Optional. Disk option config settings."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/v1/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/v1/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceFlexibilityPolicy",
          "description": "Optional. Instance flexibility Policy allowing a mixture of VM shapes and provisioning models."
        },
        "machineTypeUri": {
          "type": "string",
          "description": "Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]/machineTypes/n1-standard-2 projects/[project_id]/zones/[zone]/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -> Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu)."
        },
        "minNumInstances": {
          "type": "integer",
          "description": "Optional. The minimum number of primary worker instances to create. If min_num_instances is set, cluster creation will succeed if the number of primary workers created is at least equal to the min_num_instances number.Example: Cluster creation request with num_instances = 5 and min_num_instances = 3: If 4 VMs are created and 1 instance fails, the failed VM is deleted. The cluster is resized to 4 instances and placed in a RUNNING state. If 2 instances are created and 3 instances fail, the cluster in placed in an ERROR state. The failed VMs are not deleted."
        },
        "numInstances": {
          "type": "integer",
          "description": "Optional. The number of VM instances in the instance group. For HA cluster master_config groups, must be set to 3. For standard cluster master_config groups, must be set to 1."
        },
        "preemptibility": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfigPreemptibility",
          "description": "Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE."
        },
        "startupConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:StartupConfig",
          "description": "Optional. Configuration to handle the startup of instances during cluster create and update process."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:InstanceGroupConfigPreemptibility": {
      "description": "Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.",
      "type": "string",
      "enum": [
        {
          "name": "PreemptibilityUnspecified",
          "description": "Preemptibility is unspecified, the system will choose the appropriate setting for each instance group.",
          "value": "PREEMPTIBILITY_UNSPECIFIED"
        },
        {
          "name": "NonPreemptible",
          "description": "Instances are non-preemptible.This option is allowed for all instance groups and is the only valid value for Master and Worker instance groups.",
          "value": "NON_PREEMPTIBLE"
        },
        {
          "name": "Preemptible",
          "description": "Instances are preemptible (https://cloud.google.com/compute/docs/instances/preemptible).This option is allowed only for secondary worker (https://cloud.google.com/dataproc/docs/concepts/compute/secondary-vms) groups.",
          "value": "PREEMPTIBLE"
        },
        {
          "name": "Spot",
          "description": "Instances are Spot VMs (https://cloud.google.com/compute/docs/instances/spot).This option is allowed only for secondary worker (https://cloud.google.com/dataproc/docs/concepts/compute/secondary-vms) groups. Spot VMs are the latest version of preemptible VMs (https://cloud.google.com/compute/docs/instances/preemptible), and provide additional features.",
          "value": "SPOT"
        }
      ]
    },
    "google-native:dataproc/v1:InstanceGroupConfigResponse": {
      "description": "The config settings for Compute Engine resources in an instance group, such as a master or worker group.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:AcceleratorConfigResponse"
          },
          "description": "Optional. The Compute Engine accelerator configuration for these instances."
        },
        "diskConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:DiskConfigResponse",
          "description": "Optional. Disk option config settings."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/v1/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/v1/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceFlexibilityPolicyResponse",
          "description": "Optional. Instance flexibility Policy allowing a mixture of VM shapes and provisioning models."
        },
        "instanceNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group."
        },
        "instanceReferences": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:InstanceReferenceResponse"
          },
          "description": "List of references to Compute Engine instances."
        },
        "isPreemptible": {
          "type": "boolean",
          "description": "Specifies that this instance group contains preemptible instances."
        },
        "machineTypeUri": {
          "type": "string",
          "description": "Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]/machineTypes/n1-standard-2 projects/[project_id]/zones/[zone]/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2."
        },
        "managedGroupConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ManagedGroupConfigResponse",
          "description": "The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Optional. Specifies the minimum cpu platform for the Instance Group. See Dataproc -> Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu)."
        },
        "minNumInstances": {
          "type": "integer",
          "description": "Optional. The minimum number of primary worker instances to create. If min_num_instances is set, cluster creation will succeed if the number of primary workers created is at least equal to the min_num_instances number.Example: Cluster creation request with num_instances = 5 and min_num_instances = 3: If 4 VMs are created and 1 instance fails, the failed VM is deleted. The cluster is resized to 4 instances and placed in a RUNNING state. If 2 instances are created and 3 instances fail, the cluster in placed in an ERROR state. The failed VMs are not deleted."
        },
        "numInstances": {
          "type": "integer",
          "description": "Optional. The number of VM instances in the instance group. For HA cluster master_config groups, must be set to 3. For standard cluster master_config groups, must be set to 1."
        },
        "preemptibility": {
          "type": "string",
          "description": "Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE."
        },
        "startupConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:StartupConfigResponse",
          "description": "Optional. Configuration to handle the startup of instances during cluster create and update process."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "diskConfig",
        "imageUri",
        "instanceFlexibilityPolicy",
        "instanceNames",
        "instanceReferences",
        "isPreemptible",
        "machineTypeUri",
        "managedGroupConfig",
        "minCpuPlatform",
        "minNumInstances",
        "numInstances",
        "preemptibility",
        "startupConfig"
      ]
    },
    "google-native:dataproc/v1:InstanceReferenceResponse": {
      "description": "A reference to a Compute Engine instance.",
      "properties": {
        "instanceId": {
          "type": "string",
          "description": "The unique identifier of the Compute Engine instance."
        },
        "instanceName": {
          "type": "string",
          "description": "The user-friendly name of the Compute Engine instance."
        },
        "publicEciesKey": {
          "type": "string",
          "description": "The public ECIES key used for sharing data with this instance."
        },
        "publicKey": {
          "type": "string",
          "description": "The public RSA key used for sharing data with this instance."
        }
      },
      "type": "object",
      "required": [
        "instanceId",
        "instanceName",
        "publicEciesKey",
        "publicKey"
      ]
    },
    "google-native:dataproc/v1:InstanceSelection": {
      "description": "Defines machines types and a rank to which the machines types belong.",
      "properties": {
        "machineTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Full machine-type names, e.g. \"n1-standard-16\"."
        },
        "rank": {
          "type": "integer",
          "description": "Optional. Preference of this instance selection. Lower number means higher preference. Dataproc will first try to create a VM based on the machine-type with priority rank and fallback to next rank based on availability. Machine types and instance selections with the same priority have the same preference."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:InstanceSelectionResponse": {
      "description": "Defines machines types and a rank to which the machines types belong.",
      "properties": {
        "machineTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Full machine-type names, e.g. \"n1-standard-16\"."
        },
        "rank": {
          "type": "integer",
          "description": "Optional. Preference of this instance selection. Lower number means higher preference. Dataproc will first try to create a VM based on the machine-type with priority rank and fallback to next rank based on availability. Machine types and instance selections with the same priority have the same preference."
        }
      },
      "type": "object",
      "required": [
        "machineTypes",
        "rank"
      ]
    },
    "google-native:dataproc/v1:InstanceSelectionResultResponse": {
      "description": "Defines a mapping from machine types to the number of VMs that are created with each machine type.",
      "properties": {
        "machineType": {
          "type": "string",
          "description": "Full machine-type names, e.g. \"n1-standard-16\"."
        },
        "vmCount": {
          "type": "integer",
          "description": "Number of VM provisioned with the machine_type."
        }
      },
      "type": "object",
      "required": [
        "machineType",
        "vmCount"
      ]
    },
    "google-native:dataproc/v1:JobPlacement": {
      "description": "Dataproc job config.",
      "properties": {
        "clusterLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Cluster labels to identify a cluster where the job will be submitted."
        },
        "clusterName": {
          "type": "string",
          "description": "The name of the cluster where the job will be submitted."
        }
      },
      "type": "object",
      "required": [
        "clusterName"
      ]
    },
    "google-native:dataproc/v1:JobPlacementResponse": {
      "description": "Dataproc job config.",
      "properties": {
        "clusterLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Cluster labels to identify a cluster where the job will be submitted."
        },
        "clusterName": {
          "type": "string",
          "description": "The name of the cluster where the job will be submitted."
        },
        "clusterUuid": {
          "type": "string",
          "description": "A cluster UUID generated by the Dataproc service when the job is submitted."
        }
      },
      "type": "object",
      "required": [
        "clusterLabels",
        "clusterName",
        "clusterUuid"
      ]
    },
    "google-native:dataproc/v1:JobReference": {
      "description": "Encapsulates the full scoping used to reference a job.",
      "properties": {
        "jobId": {
          "type": "string",
          "description": "Optional. The job ID, which must be unique within the project.The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server."
        },
        "project": {
          "type": "string",
          "description": "Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:JobReferenceResponse": {
      "description": "Encapsulates the full scoping used to reference a job.",
      "properties": {
        "jobId": {
          "type": "string",
          "description": "Optional. The job ID, which must be unique within the project.The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server."
        },
        "project": {
          "type": "string",
          "description": "Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID."
        }
      },
      "type": "object",
      "required": [
        "jobId",
        "project"
      ]
    },
    "google-native:dataproc/v1:JobScheduling": {
      "description": "Job scheduling options.",
      "properties": {
        "maxFailuresPerHour": {
          "type": "integer",
          "description": "Optional. Maximum number of times per hour a driver can be restarted as a result of driver exiting with non-zero code before job is reported failed.A job might be reported as thrashing if the driver exits with a non-zero code four times within a 10-minute window.Maximum value is 10.Note: This restartable job option is not supported in Dataproc workflow templates (https://cloud.google.com/dataproc/docs/concepts/workflows/using-workflows#adding_jobs_to_a_template)."
        },
        "maxFailuresTotal": {
          "type": "integer",
          "description": "Optional. Maximum total number of times a driver can be restarted as a result of the driver exiting with a non-zero code. After the maximum number is reached, the job will be reported as failed.Maximum value is 240.Note: Currently, this restartable job option is not supported in Dataproc workflow templates (https://cloud.google.com/dataproc/docs/concepts/workflows/using-workflows#adding_jobs_to_a_template)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:JobSchedulingResponse": {
      "description": "Job scheduling options.",
      "properties": {
        "maxFailuresPerHour": {
          "type": "integer",
          "description": "Optional. Maximum number of times per hour a driver can be restarted as a result of driver exiting with non-zero code before job is reported failed.A job might be reported as thrashing if the driver exits with a non-zero code four times within a 10-minute window.Maximum value is 10.Note: This restartable job option is not supported in Dataproc workflow templates (https://cloud.google.com/dataproc/docs/concepts/workflows/using-workflows#adding_jobs_to_a_template)."
        },
        "maxFailuresTotal": {
          "type": "integer",
          "description": "Optional. Maximum total number of times a driver can be restarted as a result of the driver exiting with a non-zero code. After the maximum number is reached, the job will be reported as failed.Maximum value is 240.Note: Currently, this restartable job option is not supported in Dataproc workflow templates (https://cloud.google.com/dataproc/docs/concepts/workflows/using-workflows#adding_jobs_to_a_template)."
        }
      },
      "type": "object",
      "required": [
        "maxFailuresPerHour",
        "maxFailuresTotal"
      ]
    },
    "google-native:dataproc/v1:JobStatusResponse": {
      "description": "Dataproc job status.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Optional. Output only. Job state details, such as an error description if the state is ERROR."
        },
        "state": {
          "type": "string",
          "description": "A state message specifying the overall job state."
        },
        "stateStartTime": {
          "type": "string",
          "description": "The time when this state was entered."
        },
        "substate": {
          "type": "string",
          "description": "Additional state information, which includes status reported by the agent."
        }
      },
      "type": "object",
      "required": [
        "details",
        "state",
        "stateStartTime",
        "substate"
      ]
    },
    "google-native:dataproc/v1:JupyterConfig": {
      "description": "Jupyter configuration for an interactive session.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Optional. Display name, shown in the Jupyter kernelspec card."
        },
        "kernel": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JupyterConfigKernel",
          "description": "Optional. Kernel"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:JupyterConfigKernel": {
      "description": "Optional. Kernel",
      "type": "string",
      "enum": [
        {
          "name": "KernelUnspecified",
          "description": "The kernel is unknown.",
          "value": "KERNEL_UNSPECIFIED"
        },
        {
          "name": "Python",
          "description": "Python kernel.",
          "value": "PYTHON"
        },
        {
          "name": "Scala",
          "description": "Scala kernel.",
          "value": "SCALA"
        }
      ]
    },
    "google-native:dataproc/v1:JupyterConfigResponse": {
      "description": "Jupyter configuration for an interactive session.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Optional. Display name, shown in the Jupyter kernelspec card."
        },
        "kernel": {
          "type": "string",
          "description": "Optional. Kernel"
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "kernel"
      ]
    },
    "google-native:dataproc/v1:KerberosConfig": {
      "description": "Specifies Kerberos related configuration.",
      "properties": {
        "crossRealmTrustAdminServer": {
          "type": "string",
          "description": "Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship."
        },
        "crossRealmTrustKdc": {
          "type": "string",
          "description": "Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship."
        },
        "crossRealmTrustRealm": {
          "type": "string",
          "description": "Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust."
        },
        "crossRealmTrustSharedPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship."
        },
        "enableKerberos": {
          "type": "boolean",
          "description": "Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster."
        },
        "kdcDbKeyUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database."
        },
        "keyPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc."
        },
        "keystorePasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc."
        },
        "keystoreUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate."
        },
        "kmsKeyUri": {
          "type": "string",
          "description": "Optional. The uri of the KMS key used to encrypt various sensitive files."
        },
        "realm": {
          "type": "string",
          "description": "Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm."
        },
        "rootPrincipalPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password."
        },
        "tgtLifetimeHours": {
          "type": "integer",
          "description": "Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used."
        },
        "truststorePasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc."
        },
        "truststoreUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:KerberosConfigResponse": {
      "description": "Specifies Kerberos related configuration.",
      "properties": {
        "crossRealmTrustAdminServer": {
          "type": "string",
          "description": "Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship."
        },
        "crossRealmTrustKdc": {
          "type": "string",
          "description": "Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship."
        },
        "crossRealmTrustRealm": {
          "type": "string",
          "description": "Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust."
        },
        "crossRealmTrustSharedPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship."
        },
        "enableKerberos": {
          "type": "boolean",
          "description": "Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster."
        },
        "kdcDbKeyUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database."
        },
        "keyPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc."
        },
        "keystorePasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc."
        },
        "keystoreUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate."
        },
        "kmsKeyUri": {
          "type": "string",
          "description": "Optional. The uri of the KMS key used to encrypt various sensitive files."
        },
        "realm": {
          "type": "string",
          "description": "Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm."
        },
        "rootPrincipalPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password."
        },
        "tgtLifetimeHours": {
          "type": "integer",
          "description": "Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used."
        },
        "truststorePasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc."
        },
        "truststoreUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate."
        }
      },
      "type": "object",
      "required": [
        "crossRealmTrustAdminServer",
        "crossRealmTrustKdc",
        "crossRealmTrustRealm",
        "crossRealmTrustSharedPasswordUri",
        "enableKerberos",
        "kdcDbKeyUri",
        "keyPasswordUri",
        "keystorePasswordUri",
        "keystoreUri",
        "kmsKeyUri",
        "realm",
        "rootPrincipalPasswordUri",
        "tgtLifetimeHours",
        "truststorePasswordUri",
        "truststoreUri"
      ]
    },
    "google-native:dataproc/v1:KubernetesClusterConfig": {
      "description": "The configuration for running the Dataproc cluster on Kubernetes.",
      "properties": {
        "gkeClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeClusterConfig",
          "description": "The configuration for running the Dataproc cluster on GKE."
        },
        "kubernetesNamespace": {
          "type": "string",
          "description": "Optional. A namespace within the Kubernetes cluster to deploy into. If this namespace does not exist, it is created. If it exists, Dataproc verifies that another Dataproc VirtualCluster is not installed into it. If not specified, the name of the Dataproc Cluster is used."
        },
        "kubernetesSoftwareConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:KubernetesSoftwareConfig",
          "description": "Optional. The software configuration for this Dataproc cluster running on Kubernetes."
        }
      },
      "type": "object",
      "required": [
        "gkeClusterConfig"
      ]
    },
    "google-native:dataproc/v1:KubernetesClusterConfigResponse": {
      "description": "The configuration for running the Dataproc cluster on Kubernetes.",
      "properties": {
        "gkeClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GkeClusterConfigResponse",
          "description": "The configuration for running the Dataproc cluster on GKE."
        },
        "kubernetesNamespace": {
          "type": "string",
          "description": "Optional. A namespace within the Kubernetes cluster to deploy into. If this namespace does not exist, it is created. If it exists, Dataproc verifies that another Dataproc VirtualCluster is not installed into it. If not specified, the name of the Dataproc Cluster is used."
        },
        "kubernetesSoftwareConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:KubernetesSoftwareConfigResponse",
          "description": "Optional. The software configuration for this Dataproc cluster running on Kubernetes."
        }
      },
      "type": "object",
      "required": [
        "gkeClusterConfig",
        "kubernetesNamespace",
        "kubernetesSoftwareConfig"
      ]
    },
    "google-native:dataproc/v1:KubernetesSoftwareConfig": {
      "description": "The software configuration for this Dataproc cluster running on Kubernetes.",
      "properties": {
        "componentVersion": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The components that should be installed in this Dataproc cluster. The key must be a string from the KubernetesComponent enumeration. The value is the version of the software to be installed. At least one entry must be specified."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The properties to set on daemon config files.Property keys are specified in prefix:property format, for example spark:spark.kubernetes.container.image. The following are supported prefixes and their mappings: spark: spark-defaults.confFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:KubernetesSoftwareConfigResponse": {
      "description": "The software configuration for this Dataproc cluster running on Kubernetes.",
      "properties": {
        "componentVersion": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The components that should be installed in this Dataproc cluster. The key must be a string from the KubernetesComponent enumeration. The value is the version of the software to be installed. At least one entry must be specified."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The properties to set on daemon config files.Property keys are specified in prefix:property format, for example spark:spark.kubernetes.container.image. The following are supported prefixes and their mappings: spark: spark-defaults.confFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties)."
        }
      },
      "type": "object",
      "required": [
        "componentVersion",
        "properties"
      ]
    },
    "google-native:dataproc/v1:LifecycleConfig": {
      "description": "Specifies the cluster auto-delete schedule configuration.",
      "properties": {
        "autoDeleteTime": {
          "type": "string",
          "description": "Optional. The time when cluster will be auto-deleted (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "autoDeleteTtl": {
          "type": "string",
          "description": "Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "idleDeleteTtl": {
          "type": "string",
          "description": "Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:LifecycleConfigResponse": {
      "description": "Specifies the cluster auto-delete schedule configuration.",
      "properties": {
        "autoDeleteTime": {
          "type": "string",
          "description": "Optional. The time when cluster will be auto-deleted (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "autoDeleteTtl": {
          "type": "string",
          "description": "Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "idleDeleteTtl": {
          "type": "string",
          "description": "Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "idleStartTime": {
          "type": "string",
          "description": "The time when cluster became idle (most recent job finished) and became eligible for deletion due to idleness (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        }
      },
      "type": "object",
      "required": [
        "autoDeleteTime",
        "autoDeleteTtl",
        "idleDeleteTtl",
        "idleStartTime"
      ]
    },
    "google-native:dataproc/v1:LoggingConfig": {
      "description": "The runtime logging config of the job.",
      "properties": {
        "driverLogLevels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The per-package log levels for the driver. This can include \"root\" package name to configure rootLogger. Examples: - 'com.google = FATAL' - 'root = INFO' - 'org.apache = DEBUG'"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:LoggingConfigResponse": {
      "description": "The runtime logging config of the job.",
      "properties": {
        "driverLogLevels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The per-package log levels for the driver. This can include \"root\" package name to configure rootLogger. Examples: - 'com.google = FATAL' - 'root = INFO' - 'org.apache = DEBUG'"
        }
      },
      "type": "object",
      "required": [
        "driverLogLevels"
      ]
    },
    "google-native:dataproc/v1:ManagedCluster": {
      "description": "Cluster that is managed by the workflow.",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The cluster name prefix. A unique cluster name will be formed by appending a random suffix.The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ClusterConfig",
          "description": "The cluster configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this cluster.Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be associated with a given cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "config"
      ]
    },
    "google-native:dataproc/v1:ManagedClusterResponse": {
      "description": "Cluster that is managed by the workflow.",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The cluster name prefix. A unique cluster name will be formed by appending a random suffix.The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ClusterConfigResponse",
          "description": "The cluster configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this cluster.Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be associated with a given cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "config",
        "labels"
      ]
    },
    "google-native:dataproc/v1:ManagedGroupConfigResponse": {
      "description": "Specifies the resources used to actively manage an instance group.",
      "properties": {
        "instanceGroupManagerName": {
          "type": "string",
          "description": "The name of the Instance Group Manager for this group."
        },
        "instanceGroupManagerUri": {
          "type": "string",
          "description": "The partial URI to the instance group manager for this group. E.g. projects/my-project/regions/us-central1/instanceGroupManagers/my-igm."
        },
        "instanceTemplateName": {
          "type": "string",
          "description": "The name of the Instance Template used for the Managed Instance Group."
        }
      },
      "type": "object",
      "required": [
        "instanceGroupManagerName",
        "instanceGroupManagerUri",
        "instanceTemplateName"
      ]
    },
    "google-native:dataproc/v1:MetastoreConfig": {
      "description": "Specifies a Metastore configuration.",
      "properties": {
        "dataprocMetastoreService": {
          "type": "string",
          "description": "Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[dataproc_region]/services/[service-name]"
        }
      },
      "type": "object",
      "required": [
        "dataprocMetastoreService"
      ]
    },
    "google-native:dataproc/v1:MetastoreConfigResponse": {
      "description": "Specifies a Metastore configuration.",
      "properties": {
        "dataprocMetastoreService": {
          "type": "string",
          "description": "Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[dataproc_region]/services/[service-name]"
        }
      },
      "type": "object",
      "required": [
        "dataprocMetastoreService"
      ]
    },
    "google-native:dataproc/v1:Metric": {
      "description": "A Dataproc custom metric.",
      "properties": {
        "metricOverrides": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Specify one or more Custom metrics (https://cloud.google.com/dataproc/docs/guides/dataproc-metrics#custom_metrics) to collect for the metric course (for the SPARK metric source (any Spark metric (https://spark.apache.org/docs/latest/monitoring.html#metrics) can be specified).Provide metrics in the following format: METRIC_SOURCE: INSTANCE:GROUP:METRIC Use camelcase as appropriate.Examples: yarn:ResourceManager:QueueMetrics:AppsCompleted spark:driver:DAGScheduler:job.allJobs sparkHistoryServer:JVM:Memory:NonHeapMemoryUsage.committed hiveserver2:JVM:Memory:NonHeapMemoryUsage.used Notes: Only the specified overridden metrics are collected for the metric source. For example, if one or more spark:executive metrics are listed as metric overrides, other SPARK metrics are not collected. The collection of the metrics for other enabled custom metric sources is unaffected. For example, if both SPARK andd YARN metric sources are enabled, and overrides are provided for Spark metrics only, all YARN metrics are collected."
        },
        "metricSource": {
          "$ref": "#/types/google-native:dataproc%2Fv1:MetricMetricSource",
          "description": "A standard set of metrics is collected unless metricOverrides are specified for the metric source (see Custom metrics (https://cloud.google.com/dataproc/docs/guides/dataproc-metrics#custom_metrics) for more information)."
        }
      },
      "type": "object",
      "required": [
        "metricSource"
      ]
    },
    "google-native:dataproc/v1:MetricMetricSource": {
      "description": "Required. A standard set of metrics is collected unless metricOverrides are specified for the metric source (see Custom metrics (https://cloud.google.com/dataproc/docs/guides/dataproc-metrics#custom_metrics) for more information).",
      "type": "string",
      "enum": [
        {
          "name": "MetricSourceUnspecified",
          "description": "Required unspecified metric source.",
          "value": "METRIC_SOURCE_UNSPECIFIED"
        },
        {
          "name": "MonitoringAgentDefaults",
          "description": "Monitoring agent metrics. If this source is enabled, Dataproc enables the monitoring agent in Compute Engine, and collects monitoring agent metrics, which are published with an agent.googleapis.com prefix.",
          "value": "MONITORING_AGENT_DEFAULTS"
        },
        {
          "name": "Hdfs",
          "description": "HDFS metric source.",
          "value": "HDFS"
        },
        {
          "name": "Spark",
          "description": "Spark metric source.",
          "value": "SPARK"
        },
        {
          "name": "Yarn",
          "description": "YARN metric source.",
          "value": "YARN"
        },
        {
          "name": "SparkHistoryServer",
          "description": "Spark History Server metric source.",
          "value": "SPARK_HISTORY_SERVER"
        },
        {
          "name": "Hiveserver2",
          "description": "Hiveserver2 metric source.",
          "value": "HIVESERVER2"
        },
        {
          "name": "Hivemetastore",
          "description": "hivemetastore metric source",
          "value": "HIVEMETASTORE"
        },
        {
          "name": "Flink",
          "description": "flink metric source",
          "value": "FLINK"
        }
      ]
    },
    "google-native:dataproc/v1:MetricResponse": {
      "description": "A Dataproc custom metric.",
      "properties": {
        "metricOverrides": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Specify one or more Custom metrics (https://cloud.google.com/dataproc/docs/guides/dataproc-metrics#custom_metrics) to collect for the metric course (for the SPARK metric source (any Spark metric (https://spark.apache.org/docs/latest/monitoring.html#metrics) can be specified).Provide metrics in the following format: METRIC_SOURCE: INSTANCE:GROUP:METRIC Use camelcase as appropriate.Examples: yarn:ResourceManager:QueueMetrics:AppsCompleted spark:driver:DAGScheduler:job.allJobs sparkHistoryServer:JVM:Memory:NonHeapMemoryUsage.committed hiveserver2:JVM:Memory:NonHeapMemoryUsage.used Notes: Only the specified overridden metrics are collected for the metric source. For example, if one or more spark:executive metrics are listed as metric overrides, other SPARK metrics are not collected. The collection of the metrics for other enabled custom metric sources is unaffected. For example, if both SPARK andd YARN metric sources are enabled, and overrides are provided for Spark metrics only, all YARN metrics are collected."
        },
        "metricSource": {
          "type": "string",
          "description": "A standard set of metrics is collected unless metricOverrides are specified for the metric source (see Custom metrics (https://cloud.google.com/dataproc/docs/guides/dataproc-metrics#custom_metrics) for more information)."
        }
      },
      "type": "object",
      "required": [
        "metricOverrides",
        "metricSource"
      ]
    },
    "google-native:dataproc/v1:NamespacedGkeDeploymentTarget": {
      "description": "Deprecated. Used only for the deprecated beta. A full, namespace-isolated deployment target for an existing GKE cluster.",
      "properties": {
        "clusterNamespace": {
          "type": "string",
          "description": "Optional. A namespace within the GKE cluster to deploy into."
        },
        "targetGkeCluster": {
          "type": "string",
          "description": "Optional. The target GKE cluster to deploy to. Format: 'projects/{project}/locations/{location}/clusters/{cluster_id}'"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:NamespacedGkeDeploymentTargetResponse": {
      "description": "Deprecated. Used only for the deprecated beta. A full, namespace-isolated deployment target for an existing GKE cluster.",
      "properties": {
        "clusterNamespace": {
          "type": "string",
          "description": "Optional. A namespace within the GKE cluster to deploy into."
        },
        "targetGkeCluster": {
          "type": "string",
          "description": "Optional. The target GKE cluster to deploy to. Format: 'projects/{project}/locations/{location}/clusters/{cluster_id}'"
        }
      },
      "type": "object",
      "required": [
        "clusterNamespace",
        "targetGkeCluster"
      ]
    },
    "google-native:dataproc/v1:NodeGroup": {
      "description": "Dataproc Node Group. The Dataproc NodeGroup resource is not related to the Dataproc NodeGroupAffinity resource.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Node group labels. Label keys must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty. If specified, they must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). The node group must have no more than 32 labelsn."
        },
        "name": {
          "type": "string",
          "description": "The Node group resource name (https://aip.dev/122)."
        },
        "nodeGroupConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfig",
          "description": "Optional. The node group instance group configuration."
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:NodeGroupRolesItem"
          },
          "description": "Node group roles."
        }
      },
      "type": "object",
      "required": [
        "roles"
      ]
    },
    "google-native:dataproc/v1:NodeGroupAffinity": {
      "description": "Node Group Affinity for clusters using sole-tenant node groups. The Dataproc NodeGroupAffinity resource is not related to the Dataproc NodeGroup resource.",
      "properties": {
        "nodeGroupUri": {
          "type": "string",
          "description": "The URI of a sole-tenant node group resource (https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on.A full URL, partial URI, or node group name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]/nodeGroups/node-group-1 projects/[project_id]/zones/[zone]/nodeGroups/node-group-1 node-group-1"
        }
      },
      "type": "object",
      "required": [
        "nodeGroupUri"
      ]
    },
    "google-native:dataproc/v1:NodeGroupAffinityResponse": {
      "description": "Node Group Affinity for clusters using sole-tenant node groups. The Dataproc NodeGroupAffinity resource is not related to the Dataproc NodeGroup resource.",
      "properties": {
        "nodeGroupUri": {
          "type": "string",
          "description": "The URI of a sole-tenant node group resource (https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on.A full URL, partial URI, or node group name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]/nodeGroups/node-group-1 projects/[project_id]/zones/[zone]/nodeGroups/node-group-1 node-group-1"
        }
      },
      "type": "object",
      "required": [
        "nodeGroupUri"
      ]
    },
    "google-native:dataproc/v1:NodeGroupResponse": {
      "description": "Dataproc Node Group. The Dataproc NodeGroup resource is not related to the Dataproc NodeGroupAffinity resource.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Node group labels. Label keys must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty. If specified, they must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). The node group must have no more than 32 labelsn."
        },
        "name": {
          "type": "string",
          "description": "The Node group resource name (https://aip.dev/122)."
        },
        "nodeGroupConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfigResponse",
          "description": "Optional. The node group instance group configuration."
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Node group roles."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "name",
        "nodeGroupConfig",
        "roles"
      ]
    },
    "google-native:dataproc/v1:NodeGroupRolesItem": {
      "type": "string",
      "enum": [
        {
          "name": "RoleUnspecified",
          "description": "Required unspecified role.",
          "value": "ROLE_UNSPECIFIED"
        },
        {
          "name": "Driver",
          "description": "Job drivers run on the node pool.",
          "value": "DRIVER"
        }
      ]
    },
    "google-native:dataproc/v1:NodeInitializationAction": {
      "description": "Specifies an executable to run on a fully configured node and a timeout period for executable completion.",
      "properties": {
        "executableFile": {
          "type": "string",
          "description": "Cloud Storage URI of executable file."
        },
        "executionTimeout": {
          "type": "string",
          "description": "Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period."
        }
      },
      "type": "object",
      "required": [
        "executableFile"
      ]
    },
    "google-native:dataproc/v1:NodeInitializationActionResponse": {
      "description": "Specifies an executable to run on a fully configured node and a timeout period for executable completion.",
      "properties": {
        "executableFile": {
          "type": "string",
          "description": "Cloud Storage URI of executable file."
        },
        "executionTimeout": {
          "type": "string",
          "description": "Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period."
        }
      },
      "type": "object",
      "required": [
        "executableFile",
        "executionTimeout"
      ]
    },
    "google-native:dataproc/v1:OrderedJob": {
      "description": "A job executed by the workflow.",
      "properties": {
        "flinkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:FlinkJob",
          "description": "Optional. Job is a Flink job."
        },
        "hadoopJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:HadoopJob",
          "description": "Optional. Job is a Hadoop job."
        },
        "hiveJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:HiveJob",
          "description": "Optional. Job is a Hive job."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this job.Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1 and 63 characters long, and must conform to the following regular expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be associated with a given job."
        },
        "pigJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PigJob",
          "description": "Optional. Job is a Pig job."
        },
        "prerequisiteStepIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The optional list of prerequisite job step_ids. If not specified, the job will start at the beginning of workflow."
        },
        "prestoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PrestoJob",
          "description": "Optional. Job is a Presto job."
        },
        "pysparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PySparkJob",
          "description": "Optional. Job is a PySpark job."
        },
        "scheduling": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobScheduling",
          "description": "Optional. Job scheduling configuration."
        },
        "sparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkJob",
          "description": "Optional. Job is a Spark job."
        },
        "sparkRJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkRJob",
          "description": "Optional. Job is a SparkR job."
        },
        "sparkSqlJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkSqlJob",
          "description": "Optional. Job is a SparkSql job."
        },
        "stepId": {
          "type": "string",
          "description": "The step id. The id must be unique among all jobs within the template.The step id is used as prefix for job id, as job goog-dataproc-workflow-step-id label, and in prerequisiteStepIds field from other steps.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters."
        },
        "trinoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:TrinoJob",
          "description": "Optional. Job is a Trino job."
        }
      },
      "type": "object",
      "required": [
        "stepId"
      ]
    },
    "google-native:dataproc/v1:OrderedJobResponse": {
      "description": "A job executed by the workflow.",
      "properties": {
        "flinkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:FlinkJobResponse",
          "description": "Optional. Job is a Flink job."
        },
        "hadoopJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:HadoopJobResponse",
          "description": "Optional. Job is a Hadoop job."
        },
        "hiveJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:HiveJobResponse",
          "description": "Optional. Job is a Hive job."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this job.Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1 and 63 characters long, and must conform to the following regular expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be associated with a given job."
        },
        "pigJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PigJobResponse",
          "description": "Optional. Job is a Pig job."
        },
        "prerequisiteStepIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The optional list of prerequisite job step_ids. If not specified, the job will start at the beginning of workflow."
        },
        "prestoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PrestoJobResponse",
          "description": "Optional. Job is a Presto job."
        },
        "pysparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PySparkJobResponse",
          "description": "Optional. Job is a PySpark job."
        },
        "scheduling": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobSchedulingResponse",
          "description": "Optional. Job scheduling configuration."
        },
        "sparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkJobResponse",
          "description": "Optional. Job is a Spark job."
        },
        "sparkRJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkRJobResponse",
          "description": "Optional. Job is a SparkR job."
        },
        "sparkSqlJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkSqlJobResponse",
          "description": "Optional. Job is a SparkSql job."
        },
        "stepId": {
          "type": "string",
          "description": "The step id. The id must be unique among all jobs within the template.The step id is used as prefix for job id, as job goog-dataproc-workflow-step-id label, and in prerequisiteStepIds field from other steps.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters."
        },
        "trinoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:TrinoJobResponse",
          "description": "Optional. Job is a Trino job."
        }
      },
      "type": "object",
      "required": [
        "flinkJob",
        "hadoopJob",
        "hiveJob",
        "labels",
        "pigJob",
        "prerequisiteStepIds",
        "prestoJob",
        "pysparkJob",
        "scheduling",
        "sparkJob",
        "sparkRJob",
        "sparkSqlJob",
        "stepId",
        "trinoJob"
      ]
    },
    "google-native:dataproc/v1:ParameterValidation": {
      "description": "Configuration for parameter validation.",
      "properties": {
        "regex": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RegexValidation",
          "description": "Validation based on regular expressions."
        },
        "values": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ValueValidation",
          "description": "Validation based on a list of allowed values."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:ParameterValidationResponse": {
      "description": "Configuration for parameter validation.",
      "properties": {
        "regex": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RegexValidationResponse",
          "description": "Validation based on regular expressions."
        },
        "values": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ValueValidationResponse",
          "description": "Validation based on a list of allowed values."
        }
      },
      "type": "object",
      "required": [
        "regex",
        "values"
      ]
    },
    "google-native:dataproc/v1:PeripheralsConfig": {
      "description": "Auxiliary services configuration for a workload.",
      "properties": {
        "metastoreService": {
          "type": "string",
          "description": "Optional. Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[region]/services/[service_id]"
        },
        "sparkHistoryServerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkHistoryServerConfig",
          "description": "Optional. The Spark History Server configuration for the workload."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:PeripheralsConfigResponse": {
      "description": "Auxiliary services configuration for a workload.",
      "properties": {
        "metastoreService": {
          "type": "string",
          "description": "Optional. Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[region]/services/[service_id]"
        },
        "sparkHistoryServerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkHistoryServerConfigResponse",
          "description": "Optional. The Spark History Server configuration for the workload."
        }
      },
      "type": "object",
      "required": [
        "metastoreService",
        "sparkHistoryServerConfig"
      ]
    },
    "google-native:dataproc/v1:PigJob": {
      "description": "A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.",
      "properties": {
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains the Pig queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryList",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value])."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:PigJobResponse": {
      "description": "A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.",
      "properties": {
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains the Pig queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryListResponse",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value])."
        }
      },
      "type": "object",
      "required": [
        "continueOnFailure",
        "jarFileUris",
        "loggingConfig",
        "properties",
        "queryFileUri",
        "queryList",
        "scriptVariables"
      ]
    },
    "google-native:dataproc/v1:PrestoJob": {
      "description": "A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster.",
      "properties": {
        "clientTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Presto client tags to attach to this query"
        },
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "outputFormat": {
          "type": "string",
          "description": "Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI"
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryList",
          "description": "A list of queries."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:PrestoJobResponse": {
      "description": "A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster.",
      "properties": {
        "clientTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Presto client tags to attach to this query"
        },
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "outputFormat": {
          "type": "string",
          "description": "Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI"
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryListResponse",
          "description": "A list of queries."
        }
      },
      "type": "object",
      "required": [
        "clientTags",
        "continueOnFailure",
        "loggingConfig",
        "outputFormat",
        "properties",
        "queryFileUri",
        "queryList"
      ]
    },
    "google-native:dataproc/v1:PyPiRepositoryConfig": {
      "description": "Configuration for PyPi repository",
      "properties": {
        "pypiRepository": {
          "type": "string",
          "description": "Optional. PyPi repository address"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:PyPiRepositoryConfigResponse": {
      "description": "Configuration for PyPi repository",
      "properties": {
        "pypiRepository": {
          "type": "string",
          "description": "Optional. PyPi repository address"
        }
      },
      "type": "object",
      "required": [
        "pypiRepository"
      ]
    },
    "google-native:dataproc/v1:PySparkBatch": {
      "description": "A configuration for running an Apache PySpark (https://spark.apache.org/docs/latest/api/python/getting_started/quickstart.html) batch workload.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments that can be set as batch properties, such as --conf, since a collision can occur that causes an incorrect batch submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the classpath of the Spark driver and tasks."
        },
        "mainPythonFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main Python file to use as the Spark driver. Must be a .py file."
        },
        "pythonFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip."
        }
      },
      "type": "object",
      "required": [
        "mainPythonFileUri"
      ]
    },
    "google-native:dataproc/v1:PySparkBatchResponse": {
      "description": "A configuration for running an Apache PySpark (https://spark.apache.org/docs/latest/api/python/getting_started/quickstart.html) batch workload.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments that can be set as batch properties, such as --conf, since a collision can occur that causes an incorrect batch submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the classpath of the Spark driver and tasks."
        },
        "mainPythonFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main Python file to use as the Spark driver. Must be a .py file."
        },
        "pythonFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "jarFileUris",
        "mainPythonFileUri",
        "pythonFileUris"
      ]
    },
    "google-native:dataproc/v1:PySparkJob": {
      "description": "A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainPythonFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main Python file to use as the driver. Must be a .py file."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        },
        "pythonFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip."
        }
      },
      "type": "object",
      "required": [
        "mainPythonFileUri"
      ]
    },
    "google-native:dataproc/v1:PySparkJobResponse": {
      "description": "A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainPythonFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main Python file to use as the driver. Must be a .py file."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        },
        "pythonFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "jarFileUris",
        "loggingConfig",
        "mainPythonFileUri",
        "properties",
        "pythonFileUris"
      ]
    },
    "google-native:dataproc/v1:QueryList": {
      "description": "A list of queries to run on a cluster.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } } "
        }
      },
      "type": "object",
      "required": [
        "queries"
      ]
    },
    "google-native:dataproc/v1:QueryListResponse": {
      "description": "A list of queries to run on a cluster.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } } "
        }
      },
      "type": "object",
      "required": [
        "queries"
      ]
    },
    "google-native:dataproc/v1:RegexValidation": {
      "description": "Validation based on regular expressions.",
      "properties": {
        "regexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "RE2 regular expressions used to validate the parameter's value. The value must match the regex in its entirety (substring matches are not sufficient)."
        }
      },
      "type": "object",
      "required": [
        "regexes"
      ]
    },
    "google-native:dataproc/v1:RegexValidationResponse": {
      "description": "Validation based on regular expressions.",
      "properties": {
        "regexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "RE2 regular expressions used to validate the parameter's value. The value must match the regex in its entirety (substring matches are not sufficient)."
        }
      },
      "type": "object",
      "required": [
        "regexes"
      ]
    },
    "google-native:dataproc/v1:RepositoryConfig": {
      "description": "Configuration for dependency repositories",
      "properties": {
        "pypiRepositoryConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PyPiRepositoryConfig",
          "description": "Optional. Configuration for PyPi repository."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:RepositoryConfigResponse": {
      "description": "Configuration for dependency repositories",
      "properties": {
        "pypiRepositoryConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PyPiRepositoryConfigResponse",
          "description": "Optional. Configuration for PyPi repository."
        }
      },
      "type": "object",
      "required": [
        "pypiRepositoryConfig"
      ]
    },
    "google-native:dataproc/v1:ReservationAffinity": {
      "description": "Reservation Affinity for consuming Zonal reservation.",
      "properties": {
        "consumeReservationType": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ReservationAffinityConsumeReservationType",
          "description": "Optional. Type of reservation to consume"
        },
        "key": {
          "type": "string",
          "description": "Optional. Corresponds to the label key of reservation resource."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Corresponds to the label values of reservation resource."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:ReservationAffinityConsumeReservationType": {
      "description": "Optional. Type of reservation to consume",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "NoReservation",
          "description": "Do not consume from any allocated capacity.",
          "value": "NO_RESERVATION"
        },
        {
          "name": "AnyReservation",
          "description": "Consume any reservation available.",
          "value": "ANY_RESERVATION"
        },
        {
          "name": "SpecificReservation",
          "description": "Must consume from a specific reservation. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_RESERVATION"
        }
      ]
    },
    "google-native:dataproc/v1:ReservationAffinityResponse": {
      "description": "Reservation Affinity for consuming Zonal reservation.",
      "properties": {
        "consumeReservationType": {
          "type": "string",
          "description": "Optional. Type of reservation to consume"
        },
        "key": {
          "type": "string",
          "description": "Optional. Corresponds to the label key of reservation resource."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Corresponds to the label values of reservation resource."
        }
      },
      "type": "object",
      "required": [
        "consumeReservationType",
        "key",
        "values"
      ]
    },
    "google-native:dataproc/v1:RuntimeConfig": {
      "description": "Runtime configuration for a workload.",
      "properties": {
        "containerImage": {
          "type": "string",
          "description": "Optional. Optional custom container image for the job runtime environment. If not specified, a default container image will be used."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, which are used to configure workload execution."
        },
        "repositoryConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RepositoryConfig",
          "description": "Optional. Dependency repository configuration."
        },
        "version": {
          "type": "string",
          "description": "Optional. Version of the batch runtime."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:RuntimeConfigResponse": {
      "description": "Runtime configuration for a workload.",
      "properties": {
        "containerImage": {
          "type": "string",
          "description": "Optional. Optional custom container image for the job runtime environment. If not specified, a default container image will be used."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, which are used to configure workload execution."
        },
        "repositoryConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RepositoryConfigResponse",
          "description": "Optional. Dependency repository configuration."
        },
        "version": {
          "type": "string",
          "description": "Optional. Version of the batch runtime."
        }
      },
      "type": "object",
      "required": [
        "containerImage",
        "properties",
        "repositoryConfig",
        "version"
      ]
    },
    "google-native:dataproc/v1:RuntimeInfoResponse": {
      "description": "Runtime information about workload execution.",
      "properties": {
        "approximateUsage": {
          "$ref": "#/types/google-native:dataproc%2Fv1:UsageMetricsResponse",
          "description": "Approximate workload resource usage, calculated when the workload completes (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing)).Note: This metric calculation may change in the future, for example, to capture cumulative workload resource consumption during workload execution (see the Dataproc Serverless release notes (https://cloud.google.com/dataproc-serverless/docs/release-notes) for announcements, changes, fixes and other Dataproc developments)."
        },
        "currentUsage": {
          "$ref": "#/types/google-native:dataproc%2Fv1:UsageSnapshotResponse",
          "description": "Snapshot of current workload resource usage."
        },
        "diagnosticOutputUri": {
          "type": "string",
          "description": "A URI pointing to the location of the diagnostics tarball."
        },
        "endpoints": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of remote access endpoints (such as web interfaces and APIs) to their URIs."
        },
        "outputUri": {
          "type": "string",
          "description": "A URI pointing to the location of the stdout and stderr of the workload."
        }
      },
      "type": "object",
      "required": [
        "approximateUsage",
        "currentUsage",
        "diagnosticOutputUri",
        "endpoints",
        "outputUri"
      ]
    },
    "google-native:dataproc/v1:SecurityConfig": {
      "description": "Security related configuration, including encryption, Kerberos, etc.",
      "properties": {
        "identityConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:IdentityConfig",
          "description": "Optional. Identity related configuration, including service account based secure multi-tenancy user mappings."
        },
        "kerberosConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:KerberosConfig",
          "description": "Optional. Kerberos related configuration."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:SecurityConfigResponse": {
      "description": "Security related configuration, including encryption, Kerberos, etc.",
      "properties": {
        "identityConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:IdentityConfigResponse",
          "description": "Optional. Identity related configuration, including service account based secure multi-tenancy user mappings."
        },
        "kerberosConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:KerberosConfigResponse",
          "description": "Optional. Kerberos related configuration."
        }
      },
      "type": "object",
      "required": [
        "identityConfig",
        "kerberosConfig"
      ]
    },
    "google-native:dataproc/v1:SessionStateHistoryResponse": {
      "description": "Historical state information.",
      "properties": {
        "state": {
          "type": "string",
          "description": "The state of the session at this point in the session history."
        },
        "stateMessage": {
          "type": "string",
          "description": "Details about the state at this point in the session history."
        },
        "stateStartTime": {
          "type": "string",
          "description": "The time when the session entered the historical state."
        }
      },
      "type": "object",
      "required": [
        "state",
        "stateMessage",
        "stateStartTime"
      ]
    },
    "google-native:dataproc/v1:ShieldedInstanceConfig": {
      "description": "Shielded Instance Config for clusters using Compute Engine Shielded VMs (https://cloud.google.com/security/shielded-cloud/shielded-vm).",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have the vTPM enabled."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:ShieldedInstanceConfigResponse": {
      "description": "Shielded Instance Config for clusters using Compute Engine Shielded VMs (https://cloud.google.com/security/shielded-cloud/shielded-vm).",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have the vTPM enabled."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:dataproc/v1:SoftwareConfig": {
      "description": "Specifies the selection and config of software inside the cluster.",
      "properties": {
        "imageVersion": {
          "type": "string",
          "description": "Optional. The version of software inside the cluster. It must be one of the supported Dataproc Versions (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as \"1.2\" (including a subminor version, such as \"1.2.29\"), or the \"preview\" version (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version."
        },
        "optionalComponents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:SoftwareConfigOptionalComponentsItem"
          },
          "description": "Optional. The set of components to activate on the cluster."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. The following are supported prefixes and their mappings: capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:SoftwareConfigOptionalComponentsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ComponentUnspecified",
          "description": "Unspecified component. Specifying this will cause Cluster creation to fail.",
          "value": "COMPONENT_UNSPECIFIED"
        },
        {
          "name": "Anaconda",
          "description": "The Anaconda python distribution. The Anaconda component is not supported in the Dataproc 2.0 image. The 2.0 image is pre-installed with Miniconda.",
          "value": "ANACONDA"
        },
        {
          "name": "Docker",
          "description": "Docker",
          "value": "DOCKER"
        },
        {
          "name": "Druid",
          "description": "The Druid query engine. (alpha)",
          "value": "DRUID"
        },
        {
          "name": "Flink",
          "description": "Flink",
          "value": "FLINK"
        },
        {
          "name": "Hbase",
          "description": "HBase. (beta)",
          "value": "HBASE"
        },
        {
          "name": "HiveWebhcat",
          "description": "The Hive Web HCatalog (the REST service for accessing HCatalog).",
          "value": "HIVE_WEBHCAT"
        },
        {
          "name": "Hudi",
          "description": "Hudi.",
          "value": "HUDI"
        },
        {
          "name": "Jupyter",
          "description": "The Jupyter Notebook.",
          "value": "JUPYTER"
        },
        {
          "name": "Presto",
          "description": "The Presto query engine.",
          "value": "PRESTO"
        },
        {
          "name": "Trino",
          "description": "The Trino query engine.",
          "value": "TRINO"
        },
        {
          "name": "Ranger",
          "description": "The Ranger service.",
          "value": "RANGER"
        },
        {
          "name": "Solr",
          "description": "The Solr service.",
          "value": "SOLR"
        },
        {
          "name": "Zeppelin",
          "description": "The Zeppelin notebook.",
          "value": "ZEPPELIN"
        },
        {
          "name": "Zookeeper",
          "description": "The Zookeeper service.",
          "value": "ZOOKEEPER"
        }
      ]
    },
    "google-native:dataproc/v1:SoftwareConfigResponse": {
      "description": "Specifies the selection and config of software inside the cluster.",
      "properties": {
        "imageVersion": {
          "type": "string",
          "description": "Optional. The version of software inside the cluster. It must be one of the supported Dataproc Versions (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as \"1.2\" (including a subminor version, such as \"1.2.29\"), or the \"preview\" version (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version."
        },
        "optionalComponents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The set of components to activate on the cluster."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. The following are supported prefixes and their mappings: capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties)."
        }
      },
      "type": "object",
      "required": [
        "imageVersion",
        "optionalComponents",
        "properties"
      ]
    },
    "google-native:dataproc/v1:SparkBatch": {
      "description": "A configuration for running an Apache Spark (https://spark.apache.org/) batch workload.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments that can be set as batch properties, such as --conf, since a collision can occur that causes an incorrect batch submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the classpath of the Spark driver and tasks."
        },
        "mainClass": {
          "type": "string",
          "description": "Optional. The name of the driver main class. The jar file that contains the class must be in the classpath or specified in jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "Optional. The HCFS URI of the jar file that contains the main class."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:SparkBatchResponse": {
      "description": "A configuration for running an Apache Spark (https://spark.apache.org/) batch workload.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments that can be set as batch properties, such as --conf, since a collision can occur that causes an incorrect batch submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the classpath of the Spark driver and tasks."
        },
        "mainClass": {
          "type": "string",
          "description": "Optional. The name of the driver main class. The jar file that contains the class must be in the classpath or specified in jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "Optional. The HCFS URI of the jar file that contains the main class."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "jarFileUris",
        "mainClass",
        "mainJarFileUri"
      ]
    },
    "google-native:dataproc/v1:SparkHistoryServerConfig": {
      "description": "Spark History Server configuration for the workload.",
      "properties": {
        "dataprocCluster": {
          "type": "string",
          "description": "Optional. Resource name of an existing Dataproc Cluster to act as a Spark History Server for the workload.Example: projects/[project_id]/regions/[region]/clusters/[cluster_name]"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:SparkHistoryServerConfigResponse": {
      "description": "Spark History Server configuration for the workload.",
      "properties": {
        "dataprocCluster": {
          "type": "string",
          "description": "Optional. Resource name of an existing Dataproc Cluster to act as a Spark History Server for the workload.Example: projects/[project_id]/regions/[region]/clusters/[cluster_name]"
        }
      },
      "type": "object",
      "required": [
        "dataprocCluster"
      ]
    },
    "google-native:dataproc/v1:SparkJob": {
      "description": "A Dataproc job for running Apache Spark (https://spark.apache.org/) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in SparkJob.jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file that contains the main class."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:SparkJobResponse": {
      "description": "A Dataproc job for running Apache Spark (https://spark.apache.org/) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in SparkJob.jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file that contains the main class."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "jarFileUris",
        "loggingConfig",
        "mainClass",
        "mainJarFileUri",
        "properties"
      ]
    },
    "google-native:dataproc/v1:SparkRBatch": {
      "description": "A configuration for running an Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) batch workload.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the Spark driver. Do not include arguments that can be set as batch properties, such as --conf, since a collision can occur that causes an incorrect batch submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor."
        },
        "mainRFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main R file to use as the driver. Must be a .R or .r file."
        }
      },
      "type": "object",
      "required": [
        "mainRFileUri"
      ]
    },
    "google-native:dataproc/v1:SparkRBatchResponse": {
      "description": "A configuration for running an Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) batch workload.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the Spark driver. Do not include arguments that can be set as batch properties, such as --conf, since a collision can occur that causes an incorrect batch submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor."
        },
        "mainRFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main R file to use as the driver. Must be a .R or .r file."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "mainRFileUri"
      ]
    },
    "google-native:dataproc/v1:SparkRJob": {
      "description": "A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainRFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main R file to use as the driver. Must be a .R file."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        }
      },
      "type": "object",
      "required": [
        "mainRFileUri"
      ]
    },
    "google-native:dataproc/v1:SparkRJobResponse": {
      "description": "A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainRFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main R file to use as the driver. Must be a .R file."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API might be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "loggingConfig",
        "mainRFileUri",
        "properties"
      ]
    },
    "google-native:dataproc/v1:SparkSqlBatch": {
      "description": "A configuration for running Apache Spark SQL (https://spark.apache.org/sql/) queries as a batch workload.",
      "properties": {
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains Spark SQL queries to execute."
        },
        "queryVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";)."
        }
      },
      "type": "object",
      "required": [
        "queryFileUri"
      ]
    },
    "google-native:dataproc/v1:SparkSqlBatchResponse": {
      "description": "A configuration for running Apache Spark SQL (https://spark.apache.org/sql/) queries as a batch workload.",
      "properties": {
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains Spark SQL queries to execute."
        },
        "queryVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";)."
        }
      },
      "type": "object",
      "required": [
        "jarFileUris",
        "queryFileUri",
        "queryVariables"
      ]
    },
    "google-native:dataproc/v1:SparkSqlJob": {
      "description": "A Dataproc job for running Apache Spark SQL (https://spark.apache.org/sql/) queries.",
      "properties": {
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Dataproc API might be overwritten."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryList",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:SparkSqlJobResponse": {
      "description": "A Dataproc job for running Apache Spark SQL (https://spark.apache.org/sql/) queries.",
      "properties": {
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Dataproc API might be overwritten."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryListResponse",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";)."
        }
      },
      "type": "object",
      "required": [
        "jarFileUris",
        "loggingConfig",
        "properties",
        "queryFileUri",
        "queryList",
        "scriptVariables"
      ]
    },
    "google-native:dataproc/v1:SparkStandaloneAutoscalingConfig": {
      "description": "Basic autoscaling configurations for Spark Standalone.",
      "properties": {
        "gracefulDecommissionTimeout": {
          "type": "string",
          "description": "Timeout for Spark graceful decommissioning of spark workers. Specifies the duration to wait for spark worker to complete spark decommissioning tasks before forcefully removing workers. Only applicable to downscaling operations.Bounds: 0s, 1d."
        },
        "removeOnlyIdleWorkers": {
          "type": "boolean",
          "description": "Optional. Remove only idle workers when scaling down cluster"
        },
        "scaleDownFactor": {
          "type": "number",
          "description": "Fraction of required executors to remove from Spark Serverless clusters. A scale-down factor of 1.0 will result in scaling down so that there are no more executors for the Spark Job.(more aggressive scaling). A scale-down factor closer to 0 will result in a smaller magnitude of scaling donw (less aggressive scaling).Bounds: 0.0, 1.0."
        },
        "scaleDownMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-down threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2 worker scale-down for the cluster to scale. A threshold of 0 means the autoscaler will scale down on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        },
        "scaleUpFactor": {
          "type": "number",
          "description": "Fraction of required workers to add to Spark Standalone clusters. A scale-up factor of 1.0 will result in scaling up so that there are no more required workers for the Spark Job (more aggressive scaling). A scale-up factor closer to 0 will result in a smaller magnitude of scaling up (less aggressive scaling).Bounds: 0.0, 1.0."
        },
        "scaleUpMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-up threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2-worker scale-up for the cluster to scale. A threshold of 0 means the autoscaler will scale up on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        }
      },
      "type": "object",
      "required": [
        "gracefulDecommissionTimeout",
        "scaleDownFactor",
        "scaleUpFactor"
      ]
    },
    "google-native:dataproc/v1:SparkStandaloneAutoscalingConfigResponse": {
      "description": "Basic autoscaling configurations for Spark Standalone.",
      "properties": {
        "gracefulDecommissionTimeout": {
          "type": "string",
          "description": "Timeout for Spark graceful decommissioning of spark workers. Specifies the duration to wait for spark worker to complete spark decommissioning tasks before forcefully removing workers. Only applicable to downscaling operations.Bounds: 0s, 1d."
        },
        "removeOnlyIdleWorkers": {
          "type": "boolean",
          "description": "Optional. Remove only idle workers when scaling down cluster"
        },
        "scaleDownFactor": {
          "type": "number",
          "description": "Fraction of required executors to remove from Spark Serverless clusters. A scale-down factor of 1.0 will result in scaling down so that there are no more executors for the Spark Job.(more aggressive scaling). A scale-down factor closer to 0 will result in a smaller magnitude of scaling donw (less aggressive scaling).Bounds: 0.0, 1.0."
        },
        "scaleDownMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-down threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2 worker scale-down for the cluster to scale. A threshold of 0 means the autoscaler will scale down on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        },
        "scaleUpFactor": {
          "type": "number",
          "description": "Fraction of required workers to add to Spark Standalone clusters. A scale-up factor of 1.0 will result in scaling up so that there are no more required workers for the Spark Job (more aggressive scaling). A scale-up factor closer to 0 will result in a smaller magnitude of scaling up (less aggressive scaling).Bounds: 0.0, 1.0."
        },
        "scaleUpMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-up threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2-worker scale-up for the cluster to scale. A threshold of 0 means the autoscaler will scale up on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        }
      },
      "type": "object",
      "required": [
        "gracefulDecommissionTimeout",
        "removeOnlyIdleWorkers",
        "scaleDownFactor",
        "scaleDownMinWorkerFraction",
        "scaleUpFactor",
        "scaleUpMinWorkerFraction"
      ]
    },
    "google-native:dataproc/v1:StartupConfig": {
      "description": "Configuration to handle the startup of instances during cluster create and update process.",
      "properties": {
        "requiredRegistrationFraction": {
          "type": "number",
          "description": "Optional. The config setting to enable cluster creation/ updation to be successful only after required_registration_fraction of instances are up and running. This configuration is applicable to only secondary workers for now. The cluster will fail if required_registration_fraction of instances are not available. This will include instance creation, agent registration, and service registration (if enabled)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:StartupConfigResponse": {
      "description": "Configuration to handle the startup of instances during cluster create and update process.",
      "properties": {
        "requiredRegistrationFraction": {
          "type": "number",
          "description": "Optional. The config setting to enable cluster creation/ updation to be successful only after required_registration_fraction of instances are up and running. This configuration is applicable to only secondary workers for now. The cluster will fail if required_registration_fraction of instances are not available. This will include instance creation, agent registration, and service registration (if enabled)."
        }
      },
      "type": "object",
      "required": [
        "requiredRegistrationFraction"
      ]
    },
    "google-native:dataproc/v1:StateHistoryResponse": {
      "description": "Historical state information.",
      "properties": {
        "state": {
          "type": "string",
          "description": "The state of the batch at this point in history."
        },
        "stateMessage": {
          "type": "string",
          "description": "Details about the state at this point in history."
        },
        "stateStartTime": {
          "type": "string",
          "description": "The time when the batch entered the historical state."
        }
      },
      "type": "object",
      "required": [
        "state",
        "stateMessage",
        "stateStartTime"
      ]
    },
    "google-native:dataproc/v1:TemplateParameter": {
      "description": "A configurable parameter that replaces one or more fields in the template. Parameterizable fields: - Labels - File uris - Job properties - Job arguments - Script variables - Main class (in HadoopJob and SparkJob) - Zone (in ClusterSelector)",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Brief description of the parameter. Must not exceed 1024 characters."
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Paths to all fields that the parameter replaces. A field is allowed to appear in at most one parameter's list of field paths.A field path is similar in syntax to a google.protobuf.FieldMask. For example, a field path that references the zone field of a workflow template's cluster selector would be specified as placement.clusterSelector.zone.Also, field paths can reference fields using the following syntax: Values in maps can be referenced by key: labels'key' placement.clusterSelector.clusterLabels'key' placement.managedCluster.labels'key' placement.clusterSelector.clusterLabels'key' jobs'step-id'.labels'key' Jobs in the jobs list can be referenced by step-id: jobs'step-id'.hadoopJob.mainJarFileUri jobs'step-id'.hiveJob.queryFileUri jobs'step-id'.pySparkJob.mainPythonFileUri jobs'step-id'.hadoopJob.jarFileUris0 jobs'step-id'.hadoopJob.archiveUris0 jobs'step-id'.hadoopJob.fileUris0 jobs'step-id'.pySparkJob.pythonFileUris0 Items in repeated fields can be referenced by a zero-based index: jobs'step-id'.sparkJob.args0 Other examples: jobs'step-id'.hadoopJob.properties'key' jobs'step-id'.hadoopJob.args0 jobs'step-id'.hiveJob.scriptVariables'key' jobs'step-id'.hadoopJob.mainJarFileUri placement.clusterSelector.zoneIt may not be possible to parameterize maps and repeated fields in their entirety since only individual map values and individual items in repeated fields can be referenced. For example, the following field paths are invalid: placement.clusterSelector.clusterLabels jobs'step-id'.sparkJob.args"
        },
        "name": {
          "type": "string",
          "description": "Parameter name. The parameter name is used as the key, and paired with the parameter value, which are passed to the template when the template is instantiated. The name must contain only capital letters (A-Z), numbers (0-9), and underscores (_), and must not start with a number. The maximum length is 40 characters."
        },
        "validation": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ParameterValidation",
          "description": "Optional. Validation rules to be applied to this parameter's value."
        }
      },
      "type": "object",
      "required": [
        "fields",
        "name"
      ]
    },
    "google-native:dataproc/v1:TemplateParameterResponse": {
      "description": "A configurable parameter that replaces one or more fields in the template. Parameterizable fields: - Labels - File uris - Job properties - Job arguments - Script variables - Main class (in HadoopJob and SparkJob) - Zone (in ClusterSelector)",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Brief description of the parameter. Must not exceed 1024 characters."
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Paths to all fields that the parameter replaces. A field is allowed to appear in at most one parameter's list of field paths.A field path is similar in syntax to a google.protobuf.FieldMask. For example, a field path that references the zone field of a workflow template's cluster selector would be specified as placement.clusterSelector.zone.Also, field paths can reference fields using the following syntax: Values in maps can be referenced by key: labels'key' placement.clusterSelector.clusterLabels'key' placement.managedCluster.labels'key' placement.clusterSelector.clusterLabels'key' jobs'step-id'.labels'key' Jobs in the jobs list can be referenced by step-id: jobs'step-id'.hadoopJob.mainJarFileUri jobs'step-id'.hiveJob.queryFileUri jobs'step-id'.pySparkJob.mainPythonFileUri jobs'step-id'.hadoopJob.jarFileUris0 jobs'step-id'.hadoopJob.archiveUris0 jobs'step-id'.hadoopJob.fileUris0 jobs'step-id'.pySparkJob.pythonFileUris0 Items in repeated fields can be referenced by a zero-based index: jobs'step-id'.sparkJob.args0 Other examples: jobs'step-id'.hadoopJob.properties'key' jobs'step-id'.hadoopJob.args0 jobs'step-id'.hiveJob.scriptVariables'key' jobs'step-id'.hadoopJob.mainJarFileUri placement.clusterSelector.zoneIt may not be possible to parameterize maps and repeated fields in their entirety since only individual map values and individual items in repeated fields can be referenced. For example, the following field paths are invalid: placement.clusterSelector.clusterLabels jobs'step-id'.sparkJob.args"
        },
        "name": {
          "type": "string",
          "description": "Parameter name. The parameter name is used as the key, and paired with the parameter value, which are passed to the template when the template is instantiated. The name must contain only capital letters (A-Z), numbers (0-9), and underscores (_), and must not start with a number. The maximum length is 40 characters."
        },
        "validation": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ParameterValidationResponse",
          "description": "Optional. Validation rules to be applied to this parameter's value."
        }
      },
      "type": "object",
      "required": [
        "description",
        "fields",
        "name",
        "validation"
      ]
    },
    "google-native:dataproc/v1:TrinoJob": {
      "description": "A Dataproc job for running Trino (https://trino.io/) queries. IMPORTANT: The Dataproc Trino Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/trino) must be enabled when the cluster is created to submit a Trino job to the cluster.",
      "properties": {
        "clientTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Trino client tags to attach to this query"
        },
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "outputFormat": {
          "type": "string",
          "description": "Optional. The format in which query output will be displayed. See the Trino documentation for supported output formats"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values. Used to set Trino session properties (https://trino.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Trino CLI"
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryList",
          "description": "A list of queries."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:TrinoJobResponse": {
      "description": "A Dataproc job for running Trino (https://trino.io/) queries. IMPORTANT: The Dataproc Trino Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/trino) must be enabled when the cluster is created to submit a Trino job to the cluster.",
      "properties": {
        "clientTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Trino client tags to attach to this query"
        },
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "outputFormat": {
          "type": "string",
          "description": "Optional. The format in which query output will be displayed. See the Trino documentation for supported output formats"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values. Used to set Trino session properties (https://trino.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Trino CLI"
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1:QueryListResponse",
          "description": "A list of queries."
        }
      },
      "type": "object",
      "required": [
        "clientTags",
        "continueOnFailure",
        "loggingConfig",
        "outputFormat",
        "properties",
        "queryFileUri",
        "queryList"
      ]
    },
    "google-native:dataproc/v1:UsageMetricsResponse": {
      "description": "Usage metrics represent approximate total resources consumed by a workload.",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "Optional. Accelerator type being used, if any"
        },
        "milliAcceleratorSeconds": {
          "type": "string",
          "description": "Optional. Accelerator usage in (milliAccelerator x seconds) (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing))."
        },
        "milliDcuSeconds": {
          "type": "string",
          "description": "Optional. DCU (Dataproc Compute Units) usage in (milliDCU x seconds) (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing))."
        },
        "shuffleStorageGbSeconds": {
          "type": "string",
          "description": "Optional. Shuffle storage usage in (GB x seconds) (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing))."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "milliAcceleratorSeconds",
        "milliDcuSeconds",
        "shuffleStorageGbSeconds"
      ]
    },
    "google-native:dataproc/v1:UsageSnapshotResponse": {
      "description": "The usage snapshot represents the resources consumed by a workload at a specified time.",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "Optional. Accelerator type being used, if any"
        },
        "milliAccelerator": {
          "type": "string",
          "description": "Optional. Milli (one-thousandth) accelerator. (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing))"
        },
        "milliDcu": {
          "type": "string",
          "description": "Optional. Milli (one-thousandth) Dataproc Compute Units (DCUs) (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing))."
        },
        "milliDcuPremium": {
          "type": "string",
          "description": "Optional. Milli (one-thousandth) Dataproc Compute Units (DCUs) charged at premium tier (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing))."
        },
        "shuffleStorageGb": {
          "type": "string",
          "description": "Optional. Shuffle Storage in gigabytes (GB). (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing))"
        },
        "shuffleStorageGbPremium": {
          "type": "string",
          "description": "Optional. Shuffle Storage in gigabytes (GB) charged at premium tier. (see Dataproc Serverless pricing (https://cloud.google.com/dataproc-serverless/pricing))"
        },
        "snapshotTime": {
          "type": "string",
          "description": "Optional. The timestamp of the usage snapshot."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "milliAccelerator",
        "milliDcu",
        "milliDcuPremium",
        "shuffleStorageGb",
        "shuffleStorageGbPremium",
        "snapshotTime"
      ]
    },
    "google-native:dataproc/v1:ValueValidation": {
      "description": "Validation based on a list of allowed values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of allowed values for the parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:dataproc/v1:ValueValidationResponse": {
      "description": "Validation based on a list of allowed values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of allowed values for the parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:dataproc/v1:VirtualClusterConfig": {
      "description": "The Dataproc cluster config for a cluster that does not directly control the underlying compute resources, such as a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/guides/dpgke/dataproc-gke-overview).",
      "properties": {
        "auxiliaryServicesConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:AuxiliaryServicesConfig",
          "description": "Optional. Configuration of auxiliary services used by this cluster."
        },
        "kubernetesClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:KubernetesClusterConfig",
          "description": "The configuration for running the Dataproc cluster on Kubernetes."
        },
        "stagingBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging and temp buckets (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket."
        }
      },
      "type": "object",
      "required": [
        "kubernetesClusterConfig"
      ]
    },
    "google-native:dataproc/v1:VirtualClusterConfigResponse": {
      "description": "The Dataproc cluster config for a cluster that does not directly control the underlying compute resources, such as a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/guides/dpgke/dataproc-gke-overview).",
      "properties": {
        "auxiliaryServicesConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:AuxiliaryServicesConfigResponse",
          "description": "Optional. Configuration of auxiliary services used by this cluster."
        },
        "kubernetesClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:KubernetesClusterConfigResponse",
          "description": "The configuration for running the Dataproc cluster on Kubernetes."
        },
        "stagingBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging and temp buckets (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a gs://... URI to a Cloud Storage bucket."
        }
      },
      "type": "object",
      "required": [
        "auxiliaryServicesConfig",
        "kubernetesClusterConfig",
        "stagingBucket"
      ]
    },
    "google-native:dataproc/v1:WorkflowTemplatePlacement": {
      "description": "Specifies workflow execution target.Either managed_cluster or cluster_selector is required.",
      "properties": {
        "clusterSelector": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ClusterSelector",
          "description": "Optional. A selector that chooses target cluster for jobs based on metadata.The selector is evaluated at the time each job is submitted."
        },
        "managedCluster": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ManagedCluster",
          "description": "A cluster that is managed by the workflow."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1:WorkflowTemplatePlacementResponse": {
      "description": "Specifies workflow execution target.Either managed_cluster or cluster_selector is required.",
      "properties": {
        "clusterSelector": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ClusterSelectorResponse",
          "description": "Optional. A selector that chooses target cluster for jobs based on metadata.The selector is evaluated at the time each job is submitted."
        },
        "managedCluster": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ManagedClusterResponse",
          "description": "A cluster that is managed by the workflow."
        }
      },
      "type": "object",
      "required": [
        "clusterSelector",
        "managedCluster"
      ]
    },
    "google-native:dataproc/v1:YarnApplicationResponse": {
      "description": "A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The application name."
        },
        "progress": {
          "type": "number",
          "description": "The numerical progress of the application, from 1 to 100."
        },
        "state": {
          "type": "string",
          "description": "The application state."
        },
        "trackingUrl": {
          "type": "string",
          "description": "Optional. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access."
        }
      },
      "type": "object",
      "required": [
        "name",
        "progress",
        "state",
        "trackingUrl"
      ]
    },
    "google-native:dataproc/v1beta2:AcceleratorConfig": {
      "description": "Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/)).",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the accelerator cards of this type exposed to this instance."
        },
        "acceleratorTypeUri": {
          "type": "string",
          "description": "Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes)Examples * https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:AcceleratorConfigResponse": {
      "description": "Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine (https://cloud.google.com/compute/docs/gpus/)).",
      "properties": {
        "acceleratorCount": {
          "type": "integer",
          "description": "The number of the accelerator cards of this type exposed to this instance."
        },
        "acceleratorTypeUri": {
          "type": "string",
          "description": "Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Compute Engine AcceleratorTypes (https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes)Examples * https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * nvidia-tesla-k80Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, nvidia-tesla-k80."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorTypeUri"
      ]
    },
    "google-native:dataproc/v1beta2:AutoscalingConfig": {
      "description": "Autoscaling Policy config associated with the cluster.",
      "properties": {
        "policyUri": {
          "type": "string",
          "description": "Optional. The autoscaling policy used by the cluster.Only resource names including projectid and location (region) are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id] projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]Note that the policy must be in the same project and Dataproc region."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:AutoscalingConfigResponse": {
      "description": "Autoscaling Policy config associated with the cluster.",
      "properties": {
        "policyUri": {
          "type": "string",
          "description": "Optional. The autoscaling policy used by the cluster.Only resource names including projectid and location (region) are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id] projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]Note that the policy must be in the same project and Dataproc region."
        }
      },
      "type": "object",
      "required": [
        "policyUri"
      ]
    },
    "google-native:dataproc/v1beta2:BasicAutoscalingAlgorithm": {
      "description": "Basic algorithm for autoscaling.",
      "properties": {
        "cooldownPeriod": {
          "type": "string",
          "description": "Optional. Duration between scaling events. A scaling period starts after the update operation from the previous event has completed.Bounds: 2m, 1d. Default: 2m."
        },
        "yarnConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:BasicYarnAutoscalingConfig",
          "description": "Optional. YARN autoscaling configuration."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:BasicAutoscalingAlgorithmResponse": {
      "description": "Basic algorithm for autoscaling.",
      "properties": {
        "cooldownPeriod": {
          "type": "string",
          "description": "Optional. Duration between scaling events. A scaling period starts after the update operation from the previous event has completed.Bounds: 2m, 1d. Default: 2m."
        },
        "yarnConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:BasicYarnAutoscalingConfigResponse",
          "description": "Optional. YARN autoscaling configuration."
        }
      },
      "type": "object",
      "required": [
        "cooldownPeriod",
        "yarnConfig"
      ]
    },
    "google-native:dataproc/v1beta2:BasicYarnAutoscalingConfig": {
      "description": "Basic autoscaling configurations for YARN.",
      "properties": {
        "gracefulDecommissionTimeout": {
          "type": "string",
          "description": "Timeout for YARN graceful decommissioning of Node Managers. Specifies the duration to wait for jobs to complete before forcefully removing workers (and potentially interrupting jobs). Only applicable to downscaling operations.Bounds: 0s, 1d."
        },
        "scaleDownFactor": {
          "type": "number",
          "description": "Fraction of average YARN pending memory in the last cooldown period for which to remove workers. A scale-down factor of 1 will result in scaling down so that there is no available memory remaining after the update (more aggressive scaling). A scale-down factor of 0 disables removing workers, which can be beneficial for autoscaling a single job. See How autoscaling works for more information.Bounds: 0.0, 1.0."
        },
        "scaleDownMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-down threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2 worker scale-down for the cluster to scale. A threshold of 0 means the autoscaler will scale down on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        },
        "scaleUpFactor": {
          "type": "number",
          "description": "Fraction of average YARN pending memory in the last cooldown period for which to add workers. A scale-up factor of 1.0 will result in scaling up so that there is no pending memory remaining after the update (more aggressive scaling). A scale-up factor closer to 0 will result in a smaller magnitude of scaling up (less aggressive scaling). See How autoscaling works for more information.Bounds: 0.0, 1.0."
        },
        "scaleUpMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-up threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2-worker scale-up for the cluster to scale. A threshold of 0 means the autoscaler will scale up on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        }
      },
      "type": "object",
      "required": [
        "gracefulDecommissionTimeout",
        "scaleDownFactor",
        "scaleUpFactor"
      ]
    },
    "google-native:dataproc/v1beta2:BasicYarnAutoscalingConfigResponse": {
      "description": "Basic autoscaling configurations for YARN.",
      "properties": {
        "gracefulDecommissionTimeout": {
          "type": "string",
          "description": "Timeout for YARN graceful decommissioning of Node Managers. Specifies the duration to wait for jobs to complete before forcefully removing workers (and potentially interrupting jobs). Only applicable to downscaling operations.Bounds: 0s, 1d."
        },
        "scaleDownFactor": {
          "type": "number",
          "description": "Fraction of average YARN pending memory in the last cooldown period for which to remove workers. A scale-down factor of 1 will result in scaling down so that there is no available memory remaining after the update (more aggressive scaling). A scale-down factor of 0 disables removing workers, which can be beneficial for autoscaling a single job. See How autoscaling works for more information.Bounds: 0.0, 1.0."
        },
        "scaleDownMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-down threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2 worker scale-down for the cluster to scale. A threshold of 0 means the autoscaler will scale down on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        },
        "scaleUpFactor": {
          "type": "number",
          "description": "Fraction of average YARN pending memory in the last cooldown period for which to add workers. A scale-up factor of 1.0 will result in scaling up so that there is no pending memory remaining after the update (more aggressive scaling). A scale-up factor closer to 0 will result in a smaller magnitude of scaling up (less aggressive scaling). See How autoscaling works for more information.Bounds: 0.0, 1.0."
        },
        "scaleUpMinWorkerFraction": {
          "type": "number",
          "description": "Optional. Minimum scale-up threshold as a fraction of total cluster size before scaling occurs. For example, in a 20-worker cluster, a threshold of 0.1 means the autoscaler must recommend at least a 2-worker scale-up for the cluster to scale. A threshold of 0 means the autoscaler will scale up on any recommended change.Bounds: 0.0, 1.0. Default: 0.0."
        }
      },
      "type": "object",
      "required": [
        "gracefulDecommissionTimeout",
        "scaleDownFactor",
        "scaleDownMinWorkerFraction",
        "scaleUpFactor",
        "scaleUpMinWorkerFraction"
      ]
    },
    "google-native:dataproc/v1beta2:Binding": {
      "description": "Associates members with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:Expr",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:BindingResponse": {
      "description": "Associates members with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ExprResponse",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:ClusterConfig": {
      "description": "The cluster config.",
      "properties": {
        "autoscalingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:AutoscalingConfig",
          "description": "Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset."
        },
        "configBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging bucket (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a URI to a Cloud Storage bucket."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:EncryptionConfig",
          "description": "Optional. Encryption settings for the cluster."
        },
        "endpointConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:EndpointConfig",
          "description": "Optional. Port/endpoint configuration for this cluster"
        },
        "gceClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:GceClusterConfig",
          "description": "Optional. The shared Compute Engine config settings for all instances in a cluster."
        },
        "gkeClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:GkeClusterConfig",
          "description": "Optional. The Kubernetes Engine config for Dataproc clusters deployed to Kubernetes. Setting this is considered mutually exclusive with Compute Engine-based options such as gce_cluster_config, master_config, worker_config, secondary_worker_config, and autoscaling_config."
        },
        "initializationActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:NodeInitializationAction"
          },
          "description": "Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1beta2/instance/attributes/dataproc-role) if [[ \"${ROLE}\" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi "
        },
        "lifecycleConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LifecycleConfig",
          "description": "Optional. The config setting for auto delete cluster schedule."
        },
        "masterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupConfig",
          "description": "Optional. The Compute Engine config settings for the master instance in a cluster."
        },
        "metastoreConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:MetastoreConfig",
          "description": "Optional. Metastore configuration."
        },
        "secondaryWorkerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupConfig",
          "description": "Optional. The Compute Engine config settings for additional worker instances in a cluster."
        },
        "securityConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SecurityConfig",
          "description": "Optional. Security related configuration."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SoftwareConfig",
          "description": "Optional. The config settings for software inside the cluster."
        },
        "tempBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket. This field requires a Cloud Storage bucket name, not a URI to a Cloud Storage bucket."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupConfig",
          "description": "Optional. The Compute Engine config settings for worker instances in a cluster."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:ClusterConfigResponse": {
      "description": "The cluster config.",
      "properties": {
        "autoscalingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:AutoscalingConfigResponse",
          "description": "Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset."
        },
        "configBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see Dataproc staging bucket (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). This field requires a Cloud Storage bucket name, not a URI to a Cloud Storage bucket."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:EncryptionConfigResponse",
          "description": "Optional. Encryption settings for the cluster."
        },
        "endpointConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:EndpointConfigResponse",
          "description": "Optional. Port/endpoint configuration for this cluster"
        },
        "gceClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:GceClusterConfigResponse",
          "description": "Optional. The shared Compute Engine config settings for all instances in a cluster."
        },
        "gkeClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:GkeClusterConfigResponse",
          "description": "Optional. The Kubernetes Engine config for Dataproc clusters deployed to Kubernetes. Setting this is considered mutually exclusive with Compute Engine-based options such as gce_cluster_config, master_config, worker_config, secondary_worker_config, and autoscaling_config."
        },
        "initializationActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:NodeInitializationActionResponse"
          },
          "description": "Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1beta2/instance/attributes/dataproc-role) if [[ \"${ROLE}\" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi "
        },
        "lifecycleConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LifecycleConfigResponse",
          "description": "Optional. The config setting for auto delete cluster schedule."
        },
        "masterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupConfigResponse",
          "description": "Optional. The Compute Engine config settings for the master instance in a cluster."
        },
        "metastoreConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:MetastoreConfigResponse",
          "description": "Optional. Metastore configuration."
        },
        "secondaryWorkerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupConfigResponse",
          "description": "Optional. The Compute Engine config settings for additional worker instances in a cluster."
        },
        "securityConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SecurityConfigResponse",
          "description": "Optional. Security related configuration."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SoftwareConfigResponse",
          "description": "Optional. The config settings for software inside the cluster."
        },
        "tempBucket": {
          "type": "string",
          "description": "Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket. This field requires a Cloud Storage bucket name, not a URI to a Cloud Storage bucket."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupConfigResponse",
          "description": "Optional. The Compute Engine config settings for worker instances in a cluster."
        }
      },
      "type": "object",
      "required": [
        "autoscalingConfig",
        "configBucket",
        "encryptionConfig",
        "endpointConfig",
        "gceClusterConfig",
        "gkeClusterConfig",
        "initializationActions",
        "lifecycleConfig",
        "masterConfig",
        "metastoreConfig",
        "secondaryWorkerConfig",
        "securityConfig",
        "softwareConfig",
        "tempBucket",
        "workerConfig"
      ]
    },
    "google-native:dataproc/v1beta2:ClusterMetricsResponse": {
      "description": "Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
      "properties": {
        "hdfsMetrics": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HDFS metrics."
        },
        "yarnMetrics": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The YARN metrics."
        }
      },
      "type": "object",
      "required": [
        "hdfsMetrics",
        "yarnMetrics"
      ]
    },
    "google-native:dataproc/v1beta2:ClusterSelector": {
      "description": "A selector that chooses target cluster for jobs based on metadata.",
      "properties": {
        "clusterLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The cluster labels. Cluster must have all labels to match."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The zone where workflow process executes. This parameter does not affect the selection of the cluster.If unspecified, the zone of the first cluster matching the selector is used."
        }
      },
      "type": "object",
      "required": [
        "clusterLabels"
      ]
    },
    "google-native:dataproc/v1beta2:ClusterSelectorResponse": {
      "description": "A selector that chooses target cluster for jobs based on metadata.",
      "properties": {
        "clusterLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The cluster labels. Cluster must have all labels to match."
        },
        "zone": {
          "type": "string",
          "description": "Optional. The zone where workflow process executes. This parameter does not affect the selection of the cluster.If unspecified, the zone of the first cluster matching the selector is used."
        }
      },
      "type": "object",
      "required": [
        "clusterLabels",
        "zone"
      ]
    },
    "google-native:dataproc/v1beta2:ClusterStatusResponse": {
      "description": "The status of a cluster and its instances.",
      "properties": {
        "detail": {
          "type": "string",
          "description": "Optional details of cluster's state."
        },
        "state": {
          "type": "string",
          "description": "The cluster's state."
        },
        "stateStartTime": {
          "type": "string",
          "description": "Time when this state was entered (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "substate": {
          "type": "string",
          "description": "Additional state information that includes status reported by the agent."
        }
      },
      "type": "object",
      "required": [
        "detail",
        "state",
        "stateStartTime",
        "substate"
      ]
    },
    "google-native:dataproc/v1beta2:DiskConfig": {
      "description": "Specifies the config of disk options for a group of VM instances.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Optional. Size in GB of the boot disk (default is 500GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See Disk types (https://cloud.google.com/compute/docs/disks#disk-types)."
        },
        "numLocalSsds": {
          "type": "integer",
          "description": "Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:DiskConfigResponse": {
      "description": "Specifies the config of disk options for a group of VM instances.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Optional. Size in GB of the boot disk (default is 500GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See Disk types (https://cloud.google.com/compute/docs/disks#disk-types)."
        },
        "numLocalSsds": {
          "type": "integer",
          "description": "Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries."
        }
      },
      "type": "object",
      "required": [
        "bootDiskSizeGb",
        "bootDiskType",
        "numLocalSsds"
      ]
    },
    "google-native:dataproc/v1beta2:EncryptionConfig": {
      "description": "Encryption settings for the cluster.",
      "properties": {
        "gcePdKmsKeyName": {
          "type": "string",
          "description": "Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:EncryptionConfigResponse": {
      "description": "Encryption settings for the cluster.",
      "properties": {
        "gcePdKmsKeyName": {
          "type": "string",
          "description": "Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster."
        }
      },
      "type": "object",
      "required": [
        "gcePdKmsKeyName"
      ]
    },
    "google-native:dataproc/v1beta2:EndpointConfig": {
      "description": "Endpoint config for this cluster",
      "properties": {
        "enableHttpPortAccess": {
          "type": "boolean",
          "description": "Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:EndpointConfigResponse": {
      "description": "Endpoint config for this cluster",
      "properties": {
        "enableHttpPortAccess": {
          "type": "boolean",
          "description": "Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false."
        },
        "httpPorts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of port descriptions to URLs. Will only be populated if enable_http_port_access is true."
        }
      },
      "type": "object",
      "required": [
        "enableHttpPortAccess",
        "httpPorts"
      ]
    },
    "google-native:dataproc/v1beta2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:dataproc/v1beta2:GceClusterConfig": {
      "description": "Common config settings for resources of Compute Engine cluster instances, applicable to all instances in the cluster.",
      "properties": {
        "internalIpOnly": {
          "type": "boolean",
          "description": "Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata))."
        },
        "networkUri": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see Using Subnetworks (https://cloud.google.com/compute/docs/subnetworks) for more information).A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default projects/[project_id]/regions/global/default default"
        },
        "nodeGroupAffinity": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:NodeGroupAffinity",
          "description": "Optional. Node Group Affinity for sole-tenant clusters."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:GceClusterConfigPrivateIpv6GoogleAccess",
          "description": "Optional. The type of IPv6 access for a cluster."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ReservationAffinity",
          "description": "Optional. Reservation Affinity for consuming Zonal reservation."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The Dataproc service account (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see VM Data Plane identity (https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services.If not specified, the Compute Engine default service account (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: https://www.googleapis.com/auth/cloud.useraccounts.readonly https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided: https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/bigtable.admin.table https://www.googleapis.com/auth/bigtable.data https://www.googleapis.com/auth/devstorage.full_control"
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ShieldedInstanceConfig",
          "description": "Optional. Shielded Instance Config for clusters using Compute Engine Shielded VMs (https://cloud.google.com/security/shielded-cloud/shielded-vm)."
        },
        "subnetworkUri": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0 projects/[project_id]/regions/us-east1/subnetworks/sub0 sub0"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Compute Engine tags to add to all instances (see Tagging instances (https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "zoneUri": {
          "type": "string",
          "description": "Optional. The zone where the Compute Engine cluster will be located. On a create request, it is required in the \"global\" region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone] projects/[project_id]/zones/[zone] us-central1-f"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:GceClusterConfigPrivateIpv6GoogleAccess": {
      "description": "Optional. The type of IPv6 access for a cluster.",
      "type": "string",
      "enum": [
        {
          "name": "PrivateIpv6GoogleAccessUnspecified",
          "description": "If unspecified, Compute Engine default behavior will apply, which is the same as INHERIT_FROM_SUBNETWORK.",
          "value": "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED"
        },
        {
          "name": "InheritFromSubnetwork",
          "description": "Private access to and from Google Services configuration inherited from the subnetwork configuration. This is the default Compute Engine behavior.",
          "value": "INHERIT_FROM_SUBNETWORK"
        },
        {
          "name": "Outbound",
          "description": "Enables outbound private IPv6 access to Google Services from the Dataproc cluster.",
          "value": "OUTBOUND"
        },
        {
          "name": "Bidirectional",
          "description": "Enables bidirectional private IPv6 access between Google Services and the Dataproc cluster.",
          "value": "BIDIRECTIONAL"
        }
      ]
    },
    "google-native:dataproc/v1beta2:GceClusterConfigResponse": {
      "description": "Common config settings for resources of Compute Engine cluster instances, applicable to all instances in the cluster.",
      "properties": {
        "internalIpOnly": {
          "type": "boolean",
          "description": "Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata))."
        },
        "networkUri": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see Using Subnetworks (https://cloud.google.com/compute/docs/subnetworks) for more information).A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default projects/[project_id]/regions/global/default default"
        },
        "nodeGroupAffinity": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:NodeGroupAffinityResponse",
          "description": "Optional. Node Group Affinity for sole-tenant clusters."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "Optional. The type of IPv6 access for a cluster."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ReservationAffinityResponse",
          "description": "Optional. Reservation Affinity for consuming Zonal reservation."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The Dataproc service account (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see VM Data Plane identity (https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services.If not specified, the Compute Engine default service account (https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: https://www.googleapis.com/auth/cloud.useraccounts.readonly https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided: https://www.googleapis.com/auth/bigquery https://www.googleapis.com/auth/bigtable.admin.table https://www.googleapis.com/auth/bigtable.data https://www.googleapis.com/auth/devstorage.full_control"
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ShieldedInstanceConfigResponse",
          "description": "Optional. Shielded Instance Config for clusters using Compute Engine Shielded VMs (https://cloud.google.com/security/shielded-cloud/shielded-vm)."
        },
        "subnetworkUri": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0 projects/[project_id]/regions/us-east1/subnetworks/sub0 sub0"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Compute Engine tags to add to all instances (see Tagging instances (https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "zoneUri": {
          "type": "string",
          "description": "Optional. The zone where the Compute Engine cluster will be located. On a create request, it is required in the \"global\" region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone] projects/[project_id]/zones/[zone] us-central1-f"
        }
      },
      "type": "object",
      "required": [
        "internalIpOnly",
        "metadata",
        "networkUri",
        "nodeGroupAffinity",
        "privateIpv6GoogleAccess",
        "reservationAffinity",
        "serviceAccount",
        "serviceAccountScopes",
        "shieldedInstanceConfig",
        "subnetworkUri",
        "tags",
        "zoneUri"
      ]
    },
    "google-native:dataproc/v1beta2:GkeClusterConfig": {
      "description": "The GKE config for this cluster.",
      "properties": {
        "namespacedGkeDeploymentTarget": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:NamespacedGkeDeploymentTarget",
          "description": "Optional. A target for the deployment."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:GkeClusterConfigResponse": {
      "description": "The GKE config for this cluster.",
      "properties": {
        "namespacedGkeDeploymentTarget": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:NamespacedGkeDeploymentTargetResponse",
          "description": "Optional. A target for the deployment."
        }
      },
      "type": "object",
      "required": [
        "namespacedGkeDeploymentTarget"
      ]
    },
    "google-native:dataproc/v1beta2:HadoopJob": {
      "description": "A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html).",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:HadoopJobResponse": {
      "description": "A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html).",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "jarFileUris",
        "loggingConfig",
        "mainClass",
        "mainJarFileUri",
        "properties"
      ]
    },
    "google-native:dataproc/v1beta2:HiveJob": {
      "description": "A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN.",
      "properties": {
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains Hive queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:QueryList",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=\"value\";)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:HiveJobResponse": {
      "description": "A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN.",
      "properties": {
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains Hive queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:QueryListResponse",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=\"value\";)."
        }
      },
      "type": "object",
      "required": [
        "continueOnFailure",
        "jarFileUris",
        "properties",
        "queryFileUri",
        "queryList",
        "scriptVariables"
      ]
    },
    "google-native:dataproc/v1beta2:InstanceGroupAutoscalingPolicyConfig": {
      "description": "Configuration for the size bounds of an instance group, including its proportional size to other groups.",
      "properties": {
        "maxInstances": {
          "type": "integer",
          "description": "Optional. Maximum number of instances for this group. Required for primary workers. Note that by default, clusters will not use secondary workers. Required for secondary workers if the minimum secondary instances is set.Primary workers - Bounds: [min_instances, ). Required. Secondary workers - Bounds: [min_instances, ). Default: 0."
        },
        "minInstances": {
          "type": "integer",
          "description": "Optional. Minimum number of instances for this group.Primary workers - Bounds: 2, max_instances. Default: 2. Secondary workers - Bounds: 0, max_instances. Default: 0."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Weight for the instance group, which is used to determine the fraction of total workers in the cluster from this instance group. For example, if primary workers have weight 2, and secondary workers have weight 1, the cluster will have approximately 2 primary workers for each secondary worker.The cluster may not reach the specified balance if constrained by min/max bounds or other autoscaling settings. For example, if max_instances for secondary workers is 0, then only primary workers will be added. The cluster can also be out of balance when created.If weight is not set on any instance group, the cluster will default to equal weight for all groups: the cluster will attempt to maintain an equal number of workers in each group within the configured size bounds for each group. If weight is set for one group only, the cluster will default to zero weight on the unset group. For example if weight is set only on primary workers, the cluster will use primary workers only and no secondary workers."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:InstanceGroupAutoscalingPolicyConfigResponse": {
      "description": "Configuration for the size bounds of an instance group, including its proportional size to other groups.",
      "properties": {
        "maxInstances": {
          "type": "integer",
          "description": "Optional. Maximum number of instances for this group. Required for primary workers. Note that by default, clusters will not use secondary workers. Required for secondary workers if the minimum secondary instances is set.Primary workers - Bounds: [min_instances, ). Required. Secondary workers - Bounds: [min_instances, ). Default: 0."
        },
        "minInstances": {
          "type": "integer",
          "description": "Optional. Minimum number of instances for this group.Primary workers - Bounds: 2, max_instances. Default: 2. Secondary workers - Bounds: 0, max_instances. Default: 0."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Weight for the instance group, which is used to determine the fraction of total workers in the cluster from this instance group. For example, if primary workers have weight 2, and secondary workers have weight 1, the cluster will have approximately 2 primary workers for each secondary worker.The cluster may not reach the specified balance if constrained by min/max bounds or other autoscaling settings. For example, if max_instances for secondary workers is 0, then only primary workers will be added. The cluster can also be out of balance when created.If weight is not set on any instance group, the cluster will default to equal weight for all groups: the cluster will attempt to maintain an equal number of workers in each group within the configured size bounds for each group. If weight is set for one group only, the cluster will default to zero weight on the unset group. For example if weight is set only on primary workers, the cluster will use primary workers only and no secondary workers."
        }
      },
      "type": "object",
      "required": [
        "maxInstances",
        "minInstances",
        "weight"
      ]
    },
    "google-native:dataproc/v1beta2:InstanceGroupConfig": {
      "description": "The config settings for Compute Engine resources in an instance group, such as a master or worker group.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:AcceleratorConfig"
          },
          "description": "Optional. The Compute Engine accelerator configuration for these instances."
        },
        "diskConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:DiskConfig",
          "description": "Optional. Disk option config settings."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default."
        },
        "machineTypeUri": {
          "type": "string",
          "description": "Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Specifies the minimum cpu platform for the Instance Group. See Dataproc -> Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu)."
        },
        "numInstances": {
          "type": "integer",
          "description": "Optional. The number of VM instances in the instance group. For HA cluster master_config groups, must be set to 3. For standard cluster master_config groups, must be set to 1."
        },
        "preemptibility": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupConfigPreemptibility",
          "description": "Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:InstanceGroupConfigPreemptibility": {
      "description": "Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE.",
      "type": "string",
      "enum": [
        {
          "name": "PreemptibilityUnspecified",
          "description": "Preemptibility is unspecified, the system will choose the appropriate setting for each instance group.",
          "value": "PREEMPTIBILITY_UNSPECIFIED"
        },
        {
          "name": "NonPreemptible",
          "description": "Instances are non-preemptible.This option is allowed for all instance groups and is the only valid value for Master and Worker instance groups.",
          "value": "NON_PREEMPTIBLE"
        },
        {
          "name": "Preemptible",
          "description": "Instances are preemptible.This option is allowed only for secondary worker groups.",
          "value": "PREEMPTIBLE"
        }
      ]
    },
    "google-native:dataproc/v1beta2:InstanceGroupConfigResponse": {
      "description": "The config settings for Compute Engine resources in an instance group, such as a master or worker group.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:AcceleratorConfigResponse"
          },
          "description": "Optional. The Compute Engine accelerator configuration for these instances."
        },
        "diskConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:DiskConfigResponse",
          "description": "Optional. Disk option config settings."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The Compute Engine image resource used for cluster instances.The URI can represent an image or image family.Image examples: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id] projects/[project_id]/global/images/[image-id] image-idImage family examples. Dataproc will use the most recent image from the family: https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name] projects/[project_id]/global/images/family/[custom-image-family-name]If the URI is unspecified, it will be inferred from SoftwareConfig.image_version or the system default."
        },
        "instanceNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of instance names. Dataproc derives the names from cluster_name, num_instances, and the instance group."
        },
        "instanceReferences": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceReferenceResponse"
          },
          "description": "List of references to Compute Engine instances."
        },
        "isPreemptible": {
          "type": "boolean",
          "description": "Specifies that this instance group contains preemptible instances."
        },
        "machineTypeUri": {
          "type": "string",
          "description": "Optional. The Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2 n1-standard-2Auto Zone Exception: If you are using the Dataproc Auto Zone Placement (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, n1-standard-2."
        },
        "managedGroupConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ManagedGroupConfigResponse",
          "description": "The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Specifies the minimum cpu platform for the Instance Group. See Dataproc -> Minimum CPU Platform (https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu)."
        },
        "numInstances": {
          "type": "integer",
          "description": "Optional. The number of VM instances in the instance group. For HA cluster master_config groups, must be set to 3. For standard cluster master_config groups, must be set to 1."
        },
        "preemptibility": {
          "type": "string",
          "description": "Optional. Specifies the preemptibility of the instance group.The default value for master and worker groups is NON_PREEMPTIBLE. This default cannot be changed.The default value for secondary instances is PREEMPTIBLE."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "diskConfig",
        "imageUri",
        "instanceNames",
        "instanceReferences",
        "isPreemptible",
        "machineTypeUri",
        "managedGroupConfig",
        "minCpuPlatform",
        "numInstances",
        "preemptibility"
      ]
    },
    "google-native:dataproc/v1beta2:InstanceReferenceResponse": {
      "description": "A reference to a Compute Engine instance.",
      "properties": {
        "instanceId": {
          "type": "string",
          "description": "The unique identifier of the Compute Engine instance."
        },
        "instanceName": {
          "type": "string",
          "description": "The user-friendly name of the Compute Engine instance."
        },
        "publicKey": {
          "type": "string",
          "description": "The public key used for sharing data with this instance."
        }
      },
      "type": "object",
      "required": [
        "instanceId",
        "instanceName",
        "publicKey"
      ]
    },
    "google-native:dataproc/v1beta2:JobPlacement": {
      "description": "Dataproc job config.",
      "properties": {
        "clusterLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Cluster labels to identify a cluster where the job will be submitted."
        },
        "clusterName": {
          "type": "string",
          "description": "The name of the cluster where the job will be submitted."
        }
      },
      "type": "object",
      "required": [
        "clusterName"
      ]
    },
    "google-native:dataproc/v1beta2:JobPlacementResponse": {
      "description": "Dataproc job config.",
      "properties": {
        "clusterLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Cluster labels to identify a cluster where the job will be submitted."
        },
        "clusterName": {
          "type": "string",
          "description": "The name of the cluster where the job will be submitted."
        },
        "clusterUuid": {
          "type": "string",
          "description": "A cluster UUID generated by the Dataproc service when the job is submitted."
        }
      },
      "type": "object",
      "required": [
        "clusterLabels",
        "clusterName",
        "clusterUuid"
      ]
    },
    "google-native:dataproc/v1beta2:JobReference": {
      "description": "Encapsulates the full scoping used to reference a job.",
      "properties": {
        "jobId": {
          "type": "string",
          "description": "Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server."
        },
        "project": {
          "type": "string",
          "description": "Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:JobReferenceResponse": {
      "description": "Encapsulates the full scoping used to reference a job.",
      "properties": {
        "jobId": {
          "type": "string",
          "description": "Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server."
        },
        "project": {
          "type": "string",
          "description": "Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID."
        }
      },
      "type": "object",
      "required": [
        "jobId",
        "project"
      ]
    },
    "google-native:dataproc/v1beta2:JobScheduling": {
      "description": "Job scheduling options.",
      "properties": {
        "maxFailuresPerHour": {
          "type": "integer",
          "description": "Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10."
        },
        "maxFailuresTotal": {
          "type": "integer",
          "description": "Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:JobSchedulingResponse": {
      "description": "Job scheduling options.",
      "properties": {
        "maxFailuresPerHour": {
          "type": "integer",
          "description": "Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10."
        },
        "maxFailuresTotal": {
          "type": "integer",
          "description": "Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240."
        }
      },
      "type": "object",
      "required": [
        "maxFailuresPerHour",
        "maxFailuresTotal"
      ]
    },
    "google-native:dataproc/v1beta2:JobStatusResponse": {
      "description": "Dataproc job status.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Optional Job state details, such as an error description if the state is ERROR."
        },
        "state": {
          "type": "string",
          "description": "A state message specifying the overall job state."
        },
        "stateStartTime": {
          "type": "string",
          "description": "The time when this state was entered."
        },
        "substate": {
          "type": "string",
          "description": "Additional state information, which includes status reported by the agent."
        }
      },
      "type": "object",
      "required": [
        "details",
        "state",
        "stateStartTime",
        "substate"
      ]
    },
    "google-native:dataproc/v1beta2:KerberosConfig": {
      "description": "Specifies Kerberos related configuration.",
      "properties": {
        "crossRealmTrustAdminServer": {
          "type": "string",
          "description": "Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship."
        },
        "crossRealmTrustKdc": {
          "type": "string",
          "description": "Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship."
        },
        "crossRealmTrustRealm": {
          "type": "string",
          "description": "Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust."
        },
        "crossRealmTrustSharedPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship."
        },
        "enableKerberos": {
          "type": "boolean",
          "description": "Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster."
        },
        "kdcDbKeyUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database."
        },
        "keyPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc."
        },
        "keystorePasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc."
        },
        "keystoreUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate."
        },
        "kmsKeyUri": {
          "type": "string",
          "description": "Optional. The uri of the KMS key used to encrypt various sensitive files."
        },
        "realm": {
          "type": "string",
          "description": "Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm."
        },
        "rootPrincipalPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password."
        },
        "tgtLifetimeHours": {
          "type": "integer",
          "description": "Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used."
        },
        "truststorePasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc."
        },
        "truststoreUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:KerberosConfigResponse": {
      "description": "Specifies Kerberos related configuration.",
      "properties": {
        "crossRealmTrustAdminServer": {
          "type": "string",
          "description": "Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship."
        },
        "crossRealmTrustKdc": {
          "type": "string",
          "description": "Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship."
        },
        "crossRealmTrustRealm": {
          "type": "string",
          "description": "Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust."
        },
        "crossRealmTrustSharedPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship."
        },
        "enableKerberos": {
          "type": "boolean",
          "description": "Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster."
        },
        "kdcDbKeyUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database."
        },
        "keyPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc."
        },
        "keystorePasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc."
        },
        "keystoreUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate."
        },
        "kmsKeyUri": {
          "type": "string",
          "description": "Optional. The uri of the KMS key used to encrypt various sensitive files."
        },
        "realm": {
          "type": "string",
          "description": "Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm."
        },
        "rootPrincipalPasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password."
        },
        "tgtLifetimeHours": {
          "type": "integer",
          "description": "Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used."
        },
        "truststorePasswordUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc."
        },
        "truststoreUri": {
          "type": "string",
          "description": "Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate."
        }
      },
      "type": "object",
      "required": [
        "crossRealmTrustAdminServer",
        "crossRealmTrustKdc",
        "crossRealmTrustRealm",
        "crossRealmTrustSharedPasswordUri",
        "enableKerberos",
        "kdcDbKeyUri",
        "keyPasswordUri",
        "keystorePasswordUri",
        "keystoreUri",
        "kmsKeyUri",
        "realm",
        "rootPrincipalPasswordUri",
        "tgtLifetimeHours",
        "truststorePasswordUri",
        "truststoreUri"
      ]
    },
    "google-native:dataproc/v1beta2:LifecycleConfig": {
      "description": "Specifies the cluster auto-delete schedule configuration.",
      "properties": {
        "autoDeleteTime": {
          "type": "string",
          "description": "Optional. The time when cluster will be auto-deleted. (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "autoDeleteTtl": {
          "type": "string",
          "description": "Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "idleDeleteTtl": {
          "type": "string",
          "description": "Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:LifecycleConfigResponse": {
      "description": "Specifies the cluster auto-delete schedule configuration.",
      "properties": {
        "autoDeleteTime": {
          "type": "string",
          "description": "Optional. The time when cluster will be auto-deleted. (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "autoDeleteTtl": {
          "type": "string",
          "description": "Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "idleDeleteTtl": {
          "type": "string",
          "description": "Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        },
        "idleStartTime": {
          "type": "string",
          "description": "The time when cluster became idle (most recent job finished) and became eligible for deletion due to idleness (see JSON representation of Timestamp (https://developers.google.com/protocol-buffers/docs/proto3#json))."
        }
      },
      "type": "object",
      "required": [
        "autoDeleteTime",
        "autoDeleteTtl",
        "idleDeleteTtl",
        "idleStartTime"
      ]
    },
    "google-native:dataproc/v1beta2:LoggingConfig": {
      "description": "The runtime logging config of the job.",
      "properties": {
        "driverLogLevels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:LoggingConfigResponse": {
      "description": "The runtime logging config of the job.",
      "properties": {
        "driverLogLevels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'"
        }
      },
      "type": "object",
      "required": [
        "driverLogLevels"
      ]
    },
    "google-native:dataproc/v1beta2:ManagedCluster": {
      "description": "Cluster that is managed by the workflow.",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The cluster name prefix. A unique cluster name will be formed by appending a random suffix.The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterConfig",
          "description": "The cluster configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this cluster.Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be associated with a given cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "config"
      ]
    },
    "google-native:dataproc/v1beta2:ManagedClusterResponse": {
      "description": "Cluster that is managed by the workflow.",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The cluster name prefix. A unique cluster name will be formed by appending a random suffix.The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterConfigResponse",
          "description": "The cluster configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this cluster.Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be associated with a given cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "config",
        "labels"
      ]
    },
    "google-native:dataproc/v1beta2:ManagedGroupConfigResponse": {
      "description": "Specifies the resources used to actively manage an instance group.",
      "properties": {
        "instanceGroupManagerName": {
          "type": "string",
          "description": "The name of the Instance Group Manager for this group."
        },
        "instanceTemplateName": {
          "type": "string",
          "description": "The name of the Instance Template used for the Managed Instance Group."
        }
      },
      "type": "object",
      "required": [
        "instanceGroupManagerName",
        "instanceTemplateName"
      ]
    },
    "google-native:dataproc/v1beta2:MetastoreConfig": {
      "description": "Specifies a Metastore configuration.",
      "properties": {
        "dataprocMetastoreService": {
          "type": "string",
          "description": "Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[dataproc_region]/services/[service-name]"
        }
      },
      "type": "object",
      "required": [
        "dataprocMetastoreService"
      ]
    },
    "google-native:dataproc/v1beta2:MetastoreConfigResponse": {
      "description": "Specifies a Metastore configuration.",
      "properties": {
        "dataprocMetastoreService": {
          "type": "string",
          "description": "Resource name of an existing Dataproc Metastore service.Example: projects/[project_id]/locations/[dataproc_region]/services/[service-name]"
        }
      },
      "type": "object",
      "required": [
        "dataprocMetastoreService"
      ]
    },
    "google-native:dataproc/v1beta2:NamespacedGkeDeploymentTarget": {
      "description": "A full, namespace-isolated deployment target for an existing GKE cluster.",
      "properties": {
        "clusterNamespace": {
          "type": "string",
          "description": "Optional. A namespace within the GKE cluster to deploy into."
        },
        "targetGkeCluster": {
          "type": "string",
          "description": "Optional. The target GKE cluster to deploy to. Format: 'projects/{project}/locations/{location}/clusters/{cluster_id}'"
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:NamespacedGkeDeploymentTargetResponse": {
      "description": "A full, namespace-isolated deployment target for an existing GKE cluster.",
      "properties": {
        "clusterNamespace": {
          "type": "string",
          "description": "Optional. A namespace within the GKE cluster to deploy into."
        },
        "targetGkeCluster": {
          "type": "string",
          "description": "Optional. The target GKE cluster to deploy to. Format: 'projects/{project}/locations/{location}/clusters/{cluster_id}'"
        }
      },
      "type": "object",
      "required": [
        "clusterNamespace",
        "targetGkeCluster"
      ]
    },
    "google-native:dataproc/v1beta2:NodeGroupAffinity": {
      "description": "Node Group Affinity for clusters using sole-tenant node groups.",
      "properties": {
        "nodeGroupUri": {
          "type": "string",
          "description": "The URI of a sole-tenant node group resource (https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on.A full URL, partial URI, or node group name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 node-group-1"
        }
      },
      "type": "object",
      "required": [
        "nodeGroupUri"
      ]
    },
    "google-native:dataproc/v1beta2:NodeGroupAffinityResponse": {
      "description": "Node Group Affinity for clusters using sole-tenant node groups.",
      "properties": {
        "nodeGroupUri": {
          "type": "string",
          "description": "The URI of a sole-tenant node group resource (https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on.A full URL, partial URI, or node group name are valid. Examples: https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1 node-group-1"
        }
      },
      "type": "object",
      "required": [
        "nodeGroupUri"
      ]
    },
    "google-native:dataproc/v1beta2:NodeInitializationAction": {
      "description": "Specifies an executable to run on a fully configured node and a timeout period for executable completion.",
      "properties": {
        "executableFile": {
          "type": "string",
          "description": "Cloud Storage URI of executable file."
        },
        "executionTimeout": {
          "type": "string",
          "description": "Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period."
        }
      },
      "type": "object",
      "required": [
        "executableFile"
      ]
    },
    "google-native:dataproc/v1beta2:NodeInitializationActionResponse": {
      "description": "Specifies an executable to run on a fully configured node and a timeout period for executable completion.",
      "properties": {
        "executableFile": {
          "type": "string",
          "description": "Cloud Storage URI of executable file."
        },
        "executionTimeout": {
          "type": "string",
          "description": "Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of Duration (https://developers.google.com/protocol-buffers/docs/proto3#json)).Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period."
        }
      },
      "type": "object",
      "required": [
        "executableFile",
        "executionTimeout"
      ]
    },
    "google-native:dataproc/v1beta2:OrderedJob": {
      "description": "A job executed by the workflow.",
      "properties": {
        "hadoopJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:HadoopJob",
          "description": "Optional. Job is a Hadoop job."
        },
        "hiveJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:HiveJob",
          "description": "Optional. Job is a Hive job."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this job.Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1 and 63 characters long, and must conform to the following regular expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be associated with a given job."
        },
        "pigJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PigJob",
          "description": "Optional. Job is a Pig job."
        },
        "prerequisiteStepIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The optional list of prerequisite job step_ids. If not specified, the job will start at the beginning of workflow."
        },
        "prestoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PrestoJob",
          "description": "Optional. Job is a Presto job."
        },
        "pysparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PySparkJob",
          "description": "Optional. Job is a PySpark job."
        },
        "scheduling": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobScheduling",
          "description": "Optional. Job scheduling configuration."
        },
        "sparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkJob",
          "description": "Optional. Job is a Spark job."
        },
        "sparkRJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkRJob",
          "description": "Optional. Job is a SparkR job."
        },
        "sparkSqlJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkSqlJob",
          "description": "Optional. Job is a SparkSql job."
        },
        "stepId": {
          "type": "string",
          "description": "The step id. The id must be unique among all jobs within the template.The step id is used as prefix for job id, as job goog-dataproc-workflow-step-id label, and in prerequisiteStepIds field from other steps.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters."
        }
      },
      "type": "object",
      "required": [
        "stepId"
      ]
    },
    "google-native:dataproc/v1beta2:OrderedJobResponse": {
      "description": "A job executed by the workflow.",
      "properties": {
        "hadoopJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:HadoopJobResponse",
          "description": "Optional. Job is a Hadoop job."
        },
        "hiveJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:HiveJobResponse",
          "description": "Optional. Job is a Hive job."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this job.Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1 and 63 characters long, and must conform to the following regular expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be associated with a given job."
        },
        "pigJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PigJobResponse",
          "description": "Optional. Job is a Pig job."
        },
        "prerequisiteStepIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The optional list of prerequisite job step_ids. If not specified, the job will start at the beginning of workflow."
        },
        "prestoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PrestoJobResponse",
          "description": "Optional. Job is a Presto job."
        },
        "pysparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PySparkJobResponse",
          "description": "Optional. Job is a PySpark job."
        },
        "scheduling": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobSchedulingResponse",
          "description": "Optional. Job scheduling configuration."
        },
        "sparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkJobResponse",
          "description": "Optional. Job is a Spark job."
        },
        "sparkRJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkRJobResponse",
          "description": "Optional. Job is a SparkR job."
        },
        "sparkSqlJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkSqlJobResponse",
          "description": "Optional. Job is a SparkSql job."
        },
        "stepId": {
          "type": "string",
          "description": "The step id. The id must be unique among all jobs within the template.The step id is used as prefix for job id, as job goog-dataproc-workflow-step-id label, and in prerequisiteStepIds field from other steps.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters."
        }
      },
      "type": "object",
      "required": [
        "hadoopJob",
        "hiveJob",
        "labels",
        "pigJob",
        "prerequisiteStepIds",
        "prestoJob",
        "pysparkJob",
        "scheduling",
        "sparkJob",
        "sparkRJob",
        "sparkSqlJob",
        "stepId"
      ]
    },
    "google-native:dataproc/v1beta2:ParameterValidation": {
      "description": "Configuration for parameter validation.",
      "properties": {
        "regex": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:RegexValidation",
          "description": "Validation based on regular expressions."
        },
        "values": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ValueValidation",
          "description": "Validation based on a list of allowed values."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:ParameterValidationResponse": {
      "description": "Configuration for parameter validation.",
      "properties": {
        "regex": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:RegexValidationResponse",
          "description": "Validation based on regular expressions."
        },
        "values": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ValueValidationResponse",
          "description": "Validation based on a list of allowed values."
        }
      },
      "type": "object",
      "required": [
        "regex",
        "values"
      ]
    },
    "google-native:dataproc/v1beta2:PigJob": {
      "description": "A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.",
      "properties": {
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains the Pig queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:QueryList",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value])."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:PigJobResponse": {
      "description": "A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.",
      "properties": {
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains the Pig queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:QueryListResponse",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value])."
        }
      },
      "type": "object",
      "required": [
        "continueOnFailure",
        "jarFileUris",
        "loggingConfig",
        "properties",
        "queryFileUri",
        "queryList",
        "scriptVariables"
      ]
    },
    "google-native:dataproc/v1beta2:PrestoJob": {
      "description": "A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster.",
      "properties": {
        "clientTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Presto client tags to attach to this query"
        },
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "outputFormat": {
          "type": "string",
          "description": "Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI"
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:QueryList",
          "description": "A list of queries."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:PrestoJobResponse": {
      "description": "A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster.",
      "properties": {
        "clientTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Presto client tags to attach to this query"
        },
        "continueOnFailure": {
          "type": "boolean",
          "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "outputFormat": {
          "type": "string",
          "description": "Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI"
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:QueryListResponse",
          "description": "A list of queries."
        }
      },
      "type": "object",
      "required": [
        "clientTags",
        "continueOnFailure",
        "loggingConfig",
        "outputFormat",
        "properties",
        "queryFileUri",
        "queryList"
      ]
    },
    "google-native:dataproc/v1beta2:PySparkJob": {
      "description": "A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainPythonFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main Python file to use as the driver. Must be a .py file."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        },
        "pythonFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip."
        }
      },
      "type": "object",
      "required": [
        "mainPythonFileUri"
      ]
    },
    "google-native:dataproc/v1beta2:PySparkJobResponse": {
      "description": "A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainPythonFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main Python file to use as the driver. Must be a .py file."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        },
        "pythonFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "jarFileUris",
        "loggingConfig",
        "mainPythonFileUri",
        "properties",
        "pythonFileUris"
      ]
    },
    "google-native:dataproc/v1beta2:QueryList": {
      "description": "A list of queries to run on a cluster.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } } "
        }
      },
      "type": "object",
      "required": [
        "queries"
      ]
    },
    "google-native:dataproc/v1beta2:QueryListResponse": {
      "description": "A list of queries to run on a cluster.",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } } "
        }
      },
      "type": "object",
      "required": [
        "queries"
      ]
    },
    "google-native:dataproc/v1beta2:RegexValidation": {
      "description": "Validation based on regular expressions.",
      "properties": {
        "regexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "RE2 regular expressions used to validate the parameter's value. The value must match the regex in its entirety (substring matches are not sufficient)."
        }
      },
      "type": "object",
      "required": [
        "regexes"
      ]
    },
    "google-native:dataproc/v1beta2:RegexValidationResponse": {
      "description": "Validation based on regular expressions.",
      "properties": {
        "regexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "RE2 regular expressions used to validate the parameter's value. The value must match the regex in its entirety (substring matches are not sufficient)."
        }
      },
      "type": "object",
      "required": [
        "regexes"
      ]
    },
    "google-native:dataproc/v1beta2:ReservationAffinity": {
      "description": "Reservation Affinity for consuming Zonal reservation.",
      "properties": {
        "consumeReservationType": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ReservationAffinityConsumeReservationType",
          "description": "Optional. Type of reservation to consume"
        },
        "key": {
          "type": "string",
          "description": "Optional. Corresponds to the label key of reservation resource."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Corresponds to the label values of reservation resource."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:ReservationAffinityConsumeReservationType": {
      "description": "Optional. Type of reservation to consume",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "NoReservation",
          "description": "Do not consume from any allocated capacity.",
          "value": "NO_RESERVATION"
        },
        {
          "name": "AnyReservation",
          "description": "Consume any reservation available.",
          "value": "ANY_RESERVATION"
        },
        {
          "name": "SpecificReservation",
          "description": "Must consume from a specific reservation. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_RESERVATION"
        }
      ]
    },
    "google-native:dataproc/v1beta2:ReservationAffinityResponse": {
      "description": "Reservation Affinity for consuming Zonal reservation.",
      "properties": {
        "consumeReservationType": {
          "type": "string",
          "description": "Optional. Type of reservation to consume"
        },
        "key": {
          "type": "string",
          "description": "Optional. Corresponds to the label key of reservation resource."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Corresponds to the label values of reservation resource."
        }
      },
      "type": "object",
      "required": [
        "consumeReservationType",
        "key",
        "values"
      ]
    },
    "google-native:dataproc/v1beta2:SecurityConfig": {
      "description": "Security related configuration, including encryption, Kerberos, etc.",
      "properties": {
        "kerberosConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:KerberosConfig",
          "description": "Optional. Kerberos related configuration."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:SecurityConfigResponse": {
      "description": "Security related configuration, including encryption, Kerberos, etc.",
      "properties": {
        "kerberosConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:KerberosConfigResponse",
          "description": "Optional. Kerberos related configuration."
        }
      },
      "type": "object",
      "required": [
        "kerberosConfig"
      ]
    },
    "google-native:dataproc/v1beta2:ShieldedInstanceConfig": {
      "description": "Shielded Instance Config for clusters using Compute Engine Shielded VMs (https://cloud.google.com/security/shielded-cloud/shielded-vm).",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have the vTPM enabled."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:ShieldedInstanceConfigResponse": {
      "description": "Shielded Instance Config for clusters using Compute Engine Shielded VMs (https://cloud.google.com/security/shielded-cloud/shielded-vm).",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Defines whether instances have the vTPM enabled."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:dataproc/v1beta2:SoftwareConfig": {
      "description": "Specifies the selection and config of software inside the cluster.",
      "properties": {
        "imageVersion": {
          "type": "string",
          "description": "Optional. The version of software inside the cluster. It must be one of the supported Dataproc Versions (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as \"1.2\" (including a subminor version, such as \"1.2.29\"), or the \"preview\" version (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version."
        },
        "optionalComponents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:SoftwareConfigOptionalComponentsItem"
          },
          "description": "The set of optional components to activate on the cluster."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. The following are supported prefixes and their mappings: capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:SoftwareConfigOptionalComponentsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ComponentUnspecified",
          "description": "Unspecified component. Specifying this will cause Cluster creation to fail.",
          "value": "COMPONENT_UNSPECIFIED"
        },
        {
          "name": "Anaconda",
          "description": "The Anaconda python distribution. The Anaconda component is not supported in the Dataproc 2.0 image. The 2.0 image is pre-installed with Miniconda.",
          "value": "ANACONDA"
        },
        {
          "name": "Docker",
          "description": "Docker",
          "value": "DOCKER"
        },
        {
          "name": "Druid",
          "description": "The Druid query engine.",
          "value": "DRUID"
        },
        {
          "name": "Flink",
          "description": "Flink",
          "value": "FLINK"
        },
        {
          "name": "Hbase",
          "description": "HBase.",
          "value": "HBASE"
        },
        {
          "name": "HiveWebhcat",
          "description": "The Hive Web HCatalog (the REST service for accessing HCatalog).",
          "value": "HIVE_WEBHCAT"
        },
        {
          "name": "Jupyter",
          "description": "The Jupyter Notebook.",
          "value": "JUPYTER"
        },
        {
          "name": "Kerberos",
          "description": "The Kerberos security feature.",
          "value": "KERBEROS"
        },
        {
          "name": "Presto",
          "description": "The Presto query engine.",
          "value": "PRESTO"
        },
        {
          "name": "Ranger",
          "description": "The Ranger service.",
          "value": "RANGER"
        },
        {
          "name": "Solr",
          "description": "The Solr service.",
          "value": "SOLR"
        },
        {
          "name": "Zeppelin",
          "description": "The Zeppelin notebook.",
          "value": "ZEPPELIN"
        },
        {
          "name": "Zookeeper",
          "description": "The Zookeeper service.",
          "value": "ZOOKEEPER"
        }
      ]
    },
    "google-native:dataproc/v1beta2:SoftwareConfigResponse": {
      "description": "Specifies the selection and config of software inside the cluster.",
      "properties": {
        "imageVersion": {
          "type": "string",
          "description": "Optional. The version of software inside the cluster. It must be one of the supported Dataproc Versions (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as \"1.2\" (including a subminor version, such as \"1.2.29\"), or the \"preview\" version (https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version."
        },
        "optionalComponents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of optional components to activate on the cluster."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, for example core:hadoop.tmp.dir. The following are supported prefixes and their mappings: capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more information, see Cluster properties (https://cloud.google.com/dataproc/docs/concepts/cluster-properties)."
        }
      },
      "type": "object",
      "required": [
        "imageVersion",
        "optionalComponents",
        "properties"
      ]
    },
    "google-native:dataproc/v1beta2:SparkJob": {
      "description": "A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file that contains the main class."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:SparkJobResponse": {
      "description": "A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainClass": {
          "type": "string",
          "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris."
        },
        "mainJarFileUri": {
          "type": "string",
          "description": "The HCFS URI of the jar file that contains the main class."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "jarFileUris",
        "loggingConfig",
        "mainClass",
        "mainJarFileUri",
        "properties"
      ]
    },
    "google-native:dataproc/v1beta2:SparkRJob": {
      "description": "A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainRFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main R file to use as the driver. Must be a .R file."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        }
      },
      "type": "object",
      "required": [
        "mainRFileUri"
      ]
    },
    "google-native:dataproc/v1beta2:SparkRJobResponse": {
      "description": "A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN.",
      "properties": {
        "archiveUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission."
        },
        "fileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "mainRFileUri": {
          "type": "string",
          "description": "The HCFS URI of the main R file to use as the driver. Must be a .R file."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code."
        }
      },
      "type": "object",
      "required": [
        "archiveUris",
        "args",
        "fileUris",
        "loggingConfig",
        "mainRFileUri",
        "properties"
      ]
    },
    "google-native:dataproc/v1beta2:SparkSqlJob": {
      "description": "A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries.",
      "properties": {
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfig",
          "description": "Optional. The runtime log config for job execution."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:QueryList",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";)."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:SparkSqlJobResponse": {
      "description": "A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries.",
      "properties": {
        "jarFileUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:LoggingConfigResponse",
          "description": "Optional. The runtime log config for job execution."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten."
        },
        "queryFileUri": {
          "type": "string",
          "description": "The HCFS URI of the script that contains SQL queries."
        },
        "queryList": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:QueryListResponse",
          "description": "A list of queries."
        },
        "scriptVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";)."
        }
      },
      "type": "object",
      "required": [
        "jarFileUris",
        "loggingConfig",
        "properties",
        "queryFileUri",
        "queryList",
        "scriptVariables"
      ]
    },
    "google-native:dataproc/v1beta2:TemplateParameter": {
      "description": "A configurable parameter that replaces one or more fields in the template. Parameterizable fields: - Labels - File uris - Job properties - Job arguments - Script variables - Main class (in HadoopJob and SparkJob) - Zone (in ClusterSelector)",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Brief description of the parameter. Must not exceed 1024 characters."
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Paths to all fields that the parameter replaces. A field is allowed to appear in at most one parameter's list of field paths.A field path is similar in syntax to a google.protobuf.FieldMask. For example, a field path that references the zone field of a workflow template's cluster selector would be specified as placement.clusterSelector.zone.Also, field paths can reference fields using the following syntax: Values in maps can be referenced by key: labels'key' placement.clusterSelector.clusterLabels'key' placement.managedCluster.labels'key' placement.clusterSelector.clusterLabels'key' jobs'step-id'.labels'key' Jobs in the jobs list can be referenced by step-id: jobs'step-id'.hadoopJob.mainJarFileUri jobs'step-id'.hiveJob.queryFileUri jobs'step-id'.pySparkJob.mainPythonFileUri jobs'step-id'.hadoopJob.jarFileUris0 jobs'step-id'.hadoopJob.archiveUris0 jobs'step-id'.hadoopJob.fileUris0 jobs'step-id'.pySparkJob.pythonFileUris0 Items in repeated fields can be referenced by a zero-based index: jobs'step-id'.sparkJob.args0 Other examples: jobs'step-id'.hadoopJob.properties'key' jobs'step-id'.hadoopJob.args0 jobs'step-id'.hiveJob.scriptVariables'key' jobs'step-id'.hadoopJob.mainJarFileUri placement.clusterSelector.zoneIt may not be possible to parameterize maps and repeated fields in their entirety since only individual map values and individual items in repeated fields can be referenced. For example, the following field paths are invalid: placement.clusterSelector.clusterLabels jobs'step-id'.sparkJob.args"
        },
        "name": {
          "type": "string",
          "description": "Parameter name. The parameter name is used as the key, and paired with the parameter value, which are passed to the template when the template is instantiated. The name must contain only capital letters (A-Z), numbers (0-9), and underscores (_), and must not start with a number. The maximum length is 40 characters."
        },
        "validation": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ParameterValidation",
          "description": "Optional. Validation rules to be applied to this parameter's value."
        }
      },
      "type": "object",
      "required": [
        "fields",
        "name"
      ]
    },
    "google-native:dataproc/v1beta2:TemplateParameterResponse": {
      "description": "A configurable parameter that replaces one or more fields in the template. Parameterizable fields: - Labels - File uris - Job properties - Job arguments - Script variables - Main class (in HadoopJob and SparkJob) - Zone (in ClusterSelector)",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Brief description of the parameter. Must not exceed 1024 characters."
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Paths to all fields that the parameter replaces. A field is allowed to appear in at most one parameter's list of field paths.A field path is similar in syntax to a google.protobuf.FieldMask. For example, a field path that references the zone field of a workflow template's cluster selector would be specified as placement.clusterSelector.zone.Also, field paths can reference fields using the following syntax: Values in maps can be referenced by key: labels'key' placement.clusterSelector.clusterLabels'key' placement.managedCluster.labels'key' placement.clusterSelector.clusterLabels'key' jobs'step-id'.labels'key' Jobs in the jobs list can be referenced by step-id: jobs'step-id'.hadoopJob.mainJarFileUri jobs'step-id'.hiveJob.queryFileUri jobs'step-id'.pySparkJob.mainPythonFileUri jobs'step-id'.hadoopJob.jarFileUris0 jobs'step-id'.hadoopJob.archiveUris0 jobs'step-id'.hadoopJob.fileUris0 jobs'step-id'.pySparkJob.pythonFileUris0 Items in repeated fields can be referenced by a zero-based index: jobs'step-id'.sparkJob.args0 Other examples: jobs'step-id'.hadoopJob.properties'key' jobs'step-id'.hadoopJob.args0 jobs'step-id'.hiveJob.scriptVariables'key' jobs'step-id'.hadoopJob.mainJarFileUri placement.clusterSelector.zoneIt may not be possible to parameterize maps and repeated fields in their entirety since only individual map values and individual items in repeated fields can be referenced. For example, the following field paths are invalid: placement.clusterSelector.clusterLabels jobs'step-id'.sparkJob.args"
        },
        "name": {
          "type": "string",
          "description": "Parameter name. The parameter name is used as the key, and paired with the parameter value, which are passed to the template when the template is instantiated. The name must contain only capital letters (A-Z), numbers (0-9), and underscores (_), and must not start with a number. The maximum length is 40 characters."
        },
        "validation": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ParameterValidationResponse",
          "description": "Optional. Validation rules to be applied to this parameter's value."
        }
      },
      "type": "object",
      "required": [
        "description",
        "fields",
        "name",
        "validation"
      ]
    },
    "google-native:dataproc/v1beta2:ValueValidation": {
      "description": "Validation based on a list of allowed values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of allowed values for the parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:dataproc/v1beta2:ValueValidationResponse": {
      "description": "Validation based on a list of allowed values.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of allowed values for the parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:dataproc/v1beta2:WorkflowTemplatePlacement": {
      "description": "Specifies workflow execution target.Either managed_cluster or cluster_selector is required.",
      "properties": {
        "clusterSelector": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterSelector",
          "description": "Optional. A selector that chooses target cluster for jobs based on metadata.The selector is evaluated at the time each job is submitted."
        },
        "managedCluster": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ManagedCluster",
          "description": "Optional. A cluster that is managed by the workflow."
        }
      },
      "type": "object"
    },
    "google-native:dataproc/v1beta2:WorkflowTemplatePlacementResponse": {
      "description": "Specifies workflow execution target.Either managed_cluster or cluster_selector is required.",
      "properties": {
        "clusterSelector": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterSelectorResponse",
          "description": "Optional. A selector that chooses target cluster for jobs based on metadata.The selector is evaluated at the time each job is submitted."
        },
        "managedCluster": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ManagedClusterResponse",
          "description": "Optional. A cluster that is managed by the workflow."
        }
      },
      "type": "object",
      "required": [
        "clusterSelector",
        "managedCluster"
      ]
    },
    "google-native:dataproc/v1beta2:YarnApplicationResponse": {
      "description": "A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The application name."
        },
        "progress": {
          "type": "number",
          "description": "The numerical progress of the application, from 1 to 100."
        },
        "state": {
          "type": "string",
          "description": "The application state."
        },
        "trackingUrl": {
          "type": "string",
          "description": "The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access."
        }
      },
      "type": "object",
      "required": [
        "name",
        "progress",
        "state",
        "trackingUrl"
      ]
    },
    "google-native:datastore/v1:GoogleDatastoreAdminV1IndexedProperty": {
      "description": "A property of an index.",
      "properties": {
        "direction": {
          "$ref": "#/types/google-native:datastore%2Fv1:GoogleDatastoreAdminV1IndexedPropertyDirection",
          "description": "The indexed property's direction. Must not be DIRECTION_UNSPECIFIED."
        },
        "name": {
          "type": "string",
          "description": "The property name to index."
        }
      },
      "type": "object",
      "required": [
        "direction",
        "name"
      ]
    },
    "google-native:datastore/v1:GoogleDatastoreAdminV1IndexedPropertyDirection": {
      "description": "Required. The indexed property's direction. Must not be DIRECTION_UNSPECIFIED.",
      "type": "string",
      "enum": [
        {
          "name": "DirectionUnspecified",
          "description": "The direction is unspecified.",
          "value": "DIRECTION_UNSPECIFIED"
        },
        {
          "name": "Ascending",
          "description": "The property's values are indexed so as to support sequencing in ascending order and also query by <, >, <=, >=, and =.",
          "value": "ASCENDING"
        },
        {
          "name": "Descending",
          "description": "The property's values are indexed so as to support sequencing in descending order and also query by <, >, <=, >=, and =.",
          "value": "DESCENDING"
        }
      ]
    },
    "google-native:datastore/v1:GoogleDatastoreAdminV1IndexedPropertyResponse": {
      "description": "A property of an index.",
      "properties": {
        "direction": {
          "type": "string",
          "description": "The indexed property's direction. Must not be DIRECTION_UNSPECIFIED."
        },
        "name": {
          "type": "string",
          "description": "The property name to index."
        }
      },
      "type": "object",
      "required": [
        "direction",
        "name"
      ]
    },
    "google-native:datastore/v1:IndexAncestor": {
      "description": "Required. The index's ancestor mode. Must not be ANCESTOR_MODE_UNSPECIFIED.",
      "type": "string",
      "enum": [
        {
          "name": "AncestorModeUnspecified",
          "description": "The ancestor mode is unspecified.",
          "value": "ANCESTOR_MODE_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Do not include the entity's ancestors in the index.",
          "value": "NONE"
        },
        {
          "name": "AllAncestors",
          "description": "Include all the entity's ancestors in the index.",
          "value": "ALL_ANCESTORS"
        }
      ]
    },
    "google-native:datastream/v1:AvroFileFormat": {
      "description": "AVRO file format configuration.",
      "type": "object"
    },
    "google-native:datastream/v1:AvroFileFormatResponse": {
      "description": "AVRO file format configuration.",
      "type": "object"
    },
    "google-native:datastream/v1:BackfillAllStrategy": {
      "description": "Backfill strategy to automatically backfill the Stream's objects. Specific objects can be excluded.",
      "properties": {
        "mysqlExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlRdbms",
          "description": "MySQL data source objects to avoid backfilling."
        },
        "oracleExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleRdbms",
          "description": "Oracle data source objects to avoid backfilling."
        },
        "postgresqlExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlRdbms",
          "description": "PostgreSQL data source objects to avoid backfilling."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:BackfillAllStrategyResponse": {
      "description": "Backfill strategy to automatically backfill the Stream's objects. Specific objects can be excluded.",
      "properties": {
        "mysqlExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlRdbmsResponse",
          "description": "MySQL data source objects to avoid backfilling."
        },
        "oracleExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleRdbmsResponse",
          "description": "Oracle data source objects to avoid backfilling."
        },
        "postgresqlExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlRdbmsResponse",
          "description": "PostgreSQL data source objects to avoid backfilling."
        }
      },
      "type": "object",
      "required": [
        "mysqlExcludedObjects",
        "oracleExcludedObjects",
        "postgresqlExcludedObjects"
      ]
    },
    "google-native:datastream/v1:BackfillNoneStrategy": {
      "description": "Backfill strategy to disable automatic backfill for the Stream's objects.",
      "type": "object"
    },
    "google-native:datastream/v1:BackfillNoneStrategyResponse": {
      "description": "Backfill strategy to disable automatic backfill for the Stream's objects.",
      "type": "object"
    },
    "google-native:datastream/v1:BigQueryDestinationConfig": {
      "description": "BigQuery destination configuration",
      "properties": {
        "dataFreshness": {
          "type": "string",
          "description": "The guaranteed data freshness (in seconds) when querying tables created by the stream. Editing this field will only affect new tables created in the future, but existing tables will not be impacted. Lower values mean that queries will return fresher data, but may result in higher cost."
        },
        "singleTargetDataset": {
          "$ref": "#/types/google-native:datastream%2Fv1:SingleTargetDataset",
          "description": "Single destination dataset."
        },
        "sourceHierarchyDatasets": {
          "$ref": "#/types/google-native:datastream%2Fv1:SourceHierarchyDatasets",
          "description": "Source hierarchy datasets."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:BigQueryDestinationConfigResponse": {
      "description": "BigQuery destination configuration",
      "properties": {
        "dataFreshness": {
          "type": "string",
          "description": "The guaranteed data freshness (in seconds) when querying tables created by the stream. Editing this field will only affect new tables created in the future, but existing tables will not be impacted. Lower values mean that queries will return fresher data, but may result in higher cost."
        },
        "singleTargetDataset": {
          "$ref": "#/types/google-native:datastream%2Fv1:SingleTargetDatasetResponse",
          "description": "Single destination dataset."
        },
        "sourceHierarchyDatasets": {
          "$ref": "#/types/google-native:datastream%2Fv1:SourceHierarchyDatasetsResponse",
          "description": "Source hierarchy datasets."
        }
      },
      "type": "object",
      "required": [
        "dataFreshness",
        "singleTargetDataset",
        "sourceHierarchyDatasets"
      ]
    },
    "google-native:datastream/v1:BigQueryProfile": {
      "description": "BigQuery warehouse profile.",
      "type": "object"
    },
    "google-native:datastream/v1:BigQueryProfileResponse": {
      "description": "BigQuery warehouse profile.",
      "type": "object"
    },
    "google-native:datastream/v1:DatasetTemplate": {
      "description": "Dataset template used for dynamic dataset creation.",
      "properties": {
        "datasetIdPrefix": {
          "type": "string",
          "description": "If supplied, every created dataset will have its name prefixed by the provided value. The prefix and name will be separated by an underscore. i.e. _."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key. i.e. projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{cryptoKey}. See https://cloud.google.com/bigquery/docs/customer-managed-encryption for more information."
        },
        "location": {
          "type": "string",
          "description": "The geographic location where the dataset should reside. See https://cloud.google.com/bigquery/docs/locations for supported locations."
        }
      },
      "type": "object",
      "required": [
        "location"
      ]
    },
    "google-native:datastream/v1:DatasetTemplateResponse": {
      "description": "Dataset template used for dynamic dataset creation.",
      "properties": {
        "datasetIdPrefix": {
          "type": "string",
          "description": "If supplied, every created dataset will have its name prefixed by the provided value. The prefix and name will be separated by an underscore. i.e. _."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table. The BigQuery Service Account associated with your project requires access to this encryption key. i.e. projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{cryptoKey}. See https://cloud.google.com/bigquery/docs/customer-managed-encryption for more information."
        },
        "location": {
          "type": "string",
          "description": "The geographic location where the dataset should reside. See https://cloud.google.com/bigquery/docs/locations for supported locations."
        }
      },
      "type": "object",
      "required": [
        "datasetIdPrefix",
        "kmsKeyName",
        "location"
      ]
    },
    "google-native:datastream/v1:DestinationConfig": {
      "description": "The configuration of the stream destination.",
      "properties": {
        "bigqueryDestinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:BigQueryDestinationConfig",
          "description": "BigQuery destination configuration."
        },
        "destinationConnectionProfile": {
          "type": "string",
          "description": "Destination connection profile resource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`"
        },
        "gcsDestinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:GcsDestinationConfig",
          "description": "A configuration for how data should be loaded to Cloud Storage."
        }
      },
      "type": "object",
      "required": [
        "destinationConnectionProfile"
      ]
    },
    "google-native:datastream/v1:DestinationConfigResponse": {
      "description": "The configuration of the stream destination.",
      "properties": {
        "bigqueryDestinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:BigQueryDestinationConfigResponse",
          "description": "BigQuery destination configuration."
        },
        "destinationConnectionProfile": {
          "type": "string",
          "description": "Destination connection profile resource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`"
        },
        "gcsDestinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:GcsDestinationConfigResponse",
          "description": "A configuration for how data should be loaded to Cloud Storage."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestinationConfig",
        "destinationConnectionProfile",
        "gcsDestinationConfig"
      ]
    },
    "google-native:datastream/v1:DropLargeObjects": {
      "description": "Configuration to drop large object values.",
      "type": "object"
    },
    "google-native:datastream/v1:DropLargeObjectsResponse": {
      "description": "Configuration to drop large object values.",
      "type": "object"
    },
    "google-native:datastream/v1:ErrorResponse": {
      "description": "Represent a user-facing Error.",
      "properties": {
        "details": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional information about the error."
        },
        "errorTime": {
          "type": "string",
          "description": "The time when the error occurred."
        },
        "errorUuid": {
          "type": "string",
          "description": "A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses."
        },
        "message": {
          "type": "string",
          "description": "A message containing more information about the error that occurred."
        },
        "reason": {
          "type": "string",
          "description": "A title that explains the reason for the error."
        }
      },
      "type": "object",
      "required": [
        "details",
        "errorTime",
        "errorUuid",
        "message",
        "reason"
      ]
    },
    "google-native:datastream/v1:ForwardSshTunnelConnectivity": {
      "description": "Forward SSH Tunnel connectivity.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the SSH tunnel."
        },
        "password": {
          "type": "string",
          "description": "Input only. SSH password."
        },
        "port": {
          "type": "integer",
          "description": "Port for the SSH tunnel, default value is 22."
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. SSH private key."
        },
        "username": {
          "type": "string",
          "description": "Username for the SSH tunnel."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "username"
      ]
    },
    "google-native:datastream/v1:ForwardSshTunnelConnectivityResponse": {
      "description": "Forward SSH Tunnel connectivity.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the SSH tunnel."
        },
        "password": {
          "type": "string",
          "description": "Input only. SSH password."
        },
        "port": {
          "type": "integer",
          "description": "Port for the SSH tunnel, default value is 22."
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. SSH private key."
        },
        "username": {
          "type": "string",
          "description": "Username for the SSH tunnel."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "password",
        "port",
        "privateKey",
        "username"
      ]
    },
    "google-native:datastream/v1:GcsDestinationConfig": {
      "description": "Google Cloud Storage destination configuration",
      "properties": {
        "avroFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1:AvroFileFormat",
          "description": "AVRO file format configuration."
        },
        "fileRotationInterval": {
          "type": "string",
          "description": "The maximum duration for which new events are added before a file is closed and a new file is created. Values within the range of 15-60 seconds are allowed."
        },
        "fileRotationMb": {
          "type": "integer",
          "description": "The maximum file size to be saved in the bucket."
        },
        "jsonFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1:JsonFileFormat",
          "description": "JSON file format configuration."
        },
        "path": {
          "type": "string",
          "description": "Path inside the Cloud Storage bucket to write data to."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:GcsDestinationConfigResponse": {
      "description": "Google Cloud Storage destination configuration",
      "properties": {
        "avroFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1:AvroFileFormatResponse",
          "description": "AVRO file format configuration."
        },
        "fileRotationInterval": {
          "type": "string",
          "description": "The maximum duration for which new events are added before a file is closed and a new file is created. Values within the range of 15-60 seconds are allowed."
        },
        "fileRotationMb": {
          "type": "integer",
          "description": "The maximum file size to be saved in the bucket."
        },
        "jsonFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1:JsonFileFormatResponse",
          "description": "JSON file format configuration."
        },
        "path": {
          "type": "string",
          "description": "Path inside the Cloud Storage bucket to write data to."
        }
      },
      "type": "object",
      "required": [
        "avroFileFormat",
        "fileRotationInterval",
        "fileRotationMb",
        "jsonFileFormat",
        "path"
      ]
    },
    "google-native:datastream/v1:GcsProfile": {
      "description": "Cloud Storage bucket profile.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The Cloud Storage bucket name."
        },
        "rootPath": {
          "type": "string",
          "description": "The root path inside the Cloud Storage bucket."
        }
      },
      "type": "object",
      "required": [
        "bucket"
      ]
    },
    "google-native:datastream/v1:GcsProfileResponse": {
      "description": "Cloud Storage bucket profile.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The Cloud Storage bucket name."
        },
        "rootPath": {
          "type": "string",
          "description": "The root path inside the Cloud Storage bucket."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "rootPath"
      ]
    },
    "google-native:datastream/v1:JsonFileFormat": {
      "description": "JSON file format configuration.",
      "properties": {
        "compression": {
          "$ref": "#/types/google-native:datastream%2Fv1:JsonFileFormatCompression",
          "description": "Compression of the loaded JSON file."
        },
        "schemaFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1:JsonFileFormatSchemaFileFormat",
          "description": "The schema file format along JSON data files."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:JsonFileFormatCompression": {
      "description": "Compression of the loaded JSON file.",
      "type": "string",
      "enum": [
        {
          "name": "JsonCompressionUnspecified",
          "description": "Unspecified json file compression.",
          "value": "JSON_COMPRESSION_UNSPECIFIED"
        },
        {
          "name": "NoCompression",
          "description": "Do not compress JSON file.",
          "value": "NO_COMPRESSION"
        },
        {
          "name": "Gzip",
          "description": "Gzip compression.",
          "value": "GZIP"
        }
      ]
    },
    "google-native:datastream/v1:JsonFileFormatResponse": {
      "description": "JSON file format configuration.",
      "properties": {
        "compression": {
          "type": "string",
          "description": "Compression of the loaded JSON file."
        },
        "schemaFileFormat": {
          "type": "string",
          "description": "The schema file format along JSON data files."
        }
      },
      "type": "object",
      "required": [
        "compression",
        "schemaFileFormat"
      ]
    },
    "google-native:datastream/v1:JsonFileFormatSchemaFileFormat": {
      "description": "The schema file format along JSON data files.",
      "type": "string",
      "enum": [
        {
          "name": "SchemaFileFormatUnspecified",
          "description": "Unspecified schema file format.",
          "value": "SCHEMA_FILE_FORMAT_UNSPECIFIED"
        },
        {
          "name": "NoSchemaFile",
          "description": "Do not attach schema file.",
          "value": "NO_SCHEMA_FILE"
        },
        {
          "name": "AvroSchemaFile",
          "description": "Avro schema format.",
          "value": "AVRO_SCHEMA_FILE"
        }
      ]
    },
    "google-native:datastream/v1:MysqlColumn": {
      "description": "MySQL Column.",
      "properties": {
        "collation": {
          "type": "string",
          "description": "Column collation."
        },
        "column": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html"
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "precision": {
          "type": "integer",
          "description": "Column precision."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "scale": {
          "type": "integer",
          "description": "Column scale."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:MysqlColumnResponse": {
      "description": "MySQL Column.",
      "properties": {
        "collation": {
          "type": "string",
          "description": "Column collation."
        },
        "column": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html"
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "precision": {
          "type": "integer",
          "description": "Column precision."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "scale": {
          "type": "integer",
          "description": "Column scale."
        }
      },
      "type": "object",
      "required": [
        "collation",
        "column",
        "dataType",
        "length",
        "nullable",
        "ordinalPosition",
        "precision",
        "primaryKey",
        "scale"
      ]
    },
    "google-native:datastream/v1:MysqlDatabase": {
      "description": "MySQL database.",
      "properties": {
        "database": {
          "type": "string",
          "description": "Database name."
        },
        "mysqlTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:MysqlTable"
          },
          "description": "Tables in the database."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:MysqlDatabaseResponse": {
      "description": "MySQL database.",
      "properties": {
        "database": {
          "type": "string",
          "description": "Database name."
        },
        "mysqlTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:MysqlTableResponse"
          },
          "description": "Tables in the database."
        }
      },
      "type": "object",
      "required": [
        "database",
        "mysqlTables"
      ]
    },
    "google-native:datastream/v1:MysqlProfile": {
      "description": "MySQL database profile.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the MySQL connection."
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the MySQL connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the MySQL connection, default value is 3306."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlSslConfig",
          "description": "SSL configuration for the MySQL connection."
        },
        "username": {
          "type": "string",
          "description": "Username for the MySQL connection."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "password",
        "username"
      ]
    },
    "google-native:datastream/v1:MysqlProfileResponse": {
      "description": "MySQL database profile.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the MySQL connection."
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the MySQL connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the MySQL connection, default value is 3306."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlSslConfigResponse",
          "description": "SSL configuration for the MySQL connection."
        },
        "username": {
          "type": "string",
          "description": "Username for the MySQL connection."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "password",
        "port",
        "sslConfig",
        "username"
      ]
    },
    "google-native:datastream/v1:MysqlRdbms": {
      "description": "MySQL database structure",
      "properties": {
        "mysqlDatabases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:MysqlDatabase"
          },
          "description": "Mysql databases on the server"
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:MysqlRdbmsResponse": {
      "description": "MySQL database structure",
      "properties": {
        "mysqlDatabases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:MysqlDatabaseResponse"
          },
          "description": "Mysql databases on the server"
        }
      },
      "type": "object",
      "required": [
        "mysqlDatabases"
      ]
    },
    "google-native:datastream/v1:MysqlSourceConfig": {
      "description": "MySQL source configuration",
      "properties": {
        "excludeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlRdbms",
          "description": "MySQL objects to exclude from the stream."
        },
        "includeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlRdbms",
          "description": "MySQL objects to retrieve from the source."
        },
        "maxConcurrentBackfillTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used."
        },
        "maxConcurrentCdcTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent CDC tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:MysqlSourceConfigResponse": {
      "description": "MySQL source configuration",
      "properties": {
        "excludeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlRdbmsResponse",
          "description": "MySQL objects to exclude from the stream."
        },
        "includeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlRdbmsResponse",
          "description": "MySQL objects to retrieve from the source."
        },
        "maxConcurrentBackfillTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used."
        },
        "maxConcurrentCdcTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent CDC tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used."
        }
      },
      "type": "object",
      "required": [
        "excludeObjects",
        "includeObjects",
        "maxConcurrentBackfillTasks",
        "maxConcurrentCdcTasks"
      ]
    },
    "google-native:datastream/v1:MysqlSslConfig": {
      "description": "MySQL SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate of the CA that signed the source database server's certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the 'client_key' and the 'ca_certificate' fields are mandatory."
        },
        "clientKey": {
          "type": "string",
          "description": "Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' and the 'ca_certificate' fields are mandatory."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:MysqlSslConfigResponse": {
      "description": "MySQL SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate of the CA that signed the source database server's certificate."
        },
        "caCertificateSet": {
          "type": "boolean",
          "description": "Indicates whether the ca_certificate field is set."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the 'client_key' and the 'ca_certificate' fields are mandatory."
        },
        "clientCertificateSet": {
          "type": "boolean",
          "description": "Indicates whether the client_certificate field is set."
        },
        "clientKey": {
          "type": "string",
          "description": "Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' and the 'ca_certificate' fields are mandatory."
        },
        "clientKeySet": {
          "type": "boolean",
          "description": "Indicates whether the client_key field is set."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "caCertificateSet",
        "clientCertificate",
        "clientCertificateSet",
        "clientKey",
        "clientKeySet"
      ]
    },
    "google-native:datastream/v1:MysqlTable": {
      "description": "MySQL table.",
      "properties": {
        "mysqlColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:MysqlColumn"
          },
          "description": "MySQL columns in the database. When unspecified as part of include/exclude objects, includes/excludes everything."
        },
        "table": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:MysqlTableResponse": {
      "description": "MySQL table.",
      "properties": {
        "mysqlColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:MysqlColumnResponse"
          },
          "description": "MySQL columns in the database. When unspecified as part of include/exclude objects, includes/excludes everything."
        },
        "table": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object",
      "required": [
        "mysqlColumns",
        "table"
      ]
    },
    "google-native:datastream/v1:OracleColumn": {
      "description": "Oracle Column.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The Oracle data type."
        },
        "encoding": {
          "type": "string",
          "description": "Column encoding."
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "precision": {
          "type": "integer",
          "description": "Column precision."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "scale": {
          "type": "integer",
          "description": "Column scale."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:OracleColumnResponse": {
      "description": "Oracle Column.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The Oracle data type."
        },
        "encoding": {
          "type": "string",
          "description": "Column encoding."
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "precision": {
          "type": "integer",
          "description": "Column precision."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "scale": {
          "type": "integer",
          "description": "Column scale."
        }
      },
      "type": "object",
      "required": [
        "column",
        "dataType",
        "encoding",
        "length",
        "nullable",
        "ordinalPosition",
        "precision",
        "primaryKey",
        "scale"
      ]
    },
    "google-native:datastream/v1:OracleProfile": {
      "description": "Oracle database profile.",
      "properties": {
        "connectionAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Connection string attributes"
        },
        "databaseService": {
          "type": "string",
          "description": "Database for the Oracle connection."
        },
        "hostname": {
          "type": "string",
          "description": "Hostname for the Oracle connection."
        },
        "oracleSslConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleSslConfig",
          "description": "Optional. SSL configuration for the Oracle connection."
        },
        "password": {
          "type": "string",
          "description": "Password for the Oracle connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the Oracle connection, default value is 1521."
        },
        "username": {
          "type": "string",
          "description": "Username for the Oracle connection."
        }
      },
      "type": "object",
      "required": [
        "databaseService",
        "hostname",
        "password",
        "username"
      ]
    },
    "google-native:datastream/v1:OracleProfileResponse": {
      "description": "Oracle database profile.",
      "properties": {
        "connectionAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Connection string attributes"
        },
        "databaseService": {
          "type": "string",
          "description": "Database for the Oracle connection."
        },
        "hostname": {
          "type": "string",
          "description": "Hostname for the Oracle connection."
        },
        "oracleSslConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleSslConfigResponse",
          "description": "Optional. SSL configuration for the Oracle connection."
        },
        "password": {
          "type": "string",
          "description": "Password for the Oracle connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the Oracle connection, default value is 1521."
        },
        "username": {
          "type": "string",
          "description": "Username for the Oracle connection."
        }
      },
      "type": "object",
      "required": [
        "connectionAttributes",
        "databaseService",
        "hostname",
        "oracleSslConfig",
        "password",
        "port",
        "username"
      ]
    },
    "google-native:datastream/v1:OracleRdbms": {
      "description": "Oracle database structure.",
      "properties": {
        "oracleSchemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:OracleSchema"
          },
          "description": "Oracle schemas/databases in the database server."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:OracleRdbmsResponse": {
      "description": "Oracle database structure.",
      "properties": {
        "oracleSchemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:OracleSchemaResponse"
          },
          "description": "Oracle schemas/databases in the database server."
        }
      },
      "type": "object",
      "required": [
        "oracleSchemas"
      ]
    },
    "google-native:datastream/v1:OracleSchema": {
      "description": "Oracle schema.",
      "properties": {
        "oracleTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:OracleTable"
          },
          "description": "Tables in the schema."
        },
        "schema": {
          "type": "string",
          "description": "Schema name."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:OracleSchemaResponse": {
      "description": "Oracle schema.",
      "properties": {
        "oracleTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:OracleTableResponse"
          },
          "description": "Tables in the schema."
        },
        "schema": {
          "type": "string",
          "description": "Schema name."
        }
      },
      "type": "object",
      "required": [
        "oracleTables",
        "schema"
      ]
    },
    "google-native:datastream/v1:OracleSourceConfig": {
      "description": "Oracle data source configuration",
      "properties": {
        "dropLargeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:DropLargeObjects",
          "description": "Drop large object values."
        },
        "excludeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleRdbms",
          "description": "Oracle objects to exclude from the stream."
        },
        "includeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleRdbms",
          "description": "Oracle objects to include in the stream."
        },
        "maxConcurrentBackfillTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent backfill tasks. The number should be non-negative. If not set (or set to 0), the system's default value is used."
        },
        "maxConcurrentCdcTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent CDC tasks. The number should be non-negative. If not set (or set to 0), the system's default value is used."
        },
        "streamLargeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:StreamLargeObjects",
          "description": "Stream large object values. NOTE: This feature is currently experimental."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:OracleSourceConfigResponse": {
      "description": "Oracle data source configuration",
      "properties": {
        "dropLargeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:DropLargeObjectsResponse",
          "description": "Drop large object values."
        },
        "excludeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleRdbmsResponse",
          "description": "Oracle objects to exclude from the stream."
        },
        "includeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleRdbmsResponse",
          "description": "Oracle objects to include in the stream."
        },
        "maxConcurrentBackfillTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent backfill tasks. The number should be non-negative. If not set (or set to 0), the system's default value is used."
        },
        "maxConcurrentCdcTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent CDC tasks. The number should be non-negative. If not set (or set to 0), the system's default value is used."
        },
        "streamLargeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:StreamLargeObjectsResponse",
          "description": "Stream large object values. NOTE: This feature is currently experimental."
        }
      },
      "type": "object",
      "required": [
        "dropLargeObjects",
        "excludeObjects",
        "includeObjects",
        "maxConcurrentBackfillTasks",
        "maxConcurrentCdcTasks",
        "streamLargeObjects"
      ]
    },
    "google-native:datastream/v1:OracleSslConfig": {
      "description": "Oracle SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate of the CA that signed the source database server's certificate."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:OracleSslConfigResponse": {
      "description": "Oracle SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate of the CA that signed the source database server's certificate."
        },
        "caCertificateSet": {
          "type": "boolean",
          "description": "Indicates whether the ca_certificate field has been set for this Connection-Profile."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "caCertificateSet"
      ]
    },
    "google-native:datastream/v1:OracleTable": {
      "description": "Oracle table.",
      "properties": {
        "oracleColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:OracleColumn"
          },
          "description": "Oracle columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything."
        },
        "table": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:OracleTableResponse": {
      "description": "Oracle table.",
      "properties": {
        "oracleColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:OracleColumnResponse"
          },
          "description": "Oracle columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything."
        },
        "table": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object",
      "required": [
        "oracleColumns",
        "table"
      ]
    },
    "google-native:datastream/v1:PostgresqlColumn": {
      "description": "PostgreSQL Column.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The PostgreSQL data type."
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "precision": {
          "type": "integer",
          "description": "Column precision."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "scale": {
          "type": "integer",
          "description": "Column scale."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:PostgresqlColumnResponse": {
      "description": "PostgreSQL Column.",
      "properties": {
        "column": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The PostgreSQL data type."
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "precision": {
          "type": "integer",
          "description": "Column precision."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "scale": {
          "type": "integer",
          "description": "Column scale."
        }
      },
      "type": "object",
      "required": [
        "column",
        "dataType",
        "length",
        "nullable",
        "ordinalPosition",
        "precision",
        "primaryKey",
        "scale"
      ]
    },
    "google-native:datastream/v1:PostgresqlProfile": {
      "description": "PostgreSQL database profile.",
      "properties": {
        "database": {
          "type": "string",
          "description": "Database for the PostgreSQL connection."
        },
        "hostname": {
          "type": "string",
          "description": "Hostname for the PostgreSQL connection."
        },
        "password": {
          "type": "string",
          "description": "Password for the PostgreSQL connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the PostgreSQL connection, default value is 5432."
        },
        "username": {
          "type": "string",
          "description": "Username for the PostgreSQL connection."
        }
      },
      "type": "object",
      "required": [
        "database",
        "hostname",
        "password",
        "username"
      ]
    },
    "google-native:datastream/v1:PostgresqlProfileResponse": {
      "description": "PostgreSQL database profile.",
      "properties": {
        "database": {
          "type": "string",
          "description": "Database for the PostgreSQL connection."
        },
        "hostname": {
          "type": "string",
          "description": "Hostname for the PostgreSQL connection."
        },
        "password": {
          "type": "string",
          "description": "Password for the PostgreSQL connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the PostgreSQL connection, default value is 5432."
        },
        "username": {
          "type": "string",
          "description": "Username for the PostgreSQL connection."
        }
      },
      "type": "object",
      "required": [
        "database",
        "hostname",
        "password",
        "port",
        "username"
      ]
    },
    "google-native:datastream/v1:PostgresqlRdbms": {
      "description": "PostgreSQL database structure.",
      "properties": {
        "postgresqlSchemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlSchema"
          },
          "description": "PostgreSQL schemas in the database server."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:PostgresqlRdbmsResponse": {
      "description": "PostgreSQL database structure.",
      "properties": {
        "postgresqlSchemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlSchemaResponse"
          },
          "description": "PostgreSQL schemas in the database server."
        }
      },
      "type": "object",
      "required": [
        "postgresqlSchemas"
      ]
    },
    "google-native:datastream/v1:PostgresqlSchema": {
      "description": "PostgreSQL schema.",
      "properties": {
        "postgresqlTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlTable"
          },
          "description": "Tables in the schema."
        },
        "schema": {
          "type": "string",
          "description": "Schema name."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:PostgresqlSchemaResponse": {
      "description": "PostgreSQL schema.",
      "properties": {
        "postgresqlTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlTableResponse"
          },
          "description": "Tables in the schema."
        },
        "schema": {
          "type": "string",
          "description": "Schema name."
        }
      },
      "type": "object",
      "required": [
        "postgresqlTables",
        "schema"
      ]
    },
    "google-native:datastream/v1:PostgresqlSourceConfig": {
      "description": "PostgreSQL data source configuration",
      "properties": {
        "excludeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlRdbms",
          "description": "PostgreSQL objects to exclude from the stream."
        },
        "includeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlRdbms",
          "description": "PostgreSQL objects to include in the stream."
        },
        "maxConcurrentBackfillTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used."
        },
        "publication": {
          "type": "string",
          "description": "The name of the publication that includes the set of all tables that are defined in the stream's include_objects."
        },
        "replicationSlot": {
          "type": "string",
          "description": "Immutable. The name of the logical replication slot that's configured with the pgoutput plugin."
        }
      },
      "type": "object",
      "required": [
        "publication",
        "replicationSlot"
      ]
    },
    "google-native:datastream/v1:PostgresqlSourceConfigResponse": {
      "description": "PostgreSQL data source configuration",
      "properties": {
        "excludeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlRdbmsResponse",
          "description": "PostgreSQL objects to exclude from the stream."
        },
        "includeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlRdbmsResponse",
          "description": "PostgreSQL objects to include in the stream."
        },
        "maxConcurrentBackfillTasks": {
          "type": "integer",
          "description": "Maximum number of concurrent backfill tasks. The number should be non negative. If not set (or set to 0), the system's default value will be used."
        },
        "publication": {
          "type": "string",
          "description": "The name of the publication that includes the set of all tables that are defined in the stream's include_objects."
        },
        "replicationSlot": {
          "type": "string",
          "description": "Immutable. The name of the logical replication slot that's configured with the pgoutput plugin."
        }
      },
      "type": "object",
      "required": [
        "excludeObjects",
        "includeObjects",
        "maxConcurrentBackfillTasks",
        "publication",
        "replicationSlot"
      ]
    },
    "google-native:datastream/v1:PostgresqlTable": {
      "description": "PostgreSQL table.",
      "properties": {
        "postgresqlColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlColumn"
          },
          "description": "PostgreSQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything."
        },
        "table": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:PostgresqlTableResponse": {
      "description": "PostgreSQL table.",
      "properties": {
        "postgresqlColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlColumnResponse"
          },
          "description": "PostgreSQL columns in the schema. When unspecified as part of include/exclude objects, includes/excludes everything."
        },
        "table": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object",
      "required": [
        "postgresqlColumns",
        "table"
      ]
    },
    "google-native:datastream/v1:PrivateConnectivity": {
      "description": "Private Connectivity",
      "properties": {
        "privateConnection": {
          "type": "string",
          "description": "A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`"
        }
      },
      "type": "object",
      "required": [
        "privateConnection"
      ]
    },
    "google-native:datastream/v1:PrivateConnectivityResponse": {
      "description": "Private Connectivity",
      "properties": {
        "privateConnection": {
          "type": "string",
          "description": "A reference to a private connection resource. Format: `projects/{project}/locations/{location}/privateConnections/{name}`"
        }
      },
      "type": "object",
      "required": [
        "privateConnection"
      ]
    },
    "google-native:datastream/v1:SingleTargetDataset": {
      "description": "A single target dataset to which all data will be streamed.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The dataset ID of the target dataset. DatasetIds allowed characters: https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#datasetreference."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:SingleTargetDatasetResponse": {
      "description": "A single target dataset to which all data will be streamed.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The dataset ID of the target dataset. DatasetIds allowed characters: https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#datasetreference."
        }
      },
      "type": "object",
      "required": [
        "datasetId"
      ]
    },
    "google-native:datastream/v1:SourceConfig": {
      "description": "The configuration of the stream source.",
      "properties": {
        "mysqlSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlSourceConfig",
          "description": "MySQL data source configuration."
        },
        "oracleSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleSourceConfig",
          "description": "Oracle data source configuration."
        },
        "postgresqlSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlSourceConfig",
          "description": "PostgreSQL data source configuration."
        },
        "sourceConnectionProfile": {
          "type": "string",
          "description": "Source connection profile resoource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`"
        }
      },
      "type": "object",
      "required": [
        "sourceConnectionProfile"
      ]
    },
    "google-native:datastream/v1:SourceConfigResponse": {
      "description": "The configuration of the stream source.",
      "properties": {
        "mysqlSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlSourceConfigResponse",
          "description": "MySQL data source configuration."
        },
        "oracleSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleSourceConfigResponse",
          "description": "Oracle data source configuration."
        },
        "postgresqlSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlSourceConfigResponse",
          "description": "PostgreSQL data source configuration."
        },
        "sourceConnectionProfile": {
          "type": "string",
          "description": "Source connection profile resoource. Format: `projects/{project}/locations/{location}/connectionProfiles/{name}`"
        }
      },
      "type": "object",
      "required": [
        "mysqlSourceConfig",
        "oracleSourceConfig",
        "postgresqlSourceConfig",
        "sourceConnectionProfile"
      ]
    },
    "google-native:datastream/v1:SourceHierarchyDatasets": {
      "description": "Destination datasets are created so that hierarchy of the destination data objects matches the source hierarchy.",
      "properties": {
        "datasetTemplate": {
          "$ref": "#/types/google-native:datastream%2Fv1:DatasetTemplate",
          "description": "The dataset template to use for dynamic dataset creation."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1:SourceHierarchyDatasetsResponse": {
      "description": "Destination datasets are created so that hierarchy of the destination data objects matches the source hierarchy.",
      "properties": {
        "datasetTemplate": {
          "$ref": "#/types/google-native:datastream%2Fv1:DatasetTemplateResponse",
          "description": "The dataset template to use for dynamic dataset creation."
        }
      },
      "type": "object",
      "required": [
        "datasetTemplate"
      ]
    },
    "google-native:datastream/v1:StaticServiceIpConnectivity": {
      "description": "Static IP address connectivity. Used when the source database is configured to allow incoming connections from the Datastream public IP addresses for the region specified in the connection profile.",
      "type": "object"
    },
    "google-native:datastream/v1:StaticServiceIpConnectivityResponse": {
      "description": "Static IP address connectivity. Used when the source database is configured to allow incoming connections from the Datastream public IP addresses for the region specified in the connection profile.",
      "type": "object"
    },
    "google-native:datastream/v1:StreamLargeObjects": {
      "description": "Configuration to stream large object values.",
      "type": "object"
    },
    "google-native:datastream/v1:StreamLargeObjectsResponse": {
      "description": "Configuration to stream large object values.",
      "type": "object"
    },
    "google-native:datastream/v1:StreamState": {
      "description": "The state of the stream.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unspecified stream state.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "NotStarted",
          "description": "The stream has been created but has not yet started streaming data.",
          "value": "NOT_STARTED"
        },
        {
          "name": "Running",
          "description": "The stream is running.",
          "value": "RUNNING"
        },
        {
          "name": "Paused",
          "description": "The stream is paused.",
          "value": "PAUSED"
        },
        {
          "name": "Maintenance",
          "description": "The stream is in maintenance mode. Updates are rejected on the resource in this state.",
          "value": "MAINTENANCE"
        },
        {
          "name": "Failed",
          "description": "The stream is experiencing an error that is preventing data from being streamed.",
          "value": "FAILED"
        },
        {
          "name": "FailedPermanently",
          "description": "The stream has experienced a terminal failure.",
          "value": "FAILED_PERMANENTLY"
        },
        {
          "name": "Starting",
          "description": "The stream is starting, but not yet running.",
          "value": "STARTING"
        },
        {
          "name": "Draining",
          "description": "The Stream is no longer reading new events, but still writing events in the buffer.",
          "value": "DRAINING"
        }
      ]
    },
    "google-native:datastream/v1:VpcPeeringConfig": {
      "description": "The VPC Peering configuration is used to create VPC peering between Datastream and the consumer's VPC.",
      "properties": {
        "subnet": {
          "type": "string",
          "description": "A free subnet for peering. (CIDR of /29)"
        },
        "vpc": {
          "type": "string",
          "description": "Fully qualified name of the VPC that Datastream will peer to. Format: `projects/{project}/global/{networks}/{name}`"
        }
      },
      "type": "object",
      "required": [
        "subnet",
        "vpc"
      ]
    },
    "google-native:datastream/v1:VpcPeeringConfigResponse": {
      "description": "The VPC Peering configuration is used to create VPC peering between Datastream and the consumer's VPC.",
      "properties": {
        "subnet": {
          "type": "string",
          "description": "A free subnet for peering. (CIDR of /29)"
        },
        "vpc": {
          "type": "string",
          "description": "Fully qualified name of the VPC that Datastream will peer to. Format: `projects/{project}/global/{networks}/{name}`"
        }
      },
      "type": "object",
      "required": [
        "subnet",
        "vpc"
      ]
    },
    "google-native:datastream/v1alpha1:AvroFileFormat": {
      "description": "AVRO file format configuration.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:AvroFileFormatResponse": {
      "description": "AVRO file format configuration.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:BackfillAllStrategy": {
      "description": "Backfill strategy to automatically backfill the Stream's objects. Specific objects can be excluded.",
      "properties": {
        "mysqlExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlRdbms",
          "description": "MySQL data source objects to avoid backfilling."
        },
        "oracleExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleRdbms",
          "description": "Oracle data source objects to avoid backfilling."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:BackfillAllStrategyResponse": {
      "description": "Backfill strategy to automatically backfill the Stream's objects. Specific objects can be excluded.",
      "properties": {
        "mysqlExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlRdbmsResponse",
          "description": "MySQL data source objects to avoid backfilling."
        },
        "oracleExcludedObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleRdbmsResponse",
          "description": "Oracle data source objects to avoid backfilling."
        }
      },
      "type": "object",
      "required": [
        "mysqlExcludedObjects",
        "oracleExcludedObjects"
      ]
    },
    "google-native:datastream/v1alpha1:BackfillNoneStrategy": {
      "description": "Backfill strategy to disable automatic backfill for the Stream's objects.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:BackfillNoneStrategyResponse": {
      "description": "Backfill strategy to disable automatic backfill for the Stream's objects.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:DestinationConfig": {
      "description": "The configuration of the stream destination.",
      "properties": {
        "destinationConnectionProfileName": {
          "type": "string",
          "description": "Destination connection profile identifier."
        },
        "gcsDestinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:GcsDestinationConfig",
          "description": "GCS destination configuration."
        }
      },
      "type": "object",
      "required": [
        "destinationConnectionProfileName"
      ]
    },
    "google-native:datastream/v1alpha1:DestinationConfigResponse": {
      "description": "The configuration of the stream destination.",
      "properties": {
        "destinationConnectionProfileName": {
          "type": "string",
          "description": "Destination connection profile identifier."
        },
        "gcsDestinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:GcsDestinationConfigResponse",
          "description": "GCS destination configuration."
        }
      },
      "type": "object",
      "required": [
        "destinationConnectionProfileName",
        "gcsDestinationConfig"
      ]
    },
    "google-native:datastream/v1alpha1:DropLargeObjects": {
      "description": "Configuration to drop large object values.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:DropLargeObjectsResponse": {
      "description": "Configuration to drop large object values.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:ErrorResponse": {
      "description": "Represent a user-facing Error.",
      "properties": {
        "details": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional information about the error."
        },
        "errorTime": {
          "type": "string",
          "description": "The time when the error occurred."
        },
        "errorUuid": {
          "type": "string",
          "description": "A unique identifier for this specific error, allowing it to be traced throughout the system in logs and API responses."
        },
        "message": {
          "type": "string",
          "description": "A message containing more information about the error that occurred."
        },
        "reason": {
          "type": "string",
          "description": "A title that explains the reason for the error."
        }
      },
      "type": "object",
      "required": [
        "details",
        "errorTime",
        "errorUuid",
        "message",
        "reason"
      ]
    },
    "google-native:datastream/v1alpha1:ForwardSshTunnelConnectivity": {
      "description": "Forward SSH Tunnel connectivity.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the SSH tunnel."
        },
        "password": {
          "type": "string",
          "description": "Input only. SSH password."
        },
        "port": {
          "type": "integer",
          "description": "Port for the SSH tunnel, default value is 22."
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. SSH private key."
        },
        "username": {
          "type": "string",
          "description": "Username for the SSH tunnel."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "username"
      ]
    },
    "google-native:datastream/v1alpha1:ForwardSshTunnelConnectivityResponse": {
      "description": "Forward SSH Tunnel connectivity.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the SSH tunnel."
        },
        "password": {
          "type": "string",
          "description": "Input only. SSH password."
        },
        "port": {
          "type": "integer",
          "description": "Port for the SSH tunnel, default value is 22."
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. SSH private key."
        },
        "username": {
          "type": "string",
          "description": "Username for the SSH tunnel."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "password",
        "port",
        "privateKey",
        "username"
      ]
    },
    "google-native:datastream/v1alpha1:GcsDestinationConfig": {
      "description": "Google Cloud Storage destination configuration",
      "properties": {
        "avroFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:AvroFileFormat",
          "description": "AVRO file format configuration."
        },
        "fileRotationInterval": {
          "type": "string",
          "description": "The maximum duration for which new events are added before a file is closed and a new file is created."
        },
        "fileRotationMb": {
          "type": "integer",
          "description": "The maximum file size to be saved in the bucket."
        },
        "gcsFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:GcsDestinationConfigGcsFileFormat",
          "description": "File format that data should be written in. Deprecated field (b/169501737) - use file_format instead.",
          "deprecationMessage": "File format that data should be written in. Deprecated field (b/169501737) - use file_format instead."
        },
        "jsonFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:JsonFileFormat",
          "description": "JSON file format configuration."
        },
        "path": {
          "type": "string",
          "description": "Path inside the Cloud Storage bucket to write data to."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:GcsDestinationConfigGcsFileFormat": {
      "description": "File format that data should be written in. Deprecated field (b/169501737) - use file_format instead.",
      "type": "string",
      "enum": [
        {
          "name": "GcsFileFormatUnspecified",
          "description": "Unspecified Cloud Storage file format.",
          "value": "GCS_FILE_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Avro",
          "description": "Avro file format",
          "value": "AVRO"
        }
      ]
    },
    "google-native:datastream/v1alpha1:GcsDestinationConfigResponse": {
      "description": "Google Cloud Storage destination configuration",
      "properties": {
        "avroFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:AvroFileFormatResponse",
          "description": "AVRO file format configuration."
        },
        "fileRotationInterval": {
          "type": "string",
          "description": "The maximum duration for which new events are added before a file is closed and a new file is created."
        },
        "fileRotationMb": {
          "type": "integer",
          "description": "The maximum file size to be saved in the bucket."
        },
        "gcsFileFormat": {
          "type": "string",
          "description": "File format that data should be written in. Deprecated field (b/169501737) - use file_format instead.",
          "deprecationMessage": "File format that data should be written in. Deprecated field (b/169501737) - use file_format instead."
        },
        "jsonFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:JsonFileFormatResponse",
          "description": "JSON file format configuration."
        },
        "path": {
          "type": "string",
          "description": "Path inside the Cloud Storage bucket to write data to."
        }
      },
      "type": "object",
      "required": [
        "avroFileFormat",
        "fileRotationInterval",
        "fileRotationMb",
        "gcsFileFormat",
        "jsonFileFormat",
        "path"
      ]
    },
    "google-native:datastream/v1alpha1:GcsProfile": {
      "description": "Cloud Storage bucket profile.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "The full project and resource path for Cloud Storage bucket including the name."
        },
        "rootPath": {
          "type": "string",
          "description": "The root path inside the Cloud Storage bucket."
        }
      },
      "type": "object",
      "required": [
        "bucketName"
      ]
    },
    "google-native:datastream/v1alpha1:GcsProfileResponse": {
      "description": "Cloud Storage bucket profile.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "The full project and resource path for Cloud Storage bucket including the name."
        },
        "rootPath": {
          "type": "string",
          "description": "The root path inside the Cloud Storage bucket."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "rootPath"
      ]
    },
    "google-native:datastream/v1alpha1:JsonFileFormat": {
      "description": "JSON file format configuration.",
      "properties": {
        "compression": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:JsonFileFormatCompression",
          "description": "Compression of the loaded JSON file."
        },
        "schemaFileFormat": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:JsonFileFormatSchemaFileFormat",
          "description": "The schema file format along JSON data files."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:JsonFileFormatCompression": {
      "description": "Compression of the loaded JSON file.",
      "type": "string",
      "enum": [
        {
          "name": "JsonCompressionUnspecified",
          "description": "Unspecified json file compression.",
          "value": "JSON_COMPRESSION_UNSPECIFIED"
        },
        {
          "name": "NoCompression",
          "description": "Do not compress JSON file.",
          "value": "NO_COMPRESSION"
        },
        {
          "name": "Gzip",
          "description": "Gzip compression.",
          "value": "GZIP"
        }
      ]
    },
    "google-native:datastream/v1alpha1:JsonFileFormatResponse": {
      "description": "JSON file format configuration.",
      "properties": {
        "compression": {
          "type": "string",
          "description": "Compression of the loaded JSON file."
        },
        "schemaFileFormat": {
          "type": "string",
          "description": "The schema file format along JSON data files."
        }
      },
      "type": "object",
      "required": [
        "compression",
        "schemaFileFormat"
      ]
    },
    "google-native:datastream/v1alpha1:JsonFileFormatSchemaFileFormat": {
      "description": "The schema file format along JSON data files.",
      "type": "string",
      "enum": [
        {
          "name": "SchemaFileFormatUnspecified",
          "description": "Unspecified schema file format.",
          "value": "SCHEMA_FILE_FORMAT_UNSPECIFIED"
        },
        {
          "name": "NoSchemaFile",
          "description": "Do not attach schema file.",
          "value": "NO_SCHEMA_FILE"
        },
        {
          "name": "AvroSchemaFile",
          "description": "Avro schema format.",
          "value": "AVRO_SCHEMA_FILE"
        }
      ]
    },
    "google-native:datastream/v1alpha1:MysqlColumn": {
      "description": "MySQL Column.",
      "properties": {
        "collation": {
          "type": "string",
          "description": "Column collation."
        },
        "columnName": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html"
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:MysqlColumnResponse": {
      "description": "MySQL Column.",
      "properties": {
        "collation": {
          "type": "string",
          "description": "Column collation."
        },
        "columnName": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The MySQL data type. Full data types list can be found here: https://dev.mysql.com/doc/refman/8.0/en/data-types.html"
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        }
      },
      "type": "object",
      "required": [
        "collation",
        "columnName",
        "dataType",
        "length",
        "nullable",
        "ordinalPosition",
        "primaryKey"
      ]
    },
    "google-native:datastream/v1alpha1:MysqlDatabase": {
      "description": "MySQL database.",
      "properties": {
        "databaseName": {
          "type": "string",
          "description": "Database name."
        },
        "mysqlTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlTable"
          },
          "description": "Tables in the database."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:MysqlDatabaseResponse": {
      "description": "MySQL database.",
      "properties": {
        "databaseName": {
          "type": "string",
          "description": "Database name."
        },
        "mysqlTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlTableResponse"
          },
          "description": "Tables in the database."
        }
      },
      "type": "object",
      "required": [
        "databaseName",
        "mysqlTables"
      ]
    },
    "google-native:datastream/v1alpha1:MysqlProfile": {
      "description": "MySQL database profile.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the MySQL connection."
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the MySQL connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the MySQL connection, default value is 3306."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlSslConfig",
          "description": "SSL configuration for the MySQL connection."
        },
        "username": {
          "type": "string",
          "description": "Username for the MySQL connection."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "password",
        "username"
      ]
    },
    "google-native:datastream/v1alpha1:MysqlProfileResponse": {
      "description": "MySQL database profile.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname for the MySQL connection."
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the MySQL connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the MySQL connection, default value is 3306."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlSslConfigResponse",
          "description": "SSL configuration for the MySQL connection."
        },
        "username": {
          "type": "string",
          "description": "Username for the MySQL connection."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "password",
        "port",
        "sslConfig",
        "username"
      ]
    },
    "google-native:datastream/v1alpha1:MysqlRdbms": {
      "description": "MySQL database structure",
      "properties": {
        "mysqlDatabases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlDatabase"
          },
          "description": "Mysql databases on the server"
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:MysqlRdbmsResponse": {
      "description": "MySQL database structure",
      "properties": {
        "mysqlDatabases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlDatabaseResponse"
          },
          "description": "Mysql databases on the server"
        }
      },
      "type": "object",
      "required": [
        "mysqlDatabases"
      ]
    },
    "google-native:datastream/v1alpha1:MysqlSourceConfig": {
      "description": "MySQL source configuration",
      "properties": {
        "allowlist": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlRdbms",
          "description": "MySQL objects to retrieve from the source."
        },
        "rejectlist": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlRdbms",
          "description": "MySQL objects to exclude from the stream."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:MysqlSourceConfigResponse": {
      "description": "MySQL source configuration",
      "properties": {
        "allowlist": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlRdbmsResponse",
          "description": "MySQL objects to retrieve from the source."
        },
        "rejectlist": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlRdbmsResponse",
          "description": "MySQL objects to exclude from the stream."
        }
      },
      "type": "object",
      "required": [
        "allowlist",
        "rejectlist"
      ]
    },
    "google-native:datastream/v1alpha1:MysqlSslConfig": {
      "description": "MySQL SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate of the CA that signed the source database server's certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the 'client_key' and the 'ca_certificate' fields are mandatory."
        },
        "clientKey": {
          "type": "string",
          "description": "Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' and the 'ca_certificate' fields are mandatory."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:MysqlSslConfigResponse": {
      "description": "MySQL SSL configuration information.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate of the CA that signed the source database server's certificate."
        },
        "caCertificateSet": {
          "type": "boolean",
          "description": "Indicates whether the ca_certificate field is set."
        },
        "clientCertificate": {
          "type": "string",
          "description": "Input only. PEM-encoded certificate that will be used by the replica to authenticate against the source database server. If this field is used then the 'client_key' and the 'ca_certificate' fields are mandatory."
        },
        "clientCertificateSet": {
          "type": "boolean",
          "description": "Indicates whether the client_certificate field is set."
        },
        "clientKey": {
          "type": "string",
          "description": "Input only. PEM-encoded private key associated with the Client Certificate. If this field is used then the 'client_certificate' and the 'ca_certificate' fields are mandatory."
        },
        "clientKeySet": {
          "type": "boolean",
          "description": "Indicates whether the client_key field is set."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "caCertificateSet",
        "clientCertificate",
        "clientCertificateSet",
        "clientKey",
        "clientKeySet"
      ]
    },
    "google-native:datastream/v1alpha1:MysqlTable": {
      "description": "MySQL table.",
      "properties": {
        "mysqlColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlColumn"
          },
          "description": "MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything."
        },
        "tableName": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:MysqlTableResponse": {
      "description": "MySQL table.",
      "properties": {
        "mysqlColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlColumnResponse"
          },
          "description": "MySQL columns in the database. When unspecified as part of include/exclude lists, includes/excludes everything."
        },
        "tableName": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object",
      "required": [
        "mysqlColumns",
        "tableName"
      ]
    },
    "google-native:datastream/v1alpha1:NoConnectivitySettings": {
      "description": "No connectivity settings.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:NoConnectivitySettingsResponse": {
      "description": "No connectivity settings.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:OracleColumn": {
      "description": "Oracle Column.",
      "properties": {
        "columnName": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The Oracle data type."
        },
        "encoding": {
          "type": "string",
          "description": "Column encoding."
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "precision": {
          "type": "integer",
          "description": "Column precision."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "scale": {
          "type": "integer",
          "description": "Column scale."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:OracleColumnResponse": {
      "description": "Oracle Column.",
      "properties": {
        "columnName": {
          "type": "string",
          "description": "Column name."
        },
        "dataType": {
          "type": "string",
          "description": "The Oracle data type."
        },
        "encoding": {
          "type": "string",
          "description": "Column encoding."
        },
        "length": {
          "type": "integer",
          "description": "Column length."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether or not the column can accept a null value."
        },
        "ordinalPosition": {
          "type": "integer",
          "description": "The ordinal position of the column in the table."
        },
        "precision": {
          "type": "integer",
          "description": "Column precision."
        },
        "primaryKey": {
          "type": "boolean",
          "description": "Whether or not the column represents a primary key."
        },
        "scale": {
          "type": "integer",
          "description": "Column scale."
        }
      },
      "type": "object",
      "required": [
        "columnName",
        "dataType",
        "encoding",
        "length",
        "nullable",
        "ordinalPosition",
        "precision",
        "primaryKey",
        "scale"
      ]
    },
    "google-native:datastream/v1alpha1:OracleProfile": {
      "description": "Oracle database profile.",
      "properties": {
        "connectionAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Connection string attributes"
        },
        "databaseService": {
          "type": "string",
          "description": "Database for the Oracle connection."
        },
        "hostname": {
          "type": "string",
          "description": "Hostname for the Oracle connection."
        },
        "password": {
          "type": "string",
          "description": "Password for the Oracle connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the Oracle connection, default value is 1521."
        },
        "username": {
          "type": "string",
          "description": "Username for the Oracle connection."
        }
      },
      "type": "object",
      "required": [
        "databaseService",
        "hostname",
        "password",
        "username"
      ]
    },
    "google-native:datastream/v1alpha1:OracleProfileResponse": {
      "description": "Oracle database profile.",
      "properties": {
        "connectionAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Connection string attributes"
        },
        "databaseService": {
          "type": "string",
          "description": "Database for the Oracle connection."
        },
        "hostname": {
          "type": "string",
          "description": "Hostname for the Oracle connection."
        },
        "password": {
          "type": "string",
          "description": "Password for the Oracle connection."
        },
        "port": {
          "type": "integer",
          "description": "Port for the Oracle connection, default value is 1521."
        },
        "username": {
          "type": "string",
          "description": "Username for the Oracle connection."
        }
      },
      "type": "object",
      "required": [
        "connectionAttributes",
        "databaseService",
        "hostname",
        "password",
        "port",
        "username"
      ]
    },
    "google-native:datastream/v1alpha1:OracleRdbms": {
      "description": "Oracle database structure.",
      "properties": {
        "oracleSchemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleSchema"
          },
          "description": "Oracle schemas/databases in the database server."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:OracleRdbmsResponse": {
      "description": "Oracle database structure.",
      "properties": {
        "oracleSchemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleSchemaResponse"
          },
          "description": "Oracle schemas/databases in the database server."
        }
      },
      "type": "object",
      "required": [
        "oracleSchemas"
      ]
    },
    "google-native:datastream/v1alpha1:OracleSchema": {
      "description": "Oracle schema.",
      "properties": {
        "oracleTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleTable"
          },
          "description": "Tables in the schema."
        },
        "schemaName": {
          "type": "string",
          "description": "Schema name."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:OracleSchemaResponse": {
      "description": "Oracle schema.",
      "properties": {
        "oracleTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleTableResponse"
          },
          "description": "Tables in the schema."
        },
        "schemaName": {
          "type": "string",
          "description": "Schema name."
        }
      },
      "type": "object",
      "required": [
        "oracleTables",
        "schemaName"
      ]
    },
    "google-native:datastream/v1alpha1:OracleSourceConfig": {
      "description": "Oracle data source configuration",
      "properties": {
        "allowlist": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleRdbms",
          "description": "Oracle objects to include in the stream."
        },
        "dropLargeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:DropLargeObjects",
          "description": "Drop large object values."
        },
        "rejectlist": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleRdbms",
          "description": "Oracle objects to exclude from the stream."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:OracleSourceConfigResponse": {
      "description": "Oracle data source configuration",
      "properties": {
        "allowlist": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleRdbmsResponse",
          "description": "Oracle objects to include in the stream."
        },
        "dropLargeObjects": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:DropLargeObjectsResponse",
          "description": "Drop large object values."
        },
        "rejectlist": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleRdbmsResponse",
          "description": "Oracle objects to exclude from the stream."
        }
      },
      "type": "object",
      "required": [
        "allowlist",
        "dropLargeObjects",
        "rejectlist"
      ]
    },
    "google-native:datastream/v1alpha1:OracleTable": {
      "description": "Oracle table.",
      "properties": {
        "oracleColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleColumn"
          },
          "description": "Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything."
        },
        "tableName": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:OracleTableResponse": {
      "description": "Oracle table.",
      "properties": {
        "oracleColumns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleColumnResponse"
          },
          "description": "Oracle columns in the schema. When unspecified as part of inclue/exclude lists, includes/excludes everything."
        },
        "tableName": {
          "type": "string",
          "description": "Table name."
        }
      },
      "type": "object",
      "required": [
        "oracleColumns",
        "tableName"
      ]
    },
    "google-native:datastream/v1alpha1:PrivateConnectivity": {
      "description": "Private Connectivity",
      "properties": {
        "privateConnectionName": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:datastream/v1alpha1:PrivateConnectivityResponse": {
      "description": "Private Connectivity",
      "properties": {
        "privateConnectionName": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "privateConnectionName"
      ]
    },
    "google-native:datastream/v1alpha1:SourceConfig": {
      "description": "The configuration of the stream source.",
      "properties": {
        "mysqlSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlSourceConfig",
          "description": "MySQL data source configuration"
        },
        "oracleSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleSourceConfig",
          "description": "Oracle data source configuration"
        },
        "sourceConnectionProfileName": {
          "type": "string",
          "description": "Source connection profile identifier."
        }
      },
      "type": "object",
      "required": [
        "sourceConnectionProfileName"
      ]
    },
    "google-native:datastream/v1alpha1:SourceConfigResponse": {
      "description": "The configuration of the stream source.",
      "properties": {
        "mysqlSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlSourceConfigResponse",
          "description": "MySQL data source configuration"
        },
        "oracleSourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleSourceConfigResponse",
          "description": "Oracle data source configuration"
        },
        "sourceConnectionProfileName": {
          "type": "string",
          "description": "Source connection profile identifier."
        }
      },
      "type": "object",
      "required": [
        "mysqlSourceConfig",
        "oracleSourceConfig",
        "sourceConnectionProfileName"
      ]
    },
    "google-native:datastream/v1alpha1:StaticServiceIpConnectivity": {
      "description": "Static IP address connectivity.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:StaticServiceIpConnectivityResponse": {
      "description": "Static IP address connectivity.",
      "type": "object"
    },
    "google-native:datastream/v1alpha1:StreamState": {
      "description": "The state of the stream.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unspecified stream state.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Created",
          "description": "The stream has been created.",
          "value": "CREATED"
        },
        {
          "name": "Running",
          "description": "The stream is running.",
          "value": "RUNNING"
        },
        {
          "name": "Paused",
          "description": "The stream is paused.",
          "value": "PAUSED"
        },
        {
          "name": "Maintenance",
          "description": "The stream is in maintenance mode. Updates are rejected on the resource in this state.",
          "value": "MAINTENANCE"
        },
        {
          "name": "Failed",
          "description": "The stream is experiencing an error that is preventing data from being streamed.",
          "value": "FAILED"
        },
        {
          "name": "FailedPermanently",
          "description": "The stream has experienced a terminal failure.",
          "value": "FAILED_PERMANENTLY"
        },
        {
          "name": "Starting",
          "description": "The stream is starting, but not yet running.",
          "value": "STARTING"
        },
        {
          "name": "Draining",
          "description": "The Stream is no longer reading new events, but still writing events in the buffer.",
          "value": "DRAINING"
        }
      ]
    },
    "google-native:datastream/v1alpha1:VpcPeeringConfig": {
      "description": "The VPC Peering configuration is used to create VPC peering between Datastream and the consumer's VPC.",
      "properties": {
        "subnet": {
          "type": "string",
          "description": "A free subnet for peering. (CIDR of /29)"
        },
        "vpcName": {
          "type": "string",
          "description": "fully qualified name of the VPC Datastream will peer to."
        }
      },
      "type": "object",
      "required": [
        "subnet",
        "vpcName"
      ]
    },
    "google-native:datastream/v1alpha1:VpcPeeringConfigResponse": {
      "description": "The VPC Peering configuration is used to create VPC peering between Datastream and the consumer's VPC.",
      "properties": {
        "subnet": {
          "type": "string",
          "description": "A free subnet for peering. (CIDR of /29)"
        },
        "vpcName": {
          "type": "string",
          "description": "fully qualified name of the VPC Datastream will peer to."
        }
      },
      "type": "object",
      "required": [
        "subnet",
        "vpcName"
      ]
    },
    "google-native:deploymentmanager/alpha:AsyncOptions": {
      "description": "Async options that determine when a resource should finish.",
      "properties": {
        "methodMatch": {
          "type": "string",
          "description": "Method regex where this policy will apply."
        },
        "pollingOptions": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:PollingOptions",
          "description": "Deployment manager will poll instances for this API resource setting a RUNNING state, and blocking until polling conditions tell whether the resource is completed or failed."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:AsyncOptionsResponse": {
      "description": "Async options that determine when a resource should finish.",
      "properties": {
        "methodMatch": {
          "type": "string",
          "description": "Method regex where this policy will apply."
        },
        "pollingOptions": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:PollingOptionsResponse",
          "description": "Deployment manager will poll instances for this API resource setting a RUNNING state, and blocking until polling conditions tell whether the resource is completed or failed."
        }
      },
      "type": "object",
      "required": [
        "methodMatch",
        "pollingOptions"
      ]
    },
    "google-native:deploymentmanager/alpha:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:deploymentmanager/alpha:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:deploymentmanager/alpha:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:deploymentmanager/alpha:BasicAuth": {
      "description": "Basic Auth used as a credential.",
      "properties": {
        "password": {
          "type": "string"
        },
        "user": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:BasicAuthResponse": {
      "description": "Basic Auth used as a credential.",
      "properties": {
        "password": {
          "type": "string"
        },
        "user": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "password",
        "user"
      ]
    },
    "google-native:deploymentmanager/alpha:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:deploymentmanager/alpha:CollectionOverride": {
      "description": "CollectionOverride allows resource handling overrides for specific resources within a BaseType",
      "properties": {
        "collection": {
          "type": "string",
          "description": "The collection that identifies this resource within its service."
        },
        "methodMap": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:MethodMap",
          "description": "Custom verb method mappings to support unordered list API mappings."
        },
        "options": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:Options",
          "description": "The options to apply to this resource-level override"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:CollectionOverrideResponse": {
      "description": "CollectionOverride allows resource handling overrides for specific resources within a BaseType",
      "properties": {
        "collection": {
          "type": "string",
          "description": "The collection that identifies this resource within its service."
        },
        "methodMap": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:MethodMapResponse",
          "description": "Custom verb method mappings to support unordered list API mappings."
        },
        "options": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:OptionsResponse",
          "description": "The options to apply to this resource-level override"
        }
      },
      "type": "object",
      "required": [
        "collection",
        "methodMap",
        "options"
      ]
    },
    "google-native:deploymentmanager/alpha:CompositeTypeLabelEntry": {
      "description": "Label object for CompositeTypes",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:CompositeTypeLabelEntryResponse": {
      "description": "Label object for CompositeTypes",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/alpha:CompositeTypeStatus": {
      "type": "string",
      "enum": [
        {
          "name": "UnknownStatus",
          "value": "UNKNOWN_STATUS"
        },
        {
          "name": "Deprecated",
          "value": "DEPRECATED"
        },
        {
          "name": "Experimental",
          "value": "EXPERIMENTAL"
        },
        {
          "name": "Supported",
          "value": "SUPPORTED"
        }
      ]
    },
    "google-native:deploymentmanager/alpha:ConfigFile": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:ConfigFileResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        }
      },
      "type": "object",
      "required": [
        "content"
      ]
    },
    "google-native:deploymentmanager/alpha:Credential": {
      "description": "The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted.",
      "properties": {
        "basicAuth": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:BasicAuth",
          "description": "Basic Auth Credential, only used by TypeProvider."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ServiceAccount",
          "description": "Service Account Credential, only used by Deployment."
        },
        "useProjectDefault": {
          "type": "boolean",
          "description": "Specify to use the project default credential, only supported by Deployment."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:CredentialResponse": {
      "description": "The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted.",
      "properties": {
        "basicAuth": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:BasicAuthResponse",
          "description": "Basic Auth Credential, only used by TypeProvider."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ServiceAccountResponse",
          "description": "Service Account Credential, only used by Deployment."
        },
        "useProjectDefault": {
          "type": "boolean",
          "description": "Specify to use the project default credential, only supported by Deployment."
        }
      },
      "type": "object",
      "required": [
        "basicAuth",
        "serviceAccount",
        "useProjectDefault"
      ]
    },
    "google-native:deploymentmanager/alpha:DeploymentLabelEntry": {
      "description": "Label object for Deployments",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:DeploymentLabelEntryResponse": {
      "description": "Label object for Deployments",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/alpha:DeploymentOutputEntryResponse": {
      "description": "Output object for Deployments",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the output"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/alpha:DeploymentUpdateLabelEntryResponse": {
      "description": "Label object for DeploymentUpdate",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/alpha:DeploymentUpdateResponse": {
      "properties": {
        "credential": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:CredentialResponse",
          "description": "The user-provided default credential to use when deploying this preview."
        },
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment after the current update has been applied."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:DeploymentUpdateLabelEntryResponse"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "manifest": {
          "type": "string",
          "description": "URL of the manifest representing the update configuration of this deployment."
        }
      },
      "type": "object",
      "required": [
        "credential",
        "description",
        "labels",
        "manifest"
      ]
    },
    "google-native:deploymentmanager/alpha:Diagnostic": {
      "properties": {
        "field": {
          "type": "string",
          "description": "JsonPath expression on the resource that if non empty, indicates that this field needs to be extracted as a diagnostic."
        },
        "level": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:DiagnosticLevel",
          "description": "Level to record this diagnostic."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:DiagnosticLevel": {
      "description": "Level to record this diagnostic.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Information",
          "description": "If level is informational, it only gets displayed as part of the resource.",
          "value": "INFORMATION"
        },
        {
          "name": "Warning",
          "description": "If level is warning, will end up in the resource as a warning.",
          "value": "WARNING"
        },
        {
          "name": "Error",
          "description": "If level is error, it will indicate an error occurred after finishCondition is set, and this field will populate resource errors and operation errors.",
          "value": "ERROR"
        }
      ]
    },
    "google-native:deploymentmanager/alpha:DiagnosticResponse": {
      "properties": {
        "field": {
          "type": "string",
          "description": "JsonPath expression on the resource that if non empty, indicates that this field needs to be extracted as a diagnostic."
        },
        "level": {
          "type": "string",
          "description": "Level to record this diagnostic."
        }
      },
      "type": "object",
      "required": [
        "field",
        "level"
      ]
    },
    "google-native:deploymentmanager/alpha:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:deploymentmanager/alpha:ImportFile": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        },
        "name": {
          "type": "string",
          "description": "The name of the file."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:ImportFileResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        },
        "name": {
          "type": "string",
          "description": "The name of the file."
        }
      },
      "type": "object",
      "required": [
        "content",
        "name"
      ]
    },
    "google-native:deploymentmanager/alpha:InputMapping": {
      "description": "InputMapping creates a 'virtual' property that will be injected into the properties before sending the request to the underlying API.",
      "properties": {
        "fieldName": {
          "type": "string",
          "description": "The name of the field that is going to be injected."
        },
        "location": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:InputMappingLocation",
          "description": "The location where this mapping applies."
        },
        "methodMatch": {
          "type": "string",
          "description": "Regex to evaluate on method to decide if input applies."
        },
        "value": {
          "type": "string",
          "description": "A jsonPath expression to select an element."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:InputMappingLocation": {
      "description": "The location where this mapping applies.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Path",
          "value": "PATH"
        },
        {
          "name": "Query",
          "value": "QUERY"
        },
        {
          "name": "Body",
          "value": "BODY"
        },
        {
          "name": "Header",
          "value": "HEADER"
        }
      ]
    },
    "google-native:deploymentmanager/alpha:InputMappingResponse": {
      "description": "InputMapping creates a 'virtual' property that will be injected into the properties before sending the request to the underlying API.",
      "properties": {
        "fieldName": {
          "type": "string",
          "description": "The name of the field that is going to be injected."
        },
        "location": {
          "type": "string",
          "description": "The location where this mapping applies."
        },
        "methodMatch": {
          "type": "string",
          "description": "Regex to evaluate on method to decide if input applies."
        },
        "value": {
          "type": "string",
          "description": "A jsonPath expression to select an element."
        }
      },
      "type": "object",
      "required": [
        "fieldName",
        "location",
        "methodMatch",
        "value"
      ]
    },
    "google-native:deploymentmanager/alpha:InstancesBulkInsertOperationMetadataResponse": {
      "properties": {
        "perLocationStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information per location (location name is key). Example key: zones/us-central1-a"
        }
      },
      "type": "object",
      "required": [
        "perLocationStatus"
      ]
    },
    "google-native:deploymentmanager/alpha:MethodMap": {
      "description": "Deployment Manager will call these methods during the events of creation/deletion/update/get/setIamPolicy",
      "properties": {
        "create": {
          "type": "string",
          "description": "The action identifier for the create method to be used for this collection"
        },
        "delete": {
          "type": "string",
          "description": "The action identifier for the delete method to be used for this collection"
        },
        "get": {
          "type": "string",
          "description": "The action identifier for the get method to be used for this collection"
        },
        "setIamPolicy": {
          "type": "string",
          "description": "The action identifier for the setIamPolicy method to be used for this collection"
        },
        "update": {
          "type": "string",
          "description": "The action identifier for the update method to be used for this collection"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:MethodMapResponse": {
      "description": "Deployment Manager will call these methods during the events of creation/deletion/update/get/setIamPolicy",
      "properties": {
        "create": {
          "type": "string",
          "description": "The action identifier for the create method to be used for this collection"
        },
        "delete": {
          "type": "string",
          "description": "The action identifier for the delete method to be used for this collection"
        },
        "get": {
          "type": "string",
          "description": "The action identifier for the get method to be used for this collection"
        },
        "setIamPolicy": {
          "type": "string",
          "description": "The action identifier for the setIamPolicy method to be used for this collection"
        },
        "update": {
          "type": "string",
          "description": "The action identifier for the update method to be used for this collection"
        }
      },
      "type": "object",
      "required": [
        "create",
        "delete",
        "get",
        "setIamPolicy",
        "update"
      ]
    },
    "google-native:deploymentmanager/alpha:OperationErrorErrorsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "The error type identifier for this error."
        },
        "location": {
          "type": "string",
          "description": "Indicates the field in the request that caused the error. This property is optional."
        },
        "message": {
          "type": "string",
          "description": "An optional, human-readable error message."
        }
      },
      "type": "object",
      "required": [
        "code",
        "location",
        "message"
      ]
    },
    "google-native:deploymentmanager/alpha:OperationErrorResponse": {
      "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationErrorErrorsItemResponse"
          },
          "description": "The array of errors encountered while processing this operation."
        }
      },
      "type": "object",
      "required": [
        "errors"
      ]
    },
    "google-native:deploymentmanager/alpha:OperationResponse": {
      "description": "Represents an Operation resource. Google Compute Engine has three Operation resources: * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations) You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses. Operations can be global, regional or zonal. - For global operations, use the `globalOperations` resource. - For regional operations, use the `regionOperations` resource. - For zonal operations, use the `zoneOperations` resource. For more information, read Global, Regional, and Zonal Resources.",
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "The value of `requestId` if you provided it in the request. Not present otherwise."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated.",
          "deprecationMessage": "[Deprecated] This field is deprecated."
        },
        "description": {
          "type": "string",
          "description": "A textual description of the operation, which is set when the operation is created."
        },
        "endTime": {
          "type": "string",
          "description": "The time that this operation was completed. This value is in RFC3339 text format."
        },
        "error": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationErrorResponse",
          "description": "If errors are generated during processing of the operation, this field will be populated."
        },
        "httpErrorMessage": {
          "type": "string",
          "description": "If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`."
        },
        "httpErrorStatusCode": {
          "type": "integer",
          "description": "If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found."
        },
        "insertTime": {
          "type": "string",
          "description": "The time that this operation was requested. This value is in RFC3339 text format."
        },
        "instancesBulkInsertOperationMetadata": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:InstancesBulkInsertOperationMetadataResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always `compute#operation` for Operation resources."
        },
        "name": {
          "type": "string",
          "description": "Name of the operation."
        },
        "operationGroupId": {
          "type": "string",
          "description": "An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request."
        },
        "operationType": {
          "type": "string",
          "description": "The type of operation, such as `insert`, `update`, or `delete`, and so on."
        },
        "progress": {
          "type": "integer",
          "description": "An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses."
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the operation resides. Only applicable when performing regional operations."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "setCommonInstanceMetadataOperationMetadata": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:SetCommonInstanceMetadataOperationMetadataResponse",
          "description": "If the operation is for projects.setCommonInstanceMetadata, this field will contain information on all underlying zonal actions and their state."
        },
        "startTime": {
          "type": "string",
          "description": "The time that this operation was started by the server. This value is in RFC3339 text format."
        },
        "status": {
          "type": "string",
          "description": "The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional textual description of the current status of the operation."
        },
        "targetId": {
          "type": "string",
          "description": "The unique target ID, which identifies a specific incarnation of the target resource."
        },
        "targetLink": {
          "type": "string",
          "description": "The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from."
        },
        "user": {
          "type": "string",
          "description": "User who requested the operation, for example: `user@example.com` or `alice_smith_identifier (global/workforcePools/example-com-us-employees)`."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationWarningsItemResponse"
          },
          "description": "If warning messages are generated during processing of the operation, this field will be populated."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the operation resides. Only applicable when performing per-zone operations."
        }
      },
      "type": "object",
      "required": [
        "clientOperationId",
        "creationTimestamp",
        "description",
        "endTime",
        "error",
        "httpErrorMessage",
        "httpErrorStatusCode",
        "insertTime",
        "instancesBulkInsertOperationMetadata",
        "kind",
        "name",
        "operationGroupId",
        "operationType",
        "progress",
        "region",
        "selfLink",
        "setCommonInstanceMetadataOperationMetadata",
        "startTime",
        "status",
        "statusMessage",
        "targetId",
        "targetLink",
        "user",
        "warnings",
        "zone"
      ]
    },
    "google-native:deploymentmanager/alpha:OperationWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/alpha:OperationWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:deploymentmanager/alpha:Options": {
      "description": "Options allows customized resource handling by Deployment Manager.",
      "properties": {
        "asyncOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:AsyncOptions"
          },
          "description": "Options regarding how to thread async requests."
        },
        "inputMappings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:InputMapping"
          },
          "description": "The mappings that apply for requests."
        },
        "nameProperty": {
          "type": "string",
          "description": "The json path to the field in the resource JSON body into which the resource name should be mapped. Leaving this empty indicates that there should be no mapping performed."
        },
        "validationOptions": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ValidationOptions",
          "description": "Options for how to validate and process properties on a resource."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:OptionsResponse": {
      "description": "Options allows customized resource handling by Deployment Manager.",
      "properties": {
        "asyncOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:AsyncOptionsResponse"
          },
          "description": "Options regarding how to thread async requests."
        },
        "inputMappings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:InputMappingResponse"
          },
          "description": "The mappings that apply for requests."
        },
        "nameProperty": {
          "type": "string",
          "description": "The json path to the field in the resource JSON body into which the resource name should be mapped. Leaving this empty indicates that there should be no mapping performed."
        },
        "validationOptions": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ValidationOptionsResponse",
          "description": "Options for how to validate and process properties on a resource."
        }
      },
      "type": "object",
      "required": [
        "asyncOptions",
        "inputMappings",
        "nameProperty",
        "validationOptions"
      ]
    },
    "google-native:deploymentmanager/alpha:PollingOptions": {
      "properties": {
        "diagnostics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:Diagnostic"
          },
          "description": "An array of diagnostics to be collected by Deployment Manager, these diagnostics will be displayed to the user."
        },
        "failCondition": {
          "type": "string",
          "description": "JsonPath expression that determines if the request failed."
        },
        "finishCondition": {
          "type": "string",
          "description": "JsonPath expression that determines if the request is completed."
        },
        "pollingLink": {
          "type": "string",
          "description": "JsonPath expression that evaluates to string, it indicates where to poll."
        },
        "targetLink": {
          "type": "string",
          "description": "JsonPath expression, after polling is completed, indicates where to fetch the resource."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:PollingOptionsResponse": {
      "properties": {
        "diagnostics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:DiagnosticResponse"
          },
          "description": "An array of diagnostics to be collected by Deployment Manager, these diagnostics will be displayed to the user."
        },
        "failCondition": {
          "type": "string",
          "description": "JsonPath expression that determines if the request failed."
        },
        "finishCondition": {
          "type": "string",
          "description": "JsonPath expression that determines if the request is completed."
        },
        "pollingLink": {
          "type": "string",
          "description": "JsonPath expression that evaluates to string, it indicates where to poll."
        },
        "targetLink": {
          "type": "string",
          "description": "JsonPath expression, after polling is completed, indicates where to fetch the resource."
        }
      },
      "type": "object",
      "required": [
        "diagnostics",
        "failCondition",
        "finishCondition",
        "pollingLink",
        "targetLink"
      ]
    },
    "google-native:deploymentmanager/alpha:ServiceAccount": {
      "description": "Service Account used as a credential.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The IAM service account email address like test@myproject.iam.gserviceaccount.com"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:ServiceAccountResponse": {
      "description": "Service Account used as a credential.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The IAM service account email address like test@myproject.iam.gserviceaccount.com"
        }
      },
      "type": "object",
      "required": [
        "email"
      ]
    },
    "google-native:deploymentmanager/alpha:SetCommonInstanceMetadataOperationMetadataResponse": {
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "The client operation id."
        },
        "perLocationOperations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information per location (location name is key). Example key: zones/us-central1-a"
        }
      },
      "type": "object",
      "required": [
        "clientOperationId",
        "perLocationOperations"
      ]
    },
    "google-native:deploymentmanager/alpha:TargetConfiguration": {
      "properties": {
        "config": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ConfigFile",
          "description": "The configuration to use for this deployment."
        },
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:ImportFile"
          },
          "description": "Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:TargetConfigurationResponse": {
      "properties": {
        "config": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ConfigFileResponse",
          "description": "The configuration to use for this deployment."
        },
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:ImportFileResponse"
          },
          "description": "Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template."
        }
      },
      "type": "object",
      "required": [
        "config",
        "imports"
      ]
    },
    "google-native:deploymentmanager/alpha:TemplateContents": {
      "description": "Files that make up the template contents of a template type.",
      "properties": {
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:ImportFile"
          },
          "description": "Import files referenced by the main template."
        },
        "interpreter": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:TemplateContentsInterpreter",
          "description": "Which interpreter (python or jinja) should be used during expansion."
        },
        "mainTemplate": {
          "type": "string",
          "description": "The filename of the mainTemplate"
        },
        "schema": {
          "type": "string",
          "description": "The contents of the template schema."
        },
        "template": {
          "type": "string",
          "description": "The contents of the main template file."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:TemplateContentsInterpreter": {
      "description": "Which interpreter (python or jinja) should be used during expansion.",
      "type": "string",
      "enum": [
        {
          "name": "UnknownInterpreter",
          "value": "UNKNOWN_INTERPRETER"
        },
        {
          "name": "Python",
          "value": "PYTHON"
        },
        {
          "name": "Jinja",
          "value": "JINJA"
        }
      ]
    },
    "google-native:deploymentmanager/alpha:TemplateContentsResponse": {
      "description": "Files that make up the template contents of a template type.",
      "properties": {
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:ImportFileResponse"
          },
          "description": "Import files referenced by the main template."
        },
        "interpreter": {
          "type": "string",
          "description": "Which interpreter (python or jinja) should be used during expansion."
        },
        "mainTemplate": {
          "type": "string",
          "description": "The filename of the mainTemplate"
        },
        "schema": {
          "type": "string",
          "description": "The contents of the template schema."
        },
        "template": {
          "type": "string",
          "description": "The contents of the main template file."
        }
      },
      "type": "object",
      "required": [
        "imports",
        "interpreter",
        "mainTemplate",
        "schema",
        "template"
      ]
    },
    "google-native:deploymentmanager/alpha:TypeProviderLabelEntry": {
      "description": "Label object for TypeProviders",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:TypeProviderLabelEntryResponse": {
      "description": "Label object for TypeProviders",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/alpha:ValidationOptions": {
      "description": "Options for how to validate and process properties on a resource.",
      "properties": {
        "schemaValidation": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ValidationOptionsSchemaValidation",
          "description": "Customize how deployment manager will validate the resource against schema errors."
        },
        "undeclaredProperties": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:ValidationOptionsUndeclaredProperties",
          "description": "Specify what to do with extra properties when executing a request."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/alpha:ValidationOptionsResponse": {
      "description": "Options for how to validate and process properties on a resource.",
      "properties": {
        "schemaValidation": {
          "type": "string",
          "description": "Customize how deployment manager will validate the resource against schema errors."
        },
        "undeclaredProperties": {
          "type": "string",
          "description": "Specify what to do with extra properties when executing a request."
        }
      },
      "type": "object",
      "required": [
        "schemaValidation",
        "undeclaredProperties"
      ]
    },
    "google-native:deploymentmanager/alpha:ValidationOptionsSchemaValidation": {
      "description": "Customize how deployment manager will validate the resource against schema errors.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Ignore",
          "description": "Ignore schema failures.",
          "value": "IGNORE"
        },
        {
          "name": "IgnoreWithWarnings",
          "description": "Ignore schema failures but display them as warnings.",
          "value": "IGNORE_WITH_WARNINGS"
        },
        {
          "name": "Fail",
          "description": "Fail the resource if the schema is not valid, this is the default behavior.",
          "value": "FAIL"
        }
      ]
    },
    "google-native:deploymentmanager/alpha:ValidationOptionsUndeclaredProperties": {
      "description": "Specify what to do with extra properties when executing a request.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Include",
          "description": "Always include even if not present on discovery doc.",
          "value": "INCLUDE"
        },
        {
          "name": "Ignore",
          "description": "Always ignore if not present on discovery doc.",
          "value": "IGNORE"
        },
        {
          "name": "IncludeWithWarnings",
          "description": "Include on request, but emit a warning.",
          "value": "INCLUDE_WITH_WARNINGS"
        },
        {
          "name": "IgnoreWithWarnings",
          "description": "Ignore properties, but emit a warning.",
          "value": "IGNORE_WITH_WARNINGS"
        },
        {
          "name": "Fail",
          "description": "Always fail if undeclared properties are present.",
          "value": "FAIL"
        }
      ]
    },
    "google-native:deploymentmanager/v2:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:deploymentmanager/v2:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:deploymentmanager/v2:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:deploymentmanager/v2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:deploymentmanager/v2:ConfigFile": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2:ConfigFileResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        }
      },
      "type": "object",
      "required": [
        "content"
      ]
    },
    "google-native:deploymentmanager/v2:DeploymentLabelEntry": {
      "description": "Label object for Deployments",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2:DeploymentLabelEntryResponse": {
      "description": "Label object for Deployments",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2:DeploymentUpdateLabelEntryResponse": {
      "description": "Label object for DeploymentUpdate",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2:DeploymentUpdateResponse": {
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment after the current update has been applied."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:DeploymentUpdateLabelEntryResponse"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "manifest": {
          "type": "string",
          "description": "URL of the manifest representing the update configuration of this deployment."
        }
      },
      "type": "object",
      "required": [
        "description",
        "labels",
        "manifest"
      ]
    },
    "google-native:deploymentmanager/v2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:deploymentmanager/v2:ImportFile": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        },
        "name": {
          "type": "string",
          "description": "The name of the file."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2:ImportFileResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        },
        "name": {
          "type": "string",
          "description": "The name of the file."
        }
      },
      "type": "object",
      "required": [
        "content",
        "name"
      ]
    },
    "google-native:deploymentmanager/v2:InstancesBulkInsertOperationMetadataResponse": {
      "properties": {
        "perLocationStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information per location (location name is key). Example key: zones/us-central1-a"
        }
      },
      "type": "object",
      "required": [
        "perLocationStatus"
      ]
    },
    "google-native:deploymentmanager/v2:OperationErrorErrorsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "The error type identifier for this error."
        },
        "location": {
          "type": "string",
          "description": "Indicates the field in the request that caused the error. This property is optional."
        },
        "message": {
          "type": "string",
          "description": "An optional, human-readable error message."
        }
      },
      "type": "object",
      "required": [
        "code",
        "location",
        "message"
      ]
    },
    "google-native:deploymentmanager/v2:OperationErrorResponse": {
      "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:OperationErrorErrorsItemResponse"
          },
          "description": "The array of errors encountered while processing this operation."
        }
      },
      "type": "object",
      "required": [
        "errors"
      ]
    },
    "google-native:deploymentmanager/v2:OperationResponse": {
      "description": "Represents an Operation resource. Google Compute Engine has three Operation resources: * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations) You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses. Operations can be global, regional or zonal. - For global operations, use the `globalOperations` resource. - For regional operations, use the `regionOperations` resource. - For zonal operations, use the `zoneOperations` resource. For more information, read Global, Regional, and Zonal Resources.",
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "The value of `requestId` if you provided it in the request. Not present otherwise."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated.",
          "deprecationMessage": "[Deprecated] This field is deprecated."
        },
        "description": {
          "type": "string",
          "description": "A textual description of the operation, which is set when the operation is created."
        },
        "endTime": {
          "type": "string",
          "description": "The time that this operation was completed. This value is in RFC3339 text format."
        },
        "error": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:OperationErrorResponse",
          "description": "If errors are generated during processing of the operation, this field will be populated."
        },
        "httpErrorMessage": {
          "type": "string",
          "description": "If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`."
        },
        "httpErrorStatusCode": {
          "type": "integer",
          "description": "If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found."
        },
        "insertTime": {
          "type": "string",
          "description": "The time that this operation was requested. This value is in RFC3339 text format."
        },
        "instancesBulkInsertOperationMetadata": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:InstancesBulkInsertOperationMetadataResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always `compute#operation` for Operation resources."
        },
        "name": {
          "type": "string",
          "description": "Name of the operation."
        },
        "operationGroupId": {
          "type": "string",
          "description": "An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request."
        },
        "operationType": {
          "type": "string",
          "description": "The type of operation, such as `insert`, `update`, or `delete`, and so on."
        },
        "progress": {
          "type": "integer",
          "description": "An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses."
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the operation resides. Only applicable when performing regional operations."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "setCommonInstanceMetadataOperationMetadata": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:SetCommonInstanceMetadataOperationMetadataResponse",
          "description": "If the operation is for projects.setCommonInstanceMetadata, this field will contain information on all underlying zonal actions and their state."
        },
        "startTime": {
          "type": "string",
          "description": "The time that this operation was started by the server. This value is in RFC3339 text format."
        },
        "status": {
          "type": "string",
          "description": "The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional textual description of the current status of the operation."
        },
        "targetId": {
          "type": "string",
          "description": "The unique target ID, which identifies a specific incarnation of the target resource."
        },
        "targetLink": {
          "type": "string",
          "description": "The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from."
        },
        "user": {
          "type": "string",
          "description": "User who requested the operation, for example: `user@example.com` or `alice_smith_identifier (global/workforcePools/example-com-us-employees)`."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:OperationWarningsItemResponse"
          },
          "description": "If warning messages are generated during processing of the operation, this field will be populated."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the operation resides. Only applicable when performing per-zone operations."
        }
      },
      "type": "object",
      "required": [
        "clientOperationId",
        "creationTimestamp",
        "description",
        "endTime",
        "error",
        "httpErrorMessage",
        "httpErrorStatusCode",
        "insertTime",
        "instancesBulkInsertOperationMetadata",
        "kind",
        "name",
        "operationGroupId",
        "operationType",
        "progress",
        "region",
        "selfLink",
        "setCommonInstanceMetadataOperationMetadata",
        "startTime",
        "status",
        "statusMessage",
        "targetId",
        "targetLink",
        "user",
        "warnings",
        "zone"
      ]
    },
    "google-native:deploymentmanager/v2:OperationWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2:OperationWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:OperationWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:deploymentmanager/v2:SetCommonInstanceMetadataOperationMetadataResponse": {
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "The client operation id."
        },
        "perLocationOperations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information per location (location name is key). Example key: zones/us-central1-a"
        }
      },
      "type": "object",
      "required": [
        "clientOperationId",
        "perLocationOperations"
      ]
    },
    "google-native:deploymentmanager/v2:TargetConfiguration": {
      "properties": {
        "config": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:ConfigFile",
          "description": "The configuration to use for this deployment."
        },
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:ImportFile"
          },
          "description": "Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2:TargetConfigurationResponse": {
      "properties": {
        "config": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:ConfigFileResponse",
          "description": "The configuration to use for this deployment."
        },
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:ImportFileResponse"
          },
          "description": "Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template."
        }
      },
      "type": "object",
      "required": [
        "config",
        "imports"
      ]
    },
    "google-native:deploymentmanager/v2beta:AsyncOptions": {
      "description": "Async options that determine when a resource should finish.",
      "properties": {
        "methodMatch": {
          "type": "string",
          "description": "Method regex where this policy will apply."
        },
        "pollingOptions": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:PollingOptions",
          "description": "Deployment manager will poll instances for this API resource setting a RUNNING state, and blocking until polling conditions tell whether the resource is completed or failed."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:AsyncOptionsResponse": {
      "description": "Async options that determine when a resource should finish.",
      "properties": {
        "methodMatch": {
          "type": "string",
          "description": "Method regex where this policy will apply."
        },
        "pollingOptions": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:PollingOptionsResponse",
          "description": "Deployment manager will poll instances for this API resource setting a RUNNING state, and blocking until polling conditions tell whether the resource is completed or failed."
        }
      },
      "type": "object",
      "required": [
        "methodMatch",
        "pollingOptions"
      ]
    },
    "google-native:deploymentmanager/v2beta:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:deploymentmanager/v2beta:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:deploymentmanager/v2beta:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:deploymentmanager/v2beta:BasicAuth": {
      "description": "Basic Auth used as a credential.",
      "properties": {
        "password": {
          "type": "string"
        },
        "user": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:BasicAuthResponse": {
      "description": "Basic Auth used as a credential.",
      "properties": {
        "password": {
          "type": "string"
        },
        "user": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "password",
        "user"
      ]
    },
    "google-native:deploymentmanager/v2beta:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:deploymentmanager/v2beta:CollectionOverride": {
      "description": "CollectionOverride allows resource handling overrides for specific resources within a BaseType",
      "properties": {
        "collection": {
          "type": "string",
          "description": "The collection that identifies this resource within its service."
        },
        "options": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:Options",
          "description": "The options to apply to this resource-level override"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:CollectionOverrideResponse": {
      "description": "CollectionOverride allows resource handling overrides for specific resources within a BaseType",
      "properties": {
        "collection": {
          "type": "string",
          "description": "The collection that identifies this resource within its service."
        },
        "options": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OptionsResponse",
          "description": "The options to apply to this resource-level override"
        }
      },
      "type": "object",
      "required": [
        "collection",
        "options"
      ]
    },
    "google-native:deploymentmanager/v2beta:CompositeTypeLabelEntry": {
      "description": "Label object for CompositeTypes",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:CompositeTypeLabelEntryResponse": {
      "description": "Label object for CompositeTypes",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2beta:CompositeTypeStatus": {
      "type": "string",
      "enum": [
        {
          "name": "UnknownStatus",
          "value": "UNKNOWN_STATUS"
        },
        {
          "name": "Deprecated",
          "value": "DEPRECATED"
        },
        {
          "name": "Experimental",
          "value": "EXPERIMENTAL"
        },
        {
          "name": "Supported",
          "value": "SUPPORTED"
        }
      ]
    },
    "google-native:deploymentmanager/v2beta:ConfigFile": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:ConfigFileResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        }
      },
      "type": "object",
      "required": [
        "content"
      ]
    },
    "google-native:deploymentmanager/v2beta:Credential": {
      "description": "The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted.",
      "properties": {
        "basicAuth": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:BasicAuth",
          "description": "Basic Auth Credential, only used by TypeProvider."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ServiceAccount",
          "description": "Service Account Credential, only used by Deployment."
        },
        "useProjectDefault": {
          "type": "boolean",
          "description": "Specify to use the project default credential, only supported by Deployment."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:CredentialResponse": {
      "description": "The credential used by Deployment Manager and TypeProvider. Only one of the options is permitted.",
      "properties": {
        "basicAuth": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:BasicAuthResponse",
          "description": "Basic Auth Credential, only used by TypeProvider."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ServiceAccountResponse",
          "description": "Service Account Credential, only used by Deployment."
        },
        "useProjectDefault": {
          "type": "boolean",
          "description": "Specify to use the project default credential, only supported by Deployment."
        }
      },
      "type": "object",
      "required": [
        "basicAuth",
        "serviceAccount",
        "useProjectDefault"
      ]
    },
    "google-native:deploymentmanager/v2beta:DeploymentLabelEntry": {
      "description": "Label object for Deployments",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:DeploymentLabelEntryResponse": {
      "description": "Label object for Deployments",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2beta:DeploymentUpdateLabelEntryResponse": {
      "description": "Label object for DeploymentUpdate",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2beta:DeploymentUpdateResponse": {
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment after the current update has been applied."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:DeploymentUpdateLabelEntryResponse"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "manifest": {
          "type": "string",
          "description": "URL of the manifest representing the update configuration of this deployment."
        }
      },
      "type": "object",
      "required": [
        "description",
        "labels",
        "manifest"
      ]
    },
    "google-native:deploymentmanager/v2beta:Diagnostic": {
      "properties": {
        "field": {
          "type": "string",
          "description": "JsonPath expression on the resource that if non empty, indicates that this field needs to be extracted as a diagnostic."
        },
        "level": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:DiagnosticLevel",
          "description": "Level to record this diagnostic."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:DiagnosticLevel": {
      "description": "Level to record this diagnostic.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Information",
          "description": "If level is informational, it only gets displayed as part of the resource.",
          "value": "INFORMATION"
        },
        {
          "name": "Warning",
          "description": "If level is warning, will end up in the resource as a warning.",
          "value": "WARNING"
        },
        {
          "name": "Error",
          "description": "If level is error, it will indicate an error occurred after finishCondition is set, and this field will populate resource errors and operation errors.",
          "value": "ERROR"
        }
      ]
    },
    "google-native:deploymentmanager/v2beta:DiagnosticResponse": {
      "properties": {
        "field": {
          "type": "string",
          "description": "JsonPath expression on the resource that if non empty, indicates that this field needs to be extracted as a diagnostic."
        },
        "level": {
          "type": "string",
          "description": "Level to record this diagnostic."
        }
      },
      "type": "object",
      "required": [
        "field",
        "level"
      ]
    },
    "google-native:deploymentmanager/v2beta:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:deploymentmanager/v2beta:ImportFile": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        },
        "name": {
          "type": "string",
          "description": "The name of the file."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:ImportFileResponse": {
      "properties": {
        "content": {
          "type": "string",
          "description": "The contents of the file."
        },
        "name": {
          "type": "string",
          "description": "The name of the file."
        }
      },
      "type": "object",
      "required": [
        "content",
        "name"
      ]
    },
    "google-native:deploymentmanager/v2beta:InputMapping": {
      "description": "InputMapping creates a 'virtual' property that will be injected into the properties before sending the request to the underlying API.",
      "properties": {
        "fieldName": {
          "type": "string",
          "description": "The name of the field that is going to be injected."
        },
        "location": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:InputMappingLocation",
          "description": "The location where this mapping applies."
        },
        "methodMatch": {
          "type": "string",
          "description": "Regex to evaluate on method to decide if input applies."
        },
        "value": {
          "type": "string",
          "description": "A jsonPath expression to select an element."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:InputMappingLocation": {
      "description": "The location where this mapping applies.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Path",
          "value": "PATH"
        },
        {
          "name": "Query",
          "value": "QUERY"
        },
        {
          "name": "Body",
          "value": "BODY"
        },
        {
          "name": "Header",
          "value": "HEADER"
        }
      ]
    },
    "google-native:deploymentmanager/v2beta:InputMappingResponse": {
      "description": "InputMapping creates a 'virtual' property that will be injected into the properties before sending the request to the underlying API.",
      "properties": {
        "fieldName": {
          "type": "string",
          "description": "The name of the field that is going to be injected."
        },
        "location": {
          "type": "string",
          "description": "The location where this mapping applies."
        },
        "methodMatch": {
          "type": "string",
          "description": "Regex to evaluate on method to decide if input applies."
        },
        "value": {
          "type": "string",
          "description": "A jsonPath expression to select an element."
        }
      },
      "type": "object",
      "required": [
        "fieldName",
        "location",
        "methodMatch",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2beta:InstancesBulkInsertOperationMetadataResponse": {
      "properties": {
        "perLocationStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information per location (location name is key). Example key: zones/us-central1-a"
        }
      },
      "type": "object",
      "required": [
        "perLocationStatus"
      ]
    },
    "google-native:deploymentmanager/v2beta:OperationErrorErrorsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "The error type identifier for this error."
        },
        "location": {
          "type": "string",
          "description": "Indicates the field in the request that caused the error. This property is optional."
        },
        "message": {
          "type": "string",
          "description": "An optional, human-readable error message."
        }
      },
      "type": "object",
      "required": [
        "code",
        "location",
        "message"
      ]
    },
    "google-native:deploymentmanager/v2beta:OperationErrorResponse": {
      "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationErrorErrorsItemResponse"
          },
          "description": "The array of errors encountered while processing this operation."
        }
      },
      "type": "object",
      "required": [
        "errors"
      ]
    },
    "google-native:deploymentmanager/v2beta:OperationResponse": {
      "description": "Represents an Operation resource. Google Compute Engine has three Operation resources: * [Global](/compute/docs/reference/rest/{$api_version}/globalOperations) * [Regional](/compute/docs/reference/rest/{$api_version}/regionOperations) * [Zonal](/compute/docs/reference/rest/{$api_version}/zoneOperations) You can use an operation resource to manage asynchronous API requests. For more information, read Handling API responses. Operations can be global, regional or zonal. - For global operations, use the `globalOperations` resource. - For regional operations, use the `regionOperations` resource. - For zonal operations, use the `zoneOperations` resource. For more information, read Global, Regional, and Zonal Resources.",
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "The value of `requestId` if you provided it in the request. Not present otherwise."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "[Deprecated] This field is deprecated.",
          "deprecationMessage": "[Deprecated] This field is deprecated."
        },
        "description": {
          "type": "string",
          "description": "A textual description of the operation, which is set when the operation is created."
        },
        "endTime": {
          "type": "string",
          "description": "The time that this operation was completed. This value is in RFC3339 text format."
        },
        "error": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationErrorResponse",
          "description": "If errors are generated during processing of the operation, this field will be populated."
        },
        "httpErrorMessage": {
          "type": "string",
          "description": "If the operation fails, this field contains the HTTP error message that was returned, such as `NOT FOUND`."
        },
        "httpErrorStatusCode": {
          "type": "integer",
          "description": "If the operation fails, this field contains the HTTP error status code that was returned. For example, a `404` means the resource was not found."
        },
        "insertTime": {
          "type": "string",
          "description": "The time that this operation was requested. This value is in RFC3339 text format."
        },
        "instancesBulkInsertOperationMetadata": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:InstancesBulkInsertOperationMetadataResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always `compute#operation` for Operation resources."
        },
        "name": {
          "type": "string",
          "description": "Name of the operation."
        },
        "operationGroupId": {
          "type": "string",
          "description": "An ID that represents a group of operations, such as when a group of operations results from a `bulkInsert` API request."
        },
        "operationType": {
          "type": "string",
          "description": "The type of operation, such as `insert`, `update`, or `delete`, and so on."
        },
        "progress": {
          "type": "integer",
          "description": "An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses."
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the operation resides. Only applicable when performing regional operations."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "setCommonInstanceMetadataOperationMetadata": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:SetCommonInstanceMetadataOperationMetadataResponse",
          "description": "If the operation is for projects.setCommonInstanceMetadata, this field will contain information on all underlying zonal actions and their state."
        },
        "startTime": {
          "type": "string",
          "description": "The time that this operation was started by the server. This value is in RFC3339 text format."
        },
        "status": {
          "type": "string",
          "description": "The status of the operation, which can be one of the following: `PENDING`, `RUNNING`, or `DONE`."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional textual description of the current status of the operation."
        },
        "targetId": {
          "type": "string",
          "description": "The unique target ID, which identifies a specific incarnation of the target resource."
        },
        "targetLink": {
          "type": "string",
          "description": "The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from."
        },
        "user": {
          "type": "string",
          "description": "User who requested the operation, for example: `user@example.com` or `alice_smith_identifier (global/workforcePools/example-com-us-employees)`."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationWarningsItemResponse"
          },
          "description": "If warning messages are generated during processing of the operation, this field will be populated."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the operation resides. Only applicable when performing per-zone operations."
        }
      },
      "type": "object",
      "required": [
        "clientOperationId",
        "creationTimestamp",
        "description",
        "endTime",
        "error",
        "httpErrorMessage",
        "httpErrorStatusCode",
        "insertTime",
        "instancesBulkInsertOperationMetadata",
        "kind",
        "name",
        "operationGroupId",
        "operationType",
        "progress",
        "region",
        "selfLink",
        "setCommonInstanceMetadataOperationMetadata",
        "startTime",
        "status",
        "statusMessage",
        "targetId",
        "targetLink",
        "user",
        "warnings",
        "zone"
      ]
    },
    "google-native:deploymentmanager/v2beta:OperationWarningsItemDataItemResponse": {
      "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)."
        },
        "value": {
          "type": "string",
          "description": "A warning data value corresponding to the key."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2beta:OperationWarningsItemResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationWarningsItemDataItemResponse"
          },
          "description": "Metadata about this warning in key: value format. For example: \"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" } "
        },
        "message": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "message"
      ]
    },
    "google-native:deploymentmanager/v2beta:Options": {
      "description": "Options allows customized resource handling by Deployment Manager.",
      "properties": {
        "asyncOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:AsyncOptions"
          },
          "description": "Options regarding how to thread async requests."
        },
        "inputMappings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:InputMapping"
          },
          "description": "The mappings that apply for requests."
        },
        "validationOptions": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ValidationOptions",
          "description": "Options for how to validate and process properties on a resource."
        },
        "virtualProperties": {
          "type": "string",
          "description": "Additional properties block described as a jsonSchema, these properties will never be part of the json payload, but they can be consumed by InputMappings, this must be a valid json schema draft-04. The properties specified here will be decouple in a different section. This schema will be merged to the schema validation, and properties here will be extracted From the payload and consumed explicitly by InputMappings. ex: field1: type: string field2: type: number"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:OptionsResponse": {
      "description": "Options allows customized resource handling by Deployment Manager.",
      "properties": {
        "asyncOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:AsyncOptionsResponse"
          },
          "description": "Options regarding how to thread async requests."
        },
        "inputMappings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:InputMappingResponse"
          },
          "description": "The mappings that apply for requests."
        },
        "validationOptions": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ValidationOptionsResponse",
          "description": "Options for how to validate and process properties on a resource."
        },
        "virtualProperties": {
          "type": "string",
          "description": "Additional properties block described as a jsonSchema, these properties will never be part of the json payload, but they can be consumed by InputMappings, this must be a valid json schema draft-04. The properties specified here will be decouple in a different section. This schema will be merged to the schema validation, and properties here will be extracted From the payload and consumed explicitly by InputMappings. ex: field1: type: string field2: type: number"
        }
      },
      "type": "object",
      "required": [
        "asyncOptions",
        "inputMappings",
        "validationOptions",
        "virtualProperties"
      ]
    },
    "google-native:deploymentmanager/v2beta:PollingOptions": {
      "properties": {
        "diagnostics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:Diagnostic"
          },
          "description": "An array of diagnostics to be collected by Deployment Manager, these diagnostics will be displayed to the user."
        },
        "failCondition": {
          "type": "string",
          "description": "JsonPath expression that determines if the request failed."
        },
        "finishCondition": {
          "type": "string",
          "description": "JsonPath expression that determines if the request is completed."
        },
        "pollingLink": {
          "type": "string",
          "description": "JsonPath expression that evaluates to string, it indicates where to poll."
        },
        "targetLink": {
          "type": "string",
          "description": "JsonPath expression, after polling is completed, indicates where to fetch the resource."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:PollingOptionsResponse": {
      "properties": {
        "diagnostics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:DiagnosticResponse"
          },
          "description": "An array of diagnostics to be collected by Deployment Manager, these diagnostics will be displayed to the user."
        },
        "failCondition": {
          "type": "string",
          "description": "JsonPath expression that determines if the request failed."
        },
        "finishCondition": {
          "type": "string",
          "description": "JsonPath expression that determines if the request is completed."
        },
        "pollingLink": {
          "type": "string",
          "description": "JsonPath expression that evaluates to string, it indicates where to poll."
        },
        "targetLink": {
          "type": "string",
          "description": "JsonPath expression, after polling is completed, indicates where to fetch the resource."
        }
      },
      "type": "object",
      "required": [
        "diagnostics",
        "failCondition",
        "finishCondition",
        "pollingLink",
        "targetLink"
      ]
    },
    "google-native:deploymentmanager/v2beta:ServiceAccount": {
      "description": "Service Account used as a credential.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The IAM service account email address like test@myproject.iam.gserviceaccount.com"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:ServiceAccountResponse": {
      "description": "Service Account used as a credential.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The IAM service account email address like test@myproject.iam.gserviceaccount.com"
        }
      },
      "type": "object",
      "required": [
        "email"
      ]
    },
    "google-native:deploymentmanager/v2beta:SetCommonInstanceMetadataOperationMetadataResponse": {
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "The client operation id."
        },
        "perLocationOperations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information per location (location name is key). Example key: zones/us-central1-a"
        }
      },
      "type": "object",
      "required": [
        "clientOperationId",
        "perLocationOperations"
      ]
    },
    "google-native:deploymentmanager/v2beta:TargetConfiguration": {
      "properties": {
        "config": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ConfigFile",
          "description": "The configuration to use for this deployment."
        },
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ImportFile"
          },
          "description": "Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:TargetConfigurationResponse": {
      "properties": {
        "config": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ConfigFileResponse",
          "description": "The configuration to use for this deployment."
        },
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ImportFileResponse"
          },
          "description": "Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template."
        }
      },
      "type": "object",
      "required": [
        "config",
        "imports"
      ]
    },
    "google-native:deploymentmanager/v2beta:TemplateContents": {
      "description": "Files that make up the template contents of a template type.",
      "properties": {
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ImportFile"
          },
          "description": "Import files referenced by the main template."
        },
        "interpreter": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TemplateContentsInterpreter",
          "description": "Which interpreter (python or jinja) should be used during expansion."
        },
        "mainTemplate": {
          "type": "string",
          "description": "The filename of the mainTemplate"
        },
        "schema": {
          "type": "string",
          "description": "The contents of the template schema."
        },
        "template": {
          "type": "string",
          "description": "The contents of the main template file."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:TemplateContentsInterpreter": {
      "description": "Which interpreter (python or jinja) should be used during expansion.",
      "type": "string",
      "enum": [
        {
          "name": "UnknownInterpreter",
          "value": "UNKNOWN_INTERPRETER"
        },
        {
          "name": "Python",
          "value": "PYTHON"
        },
        {
          "name": "Jinja",
          "value": "JINJA"
        }
      ]
    },
    "google-native:deploymentmanager/v2beta:TemplateContentsResponse": {
      "description": "Files that make up the template contents of a template type.",
      "properties": {
        "imports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ImportFileResponse"
          },
          "description": "Import files referenced by the main template."
        },
        "interpreter": {
          "type": "string",
          "description": "Which interpreter (python or jinja) should be used during expansion."
        },
        "mainTemplate": {
          "type": "string",
          "description": "The filename of the mainTemplate"
        },
        "schema": {
          "type": "string",
          "description": "The contents of the template schema."
        },
        "template": {
          "type": "string",
          "description": "The contents of the main template file."
        }
      },
      "type": "object",
      "required": [
        "imports",
        "interpreter",
        "mainTemplate",
        "schema",
        "template"
      ]
    },
    "google-native:deploymentmanager/v2beta:TypeProviderLabelEntry": {
      "description": "Label object for TypeProviders",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:TypeProviderLabelEntryResponse": {
      "description": "Label object for TypeProviders",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the label"
        },
        "value": {
          "type": "string",
          "description": "Value of the label"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:deploymentmanager/v2beta:ValidationOptions": {
      "description": "Options for how to validate and process properties on a resource.",
      "properties": {
        "schemaValidation": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ValidationOptionsSchemaValidation",
          "description": "Customize how deployment manager will validate the resource against schema errors."
        },
        "undeclaredProperties": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:ValidationOptionsUndeclaredProperties",
          "description": "Specify what to do with extra properties when executing a request."
        }
      },
      "type": "object"
    },
    "google-native:deploymentmanager/v2beta:ValidationOptionsResponse": {
      "description": "Options for how to validate and process properties on a resource.",
      "properties": {
        "schemaValidation": {
          "type": "string",
          "description": "Customize how deployment manager will validate the resource against schema errors."
        },
        "undeclaredProperties": {
          "type": "string",
          "description": "Specify what to do with extra properties when executing a request."
        }
      },
      "type": "object",
      "required": [
        "schemaValidation",
        "undeclaredProperties"
      ]
    },
    "google-native:deploymentmanager/v2beta:ValidationOptionsSchemaValidation": {
      "description": "Customize how deployment manager will validate the resource against schema errors.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Ignore",
          "description": "Ignore schema failures.",
          "value": "IGNORE"
        },
        {
          "name": "IgnoreWithWarnings",
          "description": "Ignore schema failures but display them as warnings.",
          "value": "IGNORE_WITH_WARNINGS"
        },
        {
          "name": "Fail",
          "description": "Fail the resource if the schema is not valid, this is the default behavior.",
          "value": "FAIL"
        }
      ]
    },
    "google-native:deploymentmanager/v2beta:ValidationOptionsUndeclaredProperties": {
      "description": "Specify what to do with extra properties when executing a request.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Include",
          "description": "Always include even if not present on discovery doc.",
          "value": "INCLUDE"
        },
        {
          "name": "Ignore",
          "description": "Always ignore if not present on discovery doc.",
          "value": "IGNORE"
        },
        {
          "name": "IncludeWithWarnings",
          "description": "Include on request, but emit a warning.",
          "value": "INCLUDE_WITH_WARNINGS"
        },
        {
          "name": "IgnoreWithWarnings",
          "description": "Ignore properties, but emit a warning.",
          "value": "IGNORE_WITH_WARNINGS"
        },
        {
          "name": "Fail",
          "description": "Always fail if undeclared properties are present.",
          "value": "FAIL"
        }
      ]
    },
    "google-native:dialogflow/v2:ConversationConversationStage": {
      "description": "The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.",
      "type": "string",
      "enum": [
        {
          "name": "ConversationStageUnspecified",
          "description": "Unknown. Should never be used after a conversation is successfully created.",
          "value": "CONVERSATION_STAGE_UNSPECIFIED"
        },
        {
          "name": "VirtualAgentStage",
          "description": "The conversation should return virtual agent responses into the conversation.",
          "value": "VIRTUAL_AGENT_STAGE"
        },
        {
          "name": "HumanAssistStage",
          "description": "The conversation should not provide responses, just listen and provide suggestions.",
          "value": "HUMAN_ASSIST_STAGE"
        }
      ]
    },
    "google-native:dialogflow/v2:DocumentKnowledgeTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "KnowledgeTypeUnspecified",
          "description": "The type is unspecified or arbitrary.",
          "value": "KNOWLEDGE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Faq",
          "description": "The document content contains question and answer pairs as either HTML or CSV. Typical FAQ HTML formats are parsed accurately, but unusual formats may fail to be parsed. CSV must have questions in the first column and answers in the second, with no header. Because of this explicit format, they are always parsed accurately.",
          "value": "FAQ"
        },
        {
          "name": "ExtractiveQa",
          "description": "Documents for which unstructured text is extracted and used for question answering.",
          "value": "EXTRACTIVE_QA"
        },
        {
          "name": "ArticleSuggestion",
          "description": "The entire document content as a whole can be used for query results. Only for Contact Center Solutions on Dialogflow.",
          "value": "ARTICLE_SUGGESTION"
        },
        {
          "name": "AgentFacingSmartReply",
          "description": "The document contains agent-facing Smart Reply entries.",
          "value": "AGENT_FACING_SMART_REPLY"
        }
      ]
    },
    "google-native:dialogflow/v2:EntityTypeAutoExpansionMode": {
      "description": "Optional. Indicates whether the entity type can be automatically expanded.",
      "type": "string",
      "enum": [
        {
          "name": "AutoExpansionModeUnspecified",
          "description": "Auto expansion disabled for the entity.",
          "value": "AUTO_EXPANSION_MODE_UNSPECIFIED"
        },
        {
          "name": "AutoExpansionModeDefault",
          "description": "Allows an agent to recognize values that have not been explicitly listed in the entity.",
          "value": "AUTO_EXPANSION_MODE_DEFAULT"
        }
      ]
    },
    "google-native:dialogflow/v2:EntityTypeKind": {
      "description": "Required. Indicates the kind of entity type.",
      "type": "string",
      "enum": [
        {
          "name": "KindUnspecified",
          "description": "Not specified. This value should be never used.",
          "value": "KIND_UNSPECIFIED"
        },
        {
          "name": "KindMap",
          "description": "Map entity types allow mapping of a group of synonyms to a reference value.",
          "value": "KIND_MAP"
        },
        {
          "name": "KindList",
          "description": "List entity types contain a set of entries that do not map to reference values. However, list entity types can contain references to other entity types (with or without aliases).",
          "value": "KIND_LIST"
        },
        {
          "name": "KindRegexp",
          "description": "Regexp entity types allow to specify regular expressions in entries values.",
          "value": "KIND_REGEXP"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2ArticleSuggestionModelMetadata": {
      "description": "Metadata for article suggestion models.",
      "properties": {
        "trainingModelType": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ArticleSuggestionModelMetadataTrainingModelType",
          "description": "Optional. Type of the article suggestion model. If not provided, model_type is used."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2ArticleSuggestionModelMetadataResponse": {
      "description": "Metadata for article suggestion models.",
      "properties": {
        "trainingModelType": {
          "type": "string",
          "description": "Optional. Type of the article suggestion model. If not provided, model_type is used."
        }
      },
      "type": "object",
      "required": [
        "trainingModelType"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2ArticleSuggestionModelMetadataTrainingModelType": {
      "description": "Optional. Type of the article suggestion model. If not provided, model_type is used.",
      "type": "string",
      "enum": [
        {
          "name": "ModelTypeUnspecified",
          "description": "ModelType unspecified.",
          "value": "MODEL_TYPE_UNSPECIFIED"
        },
        {
          "name": "SmartReplyDualEncoderModel",
          "description": "ModelType smart reply dual encoder model.",
          "value": "SMART_REPLY_DUAL_ENCODER_MODEL"
        },
        {
          "name": "SmartReplyBertModel",
          "description": "ModelType smart reply bert model.",
          "value": "SMART_REPLY_BERT_MODEL"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2AutomatedAgentConfig": {
      "description": "Defines the Automated Agent to connect to a conversation.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2#google.cloud.dialogflow.v2.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used."
        },
        "sessionTtl": {
          "type": "string",
          "description": "Optional. Sets Dialogflow CX session life time. By default, a Dialogflow CX session remains active and its data is stored for 30 minutes after the last request is sent for the session. This value should be no longer than 1 day."
        }
      },
      "type": "object",
      "required": [
        "agent"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2AutomatedAgentConfigResponse": {
      "description": "Defines the Automated Agent to connect to a conversation.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2#google.cloud.dialogflow.v2.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used."
        },
        "sessionTtl": {
          "type": "string",
          "description": "Optional. Sets Dialogflow CX session life time. By default, a Dialogflow CX session remains active and its data is stored for 30 minutes after the last request is sent for the session. This value should be no longer than 1 day."
        }
      },
      "type": "object",
      "required": [
        "agent",
        "sessionTtl"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2Context": {
      "description": "Dialogflow contexts are similar to natural language context. If a person says to you \"they are orange\", you need context in order to understand what \"they\" is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).",
      "properties": {
        "lifespanCount": {
          "type": "integer",
          "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`"
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2ContextResponse": {
      "description": "Dialogflow contexts are similar to natural language context. If a person says to you \"they are orange\", you need context in order to understand what \"they\" is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).",
      "properties": {
        "lifespanCount": {
          "type": "integer",
          "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`"
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value."
        }
      },
      "type": "object",
      "required": [
        "lifespanCount",
        "name",
        "parameters"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2ConversationInfoResponse": {
      "description": "Represents metadata of a conversation.",
      "properties": {
        "languageCode": {
          "type": "string",
          "description": "Optional. The language code of the conversation data within this dataset. See https://cloud.google.com/apis/design/standard_fields for more information. Supports all UTF-8 languages."
        }
      },
      "type": "object",
      "required": [
        "languageCode"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2ConversationPhoneNumberResponse": {
      "description": "Represents a phone number for telephony integration. It allows for connecting a particular conversation over telephony.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "The phone number to connect to this conversation."
        }
      },
      "type": "object",
      "required": [
        "phoneNumber"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2DocumentReloadStatusResponse": {
      "description": "The status of a reload attempt.",
      "properties": {
        "status": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleRpcStatusResponse",
          "description": "The status of a reload attempt or the initial load."
        },
        "time": {
          "type": "string",
          "description": "The time of a reload attempt. This reload may have been triggered automatically or manually and may not have succeeded."
        }
      },
      "type": "object",
      "required": [
        "status",
        "time"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2EntityTypeEntity": {
      "description": "An **entity entry** for an associated entity type.",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`."
        },
        "value": {
          "type": "string",
          "description": "The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A reference value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases)."
        }
      },
      "type": "object",
      "required": [
        "synonyms",
        "value"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2EntityTypeEntityResponse": {
      "description": "An **entity entry** for an associated entity type.",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`."
        },
        "value": {
          "type": "string",
          "description": "The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A reference value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases)."
        }
      },
      "type": "object",
      "required": [
        "synonyms",
        "value"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2EvaluationConfig": {
      "description": "The configuration for model evaluation.",
      "properties": {
        "datasets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2InputDataset"
          },
          "description": "Datasets used for evaluation."
        },
        "smartComposeConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EvaluationConfigSmartComposeConfig",
          "description": "Configuration for smart compose model evalution."
        },
        "smartReplyConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EvaluationConfigSmartReplyConfig",
          "description": "Configuration for smart reply model evalution."
        }
      },
      "type": "object",
      "required": [
        "datasets"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2EvaluationConfigResponse": {
      "description": "The configuration for model evaluation.",
      "properties": {
        "datasets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2InputDatasetResponse"
          },
          "description": "Datasets used for evaluation."
        },
        "smartComposeConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EvaluationConfigSmartComposeConfigResponse",
          "description": "Configuration for smart compose model evalution."
        },
        "smartReplyConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EvaluationConfigSmartReplyConfigResponse",
          "description": "Configuration for smart reply model evalution."
        }
      },
      "type": "object",
      "required": [
        "datasets",
        "smartComposeConfig",
        "smartReplyConfig"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2EvaluationConfigSmartComposeConfig": {
      "description": "Smart compose specific configuration for evaluation job.",
      "properties": {
        "allowlistDocument": {
          "type": "string",
          "description": "The allowlist document resource name. Format: `projects//knowledgeBases//documents/`. Only used for smart compose model."
        },
        "maxResultCount": {
          "type": "integer",
          "description": "The model to be evaluated can return multiple results with confidence score on each query. These results will be sorted by the descending order of the scores and we only keep the first max_result_count results as the final results to evaluate."
        }
      },
      "type": "object",
      "required": [
        "maxResultCount"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2EvaluationConfigSmartComposeConfigResponse": {
      "description": "Smart compose specific configuration for evaluation job.",
      "properties": {
        "allowlistDocument": {
          "type": "string",
          "description": "The allowlist document resource name. Format: `projects//knowledgeBases//documents/`. Only used for smart compose model."
        },
        "maxResultCount": {
          "type": "integer",
          "description": "The model to be evaluated can return multiple results with confidence score on each query. These results will be sorted by the descending order of the scores and we only keep the first max_result_count results as the final results to evaluate."
        }
      },
      "type": "object",
      "required": [
        "allowlistDocument",
        "maxResultCount"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2EvaluationConfigSmartReplyConfig": {
      "description": "Smart reply specific configuration for evaluation job.",
      "properties": {
        "allowlistDocument": {
          "type": "string",
          "description": "The allowlist document resource name. Format: `projects//knowledgeBases//documents/`. Only used for smart reply model."
        },
        "maxResultCount": {
          "type": "integer",
          "description": "The model to be evaluated can return multiple results with confidence score on each query. These results will be sorted by the descending order of the scores and we only keep the first max_result_count results as the final results to evaluate."
        }
      },
      "type": "object",
      "required": [
        "maxResultCount"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2EvaluationConfigSmartReplyConfigResponse": {
      "description": "Smart reply specific configuration for evaluation job.",
      "properties": {
        "allowlistDocument": {
          "type": "string",
          "description": "The allowlist document resource name. Format: `projects//knowledgeBases//documents/`. Only used for smart reply model."
        },
        "maxResultCount": {
          "type": "integer",
          "description": "The model to be evaluated can return multiple results with confidence score on each query. These results will be sorted by the descending order of the scores and we only keep the first max_result_count results as the final results to evaluate."
        }
      },
      "type": "object",
      "required": [
        "allowlistDocument",
        "maxResultCount"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2Fulfillment": {
      "description": "By default, your agent responds to a matched intent with a static response. As an alternative, you can provide a more dynamic response by using fulfillment. When you enable fulfillment for an intent, Dialogflow responds to that intent by calling a service that you define. For example, if an end-user wants to schedule a haircut on Friday, your service can check your database and respond to the end-user with availability information for Friday. For more information, see the [fulfillment guide](https://cloud.google.com/dialogflow/docs/fulfillment-overview).",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Optional. The human-readable name of the fulfillment, unique within the agent. This field is not used for Fulfillment in an Environment."
        },
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether fulfillment is enabled."
        },
        "features": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2FulfillmentFeature"
          },
          "description": "Optional. The field defines whether the fulfillment is enabled for certain features."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2FulfillmentGenericWebService",
          "description": "Configuration for a generic web service."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment` This field is not used for Fulfillment in an Environment."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2FulfillmentFeature": {
      "description": "Whether fulfillment is enabled for the specific feature.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2FulfillmentFeatureType",
          "description": "The type of the feature that enabled for fulfillment."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2FulfillmentFeatureResponse": {
      "description": "Whether fulfillment is enabled for the specific feature.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the feature that enabled for fulfillment."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2FulfillmentFeatureType": {
      "description": "The type of the feature that enabled for fulfillment.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Feature type not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Smalltalk",
          "description": "Fulfillment is enabled for SmallTalk.",
          "value": "SMALLTALK"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2FulfillmentGenericWebService": {
      "description": "Represents configuration for a generic web service. Dialogflow supports two mechanisms for authentications: - Basic authentication with username and password. - Authentication with additional authentication headers. More information could be found at: https://cloud.google.com/dialogflow/docs/fulfillment-configure.",
      "properties": {
        "isCloudFunction": {
          "type": "boolean",
          "description": "Optional. Indicates if generic web service is created through Cloud Functions integration. Defaults to false. is_cloud_function is deprecated. Cloud functions can be configured by its uri as a regular web service now."
        },
        "password": {
          "type": "string",
          "description": "Optional. The password for HTTP Basic authentication."
        },
        "requestHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The HTTP request headers to send together with fulfillment requests."
        },
        "uri": {
          "type": "string",
          "description": "The fulfillment URI for receiving POST requests. It must use https protocol."
        },
        "username": {
          "type": "string",
          "description": "Optional. The user name for HTTP Basic authentication."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2FulfillmentGenericWebServiceResponse": {
      "description": "Represents configuration for a generic web service. Dialogflow supports two mechanisms for authentications: - Basic authentication with username and password. - Authentication with additional authentication headers. More information could be found at: https://cloud.google.com/dialogflow/docs/fulfillment-configure.",
      "properties": {
        "isCloudFunction": {
          "type": "boolean",
          "description": "Optional. Indicates if generic web service is created through Cloud Functions integration. Defaults to false. is_cloud_function is deprecated. Cloud functions can be configured by its uri as a regular web service now."
        },
        "password": {
          "type": "string",
          "description": "Optional. The password for HTTP Basic authentication."
        },
        "requestHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The HTTP request headers to send together with fulfillment requests."
        },
        "uri": {
          "type": "string",
          "description": "The fulfillment URI for receiving POST requests. It must use https protocol."
        },
        "username": {
          "type": "string",
          "description": "Optional. The user name for HTTP Basic authentication."
        }
      },
      "type": "object",
      "required": [
        "isCloudFunction",
        "password",
        "requestHeaders",
        "uri",
        "username"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2FulfillmentResponse": {
      "description": "By default, your agent responds to a matched intent with a static response. As an alternative, you can provide a more dynamic response by using fulfillment. When you enable fulfillment for an intent, Dialogflow responds to that intent by calling a service that you define. For example, if an end-user wants to schedule a haircut on Friday, your service can check your database and respond to the end-user with availability information for Friday. For more information, see the [fulfillment guide](https://cloud.google.com/dialogflow/docs/fulfillment-overview).",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Optional. The human-readable name of the fulfillment, unique within the agent. This field is not used for Fulfillment in an Environment."
        },
        "enabled": {
          "type": "boolean",
          "description": "Optional. Whether fulfillment is enabled."
        },
        "features": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2FulfillmentFeatureResponse"
          },
          "description": "Optional. The field defines whether the fulfillment is enabled for certain features."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2FulfillmentGenericWebServiceResponse",
          "description": "Configuration for a generic web service."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment` This field is not used for Fulfillment in an Environment."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "enabled",
        "features",
        "genericWebService",
        "name"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2GcsSourcesResponse": {
      "description": "Google Cloud Storage location for the inputs.",
      "properties": {
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Google Cloud Storage URIs for the inputs. A URI is of the form: `gs://bucket/object-prefix-or-name` Whether a prefix or name is used depends on the use case."
        }
      },
      "type": "object",
      "required": [
        "uris"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfig": {
      "description": "Defines the Human Agent Assist to connect to a conversation.",
      "properties": {
        "endUserSuggestionConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionConfig",
          "description": "Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access."
        },
        "humanAgentSuggestionConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionConfig",
          "description": "Configuration for agent assistance of human agent participant."
        },
        "messageAnalysisConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigMessageAnalysisConfig",
          "description": "Configuration for message analysis."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfig",
          "description": "Pub/Sub topic on which to publish new agent assistant events."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigConversationModelConfig": {
      "description": "Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY, CONVERSATION_SUMMARIZATION.",
      "properties": {
        "baselineModelVersion": {
          "type": "string",
          "description": "Version of current baseline model. It will be ignored if model is set. Valid versions are: Article Suggestion baseline model: - 0.9 - 1.0 (default) Summarization baseline model: - 1.0"
        },
        "model": {
          "type": "string",
          "description": "Conversation model resource name. Format: `projects//conversationModels/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigConversationModelConfigResponse": {
      "description": "Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY, CONVERSATION_SUMMARIZATION.",
      "properties": {
        "baselineModelVersion": {
          "type": "string",
          "description": "Version of current baseline model. It will be ignored if model is set. Valid versions are: Article Suggestion baseline model: - 0.9 - 1.0 (default) Summarization baseline model: - 1.0"
        },
        "model": {
          "type": "string",
          "description": "Conversation model resource name. Format: `projects//conversationModels/`."
        }
      },
      "type": "object",
      "required": [
        "baselineModelVersion",
        "model"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigConversationProcessConfig": {
      "description": "Config to process conversation.",
      "properties": {
        "recentSentencesCount": {
          "type": "integer",
          "description": "Number of recent non-small-talk sentences to use as context for article and FAQ suggestion"
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigConversationProcessConfigResponse": {
      "description": "Config to process conversation.",
      "properties": {
        "recentSentencesCount": {
          "type": "integer",
          "description": "Number of recent non-small-talk sentences to use as context for article and FAQ suggestion"
        }
      },
      "type": "object",
      "required": [
        "recentSentencesCount"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigMessageAnalysisConfig": {
      "description": "Configuration for analyses to run on each conversation message.",
      "properties": {
        "enableEntityExtraction": {
          "type": "boolean",
          "description": "Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access."
        },
        "enableSentimentAnalysis": {
          "type": "boolean",
          "description": "Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user's attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigMessageAnalysisConfigResponse": {
      "description": "Configuration for analyses to run on each conversation message.",
      "properties": {
        "enableEntityExtraction": {
          "type": "boolean",
          "description": "Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access."
        },
        "enableSentimentAnalysis": {
          "type": "boolean",
          "description": "Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user's attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult."
        }
      },
      "type": "object",
      "required": [
        "enableEntityExtraction",
        "enableSentimentAnalysis"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigResponse": {
      "description": "Defines the Human Agent Assist to connect to a conversation.",
      "properties": {
        "endUserSuggestionConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionConfigResponse",
          "description": "Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access."
        },
        "humanAgentSuggestionConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionConfigResponse",
          "description": "Configuration for agent assistance of human agent participant."
        },
        "messageAnalysisConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigMessageAnalysisConfigResponse",
          "description": "Configuration for message analysis."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfigResponse",
          "description": "Pub/Sub topic on which to publish new agent assistant events."
        }
      },
      "type": "object",
      "required": [
        "endUserSuggestionConfig",
        "humanAgentSuggestionConfig",
        "messageAnalysisConfig",
        "notificationConfig"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionConfig": {
      "description": "Detail human agent assistant config.",
      "properties": {
        "featureConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionFeatureConfig"
          },
          "description": "Configuration of different suggestion features. One feature can have only one config."
        },
        "groupSuggestionResponses": {
          "type": "boolean",
          "description": "If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionConfigResponse": {
      "description": "Detail human agent assistant config.",
      "properties": {
        "featureConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionFeatureConfigResponse"
          },
          "description": "Configuration of different suggestion features. One feature can have only one config."
        },
        "groupSuggestionResponses": {
          "type": "boolean",
          "description": "If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse."
        }
      },
      "type": "object",
      "required": [
        "featureConfigs",
        "groupSuggestionResponses"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionFeatureConfig": {
      "description": "Config for suggestion features.",
      "properties": {
        "conversationModelConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigConversationModelConfig",
          "description": "Configs of custom conversation model."
        },
        "conversationProcessConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigConversationProcessConfig",
          "description": "Configs for processing conversation."
        },
        "disableAgentQueryLogging": {
          "type": "boolean",
          "description": "Optional. Disable the logging of search queries sent by human agents. It can prevent those queries from being stored at answer records. Supported features: KNOWLEDGE_SEARCH."
        },
        "enableEventBasedSuggestion": {
          "type": "boolean",
          "description": "Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST, KNOWLEDGE_ASSIST."
        },
        "queryConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfig",
          "description": "Configs of query."
        },
        "suggestionFeature": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SuggestionFeature",
          "description": "The suggestion feature."
        },
        "suggestionTriggerSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionTriggerSettings",
          "description": "Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionFeatureConfigResponse": {
      "description": "Config for suggestion features.",
      "properties": {
        "conversationModelConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigConversationModelConfigResponse",
          "description": "Configs of custom conversation model."
        },
        "conversationProcessConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigConversationProcessConfigResponse",
          "description": "Configs for processing conversation."
        },
        "disableAgentQueryLogging": {
          "type": "boolean",
          "description": "Optional. Disable the logging of search queries sent by human agents. It can prevent those queries from being stored at answer records. Supported features: KNOWLEDGE_SEARCH."
        },
        "enableEventBasedSuggestion": {
          "type": "boolean",
          "description": "Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST, KNOWLEDGE_ASSIST."
        },
        "queryConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigResponse",
          "description": "Configs of query."
        },
        "suggestionFeature": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SuggestionFeatureResponse",
          "description": "The suggestion feature."
        },
        "suggestionTriggerSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionTriggerSettingsResponse",
          "description": "Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field."
        }
      },
      "type": "object",
      "required": [
        "conversationModelConfig",
        "conversationProcessConfig",
        "disableAgentQueryLogging",
        "enableEventBasedSuggestion",
        "queryConfig",
        "suggestionFeature",
        "suggestionTriggerSettings"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfig": {
      "description": "Config for suggestion query.",
      "properties": {
        "confidenceThreshold": {
          "type": "number",
          "description": "Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE, KNOWLEDGE_SEARCH, KNOWLEDGE_ASSIST, ENTITY_EXTRACTION."
        },
        "contextFilterSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings",
          "description": "Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped."
        },
        "dialogflowQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource",
          "description": "Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST."
        },
        "documentQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource",
          "description": "Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE."
        },
        "knowledgeBaseQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource",
          "description": "Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ."
        },
        "maxResults": {
          "type": "integer",
          "description": "Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings": {
      "description": "Settings that determine how to filter recent conversation context when generating suggestions.",
      "properties": {
        "dropHandoffMessages": {
          "type": "boolean",
          "description": "If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped."
        },
        "dropIvrMessages": {
          "type": "boolean",
          "description": "If set to true, all messages from ivr stage are dropped."
        },
        "dropVirtualAgentMessages": {
          "type": "boolean",
          "description": "If set to true, all messages from virtual agent are dropped."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettingsResponse": {
      "description": "Settings that determine how to filter recent conversation context when generating suggestions.",
      "properties": {
        "dropHandoffMessages": {
          "type": "boolean",
          "description": "If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped."
        },
        "dropIvrMessages": {
          "type": "boolean",
          "description": "If set to true, all messages from ivr stage are dropped."
        },
        "dropVirtualAgentMessages": {
          "type": "boolean",
          "description": "If set to true, all messages from virtual agent are dropped."
        }
      },
      "type": "object",
      "required": [
        "dropHandoffMessages",
        "dropIvrMessages",
        "dropVirtualAgentMessages"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource": {
      "description": "Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project."
        },
        "humanAgentSideConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig",
          "description": "Optional. The Dialogflow assist configuration for human agent."
        }
      },
      "type": "object",
      "required": [
        "agent"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig": {
      "description": "The configuration used for human agent side Dialogflow assist suggestion.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "Optional. The name of a dialogflow virtual agent used for intent detection and suggestion triggered by human agent. Format: `projects//locations//agent`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfigResponse": {
      "description": "The configuration used for human agent side Dialogflow assist suggestion.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "Optional. The name of a dialogflow virtual agent used for intent detection and suggestion triggered by human agent. Format: `projects//locations//agent`."
        }
      },
      "type": "object",
      "required": [
        "agent"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceResponse": {
      "description": "Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project."
        },
        "humanAgentSideConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfigResponse",
          "description": "Optional. The Dialogflow assist configuration for human agent."
        }
      },
      "type": "object",
      "required": [
        "agent",
        "humanAgentSideConfig"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource": {
      "description": "Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE.",
      "properties": {
        "documents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported."
        }
      },
      "type": "object",
      "required": [
        "documents"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySourceResponse": {
      "description": "Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE.",
      "properties": {
        "documents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported."
        }
      },
      "type": "object",
      "required": [
        "documents"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource": {
      "description": "Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ.",
      "properties": {
        "knowledgeBases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported."
        }
      },
      "type": "object",
      "required": [
        "knowledgeBases"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySourceResponse": {
      "description": "Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ.",
      "properties": {
        "knowledgeBases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported."
        }
      },
      "type": "object",
      "required": [
        "knowledgeBases"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigResponse": {
      "description": "Config for suggestion query.",
      "properties": {
        "confidenceThreshold": {
          "type": "number",
          "description": "Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE, KNOWLEDGE_SEARCH, KNOWLEDGE_ASSIST, ENTITY_EXTRACTION."
        },
        "contextFilterSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettingsResponse",
          "description": "Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped."
        },
        "dialogflowQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceResponse",
          "description": "Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST."
        },
        "documentQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySourceResponse",
          "description": "Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE."
        },
        "knowledgeBaseQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySourceResponse",
          "description": "Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ."
        },
        "maxResults": {
          "type": "integer",
          "description": "Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20."
        }
      },
      "type": "object",
      "required": [
        "confidenceThreshold",
        "contextFilterSettings",
        "dialogflowQuerySource",
        "documentQuerySource",
        "knowledgeBaseQuerySource",
        "maxResults"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionTriggerSettings": {
      "description": "Settings of suggestion trigger.",
      "properties": {
        "noSmalltalk": {
          "type": "boolean",
          "description": "Do not trigger if last utterance is small talk."
        },
        "onlyEndUser": {
          "type": "boolean",
          "description": "Only trigger suggestion if participant role of last utterance is END_USER."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentAssistantConfigSuggestionTriggerSettingsResponse": {
      "description": "Settings of suggestion trigger.",
      "properties": {
        "noSmalltalk": {
          "type": "boolean",
          "description": "Do not trigger if last utterance is small talk."
        },
        "onlyEndUser": {
          "type": "boolean",
          "description": "Only trigger suggestion if participant role of last utterance is END_USER."
        }
      },
      "type": "object",
      "required": [
        "noSmalltalk",
        "onlyEndUser"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentHandoffConfig": {
      "description": "Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access.",
      "properties": {
        "livePersonConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentHandoffConfigLivePersonConfig",
          "description": "Uses LivePerson (https://www.liveperson.com)."
        },
        "salesforceLiveAgentConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentHandoffConfigSalesforceLiveAgentConfig",
          "description": "Uses Salesforce Live Agent."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentHandoffConfigLivePersonConfig": {
      "description": "Configuration specific to LivePerson (https://www.liveperson.com).",
      "properties": {
        "accountNumber": {
          "type": "string",
          "description": "Account number of the LivePerson account to connect. This is the account number you input at the login page."
        }
      },
      "type": "object",
      "required": [
        "accountNumber"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentHandoffConfigLivePersonConfigResponse": {
      "description": "Configuration specific to LivePerson (https://www.liveperson.com).",
      "properties": {
        "accountNumber": {
          "type": "string",
          "description": "Account number of the LivePerson account to connect. This is the account number you input at the login page."
        }
      },
      "type": "object",
      "required": [
        "accountNumber"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentHandoffConfigResponse": {
      "description": "Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access.",
      "properties": {
        "livePersonConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentHandoffConfigLivePersonConfigResponse",
          "description": "Uses LivePerson (https://www.liveperson.com)."
        },
        "salesforceLiveAgentConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentHandoffConfigSalesforceLiveAgentConfigResponse",
          "description": "Uses Salesforce Live Agent."
        }
      },
      "type": "object",
      "required": [
        "livePersonConfig",
        "salesforceLiveAgentConfig"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentHandoffConfigSalesforceLiveAgentConfig": {
      "description": "Configuration specific to Salesforce Live Agent.",
      "properties": {
        "buttonId": {
          "type": "string",
          "description": "Live Agent chat button ID."
        },
        "deploymentId": {
          "type": "string",
          "description": "Live Agent deployment ID."
        },
        "endpointDomain": {
          "type": "string",
          "description": "Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com."
        },
        "organizationId": {
          "type": "string",
          "description": "The organization ID of the Salesforce account."
        }
      },
      "type": "object",
      "required": [
        "buttonId",
        "deploymentId",
        "endpointDomain",
        "organizationId"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2HumanAgentHandoffConfigSalesforceLiveAgentConfigResponse": {
      "description": "Configuration specific to Salesforce Live Agent.",
      "properties": {
        "buttonId": {
          "type": "string",
          "description": "Live Agent chat button ID."
        },
        "deploymentId": {
          "type": "string",
          "description": "Live Agent deployment ID."
        },
        "endpointDomain": {
          "type": "string",
          "description": "Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com."
        },
        "organizationId": {
          "type": "string",
          "description": "The organization ID of the Salesforce account."
        }
      },
      "type": "object",
      "required": [
        "buttonId",
        "deploymentId",
        "endpointDomain",
        "organizationId"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2InputConfigResponse": {
      "description": "Represents the configuration of importing a set of conversation files in Google Cloud Storage.",
      "properties": {
        "gcsSource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2GcsSourcesResponse",
          "description": "The Cloud Storage URI has the form gs:////agent*.json. Wildcards are allowed and will be expanded into all matched JSON files, which will be read as one conversation per file."
        }
      },
      "type": "object",
      "required": [
        "gcsSource"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2InputDataset": {
      "description": "InputDataset used to create model or do evaluation. NextID:5",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "ConversationDataset resource name. Format: `projects//locations//conversationDatasets/`"
        }
      },
      "type": "object",
      "required": [
        "dataset"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2InputDatasetResponse": {
      "description": "InputDataset used to create model or do evaluation. NextID:5",
      "properties": {
        "dataset": {
          "type": "string",
          "description": "ConversationDataset resource name. Format: `projects//locations//conversationDatasets/`"
        }
      },
      "type": "object",
      "required": [
        "dataset"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentFollowupIntentInfoResponse": {
      "description": "Represents a single followup intent in the chain.",
      "properties": {
        "followupIntentName": {
          "type": "string",
          "description": "The unique identifier of the followup intent. Format: `projects//agent/intents/`."
        },
        "parentFollowupIntentName": {
          "type": "string",
          "description": "The unique identifier of the followup intent's parent. Format: `projects//agent/intents/`."
        }
      },
      "type": "object",
      "required": [
        "followupIntentName",
        "parentFollowupIntentName"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessage": {
      "description": "A rich response message. Corresponds to the intent `Response` field in the Dialogflow console. For more information, see [Rich response messages](https://cloud.google.com/dialogflow/docs/intents-rich-messages).",
      "properties": {
        "basicCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBasicCard",
          "description": "The basic card response for Actions on Google."
        },
        "browseCarouselCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCard",
          "description": "Browse carousel card for Actions on Google."
        },
        "card": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageCard",
          "description": "The card response."
        },
        "carouselSelect": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageCarouselSelect",
          "description": "The carousel card response for Actions on Google."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImage",
          "description": "The image response."
        },
        "linkOutSuggestion": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageLinkOutSuggestion",
          "description": "The link out suggestion chip for Actions on Google."
        },
        "listSelect": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageListSelect",
          "description": "The list card response for Actions on Google."
        },
        "mediaContent": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageMediaContent",
          "description": "The media content card for Actions on Google."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A custom platform-specific response."
        },
        "platform": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessagePlatform",
          "description": "Optional. The platform that this message is intended for."
        },
        "quickReplies": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageQuickReplies",
          "description": "The quick replies response."
        },
        "simpleResponses": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSimpleResponses",
          "description": "The voice and text-only responses for Actions on Google."
        },
        "suggestions": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSuggestions",
          "description": "The suggestion chips for Actions on Google."
        },
        "tableCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageTableCard",
          "description": "Table card for Actions on Google."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageText",
          "description": "The text response."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBasicCard": {
      "description": "The basic card message. Useful for displaying information.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBasicCardButton"
          },
          "description": "Optional. The collection of card buttons."
        },
        "formattedText": {
          "type": "string",
          "description": "Required, unless image is present. The body text of the card."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImage",
          "description": "Optional. The image for the card."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. The subtitle of the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the card."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBasicCardButton": {
      "description": "The button object that appears at the bottom of a card.",
      "properties": {
        "openUriAction": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriAction",
          "description": "Action to take when a user taps on the button."
        },
        "title": {
          "type": "string",
          "description": "The title of the button."
        }
      },
      "type": "object",
      "required": [
        "openUriAction",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriAction": {
      "description": "Opens the given URI.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The HTTP or HTTPS scheme URI."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriActionResponse": {
      "description": "Opens the given URI.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The HTTP or HTTPS scheme URI."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBasicCardButtonResponse": {
      "description": "The button object that appears at the bottom of a card.",
      "properties": {
        "openUriAction": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriActionResponse",
          "description": "Action to take when a user taps on the button."
        },
        "title": {
          "type": "string",
          "description": "The title of the button."
        }
      },
      "type": "object",
      "required": [
        "openUriAction",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBasicCardResponse": {
      "description": "The basic card message. Useful for displaying information.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBasicCardButtonResponse"
          },
          "description": "Optional. The collection of card buttons."
        },
        "formattedText": {
          "type": "string",
          "description": "Required, unless image is present. The body text of the card."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImageResponse",
          "description": "Optional. The image for the card."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. The subtitle of the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the card."
        }
      },
      "type": "object",
      "required": [
        "buttons",
        "formattedText",
        "image",
        "subtitle",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCard": {
      "description": "Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel",
      "properties": {
        "imageDisplayOptions": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardImageDisplayOptions",
          "description": "Optional. Settings for displaying the image. Applies to every image in items."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItem"
          },
          "description": "List of items in the Browse Carousel Card. Minimum of two items, maximum of ten."
        }
      },
      "type": "object",
      "required": [
        "items"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItem": {
      "description": "Browsing carousel tile",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the carousel item. Maximum of four lines of text."
        },
        "footer": {
          "type": "string",
          "description": "Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImage",
          "description": "Optional. Hero image for the carousel item."
        },
        "openUriAction": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction",
          "description": "Action to present to the user."
        },
        "title": {
          "type": "string",
          "description": "Title of the carousel item. Maximum of two lines of text."
        }
      },
      "type": "object",
      "required": [
        "openUriAction",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction": {
      "description": "Actions on Google action to open a given url.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL"
        },
        "urlTypeHint": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlActionUrlTypeHint",
          "description": "Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser."
        }
      },
      "type": "object",
      "required": [
        "url"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlActionResponse": {
      "description": "Actions on Google action to open a given url.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL"
        },
        "urlTypeHint": {
          "type": "string",
          "description": "Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser."
        }
      },
      "type": "object",
      "required": [
        "url",
        "urlTypeHint"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlActionUrlTypeHint": {
      "description": "Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.",
      "type": "string",
      "enum": [
        {
          "name": "UrlTypeHintUnspecified",
          "description": "Unspecified",
          "value": "URL_TYPE_HINT_UNSPECIFIED"
        },
        {
          "name": "AmpAction",
          "description": "Url would be an amp action",
          "value": "AMP_ACTION"
        },
        {
          "name": "AmpContent",
          "description": "URL that points directly to AMP content, or to a canonical URL which refers to AMP content via .",
          "value": "AMP_CONTENT"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemResponse": {
      "description": "Browsing carousel tile",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the carousel item. Maximum of four lines of text."
        },
        "footer": {
          "type": "string",
          "description": "Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImageResponse",
          "description": "Optional. Hero image for the carousel item."
        },
        "openUriAction": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlActionResponse",
          "description": "Action to present to the user."
        },
        "title": {
          "type": "string",
          "description": "Title of the carousel item. Maximum of two lines of text."
        }
      },
      "type": "object",
      "required": [
        "description",
        "footer",
        "image",
        "openUriAction",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardImageDisplayOptions": {
      "description": "Optional. Settings for displaying the image. Applies to every image in items.",
      "type": "string",
      "enum": [
        {
          "name": "ImageDisplayOptionsUnspecified",
          "description": "Fill the gaps between the image and the image container with gray bars.",
          "value": "IMAGE_DISPLAY_OPTIONS_UNSPECIFIED"
        },
        {
          "name": "Gray",
          "description": "Fill the gaps between the image and the image container with gray bars.",
          "value": "GRAY"
        },
        {
          "name": "White",
          "description": "Fill the gaps between the image and the image container with white bars.",
          "value": "WHITE"
        },
        {
          "name": "Cropped",
          "description": "Image is scaled such that the image width and height match or exceed the container dimensions. This may crop the top and bottom of the image if the scaled image height is greater than the container height, or crop the left and right of the image if the scaled image width is greater than the container width. This is similar to \"Zoom Mode\" on a widescreen TV when playing a 4:3 video.",
          "value": "CROPPED"
        },
        {
          "name": "BlurredBackground",
          "description": "Pad the gaps between image and image frame with a blurred copy of the same image.",
          "value": "BLURRED_BACKGROUND"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardResponse": {
      "description": "Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel",
      "properties": {
        "imageDisplayOptions": {
          "type": "string",
          "description": "Optional. Settings for displaying the image. Applies to every image in items."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemResponse"
          },
          "description": "List of items in the Browse Carousel Card. Minimum of two items, maximum of ten."
        }
      },
      "type": "object",
      "required": [
        "imageDisplayOptions",
        "items"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageCard": {
      "description": "The card response message.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageCardButton"
          },
          "description": "Optional. The collection of card buttons."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The public URI to an image file for the card."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. The subtitle of the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the card."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageCardButton": {
      "description": "Contains information about a button.",
      "properties": {
        "postback": {
          "type": "string",
          "description": "Optional. The text to send back to the Dialogflow API or a URI to open."
        },
        "text": {
          "type": "string",
          "description": "Optional. The text to show on the button."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageCardButtonResponse": {
      "description": "Contains information about a button.",
      "properties": {
        "postback": {
          "type": "string",
          "description": "Optional. The text to send back to the Dialogflow API or a URI to open."
        },
        "text": {
          "type": "string",
          "description": "Optional. The text to show on the button."
        }
      },
      "type": "object",
      "required": [
        "postback",
        "text"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageCardResponse": {
      "description": "The card response message.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageCardButtonResponse"
          },
          "description": "Optional. The collection of card buttons."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The public URI to an image file for the card."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. The subtitle of the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the card."
        }
      },
      "type": "object",
      "required": [
        "buttons",
        "imageUri",
        "subtitle",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageCarouselSelect": {
      "description": "The card for presenting a carousel of options to select from.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageCarouselSelectItem"
          },
          "description": "Carousel items."
        }
      },
      "type": "object",
      "required": [
        "items"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageCarouselSelectItem": {
      "description": "An item in the carousel.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The body text of the card."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImage",
          "description": "Optional. The image to display."
        },
        "info": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSelectItemInfo",
          "description": "Additional info about the option item."
        },
        "title": {
          "type": "string",
          "description": "Title of the carousel item."
        }
      },
      "type": "object",
      "required": [
        "info",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageCarouselSelectItemResponse": {
      "description": "An item in the carousel.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The body text of the card."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImageResponse",
          "description": "Optional. The image to display."
        },
        "info": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSelectItemInfoResponse",
          "description": "Additional info about the option item."
        },
        "title": {
          "type": "string",
          "description": "Title of the carousel item."
        }
      },
      "type": "object",
      "required": [
        "description",
        "image",
        "info",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageCarouselSelectResponse": {
      "description": "The card for presenting a carousel of options to select from.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageCarouselSelectItemResponse"
          },
          "description": "Carousel items."
        }
      },
      "type": "object",
      "required": [
        "items"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageColumnProperties": {
      "description": "Column properties for TableCard.",
      "properties": {
        "header": {
          "type": "string",
          "description": "Column heading."
        },
        "horizontalAlignment": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageColumnPropertiesHorizontalAlignment",
          "description": "Optional. Defines text alignment for all cells in this column."
        }
      },
      "type": "object",
      "required": [
        "header"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageColumnPropertiesHorizontalAlignment": {
      "description": "Optional. Defines text alignment for all cells in this column.",
      "type": "string",
      "enum": [
        {
          "name": "HorizontalAlignmentUnspecified",
          "description": "Text is aligned to the leading edge of the column.",
          "value": "HORIZONTAL_ALIGNMENT_UNSPECIFIED"
        },
        {
          "name": "Leading",
          "description": "Text is aligned to the leading edge of the column.",
          "value": "LEADING"
        },
        {
          "name": "Center",
          "description": "Text is centered in the column.",
          "value": "CENTER"
        },
        {
          "name": "Trailing",
          "description": "Text is aligned to the trailing edge of the column.",
          "value": "TRAILING"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageColumnPropertiesResponse": {
      "description": "Column properties for TableCard.",
      "properties": {
        "header": {
          "type": "string",
          "description": "Column heading."
        },
        "horizontalAlignment": {
          "type": "string",
          "description": "Optional. Defines text alignment for all cells in this column."
        }
      },
      "type": "object",
      "required": [
        "header",
        "horizontalAlignment"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageImage": {
      "description": "The image response message.",
      "properties": {
        "accessibilityText": {
          "type": "string",
          "description": "Optional. A text description of the image to be used for accessibility, e.g., screen readers."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The public URI to an image file."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageImageResponse": {
      "description": "The image response message.",
      "properties": {
        "accessibilityText": {
          "type": "string",
          "description": "Optional. A text description of the image to be used for accessibility, e.g., screen readers."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The public URI to an image file."
        }
      },
      "type": "object",
      "required": [
        "accessibilityText",
        "imageUri"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageLinkOutSuggestion": {
      "description": "The suggestion chip message that allows the user to jump out to the app or website associated with this agent.",
      "properties": {
        "destinationName": {
          "type": "string",
          "description": "The name of the app or site this chip is linking to."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the app or site to open when the user taps the suggestion chip."
        }
      },
      "type": "object",
      "required": [
        "destinationName",
        "uri"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageLinkOutSuggestionResponse": {
      "description": "The suggestion chip message that allows the user to jump out to the app or website associated with this agent.",
      "properties": {
        "destinationName": {
          "type": "string",
          "description": "The name of the app or site this chip is linking to."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the app or site to open when the user taps the suggestion chip."
        }
      },
      "type": "object",
      "required": [
        "destinationName",
        "uri"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageListSelect": {
      "description": "The card for presenting a list of options to select from.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageListSelectItem"
          },
          "description": "List items."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. Subtitle of the list."
        },
        "title": {
          "type": "string",
          "description": "Optional. The overall title of the list."
        }
      },
      "type": "object",
      "required": [
        "items"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageListSelectItem": {
      "description": "An item in the list.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The main text describing the item."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImage",
          "description": "Optional. The image to display."
        },
        "info": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSelectItemInfo",
          "description": "Additional information about this option."
        },
        "title": {
          "type": "string",
          "description": "The title of the list item."
        }
      },
      "type": "object",
      "required": [
        "info",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageListSelectItemResponse": {
      "description": "An item in the list.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The main text describing the item."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImageResponse",
          "description": "Optional. The image to display."
        },
        "info": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSelectItemInfoResponse",
          "description": "Additional information about this option."
        },
        "title": {
          "type": "string",
          "description": "The title of the list item."
        }
      },
      "type": "object",
      "required": [
        "description",
        "image",
        "info",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageListSelectResponse": {
      "description": "The card for presenting a list of options to select from.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageListSelectItemResponse"
          },
          "description": "List items."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. Subtitle of the list."
        },
        "title": {
          "type": "string",
          "description": "Optional. The overall title of the list."
        }
      },
      "type": "object",
      "required": [
        "items",
        "subtitle",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageMediaContent": {
      "description": "The media content card for Actions on Google.",
      "properties": {
        "mediaObjects": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObject"
          },
          "description": "List of media objects."
        },
        "mediaType": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageMediaContentMediaType",
          "description": "Optional. What type of media is the content (ie \"audio\")."
        }
      },
      "type": "object",
      "required": [
        "mediaObjects"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageMediaContentMediaType": {
      "description": "Optional. What type of media is the content (ie \"audio\").",
      "type": "string",
      "enum": [
        {
          "name": "ResponseMediaTypeUnspecified",
          "description": "Unspecified.",
          "value": "RESPONSE_MEDIA_TYPE_UNSPECIFIED"
        },
        {
          "name": "Audio",
          "description": "Response media type is audio.",
          "value": "AUDIO"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageMediaContentResponse": {
      "description": "The media content card for Actions on Google.",
      "properties": {
        "mediaObjects": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObjectResponse"
          },
          "description": "List of media objects."
        },
        "mediaType": {
          "type": "string",
          "description": "Optional. What type of media is the content (ie \"audio\")."
        }
      },
      "type": "object",
      "required": [
        "mediaObjects",
        "mediaType"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObject": {
      "description": "Response media object for media content card.",
      "properties": {
        "contentUrl": {
          "type": "string",
          "description": "Url where the media is stored."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of media card."
        },
        "icon": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImage",
          "description": "Optional. Icon to display above media content."
        },
        "largeImage": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImage",
          "description": "Optional. Image to display above media content."
        },
        "name": {
          "type": "string",
          "description": "Name of media card."
        }
      },
      "type": "object",
      "required": [
        "contentUrl",
        "name"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObjectResponse": {
      "description": "Response media object for media content card.",
      "properties": {
        "contentUrl": {
          "type": "string",
          "description": "Url where the media is stored."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of media card."
        },
        "icon": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImageResponse",
          "description": "Optional. Icon to display above media content."
        },
        "largeImage": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImageResponse",
          "description": "Optional. Image to display above media content."
        },
        "name": {
          "type": "string",
          "description": "Name of media card."
        }
      },
      "type": "object",
      "required": [
        "contentUrl",
        "description",
        "icon",
        "largeImage",
        "name"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessagePlatform": {
      "description": "Optional. The platform that this message is intended for.",
      "type": "string",
      "enum": [
        {
          "name": "PlatformUnspecified",
          "description": "Default platform.",
          "value": "PLATFORM_UNSPECIFIED"
        },
        {
          "name": "Facebook",
          "description": "Facebook.",
          "value": "FACEBOOK"
        },
        {
          "name": "Slack",
          "description": "Slack.",
          "value": "SLACK"
        },
        {
          "name": "Telegram",
          "description": "Telegram.",
          "value": "TELEGRAM"
        },
        {
          "name": "Kik",
          "description": "Kik.",
          "value": "KIK"
        },
        {
          "name": "Skype",
          "description": "Skype.",
          "value": "SKYPE"
        },
        {
          "name": "Line",
          "description": "Line.",
          "value": "LINE"
        },
        {
          "name": "Viber",
          "description": "Viber.",
          "value": "VIBER"
        },
        {
          "name": "ActionsOnGoogle",
          "description": "Google Assistant See [Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
          "value": "ACTIONS_ON_GOOGLE"
        },
        {
          "name": "GoogleHangouts",
          "description": "Google Hangouts.",
          "value": "GOOGLE_HANGOUTS"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageQuickReplies": {
      "description": "The quick replies response message.",
      "properties": {
        "quickReplies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of quick replies."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the collection of quick replies."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageQuickRepliesResponse": {
      "description": "The quick replies response message.",
      "properties": {
        "quickReplies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of quick replies."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the collection of quick replies."
        }
      },
      "type": "object",
      "required": [
        "quickReplies",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageResponse": {
      "description": "A rich response message. Corresponds to the intent `Response` field in the Dialogflow console. For more information, see [Rich response messages](https://cloud.google.com/dialogflow/docs/intents-rich-messages).",
      "properties": {
        "basicCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBasicCardResponse",
          "description": "The basic card response for Actions on Google."
        },
        "browseCarouselCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardResponse",
          "description": "Browse carousel card for Actions on Google."
        },
        "card": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageCardResponse",
          "description": "The card response."
        },
        "carouselSelect": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageCarouselSelectResponse",
          "description": "The carousel card response for Actions on Google."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImageResponse",
          "description": "The image response."
        },
        "linkOutSuggestion": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageLinkOutSuggestionResponse",
          "description": "The link out suggestion chip for Actions on Google."
        },
        "listSelect": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageListSelectResponse",
          "description": "The list card response for Actions on Google."
        },
        "mediaContent": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageMediaContentResponse",
          "description": "The media content card for Actions on Google."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A custom platform-specific response."
        },
        "platform": {
          "type": "string",
          "description": "Optional. The platform that this message is intended for."
        },
        "quickReplies": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageQuickRepliesResponse",
          "description": "The quick replies response."
        },
        "simpleResponses": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSimpleResponsesResponse",
          "description": "The voice and text-only responses for Actions on Google."
        },
        "suggestions": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSuggestionsResponse",
          "description": "The suggestion chips for Actions on Google."
        },
        "tableCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageTableCardResponse",
          "description": "Table card for Actions on Google."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageTextResponse",
          "description": "The text response."
        }
      },
      "type": "object",
      "required": [
        "basicCard",
        "browseCarouselCard",
        "card",
        "carouselSelect",
        "image",
        "linkOutSuggestion",
        "listSelect",
        "mediaContent",
        "payload",
        "platform",
        "quickReplies",
        "simpleResponses",
        "suggestions",
        "tableCard",
        "text"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSelectItemInfo": {
      "description": "Additional info about the select item for when it is triggered in a dialog.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A unique key that will be sent back to the agent if this response is given."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of synonyms that can also be used to trigger this item in dialog."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSelectItemInfoResponse": {
      "description": "Additional info about the select item for when it is triggered in a dialog.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A unique key that will be sent back to the agent if this response is given."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of synonyms that can also be used to trigger this item in dialog."
        }
      },
      "type": "object",
      "required": [
        "key",
        "synonyms"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSimpleResponse": {
      "description": "The simple response message containing speech or text.",
      "properties": {
        "displayText": {
          "type": "string",
          "description": "Optional. The text to display."
        },
        "ssml": {
          "type": "string",
          "description": "One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech."
        },
        "textToSpeech": {
          "type": "string",
          "description": "One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSimpleResponseResponse": {
      "description": "The simple response message containing speech or text.",
      "properties": {
        "displayText": {
          "type": "string",
          "description": "Optional. The text to display."
        },
        "ssml": {
          "type": "string",
          "description": "One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech."
        },
        "textToSpeech": {
          "type": "string",
          "description": "One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml."
        }
      },
      "type": "object",
      "required": [
        "displayText",
        "ssml",
        "textToSpeech"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSimpleResponses": {
      "description": "The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`.",
      "properties": {
        "simpleResponses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSimpleResponse"
          },
          "description": "The list of simple responses."
        }
      },
      "type": "object",
      "required": [
        "simpleResponses"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSimpleResponsesResponse": {
      "description": "The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`.",
      "properties": {
        "simpleResponses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSimpleResponseResponse"
          },
          "description": "The list of simple responses."
        }
      },
      "type": "object",
      "required": [
        "simpleResponses"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSuggestion": {
      "description": "The suggestion chip message that the user can tap to quickly post a reply to the conversation.",
      "properties": {
        "title": {
          "type": "string",
          "description": "The text shown the in the suggestion chip."
        }
      },
      "type": "object",
      "required": [
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSuggestionResponse": {
      "description": "The suggestion chip message that the user can tap to quickly post a reply to the conversation.",
      "properties": {
        "title": {
          "type": "string",
          "description": "The text shown the in the suggestion chip."
        }
      },
      "type": "object",
      "required": [
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSuggestions": {
      "description": "The collection of suggestions.",
      "properties": {
        "suggestions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSuggestion"
          },
          "description": "The list of suggested replies."
        }
      },
      "type": "object",
      "required": [
        "suggestions"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageSuggestionsResponse": {
      "description": "The collection of suggestions.",
      "properties": {
        "suggestions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageSuggestionResponse"
          },
          "description": "The list of suggested replies."
        }
      },
      "type": "object",
      "required": [
        "suggestions"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageTableCard": {
      "description": "Table card for Actions on Google.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBasicCardButton"
          },
          "description": "Optional. List of buttons for the card."
        },
        "columnProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageColumnProperties"
          },
          "description": "Optional. Display properties for the columns in this table."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImage",
          "description": "Optional. Image which should be displayed on the card."
        },
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageTableCardRow"
          },
          "description": "Optional. Rows in this table of data."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. Subtitle to the title."
        },
        "title": {
          "type": "string",
          "description": "Title of the card."
        }
      },
      "type": "object",
      "required": [
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageTableCardCell": {
      "description": "Cell of TableCardRow.",
      "properties": {
        "text": {
          "type": "string",
          "description": "Text in this cell."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageTableCardCellResponse": {
      "description": "Cell of TableCardRow.",
      "properties": {
        "text": {
          "type": "string",
          "description": "Text in this cell."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageTableCardResponse": {
      "description": "Table card for Actions on Google.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageBasicCardButtonResponse"
          },
          "description": "Optional. List of buttons for the card."
        },
        "columnProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageColumnPropertiesResponse"
          },
          "description": "Optional. Display properties for the columns in this table."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageImageResponse",
          "description": "Optional. Image which should be displayed on the card."
        },
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageTableCardRowResponse"
          },
          "description": "Optional. Rows in this table of data."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. Subtitle to the title."
        },
        "title": {
          "type": "string",
          "description": "Title of the card."
        }
      },
      "type": "object",
      "required": [
        "buttons",
        "columnProperties",
        "image",
        "rows",
        "subtitle",
        "title"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageTableCardRow": {
      "description": "Row of TableCard.",
      "properties": {
        "cells": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageTableCardCell"
          },
          "description": "Optional. List of cells that make up this row."
        },
        "dividerAfter": {
          "type": "boolean",
          "description": "Optional. Whether to add a visual divider after this row."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageTableCardRowResponse": {
      "description": "Row of TableCard.",
      "properties": {
        "cells": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageTableCardCellResponse"
          },
          "description": "Optional. List of cells that make up this row."
        },
        "dividerAfter": {
          "type": "boolean",
          "description": "Optional. Whether to add a visual divider after this row."
        }
      },
      "type": "object",
      "required": [
        "cells",
        "dividerAfter"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageText": {
      "description": "The text response message.",
      "properties": {
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of the agent's responses."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentMessageTextResponse": {
      "description": "The text response message.",
      "properties": {
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of the agent's responses."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentParameter": {
      "description": "Represents intent parameters.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "Optional. The default value to use when the `value` yields an empty result. Default values can be extracted from contexts by using the following syntax: `#context_name.parameter_name`."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "entityTypeDisplayName": {
          "type": "string",
          "description": "Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided."
        },
        "isList": {
          "type": "boolean",
          "description": "Optional. Indicates whether the parameter represents a list of values."
        },
        "mandatory": {
          "type": "boolean",
          "description": "Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this parameter."
        },
        "prompts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter."
        },
        "value": {
          "type": "string",
          "description": "Optional. The definition of the parameter value. It can be: - a constant string, - a parameter value defined as `$parameter_name`, - an original parameter value defined as `$parameter_name.original`, - a parameter value from some context defined as `#context_name.parameter_name`."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentParameterResponse": {
      "description": "Represents intent parameters.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "Optional. The default value to use when the `value` yields an empty result. Default values can be extracted from contexts by using the following syntax: `#context_name.parameter_name`."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "entityTypeDisplayName": {
          "type": "string",
          "description": "Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided."
        },
        "isList": {
          "type": "boolean",
          "description": "Optional. Indicates whether the parameter represents a list of values."
        },
        "mandatory": {
          "type": "boolean",
          "description": "Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this parameter."
        },
        "prompts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter."
        },
        "value": {
          "type": "string",
          "description": "Optional. The definition of the parameter value. It can be: - a constant string, - a parameter value defined as `$parameter_name`, - an original parameter value defined as `$parameter_name.original`, - a parameter value from some context defined as `#context_name.parameter_name`."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "displayName",
        "entityTypeDisplayName",
        "isList",
        "mandatory",
        "name",
        "prompts",
        "value"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentTrainingPhrase": {
      "description": "Represents an example that the agent is trained on.",
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentTrainingPhrasePart"
          },
          "description": "The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `entity_type`, `alias`, and `user_defined` fields are all set."
        },
        "timesAddedCount": {
          "type": "integer",
          "description": "Optional. Indicates how many times this example was added to the intent. Each time a developer adds an existing sample by editing an intent or training, this counter is increased."
        },
        "type": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentTrainingPhraseType",
          "description": "The type of the training phrase."
        }
      },
      "type": "object",
      "required": [
        "parts",
        "type"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentTrainingPhrasePart": {
      "description": "Represents a part of a training phrase.",
      "properties": {
        "alias": {
          "type": "string",
          "description": "Optional. The parameter name for the value extracted from the annotated part of the example. This field is required for annotated parts of the training phrase."
        },
        "entityType": {
          "type": "string",
          "description": "Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase."
        },
        "text": {
          "type": "string",
          "description": "The text for this part."
        },
        "userDefined": {
          "type": "boolean",
          "description": "Optional. Indicates whether the text was manually annotated. This field is set to true when the Dialogflow Console is used to manually annotate the part. When creating an annotated part with the API, you must set this to true."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentTrainingPhrasePartResponse": {
      "description": "Represents a part of a training phrase.",
      "properties": {
        "alias": {
          "type": "string",
          "description": "Optional. The parameter name for the value extracted from the annotated part of the example. This field is required for annotated parts of the training phrase."
        },
        "entityType": {
          "type": "string",
          "description": "Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase."
        },
        "text": {
          "type": "string",
          "description": "The text for this part."
        },
        "userDefined": {
          "type": "boolean",
          "description": "Optional. Indicates whether the text was manually annotated. This field is set to true when the Dialogflow Console is used to manually annotate the part. When creating an annotated part with the API, you must set this to true."
        }
      },
      "type": "object",
      "required": [
        "alias",
        "entityType",
        "text",
        "userDefined"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentTrainingPhraseResponse": {
      "description": "Represents an example that the agent is trained on.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The unique identifier of this training phrase."
        },
        "parts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentTrainingPhrasePartResponse"
          },
          "description": "The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `entity_type`, `alias`, and `user_defined` fields are all set."
        },
        "timesAddedCount": {
          "type": "integer",
          "description": "Optional. Indicates how many times this example was added to the intent. Each time a developer adds an existing sample by editing an intent or training, this counter is increased."
        },
        "type": {
          "type": "string",
          "description": "The type of the training phrase."
        }
      },
      "type": "object",
      "required": [
        "name",
        "parts",
        "timesAddedCount",
        "type"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2IntentTrainingPhraseType": {
      "description": "Required. The type of the training phrase.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Not specified. This value should never be used.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Example",
          "description": "Examples do not contain @-prefixed entity type names, but example parts can be annotated with entity types.",
          "value": "EXAMPLE"
        },
        {
          "name": "Template",
          "description": "Templates are not annotated with entity types, but they can contain @-prefixed entity type names as substrings. Template mode has been deprecated. Example mode is the only supported way to create new training phrases. If you have existing training phrases that you've created in template mode, those will continue to work.",
          "value": "TEMPLATE"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2LoggingConfig": {
      "description": "Defines logging behavior for conversation lifecycle events.",
      "properties": {
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2LoggingConfigResponse": {
      "description": "Defines logging behavior for conversation lifecycle events.",
      "properties": {
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos."
        }
      },
      "type": "object",
      "required": [
        "enableStackdriverLogging"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2NotificationConfig": {
      "description": "Defines notification behavior.",
      "properties": {
        "messageFormat": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfigMessageFormat",
          "description": "Format of message."
        },
        "topic": {
          "type": "string",
          "description": "Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. For telephony integration to receive notification, make sure either this topic is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. For chat integration to receive notification, make sure API caller has been granted the `Dialogflow Service Agent` role for the topic. Format: `projects//locations//topics/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2NotificationConfigMessageFormat": {
      "description": "Format of message.",
      "type": "string",
      "enum": [
        {
          "name": "MessageFormatUnspecified",
          "description": "If it is unspecified, PROTO will be used.",
          "value": "MESSAGE_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Proto",
          "description": "Pub/Sub message will be serialized proto.",
          "value": "PROTO"
        },
        {
          "name": "Json",
          "description": "Pub/Sub message will be json.",
          "value": "JSON"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2NotificationConfigResponse": {
      "description": "Defines notification behavior.",
      "properties": {
        "messageFormat": {
          "type": "string",
          "description": "Format of message."
        },
        "topic": {
          "type": "string",
          "description": "Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. For telephony integration to receive notification, make sure either this topic is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. For chat integration to receive notification, make sure API caller has been granted the `Dialogflow Service Agent` role for the topic. Format: `projects//locations//topics/`."
        }
      },
      "type": "object",
      "required": [
        "messageFormat",
        "topic"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SmartReplyMetricsResponse": {
      "description": "The evaluation metrics for smart reply model.",
      "properties": {
        "allowlistCoverage": {
          "type": "number",
          "description": "Percentage of target participant messages in the evaluation dataset for which similar messages have appeared at least once in the allowlist. Should be [0, 1]."
        },
        "conversationCount": {
          "type": "string",
          "description": "Total number of conversations used to generate this metric."
        },
        "topNMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SmartReplyMetricsTopNMetricsResponse"
          },
          "description": "Metrics of top n smart replies, sorted by TopNMetric.n."
        }
      },
      "type": "object",
      "required": [
        "allowlistCoverage",
        "conversationCount",
        "topNMetrics"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SmartReplyMetricsTopNMetricsResponse": {
      "description": "Evaluation metrics when retrieving `n` smart replies with the model.",
      "properties": {
        "n": {
          "type": "integer",
          "description": "Number of retrieved smart replies. For example, when `n` is 3, this evaluation contains metrics for when Dialogflow retrieves 3 smart replies with the model."
        },
        "recall": {
          "type": "number",
          "description": "Defined as `number of queries whose top n smart replies have at least one similar (token match similarity above the defined threshold) reply as the real reply` divided by `number of queries with at least one smart reply`. Value ranges from 0.0 to 1.0 inclusive."
        }
      },
      "type": "object",
      "required": [
        "n",
        "recall"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SmartReplyModelMetadata": {
      "description": "Metadata for smart reply models.",
      "properties": {
        "trainingModelType": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SmartReplyModelMetadataTrainingModelType",
          "description": "Optional. Type of the smart reply model. If not provided, model_type is used."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SmartReplyModelMetadataResponse": {
      "description": "Metadata for smart reply models.",
      "properties": {
        "trainingModelType": {
          "type": "string",
          "description": "Optional. Type of the smart reply model. If not provided, model_type is used."
        }
      },
      "type": "object",
      "required": [
        "trainingModelType"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SmartReplyModelMetadataTrainingModelType": {
      "description": "Optional. Type of the smart reply model. If not provided, model_type is used.",
      "type": "string",
      "enum": [
        {
          "name": "ModelTypeUnspecified",
          "description": "ModelType unspecified.",
          "value": "MODEL_TYPE_UNSPECIFIED"
        },
        {
          "name": "SmartReplyDualEncoderModel",
          "description": "ModelType smart reply dual encoder model.",
          "value": "SMART_REPLY_DUAL_ENCODER_MODEL"
        },
        {
          "name": "SmartReplyBertModel",
          "description": "ModelType smart reply bert model.",
          "value": "SMART_REPLY_BERT_MODEL"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SpeechToTextConfig": {
      "description": "Configures speech transcription for ConversationProfile.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Which Speech model to select. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then a default model is used. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details."
        },
        "speechModelVariant": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SpeechToTextConfigSpeechModelVariant",
          "description": "The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error."
        },
        "useTimeoutBasedEndpointing": {
          "type": "boolean",
          "description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SpeechToTextConfigResponse": {
      "description": "Configures speech transcription for ConversationProfile.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Which Speech model to select. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then a default model is used. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details."
        },
        "speechModelVariant": {
          "type": "string",
          "description": "The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error."
        },
        "useTimeoutBasedEndpointing": {
          "type": "boolean",
          "description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value."
        }
      },
      "type": "object",
      "required": [
        "model",
        "speechModelVariant",
        "useTimeoutBasedEndpointing"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SpeechToTextConfigSpeechModelVariant": {
      "description": "The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.",
      "type": "string",
      "enum": [
        {
          "name": "SpeechModelVariantUnspecified",
          "description": "No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.",
          "value": "SPEECH_MODEL_VARIANT_UNSPECIFIED"
        },
        {
          "name": "UseBestAvailable",
          "description": "Use the best available variant of the Speech model that the caller is eligible for. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible for enhanced models.",
          "value": "USE_BEST_AVAILABLE"
        },
        {
          "name": "UseStandard",
          "description": "Use standard model variant even if an enhanced model is available. See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) for details about enhanced models.",
          "value": "USE_STANDARD"
        },
        {
          "name": "UseEnhanced",
          "description": "Use an enhanced model variant: * If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant. The [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) describes which models have enhanced variants. * If the API caller isn't eligible for enhanced models, Dialogflow returns an error. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible.",
          "value": "USE_ENHANCED"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SuggestionFeature": {
      "description": "The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SuggestionFeatureType",
          "description": "Type of Human Agent Assistant API feature to request."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SuggestionFeatureResponse": {
      "description": "The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of Human Agent Assistant API feature to request."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SuggestionFeatureType": {
      "description": "Type of Human Agent Assistant API feature to request.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified feature type.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "ArticleSuggestion",
          "description": "Run article suggestion model for chat.",
          "value": "ARTICLE_SUGGESTION"
        },
        {
          "name": "Faq",
          "description": "Run FAQ model for chat.",
          "value": "FAQ"
        },
        {
          "name": "SmartReply",
          "description": "Run smart reply model for chat.",
          "value": "SMART_REPLY"
        },
        {
          "name": "KnowledgeSearch",
          "description": "Run knowledge search with text input from agent or text generated query.",
          "value": "KNOWLEDGE_SEARCH"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SynthesizeSpeechConfig": {
      "description": "Configuration of how speech should be synthesized.",
      "properties": {
        "effectsProfileId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given."
        },
        "pitch": {
          "type": "number",
          "description": "Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch."
        },
        "speakingRate": {
          "type": "number",
          "description": "Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other values < 0.25 or > 4.0 will return an error."
        },
        "voice": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2VoiceSelectionParams",
          "description": "Optional. The desired voice of the synthesized audio."
        },
        "volumeGainDb": {
          "type": "number",
          "description": "Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2SynthesizeSpeechConfigResponse": {
      "description": "Configuration of how speech should be synthesized.",
      "properties": {
        "effectsProfileId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given."
        },
        "pitch": {
          "type": "number",
          "description": "Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch."
        },
        "speakingRate": {
          "type": "number",
          "description": "Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other values < 0.25 or > 4.0 will return an error."
        },
        "voice": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2VoiceSelectionParamsResponse",
          "description": "Optional. The desired voice of the synthesized audio."
        },
        "volumeGainDb": {
          "type": "number",
          "description": "Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that."
        }
      },
      "type": "object",
      "required": [
        "effectsProfileId",
        "pitch",
        "speakingRate",
        "voice",
        "volumeGainDb"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2TextToSpeechSettings": {
      "description": "Instructs the speech synthesizer on how to generate the output audio content.",
      "properties": {
        "enableTextToSpeech": {
          "type": "boolean",
          "description": "Optional. Indicates whether text to speech is enabled. Even when this field is false, other settings in this proto are still retained."
        },
        "outputAudioEncoding": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2TextToSpeechSettingsOutputAudioEncoding",
          "description": "Audio encoding of the synthesized audio content."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "Optional. The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice's natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality)."
        },
        "synthesizeSpeechConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/docs/reference/language) to SynthesizeSpeechConfig."
        }
      },
      "type": "object",
      "required": [
        "outputAudioEncoding"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2TextToSpeechSettingsOutputAudioEncoding": {
      "description": "Required. Audio encoding of the synthesized audio content.",
      "type": "string",
      "enum": [
        {
          "name": "OutputAudioEncodingUnspecified",
          "description": "Not specified.",
          "value": "OUTPUT_AUDIO_ENCODING_UNSPECIFIED"
        },
        {
          "name": "OutputAudioEncodingLinear16",
          "description": "Uncompressed 16-bit signed little-endian samples (Linear PCM). Audio content returned as LINEAR16 also contains a WAV header.",
          "value": "OUTPUT_AUDIO_ENCODING_LINEAR_16"
        },
        {
          "name": "OutputAudioEncodingMp3",
          "description": "MP3 audio at 32kbps.",
          "value": "OUTPUT_AUDIO_ENCODING_MP3"
        },
        {
          "name": "OutputAudioEncodingMp364Kbps",
          "description": "MP3 audio at 64kbps.",
          "value": "OUTPUT_AUDIO_ENCODING_MP3_64_KBPS"
        },
        {
          "name": "OutputAudioEncodingOggOpus",
          "description": "Opus encoded audio wrapped in an ogg container. The result will be a file which can be played natively on Android, and in browsers (at least Chrome and Firefox). The quality of the encoding is considerably higher than MP3 while using approximately the same bitrate.",
          "value": "OUTPUT_AUDIO_ENCODING_OGG_OPUS"
        },
        {
          "name": "OutputAudioEncodingMulaw",
          "description": "8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
          "value": "OUTPUT_AUDIO_ENCODING_MULAW"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2TextToSpeechSettingsResponse": {
      "description": "Instructs the speech synthesizer on how to generate the output audio content.",
      "properties": {
        "enableTextToSpeech": {
          "type": "boolean",
          "description": "Optional. Indicates whether text to speech is enabled. Even when this field is false, other settings in this proto are still retained."
        },
        "outputAudioEncoding": {
          "type": "string",
          "description": "Audio encoding of the synthesized audio content."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "Optional. The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice's natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality)."
        },
        "synthesizeSpeechConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/docs/reference/language) to SynthesizeSpeechConfig."
        }
      },
      "type": "object",
      "required": [
        "enableTextToSpeech",
        "outputAudioEncoding",
        "sampleRateHertz",
        "synthesizeSpeechConfigs"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2VoiceSelectionParams": {
      "description": "Description of which voice to use for speech synthesis.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and ssml_gender."
        },
        "ssmlGender": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2VoiceSelectionParamsSsmlGender",
          "description": "Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2VoiceSelectionParamsResponse": {
      "description": "Description of which voice to use for speech synthesis.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and ssml_gender."
        },
        "ssmlGender": {
          "type": "string",
          "description": "Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request."
        }
      },
      "type": "object",
      "required": [
        "name",
        "ssmlGender"
      ]
    },
    "google-native:dialogflow/v2:GoogleCloudDialogflowV2VoiceSelectionParamsSsmlGender": {
      "description": "Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request.",
      "type": "string",
      "enum": [
        {
          "name": "SsmlVoiceGenderUnspecified",
          "description": "An unspecified gender, which means that the client doesn't care which gender the selected voice will have.",
          "value": "SSML_VOICE_GENDER_UNSPECIFIED"
        },
        {
          "name": "SsmlVoiceGenderMale",
          "description": "A male voice.",
          "value": "SSML_VOICE_GENDER_MALE"
        },
        {
          "name": "SsmlVoiceGenderFemale",
          "description": "A female voice.",
          "value": "SSML_VOICE_GENDER_FEMALE"
        },
        {
          "name": "SsmlVoiceGenderNeutral",
          "description": "A gender-neutral voice.",
          "value": "SSML_VOICE_GENDER_NEUTRAL"
        }
      ]
    },
    "google-native:dialogflow/v2:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:dialogflow/v2:IntentDefaultResponsePlatformsItem": {
      "type": "string",
      "enum": [
        {
          "name": "PlatformUnspecified",
          "description": "Default platform.",
          "value": "PLATFORM_UNSPECIFIED"
        },
        {
          "name": "Facebook",
          "description": "Facebook.",
          "value": "FACEBOOK"
        },
        {
          "name": "Slack",
          "description": "Slack.",
          "value": "SLACK"
        },
        {
          "name": "Telegram",
          "description": "Telegram.",
          "value": "TELEGRAM"
        },
        {
          "name": "Kik",
          "description": "Kik.",
          "value": "KIK"
        },
        {
          "name": "Skype",
          "description": "Skype.",
          "value": "SKYPE"
        },
        {
          "name": "Line",
          "description": "Line.",
          "value": "LINE"
        },
        {
          "name": "Viber",
          "description": "Viber.",
          "value": "VIBER"
        },
        {
          "name": "ActionsOnGoogle",
          "description": "Google Assistant See [Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
          "value": "ACTIONS_ON_GOOGLE"
        },
        {
          "name": "GoogleHangouts",
          "description": "Google Hangouts.",
          "value": "GOOGLE_HANGOUTS"
        }
      ]
    },
    "google-native:dialogflow/v2:IntentWebhookState": {
      "description": "Optional. Indicates whether webhooks are enabled for the intent.",
      "type": "string",
      "enum": [
        {
          "name": "WebhookStateUnspecified",
          "description": "Webhook is disabled in the agent and in the intent.",
          "value": "WEBHOOK_STATE_UNSPECIFIED"
        },
        {
          "name": "WebhookStateEnabled",
          "description": "Webhook is enabled in the agent and in the intent.",
          "value": "WEBHOOK_STATE_ENABLED"
        },
        {
          "name": "WebhookStateEnabledForSlotFilling",
          "description": "Webhook is enabled in the agent and in the intent. Also, each slot filling prompt is forwarded to the webhook.",
          "value": "WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING"
        }
      ]
    },
    "google-native:dialogflow/v2:ParticipantRole": {
      "description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.",
      "type": "string",
      "enum": [
        {
          "name": "RoleUnspecified",
          "description": "Participant role not set.",
          "value": "ROLE_UNSPECIFIED"
        },
        {
          "name": "HumanAgent",
          "description": "Participant is a human agent.",
          "value": "HUMAN_AGENT"
        },
        {
          "name": "AutomatedAgent",
          "description": "Participant is an automated agent, such as a Dialogflow agent.",
          "value": "AUTOMATED_AGENT"
        },
        {
          "name": "EndUser",
          "description": "Participant is an end user that has called or chatted with Dialogflow services.",
          "value": "END_USER"
        }
      ]
    },
    "google-native:dialogflow/v2:SessionEntityTypeEntityOverrideMode": {
      "description": "Required. Indicates whether the additional data should override or supplement the custom entity type definition.",
      "type": "string",
      "enum": [
        {
          "name": "EntityOverrideModeUnspecified",
          "description": "Not specified. This value should be never used.",
          "value": "ENTITY_OVERRIDE_MODE_UNSPECIFIED"
        },
        {
          "name": "EntityOverrideModeOverride",
          "description": "The collection of session entities overrides the collection of entities in the corresponding custom entity type.",
          "value": "ENTITY_OVERRIDE_MODE_OVERRIDE"
        },
        {
          "name": "EntityOverrideModeSupplement",
          "description": "The collection of session entities extends the collection of entities in the corresponding custom entity type. Note: Even in this override mode calls to `ListSessionEntityTypes`, `GetSessionEntityType`, `CreateSessionEntityType` and `UpdateSessionEntityType` only return the additional entities added in this session entity type. If you want to get the supplemented list, please call EntityTypes.GetEntityType on the custom entity type and merge.",
          "value": "ENTITY_OVERRIDE_MODE_SUPPLEMENT"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:ConversationConversationStage": {
      "description": "The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.",
      "type": "string",
      "enum": [
        {
          "name": "ConversationStageUnspecified",
          "description": "Unknown. Should never be used after a conversation is successfully created.",
          "value": "CONVERSATION_STAGE_UNSPECIFIED"
        },
        {
          "name": "VirtualAgentStage",
          "description": "The conversation should return virtual agent responses into the conversation.",
          "value": "VIRTUAL_AGENT_STAGE"
        },
        {
          "name": "HumanAssistStage",
          "description": "The conversation should not provide responses, just listen and provide suggestions.",
          "value": "HUMAN_ASSIST_STAGE"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:DocumentKnowledgeTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "KnowledgeTypeUnspecified",
          "description": "The type is unspecified or arbitrary.",
          "value": "KNOWLEDGE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Faq",
          "description": "The document content contains question and answer pairs as either HTML or CSV. Typical FAQ HTML formats are parsed accurately, but unusual formats may fail to be parsed. CSV must have questions in the first column and answers in the second, with no header. Because of this explicit format, they are always parsed accurately.",
          "value": "FAQ"
        },
        {
          "name": "ExtractiveQa",
          "description": "Documents for which unstructured text is extracted and used for question answering.",
          "value": "EXTRACTIVE_QA"
        },
        {
          "name": "ArticleSuggestion",
          "description": "The entire document content as a whole can be used for query results. Only for Contact Center Solutions on Dialogflow.",
          "value": "ARTICLE_SUGGESTION"
        },
        {
          "name": "AgentFacingSmartReply",
          "description": "The document contains agent-facing Smart Reply entries.",
          "value": "AGENT_FACING_SMART_REPLY"
        },
        {
          "name": "SmartReply",
          "description": "The legacy enum for agent-facing smart reply feature.",
          "value": "SMART_REPLY"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:EntityTypeAutoExpansionMode": {
      "description": "Optional. Indicates whether the entity type can be automatically expanded.",
      "type": "string",
      "enum": [
        {
          "name": "AutoExpansionModeUnspecified",
          "description": "Auto expansion disabled for the entity.",
          "value": "AUTO_EXPANSION_MODE_UNSPECIFIED"
        },
        {
          "name": "AutoExpansionModeDefault",
          "description": "Allows an agent to recognize values that have not been explicitly listed in the entity.",
          "value": "AUTO_EXPANSION_MODE_DEFAULT"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:EntityTypeKind": {
      "description": "Required. Indicates the kind of entity type.",
      "type": "string",
      "enum": [
        {
          "name": "KindUnspecified",
          "description": "Not specified. This value should be never used.",
          "value": "KIND_UNSPECIFIED"
        },
        {
          "name": "KindMap",
          "description": "Map entity types allow mapping of a group of synonyms to a reference value.",
          "value": "KIND_MAP"
        },
        {
          "name": "KindList",
          "description": "List entity types contain a set of entries that do not map to reference values. However, list entity types can contain references to other entity types (with or without aliases).",
          "value": "KIND_LIST"
        },
        {
          "name": "KindRegexp",
          "description": "Regexp entity types allow to specify regular expressions in entries values.",
          "value": "KIND_REGEXP"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1AutomatedAgentConfig": {
      "description": "Defines the Automated Agent to connect to a conversation.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2beta1#google.cloud.dialogflow.v2beta1.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used."
        },
        "sessionTtl": {
          "type": "string",
          "description": "Optional. Sets Dialogflow CX session life time. By default, a Dialogflow CX session remains active and its data is stored for 30 minutes after the last request is sent for the session. This value should be no longer than 1 day."
        }
      },
      "type": "object",
      "required": [
        "agent"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1AutomatedAgentConfigResponse": {
      "description": "Defines the Automated Agent to connect to a conversation.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2beta1#google.cloud.dialogflow.v2beta1.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used."
        },
        "sessionTtl": {
          "type": "string",
          "description": "Optional. Sets Dialogflow CX session life time. By default, a Dialogflow CX session remains active and its data is stored for 30 minutes after the last request is sent for the session. This value should be no longer than 1 day."
        }
      },
      "type": "object",
      "required": [
        "agent",
        "sessionTtl"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1Context": {
      "description": "Dialogflow contexts are similar to natural language context. If a person says to you \"they are orange\", you need context in order to understand what \"they\" is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).",
      "properties": {
        "lifespanCount": {
          "type": "integer",
          "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`"
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1ContextResponse": {
      "description": "Dialogflow contexts are similar to natural language context. If a person says to you \"they are orange\", you need context in order to understand what \"they\" is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).",
      "properties": {
        "lifespanCount": {
          "type": "integer",
          "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`"
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value."
        }
      },
      "type": "object",
      "required": [
        "lifespanCount",
        "name",
        "parameters"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1ConversationPhoneNumberResponse": {
      "description": "Represents a phone number for telephony integration. It allows for connecting a particular conversation over telephony.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "The phone number to connect to this conversation."
        }
      },
      "type": "object",
      "required": [
        "phoneNumber"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1DocumentReloadStatusResponse": {
      "description": "The status of a reload attempt.",
      "properties": {
        "status": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleRpcStatusResponse",
          "description": "The status of a reload attempt or the initial load."
        },
        "time": {
          "type": "string",
          "description": "The time of a reload attempt. This reload may have been triggered automatically or manually and may not have succeeded."
        }
      },
      "type": "object",
      "required": [
        "status",
        "time"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1EntityTypeEntity": {
      "description": "An **entity entry** for an associated entity type.",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`."
        },
        "value": {
          "type": "string",
          "description": "The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A reference value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases)."
        }
      },
      "type": "object",
      "required": [
        "synonyms",
        "value"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1EntityTypeEntityResponse": {
      "description": "An **entity entry** for an associated entity type.",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`."
        },
        "value": {
          "type": "string",
          "description": "The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A reference value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases)."
        }
      },
      "type": "object",
      "required": [
        "synonyms",
        "value"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1Fulfillment": {
      "description": "By default, your agent responds to a matched intent with a static response. As an alternative, you can provide a more dynamic response by using fulfillment. When you enable fulfillment for an intent, Dialogflow responds to that intent by calling a service that you define. For example, if an end-user wants to schedule a haircut on Friday, your service can check your database and respond to the end-user with availability information for Friday. For more information, see the [fulfillment guide](https://cloud.google.com/dialogflow/docs/fulfillment-overview).",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the fulfillment, unique within the agent. This field is not used for Fulfillment in an Environment."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether fulfillment is enabled."
        },
        "features": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1FulfillmentFeature"
          },
          "description": "The field defines whether the fulfillment is enabled for certain features."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1FulfillmentGenericWebService",
          "description": "Configuration for a generic web service."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment` This field is not used for Fulfillment in an Environment."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1FulfillmentFeature": {
      "description": "Whether fulfillment is enabled for the specific feature.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1FulfillmentFeatureType",
          "description": "The type of the feature that enabled for fulfillment."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1FulfillmentFeatureResponse": {
      "description": "Whether fulfillment is enabled for the specific feature.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the feature that enabled for fulfillment."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1FulfillmentFeatureType": {
      "description": "The type of the feature that enabled for fulfillment.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Feature type not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Smalltalk",
          "description": "Fulfillment is enabled for SmallTalk.",
          "value": "SMALLTALK"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1FulfillmentGenericWebService": {
      "description": "Represents configuration for a generic web service. Dialogflow supports two mechanisms for authentications: - Basic authentication with username and password. - Authentication with additional authentication headers. More information could be found at: https://cloud.google.com/dialogflow/docs/fulfillment-configure.",
      "properties": {
        "isCloudFunction": {
          "type": "boolean",
          "description": "Optional. Indicates if generic web service is created through Cloud Functions integration. Defaults to false. is_cloud_function is deprecated. Cloud functions can be configured by its uri as a regular web service now."
        },
        "password": {
          "type": "string",
          "description": "The password for HTTP Basic authentication."
        },
        "requestHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HTTP request headers to send together with fulfillment requests."
        },
        "uri": {
          "type": "string",
          "description": "The fulfillment URI for receiving POST requests. It must use https protocol."
        },
        "username": {
          "type": "string",
          "description": "The user name for HTTP Basic authentication."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1FulfillmentGenericWebServiceResponse": {
      "description": "Represents configuration for a generic web service. Dialogflow supports two mechanisms for authentications: - Basic authentication with username and password. - Authentication with additional authentication headers. More information could be found at: https://cloud.google.com/dialogflow/docs/fulfillment-configure.",
      "properties": {
        "isCloudFunction": {
          "type": "boolean",
          "description": "Optional. Indicates if generic web service is created through Cloud Functions integration. Defaults to false. is_cloud_function is deprecated. Cloud functions can be configured by its uri as a regular web service now."
        },
        "password": {
          "type": "string",
          "description": "The password for HTTP Basic authentication."
        },
        "requestHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HTTP request headers to send together with fulfillment requests."
        },
        "uri": {
          "type": "string",
          "description": "The fulfillment URI for receiving POST requests. It must use https protocol."
        },
        "username": {
          "type": "string",
          "description": "The user name for HTTP Basic authentication."
        }
      },
      "type": "object",
      "required": [
        "isCloudFunction",
        "password",
        "requestHeaders",
        "uri",
        "username"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1FulfillmentResponse": {
      "description": "By default, your agent responds to a matched intent with a static response. As an alternative, you can provide a more dynamic response by using fulfillment. When you enable fulfillment for an intent, Dialogflow responds to that intent by calling a service that you define. For example, if an end-user wants to schedule a haircut on Friday, your service can check your database and respond to the end-user with availability information for Friday. For more information, see the [fulfillment guide](https://cloud.google.com/dialogflow/docs/fulfillment-overview).",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the fulfillment, unique within the agent. This field is not used for Fulfillment in an Environment."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether fulfillment is enabled."
        },
        "features": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1FulfillmentFeatureResponse"
          },
          "description": "The field defines whether the fulfillment is enabled for certain features."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1FulfillmentGenericWebServiceResponse",
          "description": "Configuration for a generic web service."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment` This field is not used for Fulfillment in an Environment."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "enabled",
        "features",
        "genericWebService",
        "name"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfig": {
      "description": "Defines the Human Agent Assistant to connect to a conversation.",
      "properties": {
        "endUserSuggestionConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig",
          "description": "Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access."
        },
        "humanAgentSuggestionConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig",
          "description": "Configuration for agent assistance of human agent participant."
        },
        "messageAnalysisConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfig",
          "description": "Configuration for message analysis."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfig",
          "description": "Pub/Sub topic on which to publish new agent assistant events."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfig": {
      "description": "Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY, CONVERSATION_SUMMARIZATION.",
      "properties": {
        "baselineModelVersion": {
          "type": "string",
          "description": "Version of current baseline model. It will be ignored if model is set. Valid versions are: Article Suggestion baseline model: - 0.9 - 1.0 (default) Summarization baseline model: - 1.0"
        },
        "model": {
          "type": "string",
          "description": "Conversation model resource name. Format: `projects//conversationModels/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfigResponse": {
      "description": "Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY, CONVERSATION_SUMMARIZATION.",
      "properties": {
        "baselineModelVersion": {
          "type": "string",
          "description": "Version of current baseline model. It will be ignored if model is set. Valid versions are: Article Suggestion baseline model: - 0.9 - 1.0 (default) Summarization baseline model: - 1.0"
        },
        "model": {
          "type": "string",
          "description": "Conversation model resource name. Format: `projects//conversationModels/`."
        }
      },
      "type": "object",
      "required": [
        "baselineModelVersion",
        "model"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfig": {
      "description": "Config to process conversation.",
      "properties": {
        "recentSentencesCount": {
          "type": "integer",
          "description": "Number of recent non-small-talk sentences to use as context for article and FAQ suggestion"
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfigResponse": {
      "description": "Config to process conversation.",
      "properties": {
        "recentSentencesCount": {
          "type": "integer",
          "description": "Number of recent non-small-talk sentences to use as context for article and FAQ suggestion"
        }
      },
      "type": "object",
      "required": [
        "recentSentencesCount"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfig": {
      "description": "Configuration for analyses to run on each conversation message.",
      "properties": {
        "enableEntityExtraction": {
          "type": "boolean",
          "description": "Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access."
        },
        "enableSentimentAnalysis": {
          "type": "boolean",
          "description": "Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user's attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfigResponse": {
      "description": "Configuration for analyses to run on each conversation message.",
      "properties": {
        "enableEntityExtraction": {
          "type": "boolean",
          "description": "Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access."
        },
        "enableSentimentAnalysis": {
          "type": "boolean",
          "description": "Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user's attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult."
        }
      },
      "type": "object",
      "required": [
        "enableEntityExtraction",
        "enableSentimentAnalysis"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigResponse": {
      "description": "Defines the Human Agent Assistant to connect to a conversation.",
      "properties": {
        "endUserSuggestionConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfigResponse",
          "description": "Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access."
        },
        "humanAgentSuggestionConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfigResponse",
          "description": "Configuration for agent assistance of human agent participant."
        },
        "messageAnalysisConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfigResponse",
          "description": "Configuration for message analysis."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfigResponse",
          "description": "Pub/Sub topic on which to publish new agent assistant events."
        }
      },
      "type": "object",
      "required": [
        "endUserSuggestionConfig",
        "humanAgentSuggestionConfig",
        "messageAnalysisConfig",
        "notificationConfig"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig": {
      "description": "Detail human agent assistant config.",
      "properties": {
        "featureConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig"
          },
          "description": "Configuration of different suggestion features. One feature can have only one config."
        },
        "groupSuggestionResponses": {
          "type": "boolean",
          "description": "If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfigResponse": {
      "description": "Detail human agent assistant config.",
      "properties": {
        "featureConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfigResponse"
          },
          "description": "Configuration of different suggestion features. One feature can have only one config."
        },
        "groupSuggestionResponses": {
          "type": "boolean",
          "description": "If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse."
        }
      },
      "type": "object",
      "required": [
        "featureConfigs",
        "groupSuggestionResponses"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig": {
      "description": "Config for suggestion features.",
      "properties": {
        "conversationModelConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfig",
          "description": "Configs of custom conversation model."
        },
        "conversationProcessConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfig",
          "description": "Configs for processing conversation."
        },
        "disableAgentQueryLogging": {
          "type": "boolean",
          "description": "Optional. Disable the logging of search queries sent by human agents. It can prevent those queries from being stored at answer records. Supported features: KNOWLEDGE_SEARCH."
        },
        "enableEventBasedSuggestion": {
          "type": "boolean",
          "description": "Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST, ENTITY_EXTRACTION, KNOWLEDGE_ASSIST."
        },
        "queryConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfig",
          "description": "Configs of query."
        },
        "suggestionFeature": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SuggestionFeature",
          "description": "The suggestion feature."
        },
        "suggestionTriggerSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettings",
          "description": "Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION, FAQ, and DIALOGFLOW_ASSIST will use this field."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfigResponse": {
      "description": "Config for suggestion features.",
      "properties": {
        "conversationModelConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfigResponse",
          "description": "Configs of custom conversation model."
        },
        "conversationProcessConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfigResponse",
          "description": "Configs for processing conversation."
        },
        "disableAgentQueryLogging": {
          "type": "boolean",
          "description": "Optional. Disable the logging of search queries sent by human agents. It can prevent those queries from being stored at answer records. Supported features: KNOWLEDGE_SEARCH."
        },
        "enableEventBasedSuggestion": {
          "type": "boolean",
          "description": "Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST, ENTITY_EXTRACTION, KNOWLEDGE_ASSIST."
        },
        "queryConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigResponse",
          "description": "Configs of query."
        },
        "suggestionFeature": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SuggestionFeatureResponse",
          "description": "The suggestion feature."
        },
        "suggestionTriggerSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettingsResponse",
          "description": "Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION, FAQ, and DIALOGFLOW_ASSIST will use this field."
        }
      },
      "type": "object",
      "required": [
        "conversationModelConfig",
        "conversationProcessConfig",
        "disableAgentQueryLogging",
        "enableEventBasedSuggestion",
        "queryConfig",
        "suggestionFeature",
        "suggestionTriggerSettings"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfig": {
      "description": "Config for suggestion query.",
      "properties": {
        "confidenceThreshold": {
          "type": "number",
          "description": "Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it is default to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE, KNOWLEDGE_SEARCH, KNOWLEDGE_ASSIST, ENTITY_EXTRACTION."
        },
        "contextFilterSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings",
          "description": "Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped."
        },
        "dialogflowQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource",
          "description": "Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST, ENTITY_EXTRACTION."
        },
        "documentQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource",
          "description": "Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE."
        },
        "knowledgeBaseQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource",
          "description": "Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ."
        },
        "maxResults": {
          "type": "integer",
          "description": "Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings": {
      "description": "Settings that determine how to filter recent conversation context when generating suggestions.",
      "properties": {
        "dropHandoffMessages": {
          "type": "boolean",
          "description": "If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped."
        },
        "dropIvrMessages": {
          "type": "boolean",
          "description": "If set to true, all messages from ivr stage are dropped."
        },
        "dropVirtualAgentMessages": {
          "type": "boolean",
          "description": "If set to true, all messages from virtual agent are dropped."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettingsResponse": {
      "description": "Settings that determine how to filter recent conversation context when generating suggestions.",
      "properties": {
        "dropHandoffMessages": {
          "type": "boolean",
          "description": "If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped."
        },
        "dropIvrMessages": {
          "type": "boolean",
          "description": "If set to true, all messages from ivr stage are dropped."
        },
        "dropVirtualAgentMessages": {
          "type": "boolean",
          "description": "If set to true, all messages from virtual agent are dropped."
        }
      },
      "type": "object",
      "required": [
        "dropHandoffMessages",
        "dropIvrMessages",
        "dropVirtualAgentMessages"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource": {
      "description": "Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST, ENTITY_EXTRACTION.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "The name of a dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project."
        },
        "humanAgentSideConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig",
          "description": "The Dialogflow assist configuration for human agent."
        }
      },
      "type": "object",
      "required": [
        "agent"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig": {
      "description": "The configuration used for human agent side Dialogflow assist suggestion.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "Optional. The name of a dialogflow virtual agent used for intent detection and suggestion triggered by human agent. Format: `projects//locations//agent`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfigResponse": {
      "description": "The configuration used for human agent side Dialogflow assist suggestion.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "Optional. The name of a dialogflow virtual agent used for intent detection and suggestion triggered by human agent. Format: `projects//locations//agent`."
        }
      },
      "type": "object",
      "required": [
        "agent"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceResponse": {
      "description": "Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST, ENTITY_EXTRACTION.",
      "properties": {
        "agent": {
          "type": "string",
          "description": "The name of a dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project."
        },
        "humanAgentSideConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfigResponse",
          "description": "The Dialogflow assist configuration for human agent."
        }
      },
      "type": "object",
      "required": [
        "agent",
        "humanAgentSideConfig"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource": {
      "description": "Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE.",
      "properties": {
        "documents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, only one document is supported."
        }
      },
      "type": "object",
      "required": [
        "documents"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySourceResponse": {
      "description": "Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE.",
      "properties": {
        "documents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, only one document is supported."
        }
      },
      "type": "object",
      "required": [
        "documents"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource": {
      "description": "Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ.",
      "properties": {
        "knowledgeBases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, only one knowledge base is supported."
        }
      },
      "type": "object",
      "required": [
        "knowledgeBases"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySourceResponse": {
      "description": "Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ.",
      "properties": {
        "knowledgeBases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, only one knowledge base is supported."
        }
      },
      "type": "object",
      "required": [
        "knowledgeBases"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigResponse": {
      "description": "Config for suggestion query.",
      "properties": {
        "confidenceThreshold": {
          "type": "number",
          "description": "Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it is default to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE, KNOWLEDGE_SEARCH, KNOWLEDGE_ASSIST, ENTITY_EXTRACTION."
        },
        "contextFilterSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettingsResponse",
          "description": "Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped."
        },
        "dialogflowQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceResponse",
          "description": "Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST, ENTITY_EXTRACTION."
        },
        "documentQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySourceResponse",
          "description": "Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE."
        },
        "knowledgeBaseQuerySource": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySourceResponse",
          "description": "Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ."
        },
        "maxResults": {
          "type": "integer",
          "description": "Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20."
        }
      },
      "type": "object",
      "required": [
        "confidenceThreshold",
        "contextFilterSettings",
        "dialogflowQuerySource",
        "documentQuerySource",
        "knowledgeBaseQuerySource",
        "maxResults"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettings": {
      "description": "Settings of suggestion trigger.",
      "properties": {
        "noSmallTalk": {
          "type": "boolean",
          "description": "Do not trigger if last utterance is small talk."
        },
        "onlyEndUser": {
          "type": "boolean",
          "description": "Only trigger suggestion if participant role of last utterance is END_USER."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettingsResponse": {
      "description": "Settings of suggestion trigger.",
      "properties": {
        "noSmallTalk": {
          "type": "boolean",
          "description": "Do not trigger if last utterance is small talk."
        },
        "onlyEndUser": {
          "type": "boolean",
          "description": "Only trigger suggestion if participant role of last utterance is END_USER."
        }
      },
      "type": "object",
      "required": [
        "noSmallTalk",
        "onlyEndUser"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfig": {
      "description": "Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access.",
      "properties": {
        "livePersonConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfig",
          "description": "Uses LivePerson (https://www.liveperson.com)."
        },
        "salesforceLiveAgentConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfig",
          "description": "Uses Salesforce Live Agent."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfig": {
      "description": "Configuration specific to LivePerson (https://www.liveperson.com).",
      "properties": {
        "accountNumber": {
          "type": "string",
          "description": "Account number of the LivePerson account to connect. This is the account number you input at the login page."
        }
      },
      "type": "object",
      "required": [
        "accountNumber"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfigResponse": {
      "description": "Configuration specific to LivePerson (https://www.liveperson.com).",
      "properties": {
        "accountNumber": {
          "type": "string",
          "description": "Account number of the LivePerson account to connect. This is the account number you input at the login page."
        }
      },
      "type": "object",
      "required": [
        "accountNumber"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigResponse": {
      "description": "Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access.",
      "properties": {
        "livePersonConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfigResponse",
          "description": "Uses LivePerson (https://www.liveperson.com)."
        },
        "salesforceLiveAgentConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfigResponse",
          "description": "Uses Salesforce Live Agent."
        }
      },
      "type": "object",
      "required": [
        "livePersonConfig",
        "salesforceLiveAgentConfig"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfig": {
      "description": "Configuration specific to Salesforce Live Agent.",
      "properties": {
        "buttonId": {
          "type": "string",
          "description": "Live Agent chat button ID."
        },
        "deploymentId": {
          "type": "string",
          "description": "Live Agent deployment ID."
        },
        "endpointDomain": {
          "type": "string",
          "description": "Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com."
        },
        "organizationId": {
          "type": "string",
          "description": "The organization ID of the Salesforce account."
        }
      },
      "type": "object",
      "required": [
        "buttonId",
        "deploymentId",
        "endpointDomain",
        "organizationId"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfigResponse": {
      "description": "Configuration specific to Salesforce Live Agent.",
      "properties": {
        "buttonId": {
          "type": "string",
          "description": "Live Agent chat button ID."
        },
        "deploymentId": {
          "type": "string",
          "description": "Live Agent deployment ID."
        },
        "endpointDomain": {
          "type": "string",
          "description": "Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com."
        },
        "organizationId": {
          "type": "string",
          "description": "The organization ID of the Salesforce account."
        }
      },
      "type": "object",
      "required": [
        "buttonId",
        "deploymentId",
        "endpointDomain",
        "organizationId"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentFollowupIntentInfoResponse": {
      "description": "Represents a single followup intent in the chain.",
      "properties": {
        "followupIntentName": {
          "type": "string",
          "description": "The unique identifier of the followup intent. Format: `projects//agent/intents/`."
        },
        "parentFollowupIntentName": {
          "type": "string",
          "description": "The unique identifier of the followup intent's parent. Format: `projects//agent/intents/`."
        }
      },
      "type": "object",
      "required": [
        "followupIntentName",
        "parentFollowupIntentName"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessage": {
      "description": "Corresponds to the `Response` field in the Dialogflow console.",
      "properties": {
        "basicCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCard",
          "description": "Displays a basic card for Actions on Google."
        },
        "browseCarouselCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCard",
          "description": "Browse carousel card for Actions on Google."
        },
        "card": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageCard",
          "description": "Displays a card."
        },
        "carouselSelect": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageCarouselSelect",
          "description": "Displays a carousel card for Actions on Google."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage",
          "description": "Displays an image."
        },
        "linkOutSuggestion": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestion",
          "description": "Displays a link out suggestion chip for Actions on Google."
        },
        "listSelect": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageListSelect",
          "description": "Displays a list card for Actions on Google."
        },
        "mediaContent": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContent",
          "description": "The media content card for Actions on Google."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A custom platform-specific response."
        },
        "platform": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessagePlatform",
          "description": "Optional. The platform that this message is intended for."
        },
        "quickReplies": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageQuickReplies",
          "description": "Displays quick replies."
        },
        "rbmCarouselRichCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCard",
          "description": "Rich Business Messaging (RBM) carousel rich card response."
        },
        "rbmStandaloneRichCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCard",
          "description": "Standalone Rich Business Messaging (RBM) rich card response."
        },
        "rbmText": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmText",
          "description": "Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging."
        },
        "simpleResponses": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSimpleResponses",
          "description": "Returns a voice or text-only response for Actions on Google."
        },
        "suggestions": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSuggestions",
          "description": "Displays suggestion chips for Actions on Google."
        },
        "tableCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCard",
          "description": "Table card for Actions on Google."
        },
        "telephonyPlayAudio": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudio",
          "description": "Plays audio from a file in Telephony Gateway."
        },
        "telephonySynthesizeSpeech": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeech",
          "description": "Synthesizes speech in Telephony Gateway."
        },
        "telephonyTransferCall": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCall",
          "description": "Transfers the call in Telephony Gateway."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageText",
          "description": "Returns a text response."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCard": {
      "description": "The basic card message. Useful for displaying information.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton"
          },
          "description": "Optional. The collection of card buttons."
        },
        "formattedText": {
          "type": "string",
          "description": "Required, unless image is present. The body text of the card."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage",
          "description": "Optional. The image for the card."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. The subtitle of the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the card."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton": {
      "description": "The button object that appears at the bottom of a card.",
      "properties": {
        "openUriAction": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriAction",
          "description": "Action to take when a user taps on the button."
        },
        "title": {
          "type": "string",
          "description": "The title of the button."
        }
      },
      "type": "object",
      "required": [
        "openUriAction",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriAction": {
      "description": "Opens the given URI.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The HTTP or HTTPS scheme URI."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriActionResponse": {
      "description": "Opens the given URI.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The HTTP or HTTPS scheme URI."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonResponse": {
      "description": "The button object that appears at the bottom of a card.",
      "properties": {
        "openUriAction": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriActionResponse",
          "description": "Action to take when a user taps on the button."
        },
        "title": {
          "type": "string",
          "description": "The title of the button."
        }
      },
      "type": "object",
      "required": [
        "openUriAction",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardResponse": {
      "description": "The basic card message. Useful for displaying information.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonResponse"
          },
          "description": "Optional. The collection of card buttons."
        },
        "formattedText": {
          "type": "string",
          "description": "Required, unless image is present. The body text of the card."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse",
          "description": "Optional. The image for the card."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. The subtitle of the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the card."
        }
      },
      "type": "object",
      "required": [
        "buttons",
        "formattedText",
        "image",
        "subtitle",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCard": {
      "description": "Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel",
      "properties": {
        "imageDisplayOptions": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardImageDisplayOptions",
          "description": "Optional. Settings for displaying the image. Applies to every image in items."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItem"
          },
          "description": "List of items in the Browse Carousel Card. Minimum of two items, maximum of ten."
        }
      },
      "type": "object",
      "required": [
        "items"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItem": {
      "description": "Browsing carousel tile",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the carousel item. Maximum of four lines of text."
        },
        "footer": {
          "type": "string",
          "description": "Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage",
          "description": "Optional. Hero image for the carousel item."
        },
        "openUriAction": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction",
          "description": "Action to present to the user."
        },
        "title": {
          "type": "string",
          "description": "Title of the carousel item. Maximum of two lines of text."
        }
      },
      "type": "object",
      "required": [
        "openUriAction",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction": {
      "description": "Actions on Google action to open a given url.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL"
        },
        "urlTypeHint": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlActionUrlTypeHint",
          "description": "Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser."
        }
      },
      "type": "object",
      "required": [
        "url"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlActionResponse": {
      "description": "Actions on Google action to open a given url.",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL"
        },
        "urlTypeHint": {
          "type": "string",
          "description": "Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser."
        }
      },
      "type": "object",
      "required": [
        "url",
        "urlTypeHint"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlActionUrlTypeHint": {
      "description": "Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.",
      "type": "string",
      "enum": [
        {
          "name": "UrlTypeHintUnspecified",
          "description": "Unspecified",
          "value": "URL_TYPE_HINT_UNSPECIFIED"
        },
        {
          "name": "AmpAction",
          "description": "Url would be an amp action",
          "value": "AMP_ACTION"
        },
        {
          "name": "AmpContent",
          "description": "URL that points directly to AMP content, or to a canonical URL which refers to AMP content via .",
          "value": "AMP_CONTENT"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemResponse": {
      "description": "Browsing carousel tile",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the carousel item. Maximum of four lines of text."
        },
        "footer": {
          "type": "string",
          "description": "Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse",
          "description": "Optional. Hero image for the carousel item."
        },
        "openUriAction": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlActionResponse",
          "description": "Action to present to the user."
        },
        "title": {
          "type": "string",
          "description": "Title of the carousel item. Maximum of two lines of text."
        }
      },
      "type": "object",
      "required": [
        "description",
        "footer",
        "image",
        "openUriAction",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardImageDisplayOptions": {
      "description": "Optional. Settings for displaying the image. Applies to every image in items.",
      "type": "string",
      "enum": [
        {
          "name": "ImageDisplayOptionsUnspecified",
          "description": "Fill the gaps between the image and the image container with gray bars.",
          "value": "IMAGE_DISPLAY_OPTIONS_UNSPECIFIED"
        },
        {
          "name": "Gray",
          "description": "Fill the gaps between the image and the image container with gray bars.",
          "value": "GRAY"
        },
        {
          "name": "White",
          "description": "Fill the gaps between the image and the image container with white bars.",
          "value": "WHITE"
        },
        {
          "name": "Cropped",
          "description": "Image is scaled such that the image width and height match or exceed the container dimensions. This may crop the top and bottom of the image if the scaled image height is greater than the container height, or crop the left and right of the image if the scaled image width is greater than the container width. This is similar to \"Zoom Mode\" on a widescreen TV when playing a 4:3 video.",
          "value": "CROPPED"
        },
        {
          "name": "BlurredBackground",
          "description": "Pad the gaps between image and image frame with a blurred copy of the same image.",
          "value": "BLURRED_BACKGROUND"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardResponse": {
      "description": "Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel",
      "properties": {
        "imageDisplayOptions": {
          "type": "string",
          "description": "Optional. Settings for displaying the image. Applies to every image in items."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemResponse"
          },
          "description": "List of items in the Browse Carousel Card. Minimum of two items, maximum of ten."
        }
      },
      "type": "object",
      "required": [
        "imageDisplayOptions",
        "items"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageCard": {
      "description": "The card response message.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageCardButton"
          },
          "description": "Optional. The collection of card buttons."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The public URI to an image file for the card."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. The subtitle of the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the card."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageCardButton": {
      "description": "Optional. Contains information about a button.",
      "properties": {
        "postback": {
          "type": "string",
          "description": "Optional. The text to send back to the Dialogflow API or a URI to open."
        },
        "text": {
          "type": "string",
          "description": "Optional. The text to show on the button."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageCardButtonResponse": {
      "description": "Optional. Contains information about a button.",
      "properties": {
        "postback": {
          "type": "string",
          "description": "Optional. The text to send back to the Dialogflow API or a URI to open."
        },
        "text": {
          "type": "string",
          "description": "Optional. The text to show on the button."
        }
      },
      "type": "object",
      "required": [
        "postback",
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageCardResponse": {
      "description": "The card response message.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageCardButtonResponse"
          },
          "description": "Optional. The collection of card buttons."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The public URI to an image file for the card."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. The subtitle of the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the card."
        }
      },
      "type": "object",
      "required": [
        "buttons",
        "imageUri",
        "subtitle",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageCarouselSelect": {
      "description": "The card for presenting a carousel of options to select from.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItem"
          },
          "description": "Carousel items."
        }
      },
      "type": "object",
      "required": [
        "items"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItem": {
      "description": "An item in the carousel.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The body text of the card."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage",
          "description": "Optional. The image to display."
        },
        "info": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo",
          "description": "Additional info about the option item."
        },
        "title": {
          "type": "string",
          "description": "Title of the carousel item."
        }
      },
      "type": "object",
      "required": [
        "info",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItemResponse": {
      "description": "An item in the carousel.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The body text of the card."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse",
          "description": "Optional. The image to display."
        },
        "info": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfoResponse",
          "description": "Additional info about the option item."
        },
        "title": {
          "type": "string",
          "description": "Title of the carousel item."
        }
      },
      "type": "object",
      "required": [
        "description",
        "image",
        "info",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectResponse": {
      "description": "The card for presenting a carousel of options to select from.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItemResponse"
          },
          "description": "Carousel items."
        }
      },
      "type": "object",
      "required": [
        "items"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageColumnProperties": {
      "description": "Column properties for TableCard.",
      "properties": {
        "header": {
          "type": "string",
          "description": "Column heading."
        },
        "horizontalAlignment": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageColumnPropertiesHorizontalAlignment",
          "description": "Optional. Defines text alignment for all cells in this column."
        }
      },
      "type": "object",
      "required": [
        "header"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageColumnPropertiesHorizontalAlignment": {
      "description": "Optional. Defines text alignment for all cells in this column.",
      "type": "string",
      "enum": [
        {
          "name": "HorizontalAlignmentUnspecified",
          "description": "Text is aligned to the leading edge of the column.",
          "value": "HORIZONTAL_ALIGNMENT_UNSPECIFIED"
        },
        {
          "name": "Leading",
          "description": "Text is aligned to the leading edge of the column.",
          "value": "LEADING"
        },
        {
          "name": "Center",
          "description": "Text is centered in the column.",
          "value": "CENTER"
        },
        {
          "name": "Trailing",
          "description": "Text is aligned to the trailing edge of the column.",
          "value": "TRAILING"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageColumnPropertiesResponse": {
      "description": "Column properties for TableCard.",
      "properties": {
        "header": {
          "type": "string",
          "description": "Column heading."
        },
        "horizontalAlignment": {
          "type": "string",
          "description": "Optional. Defines text alignment for all cells in this column."
        }
      },
      "type": "object",
      "required": [
        "header",
        "horizontalAlignment"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage": {
      "description": "The image response message.",
      "properties": {
        "accessibilityText": {
          "type": "string",
          "description": "A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The public URI to an image file."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse": {
      "description": "The image response message.",
      "properties": {
        "accessibilityText": {
          "type": "string",
          "description": "A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. The public URI to an image file."
        }
      },
      "type": "object",
      "required": [
        "accessibilityText",
        "imageUri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestion": {
      "description": "The suggestion chip message that allows the user to jump out to the app or website associated with this agent.",
      "properties": {
        "destinationName": {
          "type": "string",
          "description": "The name of the app or site this chip is linking to."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the app or site to open when the user taps the suggestion chip."
        }
      },
      "type": "object",
      "required": [
        "destinationName",
        "uri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestionResponse": {
      "description": "The suggestion chip message that allows the user to jump out to the app or website associated with this agent.",
      "properties": {
        "destinationName": {
          "type": "string",
          "description": "The name of the app or site this chip is linking to."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the app or site to open when the user taps the suggestion chip."
        }
      },
      "type": "object",
      "required": [
        "destinationName",
        "uri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageListSelect": {
      "description": "The card for presenting a list of options to select from.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageListSelectItem"
          },
          "description": "List items."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. Subtitle of the list."
        },
        "title": {
          "type": "string",
          "description": "Optional. The overall title of the list."
        }
      },
      "type": "object",
      "required": [
        "items"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageListSelectItem": {
      "description": "An item in the list.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The main text describing the item."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage",
          "description": "Optional. The image to display."
        },
        "info": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo",
          "description": "Additional information about this option."
        },
        "title": {
          "type": "string",
          "description": "The title of the list item."
        }
      },
      "type": "object",
      "required": [
        "info",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageListSelectItemResponse": {
      "description": "An item in the list.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The main text describing the item."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse",
          "description": "Optional. The image to display."
        },
        "info": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfoResponse",
          "description": "Additional information about this option."
        },
        "title": {
          "type": "string",
          "description": "The title of the list item."
        }
      },
      "type": "object",
      "required": [
        "description",
        "image",
        "info",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageListSelectResponse": {
      "description": "The card for presenting a list of options to select from.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageListSelectItemResponse"
          },
          "description": "List items."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. Subtitle of the list."
        },
        "title": {
          "type": "string",
          "description": "Optional. The overall title of the list."
        }
      },
      "type": "object",
      "required": [
        "items",
        "subtitle",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContent": {
      "description": "The media content card for Actions on Google.",
      "properties": {
        "mediaObjects": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObject"
          },
          "description": "List of media objects."
        },
        "mediaType": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContentMediaType",
          "description": "Optional. What type of media is the content (ie \"audio\")."
        }
      },
      "type": "object",
      "required": [
        "mediaObjects"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContentMediaType": {
      "description": "Optional. What type of media is the content (ie \"audio\").",
      "type": "string",
      "enum": [
        {
          "name": "ResponseMediaTypeUnspecified",
          "description": "Unspecified.",
          "value": "RESPONSE_MEDIA_TYPE_UNSPECIFIED"
        },
        {
          "name": "Audio",
          "description": "Response media type is audio.",
          "value": "AUDIO"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponse": {
      "description": "The media content card for Actions on Google.",
      "properties": {
        "mediaObjects": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObjectResponse"
          },
          "description": "List of media objects."
        },
        "mediaType": {
          "type": "string",
          "description": "Optional. What type of media is the content (ie \"audio\")."
        }
      },
      "type": "object",
      "required": [
        "mediaObjects",
        "mediaType"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObject": {
      "description": "Response media object for media content card.",
      "properties": {
        "contentUrl": {
          "type": "string",
          "description": "Url where the media is stored."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of media card."
        },
        "icon": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage",
          "description": "Optional. Icon to display above media content."
        },
        "largeImage": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage",
          "description": "Optional. Image to display above media content."
        },
        "name": {
          "type": "string",
          "description": "Name of media card."
        }
      },
      "type": "object",
      "required": [
        "contentUrl",
        "name"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObjectResponse": {
      "description": "Response media object for media content card.",
      "properties": {
        "contentUrl": {
          "type": "string",
          "description": "Url where the media is stored."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of media card."
        },
        "icon": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse",
          "description": "Optional. Icon to display above media content."
        },
        "largeImage": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse",
          "description": "Optional. Image to display above media content."
        },
        "name": {
          "type": "string",
          "description": "Name of media card."
        }
      },
      "type": "object",
      "required": [
        "contentUrl",
        "description",
        "icon",
        "largeImage",
        "name"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessagePlatform": {
      "description": "Optional. The platform that this message is intended for.",
      "type": "string",
      "enum": [
        {
          "name": "PlatformUnspecified",
          "description": "Not specified.",
          "value": "PLATFORM_UNSPECIFIED"
        },
        {
          "name": "Facebook",
          "description": "Facebook.",
          "value": "FACEBOOK"
        },
        {
          "name": "Slack",
          "description": "Slack.",
          "value": "SLACK"
        },
        {
          "name": "Telegram",
          "description": "Telegram.",
          "value": "TELEGRAM"
        },
        {
          "name": "Kik",
          "description": "Kik.",
          "value": "KIK"
        },
        {
          "name": "Skype",
          "description": "Skype.",
          "value": "SKYPE"
        },
        {
          "name": "Line",
          "description": "Line.",
          "value": "LINE"
        },
        {
          "name": "Viber",
          "description": "Viber.",
          "value": "VIBER"
        },
        {
          "name": "ActionsOnGoogle",
          "description": "Google Assistant See [Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
          "value": "ACTIONS_ON_GOOGLE"
        },
        {
          "name": "Telephony",
          "description": "Telephony Gateway.",
          "value": "TELEPHONY"
        },
        {
          "name": "GoogleHangouts",
          "description": "Google Hangouts.",
          "value": "GOOGLE_HANGOUTS"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageQuickReplies": {
      "description": "The quick replies response message.",
      "properties": {
        "quickReplies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of quick replies."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the collection of quick replies."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageQuickRepliesResponse": {
      "description": "The quick replies response message.",
      "properties": {
        "quickReplies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of quick replies."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the collection of quick replies."
        }
      },
      "type": "object",
      "required": [
        "quickReplies",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent": {
      "description": "Rich Business Messaging (RBM) Card content",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set."
        },
        "media": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMedia",
          "description": "Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card."
        },
        "suggestions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion"
          },
          "description": "Optional. List of suggestions to include in the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMedia": {
      "description": "Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg' * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm",
      "properties": {
        "fileUri": {
          "type": "string",
          "description": "Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL."
        },
        "height": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMediaHeight",
          "description": "Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored."
        },
        "thumbnailUri": {
          "type": "string",
          "description": "Optional. Publicly reachable URI of the thumbnail.If you don't provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user's device downloads the file. Depending on the user's setting, the file may not download automatically and may require the user to tap a download button."
        }
      },
      "type": "object",
      "required": [
        "fileUri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMediaHeight": {
      "description": "Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.",
      "type": "string",
      "enum": [
        {
          "name": "HeightUnspecified",
          "description": "Not specified.",
          "value": "HEIGHT_UNSPECIFIED"
        },
        {
          "name": "Short",
          "description": "112 DP.",
          "value": "SHORT"
        },
        {
          "name": "Medium",
          "description": "168 DP.",
          "value": "MEDIUM"
        },
        {
          "name": "Tall",
          "description": "264 DP. Not available for rich card carousels when the card width is set to small.",
          "value": "TALL"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMediaResponse": {
      "description": "Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg' * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm",
      "properties": {
        "fileUri": {
          "type": "string",
          "description": "Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL."
        },
        "height": {
          "type": "string",
          "description": "Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored."
        },
        "thumbnailUri": {
          "type": "string",
          "description": "Optional. Publicly reachable URI of the thumbnail.If you don't provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user's device downloads the file. Depending on the user's setting, the file may not download automatically and may require the user to tap a download button."
        }
      },
      "type": "object",
      "required": [
        "fileUri",
        "height",
        "thumbnailUri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentResponse": {
      "description": "Rich Business Messaging (RBM) Card content",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set."
        },
        "media": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMediaResponse",
          "description": "Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card."
        },
        "suggestions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestionResponse"
          },
          "description": "Optional. List of suggestions to include in the card."
        },
        "title": {
          "type": "string",
          "description": "Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set."
        }
      },
      "type": "object",
      "required": [
        "description",
        "media",
        "suggestions",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCard": {
      "description": "Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. If you want to show a single card with more control over the layout, please use RbmStandaloneCard instead.",
      "properties": {
        "cardContents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent"
          },
          "description": "The cards in the carousel. A carousel must have at least 2 cards and at most 10."
        },
        "cardWidth": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCardCardWidth",
          "description": "The width of the cards in the carousel."
        }
      },
      "type": "object",
      "required": [
        "cardContents",
        "cardWidth"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCardCardWidth": {
      "description": "Required. The width of the cards in the carousel.",
      "type": "string",
      "enum": [
        {
          "name": "CardWidthUnspecified",
          "description": "Not specified.",
          "value": "CARD_WIDTH_UNSPECIFIED"
        },
        {
          "name": "Small",
          "description": "120 DP. Note that tall media cannot be used.",
          "value": "SMALL"
        },
        {
          "name": "Medium",
          "description": "232 DP.",
          "value": "MEDIUM"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCardResponse": {
      "description": "Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. If you want to show a single card with more control over the layout, please use RbmStandaloneCard instead.",
      "properties": {
        "cardContents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentResponse"
          },
          "description": "The cards in the carousel. A carousel must have at least 2 cards and at most 10."
        },
        "cardWidth": {
          "type": "string",
          "description": "The width of the cards in the carousel."
        }
      },
      "type": "object",
      "required": [
        "cardContents",
        "cardWidth"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCard": {
      "description": "Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. You can group multiple rich cards into one using RbmCarouselCard but carousel cards will give you less control over the card layout.",
      "properties": {
        "cardContent": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent",
          "description": "Card content."
        },
        "cardOrientation": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCardCardOrientation",
          "description": "Orientation of the card."
        },
        "thumbnailImageAlignment": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCardThumbnailImageAlignment",
          "description": "Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout."
        }
      },
      "type": "object",
      "required": [
        "cardContent",
        "cardOrientation"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCardCardOrientation": {
      "description": "Required. Orientation of the card.",
      "type": "string",
      "enum": [
        {
          "name": "CardOrientationUnspecified",
          "description": "Not specified.",
          "value": "CARD_ORIENTATION_UNSPECIFIED"
        },
        {
          "name": "Horizontal",
          "description": "Horizontal layout.",
          "value": "HORIZONTAL"
        },
        {
          "name": "Vertical",
          "description": "Vertical layout.",
          "value": "VERTICAL"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCardResponse": {
      "description": "Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. You can group multiple rich cards into one using RbmCarouselCard but carousel cards will give you less control over the card layout.",
      "properties": {
        "cardContent": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentResponse",
          "description": "Card content."
        },
        "cardOrientation": {
          "type": "string",
          "description": "Orientation of the card."
        },
        "thumbnailImageAlignment": {
          "type": "string",
          "description": "Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout."
        }
      },
      "type": "object",
      "required": [
        "cardContent",
        "cardOrientation",
        "thumbnailImageAlignment"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCardThumbnailImageAlignment": {
      "description": "Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.",
      "type": "string",
      "enum": [
        {
          "name": "ThumbnailImageAlignmentUnspecified",
          "description": "Not specified.",
          "value": "THUMBNAIL_IMAGE_ALIGNMENT_UNSPECIFIED"
        },
        {
          "name": "Left",
          "description": "Thumbnail preview is left-aligned.",
          "value": "LEFT"
        },
        {
          "name": "Right",
          "description": "Thumbnail preview is right-aligned.",
          "value": "RIGHT"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedAction": {
      "description": "Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card.",
      "properties": {
        "dial": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDial",
          "description": "Suggested client side action: Dial a phone number"
        },
        "openUrl": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUri",
          "description": "Suggested client side action: Open a URI on device"
        },
        "postbackData": {
          "type": "string",
          "description": "Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic."
        },
        "shareLocation": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocation",
          "description": "Suggested client side action: Share user location"
        },
        "text": {
          "type": "string",
          "description": "Text to display alongside the action."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDial": {
      "description": "Opens the user's default dialer app with the specified phone number but does not dial automatically.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888."
        }
      },
      "type": "object",
      "required": [
        "phoneNumber"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDialResponse": {
      "description": "Opens the user's default dialer app with the specified phone number but does not dial automatically.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888."
        }
      },
      "type": "object",
      "required": [
        "phoneNumber"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUri": {
      "description": "Opens the user's default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The uri to open on the user device"
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUriResponse": {
      "description": "Opens the user's default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The uri to open on the user device"
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocation": {
      "description": "Opens the device's location chooser so the user can pick a location to send back to the agent.",
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocationResponse": {
      "description": "Opens the device's location chooser so the user can pick a location to send back to the agent.",
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionResponse": {
      "description": "Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card.",
      "properties": {
        "dial": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDialResponse",
          "description": "Suggested client side action: Dial a phone number"
        },
        "openUrl": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUriResponse",
          "description": "Suggested client side action: Open a URI on device"
        },
        "postbackData": {
          "type": "string",
          "description": "Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic."
        },
        "shareLocation": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocationResponse",
          "description": "Suggested client side action: Share user location"
        },
        "text": {
          "type": "string",
          "description": "Text to display alongside the action."
        }
      },
      "type": "object",
      "required": [
        "dial",
        "openUrl",
        "postbackData",
        "shareLocation",
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReply": {
      "description": "Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response.",
      "properties": {
        "postbackData": {
          "type": "string",
          "description": "Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic."
        },
        "text": {
          "type": "string",
          "description": "Suggested reply text."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReplyResponse": {
      "description": "Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response.",
      "properties": {
        "postbackData": {
          "type": "string",
          "description": "Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic."
        },
        "text": {
          "type": "string",
          "description": "Suggested reply text."
        }
      },
      "type": "object",
      "required": [
        "postbackData",
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion": {
      "description": "Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedAction",
          "description": "Predefined client side actions that user can choose"
        },
        "reply": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReply",
          "description": "Predefined replies for user to select instead of typing"
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestionResponse": {
      "description": "Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionResponse",
          "description": "Predefined client side actions that user can choose"
        },
        "reply": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReplyResponse",
          "description": "Predefined replies for user to select instead of typing"
        }
      },
      "type": "object",
      "required": [
        "action",
        "reply"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmText": {
      "description": "Rich Business Messaging (RBM) text response with suggestions.",
      "properties": {
        "rbmSuggestion": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion"
          },
          "description": "Optional. One or more suggestions to show to the user."
        },
        "text": {
          "type": "string",
          "description": "Text sent and displayed to the user."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmTextResponse": {
      "description": "Rich Business Messaging (RBM) text response with suggestions.",
      "properties": {
        "rbmSuggestion": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestionResponse"
          },
          "description": "Optional. One or more suggestions to show to the user."
        },
        "text": {
          "type": "string",
          "description": "Text sent and displayed to the user."
        }
      },
      "type": "object",
      "required": [
        "rbmSuggestion",
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageResponse": {
      "description": "Corresponds to the `Response` field in the Dialogflow console.",
      "properties": {
        "basicCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardResponse",
          "description": "Displays a basic card for Actions on Google."
        },
        "browseCarouselCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardResponse",
          "description": "Browse carousel card for Actions on Google."
        },
        "card": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageCardResponse",
          "description": "Displays a card."
        },
        "carouselSelect": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectResponse",
          "description": "Displays a carousel card for Actions on Google."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse",
          "description": "Displays an image."
        },
        "linkOutSuggestion": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestionResponse",
          "description": "Displays a link out suggestion chip for Actions on Google."
        },
        "listSelect": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageListSelectResponse",
          "description": "Displays a list card for Actions on Google."
        },
        "mediaContent": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponse",
          "description": "The media content card for Actions on Google."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A custom platform-specific response."
        },
        "platform": {
          "type": "string",
          "description": "Optional. The platform that this message is intended for."
        },
        "quickReplies": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageQuickRepliesResponse",
          "description": "Displays quick replies."
        },
        "rbmCarouselRichCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCardResponse",
          "description": "Rich Business Messaging (RBM) carousel rich card response."
        },
        "rbmStandaloneRichCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCardResponse",
          "description": "Standalone Rich Business Messaging (RBM) rich card response."
        },
        "rbmText": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageRbmTextResponse",
          "description": "Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging."
        },
        "simpleResponses": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSimpleResponsesResponse",
          "description": "Returns a voice or text-only response for Actions on Google."
        },
        "suggestions": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSuggestionsResponse",
          "description": "Displays suggestion chips for Actions on Google."
        },
        "tableCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardResponse",
          "description": "Table card for Actions on Google."
        },
        "telephonyPlayAudio": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudioResponse",
          "description": "Plays audio from a file in Telephony Gateway."
        },
        "telephonySynthesizeSpeech": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeechResponse",
          "description": "Synthesizes speech in Telephony Gateway."
        },
        "telephonyTransferCall": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCallResponse",
          "description": "Transfers the call in Telephony Gateway."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTextResponse",
          "description": "Returns a text response."
        }
      },
      "type": "object",
      "required": [
        "basicCard",
        "browseCarouselCard",
        "card",
        "carouselSelect",
        "image",
        "linkOutSuggestion",
        "listSelect",
        "mediaContent",
        "payload",
        "platform",
        "quickReplies",
        "rbmCarouselRichCard",
        "rbmStandaloneRichCard",
        "rbmText",
        "simpleResponses",
        "suggestions",
        "tableCard",
        "telephonyPlayAudio",
        "telephonySynthesizeSpeech",
        "telephonyTransferCall",
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo": {
      "description": "Additional info about the select item for when it is triggered in a dialog.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A unique key that will be sent back to the agent if this response is given."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of synonyms that can also be used to trigger this item in dialog."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfoResponse": {
      "description": "Additional info about the select item for when it is triggered in a dialog.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A unique key that will be sent back to the agent if this response is given."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of synonyms that can also be used to trigger this item in dialog."
        }
      },
      "type": "object",
      "required": [
        "key",
        "synonyms"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSimpleResponse": {
      "description": "The simple response message containing speech or text.",
      "properties": {
        "displayText": {
          "type": "string",
          "description": "Optional. The text to display."
        },
        "ssml": {
          "type": "string",
          "description": "One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech."
        },
        "textToSpeech": {
          "type": "string",
          "description": "One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSimpleResponseResponse": {
      "description": "The simple response message containing speech or text.",
      "properties": {
        "displayText": {
          "type": "string",
          "description": "Optional. The text to display."
        },
        "ssml": {
          "type": "string",
          "description": "One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech."
        },
        "textToSpeech": {
          "type": "string",
          "description": "One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml."
        }
      },
      "type": "object",
      "required": [
        "displayText",
        "ssml",
        "textToSpeech"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSimpleResponses": {
      "description": "The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`.",
      "properties": {
        "simpleResponses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSimpleResponse"
          },
          "description": "The list of simple responses."
        }
      },
      "type": "object",
      "required": [
        "simpleResponses"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSimpleResponsesResponse": {
      "description": "The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`.",
      "properties": {
        "simpleResponses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSimpleResponseResponse"
          },
          "description": "The list of simple responses."
        }
      },
      "type": "object",
      "required": [
        "simpleResponses"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSuggestion": {
      "description": "The suggestion chip message that the user can tap to quickly post a reply to the conversation.",
      "properties": {
        "title": {
          "type": "string",
          "description": "The text shown the in the suggestion chip."
        }
      },
      "type": "object",
      "required": [
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSuggestionResponse": {
      "description": "The suggestion chip message that the user can tap to quickly post a reply to the conversation.",
      "properties": {
        "title": {
          "type": "string",
          "description": "The text shown the in the suggestion chip."
        }
      },
      "type": "object",
      "required": [
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSuggestions": {
      "description": "The collection of suggestions.",
      "properties": {
        "suggestions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSuggestion"
          },
          "description": "The list of suggested replies."
        }
      },
      "type": "object",
      "required": [
        "suggestions"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageSuggestionsResponse": {
      "description": "The collection of suggestions.",
      "properties": {
        "suggestions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageSuggestionResponse"
          },
          "description": "The list of suggested replies."
        }
      },
      "type": "object",
      "required": [
        "suggestions"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCard": {
      "description": "Table card for Actions on Google.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton"
          },
          "description": "Optional. List of buttons for the card."
        },
        "columnProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageColumnProperties"
          },
          "description": "Optional. Display properties for the columns in this table."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImage",
          "description": "Optional. Image which should be displayed on the card."
        },
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardRow"
          },
          "description": "Optional. Rows in this table of data."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. Subtitle to the title."
        },
        "title": {
          "type": "string",
          "description": "Title of the card."
        }
      },
      "type": "object",
      "required": [
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardCell": {
      "description": "Cell of TableCardRow.",
      "properties": {
        "text": {
          "type": "string",
          "description": "Text in this cell."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardCellResponse": {
      "description": "Cell of TableCardRow.",
      "properties": {
        "text": {
          "type": "string",
          "description": "Text in this cell."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardResponse": {
      "description": "Table card for Actions on Google.",
      "properties": {
        "buttons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonResponse"
          },
          "description": "Optional. List of buttons for the card."
        },
        "columnProperties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageColumnPropertiesResponse"
          },
          "description": "Optional. Display properties for the columns in this table."
        },
        "image": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageImageResponse",
          "description": "Optional. Image which should be displayed on the card."
        },
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardRowResponse"
          },
          "description": "Optional. Rows in this table of data."
        },
        "subtitle": {
          "type": "string",
          "description": "Optional. Subtitle to the title."
        },
        "title": {
          "type": "string",
          "description": "Title of the card."
        }
      },
      "type": "object",
      "required": [
        "buttons",
        "columnProperties",
        "image",
        "rows",
        "subtitle",
        "title"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardRow": {
      "description": "Row of TableCard.",
      "properties": {
        "cells": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardCell"
          },
          "description": "Optional. List of cells that make up this row."
        },
        "dividerAfter": {
          "type": "boolean",
          "description": "Optional. Whether to add a visual divider after this row."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardRowResponse": {
      "description": "Row of TableCard.",
      "properties": {
        "cells": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageTableCardCellResponse"
          },
          "description": "Optional. List of cells that make up this row."
        },
        "dividerAfter": {
          "type": "boolean",
          "description": "Optional. Whether to add a visual divider after this row."
        }
      },
      "type": "object",
      "required": [
        "cells",
        "dividerAfter"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudio": {
      "description": "Plays audio from a file in Telephony Gateway.",
      "properties": {
        "audioUri": {
          "type": "string",
          "description": "URI to a Google Cloud Storage object containing the audio to play, e.g., \"gs://bucket/object\". The object must contain a single channel (mono) of linear PCM audio (2 bytes / sample) at 8kHz. This object must be readable by the `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` service account where is the number of the Telephony Gateway project (usually the same as the Dialogflow agent project). If the Google Cloud Storage bucket is in the Telephony Gateway project, this permission is added by default when enabling the Dialogflow V2 API. For audio from other sources, consider using the `TelephonySynthesizeSpeech` message with SSML."
        }
      },
      "type": "object",
      "required": [
        "audioUri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudioResponse": {
      "description": "Plays audio from a file in Telephony Gateway.",
      "properties": {
        "audioUri": {
          "type": "string",
          "description": "URI to a Google Cloud Storage object containing the audio to play, e.g., \"gs://bucket/object\". The object must contain a single channel (mono) of linear PCM audio (2 bytes / sample) at 8kHz. This object must be readable by the `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` service account where is the number of the Telephony Gateway project (usually the same as the Dialogflow agent project). If the Google Cloud Storage bucket is in the Telephony Gateway project, this permission is added by default when enabling the Dialogflow V2 API. For audio from other sources, consider using the `TelephonySynthesizeSpeech` message with SSML."
        }
      },
      "type": "object",
      "required": [
        "audioUri"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeech": {
      "description": "Synthesizes speech and plays back the synthesized audio to the caller in Telephony Gateway. Telephony Gateway takes the synthesizer settings from `DetectIntentResponse.output_audio_config` which can either be set at request-level or can come from the agent-level synthesizer config.",
      "properties": {
        "ssml": {
          "type": "string",
          "description": "The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml)."
        },
        "text": {
          "type": "string",
          "description": "The raw text to be synthesized."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeechResponse": {
      "description": "Synthesizes speech and plays back the synthesized audio to the caller in Telephony Gateway. Telephony Gateway takes the synthesizer settings from `DetectIntentResponse.output_audio_config` which can either be set at request-level or can come from the agent-level synthesizer config.",
      "properties": {
        "ssml": {
          "type": "string",
          "description": "The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml)."
        },
        "text": {
          "type": "string",
          "description": "The raw text to be synthesized."
        }
      },
      "type": "object",
      "required": [
        "ssml",
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCall": {
      "description": "Transfers the call in Telephony Gateway.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "The phone number to transfer the call to in [E.164 format](https://en.wikipedia.org/wiki/E.164). We currently only allow transferring to US numbers (+1xxxyyyzzzz)."
        }
      },
      "type": "object",
      "required": [
        "phoneNumber"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCallResponse": {
      "description": "Transfers the call in Telephony Gateway.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "The phone number to transfer the call to in [E.164 format](https://en.wikipedia.org/wiki/E.164). We currently only allow transferring to US numbers (+1xxxyyyzzzz)."
        }
      },
      "type": "object",
      "required": [
        "phoneNumber"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageText": {
      "description": "The text response message.",
      "properties": {
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of the agent's responses."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentMessageTextResponse": {
      "description": "The text response message.",
      "properties": {
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of the agent's responses."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentParameter": {
      "description": "Represents intent parameters.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "Optional. The default value to use when the `value` yields an empty result. Default values can be extracted from contexts by using the following syntax: `#context_name.parameter_name`."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "entityTypeDisplayName": {
          "type": "string",
          "description": "Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided."
        },
        "isList": {
          "type": "boolean",
          "description": "Optional. Indicates whether the parameter represents a list of values."
        },
        "mandatory": {
          "type": "boolean",
          "description": "Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this parameter."
        },
        "prompts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter."
        },
        "value": {
          "type": "string",
          "description": "Optional. The definition of the parameter value. It can be: - a constant string, - a parameter value defined as `$parameter_name`, - an original parameter value defined as `$parameter_name.original`, - a parameter value from some context defined as `#context_name.parameter_name`."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentParameterResponse": {
      "description": "Represents intent parameters.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "Optional. The default value to use when the `value` yields an empty result. Default values can be extracted from contexts by using the following syntax: `#context_name.parameter_name`."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "entityTypeDisplayName": {
          "type": "string",
          "description": "Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided."
        },
        "isList": {
          "type": "boolean",
          "description": "Optional. Indicates whether the parameter represents a list of values."
        },
        "mandatory": {
          "type": "boolean",
          "description": "Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this parameter."
        },
        "prompts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter."
        },
        "value": {
          "type": "string",
          "description": "Optional. The definition of the parameter value. It can be: - a constant string, - a parameter value defined as `$parameter_name`, - an original parameter value defined as `$parameter_name.original`, - a parameter value from some context defined as `#context_name.parameter_name`."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "displayName",
        "entityTypeDisplayName",
        "isList",
        "mandatory",
        "name",
        "prompts",
        "value"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhrase": {
      "description": "Represents an example that the agent is trained on.",
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart"
          },
          "description": "The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `entity_type`, `alias`, and `user_defined` fields are all set."
        },
        "timesAddedCount": {
          "type": "integer",
          "description": "Optional. Indicates how many times this example was added to the intent. Each time a developer adds an existing sample by editing an intent or training, this counter is increased."
        },
        "type": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhraseType",
          "description": "The type of the training phrase."
        }
      },
      "type": "object",
      "required": [
        "parts",
        "type"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart": {
      "description": "Represents a part of a training phrase.",
      "properties": {
        "alias": {
          "type": "string",
          "description": "Optional. The parameter name for the value extracted from the annotated part of the example. This field is required for annotated parts of the training phrase."
        },
        "entityType": {
          "type": "string",
          "description": "Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase."
        },
        "text": {
          "type": "string",
          "description": "The text for this part."
        },
        "userDefined": {
          "type": "boolean",
          "description": "Optional. Indicates whether the text was manually annotated. This field is set to true when the Dialogflow Console is used to manually annotate the part. When creating an annotated part with the API, you must set this to true."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhrasePartResponse": {
      "description": "Represents a part of a training phrase.",
      "properties": {
        "alias": {
          "type": "string",
          "description": "Optional. The parameter name for the value extracted from the annotated part of the example. This field is required for annotated parts of the training phrase."
        },
        "entityType": {
          "type": "string",
          "description": "Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase."
        },
        "text": {
          "type": "string",
          "description": "The text for this part."
        },
        "userDefined": {
          "type": "boolean",
          "description": "Optional. Indicates whether the text was manually annotated. This field is set to true when the Dialogflow Console is used to manually annotate the part. When creating an annotated part with the API, you must set this to true."
        }
      },
      "type": "object",
      "required": [
        "alias",
        "entityType",
        "text",
        "userDefined"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhraseResponse": {
      "description": "Represents an example that the agent is trained on.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The unique identifier of this training phrase."
        },
        "parts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhrasePartResponse"
          },
          "description": "The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `entity_type`, `alias`, and `user_defined` fields are all set."
        },
        "timesAddedCount": {
          "type": "integer",
          "description": "Optional. Indicates how many times this example was added to the intent. Each time a developer adds an existing sample by editing an intent or training, this counter is increased."
        },
        "type": {
          "type": "string",
          "description": "The type of the training phrase."
        }
      },
      "type": "object",
      "required": [
        "name",
        "parts",
        "timesAddedCount",
        "type"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhraseType": {
      "description": "Required. The type of the training phrase.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Not specified. This value should never be used.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Example",
          "description": "Examples do not contain @-prefixed entity type names, but example parts can be annotated with entity types.",
          "value": "EXAMPLE"
        },
        {
          "name": "Template",
          "description": "Templates are not annotated with entity types, but they can contain @-prefixed entity type names as substrings. Note: Template mode has been deprecated. Example mode is the only supported way to create new training phrases. If you have existing training phrases in template mode, they will be removed during training and it can cause a drop in agent performance.",
          "value": "TEMPLATE"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1LoggingConfig": {
      "description": "Defines logging behavior for conversation lifecycle events.",
      "properties": {
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1LoggingConfigResponse": {
      "description": "Defines logging behavior for conversation lifecycle events.",
      "properties": {
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos."
        }
      },
      "type": "object",
      "required": [
        "enableStackdriverLogging"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1NotificationConfig": {
      "description": "Defines notification behavior.",
      "properties": {
        "messageFormat": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfigMessageFormat",
          "description": "Format of message."
        },
        "topic": {
          "type": "string",
          "description": "Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. For telephony integration to receive notification, make sure either this topic is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. For chat integration to receive notification, make sure API caller has been granted the `Dialogflow Service Agent` role for the topic. Format: `projects//locations//topics/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1NotificationConfigMessageFormat": {
      "description": "Format of message.",
      "type": "string",
      "enum": [
        {
          "name": "MessageFormatUnspecified",
          "description": "If it is unspecified, PROTO will be used.",
          "value": "MESSAGE_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Proto",
          "description": "Pub/Sub message will be serialized proto.",
          "value": "PROTO"
        },
        {
          "name": "Json",
          "description": "Pub/Sub message will be json.",
          "value": "JSON"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1NotificationConfigResponse": {
      "description": "Defines notification behavior.",
      "properties": {
        "messageFormat": {
          "type": "string",
          "description": "Format of message."
        },
        "topic": {
          "type": "string",
          "description": "Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. For telephony integration to receive notification, make sure either this topic is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. For chat integration to receive notification, make sure API caller has been granted the `Dialogflow Service Agent` role for the topic. Format: `projects//locations//topics/`."
        }
      },
      "type": "object",
      "required": [
        "messageFormat",
        "topic"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1SpeechToTextConfig": {
      "description": "Configures speech transcription for ConversationProfile.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Which Speech model to select. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then a default model is used. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details."
        },
        "speechModelVariant": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SpeechToTextConfigSpeechModelVariant",
          "description": "The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error."
        },
        "useTimeoutBasedEndpointing": {
          "type": "boolean",
          "description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1SpeechToTextConfigResponse": {
      "description": "Configures speech transcription for ConversationProfile.",
      "properties": {
        "model": {
          "type": "string",
          "description": "Which Speech model to select. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then a default model is used. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details."
        },
        "speechModelVariant": {
          "type": "string",
          "description": "The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error."
        },
        "useTimeoutBasedEndpointing": {
          "type": "boolean",
          "description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value."
        }
      },
      "type": "object",
      "required": [
        "model",
        "speechModelVariant",
        "useTimeoutBasedEndpointing"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1SpeechToTextConfigSpeechModelVariant": {
      "description": "The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.",
      "type": "string",
      "enum": [
        {
          "name": "SpeechModelVariantUnspecified",
          "description": "No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.",
          "value": "SPEECH_MODEL_VARIANT_UNSPECIFIED"
        },
        {
          "name": "UseBestAvailable",
          "description": "Use the best available variant of the Speech model that the caller is eligible for. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible for enhanced models.",
          "value": "USE_BEST_AVAILABLE"
        },
        {
          "name": "UseStandard",
          "description": "Use standard model variant even if an enhanced model is available. See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) for details about enhanced models.",
          "value": "USE_STANDARD"
        },
        {
          "name": "UseEnhanced",
          "description": "Use an enhanced model variant: * If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant. The [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) describes which models have enhanced variants. * If the API caller isn't eligible for enhanced models, Dialogflow returns an error. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible.",
          "value": "USE_ENHANCED"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1SuggestionFeature": {
      "description": "The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list.",
      "properties": {
        "type": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SuggestionFeatureType",
          "description": "Type of Human Agent Assistant API feature to request."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1SuggestionFeatureResponse": {
      "description": "The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of Human Agent Assistant API feature to request."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1SuggestionFeatureType": {
      "description": "Type of Human Agent Assistant API feature to request.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified feature type.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "ArticleSuggestion",
          "description": "Run article suggestion model for chat.",
          "value": "ARTICLE_SUGGESTION"
        },
        {
          "name": "Faq",
          "description": "Run FAQ model.",
          "value": "FAQ"
        },
        {
          "name": "SmartReply",
          "description": "Run smart reply model for chat.",
          "value": "SMART_REPLY"
        },
        {
          "name": "DialogflowAssist",
          "description": "Run Dialogflow assist model for chat, which will return automated agent response as suggestion.",
          "value": "DIALOGFLOW_ASSIST"
        },
        {
          "name": "ConversationSummarization",
          "description": "Run conversation summarization model for chat.",
          "value": "CONVERSATION_SUMMARIZATION"
        },
        {
          "name": "KnowledgeSearch",
          "description": "Run knowledge search with text input from agent or text generated query.",
          "value": "KNOWLEDGE_SEARCH"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig": {
      "description": "Configuration of how speech should be synthesized.",
      "properties": {
        "effectsProfileId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given."
        },
        "pitch": {
          "type": "number",
          "description": "Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch."
        },
        "speakingRate": {
          "type": "number",
          "description": "Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other values < 0.25 or > 4.0 will return an error."
        },
        "voice": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1VoiceSelectionParams",
          "description": "Optional. The desired voice of the synthesized audio."
        },
        "volumeGainDb": {
          "type": "number",
          "description": "Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1SynthesizeSpeechConfigResponse": {
      "description": "Configuration of how speech should be synthesized.",
      "properties": {
        "effectsProfileId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given."
        },
        "pitch": {
          "type": "number",
          "description": "Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch."
        },
        "speakingRate": {
          "type": "number",
          "description": "Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other values < 0.25 or > 4.0 will return an error."
        },
        "voice": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1VoiceSelectionParamsResponse",
          "description": "Optional. The desired voice of the synthesized audio."
        },
        "volumeGainDb": {
          "type": "number",
          "description": "Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that."
        }
      },
      "type": "object",
      "required": [
        "effectsProfileId",
        "pitch",
        "speakingRate",
        "voice",
        "volumeGainDb"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1TextToSpeechSettings": {
      "description": "Instructs the speech synthesizer on how to generate the output audio content.",
      "properties": {
        "enableTextToSpeech": {
          "type": "boolean",
          "description": "Optional. Indicates whether text to speech is enabled. Even when this field is false, other settings in this proto are still retained."
        },
        "outputAudioEncoding": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1TextToSpeechSettingsOutputAudioEncoding",
          "description": "Audio encoding of the synthesized audio content."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "Optional. The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice's natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality)."
        },
        "synthesizeSpeechConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/docs/reference/language) to SynthesizeSpeechConfig."
        }
      },
      "type": "object",
      "required": [
        "outputAudioEncoding"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1TextToSpeechSettingsOutputAudioEncoding": {
      "description": "Required. Audio encoding of the synthesized audio content.",
      "type": "string",
      "enum": [
        {
          "name": "OutputAudioEncodingUnspecified",
          "description": "Not specified.",
          "value": "OUTPUT_AUDIO_ENCODING_UNSPECIFIED"
        },
        {
          "name": "OutputAudioEncodingLinear16",
          "description": "Uncompressed 16-bit signed little-endian samples (Linear PCM). Audio content returned as LINEAR16 also contains a WAV header.",
          "value": "OUTPUT_AUDIO_ENCODING_LINEAR_16"
        },
        {
          "name": "OutputAudioEncodingMp3",
          "description": "MP3 audio at 32kbps.",
          "value": "OUTPUT_AUDIO_ENCODING_MP3"
        },
        {
          "name": "OutputAudioEncodingMp364Kbps",
          "description": "MP3 audio at 64kbps.",
          "value": "OUTPUT_AUDIO_ENCODING_MP3_64_KBPS"
        },
        {
          "name": "OutputAudioEncodingOggOpus",
          "description": "Opus encoded audio wrapped in an ogg container. The result will be a file which can be played natively on Android, and in browsers (at least Chrome and Firefox). The quality of the encoding is considerably higher than MP3 while using approximately the same bitrate.",
          "value": "OUTPUT_AUDIO_ENCODING_OGG_OPUS"
        },
        {
          "name": "OutputAudioEncodingMulaw",
          "description": "8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
          "value": "OUTPUT_AUDIO_ENCODING_MULAW"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1TextToSpeechSettingsResponse": {
      "description": "Instructs the speech synthesizer on how to generate the output audio content.",
      "properties": {
        "enableTextToSpeech": {
          "type": "boolean",
          "description": "Optional. Indicates whether text to speech is enabled. Even when this field is false, other settings in this proto are still retained."
        },
        "outputAudioEncoding": {
          "type": "string",
          "description": "Audio encoding of the synthesized audio content."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "Optional. The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice's natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality)."
        },
        "synthesizeSpeechConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/docs/reference/language) to SynthesizeSpeechConfig."
        }
      },
      "type": "object",
      "required": [
        "enableTextToSpeech",
        "outputAudioEncoding",
        "sampleRateHertz",
        "synthesizeSpeechConfigs"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1VoiceSelectionParams": {
      "description": "Description of which voice to use for speech synthesis.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and ssml_gender. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices)."
        },
        "ssmlGender": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1VoiceSelectionParamsSsmlGender",
          "description": "Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1VoiceSelectionParamsResponse": {
      "description": "Description of which voice to use for speech synthesis.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and ssml_gender. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices)."
        },
        "ssmlGender": {
          "type": "string",
          "description": "Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request."
        }
      },
      "type": "object",
      "required": [
        "name",
        "ssmlGender"
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleCloudDialogflowV2beta1VoiceSelectionParamsSsmlGender": {
      "description": "Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request.",
      "type": "string",
      "enum": [
        {
          "name": "SsmlVoiceGenderUnspecified",
          "description": "An unspecified gender, which means that the client doesn't care which gender the selected voice will have.",
          "value": "SSML_VOICE_GENDER_UNSPECIFIED"
        },
        {
          "name": "SsmlVoiceGenderMale",
          "description": "A male voice.",
          "value": "SSML_VOICE_GENDER_MALE"
        },
        {
          "name": "SsmlVoiceGenderFemale",
          "description": "A female voice.",
          "value": "SSML_VOICE_GENDER_FEMALE"
        },
        {
          "name": "SsmlVoiceGenderNeutral",
          "description": "A gender-neutral voice.",
          "value": "SSML_VOICE_GENDER_NEUTRAL"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:dialogflow/v2beta1:IntentDefaultResponsePlatformsItem": {
      "type": "string",
      "enum": [
        {
          "name": "PlatformUnspecified",
          "description": "Not specified.",
          "value": "PLATFORM_UNSPECIFIED"
        },
        {
          "name": "Facebook",
          "description": "Facebook.",
          "value": "FACEBOOK"
        },
        {
          "name": "Slack",
          "description": "Slack.",
          "value": "SLACK"
        },
        {
          "name": "Telegram",
          "description": "Telegram.",
          "value": "TELEGRAM"
        },
        {
          "name": "Kik",
          "description": "Kik.",
          "value": "KIK"
        },
        {
          "name": "Skype",
          "description": "Skype.",
          "value": "SKYPE"
        },
        {
          "name": "Line",
          "description": "Line.",
          "value": "LINE"
        },
        {
          "name": "Viber",
          "description": "Viber.",
          "value": "VIBER"
        },
        {
          "name": "ActionsOnGoogle",
          "description": "Google Assistant See [Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
          "value": "ACTIONS_ON_GOOGLE"
        },
        {
          "name": "Telephony",
          "description": "Telephony Gateway.",
          "value": "TELEPHONY"
        },
        {
          "name": "GoogleHangouts",
          "description": "Google Hangouts.",
          "value": "GOOGLE_HANGOUTS"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:IntentWebhookState": {
      "description": "Optional. Indicates whether webhooks are enabled for the intent.",
      "type": "string",
      "enum": [
        {
          "name": "WebhookStateUnspecified",
          "description": "Webhook is disabled in the agent and in the intent.",
          "value": "WEBHOOK_STATE_UNSPECIFIED"
        },
        {
          "name": "WebhookStateEnabled",
          "description": "Webhook is enabled in the agent and in the intent.",
          "value": "WEBHOOK_STATE_ENABLED"
        },
        {
          "name": "WebhookStateEnabledForSlotFilling",
          "description": "Webhook is enabled in the agent and in the intent. Also, each slot filling prompt is forwarded to the webhook.",
          "value": "WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:ParticipantRole": {
      "description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.",
      "type": "string",
      "enum": [
        {
          "name": "RoleUnspecified",
          "description": "Participant role not set.",
          "value": "ROLE_UNSPECIFIED"
        },
        {
          "name": "HumanAgent",
          "description": "Participant is a human agent.",
          "value": "HUMAN_AGENT"
        },
        {
          "name": "AutomatedAgent",
          "description": "Participant is an automated agent, such as a Dialogflow agent.",
          "value": "AUTOMATED_AGENT"
        },
        {
          "name": "EndUser",
          "description": "Participant is an end user that has called or chatted with Dialogflow services.",
          "value": "END_USER"
        }
      ]
    },
    "google-native:dialogflow/v2beta1:SessionEntityTypeEntityOverrideMode": {
      "description": "Required. Indicates whether the additional data should override or supplement the custom entity type definition.",
      "type": "string",
      "enum": [
        {
          "name": "EntityOverrideModeUnspecified",
          "description": "Not specified. This value should be never used.",
          "value": "ENTITY_OVERRIDE_MODE_UNSPECIFIED"
        },
        {
          "name": "EntityOverrideModeOverride",
          "description": "The collection of session entities overrides the collection of entities in the corresponding custom entity type.",
          "value": "ENTITY_OVERRIDE_MODE_OVERRIDE"
        },
        {
          "name": "EntityOverrideModeSupplement",
          "description": "The collection of session entities extends the collection of entities in the corresponding custom entity type. Note: Even in this override mode calls to `ListSessionEntityTypes`, `GetSessionEntityType`, `CreateSessionEntityType` and `UpdateSessionEntityType` only return the additional entities added in this session entity type. If you want to get the supplemented list, please call EntityTypes.GetEntityType on the custom entity type and merge.",
          "value": "ENTITY_OVERRIDE_MODE_SUPPLEMENT"
        }
      ]
    },
    "google-native:dialogflow/v3:EntityTypeAutoExpansionMode": {
      "description": "Indicates whether the entity type can be automatically expanded.",
      "type": "string",
      "enum": [
        {
          "name": "AutoExpansionModeUnspecified",
          "description": "Auto expansion disabled for the entity.",
          "value": "AUTO_EXPANSION_MODE_UNSPECIFIED"
        },
        {
          "name": "AutoExpansionModeDefault",
          "description": "Allows an agent to recognize values that have not been explicitly listed in the entity.",
          "value": "AUTO_EXPANSION_MODE_DEFAULT"
        }
      ]
    },
    "google-native:dialogflow/v3:EntityTypeKind": {
      "description": "Required. Indicates the kind of entity type.",
      "type": "string",
      "enum": [
        {
          "name": "KindUnspecified",
          "description": "Not specified. This value should be never used.",
          "value": "KIND_UNSPECIFIED"
        },
        {
          "name": "KindMap",
          "description": "Map entity types allow mapping of a group of synonyms to a canonical value.",
          "value": "KIND_MAP"
        },
        {
          "name": "KindList",
          "description": "List entity types contain a set of entries that do not map to canonical values. However, list entity types can contain references to other entity types (with or without aliases).",
          "value": "KIND_LIST"
        },
        {
          "name": "KindRegexp",
          "description": "Regexp entity types allow to specify regular expressions in entries values.",
          "value": "KIND_REGEXP"
        }
      ]
    },
    "google-native:dialogflow/v3:ExperimentState": {
      "description": "The current state of the experiment. Transition triggered by Experiments.StartExperiment: DRAFT->RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT->DONE or RUNNING->DONE.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "State unspecified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Draft",
          "description": "The experiment is created but not started yet.",
          "value": "DRAFT"
        },
        {
          "name": "Running",
          "description": "The experiment is running.",
          "value": "RUNNING"
        },
        {
          "name": "Done",
          "description": "The experiment is done.",
          "value": "DONE"
        },
        {
          "name": "RolloutFailed",
          "description": "The experiment with auto-rollout enabled has failed.",
          "value": "ROLLOUT_FAILED"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AdvancedSettings": {
      "description": "Hierarchical advanced settings for agent/flow/page/fulfillment/parameter. Settings exposed at lower level overrides the settings exposed at higher level. Overriding occurs at the sub-setting level. For example, the playback_interruption_settings at fulfillment level only overrides the playback_interruption_settings at the agent level, leaving other settings at the agent level unchanged. DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.",
      "properties": {
        "audioExportGcsDestination": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3GcsDestination",
          "description": "If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels: - Agent level - Flow level"
        },
        "dtmfSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettings",
          "description": "Settings for DTMF. Exposed at the following levels: - Agent level - Flow level - Page level - Parameter level."
        },
        "loggingSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettings",
          "description": "Settings for logging. Settings for Dialogflow History, Contact Center messages, StackDriver logs, and speech logging. Exposed at the following levels: - Agent level."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettings": {
      "description": "Define behaviors for DTMF (dual tone multi frequency).",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a \"3\" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance)."
        },
        "finishDigit": {
          "type": "string",
          "description": "The digit that terminates a DTMF digit sequence."
        },
        "maxDigits": {
          "type": "integer",
          "description": "Max length of DTMF digits."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettingsResponse": {
      "description": "Define behaviors for DTMF (dual tone multi frequency).",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a \"3\" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance)."
        },
        "finishDigit": {
          "type": "string",
          "description": "The digit that terminates a DTMF digit sequence."
        },
        "maxDigits": {
          "type": "integer",
          "description": "Max length of DTMF digits."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "finishDigit",
        "maxDigits"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettings": {
      "description": "Define behaviors on logging.",
      "properties": {
        "enableInteractionLogging": {
          "type": "boolean",
          "description": "If true, DF Interaction logging is currently enabled."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "If true, StackDriver logging is currently enabled."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettingsResponse": {
      "description": "Define behaviors on logging.",
      "properties": {
        "enableInteractionLogging": {
          "type": "boolean",
          "description": "If true, DF Interaction logging is currently enabled."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "If true, StackDriver logging is currently enabled."
        }
      },
      "type": "object",
      "required": [
        "enableInteractionLogging",
        "enableStackdriverLogging"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse": {
      "description": "Hierarchical advanced settings for agent/flow/page/fulfillment/parameter. Settings exposed at lower level overrides the settings exposed at higher level. Overriding occurs at the sub-setting level. For example, the playback_interruption_settings at fulfillment level only overrides the playback_interruption_settings at the agent level, leaving other settings at the agent level unchanged. DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.",
      "properties": {
        "audioExportGcsDestination": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3GcsDestinationResponse",
          "description": "If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels: - Agent level - Flow level"
        },
        "dtmfSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettingsResponse",
          "description": "Settings for DTMF. Exposed at the following levels: - Agent level - Flow level - Page level - Parameter level."
        },
        "loggingSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettingsResponse",
          "description": "Settings for logging. Settings for Dialogflow History, Contact Center messages, StackDriver logs, and speech logging. Exposed at the following levels: - Agent level."
        }
      },
      "type": "object",
      "required": [
        "audioExportGcsDestination",
        "dtmfSettings",
        "loggingSettings"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AgentAnswerFeedbackSettings": {
      "description": "Settings for answer feedback collection.",
      "properties": {
        "enableAnswerFeedback": {
          "type": "boolean",
          "description": "Optional. If enabled, end users will be able to provide answer feedback to Dialogflow responses. Feature works only if interaction logging is enabled in the Dialogflow agent."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AgentAnswerFeedbackSettingsResponse": {
      "description": "Settings for answer feedback collection.",
      "properties": {
        "enableAnswerFeedback": {
          "type": "boolean",
          "description": "Optional. If enabled, end users will be able to provide answer feedback to Dialogflow responses. Feature works only if interaction logging is enabled in the Dialogflow agent."
        }
      },
      "type": "object",
      "required": [
        "enableAnswerFeedback"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AgentGenAppBuilderSettings": {
      "description": "Settings for Gen App Builder.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "The full name of the Gen App Builder engine related to this agent if there is one. Format: `projects/{Project ID}/locations/{Location ID}/collections/{Collection ID}/engines/{Engine ID}`"
        }
      },
      "type": "object",
      "required": [
        "engine"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AgentGenAppBuilderSettingsResponse": {
      "description": "Settings for Gen App Builder.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "The full name of the Gen App Builder engine related to this agent if there is one. Format: `projects/{Project ID}/locations/{Location ID}/collections/{Collection ID}/engines/{Engine ID}`"
        }
      },
      "type": "object",
      "required": [
        "engine"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettings": {
      "description": "Settings for connecting to Git repository for an agent.",
      "properties": {
        "githubSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettingsGithubSettings",
          "description": "GitHub settings."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettingsGithubSettings": {
      "description": "Settings of integration with GitHub.",
      "properties": {
        "accessToken": {
          "type": "string",
          "description": "The access token used to authenticate the access to the GitHub repository."
        },
        "branches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of branches configured to be used from Dialogflow."
        },
        "displayName": {
          "type": "string",
          "description": "The unique repository display name for the GitHub repository."
        },
        "repositoryUri": {
          "type": "string",
          "description": "The GitHub repository URI related to the agent."
        },
        "trackingBranch": {
          "type": "string",
          "description": "The branch of the GitHub repository tracked for this agent."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettingsGithubSettingsResponse": {
      "description": "Settings of integration with GitHub.",
      "properties": {
        "accessToken": {
          "type": "string",
          "description": "The access token used to authenticate the access to the GitHub repository."
        },
        "branches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of branches configured to be used from Dialogflow."
        },
        "displayName": {
          "type": "string",
          "description": "The unique repository display name for the GitHub repository."
        },
        "repositoryUri": {
          "type": "string",
          "description": "The GitHub repository URI related to the agent."
        },
        "trackingBranch": {
          "type": "string",
          "description": "The branch of the GitHub repository tracked for this agent."
        }
      },
      "type": "object",
      "required": [
        "accessToken",
        "branches",
        "displayName",
        "repositoryUri",
        "trackingBranch"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettingsResponse": {
      "description": "Settings for connecting to Git repository for an agent.",
      "properties": {
        "githubSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettingsGithubSettingsResponse",
          "description": "GitHub settings."
        }
      },
      "type": "object",
      "required": [
        "githubSettings"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AudioInput": {
      "description": "Represents the natural speech audio to be processed.",
      "properties": {
        "audio": {
          "type": "string",
          "description": "The natural language speech audio to be processed. A single request can contain up to 2 minutes of speech audio data. The transcribed text cannot contain more than 256 bytes. For non-streaming audio detect intent, both `config` and `audio` must be provided. For streaming audio detect intent, `config` must be provided in the first request and `audio` must be provided in all following requests."
        },
        "config": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3InputAudioConfig",
          "description": "Instructs the speech recognizer how to process the speech audio."
        }
      },
      "type": "object",
      "required": [
        "config"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3AudioInputResponse": {
      "description": "Represents the natural speech audio to be processed.",
      "properties": {
        "audio": {
          "type": "string",
          "description": "The natural language speech audio to be processed. A single request can contain up to 2 minutes of speech audio data. The transcribed text cannot contain more than 256 bytes. For non-streaming audio detect intent, both `config` and `audio` must be provided. For streaming audio detect intent, `config` must be provided in the first request and `audio` must be provided in all following requests."
        },
        "config": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3InputAudioConfigResponse",
          "description": "Instructs the speech recognizer how to process the speech audio."
        }
      },
      "type": "object",
      "required": [
        "audio",
        "config"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3BargeInConfig": {
      "description": "Configuration of the barge-in behavior. Barge-in instructs the API to return a detected utterance at a proper time while the client is playing back the response audio from a previous request. When the client sees the utterance, it should stop the playback and immediately get ready for receiving the responses for the current request. The barge-in handling requires the client to start streaming audio input as soon as it starts playing back the audio from the previous response. The playback is modeled into two phases: * No barge-in phase: which goes first and during which speech detection should not be carried out. * Barge-in phase: which follows the no barge-in phase and during which the API starts speech detection and may inform the client that an utterance has been detected. Note that no-speech event is not expected in this phase. The client provides this configuration in terms of the durations of those two phases. The durations are measured in terms of the audio length fromt the the start of the input audio. The flow goes like below: --> Time without speech detection | utterance only | utterance or no-speech event | | +-------------+ | +------------+ | +---------------+ ----------+ no barge-in +-|-+ barge-in +-|-+ normal period +----------- +-------------+ | +------------+ | +---------------+ No-speech event is a response with END_OF_UTTERANCE without any transcript following up.",
      "properties": {
        "noBargeInDuration": {
          "type": "string",
          "description": "Duration that is not eligible for barge-in at the beginning of the input audio."
        },
        "totalDuration": {
          "type": "string",
          "description": "Total duration for the playback at the beginning of the input audio."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3BargeInConfigResponse": {
      "description": "Configuration of the barge-in behavior. Barge-in instructs the API to return a detected utterance at a proper time while the client is playing back the response audio from a previous request. When the client sees the utterance, it should stop the playback and immediately get ready for receiving the responses for the current request. The barge-in handling requires the client to start streaming audio input as soon as it starts playing back the audio from the previous response. The playback is modeled into two phases: * No barge-in phase: which goes first and during which speech detection should not be carried out. * Barge-in phase: which follows the no barge-in phase and during which the API starts speech detection and may inform the client that an utterance has been detected. Note that no-speech event is not expected in this phase. The client provides this configuration in terms of the durations of those two phases. The durations are measured in terms of the audio length fromt the the start of the input audio. The flow goes like below: --> Time without speech detection | utterance only | utterance or no-speech event | | +-------------+ | +------------+ | +---------------+ ----------+ no barge-in +-|-+ barge-in +-|-+ normal period +----------- +-------------+ | +------------+ | +---------------+ No-speech event is a response with END_OF_UTTERANCE without any transcript following up.",
      "properties": {
        "noBargeInDuration": {
          "type": "string",
          "description": "Duration that is not eligible for barge-in at the beginning of the input audio."
        },
        "totalDuration": {
          "type": "string",
          "description": "Total duration for the playback at the beginning of the input audio."
        }
      },
      "type": "object",
      "required": [
        "noBargeInDuration",
        "totalDuration"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ConversationTurn": {
      "description": "One interaction between a human and virtual agent. The human provides some input and the virtual agent provides a response.",
      "properties": {
        "userInput": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurnUserInput",
          "description": "The user input."
        },
        "virtualAgentOutput": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutput",
          "description": "The virtual agent output."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ConversationTurnResponse": {
      "description": "One interaction between a human and virtual agent. The human provides some input and the virtual agent provides a response.",
      "properties": {
        "userInput": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurnUserInputResponse",
          "description": "The user input."
        },
        "virtualAgentOutput": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutputResponse",
          "description": "The virtual agent output."
        }
      },
      "type": "object",
      "required": [
        "userInput",
        "virtualAgentOutput"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ConversationTurnUserInput": {
      "description": "The input from the human user.",
      "properties": {
        "enableSentimentAnalysis": {
          "type": "boolean",
          "description": "Whether sentiment analysis is enabled."
        },
        "injectedParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Parameters that need to be injected into the conversation during intent detection."
        },
        "input": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3QueryInput",
          "description": "Supports text input, event input, dtmf input in the test case."
        },
        "isWebhookEnabled": {
          "type": "boolean",
          "description": "If webhooks should be allowed to trigger in response to the user utterance. Often if parameters are injected, webhooks should not be enabled."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ConversationTurnUserInputResponse": {
      "description": "The input from the human user.",
      "properties": {
        "enableSentimentAnalysis": {
          "type": "boolean",
          "description": "Whether sentiment analysis is enabled."
        },
        "injectedParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Parameters that need to be injected into the conversation during intent detection."
        },
        "input": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3QueryInputResponse",
          "description": "Supports text input, event input, dtmf input in the test case."
        },
        "isWebhookEnabled": {
          "type": "boolean",
          "description": "If webhooks should be allowed to trigger in response to the user utterance. Often if parameters are injected, webhooks should not be enabled."
        }
      },
      "type": "object",
      "required": [
        "enableSentimentAnalysis",
        "injectedParameters",
        "input",
        "isWebhookEnabled"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutput": {
      "description": "The output from the virtual agent.",
      "properties": {
        "currentPage": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Page",
          "description": "The Page on which the utterance was spoken. Only name and displayName will be set."
        },
        "diagnosticInfo": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Input only. The diagnostic info output for the turn. Required to calculate the testing coverage."
        },
        "sessionParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The session parameters available to the bot at this point."
        },
        "status": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleRpcStatus",
          "description": "Response error from the agent in the test result. If set, other output is empty."
        },
        "textResponses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageText"
          },
          "description": "The text responses from the agent for the turn."
        },
        "triggeredIntent": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Intent",
          "description": "The Intent that triggered the response. Only name and displayName will be set."
        }
      },
      "type": "object",
      "required": [
        "diagnosticInfo"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutputResponse": {
      "description": "The output from the virtual agent.",
      "properties": {
        "currentPage": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3PageResponse",
          "description": "The Page on which the utterance was spoken. Only name and displayName will be set."
        },
        "diagnosticInfo": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Input only. The diagnostic info output for the turn. Required to calculate the testing coverage."
        },
        "differences": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TestRunDifferenceResponse"
          },
          "description": "If this is part of a result conversation turn, the list of differences between the original run and the replay for this output, if any."
        },
        "sessionParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The session parameters available to the bot at this point."
        },
        "status": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleRpcStatusResponse",
          "description": "Response error from the agent in the test result. If set, other output is empty."
        },
        "textResponses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageTextResponse"
          },
          "description": "The text responses from the agent for the turn."
        },
        "triggeredIntent": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentResponse",
          "description": "The Intent that triggered the response. Only name and displayName will be set."
        }
      },
      "type": "object",
      "required": [
        "currentPage",
        "diagnosticInfo",
        "differences",
        "sessionParameters",
        "status",
        "textResponses",
        "triggeredIntent"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3DataStoreConnection": {
      "description": "A data store connection. It represents a data store in Discovery Engine and the type of the contents it contains.",
      "properties": {
        "dataStore": {
          "type": "string",
          "description": "The full name of the referenced data store. Formats: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}` `projects/{project}/locations/{location}/dataStores/{data_store}`"
        },
        "dataStoreType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3DataStoreConnectionDataStoreType",
          "description": "The type of the connected data store."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3DataStoreConnectionDataStoreType": {
      "description": "The type of the connected data store.",
      "type": "string",
      "enum": [
        {
          "name": "DataStoreTypeUnspecified",
          "description": "Not specified. This value indicates that the data store type is not specified, so it will not be used during search.",
          "value": "DATA_STORE_TYPE_UNSPECIFIED"
        },
        {
          "name": "PublicWeb",
          "description": "A data store that contains public web content.",
          "value": "PUBLIC_WEB"
        },
        {
          "name": "Unstructured",
          "description": "A data store that contains unstructured private data.",
          "value": "UNSTRUCTURED"
        },
        {
          "name": "Structured",
          "description": "A data store that contains structured data (for example FAQ).",
          "value": "STRUCTURED"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3DataStoreConnectionResponse": {
      "description": "A data store connection. It represents a data store in Discovery Engine and the type of the contents it contains.",
      "properties": {
        "dataStore": {
          "type": "string",
          "description": "The full name of the referenced data store. Formats: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}` `projects/{project}/locations/{location}/dataStores/{data_store}`"
        },
        "dataStoreType": {
          "type": "string",
          "description": "The type of the connected data store."
        }
      },
      "type": "object",
      "required": [
        "dataStore",
        "dataStoreType"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3DtmfInput": {
      "description": "Represents the input for dtmf event.",
      "properties": {
        "digits": {
          "type": "string",
          "description": "The dtmf digits."
        },
        "finishDigit": {
          "type": "string",
          "description": "The finish digit (if any)."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3DtmfInputResponse": {
      "description": "Represents the input for dtmf event.",
      "properties": {
        "digits": {
          "type": "string",
          "description": "The dtmf digits."
        },
        "finishDigit": {
          "type": "string",
          "description": "The finish digit (if any)."
        }
      },
      "type": "object",
      "required": [
        "digits",
        "finishDigit"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EntityTypeEntity": {
      "description": "An **entity entry** for an associated entity type.",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`."
        },
        "value": {
          "type": "string",
          "description": "The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A canonical value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases)."
        }
      },
      "type": "object",
      "required": [
        "synonyms",
        "value"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EntityTypeEntityResponse": {
      "description": "An **entity entry** for an associated entity type.",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`."
        },
        "value": {
          "type": "string",
          "description": "The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A canonical value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases)."
        }
      },
      "type": "object",
      "required": [
        "synonyms",
        "value"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EntityTypeExcludedPhrase": {
      "description": "An excluded entity phrase that should not be matched.",
      "properties": {
        "value": {
          "type": "string",
          "description": "The word or phrase to be excluded."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EntityTypeExcludedPhraseResponse": {
      "description": "An excluded entity phrase that should not be matched.",
      "properties": {
        "value": {
          "type": "string",
          "description": "The word or phrase to be excluded."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EnvironmentTestCasesConfig": {
      "description": "The configuration for continuous tests.",
      "properties": {
        "enableContinuousRun": {
          "type": "boolean",
          "description": "Whether to run test cases in TestCasesConfig.test_cases periodically. Default false. If set to true, run once a day."
        },
        "enablePredeploymentRun": {
          "type": "boolean",
          "description": "Whether to run test cases in TestCasesConfig.test_cases before deploying a flow version to the environment. Default false."
        },
        "testCases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of test case names to run. They should be under the same agent. Format of each test case name: `projects//locations/ /agents//testCases/`"
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EnvironmentTestCasesConfigResponse": {
      "description": "The configuration for continuous tests.",
      "properties": {
        "enableContinuousRun": {
          "type": "boolean",
          "description": "Whether to run test cases in TestCasesConfig.test_cases periodically. Default false. If set to true, run once a day."
        },
        "enablePredeploymentRun": {
          "type": "boolean",
          "description": "Whether to run test cases in TestCasesConfig.test_cases before deploying a flow version to the environment. Default false."
        },
        "testCases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of test case names to run. They should be under the same agent. Format of each test case name: `projects//locations/ /agents//testCases/`"
        }
      },
      "type": "object",
      "required": [
        "enableContinuousRun",
        "enablePredeploymentRun",
        "testCases"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EnvironmentVersionConfig": {
      "description": "Configuration for the version.",
      "properties": {
        "version": {
          "type": "string",
          "description": "Format: projects//locations//agents//flows//versions/."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EnvironmentVersionConfigResponse": {
      "description": "Configuration for the version.",
      "properties": {
        "version": {
          "type": "string",
          "description": "Format: projects//locations//agents//flows//versions/."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EnvironmentWebhookConfig": {
      "description": "Configuration for webhooks.",
      "properties": {
        "webhookOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Webhook"
          },
          "description": "The list of webhooks to override for the agent environment. The webhook must exist in the agent. You can override fields in `generic_web_service` and `service_directory`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EnvironmentWebhookConfigResponse": {
      "description": "Configuration for webhooks.",
      "properties": {
        "webhookOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookResponse"
          },
          "description": "The list of webhooks to override for the agent environment. The webhook must exist in the agent. You can override fields in `generic_web_service` and `service_directory`."
        }
      },
      "type": "object",
      "required": [
        "webhookOverrides"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EventHandler": {
      "description": "An event handler specifies an event that can be handled during a session. When the specified event happens, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the event, it will be called. * If there is a `target_page` associated with the event, the session will transition into the specified page. * If there is a `target_flow` associated with the event, the session will transition into the specified flow.",
      "properties": {
        "event": {
          "type": "string",
          "description": "The name of the event to handle."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Fulfillment",
          "description": "The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks."
        }
      },
      "type": "object",
      "required": [
        "event"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EventHandlerResponse": {
      "description": "An event handler specifies an event that can be handled during a session. When the specified event happens, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the event, it will be called. * If there is a `target_page` associated with the event, the session will transition into the specified page. * If there is a `target_flow` associated with the event, the session will transition into the specified flow.",
      "properties": {
        "event": {
          "type": "string",
          "description": "The name of the event to handle."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this event handler."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentResponse",
          "description": "The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks."
        }
      },
      "type": "object",
      "required": [
        "event",
        "name",
        "targetFlow",
        "targetPage",
        "triggerFulfillment"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EventInput": {
      "description": "Represents the event to trigger.",
      "properties": {
        "event": {
          "type": "string",
          "description": "Name of the event."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3EventInputResponse": {
      "description": "Represents the event to trigger.",
      "properties": {
        "event": {
          "type": "string",
          "description": "Name of the event."
        }
      },
      "type": "object",
      "required": [
        "event"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentDefinition": {
      "description": "Definition of the experiment.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. \"query_input.language_code=en\" See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "versionVariants": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VersionVariants",
          "description": "The flow versions as the variants of this experiment."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentDefinitionResponse": {
      "description": "Definition of the experiment.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. \"query_input.language_code=en\" See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "versionVariants": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VersionVariantsResponse",
          "description": "The flow versions as the variants of this experiment."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "versionVariants"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResult": {
      "description": "The inference result which includes an objective metric to optimize and the confidence interval.",
      "properties": {
        "lastUpdateTime": {
          "type": "string",
          "description": "The last time the experiment's stats data was updated. Will have default value if stats have never been computed for this experiment."
        },
        "versionMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultVersionMetrics"
          },
          "description": "Version variants and metrics."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultConfidenceInterval": {
      "description": "A confidence interval is a range of possible values for the experiment objective you are trying to measure.",
      "properties": {
        "confidenceLevel": {
          "type": "number",
          "description": "The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval."
        },
        "lowerBound": {
          "type": "number",
          "description": "Lower bound of the interval."
        },
        "ratio": {
          "type": "number",
          "description": "The percent change between an experiment metric's value and the value for its control."
        },
        "upperBound": {
          "type": "number",
          "description": "Upper bound of the interval."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultConfidenceIntervalResponse": {
      "description": "A confidence interval is a range of possible values for the experiment objective you are trying to measure.",
      "properties": {
        "confidenceLevel": {
          "type": "number",
          "description": "The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval."
        },
        "lowerBound": {
          "type": "number",
          "description": "Lower bound of the interval."
        },
        "ratio": {
          "type": "number",
          "description": "The percent change between an experiment metric's value and the value for its control."
        },
        "upperBound": {
          "type": "number",
          "description": "Upper bound of the interval."
        }
      },
      "type": "object",
      "required": [
        "confidenceLevel",
        "lowerBound",
        "ratio",
        "upperBound"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultMetric": {
      "description": "Metric and corresponding confidence intervals.",
      "properties": {
        "confidenceInterval": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultConfidenceInterval",
          "description": "The probability that the treatment is better than all other treatments in the experiment"
        },
        "count": {
          "type": "number",
          "description": "Count value of a metric."
        },
        "countType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultMetricCountType",
          "description": "Count-based metric type. Only one of type or count_type is specified in each Metric."
        },
        "ratio": {
          "type": "number",
          "description": "Ratio value of a metric."
        },
        "type": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultMetricType",
          "description": "Ratio-based metric type. Only one of type or count_type is specified in each Metric."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultMetricCountType": {
      "description": "Count-based metric type. Only one of type or count_type is specified in each Metric.",
      "type": "string",
      "enum": [
        {
          "name": "CountTypeUnspecified",
          "description": "Count type unspecified.",
          "value": "COUNT_TYPE_UNSPECIFIED"
        },
        {
          "name": "TotalNoMatchCount",
          "description": "Total number of occurrences of a 'NO_MATCH'.",
          "value": "TOTAL_NO_MATCH_COUNT"
        },
        {
          "name": "TotalTurnCount",
          "description": "Total number of turn counts.",
          "value": "TOTAL_TURN_COUNT"
        },
        {
          "name": "AverageTurnCount",
          "description": "Average turn count in a session.",
          "value": "AVERAGE_TURN_COUNT"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultMetricResponse": {
      "description": "Metric and corresponding confidence intervals.",
      "properties": {
        "confidenceInterval": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultConfidenceIntervalResponse",
          "description": "The probability that the treatment is better than all other treatments in the experiment"
        },
        "count": {
          "type": "number",
          "description": "Count value of a metric."
        },
        "countType": {
          "type": "string",
          "description": "Count-based metric type. Only one of type or count_type is specified in each Metric."
        },
        "ratio": {
          "type": "number",
          "description": "Ratio value of a metric."
        },
        "type": {
          "type": "string",
          "description": "Ratio-based metric type. Only one of type or count_type is specified in each Metric."
        }
      },
      "type": "object",
      "required": [
        "confidenceInterval",
        "count",
        "countType",
        "ratio",
        "type"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultMetricType": {
      "description": "Ratio-based metric type. Only one of type or count_type is specified in each Metric.",
      "type": "string",
      "enum": [
        {
          "name": "MetricUnspecified",
          "description": "Metric unspecified.",
          "value": "METRIC_UNSPECIFIED"
        },
        {
          "name": "ContainedSessionNoCallbackRate",
          "description": "Percentage of contained sessions without user calling back in 24 hours.",
          "value": "CONTAINED_SESSION_NO_CALLBACK_RATE"
        },
        {
          "name": "LiveAgentHandoffRate",
          "description": "Percentage of sessions that were handed to a human agent.",
          "value": "LIVE_AGENT_HANDOFF_RATE"
        },
        {
          "name": "CallbackSessionRate",
          "description": "Percentage of sessions with the same user calling back.",
          "value": "CALLBACK_SESSION_RATE"
        },
        {
          "name": "AbandonedSessionRate",
          "description": "Percentage of sessions where user hung up.",
          "value": "ABANDONED_SESSION_RATE"
        },
        {
          "name": "SessionEndRate",
          "description": "Percentage of sessions reached Dialogflow 'END_PAGE' or 'END_SESSION'.",
          "value": "SESSION_END_RATE"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultResponse": {
      "description": "The inference result which includes an objective metric to optimize and the confidence interval.",
      "properties": {
        "lastUpdateTime": {
          "type": "string",
          "description": "The last time the experiment's stats data was updated. Will have default value if stats have never been computed for this experiment."
        },
        "versionMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultVersionMetricsResponse"
          },
          "description": "Version variants and metrics."
        }
      },
      "type": "object",
      "required": [
        "lastUpdateTime",
        "versionMetrics"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultVersionMetrics": {
      "description": "Version variant and associated metrics.",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultMetric"
          },
          "description": "The metrics and corresponding confidence intervals in the inference result."
        },
        "sessionCount": {
          "type": "integer",
          "description": "Number of sessions that were allocated to this version."
        },
        "version": {
          "type": "string",
          "description": "The name of the flow Version. Format: `projects//locations//agents//flows//versions/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ExperimentResultVersionMetricsResponse": {
      "description": "Version variant and associated metrics.",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultMetricResponse"
          },
          "description": "The metrics and corresponding confidence intervals in the inference result."
        },
        "sessionCount": {
          "type": "integer",
          "description": "Number of sessions that were allocated to this version."
        },
        "version": {
          "type": "string",
          "description": "The name of the flow Version. Format: `projects//locations//agents//flows//versions/`."
        }
      },
      "type": "object",
      "required": [
        "metrics",
        "sessionCount",
        "version"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3Form": {
      "description": "A form is a data model that groups related parameters that can be collected from the user. The process in which the agent prompts the user and collects parameter values from the user is called form filling. A form can be added to a page. When form filling is done, the filled parameters will be written to the session.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FormParameter"
          },
          "description": "Parameters to collect from the user."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FormParameter": {
      "description": "Represents a form parameter.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettings",
          "description": "Hierarchical advanced settings for this parameter. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "defaultValue": {
          "$ref": "pulumi.json#/Any",
          "description": "The default value of an optional parameter. If the parameter is required, the default value will be ignored."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the parameter, unique within the form."
        },
        "entityType": {
          "type": "string",
          "description": "The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types."
        },
        "fillBehavior": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FormParameterFillBehavior",
          "description": "Defines fill behavior for the parameter."
        },
        "isList": {
          "type": "boolean",
          "description": "Indicates whether the parameter represents a list of values."
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled."
        },
        "required": {
          "type": "boolean",
          "description": "Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "entityType",
        "fillBehavior"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FormParameterFillBehavior": {
      "description": "Configuration for how the filling of a parameter should be handled.",
      "properties": {
        "initialPromptFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Fulfillment",
          "description": "The fulfillment to provide the initial prompt that the agent can present to the user in order to fill the parameter."
        },
        "repromptEventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandler"
          },
          "description": "The handlers for parameter-level events, used to provide reprompt for the parameter or transition to a different page/flow. The supported events are: * `sys.no-match-`, where N can be from 1 to 6 * `sys.no-match-default` * `sys.no-input-`, where N can be from 1 to 6 * `sys.no-input-default` * `sys.invalid-parameter` `initial_prompt_fulfillment` provides the first prompt for the parameter. If the user's response does not fill the parameter, a no-match/no-input event will be triggered, and the fulfillment associated with the `sys.no-match-1`/`sys.no-input-1` handler (if defined) will be called to provide a prompt. The `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to the next no-match/no-input event, and so on. A `sys.no-match-default` or `sys.no-input-default` handler will be used to handle all following no-match/no-input events after all numbered no-match/no-input handlers for the parameter are consumed. A `sys.invalid-parameter` handler can be defined to handle the case where the parameter values have been `invalidated` by webhook. For example, if the user's response fill the parameter, however the parameter was invalidated by webhook, the fulfillment associated with the `sys.invalid-parameter` handler (if defined) will be called to provide a prompt. If the event handler for the corresponding event can't be found on the parameter, `initial_prompt_fulfillment` will be re-prompted."
        }
      },
      "type": "object",
      "required": [
        "initialPromptFulfillment"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FormParameterFillBehaviorResponse": {
      "description": "Configuration for how the filling of a parameter should be handled.",
      "properties": {
        "initialPromptFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentResponse",
          "description": "The fulfillment to provide the initial prompt that the agent can present to the user in order to fill the parameter."
        },
        "repromptEventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandlerResponse"
          },
          "description": "The handlers for parameter-level events, used to provide reprompt for the parameter or transition to a different page/flow. The supported events are: * `sys.no-match-`, where N can be from 1 to 6 * `sys.no-match-default` * `sys.no-input-`, where N can be from 1 to 6 * `sys.no-input-default` * `sys.invalid-parameter` `initial_prompt_fulfillment` provides the first prompt for the parameter. If the user's response does not fill the parameter, a no-match/no-input event will be triggered, and the fulfillment associated with the `sys.no-match-1`/`sys.no-input-1` handler (if defined) will be called to provide a prompt. The `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to the next no-match/no-input event, and so on. A `sys.no-match-default` or `sys.no-input-default` handler will be used to handle all following no-match/no-input events after all numbered no-match/no-input handlers for the parameter are consumed. A `sys.invalid-parameter` handler can be defined to handle the case where the parameter values have been `invalidated` by webhook. For example, if the user's response fill the parameter, however the parameter was invalidated by webhook, the fulfillment associated with the `sys.invalid-parameter` handler (if defined) will be called to provide a prompt. If the event handler for the corresponding event can't be found on the parameter, `initial_prompt_fulfillment` will be re-prompted."
        }
      },
      "type": "object",
      "required": [
        "initialPromptFulfillment",
        "repromptEventHandlers"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FormParameterResponse": {
      "description": "Represents a form parameter.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this parameter. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "defaultValue": {
          "$ref": "pulumi.json#/Any",
          "description": "The default value of an optional parameter. If the parameter is required, the default value will be ignored."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the parameter, unique within the form."
        },
        "entityType": {
          "type": "string",
          "description": "The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types."
        },
        "fillBehavior": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FormParameterFillBehaviorResponse",
          "description": "Defines fill behavior for the parameter."
        },
        "isList": {
          "type": "boolean",
          "description": "Indicates whether the parameter represents a list of values."
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled."
        },
        "required": {
          "type": "boolean",
          "description": "Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "defaultValue",
        "displayName",
        "entityType",
        "fillBehavior",
        "isList",
        "redact",
        "required"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FormResponse": {
      "description": "A form is a data model that groups related parameters that can be collected from the user. The process in which the agent prompts the user and collects parameter values from the user is called form filling. A form can be added to a page. When form filling is done, the filled parameters will be written to the session.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FormParameterResponse"
          },
          "description": "Parameters to collect from the user."
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3Fulfillment": {
      "description": "A fulfillment can do one or more of the following actions at the same time: * Generate rich message responses. * Set parameter values. * Call the webhook. Fulfillments can be called at various stages in the Page or Form lifecycle. For example, when a DetectIntentRequest drives a session to enter a new page, the page's entry fulfillment can add a static response to the QueryResult in the returning DetectIntentResponse, call the webhook (for example, to load user data from a database), or both.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettings",
          "description": "Hierarchical advanced settings for this fulfillment. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "conditionalCases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentConditionalCases"
          },
          "description": "Conditional cases for this fulfillment."
        },
        "enableGenerativeFallback": {
          "type": "boolean",
          "description": "If the flag is true, the agent will utilize LLM to generate a text response. If LLM generation fails, the defined responses in the fulfillment will be respected. This flag is only useful for fulfillments associated with no-match event handlers."
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessage"
          },
          "description": "The list of rich message responses to present to the user."
        },
        "returnPartialResponses": {
          "type": "boolean",
          "description": "Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks."
        },
        "setParameterActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentSetParameterAction"
          },
          "description": "Set parameter values before executing the webhook."
        },
        "tag": {
          "type": "string",
          "description": "The value of this field will be populated in the WebhookRequest `fulfillmentInfo.tag` field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes. This field is required if `webhook` is specified."
        },
        "webhook": {
          "type": "string",
          "description": "The webhook to call. Format: `projects//locations//agents//webhooks/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentConditionalCases": {
      "description": "A list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.",
      "properties": {
        "cases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCase"
          },
          "description": "A list of cascading if-else conditions."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCase": {
      "description": "Each case has a Boolean condition. When it is evaluated to be True, the corresponding messages will be selected and evaluated recursively.",
      "properties": {
        "caseContent": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContent"
          },
          "description": "A list of case content."
        },
        "condition": {
          "type": "string",
          "description": "The condition to activate and select this case. Empty means the condition is always true. The condition is evaluated against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContent": {
      "description": "The list of messages or conditional cases to activate for this case.",
      "properties": {
        "additionalCases": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentConditionalCases",
          "description": "Additional cases to be evaluated."
        },
        "message": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessage",
          "description": "Returned message."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContentResponse": {
      "description": "The list of messages or conditional cases to activate for this case.",
      "properties": {
        "additionalCases": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesResponse",
          "description": "Additional cases to be evaluated."
        },
        "message": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageResponse",
          "description": "Returned message."
        }
      },
      "type": "object",
      "required": [
        "additionalCases",
        "message"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseResponse": {
      "description": "Each case has a Boolean condition. When it is evaluated to be True, the corresponding messages will be selected and evaluated recursively.",
      "properties": {
        "caseContent": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContentResponse"
          },
          "description": "A list of case content."
        },
        "condition": {
          "type": "string",
          "description": "The condition to activate and select this case. Empty means the condition is always true. The condition is evaluated against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        }
      },
      "type": "object",
      "required": [
        "caseContent",
        "condition"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesResponse": {
      "description": "A list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.",
      "properties": {
        "cases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseResponse"
          },
          "description": "A list of cascading if-else conditions."
        }
      },
      "type": "object",
      "required": [
        "cases"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentResponse": {
      "description": "A fulfillment can do one or more of the following actions at the same time: * Generate rich message responses. * Set parameter values. * Call the webhook. Fulfillments can be called at various stages in the Page or Form lifecycle. For example, when a DetectIntentRequest drives a session to enter a new page, the page's entry fulfillment can add a static response to the QueryResult in the returning DetectIntentResponse, call the webhook (for example, to load user data from a database), or both.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this fulfillment. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "conditionalCases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentConditionalCasesResponse"
          },
          "description": "Conditional cases for this fulfillment."
        },
        "enableGenerativeFallback": {
          "type": "boolean",
          "description": "If the flag is true, the agent will utilize LLM to generate a text response. If LLM generation fails, the defined responses in the fulfillment will be respected. This flag is only useful for fulfillments associated with no-match event handlers."
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageResponse"
          },
          "description": "The list of rich message responses to present to the user."
        },
        "returnPartialResponses": {
          "type": "boolean",
          "description": "Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks."
        },
        "setParameterActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentSetParameterActionResponse"
          },
          "description": "Set parameter values before executing the webhook."
        },
        "tag": {
          "type": "string",
          "description": "The value of this field will be populated in the WebhookRequest `fulfillmentInfo.tag` field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes. This field is required if `webhook` is specified."
        },
        "webhook": {
          "type": "string",
          "description": "The webhook to call. Format: `projects//locations//agents//webhooks/`."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "conditionalCases",
        "enableGenerativeFallback",
        "messages",
        "returnPartialResponses",
        "setParameterActions",
        "tag",
        "webhook"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentSetParameterAction": {
      "description": "Setting a parameter value.",
      "properties": {
        "parameter": {
          "type": "string",
          "description": "Display name of the parameter."
        },
        "value": {
          "$ref": "pulumi.json#/Any",
          "description": "The new value of the parameter. A null value clears the parameter."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3FulfillmentSetParameterActionResponse": {
      "description": "Setting a parameter value.",
      "properties": {
        "parameter": {
          "type": "string",
          "description": "Display name of the parameter."
        },
        "value": {
          "$ref": "pulumi.json#/Any",
          "description": "The new value of the parameter. A null value clears the parameter."
        }
      },
      "type": "object",
      "required": [
        "parameter",
        "value"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3GcsDestination": {
      "description": "Google Cloud Storage location for a Dialogflow operation that writes or exports objects (e.g. exported agent or transcripts) outside of Dialogflow.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The Google Cloud Storage URI for the exported objects. A URI is of the form: `gs://bucket/object-name-or-prefix` Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3GcsDestinationResponse": {
      "description": "Google Cloud Storage location for a Dialogflow operation that writes or exports objects (e.g. exported agent or transcripts) outside of Dialogflow.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The Google Cloud Storage URI for the exported objects. A URI is of the form: `gs://bucket/object-name-or-prefix` Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3InputAudioConfig": {
      "description": "Instructs the speech recognizer on how to process the audio content.",
      "properties": {
        "audioEncoding": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3InputAudioConfigAudioEncoding",
          "description": "Audio encoding of the audio content to process."
        },
        "bargeInConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3BargeInConfig",
          "description": "Configuration of barge-in behavior during the streaming of input audio."
        },
        "enableWordInfo": {
          "type": "boolean",
          "description": "Optional. If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult with information about the recognized speech words, e.g. start and end time offsets. If false or unspecified, Speech doesn't return any word-level information."
        },
        "model": {
          "type": "string",
          "description": "Optional. Which Speech model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the InputAudioConfig. If enhanced speech model is enabled for the agent and an enhanced version of the specified model for the language does not exist, then the speech is recognized using the standard version of the specified model. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details. If you specify a model, the following models typically have the best performance: - phone_call (best for Agent Assist and telephony) - latest_short (best for Dialogflow non-telephony) - command_and_search (best for very short utterances and commands)"
        },
        "modelVariant": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3InputAudioConfigModelVariant",
          "description": "Optional. Which variant of the Speech model to use."
        },
        "phraseHints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of strings containing words and phrases that the speech recognizer should recognize with higher likelihood. See [the Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more details."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics) for more details."
        },
        "singleUtterance": {
          "type": "boolean",
          "description": "Optional. If `false` (default), recognition does not cease until the client closes the stream. If `true`, the recognizer will detect a single spoken utterance in input audio. Recognition ceases when it detects the audio's voice has stopped or paused. In this case, once a detected intent is received, the client should close the stream and start a new request with a new stream as needed. Note: This setting is relevant only for streaming methods."
        }
      },
      "type": "object",
      "required": [
        "audioEncoding"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3InputAudioConfigAudioEncoding": {
      "description": "Required. Audio encoding of the audio content to process.",
      "type": "string",
      "enum": [
        {
          "name": "AudioEncodingUnspecified",
          "description": "Not specified.",
          "value": "AUDIO_ENCODING_UNSPECIFIED"
        },
        {
          "name": "AudioEncodingLinear16",
          "description": "Uncompressed 16-bit signed little-endian samples (Linear PCM).",
          "value": "AUDIO_ENCODING_LINEAR_16"
        },
        {
          "name": "AudioEncodingFlac",
          "description": "[`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio Codec) is the recommended encoding because it is lossless (therefore recognition is not compromised) and requires only about half the bandwidth of `LINEAR16`. `FLAC` stream encoding supports 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are supported.",
          "value": "AUDIO_ENCODING_FLAC"
        },
        {
          "name": "AudioEncodingMulaw",
          "description": "8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
          "value": "AUDIO_ENCODING_MULAW"
        },
        {
          "name": "AudioEncodingAmr",
          "description": "Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000.",
          "value": "AUDIO_ENCODING_AMR"
        },
        {
          "name": "AudioEncodingAmrWb",
          "description": "Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.",
          "value": "AUDIO_ENCODING_AMR_WB"
        },
        {
          "name": "AudioEncodingOggOpus",
          "description": "Opus encoded audio frames in Ogg container ([OggOpus](https://wiki.xiph.org/OggOpus)). `sample_rate_hertz` must be 16000.",
          "value": "AUDIO_ENCODING_OGG_OPUS"
        },
        {
          "name": "AudioEncodingSpeexWithHeaderByte",
          "description": "Although the use of lossy encodings is not recommended, if a very low bitrate encoding is required, `OGG_OPUS` is highly preferred over Speex encoding. The [Speex](https://speex.org/) encoding supported by Dialogflow API has a header byte in each block, as in MIME type `audio/x-speex-with-header-byte`. It is a variant of the RTP Speex encoding defined in [RFC 5574](https://tools.ietf.org/html/rfc5574). The stream is a sequence of blocks, one block per RTP packet. Each block starts with a byte containing the length of the block, in bytes, followed by one or more frames of Speex data, padded to an integral number of bytes (octets) as specified in RFC 5574. In other words, each RTP header is replaced with a single byte containing the block length. Only Speex wideband is supported. `sample_rate_hertz` must be 16000.",
          "value": "AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3InputAudioConfigModelVariant": {
      "description": "Optional. Which variant of the Speech model to use.",
      "type": "string",
      "enum": [
        {
          "name": "SpeechModelVariantUnspecified",
          "description": "No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.",
          "value": "SPEECH_MODEL_VARIANT_UNSPECIFIED"
        },
        {
          "name": "UseBestAvailable",
          "description": "Use the best available variant of the Speech model that the caller is eligible for. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible for enhanced models.",
          "value": "USE_BEST_AVAILABLE"
        },
        {
          "name": "UseStandard",
          "description": "Use standard model variant even if an enhanced model is available. See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) for details about enhanced models.",
          "value": "USE_STANDARD"
        },
        {
          "name": "UseEnhanced",
          "description": "Use an enhanced model variant: * If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant. The [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) describes which models have enhanced variants. * If the API caller isn't eligible for enhanced models, Dialogflow returns an error. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible.",
          "value": "USE_ENHANCED"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3InputAudioConfigResponse": {
      "description": "Instructs the speech recognizer on how to process the audio content.",
      "properties": {
        "audioEncoding": {
          "type": "string",
          "description": "Audio encoding of the audio content to process."
        },
        "bargeInConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3BargeInConfigResponse",
          "description": "Configuration of barge-in behavior during the streaming of input audio."
        },
        "enableWordInfo": {
          "type": "boolean",
          "description": "Optional. If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult with information about the recognized speech words, e.g. start and end time offsets. If false or unspecified, Speech doesn't return any word-level information."
        },
        "model": {
          "type": "string",
          "description": "Optional. Which Speech model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the InputAudioConfig. If enhanced speech model is enabled for the agent and an enhanced version of the specified model for the language does not exist, then the speech is recognized using the standard version of the specified model. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details. If you specify a model, the following models typically have the best performance: - phone_call (best for Agent Assist and telephony) - latest_short (best for Dialogflow non-telephony) - command_and_search (best for very short utterances and commands)"
        },
        "modelVariant": {
          "type": "string",
          "description": "Optional. Which variant of the Speech model to use."
        },
        "phraseHints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of strings containing words and phrases that the speech recognizer should recognize with higher likelihood. See [the Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more details."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics) for more details."
        },
        "singleUtterance": {
          "type": "boolean",
          "description": "Optional. If `false` (default), recognition does not cease until the client closes the stream. If `true`, the recognizer will detect a single spoken utterance in input audio. Recognition ceases when it detects the audio's voice has stopped or paused. In this case, once a detected intent is received, the client should close the stream and start a new request with a new stream as needed. Note: This setting is relevant only for streaming methods."
        }
      },
      "type": "object",
      "required": [
        "audioEncoding",
        "bargeInConfig",
        "enableWordInfo",
        "model",
        "modelVariant",
        "phraseHints",
        "sampleRateHertz",
        "singleUtterance"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3Intent": {
      "description": "An intent represents a user's intent to interact with a conversational agent. You can provide information for the Dialogflow API to use to match user input to an intent by adding training phrases (i.e., examples of user input) to your intent.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the intent, unique within the agent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys.contextual\" means the intent is a contextual intent."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentParameter"
          },
          "description": "The collection of parameters associated with the intent."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentTrainingPhrase"
          },
          "description": "The collection of training phrases the agent is trained on to identify the intent."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentInput": {
      "description": "Represents the intent to trigger programmatically rather than as a result of natural language processing.",
      "properties": {
        "intent": {
          "type": "string",
          "description": "The unique identifier of the intent. Format: `projects//locations//agents//intents/`."
        }
      },
      "type": "object",
      "required": [
        "intent"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentInputResponse": {
      "description": "Represents the intent to trigger programmatically rather than as a result of natural language processing.",
      "properties": {
        "intent": {
          "type": "string",
          "description": "The unique identifier of the intent. Format: `projects//locations//agents//intents/`."
        }
      },
      "type": "object",
      "required": [
        "intent"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentParameter": {
      "description": "Represents an intent parameter.",
      "properties": {
        "entityType": {
          "type": "string",
          "description": "The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the parameter. This field is used by training phrases to annotate their parts."
        },
        "isList": {
          "type": "boolean",
          "description": "Indicates whether the parameter represents a list of values."
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled."
        }
      },
      "type": "object",
      "required": [
        "entityType",
        "id"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentParameterResponse": {
      "description": "Represents an intent parameter.",
      "properties": {
        "entityType": {
          "type": "string",
          "description": "The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types."
        },
        "isList": {
          "type": "boolean",
          "description": "Indicates whether the parameter represents a list of values."
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled."
        }
      },
      "type": "object",
      "required": [
        "entityType",
        "isList",
        "redact"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentResponse": {
      "description": "An intent represents a user's intent to interact with a conversational agent. You can provide information for the Dialogflow API to use to match user input to an intent by adding training phrases (i.e., examples of user input) to your intent.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the intent, unique within the agent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys.contextual\" means the intent is a contextual intent."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentParameterResponse"
          },
          "description": "The collection of parameters associated with the intent."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentTrainingPhraseResponse"
          },
          "description": "The collection of training phrases the agent is trained on to identify the intent."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "isFallback",
        "labels",
        "name",
        "parameters",
        "priority",
        "trainingPhrases"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentTrainingPhrase": {
      "description": "Represents an example that the agent is trained on to identify the intent.",
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentTrainingPhrasePart"
          },
          "description": "The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `parameter_id` field is set."
        },
        "repeatCount": {
          "type": "integer",
          "description": "Indicates how many times this example was added to the intent."
        }
      },
      "type": "object",
      "required": [
        "parts"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentTrainingPhrasePart": {
      "description": "Represents a part of a training phrase.",
      "properties": {
        "parameterId": {
          "type": "string",
          "description": "The parameter used to annotate this part of the training phrase. This field is required for annotated parts of the training phrase."
        },
        "text": {
          "type": "string",
          "description": "The text for this part."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentTrainingPhrasePartResponse": {
      "description": "Represents a part of a training phrase.",
      "properties": {
        "parameterId": {
          "type": "string",
          "description": "The parameter used to annotate this part of the training phrase. This field is required for annotated parts of the training phrase."
        },
        "text": {
          "type": "string",
          "description": "The text for this part."
        }
      },
      "type": "object",
      "required": [
        "parameterId",
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3IntentTrainingPhraseResponse": {
      "description": "Represents an example that the agent is trained on to identify the intent.",
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentTrainingPhrasePartResponse"
          },
          "description": "The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `parameter_id` field is set."
        },
        "repeatCount": {
          "type": "integer",
          "description": "Indicates how many times this example was added to the intent."
        }
      },
      "type": "object",
      "required": [
        "parts",
        "repeatCount"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettings": {
      "description": "The Knowledge Connector settings for this page or flow. This includes information such as the attached Knowledge Bases, and the way to execute fulfillment.",
      "properties": {
        "dataStoreConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3DataStoreConnection"
          },
          "description": "Optional. List of related data store connections."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Knowledge Connector is enabled or not."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Fulfillment",
          "description": "The fulfillment to be triggered. When the answers from the Knowledge Connector are selected by Dialogflow, you can utitlize the request scoped parameter `$request.knowledge.answers` (contains up to the 5 highest confidence answers) and `$request.knowledge.questions` (contains the corresponding questions) to construct the fulfillment."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettingsResponse": {
      "description": "The Knowledge Connector settings for this page or flow. This includes information such as the attached Knowledge Bases, and the way to execute fulfillment.",
      "properties": {
        "dataStoreConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3DataStoreConnectionResponse"
          },
          "description": "Optional. List of related data store connections."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Knowledge Connector is enabled or not."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentResponse",
          "description": "The fulfillment to be triggered. When the answers from the Knowledge Connector are selected by Dialogflow, you can utitlize the request scoped parameter `$request.knowledge.answers` (contains up to the 5 highest confidence answers) and `$request.knowledge.questions` (contains the corresponding questions) to construct the fulfillment."
        }
      },
      "type": "object",
      "required": [
        "dataStoreConnections",
        "enabled",
        "targetFlow",
        "targetPage",
        "triggerFulfillment"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3NluSettings": {
      "description": "Settings related to NLU.",
      "properties": {
        "classificationThreshold": {
          "type": "number",
          "description": "To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used."
        },
        "modelTrainingMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3NluSettingsModelTrainingMode",
          "description": "Indicates NLU model training mode."
        },
        "modelType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3NluSettingsModelType",
          "description": "Indicates the type of NLU model."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3NluSettingsModelTrainingMode": {
      "description": "Indicates NLU model training mode.",
      "type": "string",
      "enum": [
        {
          "name": "ModelTrainingModeUnspecified",
          "description": "Not specified. `MODEL_TRAINING_MODE_AUTOMATIC` will be used.",
          "value": "MODEL_TRAINING_MODE_UNSPECIFIED"
        },
        {
          "name": "ModelTrainingModeAutomatic",
          "description": "NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.",
          "value": "MODEL_TRAINING_MODE_AUTOMATIC"
        },
        {
          "name": "ModelTrainingModeManual",
          "description": "User needs to manually trigger NLU model training. Best for large flows whose models take long time to train.",
          "value": "MODEL_TRAINING_MODE_MANUAL"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3NluSettingsModelType": {
      "description": "Indicates the type of NLU model.",
      "type": "string",
      "enum": [
        {
          "name": "ModelTypeUnspecified",
          "description": "Not specified. `MODEL_TYPE_STANDARD` will be used.",
          "value": "MODEL_TYPE_UNSPECIFIED"
        },
        {
          "name": "ModelTypeStandard",
          "description": "Use standard NLU model.",
          "value": "MODEL_TYPE_STANDARD"
        },
        {
          "name": "ModelTypeAdvanced",
          "description": "Use advanced NLU model.",
          "value": "MODEL_TYPE_ADVANCED"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3NluSettingsResponse": {
      "description": "Settings related to NLU.",
      "properties": {
        "classificationThreshold": {
          "type": "number",
          "description": "To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used."
        },
        "modelTrainingMode": {
          "type": "string",
          "description": "Indicates NLU model training mode."
        },
        "modelType": {
          "type": "string",
          "description": "Indicates the type of NLU model."
        }
      },
      "type": "object",
      "required": [
        "classificationThreshold",
        "modelTrainingMode",
        "modelType"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3Page": {
      "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages. For each flow, you define many pages, where your combined pages can handle a complete conversation on the topics the flow is designed for. At any given moment, exactly one page is the current page, the current page is considered active, and the flow associated with that page is considered active. Every flow has a special start page. When a flow initially becomes active, the start page page becomes the current page. For each conversational turn, the current page will either stay the same or transition to another page. You configure each page to collect information from the end-user that is relevant for the conversational state represented by the page. For more information, see the [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettings",
          "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the page, unique within the flow."
        },
        "entryFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Fulfillment",
          "description": "The fulfillment to call when the session is entering the page."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandler"
          },
          "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input."
        },
        "form": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Form",
          "description": "The form associated with the page, used for collecting parameters relevant to the page."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettings",
          "description": "Optional. Knowledge connector configuration."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`."
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRoute"
          },
          "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3PageResponse": {
      "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages. For each flow, you define many pages, where your combined pages can handle a complete conversation on the topics the flow is designed for. At any given moment, exactly one page is the current page, the current page is considered active, and the flow associated with that page is considered active. Every flow has a special start page. When a flow initially becomes active, the start page page becomes the current page. For each conversational turn, the current page will either stay the same or transition to another page. You configure each page to collect information from the end-user that is relevant for the conversational state represented by the page. For more information, see the [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the page, unique within the flow."
        },
        "entryFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentResponse",
          "description": "The fulfillment to call when the session is entering the page."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandlerResponse"
          },
          "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input."
        },
        "form": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FormResponse",
          "description": "The form associated with the page, used for collecting parameters relevant to the page."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettingsResponse",
          "description": "Optional. Knowledge connector configuration."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`."
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRouteResponse"
          },
          "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "displayName",
        "entryFulfillment",
        "eventHandlers",
        "form",
        "knowledgeConnectorSettings",
        "name",
        "transitionRouteGroups",
        "transitionRoutes"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3QueryInput": {
      "description": "Represents the query input. It can contain one of: 1. A conversational query in the form of text. 2. An intent query that specifies which intent to trigger. 3. Natural language speech audio to be processed. 4. An event to be triggered. 5. DTMF digits to invoke an intent and fill in parameter value.",
      "properties": {
        "audio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AudioInput",
          "description": "The natural language speech audio to be processed."
        },
        "dtmf": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3DtmfInput",
          "description": "The DTMF event to be handled."
        },
        "event": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventInput",
          "description": "The event to be triggered."
        },
        "intent": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentInput",
          "description": "The intent to be triggered."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the input. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TextInput",
          "description": "The natural language text to be processed."
        }
      },
      "type": "object",
      "required": [
        "languageCode"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3QueryInputResponse": {
      "description": "Represents the query input. It can contain one of: 1. A conversational query in the form of text. 2. An intent query that specifies which intent to trigger. 3. Natural language speech audio to be processed. 4. An event to be triggered. 5. DTMF digits to invoke an intent and fill in parameter value.",
      "properties": {
        "audio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AudioInputResponse",
          "description": "The natural language speech audio to be processed."
        },
        "dtmf": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3DtmfInputResponse",
          "description": "The DTMF event to be handled."
        },
        "event": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventInputResponse",
          "description": "The event to be triggered."
        },
        "intent": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentInputResponse",
          "description": "The intent to be triggered."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the input. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TextInputResponse",
          "description": "The natural language text to be processed."
        }
      },
      "type": "object",
      "required": [
        "audio",
        "dtmf",
        "event",
        "intent",
        "languageCode",
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessage": {
      "description": "Represents a response message that can be returned by a conversational agent. Response messages are also used for output audio synthesis. The approach is as follows: * If at least one OutputAudioText response is present, then all OutputAudioText responses are linearly concatenated, and the result is used for output audio synthesis. * If the OutputAudioText responses are a mixture of text and SSML, then the concatenated result is treated as SSML; otherwise, the result is treated as either text or SSML as appropriate. The agent designer should ideally use either text or SSML consistently throughout the bot design. * Otherwise, all Text responses are linearly concatenated, and the result is used for output audio synthesis. This approach allows for more sophisticated user experience scenarios, where the text displayed to the user may differ from what is heard.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned."
        },
        "conversationSuccess": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageConversationSuccess",
          "description": "Indicates that the conversation succeeded."
        },
        "knowledgeInfoCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCard",
          "description": "Represents info card for knowledge answers, to be better rendered in Dialogflow Messenger."
        },
        "liveAgentHandoff": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoff",
          "description": "Hands off conversation to a human agent."
        },
        "outputAudioText": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageOutputAudioText",
          "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Returns a response containing a custom, platform-specific payload."
        },
        "playAudio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessagePlayAudio",
          "description": "Signal that the client should play an audio clip hosted at a client-specific URI. Dialogflow uses this to construct mixed_audio. However, Dialogflow itself does not try to read or process the URI in any way."
        },
        "responseType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageResponseType",
          "description": "Response type."
        },
        "telephonyTransferCall": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCall",
          "description": "A signal that the client should transfer the phone call connected to this agent to a third-party endpoint."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageText",
          "description": "Returns a text response."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageConversationSuccess": {
      "description": "Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates that the conversation succeeded. * In a webhook response when you determine that you handled the customer issue.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata. Dialogflow doesn't impose any structure on this."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageConversationSuccessResponse": {
      "description": "Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates that the conversation succeeded. * In a webhook response when you determine that you handled the customer issue.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata. Dialogflow doesn't impose any structure on this."
        }
      },
      "type": "object",
      "required": [
        "metadata"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageEndInteractionResponse": {
      "description": "Indicates that interaction with the Dialogflow agent has ended. This message is generated by Dialogflow only and not supposed to be defined by the user.",
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCard": {
      "description": "Represents info card response. If the response contains generative knowledge prediction, Dialogflow will return a payload with Infobot Messenger compatible info card. Otherwise, the info card response is skipped.",
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCardResponse": {
      "description": "Represents info card response. If the response contains generative knowledge prediction, Dialogflow will return a payload with Infobot Messenger compatible info card. Otherwise, the info card response is skipped.",
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoff": {
      "description": "Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates something went extremely wrong in the conversation. * In a webhook response when you determine that the customer issue can only be handled by a human.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata for your handoff procedure. Dialogflow doesn't impose any structure on this."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoffResponse": {
      "description": "Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates something went extremely wrong in the conversation. * In a webhook response when you determine that the customer issue can only be handled by a human.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata for your handoff procedure. Dialogflow doesn't impose any structure on this."
        }
      },
      "type": "object",
      "required": [
        "metadata"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageMixedAudioResponse": {
      "description": "Represents an audio message that is composed of both segments synthesized from the Dialogflow agent prompts and ones hosted externally at the specified URIs. The external URIs are specified via play_audio. This message is generated by Dialogflow only and not supposed to be defined by the user.",
      "properties": {
        "segments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageMixedAudioSegmentResponse"
          },
          "description": "Segments this audio response is composed of."
        }
      },
      "type": "object",
      "required": [
        "segments"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageMixedAudioSegmentResponse": {
      "description": "Represents one segment of audio.",
      "properties": {
        "allowPlaybackInterruption": {
          "type": "boolean",
          "description": "Whether the playback of this segment can be interrupted by the end user's speech and the client should then start the next Dialogflow request."
        },
        "audio": {
          "type": "string",
          "description": "Raw audio synthesized from the Dialogflow agent's response using the output config specified in the request."
        },
        "uri": {
          "type": "string",
          "description": "Client-specific URI that points to an audio clip accessible to the client. Dialogflow does not impose any validation on it."
        }
      },
      "type": "object",
      "required": [
        "allowPlaybackInterruption",
        "audio",
        "uri"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageOutputAudioText": {
      "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message.",
      "properties": {
        "ssml": {
          "type": "string",
          "description": "The SSML text to be synthesized. For more information, see [SSML](/speech/text-to-speech/docs/ssml)."
        },
        "text": {
          "type": "string",
          "description": "The raw text to be synthesized."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageOutputAudioTextResponse": {
      "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message.",
      "properties": {
        "allowPlaybackInterruption": {
          "type": "boolean",
          "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request."
        },
        "ssml": {
          "type": "string",
          "description": "The SSML text to be synthesized. For more information, see [SSML](/speech/text-to-speech/docs/ssml)."
        },
        "text": {
          "type": "string",
          "description": "The raw text to be synthesized."
        }
      },
      "type": "object",
      "required": [
        "allowPlaybackInterruption",
        "ssml",
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessagePlayAudio": {
      "description": "Specifies an audio clip to be played by the client as part of the response.",
      "properties": {
        "audioUri": {
          "type": "string",
          "description": "URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it."
        }
      },
      "type": "object",
      "required": [
        "audioUri"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessagePlayAudioResponse": {
      "description": "Specifies an audio clip to be played by the client as part of the response.",
      "properties": {
        "allowPlaybackInterruption": {
          "type": "boolean",
          "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request."
        },
        "audioUri": {
          "type": "string",
          "description": "URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it."
        }
      },
      "type": "object",
      "required": [
        "allowPlaybackInterruption",
        "audioUri"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageResponse": {
      "description": "Represents a response message that can be returned by a conversational agent. Response messages are also used for output audio synthesis. The approach is as follows: * If at least one OutputAudioText response is present, then all OutputAudioText responses are linearly concatenated, and the result is used for output audio synthesis. * If the OutputAudioText responses are a mixture of text and SSML, then the concatenated result is treated as SSML; otherwise, the result is treated as either text or SSML as appropriate. The agent designer should ideally use either text or SSML consistently throughout the bot design. * Otherwise, all Text responses are linearly concatenated, and the result is used for output audio synthesis. This approach allows for more sophisticated user experience scenarios, where the text displayed to the user may differ from what is heard.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned."
        },
        "conversationSuccess": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageConversationSuccessResponse",
          "description": "Indicates that the conversation succeeded."
        },
        "endInteraction": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageEndInteractionResponse",
          "description": "A signal that indicates the interaction with the Dialogflow agent has ended. This message is generated by Dialogflow only when the conversation reaches `END_SESSION` page. It is not supposed to be defined by the user. It's guaranteed that there is at most one such message in each response."
        },
        "knowledgeInfoCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCardResponse",
          "description": "Represents info card for knowledge answers, to be better rendered in Dialogflow Messenger."
        },
        "liveAgentHandoff": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoffResponse",
          "description": "Hands off conversation to a human agent."
        },
        "mixedAudio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageMixedAudioResponse",
          "description": "An audio response message composed of both the synthesized Dialogflow agent responses and responses defined via play_audio. This message is generated by Dialogflow only and not supposed to be defined by the user."
        },
        "outputAudioText": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageOutputAudioTextResponse",
          "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Returns a response containing a custom, platform-specific payload."
        },
        "playAudio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessagePlayAudioResponse",
          "description": "Signal that the client should play an audio clip hosted at a client-specific URI. Dialogflow uses this to construct mixed_audio. However, Dialogflow itself does not try to read or process the URI in any way."
        },
        "responseType": {
          "type": "string",
          "description": "Response type."
        },
        "telephonyTransferCall": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCallResponse",
          "description": "A signal that the client should transfer the phone call connected to this agent to a third-party endpoint."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ResponseMessageTextResponse",
          "description": "Returns a text response."
        }
      },
      "type": "object",
      "required": [
        "channel",
        "conversationSuccess",
        "endInteraction",
        "knowledgeInfoCard",
        "liveAgentHandoff",
        "mixedAudio",
        "outputAudioText",
        "payload",
        "playAudio",
        "responseType",
        "telephonyTransferCall",
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageResponseType": {
      "description": "Response type.",
      "type": "string",
      "enum": [
        {
          "name": "ResponseTypeUnspecified",
          "description": "Not specified.",
          "value": "RESPONSE_TYPE_UNSPECIFIED"
        },
        {
          "name": "EntryPrompt",
          "description": "The response is from an entry prompt in the page.",
          "value": "ENTRY_PROMPT"
        },
        {
          "name": "ParameterPrompt",
          "description": "The response is from form-filling prompt in the page.",
          "value": "PARAMETER_PROMPT"
        },
        {
          "name": "HandlerPrompt",
          "description": "The response is from a transition route or an event handler in the page or flow or transition route group.",
          "value": "HANDLER_PROMPT"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCall": {
      "description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164)."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCallResponse": {
      "description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164)."
        }
      },
      "type": "object",
      "required": [
        "phoneNumber"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageText": {
      "description": "The text response message.",
      "properties": {
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of text responses."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3ResponseMessageTextResponse": {
      "description": "The text response message.",
      "properties": {
        "allowPlaybackInterruption": {
          "type": "boolean",
          "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request."
        },
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of text responses."
        }
      },
      "type": "object",
      "required": [
        "allowPlaybackInterruption",
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3RolloutConfig": {
      "description": "The configuration for auto rollout.",
      "properties": {
        "failureCondition": {
          "type": "string",
          "description": "The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. \"containment_rate < 10% OR average_turn_count < 3\". See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "rolloutCondition": {
          "type": "string",
          "description": "The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. \"containment_rate > 60% AND callback_rate < 20%\". See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "rolloutSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3RolloutConfigRolloutStep"
          },
          "description": "Steps to roll out a flow version. Steps should be sorted by percentage in ascending order."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3RolloutConfigResponse": {
      "description": "The configuration for auto rollout.",
      "properties": {
        "failureCondition": {
          "type": "string",
          "description": "The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. \"containment_rate < 10% OR average_turn_count < 3\". See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "rolloutCondition": {
          "type": "string",
          "description": "The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. \"containment_rate > 60% AND callback_rate < 20%\". See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "rolloutSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3RolloutConfigRolloutStepResponse"
          },
          "description": "Steps to roll out a flow version. Steps should be sorted by percentage in ascending order."
        }
      },
      "type": "object",
      "required": [
        "failureCondition",
        "rolloutCondition",
        "rolloutSteps"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3RolloutConfigRolloutStep": {
      "description": "A single rollout step with specified traffic allocation.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name of the rollout step;"
        },
        "minDuration": {
          "type": "string",
          "description": "The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour."
        },
        "trafficPercent": {
          "type": "integer",
          "description": "The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%]."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3RolloutConfigRolloutStepResponse": {
      "description": "A single rollout step with specified traffic allocation.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name of the rollout step;"
        },
        "minDuration": {
          "type": "string",
          "description": "The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour."
        },
        "trafficPercent": {
          "type": "integer",
          "description": "The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%]."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "minDuration",
        "trafficPercent"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3RolloutState": {
      "description": "State of the auto-rollout process.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "Start time of the current step."
        },
        "step": {
          "type": "string",
          "description": "Display name of the current auto rollout step."
        },
        "stepIndex": {
          "type": "integer",
          "description": "Index of the current step in the auto rollout steps list."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3RolloutStateResponse": {
      "description": "State of the auto-rollout process.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "Start time of the current step."
        },
        "step": {
          "type": "string",
          "description": "Display name of the current auto rollout step."
        },
        "stepIndex": {
          "type": "integer",
          "description": "Index of the current step in the auto rollout steps list."
        }
      },
      "type": "object",
      "required": [
        "startTime",
        "step",
        "stepIndex"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3SecuritySettingsAudioExportSettings": {
      "description": "Settings for exporting audio.",
      "properties": {
        "audioExportPattern": {
          "type": "string",
          "description": "Filename pattern for exported audio."
        },
        "audioFormat": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SecuritySettingsAudioExportSettingsAudioFormat",
          "description": "File format for exported audio file. Currently only in telephony recordings."
        },
        "enableAudioRedaction": {
          "type": "boolean",
          "description": "Enable audio redaction if it is true."
        },
        "gcsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket to export audio record to. Setting this field would grant the Storage Object Creator role to the Dialogflow Service Agent. API caller that tries to modify this field should have the permission of storage.buckets.setIamPolicy."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3SecuritySettingsAudioExportSettingsAudioFormat": {
      "description": "File format for exported audio file. Currently only in telephony recordings.",
      "type": "string",
      "enum": [
        {
          "name": "AudioFormatUnspecified",
          "description": "Unspecified. Do not use.",
          "value": "AUDIO_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Mulaw",
          "description": "G.711 mu-law PCM with 8kHz sample rate.",
          "value": "MULAW"
        },
        {
          "name": "Mp3",
          "description": "MP3 file format.",
          "value": "MP3"
        },
        {
          "name": "Ogg",
          "description": "OGG Vorbis.",
          "value": "OGG"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3SecuritySettingsAudioExportSettingsResponse": {
      "description": "Settings for exporting audio.",
      "properties": {
        "audioExportPattern": {
          "type": "string",
          "description": "Filename pattern for exported audio."
        },
        "audioFormat": {
          "type": "string",
          "description": "File format for exported audio file. Currently only in telephony recordings."
        },
        "enableAudioRedaction": {
          "type": "boolean",
          "description": "Enable audio redaction if it is true."
        },
        "gcsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket to export audio record to. Setting this field would grant the Storage Object Creator role to the Dialogflow Service Agent. API caller that tries to modify this field should have the permission of storage.buckets.setIamPolicy."
        }
      },
      "type": "object",
      "required": [
        "audioExportPattern",
        "audioFormat",
        "enableAudioRedaction",
        "gcsBucket"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3SecuritySettingsInsightsExportSettings": {
      "description": "Settings for exporting conversations to [Insights](https://cloud.google.com/contact-center/insights/docs).",
      "properties": {
        "enableInsightsExport": {
          "type": "boolean",
          "description": "If enabled, we will automatically exports conversations to Insights and Insights runs its analyzers."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3SecuritySettingsInsightsExportSettingsResponse": {
      "description": "Settings for exporting conversations to [Insights](https://cloud.google.com/contact-center/insights/docs).",
      "properties": {
        "enableInsightsExport": {
          "type": "boolean",
          "description": "If enabled, we will automatically exports conversations to Insights and Insights runs its analyzers."
        }
      },
      "type": "object",
      "required": [
        "enableInsightsExport"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3SpeechToTextSettings": {
      "description": "Settings related to speech recognition.",
      "properties": {
        "enableSpeechAdaptation": {
          "type": "boolean",
          "description": "Whether to use speech adaptation for speech recognition."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3SpeechToTextSettingsResponse": {
      "description": "Settings related to speech recognition.",
      "properties": {
        "enableSpeechAdaptation": {
          "type": "boolean",
          "description": "Whether to use speech adaptation for speech recognition."
        }
      },
      "type": "object",
      "required": [
        "enableSpeechAdaptation"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TestCaseResult": {
      "description": "Represents a result from running a test case in an agent environment.",
      "properties": {
        "conversationTurns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurn"
          },
          "description": "The conversation turns uttered during the test case replay in chronological order."
        },
        "environment": {
          "type": "string",
          "description": "Environment where the test was run. If not set, it indicates the draft environment."
        },
        "name": {
          "type": "string",
          "description": "The resource name for the test case result. Format: `projects//locations//agents//testCases/ /results/`."
        },
        "testResult": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TestCaseResultTestResult",
          "description": "Whether the test case passed in the agent environment."
        },
        "testTime": {
          "type": "string",
          "description": "The time that the test was run."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TestCaseResultResponse": {
      "description": "Represents a result from running a test case in an agent environment.",
      "properties": {
        "conversationTurns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurnResponse"
          },
          "description": "The conversation turns uttered during the test case replay in chronological order."
        },
        "environment": {
          "type": "string",
          "description": "Environment where the test was run. If not set, it indicates the draft environment."
        },
        "name": {
          "type": "string",
          "description": "The resource name for the test case result. Format: `projects//locations//agents//testCases/ /results/`."
        },
        "testResult": {
          "type": "string",
          "description": "Whether the test case passed in the agent environment."
        },
        "testTime": {
          "type": "string",
          "description": "The time that the test was run."
        }
      },
      "type": "object",
      "required": [
        "conversationTurns",
        "environment",
        "name",
        "testResult",
        "testTime"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TestCaseResultTestResult": {
      "description": "Whether the test case passed in the agent environment.",
      "type": "string",
      "enum": [
        {
          "name": "TestResultUnspecified",
          "description": "Not specified. Should never be used.",
          "value": "TEST_RESULT_UNSPECIFIED"
        },
        {
          "name": "Passed",
          "description": "The test passed.",
          "value": "PASSED"
        },
        {
          "name": "Failed",
          "description": "The test did not pass.",
          "value": "FAILED"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TestConfig": {
      "description": "Represents configurations for a test case.",
      "properties": {
        "flow": {
          "type": "string",
          "description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow."
        },
        "page": {
          "type": "string",
          "description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow."
        },
        "trackingParameters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Session parameters to be compared when calculating differences."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TestConfigResponse": {
      "description": "Represents configurations for a test case.",
      "properties": {
        "flow": {
          "type": "string",
          "description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow."
        },
        "page": {
          "type": "string",
          "description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow."
        },
        "trackingParameters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Session parameters to be compared when calculating differences."
        }
      },
      "type": "object",
      "required": [
        "flow",
        "page",
        "trackingParameters"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TestRunDifferenceResponse": {
      "description": "The description of differences between original and replayed agent output.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human readable description of the diff, showing the actual output vs expected output."
        },
        "type": {
          "type": "string",
          "description": "The type of diff."
        }
      },
      "type": "object",
      "required": [
        "description",
        "type"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TextInput": {
      "description": "Represents the natural language text to be processed.",
      "properties": {
        "text": {
          "type": "string",
          "description": "The UTF-8 encoded natural language text to be processed. Text length must not exceed 256 characters."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TextInputResponse": {
      "description": "Represents the natural language text to be processed.",
      "properties": {
        "text": {
          "type": "string",
          "description": "The UTF-8 encoded natural language text to be processed. Text length must not exceed 256 characters."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TextToSpeechSettings": {
      "description": "Settings related to speech synthesizing.",
      "properties": {
        "synthesizeSpeechConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/cx/docs/reference/language) to SynthesizeSpeechConfig. These settings affect: - The [phone gateway](https://cloud.google.com/dialogflow/cx/docs/concept/integration/phone-gateway) synthesize configuration set via Agent.text_to_speech_settings. - How speech is synthesized when invoking session APIs. Agent.text_to_speech_settings only applies if OutputAudioConfig.synthesize_speech_config is not specified."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TextToSpeechSettingsResponse": {
      "description": "Settings related to speech synthesizing.",
      "properties": {
        "synthesizeSpeechConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/cx/docs/reference/language) to SynthesizeSpeechConfig. These settings affect: - The [phone gateway](https://cloud.google.com/dialogflow/cx/docs/concept/integration/phone-gateway) synthesize configuration set via Agent.text_to_speech_settings. - How speech is synthesized when invoking session APIs. Agent.text_to_speech_settings only applies if OutputAudioConfig.synthesize_speech_config is not specified."
        }
      },
      "type": "object",
      "required": [
        "synthesizeSpeechConfigs"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TransitionRoute": {
      "description": "A transition route specifies a intent that can be matched and/or a data condition that can be evaluated during a session. When a specified transition is matched, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the transition, it will be called. * If there is a `target_page` associated with the transition, the session will transition into the specified page. * If there is a `target_flow` associated with the transition, the session will transition into the specified flow.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "The condition to evaluate against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the transition route. The maximum length is 500 characters."
        },
        "intent": {
          "type": "string",
          "description": "The unique identifier of an Intent. Format: `projects//locations//agents//intents/`. Indicates that the transition can only happen when the given intent is matched. At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Fulfillment",
          "description": "The fulfillment to call when the condition is satisfied. At least one of `trigger_fulfillment` and `target` must be specified. When both are defined, `trigger_fulfillment` is executed first."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3TransitionRouteResponse": {
      "description": "A transition route specifies a intent that can be matched and/or a data condition that can be evaluated during a session. When a specified transition is matched, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the transition, it will be called. * If there is a `target_page` associated with the transition, the session will transition into the specified page. * If there is a `target_flow` associated with the transition, the session will transition into the specified flow.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "The condition to evaluate against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the transition route. The maximum length is 500 characters."
        },
        "intent": {
          "type": "string",
          "description": "The unique identifier of an Intent. Format: `projects//locations//agents//intents/`. Indicates that the transition can only happen when the given intent is matched. At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this transition route."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentResponse",
          "description": "The fulfillment to call when the condition is satisfied. At least one of `trigger_fulfillment` and `target` must be specified. When both are defined, `trigger_fulfillment` is executed first."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "description",
        "intent",
        "name",
        "targetFlow",
        "targetPage",
        "triggerFulfillment"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3VariantsHistory": {
      "description": "The history of variants update.",
      "properties": {
        "updateTime": {
          "type": "string",
          "description": "Update time of the variants."
        },
        "versionVariants": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VersionVariants",
          "description": "The flow versions as the variants."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3VariantsHistoryResponse": {
      "description": "The history of variants update.",
      "properties": {
        "updateTime": {
          "type": "string",
          "description": "Update time of the variants."
        },
        "versionVariants": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VersionVariantsResponse",
          "description": "The flow versions as the variants."
        }
      },
      "type": "object",
      "required": [
        "updateTime",
        "versionVariants"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3VersionVariants": {
      "description": "A list of flow version variants.",
      "properties": {
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VersionVariantsVariant"
          },
          "description": "A list of flow version variants."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3VersionVariantsResponse": {
      "description": "A list of flow version variants.",
      "properties": {
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VersionVariantsVariantResponse"
          },
          "description": "A list of flow version variants."
        }
      },
      "type": "object",
      "required": [
        "variants"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3VersionVariantsVariant": {
      "description": "A single flow version with specified traffic allocation.",
      "properties": {
        "isControlGroup": {
          "type": "boolean",
          "description": "Whether the variant is for the control group."
        },
        "trafficAllocation": {
          "type": "number",
          "description": "Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0."
        },
        "version": {
          "type": "string",
          "description": "The name of the flow version. Format: `projects//locations//agents//flows//versions/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3VersionVariantsVariantResponse": {
      "description": "A single flow version with specified traffic allocation.",
      "properties": {
        "isControlGroup": {
          "type": "boolean",
          "description": "Whether the variant is for the control group."
        },
        "trafficAllocation": {
          "type": "number",
          "description": "Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0."
        },
        "version": {
          "type": "string",
          "description": "The name of the flow version. Format: `projects//locations//agents//flows//versions/`."
        }
      },
      "type": "object",
      "required": [
        "isControlGroup",
        "trafficAllocation",
        "version"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3Webhook": {
      "description": "Webhooks host the developer's business logic. During a session, webhooks allow the developer to use the data extracted by Dialogflow's natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Indicates whether the webhook is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the webhook, unique within the agent."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebService",
          "description": "Configuration for a generic web service."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`."
        },
        "serviceDirectory": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfig",
          "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
        },
        "timeout": {
          "type": "string",
          "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3WebhookGenericWebService": {
      "description": "Represents configuration for a generic web service.",
      "properties": {
        "allowedCaCerts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Specifies a list of allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, Dialogflow will use Google's default trust store to verify certificates. N.B. Make sure the HTTPS server certificates are signed with \"subject alt name\". For instance a certificate can be self-signed using the following command, ``` openssl x509 -req -days 200 -in example.com.csr \\ -signkey example.com.key \\ -out example.com.crt \\ -extfile <(printf \"\\nsubjectAltName='DNS:www.example.com'\") ```"
        },
        "httpMethod": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceHttpMethod",
          "description": "Optional. HTTP method for the flexible webhook calls. Standard webhook always uses POST."
        },
        "parameterMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Maps the values extracted from specific fields of the flexible webhook response into session parameters. - Key: session parameter name - Value: field path in the webhook response"
        },
        "password": {
          "type": "string",
          "description": "The password for HTTP Basic authentication."
        },
        "requestBody": {
          "type": "string",
          "description": "Optional. Defines a custom JSON object as request body to send to flexible webhook."
        },
        "requestHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HTTP request headers to send together with webhook requests."
        },
        "uri": {
          "type": "string",
          "description": "The webhook URI for receiving POST requests. It must use https protocol."
        },
        "username": {
          "type": "string",
          "description": "The user name for HTTP Basic authentication."
        },
        "webhookType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceWebhookType",
          "description": "Optional. Type of the webhook."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceHttpMethod": {
      "description": "Optional. HTTP method for the flexible webhook calls. Standard webhook always uses POST.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method not specified.",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST Method.",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET Method.",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD Method.",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT Method.",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE Method.",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH Method.",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS Method.",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceResponse": {
      "description": "Represents configuration for a generic web service.",
      "properties": {
        "allowedCaCerts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Specifies a list of allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, Dialogflow will use Google's default trust store to verify certificates. N.B. Make sure the HTTPS server certificates are signed with \"subject alt name\". For instance a certificate can be self-signed using the following command, ``` openssl x509 -req -days 200 -in example.com.csr \\ -signkey example.com.key \\ -out example.com.crt \\ -extfile <(printf \"\\nsubjectAltName='DNS:www.example.com'\") ```"
        },
        "httpMethod": {
          "type": "string",
          "description": "Optional. HTTP method for the flexible webhook calls. Standard webhook always uses POST."
        },
        "parameterMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Maps the values extracted from specific fields of the flexible webhook response into session parameters. - Key: session parameter name - Value: field path in the webhook response"
        },
        "password": {
          "type": "string",
          "description": "The password for HTTP Basic authentication."
        },
        "requestBody": {
          "type": "string",
          "description": "Optional. Defines a custom JSON object as request body to send to flexible webhook."
        },
        "requestHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HTTP request headers to send together with webhook requests."
        },
        "uri": {
          "type": "string",
          "description": "The webhook URI for receiving POST requests. It must use https protocol."
        },
        "username": {
          "type": "string",
          "description": "The user name for HTTP Basic authentication."
        },
        "webhookType": {
          "type": "string",
          "description": "Optional. Type of the webhook."
        }
      },
      "type": "object",
      "required": [
        "allowedCaCerts",
        "httpMethod",
        "parameterMapping",
        "password",
        "requestBody",
        "requestHeaders",
        "uri",
        "username",
        "webhookType"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceWebhookType": {
      "description": "Optional. Type of the webhook.",
      "type": "string",
      "enum": [
        {
          "name": "WebhookTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "WEBHOOK_TYPE_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "Represents a standard webhook.",
          "value": "STANDARD"
        },
        {
          "name": "Flexible",
          "description": "Represents a flexible webhook.",
          "value": "FLEXIBLE"
        }
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3WebhookResponse": {
      "description": "Webhooks host the developer's business logic. During a session, webhooks allow the developer to use the data extracted by Dialogflow's natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Indicates whether the webhook is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the webhook, unique within the agent."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceResponse",
          "description": "Configuration for a generic web service."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`."
        },
        "serviceDirectory": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfigResponse",
          "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
        },
        "timeout": {
          "type": "string",
          "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds."
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "displayName",
        "genericWebService",
        "name",
        "serviceDirectory",
        "timeout"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfig": {
      "description": "Represents configuration for a [Service Directory](https://cloud.google.com/service-directory) service.",
      "properties": {
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebService",
          "description": "Generic Service configuration of this webhook."
        },
        "service": {
          "type": "string",
          "description": "The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects//locations//namespaces//services/`. `Location ID` of the service directory must be the same as the location of the agent."
        }
      },
      "type": "object",
      "required": [
        "service"
      ]
    },
    "google-native:dialogflow/v3:GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfigResponse": {
      "description": "Represents configuration for a [Service Directory](https://cloud.google.com/service-directory) service.",
      "properties": {
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceResponse",
          "description": "Generic Service configuration of this webhook."
        },
        "service": {
          "type": "string",
          "description": "The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects//locations//namespaces//services/`. `Location ID` of the service directory must be the same as the location of the agent."
        }
      },
      "type": "object",
      "required": [
        "genericWebService",
        "service"
      ]
    },
    "google-native:dialogflow/v3:GoogleRpcStatus": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:dialogflow/v3:SecuritySettingPurgeDataTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "PurgeDataTypeUnspecified",
          "description": "Unspecified. Do not use.",
          "value": "PURGE_DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "DialogflowHistory",
          "description": "Dialogflow history. This does not include Cloud logging, which is owned by the user - not Dialogflow.",
          "value": "DIALOGFLOW_HISTORY"
        }
      ]
    },
    "google-native:dialogflow/v3:SecuritySettingRedactionScope": {
      "description": "Defines the data for which Dialogflow applies redaction. Dialogflow does not redact data that it does not have access to – for example, Cloud logging.",
      "type": "string",
      "enum": [
        {
          "name": "RedactionScopeUnspecified",
          "description": "Don't redact any kind of data.",
          "value": "REDACTION_SCOPE_UNSPECIFIED"
        },
        {
          "name": "RedactDiskStorage",
          "description": "On data to be written to disk or similar devices that are capable of holding data even if power is disconnected. This includes data that are temporarily saved on disk.",
          "value": "REDACT_DISK_STORAGE"
        }
      ]
    },
    "google-native:dialogflow/v3:SecuritySettingRedactionStrategy": {
      "description": "Strategy that defines how we do redaction.",
      "type": "string",
      "enum": [
        {
          "name": "RedactionStrategyUnspecified",
          "description": "Do not redact.",
          "value": "REDACTION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "RedactWithService",
          "description": "Call redaction service to clean up the data to be persisted.",
          "value": "REDACT_WITH_SERVICE"
        }
      ]
    },
    "google-native:dialogflow/v3:SecuritySettingRetentionStrategy": {
      "description": "Specifies the retention behavior defined by SecuritySettings.RetentionStrategy.",
      "type": "string",
      "enum": [
        {
          "name": "RetentionStrategyUnspecified",
          "description": "Retains the persisted data with Dialogflow's internal default 365d TTLs.",
          "value": "RETENTION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "RemoveAfterConversation",
          "description": "Removes data when the conversation ends. If there is no Conversation explicitly established, a default conversation ends when the corresponding Dialogflow session ends.",
          "value": "REMOVE_AFTER_CONVERSATION"
        }
      ]
    },
    "google-native:dialogflow/v3:SessionEntityTypeEntityOverrideMode": {
      "description": "Required. Indicates whether the additional data should override or supplement the custom entity type definition.",
      "type": "string",
      "enum": [
        {
          "name": "EntityOverrideModeUnspecified",
          "description": "Not specified. This value should be never used.",
          "value": "ENTITY_OVERRIDE_MODE_UNSPECIFIED"
        },
        {
          "name": "EntityOverrideModeOverride",
          "description": "The collection of session entities overrides the collection of entities in the corresponding custom entity type.",
          "value": "ENTITY_OVERRIDE_MODE_OVERRIDE"
        },
        {
          "name": "EntityOverrideModeSupplement",
          "description": "The collection of session entities extends the collection of entities in the corresponding custom entity type. Note: Even in this override mode calls to `ListSessionEntityTypes`, `GetSessionEntityType`, `CreateSessionEntityType` and `UpdateSessionEntityType` only return the additional entities added in this session entity type. If you want to get the supplemented list, please call EntityTypes.GetEntityType on the custom entity type and merge.",
          "value": "ENTITY_OVERRIDE_MODE_SUPPLEMENT"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:EntityTypeAutoExpansionMode": {
      "description": "Indicates whether the entity type can be automatically expanded.",
      "type": "string",
      "enum": [
        {
          "name": "AutoExpansionModeUnspecified",
          "description": "Auto expansion disabled for the entity.",
          "value": "AUTO_EXPANSION_MODE_UNSPECIFIED"
        },
        {
          "name": "AutoExpansionModeDefault",
          "description": "Allows an agent to recognize values that have not been explicitly listed in the entity.",
          "value": "AUTO_EXPANSION_MODE_DEFAULT"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:EntityTypeKind": {
      "description": "Required. Indicates the kind of entity type.",
      "type": "string",
      "enum": [
        {
          "name": "KindUnspecified",
          "description": "Not specified. This value should be never used.",
          "value": "KIND_UNSPECIFIED"
        },
        {
          "name": "KindMap",
          "description": "Map entity types allow mapping of a group of synonyms to a canonical value.",
          "value": "KIND_MAP"
        },
        {
          "name": "KindList",
          "description": "List entity types contain a set of entries that do not map to canonical values. However, list entity types can contain references to other entity types (with or without aliases).",
          "value": "KIND_LIST"
        },
        {
          "name": "KindRegexp",
          "description": "Regexp entity types allow to specify regular expressions in entries values.",
          "value": "KIND_REGEXP"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:ExperimentState": {
      "description": "The current state of the experiment. Transition triggered by Experiments.StartExperiment: DRAFT->RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT->DONE or RUNNING->DONE.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "State unspecified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Draft",
          "description": "The experiment is created but not started yet.",
          "value": "DRAFT"
        },
        {
          "name": "Running",
          "description": "The experiment is running.",
          "value": "RUNNING"
        },
        {
          "name": "Done",
          "description": "The experiment is done.",
          "value": "DONE"
        },
        {
          "name": "RolloutFailed",
          "description": "The experiment with auto-rollout enabled has failed.",
          "value": "ROLLOUT_FAILED"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettings": {
      "description": "Hierarchical advanced settings for agent/flow/page/fulfillment/parameter. Settings exposed at lower level overrides the settings exposed at higher level. Overriding occurs at the sub-setting level. For example, the playback_interruption_settings at fulfillment level only overrides the playback_interruption_settings at the agent level, leaving other settings at the agent level unchanged. DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.",
      "properties": {
        "audioExportGcsDestination": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1GcsDestination",
          "description": "If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels: - Agent level - Flow level"
        },
        "dtmfSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettings",
          "description": "Settings for DTMF. Exposed at the following levels: - Agent level - Flow level - Page level - Parameter level."
        },
        "loggingSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettings",
          "description": "Settings for logging. Settings for Dialogflow History, Contact Center messages, StackDriver logs, and speech logging. Exposed at the following levels: - Agent level."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettings": {
      "description": "Define behaviors for DTMF (dual tone multi frequency).",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a \"3\" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance)."
        },
        "finishDigit": {
          "type": "string",
          "description": "The digit that terminates a DTMF digit sequence."
        },
        "maxDigits": {
          "type": "integer",
          "description": "Max length of DTMF digits."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettingsResponse": {
      "description": "Define behaviors for DTMF (dual tone multi frequency).",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a \"3\" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance)."
        },
        "finishDigit": {
          "type": "string",
          "description": "The digit that terminates a DTMF digit sequence."
        },
        "maxDigits": {
          "type": "integer",
          "description": "Max length of DTMF digits."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "finishDigit",
        "maxDigits"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettings": {
      "description": "Define behaviors on logging.",
      "properties": {
        "enableInteractionLogging": {
          "type": "boolean",
          "description": "If true, DF Interaction logging is currently enabled."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "If true, StackDriver logging is currently enabled."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettingsResponse": {
      "description": "Define behaviors on logging.",
      "properties": {
        "enableInteractionLogging": {
          "type": "boolean",
          "description": "If true, DF Interaction logging is currently enabled."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "If true, StackDriver logging is currently enabled."
        }
      },
      "type": "object",
      "required": [
        "enableInteractionLogging",
        "enableStackdriverLogging"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse": {
      "description": "Hierarchical advanced settings for agent/flow/page/fulfillment/parameter. Settings exposed at lower level overrides the settings exposed at higher level. Overriding occurs at the sub-setting level. For example, the playback_interruption_settings at fulfillment level only overrides the playback_interruption_settings at the agent level, leaving other settings at the agent level unchanged. DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.",
      "properties": {
        "audioExportGcsDestination": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1GcsDestinationResponse",
          "description": "If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels: - Agent level - Flow level"
        },
        "dtmfSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettingsResponse",
          "description": "Settings for DTMF. Exposed at the following levels: - Agent level - Flow level - Page level - Parameter level."
        },
        "loggingSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettingsResponse",
          "description": "Settings for logging. Settings for Dialogflow History, Contact Center messages, StackDriver logs, and speech logging. Exposed at the following levels: - Agent level."
        }
      },
      "type": "object",
      "required": [
        "audioExportGcsDestination",
        "dtmfSettings",
        "loggingSettings"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AgentAnswerFeedbackSettings": {
      "description": "Settings for answer feedback collection.",
      "properties": {
        "enableAnswerFeedback": {
          "type": "boolean",
          "description": "Optional. If enabled, end users will be able to provide answer feedback to Dialogflow responses. Feature works only if interaction logging is enabled in the Dialogflow agent."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AgentAnswerFeedbackSettingsResponse": {
      "description": "Settings for answer feedback collection.",
      "properties": {
        "enableAnswerFeedback": {
          "type": "boolean",
          "description": "Optional. If enabled, end users will be able to provide answer feedback to Dialogflow responses. Feature works only if interaction logging is enabled in the Dialogflow agent."
        }
      },
      "type": "object",
      "required": [
        "enableAnswerFeedback"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AgentGenAppBuilderSettings": {
      "description": "Settings for Gen App Builder.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "The full name of the Gen App Builder engine related to this agent if there is one. Format: `projects/{Project ID}/locations/{Location ID}/collections/{Collection ID}/engines/{Engine ID}`"
        }
      },
      "type": "object",
      "required": [
        "engine"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AgentGenAppBuilderSettingsResponse": {
      "description": "Settings for Gen App Builder.",
      "properties": {
        "engine": {
          "type": "string",
          "description": "The full name of the Gen App Builder engine related to this agent if there is one. Format: `projects/{Project ID}/locations/{Location ID}/collections/{Collection ID}/engines/{Engine ID}`"
        }
      },
      "type": "object",
      "required": [
        "engine"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettings": {
      "description": "Settings for connecting to Git repository for an agent.",
      "properties": {
        "githubSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettingsGithubSettings",
          "description": "GitHub settings."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettingsGithubSettings": {
      "description": "Settings of integration with GitHub.",
      "properties": {
        "accessToken": {
          "type": "string",
          "description": "The access token used to authenticate the access to the GitHub repository."
        },
        "branches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of branches configured to be used from Dialogflow."
        },
        "displayName": {
          "type": "string",
          "description": "The unique repository display name for the GitHub repository."
        },
        "repositoryUri": {
          "type": "string",
          "description": "The GitHub repository URI related to the agent."
        },
        "trackingBranch": {
          "type": "string",
          "description": "The branch of the GitHub repository tracked for this agent."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettingsGithubSettingsResponse": {
      "description": "Settings of integration with GitHub.",
      "properties": {
        "accessToken": {
          "type": "string",
          "description": "The access token used to authenticate the access to the GitHub repository."
        },
        "branches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of branches configured to be used from Dialogflow."
        },
        "displayName": {
          "type": "string",
          "description": "The unique repository display name for the GitHub repository."
        },
        "repositoryUri": {
          "type": "string",
          "description": "The GitHub repository URI related to the agent."
        },
        "trackingBranch": {
          "type": "string",
          "description": "The branch of the GitHub repository tracked for this agent."
        }
      },
      "type": "object",
      "required": [
        "accessToken",
        "branches",
        "displayName",
        "repositoryUri",
        "trackingBranch"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettingsResponse": {
      "description": "Settings for connecting to Git repository for an agent.",
      "properties": {
        "githubSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettingsGithubSettingsResponse",
          "description": "GitHub settings."
        }
      },
      "type": "object",
      "required": [
        "githubSettings"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AudioInput": {
      "description": "Represents the natural speech audio to be processed.",
      "properties": {
        "audio": {
          "type": "string",
          "description": "The natural language speech audio to be processed. A single request can contain up to 2 minutes of speech audio data. The transcribed text cannot contain more than 256 bytes. For non-streaming audio detect intent, both `config` and `audio` must be provided. For streaming audio detect intent, `config` must be provided in the first request and `audio` must be provided in all following requests."
        },
        "config": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1InputAudioConfig",
          "description": "Instructs the speech recognizer how to process the speech audio."
        }
      },
      "type": "object",
      "required": [
        "config"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1AudioInputResponse": {
      "description": "Represents the natural speech audio to be processed.",
      "properties": {
        "audio": {
          "type": "string",
          "description": "The natural language speech audio to be processed. A single request can contain up to 2 minutes of speech audio data. The transcribed text cannot contain more than 256 bytes. For non-streaming audio detect intent, both `config` and `audio` must be provided. For streaming audio detect intent, `config` must be provided in the first request and `audio` must be provided in all following requests."
        },
        "config": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1InputAudioConfigResponse",
          "description": "Instructs the speech recognizer how to process the speech audio."
        }
      },
      "type": "object",
      "required": [
        "audio",
        "config"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1BargeInConfig": {
      "description": "Configuration of the barge-in behavior. Barge-in instructs the API to return a detected utterance at a proper time while the client is playing back the response audio from a previous request. When the client sees the utterance, it should stop the playback and immediately get ready for receiving the responses for the current request. The barge-in handling requires the client to start streaming audio input as soon as it starts playing back the audio from the previous response. The playback is modeled into two phases: * No barge-in phase: which goes first and during which speech detection should not be carried out. * Barge-in phase: which follows the no barge-in phase and during which the API starts speech detection and may inform the client that an utterance has been detected. Note that no-speech event is not expected in this phase. The client provides this configuration in terms of the durations of those two phases. The durations are measured in terms of the audio length fromt the the start of the input audio. The flow goes like below: --> Time without speech detection | utterance only | utterance or no-speech event | | +-------------+ | +------------+ | +---------------+ ----------+ no barge-in +-|-+ barge-in +-|-+ normal period +----------- +-------------+ | +------------+ | +---------------+ No-speech event is a response with END_OF_UTTERANCE without any transcript following up.",
      "properties": {
        "noBargeInDuration": {
          "type": "string",
          "description": "Duration that is not eligible for barge-in at the beginning of the input audio."
        },
        "totalDuration": {
          "type": "string",
          "description": "Total duration for the playback at the beginning of the input audio."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1BargeInConfigResponse": {
      "description": "Configuration of the barge-in behavior. Barge-in instructs the API to return a detected utterance at a proper time while the client is playing back the response audio from a previous request. When the client sees the utterance, it should stop the playback and immediately get ready for receiving the responses for the current request. The barge-in handling requires the client to start streaming audio input as soon as it starts playing back the audio from the previous response. The playback is modeled into two phases: * No barge-in phase: which goes first and during which speech detection should not be carried out. * Barge-in phase: which follows the no barge-in phase and during which the API starts speech detection and may inform the client that an utterance has been detected. Note that no-speech event is not expected in this phase. The client provides this configuration in terms of the durations of those two phases. The durations are measured in terms of the audio length fromt the the start of the input audio. The flow goes like below: --> Time without speech detection | utterance only | utterance or no-speech event | | +-------------+ | +------------+ | +---------------+ ----------+ no barge-in +-|-+ barge-in +-|-+ normal period +----------- +-------------+ | +------------+ | +---------------+ No-speech event is a response with END_OF_UTTERANCE without any transcript following up.",
      "properties": {
        "noBargeInDuration": {
          "type": "string",
          "description": "Duration that is not eligible for barge-in at the beginning of the input audio."
        },
        "totalDuration": {
          "type": "string",
          "description": "Total duration for the playback at the beginning of the input audio."
        }
      },
      "type": "object",
      "required": [
        "noBargeInDuration",
        "totalDuration"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurn": {
      "description": "One interaction between a human and virtual agent. The human provides some input and the virtual agent provides a response.",
      "properties": {
        "userInput": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnUserInput",
          "description": "The user input."
        },
        "virtualAgentOutput": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutput",
          "description": "The virtual agent output."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnResponse": {
      "description": "One interaction between a human and virtual agent. The human provides some input and the virtual agent provides a response.",
      "properties": {
        "userInput": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnUserInputResponse",
          "description": "The user input."
        },
        "virtualAgentOutput": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutputResponse",
          "description": "The virtual agent output."
        }
      },
      "type": "object",
      "required": [
        "userInput",
        "virtualAgentOutput"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnUserInput": {
      "description": "The input from the human user.",
      "properties": {
        "enableSentimentAnalysis": {
          "type": "boolean",
          "description": "Whether sentiment analysis is enabled."
        },
        "injectedParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Parameters that need to be injected into the conversation during intent detection."
        },
        "input": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1QueryInput",
          "description": "Supports text input, event input, dtmf input in the test case."
        },
        "isWebhookEnabled": {
          "type": "boolean",
          "description": "If webhooks should be allowed to trigger in response to the user utterance. Often if parameters are injected, webhooks should not be enabled."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnUserInputResponse": {
      "description": "The input from the human user.",
      "properties": {
        "enableSentimentAnalysis": {
          "type": "boolean",
          "description": "Whether sentiment analysis is enabled."
        },
        "injectedParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Parameters that need to be injected into the conversation during intent detection."
        },
        "input": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1QueryInputResponse",
          "description": "Supports text input, event input, dtmf input in the test case."
        },
        "isWebhookEnabled": {
          "type": "boolean",
          "description": "If webhooks should be allowed to trigger in response to the user utterance. Often if parameters are injected, webhooks should not be enabled."
        }
      },
      "type": "object",
      "required": [
        "enableSentimentAnalysis",
        "injectedParameters",
        "input",
        "isWebhookEnabled"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutput": {
      "description": "The output from the virtual agent.",
      "properties": {
        "currentPage": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Page",
          "description": "The Page on which the utterance was spoken. Only name and displayName will be set."
        },
        "diagnosticInfo": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Input only. The diagnostic info output for the turn. Required to calculate the testing coverage."
        },
        "sessionParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The session parameters available to the bot at this point."
        },
        "status": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleRpcStatus",
          "description": "Response error from the agent in the test result. If set, other output is empty."
        },
        "textResponses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageText"
          },
          "description": "The text responses from the agent for the turn."
        },
        "triggeredIntent": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Intent",
          "description": "The Intent that triggered the response. Only name and displayName will be set."
        }
      },
      "type": "object",
      "required": [
        "diagnosticInfo"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutputResponse": {
      "description": "The output from the virtual agent.",
      "properties": {
        "currentPage": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1PageResponse",
          "description": "The Page on which the utterance was spoken. Only name and displayName will be set."
        },
        "diagnosticInfo": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Input only. The diagnostic info output for the turn. Required to calculate the testing coverage."
        },
        "differences": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TestRunDifferenceResponse"
          },
          "description": "If this is part of a result conversation turn, the list of differences between the original run and the replay for this output, if any."
        },
        "sessionParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The session parameters available to the bot at this point."
        },
        "status": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleRpcStatusResponse",
          "description": "Response error from the agent in the test result. If set, other output is empty."
        },
        "textResponses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageTextResponse"
          },
          "description": "The text responses from the agent for the turn."
        },
        "triggeredIntent": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentResponse",
          "description": "The Intent that triggered the response. Only name and displayName will be set."
        }
      },
      "type": "object",
      "required": [
        "currentPage",
        "diagnosticInfo",
        "differences",
        "sessionParameters",
        "status",
        "textResponses",
        "triggeredIntent"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1DataStoreConnection": {
      "description": "A data store connection. It represents a data store in Discovery Engine and the type of the contents it contains.",
      "properties": {
        "dataStore": {
          "type": "string",
          "description": "The full name of the referenced data store. Formats: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}` `projects/{project}/locations/{location}/dataStores/{data_store}`"
        },
        "dataStoreType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1DataStoreConnectionDataStoreType",
          "description": "The type of the connected data store."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1DataStoreConnectionDataStoreType": {
      "description": "The type of the connected data store.",
      "type": "string",
      "enum": [
        {
          "name": "DataStoreTypeUnspecified",
          "description": "Not specified. This value indicates that the data store type is not specified, so it will not be used during search.",
          "value": "DATA_STORE_TYPE_UNSPECIFIED"
        },
        {
          "name": "PublicWeb",
          "description": "A data store that contains public web content.",
          "value": "PUBLIC_WEB"
        },
        {
          "name": "Unstructured",
          "description": "A data store that contains unstructured private data.",
          "value": "UNSTRUCTURED"
        },
        {
          "name": "Structured",
          "description": "A data store that contains structured data (for example FAQ).",
          "value": "STRUCTURED"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1DataStoreConnectionResponse": {
      "description": "A data store connection. It represents a data store in Discovery Engine and the type of the contents it contains.",
      "properties": {
        "dataStore": {
          "type": "string",
          "description": "The full name of the referenced data store. Formats: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}` `projects/{project}/locations/{location}/dataStores/{data_store}`"
        },
        "dataStoreType": {
          "type": "string",
          "description": "The type of the connected data store."
        }
      },
      "type": "object",
      "required": [
        "dataStore",
        "dataStoreType"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1DtmfInput": {
      "description": "Represents the input for dtmf event.",
      "properties": {
        "digits": {
          "type": "string",
          "description": "The dtmf digits."
        },
        "finishDigit": {
          "type": "string",
          "description": "The finish digit (if any)."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1DtmfInputResponse": {
      "description": "Represents the input for dtmf event.",
      "properties": {
        "digits": {
          "type": "string",
          "description": "The dtmf digits."
        },
        "finishDigit": {
          "type": "string",
          "description": "The finish digit (if any)."
        }
      },
      "type": "object",
      "required": [
        "digits",
        "finishDigit"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeEntity": {
      "description": "An **entity entry** for an associated entity type.",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`."
        },
        "value": {
          "type": "string",
          "description": "The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A canonical value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases)."
        }
      },
      "type": "object",
      "required": [
        "synonyms",
        "value"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeEntityResponse": {
      "description": "An **entity entry** for an associated entity type.",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`."
        },
        "value": {
          "type": "string",
          "description": "The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A canonical value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases)."
        }
      },
      "type": "object",
      "required": [
        "synonyms",
        "value"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeExcludedPhrase": {
      "description": "An excluded entity phrase that should not be matched.",
      "properties": {
        "value": {
          "type": "string",
          "description": "The word or phrase to be excluded."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeExcludedPhraseResponse": {
      "description": "An excluded entity phrase that should not be matched.",
      "properties": {
        "value": {
          "type": "string",
          "description": "The word or phrase to be excluded."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfig": {
      "description": "The configuration for continuous tests.",
      "properties": {
        "enableContinuousRun": {
          "type": "boolean",
          "description": "Whether to run test cases in TestCasesConfig.test_cases periodically. Default false. If set to true, run once a day."
        },
        "enablePredeploymentRun": {
          "type": "boolean",
          "description": "Whether to run test cases in TestCasesConfig.test_cases before deploying a flow version to the environment. Default false."
        },
        "testCases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of test case names to run. They should be under the same agent. Format of each test case name: `projects//locations/ /agents//testCases/`"
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfigResponse": {
      "description": "The configuration for continuous tests.",
      "properties": {
        "enableContinuousRun": {
          "type": "boolean",
          "description": "Whether to run test cases in TestCasesConfig.test_cases periodically. Default false. If set to true, run once a day."
        },
        "enablePredeploymentRun": {
          "type": "boolean",
          "description": "Whether to run test cases in TestCasesConfig.test_cases before deploying a flow version to the environment. Default false."
        },
        "testCases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of test case names to run. They should be under the same agent. Format of each test case name: `projects//locations/ /agents//testCases/`"
        }
      },
      "type": "object",
      "required": [
        "enableContinuousRun",
        "enablePredeploymentRun",
        "testCases"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfig": {
      "description": "Configuration for the version.",
      "properties": {
        "version": {
          "type": "string",
          "description": "Format: projects//locations//agents//flows//versions/."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfigResponse": {
      "description": "Configuration for the version.",
      "properties": {
        "version": {
          "type": "string",
          "description": "Format: projects//locations//agents//flows//versions/."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfig": {
      "description": "Configuration for webhooks.",
      "properties": {
        "webhookOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Webhook"
          },
          "description": "The list of webhooks to override for the agent environment. The webhook must exist in the agent. You can override fields in `generic_web_service` and `service_directory`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfigResponse": {
      "description": "Configuration for webhooks.",
      "properties": {
        "webhookOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookResponse"
          },
          "description": "The list of webhooks to override for the agent environment. The webhook must exist in the agent. You can override fields in `generic_web_service` and `service_directory`."
        }
      },
      "type": "object",
      "required": [
        "webhookOverrides"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EventHandler": {
      "description": "An event handler specifies an event that can be handled during a session. When the specified event happens, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the event, it will be called. * If there is a `target_page` associated with the event, the session will transition into the specified page. * If there is a `target_flow` associated with the event, the session will transition into the specified flow.",
      "properties": {
        "event": {
          "type": "string",
          "description": "The name of the event to handle."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Fulfillment",
          "description": "The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks."
        }
      },
      "type": "object",
      "required": [
        "event"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EventHandlerResponse": {
      "description": "An event handler specifies an event that can be handled during a session. When the specified event happens, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the event, it will be called. * If there is a `target_page` associated with the event, the session will transition into the specified page. * If there is a `target_flow` associated with the event, the session will transition into the specified flow.",
      "properties": {
        "event": {
          "type": "string",
          "description": "The name of the event to handle."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this event handler."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentResponse",
          "description": "The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks."
        }
      },
      "type": "object",
      "required": [
        "event",
        "name",
        "targetFlow",
        "targetPage",
        "triggerFulfillment"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EventInput": {
      "description": "Represents the event to trigger.",
      "properties": {
        "event": {
          "type": "string",
          "description": "Name of the event."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1EventInputResponse": {
      "description": "Represents the event to trigger.",
      "properties": {
        "event": {
          "type": "string",
          "description": "Name of the event."
        }
      },
      "type": "object",
      "required": [
        "event"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentDefinition": {
      "description": "Definition of the experiment.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. \"query_input.language_code=en\" See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "versionVariants": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VersionVariants",
          "description": "The flow versions as the variants of this experiment."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentDefinitionResponse": {
      "description": "Definition of the experiment.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. \"query_input.language_code=en\" See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "versionVariants": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VersionVariantsResponse",
          "description": "The flow versions as the variants of this experiment."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "versionVariants"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResult": {
      "description": "The inference result which includes an objective metric to optimize and the confidence interval.",
      "properties": {
        "lastUpdateTime": {
          "type": "string",
          "description": "The last time the experiment's stats data was updated. Will have default value if stats have never been computed for this experiment."
        },
        "versionMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultVersionMetrics"
          },
          "description": "Version variants and metrics."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultConfidenceInterval": {
      "description": "A confidence interval is a range of possible values for the experiment objective you are trying to measure.",
      "properties": {
        "confidenceLevel": {
          "type": "number",
          "description": "The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval."
        },
        "lowerBound": {
          "type": "number",
          "description": "Lower bound of the interval."
        },
        "ratio": {
          "type": "number",
          "description": "The percent change between an experiment metric's value and the value for its control."
        },
        "upperBound": {
          "type": "number",
          "description": "Upper bound of the interval."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultConfidenceIntervalResponse": {
      "description": "A confidence interval is a range of possible values for the experiment objective you are trying to measure.",
      "properties": {
        "confidenceLevel": {
          "type": "number",
          "description": "The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval."
        },
        "lowerBound": {
          "type": "number",
          "description": "Lower bound of the interval."
        },
        "ratio": {
          "type": "number",
          "description": "The percent change between an experiment metric's value and the value for its control."
        },
        "upperBound": {
          "type": "number",
          "description": "Upper bound of the interval."
        }
      },
      "type": "object",
      "required": [
        "confidenceLevel",
        "lowerBound",
        "ratio",
        "upperBound"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultMetric": {
      "description": "Metric and corresponding confidence intervals.",
      "properties": {
        "confidenceInterval": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultConfidenceInterval",
          "description": "The probability that the treatment is better than all other treatments in the experiment"
        },
        "count": {
          "type": "number",
          "description": "Count value of a metric."
        },
        "countType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultMetricCountType",
          "description": "Count-based metric type. Only one of type or count_type is specified in each Metric."
        },
        "ratio": {
          "type": "number",
          "description": "Ratio value of a metric."
        },
        "type": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultMetricType",
          "description": "Ratio-based metric type. Only one of type or count_type is specified in each Metric."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultMetricCountType": {
      "description": "Count-based metric type. Only one of type or count_type is specified in each Metric.",
      "type": "string",
      "enum": [
        {
          "name": "CountTypeUnspecified",
          "description": "Count type unspecified.",
          "value": "COUNT_TYPE_UNSPECIFIED"
        },
        {
          "name": "TotalNoMatchCount",
          "description": "Total number of occurrences of a 'NO_MATCH'.",
          "value": "TOTAL_NO_MATCH_COUNT"
        },
        {
          "name": "TotalTurnCount",
          "description": "Total number of turn counts.",
          "value": "TOTAL_TURN_COUNT"
        },
        {
          "name": "AverageTurnCount",
          "description": "Average turn count in a session.",
          "value": "AVERAGE_TURN_COUNT"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultMetricResponse": {
      "description": "Metric and corresponding confidence intervals.",
      "properties": {
        "confidenceInterval": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultConfidenceIntervalResponse",
          "description": "The probability that the treatment is better than all other treatments in the experiment"
        },
        "count": {
          "type": "number",
          "description": "Count value of a metric."
        },
        "countType": {
          "type": "string",
          "description": "Count-based metric type. Only one of type or count_type is specified in each Metric."
        },
        "ratio": {
          "type": "number",
          "description": "Ratio value of a metric."
        },
        "type": {
          "type": "string",
          "description": "Ratio-based metric type. Only one of type or count_type is specified in each Metric."
        }
      },
      "type": "object",
      "required": [
        "confidenceInterval",
        "count",
        "countType",
        "ratio",
        "type"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultMetricType": {
      "description": "Ratio-based metric type. Only one of type or count_type is specified in each Metric.",
      "type": "string",
      "enum": [
        {
          "name": "MetricUnspecified",
          "description": "Metric unspecified.",
          "value": "METRIC_UNSPECIFIED"
        },
        {
          "name": "ContainedSessionNoCallbackRate",
          "description": "Percentage of contained sessions without user calling back in 24 hours.",
          "value": "CONTAINED_SESSION_NO_CALLBACK_RATE"
        },
        {
          "name": "LiveAgentHandoffRate",
          "description": "Percentage of sessions that were handed to a human agent.",
          "value": "LIVE_AGENT_HANDOFF_RATE"
        },
        {
          "name": "CallbackSessionRate",
          "description": "Percentage of sessions with the same user calling back.",
          "value": "CALLBACK_SESSION_RATE"
        },
        {
          "name": "AbandonedSessionRate",
          "description": "Percentage of sessions where user hung up.",
          "value": "ABANDONED_SESSION_RATE"
        },
        {
          "name": "SessionEndRate",
          "description": "Percentage of sessions reached Dialogflow 'END_PAGE' or 'END_SESSION'.",
          "value": "SESSION_END_RATE"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultResponse": {
      "description": "The inference result which includes an objective metric to optimize and the confidence interval.",
      "properties": {
        "lastUpdateTime": {
          "type": "string",
          "description": "The last time the experiment's stats data was updated. Will have default value if stats have never been computed for this experiment."
        },
        "versionMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultVersionMetricsResponse"
          },
          "description": "Version variants and metrics."
        }
      },
      "type": "object",
      "required": [
        "lastUpdateTime",
        "versionMetrics"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultVersionMetrics": {
      "description": "Version variant and associated metrics.",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultMetric"
          },
          "description": "The metrics and corresponding confidence intervals in the inference result."
        },
        "sessionCount": {
          "type": "integer",
          "description": "Number of sessions that were allocated to this version."
        },
        "version": {
          "type": "string",
          "description": "The name of the flow Version. Format: `projects//locations//agents//flows//versions/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultVersionMetricsResponse": {
      "description": "Version variant and associated metrics.",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultMetricResponse"
          },
          "description": "The metrics and corresponding confidence intervals in the inference result."
        },
        "sessionCount": {
          "type": "integer",
          "description": "Number of sessions that were allocated to this version."
        },
        "version": {
          "type": "string",
          "description": "The name of the flow Version. Format: `projects//locations//agents//flows//versions/`."
        }
      },
      "type": "object",
      "required": [
        "metrics",
        "sessionCount",
        "version"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1Form": {
      "description": "A form is a data model that groups related parameters that can be collected from the user. The process in which the agent prompts the user and collects parameter values from the user is called form filling. A form can be added to a page. When form filling is done, the filled parameters will be written to the session.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FormParameter"
          },
          "description": "Parameters to collect from the user."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FormParameter": {
      "description": "Represents a form parameter.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettings",
          "description": "Hierarchical advanced settings for this parameter. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "defaultValue": {
          "$ref": "pulumi.json#/Any",
          "description": "The default value of an optional parameter. If the parameter is required, the default value will be ignored."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the parameter, unique within the form."
        },
        "entityType": {
          "type": "string",
          "description": "The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types."
        },
        "fillBehavior": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FormParameterFillBehavior",
          "description": "Defines fill behavior for the parameter."
        },
        "isList": {
          "type": "boolean",
          "description": "Indicates whether the parameter represents a list of values."
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled."
        },
        "required": {
          "type": "boolean",
          "description": "Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "entityType",
        "fillBehavior"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FormParameterFillBehavior": {
      "description": "Configuration for how the filling of a parameter should be handled.",
      "properties": {
        "initialPromptFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Fulfillment",
          "description": "The fulfillment to provide the initial prompt that the agent can present to the user in order to fill the parameter."
        },
        "repromptEventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandler"
          },
          "description": "The handlers for parameter-level events, used to provide reprompt for the parameter or transition to a different page/flow. The supported events are: * `sys.no-match-`, where N can be from 1 to 6 * `sys.no-match-default` * `sys.no-input-`, where N can be from 1 to 6 * `sys.no-input-default` * `sys.invalid-parameter` `initial_prompt_fulfillment` provides the first prompt for the parameter. If the user's response does not fill the parameter, a no-match/no-input event will be triggered, and the fulfillment associated with the `sys.no-match-1`/`sys.no-input-1` handler (if defined) will be called to provide a prompt. The `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to the next no-match/no-input event, and so on. A `sys.no-match-default` or `sys.no-input-default` handler will be used to handle all following no-match/no-input events after all numbered no-match/no-input handlers for the parameter are consumed. A `sys.invalid-parameter` handler can be defined to handle the case where the parameter values have been `invalidated` by webhook. For example, if the user's response fill the parameter, however the parameter was invalidated by webhook, the fulfillment associated with the `sys.invalid-parameter` handler (if defined) will be called to provide a prompt. If the event handler for the corresponding event can't be found on the parameter, `initial_prompt_fulfillment` will be re-prompted."
        }
      },
      "type": "object",
      "required": [
        "initialPromptFulfillment"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FormParameterFillBehaviorResponse": {
      "description": "Configuration for how the filling of a parameter should be handled.",
      "properties": {
        "initialPromptFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentResponse",
          "description": "The fulfillment to provide the initial prompt that the agent can present to the user in order to fill the parameter."
        },
        "repromptEventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandlerResponse"
          },
          "description": "The handlers for parameter-level events, used to provide reprompt for the parameter or transition to a different page/flow. The supported events are: * `sys.no-match-`, where N can be from 1 to 6 * `sys.no-match-default` * `sys.no-input-`, where N can be from 1 to 6 * `sys.no-input-default` * `sys.invalid-parameter` `initial_prompt_fulfillment` provides the first prompt for the parameter. If the user's response does not fill the parameter, a no-match/no-input event will be triggered, and the fulfillment associated with the `sys.no-match-1`/`sys.no-input-1` handler (if defined) will be called to provide a prompt. The `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to the next no-match/no-input event, and so on. A `sys.no-match-default` or `sys.no-input-default` handler will be used to handle all following no-match/no-input events after all numbered no-match/no-input handlers for the parameter are consumed. A `sys.invalid-parameter` handler can be defined to handle the case where the parameter values have been `invalidated` by webhook. For example, if the user's response fill the parameter, however the parameter was invalidated by webhook, the fulfillment associated with the `sys.invalid-parameter` handler (if defined) will be called to provide a prompt. If the event handler for the corresponding event can't be found on the parameter, `initial_prompt_fulfillment` will be re-prompted."
        }
      },
      "type": "object",
      "required": [
        "initialPromptFulfillment",
        "repromptEventHandlers"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FormParameterResponse": {
      "description": "Represents a form parameter.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this parameter. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "defaultValue": {
          "$ref": "pulumi.json#/Any",
          "description": "The default value of an optional parameter. If the parameter is required, the default value will be ignored."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the parameter, unique within the form."
        },
        "entityType": {
          "type": "string",
          "description": "The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types."
        },
        "fillBehavior": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FormParameterFillBehaviorResponse",
          "description": "Defines fill behavior for the parameter."
        },
        "isList": {
          "type": "boolean",
          "description": "Indicates whether the parameter represents a list of values."
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled."
        },
        "required": {
          "type": "boolean",
          "description": "Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "defaultValue",
        "displayName",
        "entityType",
        "fillBehavior",
        "isList",
        "redact",
        "required"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FormResponse": {
      "description": "A form is a data model that groups related parameters that can be collected from the user. The process in which the agent prompts the user and collects parameter values from the user is called form filling. A form can be added to a page. When form filling is done, the filled parameters will be written to the session.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FormParameterResponse"
          },
          "description": "Parameters to collect from the user."
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1Fulfillment": {
      "description": "A fulfillment can do one or more of the following actions at the same time: * Generate rich message responses. * Set parameter values. * Call the webhook. Fulfillments can be called at various stages in the Page or Form lifecycle. For example, when a DetectIntentRequest drives a session to enter a new page, the page's entry fulfillment can add a static response to the QueryResult in the returning DetectIntentResponse, call the webhook (for example, to load user data from a database), or both.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettings",
          "description": "Hierarchical advanced settings for this fulfillment. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "conditionalCases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases"
          },
          "description": "Conditional cases for this fulfillment."
        },
        "enableGenerativeFallback": {
          "type": "boolean",
          "description": "If the flag is true, the agent will utilize LLM to generate a text response. If LLM generation fails, the defined responses in the fulfillment will be respected. This flag is only useful for fulfillments associated with no-match event handlers."
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessage"
          },
          "description": "The list of rich message responses to present to the user."
        },
        "returnPartialResponses": {
          "type": "boolean",
          "description": "Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks."
        },
        "setParameterActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterAction"
          },
          "description": "Set parameter values before executing the webhook."
        },
        "tag": {
          "type": "string",
          "description": "The value of this field will be populated in the WebhookRequest `fulfillmentInfo.tag` field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes. This field is required if `webhook` is specified."
        },
        "webhook": {
          "type": "string",
          "description": "The webhook to call. Format: `projects//locations//agents//webhooks/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases": {
      "description": "A list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.",
      "properties": {
        "cases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCase"
          },
          "description": "A list of cascading if-else conditions."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCase": {
      "description": "Each case has a Boolean condition. When it is evaluated to be True, the corresponding messages will be selected and evaluated recursively.",
      "properties": {
        "caseContent": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContent"
          },
          "description": "A list of case content."
        },
        "condition": {
          "type": "string",
          "description": "The condition to activate and select this case. Empty means the condition is always true. The condition is evaluated against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContent": {
      "description": "The list of messages or conditional cases to activate for this case.",
      "properties": {
        "additionalCases": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases",
          "description": "Additional cases to be evaluated."
        },
        "message": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessage",
          "description": "Returned message."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContentResponse": {
      "description": "The list of messages or conditional cases to activate for this case.",
      "properties": {
        "additionalCases": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesResponse",
          "description": "Additional cases to be evaluated."
        },
        "message": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageResponse",
          "description": "Returned message."
        }
      },
      "type": "object",
      "required": [
        "additionalCases",
        "message"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseResponse": {
      "description": "Each case has a Boolean condition. When it is evaluated to be True, the corresponding messages will be selected and evaluated recursively.",
      "properties": {
        "caseContent": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContentResponse"
          },
          "description": "A list of case content."
        },
        "condition": {
          "type": "string",
          "description": "The condition to activate and select this case. Empty means the condition is always true. The condition is evaluated against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        }
      },
      "type": "object",
      "required": [
        "caseContent",
        "condition"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesResponse": {
      "description": "A list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.",
      "properties": {
        "cases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseResponse"
          },
          "description": "A list of cascading if-else conditions."
        }
      },
      "type": "object",
      "required": [
        "cases"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentResponse": {
      "description": "A fulfillment can do one or more of the following actions at the same time: * Generate rich message responses. * Set parameter values. * Call the webhook. Fulfillments can be called at various stages in the Page or Form lifecycle. For example, when a DetectIntentRequest drives a session to enter a new page, the page's entry fulfillment can add a static response to the QueryResult in the returning DetectIntentResponse, call the webhook (for example, to load user data from a database), or both.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this fulfillment. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "conditionalCases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesResponse"
          },
          "description": "Conditional cases for this fulfillment."
        },
        "enableGenerativeFallback": {
          "type": "boolean",
          "description": "If the flag is true, the agent will utilize LLM to generate a text response. If LLM generation fails, the defined responses in the fulfillment will be respected. This flag is only useful for fulfillments associated with no-match event handlers."
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageResponse"
          },
          "description": "The list of rich message responses to present to the user."
        },
        "returnPartialResponses": {
          "type": "boolean",
          "description": "Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks."
        },
        "setParameterActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterActionResponse"
          },
          "description": "Set parameter values before executing the webhook."
        },
        "tag": {
          "type": "string",
          "description": "The value of this field will be populated in the WebhookRequest `fulfillmentInfo.tag` field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes. This field is required if `webhook` is specified."
        },
        "webhook": {
          "type": "string",
          "description": "The webhook to call. Format: `projects//locations//agents//webhooks/`."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "conditionalCases",
        "enableGenerativeFallback",
        "messages",
        "returnPartialResponses",
        "setParameterActions",
        "tag",
        "webhook"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterAction": {
      "description": "Setting a parameter value.",
      "properties": {
        "parameter": {
          "type": "string",
          "description": "Display name of the parameter."
        },
        "value": {
          "$ref": "pulumi.json#/Any",
          "description": "The new value of the parameter. A null value clears the parameter."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterActionResponse": {
      "description": "Setting a parameter value.",
      "properties": {
        "parameter": {
          "type": "string",
          "description": "Display name of the parameter."
        },
        "value": {
          "$ref": "pulumi.json#/Any",
          "description": "The new value of the parameter. A null value clears the parameter."
        }
      },
      "type": "object",
      "required": [
        "parameter",
        "value"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1GcsDestination": {
      "description": "Google Cloud Storage location for a Dialogflow operation that writes or exports objects (e.g. exported agent or transcripts) outside of Dialogflow.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The Google Cloud Storage URI for the exported objects. A URI is of the form: `gs://bucket/object-name-or-prefix` Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1GcsDestinationResponse": {
      "description": "Google Cloud Storage location for a Dialogflow operation that writes or exports objects (e.g. exported agent or transcripts) outside of Dialogflow.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The Google Cloud Storage URI for the exported objects. A URI is of the form: `gs://bucket/object-name-or-prefix` Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1InputAudioConfig": {
      "description": "Instructs the speech recognizer on how to process the audio content.",
      "properties": {
        "audioEncoding": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1InputAudioConfigAudioEncoding",
          "description": "Audio encoding of the audio content to process."
        },
        "bargeInConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1BargeInConfig",
          "description": "Configuration of barge-in behavior during the streaming of input audio."
        },
        "enableWordInfo": {
          "type": "boolean",
          "description": "Optional. If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult with information about the recognized speech words, e.g. start and end time offsets. If false or unspecified, Speech doesn't return any word-level information."
        },
        "model": {
          "type": "string",
          "description": "Optional. Which Speech model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the InputAudioConfig. If enhanced speech model is enabled for the agent and an enhanced version of the specified model for the language does not exist, then the speech is recognized using the standard version of the specified model. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details. If you specify a model, the following models typically have the best performance: - phone_call (best for Agent Assist and telephony) - latest_short (best for Dialogflow non-telephony) - command_and_search (best for very short utterances and commands)"
        },
        "modelVariant": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1InputAudioConfigModelVariant",
          "description": "Optional. Which variant of the Speech model to use."
        },
        "phraseHints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of strings containing words and phrases that the speech recognizer should recognize with higher likelihood. See [the Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more details."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics) for more details."
        },
        "singleUtterance": {
          "type": "boolean",
          "description": "Optional. If `false` (default), recognition does not cease until the client closes the stream. If `true`, the recognizer will detect a single spoken utterance in input audio. Recognition ceases when it detects the audio's voice has stopped or paused. In this case, once a detected intent is received, the client should close the stream and start a new request with a new stream as needed. Note: This setting is relevant only for streaming methods."
        }
      },
      "type": "object",
      "required": [
        "audioEncoding"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1InputAudioConfigAudioEncoding": {
      "description": "Required. Audio encoding of the audio content to process.",
      "type": "string",
      "enum": [
        {
          "name": "AudioEncodingUnspecified",
          "description": "Not specified.",
          "value": "AUDIO_ENCODING_UNSPECIFIED"
        },
        {
          "name": "AudioEncodingLinear16",
          "description": "Uncompressed 16-bit signed little-endian samples (Linear PCM).",
          "value": "AUDIO_ENCODING_LINEAR_16"
        },
        {
          "name": "AudioEncodingFlac",
          "description": "[`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio Codec) is the recommended encoding because it is lossless (therefore recognition is not compromised) and requires only about half the bandwidth of `LINEAR16`. `FLAC` stream encoding supports 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are supported.",
          "value": "AUDIO_ENCODING_FLAC"
        },
        {
          "name": "AudioEncodingMulaw",
          "description": "8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
          "value": "AUDIO_ENCODING_MULAW"
        },
        {
          "name": "AudioEncodingAmr",
          "description": "Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000.",
          "value": "AUDIO_ENCODING_AMR"
        },
        {
          "name": "AudioEncodingAmrWb",
          "description": "Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.",
          "value": "AUDIO_ENCODING_AMR_WB"
        },
        {
          "name": "AudioEncodingOggOpus",
          "description": "Opus encoded audio frames in Ogg container ([OggOpus](https://wiki.xiph.org/OggOpus)). `sample_rate_hertz` must be 16000.",
          "value": "AUDIO_ENCODING_OGG_OPUS"
        },
        {
          "name": "AudioEncodingSpeexWithHeaderByte",
          "description": "Although the use of lossy encodings is not recommended, if a very low bitrate encoding is required, `OGG_OPUS` is highly preferred over Speex encoding. The [Speex](https://speex.org/) encoding supported by Dialogflow API has a header byte in each block, as in MIME type `audio/x-speex-with-header-byte`. It is a variant of the RTP Speex encoding defined in [RFC 5574](https://tools.ietf.org/html/rfc5574). The stream is a sequence of blocks, one block per RTP packet. Each block starts with a byte containing the length of the block, in bytes, followed by one or more frames of Speex data, padded to an integral number of bytes (octets) as specified in RFC 5574. In other words, each RTP header is replaced with a single byte containing the block length. Only Speex wideband is supported. `sample_rate_hertz` must be 16000.",
          "value": "AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1InputAudioConfigModelVariant": {
      "description": "Optional. Which variant of the Speech model to use.",
      "type": "string",
      "enum": [
        {
          "name": "SpeechModelVariantUnspecified",
          "description": "No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.",
          "value": "SPEECH_MODEL_VARIANT_UNSPECIFIED"
        },
        {
          "name": "UseBestAvailable",
          "description": "Use the best available variant of the Speech model that the caller is eligible for. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible for enhanced models.",
          "value": "USE_BEST_AVAILABLE"
        },
        {
          "name": "UseStandard",
          "description": "Use standard model variant even if an enhanced model is available. See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) for details about enhanced models.",
          "value": "USE_STANDARD"
        },
        {
          "name": "UseEnhanced",
          "description": "Use an enhanced model variant: * If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant. The [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) describes which models have enhanced variants. * If the API caller isn't eligible for enhanced models, Dialogflow returns an error. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible.",
          "value": "USE_ENHANCED"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1InputAudioConfigResponse": {
      "description": "Instructs the speech recognizer on how to process the audio content.",
      "properties": {
        "audioEncoding": {
          "type": "string",
          "description": "Audio encoding of the audio content to process."
        },
        "bargeInConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1BargeInConfigResponse",
          "description": "Configuration of barge-in behavior during the streaming of input audio."
        },
        "enableWordInfo": {
          "type": "boolean",
          "description": "Optional. If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult with information about the recognized speech words, e.g. start and end time offsets. If false or unspecified, Speech doesn't return any word-level information."
        },
        "model": {
          "type": "string",
          "description": "Optional. Which Speech model to select for the given request. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then we auto-select a model based on the parameters in the InputAudioConfig. If enhanced speech model is enabled for the agent and an enhanced version of the specified model for the language does not exist, then the speech is recognized using the standard version of the specified model. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details. If you specify a model, the following models typically have the best performance: - phone_call (best for Agent Assist and telephony) - latest_short (best for Dialogflow non-telephony) - command_and_search (best for very short utterances and commands)"
        },
        "modelVariant": {
          "type": "string",
          "description": "Optional. Which variant of the Speech model to use."
        },
        "phraseHints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of strings containing words and phrases that the speech recognizer should recognize with higher likelihood. See [the Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more details."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics) for more details."
        },
        "singleUtterance": {
          "type": "boolean",
          "description": "Optional. If `false` (default), recognition does not cease until the client closes the stream. If `true`, the recognizer will detect a single spoken utterance in input audio. Recognition ceases when it detects the audio's voice has stopped or paused. In this case, once a detected intent is received, the client should close the stream and start a new request with a new stream as needed. Note: This setting is relevant only for streaming methods."
        }
      },
      "type": "object",
      "required": [
        "audioEncoding",
        "bargeInConfig",
        "enableWordInfo",
        "model",
        "modelVariant",
        "phraseHints",
        "sampleRateHertz",
        "singleUtterance"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1Intent": {
      "description": "An intent represents a user's intent to interact with a conversational agent. You can provide information for the Dialogflow API to use to match user input to an intent by adding training phrases (i.e., examples of user input) to your intent.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the intent, unique within the agent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys-contextual\" means the intent is a contextual intent."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentParameter"
          },
          "description": "The collection of parameters associated with the intent."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhrase"
          },
          "description": "The collection of training phrases the agent is trained on to identify the intent."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentInput": {
      "description": "Represents the intent to trigger programmatically rather than as a result of natural language processing.",
      "properties": {
        "intent": {
          "type": "string",
          "description": "The unique identifier of the intent. Format: `projects//locations//agents//intents/`."
        }
      },
      "type": "object",
      "required": [
        "intent"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentInputResponse": {
      "description": "Represents the intent to trigger programmatically rather than as a result of natural language processing.",
      "properties": {
        "intent": {
          "type": "string",
          "description": "The unique identifier of the intent. Format: `projects//locations//agents//intents/`."
        }
      },
      "type": "object",
      "required": [
        "intent"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentParameter": {
      "description": "Represents an intent parameter.",
      "properties": {
        "entityType": {
          "type": "string",
          "description": "The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the parameter. This field is used by training phrases to annotate their parts."
        },
        "isList": {
          "type": "boolean",
          "description": "Indicates whether the parameter represents a list of values."
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled."
        }
      },
      "type": "object",
      "required": [
        "entityType",
        "id"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentParameterResponse": {
      "description": "Represents an intent parameter.",
      "properties": {
        "entityType": {
          "type": "string",
          "description": "The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types."
        },
        "isList": {
          "type": "boolean",
          "description": "Indicates whether the parameter represents a list of values."
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled."
        }
      },
      "type": "object",
      "required": [
        "entityType",
        "isList",
        "redact"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentResponse": {
      "description": "An intent represents a user's intent to interact with a conversational agent. You can provide information for the Dialogflow API to use to match user input to an intent by adding training phrases (i.e., examples of user input) to your intent.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the intent, unique within the agent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys-contextual\" means the intent is a contextual intent."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentParameterResponse"
          },
          "description": "The collection of parameters associated with the intent."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhraseResponse"
          },
          "description": "The collection of training phrases the agent is trained on to identify the intent."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "isFallback",
        "labels",
        "name",
        "parameters",
        "priority",
        "trainingPhrases"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhrase": {
      "description": "Represents an example that the agent is trained on to identify the intent.",
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePart"
          },
          "description": "The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `parameter_id` field is set."
        },
        "repeatCount": {
          "type": "integer",
          "description": "Indicates how many times this example was added to the intent."
        }
      },
      "type": "object",
      "required": [
        "parts"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePart": {
      "description": "Represents a part of a training phrase.",
      "properties": {
        "parameterId": {
          "type": "string",
          "description": "The parameter used to annotate this part of the training phrase. This field is required for annotated parts of the training phrase."
        },
        "text": {
          "type": "string",
          "description": "The text for this part."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePartResponse": {
      "description": "Represents a part of a training phrase.",
      "properties": {
        "parameterId": {
          "type": "string",
          "description": "The parameter used to annotate this part of the training phrase. This field is required for annotated parts of the training phrase."
        },
        "text": {
          "type": "string",
          "description": "The text for this part."
        }
      },
      "type": "object",
      "required": [
        "parameterId",
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhraseResponse": {
      "description": "Represents an example that the agent is trained on to identify the intent.",
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePartResponse"
          },
          "description": "The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `parameter_id` field is set."
        },
        "repeatCount": {
          "type": "integer",
          "description": "Indicates how many times this example was added to the intent."
        }
      },
      "type": "object",
      "required": [
        "parts",
        "repeatCount"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings": {
      "description": "The Knowledge Connector settings for this page or flow. This includes information such as the attached Knowledge Bases, and the way to execute fulfillment.",
      "properties": {
        "dataStoreConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1DataStoreConnection"
          },
          "description": "Optional. List of related data store connections."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Knowledge Connector is enabled or not."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Fulfillment",
          "description": "The fulfillment to be triggered. When the answers from the Knowledge Connector are selected by Dialogflow, you can utitlize the request scoped parameter `$request.knowledge.answers` (contains up to the 5 highest confidence answers) and `$request.knowledge.questions` (contains the corresponding questions) to construct the fulfillment."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettingsResponse": {
      "description": "The Knowledge Connector settings for this page or flow. This includes information such as the attached Knowledge Bases, and the way to execute fulfillment.",
      "properties": {
        "dataStoreConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1DataStoreConnectionResponse"
          },
          "description": "Optional. List of related data store connections."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Knowledge Connector is enabled or not."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentResponse",
          "description": "The fulfillment to be triggered. When the answers from the Knowledge Connector are selected by Dialogflow, you can utitlize the request scoped parameter `$request.knowledge.answers` (contains up to the 5 highest confidence answers) and `$request.knowledge.questions` (contains the corresponding questions) to construct the fulfillment."
        }
      },
      "type": "object",
      "required": [
        "dataStoreConnections",
        "enabled",
        "targetFlow",
        "targetPage",
        "triggerFulfillment"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1NluSettings": {
      "description": "Settings related to NLU.",
      "properties": {
        "classificationThreshold": {
          "type": "number",
          "description": "To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used."
        },
        "modelTrainingMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsModelTrainingMode",
          "description": "Indicates NLU model training mode."
        },
        "modelType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsModelType",
          "description": "Indicates the type of NLU model."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsModelTrainingMode": {
      "description": "Indicates NLU model training mode.",
      "type": "string",
      "enum": [
        {
          "name": "ModelTrainingModeUnspecified",
          "description": "Not specified. `MODEL_TRAINING_MODE_AUTOMATIC` will be used.",
          "value": "MODEL_TRAINING_MODE_UNSPECIFIED"
        },
        {
          "name": "ModelTrainingModeAutomatic",
          "description": "NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.",
          "value": "MODEL_TRAINING_MODE_AUTOMATIC"
        },
        {
          "name": "ModelTrainingModeManual",
          "description": "User needs to manually trigger NLU model training. Best for large flows whose models take long time to train.",
          "value": "MODEL_TRAINING_MODE_MANUAL"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsModelType": {
      "description": "Indicates the type of NLU model.",
      "type": "string",
      "enum": [
        {
          "name": "ModelTypeUnspecified",
          "description": "Not specified. `MODEL_TYPE_STANDARD` will be used.",
          "value": "MODEL_TYPE_UNSPECIFIED"
        },
        {
          "name": "ModelTypeStandard",
          "description": "Use standard NLU model.",
          "value": "MODEL_TYPE_STANDARD"
        },
        {
          "name": "ModelTypeAdvanced",
          "description": "Use advanced NLU model.",
          "value": "MODEL_TYPE_ADVANCED"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsResponse": {
      "description": "Settings related to NLU.",
      "properties": {
        "classificationThreshold": {
          "type": "number",
          "description": "To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used."
        },
        "modelTrainingMode": {
          "type": "string",
          "description": "Indicates NLU model training mode."
        },
        "modelType": {
          "type": "string",
          "description": "Indicates the type of NLU model."
        }
      },
      "type": "object",
      "required": [
        "classificationThreshold",
        "modelTrainingMode",
        "modelType"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1Page": {
      "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages. For each flow, you define many pages, where your combined pages can handle a complete conversation on the topics the flow is designed for. At any given moment, exactly one page is the current page, the current page is considered active, and the flow associated with that page is considered active. Every flow has a special start page. When a flow initially becomes active, the start page page becomes the current page. For each conversational turn, the current page will either stay the same or transition to another page. You configure each page to collect information from the end-user that is relevant for the conversational state represented by the page. For more information, see the [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettings",
          "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the page, unique within the flow."
        },
        "entryFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Fulfillment",
          "description": "The fulfillment to call when the session is entering the page."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandler"
          },
          "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input."
        },
        "form": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Form",
          "description": "The form associated with the page, used for collecting parameters relevant to the page."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings",
          "description": "Optional. Knowledge connector configuration."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`."
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRoute"
          },
          "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1PageResponse": {
      "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages. For each flow, you define many pages, where your combined pages can handle a complete conversation on the topics the flow is designed for. At any given moment, exactly one page is the current page, the current page is considered active, and the flow associated with that page is considered active. Every flow has a special start page. When a flow initially becomes active, the start page page becomes the current page. For each conversational turn, the current page will either stay the same or transition to another page. You configure each page to collect information from the end-user that is relevant for the conversational state represented by the page. For more information, see the [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the page, unique within the flow."
        },
        "entryFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentResponse",
          "description": "The fulfillment to call when the session is entering the page."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandlerResponse"
          },
          "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input."
        },
        "form": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FormResponse",
          "description": "The form associated with the page, used for collecting parameters relevant to the page."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettingsResponse",
          "description": "Optional. Knowledge connector configuration."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`."
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRouteResponse"
          },
          "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "displayName",
        "entryFulfillment",
        "eventHandlers",
        "form",
        "knowledgeConnectorSettings",
        "name",
        "transitionRouteGroups",
        "transitionRoutes"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1QueryInput": {
      "description": "Represents the query input. It can contain one of: 1. A conversational query in the form of text. 2. An intent query that specifies which intent to trigger. 3. Natural language speech audio to be processed. 4. An event to be triggered. 5. DTMF digits to invoke an intent and fill in parameter value.",
      "properties": {
        "audio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AudioInput",
          "description": "The natural language speech audio to be processed."
        },
        "dtmf": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1DtmfInput",
          "description": "The DTMF event to be handled."
        },
        "event": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventInput",
          "description": "The event to be triggered."
        },
        "intent": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentInput",
          "description": "The intent to be triggered."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the input. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TextInput",
          "description": "The natural language text to be processed."
        }
      },
      "type": "object",
      "required": [
        "languageCode"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1QueryInputResponse": {
      "description": "Represents the query input. It can contain one of: 1. A conversational query in the form of text. 2. An intent query that specifies which intent to trigger. 3. Natural language speech audio to be processed. 4. An event to be triggered. 5. DTMF digits to invoke an intent and fill in parameter value.",
      "properties": {
        "audio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AudioInputResponse",
          "description": "The natural language speech audio to be processed."
        },
        "dtmf": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1DtmfInputResponse",
          "description": "The DTMF event to be handled."
        },
        "event": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventInputResponse",
          "description": "The event to be triggered."
        },
        "intent": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentInputResponse",
          "description": "The intent to be triggered."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the input. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TextInputResponse",
          "description": "The natural language text to be processed."
        }
      },
      "type": "object",
      "required": [
        "audio",
        "dtmf",
        "event",
        "intent",
        "languageCode",
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessage": {
      "description": "Represents a response message that can be returned by a conversational agent. Response messages are also used for output audio synthesis. The approach is as follows: * If at least one OutputAudioText response is present, then all OutputAudioText responses are linearly concatenated, and the result is used for output audio synthesis. * If the OutputAudioText responses are a mixture of text and SSML, then the concatenated result is treated as SSML; otherwise, the result is treated as either text or SSML as appropriate. The agent designer should ideally use either text or SSML consistently throughout the bot design. * Otherwise, all Text responses are linearly concatenated, and the result is used for output audio synthesis. This approach allows for more sophisticated user experience scenarios, where the text displayed to the user may differ from what is heard.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned."
        },
        "conversationSuccess": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccess",
          "description": "Indicates that the conversation succeeded."
        },
        "knowledgeInfoCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCard",
          "description": "Represents info card for knowledge answers, to be better rendered in Dialogflow Messenger."
        },
        "liveAgentHandoff": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoff",
          "description": "Hands off conversation to a human agent."
        },
        "outputAudioText": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioText",
          "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Returns a response containing a custom, platform-specific payload."
        },
        "playAudio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudio",
          "description": "Signal that the client should play an audio clip hosted at a client-specific URI. Dialogflow uses this to construct mixed_audio. However, Dialogflow itself does not try to read or process the URI in any way."
        },
        "telephonyTransferCall": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCall",
          "description": "A signal that the client should transfer the phone call connected to this agent to a third-party endpoint."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageText",
          "description": "Returns a text response."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccess": {
      "description": "Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates that the conversation succeeded. * In a webhook response when you determine that you handled the customer issue.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata. Dialogflow doesn't impose any structure on this."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccessResponse": {
      "description": "Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates that the conversation succeeded. * In a webhook response when you determine that you handled the customer issue.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata. Dialogflow doesn't impose any structure on this."
        }
      },
      "type": "object",
      "required": [
        "metadata"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageEndInteractionResponse": {
      "description": "Indicates that interaction with the Dialogflow agent has ended. This message is generated by Dialogflow only and not supposed to be defined by the user.",
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCard": {
      "description": "Represents info card response. If the response contains generative knowledge prediction, Dialogflow will return a payload with Infobot Messenger compatible info card. Otherwise, the info card response is skipped.",
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCardResponse": {
      "description": "Represents info card response. If the response contains generative knowledge prediction, Dialogflow will return a payload with Infobot Messenger compatible info card. Otherwise, the info card response is skipped.",
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoff": {
      "description": "Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates something went extremely wrong in the conversation. * In a webhook response when you determine that the customer issue can only be handled by a human.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata for your handoff procedure. Dialogflow doesn't impose any structure on this."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoffResponse": {
      "description": "Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates something went extremely wrong in the conversation. * In a webhook response when you determine that the customer issue can only be handled by a human.",
      "properties": {
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata for your handoff procedure. Dialogflow doesn't impose any structure on this."
        }
      },
      "type": "object",
      "required": [
        "metadata"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioResponse": {
      "description": "Represents an audio message that is composed of both segments synthesized from the Dialogflow agent prompts and ones hosted externally at the specified URIs. The external URIs are specified via play_audio. This message is generated by Dialogflow only and not supposed to be defined by the user.",
      "properties": {
        "segments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioSegmentResponse"
          },
          "description": "Segments this audio response is composed of."
        }
      },
      "type": "object",
      "required": [
        "segments"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioSegmentResponse": {
      "description": "Represents one segment of audio.",
      "properties": {
        "allowPlaybackInterruption": {
          "type": "boolean",
          "description": "Whether the playback of this segment can be interrupted by the end user's speech and the client should then start the next Dialogflow request."
        },
        "audio": {
          "type": "string",
          "description": "Raw audio synthesized from the Dialogflow agent's response using the output config specified in the request."
        },
        "uri": {
          "type": "string",
          "description": "Client-specific URI that points to an audio clip accessible to the client. Dialogflow does not impose any validation on it."
        }
      },
      "type": "object",
      "required": [
        "allowPlaybackInterruption",
        "audio",
        "uri"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioText": {
      "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message.",
      "properties": {
        "ssml": {
          "type": "string",
          "description": "The SSML text to be synthesized. For more information, see [SSML](/speech/text-to-speech/docs/ssml)."
        },
        "text": {
          "type": "string",
          "description": "The raw text to be synthesized."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioTextResponse": {
      "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message.",
      "properties": {
        "allowPlaybackInterruption": {
          "type": "boolean",
          "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request."
        },
        "ssml": {
          "type": "string",
          "description": "The SSML text to be synthesized. For more information, see [SSML](/speech/text-to-speech/docs/ssml)."
        },
        "text": {
          "type": "string",
          "description": "The raw text to be synthesized."
        }
      },
      "type": "object",
      "required": [
        "allowPlaybackInterruption",
        "ssml",
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudio": {
      "description": "Specifies an audio clip to be played by the client as part of the response.",
      "properties": {
        "audioUri": {
          "type": "string",
          "description": "URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it."
        }
      },
      "type": "object",
      "required": [
        "audioUri"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudioResponse": {
      "description": "Specifies an audio clip to be played by the client as part of the response.",
      "properties": {
        "allowPlaybackInterruption": {
          "type": "boolean",
          "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request."
        },
        "audioUri": {
          "type": "string",
          "description": "URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it."
        }
      },
      "type": "object",
      "required": [
        "allowPlaybackInterruption",
        "audioUri"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageResponse": {
      "description": "Represents a response message that can be returned by a conversational agent. Response messages are also used for output audio synthesis. The approach is as follows: * If at least one OutputAudioText response is present, then all OutputAudioText responses are linearly concatenated, and the result is used for output audio synthesis. * If the OutputAudioText responses are a mixture of text and SSML, then the concatenated result is treated as SSML; otherwise, the result is treated as either text or SSML as appropriate. The agent designer should ideally use either text or SSML consistently throughout the bot design. * Otherwise, all Text responses are linearly concatenated, and the result is used for output audio synthesis. This approach allows for more sophisticated user experience scenarios, where the text displayed to the user may differ from what is heard.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned."
        },
        "conversationSuccess": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccessResponse",
          "description": "Indicates that the conversation succeeded."
        },
        "endInteraction": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageEndInteractionResponse",
          "description": "A signal that indicates the interaction with the Dialogflow agent has ended. This message is generated by Dialogflow only when the conversation reaches `END_SESSION` page. It is not supposed to be defined by the user. It's guaranteed that there is at most one such message in each response."
        },
        "knowledgeInfoCard": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCardResponse",
          "description": "Represents info card for knowledge answers, to be better rendered in Dialogflow Messenger."
        },
        "liveAgentHandoff": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoffResponse",
          "description": "Hands off conversation to a human agent."
        },
        "mixedAudio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioResponse",
          "description": "An audio response message composed of both the synthesized Dialogflow agent responses and responses defined via play_audio. This message is generated by Dialogflow only and not supposed to be defined by the user."
        },
        "outputAudioText": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioTextResponse",
          "description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message."
        },
        "payload": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Returns a response containing a custom, platform-specific payload."
        },
        "playAudio": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudioResponse",
          "description": "Signal that the client should play an audio clip hosted at a client-specific URI. Dialogflow uses this to construct mixed_audio. However, Dialogflow itself does not try to read or process the URI in any way."
        },
        "telephonyTransferCall": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCallResponse",
          "description": "A signal that the client should transfer the phone call connected to this agent to a third-party endpoint."
        },
        "text": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageTextResponse",
          "description": "Returns a text response."
        }
      },
      "type": "object",
      "required": [
        "channel",
        "conversationSuccess",
        "endInteraction",
        "knowledgeInfoCard",
        "liveAgentHandoff",
        "mixedAudio",
        "outputAudioText",
        "payload",
        "playAudio",
        "telephonyTransferCall",
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCall": {
      "description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164)."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCallResponse": {
      "description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.",
      "properties": {
        "phoneNumber": {
          "type": "string",
          "description": "Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164)."
        }
      },
      "type": "object",
      "required": [
        "phoneNumber"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageText": {
      "description": "The text response message.",
      "properties": {
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of text responses."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1ResponseMessageTextResponse": {
      "description": "The text response message.",
      "properties": {
        "allowPlaybackInterruption": {
          "type": "boolean",
          "description": "Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request."
        },
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of text responses."
        }
      },
      "type": "object",
      "required": [
        "allowPlaybackInterruption",
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfig": {
      "description": "The configuration for auto rollout.",
      "properties": {
        "failureCondition": {
          "type": "string",
          "description": "The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. \"containment_rate < 10% OR average_turn_count < 3\". See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "rolloutCondition": {
          "type": "string",
          "description": "The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. \"containment_rate > 60% AND callback_rate < 20%\". See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "rolloutSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfigRolloutStep"
          },
          "description": "Steps to roll out a flow version. Steps should be sorted by percentage in ascending order."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfigResponse": {
      "description": "The configuration for auto rollout.",
      "properties": {
        "failureCondition": {
          "type": "string",
          "description": "The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. \"containment_rate < 10% OR average_turn_count < 3\". See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "rolloutCondition": {
          "type": "string",
          "description": "The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. \"containment_rate > 60% AND callback_rate < 20%\". See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition)."
        },
        "rolloutSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfigRolloutStepResponse"
          },
          "description": "Steps to roll out a flow version. Steps should be sorted by percentage in ascending order."
        }
      },
      "type": "object",
      "required": [
        "failureCondition",
        "rolloutCondition",
        "rolloutSteps"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfigRolloutStep": {
      "description": "A single rollout step with specified traffic allocation.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name of the rollout step;"
        },
        "minDuration": {
          "type": "string",
          "description": "The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour."
        },
        "trafficPercent": {
          "type": "integer",
          "description": "The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%]."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfigRolloutStepResponse": {
      "description": "A single rollout step with specified traffic allocation.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The name of the rollout step;"
        },
        "minDuration": {
          "type": "string",
          "description": "The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour."
        },
        "trafficPercent": {
          "type": "integer",
          "description": "The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%]."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "minDuration",
        "trafficPercent"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1RolloutState": {
      "description": "State of the auto-rollout process.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "Start time of the current step."
        },
        "step": {
          "type": "string",
          "description": "Display name of the current auto rollout step."
        },
        "stepIndex": {
          "type": "integer",
          "description": "Index of the current step in the auto rollout steps list."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1RolloutStateResponse": {
      "description": "State of the auto-rollout process.",
      "properties": {
        "startTime": {
          "type": "string",
          "description": "Start time of the current step."
        },
        "step": {
          "type": "string",
          "description": "Display name of the current auto rollout step."
        },
        "stepIndex": {
          "type": "integer",
          "description": "Index of the current step in the auto rollout steps list."
        }
      },
      "type": "object",
      "required": [
        "startTime",
        "step",
        "stepIndex"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsAudioExportSettings": {
      "description": "Settings for exporting audio.",
      "properties": {
        "audioExportPattern": {
          "type": "string",
          "description": "Filename pattern for exported audio."
        },
        "audioFormat": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsAudioExportSettingsAudioFormat",
          "description": "File format for exported audio file. Currently only in telephony recordings."
        },
        "enableAudioRedaction": {
          "type": "boolean",
          "description": "Enable audio redaction if it is true."
        },
        "gcsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket to export audio record to. Setting this field would grant the Storage Object Creator role to the Dialogflow Service Agent. API caller that tries to modify this field should have the permission of storage.buckets.setIamPolicy."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsAudioExportSettingsAudioFormat": {
      "description": "File format for exported audio file. Currently only in telephony recordings.",
      "type": "string",
      "enum": [
        {
          "name": "AudioFormatUnspecified",
          "description": "Unspecified. Do not use.",
          "value": "AUDIO_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Mulaw",
          "description": "G.711 mu-law PCM with 8kHz sample rate.",
          "value": "MULAW"
        },
        {
          "name": "Mp3",
          "description": "MP3 file format.",
          "value": "MP3"
        },
        {
          "name": "Ogg",
          "description": "OGG Vorbis.",
          "value": "OGG"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsAudioExportSettingsResponse": {
      "description": "Settings for exporting audio.",
      "properties": {
        "audioExportPattern": {
          "type": "string",
          "description": "Filename pattern for exported audio."
        },
        "audioFormat": {
          "type": "string",
          "description": "File format for exported audio file. Currently only in telephony recordings."
        },
        "enableAudioRedaction": {
          "type": "boolean",
          "description": "Enable audio redaction if it is true."
        },
        "gcsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket to export audio record to. Setting this field would grant the Storage Object Creator role to the Dialogflow Service Agent. API caller that tries to modify this field should have the permission of storage.buckets.setIamPolicy."
        }
      },
      "type": "object",
      "required": [
        "audioExportPattern",
        "audioFormat",
        "enableAudioRedaction",
        "gcsBucket"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsInsightsExportSettings": {
      "description": "Settings for exporting conversations to [Insights](https://cloud.google.com/contact-center/insights/docs).",
      "properties": {
        "enableInsightsExport": {
          "type": "boolean",
          "description": "If enabled, we will automatically exports conversations to Insights and Insights runs its analyzers."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsInsightsExportSettingsResponse": {
      "description": "Settings for exporting conversations to [Insights](https://cloud.google.com/contact-center/insights/docs).",
      "properties": {
        "enableInsightsExport": {
          "type": "boolean",
          "description": "If enabled, we will automatically exports conversations to Insights and Insights runs its analyzers."
        }
      },
      "type": "object",
      "required": [
        "enableInsightsExport"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1SpeechToTextSettings": {
      "description": "Settings related to speech recognition.",
      "properties": {
        "enableSpeechAdaptation": {
          "type": "boolean",
          "description": "Whether to use speech adaptation for speech recognition."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1SpeechToTextSettingsResponse": {
      "description": "Settings related to speech recognition.",
      "properties": {
        "enableSpeechAdaptation": {
          "type": "boolean",
          "description": "Whether to use speech adaptation for speech recognition."
        }
      },
      "type": "object",
      "required": [
        "enableSpeechAdaptation"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TestCaseResult": {
      "description": "Represents a result from running a test case in an agent environment.",
      "properties": {
        "conversationTurns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurn"
          },
          "description": "The conversation turns uttered during the test case replay in chronological order."
        },
        "environment": {
          "type": "string",
          "description": "Environment where the test was run. If not set, it indicates the draft environment."
        },
        "name": {
          "type": "string",
          "description": "The resource name for the test case result. Format: `projects//locations//agents//testCases/ /results/`."
        },
        "testResult": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TestCaseResultTestResult",
          "description": "Whether the test case passed in the agent environment."
        },
        "testTime": {
          "type": "string",
          "description": "The time that the test was run."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TestCaseResultResponse": {
      "description": "Represents a result from running a test case in an agent environment.",
      "properties": {
        "conversationTurns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnResponse"
          },
          "description": "The conversation turns uttered during the test case replay in chronological order."
        },
        "environment": {
          "type": "string",
          "description": "Environment where the test was run. If not set, it indicates the draft environment."
        },
        "name": {
          "type": "string",
          "description": "The resource name for the test case result. Format: `projects//locations//agents//testCases/ /results/`."
        },
        "testResult": {
          "type": "string",
          "description": "Whether the test case passed in the agent environment."
        },
        "testTime": {
          "type": "string",
          "description": "The time that the test was run."
        }
      },
      "type": "object",
      "required": [
        "conversationTurns",
        "environment",
        "name",
        "testResult",
        "testTime"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TestCaseResultTestResult": {
      "description": "Whether the test case passed in the agent environment.",
      "type": "string",
      "enum": [
        {
          "name": "TestResultUnspecified",
          "description": "Not specified. Should never be used.",
          "value": "TEST_RESULT_UNSPECIFIED"
        },
        {
          "name": "Passed",
          "description": "The test passed.",
          "value": "PASSED"
        },
        {
          "name": "Failed",
          "description": "The test did not pass.",
          "value": "FAILED"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TestConfig": {
      "description": "Represents configurations for a test case.",
      "properties": {
        "flow": {
          "type": "string",
          "description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow."
        },
        "page": {
          "type": "string",
          "description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow."
        },
        "trackingParameters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Session parameters to be compared when calculating differences."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TestConfigResponse": {
      "description": "Represents configurations for a test case.",
      "properties": {
        "flow": {
          "type": "string",
          "description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow."
        },
        "page": {
          "type": "string",
          "description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If both are set, `page` takes precedence over `flow`. If neither is set, the test case will start with start page on the default start flow."
        },
        "trackingParameters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Session parameters to be compared when calculating differences."
        }
      },
      "type": "object",
      "required": [
        "flow",
        "page",
        "trackingParameters"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TestRunDifferenceResponse": {
      "description": "The description of differences between original and replayed agent output.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human readable description of the diff, showing the actual output vs expected output."
        },
        "type": {
          "type": "string",
          "description": "The type of diff."
        }
      },
      "type": "object",
      "required": [
        "description",
        "type"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TextInput": {
      "description": "Represents the natural language text to be processed.",
      "properties": {
        "text": {
          "type": "string",
          "description": "The UTF-8 encoded natural language text to be processed. Text length must not exceed 256 characters."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TextInputResponse": {
      "description": "Represents the natural language text to be processed.",
      "properties": {
        "text": {
          "type": "string",
          "description": "The UTF-8 encoded natural language text to be processed. Text length must not exceed 256 characters."
        }
      },
      "type": "object",
      "required": [
        "text"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TextToSpeechSettings": {
      "description": "Settings related to speech synthesizing.",
      "properties": {
        "synthesizeSpeechConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/cx/docs/reference/language) to SynthesizeSpeechConfig. These settings affect: - The [phone gateway](https://cloud.google.com/dialogflow/cx/docs/concept/integration/phone-gateway) synthesize configuration set via Agent.text_to_speech_settings. - How speech is synthesized when invoking session APIs. Agent.text_to_speech_settings only applies if OutputAudioConfig.synthesize_speech_config is not specified."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TextToSpeechSettingsResponse": {
      "description": "Settings related to speech synthesizing.",
      "properties": {
        "synthesizeSpeechConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/cx/docs/reference/language) to SynthesizeSpeechConfig. These settings affect: - The [phone gateway](https://cloud.google.com/dialogflow/cx/docs/concept/integration/phone-gateway) synthesize configuration set via Agent.text_to_speech_settings. - How speech is synthesized when invoking session APIs. Agent.text_to_speech_settings only applies if OutputAudioConfig.synthesize_speech_config is not specified."
        }
      },
      "type": "object",
      "required": [
        "synthesizeSpeechConfigs"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TransitionRoute": {
      "description": "A transition route specifies a intent that can be matched and/or a data condition that can be evaluated during a session. When a specified transition is matched, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the transition, it will be called. * If there is a `target_page` associated with the transition, the session will transition into the specified page. * If there is a `target_flow` associated with the transition, the session will transition into the specified flow.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "The condition to evaluate against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the transition route. The maximum length is 500 characters."
        },
        "intent": {
          "type": "string",
          "description": "The unique identifier of an Intent. Format: `projects//locations//agents//intents/`. Indicates that the transition can only happen when the given intent is matched. At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Fulfillment",
          "description": "The fulfillment to call when the condition is satisfied. At least one of `trigger_fulfillment` and `target` must be specified. When both are defined, `trigger_fulfillment` is executed first."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1TransitionRouteResponse": {
      "description": "A transition route specifies a intent that can be matched and/or a data condition that can be evaluated during a session. When a specified transition is matched, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the transition, it will be called. * If there is a `target_page` associated with the transition, the session will transition into the specified page. * If there is a `target_flow` associated with the transition, the session will transition into the specified flow.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "The condition to evaluate against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the transition route. The maximum length is 500 characters."
        },
        "intent": {
          "type": "string",
          "description": "The unique identifier of an Intent. Format: `projects//locations//agents//intents/`. Indicates that the transition can only happen when the given intent is matched. At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this transition route."
        },
        "targetFlow": {
          "type": "string",
          "description": "The target flow to transition to. Format: `projects//locations//agents//flows/`."
        },
        "targetPage": {
          "type": "string",
          "description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`."
        },
        "triggerFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentResponse",
          "description": "The fulfillment to call when the condition is satisfied. At least one of `trigger_fulfillment` and `target` must be specified. When both are defined, `trigger_fulfillment` is executed first."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "description",
        "intent",
        "name",
        "targetFlow",
        "targetPage",
        "triggerFulfillment"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1VariantsHistory": {
      "description": "The history of variants update.",
      "properties": {
        "updateTime": {
          "type": "string",
          "description": "Update time of the variants."
        },
        "versionVariants": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VersionVariants",
          "description": "The flow versions as the variants."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1VariantsHistoryResponse": {
      "description": "The history of variants update.",
      "properties": {
        "updateTime": {
          "type": "string",
          "description": "Update time of the variants."
        },
        "versionVariants": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VersionVariantsResponse",
          "description": "The flow versions as the variants."
        }
      },
      "type": "object",
      "required": [
        "updateTime",
        "versionVariants"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1VersionVariants": {
      "description": "A list of flow version variants.",
      "properties": {
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VersionVariantsVariant"
          },
          "description": "A list of flow version variants."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1VersionVariantsResponse": {
      "description": "A list of flow version variants.",
      "properties": {
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VersionVariantsVariantResponse"
          },
          "description": "A list of flow version variants."
        }
      },
      "type": "object",
      "required": [
        "variants"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1VersionVariantsVariant": {
      "description": "A single flow version with specified traffic allocation.",
      "properties": {
        "isControlGroup": {
          "type": "boolean",
          "description": "Whether the variant is for the control group."
        },
        "trafficAllocation": {
          "type": "number",
          "description": "Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0."
        },
        "version": {
          "type": "string",
          "description": "The name of the flow version. Format: `projects//locations//agents//flows//versions/`."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1VersionVariantsVariantResponse": {
      "description": "A single flow version with specified traffic allocation.",
      "properties": {
        "isControlGroup": {
          "type": "boolean",
          "description": "Whether the variant is for the control group."
        },
        "trafficAllocation": {
          "type": "number",
          "description": "Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0."
        },
        "version": {
          "type": "string",
          "description": "The name of the flow version. Format: `projects//locations//agents//flows//versions/`."
        }
      },
      "type": "object",
      "required": [
        "isControlGroup",
        "trafficAllocation",
        "version"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1Webhook": {
      "description": "Webhooks host the developer's business logic. During a session, webhooks allow the developer to use the data extracted by Dialogflow's natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Indicates whether the webhook is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the webhook, unique within the agent."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebService",
          "description": "Configuration for a generic web service."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`."
        },
        "serviceDirectory": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfig",
          "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
        },
        "timeout": {
          "type": "string",
          "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds."
        }
      },
      "type": "object",
      "required": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebService": {
      "description": "Represents configuration for a generic web service.",
      "properties": {
        "allowedCaCerts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Specifies a list of allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, Dialogflow will use Google's default trust store to verify certificates. N.B. Make sure the HTTPS server certificates are signed with \"subject alt name\". For instance a certificate can be self-signed using the following command, ``` openssl x509 -req -days 200 -in example.com.csr \\ -signkey example.com.key \\ -out example.com.crt \\ -extfile <(printf \"\\nsubjectAltName='DNS:www.example.com'\") ```"
        },
        "httpMethod": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceHttpMethod",
          "description": "Optional. HTTP method for the flexible webhook calls. Standard webhook always uses POST."
        },
        "parameterMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Maps the values extracted from specific fields of the flexible webhook response into session parameters. - Key: session parameter name - Value: field path in the webhook response"
        },
        "password": {
          "type": "string",
          "description": "The password for HTTP Basic authentication."
        },
        "requestBody": {
          "type": "string",
          "description": "Optional. Defines a custom JSON object as request body to send to flexible webhook."
        },
        "requestHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HTTP request headers to send together with webhook requests."
        },
        "uri": {
          "type": "string",
          "description": "The webhook URI for receiving POST requests. It must use https protocol."
        },
        "username": {
          "type": "string",
          "description": "The user name for HTTP Basic authentication."
        },
        "webhookType": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceWebhookType",
          "description": "Optional. Type of the webhook."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceHttpMethod": {
      "description": "Optional. HTTP method for the flexible webhook calls. Standard webhook always uses POST.",
      "type": "string",
      "enum": [
        {
          "name": "HttpMethodUnspecified",
          "description": "HTTP method not specified.",
          "value": "HTTP_METHOD_UNSPECIFIED"
        },
        {
          "name": "Post",
          "description": "HTTP POST Method.",
          "value": "POST"
        },
        {
          "name": "Get",
          "description": "HTTP GET Method.",
          "value": "GET"
        },
        {
          "name": "Head",
          "description": "HTTP HEAD Method.",
          "value": "HEAD"
        },
        {
          "name": "Put",
          "description": "HTTP PUT Method.",
          "value": "PUT"
        },
        {
          "name": "Delete",
          "description": "HTTP DELETE Method.",
          "value": "DELETE"
        },
        {
          "name": "Patch",
          "description": "HTTP PATCH Method.",
          "value": "PATCH"
        },
        {
          "name": "Options",
          "description": "HTTP OPTIONS Method.",
          "value": "OPTIONS"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceResponse": {
      "description": "Represents configuration for a generic web service.",
      "properties": {
        "allowedCaCerts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Specifies a list of allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, Dialogflow will use Google's default trust store to verify certificates. N.B. Make sure the HTTPS server certificates are signed with \"subject alt name\". For instance a certificate can be self-signed using the following command, ``` openssl x509 -req -days 200 -in example.com.csr \\ -signkey example.com.key \\ -out example.com.crt \\ -extfile <(printf \"\\nsubjectAltName='DNS:www.example.com'\") ```"
        },
        "httpMethod": {
          "type": "string",
          "description": "Optional. HTTP method for the flexible webhook calls. Standard webhook always uses POST."
        },
        "parameterMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Maps the values extracted from specific fields of the flexible webhook response into session parameters. - Key: session parameter name - Value: field path in the webhook response"
        },
        "password": {
          "type": "string",
          "description": "The password for HTTP Basic authentication."
        },
        "requestBody": {
          "type": "string",
          "description": "Optional. Defines a custom JSON object as request body to send to flexible webhook."
        },
        "requestHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HTTP request headers to send together with webhook requests."
        },
        "uri": {
          "type": "string",
          "description": "The webhook URI for receiving POST requests. It must use https protocol."
        },
        "username": {
          "type": "string",
          "description": "The user name for HTTP Basic authentication."
        },
        "webhookType": {
          "type": "string",
          "description": "Optional. Type of the webhook."
        }
      },
      "type": "object",
      "required": [
        "allowedCaCerts",
        "httpMethod",
        "parameterMapping",
        "password",
        "requestBody",
        "requestHeaders",
        "uri",
        "username",
        "webhookType"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceWebhookType": {
      "description": "Optional. Type of the webhook.",
      "type": "string",
      "enum": [
        {
          "name": "WebhookTypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "WEBHOOK_TYPE_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "Represents a standard webhook.",
          "value": "STANDARD"
        },
        {
          "name": "Flexible",
          "description": "Represents a flexible webhook.",
          "value": "FLEXIBLE"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1WebhookResponse": {
      "description": "Webhooks host the developer's business logic. During a session, webhooks allow the developer to use the data extracted by Dialogflow's natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "Indicates whether the webhook is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the webhook, unique within the agent."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceResponse",
          "description": "Configuration for a generic web service."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`."
        },
        "serviceDirectory": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfigResponse",
          "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
        },
        "timeout": {
          "type": "string",
          "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds."
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "displayName",
        "genericWebService",
        "name",
        "serviceDirectory",
        "timeout"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfig": {
      "description": "Represents configuration for a [Service Directory](https://cloud.google.com/service-directory) service.",
      "properties": {
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebService",
          "description": "Generic Service configuration of this webhook."
        },
        "service": {
          "type": "string",
          "description": "The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects//locations//namespaces//services/`. `Location ID` of the service directory must be the same as the location of the agent."
        }
      },
      "type": "object",
      "required": [
        "service"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfigResponse": {
      "description": "Represents configuration for a [Service Directory](https://cloud.google.com/service-directory) service.",
      "properties": {
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceResponse",
          "description": "Generic Service configuration of this webhook."
        },
        "service": {
          "type": "string",
          "description": "The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects//locations//namespaces//services/`. `Location ID` of the service directory must be the same as the location of the agent."
        }
      },
      "type": "object",
      "required": [
        "genericWebService",
        "service"
      ]
    },
    "google-native:dialogflow/v3beta1:GoogleRpcStatus": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object"
    },
    "google-native:dialogflow/v3beta1:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:dialogflow/v3beta1:SecuritySettingPurgeDataTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "PurgeDataTypeUnspecified",
          "description": "Unspecified. Do not use.",
          "value": "PURGE_DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "DialogflowHistory",
          "description": "Dialogflow history. This does not include Cloud logging, which is owned by the user - not Dialogflow.",
          "value": "DIALOGFLOW_HISTORY"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:SecuritySettingRedactionScope": {
      "description": "Defines the data for which Dialogflow applies redaction. Dialogflow does not redact data that it does not have access to – for example, Cloud logging.",
      "type": "string",
      "enum": [
        {
          "name": "RedactionScopeUnspecified",
          "description": "Don't redact any kind of data.",
          "value": "REDACTION_SCOPE_UNSPECIFIED"
        },
        {
          "name": "RedactDiskStorage",
          "description": "On data to be written to disk or similar devices that are capable of holding data even if power is disconnected. This includes data that are temporarily saved on disk.",
          "value": "REDACT_DISK_STORAGE"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:SecuritySettingRedactionStrategy": {
      "description": "Strategy that defines how we do redaction.",
      "type": "string",
      "enum": [
        {
          "name": "RedactionStrategyUnspecified",
          "description": "Do not redact.",
          "value": "REDACTION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "RedactWithService",
          "description": "Call redaction service to clean up the data to be persisted.",
          "value": "REDACT_WITH_SERVICE"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:SecuritySettingRetentionStrategy": {
      "description": "Specifies the retention behavior defined by SecuritySettings.RetentionStrategy.",
      "type": "string",
      "enum": [
        {
          "name": "RetentionStrategyUnspecified",
          "description": "Retains the persisted data with Dialogflow's internal default 365d TTLs.",
          "value": "RETENTION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "RemoveAfterConversation",
          "description": "Removes data when the conversation ends. If there is no Conversation explicitly established, a default conversation ends when the corresponding Dialogflow session ends.",
          "value": "REMOVE_AFTER_CONVERSATION"
        }
      ]
    },
    "google-native:dialogflow/v3beta1:SessionEntityTypeEntityOverrideMode": {
      "description": "Required. Indicates whether the additional data should override or supplement the custom entity type definition.",
      "type": "string",
      "enum": [
        {
          "name": "EntityOverrideModeUnspecified",
          "description": "Not specified. This value should be never used.",
          "value": "ENTITY_OVERRIDE_MODE_UNSPECIFIED"
        },
        {
          "name": "EntityOverrideModeOverride",
          "description": "The collection of session entities overrides the collection of entities in the corresponding custom entity type.",
          "value": "ENTITY_OVERRIDE_MODE_OVERRIDE"
        },
        {
          "name": "EntityOverrideModeSupplement",
          "description": "The collection of session entities extends the collection of entities in the corresponding custom entity type. Note: Even in this override mode calls to `ListSessionEntityTypes`, `GetSessionEntityType`, `CreateSessionEntityType` and `UpdateSessionEntityType` only return the additional entities added in this session entity type. If you want to get the supplemented list, please call EntityTypes.GetEntityType on the custom entity type and merge.",
          "value": "ENTITY_OVERRIDE_MODE_SUPPLEMENT"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:ConversationState": {
      "description": "The state of the Conversation.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "InProgress",
          "description": "Conversation is currently open.",
          "value": "IN_PROGRESS"
        },
        {
          "name": "Completed",
          "description": "Conversation has been completed.",
          "value": "COMPLETED"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:DataStoreContentConfig": {
      "description": "Immutable. The content config of the data store. If this field is unset, the server behavior defaults to ContentConfig.NO_CONTENT.",
      "type": "string",
      "enum": [
        {
          "name": "ContentConfigUnspecified",
          "description": "Default value.",
          "value": "CONTENT_CONFIG_UNSPECIFIED"
        },
        {
          "name": "NoContent",
          "description": "Only contains documents without any Document.content.",
          "value": "NO_CONTENT"
        },
        {
          "name": "ContentRequired",
          "description": "Only contains documents with Document.content.",
          "value": "CONTENT_REQUIRED"
        },
        {
          "name": "PublicWebsite",
          "description": "The data store is used for public website search.",
          "value": "PUBLIC_WEBSITE"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:DataStoreIndustryVertical": {
      "description": "Immutable. The industry vertical that the data store registers.",
      "type": "string",
      "enum": [
        {
          "name": "IndustryVerticalUnspecified",
          "description": "Value used when unset.",
          "value": "INDUSTRY_VERTICAL_UNSPECIFIED"
        },
        {
          "name": "Generic",
          "description": "The generic vertical for documents that are not specific to any industry vertical.",
          "value": "GENERIC"
        },
        {
          "name": "Media",
          "description": "The media industry vertical.",
          "value": "MEDIA"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:DataStoreSolutionTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "SolutionTypeUnspecified",
          "description": "Default value.",
          "value": "SOLUTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SolutionTypeRecommendation",
          "description": "Used for Recommendations AI.",
          "value": "SOLUTION_TYPE_RECOMMENDATION"
        },
        {
          "name": "SolutionTypeSearch",
          "description": "Used for Discovery Search.",
          "value": "SOLUTION_TYPE_SEARCH"
        },
        {
          "name": "SolutionTypeChat",
          "description": "Used for use cases related to the Generative AI agent.",
          "value": "SOLUTION_TYPE_CHAT"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:EngineIndustryVertical": {
      "description": "The industry vertical that the engine registers. The restriction of the Engine industry vertical is based on DataStore: If unspecified, default to `GENERIC`. Vertical on Engine has to match vertical of the DataStore liniked to the engine.",
      "type": "string",
      "enum": [
        {
          "name": "IndustryVerticalUnspecified",
          "description": "Value used when unset.",
          "value": "INDUSTRY_VERTICAL_UNSPECIFIED"
        },
        {
          "name": "Generic",
          "description": "The generic vertical for documents that are not specific to any industry vertical.",
          "value": "GENERIC"
        },
        {
          "name": "Media",
          "description": "The media industry vertical.",
          "value": "MEDIA"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:EngineSolutionType": {
      "description": "Required. The solutions of the engine.",
      "type": "string",
      "enum": [
        {
          "name": "SolutionTypeUnspecified",
          "description": "Default value.",
          "value": "SOLUTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SolutionTypeRecommendation",
          "description": "Used for Recommendations AI.",
          "value": "SOLUTION_TYPE_RECOMMENDATION"
        },
        {
          "name": "SolutionTypeSearch",
          "description": "Used for Discovery Search.",
          "value": "SOLUTION_TYPE_SEARCH"
        },
        {
          "name": "SolutionTypeChat",
          "description": "Used for use cases related to the Generative AI agent.",
          "value": "SOLUTION_TYPE_CHAT"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaConversationContext": {
      "description": "Defines context of the conversation",
      "properties": {
        "activeDocument": {
          "type": "string",
          "description": "The current active document the user opened. It contains the document resource reference."
        },
        "contextDocuments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The current list of documents the user is seeing. It contains the document resource references."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaConversationContextResponse": {
      "description": "Defines context of the conversation",
      "properties": {
        "activeDocument": {
          "type": "string",
          "description": "The current active document the user opened. It contains the document resource reference."
        },
        "contextDocuments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The current list of documents the user is seeing. It contains the document resource references."
        }
      },
      "type": "object",
      "required": [
        "activeDocument",
        "contextDocuments"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaConversationMessage": {
      "description": "Defines a conversation message.",
      "properties": {
        "reply": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaReply",
          "description": "Search reply."
        },
        "userInput": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaTextInput",
          "description": "User text input."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaConversationMessageResponse": {
      "description": "Defines a conversation message.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Message creation timestamp."
        },
        "reply": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaReplyResponse",
          "description": "Search reply."
        },
        "userInput": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaTextInputResponse",
          "description": "User text input."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "reply",
        "userInput"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaDocumentContent": {
      "description": "Unstructured data linked to this document.",
      "properties": {
        "mimeType": {
          "type": "string",
          "description": "The MIME type of the content. Supported types: * `application/pdf` (PDF, only native PDFs are supported for now) * `text/html` (HTML) * `application/vnd.openxmlformats-officedocument.wordprocessingml.document` (DOCX) * `application/vnd.openxmlformats-officedocument.presentationml.presentation` (PPTX) * `text/plain` (TXT) See https://www.iana.org/assignments/media-types/media-types.xhtml."
        },
        "rawBytes": {
          "type": "string",
          "description": "The content represented as a stream of bytes. The maximum length is 1,000,000 bytes (1 MB / ~0.95 MiB). Note: As with all `bytes` fields, this field is represented as pure binary in Protocol Buffers and base64-encoded string in JSON. For example, `abc123!?$*&()'-=@~` should be represented as `YWJjMTIzIT8kKiYoKSctPUB+` in JSON. See https://developers.google.com/protocol-buffers/docs/proto3#json."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the content. Only Cloud Storage URIs (e.g. `gs://bucket-name/path/to/file`) are supported. The maximum file size is 100 MB."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaDocumentContentResponse": {
      "description": "Unstructured data linked to this document.",
      "properties": {
        "mimeType": {
          "type": "string",
          "description": "The MIME type of the content. Supported types: * `application/pdf` (PDF, only native PDFs are supported for now) * `text/html` (HTML) * `application/vnd.openxmlformats-officedocument.wordprocessingml.document` (DOCX) * `application/vnd.openxmlformats-officedocument.presentationml.presentation` (PPTX) * `text/plain` (TXT) See https://www.iana.org/assignments/media-types/media-types.xhtml."
        },
        "rawBytes": {
          "type": "string",
          "description": "The content represented as a stream of bytes. The maximum length is 1,000,000 bytes (1 MB / ~0.95 MiB). Note: As with all `bytes` fields, this field is represented as pure binary in Protocol Buffers and base64-encoded string in JSON. For example, `abc123!?$*&()'-=@~` should be represented as `YWJjMTIzIT8kKiYoKSctPUB+` in JSON. See https://developers.google.com/protocol-buffers/docs/proto3#json."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the content. Only Cloud Storage URIs (e.g. `gs://bucket-name/path/to/file`) are supported. The maximum file size is 100 MB."
        }
      },
      "type": "object",
      "required": [
        "mimeType",
        "rawBytes",
        "uri"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfig": {
      "description": "Configurations for a Chat Engine.",
      "properties": {
        "agentCreationConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfigAgentCreationConfig",
          "description": "The configurationt generate the Dialogflow agent that is associated to this Engine. Note that these configurations are one-time consumed by and passed to Dialogflow service. It means they cannot be retrieved using EngineService.GetEngine or EngineService.ListEngines API after engine creation."
        },
        "dialogflowAgentToLink": {
          "type": "string",
          "description": "The resource name of an exist Dialogflow agent to link to this Chat Engine. Customers can either provide `agent_creation_config` to create agent or provide an agent name that links the agent with the Chat engine. Format: `projects//locations//agents/`. Note that the `dialogflow_agent_to_link` are one-time consumed by and passed to Dialogflow service. It means they cannot be retrieved using EngineService.GetEngine or EngineService.ListEngines API after engine creation. Please use chat_engine_metadata.dialogflow_agent for actual agent association after Engine is created."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfigAgentCreationConfig": {
      "description": "Configurations for generating a Dialogflow agent. Note that these configurations are one-time consumed by and passed to Dialogflow service. It means they cannot be retrieved using EngineService.GetEngine or EngineService.ListEngines API after engine creation.",
      "properties": {
        "business": {
          "type": "string",
          "description": "Name of the company, organization or other entity that the agent represents. Used for knowledge connector LLM prompt and for knowledge search."
        },
        "defaultLanguageCode": {
          "type": "string",
          "description": "The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris."
        }
      },
      "type": "object",
      "required": [
        "defaultLanguageCode",
        "timeZone"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfigAgentCreationConfigResponse": {
      "description": "Configurations for generating a Dialogflow agent. Note that these configurations are one-time consumed by and passed to Dialogflow service. It means they cannot be retrieved using EngineService.GetEngine or EngineService.ListEngines API after engine creation.",
      "properties": {
        "business": {
          "type": "string",
          "description": "Name of the company, organization or other entity that the agent represents. Used for knowledge connector LLM prompt and for knowledge search."
        },
        "defaultLanguageCode": {
          "type": "string",
          "description": "The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris."
        }
      },
      "type": "object",
      "required": [
        "business",
        "defaultLanguageCode",
        "timeZone"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfigResponse": {
      "description": "Configurations for a Chat Engine.",
      "properties": {
        "agentCreationConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfigAgentCreationConfigResponse",
          "description": "The configurationt generate the Dialogflow agent that is associated to this Engine. Note that these configurations are one-time consumed by and passed to Dialogflow service. It means they cannot be retrieved using EngineService.GetEngine or EngineService.ListEngines API after engine creation."
        },
        "dialogflowAgentToLink": {
          "type": "string",
          "description": "The resource name of an exist Dialogflow agent to link to this Chat Engine. Customers can either provide `agent_creation_config` to create agent or provide an agent name that links the agent with the Chat engine. Format: `projects//locations//agents/`. Note that the `dialogflow_agent_to_link` are one-time consumed by and passed to Dialogflow service. It means they cannot be retrieved using EngineService.GetEngine or EngineService.ListEngines API after engine creation. Please use chat_engine_metadata.dialogflow_agent for actual agent association after Engine is created."
        }
      },
      "type": "object",
      "required": [
        "agentCreationConfig",
        "dialogflowAgentToLink"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineMetadataResponse": {
      "description": "Additional information of a Chat Engine. Fields in this message are output only.",
      "properties": {
        "dialogflowAgent": {
          "type": "string",
          "description": "The resource name of a Dialogflow agent, that this Chat Engine refers to. Format: `projects//locations//agents/`."
        }
      },
      "type": "object",
      "required": [
        "dialogflowAgent"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineCommonConfig": {
      "description": "Common configurations for an Engine.",
      "properties": {
        "companyName": {
          "type": "string",
          "description": "The name of the company, business or entity that is associated with the engine. Setting this may help improve LLM related features."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineCommonConfigResponse": {
      "description": "Common configurations for an Engine.",
      "properties": {
        "companyName": {
          "type": "string",
          "description": "The name of the company, business or entity that is associated with the engine. Setting this may help improve LLM related features."
        }
      },
      "type": "object",
      "required": [
        "companyName"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfig": {
      "description": "Additional config specs for a Media Recommendation engine.",
      "properties": {
        "optimizationObjective": {
          "type": "string",
          "description": "The optimization objective e.g. `cvr`. This field together with optimization_objective describe engine metadata to use to control engine training and serving. Currently supported values: `ctr`, `cvr`. If not specified, we choose default based on engine type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr`"
        },
        "optimizationObjectiveConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigOptimizationObjectiveConfig",
          "description": "Name and value of the custom threshold for cvr optimization_objective. For target_field `watch-time`, target_field_value must be an integer value indicating the media progress time in seconds between (0, 86400] (excludes 0, includes 86400) (e.g., 90). For target_field `watch-percentage`, the target_field_value must be a valid float value between (0, 1.0] (excludes 0, includes 1.0) (e.g., 0.5)."
        },
        "trainingState": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigTrainingState",
          "description": "The training state that the engine is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train engine in order to control cost. If not specified: the default value for `CreateEngine` method is `TRAINING`. The default value for `UpdateEngine` method is to keep the state the same as before."
        },
        "type": {
          "type": "string",
          "description": "The type of engine e.g. `recommended-for-you`. This field together with optimization_objective describe engine metadata to use to control engine training and serving. Currently supported values: `recommended-for-you`, `others-you-may-like`, `more-like-this`, `most-popular-items`."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigOptimizationObjectiveConfig": {
      "description": "Custom threshold for `cvr` optimization_objective.",
      "properties": {
        "targetField": {
          "type": "string",
          "description": "The name of the field to target. Currently supported values: `watch-percentage`, `watch-time`."
        },
        "targetFieldValueFloat": {
          "type": "number",
          "description": "The threshold to be applied to the target (e.g., 0.5)."
        }
      },
      "type": "object",
      "required": [
        "targetField",
        "targetFieldValueFloat"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigOptimizationObjectiveConfigResponse": {
      "description": "Custom threshold for `cvr` optimization_objective.",
      "properties": {
        "targetField": {
          "type": "string",
          "description": "The name of the field to target. Currently supported values: `watch-percentage`, `watch-time`."
        },
        "targetFieldValueFloat": {
          "type": "number",
          "description": "The threshold to be applied to the target (e.g., 0.5)."
        }
      },
      "type": "object",
      "required": [
        "targetField",
        "targetFieldValueFloat"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigResponse": {
      "description": "Additional config specs for a Media Recommendation engine.",
      "properties": {
        "optimizationObjective": {
          "type": "string",
          "description": "The optimization objective e.g. `cvr`. This field together with optimization_objective describe engine metadata to use to control engine training and serving. Currently supported values: `ctr`, `cvr`. If not specified, we choose default based on engine type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr`"
        },
        "optimizationObjectiveConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigOptimizationObjectiveConfigResponse",
          "description": "Name and value of the custom threshold for cvr optimization_objective. For target_field `watch-time`, target_field_value must be an integer value indicating the media progress time in seconds between (0, 86400] (excludes 0, includes 86400) (e.g., 90). For target_field `watch-percentage`, the target_field_value must be a valid float value between (0, 1.0] (excludes 0, includes 1.0) (e.g., 0.5)."
        },
        "trainingState": {
          "type": "string",
          "description": "The training state that the engine is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train engine in order to control cost. If not specified: the default value for `CreateEngine` method is `TRAINING`. The default value for `UpdateEngine` method is to keep the state the same as before."
        },
        "type": {
          "type": "string",
          "description": "The type of engine e.g. `recommended-for-you`. This field together with optimization_objective describe engine metadata to use to control engine training and serving. Currently supported values: `recommended-for-you`, `others-you-may-like`, `more-like-this`, `most-popular-items`."
        }
      },
      "type": "object",
      "required": [
        "optimizationObjective",
        "optimizationObjectiveConfig",
        "trainingState",
        "type"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigTrainingState": {
      "description": "The training state that the engine is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train engine in order to control cost. If not specified: the default value for `CreateEngine` method is `TRAINING`. The default value for `UpdateEngine` method is to keep the state the same as before.",
      "type": "string",
      "enum": [
        {
          "name": "TrainingStateUnspecified",
          "description": "Unspecified training state.",
          "value": "TRAINING_STATE_UNSPECIFIED"
        },
        {
          "name": "Paused",
          "description": "The engine training is paused.",
          "value": "PAUSED"
        },
        {
          "name": "Training",
          "description": "The engine is training.",
          "value": "TRAINING"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineRecommendationMetadataResponse": {
      "description": "Additional information of a recommendation engine.",
      "properties": {
        "dataState": {
          "type": "string",
          "description": "The state of data requirements for this engine: `DATA_OK` and `DATA_ERROR`. Engine cannot be trained if the data is in `DATA_ERROR` state. Engine can have `DATA_ERROR` state even if serving state is `ACTIVE`: engines were trained successfully before, but cannot be refreshed because the underlying engine no longer has sufficient data for training."
        },
        "lastTuneTime": {
          "type": "string",
          "description": "The timestamp when the latest successful tune finished. Only applicable on Media Recommendation engines."
        },
        "servingState": {
          "type": "string",
          "description": "The serving state of the engine: `ACTIVE`, `NOT_ACTIVE`."
        },
        "tuningOperation": {
          "type": "string",
          "description": "The latest tune operation id associated with the engine. Only applicable on Media Recommendation engines. If present, this operation id can be used to determine if there is an ongoing tune for this engine. To check the operation status, send the GetOperation request with this operation id in the engine resource format. If no tuning has happened for this engine, the string is empty."
        }
      },
      "type": "object",
      "required": [
        "dataState",
        "lastTuneTime",
        "servingState",
        "tuningOperation"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfig": {
      "description": "Configurations for a Search Engine.",
      "properties": {
        "searchAddOns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfigSearchAddOnsItem"
          },
          "description": "The add-on that this search engine enables."
        },
        "searchTier": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfigSearchTier",
          "description": "The search feature tier of this engine. Different tiers might have different pricing. To learn more, please check the pricing documentation. Defaults to SearchTier.SEARCH_TIER_STANDARD if not specified."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfigResponse": {
      "description": "Configurations for a Search Engine.",
      "properties": {
        "searchAddOns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The add-on that this search engine enables."
        },
        "searchTier": {
          "type": "string",
          "description": "The search feature tier of this engine. Different tiers might have different pricing. To learn more, please check the pricing documentation. Defaults to SearchTier.SEARCH_TIER_STANDARD if not specified."
        }
      },
      "type": "object",
      "required": [
        "searchAddOns",
        "searchTier"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfigSearchAddOnsItem": {
      "type": "string",
      "enum": [
        {
          "name": "SearchAddOnUnspecified",
          "description": "Default value when the enum is unspecified. This is invalid to use.",
          "value": "SEARCH_ADD_ON_UNSPECIFIED"
        },
        {
          "name": "SearchAddOnLlm",
          "description": "Large language model add-on.",
          "value": "SEARCH_ADD_ON_LLM"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfigSearchTier": {
      "description": "The search feature tier of this engine. Different tiers might have different pricing. To learn more, please check the pricing documentation. Defaults to SearchTier.SEARCH_TIER_STANDARD if not specified.",
      "type": "string",
      "enum": [
        {
          "name": "SearchTierUnspecified",
          "description": "Default value when the enum is unspecified. This is invalid to use.",
          "value": "SEARCH_TIER_UNSPECIFIED"
        },
        {
          "name": "SearchTierStandard",
          "description": "Standard tier.",
          "value": "SEARCH_TIER_STANDARD"
        },
        {
          "name": "SearchTierEnterprise",
          "description": "Enterprise tier.",
          "value": "SEARCH_TIER_ENTERPRISE"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineSimilarDocumentsEngineConfig": {
      "description": "Additional config specs for a `similar-items` engine.",
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaEngineSimilarDocumentsEngineConfigResponse": {
      "description": "Additional config specs for a `similar-items` engine.",
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaFieldConfigResponse": {
      "description": "Configurations for fields of a schema. For example, configuring a field is indexable, or searchable.",
      "properties": {
        "completableOption": {
          "type": "string",
          "description": "If completable_option is COMPLETABLE_ENABLED, field values are directly used and returned as suggestions for Autocomplete in CompletionService.CompleteQuery. If completable_option is unset, the server behavior defaults to COMPLETABLE_DISABLED for fields that support setting completable options, which are just `string` fields. For those fields that do not support setting completable options, the server will skip completable option setting, and setting completable_option for those fields will throw `INVALID_ARGUMENT` error."
        },
        "dynamicFacetableOption": {
          "type": "string",
          "description": "If dynamic_facetable_option is DYNAMIC_FACETABLE_ENABLED, field values are available for dynamic facet. Could only be DYNAMIC_FACETABLE_DISABLED if FieldConfig.indexable_option is INDEXABLE_DISABLED. Otherwise, an `INVALID_ARGUMENT` error will be returned. If dynamic_facetable_option is unset, the server behavior defaults to DYNAMIC_FACETABLE_DISABLED for fields that support setting dynamic facetable options. For those fields that do not support setting dynamic facetable options, such as `object` and `boolean`, the server will skip dynamic facetable option setting, and setting dynamic_facetable_option for those fields will throw `INVALID_ARGUMENT` error."
        },
        "fieldPath": {
          "type": "string",
          "description": "Field path of the schema field. For example: `title`, `description`, `release_info.release_year`."
        },
        "fieldType": {
          "type": "string",
          "description": "Raw type of the field."
        },
        "indexableOption": {
          "type": "string",
          "description": "If indexable_option is INDEXABLE_ENABLED, field values are indexed so that it can be filtered or faceted in SearchService.Search. If indexable_option is unset, the server behavior defaults to INDEXABLE_DISABLED for fields that support setting indexable options. For those fields that do not support setting indexable options, such as `object` and `boolean` and key properties, the server will skip indexable_option setting, and setting indexable_option for those fields will throw `INVALID_ARGUMENT` error."
        },
        "keyPropertyType": {
          "type": "string",
          "description": "Type of the key property that this field is mapped to. Empty string if this is not annotated as mapped to a key property. Example types are `title`, `description`. Full list is defined by `keyPropertyMapping` in the schema field annotation. If the schema field has a `KeyPropertyMapping` annotation, `indexable_option` and `searchable_option` of this field cannot be modified."
        },
        "recsFilterableOption": {
          "type": "string",
          "description": "If recs_filterable_option is FILTERABLE_ENABLED, field values are filterable by filter expression in RecommendationService.Recommend. If FILTERABLE_ENABLED but the field type is numerical, field values are not filterable by text queries in RecommendationService.Recommend. Only textual fields are supported. If recs_filterable_option is unset, the default setting is FILTERABLE_DISABLED for fields that support setting filterable options. When a field set to [FILTERABLE_DISABLED] is filtered, a warning is generated and an empty result is returned."
        },
        "retrievableOption": {
          "type": "string",
          "description": "If retrievable_option is RETRIEVABLE_ENABLED, field values are included in the search results. If retrievable_option is unset, the server behavior defaults to RETRIEVABLE_DISABLED for fields that support setting retrievable options. For those fields that do not support setting retrievable options, such as `object` and `boolean`, the server will skip retrievable option setting, and setting retrievable_option for those fields will throw `INVALID_ARGUMENT` error."
        },
        "searchableOption": {
          "type": "string",
          "description": "If searchable_option is SEARCHABLE_ENABLED, field values are searchable by text queries in SearchService.Search. If SEARCHABLE_ENABLED but field type is numerical, field values will not be searchable by text queries in SearchService.Search, as there are no text values associated to numerical fields. If searchable_option is unset, the server behavior defaults to SEARCHABLE_DISABLED for fields that support setting searchable options. Only `string` fields that have no key property mapping support setting searchable_option. For those fields that do not support setting searchable options, the server will skip searchable option setting, and setting searchable_option for those fields will throw `INVALID_ARGUMENT` error."
        }
      },
      "type": "object",
      "required": [
        "completableOption",
        "dynamicFacetableOption",
        "fieldPath",
        "fieldType",
        "indexableOption",
        "keyPropertyType",
        "recsFilterableOption",
        "retrievableOption",
        "searchableOption"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaReply": {
      "description": "Defines a reply message to user.",
      "properties": {
        "references": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaReplyReference"
          },
          "description": "References in the reply."
        },
        "reply": {
          "type": "string",
          "description": "DEPRECATED: use `summary` instead. Text reply.",
          "deprecationMessage": "DEPRECATED: use `summary` instead. Text reply."
        },
        "summary": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummary",
          "description": "Summary based on search results."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaReplyReference": {
      "description": "Defines reference in reply.",
      "properties": {
        "anchorText": {
          "type": "string",
          "description": "Anchor text."
        },
        "end": {
          "type": "integer",
          "description": "Anchor text end index."
        },
        "start": {
          "type": "integer",
          "description": "Anchor text start index."
        },
        "uri": {
          "type": "string",
          "description": "URI link reference."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaReplyReferenceResponse": {
      "description": "Defines reference in reply.",
      "properties": {
        "anchorText": {
          "type": "string",
          "description": "Anchor text."
        },
        "end": {
          "type": "integer",
          "description": "Anchor text end index."
        },
        "start": {
          "type": "integer",
          "description": "Anchor text start index."
        },
        "uri": {
          "type": "string",
          "description": "URI link reference."
        }
      },
      "type": "object",
      "required": [
        "anchorText",
        "end",
        "start",
        "uri"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaReplyResponse": {
      "description": "Defines a reply message to user.",
      "properties": {
        "references": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaReplyReferenceResponse"
          },
          "description": "References in the reply."
        },
        "reply": {
          "type": "string",
          "description": "DEPRECATED: use `summary` instead. Text reply.",
          "deprecationMessage": "DEPRECATED: use `summary` instead. Text reply."
        },
        "summary": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummaryResponse",
          "description": "Summary based on search results."
        }
      },
      "type": "object",
      "required": [
        "references",
        "reply",
        "summary"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummary": {
      "description": "Summary of the top N search result specified by the summary spec.",
      "properties": {
        "safetyAttributes": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummarySafetyAttributes",
          "description": "A collection of Safety Attribute categories and their associated confidence scores."
        },
        "summarySkippedReasons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummarySummarySkippedReasonsItem"
          },
          "description": "Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set."
        },
        "summaryText": {
          "type": "string",
          "description": "The summary content."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummaryResponse": {
      "description": "Summary of the top N search result specified by the summary spec.",
      "properties": {
        "safetyAttributes": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummarySafetyAttributesResponse",
          "description": "A collection of Safety Attribute categories and their associated confidence scores."
        },
        "summarySkippedReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set."
        },
        "summaryText": {
          "type": "string",
          "description": "The summary content."
        }
      },
      "type": "object",
      "required": [
        "safetyAttributes",
        "summarySkippedReasons",
        "summaryText"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummarySafetyAttributes": {
      "description": "Safety Attribute categories and their associated confidence scores.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The display names of Safety Attribute categories associated with the generated content. Order matches the Scores."
        },
        "scores": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "The confidence scores of the each category, higher value means higher confidence. Order matches the Categories."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummarySafetyAttributesResponse": {
      "description": "Safety Attribute categories and their associated confidence scores.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The display names of Safety Attribute categories associated with the generated content. Order matches the Scores."
        },
        "scores": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "The confidence scores of the each category, higher value means higher confidence. Order matches the Categories."
        }
      },
      "type": "object",
      "required": [
        "categories",
        "scores"
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaSearchResponseSummarySummarySkippedReasonsItem": {
      "type": "string",
      "enum": [
        {
          "name": "SummarySkippedReasonUnspecified",
          "description": "Default value. The summary skipped reason is not specified.",
          "value": "SUMMARY_SKIPPED_REASON_UNSPECIFIED"
        },
        {
          "name": "AdversarialQueryIgnored",
          "description": "The adversarial query ignored case. Only populated when SummarySpec.ignore_adversarial_query is set to `true`.",
          "value": "ADVERSARIAL_QUERY_IGNORED"
        },
        {
          "name": "NonSummarySeekingQueryIgnored",
          "description": "The non-summary seeking query ignored case. Only populated when SummarySpec.ignore_non_summary_seeking_query is set to `true`.",
          "value": "NON_SUMMARY_SEEKING_QUERY_IGNORED"
        },
        {
          "name": "OutOfDomainQueryIgnored",
          "description": "The out-of-domain query ignored case. Google skips the summary if there are no high-relevance search results. For example, the data store contains facts about company A but the user query is asking questions about company B.",
          "value": "OUT_OF_DOMAIN_QUERY_IGNORED"
        },
        {
          "name": "PotentialPolicyViolation",
          "description": "The potential policy violation case. Google skips the summary if there is a potential policy violation detected. This includes content that may be violent or toxic.",
          "value": "POTENTIAL_POLICY_VIOLATION"
        },
        {
          "name": "LlmAddonNotEnabled",
          "description": "The LLM addon not enabled case. Google skips the summary if the LLM addon is not enabled.",
          "value": "LLM_ADDON_NOT_ENABLED"
        }
      ]
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaTextInput": {
      "description": "Defines text input.",
      "properties": {
        "context": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaConversationContext",
          "description": "Conversation context of the input."
        },
        "input": {
          "type": "string",
          "description": "Text input."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1alpha:GoogleCloudDiscoveryengineV1alphaTextInputResponse": {
      "description": "Defines text input.",
      "properties": {
        "context": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaConversationContextResponse",
          "description": "Conversation context of the input."
        },
        "input": {
          "type": "string",
          "description": "Text input."
        }
      },
      "type": "object",
      "required": [
        "context",
        "input"
      ]
    },
    "google-native:discoveryengine/v1beta:ConversationState": {
      "description": "The state of the Conversation.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unknown.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "InProgress",
          "description": "Conversation is currently open.",
          "value": "IN_PROGRESS"
        },
        {
          "name": "Completed",
          "description": "Conversation has been completed.",
          "value": "COMPLETED"
        }
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaConversationContext": {
      "description": "Defines context of the conversation",
      "properties": {
        "activeDocument": {
          "type": "string",
          "description": "The current active document the user opened. It contains the document resource reference."
        },
        "contextDocuments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The current list of documents the user is seeing. It contains the document resource references."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaConversationContextResponse": {
      "description": "Defines context of the conversation",
      "properties": {
        "activeDocument": {
          "type": "string",
          "description": "The current active document the user opened. It contains the document resource reference."
        },
        "contextDocuments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The current list of documents the user is seeing. It contains the document resource references."
        }
      },
      "type": "object",
      "required": [
        "activeDocument",
        "contextDocuments"
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaConversationMessage": {
      "description": "Defines a conversation message.",
      "properties": {
        "reply": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaReply",
          "description": "Search reply."
        },
        "userInput": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaTextInput",
          "description": "User text input."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaConversationMessageResponse": {
      "description": "Defines a conversation message.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Message creation timestamp."
        },
        "reply": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaReplyResponse",
          "description": "Search reply."
        },
        "userInput": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaTextInputResponse",
          "description": "User text input."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "reply",
        "userInput"
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaDocumentContent": {
      "description": "Unstructured data linked to this document.",
      "properties": {
        "mimeType": {
          "type": "string",
          "description": "The MIME type of the content. Supported types: * `application/pdf` (PDF, only native PDFs are supported for now) * `text/html` (HTML) * `application/vnd.openxmlformats-officedocument.wordprocessingml.document` (DOCX) * `application/vnd.openxmlformats-officedocument.presentationml.presentation` (PPTX) * `text/plain` (TXT) See https://www.iana.org/assignments/media-types/media-types.xhtml."
        },
        "rawBytes": {
          "type": "string",
          "description": "The content represented as a stream of bytes. The maximum length is 1,000,000 bytes (1 MB / ~0.95 MiB). Note: As with all `bytes` fields, this field is represented as pure binary in Protocol Buffers and base64-encoded string in JSON. For example, `abc123!?$*&()'-=@~` should be represented as `YWJjMTIzIT8kKiYoKSctPUB+` in JSON. See https://developers.google.com/protocol-buffers/docs/proto3#json."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the content. Only Cloud Storage URIs (e.g. `gs://bucket-name/path/to/file`) are supported. The maximum file size is 100 MB."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaDocumentContentResponse": {
      "description": "Unstructured data linked to this document.",
      "properties": {
        "mimeType": {
          "type": "string",
          "description": "The MIME type of the content. Supported types: * `application/pdf` (PDF, only native PDFs are supported for now) * `text/html` (HTML) * `application/vnd.openxmlformats-officedocument.wordprocessingml.document` (DOCX) * `application/vnd.openxmlformats-officedocument.presentationml.presentation` (PPTX) * `text/plain` (TXT) See https://www.iana.org/assignments/media-types/media-types.xhtml."
        },
        "rawBytes": {
          "type": "string",
          "description": "The content represented as a stream of bytes. The maximum length is 1,000,000 bytes (1 MB / ~0.95 MiB). Note: As with all `bytes` fields, this field is represented as pure binary in Protocol Buffers and base64-encoded string in JSON. For example, `abc123!?$*&()'-=@~` should be represented as `YWJjMTIzIT8kKiYoKSctPUB+` in JSON. See https://developers.google.com/protocol-buffers/docs/proto3#json."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the content. Only Cloud Storage URIs (e.g. `gs://bucket-name/path/to/file`) are supported. The maximum file size is 100 MB."
        }
      },
      "type": "object",
      "required": [
        "mimeType",
        "rawBytes",
        "uri"
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaReply": {
      "description": "Defines a reply message to user.",
      "properties": {
        "references": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaReplyReference"
          },
          "description": "References in the reply."
        },
        "reply": {
          "type": "string",
          "description": "DEPRECATED: use `summary` instead. Text reply.",
          "deprecationMessage": "DEPRECATED: use `summary` instead. Text reply."
        },
        "summary": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummary",
          "description": "Summary based on search results."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaReplyReference": {
      "description": "Defines reference in reply.",
      "properties": {
        "anchorText": {
          "type": "string",
          "description": "Anchor text."
        },
        "end": {
          "type": "integer",
          "description": "Anchor text end index."
        },
        "start": {
          "type": "integer",
          "description": "Anchor text start index."
        },
        "uri": {
          "type": "string",
          "description": "URI link reference."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaReplyReferenceResponse": {
      "description": "Defines reference in reply.",
      "properties": {
        "anchorText": {
          "type": "string",
          "description": "Anchor text."
        },
        "end": {
          "type": "integer",
          "description": "Anchor text end index."
        },
        "start": {
          "type": "integer",
          "description": "Anchor text start index."
        },
        "uri": {
          "type": "string",
          "description": "URI link reference."
        }
      },
      "type": "object",
      "required": [
        "anchorText",
        "end",
        "start",
        "uri"
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaReplyResponse": {
      "description": "Defines a reply message to user.",
      "properties": {
        "references": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaReplyReferenceResponse"
          },
          "description": "References in the reply."
        },
        "reply": {
          "type": "string",
          "description": "DEPRECATED: use `summary` instead. Text reply.",
          "deprecationMessage": "DEPRECATED: use `summary` instead. Text reply."
        },
        "summary": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummaryResponse",
          "description": "Summary based on search results."
        }
      },
      "type": "object",
      "required": [
        "references",
        "reply",
        "summary"
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummary": {
      "description": "Summary of the top N search result specified by the summary spec.",
      "properties": {
        "safetyAttributes": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummarySafetyAttributes",
          "description": "A collection of Safety Attribute categories and their associated confidence scores."
        },
        "summarySkippedReasons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasonsItem"
          },
          "description": "Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set."
        },
        "summaryText": {
          "type": "string",
          "description": "The summary content."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummaryResponse": {
      "description": "Summary of the top N search result specified by the summary spec.",
      "properties": {
        "safetyAttributes": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummarySafetyAttributesResponse",
          "description": "A collection of Safety Attribute categories and their associated confidence scores."
        },
        "summarySkippedReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional summary-skipped reasons. This provides the reason for ignored cases. If nothing is skipped, this field is not set."
        },
        "summaryText": {
          "type": "string",
          "description": "The summary content."
        }
      },
      "type": "object",
      "required": [
        "safetyAttributes",
        "summarySkippedReasons",
        "summaryText"
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummarySafetyAttributes": {
      "description": "Safety Attribute categories and their associated confidence scores.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The display names of Safety Attribute categories associated with the generated content. Order matches the Scores."
        },
        "scores": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "The confidence scores of the each category, higher value means higher confidence. Order matches the Categories."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummarySafetyAttributesResponse": {
      "description": "Safety Attribute categories and their associated confidence scores.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The display names of Safety Attribute categories associated with the generated content. Order matches the Scores."
        },
        "scores": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "The confidence scores of the each category, higher value means higher confidence. Order matches the Categories."
        }
      },
      "type": "object",
      "required": [
        "categories",
        "scores"
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasonsItem": {
      "type": "string",
      "enum": [
        {
          "name": "SummarySkippedReasonUnspecified",
          "description": "Default value. The summary skipped reason is not specified.",
          "value": "SUMMARY_SKIPPED_REASON_UNSPECIFIED"
        },
        {
          "name": "AdversarialQueryIgnored",
          "description": "The adversarial query ignored case. Only populated when SummarySpec.ignore_adversarial_query is set to `true`.",
          "value": "ADVERSARIAL_QUERY_IGNORED"
        },
        {
          "name": "NonSummarySeekingQueryIgnored",
          "description": "The non-summary seeking query ignored case. Only populated when SummarySpec.ignore_non_summary_seeking_query is set to `true`.",
          "value": "NON_SUMMARY_SEEKING_QUERY_IGNORED"
        },
        {
          "name": "OutOfDomainQueryIgnored",
          "description": "The out-of-domain query ignored case. Google skips the summary if there are no high-relevance search results. For example, the data store contains facts about company A but the user query is asking questions about company B.",
          "value": "OUT_OF_DOMAIN_QUERY_IGNORED"
        },
        {
          "name": "PotentialPolicyViolation",
          "description": "The potential policy violation case. Google skips the summary if there is a potential policy violation detected. This includes content that may be violent or toxic.",
          "value": "POTENTIAL_POLICY_VIOLATION"
        },
        {
          "name": "LlmAddonNotEnabled",
          "description": "The LLM addon not enabled case. Google skips the summary if the LLM addon is not enabled.",
          "value": "LLM_ADDON_NOT_ENABLED"
        }
      ]
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaTextInput": {
      "description": "Defines text input.",
      "properties": {
        "context": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaConversationContext",
          "description": "Conversation context of the input."
        },
        "input": {
          "type": "string",
          "description": "Text input."
        }
      },
      "type": "object"
    },
    "google-native:discoveryengine/v1beta:GoogleCloudDiscoveryengineV1betaTextInputResponse": {
      "description": "Defines text input.",
      "properties": {
        "context": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaConversationContextResponse",
          "description": "Conversation context of the input."
        },
        "input": {
          "type": "string",
          "description": "Text input."
        }
      },
      "type": "object",
      "required": [
        "context",
        "input"
      ]
    },
    "google-native:dlp/v2:DiscoveryConfigStatus": {
      "description": "Required. A status for this configuration.",
      "type": "string",
      "enum": [
        {
          "name": "StatusUnspecified",
          "description": "Unused",
          "value": "STATUS_UNSPECIFIED"
        },
        {
          "name": "Running",
          "description": "The discovery config is currently active.",
          "value": "RUNNING"
        },
        {
          "name": "Paused",
          "description": "The discovery config is paused temporarily.",
          "value": "PAUSED"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Action": {
      "description": "A task to execute on the completion of a job. See https://cloud.google.com/dlp/docs/concepts-actions to learn more.",
      "properties": {
        "deidentify": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Deidentify",
          "description": "Create a de-identified copy of the input data."
        },
        "jobNotificationEmails": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2JobNotificationEmails",
          "description": "Sends an email when the job completes. The email goes to IAM project owners and technical [Essential Contacts](https://cloud.google.com/resource-manager/docs/managing-notification-contacts)."
        },
        "pubSub": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PublishToPubSub",
          "description": "Publish a notification to a Pub/Sub topic."
        },
        "publishFindingsToCloudDataCatalog": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PublishFindingsToCloudDataCatalog",
          "description": "Publish findings to Cloud Datahub."
        },
        "publishSummaryToCscc": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PublishSummaryToCscc",
          "description": "Publish summary to Cloud Security Command Center (Alpha)."
        },
        "publishToStackdriver": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PublishToStackdriver",
          "description": "Enable Stackdriver metric dlp.googleapis.com/finding_count."
        },
        "saveFindings": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SaveFindings",
          "description": "Save resulting findings in a provided location."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ActionDetailsResponse": {
      "description": "The results of an Action.",
      "properties": {
        "deidentifyDetails": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyDataSourceDetailsResponse",
          "description": "Outcome of a de-identification action."
        }
      },
      "type": "object",
      "required": [
        "deidentifyDetails"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ActionResponse": {
      "description": "A task to execute on the completion of a job. See https://cloud.google.com/dlp/docs/concepts-actions to learn more.",
      "properties": {
        "deidentify": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyResponse",
          "description": "Create a de-identified copy of the input data."
        },
        "jobNotificationEmails": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2JobNotificationEmailsResponse",
          "description": "Sends an email when the job completes. The email goes to IAM project owners and technical [Essential Contacts](https://cloud.google.com/resource-manager/docs/managing-notification-contacts)."
        },
        "pubSub": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PublishToPubSubResponse",
          "description": "Publish a notification to a Pub/Sub topic."
        },
        "publishFindingsToCloudDataCatalog": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PublishFindingsToCloudDataCatalogResponse",
          "description": "Publish findings to Cloud Datahub."
        },
        "publishSummaryToCscc": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PublishSummaryToCsccResponse",
          "description": "Publish summary to Cloud Security Command Center (Alpha)."
        },
        "publishToStackdriver": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PublishToStackdriverResponse",
          "description": "Enable Stackdriver metric dlp.googleapis.com/finding_count."
        },
        "saveFindings": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SaveFindingsResponse",
          "description": "Save resulting findings in a provided location."
        }
      },
      "type": "object",
      "required": [
        "deidentify",
        "jobNotificationEmails",
        "pubSub",
        "publishFindingsToCloudDataCatalog",
        "publishSummaryToCscc",
        "publishToStackdriver",
        "saveFindings"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AllInfoTypes": {
      "description": "Apply transformation to all findings.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AllInfoTypesResponse": {
      "description": "Apply transformation to all findings.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AllOtherBigQueryTables": {
      "description": "Catch-all for all other tables not specified by other filters. Should always be last, except for single-table configurations, which will only have a TableReference target.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AllOtherBigQueryTablesResponse": {
      "description": "Catch-all for all other tables not specified by other filters. Should always be last, except for single-table configurations, which will only have a TableReference target.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AllText": {
      "description": "Apply to all text.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AllTextResponse": {
      "description": "Apply to all text.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AnalyzeDataSourceRiskDetailsResponse": {
      "description": "Result of a risk analysis operation request.",
      "properties": {
        "categoricalStatsResult": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CategoricalStatsResultResponse",
          "description": "Categorical stats result"
        },
        "deltaPresenceEstimationResult": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeltaPresenceEstimationResultResponse",
          "description": "Delta-presence result"
        },
        "kAnonymityResult": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KAnonymityResultResponse",
          "description": "K-anonymity result"
        },
        "kMapEstimationResult": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KMapEstimationResultResponse",
          "description": "K-map result"
        },
        "lDiversityResult": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LDiversityResultResponse",
          "description": "L-divesity result"
        },
        "numericalStatsResult": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2NumericalStatsResultResponse",
          "description": "Numerical stats result"
        },
        "requestedOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RequestedRiskAnalysisOptionsResponse",
          "description": "The configuration used for this job."
        },
        "requestedPrivacyMetric": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PrivacyMetricResponse",
          "description": "Privacy metric to compute."
        },
        "requestedSourceTable": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "Input dataset to compute metrics over."
        }
      },
      "type": "object",
      "required": [
        "categoricalStatsResult",
        "deltaPresenceEstimationResult",
        "kAnonymityResult",
        "kMapEstimationResult",
        "lDiversityResult",
        "numericalStatsResult",
        "requestedOptions",
        "requestedPrivacyMetric",
        "requestedSourceTable"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AuxiliaryTable": {
      "description": "An auxiliary table contains statistical information on the relative frequency of different quasi-identifiers values. It has one or several quasi-identifiers columns, and one column that indicates the relative frequency of each quasi-identifier tuple. If a tuple is present in the data but not in the auxiliary table, the corresponding relative frequency is assumed to be zero (and thus, the tuple is highly reidentifiable).",
      "properties": {
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2QuasiIdField"
          },
          "description": "Quasi-identifier columns."
        },
        "relativeFrequency": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "The relative frequency column must contain a floating-point number between 0 and 1 (inclusive). Null values are assumed to be zero."
        },
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTable",
          "description": "Auxiliary table location."
        }
      },
      "type": "object",
      "required": [
        "quasiIds",
        "relativeFrequency",
        "table"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2AuxiliaryTableResponse": {
      "description": "An auxiliary table contains statistical information on the relative frequency of different quasi-identifiers values. It has one or several quasi-identifiers columns, and one column that indicates the relative frequency of each quasi-identifier tuple. If a tuple is present in the data but not in the auxiliary table, the corresponding relative frequency is assumed to be zero (and thus, the tuple is highly reidentifiable).",
      "properties": {
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2QuasiIdFieldResponse"
          },
          "description": "Quasi-identifier columns."
        },
        "relativeFrequency": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "The relative frequency column must contain a floating-point number between 0 and 1 (inclusive). Null values are assumed to be zero."
        },
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "Auxiliary table location."
        }
      },
      "type": "object",
      "required": [
        "quasiIds",
        "relativeFrequency",
        "table"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryDiscoveryTarget": {
      "description": "Target used to match against for discovery with BigQuery tables",
      "properties": {
        "cadence": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryGenerationCadence",
          "description": "How often and when to update profiles. New tables that match both the filter and conditions are scanned as quickly as possible depending on system capacity."
        },
        "conditions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryBigQueryConditions",
          "description": "In addition to matching the filter, these conditions must be true before a profile is generated."
        },
        "disabled": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Disabled",
          "description": "Tables that match this filter will not have profiles created."
        },
        "filter": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryBigQueryFilter",
          "description": "The tables the discovery cadence applies to. The first target with a matching filter will be the one to apply to a table."
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryDiscoveryTargetResponse": {
      "description": "Target used to match against for discovery with BigQuery tables",
      "properties": {
        "cadence": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryGenerationCadenceResponse",
          "description": "How often and when to update profiles. New tables that match both the filter and conditions are scanned as quickly as possible depending on system capacity."
        },
        "conditions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryBigQueryConditionsResponse",
          "description": "In addition to matching the filter, these conditions must be true before a profile is generated."
        },
        "disabled": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DisabledResponse",
          "description": "Tables that match this filter will not have profiles created."
        },
        "filter": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryBigQueryFilterResponse",
          "description": "The tables the discovery cadence applies to. The first target with a matching filter will be the one to apply to a table."
        }
      },
      "type": "object",
      "required": [
        "cadence",
        "conditions",
        "disabled",
        "filter"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryField": {
      "description": "Message defining a field of a BigQuery table.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Designated field in the BigQuery table."
        },
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTable",
          "description": "Source table of the field."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryFieldResponse": {
      "description": "Message defining a field of a BigQuery table.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Designated field in the BigQuery table."
        },
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "Source table of the field."
        }
      },
      "type": "object",
      "required": [
        "field",
        "table"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryOptions": {
      "description": "Options defining BigQuery table and row identifiers.",
      "properties": {
        "excludedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId"
          },
          "description": "References to fields excluded from scanning. This allows you to skip inspection of entire columns which you know have no findings. When inspecting a table, we recommend that you inspect all columns. Otherwise, findings might be affected because hints from excluded columns will not be used."
        },
        "identifyingFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId"
          },
          "description": "Table fields that may uniquely identify a row within the table. When `actions.saveFindings.outputConfig.table` is specified, the values of columns specified here are available in the output table under `location.content_locations.record_location.record_key.id_values`. Nested fields such as `person.birthdate.year` are allowed."
        },
        "includedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId"
          },
          "description": "Limit scanning only to these fields. When inspecting a table, we recommend that you inspect all columns. Otherwise, findings might be affected because hints from excluded columns will not be used."
        },
        "rowsLimit": {
          "type": "string",
          "description": "Max number of rows to scan. If the table has more rows than this value, the rest of the rows are omitted. If not set, or if set to 0, all rows will be scanned. Only one of rows_limit and rows_limit_percent can be specified. Cannot be used in conjunction with TimespanConfig."
        },
        "rowsLimitPercent": {
          "type": "integer",
          "description": "Max percentage of rows to scan. The rest are omitted. The number of rows scanned is rounded down. Must be between 0 and 100, inclusively. Both 0 and 100 means no limit. Defaults to 0. Only one of rows_limit and rows_limit_percent can be specified. Cannot be used in conjunction with TimespanConfig."
        },
        "sampleMethod": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryOptionsSampleMethod"
        },
        "tableReference": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTable",
          "description": "Complete BigQuery table reference."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryOptionsResponse": {
      "description": "Options defining BigQuery table and row identifiers.",
      "properties": {
        "excludedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse"
          },
          "description": "References to fields excluded from scanning. This allows you to skip inspection of entire columns which you know have no findings. When inspecting a table, we recommend that you inspect all columns. Otherwise, findings might be affected because hints from excluded columns will not be used."
        },
        "identifyingFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse"
          },
          "description": "Table fields that may uniquely identify a row within the table. When `actions.saveFindings.outputConfig.table` is specified, the values of columns specified here are available in the output table under `location.content_locations.record_location.record_key.id_values`. Nested fields such as `person.birthdate.year` are allowed."
        },
        "includedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse"
          },
          "description": "Limit scanning only to these fields. When inspecting a table, we recommend that you inspect all columns. Otherwise, findings might be affected because hints from excluded columns will not be used."
        },
        "rowsLimit": {
          "type": "string",
          "description": "Max number of rows to scan. If the table has more rows than this value, the rest of the rows are omitted. If not set, or if set to 0, all rows will be scanned. Only one of rows_limit and rows_limit_percent can be specified. Cannot be used in conjunction with TimespanConfig."
        },
        "rowsLimitPercent": {
          "type": "integer",
          "description": "Max percentage of rows to scan. The rest are omitted. The number of rows scanned is rounded down. Must be between 0 and 100, inclusively. Both 0 and 100 means no limit. Defaults to 0. Only one of rows_limit and rows_limit_percent can be specified. Cannot be used in conjunction with TimespanConfig."
        },
        "sampleMethod": {
          "type": "string"
        },
        "tableReference": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "Complete BigQuery table reference."
        }
      },
      "type": "object",
      "required": [
        "excludedFields",
        "identifyingFields",
        "includedFields",
        "rowsLimit",
        "rowsLimitPercent",
        "sampleMethod",
        "tableReference"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryOptionsSampleMethod": {
      "type": "string",
      "enum": [
        {
          "name": "SampleMethodUnspecified",
          "value": "SAMPLE_METHOD_UNSPECIFIED"
        },
        {
          "name": "Top",
          "description": "Scan groups of rows in the order BigQuery provides (default). Multiple groups of rows may be scanned in parallel, so results may not appear in the same order the rows are read.",
          "value": "TOP"
        },
        {
          "name": "RandomStart",
          "description": "Randomly pick groups of rows to scan.",
          "value": "RANDOM_START"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryRegex": {
      "description": "A pattern to match against one or more tables, datasets, or projects that contain BigQuery tables. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub.",
      "properties": {
        "datasetIdRegex": {
          "type": "string",
          "description": "If unset, this property matches all datasets."
        },
        "projectIdRegex": {
          "type": "string",
          "description": "For organizations, if unset, will match all projects. Has no effect for data profile configurations created within a project."
        },
        "tableIdRegex": {
          "type": "string",
          "description": "If unset, this property matches all tables."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryRegexResponse": {
      "description": "A pattern to match against one or more tables, datasets, or projects that contain BigQuery tables. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub.",
      "properties": {
        "datasetIdRegex": {
          "type": "string",
          "description": "If unset, this property matches all datasets."
        },
        "projectIdRegex": {
          "type": "string",
          "description": "For organizations, if unset, will match all projects. Has no effect for data profile configurations created within a project."
        },
        "tableIdRegex": {
          "type": "string",
          "description": "If unset, this property matches all tables."
        }
      },
      "type": "object",
      "required": [
        "datasetIdRegex",
        "projectIdRegex",
        "tableIdRegex"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryRegexes": {
      "description": "A collection of regular expressions to determine what tables to match against.",
      "properties": {
        "patterns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryRegex"
          },
          "description": "A single BigQuery regular expression pattern to match against one or more tables, datasets, or projects that contain BigQuery tables."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryRegexesResponse": {
      "description": "A collection of regular expressions to determine what tables to match against.",
      "properties": {
        "patterns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryRegexResponse"
          },
          "description": "A single BigQuery regular expression pattern to match against one or more tables, datasets, or projects that contain BigQuery tables."
        }
      },
      "type": "object",
      "required": [
        "patterns"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryTable": {
      "description": "Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "Dataset ID of the table."
        },
        "project": {
          "type": "string",
          "description": "The Google Cloud Platform project ID of the project containing the table. If omitted, project ID is inferred from the API call."
        },
        "tableId": {
          "type": "string",
          "description": "Name of the table."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryTableCollection": {
      "description": "Specifies a collection of BigQuery tables. Used for Discovery.",
      "properties": {
        "includeRegexes": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryRegexes",
          "description": "A collection of regular expressions to match a BigQuery table against."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryTableCollectionResponse": {
      "description": "Specifies a collection of BigQuery tables. Used for Discovery.",
      "properties": {
        "includeRegexes": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryRegexesResponse",
          "description": "A collection of regular expressions to match a BigQuery table against."
        }
      },
      "type": "object",
      "required": [
        "includeRegexes"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryTableResponse": {
      "description": "Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "Dataset ID of the table."
        },
        "project": {
          "type": "string",
          "description": "The Google Cloud Platform project ID of the project containing the table. If omitted, project ID is inferred from the API call."
        },
        "tableId": {
          "type": "string",
          "description": "Name of the table."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "project",
        "tableId"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryTableTypes": {
      "description": "The types of BigQuery tables supported by Cloud DLP.",
      "properties": {
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableTypesTypesItem"
          },
          "description": "A set of BigQuery table types."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryTableTypesResponse": {
      "description": "The types of BigQuery tables supported by Cloud DLP.",
      "properties": {
        "types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of BigQuery table types."
        }
      },
      "type": "object",
      "required": [
        "types"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BigQueryTableTypesTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "BigQueryTableTypeUnspecified",
          "description": "Unused.",
          "value": "BIG_QUERY_TABLE_TYPE_UNSPECIFIED"
        },
        {
          "name": "BigQueryTableTypeTable",
          "description": "A normal BigQuery table.",
          "value": "BIG_QUERY_TABLE_TYPE_TABLE"
        },
        {
          "name": "BigQueryTableTypeExternalBigLake",
          "description": "A table that references data stored in Cloud Storage.",
          "value": "BIG_QUERY_TABLE_TYPE_EXTERNAL_BIG_LAKE"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Bucket": {
      "description": "Bucket is represented as a range, along with replacement values.",
      "properties": {
        "max": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Value",
          "description": "Upper bound of the range, exclusive; type must match min."
        },
        "min": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Value",
          "description": "Lower bound of the range, inclusive. Type should be the same as max if used."
        },
        "replacementValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Value",
          "description": "Replacement value for this bucket."
        }
      },
      "type": "object",
      "required": [
        "replacementValue"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BucketResponse": {
      "description": "Bucket is represented as a range, along with replacement values.",
      "properties": {
        "max": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Upper bound of the range, exclusive; type must match min."
        },
        "min": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Lower bound of the range, inclusive. Type should be the same as max if used."
        },
        "replacementValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Replacement value for this bucket."
        }
      },
      "type": "object",
      "required": [
        "max",
        "min",
        "replacementValue"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BucketingConfig": {
      "description": "Generalization function that buckets values based on ranges. The ranges and replacement values are dynamically provided by the user for custom behavior, such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH This can be used on data of type: number, long, string, timestamp. If the bound `Value` type differs from the type of data being transformed, we will first attempt converting the type of the data to be transformed to match the type of the bound before comparing. See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Bucket"
          },
          "description": "Set of buckets. Ranges must be non-overlapping."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2BucketingConfigResponse": {
      "description": "Generalization function that buckets values based on ranges. The ranges and replacement values are dynamically provided by the user for custom behavior, such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH This can be used on data of type: number, long, string, timestamp. If the bound `Value` type differs from the type of data being transformed, we will first attempt converting the type of the data to be transformed to match the type of the bound before comparing. See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BucketResponse"
          },
          "description": "Set of buckets. Ranges must be non-overlapping."
        }
      },
      "type": "object",
      "required": [
        "buckets"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CategoricalStatsConfig": {
      "description": "Compute numerical stats over an individual column, including number of distinct values and value count distribution.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Field to compute categorical stats on. All column types are supported except for arrays and structs. However, it may be more informative to use NumericalStats when the field type is supported, depending on the data."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CategoricalStatsConfigResponse": {
      "description": "Compute numerical stats over an individual column, including number of distinct values and value count distribution.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Field to compute categorical stats on. All column types are supported except for arrays and structs. However, it may be more informative to use NumericalStats when the field type is supported, depending on the data."
        }
      },
      "type": "object",
      "required": [
        "field"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CategoricalStatsHistogramBucketResponse": {
      "description": "Histogram of value frequencies in the column.",
      "properties": {
        "bucketSize": {
          "type": "string",
          "description": "Total number of values in this bucket."
        },
        "bucketValueCount": {
          "type": "string",
          "description": "Total number of distinct values in this bucket."
        },
        "bucketValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueFrequencyResponse"
          },
          "description": "Sample of value frequencies in this bucket. The total number of values returned per bucket is capped at 20."
        },
        "valueFrequencyLowerBound": {
          "type": "string",
          "description": "Lower bound on the value frequency of the values in this bucket."
        },
        "valueFrequencyUpperBound": {
          "type": "string",
          "description": "Upper bound on the value frequency of the values in this bucket."
        }
      },
      "type": "object",
      "required": [
        "bucketSize",
        "bucketValueCount",
        "bucketValues",
        "valueFrequencyLowerBound",
        "valueFrequencyUpperBound"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CategoricalStatsResultResponse": {
      "description": "Result of the categorical stats computation.",
      "properties": {
        "valueFrequencyHistogramBuckets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CategoricalStatsHistogramBucketResponse"
          },
          "description": "Histogram of value frequencies in the column."
        }
      },
      "type": "object",
      "required": [
        "valueFrequencyHistogramBuckets"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CharacterMaskConfig": {
      "description": "Partially mask a string by replacing a given number of characters with a fixed character. Masking can start from the beginning or end of the string. This can be used on data of any type (numbers, longs, and so on) and when de-identifying structured data we'll attempt to preserve the original data's type. (This allows you to take a long like 123 and modify it to a string like **3.",
      "properties": {
        "charactersToIgnore": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CharsToIgnore"
          },
          "description": "When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`."
        },
        "maskingCharacter": {
          "type": "string",
          "description": "Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits."
        },
        "numberToMask": {
          "type": "integer",
          "description": "Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally. If `number_to_mask` is negative, this denotes inverse masking. Cloud DLP masks all but a number of characters. For example, suppose you have the following values: - `masking_character` is `*` - `number_to_mask` is `-4` - `reverse_order` is `false` - `CharsToIgnore` includes `-` - Input string is `1234-5678-9012-3456` The resulting de-identified string is `****-****-****-3456`. Cloud DLP masks all but the last four characters. If `reverse_order` is `true`, all but the first four characters are masked as `1234-****-****-****`."
        },
        "reverseOrder": {
          "type": "boolean",
          "description": "Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CharacterMaskConfigResponse": {
      "description": "Partially mask a string by replacing a given number of characters with a fixed character. Masking can start from the beginning or end of the string. This can be used on data of any type (numbers, longs, and so on) and when de-identifying structured data we'll attempt to preserve the original data's type. (This allows you to take a long like 123 and modify it to a string like **3.",
      "properties": {
        "charactersToIgnore": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CharsToIgnoreResponse"
          },
          "description": "When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`."
        },
        "maskingCharacter": {
          "type": "string",
          "description": "Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits."
        },
        "numberToMask": {
          "type": "integer",
          "description": "Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally. If `number_to_mask` is negative, this denotes inverse masking. Cloud DLP masks all but a number of characters. For example, suppose you have the following values: - `masking_character` is `*` - `number_to_mask` is `-4` - `reverse_order` is `false` - `CharsToIgnore` includes `-` - Input string is `1234-5678-9012-3456` The resulting de-identified string is `****-****-****-3456`. Cloud DLP masks all but the last four characters. If `reverse_order` is `true`, all but the first four characters are masked as `1234-****-****-****`."
        },
        "reverseOrder": {
          "type": "boolean",
          "description": "Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`."
        }
      },
      "type": "object",
      "required": [
        "charactersToIgnore",
        "maskingCharacter",
        "numberToMask",
        "reverseOrder"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CharsToIgnore": {
      "description": "Characters to skip when doing deidentification of a value. These will be left alone and skipped.",
      "properties": {
        "charactersToSkip": {
          "type": "string",
          "description": "Characters to not transform when masking."
        },
        "commonCharactersToIgnore": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CharsToIgnoreCommonCharactersToIgnore",
          "description": "Common characters to not transform when masking. Useful to avoid removing punctuation."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CharsToIgnoreCommonCharactersToIgnore": {
      "description": "Common characters to not transform when masking. Useful to avoid removing punctuation.",
      "type": "string",
      "enum": [
        {
          "name": "CommonCharsToIgnoreUnspecified",
          "description": "Unused.",
          "value": "COMMON_CHARS_TO_IGNORE_UNSPECIFIED"
        },
        {
          "name": "Numeric",
          "description": "0-9",
          "value": "NUMERIC"
        },
        {
          "name": "AlphaUpperCase",
          "description": "A-Z",
          "value": "ALPHA_UPPER_CASE"
        },
        {
          "name": "AlphaLowerCase",
          "description": "a-z",
          "value": "ALPHA_LOWER_CASE"
        },
        {
          "name": "Punctuation",
          "description": "US Punctuation, one of !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
          "value": "PUNCTUATION"
        },
        {
          "name": "Whitespace",
          "description": "Whitespace character, one of [ \\t\\n\\x0B\\f\\r]",
          "value": "WHITESPACE"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CharsToIgnoreResponse": {
      "description": "Characters to skip when doing deidentification of a value. These will be left alone and skipped.",
      "properties": {
        "charactersToSkip": {
          "type": "string",
          "description": "Characters to not transform when masking."
        },
        "commonCharactersToIgnore": {
          "type": "string",
          "description": "Common characters to not transform when masking. Useful to avoid removing punctuation."
        }
      },
      "type": "object",
      "required": [
        "charactersToSkip",
        "commonCharactersToIgnore"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStorageFileSet": {
      "description": "Message representing a set of files in Cloud Storage.",
      "properties": {
        "url": {
          "type": "string",
          "description": "The url, in the format `gs:///`. Trailing wildcard in the path is allowed."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStorageFileSetResponse": {
      "description": "Message representing a set of files in Cloud Storage.",
      "properties": {
        "url": {
          "type": "string",
          "description": "The url, in the format `gs:///`. Trailing wildcard in the path is allowed."
        }
      },
      "type": "object",
      "required": [
        "url"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStorageOptions": {
      "description": "Options defining a file or a set of files within a Cloud Storage bucket.",
      "properties": {
        "bytesLimitPerFile": {
          "type": "string",
          "description": "Max number of bytes to scan from a file. If a scanned file's size is bigger than this value then the rest of the bytes are omitted. Only one of `bytes_limit_per_file` and `bytes_limit_per_file_percent` can be specified. This field can't be set if de-identification is requested. For certain file types, setting this field has no effect. For more information, see [Limits on bytes scanned per file](https://cloud.google.com/dlp/docs/supported-file-types#max-byte-size-per-file)."
        },
        "bytesLimitPerFilePercent": {
          "type": "integer",
          "description": "Max percentage of bytes to scan from a file. The rest are omitted. The number of bytes scanned is rounded down. Must be between 0 and 100, inclusively. Both 0 and 100 means no limit. Defaults to 0. Only one of bytes_limit_per_file and bytes_limit_per_file_percent can be specified. This field can't be set if de-identification is requested. For certain file types, setting this field has no effect. For more information, see [Limits on bytes scanned per file](https://cloud.google.com/dlp/docs/supported-file-types#max-byte-size-per-file)."
        },
        "fileSet": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FileSet",
          "description": "The set of one or more files to scan."
        },
        "fileTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStorageOptionsFileTypesItem"
          },
          "description": "List of file type groups to include in the scan. If empty, all files are scanned and available data format processors are applied. In addition, the binary content of the selected files is always scanned as well. Images are scanned only as binary if the specified region does not support image inspection and no file_types were specified. Image inspection is restricted to 'global', 'us', 'asia', and 'europe'."
        },
        "filesLimitPercent": {
          "type": "integer",
          "description": "Limits the number of files to scan to this percentage of the input FileSet. Number of files scanned is rounded down. Must be between 0 and 100, inclusively. Both 0 and 100 means no limit. Defaults to 0."
        },
        "sampleMethod": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStorageOptionsSampleMethod"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStorageOptionsFileTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "FileTypeUnspecified",
          "description": "Includes all files.",
          "value": "FILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "BinaryFile",
          "description": "Includes all file extensions not covered by another entry. Binary scanning attempts to convert the content of the file to utf_8 to scan the file. If you wish to avoid this fall back, specify one or more of the other file types in your storage scan.",
          "value": "BINARY_FILE"
        },
        {
          "name": "TextFile",
          "description": "Included file extensions: asc,asp, aspx, brf, c, cc,cfm, cgi, cpp, csv, cxx, c++, cs, css, dart, dat, dot, eml,, epbub, ged, go, h, hh, hpp, hxx, h++, hs, html, htm, mkd, markdown, m, ml, mli, perl, pl, plist, pm, php, phtml, pht, properties, py, pyw, rb, rbw, rs, rss, rc, scala, sh, sql, swift, tex, shtml, shtm, xhtml, lhs, ics, ini, java, js, json, kix, kml, ocaml, md, txt, text, tsv, vb, vcard, vcs, wml, xcodeproj, xml, xsl, xsd, yml, yaml.",
          "value": "TEXT_FILE"
        },
        {
          "name": "Image",
          "description": "Included file extensions: bmp, gif, jpg, jpeg, jpe, png. Setting bytes_limit_per_file or bytes_limit_per_file_percent has no effect on image files. Image inspection is restricted to the `global`, `us`, `asia`, and `europe` regions.",
          "value": "IMAGE"
        },
        {
          "name": "Word",
          "description": "Microsoft Word files larger than 30 MB will be scanned as binary files. Included file extensions: docx, dotx, docm, dotm. Setting `bytes_limit_per_file` or `bytes_limit_per_file_percent` has no effect on Word files.",
          "value": "WORD"
        },
        {
          "name": "Pdf",
          "description": "PDF files larger than 30 MB will be scanned as binary files. Included file extensions: pdf. Setting `bytes_limit_per_file` or `bytes_limit_per_file_percent` has no effect on PDF files.",
          "value": "PDF"
        },
        {
          "name": "Avro",
          "description": "Included file extensions: avro",
          "value": "AVRO"
        },
        {
          "name": "Csv",
          "description": "Included file extensions: csv",
          "value": "CSV"
        },
        {
          "name": "Tsv",
          "description": "Included file extensions: tsv",
          "value": "TSV"
        },
        {
          "name": "Powerpoint",
          "description": "Microsoft PowerPoint files larger than 30 MB will be scanned as binary files. Included file extensions: pptx, pptm, potx, potm, pot. Setting `bytes_limit_per_file` or `bytes_limit_per_file_percent` has no effect on PowerPoint files.",
          "value": "POWERPOINT"
        },
        {
          "name": "Excel",
          "description": "Microsoft Excel files larger than 30 MB will be scanned as binary files. Included file extensions: xlsx, xlsm, xltx, xltm. Setting `bytes_limit_per_file` or `bytes_limit_per_file_percent` has no effect on Excel files.",
          "value": "EXCEL"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStorageOptionsResponse": {
      "description": "Options defining a file or a set of files within a Cloud Storage bucket.",
      "properties": {
        "bytesLimitPerFile": {
          "type": "string",
          "description": "Max number of bytes to scan from a file. If a scanned file's size is bigger than this value then the rest of the bytes are omitted. Only one of `bytes_limit_per_file` and `bytes_limit_per_file_percent` can be specified. This field can't be set if de-identification is requested. For certain file types, setting this field has no effect. For more information, see [Limits on bytes scanned per file](https://cloud.google.com/dlp/docs/supported-file-types#max-byte-size-per-file)."
        },
        "bytesLimitPerFilePercent": {
          "type": "integer",
          "description": "Max percentage of bytes to scan from a file. The rest are omitted. The number of bytes scanned is rounded down. Must be between 0 and 100, inclusively. Both 0 and 100 means no limit. Defaults to 0. Only one of bytes_limit_per_file and bytes_limit_per_file_percent can be specified. This field can't be set if de-identification is requested. For certain file types, setting this field has no effect. For more information, see [Limits on bytes scanned per file](https://cloud.google.com/dlp/docs/supported-file-types#max-byte-size-per-file)."
        },
        "fileSet": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FileSetResponse",
          "description": "The set of one or more files to scan."
        },
        "fileTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of file type groups to include in the scan. If empty, all files are scanned and available data format processors are applied. In addition, the binary content of the selected files is always scanned as well. Images are scanned only as binary if the specified region does not support image inspection and no file_types were specified. Image inspection is restricted to 'global', 'us', 'asia', and 'europe'."
        },
        "filesLimitPercent": {
          "type": "integer",
          "description": "Limits the number of files to scan to this percentage of the input FileSet. Number of files scanned is rounded down. Must be between 0 and 100, inclusively. Both 0 and 100 means no limit. Defaults to 0."
        },
        "sampleMethod": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "bytesLimitPerFile",
        "bytesLimitPerFilePercent",
        "fileSet",
        "fileTypes",
        "filesLimitPercent",
        "sampleMethod"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStorageOptionsSampleMethod": {
      "type": "string",
      "enum": [
        {
          "name": "SampleMethodUnspecified",
          "value": "SAMPLE_METHOD_UNSPECIFIED"
        },
        {
          "name": "Top",
          "description": "Scan from the top (default).",
          "value": "TOP"
        },
        {
          "name": "RandomStart",
          "description": "For each file larger than bytes_limit_per_file, randomly pick the offset to start scanning. The scanned bytes are contiguous.",
          "value": "RANDOM_START"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStoragePath": {
      "description": "Message representing a single file or path in Cloud Storage.",
      "properties": {
        "path": {
          "type": "string",
          "description": "A url representing a file or path (no wildcards) in Cloud Storage. Example: gs://[BUCKET_NAME]/dictionary.txt"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStoragePathResponse": {
      "description": "Message representing a single file or path in Cloud Storage.",
      "properties": {
        "path": {
          "type": "string",
          "description": "A url representing a file or path (no wildcards) in Cloud Storage. Example: gs://[BUCKET_NAME]/dictionary.txt"
        }
      },
      "type": "object",
      "required": [
        "path"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStorageRegexFileSet": {
      "description": "Message representing a set of files in a Cloud Storage bucket. Regular expressions are used to allow fine-grained control over which files in the bucket to include. Included files are those that match at least one item in `include_regex` and do not match any items in `exclude_regex`. Note that a file that matches items from both lists will _not_ be included. For a match to occur, the entire file path (i.e., everything in the url after the bucket name) must match the regular expression. For example, given the input `{bucket_name: \"mybucket\", include_regex: [\"directory1/.*\"], exclude_regex: [\"directory1/excluded.*\"]}`: * `gs://mybucket/directory1/myfile` will be included * `gs://mybucket/directory1/directory2/myfile` will be included (`.*` matches across `/`) * `gs://mybucket/directory0/directory1/myfile` will _not_ be included (the full path doesn't match any items in `include_regex`) * `gs://mybucket/directory1/excludedfile` will _not_ be included (the path matches an item in `exclude_regex`) If `include_regex` is left empty, it will match all files by default (this is equivalent to setting `include_regex: [\".*\"]`). Some other common use cases: * `{bucket_name: \"mybucket\", exclude_regex: [\".*\\.pdf\"]}` will include all files in `mybucket` except for .pdf files * `{bucket_name: \"mybucket\", include_regex: [\"directory/[^/]+\"]}` will include all files directly under `gs://mybucket/directory/`, without matching across `/`",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "The name of a Cloud Storage bucket. Required."
        },
        "excludeRegex": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of regular expressions matching file paths to exclude. All files in the bucket that match at least one of these regular expressions will be excluded from the scan. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub."
        },
        "includeRegex": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of regular expressions matching file paths to include. All files in the bucket that match at least one of these regular expressions will be included in the set of files, except for those that also match an item in `exclude_regex`. Leaving this field empty will match all files by default (this is equivalent to including `.*` in the list). Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CloudStorageRegexFileSetResponse": {
      "description": "Message representing a set of files in a Cloud Storage bucket. Regular expressions are used to allow fine-grained control over which files in the bucket to include. Included files are those that match at least one item in `include_regex` and do not match any items in `exclude_regex`. Note that a file that matches items from both lists will _not_ be included. For a match to occur, the entire file path (i.e., everything in the url after the bucket name) must match the regular expression. For example, given the input `{bucket_name: \"mybucket\", include_regex: [\"directory1/.*\"], exclude_regex: [\"directory1/excluded.*\"]}`: * `gs://mybucket/directory1/myfile` will be included * `gs://mybucket/directory1/directory2/myfile` will be included (`.*` matches across `/`) * `gs://mybucket/directory0/directory1/myfile` will _not_ be included (the full path doesn't match any items in `include_regex`) * `gs://mybucket/directory1/excludedfile` will _not_ be included (the path matches an item in `exclude_regex`) If `include_regex` is left empty, it will match all files by default (this is equivalent to setting `include_regex: [\".*\"]`). Some other common use cases: * `{bucket_name: \"mybucket\", exclude_regex: [\".*\\.pdf\"]}` will include all files in `mybucket` except for .pdf files * `{bucket_name: \"mybucket\", include_regex: [\"directory/[^/]+\"]}` will include all files directly under `gs://mybucket/directory/`, without matching across `/`",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "The name of a Cloud Storage bucket. Required."
        },
        "excludeRegex": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of regular expressions matching file paths to exclude. All files in the bucket that match at least one of these regular expressions will be excluded from the scan. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub."
        },
        "includeRegex": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of regular expressions matching file paths to include. All files in the bucket that match at least one of these regular expressions will be included in the set of files, except for those that also match an item in `exclude_regex`. Leaving this field empty will match all files by default (this is equivalent to including `.*` in the list). Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "excludeRegex",
        "includeRegex"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Color": {
      "description": "Represents a color in the RGB color space.",
      "properties": {
        "blue": {
          "type": "number",
          "description": "The amount of blue in the color as a value in the interval [0, 1]."
        },
        "green": {
          "type": "number",
          "description": "The amount of green in the color as a value in the interval [0, 1]."
        },
        "red": {
          "type": "number",
          "description": "The amount of red in the color as a value in the interval [0, 1]."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ColorResponse": {
      "description": "Represents a color in the RGB color space.",
      "properties": {
        "blue": {
          "type": "number",
          "description": "The amount of blue in the color as a value in the interval [0, 1]."
        },
        "green": {
          "type": "number",
          "description": "The amount of green in the color as a value in the interval [0, 1]."
        },
        "red": {
          "type": "number",
          "description": "The amount of red in the color as a value in the interval [0, 1]."
        }
      },
      "type": "object",
      "required": [
        "blue",
        "green",
        "red"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Condition": {
      "description": "The field type of `value` and `field` do not need to match to be considered equal, but not all comparisons are possible. EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types, but all other comparisons are invalid with incompatible types. A `value` of type: - `string` can be compared against all other types - `boolean` can only be compared against other booleans - `integer` can be compared against doubles or a string if the string value can be parsed as an integer. - `double` can be compared against integers or a string if the string can be parsed as a double. - `Timestamp` can be compared against strings in RFC 3339 date string format. - `TimeOfDay` can be compared against timestamps and strings in the format of 'HH:mm:ss'. If we fail to compare do to type mismatch, a warning will be given and the condition will evaluate to false.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Field within the record this condition is evaluated against."
        },
        "operator": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ConditionOperator",
          "description": "Operator used to compare the field or infoType to the value."
        },
        "value": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Value",
          "description": "Value to compare against. [Mandatory, except for `EXISTS` tests.]"
        }
      },
      "type": "object",
      "required": [
        "field",
        "operator"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ConditionOperator": {
      "description": "Required. Operator used to compare the field or infoType to the value.",
      "type": "string",
      "enum": [
        {
          "name": "RelationalOperatorUnspecified",
          "description": "Unused",
          "value": "RELATIONAL_OPERATOR_UNSPECIFIED"
        },
        {
          "name": "EqualTo",
          "description": "Equal. Attempts to match even with incompatible types.",
          "value": "EQUAL_TO"
        },
        {
          "name": "NotEqualTo",
          "description": "Not equal to. Attempts to match even with incompatible types.",
          "value": "NOT_EQUAL_TO"
        },
        {
          "name": "GreaterThan",
          "description": "Greater than.",
          "value": "GREATER_THAN"
        },
        {
          "name": "LessThan",
          "description": "Less than.",
          "value": "LESS_THAN"
        },
        {
          "name": "GreaterThanOrEquals",
          "description": "Greater than or equals.",
          "value": "GREATER_THAN_OR_EQUALS"
        },
        {
          "name": "LessThanOrEquals",
          "description": "Less than or equals.",
          "value": "LESS_THAN_OR_EQUALS"
        },
        {
          "name": "Exists",
          "description": "Exists",
          "value": "EXISTS"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ConditionResponse": {
      "description": "The field type of `value` and `field` do not need to match to be considered equal, but not all comparisons are possible. EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types, but all other comparisons are invalid with incompatible types. A `value` of type: - `string` can be compared against all other types - `boolean` can only be compared against other booleans - `integer` can be compared against doubles or a string if the string value can be parsed as an integer. - `double` can be compared against integers or a string if the string can be parsed as a double. - `Timestamp` can be compared against strings in RFC 3339 date string format. - `TimeOfDay` can be compared against timestamps and strings in the format of 'HH:mm:ss'. If we fail to compare do to type mismatch, a warning will be given and the condition will evaluate to false.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Field within the record this condition is evaluated against."
        },
        "operator": {
          "type": "string",
          "description": "Operator used to compare the field or infoType to the value."
        },
        "value": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Value to compare against. [Mandatory, except for `EXISTS` tests.]"
        }
      },
      "type": "object",
      "required": [
        "field",
        "operator",
        "value"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Conditions": {
      "description": "A collection of conditions.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Condition"
          },
          "description": "A collection of conditions."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ConditionsResponse": {
      "description": "A collection of conditions.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ConditionResponse"
          },
          "description": "A collection of conditions."
        }
      },
      "type": "object",
      "required": [
        "conditions"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoDeterministicConfig": {
      "description": "Pseudonymization method that generates deterministic encryption for the given input. Outputs a base64 encoded representation of the encrypted output. Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.",
      "properties": {
        "context": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s."
        },
        "cryptoKey": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoKey",
          "description": "The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use."
        },
        "surrogateInfoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType",
          "description": "The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoDeterministicConfigResponse": {
      "description": "Pseudonymization method that generates deterministic encryption for the given input. Outputs a base64 encoded representation of the encrypted output. Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.",
      "properties": {
        "context": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s."
        },
        "cryptoKey": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoKeyResponse",
          "description": "The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use."
        },
        "surrogateInfoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse",
          "description": "The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE."
        }
      },
      "type": "object",
      "required": [
        "context",
        "cryptoKey",
        "surrogateInfoType"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoHashConfig": {
      "description": "Pseudonymization method that generates surrogates via cryptographic hashing. Uses SHA-256. The key size must be either 32 or 64 bytes. Outputs a base64 encoded representation of the hashed output (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=). Currently, only string and integer values can be hashed. See https://cloud.google.com/dlp/docs/pseudonymization to learn more.",
      "properties": {
        "cryptoKey": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoKey",
          "description": "The key used by the hash function."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoHashConfigResponse": {
      "description": "Pseudonymization method that generates surrogates via cryptographic hashing. Uses SHA-256. The key size must be either 32 or 64 bytes. Outputs a base64 encoded representation of the hashed output (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=). Currently, only string and integer values can be hashed. See https://cloud.google.com/dlp/docs/pseudonymization to learn more.",
      "properties": {
        "cryptoKey": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoKeyResponse",
          "description": "The key used by the hash function."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoKey": {
      "description": "This is a data encryption key (DEK) (as opposed to a key encryption key (KEK) stored by Cloud Key Management Service (Cloud KMS). When using Cloud KMS to wrap or unwrap a DEK, be sure to set an appropriate IAM policy on the KEK to ensure an attacker cannot unwrap the DEK.",
      "properties": {
        "kmsWrapped": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KmsWrappedCryptoKey",
          "description": "Key wrapped using Cloud KMS"
        },
        "transient": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TransientCryptoKey",
          "description": "Transient crypto key"
        },
        "unwrapped": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2UnwrappedCryptoKey",
          "description": "Unwrapped crypto key"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoKeyResponse": {
      "description": "This is a data encryption key (DEK) (as opposed to a key encryption key (KEK) stored by Cloud Key Management Service (Cloud KMS). When using Cloud KMS to wrap or unwrap a DEK, be sure to set an appropriate IAM policy on the KEK to ensure an attacker cannot unwrap the DEK.",
      "properties": {
        "kmsWrapped": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KmsWrappedCryptoKeyResponse",
          "description": "Key wrapped using Cloud KMS"
        },
        "transient": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TransientCryptoKeyResponse",
          "description": "Transient crypto key"
        },
        "unwrapped": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2UnwrappedCryptoKeyResponse",
          "description": "Unwrapped crypto key"
        }
      },
      "type": "object",
      "required": [
        "kmsWrapped",
        "transient",
        "unwrapped"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig": {
      "description": "Replaces an identifier with a surrogate using Format Preserving Encryption (FPE) with the FFX mode of operation; however when used in the `ReidentifyContent` API method, it serves the opposite function by reversing the surrogate back into the original identifier. The identifier must be encoded as ASCII. For a given crypto key and context, the same identifier will be replaced with the same surrogate. Identifiers must be at least two characters long. In the case that the identifier is the empty string, it will be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn more. Note: We recommend using CryptoDeterministicConfig for all use cases which do not require preserving the input alphabet space and size, plus warrant referential integrity.",
      "properties": {
        "commonAlphabet": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoReplaceFfxFpeConfigCommonAlphabet",
          "description": "Common alphabets."
        },
        "context": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2"
        },
        "cryptoKey": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoKey",
          "description": "The key used by the encryption algorithm."
        },
        "customAlphabet": {
          "type": "string",
          "description": "This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/"
        },
        "radix": {
          "type": "integer",
          "description": "The native way to select the alphabet. Must be in the range [2, 95]."
        },
        "surrogateInfoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType",
          "description": "The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE"
        }
      },
      "type": "object",
      "required": [
        "cryptoKey"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoReplaceFfxFpeConfigCommonAlphabet": {
      "description": "Common alphabets.",
      "type": "string",
      "enum": [
        {
          "name": "FfxCommonNativeAlphabetUnspecified",
          "description": "Unused.",
          "value": "FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED"
        },
        {
          "name": "Numeric",
          "description": "`[0-9]` (radix of 10)",
          "value": "NUMERIC"
        },
        {
          "name": "Hexadecimal",
          "description": "`[0-9A-F]` (radix of 16)",
          "value": "HEXADECIMAL"
        },
        {
          "name": "UpperCaseAlphaNumeric",
          "description": "`[0-9A-Z]` (radix of 36)",
          "value": "UPPER_CASE_ALPHA_NUMERIC"
        },
        {
          "name": "AlphaNumeric",
          "description": "`[0-9A-Za-z]` (radix of 62)",
          "value": "ALPHA_NUMERIC"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CryptoReplaceFfxFpeConfigResponse": {
      "description": "Replaces an identifier with a surrogate using Format Preserving Encryption (FPE) with the FFX mode of operation; however when used in the `ReidentifyContent` API method, it serves the opposite function by reversing the surrogate back into the original identifier. The identifier must be encoded as ASCII. For a given crypto key and context, the same identifier will be replaced with the same surrogate. Identifiers must be at least two characters long. In the case that the identifier is the empty string, it will be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn more. Note: We recommend using CryptoDeterministicConfig for all use cases which do not require preserving the input alphabet space and size, plus warrant referential integrity.",
      "properties": {
        "commonAlphabet": {
          "type": "string",
          "description": "Common alphabets."
        },
        "context": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2"
        },
        "cryptoKey": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoKeyResponse",
          "description": "The key used by the encryption algorithm."
        },
        "customAlphabet": {
          "type": "string",
          "description": "This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/"
        },
        "radix": {
          "type": "integer",
          "description": "The native way to select the alphabet. Must be in the range [2, 95]."
        },
        "surrogateInfoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse",
          "description": "The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE"
        }
      },
      "type": "object",
      "required": [
        "commonAlphabet",
        "context",
        "cryptoKey",
        "customAlphabet",
        "radix",
        "surrogateInfoType"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CustomInfoType": {
      "description": "Custom information type provided by the user. Used to find domain-specific sensitive information configurable to the data in question.",
      "properties": {
        "detectionRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DetectionRule"
          },
          "description": "Set of detection rules to apply to all findings of this CustomInfoType. Rules are applied in order that they are specified. Not supported for the `surrogate_type` CustomInfoType."
        },
        "dictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Dictionary",
          "description": "A list of phrases to detect as a CustomInfoType."
        },
        "exclusionType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CustomInfoTypeExclusionType",
          "description": "If set to EXCLUSION_TYPE_EXCLUDE this infoType will not cause a finding to be returned. It still can be used for rules matching."
        },
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType",
          "description": "CustomInfoType can either be a new infoType, or an extension of built-in infoType, when the name matches one of existing infoTypes and that infoType is specified in `InspectContent.info_types` field. Specifying the latter adds findings to the one detected by the system. If built-in info type is not specified in `InspectContent.info_types` list then the name is treated as a custom info type."
        },
        "likelihood": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CustomInfoTypeLikelihood",
          "description": "Likelihood to return for this CustomInfoType. This base value can be altered by a detection rule if the finding meets the criteria specified by the rule. Defaults to `VERY_LIKELY` if not specified."
        },
        "regex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Regex",
          "description": "Regular expression based CustomInfoType."
        },
        "sensitivityScore": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SensitivityScore",
          "description": "Sensitivity for this CustomInfoType. If this CustomInfoType extends an existing InfoType, the sensitivity here will take precedence over that of the original InfoType. If unset for a CustomInfoType, it will default to HIGH. This only applies to data profiling."
        },
        "storedType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredType",
          "description": "Load an existing `StoredInfoType` resource for use in `InspectDataSource`. Not currently supported in `InspectContent`."
        },
        "surrogateType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SurrogateType",
          "description": "Message for detecting output from deidentification transformations that support reversing."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CustomInfoTypeExclusionType": {
      "description": "If set to EXCLUSION_TYPE_EXCLUDE this infoType will not cause a finding to be returned. It still can be used for rules matching.",
      "type": "string",
      "enum": [
        {
          "name": "ExclusionTypeUnspecified",
          "description": "A finding of this custom info type will not be excluded from results.",
          "value": "EXCLUSION_TYPE_UNSPECIFIED"
        },
        {
          "name": "ExclusionTypeExclude",
          "description": "A finding of this custom info type will be excluded from final results, but can still affect rule execution.",
          "value": "EXCLUSION_TYPE_EXCLUDE"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CustomInfoTypeLikelihood": {
      "description": "Likelihood to return for this CustomInfoType. This base value can be altered by a detection rule if the finding meets the criteria specified by the rule. Defaults to `VERY_LIKELY` if not specified.",
      "type": "string",
      "enum": [
        {
          "name": "LikelihoodUnspecified",
          "description": "Default value; same as POSSIBLE.",
          "value": "LIKELIHOOD_UNSPECIFIED"
        },
        {
          "name": "VeryUnlikely",
          "description": "Highest chance of a false positive.",
          "value": "VERY_UNLIKELY"
        },
        {
          "name": "Unlikely",
          "description": "High chance of a false positive.",
          "value": "UNLIKELY"
        },
        {
          "name": "Possible",
          "description": "Some matching signals. The default value.",
          "value": "POSSIBLE"
        },
        {
          "name": "Likely",
          "description": "Low chance of a false positive.",
          "value": "LIKELY"
        },
        {
          "name": "VeryLikely",
          "description": "Confidence level is high. Lowest chance of a false positive.",
          "value": "VERY_LIKELY"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2CustomInfoTypeResponse": {
      "description": "Custom information type provided by the user. Used to find domain-specific sensitive information configurable to the data in question.",
      "properties": {
        "detectionRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DetectionRuleResponse"
          },
          "description": "Set of detection rules to apply to all findings of this CustomInfoType. Rules are applied in order that they are specified. Not supported for the `surrogate_type` CustomInfoType."
        },
        "dictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DictionaryResponse",
          "description": "A list of phrases to detect as a CustomInfoType."
        },
        "exclusionType": {
          "type": "string",
          "description": "If set to EXCLUSION_TYPE_EXCLUDE this infoType will not cause a finding to be returned. It still can be used for rules matching."
        },
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse",
          "description": "CustomInfoType can either be a new infoType, or an extension of built-in infoType, when the name matches one of existing infoTypes and that infoType is specified in `InspectContent.info_types` field. Specifying the latter adds findings to the one detected by the system. If built-in info type is not specified in `InspectContent.info_types` list then the name is treated as a custom info type."
        },
        "likelihood": {
          "type": "string",
          "description": "Likelihood to return for this CustomInfoType. This base value can be altered by a detection rule if the finding meets the criteria specified by the rule. Defaults to `VERY_LIKELY` if not specified."
        },
        "regex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RegexResponse",
          "description": "Regular expression based CustomInfoType."
        },
        "sensitivityScore": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SensitivityScoreResponse",
          "description": "Sensitivity for this CustomInfoType. If this CustomInfoType extends an existing InfoType, the sensitivity here will take precedence over that of the original InfoType. If unset for a CustomInfoType, it will default to HIGH. This only applies to data profiling."
        },
        "storedType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredTypeResponse",
          "description": "Load an existing `StoredInfoType` resource for use in `InspectDataSource`. Not currently supported in `InspectContent`."
        },
        "surrogateType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SurrogateTypeResponse",
          "description": "Message for detecting output from deidentification transformations that support reversing."
        }
      },
      "type": "object",
      "required": [
        "detectionRules",
        "dictionary",
        "exclusionType",
        "infoType",
        "likelihood",
        "regex",
        "sensitivityScore",
        "storedType",
        "surrogateType"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DataProfileAction": {
      "description": "A task to execute when a data profile has been generated.",
      "properties": {
        "exportData": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Export",
          "description": "Export data profiles into a provided location."
        },
        "pubSubNotification": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubNotification",
          "description": "Publish a message into the Pub/Sub topic."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DataProfileActionResponse": {
      "description": "A task to execute when a data profile has been generated.",
      "properties": {
        "exportData": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExportResponse",
          "description": "Export data profiles into a provided location."
        },
        "pubSubNotification": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubNotificationResponse",
          "description": "Publish a message into the Pub/Sub topic."
        }
      },
      "type": "object",
      "required": [
        "exportData",
        "pubSubNotification"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DataProfilePubSubCondition": {
      "description": "A condition for determining whether a Pub/Sub should be triggered.",
      "properties": {
        "expressions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubExpressions",
          "description": "An expression."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DataProfilePubSubConditionResponse": {
      "description": "A condition for determining whether a Pub/Sub should be triggered.",
      "properties": {
        "expressions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubExpressionsResponse",
          "description": "An expression."
        }
      },
      "type": "object",
      "required": [
        "expressions"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DatastoreOptions": {
      "description": "Options defining a data set within Google Cloud Datastore.",
      "properties": {
        "kind": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KindExpression",
          "description": "The kind to process."
        },
        "partitionId": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PartitionId",
          "description": "A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DatastoreOptionsResponse": {
      "description": "Options defining a data set within Google Cloud Datastore.",
      "properties": {
        "kind": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KindExpressionResponse",
          "description": "The kind to process."
        },
        "partitionId": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PartitionIdResponse",
          "description": "A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "partitionId"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DateShiftConfig": {
      "description": "Shifts dates by random number of days, with option to be consistent for the same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting to learn more.",
      "properties": {
        "context": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context."
        },
        "cryptoKey": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoKey",
          "description": "Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items."
        },
        "lowerBoundDays": {
          "type": "integer",
          "description": "For example, -5 means shift date to at most 5 days back in the past."
        },
        "upperBoundDays": {
          "type": "integer",
          "description": "Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future."
        }
      },
      "type": "object",
      "required": [
        "lowerBoundDays",
        "upperBoundDays"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DateShiftConfigResponse": {
      "description": "Shifts dates by random number of days, with option to be consistent for the same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting to learn more.",
      "properties": {
        "context": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context."
        },
        "cryptoKey": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoKeyResponse",
          "description": "Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items."
        },
        "lowerBoundDays": {
          "type": "integer",
          "description": "For example, -5 means shift date to at most 5 days back in the past."
        },
        "upperBoundDays": {
          "type": "integer",
          "description": "Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future."
        }
      },
      "type": "object",
      "required": [
        "context",
        "cryptoKey",
        "lowerBoundDays",
        "upperBoundDays"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Deidentify": {
      "description": "Create a de-identified copy of the requested table or files. A TransformationDetail will be created for each transformation. If any rows in BigQuery are skipped during de-identification (transformation errors or row size exceeds BigQuery insert API limits) they are placed in the failure output table. If the original row exceeds the BigQuery insert API limit it will be truncated when written to the failure output table. The failure output table can be set in the action.deidentify.output.big_query_output.deidentified_failure_output_table field, if no table is set, a table will be automatically created in the same project and dataset as the original table. Compatible with: Inspect",
      "properties": {
        "cloudStorageOutput": {
          "type": "string",
          "description": "User settable Cloud Storage bucket and folders to store de-identified files. This field must be set for cloud storage deidentification. The output Cloud Storage bucket must be different from the input bucket. De-identified files will overwrite files in the output path. Form of: gs://bucket/folder/ or gs://bucket"
        },
        "fileTypesToTransform": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyFileTypesToTransformItem"
          },
          "description": "List of user-specified file type groups to transform. If specified, only the files with these filetypes will be transformed. If empty, all supported files will be transformed. Supported types may be automatically added over time. If a file type is set in this field that isn't supported by the Deidentify action then the job will fail and will not be successfully created/started. Currently the only filetypes supported are: IMAGES, TEXT_FILES, CSV, TSV."
        },
        "transformationConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TransformationConfig",
          "description": "User specified deidentify templates and configs for structured, unstructured, and image files."
        },
        "transformationDetailsStorageConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TransformationDetailsStorageConfig",
          "description": "Config for storing transformation details. This is separate from the de-identified content, and contains metadata about the successful transformations and/or failures that occurred while de-identifying. This needs to be set in order for users to access information about the status of each transformation (see TransformationDetails message for more information about what is noted)."
        }
      },
      "type": "object",
      "required": [
        "cloudStorageOutput"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeidentifyConfig": {
      "description": "The configuration that controls how the data will change.",
      "properties": {
        "imageTransformations": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ImageTransformations",
          "description": "Treat the dataset as an image and redact."
        },
        "infoTypeTransformations": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeTransformations",
          "description": "Treat the dataset as free-form text and apply the same free text transformation everywhere."
        },
        "recordTransformations": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RecordTransformations",
          "description": "Treat the dataset as structured. Transformations can be applied to specific locations within structured datasets, such as transforming a column within a table."
        },
        "transformationErrorHandling": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TransformationErrorHandling",
          "description": "Mode for handling transformation errors. If left unspecified, the default mode is `TransformationErrorHandling.ThrowError`."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeidentifyConfigResponse": {
      "description": "The configuration that controls how the data will change.",
      "properties": {
        "imageTransformations": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ImageTransformationsResponse",
          "description": "Treat the dataset as an image and redact."
        },
        "infoTypeTransformations": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeTransformationsResponse",
          "description": "Treat the dataset as free-form text and apply the same free text transformation everywhere."
        },
        "recordTransformations": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RecordTransformationsResponse",
          "description": "Treat the dataset as structured. Transformations can be applied to specific locations within structured datasets, such as transforming a column within a table."
        },
        "transformationErrorHandling": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TransformationErrorHandlingResponse",
          "description": "Mode for handling transformation errors. If left unspecified, the default mode is `TransformationErrorHandling.ThrowError`."
        }
      },
      "type": "object",
      "required": [
        "imageTransformations",
        "infoTypeTransformations",
        "recordTransformations",
        "transformationErrorHandling"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeidentifyDataSourceDetailsResponse": {
      "description": "The results of a Deidentify action from an inspect job.",
      "properties": {
        "deidentifyStats": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyDataSourceStatsResponse",
          "description": "Stats about the de-identification operation."
        },
        "requestedOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RequestedDeidentifyOptionsResponse",
          "description": "De-identification config used for the request."
        }
      },
      "type": "object",
      "required": [
        "deidentifyStats",
        "requestedOptions"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeidentifyDataSourceStatsResponse": {
      "description": "Summary of what was modified during a transformation.",
      "properties": {
        "transformationCount": {
          "type": "string",
          "description": "Number of successfully applied transformations."
        },
        "transformationErrorCount": {
          "type": "string",
          "description": "Number of errors encountered while trying to apply transformations."
        },
        "transformedBytes": {
          "type": "string",
          "description": "Total size in bytes that were transformed in some way."
        }
      },
      "type": "object",
      "required": [
        "transformationCount",
        "transformationErrorCount",
        "transformedBytes"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeidentifyFileTypesToTransformItem": {
      "type": "string",
      "enum": [
        {
          "name": "FileTypeUnspecified",
          "description": "Includes all files.",
          "value": "FILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "BinaryFile",
          "description": "Includes all file extensions not covered by another entry. Binary scanning attempts to convert the content of the file to utf_8 to scan the file. If you wish to avoid this fall back, specify one or more of the other file types in your storage scan.",
          "value": "BINARY_FILE"
        },
        {
          "name": "TextFile",
          "description": "Included file extensions: asc,asp, aspx, brf, c, cc,cfm, cgi, cpp, csv, cxx, c++, cs, css, dart, dat, dot, eml,, epbub, ged, go, h, hh, hpp, hxx, h++, hs, html, htm, mkd, markdown, m, ml, mli, perl, pl, plist, pm, php, phtml, pht, properties, py, pyw, rb, rbw, rs, rss, rc, scala, sh, sql, swift, tex, shtml, shtm, xhtml, lhs, ics, ini, java, js, json, kix, kml, ocaml, md, txt, text, tsv, vb, vcard, vcs, wml, xcodeproj, xml, xsl, xsd, yml, yaml.",
          "value": "TEXT_FILE"
        },
        {
          "name": "Image",
          "description": "Included file extensions: bmp, gif, jpg, jpeg, jpe, png. Setting bytes_limit_per_file or bytes_limit_per_file_percent has no effect on image files. Image inspection is restricted to the `global`, `us`, `asia`, and `europe` regions.",
          "value": "IMAGE"
        },
        {
          "name": "Word",
          "description": "Microsoft Word files larger than 30 MB will be scanned as binary files. Included file extensions: docx, dotx, docm, dotm. Setting `bytes_limit_per_file` or `bytes_limit_per_file_percent` has no effect on Word files.",
          "value": "WORD"
        },
        {
          "name": "Pdf",
          "description": "PDF files larger than 30 MB will be scanned as binary files. Included file extensions: pdf. Setting `bytes_limit_per_file` or `bytes_limit_per_file_percent` has no effect on PDF files.",
          "value": "PDF"
        },
        {
          "name": "Avro",
          "description": "Included file extensions: avro",
          "value": "AVRO"
        },
        {
          "name": "Csv",
          "description": "Included file extensions: csv",
          "value": "CSV"
        },
        {
          "name": "Tsv",
          "description": "Included file extensions: tsv",
          "value": "TSV"
        },
        {
          "name": "Powerpoint",
          "description": "Microsoft PowerPoint files larger than 30 MB will be scanned as binary files. Included file extensions: pptx, pptm, potx, potm, pot. Setting `bytes_limit_per_file` or `bytes_limit_per_file_percent` has no effect on PowerPoint files.",
          "value": "POWERPOINT"
        },
        {
          "name": "Excel",
          "description": "Microsoft Excel files larger than 30 MB will be scanned as binary files. Included file extensions: xlsx, xlsm, xltx, xltm. Setting `bytes_limit_per_file` or `bytes_limit_per_file_percent` has no effect on Excel files.",
          "value": "EXCEL"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeidentifyResponse": {
      "description": "Create a de-identified copy of the requested table or files. A TransformationDetail will be created for each transformation. If any rows in BigQuery are skipped during de-identification (transformation errors or row size exceeds BigQuery insert API limits) they are placed in the failure output table. If the original row exceeds the BigQuery insert API limit it will be truncated when written to the failure output table. The failure output table can be set in the action.deidentify.output.big_query_output.deidentified_failure_output_table field, if no table is set, a table will be automatically created in the same project and dataset as the original table. Compatible with: Inspect",
      "properties": {
        "cloudStorageOutput": {
          "type": "string",
          "description": "User settable Cloud Storage bucket and folders to store de-identified files. This field must be set for cloud storage deidentification. The output Cloud Storage bucket must be different from the input bucket. De-identified files will overwrite files in the output path. Form of: gs://bucket/folder/ or gs://bucket"
        },
        "fileTypesToTransform": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of user-specified file type groups to transform. If specified, only the files with these filetypes will be transformed. If empty, all supported files will be transformed. Supported types may be automatically added over time. If a file type is set in this field that isn't supported by the Deidentify action then the job will fail and will not be successfully created/started. Currently the only filetypes supported are: IMAGES, TEXT_FILES, CSV, TSV."
        },
        "transformationConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TransformationConfigResponse",
          "description": "User specified deidentify templates and configs for structured, unstructured, and image files."
        },
        "transformationDetailsStorageConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TransformationDetailsStorageConfigResponse",
          "description": "Config for storing transformation details. This is separate from the de-identified content, and contains metadata about the successful transformations and/or failures that occurred while de-identifying. This needs to be set in order for users to access information about the status of each transformation (see TransformationDetails message for more information about what is noted)."
        }
      },
      "type": "object",
      "required": [
        "cloudStorageOutput",
        "fileTypesToTransform",
        "transformationConfig",
        "transformationDetailsStorageConfig"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeidentifyTemplateResponse": {
      "description": "DeidentifyTemplates contains instructions on how to de-identify content. See https://cloud.google.com/dlp/docs/concepts-templates to learn more.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of an inspectTemplate."
        },
        "deidentifyConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyConfigResponse",
          "description": "The core content of the template."
        },
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "name": {
          "type": "string",
          "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`"
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of an inspectTemplate."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deidentifyConfig",
        "description",
        "displayName",
        "name",
        "updateTime"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeltaPresenceEstimationConfig": {
      "description": "δ-presence metric, used to estimate how likely it is for an attacker to figure out that one given individual appears in a de-identified dataset. Similarly to the k-map metric, we cannot compute δ-presence exactly without knowing the attack dataset, so we use a statistical model instead.",
      "properties": {
        "auxiliaryTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StatisticalTable"
          },
          "description": "Several auxiliary tables can be used in the analysis. Each custom_tag used to tag a quasi-identifiers field must appear in exactly one field of one auxiliary table."
        },
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2QuasiId"
          },
          "description": "Fields considered to be quasi-identifiers. No two fields can have the same tag."
        },
        "regionCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 region code to use in the statistical modeling. Set if no column is tagged with a region-specific InfoType (like US_ZIP_5) or a region code."
        }
      },
      "type": "object",
      "required": [
        "quasiIds"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeltaPresenceEstimationConfigResponse": {
      "description": "δ-presence metric, used to estimate how likely it is for an attacker to figure out that one given individual appears in a de-identified dataset. Similarly to the k-map metric, we cannot compute δ-presence exactly without knowing the attack dataset, so we use a statistical model instead.",
      "properties": {
        "auxiliaryTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StatisticalTableResponse"
          },
          "description": "Several auxiliary tables can be used in the analysis. Each custom_tag used to tag a quasi-identifiers field must appear in exactly one field of one auxiliary table."
        },
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2QuasiIdResponse"
          },
          "description": "Fields considered to be quasi-identifiers. No two fields can have the same tag."
        },
        "regionCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 region code to use in the statistical modeling. Set if no column is tagged with a region-specific InfoType (like US_ZIP_5) or a region code."
        }
      },
      "type": "object",
      "required": [
        "auxiliaryTables",
        "quasiIds",
        "regionCode"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucketResponse": {
      "description": "A DeltaPresenceEstimationHistogramBucket message with the following values: min_probability: 0.1 max_probability: 0.2 frequency: 42 means that there are 42 records for which δ is in [0.1, 0.2). An important particular case is when min_probability = max_probability = 1: then, every individual who shares this quasi-identifier combination is in the dataset.",
      "properties": {
        "bucketSize": {
          "type": "string",
          "description": "Number of records within these probability bounds."
        },
        "bucketValueCount": {
          "type": "string",
          "description": "Total number of distinct quasi-identifier tuple values in this bucket."
        },
        "bucketValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValuesResponse"
          },
          "description": "Sample of quasi-identifier tuple values in this bucket. The total number of classes returned per bucket is capped at 20."
        },
        "maxProbability": {
          "type": "number",
          "description": "Always greater than or equal to min_probability."
        },
        "minProbability": {
          "type": "number",
          "description": "Between 0 and 1."
        }
      },
      "type": "object",
      "required": [
        "bucketSize",
        "bucketValueCount",
        "bucketValues",
        "maxProbability",
        "minProbability"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValuesResponse": {
      "description": "A tuple of values for the quasi-identifier columns.",
      "properties": {
        "estimatedProbability": {
          "type": "number",
          "description": "The estimated probability that a given individual sharing these quasi-identifier values is in the dataset. This value, typically called δ, is the ratio between the number of records in the dataset with these quasi-identifier values, and the total number of individuals (inside *and* outside the dataset) with these quasi-identifier values. For example, if there are 15 individuals in the dataset who share the same quasi-identifier values, and an estimated 100 people in the entire population with these values, then δ is 0.15."
        },
        "quasiIdsValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse"
          },
          "description": "The quasi-identifier values."
        }
      },
      "type": "object",
      "required": [
        "estimatedProbability",
        "quasiIdsValues"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DeltaPresenceEstimationResultResponse": {
      "description": "Result of the δ-presence computation. Note that these results are an estimation, not exact values.",
      "properties": {
        "deltaPresenceEstimationHistogram": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucketResponse"
          },
          "description": "The intervals [min_probability, max_probability) do not overlap. If a value doesn't correspond to any such interval, the associated frequency is zero. For example, the following records: {min_probability: 0, max_probability: 0.1, frequency: 17} {min_probability: 0.2, max_probability: 0.3, frequency: 42} {min_probability: 0.3, max_probability: 0.4, frequency: 99} mean that there are no record with an estimated probability in [0.1, 0.2) nor larger or equal to 0.4."
        }
      },
      "type": "object",
      "required": [
        "deltaPresenceEstimationHistogram"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DetectionRule": {
      "description": "Deprecated; use `InspectionRuleSet` instead. Rule for modifying a `CustomInfoType` to alter behavior under certain circumstances, depending on the specific details of the rule. Not supported for the `surrogate_type` custom infoType.",
      "properties": {
        "hotwordRule": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2HotwordRule",
          "description": "Hotword-based detection rule."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DetectionRuleResponse": {
      "description": "Deprecated; use `InspectionRuleSet` instead. Rule for modifying a `CustomInfoType` to alter behavior under certain circumstances, depending on the specific details of the rule. Not supported for the `surrogate_type` custom infoType.",
      "properties": {
        "hotwordRule": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2HotwordRuleResponse",
          "description": "Hotword-based detection rule."
        }
      },
      "type": "object",
      "required": [
        "hotwordRule"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Dictionary": {
      "description": "Custom information type based on a dictionary of words or phrases. This can be used to match sensitive information specific to the data, such as a list of employee IDs or job titles. Dictionary words are case-insensitive and all characters other than letters and digits in the unicode [Basic Multilingual Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) will be replaced with whitespace when scanning for matches, so the dictionary phrase \"Sam Johnson\" will match all three phrases \"sam johnson\", \"Sam, Johnson\", and \"Sam (Johnson)\". Additionally, the characters surrounding any match must be of a different type than the adjacent characters within the word, so letters must be next to non-letters and digits next to non-digits. For example, the dictionary word \"jen\" will match the first three letters of the text \"jen123\" but will return no matches for \"jennifer\". Dictionary words containing a large number of characters that are not letters or digits may result in unexpected findings because such characters are treated as whitespace. The [limits](https://cloud.google.com/dlp/limits) page contains details about the size limits of dictionaries. For dictionaries that do not fit within these constraints, consider using `LargeCustomDictionaryConfig` in the `StoredInfoType` API.",
      "properties": {
        "cloudStoragePath": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStoragePath",
          "description": "Newline-delimited file of words in Cloud Storage. Only a single file is accepted."
        },
        "wordList": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2WordList",
          "description": "List of words or phrases to search for."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DictionaryResponse": {
      "description": "Custom information type based on a dictionary of words or phrases. This can be used to match sensitive information specific to the data, such as a list of employee IDs or job titles. Dictionary words are case-insensitive and all characters other than letters and digits in the unicode [Basic Multilingual Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) will be replaced with whitespace when scanning for matches, so the dictionary phrase \"Sam Johnson\" will match all three phrases \"sam johnson\", \"Sam, Johnson\", and \"Sam (Johnson)\". Additionally, the characters surrounding any match must be of a different type than the adjacent characters within the word, so letters must be next to non-letters and digits next to non-digits. For example, the dictionary word \"jen\" will match the first three letters of the text \"jen123\" but will return no matches for \"jennifer\". Dictionary words containing a large number of characters that are not letters or digits may result in unexpected findings because such characters are treated as whitespace. The [limits](https://cloud.google.com/dlp/limits) page contains details about the size limits of dictionaries. For dictionaries that do not fit within these constraints, consider using `LargeCustomDictionaryConfig` in the `StoredInfoType` API.",
      "properties": {
        "cloudStoragePath": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStoragePathResponse",
          "description": "Newline-delimited file of words in Cloud Storage. Only a single file is accepted."
        },
        "wordList": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2WordListResponse",
          "description": "List of words or phrases to search for."
        }
      },
      "type": "object",
      "required": [
        "cloudStoragePath",
        "wordList"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Disabled": {
      "description": "Do not profile the tables.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DisabledResponse": {
      "description": "Do not profile the tables.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryBigQueryConditions": {
      "description": "Requirements that must be true before a table is scanned in discovery for the first time. There is an AND relationship between the top-level attributes. Additionally, minimum conditions with an OR relationship that must be met before Cloud DLP scans a table can be set (like a minimum row count or a minimum table age).",
      "properties": {
        "createdAfter": {
          "type": "string",
          "description": "BigQuery table must have been created after this date. Used to avoid backfilling."
        },
        "orConditions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OrConditions",
          "description": "At least one of the conditions must be true for a table to be scanned."
        },
        "typeCollection": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryBigQueryConditionsTypeCollection",
          "description": "Restrict discovery to categories of table types."
        },
        "types": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableTypes",
          "description": "Restrict discovery to specific table types."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryBigQueryConditionsResponse": {
      "description": "Requirements that must be true before a table is scanned in discovery for the first time. There is an AND relationship between the top-level attributes. Additionally, minimum conditions with an OR relationship that must be met before Cloud DLP scans a table can be set (like a minimum row count or a minimum table age).",
      "properties": {
        "createdAfter": {
          "type": "string",
          "description": "BigQuery table must have been created after this date. Used to avoid backfilling."
        },
        "orConditions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OrConditionsResponse",
          "description": "At least one of the conditions must be true for a table to be scanned."
        },
        "typeCollection": {
          "type": "string",
          "description": "Restrict discovery to categories of table types."
        },
        "types": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableTypesResponse",
          "description": "Restrict discovery to specific table types."
        }
      },
      "type": "object",
      "required": [
        "createdAfter",
        "orConditions",
        "typeCollection",
        "types"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryBigQueryConditionsTypeCollection": {
      "description": "Restrict discovery to categories of table types.",
      "type": "string",
      "enum": [
        {
          "name": "BigQueryCollectionUnspecified",
          "description": "Unused.",
          "value": "BIG_QUERY_COLLECTION_UNSPECIFIED"
        },
        {
          "name": "BigQueryCollectionAllTypes",
          "description": "Automatically generate profiles for all tables, even if the table type is not yet fully supported for analysis. Profiles for unsupported tables will be generated with errors to indicate their partial support. When full support is added, the tables will automatically be profiled during the next scheduled run.",
          "value": "BIG_QUERY_COLLECTION_ALL_TYPES"
        },
        {
          "name": "BigQueryCollectionOnlySupportedTypes",
          "description": "Only those types fully supported will be profiled. Will expand automatically as Cloud DLP adds support for new table types. Unsupported table types will not have partial profiles generated.",
          "value": "BIG_QUERY_COLLECTION_ONLY_SUPPORTED_TYPES"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryBigQueryFilter": {
      "description": "Determines what tables will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID, dataset ID, and table ID.",
      "properties": {
        "otherTables": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AllOtherBigQueryTables",
          "description": "Catch-all. This should always be the last filter in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically."
        },
        "tables": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableCollection",
          "description": "A specific set of tables for this filter to apply to. A table collection must be specified in only one filter per config. If a table id or dataset is empty, Cloud DLP assumes all tables in that collection must be profiled. Must specify a project ID."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryBigQueryFilterResponse": {
      "description": "Determines what tables will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID, dataset ID, and table ID.",
      "properties": {
        "otherTables": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AllOtherBigQueryTablesResponse",
          "description": "Catch-all. This should always be the last filter in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically."
        },
        "tables": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableCollectionResponse",
          "description": "A specific set of tables for this filter to apply to. A table collection must be specified in only one filter per config. If a table id or dataset is empty, Cloud DLP assumes all tables in that collection must be profiled. Must specify a project ID."
        }
      },
      "type": "object",
      "required": [
        "otherTables",
        "tables"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryGenerationCadence": {
      "description": "What must take place for a profile to be updated and how frequently it should occur. New tables are scanned as quickly as possible depending on system capacity.",
      "properties": {
        "schemaModifiedCadence": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoverySchemaModifiedCadence",
          "description": "Governs when to update data profiles when a schema is modified."
        },
        "tableModifiedCadence": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTableModifiedCadence",
          "description": "Governs when to update data profiles when a table is modified."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryGenerationCadenceResponse": {
      "description": "What must take place for a profile to be updated and how frequently it should occur. New tables are scanned as quickly as possible depending on system capacity.",
      "properties": {
        "schemaModifiedCadence": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoverySchemaModifiedCadenceResponse",
          "description": "Governs when to update data profiles when a schema is modified."
        },
        "tableModifiedCadence": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTableModifiedCadenceResponse",
          "description": "Governs when to update data profiles when a table is modified."
        }
      },
      "type": "object",
      "required": [
        "schemaModifiedCadence",
        "tableModifiedCadence"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoverySchemaModifiedCadence": {
      "description": "The cadence at which to update data profiles when a schema is modified.",
      "properties": {
        "frequency": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoverySchemaModifiedCadenceFrequency",
          "description": "How frequently profiles may be updated when schemas are modified. Defaults to monthly."
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoverySchemaModifiedCadenceTypesItem"
          },
          "description": "The type of events to consider when deciding if the table's schema has been modified and should have the profile updated. Defaults to NEW_COLUMNS."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoverySchemaModifiedCadenceFrequency": {
      "description": "How frequently profiles may be updated when schemas are modified. Defaults to monthly.",
      "type": "string",
      "enum": [
        {
          "name": "UpdateFrequencyUnspecified",
          "description": "Unspecified.",
          "value": "UPDATE_FREQUENCY_UNSPECIFIED"
        },
        {
          "name": "UpdateFrequencyNever",
          "description": "After the data profile is created, it will never be updated.",
          "value": "UPDATE_FREQUENCY_NEVER"
        },
        {
          "name": "UpdateFrequencyDaily",
          "description": "The data profile can be updated up to once every 24 hours.",
          "value": "UPDATE_FREQUENCY_DAILY"
        },
        {
          "name": "UpdateFrequencyMonthly",
          "description": "The data profile can be updated up to once every 30 days. Default.",
          "value": "UPDATE_FREQUENCY_MONTHLY"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoverySchemaModifiedCadenceResponse": {
      "description": "The cadence at which to update data profiles when a schema is modified.",
      "properties": {
        "frequency": {
          "type": "string",
          "description": "How frequently profiles may be updated when schemas are modified. Defaults to monthly."
        },
        "types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The type of events to consider when deciding if the table's schema has been modified and should have the profile updated. Defaults to NEW_COLUMNS."
        }
      },
      "type": "object",
      "required": [
        "frequency",
        "types"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoverySchemaModifiedCadenceTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "SchemaModificationUnspecified",
          "description": "Unused",
          "value": "SCHEMA_MODIFICATION_UNSPECIFIED"
        },
        {
          "name": "SchemaNewColumns",
          "description": "Profiles should be regenerated when new columns are added to the table. Default.",
          "value": "SCHEMA_NEW_COLUMNS"
        },
        {
          "name": "SchemaRemovedColumns",
          "description": "Profiles should be regenerated when columns are removed from the table.",
          "value": "SCHEMA_REMOVED_COLUMNS"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryStartingLocation": {
      "description": "The location to begin a discovery scan. Denotes an organization ID or folder ID within an organization.",
      "properties": {
        "folderId": {
          "type": "string",
          "description": "The ID of the Folder within an organization to scan."
        },
        "organizationId": {
          "type": "string",
          "description": "The ID of an organization to scan."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryStartingLocationResponse": {
      "description": "The location to begin a discovery scan. Denotes an organization ID or folder ID within an organization.",
      "properties": {
        "folderId": {
          "type": "string",
          "description": "The ID of the Folder within an organization to scan."
        },
        "organizationId": {
          "type": "string",
          "description": "The ID of an organization to scan."
        }
      },
      "type": "object",
      "required": [
        "folderId",
        "organizationId"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryTableModifiedCadence": {
      "description": "The cadence at which to update data profiles when a table is modified.",
      "properties": {
        "frequency": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTableModifiedCadenceFrequency",
          "description": "How frequently data profiles can be updated when tables are modified. Defaults to never."
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTableModifiedCadenceTypesItem"
          },
          "description": "The type of events to consider when deciding if the table has been modified and should have the profile updated. Defaults to MODIFIED_TIMESTAMP."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryTableModifiedCadenceFrequency": {
      "description": "How frequently data profiles can be updated when tables are modified. Defaults to never.",
      "type": "string",
      "enum": [
        {
          "name": "UpdateFrequencyUnspecified",
          "description": "Unspecified.",
          "value": "UPDATE_FREQUENCY_UNSPECIFIED"
        },
        {
          "name": "UpdateFrequencyNever",
          "description": "After the data profile is created, it will never be updated.",
          "value": "UPDATE_FREQUENCY_NEVER"
        },
        {
          "name": "UpdateFrequencyDaily",
          "description": "The data profile can be updated up to once every 24 hours.",
          "value": "UPDATE_FREQUENCY_DAILY"
        },
        {
          "name": "UpdateFrequencyMonthly",
          "description": "The data profile can be updated up to once every 30 days. Default.",
          "value": "UPDATE_FREQUENCY_MONTHLY"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryTableModifiedCadenceResponse": {
      "description": "The cadence at which to update data profiles when a table is modified.",
      "properties": {
        "frequency": {
          "type": "string",
          "description": "How frequently data profiles can be updated when tables are modified. Defaults to never."
        },
        "types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The type of events to consider when deciding if the table has been modified and should have the profile updated. Defaults to MODIFIED_TIMESTAMP."
        }
      },
      "type": "object",
      "required": [
        "frequency",
        "types"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryTableModifiedCadenceTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "TableModificationUnspecified",
          "description": "Unused.",
          "value": "TABLE_MODIFICATION_UNSPECIFIED"
        },
        {
          "name": "TableModifiedTimestamp",
          "description": "A table will be considered modified when the last_modified_time from BigQuery has been updated.",
          "value": "TABLE_MODIFIED_TIMESTAMP"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryTarget": {
      "description": "Target used to match against for Discovery.",
      "properties": {
        "bigQueryTarget": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryDiscoveryTarget",
          "description": "BigQuery target for Discovery. The first target to match a table will be the one applied."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2DiscoveryTargetResponse": {
      "description": "Target used to match against for Discovery.",
      "properties": {
        "bigQueryTarget": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryDiscoveryTargetResponse",
          "description": "BigQuery target for Discovery. The first target to match a table will be the one applied."
        }
      },
      "type": "object",
      "required": [
        "bigQueryTarget"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2EntityId": {
      "description": "An entity in a dataset is a field or set of fields that correspond to a single person. For example, in medical records the `EntityId` might be a patient identifier, or for financial records it might be an account identifier. This message is used when generalizations or analysis must take into account that multiple rows correspond to the same entity.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Composite key indicating which field contains the entity identifier."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2EntityIdResponse": {
      "description": "An entity in a dataset is a field or set of fields that correspond to a single person. For example, in medical records the `EntityId` might be a patient identifier, or for financial records it might be an account identifier. This message is used when generalizations or analysis must take into account that multiple rows correspond to the same entity.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Composite key indicating which field contains the entity identifier."
        }
      },
      "type": "object",
      "required": [
        "field"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ErrorResponse": {
      "description": "Details information about an error encountered during job execution or the results of an unsuccessful activation of the JobTrigger.",
      "properties": {
        "details": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleRpcStatusResponse",
          "description": "Detailed error codes and messages."
        },
        "timestamps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The times the error occurred. List includes the oldest timestamp and the last 9 timestamps."
        }
      },
      "type": "object",
      "required": [
        "details",
        "timestamps"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExcludeByHotword": {
      "description": "The rule to exclude findings based on a hotword. For record inspection of tables, column names are considered hotwords. An example of this is to exclude a finding if it belongs to a BigQuery column that matches a specific pattern.",
      "properties": {
        "hotwordRegex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Regex",
          "description": "Regular expression pattern defining what qualifies as a hotword."
        },
        "proximity": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Proximity",
          "description": "Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The windowBefore property in proximity should be set to 1 if the hotword needs to be included in a column header."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExcludeByHotwordResponse": {
      "description": "The rule to exclude findings based on a hotword. For record inspection of tables, column names are considered hotwords. An example of this is to exclude a finding if it belongs to a BigQuery column that matches a specific pattern.",
      "properties": {
        "hotwordRegex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RegexResponse",
          "description": "Regular expression pattern defining what qualifies as a hotword."
        },
        "proximity": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ProximityResponse",
          "description": "Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The windowBefore property in proximity should be set to 1 if the hotword needs to be included in a column header."
        }
      },
      "type": "object",
      "required": [
        "hotwordRegex",
        "proximity"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExcludeInfoTypes": {
      "description": "List of excluded infoTypes.",
      "properties": {
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType"
          },
          "description": "InfoType list in ExclusionRule rule drops a finding when it overlaps or contained within with a finding of an infoType from this list. For example, for `InspectionRuleSet.info_types` containing \"PHONE_NUMBER\"` and `exclusion_rule` containing `exclude_info_types.info_types` with \"EMAIL_ADDRESS\" the phone number findings are dropped if they overlap with EMAIL_ADDRESS finding. That leads to \"555-222-2222@example.org\" to generate only a single finding, namely email address."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExcludeInfoTypesResponse": {
      "description": "List of excluded infoTypes.",
      "properties": {
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse"
          },
          "description": "InfoType list in ExclusionRule rule drops a finding when it overlaps or contained within with a finding of an infoType from this list. For example, for `InspectionRuleSet.info_types` containing \"PHONE_NUMBER\"` and `exclusion_rule` containing `exclude_info_types.info_types` with \"EMAIL_ADDRESS\" the phone number findings are dropped if they overlap with EMAIL_ADDRESS finding. That leads to \"555-222-2222@example.org\" to generate only a single finding, namely email address."
        }
      },
      "type": "object",
      "required": [
        "infoTypes"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExclusionRule": {
      "description": "The rule that specifies conditions when findings of infoTypes specified in `InspectionRuleSet` are removed from results.",
      "properties": {
        "dictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Dictionary",
          "description": "Dictionary which defines the rule."
        },
        "excludeByHotword": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExcludeByHotword",
          "description": "Drop if the hotword rule is contained in the proximate context. For tabular data, the context includes the column name."
        },
        "excludeInfoTypes": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExcludeInfoTypes",
          "description": "Set of infoTypes for which findings would affect this rule."
        },
        "matchingType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExclusionRuleMatchingType",
          "description": "How the rule is applied, see MatchingType documentation for details."
        },
        "regex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Regex",
          "description": "Regular expression which defines the rule."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExclusionRuleMatchingType": {
      "description": "How the rule is applied, see MatchingType documentation for details.",
      "type": "string",
      "enum": [
        {
          "name": "MatchingTypeUnspecified",
          "description": "Invalid.",
          "value": "MATCHING_TYPE_UNSPECIFIED"
        },
        {
          "name": "MatchingTypeFullMatch",
          "description": "Full match. - Dictionary: join of Dictionary results matched complete finding quote - Regex: all regex matches fill a finding quote start to end - Exclude info type: completely inside affecting info types findings",
          "value": "MATCHING_TYPE_FULL_MATCH"
        },
        {
          "name": "MatchingTypePartialMatch",
          "description": "Partial match. - Dictionary: at least one of the tokens in the finding matches - Regex: substring of the finding matches - Exclude info type: intersects with affecting info types findings",
          "value": "MATCHING_TYPE_PARTIAL_MATCH"
        },
        {
          "name": "MatchingTypeInverseMatch",
          "description": "Inverse match. - Dictionary: no tokens in the finding match the dictionary - Regex: finding doesn't match the regex - Exclude info type: no intersection with affecting info types findings",
          "value": "MATCHING_TYPE_INVERSE_MATCH"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExclusionRuleResponse": {
      "description": "The rule that specifies conditions when findings of infoTypes specified in `InspectionRuleSet` are removed from results.",
      "properties": {
        "dictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DictionaryResponse",
          "description": "Dictionary which defines the rule."
        },
        "excludeByHotword": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExcludeByHotwordResponse",
          "description": "Drop if the hotword rule is contained in the proximate context. For tabular data, the context includes the column name."
        },
        "excludeInfoTypes": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExcludeInfoTypesResponse",
          "description": "Set of infoTypes for which findings would affect this rule."
        },
        "matchingType": {
          "type": "string",
          "description": "How the rule is applied, see MatchingType documentation for details."
        },
        "regex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RegexResponse",
          "description": "Regular expression which defines the rule."
        }
      },
      "type": "object",
      "required": [
        "dictionary",
        "excludeByHotword",
        "excludeInfoTypes",
        "matchingType",
        "regex"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Export": {
      "description": "If set, the detailed data profiles will be persisted to the location of your choice whenever updated.",
      "properties": {
        "profileTable": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTable",
          "description": "Store all table and column profiles in an existing table or a new table in an existing dataset. Each re-generation will result in a new row in BigQuery."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExportResponse": {
      "description": "If set, the detailed data profiles will be persisted to the location of your choice whenever updated.",
      "properties": {
        "profileTable": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "Store all table and column profiles in an existing table or a new table in an existing dataset. Each re-generation will result in a new row in BigQuery."
        }
      },
      "type": "object",
      "required": [
        "profileTable"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Expressions": {
      "description": "An expression, consisting of an operator and conditions.",
      "properties": {
        "conditions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Conditions",
          "description": "Conditions to apply to the expression."
        },
        "logicalOperator": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExpressionsLogicalOperator",
          "description": "The operator to apply to the result of conditions. Default and currently only supported value is `AND`."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExpressionsLogicalOperator": {
      "description": "The operator to apply to the result of conditions. Default and currently only supported value is `AND`.",
      "type": "string",
      "enum": [
        {
          "name": "LogicalOperatorUnspecified",
          "description": "Unused",
          "value": "LOGICAL_OPERATOR_UNSPECIFIED"
        },
        {
          "name": "And",
          "description": "Conditional AND",
          "value": "AND"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ExpressionsResponse": {
      "description": "An expression, consisting of an operator and conditions.",
      "properties": {
        "conditions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ConditionsResponse",
          "description": "Conditions to apply to the expression."
        },
        "logicalOperator": {
          "type": "string",
          "description": "The operator to apply to the result of conditions. Default and currently only supported value is `AND`."
        }
      },
      "type": "object",
      "required": [
        "conditions",
        "logicalOperator"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FieldId": {
      "description": "General identifier of a data field in a storage service.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name describing the field."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FieldIdResponse": {
      "description": "General identifier of a data field in a storage service.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name describing the field."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FieldTransformation": {
      "description": "The transformation to apply to the field.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RecordCondition",
          "description": "Only apply the transformation if the condition evaluates to true for the given `RecordCondition`. The conditions are allowed to reference fields that are not used in the actual transformation. Example Use Cases: - Apply a different bucket transformation to an age column if the zip code column for the same record is within a specific range. - Redact a field if the date of birth field is greater than 85."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId"
          },
          "description": "Input field(s) to apply the transformation to. When you have columns that reference their position within a list, omit the index from the FieldId. FieldId name matching ignores the index. For example, instead of \"contact.nums[0].type\", use \"contact.nums.type\"."
        },
        "infoTypeTransformations": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeTransformations",
          "description": "Treat the contents of the field as free text, and selectively transform content that matches an `InfoType`."
        },
        "primitiveTransformation": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PrimitiveTransformation",
          "description": "Apply the transformation to the entire field."
        }
      },
      "type": "object",
      "required": [
        "fields"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FieldTransformationResponse": {
      "description": "The transformation to apply to the field.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RecordConditionResponse",
          "description": "Only apply the transformation if the condition evaluates to true for the given `RecordCondition`. The conditions are allowed to reference fields that are not used in the actual transformation. Example Use Cases: - Apply a different bucket transformation to an age column if the zip code column for the same record is within a specific range. - Redact a field if the date of birth field is greater than 85."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse"
          },
          "description": "Input field(s) to apply the transformation to. When you have columns that reference their position within a list, omit the index from the FieldId. FieldId name matching ignores the index. For example, instead of \"contact.nums[0].type\", use \"contact.nums.type\"."
        },
        "infoTypeTransformations": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeTransformationsResponse",
          "description": "Treat the contents of the field as free text, and selectively transform content that matches an `InfoType`."
        },
        "primitiveTransformation": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PrimitiveTransformationResponse",
          "description": "Apply the transformation to the entire field."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "fields",
        "infoTypeTransformations",
        "primitiveTransformation"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FileSet": {
      "description": "Set of files to scan.",
      "properties": {
        "regexFileSet": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStorageRegexFileSet",
          "description": "The regex-filtered set of files to scan. Exactly one of `url` or `regex_file_set` must be set."
        },
        "url": {
          "type": "string",
          "description": "The Cloud Storage url of the file(s) to scan, in the format `gs:///`. Trailing wildcard in the path is allowed. If the url ends in a trailing slash, the bucket or directory represented by the url will be scanned non-recursively (content in sub-directories will not be scanned). This means that `gs://mybucket/` is equivalent to `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to `gs://mybucket/directory/*`. Exactly one of `url` or `regex_file_set` must be set."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FileSetResponse": {
      "description": "Set of files to scan.",
      "properties": {
        "regexFileSet": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStorageRegexFileSetResponse",
          "description": "The regex-filtered set of files to scan. Exactly one of `url` or `regex_file_set` must be set."
        },
        "url": {
          "type": "string",
          "description": "The Cloud Storage url of the file(s) to scan, in the format `gs:///`. Trailing wildcard in the path is allowed. If the url ends in a trailing slash, the bucket or directory represented by the url will be scanned non-recursively (content in sub-directories will not be scanned). This means that `gs://mybucket/` is equivalent to `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to `gs://mybucket/directory/*`. Exactly one of `url` or `regex_file_set` must be set."
        }
      },
      "type": "object",
      "required": [
        "regexFileSet",
        "url"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FindingLimits": {
      "description": "Configuration to control the number of findings returned for inspection. This is not used for de-identification or data profiling. When redacting sensitive data from images, finding limits don't apply. They can cause unexpected or inconsistent results, where only some data is redacted. Don't include finding limits in RedactImage requests. Otherwise, Cloud DLP returns an error.",
      "properties": {
        "maxFindingsPerInfoType": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeLimit"
          },
          "description": "Configuration of findings limit given for specified infoTypes."
        },
        "maxFindingsPerItem": {
          "type": "integer",
          "description": "Max number of findings that are returned for each item scanned. When set within an InspectContentRequest, this field is ignored. This value isn't a hard limit. If the number of findings for an item reaches this limit, the inspection of that item ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns for the item can be multiple times higher than this value."
        },
        "maxFindingsPerRequest": {
          "type": "integer",
          "description": "Max number of findings that are returned per request or job. If you set this field in an InspectContentRequest, the resulting maximum value is the value that you set or 3,000, whichever is lower. This value isn't a hard limit. If an inspection reaches this limit, the inspection ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns can be multiple times higher than this value."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FindingLimitsResponse": {
      "description": "Configuration to control the number of findings returned for inspection. This is not used for de-identification or data profiling. When redacting sensitive data from images, finding limits don't apply. They can cause unexpected or inconsistent results, where only some data is redacted. Don't include finding limits in RedactImage requests. Otherwise, Cloud DLP returns an error.",
      "properties": {
        "maxFindingsPerInfoType": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeLimitResponse"
          },
          "description": "Configuration of findings limit given for specified infoTypes."
        },
        "maxFindingsPerItem": {
          "type": "integer",
          "description": "Max number of findings that are returned for each item scanned. When set within an InspectContentRequest, this field is ignored. This value isn't a hard limit. If the number of findings for an item reaches this limit, the inspection of that item ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns for the item can be multiple times higher than this value."
        },
        "maxFindingsPerRequest": {
          "type": "integer",
          "description": "Max number of findings that are returned per request or job. If you set this field in an InspectContentRequest, the resulting maximum value is the value that you set or 3,000, whichever is lower. This value isn't a hard limit. If an inspection reaches this limit, the inspection ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns can be multiple times higher than this value."
        }
      },
      "type": "object",
      "required": [
        "maxFindingsPerInfoType",
        "maxFindingsPerItem",
        "maxFindingsPerRequest"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FixedSizeBucketingConfig": {
      "description": "Buckets values based on fixed size ranges. The Bucketing transformation can provide all of this functionality, but requires more configuration. This message is provided as a convenience to the user for simple bucketing strategies. The transformed value will be a hyphenated string of {lower_bound}-{upper_bound}. For example, if lower_bound = 10 and upper_bound = 20, all values that are within this bucket will be replaced with \"10-20\". This can be used on data of type: double, long. If the bound Value type differs from the type of data being transformed, we will first attempt converting the type of the data to be transformed to match the type of the bound before comparing. See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.",
      "properties": {
        "bucketSize": {
          "type": "number",
          "description": "Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works."
        },
        "lowerBound": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Value",
          "description": "Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value \"-10\"."
        },
        "upperBound": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Value",
          "description": "Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value \"89+\"."
        }
      },
      "type": "object",
      "required": [
        "bucketSize",
        "lowerBound",
        "upperBound"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2FixedSizeBucketingConfigResponse": {
      "description": "Buckets values based on fixed size ranges. The Bucketing transformation can provide all of this functionality, but requires more configuration. This message is provided as a convenience to the user for simple bucketing strategies. The transformed value will be a hyphenated string of {lower_bound}-{upper_bound}. For example, if lower_bound = 10 and upper_bound = 20, all values that are within this bucket will be replaced with \"10-20\". This can be used on data of type: double, long. If the bound Value type differs from the type of data being transformed, we will first attempt converting the type of the data to be transformed to match the type of the bound before comparing. See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.",
      "properties": {
        "bucketSize": {
          "type": "number",
          "description": "Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works."
        },
        "lowerBound": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value \"-10\"."
        },
        "upperBound": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value \"89+\"."
        }
      },
      "type": "object",
      "required": [
        "bucketSize",
        "lowerBound",
        "upperBound"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2HotwordRule": {
      "description": "The rule that adjusts the likelihood of findings within a certain proximity of hotwords.",
      "properties": {
        "hotwordRegex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Regex",
          "description": "Regular expression pattern defining what qualifies as a hotword."
        },
        "likelihoodAdjustment": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LikelihoodAdjustment",
          "description": "Likelihood adjustment to apply to all matching findings."
        },
        "proximity": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Proximity",
          "description": "Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The finding itself will be included in the window, so that hotwords can be used to match substrings of the finding itself. Suppose you want Cloud DLP to promote the likelihood of the phone number regex \"\\(\\d{3}\\) \\d{3}-\\d{4}\" if the area code is known to be the area code of a company's office. In this case, use the hotword regex \"\\(xxx\\)\", where \"xxx\" is the area code in question. For tabular data, if you want to modify the likelihood of an entire column of findngs, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/dlp/docs/creating-custom-infotypes-likelihood#match-column-values)."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2HotwordRuleResponse": {
      "description": "The rule that adjusts the likelihood of findings within a certain proximity of hotwords.",
      "properties": {
        "hotwordRegex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RegexResponse",
          "description": "Regular expression pattern defining what qualifies as a hotword."
        },
        "likelihoodAdjustment": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LikelihoodAdjustmentResponse",
          "description": "Likelihood adjustment to apply to all matching findings."
        },
        "proximity": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ProximityResponse",
          "description": "Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The finding itself will be included in the window, so that hotwords can be used to match substrings of the finding itself. Suppose you want Cloud DLP to promote the likelihood of the phone number regex \"\\(\\d{3}\\) \\d{3}-\\d{4}\" if the area code is known to be the area code of a company's office. In this case, use the hotword regex \"\\(xxx\\)\", where \"xxx\" is the area code in question. For tabular data, if you want to modify the likelihood of an entire column of findngs, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/dlp/docs/creating-custom-infotypes-likelihood#match-column-values)."
        }
      },
      "type": "object",
      "required": [
        "hotwordRegex",
        "likelihoodAdjustment",
        "proximity"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2HybridInspectStatisticsResponse": {
      "description": "Statistics related to processing hybrid inspect requests.",
      "properties": {
        "abortedCount": {
          "type": "string",
          "description": "The number of hybrid inspection requests aborted because the job ran out of quota or was ended before they could be processed."
        },
        "pendingCount": {
          "type": "string",
          "description": "The number of hybrid requests currently being processed. Only populated when called via method `getDlpJob`. A burst of traffic may cause hybrid inspect requests to be enqueued. Processing will take place as quickly as possible, but resource limitations may impact how long a request is enqueued for."
        },
        "processedCount": {
          "type": "string",
          "description": "The number of hybrid inspection requests processed within this job."
        }
      },
      "type": "object",
      "required": [
        "abortedCount",
        "pendingCount",
        "processedCount"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2HybridOptions": {
      "description": "Configuration to control jobs where the content being inspected is outside of Google Cloud Platform.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A short description of where the data is coming from. Will be stored once in the job. 256 max length."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "To organize findings, these labels will be added to each finding. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. No more than 10 labels can be associated with a given finding. Examples: * `\"environment\" : \"production\"` * `\"pipeline\" : \"etl\"`"
        },
        "requiredFindingLabelKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "These are labels that each inspection request must include within their 'finding_labels' map. Request may contain others, but any missing one of these will be rejected. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. No more than 10 keys can be required."
        },
        "tableOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TableOptions",
          "description": "If the container is a table, additional information to make findings meaningful such as the columns that are primary keys."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2HybridOptionsResponse": {
      "description": "Configuration to control jobs where the content being inspected is outside of Google Cloud Platform.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A short description of where the data is coming from. Will be stored once in the job. 256 max length."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "To organize findings, these labels will be added to each finding. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. No more than 10 labels can be associated with a given finding. Examples: * `\"environment\" : \"production\"` * `\"pipeline\" : \"etl\"`"
        },
        "requiredFindingLabelKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "These are labels that each inspection request must include within their 'finding_labels' map. Request may contain others, but any missing one of these will be rejected. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. No more than 10 keys can be required."
        },
        "tableOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TableOptionsResponse",
          "description": "If the container is a table, additional information to make findings meaningful such as the columns that are primary keys."
        }
      },
      "type": "object",
      "required": [
        "description",
        "labels",
        "requiredFindingLabelKeys",
        "tableOptions"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ImageTransformation": {
      "description": "Configuration for determining how redaction of images should occur.",
      "properties": {
        "allInfoTypes": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AllInfoTypes",
          "description": "Apply transformation to all findings not specified in other ImageTransformation's selected_info_types. Only one instance is allowed within the ImageTransformations message."
        },
        "allText": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AllText",
          "description": "Apply transformation to all text that doesn't match an infoType. Only one instance is allowed within the ImageTransformations message."
        },
        "redactionColor": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Color",
          "description": "The color to use when redacting content from an image. If not specified, the default is black."
        },
        "selectedInfoTypes": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SelectedInfoTypes",
          "description": "Apply transformation to the selected info_types."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ImageTransformationResponse": {
      "description": "Configuration for determining how redaction of images should occur.",
      "properties": {
        "allInfoTypes": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AllInfoTypesResponse",
          "description": "Apply transformation to all findings not specified in other ImageTransformation's selected_info_types. Only one instance is allowed within the ImageTransformations message."
        },
        "allText": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AllTextResponse",
          "description": "Apply transformation to all text that doesn't match an infoType. Only one instance is allowed within the ImageTransformations message."
        },
        "redactionColor": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ColorResponse",
          "description": "The color to use when redacting content from an image. If not specified, the default is black."
        },
        "selectedInfoTypes": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SelectedInfoTypesResponse",
          "description": "Apply transformation to the selected info_types."
        }
      },
      "type": "object",
      "required": [
        "allInfoTypes",
        "allText",
        "redactionColor",
        "selectedInfoTypes"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ImageTransformations": {
      "description": "A type of transformation that is applied over images.",
      "properties": {
        "transforms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ImageTransformation"
          }
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ImageTransformationsResponse": {
      "description": "A type of transformation that is applied over images.",
      "properties": {
        "transforms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ImageTransformationResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "transforms"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoType": {
      "description": "Type of information detected by the API.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`."
        },
        "sensitivityScore": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SensitivityScore",
          "description": "Optional custom sensitivity for this InfoType. This only applies to data profiling."
        },
        "version": {
          "type": "string",
          "description": "Optional version name for this InfoType."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeLikelihood": {
      "description": "Configuration for setting a minimum likelihood per infotype. Used to customize the minimum likelihood level for specific infotypes in the request. For example, use this if you want to lower the precision for PERSON_NAME without lowering the precision for the other infotypes in the request.",
      "properties": {
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType",
          "description": "Type of information the likelihood threshold applies to. Only one likelihood per info_type should be provided. If InfoTypeLikelihood does not have an info_type, the configuration fails."
        },
        "minLikelihood": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeLikelihoodMinLikelihood",
          "description": "Only returns findings equal to or above this threshold. This field is required or else the configuration fails."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeLikelihoodMinLikelihood": {
      "description": "Only returns findings equal to or above this threshold. This field is required or else the configuration fails.",
      "type": "string",
      "enum": [
        {
          "name": "LikelihoodUnspecified",
          "description": "Default value; same as POSSIBLE.",
          "value": "LIKELIHOOD_UNSPECIFIED"
        },
        {
          "name": "VeryUnlikely",
          "description": "Highest chance of a false positive.",
          "value": "VERY_UNLIKELY"
        },
        {
          "name": "Unlikely",
          "description": "High chance of a false positive.",
          "value": "UNLIKELY"
        },
        {
          "name": "Possible",
          "description": "Some matching signals. The default value.",
          "value": "POSSIBLE"
        },
        {
          "name": "Likely",
          "description": "Low chance of a false positive.",
          "value": "LIKELY"
        },
        {
          "name": "VeryLikely",
          "description": "Confidence level is high. Lowest chance of a false positive.",
          "value": "VERY_LIKELY"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeLikelihoodResponse": {
      "description": "Configuration for setting a minimum likelihood per infotype. Used to customize the minimum likelihood level for specific infotypes in the request. For example, use this if you want to lower the precision for PERSON_NAME without lowering the precision for the other infotypes in the request.",
      "properties": {
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse",
          "description": "Type of information the likelihood threshold applies to. Only one likelihood per info_type should be provided. If InfoTypeLikelihood does not have an info_type, the configuration fails."
        },
        "minLikelihood": {
          "type": "string",
          "description": "Only returns findings equal to or above this threshold. This field is required or else the configuration fails."
        }
      },
      "type": "object",
      "required": [
        "infoType",
        "minLikelihood"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeLimit": {
      "description": "Max findings configuration per infoType, per content item or long running DlpJob.",
      "properties": {
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType",
          "description": "Type of information the findings limit applies to. Only one limit per info_type should be provided. If InfoTypeLimit does not have an info_type, the DLP API applies the limit against all info_types that are found but not specified in another InfoTypeLimit."
        },
        "maxFindings": {
          "type": "integer",
          "description": "Max findings limit for the given infoType."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeLimitResponse": {
      "description": "Max findings configuration per infoType, per content item or long running DlpJob.",
      "properties": {
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse",
          "description": "Type of information the findings limit applies to. Only one limit per info_type should be provided. If InfoTypeLimit does not have an info_type, the DLP API applies the limit against all info_types that are found but not specified in another InfoTypeLimit."
        },
        "maxFindings": {
          "type": "integer",
          "description": "Max findings limit for the given infoType."
        }
      },
      "type": "object",
      "required": [
        "infoType",
        "maxFindings"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeResponse": {
      "description": "Type of information detected by the API.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`."
        },
        "sensitivityScore": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SensitivityScoreResponse",
          "description": "Optional custom sensitivity for this InfoType. This only applies to data profiling."
        },
        "version": {
          "type": "string",
          "description": "Optional version name for this InfoType."
        }
      },
      "type": "object",
      "required": [
        "name",
        "sensitivityScore",
        "version"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeStatsResponse": {
      "description": "Statistics regarding a specific InfoType.",
      "properties": {
        "count": {
          "type": "string",
          "description": "Number of findings for this infoType."
        },
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse",
          "description": "The type of finding this stat is for."
        }
      },
      "type": "object",
      "required": [
        "count",
        "infoType"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeTransformation": {
      "description": "A transformation to apply to text that is identified as a specific info_type.",
      "properties": {
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType"
          },
          "description": "InfoTypes to apply the transformation to. An empty list will cause this transformation to apply to all findings that correspond to infoTypes that were requested in `InspectConfig`."
        },
        "primitiveTransformation": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PrimitiveTransformation",
          "description": "Primitive transformation to apply to the infoType."
        }
      },
      "type": "object",
      "required": [
        "primitiveTransformation"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeTransformationResponse": {
      "description": "A transformation to apply to text that is identified as a specific info_type.",
      "properties": {
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse"
          },
          "description": "InfoTypes to apply the transformation to. An empty list will cause this transformation to apply to all findings that correspond to infoTypes that were requested in `InspectConfig`."
        },
        "primitiveTransformation": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PrimitiveTransformationResponse",
          "description": "Primitive transformation to apply to the infoType."
        }
      },
      "type": "object",
      "required": [
        "infoTypes",
        "primitiveTransformation"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeTransformations": {
      "description": "A type of transformation that will scan unstructured text and apply various `PrimitiveTransformation`s to each finding, where the transformation is applied to only values that were identified as a specific info_type.",
      "properties": {
        "transformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeTransformation"
          },
          "description": "Transformation for each infoType. Cannot specify more than one for a given infoType."
        }
      },
      "type": "object",
      "required": [
        "transformations"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InfoTypeTransformationsResponse": {
      "description": "A type of transformation that will scan unstructured text and apply various `PrimitiveTransformation`s to each finding, where the transformation is applied to only values that were identified as a specific info_type.",
      "properties": {
        "transformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeTransformationResponse"
          },
          "description": "Transformation for each infoType. Cannot specify more than one for a given infoType."
        }
      },
      "type": "object",
      "required": [
        "transformations"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectConfig": {
      "description": "Configuration description of the scanning process. When used with redactContent only info_types and min_likelihood are currently used.",
      "properties": {
        "contentOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfigContentOptionsItem"
          },
          "description": "Deprecated and unused.",
          "deprecationMessage": "Deprecated and unused."
        },
        "customInfoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CustomInfoType"
          },
          "description": "CustomInfoTypes provided by the user. See https://cloud.google.com/dlp/docs/creating-custom-infotypes to learn more."
        },
        "excludeInfoTypes": {
          "type": "boolean",
          "description": "When true, excludes type information of the findings. This is not used for data profiling."
        },
        "includeQuote": {
          "type": "boolean",
          "description": "When true, a contextual quote from the data that triggered a finding is included in the response; see Finding.quote. This is not used for data profiling."
        },
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType"
          },
          "description": "Restricts what info_types to look for. The values must correspond to InfoType values returned by ListInfoTypes or listed at https://cloud.google.com/dlp/docs/infotypes-reference. When no InfoTypes or CustomInfoTypes are specified in a request, the system may automatically choose a default list of detectors to run, which may change over time. If you need precise control and predictability as to what detectors are run you should specify specific InfoTypes listed in the reference, otherwise a default list will be used, which may change over time."
        },
        "limits": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FindingLimits",
          "description": "Configuration to control the number of findings returned. This is not used for data profiling. When redacting sensitive data from images, finding limits don't apply. They can cause unexpected or inconsistent results, where only some data is redacted. Don't include finding limits in RedactImage requests. Otherwise, Cloud DLP returns an error. When set within an InspectJobConfig, the specified maximum values aren't hard limits. If an inspection job reaches these limits, the job ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns can be multiple times higher than these maximum values."
        },
        "minLikelihood": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfigMinLikelihood",
          "description": "Only returns findings equal to or above this threshold. The default is POSSIBLE. In general, the highest likelihood setting yields the fewest findings in results and the lowest chance of a false positive. For more information, see [Match likelihood](https://cloud.google.com/dlp/docs/likelihood)."
        },
        "minLikelihoodPerInfoType": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeLikelihood"
          },
          "description": "Minimum likelihood per infotype. For each infotype, a user can specify a minimum likelihood. The system only returns a finding if its likelihood is above this threshold. If this field is not set, the system uses the InspectConfig min_likelihood."
        },
        "ruleSet": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectionRuleSet"
          },
          "description": "Set of rules to apply to the findings for this InspectConfig. Exclusion rules, contained in the set are executed in the end, other rules are executed in the order they are specified for each info type."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectConfigContentOptionsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ContentUnspecified",
          "description": "Includes entire content of a file or a data stream.",
          "value": "CONTENT_UNSPECIFIED"
        },
        {
          "name": "ContentText",
          "description": "Text content within the data, excluding any metadata.",
          "value": "CONTENT_TEXT"
        },
        {
          "name": "ContentImage",
          "description": "Images found in the data.",
          "value": "CONTENT_IMAGE"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectConfigMinLikelihood": {
      "description": "Only returns findings equal to or above this threshold. The default is POSSIBLE. In general, the highest likelihood setting yields the fewest findings in results and the lowest chance of a false positive. For more information, see [Match likelihood](https://cloud.google.com/dlp/docs/likelihood).",
      "type": "string",
      "enum": [
        {
          "name": "LikelihoodUnspecified",
          "description": "Default value; same as POSSIBLE.",
          "value": "LIKELIHOOD_UNSPECIFIED"
        },
        {
          "name": "VeryUnlikely",
          "description": "Highest chance of a false positive.",
          "value": "VERY_UNLIKELY"
        },
        {
          "name": "Unlikely",
          "description": "High chance of a false positive.",
          "value": "UNLIKELY"
        },
        {
          "name": "Possible",
          "description": "Some matching signals. The default value.",
          "value": "POSSIBLE"
        },
        {
          "name": "Likely",
          "description": "Low chance of a false positive.",
          "value": "LIKELY"
        },
        {
          "name": "VeryLikely",
          "description": "Confidence level is high. Lowest chance of a false positive.",
          "value": "VERY_LIKELY"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectConfigResponse": {
      "description": "Configuration description of the scanning process. When used with redactContent only info_types and min_likelihood are currently used.",
      "properties": {
        "contentOptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated and unused.",
          "deprecationMessage": "Deprecated and unused."
        },
        "customInfoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CustomInfoTypeResponse"
          },
          "description": "CustomInfoTypes provided by the user. See https://cloud.google.com/dlp/docs/creating-custom-infotypes to learn more."
        },
        "excludeInfoTypes": {
          "type": "boolean",
          "description": "When true, excludes type information of the findings. This is not used for data profiling."
        },
        "includeQuote": {
          "type": "boolean",
          "description": "When true, a contextual quote from the data that triggered a finding is included in the response; see Finding.quote. This is not used for data profiling."
        },
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse"
          },
          "description": "Restricts what info_types to look for. The values must correspond to InfoType values returned by ListInfoTypes or listed at https://cloud.google.com/dlp/docs/infotypes-reference. When no InfoTypes or CustomInfoTypes are specified in a request, the system may automatically choose a default list of detectors to run, which may change over time. If you need precise control and predictability as to what detectors are run you should specify specific InfoTypes listed in the reference, otherwise a default list will be used, which may change over time."
        },
        "limits": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FindingLimitsResponse",
          "description": "Configuration to control the number of findings returned. This is not used for data profiling. When redacting sensitive data from images, finding limits don't apply. They can cause unexpected or inconsistent results, where only some data is redacted. Don't include finding limits in RedactImage requests. Otherwise, Cloud DLP returns an error. When set within an InspectJobConfig, the specified maximum values aren't hard limits. If an inspection job reaches these limits, the job ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns can be multiple times higher than these maximum values."
        },
        "minLikelihood": {
          "type": "string",
          "description": "Only returns findings equal to or above this threshold. The default is POSSIBLE. In general, the highest likelihood setting yields the fewest findings in results and the lowest chance of a false positive. For more information, see [Match likelihood](https://cloud.google.com/dlp/docs/likelihood)."
        },
        "minLikelihoodPerInfoType": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeLikelihoodResponse"
          },
          "description": "Minimum likelihood per infotype. For each infotype, a user can specify a minimum likelihood. The system only returns a finding if its likelihood is above this threshold. If this field is not set, the system uses the InspectConfig min_likelihood."
        },
        "ruleSet": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectionRuleSetResponse"
          },
          "description": "Set of rules to apply to the findings for this InspectConfig. Exclusion rules, contained in the set are executed in the end, other rules are executed in the order they are specified for each info type."
        }
      },
      "type": "object",
      "required": [
        "contentOptions",
        "customInfoTypes",
        "excludeInfoTypes",
        "includeQuote",
        "infoTypes",
        "limits",
        "minLikelihood",
        "minLikelihoodPerInfoType",
        "ruleSet"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectDataSourceDetailsResponse": {
      "description": "The results of an inspect DataSource job.",
      "properties": {
        "requestedOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RequestedOptionsResponse",
          "description": "The configuration used for this job."
        },
        "result": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ResultResponse",
          "description": "A summary of the outcome of this inspection job."
        }
      },
      "type": "object",
      "required": [
        "requestedOptions",
        "result"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectJobConfig": {
      "description": "Controls what and how to inspect for findings.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Action"
          },
          "description": "Actions to execute at the completion of the job."
        },
        "inspectConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfig",
          "description": "How and what to scan for."
        },
        "inspectTemplateName": {
          "type": "string",
          "description": "If provided, will be used as the default for all values in InspectConfig. `inspect_config` will be merged into the values persisted as part of the template."
        },
        "storageConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StorageConfig",
          "description": "The data to scan."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectJobConfigResponse": {
      "description": "Controls what and how to inspect for findings.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ActionResponse"
          },
          "description": "Actions to execute at the completion of the job."
        },
        "inspectConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfigResponse",
          "description": "How and what to scan for."
        },
        "inspectTemplateName": {
          "type": "string",
          "description": "If provided, will be used as the default for all values in InspectConfig. `inspect_config` will be merged into the values persisted as part of the template."
        },
        "storageConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StorageConfigResponse",
          "description": "The data to scan."
        }
      },
      "type": "object",
      "required": [
        "actions",
        "inspectConfig",
        "inspectTemplateName",
        "storageConfig"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectTemplateResponse": {
      "description": "The inspectTemplate contains a configuration (set of types of sensitive data to be detected) to be used anywhere you otherwise would normally specify InspectConfig. See https://cloud.google.com/dlp/docs/concepts-templates to learn more.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of an inspectTemplate."
        },
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "inspectConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfigResponse",
          "description": "The core content of the template. Configuration of the scanning process."
        },
        "name": {
          "type": "string",
          "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`;"
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of an inspectTemplate."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "inspectConfig",
        "name",
        "updateTime"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectionRule": {
      "description": "A single inspection rule to be applied to infoTypes, specified in `InspectionRuleSet`.",
      "properties": {
        "exclusionRule": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExclusionRule",
          "description": "Exclusion rule."
        },
        "hotwordRule": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2HotwordRule",
          "description": "Hotword-based detection rule."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectionRuleResponse": {
      "description": "A single inspection rule to be applied to infoTypes, specified in `InspectionRuleSet`.",
      "properties": {
        "exclusionRule": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExclusionRuleResponse",
          "description": "Exclusion rule."
        },
        "hotwordRule": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2HotwordRuleResponse",
          "description": "Hotword-based detection rule."
        }
      },
      "type": "object",
      "required": [
        "exclusionRule",
        "hotwordRule"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectionRuleSet": {
      "description": "Rule set for modifying a set of infoTypes to alter behavior under certain circumstances, depending on the specific details of the rules within the set.",
      "properties": {
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType"
          },
          "description": "List of infoTypes this rule set is applied to."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectionRule"
          },
          "description": "Set of rules to be applied to infoTypes. The rules are applied in order."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2InspectionRuleSetResponse": {
      "description": "Rule set for modifying a set of infoTypes to alter behavior under certain circumstances, depending on the specific details of the rules within the set.",
      "properties": {
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse"
          },
          "description": "List of infoTypes this rule set is applied to."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectionRuleResponse"
          },
          "description": "Set of rules to be applied to infoTypes. The rules are applied in order."
        }
      },
      "type": "object",
      "required": [
        "infoTypes",
        "rules"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2JobNotificationEmails": {
      "description": "Sends an email when the job completes. The email goes to IAM project owners and technical [Essential Contacts](https://cloud.google.com/resource-manager/docs/managing-notification-contacts).",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2JobNotificationEmailsResponse": {
      "description": "Sends an email when the job completes. The email goes to IAM project owners and technical [Essential Contacts](https://cloud.google.com/resource-manager/docs/managing-notification-contacts).",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KAnonymityConfig": {
      "description": "k-anonymity metric, used for analysis of reidentification risk.",
      "properties": {
        "entityId": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2EntityId",
          "description": "Message indicating that multiple rows might be associated to a single individual. If the same entity_id is associated to multiple quasi-identifier tuples over distinct rows, we consider the entire collection of tuples as the composite quasi-identifier. This collection is a multiset: the order in which the different tuples appear in the dataset is ignored, but their frequency is taken into account. Important note: a maximum of 1000 rows can be associated to a single entity ID. If more rows are associated with the same entity ID, some might be ignored."
        },
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId"
          },
          "description": "Set of fields to compute k-anonymity over. When multiple fields are specified, they are considered a single composite key. Structs and repeated data types are not supported; however, nested fields are supported so long as they are not structs themselves or nested within a repeated field."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KAnonymityConfigResponse": {
      "description": "k-anonymity metric, used for analysis of reidentification risk.",
      "properties": {
        "entityId": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2EntityIdResponse",
          "description": "Message indicating that multiple rows might be associated to a single individual. If the same entity_id is associated to multiple quasi-identifier tuples over distinct rows, we consider the entire collection of tuples as the composite quasi-identifier. This collection is a multiset: the order in which the different tuples appear in the dataset is ignored, but their frequency is taken into account. Important note: a maximum of 1000 rows can be associated to a single entity ID. If more rows are associated with the same entity ID, some might be ignored."
        },
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse"
          },
          "description": "Set of fields to compute k-anonymity over. When multiple fields are specified, they are considered a single composite key. Structs and repeated data types are not supported; however, nested fields are supported so long as they are not structs themselves or nested within a repeated field."
        }
      },
      "type": "object",
      "required": [
        "entityId",
        "quasiIds"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KAnonymityEquivalenceClassResponse": {
      "description": "The set of columns' values that share the same ldiversity value",
      "properties": {
        "equivalenceClassSize": {
          "type": "string",
          "description": "Size of the equivalence class, for example number of rows with the above set of values."
        },
        "quasiIdsValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse"
          },
          "description": "Set of values defining the equivalence class. One value per quasi-identifier column in the original KAnonymity metric message. The order is always the same as the original request."
        }
      },
      "type": "object",
      "required": [
        "equivalenceClassSize",
        "quasiIdsValues"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KAnonymityHistogramBucketResponse": {
      "description": "Histogram of k-anonymity equivalence classes.",
      "properties": {
        "bucketSize": {
          "type": "string",
          "description": "Total number of equivalence classes in this bucket."
        },
        "bucketValueCount": {
          "type": "string",
          "description": "Total number of distinct equivalence classes in this bucket."
        },
        "bucketValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KAnonymityEquivalenceClassResponse"
          },
          "description": "Sample of equivalence classes in this bucket. The total number of classes returned per bucket is capped at 20."
        },
        "equivalenceClassSizeLowerBound": {
          "type": "string",
          "description": "Lower bound on the size of the equivalence classes in this bucket."
        },
        "equivalenceClassSizeUpperBound": {
          "type": "string",
          "description": "Upper bound on the size of the equivalence classes in this bucket."
        }
      },
      "type": "object",
      "required": [
        "bucketSize",
        "bucketValueCount",
        "bucketValues",
        "equivalenceClassSizeLowerBound",
        "equivalenceClassSizeUpperBound"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KAnonymityResultResponse": {
      "description": "Result of the k-anonymity computation.",
      "properties": {
        "equivalenceClassHistogramBuckets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KAnonymityHistogramBucketResponse"
          },
          "description": "Histogram of k-anonymity equivalence classes."
        }
      },
      "type": "object",
      "required": [
        "equivalenceClassHistogramBuckets"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KMapEstimationConfig": {
      "description": "Reidentifiability metric. This corresponds to a risk model similar to what is called \"journalist risk\" in the literature, except the attack dataset is statistically modeled instead of being perfectly known. This can be done using publicly available data (like the US Census), or using a custom statistical model (indicated as one or several BigQuery tables), or by extrapolating from the distribution of values in the input dataset.",
      "properties": {
        "auxiliaryTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AuxiliaryTable"
          },
          "description": "Several auxiliary tables can be used in the analysis. Each custom_tag used to tag a quasi-identifiers column must appear in exactly one column of one auxiliary table."
        },
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TaggedField"
          },
          "description": "Fields considered to be quasi-identifiers. No two columns can have the same tag."
        },
        "regionCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 region code to use in the statistical modeling. Set if no column is tagged with a region-specific InfoType (like US_ZIP_5) or a region code."
        }
      },
      "type": "object",
      "required": [
        "quasiIds"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KMapEstimationConfigResponse": {
      "description": "Reidentifiability metric. This corresponds to a risk model similar to what is called \"journalist risk\" in the literature, except the attack dataset is statistically modeled instead of being perfectly known. This can be done using publicly available data (like the US Census), or using a custom statistical model (indicated as one or several BigQuery tables), or by extrapolating from the distribution of values in the input dataset.",
      "properties": {
        "auxiliaryTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AuxiliaryTableResponse"
          },
          "description": "Several auxiliary tables can be used in the analysis. Each custom_tag used to tag a quasi-identifiers column must appear in exactly one column of one auxiliary table."
        },
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TaggedFieldResponse"
          },
          "description": "Fields considered to be quasi-identifiers. No two columns can have the same tag."
        },
        "regionCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 region code to use in the statistical modeling. Set if no column is tagged with a region-specific InfoType (like US_ZIP_5) or a region code."
        }
      },
      "type": "object",
      "required": [
        "auxiliaryTables",
        "quasiIds",
        "regionCode"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KMapEstimationHistogramBucketResponse": {
      "description": "A KMapEstimationHistogramBucket message with the following values: min_anonymity: 3 max_anonymity: 5 frequency: 42 means that there are 42 records whose quasi-identifier values correspond to 3, 4 or 5 people in the overlying population. An important particular case is when min_anonymity = max_anonymity = 1: the frequency field then corresponds to the number of uniquely identifiable records.",
      "properties": {
        "bucketSize": {
          "type": "string",
          "description": "Number of records within these anonymity bounds."
        },
        "bucketValueCount": {
          "type": "string",
          "description": "Total number of distinct quasi-identifier tuple values in this bucket."
        },
        "bucketValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KMapEstimationQuasiIdValuesResponse"
          },
          "description": "Sample of quasi-identifier tuple values in this bucket. The total number of classes returned per bucket is capped at 20."
        },
        "maxAnonymity": {
          "type": "string",
          "description": "Always greater than or equal to min_anonymity."
        },
        "minAnonymity": {
          "type": "string",
          "description": "Always positive."
        }
      },
      "type": "object",
      "required": [
        "bucketSize",
        "bucketValueCount",
        "bucketValues",
        "maxAnonymity",
        "minAnonymity"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KMapEstimationQuasiIdValuesResponse": {
      "description": "A tuple of values for the quasi-identifier columns.",
      "properties": {
        "estimatedAnonymity": {
          "type": "string",
          "description": "The estimated anonymity for these quasi-identifier values."
        },
        "quasiIdsValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse"
          },
          "description": "The quasi-identifier values."
        }
      },
      "type": "object",
      "required": [
        "estimatedAnonymity",
        "quasiIdsValues"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KMapEstimationResultResponse": {
      "description": "Result of the reidentifiability analysis. Note that these results are an estimation, not exact values.",
      "properties": {
        "kMapEstimationHistogram": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KMapEstimationHistogramBucketResponse"
          },
          "description": "The intervals [min_anonymity, max_anonymity] do not overlap. If a value doesn't correspond to any such interval, the associated frequency is zero. For example, the following records: {min_anonymity: 1, max_anonymity: 1, frequency: 17} {min_anonymity: 2, max_anonymity: 3, frequency: 42} {min_anonymity: 5, max_anonymity: 10, frequency: 99} mean that there are no record with an estimated anonymity of 4, 5, or larger than 10."
        }
      },
      "type": "object",
      "required": [
        "kMapEstimationHistogram"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KindExpression": {
      "description": "A representation of a Datastore kind.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the kind."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KindExpressionResponse": {
      "description": "A representation of a Datastore kind.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the kind."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KmsWrappedCryptoKey": {
      "description": "Include to use an existing data crypto key wrapped by KMS. The wrapped key must be a 128-, 192-, or 256-bit key. Authorization requires the following IAM permissions when sending a request to perform a crypto transformation using a KMS-wrapped crypto key: dlp.kms.encrypt For more information, see [Creating a wrapped key] (https://cloud.google.com/dlp/docs/create-wrapped-key). Note: When you use Cloud KMS for cryptographic operations, [charges apply](https://cloud.google.com/kms/pricing).",
      "properties": {
        "cryptoKeyName": {
          "type": "string",
          "description": "The resource name of the KMS CryptoKey to use for unwrapping."
        },
        "wrappedKey": {
          "type": "string",
          "description": "The wrapped data crypto key."
        }
      },
      "type": "object",
      "required": [
        "cryptoKeyName",
        "wrappedKey"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2KmsWrappedCryptoKeyResponse": {
      "description": "Include to use an existing data crypto key wrapped by KMS. The wrapped key must be a 128-, 192-, or 256-bit key. Authorization requires the following IAM permissions when sending a request to perform a crypto transformation using a KMS-wrapped crypto key: dlp.kms.encrypt For more information, see [Creating a wrapped key] (https://cloud.google.com/dlp/docs/create-wrapped-key). Note: When you use Cloud KMS for cryptographic operations, [charges apply](https://cloud.google.com/kms/pricing).",
      "properties": {
        "cryptoKeyName": {
          "type": "string",
          "description": "The resource name of the KMS CryptoKey to use for unwrapping."
        },
        "wrappedKey": {
          "type": "string",
          "description": "The wrapped data crypto key."
        }
      },
      "type": "object",
      "required": [
        "cryptoKeyName",
        "wrappedKey"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LDiversityConfig": {
      "description": "l-diversity metric, used for analysis of reidentification risk.",
      "properties": {
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId"
          },
          "description": "Set of quasi-identifiers indicating how equivalence classes are defined for the l-diversity computation. When multiple fields are specified, they are considered a single composite key."
        },
        "sensitiveAttribute": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Sensitive field for computing the l-value."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LDiversityConfigResponse": {
      "description": "l-diversity metric, used for analysis of reidentification risk.",
      "properties": {
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse"
          },
          "description": "Set of quasi-identifiers indicating how equivalence classes are defined for the l-diversity computation. When multiple fields are specified, they are considered a single composite key."
        },
        "sensitiveAttribute": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Sensitive field for computing the l-value."
        }
      },
      "type": "object",
      "required": [
        "quasiIds",
        "sensitiveAttribute"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LDiversityEquivalenceClassResponse": {
      "description": "The set of columns' values that share the same ldiversity value.",
      "properties": {
        "equivalenceClassSize": {
          "type": "string",
          "description": "Size of the k-anonymity equivalence class."
        },
        "numDistinctSensitiveValues": {
          "type": "string",
          "description": "Number of distinct sensitive values in this equivalence class."
        },
        "quasiIdsValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse"
          },
          "description": "Quasi-identifier values defining the k-anonymity equivalence class. The order is always the same as the original request."
        },
        "topSensitiveValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueFrequencyResponse"
          },
          "description": "Estimated frequencies of top sensitive values."
        }
      },
      "type": "object",
      "required": [
        "equivalenceClassSize",
        "numDistinctSensitiveValues",
        "quasiIdsValues",
        "topSensitiveValues"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LDiversityHistogramBucketResponse": {
      "description": "Histogram of l-diversity equivalence class sensitive value frequencies.",
      "properties": {
        "bucketSize": {
          "type": "string",
          "description": "Total number of equivalence classes in this bucket."
        },
        "bucketValueCount": {
          "type": "string",
          "description": "Total number of distinct equivalence classes in this bucket."
        },
        "bucketValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LDiversityEquivalenceClassResponse"
          },
          "description": "Sample of equivalence classes in this bucket. The total number of classes returned per bucket is capped at 20."
        },
        "sensitiveValueFrequencyLowerBound": {
          "type": "string",
          "description": "Lower bound on the sensitive value frequencies of the equivalence classes in this bucket."
        },
        "sensitiveValueFrequencyUpperBound": {
          "type": "string",
          "description": "Upper bound on the sensitive value frequencies of the equivalence classes in this bucket."
        }
      },
      "type": "object",
      "required": [
        "bucketSize",
        "bucketValueCount",
        "bucketValues",
        "sensitiveValueFrequencyLowerBound",
        "sensitiveValueFrequencyUpperBound"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LDiversityResultResponse": {
      "description": "Result of the l-diversity computation.",
      "properties": {
        "sensitiveValueFrequencyHistogramBuckets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LDiversityHistogramBucketResponse"
          },
          "description": "Histogram of l-diversity equivalence class sensitive value frequencies."
        }
      },
      "type": "object",
      "required": [
        "sensitiveValueFrequencyHistogramBuckets"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LargeCustomDictionaryConfig": {
      "description": "Configuration for a custom dictionary created from a data source of any size up to the maximum size defined in the [limits](https://cloud.google.com/dlp/limits) page. The artifacts of dictionary creation are stored in the specified Cloud Storage location. Consider using `CustomInfoType.Dictionary` for smaller dictionaries that satisfy the size requirements.",
      "properties": {
        "bigQueryField": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryField",
          "description": "Field in a BigQuery table where each cell represents a dictionary phrase."
        },
        "cloudStorageFileSet": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStorageFileSet",
          "description": "Set of files containing newline-delimited lists of dictionary phrases."
        },
        "outputPath": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStoragePath",
          "description": "Location to store dictionary artifacts in Cloud Storage. These files will only be accessible by project owners and the DLP API. If any of these artifacts are modified, the dictionary is considered invalid and can no longer be used."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LargeCustomDictionaryConfigResponse": {
      "description": "Configuration for a custom dictionary created from a data source of any size up to the maximum size defined in the [limits](https://cloud.google.com/dlp/limits) page. The artifacts of dictionary creation are stored in the specified Cloud Storage location. Consider using `CustomInfoType.Dictionary` for smaller dictionaries that satisfy the size requirements.",
      "properties": {
        "bigQueryField": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryFieldResponse",
          "description": "Field in a BigQuery table where each cell represents a dictionary phrase."
        },
        "cloudStorageFileSet": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStorageFileSetResponse",
          "description": "Set of files containing newline-delimited lists of dictionary phrases."
        },
        "outputPath": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStoragePathResponse",
          "description": "Location to store dictionary artifacts in Cloud Storage. These files will only be accessible by project owners and the DLP API. If any of these artifacts are modified, the dictionary is considered invalid and can no longer be used."
        }
      },
      "type": "object",
      "required": [
        "bigQueryField",
        "cloudStorageFileSet",
        "outputPath"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LargeCustomDictionaryStatsResponse": {
      "description": "Summary statistics of a custom dictionary.",
      "properties": {
        "approxNumPhrases": {
          "type": "string",
          "description": "Approximate number of distinct phrases in the dictionary."
        }
      },
      "type": "object",
      "required": [
        "approxNumPhrases"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LeaveUntransformed": {
      "description": "Skips the data without modifying it if the requested transformation would cause an error. For example, if a `DateShift` transformation were applied an an IP address, this mode would leave the IP address unchanged in the response.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LeaveUntransformedResponse": {
      "description": "Skips the data without modifying it if the requested transformation would cause an error. For example, if a `DateShift` transformation were applied an an IP address, this mode would leave the IP address unchanged in the response.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LikelihoodAdjustment": {
      "description": "Message for specifying an adjustment to the likelihood of a finding as part of a detection rule.",
      "properties": {
        "fixedLikelihood": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LikelihoodAdjustmentFixedLikelihood",
          "description": "Set the likelihood of a finding to a fixed value."
        },
        "relativeLikelihood": {
          "type": "integer",
          "description": "Increase or decrease the likelihood by the specified number of levels. For example, if a finding would be `POSSIBLE` without the detection rule and `relative_likelihood` is 1, then it is upgraded to `LIKELY`, while a value of -1 would downgrade it to `UNLIKELY`. Likelihood may never drop below `VERY_UNLIKELY` or exceed `VERY_LIKELY`, so applying an adjustment of 1 followed by an adjustment of -1 when base likelihood is `VERY_LIKELY` will result in a final likelihood of `LIKELY`."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LikelihoodAdjustmentFixedLikelihood": {
      "description": "Set the likelihood of a finding to a fixed value.",
      "type": "string",
      "enum": [
        {
          "name": "LikelihoodUnspecified",
          "description": "Default value; same as POSSIBLE.",
          "value": "LIKELIHOOD_UNSPECIFIED"
        },
        {
          "name": "VeryUnlikely",
          "description": "Highest chance of a false positive.",
          "value": "VERY_UNLIKELY"
        },
        {
          "name": "Unlikely",
          "description": "High chance of a false positive.",
          "value": "UNLIKELY"
        },
        {
          "name": "Possible",
          "description": "Some matching signals. The default value.",
          "value": "POSSIBLE"
        },
        {
          "name": "Likely",
          "description": "Low chance of a false positive.",
          "value": "LIKELY"
        },
        {
          "name": "VeryLikely",
          "description": "Confidence level is high. Lowest chance of a false positive.",
          "value": "VERY_LIKELY"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2LikelihoodAdjustmentResponse": {
      "description": "Message for specifying an adjustment to the likelihood of a finding as part of a detection rule.",
      "properties": {
        "fixedLikelihood": {
          "type": "string",
          "description": "Set the likelihood of a finding to a fixed value."
        },
        "relativeLikelihood": {
          "type": "integer",
          "description": "Increase or decrease the likelihood by the specified number of levels. For example, if a finding would be `POSSIBLE` without the detection rule and `relative_likelihood` is 1, then it is upgraded to `LIKELY`, while a value of -1 would downgrade it to `UNLIKELY`. Likelihood may never drop below `VERY_UNLIKELY` or exceed `VERY_LIKELY`, so applying an adjustment of 1 followed by an adjustment of -1 when base likelihood is `VERY_LIKELY` will result in a final likelihood of `LIKELY`."
        }
      },
      "type": "object",
      "required": [
        "fixedLikelihood",
        "relativeLikelihood"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Manual": {
      "description": "Job trigger option for hybrid jobs. Jobs must be manually created and finished.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ManualResponse": {
      "description": "Job trigger option for hybrid jobs. Jobs must be manually created and finished.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2NumericalStatsConfig": {
      "description": "Compute numerical stats over an individual column, including min, max, and quantiles.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Field to compute numerical stats on. Supported types are integer, float, date, datetime, timestamp, time."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2NumericalStatsConfigResponse": {
      "description": "Compute numerical stats over an individual column, including min, max, and quantiles.",
      "properties": {
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Field to compute numerical stats on. Supported types are integer, float, date, datetime, timestamp, time."
        }
      },
      "type": "object",
      "required": [
        "field"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2NumericalStatsResultResponse": {
      "description": "Result of the numerical stats computation.",
      "properties": {
        "maxValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Maximum value appearing in the column."
        },
        "minValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Minimum value appearing in the column."
        },
        "quantileValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse"
          },
          "description": "List of 99 values that partition the set of field values into 100 equal sized buckets."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue",
        "quantileValues"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2OrConditions": {
      "description": "There is an OR relationship between these attributes. They are used to determine if a table should be scanned or not in Discovery.",
      "properties": {
        "minAge": {
          "type": "string",
          "description": "Minimum age a table must have before Cloud DLP can profile it. Value must be 1 hour or greater."
        },
        "minRowCount": {
          "type": "integer",
          "description": "Minimum number of rows that should be present before Cloud DLP profiles a table"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2OrConditionsResponse": {
      "description": "There is an OR relationship between these attributes. They are used to determine if a table should be scanned or not in Discovery.",
      "properties": {
        "minAge": {
          "type": "string",
          "description": "Minimum age a table must have before Cloud DLP can profile it. Value must be 1 hour or greater."
        },
        "minRowCount": {
          "type": "integer",
          "description": "Minimum number of rows that should be present before Cloud DLP profiles a table"
        }
      },
      "type": "object",
      "required": [
        "minAge",
        "minRowCount"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2OrgConfig": {
      "description": "Project and scan location information. Only set when the parent is an org.",
      "properties": {
        "location": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryStartingLocation",
          "description": "The data to scan: folder, org, or project"
        },
        "project": {
          "type": "string",
          "description": "The project that will run the scan. The DLP service account that exists within this project must have access to all resources that are profiled, and the Cloud DLP API must be enabled."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2OrgConfigResponse": {
      "description": "Project and scan location information. Only set when the parent is an org.",
      "properties": {
        "location": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryStartingLocationResponse",
          "description": "The data to scan: folder, org, or project"
        },
        "project": {
          "type": "string",
          "description": "The project that will run the scan. The DLP service account that exists within this project must have access to all resources that are profiled, and the Cloud DLP API must be enabled."
        }
      },
      "type": "object",
      "required": [
        "location",
        "project"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2OutputStorageConfig": {
      "description": "Cloud repository for storing output.",
      "properties": {
        "outputSchema": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OutputStorageConfigOutputSchema",
          "description": "Schema used for writing the findings for Inspect jobs. This field is only used for Inspect and must be unspecified for Risk jobs. Columns are derived from the `Finding` object. If appending to an existing table, any columns from the predefined schema that are missing will be added. No columns in the existing table will be deleted. If unspecified, then all available columns will be used for a new table or an (existing) table with no schema, and no changes will be made to an existing table that has a schema. Only for use with external storage."
        },
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTable",
          "description": "Store findings in an existing table or a new table in an existing dataset. If table_id is not set a new one will be generated for you with the following format: dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific time zone will be used for generating the date details. For Inspect, each column in an existing output table must have the same name, type, and mode of a field in the `Finding` object. For Risk, an existing output table should be the output of a previous Risk analysis job run on the same source table, with the same privacy metric and quasi-identifiers. Risk jobs that analyze the same table but compute a different privacy metric, or use different sets of quasi-identifiers, cannot store their results in the same table."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2OutputStorageConfigOutputSchema": {
      "description": "Schema used for writing the findings for Inspect jobs. This field is only used for Inspect and must be unspecified for Risk jobs. Columns are derived from the `Finding` object. If appending to an existing table, any columns from the predefined schema that are missing will be added. No columns in the existing table will be deleted. If unspecified, then all available columns will be used for a new table or an (existing) table with no schema, and no changes will be made to an existing table that has a schema. Only for use with external storage.",
      "type": "string",
      "enum": [
        {
          "name": "OutputSchemaUnspecified",
          "description": "Unused.",
          "value": "OUTPUT_SCHEMA_UNSPECIFIED"
        },
        {
          "name": "BasicColumns",
          "description": "Basic schema including only `info_type`, `quote`, `certainty`, and `timestamp`.",
          "value": "BASIC_COLUMNS"
        },
        {
          "name": "GcsColumns",
          "description": "Schema tailored to findings from scanning Cloud Storage.",
          "value": "GCS_COLUMNS"
        },
        {
          "name": "DatastoreColumns",
          "description": "Schema tailored to findings from scanning Google Datastore.",
          "value": "DATASTORE_COLUMNS"
        },
        {
          "name": "BigQueryColumns",
          "description": "Schema tailored to findings from scanning Google BigQuery.",
          "value": "BIG_QUERY_COLUMNS"
        },
        {
          "name": "AllColumns",
          "description": "Schema containing all columns.",
          "value": "ALL_COLUMNS"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2OutputStorageConfigResponse": {
      "description": "Cloud repository for storing output.",
      "properties": {
        "outputSchema": {
          "type": "string",
          "description": "Schema used for writing the findings for Inspect jobs. This field is only used for Inspect and must be unspecified for Risk jobs. Columns are derived from the `Finding` object. If appending to an existing table, any columns from the predefined schema that are missing will be added. No columns in the existing table will be deleted. If unspecified, then all available columns will be used for a new table or an (existing) table with no schema, and no changes will be made to an existing table that has a schema. Only for use with external storage."
        },
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "Store findings in an existing table or a new table in an existing dataset. If table_id is not set a new one will be generated for you with the following format: dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific time zone will be used for generating the date details. For Inspect, each column in an existing output table must have the same name, type, and mode of a field in the `Finding` object. For Risk, an existing output table should be the output of a previous Risk analysis job run on the same source table, with the same privacy metric and quasi-identifiers. Risk jobs that analyze the same table but compute a different privacy metric, or use different sets of quasi-identifiers, cannot store their results in the same table."
        }
      },
      "type": "object",
      "required": [
        "outputSchema",
        "table"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PartitionId": {
      "description": "Datastore partition ID. A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID.",
      "properties": {
        "namespaceId": {
          "type": "string",
          "description": "If not empty, the ID of the namespace to which the entities belong."
        },
        "project": {
          "type": "string",
          "description": "The ID of the project to which the entities belong."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PartitionIdResponse": {
      "description": "Datastore partition ID. A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID.",
      "properties": {
        "namespaceId": {
          "type": "string",
          "description": "If not empty, the ID of the namespace to which the entities belong."
        },
        "project": {
          "type": "string",
          "description": "The ID of the project to which the entities belong."
        }
      },
      "type": "object",
      "required": [
        "namespaceId",
        "project"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PrimitiveTransformation": {
      "description": "A rule for transforming a value.",
      "properties": {
        "bucketingConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BucketingConfig",
          "description": "Bucketing"
        },
        "characterMaskConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CharacterMaskConfig",
          "description": "Mask"
        },
        "cryptoDeterministicConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoDeterministicConfig",
          "description": "Deterministic Crypto"
        },
        "cryptoHashConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoHashConfig",
          "description": "Crypto"
        },
        "cryptoReplaceFfxFpeConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig",
          "description": "Ffx-Fpe"
        },
        "dateShiftConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DateShiftConfig",
          "description": "Date Shift"
        },
        "fixedSizeBucketingConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FixedSizeBucketingConfig",
          "description": "Fixed size bucketing"
        },
        "redactConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RedactConfig",
          "description": "Redact"
        },
        "replaceConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ReplaceValueConfig",
          "description": "Replace with a specified value."
        },
        "replaceDictionaryConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ReplaceDictionaryConfig",
          "description": "Replace with a value randomly drawn (with replacement) from a dictionary."
        },
        "replaceWithInfoTypeConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ReplaceWithInfoTypeConfig",
          "description": "Replace with infotype"
        },
        "timePartConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TimePartConfig",
          "description": "Time extraction"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PrimitiveTransformationResponse": {
      "description": "A rule for transforming a value.",
      "properties": {
        "bucketingConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BucketingConfigResponse",
          "description": "Bucketing"
        },
        "characterMaskConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CharacterMaskConfigResponse",
          "description": "Mask"
        },
        "cryptoDeterministicConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoDeterministicConfigResponse",
          "description": "Deterministic Crypto"
        },
        "cryptoHashConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoHashConfigResponse",
          "description": "Crypto"
        },
        "cryptoReplaceFfxFpeConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CryptoReplaceFfxFpeConfigResponse",
          "description": "Ffx-Fpe"
        },
        "dateShiftConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DateShiftConfigResponse",
          "description": "Date Shift"
        },
        "fixedSizeBucketingConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FixedSizeBucketingConfigResponse",
          "description": "Fixed size bucketing"
        },
        "redactConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RedactConfigResponse",
          "description": "Redact"
        },
        "replaceConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ReplaceValueConfigResponse",
          "description": "Replace with a specified value."
        },
        "replaceDictionaryConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ReplaceDictionaryConfigResponse",
          "description": "Replace with a value randomly drawn (with replacement) from a dictionary."
        },
        "replaceWithInfoTypeConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ReplaceWithInfoTypeConfigResponse",
          "description": "Replace with infotype"
        },
        "timePartConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TimePartConfigResponse",
          "description": "Time extraction"
        }
      },
      "type": "object",
      "required": [
        "bucketingConfig",
        "characterMaskConfig",
        "cryptoDeterministicConfig",
        "cryptoHashConfig",
        "cryptoReplaceFfxFpeConfig",
        "dateShiftConfig",
        "fixedSizeBucketingConfig",
        "redactConfig",
        "replaceConfig",
        "replaceDictionaryConfig",
        "replaceWithInfoTypeConfig",
        "timePartConfig"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PrivacyMetric": {
      "description": "Privacy metric to compute for reidentification risk analysis.",
      "properties": {
        "categoricalStatsConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CategoricalStatsConfig",
          "description": "Categorical stats"
        },
        "deltaPresenceEstimationConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeltaPresenceEstimationConfig",
          "description": "delta-presence"
        },
        "kAnonymityConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KAnonymityConfig",
          "description": "K-anonymity"
        },
        "kMapEstimationConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KMapEstimationConfig",
          "description": "k-map"
        },
        "lDiversityConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LDiversityConfig",
          "description": "l-diversity"
        },
        "numericalStatsConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2NumericalStatsConfig",
          "description": "Numerical stats"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PrivacyMetricResponse": {
      "description": "Privacy metric to compute for reidentification risk analysis.",
      "properties": {
        "categoricalStatsConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CategoricalStatsConfigResponse",
          "description": "Categorical stats"
        },
        "deltaPresenceEstimationConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeltaPresenceEstimationConfigResponse",
          "description": "delta-presence"
        },
        "kAnonymityConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KAnonymityConfigResponse",
          "description": "K-anonymity"
        },
        "kMapEstimationConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2KMapEstimationConfigResponse",
          "description": "k-map"
        },
        "lDiversityConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LDiversityConfigResponse",
          "description": "l-diversity"
        },
        "numericalStatsConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2NumericalStatsConfigResponse",
          "description": "Numerical stats"
        }
      },
      "type": "object",
      "required": [
        "categoricalStatsConfig",
        "deltaPresenceEstimationConfig",
        "kAnonymityConfig",
        "kMapEstimationConfig",
        "lDiversityConfig",
        "numericalStatsConfig"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Proximity": {
      "description": "Message for specifying a window around a finding to apply a detection rule.",
      "properties": {
        "windowAfter": {
          "type": "integer",
          "description": "Number of characters after the finding to consider."
        },
        "windowBefore": {
          "type": "integer",
          "description": "Number of characters before the finding to consider. For tabular data, if you want to modify the likelihood of an entire column of findngs, set this to 1. For more information, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/dlp/docs/creating-custom-infotypes-likelihood#match-column-values)."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ProximityResponse": {
      "description": "Message for specifying a window around a finding to apply a detection rule.",
      "properties": {
        "windowAfter": {
          "type": "integer",
          "description": "Number of characters after the finding to consider."
        },
        "windowBefore": {
          "type": "integer",
          "description": "Number of characters before the finding to consider. For tabular data, if you want to modify the likelihood of an entire column of findngs, set this to 1. For more information, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/dlp/docs/creating-custom-infotypes-likelihood#match-column-values)."
        }
      },
      "type": "object",
      "required": [
        "windowAfter",
        "windowBefore"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubCondition": {
      "description": "A condition consisting of a value.",
      "properties": {
        "minimumRiskScore": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubConditionMinimumRiskScore",
          "description": "The minimum data risk score that triggers the condition."
        },
        "minimumSensitivityScore": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubConditionMinimumSensitivityScore",
          "description": "The minimum sensitivity level that triggers the condition."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubConditionMinimumRiskScore": {
      "description": "The minimum data risk score that triggers the condition.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileScoreBucketUnspecified",
          "description": "Unused.",
          "value": "PROFILE_SCORE_BUCKET_UNSPECIFIED"
        },
        {
          "name": "High",
          "description": "High risk/sensitivity detected.",
          "value": "HIGH"
        },
        {
          "name": "MediumOrHigh",
          "description": "Medium or high risk/sensitivity detected.",
          "value": "MEDIUM_OR_HIGH"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubConditionMinimumSensitivityScore": {
      "description": "The minimum sensitivity level that triggers the condition.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileScoreBucketUnspecified",
          "description": "Unused.",
          "value": "PROFILE_SCORE_BUCKET_UNSPECIFIED"
        },
        {
          "name": "High",
          "description": "High risk/sensitivity detected.",
          "value": "HIGH"
        },
        {
          "name": "MediumOrHigh",
          "description": "Medium or high risk/sensitivity detected.",
          "value": "MEDIUM_OR_HIGH"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubConditionResponse": {
      "description": "A condition consisting of a value.",
      "properties": {
        "minimumRiskScore": {
          "type": "string",
          "description": "The minimum data risk score that triggers the condition."
        },
        "minimumSensitivityScore": {
          "type": "string",
          "description": "The minimum sensitivity level that triggers the condition."
        }
      },
      "type": "object",
      "required": [
        "minimumRiskScore",
        "minimumSensitivityScore"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubExpressions": {
      "description": "An expression, consisting of an operator and conditions.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubCondition"
          },
          "description": "Conditions to apply to the expression."
        },
        "logicalOperator": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubExpressionsLogicalOperator",
          "description": "The operator to apply to the collection of conditions."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubExpressionsLogicalOperator": {
      "description": "The operator to apply to the collection of conditions.",
      "type": "string",
      "enum": [
        {
          "name": "LogicalOperatorUnspecified",
          "description": "Unused.",
          "value": "LOGICAL_OPERATOR_UNSPECIFIED"
        },
        {
          "name": "Or",
          "description": "Conditional OR.",
          "value": "OR"
        },
        {
          "name": "And",
          "description": "Conditional AND.",
          "value": "AND"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubExpressionsResponse": {
      "description": "An expression, consisting of an operator and conditions.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubConditionResponse"
          },
          "description": "Conditions to apply to the expression."
        },
        "logicalOperator": {
          "type": "string",
          "description": "The operator to apply to the collection of conditions."
        }
      },
      "type": "object",
      "required": [
        "conditions",
        "logicalOperator"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubNotification": {
      "description": "Send a Pub/Sub message into the given Pub/Sub topic to connect other systems to data profile generation. The message payload data will be the byte serialization of `DataProfilePubSubMessage`.",
      "properties": {
        "detailOfMessage": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubNotificationDetailOfMessage",
          "description": "How much data to include in the Pub/Sub message. If the user wishes to limit the size of the message, they can use resource_name and fetch the profile fields they wish to. Per table profile (not per column)."
        },
        "event": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PubSubNotificationEvent",
          "description": "The type of event that triggers a Pub/Sub. At most one `PubSubNotification` per EventType is permitted."
        },
        "pubsubCondition": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DataProfilePubSubCondition",
          "description": "Conditions (e.g., data risk or sensitivity level) for triggering a Pub/Sub."
        },
        "topic": {
          "type": "string",
          "description": "Cloud Pub/Sub topic to send notifications to. Format is projects/{project}/topics/{topic}."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubNotificationDetailOfMessage": {
      "description": "How much data to include in the Pub/Sub message. If the user wishes to limit the size of the message, they can use resource_name and fetch the profile fields they wish to. Per table profile (not per column).",
      "type": "string",
      "enum": [
        {
          "name": "DetailLevelUnspecified",
          "description": "Unused.",
          "value": "DETAIL_LEVEL_UNSPECIFIED"
        },
        {
          "name": "TableProfile",
          "description": "The full table data profile.",
          "value": "TABLE_PROFILE"
        },
        {
          "name": "ResourceName",
          "description": "The resource name of the table.",
          "value": "RESOURCE_NAME"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubNotificationEvent": {
      "description": "The type of event that triggers a Pub/Sub. At most one `PubSubNotification` per EventType is permitted.",
      "type": "string",
      "enum": [
        {
          "name": "EventTypeUnspecified",
          "description": "Unused.",
          "value": "EVENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "NewProfile",
          "description": "New profile (not a re-profile).",
          "value": "NEW_PROFILE"
        },
        {
          "name": "ChangedProfile",
          "description": "Changed one of the following profile metrics: * Table data risk score * Table sensitivity score * Table resource visibility * Table encryption type * Table predicted infoTypes * Table other infoTypes",
          "value": "CHANGED_PROFILE"
        },
        {
          "name": "ScoreIncreased",
          "description": "Table data risk score or sensitivity score increased.",
          "value": "SCORE_INCREASED"
        },
        {
          "name": "ErrorChanged",
          "description": "A user (non-internal) error occurred.",
          "value": "ERROR_CHANGED"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PubSubNotificationResponse": {
      "description": "Send a Pub/Sub message into the given Pub/Sub topic to connect other systems to data profile generation. The message payload data will be the byte serialization of `DataProfilePubSubMessage`.",
      "properties": {
        "detailOfMessage": {
          "type": "string",
          "description": "How much data to include in the Pub/Sub message. If the user wishes to limit the size of the message, they can use resource_name and fetch the profile fields they wish to. Per table profile (not per column)."
        },
        "event": {
          "type": "string",
          "description": "The type of event that triggers a Pub/Sub. At most one `PubSubNotification` per EventType is permitted."
        },
        "pubsubCondition": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DataProfilePubSubConditionResponse",
          "description": "Conditions (e.g., data risk or sensitivity level) for triggering a Pub/Sub."
        },
        "topic": {
          "type": "string",
          "description": "Cloud Pub/Sub topic to send notifications to. Format is projects/{project}/topics/{topic}."
        }
      },
      "type": "object",
      "required": [
        "detailOfMessage",
        "event",
        "pubsubCondition",
        "topic"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PublishFindingsToCloudDataCatalog": {
      "description": "Publish findings of a DlpJob to Data Catalog. In Data Catalog, tag templates are applied to the resource that Cloud DLP scanned. Data Catalog tag templates are stored in the same project and region where the BigQuery table exists. For Cloud DLP to create and apply the tag template, the Cloud DLP service agent must have the `roles/datacatalog.tagTemplateOwner` permission on the project. The tag template contains fields summarizing the results of the DlpJob. Any field values previously written by another DlpJob are deleted. InfoType naming patterns are strictly enforced when using this feature. Findings are persisted in Data Catalog storage and are governed by service-specific policies for Data Catalog. For more information, see [Service Specific Terms](https://cloud.google.com/terms/service-terms). Only a single instance of this action can be specified. This action is allowed only if all resources being scanned are BigQuery tables. Compatible with: Inspect",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PublishFindingsToCloudDataCatalogResponse": {
      "description": "Publish findings of a DlpJob to Data Catalog. In Data Catalog, tag templates are applied to the resource that Cloud DLP scanned. Data Catalog tag templates are stored in the same project and region where the BigQuery table exists. For Cloud DLP to create and apply the tag template, the Cloud DLP service agent must have the `roles/datacatalog.tagTemplateOwner` permission on the project. The tag template contains fields summarizing the results of the DlpJob. Any field values previously written by another DlpJob are deleted. InfoType naming patterns are strictly enforced when using this feature. Findings are persisted in Data Catalog storage and are governed by service-specific policies for Data Catalog. For more information, see [Service Specific Terms](https://cloud.google.com/terms/service-terms). Only a single instance of this action can be specified. This action is allowed only if all resources being scanned are BigQuery tables. Compatible with: Inspect",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PublishSummaryToCscc": {
      "description": "Publish the result summary of a DlpJob to [Security Command Center](https://cloud.google.com/security-command-center). This action is available for only projects that belong to an organization. This action publishes the count of finding instances and their infoTypes. The summary of findings are persisted in Security Command Center and are governed by [service-specific policies for Security Command Center](https://cloud.google.com/terms/service-terms). Only a single instance of this action can be specified. Compatible with: Inspect",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PublishSummaryToCsccResponse": {
      "description": "Publish the result summary of a DlpJob to [Security Command Center](https://cloud.google.com/security-command-center). This action is available for only projects that belong to an organization. This action publishes the count of finding instances and their infoTypes. The summary of findings are persisted in Security Command Center and are governed by [service-specific policies for Security Command Center](https://cloud.google.com/terms/service-terms). Only a single instance of this action can be specified. Compatible with: Inspect",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PublishToPubSub": {
      "description": "Publish a message into a given Pub/Sub topic when DlpJob has completed. The message contains a single field, `DlpJobName`, which is equal to the finished job's [`DlpJob.name`](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs#DlpJob). Compatible with: Inspect, Risk",
      "properties": {
        "topic": {
          "type": "string",
          "description": "Cloud Pub/Sub topic to send notifications to. The topic must have given publishing access rights to the DLP API service account executing the long running DlpJob sending the notifications. Format is projects/{project}/topics/{topic}."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PublishToPubSubResponse": {
      "description": "Publish a message into a given Pub/Sub topic when DlpJob has completed. The message contains a single field, `DlpJobName`, which is equal to the finished job's [`DlpJob.name`](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs#DlpJob). Compatible with: Inspect, Risk",
      "properties": {
        "topic": {
          "type": "string",
          "description": "Cloud Pub/Sub topic to send notifications to. The topic must have given publishing access rights to the DLP API service account executing the long running DlpJob sending the notifications. Format is projects/{project}/topics/{topic}."
        }
      },
      "type": "object",
      "required": [
        "topic"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PublishToStackdriver": {
      "description": "Enable Stackdriver metric dlp.googleapis.com/finding_count. This will publish a metric to stack driver on each infotype requested and how many findings were found for it. CustomDetectors will be bucketed as 'Custom' under the Stackdriver label 'info_type'.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2PublishToStackdriverResponse": {
      "description": "Enable Stackdriver metric dlp.googleapis.com/finding_count. This will publish a metric to stack driver on each infotype requested and how many findings were found for it. CustomDetectors will be bucketed as 'Custom' under the Stackdriver label 'info_type'.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2QuasiId": {
      "description": "A column with a semantic tag attached.",
      "properties": {
        "customTag": {
          "type": "string",
          "description": "A column can be tagged with a custom tag. In this case, the user must indicate an auxiliary table that contains statistical information on the possible values of this column (below)."
        },
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Identifies the column."
        },
        "inferred": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleProtobufEmpty",
          "description": "If no semantic tag is indicated, we infer the statistical model from the distribution of values in the input data"
        },
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType",
          "description": "A column can be tagged with a InfoType to use the relevant public dataset as a statistical model of population, if available. We currently support US ZIP codes, region codes, ages and genders. To programmatically obtain the list of supported InfoTypes, use ListInfoTypes with the supported_by=RISK_ANALYSIS filter."
        }
      },
      "type": "object",
      "required": [
        "field"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2QuasiIdField": {
      "description": "A quasi-identifier column has a custom_tag, used to know which column in the data corresponds to which column in the statistical model.",
      "properties": {
        "customTag": {
          "type": "string",
          "description": "A auxiliary field."
        },
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Identifies the column."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2QuasiIdFieldResponse": {
      "description": "A quasi-identifier column has a custom_tag, used to know which column in the data corresponds to which column in the statistical model.",
      "properties": {
        "customTag": {
          "type": "string",
          "description": "A auxiliary field."
        },
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Identifies the column."
        }
      },
      "type": "object",
      "required": [
        "customTag",
        "field"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2QuasiIdResponse": {
      "description": "A column with a semantic tag attached.",
      "properties": {
        "customTag": {
          "type": "string",
          "description": "A column can be tagged with a custom tag. In this case, the user must indicate an auxiliary table that contains statistical information on the possible values of this column (below)."
        },
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Identifies the column."
        },
        "inferred": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleProtobufEmptyResponse",
          "description": "If no semantic tag is indicated, we infer the statistical model from the distribution of values in the input data"
        },
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse",
          "description": "A column can be tagged with a InfoType to use the relevant public dataset as a statistical model of population, if available. We currently support US ZIP codes, region codes, ages and genders. To programmatically obtain the list of supported InfoTypes, use ListInfoTypes with the supported_by=RISK_ANALYSIS filter."
        }
      },
      "type": "object",
      "required": [
        "customTag",
        "field",
        "inferred",
        "infoType"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2QuasiIdentifierField": {
      "description": "A quasi-identifier column has a custom_tag, used to know which column in the data corresponds to which column in the statistical model.",
      "properties": {
        "customTag": {
          "type": "string",
          "description": "A column can be tagged with a custom tag. In this case, the user must indicate an auxiliary table that contains statistical information on the possible values of this column (below)."
        },
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Identifies the column."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2QuasiIdentifierFieldResponse": {
      "description": "A quasi-identifier column has a custom_tag, used to know which column in the data corresponds to which column in the statistical model.",
      "properties": {
        "customTag": {
          "type": "string",
          "description": "A column can be tagged with a custom tag. In this case, the user must indicate an auxiliary table that contains statistical information on the possible values of this column (below)."
        },
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Identifies the column."
        }
      },
      "type": "object",
      "required": [
        "customTag",
        "field"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RecordCondition": {
      "description": "A condition for determining whether a transformation should be applied to a field.",
      "properties": {
        "expressions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Expressions",
          "description": "An expression."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RecordConditionResponse": {
      "description": "A condition for determining whether a transformation should be applied to a field.",
      "properties": {
        "expressions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ExpressionsResponse",
          "description": "An expression."
        }
      },
      "type": "object",
      "required": [
        "expressions"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RecordSuppression": {
      "description": "Configuration to suppress records whose suppression conditions evaluate to true.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RecordCondition",
          "description": "A condition that when it evaluates to true will result in the record being evaluated to be suppressed from the transformed content."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RecordSuppressionResponse": {
      "description": "Configuration to suppress records whose suppression conditions evaluate to true.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RecordConditionResponse",
          "description": "A condition that when it evaluates to true will result in the record being evaluated to be suppressed from the transformed content."
        }
      },
      "type": "object",
      "required": [
        "condition"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RecordTransformations": {
      "description": "A type of transformation that is applied over structured data such as a table.",
      "properties": {
        "fieldTransformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldTransformation"
          },
          "description": "Transform the record by applying various field transformations."
        },
        "recordSuppressions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RecordSuppression"
          },
          "description": "Configuration defining which records get suppressed entirely. Records that match any suppression rule are omitted from the output."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RecordTransformationsResponse": {
      "description": "A type of transformation that is applied over structured data such as a table.",
      "properties": {
        "fieldTransformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldTransformationResponse"
          },
          "description": "Transform the record by applying various field transformations."
        },
        "recordSuppressions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RecordSuppressionResponse"
          },
          "description": "Configuration defining which records get suppressed entirely. Records that match any suppression rule are omitted from the output."
        }
      },
      "type": "object",
      "required": [
        "fieldTransformations",
        "recordSuppressions"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RedactConfig": {
      "description": "Redact a given value. For example, if used with an `InfoTypeTransformation` transforming PHONE_NUMBER, and input 'My phone number is 206-555-0123', the output would be 'My phone number is '.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RedactConfigResponse": {
      "description": "Redact a given value. For example, if used with an `InfoTypeTransformation` transforming PHONE_NUMBER, and input 'My phone number is 206-555-0123', the output would be 'My phone number is '.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Regex": {
      "description": "Message defining a custom regular expression.",
      "properties": {
        "groupIndexes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included."
        },
        "pattern": {
          "type": "string",
          "description": "Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RegexResponse": {
      "description": "Message defining a custom regular expression.",
      "properties": {
        "groupIndexes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included."
        },
        "pattern": {
          "type": "string",
          "description": "Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub."
        }
      },
      "type": "object",
      "required": [
        "groupIndexes",
        "pattern"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ReplaceDictionaryConfig": {
      "description": "Replace each input value with a value randomly selected from the dictionary.",
      "properties": {
        "wordList": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2WordList",
          "description": "A list of words to select from for random replacement. The [limits](https://cloud.google.com/dlp/limits) page contains details about the size limits of dictionaries."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ReplaceDictionaryConfigResponse": {
      "description": "Replace each input value with a value randomly selected from the dictionary.",
      "properties": {
        "wordList": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2WordListResponse",
          "description": "A list of words to select from for random replacement. The [limits](https://cloud.google.com/dlp/limits) page contains details about the size limits of dictionaries."
        }
      },
      "type": "object",
      "required": [
        "wordList"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ReplaceValueConfig": {
      "description": "Replace each input value with a given `Value`.",
      "properties": {
        "newValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Value",
          "description": "Value to replace it with."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ReplaceValueConfigResponse": {
      "description": "Replace each input value with a given `Value`.",
      "properties": {
        "newValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "Value to replace it with."
        }
      },
      "type": "object",
      "required": [
        "newValue"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ReplaceWithInfoTypeConfig": {
      "description": "Replace each matching finding with the name of the info_type.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ReplaceWithInfoTypeConfigResponse": {
      "description": "Replace each matching finding with the name of the info_type.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RequestedDeidentifyOptionsResponse": {
      "description": "De-identification options.",
      "properties": {
        "snapshotDeidentifyTemplate": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyTemplateResponse",
          "description": "Snapshot of the state of the `DeidentifyTemplate` from the Deidentify action at the time this job was run."
        },
        "snapshotImageRedactTemplate": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyTemplateResponse",
          "description": "Snapshot of the state of the image transformation `DeidentifyTemplate` from the `Deidentify` action at the time this job was run."
        },
        "snapshotStructuredDeidentifyTemplate": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyTemplateResponse",
          "description": "Snapshot of the state of the structured `DeidentifyTemplate` from the `Deidentify` action at the time this job was run."
        }
      },
      "type": "object",
      "required": [
        "snapshotDeidentifyTemplate",
        "snapshotImageRedactTemplate",
        "snapshotStructuredDeidentifyTemplate"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RequestedOptionsResponse": {
      "description": "Snapshot of the inspection configuration.",
      "properties": {
        "jobConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectJobConfigResponse",
          "description": "Inspect config."
        },
        "snapshotInspectTemplate": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectTemplateResponse",
          "description": "If run with an InspectTemplate, a snapshot of its state at the time of this run."
        }
      },
      "type": "object",
      "required": [
        "jobConfig",
        "snapshotInspectTemplate"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RequestedRiskAnalysisOptionsResponse": {
      "description": "Risk analysis options.",
      "properties": {
        "jobConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RiskAnalysisJobConfigResponse",
          "description": "The job config for the risk job."
        }
      },
      "type": "object",
      "required": [
        "jobConfig"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ResultResponse": {
      "description": "All result fields mentioned below are updated while the job is processing.",
      "properties": {
        "hybridStats": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2HybridInspectStatisticsResponse",
          "description": "Statistics related to the processing of hybrid inspect."
        },
        "infoTypeStats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeStatsResponse"
          },
          "description": "Statistics of how many instances of each info type were found during inspect job."
        },
        "processedBytes": {
          "type": "string",
          "description": "Total size in bytes that were processed."
        },
        "totalEstimatedBytes": {
          "type": "string",
          "description": "Estimate of the number of bytes to process."
        }
      },
      "type": "object",
      "required": [
        "hybridStats",
        "infoTypeStats",
        "processedBytes",
        "totalEstimatedBytes"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RiskAnalysisJobConfig": {
      "description": "Configuration for a risk analysis job. See https://cloud.google.com/dlp/docs/concepts-risk-analysis to learn more.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Action"
          },
          "description": "Actions to execute at the completion of the job. Are executed in the order provided."
        },
        "privacyMetric": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PrivacyMetric",
          "description": "Privacy metric to compute."
        },
        "sourceTable": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTable",
          "description": "Input dataset to compute metrics over."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2RiskAnalysisJobConfigResponse": {
      "description": "Configuration for a risk analysis job. See https://cloud.google.com/dlp/docs/concepts-risk-analysis to learn more.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ActionResponse"
          },
          "description": "Actions to execute at the completion of the job. Are executed in the order provided."
        },
        "privacyMetric": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2PrivacyMetricResponse",
          "description": "Privacy metric to compute."
        },
        "sourceTable": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "Input dataset to compute metrics over."
        }
      },
      "type": "object",
      "required": [
        "actions",
        "privacyMetric",
        "sourceTable"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SaveFindings": {
      "description": "If set, the detailed findings will be persisted to the specified OutputStorageConfig. Only a single instance of this action can be specified. Compatible with: Inspect, Risk",
      "properties": {
        "outputConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OutputStorageConfig",
          "description": "Location to store findings outside of DLP."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SaveFindingsResponse": {
      "description": "If set, the detailed findings will be persisted to the specified OutputStorageConfig. Only a single instance of this action can be specified. Compatible with: Inspect, Risk",
      "properties": {
        "outputConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OutputStorageConfigResponse",
          "description": "Location to store findings outside of DLP."
        }
      },
      "type": "object",
      "required": [
        "outputConfig"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Schedule": {
      "description": "Schedule for inspect job triggers.",
      "properties": {
        "recurrencePeriodDuration": {
          "type": "string",
          "description": "With this option a job is started on a regular periodic basis. For example: every day (86400 seconds). A scheduled start time will be skipped if the previous execution has not ended when its scheduled time occurs. This value must be set to a time duration greater than or equal to 1 day and can be no longer than 60 days."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ScheduleResponse": {
      "description": "Schedule for inspect job triggers.",
      "properties": {
        "recurrencePeriodDuration": {
          "type": "string",
          "description": "With this option a job is started on a regular periodic basis. For example: every day (86400 seconds). A scheduled start time will be skipped if the previous execution has not ended when its scheduled time occurs. This value must be set to a time duration greater than or equal to 1 day and can be no longer than 60 days."
        }
      },
      "type": "object",
      "required": [
        "recurrencePeriodDuration"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SelectedInfoTypes": {
      "description": "Apply transformation to the selected info_types.",
      "properties": {
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType"
          },
          "description": "InfoTypes to apply the transformation to. Required. Provided InfoType must be unique within the ImageTransformations message."
        }
      },
      "type": "object",
      "required": [
        "infoTypes"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SelectedInfoTypesResponse": {
      "description": "Apply transformation to the selected info_types.",
      "properties": {
        "infoTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse"
          },
          "description": "InfoTypes to apply the transformation to. Required. Provided InfoType must be unique within the ImageTransformations message."
        }
      },
      "type": "object",
      "required": [
        "infoTypes"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SensitivityScore": {
      "description": "Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive.",
      "properties": {
        "score": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2SensitivityScoreScore",
          "description": "The sensitivity score applied to the resource."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SensitivityScoreResponse": {
      "description": "Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive.",
      "properties": {
        "score": {
          "type": "string",
          "description": "The sensitivity score applied to the resource."
        }
      },
      "type": "object",
      "required": [
        "score"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SensitivityScoreScore": {
      "description": "The sensitivity score applied to the resource.",
      "type": "string",
      "enum": [
        {
          "name": "SensitivityScoreUnspecified",
          "description": "Unused.",
          "value": "SENSITIVITY_SCORE_UNSPECIFIED"
        },
        {
          "name": "SensitivityLow",
          "description": "No sensitive information detected. The resource isn't publicly accessible.",
          "value": "SENSITIVITY_LOW"
        },
        {
          "name": "SensitivityModerate",
          "description": "Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.",
          "value": "SENSITIVITY_MODERATE"
        },
        {
          "name": "SensitivityHigh",
          "description": "High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.",
          "value": "SENSITIVITY_HIGH"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StatisticalTable": {
      "description": "An auxiliary table containing statistical information on the relative frequency of different quasi-identifiers values. It has one or several quasi-identifiers columns, and one column that indicates the relative frequency of each quasi-identifier tuple. If a tuple is present in the data but not in the auxiliary table, the corresponding relative frequency is assumed to be zero (and thus, the tuple is highly reidentifiable).",
      "properties": {
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2QuasiIdentifierField"
          },
          "description": "Quasi-identifier columns."
        },
        "relativeFrequency": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "The relative frequency column must contain a floating-point number between 0 and 1 (inclusive). Null values are assumed to be zero."
        },
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTable",
          "description": "Auxiliary table location."
        }
      },
      "type": "object",
      "required": [
        "quasiIds",
        "relativeFrequency",
        "table"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StatisticalTableResponse": {
      "description": "An auxiliary table containing statistical information on the relative frequency of different quasi-identifiers values. It has one or several quasi-identifiers columns, and one column that indicates the relative frequency of each quasi-identifier tuple. If a tuple is present in the data but not in the auxiliary table, the corresponding relative frequency is assumed to be zero (and thus, the tuple is highly reidentifiable).",
      "properties": {
        "quasiIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2QuasiIdentifierFieldResponse"
          },
          "description": "Quasi-identifier columns."
        },
        "relativeFrequency": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "The relative frequency column must contain a floating-point number between 0 and 1 (inclusive). Null values are assumed to be zero."
        },
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "Auxiliary table location."
        }
      },
      "type": "object",
      "required": [
        "quasiIds",
        "relativeFrequency",
        "table"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StorageConfig": {
      "description": "Shared message indicating Cloud storage type.",
      "properties": {
        "bigQueryOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryOptions",
          "description": "BigQuery options."
        },
        "cloudStorageOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStorageOptions",
          "description": "Cloud Storage options."
        },
        "datastoreOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DatastoreOptions",
          "description": "Google Cloud Datastore options."
        },
        "hybridOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2HybridOptions",
          "description": "Hybrid inspection options."
        },
        "timespanConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TimespanConfig"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StorageConfigResponse": {
      "description": "Shared message indicating Cloud storage type.",
      "properties": {
        "bigQueryOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryOptionsResponse",
          "description": "BigQuery options."
        },
        "cloudStorageOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2CloudStorageOptionsResponse",
          "description": "Cloud Storage options."
        },
        "datastoreOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DatastoreOptionsResponse",
          "description": "Google Cloud Datastore options."
        },
        "hybridOptions": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2HybridOptionsResponse",
          "description": "Hybrid inspection options."
        },
        "timespanConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TimespanConfigResponse"
        }
      },
      "type": "object",
      "required": [
        "bigQueryOptions",
        "cloudStorageOptions",
        "datastoreOptions",
        "hybridOptions",
        "timespanConfig"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StoredInfoTypeConfig": {
      "description": "Configuration for stored infoTypes. All fields and subfield are provided by the user. For more information, see https://cloud.google.com/dlp/docs/creating-custom-infotypes.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the StoredInfoType (max 256 characters)."
        },
        "dictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Dictionary",
          "description": "Store dictionary-based CustomInfoType."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the StoredInfoType (max 256 characters)."
        },
        "largeCustomDictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LargeCustomDictionaryConfig",
          "description": "StoredInfoType where findings are defined by a dictionary of phrases."
        },
        "regex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Regex",
          "description": "Store regular expression-based StoredInfoType."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StoredInfoTypeConfigResponse": {
      "description": "Configuration for stored infoTypes. All fields and subfield are provided by the user. For more information, see https://cloud.google.com/dlp/docs/creating-custom-infotypes.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the StoredInfoType (max 256 characters)."
        },
        "dictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DictionaryResponse",
          "description": "Store dictionary-based CustomInfoType."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the StoredInfoType (max 256 characters)."
        },
        "largeCustomDictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LargeCustomDictionaryConfigResponse",
          "description": "StoredInfoType where findings are defined by a dictionary of phrases."
        },
        "regex": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RegexResponse",
          "description": "Store regular expression-based StoredInfoType."
        }
      },
      "type": "object",
      "required": [
        "description",
        "dictionary",
        "displayName",
        "largeCustomDictionary",
        "regex"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StoredInfoTypeStatsResponse": {
      "description": "Statistics for a StoredInfoType.",
      "properties": {
        "largeCustomDictionary": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LargeCustomDictionaryStatsResponse",
          "description": "StoredInfoType where findings are defined by a dictionary of phrases."
        }
      },
      "type": "object",
      "required": [
        "largeCustomDictionary"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StoredInfoTypeVersionResponse": {
      "description": "Version of a StoredInfoType, including the configuration used to build it, create timestamp, and current state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredInfoTypeConfigResponse",
          "description": "StoredInfoType configuration."
        },
        "createTime": {
          "type": "string",
          "description": "Create timestamp of the version. Read-only, determined by the system when the version is created."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
          },
          "description": "Errors that occurred when creating this storedInfoType version, or anomalies detected in the storedInfoType data that render it unusable. Only the five most recent errors will be displayed, with the most recent error appearing first. For example, some of the data for stored custom dictionaries is put in the user's Cloud Storage bucket, and if this data is modified or deleted by the user or another system, the dictionary becomes invalid. If any errors occur, fix the problem indicated by the error message and use the UpdateStoredInfoType API method to create another version of the storedInfoType to continue using it, reusing the same `config` if it was not the source of the error."
        },
        "state": {
          "type": "string",
          "description": "Stored info type version state. Read-only, updated by the system during dictionary creation."
        },
        "stats": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredInfoTypeStatsResponse",
          "description": "Statistics about this storedInfoType version."
        }
      },
      "type": "object",
      "required": [
        "config",
        "createTime",
        "errors",
        "state",
        "stats"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StoredType": {
      "description": "A reference to a StoredInfoType to use with scanning.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp indicating when the version of the `StoredInfoType` used for inspection was created. Output-only field, populated by the system."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the requested `StoredInfoType`, for example `organizations/433245324/storedInfoTypes/432452342` or `projects/project-id/storedInfoTypes/432452342`."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2StoredTypeResponse": {
      "description": "A reference to a StoredInfoType to use with scanning.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp indicating when the version of the `StoredInfoType` used for inspection was created. Output-only field, populated by the system."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the requested `StoredInfoType`, for example `organizations/433245324/storedInfoTypes/432452342` or `projects/project-id/storedInfoTypes/432452342`."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "name"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SurrogateType": {
      "description": "Message for detecting output from deidentification transformations such as [`CryptoReplaceFfxFpeConfig`](https://cloud.google.com/dlp/docs/reference/rest/v2/organizations.deidentifyTemplates#cryptoreplaceffxfpeconfig). These types of transformations are those that perform pseudonymization, thereby producing a \"surrogate\" as output. This should be used in conjunction with a field on the transformation such as `surrogate_info_type`. This CustomInfoType does not support the use of `detection_rules`.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2SurrogateTypeResponse": {
      "description": "Message for detecting output from deidentification transformations such as [`CryptoReplaceFfxFpeConfig`](https://cloud.google.com/dlp/docs/reference/rest/v2/organizations.deidentifyTemplates#cryptoreplaceffxfpeconfig). These types of transformations are those that perform pseudonymization, thereby producing a \"surrogate\" as output. This should be used in conjunction with a field on the transformation such as `surrogate_info_type`. This CustomInfoType does not support the use of `detection_rules`.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TableOptions": {
      "description": "Instructions regarding the table content being inspected.",
      "properties": {
        "identifyingFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId"
          },
          "description": "The columns that are the primary keys for table objects included in ContentItem. A copy of this cell's value will stored alongside alongside each finding so that the finding can be traced to the specific row it came from. No more than 3 may be provided."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TableOptionsResponse": {
      "description": "Instructions regarding the table content being inspected.",
      "properties": {
        "identifyingFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse"
          },
          "description": "The columns that are the primary keys for table objects included in ContentItem. A copy of this cell's value will stored alongside alongside each finding so that the finding can be traced to the specific row it came from. No more than 3 may be provided."
        }
      },
      "type": "object",
      "required": [
        "identifyingFields"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TaggedField": {
      "description": "A column with a semantic tag attached.",
      "properties": {
        "customTag": {
          "type": "string",
          "description": "A column can be tagged with a custom tag. In this case, the user must indicate an auxiliary table that contains statistical information on the possible values of this column (below)."
        },
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Identifies the column."
        },
        "inferred": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleProtobufEmpty",
          "description": "If no semantic tag is indicated, we infer the statistical model from the distribution of values in the input data"
        },
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoType",
          "description": "A column can be tagged with a InfoType to use the relevant public dataset as a statistical model of population, if available. We currently support US ZIP codes, region codes, ages and genders. To programmatically obtain the list of supported InfoTypes, use ListInfoTypes with the supported_by=RISK_ANALYSIS filter."
        }
      },
      "type": "object",
      "required": [
        "field"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TaggedFieldResponse": {
      "description": "A column with a semantic tag attached.",
      "properties": {
        "customTag": {
          "type": "string",
          "description": "A column can be tagged with a custom tag. In this case, the user must indicate an auxiliary table that contains statistical information on the possible values of this column (below)."
        },
        "field": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Identifies the column."
        },
        "inferred": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleProtobufEmptyResponse",
          "description": "If no semantic tag is indicated, we infer the statistical model from the distribution of values in the input data"
        },
        "infoType": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InfoTypeResponse",
          "description": "A column can be tagged with a InfoType to use the relevant public dataset as a statistical model of population, if available. We currently support US ZIP codes, region codes, ages and genders. To programmatically obtain the list of supported InfoTypes, use ListInfoTypes with the supported_by=RISK_ANALYSIS filter."
        }
      },
      "type": "object",
      "required": [
        "customTag",
        "field",
        "inferred",
        "infoType"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ThrowError": {
      "description": "Throw an error and fail the request when a transformation error occurs.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ThrowErrorResponse": {
      "description": "Throw an error and fail the request when a transformation error occurs.",
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TimePartConfig": {
      "description": "For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a portion of the value.",
      "properties": {
        "partToExtract": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TimePartConfigPartToExtract",
          "description": "The part of the time to keep."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TimePartConfigPartToExtract": {
      "description": "The part of the time to keep.",
      "type": "string",
      "enum": [
        {
          "name": "TimePartUnspecified",
          "description": "Unused",
          "value": "TIME_PART_UNSPECIFIED"
        },
        {
          "name": "Year",
          "description": "[0-9999]",
          "value": "YEAR"
        },
        {
          "name": "Month",
          "description": "[1-12]",
          "value": "MONTH"
        },
        {
          "name": "DayOfMonth",
          "description": "[1-31]",
          "value": "DAY_OF_MONTH"
        },
        {
          "name": "DayOfWeek",
          "description": "[1-7]",
          "value": "DAY_OF_WEEK"
        },
        {
          "name": "WeekOfYear",
          "description": "[1-53]",
          "value": "WEEK_OF_YEAR"
        },
        {
          "name": "HourOfDay",
          "description": "[0-23]",
          "value": "HOUR_OF_DAY"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TimePartConfigResponse": {
      "description": "For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a portion of the value.",
      "properties": {
        "partToExtract": {
          "type": "string",
          "description": "The part of the time to keep."
        }
      },
      "type": "object",
      "required": [
        "partToExtract"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TimespanConfig": {
      "description": "Configuration of the timespan of the items to include in scanning. Currently only supported when inspecting Cloud Storage and BigQuery.",
      "properties": {
        "enableAutoPopulationOfTimespanConfig": {
          "type": "boolean",
          "description": "When the job is started by a JobTrigger we will automatically figure out a valid start_time to avoid scanning files that have not been modified since the last time the JobTrigger executed. This will be based on the time of the execution of the last run of the JobTrigger or the timespan end_time used in the last run of the JobTrigger."
        },
        "endTime": {
          "type": "string",
          "description": "Exclude files, tables, or rows newer than this value. If not set, no upper time limit is applied."
        },
        "startTime": {
          "type": "string",
          "description": "Exclude files, tables, or rows older than this value. If not set, no lower time limit is applied."
        },
        "timestampField": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldId",
          "description": "Specification of the field containing the timestamp of scanned items. Used for data sources like Datastore and BigQuery. *For BigQuery* If this value is not specified and the table was modified between the given start and end times, the entire table will be scanned. If this value is specified, then rows are filtered based on the given start and end times. Rows with a `NULL` value in the provided BigQuery column are skipped. Valid data types of the provided BigQuery column are: `INTEGER`, `DATE`, `TIMESTAMP`, and `DATETIME`. If your BigQuery table is [partitioned at ingestion time](https://cloud.google.com/bigquery/docs/partitioned-tables#ingestion_time), you can use any of the following pseudo-columns as your timestamp field. When used with Cloud DLP, these pseudo-column names are case sensitive. - _PARTITIONTIME - _PARTITIONDATE - _PARTITION_LOAD_TIME *For Datastore* If this value is specified, then entities are filtered based on the given start and end times. If an entity does not contain the provided timestamp property or contains empty or invalid values, then it is included. Valid data types of the provided timestamp property are: `TIMESTAMP`. See the [known issue](https://cloud.google.com/dlp/docs/known-issues#bq-timespan) related to this operation."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TimespanConfigResponse": {
      "description": "Configuration of the timespan of the items to include in scanning. Currently only supported when inspecting Cloud Storage and BigQuery.",
      "properties": {
        "enableAutoPopulationOfTimespanConfig": {
          "type": "boolean",
          "description": "When the job is started by a JobTrigger we will automatically figure out a valid start_time to avoid scanning files that have not been modified since the last time the JobTrigger executed. This will be based on the time of the execution of the last run of the JobTrigger or the timespan end_time used in the last run of the JobTrigger."
        },
        "endTime": {
          "type": "string",
          "description": "Exclude files, tables, or rows newer than this value. If not set, no upper time limit is applied."
        },
        "startTime": {
          "type": "string",
          "description": "Exclude files, tables, or rows older than this value. If not set, no lower time limit is applied."
        },
        "timestampField": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2FieldIdResponse",
          "description": "Specification of the field containing the timestamp of scanned items. Used for data sources like Datastore and BigQuery. *For BigQuery* If this value is not specified and the table was modified between the given start and end times, the entire table will be scanned. If this value is specified, then rows are filtered based on the given start and end times. Rows with a `NULL` value in the provided BigQuery column are skipped. Valid data types of the provided BigQuery column are: `INTEGER`, `DATE`, `TIMESTAMP`, and `DATETIME`. If your BigQuery table is [partitioned at ingestion time](https://cloud.google.com/bigquery/docs/partitioned-tables#ingestion_time), you can use any of the following pseudo-columns as your timestamp field. When used with Cloud DLP, these pseudo-column names are case sensitive. - _PARTITIONTIME - _PARTITIONDATE - _PARTITION_LOAD_TIME *For Datastore* If this value is specified, then entities are filtered based on the given start and end times. If an entity does not contain the provided timestamp property or contains empty or invalid values, then it is included. Valid data types of the provided timestamp property are: `TIMESTAMP`. See the [known issue](https://cloud.google.com/dlp/docs/known-issues#bq-timespan) related to this operation."
        }
      },
      "type": "object",
      "required": [
        "enableAutoPopulationOfTimespanConfig",
        "endTime",
        "startTime",
        "timestampField"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TransformationConfig": {
      "description": "User specified templates and configs for how to deidentify structured, unstructures, and image files. User must provide either a unstructured deidentify template or at least one redact image config.",
      "properties": {
        "deidentifyTemplate": {
          "type": "string",
          "description": "De-identify template. If this template is specified, it will serve as the default de-identify template. This template cannot contain `record_transformations` since it can be used for unstructured content such as free-form text files. If this template is not set, a default `ReplaceWithInfoTypeConfig` will be used to de-identify unstructured content."
        },
        "imageRedactTemplate": {
          "type": "string",
          "description": "Image redact template. If this template is specified, it will serve as the de-identify template for images. If this template is not set, all findings in the image will be redacted with a black box."
        },
        "structuredDeidentifyTemplate": {
          "type": "string",
          "description": "Structured de-identify template. If this template is specified, it will serve as the de-identify template for structured content such as delimited files and tables. If this template is not set but the `deidentify_template` is set, then `deidentify_template` will also apply to the structured content. If neither template is set, a default `ReplaceWithInfoTypeConfig` will be used to de-identify structured content."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TransformationConfigResponse": {
      "description": "User specified templates and configs for how to deidentify structured, unstructures, and image files. User must provide either a unstructured deidentify template or at least one redact image config.",
      "properties": {
        "deidentifyTemplate": {
          "type": "string",
          "description": "De-identify template. If this template is specified, it will serve as the default de-identify template. This template cannot contain `record_transformations` since it can be used for unstructured content such as free-form text files. If this template is not set, a default `ReplaceWithInfoTypeConfig` will be used to de-identify unstructured content."
        },
        "imageRedactTemplate": {
          "type": "string",
          "description": "Image redact template. If this template is specified, it will serve as the de-identify template for images. If this template is not set, all findings in the image will be redacted with a black box."
        },
        "structuredDeidentifyTemplate": {
          "type": "string",
          "description": "Structured de-identify template. If this template is specified, it will serve as the de-identify template for structured content such as delimited files and tables. If this template is not set but the `deidentify_template` is set, then `deidentify_template` will also apply to the structured content. If neither template is set, a default `ReplaceWithInfoTypeConfig` will be used to de-identify structured content."
        }
      },
      "type": "object",
      "required": [
        "deidentifyTemplate",
        "imageRedactTemplate",
        "structuredDeidentifyTemplate"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TransformationDetailsStorageConfig": {
      "description": "Config for storing transformation details.",
      "properties": {
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTable",
          "description": "The BigQuery table in which to store the output. This may be an existing table or in a new table in an existing dataset. If table_id is not set a new one will be generated for you with the following format: dlp_googleapis_transformation_details_yyyy_mm_dd_[dlp_job_id]. Pacific time zone will be used for generating the date details."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TransformationDetailsStorageConfigResponse": {
      "description": "Config for storing transformation details.",
      "properties": {
        "table": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2BigQueryTableResponse",
          "description": "The BigQuery table in which to store the output. This may be an existing table or in a new table in an existing dataset. If table_id is not set a new one will be generated for you with the following format: dlp_googleapis_transformation_details_yyyy_mm_dd_[dlp_job_id]. Pacific time zone will be used for generating the date details."
        }
      },
      "type": "object",
      "required": [
        "table"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TransformationErrorHandling": {
      "description": "How to handle transformation errors during de-identification. A transformation error occurs when the requested transformation is incompatible with the data. For example, trying to de-identify an IP address using a `DateShift` transformation would result in a transformation error, since date info cannot be extracted from an IP address. Information about any incompatible transformations, and how they were handled, is returned in the response as part of the `TransformationOverviews`.",
      "properties": {
        "leaveUntransformed": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LeaveUntransformed",
          "description": "Ignore errors"
        },
        "throwError": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ThrowError",
          "description": "Throw an error"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TransformationErrorHandlingResponse": {
      "description": "How to handle transformation errors during de-identification. A transformation error occurs when the requested transformation is incompatible with the data. For example, trying to de-identify an IP address using a `DateShift` transformation would result in a transformation error, since date info cannot be extracted from an IP address. Information about any incompatible transformations, and how they were handled, is returned in the response as part of the `TransformationOverviews`.",
      "properties": {
        "leaveUntransformed": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2LeaveUntransformedResponse",
          "description": "Ignore errors"
        },
        "throwError": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ThrowErrorResponse",
          "description": "Throw an error"
        }
      },
      "type": "object",
      "required": [
        "leaveUntransformed",
        "throwError"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TransientCryptoKey": {
      "description": "Use this to have a random data crypto key generated. It will be discarded after the request finishes.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated)."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TransientCryptoKeyResponse": {
      "description": "Use this to have a random data crypto key generated. It will be discarded after the request finishes.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated)."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Trigger": {
      "description": "What event needs to occur for a new job to be started.",
      "properties": {
        "manual": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Manual",
          "description": "For use with hybrid jobs. Jobs must be manually created and finished."
        },
        "schedule": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Schedule",
          "description": "Create a job on a repeating basis based on the elapse of time."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2TriggerResponse": {
      "description": "What event needs to occur for a new job to be started.",
      "properties": {
        "manual": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ManualResponse",
          "description": "For use with hybrid jobs. Jobs must be manually created and finished."
        },
        "schedule": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ScheduleResponse",
          "description": "Create a job on a repeating basis based on the elapse of time."
        }
      },
      "type": "object",
      "required": [
        "manual",
        "schedule"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2UnwrappedCryptoKey": {
      "description": "Using raw keys is prone to security risks due to accidentally leaking the key. Choose another type of key if possible.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A 128/192/256 bit key."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2UnwrappedCryptoKeyResponse": {
      "description": "Using raw keys is prone to security risks due to accidentally leaking the key. Choose another type of key if possible.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A 128/192/256 bit key."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2Value": {
      "description": "Set of primitive values supported by the system. Note that for the purposes of inspection or transformation, the number of bytes considered to comprise a 'Value' is based on its representation as a UTF-8 encoded string. For example, if 'integer_value' is set to 123456789, the number of bytes would be counted as 9, even though an int64 only holds up to 8 bytes of data.",
      "properties": {
        "booleanValue": {
          "type": "boolean",
          "description": "boolean"
        },
        "dateValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleTypeDate",
          "description": "date"
        },
        "dayOfWeekValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueDayOfWeekValue",
          "description": "day of week"
        },
        "floatValue": {
          "type": "number",
          "description": "float"
        },
        "integerValue": {
          "type": "string",
          "description": "integer"
        },
        "stringValue": {
          "type": "string",
          "description": "string"
        },
        "timeValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleTypeTimeOfDay",
          "description": "time of day"
        },
        "timestampValue": {
          "type": "string",
          "description": "timestamp"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ValueDayOfWeekValue": {
      "description": "day of week",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ValueFrequencyResponse": {
      "description": "A value of a field, including its frequency.",
      "properties": {
        "count": {
          "type": "string",
          "description": "How many times the value is contained in the field."
        },
        "value": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ValueResponse",
          "description": "A value contained in the field in question."
        }
      },
      "type": "object",
      "required": [
        "count",
        "value"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2ValueResponse": {
      "description": "Set of primitive values supported by the system. Note that for the purposes of inspection or transformation, the number of bytes considered to comprise a 'Value' is based on its representation as a UTF-8 encoded string. For example, if 'integer_value' is set to 123456789, the number of bytes would be counted as 9, even though an int64 only holds up to 8 bytes of data.",
      "properties": {
        "booleanValue": {
          "type": "boolean",
          "description": "boolean"
        },
        "dateValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleTypeDateResponse",
          "description": "date"
        },
        "dayOfWeekValue": {
          "type": "string",
          "description": "day of week"
        },
        "floatValue": {
          "type": "number",
          "description": "float"
        },
        "integerValue": {
          "type": "string",
          "description": "integer"
        },
        "stringValue": {
          "type": "string",
          "description": "string"
        },
        "timeValue": {
          "$ref": "#/types/google-native:dlp%2Fv2:GoogleTypeTimeOfDayResponse",
          "description": "time of day"
        },
        "timestampValue": {
          "type": "string",
          "description": "timestamp"
        }
      },
      "type": "object",
      "required": [
        "booleanValue",
        "dateValue",
        "dayOfWeekValue",
        "floatValue",
        "integerValue",
        "stringValue",
        "timeValue",
        "timestampValue"
      ]
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2WordList": {
      "description": "Message defining a list of words or phrases to search for in the data.",
      "properties": {
        "words": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]"
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GooglePrivacyDlpV2WordListResponse": {
      "description": "Message defining a list of words or phrases to search for in the data.",
      "properties": {
        "words": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]"
        }
      },
      "type": "object",
      "required": [
        "words"
      ]
    },
    "google-native:dlp/v2:GoogleProtobufEmpty": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object"
    },
    "google-native:dlp/v2:GoogleProtobufEmptyResponse": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object"
    },
    "google-native:dlp/v2:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:dlp/v2:GoogleTypeDate": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:dlp/v2:GoogleTypeTimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:dlp/v2:GoogleTypeTimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:dlp/v2:JobTriggerStatus": {
      "description": "Required. A status for this trigger.",
      "type": "string",
      "enum": [
        {
          "name": "StatusUnspecified",
          "description": "Unused.",
          "value": "STATUS_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "Trigger is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "Paused",
          "description": "Trigger is temporarily paused.",
          "value": "PAUSED"
        },
        {
          "name": "Cancelled",
          "description": "Trigger is cancelled and can not be resumed.",
          "value": "CANCELLED"
        }
      ]
    },
    "google-native:dlp/v2:OrganizationDiscoveryConfigStatus": {
      "description": "Required. A status for this configuration.",
      "type": "string",
      "enum": [
        {
          "name": "StatusUnspecified",
          "description": "Unused",
          "value": "STATUS_UNSPECIFIED"
        },
        {
          "name": "Running",
          "description": "The discovery config is currently active.",
          "value": "RUNNING"
        },
        {
          "name": "Paused",
          "description": "The discovery config is paused temporarily.",
          "value": "PAUSED"
        }
      ]
    },
    "google-native:dlp/v2:OrganizationJobTriggerStatus": {
      "description": "Required. A status for this trigger.",
      "type": "string",
      "enum": [
        {
          "name": "StatusUnspecified",
          "description": "Unused.",
          "value": "STATUS_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "Trigger is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "Paused",
          "description": "Trigger is temporarily paused.",
          "value": "PAUSED"
        },
        {
          "name": "Cancelled",
          "description": "Trigger is cancelled and can not be resumed.",
          "value": "CANCELLED"
        }
      ]
    },
    "google-native:dns/v1:DnsKeySpec": {
      "description": "Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:dns%2Fv1:DnsKeySpecAlgorithm",
          "description": "String mnemonic specifying the DNSSEC algorithm of this key."
        },
        "keyLength": {
          "type": "integer",
          "description": "Length of the keys in bits."
        },
        "keyType": {
          "$ref": "#/types/google-native:dns%2Fv1:DnsKeySpecKeyType",
          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, are only used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and are used to sign all other types of resource record sets."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:DnsKeySpecAlgorithm": {
      "description": "String mnemonic specifying the DNSSEC algorithm of this key.",
      "type": "string",
      "enum": [
        {
          "name": "Rsasha1",
          "value": "rsasha1"
        },
        {
          "name": "Rsasha256",
          "value": "rsasha256"
        },
        {
          "name": "Rsasha512",
          "value": "rsasha512"
        },
        {
          "name": "Ecdsap256sha256",
          "value": "ecdsap256sha256"
        },
        {
          "name": "Ecdsap384sha384",
          "value": "ecdsap384sha384"
        }
      ]
    },
    "google-native:dns/v1:DnsKeySpecKeyType": {
      "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, are only used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and are used to sign all other types of resource record sets.",
      "type": "string",
      "enum": [
        {
          "name": "KeySigning",
          "value": "keySigning"
        },
        {
          "name": "ZoneSigning",
          "value": "zoneSigning"
        }
      ]
    },
    "google-native:dns/v1:DnsKeySpecResponse": {
      "description": "Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "String mnemonic specifying the DNSSEC algorithm of this key."
        },
        "keyLength": {
          "type": "integer",
          "description": "Length of the keys in bits."
        },
        "keyType": {
          "type": "string",
          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, are only used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and are used to sign all other types of resource record sets."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "keyLength",
        "keyType",
        "kind"
      ]
    },
    "google-native:dns/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:dns/v1:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:dns/v1:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:dns/v1:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:dns/v1:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dns%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dns%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:dns/v1:ManagedZoneCloudLoggingConfig": {
      "description": "Cloud Logging configurations for publicly visible zones.",
      "properties": {
        "enableLogging": {
          "type": "boolean",
          "description": "If set, enable query logging for this ManagedZone. False by default, making logging opt-in."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZoneCloudLoggingConfigResponse": {
      "description": "Cloud Logging configurations for publicly visible zones.",
      "properties": {
        "enableLogging": {
          "type": "boolean",
          "description": "If set, enable query logging for this ManagedZone. False by default, making logging opt-in."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "enableLogging",
        "kind"
      ]
    },
    "google-native:dns/v1:ManagedZoneDnsSecConfig": {
      "properties": {
        "defaultKeySpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:DnsKeySpec"
          },
          "description": "Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF."
        },
        "kind": {
          "type": "string"
        },
        "nonExistence": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneDnsSecConfigNonExistence",
          "description": "Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF."
        },
        "state": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneDnsSecConfigState",
          "description": "Specifies whether DNSSEC is enabled, and what mode it is in."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZoneDnsSecConfigNonExistence": {
      "description": "Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF.",
      "type": "string",
      "enum": [
        {
          "name": "Nsec",
          "value": "nsec"
        },
        {
          "name": "Nsec3",
          "value": "nsec3"
        }
      ]
    },
    "google-native:dns/v1:ManagedZoneDnsSecConfigResponse": {
      "properties": {
        "defaultKeySpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:DnsKeySpecResponse"
          },
          "description": "Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF."
        },
        "kind": {
          "type": "string"
        },
        "nonExistence": {
          "type": "string",
          "description": "Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF."
        },
        "state": {
          "type": "string",
          "description": "Specifies whether DNSSEC is enabled, and what mode it is in."
        }
      },
      "type": "object",
      "required": [
        "defaultKeySpecs",
        "kind",
        "nonExistence",
        "state"
      ]
    },
    "google-native:dns/v1:ManagedZoneDnsSecConfigState": {
      "description": "Specifies whether DNSSEC is enabled, and what mode it is in.",
      "type": "string",
      "enum": [
        {
          "name": "Off",
          "description": "DNSSEC is disabled; the zone is not signed.",
          "value": "off"
        },
        {
          "name": "On",
          "description": "DNSSEC is enabled; the zone is signed and fully managed.",
          "value": "on"
        },
        {
          "name": "Transfer",
          "description": "DNSSEC is enabled, but in a \"transfer\" mode.",
          "value": "transfer"
        }
      ]
    },
    "google-native:dns/v1:ManagedZoneForwardingConfig": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNameServers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneForwardingConfigNameServerTarget"
          },
          "description": "List of target name servers to forward to. Cloud DNS selects the best available name server if more than one target is given."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZoneForwardingConfigNameServerTarget": {
      "properties": {
        "forwardingPath": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneForwardingConfigNameServerTargetForwardingPath",
          "description": "Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on IP address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target."
        },
        "ipv4Address": {
          "type": "string",
          "description": "IPv4 address of a target name server."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address of a target name server. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZoneForwardingConfigNameServerTargetForwardingPath": {
      "description": "Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on IP address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses forward to the target through the VPC and non-RFC1918 addresses forward to the target through the internet",
          "value": "default"
        },
        {
          "name": "Private",
          "description": "Cloud DNS always forwards to this target through the VPC.",
          "value": "private"
        }
      ]
    },
    "google-native:dns/v1:ManagedZoneForwardingConfigNameServerTargetResponse": {
      "properties": {
        "forwardingPath": {
          "type": "string",
          "description": "Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on IP address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target."
        },
        "ipv4Address": {
          "type": "string",
          "description": "IPv4 address of a target name server."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address of a target name server. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "forwardingPath",
        "ipv4Address",
        "ipv6Address",
        "kind"
      ]
    },
    "google-native:dns/v1:ManagedZoneForwardingConfigResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNameServers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneForwardingConfigNameServerTargetResponse"
          },
          "description": "List of target name servers to forward to. Cloud DNS selects the best available name server if more than one target is given."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "targetNameServers"
      ]
    },
    "google-native:dns/v1:ManagedZonePeeringConfig": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNetwork": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePeeringConfigTargetNetwork",
          "description": "The network with which to peer."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZonePeeringConfigResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNetwork": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePeeringConfigTargetNetworkResponse",
          "description": "The network with which to peer."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "targetNetwork"
      ]
    },
    "google-native:dns/v1:ManagedZonePeeringConfigTargetNetwork": {
      "properties": {
        "deactivateTime": {
          "type": "string",
          "description": "The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only."
        },
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZonePeeringConfigTargetNetworkResponse": {
      "properties": {
        "deactivateTime": {
          "type": "string",
          "description": "The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only."
        },
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "deactivateTime",
        "kind",
        "networkUrl"
      ]
    },
    "google-native:dns/v1:ManagedZonePrivateVisibilityConfig": {
      "properties": {
        "gkeClusters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePrivateVisibilityConfigGKECluster"
          },
          "description": "The list of Google Kubernetes Engine clusters that can see this zone."
        },
        "kind": {
          "type": "string"
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePrivateVisibilityConfigNetwork"
          },
          "description": "The list of VPC networks that can see this zone."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZonePrivateVisibilityConfigGKECluster": {
      "properties": {
        "gkeClusterName": {
          "type": "string",
          "description": "The resource name of the cluster to bind this ManagedZone to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZonePrivateVisibilityConfigGKEClusterResponse": {
      "properties": {
        "gkeClusterName": {
          "type": "string",
          "description": "The resource name of the cluster to bind this ManagedZone to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "gkeClusterName",
        "kind"
      ]
    },
    "google-native:dns/v1:ManagedZonePrivateVisibilityConfigNetwork": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. Format this URL like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZonePrivateVisibilityConfigNetworkResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. Format this URL like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "networkUrl"
      ]
    },
    "google-native:dns/v1:ManagedZonePrivateVisibilityConfigResponse": {
      "properties": {
        "gkeClusters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePrivateVisibilityConfigGKEClusterResponse"
          },
          "description": "The list of Google Kubernetes Engine clusters that can see this zone."
        },
        "kind": {
          "type": "string"
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePrivateVisibilityConfigNetworkResponse"
          },
          "description": "The list of VPC networks that can see this zone."
        }
      },
      "type": "object",
      "required": [
        "gkeClusters",
        "kind",
        "networks"
      ]
    },
    "google-native:dns/v1:ManagedZoneReverseLookupConfig": {
      "properties": {
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZoneReverseLookupConfigResponse": {
      "properties": {
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "kind"
      ]
    },
    "google-native:dns/v1:ManagedZoneServiceDirectoryConfig": {
      "description": "Contains information about Service Directory-backed zones.",
      "properties": {
        "kind": {
          "type": "string"
        },
        "namespace": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneServiceDirectoryConfigNamespace",
          "description": "Contains information about the namespace associated with the zone."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZoneServiceDirectoryConfigNamespace": {
      "properties": {
        "deletionTime": {
          "type": "string",
          "description": "The time that the namespace backing this zone was deleted; an empty string if it still exists. This is in RFC3339 text format. Output only."
        },
        "kind": {
          "type": "string"
        },
        "namespaceUrl": {
          "type": "string",
          "description": "The fully qualified URL of the namespace associated with the zone. Format must be https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ManagedZoneServiceDirectoryConfigNamespaceResponse": {
      "properties": {
        "deletionTime": {
          "type": "string",
          "description": "The time that the namespace backing this zone was deleted; an empty string if it still exists. This is in RFC3339 text format. Output only."
        },
        "kind": {
          "type": "string"
        },
        "namespaceUrl": {
          "type": "string",
          "description": "The fully qualified URL of the namespace associated with the zone. Format must be https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}"
        }
      },
      "type": "object",
      "required": [
        "deletionTime",
        "kind",
        "namespaceUrl"
      ]
    },
    "google-native:dns/v1:ManagedZoneServiceDirectoryConfigResponse": {
      "description": "Contains information about Service Directory-backed zones.",
      "properties": {
        "kind": {
          "type": "string"
        },
        "namespace": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneServiceDirectoryConfigNamespaceResponse",
          "description": "Contains information about the namespace associated with the zone."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "namespace"
      ]
    },
    "google-native:dns/v1:ManagedZoneVisibility": {
      "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.",
      "type": "string",
      "enum": [
        {
          "name": "Public",
          "value": "public"
        },
        {
          "name": "Private",
          "value": "private"
        }
      ]
    },
    "google-native:dns/v1:PolicyAlternativeNameServerConfig": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNameServers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:PolicyAlternativeNameServerConfigTargetNameServer"
          },
          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:PolicyAlternativeNameServerConfigResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNameServers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:PolicyAlternativeNameServerConfigTargetNameServerResponse"
          },
          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "targetNameServers"
      ]
    },
    "google-native:dns/v1:PolicyAlternativeNameServerConfigTargetNameServer": {
      "properties": {
        "forwardingPath": {
          "$ref": "#/types/google-native:dns%2Fv1:PolicyAlternativeNameServerConfigTargetNameServerForwardingPath",
          "description": "Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target."
        },
        "ipv4Address": {
          "type": "string",
          "description": "IPv4 address to forward queries to."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address to forward to. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:PolicyAlternativeNameServerConfigTargetNameServerForwardingPath": {
      "description": "Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "Cloud DNS makes forwarding decision based on IP address ranges; that is, RFC1918 addresses forward to the target through the VPC and non-RFC1918 addresses forward to the target through the internet",
          "value": "default"
        },
        {
          "name": "Private",
          "description": "Cloud DNS always forwards to this target through the VPC.",
          "value": "private"
        }
      ]
    },
    "google-native:dns/v1:PolicyAlternativeNameServerConfigTargetNameServerResponse": {
      "properties": {
        "forwardingPath": {
          "type": "string",
          "description": "Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target."
        },
        "ipv4Address": {
          "type": "string",
          "description": "IPv4 address to forward queries to."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address to forward to. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "forwardingPath",
        "ipv4Address",
        "ipv6Address",
        "kind"
      ]
    },
    "google-native:dns/v1:PolicyNetwork": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:PolicyNetworkResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "networkUrl"
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicy": {
      "description": "A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection.",
      "properties": {
        "geo": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyGeoPolicy"
        },
        "kind": {
          "type": "string"
        },
        "primaryBackup": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyPrimaryBackupPolicy"
        },
        "wrr": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyWrrPolicy"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:RRSetRoutingPolicyGeoPolicy": {
      "description": "Configures a RRSetRoutingPolicy that routes based on the geo location of the querying user.",
      "properties": {
        "enableFencing": {
          "type": "boolean",
          "description": "Without fencing, if health check fails for all configured items in the current geo bucket, we failover to the next nearest geo bucket. With fencing, if health checking is enabled, as long as some targets in the current geo bucket are healthy, we return only the healthy targets. However, if all targets are unhealthy, we don't failover to the next nearest bucket; instead, we return all the items in the current bucket even when all targets are unhealthy."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyGeoPolicyGeoPolicyItem"
          },
          "description": "The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:RRSetRoutingPolicyGeoPolicyGeoPolicyItem": {
      "description": "ResourceRecordSet data for one geo location.",
      "properties": {
        "healthCheckedTargets": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyHealthCheckTargets",
          "description": "For A and AAAA types only. Endpoints to return in the query result only if they are healthy. These can be specified along with rrdata within this item."
        },
        "kind": {
          "type": "string"
        },
        "location": {
          "type": "string",
          "description": "The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. \"us-east1\", \"southamerica-east1\", \"asia-east1\", etc."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNSSEC generated signatures for all the rrdata within this item. If health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:RRSetRoutingPolicyGeoPolicyGeoPolicyItemResponse": {
      "description": "ResourceRecordSet data for one geo location.",
      "properties": {
        "healthCheckedTargets": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyHealthCheckTargetsResponse",
          "description": "For A and AAAA types only. Endpoints to return in the query result only if they are healthy. These can be specified along with rrdata within this item."
        },
        "kind": {
          "type": "string"
        },
        "location": {
          "type": "string",
          "description": "The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. \"us-east1\", \"southamerica-east1\", \"asia-east1\", etc."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNSSEC generated signatures for all the rrdata within this item. If health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item."
        }
      },
      "type": "object",
      "required": [
        "healthCheckedTargets",
        "kind",
        "location",
        "rrdatas",
        "signatureRrdatas"
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyGeoPolicyResponse": {
      "description": "Configures a RRSetRoutingPolicy that routes based on the geo location of the querying user.",
      "properties": {
        "enableFencing": {
          "type": "boolean",
          "description": "Without fencing, if health check fails for all configured items in the current geo bucket, we failover to the next nearest geo bucket. With fencing, if health checking is enabled, as long as some targets in the current geo bucket are healthy, we return only the healthy targets. However, if all targets are unhealthy, we don't failover to the next nearest bucket; instead, we return all the items in the current bucket even when all targets are unhealthy."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyGeoPolicyGeoPolicyItemResponse"
          },
          "description": "The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "enableFencing",
        "items",
        "kind"
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyHealthCheckTargets": {
      "description": "HealthCheckTargets describes endpoints to health-check when responding to Routing Policy queries. Only the healthy endpoints will be included in the response.",
      "properties": {
        "internalLoadBalancers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyLoadBalancerTarget"
          }
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:RRSetRoutingPolicyHealthCheckTargetsResponse": {
      "description": "HealthCheckTargets describes endpoints to health-check when responding to Routing Policy queries. Only the healthy endpoints will be included in the response.",
      "properties": {
        "internalLoadBalancers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyLoadBalancerTargetResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "internalLoadBalancers"
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyLoadBalancerTarget": {
      "description": "The configuration for an individual load balancer to health check.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The frontend IP address of the load balancer to health check."
        },
        "ipProtocol": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyLoadBalancerTargetIpProtocol",
          "description": "The protocol of the load balancer to health check."
        },
        "kind": {
          "type": "string"
        },
        "loadBalancerType": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyLoadBalancerTargetLoadBalancerType",
          "description": "The type of load balancer specified by this target. This value must match the configuration of the load balancer located at the LoadBalancerTarget's IP address, port, and region. Use the following: - *regionalL4ilb*: for a regional internal passthrough Network Load Balancer. - *regionalL7ilb*: for a regional internal Application Load Balancer. - *globalL7ilb*: for a global internal Application Load Balancer. "
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the network that the load balancer is attached to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} ."
        },
        "port": {
          "type": "string",
          "description": "The configured port of the load balancer."
        },
        "project": {
          "type": "string",
          "description": "The project ID in which the load balancer is located."
        },
        "region": {
          "type": "string",
          "description": "The region in which the load balancer is located."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:RRSetRoutingPolicyLoadBalancerTargetIpProtocol": {
      "description": "The protocol of the load balancer to health check.",
      "type": "string",
      "enum": [
        {
          "name": "Undefined",
          "value": "undefined"
        },
        {
          "name": "Tcp",
          "value": "tcp"
        },
        {
          "name": "Udp",
          "value": "udp"
        }
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyLoadBalancerTargetLoadBalancerType": {
      "description": "The type of load balancer specified by this target. This value must match the configuration of the load balancer located at the LoadBalancerTarget's IP address, port, and region. Use the following: - *regionalL4ilb*: for a regional internal passthrough Network Load Balancer. - *regionalL7ilb*: for a regional internal Application Load Balancer. - *globalL7ilb*: for a global internal Application Load Balancer. ",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "none"
        },
        {
          "name": "GlobalL7ilb",
          "value": "globalL7ilb"
        },
        {
          "name": "RegionalL4ilb",
          "value": "regionalL4ilb"
        },
        {
          "name": "RegionalL7ilb",
          "value": "regionalL7ilb"
        }
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyLoadBalancerTargetResponse": {
      "description": "The configuration for an individual load balancer to health check.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The frontend IP address of the load balancer to health check."
        },
        "ipProtocol": {
          "type": "string",
          "description": "The protocol of the load balancer to health check."
        },
        "kind": {
          "type": "string"
        },
        "loadBalancerType": {
          "type": "string",
          "description": "The type of load balancer specified by this target. This value must match the configuration of the load balancer located at the LoadBalancerTarget's IP address, port, and region. Use the following: - *regionalL4ilb*: for a regional internal passthrough Network Load Balancer. - *regionalL7ilb*: for a regional internal Application Load Balancer. - *globalL7ilb*: for a global internal Application Load Balancer. "
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the network that the load balancer is attached to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} ."
        },
        "port": {
          "type": "string",
          "description": "The configured port of the load balancer."
        },
        "project": {
          "type": "string",
          "description": "The project ID in which the load balancer is located."
        },
        "region": {
          "type": "string",
          "description": "The region in which the load balancer is located."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ipProtocol",
        "kind",
        "loadBalancerType",
        "networkUrl",
        "port",
        "project",
        "region"
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyPrimaryBackupPolicy": {
      "description": "Configures a RRSetRoutingPolicy such that all queries are responded with the primary_targets if they are healthy. And if all of them are unhealthy, then we fallback to a geo localized policy.",
      "properties": {
        "backupGeoTargets": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyGeoPolicy",
          "description": "Backup targets provide a regional failover policy for the otherwise global primary targets. If serving state is set to BACKUP, this policy essentially becomes a geo routing policy."
        },
        "kind": {
          "type": "string"
        },
        "primaryTargets": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyHealthCheckTargets",
          "description": "Endpoints that are health checked before making the routing decision. Unhealthy endpoints are omitted from the results. If all endpoints are unhealthy, we serve a response based on the backup_geo_targets."
        },
        "trickleTraffic": {
          "type": "number",
          "description": "When serving state is PRIMARY, this field provides the option of sending a small percentage of the traffic to the backup targets."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:RRSetRoutingPolicyPrimaryBackupPolicyResponse": {
      "description": "Configures a RRSetRoutingPolicy such that all queries are responded with the primary_targets if they are healthy. And if all of them are unhealthy, then we fallback to a geo localized policy.",
      "properties": {
        "backupGeoTargets": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyGeoPolicyResponse",
          "description": "Backup targets provide a regional failover policy for the otherwise global primary targets. If serving state is set to BACKUP, this policy essentially becomes a geo routing policy."
        },
        "kind": {
          "type": "string"
        },
        "primaryTargets": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyHealthCheckTargetsResponse",
          "description": "Endpoints that are health checked before making the routing decision. Unhealthy endpoints are omitted from the results. If all endpoints are unhealthy, we serve a response based on the backup_geo_targets."
        },
        "trickleTraffic": {
          "type": "number",
          "description": "When serving state is PRIMARY, this field provides the option of sending a small percentage of the traffic to the backup targets."
        }
      },
      "type": "object",
      "required": [
        "backupGeoTargets",
        "kind",
        "primaryTargets",
        "trickleTraffic"
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyResponse": {
      "description": "A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection.",
      "properties": {
        "geo": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyGeoPolicyResponse"
        },
        "kind": {
          "type": "string"
        },
        "primaryBackup": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyPrimaryBackupPolicyResponse"
        },
        "wrr": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyWrrPolicyResponse"
        }
      },
      "type": "object",
      "required": [
        "geo",
        "kind",
        "primaryBackup",
        "wrr"
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyWrrPolicy": {
      "description": "Configures a RRSetRoutingPolicy that routes in a weighted round robin fashion.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyWrrPolicyWrrPolicyItem"
          }
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:RRSetRoutingPolicyWrrPolicyResponse": {
      "description": "Configures a RRSetRoutingPolicy that routes in a weighted round robin fashion.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyWrrPolicyWrrPolicyItemResponse"
          }
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "items",
        "kind"
      ]
    },
    "google-native:dns/v1:RRSetRoutingPolicyWrrPolicyWrrPolicyItem": {
      "description": "A routing block which contains the routing information for one WRR item.",
      "properties": {
        "healthCheckedTargets": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyHealthCheckTargets",
          "description": "Endpoints that are health checked before making the routing decision. The unhealthy endpoints are omitted from the result. If all endpoints within a bucket are unhealthy, we choose a different bucket (sampled with respect to its weight) for responding. If DNSSEC is enabled for this zone, only one of rrdata or health_checked_targets can be set."
        },
        "kind": {
          "type": "string"
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNSSEC generated signatures for all the rrdata within this item. Note that if health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item."
        },
        "weight": {
          "type": "number",
          "description": "The weight corresponding to this WrrPolicyItem object. When multiple WrrPolicyItem objects are configured, the probability of returning an WrrPolicyItem object's data is proportional to its weight relative to the sum of weights configured for all items. This weight must be non-negative."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:RRSetRoutingPolicyWrrPolicyWrrPolicyItemResponse": {
      "description": "A routing block which contains the routing information for one WRR item.",
      "properties": {
        "healthCheckedTargets": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyHealthCheckTargetsResponse",
          "description": "Endpoints that are health checked before making the routing decision. The unhealthy endpoints are omitted from the result. If all endpoints within a bucket are unhealthy, we choose a different bucket (sampled with respect to its weight) for responding. If DNSSEC is enabled for this zone, only one of rrdata or health_checked_targets can be set."
        },
        "kind": {
          "type": "string"
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNSSEC generated signatures for all the rrdata within this item. Note that if health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item."
        },
        "weight": {
          "type": "number",
          "description": "The weight corresponding to this WrrPolicyItem object. When multiple WrrPolicyItem objects are configured, the probability of returning an WrrPolicyItem object's data is proportional to its weight relative to the sum of weights configured for all items. This weight must be non-negative."
        }
      },
      "type": "object",
      "required": [
        "healthCheckedTargets",
        "kind",
        "rrdatas",
        "signatureRrdatas",
        "weight"
      ]
    },
    "google-native:dns/v1:ResourceRecordSet": {
      "description": "A unit of data that is returned by the DNS servers.",
      "properties": {
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "For example, www.example.com."
        },
        "routingPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicy",
          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples."
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 4034 (section 3.2)."
        },
        "ttl": {
          "type": "integer",
          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers."
        },
        "type": {
          "type": "string",
          "description": "The identifier of a supported record type. See the list of Supported DNS record types."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ResourceRecordSetResponse": {
      "description": "A unit of data that is returned by the DNS servers.",
      "properties": {
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "For example, www.example.com."
        },
        "routingPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyResponse",
          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples."
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 4034 (section 3.2)."
        },
        "ttl": {
          "type": "integer",
          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers."
        },
        "type": {
          "type": "string",
          "description": "The identifier of a supported record type. See the list of Supported DNS record types."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "name",
        "routingPolicy",
        "rrdatas",
        "signatureRrdatas",
        "ttl",
        "type"
      ]
    },
    "google-native:dns/v1:ResponsePolicyGKECluster": {
      "properties": {
        "gkeClusterName": {
          "type": "string",
          "description": "The resource name of the cluster to bind this response policy to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ResponsePolicyGKEClusterResponse": {
      "properties": {
        "gkeClusterName": {
          "type": "string",
          "description": "The resource name of the cluster to bind this response policy to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "gkeClusterName",
        "kind"
      ]
    },
    "google-native:dns/v1:ResponsePolicyNetwork": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ResponsePolicyNetworkResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "networkUrl"
      ]
    },
    "google-native:dns/v1:ResponsePolicyRuleBehavior": {
      "description": "Answer this query with a behavior rather than DNS data.",
      "type": "string",
      "enum": [
        {
          "name": "BehaviorUnspecified",
          "value": "behaviorUnspecified"
        },
        {
          "name": "BypassResponsePolicy",
          "description": "Skip a less-specific ResponsePolicyRule and continue normal query logic. This can be used with a less-specific wildcard selector to exempt a subset of the wildcard ResponsePolicyRule from the ResponsePolicy behavior and query the public Internet instead. For instance, if these rules exist: *.example.com -> LocalData 1.2.3.4 foo.example.com -> Behavior 'bypassResponsePolicy' Then a query for 'foo.example.com' skips the wildcard. This additionally functions to facilitate the allowlist feature. RPZs can be applied to multiple levels in the (eventually org, folder, project, network) hierarchy. If a rule is applied at a higher level of the hierarchy, adding a passthru rule at a lower level will supersede that, and a query from an affected vm to that domain will be exempt from the RPZ and proceed to normal resolution behavior.",
          "value": "bypassResponsePolicy"
        }
      ]
    },
    "google-native:dns/v1:ResponsePolicyRuleLocalData": {
      "properties": {
        "localDatas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ResourceRecordSet"
          },
          "description": "All resource record sets for this selector, one per resource record type. The name must match the dns_name."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1:ResponsePolicyRuleLocalDataResponse": {
      "properties": {
        "localDatas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ResourceRecordSetResponse"
          },
          "description": "All resource record sets for this selector, one per resource record type. The name must match the dns_name."
        }
      },
      "type": "object",
      "required": [
        "localDatas"
      ]
    },
    "google-native:dns/v1beta2:DnsKeySpec": {
      "description": "Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:DnsKeySpecAlgorithm",
          "description": "String mnemonic specifying the DNSSEC algorithm of this key."
        },
        "keyLength": {
          "type": "integer",
          "description": "Length of the keys in bits."
        },
        "keyType": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:DnsKeySpecKeyType",
          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, are only used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and are used to sign all other types of resource record sets."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:DnsKeySpecAlgorithm": {
      "description": "String mnemonic specifying the DNSSEC algorithm of this key.",
      "type": "string",
      "enum": [
        {
          "name": "Rsasha1",
          "value": "rsasha1"
        },
        {
          "name": "Rsasha256",
          "value": "rsasha256"
        },
        {
          "name": "Rsasha512",
          "value": "rsasha512"
        },
        {
          "name": "Ecdsap256sha256",
          "value": "ecdsap256sha256"
        },
        {
          "name": "Ecdsap384sha384",
          "value": "ecdsap384sha384"
        }
      ]
    },
    "google-native:dns/v1beta2:DnsKeySpecKeyType": {
      "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, are only used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and are used to sign all other types of resource record sets.",
      "type": "string",
      "enum": [
        {
          "name": "KeySigning",
          "value": "keySigning"
        },
        {
          "name": "ZoneSigning",
          "value": "zoneSigning"
        }
      ]
    },
    "google-native:dns/v1beta2:DnsKeySpecResponse": {
      "description": "Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "String mnemonic specifying the DNSSEC algorithm of this key."
        },
        "keyLength": {
          "type": "integer",
          "description": "Length of the keys in bits."
        },
        "keyType": {
          "type": "string",
          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, are only used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and are used to sign all other types of resource record sets."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "keyLength",
        "keyType",
        "kind"
      ]
    },
    "google-native:dns/v1beta2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:dns/v1beta2:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:dns/v1beta2:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:dns/v1beta2:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:dns/v1beta2:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneCloudLoggingConfig": {
      "description": "Cloud Logging configurations for publicly visible zones.",
      "properties": {
        "enableLogging": {
          "type": "boolean",
          "description": "If set, enable query logging for this ManagedZone. False by default, making logging opt-in."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZoneCloudLoggingConfigResponse": {
      "description": "Cloud Logging configurations for publicly visible zones.",
      "properties": {
        "enableLogging": {
          "type": "boolean",
          "description": "If set, enable query logging for this ManagedZone. False by default, making logging opt-in."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "enableLogging",
        "kind"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneDnsSecConfig": {
      "properties": {
        "defaultKeySpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:DnsKeySpec"
          },
          "description": "Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF."
        },
        "kind": {
          "type": "string"
        },
        "nonExistence": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneDnsSecConfigNonExistence",
          "description": "Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF."
        },
        "state": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneDnsSecConfigState",
          "description": "Specifies whether DNSSEC is enabled, and what mode it is in."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZoneDnsSecConfigNonExistence": {
      "description": "Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF.",
      "type": "string",
      "enum": [
        {
          "name": "Nsec",
          "value": "nsec"
        },
        {
          "name": "Nsec3",
          "value": "nsec3"
        }
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneDnsSecConfigResponse": {
      "properties": {
        "defaultKeySpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:DnsKeySpecResponse"
          },
          "description": "Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF."
        },
        "kind": {
          "type": "string"
        },
        "nonExistence": {
          "type": "string",
          "description": "Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF."
        },
        "state": {
          "type": "string",
          "description": "Specifies whether DNSSEC is enabled, and what mode it is in."
        }
      },
      "type": "object",
      "required": [
        "defaultKeySpecs",
        "kind",
        "nonExistence",
        "state"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneDnsSecConfigState": {
      "description": "Specifies whether DNSSEC is enabled, and what mode it is in.",
      "type": "string",
      "enum": [
        {
          "name": "Off",
          "description": "DNSSEC is disabled; the zone is not signed.",
          "value": "off"
        },
        {
          "name": "On",
          "description": "DNSSEC is enabled; the zone is signed and fully managed.",
          "value": "on"
        },
        {
          "name": "Transfer",
          "description": "DNSSEC is enabled, but in a \"transfer\" mode.",
          "value": "transfer"
        }
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneForwardingConfig": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNameServers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneForwardingConfigNameServerTarget"
          },
          "description": "List of target name servers to forward to. Cloud DNS selects the best available name server if more than one target is given."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZoneForwardingConfigNameServerTarget": {
      "properties": {
        "forwardingPath": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneForwardingConfigNameServerTargetForwardingPath",
          "description": "Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on IP address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target."
        },
        "ipv4Address": {
          "type": "string",
          "description": "IPv4 address of a target name server."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address of a target name server. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZoneForwardingConfigNameServerTargetForwardingPath": {
      "description": "Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on IP address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses forward to the target through the VPC and non-RFC1918 addresses forward to the target through the internet",
          "value": "default"
        },
        {
          "name": "Private",
          "description": "Cloud DNS always forwards to this target through the VPC.",
          "value": "private"
        }
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneForwardingConfigNameServerTargetResponse": {
      "properties": {
        "forwardingPath": {
          "type": "string",
          "description": "Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on IP address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target."
        },
        "ipv4Address": {
          "type": "string",
          "description": "IPv4 address of a target name server."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address of a target name server. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "forwardingPath",
        "ipv4Address",
        "ipv6Address",
        "kind"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneForwardingConfigResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNameServers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneForwardingConfigNameServerTargetResponse"
          },
          "description": "List of target name servers to forward to. Cloud DNS selects the best available name server if more than one target is given."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "targetNameServers"
      ]
    },
    "google-native:dns/v1beta2:ManagedZonePeeringConfig": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNetwork": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePeeringConfigTargetNetwork",
          "description": "The network with which to peer."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZonePeeringConfigResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNetwork": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePeeringConfigTargetNetworkResponse",
          "description": "The network with which to peer."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "targetNetwork"
      ]
    },
    "google-native:dns/v1beta2:ManagedZonePeeringConfigTargetNetwork": {
      "properties": {
        "deactivateTime": {
          "type": "string",
          "description": "The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only."
        },
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZonePeeringConfigTargetNetworkResponse": {
      "properties": {
        "deactivateTime": {
          "type": "string",
          "description": "The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only."
        },
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "deactivateTime",
        "kind",
        "networkUrl"
      ]
    },
    "google-native:dns/v1beta2:ManagedZonePrivateVisibilityConfig": {
      "properties": {
        "gkeClusters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePrivateVisibilityConfigGKECluster"
          },
          "description": "The list of Google Kubernetes Engine clusters that can see this zone."
        },
        "kind": {
          "type": "string"
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePrivateVisibilityConfigNetwork"
          },
          "description": "The list of VPC networks that can see this zone."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZonePrivateVisibilityConfigGKECluster": {
      "properties": {
        "gkeClusterName": {
          "type": "string",
          "description": "The resource name of the cluster to bind this ManagedZone to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZonePrivateVisibilityConfigGKEClusterResponse": {
      "properties": {
        "gkeClusterName": {
          "type": "string",
          "description": "The resource name of the cluster to bind this ManagedZone to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "gkeClusterName",
        "kind"
      ]
    },
    "google-native:dns/v1beta2:ManagedZonePrivateVisibilityConfigNetwork": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. Format this URL like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZonePrivateVisibilityConfigNetworkResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. Format this URL like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "networkUrl"
      ]
    },
    "google-native:dns/v1beta2:ManagedZonePrivateVisibilityConfigResponse": {
      "properties": {
        "gkeClusters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePrivateVisibilityConfigGKEClusterResponse"
          },
          "description": "The list of Google Kubernetes Engine clusters that can see this zone."
        },
        "kind": {
          "type": "string"
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePrivateVisibilityConfigNetworkResponse"
          },
          "description": "The list of VPC networks that can see this zone."
        }
      },
      "type": "object",
      "required": [
        "gkeClusters",
        "kind",
        "networks"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneReverseLookupConfig": {
      "properties": {
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZoneReverseLookupConfigResponse": {
      "properties": {
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "kind"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneServiceDirectoryConfig": {
      "description": "Contains information about Service Directory-backed zones.",
      "properties": {
        "kind": {
          "type": "string"
        },
        "namespace": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneServiceDirectoryConfigNamespace",
          "description": "Contains information about the namespace associated with the zone."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZoneServiceDirectoryConfigNamespace": {
      "properties": {
        "deletionTime": {
          "type": "string",
          "description": "The time that the namespace backing this zone was deleted; an empty string if it still exists. This is in RFC3339 text format. Output only."
        },
        "kind": {
          "type": "string"
        },
        "namespaceUrl": {
          "type": "string",
          "description": "The fully qualified URL of the namespace associated with the zone. Format must be https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ManagedZoneServiceDirectoryConfigNamespaceResponse": {
      "properties": {
        "deletionTime": {
          "type": "string",
          "description": "The time that the namespace backing this zone was deleted; an empty string if it still exists. This is in RFC3339 text format. Output only."
        },
        "kind": {
          "type": "string"
        },
        "namespaceUrl": {
          "type": "string",
          "description": "The fully qualified URL of the namespace associated with the zone. Format must be https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}"
        }
      },
      "type": "object",
      "required": [
        "deletionTime",
        "kind",
        "namespaceUrl"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneServiceDirectoryConfigResponse": {
      "description": "Contains information about Service Directory-backed zones.",
      "properties": {
        "kind": {
          "type": "string"
        },
        "namespace": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneServiceDirectoryConfigNamespaceResponse",
          "description": "Contains information about the namespace associated with the zone."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "namespace"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneVisibility": {
      "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.",
      "type": "string",
      "enum": [
        {
          "name": "Public",
          "value": "public"
        },
        {
          "name": "Private",
          "value": "private"
        }
      ]
    },
    "google-native:dns/v1beta2:PolicyAlternativeNameServerConfig": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNameServers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyAlternativeNameServerConfigTargetNameServer"
          },
          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:PolicyAlternativeNameServerConfigResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "targetNameServers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyAlternativeNameServerConfigTargetNameServerResponse"
          },
          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "targetNameServers"
      ]
    },
    "google-native:dns/v1beta2:PolicyAlternativeNameServerConfigTargetNameServer": {
      "properties": {
        "forwardingPath": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyAlternativeNameServerConfigTargetNameServerForwardingPath",
          "description": "Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target."
        },
        "ipv4Address": {
          "type": "string",
          "description": "IPv4 address to forward queries to."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address to forward to. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:PolicyAlternativeNameServerConfigTargetNameServerForwardingPath": {
      "description": "Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "Cloud DNS makes forwarding decision based on IP address ranges; that is, RFC1918 addresses forward to the target through the VPC and non-RFC1918 addresses forward to the target through the internet",
          "value": "default"
        },
        {
          "name": "Private",
          "description": "Cloud DNS always forwards to this target through the VPC.",
          "value": "private"
        }
      ]
    },
    "google-native:dns/v1beta2:PolicyAlternativeNameServerConfigTargetNameServerResponse": {
      "properties": {
        "forwardingPath": {
          "type": "string",
          "description": "Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target."
        },
        "ipv4Address": {
          "type": "string",
          "description": "IPv4 address to forward queries to."
        },
        "ipv6Address": {
          "type": "string",
          "description": "IPv6 address to forward to. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "forwardingPath",
        "ipv4Address",
        "ipv6Address",
        "kind"
      ]
    },
    "google-native:dns/v1beta2:PolicyNetwork": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:PolicyNetworkResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "networkUrl"
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicy": {
      "description": "A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection.",
      "properties": {
        "geo": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyGeoPolicy"
        },
        "geoPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyGeoPolicy"
        },
        "kind": {
          "type": "string"
        },
        "primaryBackup": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyPrimaryBackupPolicy"
        },
        "wrr": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyWrrPolicy"
        },
        "wrrPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyWrrPolicy"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyGeoPolicy": {
      "description": "Configures a RRSetRoutingPolicy that routes based on the geo location of the querying user.",
      "properties": {
        "enableFencing": {
          "type": "boolean",
          "description": "Without fencing, if health check fails for all configured items in the current geo bucket, we failover to the next nearest geo bucket. With fencing, if health checking is enabled, as long as some targets in the current geo bucket are healthy, we return only the healthy targets. However, if all targets are unhealthy, we don't failover to the next nearest bucket; instead, we return all the items in the current bucket even when all targets are unhealthy."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyGeoPolicyGeoPolicyItem"
          },
          "description": "The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyGeoPolicyGeoPolicyItem": {
      "description": "ResourceRecordSet data for one geo location.",
      "properties": {
        "healthCheckedTargets": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyHealthCheckTargets",
          "description": "For A and AAAA types only. Endpoints to return in the query result only if they are healthy. These can be specified along with rrdata within this item."
        },
        "kind": {
          "type": "string"
        },
        "location": {
          "type": "string",
          "description": "The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. \"us-east1\", \"southamerica-east1\", \"asia-east1\", etc."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNSSEC generated signatures for all the rrdata within this item. If health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyGeoPolicyGeoPolicyItemResponse": {
      "description": "ResourceRecordSet data for one geo location.",
      "properties": {
        "healthCheckedTargets": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyHealthCheckTargetsResponse",
          "description": "For A and AAAA types only. Endpoints to return in the query result only if they are healthy. These can be specified along with rrdata within this item."
        },
        "kind": {
          "type": "string"
        },
        "location": {
          "type": "string",
          "description": "The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. \"us-east1\", \"southamerica-east1\", \"asia-east1\", etc."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNSSEC generated signatures for all the rrdata within this item. If health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item."
        }
      },
      "type": "object",
      "required": [
        "healthCheckedTargets",
        "kind",
        "location",
        "rrdatas",
        "signatureRrdatas"
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyGeoPolicyResponse": {
      "description": "Configures a RRSetRoutingPolicy that routes based on the geo location of the querying user.",
      "properties": {
        "enableFencing": {
          "type": "boolean",
          "description": "Without fencing, if health check fails for all configured items in the current geo bucket, we failover to the next nearest geo bucket. With fencing, if health checking is enabled, as long as some targets in the current geo bucket are healthy, we return only the healthy targets. However, if all targets are unhealthy, we don't failover to the next nearest bucket; instead, we return all the items in the current bucket even when all targets are unhealthy."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyGeoPolicyGeoPolicyItemResponse"
          },
          "description": "The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead."
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "enableFencing",
        "items",
        "kind"
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyHealthCheckTargets": {
      "description": "HealthCheckTargets describes endpoints to health-check when responding to Routing Policy queries. Only the healthy endpoints will be included in the response.",
      "properties": {
        "internalLoadBalancers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyLoadBalancerTarget"
          }
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyHealthCheckTargetsResponse": {
      "description": "HealthCheckTargets describes endpoints to health-check when responding to Routing Policy queries. Only the healthy endpoints will be included in the response.",
      "properties": {
        "internalLoadBalancers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyLoadBalancerTargetResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "internalLoadBalancers"
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyLoadBalancerTarget": {
      "description": "The configuration for an individual load balancer to health check.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The frontend IP address of the load balancer to health check."
        },
        "ipProtocol": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyLoadBalancerTargetIpProtocol",
          "description": "The protocol of the load balancer to health check."
        },
        "kind": {
          "type": "string"
        },
        "loadBalancerType": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyLoadBalancerTargetLoadBalancerType",
          "description": "The type of load balancer specified by this target. This value must match the configuration of the load balancer located at the LoadBalancerTarget's IP address, port, and region. Use the following: - *regionalL4ilb*: for a regional internal passthrough Network Load Balancer. - *regionalL7ilb*: for a regional internal Application Load Balancer. - *globalL7ilb*: for a global internal Application Load Balancer. "
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the network that the load balancer is attached to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} ."
        },
        "port": {
          "type": "string",
          "description": "The configured port of the load balancer."
        },
        "project": {
          "type": "string",
          "description": "The project ID in which the load balancer is located."
        },
        "region": {
          "type": "string",
          "description": "The region in which the load balancer is located."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyLoadBalancerTargetIpProtocol": {
      "description": "The protocol of the load balancer to health check.",
      "type": "string",
      "enum": [
        {
          "name": "Undefined",
          "value": "undefined"
        },
        {
          "name": "Tcp",
          "value": "tcp"
        },
        {
          "name": "Udp",
          "value": "udp"
        }
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyLoadBalancerTargetLoadBalancerType": {
      "description": "The type of load balancer specified by this target. This value must match the configuration of the load balancer located at the LoadBalancerTarget's IP address, port, and region. Use the following: - *regionalL4ilb*: for a regional internal passthrough Network Load Balancer. - *regionalL7ilb*: for a regional internal Application Load Balancer. - *globalL7ilb*: for a global internal Application Load Balancer. ",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "value": "none"
        },
        {
          "name": "GlobalL7ilb",
          "value": "globalL7ilb"
        },
        {
          "name": "RegionalL4ilb",
          "value": "regionalL4ilb"
        },
        {
          "name": "RegionalL7ilb",
          "value": "regionalL7ilb"
        }
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyLoadBalancerTargetResponse": {
      "description": "The configuration for an individual load balancer to health check.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The frontend IP address of the load balancer to health check."
        },
        "ipProtocol": {
          "type": "string",
          "description": "The protocol of the load balancer to health check."
        },
        "kind": {
          "type": "string"
        },
        "loadBalancerType": {
          "type": "string",
          "description": "The type of load balancer specified by this target. This value must match the configuration of the load balancer located at the LoadBalancerTarget's IP address, port, and region. Use the following: - *regionalL4ilb*: for a regional internal passthrough Network Load Balancer. - *regionalL7ilb*: for a regional internal Application Load Balancer. - *globalL7ilb*: for a global internal Application Load Balancer. "
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the network that the load balancer is attached to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network} ."
        },
        "port": {
          "type": "string",
          "description": "The configured port of the load balancer."
        },
        "project": {
          "type": "string",
          "description": "The project ID in which the load balancer is located."
        },
        "region": {
          "type": "string",
          "description": "The region in which the load balancer is located."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "ipProtocol",
        "kind",
        "loadBalancerType",
        "networkUrl",
        "port",
        "project",
        "region"
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyPrimaryBackupPolicy": {
      "description": "Configures a RRSetRoutingPolicy such that all queries are responded with the primary_targets if they are healthy. And if all of them are unhealthy, then we fallback to a geo localized policy.",
      "properties": {
        "backupGeoTargets": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyGeoPolicy",
          "description": "Backup targets provide a regional failover policy for the otherwise global primary targets. If serving state is set to BACKUP, this policy essentially becomes a geo routing policy."
        },
        "kind": {
          "type": "string"
        },
        "primaryTargets": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyHealthCheckTargets",
          "description": "Endpoints that are health checked before making the routing decision. Unhealthy endpoints are omitted from the results. If all endpoints are unhealthy, we serve a response based on the backup_geo_targets."
        },
        "trickleTraffic": {
          "type": "number",
          "description": "When serving state is PRIMARY, this field provides the option of sending a small percentage of the traffic to the backup targets."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyPrimaryBackupPolicyResponse": {
      "description": "Configures a RRSetRoutingPolicy such that all queries are responded with the primary_targets if they are healthy. And if all of them are unhealthy, then we fallback to a geo localized policy.",
      "properties": {
        "backupGeoTargets": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyGeoPolicyResponse",
          "description": "Backup targets provide a regional failover policy for the otherwise global primary targets. If serving state is set to BACKUP, this policy essentially becomes a geo routing policy."
        },
        "kind": {
          "type": "string"
        },
        "primaryTargets": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyHealthCheckTargetsResponse",
          "description": "Endpoints that are health checked before making the routing decision. Unhealthy endpoints are omitted from the results. If all endpoints are unhealthy, we serve a response based on the backup_geo_targets."
        },
        "trickleTraffic": {
          "type": "number",
          "description": "When serving state is PRIMARY, this field provides the option of sending a small percentage of the traffic to the backup targets."
        }
      },
      "type": "object",
      "required": [
        "backupGeoTargets",
        "kind",
        "primaryTargets",
        "trickleTraffic"
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyResponse": {
      "description": "A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection.",
      "properties": {
        "geo": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyGeoPolicyResponse"
        },
        "geoPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyGeoPolicyResponse"
        },
        "kind": {
          "type": "string"
        },
        "primaryBackup": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyPrimaryBackupPolicyResponse"
        },
        "wrr": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyWrrPolicyResponse"
        },
        "wrrPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyWrrPolicyResponse"
        }
      },
      "type": "object",
      "required": [
        "geo",
        "geoPolicy",
        "kind",
        "primaryBackup",
        "wrr",
        "wrrPolicy"
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyWrrPolicy": {
      "description": "Configures a RRSetRoutingPolicy that routes in a weighted round robin fashion.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyWrrPolicyWrrPolicyItem"
          }
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyWrrPolicyResponse": {
      "description": "Configures a RRSetRoutingPolicy that routes in a weighted round robin fashion.",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyWrrPolicyWrrPolicyItemResponse"
          }
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "items",
        "kind"
      ]
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyWrrPolicyWrrPolicyItem": {
      "description": "A routing block which contains the routing information for one WRR item.",
      "properties": {
        "healthCheckedTargets": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyHealthCheckTargets",
          "description": "Endpoints that are health checked before making the routing decision. The unhealthy endpoints are omitted from the result. If all endpoints within a bucket are unhealthy, we choose a different bucket (sampled with respect to its weight) for responding. If DNSSEC is enabled for this zone, only one of rrdata or health_checked_targets can be set."
        },
        "kind": {
          "type": "string"
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNSSEC generated signatures for all the rrdata within this item. Note that if health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item."
        },
        "weight": {
          "type": "number",
          "description": "The weight corresponding to this WrrPolicyItem object. When multiple WrrPolicyItem objects are configured, the probability of returning an WrrPolicyItem object's data is proportional to its weight relative to the sum of weights configured for all items. This weight must be non-negative."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:RRSetRoutingPolicyWrrPolicyWrrPolicyItemResponse": {
      "description": "A routing block which contains the routing information for one WRR item.",
      "properties": {
        "healthCheckedTargets": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyHealthCheckTargetsResponse",
          "description": "Endpoints that are health checked before making the routing decision. The unhealthy endpoints are omitted from the result. If all endpoints within a bucket are unhealthy, we choose a different bucket (sampled with respect to its weight) for responding. If DNSSEC is enabled for this zone, only one of rrdata or health_checked_targets can be set."
        },
        "kind": {
          "type": "string"
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNSSEC generated signatures for all the rrdata within this item. Note that if health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item."
        },
        "weight": {
          "type": "number",
          "description": "The weight corresponding to this WrrPolicyItem object. When multiple WrrPolicyItem objects are configured, the probability of returning an WrrPolicyItem object's data is proportional to its weight relative to the sum of weights configured for all items. This weight must be non-negative."
        }
      },
      "type": "object",
      "required": [
        "healthCheckedTargets",
        "kind",
        "rrdatas",
        "signatureRrdatas",
        "weight"
      ]
    },
    "google-native:dns/v1beta2:ResourceRecordSet": {
      "description": "A unit of data that is returned by the DNS servers.",
      "properties": {
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "For example, www.example.com."
        },
        "routingPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicy",
          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples."
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 4034 (section 3.2)."
        },
        "ttl": {
          "type": "integer",
          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers."
        },
        "type": {
          "type": "string",
          "description": "The identifier of a supported record type. See the list of Supported DNS record types."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ResourceRecordSetResponse": {
      "description": "A unit of data that is returned by the DNS servers.",
      "properties": {
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "For example, www.example.com."
        },
        "routingPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyResponse",
          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples."
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 4034 (section 3.2)."
        },
        "ttl": {
          "type": "integer",
          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers."
        },
        "type": {
          "type": "string",
          "description": "The identifier of a supported record type. See the list of Supported DNS record types."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "name",
        "routingPolicy",
        "rrdatas",
        "signatureRrdatas",
        "ttl",
        "type"
      ]
    },
    "google-native:dns/v1beta2:ResponsePolicyGKECluster": {
      "properties": {
        "gkeClusterName": {
          "type": "string",
          "description": "The resource name of the cluster to bind this response policy to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ResponsePolicyGKEClusterResponse": {
      "properties": {
        "gkeClusterName": {
          "type": "string",
          "description": "The resource name of the cluster to bind this response policy to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "gkeClusterName",
        "kind"
      ]
    },
    "google-native:dns/v1beta2:ResponsePolicyNetwork": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ResponsePolicyNetworkResponse": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "networkUrl": {
          "type": "string",
          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "networkUrl"
      ]
    },
    "google-native:dns/v1beta2:ResponsePolicyRuleBehavior": {
      "description": "Answer this query with a behavior rather than DNS data.",
      "type": "string",
      "enum": [
        {
          "name": "BehaviorUnspecified",
          "value": "behaviorUnspecified"
        },
        {
          "name": "BypassResponsePolicy",
          "description": "Skip a less-specific ResponsePolicyRule and continue normal query logic. This can be used with a less-specific wildcard selector to exempt a subset of the wildcard ResponsePolicyRule from the ResponsePolicy behavior and query the public Internet instead. For instance, if these rules exist: *.example.com -> LocalData 1.2.3.4 foo.example.com -> Behavior 'bypassResponsePolicy' Then a query for 'foo.example.com' skips the wildcard. This additionally functions to facilitate the allowlist feature. RPZs can be applied to multiple levels in the (eventually org, folder, project, network) hierarchy. If a rule is applied at a higher level of the hierarchy, adding a passthru rule at a lower level will supersede that, and a query from an affected vm to that domain will be exempt from the RPZ and proceed to normal resolution behavior.",
          "value": "bypassResponsePolicy"
        }
      ]
    },
    "google-native:dns/v1beta2:ResponsePolicyRuleLocalData": {
      "properties": {
        "localDatas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResourceRecordSet"
          },
          "description": "All resource record sets for this selector, one per resource record type. The name must match the dns_name."
        }
      },
      "type": "object"
    },
    "google-native:dns/v1beta2:ResponsePolicyRuleLocalDataResponse": {
      "properties": {
        "localDatas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResourceRecordSetResponse"
          },
          "description": "All resource record sets for this selector, one per resource record type. The name must match the dns_name."
        }
      },
      "type": "object",
      "required": [
        "localDatas"
      ]
    },
    "google-native:documentai/v1:GoogleCloudDocumentaiV1ProcessorVersionAliasResponse": {
      "description": "Contains the alias and the aliased resource name of processor version.",
      "properties": {
        "alias": {
          "type": "string",
          "description": "The alias in the form of `processor_version` resource name."
        },
        "processorVersion": {
          "type": "string",
          "description": "The resource name of aliased processor version."
        }
      },
      "type": "object",
      "required": [
        "alias",
        "processorVersion"
      ]
    },
    "google-native:documentai/v1beta3:GoogleCloudDocumentaiV1beta3ProcessorVersionAliasResponse": {
      "description": "Contains the alias and the aliased resource name of processor version.",
      "properties": {
        "alias": {
          "type": "string",
          "description": "The alias in the form of `processor_version` resource name."
        },
        "processorVersion": {
          "type": "string",
          "description": "The resource name of aliased processor version."
        }
      },
      "type": "object",
      "required": [
        "alias",
        "processorVersion"
      ]
    },
    "google-native:domains/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:domains/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:domains%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:domains/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:domains/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:domains%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:domains%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:domains/v1:Contact": {
      "description": "Details required for a contact associated with a `Registration`.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the contact."
        },
        "faxNumber": {
          "type": "string",
          "description": "Fax number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "postalAddress": {
          "$ref": "#/types/google-native:domains%2Fv1:PostalAddress",
          "description": "Postal address of the contact."
        }
      },
      "type": "object",
      "required": [
        "email",
        "phoneNumber",
        "postalAddress"
      ]
    },
    "google-native:domains/v1:ContactResponse": {
      "description": "Details required for a contact associated with a `Registration`.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the contact."
        },
        "faxNumber": {
          "type": "string",
          "description": "Fax number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "postalAddress": {
          "$ref": "#/types/google-native:domains%2Fv1:PostalAddressResponse",
          "description": "Postal address of the contact."
        }
      },
      "type": "object",
      "required": [
        "email",
        "faxNumber",
        "phoneNumber",
        "postalAddress"
      ]
    },
    "google-native:domains/v1:ContactSettings": {
      "description": "Defines the contact information associated with a `Registration`. [ICANN](https://icann.org/) requires all domain names to have associated contact information. The `registrant_contact` is considered the domain's legal owner, and often the other contacts are identical.",
      "properties": {
        "adminContact": {
          "$ref": "#/types/google-native:domains%2Fv1:Contact",
          "description": "The administrative contact for the `Registration`."
        },
        "privacy": {
          "$ref": "#/types/google-native:domains%2Fv1:ContactSettingsPrivacy",
          "description": "Privacy setting for the contacts associated with the `Registration`."
        },
        "registrantContact": {
          "$ref": "#/types/google-native:domains%2Fv1:Contact",
          "description": "The registrant contact for the `Registration`. *Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.* *Warning: For new `Registration`s, the registrant receives an email confirmation that they must complete within 15 days to avoid domain suspension.*"
        },
        "technicalContact": {
          "$ref": "#/types/google-native:domains%2Fv1:Contact",
          "description": "The technical contact for the `Registration`."
        }
      },
      "type": "object",
      "required": [
        "adminContact",
        "privacy",
        "registrantContact",
        "technicalContact"
      ]
    },
    "google-native:domains/v1:ContactSettingsPrivacy": {
      "description": "Required. Privacy setting for the contacts associated with the `Registration`.",
      "type": "string",
      "enum": [
        {
          "name": "ContactPrivacyUnspecified",
          "description": "The contact privacy settings are undefined.",
          "value": "CONTACT_PRIVACY_UNSPECIFIED"
        },
        {
          "name": "PublicContactData",
          "description": "All the data from `ContactSettings` is publicly available. When setting this option, you must also provide a `PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT` in the `contact_notices` field of the request.",
          "value": "PUBLIC_CONTACT_DATA"
        },
        {
          "name": "PrivateContactData",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) None of the data from `ContactSettings` is publicly available. Instead, proxy contact data is published for your domain. Email sent to the proxy email address is forwarded to the registrant's email address. Cloud Domains provides this privacy proxy service at no additional cost.",
          "value": "PRIVATE_CONTACT_DATA"
        },
        {
          "name": "RedactedContactData",
          "description": "The organization name (if provided) and limited non-identifying data from `ContactSettings` is available to the public (e.g. country and state). The remaining data is marked as `REDACTED FOR PRIVACY` in the WHOIS database. The actual information redacted depends on the domain. For details, see [the registration privacy article](https://support.google.com/domains/answer/3251242).",
          "value": "REDACTED_CONTACT_DATA"
        }
      ]
    },
    "google-native:domains/v1:ContactSettingsResponse": {
      "description": "Defines the contact information associated with a `Registration`. [ICANN](https://icann.org/) requires all domain names to have associated contact information. The `registrant_contact` is considered the domain's legal owner, and often the other contacts are identical.",
      "properties": {
        "adminContact": {
          "$ref": "#/types/google-native:domains%2Fv1:ContactResponse",
          "description": "The administrative contact for the `Registration`."
        },
        "privacy": {
          "type": "string",
          "description": "Privacy setting for the contacts associated with the `Registration`."
        },
        "registrantContact": {
          "$ref": "#/types/google-native:domains%2Fv1:ContactResponse",
          "description": "The registrant contact for the `Registration`. *Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.* *Warning: For new `Registration`s, the registrant receives an email confirmation that they must complete within 15 days to avoid domain suspension.*"
        },
        "technicalContact": {
          "$ref": "#/types/google-native:domains%2Fv1:ContactResponse",
          "description": "The technical contact for the `Registration`."
        }
      },
      "type": "object",
      "required": [
        "adminContact",
        "privacy",
        "registrantContact",
        "technicalContact"
      ]
    },
    "google-native:domains/v1:CustomDns": {
      "description": "Configuration for an arbitrary DNS provider.",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:DsRecord"
          },
          "description": "The list of DS records for this domain, which are used to enable DNSSEC. The domain's DNS provider can provide the values to set here. If this field is empty, DNSSEC is disabled."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format."
        }
      },
      "type": "object",
      "required": [
        "nameServers"
      ]
    },
    "google-native:domains/v1:CustomDnsResponse": {
      "description": "Configuration for an arbitrary DNS provider.",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:DsRecordResponse"
          },
          "description": "The list of DS records for this domain, which are used to enable DNSSEC. The domain's DNS provider can provide the values to set here. If this field is empty, DNSSEC is disabled."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format."
        }
      },
      "type": "object",
      "required": [
        "dsRecords",
        "nameServers"
      ]
    },
    "google-native:domains/v1:DnsSettings": {
      "description": "Defines the DNS configuration of a `Registration`, including name servers, DNSSEC, and glue records.",
      "properties": {
        "customDns": {
          "$ref": "#/types/google-native:domains%2Fv1:CustomDns",
          "description": "An arbitrary DNS provider identified by its name servers."
        },
        "glueRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:GlueRecord"
          },
          "description": "The list of glue records for this `Registration`. Commonly empty."
        },
        "googleDomainsDns": {
          "$ref": "#/types/google-native:domains%2Fv1:GoogleDomainsDns",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/).",
          "deprecationMessage": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/)."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1:DnsSettingsResponse": {
      "description": "Defines the DNS configuration of a `Registration`, including name servers, DNSSEC, and glue records.",
      "properties": {
        "customDns": {
          "$ref": "#/types/google-native:domains%2Fv1:CustomDnsResponse",
          "description": "An arbitrary DNS provider identified by its name servers."
        },
        "glueRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:GlueRecordResponse"
          },
          "description": "The list of glue records for this `Registration`. Commonly empty."
        },
        "googleDomainsDns": {
          "$ref": "#/types/google-native:domains%2Fv1:GoogleDomainsDnsResponse",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/).",
          "deprecationMessage": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/)."
        }
      },
      "type": "object",
      "required": [
        "customDns",
        "glueRecords",
        "googleDomainsDns"
      ]
    },
    "google-native:domains/v1:DsRecord": {
      "description": "Defines a Delegation Signer (DS) record, which is needed to enable DNSSEC for a domain. It contains a digest (hash) of a DNSKEY record that must be present in the domain's DNS zone.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:domains%2Fv1:DsRecordAlgorithm",
          "description": "The algorithm used to generate the referenced DNSKEY."
        },
        "digest": {
          "type": "string",
          "description": "The digest generated from the referenced DNSKEY."
        },
        "digestType": {
          "$ref": "#/types/google-native:domains%2Fv1:DsRecordDigestType",
          "description": "The hash function used to generate the digest of the referenced DNSKEY."
        },
        "keyTag": {
          "type": "integer",
          "description": "The key tag of the record. Must be set in range 0 -- 65535."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1:DsRecordAlgorithm": {
      "description": "The algorithm used to generate the referenced DNSKEY.",
      "type": "string",
      "enum": [
        {
          "name": "AlgorithmUnspecified",
          "description": "The algorithm is unspecified.",
          "value": "ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "Rsamd5",
          "description": "RSA/MD5. Cannot be used for new deployments.",
          "value": "RSAMD5"
        },
        {
          "name": "Dh",
          "description": "Diffie-Hellman. Cannot be used for new deployments.",
          "value": "DH"
        },
        {
          "name": "Dsa",
          "description": "DSA/SHA1. Not recommended for new deployments.",
          "value": "DSA"
        },
        {
          "name": "Ecc",
          "description": "ECC. Not recommended for new deployments.",
          "value": "ECC"
        },
        {
          "name": "Rsasha1",
          "description": "RSA/SHA-1. Not recommended for new deployments.",
          "value": "RSASHA1"
        },
        {
          "name": "Dsansec3sha1",
          "description": "DSA-NSEC3-SHA1. Not recommended for new deployments.",
          "value": "DSANSEC3SHA1"
        },
        {
          "name": "Rsasha1nsec3sha1",
          "description": "RSA/SHA1-NSEC3-SHA1. Not recommended for new deployments.",
          "value": "RSASHA1NSEC3SHA1"
        },
        {
          "name": "Rsasha256",
          "description": "RSA/SHA-256.",
          "value": "RSASHA256"
        },
        {
          "name": "Rsasha512",
          "description": "RSA/SHA-512.",
          "value": "RSASHA512"
        },
        {
          "name": "Eccgost",
          "description": "GOST R 34.10-2001.",
          "value": "ECCGOST"
        },
        {
          "name": "Ecdsap256sha256",
          "description": "ECDSA Curve P-256 with SHA-256.",
          "value": "ECDSAP256SHA256"
        },
        {
          "name": "Ecdsap384sha384",
          "description": "ECDSA Curve P-384 with SHA-384.",
          "value": "ECDSAP384SHA384"
        },
        {
          "name": "Ed25519",
          "description": "Ed25519.",
          "value": "ED25519"
        },
        {
          "name": "Ed448",
          "description": "Ed448.",
          "value": "ED448"
        },
        {
          "name": "Indirect",
          "description": "Reserved for Indirect Keys. Cannot be used for new deployments.",
          "value": "INDIRECT"
        },
        {
          "name": "Privatedns",
          "description": "Private algorithm. Cannot be used for new deployments.",
          "value": "PRIVATEDNS"
        },
        {
          "name": "Privateoid",
          "description": "Private algorithm OID. Cannot be used for new deployments.",
          "value": "PRIVATEOID"
        }
      ]
    },
    "google-native:domains/v1:DsRecordDigestType": {
      "description": "The hash function used to generate the digest of the referenced DNSKEY.",
      "type": "string",
      "enum": [
        {
          "name": "DigestTypeUnspecified",
          "description": "The DigestType is unspecified.",
          "value": "DIGEST_TYPE_UNSPECIFIED"
        },
        {
          "name": "Sha1",
          "description": "SHA-1. Not recommended for new deployments.",
          "value": "SHA1"
        },
        {
          "name": "Sha256",
          "description": "SHA-256.",
          "value": "SHA256"
        },
        {
          "name": "Gost3411",
          "description": "GOST R 34.11-94.",
          "value": "GOST3411"
        },
        {
          "name": "Sha384",
          "description": "SHA-384.",
          "value": "SHA384"
        }
      ]
    },
    "google-native:domains/v1:DsRecordResponse": {
      "description": "Defines a Delegation Signer (DS) record, which is needed to enable DNSSEC for a domain. It contains a digest (hash) of a DNSKEY record that must be present in the domain's DNS zone.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The algorithm used to generate the referenced DNSKEY."
        },
        "digest": {
          "type": "string",
          "description": "The digest generated from the referenced DNSKEY."
        },
        "digestType": {
          "type": "string",
          "description": "The hash function used to generate the digest of the referenced DNSKEY."
        },
        "keyTag": {
          "type": "integer",
          "description": "The key tag of the record. Must be set in range 0 -- 65535."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "digest",
        "digestType",
        "keyTag"
      ]
    },
    "google-native:domains/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:domains/v1:GlueRecord": {
      "description": "Defines a host on your domain that is a DNS name server for your domain and/or other domains. Glue records are a way of making the IP address of a name server known, even when it serves DNS queries for its parent domain. For example, when `ns.example.com` is a name server for `example.com`, the host `ns.example.com` must have a glue record to break the circular DNS reference.",
      "properties": {
        "hostName": {
          "type": "string",
          "description": "Domain name of the host in Punycode format."
        },
        "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`). At least one of `ipv4_address` and `ipv6_address` must be set."
        },
        "ipv6Addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of IPv6 addresses corresponding to this host in the standard hexadecimal format (e.g. `2001:db8::`). At least one of `ipv4_address` and `ipv6_address` must be set."
        }
      },
      "type": "object",
      "required": [
        "hostName"
      ]
    },
    "google-native:domains/v1:GlueRecordResponse": {
      "description": "Defines a host on your domain that is a DNS name server for your domain and/or other domains. Glue records are a way of making the IP address of a name server known, even when it serves DNS queries for its parent domain. For example, when `ns.example.com` is a name server for `example.com`, the host `ns.example.com` must have a glue record to break the circular DNS reference.",
      "properties": {
        "hostName": {
          "type": "string",
          "description": "Domain name of the host in Punycode format."
        },
        "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`). At least one of `ipv4_address` and `ipv6_address` must be set."
        },
        "ipv6Addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of IPv6 addresses corresponding to this host in the standard hexadecimal format (e.g. `2001:db8::`). At least one of `ipv4_address` and `ipv6_address` must be set."
        }
      },
      "type": "object",
      "required": [
        "hostName",
        "ipv4Addresses",
        "ipv6Addresses"
      ]
    },
    "google-native:domains/v1:GoogleDomainsDns": {
      "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Configuration for using the free DNS zone provided by Google Domains as a `Registration`'s `dns_provider`. You cannot configure the DNS zone itself using the API. To configure the DNS zone, go to [Google Domains](https://domains.google/).",
      "properties": {
        "dsState": {
          "$ref": "#/types/google-native:domains%2Fv1:GoogleDomainsDnsDsState",
          "description": "The state of DS records for this domain. Used to enable or disable automatic DNSSEC."
        }
      },
      "type": "object",
      "required": [
        "dsState"
      ]
    },
    "google-native:domains/v1:GoogleDomainsDnsDsState": {
      "description": "Required. The state of DS records for this domain. Used to enable or disable automatic DNSSEC.",
      "type": "string",
      "enum": [
        {
          "name": "DsStateUnspecified",
          "description": "DS state is unspecified.",
          "value": "DS_STATE_UNSPECIFIED"
        },
        {
          "name": "DsRecordsUnpublished",
          "description": "DNSSEC is disabled for this domain. No DS records for this domain are published in the parent DNS zone.",
          "value": "DS_RECORDS_UNPUBLISHED"
        },
        {
          "name": "DsRecordsPublished",
          "description": "DNSSEC is enabled for this domain. Appropriate DS records for this domain are published in the parent DNS zone. This option is valid only if the DNS zone referenced in the `Registration`'s `dns_provider` field is already DNSSEC-signed.",
          "value": "DS_RECORDS_PUBLISHED"
        }
      ]
    },
    "google-native:domains/v1:GoogleDomainsDnsResponse": {
      "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Configuration for using the free DNS zone provided by Google Domains as a `Registration`'s `dns_provider`. You cannot configure the DNS zone itself using the API. To configure the DNS zone, go to [Google Domains](https://domains.google/).",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:DsRecordResponse"
          },
          "description": "The list of DS records published for this domain. The list is automatically populated when `ds_state` is `DS_RECORDS_PUBLISHED`, otherwise it remains empty."
        },
        "dsState": {
          "type": "string",
          "description": "The state of DS records for this domain. Used to enable or disable automatic DNSSEC."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format. This field is automatically populated with the name servers assigned to the Google Domains DNS zone."
        }
      },
      "type": "object",
      "required": [
        "dsRecords",
        "dsState",
        "nameServers"
      ]
    },
    "google-native:domains/v1:ManagementSettings": {
      "description": "Defines renewal, billing, and transfer settings for a `Registration`.",
      "properties": {
        "preferredRenewalMethod": {
          "$ref": "#/types/google-native:domains%2Fv1:ManagementSettingsPreferredRenewalMethod",
          "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "transferLockState": {
          "$ref": "#/types/google-native:domains%2Fv1:ManagementSettingsTransferLockState",
          "description": "Controls whether the domain can be transferred to another registrar."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1:ManagementSettingsPreferredRenewalMethod": {
      "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours.",
      "type": "string",
      "enum": [
        {
          "name": "RenewalMethodUnspecified",
          "description": "The renewal method is undefined.",
          "value": "RENEWAL_METHOD_UNSPECIFIED"
        },
        {
          "name": "AutomaticRenewal",
          "description": "The domain is automatically renewed each year.",
          "value": "AUTOMATIC_RENEWAL"
        },
        {
          "name": "ManualRenewal",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) This option was never used. Use RENEWAL_DISABLED instead.",
          "value": "MANUAL_RENEWAL"
        },
        {
          "name": "RenewalDisabled",
          "description": "The domain won't be renewed and will expire at its expiration time.",
          "value": "RENEWAL_DISABLED"
        }
      ]
    },
    "google-native:domains/v1:ManagementSettingsResponse": {
      "description": "Defines renewal, billing, and transfer settings for a `Registration`.",
      "properties": {
        "preferredRenewalMethod": {
          "type": "string",
          "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "renewalMethod": {
          "type": "string",
          "description": "The actual renewal method for this `Registration`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be equal to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "transferLockState": {
          "type": "string",
          "description": "Controls whether the domain can be transferred to another registrar."
        }
      },
      "type": "object",
      "required": [
        "preferredRenewalMethod",
        "renewalMethod",
        "transferLockState"
      ]
    },
    "google-native:domains/v1:ManagementSettingsTransferLockState": {
      "description": "Controls whether the domain can be transferred to another registrar.",
      "type": "string",
      "enum": [
        {
          "name": "TransferLockStateUnspecified",
          "description": "The state is unspecified.",
          "value": "TRANSFER_LOCK_STATE_UNSPECIFIED"
        },
        {
          "name": "Unlocked",
          "description": "The domain is unlocked and can be transferred to another registrar.",
          "value": "UNLOCKED"
        },
        {
          "name": "Locked",
          "description": "The domain is locked and cannot be transferred to another registrar.",
          "value": "LOCKED"
        }
      ]
    },
    "google-native:domains/v1:Money": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1:PostalAddress": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "regionCode"
      ]
    },
    "google-native:domains/v1:PostalAddressResponse": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "addressLines",
        "administrativeArea",
        "languageCode",
        "locality",
        "organization",
        "postalCode",
        "recipients",
        "regionCode",
        "revision",
        "sortingCode",
        "sublocality"
      ]
    },
    "google-native:domains/v1:RegistrationContactNoticesItem": {
      "type": "string",
      "enum": [
        {
          "name": "ContactNoticeUnspecified",
          "description": "The notice is undefined.",
          "value": "CONTACT_NOTICE_UNSPECIFIED"
        },
        {
          "name": "PublicContactDataAcknowledgement",
          "description": "Required when setting the `privacy` field of `ContactSettings` to `PUBLIC_CONTACT_DATA`, which exposes contact data publicly.",
          "value": "PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT"
        }
      ]
    },
    "google-native:domains/v1:RegistrationDomainNoticesItem": {
      "type": "string",
      "enum": [
        {
          "name": "DomainNoticeUnspecified",
          "description": "The notice is undefined.",
          "value": "DOMAIN_NOTICE_UNSPECIFIED"
        },
        {
          "name": "HstsPreloaded",
          "description": "Indicates that the domain is preloaded on the HTTP Strict Transport Security list in browsers. Serving a website on such domain requires an SSL certificate. For details, see [how to get an SSL certificate](https://support.google.com/domains/answer/7638036).",
          "value": "HSTS_PRELOADED"
        }
      ]
    },
    "google-native:domains/v1alpha2:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1alpha2:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:domains/v1alpha2:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1alpha2:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:domains/v1alpha2:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:domains/v1alpha2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1alpha2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:domains/v1alpha2:Contact": {
      "description": "Details required for a contact associated with a `Registration`.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the contact."
        },
        "faxNumber": {
          "type": "string",
          "description": "Fax number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "postalAddress": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:PostalAddress",
          "description": "Postal address of the contact."
        }
      },
      "type": "object",
      "required": [
        "email",
        "phoneNumber",
        "postalAddress"
      ]
    },
    "google-native:domains/v1alpha2:ContactResponse": {
      "description": "Details required for a contact associated with a `Registration`.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the contact."
        },
        "faxNumber": {
          "type": "string",
          "description": "Fax number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "postalAddress": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:PostalAddressResponse",
          "description": "Postal address of the contact."
        }
      },
      "type": "object",
      "required": [
        "email",
        "faxNumber",
        "phoneNumber",
        "postalAddress"
      ]
    },
    "google-native:domains/v1alpha2:ContactSettings": {
      "description": "Defines the contact information associated with a `Registration`. [ICANN](https://icann.org/) requires all domain names to have associated contact information. The `registrant_contact` is considered the domain's legal owner, and often the other contacts are identical.",
      "properties": {
        "adminContact": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:Contact",
          "description": "The administrative contact for the `Registration`."
        },
        "privacy": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactSettingsPrivacy",
          "description": "Privacy setting for the contacts associated with the `Registration`."
        },
        "registrantContact": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:Contact",
          "description": "The registrant contact for the `Registration`. *Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.* *Warning: For new `Registration`s, the registrant receives an email confirmation that they must complete within 15 days to avoid domain suspension.*"
        },
        "technicalContact": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:Contact",
          "description": "The technical contact for the `Registration`."
        }
      },
      "type": "object",
      "required": [
        "adminContact",
        "privacy",
        "registrantContact",
        "technicalContact"
      ]
    },
    "google-native:domains/v1alpha2:ContactSettingsPrivacy": {
      "description": "Required. Privacy setting for the contacts associated with the `Registration`.",
      "type": "string",
      "enum": [
        {
          "name": "ContactPrivacyUnspecified",
          "description": "The contact privacy settings are undefined.",
          "value": "CONTACT_PRIVACY_UNSPECIFIED"
        },
        {
          "name": "PublicContactData",
          "description": "All the data from `ContactSettings` is publicly available. When setting this option, you must also provide a `PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT` in the `contact_notices` field of the request.",
          "value": "PUBLIC_CONTACT_DATA"
        },
        {
          "name": "PrivateContactData",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) None of the data from `ContactSettings` is publicly available. Instead, proxy contact data is published for your domain. Email sent to the proxy email address is forwarded to the registrant's email address. Cloud Domains provides this privacy proxy service at no additional cost.",
          "value": "PRIVATE_CONTACT_DATA"
        },
        {
          "name": "RedactedContactData",
          "description": "The organization name (if provided) and limited non-identifying data from `ContactSettings` is available to the public (e.g. country and state). The remaining data is marked as `REDACTED FOR PRIVACY` in the WHOIS database. The actual information redacted depends on the domain. For details, see [the registration privacy article](https://support.google.com/domains/answer/3251242).",
          "value": "REDACTED_CONTACT_DATA"
        }
      ]
    },
    "google-native:domains/v1alpha2:ContactSettingsResponse": {
      "description": "Defines the contact information associated with a `Registration`. [ICANN](https://icann.org/) requires all domain names to have associated contact information. The `registrant_contact` is considered the domain's legal owner, and often the other contacts are identical.",
      "properties": {
        "adminContact": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactResponse",
          "description": "The administrative contact for the `Registration`."
        },
        "privacy": {
          "type": "string",
          "description": "Privacy setting for the contacts associated with the `Registration`."
        },
        "registrantContact": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactResponse",
          "description": "The registrant contact for the `Registration`. *Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.* *Warning: For new `Registration`s, the registrant receives an email confirmation that they must complete within 15 days to avoid domain suspension.*"
        },
        "technicalContact": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactResponse",
          "description": "The technical contact for the `Registration`."
        }
      },
      "type": "object",
      "required": [
        "adminContact",
        "privacy",
        "registrantContact",
        "technicalContact"
      ]
    },
    "google-native:domains/v1alpha2:CustomDns": {
      "description": "Configuration for an arbitrary DNS provider.",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:DsRecord"
          },
          "description": "The list of DS records for this domain, which are used to enable DNSSEC. The domain's DNS provider can provide the values to set here. If this field is empty, DNSSEC is disabled."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format."
        }
      },
      "type": "object",
      "required": [
        "nameServers"
      ]
    },
    "google-native:domains/v1alpha2:CustomDnsResponse": {
      "description": "Configuration for an arbitrary DNS provider.",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:DsRecordResponse"
          },
          "description": "The list of DS records for this domain, which are used to enable DNSSEC. The domain's DNS provider can provide the values to set here. If this field is empty, DNSSEC is disabled."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format."
        }
      },
      "type": "object",
      "required": [
        "dsRecords",
        "nameServers"
      ]
    },
    "google-native:domains/v1alpha2:DnsSettings": {
      "description": "Defines the DNS configuration of a `Registration`, including name servers, DNSSEC, and glue records.",
      "properties": {
        "customDns": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:CustomDns",
          "description": "An arbitrary DNS provider identified by its name servers."
        },
        "glueRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:GlueRecord"
          },
          "description": "The list of glue records for this `Registration`. Commonly empty."
        },
        "googleDomainsDns": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:GoogleDomainsDns",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/).",
          "deprecationMessage": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/)."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1alpha2:DnsSettingsResponse": {
      "description": "Defines the DNS configuration of a `Registration`, including name servers, DNSSEC, and glue records.",
      "properties": {
        "customDns": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:CustomDnsResponse",
          "description": "An arbitrary DNS provider identified by its name servers."
        },
        "glueRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:GlueRecordResponse"
          },
          "description": "The list of glue records for this `Registration`. Commonly empty."
        },
        "googleDomainsDns": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:GoogleDomainsDnsResponse",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/).",
          "deprecationMessage": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/)."
        }
      },
      "type": "object",
      "required": [
        "customDns",
        "glueRecords",
        "googleDomainsDns"
      ]
    },
    "google-native:domains/v1alpha2:DsRecord": {
      "description": "Defines a Delegation Signer (DS) record, which is needed to enable DNSSEC for a domain. It contains a digest (hash) of a DNSKEY record that must be present in the domain's DNS zone.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:DsRecordAlgorithm",
          "description": "The algorithm used to generate the referenced DNSKEY."
        },
        "digest": {
          "type": "string",
          "description": "The digest generated from the referenced DNSKEY."
        },
        "digestType": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:DsRecordDigestType",
          "description": "The hash function used to generate the digest of the referenced DNSKEY."
        },
        "keyTag": {
          "type": "integer",
          "description": "The key tag of the record. Must be set in range 0 -- 65535."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1alpha2:DsRecordAlgorithm": {
      "description": "The algorithm used to generate the referenced DNSKEY.",
      "type": "string",
      "enum": [
        {
          "name": "AlgorithmUnspecified",
          "description": "The algorithm is unspecified.",
          "value": "ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "Rsamd5",
          "description": "RSA/MD5. Cannot be used for new deployments.",
          "value": "RSAMD5"
        },
        {
          "name": "Dh",
          "description": "Diffie-Hellman. Cannot be used for new deployments.",
          "value": "DH"
        },
        {
          "name": "Dsa",
          "description": "DSA/SHA1. Not recommended for new deployments.",
          "value": "DSA"
        },
        {
          "name": "Ecc",
          "description": "ECC. Not recommended for new deployments.",
          "value": "ECC"
        },
        {
          "name": "Rsasha1",
          "description": "RSA/SHA-1. Not recommended for new deployments.",
          "value": "RSASHA1"
        },
        {
          "name": "Dsansec3sha1",
          "description": "DSA-NSEC3-SHA1. Not recommended for new deployments.",
          "value": "DSANSEC3SHA1"
        },
        {
          "name": "Rsasha1nsec3sha1",
          "description": "RSA/SHA1-NSEC3-SHA1. Not recommended for new deployments.",
          "value": "RSASHA1NSEC3SHA1"
        },
        {
          "name": "Rsasha256",
          "description": "RSA/SHA-256.",
          "value": "RSASHA256"
        },
        {
          "name": "Rsasha512",
          "description": "RSA/SHA-512.",
          "value": "RSASHA512"
        },
        {
          "name": "Eccgost",
          "description": "GOST R 34.10-2001.",
          "value": "ECCGOST"
        },
        {
          "name": "Ecdsap256sha256",
          "description": "ECDSA Curve P-256 with SHA-256.",
          "value": "ECDSAP256SHA256"
        },
        {
          "name": "Ecdsap384sha384",
          "description": "ECDSA Curve P-384 with SHA-384.",
          "value": "ECDSAP384SHA384"
        },
        {
          "name": "Ed25519",
          "description": "Ed25519.",
          "value": "ED25519"
        },
        {
          "name": "Ed448",
          "description": "Ed448.",
          "value": "ED448"
        },
        {
          "name": "Indirect",
          "description": "Reserved for Indirect Keys. Cannot be used for new deployments.",
          "value": "INDIRECT"
        },
        {
          "name": "Privatedns",
          "description": "Private algorithm. Cannot be used for new deployments.",
          "value": "PRIVATEDNS"
        },
        {
          "name": "Privateoid",
          "description": "Private algorithm OID. Cannot be used for new deployments.",
          "value": "PRIVATEOID"
        }
      ]
    },
    "google-native:domains/v1alpha2:DsRecordDigestType": {
      "description": "The hash function used to generate the digest of the referenced DNSKEY.",
      "type": "string",
      "enum": [
        {
          "name": "DigestTypeUnspecified",
          "description": "The DigestType is unspecified.",
          "value": "DIGEST_TYPE_UNSPECIFIED"
        },
        {
          "name": "Sha1",
          "description": "SHA-1. Not recommended for new deployments.",
          "value": "SHA1"
        },
        {
          "name": "Sha256",
          "description": "SHA-256.",
          "value": "SHA256"
        },
        {
          "name": "Gost3411",
          "description": "GOST R 34.11-94.",
          "value": "GOST3411"
        },
        {
          "name": "Sha384",
          "description": "SHA-384.",
          "value": "SHA384"
        }
      ]
    },
    "google-native:domains/v1alpha2:DsRecordResponse": {
      "description": "Defines a Delegation Signer (DS) record, which is needed to enable DNSSEC for a domain. It contains a digest (hash) of a DNSKEY record that must be present in the domain's DNS zone.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The algorithm used to generate the referenced DNSKEY."
        },
        "digest": {
          "type": "string",
          "description": "The digest generated from the referenced DNSKEY."
        },
        "digestType": {
          "type": "string",
          "description": "The hash function used to generate the digest of the referenced DNSKEY."
        },
        "keyTag": {
          "type": "integer",
          "description": "The key tag of the record. Must be set in range 0 -- 65535."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "digest",
        "digestType",
        "keyTag"
      ]
    },
    "google-native:domains/v1alpha2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1alpha2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:domains/v1alpha2:GlueRecord": {
      "description": "Defines a host on your domain that is a DNS name server for your domain and/or other domains. Glue records are a way of making the IP address of a name server known, even when it serves DNS queries for its parent domain. For example, when `ns.example.com` is a name server for `example.com`, the host `ns.example.com` must have a glue record to break the circular DNS reference.",
      "properties": {
        "hostName": {
          "type": "string",
          "description": "Domain name of the host in Punycode format."
        },
        "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`). At least one of `ipv4_address` and `ipv6_address` must be set."
        },
        "ipv6Addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of IPv6 addresses corresponding to this host in the standard hexadecimal format (e.g. `2001:db8::`). At least one of `ipv4_address` and `ipv6_address` must be set."
        }
      },
      "type": "object",
      "required": [
        "hostName"
      ]
    },
    "google-native:domains/v1alpha2:GlueRecordResponse": {
      "description": "Defines a host on your domain that is a DNS name server for your domain and/or other domains. Glue records are a way of making the IP address of a name server known, even when it serves DNS queries for its parent domain. For example, when `ns.example.com` is a name server for `example.com`, the host `ns.example.com` must have a glue record to break the circular DNS reference.",
      "properties": {
        "hostName": {
          "type": "string",
          "description": "Domain name of the host in Punycode format."
        },
        "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`). At least one of `ipv4_address` and `ipv6_address` must be set."
        },
        "ipv6Addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of IPv6 addresses corresponding to this host in the standard hexadecimal format (e.g. `2001:db8::`). At least one of `ipv4_address` and `ipv6_address` must be set."
        }
      },
      "type": "object",
      "required": [
        "hostName",
        "ipv4Addresses",
        "ipv6Addresses"
      ]
    },
    "google-native:domains/v1alpha2:GoogleDomainsDns": {
      "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Configuration for using the free DNS zone provided by Google Domains as a `Registration`'s `dns_provider`. You cannot configure the DNS zone itself using the API. To configure the DNS zone, go to [Google Domains](https://domains.google/).",
      "properties": {
        "dsState": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:GoogleDomainsDnsDsState",
          "description": "The state of DS records for this domain. Used to enable or disable automatic DNSSEC."
        }
      },
      "type": "object",
      "required": [
        "dsState"
      ]
    },
    "google-native:domains/v1alpha2:GoogleDomainsDnsDsState": {
      "description": "Required. The state of DS records for this domain. Used to enable or disable automatic DNSSEC.",
      "type": "string",
      "enum": [
        {
          "name": "DsStateUnspecified",
          "description": "DS state is unspecified.",
          "value": "DS_STATE_UNSPECIFIED"
        },
        {
          "name": "DsRecordsUnpublished",
          "description": "DNSSEC is disabled for this domain. No DS records for this domain are published in the parent DNS zone.",
          "value": "DS_RECORDS_UNPUBLISHED"
        },
        {
          "name": "DsRecordsPublished",
          "description": "DNSSEC is enabled for this domain. Appropriate DS records for this domain are published in the parent DNS zone. This option is valid only if the DNS zone referenced in the `Registration`'s `dns_provider` field is already DNSSEC-signed.",
          "value": "DS_RECORDS_PUBLISHED"
        }
      ]
    },
    "google-native:domains/v1alpha2:GoogleDomainsDnsResponse": {
      "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Configuration for using the free DNS zone provided by Google Domains as a `Registration`'s `dns_provider`. You cannot configure the DNS zone itself using the API. To configure the DNS zone, go to [Google Domains](https://domains.google/).",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:DsRecordResponse"
          },
          "description": "The list of DS records published for this domain. The list is automatically populated when `ds_state` is `DS_RECORDS_PUBLISHED`, otherwise it remains empty."
        },
        "dsState": {
          "type": "string",
          "description": "The state of DS records for this domain. Used to enable or disable automatic DNSSEC."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format. This field is automatically populated with the name servers assigned to the Google Domains DNS zone."
        }
      },
      "type": "object",
      "required": [
        "dsRecords",
        "dsState",
        "nameServers"
      ]
    },
    "google-native:domains/v1alpha2:ManagementSettings": {
      "description": "Defines renewal, billing, and transfer settings for a `Registration`.",
      "properties": {
        "preferredRenewalMethod": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ManagementSettingsPreferredRenewalMethod",
          "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "transferLockState": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ManagementSettingsTransferLockState",
          "description": "Controls whether the domain can be transferred to another registrar."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1alpha2:ManagementSettingsPreferredRenewalMethod": {
      "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours.",
      "type": "string",
      "enum": [
        {
          "name": "RenewalMethodUnspecified",
          "description": "The renewal method is undefined.",
          "value": "RENEWAL_METHOD_UNSPECIFIED"
        },
        {
          "name": "AutomaticRenewal",
          "description": "The domain is automatically renewed each year.",
          "value": "AUTOMATIC_RENEWAL"
        },
        {
          "name": "ManualRenewal",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) This option was never used. Use RENEWAL_DISABLED instead.",
          "value": "MANUAL_RENEWAL"
        },
        {
          "name": "RenewalDisabled",
          "description": "The domain won't be renewed and will expire at its expiration time.",
          "value": "RENEWAL_DISABLED"
        }
      ]
    },
    "google-native:domains/v1alpha2:ManagementSettingsResponse": {
      "description": "Defines renewal, billing, and transfer settings for a `Registration`.",
      "properties": {
        "preferredRenewalMethod": {
          "type": "string",
          "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "renewalMethod": {
          "type": "string",
          "description": "The actual renewal method for this `Registration`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be equal to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "transferLockState": {
          "type": "string",
          "description": "Controls whether the domain can be transferred to another registrar."
        }
      },
      "type": "object",
      "required": [
        "preferredRenewalMethod",
        "renewalMethod",
        "transferLockState"
      ]
    },
    "google-native:domains/v1alpha2:ManagementSettingsTransferLockState": {
      "description": "Controls whether the domain can be transferred to another registrar.",
      "type": "string",
      "enum": [
        {
          "name": "TransferLockStateUnspecified",
          "description": "The state is unspecified.",
          "value": "TRANSFER_LOCK_STATE_UNSPECIFIED"
        },
        {
          "name": "Unlocked",
          "description": "The domain is unlocked and can be transferred to another registrar.",
          "value": "UNLOCKED"
        },
        {
          "name": "Locked",
          "description": "The domain is locked and cannot be transferred to another registrar.",
          "value": "LOCKED"
        }
      ]
    },
    "google-native:domains/v1alpha2:Money": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1alpha2:PostalAddress": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "regionCode"
      ]
    },
    "google-native:domains/v1alpha2:PostalAddressResponse": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "addressLines",
        "administrativeArea",
        "languageCode",
        "locality",
        "organization",
        "postalCode",
        "recipients",
        "regionCode",
        "revision",
        "sortingCode",
        "sublocality"
      ]
    },
    "google-native:domains/v1alpha2:RegistrationContactNoticesItem": {
      "type": "string",
      "enum": [
        {
          "name": "ContactNoticeUnspecified",
          "description": "The notice is undefined.",
          "value": "CONTACT_NOTICE_UNSPECIFIED"
        },
        {
          "name": "PublicContactDataAcknowledgement",
          "description": "Required when setting the `privacy` field of `ContactSettings` to `PUBLIC_CONTACT_DATA`, which exposes contact data publicly.",
          "value": "PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT"
        }
      ]
    },
    "google-native:domains/v1alpha2:RegistrationDomainNoticesItem": {
      "type": "string",
      "enum": [
        {
          "name": "DomainNoticeUnspecified",
          "description": "The notice is undefined.",
          "value": "DOMAIN_NOTICE_UNSPECIFIED"
        },
        {
          "name": "HstsPreloaded",
          "description": "Indicates that the domain is preloaded on the HTTP Strict Transport Security list in browsers. Serving a website on such domain requires an SSL certificate. For details, see [how to get an SSL certificate](https://support.google.com/domains/answer/7638036).",
          "value": "HSTS_PRELOADED"
        }
      ]
    },
    "google-native:domains/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:domains/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:domains/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:domains/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:domains/v1beta1:Contact": {
      "description": "Details required for a contact associated with a `Registration`.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the contact."
        },
        "faxNumber": {
          "type": "string",
          "description": "Fax number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "postalAddress": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:PostalAddress",
          "description": "Postal address of the contact."
        }
      },
      "type": "object",
      "required": [
        "email",
        "phoneNumber",
        "postalAddress"
      ]
    },
    "google-native:domains/v1beta1:ContactResponse": {
      "description": "Details required for a contact associated with a `Registration`.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the contact."
        },
        "faxNumber": {
          "type": "string",
          "description": "Fax number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone number of the contact in international format. For example, `\"+1-800-555-0123\"`."
        },
        "postalAddress": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:PostalAddressResponse",
          "description": "Postal address of the contact."
        }
      },
      "type": "object",
      "required": [
        "email",
        "faxNumber",
        "phoneNumber",
        "postalAddress"
      ]
    },
    "google-native:domains/v1beta1:ContactSettings": {
      "description": "Defines the contact information associated with a `Registration`. [ICANN](https://icann.org/) requires all domain names to have associated contact information. The `registrant_contact` is considered the domain's legal owner, and often the other contacts are identical.",
      "properties": {
        "adminContact": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:Contact",
          "description": "The administrative contact for the `Registration`."
        },
        "privacy": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ContactSettingsPrivacy",
          "description": "Privacy setting for the contacts associated with the `Registration`."
        },
        "registrantContact": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:Contact",
          "description": "The registrant contact for the `Registration`. *Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.* *Warning: For new `Registration`s, the registrant receives an email confirmation that they must complete within 15 days to avoid domain suspension.*"
        },
        "technicalContact": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:Contact",
          "description": "The technical contact for the `Registration`."
        }
      },
      "type": "object",
      "required": [
        "adminContact",
        "privacy",
        "registrantContact",
        "technicalContact"
      ]
    },
    "google-native:domains/v1beta1:ContactSettingsPrivacy": {
      "description": "Required. Privacy setting for the contacts associated with the `Registration`.",
      "type": "string",
      "enum": [
        {
          "name": "ContactPrivacyUnspecified",
          "description": "The contact privacy settings are undefined.",
          "value": "CONTACT_PRIVACY_UNSPECIFIED"
        },
        {
          "name": "PublicContactData",
          "description": "All the data from `ContactSettings` is publicly available. When setting this option, you must also provide a `PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT` in the `contact_notices` field of the request.",
          "value": "PUBLIC_CONTACT_DATA"
        },
        {
          "name": "PrivateContactData",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) None of the data from `ContactSettings` is publicly available. Instead, proxy contact data is published for your domain. Email sent to the proxy email address is forwarded to the registrant's email address. Cloud Domains provides this privacy proxy service at no additional cost.",
          "value": "PRIVATE_CONTACT_DATA"
        },
        {
          "name": "RedactedContactData",
          "description": "The organization name (if provided) and limited non-identifying data from `ContactSettings` is available to the public (e.g. country and state). The remaining data is marked as `REDACTED FOR PRIVACY` in the WHOIS database. The actual information redacted depends on the domain. For details, see [the registration privacy article](https://support.google.com/domains/answer/3251242).",
          "value": "REDACTED_CONTACT_DATA"
        }
      ]
    },
    "google-native:domains/v1beta1:ContactSettingsResponse": {
      "description": "Defines the contact information associated with a `Registration`. [ICANN](https://icann.org/) requires all domain names to have associated contact information. The `registrant_contact` is considered the domain's legal owner, and often the other contacts are identical.",
      "properties": {
        "adminContact": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ContactResponse",
          "description": "The administrative contact for the `Registration`."
        },
        "privacy": {
          "type": "string",
          "description": "Privacy setting for the contacts associated with the `Registration`."
        },
        "registrantContact": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ContactResponse",
          "description": "The registrant contact for the `Registration`. *Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.* *Warning: For new `Registration`s, the registrant receives an email confirmation that they must complete within 15 days to avoid domain suspension.*"
        },
        "technicalContact": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ContactResponse",
          "description": "The technical contact for the `Registration`."
        }
      },
      "type": "object",
      "required": [
        "adminContact",
        "privacy",
        "registrantContact",
        "technicalContact"
      ]
    },
    "google-native:domains/v1beta1:CustomDns": {
      "description": "Configuration for an arbitrary DNS provider.",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:DsRecord"
          },
          "description": "The list of DS records for this domain, which are used to enable DNSSEC. The domain's DNS provider can provide the values to set here. If this field is empty, DNSSEC is disabled."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format."
        }
      },
      "type": "object",
      "required": [
        "nameServers"
      ]
    },
    "google-native:domains/v1beta1:CustomDnsResponse": {
      "description": "Configuration for an arbitrary DNS provider.",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:DsRecordResponse"
          },
          "description": "The list of DS records for this domain, which are used to enable DNSSEC. The domain's DNS provider can provide the values to set here. If this field is empty, DNSSEC is disabled."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format."
        }
      },
      "type": "object",
      "required": [
        "dsRecords",
        "nameServers"
      ]
    },
    "google-native:domains/v1beta1:DnsSettings": {
      "description": "Defines the DNS configuration of a `Registration`, including name servers, DNSSEC, and glue records.",
      "properties": {
        "customDns": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:CustomDns",
          "description": "An arbitrary DNS provider identified by its name servers."
        },
        "glueRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:GlueRecord"
          },
          "description": "The list of glue records for this `Registration`. Commonly empty."
        },
        "googleDomainsDns": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:GoogleDomainsDns",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/).",
          "deprecationMessage": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/)."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1beta1:DnsSettingsResponse": {
      "description": "Defines the DNS configuration of a `Registration`, including name servers, DNSSEC, and glue records.",
      "properties": {
        "customDns": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:CustomDnsResponse",
          "description": "An arbitrary DNS provider identified by its name servers."
        },
        "glueRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:GlueRecordResponse"
          },
          "description": "The list of glue records for this `Registration`. Commonly empty."
        },
        "googleDomainsDns": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:GoogleDomainsDnsResponse",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/).",
          "deprecationMessage": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The free DNS zone provided by [Google Domains](https://domains.google/)."
        }
      },
      "type": "object",
      "required": [
        "customDns",
        "glueRecords",
        "googleDomainsDns"
      ]
    },
    "google-native:domains/v1beta1:DsRecord": {
      "description": "Defines a Delegation Signer (DS) record, which is needed to enable DNSSEC for a domain. It contains a digest (hash) of a DNSKEY record that must be present in the domain's DNS zone.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:DsRecordAlgorithm",
          "description": "The algorithm used to generate the referenced DNSKEY."
        },
        "digest": {
          "type": "string",
          "description": "The digest generated from the referenced DNSKEY."
        },
        "digestType": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:DsRecordDigestType",
          "description": "The hash function used to generate the digest of the referenced DNSKEY."
        },
        "keyTag": {
          "type": "integer",
          "description": "The key tag of the record. Must be set in range 0 -- 65535."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1beta1:DsRecordAlgorithm": {
      "description": "The algorithm used to generate the referenced DNSKEY.",
      "type": "string",
      "enum": [
        {
          "name": "AlgorithmUnspecified",
          "description": "The algorithm is unspecified.",
          "value": "ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "Rsamd5",
          "description": "RSA/MD5. Cannot be used for new deployments.",
          "value": "RSAMD5"
        },
        {
          "name": "Dh",
          "description": "Diffie-Hellman. Cannot be used for new deployments.",
          "value": "DH"
        },
        {
          "name": "Dsa",
          "description": "DSA/SHA1. Not recommended for new deployments.",
          "value": "DSA"
        },
        {
          "name": "Ecc",
          "description": "ECC. Not recommended for new deployments.",
          "value": "ECC"
        },
        {
          "name": "Rsasha1",
          "description": "RSA/SHA-1. Not recommended for new deployments.",
          "value": "RSASHA1"
        },
        {
          "name": "Dsansec3sha1",
          "description": "DSA-NSEC3-SHA1. Not recommended for new deployments.",
          "value": "DSANSEC3SHA1"
        },
        {
          "name": "Rsasha1nsec3sha1",
          "description": "RSA/SHA1-NSEC3-SHA1. Not recommended for new deployments.",
          "value": "RSASHA1NSEC3SHA1"
        },
        {
          "name": "Rsasha256",
          "description": "RSA/SHA-256.",
          "value": "RSASHA256"
        },
        {
          "name": "Rsasha512",
          "description": "RSA/SHA-512.",
          "value": "RSASHA512"
        },
        {
          "name": "Eccgost",
          "description": "GOST R 34.10-2001.",
          "value": "ECCGOST"
        },
        {
          "name": "Ecdsap256sha256",
          "description": "ECDSA Curve P-256 with SHA-256.",
          "value": "ECDSAP256SHA256"
        },
        {
          "name": "Ecdsap384sha384",
          "description": "ECDSA Curve P-384 with SHA-384.",
          "value": "ECDSAP384SHA384"
        },
        {
          "name": "Ed25519",
          "description": "Ed25519.",
          "value": "ED25519"
        },
        {
          "name": "Ed448",
          "description": "Ed448.",
          "value": "ED448"
        },
        {
          "name": "Indirect",
          "description": "Reserved for Indirect Keys. Cannot be used for new deployments.",
          "value": "INDIRECT"
        },
        {
          "name": "Privatedns",
          "description": "Private algorithm. Cannot be used for new deployments.",
          "value": "PRIVATEDNS"
        },
        {
          "name": "Privateoid",
          "description": "Private algorithm OID. Cannot be used for new deployments.",
          "value": "PRIVATEOID"
        }
      ]
    },
    "google-native:domains/v1beta1:DsRecordDigestType": {
      "description": "The hash function used to generate the digest of the referenced DNSKEY.",
      "type": "string",
      "enum": [
        {
          "name": "DigestTypeUnspecified",
          "description": "The DigestType is unspecified.",
          "value": "DIGEST_TYPE_UNSPECIFIED"
        },
        {
          "name": "Sha1",
          "description": "SHA-1. Not recommended for new deployments.",
          "value": "SHA1"
        },
        {
          "name": "Sha256",
          "description": "SHA-256.",
          "value": "SHA256"
        },
        {
          "name": "Gost3411",
          "description": "GOST R 34.11-94.",
          "value": "GOST3411"
        },
        {
          "name": "Sha384",
          "description": "SHA-384.",
          "value": "SHA384"
        }
      ]
    },
    "google-native:domains/v1beta1:DsRecordResponse": {
      "description": "Defines a Delegation Signer (DS) record, which is needed to enable DNSSEC for a domain. It contains a digest (hash) of a DNSKEY record that must be present in the domain's DNS zone.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The algorithm used to generate the referenced DNSKEY."
        },
        "digest": {
          "type": "string",
          "description": "The digest generated from the referenced DNSKEY."
        },
        "digestType": {
          "type": "string",
          "description": "The hash function used to generate the digest of the referenced DNSKEY."
        },
        "keyTag": {
          "type": "integer",
          "description": "The key tag of the record. Must be set in range 0 -- 65535."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "digest",
        "digestType",
        "keyTag"
      ]
    },
    "google-native:domains/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:domains/v1beta1:GlueRecord": {
      "description": "Defines a host on your domain that is a DNS name server for your domain and/or other domains. Glue records are a way of making the IP address of a name server known, even when it serves DNS queries for its parent domain. For example, when `ns.example.com` is a name server for `example.com`, the host `ns.example.com` must have a glue record to break the circular DNS reference.",
      "properties": {
        "hostName": {
          "type": "string",
          "description": "Domain name of the host in Punycode format."
        },
        "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`). At least one of `ipv4_address` and `ipv6_address` must be set."
        },
        "ipv6Addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of IPv6 addresses corresponding to this host in the standard hexadecimal format (e.g. `2001:db8::`). At least one of `ipv4_address` and `ipv6_address` must be set."
        }
      },
      "type": "object",
      "required": [
        "hostName"
      ]
    },
    "google-native:domains/v1beta1:GlueRecordResponse": {
      "description": "Defines a host on your domain that is a DNS name server for your domain and/or other domains. Glue records are a way of making the IP address of a name server known, even when it serves DNS queries for its parent domain. For example, when `ns.example.com` is a name server for `example.com`, the host `ns.example.com` must have a glue record to break the circular DNS reference.",
      "properties": {
        "hostName": {
          "type": "string",
          "description": "Domain name of the host in Punycode format."
        },
        "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`). At least one of `ipv4_address` and `ipv6_address` must be set."
        },
        "ipv6Addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of IPv6 addresses corresponding to this host in the standard hexadecimal format (e.g. `2001:db8::`). At least one of `ipv4_address` and `ipv6_address` must be set."
        }
      },
      "type": "object",
      "required": [
        "hostName",
        "ipv4Addresses",
        "ipv6Addresses"
      ]
    },
    "google-native:domains/v1beta1:GoogleDomainsDns": {
      "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Configuration for using the free DNS zone provided by Google Domains as a `Registration`'s `dns_provider`. You cannot configure the DNS zone itself using the API. To configure the DNS zone, go to [Google Domains](https://domains.google/).",
      "properties": {
        "dsState": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:GoogleDomainsDnsDsState",
          "description": "The state of DS records for this domain. Used to enable or disable automatic DNSSEC."
        }
      },
      "type": "object",
      "required": [
        "dsState"
      ]
    },
    "google-native:domains/v1beta1:GoogleDomainsDnsDsState": {
      "description": "Required. The state of DS records for this domain. Used to enable or disable automatic DNSSEC.",
      "type": "string",
      "enum": [
        {
          "name": "DsStateUnspecified",
          "description": "DS state is unspecified.",
          "value": "DS_STATE_UNSPECIFIED"
        },
        {
          "name": "DsRecordsUnpublished",
          "description": "DNSSEC is disabled for this domain. No DS records for this domain are published in the parent DNS zone.",
          "value": "DS_RECORDS_UNPUBLISHED"
        },
        {
          "name": "DsRecordsPublished",
          "description": "DNSSEC is enabled for this domain. Appropriate DS records for this domain are published in the parent DNS zone. This option is valid only if the DNS zone referenced in the `Registration`'s `dns_provider` field is already DNSSEC-signed.",
          "value": "DS_RECORDS_PUBLISHED"
        }
      ]
    },
    "google-native:domains/v1beta1:GoogleDomainsDnsResponse": {
      "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Configuration for using the free DNS zone provided by Google Domains as a `Registration`'s `dns_provider`. You cannot configure the DNS zone itself using the API. To configure the DNS zone, go to [Google Domains](https://domains.google/).",
      "properties": {
        "dsRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:DsRecordResponse"
          },
          "description": "The list of DS records published for this domain. The list is automatically populated when `ds_state` is `DS_RECORDS_PUBLISHED`, otherwise it remains empty."
        },
        "dsState": {
          "type": "string",
          "description": "The state of DS records for this domain. Used to enable or disable automatic DNSSEC."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format. This field is automatically populated with the name servers assigned to the Google Domains DNS zone."
        }
      },
      "type": "object",
      "required": [
        "dsRecords",
        "dsState",
        "nameServers"
      ]
    },
    "google-native:domains/v1beta1:ManagementSettings": {
      "description": "Defines renewal, billing, and transfer settings for a `Registration`.",
      "properties": {
        "preferredRenewalMethod": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ManagementSettingsPreferredRenewalMethod",
          "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "transferLockState": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ManagementSettingsTransferLockState",
          "description": "Controls whether the domain can be transferred to another registrar."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1beta1:ManagementSettingsPreferredRenewalMethod": {
      "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours.",
      "type": "string",
      "enum": [
        {
          "name": "RenewalMethodUnspecified",
          "description": "The renewal method is undefined.",
          "value": "RENEWAL_METHOD_UNSPECIFIED"
        },
        {
          "name": "AutomaticRenewal",
          "description": "The domain is automatically renewed each year.",
          "value": "AUTOMATIC_RENEWAL"
        },
        {
          "name": "ManualRenewal",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) This option was never used. Use RENEWAL_DISABLED instead.",
          "value": "MANUAL_RENEWAL"
        },
        {
          "name": "RenewalDisabled",
          "description": "The domain won't be renewed and will expire at its expiration time.",
          "value": "RENEWAL_DISABLED"
        }
      ]
    },
    "google-native:domains/v1beta1:ManagementSettingsResponse": {
      "description": "Defines renewal, billing, and transfer settings for a `Registration`.",
      "properties": {
        "preferredRenewalMethod": {
          "type": "string",
          "description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, it will be treated as if it were set to `AUTOMATIC_RENEWAL`. Can't be set to `RENEWAL_DISABLED` during resource creation and can only be updated when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "renewalMethod": {
          "type": "string",
          "description": "The actual renewal method for this `Registration`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL` the actual `renewal_method` can be equal to `RENEWAL_DISABLED` in case of e.g. problems with the Billing Account or reported domain abuse. In such cases check the `issues` field on the `Registration`. After the problem is resolved the `renewal_method` will be automatically updated to `preferred_renewal_method` in a few hours."
        },
        "transferLockState": {
          "type": "string",
          "description": "Controls whether the domain can be transferred to another registrar."
        }
      },
      "type": "object",
      "required": [
        "preferredRenewalMethod",
        "renewalMethod",
        "transferLockState"
      ]
    },
    "google-native:domains/v1beta1:ManagementSettingsTransferLockState": {
      "description": "Controls whether the domain can be transferred to another registrar.",
      "type": "string",
      "enum": [
        {
          "name": "TransferLockStateUnspecified",
          "description": "The state is unspecified.",
          "value": "TRANSFER_LOCK_STATE_UNSPECIFIED"
        },
        {
          "name": "Unlocked",
          "description": "The domain is unlocked and can be transferred to another registrar.",
          "value": "UNLOCKED"
        },
        {
          "name": "Locked",
          "description": "The domain is locked and cannot be transferred to another registrar.",
          "value": "LOCKED"
        }
      ]
    },
    "google-native:domains/v1beta1:Money": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:domains/v1beta1:PostalAddress": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "regionCode"
      ]
    },
    "google-native:domains/v1beta1:PostalAddressResponse": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "addressLines",
        "administrativeArea",
        "languageCode",
        "locality",
        "organization",
        "postalCode",
        "recipients",
        "regionCode",
        "revision",
        "sortingCode",
        "sublocality"
      ]
    },
    "google-native:domains/v1beta1:RegistrationContactNoticesItem": {
      "type": "string",
      "enum": [
        {
          "name": "ContactNoticeUnspecified",
          "description": "The notice is undefined.",
          "value": "CONTACT_NOTICE_UNSPECIFIED"
        },
        {
          "name": "PublicContactDataAcknowledgement",
          "description": "Required when setting the `privacy` field of `ContactSettings` to `PUBLIC_CONTACT_DATA`, which exposes contact data publicly.",
          "value": "PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT"
        }
      ]
    },
    "google-native:domains/v1beta1:RegistrationDomainNoticesItem": {
      "type": "string",
      "enum": [
        {
          "name": "DomainNoticeUnspecified",
          "description": "The notice is undefined.",
          "value": "DOMAIN_NOTICE_UNSPECIFIED"
        },
        {
          "name": "HstsPreloaded",
          "description": "Indicates that the domain is preloaded on the HTTP Strict Transport Security list in browsers. Serving a website on such domain requires an SSL certificate. For details, see [how to get an SSL certificate](https://support.google.com/domains/answer/7638036).",
          "value": "HSTS_PRELOADED"
        }
      ]
    },
    "google-native:essentialcontacts/v1:ContactNotificationCategorySubscriptionsItem": {
      "type": "string",
      "enum": [
        {
          "name": "NotificationCategoryUnspecified",
          "description": "Notification category is unrecognized or unspecified.",
          "value": "NOTIFICATION_CATEGORY_UNSPECIFIED"
        },
        {
          "name": "All",
          "description": "All notifications related to the resource, including notifications pertaining to categories added in the future.",
          "value": "ALL"
        },
        {
          "name": "Suspension",
          "description": "Notifications related to imminent account suspension.",
          "value": "SUSPENSION"
        },
        {
          "name": "Security",
          "description": "Notifications related to security/privacy incidents, notifications, and vulnerabilities.",
          "value": "SECURITY"
        },
        {
          "name": "Technical",
          "description": "Notifications related to technical events and issues such as outages, errors, or bugs.",
          "value": "TECHNICAL"
        },
        {
          "name": "Billing",
          "description": "Notifications related to billing and payments notifications, price updates, errors, or credits.",
          "value": "BILLING"
        },
        {
          "name": "Legal",
          "description": "Notifications related to enforcement actions, regulatory compliance, or government notices.",
          "value": "LEGAL"
        },
        {
          "name": "ProductUpdates",
          "description": "Notifications related to new versions, product terms updates, or deprecations.",
          "value": "PRODUCT_UPDATES"
        },
        {
          "name": "TechnicalIncidents",
          "description": "Child category of TECHNICAL. If assigned, technical incident notifications will go to these contacts instead of TECHNICAL.",
          "value": "TECHNICAL_INCIDENTS"
        }
      ]
    },
    "google-native:essentialcontacts/v1:ContactValidationState": {
      "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource.",
      "type": "string",
      "enum": [
        {
          "name": "ValidationStateUnspecified",
          "description": "The validation state is unknown or unspecified.",
          "value": "VALIDATION_STATE_UNSPECIFIED"
        },
        {
          "name": "Valid",
          "description": "The contact is marked as valid. This is usually done manually by the contact admin. All new contacts begin in the valid state.",
          "value": "VALID"
        },
        {
          "name": "Invalid",
          "description": "The contact is considered invalid. This may become the state if the contact's email is found to be unreachable.",
          "value": "INVALID"
        }
      ]
    },
    "google-native:essentialcontacts/v1:FolderContactNotificationCategorySubscriptionsItem": {
      "type": "string",
      "enum": [
        {
          "name": "NotificationCategoryUnspecified",
          "description": "Notification category is unrecognized or unspecified.",
          "value": "NOTIFICATION_CATEGORY_UNSPECIFIED"
        },
        {
          "name": "All",
          "description": "All notifications related to the resource, including notifications pertaining to categories added in the future.",
          "value": "ALL"
        },
        {
          "name": "Suspension",
          "description": "Notifications related to imminent account suspension.",
          "value": "SUSPENSION"
        },
        {
          "name": "Security",
          "description": "Notifications related to security/privacy incidents, notifications, and vulnerabilities.",
          "value": "SECURITY"
        },
        {
          "name": "Technical",
          "description": "Notifications related to technical events and issues such as outages, errors, or bugs.",
          "value": "TECHNICAL"
        },
        {
          "name": "Billing",
          "description": "Notifications related to billing and payments notifications, price updates, errors, or credits.",
          "value": "BILLING"
        },
        {
          "name": "Legal",
          "description": "Notifications related to enforcement actions, regulatory compliance, or government notices.",
          "value": "LEGAL"
        },
        {
          "name": "ProductUpdates",
          "description": "Notifications related to new versions, product terms updates, or deprecations.",
          "value": "PRODUCT_UPDATES"
        },
        {
          "name": "TechnicalIncidents",
          "description": "Child category of TECHNICAL. If assigned, technical incident notifications will go to these contacts instead of TECHNICAL.",
          "value": "TECHNICAL_INCIDENTS"
        }
      ]
    },
    "google-native:essentialcontacts/v1:FolderContactValidationState": {
      "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource.",
      "type": "string",
      "enum": [
        {
          "name": "ValidationStateUnspecified",
          "description": "The validation state is unknown or unspecified.",
          "value": "VALIDATION_STATE_UNSPECIFIED"
        },
        {
          "name": "Valid",
          "description": "The contact is marked as valid. This is usually done manually by the contact admin. All new contacts begin in the valid state.",
          "value": "VALID"
        },
        {
          "name": "Invalid",
          "description": "The contact is considered invalid. This may become the state if the contact's email is found to be unreachable.",
          "value": "INVALID"
        }
      ]
    },
    "google-native:essentialcontacts/v1:OrganizationContactNotificationCategorySubscriptionsItem": {
      "type": "string",
      "enum": [
        {
          "name": "NotificationCategoryUnspecified",
          "description": "Notification category is unrecognized or unspecified.",
          "value": "NOTIFICATION_CATEGORY_UNSPECIFIED"
        },
        {
          "name": "All",
          "description": "All notifications related to the resource, including notifications pertaining to categories added in the future.",
          "value": "ALL"
        },
        {
          "name": "Suspension",
          "description": "Notifications related to imminent account suspension.",
          "value": "SUSPENSION"
        },
        {
          "name": "Security",
          "description": "Notifications related to security/privacy incidents, notifications, and vulnerabilities.",
          "value": "SECURITY"
        },
        {
          "name": "Technical",
          "description": "Notifications related to technical events and issues such as outages, errors, or bugs.",
          "value": "TECHNICAL"
        },
        {
          "name": "Billing",
          "description": "Notifications related to billing and payments notifications, price updates, errors, or credits.",
          "value": "BILLING"
        },
        {
          "name": "Legal",
          "description": "Notifications related to enforcement actions, regulatory compliance, or government notices.",
          "value": "LEGAL"
        },
        {
          "name": "ProductUpdates",
          "description": "Notifications related to new versions, product terms updates, or deprecations.",
          "value": "PRODUCT_UPDATES"
        },
        {
          "name": "TechnicalIncidents",
          "description": "Child category of TECHNICAL. If assigned, technical incident notifications will go to these contacts instead of TECHNICAL.",
          "value": "TECHNICAL_INCIDENTS"
        }
      ]
    },
    "google-native:essentialcontacts/v1:OrganizationContactValidationState": {
      "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource.",
      "type": "string",
      "enum": [
        {
          "name": "ValidationStateUnspecified",
          "description": "The validation state is unknown or unspecified.",
          "value": "VALIDATION_STATE_UNSPECIFIED"
        },
        {
          "name": "Valid",
          "description": "The contact is marked as valid. This is usually done manually by the contact admin. All new contacts begin in the valid state.",
          "value": "VALID"
        },
        {
          "name": "Invalid",
          "description": "The contact is considered invalid. This may become the state if the contact's email is found to be unreachable.",
          "value": "INVALID"
        }
      ]
    },
    "google-native:eventarc/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:eventarc/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:eventarc%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:eventarc/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:eventarc/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:eventarc%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:eventarc%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:eventarc/v1:CloudRun": {
      "description": "Represents a Cloud Run destination.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. The relative path on the Cloud Run service the events should be sent to. The value must conform to the definition of a URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\"."
        },
        "region": {
          "type": "string",
          "description": "The region the Cloud Run service is deployed in."
        },
        "service": {
          "type": "string",
          "description": "The name of the Cloud Run service being addressed. See https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services. Only services located in the same project as the trigger object can be addressed."
        }
      },
      "type": "object",
      "required": [
        "region",
        "service"
      ]
    },
    "google-native:eventarc/v1:CloudRunResponse": {
      "description": "Represents a Cloud Run destination.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. The relative path on the Cloud Run service the events should be sent to. The value must conform to the definition of a URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\"."
        },
        "region": {
          "type": "string",
          "description": "The region the Cloud Run service is deployed in."
        },
        "service": {
          "type": "string",
          "description": "The name of the Cloud Run service being addressed. See https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services. Only services located in the same project as the trigger object can be addressed."
        }
      },
      "type": "object",
      "required": [
        "path",
        "region",
        "service"
      ]
    },
    "google-native:eventarc/v1:Destination": {
      "description": "Represents a target of an invocation over HTTP.",
      "properties": {
        "cloudFunction": {
          "type": "string",
          "description": "The Cloud Function resource name. Cloud Functions V1 and V2 are supported. Format: `projects/{project}/locations/{location}/functions/{function}` This is a read-only field. Creating Cloud Functions V1/V2 triggers is only supported via the Cloud Functions product. An error will be returned if the user sets this value."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:eventarc%2Fv1:CloudRun",
          "description": "Cloud Run fully-managed resource that receives the events. The resource should be in the same project as the trigger."
        },
        "gke": {
          "$ref": "#/types/google-native:eventarc%2Fv1:GKE",
          "description": "A GKE service capable of receiving events. The service should be running in the same project as the trigger."
        },
        "httpEndpoint": {
          "$ref": "#/types/google-native:eventarc%2Fv1:HttpEndpoint",
          "description": "An HTTP endpoint destination described by an URI."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:eventarc%2Fv1:NetworkConfig",
          "description": "Optional. Network config is used to configure how Eventarc resolves and connect to a destination. This should only be used with HttpEndpoint destination type."
        },
        "workflow": {
          "type": "string",
          "description": "The resource name of the Workflow whose Executions are triggered by the events. The Workflow resource should be deployed in the same project as the trigger. Format: `projects/{project}/locations/{location}/workflows/{workflow}`"
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1:DestinationResponse": {
      "description": "Represents a target of an invocation over HTTP.",
      "properties": {
        "cloudFunction": {
          "type": "string",
          "description": "The Cloud Function resource name. Cloud Functions V1 and V2 are supported. Format: `projects/{project}/locations/{location}/functions/{function}` This is a read-only field. Creating Cloud Functions V1/V2 triggers is only supported via the Cloud Functions product. An error will be returned if the user sets this value."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:eventarc%2Fv1:CloudRunResponse",
          "description": "Cloud Run fully-managed resource that receives the events. The resource should be in the same project as the trigger."
        },
        "gke": {
          "$ref": "#/types/google-native:eventarc%2Fv1:GKEResponse",
          "description": "A GKE service capable of receiving events. The service should be running in the same project as the trigger."
        },
        "httpEndpoint": {
          "$ref": "#/types/google-native:eventarc%2Fv1:HttpEndpointResponse",
          "description": "An HTTP endpoint destination described by an URI."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:eventarc%2Fv1:NetworkConfigResponse",
          "description": "Optional. Network config is used to configure how Eventarc resolves and connect to a destination. This should only be used with HttpEndpoint destination type."
        },
        "workflow": {
          "type": "string",
          "description": "The resource name of the Workflow whose Executions are triggered by the events. The Workflow resource should be deployed in the same project as the trigger. Format: `projects/{project}/locations/{location}/workflows/{workflow}`"
        }
      },
      "type": "object",
      "required": [
        "cloudFunction",
        "cloudRun",
        "gke",
        "httpEndpoint",
        "networkConfig",
        "workflow"
      ]
    },
    "google-native:eventarc/v1:EventFilter": {
      "description": "Filters events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute. Currently, only a subset of attributes are supported for filtering. You can [retrieve a specific provider's supported event types](/eventarc/docs/list-providers#describe-provider). All triggers MUST provide a filter for the 'type' attribute."
        },
        "operator": {
          "type": "string",
          "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The allowed values are `path_pattern` and `match-path-pattern`. `path_pattern` is only allowed for GCFv1 triggers."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "value"
      ]
    },
    "google-native:eventarc/v1:EventFilterResponse": {
      "description": "Filters events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute. Currently, only a subset of attributes are supported for filtering. You can [retrieve a specific provider's supported event types](/eventarc/docs/list-providers#describe-provider). All triggers MUST provide a filter for the 'type' attribute."
        },
        "operator": {
          "type": "string",
          "description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The allowed values are `path_pattern` and `match-path-pattern`. `path_pattern` is only allowed for GCFv1 triggers."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "operator",
        "value"
      ]
    },
    "google-native:eventarc/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:eventarc/v1:GKE": {
      "description": "Represents a GKE destination.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "The name of the cluster the GKE service is running in. The cluster must be running in the same project as the trigger being created."
        },
        "location": {
          "type": "string",
          "description": "The name of the Google Compute Engine in which the cluster resides, which can either be compute zone (for example, us-central1-a) for the zonal clusters or region (for example, us-central1) for regional clusters."
        },
        "namespace": {
          "type": "string",
          "description": "The namespace the GKE service is running in."
        },
        "path": {
          "type": "string",
          "description": "Optional. The relative path on the GKE service the events should be sent to. The value must conform to the definition of a URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\"."
        },
        "service": {
          "type": "string",
          "description": "Name of the GKE service."
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "location",
        "namespace",
        "service"
      ]
    },
    "google-native:eventarc/v1:GKEResponse": {
      "description": "Represents a GKE destination.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "The name of the cluster the GKE service is running in. The cluster must be running in the same project as the trigger being created."
        },
        "location": {
          "type": "string",
          "description": "The name of the Google Compute Engine in which the cluster resides, which can either be compute zone (for example, us-central1-a) for the zonal clusters or region (for example, us-central1) for regional clusters."
        },
        "namespace": {
          "type": "string",
          "description": "The namespace the GKE service is running in."
        },
        "path": {
          "type": "string",
          "description": "Optional. The relative path on the GKE service the events should be sent to. The value must conform to the definition of a URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\"."
        },
        "service": {
          "type": "string",
          "description": "Name of the GKE service."
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "location",
        "namespace",
        "path",
        "service"
      ]
    },
    "google-native:eventarc/v1:HttpEndpoint": {
      "description": "Represents a HTTP endpoint destination.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The URI of the HTTP enpdoint. The value must be a RFC2396 URI string. Examples: `http://10.10.10.8:80/route`, `http://svc.us-central1.p.local:8080/`. Only HTTP and HTTPS protocols are supported. The host can be either a static IP addressable from the VPC specified by the network config, or an internal DNS hostname of the service resolvable via Cloud DNS."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:eventarc/v1:HttpEndpointResponse": {
      "description": "Represents a HTTP endpoint destination.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The URI of the HTTP enpdoint. The value must be a RFC2396 URI string. Examples: `http://10.10.10.8:80/route`, `http://svc.us-central1.p.local:8080/`. Only HTTP and HTTPS protocols are supported. The host can be either a static IP addressable from the VPC specified by the network config, or an internal DNS hostname of the service resolvable via Cloud DNS."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:eventarc/v1:NetworkConfig": {
      "description": "Represents a network config to be used for destination resolution and connectivity.",
      "properties": {
        "networkAttachment": {
          "type": "string",
          "description": "Name of the NetworkAttachment that allows access to the destination VPC. Format: `projects/{PROJECT_ID}/regions/{REGION}/networkAttachments/{NETWORK_ATTACHMENT_NAME}`"
        }
      },
      "type": "object",
      "required": [
        "networkAttachment"
      ]
    },
    "google-native:eventarc/v1:NetworkConfigResponse": {
      "description": "Represents a network config to be used for destination resolution and connectivity.",
      "properties": {
        "networkAttachment": {
          "type": "string",
          "description": "Name of the NetworkAttachment that allows access to the destination VPC. Format: `projects/{PROJECT_ID}/regions/{REGION}/networkAttachments/{NETWORK_ATTACHMENT_NAME}`"
        }
      },
      "type": "object",
      "required": [
        "networkAttachment"
      ]
    },
    "google-native:eventarc/v1:Pubsub": {
      "description": "Represents a Pub/Sub transport.",
      "properties": {
        "topic": {
          "type": "string",
          "description": "Optional. The name of the Pub/Sub topic created and managed by Eventarc as a transport for the event delivery. Format: `projects/{PROJECT_ID}/topics/{TOPIC_NAME}`. You can set an existing topic for triggers of the type `google.cloud.pubsub.topic.v1.messagePublished`. The topic you provide here is not deleted by Eventarc at trigger deletion."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1:PubsubResponse": {
      "description": "Represents a Pub/Sub transport.",
      "properties": {
        "subscription": {
          "type": "string",
          "description": "The name of the Pub/Sub subscription created and managed by Eventarc as a transport for the event delivery. Format: `projects/{PROJECT_ID}/subscriptions/{SUBSCRIPTION_NAME}`."
        },
        "topic": {
          "type": "string",
          "description": "Optional. The name of the Pub/Sub topic created and managed by Eventarc as a transport for the event delivery. Format: `projects/{PROJECT_ID}/topics/{TOPIC_NAME}`. You can set an existing topic for triggers of the type `google.cloud.pubsub.topic.v1.messagePublished`. The topic you provide here is not deleted by Eventarc at trigger deletion."
        }
      },
      "type": "object",
      "required": [
        "subscription",
        "topic"
      ]
    },
    "google-native:eventarc/v1:Transport": {
      "description": "Represents the transport intermediaries created for the trigger to deliver events.",
      "properties": {
        "pubsub": {
          "$ref": "#/types/google-native:eventarc%2Fv1:Pubsub",
          "description": "The Pub/Sub topic and subscription used by Eventarc as a transport intermediary."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1:TransportResponse": {
      "description": "Represents the transport intermediaries created for the trigger to deliver events.",
      "properties": {
        "pubsub": {
          "$ref": "#/types/google-native:eventarc%2Fv1:PubsubResponse",
          "description": "The Pub/Sub topic and subscription used by Eventarc as a transport intermediary."
        }
      },
      "type": "object",
      "required": [
        "pubsub"
      ]
    },
    "google-native:eventarc/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:eventarc/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:eventarc/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:eventarc/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:eventarc/v1beta1:CloudRunService": {
      "description": "Represents a Cloud Run service destination.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. The relative path on the Cloud Run service the events should be sent to. The value must conform to the definition of URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\"."
        },
        "region": {
          "type": "string",
          "description": "The region the Cloud Run service is deployed in."
        },
        "service": {
          "type": "string",
          "description": "The name of the Cloud run service being addressed. See https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services. Only services located in the same project of the trigger object can be addressed."
        }
      },
      "type": "object",
      "required": [
        "region",
        "service"
      ]
    },
    "google-native:eventarc/v1beta1:CloudRunServiceResponse": {
      "description": "Represents a Cloud Run service destination.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. The relative path on the Cloud Run service the events should be sent to. The value must conform to the definition of URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\"."
        },
        "region": {
          "type": "string",
          "description": "The region the Cloud Run service is deployed in."
        },
        "service": {
          "type": "string",
          "description": "The name of the Cloud run service being addressed. See https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services. Only services located in the same project of the trigger object can be addressed."
        }
      },
      "type": "object",
      "required": [
        "path",
        "region",
        "service"
      ]
    },
    "google-native:eventarc/v1beta1:Destination": {
      "description": "Represents a target of an invocation over HTTP.",
      "properties": {
        "cloudRunService": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:CloudRunService",
          "description": "Cloud Run fully-managed service that receives the events. The service should be running in the same project as the trigger."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1beta1:DestinationResponse": {
      "description": "Represents a target of an invocation over HTTP.",
      "properties": {
        "cloudRunService": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:CloudRunServiceResponse",
          "description": "Cloud Run fully-managed service that receives the events. The service should be running in the same project as the trigger."
        }
      },
      "type": "object",
      "required": [
        "cloudRunService"
      ]
    },
    "google-native:eventarc/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:eventarc/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:eventarc/v1beta1:MatchingCriteria": {
      "description": "Matches events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute. Currently, only a subset of attributes can be specified. All triggers MUST provide a matching criteria for the 'type' attribute."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "value"
      ]
    },
    "google-native:eventarc/v1beta1:MatchingCriteriaResponse": {
      "description": "Matches events based on exact matches on the CloudEvents attributes.",
      "properties": {
        "attribute": {
          "type": "string",
          "description": "The name of a CloudEvents attribute. Currently, only a subset of attributes can be specified. All triggers MUST provide a matching criteria for the 'type' attribute."
        },
        "value": {
          "type": "string",
          "description": "The value for the attribute."
        }
      },
      "type": "object",
      "required": [
        "attribute",
        "value"
      ]
    },
    "google-native:eventarc/v1beta1:PubsubResponse": {
      "description": "Represents a Pub/Sub transport.",
      "properties": {
        "subscription": {
          "type": "string",
          "description": "The name of the Pub/Sub subscription created and managed by Eventarc system as a transport for the event delivery. Format: `projects/{PROJECT_ID}/subscriptions/{SUBSCRIPTION_NAME}`."
        },
        "topic": {
          "type": "string",
          "description": "Optional. The name of the Pub/Sub topic created and managed by Eventarc system as a transport for the event delivery. Format: `projects/{PROJECT_ID}/topics/{TOPIC_NAME}`. You may set an existing topic for triggers of the type `google.cloud.pubsub.topic.v1.messagePublished` only. The topic you provide here will not be deleted by Eventarc at trigger deletion."
        }
      },
      "type": "object",
      "required": [
        "subscription",
        "topic"
      ]
    },
    "google-native:eventarc/v1beta1:TransportResponse": {
      "description": "Represents the transport intermediaries created for the trigger in order to deliver events.",
      "properties": {
        "pubsub": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:PubsubResponse",
          "description": "The Pub/Sub topic and subscription used by Eventarc as delivery intermediary."
        }
      },
      "type": "object",
      "required": [
        "pubsub"
      ]
    },
    "google-native:file/v1:FileShareConfig": {
      "description": "File share configuration for the instance.",
      "properties": {
        "capacityGb": {
          "type": "string",
          "description": "File share capacity in gigabytes (GB). Filestore defines 1 GB as 1024^3 bytes."
        },
        "name": {
          "type": "string",
          "description": "The name of the file share (must be 16 characters or less)."
        },
        "nfsExportOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1:NfsExportOptions"
          },
          "description": "Nfs Export Options. There is a limit of 10 export options per file share."
        },
        "sourceBackup": {
          "type": "string",
          "description": "The resource name of the backup, in the format `projects/{project_number}/locations/{location_id}/backups/{backup_id}`, that this file share has been restored from."
        }
      },
      "type": "object"
    },
    "google-native:file/v1:FileShareConfigResponse": {
      "description": "File share configuration for the instance.",
      "properties": {
        "capacityGb": {
          "type": "string",
          "description": "File share capacity in gigabytes (GB). Filestore defines 1 GB as 1024^3 bytes."
        },
        "name": {
          "type": "string",
          "description": "The name of the file share (must be 16 characters or less)."
        },
        "nfsExportOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1:NfsExportOptionsResponse"
          },
          "description": "Nfs Export Options. There is a limit of 10 export options per file share."
        },
        "sourceBackup": {
          "type": "string",
          "description": "The resource name of the backup, in the format `projects/{project_number}/locations/{location_id}/backups/{backup_id}`, that this file share has been restored from."
        }
      },
      "type": "object",
      "required": [
        "capacityGb",
        "name",
        "nfsExportOptions",
        "sourceBackup"
      ]
    },
    "google-native:file/v1:InstanceTier": {
      "description": "The service tier of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Not set.",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "STANDARD tier. BASIC_HDD is the preferred term for this tier.",
          "value": "STANDARD"
        },
        {
          "name": "Premium",
          "description": "PREMIUM tier. BASIC_SSD is the preferred term for this tier.",
          "value": "PREMIUM"
        },
        {
          "name": "BasicHdd",
          "description": "BASIC instances offer a maximum capacity of 63.9 TB. BASIC_HDD is an alias for STANDARD Tier, offering economical performance backed by HDD.",
          "value": "BASIC_HDD"
        },
        {
          "name": "BasicSsd",
          "description": "BASIC instances offer a maximum capacity of 63.9 TB. BASIC_SSD is an alias for PREMIUM Tier, and offers improved performance backed by SSD.",
          "value": "BASIC_SSD"
        },
        {
          "name": "HighScaleSsd",
          "description": "HIGH_SCALE instances offer expanded capacity and performance scaling capabilities.",
          "value": "HIGH_SCALE_SSD"
        },
        {
          "name": "Enterprise",
          "description": "ENTERPRISE instances offer the features and availability needed for mission-critical workloads.",
          "value": "ENTERPRISE"
        },
        {
          "name": "Zonal",
          "description": "ZONAL instances offer expanded capacity and performance scaling capabilities.",
          "value": "ZONAL"
        },
        {
          "name": "Regional",
          "description": "REGIONAL instances offer the features and availability needed for mission-critical workloads.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:file/v1:NetworkConfig": {
      "description": "Network configuration for the instance.",
      "properties": {
        "connectMode": {
          "$ref": "#/types/google-native:file%2Fv1:NetworkConfigConnectMode",
          "description": "The network connect mode of the Filestore instance. If not provided, the connect mode defaults to DIRECT_PEERING."
        },
        "modes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1:NetworkConfigModesItem"
          },
          "description": "Internet protocol versions for which the instance has IP addresses assigned. For this version, only MODE_IPV4 is supported."
        },
        "network": {
          "type": "string",
          "description": "The name of the Google Compute Engine [VPC network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional, reserved_ip_range can have one of the following two types of values. * CIDR range value when using DIRECT_PEERING connect mode. * [Allocated IP address range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address) when using PRIVATE_SERVICE_ACCESS connect mode. When the name of an allocated IP address range is specified, it must be one of the ranges associated with the private service access connection. When specified as a direct CIDR value, it must be a /29 CIDR block for Basic tier, a /24 CIDR block for High Scale tier, or a /26 CIDR block for Enterprise tier in one of the [internal IP address ranges](https://www.arin.net/reference/research/statistics/address_filters/) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29, 192.168.0.0/24 or 192.168.0.0/26, respectively. The range you specify can't overlap with either existing subnets or assigned IP address ranges for other Filestore instances in the selected VPC network."
        }
      },
      "type": "object"
    },
    "google-native:file/v1:NetworkConfigConnectMode": {
      "description": "The network connect mode of the Filestore instance. If not provided, the connect mode defaults to DIRECT_PEERING.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectModeUnspecified",
          "description": "Not set.",
          "value": "CONNECT_MODE_UNSPECIFIED"
        },
        {
          "name": "DirectPeering",
          "description": "Connect via direct peering to the Filestore service.",
          "value": "DIRECT_PEERING"
        },
        {
          "name": "PrivateServiceAccess",
          "description": "Connect to your Filestore instance using Private Service Access. Private services access provides an IP address range for multiple Google Cloud services, including Filestore.",
          "value": "PRIVATE_SERVICE_ACCESS"
        }
      ]
    },
    "google-native:file/v1:NetworkConfigModesItem": {
      "type": "string",
      "enum": [
        {
          "name": "AddressModeUnspecified",
          "description": "Internet protocol not set.",
          "value": "ADDRESS_MODE_UNSPECIFIED"
        },
        {
          "name": "ModeIpv4",
          "description": "Use the IPv4 internet protocol.",
          "value": "MODE_IPV4"
        }
      ]
    },
    "google-native:file/v1:NetworkConfigResponse": {
      "description": "Network configuration for the instance.",
      "properties": {
        "connectMode": {
          "type": "string",
          "description": "The network connect mode of the Filestore instance. If not provided, the connect mode defaults to DIRECT_PEERING."
        },
        "ipAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IPv4 addresses in the format `{octet1}.{octet2}.{octet3}.{octet4}` or IPv6 addresses in the format `{block1}:{block2}:{block3}:{block4}:{block5}:{block6}:{block7}:{block8}`."
        },
        "modes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Internet protocol versions for which the instance has IP addresses assigned. For this version, only MODE_IPV4 is supported."
        },
        "network": {
          "type": "string",
          "description": "The name of the Google Compute Engine [VPC network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional, reserved_ip_range can have one of the following two types of values. * CIDR range value when using DIRECT_PEERING connect mode. * [Allocated IP address range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address) when using PRIVATE_SERVICE_ACCESS connect mode. When the name of an allocated IP address range is specified, it must be one of the ranges associated with the private service access connection. When specified as a direct CIDR value, it must be a /29 CIDR block for Basic tier, a /24 CIDR block for High Scale tier, or a /26 CIDR block for Enterprise tier in one of the [internal IP address ranges](https://www.arin.net/reference/research/statistics/address_filters/) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29, 192.168.0.0/24 or 192.168.0.0/26, respectively. The range you specify can't overlap with either existing subnets or assigned IP address ranges for other Filestore instances in the selected VPC network."
        }
      },
      "type": "object",
      "required": [
        "connectMode",
        "ipAddresses",
        "modes",
        "network",
        "reservedIpRange"
      ]
    },
    "google-native:file/v1:NfsExportOptions": {
      "description": "NFS export options specifications.",
      "properties": {
        "accessMode": {
          "$ref": "#/types/google-native:file%2Fv1:NfsExportOptionsAccessMode",
          "description": "Either READ_ONLY, for allowing only read requests on the exported directory, or READ_WRITE, for allowing both read and write requests. The default is READ_WRITE."
        },
        "anonGid": {
          "type": "string",
          "description": "An integer representing the anonymous group id with a default value of 65534. Anon_gid may only be set with squash_mode of ROOT_SQUASH. An error will be returned if this field is specified for other squash_mode settings."
        },
        "anonUid": {
          "type": "string",
          "description": "An integer representing the anonymous user id with a default value of 65534. Anon_uid may only be set with squash_mode of ROOT_SQUASH. An error will be returned if this field is specified for other squash_mode settings."
        },
        "ipRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of either an IPv4 addresses in the format `{octet1}.{octet2}.{octet3}.{octet4}` or CIDR ranges in the format `{octet1}.{octet2}.{octet3}.{octet4}/{mask size}` which may mount the file share. Overlapping IP ranges are not allowed, both within and across NfsExportOptions. An error will be returned. The limit is 64 IP ranges/addresses for each FileShareConfig among all NfsExportOptions."
        },
        "squashMode": {
          "$ref": "#/types/google-native:file%2Fv1:NfsExportOptionsSquashMode",
          "description": "Either NO_ROOT_SQUASH, for allowing root access on the exported directory, or ROOT_SQUASH, for not allowing root access. The default is NO_ROOT_SQUASH."
        }
      },
      "type": "object"
    },
    "google-native:file/v1:NfsExportOptionsAccessMode": {
      "description": "Either READ_ONLY, for allowing only read requests on the exported directory, or READ_WRITE, for allowing both read and write requests. The default is READ_WRITE.",
      "type": "string",
      "enum": [
        {
          "name": "AccessModeUnspecified",
          "description": "AccessMode not set.",
          "value": "ACCESS_MODE_UNSPECIFIED"
        },
        {
          "name": "ReadOnly",
          "description": "The client can only read the file share.",
          "value": "READ_ONLY"
        },
        {
          "name": "ReadWrite",
          "description": "The client can read and write the file share (default).",
          "value": "READ_WRITE"
        }
      ]
    },
    "google-native:file/v1:NfsExportOptionsResponse": {
      "description": "NFS export options specifications.",
      "properties": {
        "accessMode": {
          "type": "string",
          "description": "Either READ_ONLY, for allowing only read requests on the exported directory, or READ_WRITE, for allowing both read and write requests. The default is READ_WRITE."
        },
        "anonGid": {
          "type": "string",
          "description": "An integer representing the anonymous group id with a default value of 65534. Anon_gid may only be set with squash_mode of ROOT_SQUASH. An error will be returned if this field is specified for other squash_mode settings."
        },
        "anonUid": {
          "type": "string",
          "description": "An integer representing the anonymous user id with a default value of 65534. Anon_uid may only be set with squash_mode of ROOT_SQUASH. An error will be returned if this field is specified for other squash_mode settings."
        },
        "ipRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of either an IPv4 addresses in the format `{octet1}.{octet2}.{octet3}.{octet4}` or CIDR ranges in the format `{octet1}.{octet2}.{octet3}.{octet4}/{mask size}` which may mount the file share. Overlapping IP ranges are not allowed, both within and across NfsExportOptions. An error will be returned. The limit is 64 IP ranges/addresses for each FileShareConfig among all NfsExportOptions."
        },
        "squashMode": {
          "type": "string",
          "description": "Either NO_ROOT_SQUASH, for allowing root access on the exported directory, or ROOT_SQUASH, for not allowing root access. The default is NO_ROOT_SQUASH."
        }
      },
      "type": "object",
      "required": [
        "accessMode",
        "anonGid",
        "anonUid",
        "ipRanges",
        "squashMode"
      ]
    },
    "google-native:file/v1:NfsExportOptionsSquashMode": {
      "description": "Either NO_ROOT_SQUASH, for allowing root access on the exported directory, or ROOT_SQUASH, for not allowing root access. The default is NO_ROOT_SQUASH.",
      "type": "string",
      "enum": [
        {
          "name": "SquashModeUnspecified",
          "description": "SquashMode not set.",
          "value": "SQUASH_MODE_UNSPECIFIED"
        },
        {
          "name": "NoRootSquash",
          "description": "The Root user has root access to the file share (default).",
          "value": "NO_ROOT_SQUASH"
        },
        {
          "name": "RootSquash",
          "description": "The Root user has squashed access to the anonymous uid/gid.",
          "value": "ROOT_SQUASH"
        }
      ]
    },
    "google-native:file/v1beta1:DirectoryServicesConfig": {
      "description": "Directory Services configuration for Kerberos-based authentication.",
      "properties": {
        "managedActiveDirectory": {
          "$ref": "#/types/google-native:file%2Fv1beta1:ManagedActiveDirectoryConfig",
          "description": "Configuration for Managed Service for Microsoft Active Directory."
        }
      },
      "type": "object"
    },
    "google-native:file/v1beta1:DirectoryServicesConfigResponse": {
      "description": "Directory Services configuration for Kerberos-based authentication.",
      "properties": {
        "managedActiveDirectory": {
          "$ref": "#/types/google-native:file%2Fv1beta1:ManagedActiveDirectoryConfigResponse",
          "description": "Configuration for Managed Service for Microsoft Active Directory."
        }
      },
      "type": "object",
      "required": [
        "managedActiveDirectory"
      ]
    },
    "google-native:file/v1beta1:FileShareConfig": {
      "description": "File share configuration for the instance.",
      "properties": {
        "capacityGb": {
          "type": "string",
          "description": "File share capacity in gigabytes (GB). Filestore defines 1 GB as 1024^3 bytes."
        },
        "name": {
          "type": "string",
          "description": "The name of the file share (must be 32 characters or less for Enterprise and High Scale SSD tiers and 16 characters or less for all other tiers)."
        },
        "nfsExportOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:NfsExportOptions"
          },
          "description": "Nfs Export Options. There is a limit of 10 export options per file share."
        },
        "sourceBackup": {
          "type": "string",
          "description": "The resource name of the backup, in the format `projects/{project_id}/locations/{location_id}/backups/{backup_id}`, that this file share has been restored from."
        }
      },
      "type": "object"
    },
    "google-native:file/v1beta1:FileShareConfigResponse": {
      "description": "File share configuration for the instance.",
      "properties": {
        "capacityGb": {
          "type": "string",
          "description": "File share capacity in gigabytes (GB). Filestore defines 1 GB as 1024^3 bytes."
        },
        "name": {
          "type": "string",
          "description": "The name of the file share (must be 32 characters or less for Enterprise and High Scale SSD tiers and 16 characters or less for all other tiers)."
        },
        "nfsExportOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:NfsExportOptionsResponse"
          },
          "description": "Nfs Export Options. There is a limit of 10 export options per file share."
        },
        "sourceBackup": {
          "type": "string",
          "description": "The resource name of the backup, in the format `projects/{project_id}/locations/{location_id}/backups/{backup_id}`, that this file share has been restored from."
        }
      },
      "type": "object",
      "required": [
        "capacityGb",
        "name",
        "nfsExportOptions",
        "sourceBackup"
      ]
    },
    "google-native:file/v1beta1:InstanceProtocol": {
      "description": "Immutable. The protocol indicates the access protocol for all shares in the instance. This field is immutable and it cannot be changed after the instance has been created. Default value: `NFS_V3`.",
      "type": "string",
      "enum": [
        {
          "name": "FileProtocolUnspecified",
          "description": "FILE_PROTOCOL_UNSPECIFIED serves a \"not set\" default value when a FileProtocol is a separate field in a message.",
          "value": "FILE_PROTOCOL_UNSPECIFIED"
        },
        {
          "name": "NfsV3",
          "description": "NFS 3.0.",
          "value": "NFS_V3"
        },
        {
          "name": "NfsV41",
          "description": "NFS 4.1.",
          "value": "NFS_V4_1"
        }
      ]
    },
    "google-native:file/v1beta1:InstanceTier": {
      "description": "The service tier of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Not set.",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "STANDARD tier. BASIC_HDD is the preferred term for this tier.",
          "value": "STANDARD"
        },
        {
          "name": "Premium",
          "description": "PREMIUM tier. BASIC_SSD is the preferred term for this tier.",
          "value": "PREMIUM"
        },
        {
          "name": "BasicHdd",
          "description": "BASIC instances offer a maximum capacity of 63.9 TB. BASIC_HDD is an alias for STANDARD Tier, offering economical performance backed by HDD.",
          "value": "BASIC_HDD"
        },
        {
          "name": "BasicSsd",
          "description": "BASIC instances offer a maximum capacity of 63.9 TB. BASIC_SSD is an alias for PREMIUM Tier, and offers improved performance backed by SSD.",
          "value": "BASIC_SSD"
        },
        {
          "name": "HighScaleSsd",
          "description": "HIGH_SCALE instances offer expanded capacity and performance scaling capabilities.",
          "value": "HIGH_SCALE_SSD"
        },
        {
          "name": "Enterprise",
          "description": "ENTERPRISE instances offer the features and availability needed for mission-critical workloads.",
          "value": "ENTERPRISE"
        },
        {
          "name": "Zonal",
          "description": "ZONAL instances offer expanded capacity and performance scaling capabilities.",
          "value": "ZONAL"
        },
        {
          "name": "Regional",
          "description": "REGIONAL instances offer the features and availability needed for mission-critical workloads.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:file/v1beta1:ManagedActiveDirectoryConfig": {
      "description": "ManagedActiveDirectoryConfig contains all the parameters for connecting to Managed Active Directory.",
      "properties": {
        "computer": {
          "type": "string",
          "description": "The computer name is used as a prefix to the mount remote target. Example: if the computer_name is `my-computer`, the mount command will look like: `$mount -o vers=4,sec=krb5 my-computer.filestore.:`."
        },
        "domain": {
          "type": "string",
          "description": "Fully qualified domain name."
        }
      },
      "type": "object"
    },
    "google-native:file/v1beta1:ManagedActiveDirectoryConfigResponse": {
      "description": "ManagedActiveDirectoryConfig contains all the parameters for connecting to Managed Active Directory.",
      "properties": {
        "computer": {
          "type": "string",
          "description": "The computer name is used as a prefix to the mount remote target. Example: if the computer_name is `my-computer`, the mount command will look like: `$mount -o vers=4,sec=krb5 my-computer.filestore.:`."
        },
        "domain": {
          "type": "string",
          "description": "Fully qualified domain name."
        }
      },
      "type": "object",
      "required": [
        "computer",
        "domain"
      ]
    },
    "google-native:file/v1beta1:NetworkConfig": {
      "description": "Network configuration for the instance.",
      "properties": {
        "connectMode": {
          "$ref": "#/types/google-native:file%2Fv1beta1:NetworkConfigConnectMode",
          "description": "The network connect mode of the Filestore instance. If not provided, the connect mode defaults to DIRECT_PEERING."
        },
        "modes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:NetworkConfigModesItem"
          },
          "description": "Internet protocol versions for which the instance has IP addresses assigned. For this version, only MODE_IPV4 is supported."
        },
        "network": {
          "type": "string",
          "description": "The name of the Google Compute Engine [VPC network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional, reserved_ip_range can have one of the following two types of values. * CIDR range value when using DIRECT_PEERING connect mode. * [Allocated IP address range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address) when using PRIVATE_SERVICE_ACCESS connect mode. When the name of an allocated IP address range is specified, it must be one of the ranges associated with the private service access connection. When specified as a direct CIDR value, it must be a /29 CIDR block for Basic tier, a /24 CIDR block for High Scale tier, or a /26 CIDR block for Enterprise tier in one of the [internal IP address ranges](https://www.arin.net/reference/research/statistics/address_filters/) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29, 192.168.0.0/24, or 192.168.0.0/26, respectively. The range you specify can't overlap with either existing subnets or assigned IP address ranges for other Filestore instances in the selected VPC network."
        }
      },
      "type": "object"
    },
    "google-native:file/v1beta1:NetworkConfigConnectMode": {
      "description": "The network connect mode of the Filestore instance. If not provided, the connect mode defaults to DIRECT_PEERING.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectModeUnspecified",
          "description": "ConnectMode not set.",
          "value": "CONNECT_MODE_UNSPECIFIED"
        },
        {
          "name": "DirectPeering",
          "description": "Connect via direct peering to the Filestore service.",
          "value": "DIRECT_PEERING"
        },
        {
          "name": "PrivateServiceAccess",
          "description": "Connect to your Filestore instance using Private Service Access. Private services access provides an IP address range for multiple Google Cloud services, including Filestore.",
          "value": "PRIVATE_SERVICE_ACCESS"
        }
      ]
    },
    "google-native:file/v1beta1:NetworkConfigModesItem": {
      "type": "string",
      "enum": [
        {
          "name": "AddressModeUnspecified",
          "description": "Internet protocol not set.",
          "value": "ADDRESS_MODE_UNSPECIFIED"
        },
        {
          "name": "ModeIpv4",
          "description": "Use the IPv4 internet protocol.",
          "value": "MODE_IPV4"
        }
      ]
    },
    "google-native:file/v1beta1:NetworkConfigResponse": {
      "description": "Network configuration for the instance.",
      "properties": {
        "connectMode": {
          "type": "string",
          "description": "The network connect mode of the Filestore instance. If not provided, the connect mode defaults to DIRECT_PEERING."
        },
        "ipAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IPv4 addresses in the format `{octet1}.{octet2}.{octet3}.{octet4}` or IPv6 addresses in the format `{block1}:{block2}:{block3}:{block4}:{block5}:{block6}:{block7}:{block8}`."
        },
        "modes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Internet protocol versions for which the instance has IP addresses assigned. For this version, only MODE_IPV4 is supported."
        },
        "network": {
          "type": "string",
          "description": "The name of the Google Compute Engine [VPC network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional, reserved_ip_range can have one of the following two types of values. * CIDR range value when using DIRECT_PEERING connect mode. * [Allocated IP address range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address) when using PRIVATE_SERVICE_ACCESS connect mode. When the name of an allocated IP address range is specified, it must be one of the ranges associated with the private service access connection. When specified as a direct CIDR value, it must be a /29 CIDR block for Basic tier, a /24 CIDR block for High Scale tier, or a /26 CIDR block for Enterprise tier in one of the [internal IP address ranges](https://www.arin.net/reference/research/statistics/address_filters/) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29, 192.168.0.0/24, or 192.168.0.0/26, respectively. The range you specify can't overlap with either existing subnets or assigned IP address ranges for other Filestore instances in the selected VPC network."
        }
      },
      "type": "object",
      "required": [
        "connectMode",
        "ipAddresses",
        "modes",
        "network",
        "reservedIpRange"
      ]
    },
    "google-native:file/v1beta1:NfsExportOptions": {
      "description": "NFS export options specifications.",
      "properties": {
        "accessMode": {
          "$ref": "#/types/google-native:file%2Fv1beta1:NfsExportOptionsAccessMode",
          "description": "Either READ_ONLY, for allowing only read requests on the exported directory, or READ_WRITE, for allowing both read and write requests. The default is READ_WRITE."
        },
        "anonGid": {
          "type": "string",
          "description": "An integer representing the anonymous group id with a default value of 65534. Anon_gid may only be set with squash_mode of ROOT_SQUASH. An error will be returned if this field is specified for other squash_mode settings."
        },
        "anonUid": {
          "type": "string",
          "description": "An integer representing the anonymous user id with a default value of 65534. Anon_uid may only be set with squash_mode of ROOT_SQUASH. An error will be returned if this field is specified for other squash_mode settings."
        },
        "ipRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of either an IPv4 addresses in the format `{octet1}.{octet2}.{octet3}.{octet4}` or CIDR ranges in the format `{octet1}.{octet2}.{octet3}.{octet4}/{mask size}` which may mount the file share. Overlapping IP ranges are not allowed, both within and across NfsExportOptions. An error will be returned. The limit is 64 IP ranges/addresses for each FileShareConfig among all NfsExportOptions."
        },
        "securityFlavors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:NfsExportOptionsSecurityFlavorsItem"
          },
          "description": "The security flavors allowed for mount operations. The default is AUTH_SYS."
        },
        "squashMode": {
          "$ref": "#/types/google-native:file%2Fv1beta1:NfsExportOptionsSquashMode",
          "description": "Either NO_ROOT_SQUASH, for allowing root access on the exported directory, or ROOT_SQUASH, for not allowing root access. The default is NO_ROOT_SQUASH."
        }
      },
      "type": "object"
    },
    "google-native:file/v1beta1:NfsExportOptionsAccessMode": {
      "description": "Either READ_ONLY, for allowing only read requests on the exported directory, or READ_WRITE, for allowing both read and write requests. The default is READ_WRITE.",
      "type": "string",
      "enum": [
        {
          "name": "AccessModeUnspecified",
          "description": "AccessMode not set.",
          "value": "ACCESS_MODE_UNSPECIFIED"
        },
        {
          "name": "ReadOnly",
          "description": "The client can only read the file share.",
          "value": "READ_ONLY"
        },
        {
          "name": "ReadWrite",
          "description": "The client can read and write the file share (default).",
          "value": "READ_WRITE"
        }
      ]
    },
    "google-native:file/v1beta1:NfsExportOptionsResponse": {
      "description": "NFS export options specifications.",
      "properties": {
        "accessMode": {
          "type": "string",
          "description": "Either READ_ONLY, for allowing only read requests on the exported directory, or READ_WRITE, for allowing both read and write requests. The default is READ_WRITE."
        },
        "anonGid": {
          "type": "string",
          "description": "An integer representing the anonymous group id with a default value of 65534. Anon_gid may only be set with squash_mode of ROOT_SQUASH. An error will be returned if this field is specified for other squash_mode settings."
        },
        "anonUid": {
          "type": "string",
          "description": "An integer representing the anonymous user id with a default value of 65534. Anon_uid may only be set with squash_mode of ROOT_SQUASH. An error will be returned if this field is specified for other squash_mode settings."
        },
        "ipRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of either an IPv4 addresses in the format `{octet1}.{octet2}.{octet3}.{octet4}` or CIDR ranges in the format `{octet1}.{octet2}.{octet3}.{octet4}/{mask size}` which may mount the file share. Overlapping IP ranges are not allowed, both within and across NfsExportOptions. An error will be returned. The limit is 64 IP ranges/addresses for each FileShareConfig among all NfsExportOptions."
        },
        "securityFlavors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The security flavors allowed for mount operations. The default is AUTH_SYS."
        },
        "squashMode": {
          "type": "string",
          "description": "Either NO_ROOT_SQUASH, for allowing root access on the exported directory, or ROOT_SQUASH, for not allowing root access. The default is NO_ROOT_SQUASH."
        }
      },
      "type": "object",
      "required": [
        "accessMode",
        "anonGid",
        "anonUid",
        "ipRanges",
        "securityFlavors",
        "squashMode"
      ]
    },
    "google-native:file/v1beta1:NfsExportOptionsSecurityFlavorsItem": {
      "type": "string",
      "enum": [
        {
          "name": "SecurityFlavorUnspecified",
          "description": "SecurityFlavor not set.",
          "value": "SECURITY_FLAVOR_UNSPECIFIED"
        },
        {
          "name": "AuthSys",
          "description": "The user's UNIX user-id and group-ids are transferred \"in the clear\" (not encrypted) on the network, unauthenticated by the NFS server (default).",
          "value": "AUTH_SYS"
        },
        {
          "name": "Krb5",
          "description": "End-user authentication through Kerberos V5.",
          "value": "KRB5"
        },
        {
          "name": "Krb5i",
          "description": "krb5 plus integrity protection (data packets are tamper proof).",
          "value": "KRB5I"
        },
        {
          "name": "Krb5p",
          "description": "krb5i plus privacy protection (data packets are tamper proof and encrypted).",
          "value": "KRB5P"
        }
      ]
    },
    "google-native:file/v1beta1:NfsExportOptionsSquashMode": {
      "description": "Either NO_ROOT_SQUASH, for allowing root access on the exported directory, or ROOT_SQUASH, for not allowing root access. The default is NO_ROOT_SQUASH.",
      "type": "string",
      "enum": [
        {
          "name": "SquashModeUnspecified",
          "description": "SquashMode not set.",
          "value": "SQUASH_MODE_UNSPECIFIED"
        },
        {
          "name": "NoRootSquash",
          "description": "The Root user has root access to the file share (default).",
          "value": "NO_ROOT_SQUASH"
        },
        {
          "name": "RootSquash",
          "description": "The Root user has squashed access to the anonymous uid/gid.",
          "value": "ROOT_SQUASH"
        }
      ]
    },
    "google-native:firebasedatabase/v1beta:InstanceType": {
      "description": "Immutable. The database instance type. On creation only USER_DATABASE is allowed, which is also the default when omitted.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseInstanceTypeUnspecified",
          "description": "Unknown state, likely the result of an error on the backend. This is only used for distinguishing unset values.",
          "value": "DATABASE_INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "DefaultDatabase",
          "description": "The default database that is provisioned when a project is created.",
          "value": "DEFAULT_DATABASE"
        },
        {
          "name": "UserDatabase",
          "description": "A database that the user created.",
          "value": "USER_DATABASE"
        }
      ]
    },
    "google-native:firebasehosting/v1beta1:ActingUserResponse": {
      "description": "Contains metadata about the user who performed an action, such as creating a release or finalizing a version.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The email address of the user when the user performed the action."
        },
        "imageUrl": {
          "type": "string",
          "description": "A profile image URL for the user. May not be present if the user has changed their email address or deleted their account."
        }
      },
      "type": "object",
      "required": [
        "email",
        "imageUrl"
      ]
    },
    "google-native:firebasehosting/v1beta1:CertDnsChallengeResponse": {
      "description": "Represents a DNS certificate challenge.",
      "properties": {
        "domainName": {
          "type": "string",
          "description": "The domain name upon which the DNS challenge must be satisfied."
        },
        "token": {
          "type": "string",
          "description": "The value that must be present as a TXT record on the domain name to satisfy the challenge."
        }
      },
      "type": "object",
      "required": [
        "domainName",
        "token"
      ]
    },
    "google-native:firebasehosting/v1beta1:CertHttpChallengeResponse": {
      "description": "Represents an HTTP certificate challenge.",
      "properties": {
        "path": {
          "type": "string",
          "description": "The URL path on which to serve the specified token to satisfy the certificate challenge."
        },
        "token": {
          "type": "string",
          "description": "The token to serve at the specified URL path to satisfy the certificate challenge."
        }
      },
      "type": "object",
      "required": [
        "path",
        "token"
      ]
    },
    "google-native:firebasehosting/v1beta1:CertVerificationResponse": {
      "description": "A set of ACME challenges you can use to allow Hosting to create an SSL certificate for your domain name before directing traffic to Hosting servers. Use either the DNS or HTTP challenge; it's not necessary to provide both.",
      "properties": {
        "dns": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DnsUpdatesResponse",
          "description": "A `TXT` record to add to your DNS records that confirms your intent to let Hosting create an SSL cert for your domain name."
        },
        "http": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:HttpUpdateResponse",
          "description": "A file to add to your existing, non-Hosting hosting service that confirms your intent to let Hosting create an SSL cert for your domain name."
        }
      },
      "type": "object",
      "required": [
        "dns",
        "http"
      ]
    },
    "google-native:firebasehosting/v1beta1:CertificateResponse": {
      "description": "An SSL certificate used to provide end-to-end encryption for requests against your domain name. A `Certificate` can be an actual SSL certificate or, for newly-created custom domains, Hosting's intent to create one.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The certificate's creation time. For `TEMPORARY` certs this is the time Hosting first generated challenges for your domain name. For all other cert types, it's the time the actual cert was created."
        },
        "expireTime": {
          "type": "string",
          "description": "The certificate's expiration time. After this time, the cert can no longer be used to provide secure communication between Hosting and your site's visitors."
        },
        "issues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:StatusResponse"
          },
          "description": "A set of errors Hosting encountered when attempting to create a cert for your domain name. Resolve these issues to ensure Hosting is able to provide secure communication with your site's visitors."
        },
        "state": {
          "type": "string",
          "description": "The state of the certificate. Only the `CERT_ACTIVE` and `CERT_EXPIRING_SOON` states provide SSL coverage for a domain name. If the state is `PROPAGATING` and Hosting had an active cert for the domain name before, that formerly-active cert provides SSL coverage for the domain name until the current cert propagates."
        },
        "type": {
          "type": "string",
          "description": "The certificate's type."
        },
        "verification": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:CertVerificationResponse",
          "description": "A set of ACME challenges you can add to your DNS records or existing, non-Hosting hosting provider to allow Hosting to create an SSL certificate for your domain name before you point traffic toward hosting. You can use thse challenges as part of a zero downtime transition from your old provider to Hosting."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "expireTime",
        "issues",
        "state",
        "type",
        "verification"
      ]
    },
    "google-native:firebasehosting/v1beta1:CloudRunRewrite": {
      "description": "A configured rewrite that directs requests to a Cloud Run service. If the Cloud Run service does not exist when setting or updating your Firebase Hosting configuration, then the request fails. Any errors from the Cloud Run service are passed to the end user (for example, if you delete a service, any requests directed to that service receive a `404` error).",
      "properties": {
        "region": {
          "type": "string",
          "description": "Optional. User-provided region where the Cloud Run service is hosted. Defaults to `us-central1` if not supplied."
        },
        "serviceId": {
          "type": "string",
          "description": "User-defined ID of the Cloud Run service."
        },
        "tag": {
          "type": "string",
          "description": "Optional. User-provided TrafficConfig tag to send traffic to. When omitted, traffic is sent to the service-wide URI"
        }
      },
      "type": "object",
      "required": [
        "serviceId"
      ]
    },
    "google-native:firebasehosting/v1beta1:CloudRunRewriteResponse": {
      "description": "A configured rewrite that directs requests to a Cloud Run service. If the Cloud Run service does not exist when setting or updating your Firebase Hosting configuration, then the request fails. Any errors from the Cloud Run service are passed to the end user (for example, if you delete a service, any requests directed to that service receive a `404` error).",
      "properties": {
        "region": {
          "type": "string",
          "description": "Optional. User-provided region where the Cloud Run service is hosted. Defaults to `us-central1` if not supplied."
        },
        "serviceId": {
          "type": "string",
          "description": "User-defined ID of the Cloud Run service."
        },
        "tag": {
          "type": "string",
          "description": "Optional. User-provided TrafficConfig tag to send traffic to. When omitted, traffic is sent to the service-wide URI"
        }
      },
      "type": "object",
      "required": [
        "region",
        "serviceId",
        "tag"
      ]
    },
    "google-native:firebasehosting/v1beta1:CustomDomainCertPreference": {
      "description": "A field that lets you specify which SSL certificate type Hosting creates for your domain name. Spark plan custom domains only have access to the `GROUPED` cert type, while Blaze plan domains can select any option.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The certificate's type is unspecified. The message is invalid if this is unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Temporary",
          "description": "A short-lived certificate type that covers a domain name temporarily, while Hosting creates a more permanent certificate.",
          "value": "TEMPORARY"
        },
        {
          "name": "Grouped",
          "description": "The standard certificate for Spark plan custom domains.",
          "value": "GROUPED"
        },
        {
          "name": "ProjectGrouped",
          "description": "Blaze plan only. A certificate that covers from 1 to 100 domain names with custom domains on the same Firebase project.",
          "value": "PROJECT_GROUPED"
        },
        {
          "name": "Dedicated",
          "description": "Blaze plan only. A certificate that covers a single domain name.",
          "value": "DEDICATED"
        }
      ]
    },
    "google-native:firebasehosting/v1beta1:DnsRecordResponse": {
      "description": "DNS records are resource records that define how systems and services should behave when handling requests for a domain name. For example, when you add `A` records to your domain name's DNS records, you're informing other systems (such as your users' web browsers) to contact those IPv4 addresses to retrieve resources relevant to your domain name (such as your Hosting site files).",
      "properties": {
        "domainName": {
          "type": "string",
          "description": "The domain name the record pertains to, e.g. `foo.bar.com.`."
        },
        "rdata": {
          "type": "string",
          "description": "The data of the record. The meaning of the value depends on record type: - A and AAAA: IP addresses for the domain name. - CNAME: Another domain to check for records. - TXT: Arbitrary text strings associated with the domain name. Hosting uses TXT records to determine which Firebase projects have permission to act on the domain name's behalf. - CAA: The record's flags, tag, and value, e.g. `0 issue \"pki.goog\"`."
        },
        "requiredAction": {
          "type": "string",
          "description": "An enum that indicates the a required action for this record."
        },
        "type": {
          "type": "string",
          "description": "The record's type, which determines what data the record contains."
        }
      },
      "type": "object",
      "required": [
        "domainName",
        "rdata",
        "requiredAction",
        "type"
      ]
    },
    "google-native:firebasehosting/v1beta1:DnsRecordSetResponse": {
      "description": "A set of DNS records relevant to the setup and maintenance of a custom domain in Firebase Hosting.",
      "properties": {
        "checkError": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:StatusResponse",
          "description": "An error Hosting services encountered when querying your domain name's DNS records. Note: Hosting ignores `NXDOMAIN` errors, as those generally just mean that a domain name hasn't been set up yet."
        },
        "domainName": {
          "type": "string",
          "description": "The domain name the record set pertains to."
        },
        "records": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DnsRecordResponse"
          },
          "description": "Records on the domain."
        }
      },
      "type": "object",
      "required": [
        "checkError",
        "domainName",
        "records"
      ]
    },
    "google-native:firebasehosting/v1beta1:DnsUpdatesResponse": {
      "description": "A set of DNS record updates that you should make to allow Hosting to serve secure content in response to requests against your domain name. These updates present the current state of your domain name's DNS records when Hosting last queried them, and the desired set of records that Hosting needs to see before your custom domain can be fully active.",
      "properties": {
        "checkTime": {
          "type": "string",
          "description": "The last time Hosting checked your custom domain's DNS records."
        },
        "desired": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DnsRecordSetResponse"
          },
          "description": "The set of DNS records Hosting needs to serve secure content on the domain."
        },
        "discovered": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DnsRecordSetResponse"
          },
          "description": "The set of DNS records Hosting discovered when inspecting a domain."
        }
      },
      "type": "object",
      "required": [
        "checkTime",
        "desired",
        "discovered"
      ]
    },
    "google-native:firebasehosting/v1beta1:DomainProvisioningResponse": {
      "description": "The current certificate provisioning status information for a domain.",
      "properties": {
        "certChallengeDiscoveredTxt": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The TXT records (for the certificate challenge) that were found at the last DNS fetch."
        },
        "certChallengeDns": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:CertDnsChallengeResponse",
          "description": "The DNS challenge for generating a certificate."
        },
        "certChallengeHttp": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:CertHttpChallengeResponse",
          "description": "The HTTP challenge for generating a certificate."
        },
        "certStatus": {
          "type": "string",
          "description": "The certificate provisioning status; updated when Firebase Hosting provisions an SSL certificate for the domain."
        },
        "discoveredIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IPs found at the last DNS fetch."
        },
        "dnsFetchTime": {
          "type": "string",
          "description": "The time at which the last DNS fetch occurred."
        },
        "dnsStatus": {
          "type": "string",
          "description": "The DNS record match status as of the last DNS fetch."
        },
        "expectedIps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of IPs to which the domain is expected to resolve."
        }
      },
      "type": "object",
      "required": [
        "certChallengeDiscoveredTxt",
        "certChallengeDns",
        "certChallengeHttp",
        "certStatus",
        "discoveredIps",
        "dnsFetchTime",
        "dnsStatus",
        "expectedIps"
      ]
    },
    "google-native:firebasehosting/v1beta1:DomainRedirect": {
      "description": "Defines the behavior of a domain-level redirect. Domain redirects preserve the path of the redirect but replace the requested domain with the one specified in the redirect configuration.",
      "properties": {
        "domainName": {
          "type": "string",
          "description": "The domain name to redirect to."
        },
        "type": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DomainRedirectType",
          "description": "The redirect status code."
        }
      },
      "type": "object",
      "required": [
        "domainName",
        "type"
      ]
    },
    "google-native:firebasehosting/v1beta1:DomainRedirectResponse": {
      "description": "Defines the behavior of a domain-level redirect. Domain redirects preserve the path of the redirect but replace the requested domain with the one specified in the redirect configuration.",
      "properties": {
        "domainName": {
          "type": "string",
          "description": "The domain name to redirect to."
        },
        "type": {
          "type": "string",
          "description": "The redirect status code."
        }
      },
      "type": "object",
      "required": [
        "domainName",
        "type"
      ]
    },
    "google-native:firebasehosting/v1beta1:DomainRedirectType": {
      "description": "Required. The redirect status code.",
      "type": "string",
      "enum": [
        {
          "name": "RedirectTypeUnspecified",
          "description": "The default redirect type; should not be intentionlly used.",
          "value": "REDIRECT_TYPE_UNSPECIFIED"
        },
        {
          "name": "MovedPermanently",
          "description": "The redirect will respond with an HTTP status code of `301 Moved Permanently`.",
          "value": "MOVED_PERMANENTLY"
        }
      ]
    },
    "google-native:firebasehosting/v1beta1:Header": {
      "description": "A [`Header`](https://firebase.google.com/docs/hosting/full-config#headers) specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.",
      "properties": {
        "glob": {
          "type": "string",
          "description": "The user-supplied [glob](https://firebase.google.com/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The additional headers to add to the response."
        },
        "regex": {
          "type": "string",
          "description": "The user-supplied RE2 regular expression to match against the request URL path."
        }
      },
      "type": "object",
      "required": [
        "headers"
      ]
    },
    "google-native:firebasehosting/v1beta1:HeaderResponse": {
      "description": "A [`Header`](https://firebase.google.com/docs/hosting/full-config#headers) specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers.",
      "properties": {
        "glob": {
          "type": "string",
          "description": "The user-supplied [glob](https://firebase.google.com/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The additional headers to add to the response."
        },
        "regex": {
          "type": "string",
          "description": "The user-supplied RE2 regular expression to match against the request URL path."
        }
      },
      "type": "object",
      "required": [
        "glob",
        "headers",
        "regex"
      ]
    },
    "google-native:firebasehosting/v1beta1:HttpUpdateResponse": {
      "description": "A file you can add to your existing, non-Hosting hosting service that confirms your intent to allow Hosting's Certificate Authorities to create an SSL certificate for your domain.",
      "properties": {
        "checkError": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:StatusResponse",
          "description": "An error encountered during the last contents check. If null, the check completed successfully."
        },
        "desired": {
          "type": "string",
          "description": "A text string to serve at the path."
        },
        "discovered": {
          "type": "string",
          "description": "Whether Hosting was able to find the required file contents on the specified path during its last check."
        },
        "lastCheckTime": {
          "type": "string",
          "description": "The last time Hosting systems checked for the file contents."
        },
        "path": {
          "type": "string",
          "description": "The path to the file."
        }
      },
      "type": "object",
      "required": [
        "checkError",
        "desired",
        "discovered",
        "lastCheckTime",
        "path"
      ]
    },
    "google-native:firebasehosting/v1beta1:I18nConfig": {
      "description": "If provided, i18n rewrites are enabled.",
      "properties": {
        "root": {
          "type": "string",
          "description": "The user-supplied path where country and language specific content will be looked for within the public directory."
        }
      },
      "type": "object",
      "required": [
        "root"
      ]
    },
    "google-native:firebasehosting/v1beta1:I18nConfigResponse": {
      "description": "If provided, i18n rewrites are enabled.",
      "properties": {
        "root": {
          "type": "string",
          "description": "The user-supplied path where country and language specific content will be looked for within the public directory."
        }
      },
      "type": "object",
      "required": [
        "root"
      ]
    },
    "google-native:firebasehosting/v1beta1:Redirect": {
      "description": "A [`Redirect`](https://firebase.google.com/docs/hosting/full-config#redirects) specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.",
      "properties": {
        "glob": {
          "type": "string",
          "description": "The user-supplied [glob](https://firebase.google.com/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path."
        },
        "location": {
          "type": "string",
          "description": "The value to put in the HTTP location header of the response. The location can contain capture group values from the pattern using a `:` prefix to identify the segment and an optional `*` to capture the rest of the URL. For example: \"glob\": \"/:capture*\", \"statusCode\": 301, \"location\": \"https://example.com/foo/:capture\""
        },
        "regex": {
          "type": "string",
          "description": "The user-supplied RE2 regular expression to match against the request URL path."
        },
        "statusCode": {
          "type": "integer",
          "description": "The status HTTP code to return in the response. It must be a valid 3xx status code."
        }
      },
      "type": "object",
      "required": [
        "location",
        "statusCode"
      ]
    },
    "google-native:firebasehosting/v1beta1:RedirectResponse": {
      "description": "A [`Redirect`](https://firebase.google.com/docs/hosting/full-config#redirects) specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path.",
      "properties": {
        "glob": {
          "type": "string",
          "description": "The user-supplied [glob](https://firebase.google.com/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path."
        },
        "location": {
          "type": "string",
          "description": "The value to put in the HTTP location header of the response. The location can contain capture group values from the pattern using a `:` prefix to identify the segment and an optional `*` to capture the rest of the URL. For example: \"glob\": \"/:capture*\", \"statusCode\": 301, \"location\": \"https://example.com/foo/:capture\""
        },
        "regex": {
          "type": "string",
          "description": "The user-supplied RE2 regular expression to match against the request URL path."
        },
        "statusCode": {
          "type": "integer",
          "description": "The status HTTP code to return in the response. It must be a valid 3xx status code."
        }
      },
      "type": "object",
      "required": [
        "glob",
        "location",
        "regex",
        "statusCode"
      ]
    },
    "google-native:firebasehosting/v1beta1:ReleaseResponse": {
      "description": " A `Release` is a particular [collection of configurations and files](sites.versions) that is set to be public at a particular time.",
      "properties": {
        "message": {
          "type": "string",
          "description": "The deploy description when the release was created. The value can be up to 512 characters."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier for the release, in either of the following formats: - sites/SITE_ID/releases/RELEASE_ID - sites/SITE_ID/channels/CHANNEL_ID/releases/RELEASE_ID This name is provided in the response body when you call [`releases.create`](sites.releases/create) or [`channels.releases.create`](sites.channels.releases/create)."
        },
        "releaseTime": {
          "type": "string",
          "description": "The time at which the version is set to be public."
        },
        "releaseUser": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
          "description": "Identifies the user who created the release."
        },
        "type": {
          "type": "string",
          "description": "Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release."
        },
        "version": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:VersionResponse",
          "description": "The configuration and content that was released."
        }
      },
      "type": "object",
      "required": [
        "message",
        "name",
        "releaseTime",
        "releaseUser",
        "type",
        "version"
      ]
    },
    "google-native:firebasehosting/v1beta1:ReleaseType": {
      "description": "Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "An unspecified type. Indicates that a version was released. This is the default value when no other `type` is explicitly specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Deploy",
          "description": "A version was uploaded to Firebase Hosting and released.",
          "value": "DEPLOY"
        },
        {
          "name": "Rollback",
          "description": "The release points back to a previously deployed version.",
          "value": "ROLLBACK"
        },
        {
          "name": "SiteDisable",
          "description": "The release prevents the site from serving content. Firebase Hosting acts as if the site never existed.",
          "value": "SITE_DISABLE"
        }
      ]
    },
    "google-native:firebasehosting/v1beta1:Rewrite": {
      "description": "A [`Rewrite`](https://firebase.google.com/docs/hosting/full-config#rewrites) specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.",
      "properties": {
        "dynamicLinks": {
          "type": "boolean",
          "description": "The request will be forwarded to Firebase Dynamic Links."
        },
        "function": {
          "type": "string",
          "description": "The function to proxy requests to. Must match the exported function name exactly."
        },
        "functionRegion": {
          "type": "string",
          "description": "Optional. Specify a Cloud region for rewritten Functions invocations. If not provided, defaults to us-central1."
        },
        "glob": {
          "type": "string",
          "description": "The user-supplied [glob](https://firebase.google.com/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path."
        },
        "path": {
          "type": "string",
          "description": "The URL path to rewrite the request to."
        },
        "regex": {
          "type": "string",
          "description": "The user-supplied RE2 regular expression to match against the request URL path."
        },
        "run": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:CloudRunRewrite",
          "description": "The request will be forwarded to Cloud Run."
        }
      },
      "type": "object"
    },
    "google-native:firebasehosting/v1beta1:RewriteResponse": {
      "description": "A [`Rewrite`](https://firebase.google.com/docs/hosting/full-config#rewrites) specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL.",
      "properties": {
        "dynamicLinks": {
          "type": "boolean",
          "description": "The request will be forwarded to Firebase Dynamic Links."
        },
        "function": {
          "type": "string",
          "description": "The function to proxy requests to. Must match the exported function name exactly."
        },
        "functionRegion": {
          "type": "string",
          "description": "Optional. Specify a Cloud region for rewritten Functions invocations. If not provided, defaults to us-central1."
        },
        "glob": {
          "type": "string",
          "description": "The user-supplied [glob](https://firebase.google.com/docs/hosting/full-config#glob_pattern_matching) to match against the request URL path."
        },
        "path": {
          "type": "string",
          "description": "The URL path to rewrite the request to."
        },
        "regex": {
          "type": "string",
          "description": "The user-supplied RE2 regular expression to match against the request URL path."
        },
        "run": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:CloudRunRewriteResponse",
          "description": "The request will be forwarded to Cloud Run."
        }
      },
      "type": "object",
      "required": [
        "dynamicLinks",
        "function",
        "functionRegion",
        "glob",
        "path",
        "regex",
        "run"
      ]
    },
    "google-native:firebasehosting/v1beta1:ServingConfig": {
      "description": "The configuration for how incoming requests to a site should be routed and processed before serving content. The URL request paths are matched against the specified URL patterns in the configuration, then Hosting applies the applicable configuration according to a specific [priority order](https://firebase.google.com/docs/hosting/full-config#hosting_priority_order).",
      "properties": {
        "appAssociation": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ServingConfigAppAssociation",
          "description": "How to handle well known App Association files."
        },
        "cleanUrls": {
          "type": "boolean",
          "description": "Defines whether to drop the file extension from uploaded files."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:Header"
          },
          "description": "An array of objects, where each object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers."
        },
        "i18n": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:I18nConfig",
          "description": "Optional. Defines i18n rewrite behavior."
        },
        "redirects": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:Redirect"
          },
          "description": "An array of objects (called redirect rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path."
        },
        "rewrites": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:Rewrite"
          },
          "description": "An array of objects (called rewrite rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL."
        },
        "trailingSlashBehavior": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ServingConfigTrailingSlashBehavior",
          "description": "Defines how to handle a trailing slash in the URL path."
        }
      },
      "type": "object"
    },
    "google-native:firebasehosting/v1beta1:ServingConfigAppAssociation": {
      "description": "How to handle well known App Association files.",
      "type": "string",
      "enum": [
        {
          "name": "Auto",
          "description": "The app association files will be automatically created from the apps that exist in the Firebase project.",
          "value": "AUTO"
        },
        {
          "name": "None",
          "description": "No special handling of the app association files will occur, these paths will result in a 404 unless caught with a Rewrite.",
          "value": "NONE"
        }
      ]
    },
    "google-native:firebasehosting/v1beta1:ServingConfigResponse": {
      "description": "The configuration for how incoming requests to a site should be routed and processed before serving content. The URL request paths are matched against the specified URL patterns in the configuration, then Hosting applies the applicable configuration according to a specific [priority order](https://firebase.google.com/docs/hosting/full-config#hosting_priority_order).",
      "properties": {
        "appAssociation": {
          "type": "string",
          "description": "How to handle well known App Association files."
        },
        "cleanUrls": {
          "type": "boolean",
          "description": "Defines whether to drop the file extension from uploaded files."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:HeaderResponse"
          },
          "description": "An array of objects, where each object specifies a URL pattern that, if matched to the request URL path, triggers Hosting to apply the specified custom response headers."
        },
        "i18n": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:I18nConfigResponse",
          "description": "Optional. Defines i18n rewrite behavior."
        },
        "redirects": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:RedirectResponse"
          },
          "description": "An array of objects (called redirect rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond with a redirect to the specified destination path."
        },
        "rewrites": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:RewriteResponse"
          },
          "description": "An array of objects (called rewrite rules), where each rule specifies a URL pattern that, if matched to the request URL path, triggers Hosting to respond as if the service were given the specified destination URL."
        },
        "trailingSlashBehavior": {
          "type": "string",
          "description": "Defines how to handle a trailing slash in the URL path."
        }
      },
      "type": "object",
      "required": [
        "appAssociation",
        "cleanUrls",
        "headers",
        "i18n",
        "redirects",
        "rewrites",
        "trailingSlashBehavior"
      ]
    },
    "google-native:firebasehosting/v1beta1:ServingConfigTrailingSlashBehavior": {
      "description": "Defines how to handle a trailing slash in the URL path.",
      "type": "string",
      "enum": [
        {
          "name": "TrailingSlashBehaviorUnspecified",
          "description": "No behavior is specified. Files are served at their exact location only, and trailing slashes are only added to directory indexes.",
          "value": "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED"
        },
        {
          "name": "Add",
          "description": "Trailing slashes are _added_ to directory indexes as well as to any URL path not ending in a file extension.",
          "value": "ADD"
        },
        {
          "name": "Remove",
          "description": "Trailing slashes are _removed_ from directory indexes as well as from any URL path not ending in a file extension.",
          "value": "REMOVE"
        }
      ]
    },
    "google-native:firebasehosting/v1beta1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:firebasehosting/v1beta1:VersionResponse": {
      "description": "A `Version` is a configuration and a collection of static files which determine how a site is displayed.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ServingConfigResponse",
          "description": "The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](https://firebase.google.com/docs/cli/#the_firebasejson_file) file."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the version was created."
        },
        "createUser": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
          "description": "Identifies the user who created the version."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which the version was `DELETED`."
        },
        "deleteUser": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
          "description": "Identifies the user who `DELETED` the version."
        },
        "fileCount": {
          "type": "string",
          "description": "The total number of files associated with the version. This value is calculated after a version is `FINALIZED`."
        },
        "finalizeTime": {
          "type": "string",
          "description": "The time at which the version was `FINALIZED`."
        },
        "finalizeUser": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
          "description": "Identifies the user who `FINALIZED` the version."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels used for extra metadata and/or filtering."
        },
        "name": {
          "type": "string",
          "description": "The fully-qualified resource name for the version, in the format: sites/ SITE_ID/versions/VERSION_ID This name is provided in the response body when you call [`CreateVersion`](sites.versions/create)."
        },
        "status": {
          "type": "string",
          "description": "The deploy status of the version. For a successful deploy, call [`CreateVersion`](sites.versions/create) to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling [`DeleteVersion`](sites.versions/delete)."
        },
        "versionBytes": {
          "type": "string",
          "description": "The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "createTime",
        "createUser",
        "deleteTime",
        "deleteUser",
        "fileCount",
        "finalizeTime",
        "finalizeUser",
        "labels",
        "name",
        "status",
        "versionBytes"
      ]
    },
    "google-native:firebasehosting/v1beta1:VersionStatus": {
      "description": "The deploy status of the version. For a successful deploy, call [`CreateVersion`](sites.versions/create) to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling [`DeleteVersion`](sites.versions/delete).",
      "type": "string",
      "enum": [
        {
          "name": "VersionStatusUnspecified",
          "description": "The default status; should not be intentionally used.",
          "value": "VERSION_STATUS_UNSPECIFIED"
        },
        {
          "name": "Created",
          "description": "The version has been created, and content is currently being added to the version.",
          "value": "CREATED"
        },
        {
          "name": "Finalized",
          "description": "All content has been added to the version, and the version can no longer be changed.",
          "value": "FINALIZED"
        },
        {
          "name": "Deleted",
          "description": "The version has been deleted.",
          "value": "DELETED"
        },
        {
          "name": "Abandoned",
          "description": "The version was not updated to `FINALIZED` within 12 hours and was automatically deleted.",
          "value": "ABANDONED"
        },
        {
          "name": "Expired",
          "description": "The version is outside the site-configured limit for the number of retained versions, so the version's content is scheduled for deletion.",
          "value": "EXPIRED"
        },
        {
          "name": "Cloning",
          "description": "The version is being cloned from another version. All content is still being copied over.",
          "value": "CLONING"
        }
      ]
    },
    "google-native:firebaseml/v1beta2:ModelState": {
      "description": "State common to all model types. Includes publishing and validation information.",
      "properties": {
        "published": {
          "type": "boolean",
          "description": "Indicates if this model has been published."
        }
      },
      "type": "object"
    },
    "google-native:firebaseml/v1beta2:ModelStateResponse": {
      "description": "State common to all model types. Includes publishing and validation information.",
      "properties": {
        "published": {
          "type": "boolean",
          "description": "Indicates if this model has been published."
        },
        "validationError": {
          "$ref": "#/types/google-native:firebaseml%2Fv1beta2:StatusResponse",
          "description": "Indicates the latest validation error on the model if any. A model may have validation errors if there were problems during the model creation/update. e.g. in the case of a TfLiteModel, if a tflite model file was missing or in the wrong format. This field will be empty for valid models."
        }
      },
      "type": "object",
      "required": [
        "published",
        "validationError"
      ]
    },
    "google-native:firebaseml/v1beta2:OperationResponse": {
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "properties": {
        "done": {
          "type": "boolean",
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available."
        },
        "error": {
          "$ref": "#/types/google-native:firebaseml%2Fv1beta2:StatusResponse",
          "description": "The error result of the operation in case of failure or cancellation."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any."
        },
        "name": {
          "type": "string",
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`."
        },
        "response": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`."
        }
      },
      "type": "object",
      "required": [
        "done",
        "error",
        "metadata",
        "name",
        "response"
      ]
    },
    "google-native:firebaseml/v1beta2:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:firebaseml/v1beta2:TfLiteModel": {
      "description": "Information that is specific to TfLite models.",
      "properties": {
        "automlModel": {
          "type": "string",
          "description": "The AutoML model id referencing a model you created with the AutoML API. The name should have format 'projects//locations//models/' (This is the model resource name returned from the AutoML API)"
        },
        "gcsTfliteUri": {
          "type": "string",
          "description": "The TfLite file containing the model. (Stored in Google Cloud). The gcs_tflite_uri should have form: gs://some-bucket/some-model.tflite Note: If you update the file in the original location, it is necessary to call UpdateModel for ML to pick up and validate the updated file."
        }
      },
      "type": "object"
    },
    "google-native:firebaseml/v1beta2:TfLiteModelResponse": {
      "description": "Information that is specific to TfLite models.",
      "properties": {
        "automlModel": {
          "type": "string",
          "description": "The AutoML model id referencing a model you created with the AutoML API. The name should have format 'projects//locations//models/' (This is the model resource name returned from the AutoML API)"
        },
        "gcsTfliteUri": {
          "type": "string",
          "description": "The TfLite file containing the model. (Stored in Google Cloud). The gcs_tflite_uri should have form: gs://some-bucket/some-model.tflite Note: If you update the file in the original location, it is necessary to call UpdateModel for ML to pick up and validate the updated file."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The size of the TFLite model"
        }
      },
      "type": "object",
      "required": [
        "automlModel",
        "gcsTfliteUri",
        "sizeBytes"
      ]
    },
    "google-native:firebaserules/v1:File": {
      "description": "`File` containing source content.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Textual Content."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint (e.g. github sha) associated with the `File`."
        },
        "name": {
          "type": "string",
          "description": "File name."
        }
      },
      "type": "object",
      "required": [
        "content",
        "name"
      ]
    },
    "google-native:firebaserules/v1:FileResponse": {
      "description": "`File` containing source content.",
      "properties": {
        "content": {
          "type": "string",
          "description": "Textual Content."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint (e.g. github sha) associated with the `File`."
        },
        "name": {
          "type": "string",
          "description": "File name."
        }
      },
      "type": "object",
      "required": [
        "content",
        "fingerprint",
        "name"
      ]
    },
    "google-native:firebaserules/v1:MetadataResponse": {
      "description": "Metadata for a Ruleset.",
      "properties": {
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Services that this ruleset has declarations for (e.g., \"cloud.firestore\"). There may be 0+ of these."
        }
      },
      "type": "object",
      "required": [
        "services"
      ]
    },
    "google-native:firebaserules/v1:Source": {
      "description": "`Source` is one or more `File` messages comprising a logical set of rules.",
      "properties": {
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebaserules%2Fv1:File"
          },
          "description": "`File` set constituting the `Source` bundle."
        }
      },
      "type": "object",
      "required": [
        "files"
      ]
    },
    "google-native:firebaserules/v1:SourceResponse": {
      "description": "`Source` is one or more `File` messages comprising a logical set of rules.",
      "properties": {
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebaserules%2Fv1:FileResponse"
          },
          "description": "`File` set constituting the `Source` bundle."
        }
      },
      "type": "object",
      "required": [
        "files"
      ]
    },
    "google-native:firestore/v1:DatabaseAppEngineIntegrationMode": {
      "description": "The App Engine integration mode to use for this database.",
      "type": "string",
      "enum": [
        {
          "name": "AppEngineIntegrationModeUnspecified",
          "description": "Not used.",
          "value": "APP_ENGINE_INTEGRATION_MODE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "If an App Engine application exists in the same region as this database, App Engine configuration will impact this database. This includes disabling of the application & database, as well as disabling writes to the database.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "App Engine has no effect on the ability of this database to serve requests. This is the default setting for databases created with the Firestore API.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:firestore/v1:DatabaseConcurrencyMode": {
      "description": "The concurrency control mode to use for this database.",
      "type": "string",
      "enum": [
        {
          "name": "ConcurrencyModeUnspecified",
          "description": "Not used.",
          "value": "CONCURRENCY_MODE_UNSPECIFIED"
        },
        {
          "name": "Optimistic",
          "description": "Use optimistic concurrency control by default. This mode is available for Cloud Firestore databases.",
          "value": "OPTIMISTIC"
        },
        {
          "name": "Pessimistic",
          "description": "Use pessimistic concurrency control by default. This mode is available for Cloud Firestore databases. This is the default setting for Cloud Firestore.",
          "value": "PESSIMISTIC"
        },
        {
          "name": "OptimisticWithEntityGroups",
          "description": "Use optimistic concurrency control with entity groups by default. This is the only available mode for Cloud Datastore. This mode is also available for Cloud Firestore with Datastore Mode but is not recommended.",
          "value": "OPTIMISTIC_WITH_ENTITY_GROUPS"
        }
      ]
    },
    "google-native:firestore/v1:DatabaseDeleteProtectionState": {
      "description": "State of delete protection for the database.",
      "type": "string",
      "enum": [
        {
          "name": "DeleteProtectionStateUnspecified",
          "description": "The default value. Delete protection type is not specified",
          "value": "DELETE_PROTECTION_STATE_UNSPECIFIED"
        },
        {
          "name": "DeleteProtectionDisabled",
          "description": "Delete protection is disabled",
          "value": "DELETE_PROTECTION_DISABLED"
        },
        {
          "name": "DeleteProtectionEnabled",
          "description": "Delete protection is enabled",
          "value": "DELETE_PROTECTION_ENABLED"
        }
      ]
    },
    "google-native:firestore/v1:DatabasePointInTimeRecoveryEnablement": {
      "description": "Whether to enable the PITR feature on this database.",
      "type": "string",
      "enum": [
        {
          "name": "PointInTimeRecoveryEnablementUnspecified",
          "description": "Not used.",
          "value": "POINT_IN_TIME_RECOVERY_ENABLEMENT_UNSPECIFIED"
        },
        {
          "name": "PointInTimeRecoveryEnabled",
          "description": "Reads are supported on selected versions of the data from within the past 7 days: * Reads against any timestamp within the past hour * Reads against 1-minute snapshots beyond 1 hour and within 7 days `version_retention_period` and `earliest_version_time` can be used to determine the supported versions.",
          "value": "POINT_IN_TIME_RECOVERY_ENABLED"
        },
        {
          "name": "PointInTimeRecoveryDisabled",
          "description": "Reads are supported on any version of the data from within the past 1 hour.",
          "value": "POINT_IN_TIME_RECOVERY_DISABLED"
        }
      ]
    },
    "google-native:firestore/v1:DatabaseType": {
      "description": "The type of the database. See https://cloud.google.com/datastore/docs/firestore-or-datastore for information about how to choose.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "The default value. This value is used if the database type is omitted.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "FirestoreNative",
          "description": "Firestore Native Mode",
          "value": "FIRESTORE_NATIVE"
        },
        {
          "name": "DatastoreMode",
          "description": "Firestore in Datastore Mode.",
          "value": "DATASTORE_MODE"
        }
      ]
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1DailyRecurrence": {
      "description": "Represent a recurring schedule that runs at a specific time every day. The time zone is UTC.",
      "type": "object"
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1DailyRecurrenceResponse": {
      "description": "Represent a recurring schedule that runs at a specific time every day. The time zone is UTC.",
      "type": "object"
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1FlatIndex": {
      "description": "An index that stores vectors in a flat data structure, and supports exhaustive search.",
      "type": "object"
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1FlatIndexResponse": {
      "description": "An index that stores vectors in a flat data structure, and supports exhaustive search.",
      "type": "object"
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1IndexField": {
      "description": "A field in an index. The field_path describes which field is indexed, the value_mode describes how the field value is indexed.",
      "properties": {
        "arrayConfig": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1IndexFieldArrayConfig",
          "description": "Indicates that this field supports operations on `array_value`s."
        },
        "fieldPath": {
          "type": "string",
          "description": "Can be __name__. For single field indexes, this must match the name of the field or may be omitted."
        },
        "order": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1IndexFieldOrder",
          "description": "Indicates that this field supports ordering by the specified order or comparing using =, !=, <, <=, >, >=."
        },
        "vectorConfig": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1VectorConfig",
          "description": "Indicates that this field supports nearest neighbors and distance operations on vector."
        }
      },
      "type": "object"
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1IndexFieldArrayConfig": {
      "description": "Indicates that this field supports operations on `array_value`s.",
      "type": "string",
      "enum": [
        {
          "name": "ArrayConfigUnspecified",
          "description": "The index does not support additional array queries.",
          "value": "ARRAY_CONFIG_UNSPECIFIED"
        },
        {
          "name": "Contains",
          "description": "The index supports array containment queries.",
          "value": "CONTAINS"
        }
      ]
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1IndexFieldOrder": {
      "description": "Indicates that this field supports ordering by the specified order or comparing using =, !=, <, <=, >, >=.",
      "type": "string",
      "enum": [
        {
          "name": "OrderUnspecified",
          "description": "The ordering is unspecified. Not a valid option.",
          "value": "ORDER_UNSPECIFIED"
        },
        {
          "name": "Ascending",
          "description": "The field is ordered by ascending field value.",
          "value": "ASCENDING"
        },
        {
          "name": "Descending",
          "description": "The field is ordered by descending field value.",
          "value": "DESCENDING"
        }
      ]
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1IndexFieldResponse": {
      "description": "A field in an index. The field_path describes which field is indexed, the value_mode describes how the field value is indexed.",
      "properties": {
        "arrayConfig": {
          "type": "string",
          "description": "Indicates that this field supports operations on `array_value`s."
        },
        "fieldPath": {
          "type": "string",
          "description": "Can be __name__. For single field indexes, this must match the name of the field or may be omitted."
        },
        "order": {
          "type": "string",
          "description": "Indicates that this field supports ordering by the specified order or comparing using =, !=, <, <=, >, >=."
        },
        "vectorConfig": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1VectorConfigResponse",
          "description": "Indicates that this field supports nearest neighbors and distance operations on vector."
        }
      },
      "type": "object",
      "required": [
        "arrayConfig",
        "fieldPath",
        "order",
        "vectorConfig"
      ]
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1VectorConfig": {
      "description": "The index configuration to support vector search operations",
      "properties": {
        "dimension": {
          "type": "integer",
          "description": "The vector dimension this configuration applies to. The resulting index will only include vectors of this dimension, and can be used for vector search with the same dimension."
        },
        "flat": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1FlatIndex",
          "description": "Indicates the vector index is a flat index."
        }
      },
      "type": "object",
      "required": [
        "dimension"
      ]
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1VectorConfigResponse": {
      "description": "The index configuration to support vector search operations",
      "properties": {
        "dimension": {
          "type": "integer",
          "description": "The vector dimension this configuration applies to. The resulting index will only include vectors of this dimension, and can be used for vector search with the same dimension."
        },
        "flat": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1FlatIndexResponse",
          "description": "Indicates the vector index is a flat index."
        }
      },
      "type": "object",
      "required": [
        "dimension",
        "flat"
      ]
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1WeeklyRecurrence": {
      "description": "Represents a recurring schedule that runs on a specified day of the week. The time zone is UTC.",
      "properties": {
        "day": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1WeeklyRecurrenceDay",
          "description": "The day of week to run. DAY_OF_WEEK_UNSPECIFIED is not allowed."
        }
      },
      "type": "object"
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1WeeklyRecurrenceDay": {
      "description": "The day of week to run. DAY_OF_WEEK_UNSPECIFIED is not allowed.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:firestore/v1:GoogleFirestoreAdminV1WeeklyRecurrenceResponse": {
      "description": "Represents a recurring schedule that runs on a specified day of the week. The time zone is UTC.",
      "properties": {
        "day": {
          "type": "string",
          "description": "The day of week to run. DAY_OF_WEEK_UNSPECIFIED is not allowed."
        }
      },
      "type": "object",
      "required": [
        "day"
      ]
    },
    "google-native:firestore/v1:IndexApiScope": {
      "description": "The API scope supported by this index.",
      "type": "string",
      "enum": [
        {
          "name": "AnyApi",
          "description": "The index can only be used by the Firestore Native query API. This is the default.",
          "value": "ANY_API"
        },
        {
          "name": "DatastoreModeApi",
          "description": "The index can only be used by the Firestore in Datastore Mode query API.",
          "value": "DATASTORE_MODE_API"
        }
      ]
    },
    "google-native:firestore/v1:IndexQueryScope": {
      "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection id. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection id as this index.",
      "type": "string",
      "enum": [
        {
          "name": "QueryScopeUnspecified",
          "description": "The query scope is unspecified. Not a valid option.",
          "value": "QUERY_SCOPE_UNSPECIFIED"
        },
        {
          "name": "Collection",
          "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the collection id specified by the index.",
          "value": "COLLECTION"
        },
        {
          "name": "CollectionGroup",
          "description": "Indexes with a collection group query scope specified allow queries against all collections that has the collection id specified by the index.",
          "value": "COLLECTION_GROUP"
        },
        {
          "name": "CollectionRecursive",
          "description": "Include all the collections's ancestor in the index. Only available for Datastore Mode databases.",
          "value": "COLLECTION_RECURSIVE"
        }
      ]
    },
    "google-native:firestore/v1beta1:GoogleFirestoreAdminV1beta1IndexField": {
      "description": "A field of an index.",
      "properties": {
        "fieldPath": {
          "type": "string",
          "description": "The path of the field. Must match the field path specification described by google.firestore.v1beta1.Document.fields. Special field path `__name__` may be used by itself or at the end of a path. `__type__` may be used only at the end of path."
        },
        "mode": {
          "$ref": "#/types/google-native:firestore%2Fv1beta1:GoogleFirestoreAdminV1beta1IndexFieldMode",
          "description": "The field's mode."
        }
      },
      "type": "object"
    },
    "google-native:firestore/v1beta1:GoogleFirestoreAdminV1beta1IndexFieldMode": {
      "description": "The field's mode.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "The mode is unspecified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Ascending",
          "description": "The field's values are indexed so as to support sequencing in ascending order and also query by <, >, <=, >=, and =.",
          "value": "ASCENDING"
        },
        {
          "name": "Descending",
          "description": "The field's values are indexed so as to support sequencing in descending order and also query by <, >, <=, >=, and =.",
          "value": "DESCENDING"
        },
        {
          "name": "ArrayContains",
          "description": "The field's array values are indexed so as to support membership using ARRAY_CONTAINS queries.",
          "value": "ARRAY_CONTAINS"
        }
      ]
    },
    "google-native:firestore/v1beta1:GoogleFirestoreAdminV1beta1IndexFieldResponse": {
      "description": "A field of an index.",
      "properties": {
        "fieldPath": {
          "type": "string",
          "description": "The path of the field. Must match the field path specification described by google.firestore.v1beta1.Document.fields. Special field path `__name__` may be used by itself or at the end of a path. `__type__` may be used only at the end of path."
        },
        "mode": {
          "type": "string",
          "description": "The field's mode."
        }
      },
      "type": "object",
      "required": [
        "fieldPath",
        "mode"
      ]
    },
    "google-native:firestore/v1beta1:IndexState": {
      "description": "The state of the index. Output only.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The state is unspecified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Creating",
          "description": "The index is being created. There is an active long-running operation for the index. The index is updated when writing a document. Some index data may exist.",
          "value": "CREATING"
        },
        {
          "name": "Ready",
          "description": "The index is ready to be used. The index is updated when writing a document. The index is fully populated from all stored documents it applies to.",
          "value": "READY"
        },
        {
          "name": "Error",
          "description": "The index was being created, but something went wrong. There is no active long-running operation for the index, and the most recently finished long-running operation failed. The index is not updated when writing a document. Some index data may exist.",
          "value": "ERROR"
        }
      ]
    },
    "google-native:firestore/v1beta2:GoogleFirestoreAdminV1beta2IndexField": {
      "description": "A field in an index. The field_path describes which field is indexed, the value_mode describes how the field value is indexed.",
      "properties": {
        "arrayConfig": {
          "$ref": "#/types/google-native:firestore%2Fv1beta2:GoogleFirestoreAdminV1beta2IndexFieldArrayConfig",
          "description": "Indicates that this field supports operations on `array_value`s."
        },
        "fieldPath": {
          "type": "string",
          "description": "Can be __name__. For single field indexes, this must match the name of the field or may be omitted."
        },
        "order": {
          "$ref": "#/types/google-native:firestore%2Fv1beta2:GoogleFirestoreAdminV1beta2IndexFieldOrder",
          "description": "Indicates that this field supports ordering by the specified order or comparing using =, <, <=, >, >=."
        }
      },
      "type": "object"
    },
    "google-native:firestore/v1beta2:GoogleFirestoreAdminV1beta2IndexFieldArrayConfig": {
      "description": "Indicates that this field supports operations on `array_value`s.",
      "type": "string",
      "enum": [
        {
          "name": "ArrayConfigUnspecified",
          "description": "The index does not support additional array queries.",
          "value": "ARRAY_CONFIG_UNSPECIFIED"
        },
        {
          "name": "Contains",
          "description": "The index supports array containment queries.",
          "value": "CONTAINS"
        }
      ]
    },
    "google-native:firestore/v1beta2:GoogleFirestoreAdminV1beta2IndexFieldOrder": {
      "description": "Indicates that this field supports ordering by the specified order or comparing using =, <, <=, >, >=.",
      "type": "string",
      "enum": [
        {
          "name": "OrderUnspecified",
          "description": "The ordering is unspecified. Not a valid option.",
          "value": "ORDER_UNSPECIFIED"
        },
        {
          "name": "Ascending",
          "description": "The field is ordered by ascending field value.",
          "value": "ASCENDING"
        },
        {
          "name": "Descending",
          "description": "The field is ordered by descending field value.",
          "value": "DESCENDING"
        }
      ]
    },
    "google-native:firestore/v1beta2:GoogleFirestoreAdminV1beta2IndexFieldResponse": {
      "description": "A field in an index. The field_path describes which field is indexed, the value_mode describes how the field value is indexed.",
      "properties": {
        "arrayConfig": {
          "type": "string",
          "description": "Indicates that this field supports operations on `array_value`s."
        },
        "fieldPath": {
          "type": "string",
          "description": "Can be __name__. For single field indexes, this must match the name of the field or may be omitted."
        },
        "order": {
          "type": "string",
          "description": "Indicates that this field supports ordering by the specified order or comparing using =, <, <=, >, >=."
        }
      },
      "type": "object",
      "required": [
        "arrayConfig",
        "fieldPath",
        "order"
      ]
    },
    "google-native:firestore/v1beta2:IndexQueryScope": {
      "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection id. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection id as this index.",
      "type": "string",
      "enum": [
        {
          "name": "QueryScopeUnspecified",
          "description": "The query scope is unspecified. Not a valid option.",
          "value": "QUERY_SCOPE_UNSPECIFIED"
        },
        {
          "name": "Collection",
          "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the collection id specified by the index.",
          "value": "COLLECTION"
        },
        {
          "name": "CollectionGroup",
          "description": "Indexes with a collection group query scope specified allow queries against all collections that has the collection id specified by the index.",
          "value": "COLLECTION_GROUP"
        }
      ]
    },
    "google-native:gameservices/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:gameservices/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean"
        },
        "logType": {
          "$ref": "#/types/google-native:gameservices%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:gameservices/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean"
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "ignoreChildExemptions",
        "logType"
      ]
    },
    "google-native:gameservices/v1:AuthorizationLoggingOptions": {
      "description": "Authorization-related information used by Cloud Audit Logging.",
      "properties": {
        "permissionType": {
          "$ref": "#/types/google-native:gameservices%2Fv1:AuthorizationLoggingOptionsPermissionType",
          "description": "The type of the permission that was checked."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:AuthorizationLoggingOptionsPermissionType": {
      "description": "The type of the permission that was checked.",
      "type": "string",
      "enum": [
        {
          "name": "PermissionTypeUnspecified",
          "description": "Default. Should not be used.",
          "value": "PERMISSION_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "A read of admin (meta) data.",
          "value": "ADMIN_READ"
        },
        {
          "name": "AdminWrite",
          "description": "A write of admin (meta) data.",
          "value": "ADMIN_WRITE"
        },
        {
          "name": "DataRead",
          "description": "A read of standard data.",
          "value": "DATA_READ"
        },
        {
          "name": "DataWrite",
          "description": "A write of standard data.",
          "value": "DATA_WRITE"
        }
      ]
    },
    "google-native:gameservices/v1:AuthorizationLoggingOptionsResponse": {
      "description": "Authorization-related information used by Cloud Audit Logging.",
      "properties": {
        "permissionType": {
          "type": "string",
          "description": "The type of the permission that was checked."
        }
      },
      "type": "object",
      "required": [
        "permissionType"
      ]
    },
    "google-native:gameservices/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string"
        },
        "condition": {
          "$ref": "#/types/google-native:gameservices%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string"
        },
        "condition": {
          "$ref": "#/types/google-native:gameservices%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "bindingId",
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gameservices/v1:CloudAuditOptions": {
      "description": "Write a Cloud Audit log",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:gameservices%2Fv1:AuthorizationLoggingOptions",
          "description": "Information used by the Cloud Audit Logging pipeline."
        },
        "logName": {
          "$ref": "#/types/google-native:gameservices%2Fv1:CloudAuditOptionsLogName",
          "description": "The log_name to populate in the Cloud Audit Record."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:CloudAuditOptionsLogName": {
      "description": "The log_name to populate in the Cloud Audit Record.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedLogName",
          "description": "Default. Should not be used.",
          "value": "UNSPECIFIED_LOG_NAME"
        },
        {
          "name": "AdminActivity",
          "description": "Corresponds to \"cloudaudit.googleapis.com/activity\"",
          "value": "ADMIN_ACTIVITY"
        },
        {
          "name": "DataAccess",
          "description": "Corresponds to \"cloudaudit.googleapis.com/data_access\"",
          "value": "DATA_ACCESS"
        }
      ]
    },
    "google-native:gameservices/v1:CloudAuditOptionsResponse": {
      "description": "Write a Cloud Audit log",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:gameservices%2Fv1:AuthorizationLoggingOptionsResponse",
          "description": "Information used by the Cloud Audit Logging pipeline."
        },
        "logName": {
          "type": "string",
          "description": "The log_name to populate in the Cloud Audit Record."
        }
      },
      "type": "object",
      "required": [
        "authorizationLoggingOptions",
        "logName"
      ]
    },
    "google-native:gameservices/v1:Condition": {
      "description": "A condition to be met.",
      "properties": {
        "iam": {
          "$ref": "#/types/google-native:gameservices%2Fv1:ConditionIam",
          "description": "Trusted attributes supplied by the IAM system."
        },
        "op": {
          "$ref": "#/types/google-native:gameservices%2Fv1:ConditionOp",
          "description": "An operator to apply the subject with."
        },
        "svc": {
          "type": "string",
          "description": "Trusted attributes discharged by the service."
        },
        "sys": {
          "$ref": "#/types/google-native:gameservices%2Fv1:ConditionSys",
          "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The objects of the condition."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:ConditionIam": {
      "description": "Trusted attributes supplied by the IAM system.",
      "type": "string",
      "enum": [
        {
          "name": "NoAttr",
          "description": "Default non-attribute.",
          "value": "NO_ATTR"
        },
        {
          "name": "Authority",
          "description": "Either principal or (if present) authority selector.",
          "value": "AUTHORITY"
        },
        {
          "name": "Attribution",
          "description": "The principal (even if an authority selector is present), which must only be used for attribution, not authorization.",
          "value": "ATTRIBUTION"
        },
        {
          "name": "SecurityRealm",
          "description": "Any of the security realms in the IAMContext (go/security-realms). When used with IN, the condition indicates \"any of the request's realms match one of the given values; with NOT_IN, \"none of the realms match any of the given values\". Note that a value can be: - 'self:campus' (i.e., clients that are in the same campus) - 'self:metro' (i.e., clients that are in the same metro) - 'self:cloud-region' (i.e., allow connections from clients that are in the same cloud region) - 'self:prod-region' (i.e., allow connections from clients that are in the same prod region) - 'guardians' (i.e., allow connections from its guardian realms. See go/security-realms-glossary#guardian for more information.) - 'self' [DEPRECATED] (i.e., allow connections from clients that are in the same security realm, which is currently but not guaranteed to be campus-sized) - a realm (e.g., 'campus-abc') - a realm group (e.g., 'realms-for-borg-cell-xx', see: go/realm-groups) A match is determined by a realm group membership check performed by a RealmAclRep object (go/realm-acl-howto). It is not permitted to grant access based on the *absence* of a realm, so realm conditions can only be used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).",
          "value": "SECURITY_REALM"
        },
        {
          "name": "Approver",
          "description": "An approver (distinct from the requester) that has authorized this request. When used with IN, the condition indicates that one of the approvers associated with the request matches the specified principal, or is a member of the specified group. Approvers can only grant additional access, and are thus only used in a strictly positive context (e.g. ALLOW/IN or DENY/NOT_IN).",
          "value": "APPROVER"
        },
        {
          "name": "JustificationType",
          "description": "What types of justifications have been supplied with this request. String values should match enum names from security.credentials.JustificationType, e.g. \"MANUAL_STRING\". It is not permitted to grant access based on the *absence* of a justification, so justification conditions can only be used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN). Multiple justifications, e.g., a Buganizer ID and a manually-entered reason, are normal and supported.",
          "value": "JUSTIFICATION_TYPE"
        },
        {
          "name": "CredentialsType",
          "description": "What type of credentials have been supplied with this request. String values should match enum names from security_loas_l2.CredentialsType - currently, only CREDS_TYPE_EMERGENCY is supported. It is not permitted to grant access based on the *absence* of a credentials type, so the conditions can only be used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).",
          "value": "CREDENTIALS_TYPE"
        },
        {
          "name": "CredsAssertion",
          "description": "EXPERIMENTAL -- DO NOT USE. The conditions can only be used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).",
          "value": "CREDS_ASSERTION"
        }
      ]
    },
    "google-native:gameservices/v1:ConditionOp": {
      "description": "An operator to apply the subject with.",
      "type": "string",
      "enum": [
        {
          "name": "NoOp",
          "description": "Default no-op.",
          "value": "NO_OP"
        },
        {
          "name": "Equals",
          "description": "DEPRECATED. Use IN instead.",
          "value": "EQUALS"
        },
        {
          "name": "NotEquals",
          "description": "DEPRECATED. Use NOT_IN instead.",
          "value": "NOT_EQUALS"
        },
        {
          "name": "In",
          "description": "The condition is true if the subject (or any element of it if it is a set) matches any of the supplied values.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "The condition is true if the subject (or every element of it if it is a set) matches none of the supplied values.",
          "value": "NOT_IN"
        },
        {
          "name": "Discharged",
          "description": "Subject is discharged",
          "value": "DISCHARGED"
        }
      ]
    },
    "google-native:gameservices/v1:ConditionResponse": {
      "description": "A condition to be met.",
      "properties": {
        "iam": {
          "type": "string",
          "description": "Trusted attributes supplied by the IAM system."
        },
        "op": {
          "type": "string",
          "description": "An operator to apply the subject with."
        },
        "svc": {
          "type": "string",
          "description": "Trusted attributes discharged by the service."
        },
        "sys": {
          "type": "string",
          "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The objects of the condition."
        }
      },
      "type": "object",
      "required": [
        "iam",
        "op",
        "svc",
        "sys",
        "values"
      ]
    },
    "google-native:gameservices/v1:ConditionSys": {
      "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.",
      "type": "string",
      "enum": [
        {
          "name": "NoAttr",
          "description": "Default non-attribute type",
          "value": "NO_ATTR"
        },
        {
          "name": "Region",
          "description": "Region of the resource",
          "value": "REGION"
        },
        {
          "name": "Service",
          "description": "Service name",
          "value": "SERVICE"
        },
        {
          "name": "Name",
          "description": "Resource name",
          "value": "NAME"
        },
        {
          "name": "Ip",
          "description": "IP address of the caller",
          "value": "IP"
        }
      ]
    },
    "google-native:gameservices/v1:CounterOptions": {
      "description": "Increment a streamz counter with the specified metric and field names. Metric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended. Field names correspond to IAM request parameters and field values are their respective values. Supported field names: - \"authority\", which is \"[token]\" if IAMContext.token is present, otherwise the value of IAMContext.authority_selector if present, and otherwise a representation of IAMContext.principal; or - \"iam_principal\", a representation of IAMContext.principal even if a token or authority selector is present; or - \"\" (empty string), resulting in a counter with no fields. Examples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==> increment counter /iam/policy/debug_access_count {iam_principal=[value of IAMContext.principal]}",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:CustomField"
          },
          "description": "Custom fields."
        },
        "field": {
          "type": "string",
          "description": "The field value to attribute."
        },
        "metric": {
          "type": "string",
          "description": "The metric to update."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:CounterOptionsResponse": {
      "description": "Increment a streamz counter with the specified metric and field names. Metric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended. Field names correspond to IAM request parameters and field values are their respective values. Supported field names: - \"authority\", which is \"[token]\" if IAMContext.token is present, otherwise the value of IAMContext.authority_selector if present, and otherwise a representation of IAMContext.principal; or - \"iam_principal\", a representation of IAMContext.principal even if a token or authority selector is present; or - \"\" (empty string), resulting in a counter with no fields. Examples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==> increment counter /iam/policy/debug_access_count {iam_principal=[value of IAMContext.principal]}",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:CustomFieldResponse"
          },
          "description": "Custom fields."
        },
        "field": {
          "type": "string",
          "description": "The field value to attribute."
        },
        "metric": {
          "type": "string",
          "description": "The metric to update."
        }
      },
      "type": "object",
      "required": [
        "customFields",
        "field",
        "metric"
      ]
    },
    "google-native:gameservices/v1:CustomField": {
      "description": "Custom fields. These can be used to create a counter with arbitrary field/value pairs. See: go/rpcsp-custom-fields.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name is the field name."
        },
        "value": {
          "type": "string",
          "description": "Value is the field value. It is important that in contrast to the CounterOptions.field, the value here is a constant that is not derived from the IAMContext."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:CustomFieldResponse": {
      "description": "Custom fields. These can be used to create a counter with arbitrary field/value pairs. See: go/rpcsp-custom-fields.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name is the field name."
        },
        "value": {
          "type": "string",
          "description": "Value is the field value. It is important that in contrast to the CounterOptions.field, the value here is a constant that is not derived from the IAMContext."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:gameservices/v1:DataAccessOptions": {
      "description": "Write a Data Access (Gin) log",
      "properties": {
        "logMode": {
          "$ref": "#/types/google-native:gameservices%2Fv1:DataAccessOptionsLogMode"
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:DataAccessOptionsLogMode": {
      "type": "string",
      "enum": [
        {
          "name": "LogModeUnspecified",
          "description": "Client is not required to write a partial Gin log immediately after the authorization check. If client chooses to write one and it fails, client may either fail open (allow the operation to continue) or fail closed (handle as a DENY outcome).",
          "value": "LOG_MODE_UNSPECIFIED"
        },
        {
          "name": "LogFailClosed",
          "description": "The application's operation in the context of which this authorization check is being made may only be performed if it is successfully logged to Gin. For instance, the authorization library may satisfy this obligation by emitting a partial log entry at authorization check time and only returning ALLOW to the application if it succeeds. If a matching Rule has this directive, but the client has not indicated that it will honor such requirements, then the IAM check will result in authorization failure by setting CheckPolicyResponse.success=false.",
          "value": "LOG_FAIL_CLOSED"
        }
      ]
    },
    "google-native:gameservices/v1:DataAccessOptionsResponse": {
      "description": "Write a Data Access (Gin) log",
      "properties": {
        "logMode": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "logMode"
      ]
    },
    "google-native:gameservices/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gameservices/v1:LogConfig": {
      "description": "Specifies what kind of log the caller must write",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:gameservices%2Fv1:CloudAuditOptions",
          "description": "Cloud audit options."
        },
        "counter": {
          "$ref": "#/types/google-native:gameservices%2Fv1:CounterOptions",
          "description": "Counter options."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:gameservices%2Fv1:DataAccessOptions",
          "description": "Data access options."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:LogConfigResponse": {
      "description": "Specifies what kind of log the caller must write",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:gameservices%2Fv1:CloudAuditOptionsResponse",
          "description": "Cloud audit options."
        },
        "counter": {
          "$ref": "#/types/google-native:gameservices%2Fv1:CounterOptionsResponse",
          "description": "Counter options."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:gameservices%2Fv1:DataAccessOptionsResponse",
          "description": "Data access options."
        }
      },
      "type": "object",
      "required": [
        "cloudAudit",
        "counter",
        "dataAccess"
      ]
    },
    "google-native:gameservices/v1:Rule": {
      "description": "A rule to be applied in a Policy.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:gameservices%2Fv1:RuleAction",
          "description": "Required"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:Condition"
          },
          "description": "Additional restrictions that must be met. All conditions must pass for the rule to match."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the rule."
        },
        "in": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries."
        },
        "logConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:LogConfig"
          },
          "description": "The config returned to callers of CheckPolicy for any entries that match the LOG action."
        },
        "notIn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries. The format for in and not_in entries can be found at in the Local IAM documentation (see go/local-iam#features)."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1:RuleAction": {
      "description": "Required",
      "type": "string",
      "enum": [
        {
          "name": "NoAction",
          "description": "Default no action.",
          "value": "NO_ACTION"
        },
        {
          "name": "Allow",
          "description": "Matching 'Entries' grant access.",
          "value": "ALLOW"
        },
        {
          "name": "AllowWithLog",
          "description": "Matching 'Entries' grant access and the caller promises to log the request per the returned log_configs.",
          "value": "ALLOW_WITH_LOG"
        },
        {
          "name": "Deny",
          "description": "Matching 'Entries' deny access.",
          "value": "DENY"
        },
        {
          "name": "DenyWithLog",
          "description": "Matching 'Entries' deny access and the caller promises to log the request per the returned log_configs.",
          "value": "DENY_WITH_LOG"
        },
        {
          "name": "Log",
          "description": "Matching 'Entries' tell IAM.Check callers to generate logs.",
          "value": "LOG"
        }
      ]
    },
    "google-native:gameservices/v1:RuleResponse": {
      "description": "A rule to be applied in a Policy.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Required"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:ConditionResponse"
          },
          "description": "Additional restrictions that must be met. All conditions must pass for the rule to match."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the rule."
        },
        "in": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries."
        },
        "logConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:LogConfigResponse"
          },
          "description": "The config returned to callers of CheckPolicy for any entries that match the LOG action."
        },
        "notIn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries. The format for in and not_in entries can be found at in the Local IAM documentation (see go/local-iam#features)."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs."
        }
      },
      "type": "object",
      "required": [
        "action",
        "conditions",
        "description",
        "in",
        "logConfig",
        "notIn",
        "permissions"
      ]
    },
    "google-native:gameservices/v1beta:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:gameservices/v1beta:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean"
        },
        "logType": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:gameservices/v1beta:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "ignoreChildExemptions": {
          "type": "boolean"
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "ignoreChildExemptions",
        "logType"
      ]
    },
    "google-native:gameservices/v1beta:AuthorizationLoggingOptions": {
      "description": "Authorization-related information used by Cloud Audit Logging.",
      "properties": {
        "permissionType": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:AuthorizationLoggingOptionsPermissionType",
          "description": "The type of the permission that was checked."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:AuthorizationLoggingOptionsPermissionType": {
      "description": "The type of the permission that was checked.",
      "type": "string",
      "enum": [
        {
          "name": "PermissionTypeUnspecified",
          "description": "Default. Should not be used.",
          "value": "PERMISSION_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "A read of admin (meta) data.",
          "value": "ADMIN_READ"
        },
        {
          "name": "AdminWrite",
          "description": "A write of admin (meta) data.",
          "value": "ADMIN_WRITE"
        },
        {
          "name": "DataRead",
          "description": "A read of standard data.",
          "value": "DATA_READ"
        },
        {
          "name": "DataWrite",
          "description": "A write of standard data.",
          "value": "DATA_WRITE"
        }
      ]
    },
    "google-native:gameservices/v1beta:AuthorizationLoggingOptionsResponse": {
      "description": "Authorization-related information used by Cloud Audit Logging.",
      "properties": {
        "permissionType": {
          "type": "string",
          "description": "The type of the permission that was checked."
        }
      },
      "type": "object",
      "required": [
        "permissionType"
      ]
    },
    "google-native:gameservices/v1beta:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string"
        },
        "condition": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "bindingId": {
          "type": "string"
        },
        "condition": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "bindingId",
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gameservices/v1beta:CloudAuditOptions": {
      "description": "Write a Cloud Audit log",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:AuthorizationLoggingOptions",
          "description": "Information used by the Cloud Audit Logging pipeline."
        },
        "logName": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:CloudAuditOptionsLogName",
          "description": "The log_name to populate in the Cloud Audit Record."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:CloudAuditOptionsLogName": {
      "description": "The log_name to populate in the Cloud Audit Record.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedLogName",
          "description": "Default. Should not be used.",
          "value": "UNSPECIFIED_LOG_NAME"
        },
        {
          "name": "AdminActivity",
          "description": "Corresponds to \"cloudaudit.googleapis.com/activity\"",
          "value": "ADMIN_ACTIVITY"
        },
        {
          "name": "DataAccess",
          "description": "Corresponds to \"cloudaudit.googleapis.com/data_access\"",
          "value": "DATA_ACCESS"
        }
      ]
    },
    "google-native:gameservices/v1beta:CloudAuditOptionsResponse": {
      "description": "Write a Cloud Audit log",
      "properties": {
        "authorizationLoggingOptions": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:AuthorizationLoggingOptionsResponse",
          "description": "Information used by the Cloud Audit Logging pipeline."
        },
        "logName": {
          "type": "string",
          "description": "The log_name to populate in the Cloud Audit Record."
        }
      },
      "type": "object",
      "required": [
        "authorizationLoggingOptions",
        "logName"
      ]
    },
    "google-native:gameservices/v1beta:Condition": {
      "description": "A condition to be met.",
      "properties": {
        "iam": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:ConditionIam",
          "description": "Trusted attributes supplied by the IAM system."
        },
        "op": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:ConditionOp",
          "description": "An operator to apply the subject with."
        },
        "svc": {
          "type": "string",
          "description": "Trusted attributes discharged by the service."
        },
        "sys": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:ConditionSys",
          "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The objects of the condition."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:ConditionIam": {
      "description": "Trusted attributes supplied by the IAM system.",
      "type": "string",
      "enum": [
        {
          "name": "NoAttr",
          "description": "Default non-attribute.",
          "value": "NO_ATTR"
        },
        {
          "name": "Authority",
          "description": "Either principal or (if present) authority selector.",
          "value": "AUTHORITY"
        },
        {
          "name": "Attribution",
          "description": "The principal (even if an authority selector is present), which must only be used for attribution, not authorization.",
          "value": "ATTRIBUTION"
        },
        {
          "name": "SecurityRealm",
          "description": "Any of the security realms in the IAMContext (go/security-realms). When used with IN, the condition indicates \"any of the request's realms match one of the given values; with NOT_IN, \"none of the realms match any of the given values\". Note that a value can be: - 'self:campus' (i.e., clients that are in the same campus) - 'self:metro' (i.e., clients that are in the same metro) - 'self:cloud-region' (i.e., allow connections from clients that are in the same cloud region) - 'self:prod-region' (i.e., allow connections from clients that are in the same prod region) - 'guardians' (i.e., allow connections from its guardian realms. See go/security-realms-glossary#guardian for more information.) - 'self' [DEPRECATED] (i.e., allow connections from clients that are in the same security realm, which is currently but not guaranteed to be campus-sized) - a realm (e.g., 'campus-abc') - a realm group (e.g., 'realms-for-borg-cell-xx', see: go/realm-groups) A match is determined by a realm group membership check performed by a RealmAclRep object (go/realm-acl-howto). It is not permitted to grant access based on the *absence* of a realm, so realm conditions can only be used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).",
          "value": "SECURITY_REALM"
        },
        {
          "name": "Approver",
          "description": "An approver (distinct from the requester) that has authorized this request. When used with IN, the condition indicates that one of the approvers associated with the request matches the specified principal, or is a member of the specified group. Approvers can only grant additional access, and are thus only used in a strictly positive context (e.g. ALLOW/IN or DENY/NOT_IN).",
          "value": "APPROVER"
        },
        {
          "name": "JustificationType",
          "description": "What types of justifications have been supplied with this request. String values should match enum names from security.credentials.JustificationType, e.g. \"MANUAL_STRING\". It is not permitted to grant access based on the *absence* of a justification, so justification conditions can only be used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN). Multiple justifications, e.g., a Buganizer ID and a manually-entered reason, are normal and supported.",
          "value": "JUSTIFICATION_TYPE"
        },
        {
          "name": "CredentialsType",
          "description": "What type of credentials have been supplied with this request. String values should match enum names from security_loas_l2.CredentialsType - currently, only CREDS_TYPE_EMERGENCY is supported. It is not permitted to grant access based on the *absence* of a credentials type, so the conditions can only be used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).",
          "value": "CREDENTIALS_TYPE"
        },
        {
          "name": "CredsAssertion",
          "description": "EXPERIMENTAL -- DO NOT USE. The conditions can only be used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).",
          "value": "CREDS_ASSERTION"
        }
      ]
    },
    "google-native:gameservices/v1beta:ConditionOp": {
      "description": "An operator to apply the subject with.",
      "type": "string",
      "enum": [
        {
          "name": "NoOp",
          "description": "Default no-op.",
          "value": "NO_OP"
        },
        {
          "name": "Equals",
          "description": "DEPRECATED. Use IN instead.",
          "value": "EQUALS"
        },
        {
          "name": "NotEquals",
          "description": "DEPRECATED. Use NOT_IN instead.",
          "value": "NOT_EQUALS"
        },
        {
          "name": "In",
          "description": "The condition is true if the subject (or any element of it if it is a set) matches any of the supplied values.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "The condition is true if the subject (or every element of it if it is a set) matches none of the supplied values.",
          "value": "NOT_IN"
        },
        {
          "name": "Discharged",
          "description": "Subject is discharged",
          "value": "DISCHARGED"
        }
      ]
    },
    "google-native:gameservices/v1beta:ConditionResponse": {
      "description": "A condition to be met.",
      "properties": {
        "iam": {
          "type": "string",
          "description": "Trusted attributes supplied by the IAM system."
        },
        "op": {
          "type": "string",
          "description": "An operator to apply the subject with."
        },
        "svc": {
          "type": "string",
          "description": "Trusted attributes discharged by the service."
        },
        "sys": {
          "type": "string",
          "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The objects of the condition."
        }
      },
      "type": "object",
      "required": [
        "iam",
        "op",
        "svc",
        "sys",
        "values"
      ]
    },
    "google-native:gameservices/v1beta:ConditionSys": {
      "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.",
      "type": "string",
      "enum": [
        {
          "name": "NoAttr",
          "description": "Default non-attribute type",
          "value": "NO_ATTR"
        },
        {
          "name": "Region",
          "description": "Region of the resource",
          "value": "REGION"
        },
        {
          "name": "Service",
          "description": "Service name",
          "value": "SERVICE"
        },
        {
          "name": "Name",
          "description": "Resource name",
          "value": "NAME"
        },
        {
          "name": "Ip",
          "description": "IP address of the caller",
          "value": "IP"
        }
      ]
    },
    "google-native:gameservices/v1beta:CounterOptions": {
      "description": "Increment a streamz counter with the specified metric and field names. Metric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended. Field names correspond to IAM request parameters and field values are their respective values. Supported field names: - \"authority\", which is \"[token]\" if IAMContext.token is present, otherwise the value of IAMContext.authority_selector if present, and otherwise a representation of IAMContext.principal; or - \"iam_principal\", a representation of IAMContext.principal even if a token or authority selector is present; or - \"\" (empty string), resulting in a counter with no fields. Examples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==> increment counter /iam/policy/debug_access_count {iam_principal=[value of IAMContext.principal]}",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:CustomField"
          },
          "description": "Custom fields."
        },
        "field": {
          "type": "string",
          "description": "The field value to attribute."
        },
        "metric": {
          "type": "string",
          "description": "The metric to update."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:CounterOptionsResponse": {
      "description": "Increment a streamz counter with the specified metric and field names. Metric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended. Field names correspond to IAM request parameters and field values are their respective values. Supported field names: - \"authority\", which is \"[token]\" if IAMContext.token is present, otherwise the value of IAMContext.authority_selector if present, and otherwise a representation of IAMContext.principal; or - \"iam_principal\", a representation of IAMContext.principal even if a token or authority selector is present; or - \"\" (empty string), resulting in a counter with no fields. Examples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==> increment counter /iam/policy/debug_access_count {iam_principal=[value of IAMContext.principal]}",
      "properties": {
        "customFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:CustomFieldResponse"
          },
          "description": "Custom fields."
        },
        "field": {
          "type": "string",
          "description": "The field value to attribute."
        },
        "metric": {
          "type": "string",
          "description": "The metric to update."
        }
      },
      "type": "object",
      "required": [
        "customFields",
        "field",
        "metric"
      ]
    },
    "google-native:gameservices/v1beta:CustomField": {
      "description": "Custom fields. These can be used to create a counter with arbitrary field/value pairs. See: go/rpcsp-custom-fields.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name is the field name."
        },
        "value": {
          "type": "string",
          "description": "Value is the field value. It is important that in contrast to the CounterOptions.field, the value here is a constant that is not derived from the IAMContext."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:CustomFieldResponse": {
      "description": "Custom fields. These can be used to create a counter with arbitrary field/value pairs. See: go/rpcsp-custom-fields.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name is the field name."
        },
        "value": {
          "type": "string",
          "description": "Value is the field value. It is important that in contrast to the CounterOptions.field, the value here is a constant that is not derived from the IAMContext."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:gameservices/v1beta:DataAccessOptions": {
      "description": "Write a Data Access (Gin) log",
      "properties": {
        "logMode": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:DataAccessOptionsLogMode"
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:DataAccessOptionsLogMode": {
      "type": "string",
      "enum": [
        {
          "name": "LogModeUnspecified",
          "description": "Client is not required to write a partial Gin log immediately after the authorization check. If client chooses to write one and it fails, client may either fail open (allow the operation to continue) or fail closed (handle as a DENY outcome).",
          "value": "LOG_MODE_UNSPECIFIED"
        },
        {
          "name": "LogFailClosed",
          "description": "The application's operation in the context of which this authorization check is being made may only be performed if it is successfully logged to Gin. For instance, the authorization library may satisfy this obligation by emitting a partial log entry at authorization check time and only returning ALLOW to the application if it succeeds. If a matching Rule has this directive, but the client has not indicated that it will honor such requirements, then the IAM check will result in authorization failure by setting CheckPolicyResponse.success=false.",
          "value": "LOG_FAIL_CLOSED"
        }
      ]
    },
    "google-native:gameservices/v1beta:DataAccessOptionsResponse": {
      "description": "Write a Data Access (Gin) log",
      "properties": {
        "logMode": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "logMode"
      ]
    },
    "google-native:gameservices/v1beta:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gameservices/v1beta:LogConfig": {
      "description": "Specifies what kind of log the caller must write",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:CloudAuditOptions",
          "description": "Cloud audit options."
        },
        "counter": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:CounterOptions",
          "description": "Counter options."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:DataAccessOptions",
          "description": "Data access options."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:LogConfigResponse": {
      "description": "Specifies what kind of log the caller must write",
      "properties": {
        "cloudAudit": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:CloudAuditOptionsResponse",
          "description": "Cloud audit options."
        },
        "counter": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:CounterOptionsResponse",
          "description": "Counter options."
        },
        "dataAccess": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:DataAccessOptionsResponse",
          "description": "Data access options."
        }
      },
      "type": "object",
      "required": [
        "cloudAudit",
        "counter",
        "dataAccess"
      ]
    },
    "google-native:gameservices/v1beta:Rule": {
      "description": "A rule to be applied in a Policy.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:gameservices%2Fv1beta:RuleAction",
          "description": "Required"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:Condition"
          },
          "description": "Additional restrictions that must be met. All conditions must pass for the rule to match."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the rule."
        },
        "in": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries."
        },
        "logConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:LogConfig"
          },
          "description": "The config returned to callers of CheckPolicy for any entries that match the LOG action."
        },
        "notIn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries. The format for in and not_in entries can be found at in the Local IAM documentation (see go/local-iam#features)."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs."
        }
      },
      "type": "object"
    },
    "google-native:gameservices/v1beta:RuleAction": {
      "description": "Required",
      "type": "string",
      "enum": [
        {
          "name": "NoAction",
          "description": "Default no action.",
          "value": "NO_ACTION"
        },
        {
          "name": "Allow",
          "description": "Matching 'Entries' grant access.",
          "value": "ALLOW"
        },
        {
          "name": "AllowWithLog",
          "description": "Matching 'Entries' grant access and the caller promises to log the request per the returned log_configs.",
          "value": "ALLOW_WITH_LOG"
        },
        {
          "name": "Deny",
          "description": "Matching 'Entries' deny access.",
          "value": "DENY"
        },
        {
          "name": "DenyWithLog",
          "description": "Matching 'Entries' deny access and the caller promises to log the request per the returned log_configs.",
          "value": "DENY_WITH_LOG"
        },
        {
          "name": "Log",
          "description": "Matching 'Entries' tell IAM.Check callers to generate logs.",
          "value": "LOG"
        }
      ]
    },
    "google-native:gameservices/v1beta:RuleResponse": {
      "description": "A rule to be applied in a Policy.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Required"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:ConditionResponse"
          },
          "description": "Additional restrictions that must be met. All conditions must pass for the rule to match."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the rule."
        },
        "in": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries."
        },
        "logConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:LogConfigResponse"
          },
          "description": "The config returned to callers of CheckPolicy for any entries that match the LOG action."
        },
        "notIn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries. The format for in and not_in entries can be found at in the Local IAM documentation (see go/local-iam#features)."
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs."
        }
      },
      "type": "object",
      "required": [
        "action",
        "conditions",
        "description",
        "in",
        "logConfig",
        "notIn",
        "permissions"
      ]
    },
    "google-native:genomics/v1alpha2:Disk": {
      "description": "A Google Compute Engine disk resource specification.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Deprecated. Disks created by the Pipelines API will be deleted at the end of the pipeline run, regardless of what this field is set to.",
          "deprecationMessage": "Deprecated. Disks created by the Pipelines API will be deleted at the end of the pipeline run, regardless of what this field is set to."
        },
        "mountPoint": {
          "type": "string",
          "description": "Required at create time and cannot be overridden at run time. Specifies the path in the docker container where files on this disk should be located. For example, if `mountPoint` is `/mnt/disk`, and the parameter has `localPath` `inputs/file.txt`, the docker container can access the data at `/mnt/disk/inputs/file.txt`."
        },
        "name": {
          "type": "string",
          "description": "The name of the disk that can be used in the pipeline parameters. Must be 1 - 63 characters. The name \"boot\" is reserved for system use."
        },
        "readOnly": {
          "type": "boolean",
          "description": "Specifies how a sourced-base persistent disk will be mounted. See https://cloud.google.com/compute/docs/disks/persistent-disks#use_multi_instances for more details. Can only be set at create time."
        },
        "sizeGb": {
          "type": "integer",
          "description": "The size of the disk. Defaults to 500 (GB). This field is not applicable for local SSD."
        },
        "source": {
          "type": "string",
          "description": "The full or partial URL of the persistent disk to attach. See https://cloud.google.com/compute/docs/reference/latest/instances#resource and https://cloud.google.com/compute/docs/disks/persistent-disks#snapshots for more details."
        },
        "type": {
          "$ref": "#/types/google-native:genomics%2Fv1alpha2:DiskType",
          "description": "The type of the disk to create."
        }
      },
      "type": "object",
      "required": [
        "name",
        "type"
      ]
    },
    "google-native:genomics/v1alpha2:DiskResponse": {
      "description": "A Google Compute Engine disk resource specification.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Deprecated. Disks created by the Pipelines API will be deleted at the end of the pipeline run, regardless of what this field is set to.",
          "deprecationMessage": "Deprecated. Disks created by the Pipelines API will be deleted at the end of the pipeline run, regardless of what this field is set to."
        },
        "mountPoint": {
          "type": "string",
          "description": "Required at create time and cannot be overridden at run time. Specifies the path in the docker container where files on this disk should be located. For example, if `mountPoint` is `/mnt/disk`, and the parameter has `localPath` `inputs/file.txt`, the docker container can access the data at `/mnt/disk/inputs/file.txt`."
        },
        "name": {
          "type": "string",
          "description": "The name of the disk that can be used in the pipeline parameters. Must be 1 - 63 characters. The name \"boot\" is reserved for system use."
        },
        "readOnly": {
          "type": "boolean",
          "description": "Specifies how a sourced-base persistent disk will be mounted. See https://cloud.google.com/compute/docs/disks/persistent-disks#use_multi_instances for more details. Can only be set at create time."
        },
        "sizeGb": {
          "type": "integer",
          "description": "The size of the disk. Defaults to 500 (GB). This field is not applicable for local SSD."
        },
        "source": {
          "type": "string",
          "description": "The full or partial URL of the persistent disk to attach. See https://cloud.google.com/compute/docs/reference/latest/instances#resource and https://cloud.google.com/compute/docs/disks/persistent-disks#snapshots for more details."
        },
        "type": {
          "type": "string",
          "description": "The type of the disk to create."
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "mountPoint",
        "name",
        "readOnly",
        "sizeGb",
        "source",
        "type"
      ]
    },
    "google-native:genomics/v1alpha2:DiskType": {
      "description": "Required. The type of the disk to create.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default disk type. Use one of the other options below.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "PersistentHdd",
          "description": "Specifies a Google Compute Engine persistent hard disk. See https://cloud.google.com/compute/docs/disks/#pdspecs for details.",
          "value": "PERSISTENT_HDD"
        },
        {
          "name": "PersistentSsd",
          "description": "Specifies a Google Compute Engine persistent solid-state disk. See https://cloud.google.com/compute/docs/disks/#pdspecs for details.",
          "value": "PERSISTENT_SSD"
        },
        {
          "name": "LocalSsd",
          "description": "Specifies a Google Compute Engine local SSD. See https://cloud.google.com/compute/docs/disks/local-ssd for details.",
          "value": "LOCAL_SSD"
        }
      ]
    },
    "google-native:genomics/v1alpha2:DockerExecutor": {
      "description": "The Docker execuctor specification.",
      "properties": {
        "cmd": {
          "type": "string",
          "description": "The command or newline delimited script to run. The command string will be executed within a bash shell. If the command exits with a non-zero exit code, output parameter de-localization will be skipped and the pipeline operation's `error` field will be populated. Maximum command string length is 16384."
        },
        "imageName": {
          "type": "string",
          "description": "Image name from either Docker Hub or Google Container Registry. Users that run pipelines must have READ access to the image."
        }
      },
      "type": "object",
      "required": [
        "cmd",
        "imageName"
      ]
    },
    "google-native:genomics/v1alpha2:DockerExecutorResponse": {
      "description": "The Docker execuctor specification.",
      "properties": {
        "cmd": {
          "type": "string",
          "description": "The command or newline delimited script to run. The command string will be executed within a bash shell. If the command exits with a non-zero exit code, output parameter de-localization will be skipped and the pipeline operation's `error` field will be populated. Maximum command string length is 16384."
        },
        "imageName": {
          "type": "string",
          "description": "Image name from either Docker Hub or Google Container Registry. Users that run pipelines must have READ access to the image."
        }
      },
      "type": "object",
      "required": [
        "cmd",
        "imageName"
      ]
    },
    "google-native:genomics/v1alpha2:LocalCopy": {
      "description": "LocalCopy defines how a remote file should be copied to and from the VM.",
      "properties": {
        "disk": {
          "type": "string",
          "description": "The name of the disk where this parameter is located. Can be the name of one of the disks specified in the Resources field, or \"boot\", which represents the Docker instance's boot disk and has a mount point of `/`."
        },
        "path": {
          "type": "string",
          "description": "The path within the user's docker container where this input should be localized to and from, relative to the specified disk's mount point. For example: file.txt,"
        }
      },
      "type": "object",
      "required": [
        "disk",
        "path"
      ]
    },
    "google-native:genomics/v1alpha2:LocalCopyResponse": {
      "description": "LocalCopy defines how a remote file should be copied to and from the VM.",
      "properties": {
        "disk": {
          "type": "string",
          "description": "The name of the disk where this parameter is located. Can be the name of one of the disks specified in the Resources field, or \"boot\", which represents the Docker instance's boot disk and has a mount point of `/`."
        },
        "path": {
          "type": "string",
          "description": "The path within the user's docker container where this input should be localized to and from, relative to the specified disk's mount point. For example: file.txt,"
        }
      },
      "type": "object",
      "required": [
        "disk",
        "path"
      ]
    },
    "google-native:genomics/v1alpha2:PipelineParameter": {
      "description": "Parameters facilitate setting and delivering data into the pipeline's execution environment. They are defined at create time, with optional defaults, and can be overridden at run time. If `localCopy` is unset, then the parameter specifies a string that is passed as-is into the pipeline, as the value of the environment variable with the given name. A default value can be optionally specified at create time. The default can be overridden at run time using the inputs map. If no default is given, a value must be supplied at runtime. If `localCopy` is defined, then the parameter specifies a data source or sink, both in Google Cloud Storage and on the Docker container where the pipeline computation is run. The service account associated with the Pipeline (by default the project's Compute Engine service account) must have access to the Google Cloud Storage paths. At run time, the Google Cloud Storage paths can be overridden if a default was provided at create time, or must be set otherwise. The pipeline runner should add a key/value pair to either the inputs or outputs map. The indicated data copies will be carried out before/after pipeline execution, just as if the corresponding arguments were provided to `gsutil cp`. For example: Given the following `PipelineParameter`, specified in the `inputParameters` list: ``` {name: \"input_file\", localCopy: {path: \"file.txt\", disk: \"pd1\"}} ``` where `disk` is defined in the `PipelineResources` object as: ``` {name: \"pd1\", mountPoint: \"/mnt/disk/\"} ``` We create a disk named `pd1`, mount it on the host VM, and map `/mnt/pd1` to `/mnt/disk` in the docker container. At runtime, an entry for `input_file` would be required in the inputs map, such as: ``` inputs[\"input_file\"] = \"gs://my-bucket/bar.txt\" ``` This would generate the following gsutil call: ``` gsutil cp gs://my-bucket/bar.txt /mnt/pd1/file.txt ``` The file `/mnt/pd1/file.txt` maps to `/mnt/disk/file.txt` in the Docker container. Acceptable paths are: Google Cloud storage pathLocal path file file glob directory For outputs, the direction of the copy is reversed: ``` gsutil cp /mnt/disk/file.txt gs://my-bucket/bar.txt ``` Acceptable paths are: Local pathGoogle Cloud Storage path file file file directory - directory must already exist glob directory - directory will be created if it doesn't exist One restriction due to docker limitations, is that for outputs that are found on the boot disk, the local path cannot be a glob and must be a file.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "The default value for this parameter. Can be overridden at runtime. If `localCopy` is present, then this must be a Google Cloud Storage path beginning with `gs://`."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description."
        },
        "localCopy": {
          "$ref": "#/types/google-native:genomics%2Fv1alpha2:LocalCopy",
          "description": "If present, this parameter is marked for copying to and from the VM. `LocalCopy` indicates where on the VM the file should be. The value given to this parameter (either at runtime or using `defaultValue`) must be the remote path where the file should be."
        },
        "name": {
          "type": "string",
          "description": "Name of the parameter - the pipeline runner uses this string as the key to the input and output maps in RunPipeline."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:genomics/v1alpha2:PipelineParameterResponse": {
      "description": "Parameters facilitate setting and delivering data into the pipeline's execution environment. They are defined at create time, with optional defaults, and can be overridden at run time. If `localCopy` is unset, then the parameter specifies a string that is passed as-is into the pipeline, as the value of the environment variable with the given name. A default value can be optionally specified at create time. The default can be overridden at run time using the inputs map. If no default is given, a value must be supplied at runtime. If `localCopy` is defined, then the parameter specifies a data source or sink, both in Google Cloud Storage and on the Docker container where the pipeline computation is run. The service account associated with the Pipeline (by default the project's Compute Engine service account) must have access to the Google Cloud Storage paths. At run time, the Google Cloud Storage paths can be overridden if a default was provided at create time, or must be set otherwise. The pipeline runner should add a key/value pair to either the inputs or outputs map. The indicated data copies will be carried out before/after pipeline execution, just as if the corresponding arguments were provided to `gsutil cp`. For example: Given the following `PipelineParameter`, specified in the `inputParameters` list: ``` {name: \"input_file\", localCopy: {path: \"file.txt\", disk: \"pd1\"}} ``` where `disk` is defined in the `PipelineResources` object as: ``` {name: \"pd1\", mountPoint: \"/mnt/disk/\"} ``` We create a disk named `pd1`, mount it on the host VM, and map `/mnt/pd1` to `/mnt/disk` in the docker container. At runtime, an entry for `input_file` would be required in the inputs map, such as: ``` inputs[\"input_file\"] = \"gs://my-bucket/bar.txt\" ``` This would generate the following gsutil call: ``` gsutil cp gs://my-bucket/bar.txt /mnt/pd1/file.txt ``` The file `/mnt/pd1/file.txt` maps to `/mnt/disk/file.txt` in the Docker container. Acceptable paths are: Google Cloud storage pathLocal path file file glob directory For outputs, the direction of the copy is reversed: ``` gsutil cp /mnt/disk/file.txt gs://my-bucket/bar.txt ``` Acceptable paths are: Local pathGoogle Cloud Storage path file file file directory - directory must already exist glob directory - directory will be created if it doesn't exist One restriction due to docker limitations, is that for outputs that are found on the boot disk, the local path cannot be a glob and must be a file.",
      "properties": {
        "defaultValue": {
          "type": "string",
          "description": "The default value for this parameter. Can be overridden at runtime. If `localCopy` is present, then this must be a Google Cloud Storage path beginning with `gs://`."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description."
        },
        "localCopy": {
          "$ref": "#/types/google-native:genomics%2Fv1alpha2:LocalCopyResponse",
          "description": "If present, this parameter is marked for copying to and from the VM. `LocalCopy` indicates where on the VM the file should be. The value given to this parameter (either at runtime or using `defaultValue`) must be the remote path where the file should be."
        },
        "name": {
          "type": "string",
          "description": "Name of the parameter - the pipeline runner uses this string as the key to the input and output maps in RunPipeline."
        }
      },
      "type": "object",
      "required": [
        "defaultValue",
        "description",
        "localCopy",
        "name"
      ]
    },
    "google-native:genomics/v1alpha2:PipelineResources": {
      "description": "The system resources for the pipeline run.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "Optional. The number of accelerators of the specified type to attach. By specifying this parameter, you will download and install the following third-party software onto your managed Compute Engine instances: NVIDIA® Tesla® drivers and NVIDIA® CUDA toolkit."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Optional. The Compute Engine defined accelerator type. By specifying this parameter, you will download and install the following third-party software onto your managed Compute Engine instances: NVIDIA® Tesla® drivers and NVIDIA® CUDA toolkit. Please see https://cloud.google.com/compute/docs/gpus/ for a list of available accelerator types."
        },
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "The size of the boot disk. Defaults to 10 (GB)."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:genomics%2Fv1alpha2:Disk"
          },
          "description": "Disks to attach."
        },
        "minimumCpuCores": {
          "type": "integer",
          "description": "The minimum number of cores to use. Defaults to 1."
        },
        "minimumRamGb": {
          "type": "number",
          "description": "The minimum amount of RAM to use. Defaults to 3.75 (GB)"
        },
        "noAddress": {
          "type": "boolean",
          "description": "Whether to assign an external IP to the instance. This is an experimental feature that may go away. Defaults to false. Corresponds to `--no_address` flag for [gcloud compute instances create] (https://cloud.google.com/sdk/gcloud/reference/compute/instances/create). In order to use this, must be true for both create time and run time. Cannot be true at run time if false at create time. If you need to ssh into a private IP VM for debugging, you can ssh to a public VM and then ssh into the private VM's Internal IP. If noAddress is set, this pipeline run may only load docker images from Google Container Registry and not Docker Hub. Before using this, you must [configure access to Google services from internal IPs](https://cloud.google.com/compute/docs/configure-private-google-access#configuring_access_to_google_services_from_internal_ips)."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Whether to use preemptible VMs. Defaults to `false`. In order to use this, must be true for both create time and run time. Cannot be true at run time if false at create time."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of Google Compute Engine availability zones to which resource creation will restricted. If empty, any zone may be chosen."
        }
      },
      "type": "object"
    },
    "google-native:genomics/v1alpha2:PipelineResourcesResponse": {
      "description": "The system resources for the pipeline run.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "Optional. The number of accelerators of the specified type to attach. By specifying this parameter, you will download and install the following third-party software onto your managed Compute Engine instances: NVIDIA® Tesla® drivers and NVIDIA® CUDA toolkit."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Optional. The Compute Engine defined accelerator type. By specifying this parameter, you will download and install the following third-party software onto your managed Compute Engine instances: NVIDIA® Tesla® drivers and NVIDIA® CUDA toolkit. Please see https://cloud.google.com/compute/docs/gpus/ for a list of available accelerator types."
        },
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "The size of the boot disk. Defaults to 10 (GB)."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:genomics%2Fv1alpha2:DiskResponse"
          },
          "description": "Disks to attach."
        },
        "minimumCpuCores": {
          "type": "integer",
          "description": "The minimum number of cores to use. Defaults to 1."
        },
        "minimumRamGb": {
          "type": "number",
          "description": "The minimum amount of RAM to use. Defaults to 3.75 (GB)"
        },
        "noAddress": {
          "type": "boolean",
          "description": "Whether to assign an external IP to the instance. This is an experimental feature that may go away. Defaults to false. Corresponds to `--no_address` flag for [gcloud compute instances create] (https://cloud.google.com/sdk/gcloud/reference/compute/instances/create). In order to use this, must be true for both create time and run time. Cannot be true at run time if false at create time. If you need to ssh into a private IP VM for debugging, you can ssh to a public VM and then ssh into the private VM's Internal IP. If noAddress is set, this pipeline run may only load docker images from Google Container Registry and not Docker Hub. Before using this, you must [configure access to Google services from internal IPs](https://cloud.google.com/compute/docs/configure-private-google-access#configuring_access_to_google_services_from_internal_ips)."
        },
        "preemptible": {
          "type": "boolean",
          "description": "Whether to use preemptible VMs. Defaults to `false`. In order to use this, must be true for both create time and run time. Cannot be true at run time if false at create time."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of Google Compute Engine availability zones to which resource creation will restricted. If empty, any zone may be chosen."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType",
        "bootDiskSizeGb",
        "disks",
        "minimumCpuCores",
        "minimumRamGb",
        "noAddress",
        "preemptible",
        "zones"
      ]
    },
    "google-native:gkebackup/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:gkebackup/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:gkebackup/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:gkebackup/v1:BackupConfig": {
      "description": "BackupConfig defines the configuration of Backups created via this BackupPlan.",
      "properties": {
        "allNamespaces": {
          "type": "boolean",
          "description": "If True, include all namespaced resources"
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:EncryptionKey",
          "description": "Optional. This defines a customer managed encryption key that will be used to encrypt the \"config\" portion (the Kubernetes resources) of Backups created via this plan. Default (empty): Config backup artifacts will not be encrypted."
        },
        "includeSecrets": {
          "type": "boolean",
          "description": "Optional. This flag specifies whether Kubernetes Secret resources should be included when they fall into the scope of Backups. Default: False"
        },
        "includeVolumeData": {
          "type": "boolean",
          "description": "Optional. This flag specifies whether volume data should be backed up when PVCs are included in the scope of a Backup. Default: False"
        },
        "selectedApplications": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacedNames",
          "description": "If set, include just the resources referenced by the listed ProtectedApplications."
        },
        "selectedNamespaces": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:Namespaces",
          "description": "If set, include just the resources in the listed namespaces."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:BackupConfigResponse": {
      "description": "BackupConfig defines the configuration of Backups created via this BackupPlan.",
      "properties": {
        "allNamespaces": {
          "type": "boolean",
          "description": "If True, include all namespaced resources"
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:EncryptionKeyResponse",
          "description": "Optional. This defines a customer managed encryption key that will be used to encrypt the \"config\" portion (the Kubernetes resources) of Backups created via this plan. Default (empty): Config backup artifacts will not be encrypted."
        },
        "includeSecrets": {
          "type": "boolean",
          "description": "Optional. This flag specifies whether Kubernetes Secret resources should be included when they fall into the scope of Backups. Default: False"
        },
        "includeVolumeData": {
          "type": "boolean",
          "description": "Optional. This flag specifies whether volume data should be backed up when PVCs are included in the scope of a Backup. Default: False"
        },
        "selectedApplications": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacedNamesResponse",
          "description": "If set, include just the resources referenced by the listed ProtectedApplications."
        },
        "selectedNamespaces": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacesResponse",
          "description": "If set, include just the resources in the listed namespaces."
        }
      },
      "type": "object",
      "required": [
        "allNamespaces",
        "encryptionKey",
        "includeSecrets",
        "includeVolumeData",
        "selectedApplications",
        "selectedNamespaces"
      ]
    },
    "google-native:gkebackup/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gkebackup/v1:ClusterMetadataResponse": {
      "description": "Information about the GKE cluster from which this Backup was created.",
      "properties": {
        "anthosVersion": {
          "type": "string",
          "description": "Anthos version"
        },
        "backupCrdVersions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of the Backup for GKE CRD versions found in the cluster."
        },
        "cluster": {
          "type": "string",
          "description": "The source cluster from which this Backup was created. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*` This is inherited from the parent BackupPlan's cluster field."
        },
        "gkeVersion": {
          "type": "string",
          "description": "GKE version"
        },
        "k8sVersion": {
          "type": "string",
          "description": "The Kubernetes server version of the source cluster."
        }
      },
      "type": "object",
      "required": [
        "anthosVersion",
        "backupCrdVersions",
        "cluster",
        "gkeVersion",
        "k8sVersion"
      ]
    },
    "google-native:gkebackup/v1:ClusterResourceRestoreScope": {
      "description": "Defines the scope of cluster-scoped resources to restore. Some group kinds are not reasonable choices for a restore, and will cause an error if selected here. Any scope selection that would restore \"all valid\" resources automatically excludes these group kinds. - gkebackup.gke.io/BackupJob - gkebackup.gke.io/RestoreJob - metrics.k8s.io/NodeMetrics - migration.k8s.io/StorageState - migration.k8s.io/StorageVersionMigration - Node - snapshot.storage.k8s.io/VolumeSnapshotContent - storage.k8s.io/CSINode Some group kinds are driven by restore configuration elsewhere, and will cause an error if selected here. - Namespace - PersistentVolume",
      "properties": {
        "allGroupKinds": {
          "type": "boolean",
          "description": "Optional. If True, all valid cluster-scoped resources will be restored. Mutually exclusive to any other field in the message."
        },
        "excludedGroupKinds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:GroupKind"
          },
          "description": "Optional. A list of cluster-scoped resource group kinds to NOT restore from the backup. If specified, all valid cluster-scoped resources will be restored except for those specified in the list. Mutually exclusive to any other field in the message."
        },
        "noGroupKinds": {
          "type": "boolean",
          "description": "Optional. If True, no cluster-scoped resources will be restored. This has the same restore scope as if the message is not defined. Mutually exclusive to any other field in the message."
        },
        "selectedGroupKinds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:GroupKind"
          },
          "description": "Optional. A list of cluster-scoped resource group kinds to restore from the backup. If specified, only the selected resources will be restored. Mutually exclusive to any other field in the message."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:ClusterResourceRestoreScopeResponse": {
      "description": "Defines the scope of cluster-scoped resources to restore. Some group kinds are not reasonable choices for a restore, and will cause an error if selected here. Any scope selection that would restore \"all valid\" resources automatically excludes these group kinds. - gkebackup.gke.io/BackupJob - gkebackup.gke.io/RestoreJob - metrics.k8s.io/NodeMetrics - migration.k8s.io/StorageState - migration.k8s.io/StorageVersionMigration - Node - snapshot.storage.k8s.io/VolumeSnapshotContent - storage.k8s.io/CSINode Some group kinds are driven by restore configuration elsewhere, and will cause an error if selected here. - Namespace - PersistentVolume",
      "properties": {
        "allGroupKinds": {
          "type": "boolean",
          "description": "Optional. If True, all valid cluster-scoped resources will be restored. Mutually exclusive to any other field in the message."
        },
        "excludedGroupKinds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:GroupKindResponse"
          },
          "description": "Optional. A list of cluster-scoped resource group kinds to NOT restore from the backup. If specified, all valid cluster-scoped resources will be restored except for those specified in the list. Mutually exclusive to any other field in the message."
        },
        "noGroupKinds": {
          "type": "boolean",
          "description": "Optional. If True, no cluster-scoped resources will be restored. This has the same restore scope as if the message is not defined. Mutually exclusive to any other field in the message."
        },
        "selectedGroupKinds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:GroupKindResponse"
          },
          "description": "Optional. A list of cluster-scoped resource group kinds to restore from the backup. If specified, only the selected resources will be restored. Mutually exclusive to any other field in the message."
        }
      },
      "type": "object",
      "required": [
        "allGroupKinds",
        "excludedGroupKinds",
        "noGroupKinds",
        "selectedGroupKinds"
      ]
    },
    "google-native:gkebackup/v1:EncryptionKey": {
      "description": "Defined a customer managed encryption key that will be used to encrypt Backup artifacts.",
      "properties": {
        "gcpKmsEncryptionKey": {
          "type": "string",
          "description": "Optional. Google Cloud KMS encryption key. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`"
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:EncryptionKeyResponse": {
      "description": "Defined a customer managed encryption key that will be used to encrypt Backup artifacts.",
      "properties": {
        "gcpKmsEncryptionKey": {
          "type": "string",
          "description": "Optional. Google Cloud KMS encryption key. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`"
        }
      },
      "type": "object",
      "required": [
        "gcpKmsEncryptionKey"
      ]
    },
    "google-native:gkebackup/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gkebackup/v1:GroupKind": {
      "description": "This is a direct map to the Kubernetes GroupKind type [GroupKind](https://godoc.org/k8s.io/apimachinery/pkg/runtime/schema#GroupKind) and is used for identifying specific \"types\" of resources to restore.",
      "properties": {
        "resourceGroup": {
          "type": "string",
          "description": "Optional. API group string of a Kubernetes resource, e.g. \"apiextensions.k8s.io\", \"storage.k8s.io\", etc. Note: use empty string for core API group"
        },
        "resourceKind": {
          "type": "string",
          "description": "Optional. Kind of a Kubernetes resource, must be in UpperCamelCase (PascalCase) and singular form. E.g. \"CustomResourceDefinition\", \"StorageClass\", etc."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:GroupKindResponse": {
      "description": "This is a direct map to the Kubernetes GroupKind type [GroupKind](https://godoc.org/k8s.io/apimachinery/pkg/runtime/schema#GroupKind) and is used for identifying specific \"types\" of resources to restore.",
      "properties": {
        "resourceGroup": {
          "type": "string",
          "description": "Optional. API group string of a Kubernetes resource, e.g. \"apiextensions.k8s.io\", \"storage.k8s.io\", etc. Note: use empty string for core API group"
        },
        "resourceKind": {
          "type": "string",
          "description": "Optional. Kind of a Kubernetes resource, must be in UpperCamelCase (PascalCase) and singular form. E.g. \"CustomResourceDefinition\", \"StorageClass\", etc."
        }
      },
      "type": "object",
      "required": [
        "resourceGroup",
        "resourceKind"
      ]
    },
    "google-native:gkebackup/v1:NamespacedName": {
      "description": "A reference to a namespaced resource in Kubernetes.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. The name of the Kubernetes resource."
        },
        "namespace": {
          "type": "string",
          "description": "Optional. The Namespace of the Kubernetes resource."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:NamespacedNameResponse": {
      "description": "A reference to a namespaced resource in Kubernetes.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional. The name of the Kubernetes resource."
        },
        "namespace": {
          "type": "string",
          "description": "Optional. The Namespace of the Kubernetes resource."
        }
      },
      "type": "object",
      "required": [
        "name",
        "namespace"
      ]
    },
    "google-native:gkebackup/v1:NamespacedNames": {
      "description": "A list of namespaced Kubernetes resources.",
      "properties": {
        "namespacedNames": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacedName"
          },
          "description": "Optional. A list of namespaced Kubernetes resources."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:NamespacedNamesResponse": {
      "description": "A list of namespaced Kubernetes resources.",
      "properties": {
        "namespacedNames": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacedNameResponse"
          },
          "description": "Optional. A list of namespaced Kubernetes resources."
        }
      },
      "type": "object",
      "required": [
        "namespacedNames"
      ]
    },
    "google-native:gkebackup/v1:Namespaces": {
      "description": "A list of Kubernetes Namespaces",
      "properties": {
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Kubernetes Namespaces"
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:NamespacesResponse": {
      "description": "A list of Kubernetes Namespaces",
      "properties": {
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of Kubernetes Namespaces"
        }
      },
      "type": "object",
      "required": [
        "namespaces"
      ]
    },
    "google-native:gkebackup/v1:ResourceFilter": {
      "description": "ResourceFilter specifies matching criteria to limit the scope of a change to a specific set of kubernetes resources that are selected for restoration from a backup.",
      "properties": {
        "groupKinds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:GroupKind"
          },
          "description": "Optional. (Filtering parameter) Any resource subject to transformation must belong to one of the listed \"types\". If this field is not provided, no type filtering will be performed (all resources of all types matching previous filtering parameters will be candidates for transformation)."
        },
        "jsonPath": {
          "type": "string",
          "description": "Optional. This is a [JSONPath] (https://github.com/json-path/JsonPath/blob/master/README.md) expression that matches specific fields of candidate resources and it operates as a filtering parameter (resources that are not matched with this expression will not be candidates for transformation)."
        },
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. (Filtering parameter) Any resource subject to transformation must be contained within one of the listed Kubernetes Namespace in the Backup. If this field is not provided, no namespace filtering will be performed (all resources in all Namespaces, including all cluster-scoped resources, will be candidates for transformation)."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:ResourceFilterResponse": {
      "description": "ResourceFilter specifies matching criteria to limit the scope of a change to a specific set of kubernetes resources that are selected for restoration from a backup.",
      "properties": {
        "groupKinds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:GroupKindResponse"
          },
          "description": "Optional. (Filtering parameter) Any resource subject to transformation must belong to one of the listed \"types\". If this field is not provided, no type filtering will be performed (all resources of all types matching previous filtering parameters will be candidates for transformation)."
        },
        "jsonPath": {
          "type": "string",
          "description": "Optional. This is a [JSONPath] (https://github.com/json-path/JsonPath/blob/master/README.md) expression that matches specific fields of candidate resources and it operates as a filtering parameter (resources that are not matched with this expression will not be candidates for transformation)."
        },
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. (Filtering parameter) Any resource subject to transformation must be contained within one of the listed Kubernetes Namespace in the Backup. If this field is not provided, no namespace filtering will be performed (all resources in all Namespaces, including all cluster-scoped resources, will be candidates for transformation)."
        }
      },
      "type": "object",
      "required": [
        "groupKinds",
        "jsonPath",
        "namespaces"
      ]
    },
    "google-native:gkebackup/v1:RestoreConfig": {
      "description": "Configuration of a restore. Next id: 13",
      "properties": {
        "allNamespaces": {
          "type": "boolean",
          "description": "Restore all namespaced resources in the Backup if set to \"True\". Specifying this field to \"False\" is an error."
        },
        "clusterResourceConflictPolicy": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:RestoreConfigClusterResourceConflictPolicy",
          "description": "Optional. Defines the behavior for handling the situation where cluster-scoped resources being restored already exist in the target cluster. This MUST be set to a value other than CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED if cluster_resource_restore_scope is not empty."
        },
        "clusterResourceRestoreScope": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:ClusterResourceRestoreScope",
          "description": "Optional. Identifies the cluster-scoped resources to restore from the Backup. Not specifying it means NO cluster resource will be restored."
        },
        "excludedNamespaces": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:Namespaces",
          "description": "A list of selected namespaces excluded from restoration. All namespaces except those in this list will be restored."
        },
        "namespacedResourceRestoreMode": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:RestoreConfigNamespacedResourceRestoreMode",
          "description": "Optional. Defines the behavior for handling the situation where sets of namespaced resources being restored already exist in the target cluster. This MUST be set to a value other than NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED."
        },
        "noNamespaces": {
          "type": "boolean",
          "description": "Do not restore any namespaced resources if set to \"True\". Specifying this field to \"False\" is not allowed."
        },
        "selectedApplications": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacedNames",
          "description": "A list of selected ProtectedApplications to restore. The listed ProtectedApplications and all the resources to which they refer will be restored."
        },
        "selectedNamespaces": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:Namespaces",
          "description": "A list of selected Namespaces to restore from the Backup. The listed Namespaces and all resources contained in them will be restored."
        },
        "substitutionRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:SubstitutionRule"
          },
          "description": "Optional. A list of transformation rules to be applied against Kubernetes resources as they are selected for restoration from a Backup. Rules are executed in order defined - this order matters, as changes made by a rule may impact the filtering logic of subsequent rules. An empty list means no substitution will occur."
        },
        "transformationRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:TransformationRule"
          },
          "description": "Optional. A list of transformation rules to be applied against Kubernetes resources as they are selected for restoration from a Backup. Rules are executed in order defined - this order matters, as changes made by a rule may impact the filtering logic of subsequent rules. An empty list means no transformation will occur."
        },
        "volumeDataRestorePolicy": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:RestoreConfigVolumeDataRestorePolicy",
          "description": "Optional. Specifies the mechanism to be used to restore volume data. Default: VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED (will be treated as NO_VOLUME_DATA_RESTORATION)."
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:RestoreConfigClusterResourceConflictPolicy": {
      "description": "Optional. Defines the behavior for handling the situation where cluster-scoped resources being restored already exist in the target cluster. This MUST be set to a value other than CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED if cluster_resource_restore_scope is not empty.",
      "type": "string",
      "enum": [
        {
          "name": "ClusterResourceConflictPolicyUnspecified",
          "description": "Unspecified. Only allowed if no cluster-scoped resources will be restored.",
          "value": "CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED"
        },
        {
          "name": "UseExistingVersion",
          "description": "Do not attempt to restore the conflicting resource.",
          "value": "USE_EXISTING_VERSION"
        },
        {
          "name": "UseBackupVersion",
          "description": "Delete the existing version before re-creating it from the Backup. This is a dangerous option which could cause unintentional data loss if used inappropriately. For example, deleting a CRD will cause Kubernetes to delete all CRs of that type.",
          "value": "USE_BACKUP_VERSION"
        }
      ]
    },
    "google-native:gkebackup/v1:RestoreConfigNamespacedResourceRestoreMode": {
      "description": "Optional. Defines the behavior for handling the situation where sets of namespaced resources being restored already exist in the target cluster. This MUST be set to a value other than NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED.",
      "type": "string",
      "enum": [
        {
          "name": "NamespacedResourceRestoreModeUnspecified",
          "description": "Unspecified (invalid).",
          "value": "NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED"
        },
        {
          "name": "DeleteAndRestore",
          "description": "When conflicting top-level resources (either Namespaces or ProtectedApplications, depending upon the scope) are encountered, this will first trigger a delete of the conflicting resource AND ALL OF ITS REFERENCED RESOURCES (e.g., all resources in the Namespace or all resources referenced by the ProtectedApplication) before restoring the resources from the Backup. This mode should only be used when you are intending to revert some portion of a cluster to an earlier state.",
          "value": "DELETE_AND_RESTORE"
        },
        {
          "name": "FailOnConflict",
          "description": "If conflicting top-level resources (either Namespaces or ProtectedApplications, depending upon the scope) are encountered at the beginning of a restore process, the Restore will fail. If a conflict occurs during the restore process itself (e.g., because an out of band process creates conflicting resources), a conflict will be reported.",
          "value": "FAIL_ON_CONFLICT"
        }
      ]
    },
    "google-native:gkebackup/v1:RestoreConfigResponse": {
      "description": "Configuration of a restore. Next id: 13",
      "properties": {
        "allNamespaces": {
          "type": "boolean",
          "description": "Restore all namespaced resources in the Backup if set to \"True\". Specifying this field to \"False\" is an error."
        },
        "clusterResourceConflictPolicy": {
          "type": "string",
          "description": "Optional. Defines the behavior for handling the situation where cluster-scoped resources being restored already exist in the target cluster. This MUST be set to a value other than CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED if cluster_resource_restore_scope is not empty."
        },
        "clusterResourceRestoreScope": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:ClusterResourceRestoreScopeResponse",
          "description": "Optional. Identifies the cluster-scoped resources to restore from the Backup. Not specifying it means NO cluster resource will be restored."
        },
        "excludedNamespaces": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacesResponse",
          "description": "A list of selected namespaces excluded from restoration. All namespaces except those in this list will be restored."
        },
        "namespacedResourceRestoreMode": {
          "type": "string",
          "description": "Optional. Defines the behavior for handling the situation where sets of namespaced resources being restored already exist in the target cluster. This MUST be set to a value other than NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED."
        },
        "noNamespaces": {
          "type": "boolean",
          "description": "Do not restore any namespaced resources if set to \"True\". Specifying this field to \"False\" is not allowed."
        },
        "selectedApplications": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacedNamesResponse",
          "description": "A list of selected ProtectedApplications to restore. The listed ProtectedApplications and all the resources to which they refer will be restored."
        },
        "selectedNamespaces": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacesResponse",
          "description": "A list of selected Namespaces to restore from the Backup. The listed Namespaces and all resources contained in them will be restored."
        },
        "substitutionRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:SubstitutionRuleResponse"
          },
          "description": "Optional. A list of transformation rules to be applied against Kubernetes resources as they are selected for restoration from a Backup. Rules are executed in order defined - this order matters, as changes made by a rule may impact the filtering logic of subsequent rules. An empty list means no substitution will occur."
        },
        "transformationRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:TransformationRuleResponse"
          },
          "description": "Optional. A list of transformation rules to be applied against Kubernetes resources as they are selected for restoration from a Backup. Rules are executed in order defined - this order matters, as changes made by a rule may impact the filtering logic of subsequent rules. An empty list means no transformation will occur."
        },
        "volumeDataRestorePolicy": {
          "type": "string",
          "description": "Optional. Specifies the mechanism to be used to restore volume data. Default: VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED (will be treated as NO_VOLUME_DATA_RESTORATION)."
        }
      },
      "type": "object",
      "required": [
        "allNamespaces",
        "clusterResourceConflictPolicy",
        "clusterResourceRestoreScope",
        "excludedNamespaces",
        "namespacedResourceRestoreMode",
        "noNamespaces",
        "selectedApplications",
        "selectedNamespaces",
        "substitutionRules",
        "transformationRules",
        "volumeDataRestorePolicy"
      ]
    },
    "google-native:gkebackup/v1:RestoreConfigVolumeDataRestorePolicy": {
      "description": "Optional. Specifies the mechanism to be used to restore volume data. Default: VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED (will be treated as NO_VOLUME_DATA_RESTORATION).",
      "type": "string",
      "enum": [
        {
          "name": "VolumeDataRestorePolicyUnspecified",
          "description": "Unspecified (illegal).",
          "value": "VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED"
        },
        {
          "name": "RestoreVolumeDataFromBackup",
          "description": "For each PVC to be restored, create a new underlying volume and PV from the corresponding VolumeBackup contained within the Backup.",
          "value": "RESTORE_VOLUME_DATA_FROM_BACKUP"
        },
        {
          "name": "ReuseVolumeHandleFromBackup",
          "description": "For each PVC to be restored, attempt to reuse the original PV contained in the Backup (with its original underlying volume). This option is likely only usable when restoring a workload to its original cluster.",
          "value": "REUSE_VOLUME_HANDLE_FROM_BACKUP"
        },
        {
          "name": "NoVolumeDataRestoration",
          "description": "For each PVC to be restored, create PVC without any particular action to restore data. In this case, the normal Kubernetes provisioning logic would kick in, and this would likely result in either dynamically provisioning blank PVs or binding to statically provisioned PVs.",
          "value": "NO_VOLUME_DATA_RESTORATION"
        }
      ]
    },
    "google-native:gkebackup/v1:RetentionPolicy": {
      "description": "RetentionPolicy defines a Backup retention policy for a BackupPlan.",
      "properties": {
        "backupDeleteLockDays": {
          "type": "integer",
          "description": "Optional. Minimum age for Backups created via this BackupPlan (in days). This field MUST be an integer value between 0-90 (inclusive). A Backup created under this BackupPlan will NOT be deletable until it reaches Backup's (create_time + backup_delete_lock_days). Updating this field of a BackupPlan does NOT affect existing Backups under it. Backups created AFTER a successful update will inherit the new value. Default: 0 (no delete blocking)"
        },
        "backupRetainDays": {
          "type": "integer",
          "description": "Optional. The default maximum age of a Backup created via this BackupPlan. This field MUST be an integer value >= 0 and <= 365. If specified, a Backup created under this BackupPlan will be automatically deleted after its age reaches (create_time + backup_retain_days). If not specified, Backups created under this BackupPlan will NOT be subject to automatic deletion. Updating this field does NOT affect existing Backups under it. Backups created AFTER a successful update will automatically pick up the new value. NOTE: backup_retain_days must be >= backup_delete_lock_days. If cron_schedule is defined, then this must be <= 360 * the creation interval. If rpo_config is defined, then this must be <= 360 * target_rpo_minutes / (1440minutes/day). Default: 0 (no automatic deletion)"
        },
        "locked": {
          "type": "boolean",
          "description": "Optional. This flag denotes whether the retention policy of this BackupPlan is locked. If set to True, no further update is allowed on this policy, including the `locked` field itself. Default: False"
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:RetentionPolicyResponse": {
      "description": "RetentionPolicy defines a Backup retention policy for a BackupPlan.",
      "properties": {
        "backupDeleteLockDays": {
          "type": "integer",
          "description": "Optional. Minimum age for Backups created via this BackupPlan (in days). This field MUST be an integer value between 0-90 (inclusive). A Backup created under this BackupPlan will NOT be deletable until it reaches Backup's (create_time + backup_delete_lock_days). Updating this field of a BackupPlan does NOT affect existing Backups under it. Backups created AFTER a successful update will inherit the new value. Default: 0 (no delete blocking)"
        },
        "backupRetainDays": {
          "type": "integer",
          "description": "Optional. The default maximum age of a Backup created via this BackupPlan. This field MUST be an integer value >= 0 and <= 365. If specified, a Backup created under this BackupPlan will be automatically deleted after its age reaches (create_time + backup_retain_days). If not specified, Backups created under this BackupPlan will NOT be subject to automatic deletion. Updating this field does NOT affect existing Backups under it. Backups created AFTER a successful update will automatically pick up the new value. NOTE: backup_retain_days must be >= backup_delete_lock_days. If cron_schedule is defined, then this must be <= 360 * the creation interval. If rpo_config is defined, then this must be <= 360 * target_rpo_minutes / (1440minutes/day). Default: 0 (no automatic deletion)"
        },
        "locked": {
          "type": "boolean",
          "description": "Optional. This flag denotes whether the retention policy of this BackupPlan is locked. If set to True, no further update is allowed on this policy, including the `locked` field itself. Default: False"
        }
      },
      "type": "object",
      "required": [
        "backupDeleteLockDays",
        "backupRetainDays",
        "locked"
      ]
    },
    "google-native:gkebackup/v1:Schedule": {
      "description": "Defines scheduling parameters for automatically creating Backups via this BackupPlan.",
      "properties": {
        "cronSchedule": {
          "type": "string",
          "description": "Optional. A standard [cron](https://wikipedia.com/wiki/cron) string that defines a repeating schedule for creating Backups via this BackupPlan. This is mutually exclusive with the rpo_config field since at most one schedule can be defined for a BackupPlan. If this is defined, then backup_retain_days must also be defined. Default (empty): no automatic backup creation will occur."
        },
        "paused": {
          "type": "boolean",
          "description": "Optional. This flag denotes whether automatic Backup creation is paused for this BackupPlan. Default: False"
        }
      },
      "type": "object"
    },
    "google-native:gkebackup/v1:ScheduleResponse": {
      "description": "Defines scheduling parameters for automatically creating Backups via this BackupPlan.",
      "properties": {
        "cronSchedule": {
          "type": "string",
          "description": "Optional. A standard [cron](https://wikipedia.com/wiki/cron) string that defines a repeating schedule for creating Backups via this BackupPlan. This is mutually exclusive with the rpo_config field since at most one schedule can be defined for a BackupPlan. If this is defined, then backup_retain_days must also be defined. Default (empty): no automatic backup creation will occur."
        },
        "paused": {
          "type": "boolean",
          "description": "Optional. This flag denotes whether automatic Backup creation is paused for this BackupPlan. Default: False"
        }
      },
      "type": "object",
      "required": [
        "cronSchedule",
        "paused"
      ]
    },
    "google-native:gkebackup/v1:SubstitutionRule": {
      "description": "A transformation rule to be applied against Kubernetes resources as they are selected for restoration from a Backup. A rule contains both filtering logic (which resources are subject to substitution) and substitution logic.",
      "properties": {
        "newValue": {
          "type": "string",
          "description": "Optional. This is the new value to set for any fields that pass the filtering and selection criteria. To remove a value from a Kubernetes resource, either leave this field unspecified, or set it to the empty string (\"\")."
        },
        "originalValuePattern": {
          "type": "string",
          "description": "Optional. (Filtering parameter) This is a [regular expression] (https://en.wikipedia.org/wiki/Regular_expression) that is compared against the fields matched by the target_json_path expression (and must also have passed the previous filters). Substitution will not be performed against fields whose value does not match this expression. If this field is NOT specified, then ALL fields matched by the target_json_path expression will undergo substitution. Note that an empty (e.g., \"\", rather than unspecified) value for this field will only match empty fields."
        },
        "targetGroupKinds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:GroupKind"
          },
          "description": "Optional. (Filtering parameter) Any resource subject to substitution must belong to one of the listed \"types\". If this field is not provided, no type filtering will be performed (all resources of all types matching previous filtering parameters will be candidates for substitution)."
        },
        "targetJsonPath": {
          "type": "string",
          "description": "This is a [JSONPath] (https://kubernetes.io/docs/reference/kubectl/jsonpath/) expression that matches specific fields of candidate resources and it operates as both a filtering parameter (resources that are not matched with this expression will not be candidates for substitution) as well as a field identifier (identifies exactly which fields out of the candidate resources will be modified)."
        },
        "targetNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. (Filtering parameter) Any resource subject to substitution must be contained within one of the listed Kubernetes Namespace in the Backup. If this field is not provided, no namespace filtering will be performed (all resources in all Namespaces, including all cluster-scoped resources, will be candidates for substitution). To mix cluster-scoped and namespaced resources in the same rule, use an empty string (\"\") as one of the target namespaces."
        }
      },
      "type": "object",
      "required": [
        "targetJsonPath"
      ]
    },
    "google-native:gkebackup/v1:SubstitutionRuleResponse": {
      "description": "A transformation rule to be applied against Kubernetes resources as they are selected for restoration from a Backup. A rule contains both filtering logic (which resources are subject to substitution) and substitution logic.",
      "properties": {
        "newValue": {
          "type": "string",
          "description": "Optional. This is the new value to set for any fields that pass the filtering and selection criteria. To remove a value from a Kubernetes resource, either leave this field unspecified, or set it to the empty string (\"\")."
        },
        "originalValuePattern": {
          "type": "string",
          "description": "Optional. (Filtering parameter) This is a [regular expression] (https://en.wikipedia.org/wiki/Regular_expression) that is compared against the fields matched by the target_json_path expression (and must also have passed the previous filters). Substitution will not be performed against fields whose value does not match this expression. If this field is NOT specified, then ALL fields matched by the target_json_path expression will undergo substitution. Note that an empty (e.g., \"\", rather than unspecified) value for this field will only match empty fields."
        },
        "targetGroupKinds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:GroupKindResponse"
          },
          "description": "Optional. (Filtering parameter) Any resource subject to substitution must belong to one of the listed \"types\". If this field is not provided, no type filtering will be performed (all resources of all types matching previous filtering parameters will be candidates for substitution)."
        },
        "targetJsonPath": {
          "type": "string",
          "description": "This is a [JSONPath] (https://kubernetes.io/docs/reference/kubectl/jsonpath/) expression that matches specific fields of candidate resources and it operates as both a filtering parameter (resources that are not matched with this expression will not be candidates for substitution) as well as a field identifier (identifies exactly which fields out of the candidate resources will be modified)."
        },
        "targetNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. (Filtering parameter) Any resource subject to substitution must be contained within one of the listed Kubernetes Namespace in the Backup. If this field is not provided, no namespace filtering will be performed (all resources in all Namespaces, including all cluster-scoped resources, will be candidates for substitution). To mix cluster-scoped and namespaced resources in the same rule, use an empty string (\"\") as one of the target namespaces."
        }
      },
      "type": "object",
      "required": [
        "newValue",
        "originalValuePattern",
        "targetGroupKinds",
        "targetJsonPath",
        "targetNamespaces"
      ]
    },
    "google-native:gkebackup/v1:TransformationRule": {
      "description": "A transformation rule to be applied against Kubernetes resources as they are selected for restoration from a Backup. A rule contains both filtering logic (which resources are subject to transform) and transformation logic.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The description is a user specified string description of the transformation rule."
        },
        "fieldActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:TransformationRuleAction"
          },
          "description": "A list of transformation rule actions to take against candidate resources. Actions are executed in order defined - this order matters, as they could potentially interfere with each other and the first operation could affect the outcome of the second operation."
        },
        "resourceFilter": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:ResourceFilter",
          "description": "Optional. This field is used to specify a set of fields that should be used to determine which resources in backup should be acted upon by the supplied transformation rule actions, and this will ensure that only specific resources are affected by transformation rule actions."
        }
      },
      "type": "object",
      "required": [
        "fieldActions"
      ]
    },
    "google-native:gkebackup/v1:TransformationRuleAction": {
      "description": "TransformationRuleAction defines a TransformationRule action based on the JSON Patch RFC (https://www.rfc-editor.org/rfc/rfc6902)",
      "properties": {
        "fromPath": {
          "type": "string",
          "description": "Optional. A string containing a JSON Pointer value that references the location in the target document to move the value from."
        },
        "op": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:TransformationRuleActionOp",
          "description": "op specifies the operation to perform."
        },
        "path": {
          "type": "string",
          "description": "Optional. A string containing a JSON-Pointer value that references a location within the target document where the operation is performed."
        },
        "value": {
          "type": "string",
          "description": "Optional. A string that specifies the desired value in string format to use for transformation."
        }
      },
      "type": "object",
      "required": [
        "op"
      ]
    },
    "google-native:gkebackup/v1:TransformationRuleActionOp": {
      "description": "Required. op specifies the operation to perform.",
      "type": "string",
      "enum": [
        {
          "name": "OpUnspecified",
          "description": "Unspecified operation",
          "value": "OP_UNSPECIFIED"
        },
        {
          "name": "Remove",
          "description": "The \"remove\" operation removes the value at the target location.",
          "value": "REMOVE"
        },
        {
          "name": "Move",
          "description": "The \"move\" operation removes the value at a specified location and adds it to the target location.",
          "value": "MOVE"
        },
        {
          "name": "Copy",
          "description": "The \"copy\" operation copies the value at a specified location to the target location.",
          "value": "COPY"
        },
        {
          "name": "Add",
          "description": "The \"add\" operation performs one of the following functions, depending upon what the target location references: 1. If the target location specifies an array index, a new value is inserted into the array at the specified index. 2. If the target location specifies an object member that does not already exist, a new member is added to the object. 3. If the target location specifies an object member that does exist, that member's value is replaced.",
          "value": "ADD"
        },
        {
          "name": "Test",
          "description": "The \"test\" operation tests that a value at the target location is equal to a specified value.",
          "value": "TEST"
        },
        {
          "name": "Replace",
          "description": "The \"replace\" operation replaces the value at the target location with a new value. The operation object MUST contain a \"value\" member whose content specifies the replacement value.",
          "value": "REPLACE"
        }
      ]
    },
    "google-native:gkebackup/v1:TransformationRuleActionResponse": {
      "description": "TransformationRuleAction defines a TransformationRule action based on the JSON Patch RFC (https://www.rfc-editor.org/rfc/rfc6902)",
      "properties": {
        "fromPath": {
          "type": "string",
          "description": "Optional. A string containing a JSON Pointer value that references the location in the target document to move the value from."
        },
        "op": {
          "type": "string",
          "description": "op specifies the operation to perform."
        },
        "path": {
          "type": "string",
          "description": "Optional. A string containing a JSON-Pointer value that references a location within the target document where the operation is performed."
        },
        "value": {
          "type": "string",
          "description": "Optional. A string that specifies the desired value in string format to use for transformation."
        }
      },
      "type": "object",
      "required": [
        "fromPath",
        "op",
        "path",
        "value"
      ]
    },
    "google-native:gkebackup/v1:TransformationRuleResponse": {
      "description": "A transformation rule to be applied against Kubernetes resources as they are selected for restoration from a Backup. A rule contains both filtering logic (which resources are subject to transform) and transformation logic.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. The description is a user specified string description of the transformation rule."
        },
        "fieldActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:TransformationRuleActionResponse"
          },
          "description": "A list of transformation rule actions to take against candidate resources. Actions are executed in order defined - this order matters, as they could potentially interfere with each other and the first operation could affect the outcome of the second operation."
        },
        "resourceFilter": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:ResourceFilterResponse",
          "description": "Optional. This field is used to specify a set of fields that should be used to determine which resources in backup should be acted upon by the supplied transformation rule actions, and this will ensure that only specific resources are affected by transformation rule actions."
        }
      },
      "type": "object",
      "required": [
        "description",
        "fieldActions",
        "resourceFilter"
      ]
    },
    "google-native:gkehub/v1:AppDevExperienceFeatureSpec": {
      "description": "Spec for App Dev Experience Feature.",
      "type": "object"
    },
    "google-native:gkehub/v1:AppDevExperienceFeatureSpecResponse": {
      "description": "Spec for App Dev Experience Feature.",
      "type": "object"
    },
    "google-native:gkehub/v1:AppDevExperienceFeatureStateResponse": {
      "description": "State for App Dev Exp Feature.",
      "properties": {
        "networkingInstallSucceeded": {
          "$ref": "#/types/google-native:gkehub%2Fv1:StatusResponse",
          "description": "Status of subcomponent that detects configured Service Mesh resources."
        }
      },
      "type": "object",
      "required": [
        "networkingInstallSucceeded"
      ]
    },
    "google-native:gkehub/v1:ApplianceCluster": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ApplianceClusterResponse": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:gkehub/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:gkehub%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:gkehub/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:gkehub/v1:Authority": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters, it must use `location` rather than `zone` for GKE clusters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:AuthorityResponse": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "identityProvider": {
          "type": "string",
          "description": "An identity provider that reflects the `issuer` in the workload identity pool."
        },
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters, it must use `location` rather than `zone` for GKE clusters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        },
        "workloadIdentityPool": {
          "type": "string",
          "description": "The name of the workload identity pool in which `issuer` will be recognized. There is a single Workload Identity Pool per Hub that is shared between all Memberships that belong to that Hub. For a Hub hosted in {PROJECT_ID}, the workload pool format is `{PROJECT_ID}.hub.id.goog`, although this is subject to change in newer versions of this API."
        }
      },
      "type": "object",
      "required": [
        "identityProvider",
        "issuer",
        "oidcJwks",
        "workloadIdentityPool"
      ]
    },
    "google-native:gkehub/v1:BinaryAuthorizationConfig": {
      "description": "BinaryAuthorizationConfig defines the fleet level configuration of binary authorization feature.",
      "properties": {
        "evaluationMode": {
          "$ref": "#/types/google-native:gkehub%2Fv1:BinaryAuthorizationConfigEvaluationMode",
          "description": "Optional. Mode of operation for binauthz policy evaluation."
        },
        "policyBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:PolicyBinding"
          },
          "description": "Optional. Binauthz policies that apply to this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:BinaryAuthorizationConfigEvaluationMode": {
      "description": "Optional. Mode of operation for binauthz policy evaluation.",
      "type": "string",
      "enum": [
        {
          "name": "EvaluationModeUnspecified",
          "description": "Default value",
          "value": "EVALUATION_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable BinaryAuthorization",
          "value": "DISABLED"
        },
        {
          "name": "PolicyBindings",
          "description": "Use Binary Authorization with the policies specified in policy_bindings.",
          "value": "POLICY_BINDINGS"
        }
      ]
    },
    "google-native:gkehub/v1:BinaryAuthorizationConfigResponse": {
      "description": "BinaryAuthorizationConfig defines the fleet level configuration of binary authorization feature.",
      "properties": {
        "evaluationMode": {
          "type": "string",
          "description": "Optional. Mode of operation for binauthz policy evaluation."
        },
        "policyBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:PolicyBindingResponse"
          },
          "description": "Optional. Binauthz policies that apply to this cluster."
        }
      },
      "type": "object",
      "required": [
        "evaluationMode",
        "policyBindings"
      ]
    },
    "google-native:gkehub/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeFleetSpec": {
      "description": "**ClusterUpgrade**: The configuration for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "gkeUpgradeOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeGKEUpgradeOverride"
          },
          "description": "Allow users to override some properties of each GKE upgrade."
        },
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradePostConditions",
          "description": "Post conditions to evaluate to mark an upgrade COMPLETE. Required."
        },
        "upstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleet consumes upgrades that have COMPLETE status code in the upstream fleets. See UpgradeStatus.Code for code definitions. The fleet name should be either fleet project number or id. This is defined as repeated for future proof reasons. Initial implementation will enforce at most one upstream fleet."
        }
      },
      "type": "object",
      "required": [
        "postConditions"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeFleetSpecResponse": {
      "description": "**ClusterUpgrade**: The configuration for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "gkeUpgradeOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeGKEUpgradeOverrideResponse"
          },
          "description": "Allow users to override some properties of each GKE upgrade."
        },
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradePostConditionsResponse",
          "description": "Post conditions to evaluate to mark an upgrade COMPLETE. Required."
        },
        "upstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleet consumes upgrades that have COMPLETE status code in the upstream fleets. See UpgradeStatus.Code for code definitions. The fleet name should be either fleet project number or id. This is defined as repeated for future proof reasons. Initial implementation will enforce at most one upstream fleet."
        }
      },
      "type": "object",
      "required": [
        "gkeUpgradeOverrides",
        "postConditions",
        "upstreamFleets"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeFleetStateResponse": {
      "description": "**ClusterUpgrade**: The state for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "downstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleets whose upstream_fleets contain the current fleet. The fleet name should be either fleet project number or id."
        },
        "gkeState": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeGKEUpgradeFeatureStateResponse",
          "description": "Feature state for GKE clusters."
        },
        "ignored": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of memberships ignored by the feature. For example, manually upgraded clusters can be ignored if they are newer than the default versions of its release channel. The membership resource is in the format: `projects/{p}/locations/{l}/membership/{m}`."
        }
      },
      "type": "object",
      "required": [
        "downstreamFleets",
        "gkeState",
        "ignored"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeGKEUpgrade": {
      "description": "GKEUpgrade represents a GKE provided upgrade, e.g., control plane upgrade.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the upgrade, e.g., \"k8s_control_plane\". It should be a valid upgrade name. It must not exceet 99 characters."
        },
        "version": {
          "type": "string",
          "description": "Version of the upgrade, e.g., \"1.22.1-gke.100\". It should be a valid version. It must not exceet 99 characters."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ClusterUpgradeGKEUpgradeFeatureConditionResponse": {
      "description": "GKEUpgradeFeatureCondition describes the condition of the feature for GKE clusters at a certain point of time.",
      "properties": {
        "reason": {
          "type": "string",
          "description": "Reason why the feature is in this status."
        },
        "status": {
          "type": "string",
          "description": "Status of the condition, one of True, False, Unknown."
        },
        "type": {
          "type": "string",
          "description": "Type of the condition, for example, \"ready\"."
        },
        "updateTime": {
          "type": "string",
          "description": "Last timestamp the condition was updated."
        }
      },
      "type": "object",
      "required": [
        "reason",
        "status",
        "type",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeGKEUpgradeFeatureStateResponse": {
      "description": "GKEUpgradeFeatureState contains feature states for GKE clusters in the scope.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeGKEUpgradeFeatureConditionResponse"
          },
          "description": "Current conditions of the feature."
        },
        "upgradeState": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeGKEUpgradeStateResponse"
          },
          "description": "Upgrade state. It will eventually replace `state`."
        }
      },
      "type": "object",
      "required": [
        "conditions",
        "upgradeState"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeGKEUpgradeOverride": {
      "description": "Properties of a GKE upgrade that can be overridden by the user. For example, a user can skip soaking by overriding the soaking to 0.",
      "properties": {
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradePostConditions",
          "description": "Post conditions to override for the specified upgrade (name + version). Required."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeGKEUpgrade",
          "description": "Which upgrade to override. Required."
        }
      },
      "type": "object",
      "required": [
        "postConditions",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeGKEUpgradeOverrideResponse": {
      "description": "Properties of a GKE upgrade that can be overridden by the user. For example, a user can skip soaking by overriding the soaking to 0.",
      "properties": {
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradePostConditionsResponse",
          "description": "Post conditions to override for the specified upgrade (name + version). Required."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeGKEUpgradeResponse",
          "description": "Which upgrade to override. Required."
        }
      },
      "type": "object",
      "required": [
        "postConditions",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeGKEUpgradeResponse": {
      "description": "GKEUpgrade represents a GKE provided upgrade, e.g., control plane upgrade.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the upgrade, e.g., \"k8s_control_plane\". It should be a valid upgrade name. It must not exceet 99 characters."
        },
        "version": {
          "type": "string",
          "description": "Version of the upgrade, e.g., \"1.22.1-gke.100\". It should be a valid version. It must not exceet 99 characters."
        }
      },
      "type": "object",
      "required": [
        "name",
        "version"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeGKEUpgradeStateResponse": {
      "description": "GKEUpgradeState is a GKEUpgrade and its state at the scope and fleet level.",
      "properties": {
        "stats": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Number of GKE clusters in each status code."
        },
        "status": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeUpgradeStatusResponse",
          "description": "Status of the upgrade."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeGKEUpgradeResponse",
          "description": "Which upgrade to track the state."
        }
      },
      "type": "object",
      "required": [
        "stats",
        "status",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradePostConditions": {
      "description": "Post conditional checks after an upgrade has been applied on all eligible clusters.",
      "properties": {
        "soaking": {
          "type": "string",
          "description": "Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. Required."
        }
      },
      "type": "object",
      "required": [
        "soaking"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradePostConditionsResponse": {
      "description": "Post conditional checks after an upgrade has been applied on all eligible clusters.",
      "properties": {
        "soaking": {
          "type": "string",
          "description": "Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. Required."
        }
      },
      "type": "object",
      "required": [
        "soaking"
      ]
    },
    "google-native:gkehub/v1:ClusterUpgradeUpgradeStatusResponse": {
      "description": "UpgradeStatus provides status information for each upgrade.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Status code of the upgrade."
        },
        "reason": {
          "type": "string",
          "description": "Reason for this status."
        },
        "updateTime": {
          "type": "string",
          "description": "Last timestamp the status was updated."
        }
      },
      "type": "object",
      "required": [
        "code",
        "reason",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1:CommonFeatureSpec": {
      "description": "CommonFeatureSpec contains Hub-wide configuration information",
      "properties": {
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1:AppDevExperienceFeatureSpec",
          "description": "Appdevexperience specific spec."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeFleetSpec",
          "description": "ClusterUpgrade (fleet-based) feature spec."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFeatureSpec",
          "description": "FleetObservability feature spec."
        },
        "multiclusteringress": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MultiClusterIngressFeatureSpec",
          "description": "Multicluster Ingress-specific spec."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:CommonFeatureSpecResponse": {
      "description": "CommonFeatureSpec contains Hub-wide configuration information",
      "properties": {
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1:AppDevExperienceFeatureSpecResponse",
          "description": "Appdevexperience specific spec."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeFleetSpecResponse",
          "description": "ClusterUpgrade (fleet-based) feature spec."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFeatureSpecResponse",
          "description": "FleetObservability feature spec."
        },
        "multiclusteringress": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MultiClusterIngressFeatureSpecResponse",
          "description": "Multicluster Ingress-specific spec."
        }
      },
      "type": "object",
      "required": [
        "appdevexperience",
        "clusterupgrade",
        "fleetobservability",
        "multiclusteringress"
      ]
    },
    "google-native:gkehub/v1:CommonFeatureStateResponse": {
      "description": "CommonFeatureState contains Hub-wide Feature status information.",
      "properties": {
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1:AppDevExperienceFeatureStateResponse",
          "description": "Appdevexperience specific state."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ClusterUpgradeFleetStateResponse",
          "description": "ClusterUpgrade fleet-level state."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFeatureStateResponse",
          "description": "FleetObservability feature state."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FeatureStateResponse",
          "description": "The \"running state\" of the Feature in this Hub."
        }
      },
      "type": "object",
      "required": [
        "appdevexperience",
        "clusterupgrade",
        "fleetobservability",
        "state"
      ]
    },
    "google-native:gkehub/v1:CommonFleetDefaultMemberConfigSpec": {
      "description": "CommonFleetDefaultMemberConfigSpec contains default configuration information for memberships of a fleet",
      "properties": {
        "configmanagement": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementMembershipSpec",
          "description": "Config Management-specific spec."
        },
        "identityservice": {
          "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceMembershipSpec",
          "description": "Identity Service-specific spec."
        },
        "mesh": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ServiceMeshMembershipSpec",
          "description": "Anthos Service Mesh-specific spec"
        },
        "policycontroller": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerMembershipSpec",
          "description": "Policy Controller spec."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:CommonFleetDefaultMemberConfigSpecResponse": {
      "description": "CommonFleetDefaultMemberConfigSpec contains default configuration information for memberships of a fleet",
      "properties": {
        "configmanagement": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementMembershipSpecResponse",
          "description": "Config Management-specific spec."
        },
        "identityservice": {
          "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceMembershipSpecResponse",
          "description": "Identity Service-specific spec."
        },
        "mesh": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ServiceMeshMembershipSpecResponse",
          "description": "Anthos Service Mesh-specific spec"
        },
        "policycontroller": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerMembershipSpecResponse",
          "description": "Policy Controller spec."
        }
      },
      "type": "object",
      "required": [
        "configmanagement",
        "identityservice",
        "mesh",
        "policycontroller"
      ]
    },
    "google-native:gkehub/v1:ConfigManagementConfigSync": {
      "description": "Configuration for Config Sync",
      "properties": {
        "allowVerticalScale": {
          "type": "boolean",
          "description": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated.",
          "deprecationMessage": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field."
        },
        "git": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementGitConfig",
          "description": "Git repo configuration for the cluster."
        },
        "metricsGcpServiceAccountEmail": {
          "type": "string",
          "description": "The Email of the Google Cloud Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be bound to the GSA. This field is required when automatic Feature management is enabled."
        },
        "oci": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementOciConfig",
          "description": "OCI repo configuration for the cluster"
        },
        "preventDrift": {
          "type": "boolean",
          "description": "Set to true to enable the Config Sync admission webhook to prevent drifts. If set to `false`, disables the Config Sync admission webhook and does not prevent drifts."
        },
        "sourceFormat": {
          "type": "string",
          "description": "Specifies whether the Config Sync Repo is in \"hierarchical\" or \"unstructured\" mode."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ConfigManagementConfigSyncResponse": {
      "description": "Configuration for Config Sync",
      "properties": {
        "allowVerticalScale": {
          "type": "boolean",
          "description": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated.",
          "deprecationMessage": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field."
        },
        "git": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementGitConfigResponse",
          "description": "Git repo configuration for the cluster."
        },
        "metricsGcpServiceAccountEmail": {
          "type": "string",
          "description": "The Email of the Google Cloud Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be bound to the GSA. This field is required when automatic Feature management is enabled."
        },
        "oci": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementOciConfigResponse",
          "description": "OCI repo configuration for the cluster"
        },
        "preventDrift": {
          "type": "boolean",
          "description": "Set to true to enable the Config Sync admission webhook to prevent drifts. If set to `false`, disables the Config Sync admission webhook and does not prevent drifts."
        },
        "sourceFormat": {
          "type": "string",
          "description": "Specifies whether the Config Sync Repo is in \"hierarchical\" or \"unstructured\" mode."
        }
      },
      "type": "object",
      "required": [
        "allowVerticalScale",
        "enabled",
        "git",
        "metricsGcpServiceAccountEmail",
        "oci",
        "preventDrift",
        "sourceFormat"
      ]
    },
    "google-native:gkehub/v1:ConfigManagementGitConfig": {
      "description": "Git repo configuration for a single cluster.",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "httpsProxy": {
          "type": "string",
          "description": "URL for the HTTPS proxy to be used when communicating with the Git repo."
        },
        "policyDir": {
          "type": "string",
          "description": "The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, gcpserviceaccount or none. The validation of this is case-sensitive. Required."
        },
        "syncBranch": {
          "type": "string",
          "description": "The branch of the repository to sync from. Default: master."
        },
        "syncRepo": {
          "type": "string",
          "description": "The URL of the Git repository to use as the source of truth."
        },
        "syncRev": {
          "type": "string",
          "description": "Git revision (tag or hash) to check out. Default HEAD."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ConfigManagementGitConfigResponse": {
      "description": "Git repo configuration for a single cluster.",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "httpsProxy": {
          "type": "string",
          "description": "URL for the HTTPS proxy to be used when communicating with the Git repo."
        },
        "policyDir": {
          "type": "string",
          "description": "The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, gcpserviceaccount or none. The validation of this is case-sensitive. Required."
        },
        "syncBranch": {
          "type": "string",
          "description": "The branch of the repository to sync from. Default: master."
        },
        "syncRepo": {
          "type": "string",
          "description": "The URL of the Git repository to use as the source of truth."
        },
        "syncRev": {
          "type": "string",
          "description": "Git revision (tag or hash) to check out. Default HEAD."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object",
      "required": [
        "gcpServiceAccountEmail",
        "httpsProxy",
        "policyDir",
        "secretType",
        "syncBranch",
        "syncRepo",
        "syncRev",
        "syncWaitSecs"
      ]
    },
    "google-native:gkehub/v1:ConfigManagementHierarchyControllerConfig": {
      "description": "Configuration for Hierarchy Controller",
      "properties": {
        "enableHierarchicalResourceQuota": {
          "type": "boolean",
          "description": "Whether hierarchical resource quota is enabled in this cluster."
        },
        "enablePodTreeLabels": {
          "type": "boolean",
          "description": "Whether pod tree labels are enabled in this cluster."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Hierarchy Controller is enabled in this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ConfigManagementHierarchyControllerConfigResponse": {
      "description": "Configuration for Hierarchy Controller",
      "properties": {
        "enableHierarchicalResourceQuota": {
          "type": "boolean",
          "description": "Whether hierarchical resource quota is enabled in this cluster."
        },
        "enablePodTreeLabels": {
          "type": "boolean",
          "description": "Whether pod tree labels are enabled in this cluster."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Hierarchy Controller is enabled in this cluster."
        }
      },
      "type": "object",
      "required": [
        "enableHierarchicalResourceQuota",
        "enablePodTreeLabels",
        "enabled"
      ]
    },
    "google-native:gkehub/v1:ConfigManagementMembershipSpec": {
      "description": "**Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector."
        },
        "configSync": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementConfigSync",
          "description": "Config Sync configuration for the cluster."
        },
        "hierarchyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementHierarchyControllerConfig",
          "description": "Hierarchy Controller configuration for the cluster."
        },
        "policyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementPolicyController",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of ACM installed."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ConfigManagementMembershipSpecResponse": {
      "description": "**Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector."
        },
        "configSync": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementConfigSyncResponse",
          "description": "Config Sync configuration for the cluster."
        },
        "hierarchyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementHierarchyControllerConfigResponse",
          "description": "Hierarchy Controller configuration for the cluster."
        },
        "policyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementPolicyControllerResponse",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of ACM installed."
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "configSync",
        "hierarchyController",
        "policyController",
        "version"
      ]
    },
    "google-native:gkehub/v1:ConfigManagementOciConfig": {
      "description": "OCI repo configuration for a single cluster",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "policyDir": {
          "type": "string",
          "description": "The absolute path of the directory that contains the local resources. Default: the root directory of the image."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo."
        },
        "syncRepo": {
          "type": "string",
          "description": "The OCI image repository URL for the package to sync from. e.g. `LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME`."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ConfigManagementOciConfigResponse": {
      "description": "OCI repo configuration for a single cluster",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "policyDir": {
          "type": "string",
          "description": "The absolute path of the directory that contains the local resources. Default: the root directory of the image."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo."
        },
        "syncRepo": {
          "type": "string",
          "description": "The OCI image repository URL for the package to sync from. e.g. `LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME`."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object",
      "required": [
        "gcpServiceAccountEmail",
        "policyDir",
        "secretType",
        "syncRepo",
        "syncWaitSecs"
      ]
    },
    "google-native:gkehub/v1:ConfigManagementPolicyController": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementPolicyControllerMonitoring",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enable or disable mutation in policy controller. If true, mutation CRDs, webhook and controller deployment will be deployed to the cluster."
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        },
        "templateLibraryInstalled": {
          "type": "boolean",
          "description": "Installs the default template library along with Policy Controller."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ConfigManagementPolicyControllerMonitoring": {
      "description": "PolicyControllerMonitoring specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementPolicyControllerMonitoringBackendsItem"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ConfigManagementPolicyControllerMonitoringBackendsItem": {
      "type": "string",
      "enum": [
        {
          "name": "MonitoringBackendUnspecified",
          "description": "Backend cannot be determined",
          "value": "MONITORING_BACKEND_UNSPECIFIED"
        },
        {
          "name": "Prometheus",
          "description": "Prometheus backend for monitoring",
          "value": "PROMETHEUS"
        },
        {
          "name": "CloudMonitoring",
          "description": "Stackdriver/Cloud Monitoring backend for monitoring",
          "value": "CLOUD_MONITORING"
        }
      ]
    },
    "google-native:gkehub/v1:ConfigManagementPolicyControllerMonitoringResponse": {
      "description": "PolicyControllerMonitoring specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object",
      "required": [
        "backends"
      ]
    },
    "google-native:gkehub/v1:ConfigManagementPolicyControllerResponse": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ConfigManagementPolicyControllerMonitoringResponse",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enable or disable mutation in policy controller. If true, mutation CRDs, webhook and controller deployment will be deployed to the cluster."
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        },
        "templateLibraryInstalled": {
          "type": "boolean",
          "description": "Installs the default template library along with Policy Controller."
        },
        "updateTime": {
          "type": "string",
          "description": "Last time this membership spec was updated."
        }
      },
      "type": "object",
      "required": [
        "auditIntervalSeconds",
        "enabled",
        "exemptableNamespaces",
        "logDeniesEnabled",
        "monitoring",
        "mutationEnabled",
        "referentialRulesEnabled",
        "templateLibraryInstalled",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1:DefaultClusterConfig": {
      "description": "DefaultClusterConfig describes the default cluster configurations to be applied to all clusters born-in-fleet.",
      "properties": {
        "binaryAuthorizationConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:BinaryAuthorizationConfig",
          "description": "Optional. Enable/Disable binary authorization features for the cluster."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:SecurityPostureConfig",
          "description": "Enable/Disable Security Posture features for the cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:DefaultClusterConfigResponse": {
      "description": "DefaultClusterConfig describes the default cluster configurations to be applied to all clusters born-in-fleet.",
      "properties": {
        "binaryAuthorizationConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:BinaryAuthorizationConfigResponse",
          "description": "Optional. Enable/Disable binary authorization features for the cluster."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:SecurityPostureConfigResponse",
          "description": "Enable/Disable Security Posture features for the cluster."
        }
      },
      "type": "object",
      "required": [
        "binaryAuthorizationConfig",
        "securityPostureConfig"
      ]
    },
    "google-native:gkehub/v1:EdgeCluster": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:EdgeClusterResponse": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gkehub/v1:FeatureResourceStateResponse": {
      "description": "FeatureResourceState describes the state of a Feature *resource* in the GkeHub API. See `FeatureState` for the \"running state\" of the Feature in the Hub and across Memberships.",
      "properties": {
        "state": {
          "type": "string",
          "description": "The current state of the Feature resource in the Hub API."
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:gkehub/v1:FeatureStateResponse": {
      "description": "FeatureState describes the high-level state of a Feature. It may be used to describe a Feature's state at the environ-level, or per-membershop, depending on the context.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The high-level, machine-readable status of this Feature."
        },
        "description": {
          "type": "string",
          "description": "A human-readable description of the current status."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this status and any related Feature-specific details were updated."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1:FleetLifecycleStateResponse": {
      "description": "FleetLifecycleState describes the state of a Fleet resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Fleet resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityFeatureErrorResponse": {
      "description": "All error details of the fleet observability feature.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The code of the error."
        },
        "description": {
          "type": "string",
          "description": "A human-readable description of the current status."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description"
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityFeatureSpec": {
      "description": "**Fleet Observability**: The Hub-wide input for the FleetObservability feature.",
      "properties": {
        "loggingConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityLoggingConfig",
          "description": "Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:FleetObservabilityFeatureSpecResponse": {
      "description": "**Fleet Observability**: The Hub-wide input for the FleetObservability feature.",
      "properties": {
        "loggingConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityLoggingConfigResponse",
          "description": "Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet."
        }
      },
      "type": "object",
      "required": [
        "loggingConfig"
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityFeatureStateResponse": {
      "description": "**FleetObservability**: Hub-wide Feature for FleetObservability feature. state.",
      "properties": {
        "logging": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFleetObservabilityLoggingStateResponse",
          "description": "The feature state of default logging."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFleetObservabilityMonitoringStateResponse",
          "description": "The feature state of fleet monitoring."
        }
      },
      "type": "object",
      "required": [
        "logging",
        "monitoring"
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityFleetObservabilityBaseFeatureStateResponse": {
      "description": "Base state for fleet observability feature.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The high-level, machine-readable status of this Feature."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFeatureErrorResponse"
          },
          "description": "Errors after reconciling the monitoring and logging feature if the code is not OK."
        }
      },
      "type": "object",
      "required": [
        "code",
        "errors"
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityFleetObservabilityLoggingStateResponse": {
      "description": "Feature state for logging feature.",
      "properties": {
        "defaultLog": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet default log."
        },
        "scopeLog": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet scope log."
        }
      },
      "type": "object",
      "required": [
        "defaultLog",
        "scopeLog"
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityFleetObservabilityMonitoringStateResponse": {
      "description": "Feature state for monitoring feature.",
      "properties": {
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet monitoring feature."
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityLoggingConfig": {
      "description": "LoggingConfig defines the configuration for different types of logs.",
      "properties": {
        "defaultConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityRoutingConfig",
          "description": "Specified if applying the default routing config to logs not specified in other configs."
        },
        "fleetScopeLogsConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityRoutingConfig",
          "description": "Specified if applying the routing config to all logs for all fleet scopes."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:FleetObservabilityLoggingConfigResponse": {
      "description": "LoggingConfig defines the configuration for different types of logs.",
      "properties": {
        "defaultConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityRoutingConfigResponse",
          "description": "Specified if applying the default routing config to logs not specified in other configs."
        },
        "fleetScopeLogsConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityRoutingConfigResponse",
          "description": "Specified if applying the routing config to all logs for all fleet scopes."
        }
      },
      "type": "object",
      "required": [
        "defaultConfig",
        "fleetScopeLogsConfig"
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityRoutingConfig": {
      "description": "RoutingConfig configures the behaviour of fleet logging feature.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetObservabilityRoutingConfigMode",
          "description": "mode configures the logs routing mode."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:FleetObservabilityRoutingConfigMode": {
      "description": "mode configures the logs routing mode.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "If UNSPECIFIED, fleet logging feature is disabled.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Copy",
          "description": "logs will be copied to the destination project.",
          "value": "COPY"
        },
        {
          "name": "Move",
          "description": "logs will be moved to the destination project.",
          "value": "MOVE"
        }
      ]
    },
    "google-native:gkehub/v1:FleetObservabilityRoutingConfigResponse": {
      "description": "RoutingConfig configures the behaviour of fleet logging feature.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "mode configures the logs routing mode."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:gkehub/v1:GkeCluster": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:GkeClusterResponse": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that the GKE cluster no longer exists in the GKE Control Plane."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1:IdentityServiceAuthMethod": {
      "description": "Configuration of an auth method for a member/cluster. Only one authentication method (e.g., OIDC and LDAP) can be set per AuthMethod.",
      "properties": {
        "azureadConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceAzureADConfig",
          "description": "AzureAD specific Configuration."
        },
        "googleConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceGoogleConfig",
          "description": "GoogleConfig specific configuration."
        },
        "name": {
          "type": "string",
          "description": "Identifier for auth config."
        },
        "oidcConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceOidcConfig",
          "description": "OIDC specific configuration."
        },
        "proxy": {
          "type": "string",
          "description": "Proxy server address to use for auth method."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:IdentityServiceAuthMethodResponse": {
      "description": "Configuration of an auth method for a member/cluster. Only one authentication method (e.g., OIDC and LDAP) can be set per AuthMethod.",
      "properties": {
        "azureadConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceAzureADConfigResponse",
          "description": "AzureAD specific Configuration."
        },
        "googleConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceGoogleConfigResponse",
          "description": "GoogleConfig specific configuration."
        },
        "name": {
          "type": "string",
          "description": "Identifier for auth config."
        },
        "oidcConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceOidcConfigResponse",
          "description": "OIDC specific configuration."
        },
        "proxy": {
          "type": "string",
          "description": "Proxy server address to use for auth method."
        }
      },
      "type": "object",
      "required": [
        "azureadConfig",
        "googleConfig",
        "name",
        "oidcConfig",
        "proxy"
      ]
    },
    "google-native:gkehub/v1:IdentityServiceAzureADConfig": {
      "description": "Configuration for the AzureAD Auth flow.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "ID for the registered client application that makes authentication requests to the Azure AD identity provider."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted AzureAD client secret will be passed to the GKE Hub CLH."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "The redirect URL that kubectl uses for authorization."
        },
        "tenant": {
          "type": "string",
          "description": "Kind of Azure AD account to be authenticated. Supported values are or for accounts belonging to a specific tenant."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:IdentityServiceAzureADConfigResponse": {
      "description": "Configuration for the AzureAD Auth flow.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "ID for the registered client application that makes authentication requests to the Azure AD identity provider."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted AzureAD client secret will be passed to the GKE Hub CLH."
        },
        "encryptedClientSecret": {
          "type": "string",
          "description": "Encrypted AzureAD client secret."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "The redirect URL that kubectl uses for authorization."
        },
        "tenant": {
          "type": "string",
          "description": "Kind of Azure AD account to be authenticated. Supported values are or for accounts belonging to a specific tenant."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "encryptedClientSecret",
        "kubectlRedirectUri",
        "tenant"
      ]
    },
    "google-native:gkehub/v1:IdentityServiceGoogleConfig": {
      "description": "Configuration for the Google Plugin Auth flow.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Disable automatic configuration of Google Plugin on supported platforms."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:IdentityServiceGoogleConfigResponse": {
      "description": "Configuration for the Google Plugin Auth flow.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Disable automatic configuration of Google Plugin on supported platforms."
        }
      },
      "type": "object",
      "required": [
        "disable"
      ]
    },
    "google-native:gkehub/v1:IdentityServiceMembershipSpec": {
      "description": "**Anthos Identity Service**: Configuration for a single Membership.",
      "properties": {
        "authMethods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceAuthMethod"
          },
          "description": "A member may support multiple auth methods."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:IdentityServiceMembershipSpecResponse": {
      "description": "**Anthos Identity Service**: Configuration for a single Membership.",
      "properties": {
        "authMethods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:IdentityServiceAuthMethodResponse"
          },
          "description": "A member may support multiple auth methods."
        }
      },
      "type": "object",
      "required": [
        "authMethods"
      ]
    },
    "google-native:gkehub/v1:IdentityServiceOidcConfig": {
      "description": "Configuration for OIDC Auth flow.",
      "properties": {
        "certificateAuthorityData": {
          "type": "string",
          "description": "PEM-encoded CA for OIDC provider."
        },
        "clientId": {
          "type": "string",
          "description": "ID for OIDC client application."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted OIDC client secret will be passed to the GKE Hub CLH."
        },
        "deployCloudConsoleProxy": {
          "type": "boolean",
          "description": "Flag to denote if reverse proxy is used to connect to auth provider. This flag should be set to true when provider is not reachable by Google Cloud Console."
        },
        "enableAccessToken": {
          "type": "boolean",
          "description": "Enable access token."
        },
        "extraParams": {
          "type": "string",
          "description": "Comma-separated list of key-value pairs."
        },
        "groupPrefix": {
          "type": "string",
          "description": "Prefix to prepend to group name."
        },
        "groupsClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds group information."
        },
        "issuerUri": {
          "type": "string",
          "description": "URI for the OIDC provider. This should point to the level below .well-known/openid-configuration."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "Registered redirect uri to redirect users going through OAuth flow using kubectl plugin."
        },
        "scopes": {
          "type": "string",
          "description": "Comma-separated list of identifiers."
        },
        "userClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds username."
        },
        "userPrefix": {
          "type": "string",
          "description": "Prefix to prepend to user name."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:IdentityServiceOidcConfigResponse": {
      "description": "Configuration for OIDC Auth flow.",
      "properties": {
        "certificateAuthorityData": {
          "type": "string",
          "description": "PEM-encoded CA for OIDC provider."
        },
        "clientId": {
          "type": "string",
          "description": "ID for OIDC client application."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted OIDC client secret will be passed to the GKE Hub CLH."
        },
        "deployCloudConsoleProxy": {
          "type": "boolean",
          "description": "Flag to denote if reverse proxy is used to connect to auth provider. This flag should be set to true when provider is not reachable by Google Cloud Console."
        },
        "enableAccessToken": {
          "type": "boolean",
          "description": "Enable access token."
        },
        "encryptedClientSecret": {
          "type": "string",
          "description": "Encrypted OIDC Client secret"
        },
        "extraParams": {
          "type": "string",
          "description": "Comma-separated list of key-value pairs."
        },
        "groupPrefix": {
          "type": "string",
          "description": "Prefix to prepend to group name."
        },
        "groupsClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds group information."
        },
        "issuerUri": {
          "type": "string",
          "description": "URI for the OIDC provider. This should point to the level below .well-known/openid-configuration."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "Registered redirect uri to redirect users going through OAuth flow using kubectl plugin."
        },
        "scopes": {
          "type": "string",
          "description": "Comma-separated list of identifiers."
        },
        "userClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds username."
        },
        "userPrefix": {
          "type": "string",
          "description": "Prefix to prepend to user name."
        }
      },
      "type": "object",
      "required": [
        "certificateAuthorityData",
        "clientId",
        "clientSecret",
        "deployCloudConsoleProxy",
        "enableAccessToken",
        "encryptedClientSecret",
        "extraParams",
        "groupPrefix",
        "groupsClaim",
        "issuerUri",
        "kubectlRedirectUri",
        "scopes",
        "userClaim",
        "userPrefix"
      ]
    },
    "google-native:gkehub/v1:KubernetesMetadataResponse": {
      "description": "KubernetesMetadata provides informational metadata for Memberships representing Kubernetes clusters.",
      "properties": {
        "kubernetesApiServerVersion": {
          "type": "string",
          "description": "Kubernetes API server version string as reported by `/version`."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The total memory capacity as reported by the sum of all Kubernetes nodes resources, defined in MB."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Node count as reported by Kubernetes nodes resources."
        },
        "nodeProviderId": {
          "type": "string",
          "description": "Node providerID as reported by the first node in the list of nodes on the Kubernetes endpoint. On Kubernetes platforms that support zero-node clusters (like GKE-on-GCP), the node_count will be zero and the node_provider_id will be empty."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which these details were last updated. This update_time is different from the Membership-level update_time since EndpointDetails are updated internally for API consumers."
        },
        "vcpuCount": {
          "type": "integer",
          "description": "vCPU count as reported by Kubernetes nodes resources."
        }
      },
      "type": "object",
      "required": [
        "kubernetesApiServerVersion",
        "memoryMb",
        "nodeCount",
        "nodeProviderId",
        "updateTime",
        "vcpuCount"
      ]
    },
    "google-native:gkehub/v1:KubernetesResource": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during CreateMembership or UpdateMembership, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ResourceOptions",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:KubernetesResourceResponse": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "connectResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:ResourceManifestResponse"
          },
          "description": "The Kubernetes resources for installing the GKE Connect agent This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during CreateMembership or UpdateMembership, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "membershipResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:ResourceManifestResponse"
          },
          "description": "Additional Kubernetes resources that need to be applied to the cluster after Membership creation, and after every update. This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ResourceOptionsResponse",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object",
      "required": [
        "connectResources",
        "membershipCrManifest",
        "membershipResources",
        "resourceOptions"
      ]
    },
    "google-native:gkehub/v1:MembershipBindingLifecycleStateResponse": {
      "description": "MembershipBindingLifecycleState describes the state of a Binding resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the MembershipBinding resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1:MembershipEndpoint": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ApplianceCluster",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:EdgeCluster",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:GkeCluster",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1:KubernetesResource",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MultiCloudCluster",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:OnPremCluster",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:MembershipEndpointResponse": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ApplianceClusterResponse",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:EdgeClusterResponse",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:GkeClusterResponse",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "googleManaged": {
          "type": "boolean",
          "description": "Whether the lifecycle of this membership is managed by a google cluster platform service."
        },
        "kubernetesMetadata": {
          "$ref": "#/types/google-native:gkehub%2Fv1:KubernetesMetadataResponse",
          "description": "Useful Kubernetes-specific metadata."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1:KubernetesResourceResponse",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MultiCloudClusterResponse",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1:OnPremClusterResponse",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object",
      "required": [
        "applianceCluster",
        "edgeCluster",
        "gkeCluster",
        "googleManaged",
        "kubernetesMetadata",
        "kubernetesResource",
        "multiCloudCluster",
        "onPremCluster"
      ]
    },
    "google-native:gkehub/v1:MembershipStateResponse": {
      "description": "MembershipState describes the state of a Membership resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Membership resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1:MonitoringConfig": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:MonitoringConfigResponse": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "clusterHash",
        "kubernetesMetricsPrefix",
        "location",
        "project"
      ]
    },
    "google-native:gkehub/v1:MultiCloudCluster": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:MultiCloudClusterResponse": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkemulticloud.googleapis.com) resource for this GKE Multi-Cloud cluster no longer exists."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1:MultiClusterIngressFeatureSpec": {
      "description": "**Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature.",
      "properties": {
        "configMembership": {
          "type": "string",
          "description": "Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:MultiClusterIngressFeatureSpecResponse": {
      "description": "**Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature.",
      "properties": {
        "configMembership": {
          "type": "string",
          "description": "Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`"
        }
      },
      "type": "object",
      "required": [
        "configMembership"
      ]
    },
    "google-native:gkehub/v1:NamespaceLifecycleStateResponse": {
      "description": "NamespaceLifecycleState describes the state of a Namespace resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Namespace resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1:OnPremCluster": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterType": {
          "$ref": "#/types/google-native:gkehub%2Fv1:OnPremClusterClusterType",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:OnPremClusterClusterType": {
      "description": "Immutable. The on prem cluster's type.",
      "type": "string",
      "enum": [
        {
          "name": "ClustertypeUnspecified",
          "description": "The ClusterType is not set.",
          "value": "CLUSTERTYPE_UNSPECIFIED"
        },
        {
          "name": "Bootstrap",
          "description": "The ClusterType is bootstrap cluster.",
          "value": "BOOTSTRAP"
        },
        {
          "name": "Hybrid",
          "description": "The ClusterType is baremetal hybrid cluster.",
          "value": "HYBRID"
        },
        {
          "name": "Standalone",
          "description": "The ClusterType is baremetal standalone cluster.",
          "value": "STANDALONE"
        },
        {
          "name": "User",
          "description": "The ClusterType is user cluster.",
          "value": "USER"
        }
      ]
    },
    "google-native:gkehub/v1:OnPremClusterResponse": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkeonprem.googleapis.com) resource for this GKE On-Prem cluster no longer exists."
        },
        "clusterType": {
          "type": "string",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "adminCluster",
        "clusterMissing",
        "clusterType",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1:PolicyBinding": {
      "description": "Binauthz policy that applies to this cluster.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The relative resource name of the binauthz platform policy to audit. GKE platform policies have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:PolicyBindingResponse": {
      "description": "Binauthz policy that applies to this cluster.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The relative resource name of the binauthz platform policy to audit. GKE platform policies have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:gkehub/v1:PolicyControllerHubConfig": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "constraintViolationLimit": {
          "type": "string",
          "description": "The maximum number of audit violations to be stored in a constraint. If not set, the internal default (currently 20) will be used."
        },
        "deploymentConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of deployment configs to deployments (\"admission\", \"audit\", \"mutation')."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "installSpec": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerHubConfigInstallSpec",
          "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerMonitoringConfig",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enables the ability to mutate resources using Policy Controller."
        },
        "policyContent": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerPolicyContentSpec",
          "description": "Specifies the desired policy content on the cluster"
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:PolicyControllerHubConfigInstallSpec": {
      "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state.",
      "type": "string",
      "enum": [
        {
          "name": "InstallSpecUnspecified",
          "description": "Spec is unknown.",
          "value": "INSTALL_SPEC_UNSPECIFIED"
        },
        {
          "name": "InstallSpecNotInstalled",
          "description": "Request to uninstall Policy Controller.",
          "value": "INSTALL_SPEC_NOT_INSTALLED"
        },
        {
          "name": "InstallSpecEnabled",
          "description": "Request to install and enable Policy Controller.",
          "value": "INSTALL_SPEC_ENABLED"
        },
        {
          "name": "InstallSpecSuspended",
          "description": "Request to suspend Policy Controller i.e. its webhooks. If Policy Controller is not installed, it will be installed but suspended.",
          "value": "INSTALL_SPEC_SUSPENDED"
        },
        {
          "name": "InstallSpecDetached",
          "description": "Request to stop all reconciliation actions by PoCo Hub controller. This is a breakglass mechanism to stop PoCo Hub from affecting cluster resources.",
          "value": "INSTALL_SPEC_DETACHED"
        }
      ]
    },
    "google-native:gkehub/v1:PolicyControllerHubConfigResponse": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "constraintViolationLimit": {
          "type": "string",
          "description": "The maximum number of audit violations to be stored in a constraint. If not set, the internal default (currently 20) will be used."
        },
        "deploymentConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of deployment configs to deployments (\"admission\", \"audit\", \"mutation')."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "installSpec": {
          "type": "string",
          "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerMonitoringConfigResponse",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enables the ability to mutate resources using Policy Controller."
        },
        "policyContent": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerPolicyContentSpecResponse",
          "description": "Specifies the desired policy content on the cluster"
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        }
      },
      "type": "object",
      "required": [
        "auditIntervalSeconds",
        "constraintViolationLimit",
        "deploymentConfigs",
        "exemptableNamespaces",
        "installSpec",
        "logDeniesEnabled",
        "monitoring",
        "mutationEnabled",
        "policyContent",
        "referentialRulesEnabled"
      ]
    },
    "google-native:gkehub/v1:PolicyControllerMembershipSpec": {
      "description": "**Policy Controller**: Configuration for a single cluster. Intended to parallel the PolicyController CR.",
      "properties": {
        "policyControllerHubConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerHubConfig",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of Policy Controller installed."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:PolicyControllerMembershipSpecResponse": {
      "description": "**Policy Controller**: Configuration for a single cluster. Intended to parallel the PolicyController CR.",
      "properties": {
        "policyControllerHubConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerHubConfigResponse",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of Policy Controller installed."
        }
      },
      "type": "object",
      "required": [
        "policyControllerHubConfig",
        "version"
      ]
    },
    "google-native:gkehub/v1:PolicyControllerMonitoringConfig": {
      "description": "MonitoringConfig specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerMonitoringConfigBackendsItem"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:PolicyControllerMonitoringConfigBackendsItem": {
      "type": "string",
      "enum": [
        {
          "name": "MonitoringBackendUnspecified",
          "description": "Backend cannot be determined",
          "value": "MONITORING_BACKEND_UNSPECIFIED"
        },
        {
          "name": "Prometheus",
          "description": "Prometheus backend for monitoring",
          "value": "PROMETHEUS"
        },
        {
          "name": "CloudMonitoring",
          "description": "Stackdriver/Cloud Monitoring backend for monitoring",
          "value": "CLOUD_MONITORING"
        }
      ]
    },
    "google-native:gkehub/v1:PolicyControllerMonitoringConfigResponse": {
      "description": "MonitoringConfig specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object",
      "required": [
        "backends"
      ]
    },
    "google-native:gkehub/v1:PolicyControllerPolicyContentSpec": {
      "description": "PolicyContentSpec defines the user's desired content configuration on the cluster.",
      "properties": {
        "bundles": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "map of bundle name to BundleInstallSpec. The bundle name maps to the `bundleName` key in the `policycontroller.gke.io/constraintData` annotation on a constraint."
        },
        "templateLibrary": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerTemplateLibraryConfig",
          "description": "Configures the installation of the Template Library."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:PolicyControllerPolicyContentSpecResponse": {
      "description": "PolicyContentSpec defines the user's desired content configuration on the cluster.",
      "properties": {
        "bundles": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "map of bundle name to BundleInstallSpec. The bundle name maps to the `bundleName` key in the `policycontroller.gke.io/constraintData` annotation on a constraint."
        },
        "templateLibrary": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerTemplateLibraryConfigResponse",
          "description": "Configures the installation of the Template Library."
        }
      },
      "type": "object",
      "required": [
        "bundles",
        "templateLibrary"
      ]
    },
    "google-native:gkehub/v1:PolicyControllerTemplateLibraryConfig": {
      "description": "The config specifying which default library templates to install.",
      "properties": {
        "installation": {
          "$ref": "#/types/google-native:gkehub%2Fv1:PolicyControllerTemplateLibraryConfigInstallation",
          "description": "Configures the manner in which the template library is installed on the cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:PolicyControllerTemplateLibraryConfigInstallation": {
      "description": "Configures the manner in which the template library is installed on the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "InstallationUnspecified",
          "description": "No installation strategy has been specified.",
          "value": "INSTALLATION_UNSPECIFIED"
        },
        {
          "name": "NotInstalled",
          "description": "Do not install the template library.",
          "value": "NOT_INSTALLED"
        },
        {
          "name": "All",
          "description": "Install the entire template library.",
          "value": "ALL"
        }
      ]
    },
    "google-native:gkehub/v1:PolicyControllerTemplateLibraryConfigResponse": {
      "description": "The config specifying which default library templates to install.",
      "properties": {
        "installation": {
          "type": "string",
          "description": "Configures the manner in which the template library is installed on the cluster."
        }
      },
      "type": "object",
      "required": [
        "installation"
      ]
    },
    "google-native:gkehub/v1:RBACRoleBindingLifecycleStateResponse": {
      "description": "RBACRoleBindingLifecycleState describes the state of a RbacRoleBinding resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the rbacrolebinding resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1:ResourceManifestResponse": {
      "description": "ResourceManifest represents a single Kubernetes resource to be applied to the cluster.",
      "properties": {
        "clusterScoped": {
          "type": "boolean",
          "description": "Whether the resource provided in the manifest is `cluster_scoped`. If unset, the manifest is assumed to be namespace scoped. This field is used for REST mapping when applying the resource in a cluster."
        },
        "manifest": {
          "type": "string",
          "description": "YAML manifest of the resource."
        }
      },
      "type": "object",
      "required": [
        "clusterScoped",
        "manifest"
      ]
    },
    "google-native:gkehub/v1:ResourceOptions": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ResourceOptionsResponse": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object",
      "required": [
        "connectVersion",
        "k8sVersion",
        "v1beta1Crd"
      ]
    },
    "google-native:gkehub/v1:Role": {
      "description": "Role is the type for Kubernetes roles",
      "properties": {
        "predefinedRole": {
          "$ref": "#/types/google-native:gkehub%2Fv1:RolePredefinedRole",
          "description": "predefined_role is the Kubernetes default role to use"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:RolePredefinedRole": {
      "description": "predefined_role is the Kubernetes default role to use",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "UNKNOWN",
          "value": "UNKNOWN"
        },
        {
          "name": "Admin",
          "description": "ADMIN has EDIT and RBAC permissions",
          "value": "ADMIN"
        },
        {
          "name": "Edit",
          "description": "EDIT can edit all resources except RBAC",
          "value": "EDIT"
        },
        {
          "name": "View",
          "description": "VIEW can only read resources",
          "value": "VIEW"
        },
        {
          "name": "AnthosSupport",
          "description": "ANTHOS_SUPPORT gives Google Support read-only access to a number of cluster resources.",
          "value": "ANTHOS_SUPPORT"
        }
      ]
    },
    "google-native:gkehub/v1:RoleResponse": {
      "description": "Role is the type for Kubernetes roles",
      "properties": {
        "predefinedRole": {
          "type": "string",
          "description": "predefined_role is the Kubernetes default role to use"
        }
      },
      "type": "object",
      "required": [
        "predefinedRole"
      ]
    },
    "google-native:gkehub/v1:ScopeLifecycleStateResponse": {
      "description": "ScopeLifecycleState describes the state of a Scope resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the scope resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1:SecurityPostureConfig": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:gkehub%2Fv1:SecurityPostureConfigMode",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "$ref": "#/types/google-native:gkehub%2Fv1:SecurityPostureConfigVulnerabilityMode",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:SecurityPostureConfigMode": {
      "description": "Sets which mode to use for Security Posture features.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value not specified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disables Security Posture features on the cluster.",
          "value": "DISABLED"
        },
        {
          "name": "Basic",
          "description": "Applies Security Posture features on the cluster.",
          "value": "BASIC"
        }
      ]
    },
    "google-native:gkehub/v1:SecurityPostureConfigResponse": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "type": "string",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "vulnerabilityMode"
      ]
    },
    "google-native:gkehub/v1:SecurityPostureConfigVulnerabilityMode": {
      "description": "Sets which mode to use for vulnerability scanning.",
      "type": "string",
      "enum": [
        {
          "name": "VulnerabilityModeUnspecified",
          "description": "Default value not specified.",
          "value": "VULNERABILITY_MODE_UNSPECIFIED"
        },
        {
          "name": "VulnerabilityDisabled",
          "description": "Disables vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_DISABLED"
        },
        {
          "name": "VulnerabilityBasic",
          "description": "Applies basic vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_BASIC"
        },
        {
          "name": "VulnerabilityEnterprise",
          "description": "Applies the Security Posture's vulnerability on cluster Enterprise level features.",
          "value": "VULNERABILITY_ENTERPRISE"
        }
      ]
    },
    "google-native:gkehub/v1:ServiceMeshMembershipSpec": {
      "description": "**Service Mesh**: Spec for a single Membership for the servicemesh feature",
      "properties": {
        "controlPlane": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ServiceMeshMembershipSpecControlPlane",
          "description": "Deprecated: use `management` instead Enables automatic control plane management.",
          "deprecationMessage": "Deprecated: use `management` instead Enables automatic control plane management."
        },
        "management": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ServiceMeshMembershipSpecManagement",
          "description": "Enables automatic Service Mesh management."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1:ServiceMeshMembershipSpecControlPlane": {
      "description": "Deprecated: use `management` instead Enables automatic control plane management.",
      "type": "string",
      "enum": [
        {
          "name": "ControlPlaneManagementUnspecified",
          "description": "Unspecified",
          "value": "CONTROL_PLANE_MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "Automatic",
          "description": "Google should provision a control plane revision and make it available in the cluster. Google will enroll this revision in a release channel and keep it up to date. The control plane revision may be a managed service, or a managed install.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Manual",
          "description": "User will manually configure the control plane (e.g. via CLI, or via the ControlPlaneRevision KRM API)",
          "value": "MANUAL"
        }
      ]
    },
    "google-native:gkehub/v1:ServiceMeshMembershipSpecManagement": {
      "description": "Enables automatic Service Mesh management.",
      "type": "string",
      "enum": [
        {
          "name": "ManagementUnspecified",
          "description": "Unspecified",
          "value": "MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "ManagementAutomatic",
          "description": "Google should manage my Service Mesh for the cluster.",
          "value": "MANAGEMENT_AUTOMATIC"
        },
        {
          "name": "ManagementManual",
          "description": "User will manually configure their service mesh components.",
          "value": "MANAGEMENT_MANUAL"
        }
      ]
    },
    "google-native:gkehub/v1:ServiceMeshMembershipSpecResponse": {
      "description": "**Service Mesh**: Spec for a single Membership for the servicemesh feature",
      "properties": {
        "controlPlane": {
          "type": "string",
          "description": "Deprecated: use `management` instead Enables automatic control plane management.",
          "deprecationMessage": "Deprecated: use `management` instead Enables automatic control plane management."
        },
        "management": {
          "type": "string",
          "description": "Enables automatic Service Mesh management."
        }
      },
      "type": "object",
      "required": [
        "controlPlane",
        "management"
      ]
    },
    "google-native:gkehub/v1:StatusResponse": {
      "description": "Status specifies state for the subcomponent.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code specifies AppDevExperienceFeature's subcomponent ready state."
        },
        "description": {
          "type": "string",
          "description": "Description is populated if Code is Failed, explaining why it has failed."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description"
      ]
    },
    "google-native:gkehub/v1alpha2:ApplianceCluster": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:ApplianceClusterResponse": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha2:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:gkehub/v1alpha2:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:gkehub/v1alpha2:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:gkehub/v1alpha2:Authority": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer, unless `oidc_jwks` is set. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:AuthorityResponse": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "identityProvider": {
          "type": "string",
          "description": "An identity provider that reflects the `issuer` in the workload identity pool."
        },
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer, unless `oidc_jwks` is set. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        },
        "workloadIdentityPool": {
          "type": "string",
          "description": "The name of the workload identity pool in which `issuer` will be recognized. There is a single Workload Identity Pool per Hub that is shared between all Memberships that belong to that Hub. For a Hub hosted in {PROJECT_ID}, the workload pool format is `{PROJECT_ID}.hub.id.goog`, although this is subject to change in newer versions of this API."
        }
      },
      "type": "object",
      "required": [
        "identityProvider",
        "issuer",
        "oidcJwks",
        "workloadIdentityPool"
      ]
    },
    "google-native:gkehub/v1alpha2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha2:EdgeCluster": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:EdgeClusterResponse": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gkehub/v1alpha2:GkeCluster": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:GkeClusterResponse": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that the GKE cluster no longer exists in the GKE Control Plane."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha2:KubernetesMetadataResponse": {
      "description": "KubernetesMetadata provides informational metadata for Memberships that are created from Kubernetes Endpoints (currently, these are equivalent to Kubernetes clusters).",
      "properties": {
        "kubernetesApiServerVersion": {
          "type": "string",
          "description": "Kubernetes API server version string as reported by '/version'."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The total memory capacity as reported by the sum of all Kubernetes nodes resources, defined in MB."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Node count as reported by Kubernetes nodes resources."
        },
        "nodeProviderId": {
          "type": "string",
          "description": "Node providerID as reported by the first node in the list of nodes on the Kubernetes endpoint. On Kubernetes platforms that support zero-node clusters (like GKE-on-GCP), the node_count will be zero and the node_provider_id will be empty."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which these details were last updated. This update_time is different from the Membership-level update_time since EndpointDetails are updated internally for API consumers."
        },
        "vcpuCount": {
          "type": "integer",
          "description": "vCPU count as reported by Kubernetes nodes resources."
        }
      },
      "type": "object",
      "required": [
        "kubernetesApiServerVersion",
        "memoryMb",
        "nodeCount",
        "nodeProviderId",
        "updateTime",
        "vcpuCount"
      ]
    },
    "google-native:gkehub/v1alpha2:KubernetesResource": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during Create or Update, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:ResourceOptions",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:KubernetesResourceResponse": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "connectResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:ResourceManifestResponse"
          },
          "description": "The Kubernetes resources for installing the GKE Connect agent. This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during Create or Update, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "membershipResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:ResourceManifestResponse"
          },
          "description": "Additional Kubernetes resources that need to be applied to the cluster after Membership creation, and after every update. This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:ResourceOptionsResponse",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object",
      "required": [
        "connectResources",
        "membershipCrManifest",
        "membershipResources",
        "resourceOptions"
      ]
    },
    "google-native:gkehub/v1alpha2:MembershipEndpoint": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:ApplianceCluster",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:EdgeCluster",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:GkeCluster",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:KubernetesResource",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MultiCloudCluster",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:OnPremCluster",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:MembershipEndpointResponse": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:ApplianceClusterResponse",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:EdgeClusterResponse",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:GkeClusterResponse",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "kubernetesMetadata": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:KubernetesMetadataResponse",
          "description": "Useful Kubernetes-specific metadata."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:KubernetesResourceResponse",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MultiCloudClusterResponse",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:OnPremClusterResponse",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object",
      "required": [
        "applianceCluster",
        "edgeCluster",
        "gkeCluster",
        "kubernetesMetadata",
        "kubernetesResource",
        "multiCloudCluster",
        "onPremCluster"
      ]
    },
    "google-native:gkehub/v1alpha2:MembershipInfrastructureType": {
      "description": "Optional. The infrastructure type this Membership is running on.",
      "type": "string",
      "enum": [
        {
          "name": "InfrastructureTypeUnspecified",
          "description": "No type was specified. Some Hub functionality may require a type be specified, and will not support Memberships with this value.",
          "value": "INFRASTRUCTURE_TYPE_UNSPECIFIED"
        },
        {
          "name": "OnPrem",
          "description": "Private infrastructure that is owned or operated by customer. This includes GKE distributions such as GKE-OnPrem and GKE-OnBareMetal.",
          "value": "ON_PREM"
        },
        {
          "name": "MultiCloud",
          "description": "Public cloud infrastructure.",
          "value": "MULTI_CLOUD"
        }
      ]
    },
    "google-native:gkehub/v1alpha2:MembershipStateResponse": {
      "description": "MembershipState describes the state of a Membership resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Membership resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1alpha2:MonitoringConfig": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:MonitoringConfigResponse": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "clusterHash",
        "kubernetesMetricsPrefix",
        "location",
        "project"
      ]
    },
    "google-native:gkehub/v1alpha2:MultiCloudCluster": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:MultiCloudClusterResponse": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkemulticloud.googleapis.com) resource for this GKE Multi-Cloud cluster no longer exists."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha2:OnPremCluster": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterType": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:OnPremClusterClusterType",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:OnPremClusterClusterType": {
      "description": "Immutable. The on prem cluster's type.",
      "type": "string",
      "enum": [
        {
          "name": "ClustertypeUnspecified",
          "description": "The ClusterType is not set.",
          "value": "CLUSTERTYPE_UNSPECIFIED"
        },
        {
          "name": "Bootstrap",
          "description": "The ClusterType is bootstrap cluster.",
          "value": "BOOTSTRAP"
        },
        {
          "name": "Hybrid",
          "description": "The ClusterType is baremetal hybrid cluster.",
          "value": "HYBRID"
        },
        {
          "name": "Standalone",
          "description": "The ClusterType is baremetal standalone cluster.",
          "value": "STANDALONE"
        },
        {
          "name": "User",
          "description": "The ClusterType is user cluster.",
          "value": "USER"
        }
      ]
    },
    "google-native:gkehub/v1alpha2:OnPremClusterResponse": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkeonprem.googleapis.com) resource for this GKE On-Prem cluster no longer exists."
        },
        "clusterType": {
          "type": "string",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "adminCluster",
        "clusterMissing",
        "clusterType",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha2:ResourceManifestResponse": {
      "description": "ResourceManifest represents a single Kubernetes resource to be applied to the cluster.",
      "properties": {
        "clusterScoped": {
          "type": "boolean",
          "description": "Whether the resource provided in the manifest is `cluster_scoped`. If unset, the manifest is assumed to be namespace scoped. This field is used for REST mapping when applying the resource in a cluster."
        },
        "manifest": {
          "type": "string",
          "description": "YAML manifest of the resource."
        }
      },
      "type": "object",
      "required": [
        "clusterScoped",
        "manifest"
      ]
    },
    "google-native:gkehub/v1alpha2:ResourceOptions": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha2:ResourceOptionsResponse": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object",
      "required": [
        "connectVersion",
        "k8sVersion",
        "v1beta1Crd"
      ]
    },
    "google-native:gkehub/v1alpha:AnthosObservabilityFeatureSpec": {
      "description": "**Anthos Observability**: Spec",
      "properties": {
        "defaultMembershipSpec": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AnthosObservabilityMembershipSpec",
          "description": "Default membership spec for unconfigured memberships"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:AnthosObservabilityFeatureSpecResponse": {
      "description": "**Anthos Observability**: Spec",
      "properties": {
        "defaultMembershipSpec": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AnthosObservabilityMembershipSpecResponse",
          "description": "Default membership spec for unconfigured memberships"
        }
      },
      "type": "object",
      "required": [
        "defaultMembershipSpec"
      ]
    },
    "google-native:gkehub/v1alpha:AnthosObservabilityMembershipSpec": {
      "description": "**Anthosobservability**: Per-Membership Feature spec.",
      "properties": {
        "doNotOptimizeMetrics": {
          "type": "boolean",
          "description": "Use full of metrics rather than optimized metrics. See https://cloud.google.com/anthos/clusters/docs/on-prem/1.8/concepts/logging-and-monitoring#optimized_metrics_default_metrics"
        },
        "enableStackdriverOnApplications": {
          "type": "boolean",
          "description": "Enable collecting and reporting metrics and logs from user apps."
        },
        "version": {
          "type": "string",
          "description": "the version of stackdriver operator used by this feature"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:AnthosObservabilityMembershipSpecResponse": {
      "description": "**Anthosobservability**: Per-Membership Feature spec.",
      "properties": {
        "doNotOptimizeMetrics": {
          "type": "boolean",
          "description": "Use full of metrics rather than optimized metrics. See https://cloud.google.com/anthos/clusters/docs/on-prem/1.8/concepts/logging-and-monitoring#optimized_metrics_default_metrics"
        },
        "enableStackdriverOnApplications": {
          "type": "boolean",
          "description": "Enable collecting and reporting metrics and logs from user apps."
        },
        "version": {
          "type": "string",
          "description": "the version of stackdriver operator used by this feature"
        }
      },
      "type": "object",
      "required": [
        "doNotOptimizeMetrics",
        "enableStackdriverOnApplications",
        "version"
      ]
    },
    "google-native:gkehub/v1alpha:AppDevExperienceFeatureSpec": {
      "description": "Spec for App Dev Experience Feature.",
      "type": "object"
    },
    "google-native:gkehub/v1alpha:AppDevExperienceFeatureSpecResponse": {
      "description": "Spec for App Dev Experience Feature.",
      "type": "object"
    },
    "google-native:gkehub/v1alpha:AppDevExperienceFeatureStateResponse": {
      "description": "State for App Dev Exp Feature.",
      "properties": {
        "networkingInstallSucceeded": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:StatusResponse",
          "description": "Status of subcomponent that detects configured Service Mesh resources."
        }
      },
      "type": "object",
      "required": [
        "networkingInstallSucceeded"
      ]
    },
    "google-native:gkehub/v1alpha:ApplianceCluster": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ApplianceClusterResponse": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:gkehub/v1alpha:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:gkehub/v1alpha:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:gkehub/v1alpha:Authority": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters, it must use `location` rather than `zone` for GKE clusters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:AuthorityResponse": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "identityProvider": {
          "type": "string",
          "description": "An identity provider that reflects the `issuer` in the workload identity pool."
        },
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters, it must use `location` rather than `zone` for GKE clusters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        },
        "workloadIdentityPool": {
          "type": "string",
          "description": "The name of the workload identity pool in which `issuer` will be recognized. There is a single Workload Identity Pool per Hub that is shared between all Memberships that belong to that Hub. For a Hub hosted in {PROJECT_ID}, the workload pool format is `{PROJECT_ID}.hub.id.goog`, although this is subject to change in newer versions of this API."
        }
      },
      "type": "object",
      "required": [
        "identityProvider",
        "issuer",
        "oidcJwks",
        "workloadIdentityPool"
      ]
    },
    "google-native:gkehub/v1alpha:BinaryAuthorizationConfig": {
      "description": "BinaryAuthorizationConfig defines the fleet level configuration of binary authorization feature.",
      "properties": {
        "evaluationMode": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:BinaryAuthorizationConfigEvaluationMode",
          "description": "Optional. Mode of operation for binauthz policy evaluation."
        },
        "policyBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyBinding"
          },
          "description": "Optional. Binauthz policies that apply to this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:BinaryAuthorizationConfigEvaluationMode": {
      "description": "Optional. Mode of operation for binauthz policy evaluation.",
      "type": "string",
      "enum": [
        {
          "name": "EvaluationModeUnspecified",
          "description": "Default value",
          "value": "EVALUATION_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable BinaryAuthorization",
          "value": "DISABLED"
        },
        {
          "name": "PolicyBindings",
          "description": "Use Binary Authorization with the policies specified in policy_bindings.",
          "value": "POLICY_BINDINGS"
        }
      ]
    },
    "google-native:gkehub/v1alpha:BinaryAuthorizationConfigResponse": {
      "description": "BinaryAuthorizationConfig defines the fleet level configuration of binary authorization feature.",
      "properties": {
        "evaluationMode": {
          "type": "string",
          "description": "Optional. Mode of operation for binauthz policy evaluation."
        },
        "policyBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyBindingResponse"
          },
          "description": "Optional. Binauthz policies that apply to this cluster."
        }
      },
      "type": "object",
      "required": [
        "evaluationMode",
        "policyBindings"
      ]
    },
    "google-native:gkehub/v1alpha:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha:CloudAuditLoggingFeatureSpec": {
      "description": "**Cloud Audit Logging**: Spec for Audit Logging Allowlisting.",
      "properties": {
        "allowlistedServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Service account that should be allowlisted to send the audit logs; eg cloudauditlogging@gcp-project.iam.gserviceaccount.com. These accounts must already exist, but do not need to have any permissions granted to them. The customer's entitlements will be checked prior to allowlisting (i.e. the customer must be an Anthos customer.)"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:CloudAuditLoggingFeatureSpecResponse": {
      "description": "**Cloud Audit Logging**: Spec for Audit Logging Allowlisting.",
      "properties": {
        "allowlistedServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Service account that should be allowlisted to send the audit logs; eg cloudauditlogging@gcp-project.iam.gserviceaccount.com. These accounts must already exist, but do not need to have any permissions granted to them. The customer's entitlements will be checked prior to allowlisting (i.e. the customer must be an Anthos customer.)"
        }
      },
      "type": "object",
      "required": [
        "allowlistedServiceAccounts"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeFleetSpec": {
      "description": "**ClusterUpgrade**: The configuration for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "gkeUpgradeOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeGKEUpgradeOverride"
          },
          "description": "Allow users to override some properties of each GKE upgrade."
        },
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradePostConditions",
          "description": "Post conditions to evaluate to mark an upgrade COMPLETE. Required."
        },
        "upstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleet consumes upgrades that have COMPLETE status code in the upstream fleets. See UpgradeStatus.Code for code definitions. The fleet name should be either fleet project number or id. This is defined as repeated for future proof reasons. Initial implementation will enforce at most one upstream fleet."
        }
      },
      "type": "object",
      "required": [
        "postConditions"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeFleetSpecResponse": {
      "description": "**ClusterUpgrade**: The configuration for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "gkeUpgradeOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeGKEUpgradeOverrideResponse"
          },
          "description": "Allow users to override some properties of each GKE upgrade."
        },
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradePostConditionsResponse",
          "description": "Post conditions to evaluate to mark an upgrade COMPLETE. Required."
        },
        "upstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleet consumes upgrades that have COMPLETE status code in the upstream fleets. See UpgradeStatus.Code for code definitions. The fleet name should be either fleet project number or id. This is defined as repeated for future proof reasons. Initial implementation will enforce at most one upstream fleet."
        }
      },
      "type": "object",
      "required": [
        "gkeUpgradeOverrides",
        "postConditions",
        "upstreamFleets"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeFleetStateResponse": {
      "description": "**ClusterUpgrade**: The state for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "downstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleets whose upstream_fleets contain the current fleet. The fleet name should be either fleet project number or id."
        },
        "gkeState": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeGKEUpgradeFeatureStateResponse",
          "description": "Feature state for GKE clusters."
        },
        "ignored": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of memberships ignored by the feature. For example, manually upgraded clusters can be ignored if they are newer than the default versions of its release channel. The membership resource is in the format: `projects/{p}/locations/{l}/membership/{m}`."
        }
      },
      "type": "object",
      "required": [
        "downstreamFleets",
        "gkeState",
        "ignored"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeGKEUpgrade": {
      "description": "GKEUpgrade represents a GKE provided upgrade, e.g., control plane upgrade.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the upgrade, e.g., \"k8s_control_plane\". It should be a valid upgrade name. It must not exceet 99 characters."
        },
        "version": {
          "type": "string",
          "description": "Version of the upgrade, e.g., \"1.22.1-gke.100\". It should be a valid version. It must not exceet 99 characters."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeGKEUpgradeFeatureConditionResponse": {
      "description": "GKEUpgradeFeatureCondition describes the condition of the feature for GKE clusters at a certain point of time.",
      "properties": {
        "reason": {
          "type": "string",
          "description": "Reason why the feature is in this status."
        },
        "status": {
          "type": "string",
          "description": "Status of the condition, one of True, False, Unknown."
        },
        "type": {
          "type": "string",
          "description": "Type of the condition, for example, \"ready\"."
        },
        "updateTime": {
          "type": "string",
          "description": "Last timestamp the condition was updated."
        }
      },
      "type": "object",
      "required": [
        "reason",
        "status",
        "type",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeGKEUpgradeFeatureStateResponse": {
      "description": "GKEUpgradeFeatureState contains feature states for GKE clusters in the scope.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeGKEUpgradeFeatureConditionResponse"
          },
          "description": "Current conditions of the feature."
        },
        "upgradeState": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeGKEUpgradeStateResponse"
          },
          "description": "Upgrade state. It will eventually replace `state`."
        }
      },
      "type": "object",
      "required": [
        "conditions",
        "upgradeState"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeGKEUpgradeOverride": {
      "description": "Properties of a GKE upgrade that can be overridden by the user. For example, a user can skip soaking by overriding the soaking to 0.",
      "properties": {
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradePostConditions",
          "description": "Post conditions to override for the specified upgrade (name + version). Required."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeGKEUpgrade",
          "description": "Which upgrade to override. Required."
        }
      },
      "type": "object",
      "required": [
        "postConditions",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeGKEUpgradeOverrideResponse": {
      "description": "Properties of a GKE upgrade that can be overridden by the user. For example, a user can skip soaking by overriding the soaking to 0.",
      "properties": {
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradePostConditionsResponse",
          "description": "Post conditions to override for the specified upgrade (name + version). Required."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeGKEUpgradeResponse",
          "description": "Which upgrade to override. Required."
        }
      },
      "type": "object",
      "required": [
        "postConditions",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeGKEUpgradeResponse": {
      "description": "GKEUpgrade represents a GKE provided upgrade, e.g., control plane upgrade.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the upgrade, e.g., \"k8s_control_plane\". It should be a valid upgrade name. It must not exceet 99 characters."
        },
        "version": {
          "type": "string",
          "description": "Version of the upgrade, e.g., \"1.22.1-gke.100\". It should be a valid version. It must not exceet 99 characters."
        }
      },
      "type": "object",
      "required": [
        "name",
        "version"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeGKEUpgradeStateResponse": {
      "description": "GKEUpgradeState is a GKEUpgrade and its state at the scope and fleet level.",
      "properties": {
        "stats": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Number of GKE clusters in each status code."
        },
        "status": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeUpgradeStatusResponse",
          "description": "Status of the upgrade."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeGKEUpgradeResponse",
          "description": "Which upgrade to track the state."
        }
      },
      "type": "object",
      "required": [
        "stats",
        "status",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradePostConditions": {
      "description": "Post conditional checks after an upgrade has been applied on all eligible clusters.",
      "properties": {
        "soaking": {
          "type": "string",
          "description": "Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. Required."
        }
      },
      "type": "object",
      "required": [
        "soaking"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradePostConditionsResponse": {
      "description": "Post conditional checks after an upgrade has been applied on all eligible clusters.",
      "properties": {
        "soaking": {
          "type": "string",
          "description": "Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. Required."
        }
      },
      "type": "object",
      "required": [
        "soaking"
      ]
    },
    "google-native:gkehub/v1alpha:ClusterUpgradeUpgradeStatusResponse": {
      "description": "UpgradeStatus provides status information for each upgrade.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Status code of the upgrade."
        },
        "reason": {
          "type": "string",
          "description": "Reason for this status."
        },
        "updateTime": {
          "type": "string",
          "description": "Last timestamp the status was updated."
        }
      },
      "type": "object",
      "required": [
        "code",
        "reason",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1alpha:CommonFeatureSpec": {
      "description": "CommonFeatureSpec contains Hub-wide configuration information",
      "properties": {
        "anthosobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AnthosObservabilityFeatureSpec",
          "description": "Anthos Observability spec"
        },
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AppDevExperienceFeatureSpec",
          "description": "Appdevexperience specific spec."
        },
        "cloudauditlogging": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:CloudAuditLoggingFeatureSpec",
          "description": "Cloud Audit Logging-specific spec."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeFleetSpec",
          "description": "ClusterUpgrade (fleet-based) feature spec."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFeatureSpec",
          "description": "FleetObservability feature spec."
        },
        "multiclusteringress": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MultiClusterIngressFeatureSpec",
          "description": "Multicluster Ingress-specific spec."
        },
        "namespaceactuation": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:NamespaceActuationFeatureSpec",
          "description": "Namespace Actuation feature spec"
        },
        "workloadcertificate": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FeatureSpec",
          "description": "Workload Certificate spec."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:CommonFeatureSpecResponse": {
      "description": "CommonFeatureSpec contains Hub-wide configuration information",
      "properties": {
        "anthosobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AnthosObservabilityFeatureSpecResponse",
          "description": "Anthos Observability spec"
        },
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AppDevExperienceFeatureSpecResponse",
          "description": "Appdevexperience specific spec."
        },
        "cloudauditlogging": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:CloudAuditLoggingFeatureSpecResponse",
          "description": "Cloud Audit Logging-specific spec."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeFleetSpecResponse",
          "description": "ClusterUpgrade (fleet-based) feature spec."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFeatureSpecResponse",
          "description": "FleetObservability feature spec."
        },
        "multiclusteringress": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MultiClusterIngressFeatureSpecResponse",
          "description": "Multicluster Ingress-specific spec."
        },
        "namespaceactuation": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:NamespaceActuationFeatureSpecResponse",
          "description": "Namespace Actuation feature spec"
        },
        "workloadcertificate": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FeatureSpecResponse",
          "description": "Workload Certificate spec."
        }
      },
      "type": "object",
      "required": [
        "anthosobservability",
        "appdevexperience",
        "cloudauditlogging",
        "clusterupgrade",
        "fleetobservability",
        "multiclusteringress",
        "namespaceactuation",
        "workloadcertificate"
      ]
    },
    "google-native:gkehub/v1alpha:CommonFeatureStateResponse": {
      "description": "CommonFeatureState contains Hub-wide Feature status information.",
      "properties": {
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AppDevExperienceFeatureStateResponse",
          "description": "Appdevexperience specific state."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ClusterUpgradeFleetStateResponse",
          "description": "ClusterUpgrade fleet-level state."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFeatureStateResponse",
          "description": "FleetObservability feature state."
        },
        "namespaceactuation": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:NamespaceActuationFeatureStateResponse",
          "description": "Namespace Actuation feature state."
        },
        "servicemesh": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshFeatureStateResponse",
          "description": "Service Mesh-specific state."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FeatureStateResponse",
          "description": "The \"running state\" of the Feature in this Hub."
        }
      },
      "type": "object",
      "required": [
        "appdevexperience",
        "clusterupgrade",
        "fleetobservability",
        "namespaceactuation",
        "servicemesh",
        "state"
      ]
    },
    "google-native:gkehub/v1alpha:CommonFleetDefaultMemberConfigSpec": {
      "description": "CommonFleetDefaultMemberConfigSpec contains default configuration information for memberships of a fleet",
      "properties": {
        "configmanagement": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementMembershipSpec",
          "description": "Config Management-specific spec."
        },
        "identityservice": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceMembershipSpec",
          "description": "Identity Service-specific spec."
        },
        "mesh": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshMembershipSpec",
          "description": "Anthos Service Mesh-specific spec"
        },
        "policycontroller": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerMembershipSpec",
          "description": "Policy Controller spec."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:CommonFleetDefaultMemberConfigSpecResponse": {
      "description": "CommonFleetDefaultMemberConfigSpec contains default configuration information for memberships of a fleet",
      "properties": {
        "configmanagement": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementMembershipSpecResponse",
          "description": "Config Management-specific spec."
        },
        "identityservice": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceMembershipSpecResponse",
          "description": "Identity Service-specific spec."
        },
        "mesh": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshMembershipSpecResponse",
          "description": "Anthos Service Mesh-specific spec"
        },
        "policycontroller": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerMembershipSpecResponse",
          "description": "Policy Controller spec."
        }
      },
      "type": "object",
      "required": [
        "configmanagement",
        "identityservice",
        "mesh",
        "policycontroller"
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementBinauthzConfig": {
      "description": "Configuration for Binauthz",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether binauthz is enabled in this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ConfigManagementBinauthzConfigResponse": {
      "description": "Configuration for Binauthz",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether binauthz is enabled in this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementConfigSync": {
      "description": "Configuration for Config Sync",
      "properties": {
        "allowVerticalScale": {
          "type": "boolean",
          "description": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated.",
          "deprecationMessage": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field."
        },
        "git": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementGitConfig",
          "description": "Git repo configuration for the cluster."
        },
        "metricsGcpServiceAccountEmail": {
          "type": "string",
          "description": "The Email of the Google Cloud Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be bound to the GSA. This field is required when automatic Feature management is enabled."
        },
        "oci": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementOciConfig",
          "description": "OCI repo configuration for the cluster"
        },
        "preventDrift": {
          "type": "boolean",
          "description": "Set to true to enable the Config Sync admission webhook to prevent drifts. If set to `false`, disables the Config Sync admission webhook and does not prevent drifts."
        },
        "sourceFormat": {
          "type": "string",
          "description": "Specifies whether the Config Sync Repo is in \"hierarchical\" or \"unstructured\" mode."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ConfigManagementConfigSyncResponse": {
      "description": "Configuration for Config Sync",
      "properties": {
        "allowVerticalScale": {
          "type": "boolean",
          "description": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated.",
          "deprecationMessage": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field."
        },
        "git": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementGitConfigResponse",
          "description": "Git repo configuration for the cluster."
        },
        "metricsGcpServiceAccountEmail": {
          "type": "string",
          "description": "The Email of the Google Cloud Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be bound to the GSA. This field is required when automatic Feature management is enabled."
        },
        "oci": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementOciConfigResponse",
          "description": "OCI repo configuration for the cluster"
        },
        "preventDrift": {
          "type": "boolean",
          "description": "Set to true to enable the Config Sync admission webhook to prevent drifts. If set to `false`, disables the Config Sync admission webhook and does not prevent drifts."
        },
        "sourceFormat": {
          "type": "string",
          "description": "Specifies whether the Config Sync Repo is in \"hierarchical\" or \"unstructured\" mode."
        }
      },
      "type": "object",
      "required": [
        "allowVerticalScale",
        "enabled",
        "git",
        "metricsGcpServiceAccountEmail",
        "oci",
        "preventDrift",
        "sourceFormat"
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementGitConfig": {
      "description": "Git repo configuration for a single cluster.",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "httpsProxy": {
          "type": "string",
          "description": "URL for the HTTPS proxy to be used when communicating with the Git repo."
        },
        "policyDir": {
          "type": "string",
          "description": "The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, gcpserviceaccount or none. The validation of this is case-sensitive. Required."
        },
        "syncBranch": {
          "type": "string",
          "description": "The branch of the repository to sync from. Default: master."
        },
        "syncRepo": {
          "type": "string",
          "description": "The URL of the Git repository to use as the source of truth."
        },
        "syncRev": {
          "type": "string",
          "description": "Git revision (tag or hash) to check out. Default HEAD."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ConfigManagementGitConfigResponse": {
      "description": "Git repo configuration for a single cluster.",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "httpsProxy": {
          "type": "string",
          "description": "URL for the HTTPS proxy to be used when communicating with the Git repo."
        },
        "policyDir": {
          "type": "string",
          "description": "The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, gcpserviceaccount or none. The validation of this is case-sensitive. Required."
        },
        "syncBranch": {
          "type": "string",
          "description": "The branch of the repository to sync from. Default: master."
        },
        "syncRepo": {
          "type": "string",
          "description": "The URL of the Git repository to use as the source of truth."
        },
        "syncRev": {
          "type": "string",
          "description": "Git revision (tag or hash) to check out. Default HEAD."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object",
      "required": [
        "gcpServiceAccountEmail",
        "httpsProxy",
        "policyDir",
        "secretType",
        "syncBranch",
        "syncRepo",
        "syncRev",
        "syncWaitSecs"
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementHierarchyControllerConfig": {
      "description": "Configuration for Hierarchy Controller",
      "properties": {
        "enableHierarchicalResourceQuota": {
          "type": "boolean",
          "description": "Whether hierarchical resource quota is enabled in this cluster."
        },
        "enablePodTreeLabels": {
          "type": "boolean",
          "description": "Whether pod tree labels are enabled in this cluster."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Hierarchy Controller is enabled in this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ConfigManagementHierarchyControllerConfigResponse": {
      "description": "Configuration for Hierarchy Controller",
      "properties": {
        "enableHierarchicalResourceQuota": {
          "type": "boolean",
          "description": "Whether hierarchical resource quota is enabled in this cluster."
        },
        "enablePodTreeLabels": {
          "type": "boolean",
          "description": "Whether pod tree labels are enabled in this cluster."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Hierarchy Controller is enabled in this cluster."
        }
      },
      "type": "object",
      "required": [
        "enableHierarchicalResourceQuota",
        "enablePodTreeLabels",
        "enabled"
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementMembershipSpec": {
      "description": "**Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR.",
      "properties": {
        "binauthz": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementBinauthzConfig",
          "description": "Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set.",
          "deprecationMessage": "Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set."
        },
        "cluster": {
          "type": "string",
          "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector."
        },
        "configSync": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementConfigSync",
          "description": "Config Sync configuration for the cluster."
        },
        "hierarchyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementHierarchyControllerConfig",
          "description": "Hierarchy Controller configuration for the cluster."
        },
        "policyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementPolicyController",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of ACM installed."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ConfigManagementMembershipSpecResponse": {
      "description": "**Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR.",
      "properties": {
        "binauthz": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementBinauthzConfigResponse",
          "description": "Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set.",
          "deprecationMessage": "Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set."
        },
        "cluster": {
          "type": "string",
          "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector."
        },
        "configSync": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementConfigSyncResponse",
          "description": "Config Sync configuration for the cluster."
        },
        "hierarchyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementHierarchyControllerConfigResponse",
          "description": "Hierarchy Controller configuration for the cluster."
        },
        "policyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementPolicyControllerResponse",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of ACM installed."
        }
      },
      "type": "object",
      "required": [
        "binauthz",
        "cluster",
        "configSync",
        "hierarchyController",
        "policyController",
        "version"
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementOciConfig": {
      "description": "OCI repo configuration for a single cluster",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "policyDir": {
          "type": "string",
          "description": "The absolute path of the directory that contains the local resources. Default: the root directory of the image."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo."
        },
        "syncRepo": {
          "type": "string",
          "description": "The OCI image repository URL for the package to sync from. e.g. `LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME`."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ConfigManagementOciConfigResponse": {
      "description": "OCI repo configuration for a single cluster",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "policyDir": {
          "type": "string",
          "description": "The absolute path of the directory that contains the local resources. Default: the root directory of the image."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo."
        },
        "syncRepo": {
          "type": "string",
          "description": "The OCI image repository URL for the package to sync from. e.g. `LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME`."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object",
      "required": [
        "gcpServiceAccountEmail",
        "policyDir",
        "secretType",
        "syncRepo",
        "syncWaitSecs"
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementPolicyController": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementPolicyControllerMonitoring",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enable or disable mutation in policy controller. If true, mutation CRDs, webhook and controller deployment will be deployed to the cluster."
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        },
        "templateLibraryInstalled": {
          "type": "boolean",
          "description": "Installs the default template library along with Policy Controller."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ConfigManagementPolicyControllerMonitoring": {
      "description": "PolicyControllerMonitoring specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementPolicyControllerMonitoringBackendsItem"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ConfigManagementPolicyControllerMonitoringBackendsItem": {
      "type": "string",
      "enum": [
        {
          "name": "MonitoringBackendUnspecified",
          "description": "Backend cannot be determined",
          "value": "MONITORING_BACKEND_UNSPECIFIED"
        },
        {
          "name": "Prometheus",
          "description": "Prometheus backend for monitoring",
          "value": "PROMETHEUS"
        },
        {
          "name": "CloudMonitoring",
          "description": "Stackdriver/Cloud Monitoring backend for monitoring",
          "value": "CLOUD_MONITORING"
        }
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementPolicyControllerMonitoringResponse": {
      "description": "PolicyControllerMonitoring specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object",
      "required": [
        "backends"
      ]
    },
    "google-native:gkehub/v1alpha:ConfigManagementPolicyControllerResponse": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ConfigManagementPolicyControllerMonitoringResponse",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enable or disable mutation in policy controller. If true, mutation CRDs, webhook and controller deployment will be deployed to the cluster."
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        },
        "templateLibraryInstalled": {
          "type": "boolean",
          "description": "Installs the default template library along with Policy Controller."
        },
        "updateTime": {
          "type": "string",
          "description": "Last time this membership spec was updated."
        }
      },
      "type": "object",
      "required": [
        "auditIntervalSeconds",
        "enabled",
        "exemptableNamespaces",
        "logDeniesEnabled",
        "monitoring",
        "mutationEnabled",
        "referentialRulesEnabled",
        "templateLibraryInstalled",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1alpha:DefaultClusterConfig": {
      "description": "DefaultClusterConfig describes the default cluster configurations to be applied to all clusters born-in-fleet.",
      "properties": {
        "binaryAuthorizationConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:BinaryAuthorizationConfig",
          "description": "Optional. Enable/Disable binary authorization features for the cluster."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:SecurityPostureConfig",
          "description": "Enable/Disable Security Posture features for the cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:DefaultClusterConfigResponse": {
      "description": "DefaultClusterConfig describes the default cluster configurations to be applied to all clusters born-in-fleet.",
      "properties": {
        "binaryAuthorizationConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:BinaryAuthorizationConfigResponse",
          "description": "Optional. Enable/Disable binary authorization features for the cluster."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:SecurityPostureConfigResponse",
          "description": "Enable/Disable Security Posture features for the cluster."
        }
      },
      "type": "object",
      "required": [
        "binaryAuthorizationConfig",
        "securityPostureConfig"
      ]
    },
    "google-native:gkehub/v1alpha:EdgeCluster": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:EdgeClusterResponse": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gkehub/v1alpha:FeatureResourceStateResponse": {
      "description": "FeatureResourceState describes the state of a Feature *resource* in the GkeHub API. See `FeatureState` for the \"running state\" of the Feature in the Hub and across Memberships.",
      "properties": {
        "state": {
          "type": "string",
          "description": "The current state of the Feature resource in the Hub API."
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:gkehub/v1alpha:FeatureSpec": {
      "description": "**Workload Certificate**: The Hub-wide input for the WorkloadCertificate feature.",
      "properties": {
        "defaultConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipSpec",
          "description": "Specifies default membership spec. Users can override the default in the member_configs for each member."
        },
        "provisionGoogleCa": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FeatureSpecProvisionGoogleCa",
          "description": "Immutable. Specifies CA configuration."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:FeatureSpecProvisionGoogleCa": {
      "description": "Immutable. Specifies CA configuration.",
      "type": "string",
      "enum": [
        {
          "name": "GoogleCaProvisioningUnspecified",
          "description": "Disable default Google managed CA.",
          "value": "GOOGLE_CA_PROVISIONING_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable default Google managed CA.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "Use default Google managed CA.",
          "value": "ENABLED"
        },
        {
          "name": "EnabledWithManagedCa",
          "description": "Workload certificate feature is enabled, and the entire certificate provisioning process is managed by Google with managed CAS which is more secure than the default CA.",
          "value": "ENABLED_WITH_MANAGED_CA"
        },
        {
          "name": "EnabledWithDefaultCa",
          "description": "Workload certificate feature is enabled, and the entire certificate provisioning process is using the default CA which is free.",
          "value": "ENABLED_WITH_DEFAULT_CA"
        }
      ]
    },
    "google-native:gkehub/v1alpha:FeatureSpecResponse": {
      "description": "**Workload Certificate**: The Hub-wide input for the WorkloadCertificate feature.",
      "properties": {
        "defaultConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipSpecResponse",
          "description": "Specifies default membership spec. Users can override the default in the member_configs for each member."
        },
        "provisionGoogleCa": {
          "type": "string",
          "description": "Immutable. Specifies CA configuration."
        }
      },
      "type": "object",
      "required": [
        "defaultConfig",
        "provisionGoogleCa"
      ]
    },
    "google-native:gkehub/v1alpha:FeatureStateResponse": {
      "description": "FeatureState describes the high-level state of a Feature. It may be used to describe a Feature's state at the environ-level, or per-membershop, depending on the context.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The high-level, machine-readable status of this Feature."
        },
        "description": {
          "type": "string",
          "description": "A human-readable description of the current status."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this status and any related Feature-specific details were updated."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1alpha:FleetLifecycleStateResponse": {
      "description": "FleetLifecycleState describes the state of a Fleet resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Fleet resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityFeatureErrorResponse": {
      "description": "All error details of the fleet observability feature.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The code of the error."
        },
        "description": {
          "type": "string",
          "description": "A human-readable description of the current status."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description"
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityFeatureSpec": {
      "description": "**Fleet Observability**: The Hub-wide input for the FleetObservability feature.",
      "properties": {
        "loggingConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityLoggingConfig",
          "description": "Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:FleetObservabilityFeatureSpecResponse": {
      "description": "**Fleet Observability**: The Hub-wide input for the FleetObservability feature.",
      "properties": {
        "loggingConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityLoggingConfigResponse",
          "description": "Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet."
        }
      },
      "type": "object",
      "required": [
        "loggingConfig"
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityFeatureStateResponse": {
      "description": "**FleetObservability**: Hub-wide Feature for FleetObservability feature. state.",
      "properties": {
        "logging": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFleetObservabilityLoggingStateResponse",
          "description": "The feature state of default logging."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFleetObservabilityMonitoringStateResponse",
          "description": "The feature state of fleet monitoring."
        }
      },
      "type": "object",
      "required": [
        "logging",
        "monitoring"
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityFleetObservabilityBaseFeatureStateResponse": {
      "description": "Base state for fleet observability feature.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The high-level, machine-readable status of this Feature."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFeatureErrorResponse"
          },
          "description": "Errors after reconciling the monitoring and logging feature if the code is not OK."
        }
      },
      "type": "object",
      "required": [
        "code",
        "errors"
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityFleetObservabilityLoggingStateResponse": {
      "description": "Feature state for logging feature.",
      "properties": {
        "defaultLog": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet default log."
        },
        "scopeLog": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet scope log."
        }
      },
      "type": "object",
      "required": [
        "defaultLog",
        "scopeLog"
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityFleetObservabilityMonitoringStateResponse": {
      "description": "Feature state for monitoring feature.",
      "properties": {
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet monitoring feature."
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityLoggingConfig": {
      "description": "LoggingConfig defines the configuration for different types of logs.",
      "properties": {
        "defaultConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityRoutingConfig",
          "description": "Specified if applying the default routing config to logs not specified in other configs."
        },
        "fleetScopeLogsConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityRoutingConfig",
          "description": "Specified if applying the routing config to all logs for all fleet scopes."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:FleetObservabilityLoggingConfigResponse": {
      "description": "LoggingConfig defines the configuration for different types of logs.",
      "properties": {
        "defaultConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityRoutingConfigResponse",
          "description": "Specified if applying the default routing config to logs not specified in other configs."
        },
        "fleetScopeLogsConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityRoutingConfigResponse",
          "description": "Specified if applying the routing config to all logs for all fleet scopes."
        }
      },
      "type": "object",
      "required": [
        "defaultConfig",
        "fleetScopeLogsConfig"
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityRoutingConfig": {
      "description": "RoutingConfig configures the behaviour of fleet logging feature.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetObservabilityRoutingConfigMode",
          "description": "mode configures the logs routing mode."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:FleetObservabilityRoutingConfigMode": {
      "description": "mode configures the logs routing mode.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "If UNSPECIFIED, fleet logging feature is disabled.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Copy",
          "description": "logs will be copied to the destination project.",
          "value": "COPY"
        },
        {
          "name": "Move",
          "description": "logs will be moved to the destination project.",
          "value": "MOVE"
        }
      ]
    },
    "google-native:gkehub/v1alpha:FleetObservabilityRoutingConfigResponse": {
      "description": "RoutingConfig configures the behaviour of fleet logging feature.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "mode configures the logs routing mode."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:gkehub/v1alpha:GkeCluster": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:GkeClusterResponse": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that the GKE cluster no longer exists in the GKE Control Plane."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha:IdentityServiceAuthMethod": {
      "description": "Configuration of an auth method for a member/cluster. Only one authentication method (e.g., OIDC and LDAP) can be set per AuthMethod.",
      "properties": {
        "azureadConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceAzureADConfig",
          "description": "AzureAD specific Configuration."
        },
        "googleConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceGoogleConfig",
          "description": "GoogleConfig specific configuration."
        },
        "name": {
          "type": "string",
          "description": "Identifier for auth config."
        },
        "oidcConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceOidcConfig",
          "description": "OIDC specific configuration."
        },
        "proxy": {
          "type": "string",
          "description": "Proxy server address to use for auth method."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:IdentityServiceAuthMethodResponse": {
      "description": "Configuration of an auth method for a member/cluster. Only one authentication method (e.g., OIDC and LDAP) can be set per AuthMethod.",
      "properties": {
        "azureadConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceAzureADConfigResponse",
          "description": "AzureAD specific Configuration."
        },
        "googleConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceGoogleConfigResponse",
          "description": "GoogleConfig specific configuration."
        },
        "name": {
          "type": "string",
          "description": "Identifier for auth config."
        },
        "oidcConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceOidcConfigResponse",
          "description": "OIDC specific configuration."
        },
        "proxy": {
          "type": "string",
          "description": "Proxy server address to use for auth method."
        }
      },
      "type": "object",
      "required": [
        "azureadConfig",
        "googleConfig",
        "name",
        "oidcConfig",
        "proxy"
      ]
    },
    "google-native:gkehub/v1alpha:IdentityServiceAzureADConfig": {
      "description": "Configuration for the AzureAD Auth flow.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "ID for the registered client application that makes authentication requests to the Azure AD identity provider."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted AzureAD client secret will be passed to the GKE Hub CLH."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "The redirect URL that kubectl uses for authorization."
        },
        "tenant": {
          "type": "string",
          "description": "Kind of Azure AD account to be authenticated. Supported values are or for accounts belonging to a specific tenant."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:IdentityServiceAzureADConfigResponse": {
      "description": "Configuration for the AzureAD Auth flow.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "ID for the registered client application that makes authentication requests to the Azure AD identity provider."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted AzureAD client secret will be passed to the GKE Hub CLH."
        },
        "encryptedClientSecret": {
          "type": "string",
          "description": "Encrypted AzureAD client secret."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "The redirect URL that kubectl uses for authorization."
        },
        "tenant": {
          "type": "string",
          "description": "Kind of Azure AD account to be authenticated. Supported values are or for accounts belonging to a specific tenant."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "encryptedClientSecret",
        "kubectlRedirectUri",
        "tenant"
      ]
    },
    "google-native:gkehub/v1alpha:IdentityServiceGoogleConfig": {
      "description": "Configuration for the Google Plugin Auth flow.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Disable automatic configuration of Google Plugin on supported platforms."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:IdentityServiceGoogleConfigResponse": {
      "description": "Configuration for the Google Plugin Auth flow.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Disable automatic configuration of Google Plugin on supported platforms."
        }
      },
      "type": "object",
      "required": [
        "disable"
      ]
    },
    "google-native:gkehub/v1alpha:IdentityServiceMembershipSpec": {
      "description": "**Anthos Identity Service**: Configuration for a single Membership.",
      "properties": {
        "authMethods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceAuthMethod"
          },
          "description": "A member may support multiple auth methods."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:IdentityServiceMembershipSpecResponse": {
      "description": "**Anthos Identity Service**: Configuration for a single Membership.",
      "properties": {
        "authMethods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:IdentityServiceAuthMethodResponse"
          },
          "description": "A member may support multiple auth methods."
        }
      },
      "type": "object",
      "required": [
        "authMethods"
      ]
    },
    "google-native:gkehub/v1alpha:IdentityServiceOidcConfig": {
      "description": "Configuration for OIDC Auth flow.",
      "properties": {
        "certificateAuthorityData": {
          "type": "string",
          "description": "PEM-encoded CA for OIDC provider."
        },
        "clientId": {
          "type": "string",
          "description": "ID for OIDC client application."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted OIDC client secret will be passed to the GKE Hub CLH."
        },
        "deployCloudConsoleProxy": {
          "type": "boolean",
          "description": "Flag to denote if reverse proxy is used to connect to auth provider. This flag should be set to true when provider is not reachable by Google Cloud Console."
        },
        "enableAccessToken": {
          "type": "boolean",
          "description": "Enable access token."
        },
        "extraParams": {
          "type": "string",
          "description": "Comma-separated list of key-value pairs."
        },
        "groupPrefix": {
          "type": "string",
          "description": "Prefix to prepend to group name."
        },
        "groupsClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds group information."
        },
        "issuerUri": {
          "type": "string",
          "description": "URI for the OIDC provider. This should point to the level below .well-known/openid-configuration."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "Registered redirect uri to redirect users going through OAuth flow using kubectl plugin."
        },
        "scopes": {
          "type": "string",
          "description": "Comma-separated list of identifiers."
        },
        "userClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds username."
        },
        "userPrefix": {
          "type": "string",
          "description": "Prefix to prepend to user name."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:IdentityServiceOidcConfigResponse": {
      "description": "Configuration for OIDC Auth flow.",
      "properties": {
        "certificateAuthorityData": {
          "type": "string",
          "description": "PEM-encoded CA for OIDC provider."
        },
        "clientId": {
          "type": "string",
          "description": "ID for OIDC client application."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted OIDC client secret will be passed to the GKE Hub CLH."
        },
        "deployCloudConsoleProxy": {
          "type": "boolean",
          "description": "Flag to denote if reverse proxy is used to connect to auth provider. This flag should be set to true when provider is not reachable by Google Cloud Console."
        },
        "enableAccessToken": {
          "type": "boolean",
          "description": "Enable access token."
        },
        "encryptedClientSecret": {
          "type": "string",
          "description": "Encrypted OIDC Client secret"
        },
        "extraParams": {
          "type": "string",
          "description": "Comma-separated list of key-value pairs."
        },
        "groupPrefix": {
          "type": "string",
          "description": "Prefix to prepend to group name."
        },
        "groupsClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds group information."
        },
        "issuerUri": {
          "type": "string",
          "description": "URI for the OIDC provider. This should point to the level below .well-known/openid-configuration."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "Registered redirect uri to redirect users going through OAuth flow using kubectl plugin."
        },
        "scopes": {
          "type": "string",
          "description": "Comma-separated list of identifiers."
        },
        "userClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds username."
        },
        "userPrefix": {
          "type": "string",
          "description": "Prefix to prepend to user name."
        }
      },
      "type": "object",
      "required": [
        "certificateAuthorityData",
        "clientId",
        "clientSecret",
        "deployCloudConsoleProxy",
        "enableAccessToken",
        "encryptedClientSecret",
        "extraParams",
        "groupPrefix",
        "groupsClaim",
        "issuerUri",
        "kubectlRedirectUri",
        "scopes",
        "userClaim",
        "userPrefix"
      ]
    },
    "google-native:gkehub/v1alpha:KubernetesMetadataResponse": {
      "description": "KubernetesMetadata provides informational metadata for Memberships representing Kubernetes clusters.",
      "properties": {
        "kubernetesApiServerVersion": {
          "type": "string",
          "description": "Kubernetes API server version string as reported by `/version`."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The total memory capacity as reported by the sum of all Kubernetes nodes resources, defined in MB."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Node count as reported by Kubernetes nodes resources."
        },
        "nodeProviderId": {
          "type": "string",
          "description": "Node providerID as reported by the first node in the list of nodes on the Kubernetes endpoint. On Kubernetes platforms that support zero-node clusters (like GKE-on-GCP), the node_count will be zero and the node_provider_id will be empty."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which these details were last updated. This update_time is different from the Membership-level update_time since EndpointDetails are updated internally for API consumers."
        },
        "vcpuCount": {
          "type": "integer",
          "description": "vCPU count as reported by Kubernetes nodes resources."
        }
      },
      "type": "object",
      "required": [
        "kubernetesApiServerVersion",
        "memoryMb",
        "nodeCount",
        "nodeProviderId",
        "updateTime",
        "vcpuCount"
      ]
    },
    "google-native:gkehub/v1alpha:KubernetesResource": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during CreateMembership or UpdateMembership, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ResourceOptions",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:KubernetesResourceResponse": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "connectResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ResourceManifestResponse"
          },
          "description": "The Kubernetes resources for installing the GKE Connect agent This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during CreateMembership or UpdateMembership, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "membershipResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ResourceManifestResponse"
          },
          "description": "Additional Kubernetes resources that need to be applied to the cluster after Membership creation, and after every update. This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ResourceOptionsResponse",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object",
      "required": [
        "connectResources",
        "membershipCrManifest",
        "membershipResources",
        "resourceOptions"
      ]
    },
    "google-native:gkehub/v1alpha:MembershipBindingLifecycleStateResponse": {
      "description": "MembershipBindingLifecycleState describes the state of a Binding resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the MembershipBinding resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1alpha:MembershipEndpoint": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ApplianceCluster",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:EdgeCluster",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:GkeCluster",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:KubernetesResource",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MultiCloudCluster",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:OnPremCluster",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:MembershipEndpointResponse": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ApplianceClusterResponse",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:EdgeClusterResponse",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:GkeClusterResponse",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "googleManaged": {
          "type": "boolean",
          "description": "Whether the lifecycle of this membership is managed by a google cluster platform service."
        },
        "kubernetesMetadata": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:KubernetesMetadataResponse",
          "description": "Useful Kubernetes-specific metadata."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:KubernetesResourceResponse",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MultiCloudClusterResponse",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:OnPremClusterResponse",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object",
      "required": [
        "applianceCluster",
        "edgeCluster",
        "gkeCluster",
        "googleManaged",
        "kubernetesMetadata",
        "kubernetesResource",
        "multiCloudCluster",
        "onPremCluster"
      ]
    },
    "google-native:gkehub/v1alpha:MembershipSpec": {
      "description": "**Workload Certificate**: The membership-specific input for WorkloadCertificate feature.",
      "properties": {
        "certificateManagement": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipSpecCertificateManagement",
          "description": "Specifies workload certificate management."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:MembershipSpecCertificateManagement": {
      "description": "Specifies workload certificate management.",
      "type": "string",
      "enum": [
        {
          "name": "CertificateManagementUnspecified",
          "description": "Disable workload certificate feature.",
          "value": "CERTIFICATE_MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable workload certificate feature.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "Enable workload certificate feature.",
          "value": "ENABLED"
        }
      ]
    },
    "google-native:gkehub/v1alpha:MembershipSpecResponse": {
      "description": "**Workload Certificate**: The membership-specific input for WorkloadCertificate feature.",
      "properties": {
        "certificateManagement": {
          "type": "string",
          "description": "Specifies workload certificate management."
        }
      },
      "type": "object",
      "required": [
        "certificateManagement"
      ]
    },
    "google-native:gkehub/v1alpha:MembershipStateResponse": {
      "description": "MembershipState describes the state of a Membership resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Membership resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1alpha:MonitoringConfig": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:MonitoringConfigResponse": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "clusterHash",
        "kubernetesMetricsPrefix",
        "location",
        "project"
      ]
    },
    "google-native:gkehub/v1alpha:MultiCloudCluster": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:MultiCloudClusterResponse": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkemulticloud.googleapis.com) resource for this GKE Multi-Cloud cluster no longer exists."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha:MultiClusterIngressFeatureSpec": {
      "description": "**Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature.",
      "properties": {
        "billing": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MultiClusterIngressFeatureSpecBilling",
          "description": "Deprecated: This field will be ignored and should not be set. Customer's billing structure.",
          "deprecationMessage": "Deprecated: This field will be ignored and should not be set. Customer's billing structure."
        },
        "configMembership": {
          "type": "string",
          "description": "Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:MultiClusterIngressFeatureSpecBilling": {
      "description": "Deprecated: This field will be ignored and should not be set. Customer's billing structure.",
      "type": "string",
      "enum": [
        {
          "name": "BillingUnspecified",
          "description": "Unknown",
          "value": "BILLING_UNSPECIFIED"
        },
        {
          "name": "PayAsYouGo",
          "description": "User pays a fee per-endpoint.",
          "value": "PAY_AS_YOU_GO"
        },
        {
          "name": "AnthosLicense",
          "description": "User is paying for Anthos as a whole.",
          "value": "ANTHOS_LICENSE"
        }
      ]
    },
    "google-native:gkehub/v1alpha:MultiClusterIngressFeatureSpecResponse": {
      "description": "**Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature.",
      "properties": {
        "billing": {
          "type": "string",
          "description": "Deprecated: This field will be ignored and should not be set. Customer's billing structure.",
          "deprecationMessage": "Deprecated: This field will be ignored and should not be set. Customer's billing structure."
        },
        "configMembership": {
          "type": "string",
          "description": "Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`"
        }
      },
      "type": "object",
      "required": [
        "billing",
        "configMembership"
      ]
    },
    "google-native:gkehub/v1alpha:NamespaceActuationFeatureSpec": {
      "description": "An empty spec for actuation feature. This is required since Feature proto requires a spec.",
      "properties": {
        "actuationMode": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:NamespaceActuationFeatureSpecActuationMode",
          "description": "actuation_mode controls the behavior of the controller"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:NamespaceActuationFeatureSpecActuationMode": {
      "description": "actuation_mode controls the behavior of the controller",
      "type": "string",
      "enum": [
        {
          "name": "ActuationModeUnspecified",
          "description": "ACTUATION_MODE_UNSPECIFIED is similar to CREATE_AND_DELETE_IF_CREATED in the default controller behavior.",
          "value": "ACTUATION_MODE_UNSPECIFIED"
        },
        {
          "name": "ActuationModeCreateAndDeleteIfCreated",
          "description": "ACTUATION_MODE_CREATE_AND_DELETE_IF_CREATED has the controller create cluster namespaces for each fleet namespace and it deletes only the ones it created, which are identified by a label.",
          "value": "ACTUATION_MODE_CREATE_AND_DELETE_IF_CREATED"
        },
        {
          "name": "ActuationModeAddAndRemoveFleetLabels",
          "description": "ACTUATION_MODE_ADD_AND_REMOVE_FLEET_LABELS has the controller only apply labels to cluster namespaces to signal fleet namespace enablement. It doesn't create or delete cluster namespaces.",
          "value": "ACTUATION_MODE_ADD_AND_REMOVE_FLEET_LABELS"
        }
      ]
    },
    "google-native:gkehub/v1alpha:NamespaceActuationFeatureSpecResponse": {
      "description": "An empty spec for actuation feature. This is required since Feature proto requires a spec.",
      "properties": {
        "actuationMode": {
          "type": "string",
          "description": "actuation_mode controls the behavior of the controller"
        }
      },
      "type": "object",
      "required": [
        "actuationMode"
      ]
    },
    "google-native:gkehub/v1alpha:NamespaceActuationFeatureStateResponse": {
      "description": "NamespaceActuation Feature State.",
      "type": "object"
    },
    "google-native:gkehub/v1alpha:NamespaceLifecycleStateResponse": {
      "description": "NamespaceLifecycleState describes the state of a Namespace resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Namespace resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1alpha:OnPremCluster": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterType": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:OnPremClusterClusterType",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:OnPremClusterClusterType": {
      "description": "Immutable. The on prem cluster's type.",
      "type": "string",
      "enum": [
        {
          "name": "ClustertypeUnspecified",
          "description": "The ClusterType is not set.",
          "value": "CLUSTERTYPE_UNSPECIFIED"
        },
        {
          "name": "Bootstrap",
          "description": "The ClusterType is bootstrap cluster.",
          "value": "BOOTSTRAP"
        },
        {
          "name": "Hybrid",
          "description": "The ClusterType is baremetal hybrid cluster.",
          "value": "HYBRID"
        },
        {
          "name": "Standalone",
          "description": "The ClusterType is baremetal standalone cluster.",
          "value": "STANDALONE"
        },
        {
          "name": "User",
          "description": "The ClusterType is user cluster.",
          "value": "USER"
        }
      ]
    },
    "google-native:gkehub/v1alpha:OnPremClusterResponse": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkeonprem.googleapis.com) resource for this GKE On-Prem cluster no longer exists."
        },
        "clusterType": {
          "type": "string",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "adminCluster",
        "clusterMissing",
        "clusterType",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1alpha:PolicyBinding": {
      "description": "Binauthz policy that applies to this cluster.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The relative resource name of the binauthz platform policy to audit. GKE platform policies have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:PolicyBindingResponse": {
      "description": "Binauthz policy that applies to this cluster.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The relative resource name of the binauthz platform policy to audit. GKE platform policies have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:gkehub/v1alpha:PolicyControllerHubConfig": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "constraintViolationLimit": {
          "type": "string",
          "description": "The maximum number of audit violations to be stored in a constraint. If not set, the internal default (currently 20) will be used."
        },
        "deploymentConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of deployment configs to deployments (\"admission\", \"audit\", \"mutation')."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "installSpec": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerHubConfigInstallSpec",
          "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerMonitoringConfig",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enables the ability to mutate resources using Policy Controller."
        },
        "policyContent": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerPolicyContentSpec",
          "description": "Specifies the desired policy content on the cluster"
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:PolicyControllerHubConfigInstallSpec": {
      "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state.",
      "type": "string",
      "enum": [
        {
          "name": "InstallSpecUnspecified",
          "description": "Spec is unknown.",
          "value": "INSTALL_SPEC_UNSPECIFIED"
        },
        {
          "name": "InstallSpecNotInstalled",
          "description": "Request to uninstall Policy Controller.",
          "value": "INSTALL_SPEC_NOT_INSTALLED"
        },
        {
          "name": "InstallSpecEnabled",
          "description": "Request to install and enable Policy Controller.",
          "value": "INSTALL_SPEC_ENABLED"
        },
        {
          "name": "InstallSpecSuspended",
          "description": "Request to suspend Policy Controller i.e. its webhooks. If Policy Controller is not installed, it will be installed but suspended.",
          "value": "INSTALL_SPEC_SUSPENDED"
        },
        {
          "name": "InstallSpecDetached",
          "description": "Request to stop all reconciliation actions by PoCo Hub controller. This is a breakglass mechanism to stop PoCo Hub from affecting cluster resources.",
          "value": "INSTALL_SPEC_DETACHED"
        }
      ]
    },
    "google-native:gkehub/v1alpha:PolicyControllerHubConfigResponse": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "constraintViolationLimit": {
          "type": "string",
          "description": "The maximum number of audit violations to be stored in a constraint. If not set, the internal default (currently 20) will be used."
        },
        "deploymentConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of deployment configs to deployments (\"admission\", \"audit\", \"mutation')."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "installSpec": {
          "type": "string",
          "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerMonitoringConfigResponse",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enables the ability to mutate resources using Policy Controller."
        },
        "policyContent": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerPolicyContentSpecResponse",
          "description": "Specifies the desired policy content on the cluster"
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        }
      },
      "type": "object",
      "required": [
        "auditIntervalSeconds",
        "constraintViolationLimit",
        "deploymentConfigs",
        "exemptableNamespaces",
        "installSpec",
        "logDeniesEnabled",
        "monitoring",
        "mutationEnabled",
        "policyContent",
        "referentialRulesEnabled"
      ]
    },
    "google-native:gkehub/v1alpha:PolicyControllerMembershipSpec": {
      "description": "**Policy Controller**: Configuration for a single cluster. Intended to parallel the PolicyController CR.",
      "properties": {
        "policyControllerHubConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerHubConfig",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of Policy Controller installed."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:PolicyControllerMembershipSpecResponse": {
      "description": "**Policy Controller**: Configuration for a single cluster. Intended to parallel the PolicyController CR.",
      "properties": {
        "policyControllerHubConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerHubConfigResponse",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of Policy Controller installed."
        }
      },
      "type": "object",
      "required": [
        "policyControllerHubConfig",
        "version"
      ]
    },
    "google-native:gkehub/v1alpha:PolicyControllerMonitoringConfig": {
      "description": "MonitoringConfig specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerMonitoringConfigBackendsItem"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:PolicyControllerMonitoringConfigBackendsItem": {
      "type": "string",
      "enum": [
        {
          "name": "MonitoringBackendUnspecified",
          "description": "Backend cannot be determined",
          "value": "MONITORING_BACKEND_UNSPECIFIED"
        },
        {
          "name": "Prometheus",
          "description": "Prometheus backend for monitoring",
          "value": "PROMETHEUS"
        },
        {
          "name": "CloudMonitoring",
          "description": "Stackdriver/Cloud Monitoring backend for monitoring",
          "value": "CLOUD_MONITORING"
        }
      ]
    },
    "google-native:gkehub/v1alpha:PolicyControllerMonitoringConfigResponse": {
      "description": "MonitoringConfig specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object",
      "required": [
        "backends"
      ]
    },
    "google-native:gkehub/v1alpha:PolicyControllerPolicyContentSpec": {
      "description": "PolicyContentSpec defines the user's desired content configuration on the cluster.",
      "properties": {
        "bundles": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "map of bundle name to BundleInstallSpec. The bundle name maps to the `bundleName` key in the `policycontroller.gke.io/constraintData` annotation on a constraint."
        },
        "templateLibrary": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerTemplateLibraryConfig",
          "description": "Configures the installation of the Template Library."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:PolicyControllerPolicyContentSpecResponse": {
      "description": "PolicyContentSpec defines the user's desired content configuration on the cluster.",
      "properties": {
        "bundles": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "map of bundle name to BundleInstallSpec. The bundle name maps to the `bundleName` key in the `policycontroller.gke.io/constraintData` annotation on a constraint."
        },
        "templateLibrary": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerTemplateLibraryConfigResponse",
          "description": "Configures the installation of the Template Library."
        }
      },
      "type": "object",
      "required": [
        "bundles",
        "templateLibrary"
      ]
    },
    "google-native:gkehub/v1alpha:PolicyControllerTemplateLibraryConfig": {
      "description": "The config specifying which default library templates to install.",
      "properties": {
        "installation": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:PolicyControllerTemplateLibraryConfigInstallation",
          "description": "Configures the manner in which the template library is installed on the cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:PolicyControllerTemplateLibraryConfigInstallation": {
      "description": "Configures the manner in which the template library is installed on the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "InstallationUnspecified",
          "description": "No installation strategy has been specified.",
          "value": "INSTALLATION_UNSPECIFIED"
        },
        {
          "name": "NotInstalled",
          "description": "Do not install the template library.",
          "value": "NOT_INSTALLED"
        },
        {
          "name": "All",
          "description": "Install the entire template library.",
          "value": "ALL"
        }
      ]
    },
    "google-native:gkehub/v1alpha:PolicyControllerTemplateLibraryConfigResponse": {
      "description": "The config specifying which default library templates to install.",
      "properties": {
        "installation": {
          "type": "string",
          "description": "Configures the manner in which the template library is installed on the cluster."
        }
      },
      "type": "object",
      "required": [
        "installation"
      ]
    },
    "google-native:gkehub/v1alpha:RBACRoleBindingLifecycleStateResponse": {
      "description": "RBACRoleBindingLifecycleState describes the state of a RbacRoleBinding resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the rbacrolebinding resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1alpha:ResourceManifestResponse": {
      "description": "ResourceManifest represents a single Kubernetes resource to be applied to the cluster.",
      "properties": {
        "clusterScoped": {
          "type": "boolean",
          "description": "Whether the resource provided in the manifest is `cluster_scoped`. If unset, the manifest is assumed to be namespace scoped. This field is used for REST mapping when applying the resource in a cluster."
        },
        "manifest": {
          "type": "string",
          "description": "YAML manifest of the resource."
        }
      },
      "type": "object",
      "required": [
        "clusterScoped",
        "manifest"
      ]
    },
    "google-native:gkehub/v1alpha:ResourceOptions": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ResourceOptionsResponse": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object",
      "required": [
        "connectVersion",
        "k8sVersion",
        "v1beta1Crd"
      ]
    },
    "google-native:gkehub/v1alpha:Role": {
      "description": "Role is the type for Kubernetes roles",
      "properties": {
        "predefinedRole": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:RolePredefinedRole",
          "description": "predefined_role is the Kubernetes default role to use"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:RolePredefinedRole": {
      "description": "predefined_role is the Kubernetes default role to use",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "UNKNOWN",
          "value": "UNKNOWN"
        },
        {
          "name": "Admin",
          "description": "ADMIN has EDIT and RBAC permissions",
          "value": "ADMIN"
        },
        {
          "name": "Edit",
          "description": "EDIT can edit all resources except RBAC",
          "value": "EDIT"
        },
        {
          "name": "View",
          "description": "VIEW can only read resources",
          "value": "VIEW"
        },
        {
          "name": "AnthosSupport",
          "description": "ANTHOS_SUPPORT gives Google Support read-only access to a number of cluster resources.",
          "value": "ANTHOS_SUPPORT"
        }
      ]
    },
    "google-native:gkehub/v1alpha:RoleResponse": {
      "description": "Role is the type for Kubernetes roles",
      "properties": {
        "predefinedRole": {
          "type": "string",
          "description": "predefined_role is the Kubernetes default role to use"
        }
      },
      "type": "object",
      "required": [
        "predefinedRole"
      ]
    },
    "google-native:gkehub/v1alpha:ScopeLifecycleStateResponse": {
      "description": "ScopeLifecycleState describes the state of a Scope resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the scope resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1alpha:SecurityPostureConfig": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:SecurityPostureConfigMode",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:SecurityPostureConfigVulnerabilityMode",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:SecurityPostureConfigMode": {
      "description": "Sets which mode to use for Security Posture features.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value not specified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disables Security Posture features on the cluster.",
          "value": "DISABLED"
        },
        {
          "name": "Basic",
          "description": "Applies Security Posture features on the cluster.",
          "value": "BASIC"
        }
      ]
    },
    "google-native:gkehub/v1alpha:SecurityPostureConfigResponse": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "type": "string",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "vulnerabilityMode"
      ]
    },
    "google-native:gkehub/v1alpha:SecurityPostureConfigVulnerabilityMode": {
      "description": "Sets which mode to use for vulnerability scanning.",
      "type": "string",
      "enum": [
        {
          "name": "VulnerabilityModeUnspecified",
          "description": "Default value not specified.",
          "value": "VULNERABILITY_MODE_UNSPECIFIED"
        },
        {
          "name": "VulnerabilityDisabled",
          "description": "Disables vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_DISABLED"
        },
        {
          "name": "VulnerabilityBasic",
          "description": "Applies basic vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_BASIC"
        },
        {
          "name": "VulnerabilityEnterprise",
          "description": "Applies the Security Posture's vulnerability on cluster Enterprise level features.",
          "value": "VULNERABILITY_ENTERPRISE"
        }
      ]
    },
    "google-native:gkehub/v1alpha:ServiceMeshAnalysisMessageBaseResponse": {
      "description": "AnalysisMessageBase describes some common information that is needed for all messages.",
      "properties": {
        "documentationUrl": {
          "type": "string",
          "description": "A url pointing to the Service Mesh or Istio documentation for this specific error type."
        },
        "level": {
          "type": "string",
          "description": "Represents how severe a message is."
        },
        "type": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshTypeResponse",
          "description": "Represents the specific type of a message."
        }
      },
      "type": "object",
      "required": [
        "documentationUrl",
        "level",
        "type"
      ]
    },
    "google-native:gkehub/v1alpha:ServiceMeshAnalysisMessageResponse": {
      "description": "AnalysisMessage is a single message produced by an analyzer, and it used to communicate to the end user about the state of their Service Mesh configuration.",
      "properties": {
        "args": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A UI can combine these args with a template (based on message_base.type) to produce an internationalized message."
        },
        "description": {
          "type": "string",
          "description": "A human readable description of what the error means. It is suitable for non-internationalize display purposes."
        },
        "messageBase": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshAnalysisMessageBaseResponse",
          "description": "Details common to all types of Istio and ServiceMesh analysis messages."
        },
        "resourcePaths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of strings specifying the resource identifiers that were the cause of message generation. A \"path\" here may be: * MEMBERSHIP_ID if the cause is a specific member cluster * MEMBERSHIP_ID/(NAMESPACE\\/)?RESOURCETYPE/NAME if the cause is a resource in a cluster"
        }
      },
      "type": "object",
      "required": [
        "args",
        "description",
        "messageBase",
        "resourcePaths"
      ]
    },
    "google-native:gkehub/v1alpha:ServiceMeshFeatureStateResponse": {
      "description": "**Service Mesh**: State for the whole Hub, as analyzed by the Service Mesh Hub Controller.",
      "properties": {
        "analysisMessages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshAnalysisMessageResponse"
          },
          "description": "Results of running Service Mesh analyzers."
        }
      },
      "type": "object",
      "required": [
        "analysisMessages"
      ]
    },
    "google-native:gkehub/v1alpha:ServiceMeshMembershipSpec": {
      "description": "**Service Mesh**: Spec for a single Membership for the servicemesh feature",
      "properties": {
        "controlPlane": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshMembershipSpecControlPlane",
          "description": "Deprecated: use `management` instead Enables automatic control plane management.",
          "deprecationMessage": "Deprecated: use `management` instead Enables automatic control plane management."
        },
        "defaultChannel": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshMembershipSpecDefaultChannel",
          "description": "Determines which release channel to use for default injection and service mesh APIs."
        },
        "management": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ServiceMeshMembershipSpecManagement",
          "description": "Enables automatic Service Mesh management."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1alpha:ServiceMeshMembershipSpecControlPlane": {
      "description": "Deprecated: use `management` instead Enables automatic control plane management.",
      "type": "string",
      "enum": [
        {
          "name": "ControlPlaneManagementUnspecified",
          "description": "Unspecified",
          "value": "CONTROL_PLANE_MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "Automatic",
          "description": "Google should provision a control plane revision and make it available in the cluster. Google will enroll this revision in a release channel and keep it up to date. The control plane revision may be a managed service, or a managed install.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Manual",
          "description": "User will manually configure the control plane (e.g. via CLI, or via the ControlPlaneRevision KRM API)",
          "value": "MANUAL"
        }
      ]
    },
    "google-native:gkehub/v1alpha:ServiceMeshMembershipSpecDefaultChannel": {
      "description": "Determines which release channel to use for default injection and service mesh APIs.",
      "type": "string",
      "enum": [
        {
          "name": "ChannelUnspecified",
          "description": "Unspecified",
          "value": "CHANNEL_UNSPECIFIED"
        },
        {
          "name": "Rapid",
          "description": "RAPID channel is offered on an early access basis for customers who want to test new releases.",
          "value": "RAPID"
        },
        {
          "name": "Regular",
          "description": "REGULAR channel is intended for production users who want to take advantage of new features.",
          "value": "REGULAR"
        },
        {
          "name": "Stable",
          "description": "STABLE channel includes versions that are known to be stable and reliable in production.",
          "value": "STABLE"
        }
      ]
    },
    "google-native:gkehub/v1alpha:ServiceMeshMembershipSpecManagement": {
      "description": "Enables automatic Service Mesh management.",
      "type": "string",
      "enum": [
        {
          "name": "ManagementUnspecified",
          "description": "Unspecified",
          "value": "MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "ManagementAutomatic",
          "description": "Google should manage my Service Mesh for the cluster.",
          "value": "MANAGEMENT_AUTOMATIC"
        },
        {
          "name": "ManagementManual",
          "description": "User will manually configure their service mesh components.",
          "value": "MANAGEMENT_MANUAL"
        }
      ]
    },
    "google-native:gkehub/v1alpha:ServiceMeshMembershipSpecResponse": {
      "description": "**Service Mesh**: Spec for a single Membership for the servicemesh feature",
      "properties": {
        "controlPlane": {
          "type": "string",
          "description": "Deprecated: use `management` instead Enables automatic control plane management.",
          "deprecationMessage": "Deprecated: use `management` instead Enables automatic control plane management."
        },
        "defaultChannel": {
          "type": "string",
          "description": "Determines which release channel to use for default injection and service mesh APIs."
        },
        "management": {
          "type": "string",
          "description": "Enables automatic Service Mesh management."
        }
      },
      "type": "object",
      "required": [
        "controlPlane",
        "defaultChannel",
        "management"
      ]
    },
    "google-native:gkehub/v1alpha:ServiceMeshTypeResponse": {
      "description": "A unique identifier for the type of message. Display_name is intended to be human-readable, code is intended to be machine readable. There should be a one-to-one mapping between display_name and code. (i.e. do not re-use display_names or codes between message types.) See istio.analysis.v1alpha1.AnalysisMessageBase.Type",
      "properties": {
        "code": {
          "type": "string",
          "description": "A 7 character code matching `^IST[0-9]{4}$` or `^ASM[0-9]{4}$`, intended to uniquely identify the message type. (e.g. \"IST0001\" is mapped to the \"InternalError\" message type.)"
        },
        "displayName": {
          "type": "string",
          "description": "A human-readable name for the message type. e.g. \"InternalError\", \"PodMissingProxy\". This should be the same for all messages of the same type. (This corresponds to the `name` field in open-source Istio.)"
        }
      },
      "type": "object",
      "required": [
        "code",
        "displayName"
      ]
    },
    "google-native:gkehub/v1alpha:StatusResponse": {
      "description": "Status specifies state for the subcomponent.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code specifies AppDevExperienceFeature's subcomponent ready state."
        },
        "description": {
          "type": "string",
          "description": "Description is populated if Code is Failed, explaining why it has failed."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description"
      ]
    },
    "google-native:gkehub/v1beta1:ApplianceCluster": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:ApplianceClusterResponse": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:gkehub/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:gkehub/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:gkehub/v1beta1:Authority": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:AuthorityResponse": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "identityProvider": {
          "type": "string",
          "description": "An identity provider that reflects the `issuer` in the workload identity pool."
        },
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        },
        "workloadIdentityPool": {
          "type": "string",
          "description": "The name of the workload identity pool in which `issuer` will be recognized. There is a single Workload Identity Pool per Hub that is shared between all Memberships that belong to that Hub. For a Hub hosted in {PROJECT_ID}, the workload pool format is `{PROJECT_ID}.hub.id.goog`, although this is subject to change in newer versions of this API."
        }
      },
      "type": "object",
      "required": [
        "identityProvider",
        "issuer",
        "oidcJwks",
        "workloadIdentityPool"
      ]
    },
    "google-native:gkehub/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gkehub/v1beta1:EdgeCluster": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:EdgeClusterResponse": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gkehub/v1beta1:GkeCluster": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:GkeClusterResponse": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that the GKE cluster no longer exists in the GKE Control Plane."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta1:KubernetesMetadataResponse": {
      "description": "KubernetesMetadata provides informational metadata for Memberships representing Kubernetes clusters.",
      "properties": {
        "kubernetesApiServerVersion": {
          "type": "string",
          "description": "Kubernetes API server version string as reported by '/version'."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The total memory capacity as reported by the sum of all Kubernetes nodes resources, defined in MB."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Node count as reported by Kubernetes nodes resources."
        },
        "nodeProviderId": {
          "type": "string",
          "description": "Node providerID as reported by the first node in the list of nodes on the Kubernetes endpoint. On Kubernetes platforms that support zero-node clusters (like GKE-on-GCP), the node_count will be zero and the node_provider_id will be empty."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which these details were last updated. This update_time is different from the Membership-level update_time since EndpointDetails are updated internally for API consumers."
        },
        "vcpuCount": {
          "type": "integer",
          "description": "vCPU count as reported by Kubernetes nodes resources."
        }
      },
      "type": "object",
      "required": [
        "kubernetesApiServerVersion",
        "memoryMb",
        "nodeCount",
        "nodeProviderId",
        "updateTime",
        "vcpuCount"
      ]
    },
    "google-native:gkehub/v1beta1:KubernetesResource": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during CreateMembership or UpdateMembership, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:ResourceOptions",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:KubernetesResourceResponse": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "connectResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:ResourceManifestResponse"
          },
          "description": "The Kubernetes resources for installing the GKE Connect agent This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during CreateMembership or UpdateMembership, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "membershipResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:ResourceManifestResponse"
          },
          "description": "Additional Kubernetes resources that need to be applied to the cluster after Membership creation, and after every update. This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:ResourceOptionsResponse",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object",
      "required": [
        "connectResources",
        "membershipCrManifest",
        "membershipResources",
        "resourceOptions"
      ]
    },
    "google-native:gkehub/v1beta1:MembershipEndpoint": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:ApplianceCluster",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:EdgeCluster",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:GkeCluster",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:KubernetesResource",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:MultiCloudCluster",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:OnPremCluster",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:MembershipEndpointResponse": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:ApplianceClusterResponse",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:EdgeClusterResponse",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:GkeClusterResponse",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "kubernetesMetadata": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:KubernetesMetadataResponse",
          "description": "Useful Kubernetes-specific metadata."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:KubernetesResourceResponse",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:MultiCloudClusterResponse",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:OnPremClusterResponse",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object",
      "required": [
        "applianceCluster",
        "edgeCluster",
        "gkeCluster",
        "kubernetesMetadata",
        "kubernetesResource",
        "multiCloudCluster",
        "onPremCluster"
      ]
    },
    "google-native:gkehub/v1beta1:MembershipInfrastructureType": {
      "description": "Optional. The infrastructure type this Membership is running on.",
      "type": "string",
      "enum": [
        {
          "name": "InfrastructureTypeUnspecified",
          "description": "No type was specified. Some Hub functionality may require a type be specified, and will not support Memberships with this value.",
          "value": "INFRASTRUCTURE_TYPE_UNSPECIFIED"
        },
        {
          "name": "OnPrem",
          "description": "Private infrastructure that is owned or operated by customer. This includes GKE distributions such as GKE-OnPrem and GKE-OnBareMetal.",
          "value": "ON_PREM"
        },
        {
          "name": "MultiCloud",
          "description": "Public cloud infrastructure.",
          "value": "MULTI_CLOUD"
        }
      ]
    },
    "google-native:gkehub/v1beta1:MembershipStateResponse": {
      "description": "State of the Membership resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Membership resource."
        },
        "description": {
          "type": "string",
          "description": "This field is never set by the Hub Service."
        },
        "updateTime": {
          "type": "string",
          "description": "This field is never set by the Hub Service."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1beta1:MonitoringConfig": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:MonitoringConfigResponse": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "clusterHash",
        "kubernetesMetricsPrefix",
        "location",
        "project"
      ]
    },
    "google-native:gkehub/v1beta1:MultiCloudCluster": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:MultiCloudClusterResponse": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkemulticloud.googleapis.com) resource for this GKE Multi-Cloud cluster no longer exists."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta1:OnPremCluster": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterType": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:OnPremClusterClusterType",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:OnPremClusterClusterType": {
      "description": "Immutable. The on prem cluster's type.",
      "type": "string",
      "enum": [
        {
          "name": "ClustertypeUnspecified",
          "description": "The ClusterType is not set.",
          "value": "CLUSTERTYPE_UNSPECIFIED"
        },
        {
          "name": "Bootstrap",
          "description": "The ClusterType is bootstrap cluster.",
          "value": "BOOTSTRAP"
        },
        {
          "name": "Hybrid",
          "description": "The ClusterType is baremetal hybrid cluster.",
          "value": "HYBRID"
        },
        {
          "name": "Standalone",
          "description": "The ClusterType is baremetal standalone cluster.",
          "value": "STANDALONE"
        },
        {
          "name": "User",
          "description": "The ClusterType is user cluster.",
          "value": "USER"
        }
      ]
    },
    "google-native:gkehub/v1beta1:OnPremClusterResponse": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkeonprem.googleapis.com) resource for this GKE On-Prem cluster no longer exists."
        },
        "clusterType": {
          "type": "string",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the GCP resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "adminCluster",
        "clusterMissing",
        "clusterType",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta1:ResourceManifestResponse": {
      "description": "ResourceManifest represents a single Kubernetes resource to be applied to the cluster.",
      "properties": {
        "clusterScoped": {
          "type": "boolean",
          "description": "Whether the resource provided in the manifest is `cluster_scoped`. If unset, the manifest is assumed to be namespace scoped. This field is used for REST mapping when applying the resource in a cluster."
        },
        "manifest": {
          "type": "string",
          "description": "YAML manifest of the resource."
        }
      },
      "type": "object",
      "required": [
        "clusterScoped",
        "manifest"
      ]
    },
    "google-native:gkehub/v1beta1:ResourceOptions": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta1:ResourceOptionsResponse": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object",
      "required": [
        "connectVersion",
        "k8sVersion",
        "v1beta1Crd"
      ]
    },
    "google-native:gkehub/v1beta:AnthosObservabilityFeatureSpec": {
      "description": "**Anthos Observability**: Spec",
      "properties": {
        "defaultMembershipSpec": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AnthosObservabilityMembershipSpec",
          "description": "Default membership spec for unconfigured memberships"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:AnthosObservabilityFeatureSpecResponse": {
      "description": "**Anthos Observability**: Spec",
      "properties": {
        "defaultMembershipSpec": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AnthosObservabilityMembershipSpecResponse",
          "description": "Default membership spec for unconfigured memberships"
        }
      },
      "type": "object",
      "required": [
        "defaultMembershipSpec"
      ]
    },
    "google-native:gkehub/v1beta:AnthosObservabilityMembershipSpec": {
      "description": "**Anthosobservability**: Per-Membership Feature spec.",
      "properties": {
        "doNotOptimizeMetrics": {
          "type": "boolean",
          "description": "Use full of metrics rather than optimized metrics. See https://cloud.google.com/anthos/clusters/docs/on-prem/1.8/concepts/logging-and-monitoring#optimized_metrics_default_metrics"
        },
        "enableStackdriverOnApplications": {
          "type": "boolean",
          "description": "Enable collecting and reporting metrics and logs from user apps."
        },
        "version": {
          "type": "string",
          "description": "the version of stackdriver operator used by this feature"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:AnthosObservabilityMembershipSpecResponse": {
      "description": "**Anthosobservability**: Per-Membership Feature spec.",
      "properties": {
        "doNotOptimizeMetrics": {
          "type": "boolean",
          "description": "Use full of metrics rather than optimized metrics. See https://cloud.google.com/anthos/clusters/docs/on-prem/1.8/concepts/logging-and-monitoring#optimized_metrics_default_metrics"
        },
        "enableStackdriverOnApplications": {
          "type": "boolean",
          "description": "Enable collecting and reporting metrics and logs from user apps."
        },
        "version": {
          "type": "string",
          "description": "the version of stackdriver operator used by this feature"
        }
      },
      "type": "object",
      "required": [
        "doNotOptimizeMetrics",
        "enableStackdriverOnApplications",
        "version"
      ]
    },
    "google-native:gkehub/v1beta:AppDevExperienceFeatureSpec": {
      "description": "Spec for App Dev Experience Feature.",
      "type": "object"
    },
    "google-native:gkehub/v1beta:AppDevExperienceFeatureSpecResponse": {
      "description": "Spec for App Dev Experience Feature.",
      "type": "object"
    },
    "google-native:gkehub/v1beta:AppDevExperienceFeatureStateResponse": {
      "description": "State for App Dev Exp Feature.",
      "properties": {
        "networkingInstallSucceeded": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:StatusResponse",
          "description": "Status of subcomponent that detects configured Service Mesh resources."
        }
      },
      "type": "object",
      "required": [
        "networkingInstallSucceeded"
      ]
    },
    "google-native:gkehub/v1beta:ApplianceCluster": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ApplianceClusterResponse": {
      "description": "ApplianceCluster contains information specific to GDC Edge Appliance Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Appliance Cluster. For example: //transferappliance.googleapis.com/projects/my-project/locations/us-west1-a/appliances/my-appliance"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:gkehub/v1beta:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:gkehub/v1beta:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:gkehub/v1beta:Authority": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters, it must use `location` rather than `zone` for GKE clusters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:AuthorityResponse": {
      "description": "Authority encodes how Google will recognize identities from this Membership. See the workload identity documentation for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity",
      "properties": {
        "identityProvider": {
          "type": "string",
          "description": "An identity provider that reflects the `issuer` in the workload identity pool."
        },
        "issuer": {
          "type": "string",
          "description": "Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and be a valid URL with length <2000 characters, it must use `location` rather than `zone` for GKE clusters. If set, then Google will allow valid OIDC tokens from this issuer to authenticate within the workload_identity_pool. OIDC discovery will be performed on this URI to validate tokens from the issuer. Clearing `issuer` disables Workload Identity. `issuer` cannot be directly modified; it must be cleared (and Workload Identity disabled) before using a new issuer (and re-enabling Workload Identity)."
        },
        "oidcJwks": {
          "type": "string",
          "description": "Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517). When this field is set, OIDC discovery will NOT be performed on `issuer`, and instead OIDC tokens will be validated using this field."
        },
        "workloadIdentityPool": {
          "type": "string",
          "description": "The name of the workload identity pool in which `issuer` will be recognized. There is a single Workload Identity Pool per Hub that is shared between all Memberships that belong to that Hub. For a Hub hosted in {PROJECT_ID}, the workload pool format is `{PROJECT_ID}.hub.id.goog`, although this is subject to change in newer versions of this API."
        }
      },
      "type": "object",
      "required": [
        "identityProvider",
        "issuer",
        "oidcJwks",
        "workloadIdentityPool"
      ]
    },
    "google-native:gkehub/v1beta:BinaryAuthorizationConfig": {
      "description": "BinaryAuthorizationConfig defines the fleet level configuration of binary authorization feature.",
      "properties": {
        "evaluationMode": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:BinaryAuthorizationConfigEvaluationMode",
          "description": "Optional. Mode of operation for binauthz policy evaluation."
        },
        "policyBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyBinding"
          },
          "description": "Optional. Binauthz policies that apply to this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:BinaryAuthorizationConfigEvaluationMode": {
      "description": "Optional. Mode of operation for binauthz policy evaluation.",
      "type": "string",
      "enum": [
        {
          "name": "EvaluationModeUnspecified",
          "description": "Default value",
          "value": "EVALUATION_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable BinaryAuthorization",
          "value": "DISABLED"
        },
        {
          "name": "PolicyBindings",
          "description": "Use Binary Authorization with the policies specified in policy_bindings.",
          "value": "POLICY_BINDINGS"
        }
      ]
    },
    "google-native:gkehub/v1beta:BinaryAuthorizationConfigResponse": {
      "description": "BinaryAuthorizationConfig defines the fleet level configuration of binary authorization feature.",
      "properties": {
        "evaluationMode": {
          "type": "string",
          "description": "Optional. Mode of operation for binauthz policy evaluation."
        },
        "policyBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyBindingResponse"
          },
          "description": "Optional. Binauthz policies that apply to this cluster."
        }
      },
      "type": "object",
      "required": [
        "evaluationMode",
        "policyBindings"
      ]
    },
    "google-native:gkehub/v1beta:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeFleetSpec": {
      "description": "**ClusterUpgrade**: The configuration for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "gkeUpgradeOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeGKEUpgradeOverride"
          },
          "description": "Allow users to override some properties of each GKE upgrade."
        },
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradePostConditions",
          "description": "Post conditions to evaluate to mark an upgrade COMPLETE. Required."
        },
        "upstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleet consumes upgrades that have COMPLETE status code in the upstream fleets. See UpgradeStatus.Code for code definitions. The fleet name should be either fleet project number or id. This is defined as repeated for future proof reasons. Initial implementation will enforce at most one upstream fleet."
        }
      },
      "type": "object",
      "required": [
        "postConditions"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeFleetSpecResponse": {
      "description": "**ClusterUpgrade**: The configuration for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "gkeUpgradeOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeGKEUpgradeOverrideResponse"
          },
          "description": "Allow users to override some properties of each GKE upgrade."
        },
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradePostConditionsResponse",
          "description": "Post conditions to evaluate to mark an upgrade COMPLETE. Required."
        },
        "upstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleet consumes upgrades that have COMPLETE status code in the upstream fleets. See UpgradeStatus.Code for code definitions. The fleet name should be either fleet project number or id. This is defined as repeated for future proof reasons. Initial implementation will enforce at most one upstream fleet."
        }
      },
      "type": "object",
      "required": [
        "gkeUpgradeOverrides",
        "postConditions",
        "upstreamFleets"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeFleetStateResponse": {
      "description": "**ClusterUpgrade**: The state for the fleet-level ClusterUpgrade feature.",
      "properties": {
        "downstreamFleets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This fleets whose upstream_fleets contain the current fleet. The fleet name should be either fleet project number or id."
        },
        "gkeState": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeGKEUpgradeFeatureStateResponse",
          "description": "Feature state for GKE clusters."
        },
        "ignored": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of memberships ignored by the feature. For example, manually upgraded clusters can be ignored if they are newer than the default versions of its release channel. The membership resource is in the format: `projects/{p}/locations/{l}/membership/{m}`."
        }
      },
      "type": "object",
      "required": [
        "downstreamFleets",
        "gkeState",
        "ignored"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeGKEUpgrade": {
      "description": "GKEUpgrade represents a GKE provided upgrade, e.g., control plane upgrade.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the upgrade, e.g., \"k8s_control_plane\". It should be a valid upgrade name. It must not exceet 99 characters."
        },
        "version": {
          "type": "string",
          "description": "Version of the upgrade, e.g., \"1.22.1-gke.100\". It should be a valid version. It must not exceet 99 characters."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ClusterUpgradeGKEUpgradeFeatureConditionResponse": {
      "description": "GKEUpgradeFeatureCondition describes the condition of the feature for GKE clusters at a certain point of time.",
      "properties": {
        "reason": {
          "type": "string",
          "description": "Reason why the feature is in this status."
        },
        "status": {
          "type": "string",
          "description": "Status of the condition, one of True, False, Unknown."
        },
        "type": {
          "type": "string",
          "description": "Type of the condition, for example, \"ready\"."
        },
        "updateTime": {
          "type": "string",
          "description": "Last timestamp the condition was updated."
        }
      },
      "type": "object",
      "required": [
        "reason",
        "status",
        "type",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeGKEUpgradeFeatureStateResponse": {
      "description": "GKEUpgradeFeatureState contains feature states for GKE clusters in the scope.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeGKEUpgradeFeatureConditionResponse"
          },
          "description": "Current conditions of the feature."
        },
        "upgradeState": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeGKEUpgradeStateResponse"
          },
          "description": "Upgrade state. It will eventually replace `state`."
        }
      },
      "type": "object",
      "required": [
        "conditions",
        "upgradeState"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeGKEUpgradeOverride": {
      "description": "Properties of a GKE upgrade that can be overridden by the user. For example, a user can skip soaking by overriding the soaking to 0.",
      "properties": {
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradePostConditions",
          "description": "Post conditions to override for the specified upgrade (name + version). Required."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeGKEUpgrade",
          "description": "Which upgrade to override. Required."
        }
      },
      "type": "object",
      "required": [
        "postConditions",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeGKEUpgradeOverrideResponse": {
      "description": "Properties of a GKE upgrade that can be overridden by the user. For example, a user can skip soaking by overriding the soaking to 0.",
      "properties": {
        "postConditions": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradePostConditionsResponse",
          "description": "Post conditions to override for the specified upgrade (name + version). Required."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeGKEUpgradeResponse",
          "description": "Which upgrade to override. Required."
        }
      },
      "type": "object",
      "required": [
        "postConditions",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeGKEUpgradeResponse": {
      "description": "GKEUpgrade represents a GKE provided upgrade, e.g., control plane upgrade.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the upgrade, e.g., \"k8s_control_plane\". It should be a valid upgrade name. It must not exceet 99 characters."
        },
        "version": {
          "type": "string",
          "description": "Version of the upgrade, e.g., \"1.22.1-gke.100\". It should be a valid version. It must not exceet 99 characters."
        }
      },
      "type": "object",
      "required": [
        "name",
        "version"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeGKEUpgradeStateResponse": {
      "description": "GKEUpgradeState is a GKEUpgrade and its state at the scope and fleet level.",
      "properties": {
        "stats": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Number of GKE clusters in each status code."
        },
        "status": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeUpgradeStatusResponse",
          "description": "Status of the upgrade."
        },
        "upgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeGKEUpgradeResponse",
          "description": "Which upgrade to track the state."
        }
      },
      "type": "object",
      "required": [
        "stats",
        "status",
        "upgrade"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradePostConditions": {
      "description": "Post conditional checks after an upgrade has been applied on all eligible clusters.",
      "properties": {
        "soaking": {
          "type": "string",
          "description": "Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. Required."
        }
      },
      "type": "object",
      "required": [
        "soaking"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradePostConditionsResponse": {
      "description": "Post conditional checks after an upgrade has been applied on all eligible clusters.",
      "properties": {
        "soaking": {
          "type": "string",
          "description": "Amount of time to \"soak\" after a rollout has been finished before marking it COMPLETE. Cannot exceed 30 days. Required."
        }
      },
      "type": "object",
      "required": [
        "soaking"
      ]
    },
    "google-native:gkehub/v1beta:ClusterUpgradeUpgradeStatusResponse": {
      "description": "UpgradeStatus provides status information for each upgrade.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Status code of the upgrade."
        },
        "reason": {
          "type": "string",
          "description": "Reason for this status."
        },
        "updateTime": {
          "type": "string",
          "description": "Last timestamp the status was updated."
        }
      },
      "type": "object",
      "required": [
        "code",
        "reason",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1beta:CommonFeatureSpec": {
      "description": "CommonFeatureSpec contains Hub-wide configuration information",
      "properties": {
        "anthosobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AnthosObservabilityFeatureSpec",
          "description": "Anthos Observability spec"
        },
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AppDevExperienceFeatureSpec",
          "description": "Appdevexperience specific spec."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeFleetSpec",
          "description": "ClusterUpgrade (fleet-based) feature spec."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFeatureSpec",
          "description": "FleetObservability feature spec."
        },
        "multiclusteringress": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MultiClusterIngressFeatureSpec",
          "description": "Multicluster Ingress-specific spec."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:CommonFeatureSpecResponse": {
      "description": "CommonFeatureSpec contains Hub-wide configuration information",
      "properties": {
        "anthosobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AnthosObservabilityFeatureSpecResponse",
          "description": "Anthos Observability spec"
        },
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AppDevExperienceFeatureSpecResponse",
          "description": "Appdevexperience specific spec."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeFleetSpecResponse",
          "description": "ClusterUpgrade (fleet-based) feature spec."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFeatureSpecResponse",
          "description": "FleetObservability feature spec."
        },
        "multiclusteringress": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MultiClusterIngressFeatureSpecResponse",
          "description": "Multicluster Ingress-specific spec."
        }
      },
      "type": "object",
      "required": [
        "anthosobservability",
        "appdevexperience",
        "clusterupgrade",
        "fleetobservability",
        "multiclusteringress"
      ]
    },
    "google-native:gkehub/v1beta:CommonFeatureStateResponse": {
      "description": "CommonFeatureState contains Hub-wide Feature status information.",
      "properties": {
        "appdevexperience": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AppDevExperienceFeatureStateResponse",
          "description": "Appdevexperience specific state."
        },
        "clusterupgrade": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ClusterUpgradeFleetStateResponse",
          "description": "ClusterUpgrade fleet-level state."
        },
        "fleetobservability": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFeatureStateResponse",
          "description": "FleetObservability feature state."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FeatureStateResponse",
          "description": "The \"running state\" of the Feature in this Hub."
        }
      },
      "type": "object",
      "required": [
        "appdevexperience",
        "clusterupgrade",
        "fleetobservability",
        "state"
      ]
    },
    "google-native:gkehub/v1beta:CommonFleetDefaultMemberConfigSpec": {
      "description": "CommonFleetDefaultMemberConfigSpec contains default configuration information for memberships of a fleet",
      "properties": {
        "configmanagement": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementMembershipSpec",
          "description": "Config Management-specific spec."
        },
        "identityservice": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceMembershipSpec",
          "description": "Identity Service-specific spec."
        },
        "mesh": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ServiceMeshMembershipSpec",
          "description": "Anthos Service Mesh-specific spec"
        },
        "policycontroller": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerMembershipSpec",
          "description": "Policy Controller spec."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:CommonFleetDefaultMemberConfigSpecResponse": {
      "description": "CommonFleetDefaultMemberConfigSpec contains default configuration information for memberships of a fleet",
      "properties": {
        "configmanagement": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementMembershipSpecResponse",
          "description": "Config Management-specific spec."
        },
        "identityservice": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceMembershipSpecResponse",
          "description": "Identity Service-specific spec."
        },
        "mesh": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ServiceMeshMembershipSpecResponse",
          "description": "Anthos Service Mesh-specific spec"
        },
        "policycontroller": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerMembershipSpecResponse",
          "description": "Policy Controller spec."
        }
      },
      "type": "object",
      "required": [
        "configmanagement",
        "identityservice",
        "mesh",
        "policycontroller"
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementBinauthzConfig": {
      "description": "Configuration for Binauthz",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether binauthz is enabled in this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ConfigManagementBinauthzConfigResponse": {
      "description": "Configuration for Binauthz",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether binauthz is enabled in this cluster."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementConfigSync": {
      "description": "Configuration for Config Sync",
      "properties": {
        "allowVerticalScale": {
          "type": "boolean",
          "description": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated.",
          "deprecationMessage": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field."
        },
        "git": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementGitConfig",
          "description": "Git repo configuration for the cluster."
        },
        "metricsGcpServiceAccountEmail": {
          "type": "string",
          "description": "The Email of the Google Cloud Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be bound to the GSA. This field is required when automatic Feature management is enabled."
        },
        "oci": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementOciConfig",
          "description": "OCI repo configuration for the cluster"
        },
        "preventDrift": {
          "type": "boolean",
          "description": "Set to true to enable the Config Sync admission webhook to prevent drifts. If set to `false`, disables the Config Sync admission webhook and does not prevent drifts."
        },
        "sourceFormat": {
          "type": "string",
          "description": "Specifies whether the Config Sync Repo is in \"hierarchical\" or \"unstructured\" mode."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ConfigManagementConfigSyncResponse": {
      "description": "Configuration for Config Sync",
      "properties": {
        "allowVerticalScale": {
          "type": "boolean",
          "description": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated.",
          "deprecationMessage": "Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field."
        },
        "git": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementGitConfigResponse",
          "description": "Git repo configuration for the cluster."
        },
        "metricsGcpServiceAccountEmail": {
          "type": "string",
          "description": "The Email of the Google Cloud Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be bound to the GSA. This field is required when automatic Feature management is enabled."
        },
        "oci": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementOciConfigResponse",
          "description": "OCI repo configuration for the cluster"
        },
        "preventDrift": {
          "type": "boolean",
          "description": "Set to true to enable the Config Sync admission webhook to prevent drifts. If set to `false`, disables the Config Sync admission webhook and does not prevent drifts."
        },
        "sourceFormat": {
          "type": "string",
          "description": "Specifies whether the Config Sync Repo is in \"hierarchical\" or \"unstructured\" mode."
        }
      },
      "type": "object",
      "required": [
        "allowVerticalScale",
        "enabled",
        "git",
        "metricsGcpServiceAccountEmail",
        "oci",
        "preventDrift",
        "sourceFormat"
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementGitConfig": {
      "description": "Git repo configuration for a single cluster.",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "httpsProxy": {
          "type": "string",
          "description": "URL for the HTTPS proxy to be used when communicating with the Git repo."
        },
        "policyDir": {
          "type": "string",
          "description": "The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, gcpserviceaccount or none. The validation of this is case-sensitive. Required."
        },
        "syncBranch": {
          "type": "string",
          "description": "The branch of the repository to sync from. Default: master."
        },
        "syncRepo": {
          "type": "string",
          "description": "The URL of the Git repository to use as the source of truth."
        },
        "syncRev": {
          "type": "string",
          "description": "Git revision (tag or hash) to check out. Default HEAD."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ConfigManagementGitConfigResponse": {
      "description": "Git repo configuration for a single cluster.",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "httpsProxy": {
          "type": "string",
          "description": "URL for the HTTPS proxy to be used when communicating with the Git repo."
        },
        "policyDir": {
          "type": "string",
          "description": "The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, gcpserviceaccount or none. The validation of this is case-sensitive. Required."
        },
        "syncBranch": {
          "type": "string",
          "description": "The branch of the repository to sync from. Default: master."
        },
        "syncRepo": {
          "type": "string",
          "description": "The URL of the Git repository to use as the source of truth."
        },
        "syncRev": {
          "type": "string",
          "description": "Git revision (tag or hash) to check out. Default HEAD."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object",
      "required": [
        "gcpServiceAccountEmail",
        "httpsProxy",
        "policyDir",
        "secretType",
        "syncBranch",
        "syncRepo",
        "syncRev",
        "syncWaitSecs"
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementHierarchyControllerConfig": {
      "description": "Configuration for Hierarchy Controller",
      "properties": {
        "enableHierarchicalResourceQuota": {
          "type": "boolean",
          "description": "Whether hierarchical resource quota is enabled in this cluster."
        },
        "enablePodTreeLabels": {
          "type": "boolean",
          "description": "Whether pod tree labels are enabled in this cluster."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Hierarchy Controller is enabled in this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ConfigManagementHierarchyControllerConfigResponse": {
      "description": "Configuration for Hierarchy Controller",
      "properties": {
        "enableHierarchicalResourceQuota": {
          "type": "boolean",
          "description": "Whether hierarchical resource quota is enabled in this cluster."
        },
        "enablePodTreeLabels": {
          "type": "boolean",
          "description": "Whether pod tree labels are enabled in this cluster."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether Hierarchy Controller is enabled in this cluster."
        }
      },
      "type": "object",
      "required": [
        "enableHierarchicalResourceQuota",
        "enablePodTreeLabels",
        "enabled"
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementMembershipSpec": {
      "description": "**Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR.",
      "properties": {
        "binauthz": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementBinauthzConfig",
          "description": "Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set.",
          "deprecationMessage": "Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set."
        },
        "cluster": {
          "type": "string",
          "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector."
        },
        "configSync": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementConfigSync",
          "description": "Config Sync configuration for the cluster."
        },
        "hierarchyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementHierarchyControllerConfig",
          "description": "Hierarchy Controller configuration for the cluster."
        },
        "policyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementPolicyController",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of ACM installed."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ConfigManagementMembershipSpecResponse": {
      "description": "**Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR.",
      "properties": {
        "binauthz": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementBinauthzConfigResponse",
          "description": "Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set.",
          "deprecationMessage": "Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set."
        },
        "cluster": {
          "type": "string",
          "description": "The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector."
        },
        "configSync": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementConfigSyncResponse",
          "description": "Config Sync configuration for the cluster."
        },
        "hierarchyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementHierarchyControllerConfigResponse",
          "description": "Hierarchy Controller configuration for the cluster."
        },
        "policyController": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementPolicyControllerResponse",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of ACM installed."
        }
      },
      "type": "object",
      "required": [
        "binauthz",
        "cluster",
        "configSync",
        "hierarchyController",
        "policyController",
        "version"
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementOciConfig": {
      "description": "OCI repo configuration for a single cluster",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "policyDir": {
          "type": "string",
          "description": "The absolute path of the directory that contains the local resources. Default: the root directory of the image."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo."
        },
        "syncRepo": {
          "type": "string",
          "description": "The OCI image repository URL for the package to sync from. e.g. `LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME`."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ConfigManagementOciConfigResponse": {
      "description": "OCI repo configuration for a single cluster",
      "properties": {
        "gcpServiceAccountEmail": {
          "type": "string",
          "description": "The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount."
        },
        "policyDir": {
          "type": "string",
          "description": "The absolute path of the directory that contains the local resources. Default: the root directory of the image."
        },
        "secretType": {
          "type": "string",
          "description": "Type of secret configured for access to the Git repo."
        },
        "syncRepo": {
          "type": "string",
          "description": "The OCI image repository URL for the package to sync from. e.g. `LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME`."
        },
        "syncWaitSecs": {
          "type": "string",
          "description": "Period in seconds between consecutive syncs. Default: 15."
        }
      },
      "type": "object",
      "required": [
        "gcpServiceAccountEmail",
        "policyDir",
        "secretType",
        "syncRepo",
        "syncWaitSecs"
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementPolicyController": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementPolicyControllerMonitoring",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enable or disable mutation in policy controller. If true, mutation CRDs, webhook and controller deployment will be deployed to the cluster."
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        },
        "templateLibraryInstalled": {
          "type": "boolean",
          "description": "Installs the default template library along with Policy Controller."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ConfigManagementPolicyControllerMonitoring": {
      "description": "PolicyControllerMonitoring specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementPolicyControllerMonitoringBackendsItem"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ConfigManagementPolicyControllerMonitoringBackendsItem": {
      "type": "string",
      "enum": [
        {
          "name": "MonitoringBackendUnspecified",
          "description": "Backend cannot be determined",
          "value": "MONITORING_BACKEND_UNSPECIFIED"
        },
        {
          "name": "Prometheus",
          "description": "Prometheus backend for monitoring",
          "value": "PROMETHEUS"
        },
        {
          "name": "CloudMonitoring",
          "description": "Stackdriver/Cloud Monitoring backend for monitoring",
          "value": "CLOUD_MONITORING"
        }
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementPolicyControllerMonitoringResponse": {
      "description": "PolicyControllerMonitoring specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object",
      "required": [
        "backends"
      ]
    },
    "google-native:gkehub/v1beta:ConfigManagementPolicyControllerResponse": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ConfigManagementPolicyControllerMonitoringResponse",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enable or disable mutation in policy controller. If true, mutation CRDs, webhook and controller deployment will be deployed to the cluster."
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        },
        "templateLibraryInstalled": {
          "type": "boolean",
          "description": "Installs the default template library along with Policy Controller."
        },
        "updateTime": {
          "type": "string",
          "description": "Last time this membership spec was updated."
        }
      },
      "type": "object",
      "required": [
        "auditIntervalSeconds",
        "enabled",
        "exemptableNamespaces",
        "logDeniesEnabled",
        "monitoring",
        "mutationEnabled",
        "referentialRulesEnabled",
        "templateLibraryInstalled",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1beta:DefaultClusterConfig": {
      "description": "DefaultClusterConfig describes the default cluster configurations to be applied to all clusters born-in-fleet.",
      "properties": {
        "binaryAuthorizationConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:BinaryAuthorizationConfig",
          "description": "Optional. Enable/Disable binary authorization features for the cluster."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:SecurityPostureConfig",
          "description": "Enable/Disable Security Posture features for the cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:DefaultClusterConfigResponse": {
      "description": "DefaultClusterConfig describes the default cluster configurations to be applied to all clusters born-in-fleet.",
      "properties": {
        "binaryAuthorizationConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:BinaryAuthorizationConfigResponse",
          "description": "Optional. Enable/Disable binary authorization features for the cluster."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:SecurityPostureConfigResponse",
          "description": "Enable/Disable Security Posture features for the cluster."
        }
      },
      "type": "object",
      "required": [
        "binaryAuthorizationConfig",
        "securityPostureConfig"
      ]
    },
    "google-native:gkehub/v1beta:EdgeCluster": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:EdgeClusterResponse": {
      "description": "EdgeCluster contains information specific to Google Edge Clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the Edge Cluster. For example: //edgecontainer.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gkehub/v1beta:FeatureResourceStateResponse": {
      "description": "FeatureResourceState describes the state of a Feature *resource* in the GkeHub API. See `FeatureState` for the \"running state\" of the Feature in the Hub and across Memberships.",
      "properties": {
        "state": {
          "type": "string",
          "description": "The current state of the Feature resource in the Hub API."
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:gkehub/v1beta:FeatureStateResponse": {
      "description": "FeatureState describes the high-level state of a Feature. It may be used to describe a Feature's state at the environ-level, or per-membershop, depending on the context.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The high-level, machine-readable status of this Feature."
        },
        "description": {
          "type": "string",
          "description": "A human-readable description of the current status."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this status and any related Feature-specific details were updated."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description",
        "updateTime"
      ]
    },
    "google-native:gkehub/v1beta:FleetLifecycleStateResponse": {
      "description": "FleetLifecycleState describes the state of a Fleet resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Fleet resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityFeatureErrorResponse": {
      "description": "All error details of the fleet observability feature.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The code of the error."
        },
        "description": {
          "type": "string",
          "description": "A human-readable description of the current status."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description"
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityFeatureSpec": {
      "description": "**Fleet Observability**: The Hub-wide input for the FleetObservability feature.",
      "properties": {
        "loggingConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityLoggingConfig",
          "description": "Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:FleetObservabilityFeatureSpecResponse": {
      "description": "**Fleet Observability**: The Hub-wide input for the FleetObservability feature.",
      "properties": {
        "loggingConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityLoggingConfigResponse",
          "description": "Specified if fleet logging feature is enabled for the entire fleet. If UNSPECIFIED, fleet logging feature is disabled for the entire fleet."
        }
      },
      "type": "object",
      "required": [
        "loggingConfig"
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityFeatureStateResponse": {
      "description": "**FleetObservability**: Hub-wide Feature for FleetObservability feature. state.",
      "properties": {
        "logging": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFleetObservabilityLoggingStateResponse",
          "description": "The feature state of default logging."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFleetObservabilityMonitoringStateResponse",
          "description": "The feature state of fleet monitoring."
        }
      },
      "type": "object",
      "required": [
        "logging",
        "monitoring"
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityFleetObservabilityBaseFeatureStateResponse": {
      "description": "Base state for fleet observability feature.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The high-level, machine-readable status of this Feature."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFeatureErrorResponse"
          },
          "description": "Errors after reconciling the monitoring and logging feature if the code is not OK."
        }
      },
      "type": "object",
      "required": [
        "code",
        "errors"
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityFleetObservabilityLoggingStateResponse": {
      "description": "Feature state for logging feature.",
      "properties": {
        "defaultLog": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet default log."
        },
        "scopeLog": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet scope log."
        }
      },
      "type": "object",
      "required": [
        "defaultLog",
        "scopeLog"
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityFleetObservabilityMonitoringStateResponse": {
      "description": "Feature state for monitoring feature.",
      "properties": {
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityFleetObservabilityBaseFeatureStateResponse",
          "description": "The base feature state of fleet monitoring feature."
        }
      },
      "type": "object",
      "required": [
        "state"
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityLoggingConfig": {
      "description": "LoggingConfig defines the configuration for different types of logs.",
      "properties": {
        "defaultConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityRoutingConfig",
          "description": "Specified if applying the default routing config to logs not specified in other configs."
        },
        "fleetScopeLogsConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityRoutingConfig",
          "description": "Specified if applying the routing config to all logs for all fleet scopes."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:FleetObservabilityLoggingConfigResponse": {
      "description": "LoggingConfig defines the configuration for different types of logs.",
      "properties": {
        "defaultConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityRoutingConfigResponse",
          "description": "Specified if applying the default routing config to logs not specified in other configs."
        },
        "fleetScopeLogsConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityRoutingConfigResponse",
          "description": "Specified if applying the routing config to all logs for all fleet scopes."
        }
      },
      "type": "object",
      "required": [
        "defaultConfig",
        "fleetScopeLogsConfig"
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityRoutingConfig": {
      "description": "RoutingConfig configures the behaviour of fleet logging feature.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetObservabilityRoutingConfigMode",
          "description": "mode configures the logs routing mode."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:FleetObservabilityRoutingConfigMode": {
      "description": "mode configures the logs routing mode.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "If UNSPECIFIED, fleet logging feature is disabled.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Copy",
          "description": "logs will be copied to the destination project.",
          "value": "COPY"
        },
        {
          "name": "Move",
          "description": "logs will be moved to the destination project.",
          "value": "MOVE"
        }
      ]
    },
    "google-native:gkehub/v1beta:FleetObservabilityRoutingConfigResponse": {
      "description": "RoutingConfig configures the behaviour of fleet logging feature.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "mode configures the logs routing mode."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:gkehub/v1beta:GkeCluster": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:GkeClusterResponse": {
      "description": "GkeCluster contains information specific to GKE clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that the GKE cluster no longer exists in the GKE Control Plane."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE cluster. For example: //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster Zonal clusters are also supported."
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta:IdentityServiceAuthMethod": {
      "description": "Configuration of an auth method for a member/cluster. Only one authentication method (e.g., OIDC and LDAP) can be set per AuthMethod.",
      "properties": {
        "azureadConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceAzureADConfig",
          "description": "AzureAD specific Configuration."
        },
        "googleConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceGoogleConfig",
          "description": "GoogleConfig specific configuration."
        },
        "name": {
          "type": "string",
          "description": "Identifier for auth config."
        },
        "oidcConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceOidcConfig",
          "description": "OIDC specific configuration."
        },
        "proxy": {
          "type": "string",
          "description": "Proxy server address to use for auth method."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:IdentityServiceAuthMethodResponse": {
      "description": "Configuration of an auth method for a member/cluster. Only one authentication method (e.g., OIDC and LDAP) can be set per AuthMethod.",
      "properties": {
        "azureadConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceAzureADConfigResponse",
          "description": "AzureAD specific Configuration."
        },
        "googleConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceGoogleConfigResponse",
          "description": "GoogleConfig specific configuration."
        },
        "name": {
          "type": "string",
          "description": "Identifier for auth config."
        },
        "oidcConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceOidcConfigResponse",
          "description": "OIDC specific configuration."
        },
        "proxy": {
          "type": "string",
          "description": "Proxy server address to use for auth method."
        }
      },
      "type": "object",
      "required": [
        "azureadConfig",
        "googleConfig",
        "name",
        "oidcConfig",
        "proxy"
      ]
    },
    "google-native:gkehub/v1beta:IdentityServiceAzureADConfig": {
      "description": "Configuration for the AzureAD Auth flow.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "ID for the registered client application that makes authentication requests to the Azure AD identity provider."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted AzureAD client secret will be passed to the GKE Hub CLH."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "The redirect URL that kubectl uses for authorization."
        },
        "tenant": {
          "type": "string",
          "description": "Kind of Azure AD account to be authenticated. Supported values are or for accounts belonging to a specific tenant."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:IdentityServiceAzureADConfigResponse": {
      "description": "Configuration for the AzureAD Auth flow.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "ID for the registered client application that makes authentication requests to the Azure AD identity provider."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted AzureAD client secret will be passed to the GKE Hub CLH."
        },
        "encryptedClientSecret": {
          "type": "string",
          "description": "Encrypted AzureAD client secret."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "The redirect URL that kubectl uses for authorization."
        },
        "tenant": {
          "type": "string",
          "description": "Kind of Azure AD account to be authenticated. Supported values are or for accounts belonging to a specific tenant."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "encryptedClientSecret",
        "kubectlRedirectUri",
        "tenant"
      ]
    },
    "google-native:gkehub/v1beta:IdentityServiceGoogleConfig": {
      "description": "Configuration for the Google Plugin Auth flow.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Disable automatic configuration of Google Plugin on supported platforms."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:IdentityServiceGoogleConfigResponse": {
      "description": "Configuration for the Google Plugin Auth flow.",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Disable automatic configuration of Google Plugin on supported platforms."
        }
      },
      "type": "object",
      "required": [
        "disable"
      ]
    },
    "google-native:gkehub/v1beta:IdentityServiceMembershipSpec": {
      "description": "**Anthos Identity Service**: Configuration for a single Membership.",
      "properties": {
        "authMethods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceAuthMethod"
          },
          "description": "A member may support multiple auth methods."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:IdentityServiceMembershipSpecResponse": {
      "description": "**Anthos Identity Service**: Configuration for a single Membership.",
      "properties": {
        "authMethods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:IdentityServiceAuthMethodResponse"
          },
          "description": "A member may support multiple auth methods."
        }
      },
      "type": "object",
      "required": [
        "authMethods"
      ]
    },
    "google-native:gkehub/v1beta:IdentityServiceOidcConfig": {
      "description": "Configuration for OIDC Auth flow.",
      "properties": {
        "certificateAuthorityData": {
          "type": "string",
          "description": "PEM-encoded CA for OIDC provider."
        },
        "clientId": {
          "type": "string",
          "description": "ID for OIDC client application."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted OIDC client secret will be passed to the GKE Hub CLH."
        },
        "deployCloudConsoleProxy": {
          "type": "boolean",
          "description": "Flag to denote if reverse proxy is used to connect to auth provider. This flag should be set to true when provider is not reachable by Google Cloud Console."
        },
        "enableAccessToken": {
          "type": "boolean",
          "description": "Enable access token."
        },
        "extraParams": {
          "type": "string",
          "description": "Comma-separated list of key-value pairs."
        },
        "groupPrefix": {
          "type": "string",
          "description": "Prefix to prepend to group name."
        },
        "groupsClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds group information."
        },
        "issuerUri": {
          "type": "string",
          "description": "URI for the OIDC provider. This should point to the level below .well-known/openid-configuration."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "Registered redirect uri to redirect users going through OAuth flow using kubectl plugin."
        },
        "scopes": {
          "type": "string",
          "description": "Comma-separated list of identifiers."
        },
        "userClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds username."
        },
        "userPrefix": {
          "type": "string",
          "description": "Prefix to prepend to user name."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:IdentityServiceOidcConfigResponse": {
      "description": "Configuration for OIDC Auth flow.",
      "properties": {
        "certificateAuthorityData": {
          "type": "string",
          "description": "PEM-encoded CA for OIDC provider."
        },
        "clientId": {
          "type": "string",
          "description": "ID for OIDC client application."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Unencrypted OIDC client secret will be passed to the GKE Hub CLH."
        },
        "deployCloudConsoleProxy": {
          "type": "boolean",
          "description": "Flag to denote if reverse proxy is used to connect to auth provider. This flag should be set to true when provider is not reachable by Google Cloud Console."
        },
        "enableAccessToken": {
          "type": "boolean",
          "description": "Enable access token."
        },
        "encryptedClientSecret": {
          "type": "string",
          "description": "Encrypted OIDC Client secret"
        },
        "extraParams": {
          "type": "string",
          "description": "Comma-separated list of key-value pairs."
        },
        "groupPrefix": {
          "type": "string",
          "description": "Prefix to prepend to group name."
        },
        "groupsClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds group information."
        },
        "issuerUri": {
          "type": "string",
          "description": "URI for the OIDC provider. This should point to the level below .well-known/openid-configuration."
        },
        "kubectlRedirectUri": {
          "type": "string",
          "description": "Registered redirect uri to redirect users going through OAuth flow using kubectl plugin."
        },
        "scopes": {
          "type": "string",
          "description": "Comma-separated list of identifiers."
        },
        "userClaim": {
          "type": "string",
          "description": "Claim in OIDC ID token that holds username."
        },
        "userPrefix": {
          "type": "string",
          "description": "Prefix to prepend to user name."
        }
      },
      "type": "object",
      "required": [
        "certificateAuthorityData",
        "clientId",
        "clientSecret",
        "deployCloudConsoleProxy",
        "enableAccessToken",
        "encryptedClientSecret",
        "extraParams",
        "groupPrefix",
        "groupsClaim",
        "issuerUri",
        "kubectlRedirectUri",
        "scopes",
        "userClaim",
        "userPrefix"
      ]
    },
    "google-native:gkehub/v1beta:KubernetesMetadataResponse": {
      "description": "KubernetesMetadata provides informational metadata for Memberships representing Kubernetes clusters.",
      "properties": {
        "kubernetesApiServerVersion": {
          "type": "string",
          "description": "Kubernetes API server version string as reported by `/version`."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The total memory capacity as reported by the sum of all Kubernetes nodes resources, defined in MB."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Node count as reported by Kubernetes nodes resources."
        },
        "nodeProviderId": {
          "type": "string",
          "description": "Node providerID as reported by the first node in the list of nodes on the Kubernetes endpoint. On Kubernetes platforms that support zero-node clusters (like GKE-on-GCP), the node_count will be zero and the node_provider_id will be empty."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which these details were last updated. This update_time is different from the Membership-level update_time since EndpointDetails are updated internally for API consumers."
        },
        "vcpuCount": {
          "type": "integer",
          "description": "vCPU count as reported by Kubernetes nodes resources."
        }
      },
      "type": "object",
      "required": [
        "kubernetesApiServerVersion",
        "memoryMb",
        "nodeCount",
        "nodeProviderId",
        "updateTime",
        "vcpuCount"
      ]
    },
    "google-native:gkehub/v1beta:KubernetesResource": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during CreateMembership or UpdateMembership, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ResourceOptions",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:KubernetesResourceResponse": {
      "description": "KubernetesResource contains the YAML manifests and configuration for Membership Kubernetes resources in the cluster. After CreateMembership or UpdateMembership, these resources should be re-applied in the cluster.",
      "properties": {
        "connectResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:ResourceManifestResponse"
          },
          "description": "The Kubernetes resources for installing the GKE Connect agent This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "membershipCrManifest": {
          "type": "string",
          "description": "Input only. The YAML representation of the Membership CR. This field is ignored for GKE clusters where Hub can read the CR directly. Callers should provide the CR that is currently present in the cluster during CreateMembership or UpdateMembership, or leave this field empty if none exists. The CR manifest is used to validate the cluster has not been registered with another Membership."
        },
        "membershipResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:ResourceManifestResponse"
          },
          "description": "Additional Kubernetes resources that need to be applied to the cluster after Membership creation, and after every update. This field is only populated in the Membership returned from a successful long-running operation from CreateMembership or UpdateMembership. It is not populated during normal GetMembership or ListMemberships requests. To get the resource manifest after the initial registration, the caller should make a UpdateMembership call with an empty field mask."
        },
        "resourceOptions": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ResourceOptionsResponse",
          "description": "Optional. Options for Kubernetes resource generation."
        }
      },
      "type": "object",
      "required": [
        "connectResources",
        "membershipCrManifest",
        "membershipResources",
        "resourceOptions"
      ]
    },
    "google-native:gkehub/v1beta:MembershipBindingLifecycleStateResponse": {
      "description": "MembershipBindingLifecycleState describes the state of a Binding resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the MembershipBinding resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1beta:MembershipEndpoint": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ApplianceCluster",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:EdgeCluster",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:GkeCluster",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:KubernetesResource",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MultiCloudCluster",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:OnPremCluster",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:MembershipEndpointResponse": {
      "description": "MembershipEndpoint contains information needed to contact a Kubernetes API, endpoint and any additional Kubernetes metadata.",
      "properties": {
        "applianceCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ApplianceClusterResponse",
          "description": "Optional. Specific information for a GDC Edge Appliance cluster."
        },
        "edgeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:EdgeClusterResponse",
          "description": "Optional. Specific information for a Google Edge cluster."
        },
        "gkeCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:GkeClusterResponse",
          "description": "Optional. Specific information for a GKE-on-GCP cluster."
        },
        "googleManaged": {
          "type": "boolean",
          "description": "Whether the lifecycle of this membership is managed by a google cluster platform service."
        },
        "kubernetesMetadata": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:KubernetesMetadataResponse",
          "description": "Useful Kubernetes-specific metadata."
        },
        "kubernetesResource": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:KubernetesResourceResponse",
          "description": "Optional. The in-cluster Kubernetes Resources that should be applied for a correctly registered cluster, in the steady state. These resources: * Ensure that the cluster is exclusively registered to one and only one Hub Membership. * Propagate Workload Pool Information available in the Membership Authority field. * Ensure proper initial configuration of default Hub Features."
        },
        "multiCloudCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MultiCloudClusterResponse",
          "description": "Optional. Specific information for a GKE Multi-Cloud cluster."
        },
        "onPremCluster": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:OnPremClusterResponse",
          "description": "Optional. Specific information for a GKE On-Prem cluster. An onprem user-cluster who has no resourceLink is not allowed to use this field, it should have a nil \"type\" instead."
        }
      },
      "type": "object",
      "required": [
        "applianceCluster",
        "edgeCluster",
        "gkeCluster",
        "googleManaged",
        "kubernetesMetadata",
        "kubernetesResource",
        "multiCloudCluster",
        "onPremCluster"
      ]
    },
    "google-native:gkehub/v1beta:MembershipStateResponse": {
      "description": "MembershipState describes the state of a Membership resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Membership resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1beta:MonitoringConfig": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:MonitoringConfigResponse": {
      "description": "MonitoringConfig informs Fleet-based applications/services/UIs how the metrics for the underlying cluster is reported to cloud monitoring services. It can be set from empty to non-empty, but can't be mutated directly to prevent accidentally breaking the constinousty of metrics.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Optional. Cluster name used to report metrics. For Anthos on VMWare/Baremetal/MultiCloud clusters, it would be in format {cluster_type}/{cluster_name}, e.g., \"awsClusters/cluster_1\"."
        },
        "clusterHash": {
          "type": "string",
          "description": "Optional. For GKE and Multicloud clusters, this is the UUID of the cluster resource. For VMWare and Baremetal clusters, this is the kube-system UID."
        },
        "kubernetesMetricsPrefix": {
          "type": "string",
          "description": "Optional. Kubernetes system metrics, if available, are written to this prefix. This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today but will migration to be under kubernetes.io/anthos."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location used to report Metrics"
        },
        "project": {
          "type": "string",
          "description": "Optional. Project used to report Metrics"
        }
      },
      "type": "object",
      "required": [
        "cluster",
        "clusterHash",
        "kubernetesMetricsPrefix",
        "location",
        "project"
      ]
    },
    "google-native:gkehub/v1beta:MultiCloudCluster": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:MultiCloudClusterResponse": {
      "description": "MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.",
      "properties": {
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkemulticloud.googleapis.com) resource for this GKE Multi-Cloud cluster no longer exists."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE Multi-Cloud cluster. For example: //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/attachedClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "clusterMissing",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta:MultiClusterIngressFeatureSpec": {
      "description": "**Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature.",
      "properties": {
        "billing": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MultiClusterIngressFeatureSpecBilling",
          "description": "Deprecated: This field will be ignored and should not be set. Customer's billing structure.",
          "deprecationMessage": "Deprecated: This field will be ignored and should not be set. Customer's billing structure."
        },
        "configMembership": {
          "type": "string",
          "description": "Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:MultiClusterIngressFeatureSpecBilling": {
      "description": "Deprecated: This field will be ignored and should not be set. Customer's billing structure.",
      "type": "string",
      "enum": [
        {
          "name": "BillingUnspecified",
          "description": "Unknown",
          "value": "BILLING_UNSPECIFIED"
        },
        {
          "name": "PayAsYouGo",
          "description": "User pays a fee per-endpoint.",
          "value": "PAY_AS_YOU_GO"
        },
        {
          "name": "AnthosLicense",
          "description": "User is paying for Anthos as a whole.",
          "value": "ANTHOS_LICENSE"
        }
      ]
    },
    "google-native:gkehub/v1beta:MultiClusterIngressFeatureSpecResponse": {
      "description": "**Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature.",
      "properties": {
        "billing": {
          "type": "string",
          "description": "Deprecated: This field will be ignored and should not be set. Customer's billing structure.",
          "deprecationMessage": "Deprecated: This field will be ignored and should not be set. Customer's billing structure."
        },
        "configMembership": {
          "type": "string",
          "description": "Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`"
        }
      },
      "type": "object",
      "required": [
        "billing",
        "configMembership"
      ]
    },
    "google-native:gkehub/v1beta:NamespaceLifecycleStateResponse": {
      "description": "NamespaceLifecycleState describes the state of a Namespace resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the Namespace resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1beta:OnPremCluster": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterType": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:OnPremClusterClusterType",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:OnPremClusterClusterType": {
      "description": "Immutable. The on prem cluster's type.",
      "type": "string",
      "enum": [
        {
          "name": "ClustertypeUnspecified",
          "description": "The ClusterType is not set.",
          "value": "CLUSTERTYPE_UNSPECIFIED"
        },
        {
          "name": "Bootstrap",
          "description": "The ClusterType is bootstrap cluster.",
          "value": "BOOTSTRAP"
        },
        {
          "name": "Hybrid",
          "description": "The ClusterType is baremetal hybrid cluster.",
          "value": "HYBRID"
        },
        {
          "name": "Standalone",
          "description": "The ClusterType is baremetal standalone cluster.",
          "value": "STANDALONE"
        },
        {
          "name": "User",
          "description": "The ClusterType is user cluster.",
          "value": "USER"
        }
      ]
    },
    "google-native:gkehub/v1beta:OnPremClusterResponse": {
      "description": "OnPremCluster contains information specific to GKE On-Prem clusters.",
      "properties": {
        "adminCluster": {
          "type": "boolean",
          "description": "Immutable. Whether the cluster is an admin cluster."
        },
        "clusterMissing": {
          "type": "boolean",
          "description": "If cluster_missing is set then it denotes that API(gkeonprem.googleapis.com) resource for this GKE On-Prem cluster no longer exists."
        },
        "clusterType": {
          "type": "string",
          "description": "Immutable. The on prem cluster's type."
        },
        "resourceLink": {
          "type": "string",
          "description": "Immutable. Self-link of the Google Cloud resource for the GKE On-Prem cluster. For example: //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster"
        }
      },
      "type": "object",
      "required": [
        "adminCluster",
        "clusterMissing",
        "clusterType",
        "resourceLink"
      ]
    },
    "google-native:gkehub/v1beta:PolicyBinding": {
      "description": "Binauthz policy that applies to this cluster.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The relative resource name of the binauthz platform policy to audit. GKE platform policies have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:PolicyBindingResponse": {
      "description": "Binauthz policy that applies to this cluster.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The relative resource name of the binauthz platform policy to audit. GKE platform policies have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:gkehub/v1beta:PolicyControllerHubConfig": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "constraintViolationLimit": {
          "type": "string",
          "description": "The maximum number of audit violations to be stored in a constraint. If not set, the internal default (currently 20) will be used."
        },
        "deploymentConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of deployment configs to deployments (\"admission\", \"audit\", \"mutation')."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "installSpec": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerHubConfigInstallSpec",
          "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerMonitoringConfig",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enables the ability to mutate resources using Policy Controller."
        },
        "policyContent": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerPolicyContentSpec",
          "description": "Specifies the desired policy content on the cluster"
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:PolicyControllerHubConfigInstallSpec": {
      "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state.",
      "type": "string",
      "enum": [
        {
          "name": "InstallSpecUnspecified",
          "description": "Spec is unknown.",
          "value": "INSTALL_SPEC_UNSPECIFIED"
        },
        {
          "name": "InstallSpecNotInstalled",
          "description": "Request to uninstall Policy Controller.",
          "value": "INSTALL_SPEC_NOT_INSTALLED"
        },
        {
          "name": "InstallSpecEnabled",
          "description": "Request to install and enable Policy Controller.",
          "value": "INSTALL_SPEC_ENABLED"
        },
        {
          "name": "InstallSpecSuspended",
          "description": "Request to suspend Policy Controller i.e. its webhooks. If Policy Controller is not installed, it will be installed but suspended.",
          "value": "INSTALL_SPEC_SUSPENDED"
        },
        {
          "name": "InstallSpecDetached",
          "description": "Request to stop all reconciliation actions by PoCo Hub controller. This is a breakglass mechanism to stop PoCo Hub from affecting cluster resources.",
          "value": "INSTALL_SPEC_DETACHED"
        }
      ]
    },
    "google-native:gkehub/v1beta:PolicyControllerHubConfigResponse": {
      "description": "Configuration for Policy Controller",
      "properties": {
        "auditIntervalSeconds": {
          "type": "string",
          "description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether."
        },
        "constraintViolationLimit": {
          "type": "string",
          "description": "The maximum number of audit violations to be stored in a constraint. If not set, the internal default (currently 20) will be used."
        },
        "deploymentConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of deployment configs to deployments (\"admission\", \"audit\", \"mutation')."
        },
        "exemptableNamespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster."
        },
        "installSpec": {
          "type": "string",
          "description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state."
        },
        "logDeniesEnabled": {
          "type": "boolean",
          "description": "Logs all denies and dry run failures."
        },
        "monitoring": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerMonitoringConfigResponse",
          "description": "Monitoring specifies the configuration of monitoring."
        },
        "mutationEnabled": {
          "type": "boolean",
          "description": "Enables the ability to mutate resources using Policy Controller."
        },
        "policyContent": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerPolicyContentSpecResponse",
          "description": "Specifies the desired policy content on the cluster"
        },
        "referentialRulesEnabled": {
          "type": "boolean",
          "description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated."
        }
      },
      "type": "object",
      "required": [
        "auditIntervalSeconds",
        "constraintViolationLimit",
        "deploymentConfigs",
        "exemptableNamespaces",
        "installSpec",
        "logDeniesEnabled",
        "monitoring",
        "mutationEnabled",
        "policyContent",
        "referentialRulesEnabled"
      ]
    },
    "google-native:gkehub/v1beta:PolicyControllerMembershipSpec": {
      "description": "**Policy Controller**: Configuration for a single cluster. Intended to parallel the PolicyController CR.",
      "properties": {
        "policyControllerHubConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerHubConfig",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of Policy Controller installed."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:PolicyControllerMembershipSpecResponse": {
      "description": "**Policy Controller**: Configuration for a single cluster. Intended to parallel the PolicyController CR.",
      "properties": {
        "policyControllerHubConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerHubConfigResponse",
          "description": "Policy Controller configuration for the cluster."
        },
        "version": {
          "type": "string",
          "description": "Version of Policy Controller installed."
        }
      },
      "type": "object",
      "required": [
        "policyControllerHubConfig",
        "version"
      ]
    },
    "google-native:gkehub/v1beta:PolicyControllerMonitoringConfig": {
      "description": "MonitoringConfig specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerMonitoringConfigBackendsItem"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:PolicyControllerMonitoringConfigBackendsItem": {
      "type": "string",
      "enum": [
        {
          "name": "MonitoringBackendUnspecified",
          "description": "Backend cannot be determined",
          "value": "MONITORING_BACKEND_UNSPECIFIED"
        },
        {
          "name": "Prometheus",
          "description": "Prometheus backend for monitoring",
          "value": "PROMETHEUS"
        },
        {
          "name": "CloudMonitoring",
          "description": "Stackdriver/Cloud Monitoring backend for monitoring",
          "value": "CLOUD_MONITORING"
        }
      ]
    },
    "google-native:gkehub/v1beta:PolicyControllerMonitoringConfigResponse": {
      "description": "MonitoringConfig specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
      "properties": {
        "backends": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export."
        }
      },
      "type": "object",
      "required": [
        "backends"
      ]
    },
    "google-native:gkehub/v1beta:PolicyControllerPolicyContentSpec": {
      "description": "PolicyContentSpec defines the user's desired content configuration on the cluster.",
      "properties": {
        "bundles": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "map of bundle name to BundleInstallSpec. The bundle name maps to the `bundleName` key in the `policycontroller.gke.io/constraintData` annotation on a constraint."
        },
        "templateLibrary": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerTemplateLibraryConfig",
          "description": "Configures the installation of the Template Library."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:PolicyControllerPolicyContentSpecResponse": {
      "description": "PolicyContentSpec defines the user's desired content configuration on the cluster.",
      "properties": {
        "bundles": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "map of bundle name to BundleInstallSpec. The bundle name maps to the `bundleName` key in the `policycontroller.gke.io/constraintData` annotation on a constraint."
        },
        "templateLibrary": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerTemplateLibraryConfigResponse",
          "description": "Configures the installation of the Template Library."
        }
      },
      "type": "object",
      "required": [
        "bundles",
        "templateLibrary"
      ]
    },
    "google-native:gkehub/v1beta:PolicyControllerTemplateLibraryConfig": {
      "description": "The config specifying which default library templates to install.",
      "properties": {
        "installation": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:PolicyControllerTemplateLibraryConfigInstallation",
          "description": "Configures the manner in which the template library is installed on the cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:PolicyControllerTemplateLibraryConfigInstallation": {
      "description": "Configures the manner in which the template library is installed on the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "InstallationUnspecified",
          "description": "No installation strategy has been specified.",
          "value": "INSTALLATION_UNSPECIFIED"
        },
        {
          "name": "NotInstalled",
          "description": "Do not install the template library.",
          "value": "NOT_INSTALLED"
        },
        {
          "name": "All",
          "description": "Install the entire template library.",
          "value": "ALL"
        }
      ]
    },
    "google-native:gkehub/v1beta:PolicyControllerTemplateLibraryConfigResponse": {
      "description": "The config specifying which default library templates to install.",
      "properties": {
        "installation": {
          "type": "string",
          "description": "Configures the manner in which the template library is installed on the cluster."
        }
      },
      "type": "object",
      "required": [
        "installation"
      ]
    },
    "google-native:gkehub/v1beta:RBACRoleBindingLifecycleStateResponse": {
      "description": "RBACRoleBindingLifecycleState describes the state of a RbacRoleBinding resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the rbacrolebinding resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1beta:ResourceManifestResponse": {
      "description": "ResourceManifest represents a single Kubernetes resource to be applied to the cluster.",
      "properties": {
        "clusterScoped": {
          "type": "boolean",
          "description": "Whether the resource provided in the manifest is `cluster_scoped`. If unset, the manifest is assumed to be namespace scoped. This field is used for REST mapping when applying the resource in a cluster."
        },
        "manifest": {
          "type": "string",
          "description": "YAML manifest of the resource."
        }
      },
      "type": "object",
      "required": [
        "clusterScoped",
        "manifest"
      ]
    },
    "google-native:gkehub/v1beta:ResourceOptions": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ResourceOptionsResponse": {
      "description": "ResourceOptions represent options for Kubernetes resource generation.",
      "properties": {
        "connectVersion": {
          "type": "string",
          "description": "Optional. The Connect agent version to use for connect_resources. Defaults to the latest GKE Connect version. The version must be a currently supported version, obsolete versions will be rejected."
        },
        "k8sVersion": {
          "type": "string",
          "description": "Optional. Major version of the Kubernetes cluster. This is only used to determine which version to use for the CustomResourceDefinition resources, `apiextensions/v1beta1` or`apiextensions/v1`."
        },
        "v1beta1Crd": {
          "type": "boolean",
          "description": "Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for CustomResourceDefinition resources. This option should be set for clusters with Kubernetes apiserver versions <1.16."
        }
      },
      "type": "object",
      "required": [
        "connectVersion",
        "k8sVersion",
        "v1beta1Crd"
      ]
    },
    "google-native:gkehub/v1beta:Role": {
      "description": "Role is the type for Kubernetes roles",
      "properties": {
        "predefinedRole": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:RolePredefinedRole",
          "description": "predefined_role is the Kubernetes default role to use"
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:RolePredefinedRole": {
      "description": "predefined_role is the Kubernetes default role to use",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "description": "UNKNOWN",
          "value": "UNKNOWN"
        },
        {
          "name": "Admin",
          "description": "ADMIN has EDIT and RBAC permissions",
          "value": "ADMIN"
        },
        {
          "name": "Edit",
          "description": "EDIT can edit all resources except RBAC",
          "value": "EDIT"
        },
        {
          "name": "View",
          "description": "VIEW can only read resources",
          "value": "VIEW"
        },
        {
          "name": "AnthosSupport",
          "description": "ANTHOS_SUPPORT gives Google Support read-only access to a number of cluster resources.",
          "value": "ANTHOS_SUPPORT"
        }
      ]
    },
    "google-native:gkehub/v1beta:RoleResponse": {
      "description": "Role is the type for Kubernetes roles",
      "properties": {
        "predefinedRole": {
          "type": "string",
          "description": "predefined_role is the Kubernetes default role to use"
        }
      },
      "type": "object",
      "required": [
        "predefinedRole"
      ]
    },
    "google-native:gkehub/v1beta:ScopeLifecycleStateResponse": {
      "description": "ScopeLifecycleState describes the state of a Scope resource.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The current state of the scope resource."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:gkehub/v1beta:SecurityPostureConfig": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:SecurityPostureConfigMode",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:SecurityPostureConfigVulnerabilityMode",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:SecurityPostureConfigMode": {
      "description": "Sets which mode to use for Security Posture features.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value not specified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disables Security Posture features on the cluster.",
          "value": "DISABLED"
        },
        {
          "name": "Basic",
          "description": "Applies Security Posture features on the cluster.",
          "value": "BASIC"
        }
      ]
    },
    "google-native:gkehub/v1beta:SecurityPostureConfigResponse": {
      "description": "SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Sets which mode to use for Security Posture features."
        },
        "vulnerabilityMode": {
          "type": "string",
          "description": "Sets which mode to use for vulnerability scanning."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "vulnerabilityMode"
      ]
    },
    "google-native:gkehub/v1beta:SecurityPostureConfigVulnerabilityMode": {
      "description": "Sets which mode to use for vulnerability scanning.",
      "type": "string",
      "enum": [
        {
          "name": "VulnerabilityModeUnspecified",
          "description": "Default value not specified.",
          "value": "VULNERABILITY_MODE_UNSPECIFIED"
        },
        {
          "name": "VulnerabilityDisabled",
          "description": "Disables vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_DISABLED"
        },
        {
          "name": "VulnerabilityBasic",
          "description": "Applies basic vulnerability scanning on the cluster.",
          "value": "VULNERABILITY_BASIC"
        },
        {
          "name": "VulnerabilityEnterprise",
          "description": "Applies the Security Posture's vulnerability on cluster Enterprise level features.",
          "value": "VULNERABILITY_ENTERPRISE"
        }
      ]
    },
    "google-native:gkehub/v1beta:ServiceMeshMembershipSpec": {
      "description": "**Service Mesh**: Spec for a single Membership for the servicemesh feature",
      "properties": {
        "controlPlane": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ServiceMeshMembershipSpecControlPlane",
          "description": "Deprecated: use `management` instead Enables automatic control plane management.",
          "deprecationMessage": "Deprecated: use `management` instead Enables automatic control plane management."
        },
        "management": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ServiceMeshMembershipSpecManagement",
          "description": "Enables automatic Service Mesh management."
        }
      },
      "type": "object"
    },
    "google-native:gkehub/v1beta:ServiceMeshMembershipSpecControlPlane": {
      "description": "Deprecated: use `management` instead Enables automatic control plane management.",
      "type": "string",
      "enum": [
        {
          "name": "ControlPlaneManagementUnspecified",
          "description": "Unspecified",
          "value": "CONTROL_PLANE_MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "Automatic",
          "description": "Google should provision a control plane revision and make it available in the cluster. Google will enroll this revision in a release channel and keep it up to date. The control plane revision may be a managed service, or a managed install.",
          "value": "AUTOMATIC"
        },
        {
          "name": "Manual",
          "description": "User will manually configure the control plane (e.g. via CLI, or via the ControlPlaneRevision KRM API)",
          "value": "MANUAL"
        }
      ]
    },
    "google-native:gkehub/v1beta:ServiceMeshMembershipSpecManagement": {
      "description": "Enables automatic Service Mesh management.",
      "type": "string",
      "enum": [
        {
          "name": "ManagementUnspecified",
          "description": "Unspecified",
          "value": "MANAGEMENT_UNSPECIFIED"
        },
        {
          "name": "ManagementAutomatic",
          "description": "Google should manage my Service Mesh for the cluster.",
          "value": "MANAGEMENT_AUTOMATIC"
        },
        {
          "name": "ManagementManual",
          "description": "User will manually configure their service mesh components.",
          "value": "MANAGEMENT_MANUAL"
        }
      ]
    },
    "google-native:gkehub/v1beta:ServiceMeshMembershipSpecResponse": {
      "description": "**Service Mesh**: Spec for a single Membership for the servicemesh feature",
      "properties": {
        "controlPlane": {
          "type": "string",
          "description": "Deprecated: use `management` instead Enables automatic control plane management.",
          "deprecationMessage": "Deprecated: use `management` instead Enables automatic control plane management."
        },
        "management": {
          "type": "string",
          "description": "Enables automatic Service Mesh management."
        }
      },
      "type": "object",
      "required": [
        "controlPlane",
        "management"
      ]
    },
    "google-native:gkehub/v1beta:StatusResponse": {
      "description": "Status specifies state for the subcomponent.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code specifies AppDevExperienceFeature's subcomponent ready state."
        },
        "description": {
          "type": "string",
          "description": "Description is populated if Code is Failed, explaining why it has failed."
        }
      },
      "type": "object",
      "required": [
        "code",
        "description"
      ]
    },
    "google-native:gkeonprem/v1:Authorization": {
      "description": "Authorization defines the On-Prem cluster authorization configuration to bootstrap onto the admin cluster.",
      "properties": {
        "adminUsers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ClusterUser"
          },
          "description": "For VMware and bare metal user clusters, users will be granted the cluster-admin role on the cluster, which provides full administrative access to the cluster. For bare metal admin clusters, users will be granted the cluster-view role, which limits users to read-only access."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:AuthorizationResponse": {
      "description": "Authorization defines the On-Prem cluster authorization configuration to bootstrap onto the admin cluster.",
      "properties": {
        "adminUsers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ClusterUserResponse"
          },
          "description": "For VMware and bare metal user clusters, users will be granted the cluster-admin role on the cluster, which provides full administrative access to the cluster. For bare metal admin clusters, users will be granted the cluster-view role, which limits users to read-only access."
        }
      },
      "type": "object",
      "required": [
        "adminUsers"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminApiServerArgument": {
      "description": "BareMetalAdminApiServerArgument represents an arg name->value pair. Only a subset of customized flags are supported. Please refer to the API server documentation below to know the exact format: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/",
      "properties": {
        "argument": {
          "type": "string",
          "description": "The argument name as it appears on the API Server command line please make sure to remove the leading dashes."
        },
        "value": {
          "type": "string",
          "description": "The value of the arg as it will be passed to the API Server command line."
        }
      },
      "type": "object",
      "required": [
        "argument",
        "value"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminApiServerArgumentResponse": {
      "description": "BareMetalAdminApiServerArgument represents an arg name->value pair. Only a subset of customized flags are supported. Please refer to the API server documentation below to know the exact format: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/",
      "properties": {
        "argument": {
          "type": "string",
          "description": "The argument name as it appears on the API Server command line please make sure to remove the leading dashes."
        },
        "value": {
          "type": "string",
          "description": "The value of the arg as it will be passed to the API Server command line."
        }
      },
      "type": "object",
      "required": [
        "argument",
        "value"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminClusterOperationsConfig": {
      "description": "BareMetalAdminClusterOperationsConfig specifies the admin cluster's observability infrastructure.",
      "properties": {
        "enableApplicationLogs": {
          "type": "boolean",
          "description": "Whether collection of application logs/metrics should be enabled (in addition to system logs/metrics)."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminClusterOperationsConfigResponse": {
      "description": "BareMetalAdminClusterOperationsConfig specifies the admin cluster's observability infrastructure.",
      "properties": {
        "enableApplicationLogs": {
          "type": "boolean",
          "description": "Whether collection of application logs/metrics should be enabled (in addition to system logs/metrics)."
        }
      },
      "type": "object",
      "required": [
        "enableApplicationLogs"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminControlPlaneConfig": {
      "description": "BareMetalAdminControlPlaneConfig specifies the control plane configuration.",
      "properties": {
        "apiServerArgs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminApiServerArgument"
          },
          "description": "Customizes the default API server args. Only a subset of customized flags are supported. Please refer to the API server documentation below to know the exact format: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/"
        },
        "controlPlaneNodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminControlPlaneNodePoolConfig",
          "description": "Configures the node pool running the control plane. If specified the corresponding NodePool will be created for the cluster's control plane. The NodePool will have the same name and namespace as the cluster."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneNodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminControlPlaneConfigResponse": {
      "description": "BareMetalAdminControlPlaneConfig specifies the control plane configuration.",
      "properties": {
        "apiServerArgs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminApiServerArgumentResponse"
          },
          "description": "Customizes the default API server args. Only a subset of customized flags are supported. Please refer to the API server documentation below to know the exact format: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/"
        },
        "controlPlaneNodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminControlPlaneNodePoolConfigResponse",
          "description": "Configures the node pool running the control plane. If specified the corresponding NodePool will be created for the cluster's control plane. The NodePool will have the same name and namespace as the cluster."
        }
      },
      "type": "object",
      "required": [
        "apiServerArgs",
        "controlPlaneNodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminControlPlaneNodePoolConfig": {
      "description": "BareMetalAdminControlPlaneNodePoolConfig specifies the control plane node pool configuration. We have a control plane specific node pool config so that we can flexible about supporting control plane specific fields in the future.",
      "properties": {
        "nodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfig",
          "description": "The generic configuration for a node pool running the control plane."
        }
      },
      "type": "object",
      "required": [
        "nodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminControlPlaneNodePoolConfigResponse": {
      "description": "BareMetalAdminControlPlaneNodePoolConfig specifies the control plane node pool configuration. We have a control plane specific node pool config so that we can flexible about supporting control plane specific fields in the future.",
      "properties": {
        "nodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfigResponse",
          "description": "The generic configuration for a node pool running the control plane."
        }
      },
      "type": "object",
      "required": [
        "nodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminDrainedMachineResponse": {
      "description": "BareMetalAdminDrainedMachine represents the machines that are drained.",
      "properties": {
        "nodeIp": {
          "type": "string",
          "description": "Drained machine IP address."
        }
      },
      "type": "object",
      "required": [
        "nodeIp"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminDrainingMachineResponse": {
      "description": "BareMetalAdminDrainingMachine represents the machines that are currently draining.",
      "properties": {
        "nodeIp": {
          "type": "string",
          "description": "Draining machine IP address."
        },
        "podCount": {
          "type": "integer",
          "description": "The count of pods yet to drain."
        }
      },
      "type": "object",
      "required": [
        "nodeIp",
        "podCount"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminIslandModeCidrConfig": {
      "description": "BareMetalAdminIslandModeCidrConfig specifies the cluster CIDR configuration while running in island mode.",
      "properties": {
        "podAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation."
        },
        "serviceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation."
        }
      },
      "type": "object",
      "required": [
        "podAddressCidrBlocks",
        "serviceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminIslandModeCidrConfigResponse": {
      "description": "BareMetalAdminIslandModeCidrConfig specifies the cluster CIDR configuration while running in island mode.",
      "properties": {
        "podAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation."
        },
        "serviceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation."
        }
      },
      "type": "object",
      "required": [
        "podAddressCidrBlocks",
        "serviceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminLoadBalancerConfig": {
      "description": "BareMetalAdminLoadBalancerConfig specifies the load balancer configuration.",
      "properties": {
        "manualLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminManualLbConfig",
          "description": "Manually configured load balancers."
        },
        "portConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminPortConfig",
          "description": "Configures the ports that the load balancer will listen on."
        },
        "vipConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminVipConfig",
          "description": "The VIPs used by the load balancer."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminLoadBalancerConfigResponse": {
      "description": "BareMetalAdminLoadBalancerConfig specifies the load balancer configuration.",
      "properties": {
        "manualLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminManualLbConfigResponse",
          "description": "Manually configured load balancers."
        },
        "portConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminPortConfigResponse",
          "description": "Configures the ports that the load balancer will listen on."
        },
        "vipConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminVipConfigResponse",
          "description": "The VIPs used by the load balancer."
        }
      },
      "type": "object",
      "required": [
        "manualLbConfig",
        "portConfig",
        "vipConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminMachineDrainStatusResponse": {
      "description": "BareMetalAdminMachineDrainStatus represents the status of bare metal node machines that are undergoing drain operations.",
      "properties": {
        "drainedMachines": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminDrainedMachineResponse"
          },
          "description": "The list of drained machines."
        },
        "drainingMachines": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminDrainingMachineResponse"
          },
          "description": "The list of draning machines."
        }
      },
      "type": "object",
      "required": [
        "drainedMachines",
        "drainingMachines"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminMaintenanceConfig": {
      "description": "BareMetalAdminMaintenanceConfig specifies configurations to put bare metal Admin cluster CRs nodes in and out of maintenance.",
      "properties": {
        "maintenanceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All IPv4 address from these ranges will be placed into maintenance mode. Nodes in maintenance mode will be cordoned and drained. When both of these are true, the \"baremetal.cluster.gke.io/maintenance\" annotation will be set on the node resource."
        }
      },
      "type": "object",
      "required": [
        "maintenanceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminMaintenanceConfigResponse": {
      "description": "BareMetalAdminMaintenanceConfig specifies configurations to put bare metal Admin cluster CRs nodes in and out of maintenance.",
      "properties": {
        "maintenanceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All IPv4 address from these ranges will be placed into maintenance mode. Nodes in maintenance mode will be cordoned and drained. When both of these are true, the \"baremetal.cluster.gke.io/maintenance\" annotation will be set on the node resource."
        }
      },
      "type": "object",
      "required": [
        "maintenanceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminMaintenanceStatusResponse": {
      "description": "BareMetalAdminMaintenanceStatus represents the maintenance status for bare metal Admin cluster CR's nodes.",
      "properties": {
        "machineDrainStatus": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminMachineDrainStatusResponse",
          "description": "Represents the status of draining and drained machine nodes. This is used to show the progress of cluster upgrade."
        }
      },
      "type": "object",
      "required": [
        "machineDrainStatus"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminManualLbConfig": {
      "description": "BareMetalAdminManualLbConfig represents configuration parameters for a manual load balancer.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether manual load balancing is enabled."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminManualLbConfigResponse": {
      "description": "BareMetalAdminManualLbConfig represents configuration parameters for a manual load balancer.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether manual load balancing is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminNetworkConfig": {
      "description": "BareMetalAdminNetworkConfig specifies the cluster network configuration.",
      "properties": {
        "islandModeCidr": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminIslandModeCidrConfig",
          "description": "Configuration for Island mode CIDR."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminNetworkConfigResponse": {
      "description": "BareMetalAdminNetworkConfig specifies the cluster network configuration.",
      "properties": {
        "islandModeCidr": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminIslandModeCidrConfigResponse",
          "description": "Configuration for Island mode CIDR."
        }
      },
      "type": "object",
      "required": [
        "islandModeCidr"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminNodeAccessConfig": {
      "description": "Specifies the node access related settings for the bare metal admin cluster.",
      "properties": {
        "loginUser": {
          "type": "string",
          "description": "LoginUser is the user name used to access node machines. It defaults to \"root\" if not set."
        }
      },
      "type": "object",
      "required": [
        "loginUser"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminNodeAccessConfigResponse": {
      "description": "Specifies the node access related settings for the bare metal admin cluster.",
      "properties": {
        "loginUser": {
          "type": "string",
          "description": "LoginUser is the user name used to access node machines. It defaults to \"root\" if not set."
        }
      },
      "type": "object",
      "required": [
        "loginUser"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminOsEnvironmentConfig": {
      "description": "Specifies operating system operation settings for cluster provisioning.",
      "properties": {
        "packageRepoExcluded": {
          "type": "boolean",
          "description": "Whether the package repo should be added when initializing bare metal machines."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminOsEnvironmentConfigResponse": {
      "description": "Specifies operating system operation settings for cluster provisioning.",
      "properties": {
        "packageRepoExcluded": {
          "type": "boolean",
          "description": "Whether the package repo should be added when initializing bare metal machines."
        }
      },
      "type": "object",
      "required": [
        "packageRepoExcluded"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminPortConfig": {
      "description": "BareMetalAdminPortConfig is the specification of load balancer ports.",
      "properties": {
        "controlPlaneLoadBalancerPort": {
          "type": "integer",
          "description": "The port that control plane hosted load balancers will listen on."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminPortConfigResponse": {
      "description": "BareMetalAdminPortConfig is the specification of load balancer ports.",
      "properties": {
        "controlPlaneLoadBalancerPort": {
          "type": "integer",
          "description": "The port that control plane hosted load balancers will listen on."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneLoadBalancerPort"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminProxyConfig": {
      "description": "BareMetalAdminProxyConfig specifies the cluster proxy configuration.",
      "properties": {
        "noProxy": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of IPs, hostnames, and domains that should skip the proxy. Examples: [\"127.0.0.1\", \"example.com\", \".corp\", \"localhost\"]."
        },
        "uri": {
          "type": "string",
          "description": "Specifies the address of your proxy server. Examples: `http://domain` WARNING: Do not provide credentials in the format `http://(username:password@)domain` these will be rejected by the server."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminProxyConfigResponse": {
      "description": "BareMetalAdminProxyConfig specifies the cluster proxy configuration.",
      "properties": {
        "noProxy": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of IPs, hostnames, and domains that should skip the proxy. Examples: [\"127.0.0.1\", \"example.com\", \".corp\", \"localhost\"]."
        },
        "uri": {
          "type": "string",
          "description": "Specifies the address of your proxy server. Examples: `http://domain` WARNING: Do not provide credentials in the format `http://(username:password@)domain` these will be rejected by the server."
        }
      },
      "type": "object",
      "required": [
        "noProxy",
        "uri"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminSecurityConfig": {
      "description": "Specifies the security related settings for the bare metal admin cluster.",
      "properties": {
        "authorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:Authorization",
          "description": "Configures user access to the admin cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminSecurityConfigResponse": {
      "description": "Specifies the security related settings for the bare metal admin cluster.",
      "properties": {
        "authorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:AuthorizationResponse",
          "description": "Configures user access to the admin cluster."
        }
      },
      "type": "object",
      "required": [
        "authorization"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminStorageConfig": {
      "description": "BareMetalAdminStorageConfig specifies the cluster storage configuration.",
      "properties": {
        "lvpNodeMountsConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpConfig",
          "description": "Specifies the config for local PersistentVolumes backed by mounted node disks. These disks need to be formatted and mounted by the user, which can be done before or after cluster creation."
        },
        "lvpShareConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpShareConfig",
          "description": "Specifies the config for local PersistentVolumes backed by subdirectories in a shared filesystem. These subdirectores are automatically created during cluster creation."
        }
      },
      "type": "object",
      "required": [
        "lvpNodeMountsConfig",
        "lvpShareConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminStorageConfigResponse": {
      "description": "BareMetalAdminStorageConfig specifies the cluster storage configuration.",
      "properties": {
        "lvpNodeMountsConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpConfigResponse",
          "description": "Specifies the config for local PersistentVolumes backed by mounted node disks. These disks need to be formatted and mounted by the user, which can be done before or after cluster creation."
        },
        "lvpShareConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpShareConfigResponse",
          "description": "Specifies the config for local PersistentVolumes backed by subdirectories in a shared filesystem. These subdirectores are automatically created during cluster creation."
        }
      },
      "type": "object",
      "required": [
        "lvpNodeMountsConfig",
        "lvpShareConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminVipConfig": {
      "description": "BareMetalAdminVipConfig for bare metal load balancer configurations.",
      "properties": {
        "controlPlaneVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for the Kubernetes API of this bare metal admin cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminVipConfigResponse": {
      "description": "BareMetalAdminVipConfig for bare metal load balancer configurations.",
      "properties": {
        "controlPlaneVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for the Kubernetes API of this bare metal admin cluster."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneVip"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminWorkloadNodeConfig": {
      "description": "BareMetalAdminWorkloadNodeConfig specifies the workload node configurations.",
      "properties": {
        "maxPodsPerNode": {
          "type": "string",
          "description": "The maximum number of pods a node can run. The size of the CIDR range assigned to the node will be derived from this parameter. By default 110 Pods are created per Node. Upper bound is 250 for both HA and non-HA admin cluster. Lower bound is 64 for non-HA admin cluster and 32 for HA admin cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalAdminWorkloadNodeConfigResponse": {
      "description": "BareMetalAdminWorkloadNodeConfig specifies the workload node configurations.",
      "properties": {
        "maxPodsPerNode": {
          "type": "string",
          "description": "The maximum number of pods a node can run. The size of the CIDR range assigned to the node will be derived from this parameter. By default 110 Pods are created per Node. Upper bound is 250 for both HA and non-HA admin cluster. Lower bound is 64 for non-HA admin cluster and 32 for HA admin cluster."
        }
      },
      "type": "object",
      "required": [
        "maxPodsPerNode"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalApiServerArgument": {
      "description": "Represents an arg name->value pair. Only a subset of customized flags are supported. For the exact format, refer to the [API server documentation](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/).",
      "properties": {
        "argument": {
          "type": "string",
          "description": "The argument name as it appears on the API Server command line, make sure to remove the leading dashes."
        },
        "value": {
          "type": "string",
          "description": "The value of the arg as it will be passed to the API Server command line."
        }
      },
      "type": "object",
      "required": [
        "argument",
        "value"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalApiServerArgumentResponse": {
      "description": "Represents an arg name->value pair. Only a subset of customized flags are supported. For the exact format, refer to the [API server documentation](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/).",
      "properties": {
        "argument": {
          "type": "string",
          "description": "The argument name as it appears on the API Server command line, make sure to remove the leading dashes."
        },
        "value": {
          "type": "string",
          "description": "The value of the arg as it will be passed to the API Server command line."
        }
      },
      "type": "object",
      "required": [
        "argument",
        "value"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalBgpLbConfig": {
      "description": "BareMetalBgpLbConfig represents configuration parameters for a Border Gateway Protocol (BGP) load balancer.",
      "properties": {
        "addressPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerAddressPool"
          },
          "description": "AddressPools is a list of non-overlapping IP pools used by load balancer typed services. All addresses must be routable to load balancer nodes. IngressVIP must be included in the pools."
        },
        "asn": {
          "type": "string",
          "description": "BGP autonomous system number (ASN) of the cluster. This field can be updated after cluster creation."
        },
        "bgpPeerConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalBgpPeerConfig"
          },
          "description": "The list of BGP peers that the cluster will connect to. At least one peer must be configured for each control plane node. Control plane nodes will connect to these peers to advertise the control plane VIP. The Services load balancer also uses these peers by default. This field can be updated after cluster creation."
        },
        "loadBalancerNodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerNodePoolConfig",
          "description": "Specifies the node pool running data plane load balancing. L2 connectivity is required among nodes in this pool. If missing, the control plane node pool is used for data plane load balancing."
        }
      },
      "type": "object",
      "required": [
        "addressPools",
        "asn",
        "bgpPeerConfigs"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalBgpLbConfigResponse": {
      "description": "BareMetalBgpLbConfig represents configuration parameters for a Border Gateway Protocol (BGP) load balancer.",
      "properties": {
        "addressPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerAddressPoolResponse"
          },
          "description": "AddressPools is a list of non-overlapping IP pools used by load balancer typed services. All addresses must be routable to load balancer nodes. IngressVIP must be included in the pools."
        },
        "asn": {
          "type": "string",
          "description": "BGP autonomous system number (ASN) of the cluster. This field can be updated after cluster creation."
        },
        "bgpPeerConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalBgpPeerConfigResponse"
          },
          "description": "The list of BGP peers that the cluster will connect to. At least one peer must be configured for each control plane node. Control plane nodes will connect to these peers to advertise the control plane VIP. The Services load balancer also uses these peers by default. This field can be updated after cluster creation."
        },
        "loadBalancerNodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerNodePoolConfigResponse",
          "description": "Specifies the node pool running data plane load balancing. L2 connectivity is required among nodes in this pool. If missing, the control plane node pool is used for data plane load balancing."
        }
      },
      "type": "object",
      "required": [
        "addressPools",
        "asn",
        "bgpPeerConfigs",
        "loadBalancerNodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalBgpPeerConfig": {
      "description": "BareMetalBgpPeerConfig represents configuration parameters for a Border Gateway Protocol (BGP) peer.",
      "properties": {
        "asn": {
          "type": "string",
          "description": "BGP autonomous system number (ASN) for the network that contains the external peer device."
        },
        "controlPlaneNodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IP address of the control plane node that connects to the external peer. If you don't specify any control plane nodes, all control plane nodes can connect to the external peer. If you specify one or more IP addresses, only the nodes specified participate in peering sessions."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address of the external peer device."
        }
      },
      "type": "object",
      "required": [
        "asn",
        "ipAddress"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalBgpPeerConfigResponse": {
      "description": "BareMetalBgpPeerConfig represents configuration parameters for a Border Gateway Protocol (BGP) peer.",
      "properties": {
        "asn": {
          "type": "string",
          "description": "BGP autonomous system number (ASN) for the network that contains the external peer device."
        },
        "controlPlaneNodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IP address of the control plane node that connects to the external peer. If you don't specify any control plane nodes, all control plane nodes can connect to the external peer. If you specify one or more IP addresses, only the nodes specified participate in peering sessions."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address of the external peer device."
        }
      },
      "type": "object",
      "required": [
        "asn",
        "controlPlaneNodes",
        "ipAddress"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterOperationsConfig": {
      "description": "Specifies the bare metal user cluster's observability infrastructure.",
      "properties": {
        "enableApplicationLogs": {
          "type": "boolean",
          "description": "Whether collection of application logs/metrics should be enabled (in addition to system logs/metrics)."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalClusterOperationsConfigResponse": {
      "description": "Specifies the bare metal user cluster's observability infrastructure.",
      "properties": {
        "enableApplicationLogs": {
          "type": "boolean",
          "description": "Whether collection of application logs/metrics should be enabled (in addition to system logs/metrics)."
        }
      },
      "type": "object",
      "required": [
        "enableApplicationLogs"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterUpgradePolicy": {
      "description": "BareMetalClusterUpgradePolicy defines the cluster upgrade policy.",
      "properties": {
        "policy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalClusterUpgradePolicyPolicy",
          "description": "Specifies which upgrade policy to use."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalClusterUpgradePolicyPolicy": {
      "description": "Specifies which upgrade policy to use.",
      "type": "string",
      "enum": [
        {
          "name": "NodePoolPolicyUnspecified",
          "description": "No upgrade policy selected.",
          "value": "NODE_POOL_POLICY_UNSPECIFIED"
        },
        {
          "name": "Serial",
          "description": "Upgrade worker node pools sequentially.",
          "value": "SERIAL"
        },
        {
          "name": "Concurrent",
          "description": "Upgrade all worker node pools in parallel.",
          "value": "CONCURRENT"
        }
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterUpgradePolicyResponse": {
      "description": "BareMetalClusterUpgradePolicy defines the cluster upgrade policy.",
      "properties": {
        "policy": {
          "type": "string",
          "description": "Specifies which upgrade policy to use."
        }
      },
      "type": "object",
      "required": [
        "policy"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalControlPlaneConfig": {
      "description": "Specifies the control plane configuration.",
      "properties": {
        "apiServerArgs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalApiServerArgument"
          },
          "description": "Customizes the default API server args. Only a subset of customized flags are supported. For the exact format, refer to the [API server documentation](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/)."
        },
        "controlPlaneNodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalControlPlaneNodePoolConfig",
          "description": "Configures the node pool running the control plane."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneNodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalControlPlaneConfigResponse": {
      "description": "Specifies the control plane configuration.",
      "properties": {
        "apiServerArgs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalApiServerArgumentResponse"
          },
          "description": "Customizes the default API server args. Only a subset of customized flags are supported. For the exact format, refer to the [API server documentation](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/)."
        },
        "controlPlaneNodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalControlPlaneNodePoolConfigResponse",
          "description": "Configures the node pool running the control plane."
        }
      },
      "type": "object",
      "required": [
        "apiServerArgs",
        "controlPlaneNodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalControlPlaneNodePoolConfig": {
      "description": "Specifies the control plane node pool configuration.",
      "properties": {
        "nodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfig",
          "description": "The generic configuration for a node pool running the control plane."
        }
      },
      "type": "object",
      "required": [
        "nodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalControlPlaneNodePoolConfigResponse": {
      "description": "Specifies the control plane node pool configuration.",
      "properties": {
        "nodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfigResponse",
          "description": "The generic configuration for a node pool running the control plane."
        }
      },
      "type": "object",
      "required": [
        "nodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalDrainedMachineResponse": {
      "description": "Represents a machine that is currently drained.",
      "properties": {
        "nodeIp": {
          "type": "string",
          "description": "Drained machine IP address."
        }
      },
      "type": "object",
      "required": [
        "nodeIp"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalDrainingMachineResponse": {
      "description": "Represents a machine that is currently draining.",
      "properties": {
        "nodeIp": {
          "type": "string",
          "description": "Draining machine IP address."
        },
        "podCount": {
          "type": "integer",
          "description": "The count of pods yet to drain."
        }
      },
      "type": "object",
      "required": [
        "nodeIp",
        "podCount"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalIslandModeCidrConfig": {
      "description": "Specifies the cluster CIDR configuration while running in island mode.",
      "properties": {
        "podAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation."
        },
        "serviceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field is mutable after creation starting with version 1.15."
        }
      },
      "type": "object",
      "required": [
        "podAddressCidrBlocks",
        "serviceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalIslandModeCidrConfigResponse": {
      "description": "Specifies the cluster CIDR configuration while running in island mode.",
      "properties": {
        "podAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation."
        },
        "serviceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field is mutable after creation starting with version 1.15."
        }
      },
      "type": "object",
      "required": [
        "podAddressCidrBlocks",
        "serviceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalKubeletConfig": {
      "description": "KubeletConfig defines the modifiable kubelet configurations for bare metal machines. Note: this list includes fields supported in GKE (see https://cloud.google.com/kubernetes-engine/docs/how-to/node-system-config#kubelet-options).",
      "properties": {
        "registryBurst": {
          "type": "integer",
          "description": "The maximum size of bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry_pull_qps. The value must not be a negative number. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 10."
        },
        "registryPullQps": {
          "type": "integer",
          "description": "The limit of registry pulls per second. Setting this value to 0 means no limit. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 5."
        },
        "serializeImagePullsDisabled": {
          "type": "boolean",
          "description": "Prevents the Kubelet from pulling multiple images at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Another Union File System (Aufs) storage backend. Issue https://github.com/kubernetes/kubernetes/issues/10959 has more details."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalKubeletConfigResponse": {
      "description": "KubeletConfig defines the modifiable kubelet configurations for bare metal machines. Note: this list includes fields supported in GKE (see https://cloud.google.com/kubernetes-engine/docs/how-to/node-system-config#kubelet-options).",
      "properties": {
        "registryBurst": {
          "type": "integer",
          "description": "The maximum size of bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry_pull_qps. The value must not be a negative number. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 10."
        },
        "registryPullQps": {
          "type": "integer",
          "description": "The limit of registry pulls per second. Setting this value to 0 means no limit. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 5."
        },
        "serializeImagePullsDisabled": {
          "type": "boolean",
          "description": "Prevents the Kubelet from pulling multiple images at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Another Union File System (Aufs) storage backend. Issue https://github.com/kubernetes/kubernetes/issues/10959 has more details."
        }
      },
      "type": "object",
      "required": [
        "registryBurst",
        "registryPullQps",
        "serializeImagePullsDisabled"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalLoadBalancerAddressPool": {
      "description": "Represents an IP pool used by the load balancer.",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The addresses that are part of this pool. Each address must be either in the CIDR form (1.2.3.0/24) or range form (1.2.3.1-1.2.3.5)."
        },
        "avoidBuggyIps": {
          "type": "boolean",
          "description": "If true, avoid using IPs ending in .0 or .255. This avoids buggy consumer devices mistakenly dropping IPv4 traffic for those special IP addresses."
        },
        "manualAssign": {
          "type": "boolean",
          "description": "If true, prevent IP addresses from being automatically assigned."
        },
        "pool": {
          "type": "string",
          "description": "The name of the address pool."
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "pool"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalLoadBalancerAddressPoolResponse": {
      "description": "Represents an IP pool used by the load balancer.",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The addresses that are part of this pool. Each address must be either in the CIDR form (1.2.3.0/24) or range form (1.2.3.1-1.2.3.5)."
        },
        "avoidBuggyIps": {
          "type": "boolean",
          "description": "If true, avoid using IPs ending in .0 or .255. This avoids buggy consumer devices mistakenly dropping IPv4 traffic for those special IP addresses."
        },
        "manualAssign": {
          "type": "boolean",
          "description": "If true, prevent IP addresses from being automatically assigned."
        },
        "pool": {
          "type": "string",
          "description": "The name of the address pool."
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "avoidBuggyIps",
        "manualAssign",
        "pool"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalLoadBalancerConfig": {
      "description": "Specifies the load balancer configuration.",
      "properties": {
        "bgpLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalBgpLbConfig",
          "description": "Configuration for BGP typed load balancers. When set network_config.advanced_networking is automatically set to true."
        },
        "manualLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalManualLbConfig",
          "description": "Manually configured load balancers."
        },
        "metalLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMetalLbConfig",
          "description": "Configuration for MetalLB load balancers."
        },
        "portConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalPortConfig",
          "description": "Configures the ports that the load balancer will listen on."
        },
        "vipConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalVipConfig",
          "description": "The VIPs used by the load balancer."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalLoadBalancerConfigResponse": {
      "description": "Specifies the load balancer configuration.",
      "properties": {
        "bgpLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalBgpLbConfigResponse",
          "description": "Configuration for BGP typed load balancers. When set network_config.advanced_networking is automatically set to true."
        },
        "manualLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalManualLbConfigResponse",
          "description": "Manually configured load balancers."
        },
        "metalLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMetalLbConfigResponse",
          "description": "Configuration for MetalLB load balancers."
        },
        "portConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalPortConfigResponse",
          "description": "Configures the ports that the load balancer will listen on."
        },
        "vipConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalVipConfigResponse",
          "description": "The VIPs used by the load balancer."
        }
      },
      "type": "object",
      "required": [
        "bgpLbConfig",
        "manualLbConfig",
        "metalLbConfig",
        "portConfig",
        "vipConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalLoadBalancerNodePoolConfig": {
      "description": "Specifies the load balancer's node pool configuration.",
      "properties": {
        "nodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfig",
          "description": "The generic configuration for a node pool running a load balancer."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalLoadBalancerNodePoolConfigResponse": {
      "description": "Specifies the load balancer's node pool configuration.",
      "properties": {
        "nodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfigResponse",
          "description": "The generic configuration for a node pool running a load balancer."
        }
      },
      "type": "object",
      "required": [
        "nodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalLvpConfig": {
      "description": "Specifies the configs for local persistent volumes (PVs).",
      "properties": {
        "path": {
          "type": "string",
          "description": "The host machine path."
        },
        "storageClass": {
          "type": "string",
          "description": "The StorageClass name that PVs will be created with."
        }
      },
      "type": "object",
      "required": [
        "path",
        "storageClass"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalLvpConfigResponse": {
      "description": "Specifies the configs for local persistent volumes (PVs).",
      "properties": {
        "path": {
          "type": "string",
          "description": "The host machine path."
        },
        "storageClass": {
          "type": "string",
          "description": "The StorageClass name that PVs will be created with."
        }
      },
      "type": "object",
      "required": [
        "path",
        "storageClass"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalLvpShareConfig": {
      "description": "Specifies the configs for local persistent volumes under a shared file system.",
      "properties": {
        "lvpConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpConfig",
          "description": "Defines the machine path and storage class for the LVP Share."
        },
        "sharedPathPvCount": {
          "type": "integer",
          "description": "The number of subdirectories to create under path."
        }
      },
      "type": "object",
      "required": [
        "lvpConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalLvpShareConfigResponse": {
      "description": "Specifies the configs for local persistent volumes under a shared file system.",
      "properties": {
        "lvpConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpConfigResponse",
          "description": "Defines the machine path and storage class for the LVP Share."
        },
        "sharedPathPvCount": {
          "type": "integer",
          "description": "The number of subdirectories to create under path."
        }
      },
      "type": "object",
      "required": [
        "lvpConfig",
        "sharedPathPvCount"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalMachineDrainStatusResponse": {
      "description": "Represents the status of node machines that are undergoing drain operations.",
      "properties": {
        "drainedMachines": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalDrainedMachineResponse"
          },
          "description": "The list of drained machines."
        },
        "drainingMachines": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalDrainingMachineResponse"
          },
          "description": "The list of draning machines."
        }
      },
      "type": "object",
      "required": [
        "drainedMachines",
        "drainingMachines"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalMaintenanceConfig": {
      "description": "Specifies configurations to put bare metal nodes in and out of maintenance.",
      "properties": {
        "maintenanceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All IPv4 address from these ranges will be placed into maintenance mode. Nodes in maintenance mode will be cordoned and drained. When both of these are true, the \"baremetal.cluster.gke.io/maintenance\" annotation will be set on the node resource."
        }
      },
      "type": "object",
      "required": [
        "maintenanceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalMaintenanceConfigResponse": {
      "description": "Specifies configurations to put bare metal nodes in and out of maintenance.",
      "properties": {
        "maintenanceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All IPv4 address from these ranges will be placed into maintenance mode. Nodes in maintenance mode will be cordoned and drained. When both of these are true, the \"baremetal.cluster.gke.io/maintenance\" annotation will be set on the node resource."
        }
      },
      "type": "object",
      "required": [
        "maintenanceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalMaintenanceStatusResponse": {
      "description": "Represents the maintenance status of the bare metal user cluster.",
      "properties": {
        "machineDrainStatus": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMachineDrainStatusResponse",
          "description": "The maintenance status of node machines."
        }
      },
      "type": "object",
      "required": [
        "machineDrainStatus"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalManualLbConfig": {
      "description": "Represents configuration parameters for a manual load balancer.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether manual load balancing is enabled."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalManualLbConfigResponse": {
      "description": "Represents configuration parameters for a manual load balancer.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether manual load balancing is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalMetalLbConfig": {
      "description": "Represents configuration parameters for a MetalLB load balancer.",
      "properties": {
        "addressPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerAddressPool"
          },
          "description": "AddressPools is a list of non-overlapping IP pools used by load balancer typed services. All addresses must be routable to load balancer nodes. IngressVIP must be included in the pools."
        },
        "loadBalancerNodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerNodePoolConfig",
          "description": "Specifies the node pool running the load balancer. L2 connectivity is required among nodes in this pool. If missing, the control plane node pool is used as the load balancer pool."
        }
      },
      "type": "object",
      "required": [
        "addressPools"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalMetalLbConfigResponse": {
      "description": "Represents configuration parameters for a MetalLB load balancer.",
      "properties": {
        "addressPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerAddressPoolResponse"
          },
          "description": "AddressPools is a list of non-overlapping IP pools used by load balancer typed services. All addresses must be routable to load balancer nodes. IngressVIP must be included in the pools."
        },
        "loadBalancerNodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerNodePoolConfigResponse",
          "description": "Specifies the node pool running the load balancer. L2 connectivity is required among nodes in this pool. If missing, the control plane node pool is used as the load balancer pool."
        }
      },
      "type": "object",
      "required": [
        "addressPools",
        "loadBalancerNodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalMultipleNetworkInterfacesConfig": {
      "description": "Specifies the multiple networking interfaces cluster configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable multiple network interfaces for your pods. When set network_config.advanced_networking is automatically set to true."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalMultipleNetworkInterfacesConfigResponse": {
      "description": "Specifies the multiple networking interfaces cluster configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable multiple network interfaces for your pods. When set network_config.advanced_networking is automatically set to true."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalNetworkConfig": {
      "description": "Specifies the cluster network configuration.",
      "properties": {
        "advancedNetworking": {
          "type": "boolean",
          "description": "Enables the use of advanced Anthos networking features, such as Bundled Load Balancing with BGP or the egress NAT gateway. Setting configuration for advanced networking features will automatically set this flag."
        },
        "islandModeCidr": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalIslandModeCidrConfig",
          "description": "Configuration for island mode CIDR. In an island-mode network, nodes have unique IP addresses, but pods don't have unique addresses across clusters. This doesn't cause problems because pods in one cluster never directly communicate with pods in another cluster. Instead, there are gateways that mediate between a pod in one cluster and a pod in another cluster."
        },
        "multipleNetworkInterfacesConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMultipleNetworkInterfacesConfig",
          "description": "Configuration for multiple network interfaces."
        },
        "srIovConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalSrIovConfig",
          "description": "Configuration for SR-IOV."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalNetworkConfigResponse": {
      "description": "Specifies the cluster network configuration.",
      "properties": {
        "advancedNetworking": {
          "type": "boolean",
          "description": "Enables the use of advanced Anthos networking features, such as Bundled Load Balancing with BGP or the egress NAT gateway. Setting configuration for advanced networking features will automatically set this flag."
        },
        "islandModeCidr": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalIslandModeCidrConfigResponse",
          "description": "Configuration for island mode CIDR. In an island-mode network, nodes have unique IP addresses, but pods don't have unique addresses across clusters. This doesn't cause problems because pods in one cluster never directly communicate with pods in another cluster. Instead, there are gateways that mediate between a pod in one cluster and a pod in another cluster."
        },
        "multipleNetworkInterfacesConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMultipleNetworkInterfacesConfigResponse",
          "description": "Configuration for multiple network interfaces."
        },
        "srIovConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalSrIovConfigResponse",
          "description": "Configuration for SR-IOV."
        }
      },
      "type": "object",
      "required": [
        "advancedNetworking",
        "islandModeCidr",
        "multipleNetworkInterfacesConfig",
        "srIovConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalNodeAccessConfig": {
      "description": "Specifies the node access related settings for the bare metal user cluster.",
      "properties": {
        "loginUser": {
          "type": "string",
          "description": "LoginUser is the user name used to access node machines. It defaults to \"root\" if not set."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalNodeAccessConfigResponse": {
      "description": "Specifies the node access related settings for the bare metal user cluster.",
      "properties": {
        "loginUser": {
          "type": "string",
          "description": "LoginUser is the user name used to access node machines. It defaults to \"root\" if not set."
        }
      },
      "type": "object",
      "required": [
        "loginUser"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalNodeConfig": {
      "description": "BareMetalNodeConfig lists machine addresses to access Nodes.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels assigned to this node. An object containing a list of key/value pairs. The labels here, unioned with the labels set on BareMetalNodePoolConfig are the set of labels that will be applied to the node. If there are any conflicts, the BareMetalNodeConfig labels take precedence. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }."
        },
        "nodeIp": {
          "type": "string",
          "description": "The default IPv4 address for SSH access and Kubernetes node. Example: 192.168.0.1"
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalNodeConfigResponse": {
      "description": "BareMetalNodeConfig lists machine addresses to access Nodes.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels assigned to this node. An object containing a list of key/value pairs. The labels here, unioned with the labels set on BareMetalNodePoolConfig are the set of labels that will be applied to the node. If there are any conflicts, the BareMetalNodeConfig labels take precedence. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }."
        },
        "nodeIp": {
          "type": "string",
          "description": "The default IPv4 address for SSH access and Kubernetes node. Example: 192.168.0.1"
        }
      },
      "type": "object",
      "required": [
        "labels",
        "nodeIp"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalNodePoolConfig": {
      "description": "BareMetalNodePoolConfig describes the configuration of all nodes within a given bare metal node pool.",
      "properties": {
        "kubeletConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalKubeletConfig",
          "description": "The modifiable kubelet configurations for the bare metal machines."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels assigned to nodes of this node pool. An object containing a list of key/value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }."
        },
        "nodeConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodeConfig"
          },
          "description": "The list of machine addresses in the bare metal node pool."
        },
        "operatingSystem": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfigOperatingSystem",
          "description": "Specifies the nodes operating system (default: LINUX)."
        },
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:NodeTaint"
          },
          "description": "The initial taints assigned to nodes of this node pool."
        }
      },
      "type": "object",
      "required": [
        "nodeConfigs"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalNodePoolConfigOperatingSystem": {
      "description": "Specifies the nodes operating system (default: LINUX).",
      "type": "string",
      "enum": [
        {
          "name": "OperatingSystemUnspecified",
          "description": "No operating system runtime selected.",
          "value": "OPERATING_SYSTEM_UNSPECIFIED"
        },
        {
          "name": "Linux",
          "description": "Linux operating system.",
          "value": "LINUX"
        }
      ]
    },
    "google-native:gkeonprem/v1:BareMetalNodePoolConfigResponse": {
      "description": "BareMetalNodePoolConfig describes the configuration of all nodes within a given bare metal node pool.",
      "properties": {
        "kubeletConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalKubeletConfigResponse",
          "description": "The modifiable kubelet configurations for the bare metal machines."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels assigned to nodes of this node pool. An object containing a list of key/value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }."
        },
        "nodeConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodeConfigResponse"
          },
          "description": "The list of machine addresses in the bare metal node pool."
        },
        "operatingSystem": {
          "type": "string",
          "description": "Specifies the nodes operating system (default: LINUX)."
        },
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:NodeTaintResponse"
          },
          "description": "The initial taints assigned to nodes of this node pool."
        }
      },
      "type": "object",
      "required": [
        "kubeletConfig",
        "labels",
        "nodeConfigs",
        "operatingSystem",
        "taints"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalNodePoolUpgradePolicy": {
      "description": "BareMetalNodePoolUpgradePolicy defines the node pool upgrade policy.",
      "properties": {
        "parallelUpgradeConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalParallelUpgradeConfig",
          "description": "The parallel upgrade settings for worker node pools."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalNodePoolUpgradePolicyResponse": {
      "description": "BareMetalNodePoolUpgradePolicy defines the node pool upgrade policy.",
      "properties": {
        "parallelUpgradeConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalParallelUpgradeConfigResponse",
          "description": "The parallel upgrade settings for worker node pools."
        }
      },
      "type": "object",
      "required": [
        "parallelUpgradeConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalOsEnvironmentConfig": {
      "description": "Specifies operating system settings for cluster provisioning.",
      "properties": {
        "packageRepoExcluded": {
          "type": "boolean",
          "description": "Whether the package repo should not be included when initializing bare metal machines."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalOsEnvironmentConfigResponse": {
      "description": "Specifies operating system settings for cluster provisioning.",
      "properties": {
        "packageRepoExcluded": {
          "type": "boolean",
          "description": "Whether the package repo should not be included when initializing bare metal machines."
        }
      },
      "type": "object",
      "required": [
        "packageRepoExcluded"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalParallelUpgradeConfig": {
      "description": "BareMetalParallelUpgradeConfig defines the parallel upgrade settings for worker node pools.",
      "properties": {
        "concurrentNodes": {
          "type": "integer",
          "description": "The maximum number of nodes that can be upgraded at once."
        },
        "minimumAvailableNodes": {
          "type": "integer",
          "description": "The minimum number of nodes that should be healthy and available during an upgrade. If set to the default value of 0, it is possible that none of the nodes will be available during an upgrade."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalParallelUpgradeConfigResponse": {
      "description": "BareMetalParallelUpgradeConfig defines the parallel upgrade settings for worker node pools.",
      "properties": {
        "concurrentNodes": {
          "type": "integer",
          "description": "The maximum number of nodes that can be upgraded at once."
        },
        "minimumAvailableNodes": {
          "type": "integer",
          "description": "The minimum number of nodes that should be healthy and available during an upgrade. If set to the default value of 0, it is possible that none of the nodes will be available during an upgrade."
        }
      },
      "type": "object",
      "required": [
        "concurrentNodes",
        "minimumAvailableNodes"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalPortConfig": {
      "description": "Specifies load balancer ports for the bare metal user cluster.",
      "properties": {
        "controlPlaneLoadBalancerPort": {
          "type": "integer",
          "description": "The port that control plane hosted load balancers will listen on."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalPortConfigResponse": {
      "description": "Specifies load balancer ports for the bare metal user cluster.",
      "properties": {
        "controlPlaneLoadBalancerPort": {
          "type": "integer",
          "description": "The port that control plane hosted load balancers will listen on."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneLoadBalancerPort"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalProxyConfig": {
      "description": "Specifies the cluster proxy configuration.",
      "properties": {
        "noProxy": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of IPs, hostnames, and domains that should skip the proxy. Examples: [\"127.0.0.1\", \"example.com\", \".corp\", \"localhost\"]."
        },
        "uri": {
          "type": "string",
          "description": "Specifies the address of your proxy server. Examples: `http://domain` Do not provide credentials in the format `http://(username:password@)domain` these will be rejected by the server."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalProxyConfigResponse": {
      "description": "Specifies the cluster proxy configuration.",
      "properties": {
        "noProxy": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of IPs, hostnames, and domains that should skip the proxy. Examples: [\"127.0.0.1\", \"example.com\", \".corp\", \"localhost\"]."
        },
        "uri": {
          "type": "string",
          "description": "Specifies the address of your proxy server. Examples: `http://domain` Do not provide credentials in the format `http://(username:password@)domain` these will be rejected by the server."
        }
      },
      "type": "object",
      "required": [
        "noProxy",
        "uri"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalSecurityConfig": {
      "description": "Specifies the security related settings for the bare metal user cluster.",
      "properties": {
        "authorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:Authorization",
          "description": "Configures user access to the user cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalSecurityConfigResponse": {
      "description": "Specifies the security related settings for the bare metal user cluster.",
      "properties": {
        "authorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:AuthorizationResponse",
          "description": "Configures user access to the user cluster."
        }
      },
      "type": "object",
      "required": [
        "authorization"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalSrIovConfig": {
      "description": "Specifies the SR-IOV networking operator config.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to install the SR-IOV operator."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalSrIovConfigResponse": {
      "description": "Specifies the SR-IOV networking operator config.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to install the SR-IOV operator."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalStorageConfig": {
      "description": "BareMetalStorageConfig specifies the cluster storage configuration.",
      "properties": {
        "lvpNodeMountsConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpConfig",
          "description": "Specifies the config for local PersistentVolumes backed by mounted node disks. These disks need to be formatted and mounted by the user, which can be done before or after cluster creation."
        },
        "lvpShareConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpShareConfig",
          "description": "Specifies the config for local PersistentVolumes backed by subdirectories in a shared filesystem. These subdirectores are automatically created during cluster creation."
        }
      },
      "type": "object",
      "required": [
        "lvpNodeMountsConfig",
        "lvpShareConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalStorageConfigResponse": {
      "description": "BareMetalStorageConfig specifies the cluster storage configuration.",
      "properties": {
        "lvpNodeMountsConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpConfigResponse",
          "description": "Specifies the config for local PersistentVolumes backed by mounted node disks. These disks need to be formatted and mounted by the user, which can be done before or after cluster creation."
        },
        "lvpShareConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLvpShareConfigResponse",
          "description": "Specifies the config for local PersistentVolumes backed by subdirectories in a shared filesystem. These subdirectores are automatically created during cluster creation."
        }
      },
      "type": "object",
      "required": [
        "lvpNodeMountsConfig",
        "lvpShareConfig"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalVipConfig": {
      "description": "Specifies the VIP config for the bare metal load balancer.",
      "properties": {
        "controlPlaneVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for the Kubernetes API of this bare metal user cluster."
        },
        "ingressVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for ingress traffic into this bare metal user cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalVipConfigResponse": {
      "description": "Specifies the VIP config for the bare metal load balancer.",
      "properties": {
        "controlPlaneVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for the Kubernetes API of this bare metal user cluster."
        },
        "ingressVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for ingress traffic into this bare metal user cluster."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneVip",
        "ingressVip"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalWorkloadNodeConfig": {
      "description": "Specifies the workload node configurations.",
      "properties": {
        "containerRuntime": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalWorkloadNodeConfigContainerRuntime",
          "description": "Specifies which container runtime will be used."
        },
        "maxPodsPerNode": {
          "type": "string",
          "description": "The maximum number of pods a node can run. The size of the CIDR range assigned to the node will be derived from this parameter."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BareMetalWorkloadNodeConfigContainerRuntime": {
      "description": "Specifies which container runtime will be used.",
      "type": "string",
      "enum": [
        {
          "name": "ContainerRuntimeUnspecified",
          "description": "No container runtime selected.",
          "value": "CONTAINER_RUNTIME_UNSPECIFIED"
        },
        {
          "name": "Containerd",
          "description": "Containerd runtime.",
          "value": "CONTAINERD"
        }
      ]
    },
    "google-native:gkeonprem/v1:BareMetalWorkloadNodeConfigResponse": {
      "description": "Specifies the workload node configurations.",
      "properties": {
        "containerRuntime": {
          "type": "string",
          "description": "Specifies which container runtime will be used."
        },
        "maxPodsPerNode": {
          "type": "string",
          "description": "The maximum number of pods a node can run. The size of the CIDR range assigned to the node will be derived from this parameter."
        }
      },
      "type": "object",
      "required": [
        "containerRuntime",
        "maxPodsPerNode"
      ]
    },
    "google-native:gkeonprem/v1:BinaryAuthorization": {
      "description": "Configuration for Binary Authorization.",
      "properties": {
        "evaluationMode": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BinaryAuthorizationEvaluationMode",
          "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BinaryAuthorizationEvaluationMode": {
      "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.",
      "type": "string",
      "enum": [
        {
          "name": "EvaluationModeUnspecified",
          "description": "Default value",
          "value": "EVALUATION_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable BinaryAuthorization",
          "value": "DISABLED"
        },
        {
          "name": "ProjectSingletonPolicyEnforce",
          "description": "Enforce Kubernetes admission requests with BinaryAuthorization using the project's singleton policy.",
          "value": "PROJECT_SINGLETON_POLICY_ENFORCE"
        }
      ]
    },
    "google-native:gkeonprem/v1:BinaryAuthorizationResponse": {
      "description": "Configuration for Binary Authorization.",
      "properties": {
        "evaluationMode": {
          "type": "string",
          "description": "Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED."
        }
      },
      "type": "object",
      "required": [
        "evaluationMode"
      ]
    },
    "google-native:gkeonprem/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:ClusterUser": {
      "description": "ClusterUser configures user principals for an RBAC policy.",
      "properties": {
        "username": {
          "type": "string",
          "description": "The name of the user, e.g. `my-gcp-id@gmail.com`."
        }
      },
      "type": "object",
      "required": [
        "username"
      ]
    },
    "google-native:gkeonprem/v1:ClusterUserResponse": {
      "description": "ClusterUser configures user principals for an RBAC policy.",
      "properties": {
        "username": {
          "type": "string",
          "description": "The name of the user, e.g. `my-gcp-id@gmail.com`."
        }
      },
      "type": "object",
      "required": [
        "username"
      ]
    },
    "google-native:gkeonprem/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:gkeonprem/v1:FleetResponse": {
      "description": "Fleet related configuration. Fleets are a Google Cloud concept for logically organizing clusters, letting you use and manage multi-cluster capabilities and apply consistent policies across your systems. See [Anthos Fleets](`https://cloud.google.com/anthos/multicluster-management/fleets`) for more details on Anthos multi-cluster capabilities using Fleets. ##",
      "properties": {
        "membership": {
          "type": "string",
          "description": "The name of the managed fleet Membership resource associated to this cluster. Membership names are formatted as `projects//locations//memberships/`."
        }
      },
      "type": "object",
      "required": [
        "membership"
      ]
    },
    "google-native:gkeonprem/v1:NodeTaint": {
      "description": "NodeTaint applied to every Kubernetes node in a node pool. Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. Node taints are permanent.",
      "properties": {
        "effect": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:NodeTaintEffect",
          "description": "The taint effect."
        },
        "key": {
          "type": "string",
          "description": "Key associated with the effect."
        },
        "value": {
          "type": "string",
          "description": "Value associated with the effect."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:NodeTaintEffect": {
      "description": "The taint effect.",
      "type": "string",
      "enum": [
        {
          "name": "EffectUnspecified",
          "description": "Not set.",
          "value": "EFFECT_UNSPECIFIED"
        },
        {
          "name": "NoSchedule",
          "description": "Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.",
          "value": "NO_SCHEDULE"
        },
        {
          "name": "PreferNoSchedule",
          "description": "Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.",
          "value": "PREFER_NO_SCHEDULE"
        },
        {
          "name": "NoExecute",
          "description": "Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.",
          "value": "NO_EXECUTE"
        }
      ]
    },
    "google-native:gkeonprem/v1:NodeTaintResponse": {
      "description": "NodeTaint applied to every Kubernetes node in a node pool. Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. Node taints are permanent.",
      "properties": {
        "effect": {
          "type": "string",
          "description": "The taint effect."
        },
        "key": {
          "type": "string",
          "description": "Key associated with the effect."
        },
        "value": {
          "type": "string",
          "description": "Value associated with the effect."
        }
      },
      "type": "object",
      "required": [
        "effect",
        "key",
        "value"
      ]
    },
    "google-native:gkeonprem/v1:ResourceConditionResponse": {
      "description": "ResourceCondition provides a standard mechanism for higher-level status reporting from controller.",
      "properties": {
        "lastTransitionTime": {
          "type": "string",
          "description": "Last time the condition transit from one status to another."
        },
        "message": {
          "type": "string",
          "description": "Human-readable message indicating details about last transition."
        },
        "reason": {
          "type": "string",
          "description": "Machine-readable message indicating details about last transition."
        },
        "state": {
          "type": "string",
          "description": "state of the condition."
        },
        "type": {
          "type": "string",
          "description": "Type of the condition. (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)"
        }
      },
      "type": "object",
      "required": [
        "lastTransitionTime",
        "message",
        "reason",
        "state",
        "type"
      ]
    },
    "google-native:gkeonprem/v1:ResourceStatusResponse": {
      "description": "ResourceStatus describes why a cluster or node pool has a certain status. (e.g., ERROR or DEGRADED).",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceConditionResponse"
          },
          "description": "ResourceCondition provide a standard mechanism for higher-level status reporting from controller."
        },
        "errorMessage": {
          "type": "string",
          "description": "Human-friendly representation of the error message from controller. The error message can be temporary as the controller controller creates a cluster or node pool. If the error message persists for a longer period of time, it can be used to surface error message to indicate real problems requiring user intervention."
        }
      },
      "type": "object",
      "required": [
        "conditions",
        "errorMessage"
      ]
    },
    "google-native:gkeonprem/v1:ValidationCheckResponse": {
      "description": "ValidationCheck represents the result of preflight check.",
      "properties": {
        "option": {
          "type": "string",
          "description": "Options used for the validation check"
        },
        "scenario": {
          "type": "string",
          "description": "The scenario when the preflight checks were run."
        },
        "status": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ValidationCheckStatusResponse",
          "description": "The detailed validation check status."
        }
      },
      "type": "object",
      "required": [
        "option",
        "scenario",
        "status"
      ]
    },
    "google-native:gkeonprem/v1:ValidationCheckResultResponse": {
      "description": "ValidationCheckResult defines the details about the validation check.",
      "properties": {
        "category": {
          "type": "string",
          "description": "The category of the validation."
        },
        "description": {
          "type": "string",
          "description": "The description of the validation check."
        },
        "details": {
          "type": "string",
          "description": "Detailed failure information, which might be unformatted."
        },
        "reason": {
          "type": "string",
          "description": "A human-readable message of the check failure."
        },
        "state": {
          "type": "string",
          "description": "The validation check state."
        }
      },
      "type": "object",
      "required": [
        "category",
        "description",
        "details",
        "reason",
        "state"
      ]
    },
    "google-native:gkeonprem/v1:ValidationCheckStatusResponse": {
      "description": "ValidationCheckStatus defines the detailed validation check status.",
      "properties": {
        "result": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ValidationCheckResultResponse"
          },
          "description": "Individual checks which failed as part of the Preflight check execution."
        }
      },
      "type": "object",
      "required": [
        "result"
      ]
    },
    "google-native:gkeonprem/v1:VmwareAAGConfig": {
      "description": "Specifies anti affinity group config for the VMware user cluster.",
      "properties": {
        "aagConfigDisabled": {
          "type": "boolean",
          "description": "Spread nodes across at least three physical hosts (requires at least three hosts). Enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareAAGConfigResponse": {
      "description": "Specifies anti affinity group config for the VMware user cluster.",
      "properties": {
        "aagConfigDisabled": {
          "type": "boolean",
          "description": "Spread nodes across at least three physical hosts (requires at least three hosts). Enabled by default."
        }
      },
      "type": "object",
      "required": [
        "aagConfigDisabled"
      ]
    },
    "google-native:gkeonprem/v1:VmwareAddressPool": {
      "description": "Represents an IP pool used by the load balancer.",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The addresses that are part of this pool. Each address must be either in the CIDR form (1.2.3.0/24) or range form (1.2.3.1-1.2.3.5)."
        },
        "avoidBuggyIps": {
          "type": "boolean",
          "description": "If true, avoid using IPs ending in .0 or .255. This avoids buggy consumer devices mistakenly dropping IPv4 traffic for those special IP addresses."
        },
        "manualAssign": {
          "type": "boolean",
          "description": "If true, prevent IP addresses from being automatically assigned."
        },
        "pool": {
          "type": "string",
          "description": "The name of the address pool."
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "pool"
      ]
    },
    "google-native:gkeonprem/v1:VmwareAddressPoolResponse": {
      "description": "Represents an IP pool used by the load balancer.",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The addresses that are part of this pool. Each address must be either in the CIDR form (1.2.3.0/24) or range form (1.2.3.1-1.2.3.5)."
        },
        "avoidBuggyIps": {
          "type": "boolean",
          "description": "If true, avoid using IPs ending in .0 or .255. This avoids buggy consumer devices mistakenly dropping IPv4 traffic for those special IP addresses."
        },
        "manualAssign": {
          "type": "boolean",
          "description": "If true, prevent IP addresses from being automatically assigned."
        },
        "pool": {
          "type": "string",
          "description": "The name of the address pool."
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "avoidBuggyIps",
        "manualAssign",
        "pool"
      ]
    },
    "google-native:gkeonprem/v1:VmwareAutoRepairConfig": {
      "description": "Specifies config to enable/disable auto repair. The cluster-health-controller is deployed only if Enabled is true.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether auto repair is enabled."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareAutoRepairConfigResponse": {
      "description": "Specifies config to enable/disable auto repair. The cluster-health-controller is deployed only if Enabled is true.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether auto repair is enabled."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkeonprem/v1:VmwareAutoResizeConfig": {
      "description": "Represents auto resizing configurations for the VMware user cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable controle plane node auto resizing."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareAutoResizeConfigResponse": {
      "description": "Represents auto resizing configurations for the VMware user cluster.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether to enable controle plane node auto resizing."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkeonprem/v1:VmwareClusterUpgradePolicy": {
      "description": "VmwareClusterUpgradePolicy defines the cluster upgrade policy.",
      "properties": {
        "controlPlaneOnly": {
          "type": "boolean",
          "description": "Controls whether the upgrade applies to the control plane only."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareClusterUpgradePolicyResponse": {
      "description": "VmwareClusterUpgradePolicy defines the cluster upgrade policy.",
      "properties": {
        "controlPlaneOnly": {
          "type": "boolean",
          "description": "Controls whether the upgrade applies to the control plane only."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneOnly"
      ]
    },
    "google-native:gkeonprem/v1:VmwareControlPlaneNodeConfig": {
      "description": "Specifies control plane node config for the VMware user cluster.",
      "properties": {
        "autoResizeConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAutoResizeConfig",
          "description": "AutoResizeConfig provides auto resizing configurations."
        },
        "cpus": {
          "type": "string",
          "description": "The number of CPUs for each admin cluster node that serve as control planes for this VMware user cluster. (default: 4 CPUs)"
        },
        "memory": {
          "type": "string",
          "description": "The megabytes of memory for each admin cluster node that serves as a control plane for this VMware user cluster (default: 8192 MB memory)."
        },
        "replicas": {
          "type": "string",
          "description": "The number of control plane nodes for this VMware user cluster. (default: 1 replica)."
        },
        "vsphereConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareControlPlaneVsphereConfig",
          "description": "Vsphere-specific config."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareControlPlaneNodeConfigResponse": {
      "description": "Specifies control plane node config for the VMware user cluster.",
      "properties": {
        "autoResizeConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAutoResizeConfigResponse",
          "description": "AutoResizeConfig provides auto resizing configurations."
        },
        "cpus": {
          "type": "string",
          "description": "The number of CPUs for each admin cluster node that serve as control planes for this VMware user cluster. (default: 4 CPUs)"
        },
        "memory": {
          "type": "string",
          "description": "The megabytes of memory for each admin cluster node that serves as a control plane for this VMware user cluster (default: 8192 MB memory)."
        },
        "replicas": {
          "type": "string",
          "description": "The number of control plane nodes for this VMware user cluster. (default: 1 replica)."
        },
        "vsphereConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareControlPlaneVsphereConfigResponse",
          "description": "Vsphere-specific config."
        }
      },
      "type": "object",
      "required": [
        "autoResizeConfig",
        "cpus",
        "memory",
        "replicas",
        "vsphereConfig"
      ]
    },
    "google-native:gkeonprem/v1:VmwareControlPlaneV2Config": {
      "description": "Specifies control plane V2 config.",
      "properties": {
        "controlPlaneIpBlock": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareIpBlock",
          "description": "Static IP addresses for the control plane nodes."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareControlPlaneV2ConfigResponse": {
      "description": "Specifies control plane V2 config.",
      "properties": {
        "controlPlaneIpBlock": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareIpBlockResponse",
          "description": "Static IP addresses for the control plane nodes."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneIpBlock"
      ]
    },
    "google-native:gkeonprem/v1:VmwareControlPlaneVsphereConfig": {
      "description": "Specifies control plane node config.",
      "properties": {
        "datastore": {
          "type": "string",
          "description": "The Vsphere datastore used by the control plane Node."
        },
        "storagePolicyName": {
          "type": "string",
          "description": "The Vsphere storage policy used by the control plane Node."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareControlPlaneVsphereConfigResponse": {
      "description": "Specifies control plane node config.",
      "properties": {
        "datastore": {
          "type": "string",
          "description": "The Vsphere datastore used by the control plane Node."
        },
        "storagePolicyName": {
          "type": "string",
          "description": "The Vsphere storage policy used by the control plane Node."
        }
      },
      "type": "object",
      "required": [
        "datastore",
        "storagePolicyName"
      ]
    },
    "google-native:gkeonprem/v1:VmwareDataplaneV2Config": {
      "description": "Contains configurations for Dataplane V2, which is optimized dataplane for Kubernetes networking. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dataplane-v2",
      "properties": {
        "advancedNetworking": {
          "type": "boolean",
          "description": "Enable advanced networking which requires dataplane_v2_enabled to be set true."
        },
        "dataplaneV2Enabled": {
          "type": "boolean",
          "description": "Enables Dataplane V2."
        },
        "windowsDataplaneV2Enabled": {
          "type": "boolean",
          "description": "Enable Dataplane V2 for clusters with Windows nodes."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareDataplaneV2ConfigResponse": {
      "description": "Contains configurations for Dataplane V2, which is optimized dataplane for Kubernetes networking. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dataplane-v2",
      "properties": {
        "advancedNetworking": {
          "type": "boolean",
          "description": "Enable advanced networking which requires dataplane_v2_enabled to be set true."
        },
        "dataplaneV2Enabled": {
          "type": "boolean",
          "description": "Enables Dataplane V2."
        },
        "windowsDataplaneV2Enabled": {
          "type": "boolean",
          "description": "Enable Dataplane V2 for clusters with Windows nodes."
        }
      },
      "type": "object",
      "required": [
        "advancedNetworking",
        "dataplaneV2Enabled",
        "windowsDataplaneV2Enabled"
      ]
    },
    "google-native:gkeonprem/v1:VmwareDhcpIpConfig": {
      "description": "Represents the network configuration required for the VMware user clusters with DHCP IP configurations.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "enabled is a flag to mark if DHCP IP allocation is used for VMware user clusters."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareDhcpIpConfigResponse": {
      "description": "Represents the network configuration required for the VMware user clusters with DHCP IP configurations.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "enabled is a flag to mark if DHCP IP allocation is used for VMware user clusters."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:gkeonprem/v1:VmwareF5BigIpConfig": {
      "description": "Represents configuration parameters for an F5 BIG-IP load balancer.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The load balancer's IP address."
        },
        "partition": {
          "type": "string",
          "description": "The preexisting partition to be used by the load balancer. This partition is usually created for the admin cluster for example: 'my-f5-admin-partition'."
        },
        "snatPool": {
          "type": "string",
          "description": "The pool name. Only necessary, if using SNAT."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareF5BigIpConfigResponse": {
      "description": "Represents configuration parameters for an F5 BIG-IP load balancer.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The load balancer's IP address."
        },
        "partition": {
          "type": "string",
          "description": "The preexisting partition to be used by the load balancer. This partition is usually created for the admin cluster for example: 'my-f5-admin-partition'."
        },
        "snatPool": {
          "type": "string",
          "description": "The pool name. Only necessary, if using SNAT."
        }
      },
      "type": "object",
      "required": [
        "address",
        "partition",
        "snatPool"
      ]
    },
    "google-native:gkeonprem/v1:VmwareHostConfig": {
      "description": "Represents the common parameters for all the hosts irrespective of their IP address.",
      "properties": {
        "dnsSearchDomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNS search domains."
        },
        "dnsServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNS servers."
        },
        "ntpServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "NTP servers."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareHostConfigResponse": {
      "description": "Represents the common parameters for all the hosts irrespective of their IP address.",
      "properties": {
        "dnsSearchDomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNS search domains."
        },
        "dnsServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNS servers."
        },
        "ntpServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "NTP servers."
        }
      },
      "type": "object",
      "required": [
        "dnsSearchDomains",
        "dnsServers",
        "ntpServers"
      ]
    },
    "google-native:gkeonprem/v1:VmwareHostIp": {
      "description": "Represents VMware user cluster node's network configuration.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname of the machine. VM's name will be used if this field is empty."
        },
        "ip": {
          "type": "string",
          "description": "IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24)."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareHostIpResponse": {
      "description": "Represents VMware user cluster node's network configuration.",
      "properties": {
        "hostname": {
          "type": "string",
          "description": "Hostname of the machine. VM's name will be used if this field is empty."
        },
        "ip": {
          "type": "string",
          "description": "IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24)."
        }
      },
      "type": "object",
      "required": [
        "hostname",
        "ip"
      ]
    },
    "google-native:gkeonprem/v1:VmwareIpBlock": {
      "description": "Represents a collection of IP addresses to assign to nodes.",
      "properties": {
        "gateway": {
          "type": "string",
          "description": "The network gateway used by the VMware user cluster."
        },
        "ips": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareHostIp"
          },
          "description": "The node's network configurations used by the VMware user cluster."
        },
        "netmask": {
          "type": "string",
          "description": "The netmask used by the VMware user cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareIpBlockResponse": {
      "description": "Represents a collection of IP addresses to assign to nodes.",
      "properties": {
        "gateway": {
          "type": "string",
          "description": "The network gateway used by the VMware user cluster."
        },
        "ips": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareHostIpResponse"
          },
          "description": "The node's network configurations used by the VMware user cluster."
        },
        "netmask": {
          "type": "string",
          "description": "The netmask used by the VMware user cluster."
        }
      },
      "type": "object",
      "required": [
        "gateway",
        "ips",
        "netmask"
      ]
    },
    "google-native:gkeonprem/v1:VmwareLoadBalancerConfig": {
      "description": "Specifies the locad balancer config for the VMware user cluster.",
      "properties": {
        "f5Config": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareF5BigIpConfig",
          "description": "Configuration for F5 Big IP typed load balancers."
        },
        "manualLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareManualLbConfig",
          "description": "Manually configured load balancers."
        },
        "metalLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareMetalLbConfig",
          "description": "Configuration for MetalLB typed load balancers."
        },
        "vipConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVipConfig",
          "description": "The VIPs used by the load balancer."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareLoadBalancerConfigResponse": {
      "description": "Specifies the locad balancer config for the VMware user cluster.",
      "properties": {
        "f5Config": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareF5BigIpConfigResponse",
          "description": "Configuration for F5 Big IP typed load balancers."
        },
        "manualLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareManualLbConfigResponse",
          "description": "Manually configured load balancers."
        },
        "metalLbConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareMetalLbConfigResponse",
          "description": "Configuration for MetalLB typed load balancers."
        },
        "seesawConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareSeesawConfigResponse",
          "description": "Configuration for Seesaw typed load balancers."
        },
        "vipConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVipConfigResponse",
          "description": "The VIPs used by the load balancer."
        }
      },
      "type": "object",
      "required": [
        "f5Config",
        "manualLbConfig",
        "metalLbConfig",
        "seesawConfig",
        "vipConfig"
      ]
    },
    "google-native:gkeonprem/v1:VmwareManualLbConfig": {
      "description": "Represents configuration parameters for an already existing manual load balancer. Given the nature of manual load balancers it is expected that said load balancer will be fully managed by users. IMPORTANT: Please note that the Anthos On-Prem API will not generate or update ManualLB configurations it can only bind a pre-existing configuration to a new VMware user cluster.",
      "properties": {
        "controlPlaneNodePort": {
          "type": "integer",
          "description": "NodePort for control plane service. The Kubernetes API server in the admin cluster is implemented as a Service of type NodePort (ex. 30968)."
        },
        "ingressHttpNodePort": {
          "type": "integer",
          "description": "NodePort for ingress service's http. The ingress service in the admin cluster is implemented as a Service of type NodePort (ex. 32527)."
        },
        "ingressHttpsNodePort": {
          "type": "integer",
          "description": "NodePort for ingress service's https. The ingress service in the admin cluster is implemented as a Service of type NodePort (ex. 30139)."
        },
        "konnectivityServerNodePort": {
          "type": "integer",
          "description": "NodePort for konnectivity server service running as a sidecar in each kube-apiserver pod (ex. 30564)."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareManualLbConfigResponse": {
      "description": "Represents configuration parameters for an already existing manual load balancer. Given the nature of manual load balancers it is expected that said load balancer will be fully managed by users. IMPORTANT: Please note that the Anthos On-Prem API will not generate or update ManualLB configurations it can only bind a pre-existing configuration to a new VMware user cluster.",
      "properties": {
        "controlPlaneNodePort": {
          "type": "integer",
          "description": "NodePort for control plane service. The Kubernetes API server in the admin cluster is implemented as a Service of type NodePort (ex. 30968)."
        },
        "ingressHttpNodePort": {
          "type": "integer",
          "description": "NodePort for ingress service's http. The ingress service in the admin cluster is implemented as a Service of type NodePort (ex. 32527)."
        },
        "ingressHttpsNodePort": {
          "type": "integer",
          "description": "NodePort for ingress service's https. The ingress service in the admin cluster is implemented as a Service of type NodePort (ex. 30139)."
        },
        "konnectivityServerNodePort": {
          "type": "integer",
          "description": "NodePort for konnectivity server service running as a sidecar in each kube-apiserver pod (ex. 30564)."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneNodePort",
        "ingressHttpNodePort",
        "ingressHttpsNodePort",
        "konnectivityServerNodePort"
      ]
    },
    "google-native:gkeonprem/v1:VmwareMetalLbConfig": {
      "description": "Represents configuration parameters for the MetalLB load balancer.",
      "properties": {
        "addressPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAddressPool"
          },
          "description": "AddressPools is a list of non-overlapping IP pools used by load balancer typed services. All addresses must be routable to load balancer nodes. IngressVIP must be included in the pools."
        }
      },
      "type": "object",
      "required": [
        "addressPools"
      ]
    },
    "google-native:gkeonprem/v1:VmwareMetalLbConfigResponse": {
      "description": "Represents configuration parameters for the MetalLB load balancer.",
      "properties": {
        "addressPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAddressPoolResponse"
          },
          "description": "AddressPools is a list of non-overlapping IP pools used by load balancer typed services. All addresses must be routable to load balancer nodes. IngressVIP must be included in the pools."
        }
      },
      "type": "object",
      "required": [
        "addressPools"
      ]
    },
    "google-native:gkeonprem/v1:VmwareNetworkConfig": {
      "description": "Specifies network config for the VMware user cluster.",
      "properties": {
        "controlPlaneV2Config": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareControlPlaneV2Config",
          "description": "Configuration for control plane V2 mode."
        },
        "dhcpIpConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareDhcpIpConfig",
          "description": "Configuration settings for a DHCP IP configuration."
        },
        "hostConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareHostConfig",
          "description": "Represents common network settings irrespective of the host's IP address."
        },
        "podAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. Only a single range is supported. This field cannot be changed after creation."
        },
        "serviceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. Only a single range is supported. This field cannot be changed after creation."
        },
        "staticIpConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareStaticIpConfig",
          "description": "Configuration settings for a static IP configuration."
        },
        "vcenterNetwork": {
          "type": "string",
          "description": "vcenter_network specifies vCenter network name. Inherited from the admin cluster."
        }
      },
      "type": "object",
      "required": [
        "podAddressCidrBlocks",
        "serviceAddressCidrBlocks"
      ]
    },
    "google-native:gkeonprem/v1:VmwareNetworkConfigResponse": {
      "description": "Specifies network config for the VMware user cluster.",
      "properties": {
        "controlPlaneV2Config": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareControlPlaneV2ConfigResponse",
          "description": "Configuration for control plane V2 mode."
        },
        "dhcpIpConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareDhcpIpConfigResponse",
          "description": "Configuration settings for a DHCP IP configuration."
        },
        "hostConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareHostConfigResponse",
          "description": "Represents common network settings irrespective of the host's IP address."
        },
        "podAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. Only a single range is supported. This field cannot be changed after creation."
        },
        "serviceAddressCidrBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. Only a single range is supported. This field cannot be changed after creation."
        },
        "staticIpConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareStaticIpConfigResponse",
          "description": "Configuration settings for a static IP configuration."
        },
        "vcenterNetwork": {
          "type": "string",
          "description": "vcenter_network specifies vCenter network name. Inherited from the admin cluster."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneV2Config",
        "dhcpIpConfig",
        "hostConfig",
        "podAddressCidrBlocks",
        "serviceAddressCidrBlocks",
        "staticIpConfig",
        "vcenterNetwork"
      ]
    },
    "google-native:gkeonprem/v1:VmwareNodeConfig": {
      "description": "Parameters that describe the configuration of all nodes within a given node pool.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "string",
          "description": "VMware disk size to be used during creation."
        },
        "cpus": {
          "type": "string",
          "description": "The number of CPUs for each node in the node pool."
        },
        "enableLoadBalancer": {
          "type": "boolean",
          "description": "Allow node pool traffic to be load balanced. Only works for clusters with MetalLB load balancers."
        },
        "image": {
          "type": "string",
          "description": "The OS image name in vCenter, only valid when using Windows."
        },
        "imageType": {
          "type": "string",
          "description": "The OS image to be used for each node in a node pool. Currently `cos`, `ubuntu`, `ubuntu_containerd` and `windows` are supported."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it's best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/"
        },
        "memoryMb": {
          "type": "string",
          "description": "The megabytes of memory for each node in the node pool."
        },
        "replicas": {
          "type": "string",
          "description": "The number of nodes in the node pool."
        },
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:NodeTaint"
          },
          "description": "The initial taints assigned to nodes of this node pool."
        },
        "vsphereConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVsphereConfig",
          "description": "Specifies the vSphere config for node pool."
        }
      },
      "type": "object",
      "required": [
        "imageType"
      ]
    },
    "google-native:gkeonprem/v1:VmwareNodeConfigResponse": {
      "description": "Parameters that describe the configuration of all nodes within a given node pool.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "string",
          "description": "VMware disk size to be used during creation."
        },
        "cpus": {
          "type": "string",
          "description": "The number of CPUs for each node in the node pool."
        },
        "enableLoadBalancer": {
          "type": "boolean",
          "description": "Allow node pool traffic to be load balanced. Only works for clusters with MetalLB load balancers."
        },
        "image": {
          "type": "string",
          "description": "The OS image name in vCenter, only valid when using Windows."
        },
        "imageType": {
          "type": "string",
          "description": "The OS image to be used for each node in a node pool. Currently `cos`, `ubuntu`, `ubuntu_containerd` and `windows` are supported."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it's best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/"
        },
        "memoryMb": {
          "type": "string",
          "description": "The megabytes of memory for each node in the node pool."
        },
        "replicas": {
          "type": "string",
          "description": "The number of nodes in the node pool."
        },
        "taints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:NodeTaintResponse"
          },
          "description": "The initial taints assigned to nodes of this node pool."
        },
        "vsphereConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVsphereConfigResponse",
          "description": "Specifies the vSphere config for node pool."
        }
      },
      "type": "object",
      "required": [
        "bootDiskSizeGb",
        "cpus",
        "enableLoadBalancer",
        "image",
        "imageType",
        "labels",
        "memoryMb",
        "replicas",
        "taints",
        "vsphereConfig"
      ]
    },
    "google-native:gkeonprem/v1:VmwareNodePoolAutoscalingConfig": {
      "description": "NodePoolAutoscaling config for the NodePool to allow for the kubernetes to scale NodePool.",
      "properties": {
        "maxReplicas": {
          "type": "integer",
          "description": "Maximum number of replicas in the NodePool."
        },
        "minReplicas": {
          "type": "integer",
          "description": "Minimum number of replicas in the NodePool."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareNodePoolAutoscalingConfigResponse": {
      "description": "NodePoolAutoscaling config for the NodePool to allow for the kubernetes to scale NodePool.",
      "properties": {
        "maxReplicas": {
          "type": "integer",
          "description": "Maximum number of replicas in the NodePool."
        },
        "minReplicas": {
          "type": "integer",
          "description": "Minimum number of replicas in the NodePool."
        }
      },
      "type": "object",
      "required": [
        "maxReplicas",
        "minReplicas"
      ]
    },
    "google-native:gkeonprem/v1:VmwareSeesawConfigResponse": {
      "description": "VmwareSeesawConfig represents configuration parameters for an already existing Seesaw load balancer. IMPORTANT: Please note that the Anthos On-Prem API will not generate or update Seesaw configurations it can only bind a pre-existing configuration to a new user cluster. IMPORTANT: When attempting to create a user cluster with a pre-existing Seesaw load balancer you will need to follow some preparation steps before calling the 'CreateVmwareCluster' API method. First you will need to create the user cluster's namespace via kubectl. The namespace will need to use the following naming convention : -gke-onprem-mgmt or -gke-onprem-mgmt depending on whether you used the 'VmwareCluster.local_name' to disambiguate collisions; for more context see the documentation of 'VmwareCluster.local_name'. Once the namespace is created you will need to create a secret resource via kubectl. This secret will contain copies of your Seesaw credentials. The Secret must be called 'user-cluster-creds' and contain Seesaw's SSH and Cert credentials. The credentials must be keyed with the following names: 'seesaw-ssh-private-key', 'seesaw-ssh-public-key', 'seesaw-ssh-ca-key', 'seesaw-ssh-ca-cert'.",
      "properties": {
        "enableHa": {
          "type": "boolean",
          "description": "Enable two load balancer VMs to achieve a highly-available Seesaw load balancer."
        },
        "group": {
          "type": "string",
          "description": "In general the following format should be used for the Seesaw group name: seesaw-for-[cluster_name]."
        },
        "ipBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareIpBlockResponse"
          },
          "description": "The IP Blocks to be used by the Seesaw load balancer"
        },
        "masterIp": {
          "type": "string",
          "description": "MasterIP is the IP announced by the master of Seesaw group."
        },
        "stackdriverName": {
          "type": "string",
          "description": "Name to be used by Stackdriver."
        },
        "vms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the VMs created for this Seesaw group."
        }
      },
      "type": "object",
      "required": [
        "enableHa",
        "group",
        "ipBlocks",
        "masterIp",
        "stackdriverName",
        "vms"
      ]
    },
    "google-native:gkeonprem/v1:VmwareStaticIpConfig": {
      "description": "Represents the network configuration required for the VMware user clusters with Static IP configurations.",
      "properties": {
        "ipBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareIpBlock"
          },
          "description": "Represents the configuration values for static IP allocation to nodes."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareStaticIpConfigResponse": {
      "description": "Represents the network configuration required for the VMware user clusters with Static IP configurations.",
      "properties": {
        "ipBlocks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareIpBlockResponse"
          },
          "description": "Represents the configuration values for static IP allocation to nodes."
        }
      },
      "type": "object",
      "required": [
        "ipBlocks"
      ]
    },
    "google-native:gkeonprem/v1:VmwareStorageConfig": {
      "description": "Specifies vSphere CSI components deployment config in the VMware user cluster.",
      "properties": {
        "vsphereCsiDisabled": {
          "type": "boolean",
          "description": "Whether or not to deploy vSphere CSI components in the VMware user cluster. Enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareStorageConfigResponse": {
      "description": "Specifies vSphere CSI components deployment config in the VMware user cluster.",
      "properties": {
        "vsphereCsiDisabled": {
          "type": "boolean",
          "description": "Whether or not to deploy vSphere CSI components in the VMware user cluster. Enabled by default."
        }
      },
      "type": "object",
      "required": [
        "vsphereCsiDisabled"
      ]
    },
    "google-native:gkeonprem/v1:VmwareVCenterConfig": {
      "description": "Represents configuration for the VMware VCenter for the user cluster.",
      "properties": {
        "caCertData": {
          "type": "string",
          "description": "Contains the vCenter CA certificate public key for SSL verification."
        },
        "cluster": {
          "type": "string",
          "description": "The name of the vCenter cluster for the user cluster."
        },
        "datacenter": {
          "type": "string",
          "description": "The name of the vCenter datacenter for the user cluster."
        },
        "datastore": {
          "type": "string",
          "description": "The name of the vCenter datastore for the user cluster."
        },
        "folder": {
          "type": "string",
          "description": "The name of the vCenter folder for the user cluster."
        },
        "resourcePool": {
          "type": "string",
          "description": "The name of the vCenter resource pool for the user cluster."
        },
        "storagePolicyName": {
          "type": "string",
          "description": "The name of the vCenter storage policy for the user cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareVCenterConfigResponse": {
      "description": "Represents configuration for the VMware VCenter for the user cluster.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The vCenter IP address."
        },
        "caCertData": {
          "type": "string",
          "description": "Contains the vCenter CA certificate public key for SSL verification."
        },
        "cluster": {
          "type": "string",
          "description": "The name of the vCenter cluster for the user cluster."
        },
        "datacenter": {
          "type": "string",
          "description": "The name of the vCenter datacenter for the user cluster."
        },
        "datastore": {
          "type": "string",
          "description": "The name of the vCenter datastore for the user cluster."
        },
        "folder": {
          "type": "string",
          "description": "The name of the vCenter folder for the user cluster."
        },
        "resourcePool": {
          "type": "string",
          "description": "The name of the vCenter resource pool for the user cluster."
        },
        "storagePolicyName": {
          "type": "string",
          "description": "The name of the vCenter storage policy for the user cluster."
        }
      },
      "type": "object",
      "required": [
        "address",
        "caCertData",
        "cluster",
        "datacenter",
        "datastore",
        "folder",
        "resourcePool",
        "storagePolicyName"
      ]
    },
    "google-native:gkeonprem/v1:VmwareVipConfig": {
      "description": "Specifies the VIP config for the VMware user cluster load balancer.",
      "properties": {
        "controlPlaneVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for the Kubernetes API of this cluster."
        },
        "ingressVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for ingress traffic into this cluster."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareVipConfigResponse": {
      "description": "Specifies the VIP config for the VMware user cluster load balancer.",
      "properties": {
        "controlPlaneVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for the Kubernetes API of this cluster."
        },
        "ingressVip": {
          "type": "string",
          "description": "The VIP which you previously set aside for ingress traffic into this cluster."
        }
      },
      "type": "object",
      "required": [
        "controlPlaneVip",
        "ingressVip"
      ]
    },
    "google-native:gkeonprem/v1:VmwareVsphereConfig": {
      "description": "VmwareVsphereConfig represents configuration for the VMware VCenter for node pool.",
      "properties": {
        "datastore": {
          "type": "string",
          "description": "The name of the vCenter datastore. Inherited from the user cluster."
        },
        "hostGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Vsphere host groups to apply to all VMs in the node pool"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVsphereTag"
          },
          "description": "Tags to apply to VMs."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareVsphereConfigResponse": {
      "description": "VmwareVsphereConfig represents configuration for the VMware VCenter for node pool.",
      "properties": {
        "datastore": {
          "type": "string",
          "description": "The name of the vCenter datastore. Inherited from the user cluster."
        },
        "hostGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Vsphere host groups to apply to all VMs in the node pool"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVsphereTagResponse"
          },
          "description": "Tags to apply to VMs."
        }
      },
      "type": "object",
      "required": [
        "datastore",
        "hostGroups",
        "tags"
      ]
    },
    "google-native:gkeonprem/v1:VmwareVsphereTag": {
      "description": "VmwareVsphereTag describes a vSphere tag to be placed on VMs in the node pool. For more information, see https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-E8E854DD-AA97-4E0C-8419-CE84F93C4058.html",
      "properties": {
        "category": {
          "type": "string",
          "description": "The Vsphere tag category."
        },
        "tag": {
          "type": "string",
          "description": "The Vsphere tag name."
        }
      },
      "type": "object"
    },
    "google-native:gkeonprem/v1:VmwareVsphereTagResponse": {
      "description": "VmwareVsphereTag describes a vSphere tag to be placed on VMs in the node pool. For more information, see https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-E8E854DD-AA97-4E0C-8419-CE84F93C4058.html",
      "properties": {
        "category": {
          "type": "string",
          "description": "The Vsphere tag category."
        },
        "tag": {
          "type": "string",
          "description": "The Vsphere tag name."
        }
      },
      "type": "object",
      "required": [
        "category",
        "tag"
      ]
    },
    "google-native:healthcare/v1:Attribute": {
      "description": "An attribute value for a Consent or User data mapping. Each Attribute must have a corresponding AttributeDefinition in the consent store that defines the default and allowed values.",
      "properties": {
        "attributeDefinitionId": {
          "type": "string",
          "description": "Indicates the name of an attribute defined in the consent store."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The value of the attribute. Must be an acceptable value as defined in the consent store. For example, if the consent store defines \"data type\" with acceptable values \"questionnaire\" and \"step-count\", when the attribute name is data type, this field must contain one of those values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:healthcare/v1:AttributeDefinitionCategory": {
      "description": "Required. The category of the attribute. The value of this field cannot be changed after creation.",
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "description": "No category specified. This option is invalid.",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "Resource",
          "description": "Specify this category when this attribute describes the properties of resources. For example, data anonymity or data type.",
          "value": "RESOURCE"
        },
        {
          "name": "Request",
          "description": "Specify this category when this attribute describes the properties of requests. For example, requester's role or requester's organization.",
          "value": "REQUEST"
        }
      ]
    },
    "google-native:healthcare/v1:AttributeResponse": {
      "description": "An attribute value for a Consent or User data mapping. Each Attribute must have a corresponding AttributeDefinition in the consent store that defines the default and allowed values.",
      "properties": {
        "attributeDefinitionId": {
          "type": "string",
          "description": "Indicates the name of an attribute defined in the consent store."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The value of the attribute. Must be an acceptable value as defined in the consent store. For example, if the consent store defines \"data type\" with acceptable values \"questionnaire\" and \"step-count\", when the attribute name is data type, this field must contain one of those values."
        }
      },
      "type": "object",
      "required": [
        "attributeDefinitionId",
        "values"
      ]
    },
    "google-native:healthcare/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:healthcare/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:healthcare%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:healthcare/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:healthcare/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:healthcare%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:healthcare/v1:CharacterMaskConfig": {
      "description": "Mask a string by replacing its characters with a fixed character.",
      "properties": {
        "maskingCharacter": {
          "type": "string",
          "description": "Character to mask the sensitive values. If not supplied, defaults to \"*\"."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:CharacterMaskConfigResponse": {
      "description": "Mask a string by replacing its characters with a fixed character.",
      "properties": {
        "maskingCharacter": {
          "type": "string",
          "description": "Character to mask the sensitive values. If not supplied, defaults to \"*\"."
        }
      },
      "type": "object",
      "required": [
        "maskingCharacter"
      ]
    },
    "google-native:healthcare/v1:ConsentState": {
      "description": "Required. Indicates the current state of this Consent.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "No state specified. Treated as ACTIVE only at the time of resource creation.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "The Consent is active and is considered when evaluating a user's consent on resources.",
          "value": "ACTIVE"
        },
        {
          "name": "Archived",
          "description": "The archived state is currently not being used.",
          "value": "ARCHIVED"
        },
        {
          "name": "Revoked",
          "description": "A revoked Consent is not considered when evaluating a user's consent on resources.",
          "value": "REVOKED"
        },
        {
          "name": "Draft",
          "description": "A draft Consent is not considered when evaluating a user's consent on resources unless explicitly specified.",
          "value": "DRAFT"
        },
        {
          "name": "Rejected",
          "description": "When a draft Consent is rejected by a user, it is set to a rejected state. A rejected Consent is not considered when evaluating a user's consent on resources.",
          "value": "REJECTED"
        }
      ]
    },
    "google-native:healthcare/v1:CryptoHashConfig": {
      "description": "Pseudonymization method that generates surrogates via cryptographic hashing. Uses SHA-256. Outputs a base64-encoded representation of the hashed output (for example, `L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=`).",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "An AES 128/192/256 bit key. Causes the hash to be computed based on this key. A default key is generated for each Deidentify operation and is used when neither `crypto_key` nor `kms_wrapped` is specified. Must not be set if `kms_wrapped` is set."
        },
        "kmsWrapped": {
          "$ref": "#/types/google-native:healthcare%2Fv1:KmsWrappedCryptoKey",
          "description": "KMS wrapped key. Must not be set if `crypto_key` is set."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:CryptoHashConfigResponse": {
      "description": "Pseudonymization method that generates surrogates via cryptographic hashing. Uses SHA-256. Outputs a base64-encoded representation of the hashed output (for example, `L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=`).",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "An AES 128/192/256 bit key. Causes the hash to be computed based on this key. A default key is generated for each Deidentify operation and is used when neither `crypto_key` nor `kms_wrapped` is specified. Must not be set if `kms_wrapped` is set."
        },
        "kmsWrapped": {
          "$ref": "#/types/google-native:healthcare%2Fv1:KmsWrappedCryptoKeyResponse",
          "description": "KMS wrapped key. Must not be set if `crypto_key` is set."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey",
        "kmsWrapped"
      ]
    },
    "google-native:healthcare/v1:DateShiftConfig": {
      "description": "Shift a date forward or backward in time by a random amount which is consistent for a given patient and crypto key combination.",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "An AES 128/192/256 bit key. The date shift is computed based on this key and the patient ID. If the patient ID is empty for a DICOM resource, the date shift is computed based on this key and the study instance UID. If `crypto_key` is not set, then `kms_wrapped` is used to calculate the date shift. If neither is set, a default key is generated for each de-identify operation. Must not be set if `kms_wrapped` is set."
        },
        "kmsWrapped": {
          "$ref": "#/types/google-native:healthcare%2Fv1:KmsWrappedCryptoKey",
          "description": "KMS wrapped key. If `kms_wrapped` is not set, then `crypto_key` is used to calculate the date shift. If neither is set, a default key is generated for each de-identify operation. Must not be set if `crypto_key` is set."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:DateShiftConfigResponse": {
      "description": "Shift a date forward or backward in time by a random amount which is consistent for a given patient and crypto key combination.",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "An AES 128/192/256 bit key. The date shift is computed based on this key and the patient ID. If the patient ID is empty for a DICOM resource, the date shift is computed based on this key and the study instance UID. If `crypto_key` is not set, then `kms_wrapped` is used to calculate the date shift. If neither is set, a default key is generated for each de-identify operation. Must not be set if `kms_wrapped` is set."
        },
        "kmsWrapped": {
          "$ref": "#/types/google-native:healthcare%2Fv1:KmsWrappedCryptoKeyResponse",
          "description": "KMS wrapped key. If `kms_wrapped` is not set, then `crypto_key` is used to calculate the date shift. If neither is set, a default key is generated for each de-identify operation. Must not be set if `crypto_key` is set."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey",
        "kmsWrapped"
      ]
    },
    "google-native:healthcare/v1:DeidentifiedStoreDestination": {
      "description": "Contains configuration for streaming de-identified FHIR export.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DeidentifyConfig",
          "description": "The configuration to use when de-identifying resources that are added to this store."
        },
        "store": {
          "type": "string",
          "description": "The full resource name of a Cloud Healthcare FHIR store, for example, `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/fhirStores/{fhir_store_id}`."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:DeidentifiedStoreDestinationResponse": {
      "description": "Contains configuration for streaming de-identified FHIR export.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DeidentifyConfigResponse",
          "description": "The configuration to use when de-identifying resources that are added to this store."
        },
        "store": {
          "type": "string",
          "description": "The full resource name of a Cloud Healthcare FHIR store, for example, `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/fhirStores/{fhir_store_id}`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "store"
      ]
    },
    "google-native:healthcare/v1:DeidentifyConfig": {
      "description": "Configures de-id options specific to different types of content. Each submessage customizes the handling of an https://tools.ietf.org/html/rfc6838 media type or subtype. Configs are applied in a nested manner at runtime.",
      "properties": {
        "dicom": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DicomConfig",
          "description": "Configures de-id of application/DICOM content."
        },
        "fhir": {
          "$ref": "#/types/google-native:healthcare%2Fv1:FhirConfig",
          "description": "Configures de-id of application/FHIR content."
        },
        "image": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ImageConfig",
          "description": "Configures de-identification of image pixels wherever they are found in the source_dataset."
        },
        "text": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TextConfig",
          "description": "Configures de-identification of text wherever it is found in the source_dataset."
        },
        "useRegionalDataProcessing": {
          "type": "boolean",
          "description": "Ensures in-flight data remains in the region of origin during de-identification. Using this option results in a significant reduction of throughput, and is not compatible with `LOCATION` or `ORGANIZATION_NAME` infoTypes. `LOCATION` must be excluded within TextConfig, and must also be excluded within ImageConfig if image redaction is required."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:DeidentifyConfigResponse": {
      "description": "Configures de-id options specific to different types of content. Each submessage customizes the handling of an https://tools.ietf.org/html/rfc6838 media type or subtype. Configs are applied in a nested manner at runtime.",
      "properties": {
        "dicom": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DicomConfigResponse",
          "description": "Configures de-id of application/DICOM content."
        },
        "fhir": {
          "$ref": "#/types/google-native:healthcare%2Fv1:FhirConfigResponse",
          "description": "Configures de-id of application/FHIR content."
        },
        "image": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ImageConfigResponse",
          "description": "Configures de-identification of image pixels wherever they are found in the source_dataset."
        },
        "text": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TextConfigResponse",
          "description": "Configures de-identification of text wherever it is found in the source_dataset."
        },
        "useRegionalDataProcessing": {
          "type": "boolean",
          "description": "Ensures in-flight data remains in the region of origin during de-identification. Using this option results in a significant reduction of throughput, and is not compatible with `LOCATION` or `ORGANIZATION_NAME` infoTypes. `LOCATION` must be excluded within TextConfig, and must also be excluded within ImageConfig if image redaction is required."
        }
      },
      "type": "object",
      "required": [
        "dicom",
        "fhir",
        "image",
        "text",
        "useRegionalDataProcessing"
      ]
    },
    "google-native:healthcare/v1:DicomConfig": {
      "description": "Specifies the parameters needed for de-identification of DICOM stores.",
      "properties": {
        "filterProfile": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DicomConfigFilterProfile",
          "description": "Tag filtering profile that determines which tags to keep/remove."
        },
        "keepList": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TagFilterList",
          "description": "List of tags to keep. Remove all other tags."
        },
        "removeList": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TagFilterList",
          "description": "List of tags to remove. Keep all other tags."
        },
        "skipIdRedaction": {
          "type": "boolean",
          "description": "If true, skip replacing StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, and MediaStorageSOPInstanceUID and leave them untouched. The Cloud Healthcare API regenerates these UIDs by default based on the DICOM Standard's reasoning: \"Whilst these UIDs cannot be mapped directly to an individual out of context, given access to the original images, or to a database of the original images containing the UIDs, it would be possible to recover the individual's identity.\" http://dicom.nema.org/medical/dicom/current/output/chtml/part15/sect_E.3.9.html"
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:DicomConfigFilterProfile": {
      "description": "Tag filtering profile that determines which tags to keep/remove.",
      "type": "string",
      "enum": [
        {
          "name": "TagFilterProfileUnspecified",
          "description": "No tag filtration profile provided. Same as KEEP_ALL_PROFILE.",
          "value": "TAG_FILTER_PROFILE_UNSPECIFIED"
        },
        {
          "name": "MinimalKeepListProfile",
          "description": "Keep only tags required to produce valid DICOM.",
          "value": "MINIMAL_KEEP_LIST_PROFILE"
        },
        {
          "name": "AttributeConfidentialityBasicProfile",
          "description": "Remove tags based on DICOM Standard's Attribute Confidentiality Basic Profile (DICOM Standard Edition 2018e) http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/chapter_E.html.",
          "value": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE"
        },
        {
          "name": "KeepAllProfile",
          "description": "Keep all tags.",
          "value": "KEEP_ALL_PROFILE"
        },
        {
          "name": "DeidentifyTagContents",
          "description": "Inspects within tag contents and replaces sensitive text. The process can be configured using the TextConfig. Applies to all tags with the following Value Representation names: AE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS",
          "value": "DEIDENTIFY_TAG_CONTENTS"
        }
      ]
    },
    "google-native:healthcare/v1:DicomConfigResponse": {
      "description": "Specifies the parameters needed for de-identification of DICOM stores.",
      "properties": {
        "filterProfile": {
          "type": "string",
          "description": "Tag filtering profile that determines which tags to keep/remove."
        },
        "keepList": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TagFilterListResponse",
          "description": "List of tags to keep. Remove all other tags."
        },
        "removeList": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TagFilterListResponse",
          "description": "List of tags to remove. Keep all other tags."
        },
        "skipIdRedaction": {
          "type": "boolean",
          "description": "If true, skip replacing StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, and MediaStorageSOPInstanceUID and leave them untouched. The Cloud Healthcare API regenerates these UIDs by default based on the DICOM Standard's reasoning: \"Whilst these UIDs cannot be mapped directly to an individual out of context, given access to the original images, or to a database of the original images containing the UIDs, it would be possible to recover the individual's identity.\" http://dicom.nema.org/medical/dicom/current/output/chtml/part15/sect_E.3.9.html"
        }
      },
      "type": "object",
      "required": [
        "filterProfile",
        "keepList",
        "removeList",
        "skipIdRedaction"
      ]
    },
    "google-native:healthcare/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:healthcare/v1:FhirConfig": {
      "description": "Specifies how to handle de-identification of a FHIR store.",
      "properties": {
        "defaultKeepExtensions": {
          "type": "boolean",
          "description": "The behaviour for handling FHIR extensions that aren't otherwise specified for de-identification. If true, all extensions are preserved during de-identification by default. If false or unspecified, all extensions are removed during de-identification by default."
        },
        "fieldMetadataList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:FieldMetadata"
          },
          "description": "Specifies FHIR paths to match and how to transform them. Any field that is not matched by a FieldMetadata is passed through to the output dataset unmodified. All extensions will be processed according to `default_keep_extensions`."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:FhirConfigResponse": {
      "description": "Specifies how to handle de-identification of a FHIR store.",
      "properties": {
        "defaultKeepExtensions": {
          "type": "boolean",
          "description": "The behaviour for handling FHIR extensions that aren't otherwise specified for de-identification. If true, all extensions are preserved during de-identification by default. If false or unspecified, all extensions are removed during de-identification by default."
        },
        "fieldMetadataList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:FieldMetadataResponse"
          },
          "description": "Specifies FHIR paths to match and how to transform them. Any field that is not matched by a FieldMetadata is passed through to the output dataset unmodified. All extensions will be processed according to `default_keep_extensions`."
        }
      },
      "type": "object",
      "required": [
        "defaultKeepExtensions",
        "fieldMetadataList"
      ]
    },
    "google-native:healthcare/v1:FhirNotificationConfig": {
      "description": "Contains the configuration for FHIR notifications.",
      "properties": {
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. The notification is a `PubsubMessage` with the following fields: * `PubsubMessage.Data` contains the resource name. * `PubsubMessage.MessageId` is the ID of this notification. It is guaranteed to be unique within the topic. * `PubsubMessage.PublishTime` is the time when the message was published. Note that notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. The Cloud Healthcare API service account, service-@gcp-sa-healthcare.iam.gserviceaccount.com, must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail (https://cloud.google.com/healthcare-api/docs/permissions-healthcare-api-gcp-products#dicom_fhir_and_hl7v2_store_cloud_pubsub_permissions). If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare-api/docs/how-tos/logging)."
        },
        "sendFullResource": {
          "type": "boolean",
          "description": "Whether to send full FHIR resource to this Pub/Sub topic."
        },
        "sendPreviousResourceOnDelete": {
          "type": "boolean",
          "description": "Whether to send full FHIR resource to this Pub/Sub topic for deleting FHIR resource. Note that setting this to true does not guarantee that all previous resources will be sent in the format of full FHIR resource. When a resource change is too large or during heavy traffic, only the resource name will be sent. Clients should always check the \"payloadType\" label from a Pub/Sub message to determine whether it needs to fetch the full previous resource as a separate operation."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:FhirNotificationConfigResponse": {
      "description": "Contains the configuration for FHIR notifications.",
      "properties": {
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. The notification is a `PubsubMessage` with the following fields: * `PubsubMessage.Data` contains the resource name. * `PubsubMessage.MessageId` is the ID of this notification. It is guaranteed to be unique within the topic. * `PubsubMessage.PublishTime` is the time when the message was published. Note that notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. The Cloud Healthcare API service account, service-@gcp-sa-healthcare.iam.gserviceaccount.com, must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail (https://cloud.google.com/healthcare-api/docs/permissions-healthcare-api-gcp-products#dicom_fhir_and_hl7v2_store_cloud_pubsub_permissions). If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare-api/docs/how-tos/logging)."
        },
        "sendFullResource": {
          "type": "boolean",
          "description": "Whether to send full FHIR resource to this Pub/Sub topic."
        },
        "sendPreviousResourceOnDelete": {
          "type": "boolean",
          "description": "Whether to send full FHIR resource to this Pub/Sub topic for deleting FHIR resource. Note that setting this to true does not guarantee that all previous resources will be sent in the format of full FHIR resource. When a resource change is too large or during heavy traffic, only the resource name will be sent. Clients should always check the \"payloadType\" label from a Pub/Sub message to determine whether it needs to fetch the full previous resource as a separate operation."
        }
      },
      "type": "object",
      "required": [
        "pubsubTopic",
        "sendFullResource",
        "sendPreviousResourceOnDelete"
      ]
    },
    "google-native:healthcare/v1:FhirStoreComplexDataTypeReferenceParsing": {
      "description": "Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources.",
      "type": "string",
      "enum": [
        {
          "name": "ComplexDataTypeReferenceParsingUnspecified",
          "description": "No parsing behavior specified. This is the same as DISABLED for backwards compatibility.",
          "value": "COMPLEX_DATA_TYPE_REFERENCE_PARSING_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "References in complex data types are ignored.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "References in complex data types are parsed.",
          "value": "ENABLED"
        }
      ]
    },
    "google-native:healthcare/v1:FhirStoreVersion": {
      "description": "Immutable. The FHIR specification version that this FHIR store supports natively. This field is immutable after store creation. Requests are rejected if they contain FHIR resources of a different version. Version is required for every FHIR store.",
      "type": "string",
      "enum": [
        {
          "name": "VersionUnspecified",
          "description": "Users must specify a version on store creation or an error is returned.",
          "value": "VERSION_UNSPECIFIED"
        },
        {
          "name": "Dstu2",
          "description": "Draft Standard for Trial Use, [Release 2](https://www.hl7.org/fhir/DSTU2)",
          "value": "DSTU2"
        },
        {
          "name": "Stu3",
          "description": "Standard for Trial Use, [Release 3](https://www.hl7.org/fhir/STU3)",
          "value": "STU3"
        },
        {
          "name": "R4",
          "description": "[Release 4](https://www.hl7.org/fhir/R4)",
          "value": "R4"
        }
      ]
    },
    "google-native:healthcare/v1:Field": {
      "description": "A (sub) field of a type.",
      "properties": {
        "maxOccurs": {
          "type": "integer",
          "description": "The maximum number of times this field can be repeated. 0 or -1 means unbounded."
        },
        "minOccurs": {
          "type": "integer",
          "description": "The minimum number of times this field must be present/repeated."
        },
        "name": {
          "type": "string",
          "description": "The name of the field. For example, \"PID-1\" or just \"1\"."
        },
        "table": {
          "type": "string",
          "description": "The HL7v2 table this field refers to. For example, PID-15 (Patient's Primary Language) usually refers to table \"0296\"."
        },
        "type": {
          "type": "string",
          "description": "The type of this field. A Type with this name must be defined in an Hl7TypesConfig."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:FieldMetadata": {
      "description": "Specifies FHIR paths to match, and how to handle de-identification of matching fields.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:healthcare%2Fv1:FieldMetadataAction",
          "description": "Deidentify action for one field."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of paths to FHIR fields to be redacted. Each path is a period-separated list where each component is either a field name or FHIR type name, for example: Patient, HumanName. For \"choice\" types (those defined in the FHIR spec with the form: field[x]) we use two separate components. For example, \"deceasedAge.unit\" is matched by \"Deceased.Age.unit\". Supported types are: AdministrativeGenderCode, Base64Binary, Boolean, Code, Date, DateTime, Decimal, HumanName, Id, Instant, Integer, LanguageCode, Markdown, Oid, PositiveInt, String, UnsignedInt, Uri, Uuid, Xhtml."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:FieldMetadataAction": {
      "description": "Deidentify action for one field.",
      "type": "string",
      "enum": [
        {
          "name": "ActionUnspecified",
          "description": "No action specified.",
          "value": "ACTION_UNSPECIFIED"
        },
        {
          "name": "Transform",
          "description": "Transform the entire field.",
          "value": "TRANSFORM"
        },
        {
          "name": "InspectAndTransform",
          "description": "Inspect and transform any found PHI.",
          "value": "INSPECT_AND_TRANSFORM"
        },
        {
          "name": "DoNotTransform",
          "description": "Do not transform.",
          "value": "DO_NOT_TRANSFORM"
        }
      ]
    },
    "google-native:healthcare/v1:FieldMetadataResponse": {
      "description": "Specifies FHIR paths to match, and how to handle de-identification of matching fields.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Deidentify action for one field."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of paths to FHIR fields to be redacted. Each path is a period-separated list where each component is either a field name or FHIR type name, for example: Patient, HumanName. For \"choice\" types (those defined in the FHIR spec with the form: field[x]) we use two separate components. For example, \"deceasedAge.unit\" is matched by \"Deceased.Age.unit\". Supported types are: AdministrativeGenderCode, Base64Binary, Boolean, Code, Date, DateTime, Decimal, HumanName, Id, Instant, Integer, LanguageCode, Markdown, Oid, PositiveInt, String, UnsignedInt, Uri, Uuid, Xhtml."
        }
      },
      "type": "object",
      "required": [
        "action",
        "paths"
      ]
    },
    "google-native:healthcare/v1:FieldResponse": {
      "description": "A (sub) field of a type.",
      "properties": {
        "maxOccurs": {
          "type": "integer",
          "description": "The maximum number of times this field can be repeated. 0 or -1 means unbounded."
        },
        "minOccurs": {
          "type": "integer",
          "description": "The minimum number of times this field must be present/repeated."
        },
        "name": {
          "type": "string",
          "description": "The name of the field. For example, \"PID-1\" or just \"1\"."
        },
        "table": {
          "type": "string",
          "description": "The HL7v2 table this field refers to. For example, PID-15 (Patient's Primary Language) usually refers to table \"0296\"."
        },
        "type": {
          "type": "string",
          "description": "The type of this field. A Type with this name must be defined in an Hl7TypesConfig."
        }
      },
      "type": "object",
      "required": [
        "maxOccurs",
        "minOccurs",
        "name",
        "table",
        "type"
      ]
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1ConsentPolicy": {
      "description": "Represents a user's consent in terms of the resources that can be accessed and under what conditions.",
      "properties": {
        "authorizationRule": {
          "$ref": "#/types/google-native:healthcare%2Fv1:Expr",
          "description": "The request conditions to meet to grant access. In addition to any supported comparison operators, authorization rules may have `IN` operator as well as at most 10 logical operators that are limited to `AND` (`&&`), `OR` (`||`)."
        },
        "resourceAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Attribute"
          },
          "description": "The resources that this policy applies to. A resource is a match if it matches all the attributes listed here. If empty, this policy applies to all User data mappings for the given user."
        }
      },
      "type": "object",
      "required": [
        "authorizationRule"
      ]
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1ConsentPolicyResponse": {
      "description": "Represents a user's consent in terms of the resources that can be accessed and under what conditions.",
      "properties": {
        "authorizationRule": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ExprResponse",
          "description": "The request conditions to meet to grant access. In addition to any supported comparison operators, authorization rules may have `IN` operator as well as at most 10 logical operators that are limited to `AND` (`&&`), `OR` (`||`)."
        },
        "resourceAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AttributeResponse"
          },
          "description": "The resources that this policy applies to. A resource is a match if it matches all the attributes listed here. If empty, this policy applies to all User data mappings for the given user."
        }
      },
      "type": "object",
      "required": [
        "authorizationRule",
        "resourceAttributes"
      ]
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1DicomBigQueryDestination": {
      "description": "The BigQuery table where the server writes the output.",
      "properties": {
        "force": {
          "type": "boolean",
          "description": "Use `write_disposition` instead. If `write_disposition` is specified, this parameter is ignored. force=false is equivalent to write_disposition=WRITE_EMPTY and force=true is equivalent to write_disposition=WRITE_TRUNCATE."
        },
        "tableUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2000 characters long, in the format `bq://projectId.bqDatasetId.tableId`"
        },
        "writeDisposition": {
          "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1DicomBigQueryDestinationWriteDisposition",
          "description": "Determines whether the existing table in the destination is to be overwritten or appended to. If a write_disposition is specified, the `force` parameter is ignored."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1DicomBigQueryDestinationResponse": {
      "description": "The BigQuery table where the server writes the output.",
      "properties": {
        "force": {
          "type": "boolean",
          "description": "Use `write_disposition` instead. If `write_disposition` is specified, this parameter is ignored. force=false is equivalent to write_disposition=WRITE_EMPTY and force=true is equivalent to write_disposition=WRITE_TRUNCATE."
        },
        "tableUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2000 characters long, in the format `bq://projectId.bqDatasetId.tableId`"
        },
        "writeDisposition": {
          "type": "string",
          "description": "Determines whether the existing table in the destination is to be overwritten or appended to. If a write_disposition is specified, the `force` parameter is ignored."
        }
      },
      "type": "object",
      "required": [
        "force",
        "tableUri",
        "writeDisposition"
      ]
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1DicomBigQueryDestinationWriteDisposition": {
      "description": "Determines whether the existing table in the destination is to be overwritten or appended to. If a write_disposition is specified, the `force` parameter is ignored.",
      "type": "string",
      "enum": [
        {
          "name": "WriteDispositionUnspecified",
          "description": "Default behavior is the same as WRITE_EMPTY.",
          "value": "WRITE_DISPOSITION_UNSPECIFIED"
        },
        {
          "name": "WriteEmpty",
          "description": "Only export data if the destination table is empty.",
          "value": "WRITE_EMPTY"
        },
        {
          "name": "WriteTruncate",
          "description": "Erase all existing data in the destination table before writing the instances.",
          "value": "WRITE_TRUNCATE"
        },
        {
          "name": "WriteAppend",
          "description": "Append data to the destination table.",
          "value": "WRITE_APPEND"
        }
      ]
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1DicomStreamConfig": {
      "description": "StreamConfig specifies configuration for a streaming DICOM export.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1DicomBigQueryDestination",
          "description": "Results are appended to this table. The server creates a new table in the given BigQuery dataset if the specified table does not exist. To enable the Cloud Healthcare API to write to your BigQuery table, you must give the Cloud Healthcare API service account the bigquery.dataEditor role. The service account is: `service-{PROJECT_NUMBER}@gcp-sa-healthcare.iam.gserviceaccount.com`. The PROJECT_NUMBER identifies the project that the DICOM store resides in. To get the project number, go to the Cloud Console Dashboard. It is recommended to not have a custom schema in the destination table which could conflict with the schema created by the Cloud Healthcare API. Instance deletions are not applied to the destination table. The destination's table schema will be automatically updated in case a new instance's data is incompatible with the current schema. The schema should not be updated manually as this can cause incompatibilies that cannot be resolved automatically. One resolution in this case is to delete the incompatible table and let the server recreate one, though the newly created table only contains data after the table recreation. BigQuery imposes a 1 MB limit on streaming insert row size, therefore any instance that generates more than 1 MB of BigQuery data will not be streamed. If an instance cannot be streamed to BigQuery, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1DicomStreamConfigResponse": {
      "description": "StreamConfig specifies configuration for a streaming DICOM export.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1DicomBigQueryDestinationResponse",
          "description": "Results are appended to this table. The server creates a new table in the given BigQuery dataset if the specified table does not exist. To enable the Cloud Healthcare API to write to your BigQuery table, you must give the Cloud Healthcare API service account the bigquery.dataEditor role. The service account is: `service-{PROJECT_NUMBER}@gcp-sa-healthcare.iam.gserviceaccount.com`. The PROJECT_NUMBER identifies the project that the DICOM store resides in. To get the project number, go to the Cloud Console Dashboard. It is recommended to not have a custom schema in the destination table which could conflict with the schema created by the Cloud Healthcare API. Instance deletions are not applied to the destination table. The destination's table schema will be automatically updated in case a new instance's data is incompatible with the current schema. The schema should not be updated manually as this can cause incompatibilies that cannot be resolved automatically. One resolution in this case is to delete the incompatible table and let the server recreate one, though the newly created table only contains data after the table recreation. BigQuery imposes a 1 MB limit on streaming insert row size, therefore any instance that generates more than 1 MB of BigQuery data will not be streamed. If an instance cannot be streamed to BigQuery, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination"
      ]
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1FhirBigQueryDestination": {
      "description": "The configuration for exporting to BigQuery.",
      "properties": {
        "datasetUri": {
          "type": "string",
          "description": "BigQuery URI to an existing dataset, up to 2000 characters long, in the format `bq://projectId.bqDatasetId`."
        },
        "force": {
          "type": "boolean",
          "description": "If this flag is `TRUE`, all tables are deleted from the dataset before the new exported tables are written. If the flag is not set and the destination dataset contains tables, the export call returns an error. If `write_disposition` is specified, this parameter is ignored. force=false is equivalent to write_disposition=WRITE_EMPTY and force=true is equivalent to write_disposition=WRITE_TRUNCATE."
        },
        "schemaConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchemaConfig",
          "description": "The configuration for the exported BigQuery schema."
        },
        "writeDisposition": {
          "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1FhirBigQueryDestinationWriteDisposition",
          "description": "Determines if existing data in the destination dataset is overwritten, appended to, or not written if the tables contain data. If a write_disposition is specified, the `force` parameter is ignored."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1FhirBigQueryDestinationResponse": {
      "description": "The configuration for exporting to BigQuery.",
      "properties": {
        "datasetUri": {
          "type": "string",
          "description": "BigQuery URI to an existing dataset, up to 2000 characters long, in the format `bq://projectId.bqDatasetId`."
        },
        "force": {
          "type": "boolean",
          "description": "If this flag is `TRUE`, all tables are deleted from the dataset before the new exported tables are written. If the flag is not set and the destination dataset contains tables, the export call returns an error. If `write_disposition` is specified, this parameter is ignored. force=false is equivalent to write_disposition=WRITE_EMPTY and force=true is equivalent to write_disposition=WRITE_TRUNCATE."
        },
        "schemaConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchemaConfigResponse",
          "description": "The configuration for the exported BigQuery schema."
        },
        "writeDisposition": {
          "type": "string",
          "description": "Determines if existing data in the destination dataset is overwritten, appended to, or not written if the tables contain data. If a write_disposition is specified, the `force` parameter is ignored."
        }
      },
      "type": "object",
      "required": [
        "datasetUri",
        "force",
        "schemaConfig",
        "writeDisposition"
      ]
    },
    "google-native:healthcare/v1:GoogleCloudHealthcareV1FhirBigQueryDestinationWriteDisposition": {
      "description": "Determines if existing data in the destination dataset is overwritten, appended to, or not written if the tables contain data. If a write_disposition is specified, the `force` parameter is ignored.",
      "type": "string",
      "enum": [
        {
          "name": "WriteDispositionUnspecified",
          "description": "Default behavior is the same as WRITE_EMPTY.",
          "value": "WRITE_DISPOSITION_UNSPECIFIED"
        },
        {
          "name": "WriteEmpty",
          "description": "Only export data if the destination tables are empty.",
          "value": "WRITE_EMPTY"
        },
        {
          "name": "WriteTruncate",
          "description": "Erase all existing data in the destination tables before writing the FHIR resources.",
          "value": "WRITE_TRUNCATE"
        },
        {
          "name": "WriteAppend",
          "description": "Append data to the destination tables.",
          "value": "WRITE_APPEND"
        }
      ]
    },
    "google-native:healthcare/v1:Hl7SchemaConfig": {
      "description": "Root config message for HL7v2 schema. This contains a schema structure of groups and segments, and filters that determine which messages to apply the schema structure to.",
      "properties": {
        "messageSchemaConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from each HL7v2 message type and trigger event pair, such as ADT_A04, to its schema configuration root group."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:VersionSource"
          },
          "description": "Each VersionSource is tested and only if they all match is the schema used for the message."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:Hl7SchemaConfigResponse": {
      "description": "Root config message for HL7v2 schema. This contains a schema structure of groups and segments, and filters that determine which messages to apply the schema structure to.",
      "properties": {
        "messageSchemaConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from each HL7v2 message type and trigger event pair, such as ADT_A04, to its schema configuration root group."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:VersionSourceResponse"
          },
          "description": "Each VersionSource is tested and only if they all match is the schema used for the message."
        }
      },
      "type": "object",
      "required": [
        "messageSchemaConfigs",
        "version"
      ]
    },
    "google-native:healthcare/v1:Hl7TypesConfig": {
      "description": "Root config for HL7v2 datatype definitions for a specific HL7v2 version.",
      "properties": {
        "type": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Type"
          },
          "description": "The HL7v2 type definitions."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:VersionSource"
          },
          "description": "The version selectors that this config applies to. A message must match ALL version sources to apply."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:Hl7TypesConfigResponse": {
      "description": "Root config for HL7v2 datatype definitions for a specific HL7v2 version.",
      "properties": {
        "type": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:TypeResponse"
          },
          "description": "The HL7v2 type definitions."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:VersionSourceResponse"
          },
          "description": "The version selectors that this config applies to. A message must match ALL version sources to apply."
        }
      },
      "type": "object",
      "required": [
        "type",
        "version"
      ]
    },
    "google-native:healthcare/v1:Hl7V2NotificationConfig": {
      "description": "Specifies where and whether to send notifications upon changes to a data store.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Restricts notifications sent for messages matching a filter. If this is empty, all messages are matched. The following syntax is available: * A string field value can be written as text inside quotation marks, for example `\"query text\"`. The only valid relational operation for text fields is equality (`=`), where text is searched within the field, rather than having the field be equal to the text. For example, `\"Comment = great\"` returns messages with `great` in the comment field. * A number field value can be written as an integer, a decimal, or an exponential. The valid relational operators for number fields are the equality operator (`=`), along with the less than/greater than operators (`<`, `<=`, `>`, `>=`). Note that there is no inequality (`!=`) operator. You can prepend the `NOT` operator to an expression to negate it. * A date field value must be written in `yyyy-mm-dd` form. Fields with date and time use the RFC3339 time format. Leading zeros are required for one-digit months and days. The valid relational operators for date fields are the equality operator (`=`) , along with the less than/greater than operators (`<`, `<=`, `>`, `>=`). Note that there is no inequality (`!=`) operator. You can prepend the `NOT` operator to an expression to negate it. * Multiple field query expressions can be combined in one query by adding `AND` or `OR` operators between the expressions. If a boolean operator appears within a quoted string, it is not treated as special, it's just another part of the character string to be matched. You can prepend the `NOT` operator to an expression to negate it. The following fields and functions are available for filtering: * `message_type`, from the MSH-9.1 field. For example, `NOT message_type = \"ADT\"`. * `send_date` or `sendDate`, the YYYY-MM-DD date the message was sent in the dataset's time_zone, from the MSH-7 segment. For example, `send_date < \"2017-01-02\"`. * `send_time`, the timestamp when the message was sent, using the RFC3339 time format for comparisons, from the MSH-7 segment. For example, `send_time < \"2017-01-02T00:00:00-05:00\"`. * `create_time`, the timestamp when the message was created in the HL7v2 store. Use the RFC3339 time format for comparisons. For example, `create_time < \"2017-01-02T00:00:00-05:00\"`. * `send_facility`, the care center that the message came from, from the MSH-4 segment. For example, `send_facility = \"ABC\"`. * `PatientId(value, type)`, which matches if the message lists a patient having an ID of the given value and type in the PID-2, PID-3, or PID-4 segments. For example, `PatientId(\"123456\", \"MRN\")`. * `labels.x`, a string value of the label with key `x` as set using the Message.labels map. For example, `labels.\"priority\"=\"high\"`. The operator `:*` can be used to assert the existence of a label. For example, `labels.\"priority\":*`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. The notification is a `PubsubMessage` with the following fields: * `PubsubMessage.Data` contains the resource name. * `PubsubMessage.MessageId` is the ID of this notification. It's guaranteed to be unique within the topic. * `PubsubMessage.PublishTime` is the time when the message was published. Note that notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. The Cloud Healthcare API service account, service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com, must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail. If a notification cannot be published to Pub/Sub, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:Hl7V2NotificationConfigResponse": {
      "description": "Specifies where and whether to send notifications upon changes to a data store.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Restricts notifications sent for messages matching a filter. If this is empty, all messages are matched. The following syntax is available: * A string field value can be written as text inside quotation marks, for example `\"query text\"`. The only valid relational operation for text fields is equality (`=`), where text is searched within the field, rather than having the field be equal to the text. For example, `\"Comment = great\"` returns messages with `great` in the comment field. * A number field value can be written as an integer, a decimal, or an exponential. The valid relational operators for number fields are the equality operator (`=`), along with the less than/greater than operators (`<`, `<=`, `>`, `>=`). Note that there is no inequality (`!=`) operator. You can prepend the `NOT` operator to an expression to negate it. * A date field value must be written in `yyyy-mm-dd` form. Fields with date and time use the RFC3339 time format. Leading zeros are required for one-digit months and days. The valid relational operators for date fields are the equality operator (`=`) , along with the less than/greater than operators (`<`, `<=`, `>`, `>=`). Note that there is no inequality (`!=`) operator. You can prepend the `NOT` operator to an expression to negate it. * Multiple field query expressions can be combined in one query by adding `AND` or `OR` operators between the expressions. If a boolean operator appears within a quoted string, it is not treated as special, it's just another part of the character string to be matched. You can prepend the `NOT` operator to an expression to negate it. The following fields and functions are available for filtering: * `message_type`, from the MSH-9.1 field. For example, `NOT message_type = \"ADT\"`. * `send_date` or `sendDate`, the YYYY-MM-DD date the message was sent in the dataset's time_zone, from the MSH-7 segment. For example, `send_date < \"2017-01-02\"`. * `send_time`, the timestamp when the message was sent, using the RFC3339 time format for comparisons, from the MSH-7 segment. For example, `send_time < \"2017-01-02T00:00:00-05:00\"`. * `create_time`, the timestamp when the message was created in the HL7v2 store. Use the RFC3339 time format for comparisons. For example, `create_time < \"2017-01-02T00:00:00-05:00\"`. * `send_facility`, the care center that the message came from, from the MSH-4 segment. For example, `send_facility = \"ABC\"`. * `PatientId(value, type)`, which matches if the message lists a patient having an ID of the given value and type in the PID-2, PID-3, or PID-4 segments. For example, `PatientId(\"123456\", \"MRN\")`. * `labels.x`, a string value of the label with key `x` as set using the Message.labels map. For example, `labels.\"priority\"=\"high\"`. The operator `:*` can be used to assert the existence of a label. For example, `labels.\"priority\":*`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. The notification is a `PubsubMessage` with the following fields: * `PubsubMessage.Data` contains the resource name. * `PubsubMessage.MessageId` is the ID of this notification. It's guaranteed to be unique within the topic. * `PubsubMessage.PublishTime` is the time when the message was published. Note that notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. The Cloud Healthcare API service account, service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com, must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail. If a notification cannot be published to Pub/Sub, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "pubsubTopic"
      ]
    },
    "google-native:healthcare/v1:Image": {
      "description": "Raw bytes representing consent artifact content.",
      "properties": {
        "gcsUri": {
          "type": "string",
          "description": "Input only. Points to a Cloud Storage URI containing the consent artifact content. The URI must be in the following format: `gs://{bucket_id}/{object_id}`. The Cloud Healthcare API service account must have the `roles/storage.objectViewer` Cloud IAM role for this Cloud Storage location. The consent artifact content at this URI is copied to a Cloud Storage location managed by the Cloud Healthcare API. Responses to fetching requests return the consent artifact content in raw_bytes."
        },
        "rawBytes": {
          "type": "string",
          "description": "Consent artifact content represented as a stream of bytes. This field is populated when returned in GetConsentArtifact response, but not included in CreateConsentArtifact and ListConsentArtifact response."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:ImageConfig": {
      "description": "Specifies how to handle de-identification of image pixels.",
      "properties": {
        "textRedactionMode": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ImageConfigTextRedactionMode",
          "description": "Determines how to redact text from image."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:ImageConfigResponse": {
      "description": "Specifies how to handle de-identification of image pixels.",
      "properties": {
        "textRedactionMode": {
          "type": "string",
          "description": "Determines how to redact text from image."
        }
      },
      "type": "object",
      "required": [
        "textRedactionMode"
      ]
    },
    "google-native:healthcare/v1:ImageConfigTextRedactionMode": {
      "description": "Determines how to redact text from image.",
      "type": "string",
      "enum": [
        {
          "name": "TextRedactionModeUnspecified",
          "description": "No text redaction specified. Same as REDACT_NO_TEXT.",
          "value": "TEXT_REDACTION_MODE_UNSPECIFIED"
        },
        {
          "name": "RedactAllText",
          "description": "Redact all text.",
          "value": "REDACT_ALL_TEXT"
        },
        {
          "name": "RedactSensitiveText",
          "description": "Redact sensitive text. Uses the set of [Default DICOM InfoTypes](https://cloud.google.com/healthcare-api/docs/how-tos/dicom-deidentify#default_dicom_infotypes).",
          "value": "REDACT_SENSITIVE_TEXT"
        },
        {
          "name": "RedactNoText",
          "description": "Do not redact text.",
          "value": "REDACT_NO_TEXT"
        }
      ]
    },
    "google-native:healthcare/v1:ImageResponse": {
      "description": "Raw bytes representing consent artifact content.",
      "properties": {
        "gcsUri": {
          "type": "string",
          "description": "Input only. Points to a Cloud Storage URI containing the consent artifact content. The URI must be in the following format: `gs://{bucket_id}/{object_id}`. The Cloud Healthcare API service account must have the `roles/storage.objectViewer` Cloud IAM role for this Cloud Storage location. The consent artifact content at this URI is copied to a Cloud Storage location managed by the Cloud Healthcare API. Responses to fetching requests return the consent artifact content in raw_bytes."
        },
        "rawBytes": {
          "type": "string",
          "description": "Consent artifact content represented as a stream of bytes. This field is populated when returned in GetConsentArtifact response, but not included in CreateConsentArtifact and ListConsentArtifact response."
        }
      },
      "type": "object",
      "required": [
        "gcsUri",
        "rawBytes"
      ]
    },
    "google-native:healthcare/v1:InfoTypeTransformation": {
      "description": "A transformation to apply to text that is identified as a specific info_type.",
      "properties": {
        "characterMaskConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:CharacterMaskConfig",
          "description": "Config for character mask."
        },
        "cryptoHashConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:CryptoHashConfig",
          "description": "Config for crypto hash."
        },
        "dateShiftConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DateShiftConfig",
          "description": "Config for date shift."
        },
        "infoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "InfoTypes to apply this transformation to. If this is not specified, the transformation applies to any info_type."
        },
        "redactConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:RedactConfig",
          "description": "Config for text redaction."
        },
        "replaceWithInfoTypeConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ReplaceWithInfoTypeConfig",
          "description": "Config for replace with InfoType."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:InfoTypeTransformationResponse": {
      "description": "A transformation to apply to text that is identified as a specific info_type.",
      "properties": {
        "characterMaskConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:CharacterMaskConfigResponse",
          "description": "Config for character mask."
        },
        "cryptoHashConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:CryptoHashConfigResponse",
          "description": "Config for crypto hash."
        },
        "dateShiftConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DateShiftConfigResponse",
          "description": "Config for date shift."
        },
        "infoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "InfoTypes to apply this transformation to. If this is not specified, the transformation applies to any info_type."
        },
        "redactConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:RedactConfigResponse",
          "description": "Config for text redaction."
        },
        "replaceWithInfoTypeConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ReplaceWithInfoTypeConfigResponse",
          "description": "Config for replace with InfoType."
        }
      },
      "type": "object",
      "required": [
        "characterMaskConfig",
        "cryptoHashConfig",
        "dateShiftConfig",
        "infoTypes",
        "redactConfig",
        "replaceWithInfoTypeConfig"
      ]
    },
    "google-native:healthcare/v1:KmsWrappedCryptoKey": {
      "description": "Include to use an existing data crypto key wrapped by KMS. The wrapped key must be a 128-, 192-, or 256-bit key. The key must grant the Cloud IAM permission `cloudkms.cryptoKeyVersions.useToDecrypt` to the project's Cloud Healthcare Service Agent service account. For more information, see [Creating a wrapped key] (https://cloud.google.com/dlp/docs/create-wrapped-key).",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "The resource name of the KMS CryptoKey to use for unwrapping. For example, `projects/{project_id}/locations/{location_id}/keyRings/{keyring}/cryptoKeys/{key}`."
        },
        "wrappedKey": {
          "type": "string",
          "description": "The wrapped data crypto key."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey",
        "wrappedKey"
      ]
    },
    "google-native:healthcare/v1:KmsWrappedCryptoKeyResponse": {
      "description": "Include to use an existing data crypto key wrapped by KMS. The wrapped key must be a 128-, 192-, or 256-bit key. The key must grant the Cloud IAM permission `cloudkms.cryptoKeyVersions.useToDecrypt` to the project's Cloud Healthcare Service Agent service account. For more information, see [Creating a wrapped key] (https://cloud.google.com/dlp/docs/create-wrapped-key).",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "The resource name of the KMS CryptoKey to use for unwrapping. For example, `projects/{project_id}/locations/{location_id}/keyRings/{keyring}/cryptoKeys/{key}`."
        },
        "wrappedKey": {
          "type": "string",
          "description": "The wrapped data crypto key."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey",
        "wrappedKey"
      ]
    },
    "google-native:healthcare/v1:NotificationConfig": {
      "description": "Specifies where to send notifications upon changes to a data store.",
      "properties": {
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. PubsubMessage.Data contains the resource name. PubsubMessage.MessageId is the ID of this message. It is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message was published. Notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. Cloud Healthcare API service account must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail. If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging)). If the number of errors exceeds a certain rate, some aren't submitted. Note that not all operations trigger notifications, see [Configuring Pub/Sub notifications](https://cloud.google.com/healthcare/docs/how-tos/pubsub) for specific details."
        },
        "sendForBulkImport": {
          "type": "boolean",
          "description": "Indicates whether or not to send Pub/Sub notifications on bulk import. Only supported for DICOM imports."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:NotificationConfigResponse": {
      "description": "Specifies where to send notifications upon changes to a data store.",
      "properties": {
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. PubsubMessage.Data contains the resource name. PubsubMessage.MessageId is the ID of this message. It is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message was published. Notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. Cloud Healthcare API service account must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail. If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging)). If the number of errors exceeds a certain rate, some aren't submitted. Note that not all operations trigger notifications, see [Configuring Pub/Sub notifications](https://cloud.google.com/healthcare/docs/how-tos/pubsub) for specific details."
        },
        "sendForBulkImport": {
          "type": "boolean",
          "description": "Indicates whether or not to send Pub/Sub notifications on bulk import. Only supported for DICOM imports."
        }
      },
      "type": "object",
      "required": [
        "pubsubTopic",
        "sendForBulkImport"
      ]
    },
    "google-native:healthcare/v1:ParsedDataResponse": {
      "description": "The content of a HL7v2 message in a structured format.",
      "properties": {
        "segments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:SegmentResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "segments"
      ]
    },
    "google-native:healthcare/v1:ParserConfig": {
      "description": "The configuration for the parser. It determines how the server parses the messages.",
      "properties": {
        "allowNullHeader": {
          "type": "boolean",
          "description": "Determines whether messages with no header are allowed."
        },
        "schema": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchemaPackage",
          "description": "Schemas used to parse messages in this store, if schematized parsing is desired."
        },
        "segmentTerminator": {
          "type": "string",
          "description": "Byte(s) to use as the segment terminator. If this is unset, '\\r' is used as segment terminator, matching the HL7 version 2 specification."
        },
        "version": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ParserConfigVersion",
          "description": "Immutable. Determines the version of both the default parser to be used when `schema` is not given, as well as the schematized parser used when `schema` is specified. This field is immutable after HL7v2 store creation."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:ParserConfigResponse": {
      "description": "The configuration for the parser. It determines how the server parses the messages.",
      "properties": {
        "allowNullHeader": {
          "type": "boolean",
          "description": "Determines whether messages with no header are allowed."
        },
        "schema": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchemaPackageResponse",
          "description": "Schemas used to parse messages in this store, if schematized parsing is desired."
        },
        "segmentTerminator": {
          "type": "string",
          "description": "Byte(s) to use as the segment terminator. If this is unset, '\\r' is used as segment terminator, matching the HL7 version 2 specification."
        },
        "version": {
          "type": "string",
          "description": "Immutable. Determines the version of both the default parser to be used when `schema` is not given, as well as the schematized parser used when `schema` is specified. This field is immutable after HL7v2 store creation."
        }
      },
      "type": "object",
      "required": [
        "allowNullHeader",
        "schema",
        "segmentTerminator",
        "version"
      ]
    },
    "google-native:healthcare/v1:ParserConfigVersion": {
      "description": "Immutable. Determines the version of both the default parser to be used when `schema` is not given, as well as the schematized parser used when `schema` is specified. This field is immutable after HL7v2 store creation.",
      "type": "string",
      "enum": [
        {
          "name": "ParserVersionUnspecified",
          "description": "Unspecified parser version, equivalent to V1.",
          "value": "PARSER_VERSION_UNSPECIFIED"
        },
        {
          "name": "V1",
          "description": "The `parsed_data` includes every given non-empty message field except the Field Separator (MSH-1) field. As a result, the parsed MSH segment starts with the MSH-2 field and the field numbers are off-by-one with respect to the HL7 standard.",
          "value": "V1"
        },
        {
          "name": "V2",
          "description": "The `parsed_data` includes every given non-empty message field.",
          "value": "V2"
        },
        {
          "name": "V3",
          "description": "This version is the same as V2, with the following change. The `parsed_data` contains unescaped escaped field separators, component separators, sub-component separators, repetition separators, escape characters, and truncation characters. If `schema` is specified, the schematized parser uses improved parsing heuristics compared to previous versions.",
          "value": "V3"
        }
      ]
    },
    "google-native:healthcare/v1:PatientId": {
      "description": "A patient identifier and associated type.",
      "properties": {
        "type": {
          "type": "string",
          "description": "ID type. For example, MRN or NHS."
        },
        "value": {
          "type": "string",
          "description": "The patient's unique identifier."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:PatientIdResponse": {
      "description": "A patient identifier and associated type.",
      "properties": {
        "type": {
          "type": "string",
          "description": "ID type. For example, MRN or NHS."
        },
        "value": {
          "type": "string",
          "description": "The patient's unique identifier."
        }
      },
      "type": "object",
      "required": [
        "type",
        "value"
      ]
    },
    "google-native:healthcare/v1:RedactConfig": {
      "description": "Define how to redact sensitive values. Default behaviour is erase. For example, \"My name is Jane.\" becomes \"My name is .\"",
      "type": "object"
    },
    "google-native:healthcare/v1:RedactConfigResponse": {
      "description": "Define how to redact sensitive values. Default behaviour is erase. For example, \"My name is Jane.\" becomes \"My name is .\"",
      "type": "object"
    },
    "google-native:healthcare/v1:ReplaceWithInfoTypeConfig": {
      "description": "When using the INSPECT_AND_TRANSFORM action, each match is replaced with the name of the info_type. For example, \"My name is Jane\" becomes \"My name is [PERSON_NAME].\" The TRANSFORM action is equivalent to redacting.",
      "type": "object"
    },
    "google-native:healthcare/v1:ReplaceWithInfoTypeConfigResponse": {
      "description": "When using the INSPECT_AND_TRANSFORM action, each match is replaced with the name of the info_type. For example, \"My name is Jane\" becomes \"My name is [PERSON_NAME].\" The TRANSFORM action is equivalent to redacting.",
      "type": "object"
    },
    "google-native:healthcare/v1:SchemaConfig": {
      "description": "Configuration for the FHIR BigQuery schema. Determines how the server generates the schema.",
      "properties": {
        "lastUpdatedPartitionConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TimePartitioning",
          "description": "The configuration for exported BigQuery tables to be partitioned by FHIR resource's last updated time column."
        },
        "recursiveStructureDepth": {
          "type": "string",
          "description": "The depth for all recursive structures in the output analytics schema. For example, `concept` in the CodeSystem resource is a recursive structure; when the depth is 2, the CodeSystem table will have a column called `concept.concept` but not `concept.concept.concept`. If not specified or set to 0, the server will use the default value 2. The maximum depth allowed is 5."
        },
        "schemaType": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchemaConfigSchemaType",
          "description": "Specifies the output schema type. Schema type is required."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:SchemaConfigResponse": {
      "description": "Configuration for the FHIR BigQuery schema. Determines how the server generates the schema.",
      "properties": {
        "lastUpdatedPartitionConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TimePartitioningResponse",
          "description": "The configuration for exported BigQuery tables to be partitioned by FHIR resource's last updated time column."
        },
        "recursiveStructureDepth": {
          "type": "string",
          "description": "The depth for all recursive structures in the output analytics schema. For example, `concept` in the CodeSystem resource is a recursive structure; when the depth is 2, the CodeSystem table will have a column called `concept.concept` but not `concept.concept.concept`. If not specified or set to 0, the server will use the default value 2. The maximum depth allowed is 5."
        },
        "schemaType": {
          "type": "string",
          "description": "Specifies the output schema type. Schema type is required."
        }
      },
      "type": "object",
      "required": [
        "lastUpdatedPartitionConfig",
        "recursiveStructureDepth",
        "schemaType"
      ]
    },
    "google-native:healthcare/v1:SchemaConfigSchemaType": {
      "description": "Specifies the output schema type. Schema type is required.",
      "type": "string",
      "enum": [
        {
          "name": "SchemaTypeUnspecified",
          "description": "No schema type specified. This type is unsupported.",
          "value": "SCHEMA_TYPE_UNSPECIFIED"
        },
        {
          "name": "Analytics",
          "description": "Analytics schema defined by the FHIR community. See https://github.com/FHIR/sql-on-fhir/blob/master/sql-on-fhir.md. BigQuery only allows a maximum of 10,000 columns per table. Due to this limitation, the server will not generate schemas for fields of type `Resource`, which can hold any resource type. The affected fields are `Parameters.parameter.resource`, `Bundle.entry.resource`, and `Bundle.entry.response.outcome`. Analytics schema does not gracefully handle extensions with one or more occurrences, anaytics schema also does not handle contained resource.",
          "value": "ANALYTICS"
        },
        {
          "name": "AnalyticsV2",
          "description": "Analytics V2, similar to schema defined by the FHIR community, with added support for extensions with one or more occurrences and contained resources in stringified JSON. Analytics V2 uses more space in the destination table than Analytics V1. It is generally recommended to use Analytics V2 over Analytics.",
          "value": "ANALYTICS_V2"
        }
      ]
    },
    "google-native:healthcare/v1:SchemaPackage": {
      "description": "A schema package contains a set of schemas and type definitions.",
      "properties": {
        "ignoreMinOccurs": {
          "type": "boolean",
          "description": "Flag to ignore all min_occurs restrictions in the schema. This means that incoming messages can omit any group, segment, field, component, or subcomponent."
        },
        "schemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Hl7SchemaConfig"
          },
          "description": "Schema configs that are layered based on their VersionSources that match the incoming message. Schema configs present in higher indices override those in lower indices with the same message type and trigger event if their VersionSources all match an incoming message."
        },
        "schematizedParsingType": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchemaPackageSchematizedParsingType",
          "description": "Determines how messages that fail to parse are handled."
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Hl7TypesConfig"
          },
          "description": "Schema type definitions that are layered based on their VersionSources that match the incoming message. Type definitions present in higher indices override those in lower indices with the same type name if their VersionSources all match an incoming message."
        },
        "unexpectedSegmentHandling": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchemaPackageUnexpectedSegmentHandling",
          "description": "Determines how unexpected segments (segments not matched to the schema) are handled."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:SchemaPackageResponse": {
      "description": "A schema package contains a set of schemas and type definitions.",
      "properties": {
        "ignoreMinOccurs": {
          "type": "boolean",
          "description": "Flag to ignore all min_occurs restrictions in the schema. This means that incoming messages can omit any group, segment, field, component, or subcomponent."
        },
        "schemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Hl7SchemaConfigResponse"
          },
          "description": "Schema configs that are layered based on their VersionSources that match the incoming message. Schema configs present in higher indices override those in lower indices with the same message type and trigger event if their VersionSources all match an incoming message."
        },
        "schematizedParsingType": {
          "type": "string",
          "description": "Determines how messages that fail to parse are handled."
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Hl7TypesConfigResponse"
          },
          "description": "Schema type definitions that are layered based on their VersionSources that match the incoming message. Type definitions present in higher indices override those in lower indices with the same type name if their VersionSources all match an incoming message."
        },
        "unexpectedSegmentHandling": {
          "type": "string",
          "description": "Determines how unexpected segments (segments not matched to the schema) are handled."
        }
      },
      "type": "object",
      "required": [
        "ignoreMinOccurs",
        "schemas",
        "schematizedParsingType",
        "types",
        "unexpectedSegmentHandling"
      ]
    },
    "google-native:healthcare/v1:SchemaPackageSchematizedParsingType": {
      "description": "Determines how messages that fail to parse are handled.",
      "type": "string",
      "enum": [
        {
          "name": "SchematizedParsingTypeUnspecified",
          "description": "Unspecified schematized parsing type, equivalent to `SOFT_FAIL`.",
          "value": "SCHEMATIZED_PARSING_TYPE_UNSPECIFIED"
        },
        {
          "name": "SoftFail",
          "description": "Messages that fail to parse are still stored and ACKed but a parser error is stored in place of the schematized data.",
          "value": "SOFT_FAIL"
        },
        {
          "name": "HardFail",
          "description": "Messages that fail to parse are rejected from ingestion/insertion and return an error code.",
          "value": "HARD_FAIL"
        }
      ]
    },
    "google-native:healthcare/v1:SchemaPackageUnexpectedSegmentHandling": {
      "description": "Determines how unexpected segments (segments not matched to the schema) are handled.",
      "type": "string",
      "enum": [
        {
          "name": "UnexpectedSegmentHandlingModeUnspecified",
          "description": "Unspecified handling mode, equivalent to FAIL.",
          "value": "UNEXPECTED_SEGMENT_HANDLING_MODE_UNSPECIFIED"
        },
        {
          "name": "Fail",
          "description": "Unexpected segments fail to parse and return an error.",
          "value": "FAIL"
        },
        {
          "name": "Skip",
          "description": "Unexpected segments do not fail, but are omitted from the output.",
          "value": "SKIP"
        },
        {
          "name": "Parse",
          "description": "Unexpected segments do not fail, but are parsed in place and added to the current group. If a segment has a type definition, it is used, otherwise it is parsed as VARIES.",
          "value": "PARSE"
        }
      ]
    },
    "google-native:healthcare/v1:SchematizedData": {
      "description": "The content of an HL7v2 message in a structured format as specified by a schema.",
      "properties": {
        "data": {
          "type": "string",
          "description": "JSON output of the parser."
        },
        "error": {
          "type": "string",
          "description": "The error output of the parser."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:SchematizedDataResponse": {
      "description": "The content of an HL7v2 message in a structured format as specified by a schema.",
      "properties": {
        "data": {
          "type": "string",
          "description": "JSON output of the parser."
        },
        "error": {
          "type": "string",
          "description": "The error output of the parser."
        }
      },
      "type": "object",
      "required": [
        "data",
        "error"
      ]
    },
    "google-native:healthcare/v1:SegmentResponse": {
      "description": "A segment in a structured format.",
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping from the positional location to the value. The key string uses zero-based indexes separated by dots to identify Fields, components and sub-components. A bracket notation is also used to identify different instances of a repeated field. Regex for key: (\\d+)(\\[\\d+\\])?(.\\d+)?(.\\d+)? Examples of (key, value) pairs: * (0.1, \"hemoglobin\") denotes that the first component of Field 0 has the value \"hemoglobin\". * (1.1.2, \"CBC\") denotes that the second sub-component of the first component of Field 1 has the value \"CBC\". * (1[0].1, \"HbA1c\") denotes that the first component of the first Instance of Field 1, which is repeated, has the value \"HbA1c\"."
        },
        "segmentId": {
          "type": "string",
          "description": "A string that indicates the type of segment. For example, EVN or PID."
        },
        "setId": {
          "type": "string",
          "description": "Set ID for segments that can be in a set. This can be empty if it's missing or isn't applicable."
        }
      },
      "type": "object",
      "required": [
        "fields",
        "segmentId",
        "setId"
      ]
    },
    "google-native:healthcare/v1:Signature": {
      "description": "User signature.",
      "properties": {
        "image": {
          "$ref": "#/types/google-native:healthcare%2Fv1:Image",
          "description": "Optional. An image of the user's signature."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata associated with the user's signature. For example, the user's name or the user's title."
        },
        "signatureTime": {
          "type": "string",
          "description": "Optional. Timestamp of the signature."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "type": "object",
      "required": [
        "userId"
      ]
    },
    "google-native:healthcare/v1:SignatureResponse": {
      "description": "User signature.",
      "properties": {
        "image": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ImageResponse",
          "description": "Optional. An image of the user's signature."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata associated with the user's signature. For example, the user's name or the user's title."
        },
        "signatureTime": {
          "type": "string",
          "description": "Optional. Timestamp of the signature."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "type": "object",
      "required": [
        "image",
        "metadata",
        "signatureTime",
        "userId"
      ]
    },
    "google-native:healthcare/v1:StreamConfig": {
      "description": "Contains configuration for streaming FHIR export.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1FhirBigQueryDestination",
          "description": "The destination BigQuery structure that contains both the dataset location and corresponding schema config. The output is organized in one table per resource type. The server reuses the existing tables (if any) that are named after the resource types. For example, \"Patient\", \"Observation\". When there is no existing table for a given resource type, the server attempts to create one. When a table schema doesn't align with the schema config, either because of existing incompatible schema or out of band incompatible modification, the server does not stream in new data. BigQuery imposes a 1 MB limit on streaming insert row size, therefore any resource mutation that generates more than 1 MB of BigQuery data is not streamed. One resolution in this case is to delete the incompatible table and let the server recreate one, though the newly created table only contains data after the table recreation. Results are written to BigQuery tables according to the parameters in BigQueryDestination.WriteDisposition. Different versions of the same resource are distinguishable by the meta.versionId and meta.lastUpdated columns. The operation (CREATE/UPDATE/DELETE) that results in the new version is recorded in the meta.tag. The tables contain all historical resource versions since streaming was enabled. For query convenience, the server also creates one view per table of the same name containing only the current resource version. The streamed data in the BigQuery dataset is not guaranteed to be completely unique. The combination of the id and meta.versionId columns should ideally identify a single unique row. But in rare cases, duplicates may exist. At query time, users may use the SQL select statement to keep only one of the duplicate rows given an id and meta.versionId pair. Alternatively, the server created view mentioned above also filters out duplicates. If a resource mutation cannot be streamed to BigQuery, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        },
        "deidentifiedStoreDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DeidentifiedStoreDestination",
          "description": "The destination FHIR store for de-identified resources. After this field is added, all subsequent creates/updates/patches to the source store will be de-identified using the provided configuration and applied to the destination store. Importing resources to the source store will not trigger the streaming. If the source store already contains resources when this option is enabled, those resources will not be copied to the destination store unless they are subsequently updated. This may result in invalid references in the destination store. Before adding this config, you must grant the healthcare.fhirResources.update permission on the destination store to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/healthcare/docs/how-tos/permissions-healthcare-api-gcp-products#the_cloud_healthcare_service_agent). The destination store must set enable_update_create to true. The destination store must have disable_referential_integrity set to true. If a resource cannot be de-identified, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        },
        "resourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Supply a FHIR resource type (such as \"Patient\" or \"Observation\"). See https://www.hl7.org/fhir/valueset-resource-types.html for a list of all FHIR resource types. The server treats an empty list as an intent to stream all the supported resource types in this FHIR store."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:StreamConfigResponse": {
      "description": "Contains configuration for streaming FHIR export.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1FhirBigQueryDestinationResponse",
          "description": "The destination BigQuery structure that contains both the dataset location and corresponding schema config. The output is organized in one table per resource type. The server reuses the existing tables (if any) that are named after the resource types. For example, \"Patient\", \"Observation\". When there is no existing table for a given resource type, the server attempts to create one. When a table schema doesn't align with the schema config, either because of existing incompatible schema or out of band incompatible modification, the server does not stream in new data. BigQuery imposes a 1 MB limit on streaming insert row size, therefore any resource mutation that generates more than 1 MB of BigQuery data is not streamed. One resolution in this case is to delete the incompatible table and let the server recreate one, though the newly created table only contains data after the table recreation. Results are written to BigQuery tables according to the parameters in BigQueryDestination.WriteDisposition. Different versions of the same resource are distinguishable by the meta.versionId and meta.lastUpdated columns. The operation (CREATE/UPDATE/DELETE) that results in the new version is recorded in the meta.tag. The tables contain all historical resource versions since streaming was enabled. For query convenience, the server also creates one view per table of the same name containing only the current resource version. The streamed data in the BigQuery dataset is not guaranteed to be completely unique. The combination of the id and meta.versionId columns should ideally identify a single unique row. But in rare cases, duplicates may exist. At query time, users may use the SQL select statement to keep only one of the duplicate rows given an id and meta.versionId pair. Alternatively, the server created view mentioned above also filters out duplicates. If a resource mutation cannot be streamed to BigQuery, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        },
        "deidentifiedStoreDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1:DeidentifiedStoreDestinationResponse",
          "description": "The destination FHIR store for de-identified resources. After this field is added, all subsequent creates/updates/patches to the source store will be de-identified using the provided configuration and applied to the destination store. Importing resources to the source store will not trigger the streaming. If the source store already contains resources when this option is enabled, those resources will not be copied to the destination store unless they are subsequently updated. This may result in invalid references in the destination store. Before adding this config, you must grant the healthcare.fhirResources.update permission on the destination store to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/healthcare/docs/how-tos/permissions-healthcare-api-gcp-products#the_cloud_healthcare_service_agent). The destination store must set enable_update_create to true. The destination store must have disable_referential_integrity set to true. If a resource cannot be de-identified, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        },
        "resourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Supply a FHIR resource type (such as \"Patient\" or \"Observation\"). See https://www.hl7.org/fhir/valueset-resource-types.html for a list of all FHIR resource types. The server treats an empty list as an intent to stream all the supported resource types in this FHIR store."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination",
        "deidentifiedStoreDestination",
        "resourceTypes"
      ]
    },
    "google-native:healthcare/v1:TagFilterList": {
      "description": "List of tags to be filtered.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to be filtered. Tags must be DICOM Data Elements, File Meta Elements, or Directory Structuring Elements, as defined at: http://dicom.nema.org/medical/dicom/current/output/html/part06.html#table_6-1,. They may be provided by \"Keyword\" or \"Tag\". For example \"PatientID\", \"00100010\"."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:TagFilterListResponse": {
      "description": "List of tags to be filtered.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to be filtered. Tags must be DICOM Data Elements, File Meta Elements, or Directory Structuring Elements, as defined at: http://dicom.nema.org/medical/dicom/current/output/html/part06.html#table_6-1,. They may be provided by \"Keyword\" or \"Tag\". For example \"PatientID\", \"00100010\"."
        }
      },
      "type": "object",
      "required": [
        "tags"
      ]
    },
    "google-native:healthcare/v1:TextConfig": {
      "properties": {
        "additionalTransformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:InfoTypeTransformation"
          },
          "description": "Transformations to apply to the detected data, overridden by `exclude_info_types`."
        },
        "excludeInfoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "InfoTypes to skip transforming, overriding `additional_transformations`."
        },
        "transformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:InfoTypeTransformation"
          },
          "description": "The transformations to apply to the detected data. Deprecated. Use `additional_transformations` instead.",
          "deprecationMessage": "The transformations to apply to the detected data. Deprecated. Use `additional_transformations` instead."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:TextConfigResponse": {
      "properties": {
        "additionalTransformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:InfoTypeTransformationResponse"
          },
          "description": "Transformations to apply to the detected data, overridden by `exclude_info_types`."
        },
        "excludeInfoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "InfoTypes to skip transforming, overriding `additional_transformations`."
        },
        "transformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:InfoTypeTransformationResponse"
          },
          "description": "The transformations to apply to the detected data. Deprecated. Use `additional_transformations` instead.",
          "deprecationMessage": "The transformations to apply to the detected data. Deprecated. Use `additional_transformations` instead."
        }
      },
      "type": "object",
      "required": [
        "additionalTransformations",
        "excludeInfoTypes",
        "transformations"
      ]
    },
    "google-native:healthcare/v1:TimePartitioning": {
      "description": "Configuration for FHIR BigQuery time-partitioned tables.",
      "properties": {
        "expirationMs": {
          "type": "string",
          "description": "Number of milliseconds for which to keep the storage for a partition."
        },
        "type": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TimePartitioningType",
          "description": "Type of partitioning."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:TimePartitioningResponse": {
      "description": "Configuration for FHIR BigQuery time-partitioned tables.",
      "properties": {
        "expirationMs": {
          "type": "string",
          "description": "Number of milliseconds for which to keep the storage for a partition."
        },
        "type": {
          "type": "string",
          "description": "Type of partitioning."
        }
      },
      "type": "object",
      "required": [
        "expirationMs",
        "type"
      ]
    },
    "google-native:healthcare/v1:TimePartitioningType": {
      "description": "Type of partitioning.",
      "type": "string",
      "enum": [
        {
          "name": "PartitionTypeUnspecified",
          "description": "Default unknown time.",
          "value": "PARTITION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Hour",
          "description": "Data partitioned by hour.",
          "value": "HOUR"
        },
        {
          "name": "Day",
          "description": "Data partitioned by day.",
          "value": "DAY"
        },
        {
          "name": "Month",
          "description": "Data partitioned by month.",
          "value": "MONTH"
        },
        {
          "name": "Year",
          "description": "Data partitioned by year.",
          "value": "YEAR"
        }
      ]
    },
    "google-native:healthcare/v1:Type": {
      "description": "A type definition for some HL7v2 type (incl. Segments and Datatypes).",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Field"
          },
          "description": "The (sub) fields this type has (if not primitive)."
        },
        "name": {
          "type": "string",
          "description": "The name of this type. This would be the segment or datatype name. For example, \"PID\" or \"XPN\"."
        },
        "primitive": {
          "$ref": "#/types/google-native:healthcare%2Fv1:TypePrimitive",
          "description": "If this is a primitive type then this field is the type of the primitive For example, STRING. Leave unspecified for composite types."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:TypePrimitive": {
      "description": "If this is a primitive type then this field is the type of the primitive For example, STRING. Leave unspecified for composite types.",
      "type": "string",
      "enum": [
        {
          "name": "PrimitiveUnspecified",
          "description": "Not a primitive.",
          "value": "PRIMITIVE_UNSPECIFIED"
        },
        {
          "name": "String",
          "description": "String primitive.",
          "value": "STRING"
        },
        {
          "name": "Varies",
          "description": "Element that can have unschematized children.",
          "value": "VARIES"
        },
        {
          "name": "UnescapedString",
          "description": "Like STRING, but all delimiters below this element are ignored.",
          "value": "UNESCAPED_STRING"
        }
      ]
    },
    "google-native:healthcare/v1:TypeResponse": {
      "description": "A type definition for some HL7v2 type (incl. Segments and Datatypes).",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:FieldResponse"
          },
          "description": "The (sub) fields this type has (if not primitive)."
        },
        "name": {
          "type": "string",
          "description": "The name of this type. This would be the segment or datatype name. For example, \"PID\" or \"XPN\"."
        },
        "primitive": {
          "type": "string",
          "description": "If this is a primitive type then this field is the type of the primitive For example, STRING. Leave unspecified for composite types."
        }
      },
      "type": "object",
      "required": [
        "fields",
        "name",
        "primitive"
      ]
    },
    "google-native:healthcare/v1:ValidationConfig": {
      "description": "Contains the configuration for FHIR profiles and validation.",
      "properties": {
        "disableFhirpathValidation": {
          "type": "boolean",
          "description": "Whether to disable FHIRPath validation for incoming resources. Set this to true to disable checking incoming resources for conformance against FHIRPath requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "disableProfileValidation": {
          "type": "boolean",
          "description": "Whether to disable profile validation for this FHIR store. Set this to true to disable checking incoming resources for conformance against structure definitions in this FHIR store."
        },
        "disableReferenceTypeValidation": {
          "type": "boolean",
          "description": "Whether to disable reference type validation for incoming resources. Set this to true to disable checking incoming resources for conformance against reference type requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "disableRequiredFieldValidation": {
          "type": "boolean",
          "description": "Whether to disable required fields validation for incoming resources. Set this to true to disable checking incoming resources for conformance against required fields requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "enabledImplementationGuides": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of implementation guide URLs in this FHIR store that are used to configure the profiles to use for validation. For example, to use the US Core profiles for validation, set `enabled_implementation_guides` to `[\"http://hl7.org/fhir/us/core/ImplementationGuide/ig\"]`. If `enabled_implementation_guides` is empty or omitted, then incoming resources are only required to conform to the base FHIR profiles. Otherwise, a resource must conform to at least one profile listed in the `global` property of one of the enabled ImplementationGuides. The Cloud Healthcare API does not currently enforce all of the rules in a StructureDefinition. The following rules are supported: - min/max - minValue/maxValue - maxLength - type - fixed[x] - pattern[x] on simple types - slicing, when using \"value\" as the discriminator type When a URL cannot be resolved (for example, in a type assertion), the server does not return an error."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:ValidationConfigResponse": {
      "description": "Contains the configuration for FHIR profiles and validation.",
      "properties": {
        "disableFhirpathValidation": {
          "type": "boolean",
          "description": "Whether to disable FHIRPath validation for incoming resources. Set this to true to disable checking incoming resources for conformance against FHIRPath requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "disableProfileValidation": {
          "type": "boolean",
          "description": "Whether to disable profile validation for this FHIR store. Set this to true to disable checking incoming resources for conformance against structure definitions in this FHIR store."
        },
        "disableReferenceTypeValidation": {
          "type": "boolean",
          "description": "Whether to disable reference type validation for incoming resources. Set this to true to disable checking incoming resources for conformance against reference type requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "disableRequiredFieldValidation": {
          "type": "boolean",
          "description": "Whether to disable required fields validation for incoming resources. Set this to true to disable checking incoming resources for conformance against required fields requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "enabledImplementationGuides": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of implementation guide URLs in this FHIR store that are used to configure the profiles to use for validation. For example, to use the US Core profiles for validation, set `enabled_implementation_guides` to `[\"http://hl7.org/fhir/us/core/ImplementationGuide/ig\"]`. If `enabled_implementation_guides` is empty or omitted, then incoming resources are only required to conform to the base FHIR profiles. Otherwise, a resource must conform to at least one profile listed in the `global` property of one of the enabled ImplementationGuides. The Cloud Healthcare API does not currently enforce all of the rules in a StructureDefinition. The following rules are supported: - min/max - minValue/maxValue - maxLength - type - fixed[x] - pattern[x] on simple types - slicing, when using \"value\" as the discriminator type When a URL cannot be resolved (for example, in a type assertion), the server does not return an error."
        }
      },
      "type": "object",
      "required": [
        "disableFhirpathValidation",
        "disableProfileValidation",
        "disableReferenceTypeValidation",
        "disableRequiredFieldValidation",
        "enabledImplementationGuides"
      ]
    },
    "google-native:healthcare/v1:VersionSource": {
      "description": "Describes a selector for extracting and matching an MSH field to a value.",
      "properties": {
        "mshField": {
          "type": "string",
          "description": "The field to extract from the MSH segment. For example, \"3.1\" or \"18[1].1\"."
        },
        "value": {
          "type": "string",
          "description": "The value to match with the field. For example, \"My Application Name\" or \"2.3\"."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1:VersionSourceResponse": {
      "description": "Describes a selector for extracting and matching an MSH field to a value.",
      "properties": {
        "mshField": {
          "type": "string",
          "description": "The field to extract from the MSH segment. For example, \"3.1\" or \"18[1].1\"."
        },
        "value": {
          "type": "string",
          "description": "The value to match with the field. For example, \"My Application Name\" or \"2.3\"."
        }
      },
      "type": "object",
      "required": [
        "mshField",
        "value"
      ]
    },
    "google-native:healthcare/v1beta1:AccessDeterminationLogConfig": {
      "description": "Configures consent audit log config for FHIR create, read, update, and delete (CRUD) operations. Cloud audit log for healthcare API must be [enabled](https://cloud.google.com/logging/docs/audit/configure-data-access#config-console-enable). The consent-related logs are included as part of `protoPayload.metadata`.",
      "properties": {
        "logLevel": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AccessDeterminationLogConfigLogLevel",
          "description": "Optional. Controls the amount of detail to include as part of the audit logs."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:AccessDeterminationLogConfigLogLevel": {
      "description": "Optional. Controls the amount of detail to include as part of the audit logs.",
      "type": "string",
      "enum": [
        {
          "name": "LogLevelUnspecified",
          "description": "No log level specified. This value is unused.",
          "value": "LOG_LEVEL_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "No additional consent-related logging is added to audit logs.",
          "value": "DISABLED"
        },
        {
          "name": "Minimum",
          "description": "The following information is included: - One of the following [`consentMode`](https://cloud.google.com/healthcare-api/private/docs/how-tos/fhir-consent#audit_logs) fields: (`off`|`emptyScope`|`enforced`|`btg`|`bypass`). - The accessor's request headers - The `log_level` of the [AccessDeterminationLogConfig](google.cloud.healthcare.v1beta1.fhir.FhirStore.ConsentConfig.AccessDeterminationLogConfig) - The final consent evaluation (`PERMIT`, `DENY`, or `NO_CONSENT`) - A human-readable summary of the evaluation",
          "value": "MINIMUM"
        },
        {
          "name": "Verbose",
          "description": "Includes `MINIMUM` and, for each resource owner, returns: - The resource owner's name - Most specific part of the `X-Consent-Scope` resulting in consensual determination - Timestamp of the applied enforcement leading to the decision - Enforcement version at the time the applicable consents were applied - The Consent resource name - The timestamp of the Consent resource used for enforcement - Policy type (PATIENT or ADMIN) Note that this mode adds some overhead to CRUD operations.",
          "value": "VERBOSE"
        }
      ]
    },
    "google-native:healthcare/v1beta1:AccessDeterminationLogConfigResponse": {
      "description": "Configures consent audit log config for FHIR create, read, update, and delete (CRUD) operations. Cloud audit log for healthcare API must be [enabled](https://cloud.google.com/logging/docs/audit/configure-data-access#config-console-enable). The consent-related logs are included as part of `protoPayload.metadata`.",
      "properties": {
        "logLevel": {
          "type": "string",
          "description": "Optional. Controls the amount of detail to include as part of the audit logs."
        }
      },
      "type": "object",
      "required": [
        "logLevel"
      ]
    },
    "google-native:healthcare/v1beta1:Action": {
      "description": "Specifies a selection of tags and an `Action` to apply to each one.",
      "properties": {
        "cleanImageTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageConfig",
          "description": "Inspect image and transform sensitive burnt-in text. Doesn't apply to elements nested in a sequence, which revert to `Keep`. Supported [tags](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part06/chapter_6.html): PixelData"
        },
        "cleanTextTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CleanTextTag",
          "description": "Inspect text and transform sensitive text. Configurable via TextConfig. Supported Value Representations: AE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS"
        },
        "deleteTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DeleteTag",
          "description": "Delete tag."
        },
        "keepTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KeepTag",
          "description": "Keep tag unchanged."
        },
        "queries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Select all tags with the listed tag IDs, names, or Value Representations (VRs). Examples: ID: \"00100010\" Keyword: \"PatientName\" VR: \"PN\""
        },
        "recurseTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RecurseTag",
          "description": "Recursively apply DICOM de-id to tags nested in a sequence. Supported [Value Representation] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): SQ"
        },
        "regenUidTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RegenUidTag",
          "description": "Replace UID with a new generated UID. Supported [Value Representation] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): UI"
        },
        "removeTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RemoveTag",
          "description": "Replace with empty tag."
        },
        "resetTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ResetTag",
          "description": "Reset tag to a placeholder value."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ActionResponse": {
      "description": "Specifies a selection of tags and an `Action` to apply to each one.",
      "properties": {
        "cleanImageTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageConfigResponse",
          "description": "Inspect image and transform sensitive burnt-in text. Doesn't apply to elements nested in a sequence, which revert to `Keep`. Supported [tags](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part06/chapter_6.html): PixelData"
        },
        "cleanTextTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CleanTextTagResponse",
          "description": "Inspect text and transform sensitive text. Configurable via TextConfig. Supported Value Representations: AE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS"
        },
        "deleteTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DeleteTagResponse",
          "description": "Delete tag."
        },
        "keepTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KeepTagResponse",
          "description": "Keep tag unchanged."
        },
        "queries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Select all tags with the listed tag IDs, names, or Value Representations (VRs). Examples: ID: \"00100010\" Keyword: \"PatientName\" VR: \"PN\""
        },
        "recurseTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RecurseTagResponse",
          "description": "Recursively apply DICOM de-id to tags nested in a sequence. Supported [Value Representation] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): SQ"
        },
        "regenUidTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RegenUidTagResponse",
          "description": "Replace UID with a new generated UID. Supported [Value Representation] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): UI"
        },
        "removeTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RemoveTagResponse",
          "description": "Replace with empty tag."
        },
        "resetTag": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ResetTagResponse",
          "description": "Reset tag to a placeholder value."
        }
      },
      "type": "object",
      "required": [
        "cleanImageTag",
        "cleanTextTag",
        "deleteTag",
        "keepTag",
        "queries",
        "recurseTag",
        "regenUidTag",
        "removeTag",
        "resetTag"
      ]
    },
    "google-native:healthcare/v1beta1:AnnotationConfig": {
      "description": "Specifies how to store annotations during de-identification operation.",
      "properties": {
        "annotationStoreName": {
          "type": "string",
          "description": "The name of the annotation store, in the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}`). * The destination annotation store must be in the same project as the source data. De-identifying data across multiple projects is not supported. * The destination annotation store must exist when using DeidentifyDicomStore or DeidentifyFhirStore. DeidentifyDataset automatically creates the destination annotation store."
        },
        "storeQuote": {
          "type": "boolean",
          "description": "If set to true, the sensitive texts are included in SensitiveTextAnnotation of Annotation."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:AnnotationConfigResponse": {
      "description": "Specifies how to store annotations during de-identification operation.",
      "properties": {
        "annotationStoreName": {
          "type": "string",
          "description": "The name of the annotation store, in the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}`). * The destination annotation store must be in the same project as the source data. De-identifying data across multiple projects is not supported. * The destination annotation store must exist when using DeidentifyDicomStore or DeidentifyFhirStore. DeidentifyDataset automatically creates the destination annotation store."
        },
        "storeQuote": {
          "type": "boolean",
          "description": "If set to true, the sensitive texts are included in SensitiveTextAnnotation of Annotation."
        }
      },
      "type": "object",
      "required": [
        "annotationStoreName",
        "storeQuote"
      ]
    },
    "google-native:healthcare/v1beta1:AnnotationSource": {
      "description": "AnnotationSource holds the source information of the annotation.",
      "properties": {
        "cloudHealthcareSource": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CloudHealthcareSource",
          "description": "Cloud Healthcare API resource."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:AnnotationSourceResponse": {
      "description": "AnnotationSource holds the source information of the annotation.",
      "properties": {
        "cloudHealthcareSource": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CloudHealthcareSourceResponse",
          "description": "Cloud Healthcare API resource."
        }
      },
      "type": "object",
      "required": [
        "cloudHealthcareSource"
      ]
    },
    "google-native:healthcare/v1beta1:Attribute": {
      "description": "An attribute value for a Consent or User data mapping. Each Attribute must have a corresponding AttributeDefinition in the consent store that defines the default and allowed values.",
      "properties": {
        "attributeDefinitionId": {
          "type": "string",
          "description": "Indicates the name of an attribute defined in the consent store."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The value of the attribute. Must be an acceptable value as defined in the consent store. For example, if the consent store defines \"data type\" with acceptable values \"questionnaire\" and \"step-count\", when the attribute name is data type, this field must contain one of those values."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:AttributeDefinitionCategory": {
      "description": "Required. The category of the attribute. The value of this field cannot be changed after creation.",
      "type": "string",
      "enum": [
        {
          "name": "CategoryUnspecified",
          "description": "No category specified. This option is invalid.",
          "value": "CATEGORY_UNSPECIFIED"
        },
        {
          "name": "Resource",
          "description": "Specify this category when this attribute describes the properties of resources. For example, data anonymity or data type.",
          "value": "RESOURCE"
        },
        {
          "name": "Request",
          "description": "Specify this category when this attribute describes the properties of requests. For example, requester's role or requester's organization.",
          "value": "REQUEST"
        }
      ]
    },
    "google-native:healthcare/v1beta1:AttributeResponse": {
      "description": "An attribute value for a Consent or User data mapping. Each Attribute must have a corresponding AttributeDefinition in the consent store that defines the default and allowed values.",
      "properties": {
        "attributeDefinitionId": {
          "type": "string",
          "description": "Indicates the name of an attribute defined in the consent store."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The value of the attribute. Must be an acceptable value as defined in the consent store. For example, if the consent store defines \"data type\" with acceptable values \"questionnaire\" and \"step-count\", when the attribute name is data type, this field must contain one of those values."
        }
      },
      "type": "object",
      "required": [
        "attributeDefinitionId",
        "values"
      ]
    },
    "google-native:healthcare/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:healthcare/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:healthcare/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:healthcare/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:BoundingPoly": {
      "description": "A bounding polygon for the detected image annotation.",
      "properties": {
        "label": {
          "type": "string",
          "description": "A description of this polygon."
        },
        "vertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Vertex"
          },
          "description": "List of the vertices of this polygon."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:BoundingPolyResponse": {
      "description": "A bounding polygon for the detected image annotation.",
      "properties": {
        "label": {
          "type": "string",
          "description": "A description of this polygon."
        },
        "vertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:VertexResponse"
          },
          "description": "List of the vertices of this polygon."
        }
      },
      "type": "object",
      "required": [
        "label",
        "vertices"
      ]
    },
    "google-native:healthcare/v1beta1:CharacterMaskConfig": {
      "description": "Mask a string by replacing its characters with a fixed character.",
      "properties": {
        "maskingCharacter": {
          "type": "string",
          "description": "Character to mask the sensitive values. If not supplied, defaults to \"*\"."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CharacterMaskConfigResponse": {
      "description": "Mask a string by replacing its characters with a fixed character.",
      "properties": {
        "maskingCharacter": {
          "type": "string",
          "description": "Character to mask the sensitive values. If not supplied, defaults to \"*\"."
        }
      },
      "type": "object",
      "required": [
        "maskingCharacter"
      ]
    },
    "google-native:healthcare/v1beta1:CharacterMaskField": {
      "description": "Replace field value with masking character. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CharacterMaskFieldResponse": {
      "description": "Replace field value with masking character. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CleanDescriptorsOption": {
      "description": "This option is based on the DICOM Standard's [Clean Descriptors Option](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/sect_E.3.5.html), and the `CleanText` `Action` is applied to all the specified fields. When cleaning text, the process attempts to transform phrases matching any of the tags marked for removal (action codes D, Z, X, and U) in the [Basic Profile](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/chapter_E.html). These contextual phrases are replaced with the token \"[CTX]\". This option uses an additional infoType during inspection.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CleanDescriptorsOptionResponse": {
      "description": "This option is based on the DICOM Standard's [Clean Descriptors Option](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/sect_E.3.5.html), and the `CleanText` `Action` is applied to all the specified fields. When cleaning text, the process attempts to transform phrases matching any of the tags marked for removal (action codes D, Z, X, and U) in the [Basic Profile](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/chapter_E.html). These contextual phrases are replaced with the token \"[CTX]\". This option uses an additional infoType during inspection.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CleanTextField": {
      "description": "Inspect text and transform sensitive text. Configure using TextConfig. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Date, DateTime, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CleanTextFieldResponse": {
      "description": "Inspect text and transform sensitive text. Configure using TextConfig. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Date, DateTime, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CleanTextTag": {
      "description": "Inspect text and transform sensitive text. Configurable using TextConfig. Supported [Value Representations] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): AE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CleanTextTagResponse": {
      "description": "Inspect text and transform sensitive text. Configurable using TextConfig. Supported [Value Representations] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): AE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CloudHealthcareSource": {
      "description": "Cloud Healthcare API resource.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Full path of a Cloud Healthcare API resource."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CloudHealthcareSourceResponse": {
      "description": "Cloud Healthcare API resource.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Full path of a Cloud Healthcare API resource."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:healthcare/v1beta1:ConsentConfig": {
      "description": "Configures whether to enforce consent for the FHIR store and which consent enforcement version is being used.",
      "properties": {
        "accessDeterminationLogConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AccessDeterminationLogConfig",
          "description": "Optional. Specifies how the server logs the consent-aware requests. If not specified, the `AccessDeterminationLogConfig.LogLevel.MINIMUM` option is used."
        },
        "accessEnforced": {
          "type": "boolean",
          "description": "Optional. If set to true, when accessing FHIR resources, the consent headers provided using [SMART-on-FHIR](https://cloud.google.com/healthcare/private/docs/how-tos/smart-on-fhir) will be verified against consents given by patients. See the ConsentEnforcementVersion for the supported consent headers."
        },
        "consentHeaderHandling": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ConsentHeaderHandling",
          "description": "Optional. Different options to configure the behaviour of the server when handling the `X-Consent-Scope` header."
        },
        "enforcedAdminConsents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The versioned names of the enforced admin Consent resource(s), in the format `projects/{project_id}/locations/{location}/datasets/{dataset_id}/fhirStores/{fhir_store_id}/fhir/Consent/{resource_id}/_history/{version_id}`. For FHIR stores with `disable_resource_versioning=true`, the format is `projects/{project_id}/locations/{location}/datasets/{dataset_id}/fhirStores/{fhir_store_id}/fhir/Consent/{resource_id}`. This field can only be updated using ApplyAdminConsents."
        },
        "version": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ConsentConfigVersion",
          "description": "Specifies which consent enforcement version is being used for this FHIR store. This field can only be set once by either CreateFhirStore or UpdateFhirStore. After that, you must call ApplyConsents to change the version."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:healthcare/v1beta1:ConsentConfigResponse": {
      "description": "Configures whether to enforce consent for the FHIR store and which consent enforcement version is being used.",
      "properties": {
        "accessDeterminationLogConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AccessDeterminationLogConfigResponse",
          "description": "Optional. Specifies how the server logs the consent-aware requests. If not specified, the `AccessDeterminationLogConfig.LogLevel.MINIMUM` option is used."
        },
        "accessEnforced": {
          "type": "boolean",
          "description": "Optional. If set to true, when accessing FHIR resources, the consent headers provided using [SMART-on-FHIR](https://cloud.google.com/healthcare/private/docs/how-tos/smart-on-fhir) will be verified against consents given by patients. See the ConsentEnforcementVersion for the supported consent headers."
        },
        "consentHeaderHandling": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ConsentHeaderHandlingResponse",
          "description": "Optional. Different options to configure the behaviour of the server when handling the `X-Consent-Scope` header."
        },
        "enforcedAdminConsents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The versioned names of the enforced admin Consent resource(s), in the format `projects/{project_id}/locations/{location}/datasets/{dataset_id}/fhirStores/{fhir_store_id}/fhir/Consent/{resource_id}/_history/{version_id}`. For FHIR stores with `disable_resource_versioning=true`, the format is `projects/{project_id}/locations/{location}/datasets/{dataset_id}/fhirStores/{fhir_store_id}/fhir/Consent/{resource_id}`. This field can only be updated using ApplyAdminConsents."
        },
        "version": {
          "type": "string",
          "description": "Specifies which consent enforcement version is being used for this FHIR store. This field can only be set once by either CreateFhirStore or UpdateFhirStore. After that, you must call ApplyConsents to change the version."
        }
      },
      "type": "object",
      "required": [
        "accessDeterminationLogConfig",
        "accessEnforced",
        "consentHeaderHandling",
        "enforcedAdminConsents",
        "version"
      ]
    },
    "google-native:healthcare/v1beta1:ConsentConfigVersion": {
      "description": "Required. Specifies which consent enforcement version is being used for this FHIR store. This field can only be set once by either CreateFhirStore or UpdateFhirStore. After that, you must call ApplyConsents to change the version.",
      "type": "string",
      "enum": [
        {
          "name": "ConsentEnforcementVersionUnspecified",
          "description": "Users must specify an enforcement version or an error is returned.",
          "value": "CONSENT_ENFORCEMENT_VERSION_UNSPECIFIED"
        },
        {
          "name": "V1",
          "description": "Enforcement version 1. See the [FHIR Consent resources in the Cloud Healthcare API](https://cloud.google.com/healthcare-api/private/docs/how-tos/fhir-consent) guide for more details.",
          "value": "V1"
        }
      ]
    },
    "google-native:healthcare/v1beta1:ConsentHeaderHandling": {
      "description": "How the server handles the consent header.",
      "properties": {
        "profile": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ConsentHeaderHandlingProfile",
          "description": "Optional. Specifies the default server behavior when the header is empty. If not specified, the `ScopeProfile.PERMIT_EMPTY_SCOPE` option is used."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ConsentHeaderHandlingProfile": {
      "description": "Optional. Specifies the default server behavior when the header is empty. If not specified, the `ScopeProfile.PERMIT_EMPTY_SCOPE` option is used.",
      "type": "string",
      "enum": [
        {
          "name": "ScopeProfileUnspecified",
          "description": "If not specified, the default value `PERMIT_EMPTY_SCOPE` is used.",
          "value": "SCOPE_PROFILE_UNSPECIFIED"
        },
        {
          "name": "PermitEmptyScope",
          "description": "When no consent scopes are provided (for example, if there's an empty or missing header), then consent check is disabled, similar to when `access_enforced` is `false`. You can use audit logs to differentiate these two cases by looking at the value of `protopayload.metadata.consentMode`. If consents scopes are present, they must be valid and within the allowed limits, otherwise the request will be rejected with a `4xx` code.",
          "value": "PERMIT_EMPTY_SCOPE"
        },
        {
          "name": "RequiredOnRead",
          "description": "The consent header must be non-empty when performing read and search operations, otherwise the request is rejected with a `4xx` code. Additionally, invalid consent scopes or scopes exceeding the allowed limits are rejected.",
          "value": "REQUIRED_ON_READ"
        }
      ]
    },
    "google-native:healthcare/v1beta1:ConsentHeaderHandlingResponse": {
      "description": "How the server handles the consent header.",
      "properties": {
        "profile": {
          "type": "string",
          "description": "Optional. Specifies the default server behavior when the header is empty. If not specified, the `ScopeProfile.PERMIT_EMPTY_SCOPE` option is used."
        }
      },
      "type": "object",
      "required": [
        "profile"
      ]
    },
    "google-native:healthcare/v1beta1:ConsentState": {
      "description": "Required. Indicates the current state of this Consent.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "No state specified. Treated as ACTIVE only at the time of resource creation.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "The Consent is active and is considered when evaluating a user's consent on resources.",
          "value": "ACTIVE"
        },
        {
          "name": "Archived",
          "description": "The archived state is currently not being used.",
          "value": "ARCHIVED"
        },
        {
          "name": "Revoked",
          "description": "A revoked Consent is not considered when evaluating a user's consent on resources.",
          "value": "REVOKED"
        },
        {
          "name": "Draft",
          "description": "A draft Consent is not considered when evaluating a user's consent on resources unless explicitly specified.",
          "value": "DRAFT"
        },
        {
          "name": "Rejected",
          "description": "When a draft Consent is rejected by a user, it is set to a rejected state. A rejected Consent is not considered when evaluating a user's consent on resources.",
          "value": "REJECTED"
        }
      ]
    },
    "google-native:healthcare/v1beta1:ContextualDeidConfig": {
      "description": "Fields that don't match a KeepField or CleanTextField `action` in the BASIC profile are collected into a contextual phrase list. For fields that match a CleanTextField `action` in FieldMetadata or ProfileType, the process attempts to transform phrases matching these contextual entries. These contextual phrases are replaced with the token \"[CTX]\". This feature uses an additional InfoType during inspection.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ContextualDeidConfigResponse": {
      "description": "Fields that don't match a KeepField or CleanTextField `action` in the BASIC profile are collected into a contextual phrase list. For fields that match a CleanTextField `action` in FieldMetadata or ProfileType, the process attempts to transform phrases matching these contextual entries. These contextual phrases are replaced with the token \"[CTX]\". This feature uses an additional InfoType during inspection.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CryptoHashConfig": {
      "description": "Pseudonymization method that generates surrogates via cryptographic hashing. Uses SHA-256. Outputs a base64-encoded representation of the hashed output. For example, `L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=`.",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "An AES 128/192/256 bit key. Causes the hash to be computed based on this key. A default key is generated for each Deidentify operation and is used when neither crypto_key nor kms_wrapped is specified. Must not be set if kms_wrapped is set."
        },
        "kmsWrapped": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KmsWrappedCryptoKey",
          "description": "KMS wrapped key. Must not be set if crypto_key is set."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CryptoHashConfigResponse": {
      "description": "Pseudonymization method that generates surrogates via cryptographic hashing. Uses SHA-256. Outputs a base64-encoded representation of the hashed output. For example, `L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=`.",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "An AES 128/192/256 bit key. Causes the hash to be computed based on this key. A default key is generated for each Deidentify operation and is used when neither crypto_key nor kms_wrapped is specified. Must not be set if kms_wrapped is set."
        },
        "kmsWrapped": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KmsWrappedCryptoKeyResponse",
          "description": "KMS wrapped key. Must not be set if crypto_key is set."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey",
        "kmsWrapped"
      ]
    },
    "google-native:healthcare/v1beta1:CryptoHashField": {
      "description": "Replace field value with a hash of that value. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:CryptoHashFieldResponse": {
      "description": "Replace field value with a hash of that value. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DateShiftConfig": {
      "description": "Shift a date forward or backward in time by a random amount which is consistent for a given patient and crypto key combination.",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "An AES 128/192/256 bit key. The date shift is computed based on this key and the patient ID. If the patient ID is empty for a DICOM resource, the date shift is computed based on this key and the study instance UID. If crypto_key is not set, then kms_wrapped is used to calculate the date shift. If neither is set, a default key is generated for each de-identify operation. Must not be set if kms_wrapped is set."
        },
        "kmsWrapped": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KmsWrappedCryptoKey",
          "description": "KMS wrapped key. If kms_wrapped is not set, then crypto_key is used to calculate the date shift. If neither is set, a default key is generated for each de-identify operation. Must not be set if crypto_key is set."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DateShiftConfigResponse": {
      "description": "Shift a date forward or backward in time by a random amount which is consistent for a given patient and crypto key combination.",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "An AES 128/192/256 bit key. The date shift is computed based on this key and the patient ID. If the patient ID is empty for a DICOM resource, the date shift is computed based on this key and the study instance UID. If crypto_key is not set, then kms_wrapped is used to calculate the date shift. If neither is set, a default key is generated for each de-identify operation. Must not be set if kms_wrapped is set."
        },
        "kmsWrapped": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KmsWrappedCryptoKeyResponse",
          "description": "KMS wrapped key. If kms_wrapped is not set, then crypto_key is used to calculate the date shift. If neither is set, a default key is generated for each de-identify operation. Must not be set if crypto_key is set."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey",
        "kmsWrapped"
      ]
    },
    "google-native:healthcare/v1beta1:DateShiftField": {
      "description": "Shift the date by a randomized number of days. See [date shifting](https://cloud.google.com/dlp/docs/concepts-date-shifting) for more information. Supported [types](https://www.hl7.org/fhir/datatypes.html): Date, DateTime.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DateShiftFieldResponse": {
      "description": "Shift the date by a randomized number of days. See [date shifting](https://cloud.google.com/dlp/docs/concepts-date-shifting) for more information. Supported [types](https://www.hl7.org/fhir/datatypes.html): Date, DateTime.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DeidentifiedStoreDestination": {
      "description": "Contains configuration for streaming de-identified FHIR export.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DeidentifyConfig",
          "description": "The configuration to use when de-identifying resources that are added to this store."
        },
        "store": {
          "type": "string",
          "description": "The full resource name of a Cloud Healthcare FHIR store, for example, `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/fhirStores/{fhir_store_id}`."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DeidentifiedStoreDestinationResponse": {
      "description": "Contains configuration for streaming de-identified FHIR export.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DeidentifyConfigResponse",
          "description": "The configuration to use when de-identifying resources that are added to this store."
        },
        "store": {
          "type": "string",
          "description": "The full resource name of a Cloud Healthcare FHIR store, for example, `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/fhirStores/{fhir_store_id}`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "store"
      ]
    },
    "google-native:healthcare/v1beta1:DeidentifyConfig": {
      "description": "Configures de-id options specific to different types of content. Each submessage customizes the handling of an https://tools.ietf.org/html/rfc6838 media type or subtype. Configs are applied in a nested manner at runtime.",
      "properties": {
        "annotation": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AnnotationConfig",
          "description": "Configures how annotations, meaning that the location and infoType of sensitive information findings, are created during de-identification. If unspecified, no annotations are created."
        },
        "dicom": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DicomConfig",
          "description": "Configures de-id of application/DICOM content. Deprecated. Use `dicom_tag_config` instead.",
          "deprecationMessage": "Configures de-id of application/DICOM content. Deprecated. Use `dicom_tag_config` instead."
        },
        "dicomTagConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DicomTagConfig",
          "description": "Configures de-id of application/DICOM content."
        },
        "fhir": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirConfig",
          "description": "Configures de-id of application/FHIR content. Deprecated. Use `fhir_field_config` instead.",
          "deprecationMessage": "Configures de-id of application/FHIR content. Deprecated. Use `fhir_field_config` instead."
        },
        "fhirFieldConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirFieldConfig",
          "description": "Configures de-id of application/FHIR content."
        },
        "image": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageConfig",
          "description": "Configures the de-identification of image pixels in the source_dataset. Deprecated. Use `dicom_tag_config.options.clean_image` instead.",
          "deprecationMessage": "Configures the de-identification of image pixels in the source_dataset. Deprecated. Use `dicom_tag_config.options.clean_image` instead."
        },
        "operationMetadata": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DeidentifyOperationMetadata",
          "description": "Details about the work the de-identify operation performed."
        },
        "text": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TextConfig",
          "description": "Configures de-identification of text wherever it is found in the source_dataset."
        },
        "useRegionalDataProcessing": {
          "type": "boolean",
          "description": "Ensures in-flight data remains in the region of origin during de-identification. Using this option results in a significant reduction of throughput, and is not compatible with `LOCATION` or `ORGANIZATION_NAME` infoTypes. If the deprecated DicomConfig or FhirConfig are used, then `LOCATION` must be excluded within TextConfig, and must also be excluded within ImageConfig if image redaction is required."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DeidentifyConfigResponse": {
      "description": "Configures de-id options specific to different types of content. Each submessage customizes the handling of an https://tools.ietf.org/html/rfc6838 media type or subtype. Configs are applied in a nested manner at runtime.",
      "properties": {
        "annotation": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AnnotationConfigResponse",
          "description": "Configures how annotations, meaning that the location and infoType of sensitive information findings, are created during de-identification. If unspecified, no annotations are created."
        },
        "dicom": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DicomConfigResponse",
          "description": "Configures de-id of application/DICOM content. Deprecated. Use `dicom_tag_config` instead.",
          "deprecationMessage": "Configures de-id of application/DICOM content. Deprecated. Use `dicom_tag_config` instead."
        },
        "dicomTagConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DicomTagConfigResponse",
          "description": "Configures de-id of application/DICOM content."
        },
        "fhir": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirConfigResponse",
          "description": "Configures de-id of application/FHIR content. Deprecated. Use `fhir_field_config` instead.",
          "deprecationMessage": "Configures de-id of application/FHIR content. Deprecated. Use `fhir_field_config` instead."
        },
        "fhirFieldConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirFieldConfigResponse",
          "description": "Configures de-id of application/FHIR content."
        },
        "image": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageConfigResponse",
          "description": "Configures the de-identification of image pixels in the source_dataset. Deprecated. Use `dicom_tag_config.options.clean_image` instead.",
          "deprecationMessage": "Configures the de-identification of image pixels in the source_dataset. Deprecated. Use `dicom_tag_config.options.clean_image` instead."
        },
        "operationMetadata": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DeidentifyOperationMetadataResponse",
          "description": "Details about the work the de-identify operation performed."
        },
        "text": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TextConfigResponse",
          "description": "Configures de-identification of text wherever it is found in the source_dataset."
        },
        "useRegionalDataProcessing": {
          "type": "boolean",
          "description": "Ensures in-flight data remains in the region of origin during de-identification. Using this option results in a significant reduction of throughput, and is not compatible with `LOCATION` or `ORGANIZATION_NAME` infoTypes. If the deprecated DicomConfig or FhirConfig are used, then `LOCATION` must be excluded within TextConfig, and must also be excluded within ImageConfig if image redaction is required."
        }
      },
      "type": "object",
      "required": [
        "annotation",
        "dicom",
        "dicomTagConfig",
        "fhir",
        "fhirFieldConfig",
        "image",
        "operationMetadata",
        "text",
        "useRegionalDataProcessing"
      ]
    },
    "google-native:healthcare/v1beta1:DeidentifyOperationMetadata": {
      "description": "Details about the work the de-identify operation performed.",
      "properties": {
        "fhirOutput": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirOutput",
          "description": "Details about the FHIR store to write the output to."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DeidentifyOperationMetadataResponse": {
      "description": "Details about the work the de-identify operation performed.",
      "properties": {
        "fhirOutput": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirOutputResponse",
          "description": "Details about the FHIR store to write the output to."
        }
      },
      "type": "object",
      "required": [
        "fhirOutput"
      ]
    },
    "google-native:healthcare/v1beta1:DeleteTag": {
      "description": "Delete tag.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DeleteTagResponse": {
      "description": "Delete tag.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DicomConfig": {
      "description": "Specifies the parameters needed for de-identification of DICOM stores.",
      "properties": {
        "filterProfile": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DicomConfigFilterProfile",
          "description": "Tag filtering profile that determines which tags to keep/remove."
        },
        "keepList": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TagFilterList",
          "description": "List of tags to keep. Remove all other tags."
        },
        "removeList": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TagFilterList",
          "description": "List of tags to remove. Keep all other tags."
        },
        "skipIdRedaction": {
          "type": "boolean",
          "description": "If true, skip replacing StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, and MediaStorageSOPInstanceUID and leave them untouched. The Cloud Healthcare API regenerates these UIDs by default based on the DICOM Standard's reasoning: \"Whilst these UIDs cannot be mapped directly to an individual out of context, given access to the original images, or to a database of the original images containing the UIDs, it would be possible to recover the individual's identity.\" http://dicom.nema.org/medical/dicom/current/output/chtml/part15/sect_E.3.9.html"
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DicomConfigFilterProfile": {
      "description": "Tag filtering profile that determines which tags to keep/remove.",
      "type": "string",
      "enum": [
        {
          "name": "TagFilterProfileUnspecified",
          "description": "No tag filtration profile provided. Same as KEEP_ALL_PROFILE.",
          "value": "TAG_FILTER_PROFILE_UNSPECIFIED"
        },
        {
          "name": "MinimalKeepListProfile",
          "description": "Keep only the tags required to produce valid DICOM objects.",
          "value": "MINIMAL_KEEP_LIST_PROFILE"
        },
        {
          "name": "AttributeConfidentialityBasicProfile",
          "description": "Remove tags based on DICOM Standard's Attribute Confidentiality Basic Profile (DICOM Standard Edition 2018e) http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/chapter_E.html.",
          "value": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE"
        },
        {
          "name": "KeepAllProfile",
          "description": "Keep all tags.",
          "value": "KEEP_ALL_PROFILE"
        },
        {
          "name": "DeidentifyTagContents",
          "description": "Inspect within tag contents and replace sensitive text. The process can be configured using the TextConfig. Applies to all tags with the following Value Representation names: AE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS",
          "value": "DEIDENTIFY_TAG_CONTENTS"
        }
      ]
    },
    "google-native:healthcare/v1beta1:DicomConfigResponse": {
      "description": "Specifies the parameters needed for de-identification of DICOM stores.",
      "properties": {
        "filterProfile": {
          "type": "string",
          "description": "Tag filtering profile that determines which tags to keep/remove."
        },
        "keepList": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TagFilterListResponse",
          "description": "List of tags to keep. Remove all other tags."
        },
        "removeList": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TagFilterListResponse",
          "description": "List of tags to remove. Keep all other tags."
        },
        "skipIdRedaction": {
          "type": "boolean",
          "description": "If true, skip replacing StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, and MediaStorageSOPInstanceUID and leave them untouched. The Cloud Healthcare API regenerates these UIDs by default based on the DICOM Standard's reasoning: \"Whilst these UIDs cannot be mapped directly to an individual out of context, given access to the original images, or to a database of the original images containing the UIDs, it would be possible to recover the individual's identity.\" http://dicom.nema.org/medical/dicom/current/output/chtml/part15/sect_E.3.9.html"
        }
      },
      "type": "object",
      "required": [
        "filterProfile",
        "keepList",
        "removeList",
        "skipIdRedaction"
      ]
    },
    "google-native:healthcare/v1beta1:DicomTagConfig": {
      "description": "Specifies the parameters needed for the de-identification of DICOM stores.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Action"
          },
          "description": "Specifies custom tag selections and `Actions` to apply to them. Overrides `options` and `profile`. Conflicting `Actions` are applied in the order given."
        },
        "options": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:Options",
          "description": "Specifies additional options to apply, overriding the base `profile`."
        },
        "profileType": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DicomTagConfigProfileType",
          "description": "Base profile type for handling DICOM tags."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:DicomTagConfigProfileType": {
      "description": "Base profile type for handling DICOM tags.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileTypeUnspecified",
          "description": "No profile provided. Same as `ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE`.",
          "value": "PROFILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "MinimalKeepListProfile",
          "description": "Keep only the tags required to produce valid DICOM objects.",
          "value": "MINIMAL_KEEP_LIST_PROFILE"
        },
        {
          "name": "AttributeConfidentialityBasicProfile",
          "description": "Remove tags based on DICOM Standard's [Attribute Confidentiality Basic Profile (DICOM Standard Edition 2018e)](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/chapter_E.html).",
          "value": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE"
        },
        {
          "name": "KeepAllProfile",
          "description": "Keep all tags.",
          "value": "KEEP_ALL_PROFILE"
        },
        {
          "name": "DeidentifyTagContents",
          "description": "Inspect tag contents and replace sensitive text. The process can be configured using the TextConfig. Applies to all tags with the following [Value Representations] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): AE, LO, LT, PN, SH, ST, UC, UT, DA, DT, AS",
          "value": "DEIDENTIFY_TAG_CONTENTS"
        }
      ]
    },
    "google-native:healthcare/v1beta1:DicomTagConfigResponse": {
      "description": "Specifies the parameters needed for the de-identification of DICOM stores.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:ActionResponse"
          },
          "description": "Specifies custom tag selections and `Actions` to apply to them. Overrides `options` and `profile`. Conflicting `Actions` are applied in the order given."
        },
        "options": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:OptionsResponse",
          "description": "Specifies additional options to apply, overriding the base `profile`."
        },
        "profileType": {
          "type": "string",
          "description": "Base profile type for handling DICOM tags."
        }
      },
      "type": "object",
      "required": [
        "actions",
        "options",
        "profileType"
      ]
    },
    "google-native:healthcare/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:healthcare/v1beta1:FhirConfig": {
      "description": "Specifies how to handle de-identification of a FHIR store.",
      "properties": {
        "defaultKeepExtensions": {
          "type": "boolean",
          "description": "The behaviour for handling FHIR extensions that aren't otherwise specified for de-identification. If true, all extensions are preserved during de-identification by default. If false or unspecified, all extensions are removed during de-identification by default."
        },
        "fieldMetadataList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:FieldMetadata"
          },
          "description": "Specifies FHIR paths to match and how to transform them. Any field that is not matched by a FieldMetadata is passed through to the output dataset unmodified. All extensions will be processed according to `default_keep_extensions`. If a field can be matched by more than one FieldMetadata, the first FieldMetadata.Action is applied."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:FhirConfigResponse": {
      "description": "Specifies how to handle de-identification of a FHIR store.",
      "properties": {
        "defaultKeepExtensions": {
          "type": "boolean",
          "description": "The behaviour for handling FHIR extensions that aren't otherwise specified for de-identification. If true, all extensions are preserved during de-identification by default. If false or unspecified, all extensions are removed during de-identification by default."
        },
        "fieldMetadataList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:FieldMetadataResponse"
          },
          "description": "Specifies FHIR paths to match and how to transform them. Any field that is not matched by a FieldMetadata is passed through to the output dataset unmodified. All extensions will be processed according to `default_keep_extensions`. If a field can be matched by more than one FieldMetadata, the first FieldMetadata.Action is applied."
        }
      },
      "type": "object",
      "required": [
        "defaultKeepExtensions",
        "fieldMetadataList"
      ]
    },
    "google-native:healthcare/v1beta1:FhirFieldConfig": {
      "description": "Specifies how to handle the de-identification of a FHIR store.",
      "properties": {
        "fieldMetadataList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DeidentifyFieldMetadata"
          },
          "description": "Specifies FHIR paths to match and how to transform them. Any field that is not matched by a FieldMetadata `action` is passed through to the output dataset unmodified. All extensions will be processed according to keep_extensions. If a field can be matched by more than one FieldMetadata `action`, the first `action` option is applied. Overrides options and the union field `profile` in FhirFieldConfig."
        },
        "options": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DeidentifyOptions",
          "description": "Specifies additional options, overriding the base ProfileType."
        },
        "profileType": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirFieldConfigProfileType",
          "description": "Base profile type for handling FHIR fields."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:FhirFieldConfigProfileType": {
      "description": "Base profile type for handling FHIR fields.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileTypeUnspecified",
          "description": "No profile provided. Same as `BASIC`.",
          "value": "PROFILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "KeepAll",
          "description": "Keep all fields.",
          "value": "KEEP_ALL"
        },
        {
          "name": "Basic",
          "description": "Transforms known [HIPAA 18](https://www.hhs.gov/hipaa/for-professionals/privacy/special-topics/de-identification/index.html#standard) fields and cleans known unstructured text fields.",
          "value": "BASIC"
        },
        {
          "name": "CleanAll",
          "description": "Cleans all supported tags. Applies to types: Code, Date, DateTime, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml.",
          "value": "CLEAN_ALL"
        }
      ]
    },
    "google-native:healthcare/v1beta1:FhirFieldConfigResponse": {
      "description": "Specifies how to handle the de-identification of a FHIR store.",
      "properties": {
        "fieldMetadataList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DeidentifyFieldMetadataResponse"
          },
          "description": "Specifies FHIR paths to match and how to transform them. Any field that is not matched by a FieldMetadata `action` is passed through to the output dataset unmodified. All extensions will be processed according to keep_extensions. If a field can be matched by more than one FieldMetadata `action`, the first `action` option is applied. Overrides options and the union field `profile` in FhirFieldConfig."
        },
        "options": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DeidentifyOptionsResponse",
          "description": "Specifies additional options, overriding the base ProfileType."
        },
        "profileType": {
          "type": "string",
          "description": "Base profile type for handling FHIR fields."
        }
      },
      "type": "object",
      "required": [
        "fieldMetadataList",
        "options",
        "profileType"
      ]
    },
    "google-native:healthcare/v1beta1:FhirNotificationConfig": {
      "description": "Contains the configuration for FHIR notifications.",
      "properties": {
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. The notification is a `PubsubMessage` with the following fields: * `PubsubMessage.Data` contains the resource name. * `PubsubMessage.MessageId` is the ID of this notification. It is guaranteed to be unique within the topic. * `PubsubMessage.PublishTime` is the time when the message was published. Note that notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. The Cloud Healthcare API service account, service-@gcp-sa-healthcare.iam.gserviceaccount.com, must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail (https://cloud.google.com/healthcare-api/docs/permissions-healthcare-api-gcp-products#dicom_fhir_and_hl7v2_store_cloud_pubsub_permissions). If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare-api/docs/how-tos/logging)."
        },
        "sendFullResource": {
          "type": "boolean",
          "description": "Whether to send full FHIR resource to this Pub/Sub topic for Create and Update operation. Note that setting this to true does not guarantee that all resources will be sent in the format of full FHIR resource. When a resource change is too large or during heavy traffic, only the resource name will be sent. Clients should always check the \"payloadType\" label from a Pub/Sub message to determine whether it needs to fetch the full resource as a separate operation."
        },
        "sendPreviousResourceOnDelete": {
          "type": "boolean",
          "description": "Whether to send full FHIR resource to this Pub/Sub topic for deleting FHIR resource. Note that setting this to true does not guarantee that all previous resources will be sent in the format of full FHIR resource. When a resource change is too large or during heavy traffic, only the resource name will be sent. Clients should always check the \"payloadType\" label from a Pub/Sub message to determine whether it needs to fetch the full previous resource as a separate operation."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:FhirNotificationConfigResponse": {
      "description": "Contains the configuration for FHIR notifications.",
      "properties": {
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. The notification is a `PubsubMessage` with the following fields: * `PubsubMessage.Data` contains the resource name. * `PubsubMessage.MessageId` is the ID of this notification. It is guaranteed to be unique within the topic. * `PubsubMessage.PublishTime` is the time when the message was published. Note that notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. The Cloud Healthcare API service account, service-@gcp-sa-healthcare.iam.gserviceaccount.com, must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail (https://cloud.google.com/healthcare-api/docs/permissions-healthcare-api-gcp-products#dicom_fhir_and_hl7v2_store_cloud_pubsub_permissions). If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare-api/docs/how-tos/logging)."
        },
        "sendFullResource": {
          "type": "boolean",
          "description": "Whether to send full FHIR resource to this Pub/Sub topic for Create and Update operation. Note that setting this to true does not guarantee that all resources will be sent in the format of full FHIR resource. When a resource change is too large or during heavy traffic, only the resource name will be sent. Clients should always check the \"payloadType\" label from a Pub/Sub message to determine whether it needs to fetch the full resource as a separate operation."
        },
        "sendPreviousResourceOnDelete": {
          "type": "boolean",
          "description": "Whether to send full FHIR resource to this Pub/Sub topic for deleting FHIR resource. Note that setting this to true does not guarantee that all previous resources will be sent in the format of full FHIR resource. When a resource change is too large or during heavy traffic, only the resource name will be sent. Clients should always check the \"payloadType\" label from a Pub/Sub message to determine whether it needs to fetch the full previous resource as a separate operation."
        }
      },
      "type": "object",
      "required": [
        "pubsubTopic",
        "sendFullResource",
        "sendPreviousResourceOnDelete"
      ]
    },
    "google-native:healthcare/v1beta1:FhirOutput": {
      "description": "Details about the FHIR store to write the output to.",
      "properties": {
        "fhirStore": {
          "type": "string",
          "description": "Name of the output FHIR store, which must already exist. You must grant the healthcare.fhirResources.update permission on the destination store to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/healthcare/docs/how-tos/permissions-healthcare-api-gcp-products#the_cloud_healthcare_service_agent). The destination store must set enableUpdateCreate to true. The destination store must use FHIR version R4. Writing these resources will consume FHIR operations quota from the project containing the source data. De-identify operation metadata is only generated for DICOM de-identification operations."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:FhirOutputResponse": {
      "description": "Details about the FHIR store to write the output to.",
      "properties": {
        "fhirStore": {
          "type": "string",
          "description": "Name of the output FHIR store, which must already exist. You must grant the healthcare.fhirResources.update permission on the destination store to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/healthcare/docs/how-tos/permissions-healthcare-api-gcp-products#the_cloud_healthcare_service_agent). The destination store must set enableUpdateCreate to true. The destination store must use FHIR version R4. Writing these resources will consume FHIR operations quota from the project containing the source data. De-identify operation metadata is only generated for DICOM de-identification operations."
        }
      },
      "type": "object",
      "required": [
        "fhirStore"
      ]
    },
    "google-native:healthcare/v1beta1:FhirStoreComplexDataTypeReferenceParsing": {
      "description": "Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources.",
      "type": "string",
      "enum": [
        {
          "name": "ComplexDataTypeReferenceParsingUnspecified",
          "description": "No parsing behavior specified. This is the same as DISABLED for backwards compatibility.",
          "value": "COMPLEX_DATA_TYPE_REFERENCE_PARSING_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "References in complex data types are ignored.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "References in complex data types are parsed.",
          "value": "ENABLED"
        }
      ]
    },
    "google-native:healthcare/v1beta1:FhirStoreVersion": {
      "description": "Immutable. The FHIR specification version that this FHIR store supports natively. This field is immutable after store creation. Requests are rejected if they contain FHIR resources of a different version. Version is required for every FHIR store.",
      "type": "string",
      "enum": [
        {
          "name": "VersionUnspecified",
          "description": "VERSION_UNSPECIFIED is treated as STU3 to accommodate the existing FHIR stores.",
          "value": "VERSION_UNSPECIFIED"
        },
        {
          "name": "Dstu2",
          "description": "Draft Standard for Trial Use, [Release 2](https://www.hl7.org/fhir/DSTU2)",
          "value": "DSTU2"
        },
        {
          "name": "Stu3",
          "description": "Standard for Trial Use, [Release 3](https://www.hl7.org/fhir/STU3)",
          "value": "STU3"
        },
        {
          "name": "R4",
          "description": "[Release 4](https://www.hl7.org/fhir/R4)",
          "value": "R4"
        }
      ]
    },
    "google-native:healthcare/v1beta1:Field": {
      "description": "A (sub) field of a type.",
      "properties": {
        "maxOccurs": {
          "type": "integer",
          "description": "The maximum number of times this field can be repeated. 0 or -1 means unbounded."
        },
        "minOccurs": {
          "type": "integer",
          "description": "The minimum number of times this field must be present/repeated."
        },
        "name": {
          "type": "string",
          "description": "The name of the field. For example, \"PID-1\" or just \"1\"."
        },
        "table": {
          "type": "string",
          "description": "The HL7v2 table this field refers to. For example, PID-15 (Patient's Primary Language) usually refers to table \"0296\"."
        },
        "type": {
          "type": "string",
          "description": "The type of this field. A Type with this name must be defined in an Hl7TypesConfig."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:FieldMetadata": {
      "description": "Specifies FHIR paths to match, and how to handle de-identification of matching fields.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FieldMetadataAction",
          "description": "Deidentify action for one field."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of paths to FHIR fields to redact. Each path is a period-separated list where each component is either a field name or FHIR type name. All types begin with an upper case letter. For example, the resource field \"Patient.Address.city\", which uses a string type, can be matched by \"Patient.Address.String\". Path also supports partial matching. For example, \"Patient.Address.city\" can be matched by \"Address.city\" (Patient omitted). Partial matching and type matching can be combined. For example, \"Patient.Address.city\" can be matched by \"Address.String\". For \"choice\" types (those defined in the FHIR spec with the form: field[x]), use two separate components. For example, \"deceasedAge.unit\" is matched by \"Deceased.Age.unit\". Supported types are: AdministrativeGenderCode, Base64Binary, Boolean, Code, Date, DateTime, Decimal, HumanName, Id, Instant, Integer, LanguageCode, Markdown, Oid, PositiveInt, String, UnsignedInt, Uri, Uuid, Xhtml. The sub-type for HumanName(for example HumanName.given, HumanName.family) can be omitted."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:FieldMetadataAction": {
      "description": "Deidentify action for one field.",
      "type": "string",
      "enum": [
        {
          "name": "ActionUnspecified",
          "description": "No action specified.",
          "value": "ACTION_UNSPECIFIED"
        },
        {
          "name": "Transform",
          "description": "Transform the entire field based on transformations specified in TextConfig. When the specified transformation cannot be applied to a field, RedactConfig is used. For example, a Crypto Hash transformation can't be applied to a FHIR Date field.",
          "value": "TRANSFORM"
        },
        {
          "name": "InspectAndTransform",
          "description": "Inspect and transform any found PHI. When `AnnotationConfig` is provided, annotations of PHI will be generated, except for Date and Datetime.",
          "value": "INSPECT_AND_TRANSFORM"
        },
        {
          "name": "DoNotTransform",
          "description": "Do not transform.",
          "value": "DO_NOT_TRANSFORM"
        }
      ]
    },
    "google-native:healthcare/v1beta1:FieldMetadataResponse": {
      "description": "Specifies FHIR paths to match, and how to handle de-identification of matching fields.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Deidentify action for one field."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of paths to FHIR fields to redact. Each path is a period-separated list where each component is either a field name or FHIR type name. All types begin with an upper case letter. For example, the resource field \"Patient.Address.city\", which uses a string type, can be matched by \"Patient.Address.String\". Path also supports partial matching. For example, \"Patient.Address.city\" can be matched by \"Address.city\" (Patient omitted). Partial matching and type matching can be combined. For example, \"Patient.Address.city\" can be matched by \"Address.String\". For \"choice\" types (those defined in the FHIR spec with the form: field[x]), use two separate components. For example, \"deceasedAge.unit\" is matched by \"Deceased.Age.unit\". Supported types are: AdministrativeGenderCode, Base64Binary, Boolean, Code, Date, DateTime, Decimal, HumanName, Id, Instant, Integer, LanguageCode, Markdown, Oid, PositiveInt, String, UnsignedInt, Uri, Uuid, Xhtml. The sub-type for HumanName(for example HumanName.given, HumanName.family) can be omitted."
        }
      },
      "type": "object",
      "required": [
        "action",
        "paths"
      ]
    },
    "google-native:healthcare/v1beta1:FieldResponse": {
      "description": "A (sub) field of a type.",
      "properties": {
        "maxOccurs": {
          "type": "integer",
          "description": "The maximum number of times this field can be repeated. 0 or -1 means unbounded."
        },
        "minOccurs": {
          "type": "integer",
          "description": "The minimum number of times this field must be present/repeated."
        },
        "name": {
          "type": "string",
          "description": "The name of the field. For example, \"PID-1\" or just \"1\"."
        },
        "table": {
          "type": "string",
          "description": "The HL7v2 table this field refers to. For example, PID-15 (Patient's Primary Language) usually refers to table \"0296\"."
        },
        "type": {
          "type": "string",
          "description": "The type of this field. A Type with this name must be defined in an Hl7TypesConfig."
        }
      },
      "type": "object",
      "required": [
        "maxOccurs",
        "minOccurs",
        "name",
        "table",
        "type"
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1ConsentPolicy": {
      "description": "Represents a user's consent in terms of the resources that can be accessed and under what conditions.",
      "properties": {
        "authorizationRule": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:Expr",
          "description": "The request conditions to meet to grant access. In addition to any supported comparison operators, authorization rules may have `IN` operator as well as at most 10 logical operators that are limited to `AND` (`&&`), `OR` (`||`)."
        },
        "resourceAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Attribute"
          },
          "description": "The resources that this policy applies to. A resource is a match if it matches all the attributes listed here. If empty, this policy applies to all User data mappings for the given user."
        }
      },
      "type": "object",
      "required": [
        "authorizationRule"
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1ConsentPolicyResponse": {
      "description": "Represents a user's consent in terms of the resources that can be accessed and under what conditions.",
      "properties": {
        "authorizationRule": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ExprResponse",
          "description": "The request conditions to meet to grant access. In addition to any supported comparison operators, authorization rules may have `IN` operator as well as at most 10 logical operators that are limited to `AND` (`&&`), `OR` (`||`)."
        },
        "resourceAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AttributeResponse"
          },
          "description": "The resources that this policy applies to. A resource is a match if it matches all the attributes listed here. If empty, this policy applies to all User data mappings for the given user."
        }
      },
      "type": "object",
      "required": [
        "authorizationRule",
        "resourceAttributes"
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DeidentifyFieldMetadata": {
      "description": "Specifies the FHIR paths to match and how to handle the de-identification of matching fields.",
      "properties": {
        "characterMaskField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CharacterMaskField",
          "description": "Replace the field's value with a masking character. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml."
        },
        "cleanTextField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CleanTextField",
          "description": "Inspect the field's text and transform sensitive text. Configure using TextConfig. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Date, DateTime, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml."
        },
        "cryptoHashField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CryptoHashField",
          "description": "Replace field value with a hash of that value. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml."
        },
        "dateShiftField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DateShiftField",
          "description": "Shift the date by a randomized number of days. See [date shifting](https://cloud.google.com/dlp/docs/concepts-date-shifting) for more information. Supported [types](https://www.hl7.org/fhir/datatypes.html): Date, DateTime."
        },
        "keepField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KeepField",
          "description": "Keep the field unchanged."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of paths to FHIR fields to redact. Each path is a period-separated list where each component is either a field name or FHIR [type](https://www.hl7.org/fhir/datatypes.html) name. All types begin with an upper case letter. For example, the resource field `Patient.Address.city`, which uses a [string](https://www.hl7.org/fhir/datatypes-definitions.html#Address.city) type, can be matched by `Patient.Address.String`. Partial matching is supported. For example, `Patient.Address.city` can be matched by `Address.city` (with `Patient` omitted). Partial matching and type matching can be combined, for example `Patient.Address.city` can be matched by `Address.String`. For \"choice\" types (those defined in the FHIR spec with the format `field[x]`), use two separate components. For example, `deceasedAge.unit` is matched by `Deceased.Age.unit`. The following types are supported: AdministrativeGenderCode, Base64Binary, Boolean, Code, Date, DateTime, Decimal, HumanName, Id, Instant, Integer, LanguageCode, Markdown, Oid, PositiveInt, String, UnsignedInt, Uri, Uuid, Xhtml. The sub-type for HumanName (for example `HumanName.given`, `HumanName.family`) can be omitted."
        },
        "removeField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RemoveField",
          "description": "Remove the field."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DeidentifyFieldMetadataResponse": {
      "description": "Specifies the FHIR paths to match and how to handle the de-identification of matching fields.",
      "properties": {
        "characterMaskField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CharacterMaskFieldResponse",
          "description": "Replace the field's value with a masking character. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml."
        },
        "cleanTextField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CleanTextFieldResponse",
          "description": "Inspect the field's text and transform sensitive text. Configure using TextConfig. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Date, DateTime, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml."
        },
        "cryptoHashField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CryptoHashFieldResponse",
          "description": "Replace field value with a hash of that value. Supported [types](https://www.hl7.org/fhir/datatypes.html): Code, Decimal, HumanName, Id, LanguageCode, Markdown, Oid, String, Uri, Uuid, Xhtml."
        },
        "dateShiftField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DateShiftFieldResponse",
          "description": "Shift the date by a randomized number of days. See [date shifting](https://cloud.google.com/dlp/docs/concepts-date-shifting) for more information. Supported [types](https://www.hl7.org/fhir/datatypes.html): Date, DateTime."
        },
        "keepField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KeepFieldResponse",
          "description": "Keep the field unchanged."
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of paths to FHIR fields to redact. Each path is a period-separated list where each component is either a field name or FHIR [type](https://www.hl7.org/fhir/datatypes.html) name. All types begin with an upper case letter. For example, the resource field `Patient.Address.city`, which uses a [string](https://www.hl7.org/fhir/datatypes-definitions.html#Address.city) type, can be matched by `Patient.Address.String`. Partial matching is supported. For example, `Patient.Address.city` can be matched by `Address.city` (with `Patient` omitted). Partial matching and type matching can be combined, for example `Patient.Address.city` can be matched by `Address.String`. For \"choice\" types (those defined in the FHIR spec with the format `field[x]`), use two separate components. For example, `deceasedAge.unit` is matched by `Deceased.Age.unit`. The following types are supported: AdministrativeGenderCode, Base64Binary, Boolean, Code, Date, DateTime, Decimal, HumanName, Id, Instant, Integer, LanguageCode, Markdown, Oid, PositiveInt, String, UnsignedInt, Uri, Uuid, Xhtml. The sub-type for HumanName (for example `HumanName.given`, `HumanName.family`) can be omitted."
        },
        "removeField": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RemoveFieldResponse",
          "description": "Remove the field."
        }
      },
      "type": "object",
      "required": [
        "characterMaskField",
        "cleanTextField",
        "cryptoHashField",
        "dateShiftField",
        "keepField",
        "paths",
        "removeField"
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DeidentifyOptions": {
      "description": "Specifies additional options to apply to the base ProfileType.",
      "properties": {
        "characterMaskConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CharacterMaskConfig",
          "description": "Character mask config for CharacterMaskField."
        },
        "contextualDeid": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ContextualDeidConfig",
          "description": "Configure contextual de-id."
        },
        "cryptoHashConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CryptoHashConfig",
          "description": "Crypto hash config for CharacterMaskField."
        },
        "dateShiftConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DateShiftConfig",
          "description": "Date shifting config for CharacterMaskField."
        },
        "keepExtensions": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KeepExtensionsConfig",
          "description": "Configure keeping extensions by default."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DeidentifyOptionsResponse": {
      "description": "Specifies additional options to apply to the base ProfileType.",
      "properties": {
        "characterMaskConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CharacterMaskConfigResponse",
          "description": "Character mask config for CharacterMaskField."
        },
        "contextualDeid": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ContextualDeidConfigResponse",
          "description": "Configure contextual de-id."
        },
        "cryptoHashConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CryptoHashConfigResponse",
          "description": "Crypto hash config for CharacterMaskField."
        },
        "dateShiftConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DateShiftConfigResponse",
          "description": "Date shifting config for CharacterMaskField."
        },
        "keepExtensions": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:KeepExtensionsConfigResponse",
          "description": "Configure keeping extensions by default."
        }
      },
      "type": "object",
      "required": [
        "characterMaskConfig",
        "contextualDeid",
        "cryptoHashConfig",
        "dateShiftConfig",
        "keepExtensions"
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DicomBigQueryDestination": {
      "description": "The BigQuery table where the server writes output.",
      "properties": {
        "force": {
          "type": "boolean",
          "description": "Use `write_disposition` instead. If `write_disposition` is specified, this parameter is ignored. force=false is equivalent to write_disposition=WRITE_EMPTY and force=true is equivalent to write_disposition=WRITE_TRUNCATE."
        },
        "tableUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2000 characters long, in the format `bq://projectId.bqDatasetId.tableId`"
        },
        "writeDisposition": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DicomBigQueryDestinationWriteDisposition",
          "description": "Determines whether the existing table in the destination is to be overwritten or appended to. If a write_disposition is specified, the `force` parameter is ignored."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DicomBigQueryDestinationResponse": {
      "description": "The BigQuery table where the server writes output.",
      "properties": {
        "force": {
          "type": "boolean",
          "description": "Use `write_disposition` instead. If `write_disposition` is specified, this parameter is ignored. force=false is equivalent to write_disposition=WRITE_EMPTY and force=true is equivalent to write_disposition=WRITE_TRUNCATE."
        },
        "tableUri": {
          "type": "string",
          "description": "BigQuery URI to a table, up to 2000 characters long, in the format `bq://projectId.bqDatasetId.tableId`"
        },
        "writeDisposition": {
          "type": "string",
          "description": "Determines whether the existing table in the destination is to be overwritten or appended to. If a write_disposition is specified, the `force` parameter is ignored."
        }
      },
      "type": "object",
      "required": [
        "force",
        "tableUri",
        "writeDisposition"
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DicomBigQueryDestinationWriteDisposition": {
      "description": "Determines whether the existing table in the destination is to be overwritten or appended to. If a write_disposition is specified, the `force` parameter is ignored.",
      "type": "string",
      "enum": [
        {
          "name": "WriteDispositionUnspecified",
          "description": "Default behavior is the same as WRITE_EMPTY.",
          "value": "WRITE_DISPOSITION_UNSPECIFIED"
        },
        {
          "name": "WriteEmpty",
          "description": "Only export data if the destination table is empty.",
          "value": "WRITE_EMPTY"
        },
        {
          "name": "WriteTruncate",
          "description": "Erase all existing data in the destination table before writing the instances.",
          "value": "WRITE_TRUNCATE"
        },
        {
          "name": "WriteAppend",
          "description": "Append data to the destination table.",
          "value": "WRITE_APPEND"
        }
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DicomStreamConfig": {
      "description": "StreamConfig specifies configuration for a streaming DICOM export.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DicomBigQueryDestination",
          "description": "Results are appended to this table. The server creates a new table in the given BigQuery dataset if the specified table does not exist. To enable the Cloud Healthcare API to write to your BigQuery table, you must give the Cloud Healthcare API service account the bigquery.dataEditor role. The service account is: `service-{PROJECT_NUMBER}@gcp-sa-healthcare.iam.gserviceaccount.com`. The PROJECT_NUMBER identifies the project that the DICOM store resides in. To get the project number, go to the Cloud Console Dashboard. It is recommended to not have a custom schema in the destination table which could conflict with the schema created by the Cloud Healthcare API. Instance deletions are not applied to the destination table. The destination's table schema will be automatically updated in case a new instance's data is incompatible with the current schema. The schema should not be updated manually as this can cause incompatibilies that cannot be resolved automatically. One resolution in this case is to delete the incompatible table and let the server recreate one, though the newly created table only contains data after the table recreation. BigQuery imposes a 1 MB limit on streaming insert row size, therefore any instance that generates more than 1 MB of BigQuery data will not be streamed. If an instance cannot be streamed to BigQuery, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1DicomStreamConfigResponse": {
      "description": "StreamConfig specifies configuration for a streaming DICOM export.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DicomBigQueryDestinationResponse",
          "description": "Results are appended to this table. The server creates a new table in the given BigQuery dataset if the specified table does not exist. To enable the Cloud Healthcare API to write to your BigQuery table, you must give the Cloud Healthcare API service account the bigquery.dataEditor role. The service account is: `service-{PROJECT_NUMBER}@gcp-sa-healthcare.iam.gserviceaccount.com`. The PROJECT_NUMBER identifies the project that the DICOM store resides in. To get the project number, go to the Cloud Console Dashboard. It is recommended to not have a custom schema in the destination table which could conflict with the schema created by the Cloud Healthcare API. Instance deletions are not applied to the destination table. The destination's table schema will be automatically updated in case a new instance's data is incompatible with the current schema. The schema should not be updated manually as this can cause incompatibilies that cannot be resolved automatically. One resolution in this case is to delete the incompatible table and let the server recreate one, though the newly created table only contains data after the table recreation. BigQuery imposes a 1 MB limit on streaming insert row size, therefore any instance that generates more than 1 MB of BigQuery data will not be streamed. If an instance cannot be streamed to BigQuery, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination"
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1FhirBigQueryDestination": {
      "description": "The configuration for exporting to BigQuery.",
      "properties": {
        "datasetUri": {
          "type": "string",
          "description": "BigQuery URI to an existing dataset, up to 2000 characters long, in the format `bq://projectId.bqDatasetId`."
        },
        "force": {
          "type": "boolean",
          "description": "Use `write_disposition` instead. If `write_disposition` is specified, this parameter is ignored. force=false is equivalent to write_disposition=WRITE_EMPTY and force=true is equivalent to write_disposition=WRITE_TRUNCATE."
        },
        "schemaConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchemaConfig",
          "description": "The configuration for the exported BigQuery schema."
        },
        "writeDisposition": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1FhirBigQueryDestinationWriteDisposition",
          "description": "Determines if existing data in the destination dataset is overwritten, appended to, or not written if the tables contain data. If a write_disposition is specified, the `force` parameter is ignored."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1FhirBigQueryDestinationResponse": {
      "description": "The configuration for exporting to BigQuery.",
      "properties": {
        "datasetUri": {
          "type": "string",
          "description": "BigQuery URI to an existing dataset, up to 2000 characters long, in the format `bq://projectId.bqDatasetId`."
        },
        "force": {
          "type": "boolean",
          "description": "Use `write_disposition` instead. If `write_disposition` is specified, this parameter is ignored. force=false is equivalent to write_disposition=WRITE_EMPTY and force=true is equivalent to write_disposition=WRITE_TRUNCATE."
        },
        "schemaConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchemaConfigResponse",
          "description": "The configuration for the exported BigQuery schema."
        },
        "writeDisposition": {
          "type": "string",
          "description": "Determines if existing data in the destination dataset is overwritten, appended to, or not written if the tables contain data. If a write_disposition is specified, the `force` parameter is ignored."
        }
      },
      "type": "object",
      "required": [
        "datasetUri",
        "force",
        "schemaConfig",
        "writeDisposition"
      ]
    },
    "google-native:healthcare/v1beta1:GoogleCloudHealthcareV1beta1FhirBigQueryDestinationWriteDisposition": {
      "description": "Determines if existing data in the destination dataset is overwritten, appended to, or not written if the tables contain data. If a write_disposition is specified, the `force` parameter is ignored.",
      "type": "string",
      "enum": [
        {
          "name": "WriteDispositionUnspecified",
          "description": "Default behavior is the same as WRITE_EMPTY.",
          "value": "WRITE_DISPOSITION_UNSPECIFIED"
        },
        {
          "name": "WriteEmpty",
          "description": "Only export data if the destination tables are empty.",
          "value": "WRITE_EMPTY"
        },
        {
          "name": "WriteTruncate",
          "description": "Erase all existing data in the destination tables before writing the FHIR resources.",
          "value": "WRITE_TRUNCATE"
        },
        {
          "name": "WriteAppend",
          "description": "Append data to the destination tables.",
          "value": "WRITE_APPEND"
        }
      ]
    },
    "google-native:healthcare/v1beta1:Hl7SchemaConfig": {
      "description": "Root config message for HL7v2 schema. This contains a schema structure of groups and segments, and filters that determine which messages to apply the schema structure to.",
      "properties": {
        "messageSchemaConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from each HL7v2 message type and trigger event pair, such as ADT_A04, to its schema configuration root group."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:VersionSource"
          },
          "description": "Each VersionSource is tested and only if they all match is the schema used for the message."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:Hl7SchemaConfigResponse": {
      "description": "Root config message for HL7v2 schema. This contains a schema structure of groups and segments, and filters that determine which messages to apply the schema structure to.",
      "properties": {
        "messageSchemaConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from each HL7v2 message type and trigger event pair, such as ADT_A04, to its schema configuration root group."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:VersionSourceResponse"
          },
          "description": "Each VersionSource is tested and only if they all match is the schema used for the message."
        }
      },
      "type": "object",
      "required": [
        "messageSchemaConfigs",
        "version"
      ]
    },
    "google-native:healthcare/v1beta1:Hl7TypesConfig": {
      "description": "Root config for HL7v2 datatype definitions for a specific HL7v2 version.",
      "properties": {
        "type": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Type"
          },
          "description": "The HL7v2 type definitions."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:VersionSource"
          },
          "description": "The version selectors that this config applies to. A message must match ALL version sources to apply."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:Hl7TypesConfigResponse": {
      "description": "Root config for HL7v2 datatype definitions for a specific HL7v2 version.",
      "properties": {
        "type": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:TypeResponse"
          },
          "description": "The HL7v2 type definitions."
        },
        "version": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:VersionSourceResponse"
          },
          "description": "The version selectors that this config applies to. A message must match ALL version sources to apply."
        }
      },
      "type": "object",
      "required": [
        "type",
        "version"
      ]
    },
    "google-native:healthcare/v1beta1:Hl7V2NotificationConfig": {
      "description": "Specifies where and whether to send notifications upon changes to a data store.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Restricts notifications sent for messages matching a filter. If this is empty, all messages are matched. The following syntax is available: * A string field value can be written as text inside quotation marks, for example `\"query text\"`. The only valid relational operation for text fields is equality (`=`), where text is searched within the field, rather than having the field be equal to the text. For example, `\"Comment = great\"` returns messages with `great` in the comment field. * A number field value can be written as an integer, a decimal, or an exponential. The valid relational operators for number fields are the equality operator (`=`), along with the less than/greater than operators (`<`, `<=`, `>`, `>=`). Note that there is no inequality (`!=`) operator. You can prepend the `NOT` operator to an expression to negate it. * A date field value must be written in `yyyy-mm-dd` form. Fields with date and time use the RFC3339 time format. Leading zeros are required for one-digit months and days. The valid relational operators for date fields are the equality operator (`=`) , along with the less than/greater than operators (`<`, `<=`, `>`, `>=`). Note that there is no inequality (`!=`) operator. You can prepend the `NOT` operator to an expression to negate it. * Multiple field query expressions can be combined in one query by adding `AND` or `OR` operators between the expressions. If a boolean operator appears within a quoted string, it is not treated as special, it's just another part of the character string to be matched. You can prepend the `NOT` operator to an expression to negate it. Fields/functions available for filtering are: * `message_type`, from the MSH-9.1 field. For example, `NOT message_type = \"ADT\"`. * `send_date` or `sendDate`, the YYYY-MM-DD date the message was sent in the dataset's time_zone, from the MSH-7 segment. For example, `send_date < \"2017-01-02\"`. * `send_time`, the timestamp when the message was sent, using the RFC3339 time format for comparisons, from the MSH-7 segment. For example, `send_time < \"2017-01-02T00:00:00-05:00\"`. * `create_time`, the timestamp when the message was created in the HL7v2 store. Use the RFC3339 time format for comparisons. For example, `create_time < \"2017-01-02T00:00:00-05:00\"`. * `send_facility`, the care center that the message came from, from the MSH-4 segment. For example, `send_facility = \"ABC\"`. * `PatientId(value, type)`, which matches if the message lists a patient having an ID of the given value and type in the PID-2, PID-3, or PID-4 segments. For example, `PatientId(\"123456\", \"MRN\")`. * `labels.x`, a string value of the label with key `x` as set using the Message.labels map. For example, `labels.\"priority\"=\"high\"`. The operator `:*` can be used to assert the existence of a label. For example, `labels.\"priority\":*`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. The notification is a `PubsubMessage` with the following fields: * `PubsubMessage.Data` contains the resource name. * `PubsubMessage.MessageId` is the ID of this notification. It is guaranteed to be unique within the topic. * `PubsubMessage.PublishTime` is the time when the message was published. Note that notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. Cloud Healthcare API service account must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail. If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging)."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:Hl7V2NotificationConfigResponse": {
      "description": "Specifies where and whether to send notifications upon changes to a data store.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Restricts notifications sent for messages matching a filter. If this is empty, all messages are matched. The following syntax is available: * A string field value can be written as text inside quotation marks, for example `\"query text\"`. The only valid relational operation for text fields is equality (`=`), where text is searched within the field, rather than having the field be equal to the text. For example, `\"Comment = great\"` returns messages with `great` in the comment field. * A number field value can be written as an integer, a decimal, or an exponential. The valid relational operators for number fields are the equality operator (`=`), along with the less than/greater than operators (`<`, `<=`, `>`, `>=`). Note that there is no inequality (`!=`) operator. You can prepend the `NOT` operator to an expression to negate it. * A date field value must be written in `yyyy-mm-dd` form. Fields with date and time use the RFC3339 time format. Leading zeros are required for one-digit months and days. The valid relational operators for date fields are the equality operator (`=`) , along with the less than/greater than operators (`<`, `<=`, `>`, `>=`). Note that there is no inequality (`!=`) operator. You can prepend the `NOT` operator to an expression to negate it. * Multiple field query expressions can be combined in one query by adding `AND` or `OR` operators between the expressions. If a boolean operator appears within a quoted string, it is not treated as special, it's just another part of the character string to be matched. You can prepend the `NOT` operator to an expression to negate it. Fields/functions available for filtering are: * `message_type`, from the MSH-9.1 field. For example, `NOT message_type = \"ADT\"`. * `send_date` or `sendDate`, the YYYY-MM-DD date the message was sent in the dataset's time_zone, from the MSH-7 segment. For example, `send_date < \"2017-01-02\"`. * `send_time`, the timestamp when the message was sent, using the RFC3339 time format for comparisons, from the MSH-7 segment. For example, `send_time < \"2017-01-02T00:00:00-05:00\"`. * `create_time`, the timestamp when the message was created in the HL7v2 store. Use the RFC3339 time format for comparisons. For example, `create_time < \"2017-01-02T00:00:00-05:00\"`. * `send_facility`, the care center that the message came from, from the MSH-4 segment. For example, `send_facility = \"ABC\"`. * `PatientId(value, type)`, which matches if the message lists a patient having an ID of the given value and type in the PID-2, PID-3, or PID-4 segments. For example, `PatientId(\"123456\", \"MRN\")`. * `labels.x`, a string value of the label with key `x` as set using the Message.labels map. For example, `labels.\"priority\"=\"high\"`. The operator `:*` can be used to assert the existence of a label. For example, `labels.\"priority\":*`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. The notification is a `PubsubMessage` with the following fields: * `PubsubMessage.Data` contains the resource name. * `PubsubMessage.MessageId` is the ID of this notification. It is guaranteed to be unique within the topic. * `PubsubMessage.PublishTime` is the time when the message was published. Note that notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. Cloud Healthcare API service account must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail. If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging. For more information, see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging)."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "pubsubTopic"
      ]
    },
    "google-native:healthcare/v1beta1:Image": {
      "description": "Raw bytes representing consent artifact content.",
      "properties": {
        "gcsUri": {
          "type": "string",
          "description": "Input only. Points to a Cloud Storage URI containing the consent artifact content. The URI must be in the following format: `gs://{bucket_id}/{object_id}`. The Cloud Healthcare API service account must have the `roles/storage.objectViewer` Cloud IAM role for this Cloud Storage location. The consent artifact content at this URI is copied to a Cloud Storage location managed by the Cloud Healthcare API. Responses to fetching requests return the consent artifact content in raw_bytes."
        },
        "rawBytes": {
          "type": "string",
          "description": "Consent artifact content represented as a stream of bytes. This field is populated when returned in GetConsentArtifact response, but not included in CreateConsentArtifact and ListConsentArtifact response."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ImageAnnotation": {
      "description": "Image annotation.",
      "properties": {
        "boundingPolys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:BoundingPoly"
          },
          "description": "The list of polygons outlining the sensitive regions in the image."
        },
        "frameIndex": {
          "type": "integer",
          "description": "0-based index of the image frame. For example, an image frame in a DICOM instance."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ImageAnnotationResponse": {
      "description": "Image annotation.",
      "properties": {
        "boundingPolys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:BoundingPolyResponse"
          },
          "description": "The list of polygons outlining the sensitive regions in the image."
        },
        "frameIndex": {
          "type": "integer",
          "description": "0-based index of the image frame. For example, an image frame in a DICOM instance."
        }
      },
      "type": "object",
      "required": [
        "boundingPolys",
        "frameIndex"
      ]
    },
    "google-native:healthcare/v1beta1:ImageConfig": {
      "description": "Specifies how to handle de-identification of image pixels.",
      "properties": {
        "additionalInfoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional InfoTypes to redact in the images in addition to those used by `text_redaction_mode`. Can only be used when `text_redaction_mode` is set to `REDACT_SENSITIVE_TEXT`, `REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS` or `TEXT_REDACTION_MODE_UNSPECIFIED`."
        },
        "excludeInfoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "InfoTypes to skip redacting, overriding those used by `text_redaction_mode`. Can only be used when `text_redaction_mode` is set to `REDACT_SENSITIVE_TEXT` or `REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS`."
        },
        "textRedactionMode": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageConfigTextRedactionMode",
          "description": "Determines how to redact text from image."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ImageConfigResponse": {
      "description": "Specifies how to handle de-identification of image pixels.",
      "properties": {
        "additionalInfoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional InfoTypes to redact in the images in addition to those used by `text_redaction_mode`. Can only be used when `text_redaction_mode` is set to `REDACT_SENSITIVE_TEXT`, `REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS` or `TEXT_REDACTION_MODE_UNSPECIFIED`."
        },
        "excludeInfoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "InfoTypes to skip redacting, overriding those used by `text_redaction_mode`. Can only be used when `text_redaction_mode` is set to `REDACT_SENSITIVE_TEXT` or `REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS`."
        },
        "textRedactionMode": {
          "type": "string",
          "description": "Determines how to redact text from image."
        }
      },
      "type": "object",
      "required": [
        "additionalInfoTypes",
        "excludeInfoTypes",
        "textRedactionMode"
      ]
    },
    "google-native:healthcare/v1beta1:ImageConfigTextRedactionMode": {
      "description": "Determines how to redact text from image.",
      "type": "string",
      "enum": [
        {
          "name": "TextRedactionModeUnspecified",
          "description": "No text redaction specified. Same as REDACT_NO_TEXT.",
          "value": "TEXT_REDACTION_MODE_UNSPECIFIED"
        },
        {
          "name": "RedactAllText",
          "description": "Redact all text.",
          "value": "REDACT_ALL_TEXT"
        },
        {
          "name": "RedactSensitiveText",
          "description": "Redact sensitive text. Uses the set of [Default DICOM InfoTypes](https://cloud.google.com/healthcare-api/docs/how-tos/dicom-deidentify#default_dicom_infotypes).",
          "value": "REDACT_SENSITIVE_TEXT"
        },
        {
          "name": "RedactNoText",
          "description": "Do not redact text.",
          "value": "REDACT_NO_TEXT"
        },
        {
          "name": "RedactSensitiveTextCleanDescriptors",
          "description": "This mode is like `REDACT_SENSITIVE_TEXT` with the addition of the [Clean Descriptors Option] (https://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/sect_E.3.5.html) enabled: When cleaning text, the process attempts to transform phrases matching any of the tags marked for removal (action codes D, Z, X, and U) in the [Basic Profile] (https://dicom.nema.org/medical/dicom/2018e/output/chtml/part15/chapter_E.html). These contextual phrases are replaced with the token \"[CTX]\". This mode uses an additional InfoType during inspection.",
          "value": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS"
        }
      ]
    },
    "google-native:healthcare/v1beta1:ImageResponse": {
      "description": "Raw bytes representing consent artifact content.",
      "properties": {
        "gcsUri": {
          "type": "string",
          "description": "Input only. Points to a Cloud Storage URI containing the consent artifact content. The URI must be in the following format: `gs://{bucket_id}/{object_id}`. The Cloud Healthcare API service account must have the `roles/storage.objectViewer` Cloud IAM role for this Cloud Storage location. The consent artifact content at this URI is copied to a Cloud Storage location managed by the Cloud Healthcare API. Responses to fetching requests return the consent artifact content in raw_bytes."
        },
        "rawBytes": {
          "type": "string",
          "description": "Consent artifact content represented as a stream of bytes. This field is populated when returned in GetConsentArtifact response, but not included in CreateConsentArtifact and ListConsentArtifact response."
        }
      },
      "type": "object",
      "required": [
        "gcsUri",
        "rawBytes"
      ]
    },
    "google-native:healthcare/v1beta1:InfoTypeTransformation": {
      "description": "A transformation to apply to text that is identified as a specific info_type.",
      "properties": {
        "characterMaskConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CharacterMaskConfig",
          "description": "Config for character mask."
        },
        "cryptoHashConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CryptoHashConfig",
          "description": "Config for crypto hash."
        },
        "dateShiftConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DateShiftConfig",
          "description": "Config for date shift."
        },
        "infoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "`InfoTypes` to apply this transformation to. If this is not specified, this transformation becomes the default transformation, and is used for any `info_type` that is not specified in another transformation."
        },
        "redactConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RedactConfig",
          "description": "Config for text redaction."
        },
        "replaceWithInfoTypeConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ReplaceWithInfoTypeConfig",
          "description": "Config for replace with InfoType."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:InfoTypeTransformationResponse": {
      "description": "A transformation to apply to text that is identified as a specific info_type.",
      "properties": {
        "characterMaskConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CharacterMaskConfigResponse",
          "description": "Config for character mask."
        },
        "cryptoHashConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CryptoHashConfigResponse",
          "description": "Config for crypto hash."
        },
        "dateShiftConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DateShiftConfigResponse",
          "description": "Config for date shift."
        },
        "infoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "`InfoTypes` to apply this transformation to. If this is not specified, this transformation becomes the default transformation, and is used for any `info_type` that is not specified in another transformation."
        },
        "redactConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:RedactConfigResponse",
          "description": "Config for text redaction."
        },
        "replaceWithInfoTypeConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ReplaceWithInfoTypeConfigResponse",
          "description": "Config for replace with InfoType."
        }
      },
      "type": "object",
      "required": [
        "characterMaskConfig",
        "cryptoHashConfig",
        "dateShiftConfig",
        "infoTypes",
        "redactConfig",
        "replaceWithInfoTypeConfig"
      ]
    },
    "google-native:healthcare/v1beta1:KeepExtensionsConfig": {
      "description": "The behavior for handling FHIR extensions that aren't otherwise specified for de-identification. If provided, all extensions are preserved during de-identification by default. If unspecified, all extensions are removed during de-identification by default.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:KeepExtensionsConfigResponse": {
      "description": "The behavior for handling FHIR extensions that aren't otherwise specified for de-identification. If provided, all extensions are preserved during de-identification by default. If unspecified, all extensions are removed during de-identification by default.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:KeepField": {
      "description": "Keep field unchanged.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:KeepFieldResponse": {
      "description": "Keep field unchanged.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:KeepTag": {
      "description": "Keep tag unchanged.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:KeepTagResponse": {
      "description": "Keep tag unchanged.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:KmsWrappedCryptoKey": {
      "description": "Include to use an existing data crypto key wrapped by KMS. The wrapped key must be a 128-, 192-, or 256-bit key. The key must grant the Cloud IAM permission `cloudkms.cryptoKeyVersions.useToDecrypt` to the project's Cloud Healthcare Service Agent service account. For more information, see [Creating a wrapped key] (https://cloud.google.com/dlp/docs/create-wrapped-key).",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "The resource name of the KMS CryptoKey to use for unwrapping. For example, `projects/{project_id}/locations/{location_id}/keyRings/{keyring}/cryptoKeys/{key}`."
        },
        "wrappedKey": {
          "type": "string",
          "description": "The wrapped data crypto key."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey",
        "wrappedKey"
      ]
    },
    "google-native:healthcare/v1beta1:KmsWrappedCryptoKeyResponse": {
      "description": "Include to use an existing data crypto key wrapped by KMS. The wrapped key must be a 128-, 192-, or 256-bit key. The key must grant the Cloud IAM permission `cloudkms.cryptoKeyVersions.useToDecrypt` to the project's Cloud Healthcare Service Agent service account. For more information, see [Creating a wrapped key] (https://cloud.google.com/dlp/docs/create-wrapped-key).",
      "properties": {
        "cryptoKey": {
          "type": "string",
          "description": "The resource name of the KMS CryptoKey to use for unwrapping. For example, `projects/{project_id}/locations/{location_id}/keyRings/{keyring}/cryptoKeys/{key}`."
        },
        "wrappedKey": {
          "type": "string",
          "description": "The wrapped data crypto key."
        }
      },
      "type": "object",
      "required": [
        "cryptoKey",
        "wrappedKey"
      ]
    },
    "google-native:healthcare/v1beta1:NotificationConfig": {
      "description": "Specifies where to send notifications upon changes to a data store.",
      "properties": {
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. PubsubMessage.Data contains the resource name. PubsubMessage.MessageId is the ID of this message. It is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message was published. Notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. Cloud Healthcare API service account must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail. If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging)). If the number of errors exceeds a certain rate, some aren't submitted. Note that not all operations trigger notifications, see [Configuring Pub/Sub notifications](https://cloud.google.com/healthcare/docs/how-tos/pubsub) for specific details."
        },
        "sendForBulkImport": {
          "type": "boolean",
          "description": "Indicates whether or not to send Pub/Sub notifications on bulk import. Only supported for DICOM imports."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:NotificationConfigResponse": {
      "description": "Specifies where to send notifications upon changes to a data store.",
      "properties": {
        "pubsubTopic": {
          "type": "string",
          "description": "The [Pub/Sub](https://cloud.google.com/pubsub/docs/) topic that notifications of changes are published on. Supplied by the client. PubsubMessage.Data contains the resource name. PubsubMessage.MessageId is the ID of this message. It is guaranteed to be unique within the topic. PubsubMessage.PublishTime is the time at which the message was published. Notifications are only sent if the topic is non-empty. [Topic names](https://cloud.google.com/pubsub/docs/overview#names) must be scoped to a project. Cloud Healthcare API service account must have publisher permissions on the given Pub/Sub topic. Not having adequate permissions causes the calls that send notifications to fail. If a notification can't be published to Pub/Sub, errors are logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging)). If the number of errors exceeds a certain rate, some aren't submitted. Note that not all operations trigger notifications, see [Configuring Pub/Sub notifications](https://cloud.google.com/healthcare/docs/how-tos/pubsub) for specific details."
        },
        "sendForBulkImport": {
          "type": "boolean",
          "description": "Indicates whether or not to send Pub/Sub notifications on bulk import. Only supported for DICOM imports."
        }
      },
      "type": "object",
      "required": [
        "pubsubTopic",
        "sendForBulkImport"
      ]
    },
    "google-native:healthcare/v1beta1:Options": {
      "description": "Specifies additional options to apply to the base profile.",
      "properties": {
        "cleanDescriptors": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CleanDescriptorsOption",
          "description": "Set Clean Descriptors Option."
        },
        "cleanImage": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageConfig",
          "description": "Apply `Action.clean_image` to [`PixelData`](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part06/chapter_6.html) as configured."
        },
        "primaryIds": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:OptionsPrimaryIds",
          "description": "Set `Action` for [`StudyInstanceUID`, `SeriesInstanceUID`, `SOPInstanceUID`, and `MediaStorageSOPInstanceUID`](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part06/chapter_6.html)."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:OptionsPrimaryIds": {
      "description": "Set `Action` for [`StudyInstanceUID`, `SeriesInstanceUID`, `SOPInstanceUID`, and `MediaStorageSOPInstanceUID`](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part06/chapter_6.html).",
      "type": "string",
      "enum": [
        {
          "name": "PrimaryIdsOptionUnspecified",
          "description": "No value provided. Default to the behavior specified by the base profile.",
          "value": "PRIMARY_IDS_OPTION_UNSPECIFIED"
        },
        {
          "name": "Keep",
          "description": "Keep primary IDs.",
          "value": "KEEP"
        },
        {
          "name": "Regen",
          "description": "Regenerate primary IDs.",
          "value": "REGEN"
        }
      ]
    },
    "google-native:healthcare/v1beta1:OptionsResponse": {
      "description": "Specifies additional options to apply to the base profile.",
      "properties": {
        "cleanDescriptors": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:CleanDescriptorsOptionResponse",
          "description": "Set Clean Descriptors Option."
        },
        "cleanImage": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageConfigResponse",
          "description": "Apply `Action.clean_image` to [`PixelData`](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part06/chapter_6.html) as configured."
        },
        "primaryIds": {
          "type": "string",
          "description": "Set `Action` for [`StudyInstanceUID`, `SeriesInstanceUID`, `SOPInstanceUID`, and `MediaStorageSOPInstanceUID`](http://dicom.nema.org/medical/dicom/2018e/output/chtml/part06/chapter_6.html)."
        }
      },
      "type": "object",
      "required": [
        "cleanDescriptors",
        "cleanImage",
        "primaryIds"
      ]
    },
    "google-native:healthcare/v1beta1:ParsedDataResponse": {
      "description": "The content of an HL7v2 message in a structured format.",
      "properties": {
        "segments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SegmentResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "segments"
      ]
    },
    "google-native:healthcare/v1beta1:ParserConfig": {
      "description": "The configuration for the parser. It determines how the server parses the messages.",
      "properties": {
        "allowNullHeader": {
          "type": "boolean",
          "description": "Determines whether messages with no header are allowed."
        },
        "schema": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchemaPackage",
          "description": "Schemas used to parse messages in this store, if schematized parsing is desired."
        },
        "segmentTerminator": {
          "type": "string",
          "description": "Byte(s) to use as the segment terminator. If this is unset, '\\r' is used as segment terminator, matching the HL7 version 2 specification."
        },
        "version": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ParserConfigVersion",
          "description": "Immutable. Determines the version of both the default parser to be used when `schema` is not given, as well as the schematized parser used when `schema` is specified. This field is immutable after HL7v2 store creation."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ParserConfigResponse": {
      "description": "The configuration for the parser. It determines how the server parses the messages.",
      "properties": {
        "allowNullHeader": {
          "type": "boolean",
          "description": "Determines whether messages with no header are allowed."
        },
        "schema": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchemaPackageResponse",
          "description": "Schemas used to parse messages in this store, if schematized parsing is desired."
        },
        "segmentTerminator": {
          "type": "string",
          "description": "Byte(s) to use as the segment terminator. If this is unset, '\\r' is used as segment terminator, matching the HL7 version 2 specification."
        },
        "version": {
          "type": "string",
          "description": "Immutable. Determines the version of both the default parser to be used when `schema` is not given, as well as the schematized parser used when `schema` is specified. This field is immutable after HL7v2 store creation."
        }
      },
      "type": "object",
      "required": [
        "allowNullHeader",
        "schema",
        "segmentTerminator",
        "version"
      ]
    },
    "google-native:healthcare/v1beta1:ParserConfigVersion": {
      "description": "Immutable. Determines the version of both the default parser to be used when `schema` is not given, as well as the schematized parser used when `schema` is specified. This field is immutable after HL7v2 store creation.",
      "type": "string",
      "enum": [
        {
          "name": "ParserVersionUnspecified",
          "description": "Unspecified parser version, equivalent to V1.",
          "value": "PARSER_VERSION_UNSPECIFIED"
        },
        {
          "name": "V1",
          "description": "The `parsed_data` includes every given non-empty message field except the Field Separator (MSH-1) field. As a result, the parsed MSH segment starts with the MSH-2 field and the field numbers are off-by-one with respect to the HL7 standard.",
          "value": "V1"
        },
        {
          "name": "V2",
          "description": "The `parsed_data` includes every given non-empty message field.",
          "value": "V2"
        },
        {
          "name": "V3",
          "description": "This version is the same as V2, with the following change. The `parsed_data` contains unescaped escaped field separators, component separators, sub-component separators, repetition separators, escape characters, and truncation characters. If `schema` is specified, the schematized parser uses improved parsing heuristics compared to previous versions.",
          "value": "V3"
        }
      ]
    },
    "google-native:healthcare/v1beta1:PatientId": {
      "description": "A patient identifier and associated type.",
      "properties": {
        "type": {
          "type": "string",
          "description": "ID type. For example, MRN or NHS."
        },
        "value": {
          "type": "string",
          "description": "The patient's unique identifier."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:PatientIdResponse": {
      "description": "A patient identifier and associated type.",
      "properties": {
        "type": {
          "type": "string",
          "description": "ID type. For example, MRN or NHS."
        },
        "value": {
          "type": "string",
          "description": "The patient's unique identifier."
        }
      },
      "type": "object",
      "required": [
        "type",
        "value"
      ]
    },
    "google-native:healthcare/v1beta1:RecurseTag": {
      "description": "Recursively apply DICOM de-id to tags nested in a sequence. Supported [Value Representation] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): SQ",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RecurseTagResponse": {
      "description": "Recursively apply DICOM de-id to tags nested in a sequence. Supported [Value Representation] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): SQ",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RedactConfig": {
      "description": "Define how to redact sensitive values. Default behaviour is erase. For example, \"My name is Jane.\" becomes \"My name is .\"",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RedactConfigResponse": {
      "description": "Define how to redact sensitive values. Default behaviour is erase. For example, \"My name is Jane.\" becomes \"My name is .\"",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RegenUidTag": {
      "description": "Replace UID with a new generated UID. Supported [Value Representation] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): UI",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RegenUidTagResponse": {
      "description": "Replace UID with a new generated UID. Supported [Value Representation] (http://dicom.nema.org/medical/dicom/2018e/output/chtml/part05/sect_6.2.html#table_6.2-1): UI",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RemoveField": {
      "description": "Remove field.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RemoveFieldResponse": {
      "description": "Remove field.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RemoveTag": {
      "description": "Replace with empty tag.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:RemoveTagResponse": {
      "description": "Replace with empty tag.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ReplaceWithInfoTypeConfig": {
      "description": "When using the INSPECT_AND_TRANSFORM action, each match is replaced with the name of the info_type. For example, \"My name is Jane\" becomes \"My name is [PERSON_NAME].\" The TRANSFORM action is equivalent to redacting.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ReplaceWithInfoTypeConfigResponse": {
      "description": "When using the INSPECT_AND_TRANSFORM action, each match is replaced with the name of the info_type. For example, \"My name is Jane\" becomes \"My name is [PERSON_NAME].\" The TRANSFORM action is equivalent to redacting.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ResetTag": {
      "description": "Reset tag to a placeholder value.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ResetTagResponse": {
      "description": "Reset tag to a placeholder value.",
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ResourceAnnotation": {
      "description": "Resource level annotation.",
      "properties": {
        "label": {
          "type": "string",
          "description": "A description of the annotation record."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ResourceAnnotationResponse": {
      "description": "Resource level annotation.",
      "properties": {
        "label": {
          "type": "string",
          "description": "A description of the annotation record."
        }
      },
      "type": "object",
      "required": [
        "label"
      ]
    },
    "google-native:healthcare/v1beta1:SchemaConfig": {
      "description": "Configuration for the FHIR BigQuery schema. Determines how the server generates the schema.",
      "properties": {
        "lastUpdatedPartitionConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TimePartitioning",
          "description": "The configuration for exported BigQuery tables to be partitioned by FHIR resource's last updated time column."
        },
        "recursiveStructureDepth": {
          "type": "string",
          "description": "The depth for all recursive structures in the output analytics schema. For example, `concept` in the CodeSystem resource is a recursive structure; when the depth is 2, the CodeSystem table will have a column called `concept.concept` but not `concept.concept.concept`. If not specified or set to 0, the server will use the default value 2. The maximum depth allowed is 5."
        },
        "schemaType": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchemaConfigSchemaType",
          "description": "Specifies the output schema type. Schema type is required."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:SchemaConfigResponse": {
      "description": "Configuration for the FHIR BigQuery schema. Determines how the server generates the schema.",
      "properties": {
        "lastUpdatedPartitionConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TimePartitioningResponse",
          "description": "The configuration for exported BigQuery tables to be partitioned by FHIR resource's last updated time column."
        },
        "recursiveStructureDepth": {
          "type": "string",
          "description": "The depth for all recursive structures in the output analytics schema. For example, `concept` in the CodeSystem resource is a recursive structure; when the depth is 2, the CodeSystem table will have a column called `concept.concept` but not `concept.concept.concept`. If not specified or set to 0, the server will use the default value 2. The maximum depth allowed is 5."
        },
        "schemaType": {
          "type": "string",
          "description": "Specifies the output schema type. Schema type is required."
        }
      },
      "type": "object",
      "required": [
        "lastUpdatedPartitionConfig",
        "recursiveStructureDepth",
        "schemaType"
      ]
    },
    "google-native:healthcare/v1beta1:SchemaConfigSchemaType": {
      "description": "Specifies the output schema type. Schema type is required.",
      "type": "string",
      "enum": [
        {
          "name": "SchemaTypeUnspecified",
          "description": "No schema type specified. This type is unsupported.",
          "value": "SCHEMA_TYPE_UNSPECIFIED"
        },
        {
          "name": "Lossless",
          "description": "A data-driven schema generated from the fields present in the FHIR data being exported, with no additional simplification. This type cannot be used for streaming to BigQuery.",
          "value": "LOSSLESS"
        },
        {
          "name": "Analytics",
          "description": "Analytics schema defined by the FHIR community. See https://github.com/FHIR/sql-on-fhir/blob/master/sql-on-fhir.md. BigQuery only allows a maximum of 10,000 columns per table. Due to this limitation, the server will not generate schemas for fields of type `Resource`, which can hold any resource type. The affected fields are `Parameters.parameter.resource`, `Bundle.entry.resource`, and `Bundle.entry.response.outcome`. Analytics schema does not gracefully handle extensions with one or more occurrences, anaytics schema also does not handle contained resource.",
          "value": "ANALYTICS"
        },
        {
          "name": "AnalyticsV2",
          "description": "Analytics V2, similar to schema defined by the FHIR community, with added support for extensions with one or more occurrences and contained resources in stringified JSON. Analytics V2 uses more space in the destination table than Analytics V1. It is generally recommended to use Analytics V2 over Analytics.",
          "value": "ANALYTICS_V2"
        }
      ]
    },
    "google-native:healthcare/v1beta1:SchemaPackage": {
      "description": "A schema package contains a set of schemas and type definitions.",
      "properties": {
        "ignoreMinOccurs": {
          "type": "boolean",
          "description": "Flag to ignore all min_occurs restrictions in the schema. This means that incoming messages can omit any group, segment, field, component, or subcomponent."
        },
        "schemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Hl7SchemaConfig"
          },
          "description": "Schema configs that are layered based on their VersionSources that match the incoming message. Schema configs present in higher indices override those in lower indices with the same message type and trigger event if their VersionSources all match an incoming message."
        },
        "schematizedParsingType": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchemaPackageSchematizedParsingType",
          "description": "Determines how messages that fail to parse are handled."
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Hl7TypesConfig"
          },
          "description": "Schema type definitions that are layered based on their VersionSources that match the incoming message. Type definitions present in higher indices override those in lower indices with the same type name if their VersionSources all match an incoming message."
        },
        "unexpectedSegmentHandling": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchemaPackageUnexpectedSegmentHandling",
          "description": "Determines how unexpected segments (segments not matched to the schema) are handled."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:SchemaPackageResponse": {
      "description": "A schema package contains a set of schemas and type definitions.",
      "properties": {
        "ignoreMinOccurs": {
          "type": "boolean",
          "description": "Flag to ignore all min_occurs restrictions in the schema. This means that incoming messages can omit any group, segment, field, component, or subcomponent."
        },
        "schemas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Hl7SchemaConfigResponse"
          },
          "description": "Schema configs that are layered based on their VersionSources that match the incoming message. Schema configs present in higher indices override those in lower indices with the same message type and trigger event if their VersionSources all match an incoming message."
        },
        "schematizedParsingType": {
          "type": "string",
          "description": "Determines how messages that fail to parse are handled."
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Hl7TypesConfigResponse"
          },
          "description": "Schema type definitions that are layered based on their VersionSources that match the incoming message. Type definitions present in higher indices override those in lower indices with the same type name if their VersionSources all match an incoming message."
        },
        "unexpectedSegmentHandling": {
          "type": "string",
          "description": "Determines how unexpected segments (segments not matched to the schema) are handled."
        }
      },
      "type": "object",
      "required": [
        "ignoreMinOccurs",
        "schemas",
        "schematizedParsingType",
        "types",
        "unexpectedSegmentHandling"
      ]
    },
    "google-native:healthcare/v1beta1:SchemaPackageSchematizedParsingType": {
      "description": "Determines how messages that fail to parse are handled.",
      "type": "string",
      "enum": [
        {
          "name": "SchematizedParsingTypeUnspecified",
          "description": "Unspecified schematized parsing type, equivalent to `SOFT_FAIL`.",
          "value": "SCHEMATIZED_PARSING_TYPE_UNSPECIFIED"
        },
        {
          "name": "SoftFail",
          "description": "Messages that fail to parse are still stored and ACKed but a parser error is stored in place of the schematized data.",
          "value": "SOFT_FAIL"
        },
        {
          "name": "HardFail",
          "description": "Messages that fail to parse are rejected from ingestion/insertion and return an error code.",
          "value": "HARD_FAIL"
        }
      ]
    },
    "google-native:healthcare/v1beta1:SchemaPackageUnexpectedSegmentHandling": {
      "description": "Determines how unexpected segments (segments not matched to the schema) are handled.",
      "type": "string",
      "enum": [
        {
          "name": "UnexpectedSegmentHandlingModeUnspecified",
          "description": "Unspecified handling mode, equivalent to FAIL.",
          "value": "UNEXPECTED_SEGMENT_HANDLING_MODE_UNSPECIFIED"
        },
        {
          "name": "Fail",
          "description": "Unexpected segments fail to parse and return an error.",
          "value": "FAIL"
        },
        {
          "name": "Skip",
          "description": "Unexpected segments do not fail, but are omitted from the output.",
          "value": "SKIP"
        },
        {
          "name": "Parse",
          "description": "Unexpected segments do not fail, but are parsed in place and added to the current group. If a segment has a type definition, it is used, otherwise it is parsed as VARIES.",
          "value": "PARSE"
        }
      ]
    },
    "google-native:healthcare/v1beta1:SchematizedData": {
      "description": "The content of an HL7v2 message in a structured format as specified by a schema.",
      "properties": {
        "data": {
          "type": "string",
          "description": "JSON output of the parser."
        },
        "error": {
          "type": "string",
          "description": "The error output of the parser."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:SchematizedDataResponse": {
      "description": "The content of an HL7v2 message in a structured format as specified by a schema.",
      "properties": {
        "data": {
          "type": "string",
          "description": "JSON output of the parser."
        },
        "error": {
          "type": "string",
          "description": "The error output of the parser."
        }
      },
      "type": "object",
      "required": [
        "data",
        "error"
      ]
    },
    "google-native:healthcare/v1beta1:SearchConfig": {
      "description": "Contains the configuration for FHIR search.",
      "properties": {
        "searchParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SearchParameter"
          },
          "description": "A list of search parameters in this FHIR store that are used to configure this FHIR store."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:SearchConfigResponse": {
      "description": "Contains the configuration for FHIR search.",
      "properties": {
        "searchParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SearchParameterResponse"
          },
          "description": "A list of search parameters in this FHIR store that are used to configure this FHIR store."
        }
      },
      "type": "object",
      "required": [
        "searchParameters"
      ]
    },
    "google-native:healthcare/v1beta1:SearchParameter": {
      "description": "Contains the versioned name and the URL for one SearchParameter.",
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "The canonical url of the search parameter resource."
        },
        "parameter": {
          "type": "string",
          "description": "The versioned name of the search parameter resource. The format is projects/{project-id}/locations/{location}/datasets/{dataset-id}/fhirStores/{fhirStore-id}/fhir/SearchParameter/{resource-id}/_history/{version-id} For fhir stores with disable_resource_versioning=true, the format is projects/{project-id}/locations/{location}/datasets/{dataset-id}/fhirStores/{fhirStore-id}/fhir/SearchParameter/{resource-id}/"
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:SearchParameterResponse": {
      "description": "Contains the versioned name and the URL for one SearchParameter.",
      "properties": {
        "canonicalUrl": {
          "type": "string",
          "description": "The canonical url of the search parameter resource."
        },
        "parameter": {
          "type": "string",
          "description": "The versioned name of the search parameter resource. The format is projects/{project-id}/locations/{location}/datasets/{dataset-id}/fhirStores/{fhirStore-id}/fhir/SearchParameter/{resource-id}/_history/{version-id} For fhir stores with disable_resource_versioning=true, the format is projects/{project-id}/locations/{location}/datasets/{dataset-id}/fhirStores/{fhirStore-id}/fhir/SearchParameter/{resource-id}/"
        }
      },
      "type": "object",
      "required": [
        "canonicalUrl",
        "parameter"
      ]
    },
    "google-native:healthcare/v1beta1:SegmentResponse": {
      "description": "A segment in a structured format.",
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping from the positional location to the value. The key string uses zero-based indexes separated by dots to identify Fields, components and sub-components. A bracket notation is also used to identify different instances of a repeated field. Regex for key: (\\d+)(\\[\\d+\\])?(.\\d+)?(.\\d+)? Examples of (key, value) pairs: * (0.1, \"hemoglobin\") denotes that the first component of Field 0 has the value \"hemoglobin\". * (1.1.2, \"CBC\") denotes that the second sub-component of the first component of Field 1 has the value \"CBC\". * (1[0].1, \"HbA1c\") denotes that the first component of the first Instance of Field 1, which is repeated, has the value \"HbA1c\"."
        },
        "segmentId": {
          "type": "string",
          "description": "A string that indicates the type of segment. For example, EVN or PID."
        },
        "setId": {
          "type": "string",
          "description": "Set ID for segments that can be in a set. This can be empty if it's missing or isn't applicable."
        }
      },
      "type": "object",
      "required": [
        "fields",
        "segmentId",
        "setId"
      ]
    },
    "google-native:healthcare/v1beta1:SensitiveTextAnnotation": {
      "description": "A TextAnnotation specifies a text range that includes sensitive information.",
      "properties": {
        "details": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Maps from a resource slice. For example, FHIR resource field path to a set of sensitive text findings. For example, Appointment.Narrative text1 --> {findings_1, findings_2, findings_3}"
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:SensitiveTextAnnotationResponse": {
      "description": "A TextAnnotation specifies a text range that includes sensitive information.",
      "properties": {
        "details": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Maps from a resource slice. For example, FHIR resource field path to a set of sensitive text findings. For example, Appointment.Narrative text1 --> {findings_1, findings_2, findings_3}"
        }
      },
      "type": "object",
      "required": [
        "details"
      ]
    },
    "google-native:healthcare/v1beta1:Signature": {
      "description": "User signature.",
      "properties": {
        "image": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:Image",
          "description": "Optional. An image of the user's signature."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata associated with the user's signature. For example, the user's name or the user's title."
        },
        "signatureTime": {
          "type": "string",
          "description": "Optional. Timestamp of the signature."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "type": "object",
      "required": [
        "userId"
      ]
    },
    "google-native:healthcare/v1beta1:SignatureResponse": {
      "description": "User signature.",
      "properties": {
        "image": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageResponse",
          "description": "Optional. An image of the user's signature."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata associated with the user's signature. For example, the user's name or the user's title."
        },
        "signatureTime": {
          "type": "string",
          "description": "Optional. Timestamp of the signature."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "type": "object",
      "required": [
        "image",
        "metadata",
        "signatureTime",
        "userId"
      ]
    },
    "google-native:healthcare/v1beta1:StreamConfig": {
      "description": "Contains configuration for streaming FHIR export.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1FhirBigQueryDestination",
          "description": "The destination BigQuery structure that contains both the dataset location and corresponding schema config. The output is organized in one table per resource type. The server reuses the existing tables (if any) that are named after the resource types, e.g. \"Patient\", \"Observation\". When there is no existing table for a given resource type, the server attempts to create one. When a table schema doesn't align with the schema config, either because of existing incompatible schema or out of band incompatible modification, the server does not stream in new data. One resolution in this case is to delete the incompatible table and let the server recreate one, though the newly created table only contains data after the table recreation. BigQuery imposes a 1 MB limit on streaming insert row size, therefore any resource mutation that generates more than 1 MB of BigQuery data will not be streamed. Results are written to BigQuery tables according to the parameters in BigQueryDestination.WriteDisposition. Different versions of the same resource are distinguishable by the meta.versionId and meta.lastUpdated columns. The operation (CREATE/UPDATE/DELETE) that results in the new version is recorded in the meta.tag. The tables contain all historical resource versions since streaming was enabled. For query convenience, the server also creates one view per table of the same name containing only the current resource version. The streamed data in the BigQuery dataset is not guaranteed to be completely unique. The combination of the id and meta.versionId columns should ideally identify a single unique row. But in rare cases, duplicates may exist. At query time, users may use the SQL select statement to keep only one of the duplicate rows given an id and meta.versionId pair. Alternatively, the server created view mentioned above also filters out duplicates. If a resource mutation cannot be streamed to BigQuery, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        },
        "deidentifiedStoreDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DeidentifiedStoreDestination",
          "description": "The destination FHIR store for de-identified resources. After this field is added, all subsequent creates/updates/patches to the source store will be de-identified using the provided configuration and applied to the destination store. Importing resources to the source store will not trigger the streaming. If the source store already contains resources when this option is enabled, those resources will not be copied to the destination store unless they are subsequently updated. This may result in invalid references in the destination store. Before adding this config, you must grant the healthcare.fhirResources.update permission on the destination store to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/healthcare/docs/how-tos/permissions-healthcare-api-gcp-products#the_cloud_healthcare_service_agent). The destination store must set enable_update_create to true. The destination store must have disable_referential_integrity set to true. If a resource cannot be de-identified, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        },
        "resourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Supply a FHIR resource type (such as \"Patient\" or \"Observation\"). See https://www.hl7.org/fhir/valueset-resource-types.html for a list of all FHIR resource types. The server treats an empty list as an intent to stream all the supported resource types in this FHIR store."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:StreamConfigResponse": {
      "description": "Contains configuration for streaming FHIR export.",
      "properties": {
        "bigqueryDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1FhirBigQueryDestinationResponse",
          "description": "The destination BigQuery structure that contains both the dataset location and corresponding schema config. The output is organized in one table per resource type. The server reuses the existing tables (if any) that are named after the resource types, e.g. \"Patient\", \"Observation\". When there is no existing table for a given resource type, the server attempts to create one. When a table schema doesn't align with the schema config, either because of existing incompatible schema or out of band incompatible modification, the server does not stream in new data. One resolution in this case is to delete the incompatible table and let the server recreate one, though the newly created table only contains data after the table recreation. BigQuery imposes a 1 MB limit on streaming insert row size, therefore any resource mutation that generates more than 1 MB of BigQuery data will not be streamed. Results are written to BigQuery tables according to the parameters in BigQueryDestination.WriteDisposition. Different versions of the same resource are distinguishable by the meta.versionId and meta.lastUpdated columns. The operation (CREATE/UPDATE/DELETE) that results in the new version is recorded in the meta.tag. The tables contain all historical resource versions since streaming was enabled. For query convenience, the server also creates one view per table of the same name containing only the current resource version. The streamed data in the BigQuery dataset is not guaranteed to be completely unique. The combination of the id and meta.versionId columns should ideally identify a single unique row. But in rare cases, duplicates may exist. At query time, users may use the SQL select statement to keep only one of the duplicate rows given an id and meta.versionId pair. Alternatively, the server created view mentioned above also filters out duplicates. If a resource mutation cannot be streamed to BigQuery, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        },
        "deidentifiedStoreDestination": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:DeidentifiedStoreDestinationResponse",
          "description": "The destination FHIR store for de-identified resources. After this field is added, all subsequent creates/updates/patches to the source store will be de-identified using the provided configuration and applied to the destination store. Importing resources to the source store will not trigger the streaming. If the source store already contains resources when this option is enabled, those resources will not be copied to the destination store unless they are subsequently updated. This may result in invalid references in the destination store. Before adding this config, you must grant the healthcare.fhirResources.update permission on the destination store to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/healthcare/docs/how-tos/permissions-healthcare-api-gcp-products#the_cloud_healthcare_service_agent). The destination store must set enable_update_create to true. The destination store must have disable_referential_integrity set to true. If a resource cannot be de-identified, errors will be logged to Cloud Logging (see [Viewing error logs in Cloud Logging](https://cloud.google.com/healthcare/docs/how-tos/logging))."
        },
        "resourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Supply a FHIR resource type (such as \"Patient\" or \"Observation\"). See https://www.hl7.org/fhir/valueset-resource-types.html for a list of all FHIR resource types. The server treats an empty list as an intent to stream all the supported resource types in this FHIR store."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDestination",
        "deidentifiedStoreDestination",
        "resourceTypes"
      ]
    },
    "google-native:healthcare/v1beta1:TagFilterList": {
      "description": "List of tags to be filtered.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to be filtered. Tags must be DICOM Data Elements, File Meta Elements, or Directory Structuring Elements, as defined at: http://dicom.nema.org/medical/dicom/current/output/html/part06.html#table_6-1,. They may be provided by \"Keyword\" or \"Tag\". For example, \"PatientID\", \"00100010\"."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:TagFilterListResponse": {
      "description": "List of tags to be filtered.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to be filtered. Tags must be DICOM Data Elements, File Meta Elements, or Directory Structuring Elements, as defined at: http://dicom.nema.org/medical/dicom/current/output/html/part06.html#table_6-1,. They may be provided by \"Keyword\" or \"Tag\". For example, \"PatientID\", \"00100010\"."
        }
      },
      "type": "object",
      "required": [
        "tags"
      ]
    },
    "google-native:healthcare/v1beta1:TextConfig": {
      "description": "Configures how to transform sensitive text `InfoTypes`.",
      "properties": {
        "additionalTransformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:InfoTypeTransformation"
          },
          "description": "Additional transformations to apply to the detected data, overriding `profile`."
        },
        "excludeInfoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "InfoTypes to skip transforming, overriding `profile`."
        },
        "profileType": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TextConfigProfileType",
          "description": "Base profile type for text transformation."
        },
        "transformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:InfoTypeTransformation"
          },
          "description": "The transformations to apply to the detected data. Deprecated. Use `additional_transformations` instead.",
          "deprecationMessage": "The transformations to apply to the detected data. Deprecated. Use `additional_transformations` instead."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:TextConfigProfileType": {
      "description": "Base profile type for text transformation.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileTypeUnspecified",
          "description": "No profile provided. Same as BASIC.",
          "value": "PROFILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Empty",
          "description": "Empty profile which does not perform any transformations.",
          "value": "EMPTY"
        },
        {
          "name": "Basic",
          "description": "Automatically converts \"DATE\" infoTypes using a DateShiftConfig, and all other infoTypes using a ReplaceWithInfoTypeConfig.",
          "value": "BASIC"
        }
      ]
    },
    "google-native:healthcare/v1beta1:TextConfigResponse": {
      "description": "Configures how to transform sensitive text `InfoTypes`.",
      "properties": {
        "additionalTransformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:InfoTypeTransformationResponse"
          },
          "description": "Additional transformations to apply to the detected data, overriding `profile`."
        },
        "excludeInfoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "InfoTypes to skip transforming, overriding `profile`."
        },
        "profileType": {
          "type": "string",
          "description": "Base profile type for text transformation."
        },
        "transformations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:InfoTypeTransformationResponse"
          },
          "description": "The transformations to apply to the detected data. Deprecated. Use `additional_transformations` instead.",
          "deprecationMessage": "The transformations to apply to the detected data. Deprecated. Use `additional_transformations` instead."
        }
      },
      "type": "object",
      "required": [
        "additionalTransformations",
        "excludeInfoTypes",
        "profileType",
        "transformations"
      ]
    },
    "google-native:healthcare/v1beta1:TimePartitioning": {
      "description": "Configuration for FHIR BigQuery time-partitioned tables.",
      "properties": {
        "expirationMs": {
          "type": "string",
          "description": "Number of milliseconds for which to keep the storage for a partition."
        },
        "type": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TimePartitioningType",
          "description": "Type of partitioning."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:TimePartitioningResponse": {
      "description": "Configuration for FHIR BigQuery time-partitioned tables.",
      "properties": {
        "expirationMs": {
          "type": "string",
          "description": "Number of milliseconds for which to keep the storage for a partition."
        },
        "type": {
          "type": "string",
          "description": "Type of partitioning."
        }
      },
      "type": "object",
      "required": [
        "expirationMs",
        "type"
      ]
    },
    "google-native:healthcare/v1beta1:TimePartitioningType": {
      "description": "Type of partitioning.",
      "type": "string",
      "enum": [
        {
          "name": "PartitionTypeUnspecified",
          "description": "Default unknown time.",
          "value": "PARTITION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Hour",
          "description": "Data partitioned by hour.",
          "value": "HOUR"
        },
        {
          "name": "Day",
          "description": "Data partitioned by day.",
          "value": "DAY"
        },
        {
          "name": "Month",
          "description": "Data partitioned by month.",
          "value": "MONTH"
        },
        {
          "name": "Year",
          "description": "Data partitioned by year.",
          "value": "YEAR"
        }
      ]
    },
    "google-native:healthcare/v1beta1:Type": {
      "description": "A type definition for some HL7v2 type (incl. Segments and Datatypes).",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Field"
          },
          "description": "The (sub) fields this type has (if not primitive)."
        },
        "name": {
          "type": "string",
          "description": "The name of this type. This would be the segment or datatype name. For example, \"PID\" or \"XPN\"."
        },
        "primitive": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:TypePrimitive",
          "description": "If this is a primitive type then this field is the type of the primitive For example, STRING. Leave unspecified for composite types."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:TypePrimitive": {
      "description": "If this is a primitive type then this field is the type of the primitive For example, STRING. Leave unspecified for composite types.",
      "type": "string",
      "enum": [
        {
          "name": "PrimitiveUnspecified",
          "description": "Not a primitive.",
          "value": "PRIMITIVE_UNSPECIFIED"
        },
        {
          "name": "String",
          "description": "String primitive.",
          "value": "STRING"
        },
        {
          "name": "Varies",
          "description": "Element that can have unschematized children.",
          "value": "VARIES"
        },
        {
          "name": "UnescapedString",
          "description": "Like STRING, but all delimiters below this element are ignored.",
          "value": "UNESCAPED_STRING"
        }
      ]
    },
    "google-native:healthcare/v1beta1:TypeResponse": {
      "description": "A type definition for some HL7v2 type (incl. Segments and Datatypes).",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:FieldResponse"
          },
          "description": "The (sub) fields this type has (if not primitive)."
        },
        "name": {
          "type": "string",
          "description": "The name of this type. This would be the segment or datatype name. For example, \"PID\" or \"XPN\"."
        },
        "primitive": {
          "type": "string",
          "description": "If this is a primitive type then this field is the type of the primitive For example, STRING. Leave unspecified for composite types."
        }
      },
      "type": "object",
      "required": [
        "fields",
        "name",
        "primitive"
      ]
    },
    "google-native:healthcare/v1beta1:ValidationConfig": {
      "description": "Contains the configuration for FHIR profiles and validation.",
      "properties": {
        "disableFhirpathValidation": {
          "type": "boolean",
          "description": "Whether to disable FHIRPath validation for incoming resources. Set this to true to disable checking incoming resources for conformance against FHIRPath requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "disableProfileValidation": {
          "type": "boolean",
          "description": "Whether to disable profile validation for this FHIR store. Set this to true to disable checking incoming resources for conformance against StructureDefinitions in this FHIR store."
        },
        "disableReferenceTypeValidation": {
          "type": "boolean",
          "description": "Whether to disable reference type validation for incoming resources. Set this to true to disable checking incoming resources for conformance against reference type requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "disableRequiredFieldValidation": {
          "type": "boolean",
          "description": "Whether to disable required fields validation for incoming resources. Set this to true to disable checking incoming resources for conformance against required fields requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "enabledImplementationGuides": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of ImplementationGuide URLs in this FHIR store that are used to configure the profiles to use for validation. For example, to use the US Core profiles for validation, set `enabled_implementation_guides` to `[\"http://hl7.org/fhir/us/core/ImplementationGuide/ig\"]`. If `enabled_implementation_guides` is empty or omitted, then incoming resources are only required to conform to the base FHIR profiles. Otherwise, a resource must conform to at least one profile listed in the `global` property of one of the enabled ImplementationGuides. The Cloud Healthcare API does not currently enforce all of the rules in a StructureDefinition. The following rules are supported: - min/max - minValue/maxValue - maxLength - type - fixed[x] - pattern[x] on simple types - slicing, when using \"value\" as the discriminator type When a URL cannot be resolved (for example, in a type assertion), the server does not return an error."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:ValidationConfigResponse": {
      "description": "Contains the configuration for FHIR profiles and validation.",
      "properties": {
        "disableFhirpathValidation": {
          "type": "boolean",
          "description": "Whether to disable FHIRPath validation for incoming resources. Set this to true to disable checking incoming resources for conformance against FHIRPath requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "disableProfileValidation": {
          "type": "boolean",
          "description": "Whether to disable profile validation for this FHIR store. Set this to true to disable checking incoming resources for conformance against StructureDefinitions in this FHIR store."
        },
        "disableReferenceTypeValidation": {
          "type": "boolean",
          "description": "Whether to disable reference type validation for incoming resources. Set this to true to disable checking incoming resources for conformance against reference type requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "disableRequiredFieldValidation": {
          "type": "boolean",
          "description": "Whether to disable required fields validation for incoming resources. Set this to true to disable checking incoming resources for conformance against required fields requirement defined in the FHIR specification. This property only affects resource types that do not have profiles configured for them, any rules in enabled implementation guides will still be enforced."
        },
        "enabledImplementationGuides": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of ImplementationGuide URLs in this FHIR store that are used to configure the profiles to use for validation. For example, to use the US Core profiles for validation, set `enabled_implementation_guides` to `[\"http://hl7.org/fhir/us/core/ImplementationGuide/ig\"]`. If `enabled_implementation_guides` is empty or omitted, then incoming resources are only required to conform to the base FHIR profiles. Otherwise, a resource must conform to at least one profile listed in the `global` property of one of the enabled ImplementationGuides. The Cloud Healthcare API does not currently enforce all of the rules in a StructureDefinition. The following rules are supported: - min/max - minValue/maxValue - maxLength - type - fixed[x] - pattern[x] on simple types - slicing, when using \"value\" as the discriminator type When a URL cannot be resolved (for example, in a type assertion), the server does not return an error."
        }
      },
      "type": "object",
      "required": [
        "disableFhirpathValidation",
        "disableProfileValidation",
        "disableReferenceTypeValidation",
        "disableRequiredFieldValidation",
        "enabledImplementationGuides"
      ]
    },
    "google-native:healthcare/v1beta1:VersionSource": {
      "description": "Describes a selector for extracting and matching an MSH field to a value.",
      "properties": {
        "mshField": {
          "type": "string",
          "description": "The field to extract from the MSH segment. For example, \"3.1\" or \"18[1].1\"."
        },
        "value": {
          "type": "string",
          "description": "The value to match with the field. For example, \"My Application Name\" or \"2.3\"."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:VersionSourceResponse": {
      "description": "Describes a selector for extracting and matching an MSH field to a value.",
      "properties": {
        "mshField": {
          "type": "string",
          "description": "The field to extract from the MSH segment. For example, \"3.1\" or \"18[1].1\"."
        },
        "value": {
          "type": "string",
          "description": "The value to match with the field. For example, \"My Application Name\" or \"2.3\"."
        }
      },
      "type": "object",
      "required": [
        "mshField",
        "value"
      ]
    },
    "google-native:healthcare/v1beta1:Vertex": {
      "description": "A 2D coordinate in an image. The origin is the top-left.",
      "properties": {
        "x": {
          "type": "number",
          "description": "X coordinate."
        },
        "y": {
          "type": "number",
          "description": "Y coordinate."
        }
      },
      "type": "object"
    },
    "google-native:healthcare/v1beta1:VertexResponse": {
      "description": "A 2D coordinate in an image. The origin is the top-left.",
      "properties": {
        "x": {
          "type": "number",
          "description": "X coordinate."
        },
        "y": {
          "type": "number",
          "description": "Y coordinate."
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:iam/v1:AccessRestrictions": {
      "description": "Access related restrictions on the workforce pool.",
      "properties": {
        "allowedServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:ServiceConfig"
          },
          "description": "Optional. Immutable. Services allowed for web sign-in with the workforce pool. If not set by default there are no restrictions."
        },
        "disableProgrammaticSignin": {
          "type": "boolean",
          "description": "Optional. Disable programmatic sign-in by disabling token issue via the Security Token API endpoint. See [Security Token Service API] (https://cloud.google.com/iam/docs/reference/sts/rest)."
        }
      },
      "type": "object"
    },
    "google-native:iam/v1:AccessRestrictionsResponse": {
      "description": "Access related restrictions on the workforce pool.",
      "properties": {
        "allowedServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:ServiceConfigResponse"
          },
          "description": "Optional. Immutable. Services allowed for web sign-in with the workforce pool. If not set by default there are no restrictions."
        },
        "disableProgrammaticSignin": {
          "type": "boolean",
          "description": "Optional. Disable programmatic sign-in by disabling token issue via the Security Token API endpoint. See [Security Token Service API] (https://cloud.google.com/iam/docs/reference/sts/rest)."
        }
      },
      "type": "object",
      "required": [
        "allowedServices",
        "disableProgrammaticSignin"
      ]
    },
    "google-native:iam/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:iam/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:iam/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:iam%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:iam/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:iam/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:iam/v1:Aws": {
      "description": "Represents an Amazon Web Services identity provider.",
      "properties": {
        "accountId": {
          "type": "string",
          "description": "The AWS account ID."
        }
      },
      "type": "object",
      "required": [
        "accountId"
      ]
    },
    "google-native:iam/v1:AwsResponse": {
      "description": "Represents an Amazon Web Services identity provider.",
      "properties": {
        "accountId": {
          "type": "string",
          "description": "The AWS account ID."
        }
      },
      "type": "object",
      "required": [
        "accountId"
      ]
    },
    "google-native:iam/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:iam/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:iam/v1:Condition": {
      "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of the expression. This is a longer text which describes the expression, e.g., when hovering over it in a UI."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "title": {
          "type": "string",
          "description": "A title for the expression, i.e. a short string describing its purpose."
        }
      },
      "type": "object",
      "required": [
        "expression",
        "title"
      ]
    },
    "google-native:iam/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:iam/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidc": {
      "description": "Represents an OpenId Connect 1.0 identity provider.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The client ID. Must match the audience claim of the JWT issued by the identity provider."
        },
        "clientSecret": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcClientSecret",
          "description": "The optional client secret. Required to enable Authorization Code flow for web sign-in."
        },
        "issuerUri": {
          "type": "string",
          "description": "The OIDC issuer URI. Must be a valid URI using the 'https' scheme."
        },
        "jwksJson": {
          "type": "string",
          "description": "OIDC JWKs in JSON String format. For details on the definition of a JWK, see https://tools.ietf.org/html/rfc7517. If not set, the `jwks_uri` from the discovery document(fetched from the .well-known path of the `issuer_uri`) will be used. Currently, RSA and EC asymmetric keys are supported. The JWK must use following format and include only the following fields: { \"keys\": [ { \"kty\": \"RSA/EC\", \"alg\": \"\", \"use\": \"sig\", \"kid\": \"\", \"n\": \"\", \"e\": \"\", \"x\": \"\", \"y\": \"\", \"crv\": \"\" } ] }"
        },
        "webSsoConfig": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcWebSsoConfig",
          "description": "Configuration for web single sign-on for the OIDC provider. Here, web sign-in refers to console sign-in and gcloud sign-in through the browser."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "issuerUri",
        "webSsoConfig"
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcClientSecret": {
      "description": "Representation of a client secret configured for the OIDC provider.",
      "properties": {
        "value": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcClientSecretValue",
          "description": "The value of the client secret."
        }
      },
      "type": "object"
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcClientSecretResponse": {
      "description": "Representation of a client secret configured for the OIDC provider.",
      "properties": {
        "value": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcClientSecretValueResponse",
          "description": "The value of the client secret."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcClientSecretValue": {
      "description": "Representation of the value of the client secret.",
      "properties": {
        "plainText": {
          "type": "string",
          "description": "Input only. The plain text of the client secret value. For security reasons, this field is only used for input and will never be populated in any response."
        }
      },
      "type": "object"
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcClientSecretValueResponse": {
      "description": "Representation of the value of the client secret.",
      "properties": {
        "plainText": {
          "type": "string",
          "description": "Input only. The plain text of the client secret value. For security reasons, this field is only used for input and will never be populated in any response."
        },
        "thumbprint": {
          "type": "string",
          "description": "A thumbprint to represent the current client secret value."
        }
      },
      "type": "object",
      "required": [
        "plainText",
        "thumbprint"
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcResponse": {
      "description": "Represents an OpenId Connect 1.0 identity provider.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The client ID. Must match the audience claim of the JWT issued by the identity provider."
        },
        "clientSecret": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcClientSecretResponse",
          "description": "The optional client secret. Required to enable Authorization Code flow for web sign-in."
        },
        "issuerUri": {
          "type": "string",
          "description": "The OIDC issuer URI. Must be a valid URI using the 'https' scheme."
        },
        "jwksJson": {
          "type": "string",
          "description": "OIDC JWKs in JSON String format. For details on the definition of a JWK, see https://tools.ietf.org/html/rfc7517. If not set, the `jwks_uri` from the discovery document(fetched from the .well-known path of the `issuer_uri`) will be used. Currently, RSA and EC asymmetric keys are supported. The JWK must use following format and include only the following fields: { \"keys\": [ { \"kty\": \"RSA/EC\", \"alg\": \"\", \"use\": \"sig\", \"kid\": \"\", \"n\": \"\", \"e\": \"\", \"x\": \"\", \"y\": \"\", \"crv\": \"\" } ] }"
        },
        "webSsoConfig": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcWebSsoConfigResponse",
          "description": "Configuration for web single sign-on for the OIDC provider. Here, web sign-in refers to console sign-in and gcloud sign-in through the browser."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "issuerUri",
        "jwksJson",
        "webSsoConfig"
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcWebSsoConfig": {
      "description": "Configuration for web single sign-on for the OIDC provider.",
      "properties": {
        "additionalScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional scopes to request for in the OIDC authentication request on top of scopes requested by default. By default, the `openid`, `profile` and `email` scopes that are supported by the identity provider are requested. Each additional scope may be at most 256 characters. A maximum of 10 additional scopes may be configured."
        },
        "assertionClaimsBehavior": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcWebSsoConfigAssertionClaimsBehavior",
          "description": "The behavior for how OIDC Claims are included in the `assertion` object used for attribute mapping and attribute condition."
        },
        "responseType": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcWebSsoConfigResponseType",
          "description": "The Response Type to request for in the OIDC Authorization Request for web sign-in. The `CODE` Response Type is recommended to avoid the Implicit Flow, for security reasons."
        }
      },
      "type": "object",
      "required": [
        "assertionClaimsBehavior",
        "responseType"
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcWebSsoConfigAssertionClaimsBehavior": {
      "description": "Required. The behavior for how OIDC Claims are included in the `assertion` object used for attribute mapping and attribute condition.",
      "type": "string",
      "enum": [
        {
          "name": "AssertionClaimsBehaviorUnspecified",
          "description": "No assertion claims behavior specified.",
          "value": "ASSERTION_CLAIMS_BEHAVIOR_UNSPECIFIED"
        },
        {
          "name": "MergeUserInfoOverIdTokenClaims",
          "description": "Merge the UserInfo Endpoint Claims with ID Token Claims, preferring UserInfo Claim Values for the same Claim Name. This option is available only for the Authorization Code Flow.",
          "value": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS"
        },
        {
          "name": "OnlyIdTokenClaims",
          "description": "Only include ID Token Claims.",
          "value": "ONLY_ID_TOKEN_CLAIMS"
        }
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcWebSsoConfigResponse": {
      "description": "Configuration for web single sign-on for the OIDC provider.",
      "properties": {
        "additionalScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional scopes to request for in the OIDC authentication request on top of scopes requested by default. By default, the `openid`, `profile` and `email` scopes that are supported by the identity provider are requested. Each additional scope may be at most 256 characters. A maximum of 10 additional scopes may be configured."
        },
        "assertionClaimsBehavior": {
          "type": "string",
          "description": "The behavior for how OIDC Claims are included in the `assertion` object used for attribute mapping and attribute condition."
        },
        "responseType": {
          "type": "string",
          "description": "The Response Type to request for in the OIDC Authorization Request for web sign-in. The `CODE` Response Type is recommended to avoid the Implicit Flow, for security reasons."
        }
      },
      "type": "object",
      "required": [
        "additionalScopes",
        "assertionClaimsBehavior",
        "responseType"
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderOidcWebSsoConfigResponseType": {
      "description": "Required. The Response Type to request for in the OIDC Authorization Request for web sign-in. The `CODE` Response Type is recommended to avoid the Implicit Flow, for security reasons.",
      "type": "string",
      "enum": [
        {
          "name": "ResponseTypeUnspecified",
          "description": "No Response Type specified.",
          "value": "RESPONSE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Code",
          "description": "The `response_type=code` selection uses the Authorization Code Flow for web sign-in. Requires a configured client secret.",
          "value": "CODE"
        },
        {
          "name": "IdToken",
          "description": "The `response_type=id_token` selection uses the Implicit Flow for web sign-in.",
          "value": "ID_TOKEN"
        }
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderSaml": {
      "description": "Represents a SAML identity provider.",
      "properties": {
        "idpMetadataXml": {
          "type": "string",
          "description": "SAML Identity provider configuration metadata xml doc. The xml document should comply with [SAML 2.0 specification](https://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf). The max size of the acceptable xml document will be bounded to 128k characters. The metadata xml document should satisfy the following constraints: 1) Must contain an Identity Provider Entity ID. 2) Must contain at least one non-expired signing key certificate. 3) For each signing key: a) Valid from should be no more than 7 days from now. b) Valid to should be no more than 15 years in the future. 4) Up to 3 IdP signing keys are allowed in the metadata xml. When updating the provider's metadata xml, at least one non-expired signing key must overlap with the existing metadata. This requirement is skipped if there are no non-expired signing keys present in the existing metadata."
        }
      },
      "type": "object",
      "required": [
        "idpMetadataXml"
      ]
    },
    "google-native:iam/v1:GoogleIamAdminV1WorkforcePoolProviderSamlResponse": {
      "description": "Represents a SAML identity provider.",
      "properties": {
        "idpMetadataXml": {
          "type": "string",
          "description": "SAML Identity provider configuration metadata xml doc. The xml document should comply with [SAML 2.0 specification](https://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf). The max size of the acceptable xml document will be bounded to 128k characters. The metadata xml document should satisfy the following constraints: 1) Must contain an Identity Provider Entity ID. 2) Must contain at least one non-expired signing key certificate. 3) For each signing key: a) Valid from should be no more than 7 days from now. b) Valid to should be no more than 15 years in the future. 4) Up to 3 IdP signing keys are allowed in the metadata xml. When updating the provider's metadata xml, at least one non-expired signing key must overlap with the existing metadata. This requirement is skipped if there are no non-expired signing keys present in the existing metadata."
        }
      },
      "type": "object",
      "required": [
        "idpMetadataXml"
      ]
    },
    "google-native:iam/v1:KeyData": {
      "description": "Represents a public key data along with its format.",
      "properties": {
        "keySpec": {
          "$ref": "#/types/google-native:iam%2Fv1:KeyDataKeySpec",
          "description": "The specifications for the key."
        }
      },
      "type": "object",
      "required": [
        "keySpec"
      ]
    },
    "google-native:iam/v1:KeyDataKeySpec": {
      "description": "Required. The specifications for the key.",
      "type": "string",
      "enum": [
        {
          "name": "KeySpecUnspecified",
          "description": "No key specification specified.",
          "value": "KEY_SPEC_UNSPECIFIED"
        },
        {
          "name": "Rsa2048",
          "description": "A 2048 bit RSA key.",
          "value": "RSA_2048"
        },
        {
          "name": "Rsa3072",
          "description": "A 3072 bit RSA key.",
          "value": "RSA_3072"
        },
        {
          "name": "Rsa4096",
          "description": "A 4096 bit RSA key.",
          "value": "RSA_4096"
        }
      ]
    },
    "google-native:iam/v1:KeyDataResponse": {
      "description": "Represents a public key data along with its format.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format of the key."
        },
        "key": {
          "type": "string",
          "description": "The key data. The format of the key is represented by the format field."
        },
        "keySpec": {
          "type": "string",
          "description": "The specifications for the key."
        },
        "notAfterTime": {
          "type": "string",
          "description": "Latest timestamp when this key is valid. Attempts to use this key after this time will fail. Only present if the key data represents a X.509 certificate."
        },
        "notBeforeTime": {
          "type": "string",
          "description": "Earliest timestamp when this key is valid. Attempts to use this key before this time will fail. Only present if the key data represents a X.509 certificate."
        }
      },
      "type": "object",
      "required": [
        "format",
        "key",
        "keySpec",
        "notAfterTime",
        "notBeforeTime"
      ]
    },
    "google-native:iam/v1:KeyKeyAlgorithm": {
      "description": "Which type of key and algorithm to use for the key. The default is currently a 2K RSA key. However this may change in the future.",
      "type": "string",
      "enum": [
        {
          "name": "KeyAlgUnspecified",
          "description": "An unspecified key algorithm.",
          "value": "KEY_ALG_UNSPECIFIED"
        },
        {
          "name": "KeyAlgRsa1024",
          "description": "1k RSA Key.",
          "value": "KEY_ALG_RSA_1024"
        },
        {
          "name": "KeyAlgRsa2048",
          "description": "2k RSA Key.",
          "value": "KEY_ALG_RSA_2048"
        }
      ]
    },
    "google-native:iam/v1:KeyPrivateKeyType": {
      "description": "The output format of the private key. The default value is `TYPE_GOOGLE_CREDENTIALS_FILE`, which is the Google Credentials File format.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified. Equivalent to `TYPE_GOOGLE_CREDENTIALS_FILE`.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TypePkcs12File",
          "description": "PKCS12 format. The password for the PKCS12 file is `notasecret`. For more information, see https://tools.ietf.org/html/rfc7292.",
          "value": "TYPE_PKCS12_FILE"
        },
        {
          "name": "TypeGoogleCredentialsFile",
          "description": "Google Credentials File format.",
          "value": "TYPE_GOOGLE_CREDENTIALS_FILE"
        }
      ]
    },
    "google-native:iam/v1:Oidc": {
      "description": "Represents an OpenId Connect 1.0 identity provider.",
      "properties": {
        "allowedAudiences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Acceptable values for the `aud` field (audience) in the OIDC token. Token exchange requests are rejected if the token audience does not match one of the configured values. Each audience may be at most 256 characters. A maximum of 10 audiences may be configured. If this list is empty, the OIDC token audience must be equal to the full canonical resource name of the WorkloadIdentityPoolProvider, with or without the HTTPS prefix. For example: ``` //iam.googleapis.com/projects//locations//workloadIdentityPools//providers/ https://iam.googleapis.com/projects//locations//workloadIdentityPools//providers/ ```"
        },
        "issuerUri": {
          "type": "string",
          "description": "The OIDC issuer URL. Must be an HTTPS endpoint."
        },
        "jwksJson": {
          "type": "string",
          "description": "Optional. OIDC JWKs in JSON String format. For details on the definition of a JWK, see https://tools.ietf.org/html/rfc7517. If not set, the `jwks_uri` from the discovery document(fetched from the .well-known path of the `issuer_uri`) will be used. Currently, RSA and EC asymmetric keys are supported. The JWK must use following format and include only the following fields: { \"keys\": [ { \"kty\": \"RSA/EC\", \"alg\": \"\", \"use\": \"sig\", \"kid\": \"\", \"n\": \"\", \"e\": \"\", \"x\": \"\", \"y\": \"\", \"crv\": \"\" } ] }"
        }
      },
      "type": "object",
      "required": [
        "issuerUri"
      ]
    },
    "google-native:iam/v1:OidcResponse": {
      "description": "Represents an OpenId Connect 1.0 identity provider.",
      "properties": {
        "allowedAudiences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Acceptable values for the `aud` field (audience) in the OIDC token. Token exchange requests are rejected if the token audience does not match one of the configured values. Each audience may be at most 256 characters. A maximum of 10 audiences may be configured. If this list is empty, the OIDC token audience must be equal to the full canonical resource name of the WorkloadIdentityPoolProvider, with or without the HTTPS prefix. For example: ``` //iam.googleapis.com/projects//locations//workloadIdentityPools//providers/ https://iam.googleapis.com/projects//locations//workloadIdentityPools//providers/ ```"
        },
        "issuerUri": {
          "type": "string",
          "description": "The OIDC issuer URL. Must be an HTTPS endpoint."
        },
        "jwksJson": {
          "type": "string",
          "description": "Optional. OIDC JWKs in JSON String format. For details on the definition of a JWK, see https://tools.ietf.org/html/rfc7517. If not set, the `jwks_uri` from the discovery document(fetched from the .well-known path of the `issuer_uri`) will be used. Currently, RSA and EC asymmetric keys are supported. The JWK must use following format and include only the following fields: { \"keys\": [ { \"kty\": \"RSA/EC\", \"alg\": \"\", \"use\": \"sig\", \"kid\": \"\", \"n\": \"\", \"e\": \"\", \"x\": \"\", \"y\": \"\", \"crv\": \"\" } ] }"
        }
      },
      "type": "object",
      "required": [
        "allowedAudiences",
        "issuerUri",
        "jwksJson"
      ]
    },
    "google-native:iam/v1:OrganizationRoleStage": {
      "description": "The current launch stage of the role. If the `ALPHA` launch stage has been selected for a role, the `stage` field will not be included in the returned definition for the role.",
      "type": "string",
      "enum": [
        {
          "name": "Alpha",
          "description": "The user has indicated this role is currently in an Alpha phase. If this launch stage is selected, the `stage` field will not be included when requesting the definition for a given role.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "The user has indicated this role is currently in a Beta phase.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "The user has indicated this role is generally available.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "The user has indicated this role is being deprecated.",
          "value": "DEPRECATED"
        },
        {
          "name": "Disabled",
          "description": "This role is disabled and will not contribute permissions to any principals it is granted to in policies.",
          "value": "DISABLED"
        },
        {
          "name": "Eap",
          "description": "The user has indicated this role is currently in an EAP phase.",
          "value": "EAP"
        }
      ]
    },
    "google-native:iam/v1:RoleStage": {
      "description": "The current launch stage of the role. If the `ALPHA` launch stage has been selected for a role, the `stage` field will not be included in the returned definition for the role.",
      "type": "string",
      "enum": [
        {
          "name": "Alpha",
          "description": "The user has indicated this role is currently in an Alpha phase. If this launch stage is selected, the `stage` field will not be included when requesting the definition for a given role.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "The user has indicated this role is currently in a Beta phase.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "The user has indicated this role is generally available.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "The user has indicated this role is being deprecated.",
          "value": "DEPRECATED"
        },
        {
          "name": "Disabled",
          "description": "This role is disabled and will not contribute permissions to any principals it is granted to in policies.",
          "value": "DISABLED"
        },
        {
          "name": "Eap",
          "description": "The user has indicated this role is currently in an EAP phase.",
          "value": "EAP"
        }
      ]
    },
    "google-native:iam/v1:Saml": {
      "description": "Represents an SAML 2.0 identity provider.",
      "properties": {
        "idpMetadataXml": {
          "type": "string",
          "description": "SAML Identity provider configuration metadata xml doc. The xml document should comply with [SAML 2.0 specification](https://www.oasis-open.org/committees/download.php/56785/sstc-saml-metadata-errata-2.0-wd-05.pdf). The max size of the acceptable xml document will be bounded to 128k characters. The metadata xml document should satisfy the following constraints: 1) Must contain an Identity Provider Entity ID. 2) Must contain at least one non-expired signing key certificate. 3) For each signing key: a) Valid from should be no more than 7 days from now. b) Valid to should be no more than 15 years in the future. 4) Upto 3 IdP signing keys are allowed in the metadata xml. When updating the provider's metadata xml, at lease one non-expired signing key must overlap with the existing metadata. This requirement is skipped if there are no non-expired signing keys present in the existing metadata"
        }
      },
      "type": "object",
      "required": [
        "idpMetadataXml"
      ]
    },
    "google-native:iam/v1:SamlResponse": {
      "description": "Represents an SAML 2.0 identity provider.",
      "properties": {
        "idpMetadataXml": {
          "type": "string",
          "description": "SAML Identity provider configuration metadata xml doc. The xml document should comply with [SAML 2.0 specification](https://www.oasis-open.org/committees/download.php/56785/sstc-saml-metadata-errata-2.0-wd-05.pdf). The max size of the acceptable xml document will be bounded to 128k characters. The metadata xml document should satisfy the following constraints: 1) Must contain an Identity Provider Entity ID. 2) Must contain at least one non-expired signing key certificate. 3) For each signing key: a) Valid from should be no more than 7 days from now. b) Valid to should be no more than 15 years in the future. 4) Upto 3 IdP signing keys are allowed in the metadata xml. When updating the provider's metadata xml, at lease one non-expired signing key must overlap with the existing metadata. This requirement is skipped if there are no non-expired signing keys present in the existing metadata"
        }
      },
      "type": "object",
      "required": [
        "idpMetadataXml"
      ]
    },
    "google-native:iam/v1:ServiceConfig": {
      "description": "Configuration for a service.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Optional. Domain name of the service. Example: console.cloud.google"
        }
      },
      "type": "object"
    },
    "google-native:iam/v1:ServiceConfigResponse": {
      "description": "Configuration for a service.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Optional. Domain name of the service. Example: console.cloud.google"
        }
      },
      "type": "object",
      "required": [
        "domain"
      ]
    },
    "google-native:iam/v1:WorkforcePoolKeyUse": {
      "description": "Required. The purpose of the key.",
      "type": "string",
      "enum": [
        {
          "name": "KeyUseUnspecified",
          "description": "KeyUse unspecified.",
          "value": "KEY_USE_UNSPECIFIED"
        },
        {
          "name": "Encryption",
          "description": "The key is used for encryption.",
          "value": "ENCRYPTION"
        }
      ]
    },
    "google-native:iam/v1:WorkloadIdentityPoolKeyUse": {
      "description": "Required. The purpose of the key.",
      "type": "string",
      "enum": [
        {
          "name": "KeyUseUnspecified",
          "description": "The key use is not known.",
          "value": "KEY_USE_UNSPECIFIED"
        },
        {
          "name": "Encryption",
          "description": "The public key is used for encryption purposes.",
          "value": "ENCRYPTION"
        }
      ]
    },
    "google-native:iap/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iap%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:iap/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iap%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:iap/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:iap/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:iap/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iap%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:iap/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iap%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:iap/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:iap/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2AllowByDefault": {
      "description": "Defines a policy of allowing every region by default and adding disallowed regions to a disallow list.",
      "properties": {
        "disallowedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two letter unicode region codes to disallow as defined by https://cldr.unicode.org/ The full list of these region codes is here: https://github.com/unicode-cldr/cldr-localenames-full/blob/master/main/en/territories.json"
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2AllowByDefaultResponse": {
      "description": "Defines a policy of allowing every region by default and adding disallowed regions to a disallow list.",
      "properties": {
        "disallowedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two letter unicode region codes to disallow as defined by https://cldr.unicode.org/ The full list of these region codes is here: https://github.com/unicode-cldr/cldr-localenames-full/blob/master/main/en/territories.json"
        }
      },
      "type": "object",
      "required": [
        "disallowedRegions"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2AllowlistOnly": {
      "description": "Defines a policy of only allowing regions by explicitly adding them to an allowlist.",
      "properties": {
        "allowedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two letter unicode region codes to allow as defined by https://cldr.unicode.org/ The full list of these region codes is here: https://github.com/unicode-cldr/cldr-localenames-full/blob/master/main/en/territories.json"
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2AllowlistOnlyResponse": {
      "description": "Defines a policy of only allowing regions by explicitly adding them to an allowlist.",
      "properties": {
        "allowedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Two letter unicode region codes to allow as defined by https://cldr.unicode.org/ The full list of these region codes is here: https://github.com/unicode-cldr/cldr-localenames-full/blob/master/main/en/territories.json"
        }
      },
      "type": "object",
      "required": [
        "allowedRegions"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2AppleSignInConfig": {
      "description": "Additional config for SignInWithApple.",
      "properties": {
        "bundleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Bundle ID's usable by this project"
        },
        "codeFlowConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2CodeFlowConfig"
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2AppleSignInConfigResponse": {
      "description": "Additional config for SignInWithApple.",
      "properties": {
        "bundleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Bundle ID's usable by this project"
        },
        "codeFlowConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2CodeFlowConfigResponse"
        }
      },
      "type": "object",
      "required": [
        "bundleIds",
        "codeFlowConfig"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2ClientPermissionConfig": {
      "description": "Options related to how clients making requests on behalf of a tenant should be configured.",
      "properties": {
        "permissions": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2ClientPermissions",
          "description": "Configuration related to restricting a user's ability to affect their account."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2ClientPermissionConfigResponse": {
      "description": "Options related to how clients making requests on behalf of a tenant should be configured.",
      "properties": {
        "permissions": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2ClientPermissionsResponse",
          "description": "Configuration related to restricting a user's ability to affect their account."
        }
      },
      "type": "object",
      "required": [
        "permissions"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2ClientPermissions": {
      "description": "Configuration related to restricting a user's ability to affect their account.",
      "properties": {
        "disabledUserDeletion": {
          "type": "boolean",
          "description": "When true, end users cannot delete their account on the associated project through any of our API methods"
        },
        "disabledUserSignup": {
          "type": "boolean",
          "description": "When true, end users cannot sign up for a new account on the associated project through any of our API methods"
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2ClientPermissionsResponse": {
      "description": "Configuration related to restricting a user's ability to affect their account.",
      "properties": {
        "disabledUserDeletion": {
          "type": "boolean",
          "description": "When true, end users cannot delete their account on the associated project through any of our API methods"
        },
        "disabledUserSignup": {
          "type": "boolean",
          "description": "When true, end users cannot sign up for a new account on the associated project through any of our API methods"
        }
      },
      "type": "object",
      "required": [
        "disabledUserDeletion",
        "disabledUserSignup"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2CodeFlowConfig": {
      "description": "Additional config for Apple for code flow.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "Key ID for the private key."
        },
        "privateKey": {
          "type": "string",
          "description": "Private key used for signing the client secret JWT."
        },
        "teamId": {
          "type": "string",
          "description": "Apple Developer Team ID."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2CodeFlowConfigResponse": {
      "description": "Additional config for Apple for code flow.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "Key ID for the private key."
        },
        "privateKey": {
          "type": "string",
          "description": "Private key used for signing the client secret JWT."
        },
        "teamId": {
          "type": "string",
          "description": "Apple Developer Team ID."
        }
      },
      "type": "object",
      "required": [
        "keyId",
        "privateKey",
        "teamId"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2CustomStrengthOptions": {
      "description": "Custom strength options to enforce on user passwords.",
      "properties": {
        "containsLowercaseCharacter": {
          "type": "boolean",
          "description": "The password must contain a lower case character."
        },
        "containsNonAlphanumericCharacter": {
          "type": "boolean",
          "description": "The password must contain a non alpha numeric character."
        },
        "containsNumericCharacter": {
          "type": "boolean",
          "description": "The password must contain a number."
        },
        "containsUppercaseCharacter": {
          "type": "boolean",
          "description": "The password must contain an upper case character."
        },
        "maxPasswordLength": {
          "type": "integer",
          "description": "Maximum password length. No default max length"
        },
        "minPasswordLength": {
          "type": "integer",
          "description": "Minimum password length. Range from 6 to 30"
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2CustomStrengthOptionsResponse": {
      "description": "Custom strength options to enforce on user passwords.",
      "properties": {
        "containsLowercaseCharacter": {
          "type": "boolean",
          "description": "The password must contain a lower case character."
        },
        "containsNonAlphanumericCharacter": {
          "type": "boolean",
          "description": "The password must contain a non alpha numeric character."
        },
        "containsNumericCharacter": {
          "type": "boolean",
          "description": "The password must contain a number."
        },
        "containsUppercaseCharacter": {
          "type": "boolean",
          "description": "The password must contain an upper case character."
        },
        "maxPasswordLength": {
          "type": "integer",
          "description": "Maximum password length. No default max length"
        },
        "minPasswordLength": {
          "type": "integer",
          "description": "Minimum password length. Range from 6 to 30"
        }
      },
      "type": "object",
      "required": [
        "containsLowercaseCharacter",
        "containsNonAlphanumericCharacter",
        "containsNumericCharacter",
        "containsUppercaseCharacter",
        "maxPasswordLength",
        "minPasswordLength"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfig": {
      "description": "Configuration for settings related to email privacy and public visibility. Settings in this config protect against email enumeration, but may make some trade-offs in user-friendliness.",
      "properties": {
        "enableImprovedEmailPrivacy": {
          "type": "boolean",
          "description": "Migrates the project to a state of improved email privacy. For example certain error codes are more generic to avoid giving away information on whether the account exists. In addition, this disables certain features that as a side-effect allow user enumeration. Enabling this toggle disables the fetchSignInMethodsForEmail functionality and changing the user's email to an unverified email. It is recommended to remove dependence on this functionality and enable this toggle to improve user privacy."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfigResponse": {
      "description": "Configuration for settings related to email privacy and public visibility. Settings in this config protect against email enumeration, but may make some trade-offs in user-friendliness.",
      "properties": {
        "enableImprovedEmailPrivacy": {
          "type": "boolean",
          "description": "Migrates the project to a state of improved email privacy. For example certain error codes are more generic to avoid giving away information on whether the account exists. In addition, this disables certain features that as a side-effect allow user enumeration. Enabling this toggle disables the fetchSignInMethodsForEmail functionality and changing the user's email to an unverified email. It is recommended to remove dependence on this functionality and enable this toggle to improve user privacy."
        }
      },
      "type": "object",
      "required": [
        "enableImprovedEmailPrivacy"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2HashConfigResponse": {
      "description": "History information of the hash algorithm and key. Different accounts' passwords may be generated by different version.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "Different password hash algorithms used in Identity Toolkit."
        },
        "memoryCost": {
          "type": "integer",
          "description": "Memory cost for hash calculation. Used by scrypt and other similar password derivation algorithms. See https://tools.ietf.org/html/rfc7914 for explanation of field."
        },
        "rounds": {
          "type": "integer",
          "description": "How many rounds for hash calculation. Used by scrypt and other similar password derivation algorithms."
        },
        "saltSeparator": {
          "type": "string",
          "description": "Non-printable character to be inserted between the salt and plain text password in base64."
        },
        "signerKey": {
          "type": "string",
          "description": "Signer key in base64."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "memoryCost",
        "rounds",
        "saltSeparator",
        "signerKey"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2IdpCertificate": {
      "description": "The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP.",
      "properties": {
        "x509Certificate": {
          "type": "string",
          "description": "The x509 certificate"
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2IdpCertificateResponse": {
      "description": "The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP.",
      "properties": {
        "x509Certificate": {
          "type": "string",
          "description": "The x509 certificate"
        }
      },
      "type": "object",
      "required": [
        "x509Certificate"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2IdpConfig": {
      "description": "The SAML IdP (Identity Provider) configuration when the project acts as the relying party.",
      "properties": {
        "idpCertificates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2IdpCertificate"
          },
          "description": "IDP's public keys for verifying signature in the assertions."
        },
        "idpEntityId": {
          "type": "string",
          "description": "Unique identifier for all SAML entities."
        },
        "signRequest": {
          "type": "boolean",
          "description": "Indicates if outbounding SAMLRequest should be signed."
        },
        "ssoUrl": {
          "type": "string",
          "description": "URL to send Authentication request to."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2IdpConfigResponse": {
      "description": "The SAML IdP (Identity Provider) configuration when the project acts as the relying party.",
      "properties": {
        "idpCertificates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2IdpCertificateResponse"
          },
          "description": "IDP's public keys for verifying signature in the assertions."
        },
        "idpEntityId": {
          "type": "string",
          "description": "Unique identifier for all SAML entities."
        },
        "signRequest": {
          "type": "boolean",
          "description": "Indicates if outbounding SAMLRequest should be signed."
        },
        "ssoUrl": {
          "type": "string",
          "description": "URL to send Authentication request to."
        }
      },
      "type": "object",
      "required": [
        "idpCertificates",
        "idpEntityId",
        "signRequest",
        "ssoUrl"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2Inheritance": {
      "description": "Settings that the tenants will inherit from project level.",
      "properties": {
        "emailSendingConfig": {
          "type": "boolean",
          "description": "Whether to allow the tenant to inherit custom domains, email templates, and custom SMTP settings. If true, email sent from tenant will follow the project level email sending configurations. If false (by default), emails will go with the default settings with no customizations."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2InheritanceResponse": {
      "description": "Settings that the tenants will inherit from project level.",
      "properties": {
        "emailSendingConfig": {
          "type": "boolean",
          "description": "Whether to allow the tenant to inherit custom domains, email templates, and custom SMTP settings. If true, email sent from tenant will follow the project level email sending configurations. If false (by default), emails will go with the default settings with no customizations."
        }
      },
      "type": "object",
      "required": [
        "emailSendingConfig"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2MonitoringConfig": {
      "description": "Configuration related to monitoring project activity.",
      "properties": {
        "requestLogging": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RequestLogging",
          "description": "Configuration for logging requests made to this project to Stackdriver Logging"
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2MonitoringConfigResponse": {
      "description": "Configuration related to monitoring project activity.",
      "properties": {
        "requestLogging": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RequestLoggingResponse",
          "description": "Configuration for logging requests made to this project to Stackdriver Logging"
        }
      },
      "type": "object",
      "required": [
        "requestLogging"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfig": {
      "description": "Options related to MultiFactor Authentication for the project.",
      "properties": {
        "enabledProviders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfigEnabledProvidersItem"
          },
          "description": "A list of usable second factors for this project."
        },
        "providerConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2ProviderConfig"
          },
          "description": "A list of usable second factors for this project along with their configurations. This field does not support phone based MFA, for that use the 'enabled_providers' field."
        },
        "state": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfigState",
          "description": "Whether MultiFactor Authentication has been enabled for this project."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfigEnabledProvidersItem": {
      "type": "string",
      "enum": [
        {
          "name": "ProviderUnspecified",
          "description": "Illegal Provider, should not be used",
          "value": "PROVIDER_UNSPECIFIED"
        },
        {
          "name": "PhoneSms",
          "description": "SMS is enabled as a second factor for this project.",
          "value": "PHONE_SMS"
        }
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfigResponse": {
      "description": "Options related to MultiFactor Authentication for the project.",
      "properties": {
        "enabledProviders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of usable second factors for this project."
        },
        "providerConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2ProviderConfigResponse"
          },
          "description": "A list of usable second factors for this project along with their configurations. This field does not support phone based MFA, for that use the 'enabled_providers' field."
        },
        "state": {
          "type": "string",
          "description": "Whether MultiFactor Authentication has been enabled for this project."
        }
      },
      "type": "object",
      "required": [
        "enabledProviders",
        "providerConfigs",
        "state"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfigState": {
      "description": "Whether MultiFactor Authentication has been enabled for this project.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Illegal State, should not be used.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Multi-factor authentication cannot be used for this project",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "Multi-factor authentication can be used for this project",
          "value": "ENABLED"
        },
        {
          "name": "Mandatory",
          "description": "Multi-factor authentication is required for this project. Users from this project must authenticate with the second factor.",
          "value": "MANDATORY"
        }
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2OAuthResponseType": {
      "description": "The response type to request for in the OAuth authorization flow. You can set either `id_token` or `code` to true, but not both. Setting both types to be simultaneously true (`{code: true, id_token: true}`) is not yet supported. See https://openid.net/specs/openid-connect-core-1_0.html#Authentication for a mapping of response type to OAuth 2.0 flow.",
      "properties": {
        "code": {
          "type": "boolean",
          "description": "If true, authorization code is returned from IdP's authorization endpoint."
        },
        "idToken": {
          "type": "boolean",
          "description": "If true, ID token is returned from IdP's authorization endpoint."
        },
        "token": {
          "type": "boolean",
          "description": "Do not use. The `token` response type is not supported at the moment."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2OAuthResponseTypeResponse": {
      "description": "The response type to request for in the OAuth authorization flow. You can set either `id_token` or `code` to true, but not both. Setting both types to be simultaneously true (`{code: true, id_token: true}`) is not yet supported. See https://openid.net/specs/openid-connect-core-1_0.html#Authentication for a mapping of response type to OAuth 2.0 flow.",
      "properties": {
        "code": {
          "type": "boolean",
          "description": "If true, authorization code is returned from IdP's authorization endpoint."
        },
        "idToken": {
          "type": "boolean",
          "description": "If true, ID token is returned from IdP's authorization endpoint."
        },
        "token": {
          "type": "boolean",
          "description": "Do not use. The `token` response type is not supported at the moment."
        }
      },
      "type": "object",
      "required": [
        "code",
        "idToken",
        "token"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfig": {
      "description": "The configuration for the password policy on the project.",
      "properties": {
        "forceUpgradeOnSignin": {
          "type": "boolean",
          "description": "Users must have a password compliant with the password policy to sign-in."
        },
        "passwordPolicyEnforcementState": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfigPasswordPolicyEnforcementState",
          "description": "Which enforcement mode to use for the password policy."
        },
        "passwordPolicyVersions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyVersion"
          },
          "description": "Must be of length 1. Contains the strength attributes for the password policy."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfigPasswordPolicyEnforcementState": {
      "description": "Which enforcement mode to use for the password policy.",
      "type": "string",
      "enum": [
        {
          "name": "PasswordPolicyEnforcementStateUnspecified",
          "description": "Illegal State, should not be used.",
          "value": "PASSWORD_POLICY_ENFORCEMENT_STATE_UNSPECIFIED"
        },
        {
          "name": "Off",
          "description": "Password Policy will not be used on the project.",
          "value": "OFF"
        },
        {
          "name": "Enforce",
          "description": "Passwords non-compliant with the password policy will be rejected with an error thrown.",
          "value": "ENFORCE"
        }
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfigResponse": {
      "description": "The configuration for the password policy on the project.",
      "properties": {
        "forceUpgradeOnSignin": {
          "type": "boolean",
          "description": "Users must have a password compliant with the password policy to sign-in."
        },
        "lastUpdateTime": {
          "type": "string",
          "description": "The last time the password policy on the project was updated."
        },
        "passwordPolicyEnforcementState": {
          "type": "string",
          "description": "Which enforcement mode to use for the password policy."
        },
        "passwordPolicyVersions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyVersionResponse"
          },
          "description": "Must be of length 1. Contains the strength attributes for the password policy."
        }
      },
      "type": "object",
      "required": [
        "forceUpgradeOnSignin",
        "lastUpdateTime",
        "passwordPolicyEnforcementState",
        "passwordPolicyVersions"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyVersion": {
      "description": "The strength attributes for the password policy on the project.",
      "properties": {
        "customStrengthOptions": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2CustomStrengthOptions",
          "description": "The custom strength options enforced by the password policy."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyVersionResponse": {
      "description": "The strength attributes for the password policy on the project.",
      "properties": {
        "customStrengthOptions": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2CustomStrengthOptionsResponse",
          "description": "The custom strength options enforced by the password policy."
        },
        "schemaVersion": {
          "type": "integer",
          "description": "schema version number for the password policy"
        }
      },
      "type": "object",
      "required": [
        "customStrengthOptions",
        "schemaVersion"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2ProviderConfig": {
      "description": "ProviderConfig describes the supported MFA providers along with their configurations.",
      "properties": {
        "state": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2ProviderConfigState",
          "description": "Describes the state of the MultiFactor Authentication type."
        },
        "totpProviderConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2TotpMfaProviderConfig",
          "description": "TOTP MFA provider config for this project."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2ProviderConfigResponse": {
      "description": "ProviderConfig describes the supported MFA providers along with their configurations.",
      "properties": {
        "state": {
          "type": "string",
          "description": "Describes the state of the MultiFactor Authentication type."
        },
        "totpProviderConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2TotpMfaProviderConfigResponse",
          "description": "TOTP MFA provider config for this project."
        }
      },
      "type": "object",
      "required": [
        "state",
        "totpProviderConfig"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2ProviderConfigState": {
      "description": "Describes the state of the MultiFactor Authentication type.",
      "type": "string",
      "enum": [
        {
          "name": "MfaStateUnspecified",
          "description": "Illegal State, should not be used.",
          "value": "MFA_STATE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Multi-factor authentication cannot be used for this project.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "Multi-factor authentication can be used for this project.",
          "value": "ENABLED"
        },
        {
          "name": "Mandatory",
          "description": "Multi-factor authentication is required for this project. Users from this project must authenticate with the second factor.",
          "value": "MANDATORY"
        }
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RecaptchaConfig": {
      "description": "The reCAPTCHA Enterprise integration config.",
      "properties": {
        "emailPasswordEnforcementState": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RecaptchaConfigEmailPasswordEnforcementState",
          "description": "The reCAPTCHA config for email/password provider, containing the enforcement status. The email/password provider contains all related user flows protected by reCAPTCHA."
        },
        "managedRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRule"
          },
          "description": "The managed rules for authentication action based on reCAPTCHA scores. The rules are shared across providers for a given tenant project."
        },
        "useAccountDefender": {
          "type": "boolean",
          "description": "Whether to use the account defender for reCAPTCHA assessment. Defaults to `false`."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RecaptchaConfigEmailPasswordEnforcementState": {
      "description": "The reCAPTCHA config for email/password provider, containing the enforcement status. The email/password provider contains all related user flows protected by reCAPTCHA.",
      "type": "string",
      "enum": [
        {
          "name": "RecaptchaProviderEnforcementStateUnspecified",
          "description": "Enforcement state has not been set.",
          "value": "RECAPTCHA_PROVIDER_ENFORCEMENT_STATE_UNSPECIFIED"
        },
        {
          "name": "Off",
          "description": "Unenforced.",
          "value": "OFF"
        },
        {
          "name": "Audit",
          "description": "reCAPTCHA assessment is created, result is not used to enforce.",
          "value": "AUDIT"
        },
        {
          "name": "Enforce",
          "description": "reCAPTCHA assessment is created, result is used to enforce.",
          "value": "ENFORCE"
        }
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RecaptchaConfigResponse": {
      "description": "The reCAPTCHA Enterprise integration config.",
      "properties": {
        "emailPasswordEnforcementState": {
          "type": "string",
          "description": "The reCAPTCHA config for email/password provider, containing the enforcement status. The email/password provider contains all related user flows protected by reCAPTCHA."
        },
        "managedRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRuleResponse"
          },
          "description": "The managed rules for authentication action based on reCAPTCHA scores. The rules are shared across providers for a given tenant project."
        },
        "recaptchaKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RecaptchaKeyResponse"
          },
          "description": "The reCAPTCHA keys."
        },
        "useAccountDefender": {
          "type": "boolean",
          "description": "Whether to use the account defender for reCAPTCHA assessment. Defaults to `false`."
        }
      },
      "type": "object",
      "required": [
        "emailPasswordEnforcementState",
        "managedRules",
        "recaptchaKeys",
        "useAccountDefender"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RecaptchaKeyResponse": {
      "description": "The reCAPTCHA key config. reCAPTCHA Enterprise offers different keys for different client platforms.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The reCAPTCHA Enterprise key resource name, e.g. \"projects/{project}/keys/{key}\""
        },
        "type": {
          "type": "string",
          "description": "The client's platform type."
        }
      },
      "type": "object",
      "required": [
        "key",
        "type"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRule": {
      "description": "The config for a reCAPTCHA managed rule. Models a single interval [start_score, end_score]. The start_score is implicit. It is either the closest smaller end_score (if one is available) or 0. Intervals in aggregate span [0, 1] without overlapping.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRuleAction",
          "description": "The action taken if the reCAPTCHA score of a request is within the interval [start_score, end_score]."
        },
        "endScore": {
          "type": "number",
          "description": "The end score (inclusive) of the score range for an action. Must be a value between 0.0 and 1.0, at 11 discrete values; e.g. 0, 0.1, 0.2, 0.3, ... 0.9, 1.0. A score of 0.0 indicates the riskiest request (likely a bot), whereas 1.0 indicates the safest request (likely a human). See https://cloud.google.com/recaptcha-enterprise/docs/interpret-assessment."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRuleAction": {
      "description": "The action taken if the reCAPTCHA score of a request is within the interval [start_score, end_score].",
      "type": "string",
      "enum": [
        {
          "name": "RecaptchaActionUnspecified",
          "description": "The reCAPTCHA action is not specified.",
          "value": "RECAPTCHA_ACTION_UNSPECIFIED"
        },
        {
          "name": "Block",
          "description": "The reCAPTCHA-protected request will be blocked.",
          "value": "BLOCK"
        }
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRuleResponse": {
      "description": "The config for a reCAPTCHA managed rule. Models a single interval [start_score, end_score]. The start_score is implicit. It is either the closest smaller end_score (if one is available) or 0. Intervals in aggregate span [0, 1] without overlapping.",
      "properties": {
        "action": {
          "type": "string",
          "description": "The action taken if the reCAPTCHA score of a request is within the interval [start_score, end_score]."
        },
        "endScore": {
          "type": "number",
          "description": "The end score (inclusive) of the score range for an action. Must be a value between 0.0 and 1.0, at 11 discrete values; e.g. 0, 0.1, 0.2, 0.3, ... 0.9, 1.0. A score of 0.0 indicates the riskiest request (likely a bot), whereas 1.0 indicates the safest request (likely a human). See https://cloud.google.com/recaptcha-enterprise/docs/interpret-assessment."
        }
      },
      "type": "object",
      "required": [
        "action",
        "endScore"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RequestLogging": {
      "description": "Configuration for logging requests made to this project to Stackdriver Logging",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether logging is enabled for this project or not."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2RequestLoggingResponse": {
      "description": "Configuration for logging requests made to this project to Stackdriver Logging",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether logging is enabled for this project or not."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2SmsRegionConfig": {
      "description": "Configures the regions where users are allowed to send verification SMS for the project or tenant. This is based on the calling code of the destination phone number.",
      "properties": {
        "allowByDefault": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2AllowByDefault",
          "description": "A policy of allowing SMS to every region by default and adding disallowed regions to a disallow list."
        },
        "allowlistOnly": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2AllowlistOnly",
          "description": "A policy of only allowing regions by explicitly adding them to an allowlist."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2SmsRegionConfigResponse": {
      "description": "Configures the regions where users are allowed to send verification SMS for the project or tenant. This is based on the calling code of the destination phone number.",
      "properties": {
        "allowByDefault": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2AllowByDefaultResponse",
          "description": "A policy of allowing SMS to every region by default and adding disallowed regions to a disallow list."
        },
        "allowlistOnly": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2AllowlistOnlyResponse",
          "description": "A policy of only allowing regions by explicitly adding them to an allowlist."
        }
      },
      "type": "object",
      "required": [
        "allowByDefault",
        "allowlistOnly"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2SpCertificateResponse": {
      "description": "The SP's certificate data for IDP to verify the SAMLRequest generated by the SP.",
      "properties": {
        "expiresAt": {
          "type": "string",
          "description": "Timestamp of the cert expiration instance."
        },
        "x509Certificate": {
          "type": "string",
          "description": "Self-signed public certificate."
        }
      },
      "type": "object",
      "required": [
        "expiresAt",
        "x509Certificate"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2SpConfig": {
      "description": "The SAML SP (Service Provider) configuration when the project acts as the relying party to receive and accept an authentication assertion issued by a SAML identity provider.",
      "properties": {
        "callbackUri": {
          "type": "string",
          "description": "Callback URI where responses from IDP are handled."
        },
        "spEntityId": {
          "type": "string",
          "description": "Unique identifier for all SAML entities."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2SpConfigResponse": {
      "description": "The SAML SP (Service Provider) configuration when the project acts as the relying party to receive and accept an authentication assertion issued by a SAML identity provider.",
      "properties": {
        "callbackUri": {
          "type": "string",
          "description": "Callback URI where responses from IDP are handled."
        },
        "spCertificates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2SpCertificateResponse"
          },
          "description": "Public certificates generated by the server to verify the signature in SAMLRequest in the SP-initiated flow."
        },
        "spEntityId": {
          "type": "string",
          "description": "Unique identifier for all SAML entities."
        }
      },
      "type": "object",
      "required": [
        "callbackUri",
        "spCertificates",
        "spEntityId"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2TotpMfaProviderConfig": {
      "description": "TotpMFAProviderConfig represents the TOTP based MFA provider.",
      "properties": {
        "adjacentIntervals": {
          "type": "integer",
          "description": "The allowed number of adjacent intervals that will be used for verification to avoid clock skew."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleCloudIdentitytoolkitAdminV2TotpMfaProviderConfigResponse": {
      "description": "TotpMFAProviderConfig represents the TOTP based MFA provider.",
      "properties": {
        "adjacentIntervals": {
          "type": "integer",
          "description": "The allowed number of adjacent intervals that will be used for verification to avoid clock skew."
        }
      },
      "type": "object",
      "required": [
        "adjacentIntervals"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:identitytoolkit/v2:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:identitytoolkit/v2:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:identitytoolkit/v2:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:ids/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ids%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:ids/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ids%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:ids/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:ids%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:ids/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:ids/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:ids/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:ids%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:ids/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:ids%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:ids/v1:EndpointSeverity": {
      "description": "Required. Lowest threat severity that this endpoint will alert on.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Not set.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Informational",
          "description": "Informational alerts.",
          "value": "INFORMATIONAL"
        },
        {
          "name": "Low",
          "description": "Low severity alerts.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Medium severity alerts.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "High severity alerts.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Critical severity alerts.",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:ids/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:ids/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:integrations/v1alpha:AuthConfigCredentialType": {
      "description": "Credential type of the encrypted credential.",
      "type": "string",
      "enum": [
        {
          "name": "CredentialTypeUnspecified",
          "description": "Unspecified credential type",
          "value": "CREDENTIAL_TYPE_UNSPECIFIED"
        },
        {
          "name": "UsernameAndPassword",
          "description": "Regular username/password pair.",
          "value": "USERNAME_AND_PASSWORD"
        },
        {
          "name": "ApiKey",
          "description": "API key.",
          "value": "API_KEY"
        },
        {
          "name": "Oauth2AuthorizationCode",
          "description": "OAuth 2.0 Authorization Code Grant Type.",
          "value": "OAUTH2_AUTHORIZATION_CODE"
        },
        {
          "name": "Oauth2Implicit",
          "description": "OAuth 2.0 Implicit Grant Type.",
          "value": "OAUTH2_IMPLICIT"
        },
        {
          "name": "Oauth2ClientCredentials",
          "description": "OAuth 2.0 Client Credentials Grant Type.",
          "value": "OAUTH2_CLIENT_CREDENTIALS"
        },
        {
          "name": "Oauth2ResourceOwnerCredentials",
          "description": "OAuth 2.0 Resource Owner Credentials Grant Type.",
          "value": "OAUTH2_RESOURCE_OWNER_CREDENTIALS"
        },
        {
          "name": "Jwt",
          "description": "JWT Token.",
          "value": "JWT"
        },
        {
          "name": "AuthToken",
          "description": "Auth Token, e.g. bearer token.",
          "value": "AUTH_TOKEN"
        },
        {
          "name": "ServiceAccount",
          "description": "Service Account which can be used to generate token for authentication.",
          "value": "SERVICE_ACCOUNT"
        },
        {
          "name": "ClientCertificateOnly",
          "description": "Client Certificate only.",
          "value": "CLIENT_CERTIFICATE_ONLY"
        },
        {
          "name": "OidcToken",
          "description": "Google OIDC ID Token",
          "value": "OIDC_TOKEN"
        }
      ]
    },
    "google-native:integrations/v1alpha:AuthConfigState": {
      "description": "The status of the auth config.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Status not specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Valid",
          "description": "Valid Auth config.",
          "value": "VALID"
        },
        {
          "name": "Invalid",
          "description": "General invalidity, if it doesn't fits in the detailed issue below.",
          "value": "INVALID"
        },
        {
          "name": "SoftDeleted",
          "description": "Auth config soft deleted.",
          "value": "SOFT_DELETED"
        },
        {
          "name": "Expired",
          "description": "Auth config expired.",
          "value": "EXPIRED"
        },
        {
          "name": "Unauthorized",
          "description": "Auth config unauthorized.",
          "value": "UNAUTHORIZED"
        },
        {
          "name": "Unsupported",
          "description": "Auth config not supported.",
          "value": "UNSUPPORTED"
        }
      ]
    },
    "google-native:integrations/v1alpha:AuthConfigVisibility": {
      "description": "The visibility of the auth config.",
      "type": "string",
      "enum": [
        {
          "name": "AuthConfigVisibilityUnspecified",
          "description": "Visibility not specified.",
          "value": "AUTH_CONFIG_VISIBILITY_UNSPECIFIED"
        },
        {
          "name": "Private",
          "description": "Profile visible to the creator only.",
          "value": "PRIVATE"
        },
        {
          "name": "ClientVisible",
          "description": "Profile visible within the client.",
          "value": "CLIENT_VISIBLE"
        }
      ]
    },
    "google-native:integrations/v1alpha:CertificateCertificateStatus": {
      "description": "Status of the certificate",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unspecified certificate status",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "Certificate in active state will be able to use",
          "value": "ACTIVE"
        },
        {
          "name": "Expired",
          "description": "Certificate in expired state needs to be updated",
          "value": "EXPIRED"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoAttributes": {
      "description": "Attributes are additional options that can be associated with each event property. For more information, see",
      "properties": {
        "dataType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoAttributesDataType",
          "description": "Things like URL, Email, Currency, Timestamp (rather than string, int64...)"
        },
        "defaultValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoValueType",
          "description": "Used to define defaults."
        },
        "isRequired": {
          "type": "boolean",
          "description": "Required for event execution. The validation will be done by the event bus when the event is triggered."
        },
        "isSearchable": {
          "type": "boolean",
          "description": "Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.",
          "deprecationMessage": "Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable."
        },
        "logSettings": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoLogSettings",
          "description": "See"
        },
        "readOnly": {
          "type": "boolean",
          "description": "Used to indicate if the ParameterEntry is a read only field or not."
        },
        "searchable": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoAttributesSearchable"
        },
        "taskVisibility": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of tasks that can view this property, if empty then all."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoAttributesDataType": {
      "description": "Things like URL, Email, Currency, Timestamp (rather than string, int64...)",
      "type": "string",
      "enum": [
        {
          "name": "DataTypeUnspecified",
          "value": "DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "Email",
          "value": "EMAIL"
        },
        {
          "name": "Url",
          "value": "URL"
        },
        {
          "name": "Currency",
          "value": "CURRENCY"
        },
        {
          "name": "Timestamp",
          "value": "TIMESTAMP"
        },
        {
          "name": "DomainName",
          "description": "Domain is a web url string with one top-level private domain and a suffix (for example: google.com, walmart.com)",
          "value": "DOMAIN_NAME"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoAttributesResponse": {
      "description": "Attributes are additional options that can be associated with each event property. For more information, see",
      "properties": {
        "dataType": {
          "type": "string",
          "description": "Things like URL, Email, Currency, Timestamp (rather than string, int64...)"
        },
        "defaultValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoValueTypeResponse",
          "description": "Used to define defaults."
        },
        "isRequired": {
          "type": "boolean",
          "description": "Required for event execution. The validation will be done by the event bus when the event is triggered."
        },
        "isSearchable": {
          "type": "boolean",
          "description": "Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable.",
          "deprecationMessage": "Used to indicate if a ParameterEntry should be converted to ParamIndexes for ST-Spanner full-text search. DEPRECATED: use searchable."
        },
        "logSettings": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoLogSettingsResponse",
          "description": "See"
        },
        "readOnly": {
          "type": "boolean",
          "description": "Used to indicate if the ParameterEntry is a read only field or not."
        },
        "searchable": {
          "type": "string"
        },
        "taskVisibility": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of tasks that can view this property, if empty then all."
        }
      },
      "type": "object",
      "required": [
        "dataType",
        "defaultValue",
        "isRequired",
        "isSearchable",
        "logSettings",
        "readOnly",
        "searchable",
        "taskVisibility"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoAttributesSearchable": {
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Yes",
          "description": "If yes, the parameter key and value will be full-text indexed. In a proto, this value will propagate to all children whose searchable is unspecified.",
          "value": "YES"
        },
        {
          "name": "No",
          "description": "If no, the parameter key and value will not be full-text indexed. In a proto, this value will propagate to all children whose searchable is unspecified.",
          "value": "NO"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumList": {
      "description": "List of error enums for alerts.",
      "properties": {
        "enumStrings": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "filterType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumListFilterType"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumListFilterType": {
      "type": "string",
      "enum": [
        {
          "name": "DefaultInclusive",
          "value": "DEFAULT_INCLUSIVE"
        },
        {
          "name": "Exclusive",
          "value": "EXCLUSIVE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumListResponse": {
      "description": "List of error enums for alerts.",
      "properties": {
        "enumStrings": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "filterType": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "enumStrings",
        "filterType"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigThresholdValue": {
      "description": "The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig.",
      "properties": {
        "absolute": {
          "type": "string"
        },
        "percentage": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigThresholdValueResponse": {
      "description": "The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig.",
      "properties": {
        "absolute": {
          "type": "string"
        },
        "percentage": {
          "type": "integer"
        }
      },
      "type": "object",
      "required": [
        "absolute",
        "percentage"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoBooleanParameterArray": {
      "properties": {
        "booleanValues": {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoBooleanParameterArrayResponse": {
      "properties": {
        "booleanValues": {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        }
      },
      "type": "object",
      "required": [
        "booleanValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoCloudSchedulerConfig": {
      "description": "Cloud Scheduler Trigger configuration",
      "properties": {
        "cronTab": {
          "type": "string",
          "description": "The cron tab of cloud scheduler trigger."
        },
        "errorMessage": {
          "type": "string",
          "description": "Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations"
        },
        "location": {
          "type": "string",
          "description": "The location where associated cloud scheduler job will be created"
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Service account used by Cloud Scheduler to trigger the integration at scheduled time"
        }
      },
      "type": "object",
      "required": [
        "cronTab",
        "location",
        "serviceAccountEmail"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoCloudSchedulerConfigResponse": {
      "description": "Cloud Scheduler Trigger configuration",
      "properties": {
        "cronTab": {
          "type": "string",
          "description": "The cron tab of cloud scheduler trigger."
        },
        "errorMessage": {
          "type": "string",
          "description": "Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations"
        },
        "location": {
          "type": "string",
          "description": "The location where associated cloud scheduler job will be created"
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Service account used by Cloud Scheduler to trigger the integration at scheduled time"
        }
      },
      "type": "object",
      "required": [
        "cronTab",
        "errorMessage",
        "location",
        "serviceAccountEmail"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoCombinedCondition": {
      "description": "This message recursively combines constituent conditions using logical AND.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCondition"
          },
          "description": "A set of individual constituent conditions."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoCombinedConditionResponse": {
      "description": "This message recursively combines constituent conditions using logical AND.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoConditionResponse"
          },
          "description": "A set of individual constituent conditions."
        }
      },
      "type": "object",
      "required": [
        "conditions"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoCondition": {
      "description": "Condition that uses `operator` to evaluate the key against the value.",
      "properties": {
        "eventPropertyKey": {
          "type": "string",
          "description": "Key that's evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown."
        },
        "operator": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoConditionOperator",
          "description": "Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoValueType",
          "description": "Value that's checked for the key."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoConditionOperator": {
      "description": "Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair.",
      "type": "string",
      "enum": [
        {
          "name": "Unset",
          "value": "UNSET"
        },
        {
          "name": "Equals",
          "value": "EQUALS"
        },
        {
          "name": "Contains",
          "value": "CONTAINS"
        },
        {
          "name": "LessThan",
          "value": "LESS_THAN"
        },
        {
          "name": "GreaterThan",
          "value": "GREATER_THAN"
        },
        {
          "name": "Exists",
          "value": "EXISTS"
        },
        {
          "name": "DoesNotExist",
          "value": "DOES_NOT_EXIST"
        },
        {
          "name": "IsEmpty",
          "value": "IS_EMPTY"
        },
        {
          "name": "IsNotEmpty",
          "value": "IS_NOT_EMPTY"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoConditionResponse": {
      "description": "Condition that uses `operator` to evaluate the key against the value.",
      "properties": {
        "eventPropertyKey": {
          "type": "string",
          "description": "Key that's evaluated against the `value`. Please note the data type of the runtime value associated with the key should match the data type of `value`, else an IllegalArgumentException is thrown."
        },
        "operator": {
          "type": "string",
          "description": "Operator used to evaluate the condition. Please note that an operator with an inappropriate key/value operand will result in IllegalArgumentException, e.g. CONTAINS with boolean key/value pair."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoValueTypeResponse",
          "description": "Value that's checked for the key."
        }
      },
      "type": "object",
      "required": [
        "eventPropertyKey",
        "operator",
        "value"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoCoordinate": {
      "description": "Represents two-dimensional positions.",
      "properties": {
        "x": {
          "type": "integer"
        },
        "y": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoCoordinateResponse": {
      "description": "Represents two-dimensional positions.",
      "properties": {
        "x": {
          "type": "integer"
        },
        "y": {
          "type": "integer"
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoDoubleArray": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoDoubleArrayResponse": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoDoubleParameterArray": {
      "properties": {
        "doubleValues": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoDoubleParameterArrayResponse": {
      "properties": {
        "doubleValues": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "type": "object",
      "required": [
        "doubleValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoEventBusProperties": {
      "description": "LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoPropertyEntry"
          },
          "description": "An unordered list of property entries."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoEventBusPropertiesResponse": {
      "description": "LINT.IfChange This message is used for storing key value pair properties for each Event / Task in the EventBus.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoPropertyEntryResponse"
          },
          "description": "An unordered list of property entries."
        }
      },
      "type": "object",
      "required": [
        "properties"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoEventParameters": {
      "description": "LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParameterEntry"
          },
          "description": "Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoEventParametersResponse": {
      "description": "LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParameterEntryResponse"
          },
          "description": "Parameters are a part of Event and can be used to communicate between different tasks that are part of the same integration execution."
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoFailurePolicy": {
      "description": "Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).",
      "properties": {
        "intervalInSeconds": {
          "type": "string",
          "description": "Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff."
        },
        "maxNumRetries": {
          "type": "integer",
          "description": "Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed."
        },
        "retryStrategy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoFailurePolicyRetryStrategy",
          "description": "Defines what happens to the task upon failure."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoFailurePolicyResponse": {
      "description": "Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).",
      "properties": {
        "intervalInSeconds": {
          "type": "string",
          "description": "Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the initial interval for backoff."
        },
        "maxNumRetries": {
          "type": "integer",
          "description": "Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_WORKFLOW_WITH_BACKOFF. Defines the number of times the task will be retried if failed."
        },
        "retryStrategy": {
          "type": "string",
          "description": "Defines what happens to the task upon failure."
        }
      },
      "type": "object",
      "required": [
        "intervalInSeconds",
        "maxNumRetries",
        "retryStrategy"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoFailurePolicyRetryStrategy": {
      "description": "Defines what happens to the task upon failure.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Ignore",
          "description": "Ignores the failure of this task. The rest of the workflow will be executed Assuming this task succeeded.",
          "value": "IGNORE"
        },
        {
          "name": "None",
          "description": "Causes a permanent failure of the task. However, if the last task(s) of event was successfully completed despite the failure of this task, it has no impact on the workflow.",
          "value": "NONE"
        },
        {
          "name": "Fatal",
          "description": "Causes a permanent failure of the event. It is different from NONE because this will mark the event as FAILED by shutting down the event execution.",
          "value": "FATAL"
        },
        {
          "name": "FixedInterval",
          "description": "The task will be retried from the failed task onwards after a fixed delay. A max-retry count is required to be specified with this strategy. A jitter is added to each exponential interval so that concurrently failing tasks of the same type do not end up retrying after the exact same exponential interval. Max_num_retries and interval_in_seconds must be specified.",
          "value": "FIXED_INTERVAL"
        },
        {
          "name": "LinearBackoff",
          "description": "The task will be retried from the failed task onwards after a fixed delay that linearly increases with each retry attempt. A jitter is added to each exponential interval so that concurrently failing tasks of the same type do not end up retrying after the exact same exponential interval. A max-retry count is required to be specified with this strategy. Max_num_retries and interval_in_seconds must be specified.",
          "value": "LINEAR_BACKOFF"
        },
        {
          "name": "ExponentialBackoff",
          "description": "The task will be retried after an exponentially increasing period of time with each failure. A jitter is added to each exponential interval so that concurrently failing tasks of the same type do not end up retrying after the exact same exponential interval. A max-retry count is required to be specified with this strategy. `max_num_retries` and `interval_in_seconds` must be specified.",
          "value": "EXPONENTIAL_BACKOFF"
        },
        {
          "name": "RestartWorkflowWithBackoff",
          "description": "The entire workflow will be restarted with the initial parameters that were set when the event was fired. A max-retry count is required to be specified with this strategy. `max_num_retries` and `interval_in_seconds` must be specified.",
          "value": "RESTART_WORKFLOW_WITH_BACKOFF"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoIntArray": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoIntArrayResponse": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoIntParameterArray": {
      "properties": {
        "intValues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoIntParameterArrayResponse": {
      "properties": {
        "intValues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "intValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoLogSettings": {
      "description": "The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information.",
      "properties": {
        "logFieldName": {
          "type": "string",
          "description": "The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key."
        },
        "sanitizeOptions": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsSanitizeOptions",
          "description": "Contains the scrubbing options, such as whether to scrub, obfuscate, etc."
        },
        "seedPeriod": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoLogSettingsSeedPeriod"
        },
        "seedScope": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoLogSettingsSeedScope"
        },
        "shorteningLimits": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsFieldLimits",
          "description": "Contains the field limits for shortening, such as max string length and max array length."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoLogSettingsResponse": {
      "description": "The LogSettings define the logging attributes for an event property. These attributes are used to map the property to the parameter in the log proto. Also used to define scrubbing/truncation behavior and PII information.",
      "properties": {
        "logFieldName": {
          "type": "string",
          "description": "The name of corresponding logging field of the event property. If omitted, assumes the same name as the event property key."
        },
        "sanitizeOptions": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsSanitizeOptionsResponse",
          "description": "Contains the scrubbing options, such as whether to scrub, obfuscate, etc."
        },
        "seedPeriod": {
          "type": "string"
        },
        "seedScope": {
          "type": "string"
        },
        "shorteningLimits": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsFieldLimitsResponse",
          "description": "Contains the field limits for shortening, such as max string length and max array length."
        }
      },
      "type": "object",
      "required": [
        "logFieldName",
        "sanitizeOptions",
        "seedPeriod",
        "seedScope",
        "shorteningLimits"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoLogSettingsSeedPeriod": {
      "type": "string",
      "enum": [
        {
          "name": "SeedPeriodUnspecified",
          "value": "SEED_PERIOD_UNSPECIFIED"
        },
        {
          "name": "Day",
          "description": "Sanitized values remain constant for the day of the event.",
          "value": "DAY"
        },
        {
          "name": "Week",
          "description": "Sanitized values remain constant for the week of the event; may cross month boundaries.",
          "value": "WEEK"
        },
        {
          "name": "Month",
          "description": "Sanitized values remain constant for the month of the event.",
          "value": "MONTH"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoLogSettingsSeedScope": {
      "type": "string",
      "enum": [
        {
          "name": "SeedScopeUnspecified",
          "value": "SEED_SCOPE_UNSPECIFIED"
        },
        {
          "name": "EventName",
          "description": "Hash computations include the event name.",
          "value": "EVENT_NAME"
        },
        {
          "name": "TimePeriod",
          "description": "Hash computations include a time period.",
          "value": "TIME_PERIOD"
        },
        {
          "name": "ParamName",
          "description": "Hash computations include the param name.",
          "value": "PARAM_NAME"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoNextTask": {
      "description": "The task that is next in line to be executed, if the condition specified evaluated to true.",
      "properties": {
        "combinedConditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCombinedCondition"
          },
          "description": "Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`",
          "deprecationMessage": "Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`"
        },
        "condition": {
          "type": "string",
          "description": "Standard filter expression for this task to become an eligible next task."
        },
        "description": {
          "type": "string",
          "description": "User-provided description intended to give more business context about the next task edge or condition."
        },
        "label": {
          "type": "string",
          "description": "User-provided label that is attached to this edge in the UI."
        },
        "taskConfigId": {
          "type": "string",
          "description": "ID of the next task."
        },
        "taskNumber": {
          "type": "string",
          "description": "Task number of the next task."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoNextTaskResponse": {
      "description": "The task that is next in line to be executed, if the condition specified evaluated to true.",
      "properties": {
        "combinedConditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCombinedConditionResponse"
          },
          "description": "Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`",
          "deprecationMessage": "Combined condition for this task to become an eligible next task. Each of these combined_conditions are joined with logical OR. DEPRECATED: use `condition`"
        },
        "condition": {
          "type": "string",
          "description": "Standard filter expression for this task to become an eligible next task."
        },
        "description": {
          "type": "string",
          "description": "User-provided description intended to give more business context about the next task edge or condition."
        },
        "label": {
          "type": "string",
          "description": "User-provided label that is attached to this edge in the UI."
        },
        "taskConfigId": {
          "type": "string",
          "description": "ID of the next task."
        },
        "taskNumber": {
          "type": "string",
          "description": "Task number of the next task."
        }
      },
      "type": "object",
      "required": [
        "combinedConditions",
        "condition",
        "description",
        "label",
        "taskConfigId",
        "taskNumber"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoNextTeardownTask": {
      "description": "The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the next teardown task."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoNextTeardownTaskResponse": {
      "description": "The teardown task that is next in line to be executed. We support only sequential execution of teardown tasks (i.e. no branching).",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the next teardown task."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoNodeIdentifier": {
      "description": "Represents a node identifier (type + id). Next highest id: 3",
      "properties": {
        "elementIdentifier": {
          "type": "string",
          "description": "Configuration of the edge."
        },
        "elementType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNodeIdentifierElementType",
          "description": "Destination node where the edge ends. It can only be a task config."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoNodeIdentifierElementType": {
      "description": "Destination node where the edge ends. It can only be a task config.",
      "type": "string",
      "enum": [
        {
          "name": "UnknownType",
          "value": "UNKNOWN_TYPE"
        },
        {
          "name": "TaskConfig",
          "value": "TASK_CONFIG"
        },
        {
          "name": "TriggerConfig",
          "value": "TRIGGER_CONFIG"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoNodeIdentifierResponse": {
      "description": "Represents a node identifier (type + id). Next highest id: 3",
      "properties": {
        "elementIdentifier": {
          "type": "string",
          "description": "Configuration of the edge."
        },
        "elementType": {
          "type": "string",
          "description": "Destination node where the edge ends. It can only be a task config."
        }
      },
      "type": "object",
      "required": [
        "elementIdentifier",
        "elementType"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryConfig": {
      "properties": {
        "descriptivePhrase": {
          "type": "string",
          "description": "A short phrase to describe what this parameter contains."
        },
        "helpText": {
          "type": "string",
          "description": "Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter."
        },
        "hideDefaultValue": {
          "type": "boolean",
          "description": "Whether the default value is hidden in the UI."
        },
        "inputDisplayOption": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryConfigInputDisplayOption"
        },
        "isHidden": {
          "type": "boolean",
          "description": "Whether this field is hidden in the UI."
        },
        "label": {
          "type": "string",
          "description": "A user-friendly label for the parameter."
        },
        "parameterNameOption": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryConfigParameterNameOption"
        },
        "subSectionLabel": {
          "type": "string",
          "description": "A user-friendly label for subSection under which the parameter will be displayed."
        },
        "uiPlaceholderText": {
          "type": "string",
          "description": "Placeholder text which will appear in the UI input form for this parameter."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryConfigInputDisplayOption": {
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "A single-line input for strings, a numeric input box for numbers, or a checkbox for booleans.",
          "value": "DEFAULT"
        },
        {
          "name": "StringMultiLine",
          "description": "A multi-line input box for longer strings/string templates.",
          "value": "STRING_MULTI_LINE"
        },
        {
          "name": "NumberSlider",
          "description": "A slider to select a numerical value. The default range is [0, 100].",
          "value": "NUMBER_SLIDER"
        },
        {
          "name": "BooleanToggle",
          "description": "A toggle button for boolean parameters.",
          "value": "BOOLEAN_TOGGLE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryConfigParameterNameOption": {
      "type": "string",
      "enum": [
        {
          "name": "DefaultNotParameterName",
          "description": "This field is not a parameter name.",
          "value": "DEFAULT_NOT_PARAMETER_NAME"
        },
        {
          "name": "IsParameterName",
          "description": "If this field is a string and this option is selected, the field will be interpreted as a parameter name. Users will be able to choose a variable using the autocomplete, but the name will be stored as a literal string.",
          "value": "IS_PARAMETER_NAME"
        },
        {
          "name": "KeyIsParameterName",
          "description": "If this field is a ParameterMap and this option is selected, the map's keys will be interpreted as parameter names. Ignored if this field is not a ParameterMap.",
          "value": "KEY_IS_PARAMETER_NAME"
        },
        {
          "name": "ValueIsParameterName",
          "description": "If this field is a ParameterMap and this option is selected, the map's values will be interpreted as parameter names. Ignored if this field is not a ParameterMap.",
          "value": "VALUE_IS_PARAMETER_NAME"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryConfigResponse": {
      "properties": {
        "descriptivePhrase": {
          "type": "string",
          "description": "A short phrase to describe what this parameter contains."
        },
        "helpText": {
          "type": "string",
          "description": "Detailed help text for this parameter containing information not provided elsewhere. For example, instructions on how to migrate from a deprecated parameter."
        },
        "hideDefaultValue": {
          "type": "boolean",
          "description": "Whether the default value is hidden in the UI."
        },
        "inputDisplayOption": {
          "type": "string"
        },
        "isHidden": {
          "type": "boolean",
          "description": "Whether this field is hidden in the UI."
        },
        "label": {
          "type": "string",
          "description": "A user-friendly label for the parameter."
        },
        "parameterNameOption": {
          "type": "string"
        },
        "subSectionLabel": {
          "type": "string",
          "description": "A user-friendly label for subSection under which the parameter will be displayed."
        },
        "uiPlaceholderText": {
          "type": "string",
          "description": "Placeholder text which will appear in the UI input form for this parameter."
        }
      },
      "type": "object",
      "required": [
        "descriptivePhrase",
        "helpText",
        "hideDefaultValue",
        "inputDisplayOption",
        "isHidden",
        "label",
        "parameterNameOption",
        "subSectionLabel",
        "uiPlaceholderText"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryProtoDefinition": {
      "properties": {
        "fullName": {
          "type": "string",
          "description": "The fully-qualified proto name. This message, for example, would be \"enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition\"."
        },
        "path": {
          "type": "string",
          "description": "Path to the proto file that contains the message type's definition."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryProtoDefinitionResponse": {
      "properties": {
        "fullName": {
          "type": "string",
          "description": "The fully-qualified proto name. This message, for example, would be \"enterprise.crm.eventbus.proto.ParamSpecEntry.ProtoDefinition\"."
        },
        "path": {
          "type": "string",
          "description": "Path to the proto file that contains the message type's definition."
        }
      },
      "type": "object",
      "required": [
        "fullName",
        "path"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRule": {
      "properties": {
        "doubleRange": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleDoubleRange"
        },
        "intRange": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleIntRange"
        },
        "stringRegex": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleStringRegex"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleDoubleRange": {
      "description": "Range used to validate doubles and floats.",
      "properties": {
        "max": {
          "type": "number",
          "description": "The inclusive maximum of the acceptable range."
        },
        "min": {
          "type": "number",
          "description": "The inclusive minimum of the acceptable range."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleDoubleRangeResponse": {
      "description": "Range used to validate doubles and floats.",
      "properties": {
        "max": {
          "type": "number",
          "description": "The inclusive maximum of the acceptable range."
        },
        "min": {
          "type": "number",
          "description": "The inclusive minimum of the acceptable range."
        }
      },
      "type": "object",
      "required": [
        "max",
        "min"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleIntRange": {
      "description": "Range used to validate longs and ints.",
      "properties": {
        "max": {
          "type": "string",
          "description": "The inclusive maximum of the acceptable range."
        },
        "min": {
          "type": "string",
          "description": "The inclusive minimum of the acceptable range."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleIntRangeResponse": {
      "description": "Range used to validate longs and ints.",
      "properties": {
        "max": {
          "type": "string",
          "description": "The inclusive maximum of the acceptable range."
        },
        "min": {
          "type": "string",
          "description": "The inclusive minimum of the acceptable range."
        }
      },
      "type": "object",
      "required": [
        "max",
        "min"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleResponse": {
      "properties": {
        "doubleRange": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleDoubleRangeResponse"
        },
        "intRange": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleIntRangeResponse"
        },
        "stringRegex": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleStringRegexResponse"
        }
      },
      "type": "object",
      "required": [
        "doubleRange",
        "intRange",
        "stringRegex"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleStringRegex": {
      "description": "Rule used to validate strings.",
      "properties": {
        "exclusive": {
          "type": "boolean",
          "description": "Whether the regex matcher is applied exclusively (if true, matching values will be rejected)."
        },
        "regex": {
          "type": "string",
          "description": "The regex applied to the input value(s)."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleStringRegexResponse": {
      "description": "Rule used to validate strings.",
      "properties": {
        "exclusive": {
          "type": "boolean",
          "description": "Whether the regex matcher is applied exclusively (if true, matching values will be rejected)."
        },
        "regex": {
          "type": "string",
          "description": "The regex applied to the input value(s)."
        }
      },
      "type": "object",
      "required": [
        "exclusive",
        "regex"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParameterEntry": {
      "description": "Key-value pair of EventBus parameters.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParameterValueType",
          "description": "Values for the defined keys. Each value can either be string, int, double or any proto message."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParameterEntryResponse": {
      "description": "Key-value pair of EventBus parameters.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParameterValueTypeResponse",
          "description": "Values for the defined keys. Each value can either be string, int, double or any proto message."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParameterValueType": {
      "description": "LINT.IfChange To support various types of parameter values. Next available id: 14",
      "properties": {
        "booleanArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBooleanParameterArray"
        },
        "booleanValue": {
          "type": "boolean"
        },
        "doubleArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoDoubleParameterArray"
        },
        "doubleValue": {
          "type": "number"
        },
        "intArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoIntParameterArray"
        },
        "intValue": {
          "type": "string"
        },
        "protoArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoProtoParameterArray"
        },
        "protoValue": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "serializedObjectValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoSerializedObjectParameter"
        },
        "stringArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoStringParameterArray"
        },
        "stringValue": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoParameterValueTypeResponse": {
      "description": "LINT.IfChange To support various types of parameter values. Next available id: 14",
      "properties": {
        "booleanArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBooleanParameterArrayResponse"
        },
        "booleanValue": {
          "type": "boolean"
        },
        "doubleArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoDoubleParameterArrayResponse"
        },
        "doubleValue": {
          "type": "number"
        },
        "intArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoIntParameterArrayResponse"
        },
        "intValue": {
          "type": "string"
        },
        "protoArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoProtoParameterArrayResponse"
        },
        "protoValue": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "serializedObjectValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoSerializedObjectParameterResponse"
        },
        "stringArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoStringParameterArrayResponse"
        },
        "stringValue": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "booleanArray",
        "booleanValue",
        "doubleArray",
        "doubleValue",
        "intArray",
        "intValue",
        "protoArray",
        "protoValue",
        "serializedObjectValue",
        "stringArray",
        "stringValue"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoPropertyEntry": {
      "description": "Key-value pair of EventBus property.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoValueType",
          "description": "Values for the defined keys. Each value can either be string, int, double or any proto message."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoPropertyEntryResponse": {
      "description": "Key-value pair of EventBus property.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding property value. This should be unique for a given fired event. The Tasks should be aware of the keys used while firing the events for them to be able to retrieve the values."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoValueTypeResponse",
          "description": "Values for the defined keys. Each value can either be string, int, double or any proto message."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoProtoParameterArray": {
      "properties": {
        "protoValues": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoProtoParameterArrayResponse": {
      "properties": {
        "protoValues": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "type": "object",
      "required": [
        "protoValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoSerializedObjectParameter": {
      "properties": {
        "objectValue": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoSerializedObjectParameterResponse": {
      "properties": {
        "objectValue": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "objectValue"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoStringArray": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoStringArrayResponse": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoStringParameterArray": {
      "properties": {
        "stringValues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoStringParameterArrayResponse": {
      "properties": {
        "stringValues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "stringValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoSuccessPolicy": {
      "description": "Policy that dictates the behavior for the task after it completes successfully.",
      "properties": {
        "finalState": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoSuccessPolicyFinalState",
          "description": "State to which the execution snapshot status will be set if the task succeeds."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoSuccessPolicyFinalState": {
      "description": "State to which the execution snapshot status will be set if the task succeeds.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Succeeded",
          "description": "The default behavior, where successful tasks will be marked as SUCCEEDED.",
          "value": "SUCCEEDED"
        },
        {
          "name": "Suspended",
          "description": "Sets the state to SUSPENDED after executing. This is required for SuspensionTask; event execution will continue once the user calls ResolveSuspensions with the event_execution_info_id and the task number.",
          "value": "SUSPENDED"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoSuccessPolicyResponse": {
      "description": "Policy that dictates the behavior for the task after it completes successfully.",
      "properties": {
        "finalState": {
          "type": "string",
          "description": "State to which the execution snapshot status will be set if the task succeeds."
        }
      },
      "type": "object",
      "required": [
        "finalState"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskAlertConfig": {
      "description": "Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.",
      "properties": {
        "aggregationPeriod": {
          "type": "string",
          "description": "The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week)."
        },
        "alertDisabled": {
          "type": "boolean",
          "description": "Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert."
        },
        "alertName": {
          "type": "string",
          "description": "A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow."
        },
        "clientId": {
          "type": "string",
          "description": "Client associated with this alert configuration. Must be a client enabled in one of the containing workflow's triggers."
        },
        "durationThresholdMs": {
          "type": "string",
          "description": "Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger."
        },
        "errorEnumList": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumList"
        },
        "metricType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskAlertConfigMetricType"
        },
        "numAggregationPeriods": {
          "type": "integer",
          "description": "For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired."
        },
        "onlyFinalAttempt": {
          "type": "boolean",
          "description": "Only count final task attempts, not retries."
        },
        "playbookUrl": {
          "type": "string",
          "description": "Link to a playbook for resolving the issue that triggered this alert."
        },
        "thresholdType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskAlertConfigThresholdType",
          "description": "The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired."
        },
        "thresholdValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigThresholdValue",
          "description": "The metric value, above or below which the alert should be triggered."
        },
        "warningEnumList": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumList"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskAlertConfigMetricType": {
      "type": "string",
      "enum": [
        {
          "name": "MetricTypeUnspecified",
          "description": "The default value. Metric type should always be set to one of the other non-default values, otherwise it will result in an INVALID_ARGUMENT error.",
          "value": "METRIC_TYPE_UNSPECIFIED"
        },
        {
          "name": "TaskErrorRate",
          "description": "Specifies alerting on the rate of errors (potentially for a specific set of enum values) for the enclosing TaskConfig.",
          "value": "TASK_ERROR_RATE"
        },
        {
          "name": "TaskWarningRate",
          "description": "Specifies alerting on the rate of warnings (potentially for a specific set of enum values) for the enclosing TaskConfig. Warnings use the same enum values as errors.",
          "value": "TASK_WARNING_RATE"
        },
        {
          "name": "TaskRate",
          "description": "Specifies alerting on the number of instances for the enclosing TaskConfig executed in the given aggregation_period.",
          "value": "TASK_RATE"
        },
        {
          "name": "TaskAverageDuration",
          "description": "Specifies alerting on the average duration of execution for the enclosing task.",
          "value": "TASK_AVERAGE_DURATION"
        },
        {
          "name": "TaskPercentileDuration",
          "description": "Specifies alerting on the duration of a particular percentile of task executions. E.g. If 10% or more of the task executions have durations above 5 seconds, alert.",
          "value": "TASK_PERCENTILE_DURATION"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskAlertConfigResponse": {
      "description": "Message to be used to configure alerting in the {@code TaskConfig} protos for tasks in an event.",
      "properties": {
        "aggregationPeriod": {
          "type": "string",
          "description": "The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week)."
        },
        "alertDisabled": {
          "type": "boolean",
          "description": "Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert."
        },
        "alertName": {
          "type": "string",
          "description": "A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique in within the scope of the containing workflow."
        },
        "clientId": {
          "type": "string",
          "description": "Client associated with this alert configuration. Must be a client enabled in one of the containing workflow's triggers."
        },
        "durationThresholdMs": {
          "type": "string",
          "description": "Should be specified only for TASK_AVERAGE_DURATION and TASK_PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger."
        },
        "errorEnumList": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumListResponse"
        },
        "metricType": {
          "type": "string"
        },
        "numAggregationPeriods": {
          "type": "integer",
          "description": "For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired."
        },
        "onlyFinalAttempt": {
          "type": "boolean",
          "description": "Only count final task attempts, not retries."
        },
        "playbookUrl": {
          "type": "string",
          "description": "Link to a playbook for resolving the issue that triggered this alert."
        },
        "thresholdType": {
          "type": "string",
          "description": "The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired."
        },
        "thresholdValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigThresholdValueResponse",
          "description": "The metric value, above or below which the alert should be triggered."
        },
        "warningEnumList": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumListResponse"
        }
      },
      "type": "object",
      "required": [
        "aggregationPeriod",
        "alertDisabled",
        "alertName",
        "clientId",
        "durationThresholdMs",
        "errorEnumList",
        "metricType",
        "numAggregationPeriods",
        "onlyFinalAttempt",
        "playbookUrl",
        "thresholdType",
        "thresholdValue",
        "warningEnumList"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskAlertConfigThresholdType": {
      "description": "The threshold type for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedThresholdType",
          "value": "UNSPECIFIED_THRESHOLD_TYPE"
        },
        {
          "name": "ExpectedMin",
          "description": "Note that this field will only trigger alerts if the workflow specifying it runs at least once in 24 hours (which is our in-memory retention period for monarch streams). Also note that `aggregation_period` for this alert configuration must be less than 24 hours.",
          "value": "EXPECTED_MIN"
        },
        {
          "name": "ExpectedMax",
          "value": "EXPECTED_MAX"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadata": {
      "description": "TaskMetadata are attributes that are associated to every common Task we have.",
      "properties": {
        "activeTaskName": {
          "type": "string",
          "description": "The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name."
        },
        "admins": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadataAdmin"
          }
        },
        "category": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadataCategory"
        },
        "codeSearchLink": {
          "type": "string",
          "description": "The Code Search link to the Task Java file."
        },
        "defaultJsonValidationOption": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadataDefaultJsonValidationOption",
          "description": "Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task's execution."
        },
        "defaultSpec": {
          "type": "string",
          "description": "Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format."
        },
        "description": {
          "type": "string",
          "description": "In a few sentences, describe the purpose and usage of the task."
        },
        "descriptiveName": {
          "type": "string",
          "description": "The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. \"Send Mail\")"
        },
        "docMarkdown": {
          "type": "string",
          "description": "Snippet of markdown documentation to embed in the RHP for this task."
        },
        "externalCategory": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadataExternalCategory"
        },
        "externalCategorySequence": {
          "type": "integer",
          "description": "Sequence with which the task in specific category to be displayed in task discovery panel for external users."
        },
        "externalDocHtml": {
          "type": "string",
          "description": "External-facing documention embedded in the RHP for this task."
        },
        "externalDocLink": {
          "type": "string",
          "description": "Doc link for external-facing documentation (separate from g3doc)."
        },
        "externalDocMarkdown": {
          "type": "string",
          "description": "DEPRECATED: Use external_doc_html.",
          "deprecationMessage": "DEPRECATED: Use external_doc_html."
        },
        "g3DocLink": {
          "type": "string",
          "description": "URL to the associated G3 Doc for the task if available"
        },
        "iconLink": {
          "type": "string",
          "description": "URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format."
        },
        "isDeprecated": {
          "type": "boolean",
          "description": "The deprecation status of the current task. Default value is false;"
        },
        "name": {
          "type": "string",
          "description": "The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class."
        },
        "standaloneExternalDocHtml": {
          "type": "string",
          "description": "External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html"
        },
        "status": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadataStatus",
          "description": "Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE."
        },
        "system": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadataSystem"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (\"REST Caller\" vs. \"Call REST Endpoint\") or to help users find tasks based on related words."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadataAdmin": {
      "description": "Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.",
      "properties": {
        "googleGroupEmail": {
          "type": "string"
        },
        "userEmail": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadataAdminResponse": {
      "description": "Admins are owners of a Task, and have all permissions on a particular task identified by the task name. By default, Eventbus periodically scans all task metadata and syncs (adds) any new admins defined here to Zanzibar.",
      "properties": {
        "googleGroupEmail": {
          "type": "string"
        },
        "userEmail": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "googleGroupEmail",
        "userEmail"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadataCategory": {
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedCategory",
          "value": "UNSPECIFIED_CATEGORY"
        },
        {
          "name": "Custom",
          "value": "CUSTOM"
        },
        {
          "name": "FlowControl",
          "value": "FLOW_CONTROL"
        },
        {
          "name": "DataManipulation",
          "value": "DATA_MANIPULATION"
        },
        {
          "name": "Scripting",
          "value": "SCRIPTING"
        },
        {
          "name": "Connector",
          "value": "CONNECTOR"
        },
        {
          "name": "Hidden",
          "description": "Internal IP tasks that should not be available in the UI.",
          "value": "HIDDEN"
        },
        {
          "name": "CloudSystems",
          "description": "Tasks that are relevant to cloud systems teams and typically",
          "value": "CLOUD_SYSTEMS"
        },
        {
          "name": "CustomTaskTemplate",
          "description": "include connecting to Vector salesforce, CRM Hub Spanner etc. Task entities that derive from a custom task template.",
          "value": "CUSTOM_TASK_TEMPLATE"
        },
        {
          "name": "TaskRecommendations",
          "description": "Category to show task recommendations",
          "value": "TASK_RECOMMENDATIONS"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadataDefaultJsonValidationOption": {
      "description": "Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task's execution.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedJsonValidationOption",
          "description": "As per the default behavior, no validation will be run. Will not override any option set in a Task.",
          "value": "UNSPECIFIED_JSON_VALIDATION_OPTION"
        },
        {
          "name": "Skip",
          "description": "Do not run any validation against JSON schemas.",
          "value": "SKIP"
        },
        {
          "name": "PreExecution",
          "description": "Validate all potential input JSON parameters against schemas specified in WorkflowParameters.",
          "value": "PRE_EXECUTION"
        },
        {
          "name": "PostExecution",
          "description": "Validate all potential output JSON parameters against schemas specified in WorkflowParameters.",
          "value": "POST_EXECUTION"
        },
        {
          "name": "PrePostExecution",
          "description": "Perform both PRE_EXECUTION and POST_EXECUTION validations.",
          "value": "PRE_POST_EXECUTION"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadataExternalCategory": {
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedExternalCategory",
          "value": "UNSPECIFIED_EXTERNAL_CATEGORY"
        },
        {
          "name": "Core",
          "value": "CORE"
        },
        {
          "name": "Connectors",
          "value": "CONNECTORS"
        },
        {
          "name": "ExternalHttp",
          "description": "HTTP tasks, e.g. rest api call task",
          "value": "EXTERNAL_HTTP"
        },
        {
          "name": "ExternalIntegrationServices",
          "description": "Integration services, e.g. connector task",
          "value": "EXTERNAL_INTEGRATION_SERVICES"
        },
        {
          "name": "ExternalCustomerActions",
          "description": "Customer ations, e.g. email task",
          "value": "EXTERNAL_CUSTOMER_ACTIONS"
        },
        {
          "name": "ExternalFlowControl",
          "description": "Flow control, e.g. while loop task",
          "value": "EXTERNAL_FLOW_CONTROL"
        },
        {
          "name": "ExternalWorkspace",
          "description": "Workspace tasks, e.g. list drive task",
          "value": "EXTERNAL_WORKSPACE"
        },
        {
          "name": "ExternalSecurity",
          "description": "Security, e.g. kms related tasks",
          "value": "EXTERNAL_SECURITY"
        },
        {
          "name": "ExternalDatabases",
          "description": "Database operation tasks, e.g. read firestore info tasks",
          "value": "EXTERNAL_DATABASES"
        },
        {
          "name": "ExternalAnalytics",
          "description": "Analytics tasks, e.g. dataflow creattion tasks",
          "value": "EXTERNAL_ANALYTICS"
        },
        {
          "name": "ExternalByoc",
          "description": "BYOC tasks",
          "value": "EXTERNAL_BYOC"
        },
        {
          "name": "ExternalByot",
          "description": "BYOT tasks",
          "value": "EXTERNAL_BYOT"
        },
        {
          "name": "ExternalArtificialInteligence",
          "description": "AI related tasks.",
          "value": "EXTERNAL_ARTIFICIAL_INTELIGENCE"
        },
        {
          "name": "ExternalDataManipulation",
          "description": "Data manipulation related tasks, e.g. data mapping task",
          "value": "EXTERNAL_DATA_MANIPULATION"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadataResponse": {
      "description": "TaskMetadata are attributes that are associated to every common Task we have.",
      "properties": {
        "activeTaskName": {
          "type": "string",
          "description": "The new task name to replace the current task if it is deprecated. Otherwise, it is the same as the current task name."
        },
        "admins": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadataAdminResponse"
          }
        },
        "category": {
          "type": "string"
        },
        "codeSearchLink": {
          "type": "string",
          "description": "The Code Search link to the Task Java file."
        },
        "defaultJsonValidationOption": {
          "type": "string",
          "description": "Controls whether JSON workflow parameters are validated against provided schemas before and/or after this task's execution."
        },
        "defaultSpec": {
          "type": "string",
          "description": "Contains the initial configuration of the task with default values set. For now, The string should be compatible to an ASCII-proto format."
        },
        "description": {
          "type": "string",
          "description": "In a few sentences, describe the purpose and usage of the task."
        },
        "descriptiveName": {
          "type": "string",
          "description": "The string name to show on the task list on the Workflow editor screen. This should be a very short, one to two words name for the task. (e.g. \"Send Mail\")"
        },
        "docMarkdown": {
          "type": "string",
          "description": "Snippet of markdown documentation to embed in the RHP for this task."
        },
        "externalCategory": {
          "type": "string"
        },
        "externalCategorySequence": {
          "type": "integer",
          "description": "Sequence with which the task in specific category to be displayed in task discovery panel for external users."
        },
        "externalDocHtml": {
          "type": "string",
          "description": "External-facing documention embedded in the RHP for this task."
        },
        "externalDocLink": {
          "type": "string",
          "description": "Doc link for external-facing documentation (separate from g3doc)."
        },
        "externalDocMarkdown": {
          "type": "string",
          "description": "DEPRECATED: Use external_doc_html.",
          "deprecationMessage": "DEPRECATED: Use external_doc_html."
        },
        "g3DocLink": {
          "type": "string",
          "description": "URL to the associated G3 Doc for the task if available"
        },
        "iconLink": {
          "type": "string",
          "description": "URL to gstatic image icon for this task. This icon shows up on the task list panel along with the task name in the Workflow Editor screen. Use the 24p, 2x, gray color icon image format."
        },
        "isDeprecated": {
          "type": "boolean",
          "description": "The deprecation status of the current task. Default value is false;"
        },
        "name": {
          "type": "string",
          "description": "The actual class name or the annotated name of the task. Task Author should initialize this field with value from the getName() method of the Task class."
        },
        "standaloneExternalDocHtml": {
          "type": "string",
          "description": "External-facing documention for standalone IP in pantheon embedded in the RHP for this task. Non null only if different from external_doc_html"
        },
        "status": {
          "type": "string",
          "description": "Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE."
        },
        "system": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of tags that pertain to a particular task. This can be used to improve the searchability of tasks with several names (\"REST Caller\" vs. \"Call REST Endpoint\") or to help users find tasks based on related words."
        }
      },
      "type": "object",
      "required": [
        "activeTaskName",
        "admins",
        "category",
        "codeSearchLink",
        "defaultJsonValidationOption",
        "defaultSpec",
        "description",
        "descriptiveName",
        "docMarkdown",
        "externalCategory",
        "externalCategorySequence",
        "externalDocHtml",
        "externalDocLink",
        "externalDocMarkdown",
        "g3DocLink",
        "iconLink",
        "isDeprecated",
        "name",
        "standaloneExternalDocHtml",
        "status",
        "system",
        "tags"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadataStatus": {
      "description": "Allows author to indicate if the task is ready to use or not. If not set, then it will default to INACTIVE.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedStatus",
          "description": "Default value. Actual Task Status should always be set to either INACTIVE or ACTIVE. If none is specified at runtime, it will be set to INACTIVE.",
          "value": "UNSPECIFIED_STATUS"
        },
        {
          "name": "DefaultInactive",
          "description": "Still in-progress or incomplete, and not intended for use.",
          "value": "DEFAULT_INACTIVE"
        },
        {
          "name": "Active",
          "description": "Available for use.",
          "value": "ACTIVE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskMetadataSystem": {
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedSystem",
          "value": "UNSPECIFIED_SYSTEM"
        },
        {
          "name": "Generic",
          "value": "GENERIC"
        },
        {
          "name": "Buganizer",
          "value": "BUGANIZER"
        },
        {
          "name": "Salesforce",
          "value": "SALESFORCE"
        },
        {
          "name": "CloudSql",
          "value": "CLOUD_SQL"
        },
        {
          "name": "Plx",
          "value": "PLX"
        },
        {
          "name": "Sheets",
          "value": "SHEETS"
        },
        {
          "name": "GoogleGroups",
          "value": "GOOGLE_GROUPS"
        },
        {
          "name": "Email",
          "value": "EMAIL"
        },
        {
          "name": "Spanner",
          "value": "SPANNER"
        },
        {
          "name": "DataBridge",
          "value": "DATA_BRIDGE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskUiConfig": {
      "description": "Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework:",
      "properties": {
        "taskUiModuleConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskUiModuleConfig"
          },
          "description": "Configurations of included config modules."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskUiConfigResponse": {
      "description": "Task authors would use this type to configure the UI for a particular task by specifying what UI config modules should be included to compose the UI. Learn more about config module framework:",
      "properties": {
        "taskUiModuleConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskUiModuleConfigResponse"
          },
          "description": "Configurations of included config modules."
        }
      },
      "type": "object",
      "required": [
        "taskUiModuleConfigs"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskUiModuleConfig": {
      "description": "Task author would use this type to configure a config module.",
      "properties": {
        "moduleId": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskUiModuleConfigModuleId",
          "description": "ID of the config module."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskUiModuleConfigModuleId": {
      "description": "ID of the config module.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedTaskModule",
          "description": "Default",
          "value": "UNSPECIFIED_TASK_MODULE"
        },
        {
          "name": "Label",
          "description": "Supports editing label of a task config.",
          "value": "LABEL"
        },
        {
          "name": "ErrorHandling",
          "description": "Supports editing error handling settings such as retry strategy.",
          "value": "ERROR_HANDLING"
        },
        {
          "name": "TaskParamTable",
          "description": "Supports adding, removing and editing task parameter values in a table with little assistance or restriction.",
          "value": "TASK_PARAM_TABLE"
        },
        {
          "name": "TaskParamForm",
          "description": "Supports editing values of declared input parameters of a task. Think of it as a \"strongly typed\" upgrade to the TASK_PARAM_TABLE.",
          "value": "TASK_PARAM_FORM"
        },
        {
          "name": "Precondition",
          "description": "Supports editing preconditions of a task config.",
          "value": "PRECONDITION"
        },
        {
          "name": "ScriptEditor",
          "description": "Supports adding, editing, and deleting the scripts associated with a script task, as well as modifying the input/output parameters.",
          "value": "SCRIPT_EDITOR"
        },
        {
          "name": "Rpc",
          "description": "Supports editing task parameters associated with an RPC/stubby task.",
          "value": "RPC"
        },
        {
          "name": "TaskSummary",
          "description": "Contains readonly task information, including input/output type info.",
          "value": "TASK_SUMMARY"
        },
        {
          "name": "Suspension",
          "description": "Configures a SuspensionTask.",
          "value": "SUSPENSION"
        },
        {
          "name": "RpcTyped",
          "description": "Configures a GenericStubbyTypedTask.",
          "value": "RPC_TYPED"
        },
        {
          "name": "SubWorkflow",
          "description": "Configures a SubWorkflowExecutorTask.",
          "value": "SUB_WORKFLOW"
        },
        {
          "name": "AppsScriptNavigator",
          "description": "Supports navigating to Apps Script editor",
          "value": "APPS_SCRIPT_NAVIGATOR"
        },
        {
          "name": "SubWorkflowForEachLoop",
          "description": "Configures a SubWorkflowForEachLoopTask.",
          "value": "SUB_WORKFLOW_FOR_EACH_LOOP"
        },
        {
          "name": "FieldMapping",
          "description": "Configures a FieldMappingTask.",
          "value": "FIELD_MAPPING"
        },
        {
          "name": "Readme",
          "description": "Contains embedded in-product documentation for a task.",
          "value": "README"
        },
        {
          "name": "RestCaller",
          "description": "UI widget for the rest caller task.",
          "value": "REST_CALLER"
        },
        {
          "name": "SubWorkflowScatterGather",
          "description": "Configures a SubWorkflowScatterGatherTask.",
          "value": "SUB_WORKFLOW_SCATTER_GATHER"
        },
        {
          "name": "CloudSql",
          "description": "Configures a CloudSql Task.",
          "value": "CLOUD_SQL"
        },
        {
          "name": "GenericConnectorTask",
          "description": "Configure a GenericConnectorTask.",
          "value": "GENERIC_CONNECTOR_TASK"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTaskUiModuleConfigResponse": {
      "description": "Task author would use this type to configure a config module.",
      "properties": {
        "moduleId": {
          "type": "string",
          "description": "ID of the config module."
        }
      },
      "type": "object",
      "required": [
        "moduleId"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTeardown": {
      "properties": {
        "teardownTaskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTeardownTaskConfig"
          },
          "description": "Required."
        }
      },
      "type": "object",
      "required": [
        "teardownTaskConfigs"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTeardownResponse": {
      "properties": {
        "teardownTaskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTeardownTaskConfigResponse"
          },
          "description": "Required."
        }
      },
      "type": "object",
      "required": [
        "teardownTaskConfigs"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTeardownTaskConfig": {
      "properties": {
        "creatorEmail": {
          "type": "string",
          "description": "The creator's email address."
        },
        "name": {
          "type": "string",
          "description": "Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks."
        },
        "nextTeardownTask": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNextTeardownTask"
        },
        "parameters": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoEventParameters",
          "description": "The parameters the user can pass to this task."
        },
        "properties": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoEventBusProperties"
        },
        "teardownTaskImplementationClassName": {
          "type": "string",
          "description": "Implementation class name."
        }
      },
      "type": "object",
      "required": [
        "name",
        "teardownTaskImplementationClassName"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTeardownTaskConfigResponse": {
      "properties": {
        "creatorEmail": {
          "type": "string",
          "description": "The creator's email address."
        },
        "name": {
          "type": "string",
          "description": "Unique identifier of the teardown task within this Config. We use this field as the identifier to find next teardown tasks."
        },
        "nextTeardownTask": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNextTeardownTaskResponse"
        },
        "parameters": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoEventParametersResponse",
          "description": "The parameters the user can pass to this task."
        },
        "properties": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoEventBusPropertiesResponse"
        },
        "teardownTaskImplementationClassName": {
          "type": "string",
          "description": "Implementation class name."
        }
      },
      "type": "object",
      "required": [
        "creatorEmail",
        "name",
        "nextTeardownTask",
        "parameters",
        "properties",
        "teardownTaskImplementationClassName"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTriggerCriteria": {
      "properties": {
        "condition": {
          "type": "string",
          "description": "Standard filter expression, when true the workflow will be executed. If there's no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly."
        },
        "parameters": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoEventParameters",
          "description": "Optional. To be used in TaskConfig for the implementation class."
        },
        "triggerCriteriaTaskImplementationClassName": {
          "type": "string",
          "description": "Optional. Implementation class name. The class should implement the “TypedTask” interface."
        }
      },
      "type": "object",
      "required": [
        "condition"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoTriggerCriteriaResponse": {
      "properties": {
        "condition": {
          "type": "string",
          "description": "Standard filter expression, when true the workflow will be executed. If there's no trigger_criteria_task_implementation_class_name specified, the condition will be validated directly."
        },
        "parameters": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoEventParametersResponse",
          "description": "Optional. To be used in TaskConfig for the implementation class."
        },
        "triggerCriteriaTaskImplementationClassName": {
          "type": "string",
          "description": "Optional. Implementation class name. The class should implement the “TypedTask” interface."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "parameters",
        "triggerCriteriaTaskImplementationClassName"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoValueType": {
      "description": "Used for define type for values. Currently supported value types include int, string, double, array, and any proto message.",
      "properties": {
        "booleanValue": {
          "type": "boolean"
        },
        "doubleArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoDoubleArray"
        },
        "doubleValue": {
          "type": "number"
        },
        "intArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoIntArray"
        },
        "intValue": {
          "type": "string"
        },
        "protoValue": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "stringArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoStringArray"
        },
        "stringValue": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoValueTypeResponse": {
      "description": "Used for define type for values. Currently supported value types include int, string, double, array, and any proto message.",
      "properties": {
        "booleanValue": {
          "type": "boolean"
        },
        "doubleArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoDoubleArrayResponse"
        },
        "doubleValue": {
          "type": "number"
        },
        "intArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoIntArrayResponse"
        },
        "intValue": {
          "type": "string"
        },
        "protoValue": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "stringArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoStringArrayResponse"
        },
        "stringValue": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "booleanValue",
        "doubleArray",
        "doubleValue",
        "intArray",
        "intValue",
        "protoValue",
        "stringArray",
        "stringValue"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoWorkflowAlertConfig": {
      "description": "Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.",
      "properties": {
        "aggregationPeriod": {
          "type": "string",
          "description": "For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours."
        },
        "alertDisabled": {
          "type": "boolean",
          "description": "Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert."
        },
        "alertName": {
          "type": "string",
          "description": "A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow."
        },
        "clientId": {
          "type": "string",
          "description": "Client associated with this alert configuration."
        },
        "durationThresholdMs": {
          "type": "string",
          "description": "Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger."
        },
        "errorEnumList": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumList"
        },
        "metricType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoWorkflowAlertConfigMetricType"
        },
        "numAggregationPeriods": {
          "type": "integer",
          "description": "For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired."
        },
        "onlyFinalAttempt": {
          "type": "boolean",
          "description": "For either events or tasks, depending on the type of alert, count only final attempts, not retries."
        },
        "playbookUrl": {
          "type": "string",
          "description": "Link to a playbook for resolving the issue that triggered this alert."
        },
        "thresholdType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoWorkflowAlertConfigThresholdType",
          "description": "The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired."
        },
        "thresholdValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigThresholdValue",
          "description": "The metric value, above or below which the alert should be triggered."
        },
        "warningEnumList": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumList"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoWorkflowAlertConfigMetricType": {
      "type": "string",
      "enum": [
        {
          "name": "MetricTypeUnspecified",
          "description": "The default value. Metric type should always be set to one of the other non-default values, otherwise it will result in an INVALID_ARGUMENT error.",
          "value": "METRIC_TYPE_UNSPECIFIED"
        },
        {
          "name": "EventErrorRate",
          "description": "Specifies alerting on the rate of errors for the enclosing workflow.",
          "value": "EVENT_ERROR_RATE"
        },
        {
          "name": "EventWarningRate",
          "description": "Specifies alerting on the rate of warnings for the enclosing workflow. Warnings use the same enum values as errors.",
          "value": "EVENT_WARNING_RATE"
        },
        {
          "name": "TaskErrorRate",
          "description": "Specifies alerting on the rate of errors for any task in the enclosing workflow.",
          "value": "TASK_ERROR_RATE"
        },
        {
          "name": "TaskWarningRate",
          "description": "Specifies alerting on the rate of warnings for any task in the enclosing workflow.",
          "value": "TASK_WARNING_RATE"
        },
        {
          "name": "TaskRate",
          "description": "Specifies alerting on the rate of executions over all tasks in the enclosing workflow.",
          "value": "TASK_RATE"
        },
        {
          "name": "EventRate",
          "description": "Specifies alerting on the number of events executed in the given aggregation_period.",
          "value": "EVENT_RATE"
        },
        {
          "name": "EventAverageDuration",
          "description": "Specifies alerting on the average duration of executions for this workflow.",
          "value": "EVENT_AVERAGE_DURATION"
        },
        {
          "name": "EventPercentileDuration",
          "description": "Specifies alerting on the duration value of a particular percentile of workflow executions. E.g. If 10% or more of the workflow executions have durations above 5 seconds, alert.",
          "value": "EVENT_PERCENTILE_DURATION"
        },
        {
          "name": "TaskAverageDuration",
          "description": "Specifies alerting on the average duration of any task in the enclosing workflow,",
          "value": "TASK_AVERAGE_DURATION"
        },
        {
          "name": "TaskPercentileDuration",
          "description": "Specifies alerting on the duration value of a particular percentile of any task executions within the enclosing workflow. E.g. If 10% or more of the task executions in the workflow have durations above 5 seconds, alert.",
          "value": "TASK_PERCENTILE_DURATION"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoWorkflowAlertConfigResponse": {
      "description": "Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.",
      "properties": {
        "aggregationPeriod": {
          "type": "string",
          "description": "For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours."
        },
        "alertDisabled": {
          "type": "boolean",
          "description": "Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this workflow alert."
        },
        "alertName": {
          "type": "string",
          "description": "A name to identify this alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the workflow."
        },
        "clientId": {
          "type": "string",
          "description": "Client associated with this alert configuration."
        },
        "durationThresholdMs": {
          "type": "string",
          "description": "Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger."
        },
        "errorEnumList": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumListResponse"
        },
        "metricType": {
          "type": "string"
        },
        "numAggregationPeriods": {
          "type": "integer",
          "description": "For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired."
        },
        "onlyFinalAttempt": {
          "type": "boolean",
          "description": "For either events or tasks, depending on the type of alert, count only final attempts, not retries."
        },
        "playbookUrl": {
          "type": "string",
          "description": "Link to a playbook for resolving the issue that triggered this alert."
        },
        "thresholdType": {
          "type": "string",
          "description": "The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired."
        },
        "thresholdValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigThresholdValueResponse",
          "description": "The metric value, above or below which the alert should be triggered."
        },
        "warningEnumList": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoBaseAlertConfigErrorEnumListResponse"
        }
      },
      "type": "object",
      "required": [
        "aggregationPeriod",
        "alertDisabled",
        "alertName",
        "clientId",
        "durationThresholdMs",
        "errorEnumList",
        "metricType",
        "numAggregationPeriods",
        "onlyFinalAttempt",
        "playbookUrl",
        "thresholdType",
        "thresholdValue",
        "warningEnumList"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusProtoWorkflowAlertConfigThresholdType": {
      "description": "The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedThresholdType",
          "value": "UNSPECIFIED_THRESHOLD_TYPE"
        },
        {
          "name": "ExpectedMin",
          "description": "Note that this field will only trigger alerts if the workflow specifying it runs at least once in 24 hours (which is our in-memory retention period for monarch streams). Also note that `aggregation_period` for this alert configuration must be less than 24 hours.",
          "value": "EXPECTED_MIN"
        },
        {
          "name": "ExpectedMax",
          "value": "EXPECTED_MAX"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusStats": {
      "description": "Stats for the requested dimensions: QPS, duration, and error/warning rate",
      "properties": {
        "dimensions": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusStatsDimensions",
          "description": "Dimensions that these stats have been aggregated on."
        },
        "durationInSeconds": {
          "type": "number",
          "description": "Average duration in seconds."
        },
        "errorRate": {
          "type": "number",
          "description": "Average error rate."
        },
        "qps": {
          "type": "number",
          "description": "Queries per second."
        },
        "warningRate": {
          "type": "number",
          "description": "Average warning rate."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusStatsDimensions": {
      "properties": {
        "clientId": {
          "type": "string"
        },
        "enumFilterType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusStatsDimensionsEnumFilterType",
          "description": "Whether to include or exclude the enums matching the regex."
        },
        "errorEnumString": {
          "type": "string"
        },
        "retryAttempt": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusStatsDimensionsRetryAttempt"
        },
        "taskName": {
          "type": "string"
        },
        "taskNumber": {
          "type": "string"
        },
        "triggerId": {
          "type": "string",
          "description": "Stats have been or will be aggregated on set fields for any semantically-meaningful combination."
        },
        "warningEnumString": {
          "type": "string"
        },
        "workflowId": {
          "type": "string"
        },
        "workflowName": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusStatsDimensionsEnumFilterType": {
      "description": "Whether to include or exclude the enums matching the regex.",
      "type": "string",
      "enum": [
        {
          "name": "DefaultInclusive",
          "value": "DEFAULT_INCLUSIVE"
        },
        {
          "name": "Exclusive",
          "value": "EXCLUSIVE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusStatsDimensionsResponse": {
      "properties": {
        "clientId": {
          "type": "string"
        },
        "enumFilterType": {
          "type": "string",
          "description": "Whether to include or exclude the enums matching the regex."
        },
        "errorEnumString": {
          "type": "string"
        },
        "retryAttempt": {
          "type": "string"
        },
        "taskName": {
          "type": "string"
        },
        "taskNumber": {
          "type": "string"
        },
        "triggerId": {
          "type": "string",
          "description": "Stats have been or will be aggregated on set fields for any semantically-meaningful combination."
        },
        "warningEnumString": {
          "type": "string"
        },
        "workflowId": {
          "type": "string"
        },
        "workflowName": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "enumFilterType",
        "errorEnumString",
        "retryAttempt",
        "taskName",
        "taskNumber",
        "triggerId",
        "warningEnumString",
        "workflowId",
        "workflowName"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusStatsDimensionsRetryAttempt": {
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Final",
          "description": "Task has completed successfully or has depleted all retry attempts.",
          "value": "FINAL"
        },
        {
          "name": "Retryable",
          "description": "Task has failed but may be retried.",
          "value": "RETRYABLE"
        },
        {
          "name": "Canceled",
          "description": "Task has been deliberately canceled.",
          "value": "CANCELED"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmEventbusStatsResponse": {
      "description": "Stats for the requested dimensions: QPS, duration, and error/warning rate",
      "properties": {
        "dimensions": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusStatsDimensionsResponse",
          "description": "Dimensions that these stats have been aggregated on."
        },
        "durationInSeconds": {
          "type": "number",
          "description": "Average duration in seconds."
        },
        "errorRate": {
          "type": "number",
          "description": "Average error rate."
        },
        "qps": {
          "type": "number",
          "description": "Queries per second."
        },
        "warningRate": {
          "type": "number",
          "description": "Average warning rate."
        }
      },
      "type": "object",
      "required": [
        "dimensions",
        "durationInSeconds",
        "errorRate",
        "qps",
        "warningRate"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoBooleanParameterArray": {
      "properties": {
        "booleanValues": {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoBooleanParameterArrayResponse": {
      "properties": {
        "booleanValues": {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        }
      },
      "type": "object",
      "required": [
        "booleanValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoDoubleParameterArray": {
      "properties": {
        "doubleValues": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoDoubleParameterArrayResponse": {
      "properties": {
        "doubleValues": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "type": "object",
      "required": [
        "doubleValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoEventParameters": {
      "description": "LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterEntry"
          },
          "description": "Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoEventParametersResponse": {
      "description": "LINT.IfChange This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus. Please see",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterEntryResponse"
          },
          "description": "Parameters are a part of Event and can be used to communicate between different tasks that are part of the same workflow execution."
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoIntParameterArray": {
      "properties": {
        "intValues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoIntParameterArrayResponse": {
      "properties": {
        "intValues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "intValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecEntry": {
      "description": "Key-value pair of EventBus task parameters. Next id: 13",
      "properties": {
        "className": {
          "type": "string",
          "description": "The FQCN of the Java object this represents. A string, for example, would be \"java.lang.String\". If this is \"java.lang.Object\", the parameter can be of any type."
        },
        "collectionElementClassName": {
          "type": "string",
          "description": "If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is \"java.lang.Object\", the parameter is a collection of any type."
        },
        "config": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryConfig",
          "description": "Optional fields, such as help text and other useful info."
        },
        "dataType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecEntryDataType",
          "description": "The data type of the parameter."
        },
        "defaultValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterValueType",
          "description": "Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object."
        },
        "isDeprecated": {
          "type": "boolean",
          "description": "If set, this entry is deprecated, so further use of this parameter should be prohibited."
        },
        "isOutput": {
          "type": "boolean"
        },
        "jsonSchema": {
          "type": "string",
          "description": "If the data_type is JSON_VALUE, then this will define its schema."
        },
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition."
        },
        "protoDef": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryProtoDefinition",
          "description": "Populated if this represents a proto or proto array."
        },
        "required": {
          "type": "boolean",
          "description": "If set, the user must provide an input value for this parameter."
        },
        "validationRule": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRule",
          "description": "Rule used to validate inputs (individual values and collection elements) for this parameter."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecEntryDataType": {
      "description": "The data type of the parameter.",
      "type": "string",
      "enum": [
        {
          "name": "DataTypeUnspecified",
          "value": "DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "StringValue",
          "value": "STRING_VALUE"
        },
        {
          "name": "IntValue",
          "value": "INT_VALUE"
        },
        {
          "name": "DoubleValue",
          "value": "DOUBLE_VALUE"
        },
        {
          "name": "BooleanValue",
          "value": "BOOLEAN_VALUE"
        },
        {
          "name": "ProtoValue",
          "value": "PROTO_VALUE"
        },
        {
          "name": "SerializedObjectValue",
          "value": "SERIALIZED_OBJECT_VALUE"
        },
        {
          "name": "StringArray",
          "value": "STRING_ARRAY"
        },
        {
          "name": "IntArray",
          "value": "INT_ARRAY"
        },
        {
          "name": "DoubleArray",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "ProtoArray",
          "value": "PROTO_ARRAY"
        },
        {
          "name": "ProtoEnum",
          "value": "PROTO_ENUM"
        },
        {
          "name": "BooleanArray",
          "value": "BOOLEAN_ARRAY"
        },
        {
          "name": "ProtoEnumArray",
          "value": "PROTO_ENUM_ARRAY"
        },
        {
          "name": "Bytes",
          "description": "BYTES and BYTES_ARRAY data types are not allowed for top-level params. They're only meant to support protobufs with BYTES (sub)fields.",
          "value": "BYTES"
        },
        {
          "name": "BytesArray",
          "value": "BYTES_ARRAY"
        },
        {
          "name": "NonSerializableObject",
          "value": "NON_SERIALIZABLE_OBJECT"
        },
        {
          "name": "JsonValue",
          "value": "JSON_VALUE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecEntryResponse": {
      "description": "Key-value pair of EventBus task parameters. Next id: 13",
      "properties": {
        "className": {
          "type": "string",
          "description": "The FQCN of the Java object this represents. A string, for example, would be \"java.lang.String\". If this is \"java.lang.Object\", the parameter can be of any type."
        },
        "collectionElementClassName": {
          "type": "string",
          "description": "If it is a collection of objects, this would be the FCQN of every individual element in the collection. If this is \"java.lang.Object\", the parameter is a collection of any type."
        },
        "config": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryConfigResponse",
          "description": "Optional fields, such as help text and other useful info."
        },
        "dataType": {
          "type": "string",
          "description": "The data type of the parameter."
        },
        "defaultValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterValueTypeResponse",
          "description": "Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object."
        },
        "isDeprecated": {
          "type": "boolean",
          "description": "If set, this entry is deprecated, so further use of this parameter should be prohibited."
        },
        "isOutput": {
          "type": "boolean"
        },
        "jsonSchema": {
          "type": "string",
          "description": "If the data_type is JSON_VALUE, then this will define its schema."
        },
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given task. These parameters must be predefined in the workflow definition."
        },
        "protoDef": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryProtoDefinitionResponse",
          "description": "Populated if this represents a proto or proto array."
        },
        "required": {
          "type": "boolean",
          "description": "If set, the user must provide an input value for this parameter."
        },
        "validationRule": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoParamSpecEntryValidationRuleResponse",
          "description": "Rule used to validate inputs (individual values and collection elements) for this parameter."
        }
      },
      "type": "object",
      "required": [
        "className",
        "collectionElementClassName",
        "config",
        "dataType",
        "defaultValue",
        "isDeprecated",
        "isOutput",
        "jsonSchema",
        "key",
        "protoDef",
        "required",
        "validationRule"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecsMessage": {
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecEntry"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecsMessageResponse": {
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecEntryResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParameterEntry": {
      "description": "Key-value pair of EventBus parameters.",
      "properties": {
        "dataType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterEntryDataType",
          "description": "Explicitly getting the type of the parameter."
        },
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterValueType",
          "description": "Values for the defined keys. Each value can either be string, int, double or any proto message."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParameterEntryDataType": {
      "description": "Explicitly getting the type of the parameter.",
      "type": "string",
      "enum": [
        {
          "name": "DataTypeUnspecified",
          "value": "DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "StringValue",
          "value": "STRING_VALUE"
        },
        {
          "name": "IntValue",
          "value": "INT_VALUE"
        },
        {
          "name": "DoubleValue",
          "value": "DOUBLE_VALUE"
        },
        {
          "name": "BooleanValue",
          "value": "BOOLEAN_VALUE"
        },
        {
          "name": "ProtoValue",
          "value": "PROTO_VALUE"
        },
        {
          "name": "SerializedObjectValue",
          "value": "SERIALIZED_OBJECT_VALUE"
        },
        {
          "name": "StringArray",
          "value": "STRING_ARRAY"
        },
        {
          "name": "IntArray",
          "value": "INT_ARRAY"
        },
        {
          "name": "DoubleArray",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "ProtoArray",
          "value": "PROTO_ARRAY"
        },
        {
          "name": "ProtoEnum",
          "value": "PROTO_ENUM"
        },
        {
          "name": "BooleanArray",
          "value": "BOOLEAN_ARRAY"
        },
        {
          "name": "ProtoEnumArray",
          "value": "PROTO_ENUM_ARRAY"
        },
        {
          "name": "Bytes",
          "description": "BYTES and BYTES_ARRAY data types are not allowed for top-level params. They're only meant to support protobufs with BYTES (sub)fields.",
          "value": "BYTES"
        },
        {
          "name": "BytesArray",
          "value": "BYTES_ARRAY"
        },
        {
          "name": "NonSerializableObject",
          "value": "NON_SERIALIZABLE_OBJECT"
        },
        {
          "name": "JsonValue",
          "value": "JSON_VALUE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParameterEntryResponse": {
      "description": "Key-value pair of EventBus parameters.",
      "properties": {
        "dataType": {
          "type": "string",
          "description": "Explicitly getting the type of the parameter."
        },
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterValueTypeResponse",
          "description": "Values for the defined keys. Each value can either be string, int, double or any proto message."
        }
      },
      "type": "object",
      "required": [
        "dataType",
        "key",
        "value"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParameterValueType": {
      "description": "To support various types of parameter values. Next available id: 14",
      "properties": {
        "booleanArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoBooleanParameterArray"
        },
        "booleanValue": {
          "type": "boolean"
        },
        "doubleArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoDoubleParameterArray"
        },
        "doubleValue": {
          "type": "number"
        },
        "intArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoIntParameterArray"
        },
        "intValue": {
          "type": "string"
        },
        "jsonValue": {
          "type": "string"
        },
        "protoArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoProtoParameterArray"
        },
        "protoValue": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "serializedObjectValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoSerializedObjectParameter"
        },
        "stringArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoStringParameterArray"
        },
        "stringValue": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoParameterValueTypeResponse": {
      "description": "To support various types of parameter values. Next available id: 14",
      "properties": {
        "booleanArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoBooleanParameterArrayResponse"
        },
        "booleanValue": {
          "type": "boolean"
        },
        "doubleArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoDoubleParameterArrayResponse"
        },
        "doubleValue": {
          "type": "number"
        },
        "intArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoIntParameterArrayResponse"
        },
        "intValue": {
          "type": "string"
        },
        "jsonValue": {
          "type": "string"
        },
        "protoArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoProtoParameterArrayResponse"
        },
        "protoValue": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "serializedObjectValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoSerializedObjectParameterResponse"
        },
        "stringArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoStringParameterArrayResponse"
        },
        "stringValue": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "booleanArray",
        "booleanValue",
        "doubleArray",
        "doubleValue",
        "intArray",
        "intValue",
        "jsonValue",
        "protoArray",
        "protoValue",
        "serializedObjectValue",
        "stringArray",
        "stringValue"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoProtoParameterArray": {
      "properties": {
        "protoValues": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoProtoParameterArrayResponse": {
      "properties": {
        "protoValues": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "type": "object",
      "required": [
        "protoValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoRollbackStrategy": {
      "description": "Next available id: 4",
      "properties": {
        "parameters": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoEventParameters",
          "description": "Optional. The customized parameters the user can pass to this task."
        },
        "rollbackTaskImplementationClassName": {
          "type": "string",
          "description": "This is the name of the task that needs to be executed upon rollback of this task."
        },
        "taskNumbersToRollback": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task."
        }
      },
      "type": "object",
      "required": [
        "rollbackTaskImplementationClassName",
        "taskNumbersToRollback"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoRollbackStrategyResponse": {
      "description": "Next available id: 4",
      "properties": {
        "parameters": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoEventParametersResponse",
          "description": "Optional. The customized parameters the user can pass to this task."
        },
        "rollbackTaskImplementationClassName": {
          "type": "string",
          "description": "This is the name of the task that needs to be executed upon rollback of this task."
        },
        "taskNumbersToRollback": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "These are the tasks numbers of the tasks whose `rollback_strategy.rollback_task_implementation_class_name` needs to be executed upon failure of this task."
        }
      },
      "type": "object",
      "required": [
        "parameters",
        "rollbackTaskImplementationClassName",
        "taskNumbersToRollback"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoSerializedObjectParameter": {
      "properties": {
        "objectValue": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoSerializedObjectParameterResponse": {
      "properties": {
        "objectValue": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "objectValue"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoStringParameterArray": {
      "properties": {
        "stringValues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoStringParameterArrayResponse": {
      "properties": {
        "stringValues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "stringValues"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfig": {
      "description": "The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.",
      "properties": {
        "alertConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskAlertConfig"
          },
          "description": "Alert configurations on error rate, warning rate, number of runs, durations, etc."
        },
        "createTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "creatorEmail": {
          "type": "string",
          "description": "The creator's email address. Auto-generated from the user's email."
        },
        "description": {
          "type": "string",
          "description": "User-provided description intended to give more business context about the task."
        },
        "disableStrictTypeValidation": {
          "type": "boolean",
          "description": "If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task"
        },
        "externalTaskType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigExternalTaskType"
        },
        "failurePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoFailurePolicy",
          "description": "Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.)."
        },
        "incomingEdgeCount": {
          "type": "integer",
          "description": "The number of edges leading into this TaskConfig."
        },
        "jsonValidationOption": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigJsonValidationOption",
          "description": "If set, overrides the option configured in the Task implementation class."
        },
        "label": {
          "type": "string",
          "description": "User-provided label that is attached to this TaskConfig in the UI."
        },
        "lastModifiedTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "nextTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNextTask"
          },
          "description": "The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true."
        },
        "nextTasksExecutionPolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigNextTasksExecutionPolicy",
          "description": "The policy dictating the execution of the next set of tasks for the current task."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The customized parameters the user can pass to this task."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCoordinate",
          "description": "Optional. Informs the front-end application where to draw this task config on the UI."
        },
        "precondition": {
          "type": "string",
          "description": "Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. \"rollout(5)\" will only allow 5% of incoming traffic to task."
        },
        "preconditionLabel": {
          "type": "string",
          "description": "Optional. User-provided label that is attached to precondition in the UI."
        },
        "rollbackStrategy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoRollbackStrategy",
          "description": "Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times)."
        },
        "successPolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoSuccessPolicy",
          "description": "Determines what action to take upon successful task completion."
        },
        "synchronousCallFailurePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoFailurePolicy",
          "description": "Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post)."
        },
        "taskEntity": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskEntity",
          "description": "Copy of the task entity that this task config is an instance of."
        },
        "taskExecutionStrategy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigTaskExecutionStrategy",
          "description": "The policy dictating the execution strategy of this task."
        },
        "taskName": {
          "type": "string",
          "description": "The name for the task."
        },
        "taskNumber": {
          "type": "string",
          "description": "REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`)."
        },
        "taskSpec": {
          "type": "string",
          "description": "A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old \"parameters\" field."
        },
        "taskTemplateName": {
          "type": "string",
          "description": "Used to define task-template name if task is of type task-template"
        },
        "taskType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigTaskType",
          "description": "Defines the type of the task"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigExternalTaskType": {
      "type": "string",
      "enum": [
        {
          "name": "ExternalTaskTypeUnspecified",
          "description": "Default value. External task type is not specified",
          "value": "EXTERNAL_TASK_TYPE_UNSPECIFIED"
        },
        {
          "name": "NormalTask",
          "description": "Tasks belongs to the normal task flows",
          "value": "NORMAL_TASK"
        },
        {
          "name": "ErrorTask",
          "description": "Task belongs to the error catch task flows",
          "value": "ERROR_TASK"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigJsonValidationOption": {
      "description": "If set, overrides the option configured in the Task implementation class.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedJsonValidationOption",
          "description": "As per the default behavior, no validation will be run. Will not override any option set in a Task.",
          "value": "UNSPECIFIED_JSON_VALIDATION_OPTION"
        },
        {
          "name": "Skip",
          "description": "Do not run any validation against JSON schemas.",
          "value": "SKIP"
        },
        {
          "name": "PreExecution",
          "description": "Validate all potential input JSON parameters against schemas specified in WorkflowParameters.",
          "value": "PRE_EXECUTION"
        },
        {
          "name": "PostExecution",
          "description": "Validate all potential output JSON parameters against schemas specified in WorkflowParameters.",
          "value": "POST_EXECUTION"
        },
        {
          "name": "PrePostExecution",
          "description": "Perform both PRE_EXECUTION and POST_EXECUTION validations.",
          "value": "PRE_POST_EXECUTION"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigNextTasksExecutionPolicy": {
      "description": "The policy dictating the execution of the next set of tasks for the current task.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Default",
          "value": "UNSPECIFIED"
        },
        {
          "name": "RunAllMatch",
          "description": "Execute all the tasks that satisfy their associated condition.",
          "value": "RUN_ALL_MATCH"
        },
        {
          "name": "RunFirstMatch",
          "description": "Execute the first task that satisfies the associated condition.",
          "value": "RUN_FIRST_MATCH"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigResponse": {
      "description": "The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.",
      "properties": {
        "alertConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskAlertConfigResponse"
          },
          "description": "Alert configurations on error rate, warning rate, number of runs, durations, etc."
        },
        "createTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "creatorEmail": {
          "type": "string",
          "description": "The creator's email address. Auto-generated from the user's email."
        },
        "description": {
          "type": "string",
          "description": "User-provided description intended to give more business context about the task."
        },
        "disableStrictTypeValidation": {
          "type": "boolean",
          "description": "If this config contains a TypedTask, allow validation to succeed if an input is read from the output of another TypedTask whose output type is declared as a superclass of the requested input type. For instance, if the previous task declares an output of type Message, any task with this flag enabled will pass validation when attempting to read any proto Message type from the resultant Event parameter."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task"
        },
        "externalTaskType": {
          "type": "string"
        },
        "failurePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoFailurePolicyResponse",
          "description": "Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.)."
        },
        "incomingEdgeCount": {
          "type": "integer",
          "description": "The number of edges leading into this TaskConfig."
        },
        "jsonValidationOption": {
          "type": "string",
          "description": "If set, overrides the option configured in the Task implementation class."
        },
        "label": {
          "type": "string",
          "description": "User-provided label that is attached to this TaskConfig in the UI."
        },
        "lastModifiedTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "nextTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNextTaskResponse"
          },
          "description": "The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true."
        },
        "nextTasksExecutionPolicy": {
          "type": "string",
          "description": "The policy dictating the execution of the next set of tasks for the current task."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The customized parameters the user can pass to this task."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCoordinateResponse",
          "description": "Optional. Informs the front-end application where to draw this task config on the UI."
        },
        "precondition": {
          "type": "string",
          "description": "Optional. Standard filter expression evaluated before execution. Independent of other conditions and tasks. Can be used to enable rollout. e.g. \"rollout(5)\" will only allow 5% of incoming traffic to task."
        },
        "preconditionLabel": {
          "type": "string",
          "description": "Optional. User-provided label that is attached to precondition in the UI."
        },
        "rollbackStrategy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoRollbackStrategyResponse",
          "description": "Optional. Contains information about what needs to be done upon failure (either a permanent error or after it has been retried too many times)."
        },
        "successPolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoSuccessPolicyResponse",
          "description": "Determines what action to take upon successful task completion."
        },
        "synchronousCallFailurePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoFailurePolicyResponse",
          "description": "Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post)."
        },
        "taskEntity": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskEntityResponse",
          "description": "Copy of the task entity that this task config is an instance of."
        },
        "taskExecutionStrategy": {
          "type": "string",
          "description": "The policy dictating the execution strategy of this task."
        },
        "taskName": {
          "type": "string",
          "description": "The name for the task."
        },
        "taskNumber": {
          "type": "string",
          "description": "REQUIRED: the identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_number`)."
        },
        "taskSpec": {
          "type": "string",
          "description": "A string template that allows user to configure task parameters (with either literal default values or tokens which will be resolved at execution time) for the task. It will eventually replace the old \"parameters\" field."
        },
        "taskTemplateName": {
          "type": "string",
          "description": "Used to define task-template name if task is of type task-template"
        },
        "taskType": {
          "type": "string",
          "description": "Defines the type of the task"
        }
      },
      "type": "object",
      "required": [
        "alertConfigs",
        "createTime",
        "creatorEmail",
        "description",
        "disableStrictTypeValidation",
        "errorCatcherId",
        "externalTaskType",
        "failurePolicy",
        "incomingEdgeCount",
        "jsonValidationOption",
        "label",
        "lastModifiedTime",
        "nextTasks",
        "nextTasksExecutionPolicy",
        "parameters",
        "position",
        "precondition",
        "preconditionLabel",
        "rollbackStrategy",
        "successPolicy",
        "synchronousCallFailurePolicy",
        "taskEntity",
        "taskExecutionStrategy",
        "taskName",
        "taskNumber",
        "taskSpec",
        "taskTemplateName",
        "taskType"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigTaskExecutionStrategy": {
      "description": "The policy dictating the execution strategy of this task.",
      "type": "string",
      "enum": [
        {
          "name": "WhenAllSucceed",
          "description": "Wait until all of its previous tasks finished execution, then verify at least one of the edge conditions is met, and execute if possible. This should be considered as WHEN_ALL_TASKS_SUCCEED.",
          "value": "WHEN_ALL_SUCCEED"
        },
        {
          "name": "WhenAnySucceed",
          "description": "Start execution as long as any of its previous tasks finished execution and the corresponding edge condition is met (since we will execute if only that succeeding edge condition is met).",
          "value": "WHEN_ANY_SUCCEED"
        },
        {
          "name": "WhenAllTasksAndConditionsSucceed",
          "description": "Wait until all of its previous tasks finished execution, then verify the all edge conditions are met and execute if possible.",
          "value": "WHEN_ALL_TASKS_AND_CONDITIONS_SUCCEED"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigTaskType": {
      "description": "Defines the type of the task",
      "type": "string",
      "enum": [
        {
          "name": "Task",
          "description": "Normal IP task",
          "value": "TASK"
        },
        {
          "name": "AsisTemplate",
          "description": "Task is of As-Is Template type",
          "value": "ASIS_TEMPLATE"
        },
        {
          "name": "IoTemplate",
          "description": "Task is of I/O template type with a different underlying task",
          "value": "IO_TEMPLATE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskEntity": {
      "description": "Contains a task's metadata and associated information. Next available id: 7",
      "properties": {
        "disabledForVpcSc": {
          "type": "boolean",
          "description": "True if the task has conflict with vpcsc"
        },
        "metadata": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadata",
          "description": "Metadata inclueds the task name, author and so on."
        },
        "paramSpecs": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecsMessage",
          "description": "Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask."
        },
        "stats": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusStats",
          "description": "Deprecated - statistics from the Monarch query.",
          "deprecationMessage": "Deprecated - statistics from the Monarch query."
        },
        "taskType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskEntityTaskType",
          "description": "Defines the type of the task"
        },
        "uiConfig": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskUiConfig",
          "description": "UI configuration for this task Also associated with the METADATA mask."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskEntityResponse": {
      "description": "Contains a task's metadata and associated information. Next available id: 7",
      "properties": {
        "disabledForVpcSc": {
          "type": "boolean",
          "description": "True if the task has conflict with vpcsc"
        },
        "metadata": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskMetadataResponse",
          "description": "Metadata inclueds the task name, author and so on."
        },
        "paramSpecs": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParamSpecsMessageResponse",
          "description": "Declarations for inputs/outputs for a TypedTask. This is also associated with the METADATA mask."
        },
        "stats": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusStatsResponse",
          "description": "Deprecated - statistics from the Monarch query.",
          "deprecationMessage": "Deprecated - statistics from the Monarch query."
        },
        "taskType": {
          "type": "string",
          "description": "Defines the type of the task"
        },
        "uiConfig": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTaskUiConfigResponse",
          "description": "UI configuration for this task Also associated with the METADATA mask."
        }
      },
      "type": "object",
      "required": [
        "disabledForVpcSc",
        "metadata",
        "paramSpecs",
        "stats",
        "taskType",
        "uiConfig"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTaskEntityTaskType": {
      "description": "Defines the type of the task",
      "type": "string",
      "enum": [
        {
          "name": "Task",
          "description": "Normal IP task",
          "value": "TASK"
        },
        {
          "name": "AsisTemplate",
          "description": "Task is of As-Is Template type",
          "value": "ASIS_TEMPLATE"
        },
        {
          "name": "IoTemplate",
          "description": "Task is of I/O template type with a different underlying task",
          "value": "IO_TEMPLATE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfig": {
      "description": "Configuration detail of a trigger. Next available id: 20",
      "properties": {
        "alertConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoWorkflowAlertConfig"
          },
          "description": "An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published."
        },
        "cloudSchedulerConfig": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCloudSchedulerConfig"
        },
        "description": {
          "type": "string",
          "description": "User-provided description intended to give more business context about the task."
        },
        "enabledClients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task"
        },
        "label": {
          "type": "string",
          "description": "The user created label for a particular trigger."
        },
        "nextTasksExecutionPolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigNextTasksExecutionPolicy",
          "description": "Dictates how next tasks will be executed."
        },
        "pauseWorkflowExecutions": {
          "type": "boolean",
          "description": "Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCoordinate",
          "description": "Optional. Informs the front-end application where to draw this trigger config on the UI."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configurable properties of the trigger, not to be confused with workflow parameters. E.g. \"name\" is a property for API triggers and \"subscription\" is a property for Cloud Pubsub triggers."
        },
        "startTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNextTask"
          },
          "description": "Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph)."
        },
        "triggerCriteria": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTriggerCriteria",
          "description": "Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true."
        },
        "triggerId": {
          "type": "string",
          "description": "The backend trigger ID."
        },
        "triggerName": {
          "type": "string",
          "description": "Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring."
        },
        "triggerNumber": {
          "type": "string",
          "description": "A number to uniquely identify each trigger config within the workflow on UI."
        },
        "triggerType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigTriggerType"
        }
      },
      "type": "object",
      "required": [
        "enabledClients",
        "triggerNumber"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigNextTasksExecutionPolicy": {
      "description": "Dictates how next tasks will be executed.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "Default",
          "value": "UNSPECIFIED"
        },
        {
          "name": "RunAllMatch",
          "description": "Execute all the tasks that satisfy their associated condition.",
          "value": "RUN_ALL_MATCH"
        },
        {
          "name": "RunFirstMatch",
          "description": "Execute the first task that satisfies the associated condition.",
          "value": "RUN_FIRST_MATCH"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigResponse": {
      "description": "Configuration detail of a trigger. Next available id: 20",
      "properties": {
        "alertConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoWorkflowAlertConfigResponse"
          },
          "description": "An alert threshold configuration for the [trigger + client + workflow] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + workflow] when published."
        },
        "cloudSchedulerConfig": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCloudSchedulerConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "User-provided description intended to give more business context about the task."
        },
        "enabledClients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of client ids which are enabled to execute the workflow using this trigger. In other words, these clients have the workflow execution privledges for this trigger. For API trigger, the client id in the incoming request is validated against the list of enabled clients. For non-API triggers, one workflow execution is triggered on behalf of each enabled client."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task"
        },
        "label": {
          "type": "string",
          "description": "The user created label for a particular trigger."
        },
        "nextTasksExecutionPolicy": {
          "type": "string",
          "description": "Dictates how next tasks will be executed."
        },
        "pauseWorkflowExecutions": {
          "type": "boolean",
          "description": "Optional. If set to true, any upcoming requests for this trigger config will be paused and the executions will be resumed later when the flag is reset. The workflow to which this trigger config belongs has to be in ACTIVE status for the executions to be paused or resumed."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoCoordinateResponse",
          "description": "Optional. Informs the front-end application where to draw this trigger config on the UI."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configurable properties of the trigger, not to be confused with workflow parameters. E.g. \"name\" is a property for API triggers and \"subscription\" is a property for Cloud Pubsub triggers."
        },
        "startTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNextTaskResponse"
          },
          "description": "Set of tasks numbers from where the workflow execution is started by this trigger. If this is empty, then workflow is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same workflow execution graph)."
        },
        "triggerCriteria": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTriggerCriteriaResponse",
          "description": "Optional. When set, Eventbus will run the task specified in the trigger_criteria and validate the result using the trigger_criteria.condition, and only execute the workflow when result is true."
        },
        "triggerId": {
          "type": "string",
          "description": "The backend trigger ID."
        },
        "triggerName": {
          "type": "string",
          "description": "Optional. Name of the trigger This is added to identify the type of trigger. This is avoid the logic on triggerId to identify the trigger_type and push the same to monitoring."
        },
        "triggerNumber": {
          "type": "string",
          "description": "A number to uniquely identify each trigger config within the workflow on UI."
        },
        "triggerType": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "alertConfig",
        "cloudSchedulerConfig",
        "description",
        "enabledClients",
        "errorCatcherId",
        "label",
        "nextTasksExecutionPolicy",
        "pauseWorkflowExecutions",
        "position",
        "properties",
        "startTasks",
        "triggerCriteria",
        "triggerId",
        "triggerName",
        "triggerNumber",
        "triggerType"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigTriggerType": {
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "CloudPubsub",
          "value": "CLOUD_PUBSUB"
        },
        {
          "name": "Goops",
          "value": "GOOPS"
        },
        {
          "name": "SfdcSync",
          "value": "SFDC_SYNC"
        },
        {
          "name": "Cron",
          "value": "CRON"
        },
        {
          "name": "Api",
          "value": "API"
        },
        {
          "name": "ManifoldTrigger",
          "value": "MANIFOLD_TRIGGER"
        },
        {
          "name": "DatalayerDataChange",
          "value": "DATALAYER_DATA_CHANGE"
        },
        {
          "name": "SfdcChannel",
          "value": "SFDC_CHANNEL"
        },
        {
          "name": "CloudPubsubExternal",
          "value": "CLOUD_PUBSUB_EXTERNAL"
        },
        {
          "name": "SfdcCdcChannel",
          "value": "SFDC_CDC_CHANNEL"
        },
        {
          "name": "SfdcPlatformEventsChannel",
          "value": "SFDC_PLATFORM_EVENTS_CHANNEL"
        },
        {
          "name": "CloudScheduler",
          "value": "CLOUD_SCHEDULER"
        },
        {
          "name": "IntegrationConnectorTrigger",
          "value": "INTEGRATION_CONNECTOR_TRIGGER"
        },
        {
          "name": "PrivateTrigger",
          "value": "PRIVATE_TRIGGER"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry": {
      "properties": {
        "attributes": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoAttributes",
          "description": "Metadata information about the parameters."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry"
          },
          "description": "Child parameters nested within this parameter. This field only applies to protobuf parameters"
        },
        "dataType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntryDataType",
          "description": "The data type of the parameter."
        },
        "defaultValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterValueType",
          "description": "Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description about the parameter"
        },
        "inOutType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntryInOutType",
          "description": "Specifies the input/output type for the parameter."
        },
        "isTransient": {
          "type": "boolean",
          "description": "Whether this parameter is a transient parameter."
        },
        "jsonSchema": {
          "type": "string",
          "description": "This schema will be used to validate runtime JSON-typed values of this parameter."
        },
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition."
        },
        "name": {
          "type": "string",
          "description": "The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is \"foo.bar.myName\", then the name would be \"myName\"."
        },
        "producedBy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNodeIdentifier",
          "description": "The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param."
        },
        "producer": {
          "type": "string"
        },
        "protoDefName": {
          "type": "string",
          "description": "The name of the protobuf type if the parameter has a protobuf data type."
        },
        "protoDefPath": {
          "type": "string",
          "description": "If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be \"enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry\"."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntryDataType": {
      "description": "The data type of the parameter.",
      "type": "string",
      "enum": [
        {
          "name": "DataTypeUnspecified",
          "value": "DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "StringValue",
          "value": "STRING_VALUE"
        },
        {
          "name": "IntValue",
          "value": "INT_VALUE"
        },
        {
          "name": "DoubleValue",
          "value": "DOUBLE_VALUE"
        },
        {
          "name": "BooleanValue",
          "value": "BOOLEAN_VALUE"
        },
        {
          "name": "ProtoValue",
          "value": "PROTO_VALUE"
        },
        {
          "name": "SerializedObjectValue",
          "value": "SERIALIZED_OBJECT_VALUE"
        },
        {
          "name": "StringArray",
          "value": "STRING_ARRAY"
        },
        {
          "name": "IntArray",
          "value": "INT_ARRAY"
        },
        {
          "name": "DoubleArray",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "ProtoArray",
          "value": "PROTO_ARRAY"
        },
        {
          "name": "ProtoEnum",
          "value": "PROTO_ENUM"
        },
        {
          "name": "BooleanArray",
          "value": "BOOLEAN_ARRAY"
        },
        {
          "name": "ProtoEnumArray",
          "value": "PROTO_ENUM_ARRAY"
        },
        {
          "name": "Bytes",
          "description": "BYTES and BYTES_ARRAY data types are not allowed for top-level params. They're only meant to support protobufs with BYTES (sub)fields.",
          "value": "BYTES"
        },
        {
          "name": "BytesArray",
          "value": "BYTES_ARRAY"
        },
        {
          "name": "NonSerializableObject",
          "value": "NON_SERIALIZABLE_OBJECT"
        },
        {
          "name": "JsonValue",
          "value": "JSON_VALUE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntryInOutType": {
      "description": "Specifies the input/output type for the parameter.",
      "type": "string",
      "enum": [
        {
          "name": "InOutTypeUnspecified",
          "value": "IN_OUT_TYPE_UNSPECIFIED"
        },
        {
          "name": "In",
          "description": "Input parameters for the workflow. EventBus validates that these parameters exist in the workflows before execution.",
          "value": "IN"
        },
        {
          "name": "Out",
          "description": "Output Parameters for the workflow. EventBus will only return the workflow parameters tagged with OUT in the response back.",
          "value": "OUT"
        },
        {
          "name": "InOut",
          "description": "Input or Output Parameters. These can be used as both input and output. EventBus will validate for the existence of these parameters before execution and will also return this parameter back in the response.",
          "value": "IN_OUT"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntryResponse": {
      "properties": {
        "attributes": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoAttributesResponse",
          "description": "Metadata information about the parameters."
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntryResponse"
          },
          "description": "Child parameters nested within this parameter. This field only applies to protobuf parameters"
        },
        "dataType": {
          "type": "string",
          "description": "The data type of the parameter."
        },
        "defaultValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoParameterValueTypeResponse",
          "description": "Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description about the parameter"
        },
        "inOutType": {
          "type": "string",
          "description": "Specifies the input/output type for the parameter."
        },
        "isTransient": {
          "type": "boolean",
          "description": "Whether this parameter is a transient parameter."
        },
        "jsonSchema": {
          "type": "string",
          "description": "This schema will be used to validate runtime JSON-typed values of this parameter."
        },
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the workflow definition."
        },
        "name": {
          "type": "string",
          "description": "The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is \"foo.bar.myName\", then the name would be \"myName\"."
        },
        "producedBy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoNodeIdentifierResponse",
          "description": "The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param."
        },
        "producer": {
          "type": "string"
        },
        "protoDefName": {
          "type": "string",
          "description": "The name of the protobuf type if the parameter has a protobuf data type."
        },
        "protoDefPath": {
          "type": "string",
          "description": "If the data type is of type proto or proto array, this field needs to be populated with the fully qualified proto name. This message, for example, would be \"enterprise.crm.frontends.eventbus.proto.WorkflowParameterEntry\"."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "children",
        "dataType",
        "defaultValue",
        "description",
        "inOutType",
        "isTransient",
        "jsonSchema",
        "key",
        "name",
        "producedBy",
        "producer",
        "protoDefName",
        "protoDefPath"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameters": {
      "description": "LINT.IfChange This is the frontend version of WorkflowParameters. It's exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as \"children\" (see 'children' field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntry"
          },
          "description": "Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParametersResponse": {
      "description": "LINT.IfChange This is the frontend version of WorkflowParameters. It's exactly like the backend version except that instead of flattening protobuf parameters and treating every field and subfield of a protobuf parameter as a separate parameter, the fields/subfields of a protobuf parameter will be nested as \"children\" (see 'children' field below) parameters of the parent parameter. Please refer to enterprise/crm/eventbus/proto/workflow_parameters.proto for more information about WorkflowParameters.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameterEntryResponse"
          },
          "description": "Parameters are a part of Event and can be used to communiticate between different tasks that are part of the same workflow execution."
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsFieldLimits": {
      "description": "Describes string and array limits when writing to logs. When a limit is exceeded the *shortener_type* describes how to shorten the field. next_id: 6",
      "properties": {
        "logAction": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsFieldLimitsLogAction"
        },
        "logType": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsFieldLimitsLogTypeItem"
          },
          "description": "To which type(s) of logs the limits apply."
        },
        "maxArraySize": {
          "type": "integer",
          "description": "maximum array size. If the array exceds this size, the field (list) is truncated."
        },
        "maxStringLength": {
          "type": "integer",
          "description": "maximum string length. If the field exceeds this amount the field is shortened."
        },
        "shortenerType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsFieldLimitsShortenerType"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsFieldLimitsLogAction": {
      "type": "string",
      "enum": [
        {
          "name": "LogActionUnspecified",
          "value": "LOG_ACTION_UNSPECIFIED"
        },
        {
          "name": "DontLog",
          "value": "DONT_LOG"
        },
        {
          "name": "Log",
          "value": "LOG"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsFieldLimitsLogTypeItem": {
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "Gws",
          "description": "Limits apply when log detail records are written to GWS.",
          "value": "GWS"
        },
        {
          "name": "Gts",
          "description": "Limits apply when log detail records are written to GTS (e.g., RecordIO files).",
          "value": "GTS"
        },
        {
          "name": "All",
          "description": "Limits apply to *all* output log types.",
          "value": "ALL"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsFieldLimitsResponse": {
      "description": "Describes string and array limits when writing to logs. When a limit is exceeded the *shortener_type* describes how to shorten the field. next_id: 6",
      "properties": {
        "logAction": {
          "type": "string"
        },
        "logType": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "To which type(s) of logs the limits apply."
        },
        "maxArraySize": {
          "type": "integer",
          "description": "maximum array size. If the array exceds this size, the field (list) is truncated."
        },
        "maxStringLength": {
          "type": "integer",
          "description": "maximum string length. If the field exceeds this amount the field is shortened."
        },
        "shortenerType": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "logAction",
        "logType",
        "maxArraySize",
        "maxStringLength",
        "shortenerType"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsFieldLimitsShortenerType": {
      "type": "string",
      "enum": [
        {
          "name": "ShortenerTypeUnspecified",
          "value": "SHORTENER_TYPE_UNSPECIFIED"
        },
        {
          "name": "Shorten",
          "description": "String is shortened to max_string_length.",
          "value": "SHORTEN"
        },
        {
          "name": "Hash",
          "description": "String is replaced by its hex-string hash.",
          "value": "HASH"
        },
        {
          "name": "ShortenWithHash",
          "description": "String is replaced by a combination of string shortening and a hex-string hash.",
          "value": "SHORTEN_WITH_HASH"
        },
        {
          "name": "ShortenEmail",
          "description": "String shortening for email addresses. Shortening may be done on the user and/or domain portion of the email address.",
          "value": "SHORTEN_EMAIL"
        },
        {
          "name": "ShortenEmailWithHash",
          "description": "String is replaced by a combination of string shortening and a hex-string hash for an email address.",
          "value": "SHORTEN_EMAIL_WITH_HASH"
        },
        {
          "name": "ShortenDomain",
          "description": "Shortens a domain name (e.g., as part of an email address or URL).",
          "value": "SHORTEN_DOMAIN"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsSanitizeOptions": {
      "description": "Identifies whether a field contains, or may contain, PII or sensitive data, and how to sanitize the field if it does. If a field's privacy type cannot be determined then it is sanitized (e.g., scrubbed). The specific sanitizer implementation is determined by run-time configuration and environment options (e.g., prod vs. qa). next_id: 5",
      "properties": {
        "isAlreadySanitized": {
          "type": "boolean",
          "description": "If true, the value has already been sanitized and needs no further sanitization. For instance, a D3 customer id is already an obfuscated entity and *might not* need further sanitization."
        },
        "logType": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsSanitizeOptionsLogTypeItem"
          },
          "description": "To which type(s) of logs the sanitize options apply."
        },
        "privacy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsSanitizeOptionsPrivacy"
        },
        "sanitizeType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmLoggingGwsSanitizeOptionsSanitizeType"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsSanitizeOptionsLogTypeItem": {
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "Gws",
          "description": "Limits apply when log detail records are written to GWS.",
          "value": "GWS"
        },
        {
          "name": "Gts",
          "description": "Limits apply when log detail records are written to GTS (e.g., RecordIO files).",
          "value": "GTS"
        },
        {
          "name": "All",
          "description": "Limits apply to *all* output log types.",
          "value": "ALL"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsSanitizeOptionsPrivacy": {
      "type": "string",
      "enum": [
        {
          "name": "PrivacyTypeUnspecified",
          "value": "PRIVACY_TYPE_UNSPECIFIED"
        },
        {
          "name": "NotPii",
          "description": "Field does *NOT* contain PII or sensitive data.",
          "value": "NOT_PII"
        },
        {
          "name": "Pii",
          "description": "Field contains PII.",
          "value": "PII"
        },
        {
          "name": "Spii",
          "description": "Field contains Sensitive PII.",
          "value": "SPII"
        },
        {
          "name": "Unsure",
          "description": "Unsure if field contains PII.",
          "value": "UNSURE"
        }
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsSanitizeOptionsResponse": {
      "description": "Identifies whether a field contains, or may contain, PII or sensitive data, and how to sanitize the field if it does. If a field's privacy type cannot be determined then it is sanitized (e.g., scrubbed). The specific sanitizer implementation is determined by run-time configuration and environment options (e.g., prod vs. qa). next_id: 5",
      "properties": {
        "isAlreadySanitized": {
          "type": "boolean",
          "description": "If true, the value has already been sanitized and needs no further sanitization. For instance, a D3 customer id is already an obfuscated entity and *might not* need further sanitization."
        },
        "logType": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "To which type(s) of logs the sanitize options apply."
        },
        "privacy": {
          "type": "string"
        },
        "sanitizeType": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "isAlreadySanitized",
        "logType",
        "privacy",
        "sanitizeType"
      ]
    },
    "google-native:integrations/v1alpha:EnterpriseCrmLoggingGwsSanitizeOptionsSanitizeType": {
      "type": "string",
      "enum": [
        {
          "name": "SanitizeTypeUnspecified",
          "value": "SANITIZE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Scrub",
          "description": "Replace value with a scrubbed value (usu. a constant).",
          "value": "SCRUB"
        },
        {
          "name": "Anonymize",
          "description": "Transform a value so that it cannot be tracked across events. However, a given value, is transformed to the same value *within* an event. E.g., \"foo.com\" is transformed to \"0xabcdef\" for event 1001, and to \"0xfedcba\" for event 1002.",
          "value": "ANONYMIZE"
        },
        {
          "name": "AnonymizeLimitedRepeatable",
          "description": "Transform values as with ANONYMIZER, but the same transformation is repeated for a limited time (e.g., 1 day).",
          "value": "ANONYMIZE_LIMITED_REPEATABLE"
        },
        {
          "name": "Obfuscate",
          "description": "The value is transformed using a well-defined obfuscator (e.g., D3_CUSTOMER_ID).",
          "value": "OBFUSCATE"
        },
        {
          "name": "Encrypt",
          "description": "The value is encrypted.",
          "value": "ENCRYPT"
        },
        {
          "name": "DoNotSanitize",
          "description": "No sanitization is required.",
          "value": "DO_NOT_SANITIZE"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaAccessToken": {
      "description": "The access token represents the authorization of a specific application to access specific parts of a user’s data.",
      "properties": {
        "accessToken": {
          "type": "string",
          "description": "The access token encapsulating the security identity of a process or thread."
        },
        "accessTokenExpireTime": {
          "type": "string",
          "description": "The approximate time until the access token retrieved is valid."
        },
        "refreshToken": {
          "type": "string",
          "description": "If the access token will expire, use the refresh token to obtain another access token."
        },
        "refreshTokenExpireTime": {
          "type": "string",
          "description": "The approximate time until the refresh token retrieved is valid."
        },
        "tokenType": {
          "type": "string",
          "description": "Only support \"bearer\" token in v1 as bearer token is the predominant type used with OAuth 2.0."
        }
      },
      "type": "object",
      "required": [
        "accessTokenExpireTime"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaAccessTokenResponse": {
      "description": "The access token represents the authorization of a specific application to access specific parts of a user’s data.",
      "properties": {
        "accessToken": {
          "type": "string",
          "description": "The access token encapsulating the security identity of a process or thread."
        },
        "accessTokenExpireTime": {
          "type": "string",
          "description": "The approximate time until the access token retrieved is valid."
        },
        "refreshToken": {
          "type": "string",
          "description": "If the access token will expire, use the refresh token to obtain another access token."
        },
        "refreshTokenExpireTime": {
          "type": "string",
          "description": "The approximate time until the refresh token retrieved is valid."
        },
        "tokenType": {
          "type": "string",
          "description": "Only support \"bearer\" token in v1 as bearer token is the predominant type used with OAuth 2.0."
        }
      },
      "type": "object",
      "required": [
        "accessToken",
        "accessTokenExpireTime",
        "refreshToken",
        "refreshTokenExpireTime",
        "tokenType"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaAssertion": {
      "description": "An assertion which will check for a condition over task execution status or an expression for task output variables Next available id: 5",
      "properties": {
        "assertionStrategy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAssertionAssertionStrategy",
          "description": "The type of assertion to perform."
        },
        "condition": {
          "type": "string",
          "description": "Optional. Standard filter expression for ASSERT_CONDITION to succeed"
        },
        "parameter": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaEventParameter",
          "description": "Optional. Key-value pair for ASSERT_EQUALS, ASSERT_NOT_EQUALS, ASSERT_CONTAINS to succeed"
        },
        "retryCount": {
          "type": "integer",
          "description": "Number of times given task should be retried in case of ASSERT_FAILED_EXECUTION"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaAssertionAssertionStrategy": {
      "description": "The type of assertion to perform.",
      "type": "string",
      "enum": [
        {
          "name": "AssertionStrategyUnspecified",
          "description": "Unspecified Assertion strategy",
          "value": "ASSERTION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "AssertSuccessfulExecution",
          "description": "Test a successful execution",
          "value": "ASSERT_SUCCESSFUL_EXECUTION"
        },
        {
          "name": "AssertFailedExecution",
          "description": "Test a failed execution",
          "value": "ASSERT_FAILED_EXECUTION"
        },
        {
          "name": "AssertNoExecution",
          "description": "Test that the task was never executed",
          "value": "ASSERT_NO_EXECUTION"
        },
        {
          "name": "AssertEquals",
          "description": "Test the parameter selected is equal to the expected value",
          "value": "ASSERT_EQUALS"
        },
        {
          "name": "AssertNotEquals",
          "description": "Test the parameter selected is not equal to the expected value",
          "value": "ASSERT_NOT_EQUALS"
        },
        {
          "name": "AssertContains",
          "description": "Test the parameter selected contains the configured value",
          "value": "ASSERT_CONTAINS"
        },
        {
          "name": "AssertCondition",
          "description": "Test a specific condition",
          "value": "ASSERT_CONDITION"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaAssertionResponse": {
      "description": "An assertion which will check for a condition over task execution status or an expression for task output variables Next available id: 5",
      "properties": {
        "assertionStrategy": {
          "type": "string",
          "description": "The type of assertion to perform."
        },
        "condition": {
          "type": "string",
          "description": "Optional. Standard filter expression for ASSERT_CONDITION to succeed"
        },
        "parameter": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaEventParameterResponse",
          "description": "Optional. Key-value pair for ASSERT_EQUALS, ASSERT_NOT_EQUALS, ASSERT_CONTAINS to succeed"
        },
        "retryCount": {
          "type": "integer",
          "description": "Number of times given task should be retried in case of ASSERT_FAILED_EXECUTION"
        }
      },
      "type": "object",
      "required": [
        "assertionStrategy",
        "condition",
        "parameter",
        "retryCount"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaAuthToken": {
      "description": "The credentials to authenticate a user agent with a server that is put in HTTP Authorization request header.",
      "properties": {
        "token": {
          "type": "string",
          "description": "The token for the auth type."
        },
        "type": {
          "type": "string",
          "description": "Authentication type, e.g. \"Basic\", \"Bearer\", etc."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaAuthTokenResponse": {
      "description": "The credentials to authenticate a user agent with a server that is put in HTTP Authorization request header.",
      "properties": {
        "token": {
          "type": "string",
          "description": "The token for the auth type."
        },
        "type": {
          "type": "string",
          "description": "Authentication type, e.g. \"Basic\", \"Bearer\", etc."
        }
      },
      "type": "object",
      "required": [
        "token",
        "type"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaBooleanParameterArray": {
      "description": "This message only contains a field of boolean array.",
      "properties": {
        "booleanValues": {
          "type": "array",
          "items": {
            "type": "boolean"
          },
          "description": "Boolean array."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaBooleanParameterArrayResponse": {
      "description": "This message only contains a field of boolean array.",
      "properties": {
        "booleanValues": {
          "type": "array",
          "items": {
            "type": "boolean"
          },
          "description": "Boolean array."
        }
      },
      "type": "object",
      "required": [
        "booleanValues"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaClientCertificate": {
      "description": "Contains client certificate information",
      "properties": {
        "encryptedPrivateKey": {
          "type": "string",
          "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines. For example, -----BEGIN CERTIFICATE----- MIICTTCCAbagAwIBAgIJAPT0tSKNxan/MA0GCSqGSIb3DQEBCwUAMCoxFzAVBgNV BAoTDkdvb2dsZSBURVNUSU5HMQ8wDQYDVQQDEwZ0ZXN0Q0EwHhcNMTUwMTAxMDAw MDAwWhcNMjUwMTAxMDAwMDAwWjAuMRcwFQYDVQQKEw5Hb29nbGUgVEVTVElORzET MBEGA1UEAwwKam9lQGJhbmFuYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA vDYFgMgxi5W488d9J7UpCInl0NXmZQpJDEHE4hvkaRlH7pnC71H0DLt0/3zATRP1 JzY2+eqBmbGl4/sgZKYv8UrLnNyQNUTsNx1iZAfPUflf5FwgVsai8BM0pUciq1NB xD429VFcrGZNucvFLh72RuRFIKH8WUpiK/iZNFkWhZ0CAwEAAaN3MHUwDgYDVR0P AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB Af8EAjAAMBkGA1UdDgQSBBCVgnFBCWgL/iwCqnGrhTPQMBsGA1UdIwQUMBKAEKey Um2o4k2WiEVA0ldQvNYwDQYJKoZIhvcNAQELBQADgYEAYK986R4E3L1v+Q6esBtW JrUwA9UmJRSQr0N5w3o9XzarU37/bkjOP0Fw0k/A6Vv1n3vlciYfBFaBIam1qRHr 5dMsYf4CZS6w50r7hyzqyrwDoyNxkLnd2PdcHT/sym1QmflsjEs7pejtnohO6N2H wQW6M0H7Zt8claGRla4fKkg= -----END CERTIFICATE-----"
        },
        "passphrase": {
          "type": "string",
          "description": "'passphrase' should be left unset if private key is not encrypted. Note that 'passphrase' is not the password for web server, but an extra layer of security to protected private key."
        },
        "sslCertificate": {
          "type": "string",
          "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines. For example, -----BEGIN CERTIFICATE----- MIICTTCCAbagAwIBAgIJAPT0tSKNxan/MA0GCSqGSIb3DQEBCwUAMCoxFzAVBgNV BAoTDkdvb2dsZSBURVNUSU5HMQ8wDQYDVQQDEwZ0ZXN0Q0EwHhcNMTUwMTAxMDAw MDAwWhcNMjUwMTAxMDAwMDAwWjAuMRcwFQYDVQQKEw5Hb29nbGUgVEVTVElORzET MBEGA1UEAwwKam9lQGJhbmFuYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA vDYFgMgxi5W488d9J7UpCInl0NXmZQpJDEHE4hvkaRlH7pnC71H0DLt0/3zATRP1 JzY2+eqBmbGl4/sgZKYv8UrLnNyQNUTsNx1iZAfPUflf5FwgVsai8BM0pUciq1NB xD429VFcrGZNucvFLh72RuRFIKH8WUpiK/iZNFkWhZ0CAwEAAaN3MHUwDgYDVR0P AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB Af8EAjAAMBkGA1UdDgQSBBCVgnFBCWgL/iwCqnGrhTPQMBsGA1UdIwQUMBKAEKey Um2o4k2WiEVA0ldQvNYwDQYJKoZIhvcNAQELBQADgYEAYK986R4E3L1v+Q6esBtW JrUwA9UmJRSQr0N5w3o9XzarU37/bkjOP0Fw0k/A6Vv1n3vlciYfBFaBIam1qRHr 5dMsYf4CZS6w50r7hyzqyrwDoyNxkLnd2PdcHT/sym1QmflsjEs7pejtnohO6N2H wQW6M0H7Zt8claGRla4fKkg= -----END CERTIFICATE-----"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaClientCertificateResponse": {
      "description": "Contains client certificate information",
      "properties": {
        "encryptedPrivateKey": {
          "type": "string",
          "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines. For example, -----BEGIN CERTIFICATE----- MIICTTCCAbagAwIBAgIJAPT0tSKNxan/MA0GCSqGSIb3DQEBCwUAMCoxFzAVBgNV BAoTDkdvb2dsZSBURVNUSU5HMQ8wDQYDVQQDEwZ0ZXN0Q0EwHhcNMTUwMTAxMDAw MDAwWhcNMjUwMTAxMDAwMDAwWjAuMRcwFQYDVQQKEw5Hb29nbGUgVEVTVElORzET MBEGA1UEAwwKam9lQGJhbmFuYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA vDYFgMgxi5W488d9J7UpCInl0NXmZQpJDEHE4hvkaRlH7pnC71H0DLt0/3zATRP1 JzY2+eqBmbGl4/sgZKYv8UrLnNyQNUTsNx1iZAfPUflf5FwgVsai8BM0pUciq1NB xD429VFcrGZNucvFLh72RuRFIKH8WUpiK/iZNFkWhZ0CAwEAAaN3MHUwDgYDVR0P AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB Af8EAjAAMBkGA1UdDgQSBBCVgnFBCWgL/iwCqnGrhTPQMBsGA1UdIwQUMBKAEKey Um2o4k2WiEVA0ldQvNYwDQYJKoZIhvcNAQELBQADgYEAYK986R4E3L1v+Q6esBtW JrUwA9UmJRSQr0N5w3o9XzarU37/bkjOP0Fw0k/A6Vv1n3vlciYfBFaBIam1qRHr 5dMsYf4CZS6w50r7hyzqyrwDoyNxkLnd2PdcHT/sym1QmflsjEs7pejtnohO6N2H wQW6M0H7Zt8claGRla4fKkg= -----END CERTIFICATE-----"
        },
        "passphrase": {
          "type": "string",
          "description": "'passphrase' should be left unset if private key is not encrypted. Note that 'passphrase' is not the password for web server, but an extra layer of security to protected private key."
        },
        "sslCertificate": {
          "type": "string",
          "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines. For example, -----BEGIN CERTIFICATE----- MIICTTCCAbagAwIBAgIJAPT0tSKNxan/MA0GCSqGSIb3DQEBCwUAMCoxFzAVBgNV BAoTDkdvb2dsZSBURVNUSU5HMQ8wDQYDVQQDEwZ0ZXN0Q0EwHhcNMTUwMTAxMDAw MDAwWhcNMjUwMTAxMDAwMDAwWjAuMRcwFQYDVQQKEw5Hb29nbGUgVEVTVElORzET MBEGA1UEAwwKam9lQGJhbmFuYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA vDYFgMgxi5W488d9J7UpCInl0NXmZQpJDEHE4hvkaRlH7pnC71H0DLt0/3zATRP1 JzY2+eqBmbGl4/sgZKYv8UrLnNyQNUTsNx1iZAfPUflf5FwgVsai8BM0pUciq1NB xD429VFcrGZNucvFLh72RuRFIKH8WUpiK/iZNFkWhZ0CAwEAAaN3MHUwDgYDVR0P AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB Af8EAjAAMBkGA1UdDgQSBBCVgnFBCWgL/iwCqnGrhTPQMBsGA1UdIwQUMBKAEKey Um2o4k2WiEVA0ldQvNYwDQYJKoZIhvcNAQELBQADgYEAYK986R4E3L1v+Q6esBtW JrUwA9UmJRSQr0N5w3o9XzarU37/bkjOP0Fw0k/A6Vv1n3vlciYfBFaBIam1qRHr 5dMsYf4CZS6w50r7hyzqyrwDoyNxkLnd2PdcHT/sym1QmflsjEs7pejtnohO6N2H wQW6M0H7Zt8claGRla4fKkg= -----END CERTIFICATE-----"
        }
      },
      "type": "object",
      "required": [
        "encryptedPrivateKey",
        "passphrase",
        "sslCertificate"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCloudLoggingDetails": {
      "description": "Cloud Logging details for execution info",
      "properties": {
        "cloudLoggingSeverity": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCloudLoggingDetailsCloudLoggingSeverity",
          "description": "Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed."
        },
        "enableCloudLogging": {
          "type": "boolean",
          "description": "Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCloudLoggingDetailsCloudLoggingSeverity": {
      "description": "Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed.",
      "type": "string",
      "enum": [
        {
          "name": "CloudLoggingSeverityUnspecified",
          "description": "Unspecified",
          "value": "CLOUD_LOGGING_SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "If Severity selected is `DEFAULT`, then all the Integration Execution States will be sent to Cloud Logging.",
          "value": "DEFAULT"
        },
        {
          "name": "Info",
          "description": "If Severity selected is `INFO`, then only the following Integration Execution States (`IN_PROCESS`, `ON_HOLD`, `SUCCEEDED` and `SUSPENDED`) will be sent to Cloud Logging.",
          "value": "INFO"
        },
        {
          "name": "Error",
          "description": "If Severity selected is `ERROR`, then only the following Integration Execution States (`ERROR`, `CANCELLED`) will be sent to Cloud Logging.",
          "value": "ERROR"
        },
        {
          "name": "Warning",
          "description": "If Severity selected is `WARNING`, then only the following Integration Execution States (`RETRY_ON_HOLD`) will be sent to Cloud Logging.",
          "value": "WARNING"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCloudLoggingDetailsResponse": {
      "description": "Cloud Logging details for execution info",
      "properties": {
        "cloudLoggingSeverity": {
          "type": "string",
          "description": "Optional. Severity selected by the customer for the logs to be sent to Cloud Logging, for the integration version getting executed."
        },
        "enableCloudLogging": {
          "type": "boolean",
          "description": "Optional. Status of whether Cloud Logging is enabled or not for the integration version getting executed."
        }
      },
      "type": "object",
      "required": [
        "cloudLoggingSeverity",
        "enableCloudLogging"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCloudSchedulerConfig": {
      "description": "Cloud Scheduler Trigger configuration",
      "properties": {
        "cronTab": {
          "type": "string",
          "description": "The cron tab of cloud scheduler trigger."
        },
        "errorMessage": {
          "type": "string",
          "description": "Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations"
        },
        "location": {
          "type": "string",
          "description": "The location where associated cloud scheduler job will be created"
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Service account used by Cloud Scheduler to trigger the integration at scheduled time"
        }
      },
      "type": "object",
      "required": [
        "cronTab",
        "location",
        "serviceAccountEmail"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCloudSchedulerConfigResponse": {
      "description": "Cloud Scheduler Trigger configuration",
      "properties": {
        "cronTab": {
          "type": "string",
          "description": "The cron tab of cloud scheduler trigger."
        },
        "errorMessage": {
          "type": "string",
          "description": "Optional. When the job was deleted from Pantheon UI, error_message will be populated when Get/List integrations"
        },
        "location": {
          "type": "string",
          "description": "The location where associated cloud scheduler job will be created"
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Service account used by Cloud Scheduler to trigger the integration at scheduled time"
        }
      },
      "type": "object",
      "required": [
        "cronTab",
        "errorMessage",
        "location",
        "serviceAccountEmail"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCoordinate": {
      "description": "Configuration detail of coordinate, it used for UI",
      "properties": {
        "x": {
          "type": "integer",
          "description": "X axis of the coordinate"
        },
        "y": {
          "type": "integer",
          "description": "Y axis of the coordinate"
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCoordinateResponse": {
      "description": "Configuration detail of coordinate, it used for UI",
      "properties": {
        "x": {
          "type": "integer",
          "description": "X axis of the coordinate"
        },
        "y": {
          "type": "integer",
          "description": "Y axis of the coordinate"
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCredential": {
      "description": "Defines parameters for a single, canonical credential.",
      "properties": {
        "authToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAuthToken",
          "description": "Auth token credential"
        },
        "credentialType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCredentialCredentialType",
          "description": "Credential type associated with auth config."
        },
        "jwt": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaJwt",
          "description": "JWT credential"
        },
        "oauth2AuthorizationCode": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2AuthorizationCode",
          "description": "The api_key and oauth2_implicit are not covered in v1 and will be picked up once v1 is implemented. ApiKey api_key = 3; OAuth2 authorization code credential"
        },
        "oauth2ClientCredentials": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2ClientCredentials",
          "description": "OAuth2Implicit oauth2_implicit = 5; OAuth2 client credentials"
        },
        "oauth2ResourceOwnerCredentials": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2ResourceOwnerCredentials",
          "description": "OAuth2 resource owner credentials"
        },
        "oidcToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOidcToken",
          "description": "Google OIDC ID Token"
        },
        "serviceAccountCredentials": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaServiceAccountCredentials",
          "description": "Service account credential"
        },
        "usernameAndPassword": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaUsernameAndPassword",
          "description": "Username and password credential"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCredentialCredentialType": {
      "description": "Credential type associated with auth config.",
      "type": "string",
      "enum": [
        {
          "name": "CredentialTypeUnspecified",
          "description": "Unspecified credential type",
          "value": "CREDENTIAL_TYPE_UNSPECIFIED"
        },
        {
          "name": "UsernameAndPassword",
          "description": "Regular username/password pair.",
          "value": "USERNAME_AND_PASSWORD"
        },
        {
          "name": "ApiKey",
          "description": "API key.",
          "value": "API_KEY"
        },
        {
          "name": "Oauth2AuthorizationCode",
          "description": "OAuth 2.0 Authorization Code Grant Type.",
          "value": "OAUTH2_AUTHORIZATION_CODE"
        },
        {
          "name": "Oauth2Implicit",
          "description": "OAuth 2.0 Implicit Grant Type.",
          "value": "OAUTH2_IMPLICIT"
        },
        {
          "name": "Oauth2ClientCredentials",
          "description": "OAuth 2.0 Client Credentials Grant Type.",
          "value": "OAUTH2_CLIENT_CREDENTIALS"
        },
        {
          "name": "Oauth2ResourceOwnerCredentials",
          "description": "OAuth 2.0 Resource Owner Credentials Grant Type.",
          "value": "OAUTH2_RESOURCE_OWNER_CREDENTIALS"
        },
        {
          "name": "Jwt",
          "description": "JWT Token.",
          "value": "JWT"
        },
        {
          "name": "AuthToken",
          "description": "Auth Token, e.g. bearer token.",
          "value": "AUTH_TOKEN"
        },
        {
          "name": "ServiceAccount",
          "description": "Service Account which can be used to generate token for authentication.",
          "value": "SERVICE_ACCOUNT"
        },
        {
          "name": "ClientCertificateOnly",
          "description": "Client Certificate only.",
          "value": "CLIENT_CERTIFICATE_ONLY"
        },
        {
          "name": "OidcToken",
          "description": "Google OIDC ID Token",
          "value": "OIDC_TOKEN"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaCredentialResponse": {
      "description": "Defines parameters for a single, canonical credential.",
      "properties": {
        "authToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAuthTokenResponse",
          "description": "Auth token credential"
        },
        "credentialType": {
          "type": "string",
          "description": "Credential type associated with auth config."
        },
        "jwt": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaJwtResponse",
          "description": "JWT credential"
        },
        "oauth2AuthorizationCode": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2AuthorizationCodeResponse",
          "description": "The api_key and oauth2_implicit are not covered in v1 and will be picked up once v1 is implemented. ApiKey api_key = 3; OAuth2 authorization code credential"
        },
        "oauth2ClientCredentials": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2ClientCredentialsResponse",
          "description": "OAuth2Implicit oauth2_implicit = 5; OAuth2 client credentials"
        },
        "oauth2ResourceOwnerCredentials": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2ResourceOwnerCredentialsResponse",
          "description": "OAuth2 resource owner credentials"
        },
        "oidcToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOidcTokenResponse",
          "description": "Google OIDC ID Token"
        },
        "serviceAccountCredentials": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaServiceAccountCredentialsResponse",
          "description": "Service account credential"
        },
        "usernameAndPassword": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaUsernameAndPasswordResponse",
          "description": "Username and password credential"
        }
      },
      "type": "object",
      "required": [
        "authToken",
        "credentialType",
        "jwt",
        "oauth2AuthorizationCode",
        "oauth2ClientCredentials",
        "oauth2ResourceOwnerCredentials",
        "oidcToken",
        "serviceAccountCredentials",
        "usernameAndPassword"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaDoubleParameterArray": {
      "description": "This message only contains a field of double number array.",
      "properties": {
        "doubleValues": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Double number array."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaDoubleParameterArrayResponse": {
      "description": "This message only contains a field of double number array.",
      "properties": {
        "doubleValues": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Double number array."
        }
      },
      "type": "object",
      "required": [
        "doubleValues"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaErrorCatcherConfig": {
      "description": "Configuration detail of a error catch task",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description intended to give more business context about the error catcher config."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow"
        },
        "errorCatcherNumber": {
          "type": "string",
          "description": "A number to uniquely identify each error catcher config within the workflow on UI."
        },
        "label": {
          "type": "string",
          "description": "Optional. The user created label for a particular error catcher. Optional."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCoordinate",
          "description": "Optional. Informs the front-end application where to draw this error catcher config on the UI."
        },
        "startErrorTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaNextTask"
          },
          "description": "The set of start tasks that are to be executed for the error catch flow"
        }
      },
      "type": "object",
      "required": [
        "errorCatcherId",
        "errorCatcherNumber",
        "startErrorTasks"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaErrorCatcherConfigResponse": {
      "description": "Configuration detail of a error catch task",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description intended to give more business context about the error catcher config."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "An error catcher id is string representation for the error catcher config. Within a workflow, error_catcher_id uniquely identifies an error catcher config among all error catcher configs for the workflow"
        },
        "errorCatcherNumber": {
          "type": "string",
          "description": "A number to uniquely identify each error catcher config within the workflow on UI."
        },
        "label": {
          "type": "string",
          "description": "Optional. The user created label for a particular error catcher. Optional."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCoordinateResponse",
          "description": "Optional. Informs the front-end application where to draw this error catcher config on the UI."
        },
        "startErrorTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaNextTaskResponse"
          },
          "description": "The set of start tasks that are to be executed for the error catch flow"
        }
      },
      "type": "object",
      "required": [
        "description",
        "errorCatcherId",
        "errorCatcherNumber",
        "label",
        "position",
        "startErrorTasks"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaEventParameter": {
      "description": "This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaValueType",
          "description": "Values for the defined keys. Each value can either be string, int, double or any proto message."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaEventParameterResponse": {
      "description": "This message is used for processing and persisting (when applicable) key value pair parameters for each event in the event bus.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaValueTypeResponse",
          "description": "Values for the defined keys. Each value can either be string, int, double or any proto message."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaFailurePolicy": {
      "description": "Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).",
      "properties": {
        "intervalTime": {
          "type": "string",
          "description": "Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed."
        },
        "retryStrategy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaFailurePolicyRetryStrategy",
          "description": "Defines what happens to the task upon failure."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaFailurePolicyResponse": {
      "description": "Policy that defines the task retry logic and failure type. If no FailurePolicy is defined for a task, all its dependent tasks will not be executed (i.e, a `retry_strategy` of NONE will be applied).",
      "properties": {
        "intervalTime": {
          "type": "string",
          "description": "Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the initial interval in seconds for backoff."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Required if retry_strategy is FIXED_INTERVAL or LINEAR/EXPONENTIAL_BACKOFF/RESTART_INTEGRATION_WITH_BACKOFF. Defines the number of times the task will be retried if failed."
        },
        "retryStrategy": {
          "type": "string",
          "description": "Defines what happens to the task upon failure."
        }
      },
      "type": "object",
      "required": [
        "intervalTime",
        "maxRetries",
        "retryStrategy"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaFailurePolicyRetryStrategy": {
      "description": "Defines what happens to the task upon failure.",
      "type": "string",
      "enum": [
        {
          "name": "RetryStrategyUnspecified",
          "description": "UNSPECIFIED.",
          "value": "RETRY_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "Ignore",
          "description": "Ignores the failure of this task. The rest of the integration will be executed Assuming this task succeeded.",
          "value": "IGNORE"
        },
        {
          "name": "None",
          "description": "Causes a permanent failure of the task. However, if the last task(s) of event was successfully completed despite the failure of this task, it has no impact on the integration.",
          "value": "NONE"
        },
        {
          "name": "Fatal",
          "description": "Causes a permanent failure of the event. It is different from NONE because this will mark the event as FAILED by shutting down the event execution.",
          "value": "FATAL"
        },
        {
          "name": "FixedInterval",
          "description": "The task will be retried from the failed task onwards after a fixed delay. A max-retry count is required to be specified with this strategy. A jitter is added to each exponential interval so that concurrently failing tasks of the same type do not end up retrying after the exact same exponential interval. max_retries and interval_in_seconds must be specified.",
          "value": "FIXED_INTERVAL"
        },
        {
          "name": "LinearBackoff",
          "description": "The task will be retried from the failed task onwards after a fixed delay that linearly increases with each retry attempt. A jitter is added to each exponential interval so that concurrently failing tasks of the same type do not end up retrying after the exact same exponential interval. A max-retry count is required to be specified with this strategy. max_retries and interval_in_seconds must be specified.",
          "value": "LINEAR_BACKOFF"
        },
        {
          "name": "ExponentialBackoff",
          "description": "The task will be retried after an exponentially increasing period of time with each failure. A jitter is added to each exponential interval so that concurrently failing tasks of the same type do not end up retrying after the exact same exponential interval. A max-retry count is required to be specified with this strategy. `max_retries` and `interval_in_seconds` must be specified.",
          "value": "EXPONENTIAL_BACKOFF"
        },
        {
          "name": "RestartIntegrationWithBackoff",
          "description": "The entire integration will be restarted with the initial parameters that were set when the event was fired. A max-retry count is required to be specified with this strategy. `max_retries` and `interval_in_seconds` must be specified.",
          "value": "RESTART_INTEGRATION_WITH_BACKOFF"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntParameterArray": {
      "description": "This message only contains a field of integer array.",
      "properties": {
        "intValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer array."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntParameterArrayResponse": {
      "description": "This message only contains a field of integer array.",
      "properties": {
        "intValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer array."
        }
      },
      "type": "object",
      "required": [
        "intValues"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfig": {
      "description": "Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.",
      "properties": {
        "aggregationPeriod": {
          "type": "string",
          "description": "The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours."
        },
        "alertThreshold": {
          "type": "integer",
          "description": "For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired."
        },
        "disableAlert": {
          "type": "boolean",
          "description": "Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert."
        },
        "displayName": {
          "type": "string",
          "description": "Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration."
        },
        "durationThreshold": {
          "type": "string",
          "description": "Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger."
        },
        "metricType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigMetricType",
          "description": "The type of metric."
        },
        "onlyFinalAttempt": {
          "type": "boolean",
          "description": "For either events or tasks, depending on the type of alert, count only final attempts, not retries."
        },
        "thresholdType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigThresholdType",
          "description": "The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired."
        },
        "thresholdValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigThresholdValue",
          "description": "The metric value, above or below which the alert should be triggered."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigMetricType": {
      "description": "The type of metric.",
      "type": "string",
      "enum": [
        {
          "name": "MetricTypeUnspecified",
          "description": "The default value. Metric type should always be set to one of the other non-default values, otherwise it will result in an INVALID_ARGUMENT error.",
          "value": "METRIC_TYPE_UNSPECIFIED"
        },
        {
          "name": "EventErrorRate",
          "description": "Specifies alerting on the rate of errors for the enclosing integration.",
          "value": "EVENT_ERROR_RATE"
        },
        {
          "name": "EventWarningRate",
          "description": "Specifies alerting on the rate of warnings for the enclosing integration. Warnings use the same enum values as errors.",
          "value": "EVENT_WARNING_RATE"
        },
        {
          "name": "TaskErrorRate",
          "description": "Specifies alerting on the rate of errors for any task in the enclosing integration.",
          "value": "TASK_ERROR_RATE"
        },
        {
          "name": "TaskWarningRate",
          "description": "Specifies alerting on the rate of warnings for any task in the enclosing integration.",
          "value": "TASK_WARNING_RATE"
        },
        {
          "name": "TaskRate",
          "description": "Specifies alerting on the rate of executions over all tasks in the enclosing integration.",
          "value": "TASK_RATE"
        },
        {
          "name": "EventRate",
          "description": "Specifies alerting on the number of events executed in the given aggregation_period.",
          "value": "EVENT_RATE"
        },
        {
          "name": "EventAverageDuration",
          "description": "Specifies alerting on the average duration of executions for this integration.",
          "value": "EVENT_AVERAGE_DURATION"
        },
        {
          "name": "EventPercentileDuration",
          "description": "Specifies alerting on the duration value of a particular percentile of integration executions. E.g. If 10% or more of the integration executions have durations above 5 seconds, alert.",
          "value": "EVENT_PERCENTILE_DURATION"
        },
        {
          "name": "TaskAverageDuration",
          "description": "Specifies alerting on the average duration of any task in the enclosing integration,",
          "value": "TASK_AVERAGE_DURATION"
        },
        {
          "name": "TaskPercentileDuration",
          "description": "Specifies alerting on the duration value of a particular percentile of any task executions within the enclosing integration. E.g. If 10% or more of the task executions in the integration have durations above 5 seconds, alert.",
          "value": "TASK_PERCENTILE_DURATION"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigResponse": {
      "description": "Message to be used to configure custom alerting in the {@code EventConfig} protos for an event.",
      "properties": {
        "aggregationPeriod": {
          "type": "string",
          "description": "The period over which the metric value should be aggregated and evaluated. Format is , where integer should be a positive integer and unit should be one of (s,m,h,d,w) meaning (second, minute, hour, day, week). For an EXPECTED_MIN threshold, this aggregation_period must be lesser than 24 hours."
        },
        "alertThreshold": {
          "type": "integer",
          "description": "For how many contiguous aggregation periods should the expected min or max be violated for the alert to be fired."
        },
        "disableAlert": {
          "type": "boolean",
          "description": "Set to false by default. When set to true, the metrics are not aggregated or pushed to Monarch for this integration alert."
        },
        "displayName": {
          "type": "string",
          "description": "Name of the alert. This will be displayed in the alert subject. If set, this name should be unique within the scope of the integration."
        },
        "durationThreshold": {
          "type": "string",
          "description": "Should be specified only for *AVERAGE_DURATION and *PERCENTILE_DURATION metrics. This member should be used to specify what duration value the metrics should exceed for the alert to trigger."
        },
        "metricType": {
          "type": "string",
          "description": "The type of metric."
        },
        "onlyFinalAttempt": {
          "type": "boolean",
          "description": "For either events or tasks, depending on the type of alert, count only final attempts, not retries."
        },
        "thresholdType": {
          "type": "string",
          "description": "The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired."
        },
        "thresholdValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigThresholdValueResponse",
          "description": "The metric value, above or below which the alert should be triggered."
        }
      },
      "type": "object",
      "required": [
        "aggregationPeriod",
        "alertThreshold",
        "disableAlert",
        "displayName",
        "durationThreshold",
        "metricType",
        "onlyFinalAttempt",
        "thresholdType",
        "thresholdValue"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigThresholdType": {
      "description": "The threshold type, whether lower(expected_min) or upper(expected_max), for which this alert is being configured. If value falls below expected_min or exceeds expected_max, an alert will be fired.",
      "type": "string",
      "enum": [
        {
          "name": "ThresholdTypeUnspecified",
          "description": "Default.",
          "value": "THRESHOLD_TYPE_UNSPECIFIED"
        },
        {
          "name": "ExpectedMin",
          "description": "Note that this field will only trigger alerts if the integration specifying it runs at least once in 24 hours (which is our in-memory retention period for monarch streams). Also note that `aggregation_period` for this alert configuration must be less than 24 hours. Min value threshold.",
          "value": "EXPECTED_MIN"
        },
        {
          "name": "ExpectedMax",
          "description": "Max value threshold.",
          "value": "EXPECTED_MAX"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigThresholdValue": {
      "description": "The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig.",
      "properties": {
        "absolute": {
          "type": "string",
          "description": "Absolute value threshold."
        },
        "percentage": {
          "type": "integer",
          "description": "Percentage threshold."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigThresholdValueResponse": {
      "description": "The threshold value of the metric, above or below which the alert should be triggered. See EventAlertConfig or TaskAlertConfig for the different alert metric types in each case. For the *RATE metrics, one or both of these fields may be set. Zero is the default value and can be left at that. For *PERCENTILE_DURATION metrics, one or both of these fields may be set, and also, the duration threshold value should be specified in the threshold_duration_ms member below. For *AVERAGE_DURATION metrics, these fields should not be set at all. A different member, threshold_duration_ms, must be set in the EventAlertConfig or the TaskAlertConfig.",
      "properties": {
        "absolute": {
          "type": "string",
          "description": "Absolute value threshold."
        },
        "percentage": {
          "type": "integer",
          "description": "Percentage threshold."
        }
      },
      "type": "object",
      "required": [
        "absolute",
        "percentage"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameter": {
      "description": "Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.",
      "properties": {
        "dataType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterDataType",
          "description": "Type of the parameter."
        },
        "defaultValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaValueType",
          "description": "Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object."
        },
        "displayName": {
          "type": "string",
          "description": "The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is \"foo.bar.myName\", then the name would be \"myName\"."
        },
        "inputOutputType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterInputOutputType",
          "description": "Specifies the input/output type for the parameter."
        },
        "isTransient": {
          "type": "boolean",
          "description": "Whether this parameter is a transient parameter."
        },
        "jsonSchema": {
          "type": "string",
          "description": "This schema will be used to validate runtime JSON-typed values of this parameter."
        },
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition."
        },
        "producer": {
          "type": "string",
          "description": "The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param."
        },
        "searchable": {
          "type": "boolean",
          "description": "Searchable in the execution log or not."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterDataType": {
      "description": "Type of the parameter.",
      "type": "string",
      "enum": [
        {
          "name": "IntegrationParameterDataTypeUnspecified",
          "description": "Unspecified.",
          "value": "INTEGRATION_PARAMETER_DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "StringValue",
          "description": "String.",
          "value": "STRING_VALUE"
        },
        {
          "name": "IntValue",
          "description": "Integer.",
          "value": "INT_VALUE"
        },
        {
          "name": "DoubleValue",
          "description": "Double Number.",
          "value": "DOUBLE_VALUE"
        },
        {
          "name": "BooleanValue",
          "description": "Boolean.",
          "value": "BOOLEAN_VALUE"
        },
        {
          "name": "StringArray",
          "description": "String Array.",
          "value": "STRING_ARRAY"
        },
        {
          "name": "IntArray",
          "description": "Integer Array.",
          "value": "INT_ARRAY"
        },
        {
          "name": "DoubleArray",
          "description": "Double Number Array.",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "BooleanArray",
          "description": "Boolean Array.",
          "value": "BOOLEAN_ARRAY"
        },
        {
          "name": "JsonValue",
          "description": "Json.",
          "value": "JSON_VALUE"
        },
        {
          "name": "ProtoValue",
          "description": "Proto Value (Internal use only).",
          "value": "PROTO_VALUE"
        },
        {
          "name": "ProtoArray",
          "description": "Proto Array (Internal use only).",
          "value": "PROTO_ARRAY"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterInputOutputType": {
      "description": "Specifies the input/output type for the parameter.",
      "type": "string",
      "enum": [
        {
          "name": "InOutTypeUnspecified",
          "description": "Default.",
          "value": "IN_OUT_TYPE_UNSPECIFIED"
        },
        {
          "name": "In",
          "description": "Input parameters for the integration. EventBus validates that these parameters exist in the integrations before execution.",
          "value": "IN"
        },
        {
          "name": "Out",
          "description": "Output Parameters for the integration. EventBus will only return the integration parameters tagged with OUT in the response back.",
          "value": "OUT"
        },
        {
          "name": "InOut",
          "description": "Input and Output Parameters. These can be used as both input and output. EventBus will validate for the existence of these parameters before execution and will also return this parameter back in the response.",
          "value": "IN_OUT"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterResponse": {
      "description": "Integration Parameter is defined in the integration config and are used to provide information about data types of the expected parameters and provide any default values if needed. They can also be used to add custom attributes. These are static in nature and should not be used for dynamic event definition.",
      "properties": {
        "dataType": {
          "type": "string",
          "description": "Type of the parameter."
        },
        "defaultValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaValueTypeResponse",
          "description": "Default values for the defined keys. Each value can either be string, int, double or any proto message or a serialized object."
        },
        "displayName": {
          "type": "string",
          "description": "The name (without prefix) to be displayed in the UI for this parameter. E.g. if the key is \"foo.bar.myName\", then the name would be \"myName\"."
        },
        "inputOutputType": {
          "type": "string",
          "description": "Specifies the input/output type for the parameter."
        },
        "isTransient": {
          "type": "boolean",
          "description": "Whether this parameter is a transient parameter."
        },
        "jsonSchema": {
          "type": "string",
          "description": "This schema will be used to validate runtime JSON-typed values of this parameter."
        },
        "key": {
          "type": "string",
          "description": "Key is used to retrieve the corresponding parameter value. This should be unique for a given fired event. These parameters must be predefined in the integration definition."
        },
        "producer": {
          "type": "string",
          "description": "The identifier of the node (TaskConfig/TriggerConfig) this parameter was produced by, if it is a transient param or a copy of an input param."
        },
        "searchable": {
          "type": "boolean",
          "description": "Searchable in the execution log or not."
        }
      },
      "type": "object",
      "required": [
        "dataType",
        "defaultValue",
        "displayName",
        "inputOutputType",
        "isTransient",
        "jsonSchema",
        "key",
        "producer",
        "searchable"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaJwt": {
      "description": "Represents JSON web token(JWT), which is a compact, URL-safe means of representing claims to be transferred between two parties, enabling the claims to be digitally signed or integrity protected.",
      "properties": {
        "jwt": {
          "type": "string",
          "description": "The token calculated by the header, payload and signature."
        },
        "jwtHeader": {
          "type": "string",
          "description": "Identifies which algorithm is used to generate the signature."
        },
        "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."
        },
        "secret": {
          "type": "string",
          "description": "User's pre-shared secret to sign the token."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaJwtResponse": {
      "description": "Represents JSON web token(JWT), which is a compact, URL-safe means of representing claims to be transferred between two parties, enabling the claims to be digitally signed or integrity protected.",
      "properties": {
        "jwt": {
          "type": "string",
          "description": "The token calculated by the header, payload and signature."
        },
        "jwtHeader": {
          "type": "string",
          "description": "Identifies which algorithm is used to generate the signature."
        },
        "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."
        },
        "secret": {
          "type": "string",
          "description": "User's pre-shared secret to sign the token."
        }
      },
      "type": "object",
      "required": [
        "jwt",
        "jwtHeader",
        "jwtPayload",
        "secret"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaMockConfig": {
      "description": "The configuration for mocking of a task during test execution Next available id: 4",
      "properties": {
        "failedExecutions": {
          "type": "string",
          "description": "Optional. Number of times the given task should fail for failure mock strategy"
        },
        "mockStrategy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaMockConfigMockStrategy",
          "description": "Mockstrategy defines how the particular task should be mocked during test execution"
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaEventParameter"
          },
          "description": "Optional. List of key-value pairs for specific mock strategy"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaMockConfigMockStrategy": {
      "description": "Mockstrategy defines how the particular task should be mocked during test execution",
      "type": "string",
      "enum": [
        {
          "name": "MockStrategyUnspecified",
          "description": "This should never be used to annotate a field",
          "value": "MOCK_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "NoMockStrategy",
          "description": "Execute actual task",
          "value": "NO_MOCK_STRATEGY"
        },
        {
          "name": "SpecificMockStrategy",
          "description": "Don't execute actual task, instead use the values specified by user for output of the task",
          "value": "SPECIFIC_MOCK_STRATEGY"
        },
        {
          "name": "FailureMockStrategy",
          "description": "Don't execute actual task, instead return task failure",
          "value": "FAILURE_MOCK_STRATEGY"
        },
        {
          "name": "SkipMockStrategy",
          "description": "Don't execute actual task, instead mark it as successful",
          "value": "SKIP_MOCK_STRATEGY"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaMockConfigResponse": {
      "description": "The configuration for mocking of a task during test execution Next available id: 4",
      "properties": {
        "failedExecutions": {
          "type": "string",
          "description": "Optional. Number of times the given task should fail for failure mock strategy"
        },
        "mockStrategy": {
          "type": "string",
          "description": "Mockstrategy defines how the particular task should be mocked during test execution"
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaEventParameterResponse"
          },
          "description": "Optional. List of key-value pairs for specific mock strategy"
        }
      },
      "type": "object",
      "required": [
        "failedExecutions",
        "mockStrategy",
        "parameters"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaNextTask": {
      "description": "The task that is next in line to be executed, if the condition specified evaluated to true.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "Standard filter expression for this task to become an eligible next task."
        },
        "description": {
          "type": "string",
          "description": "User-provided description intended to give additional business context about the task."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided label that is attached to this edge in the UI."
        },
        "taskConfigId": {
          "type": "string",
          "description": "ID of the next task."
        },
        "taskId": {
          "type": "string",
          "description": "Task number of the next task."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaNextTaskResponse": {
      "description": "The task that is next in line to be executed, if the condition specified evaluated to true.",
      "properties": {
        "condition": {
          "type": "string",
          "description": "Standard filter expression for this task to become an eligible next task."
        },
        "description": {
          "type": "string",
          "description": "User-provided description intended to give additional business context about the task."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided label that is attached to this edge in the UI."
        },
        "taskConfigId": {
          "type": "string",
          "description": "ID of the next task."
        },
        "taskId": {
          "type": "string",
          "description": "Task number of the next task."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "description",
        "displayName",
        "taskConfigId",
        "taskId"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2AuthorizationCode": {
      "description": "The OAuth Type where the client sends request with the client id and requested scopes to auth endpoint. User sees a consent screen and auth code is received at specified redirect url afterwards. The auth code is then combined with the client id and secret and sent to the token endpoint in exchange for the access and refresh token. The refresh token can be used to fetch new access tokens.",
      "properties": {
        "accessToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAccessToken",
          "description": "The access token received from the token endpoint."
        },
        "applyReauthPolicy": {
          "type": "boolean",
          "description": "Indicates if the user has opted in Google Reauth Policy. If opted in, the refresh token will be valid for 20 hours, after which time users must re-authenticate in order to obtain a new one."
        },
        "authCode": {
          "type": "string",
          "description": "The Auth Code that is used to initially retrieve the access token."
        },
        "authEndpoint": {
          "type": "string",
          "description": "The auth url endpoint to send the auth code request to."
        },
        "authParams": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMap",
          "description": "The auth parameters sent along with the auth code request."
        },
        "clientId": {
          "type": "string",
          "description": "The client's id."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client's secret."
        },
        "requestType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2AuthorizationCodeRequestType",
          "description": "Represent how to pass parameters to fetch access token"
        },
        "scope": {
          "type": "string",
          "description": "A space-delimited list of requested scope permissions."
        },
        "tokenEndpoint": {
          "type": "string",
          "description": "The token url endpoint to send the token request to."
        },
        "tokenParams": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMap",
          "description": "The token parameters sent along with the token request."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2AuthorizationCodeRequestType": {
      "description": "Represent how to pass parameters to fetch access token",
      "type": "string",
      "enum": [
        {
          "name": "RequestTypeUnspecified",
          "description": "Unspecified request type",
          "value": "REQUEST_TYPE_UNSPECIFIED"
        },
        {
          "name": "RequestBody",
          "description": "To pass all the parameters in post body.",
          "value": "REQUEST_BODY"
        },
        {
          "name": "QueryParameters",
          "description": "To pass all the parameters as a part of query parameter.",
          "value": "QUERY_PARAMETERS"
        },
        {
          "name": "EncodedHeader",
          "description": "To pass client id and client secret as base 64 encoding of client_id:client_password and rest parameters in post body.",
          "value": "ENCODED_HEADER"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2AuthorizationCodeResponse": {
      "description": "The OAuth Type where the client sends request with the client id and requested scopes to auth endpoint. User sees a consent screen and auth code is received at specified redirect url afterwards. The auth code is then combined with the client id and secret and sent to the token endpoint in exchange for the access and refresh token. The refresh token can be used to fetch new access tokens.",
      "properties": {
        "accessToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAccessTokenResponse",
          "description": "The access token received from the token endpoint."
        },
        "applyReauthPolicy": {
          "type": "boolean",
          "description": "Indicates if the user has opted in Google Reauth Policy. If opted in, the refresh token will be valid for 20 hours, after which time users must re-authenticate in order to obtain a new one."
        },
        "authCode": {
          "type": "string",
          "description": "The Auth Code that is used to initially retrieve the access token."
        },
        "authEndpoint": {
          "type": "string",
          "description": "The auth url endpoint to send the auth code request to."
        },
        "authParams": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapResponse",
          "description": "The auth parameters sent along with the auth code request."
        },
        "clientId": {
          "type": "string",
          "description": "The client's id."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client's secret."
        },
        "requestType": {
          "type": "string",
          "description": "Represent how to pass parameters to fetch access token"
        },
        "scope": {
          "type": "string",
          "description": "A space-delimited list of requested scope permissions."
        },
        "tokenEndpoint": {
          "type": "string",
          "description": "The token url endpoint to send the token request to."
        },
        "tokenParams": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapResponse",
          "description": "The token parameters sent along with the token request."
        }
      },
      "type": "object",
      "required": [
        "accessToken",
        "applyReauthPolicy",
        "authCode",
        "authEndpoint",
        "authParams",
        "clientId",
        "clientSecret",
        "requestType",
        "scope",
        "tokenEndpoint",
        "tokenParams"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2ClientCredentials": {
      "description": "For client credentials grant, the client sends a POST request with grant_type as 'client_credentials' to the authorization server. The authorization server will respond with a JSON object containing the access token.",
      "properties": {
        "accessToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAccessToken",
          "description": "Access token fetched from the authorization server."
        },
        "clientId": {
          "type": "string",
          "description": "The client's ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client's secret."
        },
        "requestType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2ClientCredentialsRequestType",
          "description": "Represent how to pass parameters to fetch access token"
        },
        "scope": {
          "type": "string",
          "description": "A space-delimited list of requested scope permissions."
        },
        "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."
        },
        "tokenParams": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMap",
          "description": "Token parameters for the auth request."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2ClientCredentialsRequestType": {
      "description": "Represent how to pass parameters to fetch access token",
      "type": "string",
      "enum": [
        {
          "name": "RequestTypeUnspecified",
          "description": "Unspecified request type",
          "value": "REQUEST_TYPE_UNSPECIFIED"
        },
        {
          "name": "RequestBody",
          "description": "To pass all the parameters in post body.",
          "value": "REQUEST_BODY"
        },
        {
          "name": "QueryParameters",
          "description": "To pass all the parameters as a part of query parameter.",
          "value": "QUERY_PARAMETERS"
        },
        {
          "name": "EncodedHeader",
          "description": "To pass client id and client secret as base 64 encoding of client_id:client_password and rest parameters in post body.",
          "value": "ENCODED_HEADER"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2ClientCredentialsResponse": {
      "description": "For client credentials grant, the client sends a POST request with grant_type as 'client_credentials' to the authorization server. The authorization server will respond with a JSON object containing the access token.",
      "properties": {
        "accessToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAccessTokenResponse",
          "description": "Access token fetched from the authorization server."
        },
        "clientId": {
          "type": "string",
          "description": "The client's ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client's secret."
        },
        "requestType": {
          "type": "string",
          "description": "Represent how to pass parameters to fetch access token"
        },
        "scope": {
          "type": "string",
          "description": "A space-delimited list of requested scope permissions."
        },
        "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."
        },
        "tokenParams": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapResponse",
          "description": "Token parameters for the auth request."
        }
      },
      "type": "object",
      "required": [
        "accessToken",
        "clientId",
        "clientSecret",
        "requestType",
        "scope",
        "tokenEndpoint",
        "tokenParams"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2ResourceOwnerCredentials": {
      "description": "For resource owner credentials grant, the client will ask the user for their authorization credentials (ususally a username and password) and send a POST request to the authorization server. The authorization server will respond with a JSON object containing the access token.",
      "properties": {
        "accessToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAccessToken",
          "description": "Access token fetched from the authorization server."
        },
        "clientId": {
          "type": "string",
          "description": "The client's ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client's secret."
        },
        "password": {
          "type": "string",
          "description": "The user's password."
        },
        "requestType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaOAuth2ResourceOwnerCredentialsRequestType",
          "description": "Represent how to pass parameters to fetch access token"
        },
        "scope": {
          "type": "string",
          "description": "A space-delimited list of requested scope permissions."
        },
        "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."
        },
        "tokenParams": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMap",
          "description": "Token parameters for the auth request."
        },
        "username": {
          "type": "string",
          "description": "The user's username."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2ResourceOwnerCredentialsRequestType": {
      "description": "Represent how to pass parameters to fetch access token",
      "type": "string",
      "enum": [
        {
          "name": "RequestTypeUnspecified",
          "description": "Unspecified request type",
          "value": "REQUEST_TYPE_UNSPECIFIED"
        },
        {
          "name": "RequestBody",
          "description": "To pass all the parameters in post body.",
          "value": "REQUEST_BODY"
        },
        {
          "name": "QueryParameters",
          "description": "To pass all the parameters as a part of query parameter.",
          "value": "QUERY_PARAMETERS"
        },
        {
          "name": "EncodedHeader",
          "description": "To pass client id and client secret as base 64 encoding of client_id:client_password and rest parameters in post body.",
          "value": "ENCODED_HEADER"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOAuth2ResourceOwnerCredentialsResponse": {
      "description": "For resource owner credentials grant, the client will ask the user for their authorization credentials (ususally a username and password) and send a POST request to the authorization server. The authorization server will respond with a JSON object containing the access token.",
      "properties": {
        "accessToken": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAccessTokenResponse",
          "description": "Access token fetched from the authorization server."
        },
        "clientId": {
          "type": "string",
          "description": "The client's ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client's secret."
        },
        "password": {
          "type": "string",
          "description": "The user's password."
        },
        "requestType": {
          "type": "string",
          "description": "Represent how to pass parameters to fetch access token"
        },
        "scope": {
          "type": "string",
          "description": "A space-delimited list of requested scope permissions."
        },
        "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."
        },
        "tokenParams": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapResponse",
          "description": "Token parameters for the auth request."
        },
        "username": {
          "type": "string",
          "description": "The user's username."
        }
      },
      "type": "object",
      "required": [
        "accessToken",
        "clientId",
        "clientSecret",
        "password",
        "requestType",
        "scope",
        "tokenEndpoint",
        "tokenParams",
        "username"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOidcToken": {
      "description": "OIDC Token",
      "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."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The service account email to be used as the identity for the token."
        },
        "token": {
          "type": "string",
          "description": "ID token obtained for the service account"
        },
        "tokenExpireTime": {
          "type": "string",
          "description": "The approximate time until the token retrieved is valid."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaOidcTokenResponse": {
      "description": "OIDC Token",
      "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."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The service account email to be used as the identity for the token."
        },
        "token": {
          "type": "string",
          "description": "ID token obtained for the service account"
        },
        "tokenExpireTime": {
          "type": "string",
          "description": "The approximate time until the token retrieved is valid."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "serviceAccountEmail",
        "token",
        "tokenExpireTime"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaParameterMap": {
      "description": "A generic multi-map that holds key value pairs. They keys and values can be of any type, unless specified.",
      "properties": {
        "entries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapEntry"
          },
          "description": "A list of parameter map entries."
        },
        "keyType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapKeyType",
          "description": "Option to specify key type for all entries of the map. If provided then field types for all entries must conform to this."
        },
        "valueType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapValueType",
          "description": "Option to specify value type for all entries of the map. If provided then field types for all entries must conform to this."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaParameterMapEntry": {
      "description": "Entry is a pair of key and value.",
      "properties": {
        "key": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapField",
          "description": "Key of the map entry."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapField",
          "description": "Value of the map entry."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaParameterMapEntryResponse": {
      "description": "Entry is a pair of key and value.",
      "properties": {
        "key": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapFieldResponse",
          "description": "Key of the map entry."
        },
        "value": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapFieldResponse",
          "description": "Value of the map entry."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaParameterMapField": {
      "description": "Field represents either the key or value in an entry.",
      "properties": {
        "literalValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaValueType",
          "description": "Passing a literal value."
        },
        "referenceKey": {
          "type": "string",
          "description": "Referencing one of the Integration variables."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaParameterMapFieldResponse": {
      "description": "Field represents either the key or value in an entry.",
      "properties": {
        "literalValue": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaValueTypeResponse",
          "description": "Passing a literal value."
        },
        "referenceKey": {
          "type": "string",
          "description": "Referencing one of the Integration variables."
        }
      },
      "type": "object",
      "required": [
        "literalValue",
        "referenceKey"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaParameterMapKeyType": {
      "description": "Option to specify key type for all entries of the map. If provided then field types for all entries must conform to this.",
      "type": "string",
      "enum": [
        {
          "name": "IntegrationParameterDataTypeUnspecified",
          "description": "Unspecified.",
          "value": "INTEGRATION_PARAMETER_DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "StringValue",
          "description": "String.",
          "value": "STRING_VALUE"
        },
        {
          "name": "IntValue",
          "description": "Integer.",
          "value": "INT_VALUE"
        },
        {
          "name": "DoubleValue",
          "description": "Double Number.",
          "value": "DOUBLE_VALUE"
        },
        {
          "name": "BooleanValue",
          "description": "Boolean.",
          "value": "BOOLEAN_VALUE"
        },
        {
          "name": "StringArray",
          "description": "String Array.",
          "value": "STRING_ARRAY"
        },
        {
          "name": "IntArray",
          "description": "Integer Array.",
          "value": "INT_ARRAY"
        },
        {
          "name": "DoubleArray",
          "description": "Double Number Array.",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "BooleanArray",
          "description": "Boolean Array.",
          "value": "BOOLEAN_ARRAY"
        },
        {
          "name": "JsonValue",
          "description": "Json.",
          "value": "JSON_VALUE"
        },
        {
          "name": "ProtoValue",
          "description": "Proto Value (Internal use only).",
          "value": "PROTO_VALUE"
        },
        {
          "name": "ProtoArray",
          "description": "Proto Array (Internal use only).",
          "value": "PROTO_ARRAY"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaParameterMapResponse": {
      "description": "A generic multi-map that holds key value pairs. They keys and values can be of any type, unless specified.",
      "properties": {
        "entries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaParameterMapEntryResponse"
          },
          "description": "A list of parameter map entries."
        },
        "keyType": {
          "type": "string",
          "description": "Option to specify key type for all entries of the map. If provided then field types for all entries must conform to this."
        },
        "valueType": {
          "type": "string",
          "description": "Option to specify value type for all entries of the map. If provided then field types for all entries must conform to this."
        }
      },
      "type": "object",
      "required": [
        "entries",
        "keyType",
        "valueType"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaParameterMapValueType": {
      "description": "Option to specify value type for all entries of the map. If provided then field types for all entries must conform to this.",
      "type": "string",
      "enum": [
        {
          "name": "IntegrationParameterDataTypeUnspecified",
          "description": "Unspecified.",
          "value": "INTEGRATION_PARAMETER_DATA_TYPE_UNSPECIFIED"
        },
        {
          "name": "StringValue",
          "description": "String.",
          "value": "STRING_VALUE"
        },
        {
          "name": "IntValue",
          "description": "Integer.",
          "value": "INT_VALUE"
        },
        {
          "name": "DoubleValue",
          "description": "Double Number.",
          "value": "DOUBLE_VALUE"
        },
        {
          "name": "BooleanValue",
          "description": "Boolean.",
          "value": "BOOLEAN_VALUE"
        },
        {
          "name": "StringArray",
          "description": "String Array.",
          "value": "STRING_ARRAY"
        },
        {
          "name": "IntArray",
          "description": "Integer Array.",
          "value": "INT_ARRAY"
        },
        {
          "name": "DoubleArray",
          "description": "Double Number Array.",
          "value": "DOUBLE_ARRAY"
        },
        {
          "name": "BooleanArray",
          "description": "Boolean Array.",
          "value": "BOOLEAN_ARRAY"
        },
        {
          "name": "JsonValue",
          "description": "Json.",
          "value": "JSON_VALUE"
        },
        {
          "name": "ProtoValue",
          "description": "Proto Value (Internal use only).",
          "value": "PROTO_VALUE"
        },
        {
          "name": "ProtoArray",
          "description": "Proto Array (Internal use only).",
          "value": "PROTO_ARRAY"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaServiceAccountCredentials": {
      "description": "Represents the service account which can be used to generate access token for authenticating the service call.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "A space-delimited list of requested scope permissions."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Name of the service account that has the permission to make the request."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaServiceAccountCredentialsResponse": {
      "description": "Represents the service account which can be used to generate access token for authenticating the service call.",
      "properties": {
        "scope": {
          "type": "string",
          "description": "A space-delimited list of requested scope permissions."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Name of the service account that has the permission to make the request."
        }
      },
      "type": "object",
      "required": [
        "scope",
        "serviceAccount"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaStringParameterArray": {
      "description": "This message only contains a field of string array.",
      "properties": {
        "stringValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "String array."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaStringParameterArrayResponse": {
      "description": "This message only contains a field of string array.",
      "properties": {
        "stringValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "String array."
        }
      },
      "type": "object",
      "required": [
        "stringValues"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaSuccessPolicy": {
      "description": "Policy that dictates the behavior for the task after it completes successfully.",
      "properties": {
        "finalState": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaSuccessPolicyFinalState",
          "description": "State to which the execution snapshot status will be set if the task succeeds."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaSuccessPolicyFinalState": {
      "description": "State to which the execution snapshot status will be set if the task succeeds.",
      "type": "string",
      "enum": [
        {
          "name": "FinalStateUnspecified",
          "description": "UNSPECIFIED.",
          "value": "FINAL_STATE_UNSPECIFIED"
        },
        {
          "name": "Succeeded",
          "description": "The default behavior, where successful tasks will be marked as SUCCEEDED.",
          "value": "SUCCEEDED"
        },
        {
          "name": "Suspended",
          "description": "Sets the state to SUSPENDED after executing. This is required for SuspensionTask; event execution will continue once the user calls ResolveSuspensions with the event_execution_info_id and the task number.",
          "value": "SUSPENDED"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaSuccessPolicyResponse": {
      "description": "Policy that dictates the behavior for the task after it completes successfully.",
      "properties": {
        "finalState": {
          "type": "string",
          "description": "State to which the execution snapshot status will be set if the task succeeds."
        }
      },
      "type": "object",
      "required": [
        "finalState"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTaskConfig": {
      "description": "The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description intended to give additional business context about the task."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-provided label that is attached to this TaskConfig in the UI."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task"
        },
        "externalTaskType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTaskConfigExternalTaskType",
          "description": "Optional. External task type of the task"
        },
        "failurePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaFailurePolicy",
          "description": "Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.)."
        },
        "jsonValidationOption": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTaskConfigJsonValidationOption",
          "description": "Optional. If set, overrides the option configured in the Task implementation class."
        },
        "nextTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaNextTask"
          },
          "description": "Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true."
        },
        "nextTasksExecutionPolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTaskConfigNextTasksExecutionPolicy",
          "description": "Optional. The policy dictating the execution of the next set of tasks for the current task."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The customized parameters the user can pass to this task."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCoordinate",
          "description": "Optional. Informs the front-end application where to draw this error catcher config on the UI."
        },
        "successPolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaSuccessPolicy",
          "description": "Optional. Determines what action to take upon successful task completion."
        },
        "synchronousCallFailurePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaFailurePolicy",
          "description": "Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post)."
        },
        "task": {
          "type": "string",
          "description": "Optional. The name for the task."
        },
        "taskExecutionStrategy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTaskConfigTaskExecutionStrategy",
          "description": "Optional. The policy dictating the execution strategy of this task."
        },
        "taskId": {
          "type": "string",
          "description": "The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`)."
        },
        "taskTemplate": {
          "type": "string",
          "description": "Optional. Used to define task-template name if task is of type task-template"
        }
      },
      "type": "object",
      "required": [
        "taskId"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTaskConfigExternalTaskType": {
      "description": "Optional. External task type of the task",
      "type": "string",
      "enum": [
        {
          "name": "ExternalTaskTypeUnspecified",
          "description": "Default value. External task type is not specified",
          "value": "EXTERNAL_TASK_TYPE_UNSPECIFIED"
        },
        {
          "name": "NormalTask",
          "description": "Tasks belongs to the normal task flows",
          "value": "NORMAL_TASK"
        },
        {
          "name": "ErrorTask",
          "description": "Task belongs to the error catch task flows",
          "value": "ERROR_TASK"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTaskConfigJsonValidationOption": {
      "description": "Optional. If set, overrides the option configured in the Task implementation class.",
      "type": "string",
      "enum": [
        {
          "name": "JsonValidationOptionUnspecified",
          "description": "As per the default behavior, no validation will be run. Will not override any option set in a Task.",
          "value": "JSON_VALIDATION_OPTION_UNSPECIFIED"
        },
        {
          "name": "Skip",
          "description": "Do not run any validation against JSON schemas.",
          "value": "SKIP"
        },
        {
          "name": "PreExecution",
          "description": "Validate all potential input JSON parameters against schemas specified in IntegrationParameter.",
          "value": "PRE_EXECUTION"
        },
        {
          "name": "PostExecution",
          "description": "Validate all potential output JSON parameters against schemas specified in IntegrationParameter.",
          "value": "POST_EXECUTION"
        },
        {
          "name": "PrePostExecution",
          "description": "Perform both PRE_EXECUTION and POST_EXECUTION validations.",
          "value": "PRE_POST_EXECUTION"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTaskConfigNextTasksExecutionPolicy": {
      "description": "Optional. The policy dictating the execution of the next set of tasks for the current task.",
      "type": "string",
      "enum": [
        {
          "name": "NextTasksExecutionPolicyUnspecified",
          "description": "Default.",
          "value": "NEXT_TASKS_EXECUTION_POLICY_UNSPECIFIED"
        },
        {
          "name": "RunAllMatch",
          "description": "Execute all the tasks that satisfy their associated condition.",
          "value": "RUN_ALL_MATCH"
        },
        {
          "name": "RunFirstMatch",
          "description": "Execute the first task that satisfies the associated condition.",
          "value": "RUN_FIRST_MATCH"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTaskConfigResponse": {
      "description": "The task configuration details. This is not the implementation of Task. There might be multiple TaskConfigs for the same Task.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description intended to give additional business context about the task."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-provided label that is attached to this TaskConfig in the UI."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task"
        },
        "externalTaskType": {
          "type": "string",
          "description": "Optional. External task type of the task"
        },
        "failurePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaFailurePolicyResponse",
          "description": "Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for asynchronous calls to Eventbus alone (Post To Queue, Schedule etc.)."
        },
        "jsonValidationOption": {
          "type": "string",
          "description": "Optional. If set, overrides the option configured in the Task implementation class."
        },
        "nextTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaNextTaskResponse"
          },
          "description": "Optional. The set of tasks that are next in line to be executed as per the execution graph defined for the parent event, specified by `event_config_id`. Each of these next tasks are executed only if the condition associated with them evaluates to true."
        },
        "nextTasksExecutionPolicy": {
          "type": "string",
          "description": "Optional. The policy dictating the execution of the next set of tasks for the current task."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The customized parameters the user can pass to this task."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCoordinateResponse",
          "description": "Optional. Informs the front-end application where to draw this error catcher config on the UI."
        },
        "successPolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaSuccessPolicyResponse",
          "description": "Optional. Determines what action to take upon successful task completion."
        },
        "synchronousCallFailurePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaFailurePolicyResponse",
          "description": "Optional. Determines the number of times the task will be retried on failure and with what retry strategy. This is applicable for synchronous calls to Eventbus alone (Post)."
        },
        "task": {
          "type": "string",
          "description": "Optional. The name for the task."
        },
        "taskExecutionStrategy": {
          "type": "string",
          "description": "Optional. The policy dictating the execution strategy of this task."
        },
        "taskId": {
          "type": "string",
          "description": "The identifier of this task within its parent event config, specified by the client. This should be unique among all the tasks belong to the same event config. We use this field as the identifier to find next tasks (via field `next_tasks.task_id`)."
        },
        "taskTemplate": {
          "type": "string",
          "description": "Optional. Used to define task-template name if task is of type task-template"
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "errorCatcherId",
        "externalTaskType",
        "failurePolicy",
        "jsonValidationOption",
        "nextTasks",
        "nextTasksExecutionPolicy",
        "parameters",
        "position",
        "successPolicy",
        "synchronousCallFailurePolicy",
        "task",
        "taskExecutionStrategy",
        "taskId",
        "taskTemplate"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTaskConfigTaskExecutionStrategy": {
      "description": "Optional. The policy dictating the execution strategy of this task.",
      "type": "string",
      "enum": [
        {
          "name": "TaskExecutionStrategyUnspecified",
          "description": "Default. If the strategy is not set explicitly, it will default to `WHEN_ALL_SUCCEED`.",
          "value": "TASK_EXECUTION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "WhenAllSucceed",
          "description": "Wait until all of its previous tasks finished execution, then verify at least one of the edge conditions is met, and execute if possible. This should be considered as WHEN_ALL_TASKS_SUCCEED.",
          "value": "WHEN_ALL_SUCCEED"
        },
        {
          "name": "WhenAnySucceed",
          "description": "Start execution as long as any of its previous tasks finished execution and the corresponding edge condition is met (since we will execute if only that succeeding edge condition is met).",
          "value": "WHEN_ANY_SUCCEED"
        },
        {
          "name": "WhenAllTasksAndConditionsSucceed",
          "description": "Wait until all of its previous tasks finished execution, then verify the all edge conditions are met and execute if possible.",
          "value": "WHEN_ALL_TASKS_AND_CONDITIONS_SUCCEED"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTestTaskConfig": {
      "description": "The task mock configuration details and assertions for functional tests. Next available id: 5",
      "properties": {
        "assertions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAssertion"
          },
          "description": "Optional. List of conditions or expressions which should be evaluated to true unless there is a bug/problem in the integration. These are evaluated one the task execution is completed as per the mock strategy in test case"
        },
        "mockConfig": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaMockConfig",
          "description": "Optional. Defines how to mock the given task during test execution"
        },
        "task": {
          "type": "string",
          "description": "This defines in the test case, the task name in integration which will be mocked by this test task config"
        },
        "taskNumber": {
          "type": "string",
          "description": "This defines in the test case, the task in integration which will be mocked by this test task config"
        }
      },
      "type": "object",
      "required": [
        "task",
        "taskNumber"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTestTaskConfigResponse": {
      "description": "The task mock configuration details and assertions for functional tests. Next available id: 5",
      "properties": {
        "assertions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaAssertionResponse"
          },
          "description": "Optional. List of conditions or expressions which should be evaluated to true unless there is a bug/problem in the integration. These are evaluated one the task execution is completed as per the mock strategy in test case"
        },
        "mockConfig": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaMockConfigResponse",
          "description": "Optional. Defines how to mock the given task during test execution"
        },
        "task": {
          "type": "string",
          "description": "This defines in the test case, the task name in integration which will be mocked by this test task config"
        },
        "taskNumber": {
          "type": "string",
          "description": "This defines in the test case, the task in integration which will be mocked by this test task config"
        }
      },
      "type": "object",
      "required": [
        "assertions",
        "mockConfig",
        "task",
        "taskNumber"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTriggerConfig": {
      "description": "Configuration detail of a trigger.",
      "properties": {
        "alertConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfig"
          },
          "description": "Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published."
        },
        "cloudSchedulerConfig": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCloudSchedulerConfig",
          "description": "Optional. Cloud Scheduler Trigger related metadata"
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description intended to give additional business context about the task."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task"
        },
        "label": {
          "type": "string",
          "description": "Optional. The user created label for a particular trigger."
        },
        "nextTasksExecutionPolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTriggerConfigNextTasksExecutionPolicy",
          "description": "Optional. Dictates how next tasks will be executed."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCoordinate",
          "description": "Optional. Informs the front-end application where to draw this error catcher config on the UI."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. \"name\" is a property for API triggers and \"subscription\" is a property for Pub/sub triggers."
        },
        "startTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaNextTask"
          },
          "description": "Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph)."
        },
        "trigger": {
          "type": "string",
          "description": "Optional. Name of the trigger. Example: \"API Trigger\", \"Cloud Pub Sub Trigger\" When set will be sent out to monitoring dashabord for tracking purpose."
        },
        "triggerId": {
          "type": "string",
          "description": "Optional. The backend trigger ID."
        },
        "triggerNumber": {
          "type": "string",
          "description": "A number to uniquely identify each trigger config within the integration on UI."
        },
        "triggerType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTriggerConfigTriggerType",
          "description": "Optional. Type of trigger"
        }
      },
      "type": "object",
      "required": [
        "triggerNumber"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTriggerConfigNextTasksExecutionPolicy": {
      "description": "Optional. Dictates how next tasks will be executed.",
      "type": "string",
      "enum": [
        {
          "name": "NextTasksExecutionPolicyUnspecified",
          "description": "Default.",
          "value": "NEXT_TASKS_EXECUTION_POLICY_UNSPECIFIED"
        },
        {
          "name": "RunAllMatch",
          "description": "Execute all the tasks that satisfy their associated condition.",
          "value": "RUN_ALL_MATCH"
        },
        {
          "name": "RunFirstMatch",
          "description": "Execute the first task that satisfies the associated condition.",
          "value": "RUN_FIRST_MATCH"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTriggerConfigResponse": {
      "description": "Configuration detail of a trigger.",
      "properties": {
        "alertConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationAlertConfigResponse"
          },
          "description": "Optional. An alert threshold configuration for the [trigger + client + integration] tuple. If these values are not specified in the trigger config, default values will be populated by the system. Note that there must be exactly one alert threshold configured per [client + trigger + integration] when published."
        },
        "cloudSchedulerConfig": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCloudSchedulerConfigResponse",
          "description": "Optional. Cloud Scheduler Trigger related metadata"
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description intended to give additional business context about the task."
        },
        "errorCatcherId": {
          "type": "string",
          "description": "Optional. Optional Error catcher id of the error catch flow which will be executed when execution error happens in the task"
        },
        "label": {
          "type": "string",
          "description": "Optional. The user created label for a particular trigger."
        },
        "nextTasksExecutionPolicy": {
          "type": "string",
          "description": "Optional. Dictates how next tasks will be executed."
        },
        "position": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCoordinateResponse",
          "description": "Optional. Informs the front-end application where to draw this error catcher config on the UI."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Configurable properties of the trigger, not to be confused with integration parameters. E.g. \"name\" is a property for API triggers and \"subscription\" is a property for Pub/sub triggers."
        },
        "startTasks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaNextTaskResponse"
          },
          "description": "Optional. Set of tasks numbers from where the integration execution is started by this trigger. If this is empty, then integration is executed with default start tasks. In the list of start tasks, none of two tasks can have direct ancestor-descendant relationships (i.e. in a same integration execution graph)."
        },
        "trigger": {
          "type": "string",
          "description": "Optional. Name of the trigger. Example: \"API Trigger\", \"Cloud Pub Sub Trigger\" When set will be sent out to monitoring dashabord for tracking purpose."
        },
        "triggerId": {
          "type": "string",
          "description": "Optional. The backend trigger ID."
        },
        "triggerNumber": {
          "type": "string",
          "description": "A number to uniquely identify each trigger config within the integration on UI."
        },
        "triggerType": {
          "type": "string",
          "description": "Optional. Type of trigger"
        }
      },
      "type": "object",
      "required": [
        "alertConfig",
        "cloudSchedulerConfig",
        "description",
        "errorCatcherId",
        "label",
        "nextTasksExecutionPolicy",
        "position",
        "properties",
        "startTasks",
        "trigger",
        "triggerId",
        "triggerNumber",
        "triggerType"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaTriggerConfigTriggerType": {
      "description": "Optional. Type of trigger",
      "type": "string",
      "enum": [
        {
          "name": "TriggerTypeUnspecified",
          "description": "Unknown.",
          "value": "TRIGGER_TYPE_UNSPECIFIED"
        },
        {
          "name": "Cron",
          "description": "Trigger by scheduled time.",
          "value": "CRON"
        },
        {
          "name": "Api",
          "description": "Trigger by API call.",
          "value": "API"
        },
        {
          "name": "SfdcChannel",
          "description": "Trigger by Salesforce Channel.",
          "value": "SFDC_CHANNEL"
        },
        {
          "name": "CloudPubsubExternal",
          "description": "Trigger by Pub/Sub external.",
          "value": "CLOUD_PUBSUB_EXTERNAL"
        },
        {
          "name": "SfdcCdcChannel",
          "description": "SFDC Channel Trigger for CDC.",
          "value": "SFDC_CDC_CHANNEL"
        },
        {
          "name": "CloudScheduler",
          "description": "Trigger by Cloud Scheduler job.",
          "value": "CLOUD_SCHEDULER"
        },
        {
          "name": "IntegrationConnectorTrigger",
          "description": "Trigger by Connector Event",
          "value": "INTEGRATION_CONNECTOR_TRIGGER"
        },
        {
          "name": "PrivateTrigger",
          "description": "Trigger for private workflow",
          "value": "PRIVATE_TRIGGER"
        }
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaUsernameAndPassword": {
      "description": "Username and password pair.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Password to be used"
        },
        "username": {
          "type": "string",
          "description": "Username to be used"
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaUsernameAndPasswordResponse": {
      "description": "Username and password pair.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Password to be used"
        },
        "username": {
          "type": "string",
          "description": "Username to be used"
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaValueType": {
      "description": "The type of the parameter.",
      "properties": {
        "booleanArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaBooleanParameterArray",
          "description": "Boolean Array."
        },
        "booleanValue": {
          "type": "boolean",
          "description": "Boolean."
        },
        "doubleArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaDoubleParameterArray",
          "description": "Double Number Array."
        },
        "doubleValue": {
          "type": "number",
          "description": "Double Number."
        },
        "intArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntParameterArray",
          "description": "Integer Array."
        },
        "intValue": {
          "type": "string",
          "description": "Integer."
        },
        "jsonValue": {
          "type": "string",
          "description": "Json."
        },
        "stringArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaStringParameterArray",
          "description": "String Array."
        },
        "stringValue": {
          "type": "string",
          "description": "String."
        }
      },
      "type": "object"
    },
    "google-native:integrations/v1alpha:GoogleCloudIntegrationsV1alphaValueTypeResponse": {
      "description": "The type of the parameter.",
      "properties": {
        "booleanArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaBooleanParameterArrayResponse",
          "description": "Boolean Array."
        },
        "booleanValue": {
          "type": "boolean",
          "description": "Boolean."
        },
        "doubleArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaDoubleParameterArrayResponse",
          "description": "Double Number Array."
        },
        "doubleValue": {
          "type": "number",
          "description": "Double Number."
        },
        "intArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntParameterArrayResponse",
          "description": "Integer Array."
        },
        "intValue": {
          "type": "string",
          "description": "Integer."
        },
        "jsonValue": {
          "type": "string",
          "description": "Json."
        },
        "stringArray": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaStringParameterArrayResponse",
          "description": "String Array."
        },
        "stringValue": {
          "type": "string",
          "description": "String."
        }
      },
      "type": "object",
      "required": [
        "booleanArray",
        "booleanValue",
        "doubleArray",
        "doubleValue",
        "intArray",
        "intValue",
        "jsonValue",
        "stringArray",
        "stringValue"
      ]
    },
    "google-native:integrations/v1alpha:TemplatesVersionDatabasePersistencePolicy": {
      "description": "Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.",
      "type": "string",
      "enum": [
        {
          "name": "DatabasePersistencePolicyUnspecified",
          "description": "Enables persistence for all execution data.",
          "value": "DATABASE_PERSISTENCE_POLICY_UNSPECIFIED"
        },
        {
          "name": "DatabasePersistenceDisabled",
          "description": "Disables persistence for all execution data.",
          "value": "DATABASE_PERSISTENCE_DISABLED"
        },
        {
          "name": "DatabasePersistenceAsync",
          "description": "Asynchronously persist all execution data.",
          "value": "DATABASE_PERSISTENCE_ASYNC"
        }
      ]
    },
    "google-native:integrations/v1alpha:TemplatesVersionStatus": {
      "description": "Optional. Generated by eventbus. User should not set it as an input.",
      "type": "string",
      "enum": [
        {
          "name": "Unknown",
          "value": "UNKNOWN"
        },
        {
          "name": "Draft",
          "value": "DRAFT"
        },
        {
          "name": "Active",
          "value": "ACTIVE"
        },
        {
          "name": "Archived",
          "value": "ARCHIVED"
        },
        {
          "name": "Snapshot",
          "value": "SNAPSHOT"
        }
      ]
    },
    "google-native:integrations/v1alpha:TestCaseDatabasePersistencePolicy": {
      "description": "Optional. Various policies for how to persist the test execution info including execution info, execution export info, execution metadata index and execution param index..",
      "type": "string",
      "enum": [
        {
          "name": "DatabasePersistencePolicyUnspecified",
          "description": "Enables persistence for all execution data.",
          "value": "DATABASE_PERSISTENCE_POLICY_UNSPECIFIED"
        },
        {
          "name": "DatabasePersistenceDisabled",
          "description": "Disables persistence for all execution data.",
          "value": "DATABASE_PERSISTENCE_DISABLED"
        },
        {
          "name": "DatabasePersistenceAsync",
          "description": "Asynchronously persist all execution data.",
          "value": "DATABASE_PERSISTENCE_ASYNC"
        }
      ]
    },
    "google-native:integrations/v1alpha:VersionDatabasePersistencePolicy": {
      "description": "Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.",
      "type": "string",
      "enum": [
        {
          "name": "DatabasePersistencePolicyUnspecified",
          "description": "Enables persistence for all execution data.",
          "value": "DATABASE_PERSISTENCE_POLICY_UNSPECIFIED"
        },
        {
          "name": "DatabasePersistenceDisabled",
          "description": "Disables persistence for all execution data.",
          "value": "DATABASE_PERSISTENCE_DISABLED"
        },
        {
          "name": "DatabasePersistenceAsync",
          "description": "Asynchronously persist all execution data.",
          "value": "DATABASE_PERSISTENCE_ASYNC"
        }
      ]
    },
    "google-native:integrations/v1alpha:VersionOrigin": {
      "description": "Optional. The origin that indicates where this integration is coming from.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Ui",
          "description": "Workflow is being created via event bus UI.",
          "value": "UI"
        },
        {
          "name": "PiperV2",
          "description": "User checked in this workflow in Piper as v2 textproto format and we synced it into spanner.",
          "value": "PIPER_V2"
        },
        {
          "name": "PiperV3",
          "description": "User checked in this workflow in piper as v3 textproto format and we synced it into spanner.",
          "value": "PIPER_V3"
        },
        {
          "name": "ApplicationIpProvisioning",
          "description": "Workflow is being created via Standalone IP Provisioning",
          "value": "APPLICATION_IP_PROVISIONING"
        },
        {
          "name": "TestCase",
          "description": "Workflow is being created via Test Case.",
          "value": "TEST_CASE"
        }
      ]
    },
    "google-native:jobs/v3:ApplicationInfo": {
      "description": "Application related details of a job posting.",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional but at least one of uris, emails or instruction must be specified. Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255."
        },
        "instruction": {
          "type": "string",
          "description": "Optional but at least one of uris, emails or instruction must be specified. Use this field to provide instructions, such as \"Mail your application to ...\", that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional but at least one of uris, emails or instruction must be specified. Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v3:ApplicationInfoResponse": {
      "description": "Application related details of a job posting.",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional but at least one of uris, emails or instruction must be specified. Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255."
        },
        "instruction": {
          "type": "string",
          "description": "Optional but at least one of uris, emails or instruction must be specified. Use this field to provide instructions, such as \"Mail your application to ...\", that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional but at least one of uris, emails or instruction must be specified. Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000."
        }
      },
      "type": "object",
      "required": [
        "emails",
        "instruction",
        "uris"
      ]
    },
    "google-native:jobs/v3:CompanyDerivedInfoResponse": {
      "description": "Derived details about the company.",
      "properties": {
        "headquartersLocation": {
          "$ref": "#/types/google-native:jobs%2Fv3:LocationResponse",
          "description": "A structured headquarters location of the company, resolved from Company.hq_location if provided."
        }
      },
      "type": "object",
      "required": [
        "headquartersLocation"
      ]
    },
    "google-native:jobs/v3:CompanySize": {
      "description": "Optional. The employer's company size.",
      "type": "string",
      "enum": [
        {
          "name": "CompanySizeUnspecified",
          "description": "Default value if the size is not specified.",
          "value": "COMPANY_SIZE_UNSPECIFIED"
        },
        {
          "name": "Mini",
          "description": "The company has less than 50 employees.",
          "value": "MINI"
        },
        {
          "name": "Small",
          "description": "The company has between 50 and 99 employees.",
          "value": "SMALL"
        },
        {
          "name": "Smedium",
          "description": "The company has between 100 and 499 employees.",
          "value": "SMEDIUM"
        },
        {
          "name": "Medium",
          "description": "The company has between 500 and 999 employees.",
          "value": "MEDIUM"
        },
        {
          "name": "Big",
          "description": "The company has between 1,000 and 4,999 employees.",
          "value": "BIG"
        },
        {
          "name": "Bigger",
          "description": "The company has between 5,000 and 9,999 employees.",
          "value": "BIGGER"
        },
        {
          "name": "Giant",
          "description": "The company has 10,000 or more employees.",
          "value": "GIANT"
        }
      ]
    },
    "google-native:jobs/v3:CompensationEntry": {
      "description": "A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.",
      "properties": {
        "amount": {
          "$ref": "#/types/google-native:jobs%2Fv3:Money",
          "description": "Optional. Compensation amount."
        },
        "description": {
          "type": "string",
          "description": "Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus."
        },
        "expectedUnitsPerYear": {
          "type": "number",
          "description": "Optional. Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1"
        },
        "range": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompensationRange",
          "description": "Optional. Compensation range."
        },
        "type": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompensationEntryType",
          "description": "Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED."
        },
        "unit": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompensationEntryUnit",
          "description": "Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v3:CompensationEntryResponse": {
      "description": "A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.",
      "properties": {
        "amount": {
          "$ref": "#/types/google-native:jobs%2Fv3:MoneyResponse",
          "description": "Optional. Compensation amount."
        },
        "description": {
          "type": "string",
          "description": "Optional. Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus."
        },
        "expectedUnitsPerYear": {
          "type": "number",
          "description": "Optional. Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1"
        },
        "range": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompensationRangeResponse",
          "description": "Optional. Compensation range."
        },
        "type": {
          "type": "string",
          "description": "Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED."
        },
        "unit": {
          "type": "string",
          "description": "Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED."
        }
      },
      "type": "object",
      "required": [
        "amount",
        "description",
        "expectedUnitsPerYear",
        "range",
        "type",
        "unit"
      ]
    },
    "google-native:jobs/v3:CompensationEntryType": {
      "description": "Optional. Compensation type. Default is CompensationUnit.COMPENSATION_TYPE_UNSPECIFIED.",
      "type": "string",
      "enum": [
        {
          "name": "CompensationTypeUnspecified",
          "description": "Default value.",
          "value": "COMPENSATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Base",
          "description": "Base compensation: Refers to the fixed amount of money paid to an employee by an employer in return for work performed. Base compensation does not include benefits, bonuses or any other potential compensation from an employer.",
          "value": "BASE"
        },
        {
          "name": "Bonus",
          "description": "Bonus.",
          "value": "BONUS"
        },
        {
          "name": "SigningBonus",
          "description": "Signing bonus.",
          "value": "SIGNING_BONUS"
        },
        {
          "name": "Equity",
          "description": "Equity.",
          "value": "EQUITY"
        },
        {
          "name": "ProfitSharing",
          "description": "Profit sharing.",
          "value": "PROFIT_SHARING"
        },
        {
          "name": "Commissions",
          "description": "Commission.",
          "value": "COMMISSIONS"
        },
        {
          "name": "Tips",
          "description": "Tips.",
          "value": "TIPS"
        },
        {
          "name": "OtherCompensationType",
          "description": "Other compensation type.",
          "value": "OTHER_COMPENSATION_TYPE"
        }
      ]
    },
    "google-native:jobs/v3:CompensationEntryUnit": {
      "description": "Optional. Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.",
      "type": "string",
      "enum": [
        {
          "name": "CompensationUnitUnspecified",
          "description": "Default value.",
          "value": "COMPENSATION_UNIT_UNSPECIFIED"
        },
        {
          "name": "Hourly",
          "description": "Hourly.",
          "value": "HOURLY"
        },
        {
          "name": "Daily",
          "description": "Daily.",
          "value": "DAILY"
        },
        {
          "name": "Weekly",
          "description": "Weekly",
          "value": "WEEKLY"
        },
        {
          "name": "Monthly",
          "description": "Monthly.",
          "value": "MONTHLY"
        },
        {
          "name": "Yearly",
          "description": "Yearly.",
          "value": "YEARLY"
        },
        {
          "name": "OneTime",
          "description": "One time.",
          "value": "ONE_TIME"
        },
        {
          "name": "OtherCompensationUnit",
          "description": "Other compensation units.",
          "value": "OTHER_COMPENSATION_UNIT"
        }
      ]
    },
    "google-native:jobs/v3:CompensationInfo": {
      "description": "Job compensation details.",
      "properties": {
        "entries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv3:CompensationEntry"
          },
          "description": "Optional. Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as ** base compensation entry ** for the job."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v3:CompensationInfoResponse": {
      "description": "Job compensation details.",
      "properties": {
        "annualizedBaseCompensationRange": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompensationRangeResponse",
          "description": "Annualized base compensation range. Computed as base compensation entry's CompensationEntry.compensation times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization."
        },
        "annualizedTotalCompensationRange": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompensationRangeResponse",
          "description": "Annualized total compensation range. Computed as all compensation entries' CompensationEntry.compensation times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization."
        },
        "entries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv3:CompensationEntryResponse"
          },
          "description": "Optional. Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as ** base compensation entry ** for the job."
        }
      },
      "type": "object",
      "required": [
        "annualizedBaseCompensationRange",
        "annualizedTotalCompensationRange",
        "entries"
      ]
    },
    "google-native:jobs/v3:CompensationRange": {
      "description": "Compensation range.",
      "properties": {
        "maxCompensation": {
          "$ref": "#/types/google-native:jobs%2Fv3:Money",
          "description": "Optional. The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation."
        },
        "minCompensation": {
          "$ref": "#/types/google-native:jobs%2Fv3:Money",
          "description": "Optional. The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v3:CompensationRangeResponse": {
      "description": "Compensation range.",
      "properties": {
        "maxCompensation": {
          "$ref": "#/types/google-native:jobs%2Fv3:MoneyResponse",
          "description": "Optional. The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation."
        },
        "minCompensation": {
          "$ref": "#/types/google-native:jobs%2Fv3:MoneyResponse",
          "description": "Optional. The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation."
        }
      },
      "type": "object",
      "required": [
        "maxCompensation",
        "minCompensation"
      ]
    },
    "google-native:jobs/v3:JobDegreeTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "DegreeTypeUnspecified",
          "description": "Default value. Represents no degree, or early childhood education. Maps to ISCED code 0. Ex) Kindergarten",
          "value": "DEGREE_TYPE_UNSPECIFIED"
        },
        {
          "name": "PrimaryEducation",
          "description": "Primary education which is typically the first stage of compulsory education. ISCED code 1. Ex) Elementary school",
          "value": "PRIMARY_EDUCATION"
        },
        {
          "name": "LowerSecondaryEducation",
          "description": "Lower secondary education; First stage of secondary education building on primary education, typically with a more subject-oriented curriculum. ISCED code 2. Ex) Middle school",
          "value": "LOWER_SECONDARY_EDUCATION"
        },
        {
          "name": "UpperSecondaryEducation",
          "description": "Middle education; Second/final stage of secondary education preparing for tertiary education and/or providing skills relevant to employment. Usually with an increased range of subject options and streams. ISCED code 3. Ex) High school",
          "value": "UPPER_SECONDARY_EDUCATION"
        },
        {
          "name": "AdultRemedialEducation",
          "description": "Adult Remedial Education; Programmes providing learning experiences that build on secondary education and prepare for labour market entry and/or tertiary education. The content is broader than secondary but not as complex as tertiary education. ISCED code 4.",
          "value": "ADULT_REMEDIAL_EDUCATION"
        },
        {
          "name": "AssociatesOrEquivalent",
          "description": "Associate's or equivalent; Short first tertiary programmes that are typically practically-based, occupationally-specific and prepare for labour market entry. These programmes may also provide a pathway to other tertiary programmes. ISCED code 5.",
          "value": "ASSOCIATES_OR_EQUIVALENT"
        },
        {
          "name": "BachelorsOrEquivalent",
          "description": "Bachelor's or equivalent; Programmes designed to provide intermediate academic and/or professional knowledge, skills and competencies leading to a first tertiary degree or equivalent qualification. ISCED code 6.",
          "value": "BACHELORS_OR_EQUIVALENT"
        },
        {
          "name": "MastersOrEquivalent",
          "description": "Master's or equivalent; Programmes designed to provide advanced academic and/or professional knowledge, skills and competencies leading to a second tertiary degree or equivalent qualification. ISCED code 7.",
          "value": "MASTERS_OR_EQUIVALENT"
        },
        {
          "name": "DoctoralOrEquivalent",
          "description": "Doctoral or equivalent; Programmes designed primarily to lead to an advanced research qualification, usually concluding with the submission and defense of a substantive dissertation of publishable quality based on original research. ISCED code 8.",
          "value": "DOCTORAL_OR_EQUIVALENT"
        }
      ]
    },
    "google-native:jobs/v3:JobDerivedInfoResponse": {
      "description": "Output only. Derived details about the job posting.",
      "properties": {
        "jobCategories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Job categories derived from Job.title and Job.description."
        },
        "locations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv3:LocationResponse"
          },
          "description": "Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order."
        }
      },
      "type": "object",
      "required": [
        "jobCategories",
        "locations"
      ]
    },
    "google-native:jobs/v3:JobEmploymentTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "EmploymentTypeUnspecified",
          "description": "The default value if the employment type is not specified.",
          "value": "EMPLOYMENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "FullTime",
          "description": "The job requires working a number of hours that constitute full time employment, typically 40 or more hours per week.",
          "value": "FULL_TIME"
        },
        {
          "name": "PartTime",
          "description": "The job entails working fewer hours than a full time job, typically less than 40 hours a week.",
          "value": "PART_TIME"
        },
        {
          "name": "Contractor",
          "description": "The job is offered as a contracted, as opposed to a salaried employee, position.",
          "value": "CONTRACTOR"
        },
        {
          "name": "ContractToHire",
          "description": "The job is offered as a contracted position with the understanding that it's converted into a full-time position at the end of the contract. Jobs of this type are also returned by a search for EmploymentType.CONTRACTOR jobs.",
          "value": "CONTRACT_TO_HIRE"
        },
        {
          "name": "Temporary",
          "description": "The job is offered as a temporary employment opportunity, usually a short-term engagement.",
          "value": "TEMPORARY"
        },
        {
          "name": "Intern",
          "description": "The job is a fixed-term opportunity for students or entry-level job seekers to obtain on-the-job training, typically offered as a summer position.",
          "value": "INTERN"
        },
        {
          "name": "Volunteer",
          "description": "The is an opportunity for an individual to volunteer, where there's no expectation of compensation for the provided services.",
          "value": "VOLUNTEER"
        },
        {
          "name": "PerDiem",
          "description": "The job requires an employee to work on an as-needed basis with a flexible schedule.",
          "value": "PER_DIEM"
        },
        {
          "name": "FlyInFlyOut",
          "description": "The job involves employing people in remote areas and flying them temporarily to the work site instead of relocating employees and their families permanently.",
          "value": "FLY_IN_FLY_OUT"
        },
        {
          "name": "OtherEmploymentType",
          "description": "The job does not fit any of the other listed types.",
          "value": "OTHER_EMPLOYMENT_TYPE"
        }
      ]
    },
    "google-native:jobs/v3:JobJobBenefitsItem": {
      "type": "string",
      "enum": [
        {
          "name": "JobBenefitUnspecified",
          "description": "Default value if the type is not specified.",
          "value": "JOB_BENEFIT_UNSPECIFIED"
        },
        {
          "name": "ChildCare",
          "description": "The job includes access to programs that support child care, such as daycare.",
          "value": "CHILD_CARE"
        },
        {
          "name": "Dental",
          "description": "The job includes dental services covered by a dental insurance plan.",
          "value": "DENTAL"
        },
        {
          "name": "DomesticPartner",
          "description": "The job offers specific benefits to domestic partners.",
          "value": "DOMESTIC_PARTNER"
        },
        {
          "name": "FlexibleHours",
          "description": "The job allows for a flexible work schedule.",
          "value": "FLEXIBLE_HOURS"
        },
        {
          "name": "Medical",
          "description": "The job includes health services covered by a medical insurance plan.",
          "value": "MEDICAL"
        },
        {
          "name": "LifeInsurance",
          "description": "The job includes a life insurance plan provided by the employer or available for purchase by the employee.",
          "value": "LIFE_INSURANCE"
        },
        {
          "name": "ParentalLeave",
          "description": "The job allows for a leave of absence to a parent to care for a newborn child.",
          "value": "PARENTAL_LEAVE"
        },
        {
          "name": "RetirementPlan",
          "description": "The job includes a workplace retirement plan provided by the employer or available for purchase by the employee.",
          "value": "RETIREMENT_PLAN"
        },
        {
          "name": "SickDays",
          "description": "The job allows for paid time off due to illness.",
          "value": "SICK_DAYS"
        },
        {
          "name": "Vacation",
          "description": "The job includes paid time off for vacation.",
          "value": "VACATION"
        },
        {
          "name": "Vision",
          "description": "The job includes vision services covered by a vision insurance plan.",
          "value": "VISION"
        }
      ]
    },
    "google-native:jobs/v3:JobJobLevel": {
      "description": "Optional. The experience level associated with the job, such as \"Entry Level\".",
      "type": "string",
      "enum": [
        {
          "name": "JobLevelUnspecified",
          "description": "The default value if the level is not specified.",
          "value": "JOB_LEVEL_UNSPECIFIED"
        },
        {
          "name": "EntryLevel",
          "description": "Entry-level individual contributors, typically with less than 2 years of experience in a similar role. Includes interns.",
          "value": "ENTRY_LEVEL"
        },
        {
          "name": "Experienced",
          "description": "Experienced individual contributors, typically with 2+ years of experience in a similar role.",
          "value": "EXPERIENCED"
        },
        {
          "name": "Manager",
          "description": "Entry- to mid-level managers responsible for managing a team of people.",
          "value": "MANAGER"
        },
        {
          "name": "Director",
          "description": "Senior-level managers responsible for managing teams of managers.",
          "value": "DIRECTOR"
        },
        {
          "name": "Executive",
          "description": "Executive-level managers and above, including C-level positions.",
          "value": "EXECUTIVE"
        }
      ]
    },
    "google-native:jobs/v3:JobPostingRegion": {
      "description": "Optional. The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn't specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.",
      "type": "string",
      "enum": [
        {
          "name": "PostingRegionUnspecified",
          "description": "If the region is unspecified, the job is only returned if it matches the LocationFilter.",
          "value": "POSTING_REGION_UNSPECIFIED"
        },
        {
          "name": "AdministrativeArea",
          "description": "In addition to exact location matching, job posting is returned when the LocationFilter in the search query is in the same administrative area as the returned job posting. For example, if a `ADMINISTRATIVE_AREA` job is posted in \"CA, USA\", it's returned if LocationFilter has \"Mountain View\". Administrative area refers to top-level administrative subdivision of this country. For example, US state, IT region, UK constituent nation and JP prefecture.",
          "value": "ADMINISTRATIVE_AREA"
        },
        {
          "name": "Nation",
          "description": "In addition to exact location matching, job is returned when LocationFilter in search query is in the same country as this job. For example, if a `NATION_WIDE` job is posted in \"USA\", it's returned if LocationFilter has 'Mountain View'.",
          "value": "NATION"
        },
        {
          "name": "Telecommute",
          "description": "Job allows employees to work remotely (telecommute). If locations are provided with this value, the job is considered as having a location, but telecommuting is allowed.",
          "value": "TELECOMMUTE"
        }
      ]
    },
    "google-native:jobs/v3:JobVisibility": {
      "description": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
      "type": "string",
      "enum": [
        {
          "name": "VisibilityUnspecified",
          "description": "Default value.",
          "value": "VISIBILITY_UNSPECIFIED"
        },
        {
          "name": "AccountOnly",
          "description": "The resource is only visible to the GCP account who owns it.",
          "value": "ACCOUNT_ONLY"
        },
        {
          "name": "SharedWithGoogle",
          "description": "The resource is visible to the owner and may be visible to other applications and processes at Google.",
          "value": "SHARED_WITH_GOOGLE"
        },
        {
          "name": "SharedWithPublic",
          "description": "The resource is visible to the owner and may be visible to all other API clients.",
          "value": "SHARED_WITH_PUBLIC"
        }
      ]
    },
    "google-native:jobs/v3:LatLngResponse": {
      "description": "An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges.",
      "properties": {
        "latitude": {
          "type": "number",
          "description": "The latitude in degrees. It must be in the range [-90.0, +90.0]."
        },
        "longitude": {
          "type": "number",
          "description": "The longitude in degrees. It must be in the range [-180.0, +180.0]."
        }
      },
      "type": "object",
      "required": [
        "latitude",
        "longitude"
      ]
    },
    "google-native:jobs/v3:LocationResponse": {
      "description": "Output only. A resource that represents a location with full geographic information.",
      "properties": {
        "latLng": {
          "$ref": "#/types/google-native:jobs%2Fv3:LatLngResponse",
          "description": "An object representing a latitude/longitude pair."
        },
        "locationType": {
          "type": "string",
          "description": "The type of a location, which corresponds to the address lines field of PostalAddress. For example, \"Downtown, Atlanta, GA, USA\" has a type of LocationType#NEIGHBORHOOD, and \"Kansas City, KS, USA\" has a type of LocationType#LOCALITY."
        },
        "postalAddress": {
          "$ref": "#/types/google-native:jobs%2Fv3:PostalAddressResponse",
          "description": "Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location."
        },
        "radiusInMiles": {
          "type": "number",
          "description": "Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from LatLng covers the area associated with the job location. For example, currently, \"Mountain View, CA, USA\" has a radius of 6.17 miles."
        }
      },
      "type": "object",
      "required": [
        "latLng",
        "locationType",
        "postalAddress",
        "radiusInMiles"
      ]
    },
    "google-native:jobs/v3:Money": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v3:MoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:jobs/v3:PostalAddressResponse": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "addressLines",
        "administrativeArea",
        "languageCode",
        "locality",
        "organization",
        "postalCode",
        "recipients",
        "regionCode",
        "revision",
        "sortingCode",
        "sublocality"
      ]
    },
    "google-native:jobs/v3:ProcessingOptions": {
      "description": "Input only. Options for job processing.",
      "properties": {
        "disableStreetAddressResolution": {
          "type": "boolean",
          "description": "Optional. If set to `true`, the service does not attempt to resolve a more precise address for the job."
        },
        "htmlSanitization": {
          "$ref": "#/types/google-native:jobs%2Fv3:ProcessingOptionsHtmlSanitization",
          "description": "Optional. Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v3:ProcessingOptionsHtmlSanitization": {
      "description": "Optional. Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.",
      "type": "string",
      "enum": [
        {
          "name": "HtmlSanitizationUnspecified",
          "description": "Default value.",
          "value": "HTML_SANITIZATION_UNSPECIFIED"
        },
        {
          "name": "HtmlSanitizationDisabled",
          "description": "Disables sanitization on HTML input.",
          "value": "HTML_SANITIZATION_DISABLED"
        },
        {
          "name": "SimpleFormattingOnly",
          "description": "Sanitizes HTML input, only accepts bold, italic, ordered list, and unordered list markup tags.",
          "value": "SIMPLE_FORMATTING_ONLY"
        }
      ]
    },
    "google-native:jobs/v3:ProcessingOptionsResponse": {
      "description": "Input only. Options for job processing.",
      "properties": {
        "disableStreetAddressResolution": {
          "type": "boolean",
          "description": "Optional. If set to `true`, the service does not attempt to resolve a more precise address for the job."
        },
        "htmlSanitization": {
          "type": "string",
          "description": "Optional. Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation is not disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY."
        }
      },
      "type": "object",
      "required": [
        "disableStreetAddressResolution",
        "htmlSanitization"
      ]
    },
    "google-native:jobs/v4:ApplicationInfo": {
      "description": "Application related details of a job posting.",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255."
        },
        "instruction": {
          "type": "string",
          "description": "Use this field to provide instructions, such as \"Mail your application to ...\", that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v4:ApplicationInfoResponse": {
      "description": "Application related details of a job posting.",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Use this field to specify email address(es) to which resumes or applications can be sent. The maximum number of allowed characters for each entry is 255."
        },
        "instruction": {
          "type": "string",
          "description": "Use this field to provide instructions, such as \"Mail your application to ...\", that a candidate can follow to apply for the job. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 3,000."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Use this URI field to direct an applicant to a website, for example to link to an online application form. The maximum number of allowed characters for each entry is 2,000."
        }
      },
      "type": "object",
      "required": [
        "emails",
        "instruction",
        "uris"
      ]
    },
    "google-native:jobs/v4:CompanyDerivedInfoResponse": {
      "description": "Derived details about the company.",
      "properties": {
        "headquartersLocation": {
          "$ref": "#/types/google-native:jobs%2Fv4:LocationResponse",
          "description": "A structured headquarters location of the company, resolved from Company.headquarters_address if provided."
        }
      },
      "type": "object",
      "required": [
        "headquartersLocation"
      ]
    },
    "google-native:jobs/v4:CompanySize": {
      "description": "The employer's company size.",
      "type": "string",
      "enum": [
        {
          "name": "CompanySizeUnspecified",
          "description": "Default value if the size isn't specified.",
          "value": "COMPANY_SIZE_UNSPECIFIED"
        },
        {
          "name": "Mini",
          "description": "The company has less than 50 employees.",
          "value": "MINI"
        },
        {
          "name": "Small",
          "description": "The company has between 50 and 99 employees.",
          "value": "SMALL"
        },
        {
          "name": "Smedium",
          "description": "The company has between 100 and 499 employees.",
          "value": "SMEDIUM"
        },
        {
          "name": "Medium",
          "description": "The company has between 500 and 999 employees.",
          "value": "MEDIUM"
        },
        {
          "name": "Big",
          "description": "The company has between 1,000 and 4,999 employees.",
          "value": "BIG"
        },
        {
          "name": "Bigger",
          "description": "The company has between 5,000 and 9,999 employees.",
          "value": "BIGGER"
        },
        {
          "name": "Giant",
          "description": "The company has 10,000 or more employees.",
          "value": "GIANT"
        }
      ]
    },
    "google-native:jobs/v4:CompensationEntry": {
      "description": "A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.",
      "properties": {
        "amount": {
          "$ref": "#/types/google-native:jobs%2Fv4:Money",
          "description": "Compensation amount."
        },
        "description": {
          "type": "string",
          "description": "Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus."
        },
        "expectedUnitsPerYear": {
          "type": "number",
          "description": "Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1"
        },
        "range": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompensationRange",
          "description": "Compensation range."
        },
        "type": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompensationEntryType",
          "description": "Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED."
        },
        "unit": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompensationEntryUnit",
          "description": "Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v4:CompensationEntryResponse": {
      "description": "A compensation entry that represents one component of compensation, such as base pay, bonus, or other compensation type. Annualization: One compensation entry can be annualized if - it contains valid amount or range. - and its expected_units_per_year is set or can be derived. Its annualized range is determined as (amount or range) times expected_units_per_year.",
      "properties": {
        "amount": {
          "$ref": "#/types/google-native:jobs%2Fv4:MoneyResponse",
          "description": "Compensation amount."
        },
        "description": {
          "type": "string",
          "description": "Compensation description. For example, could indicate equity terms or provide additional context to an estimated bonus."
        },
        "expectedUnitsPerYear": {
          "type": "number",
          "description": "Expected number of units paid each year. If not specified, when Job.employment_types is FULLTIME, a default value is inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 - WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1"
        },
        "range": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompensationRangeResponse",
          "description": "Compensation range."
        },
        "type": {
          "type": "string",
          "description": "Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED."
        },
        "unit": {
          "type": "string",
          "description": "Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED."
        }
      },
      "type": "object",
      "required": [
        "amount",
        "description",
        "expectedUnitsPerYear",
        "range",
        "type",
        "unit"
      ]
    },
    "google-native:jobs/v4:CompensationEntryType": {
      "description": "Compensation type. Default is CompensationType.COMPENSATION_TYPE_UNSPECIFIED.",
      "type": "string",
      "enum": [
        {
          "name": "CompensationTypeUnspecified",
          "description": "Default value.",
          "value": "COMPENSATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Base",
          "description": "Base compensation: Refers to the fixed amount of money paid to an employee by an employer in return for work performed. Base compensation does not include benefits, bonuses or any other potential compensation from an employer.",
          "value": "BASE"
        },
        {
          "name": "Bonus",
          "description": "Bonus.",
          "value": "BONUS"
        },
        {
          "name": "SigningBonus",
          "description": "Signing bonus.",
          "value": "SIGNING_BONUS"
        },
        {
          "name": "Equity",
          "description": "Equity.",
          "value": "EQUITY"
        },
        {
          "name": "ProfitSharing",
          "description": "Profit sharing.",
          "value": "PROFIT_SHARING"
        },
        {
          "name": "Commissions",
          "description": "Commission.",
          "value": "COMMISSIONS"
        },
        {
          "name": "Tips",
          "description": "Tips.",
          "value": "TIPS"
        },
        {
          "name": "OtherCompensationType",
          "description": "Other compensation type.",
          "value": "OTHER_COMPENSATION_TYPE"
        }
      ]
    },
    "google-native:jobs/v4:CompensationEntryUnit": {
      "description": "Frequency of the specified amount. Default is CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.",
      "type": "string",
      "enum": [
        {
          "name": "CompensationUnitUnspecified",
          "description": "Default value.",
          "value": "COMPENSATION_UNIT_UNSPECIFIED"
        },
        {
          "name": "Hourly",
          "description": "Hourly.",
          "value": "HOURLY"
        },
        {
          "name": "Daily",
          "description": "Daily.",
          "value": "DAILY"
        },
        {
          "name": "Weekly",
          "description": "Weekly",
          "value": "WEEKLY"
        },
        {
          "name": "Monthly",
          "description": "Monthly.",
          "value": "MONTHLY"
        },
        {
          "name": "Yearly",
          "description": "Yearly.",
          "value": "YEARLY"
        },
        {
          "name": "OneTime",
          "description": "One time.",
          "value": "ONE_TIME"
        },
        {
          "name": "OtherCompensationUnit",
          "description": "Other compensation units.",
          "value": "OTHER_COMPENSATION_UNIT"
        }
      ]
    },
    "google-native:jobs/v4:CompensationInfo": {
      "description": "Job compensation details.",
      "properties": {
        "entries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv4:CompensationEntry"
          },
          "description": "Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v4:CompensationInfoResponse": {
      "description": "Job compensation details.",
      "properties": {
        "annualizedBaseCompensationRange": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompensationRangeResponse",
          "description": "Annualized base compensation range. Computed as base compensation entry's CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization."
        },
        "annualizedTotalCompensationRange": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompensationRangeResponse",
          "description": "Annualized total compensation range. Computed as all compensation entries' CompensationEntry.amount times CompensationEntry.expected_units_per_year. See CompensationEntry for explanation on compensation annualization."
        },
        "entries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv4:CompensationEntryResponse"
          },
          "description": "Job compensation information. At most one entry can be of type CompensationInfo.CompensationType.BASE, which is referred as **base compensation entry** for the job."
        }
      },
      "type": "object",
      "required": [
        "annualizedBaseCompensationRange",
        "annualizedTotalCompensationRange",
        "entries"
      ]
    },
    "google-native:jobs/v4:CompensationRange": {
      "description": "Compensation range.",
      "properties": {
        "maxCompensation": {
          "$ref": "#/types/google-native:jobs%2Fv4:Money",
          "description": "The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation."
        },
        "minCompensation": {
          "$ref": "#/types/google-native:jobs%2Fv4:Money",
          "description": "The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v4:CompensationRangeResponse": {
      "description": "Compensation range.",
      "properties": {
        "maxCompensation": {
          "$ref": "#/types/google-native:jobs%2Fv4:MoneyResponse",
          "description": "The maximum amount of compensation. If left empty, the value is set to a maximal compensation value and the currency code is set to match the currency code of min_compensation."
        },
        "minCompensation": {
          "$ref": "#/types/google-native:jobs%2Fv4:MoneyResponse",
          "description": "The minimum amount of compensation. If left empty, the value is set to zero and the currency code is set to match the currency code of max_compensation."
        }
      },
      "type": "object",
      "required": [
        "maxCompensation",
        "minCompensation"
      ]
    },
    "google-native:jobs/v4:JobDegreeTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "DegreeTypeUnspecified",
          "description": "Default value. Represents no degree, or early childhood education. Maps to ISCED code 0. Ex) Kindergarten",
          "value": "DEGREE_TYPE_UNSPECIFIED"
        },
        {
          "name": "PrimaryEducation",
          "description": "Primary education which is typically the first stage of compulsory education. ISCED code 1. Ex) Elementary school",
          "value": "PRIMARY_EDUCATION"
        },
        {
          "name": "LowerSecondaryEducation",
          "description": "Lower secondary education; First stage of secondary education building on primary education, typically with a more subject-oriented curriculum. ISCED code 2. Ex) Middle school",
          "value": "LOWER_SECONDARY_EDUCATION"
        },
        {
          "name": "UpperSecondaryEducation",
          "description": "Middle education; Second/final stage of secondary education preparing for tertiary education and/or providing skills relevant to employment. Usually with an increased range of subject options and streams. ISCED code 3. Ex) High school",
          "value": "UPPER_SECONDARY_EDUCATION"
        },
        {
          "name": "AdultRemedialEducation",
          "description": "Adult Remedial Education; Programmes providing learning experiences that build on secondary education and prepare for labour market entry and/or tertiary education. The content is broader than secondary but not as complex as tertiary education. ISCED code 4.",
          "value": "ADULT_REMEDIAL_EDUCATION"
        },
        {
          "name": "AssociatesOrEquivalent",
          "description": "Associate's or equivalent; Short first tertiary programmes that are typically practically-based, occupationally-specific and prepare for labour market entry. These programmes may also provide a pathway to other tertiary programmes. ISCED code 5.",
          "value": "ASSOCIATES_OR_EQUIVALENT"
        },
        {
          "name": "BachelorsOrEquivalent",
          "description": "Bachelor's or equivalent; Programmes designed to provide intermediate academic and/or professional knowledge, skills and competencies leading to a first tertiary degree or equivalent qualification. ISCED code 6.",
          "value": "BACHELORS_OR_EQUIVALENT"
        },
        {
          "name": "MastersOrEquivalent",
          "description": "Master's or equivalent; Programmes designed to provide advanced academic and/or professional knowledge, skills and competencies leading to a second tertiary degree or equivalent qualification. ISCED code 7.",
          "value": "MASTERS_OR_EQUIVALENT"
        },
        {
          "name": "DoctoralOrEquivalent",
          "description": "Doctoral or equivalent; Programmes designed primarily to lead to an advanced research qualification, usually concluding with the submission and defense of a substantive dissertation of publishable quality based on original research. ISCED code 8.",
          "value": "DOCTORAL_OR_EQUIVALENT"
        }
      ]
    },
    "google-native:jobs/v4:JobDerivedInfoResponse": {
      "description": "Derived details about the job posting.",
      "properties": {
        "jobCategories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Job categories derived from Job.title and Job.description."
        },
        "locations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv4:LocationResponse"
          },
          "description": "Structured locations of the job, resolved from Job.addresses. locations are exactly matched to Job.addresses in the same order."
        }
      },
      "type": "object",
      "required": [
        "jobCategories",
        "locations"
      ]
    },
    "google-native:jobs/v4:JobEmploymentTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "EmploymentTypeUnspecified",
          "description": "The default value if the employment type isn't specified.",
          "value": "EMPLOYMENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "FullTime",
          "description": "The job requires working a number of hours that constitute full time employment, typically 40 or more hours per week.",
          "value": "FULL_TIME"
        },
        {
          "name": "PartTime",
          "description": "The job entails working fewer hours than a full time job, typically less than 40 hours a week.",
          "value": "PART_TIME"
        },
        {
          "name": "Contractor",
          "description": "The job is offered as a contracted, as opposed to a salaried employee, position.",
          "value": "CONTRACTOR"
        },
        {
          "name": "ContractToHire",
          "description": "The job is offered as a contracted position with the understanding that it's converted into a full-time position at the end of the contract. Jobs of this type are also returned by a search for EmploymentType.CONTRACTOR jobs.",
          "value": "CONTRACT_TO_HIRE"
        },
        {
          "name": "Temporary",
          "description": "The job is offered as a temporary employment opportunity, usually a short-term engagement.",
          "value": "TEMPORARY"
        },
        {
          "name": "Intern",
          "description": "The job is a fixed-term opportunity for students or entry-level job seekers to obtain on-the-job training, typically offered as a summer position.",
          "value": "INTERN"
        },
        {
          "name": "Volunteer",
          "description": "The is an opportunity for an individual to volunteer, where there's no expectation of compensation for the provided services.",
          "value": "VOLUNTEER"
        },
        {
          "name": "PerDiem",
          "description": "The job requires an employee to work on an as-needed basis with a flexible schedule.",
          "value": "PER_DIEM"
        },
        {
          "name": "FlyInFlyOut",
          "description": "The job involves employing people in remote areas and flying them temporarily to the work site instead of relocating employees and their families permanently.",
          "value": "FLY_IN_FLY_OUT"
        },
        {
          "name": "OtherEmploymentType",
          "description": "The job does not fit any of the other listed types.",
          "value": "OTHER_EMPLOYMENT_TYPE"
        }
      ]
    },
    "google-native:jobs/v4:JobJobBenefitsItem": {
      "type": "string",
      "enum": [
        {
          "name": "JobBenefitUnspecified",
          "description": "Default value if the type isn't specified.",
          "value": "JOB_BENEFIT_UNSPECIFIED"
        },
        {
          "name": "ChildCare",
          "description": "The job includes access to programs that support child care, such as daycare.",
          "value": "CHILD_CARE"
        },
        {
          "name": "Dental",
          "description": "The job includes dental services covered by a dental insurance plan.",
          "value": "DENTAL"
        },
        {
          "name": "DomesticPartner",
          "description": "The job offers specific benefits to domestic partners.",
          "value": "DOMESTIC_PARTNER"
        },
        {
          "name": "FlexibleHours",
          "description": "The job allows for a flexible work schedule.",
          "value": "FLEXIBLE_HOURS"
        },
        {
          "name": "Medical",
          "description": "The job includes health services covered by a medical insurance plan.",
          "value": "MEDICAL"
        },
        {
          "name": "LifeInsurance",
          "description": "The job includes a life insurance plan provided by the employer or available for purchase by the employee.",
          "value": "LIFE_INSURANCE"
        },
        {
          "name": "ParentalLeave",
          "description": "The job allows for a leave of absence to a parent to care for a newborn child.",
          "value": "PARENTAL_LEAVE"
        },
        {
          "name": "RetirementPlan",
          "description": "The job includes a workplace retirement plan provided by the employer or available for purchase by the employee.",
          "value": "RETIREMENT_PLAN"
        },
        {
          "name": "SickDays",
          "description": "The job allows for paid time off due to illness.",
          "value": "SICK_DAYS"
        },
        {
          "name": "Vacation",
          "description": "The job includes paid time off for vacation.",
          "value": "VACATION"
        },
        {
          "name": "Vision",
          "description": "The job includes vision services covered by a vision insurance plan.",
          "value": "VISION"
        }
      ]
    },
    "google-native:jobs/v4:JobJobLevel": {
      "description": "The experience level associated with the job, such as \"Entry Level\".",
      "type": "string",
      "enum": [
        {
          "name": "JobLevelUnspecified",
          "description": "The default value if the level isn't specified.",
          "value": "JOB_LEVEL_UNSPECIFIED"
        },
        {
          "name": "EntryLevel",
          "description": "Entry-level individual contributors, typically with less than 2 years of experience in a similar role. Includes interns.",
          "value": "ENTRY_LEVEL"
        },
        {
          "name": "Experienced",
          "description": "Experienced individual contributors, typically with 2+ years of experience in a similar role.",
          "value": "EXPERIENCED"
        },
        {
          "name": "Manager",
          "description": "Entry- to mid-level managers responsible for managing a team of people.",
          "value": "MANAGER"
        },
        {
          "name": "Director",
          "description": "Senior-level managers responsible for managing teams of managers.",
          "value": "DIRECTOR"
        },
        {
          "name": "Executive",
          "description": "Executive-level managers and above, including C-level positions.",
          "value": "EXECUTIVE"
        }
      ]
    },
    "google-native:jobs/v4:JobPostingRegion": {
      "description": "The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn't specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.",
      "type": "string",
      "enum": [
        {
          "name": "PostingRegionUnspecified",
          "description": "If the region is unspecified, the job is only returned if it matches the LocationFilter.",
          "value": "POSTING_REGION_UNSPECIFIED"
        },
        {
          "name": "AdministrativeArea",
          "description": "In addition to exact location matching, job posting is returned when the LocationFilter in the search query is in the same administrative area as the returned job posting. For example, if a `ADMINISTRATIVE_AREA` job is posted in \"CA, USA\", it's returned if LocationFilter has \"Mountain View\". Administrative area refers to top-level administrative subdivision of this country. For example, US state, IT region, UK constituent nation and JP prefecture.",
          "value": "ADMINISTRATIVE_AREA"
        },
        {
          "name": "Nation",
          "description": "In addition to exact location matching, job is returned when LocationFilter in search query is in the same country as this job. For example, if a `NATION_WIDE` job is posted in \"USA\", it's returned if LocationFilter has 'Mountain View'.",
          "value": "NATION"
        },
        {
          "name": "Telecommute",
          "description": "Job allows employees to work remotely (telecommute). If locations are provided with this value, the job is considered as having a location, but telecommuting is allowed.",
          "value": "TELECOMMUTE"
        }
      ]
    },
    "google-native:jobs/v4:JobVisibility": {
      "description": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
      "type": "string",
      "enum": [
        {
          "name": "VisibilityUnspecified",
          "description": "Default value.",
          "value": "VISIBILITY_UNSPECIFIED"
        },
        {
          "name": "AccountOnly",
          "description": "The resource is only visible to the GCP account who owns it.",
          "value": "ACCOUNT_ONLY"
        },
        {
          "name": "SharedWithGoogle",
          "description": "The resource is visible to the owner and may be visible to other applications and processes at Google.",
          "value": "SHARED_WITH_GOOGLE"
        },
        {
          "name": "SharedWithPublic",
          "description": "The resource is visible to the owner and may be visible to all other API clients.",
          "value": "SHARED_WITH_PUBLIC"
        }
      ]
    },
    "google-native:jobs/v4:LatLngResponse": {
      "description": "An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges.",
      "properties": {
        "latitude": {
          "type": "number",
          "description": "The latitude in degrees. It must be in the range [-90.0, +90.0]."
        },
        "longitude": {
          "type": "number",
          "description": "The longitude in degrees. It must be in the range [-180.0, +180.0]."
        }
      },
      "type": "object",
      "required": [
        "latitude",
        "longitude"
      ]
    },
    "google-native:jobs/v4:LocationResponse": {
      "description": "A resource that represents a location with full geographic information.",
      "properties": {
        "latLng": {
          "$ref": "#/types/google-native:jobs%2Fv4:LatLngResponse",
          "description": "An object representing a latitude/longitude pair."
        },
        "locationType": {
          "type": "string",
          "description": "The type of a location, which corresponds to the address lines field of google.type.PostalAddress. For example, \"Downtown, Atlanta, GA, USA\" has a type of LocationType.NEIGHBORHOOD, and \"Kansas City, KS, USA\" has a type of LocationType.LOCALITY."
        },
        "postalAddress": {
          "$ref": "#/types/google-native:jobs%2Fv4:PostalAddressResponse",
          "description": "Postal address of the location that includes human readable information, such as postal delivery and payments addresses. Given a postal address, a postal service can deliver items to a premises, P.O. Box, or other delivery location."
        },
        "radiusMiles": {
          "type": "number",
          "description": "Radius in miles of the job location. This value is derived from the location bounding box in which a circle with the specified radius centered from google.type.LatLng covers the area associated with the job location. For example, currently, \"Mountain View, CA, USA\" has a radius of 6.17 miles."
        }
      },
      "type": "object",
      "required": [
        "latLng",
        "locationType",
        "postalAddress",
        "radiusMiles"
      ]
    },
    "google-native:jobs/v4:Money": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v4:MoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:jobs/v4:PostalAddressResponse": {
      "description": "Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478",
      "properties": {
        "addressLines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas)."
        },
        "administrativeArea": {
          "type": "string",
          "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\"."
        },
        "locality": {
          "type": "string",
          "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines."
        },
        "organization": {
          "type": "string",
          "description": "Optional. The name of the organization at the address."
        },
        "postalCode": {
          "type": "string",
          "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.)."
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information."
        },
        "regionCode": {
          "type": "string",
          "description": "CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland."
        },
        "revision": {
          "type": "integer",
          "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions."
        },
        "sortingCode": {
          "type": "string",
          "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire)."
        },
        "sublocality": {
          "type": "string",
          "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts."
        }
      },
      "type": "object",
      "required": [
        "addressLines",
        "administrativeArea",
        "languageCode",
        "locality",
        "organization",
        "postalCode",
        "recipients",
        "regionCode",
        "revision",
        "sortingCode",
        "sublocality"
      ]
    },
    "google-native:jobs/v4:ProcessingOptions": {
      "description": "Options for job processing.",
      "properties": {
        "disableStreetAddressResolution": {
          "type": "boolean",
          "description": "If set to `true`, the service does not attempt to resolve a more precise address for the job."
        },
        "htmlSanitization": {
          "$ref": "#/types/google-native:jobs%2Fv4:ProcessingOptionsHtmlSanitization",
          "description": "Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn't disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY."
        }
      },
      "type": "object"
    },
    "google-native:jobs/v4:ProcessingOptionsHtmlSanitization": {
      "description": "Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn't disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY.",
      "type": "string",
      "enum": [
        {
          "name": "HtmlSanitizationUnspecified",
          "description": "Default value.",
          "value": "HTML_SANITIZATION_UNSPECIFIED"
        },
        {
          "name": "HtmlSanitizationDisabled",
          "description": "Disables sanitization on HTML input.",
          "value": "HTML_SANITIZATION_DISABLED"
        },
        {
          "name": "SimpleFormattingOnly",
          "description": "Sanitizes HTML input, only accepts bold, italic, ordered list, and unordered list markup tags.",
          "value": "SIMPLE_FORMATTING_ONLY"
        }
      ]
    },
    "google-native:jobs/v4:ProcessingOptionsResponse": {
      "description": "Options for job processing.",
      "properties": {
        "disableStreetAddressResolution": {
          "type": "boolean",
          "description": "If set to `true`, the service does not attempt to resolve a more precise address for the job."
        },
        "htmlSanitization": {
          "type": "string",
          "description": "Option for job HTML content sanitization. Applied fields are: * description * applicationInfo.instruction * incentives * qualifications * responsibilities HTML tags in these fields may be stripped if sanitiazation isn't disabled. Defaults to HtmlSanitization.SIMPLE_FORMATTING_ONLY."
        }
      },
      "type": "object",
      "required": [
        "disableStreetAddressResolution",
        "htmlSanitization"
      ]
    },
    "google-native:logging/v2:BigQueryDataset": {
      "description": "Describes a BigQuery dataset that was created by a link.",
      "type": "object"
    },
    "google-native:logging/v2:BigQueryDatasetResponse": {
      "description": "Describes a BigQuery dataset that was created by a link.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The full resource name of the BigQuery dataset. The DATASET_ID will match the ID of the link, so the link must match the naming restrictions of BigQuery datasets (alphanumeric characters and underscores only).The dataset will have a resource path of \"bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID\""
        }
      },
      "type": "object",
      "required": [
        "datasetId"
      ]
    },
    "google-native:logging/v2:BigQueryOptions": {
      "description": "Options that change functionality of a sink exporting data to BigQuery.",
      "properties": {
        "usePartitionedTables": {
          "type": "boolean",
          "description": "Optional. Whether to use BigQuery's partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Cloud Logging creates dated tables based on the log entries' timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:BigQueryOptionsResponse": {
      "description": "Options that change functionality of a sink exporting data to BigQuery.",
      "properties": {
        "usePartitionedTables": {
          "type": "boolean",
          "description": "Optional. Whether to use BigQuery's partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Cloud Logging creates dated tables based on the log entries' timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone."
        },
        "usesTimestampColumnPartitioning": {
          "type": "boolean",
          "description": "True if new timestamp column based partitioning is in use, false if legacy ingress-time partitioning is in use.All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false."
        }
      },
      "type": "object",
      "required": [
        "usePartitionedTables",
        "usesTimestampColumnPartitioning"
      ]
    },
    "google-native:logging/v2:BillingAccountSinkOutputVersionFormat": {
      "description": "Deprecated. This field is unused.",
      "type": "string",
      "enum": [
        {
          "name": "VersionFormatUnspecified",
          "description": "An unspecified format version that will default to V2.",
          "value": "VERSION_FORMAT_UNSPECIFIED"
        },
        {
          "name": "V2",
          "description": "LogEntry version 2 format.",
          "value": "V2"
        },
        {
          "name": "V1",
          "description": "LogEntry version 1 format.",
          "value": "V1"
        }
      ]
    },
    "google-native:logging/v2:BucketOptions": {
      "description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.",
      "properties": {
        "explicitBuckets": {
          "$ref": "#/types/google-native:logging%2Fv2:Explicit",
          "description": "The explicit buckets."
        },
        "exponentialBuckets": {
          "$ref": "#/types/google-native:logging%2Fv2:Exponential",
          "description": "The exponential buckets."
        },
        "linearBuckets": {
          "$ref": "#/types/google-native:logging%2Fv2:Linear",
          "description": "The linear bucket."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:BucketOptionsResponse": {
      "description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.",
      "properties": {
        "explicitBuckets": {
          "$ref": "#/types/google-native:logging%2Fv2:ExplicitResponse",
          "description": "The explicit buckets."
        },
        "exponentialBuckets": {
          "$ref": "#/types/google-native:logging%2Fv2:ExponentialResponse",
          "description": "The exponential buckets."
        },
        "linearBuckets": {
          "$ref": "#/types/google-native:logging%2Fv2:LinearResponse",
          "description": "The linear bucket."
        }
      },
      "type": "object",
      "required": [
        "explicitBuckets",
        "exponentialBuckets",
        "linearBuckets"
      ]
    },
    "google-native:logging/v2:CmekSettings": {
      "description": "Describes the customer-managed encryption key (CMEK) settings associated with a project, folder, organization, billing account, or flexible resource.Note: CMEK for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The resource name for the configured Cloud KMS key.KMS key name format: \"projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]\" For example:\"projects/my-project/locations/us-central1/keyRings/my-ring/cryptoKeys/my-key\"To enable CMEK for the Log Router, set this field to a valid kms_key_name for which the associated service account has the needed cloudkms.cryptoKeyEncrypterDecrypter roles assigned for the key.The Cloud KMS key used by the Log Router can be updated by changing the kms_key_name to a new valid key name or disabled by setting the key name to an empty string. Encryption operations that are in progress will be completed with the key that was in use when they started. Decryption operations will be completed using the key that was used at the time of encryption unless access to that key has been revoked.To disable CMEK for the Log Router, set this field to an empty string.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information."
        },
        "kmsKeyVersionName": {
          "type": "string",
          "description": "The CryptoKeyVersion resource name for the configured Cloud KMS key.KMS key name format: \"projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]/cryptoKeyVersions/[VERSION]\" For example:\"projects/my-project/locations/us-central1/keyRings/my-ring/cryptoKeys/my-key/cryptoKeyVersions/1\"This is a read-only field used to convey the specific configured CryptoKeyVersion of kms_key that has been configured. It will be populated in cases where the CMEK settings are bound to a single key version.If this field is populated, the kms_key is tied to a specific CryptoKeyVersion."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:CmekSettingsResponse": {
      "description": "Describes the customer-managed encryption key (CMEK) settings associated with a project, folder, organization, billing account, or flexible resource.Note: CMEK for the Log Router can currently only be configured for Google Cloud organizations. Once configured, it applies to all projects and folders in the Google Cloud organization.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The resource name for the configured Cloud KMS key.KMS key name format: \"projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]\" For example:\"projects/my-project/locations/us-central1/keyRings/my-ring/cryptoKeys/my-key\"To enable CMEK for the Log Router, set this field to a valid kms_key_name for which the associated service account has the needed cloudkms.cryptoKeyEncrypterDecrypter roles assigned for the key.The Cloud KMS key used by the Log Router can be updated by changing the kms_key_name to a new valid key name or disabled by setting the key name to an empty string. Encryption operations that are in progress will be completed with the key that was in use when they started. Decryption operations will be completed using the key that was used at the time of encryption unless access to that key has been revoked.To disable CMEK for the Log Router, set this field to an empty string.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information."
        },
        "kmsKeyVersionName": {
          "type": "string",
          "description": "The CryptoKeyVersion resource name for the configured Cloud KMS key.KMS key name format: \"projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]/cryptoKeyVersions/[VERSION]\" For example:\"projects/my-project/locations/us-central1/keyRings/my-ring/cryptoKeys/my-key/cryptoKeyVersions/1\"This is a read-only field used to convey the specific configured CryptoKeyVersion of kms_key that has been configured. It will be populated in cases where the CMEK settings are bound to a single key version.If this field is populated, the kms_key is tied to a specific CryptoKeyVersion."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the CMEK settings."
        },
        "serviceAccountId": {
          "type": "string",
          "description": "The service account that will be used by the Log Router to access your Cloud KMS key.Before enabling CMEK for Log Router, you must first assign the cloudkms.cryptoKeyEncrypterDecrypter role to the service account that the Log Router will use to access your Cloud KMS key. Use GetCmekSettings to obtain the service account ID.See Enabling CMEK for Log Router (https://cloud.google.com/logging/docs/routing/managed-encryption) for more information."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName",
        "kmsKeyVersionName",
        "name",
        "serviceAccountId"
      ]
    },
    "google-native:logging/v2:Explicit": {
      "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): boundsi Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.",
      "properties": {
        "bounds": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "The values must be monotonically increasing."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:ExplicitResponse": {
      "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): boundsi Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.",
      "properties": {
        "bounds": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "The values must be monotonically increasing."
        }
      },
      "type": "object",
      "required": [
        "bounds"
      ]
    },
    "google-native:logging/v2:Exponential": {
      "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).",
      "properties": {
        "growthFactor": {
          "type": "number",
          "description": "Must be greater than 1."
        },
        "numFiniteBuckets": {
          "type": "integer",
          "description": "Must be greater than 0."
        },
        "scale": {
          "type": "number",
          "description": "Must be greater than 0."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:ExponentialResponse": {
      "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).",
      "properties": {
        "growthFactor": {
          "type": "number",
          "description": "Must be greater than 1."
        },
        "numFiniteBuckets": {
          "type": "integer",
          "description": "Must be greater than 0."
        },
        "scale": {
          "type": "number",
          "description": "Must be greater than 0."
        }
      },
      "type": "object",
      "required": [
        "growthFactor",
        "numFiniteBuckets",
        "scale"
      ]
    },
    "google-native:logging/v2:FolderSinkOutputVersionFormat": {
      "description": "Deprecated. This field is unused.",
      "type": "string",
      "enum": [
        {
          "name": "VersionFormatUnspecified",
          "description": "An unspecified format version that will default to V2.",
          "value": "VERSION_FORMAT_UNSPECIFIED"
        },
        {
          "name": "V2",
          "description": "LogEntry version 2 format.",
          "value": "V2"
        },
        {
          "name": "V1",
          "description": "LogEntry version 1 format.",
          "value": "V1"
        }
      ]
    },
    "google-native:logging/v2:IndexConfig": {
      "description": "Configuration for an indexed field.",
      "properties": {
        "fieldPath": {
          "type": "string",
          "description": "The LogEntry field path to index.Note that some paths are automatically indexed, and other paths are not eligible for indexing. See indexing documentation( https://cloud.google.com/logging/docs/view/advanced-queries#indexed-fields) for details.For example: jsonPayload.request.status"
        },
        "type": {
          "$ref": "#/types/google-native:logging%2Fv2:IndexConfigType",
          "description": "The type of data in this index."
        }
      },
      "type": "object",
      "required": [
        "fieldPath",
        "type"
      ]
    },
    "google-native:logging/v2:IndexConfigResponse": {
      "description": "Configuration for an indexed field.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the index was last modified.This is used to return the timestamp, and will be ignored if supplied during update."
        },
        "fieldPath": {
          "type": "string",
          "description": "The LogEntry field path to index.Note that some paths are automatically indexed, and other paths are not eligible for indexing. See indexing documentation( https://cloud.google.com/logging/docs/view/advanced-queries#indexed-fields) for details.For example: jsonPayload.request.status"
        },
        "type": {
          "type": "string",
          "description": "The type of data in this index."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "fieldPath",
        "type"
      ]
    },
    "google-native:logging/v2:IndexConfigType": {
      "description": "Required. The type of data in this index.",
      "type": "string",
      "enum": [
        {
          "name": "IndexTypeUnspecified",
          "description": "The index's type is unspecified.",
          "value": "INDEX_TYPE_UNSPECIFIED"
        },
        {
          "name": "IndexTypeString",
          "description": "The index is a string-type index.",
          "value": "INDEX_TYPE_STRING"
        },
        {
          "name": "IndexTypeInteger",
          "description": "The index is a integer-type index.",
          "value": "INDEX_TYPE_INTEGER"
        }
      ]
    },
    "google-native:logging/v2:LabelDescriptor": {
      "description": "A description of a label.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description for the label."
        },
        "key": {
          "type": "string",
          "description": "The label key."
        },
        "valueType": {
          "$ref": "#/types/google-native:logging%2Fv2:LabelDescriptorValueType",
          "description": "The type of data that can be assigned to the label."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:LabelDescriptorResponse": {
      "description": "A description of a label.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description for the label."
        },
        "key": {
          "type": "string",
          "description": "The label key."
        },
        "valueType": {
          "type": "string",
          "description": "The type of data that can be assigned to the label."
        }
      },
      "type": "object",
      "required": [
        "description",
        "key",
        "valueType"
      ]
    },
    "google-native:logging/v2:LabelDescriptorValueType": {
      "description": "The type of data that can be assigned to the label.",
      "type": "string",
      "enum": [
        {
          "name": "String",
          "description": "A variable-length string. This is the default.",
          "value": "STRING"
        },
        {
          "name": "Bool",
          "description": "Boolean; true or false.",
          "value": "BOOL"
        },
        {
          "name": "Int64",
          "description": "A 64-bit signed integer.",
          "value": "INT64"
        }
      ]
    },
    "google-native:logging/v2:Linear": {
      "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): offset + (width * i).Lower bound (1 <= i < N): offset + (width * (i - 1)).",
      "properties": {
        "numFiniteBuckets": {
          "type": "integer",
          "description": "Must be greater than 0."
        },
        "offset": {
          "type": "number",
          "description": "Lower bound of the first bucket."
        },
        "width": {
          "type": "number",
          "description": "Must be greater than 0."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:LinearResponse": {
      "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): offset + (width * i).Lower bound (1 <= i < N): offset + (width * (i - 1)).",
      "properties": {
        "numFiniteBuckets": {
          "type": "integer",
          "description": "Must be greater than 0."
        },
        "offset": {
          "type": "number",
          "description": "Lower bound of the first bucket."
        },
        "width": {
          "type": "number",
          "description": "Must be greater than 0."
        }
      },
      "type": "object",
      "required": [
        "numFiniteBuckets",
        "offset",
        "width"
      ]
    },
    "google-native:logging/v2:LogExclusion": {
      "description": "Specifies a set of log entries that are filtered out by a sink. If your Google Cloud resource receives a large volume of log entries, you can use exclusions to reduce your chargeable logs. Note that exclusions on organization-level and folder-level sinks don't apply to child resources. Note also that you cannot modify the _Required sink or exclude logs from it.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "name"
      ]
    },
    "google-native:logging/v2:LogExclusionResponse": {
      "description": "Specifies a set of log entries that are filtered out by a sink. If your Google Cloud resource receives a large volume of log entries, you can use exclusions to reduce your chargeable logs. Note that exclusions on organization-level and folder-level sinks don't apply to child resources. Note also that you cannot modify the _Required sink or exclude logs from it.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "disabled",
        "filter",
        "name",
        "updateTime"
      ]
    },
    "google-native:logging/v2:MetricDescriptor": {
      "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A detailed description of the metric, which can be used in documentation."
        },
        "displayName": {
          "type": "string",
          "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LabelDescriptor"
          },
          "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed."
        },
        "launchStage": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptorLaunchStage",
          "description": "Optional. The launch stage of the metric definition."
        },
        "metadata": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptorMetadata",
          "description": "Optional. Metadata which can be used to guide usage of the metric."
        },
        "metricKind": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptorMetricKind",
          "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported."
        },
        "monitoredResourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the metric descriptor."
        },
        "type": {
          "type": "string",
          "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name custom.googleapis.com or external.googleapis.com. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\" "
        },
        "unit": {
          "type": "string",
          "description": "The units in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the representation of the stored metric values.Different systems might scale the values to be more easily displayed (so a value of 0.02kBy might be displayed as 20By, and a value of 3523kBy might be displayed as 3.5MBy). However, if the unit is kBy, then the value of the metric is always in thousands of bytes, no matter how it might be displayed.If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an INT64 CUMULATIVE metric whose unit is s{CPU} (or equivalently 1s{CPU} or just s). If the job uses 12,005 CPU-seconds, then the value is written as 12005.Alternatively, if you want a custom metric to record data in a more granular way, you can create a DOUBLE CUMULATIVE metric whose unit is ks{CPU}, and then write the value 12.005 (which is 12005/1000), or use Kis{CPU} and write 11.723 (which is 12005/1024).The supported units are a subset of The Unified Code for Units of Measure (https://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT) bit bit By byte s second min minute h hour d day 1 dimensionlessPrefixes (PREFIX) k kilo (10^3) M mega (10^6) G giga (10^9) T tera (10^12) P peta (10^15) E exa (10^18) Z zetta (10^21) Y yotta (10^24) m milli (10^-3) u micro (10^-6) n nano (10^-9) p pico (10^-12) f femto (10^-15) a atto (10^-18) z zepto (10^-21) y yocto (10^-24) Ki kibi (2^10) Mi mebi (2^20) Gi gibi (2^30) Ti tebi (2^40) Pi pebi (2^50)GrammarThe grammar also includes these connectors: / division or ratio (as an infix operator). For examples, kBy/{email} or MiBy/10ms (although you should almost never have /s in a metric unit; rates should always be computed at query time from the underlying cumulative or delta value). . multiplication or composition (as an infix operator). For examples, GBy.d or k{watt}.h.The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: Annotation is just a comment if it follows a UNIT. If the annotation is used alone, then the unit is equivalent to 1. For examples, {request}/s == 1/s, By{transmitted}/s == By/s. NAME is a sequence of non-blank printable ASCII characters not containing { or }. 1 represents a unitary dimensionless unit (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in 1/s. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as 1/d or {new-users}/d (and a metric value 5 would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as 1000/d or k1/d or k{page_views}/d (and a metric value of 5.3 would mean \"5300 page views per day\"). % represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value 3 means \"3 percent\"). 10^2.% indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value 0.03 means \"3 percent\")."
        },
        "valueType": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptorValueType",
          "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:MetricDescriptorLaunchStage": {
      "description": "Optional. The launch stage of the metric definition.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:logging/v2:MetricDescriptorMetadata": {
      "description": "Additional annotations that can be used to guide the usage of a metric.",
      "properties": {
        "ingestDelay": {
          "type": "string",
          "description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors."
        },
        "launchStage": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptorMetadataLaunchStage",
          "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
          "deprecationMessage": "Deprecated. Must use the MetricDescriptor.launch_stage instead."
        },
        "samplePeriod": {
          "type": "string",
          "description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period."
        }
      },
      "type": "object"
    },
    "google-native:logging/v2:MetricDescriptorMetadataLaunchStage": {
      "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:logging/v2:MetricDescriptorMetadataResponse": {
      "description": "Additional annotations that can be used to guide the usage of a metric.",
      "properties": {
        "ingestDelay": {
          "type": "string",
          "description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors."
        },
        "launchStage": {
          "type": "string",
          "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
          "deprecationMessage": "Deprecated. Must use the MetricDescriptor.launch_stage instead."
        },
        "samplePeriod": {
          "type": "string",
          "description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period."
        }
      },
      "type": "object",
      "required": [
        "ingestDelay",
        "launchStage",
        "samplePeriod"
      ]
    },
    "google-native:logging/v2:MetricDescriptorMetricKind": {
      "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.",
      "type": "string",
      "enum": [
        {
          "name": "MetricKindUnspecified",
          "description": "Do not use this default value.",
          "value": "METRIC_KIND_UNSPECIFIED"
        },
        {
          "name": "Gauge",
          "description": "An instantaneous measurement of a value.",
          "value": "GAUGE"
        },
        {
          "name": "Delta",
          "description": "The change in a value during a time interval.",
          "value": "DELTA"
        },
        {
          "name": "Cumulative",
          "description": "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.",
          "value": "CUMULATIVE"
        }
      ]
    },
    "google-native:logging/v2:MetricDescriptorResponse": {
      "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A detailed description of the metric, which can be used in documentation."
        },
        "displayName": {
          "type": "string",
          "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LabelDescriptorResponse"
          },
          "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed."
        },
        "launchStage": {
          "type": "string",
          "description": "Optional. The launch stage of the metric definition."
        },
        "metadata": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptorMetadataResponse",
          "description": "Optional. Metadata which can be used to guide usage of the metric."
        },
        "metricKind": {
          "type": "string",
          "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported."
        },
        "monitoredResourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the metric descriptor."
        },
        "type": {
          "type": "string",
          "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name custom.googleapis.com or external.googleapis.com. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\" "
        },
        "unit": {
          "type": "string",
          "description": "The units in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the representation of the stored metric values.Different systems might scale the values to be more easily displayed (so a value of 0.02kBy might be displayed as 20By, and a value of 3523kBy might be displayed as 3.5MBy). However, if the unit is kBy, then the value of the metric is always in thousands of bytes, no matter how it might be displayed.If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an INT64 CUMULATIVE metric whose unit is s{CPU} (or equivalently 1s{CPU} or just s). If the job uses 12,005 CPU-seconds, then the value is written as 12005.Alternatively, if you want a custom metric to record data in a more granular way, you can create a DOUBLE CUMULATIVE metric whose unit is ks{CPU}, and then write the value 12.005 (which is 12005/1000), or use Kis{CPU} and write 11.723 (which is 12005/1024).The supported units are a subset of The Unified Code for Units of Measure (https://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT) bit bit By byte s second min minute h hour d day 1 dimensionlessPrefixes (PREFIX) k kilo (10^3) M mega (10^6) G giga (10^9) T tera (10^12) P peta (10^15) E exa (10^18) Z zetta (10^21) Y yotta (10^24) m milli (10^-3) u micro (10^-6) n nano (10^-9) p pico (10^-12) f femto (10^-15) a atto (10^-18) z zepto (10^-21) y yocto (10^-24) Ki kibi (2^10) Mi mebi (2^20) Gi gibi (2^30) Ti tebi (2^40) Pi pebi (2^50)GrammarThe grammar also includes these connectors: / division or ratio (as an infix operator). For examples, kBy/{email} or MiBy/10ms (although you should almost never have /s in a metric unit; rates should always be computed at query time from the underlying cumulative or delta value). . multiplication or composition (as an infix operator). For examples, GBy.d or k{watt}.h.The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: Annotation is just a comment if it follows a UNIT. If the annotation is used alone, then the unit is equivalent to 1. For examples, {request}/s == 1/s, By{transmitted}/s == By/s. NAME is a sequence of non-blank printable ASCII characters not containing { or }. 1 represents a unitary dimensionless unit (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in 1/s. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as 1/d or {new-users}/d (and a metric value 5 would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as 1000/d or k1/d or k{page_views}/d (and a metric value of 5.3 would mean \"5300 page views per day\"). % represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value 3 means \"3 percent\"). 10^2.% indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value 0.03 means \"3 percent\")."
        },
        "valueType": {
          "type": "string",
          "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "labels",
        "launchStage",
        "metadata",
        "metricKind",
        "monitoredResourceTypes",
        "name",
        "type",
        "unit",
        "valueType"
      ]
    },
    "google-native:logging/v2:MetricDescriptorValueType": {
      "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "Do not use this default value.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Bool",
          "description": "The value is a boolean. This value type can be used only if the metric kind is GAUGE.",
          "value": "BOOL"
        },
        {
          "name": "Int64",
          "description": "The value is a signed 64-bit integer.",
          "value": "INT64"
        },
        {
          "name": "Double",
          "description": "The value is a double precision floating point number.",
          "value": "DOUBLE"
        },
        {
          "name": "String",
          "description": "The value is a text string. This value type can be used only if the metric kind is GAUGE.",
          "value": "STRING"
        },
        {
          "name": "Distribution",
          "description": "The value is a Distribution.",
          "value": "DISTRIBUTION"
        },
        {
          "name": "Money",
          "description": "The value is money.",
          "value": "MONEY"
        }
      ]
    },
    "google-native:logging/v2:MetricVersion": {
      "description": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.",
      "type": "string",
      "enum": [
        {
          "name": "V2",
          "description": "Logging API v2.",
          "value": "V2"
        },
        {
          "name": "V1",
          "description": "Logging API v1.",
          "value": "V1"
        }
      ]
    },
    "google-native:logging/v2:OrganizationSinkOutputVersionFormat": {
      "description": "Deprecated. This field is unused.",
      "type": "string",
      "enum": [
        {
          "name": "VersionFormatUnspecified",
          "description": "An unspecified format version that will default to V2.",
          "value": "VERSION_FORMAT_UNSPECIFIED"
        },
        {
          "name": "V2",
          "description": "LogEntry version 2 format.",
          "value": "V2"
        },
        {
          "name": "V1",
          "description": "LogEntry version 1 format.",
          "value": "V1"
        }
      ]
    },
    "google-native:logging/v2:SinkOutputVersionFormat": {
      "description": "Deprecated. This field is unused.",
      "type": "string",
      "enum": [
        {
          "name": "VersionFormatUnspecified",
          "description": "An unspecified format version that will default to V2.",
          "value": "VERSION_FORMAT_UNSPECIFIED"
        },
        {
          "name": "V2",
          "description": "LogEntry version 2 format.",
          "value": "V2"
        },
        {
          "name": "V1",
          "description": "LogEntry version 1 format.",
          "value": "V1"
        }
      ]
    },
    "google-native:looker/v1:AdminSettings": {
      "description": "Looker instance Admin settings fields.",
      "properties": {
        "allowedEmailDomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Email domain allowlist for the instance."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:AdminSettingsResponse": {
      "description": "Looker instance Admin settings fields.",
      "properties": {
        "allowedEmailDomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Email domain allowlist for the instance."
        }
      },
      "type": "object",
      "required": [
        "allowedEmailDomains"
      ]
    },
    "google-native:looker/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:looker/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:looker%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:looker/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:looker/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:looker%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:looker%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:looker/v1:CustomDomain": {
      "description": "Custom domain information.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name."
        },
        "state": {
          "$ref": "#/types/google-native:looker%2Fv1:CustomDomainState",
          "description": "Domain state."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:CustomDomainResponse": {
      "description": "Custom domain information.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Domain name."
        },
        "state": {
          "type": "string",
          "description": "Domain state."
        }
      },
      "type": "object",
      "required": [
        "domain",
        "state"
      ]
    },
    "google-native:looker/v1:CustomDomainState": {
      "description": "Domain state.",
      "type": "string",
      "enum": [
        {
          "name": "CustomDomainStateUnspecified",
          "description": "Unspecified state.",
          "value": "CUSTOM_DOMAIN_STATE_UNSPECIFIED"
        },
        {
          "name": "Unverified",
          "description": "DNS record is not created.",
          "value": "UNVERIFIED"
        },
        {
          "name": "Verified",
          "description": "DNS record is created.",
          "value": "VERIFIED"
        },
        {
          "name": "Modifying",
          "description": "Calling SLM to update.",
          "value": "MODIFYING"
        },
        {
          "name": "Available",
          "description": "ManagedCertificate is ready.",
          "value": "AVAILABLE"
        },
        {
          "name": "Unavailable",
          "description": "ManagedCertificate is not ready.",
          "value": "UNAVAILABLE"
        },
        {
          "name": "Unknown",
          "description": "Status is not known.",
          "value": "UNKNOWN"
        }
      ]
    },
    "google-native:looker/v1:Date": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:DateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:looker/v1:DenyMaintenancePeriod": {
      "description": "Specifies the maintenance denial period.",
      "properties": {
        "endDate": {
          "$ref": "#/types/google-native:looker%2Fv1:Date",
          "description": "End date of the deny maintenance period."
        },
        "startDate": {
          "$ref": "#/types/google-native:looker%2Fv1:Date",
          "description": "Start date of the deny maintenance period."
        },
        "time": {
          "$ref": "#/types/google-native:looker%2Fv1:TimeOfDay",
          "description": "Time in UTC when the period starts and ends."
        }
      },
      "type": "object",
      "required": [
        "endDate",
        "startDate",
        "time"
      ]
    },
    "google-native:looker/v1:DenyMaintenancePeriodResponse": {
      "description": "Specifies the maintenance denial period.",
      "properties": {
        "endDate": {
          "$ref": "#/types/google-native:looker%2Fv1:DateResponse",
          "description": "End date of the deny maintenance period."
        },
        "startDate": {
          "$ref": "#/types/google-native:looker%2Fv1:DateResponse",
          "description": "Start date of the deny maintenance period."
        },
        "time": {
          "$ref": "#/types/google-native:looker%2Fv1:TimeOfDayResponse",
          "description": "Time in UTC when the period starts and ends."
        }
      },
      "type": "object",
      "required": [
        "endDate",
        "startDate",
        "time"
      ]
    },
    "google-native:looker/v1:EncryptionConfig": {
      "description": "Encryption configuration (i.e. CMEK).",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Name of the CMEK key in KMS (input parameter)."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:EncryptionConfigResponse": {
      "description": "Encryption configuration (i.e. CMEK).",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Name of the CMEK key in KMS (input parameter)."
        },
        "kmsKeyNameVersion": {
          "type": "string",
          "description": "Full name and version of the CMEK key currently in use to encrypt Looker data. Format: `projects/{project}/locations/{location}/keyRings/{ring}/cryptoKeys/{key}/cryptoKeyVersions/{version}`. Empty if CMEK is not configured in this instance."
        },
        "kmsKeyState": {
          "type": "string",
          "description": "Status of the CMEK key."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName",
        "kmsKeyNameVersion",
        "kmsKeyState"
      ]
    },
    "google-native:looker/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:looker/v1:InstancePlatformEdition": {
      "description": "Platform edition.",
      "type": "string",
      "enum": [
        {
          "name": "PlatformEditionUnspecified",
          "description": "Platform edition is unspecified.",
          "value": "PLATFORM_EDITION_UNSPECIFIED"
        },
        {
          "name": "LookerCoreTrial",
          "description": "Trial.",
          "value": "LOOKER_CORE_TRIAL"
        },
        {
          "name": "LookerCoreStandard",
          "description": "Standard.",
          "value": "LOOKER_CORE_STANDARD"
        },
        {
          "name": "LookerCoreStandardAnnual",
          "description": "Subscription Standard.",
          "value": "LOOKER_CORE_STANDARD_ANNUAL"
        },
        {
          "name": "LookerCoreEnterpriseAnnual",
          "description": "Subscription Enterprise.",
          "value": "LOOKER_CORE_ENTERPRISE_ANNUAL"
        },
        {
          "name": "LookerCoreEmbedAnnual",
          "description": "Subscription Embed.",
          "value": "LOOKER_CORE_EMBED_ANNUAL"
        }
      ]
    },
    "google-native:looker/v1:MaintenanceSchedule": {
      "description": "Published upcoming future maintenance schedule.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The scheduled end time for the maintenance."
        },
        "startTime": {
          "type": "string",
          "description": "The scheduled start time for the maintenance."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:MaintenanceScheduleResponse": {
      "description": "Published upcoming future maintenance schedule.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The scheduled end time for the maintenance."
        },
        "startTime": {
          "type": "string",
          "description": "The scheduled start time for the maintenance."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "startTime"
      ]
    },
    "google-native:looker/v1:MaintenanceWindow": {
      "description": "Specifies the recurring maintenance window.",
      "properties": {
        "dayOfWeek": {
          "$ref": "#/types/google-native:looker%2Fv1:MaintenanceWindowDayOfWeek",
          "description": "Day of the week for this MaintenanceWindow (in UTC)."
        },
        "startTime": {
          "$ref": "#/types/google-native:looker%2Fv1:TimeOfDay",
          "description": "Time in UTC when the period starts. Maintenance will be scheduled within 60 minutes."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "startTime"
      ]
    },
    "google-native:looker/v1:MaintenanceWindowDayOfWeek": {
      "description": "Required. Day of the week for this MaintenanceWindow (in UTC).",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:looker/v1:MaintenanceWindowResponse": {
      "description": "Specifies the recurring maintenance window.",
      "properties": {
        "dayOfWeek": {
          "type": "string",
          "description": "Day of the week for this MaintenanceWindow (in UTC)."
        },
        "startTime": {
          "$ref": "#/types/google-native:looker%2Fv1:TimeOfDayResponse",
          "description": "Time in UTC when the period starts. Maintenance will be scheduled within 60 minutes."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "startTime"
      ]
    },
    "google-native:looker/v1:OAuthConfig": {
      "description": "Looker instance OAuth login settings.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Input only. Client ID from an external OAuth application. This is an input-only field, and thus will not be set in any responses."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Client secret from an external OAuth application. This is an input-only field, and thus will not be set in any responses."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:OAuthConfigResponse": {
      "description": "Looker instance OAuth login settings.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Input only. Client ID from an external OAuth application. This is an input-only field, and thus will not be set in any responses."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Client secret from an external OAuth application. This is an input-only field, and thus will not be set in any responses."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret"
      ]
    },
    "google-native:looker/v1:TimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:TimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:looker/v1:UserMetadata": {
      "description": "Metadata about users for a Looker instance.",
      "properties": {
        "additionalDeveloperUserCount": {
          "type": "integer",
          "description": "Optional. The number of additional developer users the instance owner has purchased."
        },
        "additionalStandardUserCount": {
          "type": "integer",
          "description": "Optional. The number of additional standard users the instance owner has purchased."
        },
        "additionalViewerUserCount": {
          "type": "integer",
          "description": "Optional. The number of additional viewer users the instance owner has purchased."
        }
      },
      "type": "object"
    },
    "google-native:looker/v1:UserMetadataResponse": {
      "description": "Metadata about users for a Looker instance.",
      "properties": {
        "additionalDeveloperUserCount": {
          "type": "integer",
          "description": "Optional. The number of additional developer users the instance owner has purchased."
        },
        "additionalStandardUserCount": {
          "type": "integer",
          "description": "Optional. The number of additional standard users the instance owner has purchased."
        },
        "additionalViewerUserCount": {
          "type": "integer",
          "description": "Optional. The number of additional viewer users the instance owner has purchased."
        }
      },
      "type": "object",
      "required": [
        "additionalDeveloperUserCount",
        "additionalStandardUserCount",
        "additionalViewerUserCount"
      ]
    },
    "google-native:managedidentities/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:managedidentities%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:managedidentities/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:managedidentities%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:managedidentities/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:managedidentities/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:managedidentities/v1:TrustResponse": {
      "description": "Represents a relationship between two domains. This allows a controller in one domain to authenticate a user in another domain. If the trust is being changed, it will be placed into the UPDATING state, which indicates that the resource is being reconciled. At this point, Get will reflect an intermediate state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "lastTrustHeartbeatTime": {
          "type": "string",
          "description": "The last heartbeat time when the trust was known to be connected."
        },
        "selectiveAuthentication": {
          "type": "boolean",
          "description": "Optional. The trust authentication type, which decides whether the trusted side has forest/domain wide access or selective access to an approved set of resources."
        },
        "state": {
          "type": "string",
          "description": "The current state of the trust."
        },
        "stateDescription": {
          "type": "string",
          "description": "Additional information about the current state of the trust, if available."
        },
        "targetDnsIpAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target DNS server IP addresses which can resolve the remote domain involved in the trust."
        },
        "targetDomainName": {
          "type": "string",
          "description": "The fully qualified target domain name which will be in trust with the current domain."
        },
        "trustDirection": {
          "type": "string",
          "description": "The trust direction, which decides if the current domain is trusted, trusting, or both."
        },
        "trustHandshakeSecret": {
          "type": "string",
          "description": "The trust secret used for the handshake with the target domain. This will not be stored."
        },
        "trustType": {
          "type": "string",
          "description": "The type of trust represented by the trust resource."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "lastTrustHeartbeatTime",
        "selectiveAuthentication",
        "state",
        "stateDescription",
        "targetDnsIpAddresses",
        "targetDomainName",
        "trustDirection",
        "trustHandshakeSecret",
        "trustType",
        "updateTime"
      ]
    },
    "google-native:managedidentities/v1alpha1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:managedidentities/v1alpha1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:managedidentities/v1alpha1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:managedidentities/v1alpha1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:managedidentities/v1alpha1:TrustResponse": {
      "description": "Represents a relationship between two domains which makes it possible for users in one domain to be authenticated by a dc in another domain. Refer https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731335(v%3dws.10) If the trust is being changed, it will be placed into the UPDATING state, which indicates that the resource is being reconciled. At this point, Get will reflect an intermediate state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "lastKnownTrustConnectedHeartbeatTime": {
          "type": "string",
          "description": "The last heartbeat time when the trust was known to be connected."
        },
        "selectiveAuthentication": {
          "type": "boolean",
          "description": "The trust authentication type which decides whether the trusted side has forest/domain wide access or selective access to approved set of resources."
        },
        "state": {
          "type": "string",
          "description": "The current state of this trust."
        },
        "stateDescription": {
          "type": "string",
          "description": "Additional information about the current state of this trust, if available."
        },
        "targetDnsIpAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target dns server ip addresses which can resolve the remote domain involved in trust."
        },
        "targetDomainName": {
          "type": "string",
          "description": "The fully qualified target domain name which will be in trust with current domain."
        },
        "trustDirection": {
          "type": "string",
          "description": "The trust direction decides the current domain is trusted, trusting or both."
        },
        "trustHandshakeSecret": {
          "type": "string",
          "description": "Input only, and will not be stored. The trust secret used for handshake with target domain."
        },
        "trustType": {
          "type": "string",
          "description": "The type of trust represented by the trust resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "lastKnownTrustConnectedHeartbeatTime",
        "selectiveAuthentication",
        "state",
        "stateDescription",
        "targetDnsIpAddresses",
        "targetDomainName",
        "trustDirection",
        "trustHandshakeSecret",
        "trustType",
        "updateTime"
      ]
    },
    "google-native:managedidentities/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:managedidentities%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:managedidentities/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:managedidentities%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:managedidentities/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:managedidentities/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:managedidentities/v1beta1:TrustResponse": {
      "description": "Represents a relationship between two domains. This allows a controller in one domain to authenticate a user in another domain.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "lastTrustHeartbeatTime": {
          "type": "string",
          "description": "The last heartbeat time when the trust was known to be connected."
        },
        "selectiveAuthentication": {
          "type": "boolean",
          "description": "The trust authentication type, which decides whether the trusted side has forest/domain wide access or selective access to an approved set of resources."
        },
        "state": {
          "type": "string",
          "description": "The current state of the trust."
        },
        "stateDescription": {
          "type": "string",
          "description": "Additional information about the current state of the trust, if available."
        },
        "targetDnsIpAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target DNS server IP addresses which can resolve the remote domain involved in the trust."
        },
        "targetDomainName": {
          "type": "string",
          "description": "The fully qualified target domain name which will be in trust with the current domain."
        },
        "trustDirection": {
          "type": "string",
          "description": "The trust direction, which decides if the current domain is trusted, trusting, or both."
        },
        "trustHandshakeSecret": {
          "type": "string",
          "description": "Input only. The trust secret used for the handshake with the target domain. It will not be stored."
        },
        "trustType": {
          "type": "string",
          "description": "The type of trust represented by the trust resource."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "lastTrustHeartbeatTime",
        "selectiveAuthentication",
        "state",
        "stateDescription",
        "targetDnsIpAddresses",
        "targetDomainName",
        "trustDirection",
        "trustHandshakeSecret",
        "trustType",
        "updateTime"
      ]
    },
    "google-native:memcache/v1:GoogleCloudMemcacheV1MaintenancePolicy": {
      "description": "Maintenance policy per instance.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "weeklyMaintenanceWindow": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1:WeeklyMaintenanceWindow"
          },
          "description": "Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_maintenance_windows is expected to be one."
        }
      },
      "type": "object",
      "required": [
        "weeklyMaintenanceWindow"
      ]
    },
    "google-native:memcache/v1:GoogleCloudMemcacheV1MaintenancePolicyResponse": {
      "description": "Maintenance policy per instance.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the policy was created."
        },
        "description": {
          "type": "string",
          "description": "Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the policy was updated."
        },
        "weeklyMaintenanceWindow": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1:WeeklyMaintenanceWindowResponse"
          },
          "description": "Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_maintenance_windows is expected to be one."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "updateTime",
        "weeklyMaintenanceWindow"
      ]
    },
    "google-native:memcache/v1:InstanceMemcacheVersion": {
      "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version.",
      "type": "string",
      "enum": [
        {
          "name": "MemcacheVersionUnspecified",
          "description": "Memcache version is not specified by customer",
          "value": "MEMCACHE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Memcache15",
          "description": "Memcached 1.5 version.",
          "value": "MEMCACHE_1_5"
        },
        {
          "name": "Memcache1615",
          "description": "Memcached 1.6.15 version.",
          "value": "MEMCACHE_1_6_15"
        }
      ]
    },
    "google-native:memcache/v1:InstanceMessage": {
      "properties": {
        "code": {
          "$ref": "#/types/google-native:memcache%2Fv1:InstanceMessageCode",
          "description": "A code that correspond to one type of user-facing message."
        },
        "message": {
          "type": "string",
          "description": "Message on memcached instance which will be exposed to users."
        }
      },
      "type": "object"
    },
    "google-native:memcache/v1:InstanceMessageCode": {
      "description": "A code that correspond to one type of user-facing message.",
      "type": "string",
      "enum": [
        {
          "name": "CodeUnspecified",
          "description": "Message Code not set.",
          "value": "CODE_UNSPECIFIED"
        },
        {
          "name": "ZoneDistributionUnbalanced",
          "description": "Memcached nodes are distributed unevenly.",
          "value": "ZONE_DISTRIBUTION_UNBALANCED"
        }
      ]
    },
    "google-native:memcache/v1:InstanceMessageResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A code that correspond to one type of user-facing message."
        },
        "message": {
          "type": "string",
          "description": "Message on memcached instance which will be exposed to users."
        }
      },
      "type": "object",
      "required": [
        "code",
        "message"
      ]
    },
    "google-native:memcache/v1:MaintenanceScheduleResponse": {
      "description": "Upcoming maintenance schedule.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The end time of any upcoming scheduled maintenance for this instance."
        },
        "scheduleDeadlineTime": {
          "type": "string",
          "description": "The deadline that the maintenance schedule start time can not go beyond, including reschedule."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "scheduleDeadlineTime",
        "startTime"
      ]
    },
    "google-native:memcache/v1:MemcacheParameters": {
      "properties": {
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User defined set of parameters to use in the memcached process."
        }
      },
      "type": "object"
    },
    "google-native:memcache/v1:MemcacheParametersResponse": {
      "properties": {
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User defined set of parameters to use in the memcached process."
        }
      },
      "type": "object",
      "required": [
        "params"
      ]
    },
    "google-native:memcache/v1:NodeConfig": {
      "description": "Configuration for a Memcached Node.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "Number of cpus per Memcached node."
        },
        "memorySizeMb": {
          "type": "integer",
          "description": "Memory size in MiB for each Memcached node."
        }
      },
      "type": "object",
      "required": [
        "cpuCount",
        "memorySizeMb"
      ]
    },
    "google-native:memcache/v1:NodeConfigResponse": {
      "description": "Configuration for a Memcached Node.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "Number of cpus per Memcached node."
        },
        "memorySizeMb": {
          "type": "integer",
          "description": "Memory size in MiB for each Memcached node."
        }
      },
      "type": "object",
      "required": [
        "cpuCount",
        "memorySizeMb"
      ]
    },
    "google-native:memcache/v1:NodeResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the Memcached node used by the clients to connect to the Memcached server on this node."
        },
        "memcacheFullVersion": {
          "type": "string",
          "description": "The full version of memcached server running on this node. e.g. - memcached-1.5.16"
        },
        "memcacheVersion": {
          "type": "string",
          "description": "Major version of memcached server running on this node, e.g. MEMCACHE_1_5"
        },
        "nodeId": {
          "type": "string",
          "description": "Identifier of the Memcached node. The node id does not include project or location like the Memcached instance name."
        },
        "parameters": {
          "$ref": "#/types/google-native:memcache%2Fv1:MemcacheParametersResponse",
          "description": "User defined parameters currently applied to the node."
        },
        "port": {
          "type": "integer",
          "description": "The port number of the Memcached server on this node."
        },
        "state": {
          "type": "string",
          "description": "Current state of the Memcached node."
        },
        "zone": {
          "type": "string",
          "description": "Location (GCP Zone) for the Memcached node."
        }
      },
      "type": "object",
      "required": [
        "host",
        "memcacheFullVersion",
        "memcacheVersion",
        "nodeId",
        "parameters",
        "port",
        "state",
        "zone"
      ]
    },
    "google-native:memcache/v1:TimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:memcache/v1:TimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:memcache/v1:WeeklyMaintenanceWindow": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "day": {
          "$ref": "#/types/google-native:memcache%2Fv1:WeeklyMaintenanceWindowDay",
          "description": "Allows to define schedule that runs specified day of the week."
        },
        "duration": {
          "type": "string",
          "description": "Duration of the time window."
        },
        "startTime": {
          "$ref": "#/types/google-native:memcache%2Fv1:TimeOfDay",
          "description": "Start time of the window in UTC."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:memcache/v1:WeeklyMaintenanceWindowDay": {
      "description": "Required. Allows to define schedule that runs specified day of the week.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:memcache/v1:WeeklyMaintenanceWindowResponse": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "day": {
          "type": "string",
          "description": "Allows to define schedule that runs specified day of the week."
        },
        "duration": {
          "type": "string",
          "description": "Duration of the time window."
        },
        "startTime": {
          "$ref": "#/types/google-native:memcache%2Fv1:TimeOfDayResponse",
          "description": "Start time of the window in UTC."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:memcache/v1beta2:GoogleCloudMemcacheV1beta2MaintenancePolicy": {
      "description": "Maintenance policy per instance.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "weeklyMaintenanceWindow": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:WeeklyMaintenanceWindow"
          },
          "description": "Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_maintenance_windows is expected to be one."
        }
      },
      "type": "object",
      "required": [
        "weeklyMaintenanceWindow"
      ]
    },
    "google-native:memcache/v1beta2:GoogleCloudMemcacheV1beta2MaintenancePolicyResponse": {
      "description": "Maintenance policy per instance.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the policy was created."
        },
        "description": {
          "type": "string",
          "description": "Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the policy was updated."
        },
        "weeklyMaintenanceWindow": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:WeeklyMaintenanceWindowResponse"
          },
          "description": "Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_maintenance_windows is expected to be one."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "updateTime",
        "weeklyMaintenanceWindow"
      ]
    },
    "google-native:memcache/v1beta2:InstanceMemcacheVersion": {
      "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version.",
      "type": "string",
      "enum": [
        {
          "name": "MemcacheVersionUnspecified",
          "description": "Memcache version is not specified by customer",
          "value": "MEMCACHE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Memcache15",
          "description": "Memcached 1.5 version.",
          "value": "MEMCACHE_1_5"
        },
        {
          "name": "Memcache1615",
          "description": "Memcached 1.6.15 version.",
          "value": "MEMCACHE_1_6_15"
        }
      ]
    },
    "google-native:memcache/v1beta2:InstanceMessage": {
      "properties": {
        "code": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:InstanceMessageCode",
          "description": "A code that correspond to one type of user-facing message."
        },
        "message": {
          "type": "string",
          "description": "Message on memcached instance which will be exposed to users."
        }
      },
      "type": "object"
    },
    "google-native:memcache/v1beta2:InstanceMessageCode": {
      "description": "A code that correspond to one type of user-facing message.",
      "type": "string",
      "enum": [
        {
          "name": "CodeUnspecified",
          "description": "Message Code not set.",
          "value": "CODE_UNSPECIFIED"
        },
        {
          "name": "ZoneDistributionUnbalanced",
          "description": "Memcached nodes are distributed unevenly.",
          "value": "ZONE_DISTRIBUTION_UNBALANCED"
        }
      ]
    },
    "google-native:memcache/v1beta2:InstanceMessageResponse": {
      "properties": {
        "code": {
          "type": "string",
          "description": "A code that correspond to one type of user-facing message."
        },
        "message": {
          "type": "string",
          "description": "Message on memcached instance which will be exposed to users."
        }
      },
      "type": "object",
      "required": [
        "code",
        "message"
      ]
    },
    "google-native:memcache/v1beta2:MaintenanceScheduleResponse": {
      "description": "Upcoming maintenance schedule.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The end time of any upcoming scheduled maintenance for this instance."
        },
        "scheduleDeadlineTime": {
          "type": "string",
          "description": "The deadline that the maintenance schedule start time can not go beyond, including reschedule."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "scheduleDeadlineTime",
        "startTime"
      ]
    },
    "google-native:memcache/v1beta2:MemcacheParameters": {
      "properties": {
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User defined set of parameters to use in the memcached process."
        }
      },
      "type": "object"
    },
    "google-native:memcache/v1beta2:MemcacheParametersResponse": {
      "properties": {
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User defined set of parameters to use in the memcached process."
        }
      },
      "type": "object",
      "required": [
        "params"
      ]
    },
    "google-native:memcache/v1beta2:NodeConfig": {
      "description": "Configuration for a Memcached Node.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "Number of cpus per Memcached node."
        },
        "memorySizeMb": {
          "type": "integer",
          "description": "Memory size in MiB for each Memcached node."
        }
      },
      "type": "object",
      "required": [
        "cpuCount",
        "memorySizeMb"
      ]
    },
    "google-native:memcache/v1beta2:NodeConfigResponse": {
      "description": "Configuration for a Memcached Node.",
      "properties": {
        "cpuCount": {
          "type": "integer",
          "description": "Number of cpus per Memcached node."
        },
        "memorySizeMb": {
          "type": "integer",
          "description": "Memory size in MiB for each Memcached node."
        }
      },
      "type": "object",
      "required": [
        "cpuCount",
        "memorySizeMb"
      ]
    },
    "google-native:memcache/v1beta2:NodeResponse": {
      "properties": {
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the Memcached node used by the clients to connect to the Memcached server on this node."
        },
        "memcacheFullVersion": {
          "type": "string",
          "description": "The full version of memcached server running on this node. e.g. - memcached-1.5.16"
        },
        "memcacheVersion": {
          "type": "string",
          "description": "Major version of memcached server running on this node, e.g. MEMCACHE_1_5"
        },
        "nodeId": {
          "type": "string",
          "description": "Identifier of the Memcached node. The node id does not include project or location like the Memcached instance name."
        },
        "parameters": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:MemcacheParametersResponse",
          "description": "User defined parameters currently applied to the node."
        },
        "port": {
          "type": "integer",
          "description": "The port number of the Memcached server on this node."
        },
        "state": {
          "type": "string",
          "description": "Current state of the Memcached node."
        },
        "updateAvailable": {
          "type": "boolean",
          "description": "Returns true if there is an update waiting to be applied"
        },
        "zone": {
          "type": "string",
          "description": "Location (GCP Zone) for the Memcached node."
        }
      },
      "type": "object",
      "required": [
        "host",
        "memcacheFullVersion",
        "memcacheVersion",
        "nodeId",
        "parameters",
        "port",
        "state",
        "updateAvailable",
        "zone"
      ]
    },
    "google-native:memcache/v1beta2:TimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:memcache/v1beta2:TimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:memcache/v1beta2:WeeklyMaintenanceWindow": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "day": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:WeeklyMaintenanceWindowDay",
          "description": "Allows to define schedule that runs specified day of the week."
        },
        "duration": {
          "type": "string",
          "description": "Duration of the time window."
        },
        "startTime": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:TimeOfDay",
          "description": "Start time of the window in UTC."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:memcache/v1beta2:WeeklyMaintenanceWindowDay": {
      "description": "Required. Allows to define schedule that runs specified day of the week.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:memcache/v1beta2:WeeklyMaintenanceWindowResponse": {
      "description": "Time window specified for weekly operations.",
      "properties": {
        "day": {
          "type": "string",
          "description": "Allows to define schedule that runs specified day of the week."
        },
        "duration": {
          "type": "string",
          "description": "Duration of the time window."
        },
        "startTime": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:TimeOfDayResponse",
          "description": "Start time of the window in UTC."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:metastore/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:metastore/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:metastore%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:metastore/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:metastore/v1:Binding": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:metastore%2Fv1:Expr",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:BindingResponse": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:metastore%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:metastore/v1:Consumer": {
      "description": "Contains information of the customer's network configurations.",
      "properties": {
        "subnetwork": {
          "type": "string",
          "description": "Immutable. The subnetwork of the customer project from which an IP address is reserved and used as the Dataproc Metastore service's endpoint. It is accessible to hosts in the subnet and to all hosts in a subnet in the same region and same network. There must be at least one IP address available in the subnet's primary range. The subnet is specified in the following form:projects/{project_number}/regions/{region_id}/subnetworks/{subnetwork_id}"
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:ConsumerResponse": {
      "description": "Contains information of the customer's network configurations.",
      "properties": {
        "endpointLocation": {
          "type": "string",
          "description": "The location of the endpoint URI. Format: projects/{project}/locations/{location}."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "subnetwork": {
          "type": "string",
          "description": "Immutable. The subnetwork of the customer project from which an IP address is reserved and used as the Dataproc Metastore service's endpoint. It is accessible to hosts in the subnet and to all hosts in a subnet in the same region and same network. There must be at least one IP address available in the subnet's primary range. The subnet is specified in the following form:projects/{project_number}/regions/{region_id}/subnetworks/{subnetwork_id}"
        }
      },
      "type": "object",
      "required": [
        "endpointLocation",
        "endpointUri",
        "subnetwork"
      ]
    },
    "google-native:metastore/v1:DataCatalogConfig": {
      "description": "Specifies how metastore metadata should be integrated with the Data Catalog service.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Defines whether the metastore metadata should be synced to Data Catalog. The default value is to disable syncing metastore metadata to Data Catalog."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:DataCatalogConfigResponse": {
      "description": "Specifies how metastore metadata should be integrated with the Data Catalog service.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Defines whether the metastore metadata should be synced to Data Catalog. The default value is to disable syncing metastore metadata to Data Catalog."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:metastore/v1:DatabaseDump": {
      "description": "A specification of the location of and metadata about a database dump from a relational database management system.",
      "properties": {
        "databaseType": {
          "$ref": "#/types/google-native:metastore%2Fv1:DatabaseDumpDatabaseType",
          "description": "The type of the database."
        },
        "gcsUri": {
          "type": "string",
          "description": "A Cloud Storage object or folder URI that specifies the source from which to import metadata. It must begin with gs://."
        },
        "sourceDatabase": {
          "type": "string",
          "description": "The name of the source database."
        },
        "type": {
          "$ref": "#/types/google-native:metastore%2Fv1:DatabaseDumpType",
          "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:DatabaseDumpDatabaseType": {
      "description": "The type of the database.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "The type of the source database is unknown.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "The type of the source database is MySQL.",
          "value": "MYSQL"
        }
      ]
    },
    "google-native:metastore/v1:DatabaseDumpResponse": {
      "description": "A specification of the location of and metadata about a database dump from a relational database management system.",
      "properties": {
        "databaseType": {
          "type": "string",
          "description": "The type of the database."
        },
        "gcsUri": {
          "type": "string",
          "description": "A Cloud Storage object or folder URI that specifies the source from which to import metadata. It must begin with gs://."
        },
        "sourceDatabase": {
          "type": "string",
          "description": "The name of the source database."
        },
        "type": {
          "type": "string",
          "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL."
        }
      },
      "type": "object",
      "required": [
        "databaseType",
        "gcsUri",
        "sourceDatabase",
        "type"
      ]
    },
    "google-native:metastore/v1:DatabaseDumpType": {
      "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type of the database dump is unknown.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "Database dump is a MySQL dump file.",
          "value": "MYSQL"
        },
        {
          "name": "Avro",
          "description": "Database dump contains Avro files.",
          "value": "AVRO"
        }
      ]
    },
    "google-native:metastore/v1:EncryptionConfig": {
      "description": "Encryption settings for the service.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The fully qualified customer provided Cloud KMS key name to use for customer data encryption, in the following form:projects/{project_number}/locations/{location_id}/keyRings/{key_ring_id}/cryptoKeys/{crypto_key_id}."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:EncryptionConfigResponse": {
      "description": "Encryption settings for the service.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The fully qualified customer provided Cloud KMS key name to use for customer data encryption, in the following form:projects/{project_number}/locations/{location_id}/keyRings/{key_ring_id}/cryptoKeys/{crypto_key_id}."
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:metastore/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:metastore/v1:HiveMetastoreConfig": {
      "description": "Specifies configuration information specific to running Hive metastore software as the metastore service.",
      "properties": {
        "auxiliaryVersions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore version to the auxiliary version configuration. When specified, a secondary Hive metastore service is created along with the primary service. All auxiliary versions must be less than the service's primary version. The key is the auxiliary service name and it must match the regular expression a-z?. This means that the first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen."
        },
        "configOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore configuration key-value pairs to apply to the Hive metastore (configured in hive-site.xml). The mappings override system defaults (some keys cannot be overridden). These overrides are also applied to auxiliary versions and can be further customized in the auxiliary version's AuxiliaryVersionConfig."
        },
        "endpointProtocol": {
          "$ref": "#/types/google-native:metastore%2Fv1:HiveMetastoreConfigEndpointProtocol",
          "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT."
        },
        "kerberosConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:KerberosConfig",
          "description": "Information used to configure the Hive metastore service as a service principal in a Kerberos realm. To disable Kerberos, use the UpdateService method and specify this field's path (hive_metastore_config.kerberos_config) in the request's update_mask while omitting this field from the request's service."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Hive metastore schema version."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:HiveMetastoreConfigEndpointProtocol": {
      "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT.",
      "type": "string",
      "enum": [
        {
          "name": "EndpointProtocolUnspecified",
          "description": "The protocol is not set.",
          "value": "ENDPOINT_PROTOCOL_UNSPECIFIED"
        },
        {
          "name": "Thrift",
          "description": "Use the legacy Apache Thrift protocol for the metastore service endpoint.",
          "value": "THRIFT"
        },
        {
          "name": "Grpc",
          "description": "Use the modernized gRPC protocol for the metastore service endpoint.",
          "value": "GRPC"
        }
      ]
    },
    "google-native:metastore/v1:HiveMetastoreConfigResponse": {
      "description": "Specifies configuration information specific to running Hive metastore software as the metastore service.",
      "properties": {
        "auxiliaryVersions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore version to the auxiliary version configuration. When specified, a secondary Hive metastore service is created along with the primary service. All auxiliary versions must be less than the service's primary version. The key is the auxiliary service name and it must match the regular expression a-z?. This means that the first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen."
        },
        "configOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore configuration key-value pairs to apply to the Hive metastore (configured in hive-site.xml). The mappings override system defaults (some keys cannot be overridden). These overrides are also applied to auxiliary versions and can be further customized in the auxiliary version's AuxiliaryVersionConfig."
        },
        "endpointProtocol": {
          "type": "string",
          "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT."
        },
        "kerberosConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:KerberosConfigResponse",
          "description": "Information used to configure the Hive metastore service as a service principal in a Kerberos realm. To disable Kerberos, use the UpdateService method and specify this field's path (hive_metastore_config.kerberos_config) in the request's update_mask while omitting this field from the request's service."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Hive metastore schema version."
        }
      },
      "type": "object",
      "required": [
        "auxiliaryVersions",
        "configOverrides",
        "endpointProtocol",
        "kerberosConfig",
        "version"
      ]
    },
    "google-native:metastore/v1:KerberosConfig": {
      "description": "Configuration information for a Kerberos principal.",
      "properties": {
        "keytab": {
          "$ref": "#/types/google-native:metastore%2Fv1:Secret",
          "description": "A Kerberos keytab file that can be used to authenticate a service principal with a Kerberos Key Distribution Center (KDC)."
        },
        "krb5ConfigGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI that specifies the path to a krb5.conf file. It is of the form gs://{bucket_name}/path/to/krb5.conf, although the file does not need to be named krb5.conf explicitly."
        },
        "principal": {
          "type": "string",
          "description": "A Kerberos principal that exists in the both the keytab the KDC to authenticate as. A typical principal is of the form primary/instance@REALM, but there is no exact format."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:KerberosConfigResponse": {
      "description": "Configuration information for a Kerberos principal.",
      "properties": {
        "keytab": {
          "$ref": "#/types/google-native:metastore%2Fv1:SecretResponse",
          "description": "A Kerberos keytab file that can be used to authenticate a service principal with a Kerberos Key Distribution Center (KDC)."
        },
        "krb5ConfigGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI that specifies the path to a krb5.conf file. It is of the form gs://{bucket_name}/path/to/krb5.conf, although the file does not need to be named krb5.conf explicitly."
        },
        "principal": {
          "type": "string",
          "description": "A Kerberos principal that exists in the both the keytab the KDC to authenticate as. A typical principal is of the form primary/instance@REALM, but there is no exact format."
        }
      },
      "type": "object",
      "required": [
        "keytab",
        "krb5ConfigGcsUri",
        "principal"
      ]
    },
    "google-native:metastore/v1:MaintenanceWindow": {
      "description": "Maintenance window. This specifies when Dataproc Metastore may perform system maintenance operation to the service.",
      "properties": {
        "dayOfWeek": {
          "$ref": "#/types/google-native:metastore%2Fv1:MaintenanceWindowDayOfWeek",
          "description": "The day of week, when the window starts."
        },
        "hourOfDay": {
          "type": "integer",
          "description": "The hour of day (0-23) when the window starts."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:MaintenanceWindowDayOfWeek": {
      "description": "The day of week, when the window starts.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:metastore/v1:MaintenanceWindowResponse": {
      "description": "Maintenance window. This specifies when Dataproc Metastore may perform system maintenance operation to the service.",
      "properties": {
        "dayOfWeek": {
          "type": "string",
          "description": "The day of week, when the window starts."
        },
        "hourOfDay": {
          "type": "integer",
          "description": "The hour of day (0-23) when the window starts."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "hourOfDay"
      ]
    },
    "google-native:metastore/v1:MetadataExportResponse": {
      "description": "The details of a metadata export operation.",
      "properties": {
        "databaseDumpType": {
          "type": "string",
          "description": "The type of the database dump."
        },
        "destinationGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI of a folder that metadata are exported to, in the form of gs:////, where is automatically generated."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the export ended."
        },
        "startTime": {
          "type": "string",
          "description": "The time when the export started."
        },
        "state": {
          "type": "string",
          "description": "The current state of the export."
        }
      },
      "type": "object",
      "required": [
        "databaseDumpType",
        "destinationGcsUri",
        "endTime",
        "startTime",
        "state"
      ]
    },
    "google-native:metastore/v1:MetadataIntegration": {
      "description": "Specifies how metastore metadata should be integrated with external services.",
      "properties": {
        "dataCatalogConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:DataCatalogConfig",
          "description": "Optional. The integration config for the Data Catalog service."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:MetadataIntegrationResponse": {
      "description": "Specifies how metastore metadata should be integrated with external services.",
      "properties": {
        "dataCatalogConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:DataCatalogConfigResponse",
          "description": "Optional. The integration config for the Data Catalog service."
        }
      },
      "type": "object",
      "required": [
        "dataCatalogConfig"
      ]
    },
    "google-native:metastore/v1:MetadataManagementActivityResponse": {
      "description": "The metadata management activities of the metastore service.",
      "properties": {
        "metadataExports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:MetadataExportResponse"
          },
          "description": "The latest metadata exports of the metastore service."
        },
        "restores": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:RestoreResponse"
          },
          "description": "The latest restores of the metastore service."
        }
      },
      "type": "object",
      "required": [
        "metadataExports",
        "restores"
      ]
    },
    "google-native:metastore/v1:NetworkConfig": {
      "description": "Network configuration for the Dataproc Metastore service.",
      "properties": {
        "consumers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:Consumer"
          },
          "description": "Immutable. The consumer-side network configuration for the Dataproc Metastore instance."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:NetworkConfigResponse": {
      "description": "Network configuration for the Dataproc Metastore service.",
      "properties": {
        "consumers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:ConsumerResponse"
          },
          "description": "Immutable. The consumer-side network configuration for the Dataproc Metastore instance."
        }
      },
      "type": "object",
      "required": [
        "consumers"
      ]
    },
    "google-native:metastore/v1:RestoreResponse": {
      "description": "The details of a metadata restore operation.",
      "properties": {
        "backup": {
          "type": "string",
          "description": "The relative resource name of the metastore service backup to restore from, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}/backups/{backup_id}."
        },
        "backupLocation": {
          "type": "string",
          "description": "Optional. A Cloud Storage URI specifying where the backup artifacts are stored, in the format gs:///."
        },
        "details": {
          "type": "string",
          "description": "The restore details containing the revision of the service to be restored to, in format of JSON."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the restore ended."
        },
        "startTime": {
          "type": "string",
          "description": "The time when the restore started."
        },
        "state": {
          "type": "string",
          "description": "The current state of the restore."
        },
        "type": {
          "type": "string",
          "description": "The type of restore."
        }
      },
      "type": "object",
      "required": [
        "backup",
        "backupLocation",
        "details",
        "endTime",
        "startTime",
        "state",
        "type"
      ]
    },
    "google-native:metastore/v1:ScalingConfig": {
      "description": "Represents the scaling configuration of a metastore service.",
      "properties": {
        "instanceSize": {
          "$ref": "#/types/google-native:metastore%2Fv1:ScalingConfigInstanceSize",
          "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))"
        },
        "scalingFactor": {
          "type": "number",
          "description": "Scaling factor, increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:ScalingConfigInstanceSize": {
      "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))",
      "type": "string",
      "enum": [
        {
          "name": "InstanceSizeUnspecified",
          "description": "Unspecified instance size",
          "value": "INSTANCE_SIZE_UNSPECIFIED"
        },
        {
          "name": "ExtraSmall",
          "description": "Extra small instance size, maps to a scaling factor of 0.1.",
          "value": "EXTRA_SMALL"
        },
        {
          "name": "Small",
          "description": "Small instance size, maps to a scaling factor of 0.5.",
          "value": "SMALL"
        },
        {
          "name": "Medium",
          "description": "Medium instance size, maps to a scaling factor of 1.0.",
          "value": "MEDIUM"
        },
        {
          "name": "Large",
          "description": "Large instance size, maps to a scaling factor of 3.0.",
          "value": "LARGE"
        },
        {
          "name": "ExtraLarge",
          "description": "Extra large instance size, maps to a scaling factor of 6.0.",
          "value": "EXTRA_LARGE"
        }
      ]
    },
    "google-native:metastore/v1:ScalingConfigResponse": {
      "description": "Represents the scaling configuration of a metastore service.",
      "properties": {
        "instanceSize": {
          "type": "string",
          "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))"
        },
        "scalingFactor": {
          "type": "number",
          "description": "Scaling factor, increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0."
        }
      },
      "type": "object",
      "required": [
        "instanceSize",
        "scalingFactor"
      ]
    },
    "google-native:metastore/v1:Secret": {
      "description": "A securely stored value.",
      "properties": {
        "cloudSecret": {
          "type": "string",
          "description": "The relative resource name of a Secret Manager secret version, in the following form:projects/{project_number}/secrets/{secret_id}/versions/{version_id}."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:SecretResponse": {
      "description": "A securely stored value.",
      "properties": {
        "cloudSecret": {
          "type": "string",
          "description": "The relative resource name of a Secret Manager secret version, in the following form:projects/{project_number}/secrets/{secret_id}/versions/{version_id}."
        }
      },
      "type": "object",
      "required": [
        "cloudSecret"
      ]
    },
    "google-native:metastore/v1:ServiceDatabaseType": {
      "description": "Immutable. The database type that the Metastore service stores its data.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "The DATABASE_TYPE is not set.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "MySQL is used to persist the metastore data.",
          "value": "MYSQL"
        },
        {
          "name": "Spanner",
          "description": "Spanner is used to persist the metastore data.",
          "value": "SPANNER"
        }
      ]
    },
    "google-native:metastore/v1:ServiceReleaseChannel": {
      "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE.",
      "type": "string",
      "enum": [
        {
          "name": "ReleaseChannelUnspecified",
          "description": "Release channel is not specified.",
          "value": "RELEASE_CHANNEL_UNSPECIFIED"
        },
        {
          "name": "Canary",
          "description": "The CANARY release channel contains the newest features, which may be unstable and subject to unresolved issues with no known workarounds. Services using the CANARY release channel are not subject to any SLAs.",
          "value": "CANARY"
        },
        {
          "name": "Stable",
          "description": "The STABLE release channel contains features that are considered stable and have been validated for production use.",
          "value": "STABLE"
        }
      ]
    },
    "google-native:metastore/v1:ServiceResponse": {
      "description": "A managed metastore service that serves metadata queries.",
      "properties": {
        "artifactGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore service was created."
        },
        "databaseType": {
          "type": "string",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:EncryptionConfigResponse",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:HiveMetastoreConfigResponse",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1:MaintenanceWindowResponse",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1:MetadataIntegrationResponse",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "metadataManagementActivity": {
          "$ref": "#/types/google-native:metastore%2Fv1:MetadataManagementActivityResponse",
          "description": "The metadata management activities of the metastore service."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:NetworkConfigResponse",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "releaseChannel": {
          "type": "string",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:ScalingConfigResponse",
          "description": "Scaling configuration of the metastore service."
        },
        "state": {
          "type": "string",
          "description": "The current state of the metastore service."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore service, if available."
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:TelemetryConfigResponse",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "type": "string",
          "description": "The tier of the service."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore service."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore service was last updated."
        }
      },
      "type": "object",
      "required": [
        "artifactGcsUri",
        "createTime",
        "databaseType",
        "encryptionConfig",
        "endpointUri",
        "hiveMetastoreConfig",
        "labels",
        "maintenanceWindow",
        "metadataIntegration",
        "metadataManagementActivity",
        "name",
        "network",
        "networkConfig",
        "port",
        "releaseChannel",
        "scalingConfig",
        "state",
        "stateMessage",
        "telemetryConfig",
        "tier",
        "uid",
        "updateTime"
      ]
    },
    "google-native:metastore/v1:ServiceTier": {
      "description": "The tier of the service.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "The tier is not set.",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Developer",
          "description": "The developer tier provides limited scalability and no fault tolerance. Good for low-cost proof-of-concept.",
          "value": "DEVELOPER"
        },
        {
          "name": "Enterprise",
          "description": "The enterprise tier provides multi-zone high availability, and sufficient scalability for enterprise-level Dataproc Metastore workloads.",
          "value": "ENTERPRISE"
        }
      ]
    },
    "google-native:metastore/v1:TelemetryConfig": {
      "description": "Telemetry Configuration for the Dataproc Metastore service.",
      "properties": {
        "logFormat": {
          "$ref": "#/types/google-native:metastore%2Fv1:TelemetryConfigLogFormat",
          "description": "The output format of the Dataproc Metastore service's logs."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1:TelemetryConfigLogFormat": {
      "description": "The output format of the Dataproc Metastore service's logs.",
      "type": "string",
      "enum": [
        {
          "name": "LogFormatUnspecified",
          "description": "The LOG_FORMAT is not set.",
          "value": "LOG_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Legacy",
          "description": "Logging output uses the legacy textPayload format.",
          "value": "LEGACY"
        },
        {
          "name": "Json",
          "description": "Logging output uses the jsonPayload format.",
          "value": "JSON"
        }
      ]
    },
    "google-native:metastore/v1:TelemetryConfigResponse": {
      "description": "Telemetry Configuration for the Dataproc Metastore service.",
      "properties": {
        "logFormat": {
          "type": "string",
          "description": "The output format of the Dataproc Metastore service's logs."
        }
      },
      "type": "object",
      "required": [
        "logFormat"
      ]
    },
    "google-native:metastore/v1alpha:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:metastore/v1alpha:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:metastore/v1alpha:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:metastore/v1alpha:Binding": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:Expr",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:BindingResponse": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ExprResponse",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:Consumer": {
      "description": "Contains information of the customer's network configurations.",
      "properties": {
        "subnetwork": {
          "type": "string",
          "description": "Immutable. The subnetwork of the customer project from which an IP address is reserved and used as the Dataproc Metastore service's endpoint. It is accessible to hosts in the subnet and to all hosts in a subnet in the same region and same network. There must be at least one IP address available in the subnet's primary range. The subnet is specified in the following form:projects/{project_number}/regions/{region_id}/subnetworks/{subnetwork_id}"
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:ConsumerResponse": {
      "description": "Contains information of the customer's network configurations.",
      "properties": {
        "endpointLocation": {
          "type": "string",
          "description": "The location of the endpoint URI. Format: projects/{project}/locations/{location}."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "subnetwork": {
          "type": "string",
          "description": "Immutable. The subnetwork of the customer project from which an IP address is reserved and used as the Dataproc Metastore service's endpoint. It is accessible to hosts in the subnet and to all hosts in a subnet in the same region and same network. There must be at least one IP address available in the subnet's primary range. The subnet is specified in the following form:projects/{project_number}/regions/{region_id}/subnetworks/{subnetwork_id}"
        }
      },
      "type": "object",
      "required": [
        "endpointLocation",
        "endpointUri",
        "subnetwork"
      ]
    },
    "google-native:metastore/v1alpha:DataCatalogConfig": {
      "description": "Specifies how metastore metadata should be integrated with the Data Catalog service.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Defines whether the metastore metadata should be synced to Data Catalog. The default value is to disable syncing metastore metadata to Data Catalog."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:DataCatalogConfigResponse": {
      "description": "Specifies how metastore metadata should be integrated with the Data Catalog service.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Defines whether the metastore metadata should be synced to Data Catalog. The default value is to disable syncing metastore metadata to Data Catalog."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:metastore/v1alpha:DatabaseDump": {
      "description": "A specification of the location of and metadata about a database dump from a relational database management system.",
      "properties": {
        "databaseType": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:DatabaseDumpDatabaseType",
          "description": "The type of the database."
        },
        "gcsUri": {
          "type": "string",
          "description": "A Cloud Storage object or folder URI that specifies the source from which to import metadata. It must begin with gs://."
        },
        "sourceDatabase": {
          "type": "string",
          "description": "The name of the source database."
        },
        "type": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:DatabaseDumpType",
          "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:DatabaseDumpDatabaseType": {
      "description": "The type of the database.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "The type of the source database is unknown.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "The type of the source database is MySQL.",
          "value": "MYSQL"
        }
      ]
    },
    "google-native:metastore/v1alpha:DatabaseDumpResponse": {
      "description": "A specification of the location of and metadata about a database dump from a relational database management system.",
      "properties": {
        "databaseType": {
          "type": "string",
          "description": "The type of the database."
        },
        "gcsUri": {
          "type": "string",
          "description": "A Cloud Storage object or folder URI that specifies the source from which to import metadata. It must begin with gs://."
        },
        "sourceDatabase": {
          "type": "string",
          "description": "The name of the source database."
        },
        "type": {
          "type": "string",
          "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL."
        }
      },
      "type": "object",
      "required": [
        "databaseType",
        "gcsUri",
        "sourceDatabase",
        "type"
      ]
    },
    "google-native:metastore/v1alpha:DatabaseDumpType": {
      "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type of the database dump is unknown.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "Database dump is a MySQL dump file.",
          "value": "MYSQL"
        },
        {
          "name": "Avro",
          "description": "Database dump contains Avro files.",
          "value": "AVRO"
        }
      ]
    },
    "google-native:metastore/v1alpha:DataplexConfig": {
      "description": "Specifies how metastore metadata should be integrated with the Dataplex service.",
      "properties": {
        "lakeResources": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A reference to the Lake resources that this metastore service is attached to. The key is the lake resource name. Example: projects/{project_number}/locations/{location_id}/lakes/{lake_id}."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:DataplexConfigResponse": {
      "description": "Specifies how metastore metadata should be integrated with the Dataplex service.",
      "properties": {
        "lakeResources": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A reference to the Lake resources that this metastore service is attached to. The key is the lake resource name. Example: projects/{project_number}/locations/{location_id}/lakes/{lake_id}."
        }
      },
      "type": "object",
      "required": [
        "lakeResources"
      ]
    },
    "google-native:metastore/v1alpha:EncryptionConfig": {
      "description": "Encryption settings for the service.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The fully qualified customer provided Cloud KMS key name to use for customer data encryption, in the following form:projects/{project_number}/locations/{location_id}/keyRings/{key_ring_id}/cryptoKeys/{crypto_key_id}."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:EncryptionConfigResponse": {
      "description": "Encryption settings for the service.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The fully qualified customer provided Cloud KMS key name to use for customer data encryption, in the following form:projects/{project_number}/locations/{location_id}/keyRings/{key_ring_id}/cryptoKeys/{crypto_key_id}."
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:metastore/v1alpha:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:metastore/v1alpha:HiveMetastoreConfig": {
      "description": "Specifies configuration information specific to running Hive metastore software as the metastore service.",
      "properties": {
        "auxiliaryVersions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore version to the auxiliary version configuration. When specified, a secondary Hive metastore service is created along with the primary service. All auxiliary versions must be less than the service's primary version. The key is the auxiliary service name and it must match the regular expression a-z?. This means that the first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen."
        },
        "configOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore configuration key-value pairs to apply to the Hive metastore (configured in hive-site.xml). The mappings override system defaults (some keys cannot be overridden). These overrides are also applied to auxiliary versions and can be further customized in the auxiliary version's AuxiliaryVersionConfig."
        },
        "endpointProtocol": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:HiveMetastoreConfigEndpointProtocol",
          "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT."
        },
        "kerberosConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:KerberosConfig",
          "description": "Information used to configure the Hive metastore service as a service principal in a Kerberos realm. To disable Kerberos, use the UpdateService method and specify this field's path (hive_metastore_config.kerberos_config) in the request's update_mask while omitting this field from the request's service."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Hive metastore schema version."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:HiveMetastoreConfigEndpointProtocol": {
      "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT.",
      "type": "string",
      "enum": [
        {
          "name": "EndpointProtocolUnspecified",
          "description": "The protocol is not set.",
          "value": "ENDPOINT_PROTOCOL_UNSPECIFIED"
        },
        {
          "name": "Thrift",
          "description": "Use the legacy Apache Thrift protocol for the metastore service endpoint.",
          "value": "THRIFT"
        },
        {
          "name": "Grpc",
          "description": "Use the modernized gRPC protocol for the metastore service endpoint.",
          "value": "GRPC"
        }
      ]
    },
    "google-native:metastore/v1alpha:HiveMetastoreConfigResponse": {
      "description": "Specifies configuration information specific to running Hive metastore software as the metastore service.",
      "properties": {
        "auxiliaryVersions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore version to the auxiliary version configuration. When specified, a secondary Hive metastore service is created along with the primary service. All auxiliary versions must be less than the service's primary version. The key is the auxiliary service name and it must match the regular expression a-z?. This means that the first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen."
        },
        "configOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore configuration key-value pairs to apply to the Hive metastore (configured in hive-site.xml). The mappings override system defaults (some keys cannot be overridden). These overrides are also applied to auxiliary versions and can be further customized in the auxiliary version's AuxiliaryVersionConfig."
        },
        "endpointProtocol": {
          "type": "string",
          "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT."
        },
        "kerberosConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:KerberosConfigResponse",
          "description": "Information used to configure the Hive metastore service as a service principal in a Kerberos realm. To disable Kerberos, use the UpdateService method and specify this field's path (hive_metastore_config.kerberos_config) in the request's update_mask while omitting this field from the request's service."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Hive metastore schema version."
        }
      },
      "type": "object",
      "required": [
        "auxiliaryVersions",
        "configOverrides",
        "endpointProtocol",
        "kerberosConfig",
        "version"
      ]
    },
    "google-native:metastore/v1alpha:KerberosConfig": {
      "description": "Configuration information for a Kerberos principal.",
      "properties": {
        "keytab": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:Secret",
          "description": "A Kerberos keytab file that can be used to authenticate a service principal with a Kerberos Key Distribution Center (KDC)."
        },
        "krb5ConfigGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI that specifies the path to a krb5.conf file. It is of the form gs://{bucket_name}/path/to/krb5.conf, although the file does not need to be named krb5.conf explicitly."
        },
        "principal": {
          "type": "string",
          "description": "A Kerberos principal that exists in the both the keytab the KDC to authenticate as. A typical principal is of the form primary/instance@REALM, but there is no exact format."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:KerberosConfigResponse": {
      "description": "Configuration information for a Kerberos principal.",
      "properties": {
        "keytab": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:SecretResponse",
          "description": "A Kerberos keytab file that can be used to authenticate a service principal with a Kerberos Key Distribution Center (KDC)."
        },
        "krb5ConfigGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI that specifies the path to a krb5.conf file. It is of the form gs://{bucket_name}/path/to/krb5.conf, although the file does not need to be named krb5.conf explicitly."
        },
        "principal": {
          "type": "string",
          "description": "A Kerberos principal that exists in the both the keytab the KDC to authenticate as. A typical principal is of the form primary/instance@REALM, but there is no exact format."
        }
      },
      "type": "object",
      "required": [
        "keytab",
        "krb5ConfigGcsUri",
        "principal"
      ]
    },
    "google-native:metastore/v1alpha:MaintenanceWindow": {
      "description": "Maintenance window. This specifies when Dataproc Metastore may perform system maintenance operation to the service.",
      "properties": {
        "dayOfWeek": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MaintenanceWindowDayOfWeek",
          "description": "The day of week, when the window starts."
        },
        "hourOfDay": {
          "type": "integer",
          "description": "The hour of day (0-23) when the window starts."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:MaintenanceWindowDayOfWeek": {
      "description": "The day of week, when the window starts.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:metastore/v1alpha:MaintenanceWindowResponse": {
      "description": "Maintenance window. This specifies when Dataproc Metastore may perform system maintenance operation to the service.",
      "properties": {
        "dayOfWeek": {
          "type": "string",
          "description": "The day of week, when the window starts."
        },
        "hourOfDay": {
          "type": "integer",
          "description": "The hour of day (0-23) when the window starts."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "hourOfDay"
      ]
    },
    "google-native:metastore/v1alpha:MetadataExportResponse": {
      "description": "The details of a metadata export operation.",
      "properties": {
        "databaseDumpType": {
          "type": "string",
          "description": "The type of the database dump."
        },
        "destinationGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI of a folder that metadata are exported to, in the form of gs:////, where is automatically generated."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the export ended."
        },
        "startTime": {
          "type": "string",
          "description": "The time when the export started."
        },
        "state": {
          "type": "string",
          "description": "The current state of the export."
        }
      },
      "type": "object",
      "required": [
        "databaseDumpType",
        "destinationGcsUri",
        "endTime",
        "startTime",
        "state"
      ]
    },
    "google-native:metastore/v1alpha:MetadataIntegration": {
      "description": "Specifies how metastore metadata should be integrated with external services.",
      "properties": {
        "dataCatalogConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:DataCatalogConfig",
          "description": "Optional. The integration config for the Data Catalog service."
        },
        "dataplexConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:DataplexConfig",
          "description": "The integration config for the Dataplex service."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:MetadataIntegrationResponse": {
      "description": "Specifies how metastore metadata should be integrated with external services.",
      "properties": {
        "dataCatalogConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:DataCatalogConfigResponse",
          "description": "Optional. The integration config for the Data Catalog service."
        },
        "dataplexConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:DataplexConfigResponse",
          "description": "The integration config for the Dataplex service."
        }
      },
      "type": "object",
      "required": [
        "dataCatalogConfig",
        "dataplexConfig"
      ]
    },
    "google-native:metastore/v1alpha:MetadataManagementActivityResponse": {
      "description": "The metadata management activities of the metastore service.",
      "properties": {
        "metadataExports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:MetadataExportResponse"
          },
          "description": "The latest metadata exports of the metastore service."
        },
        "restores": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:RestoreResponse"
          },
          "description": "The latest restores of the metastore service."
        }
      },
      "type": "object",
      "required": [
        "metadataExports",
        "restores"
      ]
    },
    "google-native:metastore/v1alpha:NetworkConfig": {
      "description": "Network configuration for the Dataproc Metastore service.",
      "properties": {
        "consumers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:Consumer"
          },
          "description": "Immutable. The consumer-side network configuration for the Dataproc Metastore instance."
        },
        "customRoutesEnabled": {
          "type": "boolean",
          "description": "Enables custom routes to be imported and exported for the Dataproc Metastore service's peered VPC network."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:NetworkConfigResponse": {
      "description": "Network configuration for the Dataproc Metastore service.",
      "properties": {
        "consumers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:ConsumerResponse"
          },
          "description": "Immutable. The consumer-side network configuration for the Dataproc Metastore instance."
        },
        "customRoutesEnabled": {
          "type": "boolean",
          "description": "Enables custom routes to be imported and exported for the Dataproc Metastore service's peered VPC network."
        }
      },
      "type": "object",
      "required": [
        "consumers",
        "customRoutesEnabled"
      ]
    },
    "google-native:metastore/v1alpha:RestoreResponse": {
      "description": "The details of a metadata restore operation.",
      "properties": {
        "backup": {
          "type": "string",
          "description": "The relative resource name of the metastore service backup to restore from, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}/backups/{backup_id}."
        },
        "backupLocation": {
          "type": "string",
          "description": "Optional. A Cloud Storage URI specifying where the backup artifacts are stored, in the format gs:///."
        },
        "details": {
          "type": "string",
          "description": "The restore details containing the revision of the service to be restored to, in format of JSON."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the restore ended."
        },
        "startTime": {
          "type": "string",
          "description": "The time when the restore started."
        },
        "state": {
          "type": "string",
          "description": "The current state of the restore."
        },
        "type": {
          "type": "string",
          "description": "The type of restore."
        }
      },
      "type": "object",
      "required": [
        "backup",
        "backupLocation",
        "details",
        "endTime",
        "startTime",
        "state",
        "type"
      ]
    },
    "google-native:metastore/v1alpha:ScalingConfig": {
      "description": "Represents the scaling configuration of a metastore service.",
      "properties": {
        "instanceSize": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ScalingConfigInstanceSize",
          "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))"
        },
        "scalingFactor": {
          "type": "number",
          "description": "Scaling factor, increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:ScalingConfigInstanceSize": {
      "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))",
      "type": "string",
      "enum": [
        {
          "name": "InstanceSizeUnspecified",
          "description": "Unspecified instance size",
          "value": "INSTANCE_SIZE_UNSPECIFIED"
        },
        {
          "name": "ExtraSmall",
          "description": "Extra small instance size, maps to a scaling factor of 0.1.",
          "value": "EXTRA_SMALL"
        },
        {
          "name": "Small",
          "description": "Small instance size, maps to a scaling factor of 0.5.",
          "value": "SMALL"
        },
        {
          "name": "Medium",
          "description": "Medium instance size, maps to a scaling factor of 1.0.",
          "value": "MEDIUM"
        },
        {
          "name": "Large",
          "description": "Large instance size, maps to a scaling factor of 3.0.",
          "value": "LARGE"
        },
        {
          "name": "ExtraLarge",
          "description": "Extra large instance size, maps to a scaling factor of 6.0.",
          "value": "EXTRA_LARGE"
        }
      ]
    },
    "google-native:metastore/v1alpha:ScalingConfigResponse": {
      "description": "Represents the scaling configuration of a metastore service.",
      "properties": {
        "instanceSize": {
          "type": "string",
          "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))"
        },
        "scalingFactor": {
          "type": "number",
          "description": "Scaling factor, increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0."
        }
      },
      "type": "object",
      "required": [
        "instanceSize",
        "scalingFactor"
      ]
    },
    "google-native:metastore/v1alpha:Secret": {
      "description": "A securely stored value.",
      "properties": {
        "cloudSecret": {
          "type": "string",
          "description": "The relative resource name of a Secret Manager secret version, in the following form:projects/{project_number}/secrets/{secret_id}/versions/{version_id}."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:SecretResponse": {
      "description": "A securely stored value.",
      "properties": {
        "cloudSecret": {
          "type": "string",
          "description": "The relative resource name of a Secret Manager secret version, in the following form:projects/{project_number}/secrets/{secret_id}/versions/{version_id}."
        }
      },
      "type": "object",
      "required": [
        "cloudSecret"
      ]
    },
    "google-native:metastore/v1alpha:ServiceDatabaseType": {
      "description": "Immutable. The database type that the Metastore service stores its data.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "The DATABASE_TYPE is not set.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "MySQL is used to persist the metastore data.",
          "value": "MYSQL"
        },
        {
          "name": "Spanner",
          "description": "Spanner is used to persist the metastore data.",
          "value": "SPANNER"
        }
      ]
    },
    "google-native:metastore/v1alpha:ServiceReleaseChannel": {
      "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE.",
      "type": "string",
      "enum": [
        {
          "name": "ReleaseChannelUnspecified",
          "description": "Release channel is not specified.",
          "value": "RELEASE_CHANNEL_UNSPECIFIED"
        },
        {
          "name": "Canary",
          "description": "The CANARY release channel contains the newest features, which may be unstable and subject to unresolved issues with no known workarounds. Services using the CANARY release channel are not subject to any SLAs.",
          "value": "CANARY"
        },
        {
          "name": "Stable",
          "description": "The STABLE release channel contains features that are considered stable and have been validated for production use.",
          "value": "STABLE"
        }
      ]
    },
    "google-native:metastore/v1alpha:ServiceResponse": {
      "description": "A managed metastore service that serves metadata queries.",
      "properties": {
        "artifactGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore service was created."
        },
        "databaseType": {
          "type": "string",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:EncryptionConfigResponse",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:HiveMetastoreConfigResponse",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MaintenanceWindowResponse",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MetadataIntegrationResponse",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "metadataManagementActivity": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MetadataManagementActivityResponse",
          "description": "The metadata management activities of the metastore service."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:NetworkConfigResponse",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "releaseChannel": {
          "type": "string",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ScalingConfigResponse",
          "description": "Scaling configuration of the metastore service."
        },
        "state": {
          "type": "string",
          "description": "The current state of the metastore service."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore service, if available."
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:TelemetryConfigResponse",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "type": "string",
          "description": "The tier of the service."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore service."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore service was last updated."
        }
      },
      "type": "object",
      "required": [
        "artifactGcsUri",
        "createTime",
        "databaseType",
        "encryptionConfig",
        "endpointUri",
        "hiveMetastoreConfig",
        "labels",
        "maintenanceWindow",
        "metadataIntegration",
        "metadataManagementActivity",
        "name",
        "network",
        "networkConfig",
        "port",
        "releaseChannel",
        "scalingConfig",
        "state",
        "stateMessage",
        "telemetryConfig",
        "tier",
        "uid",
        "updateTime"
      ]
    },
    "google-native:metastore/v1alpha:ServiceTier": {
      "description": "The tier of the service.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "The tier is not set.",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Developer",
          "description": "The developer tier provides limited scalability and no fault tolerance. Good for low-cost proof-of-concept.",
          "value": "DEVELOPER"
        },
        {
          "name": "Enterprise",
          "description": "The enterprise tier provides multi-zone high availability, and sufficient scalability for enterprise-level Dataproc Metastore workloads.",
          "value": "ENTERPRISE"
        }
      ]
    },
    "google-native:metastore/v1alpha:TelemetryConfig": {
      "description": "Telemetry Configuration for the Dataproc Metastore service.",
      "properties": {
        "logFormat": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:TelemetryConfigLogFormat",
          "description": "The output format of the Dataproc Metastore service's logs."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1alpha:TelemetryConfigLogFormat": {
      "description": "The output format of the Dataproc Metastore service's logs.",
      "type": "string",
      "enum": [
        {
          "name": "LogFormatUnspecified",
          "description": "The LOG_FORMAT is not set.",
          "value": "LOG_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Legacy",
          "description": "Logging output uses the legacy textPayload format.",
          "value": "LEGACY"
        },
        {
          "name": "Json",
          "description": "Logging output uses the jsonPayload format.",
          "value": "JSON"
        }
      ]
    },
    "google-native:metastore/v1alpha:TelemetryConfigResponse": {
      "description": "Telemetry Configuration for the Dataproc Metastore service.",
      "properties": {
        "logFormat": {
          "type": "string",
          "description": "The output format of the Dataproc Metastore service's logs."
        }
      },
      "type": "object",
      "required": [
        "logFormat"
      ]
    },
    "google-native:metastore/v1beta:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.If there are AuditConfigs for both allServices and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, storage.googleapis.com, cloudsql.googleapis.com. allServices is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:metastore/v1beta:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:metastore/v1beta:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:metastore/v1beta:Binding": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:Expr",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:BindingResponse": {
      "description": "Associates members, or principals, with a role.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ExprResponse",
          "description": "The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:metastore/v1beta:Consumer": {
      "description": "Contains information of the customer's network configurations.",
      "properties": {
        "subnetwork": {
          "type": "string",
          "description": "Immutable. The subnetwork of the customer project from which an IP address is reserved and used as the Dataproc Metastore service's endpoint. It is accessible to hosts in the subnet and to all hosts in a subnet in the same region and same network. There must be at least one IP address available in the subnet's primary range. The subnet is specified in the following form:projects/{project_number}/regions/{region_id}/subnetworks/{subnetwork_id}"
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:ConsumerResponse": {
      "description": "Contains information of the customer's network configurations.",
      "properties": {
        "endpointLocation": {
          "type": "string",
          "description": "The location of the endpoint URI. Format: projects/{project}/locations/{location}."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "subnetwork": {
          "type": "string",
          "description": "Immutable. The subnetwork of the customer project from which an IP address is reserved and used as the Dataproc Metastore service's endpoint. It is accessible to hosts in the subnet and to all hosts in a subnet in the same region and same network. There must be at least one IP address available in the subnet's primary range. The subnet is specified in the following form:projects/{project_number}/regions/{region_id}/subnetworks/{subnetwork_id}"
        }
      },
      "type": "object",
      "required": [
        "endpointLocation",
        "endpointUri",
        "subnetwork"
      ]
    },
    "google-native:metastore/v1beta:DataCatalogConfig": {
      "description": "Specifies how metastore metadata should be integrated with the Data Catalog service.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Defines whether the metastore metadata should be synced to Data Catalog. The default value is to disable syncing metastore metadata to Data Catalog."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:DataCatalogConfigResponse": {
      "description": "Specifies how metastore metadata should be integrated with the Data Catalog service.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Optional. Defines whether the metastore metadata should be synced to Data Catalog. The default value is to disable syncing metastore metadata to Data Catalog."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:metastore/v1beta:DatabaseDump": {
      "description": "A specification of the location of and metadata about a database dump from a relational database management system.",
      "properties": {
        "databaseType": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:DatabaseDumpDatabaseType",
          "description": "The type of the database."
        },
        "gcsUri": {
          "type": "string",
          "description": "A Cloud Storage object or folder URI that specifies the source from which to import metadata. It must begin with gs://."
        },
        "sourceDatabase": {
          "type": "string",
          "description": "The name of the source database."
        },
        "type": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:DatabaseDumpType",
          "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:DatabaseDumpDatabaseType": {
      "description": "The type of the database.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "The type of the source database is unknown.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "The type of the source database is MySQL.",
          "value": "MYSQL"
        }
      ]
    },
    "google-native:metastore/v1beta:DatabaseDumpResponse": {
      "description": "A specification of the location of and metadata about a database dump from a relational database management system.",
      "properties": {
        "databaseType": {
          "type": "string",
          "description": "The type of the database."
        },
        "gcsUri": {
          "type": "string",
          "description": "A Cloud Storage object or folder URI that specifies the source from which to import metadata. It must begin with gs://."
        },
        "sourceDatabase": {
          "type": "string",
          "description": "The name of the source database."
        },
        "type": {
          "type": "string",
          "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL."
        }
      },
      "type": "object",
      "required": [
        "databaseType",
        "gcsUri",
        "sourceDatabase",
        "type"
      ]
    },
    "google-native:metastore/v1beta:DatabaseDumpType": {
      "description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type of the database dump is unknown.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "Database dump is a MySQL dump file.",
          "value": "MYSQL"
        },
        {
          "name": "Avro",
          "description": "Database dump contains Avro files.",
          "value": "AVRO"
        }
      ]
    },
    "google-native:metastore/v1beta:DataplexConfig": {
      "description": "Specifies how metastore metadata should be integrated with the Dataplex service.",
      "properties": {
        "lakeResources": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A reference to the Lake resources that this metastore service is attached to. The key is the lake resource name. Example: projects/{project_number}/locations/{location_id}/lakes/{lake_id}."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:DataplexConfigResponse": {
      "description": "Specifies how metastore metadata should be integrated with the Dataplex service.",
      "properties": {
        "lakeResources": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A reference to the Lake resources that this metastore service is attached to. The key is the lake resource name. Example: projects/{project_number}/locations/{location_id}/lakes/{lake_id}."
        }
      },
      "type": "object",
      "required": [
        "lakeResources"
      ]
    },
    "google-native:metastore/v1beta:EncryptionConfig": {
      "description": "Encryption settings for the service.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The fully qualified customer provided Cloud KMS key name to use for customer data encryption, in the following form:projects/{project_number}/locations/{location_id}/keyRings/{key_ring_id}/cryptoKeys/{crypto_key_id}."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:EncryptionConfigResponse": {
      "description": "Encryption settings for the service.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The fully qualified customer provided Cloud KMS key name to use for customer data encryption, in the following form:projects/{project_number}/locations/{location_id}/keyRings/{key_ring_id}/cryptoKeys/{crypto_key_id}."
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:metastore/v1beta:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:metastore/v1beta:HiveMetastoreConfig": {
      "description": "Specifies configuration information specific to running Hive metastore software as the metastore service.",
      "properties": {
        "auxiliaryVersions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore version to the auxiliary version configuration. When specified, a secondary Hive metastore service is created along with the primary service. All auxiliary versions must be less than the service's primary version. The key is the auxiliary service name and it must match the regular expression a-z?. This means that the first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen."
        },
        "configOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore configuration key-value pairs to apply to the Hive metastore (configured in hive-site.xml). The mappings override system defaults (some keys cannot be overridden). These overrides are also applied to auxiliary versions and can be further customized in the auxiliary version's AuxiliaryVersionConfig."
        },
        "endpointProtocol": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:HiveMetastoreConfigEndpointProtocol",
          "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT."
        },
        "kerberosConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:KerberosConfig",
          "description": "Information used to configure the Hive metastore service as a service principal in a Kerberos realm. To disable Kerberos, use the UpdateService method and specify this field's path (hive_metastore_config.kerberos_config) in the request's update_mask while omitting this field from the request's service."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Hive metastore schema version."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:HiveMetastoreConfigEndpointProtocol": {
      "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT.",
      "type": "string",
      "enum": [
        {
          "name": "EndpointProtocolUnspecified",
          "description": "The protocol is not set.",
          "value": "ENDPOINT_PROTOCOL_UNSPECIFIED"
        },
        {
          "name": "Thrift",
          "description": "Use the legacy Apache Thrift protocol for the metastore service endpoint.",
          "value": "THRIFT"
        },
        {
          "name": "Grpc",
          "description": "Use the modernized gRPC protocol for the metastore service endpoint.",
          "value": "GRPC"
        }
      ]
    },
    "google-native:metastore/v1beta:HiveMetastoreConfigResponse": {
      "description": "Specifies configuration information specific to running Hive metastore software as the metastore service.",
      "properties": {
        "auxiliaryVersions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore version to the auxiliary version configuration. When specified, a secondary Hive metastore service is created along with the primary service. All auxiliary versions must be less than the service's primary version. The key is the auxiliary service name and it must match the regular expression a-z?. This means that the first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen."
        },
        "configOverrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of Hive metastore configuration key-value pairs to apply to the Hive metastore (configured in hive-site.xml). The mappings override system defaults (some keys cannot be overridden). These overrides are also applied to auxiliary versions and can be further customized in the auxiliary version's AuxiliaryVersionConfig."
        },
        "endpointProtocol": {
          "type": "string",
          "description": "The protocol to use for the metastore service endpoint. If unspecified, defaults to THRIFT."
        },
        "kerberosConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:KerberosConfigResponse",
          "description": "Information used to configure the Hive metastore service as a service principal in a Kerberos realm. To disable Kerberos, use the UpdateService method and specify this field's path (hive_metastore_config.kerberos_config) in the request's update_mask while omitting this field from the request's service."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Hive metastore schema version."
        }
      },
      "type": "object",
      "required": [
        "auxiliaryVersions",
        "configOverrides",
        "endpointProtocol",
        "kerberosConfig",
        "version"
      ]
    },
    "google-native:metastore/v1beta:KerberosConfig": {
      "description": "Configuration information for a Kerberos principal.",
      "properties": {
        "keytab": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:Secret",
          "description": "A Kerberos keytab file that can be used to authenticate a service principal with a Kerberos Key Distribution Center (KDC)."
        },
        "krb5ConfigGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI that specifies the path to a krb5.conf file. It is of the form gs://{bucket_name}/path/to/krb5.conf, although the file does not need to be named krb5.conf explicitly."
        },
        "principal": {
          "type": "string",
          "description": "A Kerberos principal that exists in the both the keytab the KDC to authenticate as. A typical principal is of the form primary/instance@REALM, but there is no exact format."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:KerberosConfigResponse": {
      "description": "Configuration information for a Kerberos principal.",
      "properties": {
        "keytab": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:SecretResponse",
          "description": "A Kerberos keytab file that can be used to authenticate a service principal with a Kerberos Key Distribution Center (KDC)."
        },
        "krb5ConfigGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI that specifies the path to a krb5.conf file. It is of the form gs://{bucket_name}/path/to/krb5.conf, although the file does not need to be named krb5.conf explicitly."
        },
        "principal": {
          "type": "string",
          "description": "A Kerberos principal that exists in the both the keytab the KDC to authenticate as. A typical principal is of the form primary/instance@REALM, but there is no exact format."
        }
      },
      "type": "object",
      "required": [
        "keytab",
        "krb5ConfigGcsUri",
        "principal"
      ]
    },
    "google-native:metastore/v1beta:MaintenanceWindow": {
      "description": "Maintenance window. This specifies when Dataproc Metastore may perform system maintenance operation to the service.",
      "properties": {
        "dayOfWeek": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MaintenanceWindowDayOfWeek",
          "description": "The day of week, when the window starts."
        },
        "hourOfDay": {
          "type": "integer",
          "description": "The hour of day (0-23) when the window starts."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:MaintenanceWindowDayOfWeek": {
      "description": "The day of week, when the window starts.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:metastore/v1beta:MaintenanceWindowResponse": {
      "description": "Maintenance window. This specifies when Dataproc Metastore may perform system maintenance operation to the service.",
      "properties": {
        "dayOfWeek": {
          "type": "string",
          "description": "The day of week, when the window starts."
        },
        "hourOfDay": {
          "type": "integer",
          "description": "The hour of day (0-23) when the window starts."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "hourOfDay"
      ]
    },
    "google-native:metastore/v1beta:MetadataExportResponse": {
      "description": "The details of a metadata export operation.",
      "properties": {
        "databaseDumpType": {
          "type": "string",
          "description": "The type of the database dump."
        },
        "destinationGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI of a folder that metadata are exported to, in the form of gs:////, where is automatically generated."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the export ended."
        },
        "startTime": {
          "type": "string",
          "description": "The time when the export started."
        },
        "state": {
          "type": "string",
          "description": "The current state of the export."
        }
      },
      "type": "object",
      "required": [
        "databaseDumpType",
        "destinationGcsUri",
        "endTime",
        "startTime",
        "state"
      ]
    },
    "google-native:metastore/v1beta:MetadataIntegration": {
      "description": "Specifies how metastore metadata should be integrated with external services.",
      "properties": {
        "dataCatalogConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:DataCatalogConfig",
          "description": "Optional. The integration config for the Data Catalog service."
        },
        "dataplexConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:DataplexConfig",
          "description": "The integration config for the Dataplex service."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:MetadataIntegrationResponse": {
      "description": "Specifies how metastore metadata should be integrated with external services.",
      "properties": {
        "dataCatalogConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:DataCatalogConfigResponse",
          "description": "Optional. The integration config for the Data Catalog service."
        },
        "dataplexConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:DataplexConfigResponse",
          "description": "The integration config for the Dataplex service."
        }
      },
      "type": "object",
      "required": [
        "dataCatalogConfig",
        "dataplexConfig"
      ]
    },
    "google-native:metastore/v1beta:MetadataManagementActivityResponse": {
      "description": "The metadata management activities of the metastore service.",
      "properties": {
        "metadataExports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:MetadataExportResponse"
          },
          "description": "The latest metadata exports of the metastore service."
        },
        "restores": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:RestoreResponse"
          },
          "description": "The latest restores of the metastore service."
        }
      },
      "type": "object",
      "required": [
        "metadataExports",
        "restores"
      ]
    },
    "google-native:metastore/v1beta:NetworkConfig": {
      "description": "Network configuration for the Dataproc Metastore service.",
      "properties": {
        "consumers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:Consumer"
          },
          "description": "Immutable. The consumer-side network configuration for the Dataproc Metastore instance."
        },
        "customRoutesEnabled": {
          "type": "boolean",
          "description": "Enables custom routes to be imported and exported for the Dataproc Metastore service's peered VPC network."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:NetworkConfigResponse": {
      "description": "Network configuration for the Dataproc Metastore service.",
      "properties": {
        "consumers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:ConsumerResponse"
          },
          "description": "Immutable. The consumer-side network configuration for the Dataproc Metastore instance."
        },
        "customRoutesEnabled": {
          "type": "boolean",
          "description": "Enables custom routes to be imported and exported for the Dataproc Metastore service's peered VPC network."
        }
      },
      "type": "object",
      "required": [
        "consumers",
        "customRoutesEnabled"
      ]
    },
    "google-native:metastore/v1beta:RestoreResponse": {
      "description": "The details of a metadata restore operation.",
      "properties": {
        "backup": {
          "type": "string",
          "description": "The relative resource name of the metastore service backup to restore from, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}/backups/{backup_id}."
        },
        "backupLocation": {
          "type": "string",
          "description": "Optional. A Cloud Storage URI specifying where the backup artifacts are stored, in the format gs:///."
        },
        "details": {
          "type": "string",
          "description": "The restore details containing the revision of the service to be restored to, in format of JSON."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the restore ended."
        },
        "startTime": {
          "type": "string",
          "description": "The time when the restore started."
        },
        "state": {
          "type": "string",
          "description": "The current state of the restore."
        },
        "type": {
          "type": "string",
          "description": "The type of restore."
        }
      },
      "type": "object",
      "required": [
        "backup",
        "backupLocation",
        "details",
        "endTime",
        "startTime",
        "state",
        "type"
      ]
    },
    "google-native:metastore/v1beta:ScalingConfig": {
      "description": "Represents the scaling configuration of a metastore service.",
      "properties": {
        "instanceSize": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ScalingConfigInstanceSize",
          "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))"
        },
        "scalingFactor": {
          "type": "number",
          "description": "Scaling factor, increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:ScalingConfigInstanceSize": {
      "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))",
      "type": "string",
      "enum": [
        {
          "name": "InstanceSizeUnspecified",
          "description": "Unspecified instance size",
          "value": "INSTANCE_SIZE_UNSPECIFIED"
        },
        {
          "name": "ExtraSmall",
          "description": "Extra small instance size, maps to a scaling factor of 0.1.",
          "value": "EXTRA_SMALL"
        },
        {
          "name": "Small",
          "description": "Small instance size, maps to a scaling factor of 0.5.",
          "value": "SMALL"
        },
        {
          "name": "Medium",
          "description": "Medium instance size, maps to a scaling factor of 1.0.",
          "value": "MEDIUM"
        },
        {
          "name": "Large",
          "description": "Large instance size, maps to a scaling factor of 3.0.",
          "value": "LARGE"
        },
        {
          "name": "ExtraLarge",
          "description": "Extra large instance size, maps to a scaling factor of 6.0.",
          "value": "EXTRA_LARGE"
        }
      ]
    },
    "google-native:metastore/v1beta:ScalingConfigResponse": {
      "description": "Represents the scaling configuration of a metastore service.",
      "properties": {
        "instanceSize": {
          "type": "string",
          "description": "An enum of readable instance sizes, with each instance size mapping to a float value (e.g. InstanceSize.EXTRA_SMALL = scaling_factor(0.1))"
        },
        "scalingFactor": {
          "type": "number",
          "description": "Scaling factor, increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0."
        }
      },
      "type": "object",
      "required": [
        "instanceSize",
        "scalingFactor"
      ]
    },
    "google-native:metastore/v1beta:Secret": {
      "description": "A securely stored value.",
      "properties": {
        "cloudSecret": {
          "type": "string",
          "description": "The relative resource name of a Secret Manager secret version, in the following form:projects/{project_number}/secrets/{secret_id}/versions/{version_id}."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:SecretResponse": {
      "description": "A securely stored value.",
      "properties": {
        "cloudSecret": {
          "type": "string",
          "description": "The relative resource name of a Secret Manager secret version, in the following form:projects/{project_number}/secrets/{secret_id}/versions/{version_id}."
        }
      },
      "type": "object",
      "required": [
        "cloudSecret"
      ]
    },
    "google-native:metastore/v1beta:ServiceDatabaseType": {
      "description": "Immutable. The database type that the Metastore service stores its data.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseTypeUnspecified",
          "description": "The DATABASE_TYPE is not set.",
          "value": "DATABASE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Mysql",
          "description": "MySQL is used to persist the metastore data.",
          "value": "MYSQL"
        },
        {
          "name": "Spanner",
          "description": "Spanner is used to persist the metastore data.",
          "value": "SPANNER"
        }
      ]
    },
    "google-native:metastore/v1beta:ServiceReleaseChannel": {
      "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE.",
      "type": "string",
      "enum": [
        {
          "name": "ReleaseChannelUnspecified",
          "description": "Release channel is not specified.",
          "value": "RELEASE_CHANNEL_UNSPECIFIED"
        },
        {
          "name": "Canary",
          "description": "The CANARY release channel contains the newest features, which may be unstable and subject to unresolved issues with no known workarounds. Services using the CANARY release channel are not subject to any SLAs.",
          "value": "CANARY"
        },
        {
          "name": "Stable",
          "description": "The STABLE release channel contains features that are considered stable and have been validated for production use.",
          "value": "STABLE"
        }
      ]
    },
    "google-native:metastore/v1beta:ServiceResponse": {
      "description": "A managed metastore service that serves metadata queries.",
      "properties": {
        "artifactGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore service was created."
        },
        "databaseType": {
          "type": "string",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:EncryptionConfigResponse",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:HiveMetastoreConfigResponse",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MaintenanceWindowResponse",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MetadataIntegrationResponse",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "metadataManagementActivity": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MetadataManagementActivityResponse",
          "description": "The metadata management activities of the metastore service."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:NetworkConfigResponse",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "releaseChannel": {
          "type": "string",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ScalingConfigResponse",
          "description": "Scaling configuration of the metastore service."
        },
        "state": {
          "type": "string",
          "description": "The current state of the metastore service."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore service, if available."
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:TelemetryConfigResponse",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "type": "string",
          "description": "The tier of the service."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore service."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore service was last updated."
        }
      },
      "type": "object",
      "required": [
        "artifactGcsUri",
        "createTime",
        "databaseType",
        "encryptionConfig",
        "endpointUri",
        "hiveMetastoreConfig",
        "labels",
        "maintenanceWindow",
        "metadataIntegration",
        "metadataManagementActivity",
        "name",
        "network",
        "networkConfig",
        "port",
        "releaseChannel",
        "scalingConfig",
        "state",
        "stateMessage",
        "telemetryConfig",
        "tier",
        "uid",
        "updateTime"
      ]
    },
    "google-native:metastore/v1beta:ServiceTier": {
      "description": "The tier of the service.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "The tier is not set.",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Developer",
          "description": "The developer tier provides limited scalability and no fault tolerance. Good for low-cost proof-of-concept.",
          "value": "DEVELOPER"
        },
        {
          "name": "Enterprise",
          "description": "The enterprise tier provides multi-zone high availability, and sufficient scalability for enterprise-level Dataproc Metastore workloads.",
          "value": "ENTERPRISE"
        }
      ]
    },
    "google-native:metastore/v1beta:TelemetryConfig": {
      "description": "Telemetry Configuration for the Dataproc Metastore service.",
      "properties": {
        "logFormat": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:TelemetryConfigLogFormat",
          "description": "The output format of the Dataproc Metastore service's logs."
        }
      },
      "type": "object"
    },
    "google-native:metastore/v1beta:TelemetryConfigLogFormat": {
      "description": "The output format of the Dataproc Metastore service's logs.",
      "type": "string",
      "enum": [
        {
          "name": "LogFormatUnspecified",
          "description": "The LOG_FORMAT is not set.",
          "value": "LOG_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Legacy",
          "description": "Logging output uses the legacy textPayload format.",
          "value": "LEGACY"
        },
        {
          "name": "Json",
          "description": "Logging output uses the jsonPayload format.",
          "value": "JSON"
        }
      ]
    },
    "google-native:metastore/v1beta:TelemetryConfigResponse": {
      "description": "Telemetry Configuration for the Dataproc Metastore service.",
      "properties": {
        "logFormat": {
          "type": "string",
          "description": "The output format of the Dataproc Metastore service's logs."
        }
      },
      "type": "object",
      "required": [
        "logFormat"
      ]
    },
    "google-native:migrationcenter/v1:ComputeEnginePreferences": {
      "description": "The user preferences relating to Compute Engine target platform.",
      "properties": {
        "licenseType": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ComputeEnginePreferencesLicenseType",
          "description": "License type to consider when calculating costs for virtual machine insights and recommendations. If unspecified, costs are calculated based on the default licensing plan."
        },
        "machinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MachinePreferences",
          "description": "Preferences concerning the machine types to consider on Compute Engine."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1:ComputeEnginePreferencesLicenseType": {
      "description": "License type to consider when calculating costs for virtual machine insights and recommendations. If unspecified, costs are calculated based on the default licensing plan.",
      "type": "string",
      "enum": [
        {
          "name": "LicenseTypeUnspecified",
          "description": "Unspecified (default value).",
          "value": "LICENSE_TYPE_UNSPECIFIED"
        },
        {
          "name": "LicenseTypeDefault",
          "description": "Default Google Cloud licensing plan. Licensing is charged per usage. This a good value to start with.",
          "value": "LICENSE_TYPE_DEFAULT"
        },
        {
          "name": "LicenseTypeBringYourOwnLicense",
          "description": "Bring-your-own-license (BYOL) plan. User provides the OS license.",
          "value": "LICENSE_TYPE_BRING_YOUR_OWN_LICENSE"
        }
      ]
    },
    "google-native:migrationcenter/v1:ComputeEnginePreferencesResponse": {
      "description": "The user preferences relating to Compute Engine target platform.",
      "properties": {
        "licenseType": {
          "type": "string",
          "description": "License type to consider when calculating costs for virtual machine insights and recommendations. If unspecified, costs are calculated based on the default licensing plan."
        },
        "machinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MachinePreferencesResponse",
          "description": "Preferences concerning the machine types to consider on Compute Engine."
        }
      },
      "type": "object",
      "required": [
        "licenseType",
        "machinePreferences"
      ]
    },
    "google-native:migrationcenter/v1:ExecutionReportResponse": {
      "description": "A resource that reports result of the import job execution.",
      "properties": {
        "executionErrors": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ValidationReportResponse",
          "description": "Validation errors encountered during the execution of the import job."
        },
        "framesReported": {
          "type": "integer",
          "description": "Total number of asset frames reported for the import job."
        },
        "totalRowsCount": {
          "type": "integer",
          "description": "Total number of rows in the import job."
        }
      },
      "type": "object",
      "required": [
        "executionErrors",
        "framesReported",
        "totalRowsCount"
      ]
    },
    "google-native:migrationcenter/v1:FileValidationReportResponse": {
      "description": "A resource that aggregates the validation errors found in an import job file.",
      "properties": {
        "fileErrors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ImportErrorResponse"
          },
          "description": "List of file level errors."
        },
        "fileName": {
          "type": "string",
          "description": "The name of the file."
        },
        "partialReport": {
          "type": "boolean",
          "description": "Flag indicating that processing was aborted due to maximum number of errors."
        },
        "rowErrors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ImportRowErrorResponse"
          },
          "description": "Partial list of rows that encountered validation error."
        }
      },
      "type": "object",
      "required": [
        "fileErrors",
        "fileName",
        "partialReport",
        "rowErrors"
      ]
    },
    "google-native:migrationcenter/v1:ImportDataFileFormat": {
      "description": "Required. The payload format.",
      "type": "string",
      "enum": [
        {
          "name": "ImportJobFormatUnspecified",
          "description": "Default value.",
          "value": "IMPORT_JOB_FORMAT_UNSPECIFIED"
        },
        {
          "name": "ImportJobFormatRvtoolsXlsx",
          "description": "RVTools format (XLSX).",
          "value": "IMPORT_JOB_FORMAT_RVTOOLS_XLSX"
        },
        {
          "name": "ImportJobFormatRvtoolsCsv",
          "description": "RVTools format (CSV).",
          "value": "IMPORT_JOB_FORMAT_RVTOOLS_CSV"
        },
        {
          "name": "ImportJobFormatExportedAwsCsv",
          "description": "CSV format exported from AWS using the AWS collection script.",
          "value": "IMPORT_JOB_FORMAT_EXPORTED_AWS_CSV"
        },
        {
          "name": "ImportJobFormatExportedAzureCsv",
          "description": "CSV format exported from Azure using the Azure collection script.",
          "value": "IMPORT_JOB_FORMAT_EXPORTED_AZURE_CSV"
        },
        {
          "name": "ImportJobFormatStratozoneCsv",
          "description": "CSV format created manually and following the StratoZone format. For more information, see Manually create and upload data tables.",
          "value": "IMPORT_JOB_FORMAT_STRATOZONE_CSV"
        }
      ]
    },
    "google-native:migrationcenter/v1:ImportErrorResponse": {
      "description": "A resource that reports the errors encountered while processing an import job.",
      "properties": {
        "errorDetails": {
          "type": "string",
          "description": "The error information."
        },
        "severity": {
          "type": "string",
          "description": "The severity of the error."
        }
      },
      "type": "object",
      "required": [
        "errorDetails",
        "severity"
      ]
    },
    "google-native:migrationcenter/v1:ImportRowErrorResponse": {
      "description": "A resource that reports the import job errors at row level.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ImportErrorResponse"
          },
          "description": "The list of errors detected in the row."
        },
        "rowNumber": {
          "type": "integer",
          "description": "The row number where the error was detected."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM in the row."
        },
        "vmUuid": {
          "type": "string",
          "description": "The VM UUID."
        }
      },
      "type": "object",
      "required": [
        "errors",
        "rowNumber",
        "vmName",
        "vmUuid"
      ]
    },
    "google-native:migrationcenter/v1:MachinePreferences": {
      "description": "The type of machines to consider when calculating virtual machine migration insights and recommendations. Not all machine types are available in all zones and regions.",
      "properties": {
        "allowedMachineSeries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:MachineSeries"
          },
          "description": "Compute Engine machine series to consider for insights and recommendations. If empty, no restriction is applied on the machine series."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1:MachinePreferencesResponse": {
      "description": "The type of machines to consider when calculating virtual machine migration insights and recommendations. Not all machine types are available in all zones and regions.",
      "properties": {
        "allowedMachineSeries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:MachineSeriesResponse"
          },
          "description": "Compute Engine machine series to consider for insights and recommendations. If empty, no restriction is applied on the machine series."
        }
      },
      "type": "object",
      "required": [
        "allowedMachineSeries"
      ]
    },
    "google-native:migrationcenter/v1:MachineSeries": {
      "description": "A Compute Engine machine series.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code to identify a Compute Engine machine series. Consult https://cloud.google.com/compute/docs/machine-resource#machine_type_comparison for more details on the available series."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1:MachineSeriesResponse": {
      "description": "A Compute Engine machine series.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code to identify a Compute Engine machine series. Consult https://cloud.google.com/compute/docs/machine-resource#machine_type_comparison for more details on the available series."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:migrationcenter/v1:MoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:migrationcenter/v1:RegionPreferences": {
      "description": "The user preferences relating to target regions.",
      "properties": {
        "preferredRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of preferred regions, ordered by the most preferred region first. Set only valid Google Cloud region names. See https://cloud.google.com/compute/docs/regions-zones for available regions."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1:RegionPreferencesResponse": {
      "description": "The user preferences relating to target regions.",
      "properties": {
        "preferredRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of preferred regions, ordered by the most preferred region first. Set only valid Google Cloud region names. See https://cloud.google.com/compute/docs/regions-zones for available regions."
        }
      },
      "type": "object",
      "required": [
        "preferredRegions"
      ]
    },
    "google-native:migrationcenter/v1:ReportConfigGroupPreferenceSetAssignment": {
      "description": "Represents a combination of a group with a preference set.",
      "properties": {
        "group": {
          "type": "string",
          "description": "Name of the group."
        },
        "preferenceSet": {
          "type": "string",
          "description": "Name of the Preference Set."
        }
      },
      "type": "object",
      "required": [
        "group",
        "preferenceSet"
      ]
    },
    "google-native:migrationcenter/v1:ReportConfigGroupPreferenceSetAssignmentResponse": {
      "description": "Represents a combination of a group with a preference set.",
      "properties": {
        "group": {
          "type": "string",
          "description": "Name of the group."
        },
        "preferenceSet": {
          "type": "string",
          "description": "Name of the Preference Set."
        }
      },
      "type": "object",
      "required": [
        "group",
        "preferenceSet"
      ]
    },
    "google-native:migrationcenter/v1:ReportState": {
      "description": "Report creation state.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Default Report creation state.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "Creating Report.",
          "value": "PENDING"
        },
        {
          "name": "Succeeded",
          "description": "Successfully created Report.",
          "value": "SUCCEEDED"
        },
        {
          "name": "Failed",
          "description": "Failed to create Report.",
          "value": "FAILED"
        }
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryAssetAggregateStatsResponse": {
      "description": "Aggregate statistics for a collection of assets.",
      "properties": {
        "coreCountHistogram": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryHistogramChartDataResponse",
          "description": "Histogram showing a distribution of CPU core counts."
        },
        "memoryBytesHistogram": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryHistogramChartDataResponse",
          "description": "Histogram showing a distribution of memory sizes."
        },
        "memoryUtilizationChart": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryUtilizationChartDataResponse",
          "description": "Total memory split into Used/Free buckets."
        },
        "operatingSystem": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryChartDataResponse",
          "description": "Count of assets grouped by Operating System families."
        },
        "storageBytesHistogram": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryHistogramChartDataResponse",
          "description": "Histogram showing a distribution of memory sizes."
        },
        "storageUtilizationChart": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryUtilizationChartDataResponse",
          "description": "Total memory split into Used/Free buckets."
        },
        "totalAssets": {
          "type": "string",
          "description": "Count of the number of unique assets in this collection."
        },
        "totalCores": {
          "type": "string",
          "description": "Sum of the CPU core count of all the assets in this collection."
        },
        "totalMemoryBytes": {
          "type": "string",
          "description": "Sum of the memory in bytes of all the assets in this collection."
        },
        "totalStorageBytes": {
          "type": "string",
          "description": "Sum of persistent storage in bytes of all the assets in this collection."
        }
      },
      "type": "object",
      "required": [
        "coreCountHistogram",
        "memoryBytesHistogram",
        "memoryUtilizationChart",
        "operatingSystem",
        "storageBytesHistogram",
        "storageUtilizationChart",
        "totalAssets",
        "totalCores",
        "totalMemoryBytes",
        "totalStorageBytes"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryChartDataDataPointResponse": {
      "description": "Describes a single data point in the Chart.",
      "properties": {
        "label": {
          "type": "string",
          "description": "The X-axis label for this data point."
        },
        "value": {
          "type": "number",
          "description": "The Y-axis value for this data point."
        }
      },
      "type": "object",
      "required": [
        "label",
        "value"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryChartDataResponse": {
      "description": "Describes a collection of data points rendered as a Chart.",
      "properties": {
        "dataPoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryChartDataDataPointResponse"
          },
          "description": "Each data point in the chart is represented as a name-value pair with the name being the x-axis label, and the value being the y-axis value."
        }
      },
      "type": "object",
      "required": [
        "dataPoints"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryComputeEngineFindingResponse": {
      "description": "A set of findings that applies to assets destined for Compute Engine.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets which were allocated."
        },
        "allocatedDiskTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of disk types allocated to assets."
        },
        "allocatedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of regions in which the assets were allocated."
        },
        "machineSeriesAllocations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryMachineSeriesAllocationResponse"
          },
          "description": "Distribution of assets based on the Machine Series."
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "allocatedDiskTypes",
        "allocatedRegions",
        "machineSeriesAllocations"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryGroupFindingResponse": {
      "description": "Summary Findings for a specific Group.",
      "properties": {
        "assetAggregateStats": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryAssetAggregateStatsResponse",
          "description": "Summary statistics for all the assets in this group."
        },
        "description": {
          "type": "string",
          "description": "Description for the Group."
        },
        "displayName": {
          "type": "string",
          "description": "Display Name for the Group."
        },
        "overlappingAssetCount": {
          "type": "string",
          "description": "This field is deprecated, do not rely on it having a value.",
          "deprecationMessage": "This field is deprecated, do not rely on it having a value."
        },
        "preferenceSetFindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryGroupPreferenceSetFindingResponse"
          },
          "description": "Findings for each of the PreferenceSets for this group."
        }
      },
      "type": "object",
      "required": [
        "assetAggregateStats",
        "description",
        "displayName",
        "overlappingAssetCount",
        "preferenceSetFindings"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryGroupPreferenceSetFindingResponse": {
      "description": "Summary Findings for a specific Group/PreferenceSet combination.",
      "properties": {
        "computeEngineFinding": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryComputeEngineFindingResponse",
          "description": "A set of findings that applies to Compute Engine machines in the input."
        },
        "description": {
          "type": "string",
          "description": "Description for the Preference Set."
        },
        "displayName": {
          "type": "string",
          "description": "Display Name of the Preference Set"
        },
        "machinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VirtualMachinePreferencesResponse",
          "description": "A set of preferences that applies to all machines in the context."
        },
        "monthlyCostCompute": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MoneyResponse",
          "description": "Compute monthly cost for this preference set."
        },
        "monthlyCostNetworkEgress": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MoneyResponse",
          "description": "Network Egress monthly cost for this preference set."
        },
        "monthlyCostOsLicense": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MoneyResponse",
          "description": "Licensing monthly cost for this preference set."
        },
        "monthlyCostOther": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MoneyResponse",
          "description": "Miscellaneous monthly cost for this preference set."
        },
        "monthlyCostStorage": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MoneyResponse",
          "description": "Storage monthly cost for this preference set."
        },
        "monthlyCostTotal": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MoneyResponse",
          "description": "Total monthly cost for this preference set."
        },
        "soleTenantFinding": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummarySoleTenantFindingResponse",
          "description": "A set of findings that applies to Sole-Tenant machines in the input."
        },
        "vmwareEngineFinding": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryVmwareEngineFindingResponse",
          "description": "A set of findings that applies to VMWare machines in the input."
        }
      },
      "type": "object",
      "required": [
        "computeEngineFinding",
        "description",
        "displayName",
        "machinePreferences",
        "monthlyCostCompute",
        "monthlyCostNetworkEgress",
        "monthlyCostOsLicense",
        "monthlyCostOther",
        "monthlyCostStorage",
        "monthlyCostTotal",
        "soleTenantFinding",
        "vmwareEngineFinding"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryHistogramChartDataBucketResponse": {
      "description": "A histogram bucket with a lower and upper bound, and a count of items with a field value between those bounds. The lower bound is inclusive and the upper bound is exclusive. Lower bound may be -infinity and upper bound may be infinity.",
      "properties": {
        "count": {
          "type": "string",
          "description": "Count of items in the bucket."
        },
        "lowerBound": {
          "type": "string",
          "description": "Lower bound - inclusive."
        },
        "upperBound": {
          "type": "string",
          "description": "Upper bound - exclusive."
        }
      },
      "type": "object",
      "required": [
        "count",
        "lowerBound",
        "upperBound"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryHistogramChartDataResponse": {
      "description": "A Histogram Chart shows a distribution of values into buckets, showing a count of values which fall into a bucket.",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryHistogramChartDataBucketResponse"
          },
          "description": "Buckets in the histogram. There will be `n+1` buckets matching `n` lower bounds in the request. The first bucket will be from -infinity to the first bound. Subsequent buckets will be between one bound and the next. The final bucket will be from the final bound to infinity."
        }
      },
      "type": "object",
      "required": [
        "buckets"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryMachineSeriesAllocationResponse": {
      "description": "Represents a data point tracking the count of assets allocated for a specific Machine Series.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets allocated to this machine series."
        },
        "machineSeries": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:MachineSeriesResponse",
          "description": "The Machine Series (e.g. \"E2\", \"N2\")"
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "machineSeries"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryResponse": {
      "description": "Describes the Summary view of a Report, which contains aggregated values for all the groups and preference sets included in this Report.",
      "properties": {
        "allAssetsStats": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryAssetAggregateStatsResponse",
          "description": "Aggregate statistics for all the assets across all the groups."
        },
        "groupFindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryGroupFindingResponse"
          },
          "description": "Findings for each Group included in this report."
        }
      },
      "type": "object",
      "required": [
        "allAssetsStats",
        "groupFindings"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummarySoleTenantFindingResponse": {
      "description": "A set of findings that applies to assets destined for Sole-Tenant nodes.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets which are allocated"
        },
        "allocatedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of regions in which the assets are allocated"
        },
        "nodeAllocations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummarySoleTenantNodeAllocationResponse"
          },
          "description": "Set of per-nodetype allocation records"
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "allocatedRegions",
        "nodeAllocations"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummarySoleTenantNodeAllocationResponse": {
      "description": "Represents the assets allocated to a specific Sole-Tenant node type.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets allocated to these nodes"
        },
        "node": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:SoleTenantNodeTypeResponse",
          "description": "Sole Tenant node type, e.g. \"m3-node-128-3904\""
        },
        "nodeCount": {
          "type": "string",
          "description": "Count of this node type to be provisioned"
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "node",
        "nodeCount"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryUtilizationChartDataResponse": {
      "description": "Utilization Chart is a specific type of visualization which displays a metric classified into \"Used\" and \"Free\" buckets.",
      "properties": {
        "free": {
          "type": "string",
          "description": "Aggregate value which falls into the \"Free\" bucket."
        },
        "used": {
          "type": "string",
          "description": "Aggregate value which falls into the \"Used\" bucket."
        }
      },
      "type": "object",
      "required": [
        "free",
        "used"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryVmwareEngineFindingResponse": {
      "description": "A set of findings that applies to assets destined for VMWare Engine.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets which are allocated"
        },
        "allocatedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of regions in which the assets were allocated"
        },
        "nodeAllocations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryVmwareNodeAllocationResponse"
          },
          "description": "Set of per-nodetype allocation records"
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "allocatedRegions",
        "nodeAllocations"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryVmwareNodeAllocationResponse": {
      "description": "Represents assets allocated to a specific VMWare Node type.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets allocated to these nodes"
        },
        "nodeCount": {
          "type": "string",
          "description": "Count of this node type to be provisioned"
        },
        "vmwareNode": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryVmwareNodeResponse",
          "description": "VMWare node type, e.g. \"ve1-standard-72\""
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "nodeCount",
        "vmwareNode"
      ]
    },
    "google-native:migrationcenter/v1:ReportSummaryVmwareNodeResponse": {
      "description": "A VMWare Engine Node",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code to identify VMware Engine node series, e.g. \"ve1-standard-72\". Based on the displayName of cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.nodeTypes"
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:migrationcenter/v1:ReportType": {
      "description": "Report type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default Report type.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TotalCostOfOwnership",
          "description": "Total cost of ownership Report type.",
          "value": "TOTAL_COST_OF_OWNERSHIP"
        }
      ]
    },
    "google-native:migrationcenter/v1:SoleTenancyPreferences": {
      "description": "Preferences concerning Sole Tenancy nodes and VMs.",
      "properties": {
        "commitmentPlan": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:SoleTenancyPreferencesCommitmentPlan",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "cpuOvercommitRatio": {
          "type": "number",
          "description": "CPU overcommit ratio. Acceptable values are between 1.0 and 2.0 inclusive."
        },
        "hostMaintenancePolicy": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:SoleTenancyPreferencesHostMaintenancePolicy",
          "description": "Sole Tenancy nodes maintenance policy."
        },
        "nodeTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:SoleTenantNodeType"
          },
          "description": "A list of sole tenant node types. An empty list means that all possible node types will be considered."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1:SoleTenancyPreferencesCommitmentPlan": {
      "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Unspecified commitment plan.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "OnDemand",
          "description": "No commitment plan (on-demand usage).",
          "value": "ON_DEMAND"
        },
        {
          "name": "Commitment1Year",
          "description": "1 year commitment.",
          "value": "COMMITMENT_1_YEAR"
        },
        {
          "name": "Commitment3Year",
          "description": "3 years commitment.",
          "value": "COMMITMENT_3_YEAR"
        }
      ]
    },
    "google-native:migrationcenter/v1:SoleTenancyPreferencesHostMaintenancePolicy": {
      "description": "Sole Tenancy nodes maintenance policy.",
      "type": "string",
      "enum": [
        {
          "name": "HostMaintenancePolicyUnspecified",
          "description": "Unspecified host maintenance policy.",
          "value": "HOST_MAINTENANCE_POLICY_UNSPECIFIED"
        },
        {
          "name": "HostMaintenancePolicyDefault",
          "description": "Default host maintenance policy.",
          "value": "HOST_MAINTENANCE_POLICY_DEFAULT"
        },
        {
          "name": "HostMaintenancePolicyRestartInPlace",
          "description": "Restart in place host maintenance policy.",
          "value": "HOST_MAINTENANCE_POLICY_RESTART_IN_PLACE"
        },
        {
          "name": "HostMaintenancePolicyMigrateWithinNodeGroup",
          "description": "Migrate within node group host maintenance policy.",
          "value": "HOST_MAINTENANCE_POLICY_MIGRATE_WITHIN_NODE_GROUP"
        }
      ]
    },
    "google-native:migrationcenter/v1:SoleTenancyPreferencesResponse": {
      "description": "Preferences concerning Sole Tenancy nodes and VMs.",
      "properties": {
        "commitmentPlan": {
          "type": "string",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "cpuOvercommitRatio": {
          "type": "number",
          "description": "CPU overcommit ratio. Acceptable values are between 1.0 and 2.0 inclusive."
        },
        "hostMaintenancePolicy": {
          "type": "string",
          "description": "Sole Tenancy nodes maintenance policy."
        },
        "nodeTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:SoleTenantNodeTypeResponse"
          },
          "description": "A list of sole tenant node types. An empty list means that all possible node types will be considered."
        }
      },
      "type": "object",
      "required": [
        "commitmentPlan",
        "cpuOvercommitRatio",
        "hostMaintenancePolicy",
        "nodeTypes"
      ]
    },
    "google-native:migrationcenter/v1:SoleTenantNodeType": {
      "description": "A Sole Tenant node type.",
      "properties": {
        "nodeName": {
          "type": "string",
          "description": "Name of the Sole Tenant node. Consult https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes"
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1:SoleTenantNodeTypeResponse": {
      "description": "A Sole Tenant node type.",
      "properties": {
        "nodeName": {
          "type": "string",
          "description": "Name of the Sole Tenant node. Consult https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes"
        }
      },
      "type": "object",
      "required": [
        "nodeName"
      ]
    },
    "google-native:migrationcenter/v1:SourceType": {
      "description": "Data source type.",
      "type": "string",
      "enum": [
        {
          "name": "SourceTypeUnknown",
          "description": "Unspecified",
          "value": "SOURCE_TYPE_UNKNOWN"
        },
        {
          "name": "SourceTypeUpload",
          "description": "Manually uploaded file (e.g. CSV)",
          "value": "SOURCE_TYPE_UPLOAD"
        },
        {
          "name": "SourceTypeGuestOsScan",
          "description": "Guest-level info",
          "value": "SOURCE_TYPE_GUEST_OS_SCAN"
        },
        {
          "name": "SourceTypeInventoryScan",
          "description": "Inventory-level scan",
          "value": "SOURCE_TYPE_INVENTORY_SCAN"
        },
        {
          "name": "SourceTypeCustom",
          "description": "Third-party owned sources.",
          "value": "SOURCE_TYPE_CUSTOM"
        }
      ]
    },
    "google-native:migrationcenter/v1:UploadFileInfo": {
      "description": "A resource that contains a URI to which a data file can be uploaded.",
      "type": "object"
    },
    "google-native:migrationcenter/v1:UploadFileInfoResponse": {
      "description": "A resource that contains a URI to which a data file can be uploaded.",
      "properties": {
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The headers that were used to sign the URI."
        },
        "signedUri": {
          "type": "string",
          "description": "Upload URI for the file."
        },
        "uriExpirationTime": {
          "type": "string",
          "description": "Expiration time of the upload URI."
        }
      },
      "type": "object",
      "required": [
        "headers",
        "signedUri",
        "uriExpirationTime"
      ]
    },
    "google-native:migrationcenter/v1:ValidationReportResponse": {
      "description": "A resource that aggregates errors across import job files.",
      "properties": {
        "fileValidations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:FileValidationReportResponse"
          },
          "description": "List of errors found in files."
        },
        "jobErrors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ImportErrorResponse"
          },
          "description": "List of job level errors."
        }
      },
      "type": "object",
      "required": [
        "fileValidations",
        "jobErrors"
      ]
    },
    "google-native:migrationcenter/v1:VirtualMachinePreferences": {
      "description": "VirtualMachinePreferences enables you to create sets of assumptions, for example, a geographical location and pricing track, for your migrated virtual machines. The set of preferences influence recommendations for migrating virtual machine assets.",
      "properties": {
        "commitmentPlan": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VirtualMachinePreferencesCommitmentPlan",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "computeEnginePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ComputeEnginePreferences",
          "description": "Compute Engine preferences concern insights and recommendations for Compute Engine target."
        },
        "regionPreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:RegionPreferences",
          "description": "Region preferences for assets using this preference set. If you are unsure which value to set, the migration service API region is often a good value to start with."
        },
        "sizingOptimizationStrategy": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VirtualMachinePreferencesSizingOptimizationStrategy",
          "description": "Sizing optimization strategy specifies the preferred strategy used when extrapolating usage data to calculate insights and recommendations for a virtual machine. If you are unsure which value to set, a moderate sizing optimization strategy is often a good value to start with."
        },
        "soleTenancyPreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:SoleTenancyPreferences",
          "description": "Preferences concerning Sole Tenant nodes and virtual machines."
        },
        "targetProduct": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VirtualMachinePreferencesTargetProduct",
          "description": "Target product for assets using this preference set. Specify either target product or business goal, but not both."
        },
        "vmwareEnginePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VmwareEnginePreferences",
          "description": "Preferences concerning insights and recommendations for Google Cloud VMware Engine."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1:VirtualMachinePreferencesCommitmentPlan": {
      "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Unspecified commitment plan.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "CommitmentPlanNone",
          "description": "No commitment plan.",
          "value": "COMMITMENT_PLAN_NONE"
        },
        {
          "name": "CommitmentPlanOneYear",
          "description": "1 year commitment.",
          "value": "COMMITMENT_PLAN_ONE_YEAR"
        },
        {
          "name": "CommitmentPlanThreeYears",
          "description": "3 years commitment.",
          "value": "COMMITMENT_PLAN_THREE_YEARS"
        }
      ]
    },
    "google-native:migrationcenter/v1:VirtualMachinePreferencesResponse": {
      "description": "VirtualMachinePreferences enables you to create sets of assumptions, for example, a geographical location and pricing track, for your migrated virtual machines. The set of preferences influence recommendations for migrating virtual machine assets.",
      "properties": {
        "commitmentPlan": {
          "type": "string",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "computeEnginePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ComputeEnginePreferencesResponse",
          "description": "Compute Engine preferences concern insights and recommendations for Compute Engine target."
        },
        "regionPreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:RegionPreferencesResponse",
          "description": "Region preferences for assets using this preference set. If you are unsure which value to set, the migration service API region is often a good value to start with."
        },
        "sizingOptimizationStrategy": {
          "type": "string",
          "description": "Sizing optimization strategy specifies the preferred strategy used when extrapolating usage data to calculate insights and recommendations for a virtual machine. If you are unsure which value to set, a moderate sizing optimization strategy is often a good value to start with."
        },
        "soleTenancyPreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:SoleTenancyPreferencesResponse",
          "description": "Preferences concerning Sole Tenant nodes and virtual machines."
        },
        "targetProduct": {
          "type": "string",
          "description": "Target product for assets using this preference set. Specify either target product or business goal, but not both."
        },
        "vmwareEnginePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VmwareEnginePreferencesResponse",
          "description": "Preferences concerning insights and recommendations for Google Cloud VMware Engine."
        }
      },
      "type": "object",
      "required": [
        "commitmentPlan",
        "computeEnginePreferences",
        "regionPreferences",
        "sizingOptimizationStrategy",
        "soleTenancyPreferences",
        "targetProduct",
        "vmwareEnginePreferences"
      ]
    },
    "google-native:migrationcenter/v1:VirtualMachinePreferencesSizingOptimizationStrategy": {
      "description": "Sizing optimization strategy specifies the preferred strategy used when extrapolating usage data to calculate insights and recommendations for a virtual machine. If you are unsure which value to set, a moderate sizing optimization strategy is often a good value to start with.",
      "type": "string",
      "enum": [
        {
          "name": "SizingOptimizationStrategyUnspecified",
          "description": "Unspecified (default value).",
          "value": "SIZING_OPTIMIZATION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "SizingOptimizationStrategySameAsSource",
          "description": "No optimization applied. Virtual machine sizing matches as closely as possible the machine shape on the source site, not considering any actual performance data.",
          "value": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE"
        },
        {
          "name": "SizingOptimizationStrategyModerate",
          "description": "Virtual machine sizing will match the reported usage and shape, with some slack. This a good value to start with.",
          "value": "SIZING_OPTIMIZATION_STRATEGY_MODERATE"
        },
        {
          "name": "SizingOptimizationStrategyAggressive",
          "description": "Virtual machine sizing will match the reported usage, with little slack. Using this option can help reduce costs.",
          "value": "SIZING_OPTIMIZATION_STRATEGY_AGGRESSIVE"
        }
      ]
    },
    "google-native:migrationcenter/v1:VirtualMachinePreferencesTargetProduct": {
      "description": "Target product for assets using this preference set. Specify either target product or business goal, but not both.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeMigrationTargetProductUnspecified",
          "description": "Unspecified (default value).",
          "value": "COMPUTE_MIGRATION_TARGET_PRODUCT_UNSPECIFIED"
        },
        {
          "name": "ComputeMigrationTargetProductComputeEngine",
          "description": "Prefer to migrate to Google Cloud Compute Engine.",
          "value": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE"
        },
        {
          "name": "ComputeMigrationTargetProductVmwareEngine",
          "description": "Prefer to migrate to Google Cloud VMware Engine.",
          "value": "COMPUTE_MIGRATION_TARGET_PRODUCT_VMWARE_ENGINE"
        },
        {
          "name": "ComputeMigrationTargetProductSoleTenancy",
          "description": "Prefer to migrate to Google Cloud Sole Tenant Nodes.",
          "value": "COMPUTE_MIGRATION_TARGET_PRODUCT_SOLE_TENANCY"
        }
      ]
    },
    "google-native:migrationcenter/v1:VmwareEnginePreferences": {
      "description": "The user preferences relating to Google Cloud VMware Engine target platform.",
      "properties": {
        "commitmentPlan": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VmwareEnginePreferencesCommitmentPlan",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "cpuOvercommitRatio": {
          "type": "number",
          "description": "CPU overcommit ratio. Acceptable values are between 1.0 and 8.0, with 0.1 increment."
        },
        "memoryOvercommitRatio": {
          "type": "number",
          "description": "Memory overcommit ratio. Acceptable values are 1.0, 1.25, 1.5, 1.75 and 2.0."
        },
        "storageDeduplicationCompressionRatio": {
          "type": "number",
          "description": "The Deduplication and Compression ratio is based on the logical (Used Before) space required to store data before applying deduplication and compression, in relation to the physical (Used After) space required after applying deduplication and compression. Specifically, the ratio is the Used Before space divided by the Used After space. For example, if the Used Before space is 3 GB, but the physical Used After space is 1 GB, the deduplication and compression ratio is 3x. Acceptable values are between 1.0 and 4.0."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1:VmwareEnginePreferencesCommitmentPlan": {
      "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Unspecified commitment plan.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "OnDemand",
          "description": "No commitment plan (on-demand usage).",
          "value": "ON_DEMAND"
        },
        {
          "name": "Commitment1YearMonthlyPayments",
          "description": "1 year commitment (monthly payments).",
          "value": "COMMITMENT_1_YEAR_MONTHLY_PAYMENTS"
        },
        {
          "name": "Commitment3YearMonthlyPayments",
          "description": "3 year commitment (monthly payments).",
          "value": "COMMITMENT_3_YEAR_MONTHLY_PAYMENTS"
        },
        {
          "name": "Commitment1YearUpfrontPayment",
          "description": "1 year commitment (upfront payment).",
          "value": "COMMITMENT_1_YEAR_UPFRONT_PAYMENT"
        },
        {
          "name": "Commitment3YearUpfrontPayment",
          "description": "3 years commitment (upfront payment).",
          "value": "COMMITMENT_3_YEAR_UPFRONT_PAYMENT"
        }
      ]
    },
    "google-native:migrationcenter/v1:VmwareEnginePreferencesResponse": {
      "description": "The user preferences relating to Google Cloud VMware Engine target platform.",
      "properties": {
        "commitmentPlan": {
          "type": "string",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "cpuOvercommitRatio": {
          "type": "number",
          "description": "CPU overcommit ratio. Acceptable values are between 1.0 and 8.0, with 0.1 increment."
        },
        "memoryOvercommitRatio": {
          "type": "number",
          "description": "Memory overcommit ratio. Acceptable values are 1.0, 1.25, 1.5, 1.75 and 2.0."
        },
        "storageDeduplicationCompressionRatio": {
          "type": "number",
          "description": "The Deduplication and Compression ratio is based on the logical (Used Before) space required to store data before applying deduplication and compression, in relation to the physical (Used After) space required after applying deduplication and compression. Specifically, the ratio is the Used Before space divided by the Used After space. For example, if the Used Before space is 3 GB, but the physical Used After space is 1 GB, the deduplication and compression ratio is 3x. Acceptable values are between 1.0 and 4.0."
        }
      },
      "type": "object",
      "required": [
        "commitmentPlan",
        "cpuOvercommitRatio",
        "memoryOvercommitRatio",
        "storageDeduplicationCompressionRatio"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ComputeEnginePreferences": {
      "description": "The user preferences relating to Compute Engine target platform.",
      "properties": {
        "licenseType": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ComputeEnginePreferencesLicenseType",
          "description": "License type to consider when calculating costs for virtual machine insights and recommendations. If unspecified, costs are calculated based on the default licensing plan."
        },
        "machinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MachinePreferences",
          "description": "Preferences concerning the machine types to consider on Compute Engine."
        },
        "persistentDiskType": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ComputeEnginePreferencesPersistentDiskType",
          "description": "Persistent disk type to use. If unspecified (default), all types are considered, based on available usage data."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:ComputeEnginePreferencesLicenseType": {
      "description": "License type to consider when calculating costs for virtual machine insights and recommendations. If unspecified, costs are calculated based on the default licensing plan.",
      "type": "string",
      "enum": [
        {
          "name": "LicenseTypeUnspecified",
          "description": "Unspecified (default value).",
          "value": "LICENSE_TYPE_UNSPECIFIED"
        },
        {
          "name": "LicenseTypeDefault",
          "description": "Default Google Cloud licensing plan. Licensing is charged per usage. This a good value to start with.",
          "value": "LICENSE_TYPE_DEFAULT"
        },
        {
          "name": "LicenseTypeBringYourOwnLicense",
          "description": "Bring-your-own-license (BYOL) plan. User provides the OS license.",
          "value": "LICENSE_TYPE_BRING_YOUR_OWN_LICENSE"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:ComputeEnginePreferencesPersistentDiskType": {
      "description": "Persistent disk type to use. If unspecified (default), all types are considered, based on available usage data.",
      "type": "string",
      "enum": [
        {
          "name": "PersistentDiskTypeUnspecified",
          "description": "Unspecified (default value). Selecting this value allows the system to use any disk type according to reported usage. This a good value to start with.",
          "value": "PERSISTENT_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PersistentDiskTypeStandard",
          "description": "Standard HDD Persistent Disk.",
          "value": "PERSISTENT_DISK_TYPE_STANDARD"
        },
        {
          "name": "PersistentDiskTypeBalanced",
          "description": "Balanced Persistent Disk.",
          "value": "PERSISTENT_DISK_TYPE_BALANCED"
        },
        {
          "name": "PersistentDiskTypeSsd",
          "description": "SSD Persistent Disk.",
          "value": "PERSISTENT_DISK_TYPE_SSD"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:ComputeEnginePreferencesResponse": {
      "description": "The user preferences relating to Compute Engine target platform.",
      "properties": {
        "licenseType": {
          "type": "string",
          "description": "License type to consider when calculating costs for virtual machine insights and recommendations. If unspecified, costs are calculated based on the default licensing plan."
        },
        "machinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MachinePreferencesResponse",
          "description": "Preferences concerning the machine types to consider on Compute Engine."
        },
        "persistentDiskType": {
          "type": "string",
          "description": "Persistent disk type to use. If unspecified (default), all types are considered, based on available usage data."
        }
      },
      "type": "object",
      "required": [
        "licenseType",
        "machinePreferences",
        "persistentDiskType"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ExecutionReportResponse": {
      "description": "A resource that reports result of the import job execution.",
      "properties": {
        "executionErrors": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ValidationReportResponse",
          "description": "Validation errors encountered during the execution of the import job."
        },
        "framesReported": {
          "type": "integer",
          "description": "Total number of asset frames reported for the import job."
        },
        "jobErrors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ImportErrorResponse"
          },
          "description": "List of job-level errors. Deprecated, use the job errors under execution_errors instead.",
          "deprecationMessage": "List of job-level errors. Deprecated, use the job errors under execution_errors instead."
        },
        "totalRowsCount": {
          "type": "integer",
          "description": "Total number of rows in the import job."
        }
      },
      "type": "object",
      "required": [
        "executionErrors",
        "framesReported",
        "jobErrors",
        "totalRowsCount"
      ]
    },
    "google-native:migrationcenter/v1alpha1:FileValidationReportResponse": {
      "description": "A resource that aggregates the validation errors found in an import job file.",
      "properties": {
        "fileErrors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ImportErrorResponse"
          },
          "description": "List of file level errors."
        },
        "fileName": {
          "type": "string",
          "description": "The name of the file."
        },
        "partialReport": {
          "type": "boolean",
          "description": "Flag indicating that processing was aborted due to maximum number of errors."
        },
        "rowErrors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ImportRowErrorResponse"
          },
          "description": "Partial list of rows that encountered validation error."
        }
      },
      "type": "object",
      "required": [
        "fileErrors",
        "fileName",
        "partialReport",
        "rowErrors"
      ]
    },
    "google-native:migrationcenter/v1alpha1:GCSPayloadInfo": {
      "description": "A resource that represents a payload hosted on Google Cloud Storage.",
      "properties": {
        "format": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:GCSPayloadInfoFormat",
          "description": "The import job format."
        },
        "path": {
          "type": "string",
          "description": "The payload path in Google Cloud Storage."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:GCSPayloadInfoFormat": {
      "description": "The import job format.",
      "type": "string",
      "enum": [
        {
          "name": "ImportJobFormatUnspecified",
          "description": "Default value.",
          "value": "IMPORT_JOB_FORMAT_UNSPECIFIED"
        },
        {
          "name": "ImportJobFormatCmdb",
          "description": "Configuration management DB format.",
          "value": "IMPORT_JOB_FORMAT_CMDB"
        },
        {
          "name": "ImportJobFormatRvtoolsXlsx",
          "description": "RVTools format (XLSX).",
          "value": "IMPORT_JOB_FORMAT_RVTOOLS_XLSX"
        },
        {
          "name": "ImportJobFormatRvtoolsCsv",
          "description": "RVTools format (CSV).",
          "value": "IMPORT_JOB_FORMAT_RVTOOLS_CSV"
        },
        {
          "name": "ImportJobFormatExportedAwsCsv",
          "description": "CSV format exported from AWS using the AWS collection script.",
          "value": "IMPORT_JOB_FORMAT_EXPORTED_AWS_CSV"
        },
        {
          "name": "ImportJobFormatExportedAzureCsv",
          "description": "CSV format exported from Azure using the Azure collection script.",
          "value": "IMPORT_JOB_FORMAT_EXPORTED_AZURE_CSV"
        },
        {
          "name": "ImportJobFormatManualCsv",
          "description": "CSV format created manually. For more information, see Manually create and upload data tables.",
          "value": "IMPORT_JOB_FORMAT_MANUAL_CSV"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:GCSPayloadInfoResponse": {
      "description": "A resource that represents a payload hosted on Google Cloud Storage.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The import job format."
        },
        "path": {
          "type": "string",
          "description": "The payload path in Google Cloud Storage."
        }
      },
      "type": "object",
      "required": [
        "format",
        "path"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ImportDataFileFormat": {
      "description": "Required. The payload format.",
      "type": "string",
      "enum": [
        {
          "name": "ImportJobFormatUnspecified",
          "description": "Default value.",
          "value": "IMPORT_JOB_FORMAT_UNSPECIFIED"
        },
        {
          "name": "ImportJobFormatCmdb",
          "description": "Configuration management DB format.",
          "value": "IMPORT_JOB_FORMAT_CMDB"
        },
        {
          "name": "ImportJobFormatRvtoolsXlsx",
          "description": "RVTools format (XLSX).",
          "value": "IMPORT_JOB_FORMAT_RVTOOLS_XLSX"
        },
        {
          "name": "ImportJobFormatRvtoolsCsv",
          "description": "RVTools format (CSV).",
          "value": "IMPORT_JOB_FORMAT_RVTOOLS_CSV"
        },
        {
          "name": "ImportJobFormatExportedAwsCsv",
          "description": "CSV format exported from AWS using the AWS collection script.",
          "value": "IMPORT_JOB_FORMAT_EXPORTED_AWS_CSV"
        },
        {
          "name": "ImportJobFormatExportedAzureCsv",
          "description": "CSV format exported from Azure using the Azure collection script.",
          "value": "IMPORT_JOB_FORMAT_EXPORTED_AZURE_CSV"
        },
        {
          "name": "ImportJobFormatManualCsv",
          "description": "CSV format created manually. For more information, see Manually create and upload data tables.",
          "value": "IMPORT_JOB_FORMAT_MANUAL_CSV"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:ImportErrorResponse": {
      "description": "A resource that reports the errors encountered while processing an import job.",
      "properties": {
        "errorDetails": {
          "type": "string",
          "description": "The error information."
        },
        "severity": {
          "type": "string",
          "description": "The severity of the error."
        }
      },
      "type": "object",
      "required": [
        "errorDetails",
        "severity"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ImportRowErrorResponse": {
      "description": "A resource that reports the import job errors at row level.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ImportErrorResponse"
          },
          "description": "The list of errors detected in the row."
        },
        "rowNumber": {
          "type": "integer",
          "description": "The row number where the error was detected."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM in the row."
        },
        "vmUuid": {
          "type": "string",
          "description": "The VM UUID."
        }
      },
      "type": "object",
      "required": [
        "errors",
        "rowNumber",
        "vmName",
        "vmUuid"
      ]
    },
    "google-native:migrationcenter/v1alpha1:InlinePayloadInfo": {
      "description": "A resource that represents the inline import job payload.",
      "properties": {
        "format": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:InlinePayloadInfoFormat",
          "description": "The import job format."
        },
        "payload": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:PayloadFile"
          },
          "description": "List of payload files."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:InlinePayloadInfoFormat": {
      "description": "The import job format.",
      "type": "string",
      "enum": [
        {
          "name": "ImportJobFormatUnspecified",
          "description": "Default value.",
          "value": "IMPORT_JOB_FORMAT_UNSPECIFIED"
        },
        {
          "name": "ImportJobFormatCmdb",
          "description": "Configuration management DB format.",
          "value": "IMPORT_JOB_FORMAT_CMDB"
        },
        {
          "name": "ImportJobFormatRvtoolsXlsx",
          "description": "RVTools format (XLSX).",
          "value": "IMPORT_JOB_FORMAT_RVTOOLS_XLSX"
        },
        {
          "name": "ImportJobFormatRvtoolsCsv",
          "description": "RVTools format (CSV).",
          "value": "IMPORT_JOB_FORMAT_RVTOOLS_CSV"
        },
        {
          "name": "ImportJobFormatExportedAwsCsv",
          "description": "CSV format exported from AWS using the AWS collection script.",
          "value": "IMPORT_JOB_FORMAT_EXPORTED_AWS_CSV"
        },
        {
          "name": "ImportJobFormatExportedAzureCsv",
          "description": "CSV format exported from Azure using the Azure collection script.",
          "value": "IMPORT_JOB_FORMAT_EXPORTED_AZURE_CSV"
        },
        {
          "name": "ImportJobFormatManualCsv",
          "description": "CSV format created manually. For more information, see Manually create and upload data tables.",
          "value": "IMPORT_JOB_FORMAT_MANUAL_CSV"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:InlinePayloadInfoResponse": {
      "description": "A resource that represents the inline import job payload.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The import job format."
        },
        "payload": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:PayloadFileResponse"
          },
          "description": "List of payload files."
        }
      },
      "type": "object",
      "required": [
        "format",
        "payload"
      ]
    },
    "google-native:migrationcenter/v1alpha1:MachinePreferences": {
      "description": "The type of machines to consider when calculating virtual machine migration insights and recommendations. Not all machine types are available in all zones and regions.",
      "properties": {
        "allowedMachineSeries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MachineSeries"
          },
          "description": "Compute Engine machine series to consider for insights and recommendations. If empty, no restriction is applied on the machine series."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:MachinePreferencesResponse": {
      "description": "The type of machines to consider when calculating virtual machine migration insights and recommendations. Not all machine types are available in all zones and regions.",
      "properties": {
        "allowedMachineSeries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MachineSeriesResponse"
          },
          "description": "Compute Engine machine series to consider for insights and recommendations. If empty, no restriction is applied on the machine series."
        }
      },
      "type": "object",
      "required": [
        "allowedMachineSeries"
      ]
    },
    "google-native:migrationcenter/v1alpha1:MachineSeries": {
      "description": "A Compute Engine machine series.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code to identify a Compute Engine machine series. Consult https://cloud.google.com/compute/docs/machine-resource#machine_type_comparison for more details on the available series."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:MachineSeriesResponse": {
      "description": "A Compute Engine machine series.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code to identify a Compute Engine machine series. Consult https://cloud.google.com/compute/docs/machine-resource#machine_type_comparison for more details on the available series."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:migrationcenter/v1alpha1:MoneyResponse": {
      "description": "Represents an amount of money with its currency type.",
      "properties": {
        "currencyCode": {
          "type": "string",
          "description": "The three-letter currency code defined in ISO 4217."
        },
        "nanos": {
          "type": "integer",
          "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000."
        },
        "units": {
          "type": "string",
          "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar."
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "nanos",
        "units"
      ]
    },
    "google-native:migrationcenter/v1alpha1:PayloadFile": {
      "description": "Payload file for inline import job payload.",
      "properties": {
        "data": {
          "type": "string",
          "description": "The file data."
        },
        "name": {
          "type": "string",
          "description": "The file name."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:PayloadFileResponse": {
      "description": "Payload file for inline import job payload.",
      "properties": {
        "data": {
          "type": "string",
          "description": "The file data."
        },
        "name": {
          "type": "string",
          "description": "The file name."
        }
      },
      "type": "object",
      "required": [
        "data",
        "name"
      ]
    },
    "google-native:migrationcenter/v1alpha1:RegionPreferences": {
      "description": "The user preferences relating to target regions.",
      "properties": {
        "preferredRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of preferred regions, ordered by the most preferred region first. Set only valid Google Cloud region names. See https://cloud.google.com/compute/docs/regions-zones for available regions."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:RegionPreferencesResponse": {
      "description": "The user preferences relating to target regions.",
      "properties": {
        "preferredRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of preferred regions, ordered by the most preferred region first. Set only valid Google Cloud region names. See https://cloud.google.com/compute/docs/regions-zones for available regions."
        }
      },
      "type": "object",
      "required": [
        "preferredRegions"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportConfigGroupPreferenceSetAssignment": {
      "description": "Represents a combination of a group with a preference set.",
      "properties": {
        "group": {
          "type": "string",
          "description": "Name of the group."
        },
        "preferenceSet": {
          "type": "string",
          "description": "Name of the Preference Set."
        }
      },
      "type": "object",
      "required": [
        "group",
        "preferenceSet"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportConfigGroupPreferenceSetAssignmentResponse": {
      "description": "Represents a combination of a group with a preference set.",
      "properties": {
        "group": {
          "type": "string",
          "description": "Name of the group."
        },
        "preferenceSet": {
          "type": "string",
          "description": "Name of the Preference Set."
        }
      },
      "type": "object",
      "required": [
        "group",
        "preferenceSet"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportState": {
      "description": "Report creation state.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Default Report creation state.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Pending",
          "description": "Creating Report.",
          "value": "PENDING"
        },
        {
          "name": "Succeeded",
          "description": "Successfully created Report.",
          "value": "SUCCEEDED"
        },
        {
          "name": "Failed",
          "description": "Failed to create Report.",
          "value": "FAILED"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryAssetAggregateStatsResponse": {
      "description": "Aggregate statistics for a collection of assets.",
      "properties": {
        "assetAge": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryChartDataResponse",
          "description": "Count of assets grouped by age."
        },
        "coreCountHistogram": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryHistogramChartDataResponse",
          "description": "Histogram showing a distribution of CPU core counts."
        },
        "memoryBytesHistogram": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryHistogramChartDataResponse",
          "description": "Histogram showing a distribution of memory sizes."
        },
        "memoryUtilization": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryChartDataResponse",
          "description": "Total memory split into Used/Free buckets."
        },
        "memoryUtilizationChart": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryUtilizationChartDataResponse",
          "description": "Total memory split into Used/Free buckets."
        },
        "operatingSystem": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryChartDataResponse",
          "description": "Count of assets grouped by Operating System families."
        },
        "storageBytesHistogram": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryHistogramChartDataResponse",
          "description": "Histogram showing a distribution of memory sizes."
        },
        "storageUtilization": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryChartDataResponse",
          "description": "Total storage split into Used/Free buckets."
        },
        "storageUtilizationChart": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryUtilizationChartDataResponse",
          "description": "Total memory split into Used/Free buckets."
        },
        "totalAssets": {
          "type": "string",
          "description": "Count of the number of unique assets in this collection."
        },
        "totalCores": {
          "type": "string",
          "description": "Sum of the CPU core count of all the assets in this collection."
        },
        "totalMemoryBytes": {
          "type": "string",
          "description": "Sum of the memory in bytes of all the assets in this collection."
        },
        "totalStorageBytes": {
          "type": "string",
          "description": "Sum of persistent storage in bytes of all the assets in this collection."
        }
      },
      "type": "object",
      "required": [
        "assetAge",
        "coreCountHistogram",
        "memoryBytesHistogram",
        "memoryUtilization",
        "memoryUtilizationChart",
        "operatingSystem",
        "storageBytesHistogram",
        "storageUtilization",
        "storageUtilizationChart",
        "totalAssets",
        "totalCores",
        "totalMemoryBytes",
        "totalStorageBytes"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryChartDataDataPointResponse": {
      "description": "Describes a single data point in the Chart.",
      "properties": {
        "label": {
          "type": "string",
          "description": "The X-axis label for this data point."
        },
        "value": {
          "type": "number",
          "description": "The Y-axis value for this data point."
        }
      },
      "type": "object",
      "required": [
        "label",
        "value"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryChartDataResponse": {
      "description": "Describes a collection of data points rendered as a Chart.",
      "properties": {
        "dataPoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryChartDataDataPointResponse"
          },
          "description": "Each data point in the chart is represented as a name-value pair with the name being the x-axis label, and the value being the y-axis value."
        }
      },
      "type": "object",
      "required": [
        "dataPoints"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryGroupFindingResponse": {
      "description": "Summary Findings for a specific Group.",
      "properties": {
        "assetAggregateStats": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryAssetAggregateStatsResponse",
          "description": "Summary statistics for all the assets in this group."
        },
        "description": {
          "type": "string",
          "description": "Description for the Group."
        },
        "displayName": {
          "type": "string",
          "description": "Display Name for the Group."
        },
        "overlappingAssetCount": {
          "type": "string",
          "description": "This field is deprecated, do not rely on it having a value.",
          "deprecationMessage": "This field is deprecated, do not rely on it having a value."
        },
        "preferenceSetFindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryGroupPreferenceSetFindingResponse"
          },
          "description": "Findings for each of the PreferenceSets for this group."
        }
      },
      "type": "object",
      "required": [
        "assetAggregateStats",
        "description",
        "displayName",
        "overlappingAssetCount",
        "preferenceSetFindings"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryGroupPreferenceSetFindingResponse": {
      "description": "Summary Findings for a specific Group/PreferenceSet combination.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description for the Preference Set."
        },
        "displayName": {
          "type": "string",
          "description": "Display Name of the Preference Set"
        },
        "machineFinding": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryMachineFindingResponse",
          "description": "A set of findings that applies to all machines in the input."
        },
        "machinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesResponse",
          "description": "A set of preferences that applies to all machines in the context."
        },
        "monthlyCostCompute": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MoneyResponse",
          "description": "Compute monthly cost for this preference set."
        },
        "monthlyCostNetworkEgress": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MoneyResponse",
          "description": "Network Egress monthly cost for this preference set."
        },
        "monthlyCostOsLicense": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MoneyResponse",
          "description": "Licensing monthly cost for this preference set."
        },
        "monthlyCostOther": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MoneyResponse",
          "description": "Miscellaneous monthly cost for this preference set."
        },
        "monthlyCostStorage": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MoneyResponse",
          "description": "Storage monthly cost for this preference set."
        },
        "monthlyCostTotal": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MoneyResponse",
          "description": "Total monthly cost for this preference set."
        },
        "preferredRegion": {
          "type": "string",
          "description": "Target region for this Preference Set"
        },
        "pricingTrack": {
          "type": "string",
          "description": "Text describing the pricing track specified for this Preference Set"
        },
        "soleTenantFinding": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummarySoleTenantFindingResponse",
          "description": "A set of findings that applies to Stole-Tenant machines in the input."
        },
        "topPriority": {
          "type": "string",
          "description": "Text describing the business priority specified for this Preference Set"
        },
        "vmwareEngineFinding": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryVMWareEngineFindingResponse",
          "description": "A set of findings that applies to VMWare machines in the input."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "machineFinding",
        "machinePreferences",
        "monthlyCostCompute",
        "monthlyCostNetworkEgress",
        "monthlyCostOsLicense",
        "monthlyCostOther",
        "monthlyCostStorage",
        "monthlyCostTotal",
        "preferredRegion",
        "pricingTrack",
        "soleTenantFinding",
        "topPriority",
        "vmwareEngineFinding"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryHistogramChartDataBucketResponse": {
      "description": "A histogram bucket with a lower and upper bound, and a count of items with a field value between those bounds. The lower bound is inclusive and the upper bound is exclusive. Lower bound may be -infinity and upper bound may be infinity.",
      "properties": {
        "count": {
          "type": "string",
          "description": "Count of items in the bucket."
        },
        "lowerBound": {
          "type": "string",
          "description": "Lower bound - inclusive."
        },
        "upperBound": {
          "type": "string",
          "description": "Upper bound - exclusive."
        }
      },
      "type": "object",
      "required": [
        "count",
        "lowerBound",
        "upperBound"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryHistogramChartDataResponse": {
      "description": "A Histogram Chart shows a distribution of values into buckets, showing a count of values which fall into a bucket.",
      "properties": {
        "buckets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryHistogramChartDataBucketResponse"
          },
          "description": "Buckets in the histogram. There will be `n+1` buckets matching `n` lower bounds in the request. The first bucket will be from -infinity to the first bound. Subsequent buckets will be between one bound and the next. The final bucket will be from the final bound to infinity."
        }
      },
      "type": "object",
      "required": [
        "buckets"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryMachineFindingResponse": {
      "description": "A set of findings that applies to assets of type Virtual/Physical Machine.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets which were allocated."
        },
        "allocatedDiskTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of disk types allocated to assets."
        },
        "allocatedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of regions in which the assets were allocated."
        },
        "machineSeriesAllocations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryMachineSeriesAllocationResponse"
          },
          "description": "Distribution of assets based on the Machine Series."
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "allocatedDiskTypes",
        "allocatedRegions",
        "machineSeriesAllocations"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryMachineSeriesAllocationResponse": {
      "description": "Represents a data point tracking the count of assets allocated for a specific Machine Series.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets allocated to this machine series."
        },
        "machineSeries": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:MachineSeriesResponse",
          "description": "The Machine Series (e.g. \"E2\", \"N2\")"
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "machineSeries"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryResponse": {
      "description": "Describes the Summary view of a Report, which contains aggregated values for all the groups and preference sets included in this Report.",
      "properties": {
        "allAssetsStats": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryAssetAggregateStatsResponse",
          "description": "Aggregate statistics for all the assets across all the groups."
        },
        "groupFindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryGroupFindingResponse"
          },
          "description": "Findings for each Group included in this report."
        }
      },
      "type": "object",
      "required": [
        "allAssetsStats",
        "groupFindings"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummarySoleTenantFindingResponse": {
      "description": "A set of findings that applies to assets destined for Sole-Tenant nodes.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets which are allocated"
        },
        "allocatedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of regions in which the assets are allocated"
        },
        "nodeAllocations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummarySoleTenantNodeAllocationResponse"
          },
          "description": "Set of per-nodetype allocation records"
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "allocatedRegions",
        "nodeAllocations"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummarySoleTenantNodeAllocationResponse": {
      "description": "Represents the assets allocated to a specific Sole-Tenant node type.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets allocated to these nodes"
        },
        "node": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:SoleTenantNodeTypeResponse",
          "description": "Sole Tenant node type, e.g. \"m3-node-128-3904\""
        },
        "nodeCount": {
          "type": "string",
          "description": "Count of this node type to be provisioned"
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "node",
        "nodeCount"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryUtilizationChartDataResponse": {
      "description": "Utilization Chart is a specific type of visualization which displays a metric classified into \"Used\" and \"Free\" buckets.",
      "properties": {
        "free": {
          "type": "string",
          "description": "Aggregate value which falls into the \"Free\" bucket."
        },
        "used": {
          "type": "string",
          "description": "Aggregate value which falls into the \"Used\" bucket."
        }
      },
      "type": "object",
      "required": [
        "free",
        "used"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryVMWareEngineFindingResponse": {
      "description": "A set of findings that applies to assets destined for VMWare Engine.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets which are allocated"
        },
        "allocatedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of regions in which the assets were allocated"
        },
        "nodeAllocations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryVMWareNodeAllocationResponse"
          },
          "description": "Set of per-nodetype allocation records"
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "allocatedRegions",
        "nodeAllocations"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryVMWareNodeAllocationResponse": {
      "description": "Represents assets allocated to a specific VMWare Node type.",
      "properties": {
        "allocatedAssetCount": {
          "type": "string",
          "description": "Count of assets allocated to these nodes"
        },
        "nodeCount": {
          "type": "string",
          "description": "Count of this node type to be provisioned"
        },
        "vmwareNode": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryVMWareNodeResponse",
          "description": "VMWare node type, e.g. \"ve1-standard-72\""
        }
      },
      "type": "object",
      "required": [
        "allocatedAssetCount",
        "nodeCount",
        "vmwareNode"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportSummaryVMWareNodeResponse": {
      "description": "A VMWare Engine Node",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code to identify VMware Engine node series, e.g. \"ve1-standard-72\". Based on the displayName of cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.nodeTypes"
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportType": {
      "description": "Report type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default Report type.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TotalCostOfOwnership",
          "description": "Total cost of ownership Report type.",
          "value": "TOTAL_COST_OF_OWNERSHIP"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:SoleTenancyPreferences": {
      "description": "Preferences concerning Sole Tenancy nodes and VMs.",
      "properties": {
        "commitmentPlan": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:SoleTenancyPreferencesCommitmentPlan",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "cpuOvercommitRatio": {
          "type": "number",
          "description": "CPU overcommit ratio. Acceptable values are between 1.0 and 2.0 inclusive."
        },
        "hostMaintenancePolicy": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:SoleTenancyPreferencesHostMaintenancePolicy",
          "description": "Sole Tenancy nodes maintenance policy."
        },
        "nodeTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:SoleTenantNodeType"
          },
          "description": "A list of sole tenant node types. An empty list means that all possible node types will be considered."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:SoleTenancyPreferencesCommitmentPlan": {
      "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Unspecified commitment plan.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "OnDemand",
          "description": "No commitment plan (on-demand usage).",
          "value": "ON_DEMAND"
        },
        {
          "name": "Commitment1Year",
          "description": "1 year commitment.",
          "value": "COMMITMENT_1_YEAR"
        },
        {
          "name": "Commitment3Year",
          "description": "3 years commitment.",
          "value": "COMMITMENT_3_YEAR"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:SoleTenancyPreferencesHostMaintenancePolicy": {
      "description": "Sole Tenancy nodes maintenance policy.",
      "type": "string",
      "enum": [
        {
          "name": "HostMaintenancePolicyUnspecified",
          "description": "Unspecified host maintenance policy.",
          "value": "HOST_MAINTENANCE_POLICY_UNSPECIFIED"
        },
        {
          "name": "HostMaintenancePolicyDefault",
          "description": "Default host maintenance policy.",
          "value": "HOST_MAINTENANCE_POLICY_DEFAULT"
        },
        {
          "name": "HostMaintenancePolicyRestartInPlace",
          "description": "Restart in place host maintenance policy.",
          "value": "HOST_MAINTENANCE_POLICY_RESTART_IN_PLACE"
        },
        {
          "name": "HostMaintenancePolicyMigrateWithinNodeGroup",
          "description": "Migrate within node group host maintenance policy.",
          "value": "HOST_MAINTENANCE_POLICY_MIGRATE_WITHIN_NODE_GROUP"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:SoleTenancyPreferencesResponse": {
      "description": "Preferences concerning Sole Tenancy nodes and VMs.",
      "properties": {
        "commitmentPlan": {
          "type": "string",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "cpuOvercommitRatio": {
          "type": "number",
          "description": "CPU overcommit ratio. Acceptable values are between 1.0 and 2.0 inclusive."
        },
        "hostMaintenancePolicy": {
          "type": "string",
          "description": "Sole Tenancy nodes maintenance policy."
        },
        "nodeTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:SoleTenantNodeTypeResponse"
          },
          "description": "A list of sole tenant node types. An empty list means that all possible node types will be considered."
        }
      },
      "type": "object",
      "required": [
        "commitmentPlan",
        "cpuOvercommitRatio",
        "hostMaintenancePolicy",
        "nodeTypes"
      ]
    },
    "google-native:migrationcenter/v1alpha1:SoleTenantNodeType": {
      "description": "A Sole Tenant node type.",
      "properties": {
        "nodeName": {
          "type": "string",
          "description": "Name of the Sole Tenant node. Consult https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes"
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:SoleTenantNodeTypeResponse": {
      "description": "A Sole Tenant node type.",
      "properties": {
        "nodeName": {
          "type": "string",
          "description": "Name of the Sole Tenant node. Consult https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes"
        }
      },
      "type": "object",
      "required": [
        "nodeName"
      ]
    },
    "google-native:migrationcenter/v1alpha1:SourceType": {
      "description": "Data source type.",
      "type": "string",
      "enum": [
        {
          "name": "SourceTypeUnknown",
          "description": "Unspecified",
          "value": "SOURCE_TYPE_UNKNOWN"
        },
        {
          "name": "SourceTypeUpload",
          "description": "Manually uploaded file (e.g. CSV)",
          "value": "SOURCE_TYPE_UPLOAD"
        },
        {
          "name": "SourceTypeGuestOsScan",
          "description": "Guest-level info",
          "value": "SOURCE_TYPE_GUEST_OS_SCAN"
        },
        {
          "name": "SourceTypeInventoryScan",
          "description": "Inventory-level scan",
          "value": "SOURCE_TYPE_INVENTORY_SCAN"
        },
        {
          "name": "SourceTypeCustom",
          "description": "Third-party owned sources.",
          "value": "SOURCE_TYPE_CUSTOM"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:UploadFileInfo": {
      "description": "A resource that contains a URI to which a data file can be uploaded.",
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:UploadFileInfoResponse": {
      "description": "A resource that contains a URI to which a data file can be uploaded.",
      "properties": {
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The headers that were used to sign the URL."
        },
        "signedUri": {
          "type": "string",
          "description": "Upload URI for the file."
        },
        "uriExpirationTime": {
          "type": "string",
          "description": "Expiration time of the upload URI."
        }
      },
      "type": "object",
      "required": [
        "headers",
        "signedUri",
        "uriExpirationTime"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ValidationReportResponse": {
      "description": "A resource that aggregates errors across import job files.",
      "properties": {
        "fileValidations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:FileValidationReportResponse"
          },
          "description": "List of errors found in files."
        },
        "jobErrors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ImportErrorResponse"
          },
          "description": "List of job level errors."
        }
      },
      "type": "object",
      "required": [
        "fileValidations",
        "jobErrors"
      ]
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferences": {
      "description": "VirtualMachinePreferences enables you to create sets of preferences, for example, a geographical location and pricing track, for your migrated virtual machines. The set of preferences influence recommendations for migrating virtual machine assets.",
      "properties": {
        "commitmentPlan": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesCommitmentPlan",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "computeEnginePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ComputeEnginePreferences",
          "description": "Compute Engine preferences concern insights and recommendations for Compute Engine target."
        },
        "networkCostParameters": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesNetworkCostParameters",
          "description": "Optional. Parameters that affect network cost estimations. If not set, default values will be used for the parameters."
        },
        "regionPreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:RegionPreferences",
          "description": "Region preferences for assets using this preference set. If you are unsure which value to set, the migration service API region is often a good value to start with. If PreferenceSet.RegionPreferences is specified, it overrides this field."
        },
        "sizingOptimizationCustomParameters": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesSizingOptimizationCustomParameters",
          "description": "Optional. Custom data to use for sizing optimizations. Relevant when SizingOptimizationStrategy is set to \"custom\"."
        },
        "sizingOptimizationStrategy": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesSizingOptimizationStrategy",
          "description": "Sizing optimization strategy specifies the preferred strategy used when extrapolating usage data to calculate insights and recommendations for a virtual machine. If you are unsure which value to set, a moderate sizing optimization strategy is often a good value to start with."
        },
        "soleTenancyPreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:SoleTenancyPreferences",
          "description": "Preferences concerning Sole Tenant nodes and virtual machines."
        },
        "targetProduct": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesTargetProduct",
          "description": "Target product for assets using this preference set. Specify either target product or business goal, but not both."
        },
        "vmwareEnginePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VmwareEnginePreferences",
          "description": "Preferences concerning insights and recommendations for Google Cloud VMware Engine."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesCommitmentPlan": {
      "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Unspecified commitment plan.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "CommitmentPlanNone",
          "description": "No commitment plan.",
          "value": "COMMITMENT_PLAN_NONE"
        },
        {
          "name": "CommitmentPlanOneYear",
          "description": "1 year commitment.",
          "value": "COMMITMENT_PLAN_ONE_YEAR"
        },
        {
          "name": "CommitmentPlanThreeYears",
          "description": "3 years commitment.",
          "value": "COMMITMENT_PLAN_THREE_YEARS"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesNetworkCostParameters": {
      "description": "Parameters that affect network cost estimations.",
      "properties": {
        "estimatedEgressTrafficPercentage": {
          "type": "integer",
          "description": "Optional. An estimated percentage of priced outbound traffic (egress traffic) from the measured outbound traffic. Must be in the interval [0, 100]."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesNetworkCostParametersResponse": {
      "description": "Parameters that affect network cost estimations.",
      "properties": {
        "estimatedEgressTrafficPercentage": {
          "type": "integer",
          "description": "Optional. An estimated percentage of priced outbound traffic (egress traffic) from the measured outbound traffic. Must be in the interval [0, 100]."
        }
      },
      "type": "object",
      "required": [
        "estimatedEgressTrafficPercentage"
      ]
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesResponse": {
      "description": "VirtualMachinePreferences enables you to create sets of preferences, for example, a geographical location and pricing track, for your migrated virtual machines. The set of preferences influence recommendations for migrating virtual machine assets.",
      "properties": {
        "commitmentPlan": {
          "type": "string",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "computeEnginePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ComputeEnginePreferencesResponse",
          "description": "Compute Engine preferences concern insights and recommendations for Compute Engine target."
        },
        "networkCostParameters": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesNetworkCostParametersResponse",
          "description": "Optional. Parameters that affect network cost estimations. If not set, default values will be used for the parameters."
        },
        "regionPreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:RegionPreferencesResponse",
          "description": "Region preferences for assets using this preference set. If you are unsure which value to set, the migration service API region is often a good value to start with. If PreferenceSet.RegionPreferences is specified, it overrides this field."
        },
        "sizingOptimizationCustomParameters": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesSizingOptimizationCustomParametersResponse",
          "description": "Optional. Custom data to use for sizing optimizations. Relevant when SizingOptimizationStrategy is set to \"custom\"."
        },
        "sizingOptimizationStrategy": {
          "type": "string",
          "description": "Sizing optimization strategy specifies the preferred strategy used when extrapolating usage data to calculate insights and recommendations for a virtual machine. If you are unsure which value to set, a moderate sizing optimization strategy is often a good value to start with."
        },
        "soleTenancyPreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:SoleTenancyPreferencesResponse",
          "description": "Preferences concerning Sole Tenant nodes and virtual machines."
        },
        "targetProduct": {
          "type": "string",
          "description": "Target product for assets using this preference set. Specify either target product or business goal, but not both."
        },
        "vmwareEnginePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VmwareEnginePreferencesResponse",
          "description": "Preferences concerning insights and recommendations for Google Cloud VMware Engine."
        }
      },
      "type": "object",
      "required": [
        "commitmentPlan",
        "computeEnginePreferences",
        "networkCostParameters",
        "regionPreferences",
        "sizingOptimizationCustomParameters",
        "sizingOptimizationStrategy",
        "soleTenancyPreferences",
        "targetProduct",
        "vmwareEnginePreferences"
      ]
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesSizingOptimizationCustomParameters": {
      "description": "Custom data to use for sizing optimizations.",
      "properties": {
        "aggregationMethod": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesSizingOptimizationCustomParametersAggregationMethod",
          "description": "Optional. Type of statistical aggregation of a resource utilization data, on which to base the sizing metrics."
        },
        "cpuUsagePercentage": {
          "type": "integer",
          "description": "Optional. Desired percentage of CPU usage. Must be in the interval [1, 100] (or 0 for default value)."
        },
        "memoryUsagePercentage": {
          "type": "integer",
          "description": "Optional. Desired percentage of memory usage. Must be in the interval [1, 100] (or 0 for default value)."
        },
        "storageMultiplier": {
          "type": "number",
          "description": "Optional. Desired increase factor of storage, relative to currently used storage. Must be in the interval [1.0, 2.0] (or 0 for default value)."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesSizingOptimizationCustomParametersAggregationMethod": {
      "description": "Optional. Type of statistical aggregation of a resource utilization data, on which to base the sizing metrics.",
      "type": "string",
      "enum": [
        {
          "name": "AggregationMethodUnspecified",
          "description": "Unspecified aggregation method. Can be used for default value.",
          "value": "AGGREGATION_METHOD_UNSPECIFIED"
        },
        {
          "name": "AggregationMethodAverage",
          "description": "Average of utilization data.",
          "value": "AGGREGATION_METHOD_AVERAGE"
        },
        {
          "name": "AggregationMethodMedian",
          "description": "Median of utilization data.",
          "value": "AGGREGATION_METHOD_MEDIAN"
        },
        {
          "name": "AggregationMethodNinetyFifthPercentile",
          "description": "95th percentile of utilization data.",
          "value": "AGGREGATION_METHOD_NINETY_FIFTH_PERCENTILE"
        },
        {
          "name": "AggregationMethodPeak",
          "description": "Peak of utilization data.",
          "value": "AGGREGATION_METHOD_PEAK"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesSizingOptimizationCustomParametersResponse": {
      "description": "Custom data to use for sizing optimizations.",
      "properties": {
        "aggregationMethod": {
          "type": "string",
          "description": "Optional. Type of statistical aggregation of a resource utilization data, on which to base the sizing metrics."
        },
        "cpuUsagePercentage": {
          "type": "integer",
          "description": "Optional. Desired percentage of CPU usage. Must be in the interval [1, 100] (or 0 for default value)."
        },
        "memoryUsagePercentage": {
          "type": "integer",
          "description": "Optional. Desired percentage of memory usage. Must be in the interval [1, 100] (or 0 for default value)."
        },
        "storageMultiplier": {
          "type": "number",
          "description": "Optional. Desired increase factor of storage, relative to currently used storage. Must be in the interval [1.0, 2.0] (or 0 for default value)."
        }
      },
      "type": "object",
      "required": [
        "aggregationMethod",
        "cpuUsagePercentage",
        "memoryUsagePercentage",
        "storageMultiplier"
      ]
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesSizingOptimizationStrategy": {
      "description": "Sizing optimization strategy specifies the preferred strategy used when extrapolating usage data to calculate insights and recommendations for a virtual machine. If you are unsure which value to set, a moderate sizing optimization strategy is often a good value to start with.",
      "type": "string",
      "enum": [
        {
          "name": "SizingOptimizationStrategyUnspecified",
          "description": "Unspecified (default value).",
          "value": "SIZING_OPTIMIZATION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "SizingOptimizationStrategySameAsSource",
          "description": "No optimization applied. Virtual machine sizing matches as closely as possible the machine shape on the source site, not considering any actual performance data.",
          "value": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE"
        },
        {
          "name": "SizingOptimizationStrategyModerate",
          "description": "Virtual machine sizing will match the reported usage and shape, with some slack. This a good value to start with.",
          "value": "SIZING_OPTIMIZATION_STRATEGY_MODERATE"
        },
        {
          "name": "SizingOptimizationStrategyAggressive",
          "description": "Virtual machine sizing will match the reported usage, with little slack. Using this option can help reduce costs.",
          "value": "SIZING_OPTIMIZATION_STRATEGY_AGGRESSIVE"
        },
        {
          "name": "SizingOptimizationStrategyCustom",
          "description": "Virtual machine sizing will be determined by custom parameters. While not supported in the v1 API, this value is converted to UNSPECIFIED in conversions to the v1 API.",
          "value": "SIZING_OPTIMIZATION_STRATEGY_CUSTOM"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:VirtualMachinePreferencesTargetProduct": {
      "description": "Target product for assets using this preference set. Specify either target product or business goal, but not both.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeMigrationTargetProductUnspecified",
          "description": "Unspecified (default value).",
          "value": "COMPUTE_MIGRATION_TARGET_PRODUCT_UNSPECIFIED"
        },
        {
          "name": "ComputeMigrationTargetProductComputeEngine",
          "description": "Prefer to migrate to Google Cloud Compute Engine.",
          "value": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE"
        },
        {
          "name": "ComputeMigrationTargetProductVmwareEngine",
          "description": "Prefer to migrate to Google Cloud VMware Engine.",
          "value": "COMPUTE_MIGRATION_TARGET_PRODUCT_VMWARE_ENGINE"
        },
        {
          "name": "ComputeMigrationTargetProductSoleTenancy",
          "description": "Prefer to migrate to Google Cloud Sole Tenant Nodes.",
          "value": "COMPUTE_MIGRATION_TARGET_PRODUCT_SOLE_TENANCY"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:VmwareEnginePreferences": {
      "description": "The user preferences relating to Google Cloud VMware Engine target platform.",
      "properties": {
        "commitmentPlan": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VmwareEnginePreferencesCommitmentPlan",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "cpuOvercommitRatio": {
          "type": "number",
          "description": "CPU overcommit ratio. Acceptable values are between 1.0 and 8.0, with 0.1 increment."
        },
        "memoryOvercommitRatio": {
          "type": "number",
          "description": "Memory overcommit ratio. Acceptable values are 1.0, 1.25, 1.5, 1.75 and 2.0."
        },
        "storageDeduplicationCompressionRatio": {
          "type": "number",
          "description": "The Deduplication and Compression ratio is based on the logical (Used Before) space required to store data before applying deduplication and compression, in relation to the physical (Used After) space required after applying deduplication and compression. Specifically, the ratio is the Used Before space divided by the Used After space. For example, if the Used Before space is 3 GB, but the physical Used After space is 1 GB, the deduplication and compression ratio is 3x. Acceptable values are between 1.0 and 4.0."
        }
      },
      "type": "object"
    },
    "google-native:migrationcenter/v1alpha1:VmwareEnginePreferencesCommitmentPlan": {
      "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with.",
      "type": "string",
      "enum": [
        {
          "name": "CommitmentPlanUnspecified",
          "description": "Unspecified commitment plan.",
          "value": "COMMITMENT_PLAN_UNSPECIFIED"
        },
        {
          "name": "OnDemand",
          "description": "No commitment plan (on-demand usage).",
          "value": "ON_DEMAND"
        },
        {
          "name": "Commitment1YearMonthlyPayments",
          "description": "1 year commitment (monthly payments).",
          "value": "COMMITMENT_1_YEAR_MONTHLY_PAYMENTS"
        },
        {
          "name": "Commitment3YearMonthlyPayments",
          "description": "3 year commitment (monthly payments).",
          "value": "COMMITMENT_3_YEAR_MONTHLY_PAYMENTS"
        },
        {
          "name": "Commitment1YearUpfrontPayment",
          "description": "1 year commitment (upfront payment).",
          "value": "COMMITMENT_1_YEAR_UPFRONT_PAYMENT"
        },
        {
          "name": "Commitment3YearUpfrontPayment",
          "description": "3 years commitment (upfront payment).",
          "value": "COMMITMENT_3_YEAR_UPFRONT_PAYMENT"
        }
      ]
    },
    "google-native:migrationcenter/v1alpha1:VmwareEnginePreferencesResponse": {
      "description": "The user preferences relating to Google Cloud VMware Engine target platform.",
      "properties": {
        "commitmentPlan": {
          "type": "string",
          "description": "Commitment plan to consider when calculating costs for virtual machine insights and recommendations. If you are unsure which value to set, a 3 year commitment plan is often a good value to start with."
        },
        "cpuOvercommitRatio": {
          "type": "number",
          "description": "CPU overcommit ratio. Acceptable values are between 1.0 and 8.0, with 0.1 increment."
        },
        "memoryOvercommitRatio": {
          "type": "number",
          "description": "Memory overcommit ratio. Acceptable values are 1.0, 1.25, 1.5, 1.75 and 2.0."
        },
        "storageDeduplicationCompressionRatio": {
          "type": "number",
          "description": "The Deduplication and Compression ratio is based on the logical (Used Before) space required to store data before applying deduplication and compression, in relation to the physical (Used After) space required after applying deduplication and compression. Specifically, the ratio is the Used Before space divided by the Used After space. For example, if the Used Before space is 3 GB, but the physical Used After space is 1 GB, the deduplication and compression ratio is 3x. Acceptable values are between 1.0 and 4.0."
        }
      },
      "type": "object",
      "required": [
        "commitmentPlan",
        "cpuOvercommitRatio",
        "memoryOvercommitRatio",
        "storageDeduplicationCompressionRatio"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_AutomatedStoppingConfig_DecayCurveAutomatedStoppingConfig": {
      "properties": {
        "useElapsedTime": {
          "type": "boolean",
          "description": "If true, measurement.elapsed_time is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.steps will be used as the x-axis."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_AutomatedStoppingConfig_DecayCurveAutomatedStoppingConfigResponse": {
      "properties": {
        "useElapsedTime": {
          "type": "boolean",
          "description": "If true, measurement.elapsed_time is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.steps will be used as the x-axis."
        }
      },
      "type": "object",
      "required": [
        "useElapsedTime"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_AutomatedStoppingConfig_MedianAutomatedStoppingConfig": {
      "description": "The median automated stopping rule stops a pending trial if the trial's best objective_value is strictly below the median 'performance' of all completed trials reported up to the trial's last measurement. Currently, 'performance' refers to the running average of the objective values reported by the trial in each measurement.",
      "properties": {
        "useElapsedTime": {
          "type": "boolean",
          "description": "If true, the median automated stopping rule applies to measurement.use_elapsed_time, which means the elapsed_time field of the current trial's latest measurement is used to compute the median objective value for each completed trial."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_AutomatedStoppingConfig_MedianAutomatedStoppingConfigResponse": {
      "description": "The median automated stopping rule stops a pending trial if the trial's best objective_value is strictly below the median 'performance' of all completed trials reported up to the trial's last measurement. Currently, 'performance' refers to the running average of the objective values reported by the trial in each measurement.",
      "properties": {
        "useElapsedTime": {
          "type": "boolean",
          "description": "If true, the median automated stopping rule applies to measurement.use_elapsed_time, which means the elapsed_time field of the current trial's latest measurement is used to compute the median objective value for each completed trial."
        }
      },
      "type": "object",
      "required": [
        "useElapsedTime"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric": {
      "description": "An observed value of a metric.",
      "properties": {
        "objectiveValue": {
          "type": "number",
          "description": "The objective value at this training step."
        },
        "trainingStep": {
          "type": "string",
          "description": "The global training step for this metric."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetricResponse": {
      "description": "An observed value of a metric.",
      "properties": {
        "objectiveValue": {
          "type": "number",
          "description": "The objective value at this training step."
        },
        "trainingStep": {
          "type": "string",
          "description": "The global training step for this metric."
        }
      },
      "type": "object",
      "required": [
        "objectiveValue",
        "trainingStep"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_Measurement_Metric": {
      "description": "A message representing a metric in the measurement.",
      "properties": {
        "metric": {
          "type": "string",
          "description": "Metric name."
        },
        "value": {
          "type": "number",
          "description": "The value for this metric."
        }
      },
      "type": "object",
      "required": [
        "metric",
        "value"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_Measurement_MetricResponse": {
      "description": "A message representing a metric in the measurement.",
      "properties": {
        "metric": {
          "type": "string",
          "description": "Metric name."
        },
        "value": {
          "type": "number",
          "description": "The value for this metric."
        }
      },
      "type": "object",
      "required": [
        "metric",
        "value"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_CategoricalValueSpec": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Must be specified if type is `CATEGORICAL`. The list of possible categories."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_CategoricalValueSpecResponse": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Must be specified if type is `CATEGORICAL`. The list of possible categories."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_DiscreteValueSpec": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Must be specified if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_DiscreteValueSpecResponse": {
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Must be specified if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_DoubleValueSpec": {
      "properties": {
        "maxValue": {
          "type": "number",
          "description": "Must be specified if type is `DOUBLE`. Maximum value of the parameter."
        },
        "minValue": {
          "type": "number",
          "description": "Must be specified if type is `DOUBLE`. Minimum value of the parameter."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_DoubleValueSpecResponse": {
      "properties": {
        "maxValue": {
          "type": "number",
          "description": "Must be specified if type is `DOUBLE`. Maximum value of the parameter."
        },
        "minValue": {
          "type": "number",
          "description": "Must be specified if type is `DOUBLE`. Minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_IntegerValueSpec": {
      "properties": {
        "maxValue": {
          "type": "string",
          "description": "Must be specified if type is `INTEGER`. Maximum value of the parameter."
        },
        "minValue": {
          "type": "string",
          "description": "Must be specified if type is `INTEGER`. Minimum value of the parameter."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_IntegerValueSpecResponse": {
      "properties": {
        "maxValue": {
          "type": "string",
          "description": "Must be specified if type is `INTEGER`. Maximum value of the parameter."
        },
        "minValue": {
          "type": "string",
          "description": "Must be specified if type is `INTEGER`. Minimum value of the parameter."
        }
      },
      "type": "object",
      "required": [
        "maxValue",
        "minValue"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentCategoricalValueSpec": {
      "description": "Represents the spec to match categorical values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter with type 'CATEGORICAL'. All values must exist in `categorical_value_spec` of parent parameter."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentCategoricalValueSpecResponse": {
      "description": "Represents the spec to match categorical values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter with type 'CATEGORICAL'. All values must exist in `categorical_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentDiscreteValueSpec": {
      "description": "Represents the spec to match discrete values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Matches values of the parent parameter with type 'DISCRETE'. All values must exist in `discrete_value_spec` of parent parameter."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentDiscreteValueSpecResponse": {
      "description": "Represents the spec to match discrete values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Matches values of the parent parameter with type 'DISCRETE'. All values must exist in `discrete_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentIntValueSpec": {
      "description": "Represents the spec to match integer values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter with type 'INTEGER'. All values must lie in `integer_value_spec` of parent parameter."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentIntValueSpecResponse": {
      "description": "Represents the spec to match integer values from parent parameter.",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Matches values of the parent parameter with type 'INTEGER'. All values must lie in `integer_value_spec` of parent parameter."
        }
      },
      "type": "object",
      "required": [
        "values"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfig_MetricSpec": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_MetricSpecGoal",
          "description": "The optimization goal of the metric."
        },
        "metric": {
          "type": "string",
          "description": "The name of the metric."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metric"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfig_MetricSpecGoal": {
      "description": "Required. The optimization goal of the metric.",
      "type": "string",
      "enum": [
        {
          "name": "GoalTypeUnspecified",
          "description": "Goal Type will default to maximize.",
          "value": "GOAL_TYPE_UNSPECIFIED"
        },
        {
          "name": "Maximize",
          "description": "Maximize the goal metric.",
          "value": "MAXIMIZE"
        },
        {
          "name": "Minimize",
          "description": "Minimize the goal metric.",
          "value": "MINIMIZE"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfig_MetricSpecResponse": {
      "description": "Represents a metric to optimize.",
      "properties": {
        "goal": {
          "type": "string",
          "description": "The optimization goal of the metric."
        },
        "metric": {
          "type": "string",
          "description": "The name of the metric."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "metric"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfig_ParameterSpec": {
      "description": "Represents a single parameter to optimize.",
      "properties": {
        "categoricalValueSpec": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_CategoricalValueSpec",
          "description": "The value spec for a 'CATEGORICAL' parameter."
        },
        "childParameterSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_ParameterSpec"
          },
          "description": "A child node is active if the parameter's value matches the child node's matching_parent_values. If two items in child_parameter_specs have the same name, they must have disjoint matching_parent_values."
        },
        "discreteValueSpec": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_DiscreteValueSpec",
          "description": "The value spec for a 'DISCRETE' parameter."
        },
        "doubleValueSpec": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_DoubleValueSpec",
          "description": "The value spec for a 'DOUBLE' parameter."
        },
        "integerValueSpec": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_IntegerValueSpec",
          "description": "The value spec for an 'INTEGER' parameter."
        },
        "parameter": {
          "type": "string",
          "description": "The parameter name must be unique amongst all ParameterSpecs."
        },
        "parentCategoricalValues": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentCategoricalValueSpec"
        },
        "parentDiscreteValues": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentDiscreteValueSpec"
        },
        "parentIntValues": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentIntValueSpec"
        },
        "scaleType": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_ParameterSpecScaleType",
          "description": "How the parameter should be scaled. Leave unset for categorical parameters."
        },
        "type": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_ParameterSpecType",
          "description": "The type of the parameter."
        }
      },
      "type": "object",
      "required": [
        "parameter",
        "type"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfig_ParameterSpecResponse": {
      "description": "Represents a single parameter to optimize.",
      "properties": {
        "categoricalValueSpec": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_CategoricalValueSpecResponse",
          "description": "The value spec for a 'CATEGORICAL' parameter."
        },
        "childParameterSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_ParameterSpecResponse"
          },
          "description": "A child node is active if the parameter's value matches the child node's matching_parent_values. If two items in child_parameter_specs have the same name, they must have disjoint matching_parent_values."
        },
        "discreteValueSpec": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_DiscreteValueSpecResponse",
          "description": "The value spec for a 'DISCRETE' parameter."
        },
        "doubleValueSpec": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_DoubleValueSpecResponse",
          "description": "The value spec for a 'DOUBLE' parameter."
        },
        "integerValueSpec": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_IntegerValueSpecResponse",
          "description": "The value spec for an 'INTEGER' parameter."
        },
        "parameter": {
          "type": "string",
          "description": "The parameter name must be unique amongst all ParameterSpecs."
        },
        "parentCategoricalValues": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentCategoricalValueSpecResponse"
        },
        "parentDiscreteValues": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentDiscreteValueSpecResponse"
        },
        "parentIntValues": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentIntValueSpecResponse"
        },
        "scaleType": {
          "type": "string",
          "description": "How the parameter should be scaled. Leave unset for categorical parameters."
        },
        "type": {
          "type": "string",
          "description": "The type of the parameter."
        }
      },
      "type": "object",
      "required": [
        "categoricalValueSpec",
        "childParameterSpecs",
        "discreteValueSpec",
        "doubleValueSpec",
        "integerValueSpec",
        "parameter",
        "parentCategoricalValues",
        "parentDiscreteValues",
        "parentIntValues",
        "scaleType",
        "type"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfig_ParameterSpecScaleType": {
      "description": "How the parameter should be scaled. Leave unset for categorical parameters.",
      "type": "string",
      "enum": [
        {
          "name": "ScaleTypeUnspecified",
          "description": "By default, no scaling is applied.",
          "value": "SCALE_TYPE_UNSPECIFIED"
        },
        {
          "name": "UnitLinearScale",
          "description": "Scales the feasible space to (0, 1) linearly.",
          "value": "UNIT_LINEAR_SCALE"
        },
        {
          "name": "UnitLogScale",
          "description": "Scales the feasible space logarithmically to (0, 1). The entire feasible space must be strictly positive.",
          "value": "UNIT_LOG_SCALE"
        },
        {
          "name": "UnitReverseLogScale",
          "description": "Scales the feasible space \"reverse\" logarithmically to (0, 1). The result is that values close to the top of the feasible space are spread out more than points near the bottom. The entire feasible space must be strictly positive.",
          "value": "UNIT_REVERSE_LOG_SCALE"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_StudyConfig_ParameterSpecType": {
      "description": "Required. The type of the parameter.",
      "type": "string",
      "enum": [
        {
          "name": "ParameterTypeUnspecified",
          "description": "You must specify a valid type. Using this unspecified type will result in an error.",
          "value": "PARAMETER_TYPE_UNSPECIFIED"
        },
        {
          "name": "Double",
          "description": "Type for real-valued parameters.",
          "value": "DOUBLE"
        },
        {
          "name": "Integer",
          "description": "Type for integral parameters.",
          "value": "INTEGER"
        },
        {
          "name": "Categorical",
          "description": "The parameter is categorical, with a value chosen from the categories field.",
          "value": "CATEGORICAL"
        },
        {
          "name": "Discrete",
          "description": "The parameter is real valued, with a fixed set of feasible points. If `type==DISCRETE`, feasible_points must be provided, and {`min_value`, `max_value`} will be ignored.",
          "value": "DISCRETE"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1_Trial_Parameter": {
      "description": "A message representing a parameter to be tuned. Contains the name of the parameter and the suggested value to use for this trial.",
      "properties": {
        "floatValue": {
          "type": "number",
          "description": "Must be set if ParameterType is DOUBLE or DISCRETE."
        },
        "intValue": {
          "type": "string",
          "description": "Must be set if ParameterType is INTEGER"
        },
        "parameter": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "stringValue": {
          "type": "string",
          "description": "Must be set if ParameterTypeis CATEGORICAL"
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1_Trial_ParameterResponse": {
      "description": "A message representing a parameter to be tuned. Contains the name of the parameter and the suggested value to use for this trial.",
      "properties": {
        "floatValue": {
          "type": "number",
          "description": "Must be set if ParameterType is DOUBLE or DISCRETE."
        },
        "intValue": {
          "type": "string",
          "description": "Must be set if ParameterType is INTEGER"
        },
        "parameter": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "stringValue": {
          "type": "string",
          "description": "Must be set if ParameterTypeis CATEGORICAL"
        }
      },
      "type": "object",
      "required": [
        "floatValue",
        "intValue",
        "parameter",
        "stringValue"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__AcceleratorConfig": {
      "description": "Represents a hardware accelerator request config. Note that the AcceleratorConfig can be used in both Jobs and Versions. Learn more about [accelerators for training](/ml-engine/docs/using-gpus) and [accelerators for online prediction](/ml-engine/docs/machine-types-online-prediction#gpus).",
      "properties": {
        "count": {
          "type": "string",
          "description": "The number of accelerators to attach to each machine running the job."
        },
        "type": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AcceleratorConfigType",
          "description": "The type of accelerator to use."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__AcceleratorConfigResponse": {
      "description": "Represents a hardware accelerator request config. Note that the AcceleratorConfig can be used in both Jobs and Versions. Learn more about [accelerators for training](/ml-engine/docs/using-gpus) and [accelerators for online prediction](/ml-engine/docs/machine-types-online-prediction#gpus).",
      "properties": {
        "count": {
          "type": "string",
          "description": "The number of accelerators to attach to each machine running the job."
        },
        "type": {
          "type": "string",
          "description": "The type of accelerator to use."
        }
      },
      "type": "object",
      "required": [
        "count",
        "type"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__AcceleratorConfigType": {
      "description": "The type of accelerator to use.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorTypeUnspecified",
          "description": "Unspecified accelerator type. Default to no GPU.",
          "value": "ACCELERATOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "NvidiaTeslaK80",
          "description": "Nvidia Tesla K80 GPU.",
          "value": "NVIDIA_TESLA_K80"
        },
        {
          "name": "NvidiaTeslaP100",
          "description": "Nvidia Tesla P100 GPU.",
          "value": "NVIDIA_TESLA_P100"
        },
        {
          "name": "NvidiaTeslaV100",
          "description": "Nvidia V100 GPU.",
          "value": "NVIDIA_TESLA_V100"
        },
        {
          "name": "NvidiaTeslaP4",
          "description": "Nvidia Tesla P4 GPU.",
          "value": "NVIDIA_TESLA_P4"
        },
        {
          "name": "NvidiaTeslaT4",
          "description": "Nvidia T4 GPU.",
          "value": "NVIDIA_TESLA_T4"
        },
        {
          "name": "NvidiaTeslaA100",
          "description": "Nvidia A100 GPU.",
          "value": "NVIDIA_TESLA_A100"
        },
        {
          "name": "TpuV2",
          "description": "TPU v2.",
          "value": "TPU_V2"
        },
        {
          "name": "TpuV3",
          "description": "TPU v3.",
          "value": "TPU_V3"
        },
        {
          "name": "TpuV2Pod",
          "description": "TPU v2 POD.",
          "value": "TPU_V2_POD"
        },
        {
          "name": "TpuV3Pod",
          "description": "TPU v3 POD.",
          "value": "TPU_V3_POD"
        },
        {
          "name": "TpuV4Pod",
          "description": "TPU v4 POD.",
          "value": "TPU_V4_POD"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__AutoScaling": {
      "description": "Options for automatically scaling a model.",
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "The maximum number of nodes to scale this model under load. The actual value will depend on resource quota and availability."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__MetricSpec"
          },
          "description": "MetricSpec contains the specifications to use to calculate the desired nodes count."
        },
        "minNodes": {
          "type": "integer",
          "description": "Optional. The minimum number of nodes to allocate for this model. These nodes are always up, starting from the time the model is deployed. Therefore, the cost of operating this model will be at least `rate` * `min_nodes` * number of hours since last billing cycle, where `rate` is the cost per node-hour as documented in the [pricing guide](/ml-engine/docs/pricing), even if no predictions are performed. There is additional cost for each prediction performed. Unlike manual scaling, if the load gets too heavy for the nodes that are up, the service will automatically add nodes to handle the increased load as well as scale back as traffic drops, always maintaining at least `min_nodes`. You will be charged for the time in which additional nodes are used. If `min_nodes` is not specified and AutoScaling is used with a [legacy (MLS1) machine type](/ml-engine/docs/machine-types-online-prediction), `min_nodes` defaults to 0, in which case, when traffic to a model stops (and after a cool-down period), nodes will be shut down and no charges will be incurred until traffic to the model resumes. If `min_nodes` is not specified and AutoScaling is used with a [Compute Engine (N1) machine type](/ml-engine/docs/machine-types-online-prediction), `min_nodes` defaults to 1. `min_nodes` must be at least 1 for use with a Compute Engine machine type. You can set `min_nodes` when creating the model version, and you can also update `min_nodes` for an existing version: update_body.json: { 'autoScaling': { 'minNodes': 5 } } HTTP request: PATCH https://ml.googleapis.com/v1/{name=projects/*/models/*/versions/*}?update_mask=autoScaling.minNodes -d @./update_body.json "
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__AutoScalingResponse": {
      "description": "Options for automatically scaling a model.",
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "The maximum number of nodes to scale this model under load. The actual value will depend on resource quota and availability."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__MetricSpecResponse"
          },
          "description": "MetricSpec contains the specifications to use to calculate the desired nodes count."
        },
        "minNodes": {
          "type": "integer",
          "description": "Optional. The minimum number of nodes to allocate for this model. These nodes are always up, starting from the time the model is deployed. Therefore, the cost of operating this model will be at least `rate` * `min_nodes` * number of hours since last billing cycle, where `rate` is the cost per node-hour as documented in the [pricing guide](/ml-engine/docs/pricing), even if no predictions are performed. There is additional cost for each prediction performed. Unlike manual scaling, if the load gets too heavy for the nodes that are up, the service will automatically add nodes to handle the increased load as well as scale back as traffic drops, always maintaining at least `min_nodes`. You will be charged for the time in which additional nodes are used. If `min_nodes` is not specified and AutoScaling is used with a [legacy (MLS1) machine type](/ml-engine/docs/machine-types-online-prediction), `min_nodes` defaults to 0, in which case, when traffic to a model stops (and after a cool-down period), nodes will be shut down and no charges will be incurred until traffic to the model resumes. If `min_nodes` is not specified and AutoScaling is used with a [Compute Engine (N1) machine type](/ml-engine/docs/machine-types-online-prediction), `min_nodes` defaults to 1. `min_nodes` must be at least 1 for use with a Compute Engine machine type. You can set `min_nodes` when creating the model version, and you can also update `min_nodes` for an existing version: update_body.json: { 'autoScaling': { 'minNodes': 5 } } HTTP request: PATCH https://ml.googleapis.com/v1/{name=projects/*/models/*/versions/*}?update_mask=autoScaling.minNodes -d @./update_body.json "
        }
      },
      "type": "object",
      "required": [
        "maxNodes",
        "metrics",
        "minNodes"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__AutomatedStoppingConfig": {
      "description": "Configuration for Automated Early Stopping of Trials. If no implementation_config is set, automated early stopping will not be run.",
      "properties": {
        "decayCurveStoppingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_AutomatedStoppingConfig_DecayCurveAutomatedStoppingConfig"
        },
        "medianAutomatedStoppingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_AutomatedStoppingConfig_MedianAutomatedStoppingConfig"
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__AutomatedStoppingConfigResponse": {
      "description": "Configuration for Automated Early Stopping of Trials. If no implementation_config is set, automated early stopping will not be run.",
      "properties": {
        "decayCurveStoppingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_AutomatedStoppingConfig_DecayCurveAutomatedStoppingConfigResponse"
        },
        "medianAutomatedStoppingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_AutomatedStoppingConfig_MedianAutomatedStoppingConfigResponse"
        }
      },
      "type": "object",
      "required": [
        "decayCurveStoppingConfig",
        "medianAutomatedStoppingConfig"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__BuiltInAlgorithmOutput": {
      "description": "Represents output related to a built-in algorithm Job.",
      "properties": {
        "framework": {
          "type": "string",
          "description": "Framework on which the built-in algorithm was trained."
        },
        "modelPath": {
          "type": "string",
          "description": "The Cloud Storage path to the `model/` directory where the training job saves the trained model. Only set for successful jobs that don't use hyperparameter tuning."
        },
        "pythonVersion": {
          "type": "string",
          "description": "Python version on which the built-in algorithm was trained."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "AI Platform runtime version on which the built-in algorithm was trained."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__BuiltInAlgorithmOutputResponse": {
      "description": "Represents output related to a built-in algorithm Job.",
      "properties": {
        "framework": {
          "type": "string",
          "description": "Framework on which the built-in algorithm was trained."
        },
        "modelPath": {
          "type": "string",
          "description": "The Cloud Storage path to the `model/` directory where the training job saves the trained model. Only set for successful jobs that don't use hyperparameter tuning."
        },
        "pythonVersion": {
          "type": "string",
          "description": "Python version on which the built-in algorithm was trained."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "AI Platform runtime version on which the built-in algorithm was trained."
        }
      },
      "type": "object",
      "required": [
        "framework",
        "modelPath",
        "pythonVersion",
        "runtimeVersion"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ContainerPort": {
      "description": "Represents a network port in a single container. This message is a subset of the [Kubernetes ContainerPort v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#containerport-v1-core).",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "Number of the port to expose on the container. This must be a valid port number: 0 < PORT_NUMBER < 65536."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__ContainerPortResponse": {
      "description": "Represents a network port in a single container. This message is a subset of the [Kubernetes ContainerPort v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#containerport-v1-core).",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "Number of the port to expose on the container. This must be a valid port number: 0 < PORT_NUMBER < 65536."
        }
      },
      "type": "object",
      "required": [
        "containerPort"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ContainerSpec": {
      "description": "Specification of a custom container for serving predictions. This message is a subset of the [Kubernetes Container v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core).",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify this field as an array of executable and arguments, similar to a Docker `CMD`'s \"default parameters\" form. If you don't specify this field but do specify the command field, then the command from the `command` field runs without any additional arguments. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). If you don't specify this field and don't specify the `commmand` field, then the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and `CMD` determine what runs based on their default behavior. See the [Docker documentation about how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `args` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core)."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the command that runs when the container starts. This overrides the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#entrypoint). Specify this field as an array of executable and arguments, similar to a Docker `ENTRYPOINT`'s \"exec\" form, not its \"shell\" form. If you do not specify this field, then the container's `ENTRYPOINT` runs, in conjunction with the args field or the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd), if either exists. If this field is not specified and the container does not have an `ENTRYPOINT`, then refer to the [Docker documentation about how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). If you specify this field, then you can also specify the `args` field to provide additional arguments for this command. However, if you specify this field, then the container's `CMD` is ignored. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `command` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core)."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__EnvVar"
          },
          "description": "Immutable. List of environment variables to set in the container. After the container starts running, code running in the container can read these environment variables. Additionally, the command and args fields can reference these variables. Later entries in this list can also reference earlier entries. For example, the following example sets the variable `VAR_2` to have the value `foo bar`: ```json [ { \"name\": \"VAR_1\", \"value\": \"foo\" }, { \"name\": \"VAR_2\", \"value\": \"$(VAR_1) bar\" } ] ``` If you switch the order of the variables in the example, then the expansion does not occur. This field corresponds to the `env` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core)."
        },
        "image": {
          "type": "string",
          "description": "URI of the Docker image to be used as the custom container for serving predictions. This URI must identify [an image in Artifact Registry](/artifact-registry/docs/overview) and begin with the hostname `{REGION}-docker.pkg.dev`, where `{REGION}` is replaced by the region that matches AI Platform Prediction [regional endpoint](/ai-platform/prediction/docs/regional-endpoints) that you are using. For example, if you are using the `us-central1-ml.googleapis.com` endpoint, then this URI must begin with `us-central1-docker.pkg.dev`. To use a custom container, the [AI Platform Google-managed service account](/ai-platform/prediction/docs/custom-service-account#default) must have permission to pull (read) the Docker image at this URI. The AI Platform Google-managed service account has the following format: `service-{PROJECT_NUMBER}@cloud-ml.google.com.iam.gserviceaccount.com` {PROJECT_NUMBER} is replaced by your Google Cloud project number. By default, this service account has necessary permissions to pull an Artifact Registry image in the same Google Cloud project where you are using AI Platform Prediction. In this case, no configuration is necessary. If you want to use an image from a different Google Cloud project, learn how to [grant the Artifact Registry Reader (roles/artifactregistry.reader) role for a repository](/artifact-registry/docs/access-control#grant-repo) to your projet's AI Platform Google-managed service account. To learn about the requirements for the Docker image itself, read [Custom container requirements](/ai-platform/prediction/docs/custom-container-requirements)."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ContainerPort"
          },
          "description": "Immutable. List of ports to expose from the container. AI Platform Prediction sends any prediction requests that it receives to the first port on this list. AI Platform Prediction also sends [liveness and health checks](/ai-platform/prediction/docs/custom-container-requirements#health) to this port. If you do not specify this field, it defaults to following value: ```json [ { \"containerPort\": 8080 } ] ``` AI Platform Prediction does not use ports other than the first one listed. This field corresponds to the `ports` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core)."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__ContainerSpecResponse": {
      "description": "Specification of a custom container for serving predictions. This message is a subset of the [Kubernetes Container v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core).",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify this field as an array of executable and arguments, similar to a Docker `CMD`'s \"default parameters\" form. If you don't specify this field but do specify the command field, then the command from the `command` field runs without any additional arguments. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). If you don't specify this field and don't specify the `commmand` field, then the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and `CMD` determine what runs based on their default behavior. See the [Docker documentation about how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `args` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core)."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the command that runs when the container starts. This overrides the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#entrypoint). Specify this field as an array of executable and arguments, similar to a Docker `ENTRYPOINT`'s \"exec\" form, not its \"shell\" form. If you do not specify this field, then the container's `ENTRYPOINT` runs, in conjunction with the args field or the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd), if either exists. If this field is not specified and the container does not have an `ENTRYPOINT`, then refer to the [Docker documentation about how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). If you specify this field, then you can also specify the `args` field to provide additional arguments for this command. However, if you specify this field, then the container's `CMD` is ignored. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `command` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core)."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__EnvVarResponse"
          },
          "description": "Immutable. List of environment variables to set in the container. After the container starts running, code running in the container can read these environment variables. Additionally, the command and args fields can reference these variables. Later entries in this list can also reference earlier entries. For example, the following example sets the variable `VAR_2` to have the value `foo bar`: ```json [ { \"name\": \"VAR_1\", \"value\": \"foo\" }, { \"name\": \"VAR_2\", \"value\": \"$(VAR_1) bar\" } ] ``` If you switch the order of the variables in the example, then the expansion does not occur. This field corresponds to the `env` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core)."
        },
        "image": {
          "type": "string",
          "description": "URI of the Docker image to be used as the custom container for serving predictions. This URI must identify [an image in Artifact Registry](/artifact-registry/docs/overview) and begin with the hostname `{REGION}-docker.pkg.dev`, where `{REGION}` is replaced by the region that matches AI Platform Prediction [regional endpoint](/ai-platform/prediction/docs/regional-endpoints) that you are using. For example, if you are using the `us-central1-ml.googleapis.com` endpoint, then this URI must begin with `us-central1-docker.pkg.dev`. To use a custom container, the [AI Platform Google-managed service account](/ai-platform/prediction/docs/custom-service-account#default) must have permission to pull (read) the Docker image at this URI. The AI Platform Google-managed service account has the following format: `service-{PROJECT_NUMBER}@cloud-ml.google.com.iam.gserviceaccount.com` {PROJECT_NUMBER} is replaced by your Google Cloud project number. By default, this service account has necessary permissions to pull an Artifact Registry image in the same Google Cloud project where you are using AI Platform Prediction. In this case, no configuration is necessary. If you want to use an image from a different Google Cloud project, learn how to [grant the Artifact Registry Reader (roles/artifactregistry.reader) role for a repository](/artifact-registry/docs/access-control#grant-repo) to your projet's AI Platform Google-managed service account. To learn about the requirements for the Docker image itself, read [Custom container requirements](/ai-platform/prediction/docs/custom-container-requirements)."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ContainerPortResponse"
          },
          "description": "Immutable. List of ports to expose from the container. AI Platform Prediction sends any prediction requests that it receives to the first port on this list. AI Platform Prediction also sends [liveness and health checks](/ai-platform/prediction/docs/custom-container-requirements#health) to this port. If you do not specify this field, it defaults to following value: ```json [ { \"containerPort\": 8080 } ] ``` AI Platform Prediction does not use ports other than the first one listed. This field corresponds to the `ports` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core)."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "env",
        "image",
        "ports"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__DiskConfig": {
      "description": "Represents the config of disk options.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Size in GB of the boot disk (default is 100GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Type of the boot disk (default is \"pd-ssd\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) or \"pd-standard\" (Persistent Disk Hard Disk Drive)."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__DiskConfigResponse": {
      "description": "Represents the config of disk options.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Size in GB of the boot disk (default is 100GB)."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Type of the boot disk (default is \"pd-ssd\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) or \"pd-standard\" (Persistent Disk Hard Disk Drive)."
        }
      },
      "type": "object",
      "required": [
        "bootDiskSizeGb",
        "bootDiskType"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__EncryptionConfig": {
      "description": "Represents a custom encryption key configuration that can be applied to a resource.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource identifier of the customer-managed encryption key used to protect a resource, such as a training job. It has the following format: `projects/{PROJECT_ID}/locations/{REGION}/keyRings/{KEY_RING_NAME}/cryptoKeys/{KEY_NAME}`"
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__EncryptionConfigResponse": {
      "description": "Represents a custom encryption key configuration that can be applied to a resource.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource identifier of the customer-managed encryption key used to protect a resource, such as a training job. It has the following format: `projects/{PROJECT_ID}/locations/{REGION}/keyRings/{KEY_RING_NAME}/cryptoKeys/{KEY_NAME}`"
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__EnvVar": {
      "description": "Represents an environment variable to be made available in a container. This message is a subset of the [Kubernetes EnvVar v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#envvar-v1-core).",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable. Must be a [valid C identifier](https://github.com/kubernetes/kubernetes/blob/v1.18.8/staging/src/k8s.io/apimachinery/pkg/util/validation/validation.go#L258) and must not begin with the prefix `AIP_`."
        },
        "value": {
          "type": "string",
          "description": "Value of the environment variable. Defaults to an empty string. In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set earlier in the same env field as where this message occurs. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $(VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME)"
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__EnvVarResponse": {
      "description": "Represents an environment variable to be made available in a container. This message is a subset of the [Kubernetes EnvVar v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#envvar-v1-core).",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable. Must be a [valid C identifier](https://github.com/kubernetes/kubernetes/blob/v1.18.8/staging/src/k8s.io/apimachinery/pkg/util/validation/validation.go#L258) and must not begin with the prefix `AIP_`."
        },
        "value": {
          "type": "string",
          "description": "Value of the environment variable. Defaults to an empty string. In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set earlier in the same env field as where this message occurs. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $(VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME)"
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ExplanationConfig": {
      "description": "Message holding configuration options for explaining model predictions. There are three feature attribution methods supported for TensorFlow models: integrated gradients, sampled Shapley, and XRAI. [Learn more about feature attributions.](/ai-platform/prediction/docs/ai-explanations/overview)",
      "properties": {
        "integratedGradientsAttribution": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__IntegratedGradientsAttribution",
          "description": "Attributes credit by computing the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365"
        },
        "sampledShapleyAttribution": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__SampledShapleyAttribution",
          "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features."
        },
        "xraiAttribution": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__XraiAttribution",
          "description": "Attributes credit by computing the XRAI taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Currently only implemented for models with natural image inputs."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__ExplanationConfigResponse": {
      "description": "Message holding configuration options for explaining model predictions. There are three feature attribution methods supported for TensorFlow models: integrated gradients, sampled Shapley, and XRAI. [Learn more about feature attributions.](/ai-platform/prediction/docs/ai-explanations/overview)",
      "properties": {
        "integratedGradientsAttribution": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__IntegratedGradientsAttributionResponse",
          "description": "Attributes credit by computing the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365"
        },
        "sampledShapleyAttribution": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__SampledShapleyAttributionResponse",
          "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features."
        },
        "xraiAttribution": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__XraiAttributionResponse",
          "description": "Attributes credit by computing the XRAI taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Currently only implemented for models with natural image inputs."
        }
      },
      "type": "object",
      "required": [
        "integratedGradientsAttribution",
        "sampledShapleyAttribution",
        "xraiAttribution"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__HyperparameterOutput": {
      "description": "Represents the result of a single hyperparameter tuning trial from a training job. The TrainingOutput object that is returned on successful completion of a training job with hyperparameter tuning includes a list of HyperparameterOutput objects, one for each successful trial.",
      "properties": {
        "allMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric"
          },
          "description": "All recorded object metrics for this trial. This field is not currently populated."
        },
        "builtInAlgorithmOutput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__BuiltInAlgorithmOutput",
          "description": "Details related to built-in algorithms jobs. Only set for trials of built-in algorithms jobs that have succeeded."
        },
        "finalMetric": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric",
          "description": "The final objective metric seen for this trial."
        },
        "hyperparameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The hyperparameters given to this trial."
        },
        "isTrialStoppedEarly": {
          "type": "boolean",
          "description": "True if the trial is stopped early."
        },
        "trialId": {
          "type": "string",
          "description": "The trial id for these results."
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/ai-platform/training/docs/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a hyperparameter tuning job and the job's training_input.enable_web_access is `true`. The keys are names of each node in the training job; for example, `master-replica-0` for the master node, `worker-replica-0` for the first worker, and `ps-replica-0` for the first parameter server. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__HyperparameterOutputResponse": {
      "description": "Represents the result of a single hyperparameter tuning trial from a training job. The TrainingOutput object that is returned on successful completion of a training job with hyperparameter tuning includes a list of HyperparameterOutput objects, one for each successful trial.",
      "properties": {
        "allMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetricResponse"
          },
          "description": "All recorded object metrics for this trial. This field is not currently populated."
        },
        "builtInAlgorithmOutput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__BuiltInAlgorithmOutputResponse",
          "description": "Details related to built-in algorithms jobs. Only set for trials of built-in algorithms jobs that have succeeded."
        },
        "endTime": {
          "type": "string",
          "description": "End time for the trial."
        },
        "finalMetric": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetricResponse",
          "description": "The final objective metric seen for this trial."
        },
        "hyperparameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The hyperparameters given to this trial."
        },
        "isTrialStoppedEarly": {
          "type": "boolean",
          "description": "True if the trial is stopped early."
        },
        "startTime": {
          "type": "string",
          "description": "Start time for the trial."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the trial."
        },
        "trialId": {
          "type": "string",
          "description": "The trial id for these results."
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/ai-platform/training/docs/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a hyperparameter tuning job and the job's training_input.enable_web_access is `true`. The keys are names of each node in the training job; for example, `master-replica-0` for the master node, `worker-replica-0` for the first worker, and `ps-replica-0` for the first parameter server. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object",
      "required": [
        "allMetrics",
        "builtInAlgorithmOutput",
        "endTime",
        "finalMetric",
        "hyperparameters",
        "isTrialStoppedEarly",
        "startTime",
        "state",
        "trialId",
        "webAccessUris"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__HyperparameterSpec": {
      "description": "Represents a set of hyperparameters to optimize.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__HyperparameterSpecAlgorithm",
          "description": "Optional. The search algorithm specified for the hyperparameter tuning job. Uses the default AI Platform hyperparameter tuning algorithm if unspecified."
        },
        "enableTrialEarlyStopping": {
          "type": "boolean",
          "description": "Optional. Indicates if the hyperparameter tuning job enables auto trial early stopping."
        },
        "goal": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__HyperparameterSpecGoal",
          "description": "The type of goal to use for tuning. Available types are `MAXIMIZE` and `MINIMIZE`. Defaults to `MAXIMIZE`."
        },
        "hyperparameterMetricTag": {
          "type": "string",
          "description": "Optional. The TensorFlow summary tag name to use for optimizing trials. For current versions of TensorFlow, this tag name should exactly match what is shown in TensorBoard, including all scopes. For versions of TensorFlow prior to 0.12, this should be only the tag passed to tf.Summary. By default, \"training/hptuning/metric\" will be used."
        },
        "maxFailedTrials": {
          "type": "integer",
          "description": "Optional. The number of failed trials that need to be seen before failing the hyperparameter tuning job. You can specify this field to override the default failing criteria for AI Platform hyperparameter tuning jobs. Defaults to zero, which means the service decides when a hyperparameter job should fail."
        },
        "maxParallelTrials": {
          "type": "integer",
          "description": "Optional. The number of training trials to run concurrently. You can reduce the time it takes to perform hyperparameter tuning by adding trials in parallel. However, each trail only benefits from the information gained in completed trials. That means that a trial does not get access to the results of trials running at the same time, which could reduce the quality of the overall optimization. Each trial will use the same scale tier and machine types. Defaults to one."
        },
        "maxTrials": {
          "type": "integer",
          "description": "Optional. How many training trials should be attempted to optimize the specified hyperparameters. Defaults to one."
        },
        "params": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ParameterSpec"
          },
          "description": "The set of parameters to tune."
        },
        "resumePreviousJobId": {
          "type": "string",
          "description": "Optional. The prior hyperparameter tuning job id that users hope to continue with. The job id will be used to find the corresponding vizier study guid and resume the study."
        }
      },
      "type": "object",
      "required": [
        "goal",
        "params"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__HyperparameterSpecAlgorithm": {
      "description": "Optional. The search algorithm specified for the hyperparameter tuning job. Uses the default AI Platform hyperparameter tuning algorithm if unspecified.",
      "type": "string",
      "enum": [
        {
          "name": "AlgorithmUnspecified",
          "description": "The default algorithm used by the hyperparameter tuning service. This is a Bayesian optimization algorithm.",
          "value": "ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "GridSearch",
          "description": "Simple grid search within the feasible space. To use grid search, all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`.",
          "value": "GRID_SEARCH"
        },
        {
          "name": "RandomSearch",
          "description": "Simple random search within the feasible space.",
          "value": "RANDOM_SEARCH"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__HyperparameterSpecGoal": {
      "description": "Required. The type of goal to use for tuning. Available types are `MAXIMIZE` and `MINIMIZE`. Defaults to `MAXIMIZE`.",
      "type": "string",
      "enum": [
        {
          "name": "GoalTypeUnspecified",
          "description": "Goal Type will default to maximize.",
          "value": "GOAL_TYPE_UNSPECIFIED"
        },
        {
          "name": "Maximize",
          "description": "Maximize the goal metric.",
          "value": "MAXIMIZE"
        },
        {
          "name": "Minimize",
          "description": "Minimize the goal metric.",
          "value": "MINIMIZE"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__HyperparameterSpecResponse": {
      "description": "Represents a set of hyperparameters to optimize.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "Optional. The search algorithm specified for the hyperparameter tuning job. Uses the default AI Platform hyperparameter tuning algorithm if unspecified."
        },
        "enableTrialEarlyStopping": {
          "type": "boolean",
          "description": "Optional. Indicates if the hyperparameter tuning job enables auto trial early stopping."
        },
        "goal": {
          "type": "string",
          "description": "The type of goal to use for tuning. Available types are `MAXIMIZE` and `MINIMIZE`. Defaults to `MAXIMIZE`."
        },
        "hyperparameterMetricTag": {
          "type": "string",
          "description": "Optional. The TensorFlow summary tag name to use for optimizing trials. For current versions of TensorFlow, this tag name should exactly match what is shown in TensorBoard, including all scopes. For versions of TensorFlow prior to 0.12, this should be only the tag passed to tf.Summary. By default, \"training/hptuning/metric\" will be used."
        },
        "maxFailedTrials": {
          "type": "integer",
          "description": "Optional. The number of failed trials that need to be seen before failing the hyperparameter tuning job. You can specify this field to override the default failing criteria for AI Platform hyperparameter tuning jobs. Defaults to zero, which means the service decides when a hyperparameter job should fail."
        },
        "maxParallelTrials": {
          "type": "integer",
          "description": "Optional. The number of training trials to run concurrently. You can reduce the time it takes to perform hyperparameter tuning by adding trials in parallel. However, each trail only benefits from the information gained in completed trials. That means that a trial does not get access to the results of trials running at the same time, which could reduce the quality of the overall optimization. Each trial will use the same scale tier and machine types. Defaults to one."
        },
        "maxTrials": {
          "type": "integer",
          "description": "Optional. How many training trials should be attempted to optimize the specified hyperparameters. Defaults to one."
        },
        "params": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ParameterSpecResponse"
          },
          "description": "The set of parameters to tune."
        },
        "resumePreviousJobId": {
          "type": "string",
          "description": "Optional. The prior hyperparameter tuning job id that users hope to continue with. The job id will be used to find the corresponding vizier study guid and resume the study."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "enableTrialEarlyStopping",
        "goal",
        "hyperparameterMetricTag",
        "maxFailedTrials",
        "maxParallelTrials",
        "maxTrials",
        "params",
        "resumePreviousJobId"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__IntegratedGradientsAttribution": {
      "description": "Attributes credit by computing the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
      "properties": {
        "numIntegralSteps": {
          "type": "integer",
          "description": "Number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__IntegratedGradientsAttributionResponse": {
      "description": "Attributes credit by computing the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
      "properties": {
        "numIntegralSteps": {
          "type": "integer",
          "description": "Number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range."
        }
      },
      "type": "object",
      "required": [
        "numIntegralSteps"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ManualScaling": {
      "description": "Options for manually scaling a model.",
      "properties": {
        "nodes": {
          "type": "integer",
          "description": "The number of nodes to allocate for this model. These nodes are always up, starting from the time the model is deployed, so the cost of operating this model will be proportional to `nodes` * number of hours since last billing cycle plus the cost for each prediction performed."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__ManualScalingResponse": {
      "description": "Options for manually scaling a model.",
      "properties": {
        "nodes": {
          "type": "integer",
          "description": "The number of nodes to allocate for this model. These nodes are always up, starting from the time the model is deployed, so the cost of operating this model will be proportional to `nodes` * number of hours since last billing cycle plus the cost for each prediction performed."
        }
      },
      "type": "object",
      "required": [
        "nodes"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__Measurement": {
      "description": "A message representing a measurement.",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_Measurement_Metric"
          },
          "description": "Provides a list of metrics that act as inputs into the objective function."
        },
        "stepCount": {
          "type": "string",
          "description": "The number of steps a machine learning model has been trained for. Must be non-negative."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__MeasurementResponse": {
      "description": "A message representing a measurement.",
      "properties": {
        "elapsedTime": {
          "type": "string",
          "description": "Time that the trial has been running at the point of this measurement."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_Measurement_MetricResponse"
          },
          "description": "Provides a list of metrics that act as inputs into the objective function."
        },
        "stepCount": {
          "type": "string",
          "description": "The number of steps a machine learning model has been trained for. Must be non-negative."
        }
      },
      "type": "object",
      "required": [
        "elapsedTime",
        "metrics",
        "stepCount"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__MetricSpec": {
      "description": "MetricSpec contains the specifications to use to calculate the desired nodes count when autoscaling is enabled.",
      "properties": {
        "name": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__MetricSpecName",
          "description": "metric name."
        },
        "target": {
          "type": "integer",
          "description": "Target specifies the target value for the given metric; once real metric deviates from the threshold by a certain percentage, the node count changes."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__MetricSpecName": {
      "description": "metric name.",
      "type": "string",
      "enum": [
        {
          "name": "MetricNameUnspecified",
          "description": "Unspecified MetricName.",
          "value": "METRIC_NAME_UNSPECIFIED"
        },
        {
          "name": "CpuUsage",
          "description": "CPU usage.",
          "value": "CPU_USAGE"
        },
        {
          "name": "GpuDutyCycle",
          "description": "GPU duty cycle.",
          "value": "GPU_DUTY_CYCLE"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__MetricSpecResponse": {
      "description": "MetricSpec contains the specifications to use to calculate the desired nodes count when autoscaling is enabled.",
      "properties": {
        "name": {
          "type": "string",
          "description": "metric name."
        },
        "target": {
          "type": "integer",
          "description": "Target specifies the target value for the given metric; once real metric deviates from the threshold by a certain percentage, the node count changes."
        }
      },
      "type": "object",
      "required": [
        "name",
        "target"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ParameterSpec": {
      "description": "Represents a single hyperparameter to optimize.",
      "properties": {
        "categoricalValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required if type is `CATEGORICAL`. The list of possible categories."
        },
        "discreteValues": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Required if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values."
        },
        "maxValue": {
          "type": "number",
          "description": "Required if type is `DOUBLE` or `INTEGER`. This field should be unset if type is `CATEGORICAL`. This value should be integers if type is `INTEGER`."
        },
        "minValue": {
          "type": "number",
          "description": "Required if type is `DOUBLE` or `INTEGER`. This field should be unset if type is `CATEGORICAL`. This value should be integers if type is INTEGER."
        },
        "parameterName": {
          "type": "string",
          "description": "The parameter name must be unique amongst all ParameterConfigs in a HyperparameterSpec message. E.g., \"learning_rate\"."
        },
        "scaleType": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ParameterSpecScaleType",
          "description": "Optional. How the parameter should be scaled to the hypercube. Leave unset for categorical parameters. Some kind of scaling is strongly recommended for real or integral parameters (e.g., `UNIT_LINEAR_SCALE`)."
        },
        "type": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ParameterSpecType",
          "description": "The type of the parameter."
        }
      },
      "type": "object",
      "required": [
        "parameterName",
        "type"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ParameterSpecResponse": {
      "description": "Represents a single hyperparameter to optimize.",
      "properties": {
        "categoricalValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required if type is `CATEGORICAL`. The list of possible categories."
        },
        "discreteValues": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Required if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values."
        },
        "maxValue": {
          "type": "number",
          "description": "Required if type is `DOUBLE` or `INTEGER`. This field should be unset if type is `CATEGORICAL`. This value should be integers if type is `INTEGER`."
        },
        "minValue": {
          "type": "number",
          "description": "Required if type is `DOUBLE` or `INTEGER`. This field should be unset if type is `CATEGORICAL`. This value should be integers if type is INTEGER."
        },
        "parameterName": {
          "type": "string",
          "description": "The parameter name must be unique amongst all ParameterConfigs in a HyperparameterSpec message. E.g., \"learning_rate\"."
        },
        "scaleType": {
          "type": "string",
          "description": "Optional. How the parameter should be scaled to the hypercube. Leave unset for categorical parameters. Some kind of scaling is strongly recommended for real or integral parameters (e.g., `UNIT_LINEAR_SCALE`)."
        },
        "type": {
          "type": "string",
          "description": "The type of the parameter."
        }
      },
      "type": "object",
      "required": [
        "categoricalValues",
        "discreteValues",
        "maxValue",
        "minValue",
        "parameterName",
        "scaleType",
        "type"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ParameterSpecScaleType": {
      "description": "Optional. How the parameter should be scaled to the hypercube. Leave unset for categorical parameters. Some kind of scaling is strongly recommended for real or integral parameters (e.g., `UNIT_LINEAR_SCALE`).",
      "type": "string",
      "enum": [
        {
          "name": "None",
          "description": "By default, no scaling is applied.",
          "value": "NONE"
        },
        {
          "name": "UnitLinearScale",
          "description": "Scales the feasible space to (0, 1) linearly.",
          "value": "UNIT_LINEAR_SCALE"
        },
        {
          "name": "UnitLogScale",
          "description": "Scales the feasible space logarithmically to (0, 1). The entire feasible space must be strictly positive.",
          "value": "UNIT_LOG_SCALE"
        },
        {
          "name": "UnitReverseLogScale",
          "description": "Scales the feasible space \"reverse\" logarithmically to (0, 1). The result is that values close to the top of the feasible space are spread out more than points near the bottom. The entire feasible space must be strictly positive.",
          "value": "UNIT_REVERSE_LOG_SCALE"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ParameterSpecType": {
      "description": "Required. The type of the parameter.",
      "type": "string",
      "enum": [
        {
          "name": "ParameterTypeUnspecified",
          "description": "You must specify a valid type. Using this unspecified type will result in an error.",
          "value": "PARAMETER_TYPE_UNSPECIFIED"
        },
        {
          "name": "Double",
          "description": "Type for real-valued parameters.",
          "value": "DOUBLE"
        },
        {
          "name": "Integer",
          "description": "Type for integral parameters.",
          "value": "INTEGER"
        },
        {
          "name": "Categorical",
          "description": "The parameter is categorical, with a value chosen from the categories field.",
          "value": "CATEGORICAL"
        },
        {
          "name": "Discrete",
          "description": "The parameter is real valued, with a fixed set of feasible points. If `type==DISCRETE`, feasible_points must be provided, and {`min_value`, `max_value`} will be ignored.",
          "value": "DISCRETE"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__PredictionInput": {
      "description": "Represents input parameters for a prediction job.",
      "properties": {
        "batchSize": {
          "type": "string",
          "description": "Optional. Number of records per batch, defaults to 64. The service will buffer batch_size number of records in memory before invoking one Tensorflow prediction call internally. So take the record size and memory available into consideration when setting this parameter."
        },
        "dataFormat": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__PredictionInputDataFormat",
          "description": "The format of the input data files."
        },
        "inputPaths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Cloud Storage location of the input data files. May contain wildcards."
        },
        "maxWorkerCount": {
          "type": "string",
          "description": "Optional. The maximum number of workers to be used for parallel processing. Defaults to 10 if not specified."
        },
        "modelName": {
          "type": "string",
          "description": "Use this field if you want to use the default version for the specified model. The string must use the following format: `\"projects/YOUR_PROJECT/models/YOUR_MODEL\"`"
        },
        "outputDataFormat": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__PredictionInputOutputDataFormat",
          "description": "Optional. Format of the output data files, defaults to JSON."
        },
        "outputPath": {
          "type": "string",
          "description": "The output Google Cloud Storage location."
        },
        "region": {
          "type": "string",
          "description": "The Google Compute Engine region to run the prediction job in. See the available regions for AI Platform services."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "Optional. The AI Platform runtime version to use for this batch prediction. If not set, AI Platform will pick the runtime version used during the CreateVersion request for this model version, or choose the latest stable version when model version information is not available such as when the model is specified by uri."
        },
        "signatureName": {
          "type": "string",
          "description": "Optional. The name of the signature defined in the SavedModel to use for this job. Please refer to [SavedModel](https://tensorflow.github.io/serving/serving_basic.html) for information about how to use signatures. Defaults to [DEFAULT_SERVING_SIGNATURE_DEF_KEY](https://www.tensorflow.org/api_docs/python/tf/saved_model/signature_constants) , which is \"serving_default\"."
        },
        "uri": {
          "type": "string",
          "description": "Use this field if you want to specify a Google Cloud Storage path for the model to use."
        },
        "versionName": {
          "type": "string",
          "description": "Use this field if you want to specify a version of the model to use. The string is formatted the same way as `model_version`, with the addition of the version information: `\"projects/YOUR_PROJECT/models/YOUR_MODEL/versions/YOUR_VERSION\"`"
        }
      },
      "type": "object",
      "required": [
        "dataFormat",
        "inputPaths",
        "outputPath",
        "region"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__PredictionInputDataFormat": {
      "description": "Required. The format of the input data files.",
      "type": "string",
      "enum": [
        {
          "name": "DataFormatUnspecified",
          "description": "Unspecified format.",
          "value": "DATA_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Json",
          "description": "Each line of the file is a JSON dictionary representing one record.",
          "value": "JSON"
        },
        {
          "name": "Text",
          "description": "Deprecated. Use JSON instead.",
          "value": "TEXT"
        },
        {
          "name": "TfRecord",
          "description": "The source file is a TFRecord file. Currently available only for input data.",
          "value": "TF_RECORD"
        },
        {
          "name": "TfRecordGzip",
          "description": "The source file is a GZIP-compressed TFRecord file. Currently available only for input data.",
          "value": "TF_RECORD_GZIP"
        },
        {
          "name": "Csv",
          "description": "Values are comma-separated rows, with keys in a separate file. Currently available only for output data.",
          "value": "CSV"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__PredictionInputOutputDataFormat": {
      "description": "Optional. Format of the output data files, defaults to JSON.",
      "type": "string",
      "enum": [
        {
          "name": "DataFormatUnspecified",
          "description": "Unspecified format.",
          "value": "DATA_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Json",
          "description": "Each line of the file is a JSON dictionary representing one record.",
          "value": "JSON"
        },
        {
          "name": "Text",
          "description": "Deprecated. Use JSON instead.",
          "value": "TEXT"
        },
        {
          "name": "TfRecord",
          "description": "The source file is a TFRecord file. Currently available only for input data.",
          "value": "TF_RECORD"
        },
        {
          "name": "TfRecordGzip",
          "description": "The source file is a GZIP-compressed TFRecord file. Currently available only for input data.",
          "value": "TF_RECORD_GZIP"
        },
        {
          "name": "Csv",
          "description": "Values are comma-separated rows, with keys in a separate file. Currently available only for output data.",
          "value": "CSV"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__PredictionInputResponse": {
      "description": "Represents input parameters for a prediction job.",
      "properties": {
        "batchSize": {
          "type": "string",
          "description": "Optional. Number of records per batch, defaults to 64. The service will buffer batch_size number of records in memory before invoking one Tensorflow prediction call internally. So take the record size and memory available into consideration when setting this parameter."
        },
        "dataFormat": {
          "type": "string",
          "description": "The format of the input data files."
        },
        "inputPaths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Cloud Storage location of the input data files. May contain wildcards."
        },
        "maxWorkerCount": {
          "type": "string",
          "description": "Optional. The maximum number of workers to be used for parallel processing. Defaults to 10 if not specified."
        },
        "modelName": {
          "type": "string",
          "description": "Use this field if you want to use the default version for the specified model. The string must use the following format: `\"projects/YOUR_PROJECT/models/YOUR_MODEL\"`"
        },
        "outputDataFormat": {
          "type": "string",
          "description": "Optional. Format of the output data files, defaults to JSON."
        },
        "outputPath": {
          "type": "string",
          "description": "The output Google Cloud Storage location."
        },
        "region": {
          "type": "string",
          "description": "The Google Compute Engine region to run the prediction job in. See the available regions for AI Platform services."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "Optional. The AI Platform runtime version to use for this batch prediction. If not set, AI Platform will pick the runtime version used during the CreateVersion request for this model version, or choose the latest stable version when model version information is not available such as when the model is specified by uri."
        },
        "signatureName": {
          "type": "string",
          "description": "Optional. The name of the signature defined in the SavedModel to use for this job. Please refer to [SavedModel](https://tensorflow.github.io/serving/serving_basic.html) for information about how to use signatures. Defaults to [DEFAULT_SERVING_SIGNATURE_DEF_KEY](https://www.tensorflow.org/api_docs/python/tf/saved_model/signature_constants) , which is \"serving_default\"."
        },
        "uri": {
          "type": "string",
          "description": "Use this field if you want to specify a Google Cloud Storage path for the model to use."
        },
        "versionName": {
          "type": "string",
          "description": "Use this field if you want to specify a version of the model to use. The string is formatted the same way as `model_version`, with the addition of the version information: `\"projects/YOUR_PROJECT/models/YOUR_MODEL/versions/YOUR_VERSION\"`"
        }
      },
      "type": "object",
      "required": [
        "batchSize",
        "dataFormat",
        "inputPaths",
        "maxWorkerCount",
        "modelName",
        "outputDataFormat",
        "outputPath",
        "region",
        "runtimeVersion",
        "signatureName",
        "uri",
        "versionName"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__PredictionOutput": {
      "description": "Represents results of a prediction job.",
      "properties": {
        "errorCount": {
          "type": "string",
          "description": "The number of data instances which resulted in errors."
        },
        "nodeHours": {
          "type": "number",
          "description": "Node hours used by the batch prediction job."
        },
        "outputPath": {
          "type": "string",
          "description": "The output Google Cloud Storage location provided at the job creation time."
        },
        "predictionCount": {
          "type": "string",
          "description": "The number of generated predictions."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__PredictionOutputResponse": {
      "description": "Represents results of a prediction job.",
      "properties": {
        "errorCount": {
          "type": "string",
          "description": "The number of data instances which resulted in errors."
        },
        "nodeHours": {
          "type": "number",
          "description": "Node hours used by the batch prediction job."
        },
        "outputPath": {
          "type": "string",
          "description": "The output Google Cloud Storage location provided at the job creation time."
        },
        "predictionCount": {
          "type": "string",
          "description": "The number of generated predictions."
        }
      },
      "type": "object",
      "required": [
        "errorCount",
        "nodeHours",
        "outputPath",
        "predictionCount"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__ReplicaConfig": {
      "description": "Represents the configuration for a replica in a cluster.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AcceleratorConfig",
          "description": "Represents the type and number of accelerators used by the replica. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu)"
        },
        "containerArgs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Arguments to the entrypoint command. The following rules apply for container_command and container_args: - If you do not supply command or args: The defaults defined in the Docker image are used. - If you supply a command but no args: The default EntryPoint and the default Cmd defined in the Docker image are ignored. Your command is run without any arguments. - If you supply only args: The default Entrypoint defined in the Docker image is run with the args that you supplied. - If you supply a command and args: The default Entrypoint and the default Cmd defined in the Docker image are ignored. Your command is run with your args. It cannot be set if custom container image is not provided. Note that this field and [TrainingInput.args] are mutually exclusive, i.e., both cannot be set at the same time."
        },
        "containerCommand": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The command with which the replica's custom container is run. If provided, it will override default ENTRYPOINT of the docker image. If not provided, the docker image's ENTRYPOINT is used. It cannot be set if custom container image is not provided. Note that this field and [TrainingInput.args] are mutually exclusive, i.e., both cannot be set at the same time."
        },
        "diskConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__DiskConfig",
          "description": "Represents the configuration of disk options."
        },
        "imageUri": {
          "type": "string",
          "description": "The Docker image to run on the replica. This image must be in Container Registry. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "tpuTfVersion": {
          "type": "string",
          "description": "The AI Platform runtime version that includes a TensorFlow version matching the one used in the custom container. This field is required if the replica is a TPU worker that uses a custom container. Otherwise, do not specify this field. This must be a [runtime version that currently supports training with TPUs](/ml-engine/docs/tensorflow/runtime-version-list#tpu-support). Note that the version of TensorFlow included in a runtime version may differ from the numbering of the runtime version itself, because it may have a different [patch version](https://www.tensorflow.org/guide/version_compat#semantic_versioning_20). In this field, you must specify the runtime version (TensorFlow minor version). For example, if your custom container runs TensorFlow `1.x.y`, specify `1.x`."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__ReplicaConfigResponse": {
      "description": "Represents the configuration for a replica in a cluster.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AcceleratorConfigResponse",
          "description": "Represents the type and number of accelerators used by the replica. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu)"
        },
        "containerArgs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Arguments to the entrypoint command. The following rules apply for container_command and container_args: - If you do not supply command or args: The defaults defined in the Docker image are used. - If you supply a command but no args: The default EntryPoint and the default Cmd defined in the Docker image are ignored. Your command is run without any arguments. - If you supply only args: The default Entrypoint defined in the Docker image is run with the args that you supplied. - If you supply a command and args: The default Entrypoint and the default Cmd defined in the Docker image are ignored. Your command is run with your args. It cannot be set if custom container image is not provided. Note that this field and [TrainingInput.args] are mutually exclusive, i.e., both cannot be set at the same time."
        },
        "containerCommand": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The command with which the replica's custom container is run. If provided, it will override default ENTRYPOINT of the docker image. If not provided, the docker image's ENTRYPOINT is used. It cannot be set if custom container image is not provided. Note that this field and [TrainingInput.args] are mutually exclusive, i.e., both cannot be set at the same time."
        },
        "diskConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__DiskConfigResponse",
          "description": "Represents the configuration of disk options."
        },
        "imageUri": {
          "type": "string",
          "description": "The Docker image to run on the replica. This image must be in Container Registry. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "tpuTfVersion": {
          "type": "string",
          "description": "The AI Platform runtime version that includes a TensorFlow version matching the one used in the custom container. This field is required if the replica is a TPU worker that uses a custom container. Otherwise, do not specify this field. This must be a [runtime version that currently supports training with TPUs](/ml-engine/docs/tensorflow/runtime-version-list#tpu-support). Note that the version of TensorFlow included in a runtime version may differ from the numbering of the runtime version itself, because it may have a different [patch version](https://www.tensorflow.org/guide/version_compat#semantic_versioning_20). In this field, you must specify the runtime version (TensorFlow minor version). For example, if your custom container runs TensorFlow `1.x.y`, specify `1.x`."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "containerArgs",
        "containerCommand",
        "diskConfig",
        "imageUri",
        "tpuTfVersion"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__RequestLoggingConfig": {
      "description": "Configuration for logging request-response pairs to a BigQuery table. Online prediction requests to a model version and the responses to these requests are converted to raw strings and saved to the specified BigQuery table. Logging is constrained by [BigQuery quotas and limits](/bigquery/quotas). If your project exceeds BigQuery quotas or limits, AI Platform Prediction does not log request-response pairs, but it continues to serve predictions. If you are using [continuous evaluation](/ml-engine/docs/continuous-evaluation/), you do not need to specify this configuration manually. Setting up continuous evaluation automatically enables logging of request-response pairs.",
      "properties": {
        "bigqueryTableName": {
          "type": "string",
          "description": "Fully qualified BigQuery table name in the following format: \" project_id.dataset_name.table_name\" The specified table must already exist, and the \"Cloud ML Service Agent\" for your project must have permission to write to it. The table must have the following [schema](/bigquery/docs/schemas): Field nameType Mode model STRING REQUIRED model_version STRING REQUIRED time TIMESTAMP REQUIRED raw_data STRING REQUIRED raw_prediction STRING NULLABLE groundtruth STRING NULLABLE "
        },
        "samplingPercentage": {
          "type": "number",
          "description": "Percentage of requests to be logged, expressed as a fraction from 0 to 1. For example, if you want to log 10% of requests, enter `0.1`. The sampling window is the lifetime of the model version. Defaults to 0."
        }
      },
      "type": "object",
      "required": [
        "bigqueryTableName"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__RequestLoggingConfigResponse": {
      "description": "Configuration for logging request-response pairs to a BigQuery table. Online prediction requests to a model version and the responses to these requests are converted to raw strings and saved to the specified BigQuery table. Logging is constrained by [BigQuery quotas and limits](/bigquery/quotas). If your project exceeds BigQuery quotas or limits, AI Platform Prediction does not log request-response pairs, but it continues to serve predictions. If you are using [continuous evaluation](/ml-engine/docs/continuous-evaluation/), you do not need to specify this configuration manually. Setting up continuous evaluation automatically enables logging of request-response pairs.",
      "properties": {
        "bigqueryTableName": {
          "type": "string",
          "description": "Fully qualified BigQuery table name in the following format: \" project_id.dataset_name.table_name\" The specified table must already exist, and the \"Cloud ML Service Agent\" for your project must have permission to write to it. The table must have the following [schema](/bigquery/docs/schemas): Field nameType Mode model STRING REQUIRED model_version STRING REQUIRED time TIMESTAMP REQUIRED raw_data STRING REQUIRED raw_prediction STRING NULLABLE groundtruth STRING NULLABLE "
        },
        "samplingPercentage": {
          "type": "number",
          "description": "Percentage of requests to be logged, expressed as a fraction from 0 to 1. For example, if you want to log 10% of requests, enter `0.1`. The sampling window is the lifetime of the model version. Defaults to 0."
        }
      },
      "type": "object",
      "required": [
        "bigqueryTableName",
        "samplingPercentage"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__RouteMap": {
      "description": "Specifies HTTP paths served by a custom container. AI Platform Prediction sends requests to these paths on the container; the custom container must run an HTTP server that responds to these requests with appropriate responses. Read [Custom container requirements](/ai-platform/prediction/docs/custom-container-requirements) for details on how to create your container image to meet these requirements.",
      "properties": {
        "health": {
          "type": "string",
          "description": "HTTP path on the container to send health checkss to. AI Platform Prediction intermittently sends GET requests to this path on the container's IP address and port to check that the container is healthy. Read more about [health checks](/ai-platform/prediction/docs/custom-container-requirements#checks). For example, if you set this field to `/bar`, then AI Platform Prediction intermittently sends a GET request to the `/bar` path on the port of your container specified by the first value of Version.container.ports. If you don't specify this field, it defaults to the following value: /v1/models/ MODEL/versions/VERSION The placeholders in this value are replaced as follows: * MODEL: The name of the parent Model. This does not include the \"projects/PROJECT_ID/models/\" prefix that the API returns in output; it is the bare model name, as provided to projects.models.create. * VERSION: The name of the model version. This does not include the \"projects/PROJECT_ID /models/MODEL/versions/\" prefix that the API returns in output; it is the bare version name, as provided to projects.models.versions.create."
        },
        "predict": {
          "type": "string",
          "description": "HTTP path on the container to send prediction requests to. AI Platform Prediction forwards requests sent using projects.predict to this path on the container's IP address and port. AI Platform Prediction then returns the container's response in the API response. For example, if you set this field to `/foo`, then when AI Platform Prediction receives a prediction request, it forwards the request body in a POST request to the `/foo` path on the port of your container specified by the first value of Version.container.ports. If you don't specify this field, it defaults to the following value: /v1/models/MODEL/versions/VERSION:predict The placeholders in this value are replaced as follows: * MODEL: The name of the parent Model. This does not include the \"projects/PROJECT_ID/models/\" prefix that the API returns in output; it is the bare model name, as provided to projects.models.create. * VERSION: The name of the model version. This does not include the \"projects/PROJECT_ID/models/MODEL/versions/\" prefix that the API returns in output; it is the bare version name, as provided to projects.models.versions.create."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__RouteMapResponse": {
      "description": "Specifies HTTP paths served by a custom container. AI Platform Prediction sends requests to these paths on the container; the custom container must run an HTTP server that responds to these requests with appropriate responses. Read [Custom container requirements](/ai-platform/prediction/docs/custom-container-requirements) for details on how to create your container image to meet these requirements.",
      "properties": {
        "health": {
          "type": "string",
          "description": "HTTP path on the container to send health checkss to. AI Platform Prediction intermittently sends GET requests to this path on the container's IP address and port to check that the container is healthy. Read more about [health checks](/ai-platform/prediction/docs/custom-container-requirements#checks). For example, if you set this field to `/bar`, then AI Platform Prediction intermittently sends a GET request to the `/bar` path on the port of your container specified by the first value of Version.container.ports. If you don't specify this field, it defaults to the following value: /v1/models/ MODEL/versions/VERSION The placeholders in this value are replaced as follows: * MODEL: The name of the parent Model. This does not include the \"projects/PROJECT_ID/models/\" prefix that the API returns in output; it is the bare model name, as provided to projects.models.create. * VERSION: The name of the model version. This does not include the \"projects/PROJECT_ID /models/MODEL/versions/\" prefix that the API returns in output; it is the bare version name, as provided to projects.models.versions.create."
        },
        "predict": {
          "type": "string",
          "description": "HTTP path on the container to send prediction requests to. AI Platform Prediction forwards requests sent using projects.predict to this path on the container's IP address and port. AI Platform Prediction then returns the container's response in the API response. For example, if you set this field to `/foo`, then when AI Platform Prediction receives a prediction request, it forwards the request body in a POST request to the `/foo` path on the port of your container specified by the first value of Version.container.ports. If you don't specify this field, it defaults to the following value: /v1/models/MODEL/versions/VERSION:predict The placeholders in this value are replaced as follows: * MODEL: The name of the parent Model. This does not include the \"projects/PROJECT_ID/models/\" prefix that the API returns in output; it is the bare model name, as provided to projects.models.create. * VERSION: The name of the model version. This does not include the \"projects/PROJECT_ID/models/MODEL/versions/\" prefix that the API returns in output; it is the bare version name, as provided to projects.models.versions.create."
        }
      },
      "type": "object",
      "required": [
        "health",
        "predict"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__SampledShapleyAttribution": {
      "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features.",
      "properties": {
        "numPaths": {
          "type": "integer",
          "description": "The number of feature permutations to consider when approximating the Shapley values."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__SampledShapleyAttributionResponse": {
      "description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features.",
      "properties": {
        "numPaths": {
          "type": "integer",
          "description": "The number of feature permutations to consider when approximating the Shapley values."
        }
      },
      "type": "object",
      "required": [
        "numPaths"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__Scheduling": {
      "description": "All parameters related to scheduling of training jobs.",
      "properties": {
        "maxRunningTime": {
          "type": "string",
          "description": "Optional. The maximum job running time, expressed in seconds. The field can contain up to nine fractional digits, terminated by `s`. If not specified, this field defaults to `604800s` (seven days). If the training job is still running after this duration, AI Platform Training cancels it. The duration is measured from when the job enters the `RUNNING` state; therefore it does not overlap with the duration limited by Scheduling.max_wait_time. For example, if you want to ensure your job runs for no more than 2 hours, set this field to `7200s` (2 hours * 60 minutes / hour * 60 seconds / minute). If you submit your training job using the `gcloud` tool, you can [specify this field in a `config.yaml` file](/ai-platform/training/docs/training-jobs#formatting_your_configuration_parameters). For example: ```yaml trainingInput: scheduling: maxRunningTime: 7200s ```"
        },
        "maxWaitTime": {
          "type": "string",
          "description": "Optional. The maximum job wait time, expressed in seconds. The field can contain up to nine fractional digits, terminated by `s`. If not specified, there is no limit to the wait time. The minimum for this field is `1800s` (30 minutes). If the training job has not entered the `RUNNING` state after this duration, AI Platform Training cancels it. After the job begins running, it can no longer be cancelled due to the maximum wait time. Therefore the duration limited by this field does not overlap with the duration limited by Scheduling.max_running_time. For example, if the job temporarily stops running and retries due to a [VM restart](/ai-platform/training/docs/overview#restarts), this cannot lead to a maximum wait time cancellation. However, independently of this constraint, AI Platform Training might stop a job if there are too many retries due to exhausted resources in a region. The following example describes how you might use this field: To cancel your job if it doesn't start running within 1 hour, set this field to `3600s` (1 hour * 60 minutes / hour * 60 seconds / minute). If the job is still in the `QUEUED` or `PREPARING` state after an hour of waiting, AI Platform Training cancels the job. If you submit your training job using the `gcloud` tool, you can [specify this field in a `config.yaml` file](/ai-platform/training/docs/training-jobs#formatting_your_configuration_parameters). For example: ```yaml trainingInput: scheduling: maxWaitTime: 3600s ```"
        },
        "priority": {
          "type": "integer",
          "description": "Optional. Job scheduling will be based on this priority, which in the range [0, 1000]. The bigger the number, the higher the priority. Default to 0 if not set. If there are multiple jobs requesting same type of accelerators, the high priority job will be scheduled prior to ones with low priority."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__SchedulingResponse": {
      "description": "All parameters related to scheduling of training jobs.",
      "properties": {
        "maxRunningTime": {
          "type": "string",
          "description": "Optional. The maximum job running time, expressed in seconds. The field can contain up to nine fractional digits, terminated by `s`. If not specified, this field defaults to `604800s` (seven days). If the training job is still running after this duration, AI Platform Training cancels it. The duration is measured from when the job enters the `RUNNING` state; therefore it does not overlap with the duration limited by Scheduling.max_wait_time. For example, if you want to ensure your job runs for no more than 2 hours, set this field to `7200s` (2 hours * 60 minutes / hour * 60 seconds / minute). If you submit your training job using the `gcloud` tool, you can [specify this field in a `config.yaml` file](/ai-platform/training/docs/training-jobs#formatting_your_configuration_parameters). For example: ```yaml trainingInput: scheduling: maxRunningTime: 7200s ```"
        },
        "maxWaitTime": {
          "type": "string",
          "description": "Optional. The maximum job wait time, expressed in seconds. The field can contain up to nine fractional digits, terminated by `s`. If not specified, there is no limit to the wait time. The minimum for this field is `1800s` (30 minutes). If the training job has not entered the `RUNNING` state after this duration, AI Platform Training cancels it. After the job begins running, it can no longer be cancelled due to the maximum wait time. Therefore the duration limited by this field does not overlap with the duration limited by Scheduling.max_running_time. For example, if the job temporarily stops running and retries due to a [VM restart](/ai-platform/training/docs/overview#restarts), this cannot lead to a maximum wait time cancellation. However, independently of this constraint, AI Platform Training might stop a job if there are too many retries due to exhausted resources in a region. The following example describes how you might use this field: To cancel your job if it doesn't start running within 1 hour, set this field to `3600s` (1 hour * 60 minutes / hour * 60 seconds / minute). If the job is still in the `QUEUED` or `PREPARING` state after an hour of waiting, AI Platform Training cancels the job. If you submit your training job using the `gcloud` tool, you can [specify this field in a `config.yaml` file](/ai-platform/training/docs/training-jobs#formatting_your_configuration_parameters). For example: ```yaml trainingInput: scheduling: maxWaitTime: 3600s ```"
        },
        "priority": {
          "type": "integer",
          "description": "Optional. Job scheduling will be based on this priority, which in the range [0, 1000]. The bigger the number, the higher the priority. Default to 0 if not set. If there are multiple jobs requesting same type of accelerators, the high priority job will be scheduled prior to ones with low priority."
        }
      },
      "type": "object",
      "required": [
        "maxRunningTime",
        "maxWaitTime",
        "priority"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__StudyConfig": {
      "description": "Represents configuration of a study.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__StudyConfigAlgorithm",
          "description": "The search algorithm specified for the study."
        },
        "automatedStoppingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AutomatedStoppingConfig",
          "description": "Configuration for automated stopping of unpromising Trials."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_MetricSpec"
          },
          "description": "Metric specs for the study."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_ParameterSpec"
          },
          "description": "The set of parameters to tune."
        }
      },
      "type": "object",
      "required": [
        "parameters"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__StudyConfigAlgorithm": {
      "description": "The search algorithm specified for the study.",
      "type": "string",
      "enum": [
        {
          "name": "AlgorithmUnspecified",
          "description": "The default algorithm used by the Cloud AI Platform Vizier service.",
          "value": "ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "GaussianProcessBandit",
          "description": "Gaussian Process Bandit.",
          "value": "GAUSSIAN_PROCESS_BANDIT"
        },
        {
          "name": "GridSearch",
          "description": "Simple grid search within the feasible space. To use grid search, all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`.",
          "value": "GRID_SEARCH"
        },
        {
          "name": "RandomSearch",
          "description": "Simple random search within the feasible space.",
          "value": "RANDOM_SEARCH"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__StudyConfigResponse": {
      "description": "Represents configuration of a study.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The search algorithm specified for the study."
        },
        "automatedStoppingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AutomatedStoppingConfigResponse",
          "description": "Configuration for automated stopping of unpromising Trials."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_MetricSpecResponse"
          },
          "description": "Metric specs for the study."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_StudyConfig_ParameterSpecResponse"
          },
          "description": "The set of parameters to tune."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "automatedStoppingConfig",
        "metrics",
        "parameters"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__TrainingInput": {
      "description": "Represents input parameters for a training job. When using the gcloud command to submit your training job, you can specify the input parameters as command-line arguments and/or in a YAML configuration file referenced from the --config command-line argument. For details, see the guide to [submitting a training job](/ai-platform/training/docs/training-jobs).",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Command-line arguments passed to the training application when it starts. If your job uses a custom container, then the arguments are passed to the container's `ENTRYPOINT` command."
        },
        "enableWebAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want AI Platform Training to enable [interactive shell access](https://cloud.google.com/ai-platform/training/docs/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by TrainingOutput.web_access_uris or HyperparameterOutput.web_access_uris (within TrainingOutput.trials)."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__EncryptionConfig",
          "description": "Optional. Options for using customer-managed encryption keys (CMEK) to protect resources created by a training job, instead of using Google's default encryption. If this is set, then all resources created by the training job will be encrypted with the customer-managed encryption key that you specify. [Learn how and when to use CMEK with AI Platform Training](/ai-platform/training/docs/cmek)."
        },
        "evaluatorConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ReplicaConfig",
          "description": "Optional. The configuration for evaluators. You should only set `evaluatorConfig.acceleratorConfig` if `evaluatorType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `evaluatorConfig.imageUri` only if you build a custom image for your evaluator. If `evaluatorConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "evaluatorCount": {
          "type": "string",
          "description": "Optional. The number of evaluator replicas to use for the training job. Each replica in the cluster will be of the type specified in `evaluator_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `evaluator_type`. The default value is zero."
        },
        "evaluatorType": {
          "type": "string",
          "description": "Optional. Specifies the type of virtual machine to use for your training job's evaluator nodes. The supported values are the same as those described in the entry for `masterType`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. This value must be present when `scaleTier` is set to `CUSTOM` and `evaluatorCount` is greater than zero."
        },
        "hyperparameters": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__HyperparameterSpec",
          "description": "Optional. The set of Hyperparameters to tune."
        },
        "jobDir": {
          "type": "string",
          "description": "Optional. A Google Cloud Storage path in which to store training outputs and other data needed for training. This path is passed to your TensorFlow program as the '--job-dir' command-line argument. The benefit of specifying this field is that Cloud ML validates the path for use in training."
        },
        "masterConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ReplicaConfig",
          "description": "Optional. The configuration for your master worker. You should only set `masterConfig.acceleratorConfig` if `masterType` is set to a Compute Engine machine type. Learn about [restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `masterConfig.imageUri` only if you build a custom image. Only one of `masterConfig.imageUri` and `runtimeVersion` should be set. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "masterType": {
          "type": "string",
          "description": "Optional. Specifies the type of virtual machine to use for your training job's master worker. You must specify this field when `scaleTier` is set to `CUSTOM`. You can use certain Compute Engine machine types directly in this field. See the [list of compatible Compute Engine machine types](/ai-platform/training/docs/machine-types#compute-engine-machine-types). Alternatively, you can use the certain legacy machine types in this field. See the [list of legacy machine types](/ai-platform/training/docs/machine-types#legacy-machine-types). Finally, if you want to use a TPU for training, specify `cloud_tpu` in this field. Learn more about the [special configuration options for training with TPUs](/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine)."
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the [Compute Engine network](/vpc/docs/vpc) to which the Job is peered. For example, `projects/12345/global/networks/myVPC`. The format of this field is `projects/{project}/global/networks/{network}`, where {project} is a project number (like `12345`) and {network} is network name. Private services access must already be configured for the network. If left unspecified, the Job is not peered with any network. [Learn about using VPC Network Peering.](/ai-platform/training/docs/vpc-peering)."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Cloud Storage location of the packages with the training program and any additional dependencies. The maximum number of package URIs is 100."
        },
        "parameterServerConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ReplicaConfig",
          "description": "Optional. The configuration for parameter servers. You should only set `parameterServerConfig.acceleratorConfig` if `parameterServerType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `parameterServerConfig.imageUri` only if you build a custom image for your parameter server. If `parameterServerConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "parameterServerCount": {
          "type": "string",
          "description": "Optional. The number of parameter server replicas to use for the training job. Each replica in the cluster will be of the type specified in `parameter_server_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `parameter_server_type`. The default value is zero."
        },
        "parameterServerType": {
          "type": "string",
          "description": "Optional. Specifies the type of virtual machine to use for your training job's parameter server. The supported values are the same as those described in the entry for `master_type`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. This value must be present when `scaleTier` is set to `CUSTOM` and `parameter_server_count` is greater than zero."
        },
        "pythonModule": {
          "type": "string",
          "description": "The Python module name to run after installing the packages."
        },
        "pythonVersion": {
          "type": "string",
          "description": "Optional. The version of Python used in training. You must either specify this field or specify `masterConfig.imageUri`. The following Python versions are available: * Python '3.7' is available when `runtime_version` is set to '1.15' or later. * Python '3.5' is available when `runtime_version` is set to a version from '1.4' to '1.14'. * Python '2.7' is available when `runtime_version` is set to '1.15' or earlier. Read more about the Python versions available for [each runtime version](/ml-engine/docs/runtime-version-list)."
        },
        "region": {
          "type": "string",
          "description": "The region to run the training job in. See the [available regions](/ai-platform/training/docs/regions) for AI Platform Training."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "Optional. The AI Platform runtime version to use for training. You must either specify this field or specify `masterConfig.imageUri`. For more information, see the [runtime version list](/ai-platform/training/docs/runtime-version-list) and learn [how to manage runtime versions](/ai-platform/training/docs/versioning)."
        },
        "scaleTier": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__TrainingInputScaleTier",
          "description": "Specifies the machine types, the number of replicas for workers and parameter servers."
        },
        "scheduling": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__Scheduling",
          "description": "Optional. Scheduling options for a training job."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The email address of a service account to use when running the training appplication. You must have the `iam.serviceAccounts.actAs` permission for the specified service account. In addition, the AI Platform Training Google-managed service account must have the `roles/iam.serviceAccountAdmin` role for the specified service account. [Learn more about configuring a service account.](/ai-platform/training/docs/custom-service-account) If not specified, the AI Platform Training Google-managed service account is used by default."
        },
        "useChiefInTfConfig": {
          "type": "boolean",
          "description": "Optional. Use `chief` instead of `master` in the `TF_CONFIG` environment variable when training with a custom container. Defaults to `false`. [Learn more about this field.](/ai-platform/training/docs/distributed-training-details#chief-versus-master) This field has no effect for training jobs that don't use a custom container."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ReplicaConfig",
          "description": "Optional. The configuration for workers. You should only set `workerConfig.acceleratorConfig` if `workerType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `workerConfig.imageUri` only if you build a custom image for your worker. If `workerConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "workerCount": {
          "type": "string",
          "description": "Optional. The number of worker replicas to use for the training job. Each replica in the cluster will be of the type specified in `worker_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `worker_type`. The default value is zero."
        },
        "workerType": {
          "type": "string",
          "description": "Optional. Specifies the type of virtual machine to use for your training job's worker nodes. The supported values are the same as those described in the entry for `masterType`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. If you use `cloud_tpu` for this value, see special instructions for [configuring a custom TPU machine](/ml-engine/docs/tensorflow/using-tpus#configuring_a_custom_tpu_machine). This value must be present when `scaleTier` is set to `CUSTOM` and `workerCount` is greater than zero."
        }
      },
      "type": "object",
      "required": [
        "packageUris",
        "pythonModule",
        "region",
        "scaleTier"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__TrainingInputResponse": {
      "description": "Represents input parameters for a training job. When using the gcloud command to submit your training job, you can specify the input parameters as command-line arguments and/or in a YAML configuration file referenced from the --config command-line argument. For details, see the guide to [submitting a training job](/ai-platform/training/docs/training-jobs).",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Command-line arguments passed to the training application when it starts. If your job uses a custom container, then the arguments are passed to the container's `ENTRYPOINT` command."
        },
        "enableWebAccess": {
          "type": "boolean",
          "description": "Optional. Whether you want AI Platform Training to enable [interactive shell access](https://cloud.google.com/ai-platform/training/docs/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by TrainingOutput.web_access_uris or HyperparameterOutput.web_access_uris (within TrainingOutput.trials)."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__EncryptionConfigResponse",
          "description": "Optional. Options for using customer-managed encryption keys (CMEK) to protect resources created by a training job, instead of using Google's default encryption. If this is set, then all resources created by the training job will be encrypted with the customer-managed encryption key that you specify. [Learn how and when to use CMEK with AI Platform Training](/ai-platform/training/docs/cmek)."
        },
        "evaluatorConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ReplicaConfigResponse",
          "description": "Optional. The configuration for evaluators. You should only set `evaluatorConfig.acceleratorConfig` if `evaluatorType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `evaluatorConfig.imageUri` only if you build a custom image for your evaluator. If `evaluatorConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "evaluatorCount": {
          "type": "string",
          "description": "Optional. The number of evaluator replicas to use for the training job. Each replica in the cluster will be of the type specified in `evaluator_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `evaluator_type`. The default value is zero."
        },
        "evaluatorType": {
          "type": "string",
          "description": "Optional. Specifies the type of virtual machine to use for your training job's evaluator nodes. The supported values are the same as those described in the entry for `masterType`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. This value must be present when `scaleTier` is set to `CUSTOM` and `evaluatorCount` is greater than zero."
        },
        "hyperparameters": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__HyperparameterSpecResponse",
          "description": "Optional. The set of Hyperparameters to tune."
        },
        "jobDir": {
          "type": "string",
          "description": "Optional. A Google Cloud Storage path in which to store training outputs and other data needed for training. This path is passed to your TensorFlow program as the '--job-dir' command-line argument. The benefit of specifying this field is that Cloud ML validates the path for use in training."
        },
        "masterConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ReplicaConfigResponse",
          "description": "Optional. The configuration for your master worker. You should only set `masterConfig.acceleratorConfig` if `masterType` is set to a Compute Engine machine type. Learn about [restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `masterConfig.imageUri` only if you build a custom image. Only one of `masterConfig.imageUri` and `runtimeVersion` should be set. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "masterType": {
          "type": "string",
          "description": "Optional. Specifies the type of virtual machine to use for your training job's master worker. You must specify this field when `scaleTier` is set to `CUSTOM`. You can use certain Compute Engine machine types directly in this field. See the [list of compatible Compute Engine machine types](/ai-platform/training/docs/machine-types#compute-engine-machine-types). Alternatively, you can use the certain legacy machine types in this field. See the [list of legacy machine types](/ai-platform/training/docs/machine-types#legacy-machine-types). Finally, if you want to use a TPU for training, specify `cloud_tpu` in this field. Learn more about the [special configuration options for training with TPUs](/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine)."
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the [Compute Engine network](/vpc/docs/vpc) to which the Job is peered. For example, `projects/12345/global/networks/myVPC`. The format of this field is `projects/{project}/global/networks/{network}`, where {project} is a project number (like `12345`) and {network} is network name. Private services access must already be configured for the network. If left unspecified, the Job is not peered with any network. [Learn about using VPC Network Peering.](/ai-platform/training/docs/vpc-peering)."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Cloud Storage location of the packages with the training program and any additional dependencies. The maximum number of package URIs is 100."
        },
        "parameterServerConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ReplicaConfigResponse",
          "description": "Optional. The configuration for parameter servers. You should only set `parameterServerConfig.acceleratorConfig` if `parameterServerType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `parameterServerConfig.imageUri` only if you build a custom image for your parameter server. If `parameterServerConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "parameterServerCount": {
          "type": "string",
          "description": "Optional. The number of parameter server replicas to use for the training job. Each replica in the cluster will be of the type specified in `parameter_server_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `parameter_server_type`. The default value is zero."
        },
        "parameterServerType": {
          "type": "string",
          "description": "Optional. Specifies the type of virtual machine to use for your training job's parameter server. The supported values are the same as those described in the entry for `master_type`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. This value must be present when `scaleTier` is set to `CUSTOM` and `parameter_server_count` is greater than zero."
        },
        "pythonModule": {
          "type": "string",
          "description": "The Python module name to run after installing the packages."
        },
        "pythonVersion": {
          "type": "string",
          "description": "Optional. The version of Python used in training. You must either specify this field or specify `masterConfig.imageUri`. The following Python versions are available: * Python '3.7' is available when `runtime_version` is set to '1.15' or later. * Python '3.5' is available when `runtime_version` is set to a version from '1.4' to '1.14'. * Python '2.7' is available when `runtime_version` is set to '1.15' or earlier. Read more about the Python versions available for [each runtime version](/ml-engine/docs/runtime-version-list)."
        },
        "region": {
          "type": "string",
          "description": "The region to run the training job in. See the [available regions](/ai-platform/training/docs/regions) for AI Platform Training."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "Optional. The AI Platform runtime version to use for training. You must either specify this field or specify `masterConfig.imageUri`. For more information, see the [runtime version list](/ai-platform/training/docs/runtime-version-list) and learn [how to manage runtime versions](/ai-platform/training/docs/versioning)."
        },
        "scaleTier": {
          "type": "string",
          "description": "Specifies the machine types, the number of replicas for workers and parameter servers."
        },
        "scheduling": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__SchedulingResponse",
          "description": "Optional. Scheduling options for a training job."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The email address of a service account to use when running the training appplication. You must have the `iam.serviceAccounts.actAs` permission for the specified service account. In addition, the AI Platform Training Google-managed service account must have the `roles/iam.serviceAccountAdmin` role for the specified service account. [Learn more about configuring a service account.](/ai-platform/training/docs/custom-service-account) If not specified, the AI Platform Training Google-managed service account is used by default."
        },
        "useChiefInTfConfig": {
          "type": "boolean",
          "description": "Optional. Use `chief` instead of `master` in the `TF_CONFIG` environment variable when training with a custom container. Defaults to `false`. [Learn more about this field.](/ai-platform/training/docs/distributed-training-details#chief-versus-master) This field has no effect for training jobs that don't use a custom container."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ReplicaConfigResponse",
          "description": "Optional. The configuration for workers. You should only set `workerConfig.acceleratorConfig` if `workerType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `workerConfig.imageUri` only if you build a custom image for your worker. If `workerConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
        },
        "workerCount": {
          "type": "string",
          "description": "Optional. The number of worker replicas to use for the training job. Each replica in the cluster will be of the type specified in `worker_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `worker_type`. The default value is zero."
        },
        "workerType": {
          "type": "string",
          "description": "Optional. Specifies the type of virtual machine to use for your training job's worker nodes. The supported values are the same as those described in the entry for `masterType`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. If you use `cloud_tpu` for this value, see special instructions for [configuring a custom TPU machine](/ml-engine/docs/tensorflow/using-tpus#configuring_a_custom_tpu_machine). This value must be present when `scaleTier` is set to `CUSTOM` and `workerCount` is greater than zero."
        }
      },
      "type": "object",
      "required": [
        "args",
        "enableWebAccess",
        "encryptionConfig",
        "evaluatorConfig",
        "evaluatorCount",
        "evaluatorType",
        "hyperparameters",
        "jobDir",
        "masterConfig",
        "masterType",
        "network",
        "packageUris",
        "parameterServerConfig",
        "parameterServerCount",
        "parameterServerType",
        "pythonModule",
        "pythonVersion",
        "region",
        "runtimeVersion",
        "scaleTier",
        "scheduling",
        "serviceAccount",
        "useChiefInTfConfig",
        "workerConfig",
        "workerCount",
        "workerType"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__TrainingInputScaleTier": {
      "description": "Required. Specifies the machine types, the number of replicas for workers and parameter servers.",
      "type": "string",
      "enum": [
        {
          "name": "Basic",
          "description": "A single worker instance. This tier is suitable for learning how to use Cloud ML, and for experimenting with new models using small datasets.",
          "value": "BASIC"
        },
        {
          "name": "Standard1",
          "description": "Many workers and a few parameter servers.",
          "value": "STANDARD_1"
        },
        {
          "name": "Premium1",
          "description": "A large number of workers with many parameter servers.",
          "value": "PREMIUM_1"
        },
        {
          "name": "BasicGpu",
          "description": "A single worker instance [with a GPU](/ai-platform/training/docs/using-gpus).",
          "value": "BASIC_GPU"
        },
        {
          "name": "BasicTpu",
          "description": "A single worker instance with a [Cloud TPU](/ml-engine/docs/tensorflow/using-tpus).",
          "value": "BASIC_TPU"
        },
        {
          "name": "Custom",
          "description": "The CUSTOM tier is not a set tier, but rather enables you to use your own cluster specification. When you use this tier, set values to configure your processing cluster according to these guidelines: * You _must_ set `TrainingInput.masterType` to specify the type of machine to use for your master node. This is the only required setting. * You _may_ set `TrainingInput.workerCount` to specify the number of workers to use. If you specify one or more workers, you _must_ also set `TrainingInput.workerType` to specify the type of machine to use for your worker nodes. * You _may_ set `TrainingInput.parameterServerCount` to specify the number of parameter servers to use. If you specify one or more parameter servers, you _must_ also set `TrainingInput.parameterServerType` to specify the type of machine to use for your parameter servers. Note that all of your workers must use the same machine type, which can be different from your parameter server type and master type. Your parameter servers must likewise use the same machine type, which can be different from your worker type and master type.",
          "value": "CUSTOM"
        }
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__TrainingOutput": {
      "description": "Represents results of a training job. Output only.",
      "properties": {
        "builtInAlgorithmOutput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__BuiltInAlgorithmOutput",
          "description": "Details related to built-in algorithms jobs. Only set for built-in algorithms jobs."
        },
        "completedTrialCount": {
          "type": "string",
          "description": "The number of hyperparameter tuning trials that completed successfully. Only set for hyperparameter tuning jobs."
        },
        "consumedMLUnits": {
          "type": "number",
          "description": "The amount of ML units consumed by the job."
        },
        "hyperparameterMetricTag": {
          "type": "string",
          "description": "The TensorFlow summary tag name used for optimizing hyperparameter tuning trials. See [`HyperparameterSpec.hyperparameterMetricTag`](#HyperparameterSpec.FIELDS.hyperparameter_metric_tag) for more information. Only set for hyperparameter tuning jobs."
        },
        "isBuiltInAlgorithmJob": {
          "type": "boolean",
          "description": "Whether this job is a built-in Algorithm job."
        },
        "isHyperparameterTuningJob": {
          "type": "boolean",
          "description": "Whether this job is a hyperparameter tuning job."
        },
        "trials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__HyperparameterOutput"
          },
          "description": "Results for individual Hyperparameter trials. Only set for hyperparameter tuning jobs."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__TrainingOutputResponse": {
      "description": "Represents results of a training job. Output only.",
      "properties": {
        "builtInAlgorithmOutput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__BuiltInAlgorithmOutputResponse",
          "description": "Details related to built-in algorithms jobs. Only set for built-in algorithms jobs."
        },
        "completedTrialCount": {
          "type": "string",
          "description": "The number of hyperparameter tuning trials that completed successfully. Only set for hyperparameter tuning jobs."
        },
        "consumedMLUnits": {
          "type": "number",
          "description": "The amount of ML units consumed by the job."
        },
        "hyperparameterMetricTag": {
          "type": "string",
          "description": "The TensorFlow summary tag name used for optimizing hyperparameter tuning trials. See [`HyperparameterSpec.hyperparameterMetricTag`](#HyperparameterSpec.FIELDS.hyperparameter_metric_tag) for more information. Only set for hyperparameter tuning jobs."
        },
        "isBuiltInAlgorithmJob": {
          "type": "boolean",
          "description": "Whether this job is a built-in Algorithm job."
        },
        "isHyperparameterTuningJob": {
          "type": "boolean",
          "description": "Whether this job is a hyperparameter tuning job."
        },
        "trials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__HyperparameterOutputResponse"
          },
          "description": "Results for individual Hyperparameter trials. Only set for hyperparameter tuning jobs."
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/ai-platform/training/docs/monitor-debug-interactive-shell) (one URI for each training node). Only available if training_input.enable_web_access is `true`. The keys are names of each node in the training job; for example, `master-replica-0` for the master node, `worker-replica-0` for the first worker, and `ps-replica-0` for the first parameter server. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object",
      "required": [
        "builtInAlgorithmOutput",
        "completedTrialCount",
        "consumedMLUnits",
        "hyperparameterMetricTag",
        "isBuiltInAlgorithmJob",
        "isHyperparameterTuningJob",
        "trials",
        "webAccessUris"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__VersionResponse": {
      "description": "Represents a version of the model. Each version is a trained model deployed in the cloud, ready to handle prediction requests. A model can have multiple versions. You can get information about all of the versions of a given model by calling projects.models.versions.list.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AcceleratorConfigResponse",
          "description": "Optional. Accelerator config for using GPUs for online prediction (beta). Only specify this field if you have specified a Compute Engine (N1) machine type in the `machineType` field. Learn more about [using GPUs for online prediction](/ml-engine/docs/machine-types-online-prediction#gpus)."
        },
        "autoScaling": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AutoScalingResponse",
          "description": "Automatically scale the number of nodes used to serve the model in response to increases and decreases in traffic. Care should be taken to ramp up traffic according to the model's ability to scale or you will start seeing increases in latency and 429 response codes."
        },
        "container": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ContainerSpecResponse",
          "description": "Optional. Specifies a custom container to use for serving predictions. If you specify this field, then `machineType` is required. If you specify this field, then `deploymentUri` is optional. If you specify this field, then you must not specify `runtimeVersion`, `packageUris`, `framework`, `pythonVersion`, or `predictionClass`."
        },
        "createTime": {
          "type": "string",
          "description": "The time the version was created."
        },
        "deploymentUri": {
          "type": "string",
          "description": "The Cloud Storage URI of a directory containing trained model artifacts to be used to create the model version. See the [guide to deploying models](/ai-platform/prediction/docs/deploying-models) for more information. The total number of files under this directory must not exceed 1000. During projects.models.versions.create, AI Platform Prediction copies all files from the specified directory to a location managed by the service. From then on, AI Platform Prediction uses these copies of the model artifacts to serve predictions, not the original files in Cloud Storage, so this location is useful only as a historical record. If you specify container, then this field is optional. Otherwise, it is required. Learn [how to use this field with a custom container](/ai-platform/prediction/docs/custom-container-requirements#artifacts)."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description specified for the version when it was created."
        },
        "errorMessage": {
          "type": "string",
          "description": "The details of a failure or a cancellation."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetVersion`, and systems are expected to put that etag in the request to `UpdateVersion` to ensure that their change will be applied to the model as intended."
        },
        "explanationConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ExplanationConfigResponse",
          "description": "Optional. Configures explainability features on the model's version. Some explanation features require additional metadata to be loaded as part of the model payload."
        },
        "framework": {
          "type": "string",
          "description": "Optional. The machine learning framework AI Platform uses to train this version of the model. Valid values are `TENSORFLOW`, `SCIKIT_LEARN`, `XGBOOST`. If you do not specify a framework, AI Platform will analyze files in the deployment_uri to determine a framework. If you choose `SCIKIT_LEARN` or `XGBOOST`, you must also set the runtime version of the model to 1.4 or greater. Do **not** specify a framework if you're deploying a [custom prediction routine](/ai-platform/prediction/docs/custom-prediction-routines) or if you're using a [custom container](/ai-platform/prediction/docs/use-custom-container)."
        },
        "isDefault": {
          "type": "boolean",
          "description": "If true, this version will be used to handle prediction requests that do not specify a version. You can change the default version by calling projects.methods.versions.setDefault."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. One or more labels that you can add, to organize your model versions. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models."
        },
        "lastMigrationModelId": {
          "type": "string",
          "description": "The [AI Platform (Unified) `Model`](https://cloud.google.com/ai-platform-unified/docs/reference/rest/v1beta1/projects.locations.models) ID for the last [model migration](https://cloud.google.com/ai-platform-unified/docs/start/migrating-to-ai-platform-unified)."
        },
        "lastMigrationTime": {
          "type": "string",
          "description": "The last time this version was successfully [migrated to AI Platform (Unified)](https://cloud.google.com/ai-platform-unified/docs/start/migrating-to-ai-platform-unified)."
        },
        "lastUseTime": {
          "type": "string",
          "description": "The time the version was last used for prediction."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The type of machine on which to serve the model. Currently only applies to online prediction service. To learn about valid values for this field, read [Choosing a machine type for online prediction](/ai-platform/prediction/docs/machine-types-online-prediction). If this field is not specified and you are using a [regional endpoint](/ai-platform/prediction/docs/regional-endpoints), then the machine type defaults to `n1-standard-2`. If this field is not specified and you are using the global endpoint (`ml.googleapis.com`), then the machine type defaults to `mls1-c1-m2`."
        },
        "manualScaling": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ManualScalingResponse",
          "description": "Manually select the number of nodes to use for serving the model. You should generally use `auto_scaling` with an appropriate `min_nodes` instead, but this option is available if you want more predictable billing. Beware that latency and error rates will increase if the traffic exceeds that capability of the system to serve it based on the selected number of nodes."
        },
        "name": {
          "type": "string",
          "description": "The name specified for the version when it was created. The version name must be unique within the model it is created in."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage paths (`gs://…`) of packages for [custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines) or [scikit-learn pipelines with custom code](/ml-engine/docs/scikit/exporting-for-prediction#custom-pipeline-code). For a custom prediction routine, one of these packages must contain your Predictor class (see [`predictionClass`](#Version.FIELDS.prediction_class)). Additionally, include any dependencies used by your Predictor or scikit-learn pipeline uses that are not already included in your selected [runtime version](/ml-engine/docs/tensorflow/runtime-version-list). If you specify this field, you must also set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater."
        },
        "predictionClass": {
          "type": "string",
          "description": "Optional. The fully qualified name (module_name.class_name) of a class that implements the Predictor interface described in this reference field. The module containing this class should be included in a package provided to the [`packageUris` field](#Version.FIELDS.package_uris). Specify this field if and only if you are deploying a [custom prediction routine (beta)](/ml-engine/docs/tensorflow/custom-prediction-routines). If you specify this field, you must set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater and you must set `machineType` to a [legacy (MLS1) machine type](/ml-engine/docs/machine-types-online-prediction). The following code sample provides the Predictor interface: class Predictor(object): \"\"\"Interface for constructing custom predictors.\"\"\" def predict(self, instances, **kwargs): \"\"\"Performs custom prediction. Instances are the decoded values from the request. They have already been deserialized from JSON. Args: instances: A list of prediction input instances. **kwargs: A dictionary of keyword args provided as additional fields on the predict request body. Returns: A list of outputs containing the prediction results. This list must be JSON serializable. \"\"\" raise NotImplementedError() @classmethod def from_path(cls, model_dir): \"\"\"Creates an instance of Predictor using the given path. Loading of the predictor should be done in this method. Args: model_dir: The local directory that contains the exported model file along with any additional files uploaded when creating the version resource. Returns: An instance implementing this Predictor class. \"\"\" raise NotImplementedError() Learn more about [the Predictor interface and custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines)."
        },
        "pythonVersion": {
          "type": "string",
          "description": "The version of Python used in prediction. The following Python versions are available: * Python '3.7' is available when `runtime_version` is set to '1.15' or later. * Python '3.5' is available when `runtime_version` is set to a version from '1.4' to '1.14'. * Python '2.7' is available when `runtime_version` is set to '1.15' or earlier. Read more about the Python versions available for [each runtime version](/ml-engine/docs/runtime-version-list)."
        },
        "requestLoggingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__RequestLoggingConfigResponse",
          "description": "Optional. *Only* specify this field in a projects.models.versions.patch request. Specifying it in a projects.models.versions.create request has no effect. Configures the request-response pair logging on predictions from this Version."
        },
        "routes": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__RouteMapResponse",
          "description": "Optional. Specifies paths on a custom container's HTTP server where AI Platform Prediction sends certain requests. If you specify this field, then you must also specify the `container` field. If you specify the `container` field and do not specify this field, it defaults to the following: ```json { \"predict\": \"/v1/models/MODEL/versions/VERSION:predict\", \"health\": \"/v1/models/MODEL/versions/VERSION\" } ``` See RouteMap for more details about these default values."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The AI Platform runtime version to use for this deployment. For more information, see the [runtime version list](/ml-engine/docs/runtime-version-list) and [how to manage runtime versions](/ml-engine/docs/versioning)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Specifies the service account for resource access control. If you specify this field, then you must also specify either the `containerSpec` or the `predictionClass` field. Learn more about [using a custom service account](/ai-platform/prediction/docs/custom-service-account)."
        },
        "state": {
          "type": "string",
          "description": "The state of a version."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "autoScaling",
        "container",
        "createTime",
        "deploymentUri",
        "description",
        "errorMessage",
        "etag",
        "explanationConfig",
        "framework",
        "isDefault",
        "labels",
        "lastMigrationModelId",
        "lastMigrationTime",
        "lastUseTime",
        "machineType",
        "manualScaling",
        "name",
        "packageUris",
        "predictionClass",
        "pythonVersion",
        "requestLoggingConfig",
        "routes",
        "runtimeVersion",
        "serviceAccount",
        "state"
      ]
    },
    "google-native:ml/v1:GoogleCloudMlV1__XraiAttribution": {
      "description": "Attributes credit by computing the XRAI taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Currently only implemented for models with natural image inputs.",
      "properties": {
        "numIntegralSteps": {
          "type": "integer",
          "description": "Number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleCloudMlV1__XraiAttributionResponse": {
      "description": "Attributes credit by computing the XRAI taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Currently only implemented for models with natural image inputs.",
      "properties": {
        "numIntegralSteps": {
          "type": "integer",
          "description": "Number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range."
        }
      },
      "type": "object",
      "required": [
        "numIntegralSteps"
      ]
    },
    "google-native:ml/v1:GoogleIamV1__AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleIamV1__AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:ml/v1:GoogleIamV1__AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleIamV1__AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:ml/v1:GoogleIamV1__AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:ml/v1:GoogleIamV1__Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleType__Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleIamV1__BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleType__ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:ml/v1:GoogleType__Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:ml/v1:GoogleType__ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:ml/v1:TrialState": {
      "description": "The detailed state of a trial.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "The trial state is unspecified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Requested",
          "description": "Indicates that a specific trial has been requested, but it has not yet been suggested by the service.",
          "value": "REQUESTED"
        },
        {
          "name": "Active",
          "description": "Indicates that the trial has been suggested.",
          "value": "ACTIVE"
        },
        {
          "name": "Completed",
          "description": "Indicates that the trial is done, and either has a final_measurement set, or is marked as trial_infeasible.",
          "value": "COMPLETED"
        },
        {
          "name": "Stopping",
          "description": "Indicates that the trial should stop according to the service.",
          "value": "STOPPING"
        }
      ]
    },
    "google-native:ml/v1:VersionFramework": {
      "description": "Optional. The machine learning framework AI Platform uses to train this version of the model. Valid values are `TENSORFLOW`, `SCIKIT_LEARN`, `XGBOOST`. If you do not specify a framework, AI Platform will analyze files in the deployment_uri to determine a framework. If you choose `SCIKIT_LEARN` or `XGBOOST`, you must also set the runtime version of the model to 1.4 or greater. Do **not** specify a framework if you're deploying a [custom prediction routine](/ai-platform/prediction/docs/custom-prediction-routines) or if you're using a [custom container](/ai-platform/prediction/docs/use-custom-container).",
      "type": "string",
      "enum": [
        {
          "name": "FrameworkUnspecified",
          "description": "Unspecified framework. Assigns a value based on the file suffix.",
          "value": "FRAMEWORK_UNSPECIFIED"
        },
        {
          "name": "Tensorflow",
          "description": "Tensorflow framework.",
          "value": "TENSORFLOW"
        },
        {
          "name": "ScikitLearn",
          "description": "Scikit-learn framework.",
          "value": "SCIKIT_LEARN"
        },
        {
          "name": "Xgboost",
          "description": "XGBoost framework.",
          "value": "XGBOOST"
        }
      ]
    },
    "google-native:monitoring/v1:Aggregation": {
      "description": "Describes how to combine multiple time series to provide a different view of the data. Aggregation of time series is done in two steps. First, each time series in the set is aligned to the same time interval boundaries, then the set of time series is optionally reduced in number.Alignment consists of applying the per_series_aligner operation to each time series after its data has been divided into regular alignment_period time intervals. This process takes all of the data points in an alignment period, applies a mathematical transformation such as averaging, minimum, maximum, delta, etc., and converts them into a single data point per period.Reduction is when the aligned and transformed time series can optionally be combined, reducing the number of time series through similar mathematical transformations. Reduction involves applying a cross_series_reducer to all the time series, optionally sorting the time series into subsets with group_by_fields, and applying the reducer to each subset.The raw time series data can contain a huge amount of information from multiple sources. Alignment and reduction transforms this mass of data into a more manageable and representative collection of data, for example \"the 95% latency across the average of all tasks in a cluster\". This representative data can be more easily graphed and comprehended, and the individual time series data is still available for later drilldown. For more details, see Filtering and aggregation (https://cloud.google.com/monitoring/api/v3/aggregation).",
      "properties": {
        "alignmentPeriod": {
          "type": "string",
          "description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 2 years, or 104 weeks."
        },
        "crossSeriesReducer": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationCrossSeriesReducer",
          "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned."
        },
        "groupByFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored."
        },
        "perSeriesAligner": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationPerSeriesAligner",
          "description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:AggregationCrossSeriesReducer": {
      "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
      "type": "string",
      "enum": [
        {
          "name": "ReduceNone",
          "description": "No cross-time series reduction. The output of the Aligner is returned.",
          "value": "REDUCE_NONE"
        },
        {
          "name": "ReduceMean",
          "description": "Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
          "value": "REDUCE_MEAN"
        },
        {
          "name": "ReduceMin",
          "description": "Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
          "value": "REDUCE_MIN"
        },
        {
          "name": "ReduceMax",
          "description": "Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
          "value": "REDUCE_MAX"
        },
        {
          "name": "ReduceSum",
          "description": "Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
          "value": "REDUCE_SUM"
        },
        {
          "name": "ReduceStddev",
          "description": "Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
          "value": "REDUCE_STDDEV"
        },
        {
          "name": "ReduceCount",
          "description": "Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
          "value": "REDUCE_COUNT"
        },
        {
          "name": "ReduceCountTrue",
          "description": "Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
          "value": "REDUCE_COUNT_TRUE"
        },
        {
          "name": "ReduceCountFalse",
          "description": "Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
          "value": "REDUCE_COUNT_FALSE"
        },
        {
          "name": "ReduceFractionTrue",
          "description": "Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
          "value": "REDUCE_FRACTION_TRUE"
        },
        {
          "name": "ReducePercentile99",
          "description": "Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
          "value": "REDUCE_PERCENTILE_99"
        },
        {
          "name": "ReducePercentile95",
          "description": "Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
          "value": "REDUCE_PERCENTILE_95"
        },
        {
          "name": "ReducePercentile50",
          "description": "Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
          "value": "REDUCE_PERCENTILE_50"
        },
        {
          "name": "ReducePercentile05",
          "description": "Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
          "value": "REDUCE_PERCENTILE_05"
        }
      ]
    },
    "google-native:monitoring/v1:AggregationFunction": {
      "description": "Preview: An identifier for an aggregation function. Aggregation functions are SQL functions that group or transform data from multiple points to a single point. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Parameter"
          },
          "description": "Optional. Parameters applied to the aggregation function. Only used for functions that require them."
        },
        "type": {
          "type": "string",
          "description": "The type of aggregation function, must be one of the following: \"none\" - no function. \"percentile\" - APPROX_QUANTILES() - 1 parameter numeric value \"average\" - AVG() \"count\" - COUNT() \"count-distinct\" - COUNT(DISTINCT) \"count-distinct-approx\" - APPROX_COUNT_DISTINCT() \"max\" - MAX() \"min\" - MIN() \"sum\" - SUM()"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:monitoring/v1:AggregationFunctionResponse": {
      "description": "Preview: An identifier for an aggregation function. Aggregation functions are SQL functions that group or transform data from multiple points to a single point. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:ParameterResponse"
          },
          "description": "Optional. Parameters applied to the aggregation function. Only used for functions that require them."
        },
        "type": {
          "type": "string",
          "description": "The type of aggregation function, must be one of the following: \"none\" - no function. \"percentile\" - APPROX_QUANTILES() - 1 parameter numeric value \"average\" - AVG() \"count\" - COUNT() \"count-distinct\" - COUNT(DISTINCT) \"count-distinct-approx\" - APPROX_COUNT_DISTINCT() \"max\" - MAX() \"min\" - MIN() \"sum\" - SUM()"
        }
      },
      "type": "object",
      "required": [
        "parameters",
        "type"
      ]
    },
    "google-native:monitoring/v1:AggregationPerSeriesAligner": {
      "description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
      "type": "string",
      "enum": [
        {
          "name": "AlignNone",
          "description": "No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
          "value": "ALIGN_NONE"
        },
        {
          "name": "AlignDelta",
          "description": "Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_DELTA"
        },
        {
          "name": "AlignRate",
          "description": "Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
          "value": "ALIGN_RATE"
        },
        {
          "name": "AlignInterpolate",
          "description": "Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_INTERPOLATE"
        },
        {
          "name": "AlignNextOlder",
          "description": "Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_NEXT_OLDER"
        },
        {
          "name": "AlignMin",
          "description": "Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_MIN"
        },
        {
          "name": "AlignMax",
          "description": "Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_MAX"
        },
        {
          "name": "AlignMean",
          "description": "Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
          "value": "ALIGN_MEAN"
        },
        {
          "name": "AlignCount",
          "description": "Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
          "value": "ALIGN_COUNT"
        },
        {
          "name": "AlignSum",
          "description": "Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_SUM"
        },
        {
          "name": "AlignStddev",
          "description": "Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
          "value": "ALIGN_STDDEV"
        },
        {
          "name": "AlignCountTrue",
          "description": "Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
          "value": "ALIGN_COUNT_TRUE"
        },
        {
          "name": "AlignCountFalse",
          "description": "Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
          "value": "ALIGN_COUNT_FALSE"
        },
        {
          "name": "AlignFractionTrue",
          "description": "Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
          "value": "ALIGN_FRACTION_TRUE"
        },
        {
          "name": "AlignPercentile99",
          "description": "Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENTILE_99"
        },
        {
          "name": "AlignPercentile95",
          "description": "Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENTILE_95"
        },
        {
          "name": "AlignPercentile50",
          "description": "Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENTILE_50"
        },
        {
          "name": "AlignPercentile05",
          "description": "Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENTILE_05"
        },
        {
          "name": "AlignPercentChange",
          "description": "Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENT_CHANGE"
        }
      ]
    },
    "google-native:monitoring/v1:AggregationResponse": {
      "description": "Describes how to combine multiple time series to provide a different view of the data. Aggregation of time series is done in two steps. First, each time series in the set is aligned to the same time interval boundaries, then the set of time series is optionally reduced in number.Alignment consists of applying the per_series_aligner operation to each time series after its data has been divided into regular alignment_period time intervals. This process takes all of the data points in an alignment period, applies a mathematical transformation such as averaging, minimum, maximum, delta, etc., and converts them into a single data point per period.Reduction is when the aligned and transformed time series can optionally be combined, reducing the number of time series through similar mathematical transformations. Reduction involves applying a cross_series_reducer to all the time series, optionally sorting the time series into subsets with group_by_fields, and applying the reducer to each subset.The raw time series data can contain a huge amount of information from multiple sources. Alignment and reduction transforms this mass of data into a more manageable and representative collection of data, for example \"the 95% latency across the average of all tasks in a cluster\". This representative data can be more easily graphed and comprehended, and the individual time series data is still available for later drilldown. For more details, see Filtering and aggregation (https://cloud.google.com/monitoring/api/v3/aggregation).",
      "properties": {
        "alignmentPeriod": {
          "type": "string",
          "description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 2 years, or 104 weeks."
        },
        "crossSeriesReducer": {
          "type": "string",
          "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned."
        },
        "groupByFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored."
        },
        "perSeriesAligner": {
          "type": "string",
          "description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned."
        }
      },
      "type": "object",
      "required": [
        "alignmentPeriod",
        "crossSeriesReducer",
        "groupByFields",
        "perSeriesAligner"
      ]
    },
    "google-native:monitoring/v1:AlertChart": {
      "description": "A chart that displays alert policy data.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The resource name of the alert policy. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] "
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:monitoring/v1:AlertChartResponse": {
      "description": "A chart that displays alert policy data.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The resource name of the alert policy. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] "
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:monitoring/v1:Axis": {
      "description": "A chart axis.",
      "properties": {
        "label": {
          "type": "string",
          "description": "The label of the axis."
        },
        "scale": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AxisScale",
          "description": "The axis scale. By default, a linear scale is used."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:AxisResponse": {
      "description": "A chart axis.",
      "properties": {
        "label": {
          "type": "string",
          "description": "The label of the axis."
        },
        "scale": {
          "type": "string",
          "description": "The axis scale. By default, a linear scale is used."
        }
      },
      "type": "object",
      "required": [
        "label",
        "scale"
      ]
    },
    "google-native:monitoring/v1:AxisScale": {
      "description": "The axis scale. By default, a linear scale is used.",
      "type": "string",
      "enum": [
        {
          "name": "ScaleUnspecified",
          "description": "Scale is unspecified. The view will default to LINEAR.",
          "value": "SCALE_UNSPECIFIED"
        },
        {
          "name": "Linear",
          "description": "Linear scale.",
          "value": "LINEAR"
        },
        {
          "name": "Log10",
          "description": "Logarithmic scale (base 10).",
          "value": "LOG10"
        }
      ]
    },
    "google-native:monitoring/v1:Breakdown": {
      "description": "Preview: A breakdown is an aggregation applied to the measures over a specified column. A breakdown can result in multiple series across a category for the provided measure. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "aggregationFunction": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationFunction",
          "description": "The Aggregation function is applied across all data in each breakdown created."
        },
        "column": {
          "type": "string",
          "description": "The name of the column in the dataset containing the breakdown values."
        },
        "limit": {
          "type": "integer",
          "description": "A limit to the number of breakdowns. If set to zero then all possible breakdowns are applied. The list of breakdowns is dependent on the value of the sort_order field."
        },
        "sortOrder": {
          "$ref": "#/types/google-native:monitoring%2Fv1:BreakdownSortOrder",
          "description": "The sort order is applied to the values of the breakdown column."
        }
      },
      "type": "object",
      "required": [
        "aggregationFunction",
        "column",
        "limit",
        "sortOrder"
      ]
    },
    "google-native:monitoring/v1:BreakdownResponse": {
      "description": "Preview: A breakdown is an aggregation applied to the measures over a specified column. A breakdown can result in multiple series across a category for the provided measure. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "aggregationFunction": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationFunctionResponse",
          "description": "The Aggregation function is applied across all data in each breakdown created."
        },
        "column": {
          "type": "string",
          "description": "The name of the column in the dataset containing the breakdown values."
        },
        "limit": {
          "type": "integer",
          "description": "A limit to the number of breakdowns. If set to zero then all possible breakdowns are applied. The list of breakdowns is dependent on the value of the sort_order field."
        },
        "sortOrder": {
          "type": "string",
          "description": "The sort order is applied to the values of the breakdown column."
        }
      },
      "type": "object",
      "required": [
        "aggregationFunction",
        "column",
        "limit",
        "sortOrder"
      ]
    },
    "google-native:monitoring/v1:BreakdownSortOrder": {
      "description": "Required. The sort order is applied to the values of the breakdown column.",
      "type": "string",
      "enum": [
        {
          "name": "SortOrderUnspecified",
          "description": "An unspecified sort order. This option is invalid when sorting is required.",
          "value": "SORT_ORDER_UNSPECIFIED"
        },
        {
          "name": "SortOrderNone",
          "description": "No sorting is applied.",
          "value": "SORT_ORDER_NONE"
        },
        {
          "name": "SortOrderAscending",
          "description": "The lowest-valued entries are selected first.",
          "value": "SORT_ORDER_ASCENDING"
        },
        {
          "name": "SortOrderDescending",
          "description": "The highest-valued entries are selected first.",
          "value": "SORT_ORDER_DESCENDING"
        }
      ]
    },
    "google-native:monitoring/v1:ChartOptions": {
      "description": "Options to control visual rendering of a chart.",
      "properties": {
        "displayHorizontal": {
          "type": "boolean",
          "description": "Preview: Configures whether the charted values are shown on the horizontal or vertical axis. By default, values are represented the vertical axis. This is a preview feature and may be subject to change before final release."
        },
        "mode": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ChartOptionsMode",
          "description": "The chart mode."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:ChartOptionsMode": {
      "description": "The chart mode.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Mode is unspecified. The view will default to COLOR.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Color",
          "description": "The chart distinguishes data series using different color. Line colors may get reused when there are many lines in the chart.",
          "value": "COLOR"
        },
        {
          "name": "XRay",
          "description": "The chart uses the Stackdriver x-ray mode, in which each data set is plotted using the same semi-transparent color.",
          "value": "X_RAY"
        },
        {
          "name": "Stats",
          "description": "The chart displays statistics such as average, median, 95th percentile, and more.",
          "value": "STATS"
        }
      ]
    },
    "google-native:monitoring/v1:ChartOptionsResponse": {
      "description": "Options to control visual rendering of a chart.",
      "properties": {
        "displayHorizontal": {
          "type": "boolean",
          "description": "Preview: Configures whether the charted values are shown on the horizontal or vertical axis. By default, values are represented the vertical axis. This is a preview feature and may be subject to change before final release."
        },
        "mode": {
          "type": "string",
          "description": "The chart mode."
        }
      },
      "type": "object",
      "required": [
        "displayHorizontal",
        "mode"
      ]
    },
    "google-native:monitoring/v1:CollapsibleGroup": {
      "description": "A widget that groups the other widgets. All widgets that are within the area spanned by the grouping widget are considered member widgets.",
      "properties": {
        "collapsed": {
          "type": "boolean",
          "description": "The collapsed state of the widget on first page load."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:CollapsibleGroupResponse": {
      "description": "A widget that groups the other widgets. All widgets that are within the area spanned by the grouping widget are considered member widgets.",
      "properties": {
        "collapsed": {
          "type": "boolean",
          "description": "The collapsed state of the widget on first page load."
        }
      },
      "type": "object",
      "required": [
        "collapsed"
      ]
    },
    "google-native:monitoring/v1:Column": {
      "description": "Defines the layout properties and content for a column.",
      "properties": {
        "weight": {
          "type": "string",
          "description": "The relative weight of this column. The column weight is used to adjust the width of columns on the screen (relative to peers). Greater the weight, greater the width of the column on the screen. If omitted, a value of 1 is used while rendering."
        },
        "widgets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Widget"
          },
          "description": "The display widgets arranged vertically in this column."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:ColumnLayout": {
      "description": "A simplified layout that divides the available space into vertical columns and arranges a set of widgets vertically in each column.",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Column"
          },
          "description": "The columns of content to display."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:ColumnLayoutResponse": {
      "description": "A simplified layout that divides the available space into vertical columns and arranges a set of widgets vertically in each column.",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:ColumnResponse"
          },
          "description": "The columns of content to display."
        }
      },
      "type": "object",
      "required": [
        "columns"
      ]
    },
    "google-native:monitoring/v1:ColumnResponse": {
      "description": "Defines the layout properties and content for a column.",
      "properties": {
        "weight": {
          "type": "string",
          "description": "The relative weight of this column. The column weight is used to adjust the width of columns on the screen (relative to peers). Greater the weight, greater the width of the column on the screen. If omitted, a value of 1 is used while rendering."
        },
        "widgets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:WidgetResponse"
          },
          "description": "The display widgets arranged vertically in this column."
        }
      },
      "type": "object",
      "required": [
        "weight",
        "widgets"
      ]
    },
    "google-native:monitoring/v1:ColumnSettings": {
      "description": "The persistent settings for a table's columns.",
      "properties": {
        "column": {
          "type": "string",
          "description": "The id of the column."
        },
        "visible": {
          "type": "boolean",
          "description": "Whether the column should be visible on page load."
        }
      },
      "type": "object",
      "required": [
        "column",
        "visible"
      ]
    },
    "google-native:monitoring/v1:ColumnSettingsResponse": {
      "description": "The persistent settings for a table's columns.",
      "properties": {
        "column": {
          "type": "string",
          "description": "The id of the column."
        },
        "visible": {
          "type": "boolean",
          "description": "Whether the column should be visible on page load."
        }
      },
      "type": "object",
      "required": [
        "column",
        "visible"
      ]
    },
    "google-native:monitoring/v1:DashboardFilter": {
      "description": "A filter to reduce the amount of data charted in relevant widgets.",
      "properties": {
        "filterType": {
          "$ref": "#/types/google-native:monitoring%2Fv1:DashboardFilterFilterType",
          "description": "The specified filter type"
        },
        "labelKey": {
          "type": "string",
          "description": "The key for the label"
        },
        "stringValue": {
          "type": "string",
          "description": "A variable-length string value."
        },
        "templateVariable": {
          "type": "string",
          "description": "The placeholder text that can be referenced in a filter string or MQL query. If omitted, the dashboard filter will be applied to all relevant widgets in the dashboard."
        }
      },
      "type": "object",
      "required": [
        "labelKey"
      ]
    },
    "google-native:monitoring/v1:DashboardFilterFilterType": {
      "description": "The specified filter type",
      "type": "string",
      "enum": [
        {
          "name": "FilterTypeUnspecified",
          "description": "Filter type is unspecified. This is not valid in a well-formed request.",
          "value": "FILTER_TYPE_UNSPECIFIED"
        },
        {
          "name": "ResourceLabel",
          "description": "Filter on a resource label value",
          "value": "RESOURCE_LABEL"
        },
        {
          "name": "MetricLabel",
          "description": "Filter on a metrics label value",
          "value": "METRIC_LABEL"
        },
        {
          "name": "UserMetadataLabel",
          "description": "Filter on a user metadata label value",
          "value": "USER_METADATA_LABEL"
        },
        {
          "name": "SystemMetadataLabel",
          "description": "Filter on a system metadata label value",
          "value": "SYSTEM_METADATA_LABEL"
        },
        {
          "name": "Group",
          "description": "Filter on a group id",
          "value": "GROUP"
        }
      ]
    },
    "google-native:monitoring/v1:DashboardFilterResponse": {
      "description": "A filter to reduce the amount of data charted in relevant widgets.",
      "properties": {
        "filterType": {
          "type": "string",
          "description": "The specified filter type"
        },
        "labelKey": {
          "type": "string",
          "description": "The key for the label"
        },
        "stringValue": {
          "type": "string",
          "description": "A variable-length string value."
        },
        "templateVariable": {
          "type": "string",
          "description": "The placeholder text that can be referenced in a filter string or MQL query. If omitted, the dashboard filter will be applied to all relevant widgets in the dashboard."
        }
      },
      "type": "object",
      "required": [
        "filterType",
        "labelKey",
        "stringValue",
        "templateVariable"
      ]
    },
    "google-native:monitoring/v1:DataSet": {
      "description": "Groups a time series query definition with charting options.",
      "properties": {
        "breakdowns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Breakdown"
          },
          "description": "Optional. The collection of breakdowns to be applied to the dataset."
        },
        "dimensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Dimension"
          },
          "description": "Optional. A collection of dimension columns."
        },
        "legendTemplate": {
          "type": "string",
          "description": "A template string for naming TimeSeries in the resulting data set. This should be a string with interpolations of the form ${label_name}, which will resolve to the label's value."
        },
        "measures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Measure"
          },
          "description": "Optional. A collection of measures."
        },
        "minAlignmentPeriod": {
          "type": "string",
          "description": "Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the min_alignment_period should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals."
        },
        "plotType": {
          "$ref": "#/types/google-native:monitoring%2Fv1:DataSetPlotType",
          "description": "How this data should be plotted on the chart."
        },
        "targetAxis": {
          "$ref": "#/types/google-native:monitoring%2Fv1:DataSetTargetAxis",
          "description": "Optional. The target axis to use for plotting the metric."
        },
        "timeSeriesQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesQuery",
          "description": "Fields for querying time series data from the Stackdriver metrics API."
        }
      },
      "type": "object",
      "required": [
        "timeSeriesQuery"
      ]
    },
    "google-native:monitoring/v1:DataSetPlotType": {
      "description": "How this data should be plotted on the chart.",
      "type": "string",
      "enum": [
        {
          "name": "PlotTypeUnspecified",
          "description": "Plot type is unspecified. The view will default to LINE.",
          "value": "PLOT_TYPE_UNSPECIFIED"
        },
        {
          "name": "Line",
          "description": "The data is plotted as a set of lines (one line per series).",
          "value": "LINE"
        },
        {
          "name": "StackedArea",
          "description": "The data is plotted as a set of filled areas (one area per series), with the areas stacked vertically (the base of each area is the top of its predecessor, and the base of the first area is the x-axis). Since the areas do not overlap, each is filled with a different opaque color.",
          "value": "STACKED_AREA"
        },
        {
          "name": "StackedBar",
          "description": "The data is plotted as a set of rectangular boxes (one box per series), with the boxes stacked vertically (the base of each box is the top of its predecessor, and the base of the first box is the x-axis). Since the boxes do not overlap, each is filled with a different opaque color.",
          "value": "STACKED_BAR"
        },
        {
          "name": "Heatmap",
          "description": "The data is plotted as a heatmap. The series being plotted must have a DISTRIBUTION value type. The value of each bucket in the distribution is displayed as a color. This type is not currently available in the Stackdriver Monitoring application.",
          "value": "HEATMAP"
        }
      ]
    },
    "google-native:monitoring/v1:DataSetResponse": {
      "description": "Groups a time series query definition with charting options.",
      "properties": {
        "breakdowns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:BreakdownResponse"
          },
          "description": "Optional. The collection of breakdowns to be applied to the dataset."
        },
        "dimensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:DimensionResponse"
          },
          "description": "Optional. A collection of dimension columns."
        },
        "legendTemplate": {
          "type": "string",
          "description": "A template string for naming TimeSeries in the resulting data set. This should be a string with interpolations of the form ${label_name}, which will resolve to the label's value."
        },
        "measures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:MeasureResponse"
          },
          "description": "Optional. A collection of measures."
        },
        "minAlignmentPeriod": {
          "type": "string",
          "description": "Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the min_alignment_period should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals."
        },
        "plotType": {
          "type": "string",
          "description": "How this data should be plotted on the chart."
        },
        "targetAxis": {
          "type": "string",
          "description": "Optional. The target axis to use for plotting the metric."
        },
        "timeSeriesQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesQueryResponse",
          "description": "Fields for querying time series data from the Stackdriver metrics API."
        }
      },
      "type": "object",
      "required": [
        "breakdowns",
        "dimensions",
        "legendTemplate",
        "measures",
        "minAlignmentPeriod",
        "plotType",
        "targetAxis",
        "timeSeriesQuery"
      ]
    },
    "google-native:monitoring/v1:DataSetTargetAxis": {
      "description": "Optional. The target axis to use for plotting the metric.",
      "type": "string",
      "enum": [
        {
          "name": "TargetAxisUnspecified",
          "description": "The target axis was not specified. Defaults to Y1.",
          "value": "TARGET_AXIS_UNSPECIFIED"
        },
        {
          "name": "Y1",
          "description": "The y_axis (the right axis of chart).",
          "value": "Y1"
        },
        {
          "name": "Y2",
          "description": "The y2_axis (the left axis of chart).",
          "value": "Y2"
        }
      ]
    },
    "google-native:monitoring/v1:Dimension": {
      "description": "Preview: A chart dimension for an SQL query. This is applied over the x-axis. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "column": {
          "type": "string",
          "description": "The name of the column in the source SQL query that is used to chart the dimension."
        },
        "columnType": {
          "type": "string",
          "description": "Optional. The type of the dimension column. This is relevant only if one of the bin_size fields is set. If it is empty, the type TIMESTAMP or INT64 will be assumed based on which bin_size field is set. If populated, this should be set to one of the following types: DATE, TIME, DATETIME, TIMESTAMP, BIGNUMERIC, INT64, NUMERIC, FLOAT64."
        },
        "floatBinSize": {
          "type": "number",
          "description": "Optional. float_bin_size is used when the column type used for a dimension is a floating point numeric column."
        },
        "maxBinCount": {
          "type": "integer",
          "description": "A limit to the number of bins generated. When 0 is specified, the maximum count is not enforced."
        },
        "numericBinSize": {
          "type": "integer",
          "description": "numeric_bin_size is used when the column type used for a dimension is numeric or string."
        },
        "sortColumn": {
          "type": "string",
          "description": "The column name to sort on for binning. This column can be the same column as this dimension or any other column used as a measure in the results. If sort_order is set to NONE, then this value is not used."
        },
        "sortOrder": {
          "$ref": "#/types/google-native:monitoring%2Fv1:DimensionSortOrder",
          "description": "The sort order applied to the sort column."
        },
        "timeBinSize": {
          "type": "string",
          "description": "time_bin_size is used when the data type specified by column is a time type and the bin size is determined by a time duration. If column_type is DATE, this must be a whole value multiple of 1 day. If column_type is TIME, this must be less than or equal to 24 hours."
        }
      },
      "type": "object",
      "required": [
        "column"
      ]
    },
    "google-native:monitoring/v1:DimensionResponse": {
      "description": "Preview: A chart dimension for an SQL query. This is applied over the x-axis. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "column": {
          "type": "string",
          "description": "The name of the column in the source SQL query that is used to chart the dimension."
        },
        "columnType": {
          "type": "string",
          "description": "Optional. The type of the dimension column. This is relevant only if one of the bin_size fields is set. If it is empty, the type TIMESTAMP or INT64 will be assumed based on which bin_size field is set. If populated, this should be set to one of the following types: DATE, TIME, DATETIME, TIMESTAMP, BIGNUMERIC, INT64, NUMERIC, FLOAT64."
        },
        "floatBinSize": {
          "type": "number",
          "description": "Optional. float_bin_size is used when the column type used for a dimension is a floating point numeric column."
        },
        "maxBinCount": {
          "type": "integer",
          "description": "A limit to the number of bins generated. When 0 is specified, the maximum count is not enforced."
        },
        "numericBinSize": {
          "type": "integer",
          "description": "numeric_bin_size is used when the column type used for a dimension is numeric or string."
        },
        "sortColumn": {
          "type": "string",
          "description": "The column name to sort on for binning. This column can be the same column as this dimension or any other column used as a measure in the results. If sort_order is set to NONE, then this value is not used."
        },
        "sortOrder": {
          "type": "string",
          "description": "The sort order applied to the sort column."
        },
        "timeBinSize": {
          "type": "string",
          "description": "time_bin_size is used when the data type specified by column is a time type and the bin size is determined by a time duration. If column_type is DATE, this must be a whole value multiple of 1 day. If column_type is TIME, this must be less than or equal to 24 hours."
        }
      },
      "type": "object",
      "required": [
        "column",
        "columnType",
        "floatBinSize",
        "maxBinCount",
        "numericBinSize",
        "sortColumn",
        "sortOrder",
        "timeBinSize"
      ]
    },
    "google-native:monitoring/v1:DimensionSortOrder": {
      "description": "The sort order applied to the sort column.",
      "type": "string",
      "enum": [
        {
          "name": "SortOrderUnspecified",
          "description": "An unspecified sort order. This option is invalid when sorting is required.",
          "value": "SORT_ORDER_UNSPECIFIED"
        },
        {
          "name": "SortOrderNone",
          "description": "No sorting is applied.",
          "value": "SORT_ORDER_NONE"
        },
        {
          "name": "SortOrderAscending",
          "description": "The lowest-valued entries are selected first.",
          "value": "SORT_ORDER_ASCENDING"
        },
        {
          "name": "SortOrderDescending",
          "description": "The highest-valued entries are selected first.",
          "value": "SORT_ORDER_DESCENDING"
        }
      ]
    },
    "google-native:monitoring/v1:Empty": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } ",
      "type": "object"
    },
    "google-native:monitoring/v1:EmptyResponse": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } ",
      "type": "object"
    },
    "google-native:monitoring/v1:ErrorReportingPanel": {
      "description": "A widget that displays a list of error groups.",
      "properties": {
        "projectNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource name of the Google Cloud Platform project. Written as projects/{projectID} or projects/{projectNumber}, where {projectID} and {projectNumber} can be found in the Google Cloud console (https://support.google.com/cloud/answer/6158840).Examples: projects/my-project-123, projects/5551234."
        },
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An identifier of the service, such as the name of the executable, job, or Google App Engine service name. This field is expected to have a low number of values that are relatively stable over time, as opposed to version, which can be changed whenever new code is deployed.Contains the service name for error reports extracted from Google App Engine logs or default if the App Engine default service is used."
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Represents the source code version that the developer provided, which could represent a version label or a Git SHA-1 hash, for example. For App Engine standard environment, the version is set to the version of the app."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:ErrorReportingPanelResponse": {
      "description": "A widget that displays a list of error groups.",
      "properties": {
        "projectNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource name of the Google Cloud Platform project. Written as projects/{projectID} or projects/{projectNumber}, where {projectID} and {projectNumber} can be found in the Google Cloud console (https://support.google.com/cloud/answer/6158840).Examples: projects/my-project-123, projects/5551234."
        },
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An identifier of the service, such as the name of the executable, job, or Google App Engine service name. This field is expected to have a low number of values that are relatively stable over time, as opposed to version, which can be changed whenever new code is deployed.Contains the service name for error reports extracted from Google App Engine logs or default if the App Engine default service is used."
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Represents the source code version that the developer provided, which could represent a version label or a Git SHA-1 hash, for example. For App Engine standard environment, the version is set to the version of the app."
        }
      },
      "type": "object",
      "required": [
        "projectNames",
        "services",
        "versions"
      ]
    },
    "google-native:monitoring/v1:GaugeView": {
      "description": "A gauge chart shows where the current value sits within a pre-defined range. The upper and lower bounds should define the possible range of values for the scorecard's query (inclusive).",
      "properties": {
        "lowerBound": {
          "type": "number",
          "description": "The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this."
        },
        "upperBound": {
          "type": "number",
          "description": "The upper bound for this gauge chart. The value of the chart should always be less than or equal to this."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:GaugeViewResponse": {
      "description": "A gauge chart shows where the current value sits within a pre-defined range. The upper and lower bounds should define the possible range of values for the scorecard's query (inclusive).",
      "properties": {
        "lowerBound": {
          "type": "number",
          "description": "The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this."
        },
        "upperBound": {
          "type": "number",
          "description": "The upper bound for this gauge chart. The value of the chart should always be less than or equal to this."
        }
      },
      "type": "object",
      "required": [
        "lowerBound",
        "upperBound"
      ]
    },
    "google-native:monitoring/v1:GridLayout": {
      "description": "A basic layout divides the available space into vertical columns of equal width and arranges a list of widgets using a row-first strategy.",
      "properties": {
        "columns": {
          "type": "string",
          "description": "The number of columns into which the view's width is divided. If omitted or set to zero, a system default will be used while rendering."
        },
        "widgets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Widget"
          },
          "description": "The informational elements that are arranged into the columns row-first."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:GridLayoutResponse": {
      "description": "A basic layout divides the available space into vertical columns of equal width and arranges a list of widgets using a row-first strategy.",
      "properties": {
        "columns": {
          "type": "string",
          "description": "The number of columns into which the view's width is divided. If omitted or set to zero, a system default will be used while rendering."
        },
        "widgets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:WidgetResponse"
          },
          "description": "The informational elements that are arranged into the columns row-first."
        }
      },
      "type": "object",
      "required": [
        "columns",
        "widgets"
      ]
    },
    "google-native:monitoring/v1:IncidentList": {
      "description": "A widget that displays a list of incidents",
      "properties": {
        "monitoredResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:MonitoredResource"
          },
          "description": "Optional. The monitored resource for which incidents are listed. The resource doesn't need to be fully specified. That is, you can specify the resource type but not the values of the resource labels. The resource type and labels are used for filtering."
        },
        "policyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of alert policy names to filter the incident list by. Don't include the project ID prefix in the policy name. For example, use alertPolicies/utilization."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:IncidentListResponse": {
      "description": "A widget that displays a list of incidents",
      "properties": {
        "monitoredResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:MonitoredResourceResponse"
          },
          "description": "Optional. The monitored resource for which incidents are listed. The resource doesn't need to be fully specified. That is, you can specify the resource type but not the values of the resource labels. The resource type and labels are used for filtering."
        },
        "policyNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of alert policy names to filter the incident list by. Don't include the project ID prefix in the policy name. For example, use alertPolicies/utilization."
        }
      },
      "type": "object",
      "required": [
        "monitoredResources",
        "policyNames"
      ]
    },
    "google-native:monitoring/v1:LogsPanel": {
      "description": "A widget that displays a stream of log.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter that chooses which log entries to return. See Advanced Logs Queries (https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries."
        },
        "resourceNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of logging resources to collect logs for. Currently only projects are supported. If empty, the widget will default to the host project."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:LogsPanelResponse": {
      "description": "A widget that displays a stream of log.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter that chooses which log entries to return. See Advanced Logs Queries (https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries."
        },
        "resourceNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of logging resources to collect logs for. Currently only projects are supported. If empty, the widget will default to the host project."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "resourceNames"
      ]
    },
    "google-native:monitoring/v1:Measure": {
      "description": "Preview: A chart measure for an SQL query. This is applied over the y-axis. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "aggregationFunction": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationFunction",
          "description": "The aggregation function applied to the input column. This must not be set to \"none\" unless binning is disabled on the dimension. The aggregation function is used to group points on the dimension bins."
        },
        "column": {
          "type": "string",
          "description": "The column name within in the dataset used for the measure."
        }
      },
      "type": "object",
      "required": [
        "aggregationFunction",
        "column"
      ]
    },
    "google-native:monitoring/v1:MeasureResponse": {
      "description": "Preview: A chart measure for an SQL query. This is applied over the y-axis. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "aggregationFunction": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationFunctionResponse",
          "description": "The aggregation function applied to the input column. This must not be set to \"none\" unless binning is disabled on the dimension. The aggregation function is used to group points on the dimension bins."
        },
        "column": {
          "type": "string",
          "description": "The column name within in the dataset used for the measure."
        }
      },
      "type": "object",
      "required": [
        "aggregationFunction",
        "column"
      ]
    },
    "google-native:monitoring/v1:MonitoredResource": {
      "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"project_id\", \"instance_id\" and \"zone\": { \"type\": \"gce_instance\", \"labels\": { \"project_id\": \"my-project\", \"instance_id\": \"12345678901234\", \"zone\": \"us-central1-a\" }} ",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\"."
        },
        "type": {
          "type": "string",
          "description": "The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types (https://cloud.google.com/monitoring/api/resources) and Logging resource types (https://cloud.google.com/logging/docs/api/v2/resource-list)."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "type"
      ]
    },
    "google-native:monitoring/v1:MonitoredResourceResponse": {
      "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"project_id\", \"instance_id\" and \"zone\": { \"type\": \"gce_instance\", \"labels\": { \"project_id\": \"my-project\", \"instance_id\": \"12345678901234\", \"zone\": \"us-central1-a\" }} ",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\"."
        },
        "type": {
          "type": "string",
          "description": "The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types (https://cloud.google.com/monitoring/api/resources) and Logging resource types (https://cloud.google.com/logging/docs/api/v2/resource-list)."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "type"
      ]
    },
    "google-native:monitoring/v1:MosaicLayout": {
      "description": "A mosaic layout divides the available space into a grid of blocks, and overlays the grid with tiles. Unlike GridLayout, tiles may span multiple grid blocks and can be placed at arbitrary locations in the grid.",
      "properties": {
        "columns": {
          "type": "integer",
          "description": "The number of columns in the mosaic grid. The number of columns must be between 1 and 12, inclusive."
        },
        "tiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Tile"
          },
          "description": "The tiles to display."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:MosaicLayoutResponse": {
      "description": "A mosaic layout divides the available space into a grid of blocks, and overlays the grid with tiles. Unlike GridLayout, tiles may span multiple grid blocks and can be placed at arbitrary locations in the grid.",
      "properties": {
        "columns": {
          "type": "integer",
          "description": "The number of columns in the mosaic grid. The number of columns must be between 1 and 12, inclusive."
        },
        "tiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:TileResponse"
          },
          "description": "The tiles to display."
        }
      },
      "type": "object",
      "required": [
        "columns",
        "tiles"
      ]
    },
    "google-native:monitoring/v1:OpsAnalyticsQuery": {
      "description": "Preview: A query that produces an aggregated response and supporting data. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "sql": {
          "type": "string",
          "description": "A SQL query to fetch time series, category series, or numeric series data."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:OpsAnalyticsQueryResponse": {
      "description": "Preview: A query that produces an aggregated response and supporting data. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "sql": {
          "type": "string",
          "description": "A SQL query to fetch time series, category series, or numeric series data."
        }
      },
      "type": "object",
      "required": [
        "sql"
      ]
    },
    "google-native:monitoring/v1:Parameter": {
      "description": "Preview: Parameter value applied to the aggregation function. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "doubleValue": {
          "type": "number",
          "description": "A floating-point parameter value."
        },
        "intValue": {
          "type": "string",
          "description": "An integer parameter value."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:ParameterResponse": {
      "description": "Preview: Parameter value applied to the aggregation function. This is a preview feature and may be subject to change before final release.",
      "properties": {
        "doubleValue": {
          "type": "number",
          "description": "A floating-point parameter value."
        },
        "intValue": {
          "type": "string",
          "description": "An integer parameter value."
        }
      },
      "type": "object",
      "required": [
        "doubleValue",
        "intValue"
      ]
    },
    "google-native:monitoring/v1:PickTimeSeriesFilter": {
      "description": "Describes a ranking-based time series filter. Each input time series is ranked with an aligner. The filter will allow up to num_time_series time series to pass through it, selecting them based on the relative ranking.For example, if ranking_method is METHOD_MEAN,direction is BOTTOM, and num_time_series is 3, then the 3 times series with the lowest mean values will pass through the filter.",
      "properties": {
        "direction": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PickTimeSeriesFilterDirection",
          "description": "How to use the ranking to select time series that pass through the filter."
        },
        "numTimeSeries": {
          "type": "integer",
          "description": "How many time series to allow to pass through the filter."
        },
        "rankingMethod": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PickTimeSeriesFilterRankingMethod",
          "description": "ranking_method is applied to each time series independently to produce the value which will be used to compare the time series to other time series."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:PickTimeSeriesFilterDirection": {
      "description": "How to use the ranking to select time series that pass through the filter.",
      "type": "string",
      "enum": [
        {
          "name": "DirectionUnspecified",
          "description": "Not allowed. You must specify a different Direction if you specify a PickTimeSeriesFilter.",
          "value": "DIRECTION_UNSPECIFIED"
        },
        {
          "name": "Top",
          "description": "Pass the highest num_time_series ranking inputs.",
          "value": "TOP"
        },
        {
          "name": "Bottom",
          "description": "Pass the lowest num_time_series ranking inputs.",
          "value": "BOTTOM"
        }
      ]
    },
    "google-native:monitoring/v1:PickTimeSeriesFilterRankingMethod": {
      "description": "ranking_method is applied to each time series independently to produce the value which will be used to compare the time series to other time series.",
      "type": "string",
      "enum": [
        {
          "name": "MethodUnspecified",
          "description": "Not allowed. You must specify a different Method if you specify a PickTimeSeriesFilter.",
          "value": "METHOD_UNSPECIFIED"
        },
        {
          "name": "MethodMean",
          "description": "Select the mean of all values.",
          "value": "METHOD_MEAN"
        },
        {
          "name": "MethodMax",
          "description": "Select the maximum value.",
          "value": "METHOD_MAX"
        },
        {
          "name": "MethodMin",
          "description": "Select the minimum value.",
          "value": "METHOD_MIN"
        },
        {
          "name": "MethodSum",
          "description": "Compute the sum of all values.",
          "value": "METHOD_SUM"
        },
        {
          "name": "MethodLatest",
          "description": "Select the most recent value.",
          "value": "METHOD_LATEST"
        }
      ]
    },
    "google-native:monitoring/v1:PickTimeSeriesFilterResponse": {
      "description": "Describes a ranking-based time series filter. Each input time series is ranked with an aligner. The filter will allow up to num_time_series time series to pass through it, selecting them based on the relative ranking.For example, if ranking_method is METHOD_MEAN,direction is BOTTOM, and num_time_series is 3, then the 3 times series with the lowest mean values will pass through the filter.",
      "properties": {
        "direction": {
          "type": "string",
          "description": "How to use the ranking to select time series that pass through the filter."
        },
        "numTimeSeries": {
          "type": "integer",
          "description": "How many time series to allow to pass through the filter."
        },
        "rankingMethod": {
          "type": "string",
          "description": "ranking_method is applied to each time series independently to produce the value which will be used to compare the time series to other time series."
        }
      },
      "type": "object",
      "required": [
        "direction",
        "numTimeSeries",
        "rankingMethod"
      ]
    },
    "google-native:monitoring/v1:PieChart": {
      "description": "A widget that displays timeseries data as a pie or a donut.",
      "properties": {
        "chartType": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PieChartChartType",
          "description": "Indicates the visualization type for the PieChart."
        },
        "dataSets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:PieChartDataSet"
          },
          "description": "The queries for the chart's data."
        },
        "showLabels": {
          "type": "boolean",
          "description": "Optional. Indicates whether or not the pie chart should show slices' labels"
        }
      },
      "type": "object",
      "required": [
        "chartType",
        "dataSets"
      ]
    },
    "google-native:monitoring/v1:PieChartChartType": {
      "description": "Required. Indicates the visualization type for the PieChart.",
      "type": "string",
      "enum": [
        {
          "name": "PieChartTypeUnspecified",
          "description": "The zero value. No type specified. Do not use.",
          "value": "PIE_CHART_TYPE_UNSPECIFIED"
        },
        {
          "name": "Pie",
          "description": "A Pie type PieChart.",
          "value": "PIE"
        },
        {
          "name": "Donut",
          "description": "Similar to PIE, but the DONUT type PieChart has a hole in the middle.",
          "value": "DONUT"
        }
      ]
    },
    "google-native:monitoring/v1:PieChartDataSet": {
      "description": "Groups a time series query definition.",
      "properties": {
        "minAlignmentPeriod": {
          "type": "string",
          "description": "Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes, the min_alignment_period should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals."
        },
        "sliceNameTemplate": {
          "type": "string",
          "description": "Optional. A template for the name of the slice. This name will be displayed in the legend and the tooltip of the pie chart. It replaces the auto-generated names for the slices. For example, if the template is set to ${resource.labels.zone}, the zone's value will be used for the name instead of the default name."
        },
        "timeSeriesQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesQuery",
          "description": "The query for the PieChart. See, google.monitoring.dashboard.v1.TimeSeriesQuery."
        }
      },
      "type": "object",
      "required": [
        "timeSeriesQuery"
      ]
    },
    "google-native:monitoring/v1:PieChartDataSetResponse": {
      "description": "Groups a time series query definition.",
      "properties": {
        "minAlignmentPeriod": {
          "type": "string",
          "description": "Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes, the min_alignment_period should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals."
        },
        "sliceNameTemplate": {
          "type": "string",
          "description": "Optional. A template for the name of the slice. This name will be displayed in the legend and the tooltip of the pie chart. It replaces the auto-generated names for the slices. For example, if the template is set to ${resource.labels.zone}, the zone's value will be used for the name instead of the default name."
        },
        "timeSeriesQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesQueryResponse",
          "description": "The query for the PieChart. See, google.monitoring.dashboard.v1.TimeSeriesQuery."
        }
      },
      "type": "object",
      "required": [
        "minAlignmentPeriod",
        "sliceNameTemplate",
        "timeSeriesQuery"
      ]
    },
    "google-native:monitoring/v1:PieChartResponse": {
      "description": "A widget that displays timeseries data as a pie or a donut.",
      "properties": {
        "chartType": {
          "type": "string",
          "description": "Indicates the visualization type for the PieChart."
        },
        "dataSets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:PieChartDataSetResponse"
          },
          "description": "The queries for the chart's data."
        },
        "showLabels": {
          "type": "boolean",
          "description": "Optional. Indicates whether or not the pie chart should show slices' labels"
        }
      },
      "type": "object",
      "required": [
        "chartType",
        "dataSets",
        "showLabels"
      ]
    },
    "google-native:monitoring/v1:RatioPart": {
      "description": "Describes a query to build the numerator or denominator of a TimeSeriesFilterRatio.",
      "properties": {
        "aggregation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Aggregation",
          "description": "By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data."
        },
        "filter": {
          "type": "string",
          "description": "The monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query."
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:monitoring/v1:RatioPartResponse": {
      "description": "Describes a query to build the numerator or denominator of a TimeSeriesFilterRatio.",
      "properties": {
        "aggregation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationResponse",
          "description": "By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data."
        },
        "filter": {
          "type": "string",
          "description": "The monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query."
        }
      },
      "type": "object",
      "required": [
        "aggregation",
        "filter"
      ]
    },
    "google-native:monitoring/v1:Row": {
      "description": "Defines the layout properties and content for a row.",
      "properties": {
        "weight": {
          "type": "string",
          "description": "The relative weight of this row. The row weight is used to adjust the height of rows on the screen (relative to peers). Greater the weight, greater the height of the row on the screen. If omitted, a value of 1 is used while rendering."
        },
        "widgets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Widget"
          },
          "description": "The display widgets arranged horizontally in this row."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:RowLayout": {
      "description": "A simplified layout that divides the available space into rows and arranges a set of widgets horizontally in each row.",
      "properties": {
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Row"
          },
          "description": "The rows of content to display."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:RowLayoutResponse": {
      "description": "A simplified layout that divides the available space into rows and arranges a set of widgets horizontally in each row.",
      "properties": {
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:RowResponse"
          },
          "description": "The rows of content to display."
        }
      },
      "type": "object",
      "required": [
        "rows"
      ]
    },
    "google-native:monitoring/v1:RowResponse": {
      "description": "Defines the layout properties and content for a row.",
      "properties": {
        "weight": {
          "type": "string",
          "description": "The relative weight of this row. The row weight is used to adjust the height of rows on the screen (relative to peers). Greater the weight, greater the height of the row on the screen. If omitted, a value of 1 is used while rendering."
        },
        "widgets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:WidgetResponse"
          },
          "description": "The display widgets arranged horizontally in this row."
        }
      },
      "type": "object",
      "required": [
        "weight",
        "widgets"
      ]
    },
    "google-native:monitoring/v1:Scorecard": {
      "description": "A widget showing the latest value of a metric, and how this value relates to one or more thresholds.",
      "properties": {
        "blankView": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Empty",
          "description": "Will cause the Scorecard to show only the value, with no indicator to its value relative to its thresholds."
        },
        "gaugeView": {
          "$ref": "#/types/google-native:monitoring%2Fv1:GaugeView",
          "description": "Will cause the scorecard to show a gauge chart."
        },
        "sparkChartView": {
          "$ref": "#/types/google-native:monitoring%2Fv1:SparkChartView",
          "description": "Will cause the scorecard to show a spark chart."
        },
        "thresholds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Threshold"
          },
          "description": "The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.)As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', }, { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state."
        },
        "timeSeriesQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesQuery",
          "description": "Fields for querying time series data from the Stackdriver metrics API."
        }
      },
      "type": "object",
      "required": [
        "timeSeriesQuery"
      ]
    },
    "google-native:monitoring/v1:ScorecardResponse": {
      "description": "A widget showing the latest value of a metric, and how this value relates to one or more thresholds.",
      "properties": {
        "blankView": {
          "$ref": "#/types/google-native:monitoring%2Fv1:EmptyResponse",
          "description": "Will cause the Scorecard to show only the value, with no indicator to its value relative to its thresholds."
        },
        "gaugeView": {
          "$ref": "#/types/google-native:monitoring%2Fv1:GaugeViewResponse",
          "description": "Will cause the scorecard to show a gauge chart."
        },
        "sparkChartView": {
          "$ref": "#/types/google-native:monitoring%2Fv1:SparkChartViewResponse",
          "description": "Will cause the scorecard to show a spark chart."
        },
        "thresholds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:ThresholdResponse"
          },
          "description": "The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.)As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', }, { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state."
        },
        "timeSeriesQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesQueryResponse",
          "description": "Fields for querying time series data from the Stackdriver metrics API."
        }
      },
      "type": "object",
      "required": [
        "blankView",
        "gaugeView",
        "sparkChartView",
        "thresholds",
        "timeSeriesQuery"
      ]
    },
    "google-native:monitoring/v1:SparkChartView": {
      "description": "A sparkChart is a small chart suitable for inclusion in a table-cell or inline in text. This message contains the configuration for a sparkChart to show up on a Scorecard, showing recent trends of the scorecard's timeseries.",
      "properties": {
        "minAlignmentPeriod": {
          "type": "string",
          "description": "The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint."
        },
        "sparkChartType": {
          "$ref": "#/types/google-native:monitoring%2Fv1:SparkChartViewSparkChartType",
          "description": "The type of sparkchart to show in this chartView."
        }
      },
      "type": "object",
      "required": [
        "sparkChartType"
      ]
    },
    "google-native:monitoring/v1:SparkChartViewResponse": {
      "description": "A sparkChart is a small chart suitable for inclusion in a table-cell or inline in text. This message contains the configuration for a sparkChart to show up on a Scorecard, showing recent trends of the scorecard's timeseries.",
      "properties": {
        "minAlignmentPeriod": {
          "type": "string",
          "description": "The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint."
        },
        "sparkChartType": {
          "type": "string",
          "description": "The type of sparkchart to show in this chartView."
        }
      },
      "type": "object",
      "required": [
        "minAlignmentPeriod",
        "sparkChartType"
      ]
    },
    "google-native:monitoring/v1:SparkChartViewSparkChartType": {
      "description": "Required. The type of sparkchart to show in this chartView.",
      "type": "string",
      "enum": [
        {
          "name": "SparkChartTypeUnspecified",
          "description": "Not allowed in well-formed requests.",
          "value": "SPARK_CHART_TYPE_UNSPECIFIED"
        },
        {
          "name": "SparkLine",
          "description": "The sparkline will be rendered as a small line chart.",
          "value": "SPARK_LINE"
        },
        {
          "name": "SparkBar",
          "description": "The sparkbar will be rendered as a small bar chart.",
          "value": "SPARK_BAR"
        }
      ]
    },
    "google-native:monitoring/v1:StatisticalTimeSeriesFilter": {
      "description": "A filter that ranks streams based on their statistical relation to other streams in a request. Note: This field is deprecated and completely ignored by the API.",
      "properties": {
        "numTimeSeries": {
          "type": "integer",
          "description": "How many time series to output."
        },
        "rankingMethod": {
          "$ref": "#/types/google-native:monitoring%2Fv1:StatisticalTimeSeriesFilterRankingMethod",
          "description": "rankingMethod is applied to a set of time series, and then the produced value for each individual time series is used to compare a given time series to others. These are methods that cannot be applied stream-by-stream, but rather require the full context of a request to evaluate time series."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:StatisticalTimeSeriesFilterRankingMethod": {
      "description": "rankingMethod is applied to a set of time series, and then the produced value for each individual time series is used to compare a given time series to others. These are methods that cannot be applied stream-by-stream, but rather require the full context of a request to evaluate time series.",
      "type": "string",
      "enum": [
        {
          "name": "MethodUnspecified",
          "description": "Not allowed in well-formed requests.",
          "value": "METHOD_UNSPECIFIED"
        },
        {
          "name": "MethodClusterOutlier",
          "description": "Compute the outlier score of each stream.",
          "value": "METHOD_CLUSTER_OUTLIER"
        }
      ]
    },
    "google-native:monitoring/v1:StatisticalTimeSeriesFilterResponse": {
      "description": "A filter that ranks streams based on their statistical relation to other streams in a request. Note: This field is deprecated and completely ignored by the API.",
      "properties": {
        "numTimeSeries": {
          "type": "integer",
          "description": "How many time series to output."
        },
        "rankingMethod": {
          "type": "string",
          "description": "rankingMethod is applied to a set of time series, and then the produced value for each individual time series is used to compare a given time series to others. These are methods that cannot be applied stream-by-stream, but rather require the full context of a request to evaluate time series."
        }
      },
      "type": "object",
      "required": [
        "numTimeSeries",
        "rankingMethod"
      ]
    },
    "google-native:monitoring/v1:TableDataSet": {
      "description": "Groups a time series query definition with table options.",
      "properties": {
        "minAlignmentPeriod": {
          "type": "string",
          "description": "Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the min_alignment_period should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals."
        },
        "tableDisplayOptions": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TableDisplayOptions",
          "description": "Optional. Table display options for configuring how the table is rendered."
        },
        "tableTemplate": {
          "type": "string",
          "description": "Optional. A template string for naming TimeSeries in the resulting data set. This should be a string with interpolations of the form ${label_name}, which will resolve to the label's value i.e. \"${resource.labels.project_id}.\""
        },
        "timeSeriesQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesQuery",
          "description": "Fields for querying time series data from the Stackdriver metrics API."
        }
      },
      "type": "object",
      "required": [
        "timeSeriesQuery"
      ]
    },
    "google-native:monitoring/v1:TableDataSetResponse": {
      "description": "Groups a time series query definition with table options.",
      "properties": {
        "minAlignmentPeriod": {
          "type": "string",
          "description": "Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the min_alignment_period should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals."
        },
        "tableDisplayOptions": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TableDisplayOptionsResponse",
          "description": "Optional. Table display options for configuring how the table is rendered."
        },
        "tableTemplate": {
          "type": "string",
          "description": "Optional. A template string for naming TimeSeries in the resulting data set. This should be a string with interpolations of the form ${label_name}, which will resolve to the label's value i.e. \"${resource.labels.project_id}.\""
        },
        "timeSeriesQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesQueryResponse",
          "description": "Fields for querying time series data from the Stackdriver metrics API."
        }
      },
      "type": "object",
      "required": [
        "minAlignmentPeriod",
        "tableDisplayOptions",
        "tableTemplate",
        "timeSeriesQuery"
      ]
    },
    "google-native:monitoring/v1:TableDisplayOptions": {
      "description": "Table display options that can be reused.",
      "properties": {
        "shownColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. This field is unused and has been replaced by TimeSeriesTable.column_settings"
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:TableDisplayOptionsResponse": {
      "description": "Table display options that can be reused.",
      "properties": {
        "shownColumns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. This field is unused and has been replaced by TimeSeriesTable.column_settings"
        }
      },
      "type": "object",
      "required": [
        "shownColumns"
      ]
    },
    "google-native:monitoring/v1:Text": {
      "description": "A widget that displays textual content.",
      "properties": {
        "content": {
          "type": "string",
          "description": "The text content to be displayed."
        },
        "format": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextFormat",
          "description": "How the text content is formatted."
        },
        "style": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextStyle",
          "description": "How the text is styled"
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:TextFormat": {
      "description": "How the text content is formatted.",
      "type": "string",
      "enum": [
        {
          "name": "FormatUnspecified",
          "description": "Format is unspecified. Defaults to MARKDOWN.",
          "value": "FORMAT_UNSPECIFIED"
        },
        {
          "name": "Markdown",
          "description": "The text contains Markdown formatting.",
          "value": "MARKDOWN"
        },
        {
          "name": "Raw",
          "description": "The text contains no special formatting.",
          "value": "RAW"
        }
      ]
    },
    "google-native:monitoring/v1:TextResponse": {
      "description": "A widget that displays textual content.",
      "properties": {
        "content": {
          "type": "string",
          "description": "The text content to be displayed."
        },
        "format": {
          "type": "string",
          "description": "How the text content is formatted."
        },
        "style": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextStyleResponse",
          "description": "How the text is styled"
        }
      },
      "type": "object",
      "required": [
        "content",
        "format",
        "style"
      ]
    },
    "google-native:monitoring/v1:TextStyle": {
      "description": "Properties that determine how the title and content are styled",
      "properties": {
        "backgroundColor": {
          "type": "string",
          "description": "The background color as a hex string. \"#RRGGBB\" or \"#RGB\""
        },
        "fontSize": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextStyleFontSize",
          "description": "Font sizes for both the title and content. The title will still be larger relative to the content."
        },
        "horizontalAlignment": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextStyleHorizontalAlignment",
          "description": "The horizontal alignment of both the title and content"
        },
        "padding": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextStylePadding",
          "description": "The amount of padding around the widget"
        },
        "pointerLocation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextStylePointerLocation",
          "description": "The pointer location for this widget (also sometimes called a \"tail\")"
        },
        "textColor": {
          "type": "string",
          "description": "The text color as a hex string. \"#RRGGBB\" or \"#RGB\""
        },
        "verticalAlignment": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextStyleVerticalAlignment",
          "description": "The vertical alignment of both the title and content"
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:TextStyleFontSize": {
      "description": "Font sizes for both the title and content. The title will still be larger relative to the content.",
      "type": "string",
      "enum": [
        {
          "name": "FontSizeUnspecified",
          "description": "No font size specified, will default to FS_LARGE",
          "value": "FONT_SIZE_UNSPECIFIED"
        },
        {
          "name": "FsExtraSmall",
          "description": "Extra small font size",
          "value": "FS_EXTRA_SMALL"
        },
        {
          "name": "FsSmall",
          "description": "Small font size",
          "value": "FS_SMALL"
        },
        {
          "name": "FsMedium",
          "description": "Medium font size",
          "value": "FS_MEDIUM"
        },
        {
          "name": "FsLarge",
          "description": "Large font size",
          "value": "FS_LARGE"
        },
        {
          "name": "FsExtraLarge",
          "description": "Extra large font size",
          "value": "FS_EXTRA_LARGE"
        }
      ]
    },
    "google-native:monitoring/v1:TextStyleHorizontalAlignment": {
      "description": "The horizontal alignment of both the title and content",
      "type": "string",
      "enum": [
        {
          "name": "HorizontalAlignmentUnspecified",
          "description": "No horizontal alignment specified, will default to H_LEFT",
          "value": "HORIZONTAL_ALIGNMENT_UNSPECIFIED"
        },
        {
          "name": "HLeft",
          "description": "Left-align",
          "value": "H_LEFT"
        },
        {
          "name": "HCenter",
          "description": "Center-align",
          "value": "H_CENTER"
        },
        {
          "name": "HRight",
          "description": "Right-align",
          "value": "H_RIGHT"
        }
      ]
    },
    "google-native:monitoring/v1:TextStylePadding": {
      "description": "The amount of padding around the widget",
      "type": "string",
      "enum": [
        {
          "name": "PaddingSizeUnspecified",
          "description": "No padding size specified, will default to P_EXTRA_SMALL",
          "value": "PADDING_SIZE_UNSPECIFIED"
        },
        {
          "name": "PExtraSmall",
          "description": "Extra small padding",
          "value": "P_EXTRA_SMALL"
        },
        {
          "name": "PSmall",
          "description": "Small padding",
          "value": "P_SMALL"
        },
        {
          "name": "PMedium",
          "description": "Medium padding",
          "value": "P_MEDIUM"
        },
        {
          "name": "PLarge",
          "description": "Large padding",
          "value": "P_LARGE"
        },
        {
          "name": "PExtraLarge",
          "description": "Extra large padding",
          "value": "P_EXTRA_LARGE"
        }
      ]
    },
    "google-native:monitoring/v1:TextStylePointerLocation": {
      "description": "The pointer location for this widget (also sometimes called a \"tail\")",
      "type": "string",
      "enum": [
        {
          "name": "PointerLocationUnspecified",
          "description": "No visual pointer",
          "value": "POINTER_LOCATION_UNSPECIFIED"
        },
        {
          "name": "PlTop",
          "description": "Placed in the middle of the top of the widget",
          "value": "PL_TOP"
        },
        {
          "name": "PlRight",
          "description": "Placed in the middle of the right side of the widget",
          "value": "PL_RIGHT"
        },
        {
          "name": "PlBottom",
          "description": "Placed in the middle of the bottom of the widget",
          "value": "PL_BOTTOM"
        },
        {
          "name": "PlLeft",
          "description": "Placed in the middle of the left side of the widget",
          "value": "PL_LEFT"
        },
        {
          "name": "PlTopLeft",
          "description": "Placed on the left side of the top of the widget",
          "value": "PL_TOP_LEFT"
        },
        {
          "name": "PlTopRight",
          "description": "Placed on the right side of the top of the widget",
          "value": "PL_TOP_RIGHT"
        },
        {
          "name": "PlRightTop",
          "description": "Placed on the top of the right side of the widget",
          "value": "PL_RIGHT_TOP"
        },
        {
          "name": "PlRightBottom",
          "description": "Placed on the bottom of the right side of the widget",
          "value": "PL_RIGHT_BOTTOM"
        },
        {
          "name": "PlBottomRight",
          "description": "Placed on the right side of the bottom of the widget",
          "value": "PL_BOTTOM_RIGHT"
        },
        {
          "name": "PlBottomLeft",
          "description": "Placed on the left side of the bottom of the widget",
          "value": "PL_BOTTOM_LEFT"
        },
        {
          "name": "PlLeftBottom",
          "description": "Placed on the bottom of the left side of the widget",
          "value": "PL_LEFT_BOTTOM"
        },
        {
          "name": "PlLeftTop",
          "description": "Placed on the top of the left side of the widget",
          "value": "PL_LEFT_TOP"
        }
      ]
    },
    "google-native:monitoring/v1:TextStyleResponse": {
      "description": "Properties that determine how the title and content are styled",
      "properties": {
        "backgroundColor": {
          "type": "string",
          "description": "The background color as a hex string. \"#RRGGBB\" or \"#RGB\""
        },
        "fontSize": {
          "type": "string",
          "description": "Font sizes for both the title and content. The title will still be larger relative to the content."
        },
        "horizontalAlignment": {
          "type": "string",
          "description": "The horizontal alignment of both the title and content"
        },
        "padding": {
          "type": "string",
          "description": "The amount of padding around the widget"
        },
        "pointerLocation": {
          "type": "string",
          "description": "The pointer location for this widget (also sometimes called a \"tail\")"
        },
        "textColor": {
          "type": "string",
          "description": "The text color as a hex string. \"#RRGGBB\" or \"#RGB\""
        },
        "verticalAlignment": {
          "type": "string",
          "description": "The vertical alignment of both the title and content"
        }
      },
      "type": "object",
      "required": [
        "backgroundColor",
        "fontSize",
        "horizontalAlignment",
        "padding",
        "pointerLocation",
        "textColor",
        "verticalAlignment"
      ]
    },
    "google-native:monitoring/v1:TextStyleVerticalAlignment": {
      "description": "The vertical alignment of both the title and content",
      "type": "string",
      "enum": [
        {
          "name": "VerticalAlignmentUnspecified",
          "description": "No vertical alignment specified, will default to V_TOP",
          "value": "VERTICAL_ALIGNMENT_UNSPECIFIED"
        },
        {
          "name": "VTop",
          "description": "Top-align",
          "value": "V_TOP"
        },
        {
          "name": "VCenter",
          "description": "Center-align",
          "value": "V_CENTER"
        },
        {
          "name": "VBottom",
          "description": "Bottom-align",
          "value": "V_BOTTOM"
        }
      ]
    },
    "google-native:monitoring/v1:Threshold": {
      "description": "Defines a threshold for categorizing time series values.",
      "properties": {
        "color": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ThresholdColor",
          "description": "The state color for this threshold. Color is not allowed in a XyChart."
        },
        "direction": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ThresholdDirection",
          "description": "The direction for the current threshold. Direction is not allowed in a XyChart."
        },
        "label": {
          "type": "string",
          "description": "A label for the threshold."
        },
        "targetAxis": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ThresholdTargetAxis",
          "description": "The target axis to use for plotting the threshold. Target axis is not allowed in a Scorecard."
        },
        "value": {
          "type": "number",
          "description": "The value of the threshold. The value should be defined in the native scale of the metric."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:ThresholdColor": {
      "description": "The state color for this threshold. Color is not allowed in a XyChart.",
      "type": "string",
      "enum": [
        {
          "name": "ColorUnspecified",
          "description": "Color is unspecified. Not allowed in well-formed requests.",
          "value": "COLOR_UNSPECIFIED"
        },
        {
          "name": "Yellow",
          "description": "Crossing the threshold is \"concerning\" behavior.",
          "value": "YELLOW"
        },
        {
          "name": "Red",
          "description": "Crossing the threshold is \"emergency\" behavior.",
          "value": "RED"
        }
      ]
    },
    "google-native:monitoring/v1:ThresholdDirection": {
      "description": "The direction for the current threshold. Direction is not allowed in a XyChart.",
      "type": "string",
      "enum": [
        {
          "name": "DirectionUnspecified",
          "description": "Not allowed in well-formed requests.",
          "value": "DIRECTION_UNSPECIFIED"
        },
        {
          "name": "Above",
          "description": "The threshold will be considered crossed if the actual value is above the threshold value.",
          "value": "ABOVE"
        },
        {
          "name": "Below",
          "description": "The threshold will be considered crossed if the actual value is below the threshold value.",
          "value": "BELOW"
        }
      ]
    },
    "google-native:monitoring/v1:ThresholdResponse": {
      "description": "Defines a threshold for categorizing time series values.",
      "properties": {
        "color": {
          "type": "string",
          "description": "The state color for this threshold. Color is not allowed in a XyChart."
        },
        "direction": {
          "type": "string",
          "description": "The direction for the current threshold. Direction is not allowed in a XyChart."
        },
        "label": {
          "type": "string",
          "description": "A label for the threshold."
        },
        "targetAxis": {
          "type": "string",
          "description": "The target axis to use for plotting the threshold. Target axis is not allowed in a Scorecard."
        },
        "value": {
          "type": "number",
          "description": "The value of the threshold. The value should be defined in the native scale of the metric."
        }
      },
      "type": "object",
      "required": [
        "color",
        "direction",
        "label",
        "targetAxis",
        "value"
      ]
    },
    "google-native:monitoring/v1:ThresholdTargetAxis": {
      "description": "The target axis to use for plotting the threshold. Target axis is not allowed in a Scorecard.",
      "type": "string",
      "enum": [
        {
          "name": "TargetAxisUnspecified",
          "description": "The target axis was not specified. Defaults to Y1.",
          "value": "TARGET_AXIS_UNSPECIFIED"
        },
        {
          "name": "Y1",
          "description": "The y_axis (the right axis of chart).",
          "value": "Y1"
        },
        {
          "name": "Y2",
          "description": "The y2_axis (the left axis of chart).",
          "value": "Y2"
        }
      ]
    },
    "google-native:monitoring/v1:Tile": {
      "description": "A single tile in the mosaic. The placement and size of the tile are configurable.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "The height of the tile, measured in grid blocks. Tiles must have a minimum height of 1."
        },
        "widget": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Widget",
          "description": "The informational widget contained in the tile. For example an XyChart."
        },
        "width": {
          "type": "integer",
          "description": "The width of the tile, measured in grid blocks. Tiles must have a minimum width of 1."
        },
        "xPos": {
          "type": "integer",
          "description": "The zero-indexed position of the tile in grid blocks relative to the left edge of the grid. Tiles must be contained within the specified number of columns. x_pos cannot be negative."
        },
        "yPos": {
          "type": "integer",
          "description": "The zero-indexed position of the tile in grid blocks relative to the top edge of the grid. y_pos cannot be negative."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:TileResponse": {
      "description": "A single tile in the mosaic. The placement and size of the tile are configurable.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "The height of the tile, measured in grid blocks. Tiles must have a minimum height of 1."
        },
        "widget": {
          "$ref": "#/types/google-native:monitoring%2Fv1:WidgetResponse",
          "description": "The informational widget contained in the tile. For example an XyChart."
        },
        "width": {
          "type": "integer",
          "description": "The width of the tile, measured in grid blocks. Tiles must have a minimum width of 1."
        },
        "xPos": {
          "type": "integer",
          "description": "The zero-indexed position of the tile in grid blocks relative to the left edge of the grid. Tiles must be contained within the specified number of columns. x_pos cannot be negative."
        },
        "yPos": {
          "type": "integer",
          "description": "The zero-indexed position of the tile in grid blocks relative to the top edge of the grid. y_pos cannot be negative."
        }
      },
      "type": "object",
      "required": [
        "height",
        "widget",
        "width",
        "xPos",
        "yPos"
      ]
    },
    "google-native:monitoring/v1:TimeSeriesFilter": {
      "description": "A filter that defines a subset of time series data that is displayed in a widget. Time series data is fetched using the ListTimeSeries (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) method.",
      "properties": {
        "aggregation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Aggregation",
          "description": "By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data."
        },
        "filter": {
          "type": "string",
          "description": "The monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query."
        },
        "pickTimeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PickTimeSeriesFilter",
          "description": "Ranking based time series filter."
        },
        "secondaryAggregation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Aggregation",
          "description": "Apply a second aggregation after aggregation is applied."
        },
        "statisticalTimeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:StatisticalTimeSeriesFilter",
          "description": "Statistics based time series filter. Note: This field is deprecated and completely ignored by the API.",
          "deprecationMessage": "Statistics based time series filter. Note: This field is deprecated and completely ignored by the API."
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:monitoring/v1:TimeSeriesFilterRatio": {
      "description": "A pair of time series filters that define a ratio computation. The output time series is the pair-wise division of each aligned element from the numerator and denominator time series.",
      "properties": {
        "denominator": {
          "$ref": "#/types/google-native:monitoring%2Fv1:RatioPart",
          "description": "The denominator of the ratio."
        },
        "numerator": {
          "$ref": "#/types/google-native:monitoring%2Fv1:RatioPart",
          "description": "The numerator of the ratio."
        },
        "pickTimeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PickTimeSeriesFilter",
          "description": "Ranking based time series filter."
        },
        "secondaryAggregation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Aggregation",
          "description": "Apply a second aggregation after the ratio is computed."
        },
        "statisticalTimeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:StatisticalTimeSeriesFilter",
          "description": "Statistics based time series filter. Note: This field is deprecated and completely ignored by the API.",
          "deprecationMessage": "Statistics based time series filter. Note: This field is deprecated and completely ignored by the API."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:TimeSeriesFilterRatioResponse": {
      "description": "A pair of time series filters that define a ratio computation. The output time series is the pair-wise division of each aligned element from the numerator and denominator time series.",
      "properties": {
        "denominator": {
          "$ref": "#/types/google-native:monitoring%2Fv1:RatioPartResponse",
          "description": "The denominator of the ratio."
        },
        "numerator": {
          "$ref": "#/types/google-native:monitoring%2Fv1:RatioPartResponse",
          "description": "The numerator of the ratio."
        },
        "pickTimeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PickTimeSeriesFilterResponse",
          "description": "Ranking based time series filter."
        },
        "secondaryAggregation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationResponse",
          "description": "Apply a second aggregation after the ratio is computed."
        },
        "statisticalTimeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:StatisticalTimeSeriesFilterResponse",
          "description": "Statistics based time series filter. Note: This field is deprecated and completely ignored by the API.",
          "deprecationMessage": "Statistics based time series filter. Note: This field is deprecated and completely ignored by the API."
        }
      },
      "type": "object",
      "required": [
        "denominator",
        "numerator",
        "pickTimeSeriesFilter",
        "secondaryAggregation",
        "statisticalTimeSeriesFilter"
      ]
    },
    "google-native:monitoring/v1:TimeSeriesFilterResponse": {
      "description": "A filter that defines a subset of time series data that is displayed in a widget. Time series data is fetched using the ListTimeSeries (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) method.",
      "properties": {
        "aggregation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationResponse",
          "description": "By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data."
        },
        "filter": {
          "type": "string",
          "description": "The monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query."
        },
        "pickTimeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PickTimeSeriesFilterResponse",
          "description": "Ranking based time series filter."
        },
        "secondaryAggregation": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AggregationResponse",
          "description": "Apply a second aggregation after aggregation is applied."
        },
        "statisticalTimeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:StatisticalTimeSeriesFilterResponse",
          "description": "Statistics based time series filter. Note: This field is deprecated and completely ignored by the API.",
          "deprecationMessage": "Statistics based time series filter. Note: This field is deprecated and completely ignored by the API."
        }
      },
      "type": "object",
      "required": [
        "aggregation",
        "filter",
        "pickTimeSeriesFilter",
        "secondaryAggregation",
        "statisticalTimeSeriesFilter"
      ]
    },
    "google-native:monitoring/v1:TimeSeriesQuery": {
      "description": "TimeSeriesQuery collects the set of supported methods for querying time series data from the Stackdriver metrics API.",
      "properties": {
        "opsAnalyticsQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:OpsAnalyticsQuery",
          "description": "Preview: A query used to fetch a time series, category series, or numeric series with SQL. This is a preview feature and may be subject to change before final release."
        },
        "outputFullDuration": {
          "type": "boolean",
          "description": "Optional. If set, Cloud Monitoring will treat the full query duration as the alignment period so that there will be only 1 output value.*Note: This could override the configured alignment period except for the cases where a series of data points are expected, like - XyChart - Scorecard's spark chart"
        },
        "prometheusQuery": {
          "type": "string",
          "description": "A query used to fetch time series with PromQL."
        },
        "timeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesFilter",
          "description": "Filter parameters to fetch time series."
        },
        "timeSeriesFilterRatio": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesFilterRatio",
          "description": "Parameters to fetch a ratio between two time series filters."
        },
        "timeSeriesQueryLanguage": {
          "type": "string",
          "description": "A query used to fetch time series with MQL."
        },
        "unitOverride": {
          "type": "string",
          "description": "The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the unit (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in MetricDescriptor."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:TimeSeriesQueryResponse": {
      "description": "TimeSeriesQuery collects the set of supported methods for querying time series data from the Stackdriver metrics API.",
      "properties": {
        "opsAnalyticsQuery": {
          "$ref": "#/types/google-native:monitoring%2Fv1:OpsAnalyticsQueryResponse",
          "description": "Preview: A query used to fetch a time series, category series, or numeric series with SQL. This is a preview feature and may be subject to change before final release."
        },
        "outputFullDuration": {
          "type": "boolean",
          "description": "Optional. If set, Cloud Monitoring will treat the full query duration as the alignment period so that there will be only 1 output value.*Note: This could override the configured alignment period except for the cases where a series of data points are expected, like - XyChart - Scorecard's spark chart"
        },
        "prometheusQuery": {
          "type": "string",
          "description": "A query used to fetch time series with PromQL."
        },
        "timeSeriesFilter": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesFilterResponse",
          "description": "Filter parameters to fetch time series."
        },
        "timeSeriesFilterRatio": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesFilterRatioResponse",
          "description": "Parameters to fetch a ratio between two time series filters."
        },
        "timeSeriesQueryLanguage": {
          "type": "string",
          "description": "A query used to fetch time series with MQL."
        },
        "unitOverride": {
          "type": "string",
          "description": "The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the unit (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in MetricDescriptor."
        }
      },
      "type": "object",
      "required": [
        "opsAnalyticsQuery",
        "outputFullDuration",
        "prometheusQuery",
        "timeSeriesFilter",
        "timeSeriesFilterRatio",
        "timeSeriesQueryLanguage",
        "unitOverride"
      ]
    },
    "google-native:monitoring/v1:TimeSeriesTable": {
      "description": "A table that displays time series data.",
      "properties": {
        "columnSettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:ColumnSettings"
          },
          "description": "Optional. The list of the persistent column settings for the table."
        },
        "dataSets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:TableDataSet"
          },
          "description": "The data displayed in this table."
        },
        "metricVisualization": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesTableMetricVisualization",
          "description": "Optional. Store rendering strategy"
        }
      },
      "type": "object",
      "required": [
        "dataSets"
      ]
    },
    "google-native:monitoring/v1:TimeSeriesTableMetricVisualization": {
      "description": "Optional. Store rendering strategy",
      "type": "string",
      "enum": [
        {
          "name": "MetricVisualizationUnspecified",
          "description": "Unspecified state",
          "value": "METRIC_VISUALIZATION_UNSPECIFIED"
        },
        {
          "name": "Number",
          "description": "Default text rendering",
          "value": "NUMBER"
        },
        {
          "name": "Bar",
          "description": "Horizontal bar rendering",
          "value": "BAR"
        }
      ]
    },
    "google-native:monitoring/v1:TimeSeriesTableResponse": {
      "description": "A table that displays time series data.",
      "properties": {
        "columnSettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:ColumnSettingsResponse"
          },
          "description": "Optional. The list of the persistent column settings for the table."
        },
        "dataSets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:TableDataSetResponse"
          },
          "description": "The data displayed in this table."
        },
        "metricVisualization": {
          "type": "string",
          "description": "Optional. Store rendering strategy"
        }
      },
      "type": "object",
      "required": [
        "columnSettings",
        "dataSets",
        "metricVisualization"
      ]
    },
    "google-native:monitoring/v1:Widget": {
      "description": "Widget contains a single dashboard component and configuration of how to present the component in the dashboard.",
      "properties": {
        "alertChart": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AlertChart",
          "description": "A chart of alert policy data."
        },
        "blank": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Empty",
          "description": "A blank space."
        },
        "collapsibleGroup": {
          "$ref": "#/types/google-native:monitoring%2Fv1:CollapsibleGroup",
          "description": "A widget that groups the other widgets. All widgets that are within the area spanned by the grouping widget are considered member widgets."
        },
        "errorReportingPanel": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ErrorReportingPanel",
          "description": "A widget that displays a list of error groups."
        },
        "id": {
          "type": "string",
          "description": "Optional. The widget id. Ids may be made up of alphanumerics, dashes and underscores. Widget ids are optional."
        },
        "incidentList": {
          "$ref": "#/types/google-native:monitoring%2Fv1:IncidentList",
          "description": "A widget that shows list of incidents."
        },
        "logsPanel": {
          "$ref": "#/types/google-native:monitoring%2Fv1:LogsPanel",
          "description": "A widget that shows a stream of logs."
        },
        "pieChart": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PieChart",
          "description": "A widget that displays timeseries data as a pie chart."
        },
        "scorecard": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Scorecard",
          "description": "A scorecard summarizing time series data."
        },
        "text": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Text",
          "description": "A raw string or markdown displaying textual content."
        },
        "timeSeriesTable": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesTable",
          "description": "A widget that displays time series data in a tabular format."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the widget."
        },
        "xyChart": {
          "$ref": "#/types/google-native:monitoring%2Fv1:XyChart",
          "description": "A chart of time series data."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v1:WidgetResponse": {
      "description": "Widget contains a single dashboard component and configuration of how to present the component in the dashboard.",
      "properties": {
        "alertChart": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AlertChartResponse",
          "description": "A chart of alert policy data."
        },
        "blank": {
          "$ref": "#/types/google-native:monitoring%2Fv1:EmptyResponse",
          "description": "A blank space."
        },
        "collapsibleGroup": {
          "$ref": "#/types/google-native:monitoring%2Fv1:CollapsibleGroupResponse",
          "description": "A widget that groups the other widgets. All widgets that are within the area spanned by the grouping widget are considered member widgets."
        },
        "errorReportingPanel": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ErrorReportingPanelResponse",
          "description": "A widget that displays a list of error groups."
        },
        "incidentList": {
          "$ref": "#/types/google-native:monitoring%2Fv1:IncidentListResponse",
          "description": "A widget that shows list of incidents."
        },
        "logsPanel": {
          "$ref": "#/types/google-native:monitoring%2Fv1:LogsPanelResponse",
          "description": "A widget that shows a stream of logs."
        },
        "pieChart": {
          "$ref": "#/types/google-native:monitoring%2Fv1:PieChartResponse",
          "description": "A widget that displays timeseries data as a pie chart."
        },
        "scorecard": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ScorecardResponse",
          "description": "A scorecard summarizing time series data."
        },
        "text": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TextResponse",
          "description": "A raw string or markdown displaying textual content."
        },
        "timeSeriesTable": {
          "$ref": "#/types/google-native:monitoring%2Fv1:TimeSeriesTableResponse",
          "description": "A widget that displays time series data in a tabular format."
        },
        "title": {
          "type": "string",
          "description": "Optional. The title of the widget."
        },
        "xyChart": {
          "$ref": "#/types/google-native:monitoring%2Fv1:XyChartResponse",
          "description": "A chart of time series data."
        }
      },
      "type": "object",
      "required": [
        "alertChart",
        "blank",
        "collapsibleGroup",
        "errorReportingPanel",
        "incidentList",
        "logsPanel",
        "pieChart",
        "scorecard",
        "text",
        "timeSeriesTable",
        "title",
        "xyChart"
      ]
    },
    "google-native:monitoring/v1:XyChart": {
      "description": "A chart that displays data on a 2D (X and Y axes) plane.",
      "properties": {
        "chartOptions": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ChartOptions",
          "description": "Display options for the chart."
        },
        "dataSets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:DataSet"
          },
          "description": "The data displayed in this chart."
        },
        "thresholds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:Threshold"
          },
          "description": "Threshold lines drawn horizontally across the chart."
        },
        "timeshiftDuration": {
          "type": "string",
          "description": "The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type."
        },
        "xAxis": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Axis",
          "description": "The properties applied to the x-axis."
        },
        "y2Axis": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Axis",
          "description": "The properties applied to the y2-axis."
        },
        "yAxis": {
          "$ref": "#/types/google-native:monitoring%2Fv1:Axis",
          "description": "The properties applied to the y-axis."
        }
      },
      "type": "object",
      "required": [
        "dataSets"
      ]
    },
    "google-native:monitoring/v1:XyChartResponse": {
      "description": "A chart that displays data on a 2D (X and Y axes) plane.",
      "properties": {
        "chartOptions": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ChartOptionsResponse",
          "description": "Display options for the chart."
        },
        "dataSets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:DataSetResponse"
          },
          "description": "The data displayed in this chart."
        },
        "thresholds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:ThresholdResponse"
          },
          "description": "Threshold lines drawn horizontally across the chart."
        },
        "timeshiftDuration": {
          "type": "string",
          "description": "The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type."
        },
        "xAxis": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AxisResponse",
          "description": "The properties applied to the x-axis."
        },
        "y2Axis": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AxisResponse",
          "description": "The properties applied to the y2-axis."
        },
        "yAxis": {
          "$ref": "#/types/google-native:monitoring%2Fv1:AxisResponse",
          "description": "The properties applied to the y-axis."
        }
      },
      "type": "object",
      "required": [
        "chartOptions",
        "dataSets",
        "thresholds",
        "timeshiftDuration",
        "xAxis",
        "y2Axis",
        "yAxis"
      ]
    },
    "google-native:monitoring/v3:Aggregation": {
      "description": "Describes how to combine multiple time series to provide a different view of the data. Aggregation of time series is done in two steps. First, each time series in the set is aligned to the same time interval boundaries, then the set of time series is optionally reduced in number.Alignment consists of applying the per_series_aligner operation to each time series after its data has been divided into regular alignment_period time intervals. This process takes all of the data points in an alignment period, applies a mathematical transformation such as averaging, minimum, maximum, delta, etc., and converts them into a single data point per period.Reduction is when the aligned and transformed time series can optionally be combined, reducing the number of time series through similar mathematical transformations. Reduction involves applying a cross_series_reducer to all the time series, optionally sorting the time series into subsets with group_by_fields, and applying the reducer to each subset.The raw time series data can contain a huge amount of information from multiple sources. Alignment and reduction transforms this mass of data into a more manageable and representative collection of data, for example \"the 95% latency across the average of all tasks in a cluster\". This representative data can be more easily graphed and comprehended, and the individual time series data is still available for later drilldown. For more details, see Filtering and aggregation (https://cloud.google.com/monitoring/api/v3/aggregation).",
      "properties": {
        "alignmentPeriod": {
          "type": "string",
          "description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies."
        },
        "crossSeriesReducer": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AggregationCrossSeriesReducer",
          "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned."
        },
        "groupByFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored."
        },
        "perSeriesAligner": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AggregationPerSeriesAligner",
          "description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:AggregationCrossSeriesReducer": {
      "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
      "type": "string",
      "enum": [
        {
          "name": "ReduceNone",
          "description": "No cross-time series reduction. The output of the Aligner is returned.",
          "value": "REDUCE_NONE"
        },
        {
          "name": "ReduceMean",
          "description": "Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
          "value": "REDUCE_MEAN"
        },
        {
          "name": "ReduceMin",
          "description": "Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
          "value": "REDUCE_MIN"
        },
        {
          "name": "ReduceMax",
          "description": "Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
          "value": "REDUCE_MAX"
        },
        {
          "name": "ReduceSum",
          "description": "Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
          "value": "REDUCE_SUM"
        },
        {
          "name": "ReduceStddev",
          "description": "Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
          "value": "REDUCE_STDDEV"
        },
        {
          "name": "ReduceCount",
          "description": "Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
          "value": "REDUCE_COUNT"
        },
        {
          "name": "ReduceCountTrue",
          "description": "Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
          "value": "REDUCE_COUNT_TRUE"
        },
        {
          "name": "ReduceCountFalse",
          "description": "Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
          "value": "REDUCE_COUNT_FALSE"
        },
        {
          "name": "ReduceFractionTrue",
          "description": "Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
          "value": "REDUCE_FRACTION_TRUE"
        },
        {
          "name": "ReducePercentile99",
          "description": "Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
          "value": "REDUCE_PERCENTILE_99"
        },
        {
          "name": "ReducePercentile95",
          "description": "Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
          "value": "REDUCE_PERCENTILE_95"
        },
        {
          "name": "ReducePercentile50",
          "description": "Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
          "value": "REDUCE_PERCENTILE_50"
        },
        {
          "name": "ReducePercentile05",
          "description": "Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
          "value": "REDUCE_PERCENTILE_05"
        }
      ]
    },
    "google-native:monitoring/v3:AggregationPerSeriesAligner": {
      "description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
      "type": "string",
      "enum": [
        {
          "name": "AlignNone",
          "description": "No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
          "value": "ALIGN_NONE"
        },
        {
          "name": "AlignDelta",
          "description": "Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_DELTA"
        },
        {
          "name": "AlignRate",
          "description": "Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
          "value": "ALIGN_RATE"
        },
        {
          "name": "AlignInterpolate",
          "description": "Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_INTERPOLATE"
        },
        {
          "name": "AlignNextOlder",
          "description": "Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_NEXT_OLDER"
        },
        {
          "name": "AlignMin",
          "description": "Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_MIN"
        },
        {
          "name": "AlignMax",
          "description": "Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_MAX"
        },
        {
          "name": "AlignMean",
          "description": "Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
          "value": "ALIGN_MEAN"
        },
        {
          "name": "AlignCount",
          "description": "Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
          "value": "ALIGN_COUNT"
        },
        {
          "name": "AlignSum",
          "description": "Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
          "value": "ALIGN_SUM"
        },
        {
          "name": "AlignStddev",
          "description": "Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
          "value": "ALIGN_STDDEV"
        },
        {
          "name": "AlignCountTrue",
          "description": "Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
          "value": "ALIGN_COUNT_TRUE"
        },
        {
          "name": "AlignCountFalse",
          "description": "Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
          "value": "ALIGN_COUNT_FALSE"
        },
        {
          "name": "AlignFractionTrue",
          "description": "Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
          "value": "ALIGN_FRACTION_TRUE"
        },
        {
          "name": "AlignPercentile99",
          "description": "Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENTILE_99"
        },
        {
          "name": "AlignPercentile95",
          "description": "Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENTILE_95"
        },
        {
          "name": "AlignPercentile50",
          "description": "Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENTILE_50"
        },
        {
          "name": "AlignPercentile05",
          "description": "Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENTILE_05"
        },
        {
          "name": "AlignPercentChange",
          "description": "Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE.",
          "value": "ALIGN_PERCENT_CHANGE"
        }
      ]
    },
    "google-native:monitoring/v3:AggregationResponse": {
      "description": "Describes how to combine multiple time series to provide a different view of the data. Aggregation of time series is done in two steps. First, each time series in the set is aligned to the same time interval boundaries, then the set of time series is optionally reduced in number.Alignment consists of applying the per_series_aligner operation to each time series after its data has been divided into regular alignment_period time intervals. This process takes all of the data points in an alignment period, applies a mathematical transformation such as averaging, minimum, maximum, delta, etc., and converts them into a single data point per period.Reduction is when the aligned and transformed time series can optionally be combined, reducing the number of time series through similar mathematical transformations. Reduction involves applying a cross_series_reducer to all the time series, optionally sorting the time series into subsets with group_by_fields, and applying the reducer to each subset.The raw time series data can contain a huge amount of information from multiple sources. Alignment and reduction transforms this mass of data into a more manageable and representative collection of data, for example \"the 95% latency across the average of all tasks in a cluster\". This representative data can be more easily graphed and comprehended, and the individual time series data is still available for later drilldown. For more details, see Filtering and aggregation (https://cloud.google.com/monitoring/api/v3/aggregation).",
      "properties": {
        "alignmentPeriod": {
          "type": "string",
          "description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies."
        },
        "crossSeriesReducer": {
          "type": "string",
          "description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned."
        },
        "groupByFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored."
        },
        "perSeriesAligner": {
          "type": "string",
          "description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned."
        }
      },
      "type": "object",
      "required": [
        "alignmentPeriod",
        "crossSeriesReducer",
        "groupByFields",
        "perSeriesAligner"
      ]
    },
    "google-native:monitoring/v3:AlertPolicyCombiner": {
      "description": "How to combine the results of multiple conditions to determine if an incident should be opened. If condition_time_series_query_language is present, this must be COMBINE_UNSPECIFIED.",
      "type": "string",
      "enum": [
        {
          "name": "CombineUnspecified",
          "description": "An unspecified combiner.",
          "value": "COMBINE_UNSPECIFIED"
        },
        {
          "name": "And",
          "description": "Combine conditions using the logical AND operator. An incident is created only if all the conditions are met simultaneously. This combiner is satisfied if all conditions are met, even if they are met on completely different resources.",
          "value": "AND"
        },
        {
          "name": "Or",
          "description": "Combine conditions using the logical OR operator. An incident is created if any of the listed conditions is met.",
          "value": "OR"
        },
        {
          "name": "AndWithMatchingResource",
          "description": "Combine conditions using logical AND operator, but unlike the regular AND option, an incident is created only if all conditions are met simultaneously on at least one resource.",
          "value": "AND_WITH_MATCHING_RESOURCE"
        }
      ]
    },
    "google-native:monitoring/v3:AlertPolicySeverity": {
      "description": "Optional. The severity of an alert policy indicates how important alerts generated by that policy are. The severity level, if specified, will be displayed on the Incident detail page and in notifications.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "No severity is specified. This is the default value.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Critical",
          "description": "This is the highest severity level. Use this if the problem could cause significant damage or downtime.",
          "value": "CRITICAL"
        },
        {
          "name": "Error",
          "description": "This is the medium severity level. Use this if the problem could cause minor damage or downtime.",
          "value": "ERROR"
        },
        {
          "name": "Warning",
          "description": "This is the lowest severity level. Use this if the problem is not causing any damage or downtime, but could potentially lead to a problem in the future.",
          "value": "WARNING"
        }
      ]
    },
    "google-native:monitoring/v3:AlertStrategy": {
      "description": "Control over how the notification channels in notification_channels are notified when this alert fires.",
      "properties": {
        "autoClose": {
          "type": "string",
          "description": "If an alert policy that was active has no data for this long, any open incidents will close"
        },
        "notificationChannelStrategy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:NotificationChannelStrategy"
          },
          "description": "Control how notifications will be sent out, on a per-channel basis."
        },
        "notificationRateLimit": {
          "$ref": "#/types/google-native:monitoring%2Fv3:NotificationRateLimit",
          "description": "Required for alert policies with a LogMatch condition.This limit is not implemented for alert policies that are not log-based."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:AlertStrategyResponse": {
      "description": "Control over how the notification channels in notification_channels are notified when this alert fires.",
      "properties": {
        "autoClose": {
          "type": "string",
          "description": "If an alert policy that was active has no data for this long, any open incidents will close"
        },
        "notificationChannelStrategy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:NotificationChannelStrategyResponse"
          },
          "description": "Control how notifications will be sent out, on a per-channel basis."
        },
        "notificationRateLimit": {
          "$ref": "#/types/google-native:monitoring%2Fv3:NotificationRateLimitResponse",
          "description": "Required for alert policies with a LogMatch condition.This limit is not implemented for alert policies that are not log-based."
        }
      },
      "type": "object",
      "required": [
        "autoClose",
        "notificationChannelStrategy",
        "notificationRateLimit"
      ]
    },
    "google-native:monitoring/v3:AppEngine": {
      "description": "App Engine service. Learn more at https://cloud.google.com/appengine.",
      "properties": {
        "moduleId": {
          "type": "string",
          "description": "The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource (https://cloud.google.com/monitoring/api/resources#tag_gae_app)."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:AppEngineResponse": {
      "description": "App Engine service. Learn more at https://cloud.google.com/appengine.",
      "properties": {
        "moduleId": {
          "type": "string",
          "description": "The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource (https://cloud.google.com/monitoring/api/resources#tag_gae_app)."
        }
      },
      "type": "object",
      "required": [
        "moduleId"
      ]
    },
    "google-native:monitoring/v3:AvailabilityCriteria": {
      "description": "Future parameters for the availability SLI.",
      "type": "object"
    },
    "google-native:monitoring/v3:AvailabilityCriteriaResponse": {
      "description": "Future parameters for the availability SLI.",
      "type": "object"
    },
    "google-native:monitoring/v3:BasicAuthentication": {
      "description": "The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The password to use when authenticating with the HTTP server."
        },
        "username": {
          "type": "string",
          "description": "The username to use when authenticating with the HTTP server."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:BasicAuthenticationResponse": {
      "description": "The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks.",
      "properties": {
        "password": {
          "type": "string",
          "description": "The password to use when authenticating with the HTTP server."
        },
        "username": {
          "type": "string",
          "description": "The username to use when authenticating with the HTTP server."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:monitoring/v3:BasicService": {
      "description": "A well-known service type, defined by its service type and service labels. Documentation and examples here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli).",
      "properties": {
        "serviceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels that specify the resource that emits the monitoring data which is used for SLO reporting of this Service. Documentation and valid values for given service types here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli)."
        },
        "serviceType": {
          "type": "string",
          "description": "The type of service that this basic service defines, e.g. APP_ENGINE service type. Documentation and valid values here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli)."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:BasicServiceResponse": {
      "description": "A well-known service type, defined by its service type and service labels. Documentation and examples here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli).",
      "properties": {
        "serviceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels that specify the resource that emits the monitoring data which is used for SLO reporting of this Service. Documentation and valid values for given service types here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli)."
        },
        "serviceType": {
          "type": "string",
          "description": "The type of service that this basic service defines, e.g. APP_ENGINE service type. Documentation and valid values here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli)."
        }
      },
      "type": "object",
      "required": [
        "serviceLabels",
        "serviceType"
      ]
    },
    "google-native:monitoring/v3:BasicSli": {
      "description": "An SLI measuring performance on a well-known service type. Performance will be computed on the basis of pre-defined metrics. The type of the service_resource determines the metrics to use and the service_resource.labels and metric_labels are used to construct a monitoring filter to filter that metric down to just the data relevant to this service.",
      "properties": {
        "availability": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AvailabilityCriteria",
          "description": "Good service is defined to be the count of requests made to this service that return successfully."
        },
        "latency": {
          "$ref": "#/types/google-native:monitoring%2Fv3:LatencyCriteria",
          "description": "Good service is defined to be the count of requests made to this service that are fast enough with respect to latency.threshold."
        },
        "location": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OPTIONAL: The set of locations to which this SLI is relevant. Telemetry from other locations will not be used to calculate performance for this SLI. If omitted, this SLI applies to all locations in which the Service has activity. For service types that don't support breaking down by location, setting this field will result in an error."
        },
        "method": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OPTIONAL: The set of RPCs to which this SLI is relevant. Telemetry from other methods will not be used to calculate performance for this SLI. If omitted, this SLI applies to all the Service's methods. For service types that don't support breaking down by method, setting this field will result in an error."
        },
        "version": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OPTIONAL: The set of API versions to which this SLI is relevant. Telemetry from other API versions will not be used to calculate performance for this SLI. If omitted, this SLI applies to all API versions. For service types that don't support breaking down by version, setting this field will result in an error."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:BasicSliResponse": {
      "description": "An SLI measuring performance on a well-known service type. Performance will be computed on the basis of pre-defined metrics. The type of the service_resource determines the metrics to use and the service_resource.labels and metric_labels are used to construct a monitoring filter to filter that metric down to just the data relevant to this service.",
      "properties": {
        "availability": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AvailabilityCriteriaResponse",
          "description": "Good service is defined to be the count of requests made to this service that return successfully."
        },
        "latency": {
          "$ref": "#/types/google-native:monitoring%2Fv3:LatencyCriteriaResponse",
          "description": "Good service is defined to be the count of requests made to this service that are fast enough with respect to latency.threshold."
        },
        "location": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OPTIONAL: The set of locations to which this SLI is relevant. Telemetry from other locations will not be used to calculate performance for this SLI. If omitted, this SLI applies to all locations in which the Service has activity. For service types that don't support breaking down by location, setting this field will result in an error."
        },
        "method": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OPTIONAL: The set of RPCs to which this SLI is relevant. Telemetry from other methods will not be used to calculate performance for this SLI. If omitted, this SLI applies to all the Service's methods. For service types that don't support breaking down by method, setting this field will result in an error."
        },
        "version": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "OPTIONAL: The set of API versions to which this SLI is relevant. Telemetry from other API versions will not be used to calculate performance for this SLI. If omitted, this SLI applies to all API versions. For service types that don't support breaking down by version, setting this field will result in an error."
        }
      },
      "type": "object",
      "required": [
        "availability",
        "latency",
        "location",
        "method",
        "version"
      ]
    },
    "google-native:monitoring/v3:CloudEndpoints": {
      "description": "Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints.",
      "properties": {
        "service": {
          "type": "string",
          "description": "The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource (https://cloud.google.com/monitoring/api/resources#tag_api)."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:CloudEndpointsResponse": {
      "description": "Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints.",
      "properties": {
        "service": {
          "type": "string",
          "description": "The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource (https://cloud.google.com/monitoring/api/resources#tag_api)."
        }
      },
      "type": "object",
      "required": [
        "service"
      ]
    },
    "google-native:monitoring/v3:CloudFunctionV2Target": {
      "description": "A Synthetic Monitor deployed to a Cloud Functions V2 instance.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Fully qualified GCFv2 resource name i.e. projects/{project}/locations/{location}/functions/{function} Required."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:monitoring/v3:CloudFunctionV2TargetResponse": {
      "description": "A Synthetic Monitor deployed to a Cloud Functions V2 instance.",
      "properties": {
        "cloudRunRevision": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MonitoredResourceResponse",
          "description": "The cloud_run_revision Monitored Resource associated with the GCFv2. The Synthetic Monitor execution results (metrics, logs, and spans) are reported against this Monitored Resource. This field is output only."
        },
        "name": {
          "type": "string",
          "description": "Fully qualified GCFv2 resource name i.e. projects/{project}/locations/{location}/functions/{function} Required."
        }
      },
      "type": "object",
      "required": [
        "cloudRunRevision",
        "name"
      ]
    },
    "google-native:monitoring/v3:CloudRun": {
      "description": "Cloud Run service. Learn more at https://cloud.google.com/run.",
      "properties": {
        "location": {
          "type": "string",
          "description": "The location the service is run. Corresponds to the location resource label in the cloud_run_revision monitored resource (https://cloud.google.com/monitoring/api/resources#tag_cloud_run_revision)."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the Cloud Run service. Corresponds to the service_name resource label in the cloud_run_revision monitored resource (https://cloud.google.com/monitoring/api/resources#tag_cloud_run_revision)."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:CloudRunResponse": {
      "description": "Cloud Run service. Learn more at https://cloud.google.com/run.",
      "properties": {
        "location": {
          "type": "string",
          "description": "The location the service is run. Corresponds to the location resource label in the cloud_run_revision monitored resource (https://cloud.google.com/monitoring/api/resources#tag_cloud_run_revision)."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the Cloud Run service. Corresponds to the service_name resource label in the cloud_run_revision monitored resource (https://cloud.google.com/monitoring/api/resources#tag_cloud_run_revision)."
        }
      },
      "type": "object",
      "required": [
        "location",
        "serviceName"
      ]
    },
    "google-native:monitoring/v3:ClusterIstio": {
      "description": "Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type.",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources."
        },
        "location": {
          "type": "string",
          "description": "The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics."
        },
        "serviceNamespace": {
          "type": "string",
          "description": "The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:ClusterIstioResponse": {
      "description": "Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type.",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources."
        },
        "location": {
          "type": "string",
          "description": "The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics."
        },
        "serviceNamespace": {
          "type": "string",
          "description": "The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "location",
        "serviceName",
        "serviceNamespace"
      ]
    },
    "google-native:monitoring/v3:Condition": {
      "description": "A condition is a true/false test that determines when an alerting policy should open an incident. If a condition evaluates to true, it signifies that something is wrong.",
      "properties": {
        "conditionAbsent": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricAbsence",
          "description": "A condition that checks that a time series continues to receive new data points."
        },
        "conditionMatchedLog": {
          "$ref": "#/types/google-native:monitoring%2Fv3:LogMatch",
          "description": "A condition that checks for log messages matching given constraints. If set, no other conditions can be present."
        },
        "conditionMonitoringQueryLanguage": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MonitoringQueryLanguageCondition",
          "description": "A condition that uses the Monitoring Query Language to define alerts."
        },
        "conditionPrometheusQueryLanguage": {
          "$ref": "#/types/google-native:monitoring%2Fv3:PrometheusQueryLanguageCondition",
          "description": "A condition that uses the Prometheus query language to define alerts."
        },
        "conditionThreshold": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricThreshold",
          "description": "A condition that compares a time series against a threshold."
        },
        "displayName": {
          "type": "string",
          "description": "A short name or phrase used to identify the condition in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple conditions in the same policy."
        },
        "name": {
          "type": "string",
          "description": "Required if the condition exists. The unique resource name for this condition. Its format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID] [CONDITION_ID] is assigned by Cloud Monitoring when the condition is created as part of a new or updated alerting policy.When calling the alertPolicies.create method, do not include the name field in the conditions of the requested alerting policy. Cloud Monitoring creates the condition identifiers and includes them in the new policy.When calling the alertPolicies.update method to update a policy, including a condition name causes the existing condition to be updated. Conditions without names are added to the updated policy. Existing conditions are deleted if they are not updated.Best practice is to preserve [CONDITION_ID] if you make only small changes, such as those to condition thresholds, durations, or trigger values. Otherwise, treat the change as a new condition and let the existing condition be deleted."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:ConditionResponse": {
      "description": "A condition is a true/false test that determines when an alerting policy should open an incident. If a condition evaluates to true, it signifies that something is wrong.",
      "properties": {
        "conditionAbsent": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricAbsenceResponse",
          "description": "A condition that checks that a time series continues to receive new data points."
        },
        "conditionMatchedLog": {
          "$ref": "#/types/google-native:monitoring%2Fv3:LogMatchResponse",
          "description": "A condition that checks for log messages matching given constraints. If set, no other conditions can be present."
        },
        "conditionMonitoringQueryLanguage": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MonitoringQueryLanguageConditionResponse",
          "description": "A condition that uses the Monitoring Query Language to define alerts."
        },
        "conditionPrometheusQueryLanguage": {
          "$ref": "#/types/google-native:monitoring%2Fv3:PrometheusQueryLanguageConditionResponse",
          "description": "A condition that uses the Prometheus query language to define alerts."
        },
        "conditionThreshold": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricThresholdResponse",
          "description": "A condition that compares a time series against a threshold."
        },
        "displayName": {
          "type": "string",
          "description": "A short name or phrase used to identify the condition in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple conditions in the same policy."
        },
        "name": {
          "type": "string",
          "description": "Required if the condition exists. The unique resource name for this condition. Its format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID] [CONDITION_ID] is assigned by Cloud Monitoring when the condition is created as part of a new or updated alerting policy.When calling the alertPolicies.create method, do not include the name field in the conditions of the requested alerting policy. Cloud Monitoring creates the condition identifiers and includes them in the new policy.When calling the alertPolicies.update method to update a policy, including a condition name causes the existing condition to be updated. Conditions without names are added to the updated policy. Existing conditions are deleted if they are not updated.Best practice is to preserve [CONDITION_ID] if you make only small changes, such as those to condition thresholds, durations, or trigger values. Otherwise, treat the change as a new condition and let the existing condition be deleted."
        }
      },
      "type": "object",
      "required": [
        "conditionAbsent",
        "conditionMatchedLog",
        "conditionMonitoringQueryLanguage",
        "conditionPrometheusQueryLanguage",
        "conditionThreshold",
        "displayName",
        "name"
      ]
    },
    "google-native:monitoring/v3:ContentMatcher": {
      "description": "Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4 MB of an HTTP or HTTPS check's response (and the first 1 MB of a TCP check's response) are examined for purposes of content matching.",
      "properties": {
        "content": {
          "type": "string",
          "description": "String, regex or JSON content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed."
        },
        "jsonPathMatcher": {
          "$ref": "#/types/google-native:monitoring%2Fv3:JsonPathMatcher",
          "description": "Matcher information for MATCHES_JSON_PATH and NOT_MATCHES_JSON_PATH"
        },
        "matcher": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ContentMatcherMatcher",
          "description": "The type of content matcher that will be applied to the server output, compared to the content string when the check is run."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:ContentMatcherMatcher": {
      "description": "The type of content matcher that will be applied to the server output, compared to the content string when the check is run.",
      "type": "string",
      "enum": [
        {
          "name": "ContentMatcherOptionUnspecified",
          "description": "No content matcher type specified (maintained for backward compatibility, but deprecated for future use). Treated as CONTAINS_STRING.",
          "value": "CONTENT_MATCHER_OPTION_UNSPECIFIED"
        },
        {
          "name": "ContainsString",
          "description": "Selects substring matching. The match succeeds if the output contains the content string. This is the default value for checks without a matcher option, or where the value of matcher is CONTENT_MATCHER_OPTION_UNSPECIFIED.",
          "value": "CONTAINS_STRING"
        },
        {
          "name": "NotContainsString",
          "description": "Selects negation of substring matching. The match succeeds if the output does NOT contain the content string.",
          "value": "NOT_CONTAINS_STRING"
        },
        {
          "name": "MatchesRegex",
          "description": "Selects regular-expression matching. The match succeeds if the output matches the regular expression specified in the content string. Regex matching is only supported for HTTP/HTTPS checks.",
          "value": "MATCHES_REGEX"
        },
        {
          "name": "NotMatchesRegex",
          "description": "Selects negation of regular-expression matching. The match succeeds if the output does NOT match the regular expression specified in the content string. Regex matching is only supported for HTTP/HTTPS checks.",
          "value": "NOT_MATCHES_REGEX"
        },
        {
          "name": "MatchesJsonPath",
          "description": "Selects JSONPath matching. See JsonPathMatcher for details on when the match succeeds. JSONPath matching is only supported for HTTP/HTTPS checks.",
          "value": "MATCHES_JSON_PATH"
        },
        {
          "name": "NotMatchesJsonPath",
          "description": "Selects JSONPath matching. See JsonPathMatcher for details on when the match succeeds. Succeeds when output does NOT match as specified. JSONPath is only supported for HTTP/HTTPS checks.",
          "value": "NOT_MATCHES_JSON_PATH"
        }
      ]
    },
    "google-native:monitoring/v3:ContentMatcherResponse": {
      "description": "Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4 MB of an HTTP or HTTPS check's response (and the first 1 MB of a TCP check's response) are examined for purposes of content matching.",
      "properties": {
        "content": {
          "type": "string",
          "description": "String, regex or JSON content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed."
        },
        "jsonPathMatcher": {
          "$ref": "#/types/google-native:monitoring%2Fv3:JsonPathMatcherResponse",
          "description": "Matcher information for MATCHES_JSON_PATH and NOT_MATCHES_JSON_PATH"
        },
        "matcher": {
          "type": "string",
          "description": "The type of content matcher that will be applied to the server output, compared to the content string when the check is run."
        }
      },
      "type": "object",
      "required": [
        "content",
        "jsonPathMatcher",
        "matcher"
      ]
    },
    "google-native:monitoring/v3:Criteria": {
      "description": "Criteria specific to the AlertPolicys that this Snooze applies to. The Snooze will suppress alerts that come from one of the AlertPolicys whose names are supplied.",
      "properties": {
        "policies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The specific AlertPolicy names for the alert that should be snoozed. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[POLICY_ID] There is a limit of 16 policies per snooze. This limit is checked during snooze creation."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:CriteriaResponse": {
      "description": "Criteria specific to the AlertPolicys that this Snooze applies to. The Snooze will suppress alerts that come from one of the AlertPolicys whose names are supplied.",
      "properties": {
        "policies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The specific AlertPolicy names for the alert that should be snoozed. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[POLICY_ID] There is a limit of 16 policies per snooze. This limit is checked during snooze creation."
        }
      },
      "type": "object",
      "required": [
        "policies"
      ]
    },
    "google-native:monitoring/v3:Custom": {
      "description": "Use a custom service to designate a service that you want to monitor when none of the other service types (like App Engine, Cloud Run, or a GKE type) matches your intended service.",
      "type": "object"
    },
    "google-native:monitoring/v3:CustomResponse": {
      "description": "Use a custom service to designate a service that you want to monitor when none of the other service types (like App Engine, Cloud Run, or a GKE type) matches your intended service.",
      "type": "object"
    },
    "google-native:monitoring/v3:DistributionCut": {
      "description": "A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max.",
      "properties": {
        "distributionFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE."
        },
        "range": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GoogleMonitoringV3Range",
          "description": "Range of values considered \"good.\" For a one-sided range, set one bound to an infinite value."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:DistributionCutResponse": {
      "description": "A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max.",
      "properties": {
        "distributionFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE."
        },
        "range": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GoogleMonitoringV3RangeResponse",
          "description": "Range of values considered \"good.\" For a one-sided range, set one bound to an infinite value."
        }
      },
      "type": "object",
      "required": [
        "distributionFilter",
        "range"
      ]
    },
    "google-native:monitoring/v3:Documentation": {
      "description": "A content string and a MIME type that describes the content string's format.",
      "properties": {
        "content": {
          "type": "string",
          "description": "The body of the documentation, interpreted according to mime_type. The content may not exceed 8,192 Unicode characters and may not exceed more than 10,240 bytes when encoded in UTF-8 format, whichever is smaller. This text can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables)."
        },
        "mimeType": {
          "type": "string",
          "description": "The format of the content field. Presently, only the value \"text/markdown\" is supported. See Markdown (https://en.wikipedia.org/wiki/Markdown) for more information."
        },
        "subject": {
          "type": "string",
          "description": "Optional. The subject line of the notification. The subject line may not exceed 10,240 bytes. In notifications generated by this policy, the contents of the subject line after variable expansion will be truncated to 255 bytes or shorter at the latest UTF-8 character boundary. The 255-byte limit is recommended by this thread (https://stackoverflow.com/questions/1592291/what-is-the-email-subject-length-limit). It is both the limit imposed by some third-party ticketing products and it is common to define textual fields in databases as VARCHAR(255).The contents of the subject line can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables). If this field is missing or empty, a default subject line will be generated."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:DocumentationResponse": {
      "description": "A content string and a MIME type that describes the content string's format.",
      "properties": {
        "content": {
          "type": "string",
          "description": "The body of the documentation, interpreted according to mime_type. The content may not exceed 8,192 Unicode characters and may not exceed more than 10,240 bytes when encoded in UTF-8 format, whichever is smaller. This text can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables)."
        },
        "mimeType": {
          "type": "string",
          "description": "The format of the content field. Presently, only the value \"text/markdown\" is supported. See Markdown (https://en.wikipedia.org/wiki/Markdown) for more information."
        },
        "subject": {
          "type": "string",
          "description": "Optional. The subject line of the notification. The subject line may not exceed 10,240 bytes. In notifications generated by this policy, the contents of the subject line after variable expansion will be truncated to 255 bytes or shorter at the latest UTF-8 character boundary. The 255-byte limit is recommended by this thread (https://stackoverflow.com/questions/1592291/what-is-the-email-subject-length-limit). It is both the limit imposed by some third-party ticketing products and it is common to define textual fields in databases as VARCHAR(255).The contents of the subject line can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables). If this field is missing or empty, a default subject line will be generated."
        }
      },
      "type": "object",
      "required": [
        "content",
        "mimeType",
        "subject"
      ]
    },
    "google-native:monitoring/v3:ForecastOptions": {
      "description": "Options used when forecasting the time series and testing the predicted value against the threshold.",
      "properties": {
        "forecastHorizon": {
          "type": "string",
          "description": "The length of time into the future to forecast whether a time series will violate the threshold. If the predicted value is found to violate the threshold, and the violation is observed in all forecasts made for the configured duration, then the time series is considered to be failing. The forecast horizon can range from 1 hour to 60 hours."
        }
      },
      "type": "object",
      "required": [
        "forecastHorizon"
      ]
    },
    "google-native:monitoring/v3:ForecastOptionsResponse": {
      "description": "Options used when forecasting the time series and testing the predicted value against the threshold.",
      "properties": {
        "forecastHorizon": {
          "type": "string",
          "description": "The length of time into the future to forecast whether a time series will violate the threshold. If the predicted value is found to violate the threshold, and the violation is observed in all forecasts made for the configured duration, then the time series is considered to be failing. The forecast horizon can range from 1 hour to 60 hours."
        }
      },
      "type": "object",
      "required": [
        "forecastHorizon"
      ]
    },
    "google-native:monitoring/v3:GkeNamespace": {
      "description": "GKE Namespace. The field names correspond to the resource metadata labels on monitored resources that fall under a namespace (for example, k8s_container or k8s_pod).",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The name of the parent cluster."
        },
        "location": {
          "type": "string",
          "description": "The location of the parent cluster. This may be a zone or region."
        },
        "namespaceName": {
          "type": "string",
          "description": "The name of this namespace."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:GkeNamespaceResponse": {
      "description": "GKE Namespace. The field names correspond to the resource metadata labels on monitored resources that fall under a namespace (for example, k8s_container or k8s_pod).",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The name of the parent cluster."
        },
        "location": {
          "type": "string",
          "description": "The location of the parent cluster. This may be a zone or region."
        },
        "namespaceName": {
          "type": "string",
          "description": "The name of this namespace."
        },
        "project": {
          "type": "string",
          "description": "The project this resource lives in. For legacy services migrated from the Custom type, this may be a distinct project from the one parenting the service itself."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "location",
        "namespaceName",
        "project"
      ]
    },
    "google-native:monitoring/v3:GkeService": {
      "description": "GKE Service. The \"service\" here represents a Kubernetes service object (https://kubernetes.io/docs/concepts/services-networking/service). The field names correspond to the resource labels on k8s_service monitored resources (https://cloud.google.com/monitoring/api/resources#tag_k8s_service).",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The name of the parent cluster."
        },
        "location": {
          "type": "string",
          "description": "The location of the parent cluster. This may be a zone or region."
        },
        "namespaceName": {
          "type": "string",
          "description": "The name of the parent namespace."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of this service."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:GkeServiceResponse": {
      "description": "GKE Service. The \"service\" here represents a Kubernetes service object (https://kubernetes.io/docs/concepts/services-networking/service). The field names correspond to the resource labels on k8s_service monitored resources (https://cloud.google.com/monitoring/api/resources#tag_k8s_service).",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The name of the parent cluster."
        },
        "location": {
          "type": "string",
          "description": "The location of the parent cluster. This may be a zone or region."
        },
        "namespaceName": {
          "type": "string",
          "description": "The name of the parent namespace."
        },
        "project": {
          "type": "string",
          "description": "The project this resource lives in. For legacy services migrated from the Custom type, this may be a distinct project from the one parenting the service itself."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of this service."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "location",
        "namespaceName",
        "project",
        "serviceName"
      ]
    },
    "google-native:monitoring/v3:GkeWorkload": {
      "description": "A GKE Workload (Deployment, StatefulSet, etc). The field names correspond to the metadata labels on monitored resources that fall under a workload (for example, k8s_container or k8s_pod).",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The name of the parent cluster."
        },
        "location": {
          "type": "string",
          "description": "The location of the parent cluster. This may be a zone or region."
        },
        "namespaceName": {
          "type": "string",
          "description": "The name of the parent namespace."
        },
        "topLevelControllerName": {
          "type": "string",
          "description": "The name of this workload."
        },
        "topLevelControllerType": {
          "type": "string",
          "description": "The type of this workload (for example, \"Deployment\" or \"DaemonSet\")"
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:GkeWorkloadResponse": {
      "description": "A GKE Workload (Deployment, StatefulSet, etc). The field names correspond to the metadata labels on monitored resources that fall under a workload (for example, k8s_container or k8s_pod).",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The name of the parent cluster."
        },
        "location": {
          "type": "string",
          "description": "The location of the parent cluster. This may be a zone or region."
        },
        "namespaceName": {
          "type": "string",
          "description": "The name of the parent namespace."
        },
        "project": {
          "type": "string",
          "description": "The project this resource lives in. For legacy services migrated from the Custom type, this may be a distinct project from the one parenting the service itself."
        },
        "topLevelControllerName": {
          "type": "string",
          "description": "The name of this workload."
        },
        "topLevelControllerType": {
          "type": "string",
          "description": "The type of this workload (for example, \"Deployment\" or \"DaemonSet\")"
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "location",
        "namespaceName",
        "project",
        "topLevelControllerName",
        "topLevelControllerType"
      ]
    },
    "google-native:monitoring/v3:GoogleMonitoringV3Range": {
      "description": "Range of numerical values within min and max.",
      "properties": {
        "max": {
          "type": "number",
          "description": "Range maximum."
        },
        "min": {
          "type": "number",
          "description": "Range minimum."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:GoogleMonitoringV3RangeResponse": {
      "description": "Range of numerical values within min and max.",
      "properties": {
        "max": {
          "type": "number",
          "description": "Range maximum."
        },
        "min": {
          "type": "number",
          "description": "Range minimum."
        }
      },
      "type": "object",
      "required": [
        "max",
        "min"
      ]
    },
    "google-native:monitoring/v3:HttpCheck": {
      "description": "Information involved in an HTTP/HTTPS Uptime check request.",
      "properties": {
        "acceptedResponseStatusCodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:ResponseStatusCode"
          },
          "description": "If present, the check will only pass if the HTTP response status code is in this set of status codes. If empty, the HTTP status code will only pass if the HTTP status code is 200-299."
        },
        "authInfo": {
          "$ref": "#/types/google-native:monitoring%2Fv3:BasicAuthentication",
          "description": "The authentication information. Optional when creating an HTTP check; defaults to empty."
        },
        "body": {
          "type": "string",
          "description": "The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte.Note: If client libraries aren't used (which performs the conversion automatically) base64 encode your body data since the field is of bytes type."
        },
        "contentType": {
          "$ref": "#/types/google-native:monitoring%2Fv3:HttpCheckContentType",
          "description": "The content type header to use for the check. The following configurations result in errors: 1. Content type is specified in both the headers field and the content_type field. 2. Request method is GET and content_type is not TYPE_UNSPECIFIED 3. Request method is POST and content_type is TYPE_UNSPECIFIED. 4. Request method is POST and a \"Content-Type\" header is provided via headers field. The content_type field should be used instead."
        },
        "customContentType": {
          "type": "string",
          "description": "A user provided content type header to use for the check. The invalid configurations outlined in the content_type field apply to custom_content_type, as well as the following: 1. content_type is URL_ENCODED and custom_content_type is set. 2. content_type is USER_PROVIDED and custom_content_type is not set."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100."
        },
        "maskHeaders": {
          "type": "boolean",
          "description": "Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******."
        },
        "path": {
          "type": "string",
          "description": "Optional (defaults to \"/\"). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with \"/\", a \"/\" will be prepended automatically."
        },
        "pingConfig": {
          "$ref": "#/types/google-native:monitoring%2Fv3:PingConfig",
          "description": "Contains information needed to add pings to an HTTP check."
        },
        "port": {
          "type": "integer",
          "description": "Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL."
        },
        "requestMethod": {
          "$ref": "#/types/google-native:monitoring%2Fv3:HttpCheckRequestMethod",
          "description": "The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET."
        },
        "useSsl": {
          "type": "boolean",
          "description": "If true, use HTTPS instead of HTTP to run the check."
        },
        "validateSsl": {
          "type": "boolean",
          "description": "Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:HttpCheckContentType": {
      "description": "The content type header to use for the check. The following configurations result in errors: 1. Content type is specified in both the headers field and the content_type field. 2. Request method is GET and content_type is not TYPE_UNSPECIFIED 3. Request method is POST and content_type is TYPE_UNSPECIFIED. 4. Request method is POST and a \"Content-Type\" header is provided via headers field. The content_type field should be used instead.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "No content type specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "UrlEncoded",
          "description": "body is in URL-encoded form. Equivalent to setting the Content-Type to application/x-www-form-urlencoded in the HTTP request.",
          "value": "URL_ENCODED"
        },
        {
          "name": "UserProvided",
          "description": "body is in custom_content_type form. Equivalent to setting the Content-Type to the contents of custom_content_type in the HTTP request.",
          "value": "USER_PROVIDED"
        }
      ]
    },
    "google-native:monitoring/v3:HttpCheckRequestMethod": {
      "description": "The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET.",
      "type": "string",
      "enum": [
        {
          "name": "MethodUnspecified",
          "description": "No request method specified.",
          "value": "METHOD_UNSPECIFIED"
        },
        {
          "name": "Get",
          "description": "GET request.",
          "value": "GET"
        },
        {
          "name": "Post",
          "description": "POST request.",
          "value": "POST"
        }
      ]
    },
    "google-native:monitoring/v3:HttpCheckResponse": {
      "description": "Information involved in an HTTP/HTTPS Uptime check request.",
      "properties": {
        "acceptedResponseStatusCodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:ResponseStatusCodeResponse"
          },
          "description": "If present, the check will only pass if the HTTP response status code is in this set of status codes. If empty, the HTTP status code will only pass if the HTTP status code is 200-299."
        },
        "authInfo": {
          "$ref": "#/types/google-native:monitoring%2Fv3:BasicAuthenticationResponse",
          "description": "The authentication information. Optional when creating an HTTP check; defaults to empty."
        },
        "body": {
          "type": "string",
          "description": "The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte.Note: If client libraries aren't used (which performs the conversion automatically) base64 encode your body data since the field is of bytes type."
        },
        "contentType": {
          "type": "string",
          "description": "The content type header to use for the check. The following configurations result in errors: 1. Content type is specified in both the headers field and the content_type field. 2. Request method is GET and content_type is not TYPE_UNSPECIFIED 3. Request method is POST and content_type is TYPE_UNSPECIFIED. 4. Request method is POST and a \"Content-Type\" header is provided via headers field. The content_type field should be used instead."
        },
        "customContentType": {
          "type": "string",
          "description": "A user provided content type header to use for the check. The invalid configurations outlined in the content_type field apply to custom_content_type, as well as the following: 1. content_type is URL_ENCODED and custom_content_type is set. 2. content_type is USER_PROVIDED and custom_content_type is not set."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100."
        },
        "maskHeaders": {
          "type": "boolean",
          "description": "Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******."
        },
        "path": {
          "type": "string",
          "description": "Optional (defaults to \"/\"). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with \"/\", a \"/\" will be prepended automatically."
        },
        "pingConfig": {
          "$ref": "#/types/google-native:monitoring%2Fv3:PingConfigResponse",
          "description": "Contains information needed to add pings to an HTTP check."
        },
        "port": {
          "type": "integer",
          "description": "Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL."
        },
        "requestMethod": {
          "type": "string",
          "description": "The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET."
        },
        "useSsl": {
          "type": "boolean",
          "description": "If true, use HTTPS instead of HTTP to run the check."
        },
        "validateSsl": {
          "type": "boolean",
          "description": "Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect."
        }
      },
      "type": "object",
      "required": [
        "acceptedResponseStatusCodes",
        "authInfo",
        "body",
        "contentType",
        "customContentType",
        "headers",
        "maskHeaders",
        "path",
        "pingConfig",
        "port",
        "requestMethod",
        "useSsl",
        "validateSsl"
      ]
    },
    "google-native:monitoring/v3:InternalChecker": {
      "description": "An internal checker allows Uptime checks to run on private/internal GCP resources.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The checker's human-readable name. The display name should be unique within a Cloud Monitoring Metrics Scope in order to make it easier to identify; however, uniqueness is not enforced."
        },
        "gcpZone": {
          "type": "string",
          "description": "The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified."
        },
        "name": {
          "type": "string",
          "description": "A unique resource name for this InternalChecker. The format is: projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID] [PROJECT_ID_OR_NUMBER] is the Cloud Monitoring Metrics Scope project for the Uptime check config associated with the internal checker."
        },
        "network": {
          "type": "string",
          "description": "The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: \"default\")."
        },
        "peerProjectId": {
          "type": "string",
          "description": "The GCP project ID where the internal checker lives. Not necessary the same as the Metrics Scope project."
        },
        "state": {
          "$ref": "#/types/google-native:monitoring%2Fv3:InternalCheckerState",
          "description": "The current operational state of the internal checker."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:InternalCheckerResponse": {
      "description": "An internal checker allows Uptime checks to run on private/internal GCP resources.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The checker's human-readable name. The display name should be unique within a Cloud Monitoring Metrics Scope in order to make it easier to identify; however, uniqueness is not enforced."
        },
        "gcpZone": {
          "type": "string",
          "description": "The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified."
        },
        "name": {
          "type": "string",
          "description": "A unique resource name for this InternalChecker. The format is: projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID] [PROJECT_ID_OR_NUMBER] is the Cloud Monitoring Metrics Scope project for the Uptime check config associated with the internal checker."
        },
        "network": {
          "type": "string",
          "description": "The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: \"default\")."
        },
        "peerProjectId": {
          "type": "string",
          "description": "The GCP project ID where the internal checker lives. Not necessary the same as the Metrics Scope project."
        },
        "state": {
          "type": "string",
          "description": "The current operational state of the internal checker."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "gcpZone",
        "name",
        "network",
        "peerProjectId",
        "state"
      ]
    },
    "google-native:monitoring/v3:InternalCheckerState": {
      "description": "The current operational state of the internal checker.",
      "type": "string",
      "enum": [
        {
          "name": "Unspecified",
          "description": "An internal checker should never be in the unspecified state.",
          "value": "UNSPECIFIED"
        },
        {
          "name": "Creating",
          "description": "The checker is being created, provisioned, and configured. A checker in this state can be returned by ListInternalCheckers or GetInternalChecker, as well as by examining the long running Operation (https://cloud.google.com/apis/design/design_patterns#long_running_operations) that created it.",
          "value": "CREATING"
        },
        {
          "name": "Running",
          "description": "The checker is running and available for use. A checker in this state can be returned by ListInternalCheckers or GetInternalChecker as well as by examining the long running Operation (https://cloud.google.com/apis/design/design_patterns#long_running_operations) that created it. If a checker is being torn down, it is neither visible nor usable, so there is no \"deleting\" or \"down\" state.",
          "value": "RUNNING"
        }
      ]
    },
    "google-native:monitoring/v3:IstioCanonicalService": {
      "description": "Canonical service scoped to an Istio mesh. Anthos clusters running ASM >= 1.6.8 will have their services ingested as this type.",
      "properties": {
        "canonicalService": {
          "type": "string",
          "description": "The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio)."
        },
        "canonicalServiceNamespace": {
          "type": "string",
          "description": "The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio)."
        },
        "meshUid": {
          "type": "string",
          "description": "Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio)."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:IstioCanonicalServiceResponse": {
      "description": "Canonical service scoped to an Istio mesh. Anthos clusters running ASM >= 1.6.8 will have their services ingested as this type.",
      "properties": {
        "canonicalService": {
          "type": "string",
          "description": "The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio)."
        },
        "canonicalServiceNamespace": {
          "type": "string",
          "description": "The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio)."
        },
        "meshUid": {
          "type": "string",
          "description": "Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio)."
        }
      },
      "type": "object",
      "required": [
        "canonicalService",
        "canonicalServiceNamespace",
        "meshUid"
      ]
    },
    "google-native:monitoring/v3:JsonPathMatcher": {
      "description": "Information needed to perform a JSONPath content match. Used for ContentMatcherOption::MATCHES_JSON_PATH and ContentMatcherOption::NOT_MATCHES_JSON_PATH.",
      "properties": {
        "jsonMatcher": {
          "$ref": "#/types/google-native:monitoring%2Fv3:JsonPathMatcherJsonMatcher",
          "description": "The type of JSONPath match that will be applied to the JSON output (ContentMatcher.content)"
        },
        "jsonPath": {
          "type": "string",
          "description": "JSONPath within the response output pointing to the expected ContentMatcher::content to match against."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:JsonPathMatcherJsonMatcher": {
      "description": "The type of JSONPath match that will be applied to the JSON output (ContentMatcher.content)",
      "type": "string",
      "enum": [
        {
          "name": "JsonPathMatcherOptionUnspecified",
          "description": "No JSONPath matcher type specified (not valid).",
          "value": "JSON_PATH_MATCHER_OPTION_UNSPECIFIED"
        },
        {
          "name": "ExactMatch",
          "description": "Selects 'exact string' matching. The match succeeds if the content at the json_path within the output is exactly the same as the content string.",
          "value": "EXACT_MATCH"
        },
        {
          "name": "RegexMatch",
          "description": "Selects regular-expression matching. The match succeeds if the content at the json_path within the output matches the regular expression specified in the content string.",
          "value": "REGEX_MATCH"
        }
      ]
    },
    "google-native:monitoring/v3:JsonPathMatcherResponse": {
      "description": "Information needed to perform a JSONPath content match. Used for ContentMatcherOption::MATCHES_JSON_PATH and ContentMatcherOption::NOT_MATCHES_JSON_PATH.",
      "properties": {
        "jsonMatcher": {
          "type": "string",
          "description": "The type of JSONPath match that will be applied to the JSON output (ContentMatcher.content)"
        },
        "jsonPath": {
          "type": "string",
          "description": "JSONPath within the response output pointing to the expected ContentMatcher::content to match against."
        }
      },
      "type": "object",
      "required": [
        "jsonMatcher",
        "jsonPath"
      ]
    },
    "google-native:monitoring/v3:LabelDescriptor": {
      "description": "A description of a label.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description for the label."
        },
        "key": {
          "type": "string",
          "description": "The key for this label. The key must meet the following criteria: Does not exceed 100 characters. Matches the following regular expression: [a-zA-Z][a-zA-Z0-9_]* The first character must be an upper- or lower-case letter. The remaining characters must be letters, digits, or underscores."
        },
        "valueType": {
          "$ref": "#/types/google-native:monitoring%2Fv3:LabelDescriptorValueType",
          "description": "The type of data that can be assigned to the label."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:LabelDescriptorResponse": {
      "description": "A description of a label.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description for the label."
        },
        "key": {
          "type": "string",
          "description": "The key for this label. The key must meet the following criteria: Does not exceed 100 characters. Matches the following regular expression: [a-zA-Z][a-zA-Z0-9_]* The first character must be an upper- or lower-case letter. The remaining characters must be letters, digits, or underscores."
        },
        "valueType": {
          "type": "string",
          "description": "The type of data that can be assigned to the label."
        }
      },
      "type": "object",
      "required": [
        "description",
        "key",
        "valueType"
      ]
    },
    "google-native:monitoring/v3:LabelDescriptorValueType": {
      "description": "The type of data that can be assigned to the label.",
      "type": "string",
      "enum": [
        {
          "name": "String",
          "description": "A variable-length string, not to exceed 1,024 characters. This is the default value type.",
          "value": "STRING"
        },
        {
          "name": "Bool",
          "description": "Boolean; true or false.",
          "value": "BOOL"
        },
        {
          "name": "Int64",
          "description": "A 64-bit signed integer.",
          "value": "INT64"
        }
      ]
    },
    "google-native:monitoring/v3:LatencyCriteria": {
      "description": "Parameters for a latency threshold SLI.",
      "properties": {
        "threshold": {
          "type": "string",
          "description": "Good service is defined to be the count of requests made to this service that return in no more than threshold."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:LatencyCriteriaResponse": {
      "description": "Parameters for a latency threshold SLI.",
      "properties": {
        "threshold": {
          "type": "string",
          "description": "Good service is defined to be the count of requests made to this service that return in no more than threshold."
        }
      },
      "type": "object",
      "required": [
        "threshold"
      ]
    },
    "google-native:monitoring/v3:LogMatch": {
      "description": "A condition type that checks whether a log message in the scoping project (https://cloud.google.com/monitoring/api/v3#project_name) satisfies the given filter. Logs from other projects in the metrics scope are not evaluated.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A logs-based filter. See Advanced Logs Queries (https://cloud.google.com/logging/docs/view/advanced-queries) for how this filter should be constructed."
        },
        "labelExtractors": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map from a label key to an extractor expression, which is used to extract the value for this label key. Each entry in this map is a specification for how data should be extracted from log entries that match filter. Each combination of extracted values is treated as a separate rule for the purposes of triggering notifications. Label keys and corresponding values can be used in notifications generated by this condition.Please see the documentation on logs-based metric valueExtractors (https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.metrics#LogMetric.FIELDS.value_extractor) for syntax and examples."
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:monitoring/v3:LogMatchResponse": {
      "description": "A condition type that checks whether a log message in the scoping project (https://cloud.google.com/monitoring/api/v3#project_name) satisfies the given filter. Logs from other projects in the metrics scope are not evaluated.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A logs-based filter. See Advanced Logs Queries (https://cloud.google.com/logging/docs/view/advanced-queries) for how this filter should be constructed."
        },
        "labelExtractors": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map from a label key to an extractor expression, which is used to extract the value for this label key. Each entry in this map is a specification for how data should be extracted from log entries that match filter. Each combination of extracted values is treated as a separate rule for the purposes of triggering notifications. Label keys and corresponding values can be used in notifications generated by this condition.Please see the documentation on logs-based metric valueExtractors (https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.metrics#LogMetric.FIELDS.value_extractor) for syntax and examples."
        }
      },
      "type": "object",
      "required": [
        "filter",
        "labelExtractors"
      ]
    },
    "google-native:monitoring/v3:MeshIstio": {
      "description": "Istio service scoped to an Istio mesh. Anthos clusters running ASM < 1.6.8 will have their services ingested as this type.",
      "properties": {
        "meshUid": {
          "type": "string",
          "description": "Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics."
        },
        "serviceNamespace": {
          "type": "string",
          "description": "The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:MeshIstioResponse": {
      "description": "Istio service scoped to an Istio mesh. Anthos clusters running ASM < 1.6.8 will have their services ingested as this type.",
      "properties": {
        "meshUid": {
          "type": "string",
          "description": "Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics."
        },
        "serviceNamespace": {
          "type": "string",
          "description": "The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics."
        }
      },
      "type": "object",
      "required": [
        "meshUid",
        "serviceName",
        "serviceNamespace"
      ]
    },
    "google-native:monitoring/v3:MetricAbsence": {
      "description": "A condition type that checks that monitored resources are reporting data. The configuration defines a metric and a set of monitored resources. The predicate is considered in violation when a time series for the specified metric of a monitored resource does not include any data in the specified duration.",
      "properties": {
        "aggregations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:Aggregation"
          },
          "description": "Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources). Multiple aggregations are applied in the order specified.This field is similar to the one in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It is advisable to use the ListTimeSeries method when debugging this field."
        },
        "duration": {
          "type": "string",
          "description": "The amount of time that a time series must fail to report new data to be considered failing. The minimum value of this field is 120 seconds. Larger values that are a multiple of a minute--for example, 240 or 300 seconds--are supported. If an invalid value is given, an error will be returned. The Duration.nanos field is ignored."
        },
        "filter": {
          "type": "string",
          "description": "A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that call is useful to verify the time series that will be retrieved / processed). The filter must specify the metric type and the resource type. Optionally, it can specify resource labels and metric labels. This field must not exceed 2048 Unicode characters in length."
        },
        "trigger": {
          "$ref": "#/types/google-native:monitoring%2Fv3:Trigger",
          "description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations."
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:monitoring/v3:MetricAbsenceResponse": {
      "description": "A condition type that checks that monitored resources are reporting data. The configuration defines a metric and a set of monitored resources. The predicate is considered in violation when a time series for the specified metric of a monitored resource does not include any data in the specified duration.",
      "properties": {
        "aggregations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:AggregationResponse"
          },
          "description": "Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources). Multiple aggregations are applied in the order specified.This field is similar to the one in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It is advisable to use the ListTimeSeries method when debugging this field."
        },
        "duration": {
          "type": "string",
          "description": "The amount of time that a time series must fail to report new data to be considered failing. The minimum value of this field is 120 seconds. Larger values that are a multiple of a minute--for example, 240 or 300 seconds--are supported. If an invalid value is given, an error will be returned. The Duration.nanos field is ignored."
        },
        "filter": {
          "type": "string",
          "description": "A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that call is useful to verify the time series that will be retrieved / processed). The filter must specify the metric type and the resource type. Optionally, it can specify resource labels and metric labels. This field must not exceed 2048 Unicode characters in length."
        },
        "trigger": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TriggerResponse",
          "description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations."
        }
      },
      "type": "object",
      "required": [
        "aggregations",
        "duration",
        "filter",
        "trigger"
      ]
    },
    "google-native:monitoring/v3:MetricDescriptorLaunchStage": {
      "description": "Optional. The launch stage of the metric definition.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:monitoring/v3:MetricDescriptorMetadata": {
      "description": "Additional annotations that can be used to guide the usage of a metric.",
      "properties": {
        "ingestDelay": {
          "type": "string",
          "description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors."
        },
        "launchStage": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricDescriptorMetadataLaunchStage",
          "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
          "deprecationMessage": "Deprecated. Must use the MetricDescriptor.launch_stage instead."
        },
        "samplePeriod": {
          "type": "string",
          "description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:MetricDescriptorMetadataLaunchStage": {
      "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:monitoring/v3:MetricDescriptorMetadataResponse": {
      "description": "Additional annotations that can be used to guide the usage of a metric.",
      "properties": {
        "ingestDelay": {
          "type": "string",
          "description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors."
        },
        "launchStage": {
          "type": "string",
          "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
          "deprecationMessage": "Deprecated. Must use the MetricDescriptor.launch_stage instead."
        },
        "samplePeriod": {
          "type": "string",
          "description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period."
        }
      },
      "type": "object",
      "required": [
        "ingestDelay",
        "launchStage",
        "samplePeriod"
      ]
    },
    "google-native:monitoring/v3:MetricDescriptorMetricKind": {
      "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.",
      "type": "string",
      "enum": [
        {
          "name": "MetricKindUnspecified",
          "description": "Do not use this default value.",
          "value": "METRIC_KIND_UNSPECIFIED"
        },
        {
          "name": "Gauge",
          "description": "An instantaneous measurement of a value.",
          "value": "GAUGE"
        },
        {
          "name": "Delta",
          "description": "The change in a value during a time interval.",
          "value": "DELTA"
        },
        {
          "name": "Cumulative",
          "description": "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.",
          "value": "CUMULATIVE"
        }
      ]
    },
    "google-native:monitoring/v3:MetricDescriptorValueType": {
      "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "Do not use this default value.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Bool",
          "description": "The value is a boolean. This value type can be used only if the metric kind is GAUGE.",
          "value": "BOOL"
        },
        {
          "name": "Int64",
          "description": "The value is a signed 64-bit integer.",
          "value": "INT64"
        },
        {
          "name": "Double",
          "description": "The value is a double precision floating point number.",
          "value": "DOUBLE"
        },
        {
          "name": "String",
          "description": "The value is a text string. This value type can be used only if the metric kind is GAUGE.",
          "value": "STRING"
        },
        {
          "name": "Distribution",
          "description": "The value is a Distribution.",
          "value": "DISTRIBUTION"
        },
        {
          "name": "Money",
          "description": "The value is money.",
          "value": "MONEY"
        }
      ]
    },
    "google-native:monitoring/v3:MetricRange": {
      "description": "A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min <= x <= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE.",
      "properties": {
        "range": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GoogleMonitoringV3Range",
          "description": "Range of values considered \"good.\" For a one-sided range, set one bound to an infinite value."
        },
        "timeSeries": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:MetricRangeResponse": {
      "description": "A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min <= x <= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE.",
      "properties": {
        "range": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GoogleMonitoringV3RangeResponse",
          "description": "Range of values considered \"good.\" For a one-sided range, set one bound to an infinite value."
        },
        "timeSeries": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality."
        }
      },
      "type": "object",
      "required": [
        "range",
        "timeSeries"
      ]
    },
    "google-native:monitoring/v3:MetricThreshold": {
      "description": "A condition type that compares a collection of time series against a threshold.",
      "properties": {
        "aggregations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:Aggregation"
          },
          "description": "Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources). Multiple aggregations are applied in the order specified.This field is similar to the one in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It is advisable to use the ListTimeSeries method when debugging this field."
        },
        "comparison": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricThresholdComparison",
          "description": "The comparison to apply between the time series (indicated by filter and aggregation) and the threshold (indicated by threshold_value). The comparison is applied on each time series, with the time series on the left-hand side and the threshold on the right-hand side.Only COMPARISON_LT and COMPARISON_GT are supported currently."
        },
        "denominatorAggregations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:Aggregation"
          },
          "description": "Specifies the alignment of data points in individual time series selected by denominatorFilter as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources).When computing ratios, the aggregations and denominator_aggregations fields must use the same alignment period and produce time series that have the same periodicity and labels."
        },
        "denominatorFilter": {
          "type": "string",
          "description": "A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies a time series that should be used as the denominator of a ratio that will be compared with the threshold. If a denominator_filter is specified, the time series specified by the filter field will be used as the numerator.The filter must specify the metric type and optionally may contain restrictions on resource type, resource labels, and metric labels. This field may not exceed 2048 Unicode characters in length."
        },
        "duration": {
          "type": "string",
          "description": "The amount of time that a time series must violate the threshold to be considered failing. Currently, only values that are a multiple of a minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid value is given, an error will be returned. When choosing a duration, it is useful to keep in mind the frequency of the underlying time series data (which may also be affected by any alignments specified in the aggregations field); a good duration is long enough so that a single outlier does not generate spurious alerts, but short enough that unhealthy states are detected and alerted on quickly."
        },
        "evaluationMissingData": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricThresholdEvaluationMissingData",
          "description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving."
        },
        "filter": {
          "type": "string",
          "description": "A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that call is useful to verify the time series that will be retrieved / processed). The filter must specify the metric type and the resource type. Optionally, it can specify resource labels and metric labels. This field must not exceed 2048 Unicode characters in length."
        },
        "forecastOptions": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ForecastOptions",
          "description": "When this field is present, the MetricThreshold condition forecasts whether the time series is predicted to violate the threshold within the forecast_horizon. When this field is not set, the MetricThreshold tests the current value of the timeseries against the threshold."
        },
        "thresholdValue": {
          "type": "number",
          "description": "A value against which to compare the time series."
        },
        "trigger": {
          "$ref": "#/types/google-native:monitoring%2Fv3:Trigger",
          "description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations, or by the ratio, if denominator_filter and denominator_aggregations are specified."
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:monitoring/v3:MetricThresholdComparison": {
      "description": "The comparison to apply between the time series (indicated by filter and aggregation) and the threshold (indicated by threshold_value). The comparison is applied on each time series, with the time series on the left-hand side and the threshold on the right-hand side.Only COMPARISON_LT and COMPARISON_GT are supported currently.",
      "type": "string",
      "enum": [
        {
          "name": "ComparisonUnspecified",
          "description": "No ordering relationship is specified.",
          "value": "COMPARISON_UNSPECIFIED"
        },
        {
          "name": "ComparisonGt",
          "description": "True if the left argument is greater than the right argument.",
          "value": "COMPARISON_GT"
        },
        {
          "name": "ComparisonGe",
          "description": "True if the left argument is greater than or equal to the right argument.",
          "value": "COMPARISON_GE"
        },
        {
          "name": "ComparisonLt",
          "description": "True if the left argument is less than the right argument.",
          "value": "COMPARISON_LT"
        },
        {
          "name": "ComparisonLe",
          "description": "True if the left argument is less than or equal to the right argument.",
          "value": "COMPARISON_LE"
        },
        {
          "name": "ComparisonEq",
          "description": "True if the left argument is equal to the right argument.",
          "value": "COMPARISON_EQ"
        },
        {
          "name": "ComparisonNe",
          "description": "True if the left argument is not equal to the right argument.",
          "value": "COMPARISON_NE"
        }
      ]
    },
    "google-native:monitoring/v3:MetricThresholdEvaluationMissingData": {
      "description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving.",
      "type": "string",
      "enum": [
        {
          "name": "EvaluationMissingDataUnspecified",
          "description": "An unspecified evaluation missing data option. Equivalent to EVALUATION_MISSING_DATA_NO_OP.",
          "value": "EVALUATION_MISSING_DATA_UNSPECIFIED"
        },
        {
          "name": "EvaluationMissingDataInactive",
          "description": "If there is no data to evaluate the condition, then evaluate the condition as false.",
          "value": "EVALUATION_MISSING_DATA_INACTIVE"
        },
        {
          "name": "EvaluationMissingDataActive",
          "description": "If there is no data to evaluate the condition, then evaluate the condition as true.",
          "value": "EVALUATION_MISSING_DATA_ACTIVE"
        },
        {
          "name": "EvaluationMissingDataNoOp",
          "description": "Do not evaluate the condition to any value if there is no data.",
          "value": "EVALUATION_MISSING_DATA_NO_OP"
        }
      ]
    },
    "google-native:monitoring/v3:MetricThresholdResponse": {
      "description": "A condition type that compares a collection of time series against a threshold.",
      "properties": {
        "aggregations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:AggregationResponse"
          },
          "description": "Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources). Multiple aggregations are applied in the order specified.This field is similar to the one in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It is advisable to use the ListTimeSeries method when debugging this field."
        },
        "comparison": {
          "type": "string",
          "description": "The comparison to apply between the time series (indicated by filter and aggregation) and the threshold (indicated by threshold_value). The comparison is applied on each time series, with the time series on the left-hand side and the threshold on the right-hand side.Only COMPARISON_LT and COMPARISON_GT are supported currently."
        },
        "denominatorAggregations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:AggregationResponse"
          },
          "description": "Specifies the alignment of data points in individual time series selected by denominatorFilter as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources).When computing ratios, the aggregations and denominator_aggregations fields must use the same alignment period and produce time series that have the same periodicity and labels."
        },
        "denominatorFilter": {
          "type": "string",
          "description": "A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies a time series that should be used as the denominator of a ratio that will be compared with the threshold. If a denominator_filter is specified, the time series specified by the filter field will be used as the numerator.The filter must specify the metric type and optionally may contain restrictions on resource type, resource labels, and metric labels. This field may not exceed 2048 Unicode characters in length."
        },
        "duration": {
          "type": "string",
          "description": "The amount of time that a time series must violate the threshold to be considered failing. Currently, only values that are a multiple of a minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid value is given, an error will be returned. When choosing a duration, it is useful to keep in mind the frequency of the underlying time series data (which may also be affected by any alignments specified in the aggregations field); a good duration is long enough so that a single outlier does not generate spurious alerts, but short enough that unhealthy states are detected and alerted on quickly."
        },
        "evaluationMissingData": {
          "type": "string",
          "description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving."
        },
        "filter": {
          "type": "string",
          "description": "A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that call is useful to verify the time series that will be retrieved / processed). The filter must specify the metric type and the resource type. Optionally, it can specify resource labels and metric labels. This field must not exceed 2048 Unicode characters in length."
        },
        "forecastOptions": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ForecastOptionsResponse",
          "description": "When this field is present, the MetricThreshold condition forecasts whether the time series is predicted to violate the threshold within the forecast_horizon. When this field is not set, the MetricThreshold tests the current value of the timeseries against the threshold."
        },
        "thresholdValue": {
          "type": "number",
          "description": "A value against which to compare the time series."
        },
        "trigger": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TriggerResponse",
          "description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations, or by the ratio, if denominator_filter and denominator_aggregations are specified."
        }
      },
      "type": "object",
      "required": [
        "aggregations",
        "comparison",
        "denominatorAggregations",
        "denominatorFilter",
        "duration",
        "evaluationMissingData",
        "filter",
        "forecastOptions",
        "thresholdValue",
        "trigger"
      ]
    },
    "google-native:monitoring/v3:MonitoredResource": {
      "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"project_id\", \"instance_id\" and \"zone\": { \"type\": \"gce_instance\", \"labels\": { \"project_id\": \"my-project\", \"instance_id\": \"12345678901234\", \"zone\": \"us-central1-a\" }} ",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\"."
        },
        "type": {
          "type": "string",
          "description": "The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types (https://cloud.google.com/monitoring/api/resources) and Logging resource types (https://cloud.google.com/logging/docs/api/v2/resource-list)."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "type"
      ]
    },
    "google-native:monitoring/v3:MonitoredResourceResponse": {
      "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"project_id\", \"instance_id\" and \"zone\": { \"type\": \"gce_instance\", \"labels\": { \"project_id\": \"my-project\", \"instance_id\": \"12345678901234\", \"zone\": \"us-central1-a\" }} ",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\"."
        },
        "type": {
          "type": "string",
          "description": "The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types (https://cloud.google.com/monitoring/api/resources) and Logging resource types (https://cloud.google.com/logging/docs/api/v2/resource-list)."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "type"
      ]
    },
    "google-native:monitoring/v3:MonitoringQueryLanguageCondition": {
      "description": "A condition type that allows alert policies to be defined using Monitoring Query Language (https://cloud.google.com/monitoring/mql).",
      "properties": {
        "duration": {
          "type": "string",
          "description": "The amount of time that a time series must violate the threshold to be considered failing. Currently, only values that are a multiple of a minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid value is given, an error will be returned. When choosing a duration, it is useful to keep in mind the frequency of the underlying time series data (which may also be affected by any alignments specified in the aggregations field); a good duration is long enough so that a single outlier does not generate spurious alerts, but short enough that unhealthy states are detected and alerted on quickly."
        },
        "evaluationMissingData": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MonitoringQueryLanguageConditionEvaluationMissingData",
          "description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving."
        },
        "query": {
          "type": "string",
          "description": "Monitoring Query Language (https://cloud.google.com/monitoring/mql) query that outputs a boolean stream."
        },
        "trigger": {
          "$ref": "#/types/google-native:monitoring%2Fv3:Trigger",
          "description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations, or by the ratio, if denominator_filter and denominator_aggregations are specified."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:MonitoringQueryLanguageConditionEvaluationMissingData": {
      "description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving.",
      "type": "string",
      "enum": [
        {
          "name": "EvaluationMissingDataUnspecified",
          "description": "An unspecified evaluation missing data option. Equivalent to EVALUATION_MISSING_DATA_NO_OP.",
          "value": "EVALUATION_MISSING_DATA_UNSPECIFIED"
        },
        {
          "name": "EvaluationMissingDataInactive",
          "description": "If there is no data to evaluate the condition, then evaluate the condition as false.",
          "value": "EVALUATION_MISSING_DATA_INACTIVE"
        },
        {
          "name": "EvaluationMissingDataActive",
          "description": "If there is no data to evaluate the condition, then evaluate the condition as true.",
          "value": "EVALUATION_MISSING_DATA_ACTIVE"
        },
        {
          "name": "EvaluationMissingDataNoOp",
          "description": "Do not evaluate the condition to any value if there is no data.",
          "value": "EVALUATION_MISSING_DATA_NO_OP"
        }
      ]
    },
    "google-native:monitoring/v3:MonitoringQueryLanguageConditionResponse": {
      "description": "A condition type that allows alert policies to be defined using Monitoring Query Language (https://cloud.google.com/monitoring/mql).",
      "properties": {
        "duration": {
          "type": "string",
          "description": "The amount of time that a time series must violate the threshold to be considered failing. Currently, only values that are a multiple of a minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid value is given, an error will be returned. When choosing a duration, it is useful to keep in mind the frequency of the underlying time series data (which may also be affected by any alignments specified in the aggregations field); a good duration is long enough so that a single outlier does not generate spurious alerts, but short enough that unhealthy states are detected and alerted on quickly."
        },
        "evaluationMissingData": {
          "type": "string",
          "description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving."
        },
        "query": {
          "type": "string",
          "description": "Monitoring Query Language (https://cloud.google.com/monitoring/mql) query that outputs a boolean stream."
        },
        "trigger": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TriggerResponse",
          "description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations, or by the ratio, if denominator_filter and denominator_aggregations are specified."
        }
      },
      "type": "object",
      "required": [
        "duration",
        "evaluationMissingData",
        "query",
        "trigger"
      ]
    },
    "google-native:monitoring/v3:MutationRecord": {
      "description": "Describes a change made to a configuration.",
      "properties": {
        "mutateTime": {
          "type": "string",
          "description": "When the change occurred."
        },
        "mutatedBy": {
          "type": "string",
          "description": "The email address of the user making the change."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:MutationRecordResponse": {
      "description": "Describes a change made to a configuration.",
      "properties": {
        "mutateTime": {
          "type": "string",
          "description": "When the change occurred."
        },
        "mutatedBy": {
          "type": "string",
          "description": "The email address of the user making the change."
        }
      },
      "type": "object",
      "required": [
        "mutateTime",
        "mutatedBy"
      ]
    },
    "google-native:monitoring/v3:NotificationChannelStrategy": {
      "description": "Control over how the notification channels in notification_channels are notified when this alert fires, on a per-channel basis.",
      "properties": {
        "notificationChannelNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The full REST resource name for the notification channels that these settings apply to. Each of these correspond to the name field in one of the NotificationChannel objects referenced in the notification_channels field of this AlertPolicy. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] "
        },
        "renotifyInterval": {
          "type": "string",
          "description": "The frequency at which to send reminder notifications for open incidents."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:NotificationChannelStrategyResponse": {
      "description": "Control over how the notification channels in notification_channels are notified when this alert fires, on a per-channel basis.",
      "properties": {
        "notificationChannelNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The full REST resource name for the notification channels that these settings apply to. Each of these correspond to the name field in one of the NotificationChannel objects referenced in the notification_channels field of this AlertPolicy. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] "
        },
        "renotifyInterval": {
          "type": "string",
          "description": "The frequency at which to send reminder notifications for open incidents."
        }
      },
      "type": "object",
      "required": [
        "notificationChannelNames",
        "renotifyInterval"
      ]
    },
    "google-native:monitoring/v3:NotificationChannelVerificationStatus": {
      "description": "Indicates whether this channel has been verified or not. On a ListNotificationChannels or GetNotificationChannel operation, this field is expected to be populated.If the value is UNVERIFIED, then it indicates that the channel is non-functioning (it both requires verification and lacks verification); otherwise, it is assumed that the channel works.If the channel is neither VERIFIED nor UNVERIFIED, it implies that the channel is of a type that does not require verification or that this specific channel has been exempted from verification because it was created prior to verification being required for channels of this type.This field cannot be modified using a standard UpdateNotificationChannel operation. To change the value of this field, you must call VerifyNotificationChannel.",
      "type": "string",
      "enum": [
        {
          "name": "VerificationStatusUnspecified",
          "description": "Sentinel value used to indicate that the state is unknown, omitted, or is not applicable (as in the case of channels that neither support nor require verification in order to function).",
          "value": "VERIFICATION_STATUS_UNSPECIFIED"
        },
        {
          "name": "Unverified",
          "description": "The channel has yet to be verified and requires verification to function. Note that this state also applies to the case where the verification process has been initiated by sending a verification code but where the verification code has not been submitted to complete the process.",
          "value": "UNVERIFIED"
        },
        {
          "name": "Verified",
          "description": "It has been proven that notifications can be received on this notification channel and that someone on the project has access to messages that are delivered to that channel.",
          "value": "VERIFIED"
        }
      ]
    },
    "google-native:monitoring/v3:NotificationRateLimit": {
      "description": "Control over the rate of notifications sent to this alert policy's notification channels.",
      "properties": {
        "period": {
          "type": "string",
          "description": "Not more than one notification per period."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:NotificationRateLimitResponse": {
      "description": "Control over the rate of notifications sent to this alert policy's notification channels.",
      "properties": {
        "period": {
          "type": "string",
          "description": "Not more than one notification per period."
        }
      },
      "type": "object",
      "required": [
        "period"
      ]
    },
    "google-native:monitoring/v3:PerformanceThreshold": {
      "description": "A PerformanceThreshold is used when each window is good when that window has a sufficiently high performance.",
      "properties": {
        "basicSliPerformance": {
          "$ref": "#/types/google-native:monitoring%2Fv3:BasicSli",
          "description": "BasicSli to evaluate to judge window quality."
        },
        "performance": {
          "$ref": "#/types/google-native:monitoring%2Fv3:RequestBasedSli",
          "description": "RequestBasedSli to evaluate to judge window quality."
        },
        "threshold": {
          "type": "number",
          "description": "If window performance >= threshold, the window is counted as good."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:PerformanceThresholdResponse": {
      "description": "A PerformanceThreshold is used when each window is good when that window has a sufficiently high performance.",
      "properties": {
        "basicSliPerformance": {
          "$ref": "#/types/google-native:monitoring%2Fv3:BasicSliResponse",
          "description": "BasicSli to evaluate to judge window quality."
        },
        "performance": {
          "$ref": "#/types/google-native:monitoring%2Fv3:RequestBasedSliResponse",
          "description": "RequestBasedSli to evaluate to judge window quality."
        },
        "threshold": {
          "type": "number",
          "description": "If window performance >= threshold, the window is counted as good."
        }
      },
      "type": "object",
      "required": [
        "basicSliPerformance",
        "performance",
        "threshold"
      ]
    },
    "google-native:monitoring/v3:PingConfig": {
      "description": "Information involved in sending ICMP pings alongside public HTTP/TCP checks. For HTTP, the pings are performed for each part of the redirect chain.",
      "properties": {
        "pingsCount": {
          "type": "integer",
          "description": "Number of ICMP pings. A maximum of 3 ICMP pings is currently supported."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:PingConfigResponse": {
      "description": "Information involved in sending ICMP pings alongside public HTTP/TCP checks. For HTTP, the pings are performed for each part of the redirect chain.",
      "properties": {
        "pingsCount": {
          "type": "integer",
          "description": "Number of ICMP pings. A maximum of 3 ICMP pings is currently supported."
        }
      },
      "type": "object",
      "required": [
        "pingsCount"
      ]
    },
    "google-native:monitoring/v3:PrometheusQueryLanguageCondition": {
      "description": "A condition type that allows alert policies to be defined using Prometheus Query Language (PromQL) (https://prometheus.io/docs/prometheus/latest/querying/basics/).The PrometheusQueryLanguageCondition message contains information from a Prometheus alerting rule and its associated rule group.A Prometheus alerting rule is described here (https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/). The semantics of a Prometheus alerting rule is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#rule).A Prometheus rule group is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/). The semantics of a Prometheus rule group is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#rule_group).Because Cloud Alerting has no representation of a Prometheus rule group resource, we must embed the information of the parent rule group inside each of the conditions that refer to it. We must also update the contents of all Prometheus alerts in case the information of their rule group changes.The PrometheusQueryLanguageCondition protocol buffer combines the information of the corresponding rule group and alerting rule. The structure of the PrometheusQueryLanguageCondition protocol buffer does NOT mimic the structure of the Prometheus rule group and alerting rule YAML declarations. The PrometheusQueryLanguageCondition protocol buffer may change in the future to support future rule group and/or alerting rule features. There are no new such features at the present time (2023-06-26).",
      "properties": {
        "alertRule": {
          "type": "string",
          "description": "Optional. The alerting rule name of this alert in the corresponding Prometheus configuration file.Some external tools may require this field to be populated correctly in order to refer to the original Prometheus configuration file. The rule group name and the alert name are necessary to update the relevant AlertPolicies in case the definition of the rule group changes in the future.This field is optional. If this field is not empty, then it must be a valid Prometheus label name (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). This field may not exceed 2048 Unicode characters in length."
        },
        "duration": {
          "type": "string",
          "description": "Optional. Alerts are considered firing once their PromQL expression was evaluated to be \"true\" for this long. Alerts whose PromQL expression was not evaluated to be \"true\" for long enough are considered pending. Must be a non-negative duration or missing. This field is optional. Its default value is zero."
        },
        "evaluationInterval": {
          "type": "string",
          "description": "Optional. How often this rule should be evaluated. Must be a positive multiple of 30 seconds or missing. This field is optional. Its default value is 30 seconds. If this PrometheusQueryLanguageCondition was generated from a Prometheus alerting rule, then this value should be taken from the enclosing rule group."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels to add to or overwrite in the PromQL query result. Label names must be valid (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). Label values can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables). The only available variable names are the names of the labels in the PromQL result, including \"__name__\" and \"value\". \"labels\" may be empty."
        },
        "query": {
          "type": "string",
          "description": "The PromQL expression to evaluate. Every evaluation cycle this expression is evaluated at the current time, and all resultant time series become pending/firing alerts. This field must not be empty."
        },
        "ruleGroup": {
          "type": "string",
          "description": "Optional. The rule group name of this alert in the corresponding Prometheus configuration file.Some external tools may require this field to be populated correctly in order to refer to the original Prometheus configuration file. The rule group name and the alert name are necessary to update the relevant AlertPolicies in case the definition of the rule group changes in the future.This field is optional. If this field is not empty, then it must contain a valid UTF-8 string. This field may not exceed 2048 Unicode characters in length."
        }
      },
      "type": "object",
      "required": [
        "query"
      ]
    },
    "google-native:monitoring/v3:PrometheusQueryLanguageConditionResponse": {
      "description": "A condition type that allows alert policies to be defined using Prometheus Query Language (PromQL) (https://prometheus.io/docs/prometheus/latest/querying/basics/).The PrometheusQueryLanguageCondition message contains information from a Prometheus alerting rule and its associated rule group.A Prometheus alerting rule is described here (https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/). The semantics of a Prometheus alerting rule is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#rule).A Prometheus rule group is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/). The semantics of a Prometheus rule group is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#rule_group).Because Cloud Alerting has no representation of a Prometheus rule group resource, we must embed the information of the parent rule group inside each of the conditions that refer to it. We must also update the contents of all Prometheus alerts in case the information of their rule group changes.The PrometheusQueryLanguageCondition protocol buffer combines the information of the corresponding rule group and alerting rule. The structure of the PrometheusQueryLanguageCondition protocol buffer does NOT mimic the structure of the Prometheus rule group and alerting rule YAML declarations. The PrometheusQueryLanguageCondition protocol buffer may change in the future to support future rule group and/or alerting rule features. There are no new such features at the present time (2023-06-26).",
      "properties": {
        "alertRule": {
          "type": "string",
          "description": "Optional. The alerting rule name of this alert in the corresponding Prometheus configuration file.Some external tools may require this field to be populated correctly in order to refer to the original Prometheus configuration file. The rule group name and the alert name are necessary to update the relevant AlertPolicies in case the definition of the rule group changes in the future.This field is optional. If this field is not empty, then it must be a valid Prometheus label name (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). This field may not exceed 2048 Unicode characters in length."
        },
        "duration": {
          "type": "string",
          "description": "Optional. Alerts are considered firing once their PromQL expression was evaluated to be \"true\" for this long. Alerts whose PromQL expression was not evaluated to be \"true\" for long enough are considered pending. Must be a non-negative duration or missing. This field is optional. Its default value is zero."
        },
        "evaluationInterval": {
          "type": "string",
          "description": "Optional. How often this rule should be evaluated. Must be a positive multiple of 30 seconds or missing. This field is optional. Its default value is 30 seconds. If this PrometheusQueryLanguageCondition was generated from a Prometheus alerting rule, then this value should be taken from the enclosing rule group."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels to add to or overwrite in the PromQL query result. Label names must be valid (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). Label values can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables). The only available variable names are the names of the labels in the PromQL result, including \"__name__\" and \"value\". \"labels\" may be empty."
        },
        "query": {
          "type": "string",
          "description": "The PromQL expression to evaluate. Every evaluation cycle this expression is evaluated at the current time, and all resultant time series become pending/firing alerts. This field must not be empty."
        },
        "ruleGroup": {
          "type": "string",
          "description": "Optional. The rule group name of this alert in the corresponding Prometheus configuration file.Some external tools may require this field to be populated correctly in order to refer to the original Prometheus configuration file. The rule group name and the alert name are necessary to update the relevant AlertPolicies in case the definition of the rule group changes in the future.This field is optional. If this field is not empty, then it must contain a valid UTF-8 string. This field may not exceed 2048 Unicode characters in length."
        }
      },
      "type": "object",
      "required": [
        "alertRule",
        "duration",
        "evaluationInterval",
        "labels",
        "query",
        "ruleGroup"
      ]
    },
    "google-native:monitoring/v3:RequestBasedSli": {
      "description": "Service Level Indicators for which atomic units of service are counted directly.",
      "properties": {
        "distributionCut": {
          "$ref": "#/types/google-native:monitoring%2Fv3:DistributionCut",
          "description": "distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution."
        },
        "goodTotalRatio": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TimeSeriesRatio",
          "description": "good_total_ratio is used when the ratio of good_service to total_service is computed from two TimeSeries."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:RequestBasedSliResponse": {
      "description": "Service Level Indicators for which atomic units of service are counted directly.",
      "properties": {
        "distributionCut": {
          "$ref": "#/types/google-native:monitoring%2Fv3:DistributionCutResponse",
          "description": "distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution."
        },
        "goodTotalRatio": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TimeSeriesRatioResponse",
          "description": "good_total_ratio is used when the ratio of good_service to total_service is computed from two TimeSeries."
        }
      },
      "type": "object",
      "required": [
        "distributionCut",
        "goodTotalRatio"
      ]
    },
    "google-native:monitoring/v3:ResourceGroup": {
      "description": "The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored.",
      "properties": {
        "groupId": {
          "type": "string",
          "description": "The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]."
        },
        "resourceType": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ResourceGroupResourceType",
          "description": "The resource type of the group members."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:ResourceGroupResourceType": {
      "description": "The resource type of the group members.",
      "type": "string",
      "enum": [
        {
          "name": "ResourceTypeUnspecified",
          "description": "Default value (not valid).",
          "value": "RESOURCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Instance",
          "description": "A group of instances from Google Cloud Platform (GCP) or Amazon Web Services (AWS).",
          "value": "INSTANCE"
        },
        {
          "name": "AwsElbLoadBalancer",
          "description": "A group of Amazon ELB load balancers.",
          "value": "AWS_ELB_LOAD_BALANCER"
        }
      ]
    },
    "google-native:monitoring/v3:ResourceGroupResponse": {
      "description": "The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored.",
      "properties": {
        "groupId": {
          "type": "string",
          "description": "The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]."
        },
        "resourceType": {
          "type": "string",
          "description": "The resource type of the group members."
        }
      },
      "type": "object",
      "required": [
        "groupId",
        "resourceType"
      ]
    },
    "google-native:monitoring/v3:ResponseStatusCode": {
      "description": "A status to accept. Either a status code class like \"2xx\", or an integer status code like \"200\".",
      "properties": {
        "statusClass": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ResponseStatusCodeStatusClass",
          "description": "A class of status codes to accept."
        },
        "statusValue": {
          "type": "integer",
          "description": "A status code to accept."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:ResponseStatusCodeResponse": {
      "description": "A status to accept. Either a status code class like \"2xx\", or an integer status code like \"200\".",
      "properties": {
        "statusClass": {
          "type": "string",
          "description": "A class of status codes to accept."
        },
        "statusValue": {
          "type": "integer",
          "description": "A status code to accept."
        }
      },
      "type": "object",
      "required": [
        "statusClass",
        "statusValue"
      ]
    },
    "google-native:monitoring/v3:ResponseStatusCodeStatusClass": {
      "description": "A class of status codes to accept.",
      "type": "string",
      "enum": [
        {
          "name": "StatusClassUnspecified",
          "description": "Default value that matches no status codes.",
          "value": "STATUS_CLASS_UNSPECIFIED"
        },
        {
          "name": "StatusClass1xx",
          "description": "The class of status codes between 100 and 199.",
          "value": "STATUS_CLASS_1XX"
        },
        {
          "name": "StatusClass2xx",
          "description": "The class of status codes between 200 and 299.",
          "value": "STATUS_CLASS_2XX"
        },
        {
          "name": "StatusClass3xx",
          "description": "The class of status codes between 300 and 399.",
          "value": "STATUS_CLASS_3XX"
        },
        {
          "name": "StatusClass4xx",
          "description": "The class of status codes between 400 and 499.",
          "value": "STATUS_CLASS_4XX"
        },
        {
          "name": "StatusClass5xx",
          "description": "The class of status codes between 500 and 599.",
          "value": "STATUS_CLASS_5XX"
        },
        {
          "name": "StatusClassAny",
          "description": "The class of all status codes.",
          "value": "STATUS_CLASS_ANY"
        }
      ]
    },
    "google-native:monitoring/v3:ServiceLevelIndicator": {
      "description": "A Service-Level Indicator (SLI) describes the \"performance\" of a service. For some services, the SLI is well-defined. In such cases, the SLI can be described easily by referencing the well-known SLI and providing the needed parameters. Alternatively, a \"custom\" SLI can be defined with a query to the underlying metric store. An SLI is defined to be good_service / total_service over any queried time interval. The value of performance always falls into the range 0 <= performance <= 1. A custom SLI describes how to compute this ratio, whether this is by dividing values from a pair of time series, cutting a Distribution into good and bad counts, or counting time windows in which the service complies with a criterion. For separation of concerns, a single Service-Level Indicator measures performance for only one aspect of service quality, such as fraction of successful queries or fast-enough queries.",
      "properties": {
        "basicSli": {
          "$ref": "#/types/google-native:monitoring%2Fv3:BasicSli",
          "description": "Basic SLI on a well-known service type."
        },
        "requestBased": {
          "$ref": "#/types/google-native:monitoring%2Fv3:RequestBasedSli",
          "description": "Request-based SLIs"
        },
        "windowsBased": {
          "$ref": "#/types/google-native:monitoring%2Fv3:WindowsBasedSli",
          "description": "Windows-based SLIs"
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:ServiceLevelIndicatorResponse": {
      "description": "A Service-Level Indicator (SLI) describes the \"performance\" of a service. For some services, the SLI is well-defined. In such cases, the SLI can be described easily by referencing the well-known SLI and providing the needed parameters. Alternatively, a \"custom\" SLI can be defined with a query to the underlying metric store. An SLI is defined to be good_service / total_service over any queried time interval. The value of performance always falls into the range 0 <= performance <= 1. A custom SLI describes how to compute this ratio, whether this is by dividing values from a pair of time series, cutting a Distribution into good and bad counts, or counting time windows in which the service complies with a criterion. For separation of concerns, a single Service-Level Indicator measures performance for only one aspect of service quality, such as fraction of successful queries or fast-enough queries.",
      "properties": {
        "basicSli": {
          "$ref": "#/types/google-native:monitoring%2Fv3:BasicSliResponse",
          "description": "Basic SLI on a well-known service type."
        },
        "requestBased": {
          "$ref": "#/types/google-native:monitoring%2Fv3:RequestBasedSliResponse",
          "description": "Request-based SLIs"
        },
        "windowsBased": {
          "$ref": "#/types/google-native:monitoring%2Fv3:WindowsBasedSliResponse",
          "description": "Windows-based SLIs"
        }
      },
      "type": "object",
      "required": [
        "basicSli",
        "requestBased",
        "windowsBased"
      ]
    },
    "google-native:monitoring/v3:ServiceLevelObjectiveCalendarPeriod": {
      "description": "A calendar period, semantically \"since the start of the current \". At this time, only DAY, WEEK, FORTNIGHT, and MONTH are supported.",
      "type": "string",
      "enum": [
        {
          "name": "CalendarPeriodUnspecified",
          "description": "Undefined period, raises an error.",
          "value": "CALENDAR_PERIOD_UNSPECIFIED"
        },
        {
          "name": "Day",
          "description": "A day.",
          "value": "DAY"
        },
        {
          "name": "Week",
          "description": "A week. Weeks begin on Monday, following ISO 8601 (https://en.wikipedia.org/wiki/ISO_week_date).",
          "value": "WEEK"
        },
        {
          "name": "Fortnight",
          "description": "A fortnight. The first calendar fortnight of the year begins at the start of week 1 according to ISO 8601 (https://en.wikipedia.org/wiki/ISO_week_date).",
          "value": "FORTNIGHT"
        },
        {
          "name": "Month",
          "description": "A month.",
          "value": "MONTH"
        },
        {
          "name": "Quarter",
          "description": "A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and 1-Oct of each year.",
          "value": "QUARTER"
        },
        {
          "name": "Half",
          "description": "A half-year. Half-years start on dates 1-Jan and 1-Jul.",
          "value": "HALF"
        },
        {
          "name": "Year",
          "description": "A year.",
          "value": "YEAR"
        }
      ]
    },
    "google-native:monitoring/v3:Status": {
      "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:StatusResponse": {
      "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:monitoring/v3:SyntheticMonitorTarget": {
      "description": "Describes a Synthetic Monitor to be invoked by Uptime.",
      "properties": {
        "cloudFunctionV2": {
          "$ref": "#/types/google-native:monitoring%2Fv3:CloudFunctionV2Target",
          "description": "Target a Synthetic Monitor GCFv2 instance."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:SyntheticMonitorTargetResponse": {
      "description": "Describes a Synthetic Monitor to be invoked by Uptime.",
      "properties": {
        "cloudFunctionV2": {
          "$ref": "#/types/google-native:monitoring%2Fv3:CloudFunctionV2TargetResponse",
          "description": "Target a Synthetic Monitor GCFv2 instance."
        }
      },
      "type": "object",
      "required": [
        "cloudFunctionV2"
      ]
    },
    "google-native:monitoring/v3:TcpCheck": {
      "description": "Information required for a TCP Uptime check request.",
      "properties": {
        "pingConfig": {
          "$ref": "#/types/google-native:monitoring%2Fv3:PingConfig",
          "description": "Contains information needed to add pings to a TCP check."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:TcpCheckResponse": {
      "description": "Information required for a TCP Uptime check request.",
      "properties": {
        "pingConfig": {
          "$ref": "#/types/google-native:monitoring%2Fv3:PingConfigResponse",
          "description": "Contains information needed to add pings to a TCP check."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required."
        }
      },
      "type": "object",
      "required": [
        "pingConfig",
        "port"
      ]
    },
    "google-native:monitoring/v3:Telemetry": {
      "description": "Configuration for how to query telemetry on a Service.",
      "properties": {
        "resourceName": {
          "type": "string",
          "description": "The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:TelemetryResponse": {
      "description": "Configuration for how to query telemetry on a Service.",
      "properties": {
        "resourceName": {
          "type": "string",
          "description": "The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names."
        }
      },
      "type": "object",
      "required": [
        "resourceName"
      ]
    },
    "google-native:monitoring/v3:TimeInterval": {
      "description": "Describes a time interval: Reads: A half-open time interval. It includes the end time but excludes the start time: (startTime, endTime]. The start time must be specified, must be earlier than the end time, and should be no older than the data retention period for the metric. Writes: A closed time interval. It extends from the start time to the end time, and includes both: [startTime, endTime]. Valid time intervals depend on the MetricKind (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors#MetricKind) of the metric value. The end time must not be earlier than the start time, and the end time must not be more than 25 hours in the past or more than five minutes in the future. For GAUGE metrics, the startTime value is technically optional; if no value is specified, the start time defaults to the value of the end time, and the interval represents a single point in time. If both start and end times are specified, they must be identical. Such an interval is valid only for GAUGE metrics, which are point-in-time measurements. The end time of a new interval must be at least a millisecond after the end time of the previous interval. For DELTA metrics, the start time and end time must specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For DELTA metrics, the start time of the next interval must be at least a millisecond after the end time of the previous interval. For CUMULATIVE metrics, the start time and end time must specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points. The new start time must be at least a millisecond after the end time of the previous interval. The start time of a new interval must be at least a millisecond after the end time of the previous interval because intervals are closed. If the start time of a new interval is the same as the end time of the previous interval, then data written at the new start time could overwrite data written at the previous end time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The end of the time interval."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time."
        }
      },
      "type": "object",
      "required": [
        "endTime"
      ]
    },
    "google-native:monitoring/v3:TimeIntervalResponse": {
      "description": "Describes a time interval: Reads: A half-open time interval. It includes the end time but excludes the start time: (startTime, endTime]. The start time must be specified, must be earlier than the end time, and should be no older than the data retention period for the metric. Writes: A closed time interval. It extends from the start time to the end time, and includes both: [startTime, endTime]. Valid time intervals depend on the MetricKind (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors#MetricKind) of the metric value. The end time must not be earlier than the start time, and the end time must not be more than 25 hours in the past or more than five minutes in the future. For GAUGE metrics, the startTime value is technically optional; if no value is specified, the start time defaults to the value of the end time, and the interval represents a single point in time. If both start and end times are specified, they must be identical. Such an interval is valid only for GAUGE metrics, which are point-in-time measurements. The end time of a new interval must be at least a millisecond after the end time of the previous interval. For DELTA metrics, the start time and end time must specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For DELTA metrics, the start time of the next interval must be at least a millisecond after the end time of the previous interval. For CUMULATIVE metrics, the start time and end time must specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points. The new start time must be at least a millisecond after the end time of the previous interval. The start time of a new interval must be at least a millisecond after the end time of the previous interval because intervals are closed. If the start time of a new interval is the same as the end time of the previous interval, then data written at the new start time could overwrite data written at the previous end time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The end of the time interval."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "startTime"
      ]
    },
    "google-native:monitoring/v3:TimeSeriesRatio": {
      "description": "A TimeSeriesRatio specifies two TimeSeries to use for computing the good_service / total_service ratio. The specified TimeSeries must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE. The TimeSeriesRatio must specify exactly two of good, bad, and total, and the relationship good_service + bad_service = total_service will be assumed.",
      "properties": {
        "badServiceFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying bad service, either demanded service that was not provided or demanded service that was of inadequate quality. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE."
        },
        "goodServiceFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying good service provided. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE."
        },
        "totalServiceFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying total demanded service. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:TimeSeriesRatioResponse": {
      "description": "A TimeSeriesRatio specifies two TimeSeries to use for computing the good_service / total_service ratio. The specified TimeSeries must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE. The TimeSeriesRatio must specify exactly two of good, bad, and total, and the relationship good_service + bad_service = total_service will be assumed.",
      "properties": {
        "badServiceFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying bad service, either demanded service that was not provided or demanded service that was of inadequate quality. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE."
        },
        "goodServiceFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying good service provided. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE."
        },
        "totalServiceFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying total demanded service. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE."
        }
      },
      "type": "object",
      "required": [
        "badServiceFilter",
        "goodServiceFilter",
        "totalServiceFilter"
      ]
    },
    "google-native:monitoring/v3:Trigger": {
      "description": "Specifies how many time series must fail a predicate to trigger a condition. If not specified, then a {count: 1} trigger is used.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The absolute number of time series that must fail the predicate for the condition to be triggered."
        },
        "percent": {
          "type": "number",
          "description": "The percentage of time series that must fail the predicate for the condition to be triggered."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:TriggerResponse": {
      "description": "Specifies how many time series must fail a predicate to trigger a condition. If not specified, then a {count: 1} trigger is used.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The absolute number of time series that must fail the predicate for the condition to be triggered."
        },
        "percent": {
          "type": "number",
          "description": "The percentage of time series that must fail the predicate for the condition to be triggered."
        }
      },
      "type": "object",
      "required": [
        "count",
        "percent"
      ]
    },
    "google-native:monitoring/v3:UptimeCheckConfigCheckerType": {
      "description": "The type of checkers to use to execute the Uptime check.",
      "type": "string",
      "enum": [
        {
          "name": "CheckerTypeUnspecified",
          "description": "The default checker type. Currently converted to STATIC_IP_CHECKERS on creation, the default conversion behavior may change in the future.",
          "value": "CHECKER_TYPE_UNSPECIFIED"
        },
        {
          "name": "StaticIpCheckers",
          "description": "STATIC_IP_CHECKERS are used for uptime checks that perform egress across the public internet. STATIC_IP_CHECKERS use the static IP addresses returned by ListUptimeCheckIps.",
          "value": "STATIC_IP_CHECKERS"
        },
        {
          "name": "VpcCheckers",
          "description": "VPC_CHECKERS are used for uptime checks that perform egress using Service Directory and private network access. When using VPC_CHECKERS, the monitored resource type must be servicedirectory_service.",
          "value": "VPC_CHECKERS"
        }
      ]
    },
    "google-native:monitoring/v3:UptimeCheckConfigSelectedRegionsItem": {
      "type": "string",
      "enum": [
        {
          "name": "RegionUnspecified",
          "description": "Default value if no region is specified. Will result in Uptime checks running from all regions.",
          "value": "REGION_UNSPECIFIED"
        },
        {
          "name": "Usa",
          "description": "Allows checks to run from locations within the United States of America.",
          "value": "USA"
        },
        {
          "name": "Europe",
          "description": "Allows checks to run from locations within the continent of Europe.",
          "value": "EUROPE"
        },
        {
          "name": "SouthAmerica",
          "description": "Allows checks to run from locations within the continent of South America.",
          "value": "SOUTH_AMERICA"
        },
        {
          "name": "AsiaPacific",
          "description": "Allows checks to run from locations within the Asia Pacific area (ex: Singapore).",
          "value": "ASIA_PACIFIC"
        },
        {
          "name": "UsaOregon",
          "description": "Allows checks to run from locations within the western United States of America",
          "value": "USA_OREGON"
        },
        {
          "name": "UsaIowa",
          "description": "Allows checks to run from locations within the central United States of America",
          "value": "USA_IOWA"
        },
        {
          "name": "UsaVirginia",
          "description": "Allows checks to run from locations within the eastern United States of America",
          "value": "USA_VIRGINIA"
        }
      ]
    },
    "google-native:monitoring/v3:WindowsBasedSli": {
      "description": "A WindowsBasedSli defines good_service as the count of time windows for which the provided service was of good quality. Criteria for determining if service was good are embedded in the window_criterion.",
      "properties": {
        "goodBadMetricFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries with ValueType = BOOL. The window is good if any true values appear in the window."
        },
        "goodTotalRatioThreshold": {
          "$ref": "#/types/google-native:monitoring%2Fv3:PerformanceThreshold",
          "description": "A window is good if its performance is high enough."
        },
        "metricMeanInRange": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricRange",
          "description": "A window is good if the metric's value is in a good range, averaged across returned streams."
        },
        "metricSumInRange": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricRange",
          "description": "A window is good if the metric's value is in a good range, summed across returned streams."
        },
        "windowPeriod": {
          "type": "string",
          "description": "Duration over which window quality is evaluated. Must be an integer fraction of a day and at least 60s."
        }
      },
      "type": "object"
    },
    "google-native:monitoring/v3:WindowsBasedSliResponse": {
      "description": "A WindowsBasedSli defines good_service as the count of time windows for which the provided service was of good quality. Criteria for determining if service was good are embedded in the window_criterion.",
      "properties": {
        "goodBadMetricFilter": {
          "type": "string",
          "description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries with ValueType = BOOL. The window is good if any true values appear in the window."
        },
        "goodTotalRatioThreshold": {
          "$ref": "#/types/google-native:monitoring%2Fv3:PerformanceThresholdResponse",
          "description": "A window is good if its performance is high enough."
        },
        "metricMeanInRange": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricRangeResponse",
          "description": "A window is good if the metric's value is in a good range, averaged across returned streams."
        },
        "metricSumInRange": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricRangeResponse",
          "description": "A window is good if the metric's value is in a good range, summed across returned streams."
        },
        "windowPeriod": {
          "type": "string",
          "description": "Duration over which window quality is evaluated. Must be an integer fraction of a day and at least 60s."
        }
      },
      "type": "object",
      "required": [
        "goodBadMetricFilter",
        "goodTotalRatioThreshold",
        "metricMeanInRange",
        "metricSumInRange",
        "windowPeriod"
      ]
    },
    "google-native:networkconnectivity/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:networkconnectivity/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:networkconnectivity/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:networkconnectivity/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:ConsumerPscConfig": {
      "description": "Allow the producer to specify which consumers can connect to it.",
      "properties": {
        "disableGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "network": {
          "type": "string",
          "description": "The resource path of the consumer network where PSC connections are allowed to be created in. Note, this network does not need be in the ConsumerPscConfig.project in the case of SharedVPC. Example: projects/{projectNumOrId}/global/networks/{networkId}."
        },
        "project": {
          "type": "string",
          "description": "The consumer project where PSC connections are allowed to be created in."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:ConsumerPscConfigResponse": {
      "description": "Allow the producer to specify which consumers can connect to it.",
      "properties": {
        "disableGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "network": {
          "type": "string",
          "description": "The resource path of the consumer network where PSC connections are allowed to be created in. Note, this network does not need be in the ConsumerPscConfig.project in the case of SharedVPC. Example: projects/{projectNumOrId}/global/networks/{networkId}."
        },
        "project": {
          "type": "string",
          "description": "The consumer project where PSC connections are allowed to be created in."
        },
        "state": {
          "type": "string",
          "description": "Overall state of PSC Connections management for this consumer psc config."
        }
      },
      "type": "object",
      "required": [
        "disableGlobalAccess",
        "network",
        "project",
        "state"
      ]
    },
    "google-native:networkconnectivity/v1:ConsumerPscConnectionResponse": {
      "description": "PSC connection details on consumer side.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:GoogleRpcStatusResponse",
          "description": "The most recent error during operating this connection."
        },
        "errorInfo": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:GoogleRpcErrorInfoResponse",
          "description": "The error info for the latest error during operating this connection."
        },
        "errorType": {
          "type": "string",
          "description": "The error type indicates whether the error is consumer facing, producer facing or system internal."
        },
        "forwardingRule": {
          "type": "string",
          "description": "The URI of the consumer forwarding rule created. Example: projects/{projectNumOrId}/regions/us-east1/networks/{resourceId}."
        },
        "gceOperation": {
          "type": "string",
          "description": "The last Compute Engine operation to setup PSC connection."
        },
        "ip": {
          "type": "string",
          "description": "The IP literal allocated on the consumer network for the PSC forwarding rule that is created to connect to the producer service attachment in this service connection map."
        },
        "network": {
          "type": "string",
          "description": "The consumer network whose PSC forwarding rule is connected to the service attachments in this service connection map. Note that the network could be on a different project (shared VPC)."
        },
        "project": {
          "type": "string",
          "description": "The consumer project whose PSC forwarding rule is connected to the service attachments in this service connection map."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC forwarding rule connected to the service attachments in this service connection map."
        },
        "serviceAttachmentUri": {
          "type": "string",
          "description": "The URI of a service attachment which is the target of the PSC connection."
        },
        "state": {
          "type": "string",
          "description": "The state of the PSC connection."
        }
      },
      "type": "object",
      "required": [
        "error",
        "errorInfo",
        "errorType",
        "forwardingRule",
        "gceOperation",
        "ip",
        "network",
        "project",
        "pscConnectionId",
        "serviceAttachmentUri",
        "state"
      ]
    },
    "google-native:networkconnectivity/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:networkconnectivity/v1:Filter": {
      "description": "Filter matches L4 traffic.",
      "properties": {
        "destRange": {
          "type": "string",
          "description": "Optional. The destination IP range of outgoing packets that this policy-based route applies to. Default is \"0.0.0.0/0\" if protocol version is IPv4."
        },
        "ipProtocol": {
          "type": "string",
          "description": "Optional. The IP protocol that this policy-based route applies to. Valid values are 'TCP', 'UDP', and 'ALL'. Default is 'ALL'."
        },
        "protocolVersion": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:FilterProtocolVersion",
          "description": "Internet protocol versions this policy-based route applies to. For this version, only IPV4 is supported."
        },
        "srcRange": {
          "type": "string",
          "description": "Optional. The source IP range of outgoing packets that this policy-based route applies to. Default is \"0.0.0.0/0\" if protocol version is IPv4."
        }
      },
      "type": "object",
      "required": [
        "protocolVersion"
      ]
    },
    "google-native:networkconnectivity/v1:FilterProtocolVersion": {
      "description": "Required. Internet protocol versions this policy-based route applies to. For this version, only IPV4 is supported.",
      "type": "string",
      "enum": [
        {
          "name": "ProtocolVersionUnspecified",
          "description": "Default value.",
          "value": "PROTOCOL_VERSION_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "The PBR is for IPv4 internet protocol traffic.",
          "value": "IPV4"
        }
      ]
    },
    "google-native:networkconnectivity/v1:FilterResponse": {
      "description": "Filter matches L4 traffic.",
      "properties": {
        "destRange": {
          "type": "string",
          "description": "Optional. The destination IP range of outgoing packets that this policy-based route applies to. Default is \"0.0.0.0/0\" if protocol version is IPv4."
        },
        "ipProtocol": {
          "type": "string",
          "description": "Optional. The IP protocol that this policy-based route applies to. Valid values are 'TCP', 'UDP', and 'ALL'. Default is 'ALL'."
        },
        "protocolVersion": {
          "type": "string",
          "description": "Internet protocol versions this policy-based route applies to. For this version, only IPV4 is supported."
        },
        "srcRange": {
          "type": "string",
          "description": "Optional. The source IP range of outgoing packets that this policy-based route applies to. Default is \"0.0.0.0/0\" if protocol version is IPv4."
        }
      },
      "type": "object",
      "required": [
        "destRange",
        "ipProtocol",
        "protocolVersion",
        "srcRange"
      ]
    },
    "google-native:networkconnectivity/v1:GoogleRpcErrorInfoResponse": {
      "description": "Describes the cause of the error with structured details. Example of an error when contacting the \"pubsub.googleapis.com\" API when it is not enabled: { \"reason\": \"API_DISABLED\" \"domain\": \"googleapis.com\" \"metadata\": { \"resource\": \"projects/123\", \"service\": \"pubsub.googleapis.com\" } } This response indicates that the pubsub.googleapis.com API is not enabled. Example of an error that is returned when attempting to create a Spanner instance in a region that is out of stock: { \"reason\": \"STOCKOUT\" \"domain\": \"spanner.googleapis.com\", \"metadata\": { \"availableRegions\": \"us-central1,us-east2\" } }",
      "properties": {
        "domain": {
          "type": "string",
          "description": "The 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\". If the error is generated by some common infrastructure, the error domain must be a globally unique value that identifies the infrastructure. For Google API infrastructure, the error domain is \"googleapis.com\"."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional structured details about this error. Keys should match /[a-zA-Z0-9-_]/ and be limited to 64 characters in length. When identifying the current value of an exceeded limit, the units should be contained in the key, not the value. For example, rather than {\"instanceLimit\": \"100/request\"}, should be returned as, {\"instanceLimitPerRequest\": \"100\"}, if the client exceeds the number of instances that can be created in a single (batch) request."
        },
        "reason": {
          "type": "string",
          "description": "The 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. This should be at most 63 characters and match a regular expression of `A-Z+[A-Z0-9]`, which represents UPPER_SNAKE_CASE."
        }
      },
      "type": "object",
      "required": [
        "domain",
        "metadata",
        "reason"
      ]
    },
    "google-native:networkconnectivity/v1:GoogleRpcStatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:networkconnectivity/v1:InterconnectAttachment": {
      "description": "InterconnectAttachment that this route applies to.",
      "properties": {
        "region": {
          "type": "string",
          "description": "Optional. Cloud region to install this policy-based route on interconnect attachment. Use `all` to install it on all interconnect attachments."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:InterconnectAttachmentResponse": {
      "description": "InterconnectAttachment that this route applies to.",
      "properties": {
        "region": {
          "type": "string",
          "description": "Optional. Cloud region to install this policy-based route on interconnect attachment. Use `all` to install it on all interconnect attachments."
        }
      },
      "type": "object",
      "required": [
        "region"
      ]
    },
    "google-native:networkconnectivity/v1:InternalRangeOverlapsItem": {
      "type": "string",
      "enum": [
        {
          "name": "OverlapUnspecified",
          "description": "No overlap overrides.",
          "value": "OVERLAP_UNSPECIFIED"
        },
        {
          "name": "OverlapRouteRange",
          "description": "Allow creation of static routes more specific that the current internal range.",
          "value": "OVERLAP_ROUTE_RANGE"
        },
        {
          "name": "OverlapExistingSubnetRange",
          "description": "Allow creation of internal ranges that overlap with existing subnets.",
          "value": "OVERLAP_EXISTING_SUBNET_RANGE"
        }
      ]
    },
    "google-native:networkconnectivity/v1:InternalRangePeering": {
      "description": "The type of peering set for this internal range.",
      "type": "string",
      "enum": [
        {
          "name": "PeeringUnspecified",
          "description": "If Peering is left unspecified in CreateInternalRange or UpdateInternalRange, it will be defaulted to FOR_SELF.",
          "value": "PEERING_UNSPECIFIED"
        },
        {
          "name": "ForSelf",
          "description": "This is the default behavior and represents the case that this internal range is intended to be used in the VPC in which it is created and is accessible from its peers. This implies that peers or peers-of-peers cannot use this range.",
          "value": "FOR_SELF"
        },
        {
          "name": "ForPeer",
          "description": "This behavior can be set when the internal range is being reserved for usage by peers. This means that no resource within the VPC in which it is being created can use this to associate with a VPC resource, but one of the peers can. This represents donating a range for peers to use.",
          "value": "FOR_PEER"
        },
        {
          "name": "NotShared",
          "description": "This behavior can be set when the internal range is being reserved for usage by the VPC in which it is created, but not shared with peers. In a sense, it is local to the VPC. This can be used to create internal ranges for various purposes like HTTP_INTERNAL_LOAD_BALANCER or for Interconnect routes that are not shared with peers. This also implies that peers cannot use this range in a way that is visible to this VPC, but can re-use this range as long as it is NOT_SHARED from the peer VPC, too.",
          "value": "NOT_SHARED"
        }
      ]
    },
    "google-native:networkconnectivity/v1:InternalRangeUsage": {
      "description": "The type of usage set for this InternalRange.",
      "type": "string",
      "enum": [
        {
          "name": "UsageUnspecified",
          "description": "Unspecified usage is allowed in calls which identify the resource by other fields and do not need Usage set to complete. These are, i.e.: GetInternalRange and DeleteInternalRange. Usage needs to be specified explicitly in CreateInternalRange or UpdateInternalRange calls.",
          "value": "USAGE_UNSPECIFIED"
        },
        {
          "name": "ForVpc",
          "description": "A VPC resource can use the reserved CIDR block by associating it with the internal range resource if usage is set to FOR_VPC.",
          "value": "FOR_VPC"
        },
        {
          "name": "ExternalToVpc",
          "description": "Ranges created with EXTERNAL_TO_VPC cannot be associated with VPC resources and are meant to block out address ranges for various use cases, like for example, usage on-prem, with dynamic route announcements via interconnect.",
          "value": "EXTERNAL_TO_VPC"
        }
      ]
    },
    "google-native:networkconnectivity/v1:LinkedInterconnectAttachments": {
      "description": "A collection of VLAN attachment resources. These resources should be redundant attachments that all advertise the same prefixes to Google Cloud. Alternatively, in active/passive configurations, all attachments should be capable of advertising the same prefixes.",
      "properties": {
        "siteToSiteDataTransfer": {
          "type": "boolean",
          "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations)."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URIs of linked interconnect attachment resources"
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:LinkedInterconnectAttachmentsResponse": {
      "description": "A collection of VLAN attachment resources. These resources should be redundant attachments that all advertise the same prefixes to Google Cloud. Alternatively, in active/passive configurations, all attachments should be capable of advertising the same prefixes.",
      "properties": {
        "siteToSiteDataTransfer": {
          "type": "boolean",
          "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations)."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URIs of linked interconnect attachment resources"
        },
        "vpcNetwork": {
          "type": "string",
          "description": "The VPC network where these VLAN attachments are located."
        }
      },
      "type": "object",
      "required": [
        "siteToSiteDataTransfer",
        "uris",
        "vpcNetwork"
      ]
    },
    "google-native:networkconnectivity/v1:LinkedRouterApplianceInstances": {
      "description": "A collection of router appliance instances. If you configure multiple router appliance instances to receive data from the same set of sites outside of Google Cloud, we recommend that you associate those instances with the same spoke.",
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:RouterApplianceInstance"
          },
          "description": "The list of router appliance instances."
        },
        "siteToSiteDataTransfer": {
          "type": "boolean",
          "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations)."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:LinkedRouterApplianceInstancesResponse": {
      "description": "A collection of router appliance instances. If you configure multiple router appliance instances to receive data from the same set of sites outside of Google Cloud, we recommend that you associate those instances with the same spoke.",
      "properties": {
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:RouterApplianceInstanceResponse"
          },
          "description": "The list of router appliance instances."
        },
        "siteToSiteDataTransfer": {
          "type": "boolean",
          "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations)."
        },
        "vpcNetwork": {
          "type": "string",
          "description": "The VPC network where these router appliance instances are located."
        }
      },
      "type": "object",
      "required": [
        "instances",
        "siteToSiteDataTransfer",
        "vpcNetwork"
      ]
    },
    "google-native:networkconnectivity/v1:LinkedVpcNetwork": {
      "description": "An existing VPC network.",
      "properties": {
        "excludeExportRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. IP ranges encompassing the subnets to be excluded from peering."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the VPC network resource."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:networkconnectivity/v1:LinkedVpcNetworkResponse": {
      "description": "An existing VPC network.",
      "properties": {
        "excludeExportRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. IP ranges encompassing the subnets to be excluded from peering."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the VPC network resource."
        }
      },
      "type": "object",
      "required": [
        "excludeExportRanges",
        "uri"
      ]
    },
    "google-native:networkconnectivity/v1:LinkedVpnTunnels": {
      "description": "A collection of Cloud VPN tunnel resources. These resources should be redundant HA VPN tunnels that all advertise the same prefixes to Google Cloud. Alternatively, in a passive/active configuration, all tunnels should be capable of advertising the same prefixes.",
      "properties": {
        "siteToSiteDataTransfer": {
          "type": "boolean",
          "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations)."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URIs of linked VPN tunnel resources."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:LinkedVpnTunnelsResponse": {
      "description": "A collection of Cloud VPN tunnel resources. These resources should be redundant HA VPN tunnels that all advertise the same prefixes to Google Cloud. Alternatively, in a passive/active configuration, all tunnels should be capable of advertising the same prefixes.",
      "properties": {
        "siteToSiteDataTransfer": {
          "type": "boolean",
          "description": "A value that controls whether site-to-site data transfer is enabled for these resources. Data transfer is available only in [supported locations](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/locations)."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URIs of linked VPN tunnel resources."
        },
        "vpcNetwork": {
          "type": "string",
          "description": "The VPC network where these VPN tunnels are located."
        }
      },
      "type": "object",
      "required": [
        "siteToSiteDataTransfer",
        "uris",
        "vpcNetwork"
      ]
    },
    "google-native:networkconnectivity/v1:PolicyBasedRouteNextHopOtherRoutes": {
      "description": "Optional. Other routes that will be referenced to determine the next hop of the packet.",
      "type": "string",
      "enum": [
        {
          "name": "OtherRoutesUnspecified",
          "description": "Default value.",
          "value": "OTHER_ROUTES_UNSPECIFIED"
        },
        {
          "name": "DefaultRouting",
          "description": "Use the routes from the default routing tables (system-generated routes, custom routes, peering route) to determine the next hop. This will effectively exclude matching packets being applied on other PBRs with a lower priority.",
          "value": "DEFAULT_ROUTING"
        }
      ]
    },
    "google-native:networkconnectivity/v1:ProducerPscConfig": {
      "description": "The PSC configurations on producer side.",
      "properties": {
        "serviceAttachmentUri": {
          "type": "string",
          "description": "The resource path of a service attachment. Example: projects/{projectNumOrId}/regions/{region}/serviceAttachments/{resourceId}."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:ProducerPscConfigResponse": {
      "description": "The PSC configurations on producer side.",
      "properties": {
        "serviceAttachmentUri": {
          "type": "string",
          "description": "The resource path of a service attachment. Example: projects/{projectNumOrId}/regions/{region}/serviceAttachments/{resourceId}."
        }
      },
      "type": "object",
      "required": [
        "serviceAttachmentUri"
      ]
    },
    "google-native:networkconnectivity/v1:PscConfig": {
      "description": "Configuration used for Private Service Connect connections. Used when Infrastructure is PSC.",
      "properties": {
        "limit": {
          "type": "string",
          "description": "Optional. Max number of PSC connections for this policy."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource paths of subnetworks to use for IP address management. Example: projects/{projectNumOrId}/regions/{region}/subnetworks/{resourceId}."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:PscConfigResponse": {
      "description": "Configuration used for Private Service Connect connections. Used when Infrastructure is PSC.",
      "properties": {
        "limit": {
          "type": "string",
          "description": "Optional. Max number of PSC connections for this policy."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource paths of subnetworks to use for IP address management. Example: projects/{projectNumOrId}/regions/{region}/subnetworks/{resourceId}."
        }
      },
      "type": "object",
      "required": [
        "limit",
        "subnetworks"
      ]
    },
    "google-native:networkconnectivity/v1:PscConnectionResponse": {
      "description": "Information about a specific Private Service Connect connection.",
      "properties": {
        "consumerAddress": {
          "type": "string",
          "description": "The resource reference of the consumer address."
        },
        "consumerForwardingRule": {
          "type": "string",
          "description": "The resource reference of the PSC Forwarding Rule within the consumer VPC."
        },
        "consumerTargetProject": {
          "type": "string",
          "description": "The project where the PSC connection is created."
        },
        "error": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:GoogleRpcStatusResponse",
          "description": "The most recent error during operating this connection."
        },
        "errorInfo": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:GoogleRpcErrorInfoResponse",
          "description": "The error info for the latest error during operating this connection."
        },
        "errorType": {
          "type": "string",
          "description": "The error type indicates whether the error is consumer facing, producer facing or system internal."
        },
        "gceOperation": {
          "type": "string",
          "description": "The last Compute Engine operation to setup PSC connection."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC forwarding rule."
        },
        "state": {
          "type": "string",
          "description": "State of the PSC Connection"
        }
      },
      "type": "object",
      "required": [
        "consumerAddress",
        "consumerForwardingRule",
        "consumerTargetProject",
        "error",
        "errorInfo",
        "errorType",
        "gceOperation",
        "pscConnectionId",
        "state"
      ]
    },
    "google-native:networkconnectivity/v1:RouterApplianceInstance": {
      "description": "A router appliance instance is a Compute Engine virtual machine (VM) instance that acts as a BGP speaker. A router appliance instance is specified by the URI of the VM and the internal IP address of one of the VM's network interfaces.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address on the VM to use for peering."
        },
        "virtualMachine": {
          "type": "string",
          "description": "The URI of the VM."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:RouterApplianceInstanceResponse": {
      "description": "A router appliance instance is a Compute Engine virtual machine (VM) instance that acts as a BGP speaker. A router appliance instance is specified by the URI of the VM and the internal IP address of one of the VM's network interfaces.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address on the VM to use for peering."
        },
        "virtualMachine": {
          "type": "string",
          "description": "The URI of the VM."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "virtualMachine"
      ]
    },
    "google-native:networkconnectivity/v1:RoutingVPC": {
      "description": "RoutingVPC contains information about the VPC networks associated with the spokes of a Network Connectivity Center hub.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "The URI of the VPC network."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:RoutingVPCResponse": {
      "description": "RoutingVPC contains information about the VPC networks associated with the spokes of a Network Connectivity Center hub.",
      "properties": {
        "requiredForNewSiteToSiteDataTransferSpokes": {
          "type": "boolean",
          "description": "If true, indicates that this VPC network is currently associated with spokes that use the data transfer feature (spokes where the site_to_site_data_transfer field is set to true). If you create new spokes that use data transfer, they must be associated with this VPC network. At most, one VPC network will have this field set to true."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the VPC network."
        }
      },
      "type": "object",
      "required": [
        "requiredForNewSiteToSiteDataTransferSpokes",
        "uri"
      ]
    },
    "google-native:networkconnectivity/v1:SpokeStateCountResponse": {
      "description": "The number of spokes that are in a particular state and associated with a given hub.",
      "properties": {
        "count": {
          "type": "string",
          "description": "The total number of spokes that are in this state and associated with a given hub."
        },
        "state": {
          "type": "string",
          "description": "The state of the spokes."
        }
      },
      "type": "object",
      "required": [
        "count",
        "state"
      ]
    },
    "google-native:networkconnectivity/v1:SpokeStateReasonCountResponse": {
      "description": "The number of spokes in the hub that are inactive for this reason.",
      "properties": {
        "count": {
          "type": "string",
          "description": "The total number of spokes that are inactive for a particular reason and associated with a given hub."
        },
        "stateReasonCode": {
          "type": "string",
          "description": "The reason that a spoke is inactive."
        }
      },
      "type": "object",
      "required": [
        "count",
        "stateReasonCode"
      ]
    },
    "google-native:networkconnectivity/v1:SpokeSummaryResponse": {
      "description": "Summarizes information about the spokes associated with a hub. The summary includes a count of spokes according to type and according to state. If any spokes are inactive, the summary also lists the reasons they are inactive, including a count for each reason.",
      "properties": {
        "spokeStateCounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:SpokeStateCountResponse"
          },
          "description": "Counts the number of spokes that are in each state and associated with a given hub."
        },
        "spokeStateReasonCounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:SpokeStateReasonCountResponse"
          },
          "description": "Counts the number of spokes that are inactive for each possible reason and associated with a given hub."
        },
        "spokeTypeCounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:SpokeTypeCountResponse"
          },
          "description": "Counts the number of spokes of each type that are associated with a specific hub."
        }
      },
      "type": "object",
      "required": [
        "spokeStateCounts",
        "spokeStateReasonCounts",
        "spokeTypeCounts"
      ]
    },
    "google-native:networkconnectivity/v1:SpokeTypeCountResponse": {
      "description": "The number of spokes of a given type that are associated with a specific hub. The type indicates what kind of resource is associated with the spoke.",
      "properties": {
        "count": {
          "type": "string",
          "description": "The total number of spokes of this type that are associated with the hub."
        },
        "spokeType": {
          "type": "string",
          "description": "The type of the spokes."
        }
      },
      "type": "object",
      "required": [
        "count",
        "spokeType"
      ]
    },
    "google-native:networkconnectivity/v1:StateReasonResponse": {
      "description": "The reason a spoke is inactive.",
      "properties": {
        "code": {
          "type": "string",
          "description": "The code associated with this reason."
        },
        "message": {
          "type": "string",
          "description": "Human-readable details about this reason."
        },
        "userDetails": {
          "type": "string",
          "description": "Additional information provided by the user in the RejectSpoke call."
        }
      },
      "type": "object",
      "required": [
        "code",
        "message",
        "userDetails"
      ]
    },
    "google-native:networkconnectivity/v1:VirtualMachine": {
      "description": "VM instances to which this policy-based route applies to.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of VM instance tags the this policy-based route applies to. VM instances that have ANY of tags specified here will install this PBR."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1:VirtualMachineResponse": {
      "description": "VM instances to which this policy-based route applies to.",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of VM instance tags the this policy-based route applies to. VM instances that have ANY of tags specified here will install this PBR."
        }
      },
      "type": "object",
      "required": [
        "tags"
      ]
    },
    "google-native:networkconnectivity/v1:WarningsResponse": {
      "description": "Informational warning message.",
      "properties": {
        "code": {
          "type": "string",
          "description": "A warning code, if applicable."
        },
        "data": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata about this warning in key: value format. The key should 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."
        },
        "warningMessage": {
          "type": "string",
          "description": "A human-readable description of the warning code."
        }
      },
      "type": "object",
      "required": [
        "code",
        "data",
        "warningMessage"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1alpha1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1alpha1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:networkconnectivity/v1alpha1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1alpha1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1alpha1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:InternalRangeOverlapsItem": {
      "type": "string",
      "enum": [
        {
          "name": "OverlapUnspecified",
          "description": "No overlap overrides.",
          "value": "OVERLAP_UNSPECIFIED"
        },
        {
          "name": "OverlapRouteRange",
          "description": "Allow creation of static routes more specific than the current internal range.",
          "value": "OVERLAP_ROUTE_RANGE"
        },
        {
          "name": "OverlapExistingSubnetRange",
          "description": "Allow creation of internal ranges that overlap with existing subnets.",
          "value": "OVERLAP_EXISTING_SUBNET_RANGE"
        }
      ]
    },
    "google-native:networkconnectivity/v1alpha1:InternalRangePeering": {
      "description": "The type of peering set for this internal range.",
      "type": "string",
      "enum": [
        {
          "name": "PeeringUnspecified",
          "description": "If Peering is left unspecified in CreateInternalRange or UpdateInternalRange, it will be defaulted to FOR_SELF.",
          "value": "PEERING_UNSPECIFIED"
        },
        {
          "name": "ForSelf",
          "description": "This is the default behavior and represents the case that this internal range is intended to be used in the VPC in which it is created and is accessible from its peers. This implies that peers or peers-of-peers cannot use this range.",
          "value": "FOR_SELF"
        },
        {
          "name": "ForPeer",
          "description": "This behavior can be set when the internal range is being reserved for usage by the peers. This means that no resource within the VPC in which it is being created can use this to associate with a VPC resource, but one of the peers can. This represents donating a range for peers to use.",
          "value": "FOR_PEER"
        },
        {
          "name": "NotShared",
          "description": "This behavior can be set when the internal range is being reserved for usage by the VPC in which it is created but not shared with the peers. In a sense it is local to the VPC. This can be used to create internal ranges for various purposes like HTTP_INTERNAL_LOAD_BALANCER or for Interconnect routes that are not shared with peers. This also implies that peers cannot use this range in a way that is visible to this VPC, but can re-use this range as long as it is NOT_SHARED from the peer VPC, too.",
          "value": "NOT_SHARED"
        }
      ]
    },
    "google-native:networkconnectivity/v1alpha1:InternalRangeUsage": {
      "description": "The type of usage set for this internal range.",
      "type": "string",
      "enum": [
        {
          "name": "UsageUnspecified",
          "description": "Unspecified usage is allowed in calls which identify the resource by other fields and do not need Usage set to complete. These are, i.e.: GetInternalRange and DeleteInternalRange. Usage needs to be specified explicitly in CreateInternalRange or UpdateInternalRange calls.",
          "value": "USAGE_UNSPECIFIED"
        },
        {
          "name": "ForVpc",
          "description": "A VPC resource can use the reserved CIDR block by associating it with the internal range resource if usage is set to FOR_VPC.",
          "value": "FOR_VPC"
        },
        {
          "name": "ExternalToVpc",
          "description": "Ranges created with EXTERNAL_TO_VPC cannot be associated with VPC resources and are meant to block out address ranges for various use cases such as usage on-premises, with dynamic route announcements via Interconnect.",
          "value": "EXTERNAL_TO_VPC"
        }
      ]
    },
    "google-native:networkconnectivity/v1alpha1:RouterApplianceInstance": {
      "description": "RouterAppliance represents a Router appliance which is specified by a VM URI and a NIC address.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address of the network interface to use for peering."
        },
        "networkInterface": {
          "type": "string"
        },
        "virtualMachine": {
          "type": "string",
          "description": "The URI of the virtual machine resource"
        }
      },
      "type": "object"
    },
    "google-native:networkconnectivity/v1alpha1:RouterApplianceInstanceResponse": {
      "description": "RouterAppliance represents a Router appliance which is specified by a VM URI and a NIC address.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address of the network interface to use for peering."
        },
        "networkInterface": {
          "type": "string"
        },
        "virtualMachine": {
          "type": "string",
          "description": "The URI of the virtual machine resource"
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "networkInterface",
        "virtualMachine"
      ]
    },
    "google-native:networkmanagement/v1:AbortInfoResponse": {
      "description": "Details of the final state \"abort\" and associated resource.",
      "properties": {
        "cause": {
          "type": "string",
          "description": "Causes that the analysis is aborted."
        },
        "projectsMissingPermission": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of project IDs that the user has specified in the request but does not have permission to access network configs. Analysis is aborted in this case with the PERMISSION_DENIED cause."
        },
        "resourceUri": {
          "type": "string",
          "description": "URI of the resource that caused the abort."
        }
      },
      "type": "object",
      "required": [
        "cause",
        "projectsMissingPermission",
        "resourceUri"
      ]
    },
    "google-native:networkmanagement/v1:AppEngineVersionEndpoint": {
      "description": "Wrapper for the App Engine service version attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "An [App Engine](https://cloud.google.com/appengine) [service version](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions) name."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1:AppEngineVersionEndpointResponse": {
      "description": "Wrapper for the App Engine service version attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "An [App Engine](https://cloud.google.com/appengine) [service version](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions) name."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:AppEngineVersionInfoResponse": {
      "description": "For display only. Metadata associated with an App Engine version.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of an App Engine version."
        },
        "environment": {
          "type": "string",
          "description": "App Engine execution environment for a version."
        },
        "runtime": {
          "type": "string",
          "description": "Runtime of the App Engine version."
        },
        "uri": {
          "type": "string",
          "description": "URI of an App Engine version."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "environment",
        "runtime",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:networkmanagement/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:networkmanagement/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:networkmanagement/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:networkmanagement/v1:CloudFunctionEndpoint": {
      "description": "Wrapper for Cloud Function attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "A [Cloud Function](https://cloud.google.com/functions) name."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1:CloudFunctionEndpointResponse": {
      "description": "Wrapper for Cloud Function attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "A [Cloud Function](https://cloud.google.com/functions) name."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:CloudFunctionInfoResponse": {
      "description": "For display only. Metadata associated with a Cloud Function.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Cloud Function."
        },
        "location": {
          "type": "string",
          "description": "Location in which the Cloud Function is deployed."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Cloud Function."
        },
        "versionId": {
          "type": "string",
          "description": "Latest successfully deployed version id of the Cloud Function."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "location",
        "uri",
        "versionId"
      ]
    },
    "google-native:networkmanagement/v1:CloudRunRevisionEndpoint": {
      "description": "Wrapper for Cloud Run revision attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "A [Cloud Run](https://cloud.google.com/run) [revision](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.revisions/get) URI. The format is: projects/{project}/locations/{location}/revisions/{revision}"
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1:CloudRunRevisionEndpointResponse": {
      "description": "Wrapper for Cloud Run revision attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "A [Cloud Run](https://cloud.google.com/run) [revision](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.revisions/get) URI. The format is: projects/{project}/locations/{location}/revisions/{revision}"
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:CloudRunRevisionInfoResponse": {
      "description": "For display only. Metadata associated with a Cloud Run revision.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Cloud Run revision."
        },
        "location": {
          "type": "string",
          "description": "Location in which this revision is deployed."
        },
        "serviceUri": {
          "type": "string",
          "description": "URI of Cloud Run service this revision belongs to."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Cloud Run revision."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "location",
        "serviceUri",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:CloudSQLInstanceInfoResponse": {
      "description": "For display only. Metadata associated with a Cloud SQL instance.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Cloud SQL instance."
        },
        "externalIp": {
          "type": "string",
          "description": "External IP address of a Cloud SQL instance."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of a Cloud SQL instance."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Cloud SQL instance network or empty string if the instance does not have one."
        },
        "region": {
          "type": "string",
          "description": "Region in which the Cloud SQL instance is running."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Cloud SQL instance."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "externalIp",
        "internalIp",
        "networkUri",
        "region",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:DeliverInfoResponse": {
      "description": "Details of the final state \"deliver\" and associated resource.",
      "properties": {
        "resourceUri": {
          "type": "string",
          "description": "URI of the resource that the packet is delivered to."
        },
        "target": {
          "type": "string",
          "description": "Target type where the packet is delivered to."
        }
      },
      "type": "object",
      "required": [
        "resourceUri",
        "target"
      ]
    },
    "google-native:networkmanagement/v1:DropInfoResponse": {
      "description": "Details of the final state \"drop\" and associated resource.",
      "properties": {
        "cause": {
          "type": "string",
          "description": "Cause that the packet is dropped."
        },
        "resourceUri": {
          "type": "string",
          "description": "URI of the resource that caused the drop."
        }
      },
      "type": "object",
      "required": [
        "cause",
        "resourceUri"
      ]
    },
    "google-native:networkmanagement/v1:EdgeLocationResponse": {
      "description": "Representation of a network edge location as per https://cloud.google.com/vpc/docs/edge-locations.",
      "properties": {
        "metropolitanArea": {
          "type": "string",
          "description": "Name of the metropolitan area."
        }
      },
      "type": "object",
      "required": [
        "metropolitanArea"
      ]
    },
    "google-native:networkmanagement/v1:Endpoint": {
      "description": "Source or destination of the Connectivity Test.",
      "properties": {
        "appEngineVersion": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:AppEngineVersionEndpoint",
          "description": "An [App Engine](https://cloud.google.com/appengine) [service version](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions)."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:CloudFunctionEndpoint",
          "description": "A [Cloud Function](https://cloud.google.com/functions)."
        },
        "cloudRunRevision": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:CloudRunRevisionEndpoint",
          "description": "A [Cloud Run](https://cloud.google.com/run) [revision](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.revisions/get)"
        },
        "cloudSqlInstance": {
          "type": "string",
          "description": "A [Cloud SQL](https://cloud.google.com/sql) instance URI."
        },
        "forwardingRule": {
          "type": "string",
          "description": "A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud load balancer. Forwarding rules are also used for protocol forwarding, Private Service Connect and other network services to provide forwarding information in the control plane. Format: projects/{project}/global/forwardingRules/{id} or projects/{project}/regions/{region}/forwardingRules/{id}"
        },
        "gkeMasterCluster": {
          "type": "string",
          "description": "A cluster URI for [Google Kubernetes Engine master](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture)."
        },
        "instance": {
          "type": "string",
          "description": "A Compute Engine instance URI."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address of the endpoint, which can be an external or internal IP. An IPv6 address is only allowed when the test's destination is a [global load balancer VIP](https://cloud.google.com/load-balancing/docs/load-balancing-overview)."
        },
        "network": {
          "type": "string",
          "description": "A Compute Engine network URI."
        },
        "networkType": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:EndpointNetworkType",
          "description": "Type of the network where the endpoint is located. Applicable only to source endpoint, as destination network type can be inferred from the source."
        },
        "port": {
          "type": "integer",
          "description": "The IP protocol port of the endpoint. Only applicable when protocol is TCP or UDP."
        },
        "project": {
          "type": "string",
          "description": "Project ID where the endpoint is located. The Project ID can be derived from the URI if you provide a VM instance or network URI. The following are two cases where you must provide the project ID: 1. Only the IP address is specified, and the IP address is within a Google Cloud project. 2. When you are using Shared VPC and the IP address that you provide is from the service project. In this case, the network that the IP address resides in is defined in the host project."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1:EndpointInfoResponse": {
      "description": "For display only. The specification of the endpoints for the test. EndpointInfo is derived from source and destination Endpoint and validated by the backend data plane model.",
      "properties": {
        "destinationIp": {
          "type": "string",
          "description": "Destination IP address."
        },
        "destinationNetworkUri": {
          "type": "string",
          "description": "URI of the network where this packet is sent to."
        },
        "destinationPort": {
          "type": "integer",
          "description": "Destination port. Only valid when protocol is TCP or UDP."
        },
        "protocol": {
          "type": "string",
          "description": "IP protocol in string format, for example: \"TCP\", \"UDP\", \"ICMP\"."
        },
        "sourceAgentUri": {
          "type": "string",
          "description": "URI of the source telemetry agent this packet originates from."
        },
        "sourceIp": {
          "type": "string",
          "description": "Source IP address."
        },
        "sourceNetworkUri": {
          "type": "string",
          "description": "URI of the network where this packet originates from."
        },
        "sourcePort": {
          "type": "integer",
          "description": "Source port. Only valid when protocol is TCP or UDP."
        }
      },
      "type": "object",
      "required": [
        "destinationIp",
        "destinationNetworkUri",
        "destinationPort",
        "protocol",
        "sourceAgentUri",
        "sourceIp",
        "sourceNetworkUri",
        "sourcePort"
      ]
    },
    "google-native:networkmanagement/v1:EndpointNetworkType": {
      "description": "Type of the network where the endpoint is located. Applicable only to source endpoint, as destination network type can be inferred from the source.",
      "type": "string",
      "enum": [
        {
          "name": "NetworkTypeUnspecified",
          "description": "Default type if unspecified.",
          "value": "NETWORK_TYPE_UNSPECIFIED"
        },
        {
          "name": "GcpNetwork",
          "description": "A network hosted within Google Cloud. To receive more detailed output, specify the URI for the source or destination network.",
          "value": "GCP_NETWORK"
        },
        {
          "name": "NonGcpNetwork",
          "description": "A network hosted outside of Google Cloud. This can be an on-premises network, or a network hosted by another cloud provider.",
          "value": "NON_GCP_NETWORK"
        }
      ]
    },
    "google-native:networkmanagement/v1:EndpointResponse": {
      "description": "Source or destination of the Connectivity Test.",
      "properties": {
        "appEngineVersion": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:AppEngineVersionEndpointResponse",
          "description": "An [App Engine](https://cloud.google.com/appengine) [service version](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions)."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:CloudFunctionEndpointResponse",
          "description": "A [Cloud Function](https://cloud.google.com/functions)."
        },
        "cloudRunRevision": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:CloudRunRevisionEndpointResponse",
          "description": "A [Cloud Run](https://cloud.google.com/run) [revision](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.revisions/get)"
        },
        "cloudSqlInstance": {
          "type": "string",
          "description": "A [Cloud SQL](https://cloud.google.com/sql) instance URI."
        },
        "forwardingRule": {
          "type": "string",
          "description": "A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud load balancer. Forwarding rules are also used for protocol forwarding, Private Service Connect and other network services to provide forwarding information in the control plane. Format: projects/{project}/global/forwardingRules/{id} or projects/{project}/regions/{region}/forwardingRules/{id}"
        },
        "forwardingRuleTarget": {
          "type": "string",
          "description": "Specifies the type of the target of the forwarding rule."
        },
        "gkeMasterCluster": {
          "type": "string",
          "description": "A cluster URI for [Google Kubernetes Engine master](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture)."
        },
        "instance": {
          "type": "string",
          "description": "A Compute Engine instance URI."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address of the endpoint, which can be an external or internal IP. An IPv6 address is only allowed when the test's destination is a [global load balancer VIP](https://cloud.google.com/load-balancing/docs/load-balancing-overview)."
        },
        "loadBalancerId": {
          "type": "string",
          "description": "ID of the load balancer the forwarding rule points to. Empty for forwarding rules not related to load balancers."
        },
        "loadBalancerType": {
          "type": "string",
          "description": "Type of the load balancer the forwarding rule points to."
        },
        "network": {
          "type": "string",
          "description": "A Compute Engine network URI."
        },
        "networkType": {
          "type": "string",
          "description": "Type of the network where the endpoint is located. Applicable only to source endpoint, as destination network type can be inferred from the source."
        },
        "port": {
          "type": "integer",
          "description": "The IP protocol port of the endpoint. Only applicable when protocol is TCP or UDP."
        },
        "project": {
          "type": "string",
          "description": "Project ID where the endpoint is located. The Project ID can be derived from the URI if you provide a VM instance or network URI. The following are two cases where you must provide the project ID: 1. Only the IP address is specified, and the IP address is within a Google Cloud project. 2. When you are using Shared VPC and the IP address that you provide is from the service project. In this case, the network that the IP address resides in is defined in the host project."
        }
      },
      "type": "object",
      "required": [
        "appEngineVersion",
        "cloudFunction",
        "cloudRunRevision",
        "cloudSqlInstance",
        "forwardingRule",
        "forwardingRuleTarget",
        "gkeMasterCluster",
        "instance",
        "ipAddress",
        "loadBalancerId",
        "loadBalancerType",
        "network",
        "networkType",
        "port",
        "project"
      ]
    },
    "google-native:networkmanagement/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:networkmanagement/v1:FirewallInfoResponse": {
      "description": "For display only. Metadata associated with a VPC firewall rule, an implied VPC firewall rule, or a hierarchical firewall policy rule.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Possible values: ALLOW, DENY"
        },
        "direction": {
          "type": "string",
          "description": "Possible values: INGRESS, EGRESS"
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the VPC firewall rule. This field is not applicable to hierarchical firewall policy rules."
        },
        "firewallRuleType": {
          "type": "string",
          "description": "The firewall rule's type."
        },
        "networkUri": {
          "type": "string",
          "description": "The URI of the VPC network that the firewall rule is associated with. This field is not applicable to hierarchical firewall policy rules."
        },
        "policy": {
          "type": "string",
          "description": "The hierarchical firewall policy that this rule is associated with. This field is not applicable to VPC firewall rules."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of the firewall rule."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target service accounts specified by the firewall rule."
        },
        "targetTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target tags defined by the VPC firewall rule. This field is not applicable to hierarchical firewall policy rules."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the VPC firewall rule. This field is not applicable to implied firewall rules or hierarchical firewall policy rules."
        }
      },
      "type": "object",
      "required": [
        "action",
        "direction",
        "displayName",
        "firewallRuleType",
        "networkUri",
        "policy",
        "priority",
        "targetServiceAccounts",
        "targetTags",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:ForwardInfoResponse": {
      "description": "Details of the final state \"forward\" and associated resource.",
      "properties": {
        "resourceUri": {
          "type": "string",
          "description": "URI of the resource that the packet is forwarded to."
        },
        "target": {
          "type": "string",
          "description": "Target type where this packet is forwarded to."
        }
      },
      "type": "object",
      "required": [
        "resourceUri",
        "target"
      ]
    },
    "google-native:networkmanagement/v1:ForwardingRuleInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine forwarding rule.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Compute Engine forwarding rule."
        },
        "matchedPortRange": {
          "type": "string",
          "description": "Port range defined in the forwarding rule that matches the test."
        },
        "matchedProtocol": {
          "type": "string",
          "description": "Protocol defined in the forwarding rule that matches the test."
        },
        "networkUri": {
          "type": "string",
          "description": "Network URI. Only valid for Internal Load Balancer."
        },
        "target": {
          "type": "string",
          "description": "Target type of the forwarding rule."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Compute Engine forwarding rule."
        },
        "vip": {
          "type": "string",
          "description": "VIP of the forwarding rule."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "matchedPortRange",
        "matchedProtocol",
        "networkUri",
        "target",
        "uri",
        "vip"
      ]
    },
    "google-native:networkmanagement/v1:GKEMasterInfoResponse": {
      "description": "For display only. Metadata associated with a Google Kubernetes Engine (GKE) cluster master.",
      "properties": {
        "clusterNetworkUri": {
          "type": "string",
          "description": "URI of a GKE cluster network."
        },
        "clusterUri": {
          "type": "string",
          "description": "URI of a GKE cluster."
        },
        "externalIp": {
          "type": "string",
          "description": "External IP address of a GKE cluster master."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of a GKE cluster master."
        }
      },
      "type": "object",
      "required": [
        "clusterNetworkUri",
        "clusterUri",
        "externalIp",
        "internalIp"
      ]
    },
    "google-native:networkmanagement/v1:GoogleServiceInfoResponse": {
      "description": "For display only. Details of a Google Service sending packets to a VPC network. Although the source IP might be a publicly routable address, some Google Services use special routes within Google production infrastructure to reach Compute Engine Instances. https://cloud.google.com/vpc/docs/routes#special_return_paths",
      "properties": {
        "googleServiceType": {
          "type": "string",
          "description": "Recognized type of a Google Service."
        },
        "sourceIp": {
          "type": "string",
          "description": "Source IP address."
        }
      },
      "type": "object",
      "required": [
        "googleServiceType",
        "sourceIp"
      ]
    },
    "google-native:networkmanagement/v1:InstanceInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine instance.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Compute Engine instance."
        },
        "externalIp": {
          "type": "string",
          "description": "External IP address of the network interface."
        },
        "interface": {
          "type": "string",
          "description": "Name of the network interface of a Compute Engine instance."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of the network interface."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Network tags configured on the instance."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Compute Engine network."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service account authorized for the instance."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Compute Engine instance."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "externalIp",
        "interface",
        "internalIp",
        "networkTags",
        "networkUri",
        "serviceAccount",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:LatencyDistributionResponse": {
      "description": "Describes measured latency distribution.",
      "properties": {
        "latencyPercentiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:LatencyPercentileResponse"
          },
          "description": "Representative latency percentiles."
        }
      },
      "type": "object",
      "required": [
        "latencyPercentiles"
      ]
    },
    "google-native:networkmanagement/v1:LatencyPercentileResponse": {
      "description": "Latency percentile rank and value.",
      "properties": {
        "latencyMicros": {
          "type": "string",
          "description": "percent-th percentile of latency observed, in microseconds. Fraction of percent/100 of samples have latency lower or equal to the value of this field."
        },
        "percent": {
          "type": "integer",
          "description": "Percentage of samples this data point applies to."
        }
      },
      "type": "object",
      "required": [
        "latencyMicros",
        "percent"
      ]
    },
    "google-native:networkmanagement/v1:LoadBalancerBackendResponse": {
      "description": "For display only. Metadata associated with a specific load balancer backend.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Compute Engine instance or network endpoint."
        },
        "healthCheckAllowingFirewallRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of firewall rule URIs allowing probes from health check IP ranges."
        },
        "healthCheckBlockingFirewallRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of firewall rule URIs blocking probes from health check IP ranges."
        },
        "healthCheckFirewallState": {
          "type": "string",
          "description": "State of the health check firewall configuration."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Compute Engine instance or network endpoint."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "healthCheckAllowingFirewallRules",
        "healthCheckBlockingFirewallRules",
        "healthCheckFirewallState",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:LoadBalancerInfoResponse": {
      "description": "For display only. Metadata associated with a load balancer.",
      "properties": {
        "backendType": {
          "type": "string",
          "description": "Type of load balancer's backend configuration."
        },
        "backendUri": {
          "type": "string",
          "description": "Backend configuration URI."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:LoadBalancerBackendResponse"
          },
          "description": "Information for the loadbalancer backends."
        },
        "healthCheckUri": {
          "type": "string",
          "description": "URI of the health check for the load balancer. Deprecated and no longer populated as different load balancer backends might have different health checks.",
          "deprecationMessage": "URI of the health check for the load balancer. Deprecated and no longer populated as different load balancer backends might have different health checks."
        },
        "loadBalancerType": {
          "type": "string",
          "description": "Type of the load balancer."
        }
      },
      "type": "object",
      "required": [
        "backendType",
        "backendUri",
        "backends",
        "healthCheckUri",
        "loadBalancerType"
      ]
    },
    "google-native:networkmanagement/v1:NetworkInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine network.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Compute Engine network."
        },
        "matchedIpRange": {
          "type": "string",
          "description": "The IP range that matches the test."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Compute Engine network."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "matchedIpRange",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:ProbingDetailsResponse": {
      "description": "Results of active probing from the last run of the test.",
      "properties": {
        "abortCause": {
          "type": "string",
          "description": "The reason probing was aborted."
        },
        "destinationEgressLocation": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:EdgeLocationResponse",
          "description": "The EdgeLocation from which a packet destined for/originating from the internet will egress/ingress the Google network. This will only be populated for a connectivity test which has an internet destination/source address. The absence of this field *must not* be used as an indication that the destination/source is part of the Google network."
        },
        "endpointInfo": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:EndpointInfoResponse",
          "description": "The source and destination endpoints derived from the test input and used for active probing."
        },
        "error": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:StatusResponse",
          "description": "Details about an internal failure or the cancellation of active probing."
        },
        "probingLatency": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:LatencyDistributionResponse",
          "description": "Latency as measured by active probing in one direction: from the source to the destination endpoint."
        },
        "result": {
          "type": "string",
          "description": "The overall result of active probing."
        },
        "sentProbeCount": {
          "type": "integer",
          "description": "Number of probes sent."
        },
        "successfulProbeCount": {
          "type": "integer",
          "description": "Number of probes that reached the destination."
        },
        "verifyTime": {
          "type": "string",
          "description": "The time that reachability was assessed through active probing."
        }
      },
      "type": "object",
      "required": [
        "abortCause",
        "destinationEgressLocation",
        "endpointInfo",
        "error",
        "probingLatency",
        "result",
        "sentProbeCount",
        "successfulProbeCount",
        "verifyTime"
      ]
    },
    "google-native:networkmanagement/v1:ReachabilityDetailsResponse": {
      "description": "Results of the configuration analysis from the last run of the test.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:StatusResponse",
          "description": "The details of a failure or a cancellation of reachability analysis."
        },
        "result": {
          "type": "string",
          "description": "The overall result of the test's configuration analysis."
        },
        "traces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:TraceResponse"
          },
          "description": "Result may contain a list of traces if a test has multiple possible paths in the network, such as when destination endpoint is a load balancer with multiple backends."
        },
        "verifyTime": {
          "type": "string",
          "description": "The time of the configuration analysis."
        }
      },
      "type": "object",
      "required": [
        "error",
        "result",
        "traces",
        "verifyTime"
      ]
    },
    "google-native:networkmanagement/v1:RouteInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine route.",
      "properties": {
        "destIpRange": {
          "type": "string",
          "description": "Destination IP range of the route."
        },
        "destPortRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination port ranges of the route. Policy based routes only."
        },
        "displayName": {
          "type": "string",
          "description": "Name of a route."
        },
        "instanceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Instance tags of the route."
        },
        "nccHubUri": {
          "type": "string",
          "description": "URI of a NCC Hub. NCC_HUB routes only."
        },
        "nccSpokeUri": {
          "type": "string",
          "description": "URI of a NCC Spoke. NCC_HUB routes only."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Compute Engine network. NETWORK routes only."
        },
        "nextHop": {
          "type": "string",
          "description": "Next hop of the route."
        },
        "nextHopType": {
          "type": "string",
          "description": "Type of next hop."
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the route."
        },
        "protocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Protocols of the route. Policy based routes only."
        },
        "routeScope": {
          "type": "string",
          "description": "Indicates where route is applicable."
        },
        "routeType": {
          "type": "string",
          "description": "Type of route."
        },
        "srcIpRange": {
          "type": "string",
          "description": "Source IP address range of the route. Policy based routes only."
        },
        "srcPortRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Source port ranges of the route. Policy based routes only."
        },
        "uri": {
          "type": "string",
          "description": "URI of a route. Dynamic, peering static and peering dynamic routes do not have an URI. Advertised route from Google Cloud VPC to on-premises network also does not have an URI."
        }
      },
      "type": "object",
      "required": [
        "destIpRange",
        "destPortRanges",
        "displayName",
        "instanceTags",
        "nccHubUri",
        "nccSpokeUri",
        "networkUri",
        "nextHop",
        "nextHopType",
        "priority",
        "protocols",
        "routeScope",
        "routeType",
        "srcIpRange",
        "srcPortRanges",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:networkmanagement/v1:StepResponse": {
      "description": "A simulated forwarding path is composed of multiple steps. Each step has a well-defined state and an associated configuration.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:AbortInfoResponse",
          "description": "Display information of the final state \"abort\" and reason."
        },
        "appEngineVersion": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:AppEngineVersionInfoResponse",
          "description": "Display information of an App Engine service version."
        },
        "causesDrop": {
          "type": "boolean",
          "description": "This is a step that leads to the final state Drop."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:CloudFunctionInfoResponse",
          "description": "Display information of a Cloud Function."
        },
        "cloudRunRevision": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:CloudRunRevisionInfoResponse",
          "description": "Display information of a Cloud Run revision."
        },
        "cloudSqlInstance": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:CloudSQLInstanceInfoResponse",
          "description": "Display information of a Cloud SQL instance."
        },
        "deliver": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:DeliverInfoResponse",
          "description": "Display information of the final state \"deliver\" and reason."
        },
        "description": {
          "type": "string",
          "description": "A description of the step. Usually this is a summary of the state."
        },
        "drop": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:DropInfoResponse",
          "description": "Display information of the final state \"drop\" and reason."
        },
        "endpoint": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:EndpointInfoResponse",
          "description": "Display information of the source and destination under analysis. The endpoint information in an intermediate state may differ with the initial input, as it might be modified by state like NAT, or Connection Proxy."
        },
        "firewall": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:FirewallInfoResponse",
          "description": "Display information of a Compute Engine firewall rule."
        },
        "forward": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:ForwardInfoResponse",
          "description": "Display information of the final state \"forward\" and reason."
        },
        "forwardingRule": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:ForwardingRuleInfoResponse",
          "description": "Display information of a Compute Engine forwarding rule."
        },
        "gkeMaster": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:GKEMasterInfoResponse",
          "description": "Display information of a Google Kubernetes Engine cluster master."
        },
        "googleService": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:GoogleServiceInfoResponse",
          "description": "Display information of a Google service"
        },
        "instance": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:InstanceInfoResponse",
          "description": "Display information of a Compute Engine instance."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:LoadBalancerInfoResponse",
          "description": "Display information of the load balancers."
        },
        "network": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:NetworkInfoResponse",
          "description": "Display information of a Google Cloud network."
        },
        "project": {
          "type": "string",
          "description": "Project ID that contains the configuration this step is validating."
        },
        "route": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:RouteInfoResponse",
          "description": "Display information of a Compute Engine route."
        },
        "state": {
          "type": "string",
          "description": "Each step is in one of the pre-defined states."
        },
        "vpcConnector": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:VpcConnectorInfoResponse",
          "description": "Display information of a VPC connector."
        },
        "vpnGateway": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:VpnGatewayInfoResponse",
          "description": "Display information of a Compute Engine VPN gateway."
        },
        "vpnTunnel": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:VpnTunnelInfoResponse",
          "description": "Display information of a Compute Engine VPN tunnel."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "appEngineVersion",
        "causesDrop",
        "cloudFunction",
        "cloudRunRevision",
        "cloudSqlInstance",
        "deliver",
        "description",
        "drop",
        "endpoint",
        "firewall",
        "forward",
        "forwardingRule",
        "gkeMaster",
        "googleService",
        "instance",
        "loadBalancer",
        "network",
        "project",
        "route",
        "state",
        "vpcConnector",
        "vpnGateway",
        "vpnTunnel"
      ]
    },
    "google-native:networkmanagement/v1:TraceResponse": {
      "description": "Trace represents one simulated packet forwarding path. * Each trace contains multiple ordered steps. * Each step is in a particular state with associated configuration. * State is categorized as final or non-final states. * Each final state has a reason associated. * Each trace must end with a final state (the last step). ``` |---------------------Trace----------------------| Step1(State) Step2(State) --- StepN(State(final)) ```",
      "properties": {
        "endpointInfo": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:EndpointInfoResponse",
          "description": "Derived from the source and destination endpoints definition specified by user request, and validated by the data plane model. If there are multiple traces starting from different source locations, then the endpoint_info may be different between traces."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:StepResponse"
          },
          "description": "A trace of a test contains multiple steps from the initial state to the final state (delivered, dropped, forwarded, or aborted). The steps are ordered by the processing sequence within the simulated network state machine. It is critical to preserve the order of the steps and avoid reordering or sorting them."
        }
      },
      "type": "object",
      "required": [
        "endpointInfo",
        "steps"
      ]
    },
    "google-native:networkmanagement/v1:VpcConnectorInfoResponse": {
      "description": "For display only. Metadata associated with a VPC connector.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a VPC connector."
        },
        "location": {
          "type": "string",
          "description": "Location in which the VPC connector is deployed."
        },
        "uri": {
          "type": "string",
          "description": "URI of a VPC connector."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "location",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1:VpnGatewayInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine VPN gateway.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a VPN gateway."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the VPN gateway."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Compute Engine network where the VPN gateway is configured."
        },
        "region": {
          "type": "string",
          "description": "Name of a Google Cloud region where this VPN gateway is configured."
        },
        "uri": {
          "type": "string",
          "description": "URI of a VPN gateway."
        },
        "vpnTunnelUri": {
          "type": "string",
          "description": "A VPN tunnel that is associated with this VPN gateway. There may be multiple VPN tunnels configured on a VPN gateway, and only the one relevant to the test is displayed."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "ipAddress",
        "networkUri",
        "region",
        "uri",
        "vpnTunnelUri"
      ]
    },
    "google-native:networkmanagement/v1:VpnTunnelInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine VPN tunnel.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a VPN tunnel."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Compute Engine network where the VPN tunnel is configured."
        },
        "region": {
          "type": "string",
          "description": "Name of a Google Cloud region where this VPN tunnel is configured."
        },
        "remoteGateway": {
          "type": "string",
          "description": "URI of a VPN gateway at remote end of the tunnel."
        },
        "remoteGatewayIp": {
          "type": "string",
          "description": "Remote VPN gateway's IP address."
        },
        "routingType": {
          "type": "string",
          "description": "Type of the routing policy."
        },
        "sourceGateway": {
          "type": "string",
          "description": "URI of the VPN gateway at local end of the tunnel."
        },
        "sourceGatewayIp": {
          "type": "string",
          "description": "Local VPN gateway's IP address."
        },
        "uri": {
          "type": "string",
          "description": "URI of a VPN tunnel."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "networkUri",
        "region",
        "remoteGateway",
        "remoteGatewayIp",
        "routingType",
        "sourceGateway",
        "sourceGatewayIp",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:AbortInfoResponse": {
      "description": "Details of the final state \"abort\" and associated resource.",
      "properties": {
        "cause": {
          "type": "string",
          "description": "Causes that the analysis is aborted."
        },
        "projectsMissingPermission": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of project IDs that the user has specified in the request but does not have permission to access network configs. Analysis is aborted in this case with the PERMISSION_DENIED cause."
        },
        "resourceUri": {
          "type": "string",
          "description": "URI of the resource that caused the abort."
        }
      },
      "type": "object",
      "required": [
        "cause",
        "projectsMissingPermission",
        "resourceUri"
      ]
    },
    "google-native:networkmanagement/v1beta1:AppEngineVersionEndpoint": {
      "description": "Wrapper for the App Engine service version attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "An [App Engine](https://cloud.google.com/appengine) [service version](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions) name."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1beta1:AppEngineVersionEndpointResponse": {
      "description": "Wrapper for the App Engine service version attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "An [App Engine](https://cloud.google.com/appengine) [service version](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions) name."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:AppEngineVersionInfoResponse": {
      "description": "For display only. Metadata associated with an App Engine version.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of an App Engine version."
        },
        "environment": {
          "type": "string",
          "description": "App Engine execution environment for a version."
        },
        "runtime": {
          "type": "string",
          "description": "Runtime of the App Engine version."
        },
        "uri": {
          "type": "string",
          "description": "URI of an App Engine version."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "environment",
        "runtime",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:networkmanagement/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:networkmanagement/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:networkmanagement/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:networkmanagement/v1beta1:CloudFunctionEndpoint": {
      "description": "Wrapper for Cloud Function attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "A [Cloud Function](https://cloud.google.com/functions) name."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1beta1:CloudFunctionEndpointResponse": {
      "description": "Wrapper for Cloud Function attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "A [Cloud Function](https://cloud.google.com/functions) name."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:CloudFunctionInfoResponse": {
      "description": "For display only. Metadata associated with a Cloud Function.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Cloud Function."
        },
        "location": {
          "type": "string",
          "description": "Location in which the Cloud Function is deployed."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Cloud Function."
        },
        "versionId": {
          "type": "string",
          "description": "Latest successfully deployed version id of the Cloud Function."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "location",
        "uri",
        "versionId"
      ]
    },
    "google-native:networkmanagement/v1beta1:CloudRunRevisionEndpoint": {
      "description": "Wrapper for Cloud Run revision attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "A [Cloud Run](https://cloud.google.com/run) [revision](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.revisions/get) URI. The format is: projects/{project}/locations/{location}/revisions/{revision}"
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1beta1:CloudRunRevisionEndpointResponse": {
      "description": "Wrapper for Cloud Run revision attributes.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "A [Cloud Run](https://cloud.google.com/run) [revision](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.revisions/get) URI. The format is: projects/{project}/locations/{location}/revisions/{revision}"
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:CloudRunRevisionInfoResponse": {
      "description": "For display only. Metadata associated with a Cloud Run revision.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Cloud Run revision."
        },
        "location": {
          "type": "string",
          "description": "Location in which this revision is deployed."
        },
        "serviceName": {
          "type": "string",
          "description": "ID of Cloud Run Service this revision belongs to."
        },
        "serviceUri": {
          "type": "string",
          "description": "URI of Cloud Run service this revision belongs to."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Cloud Run revision."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "location",
        "serviceName",
        "serviceUri",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:CloudSQLInstanceInfoResponse": {
      "description": "For display only. Metadata associated with a Cloud SQL instance.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Cloud SQL instance."
        },
        "externalIp": {
          "type": "string",
          "description": "External IP address of a Cloud SQL instance."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of a Cloud SQL instance."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Cloud SQL instance network or empty string if the instance does not have one."
        },
        "region": {
          "type": "string",
          "description": "Region in which the Cloud SQL instance is running."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Cloud SQL instance."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "externalIp",
        "internalIp",
        "networkUri",
        "region",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:DeliverInfoResponse": {
      "description": "Details of the final state \"deliver\" and associated resource.",
      "properties": {
        "resourceUri": {
          "type": "string",
          "description": "URI of the resource that the packet is delivered to."
        },
        "target": {
          "type": "string",
          "description": "Target type where the packet is delivered to."
        }
      },
      "type": "object",
      "required": [
        "resourceUri",
        "target"
      ]
    },
    "google-native:networkmanagement/v1beta1:DropInfoResponse": {
      "description": "Details of the final state \"drop\" and associated resource.",
      "properties": {
        "cause": {
          "type": "string",
          "description": "Cause that the packet is dropped."
        },
        "resourceUri": {
          "type": "string",
          "description": "URI of the resource that caused the drop."
        }
      },
      "type": "object",
      "required": [
        "cause",
        "resourceUri"
      ]
    },
    "google-native:networkmanagement/v1beta1:EdgeLocationResponse": {
      "description": "Representation of a network edge location as per https://cloud.google.com/vpc/docs/edge-locations.",
      "properties": {
        "metropolitanArea": {
          "type": "string",
          "description": "Name of the metropolitan area."
        }
      },
      "type": "object",
      "required": [
        "metropolitanArea"
      ]
    },
    "google-native:networkmanagement/v1beta1:Endpoint": {
      "description": "Source or destination of the Connectivity Test.",
      "properties": {
        "appEngineVersion": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AppEngineVersionEndpoint",
          "description": "An [App Engine](https://cloud.google.com/appengine) [service version](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions)."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:CloudFunctionEndpoint",
          "description": "A [Cloud Function](https://cloud.google.com/functions)."
        },
        "cloudRunRevision": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:CloudRunRevisionEndpoint",
          "description": "A [Cloud Run](https://cloud.google.com/run) [revision](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.revisions/get)"
        },
        "cloudSqlInstance": {
          "type": "string",
          "description": "A [Cloud SQL](https://cloud.google.com/sql) instance URI."
        },
        "forwardingRule": {
          "type": "string",
          "description": "A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud load balancer. Forwarding rules are also used for protocol forwarding, Private Service Connect and other network services to provide forwarding information in the control plane. Format: projects/{project}/global/forwardingRules/{id} or projects/{project}/regions/{region}/forwardingRules/{id}"
        },
        "gkeMasterCluster": {
          "type": "string",
          "description": "A cluster URI for [Google Kubernetes Engine master](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture)."
        },
        "instance": {
          "type": "string",
          "description": "A Compute Engine instance URI."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address of the endpoint, which can be an external or internal IP. An IPv6 address is only allowed when the test's destination is a [global load balancer VIP](https://cloud.google.com/load-balancing/docs/load-balancing-overview)."
        },
        "network": {
          "type": "string",
          "description": "A Compute Engine network URI."
        },
        "networkType": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EndpointNetworkType",
          "description": "Type of the network where the endpoint is located. Applicable only to source endpoint, as destination network type can be inferred from the source."
        },
        "port": {
          "type": "integer",
          "description": "The IP protocol port of the endpoint. Only applicable when protocol is TCP or UDP."
        },
        "project": {
          "type": "string",
          "description": "Project ID where the endpoint is located. The Project ID can be derived from the URI if you provide a VM instance or network URI. The following are two cases where you must provide the project ID: 1. Only the IP address is specified, and the IP address is within a Google Cloud project. 2. When you are using Shared VPC and the IP address that you provide is from the service project. In this case, the network that the IP address resides in is defined in the host project."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1beta1:EndpointInfoResponse": {
      "description": "For display only. The specification of the endpoints for the test. EndpointInfo is derived from source and destination Endpoint and validated by the backend data plane model.",
      "properties": {
        "destinationIp": {
          "type": "string",
          "description": "Destination IP address."
        },
        "destinationNetworkUri": {
          "type": "string",
          "description": "URI of the network where this packet is sent to."
        },
        "destinationPort": {
          "type": "integer",
          "description": "Destination port. Only valid when protocol is TCP or UDP."
        },
        "protocol": {
          "type": "string",
          "description": "IP protocol in string format, for example: \"TCP\", \"UDP\", \"ICMP\"."
        },
        "sourceAgentUri": {
          "type": "string",
          "description": "URI of the source telemetry agent this packet originates from."
        },
        "sourceIp": {
          "type": "string",
          "description": "Source IP address."
        },
        "sourceNetworkUri": {
          "type": "string",
          "description": "URI of the network where this packet originates from."
        },
        "sourcePort": {
          "type": "integer",
          "description": "Source port. Only valid when protocol is TCP or UDP."
        }
      },
      "type": "object",
      "required": [
        "destinationIp",
        "destinationNetworkUri",
        "destinationPort",
        "protocol",
        "sourceAgentUri",
        "sourceIp",
        "sourceNetworkUri",
        "sourcePort"
      ]
    },
    "google-native:networkmanagement/v1beta1:EndpointNetworkType": {
      "description": "Type of the network where the endpoint is located. Applicable only to source endpoint, as destination network type can be inferred from the source.",
      "type": "string",
      "enum": [
        {
          "name": "NetworkTypeUnspecified",
          "description": "Default type if unspecified.",
          "value": "NETWORK_TYPE_UNSPECIFIED"
        },
        {
          "name": "GcpNetwork",
          "description": "A network hosted within Google Cloud. To receive more detailed output, specify the URI for the source or destination network.",
          "value": "GCP_NETWORK"
        },
        {
          "name": "NonGcpNetwork",
          "description": "A network hosted outside of Google Cloud. This can be an on-premises network, or a network hosted by another cloud provider.",
          "value": "NON_GCP_NETWORK"
        }
      ]
    },
    "google-native:networkmanagement/v1beta1:EndpointResponse": {
      "description": "Source or destination of the Connectivity Test.",
      "properties": {
        "appEngineVersion": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AppEngineVersionEndpointResponse",
          "description": "An [App Engine](https://cloud.google.com/appengine) [service version](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions)."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:CloudFunctionEndpointResponse",
          "description": "A [Cloud Function](https://cloud.google.com/functions)."
        },
        "cloudRunRevision": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:CloudRunRevisionEndpointResponse",
          "description": "A [Cloud Run](https://cloud.google.com/run) [revision](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.revisions/get)"
        },
        "cloudSqlInstance": {
          "type": "string",
          "description": "A [Cloud SQL](https://cloud.google.com/sql) instance URI."
        },
        "forwardingRule": {
          "type": "string",
          "description": "A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud load balancer. Forwarding rules are also used for protocol forwarding, Private Service Connect and other network services to provide forwarding information in the control plane. Format: projects/{project}/global/forwardingRules/{id} or projects/{project}/regions/{region}/forwardingRules/{id}"
        },
        "forwardingRuleTarget": {
          "type": "string",
          "description": "Specifies the type of the target of the forwarding rule."
        },
        "gkeMasterCluster": {
          "type": "string",
          "description": "A cluster URI for [Google Kubernetes Engine master](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture)."
        },
        "instance": {
          "type": "string",
          "description": "A Compute Engine instance URI."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address of the endpoint, which can be an external or internal IP. An IPv6 address is only allowed when the test's destination is a [global load balancer VIP](https://cloud.google.com/load-balancing/docs/load-balancing-overview)."
        },
        "loadBalancerId": {
          "type": "string",
          "description": "ID of the load balancer the forwarding rule points to. Empty for forwarding rules not related to load balancers."
        },
        "loadBalancerType": {
          "type": "string",
          "description": "Type of the load balancer the forwarding rule points to."
        },
        "network": {
          "type": "string",
          "description": "A Compute Engine network URI."
        },
        "networkType": {
          "type": "string",
          "description": "Type of the network where the endpoint is located. Applicable only to source endpoint, as destination network type can be inferred from the source."
        },
        "port": {
          "type": "integer",
          "description": "The IP protocol port of the endpoint. Only applicable when protocol is TCP or UDP."
        },
        "project": {
          "type": "string",
          "description": "Project ID where the endpoint is located. The Project ID can be derived from the URI if you provide a VM instance or network URI. The following are two cases where you must provide the project ID: 1. Only the IP address is specified, and the IP address is within a Google Cloud project. 2. When you are using Shared VPC and the IP address that you provide is from the service project. In this case, the network that the IP address resides in is defined in the host project."
        }
      },
      "type": "object",
      "required": [
        "appEngineVersion",
        "cloudFunction",
        "cloudRunRevision",
        "cloudSqlInstance",
        "forwardingRule",
        "forwardingRuleTarget",
        "gkeMasterCluster",
        "instance",
        "ipAddress",
        "loadBalancerId",
        "loadBalancerType",
        "network",
        "networkType",
        "port",
        "project"
      ]
    },
    "google-native:networkmanagement/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:networkmanagement/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:networkmanagement/v1beta1:FirewallInfoResponse": {
      "description": "For display only. Metadata associated with a VPC firewall rule, an implied VPC firewall rule, or a hierarchical firewall policy rule.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Possible values: ALLOW, DENY"
        },
        "direction": {
          "type": "string",
          "description": "Possible values: INGRESS, EGRESS"
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the VPC firewall rule. This field is not applicable to hierarchical firewall policy rules."
        },
        "firewallRuleType": {
          "type": "string",
          "description": "The firewall rule's type."
        },
        "networkUri": {
          "type": "string",
          "description": "The URI of the VPC network that the firewall rule is associated with. This field is not applicable to hierarchical firewall policy rules."
        },
        "policy": {
          "type": "string",
          "description": "The hierarchical firewall policy that this rule is associated with. This field is not applicable to VPC firewall rules."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of the firewall rule."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target service accounts specified by the firewall rule."
        },
        "targetTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The target tags defined by the VPC firewall rule. This field is not applicable to hierarchical firewall policy rules."
        },
        "uri": {
          "type": "string",
          "description": "The URI of the VPC firewall rule. This field is not applicable to implied firewall rules or hierarchical firewall policy rules."
        }
      },
      "type": "object",
      "required": [
        "action",
        "direction",
        "displayName",
        "firewallRuleType",
        "networkUri",
        "policy",
        "priority",
        "targetServiceAccounts",
        "targetTags",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:ForwardInfoResponse": {
      "description": "Details of the final state \"forward\" and associated resource.",
      "properties": {
        "resourceUri": {
          "type": "string",
          "description": "URI of the resource that the packet is forwarded to."
        },
        "target": {
          "type": "string",
          "description": "Target type where this packet is forwarded to."
        }
      },
      "type": "object",
      "required": [
        "resourceUri",
        "target"
      ]
    },
    "google-native:networkmanagement/v1beta1:ForwardingRuleInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine forwarding rule.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Compute Engine forwarding rule."
        },
        "matchedPortRange": {
          "type": "string",
          "description": "Port range defined in the forwarding rule that matches the test."
        },
        "matchedProtocol": {
          "type": "string",
          "description": "Protocol defined in the forwarding rule that matches the test."
        },
        "networkUri": {
          "type": "string",
          "description": "Network URI. Only valid for Internal Load Balancer."
        },
        "target": {
          "type": "string",
          "description": "Target type of the forwarding rule."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Compute Engine forwarding rule."
        },
        "vip": {
          "type": "string",
          "description": "VIP of the forwarding rule."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "matchedPortRange",
        "matchedProtocol",
        "networkUri",
        "target",
        "uri",
        "vip"
      ]
    },
    "google-native:networkmanagement/v1beta1:GKEMasterInfoResponse": {
      "description": "For display only. Metadata associated with a Google Kubernetes Engine (GKE) cluster master.",
      "properties": {
        "clusterNetworkUri": {
          "type": "string",
          "description": "URI of a GKE cluster network."
        },
        "clusterUri": {
          "type": "string",
          "description": "URI of a GKE cluster."
        },
        "externalIp": {
          "type": "string",
          "description": "External IP address of a GKE cluster master."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of a GKE cluster master."
        }
      },
      "type": "object",
      "required": [
        "clusterNetworkUri",
        "clusterUri",
        "externalIp",
        "internalIp"
      ]
    },
    "google-native:networkmanagement/v1beta1:GoogleServiceInfoResponse": {
      "description": "For display only. Details of a Google Service sending packets to a VPC network. Although the source IP might be a publicly routable address, some Google Services use special routes within Google production infrastructure to reach Compute Engine Instances. https://cloud.google.com/vpc/docs/routes#special_return_paths",
      "properties": {
        "googleServiceType": {
          "type": "string",
          "description": "Recognized type of a Google Service."
        },
        "sourceIp": {
          "type": "string",
          "description": "Source IP address."
        }
      },
      "type": "object",
      "required": [
        "googleServiceType",
        "sourceIp"
      ]
    },
    "google-native:networkmanagement/v1beta1:InstanceInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine instance.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Compute Engine instance."
        },
        "externalIp": {
          "type": "string",
          "description": "External IP address of the network interface."
        },
        "interface": {
          "type": "string",
          "description": "Name of the network interface of a Compute Engine instance."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of the network interface."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Network tags configured on the instance."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Compute Engine network."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service account authorized for the instance."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Compute Engine instance."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "externalIp",
        "interface",
        "internalIp",
        "networkTags",
        "networkUri",
        "serviceAccount",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:LatencyDistributionResponse": {
      "description": "Describes measured latency distribution.",
      "properties": {
        "latencyPercentiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:LatencyPercentileResponse"
          },
          "description": "Representative latency percentiles."
        }
      },
      "type": "object",
      "required": [
        "latencyPercentiles"
      ]
    },
    "google-native:networkmanagement/v1beta1:LatencyPercentileResponse": {
      "description": "Latency percentile rank and value.",
      "properties": {
        "latencyMicros": {
          "type": "string",
          "description": "percent-th percentile of latency observed, in microseconds. Fraction of percent/100 of samples have latency lower or equal to the value of this field."
        },
        "percent": {
          "type": "integer",
          "description": "Percentage of samples this data point applies to."
        }
      },
      "type": "object",
      "required": [
        "latencyMicros",
        "percent"
      ]
    },
    "google-native:networkmanagement/v1beta1:LoadBalancerBackendResponse": {
      "description": "For display only. Metadata associated with a specific load balancer backend.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Compute Engine instance or network endpoint."
        },
        "healthCheckAllowingFirewallRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of firewall rule URIs allowing probes from health check IP ranges."
        },
        "healthCheckBlockingFirewallRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of firewall rule URIs blocking probes from health check IP ranges."
        },
        "healthCheckFirewallState": {
          "type": "string",
          "description": "State of the health check firewall configuration."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Compute Engine instance or network endpoint."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "healthCheckAllowingFirewallRules",
        "healthCheckBlockingFirewallRules",
        "healthCheckFirewallState",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:LoadBalancerInfoResponse": {
      "description": "For display only. Metadata associated with a load balancer.",
      "properties": {
        "backendType": {
          "type": "string",
          "description": "Type of load balancer's backend configuration."
        },
        "backendUri": {
          "type": "string",
          "description": "Backend configuration URI."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:LoadBalancerBackendResponse"
          },
          "description": "Information for the loadbalancer backends."
        },
        "healthCheckUri": {
          "type": "string",
          "description": "URI of the health check for the load balancer. Deprecated and no longer populated as different load balancer backends might have different health checks.",
          "deprecationMessage": "URI of the health check for the load balancer. Deprecated and no longer populated as different load balancer backends might have different health checks."
        },
        "loadBalancerType": {
          "type": "string",
          "description": "Type of the load balancer."
        }
      },
      "type": "object",
      "required": [
        "backendType",
        "backendUri",
        "backends",
        "healthCheckUri",
        "loadBalancerType"
      ]
    },
    "google-native:networkmanagement/v1beta1:NetworkInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine network.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a Compute Engine network."
        },
        "matchedIpRange": {
          "type": "string",
          "description": "The IP range that matches the test."
        },
        "uri": {
          "type": "string",
          "description": "URI of a Compute Engine network."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "matchedIpRange",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:ProbingDetailsResponse": {
      "description": "Results of active probing from the last run of the test.",
      "properties": {
        "abortCause": {
          "type": "string",
          "description": "The reason probing was aborted."
        },
        "destinationEgressLocation": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EdgeLocationResponse",
          "description": "The EdgeLocation from which a packet destined for/originating from the internet will egress/ingress the Google network. This will only be populated for a connectivity test which has an internet destination/source address. The absence of this field *must not* be used as an indication that the destination/source is part of the Google network."
        },
        "endpointInfo": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EndpointInfoResponse",
          "description": "The source and destination endpoints derived from the test input and used for active probing."
        },
        "error": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:StatusResponse",
          "description": "Details about an internal failure or the cancellation of active probing."
        },
        "probingLatency": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:LatencyDistributionResponse",
          "description": "Latency as measured by active probing in one direction: from the source to the destination endpoint."
        },
        "result": {
          "type": "string",
          "description": "The overall result of active probing."
        },
        "sentProbeCount": {
          "type": "integer",
          "description": "Number of probes sent."
        },
        "successfulProbeCount": {
          "type": "integer",
          "description": "Number of probes that reached the destination."
        },
        "verifyTime": {
          "type": "string",
          "description": "The time that reachability was assessed through active probing."
        }
      },
      "type": "object",
      "required": [
        "abortCause",
        "destinationEgressLocation",
        "endpointInfo",
        "error",
        "probingLatency",
        "result",
        "sentProbeCount",
        "successfulProbeCount",
        "verifyTime"
      ]
    },
    "google-native:networkmanagement/v1beta1:ReachabilityDetailsResponse": {
      "description": "Results of the configuration analysis from the last run of the test.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:StatusResponse",
          "description": "The details of a failure or a cancellation of reachability analysis."
        },
        "result": {
          "type": "string",
          "description": "The overall result of the test's configuration analysis."
        },
        "traces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:TraceResponse"
          },
          "description": "Result may contain a list of traces if a test has multiple possible paths in the network, such as when destination endpoint is a load balancer with multiple backends."
        },
        "verifyTime": {
          "type": "string",
          "description": "The time of the configuration analysis."
        }
      },
      "type": "object",
      "required": [
        "error",
        "result",
        "traces",
        "verifyTime"
      ]
    },
    "google-native:networkmanagement/v1beta1:RouteInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine route.",
      "properties": {
        "destIpRange": {
          "type": "string",
          "description": "Destination IP range of the route."
        },
        "destPortRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Destination port ranges of the route. Policy based routes only."
        },
        "displayName": {
          "type": "string",
          "description": "Name of a route."
        },
        "instanceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Instance tags of the route."
        },
        "nccHubUri": {
          "type": "string",
          "description": "URI of a NCC Hub. NCC_HUB routes only."
        },
        "nccSpokeUri": {
          "type": "string",
          "description": "URI of a NCC Spoke. NCC_HUB routes only."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Compute Engine network. NETWORK routes only."
        },
        "nextHop": {
          "type": "string",
          "description": "Next hop of the route."
        },
        "nextHopType": {
          "type": "string",
          "description": "Type of next hop."
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the route."
        },
        "protocols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Protocols of the route. Policy based routes only."
        },
        "routeScope": {
          "type": "string",
          "description": "Indicates where route is applicable."
        },
        "routeType": {
          "type": "string",
          "description": "Type of route."
        },
        "srcIpRange": {
          "type": "string",
          "description": "Source IP address range of the route. Policy based routes only."
        },
        "srcPortRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Source port ranges of the route. Policy based routes only."
        },
        "uri": {
          "type": "string",
          "description": "URI of a route. Dynamic, peering static and peering dynamic routes do not have an URI. Advertised route from Google Cloud VPC to on-premises network also does not have an URI."
        }
      },
      "type": "object",
      "required": [
        "destIpRange",
        "destPortRanges",
        "displayName",
        "instanceTags",
        "nccHubUri",
        "nccSpokeUri",
        "networkUri",
        "nextHop",
        "nextHopType",
        "priority",
        "protocols",
        "routeScope",
        "routeType",
        "srcIpRange",
        "srcPortRanges",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:networkmanagement/v1beta1:StepResponse": {
      "description": "A simulated forwarding path is composed of multiple steps. Each step has a well-defined state and an associated configuration.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AbortInfoResponse",
          "description": "Display information of the final state \"abort\" and reason."
        },
        "appEngineVersion": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AppEngineVersionInfoResponse",
          "description": "Display information of an App Engine service version."
        },
        "causesDrop": {
          "type": "boolean",
          "description": "This is a step that leads to the final state Drop."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:CloudFunctionInfoResponse",
          "description": "Display information of a Cloud Function."
        },
        "cloudRunRevision": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:CloudRunRevisionInfoResponse",
          "description": "Display information of a Cloud Run revision."
        },
        "cloudSqlInstance": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:CloudSQLInstanceInfoResponse",
          "description": "Display information of a Cloud SQL instance."
        },
        "deliver": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:DeliverInfoResponse",
          "description": "Display information of the final state \"deliver\" and reason."
        },
        "description": {
          "type": "string",
          "description": "A description of the step. Usually this is a summary of the state."
        },
        "drop": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:DropInfoResponse",
          "description": "Display information of the final state \"drop\" and reason."
        },
        "endpoint": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EndpointInfoResponse",
          "description": "Display information of the source and destination under analysis. The endpoint information in an intermediate state may differ with the initial input, as it might be modified by state like NAT, or Connection Proxy."
        },
        "firewall": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:FirewallInfoResponse",
          "description": "Display information of a Compute Engine firewall rule."
        },
        "forward": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:ForwardInfoResponse",
          "description": "Display information of the final state \"forward\" and reason."
        },
        "forwardingRule": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:ForwardingRuleInfoResponse",
          "description": "Display information of a Compute Engine forwarding rule."
        },
        "gkeMaster": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:GKEMasterInfoResponse",
          "description": "Display information of a Google Kubernetes Engine cluster master."
        },
        "googleService": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:GoogleServiceInfoResponse",
          "description": "Display information of a Google service"
        },
        "instance": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:InstanceInfoResponse",
          "description": "Display information of a Compute Engine instance."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:LoadBalancerInfoResponse",
          "description": "Display information of the load balancers."
        },
        "network": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:NetworkInfoResponse",
          "description": "Display information of a Google Cloud network."
        },
        "project": {
          "type": "string",
          "description": "Project ID that contains the configuration this step is validating."
        },
        "route": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:RouteInfoResponse",
          "description": "Display information of a Compute Engine route."
        },
        "state": {
          "type": "string",
          "description": "Each step is in one of the pre-defined states."
        },
        "vpcConnector": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:VpcConnectorInfoResponse",
          "description": "Display information of a VPC connector."
        },
        "vpnGateway": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:VpnGatewayInfoResponse",
          "description": "Display information of a Compute Engine VPN gateway."
        },
        "vpnTunnel": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:VpnTunnelInfoResponse",
          "description": "Display information of a Compute Engine VPN tunnel."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "appEngineVersion",
        "causesDrop",
        "cloudFunction",
        "cloudRunRevision",
        "cloudSqlInstance",
        "deliver",
        "description",
        "drop",
        "endpoint",
        "firewall",
        "forward",
        "forwardingRule",
        "gkeMaster",
        "googleService",
        "instance",
        "loadBalancer",
        "network",
        "project",
        "route",
        "state",
        "vpcConnector",
        "vpnGateway",
        "vpnTunnel"
      ]
    },
    "google-native:networkmanagement/v1beta1:TraceResponse": {
      "description": "Trace represents one simulated packet forwarding path. * Each trace contains multiple ordered steps. * Each step is in a particular state with associated configuration. * State is categorized as final or non-final states. * Each final state has a reason associated. * Each trace must end with a final state (the last step). ``` |---------------------Trace----------------------| Step1(State) Step2(State) --- StepN(State(final)) ```",
      "properties": {
        "endpointInfo": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EndpointInfoResponse",
          "description": "Derived from the source and destination endpoints definition specified by user request, and validated by the data plane model. If there are multiple traces starting from different source locations, then the endpoint_info may be different between traces."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:StepResponse"
          },
          "description": "A trace of a test contains multiple steps from the initial state to the final state (delivered, dropped, forwarded, or aborted). The steps are ordered by the processing sequence within the simulated network state machine. It is critical to preserve the order of the steps and avoid reordering or sorting them."
        }
      },
      "type": "object",
      "required": [
        "endpointInfo",
        "steps"
      ]
    },
    "google-native:networkmanagement/v1beta1:VpcConnectorInfoResponse": {
      "description": "For display only. Metadata associated with a VPC connector.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a VPC connector."
        },
        "location": {
          "type": "string",
          "description": "Location in which the VPC connector is deployed."
        },
        "uri": {
          "type": "string",
          "description": "URI of a VPC connector."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "location",
        "uri"
      ]
    },
    "google-native:networkmanagement/v1beta1:VpnGatewayInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine VPN gateway.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a VPN gateway."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of the VPN gateway."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Compute Engine network where the VPN gateway is configured."
        },
        "region": {
          "type": "string",
          "description": "Name of a Google Cloud region where this VPN gateway is configured."
        },
        "uri": {
          "type": "string",
          "description": "URI of a VPN gateway."
        },
        "vpnTunnelUri": {
          "type": "string",
          "description": "A VPN tunnel that is associated with this VPN gateway. There may be multiple VPN tunnels configured on a VPN gateway, and only the one relevant to the test is displayed."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "ipAddress",
        "networkUri",
        "region",
        "uri",
        "vpnTunnelUri"
      ]
    },
    "google-native:networkmanagement/v1beta1:VpnTunnelInfoResponse": {
      "description": "For display only. Metadata associated with a Compute Engine VPN tunnel.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Name of a VPN tunnel."
        },
        "networkUri": {
          "type": "string",
          "description": "URI of a Compute Engine network where the VPN tunnel is configured."
        },
        "region": {
          "type": "string",
          "description": "Name of a Google Cloud region where this VPN tunnel is configured."
        },
        "remoteGateway": {
          "type": "string",
          "description": "URI of a VPN gateway at remote end of the tunnel."
        },
        "remoteGatewayIp": {
          "type": "string",
          "description": "Remote VPN gateway's IP address."
        },
        "routingType": {
          "type": "string",
          "description": "Type of the routing policy."
        },
        "sourceGateway": {
          "type": "string",
          "description": "URI of the VPN gateway at local end of the tunnel."
        },
        "sourceGatewayIp": {
          "type": "string",
          "description": "Local VPN gateway's IP address."
        },
        "uri": {
          "type": "string",
          "description": "URI of a VPN tunnel."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "networkUri",
        "region",
        "remoteGateway",
        "remoteGatewayIp",
        "routingType",
        "sourceGateway",
        "sourceGatewayIp",
        "uri"
      ]
    },
    "google-native:networksecurity/v1:AddressGroupType": {
      "description": "Required. The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\".",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "IP v4 ranges.",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "description": "IP v6 ranges.",
          "value": "IPV6"
        }
      ]
    },
    "google-native:networksecurity/v1:AuthorizationPolicyAction": {
      "description": "Required. The action to take when a rule match is found. Possible values are \"ALLOW\" or \"DENY\".",
      "type": "string",
      "enum": [
        {
          "name": "ActionUnspecified",
          "description": "Default value.",
          "value": "ACTION_UNSPECIFIED"
        },
        {
          "name": "Allow",
          "description": "Grant access.",
          "value": "ALLOW"
        },
        {
          "name": "Deny",
          "description": "Deny access. Deny rules should be avoided unless they are used to provide a default \"deny all\" fallback.",
          "value": "DENY"
        }
      ]
    },
    "google-native:networksecurity/v1:CertificateProviderInstance": {
      "description": "Specification of a TLS certificate provider instance. Workloads may have one or more CertificateProvider instances (plugins) and one of them is enabled and configured by specifying this message. Workloads use the values from this message to locate and load the CertificateProvider instance configuration.",
      "properties": {
        "pluginInstance": {
          "type": "string",
          "description": "Plugin instance name, used to locate and load CertificateProvider instance configuration. Set to \"google_cloud_private_spiffe\" to use Certificate Authority Service certificate provider instance."
        }
      },
      "type": "object",
      "required": [
        "pluginInstance"
      ]
    },
    "google-native:networksecurity/v1:CertificateProviderInstanceResponse": {
      "description": "Specification of a TLS certificate provider instance. Workloads may have one or more CertificateProvider instances (plugins) and one of them is enabled and configured by specifying this message. Workloads use the values from this message to locate and load the CertificateProvider instance configuration.",
      "properties": {
        "pluginInstance": {
          "type": "string",
          "description": "Plugin instance name, used to locate and load CertificateProvider instance configuration. Set to \"google_cloud_private_spiffe\" to use Certificate Authority Service certificate provider instance."
        }
      },
      "type": "object",
      "required": [
        "pluginInstance"
      ]
    },
    "google-native:networksecurity/v1:Destination": {
      "description": "Specification of traffic destination attributes.",
      "properties": {
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of host names to match. Matched against the \":authority\" header in http requests. At least one host should match. Each host can be an exact match, or a prefix match (example \"mydomain.*\") or a suffix match (example \"*.myorg.com\") or a presence (any) match \"*\"."
        },
        "httpHeaderMatch": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:HttpHeaderMatch",
          "description": "Optional. Match against key:value pair in http header. Provides a flexible match based on HTTP headers, for potentially advanced use cases. At least one header should match. Avoid using header matches to make authorization decisions unless there is a strong guarantee that requests arrive through a trusted client or proxy."
        },
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of HTTP methods to match. At least one method should match. Should not be set for gRPC services."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of destination ports to match. At least one port should match."
        }
      },
      "type": "object",
      "required": [
        "hosts",
        "ports"
      ]
    },
    "google-native:networksecurity/v1:DestinationResponse": {
      "description": "Specification of traffic destination attributes.",
      "properties": {
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of host names to match. Matched against the \":authority\" header in http requests. At least one host should match. Each host can be an exact match, or a prefix match (example \"mydomain.*\") or a suffix match (example \"*.myorg.com\") or a presence (any) match \"*\"."
        },
        "httpHeaderMatch": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:HttpHeaderMatchResponse",
          "description": "Optional. Match against key:value pair in http header. Provides a flexible match based on HTTP headers, for potentially advanced use cases. At least one header should match. Avoid using header matches to make authorization decisions unless there is a strong guarantee that requests arrive through a trusted client or proxy."
        },
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of HTTP methods to match. At least one method should match. Should not be set for gRPC services."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of destination ports to match. At least one port should match."
        }
      },
      "type": "object",
      "required": [
        "hosts",
        "httpHeaderMatch",
        "methods",
        "ports"
      ]
    },
    "google-native:networksecurity/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:networksecurity/v1:GoogleCloudNetworksecurityV1CertificateProvider": {
      "description": "Specification of certificate provider. Defines the mechanism to obtain the certificate and private key for peer to peer authentication.",
      "properties": {
        "certificateProviderInstance": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:CertificateProviderInstance",
          "description": "The certificate provider instance specification that will be passed to the data plane, which will be used to load necessary credential information."
        },
        "grpcEndpoint": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1GrpcEndpoint",
          "description": "gRPC specific configuration to access the gRPC server to obtain the cert and private key."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:GoogleCloudNetworksecurityV1CertificateProviderResponse": {
      "description": "Specification of certificate provider. Defines the mechanism to obtain the certificate and private key for peer to peer authentication.",
      "properties": {
        "certificateProviderInstance": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:CertificateProviderInstanceResponse",
          "description": "The certificate provider instance specification that will be passed to the data plane, which will be used to load necessary credential information."
        },
        "grpcEndpoint": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1GrpcEndpointResponse",
          "description": "gRPC specific configuration to access the gRPC server to obtain the cert and private key."
        }
      },
      "type": "object",
      "required": [
        "certificateProviderInstance",
        "grpcEndpoint"
      ]
    },
    "google-native:networksecurity/v1:GoogleCloudNetworksecurityV1GrpcEndpoint": {
      "description": "Specification of the GRPC Endpoint.",
      "properties": {
        "targetUri": {
          "type": "string",
          "description": "The target URI of the gRPC endpoint. Only UDS path is supported, and should start with \"unix:\"."
        }
      },
      "type": "object",
      "required": [
        "targetUri"
      ]
    },
    "google-native:networksecurity/v1:GoogleCloudNetworksecurityV1GrpcEndpointResponse": {
      "description": "Specification of the GRPC Endpoint.",
      "properties": {
        "targetUri": {
          "type": "string",
          "description": "The target URI of the gRPC endpoint. Only UDS path is supported, and should start with \"unix:\"."
        }
      },
      "type": "object",
      "required": [
        "targetUri"
      ]
    },
    "google-native:networksecurity/v1:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:networksecurity/v1:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:networksecurity/v1:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:networksecurity/v1:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:networksecurity/v1:HttpHeaderMatch": {
      "description": "Specification of HTTP header match attributes.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\"."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see: en.cppreference.com/w/cpp/regex/ecmascript For matching against a port specified in the HTTP request, use a headerMatch with headerName set to Host and a regular expression that satisfies the RFC2616 Host header's port specifier."
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "regexMatch"
      ]
    },
    "google-native:networksecurity/v1:HttpHeaderMatchResponse": {
      "description": "Specification of HTTP header match attributes.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\"."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see: en.cppreference.com/w/cpp/regex/ecmascript For matching against a port specified in the HTTP request, use a headerMatch with headerName set to Host and a regular expression that satisfies the RFC2616 Host header's port specifier."
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "regexMatch"
      ]
    },
    "google-native:networksecurity/v1:MTLSPolicy": {
      "description": "Specification of the MTLSPolicy.",
      "properties": {
        "clientValidationCa": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:ValidationCA"
          },
          "description": "Required if the policy is to be used with Traffic Director. For external HTTPS load balancers it must be empty. Defines the mechanism to obtain the Certificate Authority certificate to validate the client certificate."
        },
        "clientValidationMode": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:MTLSPolicyClientValidationMode",
          "description": "When the client presents an invalid certificate or no certificate to the load balancer, the `client_validation_mode` specifies how the client connection is handled. Required if the policy is to be used with the external HTTPS load balancing. For Traffic Director it must be empty."
        },
        "clientValidationTrustConfig": {
          "type": "string",
          "description": "Reference to the TrustConfig from certificatemanager.googleapis.com namespace. If specified, the chain validation will be performed against certificates configured in the given TrustConfig. Allowed only if the policy is to be used with external HTTPS load balancers."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:MTLSPolicyClientValidationMode": {
      "description": "When the client presents an invalid certificate or no certificate to the load balancer, the `client_validation_mode` specifies how the client connection is handled. Required if the policy is to be used with the external HTTPS load balancing. For Traffic Director it must be empty.",
      "type": "string",
      "enum": [
        {
          "name": "ClientValidationModeUnspecified",
          "description": "Not allowed.",
          "value": "CLIENT_VALIDATION_MODE_UNSPECIFIED"
        },
        {
          "name": "AllowInvalidOrMissingClientCert",
          "description": "Allow connection even if certificate chain validation of the client certificate failed or no client certificate was presented. The proof of possession of the private key is always checked if client certificate was presented. This mode requires the backend to implement processing of data extracted from a client certificate to authenticate the peer, or to reject connections if the client certificate fingerprint is missing.",
          "value": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT"
        },
        {
          "name": "RejectInvalid",
          "description": "Require a client certificate and allow connection to the backend only if validation of the client certificate passed. If set, requires a reference to non-empty TrustConfig specified in `client_validation_trust_config`.",
          "value": "REJECT_INVALID"
        }
      ]
    },
    "google-native:networksecurity/v1:MTLSPolicyResponse": {
      "description": "Specification of the MTLSPolicy.",
      "properties": {
        "clientValidationCa": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:ValidationCAResponse"
          },
          "description": "Required if the policy is to be used with Traffic Director. For external HTTPS load balancers it must be empty. Defines the mechanism to obtain the Certificate Authority certificate to validate the client certificate."
        },
        "clientValidationMode": {
          "type": "string",
          "description": "When the client presents an invalid certificate or no certificate to the load balancer, the `client_validation_mode` specifies how the client connection is handled. Required if the policy is to be used with the external HTTPS load balancing. For Traffic Director it must be empty."
        },
        "clientValidationTrustConfig": {
          "type": "string",
          "description": "Reference to the TrustConfig from certificatemanager.googleapis.com namespace. If specified, the chain validation will be performed against certificates configured in the given TrustConfig. Allowed only if the policy is to be used with external HTTPS load balancers."
        }
      },
      "type": "object",
      "required": [
        "clientValidationCa",
        "clientValidationMode",
        "clientValidationTrustConfig"
      ]
    },
    "google-native:networksecurity/v1:OrganizationAddressGroupType": {
      "description": "Required. The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\".",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "IP v4 ranges.",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "description": "IP v6 ranges.",
          "value": "IPV6"
        }
      ]
    },
    "google-native:networksecurity/v1:Rule": {
      "description": "Specification of rules.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:Destination"
          },
          "description": "Optional. List of attributes for the traffic destination. All of the destinations must match. A destination is a match if a request matches all the specified hosts, ports, methods and headers. If not set, the action specified in the 'action' field will be applied without any rule checks for the destination."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:Source"
          },
          "description": "Optional. List of attributes for the traffic source. All of the sources must match. A source is a match if both principals and ip_blocks match. If not set, the action specified in the 'action' field will be applied without any rule checks for the source."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:RuleBasicProfile": {
      "description": "Required. Profile which tells what the primitive action should be.",
      "type": "string",
      "enum": [
        {
          "name": "BasicProfileUnspecified",
          "description": "If there is not a mentioned action for the target.",
          "value": "BASIC_PROFILE_UNSPECIFIED"
        },
        {
          "name": "Allow",
          "description": "Allow the matched traffic.",
          "value": "ALLOW"
        },
        {
          "name": "Deny",
          "description": "Deny the matched traffic.",
          "value": "DENY"
        }
      ]
    },
    "google-native:networksecurity/v1:RuleResponse": {
      "description": "Specification of rules.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:DestinationResponse"
          },
          "description": "Optional. List of attributes for the traffic destination. All of the destinations must match. A destination is a match if a request matches all the specified hosts, ports, methods and headers. If not set, the action specified in the 'action' field will be applied without any rule checks for the destination."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:SourceResponse"
          },
          "description": "Optional. List of attributes for the traffic source. All of the sources must match. A source is a match if both principals and ip_blocks match. If not set, the action specified in the 'action' field will be applied without any rule checks for the source."
        }
      },
      "type": "object",
      "required": [
        "destinations",
        "sources"
      ]
    },
    "google-native:networksecurity/v1:Source": {
      "description": "Specification of traffic source attributes.",
      "properties": {
        "ipBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of CIDR ranges to match based on source IP address. At least one IP block should match. Single IP (e.g., \"1.2.3.4\") and CIDR (e.g., \"1.2.3.0/24\") are supported. Authorization based on source IP alone should be avoided. The IP addresses of any load balancers or proxies should be considered untrusted."
        },
        "principals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of peer identities to match for authorization. At least one principal should match. Each peer can be an exact match, or a prefix match (example, \"namespace/*\") or a suffix match (example, \"*/service-account\") or a presence match \"*\". Authorization based on the principal name without certificate validation (configured by ServerTlsPolicy resource) is considered insecure."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:SourceResponse": {
      "description": "Specification of traffic source attributes.",
      "properties": {
        "ipBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of CIDR ranges to match based on source IP address. At least one IP block should match. Single IP (e.g., \"1.2.3.4\") and CIDR (e.g., \"1.2.3.0/24\") are supported. Authorization based on source IP alone should be avoided. The IP addresses of any load balancers or proxies should be considered untrusted."
        },
        "principals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of peer identities to match for authorization. At least one principal should match. Each peer can be an exact match, or a prefix match (example, \"namespace/*\") or a suffix match (example, \"*/service-account\") or a presence match \"*\". Authorization based on the principal name without certificate validation (configured by ServerTlsPolicy resource) is considered insecure."
        }
      },
      "type": "object",
      "required": [
        "ipBlocks",
        "principals"
      ]
    },
    "google-native:networksecurity/v1:TlsInspectionPolicyMinTlsVersion": {
      "description": "Optional. Minimum TLS version that the firewall should use when negotiating connections with both clients and servers. If this is not set, then the default value is to allow the broadest set of clients and servers (TLS 1.0 or higher). Setting this to more restrictive values may improve security, but may also prevent the firewall from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field.",
      "type": "string",
      "enum": [
        {
          "name": "TlsVersionUnspecified",
          "description": "Indicates no TLS version was specified.",
          "value": "TLS_VERSION_UNSPECIFIED"
        },
        {
          "name": "Tls10",
          "description": "TLS 1.0",
          "value": "TLS_1_0"
        },
        {
          "name": "Tls11",
          "description": "TLS 1.1",
          "value": "TLS_1_1"
        },
        {
          "name": "Tls12",
          "description": "TLS 1.2",
          "value": "TLS_1_2"
        },
        {
          "name": "Tls13",
          "description": "TLS 1.3",
          "value": "TLS_1_3"
        }
      ]
    },
    "google-native:networksecurity/v1:TlsInspectionPolicyTlsFeatureProfile": {
      "description": "Optional. The selected Profile. If this is not set, then the default value is to allow the broadest set of clients and servers (\"PROFILE_COMPATIBLE\"). Setting this to more restrictive values may improve security, but may also prevent the TLS inspection proxy from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileUnspecified",
          "description": "Indicates no profile was specified.",
          "value": "PROFILE_UNSPECIFIED"
        },
        {
          "name": "ProfileCompatible",
          "description": "Compatible profile. Allows the broadest set of clients, even those which support only out-of-date SSL features to negotiate with the TLS inspection proxy.",
          "value": "PROFILE_COMPATIBLE"
        },
        {
          "name": "ProfileModern",
          "description": "Modern profile. Supports a wide set of SSL features, allowing modern clients to negotiate SSL with the TLS inspection proxy.",
          "value": "PROFILE_MODERN"
        },
        {
          "name": "ProfileRestricted",
          "description": "Restricted profile. Supports a reduced set of SSL features, intended to meet stricter compliance requirements.",
          "value": "PROFILE_RESTRICTED"
        },
        {
          "name": "ProfileCustom",
          "description": "Custom profile. Allow only the set of allowed SSL features specified in the custom_features field of SslPolicy.",
          "value": "PROFILE_CUSTOM"
        }
      ]
    },
    "google-native:networksecurity/v1:ValidationCA": {
      "description": "Specification of ValidationCA. Defines the mechanism to obtain the Certificate Authority certificate to validate the peer certificate.",
      "properties": {
        "certificateProviderInstance": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:CertificateProviderInstance",
          "description": "The certificate provider instance specification that will be passed to the data plane, which will be used to load necessary credential information."
        },
        "grpcEndpoint": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1GrpcEndpoint",
          "description": "gRPC specific configuration to access the gRPC server to obtain the CA certificate."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1:ValidationCAResponse": {
      "description": "Specification of ValidationCA. Defines the mechanism to obtain the Certificate Authority certificate to validate the peer certificate.",
      "properties": {
        "certificateProviderInstance": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:CertificateProviderInstanceResponse",
          "description": "The certificate provider instance specification that will be passed to the data plane, which will be used to load necessary credential information."
        },
        "grpcEndpoint": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1GrpcEndpointResponse",
          "description": "gRPC specific configuration to access the gRPC server to obtain the CA certificate."
        }
      },
      "type": "object",
      "required": [
        "certificateProviderInstance",
        "grpcEndpoint"
      ]
    },
    "google-native:networksecurity/v1beta1:AddressGroupType": {
      "description": "Required. The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\".",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "IP v4 ranges.",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "description": "IP v6 ranges.",
          "value": "IPV6"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:AuthorizationPolicyAction": {
      "description": "Required. The action to take when a rule match is found. Possible values are \"ALLOW\" or \"DENY\".",
      "type": "string",
      "enum": [
        {
          "name": "ActionUnspecified",
          "description": "Default value.",
          "value": "ACTION_UNSPECIFIED"
        },
        {
          "name": "Allow",
          "description": "Grant access.",
          "value": "ALLOW"
        },
        {
          "name": "Deny",
          "description": "Deny access. Deny rules should be avoided unless they are used to provide a default \"deny all\" fallback.",
          "value": "DENY"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:CertificateProviderInstance": {
      "description": "Specification of a TLS certificate provider instance. Workloads may have one or more CertificateProvider instances (plugins) and one of them is enabled and configured by specifying this message. Workloads use the values from this message to locate and load the CertificateProvider instance configuration.",
      "properties": {
        "pluginInstance": {
          "type": "string",
          "description": "Plugin instance name, used to locate and load CertificateProvider instance configuration. Set to \"google_cloud_private_spiffe\" to use Certificate Authority Service certificate provider instance."
        }
      },
      "type": "object",
      "required": [
        "pluginInstance"
      ]
    },
    "google-native:networksecurity/v1beta1:CertificateProviderInstanceResponse": {
      "description": "Specification of a TLS certificate provider instance. Workloads may have one or more CertificateProvider instances (plugins) and one of them is enabled and configured by specifying this message. Workloads use the values from this message to locate and load the CertificateProvider instance configuration.",
      "properties": {
        "pluginInstance": {
          "type": "string",
          "description": "Plugin instance name, used to locate and load CertificateProvider instance configuration. Set to \"google_cloud_private_spiffe\" to use Certificate Authority Service certificate provider instance."
        }
      },
      "type": "object",
      "required": [
        "pluginInstance"
      ]
    },
    "google-native:networksecurity/v1beta1:Destination": {
      "description": "Specification of traffic destination attributes.",
      "properties": {
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of host names to match. Matched against the \":authority\" header in http requests. At least one host should match. Each host can be an exact match, or a prefix match (example \"mydomain.*\") or a suffix match (example \"*.myorg.com\") or a presence (any) match \"*\"."
        },
        "httpHeaderMatch": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:HttpHeaderMatch",
          "description": "Optional. Match against key:value pair in http header. Provides a flexible match based on HTTP headers, for potentially advanced use cases. At least one header should match. Avoid using header matches to make authorization decisions unless there is a strong guarantee that requests arrive through a trusted client or proxy."
        },
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of HTTP methods to match. At least one method should match. Should not be set for gRPC services."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of destination ports to match. At least one port should match."
        }
      },
      "type": "object",
      "required": [
        "hosts",
        "ports"
      ]
    },
    "google-native:networksecurity/v1beta1:DestinationResponse": {
      "description": "Specification of traffic destination attributes.",
      "properties": {
        "hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of host names to match. Matched against the \":authority\" header in http requests. At least one host should match. Each host can be an exact match, or a prefix match (example \"mydomain.*\") or a suffix match (example \"*.myorg.com\") or a presence (any) match \"*\"."
        },
        "httpHeaderMatch": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:HttpHeaderMatchResponse",
          "description": "Optional. Match against key:value pair in http header. Provides a flexible match based on HTTP headers, for potentially advanced use cases. At least one header should match. Avoid using header matches to make authorization decisions unless there is a strong guarantee that requests arrive through a trusted client or proxy."
        },
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of HTTP methods to match. At least one method should match. Should not be set for gRPC services."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of destination ports to match. At least one port should match."
        }
      },
      "type": "object",
      "required": [
        "hosts",
        "httpHeaderMatch",
        "methods",
        "ports"
      ]
    },
    "google-native:networksecurity/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:networksecurity/v1beta1:GoogleCloudNetworksecurityV1beta1CertificateProvider": {
      "description": "Specification of certificate provider. Defines the mechanism to obtain the certificate and private key for peer to peer authentication.",
      "properties": {
        "certificateProviderInstance": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:CertificateProviderInstance",
          "description": "The certificate provider instance specification that will be passed to the data plane, which will be used to load necessary credential information."
        },
        "grpcEndpoint": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1GrpcEndpoint",
          "description": "gRPC specific configuration to access the gRPC server to obtain the cert and private key."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:GoogleCloudNetworksecurityV1beta1CertificateProviderResponse": {
      "description": "Specification of certificate provider. Defines the mechanism to obtain the certificate and private key for peer to peer authentication.",
      "properties": {
        "certificateProviderInstance": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:CertificateProviderInstanceResponse",
          "description": "The certificate provider instance specification that will be passed to the data plane, which will be used to load necessary credential information."
        },
        "grpcEndpoint": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1GrpcEndpointResponse",
          "description": "gRPC specific configuration to access the gRPC server to obtain the cert and private key."
        }
      },
      "type": "object",
      "required": [
        "certificateProviderInstance",
        "grpcEndpoint"
      ]
    },
    "google-native:networksecurity/v1beta1:GoogleCloudNetworksecurityV1beta1GrpcEndpoint": {
      "description": "Specification of the GRPC Endpoint.",
      "properties": {
        "targetUri": {
          "type": "string",
          "description": "The target URI of the gRPC endpoint. Only UDS path is supported, and should start with \"unix:\"."
        }
      },
      "type": "object",
      "required": [
        "targetUri"
      ]
    },
    "google-native:networksecurity/v1beta1:GoogleCloudNetworksecurityV1beta1GrpcEndpointResponse": {
      "description": "Specification of the GRPC Endpoint.",
      "properties": {
        "targetUri": {
          "type": "string",
          "description": "The target URI of the gRPC endpoint. Only UDS path is supported, and should start with \"unix:\"."
        }
      },
      "type": "object",
      "required": [
        "targetUri"
      ]
    },
    "google-native:networksecurity/v1beta1:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:networksecurity/v1beta1:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:networksecurity/v1beta1:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:HttpHeaderMatch": {
      "description": "Specification of HTTP header match attributes.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\"."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see: en.cppreference.com/w/cpp/regex/ecmascript For matching against a port specified in the HTTP request, use a headerMatch with headerName set to Host and a regular expression that satisfies the RFC2616 Host header's port specifier."
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "regexMatch"
      ]
    },
    "google-native:networksecurity/v1beta1:HttpHeaderMatchResponse": {
      "description": "Specification of HTTP header match attributes.",
      "properties": {
        "headerName": {
          "type": "string",
          "description": "The name of the HTTP header to match. For matching against the HTTP request's authority, use a headerMatch with the header name \":authority\". For matching a request's method, use the headerName \":method\"."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regexMatch. For regular expression grammar, please see: en.cppreference.com/w/cpp/regex/ecmascript For matching against a port specified in the HTTP request, use a headerMatch with headerName set to Host and a regular expression that satisfies the RFC2616 Host header's port specifier."
        }
      },
      "type": "object",
      "required": [
        "headerName",
        "regexMatch"
      ]
    },
    "google-native:networksecurity/v1beta1:MTLSPolicy": {
      "description": "Specification of the MTLSPolicy.",
      "properties": {
        "clientValidationCa": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ValidationCA"
          },
          "description": "Required if the policy is to be used with Traffic Director. For external HTTPS load balancers it must be empty. Defines the mechanism to obtain the Certificate Authority certificate to validate the client certificate."
        },
        "clientValidationMode": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:MTLSPolicyClientValidationMode",
          "description": "When the client presents an invalid certificate or no certificate to the load balancer, the `client_validation_mode` specifies how the client connection is handled. Required if the policy is to be used with the external HTTPS load balancing. For Traffic Director it must be empty."
        },
        "clientValidationTrustConfig": {
          "type": "string",
          "description": "Reference to the TrustConfig from certificatemanager.googleapis.com namespace. If specified, the chain validation will be performed against certificates configured in the given TrustConfig. Allowed only if the policy is to be used with external HTTPS load balancers."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:MTLSPolicyClientValidationMode": {
      "description": "When the client presents an invalid certificate or no certificate to the load balancer, the `client_validation_mode` specifies how the client connection is handled. Required if the policy is to be used with the external HTTPS load balancing. For Traffic Director it must be empty.",
      "type": "string",
      "enum": [
        {
          "name": "ClientValidationModeUnspecified",
          "description": "Not allowed.",
          "value": "CLIENT_VALIDATION_MODE_UNSPECIFIED"
        },
        {
          "name": "AllowInvalidOrMissingClientCert",
          "description": "Allow connection even if certificate chain validation of the client certificate failed or no client certificate was presented. The proof of possession of the private key is always checked if client certificate was presented. This mode requires the backend to implement processing of data extracted from a client certificate to authenticate the peer, or to reject connections if the client certificate fingerprint is missing.",
          "value": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT"
        },
        {
          "name": "RejectInvalid",
          "description": "Require a client certificate and allow connection to the backend only if validation of the client certificate passed. If set, requires a reference to non-empty TrustConfig specified in `client_validation_trust_config`.",
          "value": "REJECT_INVALID"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:MTLSPolicyResponse": {
      "description": "Specification of the MTLSPolicy.",
      "properties": {
        "clientValidationCa": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ValidationCAResponse"
          },
          "description": "Required if the policy is to be used with Traffic Director. For external HTTPS load balancers it must be empty. Defines the mechanism to obtain the Certificate Authority certificate to validate the client certificate."
        },
        "clientValidationMode": {
          "type": "string",
          "description": "When the client presents an invalid certificate or no certificate to the load balancer, the `client_validation_mode` specifies how the client connection is handled. Required if the policy is to be used with the external HTTPS load balancing. For Traffic Director it must be empty."
        },
        "clientValidationTrustConfig": {
          "type": "string",
          "description": "Reference to the TrustConfig from certificatemanager.googleapis.com namespace. If specified, the chain validation will be performed against certificates configured in the given TrustConfig. Allowed only if the policy is to be used with external HTTPS load balancers."
        }
      },
      "type": "object",
      "required": [
        "clientValidationCa",
        "clientValidationMode",
        "clientValidationTrustConfig"
      ]
    },
    "google-native:networksecurity/v1beta1:OrganizationAddressGroupType": {
      "description": "Required. The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\".",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Ipv4",
          "description": "IP v4 ranges.",
          "value": "IPV4"
        },
        {
          "name": "Ipv6",
          "description": "IP v6 ranges.",
          "value": "IPV6"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:Rule": {
      "description": "Specification of rules.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:Destination"
          },
          "description": "Optional. List of attributes for the traffic destination. All of the destinations must match. A destination is a match if a request matches all the specified hosts, ports, methods and headers. If not set, the action specified in the 'action' field will be applied without any rule checks for the destination."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:Source"
          },
          "description": "Optional. List of attributes for the traffic source. All of the sources must match. A source is a match if both principals and ip_blocks match. If not set, the action specified in the 'action' field will be applied without any rule checks for the source."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:RuleBasicProfile": {
      "description": "Required. Profile which tells what the primitive action should be.",
      "type": "string",
      "enum": [
        {
          "name": "BasicProfileUnspecified",
          "description": "If there is not a mentioned action for the target.",
          "value": "BASIC_PROFILE_UNSPECIFIED"
        },
        {
          "name": "Allow",
          "description": "Allow the matched traffic.",
          "value": "ALLOW"
        },
        {
          "name": "Deny",
          "description": "Deny the matched traffic.",
          "value": "DENY"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:RuleResponse": {
      "description": "Specification of rules.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:DestinationResponse"
          },
          "description": "Optional. List of attributes for the traffic destination. All of the destinations must match. A destination is a match if a request matches all the specified hosts, ports, methods and headers. If not set, the action specified in the 'action' field will be applied without any rule checks for the destination."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:SourceResponse"
          },
          "description": "Optional. List of attributes for the traffic source. All of the sources must match. A source is a match if both principals and ip_blocks match. If not set, the action specified in the 'action' field will be applied without any rule checks for the source."
        }
      },
      "type": "object",
      "required": [
        "destinations",
        "sources"
      ]
    },
    "google-native:networksecurity/v1beta1:SecurityProfileType": {
      "description": "Immutable. The single ProfileType that the SecurityProfile resource configures.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileTypeUnspecified",
          "description": "Profile type not specified.",
          "value": "PROFILE_TYPE_UNSPECIFIED"
        },
        {
          "name": "ThreatPrevention",
          "description": "Profile type for threat prevention.",
          "value": "THREAT_PREVENTION"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:SeverityOverride": {
      "description": "Defines what action to take for a specific severity match.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:SeverityOverrideAction",
          "description": "Threat action override."
        },
        "severity": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:SeverityOverrideSeverity",
          "description": "Severity level to match."
        }
      },
      "type": "object",
      "required": [
        "action",
        "severity"
      ]
    },
    "google-native:networksecurity/v1beta1:SeverityOverrideAction": {
      "description": "Required. Threat action override.",
      "type": "string",
      "enum": [
        {
          "name": "ThreatActionUnspecified",
          "description": "Threat action not specified.",
          "value": "THREAT_ACTION_UNSPECIFIED"
        },
        {
          "name": "DefaultAction",
          "description": "The default action (as specified by the vendor) is taken.",
          "value": "DEFAULT_ACTION"
        },
        {
          "name": "Allow",
          "description": "The packet matching this rule will be allowed to transmit.",
          "value": "ALLOW"
        },
        {
          "name": "Alert",
          "description": "The packet matching this rule will be allowed to transmit, but a threat_log entry will be sent to the consumer project.",
          "value": "ALERT"
        },
        {
          "name": "Deny",
          "description": "The packet matching this rule will be dropped, and a threat_log entry will be sent to the consumer project.",
          "value": "DENY"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:SeverityOverrideResponse": {
      "description": "Defines what action to take for a specific severity match.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Threat action override."
        },
        "severity": {
          "type": "string",
          "description": "Severity level to match."
        }
      },
      "type": "object",
      "required": [
        "action",
        "severity"
      ]
    },
    "google-native:networksecurity/v1beta1:SeverityOverrideSeverity": {
      "description": "Required. Severity level to match.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Severity level not specified.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Informational",
          "description": "Suspicious events that do not pose an immediate threat, but that are reported to call attention to deeper problems that could possibly exist.",
          "value": "INFORMATIONAL"
        },
        {
          "name": "Low",
          "description": "Warning-level threats that have very little impact on an organization's infrastructure. They usually require local or physical system access and may often result in victim privacy issues and information leakage.",
          "value": "LOW"
        },
        {
          "name": "Medium",
          "description": "Minor threats in which impact is minimized, that do not compromise the target or exploits that require an attacker to reside on the same local network as the victim, affect only non-standard configurations or obscure applications, or provide very limited access.",
          "value": "MEDIUM"
        },
        {
          "name": "High",
          "description": "Threats that have the ability to become critical but have mitigating factors; for example, they may be difficult to exploit, do not result in elevated privileges, or do not have a large victim pool.",
          "value": "HIGH"
        },
        {
          "name": "Critical",
          "description": "Serious threats, such as those that affect default installations of widely deployed software, result in root compromise of servers, and the exploit code is widely available to attackers. The attacker usually does not need any special authentication credentials or knowledge about the individual victims and the target does not need to be manipulated into performing any special functions.",
          "value": "CRITICAL"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:Source": {
      "description": "Specification of traffic source attributes.",
      "properties": {
        "ipBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of CIDR ranges to match based on source IP address. At least one IP block should match. Single IP (e.g., \"1.2.3.4\") and CIDR (e.g., \"1.2.3.0/24\") are supported. Authorization based on source IP alone should be avoided. The IP addresses of any load balancers or proxies should be considered untrusted."
        },
        "principals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of peer identities to match for authorization. At least one principal should match. Each peer can be an exact match, or a prefix match (example, \"namespace/*\") or a suffix match (example, \"*/service-account\") or a presence match \"*\". Authorization based on the principal name without certificate validation (configured by ServerTlsPolicy resource) is considered insecure."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:SourceResponse": {
      "description": "Specification of traffic source attributes.",
      "properties": {
        "ipBlocks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of CIDR ranges to match based on source IP address. At least one IP block should match. Single IP (e.g., \"1.2.3.4\") and CIDR (e.g., \"1.2.3.0/24\") are supported. Authorization based on source IP alone should be avoided. The IP addresses of any load balancers or proxies should be considered untrusted."
        },
        "principals": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of peer identities to match for authorization. At least one principal should match. Each peer can be an exact match, or a prefix match (example, \"namespace/*\") or a suffix match (example, \"*/service-account\") or a presence match \"*\". Authorization based on the principal name without certificate validation (configured by ServerTlsPolicy resource) is considered insecure."
        }
      },
      "type": "object",
      "required": [
        "ipBlocks",
        "principals"
      ]
    },
    "google-native:networksecurity/v1beta1:ThreatOverride": {
      "description": "Defines what action to take for a specific threat_id match.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ThreatOverrideAction",
          "description": "Threat action override. For some threat types, only a subset of actions applies."
        },
        "threatId": {
          "type": "string",
          "description": "Vendor-specific ID of a threat to override."
        }
      },
      "type": "object",
      "required": [
        "action",
        "threatId"
      ]
    },
    "google-native:networksecurity/v1beta1:ThreatOverrideAction": {
      "description": "Required. Threat action override. For some threat types, only a subset of actions applies.",
      "type": "string",
      "enum": [
        {
          "name": "ThreatActionUnspecified",
          "description": "Threat action not specified.",
          "value": "THREAT_ACTION_UNSPECIFIED"
        },
        {
          "name": "DefaultAction",
          "description": "The default action (as specified by the vendor) is taken.",
          "value": "DEFAULT_ACTION"
        },
        {
          "name": "Allow",
          "description": "The packet matching this rule will be allowed to transmit.",
          "value": "ALLOW"
        },
        {
          "name": "Alert",
          "description": "The packet matching this rule will be allowed to transmit, but a threat_log entry will be sent to the consumer project.",
          "value": "ALERT"
        },
        {
          "name": "Deny",
          "description": "The packet matching this rule will be dropped, and a threat_log entry will be sent to the consumer project.",
          "value": "DENY"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:ThreatOverrideResponse": {
      "description": "Defines what action to take for a specific threat_id match.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Threat action override. For some threat types, only a subset of actions applies."
        },
        "threatId": {
          "type": "string",
          "description": "Vendor-specific ID of a threat to override."
        },
        "type": {
          "type": "string",
          "description": "Type of the threat (read only)."
        }
      },
      "type": "object",
      "required": [
        "action",
        "threatId",
        "type"
      ]
    },
    "google-native:networksecurity/v1beta1:ThreatPreventionProfile": {
      "description": "ThreatPreventionProfile defines an action for specific threat signatures or severity levels.",
      "properties": {
        "severityOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:SeverityOverride"
          },
          "description": "Optional. Configuration for overriding threats actions by severity match."
        },
        "threatOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ThreatOverride"
          },
          "description": "Optional. Configuration for overriding threats actions by threat_id match. If a threat is matched both by configuration provided in severity_overrides and threat_overrides, the threat_overrides action is applied."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:ThreatPreventionProfileResponse": {
      "description": "ThreatPreventionProfile defines an action for specific threat signatures or severity levels.",
      "properties": {
        "severityOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:SeverityOverrideResponse"
          },
          "description": "Optional. Configuration for overriding threats actions by severity match."
        },
        "threatOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ThreatOverrideResponse"
          },
          "description": "Optional. Configuration for overriding threats actions by threat_id match. If a threat is matched both by configuration provided in severity_overrides and threat_overrides, the threat_overrides action is applied."
        }
      },
      "type": "object",
      "required": [
        "severityOverrides",
        "threatOverrides"
      ]
    },
    "google-native:networksecurity/v1beta1:TlsInspectionPolicyMinTlsVersion": {
      "description": "Optional. Minimum TLS version that the firewall should use when negotiating connections with both clients and servers. If this is not set, then the default value is to allow the broadest set of clients and servers (TLS 1.0 or higher). Setting this to more restrictive values may improve security, but may also prevent the firewall from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field.",
      "type": "string",
      "enum": [
        {
          "name": "TlsVersionUnspecified",
          "description": "Indicates no TLS version was specified.",
          "value": "TLS_VERSION_UNSPECIFIED"
        },
        {
          "name": "Tls10",
          "description": "TLS 1.0",
          "value": "TLS_1_0"
        },
        {
          "name": "Tls11",
          "description": "TLS 1.1",
          "value": "TLS_1_1"
        },
        {
          "name": "Tls12",
          "description": "TLS 1.2",
          "value": "TLS_1_2"
        },
        {
          "name": "Tls13",
          "description": "TLS 1.3",
          "value": "TLS_1_3"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:TlsInspectionPolicyTlsFeatureProfile": {
      "description": "Optional. The selected Profile. If this is not set, then the default value is to allow the broadest set of clients and servers (\"PROFILE_COMPATIBLE\"). Setting this to more restrictive values may improve security, but may also prevent the TLS inspection proxy from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field.",
      "type": "string",
      "enum": [
        {
          "name": "ProfileUnspecified",
          "description": "Indicates no profile was specified.",
          "value": "PROFILE_UNSPECIFIED"
        },
        {
          "name": "ProfileCompatible",
          "description": "Compatible profile. Allows the broadest set of clients, even those which support only out-of-date SSL features to negotiate with the TLS inspection proxy.",
          "value": "PROFILE_COMPATIBLE"
        },
        {
          "name": "ProfileModern",
          "description": "Modern profile. Supports a wide set of SSL features, allowing modern clients to negotiate SSL with the TLS inspection proxy.",
          "value": "PROFILE_MODERN"
        },
        {
          "name": "ProfileRestricted",
          "description": "Restricted profile. Supports a reduced set of SSL features, intended to meet stricter compliance requirements.",
          "value": "PROFILE_RESTRICTED"
        },
        {
          "name": "ProfileCustom",
          "description": "Custom profile. Allow only the set of allowed SSL features specified in the custom_features field of SslPolicy.",
          "value": "PROFILE_CUSTOM"
        }
      ]
    },
    "google-native:networksecurity/v1beta1:ValidationCA": {
      "description": "Specification of ValidationCA. Defines the mechanism to obtain the Certificate Authority certificate to validate the peer certificate.",
      "properties": {
        "certificateProviderInstance": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:CertificateProviderInstance",
          "description": "The certificate provider instance specification that will be passed to the data plane, which will be used to load necessary credential information."
        },
        "grpcEndpoint": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1GrpcEndpoint",
          "description": "gRPC specific configuration to access the gRPC server to obtain the CA certificate."
        }
      },
      "type": "object"
    },
    "google-native:networksecurity/v1beta1:ValidationCAResponse": {
      "description": "Specification of ValidationCA. Defines the mechanism to obtain the Certificate Authority certificate to validate the peer certificate.",
      "properties": {
        "certificateProviderInstance": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:CertificateProviderInstanceResponse",
          "description": "The certificate provider instance specification that will be passed to the data plane, which will be used to load necessary credential information."
        },
        "grpcEndpoint": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1GrpcEndpointResponse",
          "description": "gRPC specific configuration to access the gRPC server to obtain the CA certificate."
        }
      },
      "type": "object",
      "required": [
        "certificateProviderInstance",
        "grpcEndpoint"
      ]
    },
    "google-native:networkservices/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:networkservices/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:networkservices%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:networkservices/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:networkservices/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkservices%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkservices%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:networkservices/v1:EndpointMatcher": {
      "description": "A definition of a matcher that selects endpoints to which the policies should be applied.",
      "properties": {
        "metadataLabelMatcher": {
          "$ref": "#/types/google-native:networkservices%2Fv1:EndpointMatcherMetadataLabelMatcher",
          "description": "The matcher is based on node metadata presented by xDS clients."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:EndpointMatcherMetadataLabelMatcher": {
      "description": "The matcher that is based on node metadata presented by xDS clients.",
      "properties": {
        "metadataLabelMatchCriteria": {
          "$ref": "#/types/google-native:networkservices%2Fv1:EndpointMatcherMetadataLabelMatcherMetadataLabelMatchCriteria",
          "description": "Specifies how matching should be done. Supported values are: MATCH_ANY: At least one of the Labels specified in the matcher should match the metadata presented by xDS client. MATCH_ALL: The metadata presented by the xDS client should contain all of the labels specified here. The selection is determined based on the best match. For example, suppose there are three EndpointPolicy resources P1, P2 and P3 and if P1 has a the matcher as MATCH_ANY , P2 has MATCH_ALL , and P3 has MATCH_ALL . If a client with label connects, the config from P1 will be selected. If a client with label connects, the config from P2 will be selected. If a client with label connects, the config from P3 will be selected. If there is more than one best match, (for example, if a config P4 with selector exists and if a client with label connects), an error will be thrown."
        },
        "metadataLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:EndpointMatcherMetadataLabelMatcherMetadataLabels"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list can have at most 64 entries. The list can be empty if the match criteria is MATCH_ANY, to specify a wildcard match (i.e this matches any client)."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:EndpointMatcherMetadataLabelMatcherMetadataLabelMatchCriteria": {
      "description": "Specifies how matching should be done. Supported values are: MATCH_ANY: At least one of the Labels specified in the matcher should match the metadata presented by xDS client. MATCH_ALL: The metadata presented by the xDS client should contain all of the labels specified here. The selection is determined based on the best match. For example, suppose there are three EndpointPolicy resources P1, P2 and P3 and if P1 has a the matcher as MATCH_ANY , P2 has MATCH_ALL , and P3 has MATCH_ALL . If a client with label connects, the config from P1 will be selected. If a client with label connects, the config from P2 will be selected. If a client with label connects, the config from P3 will be selected. If there is more than one best match, (for example, if a config P4 with selector exists and if a client with label connects), an error will be thrown.",
      "type": "string",
      "enum": [
        {
          "name": "MetadataLabelMatchCriteriaUnspecified",
          "description": "Default value. Should not be used.",
          "value": "METADATA_LABEL_MATCH_CRITERIA_UNSPECIFIED"
        },
        {
          "name": "MatchAny",
          "description": "At least one of the Labels specified in the matcher should match the metadata presented by xDS client.",
          "value": "MATCH_ANY"
        },
        {
          "name": "MatchAll",
          "description": "The metadata presented by the xDS client should contain all of the labels specified here.",
          "value": "MATCH_ALL"
        }
      ]
    },
    "google-native:networkservices/v1:EndpointMatcherMetadataLabelMatcherMetadataLabels": {
      "description": "Defines a name-pair value for a single label.",
      "properties": {
        "labelName": {
          "type": "string",
          "description": "Label name presented as key in xDS Node Metadata."
        },
        "labelValue": {
          "type": "string",
          "description": "Label value presented as value corresponding to the above key, in xDS Node Metadata."
        }
      },
      "type": "object",
      "required": [
        "labelName",
        "labelValue"
      ]
    },
    "google-native:networkservices/v1:EndpointMatcherMetadataLabelMatcherMetadataLabelsResponse": {
      "description": "Defines a name-pair value for a single label.",
      "properties": {
        "labelName": {
          "type": "string",
          "description": "Label name presented as key in xDS Node Metadata."
        },
        "labelValue": {
          "type": "string",
          "description": "Label value presented as value corresponding to the above key, in xDS Node Metadata."
        }
      },
      "type": "object",
      "required": [
        "labelName",
        "labelValue"
      ]
    },
    "google-native:networkservices/v1:EndpointMatcherMetadataLabelMatcherResponse": {
      "description": "The matcher that is based on node metadata presented by xDS clients.",
      "properties": {
        "metadataLabelMatchCriteria": {
          "type": "string",
          "description": "Specifies how matching should be done. Supported values are: MATCH_ANY: At least one of the Labels specified in the matcher should match the metadata presented by xDS client. MATCH_ALL: The metadata presented by the xDS client should contain all of the labels specified here. The selection is determined based on the best match. For example, suppose there are three EndpointPolicy resources P1, P2 and P3 and if P1 has a the matcher as MATCH_ANY , P2 has MATCH_ALL , and P3 has MATCH_ALL . If a client with label connects, the config from P1 will be selected. If a client with label connects, the config from P2 will be selected. If a client with label connects, the config from P3 will be selected. If there is more than one best match, (for example, if a config P4 with selector exists and if a client with label connects), an error will be thrown."
        },
        "metadataLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:EndpointMatcherMetadataLabelMatcherMetadataLabelsResponse"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list can have at most 64 entries. The list can be empty if the match criteria is MATCH_ANY, to specify a wildcard match (i.e this matches any client)."
        }
      },
      "type": "object",
      "required": [
        "metadataLabelMatchCriteria",
        "metadataLabels"
      ]
    },
    "google-native:networkservices/v1:EndpointMatcherResponse": {
      "description": "A definition of a matcher that selects endpoints to which the policies should be applied.",
      "properties": {
        "metadataLabelMatcher": {
          "$ref": "#/types/google-native:networkservices%2Fv1:EndpointMatcherMetadataLabelMatcherResponse",
          "description": "The matcher is based on node metadata presented by xDS clients."
        }
      },
      "type": "object",
      "required": [
        "metadataLabelMatcher"
      ]
    },
    "google-native:networkservices/v1:EndpointPolicyType": {
      "description": "Required. The type of endpoint policy. This is primarily used to validate the configuration.",
      "type": "string",
      "enum": [
        {
          "name": "EndpointPolicyTypeUnspecified",
          "description": "Default value. Must not be used.",
          "value": "ENDPOINT_POLICY_TYPE_UNSPECIFIED"
        },
        {
          "name": "SidecarProxy",
          "description": "Represents a proxy deployed as a sidecar.",
          "value": "SIDECAR_PROXY"
        },
        {
          "name": "GrpcServer",
          "description": "Represents a proxyless gRPC backend.",
          "value": "GRPC_SERVER"
        }
      ]
    },
    "google-native:networkservices/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:networkservices/v1:GatewayType": {
      "description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type of the customer managed gateway is unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "OpenMesh",
          "description": "The type of the customer managed gateway is TrafficDirector Open Mesh.",
          "value": "OPEN_MESH"
        },
        {
          "name": "SecureWebGateway",
          "description": "The type of the customer managed gateway is SecureWebGateway (SWG).",
          "value": "SECURE_WEB_GATEWAY"
        }
      ]
    },
    "google-native:networkservices/v1:GrpcRouteDestination": {
      "description": "The destination to which traffic will be routed.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a destination service to which to route traffic. Must refer to either a BackendService or ServiceDirectoryService."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteDestinationResponse": {
      "description": "The destination to which traffic will be routed.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a destination service to which to route traffic. Must refer to either a BackendService or ServiceDirectoryService."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName",
        "weight"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteFaultInjectionPolicy": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteFaultInjectionPolicyAbort",
          "description": "The specification for aborting to client requests."
        },
        "delay": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteFaultInjectionPolicyDelay",
          "description": "The specification for injecting delay to client requests."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:GrpcRouteFaultInjectionPolicyAbort": {
      "description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic which will be aborted. The value must be between [0, 100]"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:GrpcRouteFaultInjectionPolicyAbortResponse": {
      "description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic which will be aborted. The value must be between [0, 100]"
        }
      },
      "type": "object",
      "required": [
        "httpStatus",
        "percentage"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteFaultInjectionPolicyDelay": {
      "description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
      "properties": {
        "fixedDelay": {
          "type": "string",
          "description": "Specify a fixed delay before forwarding the request."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:GrpcRouteFaultInjectionPolicyDelayResponse": {
      "description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
      "properties": {
        "fixedDelay": {
          "type": "string",
          "description": "Specify a fixed delay before forwarding the request."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]"
        }
      },
      "type": "object",
      "required": [
        "fixedDelay",
        "percentage"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteFaultInjectionPolicyResponse": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteFaultInjectionPolicyAbortResponse",
          "description": "The specification for aborting to client requests."
        },
        "delay": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteFaultInjectionPolicyDelayResponse",
          "description": "The specification for injecting delay to client requests."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "delay"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteHeaderMatch": {
      "description": "A match against a collection of headers.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of the header."
        },
        "type": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteHeaderMatchType",
          "description": "Optional. Specifies how to match against the value of the header. If not specified, a default value of EXACT is used."
        },
        "value": {
          "type": "string",
          "description": "The value of the header."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteHeaderMatchResponse": {
      "description": "A match against a collection of headers.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of the header."
        },
        "type": {
          "type": "string",
          "description": "Optional. Specifies how to match against the value of the header. If not specified, a default value of EXACT is used."
        },
        "value": {
          "type": "string",
          "description": "The value of the header."
        }
      },
      "type": "object",
      "required": [
        "key",
        "type",
        "value"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteHeaderMatchType": {
      "description": "Optional. Specifies how to match against the value of the header. If not specified, a default value of EXACT is used.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Exact",
          "description": "Will only match the exact value provided.",
          "value": "EXACT"
        },
        {
          "name": "RegularExpression",
          "description": "Will match paths conforming to the prefix specified by value. RE2 syntax is supported.",
          "value": "REGULAR_EXPRESSION"
        }
      ]
    },
    "google-native:networkservices/v1:GrpcRouteMethodMatch": {
      "description": "Specifies a match against a method.",
      "properties": {
        "caseSensitive": {
          "type": "boolean",
          "description": "Optional. Specifies that matches are case sensitive. The default value is true. case_sensitive must not be used with a type of REGULAR_EXPRESSION."
        },
        "grpcMethod": {
          "type": "string",
          "description": "Name of the method to match against. If unspecified, will match all methods."
        },
        "grpcService": {
          "type": "string",
          "description": "Name of the service to match against. If unspecified, will match all services."
        },
        "type": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteMethodMatchType",
          "description": "Optional. Specifies how to match against the name. If not specified, a default value of \"EXACT\" is used."
        }
      },
      "type": "object",
      "required": [
        "grpcMethod",
        "grpcService"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteMethodMatchResponse": {
      "description": "Specifies a match against a method.",
      "properties": {
        "caseSensitive": {
          "type": "boolean",
          "description": "Optional. Specifies that matches are case sensitive. The default value is true. case_sensitive must not be used with a type of REGULAR_EXPRESSION."
        },
        "grpcMethod": {
          "type": "string",
          "description": "Name of the method to match against. If unspecified, will match all methods."
        },
        "grpcService": {
          "type": "string",
          "description": "Name of the service to match against. If unspecified, will match all services."
        },
        "type": {
          "type": "string",
          "description": "Optional. Specifies how to match against the name. If not specified, a default value of \"EXACT\" is used."
        }
      },
      "type": "object",
      "required": [
        "caseSensitive",
        "grpcMethod",
        "grpcService",
        "type"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteMethodMatchType": {
      "description": "Optional. Specifies how to match against the name. If not specified, a default value of \"EXACT\" is used.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Exact",
          "description": "Will only match the exact name provided.",
          "value": "EXACT"
        },
        {
          "name": "RegularExpression",
          "description": "Will interpret grpc_method and grpc_service as regexes. RE2 syntax is supported.",
          "value": "REGULAR_EXPRESSION"
        }
      ]
    },
    "google-native:networkservices/v1:GrpcRouteRetryPolicy": {
      "description": "The specifications for retries.",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "- connect-failure: Router will retry on failures connecting to Backend Services, for example due to connection timeouts. - refused-stream: Router will retry if the backend service resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry. - cancelled: Router will retry if the gRPC status code in the response header is set to cancelled - deadline-exceeded: Router will retry if the gRPC status code in the response header is set to deadline-exceeded - resource-exhausted: Router will retry if the gRPC status code in the response header is set to resource-exhausted - unavailable: Router will retry if the gRPC status code in the response header is set to unavailable"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:GrpcRouteRetryPolicyResponse": {
      "description": "The specifications for retries.",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "- connect-failure: Router will retry on failures connecting to Backend Services, for example due to connection timeouts. - refused-stream: Router will retry if the backend service resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry. - cancelled: Router will retry if the gRPC status code in the response header is set to cancelled - deadline-exceeded: Router will retry if the gRPC status code in the response header is set to deadline-exceeded - resource-exhausted: Router will retry if the gRPC status code in the response header is set to resource-exhausted - unavailable: Router will retry if the gRPC status code in the response header is set to unavailable"
        }
      },
      "type": "object",
      "required": [
        "numRetries",
        "retryConditions"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteRouteAction": {
      "description": "Specifies how to route matched traffic.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteDestination"
          },
          "description": "Optional. The destination services to which traffic should be forwarded. If multiple destinations are specified, traffic will be split between Backend Service(s) according to the weight field of these destinations."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteFaultInjectionPolicy",
          "description": "Optional. The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRetryPolicy",
          "description": "Optional. Specifies the retry policy associated with this route."
        },
        "statefulSessionAffinity": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteStatefulSessionAffinityPolicy",
          "description": "Optional. Specifies cookie-based stateful session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Optional. Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:GrpcRouteRouteActionResponse": {
      "description": "Specifies how to route matched traffic.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteDestinationResponse"
          },
          "description": "Optional. The destination services to which traffic should be forwarded. If multiple destinations are specified, traffic will be split between Backend Service(s) according to the weight field of these destinations."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteFaultInjectionPolicyResponse",
          "description": "Optional. The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRetryPolicyResponse",
          "description": "Optional. Specifies the retry policy associated with this route."
        },
        "statefulSessionAffinity": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteStatefulSessionAffinityPolicyResponse",
          "description": "Optional. Specifies cookie-based stateful session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Optional. Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries."
        }
      },
      "type": "object",
      "required": [
        "destinations",
        "faultInjectionPolicy",
        "retryPolicy",
        "statefulSessionAffinity",
        "timeout"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteRouteMatch": {
      "description": "Criteria for matching traffic. A RouteMatch will be considered to match when all supplied fields match.",
      "properties": {
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteHeaderMatch"
          },
          "description": "Optional. Specifies a collection of headers to match."
        },
        "method": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteMethodMatch",
          "description": "Optional. A gRPC method to match against. If this field is empty or omitted, will match all methods."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:GrpcRouteRouteMatchResponse": {
      "description": "Criteria for matching traffic. A RouteMatch will be considered to match when all supplied fields match.",
      "properties": {
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteHeaderMatchResponse"
          },
          "description": "Optional. Specifies a collection of headers to match."
        },
        "method": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteMethodMatchResponse",
          "description": "Optional. A gRPC method to match against. If this field is empty or omitted, will match all methods."
        }
      },
      "type": "object",
      "required": [
        "headers",
        "method"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteRouteRule": {
      "description": "Describes how to route traffic.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRouteAction",
          "description": "A detailed rule defining how to route traffic. This field is required."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRouteMatch"
          },
          "description": "Optional. Matches define conditions used for matching the rule against incoming gRPC requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic."
        }
      },
      "type": "object",
      "required": [
        "action"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteRouteRuleResponse": {
      "description": "Describes how to route traffic.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRouteActionResponse",
          "description": "A detailed rule defining how to route traffic. This field is required."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRouteMatchResponse"
          },
          "description": "Optional. Matches define conditions used for matching the rule against incoming gRPC requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteStatefulSessionAffinityPolicy": {
      "description": "The specification for cookie-based stateful session affinity where the date plane supplies a “session cookie” with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
      "properties": {
        "cookieTtl": {
          "type": "string",
          "description": "The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive."
        }
      },
      "type": "object",
      "required": [
        "cookieTtl"
      ]
    },
    "google-native:networkservices/v1:GrpcRouteStatefulSessionAffinityPolicyResponse": {
      "description": "The specification for cookie-based stateful session affinity where the date plane supplies a “session cookie” with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
      "properties": {
        "cookieTtl": {
          "type": "string",
          "description": "The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive."
        }
      },
      "type": "object",
      "required": [
        "cookieTtl"
      ]
    },
    "google-native:networkservices/v1:HttpRouteCorsPolicy": {
      "description": "The Specification for allowing client side cross-origin requests.",
      "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 translates to the Access-Control-Allow-Credentials header. Default value is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that will be allowed to do CORS requests. An origin is allowed if it matches either an item in allow_origins or an item in allow_origin_regexes."
        },
        "disabled": {
          "type": "boolean",
          "description": "If true, the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "string",
          "description": "Specifies how long result of a preflight request can be cached in seconds. This translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteCorsPolicyResponse": {
      "description": "The Specification for allowing client side cross-origin requests.",
      "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 translates to the Access-Control-Allow-Credentials header. Default value is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that will be allowed to do CORS requests. An origin is allowed if it matches either an item in allow_origins or an item in allow_origin_regexes."
        },
        "disabled": {
          "type": "boolean",
          "description": "If true, the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "string",
          "description": "Specifies how long result of a preflight request can be cached in seconds. This translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object",
      "required": [
        "allowCredentials",
        "allowHeaders",
        "allowMethods",
        "allowOriginRegexes",
        "allowOrigins",
        "disabled",
        "exposeHeaders",
        "maxAge"
      ]
    },
    "google-native:networkservices/v1:HttpRouteDestination": {
      "description": "Specifications of a destination to which the request should be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteDestinationResponse": {
      "description": "Specifications of a destination to which the request should be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName",
        "weight"
      ]
    },
    "google-native:networkservices/v1:HttpRouteFaultInjectionPolicy": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced by client proxy on a percentage of requests before sending those requests to the destination service. Similarly requests can be aborted by client proxy for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteFaultInjectionPolicyAbort",
          "description": "The specification for aborting to client requests."
        },
        "delay": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteFaultInjectionPolicyDelay",
          "description": "The specification for injecting delay to client requests."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteFaultInjectionPolicyAbort": {
      "description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic which will be aborted. The value must be between [0, 100]"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteFaultInjectionPolicyAbortResponse": {
      "description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic which will be aborted. The value must be between [0, 100]"
        }
      },
      "type": "object",
      "required": [
        "httpStatus",
        "percentage"
      ]
    },
    "google-native:networkservices/v1:HttpRouteFaultInjectionPolicyDelay": {
      "description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
      "properties": {
        "fixedDelay": {
          "type": "string",
          "description": "Specify a fixed delay before forwarding the request."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteFaultInjectionPolicyDelayResponse": {
      "description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
      "properties": {
        "fixedDelay": {
          "type": "string",
          "description": "Specify a fixed delay before forwarding the request."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]"
        }
      },
      "type": "object",
      "required": [
        "fixedDelay",
        "percentage"
      ]
    },
    "google-native:networkservices/v1:HttpRouteFaultInjectionPolicyResponse": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced by client proxy on a percentage of requests before sending those requests to the destination service. Similarly requests can be aborted by client proxy for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteFaultInjectionPolicyAbortResponse",
          "description": "The specification for aborting to client requests."
        },
        "delay": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteFaultInjectionPolicyDelayResponse",
          "description": "The specification for injecting delay to client requests."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "delay"
      ]
    },
    "google-native:networkservices/v1:HttpRouteHeaderMatch": {
      "description": "Specifies how to select a route rule based on HTTP request headers.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value of the header should match exactly the content of exact_match."
        },
        "header": {
          "type": "string",
          "description": "The name of the HTTP header to match against."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If specified, the match result will be inverted before checking. Default value is set to false."
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefix_match."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with header_name must exist. The match takes place whether or not the header has a value."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteHeaderMatchIntegerRange",
          "description": "If specified, the rule will match if the request header value is within the range."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regex_match. For regular expression grammar, please see: https://github.com/google/re2/wiki/Syntax"
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffix_match."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteHeaderMatchIntegerRange": {
      "description": "Represents an integer value range.",
      "properties": {
        "end": {
          "type": "integer",
          "description": "End of the range (exclusive)"
        },
        "start": {
          "type": "integer",
          "description": "Start of the range (inclusive)"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteHeaderMatchIntegerRangeResponse": {
      "description": "Represents an integer value range.",
      "properties": {
        "end": {
          "type": "integer",
          "description": "End of the range (exclusive)"
        },
        "start": {
          "type": "integer",
          "description": "Start of the range (inclusive)"
        }
      },
      "type": "object",
      "required": [
        "end",
        "start"
      ]
    },
    "google-native:networkservices/v1:HttpRouteHeaderMatchResponse": {
      "description": "Specifies how to select a route rule based on HTTP request headers.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value of the header should match exactly the content of exact_match."
        },
        "header": {
          "type": "string",
          "description": "The name of the HTTP header to match against."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If specified, the match result will be inverted before checking. Default value is set to false."
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefix_match."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with header_name must exist. The match takes place whether or not the header has a value."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteHeaderMatchIntegerRangeResponse",
          "description": "If specified, the rule will match if the request header value is within the range."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regex_match. For regular expression grammar, please see: https://github.com/google/re2/wiki/Syntax"
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffix_match."
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "header",
        "invertMatch",
        "prefixMatch",
        "presentMatch",
        "rangeMatch",
        "regexMatch",
        "suffixMatch"
      ]
    },
    "google-native:networkservices/v1:HttpRouteHeaderModifier": {
      "description": "The specification for modifying HTTP header in HTTP request and HTTP response.",
      "properties": {
        "add": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Add the headers with given map where key is the name of the header, value is the value of the header."
        },
        "remove": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remove headers (matching by header names) specified in the list."
        },
        "set": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Completely overwrite/replace the headers with given map where key is the name of the header, value is the value of the header."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteHeaderModifierResponse": {
      "description": "The specification for modifying HTTP header in HTTP request and HTTP response.",
      "properties": {
        "add": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Add the headers with given map where key is the name of the header, value is the value of the header."
        },
        "remove": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remove headers (matching by header names) specified in the list."
        },
        "set": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Completely overwrite/replace the headers with given map where key is the name of the header, value is the value of the header."
        }
      },
      "type": "object",
      "required": [
        "add",
        "remove",
        "set"
      ]
    },
    "google-native:networkservices/v1:HttpRouteQueryParameterMatch": {
      "description": "Specifications to match a query parameter in the request.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value of the query parameter must exactly match the contents of exact_match. Only one of exact_match, regex_match, or present_match must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the QueryParameterMatcher matches if request contains query parameter, irrespective of whether the parameter has a value or not. Only one of exact_match, regex_match, or present_match must be set."
        },
        "queryParameter": {
          "type": "string",
          "description": "The name of the query parameter to match."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the query parameter must match the regular expression specified by regex_match. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of exact_match, regex_match, or present_match must be set."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteQueryParameterMatchResponse": {
      "description": "Specifications to match a query parameter in the request.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value of the query parameter must exactly match the contents of exact_match. Only one of exact_match, regex_match, or present_match must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the QueryParameterMatcher matches if request contains query parameter, irrespective of whether the parameter has a value or not. Only one of exact_match, regex_match, or present_match must be set."
        },
        "queryParameter": {
          "type": "string",
          "description": "The name of the query parameter to match."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the query parameter must match the regular expression specified by regex_match. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of exact_match, regex_match, or present_match must be set."
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "presentMatch",
        "queryParameter",
        "regexMatch"
      ]
    },
    "google-native:networkservices/v1:HttpRouteRedirect": {
      "description": "The specification for redirecting traffic.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that will be used in the redirect response instead of the one that was supplied in the request."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to https. If set to false, the URL scheme of the redirected request will remain the same as that of the request. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that will be used in the redirect response instead of the one that was supplied in the request. path_redirect can not be supplied together with prefix_redirect. Supply one alone or neither. If neither is supplied, the path of the original request will be used for the redirect."
        },
        "portRedirect": {
          "type": "integer",
          "description": "The port that will be used in the redirected request instead of the one that was supplied in the request."
        },
        "prefixRewrite": {
          "type": "string",
          "description": "Indicates that during redirection, the matched prefix (or path) should be swapped with this value. This option allows URLs be dynamically created based on the request."
        },
        "responseCode": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRedirectResponseCode",
          "description": "The HTTP Status code to use for the redirect."
        },
        "stripQuery": {
          "type": "boolean",
          "description": "if set to true, any accompanying query portion of the original URL is removed prior to redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteRedirectResponse": {
      "description": "The specification for redirecting traffic.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that will be used in the redirect response instead of the one that was supplied in the request."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to https. If set to false, the URL scheme of the redirected request will remain the same as that of the request. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that will be used in the redirect response instead of the one that was supplied in the request. path_redirect can not be supplied together with prefix_redirect. Supply one alone or neither. If neither is supplied, the path of the original request will be used for the redirect."
        },
        "portRedirect": {
          "type": "integer",
          "description": "The port that will be used in the redirected request instead of the one that was supplied in the request."
        },
        "prefixRewrite": {
          "type": "string",
          "description": "Indicates that during redirection, the matched prefix (or path) should be swapped with this value. This option allows URLs be dynamically created based on the request."
        },
        "responseCode": {
          "type": "string",
          "description": "The HTTP Status code to use for the redirect."
        },
        "stripQuery": {
          "type": "boolean",
          "description": "if set to true, any accompanying query portion of the original URL is removed prior to redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false."
        }
      },
      "type": "object",
      "required": [
        "hostRedirect",
        "httpsRedirect",
        "pathRedirect",
        "portRedirect",
        "prefixRewrite",
        "responseCode",
        "stripQuery"
      ]
    },
    "google-native:networkservices/v1:HttpRouteRedirectResponseCode": {
      "description": "The HTTP Status code to use for the redirect.",
      "type": "string",
      "enum": [
        {
          "name": "ResponseCodeUnspecified",
          "description": "Default value",
          "value": "RESPONSE_CODE_UNSPECIFIED"
        },
        {
          "name": "MovedPermanentlyDefault",
          "description": "Corresponds to 301.",
          "value": "MOVED_PERMANENTLY_DEFAULT"
        },
        {
          "name": "Found",
          "description": "Corresponds to 302.",
          "value": "FOUND"
        },
        {
          "name": "SeeOther",
          "description": "Corresponds to 303.",
          "value": "SEE_OTHER"
        },
        {
          "name": "TemporaryRedirect",
          "description": "Corresponds to 307. In this case, the request method will be retained.",
          "value": "TEMPORARY_REDIRECT"
        },
        {
          "name": "PermanentRedirect",
          "description": "Corresponds to 308. In this case, the request method will be retained.",
          "value": "PERMANENT_REDIRECT"
        }
      ]
    },
    "google-native:networkservices/v1:HttpRouteRequestMirrorPolicy": {
      "description": "Specifies the policy on how requests are shadowed to a separate mirrored destination service. The proxy does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow.",
      "properties": {
        "destination": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteDestination",
          "description": "The destination the requests will be mirrored to. The weight of the destination will be ignored."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteRequestMirrorPolicyResponse": {
      "description": "Specifies the policy on how requests are shadowed to a separate mirrored destination service. The proxy does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow.",
      "properties": {
        "destination": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteDestinationResponse",
          "description": "The destination the requests will be mirrored to. The weight of the destination will be ignored."
        }
      },
      "type": "object",
      "required": [
        "destination"
      ]
    },
    "google-native:networkservices/v1:HttpRouteRetryPolicy": {
      "description": "The specifications for retries.",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1."
        },
        "perTryTimeout": {
          "type": "string",
          "description": "Specifies a non-zero timeout per retry attempt."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: 5xx: Proxy will attempt a retry if the destination service responds with any 5xx response code, of if the destination service does not respond at all, example: disconnect, reset, read timeout, connection failure and refused streams. gateway-error: Similar to 5xx, but only applies to response codes 502, 503, 504. reset: Proxy will attempt a retry if the destination service does not respond at all (disconnect/reset/read timeout) connect-failure: Proxy will retry on failures connecting to destination for example due to connection timeouts. retriable-4xx: Proxy will retry fro retriable 4xx response codes. Currently the only retriable error supported is 409. refused-stream: Proxy will retry if the destination resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteRetryPolicyResponse": {
      "description": "The specifications for retries.",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1."
        },
        "perTryTimeout": {
          "type": "string",
          "description": "Specifies a non-zero timeout per retry attempt."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: 5xx: Proxy will attempt a retry if the destination service responds with any 5xx response code, of if the destination service does not respond at all, example: disconnect, reset, read timeout, connection failure and refused streams. gateway-error: Similar to 5xx, but only applies to response codes 502, 503, 504. reset: Proxy will attempt a retry if the destination service does not respond at all (disconnect/reset/read timeout) connect-failure: Proxy will retry on failures connecting to destination for example due to connection timeouts. retriable-4xx: Proxy will retry fro retriable 4xx response codes. Currently the only retriable error supported is 409. refused-stream: Proxy will retry if the destination resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry."
        }
      },
      "type": "object",
      "required": [
        "numRetries",
        "perTryTimeout",
        "retryConditions"
      ]
    },
    "google-native:networkservices/v1:HttpRouteRouteAction": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteCorsPolicy",
          "description": "The specification for allowing client side cross-origin requests."
        },
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteDestination"
          },
          "description": "The destination to which traffic should be forwarded."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteFaultInjectionPolicy",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced on a percentage of requests before sending those requests to the backend service. Similarly requests from clients can be aborted for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
        },
        "redirect": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRedirect",
          "description": "If set, the request is directed as configured by this field."
        },
        "requestHeaderModifier": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteHeaderModifier",
          "description": "The specification for modifying the headers of a matching request prior to delivery of the request to the destination. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRequestMirrorPolicy",
          "description": "Specifies the policy on how requests intended for the routes destination are shadowed to a separate mirrored destination. Proxy will not wait for the shadow destination to respond before returning the response. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow."
        },
        "responseHeaderModifier": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteHeaderModifier",
          "description": "The specification for modifying the headers of a response prior to sending the response back to the client. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRetryPolicy",
          "description": "Specifies the retry policy associated with this route."
        },
        "statefulSessionAffinity": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteStatefulSessionAffinityPolicy",
          "description": "Optional. Specifies cookie-based stateful session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteURLRewrite",
          "description": "The specification for rewrite URL before forwarding requests to the destination."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteRouteActionResponse": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteCorsPolicyResponse",
          "description": "The specification for allowing client side cross-origin requests."
        },
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteDestinationResponse"
          },
          "description": "The destination to which traffic should be forwarded."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteFaultInjectionPolicyResponse",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced on a percentage of requests before sending those requests to the backend service. Similarly requests from clients can be aborted for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
        },
        "redirect": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRedirectResponse",
          "description": "If set, the request is directed as configured by this field."
        },
        "requestHeaderModifier": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteHeaderModifierResponse",
          "description": "The specification for modifying the headers of a matching request prior to delivery of the request to the destination. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRequestMirrorPolicyResponse",
          "description": "Specifies the policy on how requests intended for the routes destination are shadowed to a separate mirrored destination. Proxy will not wait for the shadow destination to respond before returning the response. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow."
        },
        "responseHeaderModifier": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteHeaderModifierResponse",
          "description": "The specification for modifying the headers of a response prior to sending the response back to the client. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRetryPolicyResponse",
          "description": "Specifies the retry policy associated with this route."
        },
        "statefulSessionAffinity": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteStatefulSessionAffinityPolicyResponse",
          "description": "Optional. Specifies cookie-based stateful session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteURLRewriteResponse",
          "description": "The specification for rewrite URL before forwarding requests to the destination."
        }
      },
      "type": "object",
      "required": [
        "corsPolicy",
        "destinations",
        "faultInjectionPolicy",
        "redirect",
        "requestHeaderModifier",
        "requestMirrorPolicy",
        "responseHeaderModifier",
        "retryPolicy",
        "statefulSessionAffinity",
        "timeout",
        "urlRewrite"
      ]
    },
    "google-native:networkservices/v1:HttpRouteRouteMatch": {
      "description": "RouteMatch defines specifications used to match requests. If multiple match types are set, this RouteMatch will match if ALL type of matches are matched.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "The HTTP request path value should exactly match this value. Only one of full_path_match, prefix_match, or regex_match should be used."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteHeaderMatch"
          },
          "description": "Specifies a list of HTTP request headers to match against. ALL of the supplied headers must be matched."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies if prefix_match and full_path_match matches are case sensitive. The default value is false."
        },
        "prefixMatch": {
          "type": "string",
          "description": "The HTTP request path value must begin with specified prefix_match. prefix_match must begin with a /. Only one of full_path_match, prefix_match, or regex_match should be used."
        },
        "queryParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteQueryParameterMatch"
          },
          "description": "Specifies a list of query parameters to match against. ALL of the query parameters must be matched."
        },
        "regexMatch": {
          "type": "string",
          "description": "The HTTP request path value must satisfy the regular expression specified by regex_match after removing any query parameters and anchor supplied with the original URL. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of full_path_match, prefix_match, or regex_match should be used."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteRouteMatchResponse": {
      "description": "RouteMatch defines specifications used to match requests. If multiple match types are set, this RouteMatch will match if ALL type of matches are matched.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "The HTTP request path value should exactly match this value. Only one of full_path_match, prefix_match, or regex_match should be used."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteHeaderMatchResponse"
          },
          "description": "Specifies a list of HTTP request headers to match against. ALL of the supplied headers must be matched."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies if prefix_match and full_path_match matches are case sensitive. The default value is false."
        },
        "prefixMatch": {
          "type": "string",
          "description": "The HTTP request path value must begin with specified prefix_match. prefix_match must begin with a /. Only one of full_path_match, prefix_match, or regex_match should be used."
        },
        "queryParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteQueryParameterMatchResponse"
          },
          "description": "Specifies a list of query parameters to match against. ALL of the query parameters must be matched."
        },
        "regexMatch": {
          "type": "string",
          "description": "The HTTP request path value must satisfy the regular expression specified by regex_match after removing any query parameters and anchor supplied with the original URL. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of full_path_match, prefix_match, or regex_match should be used."
        }
      },
      "type": "object",
      "required": [
        "fullPathMatch",
        "headers",
        "ignoreCase",
        "prefixMatch",
        "queryParameters",
        "regexMatch"
      ]
    },
    "google-native:networkservices/v1:HttpRouteRouteRule": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRouteAction",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRouteMatch"
          },
          "description": "A list of matches define conditions used for matching the rule against incoming HTTP requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic. If a default rule is desired to be configured, add a rule with no matches specified to the end of the rules list."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteRouteRuleResponse": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRouteActionResponse",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRouteMatchResponse"
          },
          "description": "A list of matches define conditions used for matching the rule against incoming HTTP requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic. If a default rule is desired to be configured, add a rule with no matches specified to the end of the rules list."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1:HttpRouteStatefulSessionAffinityPolicy": {
      "description": "The specification for cookie-based stateful session affinity where the date plane supplies a “session cookie” with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
      "properties": {
        "cookieTtl": {
          "type": "string",
          "description": "The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive."
        }
      },
      "type": "object",
      "required": [
        "cookieTtl"
      ]
    },
    "google-native:networkservices/v1:HttpRouteStatefulSessionAffinityPolicyResponse": {
      "description": "The specification for cookie-based stateful session affinity where the date plane supplies a “session cookie” with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
      "properties": {
        "cookieTtl": {
          "type": "string",
          "description": "The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive."
        }
      },
      "type": "object",
      "required": [
        "cookieTtl"
      ]
    },
    "google-native:networkservices/v1:HttpRouteURLRewrite": {
      "description": "The specification for modifying the URL of the request, prior to forwarding the request to the destination.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Prior to forwarding the request to the selected destination, the requests host header is replaced by this value."
        },
        "pathPrefixRewrite": {
          "type": "string",
          "description": "Prior to forwarding the request to the selected destination, the matching portion of the requests path is replaced by this value."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:HttpRouteURLRewriteResponse": {
      "description": "The specification for modifying the URL of the request, prior to forwarding the request to the destination.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Prior to forwarding the request to the selected destination, the requests host header is replaced by this value."
        },
        "pathPrefixRewrite": {
          "type": "string",
          "description": "Prior to forwarding the request to the selected destination, the matching portion of the requests path is replaced by this value."
        }
      },
      "type": "object",
      "required": [
        "hostRewrite",
        "pathPrefixRewrite"
      ]
    },
    "google-native:networkservices/v1:TcpRouteRouteAction": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteDestination"
          },
          "description": "Optional. The destination services to which traffic should be forwarded. At least one destination service is required. Only one of route destination or original destination can be set."
        },
        "originalDestination": {
          "type": "boolean",
          "description": "Optional. If true, Router will use the destination IP and port of the original connection as the destination of the request. Default is false. Only one of route destinations or original destination can be set."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:TcpRouteRouteActionResponse": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteDestinationResponse"
          },
          "description": "Optional. The destination services to which traffic should be forwarded. At least one destination service is required. Only one of route destination or original destination can be set."
        },
        "originalDestination": {
          "type": "boolean",
          "description": "Optional. If true, Router will use the destination IP and port of the original connection as the destination of the request. Default is false. Only one of route destinations or original destination can be set."
        }
      },
      "type": "object",
      "required": [
        "destinations",
        "originalDestination"
      ]
    },
    "google-native:networkservices/v1:TcpRouteRouteDestination": {
      "description": "Describe the destination for traffic to be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName"
      ]
    },
    "google-native:networkservices/v1:TcpRouteRouteDestinationResponse": {
      "description": "Describe the destination for traffic to be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName",
        "weight"
      ]
    },
    "google-native:networkservices/v1:TcpRouteRouteMatch": {
      "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Must be specified in the CIDR range format. A CIDR range consists of an IP Address and a prefix length to construct the subnet mask. By default, the prefix length is 32 (i.e. matches a single IP address). Only IPV4 addresses are supported. Examples: \"10.0.0.1\" - matches against this exact IP address. \"10.0.0.0/8\" - matches against any IP address within the 10.0.0.0 subnet and 255.255.255.0 mask. \"0.0.0.0/0\" - matches against any IP address'."
        },
        "port": {
          "type": "string",
          "description": "Specifies the destination port to match against."
        }
      },
      "type": "object",
      "required": [
        "address",
        "port"
      ]
    },
    "google-native:networkservices/v1:TcpRouteRouteMatchResponse": {
      "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Must be specified in the CIDR range format. A CIDR range consists of an IP Address and a prefix length to construct the subnet mask. By default, the prefix length is 32 (i.e. matches a single IP address). Only IPV4 addresses are supported. Examples: \"10.0.0.1\" - matches against this exact IP address. \"10.0.0.0/8\" - matches against any IP address within the 10.0.0.0 subnet and 255.255.255.0 mask. \"0.0.0.0/0\" - matches against any IP address'."
        },
        "port": {
          "type": "string",
          "description": "Specifies the destination port to match against."
        }
      },
      "type": "object",
      "required": [
        "address",
        "port"
      ]
    },
    "google-native:networkservices/v1:TcpRouteRouteRule": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteAction",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteMatch"
          },
          "description": "Optional. RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic."
        }
      },
      "type": "object",
      "required": [
        "action"
      ]
    },
    "google-native:networkservices/v1:TcpRouteRouteRuleResponse": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteActionResponse",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteMatchResponse"
          },
          "description": "Optional. RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1:TlsRouteRouteAction": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteDestination"
          },
          "description": "The destination services to which traffic should be forwarded. At least one destination service is required."
        }
      },
      "type": "object",
      "required": [
        "destinations"
      ]
    },
    "google-native:networkservices/v1:TlsRouteRouteActionResponse": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteDestinationResponse"
          },
          "description": "The destination services to which traffic should be forwarded. At least one destination service is required."
        }
      },
      "type": "object",
      "required": [
        "destinations"
      ]
    },
    "google-native:networkservices/v1:TlsRouteRouteDestination": {
      "description": "Describe the destination for traffic to be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwareded to the backend referenced by the service_name field. This is computed as: - weight/Sum(weights in destinations) Weights in all destinations does not need to sum up to 100."
        }
      },
      "type": "object",
      "required": [
        "serviceName"
      ]
    },
    "google-native:networkservices/v1:TlsRouteRouteDestinationResponse": {
      "description": "Describe the destination for traffic to be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwareded to the backend referenced by the service_name field. This is computed as: - weight/Sum(weights in destinations) Weights in all destinations does not need to sum up to 100."
        }
      },
      "type": "object",
      "required": [
        "serviceName",
        "weight"
      ]
    },
    "google-native:networkservices/v1:TlsRouteRouteMatch": {
      "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"AND\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
      "properties": {
        "alpn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. ALPN (Application-Layer Protocol Negotiation) to match against. Examples: \"http/1.1\", \"h2\". At least one of sni_host and alpn is required. Up to 5 alpns across all matches can be set."
        },
        "sniHost": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. SNI (server name indicator) to match against. SNI will be matched against all wildcard domains, i.e. `www.example.com` will be first matched against `www.example.com`, then `*.example.com`, then `*.com.` Partial wildcards are not supported, and values like *w.example.com are invalid. At least one of sni_host and alpn is required. Up to 5 sni hosts across all matches can be set."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:TlsRouteRouteMatchResponse": {
      "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"AND\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
      "properties": {
        "alpn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. ALPN (Application-Layer Protocol Negotiation) to match against. Examples: \"http/1.1\", \"h2\". At least one of sni_host and alpn is required. Up to 5 alpns across all matches can be set."
        },
        "sniHost": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. SNI (server name indicator) to match against. SNI will be matched against all wildcard domains, i.e. `www.example.com` will be first matched against `www.example.com`, then `*.example.com`, then `*.com.` Partial wildcards are not supported, and values like *w.example.com are invalid. At least one of sni_host and alpn is required. Up to 5 sni hosts across all matches can be set."
        }
      },
      "type": "object",
      "required": [
        "alpn",
        "sniHost"
      ]
    },
    "google-native:networkservices/v1:TlsRouteRouteRule": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteAction",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteMatch"
          },
          "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1:TlsRouteRouteRuleResponse": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteActionResponse",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteMatchResponse"
          },
          "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1:TrafficPortSelector": {
      "description": "Specification of a port-based selector.",
      "properties": {
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of ports. Can be port numbers or port range (example, [80-90] specifies all ports from 80 to 90, including 80 and 90) or named ports or * to specify all ports. If the list is empty, all ports are selected."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1:TrafficPortSelectorResponse": {
      "description": "Specification of a port-based selector.",
      "properties": {
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of ports. Can be port numbers or port range (example, [80-90] specifies all ports from 80 to 90, including 80 and 90) or named ports or * to specify all ports. If the list is empty, all ports are selected."
        }
      },
      "type": "object",
      "required": [
        "ports"
      ]
    },
    "google-native:networkservices/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:networkservices/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:networkservices/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:networkservices/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:EndpointMatcher": {
      "description": "A definition of a matcher that selects endpoints to which the policies should be applied.",
      "properties": {
        "metadataLabelMatcher": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:MetadataLabelMatcher",
          "description": "The matcher is based on node metadata presented by xDS clients."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:EndpointMatcherResponse": {
      "description": "A definition of a matcher that selects endpoints to which the policies should be applied.",
      "properties": {
        "metadataLabelMatcher": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:MetadataLabelMatcherResponse",
          "description": "The matcher is based on node metadata presented by xDS clients."
        }
      },
      "type": "object",
      "required": [
        "metadataLabelMatcher"
      ]
    },
    "google-native:networkservices/v1beta1:EndpointPolicyType": {
      "description": "Required. The type of endpoint policy. This is primarily used to validate the configuration.",
      "type": "string",
      "enum": [
        {
          "name": "EndpointPolicyTypeUnspecified",
          "description": "Default value. Must not be used.",
          "value": "ENDPOINT_POLICY_TYPE_UNSPECIFIED"
        },
        {
          "name": "SidecarProxy",
          "description": "Represents a proxy deployed as a sidecar.",
          "value": "SIDECAR_PROXY"
        },
        {
          "name": "GrpcServer",
          "description": "Represents a proxyless gRPC backend.",
          "value": "GRPC_SERVER"
        }
      ]
    },
    "google-native:networkservices/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:networkservices/v1beta1:ExtensionChain": {
      "description": "A single extension chain wrapper that contains the match conditions and extensions to execute.",
      "properties": {
        "extensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainExtension"
          },
          "description": "A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for `LbTrafficExtension` resource. `LbRouteExtension` chains are limited to 1 extension per extension chain."
        },
        "matchCondition": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainMatchCondition",
          "description": "Conditions under which this chain is invoked for a request."
        },
        "name": {
          "type": "string",
          "description": "The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number."
        }
      },
      "type": "object",
      "required": [
        "extensions",
        "matchCondition",
        "name"
      ]
    },
    "google-native:networkservices/v1beta1:ExtensionChainExtension": {
      "description": "A single extension in the chain to execute for the matching request.",
      "properties": {
        "authority": {
          "type": "string",
          "description": "The `:authority` header in the gRPC request sent from Envoy to the extension service."
        },
        "failOpen": {
          "type": "boolean",
          "description": "Optional. Determines how the proxy behaves if the call to the extension fails or times out. When set to `TRUE`, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to `FALSE`: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer. * If response headers have been delivered, then the HTTP stream to the downstream client is reset. Default is `FALSE`."
        },
        "forwardHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name."
        },
        "name": {
          "type": "string",
          "description": "The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number."
        },
        "service": {
          "type": "string",
          "description": "The reference to the service that runs the extension. Must be a reference to a [backend service](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)."
        },
        "supportedEvents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainExtensionSupportedEventsItem"
          },
          "description": "Optional. A set of events during request or response processing for which this extension is called. This field is required for the `LbTrafficExtension` resource. It's not relevant for the `LbRouteExtension` resource."
        },
        "timeout": {
          "type": "string",
          "description": "Specifies the timeout for each individual message on the stream. The timeout must be between 10-1000 milliseconds."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "name",
        "service",
        "timeout"
      ]
    },
    "google-native:networkservices/v1beta1:ExtensionChainExtensionResponse": {
      "description": "A single extension in the chain to execute for the matching request.",
      "properties": {
        "authority": {
          "type": "string",
          "description": "The `:authority` header in the gRPC request sent from Envoy to the extension service."
        },
        "failOpen": {
          "type": "boolean",
          "description": "Optional. Determines how the proxy behaves if the call to the extension fails or times out. When set to `TRUE`, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to `FALSE`: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer. * If response headers have been delivered, then the HTTP stream to the downstream client is reset. Default is `FALSE`."
        },
        "forwardHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name."
        },
        "name": {
          "type": "string",
          "description": "The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number."
        },
        "service": {
          "type": "string",
          "description": "The reference to the service that runs the extension. Must be a reference to a [backend service](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)."
        },
        "supportedEvents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of events during request or response processing for which this extension is called. This field is required for the `LbTrafficExtension` resource. It's not relevant for the `LbRouteExtension` resource."
        },
        "timeout": {
          "type": "string",
          "description": "Specifies the timeout for each individual message on the stream. The timeout must be between 10-1000 milliseconds."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "failOpen",
        "forwardHeaders",
        "name",
        "service",
        "supportedEvents",
        "timeout"
      ]
    },
    "google-native:networkservices/v1beta1:ExtensionChainExtensionSupportedEventsItem": {
      "type": "string",
      "enum": [
        {
          "name": "EventTypeUnspecified",
          "description": "Unspecified value. Do not use.",
          "value": "EVENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "RequestHeaders",
          "description": "If included in `supported_events`, the extension is called when the HTTP request headers arrive.",
          "value": "REQUEST_HEADERS"
        },
        {
          "name": "RequestBody",
          "description": "If included in `supported_events`, the extension is called when the HTTP request body arrives.",
          "value": "REQUEST_BODY"
        },
        {
          "name": "ResponseHeaders",
          "description": "If included in `supported_events`, the extension is called when the HTTP response headers arrive.",
          "value": "RESPONSE_HEADERS"
        },
        {
          "name": "ResponseBody",
          "description": "If included in `supported_events`, the extension is called when the HTTP response body arrives.",
          "value": "RESPONSE_BODY"
        }
      ]
    },
    "google-native:networkservices/v1beta1:ExtensionChainMatchCondition": {
      "description": "Conditions under which this chain is invoked for a request.",
      "properties": {
        "celExpression": {
          "type": "string",
          "description": "A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed."
        }
      },
      "type": "object",
      "required": [
        "celExpression"
      ]
    },
    "google-native:networkservices/v1beta1:ExtensionChainMatchConditionResponse": {
      "description": "Conditions under which this chain is invoked for a request.",
      "properties": {
        "celExpression": {
          "type": "string",
          "description": "A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed."
        }
      },
      "type": "object",
      "required": [
        "celExpression"
      ]
    },
    "google-native:networkservices/v1beta1:ExtensionChainResponse": {
      "description": "A single extension chain wrapper that contains the match conditions and extensions to execute.",
      "properties": {
        "extensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainExtensionResponse"
          },
          "description": "A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for `LbTrafficExtension` resource. `LbRouteExtension` chains are limited to 1 extension per extension chain."
        },
        "matchCondition": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainMatchConditionResponse",
          "description": "Conditions under which this chain is invoked for a request."
        },
        "name": {
          "type": "string",
          "description": "The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number."
        }
      },
      "type": "object",
      "required": [
        "extensions",
        "matchCondition",
        "name"
      ]
    },
    "google-native:networkservices/v1beta1:GatewayType": {
      "description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The type of the customer managed gateway is unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "OpenMesh",
          "description": "The type of the customer managed gateway is TrafficDirector Open Mesh.",
          "value": "OPEN_MESH"
        },
        {
          "name": "SecureWebGateway",
          "description": "The type of the customer managed gateway is SecureWebGateway (SWG).",
          "value": "SECURE_WEB_GATEWAY"
        }
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteDestination": {
      "description": "The destination to which traffic will be routed.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a destination service to which to route traffic. Must refer to either a BackendService or ServiceDirectoryService."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteDestinationResponse": {
      "description": "The destination to which traffic will be routed.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a destination service to which to route traffic. Must refer to either a BackendService or ServiceDirectoryService."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName",
        "weight"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteFaultInjectionPolicy": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteFaultInjectionPolicyAbort",
          "description": "The specification for aborting to client requests."
        },
        "delay": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteFaultInjectionPolicyDelay",
          "description": "The specification for injecting delay to client requests."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:GrpcRouteFaultInjectionPolicyAbort": {
      "description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic which will be aborted. The value must be between [0, 100]"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:GrpcRouteFaultInjectionPolicyAbortResponse": {
      "description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic which will be aborted. The value must be between [0, 100]"
        }
      },
      "type": "object",
      "required": [
        "httpStatus",
        "percentage"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteFaultInjectionPolicyDelay": {
      "description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
      "properties": {
        "fixedDelay": {
          "type": "string",
          "description": "Specify a fixed delay before forwarding the request."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:GrpcRouteFaultInjectionPolicyDelayResponse": {
      "description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
      "properties": {
        "fixedDelay": {
          "type": "string",
          "description": "Specify a fixed delay before forwarding the request."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]"
        }
      },
      "type": "object",
      "required": [
        "fixedDelay",
        "percentage"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteFaultInjectionPolicyResponse": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteFaultInjectionPolicyAbortResponse",
          "description": "The specification for aborting to client requests."
        },
        "delay": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteFaultInjectionPolicyDelayResponse",
          "description": "The specification for injecting delay to client requests."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "delay"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteHeaderMatch": {
      "description": "A match against a collection of headers.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of the header."
        },
        "type": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteHeaderMatchType",
          "description": "Optional. Specifies how to match against the value of the header. If not specified, a default value of EXACT is used."
        },
        "value": {
          "type": "string",
          "description": "The value of the header."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteHeaderMatchResponse": {
      "description": "A match against a collection of headers.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of the header."
        },
        "type": {
          "type": "string",
          "description": "Optional. Specifies how to match against the value of the header. If not specified, a default value of EXACT is used."
        },
        "value": {
          "type": "string",
          "description": "The value of the header."
        }
      },
      "type": "object",
      "required": [
        "key",
        "type",
        "value"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteHeaderMatchType": {
      "description": "Optional. Specifies how to match against the value of the header. If not specified, a default value of EXACT is used.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Exact",
          "description": "Will only match the exact value provided.",
          "value": "EXACT"
        },
        {
          "name": "RegularExpression",
          "description": "Will match paths conforming to the prefix specified by value. RE2 syntax is supported.",
          "value": "REGULAR_EXPRESSION"
        }
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteMethodMatch": {
      "description": "Specifies a match against a method.",
      "properties": {
        "caseSensitive": {
          "type": "boolean",
          "description": "Optional. Specifies that matches are case sensitive. The default value is true. case_sensitive must not be used with a type of REGULAR_EXPRESSION."
        },
        "grpcMethod": {
          "type": "string",
          "description": "Name of the method to match against. If unspecified, will match all methods."
        },
        "grpcService": {
          "type": "string",
          "description": "Name of the service to match against. If unspecified, will match all services."
        },
        "type": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteMethodMatchType",
          "description": "Optional. Specifies how to match against the name. If not specified, a default value of \"EXACT\" is used."
        }
      },
      "type": "object",
      "required": [
        "grpcMethod",
        "grpcService"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteMethodMatchResponse": {
      "description": "Specifies a match against a method.",
      "properties": {
        "caseSensitive": {
          "type": "boolean",
          "description": "Optional. Specifies that matches are case sensitive. The default value is true. case_sensitive must not be used with a type of REGULAR_EXPRESSION."
        },
        "grpcMethod": {
          "type": "string",
          "description": "Name of the method to match against. If unspecified, will match all methods."
        },
        "grpcService": {
          "type": "string",
          "description": "Name of the service to match against. If unspecified, will match all services."
        },
        "type": {
          "type": "string",
          "description": "Optional. Specifies how to match against the name. If not specified, a default value of \"EXACT\" is used."
        }
      },
      "type": "object",
      "required": [
        "caseSensitive",
        "grpcMethod",
        "grpcService",
        "type"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteMethodMatchType": {
      "description": "Optional. Specifies how to match against the name. If not specified, a default value of \"EXACT\" is used.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Exact",
          "description": "Will only match the exact name provided.",
          "value": "EXACT"
        },
        {
          "name": "RegularExpression",
          "description": "Will interpret grpc_method and grpc_service as regexes. RE2 syntax is supported.",
          "value": "REGULAR_EXPRESSION"
        }
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteRetryPolicy": {
      "description": "The specifications for retries.",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "- connect-failure: Router will retry on failures connecting to Backend Services, for example due to connection timeouts. - refused-stream: Router will retry if the backend service resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry. - cancelled: Router will retry if the gRPC status code in the response header is set to cancelled - deadline-exceeded: Router will retry if the gRPC status code in the response header is set to deadline-exceeded - resource-exhausted: Router will retry if the gRPC status code in the response header is set to resource-exhausted - unavailable: Router will retry if the gRPC status code in the response header is set to unavailable"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:GrpcRouteRetryPolicyResponse": {
      "description": "The specifications for retries.",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "- connect-failure: Router will retry on failures connecting to Backend Services, for example due to connection timeouts. - refused-stream: Router will retry if the backend service resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry. - cancelled: Router will retry if the gRPC status code in the response header is set to cancelled - deadline-exceeded: Router will retry if the gRPC status code in the response header is set to deadline-exceeded - resource-exhausted: Router will retry if the gRPC status code in the response header is set to resource-exhausted - unavailable: Router will retry if the gRPC status code in the response header is set to unavailable"
        }
      },
      "type": "object",
      "required": [
        "numRetries",
        "retryConditions"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteRouteAction": {
      "description": "Specifies how to route matched traffic.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteDestination"
          },
          "description": "Optional. The destination services to which traffic should be forwarded. If multiple destinations are specified, traffic will be split between Backend Service(s) according to the weight field of these destinations."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteFaultInjectionPolicy",
          "description": "Optional. The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRetryPolicy",
          "description": "Optional. Specifies the retry policy associated with this route."
        },
        "statefulSessionAffinity": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteStatefulSessionAffinityPolicy",
          "description": "Optional. Specifies cookie-based stateful session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Optional. Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:GrpcRouteRouteActionResponse": {
      "description": "Specifies how to route matched traffic.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteDestinationResponse"
          },
          "description": "Optional. The destination services to which traffic should be forwarded. If multiple destinations are specified, traffic will be split between Backend Service(s) according to the weight field of these destinations."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteFaultInjectionPolicyResponse",
          "description": "Optional. The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRetryPolicyResponse",
          "description": "Optional. Specifies the retry policy associated with this route."
        },
        "statefulSessionAffinity": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteStatefulSessionAffinityPolicyResponse",
          "description": "Optional. Specifies cookie-based stateful session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Optional. Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries."
        }
      },
      "type": "object",
      "required": [
        "destinations",
        "faultInjectionPolicy",
        "retryPolicy",
        "statefulSessionAffinity",
        "timeout"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteRouteMatch": {
      "description": "Criteria for matching traffic. A RouteMatch will be considered to match when all supplied fields match.",
      "properties": {
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteHeaderMatch"
          },
          "description": "Optional. Specifies a collection of headers to match."
        },
        "method": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteMethodMatch",
          "description": "Optional. A gRPC method to match against. If this field is empty or omitted, will match all methods."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:GrpcRouteRouteMatchResponse": {
      "description": "Criteria for matching traffic. A RouteMatch will be considered to match when all supplied fields match.",
      "properties": {
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteHeaderMatchResponse"
          },
          "description": "Optional. Specifies a collection of headers to match."
        },
        "method": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteMethodMatchResponse",
          "description": "Optional. A gRPC method to match against. If this field is empty or omitted, will match all methods."
        }
      },
      "type": "object",
      "required": [
        "headers",
        "method"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteRouteRule": {
      "description": "Describes how to route traffic.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRouteAction",
          "description": "A detailed rule defining how to route traffic. This field is required."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRouteMatch"
          },
          "description": "Optional. Matches define conditions used for matching the rule against incoming gRPC requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic."
        }
      },
      "type": "object",
      "required": [
        "action"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteRouteRuleResponse": {
      "description": "Describes how to route traffic.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRouteActionResponse",
          "description": "A detailed rule defining how to route traffic. This field is required."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRouteMatchResponse"
          },
          "description": "Optional. Matches define conditions used for matching the rule against incoming gRPC requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteStatefulSessionAffinityPolicy": {
      "description": "The specification for cookie-based stateful session affinity where the date plane supplies a “session cookie” with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
      "properties": {
        "cookieTtl": {
          "type": "string",
          "description": "The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive."
        }
      },
      "type": "object",
      "required": [
        "cookieTtl"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRouteStatefulSessionAffinityPolicyResponse": {
      "description": "The specification for cookie-based stateful session affinity where the date plane supplies a “session cookie” with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
      "properties": {
        "cookieTtl": {
          "type": "string",
          "description": "The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive."
        }
      },
      "type": "object",
      "required": [
        "cookieTtl"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteCorsPolicy": {
      "description": "The Specification for allowing client side cross-origin requests.",
      "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 translates to the Access-Control-Allow-Credentials header. Default value is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that will be allowed to do CORS requests. An origin is allowed if it matches either an item in allow_origins or an item in allow_origin_regexes."
        },
        "disabled": {
          "type": "boolean",
          "description": "If true, the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "string",
          "description": "Specifies how long result of a preflight request can be cached in seconds. This translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteCorsPolicyResponse": {
      "description": "The Specification for allowing client side cross-origin requests.",
      "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 translates to the Access-Control-Allow-Credentials header. Default value is false."
        },
        "allowHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Allow-Headers header."
        },
        "allowMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Allow-Methods header."
        },
        "allowOriginRegexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax."
        },
        "allowOrigins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the list of origins that will be allowed to do CORS requests. An origin is allowed if it matches either an item in allow_origins or an item in allow_origin_regexes."
        },
        "disabled": {
          "type": "boolean",
          "description": "If true, the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect."
        },
        "exposeHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the content for Access-Control-Expose-Headers header."
        },
        "maxAge": {
          "type": "string",
          "description": "Specifies how long result of a preflight request can be cached in seconds. This translates to the Access-Control-Max-Age header."
        }
      },
      "type": "object",
      "required": [
        "allowCredentials",
        "allowHeaders",
        "allowMethods",
        "allowOriginRegexes",
        "allowOrigins",
        "disabled",
        "exposeHeaders",
        "maxAge"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteDestination": {
      "description": "Specifications of a destination to which the request should be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteDestinationResponse": {
      "description": "Specifications of a destination to which the request should be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName",
        "weight"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteFaultInjectionPolicy": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced by client proxy on a percentage of requests before sending those requests to the destination service. Similarly requests can be aborted by client proxy for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteFaultInjectionPolicyAbort",
          "description": "The specification for aborting to client requests."
        },
        "delay": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteFaultInjectionPolicyDelay",
          "description": "The specification for injecting delay to client requests."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteFaultInjectionPolicyAbort": {
      "description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic which will be aborted. The value must be between [0, 100]"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteFaultInjectionPolicyAbortResponse": {
      "description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
      "properties": {
        "httpStatus": {
          "type": "integer",
          "description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic which will be aborted. The value must be between [0, 100]"
        }
      },
      "type": "object",
      "required": [
        "httpStatus",
        "percentage"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteFaultInjectionPolicyDelay": {
      "description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
      "properties": {
        "fixedDelay": {
          "type": "string",
          "description": "Specify a fixed delay before forwarding the request."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteFaultInjectionPolicyDelayResponse": {
      "description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
      "properties": {
        "fixedDelay": {
          "type": "string",
          "description": "Specify a fixed delay before forwarding the request."
        },
        "percentage": {
          "type": "integer",
          "description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]"
        }
      },
      "type": "object",
      "required": [
        "fixedDelay",
        "percentage"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteFaultInjectionPolicyResponse": {
      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced by client proxy on a percentage of requests before sending those requests to the destination service. Similarly requests can be aborted by client proxy for a percentage of requests.",
      "properties": {
        "abort": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteFaultInjectionPolicyAbortResponse",
          "description": "The specification for aborting to client requests."
        },
        "delay": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteFaultInjectionPolicyDelayResponse",
          "description": "The specification for injecting delay to client requests."
        }
      },
      "type": "object",
      "required": [
        "abort",
        "delay"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteHeaderMatch": {
      "description": "Specifies how to select a route rule based on HTTP request headers.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value of the header should match exactly the content of exact_match."
        },
        "header": {
          "type": "string",
          "description": "The name of the HTTP header to match against."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If specified, the match result will be inverted before checking. Default value is set to false."
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefix_match."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with header_name must exist. The match takes place whether or not the header has a value."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteHeaderMatchIntegerRange",
          "description": "If specified, the rule will match if the request header value is within the range."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regex_match. For regular expression grammar, please see: https://github.com/google/re2/wiki/Syntax"
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffix_match."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteHeaderMatchIntegerRange": {
      "description": "Represents an integer value range.",
      "properties": {
        "end": {
          "type": "integer",
          "description": "End of the range (exclusive)"
        },
        "start": {
          "type": "integer",
          "description": "Start of the range (inclusive)"
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteHeaderMatchIntegerRangeResponse": {
      "description": "Represents an integer value range.",
      "properties": {
        "end": {
          "type": "integer",
          "description": "End of the range (exclusive)"
        },
        "start": {
          "type": "integer",
          "description": "Start of the range (inclusive)"
        }
      },
      "type": "object",
      "required": [
        "end",
        "start"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteHeaderMatchResponse": {
      "description": "Specifies how to select a route rule based on HTTP request headers.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value of the header should match exactly the content of exact_match."
        },
        "header": {
          "type": "string",
          "description": "The name of the HTTP header to match against."
        },
        "invertMatch": {
          "type": "boolean",
          "description": "If specified, the match result will be inverted before checking. Default value is set to false."
        },
        "prefixMatch": {
          "type": "string",
          "description": "The value of the header must start with the contents of prefix_match."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "A header with header_name must exist. The match takes place whether or not the header has a value."
        },
        "rangeMatch": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteHeaderMatchIntegerRangeResponse",
          "description": "If specified, the rule will match if the request header value is within the range."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the header must match the regular expression specified in regex_match. For regular expression grammar, please see: https://github.com/google/re2/wiki/Syntax"
        },
        "suffixMatch": {
          "type": "string",
          "description": "The value of the header must end with the contents of suffix_match."
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "header",
        "invertMatch",
        "prefixMatch",
        "presentMatch",
        "rangeMatch",
        "regexMatch",
        "suffixMatch"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteHeaderModifier": {
      "description": "The specification for modifying HTTP header in HTTP request and HTTP response.",
      "properties": {
        "add": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Add the headers with given map where key is the name of the header, value is the value of the header."
        },
        "remove": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remove headers (matching by header names) specified in the list."
        },
        "set": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Completely overwrite/replace the headers with given map where key is the name of the header, value is the value of the header."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteHeaderModifierResponse": {
      "description": "The specification for modifying HTTP header in HTTP request and HTTP response.",
      "properties": {
        "add": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Add the headers with given map where key is the name of the header, value is the value of the header."
        },
        "remove": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remove headers (matching by header names) specified in the list."
        },
        "set": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Completely overwrite/replace the headers with given map where key is the name of the header, value is the value of the header."
        }
      },
      "type": "object",
      "required": [
        "add",
        "remove",
        "set"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteQueryParameterMatch": {
      "description": "Specifications to match a query parameter in the request.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value of the query parameter must exactly match the contents of exact_match. Only one of exact_match, regex_match, or present_match must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the QueryParameterMatcher matches if request contains query parameter, irrespective of whether the parameter has a value or not. Only one of exact_match, regex_match, or present_match must be set."
        },
        "queryParameter": {
          "type": "string",
          "description": "The name of the query parameter to match."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the query parameter must match the regular expression specified by regex_match. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of exact_match, regex_match, or present_match must be set."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteQueryParameterMatchResponse": {
      "description": "Specifications to match a query parameter in the request.",
      "properties": {
        "exactMatch": {
          "type": "string",
          "description": "The value of the query parameter must exactly match the contents of exact_match. Only one of exact_match, regex_match, or present_match must be set."
        },
        "presentMatch": {
          "type": "boolean",
          "description": "Specifies that the QueryParameterMatcher matches if request contains query parameter, irrespective of whether the parameter has a value or not. Only one of exact_match, regex_match, or present_match must be set."
        },
        "queryParameter": {
          "type": "string",
          "description": "The name of the query parameter to match."
        },
        "regexMatch": {
          "type": "string",
          "description": "The value of the query parameter must match the regular expression specified by regex_match. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of exact_match, regex_match, or present_match must be set."
        }
      },
      "type": "object",
      "required": [
        "exactMatch",
        "presentMatch",
        "queryParameter",
        "regexMatch"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteRedirect": {
      "description": "The specification for redirecting traffic.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that will be used in the redirect response instead of the one that was supplied in the request."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to https. If set to false, the URL scheme of the redirected request will remain the same as that of the request. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that will be used in the redirect response instead of the one that was supplied in the request. path_redirect can not be supplied together with prefix_redirect. Supply one alone or neither. If neither is supplied, the path of the original request will be used for the redirect."
        },
        "portRedirect": {
          "type": "integer",
          "description": "The port that will be used in the redirected request instead of the one that was supplied in the request."
        },
        "prefixRewrite": {
          "type": "string",
          "description": "Indicates that during redirection, the matched prefix (or path) should be swapped with this value. This option allows URLs be dynamically created based on the request."
        },
        "responseCode": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRedirectResponseCode",
          "description": "The HTTP Status code to use for the redirect."
        },
        "stripQuery": {
          "type": "boolean",
          "description": "if set to true, any accompanying query portion of the original URL is removed prior to redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteRedirectResponse": {
      "description": "The specification for redirecting traffic.",
      "properties": {
        "hostRedirect": {
          "type": "string",
          "description": "The host that will be used in the redirect response instead of the one that was supplied in the request."
        },
        "httpsRedirect": {
          "type": "boolean",
          "description": "If set to true, the URL scheme in the redirected request is set to https. If set to false, the URL scheme of the redirected request will remain the same as that of the request. The default is set to false."
        },
        "pathRedirect": {
          "type": "string",
          "description": "The path that will be used in the redirect response instead of the one that was supplied in the request. path_redirect can not be supplied together with prefix_redirect. Supply one alone or neither. If neither is supplied, the path of the original request will be used for the redirect."
        },
        "portRedirect": {
          "type": "integer",
          "description": "The port that will be used in the redirected request instead of the one that was supplied in the request."
        },
        "prefixRewrite": {
          "type": "string",
          "description": "Indicates that during redirection, the matched prefix (or path) should be swapped with this value. This option allows URLs be dynamically created based on the request."
        },
        "responseCode": {
          "type": "string",
          "description": "The HTTP Status code to use for the redirect."
        },
        "stripQuery": {
          "type": "boolean",
          "description": "if set to true, any accompanying query portion of the original URL is removed prior to redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false."
        }
      },
      "type": "object",
      "required": [
        "hostRedirect",
        "httpsRedirect",
        "pathRedirect",
        "portRedirect",
        "prefixRewrite",
        "responseCode",
        "stripQuery"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteRedirectResponseCode": {
      "description": "The HTTP Status code to use for the redirect.",
      "type": "string",
      "enum": [
        {
          "name": "ResponseCodeUnspecified",
          "description": "Default value",
          "value": "RESPONSE_CODE_UNSPECIFIED"
        },
        {
          "name": "MovedPermanentlyDefault",
          "description": "Corresponds to 301.",
          "value": "MOVED_PERMANENTLY_DEFAULT"
        },
        {
          "name": "Found",
          "description": "Corresponds to 302.",
          "value": "FOUND"
        },
        {
          "name": "SeeOther",
          "description": "Corresponds to 303.",
          "value": "SEE_OTHER"
        },
        {
          "name": "TemporaryRedirect",
          "description": "Corresponds to 307. In this case, the request method will be retained.",
          "value": "TEMPORARY_REDIRECT"
        },
        {
          "name": "PermanentRedirect",
          "description": "Corresponds to 308. In this case, the request method will be retained.",
          "value": "PERMANENT_REDIRECT"
        }
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteRequestMirrorPolicy": {
      "description": "Specifies the policy on how requests are shadowed to a separate mirrored destination service. The proxy does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow.",
      "properties": {
        "destination": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteDestination",
          "description": "The destination the requests will be mirrored to. The weight of the destination will be ignored."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteRequestMirrorPolicyResponse": {
      "description": "Specifies the policy on how requests are shadowed to a separate mirrored destination service. The proxy does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow.",
      "properties": {
        "destination": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteDestinationResponse",
          "description": "The destination the requests will be mirrored to. The weight of the destination will be ignored."
        }
      },
      "type": "object",
      "required": [
        "destination"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteRetryPolicy": {
      "description": "The specifications for retries.",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1."
        },
        "perTryTimeout": {
          "type": "string",
          "description": "Specifies a non-zero timeout per retry attempt."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: 5xx: Proxy will attempt a retry if the destination service responds with any 5xx response code, of if the destination service does not respond at all, example: disconnect, reset, read timeout, connection failure and refused streams. gateway-error: Similar to 5xx, but only applies to response codes 502, 503, 504. reset: Proxy will attempt a retry if the destination service does not respond at all (disconnect/reset/read timeout) connect-failure: Proxy will retry on failures connecting to destination for example due to connection timeouts. retriable-4xx: Proxy will retry fro retriable 4xx response codes. Currently the only retriable error supported is 409. refused-stream: Proxy will retry if the destination resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteRetryPolicyResponse": {
      "description": "The specifications for retries.",
      "properties": {
        "numRetries": {
          "type": "integer",
          "description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1."
        },
        "perTryTimeout": {
          "type": "string",
          "description": "Specifies a non-zero timeout per retry attempt."
        },
        "retryConditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies one or more conditions when this retry policy applies. Valid values are: 5xx: Proxy will attempt a retry if the destination service responds with any 5xx response code, of if the destination service does not respond at all, example: disconnect, reset, read timeout, connection failure and refused streams. gateway-error: Similar to 5xx, but only applies to response codes 502, 503, 504. reset: Proxy will attempt a retry if the destination service does not respond at all (disconnect/reset/read timeout) connect-failure: Proxy will retry on failures connecting to destination for example due to connection timeouts. retriable-4xx: Proxy will retry fro retriable 4xx response codes. Currently the only retriable error supported is 409. refused-stream: Proxy will retry if the destination resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry."
        }
      },
      "type": "object",
      "required": [
        "numRetries",
        "perTryTimeout",
        "retryConditions"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteRouteAction": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteCorsPolicy",
          "description": "The specification for allowing client side cross-origin requests."
        },
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteDestination"
          },
          "description": "The destination to which traffic should be forwarded."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteFaultInjectionPolicy",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced on a percentage of requests before sending those requests to the backend service. Similarly requests from clients can be aborted for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
        },
        "redirect": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRedirect",
          "description": "If set, the request is directed as configured by this field."
        },
        "requestHeaderModifier": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteHeaderModifier",
          "description": "The specification for modifying the headers of a matching request prior to delivery of the request to the destination. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRequestMirrorPolicy",
          "description": "Specifies the policy on how requests intended for the routes destination are shadowed to a separate mirrored destination. Proxy will not wait for the shadow destination to respond before returning the response. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow."
        },
        "responseHeaderModifier": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteHeaderModifier",
          "description": "The specification for modifying the headers of a response prior to sending the response back to the client. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRetryPolicy",
          "description": "Specifies the retry policy associated with this route."
        },
        "statefulSessionAffinity": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteStatefulSessionAffinityPolicy",
          "description": "Optional. Specifies cookie-based stateful session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteURLRewrite",
          "description": "The specification for rewrite URL before forwarding requests to the destination."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteRouteActionResponse": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "corsPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteCorsPolicyResponse",
          "description": "The specification for allowing client side cross-origin requests."
        },
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteDestinationResponse"
          },
          "description": "The destination to which traffic should be forwarded."
        },
        "faultInjectionPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteFaultInjectionPolicyResponse",
          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced on a percentage of requests before sending those requests to the backend service. Similarly requests from clients can be aborted for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
        },
        "redirect": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRedirectResponse",
          "description": "If set, the request is directed as configured by this field."
        },
        "requestHeaderModifier": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteHeaderModifierResponse",
          "description": "The specification for modifying the headers of a matching request prior to delivery of the request to the destination. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
        },
        "requestMirrorPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRequestMirrorPolicyResponse",
          "description": "Specifies the policy on how requests intended for the routes destination are shadowed to a separate mirrored destination. Proxy will not wait for the shadow destination to respond before returning the response. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow."
        },
        "responseHeaderModifier": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteHeaderModifierResponse",
          "description": "The specification for modifying the headers of a response prior to sending the response back to the client. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRetryPolicyResponse",
          "description": "Specifies the retry policy associated with this route."
        },
        "statefulSessionAffinity": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteStatefulSessionAffinityPolicyResponse",
          "description": "Optional. Specifies cookie-based stateful session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries."
        },
        "urlRewrite": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteURLRewriteResponse",
          "description": "The specification for rewrite URL before forwarding requests to the destination."
        }
      },
      "type": "object",
      "required": [
        "corsPolicy",
        "destinations",
        "faultInjectionPolicy",
        "redirect",
        "requestHeaderModifier",
        "requestMirrorPolicy",
        "responseHeaderModifier",
        "retryPolicy",
        "statefulSessionAffinity",
        "timeout",
        "urlRewrite"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteRouteMatch": {
      "description": "RouteMatch defines specifications used to match requests. If multiple match types are set, this RouteMatch will match if ALL type of matches are matched.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "The HTTP request path value should exactly match this value. Only one of full_path_match, prefix_match, or regex_match should be used."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteHeaderMatch"
          },
          "description": "Specifies a list of HTTP request headers to match against. ALL of the supplied headers must be matched."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies if prefix_match and full_path_match matches are case sensitive. The default value is false."
        },
        "prefixMatch": {
          "type": "string",
          "description": "The HTTP request path value must begin with specified prefix_match. prefix_match must begin with a /. Only one of full_path_match, prefix_match, or regex_match should be used."
        },
        "queryParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteQueryParameterMatch"
          },
          "description": "Specifies a list of query parameters to match against. ALL of the query parameters must be matched."
        },
        "regexMatch": {
          "type": "string",
          "description": "The HTTP request path value must satisfy the regular expression specified by regex_match after removing any query parameters and anchor supplied with the original URL. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of full_path_match, prefix_match, or regex_match should be used."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteRouteMatchResponse": {
      "description": "RouteMatch defines specifications used to match requests. If multiple match types are set, this RouteMatch will match if ALL type of matches are matched.",
      "properties": {
        "fullPathMatch": {
          "type": "string",
          "description": "The HTTP request path value should exactly match this value. Only one of full_path_match, prefix_match, or regex_match should be used."
        },
        "headers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteHeaderMatchResponse"
          },
          "description": "Specifies a list of HTTP request headers to match against. ALL of the supplied headers must be matched."
        },
        "ignoreCase": {
          "type": "boolean",
          "description": "Specifies if prefix_match and full_path_match matches are case sensitive. The default value is false."
        },
        "prefixMatch": {
          "type": "string",
          "description": "The HTTP request path value must begin with specified prefix_match. prefix_match must begin with a /. Only one of full_path_match, prefix_match, or regex_match should be used."
        },
        "queryParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteQueryParameterMatchResponse"
          },
          "description": "Specifies a list of query parameters to match against. ALL of the query parameters must be matched."
        },
        "regexMatch": {
          "type": "string",
          "description": "The HTTP request path value must satisfy the regular expression specified by regex_match after removing any query parameters and anchor supplied with the original URL. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of full_path_match, prefix_match, or regex_match should be used."
        }
      },
      "type": "object",
      "required": [
        "fullPathMatch",
        "headers",
        "ignoreCase",
        "prefixMatch",
        "queryParameters",
        "regexMatch"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteRouteRule": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRouteAction",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRouteMatch"
          },
          "description": "A list of matches define conditions used for matching the rule against incoming HTTP requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic. If a default rule is desired to be configured, add a rule with no matches specified to the end of the rules list."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteRouteRuleResponse": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRouteActionResponse",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRouteMatchResponse"
          },
          "description": "A list of matches define conditions used for matching the rule against incoming HTTP requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic. If a default rule is desired to be configured, add a rule with no matches specified to the end of the rules list."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteStatefulSessionAffinityPolicy": {
      "description": "The specification for cookie-based stateful session affinity where the date plane supplies a “session cookie” with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
      "properties": {
        "cookieTtl": {
          "type": "string",
          "description": "The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive."
        }
      },
      "type": "object",
      "required": [
        "cookieTtl"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteStatefulSessionAffinityPolicyResponse": {
      "description": "The specification for cookie-based stateful session affinity where the date plane supplies a “session cookie” with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
      "properties": {
        "cookieTtl": {
          "type": "string",
          "description": "The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive."
        }
      },
      "type": "object",
      "required": [
        "cookieTtl"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRouteURLRewrite": {
      "description": "The specification for modifying the URL of the request, prior to forwarding the request to the destination.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Prior to forwarding the request to the selected destination, the requests host header is replaced by this value."
        },
        "pathPrefixRewrite": {
          "type": "string",
          "description": "Prior to forwarding the request to the selected destination, the matching portion of the requests path is replaced by this value."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:HttpRouteURLRewriteResponse": {
      "description": "The specification for modifying the URL of the request, prior to forwarding the request to the destination.",
      "properties": {
        "hostRewrite": {
          "type": "string",
          "description": "Prior to forwarding the request to the selected destination, the requests host header is replaced by this value."
        },
        "pathPrefixRewrite": {
          "type": "string",
          "description": "Prior to forwarding the request to the selected destination, the matching portion of the requests path is replaced by this value."
        }
      },
      "type": "object",
      "required": [
        "hostRewrite",
        "pathPrefixRewrite"
      ]
    },
    "google-native:networkservices/v1beta1:LbRouteExtensionLoadBalancingScheme": {
      "description": "Required. All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service).",
      "type": "string",
      "enum": [
        {
          "name": "LoadBalancingSchemeUnspecified",
          "description": "Default value. Do not use.",
          "value": "LOAD_BALANCING_SCHEME_UNSPECIFIED"
        },
        {
          "name": "InternalManaged",
          "description": "Signifies that this is used for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "ExternalManaged",
          "description": "Signifies that this is used for External Managed HTTP(S) Load Balancing.",
          "value": "EXTERNAL_MANAGED"
        }
      ]
    },
    "google-native:networkservices/v1beta1:LbTrafficExtensionLoadBalancingScheme": {
      "description": "Required. All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service).",
      "type": "string",
      "enum": [
        {
          "name": "LoadBalancingSchemeUnspecified",
          "description": "Default value. Do not use.",
          "value": "LOAD_BALANCING_SCHEME_UNSPECIFIED"
        },
        {
          "name": "InternalManaged",
          "description": "Signifies that this is used for Internal HTTP(S) Load Balancing.",
          "value": "INTERNAL_MANAGED"
        },
        {
          "name": "ExternalManaged",
          "description": "Signifies that this is used for External Managed HTTP(S) Load Balancing.",
          "value": "EXTERNAL_MANAGED"
        }
      ]
    },
    "google-native:networkservices/v1beta1:MetadataLabelMatcher": {
      "description": "The matcher that is based on node metadata presented by xDS clients.",
      "properties": {
        "metadataLabelMatchCriteria": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:MetadataLabelMatcherMetadataLabelMatchCriteria",
          "description": "Specifies how matching should be done. Supported values are: MATCH_ANY: At least one of the Labels specified in the matcher should match the metadata presented by xDS client. MATCH_ALL: The metadata presented by the xDS client should contain all of the labels specified here. The selection is determined based on the best match. For example, suppose there are three EndpointPolicy resources P1, P2 and P3 and if P1 has a the matcher as MATCH_ANY , P2 has MATCH_ALL , and P3 has MATCH_ALL . If a client with label connects, the config from P1 will be selected. If a client with label connects, the config from P2 will be selected. If a client with label connects, the config from P3 will be selected. If there is more than one best match, (for example, if a config P4 with selector exists and if a client with label connects), an error will be thrown."
        },
        "metadataLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:MetadataLabels"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list can have at most 64 entries. The list can be empty if the match criteria is MATCH_ANY, to specify a wildcard match (i.e this matches any client)."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:MetadataLabelMatcherMetadataLabelMatchCriteria": {
      "description": "Specifies how matching should be done. Supported values are: MATCH_ANY: At least one of the Labels specified in the matcher should match the metadata presented by xDS client. MATCH_ALL: The metadata presented by the xDS client should contain all of the labels specified here. The selection is determined based on the best match. For example, suppose there are three EndpointPolicy resources P1, P2 and P3 and if P1 has a the matcher as MATCH_ANY , P2 has MATCH_ALL , and P3 has MATCH_ALL . If a client with label connects, the config from P1 will be selected. If a client with label connects, the config from P2 will be selected. If a client with label connects, the config from P3 will be selected. If there is more than one best match, (for example, if a config P4 with selector exists and if a client with label connects), an error will be thrown.",
      "type": "string",
      "enum": [
        {
          "name": "MetadataLabelMatchCriteriaUnspecified",
          "description": "Default value. Should not be used.",
          "value": "METADATA_LABEL_MATCH_CRITERIA_UNSPECIFIED"
        },
        {
          "name": "MatchAny",
          "description": "At least one of the Labels specified in the matcher should match the metadata presented by xDS client.",
          "value": "MATCH_ANY"
        },
        {
          "name": "MatchAll",
          "description": "The metadata presented by the xDS client should contain all of the labels specified here.",
          "value": "MATCH_ALL"
        }
      ]
    },
    "google-native:networkservices/v1beta1:MetadataLabelMatcherResponse": {
      "description": "The matcher that is based on node metadata presented by xDS clients.",
      "properties": {
        "metadataLabelMatchCriteria": {
          "type": "string",
          "description": "Specifies how matching should be done. Supported values are: MATCH_ANY: At least one of the Labels specified in the matcher should match the metadata presented by xDS client. MATCH_ALL: The metadata presented by the xDS client should contain all of the labels specified here. The selection is determined based on the best match. For example, suppose there are three EndpointPolicy resources P1, P2 and P3 and if P1 has a the matcher as MATCH_ANY , P2 has MATCH_ALL , and P3 has MATCH_ALL . If a client with label connects, the config from P1 will be selected. If a client with label connects, the config from P2 will be selected. If a client with label connects, the config from P3 will be selected. If there is more than one best match, (for example, if a config P4 with selector exists and if a client with label connects), an error will be thrown."
        },
        "metadataLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:MetadataLabelsResponse"
          },
          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list can have at most 64 entries. The list can be empty if the match criteria is MATCH_ANY, to specify a wildcard match (i.e this matches any client)."
        }
      },
      "type": "object",
      "required": [
        "metadataLabelMatchCriteria",
        "metadataLabels"
      ]
    },
    "google-native:networkservices/v1beta1:MetadataLabels": {
      "description": "Defines a name-pair value for a single label.",
      "properties": {
        "labelName": {
          "type": "string",
          "description": "Label name presented as key in xDS Node Metadata."
        },
        "labelValue": {
          "type": "string",
          "description": "Label value presented as value corresponding to the above key, in xDS Node Metadata."
        }
      },
      "type": "object",
      "required": [
        "labelName",
        "labelValue"
      ]
    },
    "google-native:networkservices/v1beta1:MetadataLabelsResponse": {
      "description": "Defines a name-pair value for a single label.",
      "properties": {
        "labelName": {
          "type": "string",
          "description": "Label name presented as key in xDS Node Metadata."
        },
        "labelValue": {
          "type": "string",
          "description": "Label value presented as value corresponding to the above key, in xDS Node Metadata."
        }
      },
      "type": "object",
      "required": [
        "labelName",
        "labelValue"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicyAutoCapacityDrain": {
      "description": "Option to specify if an unhealthy IG/NEG should be considered for global load balancing and traffic routing.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Optional. If set to 'True', an unhealthy IG/NEG will be set as drained. - An IG/NEG is considered unhealthy if less than 25% of the instances/endpoints in the IG/NEG are healthy. - This option will never result in draining more than 50% of the configured IGs/NEGs for the Backend Service."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicyAutoCapacityDrainResponse": {
      "description": "Option to specify if an unhealthy IG/NEG should be considered for global load balancing and traffic routing.",
      "properties": {
        "enable": {
          "type": "boolean",
          "description": "Optional. If set to 'True', an unhealthy IG/NEG will be set as drained. - An IG/NEG is considered unhealthy if less than 25% of the instances/endpoints in the IG/NEG are healthy. - This option will never result in draining more than 50% of the configured IGs/NEGs for the Backend Service."
        }
      },
      "type": "object",
      "required": [
        "enable"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicyFailoverConfig": {
      "description": "Option to specify health based failover behavior. This is not related to Network load balancer FailoverPolicy.",
      "properties": {
        "failoverHealthThreshold": {
          "type": "integer",
          "description": "Optional. The percentage threshold that a load balancer will begin to send traffic to failover backends. If the percentage of endpoints in a MIG/NEG is smaller than this value, traffic would be sent to failover backends if possible. This field should be set to a value between 1 and 99. The default value is 50 for Global external HTTP(S) load balancer (classic) and Proxyless service mesh, and 70 for others."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicyFailoverConfigResponse": {
      "description": "Option to specify health based failover behavior. This is not related to Network load balancer FailoverPolicy.",
      "properties": {
        "failoverHealthThreshold": {
          "type": "integer",
          "description": "Optional. The percentage threshold that a load balancer will begin to send traffic to failover backends. If the percentage of endpoints in a MIG/NEG is smaller than this value, traffic would be sent to failover backends if possible. This field should be set to a value between 1 and 99. The default value is 50 for Global external HTTP(S) load balancer (classic) and Proxyless service mesh, and 70 for others."
        }
      },
      "type": "object",
      "required": [
        "failoverHealthThreshold"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicyLoadBalancingAlgorithm": {
      "description": "Optional. The type of load balancing algorithm to be used. The default behavior is WATERFALL_BY_REGION.",
      "type": "string",
      "enum": [
        {
          "name": "LoadBalancingAlgorithmUnspecified",
          "description": "The type of the loadbalancing algorithm is unspecified.",
          "value": "LOAD_BALANCING_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "SprayToWorld",
          "description": "Balance traffic across all backends across the world proportionally based on capacity.",
          "value": "SPRAY_TO_WORLD"
        },
        {
          "name": "SprayToRegion",
          "description": "Direct traffic to the nearest region with endpoints and capacity before spilling over to other regions and spread the traffic from each client to all the MIGs/NEGs in a region.",
          "value": "SPRAY_TO_REGION"
        },
        {
          "name": "WaterfallByRegion",
          "description": "Direct traffic to the nearest region with endpoints and capacity before spilling over to other regions. All MIGs/NEGs within a region are evenly loaded but each client might not spread the traffic to all the MIGs/NEGs in the region.",
          "value": "WATERFALL_BY_REGION"
        },
        {
          "name": "WaterfallByZone",
          "description": "Attempt to keep traffic in a single zone closest to the client, before spilling over to other zones.",
          "value": "WATERFALL_BY_ZONE"
        }
      ]
    },
    "google-native:networkservices/v1beta1:TcpRouteRouteAction": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteDestination"
          },
          "description": "Optional. The destination services to which traffic should be forwarded. At least one destination service is required. Only one of route destination or original destination can be set."
        },
        "originalDestination": {
          "type": "boolean",
          "description": "Optional. If true, Router will use the destination IP and port of the original connection as the destination of the request. Default is false. Only one of route destinations or original destination can be set."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:TcpRouteRouteActionResponse": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteDestinationResponse"
          },
          "description": "Optional. The destination services to which traffic should be forwarded. At least one destination service is required. Only one of route destination or original destination can be set."
        },
        "originalDestination": {
          "type": "boolean",
          "description": "Optional. If true, Router will use the destination IP and port of the original connection as the destination of the request. Default is false. Only one of route destinations or original destination can be set."
        }
      },
      "type": "object",
      "required": [
        "destinations",
        "originalDestination"
      ]
    },
    "google-native:networkservices/v1beta1:TcpRouteRouteDestination": {
      "description": "Describe the destination for traffic to be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName"
      ]
    },
    "google-native:networkservices/v1beta1:TcpRouteRouteDestinationResponse": {
      "description": "Describe the destination for traffic to be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them."
        }
      },
      "type": "object",
      "required": [
        "serviceName",
        "weight"
      ]
    },
    "google-native:networkservices/v1beta1:TcpRouteRouteMatch": {
      "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Must be specified in the CIDR range format. A CIDR range consists of an IP Address and a prefix length to construct the subnet mask. By default, the prefix length is 32 (i.e. matches a single IP address). Only IPV4 addresses are supported. Examples: \"10.0.0.1\" - matches against this exact IP address. \"10.0.0.0/8\" - matches against any IP address within the 10.0.0.0 subnet and 255.255.255.0 mask. \"0.0.0.0/0\" - matches against any IP address'."
        },
        "port": {
          "type": "string",
          "description": "Specifies the destination port to match against."
        }
      },
      "type": "object",
      "required": [
        "address",
        "port"
      ]
    },
    "google-native:networkservices/v1beta1:TcpRouteRouteMatchResponse": {
      "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Must be specified in the CIDR range format. A CIDR range consists of an IP Address and a prefix length to construct the subnet mask. By default, the prefix length is 32 (i.e. matches a single IP address). Only IPV4 addresses are supported. Examples: \"10.0.0.1\" - matches against this exact IP address. \"10.0.0.0/8\" - matches against any IP address within the 10.0.0.0 subnet and 255.255.255.0 mask. \"0.0.0.0/0\" - matches against any IP address'."
        },
        "port": {
          "type": "string",
          "description": "Specifies the destination port to match against."
        }
      },
      "type": "object",
      "required": [
        "address",
        "port"
      ]
    },
    "google-native:networkservices/v1beta1:TcpRouteRouteRule": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteAction",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteMatch"
          },
          "description": "Optional. RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic."
        }
      },
      "type": "object",
      "required": [
        "action"
      ]
    },
    "google-native:networkservices/v1beta1:TcpRouteRouteRuleResponse": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteActionResponse",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteMatchResponse"
          },
          "description": "Optional. RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1beta1:TlsRouteRouteAction": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteDestination"
          },
          "description": "The destination services to which traffic should be forwarded. At least one destination service is required."
        }
      },
      "type": "object",
      "required": [
        "destinations"
      ]
    },
    "google-native:networkservices/v1beta1:TlsRouteRouteActionResponse": {
      "description": "The specifications for routing traffic and applying associated policies.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteDestinationResponse"
          },
          "description": "The destination services to which traffic should be forwarded. At least one destination service is required."
        }
      },
      "type": "object",
      "required": [
        "destinations"
      ]
    },
    "google-native:networkservices/v1beta1:TlsRouteRouteDestination": {
      "description": "Describe the destination for traffic to be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwareded to the backend referenced by the service_name field. This is computed as: - weight/Sum(weights in destinations) Weights in all destinations does not need to sum up to 100."
        }
      },
      "type": "object",
      "required": [
        "serviceName"
      ]
    },
    "google-native:networkservices/v1beta1:TlsRouteRouteDestinationResponse": {
      "description": "Describe the destination for traffic to be routed to.",
      "properties": {
        "serviceName": {
          "type": "string",
          "description": "The URL of a BackendService to route traffic to."
        },
        "weight": {
          "type": "integer",
          "description": "Optional. Specifies the proportion of requests forwareded to the backend referenced by the service_name field. This is computed as: - weight/Sum(weights in destinations) Weights in all destinations does not need to sum up to 100."
        }
      },
      "type": "object",
      "required": [
        "serviceName",
        "weight"
      ]
    },
    "google-native:networkservices/v1beta1:TlsRouteRouteMatch": {
      "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"AND\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
      "properties": {
        "alpn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. ALPN (Application-Layer Protocol Negotiation) to match against. Examples: \"http/1.1\", \"h2\". At least one of sni_host and alpn is required. Up to 5 alpns across all matches can be set."
        },
        "sniHost": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. SNI (server name indicator) to match against. SNI will be matched against all wildcard domains, i.e. `www.example.com` will be first matched against `www.example.com`, then `*.example.com`, then `*.com.` Partial wildcards are not supported, and values like *w.example.com are invalid. At least one of sni_host and alpn is required. Up to 5 sni hosts across all matches can be set."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:TlsRouteRouteMatchResponse": {
      "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"AND\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
      "properties": {
        "alpn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. ALPN (Application-Layer Protocol Negotiation) to match against. Examples: \"http/1.1\", \"h2\". At least one of sni_host and alpn is required. Up to 5 alpns across all matches can be set."
        },
        "sniHost": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. SNI (server name indicator) to match against. SNI will be matched against all wildcard domains, i.e. `www.example.com` will be first matched against `www.example.com`, then `*.example.com`, then `*.com.` Partial wildcards are not supported, and values like *w.example.com are invalid. At least one of sni_host and alpn is required. Up to 5 sni hosts across all matches can be set."
        }
      },
      "type": "object",
      "required": [
        "alpn",
        "sniHost"
      ]
    },
    "google-native:networkservices/v1beta1:TlsRouteRouteRule": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteAction",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteMatch"
          },
          "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1beta1:TlsRouteRouteRuleResponse": {
      "description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteActionResponse",
          "description": "The detailed rule defining how to route matched traffic."
        },
        "matches": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteMatchResponse"
          },
          "description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation."
        }
      },
      "type": "object",
      "required": [
        "action",
        "matches"
      ]
    },
    "google-native:networkservices/v1beta1:TrafficPortSelector": {
      "description": "Specification of a port-based selector.",
      "properties": {
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of ports. Can be port numbers or port range (example, [80-90] specifies all ports from 80 to 90, including 80 and 90) or named ports or * to specify all ports. If the list is empty, all ports are selected."
        }
      },
      "type": "object"
    },
    "google-native:networkservices/v1beta1:TrafficPortSelectorResponse": {
      "description": "Specification of a port-based selector.",
      "properties": {
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of ports. Can be port numbers or port range (example, [80-90] specifies all ports from 80 to 90, including 80 and 90) or named ports or * to specify all ports. If the list is empty, all ports are selected."
        }
      },
      "type": "object",
      "required": [
        "ports"
      ]
    },
    "google-native:notebooks/v1:AcceleratorConfig": {
      "description": "Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. See [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus/#gpus-list) to find a valid combination. TPUs are not supported.",
      "properties": {
        "coreCount": {
          "type": "string",
          "description": "Count of cores of this accelerator."
        },
        "type": {
          "$ref": "#/types/google-native:notebooks%2Fv1:AcceleratorConfigType",
          "description": "Type of this accelerator."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:AcceleratorConfigResponse": {
      "description": "Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. See [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus/#gpus-list) to find a valid combination. TPUs are not supported.",
      "properties": {
        "coreCount": {
          "type": "string",
          "description": "Count of cores of this accelerator."
        },
        "type": {
          "type": "string",
          "description": "Type of this accelerator."
        }
      },
      "type": "object",
      "required": [
        "coreCount",
        "type"
      ]
    },
    "google-native:notebooks/v1:AcceleratorConfigType": {
      "description": "Type of this accelerator.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorTypeUnspecified",
          "description": "Accelerator type is not specified.",
          "value": "ACCELERATOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "NvidiaTeslaK80",
          "description": "Accelerator type is Nvidia Tesla K80.",
          "value": "NVIDIA_TESLA_K80"
        },
        {
          "name": "NvidiaTeslaP100",
          "description": "Accelerator type is Nvidia Tesla P100.",
          "value": "NVIDIA_TESLA_P100"
        },
        {
          "name": "NvidiaTeslaV100",
          "description": "Accelerator type is Nvidia Tesla V100.",
          "value": "NVIDIA_TESLA_V100"
        },
        {
          "name": "NvidiaTeslaP4",
          "description": "Accelerator type is Nvidia Tesla P4.",
          "value": "NVIDIA_TESLA_P4"
        },
        {
          "name": "NvidiaTeslaT4",
          "description": "Accelerator type is Nvidia Tesla T4.",
          "value": "NVIDIA_TESLA_T4"
        },
        {
          "name": "NvidiaTeslaA100",
          "description": "Accelerator type is Nvidia Tesla A100.",
          "value": "NVIDIA_TESLA_A100"
        },
        {
          "name": "NvidiaL4",
          "description": "Accelerator type is Nvidia Tesla L4.",
          "value": "NVIDIA_L4"
        },
        {
          "name": "NvidiaTeslaT4Vws",
          "description": "Accelerator type is NVIDIA Tesla T4 Virtual Workstations.",
          "value": "NVIDIA_TESLA_T4_VWS"
        },
        {
          "name": "NvidiaTeslaP100Vws",
          "description": "Accelerator type is NVIDIA Tesla P100 Virtual Workstations.",
          "value": "NVIDIA_TESLA_P100_VWS"
        },
        {
          "name": "NvidiaTeslaP4Vws",
          "description": "Accelerator type is NVIDIA Tesla P4 Virtual Workstations.",
          "value": "NVIDIA_TESLA_P4_VWS"
        },
        {
          "name": "TpuV2",
          "description": "(Coming soon) Accelerator type is TPU V2.",
          "value": "TPU_V2"
        },
        {
          "name": "TpuV3",
          "description": "(Coming soon) Accelerator type is TPU V3.",
          "value": "TPU_V3"
        }
      ]
    },
    "google-native:notebooks/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:notebooks%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:notebooks/v1:BootImage": {
      "description": "Definition of the boot image used by the Runtime. Used to facilitate runtime upgradeability.",
      "type": "object"
    },
    "google-native:notebooks/v1:BootImageResponse": {
      "description": "Definition of the boot image used by the Runtime. Used to facilitate runtime upgradeability.",
      "type": "object"
    },
    "google-native:notebooks/v1:ContainerImage": {
      "description": "Definition of a container image for starting a notebook instance with the environment installed in a container.",
      "properties": {
        "repository": {
          "type": "string",
          "description": "The path to the container image repository. For example: `gcr.io/{project_id}/{image_name}`"
        },
        "tag": {
          "type": "string",
          "description": "The tag of the container image. If not specified, this defaults to the latest tag."
        }
      },
      "type": "object",
      "required": [
        "repository"
      ]
    },
    "google-native:notebooks/v1:ContainerImageResponse": {
      "description": "Definition of a container image for starting a notebook instance with the environment installed in a container.",
      "properties": {
        "repository": {
          "type": "string",
          "description": "The path to the container image repository. For example: `gcr.io/{project_id}/{image_name}`"
        },
        "tag": {
          "type": "string",
          "description": "The tag of the container image. If not specified, this defaults to the latest tag."
        }
      },
      "type": "object",
      "required": [
        "repository",
        "tag"
      ]
    },
    "google-native:notebooks/v1:DataprocParameters": {
      "description": "Parameters used in Dataproc JobType executions.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "URI for cluster used to run Dataproc execution. Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`"
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:DataprocParametersResponse": {
      "description": "Parameters used in Dataproc JobType executions.",
      "properties": {
        "cluster": {
          "type": "string",
          "description": "URI for cluster used to run Dataproc execution. Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`"
        }
      },
      "type": "object",
      "required": [
        "cluster"
      ]
    },
    "google-native:notebooks/v1:DiskResponse": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Indicates whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Indicates a unique device name of your choice that is reflected into the `/dev/disk/by-id/google-*` tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine.This field is only applicable for persistent disks."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Indicates the size of the disk in base-2 GB."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:GuestOsFeatureResponse"
          },
          "description": "Indicates a list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "index": {
          "type": "string",
          "description": "A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number."
        },
        "interface": {
          "type": "string",
          "description": "Indicates the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance. Valid values: * `NVME` * `SCSI`"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#attachedDisk for attached disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use. A License represents billing and aggregate usage data for public and marketplace images."
        },
        "mode": {
          "type": "string",
          "description": "The mode in which to attach this disk, either `READ_WRITE` or `READ_ONLY`. If not specified, the default is to attach the disk in `READ_WRITE` mode. Valid values: * `READ_ONLY` * `READ_WRITE`"
        },
        "source": {
          "type": "string",
          "description": "Indicates a valid partial or full URL to an existing Persistent Disk resource."
        },
        "type": {
          "type": "string",
          "description": "Indicates the type of the disk, either `SCRATCH` or `PERSISTENT`. Valid values: * `PERSISTENT` * `SCRATCH`"
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "boot",
        "deviceName",
        "diskSizeGb",
        "guestOsFeatures",
        "index",
        "interface",
        "kind",
        "licenses",
        "mode",
        "source",
        "type"
      ]
    },
    "google-native:notebooks/v1:EncryptionConfig": {
      "description": "Represents a custom encryption key configuration that can be applied to a resource. This will encrypt all disks in Virtual Machine.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The Cloud KMS resource identifier of the customer-managed encryption key used to protect a resource, such as a disks. It has the following format: `projects/{PROJECT_ID}/locations/{REGION}/keyRings/{KEY_RING_NAME}/cryptoKeys/{KEY_NAME}`"
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:EncryptionConfigResponse": {
      "description": "Represents a custom encryption key configuration that can be applied to a resource. This will encrypt all disks in Virtual Machine.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The Cloud KMS resource identifier of the customer-managed encryption key used to protect a resource, such as a disks. It has the following format: `projects/{PROJECT_ID}/locations/{REGION}/keyRings/{KEY_RING_NAME}/cryptoKeys/{KEY_NAME}`"
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:notebooks/v1:ExecutionResponse": {
      "description": "The definition of a single executed notebook.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time the Execution was instantiated."
        },
        "description": {
          "type": "string",
          "description": "A brief description of this execution."
        },
        "displayName": {
          "type": "string",
          "description": "Name used for UI purposes. Name can only contain alphanumeric characters and underscores '_'."
        },
        "executionTemplate": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplateResponse",
          "description": "execute metadata including name, hardware spec, region, labels, etc."
        },
        "jobUri": {
          "type": "string",
          "description": "The URI of the external job used to execute the notebook."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the execute. Format: `projects/{project_id}/locations/{location}/executions/{execution_id}`"
        },
        "outputNotebookFile": {
          "type": "string",
          "description": "Output notebook file generated by this execution"
        },
        "state": {
          "type": "string",
          "description": "State of the underlying AI Platform job."
        },
        "updateTime": {
          "type": "string",
          "description": "Time the Execution was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "executionTemplate",
        "jobUri",
        "name",
        "outputNotebookFile",
        "state",
        "updateTime"
      ]
    },
    "google-native:notebooks/v1:ExecutionTemplate": {
      "description": "The description a notebook execution workload.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:SchedulerAcceleratorConfig",
          "description": "Configuration (count and accelerator type) for hardware running notebook execution."
        },
        "containerImageUri": {
          "type": "string",
          "description": "Container Image URI to a DLVM Example: 'gcr.io/deeplearning-platform-release/base-cu100' More examples can be found at: https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container"
        },
        "dataprocParameters": {
          "$ref": "#/types/google-native:notebooks%2Fv1:DataprocParameters",
          "description": "Parameters used in Dataproc JobType executions."
        },
        "inputNotebookFile": {
          "type": "string",
          "description": "Path to the notebook file to execute. Must be in a Google Cloud Storage bucket. Format: `gs://{bucket_name}/{folder}/{notebook_file_name}` Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`"
        },
        "jobType": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplateJobType",
          "description": "The type of Job to be used on this execution."
        },
        "kernelSpec": {
          "type": "string",
          "description": "Name of the kernel spec to use. This must be specified if the kernel spec name on the execution target does not match the name in the input notebook file."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for execution. If execution is scheduled, a field included will be 'nbs-scheduled'. Otherwise, it is an immediate execution, and an included field will be 'nbs-immediate'. Use fields to efficiently index between various types of executions."
        },
        "masterType": {
          "type": "string",
          "description": "Specifies the type of virtual machine to use for your training job's master worker. You must specify this field when `scaleTier` is set to `CUSTOM`. You can use certain Compute Engine machine types directly in this field. The following types are supported: - `n1-standard-4` - `n1-standard-8` - `n1-standard-16` - `n1-standard-32` - `n1-standard-64` - `n1-standard-96` - `n1-highmem-2` - `n1-highmem-4` - `n1-highmem-8` - `n1-highmem-16` - `n1-highmem-32` - `n1-highmem-64` - `n1-highmem-96` - `n1-highcpu-16` - `n1-highcpu-32` - `n1-highcpu-64` - `n1-highcpu-96` Alternatively, you can use the following legacy machine types: - `standard` - `large_model` - `complex_model_s` - `complex_model_m` - `complex_model_l` - `standard_gpu` - `complex_model_m_gpu` - `complex_model_l_gpu` - `standard_p100` - `complex_model_m_p100` - `standard_v100` - `large_model_v100` - `complex_model_m_v100` - `complex_model_l_v100` Finally, if you want to use a TPU for training, specify `cloud_tpu` in this field. Learn more about the [special configuration options for training with TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine)."
        },
        "outputNotebookFolder": {
          "type": "string",
          "description": "Path to the notebook folder to write to. Must be in a Google Cloud Storage bucket path. Format: `gs://{bucket_name}/{folder}` Ex: `gs://notebook_user/scheduled_notebooks`"
        },
        "parameters": {
          "type": "string",
          "description": "Parameters used within the 'input_notebook_file' notebook."
        },
        "paramsYamlFile": {
          "type": "string",
          "description": "Parameters to be overridden in the notebook during execution. Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on how to specifying parameters in the input notebook and pass them here in an YAML file. Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`"
        },
        "scaleTier": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplateScaleTier",
          "description": "Scale tier of the hardware used for notebook execution. DEPRECATED Will be discontinued. As right now only CUSTOM is supported.",
          "deprecationMessage": "Required. Scale tier of the hardware used for notebook execution. DEPRECATED Will be discontinued. As right now only CUSTOM is supported."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The email address of a service account to use when running the execution. You must have the `iam.serviceAccounts.actAs` permission for the specified service account."
        },
        "tensorboard": {
          "type": "string",
          "description": "The name of a Vertex AI [Tensorboard] resource to which this execution will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`"
        },
        "vertexAiParameters": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VertexAIParameters",
          "description": "Parameters used in Vertex AI JobType executions."
        }
      },
      "type": "object",
      "required": [
        "scaleTier"
      ]
    },
    "google-native:notebooks/v1:ExecutionTemplateJobType": {
      "description": "The type of Job to be used on this execution.",
      "type": "string",
      "enum": [
        {
          "name": "JobTypeUnspecified",
          "description": "No type specified.",
          "value": "JOB_TYPE_UNSPECIFIED"
        },
        {
          "name": "VertexAi",
          "description": "Custom Job in `aiplatform.googleapis.com`. Default value for an execution.",
          "value": "VERTEX_AI"
        },
        {
          "name": "Dataproc",
          "description": "Run execution on a cluster with Dataproc as a job. https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs",
          "value": "DATAPROC"
        }
      ]
    },
    "google-native:notebooks/v1:ExecutionTemplateResponse": {
      "description": "The description a notebook execution workload.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:SchedulerAcceleratorConfigResponse",
          "description": "Configuration (count and accelerator type) for hardware running notebook execution."
        },
        "containerImageUri": {
          "type": "string",
          "description": "Container Image URI to a DLVM Example: 'gcr.io/deeplearning-platform-release/base-cu100' More examples can be found at: https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container"
        },
        "dataprocParameters": {
          "$ref": "#/types/google-native:notebooks%2Fv1:DataprocParametersResponse",
          "description": "Parameters used in Dataproc JobType executions."
        },
        "inputNotebookFile": {
          "type": "string",
          "description": "Path to the notebook file to execute. Must be in a Google Cloud Storage bucket. Format: `gs://{bucket_name}/{folder}/{notebook_file_name}` Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`"
        },
        "jobType": {
          "type": "string",
          "description": "The type of Job to be used on this execution."
        },
        "kernelSpec": {
          "type": "string",
          "description": "Name of the kernel spec to use. This must be specified if the kernel spec name on the execution target does not match the name in the input notebook file."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for execution. If execution is scheduled, a field included will be 'nbs-scheduled'. Otherwise, it is an immediate execution, and an included field will be 'nbs-immediate'. Use fields to efficiently index between various types of executions."
        },
        "masterType": {
          "type": "string",
          "description": "Specifies the type of virtual machine to use for your training job's master worker. You must specify this field when `scaleTier` is set to `CUSTOM`. You can use certain Compute Engine machine types directly in this field. The following types are supported: - `n1-standard-4` - `n1-standard-8` - `n1-standard-16` - `n1-standard-32` - `n1-standard-64` - `n1-standard-96` - `n1-highmem-2` - `n1-highmem-4` - `n1-highmem-8` - `n1-highmem-16` - `n1-highmem-32` - `n1-highmem-64` - `n1-highmem-96` - `n1-highcpu-16` - `n1-highcpu-32` - `n1-highcpu-64` - `n1-highcpu-96` Alternatively, you can use the following legacy machine types: - `standard` - `large_model` - `complex_model_s` - `complex_model_m` - `complex_model_l` - `standard_gpu` - `complex_model_m_gpu` - `complex_model_l_gpu` - `standard_p100` - `complex_model_m_p100` - `standard_v100` - `large_model_v100` - `complex_model_m_v100` - `complex_model_l_v100` Finally, if you want to use a TPU for training, specify `cloud_tpu` in this field. Learn more about the [special configuration options for training with TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine)."
        },
        "outputNotebookFolder": {
          "type": "string",
          "description": "Path to the notebook folder to write to. Must be in a Google Cloud Storage bucket path. Format: `gs://{bucket_name}/{folder}` Ex: `gs://notebook_user/scheduled_notebooks`"
        },
        "parameters": {
          "type": "string",
          "description": "Parameters used within the 'input_notebook_file' notebook."
        },
        "paramsYamlFile": {
          "type": "string",
          "description": "Parameters to be overridden in the notebook during execution. Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on how to specifying parameters in the input notebook and pass them here in an YAML file. Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`"
        },
        "scaleTier": {
          "type": "string",
          "description": "Scale tier of the hardware used for notebook execution. DEPRECATED Will be discontinued. As right now only CUSTOM is supported.",
          "deprecationMessage": "Required. Scale tier of the hardware used for notebook execution. DEPRECATED Will be discontinued. As right now only CUSTOM is supported."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The email address of a service account to use when running the execution. You must have the `iam.serviceAccounts.actAs` permission for the specified service account."
        },
        "tensorboard": {
          "type": "string",
          "description": "The name of a Vertex AI [Tensorboard] resource to which this execution will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`"
        },
        "vertexAiParameters": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VertexAIParametersResponse",
          "description": "Parameters used in Vertex AI JobType executions."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "containerImageUri",
        "dataprocParameters",
        "inputNotebookFile",
        "jobType",
        "kernelSpec",
        "labels",
        "masterType",
        "outputNotebookFolder",
        "parameters",
        "paramsYamlFile",
        "scaleTier",
        "serviceAccount",
        "tensorboard",
        "vertexAiParameters"
      ]
    },
    "google-native:notebooks/v1:ExecutionTemplateScaleTier": {
      "description": "Required. Scale tier of the hardware used for notebook execution. DEPRECATED Will be discontinued. As right now only CUSTOM is supported.",
      "type": "string",
      "enum": [
        {
          "name": "ScaleTierUnspecified",
          "description": "Unspecified Scale Tier.",
          "value": "SCALE_TIER_UNSPECIFIED"
        },
        {
          "name": "Basic",
          "description": "A single worker instance. This tier is suitable for learning how to use Cloud ML, and for experimenting with new models using small datasets.",
          "value": "BASIC"
        },
        {
          "name": "Standard1",
          "description": "Many workers and a few parameter servers.",
          "value": "STANDARD_1"
        },
        {
          "name": "Premium1",
          "description": "A large number of workers with many parameter servers.",
          "value": "PREMIUM_1"
        },
        {
          "name": "BasicGpu",
          "description": "A single worker instance with a K80 GPU.",
          "value": "BASIC_GPU"
        },
        {
          "name": "BasicTpu",
          "description": "A single worker instance with a Cloud TPU.",
          "value": "BASIC_TPU"
        },
        {
          "name": "Custom",
          "description": "The CUSTOM tier is not a set tier, but rather enables you to use your own cluster specification. When you use this tier, set values to configure your processing cluster according to these guidelines: * You _must_ set `ExecutionTemplate.masterType` to specify the type of machine to use for your master node. This is the only required setting.",
          "value": "CUSTOM"
        }
      ]
    },
    "google-native:notebooks/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:notebooks/v1:GuestOsFeatureResponse": {
      "description": "Guest OS features for boot disk.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The ID of a supported feature. Read Enabling guest operating system features to see a list of available options. Valid values: * `FEATURE_TYPE_UNSPECIFIED` * `MULTI_IP_SUBNET` * `SECURE_BOOT` * `UEFI_COMPATIBLE` * `VIRTIO_SCSI_MULTIQUEUE` * `WINDOWS`"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:notebooks/v1:InstanceBootDiskType": {
      "description": "Input only. The type of the boot disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`).",
      "type": "string",
      "enum": [
        {
          "name": "DiskTypeUnspecified",
          "description": "Disk type not set.",
          "value": "DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdStandard",
          "description": "Standard persistent disk type.",
          "value": "PD_STANDARD"
        },
        {
          "name": "PdSsd",
          "description": "SSD persistent disk type.",
          "value": "PD_SSD"
        },
        {
          "name": "PdBalanced",
          "description": "Balanced persistent disk type.",
          "value": "PD_BALANCED"
        },
        {
          "name": "PdExtreme",
          "description": "Extreme persistent disk type.",
          "value": "PD_EXTREME"
        }
      ]
    },
    "google-native:notebooks/v1:InstanceDataDiskType": {
      "description": "Input only. The type of the data disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`).",
      "type": "string",
      "enum": [
        {
          "name": "DiskTypeUnspecified",
          "description": "Disk type not set.",
          "value": "DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdStandard",
          "description": "Standard persistent disk type.",
          "value": "PD_STANDARD"
        },
        {
          "name": "PdSsd",
          "description": "SSD persistent disk type.",
          "value": "PD_SSD"
        },
        {
          "name": "PdBalanced",
          "description": "Balanced persistent disk type.",
          "value": "PD_BALANCED"
        },
        {
          "name": "PdExtreme",
          "description": "Extreme persistent disk type.",
          "value": "PD_EXTREME"
        }
      ]
    },
    "google-native:notebooks/v1:InstanceDiskEncryption": {
      "description": "Input only. Disk encryption method used on the boot and data disks, defaults to GMEK.",
      "type": "string",
      "enum": [
        {
          "name": "DiskEncryptionUnspecified",
          "description": "Disk encryption is not specified.",
          "value": "DISK_ENCRYPTION_UNSPECIFIED"
        },
        {
          "name": "Gmek",
          "description": "Use Google managed encryption keys to encrypt the boot disk.",
          "value": "GMEK"
        },
        {
          "name": "Cmek",
          "description": "Use customer managed encryption keys to encrypt the boot disk.",
          "value": "CMEK"
        }
      ]
    },
    "google-native:notebooks/v1:InstanceMigrationEligibilityResponse": {
      "description": "InstanceMigrationEligibility represents the feasibility information of a migration from UmN to WbI.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Certain configurations make the UmN ineligible for an automatic migration. A manual migration is required."
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Certain configurations will be defaulted during the migration."
        }
      },
      "type": "object",
      "required": [
        "errors",
        "warnings"
      ]
    },
    "google-native:notebooks/v1:InstanceNicType": {
      "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedNicType",
          "description": "No type specified.",
          "value": "UNSPECIFIED_NIC_TYPE"
        },
        {
          "name": "VirtioNet",
          "description": "VIRTIO",
          "value": "VIRTIO_NET"
        },
        {
          "name": "Gvnic",
          "description": "GVNIC",
          "value": "GVNIC"
        }
      ]
    },
    "google-native:notebooks/v1:LocalDisk": {
      "description": "A Local attached disk resource.",
      "properties": {
        "initializeParams": {
          "$ref": "#/types/google-native:notebooks%2Fv1:LocalDiskInitializeParams",
          "description": "Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance. Valid values: * `NVME` * `SCSI`"
        },
        "mode": {
          "type": "string",
          "description": "The mode in which to attach this disk, either `READ_WRITE` or `READ_ONLY`. If not specified, the default is to attach the disk in `READ_WRITE` mode. Valid values: * `READ_ONLY` * `READ_WRITE`"
        },
        "source": {
          "type": "string",
          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the disk, either `SCRATCH` or `PERSISTENT`. If not specified, the default is `PERSISTENT`. Valid values: * `PERSISTENT` * `SCRATCH`"
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:LocalDiskInitializeParams": {
      "description": "Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new runtime. This property is mutually exclusive with the source property; you can only define one or the other, but not both.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Provide this property when creating the disk."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. Specifies the disk name. If not specified, the default is to use the name of the instance. If the disk with the instance name exists already in the given zone/region, a new name will be automatically generated."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Optional. Specifies the size of the disk in base-2 GB. If not specified, the disk will be the same size as the image (usually 10GB). If specified, the size must be equal to or larger than 10GB. Default 100 GB."
        },
        "diskType": {
          "$ref": "#/types/google-native:notebooks%2Fv1:LocalDiskInitializeParamsDiskType",
          "description": "Input only. The type of the boot disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:LocalDiskInitializeParamsDiskType": {
      "description": "Input only. The type of the boot disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`).",
      "type": "string",
      "enum": [
        {
          "name": "DiskTypeUnspecified",
          "description": "Disk type not set.",
          "value": "DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdStandard",
          "description": "Standard persistent disk type.",
          "value": "PD_STANDARD"
        },
        {
          "name": "PdSsd",
          "description": "SSD persistent disk type.",
          "value": "PD_SSD"
        },
        {
          "name": "PdBalanced",
          "description": "Balanced persistent disk type.",
          "value": "PD_BALANCED"
        },
        {
          "name": "PdExtreme",
          "description": "Extreme persistent disk type.",
          "value": "PD_EXTREME"
        }
      ]
    },
    "google-native:notebooks/v1:LocalDiskInitializeParamsResponse": {
      "description": "Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new runtime. This property is mutually exclusive with the source property; you can only define one or the other, but not both.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Provide this property when creating the disk."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. Specifies the disk name. If not specified, the default is to use the name of the instance. If the disk with the instance name exists already in the given zone/region, a new name will be automatically generated."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Optional. Specifies the size of the disk in base-2 GB. If not specified, the disk will be the same size as the image (usually 10GB). If specified, the size must be equal to or larger than 10GB. Default 100 GB."
        },
        "diskType": {
          "type": "string",
          "description": "Input only. The type of the boot disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks."
        }
      },
      "type": "object",
      "required": [
        "description",
        "diskName",
        "diskSizeGb",
        "diskType",
        "labels"
      ]
    },
    "google-native:notebooks/v1:LocalDiskResponse": {
      "description": "A Local attached disk resource.",
      "properties": {
        "autoDelete": {
          "type": "boolean",
          "description": "Optional. Output only. Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
        },
        "boot": {
          "type": "boolean",
          "description": "Optional. Output only. Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
        },
        "deviceName": {
          "type": "string",
          "description": "Optional. Output only. Specifies a unique device name of your choice that is reflected into the `/dev/disk/by-id/google-*` tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeGuestOsFeatureResponse"
          },
          "description": "Indicates a list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "index": {
          "type": "integer",
          "description": "A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number."
        },
        "initializeParams": {
          "$ref": "#/types/google-native:notebooks%2Fv1:LocalDiskInitializeParamsResponse",
          "description": "Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both."
        },
        "interface": {
          "type": "string",
          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance. Valid values: * `NVME` * `SCSI`"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#attachedDisk for attached disks."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any valid publicly visible licenses."
        },
        "mode": {
          "type": "string",
          "description": "The mode in which to attach this disk, either `READ_WRITE` or `READ_ONLY`. If not specified, the default is to attach the disk in `READ_WRITE` mode. Valid values: * `READ_ONLY` * `READ_WRITE`"
        },
        "source": {
          "type": "string",
          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the disk, either `SCRATCH` or `PERSISTENT`. If not specified, the default is `PERSISTENT`. Valid values: * `PERSISTENT` * `SCRATCH`"
        }
      },
      "type": "object",
      "required": [
        "autoDelete",
        "boot",
        "deviceName",
        "guestOsFeatures",
        "index",
        "initializeParams",
        "interface",
        "kind",
        "licenses",
        "mode",
        "source",
        "type"
      ]
    },
    "google-native:notebooks/v1:ReservationAffinity": {
      "description": "Reservation Affinity for consuming Zonal reservation.",
      "properties": {
        "consumeReservationType": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ReservationAffinityConsumeReservationType",
          "description": "Optional. Type of reservation to consume"
        },
        "key": {
          "type": "string",
          "description": "Optional. Corresponds to the label key of reservation resource."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Corresponds to the label values of reservation resource."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:ReservationAffinityConsumeReservationType": {
      "description": "Optional. Type of reservation to consume",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default type.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "NoReservation",
          "description": "Do not consume from any allocated capacity.",
          "value": "NO_RESERVATION"
        },
        {
          "name": "AnyReservation",
          "description": "Consume any reservation available.",
          "value": "ANY_RESERVATION"
        },
        {
          "name": "SpecificReservation",
          "description": "Must consume from a specific reservation. Must specify key value fields for specifying the reservations.",
          "value": "SPECIFIC_RESERVATION"
        }
      ]
    },
    "google-native:notebooks/v1:ReservationAffinityResponse": {
      "description": "Reservation Affinity for consuming Zonal reservation.",
      "properties": {
        "consumeReservationType": {
          "type": "string",
          "description": "Optional. Type of reservation to consume"
        },
        "key": {
          "type": "string",
          "description": "Optional. Corresponds to the label key of reservation resource."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Corresponds to the label values of reservation resource."
        }
      },
      "type": "object",
      "required": [
        "consumeReservationType",
        "key",
        "values"
      ]
    },
    "google-native:notebooks/v1:RuntimeAcceleratorConfig": {
      "description": "Definition of the types of hardware accelerators that can be used. See [Compute Engine AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). Examples: * `nvidia-tesla-k80` * `nvidia-tesla-p100` * `nvidia-tesla-v100` * `nvidia-tesla-p4` * `nvidia-tesla-t4` * `nvidia-tesla-a100`",
      "properties": {
        "coreCount": {
          "type": "string",
          "description": "Count of cores of this accelerator."
        },
        "type": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeAcceleratorConfigType",
          "description": "Accelerator model."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:RuntimeAcceleratorConfigResponse": {
      "description": "Definition of the types of hardware accelerators that can be used. See [Compute Engine AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). Examples: * `nvidia-tesla-k80` * `nvidia-tesla-p100` * `nvidia-tesla-v100` * `nvidia-tesla-p4` * `nvidia-tesla-t4` * `nvidia-tesla-a100`",
      "properties": {
        "coreCount": {
          "type": "string",
          "description": "Count of cores of this accelerator."
        },
        "type": {
          "type": "string",
          "description": "Accelerator model."
        }
      },
      "type": "object",
      "required": [
        "coreCount",
        "type"
      ]
    },
    "google-native:notebooks/v1:RuntimeAcceleratorConfigType": {
      "description": "Accelerator model.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorTypeUnspecified",
          "description": "Accelerator type is not specified.",
          "value": "ACCELERATOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "NvidiaTeslaK80",
          "description": "Accelerator type is Nvidia Tesla K80.",
          "value": "NVIDIA_TESLA_K80"
        },
        {
          "name": "NvidiaTeslaP100",
          "description": "Accelerator type is Nvidia Tesla P100.",
          "value": "NVIDIA_TESLA_P100"
        },
        {
          "name": "NvidiaTeslaV100",
          "description": "Accelerator type is Nvidia Tesla V100.",
          "value": "NVIDIA_TESLA_V100"
        },
        {
          "name": "NvidiaTeslaP4",
          "description": "Accelerator type is Nvidia Tesla P4.",
          "value": "NVIDIA_TESLA_P4"
        },
        {
          "name": "NvidiaTeslaT4",
          "description": "Accelerator type is Nvidia Tesla T4.",
          "value": "NVIDIA_TESLA_T4"
        },
        {
          "name": "NvidiaTeslaA100",
          "description": "Accelerator type is Nvidia Tesla A100 - 40GB.",
          "value": "NVIDIA_TESLA_A100"
        },
        {
          "name": "NvidiaL4",
          "description": "Accelerator type is Nvidia L4.",
          "value": "NVIDIA_L4"
        },
        {
          "name": "TpuV2",
          "description": "(Coming soon) Accelerator type is TPU V2.",
          "value": "TPU_V2"
        },
        {
          "name": "TpuV3",
          "description": "(Coming soon) Accelerator type is TPU V3.",
          "value": "TPU_V3"
        },
        {
          "name": "NvidiaTeslaT4Vws",
          "description": "Accelerator type is NVIDIA Tesla T4 Virtual Workstations.",
          "value": "NVIDIA_TESLA_T4_VWS"
        },
        {
          "name": "NvidiaTeslaP100Vws",
          "description": "Accelerator type is NVIDIA Tesla P100 Virtual Workstations.",
          "value": "NVIDIA_TESLA_P100_VWS"
        },
        {
          "name": "NvidiaTeslaP4Vws",
          "description": "Accelerator type is NVIDIA Tesla P4 Virtual Workstations.",
          "value": "NVIDIA_TESLA_P4_VWS"
        }
      ]
    },
    "google-native:notebooks/v1:RuntimeAccessConfig": {
      "description": "Specifies the login configuration for Runtime",
      "properties": {
        "accessType": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeAccessConfigAccessType",
          "description": "The type of access mode this instance."
        },
        "runtimeOwner": {
          "type": "string",
          "description": "The owner of this runtime after creation. Format: `alias@example.com` Currently supports one owner only."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:RuntimeAccessConfigAccessType": {
      "description": "The type of access mode this instance.",
      "type": "string",
      "enum": [
        {
          "name": "RuntimeAccessTypeUnspecified",
          "description": "Unspecified access.",
          "value": "RUNTIME_ACCESS_TYPE_UNSPECIFIED"
        },
        {
          "name": "SingleUser",
          "description": "Single user login.",
          "value": "SINGLE_USER"
        },
        {
          "name": "ServiceAccount",
          "description": "Service Account mode. In Service Account mode, Runtime creator will specify a SA that exists in the consumer project. Using Runtime Service Account field. Users accessing the Runtime need ActAs (Service Account User) permission.",
          "value": "SERVICE_ACCOUNT"
        }
      ]
    },
    "google-native:notebooks/v1:RuntimeAccessConfigResponse": {
      "description": "Specifies the login configuration for Runtime",
      "properties": {
        "accessType": {
          "type": "string",
          "description": "The type of access mode this instance."
        },
        "proxyUri": {
          "type": "string",
          "description": "The proxy endpoint that is used to access the runtime."
        },
        "runtimeOwner": {
          "type": "string",
          "description": "The owner of this runtime after creation. Format: `alias@example.com` Currently supports one owner only."
        }
      },
      "type": "object",
      "required": [
        "accessType",
        "proxyUri",
        "runtimeOwner"
      ]
    },
    "google-native:notebooks/v1:RuntimeGuestOsFeatureResponse": {
      "description": "Optional. 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. Guest OS features for boot disk.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The ID of a 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. Valid values: * `FEATURE_TYPE_UNSPECIFIED` * `MULTI_IP_SUBNET` * `SECURE_BOOT` * `UEFI_COMPATIBLE` * `VIRTIO_SCSI_MULTIQUEUE` * `WINDOWS`"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "google-native:notebooks/v1:RuntimeMetricsResponse": {
      "description": "Contains runtime daemon metrics, such as OS and kernels and sessions stats.",
      "properties": {
        "systemMetrics": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The system metrics."
        }
      },
      "type": "object",
      "required": [
        "systemMetrics"
      ]
    },
    "google-native:notebooks/v1:RuntimeMigrationEligibilityResponse": {
      "description": "RuntimeMigrationEligibility represents the feasibility information of a migration from GmN to WbI.",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Certain configurations make the GmN ineligible for an automatic migration. A manual migration is required."
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Certain configurations will be defaulted during the migration."
        }
      },
      "type": "object",
      "required": [
        "errors",
        "warnings"
      ]
    },
    "google-native:notebooks/v1:RuntimeShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options. See [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:RuntimeShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options. See [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:notebooks/v1:RuntimeSoftwareConfig": {
      "description": "Specifies the selection and configuration of software inside the runtime. The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * `idle_shutdown: true` * `idle_shutdown_timeout: 180` * `enable_health_monitoring: true`",
      "properties": {
        "customGpuDriverPath": {
          "type": "string",
          "description": "Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers."
        },
        "disableTerminal": {
          "type": "boolean",
          "description": "Bool indicating whether JupyterLab terminal will be available or not. Default: False"
        },
        "enableHealthMonitoring": {
          "type": "boolean",
          "description": "Verifies core internal services are running. Default: True"
        },
        "idleShutdown": {
          "type": "boolean",
          "description": "Runtime will automatically shutdown after idle_shutdown_time. Default: True"
        },
        "idleShutdownTimeout": {
          "type": "integer",
          "description": "Time in minutes to wait before shutting down runtime. Default: 180 minutes"
        },
        "installGpuDriver": {
          "type": "boolean",
          "description": "Install Nvidia Driver automatically. Default: True"
        },
        "kernels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImage"
          },
          "description": "Optional. Use a list of container images to use as Kernels in the notebook instance."
        },
        "mixerDisabled": {
          "type": "boolean",
          "description": "Bool indicating whether mixer client should be disabled. Default: False"
        },
        "notebookUpgradeSchedule": {
          "type": "string",
          "description": "Cron expression in UTC timezone, used to schedule instance auto upgrade. Please follow the [cron format](https://en.wikipedia.org/wiki/Cron)."
        },
        "postStartupScript": {
          "type": "string",
          "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path (`gs://path-to-file/file-name`)."
        },
        "postStartupScriptBehavior": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeSoftwareConfigPostStartupScriptBehavior",
          "description": "Behavior for the post startup script."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:RuntimeSoftwareConfigPostStartupScriptBehavior": {
      "description": "Behavior for the post startup script.",
      "type": "string",
      "enum": [
        {
          "name": "PostStartupScriptBehaviorUnspecified",
          "description": "Unspecified post startup script behavior. Will run only once at creation.",
          "value": "POST_STARTUP_SCRIPT_BEHAVIOR_UNSPECIFIED"
        },
        {
          "name": "RunEveryStart",
          "description": "Runs the post startup script provided during creation at every start.",
          "value": "RUN_EVERY_START"
        },
        {
          "name": "DownloadAndRunEveryStart",
          "description": "Downloads and runs the provided post startup script at every start.",
          "value": "DOWNLOAD_AND_RUN_EVERY_START"
        }
      ]
    },
    "google-native:notebooks/v1:RuntimeSoftwareConfigResponse": {
      "description": "Specifies the selection and configuration of software inside the runtime. The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * `idle_shutdown: true` * `idle_shutdown_timeout: 180` * `enable_health_monitoring: true`",
      "properties": {
        "customGpuDriverPath": {
          "type": "string",
          "description": "Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers."
        },
        "disableTerminal": {
          "type": "boolean",
          "description": "Bool indicating whether JupyterLab terminal will be available or not. Default: False"
        },
        "enableHealthMonitoring": {
          "type": "boolean",
          "description": "Verifies core internal services are running. Default: True"
        },
        "idleShutdown": {
          "type": "boolean",
          "description": "Runtime will automatically shutdown after idle_shutdown_time. Default: True"
        },
        "idleShutdownTimeout": {
          "type": "integer",
          "description": "Time in minutes to wait before shutting down runtime. Default: 180 minutes"
        },
        "installGpuDriver": {
          "type": "boolean",
          "description": "Install Nvidia Driver automatically. Default: True"
        },
        "kernels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImageResponse"
          },
          "description": "Optional. Use a list of container images to use as Kernels in the notebook instance."
        },
        "mixerDisabled": {
          "type": "boolean",
          "description": "Bool indicating whether mixer client should be disabled. Default: False"
        },
        "notebookUpgradeSchedule": {
          "type": "string",
          "description": "Cron expression in UTC timezone, used to schedule instance auto upgrade. Please follow the [cron format](https://en.wikipedia.org/wiki/Cron)."
        },
        "postStartupScript": {
          "type": "string",
          "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path (`gs://path-to-file/file-name`)."
        },
        "postStartupScriptBehavior": {
          "type": "string",
          "description": "Behavior for the post startup script."
        },
        "upgradeable": {
          "type": "boolean",
          "description": "Bool indicating whether an newer image is available in an image family."
        },
        "version": {
          "type": "string",
          "description": "version of boot image such as M100, from release label of the image."
        }
      },
      "type": "object",
      "required": [
        "customGpuDriverPath",
        "disableTerminal",
        "enableHealthMonitoring",
        "idleShutdown",
        "idleShutdownTimeout",
        "installGpuDriver",
        "kernels",
        "mixerDisabled",
        "notebookUpgradeSchedule",
        "postStartupScript",
        "postStartupScriptBehavior",
        "upgradeable",
        "version"
      ]
    },
    "google-native:notebooks/v1:ScheduleState": {
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Unspecified state.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "The job is executing normally.",
          "value": "ENABLED"
        },
        {
          "name": "Paused",
          "description": "The job is paused by the user. It will not execute. A user can intentionally pause the job using PauseJobRequest.",
          "value": "PAUSED"
        },
        {
          "name": "Disabled",
          "description": "The job is disabled by the system due to error. The user cannot directly set a job to be disabled.",
          "value": "DISABLED"
        },
        {
          "name": "UpdateFailed",
          "description": "The job state resulting from a failed CloudScheduler.UpdateJob operation. To recover a job from this state, retry CloudScheduler.UpdateJob until a successful response is received.",
          "value": "UPDATE_FAILED"
        },
        {
          "name": "Initializing",
          "description": "The schedule resource is being created.",
          "value": "INITIALIZING"
        },
        {
          "name": "Deleting",
          "description": "The schedule resource is being deleted.",
          "value": "DELETING"
        }
      ]
    },
    "google-native:notebooks/v1:SchedulerAcceleratorConfig": {
      "description": "Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. See [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus) to find a valid combination. TPUs are not supported.",
      "properties": {
        "coreCount": {
          "type": "string",
          "description": "Count of cores of this accelerator."
        },
        "type": {
          "$ref": "#/types/google-native:notebooks%2Fv1:SchedulerAcceleratorConfigType",
          "description": "Type of this accelerator."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:SchedulerAcceleratorConfigResponse": {
      "description": "Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. See [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus) to find a valid combination. TPUs are not supported.",
      "properties": {
        "coreCount": {
          "type": "string",
          "description": "Count of cores of this accelerator."
        },
        "type": {
          "type": "string",
          "description": "Type of this accelerator."
        }
      },
      "type": "object",
      "required": [
        "coreCount",
        "type"
      ]
    },
    "google-native:notebooks/v1:SchedulerAcceleratorConfigType": {
      "description": "Type of this accelerator.",
      "type": "string",
      "enum": [
        {
          "name": "SchedulerAcceleratorTypeUnspecified",
          "description": "Unspecified accelerator type. Default to no GPU.",
          "value": "SCHEDULER_ACCELERATOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "NvidiaTeslaK80",
          "description": "Nvidia Tesla K80 GPU.",
          "value": "NVIDIA_TESLA_K80"
        },
        {
          "name": "NvidiaTeslaP100",
          "description": "Nvidia Tesla P100 GPU.",
          "value": "NVIDIA_TESLA_P100"
        },
        {
          "name": "NvidiaTeslaV100",
          "description": "Nvidia Tesla V100 GPU.",
          "value": "NVIDIA_TESLA_V100"
        },
        {
          "name": "NvidiaTeslaP4",
          "description": "Nvidia Tesla P4 GPU.",
          "value": "NVIDIA_TESLA_P4"
        },
        {
          "name": "NvidiaTeslaT4",
          "description": "Nvidia Tesla T4 GPU.",
          "value": "NVIDIA_TESLA_T4"
        },
        {
          "name": "NvidiaTeslaA100",
          "description": "Nvidia Tesla A100 GPU.",
          "value": "NVIDIA_TESLA_A100"
        },
        {
          "name": "TpuV2",
          "description": "TPU v2.",
          "value": "TPU_V2"
        },
        {
          "name": "TpuV3",
          "description": "TPU v3.",
          "value": "TPU_V3"
        }
      ]
    },
    "google-native:notebooks/v1:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options. See [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options. See [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Defines whether the instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:notebooks/v1:UpgradeHistoryEntry": {
      "description": "The entry of VM image upgrade history.",
      "properties": {
        "action": {
          "$ref": "#/types/google-native:notebooks%2Fv1:UpgradeHistoryEntryAction",
          "description": "Action. Rolloback or Upgrade."
        },
        "containerImage": {
          "type": "string",
          "description": "The container image before this instance upgrade."
        },
        "createTime": {
          "type": "string",
          "description": "The time that this instance upgrade history entry is created."
        },
        "framework": {
          "type": "string",
          "description": "The framework of this notebook instance."
        },
        "snapshot": {
          "type": "string",
          "description": "The snapshot of the boot disk of this notebook instance before upgrade."
        },
        "state": {
          "$ref": "#/types/google-native:notebooks%2Fv1:UpgradeHistoryEntryState",
          "description": "The state of this instance upgrade history entry."
        },
        "targetImage": {
          "type": "string",
          "description": "Target VM Image. Format: `ainotebooks-vm/project/image-name/name`."
        },
        "targetVersion": {
          "type": "string",
          "description": "Target VM Version, like m63."
        },
        "version": {
          "type": "string",
          "description": "The version of the notebook instance before this upgrade."
        },
        "vmImage": {
          "type": "string",
          "description": "The VM image before this instance upgrade."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:UpgradeHistoryEntryAction": {
      "description": "Action. Rolloback or Upgrade.",
      "type": "string",
      "enum": [
        {
          "name": "ActionUnspecified",
          "description": "Operation is not specified.",
          "value": "ACTION_UNSPECIFIED"
        },
        {
          "name": "Upgrade",
          "description": "Upgrade.",
          "value": "UPGRADE"
        },
        {
          "name": "Rollback",
          "description": "Rollback.",
          "value": "ROLLBACK"
        }
      ]
    },
    "google-native:notebooks/v1:UpgradeHistoryEntryResponse": {
      "description": "The entry of VM image upgrade history.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Action. Rolloback or Upgrade."
        },
        "containerImage": {
          "type": "string",
          "description": "The container image before this instance upgrade."
        },
        "createTime": {
          "type": "string",
          "description": "The time that this instance upgrade history entry is created."
        },
        "framework": {
          "type": "string",
          "description": "The framework of this notebook instance."
        },
        "snapshot": {
          "type": "string",
          "description": "The snapshot of the boot disk of this notebook instance before upgrade."
        },
        "state": {
          "type": "string",
          "description": "The state of this instance upgrade history entry."
        },
        "targetImage": {
          "type": "string",
          "description": "Target VM Image. Format: `ainotebooks-vm/project/image-name/name`."
        },
        "targetVersion": {
          "type": "string",
          "description": "Target VM Version, like m63."
        },
        "version": {
          "type": "string",
          "description": "The version of the notebook instance before this upgrade."
        },
        "vmImage": {
          "type": "string",
          "description": "The VM image before this instance upgrade."
        }
      },
      "type": "object",
      "required": [
        "action",
        "containerImage",
        "createTime",
        "framework",
        "snapshot",
        "state",
        "targetImage",
        "targetVersion",
        "version",
        "vmImage"
      ]
    },
    "google-native:notebooks/v1:UpgradeHistoryEntryState": {
      "description": "The state of this instance upgrade history entry.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "State is not specified.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Started",
          "description": "The instance upgrade is started.",
          "value": "STARTED"
        },
        {
          "name": "Succeeded",
          "description": "The instance upgrade is succeeded.",
          "value": "SUCCEEDED"
        },
        {
          "name": "Failed",
          "description": "The instance upgrade is failed.",
          "value": "FAILED"
        }
      ]
    },
    "google-native:notebooks/v1:VertexAIParameters": {
      "description": "Parameters used in Vertex AI JobType executions.",
      "properties": {
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables. At most 100 environment variables can be specified and unique. Example: `GCP_BUCKET=gs://my-bucket/samples/`"
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is a network name. Private services access must already be configured for the network. If left unspecified, the job is not peered with any network."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:VertexAIParametersResponse": {
      "description": "Parameters used in Vertex AI JobType executions.",
      "properties": {
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables. At most 100 environment variables can be specified and unique. Example: `GCP_BUCKET=gs://my-bucket/samples/`"
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is a network name. Private services access must already be configured for the network. If left unspecified, the job is not peered with any network."
        }
      },
      "type": "object",
      "required": [
        "env",
        "network"
      ]
    },
    "google-native:notebooks/v1:VirtualMachine": {
      "description": "Runtime using Virtual Machine for computing.",
      "properties": {
        "virtualMachineConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VirtualMachineConfig",
          "description": "Virtual Machine configuration settings."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v1:VirtualMachineConfig": {
      "description": "The config settings for virtual machine.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeAcceleratorConfig",
          "description": "Optional. The Compute Engine accelerator configuration for this runtime."
        },
        "bootImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:BootImage",
          "description": "Optional. Boot image metadata used for runtime upgradeability."
        },
        "containerImages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImage"
          },
          "description": "Optional. Use a list of container images to use as Kernels in the notebook instance."
        },
        "dataDisk": {
          "$ref": "#/types/google-native:notebooks%2Fv1:LocalDisk",
          "description": "Data disk option configuration settings."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:EncryptionConfig",
          "description": "Optional. Encryption settings for virtual machine data disk."
        },
        "internalIpOnly": {
          "type": "boolean",
          "description": "Optional. If true, runtime will only have internal IP addresses. By default, runtimes are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each vm. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all dependencies must be configured to be accessible without external IP addresses."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this runtime. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster."
        },
        "machineType": {
          "type": "string",
          "description": "The Compute Engine machine type used for runtimes. Short name is valid. Examples: * `n1-standard-2` * `e2-standard-8`"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine metadata entries to add to virtual machine. (see [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata))."
        },
        "network": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork. If neither `network` nor `subnet` is specified, the \"default\" network of the project is used, if it exists. A full URL or partial URI. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/global/networks/default` * `projects/[project_id]/global/networks/default` Runtimes are managed resources inside Google Infrastructure. Runtimes support the following network configurations: * Google Managed Network (Network & subnet are empty) * Consumer Project VPC (network & subnet are required). Requires configuring Private Service Access. * Shared VPC (network & subnet are required). Requires configuring Private Service Access."
        },
        "nicType": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VirtualMachineConfigNicType",
          "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional. Reserved IP Range name is used for VPC Peering. The subnetwork allocation will use the range *name* if it's assigned. Example: managed-notebooks-range-c PEERING_RANGE_NAME_3=managed-notebooks-range-c gcloud compute addresses create $PEERING_RANGE_NAME_3 \\ --global \\ --prefix-length=24 \\ --description=\"Google Cloud Managed Notebooks Range 24 c\" \\ --network=$NETWORK \\ --addresses=192.168.0.0 \\ --purpose=VPC_PEERING Field value will be: `managed-notebooks-range-c`"
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeShieldedInstanceConfig",
          "description": "Optional. Shielded VM Instance configuration settings."
        },
        "subnet": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network. A full URL or partial URI are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0` * `projects/[project_id]/regions/us-east1/subnetworks/sub0`"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine tags to add to runtime (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        }
      },
      "type": "object",
      "required": [
        "dataDisk",
        "machineType"
      ]
    },
    "google-native:notebooks/v1:VirtualMachineConfigNicType": {
      "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedNicType",
          "description": "No type specified.",
          "value": "UNSPECIFIED_NIC_TYPE"
        },
        {
          "name": "VirtioNet",
          "description": "VIRTIO",
          "value": "VIRTIO_NET"
        },
        {
          "name": "Gvnic",
          "description": "GVNIC",
          "value": "GVNIC"
        }
      ]
    },
    "google-native:notebooks/v1:VirtualMachineConfigResponse": {
      "description": "The config settings for virtual machine.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeAcceleratorConfigResponse",
          "description": "Optional. The Compute Engine accelerator configuration for this runtime."
        },
        "bootImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:BootImageResponse",
          "description": "Optional. Boot image metadata used for runtime upgradeability."
        },
        "containerImages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImageResponse"
          },
          "description": "Optional. Use a list of container images to use as Kernels in the notebook instance."
        },
        "dataDisk": {
          "$ref": "#/types/google-native:notebooks%2Fv1:LocalDiskResponse",
          "description": "Data disk option configuration settings."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:EncryptionConfigResponse",
          "description": "Optional. Encryption settings for virtual machine data disk."
        },
        "guestAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The Compute Engine guest attributes. (see [Project and instance guest attributes](https://cloud.google.com/compute/docs/storing-retrieving-metadata#guest_attributes))."
        },
        "internalIpOnly": {
          "type": "boolean",
          "description": "Optional. If true, runtime will only have internal IP addresses. By default, runtimes are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each vm. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all dependencies must be configured to be accessible without external IP addresses."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this runtime. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster."
        },
        "machineType": {
          "type": "string",
          "description": "The Compute Engine machine type used for runtimes. Short name is valid. Examples: * `n1-standard-2` * `e2-standard-8`"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine metadata entries to add to virtual machine. (see [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata))."
        },
        "network": {
          "type": "string",
          "description": "Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork. If neither `network` nor `subnet` is specified, the \"default\" network of the project is used, if it exists. A full URL or partial URI. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/global/networks/default` * `projects/[project_id]/global/networks/default` Runtimes are managed resources inside Google Infrastructure. Runtimes support the following network configurations: * Google Managed Network (Network & subnet are empty) * Consumer Project VPC (network & subnet are required). Requires configuring Private Service Access. * Shared VPC (network & subnet are required). Requires configuring Private Service Access."
        },
        "nicType": {
          "type": "string",
          "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional. Reserved IP Range name is used for VPC Peering. The subnetwork allocation will use the range *name* if it's assigned. Example: managed-notebooks-range-c PEERING_RANGE_NAME_3=managed-notebooks-range-c gcloud compute addresses create $PEERING_RANGE_NAME_3 \\ --global \\ --prefix-length=24 \\ --description=\"Google Cloud Managed Notebooks Range 24 c\" \\ --network=$NETWORK \\ --addresses=192.168.0.0 \\ --purpose=VPC_PEERING Field value will be: `managed-notebooks-range-c`"
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeShieldedInstanceConfigResponse",
          "description": "Optional. Shielded VM Instance configuration settings."
        },
        "subnet": {
          "type": "string",
          "description": "Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network. A full URL or partial URI are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0` * `projects/[project_id]/regions/us-east1/subnetworks/sub0`"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine tags to add to runtime (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "zone": {
          "type": "string",
          "description": "The zone where the virtual machine is located. If using regional request, the notebooks service will pick a location in the corresponding runtime region. On a get request, zone will always be present. Example: * `us-central1-b`"
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "bootImage",
        "containerImages",
        "dataDisk",
        "encryptionConfig",
        "guestAttributes",
        "internalIpOnly",
        "labels",
        "machineType",
        "metadata",
        "network",
        "nicType",
        "reservedIpRange",
        "shieldedInstanceConfig",
        "subnet",
        "tags",
        "zone"
      ]
    },
    "google-native:notebooks/v1:VirtualMachineResponse": {
      "description": "Runtime using Virtual Machine for computing.",
      "properties": {
        "instanceId": {
          "type": "string",
          "description": "The unique identifier of the Managed Compute Engine instance."
        },
        "instanceName": {
          "type": "string",
          "description": "The user-friendly name of the Managed Compute Engine instance."
        },
        "virtualMachineConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VirtualMachineConfigResponse",
          "description": "Virtual Machine configuration settings."
        }
      },
      "type": "object",
      "required": [
        "instanceId",
        "instanceName",
        "virtualMachineConfig"
      ]
    },
    "google-native:notebooks/v1:VmImage": {
      "description": "Definition of a custom Compute Engine virtual machine image for starting a notebook instance with the environment installed directly on the VM.",
      "properties": {
        "imageFamily": {
          "type": "string",
          "description": "Use this VM image family to find the image; the newest image in this family will be used."
        },
        "imageName": {
          "type": "string",
          "description": "Use VM image name to find the image."
        },
        "project": {
          "type": "string",
          "description": "The name of the Google Cloud project that this VM image belongs to. Format: `{project_id}`"
        }
      },
      "type": "object",
      "required": [
        "project"
      ]
    },
    "google-native:notebooks/v1:VmImageResponse": {
      "description": "Definition of a custom Compute Engine virtual machine image for starting a notebook instance with the environment installed directly on the VM.",
      "properties": {
        "imageFamily": {
          "type": "string",
          "description": "Use this VM image family to find the image; the newest image in this family will be used."
        },
        "imageName": {
          "type": "string",
          "description": "Use VM image name to find the image."
        },
        "project": {
          "type": "string",
          "description": "The name of the Google Cloud project that this VM image belongs to. Format: `{project_id}`"
        }
      },
      "type": "object",
      "required": [
        "imageFamily",
        "imageName",
        "project"
      ]
    },
    "google-native:notebooks/v2:AcceleratorConfig": {
      "description": "An accelerator configuration for a VM instance Definition of a hardware accelerator. Note that there is no check on `type` and `core_count` combinations. TPUs are not supported. See [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus/#gpus-list) to find a valid combination.",
      "properties": {
        "coreCount": {
          "type": "string",
          "description": "Optional. Count of cores of this accelerator."
        },
        "type": {
          "$ref": "#/types/google-native:notebooks%2Fv2:AcceleratorConfigType",
          "description": "Optional. Type of this accelerator."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:AcceleratorConfigResponse": {
      "description": "An accelerator configuration for a VM instance Definition of a hardware accelerator. Note that there is no check on `type` and `core_count` combinations. TPUs are not supported. See [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus/#gpus-list) to find a valid combination.",
      "properties": {
        "coreCount": {
          "type": "string",
          "description": "Optional. Count of cores of this accelerator."
        },
        "type": {
          "type": "string",
          "description": "Optional. Type of this accelerator."
        }
      },
      "type": "object",
      "required": [
        "coreCount",
        "type"
      ]
    },
    "google-native:notebooks/v2:AcceleratorConfigType": {
      "description": "Optional. Type of this accelerator.",
      "type": "string",
      "enum": [
        {
          "name": "AcceleratorTypeUnspecified",
          "description": "Accelerator type is not specified.",
          "value": "ACCELERATOR_TYPE_UNSPECIFIED"
        },
        {
          "name": "NvidiaTeslaP100",
          "description": "Accelerator type is Nvidia Tesla P100.",
          "value": "NVIDIA_TESLA_P100"
        },
        {
          "name": "NvidiaTeslaV100",
          "description": "Accelerator type is Nvidia Tesla V100.",
          "value": "NVIDIA_TESLA_V100"
        },
        {
          "name": "NvidiaTeslaP4",
          "description": "Accelerator type is Nvidia Tesla P4.",
          "value": "NVIDIA_TESLA_P4"
        },
        {
          "name": "NvidiaTeslaT4",
          "description": "Accelerator type is Nvidia Tesla T4.",
          "value": "NVIDIA_TESLA_T4"
        },
        {
          "name": "NvidiaTeslaA100",
          "description": "Accelerator type is Nvidia Tesla A100 - 40GB.",
          "value": "NVIDIA_TESLA_A100"
        },
        {
          "name": "NvidiaA10080gb",
          "description": "Accelerator type is Nvidia Tesla A100 - 80GB.",
          "value": "NVIDIA_A100_80GB"
        },
        {
          "name": "NvidiaL4",
          "description": "Accelerator type is Nvidia Tesla L4.",
          "value": "NVIDIA_L4"
        },
        {
          "name": "NvidiaTeslaT4Vws",
          "description": "Accelerator type is NVIDIA Tesla T4 Virtual Workstations.",
          "value": "NVIDIA_TESLA_T4_VWS"
        },
        {
          "name": "NvidiaTeslaP100Vws",
          "description": "Accelerator type is NVIDIA Tesla P100 Virtual Workstations.",
          "value": "NVIDIA_TESLA_P100_VWS"
        },
        {
          "name": "NvidiaTeslaP4Vws",
          "description": "Accelerator type is NVIDIA Tesla P4 Virtual Workstations.",
          "value": "NVIDIA_TESLA_P4_VWS"
        }
      ]
    },
    "google-native:notebooks/v2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:notebooks%2Fv2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:notebooks%2Fv2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:notebooks/v2:BootDisk": {
      "description": "The definition of a boot disk.",
      "properties": {
        "diskEncryption": {
          "$ref": "#/types/google-native:notebooks%2Fv2:BootDiskDiskEncryption",
          "description": "Optional. Input only. Disk encryption method used on the boot and data disks, defaults to GMEK."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Optional. The size of the boot disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). If not specified, this defaults to the recommended value of 150GB."
        },
        "diskType": {
          "$ref": "#/types/google-native:notebooks%2Fv2:BootDiskDiskType",
          "description": "Optional. Indicates the type of the disk."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. Input only. The KMS key used to encrypt the disks, only applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}` Learn more about using your own encryption keys."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:BootDiskDiskEncryption": {
      "description": "Optional. Input only. Disk encryption method used on the boot and data disks, defaults to GMEK.",
      "type": "string",
      "enum": [
        {
          "name": "DiskEncryptionUnspecified",
          "description": "Disk encryption is not specified.",
          "value": "DISK_ENCRYPTION_UNSPECIFIED"
        },
        {
          "name": "Gmek",
          "description": "Use Google managed encryption keys to encrypt the boot disk.",
          "value": "GMEK"
        },
        {
          "name": "Cmek",
          "description": "Use customer managed encryption keys to encrypt the boot disk.",
          "value": "CMEK"
        }
      ]
    },
    "google-native:notebooks/v2:BootDiskDiskType": {
      "description": "Optional. Indicates the type of the disk.",
      "type": "string",
      "enum": [
        {
          "name": "DiskTypeUnspecified",
          "description": "Disk type not set.",
          "value": "DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdStandard",
          "description": "Standard persistent disk type.",
          "value": "PD_STANDARD"
        },
        {
          "name": "PdSsd",
          "description": "SSD persistent disk type.",
          "value": "PD_SSD"
        },
        {
          "name": "PdBalanced",
          "description": "Balanced persistent disk type.",
          "value": "PD_BALANCED"
        },
        {
          "name": "PdExtreme",
          "description": "Extreme persistent disk type.",
          "value": "PD_EXTREME"
        }
      ]
    },
    "google-native:notebooks/v2:BootDiskResponse": {
      "description": "The definition of a boot disk.",
      "properties": {
        "diskEncryption": {
          "type": "string",
          "description": "Optional. Input only. Disk encryption method used on the boot and data disks, defaults to GMEK."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Optional. The size of the boot disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). If not specified, this defaults to the recommended value of 150GB."
        },
        "diskType": {
          "type": "string",
          "description": "Optional. Indicates the type of the disk."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. Input only. The KMS key used to encrypt the disks, only applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}` Learn more about using your own encryption keys."
        }
      },
      "type": "object",
      "required": [
        "diskEncryption",
        "diskSizeGb",
        "diskType",
        "kmsKey"
      ]
    },
    "google-native:notebooks/v2:ContainerImage": {
      "description": "Definition of a container image for starting a notebook instance with the environment installed in a container.",
      "properties": {
        "repository": {
          "type": "string",
          "description": "The path to the container image repository. For example: `gcr.io/{project_id}/{image_name}`"
        },
        "tag": {
          "type": "string",
          "description": "Optional. The tag of the container image. If not specified, this defaults to the latest tag."
        }
      },
      "type": "object",
      "required": [
        "repository"
      ]
    },
    "google-native:notebooks/v2:ContainerImageResponse": {
      "description": "Definition of a container image for starting a notebook instance with the environment installed in a container.",
      "properties": {
        "repository": {
          "type": "string",
          "description": "The path to the container image repository. For example: `gcr.io/{project_id}/{image_name}`"
        },
        "tag": {
          "type": "string",
          "description": "Optional. The tag of the container image. If not specified, this defaults to the latest tag."
        }
      },
      "type": "object",
      "required": [
        "repository",
        "tag"
      ]
    },
    "google-native:notebooks/v2:DataDisk": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "diskEncryption": {
          "$ref": "#/types/google-native:notebooks%2Fv2:DataDiskDiskEncryption",
          "description": "Optional. Input only. Disk encryption method used on the boot and data disks, defaults to GMEK."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Optional. The size of the disk in GB attached to this VM instance, up to a maximum of 64000 GB (64 TB). If not specified, this defaults to 100."
        },
        "diskType": {
          "$ref": "#/types/google-native:notebooks%2Fv2:DataDiskDiskType",
          "description": "Optional. Input only. Indicates the type of the disk."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. Input only. The KMS key used to encrypt the disks, only applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}` Learn more about using your own encryption keys."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:DataDiskDiskEncryption": {
      "description": "Optional. Input only. Disk encryption method used on the boot and data disks, defaults to GMEK.",
      "type": "string",
      "enum": [
        {
          "name": "DiskEncryptionUnspecified",
          "description": "Disk encryption is not specified.",
          "value": "DISK_ENCRYPTION_UNSPECIFIED"
        },
        {
          "name": "Gmek",
          "description": "Use Google managed encryption keys to encrypt the boot disk.",
          "value": "GMEK"
        },
        {
          "name": "Cmek",
          "description": "Use customer managed encryption keys to encrypt the boot disk.",
          "value": "CMEK"
        }
      ]
    },
    "google-native:notebooks/v2:DataDiskDiskType": {
      "description": "Optional. Input only. Indicates the type of the disk.",
      "type": "string",
      "enum": [
        {
          "name": "DiskTypeUnspecified",
          "description": "Disk type not set.",
          "value": "DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdStandard",
          "description": "Standard persistent disk type.",
          "value": "PD_STANDARD"
        },
        {
          "name": "PdSsd",
          "description": "SSD persistent disk type.",
          "value": "PD_SSD"
        },
        {
          "name": "PdBalanced",
          "description": "Balanced persistent disk type.",
          "value": "PD_BALANCED"
        },
        {
          "name": "PdExtreme",
          "description": "Extreme persistent disk type.",
          "value": "PD_EXTREME"
        }
      ]
    },
    "google-native:notebooks/v2:DataDiskResponse": {
      "description": "An instance-attached disk resource.",
      "properties": {
        "diskEncryption": {
          "type": "string",
          "description": "Optional. Input only. Disk encryption method used on the boot and data disks, defaults to GMEK."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Optional. The size of the disk in GB attached to this VM instance, up to a maximum of 64000 GB (64 TB). If not specified, this defaults to 100."
        },
        "diskType": {
          "type": "string",
          "description": "Optional. Input only. Indicates the type of the disk."
        },
        "kmsKey": {
          "type": "string",
          "description": "Optional. Input only. The KMS key used to encrypt the disks, only applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}` Learn more about using your own encryption keys."
        }
      },
      "type": "object",
      "required": [
        "diskEncryption",
        "diskSizeGb",
        "diskType",
        "kmsKey"
      ]
    },
    "google-native:notebooks/v2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:notebooks/v2:GPUDriverConfig": {
      "description": "A GPU driver configuration",
      "properties": {
        "customGpuDriverPath": {
          "type": "string",
          "description": "Optional. Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers."
        },
        "enableGpuDriver": {
          "type": "boolean",
          "description": "Optional. Whether the end user authorizes Google Cloud to install GPU driver on this VM instance. If this field is empty or set to false, the GPU driver won't be installed. Only applicable to instances with GPUs."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:GPUDriverConfigResponse": {
      "description": "A GPU driver configuration",
      "properties": {
        "customGpuDriverPath": {
          "type": "string",
          "description": "Optional. Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers."
        },
        "enableGpuDriver": {
          "type": "boolean",
          "description": "Optional. Whether the end user authorizes Google Cloud to install GPU driver on this VM instance. If this field is empty or set to false, the GPU driver won't be installed. Only applicable to instances with GPUs."
        }
      },
      "type": "object",
      "required": [
        "customGpuDriverPath",
        "enableGpuDriver"
      ]
    },
    "google-native:notebooks/v2:GceSetup": {
      "description": "The definition of how to configure a VM instance outside of Resources and Identity.",
      "properties": {
        "acceleratorConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:AcceleratorConfig"
          },
          "description": "Optional. The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list). Currently supports only one accelerator configuration."
        },
        "bootDisk": {
          "$ref": "#/types/google-native:notebooks%2Fv2:BootDisk",
          "description": "Optional. The boot disk for the VM."
        },
        "containerImage": {
          "$ref": "#/types/google-native:notebooks%2Fv2:ContainerImage",
          "description": "Optional. Use a container image to start the notebook instance."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:DataDisk"
          },
          "description": "Optional. Data disks attached to the VM instance. Currently supports only one data disk."
        },
        "disablePublicIp": {
          "type": "boolean",
          "description": "Optional. If true, no external IP will be assigned to this VM instance."
        },
        "enableIpForwarding": {
          "type": "boolean",
          "description": "Optional. Flag to enable ip forwarding or not, default false/off. https://cloud.google.com/vpc/docs/using-routes#canipforward"
        },
        "gpuDriverConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv2:GPUDriverConfig",
          "description": "Optional. Configuration for GPU drivers."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The machine type of the VM instance. https://cloud.google.com/compute/docs/machine-resource"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom metadata to apply to this instance."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:NetworkInterface"
          },
          "description": "Optional. The network interfaces for the VM. Supports only one interface."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:ServiceAccount"
          },
          "description": "Optional. The service account that serves as an identity for the VM instance. Currently supports only one service account."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv2:ShieldedInstanceConfig",
          "description": "Optional. Shielded VM configuration. [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine tags to add to runtime (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "vmImage": {
          "$ref": "#/types/google-native:notebooks%2Fv2:VmImage",
          "description": "Optional. Use a Compute Engine VM image to start the notebook instance."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:GceSetupResponse": {
      "description": "The definition of how to configure a VM instance outside of Resources and Identity.",
      "properties": {
        "acceleratorConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:AcceleratorConfigResponse"
          },
          "description": "Optional. The hardware accelerators used on this instance. If you use accelerators, make sure that your configuration has [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list). Currently supports only one accelerator configuration."
        },
        "bootDisk": {
          "$ref": "#/types/google-native:notebooks%2Fv2:BootDiskResponse",
          "description": "Optional. The boot disk for the VM."
        },
        "containerImage": {
          "$ref": "#/types/google-native:notebooks%2Fv2:ContainerImageResponse",
          "description": "Optional. Use a container image to start the notebook instance."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:DataDiskResponse"
          },
          "description": "Optional. Data disks attached to the VM instance. Currently supports only one data disk."
        },
        "disablePublicIp": {
          "type": "boolean",
          "description": "Optional. If true, no external IP will be assigned to this VM instance."
        },
        "enableIpForwarding": {
          "type": "boolean",
          "description": "Optional. Flag to enable ip forwarding or not, default false/off. https://cloud.google.com/vpc/docs/using-routes#canipforward"
        },
        "gpuDriverConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv2:GPUDriverConfigResponse",
          "description": "Optional. Configuration for GPU drivers."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The machine type of the VM instance. https://cloud.google.com/compute/docs/machine-resource"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom metadata to apply to this instance."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:NetworkInterfaceResponse"
          },
          "description": "Optional. The network interfaces for the VM. Supports only one interface."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:ServiceAccountResponse"
          },
          "description": "Optional. The service account that serves as an identity for the VM instance. Currently supports only one service account."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv2:ShieldedInstanceConfigResponse",
          "description": "Optional. Shielded VM configuration. [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine tags to add to runtime (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "vmImage": {
          "$ref": "#/types/google-native:notebooks%2Fv2:VmImageResponse",
          "description": "Optional. Use a Compute Engine VM image to start the notebook instance."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfigs",
        "bootDisk",
        "containerImage",
        "dataDisks",
        "disablePublicIp",
        "enableIpForwarding",
        "gpuDriverConfig",
        "machineType",
        "metadata",
        "networkInterfaces",
        "serviceAccounts",
        "shieldedInstanceConfig",
        "tags",
        "vmImage"
      ]
    },
    "google-native:notebooks/v2:NetworkInterface": {
      "description": "The definition of a network interface resource attached to a VM.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Optional. The name of the VPC that this VM instance is in. Format: `projects/{project_id}/global/networks/{network_id}`"
        },
        "nicType": {
          "$ref": "#/types/google-native:notebooks%2Fv2:NetworkInterfaceNicType",
          "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "subnet": {
          "type": "string",
          "description": "Optional. The name of the subnet that this VM instance is in. Format: `projects/{project_id}/regions/{region}/subnetworks/{subnetwork_id}`"
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:NetworkInterfaceNicType": {
      "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.",
      "type": "string",
      "enum": [
        {
          "name": "NicTypeUnspecified",
          "description": "No type specified.",
          "value": "NIC_TYPE_UNSPECIFIED"
        },
        {
          "name": "VirtioNet",
          "description": "VIRTIO",
          "value": "VIRTIO_NET"
        },
        {
          "name": "Gvnic",
          "description": "GVNIC",
          "value": "GVNIC"
        }
      ]
    },
    "google-native:notebooks/v2:NetworkInterfaceResponse": {
      "description": "The definition of a network interface resource attached to a VM.",
      "properties": {
        "network": {
          "type": "string",
          "description": "Optional. The name of the VPC that this VM instance is in. Format: `projects/{project_id}/global/networks/{network_id}`"
        },
        "nicType": {
          "type": "string",
          "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "subnet": {
          "type": "string",
          "description": "Optional. The name of the subnet that this VM instance is in. Format: `projects/{project_id}/regions/{region}/subnetworks/{subnetwork_id}`"
        }
      },
      "type": "object",
      "required": [
        "network",
        "nicType",
        "subnet"
      ]
    },
    "google-native:notebooks/v2:ServiceAccount": {
      "description": "A service account that acts as an identity.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Optional. Email address of the service account."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:ServiceAccountResponse": {
      "description": "A service account that acts as an identity.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Optional. Email address of the service account."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account. Set by the CLH to https://www.googleapis.com/auth/cloud-platform"
        }
      },
      "type": "object",
      "required": [
        "email",
        "scopes"
      ]
    },
    "google-native:notebooks/v2:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options. See [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Defines whether the VM instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the VM instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the VM instance is created. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether the VM instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Defines whether the VM instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object"
    },
    "google-native:notebooks/v2:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options. See [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Defines whether the VM instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the VM instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the VM instance is created. Enabled by default."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether the VM instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Defines whether the VM instance has the vTPM enabled. Enabled by default."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:notebooks/v2:UpgradeHistoryEntryResponse": {
      "description": "The entry of VM image upgrade history.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Optional. Action. Rolloback or Upgrade."
        },
        "containerImage": {
          "type": "string",
          "description": "Optional. The container image before this instance upgrade."
        },
        "createTime": {
          "type": "string",
          "description": "Immutable. The time that this instance upgrade history entry is created."
        },
        "framework": {
          "type": "string",
          "description": "Optional. The framework of this notebook instance."
        },
        "snapshot": {
          "type": "string",
          "description": "Optional. The snapshot of the boot disk of this notebook instance before upgrade."
        },
        "state": {
          "type": "string",
          "description": "The state of this instance upgrade history entry."
        },
        "targetVersion": {
          "type": "string",
          "description": "Optional. Target VM Version, like m63."
        },
        "version": {
          "type": "string",
          "description": "Optional. The version of the notebook instance before this upgrade."
        },
        "vmImage": {
          "type": "string",
          "description": "Optional. The VM image before this instance upgrade."
        }
      },
      "type": "object",
      "required": [
        "action",
        "containerImage",
        "createTime",
        "framework",
        "snapshot",
        "state",
        "targetVersion",
        "version",
        "vmImage"
      ]
    },
    "google-native:notebooks/v2:VmImage": {
      "description": "Definition of a custom Compute Engine virtual machine image for starting a notebook instance with the environment installed directly on the VM.",
      "properties": {
        "family": {
          "type": "string",
          "description": "Optional. Use this VM image family to find the image; the newest image in this family will be used."
        },
        "name": {
          "type": "string",
          "description": "Optional. Use VM image name to find the image."
        },
        "project": {
          "type": "string",
          "description": "The name of the Google Cloud project that this VM image belongs to. Format: `{project_id}`"
        }
      },
      "type": "object",
      "required": [
        "project"
      ]
    },
    "google-native:notebooks/v2:VmImageResponse": {
      "description": "Definition of a custom Compute Engine virtual machine image for starting a notebook instance with the environment installed directly on the VM.",
      "properties": {
        "family": {
          "type": "string",
          "description": "Optional. Use this VM image family to find the image; the newest image in this family will be used."
        },
        "name": {
          "type": "string",
          "description": "Optional. Use VM image name to find the image."
        },
        "project": {
          "type": "string",
          "description": "The name of the Google Cloud project that this VM image belongs to. Format: `{project_id}`"
        }
      },
      "type": "object",
      "required": [
        "family",
        "name",
        "project"
      ]
    },
    "google-native:orgpolicy/v2:CustomConstraintActionType": {
      "description": "Allow or deny type.",
      "type": "string",
      "enum": [
        {
          "name": "ActionTypeUnspecified",
          "description": "Unspecified. Results in an error.",
          "value": "ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Allow",
          "description": "Allowed action type.",
          "value": "ALLOW"
        },
        {
          "name": "Deny",
          "description": "Deny action type.",
          "value": "DENY"
        }
      ]
    },
    "google-native:orgpolicy/v2:CustomConstraintMethodTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "MethodTypeUnspecified",
          "description": "Unspecified. Results in an error.",
          "value": "METHOD_TYPE_UNSPECIFIED"
        },
        {
          "name": "Create",
          "description": "Constraint applied when creating the resource.",
          "value": "CREATE"
        },
        {
          "name": "Update",
          "description": "Constraint applied when updating the resource.",
          "value": "UPDATE"
        },
        {
          "name": "Delete",
          "description": "Constraint applied when deleting the resource. Not supported yet.",
          "value": "DELETE"
        }
      ]
    },
    "google-native:orgpolicy/v2:GoogleCloudOrgpolicyV2AlternatePolicySpec": {
      "description": "Similar to PolicySpec but with an extra 'launch' field for launch reference. The PolicySpec here is specific for dry-run/darklaunch.",
      "properties": {
        "launch": {
          "type": "string",
          "description": "Reference to the launch that will be used while audit logging and to control the launch. Should be set only in the alternate policy."
        },
        "spec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpec",
          "description": "Specify constraint for configurations of Google Cloud resources."
        }
      },
      "type": "object"
    },
    "google-native:orgpolicy/v2:GoogleCloudOrgpolicyV2AlternatePolicySpecResponse": {
      "description": "Similar to PolicySpec but with an extra 'launch' field for launch reference. The PolicySpec here is specific for dry-run/darklaunch.",
      "properties": {
        "launch": {
          "type": "string",
          "description": "Reference to the launch that will be used while audit logging and to control the launch. Should be set only in the alternate policy."
        },
        "spec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
          "description": "Specify constraint for configurations of Google Cloud resources."
        }
      },
      "type": "object",
      "required": [
        "launch",
        "spec"
      ]
    },
    "google-native:orgpolicy/v2:GoogleCloudOrgpolicyV2PolicySpec": {
      "description": "Defines a Google Cloud policy specification which is used to specify constraints for configurations of Google Cloud resources.",
      "properties": {
        "etag": {
          "type": "string",
          "description": "An opaque tag indicating the current version of the policy, used for concurrency control. This field is ignored if used in a `CreatePolicy` request. When the policy` is returned from either a `GetPolicy` or a `ListPolicies` request, this `etag` indicates the version of the current policy to use when executing a read-modify-write loop. When the policy is returned from a `GetEffectivePolicy` request, the `etag` will be unset."
        },
        "inheritFromParent": {
          "type": "boolean",
          "description": "Determines the inheritance behavior for this policy. If `inherit_from_parent` is true, policy rules set higher up in the hierarchy (up to the closest root) are inherited and present in the effective policy. If it is false, then no rules are inherited, and this policy becomes the new root for evaluation. This field can be set only for policies which configure list constraints."
        },
        "reset": {
          "type": "boolean",
          "description": "Ignores policies set above this resource and restores the `constraint_default` enforcement behavior of the specific constraint at this resource. This field can be set in policies for either list or boolean constraints. If set, `rules` must be empty and `inherit_from_parent` must be set to false."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecPolicyRule"
          },
          "description": "In policies for boolean constraints, the following requirements apply: - There must be one and only one policy rule where condition is unset. - Boolean policy rules with conditions must set `enforced` to the opposite of the policy rule without a condition. - During policy evaluation, policy rules with conditions that are true for a target resource take precedence."
        }
      },
      "type": "object"
    },
    "google-native:orgpolicy/v2:GoogleCloudOrgpolicyV2PolicySpecPolicyRule": {
      "description": "A rule used to express this policy.",
      "properties": {
        "allowAll": {
          "type": "boolean",
          "description": "Setting this to true means that all values are allowed. This field can be set only in policies for list constraints."
        },
        "condition": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleTypeExpr",
          "description": "A condition which determines whether this rule is used in the evaluation of the policy. When set, the `expression` field in the `Expr' must include from 1 to 10 subexpressions, joined by the \"||\" or \"&&\" operators. Each subexpression must be of the form \"resource.matchTag('/tag_key_short_name, 'tag_value_short_name')\". or \"resource.matchTagId('tagKeys/key_id', 'tagValues/value_id')\". where key_name and value_name are the resource names for Label Keys and Values. These names are available from the Tag Manager Service. An example expression is: \"resource.matchTag('123456789/environment, 'prod')\". or \"resource.matchTagId('tagKeys/123', 'tagValues/456')\"."
        },
        "denyAll": {
          "type": "boolean",
          "description": "Setting this to true means that all values are denied. This field can be set only in policies for list constraints."
        },
        "enforce": {
          "type": "boolean",
          "description": "If `true`, then the policy is enforced. If `false`, then any configuration is acceptable. This field can be set only in policies for boolean constraints."
        },
        "values": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues",
          "description": "List of values to be used for this policy rule. This field can be set only in policies for list constraints."
        }
      },
      "type": "object"
    },
    "google-native:orgpolicy/v2:GoogleCloudOrgpolicyV2PolicySpecPolicyRuleResponse": {
      "description": "A rule used to express this policy.",
      "properties": {
        "allowAll": {
          "type": "boolean",
          "description": "Setting this to true means that all values are allowed. This field can be set only in policies for list constraints."
        },
        "condition": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleTypeExprResponse",
          "description": "A condition which determines whether this rule is used in the evaluation of the policy. When set, the `expression` field in the `Expr' must include from 1 to 10 subexpressions, joined by the \"||\" or \"&&\" operators. Each subexpression must be of the form \"resource.matchTag('/tag_key_short_name, 'tag_value_short_name')\". or \"resource.matchTagId('tagKeys/key_id', 'tagValues/value_id')\". where key_name and value_name are the resource names for Label Keys and Values. These names are available from the Tag Manager Service. An example expression is: \"resource.matchTag('123456789/environment, 'prod')\". or \"resource.matchTagId('tagKeys/123', 'tagValues/456')\"."
        },
        "denyAll": {
          "type": "boolean",
          "description": "Setting this to true means that all values are denied. This field can be set only in policies for list constraints."
        },
        "enforce": {
          "type": "boolean",
          "description": "If `true`, then the policy is enforced. If `false`, then any configuration is acceptable. This field can be set only in policies for boolean constraints."
        },
        "values": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValuesResponse",
          "description": "List of values to be used for this policy rule. This field can be set only in policies for list constraints."
        }
      },
      "type": "object",
      "required": [
        "allowAll",
        "condition",
        "denyAll",
        "enforce",
        "values"
      ]
    },
    "google-native:orgpolicy/v2:GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues": {
      "description": "A message that holds specific allowed and denied values. This message can define specific values and subtrees of the Resource Manager resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed or denied. This is achieved by using the `under:` and optional `is:` prefixes. The `under:` prefix is used to denote resource subtree values. The `is:` prefix is used to denote specific values, and is required only if the value contains a \":\". Values prefixed with \"is:\" are treated the same as values with no prefix. Ancestry subtrees must be in one of the following formats: - `projects/` (for example, `projects/tokyo-rain-123`) - `folders/` (for example, `folders/1234`) - `organizations/` (for example, `organizations/1234`) The `supports_under` field of the associated `Constraint` defines whether ancestry prefixes can be used.",
      "properties": {
        "allowedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of values allowed at this resource."
        },
        "deniedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of values denied at this resource."
        }
      },
      "type": "object"
    },
    "google-native:orgpolicy/v2:GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValuesResponse": {
      "description": "A message that holds specific allowed and denied values. This message can define specific values and subtrees of the Resource Manager resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed or denied. This is achieved by using the `under:` and optional `is:` prefixes. The `under:` prefix is used to denote resource subtree values. The `is:` prefix is used to denote specific values, and is required only if the value contains a \":\". Values prefixed with \"is:\" are treated the same as values with no prefix. Ancestry subtrees must be in one of the following formats: - `projects/` (for example, `projects/tokyo-rain-123`) - `folders/` (for example, `folders/1234`) - `organizations/` (for example, `organizations/1234`) The `supports_under` field of the associated `Constraint` defines whether ancestry prefixes can be used.",
      "properties": {
        "allowedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of values allowed at this resource."
        },
        "deniedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of values denied at this resource."
        }
      },
      "type": "object",
      "required": [
        "allowedValues",
        "deniedValues"
      ]
    },
    "google-native:orgpolicy/v2:GoogleCloudOrgpolicyV2PolicySpecResponse": {
      "description": "Defines a Google Cloud policy specification which is used to specify constraints for configurations of Google Cloud resources.",
      "properties": {
        "etag": {
          "type": "string",
          "description": "An opaque tag indicating the current version of the policy, used for concurrency control. This field is ignored if used in a `CreatePolicy` request. When the policy` is returned from either a `GetPolicy` or a `ListPolicies` request, this `etag` indicates the version of the current policy to use when executing a read-modify-write loop. When the policy is returned from a `GetEffectivePolicy` request, the `etag` will be unset."
        },
        "inheritFromParent": {
          "type": "boolean",
          "description": "Determines the inheritance behavior for this policy. If `inherit_from_parent` is true, policy rules set higher up in the hierarchy (up to the closest root) are inherited and present in the effective policy. If it is false, then no rules are inherited, and this policy becomes the new root for evaluation. This field can be set only for policies which configure list constraints."
        },
        "reset": {
          "type": "boolean",
          "description": "Ignores policies set above this resource and restores the `constraint_default` enforcement behavior of the specific constraint at this resource. This field can be set in policies for either list or boolean constraints. If set, `rules` must be empty and `inherit_from_parent` must be set to false."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecPolicyRuleResponse"
          },
          "description": "In policies for boolean constraints, the following requirements apply: - There must be one and only one policy rule where condition is unset. - Boolean policy rules with conditions must set `enforced` to the opposite of the policy rule without a condition. - During policy evaluation, policy rules with conditions that are true for a target resource take precedence."
        },
        "updateTime": {
          "type": "string",
          "description": "The time stamp this was previously updated. This represents the last time a call to `CreatePolicy` or `UpdatePolicy` was made for that policy."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "inheritFromParent",
        "reset",
        "rules",
        "updateTime"
      ]
    },
    "google-native:orgpolicy/v2:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:orgpolicy/v2:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:osconfig/v1:AptSettings": {
      "description": "Apt patching is completed by executing `apt-get update && apt-get upgrade`. Additional options can be set to control how this is executed.",
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of packages to exclude from update. These packages will be excluded"
        },
        "exclusivePackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields."
        },
        "type": {
          "$ref": "#/types/google-native:osconfig%2Fv1:AptSettingsType",
          "description": "By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:AptSettingsResponse": {
      "description": "Apt patching is completed by executing `apt-get update && apt-get upgrade`. Additional options can be set to control how this is executed.",
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of packages to exclude from update. These packages will be excluded"
        },
        "exclusivePackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields."
        },
        "type": {
          "type": "string",
          "description": "By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead."
        }
      },
      "type": "object",
      "required": [
        "excludes",
        "exclusivePackages",
        "type"
      ]
    },
    "google-native:osconfig/v1:AptSettingsType": {
      "description": "By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "By default, upgrade will be performed.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Dist",
          "description": "Runs `apt-get dist-upgrade`.",
          "value": "DIST"
        },
        {
          "name": "Upgrade",
          "description": "Runs `apt-get upgrade`.",
          "value": "UPGRADE"
        }
      ]
    },
    "google-native:osconfig/v1:ExecStep": {
      "description": "A step that runs an executable for a PatchJob.",
      "properties": {
        "linuxExecStepConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStepConfig",
          "description": "The ExecStepConfig for all Linux VMs targeted by the PatchJob."
        },
        "windowsExecStepConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStepConfig",
          "description": "The ExecStepConfig for all Windows VMs targeted by the PatchJob."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:ExecStepConfig": {
      "description": "Common configurations for an ExecStep.",
      "properties": {
        "allowedSuccessCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Defaults to [0]. A list of possible return values that the execution can return to indicate a success."
        },
        "gcsObject": {
          "$ref": "#/types/google-native:osconfig%2Fv1:GcsObject",
          "description": "A Cloud Storage object containing the executable."
        },
        "interpreter": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStepConfigInterpreter",
          "description": "The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\\(Unix\\))."
        },
        "localPath": {
          "type": "string",
          "description": "An absolute path to the executable on the VM."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:ExecStepConfigInterpreter": {
      "description": "The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\\(Unix\\)).",
      "type": "string",
      "enum": [
        {
          "name": "InterpreterUnspecified",
          "description": "If the interpreter is not specified, the value defaults to `NONE`.",
          "value": "INTERPRETER_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Indicates that the file is run as follows on each operating system: + For Linux VMs, the file is ran as an executable and the interpreter might be parsed from the [shebang line](https://wikipedia.org/wiki/Shebang_(Unix)) of the file. + For Windows VM, this value is not supported.",
          "value": "NONE"
        },
        {
          "name": "Shell",
          "description": "Indicates that the file is run with `/bin/sh` on Linux and `cmd` on Windows.",
          "value": "SHELL"
        },
        {
          "name": "Powershell",
          "description": "Indicates that the file is run with PowerShell.",
          "value": "POWERSHELL"
        }
      ]
    },
    "google-native:osconfig/v1:ExecStepConfigResponse": {
      "description": "Common configurations for an ExecStep.",
      "properties": {
        "allowedSuccessCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Defaults to [0]. A list of possible return values that the execution can return to indicate a success."
        },
        "gcsObject": {
          "$ref": "#/types/google-native:osconfig%2Fv1:GcsObjectResponse",
          "description": "A Cloud Storage object containing the executable."
        },
        "interpreter": {
          "type": "string",
          "description": "The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\\(Unix\\))."
        },
        "localPath": {
          "type": "string",
          "description": "An absolute path to the executable on the VM."
        }
      },
      "type": "object",
      "required": [
        "allowedSuccessCodes",
        "gcsObject",
        "interpreter",
        "localPath"
      ]
    },
    "google-native:osconfig/v1:ExecStepResponse": {
      "description": "A step that runs an executable for a PatchJob.",
      "properties": {
        "linuxExecStepConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStepConfigResponse",
          "description": "The ExecStepConfig for all Linux VMs targeted by the PatchJob."
        },
        "windowsExecStepConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStepConfigResponse",
          "description": "The ExecStepConfig for all Windows VMs targeted by the PatchJob."
        }
      },
      "type": "object",
      "required": [
        "linuxExecStepConfig",
        "windowsExecStepConfig"
      ]
    },
    "google-native:osconfig/v1:FixedOrPercent": {
      "description": "Message encapsulating a value that can be either absolute (\"fixed\") or relative (\"percent\") to a value.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed value."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies the relative value defined as a percentage, which will be multiplied by a reference value."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:FixedOrPercentResponse": {
      "description": "Message encapsulating a value that can be either absolute (\"fixed\") or relative (\"percent\") to a value.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed value."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies the relative value defined as a percentage, which will be multiplied by a reference value."
        }
      },
      "type": "object",
      "required": [
        "fixed",
        "percent"
      ]
    },
    "google-native:osconfig/v1:GcsObject": {
      "description": "Cloud Storage object representation.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Cloud Storage object."
        },
        "generationNumber": {
          "type": "string",
          "description": "Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change."
        },
        "object": {
          "type": "string",
          "description": "Name of the Cloud Storage object."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generationNumber",
        "object"
      ]
    },
    "google-native:osconfig/v1:GcsObjectResponse": {
      "description": "Cloud Storage object representation.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Cloud Storage object."
        },
        "generationNumber": {
          "type": "string",
          "description": "Generation number of the Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change."
        },
        "object": {
          "type": "string",
          "description": "Name of the Cloud Storage object."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generationNumber",
        "object"
      ]
    },
    "google-native:osconfig/v1:GooSettings": {
      "description": "Googet patching is performed by running `googet update`.",
      "type": "object"
    },
    "google-native:osconfig/v1:GooSettingsResponse": {
      "description": "Googet patching is performed by running `googet update`.",
      "type": "object"
    },
    "google-native:osconfig/v1:MonthlySchedule": {
      "description": "Represents a monthly schedule. An example of a valid monthly schedule is \"on the third Tuesday of the month\" or \"on the 15th of the month\".",
      "properties": {
        "monthDay": {
          "type": "integer",
          "description": "One day of the month. 1-31 indicates the 1st to the 31st day. -1 indicates the last day of the month. Months without the target day will be skipped. For example, a schedule to run \"every month on the 31st\" will not run in February, April, June, etc."
        },
        "weekDayOfMonth": {
          "$ref": "#/types/google-native:osconfig%2Fv1:WeekDayOfMonth",
          "description": "Week day in a month."
        }
      },
      "type": "object",
      "required": [
        "monthDay",
        "weekDayOfMonth"
      ]
    },
    "google-native:osconfig/v1:MonthlyScheduleResponse": {
      "description": "Represents a monthly schedule. An example of a valid monthly schedule is \"on the third Tuesday of the month\" or \"on the 15th of the month\".",
      "properties": {
        "monthDay": {
          "type": "integer",
          "description": "One day of the month. 1-31 indicates the 1st to the 31st day. -1 indicates the last day of the month. Months without the target day will be skipped. For example, a schedule to run \"every month on the 31st\" will not run in February, April, June, etc."
        },
        "weekDayOfMonth": {
          "$ref": "#/types/google-native:osconfig%2Fv1:WeekDayOfMonthResponse",
          "description": "Week day in a month."
        }
      },
      "type": "object",
      "required": [
        "monthDay",
        "weekDayOfMonth"
      ]
    },
    "google-native:osconfig/v1:OSPolicy": {
      "description": "An OS policy defines the desired state configuration for a VM.",
      "properties": {
        "allowNoResourceGroupMatch": {
          "type": "boolean",
          "description": "This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce."
        },
        "description": {
          "type": "string",
          "description": "Policy description. Length of the description is limited to 1024 characters."
        },
        "id": {
          "type": "string",
          "description": "The id of the OS policy with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the assignment."
        },
        "mode": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyMode",
          "description": "Policy mode"
        },
        "resourceGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceGroup"
          },
          "description": "List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`"
        }
      },
      "type": "object",
      "required": [
        "id",
        "mode",
        "resourceGroups"
      ]
    },
    "google-native:osconfig/v1:OSPolicyAssignmentInstanceFilter": {
      "description": "Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Target all VMs in the project. If true, no other criteria is permitted."
        },
        "exclusionLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentLabelSet"
          },
          "description": "List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM."
        },
        "inclusionLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentLabelSet"
          },
          "description": "List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM."
        },
        "inventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentInstanceFilterInventory"
          },
          "description": "List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:OSPolicyAssignmentInstanceFilterInventory": {
      "description": "VM inventory details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "The OS short name"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions."
        }
      },
      "type": "object",
      "required": [
        "osShortName"
      ]
    },
    "google-native:osconfig/v1:OSPolicyAssignmentInstanceFilterInventoryResponse": {
      "description": "VM inventory details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "The OS short name"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions."
        }
      },
      "type": "object",
      "required": [
        "osShortName",
        "osVersion"
      ]
    },
    "google-native:osconfig/v1:OSPolicyAssignmentInstanceFilterResponse": {
      "description": "Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Target all VMs in the project. If true, no other criteria is permitted."
        },
        "exclusionLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentLabelSetResponse"
          },
          "description": "List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM."
        },
        "inclusionLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentLabelSetResponse"
          },
          "description": "List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM."
        },
        "inventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentInstanceFilterInventoryResponse"
          },
          "description": "List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories."
        }
      },
      "type": "object",
      "required": [
        "all",
        "exclusionLabels",
        "inclusionLabels",
        "inventories"
      ]
    },
    "google-native:osconfig/v1:OSPolicyAssignmentLabelSet": {
      "description": "Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:OSPolicyAssignmentLabelSetResponse": {
      "description": "Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected."
        }
      },
      "type": "object",
      "required": [
        "labels"
      ]
    },
    "google-native:osconfig/v1:OSPolicyAssignmentRollout": {
      "description": "Message to configure the rollout at the zonal level for the OS policy assignment.",
      "properties": {
        "disruptionBudget": {
          "$ref": "#/types/google-native:osconfig%2Fv1:FixedOrPercent",
          "description": "The maximum number (or percentage) of VMs per zone to disrupt at any given moment."
        },
        "minWaitDuration": {
          "type": "string",
          "description": "This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied."
        }
      },
      "type": "object",
      "required": [
        "disruptionBudget",
        "minWaitDuration"
      ]
    },
    "google-native:osconfig/v1:OSPolicyAssignmentRolloutResponse": {
      "description": "Message to configure the rollout at the zonal level for the OS policy assignment.",
      "properties": {
        "disruptionBudget": {
          "$ref": "#/types/google-native:osconfig%2Fv1:FixedOrPercentResponse",
          "description": "The maximum number (or percentage) of VMs per zone to disrupt at any given moment."
        },
        "minWaitDuration": {
          "type": "string",
          "description": "This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied."
        }
      },
      "type": "object",
      "required": [
        "disruptionBudget",
        "minWaitDuration"
      ]
    },
    "google-native:osconfig/v1:OSPolicyInventoryFilter": {
      "description": "Filtering criteria to select VMs based on inventory details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "The OS short name"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions."
        }
      },
      "type": "object",
      "required": [
        "osShortName"
      ]
    },
    "google-native:osconfig/v1:OSPolicyInventoryFilterResponse": {
      "description": "Filtering criteria to select VMs based on inventory details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "The OS short name"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions."
        }
      },
      "type": "object",
      "required": [
        "osShortName",
        "osVersion"
      ]
    },
    "google-native:osconfig/v1:OSPolicyMode": {
      "description": "Required. Policy mode",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Invalid mode",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Validation",
          "description": "This mode checks if the configuration resources in the policy are in their desired state. No actions are performed if they are not in the desired state. This mode is used for reporting purposes.",
          "value": "VALIDATION"
        },
        {
          "name": "Enforcement",
          "description": "This mode checks if the configuration resources in the policy are in their desired state, and if not, enforces the desired state.",
          "value": "ENFORCEMENT"
        }
      ]
    },
    "google-native:osconfig/v1:OSPolicyResource": {
      "description": "An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceExecResource",
          "description": "Exec resource"
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileResource",
          "description": "File resource"
        },
        "id": {
          "type": "string",
          "description": "The id of the resource with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the OS policy."
        },
        "pkg": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResource",
          "description": "Package resource"
        },
        "repository": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResource",
          "description": "Package repository resource"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceExecResource": {
      "description": "A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen.",
      "properties": {
        "enforce": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceExecResourceExec",
          "description": "What to run to bring this resource into the desired state. An exit code of 100 indicates \"success\", any other exit code indicates a failure running enforce."
        },
        "validate": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceExecResourceExec",
          "description": "What to run to validate this resource is in the desired state. An exit code of 100 indicates \"in desired state\", and exit code of 101 indicates \"not in desired state\". Any other exit code indicates a failure running validate."
        }
      },
      "type": "object",
      "required": [
        "validate"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceExecResourceExec": {
      "description": "A file or script to execute.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional arguments to pass to the source during execution."
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFile",
          "description": "A remote or local file."
        },
        "interpreter": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceExecResourceExecInterpreter",
          "description": "The script interpreter to use."
        },
        "outputFilePath": {
          "type": "string",
          "description": "Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes."
        },
        "script": {
          "type": "string",
          "description": "An inline script. The size of the script is limited to 32KiB."
        }
      },
      "type": "object",
      "required": [
        "interpreter"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceExecResourceExecInterpreter": {
      "description": "Required. The script interpreter to use.",
      "type": "string",
      "enum": [
        {
          "name": "InterpreterUnspecified",
          "description": "Invalid value, the request will return validation error.",
          "value": "INTERPRETER_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "If an interpreter is not specified, the source is executed directly. This execution, without an interpreter, only succeeds for executables and scripts that have shebang lines.",
          "value": "NONE"
        },
        {
          "name": "Shell",
          "description": "Indicates that the script runs with `/bin/sh` on Linux and `cmd.exe` on Windows.",
          "value": "SHELL"
        },
        {
          "name": "Powershell",
          "description": "Indicates that the script runs with PowerShell.",
          "value": "POWERSHELL"
        }
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceExecResourceExecResponse": {
      "description": "A file or script to execute.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional arguments to pass to the source during execution."
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileResponse",
          "description": "A remote or local file."
        },
        "interpreter": {
          "type": "string",
          "description": "The script interpreter to use."
        },
        "outputFilePath": {
          "type": "string",
          "description": "Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes."
        },
        "script": {
          "type": "string",
          "description": "An inline script. The size of the script is limited to 32KiB."
        }
      },
      "type": "object",
      "required": [
        "args",
        "file",
        "interpreter",
        "outputFilePath",
        "script"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceExecResourceResponse": {
      "description": "A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen.",
      "properties": {
        "enforce": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceExecResourceExecResponse",
          "description": "What to run to bring this resource into the desired state. An exit code of 100 indicates \"success\", any other exit code indicates a failure running enforce."
        },
        "validate": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceExecResourceExecResponse",
          "description": "What to run to validate this resource is in the desired state. An exit code of 100 indicates \"in desired state\", and exit code of 101 indicates \"not in desired state\". Any other exit code indicates a failure running validate."
        }
      },
      "type": "object",
      "required": [
        "enforce",
        "validate"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceFile": {
      "description": "A remote or local file.",
      "properties": {
        "allowInsecure": {
          "type": "boolean",
          "description": "Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified."
        },
        "gcs": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileGcs",
          "description": "A Cloud Storage object."
        },
        "localPath": {
          "type": "string",
          "description": "A local path within the VM to use."
        },
        "remote": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileRemote",
          "description": "A generic remote file."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:OSPolicyResourceFileGcs": {
      "description": "Specifies a file available as a Cloud Storage Object.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Cloud Storage object."
        },
        "generation": {
          "type": "string",
          "description": "Generation number of the Cloud Storage object."
        },
        "object": {
          "type": "string",
          "description": "Name of the Cloud Storage object."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "object"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceFileGcsResponse": {
      "description": "Specifies a file available as a Cloud Storage Object.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Cloud Storage object."
        },
        "generation": {
          "type": "string",
          "description": "Generation number of the Cloud Storage object."
        },
        "object": {
          "type": "string",
          "description": "Name of the Cloud Storage object."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceFileRemote": {
      "description": "Specifies a file available via some URI.",
      "properties": {
        "sha256Checksum": {
          "type": "string",
          "description": "SHA256 checksum of the remote file."
        },
        "uri": {
          "type": "string",
          "description": "URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceFileRemoteResponse": {
      "description": "Specifies a file available via some URI.",
      "properties": {
        "sha256Checksum": {
          "type": "string",
          "description": "SHA256 checksum of the remote file."
        },
        "uri": {
          "type": "string",
          "description": "URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`."
        }
      },
      "type": "object",
      "required": [
        "sha256Checksum",
        "uri"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceFileResource": {
      "description": "A resource that manages the state of a file.",
      "properties": {
        "content": {
          "type": "string",
          "description": "A a file with this content. The size of the content is limited to 32KiB."
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFile",
          "description": "A remote or local source."
        },
        "path": {
          "type": "string",
          "description": "The absolute path of the file within the VM."
        },
        "permissions": {
          "type": "string",
          "description": "Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4"
        },
        "state": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileResourceState",
          "description": "Desired state of the file."
        }
      },
      "type": "object",
      "required": [
        "path",
        "state"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceFileResourceResponse": {
      "description": "A resource that manages the state of a file.",
      "properties": {
        "content": {
          "type": "string",
          "description": "A a file with this content. The size of the content is limited to 32KiB."
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileResponse",
          "description": "A remote or local source."
        },
        "path": {
          "type": "string",
          "description": "The absolute path of the file within the VM."
        },
        "permissions": {
          "type": "string",
          "description": "Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4"
        },
        "state": {
          "type": "string",
          "description": "Desired state of the file."
        }
      },
      "type": "object",
      "required": [
        "content",
        "file",
        "path",
        "permissions",
        "state"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceFileResourceState": {
      "description": "Required. Desired state of the file.",
      "type": "string",
      "enum": [
        {
          "name": "DesiredStateUnspecified",
          "description": "Unspecified is invalid.",
          "value": "DESIRED_STATE_UNSPECIFIED"
        },
        {
          "name": "Present",
          "description": "Ensure file at path is present.",
          "value": "PRESENT"
        },
        {
          "name": "Absent",
          "description": "Ensure file at path is absent.",
          "value": "ABSENT"
        },
        {
          "name": "ContentsMatch",
          "description": "Ensure the contents of the file at path matches. If the file does not exist it will be created.",
          "value": "CONTENTS_MATCH"
        }
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceFileResponse": {
      "description": "A remote or local file.",
      "properties": {
        "allowInsecure": {
          "type": "boolean",
          "description": "Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified."
        },
        "gcs": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileGcsResponse",
          "description": "A Cloud Storage object."
        },
        "localPath": {
          "type": "string",
          "description": "A local path within the VM to use."
        },
        "remote": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileRemoteResponse",
          "description": "A generic remote file."
        }
      },
      "type": "object",
      "required": [
        "allowInsecure",
        "gcs",
        "localPath",
        "remote"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceGroup": {
      "description": "Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.",
      "properties": {
        "inventoryFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyInventoryFilter"
          },
          "description": "List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name='rhel' and inventory_filters[1].os_short_name='centos' If the list is empty, this resource group will be applied to the target VM unconditionally."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResource"
          },
          "description": "List of resources configured for this resource group. The resources are executed in the exact order specified here."
        }
      },
      "type": "object",
      "required": [
        "resources"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceGroupResponse": {
      "description": "Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.",
      "properties": {
        "inventoryFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyInventoryFilterResponse"
          },
          "description": "List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name='rhel' and inventory_filters[1].os_short_name='centos' If the list is empty, this resource group will be applied to the target VM unconditionally."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceResponse"
          },
          "description": "List of resources configured for this resource group. The resources are executed in the exact order specified here."
        }
      },
      "type": "object",
      "required": [
        "inventoryFilters",
        "resources"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResource": {
      "description": "A resource that manages a system package.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceAPT",
          "description": "A package managed by Apt."
        },
        "deb": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceDeb",
          "description": "A deb package file."
        },
        "desiredState": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceDesiredState",
          "description": "The desired state the agent should maintain for this package."
        },
        "googet": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceGooGet",
          "description": "A package managed by GooGet."
        },
        "msi": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceMSI",
          "description": "An MSI package."
        },
        "rpm": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceRPM",
          "description": "An rpm package file."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceYUM",
          "description": "A package managed by YUM."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceZypper",
          "description": "A package managed by Zypper."
        }
      },
      "type": "object",
      "required": [
        "desiredState"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceAPT": {
      "description": "A package managed by APT. - install: `apt-get update && apt-get -y install [name]` - remove: `apt-get -y remove [name]`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceAPTResponse": {
      "description": "A package managed by APT. - install: `apt-get update && apt-get -y install [name]` - remove: `apt-get -y remove [name]`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceDeb": {
      "description": "A deb package file. dpkg packages only support INSTALLED state.",
      "properties": {
        "pullDeps": {
          "type": "boolean",
          "description": "Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update && apt-get -y install package.deb`"
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFile",
          "description": "A deb package."
        }
      },
      "type": "object",
      "required": [
        "source"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceDebResponse": {
      "description": "A deb package file. dpkg packages only support INSTALLED state.",
      "properties": {
        "pullDeps": {
          "type": "boolean",
          "description": "Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update && apt-get -y install package.deb`"
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileResponse",
          "description": "A deb package."
        }
      },
      "type": "object",
      "required": [
        "pullDeps",
        "source"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceDesiredState": {
      "description": "Required. The desired state the agent should maintain for this package.",
      "type": "string",
      "enum": [
        {
          "name": "DesiredStateUnspecified",
          "description": "Unspecified is invalid.",
          "value": "DESIRED_STATE_UNSPECIFIED"
        },
        {
          "name": "Installed",
          "description": "Ensure that the package is installed.",
          "value": "INSTALLED"
        },
        {
          "name": "Removed",
          "description": "The agent ensures that the package is not installed and uninstalls it if detected.",
          "value": "REMOVED"
        }
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceGooGet": {
      "description": "A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceGooGetResponse": {
      "description": "A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceMSI": {
      "description": "An MSI package. MSI packages only support INSTALLED state.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`."
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFile",
          "description": "The MSI package."
        }
      },
      "type": "object",
      "required": [
        "source"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceMSIResponse": {
      "description": "An MSI package. MSI packages only support INSTALLED state.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`."
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileResponse",
          "description": "The MSI package."
        }
      },
      "type": "object",
      "required": [
        "properties",
        "source"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceRPM": {
      "description": "An RPM package file. RPM packages only support INSTALLED state.",
      "properties": {
        "pullDeps": {
          "type": "boolean",
          "description": "Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`"
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFile",
          "description": "An rpm package."
        }
      },
      "type": "object",
      "required": [
        "source"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceRPMResponse": {
      "description": "An RPM package file. RPM packages only support INSTALLED state.",
      "properties": {
        "pullDeps": {
          "type": "boolean",
          "description": "Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`"
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileResponse",
          "description": "An rpm package."
        }
      },
      "type": "object",
      "required": [
        "pullDeps",
        "source"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceResponse": {
      "description": "A resource that manages a system package.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceAPTResponse",
          "description": "A package managed by Apt."
        },
        "deb": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceDebResponse",
          "description": "A deb package file."
        },
        "desiredState": {
          "type": "string",
          "description": "The desired state the agent should maintain for this package."
        },
        "googet": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceGooGetResponse",
          "description": "A package managed by GooGet."
        },
        "msi": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceMSIResponse",
          "description": "An MSI package."
        },
        "rpm": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceRPMResponse",
          "description": "An rpm package file."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceYUMResponse",
          "description": "A package managed by YUM."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceZypperResponse",
          "description": "A package managed by Zypper."
        }
      },
      "type": "object",
      "required": [
        "apt",
        "deb",
        "desiredState",
        "googet",
        "msi",
        "rpm",
        "yum",
        "zypper"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceYUM": {
      "description": "A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceYUMResponse": {
      "description": "A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceZypper": {
      "description": "A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourcePackageResourceZypperResponse": {
      "description": "A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResource": {
      "description": "A resource that manages a package repository.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceAptRepository",
          "description": "An Apt Repository."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceGooRepository",
          "description": "A Goo Repository."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceYumRepository",
          "description": "A Yum Repository."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceZypperRepository",
          "description": "A Zypper Repository."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceAptRepository": {
      "description": "Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`.",
      "properties": {
        "archiveType": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceAptRepositoryArchiveType",
          "description": "Type of archive files in this repository."
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of components for this repository. Must contain at least one item."
        },
        "distribution": {
          "type": "string",
          "description": "Distribution of this repository."
        },
        "gpgKey": {
          "type": "string",
          "description": "URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`."
        },
        "uri": {
          "type": "string",
          "description": "URI for this repository."
        }
      },
      "type": "object",
      "required": [
        "archiveType",
        "components",
        "distribution",
        "uri"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceAptRepositoryArchiveType": {
      "description": "Required. Type of archive files in this repository.",
      "type": "string",
      "enum": [
        {
          "name": "ArchiveTypeUnspecified",
          "description": "Unspecified is invalid.",
          "value": "ARCHIVE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Deb",
          "description": "Deb indicates that the archive contains binary files.",
          "value": "DEB"
        },
        {
          "name": "DebSrc",
          "description": "Deb-src indicates that the archive contains source files.",
          "value": "DEB_SRC"
        }
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceAptRepositoryResponse": {
      "description": "Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`.",
      "properties": {
        "archiveType": {
          "type": "string",
          "description": "Type of archive files in this repository."
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of components for this repository. Must contain at least one item."
        },
        "distribution": {
          "type": "string",
          "description": "Distribution of this repository."
        },
        "gpgKey": {
          "type": "string",
          "description": "URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`."
        },
        "uri": {
          "type": "string",
          "description": "URI for this repository."
        }
      },
      "type": "object",
      "required": [
        "archiveType",
        "components",
        "distribution",
        "gpgKey",
        "uri"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceGooRepository": {
      "description": "Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the repository."
        },
        "url": {
          "type": "string",
          "description": "The url of the repository."
        }
      },
      "type": "object",
      "required": [
        "name",
        "url"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceGooRepositoryResponse": {
      "description": "Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the repository."
        },
        "url": {
          "type": "string",
          "description": "The url of the repository."
        }
      },
      "type": "object",
      "required": [
        "name",
        "url"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceResponse": {
      "description": "A resource that manages a package repository.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceAptRepositoryResponse",
          "description": "An Apt Repository."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceGooRepositoryResponse",
          "description": "A Goo Repository."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceYumRepositoryResponse",
          "description": "A Yum Repository."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceZypperRepositoryResponse",
          "description": "A Zypper Repository."
        }
      },
      "type": "object",
      "required": [
        "apt",
        "goo",
        "yum",
        "zypper"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceYumRepository": {
      "description": "Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        },
        "id": {
          "type": "string",
          "description": "A one word, unique name for this repository. This is the `repo id` in the yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for resource conflicts."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "id"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceYumRepositoryResponse": {
      "description": "Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "displayName",
        "gpgKeys"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceZypperRepository": {
      "description": "Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        },
        "id": {
          "type": "string",
          "description": "A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for GuestPolicy conflicts."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "id"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceRepositoryResourceZypperRepositoryResponse": {
      "description": "Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "displayName",
        "gpgKeys"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResourceResponse": {
      "description": "An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceExecResourceResponse",
          "description": "Exec resource"
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceFileResourceResponse",
          "description": "File resource"
        },
        "pkg": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourcePackageResourceResponse",
          "description": "Package resource"
        },
        "repository": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceRepositoryResourceResponse",
          "description": "Package repository resource"
        }
      },
      "type": "object",
      "required": [
        "exec",
        "file",
        "pkg",
        "repository"
      ]
    },
    "google-native:osconfig/v1:OSPolicyResponse": {
      "description": "An OS policy defines the desired state configuration for a VM.",
      "properties": {
        "allowNoResourceGroupMatch": {
          "type": "boolean",
          "description": "This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce."
        },
        "description": {
          "type": "string",
          "description": "Policy description. Length of the description is limited to 1024 characters."
        },
        "mode": {
          "type": "string",
          "description": "Policy mode"
        },
        "resourceGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResourceGroupResponse"
          },
          "description": "List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`"
        }
      },
      "type": "object",
      "required": [
        "allowNoResourceGroupMatch",
        "description",
        "mode",
        "resourceGroups"
      ]
    },
    "google-native:osconfig/v1:OneTimeSchedule": {
      "description": "Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
      "properties": {
        "executeTime": {
          "type": "string",
          "description": "The desired patch job execution time."
        }
      },
      "type": "object",
      "required": [
        "executeTime"
      ]
    },
    "google-native:osconfig/v1:OneTimeScheduleResponse": {
      "description": "Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
      "properties": {
        "executeTime": {
          "type": "string",
          "description": "The desired patch job execution time."
        }
      },
      "type": "object",
      "required": [
        "executeTime"
      ]
    },
    "google-native:osconfig/v1:PatchConfig": {
      "description": "Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1:AptSettings",
          "description": "Apt update settings. Use this setting to override the default `apt` patch rules."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1:GooSettings",
          "description": "Goo update settings. Use this setting to override the default `goo` patch rules."
        },
        "migInstancesAllowed": {
          "type": "boolean",
          "description": "Allows the patch job to run on Managed instance groups (MIGs)."
        },
        "postStep": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStep",
          "description": "The `ExecStep` to run after the patch update."
        },
        "preStep": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStep",
          "description": "The `ExecStep` to run before the patch update."
        },
        "rebootConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1:PatchConfigRebootConfig",
          "description": "Post-patch reboot settings."
        },
        "windowsUpdate": {
          "$ref": "#/types/google-native:osconfig%2Fv1:WindowsUpdateSettings",
          "description": "Windows update settings. Use this override the default windows patch rules."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1:YumSettings",
          "description": "Yum update settings. Use this setting to override the default `yum` patch rules."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ZypperSettings",
          "description": "Zypper update settings. Use this setting to override the default `zypper` patch rules."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:PatchConfigRebootConfig": {
      "description": "Post-patch reboot settings.",
      "type": "string",
      "enum": [
        {
          "name": "RebootConfigUnspecified",
          "description": "The default behavior is DEFAULT.",
          "value": "REBOOT_CONFIG_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "The agent decides if a reboot is necessary by checking signals such as registry keys on Windows or `/var/run/reboot-required` on APT based systems. On RPM based systems, a set of core system package install times are compared with system boot time.",
          "value": "DEFAULT"
        },
        {
          "name": "Always",
          "description": "Always reboot the machine after the update completes.",
          "value": "ALWAYS"
        },
        {
          "name": "Never",
          "description": "Never reboot the machine after the update completes.",
          "value": "NEVER"
        }
      ]
    },
    "google-native:osconfig/v1:PatchConfigResponse": {
      "description": "Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1:AptSettingsResponse",
          "description": "Apt update settings. Use this setting to override the default `apt` patch rules."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1:GooSettingsResponse",
          "description": "Goo update settings. Use this setting to override the default `goo` patch rules."
        },
        "migInstancesAllowed": {
          "type": "boolean",
          "description": "Allows the patch job to run on Managed instance groups (MIGs)."
        },
        "postStep": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStepResponse",
          "description": "The `ExecStep` to run after the patch update."
        },
        "preStep": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ExecStepResponse",
          "description": "The `ExecStep` to run before the patch update."
        },
        "rebootConfig": {
          "type": "string",
          "description": "Post-patch reboot settings."
        },
        "windowsUpdate": {
          "$ref": "#/types/google-native:osconfig%2Fv1:WindowsUpdateSettingsResponse",
          "description": "Windows update settings. Use this override the default windows patch rules."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1:YumSettingsResponse",
          "description": "Yum update settings. Use this setting to override the default `yum` patch rules."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1:ZypperSettingsResponse",
          "description": "Zypper update settings. Use this setting to override the default `zypper` patch rules."
        }
      },
      "type": "object",
      "required": [
        "apt",
        "goo",
        "migInstancesAllowed",
        "postStep",
        "preStep",
        "rebootConfig",
        "windowsUpdate",
        "yum",
        "zypper"
      ]
    },
    "google-native:osconfig/v1:PatchInstanceFilter": {
      "description": "A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Target all VM instances in the project. If true, no other criteria is permitted."
        },
        "groupLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:PatchInstanceFilterGroupLabel"
          },
          "description": "Targets VM instances matching ANY of these GroupLabels. This allows targeting of disparate groups of VM instances."
        },
        "instanceNamePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=\"prod-\"."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`"
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:PatchInstanceFilterGroupLabel": {
      "description": "Targets a group of VM instances by using their [assigned labels](https://cloud.google.com/compute/docs/labeling-resources). Labels are key-value pairs. A `GroupLabel` is a combination of labels that is used to target VMs for a patch job. For example, a patch job can target VMs that have the following `GroupLabel`: `{\"env\":\"test\", \"app\":\"web\"}`. This means that the patch job is applied to VMs that have both the labels `env=test` and `app=web`.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Compute Engine instance labels that must be present for a VM instance to be targeted by this filter."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:PatchInstanceFilterGroupLabelResponse": {
      "description": "Targets a group of VM instances by using their [assigned labels](https://cloud.google.com/compute/docs/labeling-resources). Labels are key-value pairs. A `GroupLabel` is a combination of labels that is used to target VMs for a patch job. For example, a patch job can target VMs that have the following `GroupLabel`: `{\"env\":\"test\", \"app\":\"web\"}`. This means that the patch job is applied to VMs that have both the labels `env=test` and `app=web`.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Compute Engine instance labels that must be present for a VM instance to be targeted by this filter."
        }
      },
      "type": "object",
      "required": [
        "labels"
      ]
    },
    "google-native:osconfig/v1:PatchInstanceFilterResponse": {
      "description": "A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Target all VM instances in the project. If true, no other criteria is permitted."
        },
        "groupLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:PatchInstanceFilterGroupLabelResponse"
          },
          "description": "Targets VM instances matching ANY of these GroupLabels. This allows targeting of disparate groups of VM instances."
        },
        "instanceNamePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=\"prod-\"."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`"
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone."
        }
      },
      "type": "object",
      "required": [
        "all",
        "groupLabels",
        "instanceNamePrefixes",
        "instances",
        "zones"
      ]
    },
    "google-native:osconfig/v1:PatchRollout": {
      "description": "Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs.",
      "properties": {
        "disruptionBudget": {
          "$ref": "#/types/google-native:osconfig%2Fv1:FixedOrPercent",
          "description": "The maximum number (or percentage) of VMs per zone to disrupt at any given moment. The number of VMs calculated from multiplying the percentage by the total number of VMs in a zone is rounded up. During patching, a VM is considered disrupted from the time the agent is notified to begin until patching has completed. This disruption time includes the time to complete reboot and any post-patch steps. A VM contributes to the disruption budget if its patching operation fails either when applying the patches, running pre or post patch steps, or if it fails to respond with a success notification before timing out. VMs that are not running or do not have an active agent do not count toward this disruption budget. For zone-by-zone rollouts, if the disruption budget in a zone is exceeded, the patch job stops, because continuing to the next zone requires completion of the patch process in the previous zone. For example, if the disruption budget has a fixed value of `10`, and 8 VMs fail to patch in the current zone, the patch job continues to patch 2 VMs at a time until the zone is completed. When that zone is completed successfully, patching begins with 10 VMs at a time in the next zone. If 10 VMs in the next zone fail to patch, the patch job stops."
        },
        "mode": {
          "$ref": "#/types/google-native:osconfig%2Fv1:PatchRolloutMode",
          "description": "Mode of the patch rollout."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:PatchRolloutMode": {
      "description": "Mode of the patch rollout.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Mode must be specified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "ZoneByZone",
          "description": "Patches are applied one zone at a time. The patch job begins in the region with the lowest number of targeted VMs. Within the region, patching begins in the zone with the lowest number of targeted VMs. If multiple regions (or zones within a region) have the same number of targeted VMs, a tie-breaker is achieved by sorting the regions or zones in alphabetical order.",
          "value": "ZONE_BY_ZONE"
        },
        {
          "name": "ConcurrentZones",
          "description": "Patches are applied to VMs in all zones at the same time.",
          "value": "CONCURRENT_ZONES"
        }
      ]
    },
    "google-native:osconfig/v1:PatchRolloutResponse": {
      "description": "Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs.",
      "properties": {
        "disruptionBudget": {
          "$ref": "#/types/google-native:osconfig%2Fv1:FixedOrPercentResponse",
          "description": "The maximum number (or percentage) of VMs per zone to disrupt at any given moment. The number of VMs calculated from multiplying the percentage by the total number of VMs in a zone is rounded up. During patching, a VM is considered disrupted from the time the agent is notified to begin until patching has completed. This disruption time includes the time to complete reboot and any post-patch steps. A VM contributes to the disruption budget if its patching operation fails either when applying the patches, running pre or post patch steps, or if it fails to respond with a success notification before timing out. VMs that are not running or do not have an active agent do not count toward this disruption budget. For zone-by-zone rollouts, if the disruption budget in a zone is exceeded, the patch job stops, because continuing to the next zone requires completion of the patch process in the previous zone. For example, if the disruption budget has a fixed value of `10`, and 8 VMs fail to patch in the current zone, the patch job continues to patch 2 VMs at a time until the zone is completed. When that zone is completed successfully, patching begins with 10 VMs at a time in the next zone. If 10 VMs in the next zone fail to patch, the patch job stops."
        },
        "mode": {
          "type": "string",
          "description": "Mode of the patch rollout."
        }
      },
      "type": "object",
      "required": [
        "disruptionBudget",
        "mode"
      ]
    },
    "google-native:osconfig/v1:RecurringSchedule": {
      "description": "Sets the time for recurring patch deployments.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. The end time at which a recurring patch deployment schedule is no longer active."
        },
        "frequency": {
          "$ref": "#/types/google-native:osconfig%2Fv1:RecurringScheduleFrequency",
          "description": "The frequency unit of this recurring schedule."
        },
        "monthly": {
          "$ref": "#/types/google-native:osconfig%2Fv1:MonthlySchedule",
          "description": "Schedule with monthly executions."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. The time that the recurring schedule becomes effective. Defaults to `create_time` of the patch deployment."
        },
        "timeOfDay": {
          "$ref": "#/types/google-native:osconfig%2Fv1:TimeOfDay",
          "description": "Time of the day to run a recurring deployment."
        },
        "timeZone": {
          "$ref": "#/types/google-native:osconfig%2Fv1:TimeZone",
          "description": "Defines the time zone that `time_of_day` is relative to. The rules for daylight saving time are determined by the chosen time zone."
        },
        "weekly": {
          "$ref": "#/types/google-native:osconfig%2Fv1:WeeklySchedule",
          "description": "Schedule with weekly executions."
        }
      },
      "type": "object",
      "required": [
        "frequency",
        "monthly",
        "timeOfDay",
        "timeZone",
        "weekly"
      ]
    },
    "google-native:osconfig/v1:RecurringScheduleFrequency": {
      "description": "Required. The frequency unit of this recurring schedule.",
      "type": "string",
      "enum": [
        {
          "name": "FrequencyUnspecified",
          "description": "Invalid. A frequency must be specified.",
          "value": "FREQUENCY_UNSPECIFIED"
        },
        {
          "name": "Weekly",
          "description": "Indicates that the frequency of recurrence should be expressed in terms of weeks.",
          "value": "WEEKLY"
        },
        {
          "name": "Monthly",
          "description": "Indicates that the frequency of recurrence should be expressed in terms of months.",
          "value": "MONTHLY"
        },
        {
          "name": "Daily",
          "description": "Indicates that the frequency of recurrence should be expressed in terms of days.",
          "value": "DAILY"
        }
      ]
    },
    "google-native:osconfig/v1:RecurringScheduleResponse": {
      "description": "Sets the time for recurring patch deployments.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. The end time at which a recurring patch deployment schedule is no longer active."
        },
        "frequency": {
          "type": "string",
          "description": "The frequency unit of this recurring schedule."
        },
        "lastExecuteTime": {
          "type": "string",
          "description": "The time the last patch job ran successfully."
        },
        "monthly": {
          "$ref": "#/types/google-native:osconfig%2Fv1:MonthlyScheduleResponse",
          "description": "Schedule with monthly executions."
        },
        "nextExecuteTime": {
          "type": "string",
          "description": "The time the next patch job is scheduled to run."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. The time that the recurring schedule becomes effective. Defaults to `create_time` of the patch deployment."
        },
        "timeOfDay": {
          "$ref": "#/types/google-native:osconfig%2Fv1:TimeOfDayResponse",
          "description": "Time of the day to run a recurring deployment."
        },
        "timeZone": {
          "$ref": "#/types/google-native:osconfig%2Fv1:TimeZoneResponse",
          "description": "Defines the time zone that `time_of_day` is relative to. The rules for daylight saving time are determined by the chosen time zone."
        },
        "weekly": {
          "$ref": "#/types/google-native:osconfig%2Fv1:WeeklyScheduleResponse",
          "description": "Schedule with weekly executions."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "frequency",
        "lastExecuteTime",
        "monthly",
        "nextExecuteTime",
        "startTime",
        "timeOfDay",
        "timeZone",
        "weekly"
      ]
    },
    "google-native:osconfig/v1:TimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:TimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:osconfig/v1:TimeZone": {
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "properties": {
        "id": {
          "type": "string",
          "description": "IANA Time Zone Database time zone, e.g. \"America/New_York\"."
        },
        "version": {
          "type": "string",
          "description": "Optional. IANA Time Zone Database version number, e.g. \"2019a\"."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:TimeZoneResponse": {
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "properties": {
        "version": {
          "type": "string",
          "description": "Optional. IANA Time Zone Database version number, e.g. \"2019a\"."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:osconfig/v1:WeekDayOfMonth": {
      "description": "Represents one week day in a month. An example is \"the 4th Sunday\".",
      "properties": {
        "dayOfWeek": {
          "$ref": "#/types/google-native:osconfig%2Fv1:WeekDayOfMonthDayOfWeek",
          "description": "A day of the week."
        },
        "dayOffset": {
          "type": "integer",
          "description": "Optional. Represents the number of days before or after the given week day of month that the patch deployment is scheduled for. For example if `week_ordinal` and `day_of_week` values point to the second day of the month and this `day_offset` value is set to `3`, the patch deployment takes place three days after the second Tuesday of the month. If this value is negative, for example -5, the patches are deployed five days before before the second Tuesday of the month. Allowed values are in range [-30, 30]."
        },
        "weekOrdinal": {
          "type": "integer",
          "description": "Week number in a month. 1-4 indicates the 1st to 4th week of the month. -1 indicates the last week of the month."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "weekOrdinal"
      ]
    },
    "google-native:osconfig/v1:WeekDayOfMonthDayOfWeek": {
      "description": "Required. A day of the week.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:osconfig/v1:WeekDayOfMonthResponse": {
      "description": "Represents one week day in a month. An example is \"the 4th Sunday\".",
      "properties": {
        "dayOfWeek": {
          "type": "string",
          "description": "A day of the week."
        },
        "dayOffset": {
          "type": "integer",
          "description": "Optional. Represents the number of days before or after the given week day of month that the patch deployment is scheduled for. For example if `week_ordinal` and `day_of_week` values point to the second day of the month and this `day_offset` value is set to `3`, the patch deployment takes place three days after the second Tuesday of the month. If this value is negative, for example -5, the patches are deployed five days before before the second Tuesday of the month. Allowed values are in range [-30, 30]."
        },
        "weekOrdinal": {
          "type": "integer",
          "description": "Week number in a month. 1-4 indicates the 1st to 4th week of the month. -1 indicates the last week of the month."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "dayOffset",
        "weekOrdinal"
      ]
    },
    "google-native:osconfig/v1:WeeklySchedule": {
      "description": "Represents a weekly schedule.",
      "properties": {
        "dayOfWeek": {
          "$ref": "#/types/google-native:osconfig%2Fv1:WeeklyScheduleDayOfWeek",
          "description": "Day of the week."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek"
      ]
    },
    "google-native:osconfig/v1:WeeklyScheduleDayOfWeek": {
      "description": "Required. Day of the week.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:osconfig/v1:WeeklyScheduleResponse": {
      "description": "Represents a weekly schedule.",
      "properties": {
        "dayOfWeek": {
          "type": "string",
          "description": "Day of the week."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek"
      ]
    },
    "google-native:osconfig/v1:WindowsUpdateSettings": {
      "description": "Windows patching is performed using the Windows Update Agent.",
      "properties": {
        "classifications": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:WindowsUpdateSettingsClassificationsItem"
          },
          "description": "Only apply updates of these windows update classifications. If empty, all updates are applied."
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of KBs to exclude from update."
        },
        "exclusivePatches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:WindowsUpdateSettingsClassificationsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ClassificationUnspecified",
          "description": "Invalid. If classifications are included, they must be specified.",
          "value": "CLASSIFICATION_UNSPECIFIED"
        },
        {
          "name": "Critical",
          "description": "\"A widely released fix for a specific problem that addresses a critical, non-security-related bug.\" [1]",
          "value": "CRITICAL"
        },
        {
          "name": "Security",
          "description": "\"A widely released fix for a product-specific, security-related vulnerability. Security vulnerabilities are rated by their severity. The severity rating is indicated in the Microsoft security bulletin as critical, important, moderate, or low.\" [1]",
          "value": "SECURITY"
        },
        {
          "name": "Definition",
          "description": "\"A widely released and frequent software update that contains additions to a product's definition database. Definition databases are often used to detect objects that have specific attributes, such as malicious code, phishing websites, or junk mail.\" [1]",
          "value": "DEFINITION"
        },
        {
          "name": "Driver",
          "description": "\"Software that controls the input and output of a device.\" [1]",
          "value": "DRIVER"
        },
        {
          "name": "FeaturePack",
          "description": "\"New product functionality that is first distributed outside the context of a product release and that is typically included in the next full product release.\" [1]",
          "value": "FEATURE_PACK"
        },
        {
          "name": "ServicePack",
          "description": "\"A tested, cumulative set of all hotfixes, security updates, critical updates, and updates. Additionally, service packs may contain additional fixes for problems that are found internally since the release of the product. Service packs my also contain a limited number of customer-requested design changes or features.\" [1]",
          "value": "SERVICE_PACK"
        },
        {
          "name": "Tool",
          "description": "\"A utility or feature that helps complete a task or set of tasks.\" [1]",
          "value": "TOOL"
        },
        {
          "name": "UpdateRollup",
          "description": "\"A tested, cumulative set of hotfixes, security updates, critical updates, and updates that are packaged together for easy deployment. A rollup generally targets a specific area, such as security, or a component of a product, such as Internet Information Services (IIS).\" [1]",
          "value": "UPDATE_ROLLUP"
        },
        {
          "name": "Update",
          "description": "\"A widely released fix for a specific problem. An update addresses a noncritical, non-security-related bug.\" [1]",
          "value": "UPDATE"
        }
      ]
    },
    "google-native:osconfig/v1:WindowsUpdateSettingsResponse": {
      "description": "Windows patching is performed using the Windows Update Agent.",
      "properties": {
        "classifications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only apply updates of these windows update classifications. If empty, all updates are applied."
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of KBs to exclude from update."
        },
        "exclusivePatches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations."
        }
      },
      "type": "object",
      "required": [
        "classifications",
        "excludes",
        "exclusivePatches"
      ]
    },
    "google-native:osconfig/v1:YumSettings": {
      "description": "Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms.",
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag."
        },
        "exclusivePackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields."
        },
        "minimal": {
          "type": "boolean",
          "description": "Will cause patch to run `yum update-minimal` instead."
        },
        "security": {
          "type": "boolean",
          "description": "Adds the `--security` flag to `yum update`. Not supported on all platforms."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:YumSettingsResponse": {
      "description": "Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms.",
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag."
        },
        "exclusivePackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields."
        },
        "minimal": {
          "type": "boolean",
          "description": "Will cause patch to run `yum update-minimal` instead."
        },
        "security": {
          "type": "boolean",
          "description": "Adds the `--security` flag to `yum update`. Not supported on all platforms."
        }
      },
      "type": "object",
      "required": [
        "excludes",
        "exclusivePackages",
        "minimal",
        "security"
      ]
    },
    "google-native:osconfig/v1:ZypperSettings": {
      "description": "Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Install only patches with these categories. Common categories include security, recommended, and feature."
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of patches to exclude from update."
        },
        "exclusivePatches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of patches to be updated. These are the only patches that will be installed using 'zypper patch patch:' command. This field must not be used with any other patch configuration fields."
        },
        "severities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Install only patches with these severities. Common severities include critical, important, moderate, and low."
        },
        "withOptional": {
          "type": "boolean",
          "description": "Adds the `--with-optional` flag to `zypper patch`."
        },
        "withUpdate": {
          "type": "boolean",
          "description": "Adds the `--with-update` flag, to `zypper patch`."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1:ZypperSettingsResponse": {
      "description": "Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Install only patches with these categories. Common categories include security, recommended, and feature."
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of patches to exclude from update."
        },
        "exclusivePatches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of patches to be updated. These are the only patches that will be installed using 'zypper patch patch:' command. This field must not be used with any other patch configuration fields."
        },
        "severities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Install only patches with these severities. Common severities include critical, important, moderate, and low."
        },
        "withOptional": {
          "type": "boolean",
          "description": "Adds the `--with-optional` flag to `zypper patch`."
        },
        "withUpdate": {
          "type": "boolean",
          "description": "Adds the `--with-update` flag, to `zypper patch`."
        }
      },
      "type": "object",
      "required": [
        "categories",
        "excludes",
        "exclusivePatches",
        "severities",
        "withOptional",
        "withUpdate"
      ]
    },
    "google-native:osconfig/v1alpha:FixedOrPercent": {
      "description": "Message encapsulating a value that can be either absolute (\"fixed\") or relative (\"percent\") to a value.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed value."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies the relative value defined as a percentage, which will be multiplied by a reference value."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1alpha:FixedOrPercentResponse": {
      "description": "Message encapsulating a value that can be either absolute (\"fixed\") or relative (\"percent\") to a value.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed value."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies the relative value defined as a percentage, which will be multiplied by a reference value."
        }
      },
      "type": "object",
      "required": [
        "fixed",
        "percent"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicy": {
      "description": "An OS policy defines the desired state configuration for a VM.",
      "properties": {
        "allowNoResourceGroupMatch": {
          "type": "boolean",
          "description": "This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce."
        },
        "description": {
          "type": "string",
          "description": "Policy description. Length of the description is limited to 1024 characters."
        },
        "id": {
          "type": "string",
          "description": "The id of the OS policy with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the assignment."
        },
        "mode": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyMode",
          "description": "Policy mode"
        },
        "resourceGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceGroup"
          },
          "description": "List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`"
        }
      },
      "type": "object",
      "required": [
        "id",
        "mode",
        "resourceGroups"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyAssignmentInstanceFilter": {
      "description": "Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Target all VMs in the project. If true, no other criteria is permitted."
        },
        "exclusionLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentLabelSet"
          },
          "description": "List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM."
        },
        "inclusionLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentLabelSet"
          },
          "description": "List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM."
        },
        "inventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentInstanceFilterInventory"
          },
          "description": "List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories."
        },
        "osShortNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated. Use the `inventories` field instead. A VM is selected if it's OS short name matches with any of the values provided in this list.",
          "deprecationMessage": "Deprecated. Use the `inventories` field instead. A VM is selected if it's OS short name matches with any of the values provided in this list."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1alpha:OSPolicyAssignmentInstanceFilterInventory": {
      "description": "VM inventory details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "The OS short name"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions."
        }
      },
      "type": "object",
      "required": [
        "osShortName"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyAssignmentInstanceFilterInventoryResponse": {
      "description": "VM inventory details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "The OS short name"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions."
        }
      },
      "type": "object",
      "required": [
        "osShortName",
        "osVersion"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyAssignmentInstanceFilterResponse": {
      "description": "Filters to select target VMs for an assignment. If more than one filter criteria is specified below, a VM will be selected if and only if it satisfies all of them.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Target all VMs in the project. If true, no other criteria is permitted."
        },
        "exclusionLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentLabelSetResponse"
          },
          "description": "List of label sets used for VM exclusion. If the list has more than one label set, the VM is excluded if any of the label sets are applicable for the VM."
        },
        "inclusionLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentLabelSetResponse"
          },
          "description": "List of label sets used for VM inclusion. If the list has more than one `LabelSet`, the VM is included if any of the label sets are applicable for the VM."
        },
        "inventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentInstanceFilterInventoryResponse"
          },
          "description": "List of inventories to select VMs. A VM is selected if its inventory data matches at least one of the following inventories."
        },
        "osShortNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated. Use the `inventories` field instead. A VM is selected if it's OS short name matches with any of the values provided in this list.",
          "deprecationMessage": "Deprecated. Use the `inventories` field instead. A VM is selected if it's OS short name matches with any of the values provided in this list."
        }
      },
      "type": "object",
      "required": [
        "all",
        "exclusionLabels",
        "inclusionLabels",
        "inventories",
        "osShortNames"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyAssignmentLabelSet": {
      "description": "Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1alpha:OSPolicyAssignmentLabelSetResponse": {
      "description": "Message representing label set. * A label is a key value pair set for a VM. * A LabelSet is a set of labels. * Labels within a LabelSet are ANDed. In other words, a LabelSet is applicable for a VM only if it matches all the labels in the LabelSet. * Example: A LabelSet with 2 labels: `env=prod` and `type=webserver` will only be applicable for those VMs with both labels present.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are identified by key/value pairs in this map. A VM should contain all the key/value pairs specified in this map to be selected."
        }
      },
      "type": "object",
      "required": [
        "labels"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyAssignmentRollout": {
      "description": "Message to configure the rollout at the zonal level for the OS policy assignment.",
      "properties": {
        "disruptionBudget": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:FixedOrPercent",
          "description": "The maximum number (or percentage) of VMs per zone to disrupt at any given moment."
        },
        "minWaitDuration": {
          "type": "string",
          "description": "This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied."
        }
      },
      "type": "object",
      "required": [
        "disruptionBudget",
        "minWaitDuration"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyAssignmentRolloutResponse": {
      "description": "Message to configure the rollout at the zonal level for the OS policy assignment.",
      "properties": {
        "disruptionBudget": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:FixedOrPercentResponse",
          "description": "The maximum number (or percentage) of VMs per zone to disrupt at any given moment."
        },
        "minWaitDuration": {
          "type": "string",
          "description": "This determines the minimum duration of time to wait after the configuration changes are applied through the current rollout. A VM continues to count towards the `disruption_budget` at least until this duration of time has passed after configuration changes are applied."
        }
      },
      "type": "object",
      "required": [
        "disruptionBudget",
        "minWaitDuration"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyInventoryFilter": {
      "description": "Filtering criteria to select VMs based on inventory details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "The OS short name"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions."
        }
      },
      "type": "object",
      "required": [
        "osShortName"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyInventoryFilterResponse": {
      "description": "Filtering criteria to select VMs based on inventory details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "The OS short name"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*` An empty string matches all OS versions."
        }
      },
      "type": "object",
      "required": [
        "osShortName",
        "osVersion"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyMode": {
      "description": "Required. Policy mode",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Invalid mode",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Validation",
          "description": "This mode checks if the configuration resources in the policy are in their desired state. No actions are performed if they are not in the desired state. This mode is used for reporting purposes.",
          "value": "VALIDATION"
        },
        {
          "name": "Enforcement",
          "description": "This mode checks if the configuration resources in the policy are in their desired state, and if not, enforces the desired state.",
          "value": "ENFORCEMENT"
        }
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyOSFilter": {
      "description": "Filtering criteria to select VMs based on OS details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "This should match OS short name emitted by the OS inventory agent. An empty value matches any OS."
        },
        "osVersion": {
          "type": "string",
          "description": "This value should match the version emitted by the OS inventory agent. Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*`"
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1alpha:OSPolicyOSFilterResponse": {
      "description": "Filtering criteria to select VMs based on OS details.",
      "properties": {
        "osShortName": {
          "type": "string",
          "description": "This should match OS short name emitted by the OS inventory agent. An empty value matches any OS."
        },
        "osVersion": {
          "type": "string",
          "description": "This value should match the version emitted by the OS inventory agent. Prefix matches are supported if asterisk(*) is provided as the last character. For example, to match all versions with a major version of `7`, specify the following value for this field `7.*`"
        }
      },
      "type": "object",
      "required": [
        "osShortName",
        "osVersion"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResource": {
      "description": "An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceExecResource",
          "description": "Exec resource"
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileResource",
          "description": "File resource"
        },
        "id": {
          "type": "string",
          "description": "The id of the resource with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the OS policy."
        },
        "pkg": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResource",
          "description": "Package resource"
        },
        "repository": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResource",
          "description": "Package repository resource"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceExecResource": {
      "description": "A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen.",
      "properties": {
        "enforce": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceExecResourceExec",
          "description": "What to run to bring this resource into the desired state. An exit code of 100 indicates \"success\", any other exit code indicates a failure running enforce."
        },
        "validate": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceExecResourceExec",
          "description": "What to run to validate this resource is in the desired state. An exit code of 100 indicates \"in desired state\", and exit code of 101 indicates \"not in desired state\". Any other exit code indicates a failure running validate."
        }
      },
      "type": "object",
      "required": [
        "validate"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceExecResourceExec": {
      "description": "A file or script to execute.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional arguments to pass to the source during execution."
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFile",
          "description": "A remote or local file."
        },
        "interpreter": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceExecResourceExecInterpreter",
          "description": "The script interpreter to use."
        },
        "outputFilePath": {
          "type": "string",
          "description": "Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes."
        },
        "script": {
          "type": "string",
          "description": "An inline script. The size of the script is limited to 32KiB."
        }
      },
      "type": "object",
      "required": [
        "interpreter"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceExecResourceExecInterpreter": {
      "description": "Required. The script interpreter to use.",
      "type": "string",
      "enum": [
        {
          "name": "InterpreterUnspecified",
          "description": "Invalid value, the request will return validation error.",
          "value": "INTERPRETER_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "If an interpreter is not specified, the source is executed directly. This execution, without an interpreter, only succeeds for executables and scripts that have shebang lines.",
          "value": "NONE"
        },
        {
          "name": "Shell",
          "description": "Indicates that the script runs with `/bin/sh` on Linux and `cmd.exe` on Windows.",
          "value": "SHELL"
        },
        {
          "name": "Powershell",
          "description": "Indicates that the script runs with PowerShell.",
          "value": "POWERSHELL"
        }
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceExecResourceExecResponse": {
      "description": "A file or script to execute.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional arguments to pass to the source during execution."
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileResponse",
          "description": "A remote or local file."
        },
        "interpreter": {
          "type": "string",
          "description": "The script interpreter to use."
        },
        "outputFilePath": {
          "type": "string",
          "description": "Only recorded for enforce Exec. Path to an output file (that is created by this Exec) whose content will be recorded in OSPolicyResourceCompliance after a successful run. Absence or failure to read this file will result in this ExecResource being non-compliant. Output file size is limited to 100K bytes."
        },
        "script": {
          "type": "string",
          "description": "An inline script. The size of the script is limited to 32KiB."
        }
      },
      "type": "object",
      "required": [
        "args",
        "file",
        "interpreter",
        "outputFilePath",
        "script"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceExecResourceResponse": {
      "description": "A resource that allows executing scripts on the VM. The `ExecResource` has 2 stages: `validate` and `enforce` and both stages accept a script as an argument to execute. When the `ExecResource` is applied by the agent, it first executes the script in the `validate` stage. The `validate` stage can signal that the `ExecResource` is already in the desired state by returning an exit code of `100`. If the `ExecResource` is not in the desired state, it should return an exit code of `101`. Any other exit code returned by this stage is considered an error. If the `ExecResource` is not in the desired state based on the exit code from the `validate` stage, the agent proceeds to execute the script from the `enforce` stage. If the `ExecResource` is already in the desired state, the `enforce` stage will not be run. Similar to `validate` stage, the `enforce` stage should return an exit code of `100` to indicate that the resource in now in its desired state. Any other exit code is considered an error. NOTE: An exit code of `100` was chosen over `0` (and `101` vs `1`) to have an explicit indicator of `in desired state`, `not in desired state` and errors. Because, for example, Powershell will always return an exit code of `0` unless an `exit` statement is provided in the script. So, for reasons of consistency and being explicit, exit codes `100` and `101` were chosen.",
      "properties": {
        "enforce": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceExecResourceExecResponse",
          "description": "What to run to bring this resource into the desired state. An exit code of 100 indicates \"success\", any other exit code indicates a failure running enforce."
        },
        "validate": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceExecResourceExecResponse",
          "description": "What to run to validate this resource is in the desired state. An exit code of 100 indicates \"in desired state\", and exit code of 101 indicates \"not in desired state\". Any other exit code indicates a failure running validate."
        }
      },
      "type": "object",
      "required": [
        "enforce",
        "validate"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFile": {
      "description": "A remote or local file.",
      "properties": {
        "allowInsecure": {
          "type": "boolean",
          "description": "Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified."
        },
        "gcs": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileGcs",
          "description": "A Cloud Storage object."
        },
        "localPath": {
          "type": "string",
          "description": "A local path within the VM to use."
        },
        "remote": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileRemote",
          "description": "A generic remote file."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFileGcs": {
      "description": "Specifies a file available as a Cloud Storage Object.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Cloud Storage object."
        },
        "generation": {
          "type": "string",
          "description": "Generation number of the Cloud Storage object."
        },
        "object": {
          "type": "string",
          "description": "Name of the Cloud Storage object."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "object"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFileGcsResponse": {
      "description": "Specifies a file available as a Cloud Storage Object.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Cloud Storage object."
        },
        "generation": {
          "type": "string",
          "description": "Generation number of the Cloud Storage object."
        },
        "object": {
          "type": "string",
          "description": "Name of the Cloud Storage object."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFileRemote": {
      "description": "Specifies a file available via some URI.",
      "properties": {
        "sha256Checksum": {
          "type": "string",
          "description": "SHA256 checksum of the remote file."
        },
        "uri": {
          "type": "string",
          "description": "URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFileRemoteResponse": {
      "description": "Specifies a file available via some URI.",
      "properties": {
        "sha256Checksum": {
          "type": "string",
          "description": "SHA256 checksum of the remote file."
        },
        "uri": {
          "type": "string",
          "description": "URI from which to fetch the object. It should contain both the protocol and path following the format `{protocol}://{location}`."
        }
      },
      "type": "object",
      "required": [
        "sha256Checksum",
        "uri"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFileResource": {
      "description": "A resource that manages the state of a file.",
      "properties": {
        "content": {
          "type": "string",
          "description": "A a file with this content. The size of the content is limited to 32KiB."
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFile",
          "description": "A remote or local source."
        },
        "path": {
          "type": "string",
          "description": "The absolute path of the file within the VM."
        },
        "permissions": {
          "type": "string",
          "description": "Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4"
        },
        "state": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileResourceState",
          "description": "Desired state of the file."
        }
      },
      "type": "object",
      "required": [
        "path",
        "state"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFileResourceResponse": {
      "description": "A resource that manages the state of a file.",
      "properties": {
        "content": {
          "type": "string",
          "description": "A a file with this content. The size of the content is limited to 32KiB."
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileResponse",
          "description": "A remote or local source."
        },
        "path": {
          "type": "string",
          "description": "The absolute path of the file within the VM."
        },
        "permissions": {
          "type": "string",
          "description": "Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4"
        },
        "state": {
          "type": "string",
          "description": "Desired state of the file."
        }
      },
      "type": "object",
      "required": [
        "content",
        "file",
        "path",
        "permissions",
        "state"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFileResourceState": {
      "description": "Required. Desired state of the file.",
      "type": "string",
      "enum": [
        {
          "name": "DesiredStateUnspecified",
          "description": "Unspecified is invalid.",
          "value": "DESIRED_STATE_UNSPECIFIED"
        },
        {
          "name": "Present",
          "description": "Ensure file at path is present.",
          "value": "PRESENT"
        },
        {
          "name": "Absent",
          "description": "Ensure file at path is absent.",
          "value": "ABSENT"
        },
        {
          "name": "ContentsMatch",
          "description": "Ensure the contents of the file at path matches. If the file does not exist it will be created.",
          "value": "CONTENTS_MATCH"
        }
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceFileResponse": {
      "description": "A remote or local file.",
      "properties": {
        "allowInsecure": {
          "type": "boolean",
          "description": "Defaults to false. When false, files are subject to validations based on the file type: Remote: A checksum must be specified. Cloud Storage: An object generation number must be specified."
        },
        "gcs": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileGcsResponse",
          "description": "A Cloud Storage object."
        },
        "localPath": {
          "type": "string",
          "description": "A local path within the VM to use."
        },
        "remote": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileRemoteResponse",
          "description": "A generic remote file."
        }
      },
      "type": "object",
      "required": [
        "allowInsecure",
        "gcs",
        "localPath",
        "remote"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceGroup": {
      "description": "Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.",
      "properties": {
        "inventoryFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyInventoryFilter"
          },
          "description": "List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name='rhel' and inventory_filters[1].os_short_name='centos' If the list is empty, this resource group will be applied to the target VM unconditionally."
        },
        "osFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyOSFilter",
          "description": "Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group",
          "deprecationMessage": "Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group"
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResource"
          },
          "description": "List of resources configured for this resource group. The resources are executed in the exact order specified here."
        }
      },
      "type": "object",
      "required": [
        "resources"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceGroupResponse": {
      "description": "Resource groups provide a mechanism to group OS policy resources. Resource groups enable OS policy authors to create a single OS policy to be applied to VMs running different operating Systems. When the OS policy is applied to a target VM, the appropriate resource group within the OS policy is selected based on the `OSFilter` specified within the resource group.",
      "properties": {
        "inventoryFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyInventoryFilterResponse"
          },
          "description": "List of inventory filters for the resource group. The resources in this resource group are applied to the target VM if it satisfies at least one of the following inventory filters. For example, to apply this resource group to VMs running either `RHEL` or `CentOS` operating systems, specify 2 items for the list with following values: inventory_filters[0].os_short_name='rhel' and inventory_filters[1].os_short_name='centos' If the list is empty, this resource group will be applied to the target VM unconditionally."
        },
        "osFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyOSFilterResponse",
          "description": "Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group",
          "deprecationMessage": "Deprecated. Use the `inventory_filters` field instead. Used to specify the OS filter for a resource group"
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceResponse"
          },
          "description": "List of resources configured for this resource group. The resources are executed in the exact order specified here."
        }
      },
      "type": "object",
      "required": [
        "inventoryFilters",
        "osFilter",
        "resources"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResource": {
      "description": "A resource that manages a system package.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceAPT",
          "description": "A package managed by Apt."
        },
        "deb": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceDeb",
          "description": "A deb package file."
        },
        "desiredState": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceDesiredState",
          "description": "The desired state the agent should maintain for this package."
        },
        "googet": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceGooGet",
          "description": "A package managed by GooGet."
        },
        "msi": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceMSI",
          "description": "An MSI package."
        },
        "rpm": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceRPM",
          "description": "An rpm package file."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceYUM",
          "description": "A package managed by YUM."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceZypper",
          "description": "A package managed by Zypper."
        }
      },
      "type": "object",
      "required": [
        "desiredState"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceAPT": {
      "description": "A package managed by APT. - install: `apt-get update && apt-get -y install [name]` - remove: `apt-get -y remove [name]`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceAPTResponse": {
      "description": "A package managed by APT. - install: `apt-get update && apt-get -y install [name]` - remove: `apt-get -y remove [name]`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceDeb": {
      "description": "A deb package file. dpkg packages only support INSTALLED state.",
      "properties": {
        "pullDeps": {
          "type": "boolean",
          "description": "Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update && apt-get -y install package.deb`"
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFile",
          "description": "A deb package."
        }
      },
      "type": "object",
      "required": [
        "source"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceDebResponse": {
      "description": "A deb package file. dpkg packages only support INSTALLED state.",
      "properties": {
        "pullDeps": {
          "type": "boolean",
          "description": "Whether dependencies should also be installed. - install when false: `dpkg -i package` - install when true: `apt-get update && apt-get -y install package.deb`"
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileResponse",
          "description": "A deb package."
        }
      },
      "type": "object",
      "required": [
        "pullDeps",
        "source"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceDesiredState": {
      "description": "Required. The desired state the agent should maintain for this package.",
      "type": "string",
      "enum": [
        {
          "name": "DesiredStateUnspecified",
          "description": "Unspecified is invalid.",
          "value": "DESIRED_STATE_UNSPECIFIED"
        },
        {
          "name": "Installed",
          "description": "Ensure that the package is installed.",
          "value": "INSTALLED"
        },
        {
          "name": "Removed",
          "description": "The agent ensures that the package is not installed and uninstalls it if detected.",
          "value": "REMOVED"
        }
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceGooGet": {
      "description": "A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceGooGetResponse": {
      "description": "A package managed by GooGet. - install: `googet -noconfirm install package` - remove: `googet -noconfirm remove package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceMSI": {
      "description": "An MSI package. MSI packages only support INSTALLED state.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`."
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFile",
          "description": "The MSI package."
        }
      },
      "type": "object",
      "required": [
        "source"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceMSIResponse": {
      "description": "An MSI package. MSI packages only support INSTALLED state.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional properties to use during installation. This should be in the format of Property=Setting. Appended to the defaults of `ACTION=INSTALL REBOOT=ReallySuppress`."
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileResponse",
          "description": "The MSI package."
        }
      },
      "type": "object",
      "required": [
        "properties",
        "source"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceRPM": {
      "description": "An RPM package file. RPM packages only support INSTALLED state.",
      "properties": {
        "pullDeps": {
          "type": "boolean",
          "description": "Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`"
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFile",
          "description": "An rpm package."
        }
      },
      "type": "object",
      "required": [
        "source"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceRPMResponse": {
      "description": "An RPM package file. RPM packages only support INSTALLED state.",
      "properties": {
        "pullDeps": {
          "type": "boolean",
          "description": "Whether dependencies should also be installed. - install when false: `rpm --upgrade --replacepkgs package.rpm` - install when true: `yum -y install package.rpm` or `zypper -y install package.rpm`"
        },
        "source": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileResponse",
          "description": "An rpm package."
        }
      },
      "type": "object",
      "required": [
        "pullDeps",
        "source"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceResponse": {
      "description": "A resource that manages a system package.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceAPTResponse",
          "description": "A package managed by Apt."
        },
        "deb": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceDebResponse",
          "description": "A deb package file."
        },
        "desiredState": {
          "type": "string",
          "description": "The desired state the agent should maintain for this package."
        },
        "googet": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceGooGetResponse",
          "description": "A package managed by GooGet."
        },
        "msi": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceMSIResponse",
          "description": "An MSI package."
        },
        "rpm": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceRPMResponse",
          "description": "An rpm package file."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceYUMResponse",
          "description": "A package managed by YUM."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceZypperResponse",
          "description": "A package managed by Zypper."
        }
      },
      "type": "object",
      "required": [
        "apt",
        "deb",
        "desiredState",
        "googet",
        "msi",
        "rpm",
        "yum",
        "zypper"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceYUM": {
      "description": "A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceYUMResponse": {
      "description": "A package managed by YUM. - install: `yum -y install package` - remove: `yum -y remove package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceZypper": {
      "description": "A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourcePackageResourceZypperResponse": {
      "description": "A package managed by Zypper. - install: `zypper -y install package` - remove: `zypper -y rm package`",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResource": {
      "description": "A resource that manages a package repository.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceAptRepository",
          "description": "An Apt Repository."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceGooRepository",
          "description": "A Goo Repository."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceYumRepository",
          "description": "A Yum Repository."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceZypperRepository",
          "description": "A Zypper Repository."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceAptRepository": {
      "description": "Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`.",
      "properties": {
        "archiveType": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceAptRepositoryArchiveType",
          "description": "Type of archive files in this repository."
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of components for this repository. Must contain at least one item."
        },
        "distribution": {
          "type": "string",
          "description": "Distribution of this repository."
        },
        "gpgKey": {
          "type": "string",
          "description": "URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`."
        },
        "uri": {
          "type": "string",
          "description": "URI for this repository."
        }
      },
      "type": "object",
      "required": [
        "archiveType",
        "components",
        "distribution",
        "uri"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceAptRepositoryArchiveType": {
      "description": "Required. Type of archive files in this repository.",
      "type": "string",
      "enum": [
        {
          "name": "ArchiveTypeUnspecified",
          "description": "Unspecified is invalid.",
          "value": "ARCHIVE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Deb",
          "description": "Deb indicates that the archive contains binary files.",
          "value": "DEB"
        },
        {
          "name": "DebSrc",
          "description": "Deb-src indicates that the archive contains source files.",
          "value": "DEB_SRC"
        }
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceAptRepositoryResponse": {
      "description": "Represents a single apt package repository. These will be added to a repo file that will be managed at `/etc/apt/sources.list.d/google_osconfig.list`.",
      "properties": {
        "archiveType": {
          "type": "string",
          "description": "Type of archive files in this repository."
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of components for this repository. Must contain at least one item."
        },
        "distribution": {
          "type": "string",
          "description": "Distribution of this repository."
        },
        "gpgKey": {
          "type": "string",
          "description": "URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg`."
        },
        "uri": {
          "type": "string",
          "description": "URI for this repository."
        }
      },
      "type": "object",
      "required": [
        "archiveType",
        "components",
        "distribution",
        "gpgKey",
        "uri"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceGooRepository": {
      "description": "Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the repository."
        },
        "url": {
          "type": "string",
          "description": "The url of the repository."
        }
      },
      "type": "object",
      "required": [
        "name",
        "url"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceGooRepositoryResponse": {
      "description": "Represents a Goo package repository. These are added to a repo file that is managed at `C:/ProgramData/GooGet/repos/google_osconfig.repo`.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the repository."
        },
        "url": {
          "type": "string",
          "description": "The url of the repository."
        }
      },
      "type": "object",
      "required": [
        "name",
        "url"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceResponse": {
      "description": "A resource that manages a package repository.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceAptRepositoryResponse",
          "description": "An Apt Repository."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceGooRepositoryResponse",
          "description": "A Goo Repository."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceYumRepositoryResponse",
          "description": "A Yum Repository."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceZypperRepositoryResponse",
          "description": "A Zypper Repository."
        }
      },
      "type": "object",
      "required": [
        "apt",
        "goo",
        "yum",
        "zypper"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceYumRepository": {
      "description": "Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        },
        "id": {
          "type": "string",
          "description": "A one word, unique name for this repository. This is the `repo id` in the yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for resource conflicts."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "id"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceYumRepositoryResponse": {
      "description": "Represents a single yum package repository. These are added to a repo file that is managed at `/etc/yum.repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "displayName",
        "gpgKeys"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceZypperRepository": {
      "description": "Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        },
        "id": {
          "type": "string",
          "description": "A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for GuestPolicy conflicts."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "id"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceRepositoryResourceZypperRepositoryResponse": {
      "description": "Represents a single zypper package repository. These are added to a repo file that is managed at `/etc/zypp/repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "displayName",
        "gpgKeys"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResourceResponse": {
      "description": "An OS policy resource is used to define the desired state configuration and provides a specific functionality like installing/removing packages, executing a script etc. The system ensures that resources are always in their desired state by taking necessary actions if they have drifted from their desired state.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceExecResourceResponse",
          "description": "Exec resource"
        },
        "file": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceFileResourceResponse",
          "description": "File resource"
        },
        "pkg": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourcePackageResourceResponse",
          "description": "Package resource"
        },
        "repository": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceRepositoryResourceResponse",
          "description": "Package repository resource"
        }
      },
      "type": "object",
      "required": [
        "exec",
        "file",
        "pkg",
        "repository"
      ]
    },
    "google-native:osconfig/v1alpha:OSPolicyResponse": {
      "description": "An OS policy defines the desired state configuration for a VM.",
      "properties": {
        "allowNoResourceGroupMatch": {
          "type": "boolean",
          "description": "This flag determines the OS policy compliance status when none of the resource groups within the policy are applicable for a VM. Set this value to `true` if the policy needs to be reported as compliant even if the policy has nothing to validate or enforce."
        },
        "description": {
          "type": "string",
          "description": "Policy description. Length of the description is limited to 1024 characters."
        },
        "mode": {
          "type": "string",
          "description": "Policy mode"
        },
        "resourceGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResourceGroupResponse"
          },
          "description": "List of resource groups for the policy. For a particular VM, resource groups are evaluated in the order specified and the first resource group that is applicable is selected and the rest are ignored. If none of the resource groups are applicable for a VM, the VM is considered to be non-compliant w.r.t this policy. This behavior can be toggled by the flag `allow_no_resource_group_match`"
        }
      },
      "type": "object",
      "required": [
        "allowNoResourceGroupMatch",
        "description",
        "mode",
        "resourceGroups"
      ]
    },
    "google-native:osconfig/v1beta:AptRepository": {
      "description": "Represents a single Apt package repository. This repository is added to a repo file that is stored at `/etc/apt/sources.list.d/google_osconfig.list`.",
      "properties": {
        "archiveType": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:AptRepositoryArchiveType",
          "description": "Type of archive files in this repository. The default behavior is DEB."
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of components for this repository. Must contain at least one item."
        },
        "distribution": {
          "type": "string",
          "description": "Distribution of this repository."
        },
        "gpgKey": {
          "type": "string",
          "description": "URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing all the keys in any applied guest policy."
        },
        "uri": {
          "type": "string",
          "description": "URI for this repository."
        }
      },
      "type": "object",
      "required": [
        "components",
        "distribution",
        "uri"
      ]
    },
    "google-native:osconfig/v1beta:AptRepositoryArchiveType": {
      "description": "Type of archive files in this repository. The default behavior is DEB.",
      "type": "string",
      "enum": [
        {
          "name": "ArchiveTypeUnspecified",
          "description": "Unspecified.",
          "value": "ARCHIVE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Deb",
          "description": "DEB indicates that the archive contains binary files.",
          "value": "DEB"
        },
        {
          "name": "DebSrc",
          "description": "DEB_SRC indicates that the archive contains source files.",
          "value": "DEB_SRC"
        }
      ]
    },
    "google-native:osconfig/v1beta:AptRepositoryResponse": {
      "description": "Represents a single Apt package repository. This repository is added to a repo file that is stored at `/etc/apt/sources.list.d/google_osconfig.list`.",
      "properties": {
        "archiveType": {
          "type": "string",
          "description": "Type of archive files in this repository. The default behavior is DEB."
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of components for this repository. Must contain at least one item."
        },
        "distribution": {
          "type": "string",
          "description": "Distribution of this repository."
        },
        "gpgKey": {
          "type": "string",
          "description": "URI of the key file for this repository. The agent maintains a keyring at `/etc/apt/trusted.gpg.d/osconfig_agent_managed.gpg` containing all the keys in any applied guest policy."
        },
        "uri": {
          "type": "string",
          "description": "URI for this repository."
        }
      },
      "type": "object",
      "required": [
        "archiveType",
        "components",
        "distribution",
        "gpgKey",
        "uri"
      ]
    },
    "google-native:osconfig/v1beta:AptSettings": {
      "description": "Apt patching is completed by executing `apt-get update && apt-get upgrade`. Additional options can be set to control how this is executed.",
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of packages to exclude from update. These packages will be excluded"
        },
        "exclusivePackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields."
        },
        "type": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:AptSettingsType",
          "description": "By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:AptSettingsResponse": {
      "description": "Apt patching is completed by executing `apt-get update && apt-get upgrade`. Additional options can be set to control how this is executed.",
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of packages to exclude from update. These packages will be excluded"
        },
        "exclusivePackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field cannot be specified with any other patch configuration fields."
        },
        "type": {
          "type": "string",
          "description": "By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead."
        }
      },
      "type": "object",
      "required": [
        "excludes",
        "exclusivePackages",
        "type"
      ]
    },
    "google-native:osconfig/v1beta:AptSettingsType": {
      "description": "By changing the type to DIST, the patching is performed using `apt-get dist-upgrade` instead.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "By default, upgrade will be performed.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Dist",
          "description": "Runs `apt-get dist-upgrade`.",
          "value": "DIST"
        },
        {
          "name": "Upgrade",
          "description": "Runs `apt-get upgrade`.",
          "value": "UPGRADE"
        }
      ]
    },
    "google-native:osconfig/v1beta:Assignment": {
      "description": "An assignment represents the group or groups of VM instances that the policy applies to. If an assignment is empty, it applies to all VM instances. Otherwise, the targeted VM instances must meet all the criteria specified. So if both labels and zones are specified, the policy applies to VM instances with those labels and in those zones.",
      "properties": {
        "groupLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:AssignmentGroupLabel"
          },
          "description": "Targets instances matching at least one of these label sets. This allows an assignment to target disparate groups, for example \"env=prod or env=staging\"."
        },
        "instanceNamePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VM instances whose name starts with one of these prefixes. Like labels, this is another way to group VM instances when targeting configs, for example prefix=\"prod-\". Only supported for project-level policies."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets any of the instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`. Instance targeting is uncommon and is supported to facilitate the management of changes by the instance or to target specific VM instances for development and testing. Only supported for project-level policies and must reference instances within this project."
        },
        "osTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:AssignmentOsType"
          },
          "description": "Targets VM instances matching at least one of the following OS types. VM instances must match all supplied criteria for a given OsType to be included."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets instances in any of these zones. Leave empty to target instances in any zone. Zonal targeting is uncommon and is supported to facilitate the management of changes by zone."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:AssignmentGroupLabel": {
      "description": "Represents a group of VM intances that can be identified as having all these labels, for example \"env=prod and app=web\".",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Google Compute Engine instance labels that must be present for an instance to be included in this assignment group."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:AssignmentGroupLabelResponse": {
      "description": "Represents a group of VM intances that can be identified as having all these labels, for example \"env=prod and app=web\".",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Google Compute Engine instance labels that must be present for an instance to be included in this assignment group."
        }
      },
      "type": "object",
      "required": [
        "labels"
      ]
    },
    "google-native:osconfig/v1beta:AssignmentOsType": {
      "description": "Defines the criteria for selecting VM Instances by OS type.",
      "properties": {
        "osArchitecture": {
          "type": "string",
          "description": "Targets VM instances with OS Inventory enabled and having the following OS architecture."
        },
        "osShortName": {
          "type": "string",
          "description": "Targets VM instances with OS Inventory enabled and having the following OS short name, for example \"debian\" or \"windows\"."
        },
        "osVersion": {
          "type": "string",
          "description": "Targets VM instances with OS Inventory enabled and having the following following OS version."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:AssignmentOsTypeResponse": {
      "description": "Defines the criteria for selecting VM Instances by OS type.",
      "properties": {
        "osArchitecture": {
          "type": "string",
          "description": "Targets VM instances with OS Inventory enabled and having the following OS architecture."
        },
        "osShortName": {
          "type": "string",
          "description": "Targets VM instances with OS Inventory enabled and having the following OS short name, for example \"debian\" or \"windows\"."
        },
        "osVersion": {
          "type": "string",
          "description": "Targets VM instances with OS Inventory enabled and having the following following OS version."
        }
      },
      "type": "object",
      "required": [
        "osArchitecture",
        "osShortName",
        "osVersion"
      ]
    },
    "google-native:osconfig/v1beta:AssignmentResponse": {
      "description": "An assignment represents the group or groups of VM instances that the policy applies to. If an assignment is empty, it applies to all VM instances. Otherwise, the targeted VM instances must meet all the criteria specified. So if both labels and zones are specified, the policy applies to VM instances with those labels and in those zones.",
      "properties": {
        "groupLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:AssignmentGroupLabelResponse"
          },
          "description": "Targets instances matching at least one of these label sets. This allows an assignment to target disparate groups, for example \"env=prod or env=staging\"."
        },
        "instanceNamePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VM instances whose name starts with one of these prefixes. Like labels, this is another way to group VM instances when targeting configs, for example prefix=\"prod-\". Only supported for project-level policies."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets any of the instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`. Instance targeting is uncommon and is supported to facilitate the management of changes by the instance or to target specific VM instances for development and testing. Only supported for project-level policies and must reference instances within this project."
        },
        "osTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:AssignmentOsTypeResponse"
          },
          "description": "Targets VM instances matching at least one of the following OS types. VM instances must match all supplied criteria for a given OsType to be included."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets instances in any of these zones. Leave empty to target instances in any zone. Zonal targeting is uncommon and is supported to facilitate the management of changes by zone."
        }
      },
      "type": "object",
      "required": [
        "groupLabels",
        "instanceNamePrefixes",
        "instances",
        "osTypes",
        "zones"
      ]
    },
    "google-native:osconfig/v1beta:ExecStep": {
      "description": "A step that runs an executable for a PatchJob.",
      "properties": {
        "linuxExecStepConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStepConfig",
          "description": "The ExecStepConfig for all Linux VMs targeted by the PatchJob."
        },
        "windowsExecStepConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStepConfig",
          "description": "The ExecStepConfig for all Windows VMs targeted by the PatchJob."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:ExecStepConfig": {
      "description": "Common configurations for an ExecStep.",
      "properties": {
        "allowedSuccessCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Defaults to [0]. A list of possible return values that the execution can return to indicate a success."
        },
        "gcsObject": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:GcsObject",
          "description": "A Google Cloud Storage object containing the executable."
        },
        "interpreter": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStepConfigInterpreter",
          "description": "The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\\(Unix\\))."
        },
        "localPath": {
          "type": "string",
          "description": "An absolute path to the executable on the VM."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:ExecStepConfigInterpreter": {
      "description": "The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\\(Unix\\)).",
      "type": "string",
      "enum": [
        {
          "name": "InterpreterUnspecified",
          "description": "If the interpreter is not specified, the value defaults to `NONE`.",
          "value": "INTERPRETER_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Indicates that the file is run as follows on each operating system: + For Linux VMs, the file is ran as an executable and the interpreter might be parsed from the [shebang line](https://wikipedia.org/wiki/Shebang_(Unix)) of the file. + For Windows VM, this value is not supported.",
          "value": "NONE"
        },
        {
          "name": "Shell",
          "description": "Indicates that the file is run with `/bin/sh` on Linux and `cmd` on Windows.",
          "value": "SHELL"
        },
        {
          "name": "Powershell",
          "description": "Indicates that the file is run with PowerShell.",
          "value": "POWERSHELL"
        }
      ]
    },
    "google-native:osconfig/v1beta:ExecStepConfigResponse": {
      "description": "Common configurations for an ExecStep.",
      "properties": {
        "allowedSuccessCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Defaults to [0]. A list of possible return values that the execution can return to indicate a success."
        },
        "gcsObject": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:GcsObjectResponse",
          "description": "A Google Cloud Storage object containing the executable."
        },
        "interpreter": {
          "type": "string",
          "description": "The script interpreter to use to run the script. If no interpreter is specified the script will be executed directly, which will likely only succeed for scripts with [shebang lines] (https://en.wikipedia.org/wiki/Shebang_\\(Unix\\))."
        },
        "localPath": {
          "type": "string",
          "description": "An absolute path to the executable on the VM."
        }
      },
      "type": "object",
      "required": [
        "allowedSuccessCodes",
        "gcsObject",
        "interpreter",
        "localPath"
      ]
    },
    "google-native:osconfig/v1beta:ExecStepResponse": {
      "description": "A step that runs an executable for a PatchJob.",
      "properties": {
        "linuxExecStepConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStepConfigResponse",
          "description": "The ExecStepConfig for all Linux VMs targeted by the PatchJob."
        },
        "windowsExecStepConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStepConfigResponse",
          "description": "The ExecStepConfig for all Windows VMs targeted by the PatchJob."
        }
      },
      "type": "object",
      "required": [
        "linuxExecStepConfig",
        "windowsExecStepConfig"
      ]
    },
    "google-native:osconfig/v1beta:FixedOrPercent": {
      "description": "Message encapsulating a value that can be either absolute (\"fixed\") or relative (\"percent\") to a value.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed value."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies the relative value defined as a percentage, which will be multiplied by a reference value."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:FixedOrPercentResponse": {
      "description": "Message encapsulating a value that can be either absolute (\"fixed\") or relative (\"percent\") to a value.",
      "properties": {
        "fixed": {
          "type": "integer",
          "description": "Specifies a fixed value."
        },
        "percent": {
          "type": "integer",
          "description": "Specifies the relative value defined as a percentage, which will be multiplied by a reference value."
        }
      },
      "type": "object",
      "required": [
        "fixed",
        "percent"
      ]
    },
    "google-native:osconfig/v1beta:GcsObject": {
      "description": "Google Cloud Storage object representation.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Google Cloud Storage object."
        },
        "generationNumber": {
          "type": "string",
          "description": "Generation number of the Google Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change."
        },
        "object": {
          "type": "string",
          "description": "Name of the Google Cloud Storage object."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generationNumber",
        "object"
      ]
    },
    "google-native:osconfig/v1beta:GcsObjectResponse": {
      "description": "Google Cloud Storage object representation.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Google Cloud Storage object."
        },
        "generationNumber": {
          "type": "string",
          "description": "Generation number of the Google Cloud Storage object. This is used to ensure that the ExecStep specified by this PatchJob does not change."
        },
        "object": {
          "type": "string",
          "description": "Name of the Google Cloud Storage object."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generationNumber",
        "object"
      ]
    },
    "google-native:osconfig/v1beta:GooRepository": {
      "description": "Represents a Goo package repository. These is added to a repo file that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the repository."
        },
        "url": {
          "type": "string",
          "description": "The url of the repository."
        }
      },
      "type": "object",
      "required": [
        "name",
        "url"
      ]
    },
    "google-native:osconfig/v1beta:GooRepositoryResponse": {
      "description": "Represents a Goo package repository. These is added to a repo file that is stored at C:/ProgramData/GooGet/repos/google_osconfig.repo.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the repository."
        },
        "url": {
          "type": "string",
          "description": "The url of the repository."
        }
      },
      "type": "object",
      "required": [
        "name",
        "url"
      ]
    },
    "google-native:osconfig/v1beta:GooSettings": {
      "description": "Googet patching is performed by running `googet update`.",
      "type": "object"
    },
    "google-native:osconfig/v1beta:GooSettingsResponse": {
      "description": "Googet patching is performed by running `googet update`.",
      "type": "object"
    },
    "google-native:osconfig/v1beta:MonthlySchedule": {
      "description": "Represents a monthly schedule. An example of a valid monthly schedule is \"on the third Tuesday of the month\" or \"on the 15th of the month\".",
      "properties": {
        "monthDay": {
          "type": "integer",
          "description": "One day of the month. 1-31 indicates the 1st to the 31st day. -1 indicates the last day of the month. Months without the target day will be skipped. For example, a schedule to run \"every month on the 31st\" will not run in February, April, June, etc."
        },
        "weekDayOfMonth": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:WeekDayOfMonth",
          "description": "Week day in a month."
        }
      },
      "type": "object",
      "required": [
        "monthDay",
        "weekDayOfMonth"
      ]
    },
    "google-native:osconfig/v1beta:MonthlyScheduleResponse": {
      "description": "Represents a monthly schedule. An example of a valid monthly schedule is \"on the third Tuesday of the month\" or \"on the 15th of the month\".",
      "properties": {
        "monthDay": {
          "type": "integer",
          "description": "One day of the month. 1-31 indicates the 1st to the 31st day. -1 indicates the last day of the month. Months without the target day will be skipped. For example, a schedule to run \"every month on the 31st\" will not run in February, April, June, etc."
        },
        "weekDayOfMonth": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:WeekDayOfMonthResponse",
          "description": "Week day in a month."
        }
      },
      "type": "object",
      "required": [
        "monthDay",
        "weekDayOfMonth"
      ]
    },
    "google-native:osconfig/v1beta:OneTimeSchedule": {
      "description": "Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
      "properties": {
        "executeTime": {
          "type": "string",
          "description": "The desired patch job execution time."
        }
      },
      "type": "object",
      "required": [
        "executeTime"
      ]
    },
    "google-native:osconfig/v1beta:OneTimeScheduleResponse": {
      "description": "Sets the time for a one time patch deployment. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
      "properties": {
        "executeTime": {
          "type": "string",
          "description": "The desired patch job execution time."
        }
      },
      "type": "object",
      "required": [
        "executeTime"
      ]
    },
    "google-native:osconfig/v1beta:Package": {
      "description": "Package is a reference to the software package to be installed or removed. The agent on the VM instance uses the system package manager to apply the config. These are the commands that the agent uses to install or remove packages. Apt install: `apt-get update && apt-get -y install package1 package2 package3` remove: `apt-get -y remove package1 package2 package3` Yum install: `yum -y install package1 package2 package3` remove: `yum -y remove package1 package2 package3` Zypper install: `zypper install package1 package2 package3` remove: `zypper rm package1 package2` Googet install: `googet -noconfirm install package1 package2 package3` remove: `googet -noconfirm remove package1 package2 package3`",
      "properties": {
        "desiredState": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PackageDesiredState",
          "description": "The desired_state the agent should maintain for this package. The default is to ensure the package is installed."
        },
        "manager": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PackageManager",
          "description": "Type of package manager that can be used to install this package. If a system does not have the package manager, the package is not installed or removed no error message is returned. By default, or if you specify `ANY`, the agent attempts to install and remove this package using the default package manager. This is useful when creating a policy that applies to different types of systems. The default behavior is ANY."
        },
        "name": {
          "type": "string",
          "description": "The name of the package. A package is uniquely identified for conflict validation by checking the package name and the manager(s) that the package targets."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1beta:PackageDesiredState": {
      "description": "The desired_state the agent should maintain for this package. The default is to ensure the package is installed.",
      "type": "string",
      "enum": [
        {
          "name": "DesiredStateUnspecified",
          "description": "The default is to ensure the package is installed.",
          "value": "DESIRED_STATE_UNSPECIFIED"
        },
        {
          "name": "Installed",
          "description": "The agent ensures that the package is installed.",
          "value": "INSTALLED"
        },
        {
          "name": "Updated",
          "description": "The agent ensures that the package is installed and periodically checks for and install any updates.",
          "value": "UPDATED"
        },
        {
          "name": "Removed",
          "description": "The agent ensures that the package is not installed and uninstall it if detected.",
          "value": "REMOVED"
        }
      ]
    },
    "google-native:osconfig/v1beta:PackageManager": {
      "description": "Type of package manager that can be used to install this package. If a system does not have the package manager, the package is not installed or removed no error message is returned. By default, or if you specify `ANY`, the agent attempts to install and remove this package using the default package manager. This is useful when creating a policy that applies to different types of systems. The default behavior is ANY.",
      "type": "string",
      "enum": [
        {
          "name": "ManagerUnspecified",
          "description": "The default behavior is ANY.",
          "value": "MANAGER_UNSPECIFIED"
        },
        {
          "name": "Any",
          "description": "Apply this package config using the default system package manager.",
          "value": "ANY"
        },
        {
          "name": "Apt",
          "description": "Apply this package config only if Apt is available on the system.",
          "value": "APT"
        },
        {
          "name": "Yum",
          "description": "Apply this package config only if Yum is available on the system.",
          "value": "YUM"
        },
        {
          "name": "Zypper",
          "description": "Apply this package config only if Zypper is available on the system.",
          "value": "ZYPPER"
        },
        {
          "name": "Goo",
          "description": "Apply this package config only if GooGet is available on the system.",
          "value": "GOO"
        }
      ]
    },
    "google-native:osconfig/v1beta:PackageRepository": {
      "description": "A package repository.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:AptRepository",
          "description": "An Apt Repository."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:GooRepository",
          "description": "A Goo Repository."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:YumRepository",
          "description": "A Yum Repository."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ZypperRepository",
          "description": "A Zypper Repository."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:PackageRepositoryResponse": {
      "description": "A package repository.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:AptRepositoryResponse",
          "description": "An Apt Repository."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:GooRepositoryResponse",
          "description": "A Goo Repository."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:YumRepositoryResponse",
          "description": "A Yum Repository."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ZypperRepositoryResponse",
          "description": "A Zypper Repository."
        }
      },
      "type": "object",
      "required": [
        "apt",
        "goo",
        "yum",
        "zypper"
      ]
    },
    "google-native:osconfig/v1beta:PackageResponse": {
      "description": "Package is a reference to the software package to be installed or removed. The agent on the VM instance uses the system package manager to apply the config. These are the commands that the agent uses to install or remove packages. Apt install: `apt-get update && apt-get -y install package1 package2 package3` remove: `apt-get -y remove package1 package2 package3` Yum install: `yum -y install package1 package2 package3` remove: `yum -y remove package1 package2 package3` Zypper install: `zypper install package1 package2 package3` remove: `zypper rm package1 package2` Googet install: `googet -noconfirm install package1 package2 package3` remove: `googet -noconfirm remove package1 package2 package3`",
      "properties": {
        "desiredState": {
          "type": "string",
          "description": "The desired_state the agent should maintain for this package. The default is to ensure the package is installed."
        },
        "manager": {
          "type": "string",
          "description": "Type of package manager that can be used to install this package. If a system does not have the package manager, the package is not installed or removed no error message is returned. By default, or if you specify `ANY`, the agent attempts to install and remove this package using the default package manager. This is useful when creating a policy that applies to different types of systems. The default behavior is ANY."
        },
        "name": {
          "type": "string",
          "description": "The name of the package. A package is uniquely identified for conflict validation by checking the package name and the manager(s) that the package targets."
        }
      },
      "type": "object",
      "required": [
        "desiredState",
        "manager",
        "name"
      ]
    },
    "google-native:osconfig/v1beta:PatchConfig": {
      "description": "Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:AptSettings",
          "description": "Apt update settings. Use this setting to override the default `apt` patch rules."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:GooSettings",
          "description": "Goo update settings. Use this setting to override the default `goo` patch rules."
        },
        "migInstancesAllowed": {
          "type": "boolean",
          "description": "Allows the patch job to run on Managed instance groups (MIGs)."
        },
        "postStep": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStep",
          "description": "The `ExecStep` to run after the patch update."
        },
        "preStep": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStep",
          "description": "The `ExecStep` to run before the patch update."
        },
        "rebootConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchConfigRebootConfig",
          "description": "Post-patch reboot settings."
        },
        "windowsUpdate": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:WindowsUpdateSettings",
          "description": "Windows update settings. Use this override the default windows patch rules."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:YumSettings",
          "description": "Yum update settings. Use this setting to override the default `yum` patch rules."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ZypperSettings",
          "description": "Zypper update settings. Use this setting to override the default `zypper` patch rules."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:PatchConfigRebootConfig": {
      "description": "Post-patch reboot settings.",
      "type": "string",
      "enum": [
        {
          "name": "RebootConfigUnspecified",
          "description": "The default behavior is DEFAULT.",
          "value": "REBOOT_CONFIG_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "The agent decides if a reboot is necessary by checking signals such as registry keys on Windows or `/var/run/reboot-required` on APT based systems. On RPM based systems, a set of core system package install times are compared with system boot time.",
          "value": "DEFAULT"
        },
        {
          "name": "Always",
          "description": "Always reboot the machine after the update completes.",
          "value": "ALWAYS"
        },
        {
          "name": "Never",
          "description": "Never reboot the machine after the update completes.",
          "value": "NEVER"
        }
      ]
    },
    "google-native:osconfig/v1beta:PatchConfigResponse": {
      "description": "Patch configuration specifications. Contains details on how to apply the patch(es) to a VM instance.",
      "properties": {
        "apt": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:AptSettingsResponse",
          "description": "Apt update settings. Use this setting to override the default `apt` patch rules."
        },
        "goo": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:GooSettingsResponse",
          "description": "Goo update settings. Use this setting to override the default `goo` patch rules."
        },
        "migInstancesAllowed": {
          "type": "boolean",
          "description": "Allows the patch job to run on Managed instance groups (MIGs)."
        },
        "postStep": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStepResponse",
          "description": "The `ExecStep` to run after the patch update."
        },
        "preStep": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ExecStepResponse",
          "description": "The `ExecStep` to run before the patch update."
        },
        "rebootConfig": {
          "type": "string",
          "description": "Post-patch reboot settings."
        },
        "windowsUpdate": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:WindowsUpdateSettingsResponse",
          "description": "Windows update settings. Use this override the default windows patch rules."
        },
        "yum": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:YumSettingsResponse",
          "description": "Yum update settings. Use this setting to override the default `yum` patch rules."
        },
        "zypper": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:ZypperSettingsResponse",
          "description": "Zypper update settings. Use this setting to override the default `zypper` patch rules."
        }
      },
      "type": "object",
      "required": [
        "apt",
        "goo",
        "migInstancesAllowed",
        "postStep",
        "preStep",
        "rebootConfig",
        "windowsUpdate",
        "yum",
        "zypper"
      ]
    },
    "google-native:osconfig/v1beta:PatchInstanceFilter": {
      "description": "A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Target all VM instances in the project. If true, no other criteria is permitted."
        },
        "groupLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchInstanceFilterGroupLabel"
          },
          "description": "Targets VM instances matching at least one of these label sets. This allows targeting of disparate groups, for example \"env=prod or env=staging\"."
        },
        "instanceNamePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=\"prod-\"."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`"
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:PatchInstanceFilterGroupLabel": {
      "description": "Represents a group of VMs that can be identified as having all these labels, for example \"env=prod and app=web\".",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Compute Engine instance labels that must be present for a VM instance to be targeted by this filter."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:PatchInstanceFilterGroupLabelResponse": {
      "description": "Represents a group of VMs that can be identified as having all these labels, for example \"env=prod and app=web\".",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Compute Engine instance labels that must be present for a VM instance to be targeted by this filter."
        }
      },
      "type": "object",
      "required": [
        "labels"
      ]
    },
    "google-native:osconfig/v1beta:PatchInstanceFilterResponse": {
      "description": "A filter to target VM instances for patching. The targeted VMs must meet all criteria specified. So if both labels and zones are specified, the patch job targets only VMs with those labels and in those zones.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Target all VM instances in the project. If true, no other criteria is permitted."
        },
        "groupLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchInstanceFilterGroupLabelResponse"
          },
          "description": "Targets VM instances matching at least one of these label sets. This allows targeting of disparate groups, for example \"env=prod or env=staging\"."
        },
        "instanceNamePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VMs whose name starts with one of these prefixes. Similar to labels, this is another way to group VMs when targeting configs, for example prefix=\"prod-\"."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets any of the VM instances specified. Instances are specified by their URI in the form `zones/[ZONE]/instances/[INSTANCE_NAME]`, `projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`, or `https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]`"
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targets VM instances in ANY of these zones. Leave empty to target VM instances in any zone."
        }
      },
      "type": "object",
      "required": [
        "all",
        "groupLabels",
        "instanceNamePrefixes",
        "instances",
        "zones"
      ]
    },
    "google-native:osconfig/v1beta:PatchRollout": {
      "description": "Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs.",
      "properties": {
        "disruptionBudget": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:FixedOrPercent",
          "description": "The maximum number (or percentage) of VMs per zone to disrupt at any given moment. The number of VMs calculated from multiplying the percentage by the total number of VMs in a zone is rounded up. During patching, a VM is considered disrupted from the time the agent is notified to begin until patching has completed. This disruption time includes the time to complete reboot and any post-patch steps. A VM contributes to the disruption budget if its patching operation fails either when applying the patches, running pre or post patch steps, or if it fails to respond with a success notification before timing out. VMs that are not running or do not have an active agent do not count toward this disruption budget. For zone-by-zone rollouts, if the disruption budget in a zone is exceeded, the patch job stops, because continuing to the next zone requires completion of the patch process in the previous zone. For example, if the disruption budget has a fixed value of `10`, and 8 VMs fail to patch in the current zone, the patch job continues to patch 2 VMs at a time until the zone is completed. When that zone is completed successfully, patching begins with 10 VMs at a time in the next zone. If 10 VMs in the next zone fail to patch, the patch job stops."
        },
        "mode": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchRolloutMode",
          "description": "Mode of the patch rollout."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:PatchRolloutMode": {
      "description": "Mode of the patch rollout.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Mode must be specified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "ZoneByZone",
          "description": "Patches are applied one zone at a time. The patch job begins in the region with the lowest number of targeted VMs. Within the region, patching begins in the zone with the lowest number of targeted VMs. If multiple regions (or zones within a region) have the same number of targeted VMs, a tie-breaker is achieved by sorting the regions or zones in alphabetical order.",
          "value": "ZONE_BY_ZONE"
        },
        {
          "name": "ConcurrentZones",
          "description": "Patches are applied to VMs in all zones at the same time.",
          "value": "CONCURRENT_ZONES"
        }
      ]
    },
    "google-native:osconfig/v1beta:PatchRolloutResponse": {
      "description": "Patch rollout configuration specifications. Contains details on the concurrency control when applying patch(es) to all targeted VMs.",
      "properties": {
        "disruptionBudget": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:FixedOrPercentResponse",
          "description": "The maximum number (or percentage) of VMs per zone to disrupt at any given moment. The number of VMs calculated from multiplying the percentage by the total number of VMs in a zone is rounded up. During patching, a VM is considered disrupted from the time the agent is notified to begin until patching has completed. This disruption time includes the time to complete reboot and any post-patch steps. A VM contributes to the disruption budget if its patching operation fails either when applying the patches, running pre or post patch steps, or if it fails to respond with a success notification before timing out. VMs that are not running or do not have an active agent do not count toward this disruption budget. For zone-by-zone rollouts, if the disruption budget in a zone is exceeded, the patch job stops, because continuing to the next zone requires completion of the patch process in the previous zone. For example, if the disruption budget has a fixed value of `10`, and 8 VMs fail to patch in the current zone, the patch job continues to patch 2 VMs at a time until the zone is completed. When that zone is completed successfully, patching begins with 10 VMs at a time in the next zone. If 10 VMs in the next zone fail to patch, the patch job stops."
        },
        "mode": {
          "type": "string",
          "description": "Mode of the patch rollout."
        }
      },
      "type": "object",
      "required": [
        "disruptionBudget",
        "mode"
      ]
    },
    "google-native:osconfig/v1beta:RecurringSchedule": {
      "description": "Sets the time for recurring patch deployments.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. The end time at which a recurring patch deployment schedule is no longer active."
        },
        "frequency": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:RecurringScheduleFrequency",
          "description": "The frequency unit of this recurring schedule."
        },
        "monthly": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:MonthlySchedule",
          "description": "Schedule with monthly executions."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. The time that the recurring schedule becomes effective. Defaults to `create_time` of the patch deployment."
        },
        "timeOfDay": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:TimeOfDay",
          "description": "Time of the day to run a recurring deployment."
        },
        "timeZone": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:TimeZone",
          "description": "Defines the time zone that `time_of_day` is relative to. The rules for daylight saving time are determined by the chosen time zone."
        },
        "weekly": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:WeeklySchedule",
          "description": "Schedule with weekly executions."
        }
      },
      "type": "object",
      "required": [
        "frequency",
        "monthly",
        "timeOfDay",
        "timeZone",
        "weekly"
      ]
    },
    "google-native:osconfig/v1beta:RecurringScheduleFrequency": {
      "description": "Required. The frequency unit of this recurring schedule.",
      "type": "string",
      "enum": [
        {
          "name": "FrequencyUnspecified",
          "description": "Invalid. A frequency must be specified.",
          "value": "FREQUENCY_UNSPECIFIED"
        },
        {
          "name": "Weekly",
          "description": "Indicates that the frequency of recurrence should be expressed in terms of weeks.",
          "value": "WEEKLY"
        },
        {
          "name": "Monthly",
          "description": "Indicates that the frequency of recurrence should be expressed in terms of months.",
          "value": "MONTHLY"
        },
        {
          "name": "Daily",
          "description": "Indicates that the frequency of recurrence should be expressed in terms of days.",
          "value": "DAILY"
        }
      ]
    },
    "google-native:osconfig/v1beta:RecurringScheduleResponse": {
      "description": "Sets the time for recurring patch deployments.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. The end time at which a recurring patch deployment schedule is no longer active."
        },
        "frequency": {
          "type": "string",
          "description": "The frequency unit of this recurring schedule."
        },
        "lastExecuteTime": {
          "type": "string",
          "description": "The time the last patch job ran successfully."
        },
        "monthly": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:MonthlyScheduleResponse",
          "description": "Schedule with monthly executions."
        },
        "nextExecuteTime": {
          "type": "string",
          "description": "The time the next patch job is scheduled to run."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. The time that the recurring schedule becomes effective. Defaults to `create_time` of the patch deployment."
        },
        "timeOfDay": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:TimeOfDayResponse",
          "description": "Time of the day to run a recurring deployment."
        },
        "timeZone": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:TimeZoneResponse",
          "description": "Defines the time zone that `time_of_day` is relative to. The rules for daylight saving time are determined by the chosen time zone."
        },
        "weekly": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:WeeklyScheduleResponse",
          "description": "Schedule with weekly executions."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "frequency",
        "lastExecuteTime",
        "monthly",
        "nextExecuteTime",
        "startTime",
        "timeOfDay",
        "timeZone",
        "weekly"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipe": {
      "description": "A software recipe is a set of instructions for installing and configuring a piece of software. It consists of a set of artifacts that are downloaded, and a set of steps that install, configure, and/or update the software. Recipes support installing and updating software from artifacts in the following formats: Zip archive, Tar archive, Windows MSI, Debian package, and RPM package. Additionally, recipes support executing a script (either defined in a file or directly in this api) in bash, sh, cmd, and powershell. Updating a software recipe If a recipe is assigned to an instance and there is a recipe with the same name but a lower version already installed and the assigned state of the recipe is `UPDATED`, then the recipe is updated to the new version. Script Working Directories Each script or execution step is run in its own temporary directory which is deleted after completing the step.",
      "properties": {
        "artifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeArtifact"
          },
          "description": "Resources available to be used in the steps in the recipe."
        },
        "desiredState": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeDesiredState",
          "description": "Default is INSTALLED. The desired state the agent should maintain for this recipe. INSTALLED: The software recipe is installed on the instance but won't be updated to new versions. UPDATED: The software recipe is installed on the instance. The recipe is updated to a higher version, if a higher version of the recipe is assigned to this instance. REMOVE: Remove is unsupported for software recipes and attempts to create or update a recipe to the REMOVE state is rejected."
        },
        "installSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStep"
          },
          "description": "Actions to be taken for installing this recipe. On failure it stops executing steps and does not attempt another installation. Any steps taken (including partially completed steps) are not rolled back."
        },
        "name": {
          "type": "string",
          "description": "Unique identifier for the recipe. Only one recipe with a given name is installed on an instance. Names are also used to identify resources which helps to determine whether guest policies have conflicts. This means that requests to create multiple recipes with the same name and version are rejected since they could potentially have conflicting assignments."
        },
        "updateSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStep"
          },
          "description": "Actions to be taken for updating this recipe. On failure it stops executing steps and does not attempt another update for this recipe. Any steps taken (including partially completed steps) are not rolled back."
        },
        "version": {
          "type": "string",
          "description": "The version of this software recipe. Version can be up to 4 period separated numbers (e.g. 12.34.56.78)."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeArtifact": {
      "description": "Specifies a resource to be used in the recipe.",
      "properties": {
        "allowInsecure": {
          "type": "boolean",
          "description": "Defaults to false. When false, recipes are subject to validations based on the artifact type: Remote: A checksum must be specified, and only protocols with transport-layer security are permitted. GCS: An object generation number must be specified."
        },
        "gcs": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeArtifactGcs",
          "description": "A Google Cloud Storage artifact."
        },
        "id": {
          "type": "string",
          "description": "Id of the artifact, which the installation and update steps of this recipe can reference. Artifacts in a recipe cannot have the same id."
        },
        "remote": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeArtifactRemote",
          "description": "A generic remote artifact."
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeArtifactGcs": {
      "description": "Specifies an artifact available as a Google Cloud Storage object.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Google Cloud Storage object. Given an example URL: `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `my-bucket`."
        },
        "generation": {
          "type": "string",
          "description": "Must be provided if allow_insecure is false. Generation number of the Google Cloud Storage object. `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `1234567`."
        },
        "object": {
          "type": "string",
          "description": "Name of the Google Cloud Storage object. As specified [here] (https://cloud.google.com/storage/docs/naming#objectnames) Given an example URL: `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `foo/bar`."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:SoftwareRecipeArtifactGcsResponse": {
      "description": "Specifies an artifact available as a Google Cloud Storage object.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Bucket of the Google Cloud Storage object. Given an example URL: `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `my-bucket`."
        },
        "generation": {
          "type": "string",
          "description": "Must be provided if allow_insecure is false. Generation number of the Google Cloud Storage object. `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `1234567`."
        },
        "object": {
          "type": "string",
          "description": "Name of the Google Cloud Storage object. As specified [here] (https://cloud.google.com/storage/docs/naming#objectnames) Given an example URL: `https://storage.googleapis.com/my-bucket/foo/bar#1234567` this value would be `foo/bar`."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "generation",
        "object"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeArtifactRemote": {
      "description": "Specifies an artifact available via some URI.",
      "properties": {
        "checksum": {
          "type": "string",
          "description": "Must be provided if `allow_insecure` is `false`. SHA256 checksum in hex format, to compare to the checksum of the artifact. If the checksum is not empty and it doesn't match the artifact then the recipe installation fails before running any of the steps."
        },
        "uri": {
          "type": "string",
          "description": "URI from which to fetch the object. It should contain both the protocol and path following the format {protocol}://{location}."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:SoftwareRecipeArtifactRemoteResponse": {
      "description": "Specifies an artifact available via some URI.",
      "properties": {
        "checksum": {
          "type": "string",
          "description": "Must be provided if `allow_insecure` is `false`. SHA256 checksum in hex format, to compare to the checksum of the artifact. If the checksum is not empty and it doesn't match the artifact then the recipe installation fails before running any of the steps."
        },
        "uri": {
          "type": "string",
          "description": "URI from which to fetch the object. It should contain both the protocol and path following the format {protocol}://{location}."
        }
      },
      "type": "object",
      "required": [
        "checksum",
        "uri"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeArtifactResponse": {
      "description": "Specifies a resource to be used in the recipe.",
      "properties": {
        "allowInsecure": {
          "type": "boolean",
          "description": "Defaults to false. When false, recipes are subject to validations based on the artifact type: Remote: A checksum must be specified, and only protocols with transport-layer security are permitted. GCS: An object generation number must be specified."
        },
        "gcs": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeArtifactGcsResponse",
          "description": "A Google Cloud Storage artifact."
        },
        "remote": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeArtifactRemoteResponse",
          "description": "A generic remote artifact."
        }
      },
      "type": "object",
      "required": [
        "allowInsecure",
        "gcs",
        "remote"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeDesiredState": {
      "description": "Default is INSTALLED. The desired state the agent should maintain for this recipe. INSTALLED: The software recipe is installed on the instance but won't be updated to new versions. UPDATED: The software recipe is installed on the instance. The recipe is updated to a higher version, if a higher version of the recipe is assigned to this instance. REMOVE: Remove is unsupported for software recipes and attempts to create or update a recipe to the REMOVE state is rejected.",
      "type": "string",
      "enum": [
        {
          "name": "DesiredStateUnspecified",
          "description": "The default is to ensure the package is installed.",
          "value": "DESIRED_STATE_UNSPECIFIED"
        },
        {
          "name": "Installed",
          "description": "The agent ensures that the package is installed.",
          "value": "INSTALLED"
        },
        {
          "name": "Updated",
          "description": "The agent ensures that the package is installed and periodically checks for and install any updates.",
          "value": "UPDATED"
        },
        {
          "name": "Removed",
          "description": "The agent ensures that the package is not installed and uninstall it if detected.",
          "value": "REMOVED"
        }
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeResponse": {
      "description": "A software recipe is a set of instructions for installing and configuring a piece of software. It consists of a set of artifacts that are downloaded, and a set of steps that install, configure, and/or update the software. Recipes support installing and updating software from artifacts in the following formats: Zip archive, Tar archive, Windows MSI, Debian package, and RPM package. Additionally, recipes support executing a script (either defined in a file or directly in this api) in bash, sh, cmd, and powershell. Updating a software recipe If a recipe is assigned to an instance and there is a recipe with the same name but a lower version already installed and the assigned state of the recipe is `UPDATED`, then the recipe is updated to the new version. Script Working Directories Each script or execution step is run in its own temporary directory which is deleted after completing the step.",
      "properties": {
        "artifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeArtifactResponse"
          },
          "description": "Resources available to be used in the steps in the recipe."
        },
        "desiredState": {
          "type": "string",
          "description": "Default is INSTALLED. The desired state the agent should maintain for this recipe. INSTALLED: The software recipe is installed on the instance but won't be updated to new versions. UPDATED: The software recipe is installed on the instance. The recipe is updated to a higher version, if a higher version of the recipe is assigned to this instance. REMOVE: Remove is unsupported for software recipes and attempts to create or update a recipe to the REMOVE state is rejected."
        },
        "installSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepResponse"
          },
          "description": "Actions to be taken for installing this recipe. On failure it stops executing steps and does not attempt another installation. Any steps taken (including partially completed steps) are not rolled back."
        },
        "name": {
          "type": "string",
          "description": "Unique identifier for the recipe. Only one recipe with a given name is installed on an instance. Names are also used to identify resources which helps to determine whether guest policies have conflicts. This means that requests to create multiple recipes with the same name and version are rejected since they could potentially have conflicting assignments."
        },
        "updateSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepResponse"
          },
          "description": "Actions to be taken for updating this recipe. On failure it stops executing steps and does not attempt another update for this recipe. Any steps taken (including partially completed steps) are not rolled back."
        },
        "version": {
          "type": "string",
          "description": "The version of this software recipe. Version can be up to 4 period separated numbers (e.g. 12.34.56.78)."
        }
      },
      "type": "object",
      "required": [
        "artifacts",
        "desiredState",
        "installSteps",
        "name",
        "updateSteps",
        "version"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStep": {
      "description": "An action that can be taken as part of installing or updating a recipe.",
      "properties": {
        "archiveExtraction": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepExtractArchive",
          "description": "Extracts an archive into the specified directory."
        },
        "dpkgInstallation": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepInstallDpkg",
          "description": "Installs a deb file via dpkg."
        },
        "fileCopy": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepCopyFile",
          "description": "Copies a file onto the instance."
        },
        "fileExec": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepExecFile",
          "description": "Executes an artifact or local file."
        },
        "msiInstallation": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepInstallMsi",
          "description": "Installs an MSI file."
        },
        "rpmInstallation": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepInstallRpm",
          "description": "Installs an rpm file via the rpm utility."
        },
        "scriptRun": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepRunScript",
          "description": "Runs commands in a shell."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepCopyFile": {
      "description": "Copies the artifact to the specified path on the instance.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        },
        "destination": {
          "type": "string",
          "description": "The absolute path on the instance to put the file."
        },
        "overwrite": {
          "type": "boolean",
          "description": "Whether to allow this step to overwrite existing files. If this is false and the file already exists the file is not overwritten and the step is considered a success. Defaults to false."
        },
        "permissions": {
          "type": "string",
          "description": "Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4"
        }
      },
      "type": "object",
      "required": [
        "artifactId",
        "destination"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepCopyFileResponse": {
      "description": "Copies the artifact to the specified path on the instance.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        },
        "destination": {
          "type": "string",
          "description": "The absolute path on the instance to put the file."
        },
        "overwrite": {
          "type": "boolean",
          "description": "Whether to allow this step to overwrite existing files. If this is false and the file already exists the file is not overwritten and the step is considered a success. Defaults to false."
        },
        "permissions": {
          "type": "string",
          "description": "Consists of three octal digits which represent, in order, the permissions of the owner, group, and other users for the file (similarly to the numeric mode used in the linux chmod utility). Each digit represents a three bit number with the 4 bit corresponding to the read permissions, the 2 bit corresponds to the write bit, and the one bit corresponds to the execute permission. Default behavior is 755. Below are some examples of permissions and their associated values: read, write, and execute: 7 read and execute: 5 read and write: 6 read only: 4"
        }
      },
      "type": "object",
      "required": [
        "artifactId",
        "destination",
        "overwrite",
        "permissions"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepExecFile": {
      "description": "Executes an artifact or local file.",
      "properties": {
        "allowedExitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Defaults to [0]. A list of possible return values that the program can return to indicate a success."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Arguments to be passed to the provided executable."
        },
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        },
        "localPath": {
          "type": "string",
          "description": "The absolute path of the file on the local filesystem."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepExecFileResponse": {
      "description": "Executes an artifact or local file.",
      "properties": {
        "allowedExitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Defaults to [0]. A list of possible return values that the program can return to indicate a success."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Arguments to be passed to the provided executable."
        },
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        },
        "localPath": {
          "type": "string",
          "description": "The absolute path of the file on the local filesystem."
        }
      },
      "type": "object",
      "required": [
        "allowedExitCodes",
        "args",
        "artifactId",
        "localPath"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepExtractArchive": {
      "description": "Extracts an archive of the type specified in the specified directory.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        },
        "destination": {
          "type": "string",
          "description": "Directory to extract archive to. Defaults to `/` on Linux or `C:\\` on Windows."
        },
        "type": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepExtractArchiveType",
          "description": "The type of the archive to extract."
        }
      },
      "type": "object",
      "required": [
        "artifactId",
        "type"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepExtractArchiveResponse": {
      "description": "Extracts an archive of the type specified in the specified directory.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        },
        "destination": {
          "type": "string",
          "description": "Directory to extract archive to. Defaults to `/` on Linux or `C:\\` on Windows."
        },
        "type": {
          "type": "string",
          "description": "The type of the archive to extract."
        }
      },
      "type": "object",
      "required": [
        "artifactId",
        "destination",
        "type"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepExtractArchiveType": {
      "description": "Required. The type of the archive to extract.",
      "type": "string",
      "enum": [
        {
          "name": "ArchiveTypeUnspecified",
          "description": "Indicates that the archive type isn't specified.",
          "value": "ARCHIVE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Tar",
          "description": "Indicates that the archive is a tar archive with no encryption.",
          "value": "TAR"
        },
        {
          "name": "TarGzip",
          "description": "Indicates that the archive is a tar archive with gzip encryption.",
          "value": "TAR_GZIP"
        },
        {
          "name": "TarBzip",
          "description": "Indicates that the archive is a tar archive with bzip encryption.",
          "value": "TAR_BZIP"
        },
        {
          "name": "TarLzma",
          "description": "Indicates that the archive is a tar archive with lzma encryption.",
          "value": "TAR_LZMA"
        },
        {
          "name": "TarXz",
          "description": "Indicates that the archive is a tar archive with xz encryption.",
          "value": "TAR_XZ"
        },
        {
          "name": "Zip",
          "description": "Indicates that the archive is a zip archive.",
          "value": "ZIP"
        }
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepInstallDpkg": {
      "description": "Installs a deb via dpkg.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        }
      },
      "type": "object",
      "required": [
        "artifactId"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepInstallDpkgResponse": {
      "description": "Installs a deb via dpkg.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        }
      },
      "type": "object",
      "required": [
        "artifactId"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepInstallMsi": {
      "description": "Installs an MSI file.",
      "properties": {
        "allowedExitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]"
        },
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        },
        "flags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The flags to use when installing the MSI defaults to [\"/i\"] (i.e. the install flag)."
        }
      },
      "type": "object",
      "required": [
        "artifactId"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepInstallMsiResponse": {
      "description": "Installs an MSI file.",
      "properties": {
        "allowedExitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]"
        },
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        },
        "flags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The flags to use when installing the MSI defaults to [\"/i\"] (i.e. the install flag)."
        }
      },
      "type": "object",
      "required": [
        "allowedExitCodes",
        "artifactId",
        "flags"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepInstallRpm": {
      "description": "Installs an rpm file via the rpm utility.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        }
      },
      "type": "object",
      "required": [
        "artifactId"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepInstallRpmResponse": {
      "description": "Installs an rpm file via the rpm utility.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The id of the relevant artifact in the recipe."
        }
      },
      "type": "object",
      "required": [
        "artifactId"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepResponse": {
      "description": "An action that can be taken as part of installing or updating a recipe.",
      "properties": {
        "archiveExtraction": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepExtractArchiveResponse",
          "description": "Extracts an archive into the specified directory."
        },
        "dpkgInstallation": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepInstallDpkgResponse",
          "description": "Installs a deb file via dpkg."
        },
        "fileCopy": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepCopyFileResponse",
          "description": "Copies a file onto the instance."
        },
        "fileExec": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepExecFileResponse",
          "description": "Executes an artifact or local file."
        },
        "msiInstallation": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepInstallMsiResponse",
          "description": "Installs an MSI file."
        },
        "rpmInstallation": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepInstallRpmResponse",
          "description": "Installs an rpm file via the rpm utility."
        },
        "scriptRun": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepRunScriptResponse",
          "description": "Runs commands in a shell."
        }
      },
      "type": "object",
      "required": [
        "archiveExtraction",
        "dpkgInstallation",
        "fileCopy",
        "fileExec",
        "msiInstallation",
        "rpmInstallation",
        "scriptRun"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepRunScript": {
      "description": "Runs a script through an interpreter.",
      "properties": {
        "allowedExitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]"
        },
        "interpreter": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeStepRunScriptInterpreter",
          "description": "The script interpreter to use to run the script. If no interpreter is specified the script is executed directly, which likely only succeed for scripts with [shebang lines](https://en.wikipedia.org/wiki/Shebang_\\(Unix\\))."
        },
        "script": {
          "type": "string",
          "description": "The shell script to be executed."
        }
      },
      "type": "object",
      "required": [
        "script"
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepRunScriptInterpreter": {
      "description": "The script interpreter to use to run the script. If no interpreter is specified the script is executed directly, which likely only succeed for scripts with [shebang lines](https://en.wikipedia.org/wiki/Shebang_\\(Unix\\)).",
      "type": "string",
      "enum": [
        {
          "name": "InterpreterUnspecified",
          "description": "Default value for ScriptType.",
          "value": "INTERPRETER_UNSPECIFIED"
        },
        {
          "name": "Shell",
          "description": "Indicates that the script is run with `/bin/sh` on Linux and `cmd` on windows.",
          "value": "SHELL"
        },
        {
          "name": "Powershell",
          "description": "Indicates that the script is run with powershell.",
          "value": "POWERSHELL"
        }
      ]
    },
    "google-native:osconfig/v1beta:SoftwareRecipeStepRunScriptResponse": {
      "description": "Runs a script through an interpreter.",
      "properties": {
        "allowedExitCodes": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Return codes that indicate that the software installed or updated successfully. Behaviour defaults to [0]"
        },
        "interpreter": {
          "type": "string",
          "description": "The script interpreter to use to run the script. If no interpreter is specified the script is executed directly, which likely only succeed for scripts with [shebang lines](https://en.wikipedia.org/wiki/Shebang_\\(Unix\\))."
        },
        "script": {
          "type": "string",
          "description": "The shell script to be executed."
        }
      },
      "type": "object",
      "required": [
        "allowedExitCodes",
        "interpreter",
        "script"
      ]
    },
    "google-native:osconfig/v1beta:TimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:TimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:osconfig/v1beta:TimeZone": {
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "properties": {
        "id": {
          "type": "string",
          "description": "IANA Time Zone Database time zone, e.g. \"America/New_York\"."
        },
        "version": {
          "type": "string",
          "description": "Optional. IANA Time Zone Database version number, e.g. \"2019a\"."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:TimeZoneResponse": {
      "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
      "properties": {
        "version": {
          "type": "string",
          "description": "Optional. IANA Time Zone Database version number, e.g. \"2019a\"."
        }
      },
      "type": "object",
      "required": [
        "version"
      ]
    },
    "google-native:osconfig/v1beta:WeekDayOfMonth": {
      "description": "Represents one week day in a month. An example is \"the 4th Sunday\".",
      "properties": {
        "dayOfWeek": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:WeekDayOfMonthDayOfWeek",
          "description": "A day of the week."
        },
        "dayOffset": {
          "type": "integer",
          "description": "Optional. Represents the number of days before or after the given week day of month that the patch deployment is scheduled for. For example if `week_ordinal` and `day_of_week` values point to the second day of the month and this `day_offset` value is set to `3`, the patch deployment takes place three days after the second Tuesday of the month. If this value is negative, for example -5, the patches are deployed five days before before the second Tuesday of the month. Allowed values are in range [-30, 30]."
        },
        "weekOrdinal": {
          "type": "integer",
          "description": "Week number in a month. 1-4 indicates the 1st to 4th week of the month. -1 indicates the last week of the month."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "weekOrdinal"
      ]
    },
    "google-native:osconfig/v1beta:WeekDayOfMonthDayOfWeek": {
      "description": "Required. A day of the week.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:osconfig/v1beta:WeekDayOfMonthResponse": {
      "description": "Represents one week day in a month. An example is \"the 4th Sunday\".",
      "properties": {
        "dayOfWeek": {
          "type": "string",
          "description": "A day of the week."
        },
        "dayOffset": {
          "type": "integer",
          "description": "Optional. Represents the number of days before or after the given week day of month that the patch deployment is scheduled for. For example if `week_ordinal` and `day_of_week` values point to the second day of the month and this `day_offset` value is set to `3`, the patch deployment takes place three days after the second Tuesday of the month. If this value is negative, for example -5, the patches are deployed five days before before the second Tuesday of the month. Allowed values are in range [-30, 30]."
        },
        "weekOrdinal": {
          "type": "integer",
          "description": "Week number in a month. 1-4 indicates the 1st to 4th week of the month. -1 indicates the last week of the month."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek",
        "dayOffset",
        "weekOrdinal"
      ]
    },
    "google-native:osconfig/v1beta:WeeklySchedule": {
      "description": "Represents a weekly schedule.",
      "properties": {
        "dayOfWeek": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:WeeklyScheduleDayOfWeek",
          "description": "Day of the week."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek"
      ]
    },
    "google-native:osconfig/v1beta:WeeklyScheduleDayOfWeek": {
      "description": "Required. Day of the week.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:osconfig/v1beta:WeeklyScheduleResponse": {
      "description": "Represents a weekly schedule.",
      "properties": {
        "dayOfWeek": {
          "type": "string",
          "description": "Day of the week."
        }
      },
      "type": "object",
      "required": [
        "dayOfWeek"
      ]
    },
    "google-native:osconfig/v1beta:WindowsUpdateSettings": {
      "description": "Windows patching is performed using the Windows Update Agent.",
      "properties": {
        "classifications": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:WindowsUpdateSettingsClassificationsItem"
          },
          "description": "Only apply updates of these windows update classifications. If empty, all updates are applied."
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of KBs to exclude from update."
        },
        "exclusivePatches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:WindowsUpdateSettingsClassificationsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ClassificationUnspecified",
          "description": "Invalid. If classifications are included, they must be specified.",
          "value": "CLASSIFICATION_UNSPECIFIED"
        },
        {
          "name": "Critical",
          "description": "\"A widely released fix for a specific problem that addresses a critical, non-security-related bug.\" [1]",
          "value": "CRITICAL"
        },
        {
          "name": "Security",
          "description": "\"A widely released fix for a product-specific, security-related vulnerability. Security vulnerabilities are rated by their severity. The severity rating is indicated in the Microsoft security bulletin as critical, important, moderate, or low.\" [1]",
          "value": "SECURITY"
        },
        {
          "name": "Definition",
          "description": "\"A widely released and frequent software update that contains additions to a product's definition database. Definition databases are often used to detect objects that have specific attributes, such as malicious code, phishing websites, or junk mail.\" [1]",
          "value": "DEFINITION"
        },
        {
          "name": "Driver",
          "description": "\"Software that controls the input and output of a device.\" [1]",
          "value": "DRIVER"
        },
        {
          "name": "FeaturePack",
          "description": "\"New product functionality that is first distributed outside the context of a product release and that is typically included in the next full product release.\" [1]",
          "value": "FEATURE_PACK"
        },
        {
          "name": "ServicePack",
          "description": "\"A tested, cumulative set of all hotfixes, security updates, critical updates, and updates. Additionally, service packs may contain additional fixes for problems that are found internally since the release of the product. Service packs my also contain a limited number of customer-requested design changes or features.\" [1]",
          "value": "SERVICE_PACK"
        },
        {
          "name": "Tool",
          "description": "\"A utility or feature that helps complete a task or set of tasks.\" [1]",
          "value": "TOOL"
        },
        {
          "name": "UpdateRollup",
          "description": "\"A tested, cumulative set of hotfixes, security updates, critical updates, and updates that are packaged together for easy deployment. A rollup generally targets a specific area, such as security, or a component of a product, such as Internet Information Services (IIS).\" [1]",
          "value": "UPDATE_ROLLUP"
        },
        {
          "name": "Update",
          "description": "\"A widely released fix for a specific problem. An update addresses a noncritical, non-security-related bug.\" [1]",
          "value": "UPDATE"
        }
      ]
    },
    "google-native:osconfig/v1beta:WindowsUpdateSettingsResponse": {
      "description": "Windows patching is performed using the Windows Update Agent.",
      "properties": {
        "classifications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only apply updates of these windows update classifications. If empty, all updates are applied."
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of KBs to exclude from update."
        },
        "exclusivePatches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of kbs to be updated. These are the only patches that will be updated. This field must not be used with other patch configurations."
        }
      },
      "type": "object",
      "required": [
        "classifications",
        "excludes",
        "exclusivePatches"
      ]
    },
    "google-native:osconfig/v1beta:YumRepository": {
      "description": "Represents a single Yum package repository. This repository is added to a repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        },
        "id": {
          "type": "string",
          "description": "A one word, unique name for this repository. This is the `repo id` in the Yum config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for guest policy conflicts."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "id"
      ]
    },
    "google-native:osconfig/v1beta:YumRepositoryResponse": {
      "description": "Represents a single Yum package repository. This repository is added to a repo file that is stored at `/etc/yum.repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "displayName",
        "gpgKeys"
      ]
    },
    "google-native:osconfig/v1beta:YumSettings": {
      "description": "Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms.",
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag."
        },
        "exclusivePackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields."
        },
        "minimal": {
          "type": "boolean",
          "description": "Will cause patch to run `yum update-minimal` instead."
        },
        "security": {
          "type": "boolean",
          "description": "Adds the `--security` flag to `yum update`. Not supported on all platforms."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:YumSettingsResponse": {
      "description": "Yum patching is performed by executing `yum update`. Additional options can be set to control how this is executed. Note that not all settings are supported on all platforms.",
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of packages to exclude from update. These packages are excluded by using the yum `--exclude` flag."
        },
        "exclusivePackages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of packages to be updated. These are the only packages that will be updated. If these packages are not installed, they will be ignored. This field must not be specified with any other patch configuration fields."
        },
        "minimal": {
          "type": "boolean",
          "description": "Will cause patch to run `yum update-minimal` instead."
        },
        "security": {
          "type": "boolean",
          "description": "Adds the `--security` flag to `yum update`. Not supported on all platforms."
        }
      },
      "type": "object",
      "required": [
        "excludes",
        "exclusivePackages",
        "minimal",
        "security"
      ]
    },
    "google-native:osconfig/v1beta:ZypperRepository": {
      "description": "Represents a single Zypper package repository. This repository is added to a repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        },
        "id": {
          "type": "string",
          "description": "A one word, unique name for this repository. This is the `repo id` in the zypper config file and also the `display_name` if `display_name` is omitted. This id is also used as the unique identifier when checking for guest policy conflicts."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "id"
      ]
    },
    "google-native:osconfig/v1beta:ZypperRepositoryResponse": {
      "description": "Represents a single Zypper package repository. This repository is added to a repo file that is stored at `/etc/zypp/repos.d/google_osconfig.repo`.",
      "properties": {
        "baseUrl": {
          "type": "string",
          "description": "The location of the repository directory."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the repository."
        },
        "gpgKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URIs of GPG keys."
        }
      },
      "type": "object",
      "required": [
        "baseUrl",
        "displayName",
        "gpgKeys"
      ]
    },
    "google-native:osconfig/v1beta:ZypperSettings": {
      "description": "Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Install only patches with these categories. Common categories include security, recommended, and feature."
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of patches to exclude from update."
        },
        "exclusivePatches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of patches to be updated. These are the only patches that will be installed using 'zypper patch patch:' command. This field must not be used with any other patch configuration fields."
        },
        "severities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Install only patches with these severities. Common severities include critical, important, moderate, and low."
        },
        "withOptional": {
          "type": "boolean",
          "description": "Adds the `--with-optional` flag to `zypper patch`."
        },
        "withUpdate": {
          "type": "boolean",
          "description": "Adds the `--with-update` flag, to `zypper patch`."
        }
      },
      "type": "object"
    },
    "google-native:osconfig/v1beta:ZypperSettingsResponse": {
      "description": "Zypper patching is performed by running `zypper patch`. See also https://en.opensuse.org/SDB:Zypper_manual.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Install only patches with these categories. Common categories include security, recommended, and feature."
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of patches to exclude from update."
        },
        "exclusivePatches": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An exclusive list of patches to be updated. These are the only patches that will be installed using 'zypper patch patch:' command. This field must not be used with any other patch configuration fields."
        },
        "severities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Install only patches with these severities. Common severities include critical, important, moderate, and low."
        },
        "withOptional": {
          "type": "boolean",
          "description": "Adds the `--with-optional` flag to `zypper patch`."
        },
        "withUpdate": {
          "type": "boolean",
          "description": "Adds the `--with-update` flag, to `zypper patch`."
        }
      },
      "type": "object",
      "required": [
        "categories",
        "excludes",
        "exclusivePatches",
        "severities",
        "withOptional",
        "withUpdate"
      ]
    },
    "google-native:policysimulator/v1:GoogleCloudPolicysimulatorV1ReplayConfig": {
      "description": "The configuration used for a Replay.",
      "properties": {
        "logSource": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfigLogSource",
          "description": "The logs to use as input for the Replay."
        },
        "policyOverlay": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay."
        }
      },
      "type": "object"
    },
    "google-native:policysimulator/v1:GoogleCloudPolicysimulatorV1ReplayConfigLogSource": {
      "description": "The logs to use as input for the Replay.",
      "type": "string",
      "enum": [
        {
          "name": "LogSourceUnspecified",
          "description": "An unspecified log source. If the log source is unspecified, the Replay defaults to using `RECENT_ACCESSES`.",
          "value": "LOG_SOURCE_UNSPECIFIED"
        },
        {
          "name": "RecentAccesses",
          "description": "All access logs from the last 90 days. These logs may not include logs from the most recent 7 days.",
          "value": "RECENT_ACCESSES"
        }
      ]
    },
    "google-native:policysimulator/v1:GoogleCloudPolicysimulatorV1ReplayConfigResponse": {
      "description": "The configuration used for a Replay.",
      "properties": {
        "logSource": {
          "type": "string",
          "description": "The logs to use as input for the Replay."
        },
        "policyOverlay": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay."
        }
      },
      "type": "object",
      "required": [
        "logSource",
        "policyOverlay"
      ]
    },
    "google-native:policysimulator/v1:GoogleCloudPolicysimulatorV1ReplayResultsSummaryResponse": {
      "description": "Summary statistics about the replayed log entries.",
      "properties": {
        "differenceCount": {
          "type": "integer",
          "description": "The number of replayed log entries with a difference between baseline and simulated policies."
        },
        "errorCount": {
          "type": "integer",
          "description": "The number of log entries that could not be replayed."
        },
        "logCount": {
          "type": "integer",
          "description": "The total number of log entries replayed."
        },
        "newestDate": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleTypeDateResponse",
          "description": "The date of the newest log entry replayed."
        },
        "oldestDate": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleTypeDateResponse",
          "description": "The date of the oldest log entry replayed."
        },
        "unchangedCount": {
          "type": "integer",
          "description": "The number of replayed log entries with no difference between baseline and simulated policies."
        }
      },
      "type": "object",
      "required": [
        "differenceCount",
        "errorCount",
        "logCount",
        "newestDate",
        "oldestDate",
        "unchangedCount"
      ]
    },
    "google-native:policysimulator/v1:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:policysimulator/v1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfig": {
      "description": "The configuration used for a Replay.",
      "properties": {
        "logSource": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigLogSource",
          "description": "The logs to use as input for the Replay."
        },
        "policyOverlay": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay."
        }
      },
      "type": "object"
    },
    "google-native:policysimulator/v1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigLogSource": {
      "description": "The logs to use as input for the Replay.",
      "type": "string",
      "enum": [
        {
          "name": "LogSourceUnspecified",
          "description": "An unspecified log source. If the log source is unspecified, the Replay defaults to using `RECENT_ACCESSES`.",
          "value": "LOG_SOURCE_UNSPECIFIED"
        },
        {
          "name": "RecentAccesses",
          "description": "All access logs from the last 90 days. These logs may not include logs from the most recent 7 days.",
          "value": "RECENT_ACCESSES"
        }
      ]
    },
    "google-native:policysimulator/v1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigResponse": {
      "description": "The configuration used for a Replay.",
      "properties": {
        "logSource": {
          "type": "string",
          "description": "The logs to use as input for the Replay."
        },
        "policyOverlay": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay."
        }
      },
      "type": "object",
      "required": [
        "logSource",
        "policyOverlay"
      ]
    },
    "google-native:policysimulator/v1alpha:GoogleCloudPolicysimulatorV1alphaReplayResultsSummaryResponse": {
      "description": "Summary statistics about the replayed log entries.",
      "properties": {
        "differenceCount": {
          "type": "integer",
          "description": "The number of replayed log entries with a difference between baseline and simulated policies."
        },
        "errorCount": {
          "type": "integer",
          "description": "The number of log entries that could not be replayed."
        },
        "logCount": {
          "type": "integer",
          "description": "The total number of log entries replayed."
        },
        "newestDate": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleTypeDateResponse",
          "description": "The date of the newest log entry replayed."
        },
        "oldestDate": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleTypeDateResponse",
          "description": "The date of the oldest log entry replayed."
        },
        "unchangedCount": {
          "type": "integer",
          "description": "The number of replayed log entries with no difference between baseline and simulated policies."
        }
      },
      "type": "object",
      "required": [
        "differenceCount",
        "errorCount",
        "logCount",
        "newestDate",
        "oldestDate",
        "unchangedCount"
      ]
    },
    "google-native:policysimulator/v1alpha:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:policysimulator/v1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfig": {
      "description": "The configuration used for a Replay.",
      "properties": {
        "logSource": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigLogSource",
          "description": "The logs to use as input for the Replay."
        },
        "policyOverlay": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay."
        }
      },
      "type": "object"
    },
    "google-native:policysimulator/v1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigLogSource": {
      "description": "The logs to use as input for the Replay.",
      "type": "string",
      "enum": [
        {
          "name": "LogSourceUnspecified",
          "description": "An unspecified log source. If the log source is unspecified, the Replay defaults to using `RECENT_ACCESSES`.",
          "value": "LOG_SOURCE_UNSPECIFIED"
        },
        {
          "name": "RecentAccesses",
          "description": "All access logs from the last 90 days. These logs may not include logs from the most recent 7 days.",
          "value": "RECENT_ACCESSES"
        }
      ]
    },
    "google-native:policysimulator/v1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigResponse": {
      "description": "The configuration used for a Replay.",
      "properties": {
        "logSource": {
          "type": "string",
          "description": "The logs to use as input for the Replay."
        },
        "policyOverlay": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay."
        }
      },
      "type": "object",
      "required": [
        "logSource",
        "policyOverlay"
      ]
    },
    "google-native:policysimulator/v1beta1:GoogleCloudPolicysimulatorV1beta1ReplayResultsSummaryResponse": {
      "description": "Summary statistics about the replayed log entries.",
      "properties": {
        "differenceCount": {
          "type": "integer",
          "description": "The number of replayed log entries with a difference between baseline and simulated policies."
        },
        "errorCount": {
          "type": "integer",
          "description": "The number of log entries that could not be replayed."
        },
        "logCount": {
          "type": "integer",
          "description": "The total number of log entries replayed."
        },
        "newestDate": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleTypeDateResponse",
          "description": "The date of the newest log entry replayed."
        },
        "oldestDate": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleTypeDateResponse",
          "description": "The date of the oldest log entry replayed."
        },
        "unchangedCount": {
          "type": "integer",
          "description": "The number of replayed log entries with no difference between baseline and simulated policies."
        }
      },
      "type": "object",
      "required": [
        "differenceCount",
        "errorCount",
        "logCount",
        "newestDate",
        "oldestDate",
        "unchangedCount"
      ]
    },
    "google-native:policysimulator/v1beta1:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:policysimulator/v1beta:GoogleCloudPolicysimulatorV1betaReplayConfig": {
      "description": "The configuration used for a Replay.",
      "properties": {
        "logSource": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfigLogSource",
          "description": "The logs to use as input for the Replay."
        },
        "policyOverlay": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay."
        }
      },
      "type": "object"
    },
    "google-native:policysimulator/v1beta:GoogleCloudPolicysimulatorV1betaReplayConfigLogSource": {
      "description": "The logs to use as input for the Replay.",
      "type": "string",
      "enum": [
        {
          "name": "LogSourceUnspecified",
          "description": "An unspecified log source. If the log source is unspecified, the Replay defaults to using `RECENT_ACCESSES`.",
          "value": "LOG_SOURCE_UNSPECIFIED"
        },
        {
          "name": "RecentAccesses",
          "description": "All access logs from the last 90 days. These logs may not include logs from the most recent 7 days.",
          "value": "RECENT_ACCESSES"
        }
      ]
    },
    "google-native:policysimulator/v1beta:GoogleCloudPolicysimulatorV1betaReplayConfigResponse": {
      "description": "The configuration used for a Replay.",
      "properties": {
        "logSource": {
          "type": "string",
          "description": "The logs to use as input for the Replay."
        },
        "policyOverlay": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay."
        }
      },
      "type": "object",
      "required": [
        "logSource",
        "policyOverlay"
      ]
    },
    "google-native:policysimulator/v1beta:GoogleCloudPolicysimulatorV1betaReplayResultsSummaryResponse": {
      "description": "Summary statistics about the replayed log entries.",
      "properties": {
        "differenceCount": {
          "type": "integer",
          "description": "The number of replayed log entries with a difference between baseline and simulated policies."
        },
        "errorCount": {
          "type": "integer",
          "description": "The number of log entries that could not be replayed."
        },
        "logCount": {
          "type": "integer",
          "description": "The total number of log entries replayed."
        },
        "newestDate": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleTypeDateResponse",
          "description": "The date of the newest log entry replayed."
        },
        "oldestDate": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleTypeDateResponse",
          "description": "The date of the oldest log entry replayed."
        },
        "unchangedCount": {
          "type": "integer",
          "description": "The number of replayed log entries with no difference between baseline and simulated policies."
        }
      },
      "type": "object",
      "required": [
        "differenceCount",
        "errorCount",
        "logCount",
        "newestDate",
        "oldestDate",
        "unchangedCount"
      ]
    },
    "google-native:policysimulator/v1beta:GoogleTypeDateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:privateca/v1:AccessUrlsResponse": {
      "description": "URLs where a CertificateAuthority will publish content.",
      "properties": {
        "caCertificateAccessUrl": {
          "type": "string",
          "description": "The URL where this CertificateAuthority's CA certificate is published. This will only be set for CAs that have been activated."
        },
        "crlAccessUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs where this CertificateAuthority's CRLs are published. This will only be set for CAs that have been activated."
        }
      },
      "type": "object",
      "required": [
        "caCertificateAccessUrl",
        "crlAccessUrls"
      ]
    },
    "google-native:privateca/v1:AllowedKeyType": {
      "description": "Describes a \"type\" of key that may be used in a Certificate issued from a CaPool. Note that a single AllowedKeyType may refer to either a fully-qualified key algorithm, such as RSA 4096, or a family of key algorithms, such as any RSA key.",
      "properties": {
        "ellipticCurve": {
          "$ref": "#/types/google-native:privateca%2Fv1:EcKeyType",
          "description": "Represents an allowed Elliptic Curve key type."
        },
        "rsa": {
          "$ref": "#/types/google-native:privateca%2Fv1:RsaKeyType",
          "description": "Represents an allowed RSA key type."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:AllowedKeyTypeResponse": {
      "description": "Describes a \"type\" of key that may be used in a Certificate issued from a CaPool. Note that a single AllowedKeyType may refer to either a fully-qualified key algorithm, such as RSA 4096, or a family of key algorithms, such as any RSA key.",
      "properties": {
        "ellipticCurve": {
          "$ref": "#/types/google-native:privateca%2Fv1:EcKeyTypeResponse",
          "description": "Represents an allowed Elliptic Curve key type."
        },
        "rsa": {
          "$ref": "#/types/google-native:privateca%2Fv1:RsaKeyTypeResponse",
          "description": "Represents an allowed RSA key type."
        }
      },
      "type": "object",
      "required": [
        "ellipticCurve",
        "rsa"
      ]
    },
    "google-native:privateca/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:privateca/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:privateca%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:privateca/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:privateca/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:privateca%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:privateca%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:privateca/v1:CaOptions": {
      "description": "Describes values that are relevant in a CA certificate.",
      "properties": {
        "isCa": {
          "type": "boolean",
          "description": "Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate."
        },
        "maxIssuerPathLength": {
          "type": "integer",
          "description": "Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:CaOptionsResponse": {
      "description": "Describes values that are relevant in a CA certificate.",
      "properties": {
        "isCa": {
          "type": "boolean",
          "description": "Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate."
        },
        "maxIssuerPathLength": {
          "type": "integer",
          "description": "Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate."
        }
      },
      "type": "object",
      "required": [
        "isCa",
        "maxIssuerPathLength"
      ]
    },
    "google-native:privateca/v1:CaPoolTier": {
      "description": "Required. Immutable. The Tier of this CaPool.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Not specified.",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Enterprise",
          "description": "Enterprise tier.",
          "value": "ENTERPRISE"
        },
        {
          "name": "Devops",
          "description": "DevOps tier.",
          "value": "DEVOPS"
        }
      ]
    },
    "google-native:privateca/v1:CertificateAuthorityType": {
      "description": "Required. Immutable. The Type of this CertificateAuthority.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "SelfSigned",
          "description": "Self-signed CA.",
          "value": "SELF_SIGNED"
        },
        {
          "name": "Subordinate",
          "description": "Subordinate CA. Could be issued by a Private CA CertificateAuthority or an unmanaged CA.",
          "value": "SUBORDINATE"
        }
      ]
    },
    "google-native:privateca/v1:CertificateConfig": {
      "description": "A CertificateConfig describes an X.509 certificate or CSR that is to be created, as an alternative to using ASN.1.",
      "properties": {
        "publicKey": {
          "$ref": "#/types/google-native:privateca%2Fv1:PublicKey",
          "description": "Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR."
        },
        "subjectConfig": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubjectConfig",
          "description": "Specifies some of the values in a certificate that are related to the subject."
        },
        "x509Config": {
          "$ref": "#/types/google-native:privateca%2Fv1:X509Parameters",
          "description": "Describes how some of the technical X.509 fields in a certificate should be populated."
        }
      },
      "type": "object",
      "required": [
        "subjectConfig",
        "x509Config"
      ]
    },
    "google-native:privateca/v1:CertificateConfigResponse": {
      "description": "A CertificateConfig describes an X.509 certificate or CSR that is to be created, as an alternative to using ASN.1.",
      "properties": {
        "publicKey": {
          "$ref": "#/types/google-native:privateca%2Fv1:PublicKeyResponse",
          "description": "Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR."
        },
        "subjectConfig": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubjectConfigResponse",
          "description": "Specifies some of the values in a certificate that are related to the subject."
        },
        "x509Config": {
          "$ref": "#/types/google-native:privateca%2Fv1:X509ParametersResponse",
          "description": "Describes how some of the technical X.509 fields in a certificate should be populated."
        }
      },
      "type": "object",
      "required": [
        "publicKey",
        "subjectConfig",
        "x509Config"
      ]
    },
    "google-native:privateca/v1:CertificateDescriptionResponse": {
      "description": "A CertificateDescription describes an X.509 certificate or CSR that has been issued, as an alternative to using ASN.1 / X.509.",
      "properties": {
        "aiaIssuingCertificateUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Describes lists of issuer CA certificate URLs that appear in the \"Authority Information Access\" extension in the certificate."
        },
        "authorityKeyId": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyIdResponse",
          "description": "Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1"
        },
        "certFingerprint": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateFingerprintResponse",
          "description": "The hash of the x.509 certificate."
        },
        "crlDistributionPoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Describes 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"
        },
        "publicKey": {
          "$ref": "#/types/google-native:privateca%2Fv1:PublicKeyResponse",
          "description": "The public key that corresponds to an issued certificate."
        },
        "subjectDescription": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubjectDescriptionResponse",
          "description": "Describes some of the values in a certificate that are related to the subject and lifetime."
        },
        "subjectKeyId": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyIdResponse",
          "description": "Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2."
        },
        "x509Description": {
          "$ref": "#/types/google-native:privateca%2Fv1:X509ParametersResponse",
          "description": "Describes some of the technical X.509 fields in a certificate."
        }
      },
      "type": "object",
      "required": [
        "aiaIssuingCertificateUrls",
        "authorityKeyId",
        "certFingerprint",
        "crlDistributionPoints",
        "publicKey",
        "subjectDescription",
        "subjectKeyId",
        "x509Description"
      ]
    },
    "google-native:privateca/v1:CertificateExtensionConstraints": {
      "description": "Describes a set of X.509 extensions that may be part of some certificate issuance controls.",
      "properties": {
        "additionalExtensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:ObjectId"
          },
          "description": "Optional. A set of ObjectIds identifying custom X.509 extensions. Will be combined with known_extensions to determine the full set of X.509 extensions."
        },
        "knownExtensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:CertificateExtensionConstraintsKnownExtensionsItem"
          },
          "description": "Optional. A set of named X.509 extensions. Will be combined with additional_extensions to determine the full set of X.509 extensions."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:CertificateExtensionConstraintsKnownExtensionsItem": {
      "type": "string",
      "enum": [
        {
          "name": "KnownCertificateExtensionUnspecified",
          "description": "Not specified.",
          "value": "KNOWN_CERTIFICATE_EXTENSION_UNSPECIFIED"
        },
        {
          "name": "BaseKeyUsage",
          "description": "Refers to a certificate's Key Usage extension, as described in [RFC 5280 section 4.2.1.3](https://tools.ietf.org/html/rfc5280#section-4.2.1.3). This corresponds to the KeyUsage.base_key_usage field.",
          "value": "BASE_KEY_USAGE"
        },
        {
          "name": "ExtendedKeyUsage",
          "description": "Refers to a certificate's Extended Key Usage extension, as described in [RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12). This corresponds to the KeyUsage.extended_key_usage message.",
          "value": "EXTENDED_KEY_USAGE"
        },
        {
          "name": "CaOptions",
          "description": "Refers to a certificate's Basic Constraints extension, as described in [RFC 5280 section 4.2.1.9](https://tools.ietf.org/html/rfc5280#section-4.2.1.9). This corresponds to the X509Parameters.ca_options field.",
          "value": "CA_OPTIONS"
        },
        {
          "name": "PolicyIds",
          "description": "Refers to a certificate's Policy object identifiers, as described in [RFC 5280 section 4.2.1.4](https://tools.ietf.org/html/rfc5280#section-4.2.1.4). This corresponds to the X509Parameters.policy_ids field.",
          "value": "POLICY_IDS"
        },
        {
          "name": "AiaOcspServers",
          "description": "Refers to OCSP servers in a certificate's Authority Information Access extension, as described in [RFC 5280 section 4.2.2.1](https://tools.ietf.org/html/rfc5280#section-4.2.2.1), This corresponds to the X509Parameters.aia_ocsp_servers field.",
          "value": "AIA_OCSP_SERVERS"
        },
        {
          "name": "NameConstraints",
          "description": "Refers to Name Constraints extension as described in [RFC 5280 section 4.2.1.10](https://tools.ietf.org/html/rfc5280#section-4.2.1.10)",
          "value": "NAME_CONSTRAINTS"
        }
      ]
    },
    "google-native:privateca/v1:CertificateExtensionConstraintsResponse": {
      "description": "Describes a set of X.509 extensions that may be part of some certificate issuance controls.",
      "properties": {
        "additionalExtensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:ObjectIdResponse"
          },
          "description": "Optional. A set of ObjectIds identifying custom X.509 extensions. Will be combined with known_extensions to determine the full set of X.509 extensions."
        },
        "knownExtensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of named X.509 extensions. Will be combined with additional_extensions to determine the full set of X.509 extensions."
        }
      },
      "type": "object",
      "required": [
        "additionalExtensions",
        "knownExtensions"
      ]
    },
    "google-native:privateca/v1:CertificateFingerprintResponse": {
      "description": "A group of fingerprints for the x509 certificate.",
      "properties": {
        "sha256Hash": {
          "type": "string",
          "description": "The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate."
        }
      },
      "type": "object",
      "required": [
        "sha256Hash"
      ]
    },
    "google-native:privateca/v1:CertificateIdentityConstraints": {
      "description": "Describes constraints on a Certificate's Subject and SubjectAltNames.",
      "properties": {
        "allowSubjectAltNamesPassthrough": {
          "type": "boolean",
          "description": "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."
        },
        "allowSubjectPassthrough": {
          "type": "boolean",
          "description": "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."
        },
        "celExpression": {
          "$ref": "#/types/google-native:privateca%2Fv1:Expr",
          "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"
        }
      },
      "type": "object",
      "required": [
        "allowSubjectAltNamesPassthrough",
        "allowSubjectPassthrough"
      ]
    },
    "google-native:privateca/v1:CertificateIdentityConstraintsResponse": {
      "description": "Describes constraints on a Certificate's Subject and SubjectAltNames.",
      "properties": {
        "allowSubjectAltNamesPassthrough": {
          "type": "boolean",
          "description": "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."
        },
        "allowSubjectPassthrough": {
          "type": "boolean",
          "description": "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."
        },
        "celExpression": {
          "$ref": "#/types/google-native:privateca%2Fv1:ExprResponse",
          "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"
        }
      },
      "type": "object",
      "required": [
        "allowSubjectAltNamesPassthrough",
        "allowSubjectPassthrough",
        "celExpression"
      ]
    },
    "google-native:privateca/v1:CertificateSubjectMode": {
      "description": "Immutable. Specifies how the Certificate's identity fields are to be decided. If this is omitted, the `DEFAULT` subject mode will be used.",
      "type": "string",
      "enum": [
        {
          "name": "SubjectRequestModeUnspecified",
          "description": "Not specified.",
          "value": "SUBJECT_REQUEST_MODE_UNSPECIFIED"
        },
        {
          "name": "Default",
          "description": "The default mode used in most cases. Indicates that the certificate's Subject and/or SubjectAltNames are specified in the certificate request. This mode requires the caller to have the `privateca.certificates.create` permission.",
          "value": "DEFAULT"
        },
        {
          "name": "ReflectedSpiffe",
          "description": "A mode reserved for special cases. Indicates that the certificate should have one SPIFFE SubjectAltNames set by the service based on the caller's identity. This mode will ignore any explicitly specified Subject and/or SubjectAltNames in the certificate request. This mode requires the caller to have the `privateca.certificates.createForSelf` permission.",
          "value": "REFLECTED_SPIFFE"
        }
      ]
    },
    "google-native:privateca/v1:EcKeyType": {
      "description": "Describes an Elliptic Curve key that may be used in a Certificate issued from a CaPool.",
      "properties": {
        "signatureAlgorithm": {
          "$ref": "#/types/google-native:privateca%2Fv1:EcKeyTypeSignatureAlgorithm",
          "description": "Optional. A signature algorithm that must be used. If this is omitted, any EC-based signature algorithm will be allowed."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:EcKeyTypeResponse": {
      "description": "Describes an Elliptic Curve key that may be used in a Certificate issued from a CaPool.",
      "properties": {
        "signatureAlgorithm": {
          "type": "string",
          "description": "Optional. A signature algorithm that must be used. If this is omitted, any EC-based signature algorithm will be allowed."
        }
      },
      "type": "object",
      "required": [
        "signatureAlgorithm"
      ]
    },
    "google-native:privateca/v1:EcKeyTypeSignatureAlgorithm": {
      "description": "Optional. A signature algorithm that must be used. If this is omitted, any EC-based signature algorithm will be allowed.",
      "type": "string",
      "enum": [
        {
          "name": "EcSignatureAlgorithmUnspecified",
          "description": "Not specified. Signifies that any signature algorithm may be used.",
          "value": "EC_SIGNATURE_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "EcdsaP256",
          "description": "Refers to the Elliptic Curve Digital Signature Algorithm over the NIST P-256 curve.",
          "value": "ECDSA_P256"
        },
        {
          "name": "EcdsaP384",
          "description": "Refers to the Elliptic Curve Digital Signature Algorithm over the NIST P-384 curve.",
          "value": "ECDSA_P384"
        },
        {
          "name": "Eddsa25519",
          "description": "Refers to the Edwards-curve Digital Signature Algorithm over curve 25519, as described in RFC 8410.",
          "value": "EDDSA_25519"
        }
      ]
    },
    "google-native:privateca/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:privateca/v1:ExtendedKeyUsageOptions": {
      "description": "KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value.",
      "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."
        },
        "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\"."
        },
        "emailProtection": {
          "type": "boolean",
          "description": "Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\"."
        },
        "ocspSigning": {
          "type": "boolean",
          "description": "Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\"."
        },
        "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."
        },
        "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\"."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:ExtendedKeyUsageOptionsResponse": {
      "description": "KeyUsage.ExtendedKeyUsageOptions has fields that correspond to certain common OIDs that could be specified as an extended key usage value.",
      "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."
        },
        "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\"."
        },
        "emailProtection": {
          "type": "boolean",
          "description": "Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\"."
        },
        "ocspSigning": {
          "type": "boolean",
          "description": "Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\"."
        },
        "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."
        },
        "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\"."
        }
      },
      "type": "object",
      "required": [
        "clientAuth",
        "codeSigning",
        "emailProtection",
        "ocspSigning",
        "serverAuth",
        "timeStamping"
      ]
    },
    "google-native:privateca/v1:IssuanceModes": {
      "description": "IssuanceModes specifies the allowed ways in which Certificates may be requested from this CaPool.",
      "properties": {
        "allowConfigBasedIssuance": {
          "type": "boolean",
          "description": "Optional. When true, allows callers to create Certificates by specifying a CertificateConfig."
        },
        "allowCsrBasedIssuance": {
          "type": "boolean",
          "description": "Optional. When true, allows callers to create Certificates by specifying a CSR."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:IssuanceModesResponse": {
      "description": "IssuanceModes specifies the allowed ways in which Certificates may be requested from this CaPool.",
      "properties": {
        "allowConfigBasedIssuance": {
          "type": "boolean",
          "description": "Optional. When true, allows callers to create Certificates by specifying a CertificateConfig."
        },
        "allowCsrBasedIssuance": {
          "type": "boolean",
          "description": "Optional. When true, allows callers to create Certificates by specifying a CSR."
        }
      },
      "type": "object",
      "required": [
        "allowConfigBasedIssuance",
        "allowCsrBasedIssuance"
      ]
    },
    "google-native:privateca/v1:IssuancePolicy": {
      "description": "Defines controls over all certificate issuance within a CaPool.",
      "properties": {
        "allowedIssuanceModes": {
          "$ref": "#/types/google-native:privateca%2Fv1:IssuanceModes",
          "description": "Optional. If specified, then only methods allowed in the IssuanceModes may be used to issue Certificates."
        },
        "allowedKeyTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AllowedKeyType"
          },
          "description": "Optional. If any AllowedKeyType is specified, then the certificate request's public key must match one of the key types listed here. Otherwise, any key may be used."
        },
        "baselineValues": {
          "$ref": "#/types/google-native:privateca%2Fv1:X509Parameters",
          "description": "Optional. A set of X.509 values that will be applied to all certificates issued through this CaPool. If a certificate request includes conflicting values for the same properties, they will be overwritten by the values defined here. If a certificate request uses a CertificateTemplate that defines conflicting predefined_values for the same properties, the certificate issuance request will fail."
        },
        "identityConstraints": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateIdentityConstraints",
          "description": "Optional. Describes constraints on identities that may appear in Certificates issued through this CaPool. If this is omitted, then this CaPool will not add restrictions on a certificate's identity."
        },
        "maximumLifetime": {
          "type": "string",
          "description": "Optional. The maximum lifetime allowed for issued Certificates. Note that if the issuing CertificateAuthority expires before a Certificate's requested maximum_lifetime, the effective lifetime will be explicitly truncated to match it."
        },
        "passthroughExtensions": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateExtensionConstraints",
          "description": "Optional. Describes the set of X.509 extensions that may appear in a Certificate issued through this CaPool. If a certificate request sets extensions that don't appear in the passthrough_extensions, those extensions will be dropped. If a certificate request uses a CertificateTemplate with predefined_values that don't appear here, the certificate issuance request will fail. If this is omitted, then this CaPool will not add restrictions on a certificate's X.509 extensions. These constraints do not apply to X.509 extensions set in this CaPool's baseline_values."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:IssuancePolicyResponse": {
      "description": "Defines controls over all certificate issuance within a CaPool.",
      "properties": {
        "allowedIssuanceModes": {
          "$ref": "#/types/google-native:privateca%2Fv1:IssuanceModesResponse",
          "description": "Optional. If specified, then only methods allowed in the IssuanceModes may be used to issue Certificates."
        },
        "allowedKeyTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AllowedKeyTypeResponse"
          },
          "description": "Optional. If any AllowedKeyType is specified, then the certificate request's public key must match one of the key types listed here. Otherwise, any key may be used."
        },
        "baselineValues": {
          "$ref": "#/types/google-native:privateca%2Fv1:X509ParametersResponse",
          "description": "Optional. A set of X.509 values that will be applied to all certificates issued through this CaPool. If a certificate request includes conflicting values for the same properties, they will be overwritten by the values defined here. If a certificate request uses a CertificateTemplate that defines conflicting predefined_values for the same properties, the certificate issuance request will fail."
        },
        "identityConstraints": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateIdentityConstraintsResponse",
          "description": "Optional. Describes constraints on identities that may appear in Certificates issued through this CaPool. If this is omitted, then this CaPool will not add restrictions on a certificate's identity."
        },
        "maximumLifetime": {
          "type": "string",
          "description": "Optional. The maximum lifetime allowed for issued Certificates. Note that if the issuing CertificateAuthority expires before a Certificate's requested maximum_lifetime, the effective lifetime will be explicitly truncated to match it."
        },
        "passthroughExtensions": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateExtensionConstraintsResponse",
          "description": "Optional. Describes the set of X.509 extensions that may appear in a Certificate issued through this CaPool. If a certificate request sets extensions that don't appear in the passthrough_extensions, those extensions will be dropped. If a certificate request uses a CertificateTemplate with predefined_values that don't appear here, the certificate issuance request will fail. If this is omitted, then this CaPool will not add restrictions on a certificate's X.509 extensions. These constraints do not apply to X.509 extensions set in this CaPool's baseline_values."
        }
      },
      "type": "object",
      "required": [
        "allowedIssuanceModes",
        "allowedKeyTypes",
        "baselineValues",
        "identityConstraints",
        "maximumLifetime",
        "passthroughExtensions"
      ]
    },
    "google-native:privateca/v1:KeyIdResponse": {
      "description": "A KeyId identifies a specific public key, usually by hashing the public key.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key."
        }
      },
      "type": "object",
      "required": [
        "keyId"
      ]
    },
    "google-native:privateca/v1:KeyUsage": {
      "description": "A KeyUsage describes key usage values that may appear in an X.509 certificate.",
      "properties": {
        "baseKeyUsage": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyUsageOptions",
          "description": "Describes high-level ways in which a key may be used."
        },
        "extendedKeyUsage": {
          "$ref": "#/types/google-native:privateca%2Fv1:ExtendedKeyUsageOptions",
          "description": "Detailed scenarios in which a key may be used."
        },
        "unknownExtendedKeyUsages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:ObjectId"
          },
          "description": "Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:KeyUsageOptions": {
      "description": "KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3.",
      "properties": {
        "certSign": {
          "type": "boolean",
          "description": "The key may be used to sign certificates."
        },
        "contentCommitment": {
          "type": "boolean",
          "description": "The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\"."
        },
        "crlSign": {
          "type": "boolean",
          "description": "The key may be used sign certificate revocation lists."
        },
        "dataEncipherment": {
          "type": "boolean",
          "description": "The key may be used to encipher data."
        },
        "decipherOnly": {
          "type": "boolean",
          "description": "The key may be used to decipher only."
        },
        "digitalSignature": {
          "type": "boolean",
          "description": "The key may be used for digital signatures."
        },
        "encipherOnly": {
          "type": "boolean",
          "description": "The key may be used to encipher only."
        },
        "keyAgreement": {
          "type": "boolean",
          "description": "The key may be used in a key agreement protocol."
        },
        "keyEncipherment": {
          "type": "boolean",
          "description": "The key may be used to encipher other keys."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:KeyUsageOptionsResponse": {
      "description": "KeyUsage.KeyUsageOptions corresponds to the key usage values described in https://tools.ietf.org/html/rfc5280#section-4.2.1.3.",
      "properties": {
        "certSign": {
          "type": "boolean",
          "description": "The key may be used to sign certificates."
        },
        "contentCommitment": {
          "type": "boolean",
          "description": "The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\"."
        },
        "crlSign": {
          "type": "boolean",
          "description": "The key may be used sign certificate revocation lists."
        },
        "dataEncipherment": {
          "type": "boolean",
          "description": "The key may be used to encipher data."
        },
        "decipherOnly": {
          "type": "boolean",
          "description": "The key may be used to decipher only."
        },
        "digitalSignature": {
          "type": "boolean",
          "description": "The key may be used for digital signatures."
        },
        "encipherOnly": {
          "type": "boolean",
          "description": "The key may be used to encipher only."
        },
        "keyAgreement": {
          "type": "boolean",
          "description": "The key may be used in a key agreement protocol."
        },
        "keyEncipherment": {
          "type": "boolean",
          "description": "The key may be used to encipher other keys."
        }
      },
      "type": "object",
      "required": [
        "certSign",
        "contentCommitment",
        "crlSign",
        "dataEncipherment",
        "decipherOnly",
        "digitalSignature",
        "encipherOnly",
        "keyAgreement",
        "keyEncipherment"
      ]
    },
    "google-native:privateca/v1:KeyUsageResponse": {
      "description": "A KeyUsage describes key usage values that may appear in an X.509 certificate.",
      "properties": {
        "baseKeyUsage": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyUsageOptionsResponse",
          "description": "Describes high-level ways in which a key may be used."
        },
        "extendedKeyUsage": {
          "$ref": "#/types/google-native:privateca%2Fv1:ExtendedKeyUsageOptionsResponse",
          "description": "Detailed scenarios in which a key may be used."
        },
        "unknownExtendedKeyUsages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:ObjectIdResponse"
          },
          "description": "Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message."
        }
      },
      "type": "object",
      "required": [
        "baseKeyUsage",
        "extendedKeyUsage",
        "unknownExtendedKeyUsages"
      ]
    },
    "google-native:privateca/v1:KeyVersionSpec": {
      "description": "A Cloud KMS key configuration that a CertificateAuthority will use.",
      "properties": {
        "algorithm": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyVersionSpecAlgorithm",
          "description": "The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`."
        },
        "cloudKmsKeyVersion": {
          "type": "string",
          "description": "The resource name for an existing Cloud KMS CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`. This option enables full flexibility in the key's capabilities and properties."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:KeyVersionSpecAlgorithm": {
      "description": "The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`.",
      "type": "string",
      "enum": [
        {
          "name": "SignHashAlgorithmUnspecified",
          "description": "Not specified.",
          "value": "SIGN_HASH_ALGORITHM_UNSPECIFIED"
        },
        {
          "name": "RsaPss2048Sha256",
          "description": "maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PSS_2048_SHA256",
          "value": "RSA_PSS_2048_SHA256"
        },
        {
          "name": "RsaPss3072Sha256",
          "description": "maps to CryptoKeyVersionAlgorithm. RSA_SIGN_PSS_3072_SHA256",
          "value": "RSA_PSS_3072_SHA256"
        },
        {
          "name": "RsaPss4096Sha256",
          "description": "maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PSS_4096_SHA256",
          "value": "RSA_PSS_4096_SHA256"
        },
        {
          "name": "RsaPkcs12048Sha256",
          "description": "maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_2048_SHA256",
          "value": "RSA_PKCS1_2048_SHA256"
        },
        {
          "name": "RsaPkcs13072Sha256",
          "description": "maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_3072_SHA256",
          "value": "RSA_PKCS1_3072_SHA256"
        },
        {
          "name": "RsaPkcs14096Sha256",
          "description": "maps to CryptoKeyVersionAlgorithm.RSA_SIGN_PKCS1_4096_SHA256",
          "value": "RSA_PKCS1_4096_SHA256"
        },
        {
          "name": "EcP256Sha256",
          "description": "maps to CryptoKeyVersionAlgorithm.EC_SIGN_P256_SHA256",
          "value": "EC_P256_SHA256"
        },
        {
          "name": "EcP384Sha384",
          "description": "maps to CryptoKeyVersionAlgorithm.EC_SIGN_P384_SHA384",
          "value": "EC_P384_SHA384"
        }
      ]
    },
    "google-native:privateca/v1:KeyVersionSpecResponse": {
      "description": "A Cloud KMS key configuration that a CertificateAuthority will use.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`."
        },
        "cloudKmsKeyVersion": {
          "type": "string",
          "description": "The resource name for an existing Cloud KMS CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`. This option enables full flexibility in the key's capabilities and properties."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "cloudKmsKeyVersion"
      ]
    },
    "google-native:privateca/v1:NameConstraints": {
      "description": "Describes the X.509 name constraints extension, per https://tools.ietf.org/html/rfc5280#section-4.2.1.10",
      "properties": {
        "critical": {
          "type": "boolean",
          "description": "Indicates whether or not the name constraints are marked critical."
        },
        "excludedDnsNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains excluded DNS names. Any DNS name that can be constructed by simply adding zero or more labels to the left-hand side of the name satisfies the name constraint. For example, `example.com`, `www.example.com`, `www.sub.example.com` would satisfy `example.com` while `example1.com` does not."
        },
        "excludedEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the excluded email addresses. The value can be a particular email address, a hostname to indicate all email addresses on that host or a domain with a leading period (e.g. `.example.com`) to indicate all email addresses in that domain."
        },
        "excludedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the excluded IP ranges. For IPv4 addresses, the ranges are expressed using CIDR notation as specified in RFC 4632. For IPv6 addresses, the ranges are expressed in similar encoding as IPv4 addresses."
        },
        "excludedUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the excluded URIs that apply to the host part of the name. The value can be a hostname or a domain with a leading period (like `.example.com`)"
        },
        "permittedDnsNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains permitted DNS names. Any DNS name that can be constructed by simply adding zero or more labels to the left-hand side of the name satisfies the name constraint. For example, `example.com`, `www.example.com`, `www.sub.example.com` would satisfy `example.com` while `example1.com` does not."
        },
        "permittedEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the permitted email addresses. The value can be a particular email address, a hostname to indicate all email addresses on that host or a domain with a leading period (e.g. `.example.com`) to indicate all email addresses in that domain."
        },
        "permittedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the permitted IP ranges. For IPv4 addresses, the ranges are expressed using CIDR notation as specified in RFC 4632. For IPv6 addresses, the ranges are expressed in similar encoding as IPv4 addresses."
        },
        "permittedUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the permitted URIs that apply to the host part of the name. The value can be a hostname or a domain with a leading period (like `.example.com`)"
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:NameConstraintsResponse": {
      "description": "Describes the X.509 name constraints extension, per https://tools.ietf.org/html/rfc5280#section-4.2.1.10",
      "properties": {
        "critical": {
          "type": "boolean",
          "description": "Indicates whether or not the name constraints are marked critical."
        },
        "excludedDnsNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains excluded DNS names. Any DNS name that can be constructed by simply adding zero or more labels to the left-hand side of the name satisfies the name constraint. For example, `example.com`, `www.example.com`, `www.sub.example.com` would satisfy `example.com` while `example1.com` does not."
        },
        "excludedEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the excluded email addresses. The value can be a particular email address, a hostname to indicate all email addresses on that host or a domain with a leading period (e.g. `.example.com`) to indicate all email addresses in that domain."
        },
        "excludedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the excluded IP ranges. For IPv4 addresses, the ranges are expressed using CIDR notation as specified in RFC 4632. For IPv6 addresses, the ranges are expressed in similar encoding as IPv4 addresses."
        },
        "excludedUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the excluded URIs that apply to the host part of the name. The value can be a hostname or a domain with a leading period (like `.example.com`)"
        },
        "permittedDnsNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains permitted DNS names. Any DNS name that can be constructed by simply adding zero or more labels to the left-hand side of the name satisfies the name constraint. For example, `example.com`, `www.example.com`, `www.sub.example.com` would satisfy `example.com` while `example1.com` does not."
        },
        "permittedEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the permitted email addresses. The value can be a particular email address, a hostname to indicate all email addresses on that host or a domain with a leading period (e.g. `.example.com`) to indicate all email addresses in that domain."
        },
        "permittedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the permitted IP ranges. For IPv4 addresses, the ranges are expressed using CIDR notation as specified in RFC 4632. For IPv6 addresses, the ranges are expressed in similar encoding as IPv4 addresses."
        },
        "permittedUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains the permitted URIs that apply to the host part of the name. The value can be a hostname or a domain with a leading period (like `.example.com`)"
        }
      },
      "type": "object",
      "required": [
        "critical",
        "excludedDnsNames",
        "excludedEmailAddresses",
        "excludedIpRanges",
        "excludedUris",
        "permittedDnsNames",
        "permittedEmailAddresses",
        "permittedIpRanges",
        "permittedUris"
      ]
    },
    "google-native:privateca/v1:ObjectId": {
      "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.",
      "properties": {
        "objectIdPath": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The parts of an OID path. The most significant parts of the path come first."
        }
      },
      "type": "object",
      "required": [
        "objectIdPath"
      ]
    },
    "google-native:privateca/v1:ObjectIdResponse": {
      "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.",
      "properties": {
        "objectIdPath": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The parts of an OID path. The most significant parts of the path come first."
        }
      },
      "type": "object",
      "required": [
        "objectIdPath"
      ]
    },
    "google-native:privateca/v1:PublicKey": {
      "description": "A PublicKey describes a public key.",
      "properties": {
        "format": {
          "$ref": "#/types/google-native:privateca%2Fv1:PublicKeyFormat",
          "description": "The format of the public key."
        },
        "key": {
          "type": "string",
          "description": "A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field."
        }
      },
      "type": "object",
      "required": [
        "format",
        "key"
      ]
    },
    "google-native:privateca/v1:PublicKeyFormat": {
      "description": "Required. The format of the public key.",
      "type": "string",
      "enum": [
        {
          "name": "KeyFormatUnspecified",
          "description": "Default unspecified value.",
          "value": "KEY_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Pem",
          "description": "The key is PEM-encoded as defined in [RFC 7468](https://tools.ietf.org/html/rfc7468). It can be any of the following: a PEM-encoded PKCS#1/RFC 3447 RSAPublicKey structure, an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) or a PEM-encoded X.509 certificate signing request (CSR). If a [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) is specified, it can contain a A PEM-encoded PKCS#1/RFC 3447 RSAPublicKey or a NIST P-256/secp256r1/prime256v1 or P-384 key. If a CSR is specified, it will used solely for the purpose of extracting the public key. When generated by the service, it will always be an RFC 5280 [SubjectPublicKeyInfo](https://tools.ietf.org/html/rfc5280#section-4.1) structure containing an algorithm identifier and a key.",
          "value": "PEM"
        }
      ]
    },
    "google-native:privateca/v1:PublicKeyResponse": {
      "description": "A PublicKey describes a public key.",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format of the public key."
        },
        "key": {
          "type": "string",
          "description": "A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field."
        }
      },
      "type": "object",
      "required": [
        "format",
        "key"
      ]
    },
    "google-native:privateca/v1:PublishingOptions": {
      "description": "Options relating to the publication of each CertificateAuthority's CA certificate and CRLs and their inclusion as extensions in issued Certificates. The options set here apply to certificates issued by any CertificateAuthority in the CaPool.",
      "properties": {
        "encodingFormat": {
          "$ref": "#/types/google-native:privateca%2Fv1:PublishingOptionsEncodingFormat",
          "description": "Optional. Specifies the encoding format of each CertificateAuthority's CA certificate and CRLs. If this is omitted, CA certificates and CRLs will be published in PEM."
        },
        "publishCaCert": {
          "type": "boolean",
          "description": "Optional. When true, publishes each CertificateAuthority's CA certificate and includes its URL in the \"Authority Information Access\" X.509 extension in all issued Certificates. If this is false, the CA certificate will not be published and the corresponding X.509 extension will not be written in issued certificates."
        },
        "publishCrl": {
          "type": "boolean",
          "description": "Optional. When true, publishes each CertificateAuthority's CRL and includes its URL in the \"CRL Distribution Points\" X.509 extension in all issued Certificates. If this is false, CRLs will not be published and the corresponding X.509 extension will not be written in issued certificates. CRLs will expire 7 days from their creation. However, we will rebuild daily. CRLs are also rebuilt shortly after a certificate is revoked."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:PublishingOptionsEncodingFormat": {
      "description": "Optional. Specifies the encoding format of each CertificateAuthority's CA certificate and CRLs. If this is omitted, CA certificates and CRLs will be published in PEM.",
      "type": "string",
      "enum": [
        {
          "name": "EncodingFormatUnspecified",
          "description": "Not specified. By default, PEM format will be used.",
          "value": "ENCODING_FORMAT_UNSPECIFIED"
        },
        {
          "name": "Pem",
          "description": "The CertificateAuthority's CA certificate and CRLs will be published in PEM format.",
          "value": "PEM"
        },
        {
          "name": "Der",
          "description": "The CertificateAuthority's CA certificate and CRLs will be published in DER format.",
          "value": "DER"
        }
      ]
    },
    "google-native:privateca/v1:PublishingOptionsResponse": {
      "description": "Options relating to the publication of each CertificateAuthority's CA certificate and CRLs and their inclusion as extensions in issued Certificates. The options set here apply to certificates issued by any CertificateAuthority in the CaPool.",
      "properties": {
        "encodingFormat": {
          "type": "string",
          "description": "Optional. Specifies the encoding format of each CertificateAuthority's CA certificate and CRLs. If this is omitted, CA certificates and CRLs will be published in PEM."
        },
        "publishCaCert": {
          "type": "boolean",
          "description": "Optional. When true, publishes each CertificateAuthority's CA certificate and includes its URL in the \"Authority Information Access\" X.509 extension in all issued Certificates. If this is false, the CA certificate will not be published and the corresponding X.509 extension will not be written in issued certificates."
        },
        "publishCrl": {
          "type": "boolean",
          "description": "Optional. When true, publishes each CertificateAuthority's CRL and includes its URL in the \"CRL Distribution Points\" X.509 extension in all issued Certificates. If this is false, CRLs will not be published and the corresponding X.509 extension will not be written in issued certificates. CRLs will expire 7 days from their creation. However, we will rebuild daily. CRLs are also rebuilt shortly after a certificate is revoked."
        }
      },
      "type": "object",
      "required": [
        "encodingFormat",
        "publishCaCert",
        "publishCrl"
      ]
    },
    "google-native:privateca/v1:RevocationDetailsResponse": {
      "description": "Describes fields that are relavent to the revocation of a Certificate.",
      "properties": {
        "revocationState": {
          "type": "string",
          "description": "Indicates why a Certificate was revoked."
        },
        "revocationTime": {
          "type": "string",
          "description": "The time at which this Certificate was revoked."
        }
      },
      "type": "object",
      "required": [
        "revocationState",
        "revocationTime"
      ]
    },
    "google-native:privateca/v1:RsaKeyType": {
      "description": "Describes an RSA key that may be used in a Certificate issued from a CaPool.",
      "properties": {
        "maxModulusSize": {
          "type": "string",
          "description": "Optional. The maximum allowed RSA modulus size (inclusive), in bits. If this is not set, or if set to zero, the service will not enforce an explicit upper bound on RSA modulus sizes."
        },
        "minModulusSize": {
          "type": "string",
          "description": "Optional. The minimum allowed RSA modulus size (inclusive), in bits. If this is not set, or if set to zero, the service-level min RSA modulus size will continue to apply."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:RsaKeyTypeResponse": {
      "description": "Describes an RSA key that may be used in a Certificate issued from a CaPool.",
      "properties": {
        "maxModulusSize": {
          "type": "string",
          "description": "Optional. The maximum allowed RSA modulus size (inclusive), in bits. If this is not set, or if set to zero, the service will not enforce an explicit upper bound on RSA modulus sizes."
        },
        "minModulusSize": {
          "type": "string",
          "description": "Optional. The minimum allowed RSA modulus size (inclusive), in bits. If this is not set, or if set to zero, the service-level min RSA modulus size will continue to apply."
        }
      },
      "type": "object",
      "required": [
        "maxModulusSize",
        "minModulusSize"
      ]
    },
    "google-native:privateca/v1:Subject": {
      "description": "Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate.",
      "properties": {
        "commonName": {
          "type": "string",
          "description": "The \"common name\" of the subject."
        },
        "countryCode": {
          "type": "string",
          "description": "The country code of the subject."
        },
        "locality": {
          "type": "string",
          "description": "The locality or city of the subject."
        },
        "organization": {
          "type": "string",
          "description": "The organization of the subject."
        },
        "organizationalUnit": {
          "type": "string",
          "description": "The organizational_unit of the subject."
        },
        "postalCode": {
          "type": "string",
          "description": "The postal code of the subject."
        },
        "province": {
          "type": "string",
          "description": "The province, territory, or regional state of the subject."
        },
        "streetAddress": {
          "type": "string",
          "description": "The street address of the subject."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:SubjectAltNames": {
      "description": "SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the \"common name\" in the distinguished name).",
      "properties": {
        "customSans": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:X509Extension"
          },
          "description": "Contains additional subject alternative name values. For each custom_san, the `value` field must contain an ASN.1 encoded UTF8String."
        },
        "dnsNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains only valid, fully-qualified host names."
        },
        "emailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains only valid RFC 2822 E-mail addresses."
        },
        "ipAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains only valid RFC 3986 URIs."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:SubjectAltNamesResponse": {
      "description": "SubjectAltNames corresponds to a more modern way of listing what the asserted identity is in a certificate (i.e., compared to the \"common name\" in the distinguished name).",
      "properties": {
        "customSans": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:X509ExtensionResponse"
          },
          "description": "Contains additional subject alternative name values. For each custom_san, the `value` field must contain an ASN.1 encoded UTF8String."
        },
        "dnsNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains only valid, fully-qualified host names."
        },
        "emailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains only valid RFC 2822 E-mail addresses."
        },
        "ipAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses."
        },
        "uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contains only valid RFC 3986 URIs."
        }
      },
      "type": "object",
      "required": [
        "customSans",
        "dnsNames",
        "emailAddresses",
        "ipAddresses",
        "uris"
      ]
    },
    "google-native:privateca/v1:SubjectConfig": {
      "description": "These values are used to create the distinguished name and subject alternative name fields in an X.509 certificate.",
      "properties": {
        "subject": {
          "$ref": "#/types/google-native:privateca%2Fv1:Subject",
          "description": "Optional. Contains distinguished name fields such as the common name, location and organization."
        },
        "subjectAltName": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubjectAltNames",
          "description": "Optional. The subject alternative name fields."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:SubjectConfigResponse": {
      "description": "These values are used to create the distinguished name and subject alternative name fields in an X.509 certificate.",
      "properties": {
        "subject": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubjectResponse",
          "description": "Optional. Contains distinguished name fields such as the common name, location and organization."
        },
        "subjectAltName": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubjectAltNamesResponse",
          "description": "Optional. The subject alternative name fields."
        }
      },
      "type": "object",
      "required": [
        "subject",
        "subjectAltName"
      ]
    },
    "google-native:privateca/v1:SubjectDescriptionResponse": {
      "description": "These values describe fields in an issued X.509 certificate such as the distinguished name, subject alternative names, serial number, and lifetime.",
      "properties": {
        "hexSerialNumber": {
          "type": "string",
          "description": "The serial number encoded in lowercase hexadecimal."
        },
        "lifetime": {
          "type": "string",
          "description": "For convenience, the actual lifetime of an issued certificate."
        },
        "notAfterTime": {
          "type": "string",
          "description": "The time after which the certificate is expired. Per RFC 5280, the validity period for a certificate is the period of time from not_before_time through not_after_time, inclusive. Corresponds to 'not_before_time' + 'lifetime' - 1 second."
        },
        "notBeforeTime": {
          "type": "string",
          "description": "The time at which the certificate becomes valid."
        },
        "subject": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubjectResponse",
          "description": "Contains distinguished name fields such as the common name, location and / organization."
        },
        "subjectAltName": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubjectAltNamesResponse",
          "description": "The subject alternative name fields."
        }
      },
      "type": "object",
      "required": [
        "hexSerialNumber",
        "lifetime",
        "notAfterTime",
        "notBeforeTime",
        "subject",
        "subjectAltName"
      ]
    },
    "google-native:privateca/v1:SubjectResponse": {
      "description": "Subject describes parts of a distinguished name that, in turn, describes the subject of the certificate.",
      "properties": {
        "commonName": {
          "type": "string",
          "description": "The \"common name\" of the subject."
        },
        "countryCode": {
          "type": "string",
          "description": "The country code of the subject."
        },
        "locality": {
          "type": "string",
          "description": "The locality or city of the subject."
        },
        "organization": {
          "type": "string",
          "description": "The organization of the subject."
        },
        "organizationalUnit": {
          "type": "string",
          "description": "The organizational_unit of the subject."
        },
        "postalCode": {
          "type": "string",
          "description": "The postal code of the subject."
        },
        "province": {
          "type": "string",
          "description": "The province, territory, or regional state of the subject."
        },
        "streetAddress": {
          "type": "string",
          "description": "The street address of the subject."
        }
      },
      "type": "object",
      "required": [
        "commonName",
        "countryCode",
        "locality",
        "organization",
        "organizationalUnit",
        "postalCode",
        "province",
        "streetAddress"
      ]
    },
    "google-native:privateca/v1:SubordinateConfig": {
      "description": "Describes a subordinate CA's issuers. This is either a resource name to a known issuing CertificateAuthority, or a PEM issuer certificate chain.",
      "properties": {
        "certificateAuthority": {
          "type": "string",
          "description": "This can refer to a CertificateAuthority that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`."
        },
        "pemIssuerChain": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubordinateConfigChain",
          "description": "Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself."
        }
      },
      "type": "object",
      "required": [
        "certificateAuthority",
        "pemIssuerChain"
      ]
    },
    "google-native:privateca/v1:SubordinateConfigChain": {
      "description": "This message describes a subordinate CA's issuer certificate chain. This wrapper exists for compatibility reasons.",
      "properties": {
        "pemCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Expected to be in leaf-to-root order according to RFC 5246."
        }
      },
      "type": "object",
      "required": [
        "pemCertificates"
      ]
    },
    "google-native:privateca/v1:SubordinateConfigChainResponse": {
      "description": "This message describes a subordinate CA's issuer certificate chain. This wrapper exists for compatibility reasons.",
      "properties": {
        "pemCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Expected to be in leaf-to-root order according to RFC 5246."
        }
      },
      "type": "object",
      "required": [
        "pemCertificates"
      ]
    },
    "google-native:privateca/v1:SubordinateConfigResponse": {
      "description": "Describes a subordinate CA's issuers. This is either a resource name to a known issuing CertificateAuthority, or a PEM issuer certificate chain.",
      "properties": {
        "certificateAuthority": {
          "type": "string",
          "description": "This can refer to a CertificateAuthority that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`."
        },
        "pemIssuerChain": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubordinateConfigChainResponse",
          "description": "Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself."
        }
      },
      "type": "object",
      "required": [
        "certificateAuthority",
        "pemIssuerChain"
      ]
    },
    "google-native:privateca/v1:X509Extension": {
      "description": "An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.",
      "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)."
        },
        "objectId": {
          "$ref": "#/types/google-native:privateca%2Fv1:ObjectId",
          "description": "The OID for this X.509 extension."
        },
        "value": {
          "type": "string",
          "description": "The value of this X.509 extension."
        }
      },
      "type": "object",
      "required": [
        "objectId",
        "value"
      ]
    },
    "google-native:privateca/v1:X509ExtensionResponse": {
      "description": "An X509Extension specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.",
      "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)."
        },
        "objectId": {
          "$ref": "#/types/google-native:privateca%2Fv1:ObjectIdResponse",
          "description": "The OID for this X.509 extension."
        },
        "value": {
          "type": "string",
          "description": "The value of this X.509 extension."
        }
      },
      "type": "object",
      "required": [
        "critical",
        "objectId",
        "value"
      ]
    },
    "google-native:privateca/v1:X509Parameters": {
      "description": "An X509Parameters is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions.",
      "properties": {
        "additionalExtensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:X509Extension"
          },
          "description": "Optional. Describes custom X.509 extensions."
        },
        "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."
        },
        "caOptions": {
          "$ref": "#/types/google-native:privateca%2Fv1:CaOptions",
          "description": "Optional. Describes options in this X509Parameters that are relevant in a CA certificate."
        },
        "keyUsage": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyUsage",
          "description": "Optional. Indicates the intended use for keys that correspond to a certificate."
        },
        "nameConstraints": {
          "$ref": "#/types/google-native:privateca%2Fv1:NameConstraints",
          "description": "Optional. Describes the X.509 name constraints extension."
        },
        "policyIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:ObjectId"
          },
          "description": "Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1:X509ParametersResponse": {
      "description": "An X509Parameters is used to describe certain fields of an X.509 certificate, such as the key usage fields, fields specific to CA certificates, certificate policy extensions and custom extensions.",
      "properties": {
        "additionalExtensions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:X509ExtensionResponse"
          },
          "description": "Optional. Describes custom X.509 extensions."
        },
        "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."
        },
        "caOptions": {
          "$ref": "#/types/google-native:privateca%2Fv1:CaOptionsResponse",
          "description": "Optional. Describes options in this X509Parameters that are relevant in a CA certificate."
        },
        "keyUsage": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyUsageResponse",
          "description": "Optional. Indicates the intended use for keys that correspond to a certificate."
        },
        "nameConstraints": {
          "$ref": "#/types/google-native:privateca%2Fv1:NameConstraintsResponse",
          "description": "Optional. Describes the X.509 name constraints extension."
        },
        "policyIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:ObjectIdResponse"
          },
          "description": "Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4."
        }
      },
      "type": "object",
      "required": [
        "additionalExtensions",
        "aiaOcspServers",
        "caOptions",
        "keyUsage",
        "nameConstraints",
        "policyIds"
      ]
    },
    "google-native:privateca/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:privateca/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:privateca/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:privateca/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:privateca%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:privateca%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:privateca/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:privateca/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:pubsub/v1:AvroConfig": {
      "description": "Configuration for writing message data in Avro format. Message payloads and metadata will be written to files as an Avro binary.",
      "properties": {
        "writeMetadata": {
          "type": "boolean",
          "description": "Optional. When true, write the subscription name, message_id, publish_time, attributes, and ordering_key as additional fields in the output. The subscription name, message_id, and publish_time fields are put in their own fields while all other message properties other than data (for example, an ordering_key, if present) are added as entries in the attributes map."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:AvroConfigResponse": {
      "description": "Configuration for writing message data in Avro format. Message payloads and metadata will be written to files as an Avro binary.",
      "properties": {
        "writeMetadata": {
          "type": "boolean",
          "description": "Optional. When true, write the subscription name, message_id, publish_time, attributes, and ordering_key as additional fields in the output. The subscription name, message_id, and publish_time fields are put in their own fields while all other message properties other than data (for example, an ordering_key, if present) are added as entries in the attributes map."
        }
      },
      "type": "object",
      "required": [
        "writeMetadata"
      ]
    },
    "google-native:pubsub/v1:BigQueryConfig": {
      "description": "Configuration for a BigQuery subscription.",
      "properties": {
        "dropUnknownFields": {
          "type": "boolean",
          "description": "Optional. When true and use_topic_schema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog."
        },
        "table": {
          "type": "string",
          "description": "Optional. The name of the table to which to write data, of the form {projectId}.{datasetId}.{tableId}"
        },
        "useTopicSchema": {
          "type": "boolean",
          "description": "Optional. When true, use the topic's schema as the columns to write to in BigQuery, if it exists."
        },
        "writeMetadata": {
          "type": "boolean",
          "description": "Optional. When true, write the subscription name, message_id, publish_time, attributes, and ordering_key to additional columns in the table. The subscription name, message_id, and publish_time fields are put in their own columns while all other message properties (other than data) are written to a JSON object in the attributes column."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:BigQueryConfigResponse": {
      "description": "Configuration for a BigQuery subscription.",
      "properties": {
        "dropUnknownFields": {
          "type": "boolean",
          "description": "Optional. When true and use_topic_schema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog."
        },
        "state": {
          "type": "string",
          "description": "An output-only field that indicates whether or not the subscription can receive messages."
        },
        "table": {
          "type": "string",
          "description": "Optional. The name of the table to which to write data, of the form {projectId}.{datasetId}.{tableId}"
        },
        "useTopicSchema": {
          "type": "boolean",
          "description": "Optional. When true, use the topic's schema as the columns to write to in BigQuery, if it exists."
        },
        "writeMetadata": {
          "type": "boolean",
          "description": "Optional. When true, write the subscription name, message_id, publish_time, attributes, and ordering_key to additional columns in the table. The subscription name, message_id, and publish_time fields are put in their own columns while all other message properties (other than data) are written to a JSON object in the attributes column."
        }
      },
      "type": "object",
      "required": [
        "dropUnknownFields",
        "state",
        "table",
        "useTopicSchema",
        "writeMetadata"
      ]
    },
    "google-native:pubsub/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:pubsub%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:pubsub%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:pubsub/v1:CloudStorageConfig": {
      "description": "Configuration for a Cloud Storage subscription.",
      "properties": {
        "avroConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:AvroConfig",
          "description": "Optional. If set, message data will be written to Cloud Storage in Avro format."
        },
        "bucket": {
          "type": "string",
          "description": "User-provided name for the Cloud Storage bucket. The bucket must be created by the user. The bucket name must be without any prefix like \"gs://\". See the [bucket naming requirements] (https://cloud.google.com/storage/docs/buckets#naming)."
        },
        "filenamePrefix": {
          "type": "string",
          "description": "Optional. User-provided prefix for Cloud Storage filename. See the [object naming requirements](https://cloud.google.com/storage/docs/objects#naming)."
        },
        "filenameSuffix": {
          "type": "string",
          "description": "Optional. User-provided suffix for Cloud Storage filename. See the [object naming requirements](https://cloud.google.com/storage/docs/objects#naming). Must not end in \"/\"."
        },
        "maxBytes": {
          "type": "string",
          "description": "Optional. The maximum bytes that can be written to a Cloud Storage file before a new file is created. Min 1 KB, max 10 GiB. The max_bytes limit may be exceeded in cases where messages are larger than the limit."
        },
        "maxDuration": {
          "type": "string",
          "description": "Optional. The maximum duration that can elapse before a new Cloud Storage file is created. Min 1 minute, max 10 minutes, default 5 minutes. May not exceed the subscription's acknowledgement deadline."
        },
        "textConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:TextConfig",
          "description": "Optional. If set, message data will be written to Cloud Storage in text format."
        }
      },
      "type": "object",
      "required": [
        "bucket"
      ]
    },
    "google-native:pubsub/v1:CloudStorageConfigResponse": {
      "description": "Configuration for a Cloud Storage subscription.",
      "properties": {
        "avroConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:AvroConfigResponse",
          "description": "Optional. If set, message data will be written to Cloud Storage in Avro format."
        },
        "bucket": {
          "type": "string",
          "description": "User-provided name for the Cloud Storage bucket. The bucket must be created by the user. The bucket name must be without any prefix like \"gs://\". See the [bucket naming requirements] (https://cloud.google.com/storage/docs/buckets#naming)."
        },
        "filenamePrefix": {
          "type": "string",
          "description": "Optional. User-provided prefix for Cloud Storage filename. See the [object naming requirements](https://cloud.google.com/storage/docs/objects#naming)."
        },
        "filenameSuffix": {
          "type": "string",
          "description": "Optional. User-provided suffix for Cloud Storage filename. See the [object naming requirements](https://cloud.google.com/storage/docs/objects#naming). Must not end in \"/\"."
        },
        "maxBytes": {
          "type": "string",
          "description": "Optional. The maximum bytes that can be written to a Cloud Storage file before a new file is created. Min 1 KB, max 10 GiB. The max_bytes limit may be exceeded in cases where messages are larger than the limit."
        },
        "maxDuration": {
          "type": "string",
          "description": "Optional. The maximum duration that can elapse before a new Cloud Storage file is created. Min 1 minute, max 10 minutes, default 5 minutes. May not exceed the subscription's acknowledgement deadline."
        },
        "state": {
          "type": "string",
          "description": "An output-only field that indicates whether or not the subscription can receive messages."
        },
        "textConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:TextConfigResponse",
          "description": "Optional. If set, message data will be written to Cloud Storage in text format."
        }
      },
      "type": "object",
      "required": [
        "avroConfig",
        "bucket",
        "filenamePrefix",
        "filenameSuffix",
        "maxBytes",
        "maxDuration",
        "state",
        "textConfig"
      ]
    },
    "google-native:pubsub/v1:DeadLetterPolicy": {
      "description": "Dead lettering is done on a best effort basis. The same message might be dead lettered multiple times. If validation on any of the fields fails at subscription creation/updation, the create/update subscription request will fail.",
      "properties": {
        "deadLetterTopic": {
          "type": "string",
          "description": "Optional. The name of the topic to which dead letter messages should be published. Format is `projects/{project}/topics/{topic}`.The Pub/Sub service account associated with the enclosing subscription's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Publish() to this topic. The operation will fail if the topic does not exist. Users should ensure that there is a subscription attached to this topic since messages published to a topic with no subscriptions are lost."
        },
        "maxDeliveryAttempts": {
          "type": "integer",
          "description": "Optional. The maximum number of delivery attempts for any message. The value must be between 5 and 100. The number of delivery attempts is defined as 1 + (the sum of number of NACKs and number of times the acknowledgement deadline has been exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0 deadline. Note that client libraries may automatically extend ack_deadlines. This field will be honored on a best effort basis. If this parameter is 0, a default value of 5 is used."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:DeadLetterPolicyResponse": {
      "description": "Dead lettering is done on a best effort basis. The same message might be dead lettered multiple times. If validation on any of the fields fails at subscription creation/updation, the create/update subscription request will fail.",
      "properties": {
        "deadLetterTopic": {
          "type": "string",
          "description": "Optional. The name of the topic to which dead letter messages should be published. Format is `projects/{project}/topics/{topic}`.The Pub/Sub service account associated with the enclosing subscription's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Publish() to this topic. The operation will fail if the topic does not exist. Users should ensure that there is a subscription attached to this topic since messages published to a topic with no subscriptions are lost."
        },
        "maxDeliveryAttempts": {
          "type": "integer",
          "description": "Optional. The maximum number of delivery attempts for any message. The value must be between 5 and 100. The number of delivery attempts is defined as 1 + (the sum of number of NACKs and number of times the acknowledgement deadline has been exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0 deadline. Note that client libraries may automatically extend ack_deadlines. This field will be honored on a best effort basis. If this parameter is 0, a default value of 5 is used."
        }
      },
      "type": "object",
      "required": [
        "deadLetterTopic",
        "maxDeliveryAttempts"
      ]
    },
    "google-native:pubsub/v1:ExpirationPolicy": {
      "description": "A policy that specifies the conditions for resource expiration (i.e., automatic resource deletion).",
      "properties": {
        "ttl": {
          "type": "string",
          "description": "Optional. Specifies the \"time-to-live\" duration for an associated resource. The resource expires if it is not active for a period of `ttl`. The definition of \"activity\" depends on the type of the associated resource. The minimum and maximum allowed values for `ttl` depend on the type of the associated resource, as well. If `ttl` is not set, the associated resource never expires."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:ExpirationPolicyResponse": {
      "description": "A policy that specifies the conditions for resource expiration (i.e., automatic resource deletion).",
      "properties": {
        "ttl": {
          "type": "string",
          "description": "Optional. Specifies the \"time-to-live\" duration for an associated resource. The resource expires if it is not active for a period of `ttl`. The definition of \"activity\" depends on the type of the associated resource. The minimum and maximum allowed values for `ttl` depend on the type of the associated resource, as well. If `ttl` is not set, the associated resource never expires."
        }
      },
      "type": "object",
      "required": [
        "ttl"
      ]
    },
    "google-native:pubsub/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:pubsub/v1:MessageStoragePolicy": {
      "description": "A policy constraining the storage of messages published to the topic.",
      "properties": {
        "allowedPersistenceRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of IDs of Google Cloud regions where messages that are published to the topic may be persisted in storage. Messages published by publishers running in non-allowed Google Cloud regions (or running outside of Google Cloud altogether) are routed for storage in one of the allowed regions. An empty list means that no regions are allowed, and is not a valid configuration."
        },
        "enforceInTransit": {
          "type": "boolean",
          "description": "Optional. If true, `allowed_persistence_regions` is also used to enforce in-transit guarantees for messages. That is, Pub/Sub will fail Publish operations on this topic and subscribe operations on any subscription attached to this topic in any region that is not in `allowed_persistence_regions`."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:MessageStoragePolicyResponse": {
      "description": "A policy constraining the storage of messages published to the topic.",
      "properties": {
        "allowedPersistenceRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of IDs of Google Cloud regions where messages that are published to the topic may be persisted in storage. Messages published by publishers running in non-allowed Google Cloud regions (or running outside of Google Cloud altogether) are routed for storage in one of the allowed regions. An empty list means that no regions are allowed, and is not a valid configuration."
        },
        "enforceInTransit": {
          "type": "boolean",
          "description": "Optional. If true, `allowed_persistence_regions` is also used to enforce in-transit guarantees for messages. That is, Pub/Sub will fail Publish operations on this topic and subscribe operations on any subscription attached to this topic in any region that is not in `allowed_persistence_regions`."
        }
      },
      "type": "object",
      "required": [
        "allowedPersistenceRegions",
        "enforceInTransit"
      ]
    },
    "google-native:pubsub/v1:NoWrapper": {
      "description": "Sets the `data` field as the HTTP body for delivery.",
      "properties": {
        "writeMetadata": {
          "type": "boolean",
          "description": "Optional. When true, writes the Pub/Sub message metadata to `x-goog-pubsub-:` headers of the HTTP request. Writes the Pub/Sub message attributes to `:` headers of the HTTP request."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:NoWrapperResponse": {
      "description": "Sets the `data` field as the HTTP body for delivery.",
      "properties": {
        "writeMetadata": {
          "type": "boolean",
          "description": "Optional. When true, writes the Pub/Sub message metadata to `x-goog-pubsub-:` headers of the HTTP request. Writes the Pub/Sub message attributes to `:` headers of the HTTP request."
        }
      },
      "type": "object",
      "required": [
        "writeMetadata"
      ]
    },
    "google-native:pubsub/v1:OidcToken": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect).",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Optional. Audience to be used when generating OIDC token. The audience claim identifies the recipients that the JWT is intended for. The audience value is a single case-sensitive string. Having multiple values (array) for the audience field is not supported. More info about the OIDC JWT token audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the Push endpoint URL will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. [Service account email](https://cloud.google.com/iam/docs/service-accounts) used for generating the OIDC token. For more information on setting up authentication, see [Push subscriptions](https://cloud.google.com/pubsub/docs/push)."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:OidcTokenResponse": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect).",
      "properties": {
        "audience": {
          "type": "string",
          "description": "Optional. Audience to be used when generating OIDC token. The audience claim identifies the recipients that the JWT is intended for. The audience value is a single case-sensitive string. Having multiple values (array) for the audience field is not supported. More info about the OIDC JWT token audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the Push endpoint URL will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Optional. [Service account email](https://cloud.google.com/iam/docs/service-accounts) used for generating the OIDC token. For more information on setting up authentication, see [Push subscriptions](https://cloud.google.com/pubsub/docs/push)."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "serviceAccountEmail"
      ]
    },
    "google-native:pubsub/v1:PubsubWrapper": {
      "description": "The payload to the push endpoint is in the form of the JSON representation of a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage).",
      "type": "object"
    },
    "google-native:pubsub/v1:PubsubWrapperResponse": {
      "description": "The payload to the push endpoint is in the form of the JSON representation of a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage).",
      "type": "object"
    },
    "google-native:pubsub/v1:PushConfig": {
      "description": "Configuration for a push delivery endpoint.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Endpoint configuration attributes that can be used to control different aspects of the message delivery. The only currently supported attribute is `x-goog-version`, which you can use to change the format of the pushed message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the pushed message (i.e., its fields and metadata). If not present during the `CreateSubscription` call, it will default to the version of the Pub/Sub API used to make such call. If not present in a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The only supported values for the `x-goog-version` attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API. For example: `attributes { \"x-goog-version\": \"v1\" }`"
        },
        "noWrapper": {
          "$ref": "#/types/google-native:pubsub%2Fv1:NoWrapper",
          "description": "Optional. When set, the payload to the push endpoint is not wrapped."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:pubsub%2Fv1:OidcToken",
          "description": "Optional. If specified, Pub/Sub will generate and attach an OIDC JWT token as an `Authorization` header in the HTTP request for every pushed message."
        },
        "pubsubWrapper": {
          "$ref": "#/types/google-native:pubsub%2Fv1:PubsubWrapper",
          "description": "Optional. When set, the payload to the push endpoint is in the form of the JSON representation of a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage)."
        },
        "pushEndpoint": {
          "type": "string",
          "description": "Optional. A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use `https://example.com/push`."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:PushConfigResponse": {
      "description": "Configuration for a push delivery endpoint.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Endpoint configuration attributes that can be used to control different aspects of the message delivery. The only currently supported attribute is `x-goog-version`, which you can use to change the format of the pushed message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the pushed message (i.e., its fields and metadata). If not present during the `CreateSubscription` call, it will default to the version of the Pub/Sub API used to make such call. If not present in a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The only supported values for the `x-goog-version` attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API. For example: `attributes { \"x-goog-version\": \"v1\" }`"
        },
        "noWrapper": {
          "$ref": "#/types/google-native:pubsub%2Fv1:NoWrapperResponse",
          "description": "Optional. When set, the payload to the push endpoint is not wrapped."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:pubsub%2Fv1:OidcTokenResponse",
          "description": "Optional. If specified, Pub/Sub will generate and attach an OIDC JWT token as an `Authorization` header in the HTTP request for every pushed message."
        },
        "pubsubWrapper": {
          "$ref": "#/types/google-native:pubsub%2Fv1:PubsubWrapperResponse",
          "description": "Optional. When set, the payload to the push endpoint is in the form of the JSON representation of a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage)."
        },
        "pushEndpoint": {
          "type": "string",
          "description": "Optional. A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use `https://example.com/push`."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "noWrapper",
        "oidcToken",
        "pubsubWrapper",
        "pushEndpoint"
      ]
    },
    "google-native:pubsub/v1:RetryPolicy": {
      "description": "A policy that specifies how Pub/Sub retries message delivery. Retry delay will be exponential based on provided minimum and maximum backoffs. https://en.wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message. Retry Policy is implemented on a best effort basis. At times, the delay between consecutive deliveries may not match the configuration. That is, delay can be more or less than configured backoff.",
      "properties": {
        "maximumBackoff": {
          "type": "string",
          "description": "Optional. The maximum delay between consecutive deliveries of a given message. Value should be between 0 and 600 seconds. Defaults to 600 seconds."
        },
        "minimumBackoff": {
          "type": "string",
          "description": "Optional. The minimum delay between consecutive deliveries of a given message. Value should be between 0 and 600 seconds. Defaults to 10 seconds."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1:RetryPolicyResponse": {
      "description": "A policy that specifies how Pub/Sub retries message delivery. Retry delay will be exponential based on provided minimum and maximum backoffs. https://en.wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message. Retry Policy is implemented on a best effort basis. At times, the delay between consecutive deliveries may not match the configuration. That is, delay can be more or less than configured backoff.",
      "properties": {
        "maximumBackoff": {
          "type": "string",
          "description": "Optional. The maximum delay between consecutive deliveries of a given message. Value should be between 0 and 600 seconds. Defaults to 600 seconds."
        },
        "minimumBackoff": {
          "type": "string",
          "description": "Optional. The minimum delay between consecutive deliveries of a given message. Value should be between 0 and 600 seconds. Defaults to 10 seconds."
        }
      },
      "type": "object",
      "required": [
        "maximumBackoff",
        "minimumBackoff"
      ]
    },
    "google-native:pubsub/v1:SchemaSettings": {
      "description": "Settings for validating messages published against a schema.",
      "properties": {
        "encoding": {
          "$ref": "#/types/google-native:pubsub%2Fv1:SchemaSettingsEncoding",
          "description": "Optional. The encoding of messages validated against `schema`."
        },
        "firstRevisionId": {
          "type": "string",
          "description": "Optional. The minimum (inclusive) revision allowed for validating messages. If empty or not present, allow any revision to be validated against last_revision or any revision created before."
        },
        "lastRevisionId": {
          "type": "string",
          "description": "Optional. The maximum (inclusive) revision allowed for validating messages. If empty or not present, allow any revision to be validated against first_revision or any revision created after."
        },
        "schema": {
          "type": "string",
          "description": "The name of the schema that messages published should be validated against. Format is `projects/{project}/schemas/{schema}`. The value of this field will be `_deleted-schema_` if the schema has been deleted."
        }
      },
      "type": "object",
      "required": [
        "schema"
      ]
    },
    "google-native:pubsub/v1:SchemaSettingsEncoding": {
      "description": "Optional. The encoding of messages validated against `schema`.",
      "type": "string",
      "enum": [
        {
          "name": "EncodingUnspecified",
          "description": "Unspecified",
          "value": "ENCODING_UNSPECIFIED"
        },
        {
          "name": "Json",
          "description": "JSON encoding",
          "value": "JSON"
        },
        {
          "name": "Binary",
          "description": "Binary encoding, as defined by the schema type. For some schema types, binary encoding may not be available.",
          "value": "BINARY"
        }
      ]
    },
    "google-native:pubsub/v1:SchemaSettingsResponse": {
      "description": "Settings for validating messages published against a schema.",
      "properties": {
        "encoding": {
          "type": "string",
          "description": "Optional. The encoding of messages validated against `schema`."
        },
        "firstRevisionId": {
          "type": "string",
          "description": "Optional. The minimum (inclusive) revision allowed for validating messages. If empty or not present, allow any revision to be validated against last_revision or any revision created before."
        },
        "lastRevisionId": {
          "type": "string",
          "description": "Optional. The maximum (inclusive) revision allowed for validating messages. If empty or not present, allow any revision to be validated against first_revision or any revision created after."
        },
        "schema": {
          "type": "string",
          "description": "The name of the schema that messages published should be validated against. Format is `projects/{project}/schemas/{schema}`. The value of this field will be `_deleted-schema_` if the schema has been deleted."
        }
      },
      "type": "object",
      "required": [
        "encoding",
        "firstRevisionId",
        "lastRevisionId",
        "schema"
      ]
    },
    "google-native:pubsub/v1:SchemaType": {
      "description": "The type of the schema definition.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. This value is unused.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "ProtocolBuffer",
          "description": "A Protocol Buffer schema definition.",
          "value": "PROTOCOL_BUFFER"
        },
        {
          "name": "Avro",
          "description": "An Avro schema definition.",
          "value": "AVRO"
        }
      ]
    },
    "google-native:pubsub/v1:TextConfig": {
      "description": "Configuration for writing message data in text format. Message payloads will be written to files as raw text, separated by a newline.",
      "type": "object"
    },
    "google-native:pubsub/v1:TextConfigResponse": {
      "description": "Configuration for writing message data in text format. Message payloads will be written to files as raw text, separated by a newline.",
      "type": "object"
    },
    "google-native:pubsub/v1beta1a:PushConfig": {
      "description": "Configuration for a push delivery endpoint.",
      "properties": {
        "pushEndpoint": {
          "type": "string",
          "description": "A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use \"https://example.com/push\"."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1beta1a:PushConfigResponse": {
      "description": "Configuration for a push delivery endpoint.",
      "properties": {
        "pushEndpoint": {
          "type": "string",
          "description": "A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use \"https://example.com/push\"."
        }
      },
      "type": "object",
      "required": [
        "pushEndpoint"
      ]
    },
    "google-native:pubsub/v1beta2:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:pubsub%2Fv1beta2:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1beta2:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:pubsub%2Fv1beta2:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:pubsub/v1beta2:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1beta2:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:pubsub/v1beta2:OidcToken": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect).",
      "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. The audience value is a single case-sensitive string. Having multiple values (array) for the audience field is not supported. More info about the OIDC JWT token audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the Push endpoint URL will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating the OIDC token. The caller (for CreateSubscription, UpdateSubscription, and ModifyPushConfig RPCs) must have the iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1beta2:OidcTokenResponse": {
      "description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect).",
      "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. The audience value is a single case-sensitive string. Having multiple values (array) for the audience field is not supported. More info about the OIDC JWT token audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the Push endpoint URL will be used."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating the OIDC token. The caller (for CreateSubscription, UpdateSubscription, and ModifyPushConfig RPCs) must have the iam.serviceAccounts.actAs permission for the service account."
        }
      },
      "type": "object",
      "required": [
        "audience",
        "serviceAccountEmail"
      ]
    },
    "google-native:pubsub/v1beta2:PushConfig": {
      "description": "Configuration for a push delivery endpoint.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:pubsub%2Fv1beta2:OidcToken",
          "description": "If specified, Pub/Sub will generate and attach an OIDC JWT token as an `Authorization` header in the HTTP request for every pushed message."
        },
        "pushEndpoint": {
          "type": "string",
          "description": "A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use \"https://example.com/push\"."
        }
      },
      "type": "object"
    },
    "google-native:pubsub/v1beta2:PushConfigResponse": {
      "description": "Configuration for a push delivery endpoint.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API."
        },
        "oidcToken": {
          "$ref": "#/types/google-native:pubsub%2Fv1beta2:OidcTokenResponse",
          "description": "If specified, Pub/Sub will generate and attach an OIDC JWT token as an `Authorization` header in the HTTP request for every pushed message."
        },
        "pushEndpoint": {
          "type": "string",
          "description": "A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use \"https://example.com/push\"."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "oidcToken",
        "pushEndpoint"
      ]
    },
    "google-native:pubsublite/v1:Capacity": {
      "description": "The throughput capacity configuration for each partition.",
      "properties": {
        "publishMibPerSec": {
          "type": "integer",
          "description": "Publish throughput capacity per partition in MiB/s. Must be >= 4 and <= 16."
        },
        "subscribeMibPerSec": {
          "type": "integer",
          "description": "Subscribe throughput capacity per partition in MiB/s. Must be >= 4 and <= 32."
        }
      },
      "type": "object"
    },
    "google-native:pubsublite/v1:CapacityResponse": {
      "description": "The throughput capacity configuration for each partition.",
      "properties": {
        "publishMibPerSec": {
          "type": "integer",
          "description": "Publish throughput capacity per partition in MiB/s. Must be >= 4 and <= 16."
        },
        "subscribeMibPerSec": {
          "type": "integer",
          "description": "Subscribe throughput capacity per partition in MiB/s. Must be >= 4 and <= 32."
        }
      },
      "type": "object",
      "required": [
        "publishMibPerSec",
        "subscribeMibPerSec"
      ]
    },
    "google-native:pubsublite/v1:DeliveryConfig": {
      "description": "The settings for a subscription's message delivery.",
      "properties": {
        "deliveryRequirement": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:DeliveryConfigDeliveryRequirement",
          "description": "The DeliveryRequirement for this subscription."
        }
      },
      "type": "object"
    },
    "google-native:pubsublite/v1:DeliveryConfigDeliveryRequirement": {
      "description": "The DeliveryRequirement for this subscription.",
      "type": "string",
      "enum": [
        {
          "name": "DeliveryRequirementUnspecified",
          "description": "Default value. This value is unused.",
          "value": "DELIVERY_REQUIREMENT_UNSPECIFIED"
        },
        {
          "name": "DeliverImmediately",
          "description": "The server does not wait for a published message to be successfully written to storage before delivering it to subscribers.",
          "value": "DELIVER_IMMEDIATELY"
        },
        {
          "name": "DeliverAfterStored",
          "description": "The server will not deliver a published message to subscribers until the message has been successfully written to storage. This will result in higher end-to-end latency, but consistent delivery.",
          "value": "DELIVER_AFTER_STORED"
        }
      ]
    },
    "google-native:pubsublite/v1:DeliveryConfigResponse": {
      "description": "The settings for a subscription's message delivery.",
      "properties": {
        "deliveryRequirement": {
          "type": "string",
          "description": "The DeliveryRequirement for this subscription."
        }
      },
      "type": "object",
      "required": [
        "deliveryRequirement"
      ]
    },
    "google-native:pubsublite/v1:ExportConfig": {
      "description": "Configuration for a Pub/Sub Lite subscription that writes messages to a destination. User subscriber clients must not connect to this subscription.",
      "properties": {
        "deadLetterTopic": {
          "type": "string",
          "description": "Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not be exported to the destination. For example, the message can not be published to the Pub/Sub service because it does not satisfy the constraints documented at https://cloud.google.com/pubsub/docs/publisher. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}. Must be within the same project and location as the subscription. The topic may be changed or removed."
        },
        "desiredState": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:ExportConfigDesiredState",
          "description": "The desired state of this export. Setting this to values other than `ACTIVE` and `PAUSED` will result in an error."
        },
        "pubsubConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:PubSubConfig",
          "description": "Messages are automatically written from the Pub/Sub Lite topic associated with this subscription to a Pub/Sub topic."
        }
      },
      "type": "object"
    },
    "google-native:pubsublite/v1:ExportConfigDesiredState": {
      "description": "The desired state of this export. Setting this to values other than `ACTIVE` and `PAUSED` will result in an error.",
      "type": "string",
      "enum": [
        {
          "name": "StateUnspecified",
          "description": "Default value. This value is unused.",
          "value": "STATE_UNSPECIFIED"
        },
        {
          "name": "Active",
          "description": "Messages are being exported.",
          "value": "ACTIVE"
        },
        {
          "name": "Paused",
          "description": "Exporting messages is suspended.",
          "value": "PAUSED"
        },
        {
          "name": "PermissionDenied",
          "description": "Messages cannot be exported due to permission denied errors. Output only.",
          "value": "PERMISSION_DENIED"
        },
        {
          "name": "NotFound",
          "description": "Messages cannot be exported due to missing resources. Output only.",
          "value": "NOT_FOUND"
        }
      ]
    },
    "google-native:pubsublite/v1:ExportConfigResponse": {
      "description": "Configuration for a Pub/Sub Lite subscription that writes messages to a destination. User subscriber clients must not connect to this subscription.",
      "properties": {
        "currentState": {
          "type": "string",
          "description": "The current state of the export, which may be different to the desired state due to errors. This field is output only."
        },
        "deadLetterTopic": {
          "type": "string",
          "description": "Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not be exported to the destination. For example, the message can not be published to the Pub/Sub service because it does not satisfy the constraints documented at https://cloud.google.com/pubsub/docs/publisher. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}. Must be within the same project and location as the subscription. The topic may be changed or removed."
        },
        "desiredState": {
          "type": "string",
          "description": "The desired state of this export. Setting this to values other than `ACTIVE` and `PAUSED` will result in an error."
        },
        "pubsubConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:PubSubConfigResponse",
          "description": "Messages are automatically written from the Pub/Sub Lite topic associated with this subscription to a Pub/Sub topic."
        }
      },
      "type": "object",
      "required": [
        "currentState",
        "deadLetterTopic",
        "desiredState",
        "pubsubConfig"
      ]
    },
    "google-native:pubsublite/v1:PartitionConfig": {
      "description": "The settings for a topic's partitions.",
      "properties": {
        "capacity": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:Capacity",
          "description": "The capacity configuration."
        },
        "count": {
          "type": "string",
          "description": "The number of partitions in the topic. Must be at least 1. Once a topic has been created the number of partitions can be increased but not decreased. Message ordering is not guaranteed across a topic resize. For more information see https://cloud.google.com/pubsub/lite/docs/topics#scaling_capacity"
        },
        "scale": {
          "type": "integer",
          "description": "DEPRECATED: Use capacity instead which can express a superset of configurations. Every partition in the topic is allocated throughput equivalent to `scale` times the standard partition throughput (4 MiB/s). This is also reflected in the cost of this topic; a topic with `scale` of 2 and count of 10 is charged for 20 partitions. This value must be in the range [1,4].",
          "deprecationMessage": "DEPRECATED: Use capacity instead which can express a superset of configurations. Every partition in the topic is allocated throughput equivalent to `scale` times the standard partition throughput (4 MiB/s). This is also reflected in the cost of this topic; a topic with `scale` of 2 and count of 10 is charged for 20 partitions. This value must be in the range [1,4]."
        }
      },
      "type": "object"
    },
    "google-native:pubsublite/v1:PartitionConfigResponse": {
      "description": "The settings for a topic's partitions.",
      "properties": {
        "capacity": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:CapacityResponse",
          "description": "The capacity configuration."
        },
        "count": {
          "type": "string",
          "description": "The number of partitions in the topic. Must be at least 1. Once a topic has been created the number of partitions can be increased but not decreased. Message ordering is not guaranteed across a topic resize. For more information see https://cloud.google.com/pubsub/lite/docs/topics#scaling_capacity"
        },
        "scale": {
          "type": "integer",
          "description": "DEPRECATED: Use capacity instead which can express a superset of configurations. Every partition in the topic is allocated throughput equivalent to `scale` times the standard partition throughput (4 MiB/s). This is also reflected in the cost of this topic; a topic with `scale` of 2 and count of 10 is charged for 20 partitions. This value must be in the range [1,4].",
          "deprecationMessage": "DEPRECATED: Use capacity instead which can express a superset of configurations. Every partition in the topic is allocated throughput equivalent to `scale` times the standard partition throughput (4 MiB/s). This is also reflected in the cost of this topic; a topic with `scale` of 2 and count of 10 is charged for 20 partitions. This value must be in the range [1,4]."
        }
      },
      "type": "object",
      "required": [
        "capacity",
        "count",
        "scale"
      ]
    },
    "google-native:pubsublite/v1:PubSubConfig": {
      "description": "Configuration for exporting to a Pub/Sub topic.",
      "properties": {
        "topic": {
          "type": "string",
          "description": "The name of the Pub/Sub topic. Structured like: projects/{project_number}/topics/{topic_id}. The topic may be changed."
        }
      },
      "type": "object"
    },
    "google-native:pubsublite/v1:PubSubConfigResponse": {
      "description": "Configuration for exporting to a Pub/Sub topic.",
      "properties": {
        "topic": {
          "type": "string",
          "description": "The name of the Pub/Sub topic. Structured like: projects/{project_number}/topics/{topic_id}. The topic may be changed."
        }
      },
      "type": "object",
      "required": [
        "topic"
      ]
    },
    "google-native:pubsublite/v1:ReservationConfig": {
      "description": "The settings for this topic's Reservation usage.",
      "properties": {
        "throughputReservation": {
          "type": "string",
          "description": "The Reservation to use for this topic's throughput capacity. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}"
        }
      },
      "type": "object"
    },
    "google-native:pubsublite/v1:ReservationConfigResponse": {
      "description": "The settings for this topic's Reservation usage.",
      "properties": {
        "throughputReservation": {
          "type": "string",
          "description": "The Reservation to use for this topic's throughput capacity. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}"
        }
      },
      "type": "object",
      "required": [
        "throughputReservation"
      ]
    },
    "google-native:pubsublite/v1:RetentionConfig": {
      "description": "The settings for a topic's message retention.",
      "properties": {
        "perPartitionBytes": {
          "type": "string",
          "description": "The provisioned storage, in bytes, per partition. If the number of bytes stored in any of the topic's partitions grows beyond this value, older messages will be dropped to make room for newer ones, regardless of the value of `period`."
        },
        "period": {
          "type": "string",
          "description": "How long a published message is retained. If unset, messages will be retained as long as the bytes retained for each partition is below `per_partition_bytes`."
        }
      },
      "type": "object"
    },
    "google-native:pubsublite/v1:RetentionConfigResponse": {
      "description": "The settings for a topic's message retention.",
      "properties": {
        "perPartitionBytes": {
          "type": "string",
          "description": "The provisioned storage, in bytes, per partition. If the number of bytes stored in any of the topic's partitions grows beyond this value, older messages will be dropped to make room for newer ones, regardless of the value of `period`."
        },
        "period": {
          "type": "string",
          "description": "How long a published message is retained. If unset, messages will be retained as long as the bytes retained for each partition is below `per_partition_bytes`."
        }
      },
      "type": "object",
      "required": [
        "perPartitionBytes",
        "period"
      ]
    },
    "google-native:rapidmigrationassessment/v1:AnnotationType": {
      "description": "Type of an annotation.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unknown type",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "TypeLegacyExportConsent",
          "description": "Indicates that this project has opted into StratoZone export.",
          "value": "TYPE_LEGACY_EXPORT_CONSENT"
        },
        {
          "name": "TypeQwiklab",
          "description": "Indicates that this project is created by Qwiklab.",
          "value": "TYPE_QWIKLAB"
        }
      ]
    },
    "google-native:rapidmigrationassessment/v1:GuestOsScanResponse": {
      "description": "Message describing a MC Source of type Guest OS Scan.",
      "properties": {
        "coreSource": {
          "type": "string",
          "description": "reference to the corresponding Guest OS Scan in MC Source."
        }
      },
      "type": "object",
      "required": [
        "coreSource"
      ]
    },
    "google-native:rapidmigrationassessment/v1:VSphereScanResponse": {
      "description": "Message describing a MC Source of type VSphere Scan.",
      "properties": {
        "coreSource": {
          "type": "string",
          "description": "reference to the corresponding VSphere Scan in MC Source."
        }
      },
      "type": "object",
      "required": [
        "coreSource"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1AndroidKeySettings": {
      "description": "Settings specific to keys that can be used by Android apps.",
      "properties": {
        "allowAllPackageNames": {
          "type": "boolean",
          "description": "Optional. If set to true, allowed_package_names are not enforced."
        },
        "allowedPackageNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Android package names of apps allowed to use the key. Example: 'com.companyname.appname'"
        },
        "supportNonGoogleAppStoreDistribution": {
          "type": "boolean",
          "description": "Optional. Set to true for keys that are used in an Android application that is available for download in app stores in addition to the Google Play Store."
        }
      },
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1AndroidKeySettingsResponse": {
      "description": "Settings specific to keys that can be used by Android apps.",
      "properties": {
        "allowAllPackageNames": {
          "type": "boolean",
          "description": "Optional. If set to true, allowed_package_names are not enforced."
        },
        "allowedPackageNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Android package names of apps allowed to use the key. Example: 'com.companyname.appname'"
        },
        "supportNonGoogleAppStoreDistribution": {
          "type": "boolean",
          "description": "Optional. Set to true for keys that are used in an Android application that is available for download in app stores in addition to the Google Play Store."
        }
      },
      "type": "object",
      "required": [
        "allowAllPackageNames",
        "allowedPackageNames",
        "supportNonGoogleAppStoreDistribution"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1AppleDeveloperId": {
      "description": "Contains fields that are required to perform Apple-specific integrity checks.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "The Apple developer key ID (10-character string)."
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. A private key (downloaded as a text file with a .p8 file extension) generated for your Apple Developer account. Ensure that Apple DeviceCheck is enabled for the private key."
        },
        "teamId": {
          "type": "string",
          "description": "The Apple team ID (10-character string) owning the provisioning profile used to build your application."
        }
      },
      "type": "object",
      "required": [
        "keyId",
        "privateKey",
        "teamId"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1AppleDeveloperIdResponse": {
      "description": "Contains fields that are required to perform Apple-specific integrity checks.",
      "properties": {
        "keyId": {
          "type": "string",
          "description": "The Apple developer key ID (10-character string)."
        },
        "privateKey": {
          "type": "string",
          "description": "Input only. A private key (downloaded as a text file with a .p8 file extension) generated for your Apple Developer account. Ensure that Apple DeviceCheck is enabled for the private key."
        },
        "teamId": {
          "type": "string",
          "description": "The Apple team ID (10-character string) owning the provisioning profile used to build your application."
        }
      },
      "type": "object",
      "required": [
        "keyId",
        "privateKey",
        "teamId"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallAction": {
      "description": "An individual action. Each action represents what to do if a policy matches.",
      "properties": {
        "allow": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionAllowAction",
          "description": "The user request did not match any policy and should be allowed access to the requested resource."
        },
        "block": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionBlockAction",
          "description": "This action will deny access to a given page. The user will get an HTTP error code."
        },
        "redirect": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionRedirectAction",
          "description": "This action will redirect the request to a ReCaptcha interstitial to attach a token."
        },
        "setHeader": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionSetHeaderAction",
          "description": "This action will set a custom header but allow the request to continue to the customer backend."
        },
        "substitute": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionSubstituteAction",
          "description": "This action will transparently serve a different page to an offending user."
        }
      },
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionAllowAction": {
      "description": "An allow action continues processing a request unimpeded.",
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionAllowActionResponse": {
      "description": "An allow action continues processing a request unimpeded.",
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionBlockAction": {
      "description": "A block action serves an HTTP error code a prevents the request from hitting the backend.",
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionBlockActionResponse": {
      "description": "A block action serves an HTTP error code a prevents the request from hitting the backend.",
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionRedirectAction": {
      "description": "A redirect action returns a 307 (temporary redirect) response, pointing the user to a ReCaptcha interstitial page to attach a token.",
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionRedirectActionResponse": {
      "description": "A redirect action returns a 307 (temporary redirect) response, pointing the user to a ReCaptcha interstitial page to attach a token.",
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionResponse": {
      "description": "An individual action. Each action represents what to do if a policy matches.",
      "properties": {
        "allow": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionAllowActionResponse",
          "description": "The user request did not match any policy and should be allowed access to the requested resource."
        },
        "block": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionBlockActionResponse",
          "description": "This action will deny access to a given page. The user will get an HTTP error code."
        },
        "redirect": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionRedirectActionResponse",
          "description": "This action will redirect the request to a ReCaptcha interstitial to attach a token."
        },
        "setHeader": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionSetHeaderActionResponse",
          "description": "This action will set a custom header but allow the request to continue to the customer backend."
        },
        "substitute": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionSubstituteActionResponse",
          "description": "This action will transparently serve a different page to an offending user."
        }
      },
      "type": "object",
      "required": [
        "allow",
        "block",
        "redirect",
        "setHeader",
        "substitute"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionSetHeaderAction": {
      "description": "A set header action sets a header and forwards the request to the backend. This can be used to trigger custom protection implemented on the backend.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Optional. The header key to set in the request to the backend server."
        },
        "value": {
          "type": "string",
          "description": "Optional. The header value to set in the request to the backend server."
        }
      },
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionSetHeaderActionResponse": {
      "description": "A set header action sets a header and forwards the request to the backend. This can be used to trigger custom protection implemented on the backend.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Optional. The header key to set in the request to the backend server."
        },
        "value": {
          "type": "string",
          "description": "Optional. The header value to set in the request to the backend server."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionSubstituteAction": {
      "description": "A substitute action transparently serves a different page than the one requested.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. The address to redirect to. The target is a relative path in the current host. Example: \"/blog/404.html\"."
        }
      },
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1FirewallActionSubstituteActionResponse": {
      "description": "A substitute action transparently serves a different page than the one requested.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. The address to redirect to. The target is a relative path in the current host. Example: \"/blog/404.html\"."
        }
      },
      "type": "object",
      "required": [
        "path"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1IOSKeySettings": {
      "description": "Settings specific to keys that can be used by iOS apps.",
      "properties": {
        "allowAllBundleIds": {
          "type": "boolean",
          "description": "Optional. If set to true, allowed_bundle_ids are not enforced."
        },
        "allowedBundleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. iOS bundle ids of apps allowed to use the key. Example: 'com.companyname.productname.appname'"
        },
        "appleDeveloperId": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1AppleDeveloperId",
          "description": "Optional. Apple Developer account details for the app that is protected by the reCAPTCHA Key. reCAPTCHA Enterprise leverages platform-specific checks like Apple App Attest and Apple DeviceCheck to protect your app from abuse. Providing these fields allows reCAPTCHA Enterprise to get a better assessment of the integrity of your app."
        }
      },
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1IOSKeySettingsResponse": {
      "description": "Settings specific to keys that can be used by iOS apps.",
      "properties": {
        "allowAllBundleIds": {
          "type": "boolean",
          "description": "Optional. If set to true, allowed_bundle_ids are not enforced."
        },
        "allowedBundleIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. iOS bundle ids of apps allowed to use the key. Example: 'com.companyname.productname.appname'"
        },
        "appleDeveloperId": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1AppleDeveloperIdResponse",
          "description": "Optional. Apple Developer account details for the app that is protected by the reCAPTCHA Key. reCAPTCHA Enterprise leverages platform-specific checks like Apple App Attest and Apple DeviceCheck to protect your app from abuse. Providing these fields allows reCAPTCHA Enterprise to get a better assessment of the integrity of your app."
        }
      },
      "type": "object",
      "required": [
        "allowAllBundleIds",
        "allowedBundleIds",
        "appleDeveloperId"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1TestingOptions": {
      "description": "Options for user acceptance testing.",
      "properties": {
        "testingChallenge": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1TestingOptionsTestingChallenge",
          "description": "Optional. For challenge-based keys only (CHECKBOX, INVISIBLE), all challenge requests for this site will return nocaptcha if NOCAPTCHA, or an unsolvable challenge if CHALLENGE."
        },
        "testingScore": {
          "type": "number",
          "description": "Optional. All assessments for this Key will return this score. Must be between 0 (likely not legitimate) and 1 (likely legitimate) inclusive."
        }
      },
      "type": "object"
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1TestingOptionsResponse": {
      "description": "Options for user acceptance testing.",
      "properties": {
        "testingChallenge": {
          "type": "string",
          "description": "Optional. For challenge-based keys only (CHECKBOX, INVISIBLE), all challenge requests for this site will return nocaptcha if NOCAPTCHA, or an unsolvable challenge if CHALLENGE."
        },
        "testingScore": {
          "type": "number",
          "description": "Optional. All assessments for this Key will return this score. Must be between 0 (likely not legitimate) and 1 (likely legitimate) inclusive."
        }
      },
      "type": "object",
      "required": [
        "testingChallenge",
        "testingScore"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1TestingOptionsTestingChallenge": {
      "description": "Optional. For challenge-based keys only (CHECKBOX, INVISIBLE), all challenge requests for this site will return nocaptcha if NOCAPTCHA, or an unsolvable challenge if CHALLENGE.",
      "type": "string",
      "enum": [
        {
          "name": "TestingChallengeUnspecified",
          "description": "Perform the normal risk analysis and return either nocaptcha or a challenge depending on risk and trust factors.",
          "value": "TESTING_CHALLENGE_UNSPECIFIED"
        },
        {
          "name": "Nocaptcha",
          "description": "Challenge requests for this key always return a nocaptcha, which does not require a solution.",
          "value": "NOCAPTCHA"
        },
        {
          "name": "UnsolvableChallenge",
          "description": "Challenge requests for this key always return an unsolvable challenge.",
          "value": "UNSOLVABLE_CHALLENGE"
        }
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1WafSettings": {
      "description": "Settings specific to keys that can be used for WAF (Web Application Firewall).",
      "properties": {
        "wafFeature": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WafSettingsWafFeature",
          "description": "The WAF feature for which this key is enabled."
        },
        "wafService": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WafSettingsWafService",
          "description": "The WAF service that uses this key."
        }
      },
      "type": "object",
      "required": [
        "wafFeature",
        "wafService"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1WafSettingsResponse": {
      "description": "Settings specific to keys that can be used for WAF (Web Application Firewall).",
      "properties": {
        "wafFeature": {
          "type": "string",
          "description": "The WAF feature for which this key is enabled."
        },
        "wafService": {
          "type": "string",
          "description": "The WAF service that uses this key."
        }
      },
      "type": "object",
      "required": [
        "wafFeature",
        "wafService"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1WafSettingsWafFeature": {
      "description": "Required. The WAF feature for which this key is enabled.",
      "type": "string",
      "enum": [
        {
          "name": "WafFeatureUnspecified",
          "description": "Undefined feature.",
          "value": "WAF_FEATURE_UNSPECIFIED"
        },
        {
          "name": "ChallengePage",
          "description": "Redirects suspicious traffic to reCAPTCHA.",
          "value": "CHALLENGE_PAGE"
        },
        {
          "name": "SessionToken",
          "description": "Use reCAPTCHA session-tokens to protect the whole user session on the site's domain.",
          "value": "SESSION_TOKEN"
        },
        {
          "name": "ActionToken",
          "description": "Use reCAPTCHA action-tokens to protect user actions.",
          "value": "ACTION_TOKEN"
        },
        {
          "name": "Express",
          "description": "Use reCAPTCHA WAF express protection to protect any content other than web pages, like APIs and IoT devices.",
          "value": "EXPRESS"
        }
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1WafSettingsWafService": {
      "description": "Required. The WAF service that uses this key.",
      "type": "string",
      "enum": [
        {
          "name": "WafServiceUnspecified",
          "description": "Undefined WAF",
          "value": "WAF_SERVICE_UNSPECIFIED"
        },
        {
          "name": "Ca",
          "description": "Cloud Armor",
          "value": "CA"
        },
        {
          "name": "Fastly",
          "description": "Fastly",
          "value": "FASTLY"
        }
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1WebKeySettings": {
      "description": "Settings specific to keys that can be used by websites.",
      "properties": {
        "allowAllDomains": {
          "type": "boolean",
          "description": "Optional. If set to true, it means allowed_domains will not be enforced."
        },
        "allowAmpTraffic": {
          "type": "boolean",
          "description": "Optional. If set to true, the key can be used on AMP (Accelerated Mobile Pages) websites. This is supported only for the SCORE integration type."
        },
        "allowedDomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Domains or subdomains of websites allowed to use the key. All subdomains of an allowed domain are automatically allowed. A valid domain requires a host and must not include any path, port, query or fragment. Examples: 'example.com' or 'subdomain.example.com'"
        },
        "challengeSecurityPreference": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WebKeySettingsChallengeSecurityPreference",
          "description": "Optional. Settings for the frequency and difficulty at which this key triggers captcha challenges. This should only be specified for IntegrationTypes CHECKBOX and INVISIBLE."
        },
        "integrationType": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WebKeySettingsIntegrationType",
          "description": "Describes how this key is integrated with the website."
        }
      },
      "type": "object",
      "required": [
        "integrationType"
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1WebKeySettingsChallengeSecurityPreference": {
      "description": "Optional. Settings for the frequency and difficulty at which this key triggers captcha challenges. This should only be specified for IntegrationTypes CHECKBOX and INVISIBLE.",
      "type": "string",
      "enum": [
        {
          "name": "ChallengeSecurityPreferenceUnspecified",
          "description": "Default type that indicates this enum hasn't been specified.",
          "value": "CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED"
        },
        {
          "name": "Usability",
          "description": "Key tends to show fewer and easier challenges.",
          "value": "USABILITY"
        },
        {
          "name": "Balance",
          "description": "Key tends to show balanced (in amount and difficulty) challenges.",
          "value": "BALANCE"
        },
        {
          "name": "Security",
          "description": "Key tends to show more and harder challenges.",
          "value": "SECURITY"
        }
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1WebKeySettingsIntegrationType": {
      "description": "Required. Describes how this key is integrated with the website.",
      "type": "string",
      "enum": [
        {
          "name": "IntegrationTypeUnspecified",
          "description": "Default type that indicates this enum hasn't been specified. This is not a valid IntegrationType, one of the other types must be specified instead.",
          "value": "INTEGRATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Score",
          "description": "Only used to produce scores. It doesn't display the \"I'm not a robot\" checkbox and never shows captcha challenges.",
          "value": "SCORE"
        },
        {
          "name": "Checkbox",
          "description": "Displays the \"I'm not a robot\" checkbox and may show captcha challenges after it is checked.",
          "value": "CHECKBOX"
        },
        {
          "name": "Invisible",
          "description": "Doesn't display the \"I'm not a robot\" checkbox, but may show captcha challenges after risk analysis.",
          "value": "INVISIBLE"
        }
      ]
    },
    "google-native:recaptchaenterprise/v1:GoogleCloudRecaptchaenterpriseV1WebKeySettingsResponse": {
      "description": "Settings specific to keys that can be used by websites.",
      "properties": {
        "allowAllDomains": {
          "type": "boolean",
          "description": "Optional. If set to true, it means allowed_domains will not be enforced."
        },
        "allowAmpTraffic": {
          "type": "boolean",
          "description": "Optional. If set to true, the key can be used on AMP (Accelerated Mobile Pages) websites. This is supported only for the SCORE integration type."
        },
        "allowedDomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Domains or subdomains of websites allowed to use the key. All subdomains of an allowed domain are automatically allowed. A valid domain requires a host and must not include any path, port, query or fragment. Examples: 'example.com' or 'subdomain.example.com'"
        },
        "challengeSecurityPreference": {
          "type": "string",
          "description": "Optional. Settings for the frequency and difficulty at which this key triggers captcha challenges. This should only be specified for IntegrationTypes CHECKBOX and INVISIBLE."
        },
        "integrationType": {
          "type": "string",
          "description": "Describes how this key is integrated with the website."
        }
      },
      "type": "object",
      "required": [
        "allowAllDomains",
        "allowAmpTraffic",
        "allowedDomains",
        "challengeSecurityPreference",
        "integrationType"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1CatalogItemCategoryHierarchy": {
      "description": "Category represents catalog item category hierarchy.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Catalog item categories. Each category should be a UTF-8 encoded string with a length limit of 2 KiB. Note that the order in the list denotes the specificity (from least to most specific)."
        }
      },
      "type": "object",
      "required": [
        "categories"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1CatalogItemCategoryHierarchyResponse": {
      "description": "Category represents catalog item category hierarchy.",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Catalog item categories. Each category should be a UTF-8 encoded string with a length limit of 2 KiB. Note that the order in the list denotes the specificity (from least to most specific)."
        }
      },
      "type": "object",
      "required": [
        "categories"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1FeatureMap": {
      "description": "FeatureMap represents extra features that customers want to include in the recommendation model for catalogs/user events as categorical/numerical features.",
      "properties": {
        "categoricalFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Categorical features that can take on one of a limited number of possible values. Some examples would be the brand/maker of a product, or country of a customer. Feature names and values must be UTF-8 encoded strings. For example: `{ \"colors\": {\"value\": [\"yellow\", \"green\"]}, \"sizes\": {\"value\":[\"S\", \"M\"]}`"
        },
        "numericalFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Numerical features. Some examples would be the height/weight of a product, or age of a customer. Feature names must be UTF-8 encoded strings. For example: `{ \"lengths_cm\": {\"value\":[2.3, 15.4]}, \"heights_cm\": {\"value\":[8.1, 6.4]} }`"
        }
      },
      "type": "object"
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1FeatureMapResponse": {
      "description": "FeatureMap represents extra features that customers want to include in the recommendation model for catalogs/user events as categorical/numerical features.",
      "properties": {
        "categoricalFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Categorical features that can take on one of a limited number of possible values. Some examples would be the brand/maker of a product, or country of a customer. Feature names and values must be UTF-8 encoded strings. For example: `{ \"colors\": {\"value\": [\"yellow\", \"green\"]}, \"sizes\": {\"value\":[\"S\", \"M\"]}`"
        },
        "numericalFeatures": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Numerical features. Some examples would be the height/weight of a product, or age of a customer. Feature names must be UTF-8 encoded strings. For example: `{ \"lengths_cm\": {\"value\":[2.3, 15.4]}, \"heights_cm\": {\"value\":[8.1, 6.4]} }`"
        }
      },
      "type": "object",
      "required": [
        "categoricalFeatures",
        "numericalFeatures"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1Image": {
      "description": "Catalog item thumbnail/detail image.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "Optional. Height of the image in number of pixels."
        },
        "uri": {
          "type": "string",
          "description": "URL of the image with a length limit of 5 KiB."
        },
        "width": {
          "type": "integer",
          "description": "Optional. Width of the image in number of pixels."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1ImageResponse": {
      "description": "Catalog item thumbnail/detail image.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "Optional. Height of the image in number of pixels."
        },
        "uri": {
          "type": "string",
          "description": "URL of the image with a length limit of 5 KiB."
        },
        "width": {
          "type": "integer",
          "description": "Optional. Width of the image in number of pixels."
        }
      },
      "type": "object",
      "required": [
        "height",
        "uri",
        "width"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItem": {
      "description": "ProductCatalogItem captures item metadata specific to retail products.",
      "properties": {
        "availableQuantity": {
          "type": "string",
          "description": "Optional. The available quantity of the item."
        },
        "canonicalProductUri": {
          "type": "string",
          "description": "Optional. Canonical URL directly linking to the item detail page with a length limit of 5 KiB.."
        },
        "costs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map to pass the costs associated with the product. For example: {\"manufacturing\": 45.5} The profit of selling this item is computed like so: * If 'exactPrice' is provided, profit = displayPrice - sum(costs) * If 'priceRange' is provided, profit = minPrice - sum(costs)"
        },
        "currencyCode": {
          "type": "string",
          "description": "Optional. Only required if the price is set. Currency code for price/costs. Use three-character ISO-4217 code."
        },
        "exactPrice": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemExactPrice",
          "description": "Optional. The exact product price."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1Image"
          },
          "description": "Optional. Product images for the catalog item."
        },
        "priceRange": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemPriceRange",
          "description": "Optional. The product price range."
        },
        "stockState": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemStockState",
          "description": "Optional. Online stock state of the catalog item. Default is `IN_STOCK`."
        }
      },
      "type": "object"
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemExactPrice": {
      "description": "Exact product price.",
      "properties": {
        "displayPrice": {
          "type": "number",
          "description": "Optional. Display price of the product."
        },
        "originalPrice": {
          "type": "number",
          "description": "Optional. Price of the product without any discount. If zero, by default set to be the 'displayPrice'."
        }
      },
      "type": "object"
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemExactPriceResponse": {
      "description": "Exact product price.",
      "properties": {
        "displayPrice": {
          "type": "number",
          "description": "Optional. Display price of the product."
        },
        "originalPrice": {
          "type": "number",
          "description": "Optional. Price of the product without any discount. If zero, by default set to be the 'displayPrice'."
        }
      },
      "type": "object",
      "required": [
        "displayPrice",
        "originalPrice"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemPriceRange": {
      "description": "Product price range when there are a range of prices for different variations of the same product.",
      "properties": {
        "max": {
          "type": "number",
          "description": "The maximum product price."
        },
        "min": {
          "type": "number",
          "description": "The minimum product price."
        }
      },
      "type": "object",
      "required": [
        "max",
        "min"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemPriceRangeResponse": {
      "description": "Product price range when there are a range of prices for different variations of the same product.",
      "properties": {
        "max": {
          "type": "number",
          "description": "The maximum product price."
        },
        "min": {
          "type": "number",
          "description": "The minimum product price."
        }
      },
      "type": "object",
      "required": [
        "max",
        "min"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemResponse": {
      "description": "ProductCatalogItem captures item metadata specific to retail products.",
      "properties": {
        "availableQuantity": {
          "type": "string",
          "description": "Optional. The available quantity of the item."
        },
        "canonicalProductUri": {
          "type": "string",
          "description": "Optional. Canonical URL directly linking to the item detail page with a length limit of 5 KiB.."
        },
        "costs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map to pass the costs associated with the product. For example: {\"manufacturing\": 45.5} The profit of selling this item is computed like so: * If 'exactPrice' is provided, profit = displayPrice - sum(costs) * If 'priceRange' is provided, profit = minPrice - sum(costs)"
        },
        "currencyCode": {
          "type": "string",
          "description": "Optional. Only required if the price is set. Currency code for price/costs. Use three-character ISO-4217 code."
        },
        "exactPrice": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemExactPriceResponse",
          "description": "Optional. The exact product price."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ImageResponse"
          },
          "description": "Optional. Product images for the catalog item."
        },
        "priceRange": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemPriceRangeResponse",
          "description": "Optional. The product price range."
        },
        "stockState": {
          "type": "string",
          "description": "Optional. Online stock state of the catalog item. Default is `IN_STOCK`."
        }
      },
      "type": "object",
      "required": [
        "availableQuantity",
        "canonicalProductUri",
        "costs",
        "currencyCode",
        "exactPrice",
        "images",
        "priceRange",
        "stockState"
      ]
    },
    "google-native:recommendationengine/v1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemStockState": {
      "description": "Optional. Online stock state of the catalog item. Default is `IN_STOCK`.",
      "type": "string",
      "enum": [
        {
          "name": "StockStateUnspecified",
          "description": "Default item stock status. Should never be used.",
          "value": "STOCK_STATE_UNSPECIFIED"
        },
        {
          "name": "InStock",
          "description": "Item in stock.",
          "value": "IN_STOCK"
        },
        {
          "name": "OutOfStock",
          "description": "Item out of stock.",
          "value": "OUT_OF_STOCK"
        },
        {
          "name": "Preorder",
          "description": "Item that is in pre-order state.",
          "value": "PREORDER"
        },
        {
          "name": "Backorder",
          "description": "Item that is back-ordered (i.e. temporarily out of stock).",
          "value": "BACKORDER"
        }
      ]
    },
    "google-native:redis/v1:ClusterAuthorizationMode": {
      "description": "Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "AuthModeUnspecified",
          "description": "Not set.",
          "value": "AUTH_MODE_UNSPECIFIED"
        },
        {
          "name": "AuthModeIamAuth",
          "description": "IAM basic authorization mode",
          "value": "AUTH_MODE_IAM_AUTH"
        },
        {
          "name": "AuthModeDisabled",
          "description": "Authorization disabled mode",
          "value": "AUTH_MODE_DISABLED"
        }
      ]
    },
    "google-native:redis/v1:ClusterTransitEncryptionMode": {
      "description": "Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "TransitEncryptionModeUnspecified",
          "description": "In-transit encryption not set.",
          "value": "TRANSIT_ENCRYPTION_MODE_UNSPECIFIED"
        },
        {
          "name": "TransitEncryptionModeDisabled",
          "description": "In-transit encryption disabled.",
          "value": "TRANSIT_ENCRYPTION_MODE_DISABLED"
        },
        {
          "name": "TransitEncryptionModeServerAuthentication",
          "description": "Use server managed encryption for in-transit encryption.",
          "value": "TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION"
        }
      ]
    },
    "google-native:redis/v1:DiscoveryEndpointResponse": {
      "description": "Endpoints on each network, for Redis clients to connect to the cluster.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Address of the exposed Redis endpoint used by clients to connect to the service. The address could be either IP or hostname."
        },
        "port": {
          "type": "integer",
          "description": "The port number of the exposed Redis endpoint."
        },
        "pscConfig": {
          "$ref": "#/types/google-native:redis%2Fv1:PscConfigResponse",
          "description": "Customer configuration for where the endpoint is created and accessed from."
        }
      },
      "type": "object",
      "required": [
        "address",
        "port",
        "pscConfig"
      ]
    },
    "google-native:redis/v1:InstanceConnectMode": {
      "description": "Optional. The network connect mode of the Redis instance. If not provided, the connect mode defaults to DIRECT_PEERING.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectModeUnspecified",
          "description": "Not set.",
          "value": "CONNECT_MODE_UNSPECIFIED"
        },
        {
          "name": "DirectPeering",
          "description": "Connect via direct peering to the Memorystore for Redis hosted service.",
          "value": "DIRECT_PEERING"
        },
        {
          "name": "PrivateServiceAccess",
          "description": "Connect your Memorystore for Redis instance using Private Service Access. Private services access provides an IP address range for multiple Google Cloud services, including Memorystore.",
          "value": "PRIVATE_SERVICE_ACCESS"
        }
      ]
    },
    "google-native:redis/v1:InstanceReadReplicasMode": {
      "description": "Optional. Read replicas mode for the instance. Defaults to READ_REPLICAS_DISABLED.",
      "type": "string",
      "enum": [
        {
          "name": "ReadReplicasModeUnspecified",
          "description": "If not set, Memorystore Redis backend will default to READ_REPLICAS_DISABLED.",
          "value": "READ_REPLICAS_MODE_UNSPECIFIED"
        },
        {
          "name": "ReadReplicasDisabled",
          "description": "If disabled, read endpoint will not be provided and the instance cannot scale up or down the number of replicas.",
          "value": "READ_REPLICAS_DISABLED"
        },
        {
          "name": "ReadReplicasEnabled",
          "description": "If enabled, read endpoint will be provided and the instance can scale up and down the number of replicas. Not valid for basic tier.",
          "value": "READ_REPLICAS_ENABLED"
        }
      ]
    },
    "google-native:redis/v1:InstanceSuspensionReasonsItem": {
      "type": "string",
      "enum": [
        {
          "name": "SuspensionReasonUnspecified",
          "description": "Not set.",
          "value": "SUSPENSION_REASON_UNSPECIFIED"
        },
        {
          "name": "CustomerManagedKeyIssue",
          "description": "Something wrong with the CMEK key provided by customer.",
          "value": "CUSTOMER_MANAGED_KEY_ISSUE"
        }
      ]
    },
    "google-native:redis/v1:InstanceTier": {
      "description": "Required. The service tier of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Not set.",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Basic",
          "description": "BASIC tier: standalone instance",
          "value": "BASIC"
        },
        {
          "name": "StandardHa",
          "description": "STANDARD_HA tier: highly available primary/replica instances",
          "value": "STANDARD_HA"
        }
      ]
    },
    "google-native:redis/v1:InstanceTransitEncryptionMode": {
      "description": "Optional. The TLS mode of the Redis instance. If not provided, TLS is disabled for the instance.",
      "type": "string",
      "enum": [
        {
          "name": "TransitEncryptionModeUnspecified",
          "description": "Not set.",
          "value": "TRANSIT_ENCRYPTION_MODE_UNSPECIFIED"
        },
        {
          "name": "ServerAuthentication",
          "description": "Client to Server traffic encryption enabled with server authentication.",
          "value": "SERVER_AUTHENTICATION"
        },
        {
          "name": "Disabled",
          "description": "TLS is disabled for the instance.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:redis/v1:MaintenancePolicy": {
      "description": "Maintenance policy for an instance.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "weeklyMaintenanceWindow": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:WeeklyMaintenanceWindow"
          },
          "description": "Optional. Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_window is expected to be one."
        }
      },
      "type": "object"
    },
    "google-native:redis/v1:MaintenancePolicyResponse": {
      "description": "Maintenance policy for an instance.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the policy was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the policy was last updated."
        },
        "weeklyMaintenanceWindow": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:WeeklyMaintenanceWindowResponse"
          },
          "description": "Optional. Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_window is expected to be one."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "updateTime",
        "weeklyMaintenanceWindow"
      ]
    },
    "google-native:redis/v1:MaintenanceScheduleResponse": {
      "description": "Upcoming maintenance schedule. If no maintenance is scheduled, fields are not populated.",
      "properties": {
        "canReschedule": {
          "type": "boolean",
          "description": "If the scheduled maintenance can be rescheduled, default is true."
        },
        "endTime": {
          "type": "string",
          "description": "The end time of any upcoming scheduled maintenance for this instance."
        },
        "scheduleDeadlineTime": {
          "type": "string",
          "description": "The deadline that the maintenance schedule start time can not go beyond, including reschedule."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        }
      },
      "type": "object",
      "required": [
        "canReschedule",
        "endTime",
        "scheduleDeadlineTime",
        "startTime"
      ]
    },
    "google-native:redis/v1:NodeInfoResponse": {
      "description": "Node specific properties.",
      "properties": {
        "zone": {
          "type": "string",
          "description": "Location of the node."
        }
      },
      "type": "object",
      "required": [
        "zone"
      ]
    },
    "google-native:redis/v1:PersistenceConfig": {
      "description": "Configuration of the persistence functionality.",
      "properties": {
        "persistenceMode": {
          "$ref": "#/types/google-native:redis%2Fv1:PersistenceConfigPersistenceMode",
          "description": "Optional. Controls whether Persistence features are enabled. If not provided, the existing value will be used."
        },
        "rdbSnapshotPeriod": {
          "$ref": "#/types/google-native:redis%2Fv1:PersistenceConfigRdbSnapshotPeriod",
          "description": "Optional. Period between RDB snapshots. Snapshots will be attempted every period starting from the provided snapshot start time. For example, a start time of 01/01/2033 06:45 and SIX_HOURS snapshot period will do nothing until 01/01/2033, and then trigger snapshots every day at 06:45, 12:45, 18:45, and 00:45 the next day, and so on. If not provided, TWENTY_FOUR_HOURS will be used as default."
        },
        "rdbSnapshotStartTime": {
          "type": "string",
          "description": "Optional. Date and time that the first snapshot was/will be attempted, and to which future snapshots will be aligned. If not provided, the current time will be used."
        }
      },
      "type": "object"
    },
    "google-native:redis/v1:PersistenceConfigPersistenceMode": {
      "description": "Optional. Controls whether Persistence features are enabled. If not provided, the existing value will be used.",
      "type": "string",
      "enum": [
        {
          "name": "PersistenceModeUnspecified",
          "description": "Not set.",
          "value": "PERSISTENCE_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Persistence is disabled for the instance, and any existing snapshots are deleted.",
          "value": "DISABLED"
        },
        {
          "name": "Rdb",
          "description": "RDB based Persistence is enabled.",
          "value": "RDB"
        }
      ]
    },
    "google-native:redis/v1:PersistenceConfigRdbSnapshotPeriod": {
      "description": "Optional. Period between RDB snapshots. Snapshots will be attempted every period starting from the provided snapshot start time. For example, a start time of 01/01/2033 06:45 and SIX_HOURS snapshot period will do nothing until 01/01/2033, and then trigger snapshots every day at 06:45, 12:45, 18:45, and 00:45 the next day, and so on. If not provided, TWENTY_FOUR_HOURS will be used as default.",
      "type": "string",
      "enum": [
        {
          "name": "SnapshotPeriodUnspecified",
          "description": "Not set.",
          "value": "SNAPSHOT_PERIOD_UNSPECIFIED"
        },
        {
          "name": "OneHour",
          "description": "Snapshot every 1 hour.",
          "value": "ONE_HOUR"
        },
        {
          "name": "SixHours",
          "description": "Snapshot every 6 hours.",
          "value": "SIX_HOURS"
        },
        {
          "name": "TwelveHours",
          "description": "Snapshot every 12 hours.",
          "value": "TWELVE_HOURS"
        },
        {
          "name": "TwentyFourHours",
          "description": "Snapshot every 24 hours.",
          "value": "TWENTY_FOUR_HOURS"
        }
      ]
    },
    "google-native:redis/v1:PersistenceConfigResponse": {
      "description": "Configuration of the persistence functionality.",
      "properties": {
        "persistenceMode": {
          "type": "string",
          "description": "Optional. Controls whether Persistence features are enabled. If not provided, the existing value will be used."
        },
        "rdbNextSnapshotTime": {
          "type": "string",
          "description": "The next time that a snapshot attempt is scheduled to occur."
        },
        "rdbSnapshotPeriod": {
          "type": "string",
          "description": "Optional. Period between RDB snapshots. Snapshots will be attempted every period starting from the provided snapshot start time. For example, a start time of 01/01/2033 06:45 and SIX_HOURS snapshot period will do nothing until 01/01/2033, and then trigger snapshots every day at 06:45, 12:45, 18:45, and 00:45 the next day, and so on. If not provided, TWENTY_FOUR_HOURS will be used as default."
        },
        "rdbSnapshotStartTime": {
          "type": "string",
          "description": "Optional. Date and time that the first snapshot was/will be attempted, and to which future snapshots will be aligned. If not provided, the current time will be used."
        }
      },
      "type": "object",
      "required": [
        "persistenceMode",
        "rdbNextSnapshotTime",
        "rdbSnapshotPeriod",
        "rdbSnapshotStartTime"
      ]
    },
    "google-native:redis/v1:PscConfig": {
      "properties": {
        "network": {
          "type": "string",
          "description": "The network where the IP address of the discovery endpoint will be reserved, in the form of projects/{network_project}/global/networks/{network_id}."
        }
      },
      "type": "object",
      "required": [
        "network"
      ]
    },
    "google-native:redis/v1:PscConfigResponse": {
      "properties": {
        "network": {
          "type": "string",
          "description": "The network where the IP address of the discovery endpoint will be reserved, in the form of projects/{network_project}/global/networks/{network_id}."
        }
      },
      "type": "object",
      "required": [
        "network"
      ]
    },
    "google-native:redis/v1:PscConnectionResponse": {
      "description": "Details of consumer resources in a PSC connection.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The IP allocated on the consumer network for the PSC forwarding rule."
        },
        "forwardingRule": {
          "type": "string",
          "description": "The URI of the consumer side forwarding rule. Example: projects/{projectNumOrId}/regions/us-east1/forwardingRules/{resourceId}."
        },
        "network": {
          "type": "string",
          "description": "The consumer network where the IP address resides, in the form of projects/{project_id}/global/networks/{network_id}."
        },
        "project": {
          "type": "string",
          "description": "The consumer project_id where the forwarding rule is created from."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the forwarding rule connected to the service attachment."
        }
      },
      "type": "object",
      "required": [
        "address",
        "forwardingRule",
        "network",
        "project",
        "pscConnectionId"
      ]
    },
    "google-native:redis/v1:StateInfoResponse": {
      "description": "Represents additional information about the state of the cluster.",
      "properties": {
        "updateInfo": {
          "$ref": "#/types/google-native:redis%2Fv1:UpdateInfoResponse",
          "description": "Describes ongoing update on the cluster when cluster state is UPDATING."
        }
      },
      "type": "object",
      "required": [
        "updateInfo"
      ]
    },
    "google-native:redis/v1:TimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:redis/v1:TimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:redis/v1:TlsCertificateResponse": {
      "description": "TlsCertificate Resource",
      "properties": {
        "cert": {
          "type": "string",
          "description": "PEM representation."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2020-05-18T00:00:00.094Z`."
        },
        "expireTime": {
          "type": "string",
          "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2020-05-18T00:00:00.094Z`."
        },
        "serialNumber": {
          "type": "string",
          "description": "Serial number, as extracted from the certificate."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "Sha1 Fingerprint of the certificate."
        }
      },
      "type": "object",
      "required": [
        "cert",
        "createTime",
        "expireTime",
        "serialNumber",
        "sha1Fingerprint"
      ]
    },
    "google-native:redis/v1:UpdateInfoResponse": {
      "description": "Represents information about an updating cluster.",
      "properties": {
        "targetReplicaCount": {
          "type": "integer",
          "description": "Target number of replica nodes per shard."
        },
        "targetShardCount": {
          "type": "integer",
          "description": "Target number of shards for redis cluster"
        }
      },
      "type": "object",
      "required": [
        "targetReplicaCount",
        "targetShardCount"
      ]
    },
    "google-native:redis/v1:WeeklyMaintenanceWindow": {
      "description": "Time window in which disruptive maintenance updates occur. Non-disruptive updates can occur inside or outside this window.",
      "properties": {
        "day": {
          "$ref": "#/types/google-native:redis%2Fv1:WeeklyMaintenanceWindowDay",
          "description": "The day of week that maintenance updates occur."
        },
        "startTime": {
          "$ref": "#/types/google-native:redis%2Fv1:TimeOfDay",
          "description": "Start time of the window in UTC time."
        }
      },
      "type": "object",
      "required": [
        "day",
        "startTime"
      ]
    },
    "google-native:redis/v1:WeeklyMaintenanceWindowDay": {
      "description": "Required. The day of week that maintenance updates occur.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:redis/v1:WeeklyMaintenanceWindowResponse": {
      "description": "Time window in which disruptive maintenance updates occur. Non-disruptive updates can occur inside or outside this window.",
      "properties": {
        "day": {
          "type": "string",
          "description": "The day of week that maintenance updates occur."
        },
        "duration": {
          "type": "string",
          "description": "Duration of the maintenance window. The current window is fixed at 1 hour."
        },
        "startTime": {
          "$ref": "#/types/google-native:redis%2Fv1:TimeOfDayResponse",
          "description": "Start time of the window in UTC time."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:redis/v1beta1:ClusterAuthorizationMode": {
      "description": "Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "AuthModeUnspecified",
          "description": "Not set.",
          "value": "AUTH_MODE_UNSPECIFIED"
        },
        {
          "name": "AuthModeIamAuth",
          "description": "IAM basic authorization mode",
          "value": "AUTH_MODE_IAM_AUTH"
        },
        {
          "name": "AuthModeDisabled",
          "description": "Authorization disabled mode",
          "value": "AUTH_MODE_DISABLED"
        }
      ]
    },
    "google-native:redis/v1beta1:ClusterTransitEncryptionMode": {
      "description": "Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster.",
      "type": "string",
      "enum": [
        {
          "name": "TransitEncryptionModeUnspecified",
          "description": "In-transit encryption not set.",
          "value": "TRANSIT_ENCRYPTION_MODE_UNSPECIFIED"
        },
        {
          "name": "TransitEncryptionModeDisabled",
          "description": "In-transit encryption disabled.",
          "value": "TRANSIT_ENCRYPTION_MODE_DISABLED"
        },
        {
          "name": "TransitEncryptionModeServerAuthentication",
          "description": "Use server managed encryption for in-transit encryption.",
          "value": "TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION"
        }
      ]
    },
    "google-native:redis/v1beta1:DiscoveryEndpointResponse": {
      "description": "Endpoints on each network, for Redis clients to connect to the cluster.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Address of the exposed Redis endpoint used by clients to connect to the service. The address could be either IP or hostname."
        },
        "port": {
          "type": "integer",
          "description": "The port number of the exposed Redis endpoint."
        },
        "pscConfig": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:PscConfigResponse",
          "description": "Customer configuration for where the endpoint is created and accessed from."
        }
      },
      "type": "object",
      "required": [
        "address",
        "port",
        "pscConfig"
      ]
    },
    "google-native:redis/v1beta1:InstanceConnectMode": {
      "description": "Optional. The network connect mode of the Redis instance. If not provided, the connect mode defaults to DIRECT_PEERING.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectModeUnspecified",
          "description": "Not set.",
          "value": "CONNECT_MODE_UNSPECIFIED"
        },
        {
          "name": "DirectPeering",
          "description": "Connect via direct peering to the Memorystore for Redis hosted service.",
          "value": "DIRECT_PEERING"
        },
        {
          "name": "PrivateServiceAccess",
          "description": "Connect your Memorystore for Redis instance using Private Service Access. Private services access provides an IP address range for multiple Google Cloud services, including Memorystore.",
          "value": "PRIVATE_SERVICE_ACCESS"
        }
      ]
    },
    "google-native:redis/v1beta1:InstanceReadReplicasMode": {
      "description": "Optional. Read replicas mode for the instance. Defaults to READ_REPLICAS_DISABLED.",
      "type": "string",
      "enum": [
        {
          "name": "ReadReplicasModeUnspecified",
          "description": "If not set, Memorystore Redis backend will default to READ_REPLICAS_DISABLED.",
          "value": "READ_REPLICAS_MODE_UNSPECIFIED"
        },
        {
          "name": "ReadReplicasDisabled",
          "description": "If disabled, read endpoint will not be provided and the instance cannot scale up or down the number of replicas.",
          "value": "READ_REPLICAS_DISABLED"
        },
        {
          "name": "ReadReplicasEnabled",
          "description": "If enabled, read endpoint will be provided and the instance can scale up and down the number of replicas. Not valid for basic tier.",
          "value": "READ_REPLICAS_ENABLED"
        }
      ]
    },
    "google-native:redis/v1beta1:InstanceSuspensionReasonsItem": {
      "type": "string",
      "enum": [
        {
          "name": "SuspensionReasonUnspecified",
          "description": "Not set.",
          "value": "SUSPENSION_REASON_UNSPECIFIED"
        },
        {
          "name": "CustomerManagedKeyIssue",
          "description": "Something wrong with the CMEK key provided by customer.",
          "value": "CUSTOMER_MANAGED_KEY_ISSUE"
        }
      ]
    },
    "google-native:redis/v1beta1:InstanceTier": {
      "description": "Required. The service tier of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "TierUnspecified",
          "description": "Not set.",
          "value": "TIER_UNSPECIFIED"
        },
        {
          "name": "Basic",
          "description": "BASIC tier: standalone instance",
          "value": "BASIC"
        },
        {
          "name": "StandardHa",
          "description": "STANDARD_HA tier: highly available primary/replica instances",
          "value": "STANDARD_HA"
        }
      ]
    },
    "google-native:redis/v1beta1:InstanceTransitEncryptionMode": {
      "description": "Optional. The TLS mode of the Redis instance. If not provided, TLS is disabled for the instance.",
      "type": "string",
      "enum": [
        {
          "name": "TransitEncryptionModeUnspecified",
          "description": "Not set.",
          "value": "TRANSIT_ENCRYPTION_MODE_UNSPECIFIED"
        },
        {
          "name": "ServerAuthentication",
          "description": "Client to Server traffic encryption enabled with server authentication.",
          "value": "SERVER_AUTHENTICATION"
        },
        {
          "name": "Disabled",
          "description": "TLS is disabled for the instance.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:redis/v1beta1:MaintenancePolicy": {
      "description": "Maintenance policy for an instance.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "weeklyMaintenanceWindow": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:WeeklyMaintenanceWindow"
          },
          "description": "Optional. Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_window is expected to be one."
        }
      },
      "type": "object"
    },
    "google-native:redis/v1beta1:MaintenancePolicyResponse": {
      "description": "Maintenance policy for an instance.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the policy was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the policy was last updated."
        },
        "weeklyMaintenanceWindow": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:WeeklyMaintenanceWindowResponse"
          },
          "description": "Optional. Maintenance window that is applied to resources covered by this policy. Minimum 1. For the current version, the maximum number of weekly_window is expected to be one."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "updateTime",
        "weeklyMaintenanceWindow"
      ]
    },
    "google-native:redis/v1beta1:MaintenanceScheduleResponse": {
      "description": "Upcoming maintenance schedule. If no maintenance is scheduled, fields are not populated.",
      "properties": {
        "canReschedule": {
          "type": "boolean",
          "description": "If the scheduled maintenance can be rescheduled, default is true."
        },
        "endTime": {
          "type": "string",
          "description": "The end time of any upcoming scheduled maintenance for this instance."
        },
        "scheduleDeadlineTime": {
          "type": "string",
          "description": "The deadline that the maintenance schedule start time can not go beyond, including reschedule."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        }
      },
      "type": "object",
      "required": [
        "canReschedule",
        "endTime",
        "scheduleDeadlineTime",
        "startTime"
      ]
    },
    "google-native:redis/v1beta1:NodeInfoResponse": {
      "description": "Node specific properties.",
      "properties": {
        "zone": {
          "type": "string",
          "description": "Location of the node."
        }
      },
      "type": "object",
      "required": [
        "zone"
      ]
    },
    "google-native:redis/v1beta1:PersistenceConfig": {
      "description": "Configuration of the persistence functionality.",
      "properties": {
        "persistenceMode": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:PersistenceConfigPersistenceMode",
          "description": "Optional. Controls whether Persistence features are enabled. If not provided, the existing value will be used."
        },
        "rdbSnapshotPeriod": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:PersistenceConfigRdbSnapshotPeriod",
          "description": "Optional. Period between RDB snapshots. Snapshots will be attempted every period starting from the provided snapshot start time. For example, a start time of 01/01/2033 06:45 and SIX_HOURS snapshot period will do nothing until 01/01/2033, and then trigger snapshots every day at 06:45, 12:45, 18:45, and 00:45 the next day, and so on. If not provided, TWENTY_FOUR_HOURS will be used as default."
        },
        "rdbSnapshotStartTime": {
          "type": "string",
          "description": "Optional. Date and time that the first snapshot was/will be attempted, and to which future snapshots will be aligned. If not provided, the current time will be used."
        }
      },
      "type": "object"
    },
    "google-native:redis/v1beta1:PersistenceConfigPersistenceMode": {
      "description": "Optional. Controls whether Persistence features are enabled. If not provided, the existing value will be used.",
      "type": "string",
      "enum": [
        {
          "name": "PersistenceModeUnspecified",
          "description": "Not set.",
          "value": "PERSISTENCE_MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Persistence is disabled for the instance, and any existing snapshots are deleted.",
          "value": "DISABLED"
        },
        {
          "name": "Rdb",
          "description": "RDB based Persistence is enabled.",
          "value": "RDB"
        }
      ]
    },
    "google-native:redis/v1beta1:PersistenceConfigRdbSnapshotPeriod": {
      "description": "Optional. Period between RDB snapshots. Snapshots will be attempted every period starting from the provided snapshot start time. For example, a start time of 01/01/2033 06:45 and SIX_HOURS snapshot period will do nothing until 01/01/2033, and then trigger snapshots every day at 06:45, 12:45, 18:45, and 00:45 the next day, and so on. If not provided, TWENTY_FOUR_HOURS will be used as default.",
      "type": "string",
      "enum": [
        {
          "name": "SnapshotPeriodUnspecified",
          "description": "Not set.",
          "value": "SNAPSHOT_PERIOD_UNSPECIFIED"
        },
        {
          "name": "OneHour",
          "description": "Snapshot every 1 hour.",
          "value": "ONE_HOUR"
        },
        {
          "name": "SixHours",
          "description": "Snapshot every 6 hours.",
          "value": "SIX_HOURS"
        },
        {
          "name": "TwelveHours",
          "description": "Snapshot every 12 hours.",
          "value": "TWELVE_HOURS"
        },
        {
          "name": "TwentyFourHours",
          "description": "Snapshot every 24 hours.",
          "value": "TWENTY_FOUR_HOURS"
        }
      ]
    },
    "google-native:redis/v1beta1:PersistenceConfigResponse": {
      "description": "Configuration of the persistence functionality.",
      "properties": {
        "persistenceMode": {
          "type": "string",
          "description": "Optional. Controls whether Persistence features are enabled. If not provided, the existing value will be used."
        },
        "rdbNextSnapshotTime": {
          "type": "string",
          "description": "The next time that a snapshot attempt is scheduled to occur."
        },
        "rdbSnapshotPeriod": {
          "type": "string",
          "description": "Optional. Period between RDB snapshots. Snapshots will be attempted every period starting from the provided snapshot start time. For example, a start time of 01/01/2033 06:45 and SIX_HOURS snapshot period will do nothing until 01/01/2033, and then trigger snapshots every day at 06:45, 12:45, 18:45, and 00:45 the next day, and so on. If not provided, TWENTY_FOUR_HOURS will be used as default."
        },
        "rdbSnapshotStartTime": {
          "type": "string",
          "description": "Optional. Date and time that the first snapshot was/will be attempted, and to which future snapshots will be aligned. If not provided, the current time will be used."
        }
      },
      "type": "object",
      "required": [
        "persistenceMode",
        "rdbNextSnapshotTime",
        "rdbSnapshotPeriod",
        "rdbSnapshotStartTime"
      ]
    },
    "google-native:redis/v1beta1:PscConfig": {
      "properties": {
        "network": {
          "type": "string",
          "description": "The network where the IP address of the discovery endpoint will be reserved, in the form of projects/{network_project}/global/networks/{network_id}."
        }
      },
      "type": "object",
      "required": [
        "network"
      ]
    },
    "google-native:redis/v1beta1:PscConfigResponse": {
      "properties": {
        "network": {
          "type": "string",
          "description": "The network where the IP address of the discovery endpoint will be reserved, in the form of projects/{network_project}/global/networks/{network_id}."
        }
      },
      "type": "object",
      "required": [
        "network"
      ]
    },
    "google-native:redis/v1beta1:PscConnectionResponse": {
      "description": "Details of consumer resources in a PSC connection.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The IP allocated on the consumer network for the PSC forwarding rule."
        },
        "forwardingRule": {
          "type": "string",
          "description": "The URI of the consumer side forwarding rule. Example: projects/{projectNumOrId}/regions/us-east1/forwardingRules/{resourceId}."
        },
        "network": {
          "type": "string",
          "description": "The consumer network where the IP address resides, in the form of projects/{project_id}/global/networks/{network_id}."
        },
        "project": {
          "type": "string",
          "description": "The consumer project_id where the forwarding rule is created from."
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the forwarding rule connected to the service attachment."
        }
      },
      "type": "object",
      "required": [
        "address",
        "forwardingRule",
        "network",
        "project",
        "pscConnectionId"
      ]
    },
    "google-native:redis/v1beta1:StateInfoResponse": {
      "description": "Represents additional information about the state of the cluster.",
      "properties": {
        "updateInfo": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:UpdateInfoResponse",
          "description": "Describes ongoing update on the cluster when cluster state is UPDATING."
        }
      },
      "type": "object",
      "required": [
        "updateInfo"
      ]
    },
    "google-native:redis/v1beta1:TimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:redis/v1beta1:TimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:redis/v1beta1:TlsCertificateResponse": {
      "description": "TlsCertificate Resource",
      "properties": {
        "cert": {
          "type": "string",
          "description": "PEM representation."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2020-05-18T00:00:00.094Z`."
        },
        "expireTime": {
          "type": "string",
          "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2020-05-18T00:00:00.094Z`."
        },
        "serialNumber": {
          "type": "string",
          "description": "Serial number, as extracted from the certificate."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "Sha1 Fingerprint of the certificate."
        }
      },
      "type": "object",
      "required": [
        "cert",
        "createTime",
        "expireTime",
        "serialNumber",
        "sha1Fingerprint"
      ]
    },
    "google-native:redis/v1beta1:UpdateInfoResponse": {
      "description": "Represents information about an updating cluster.",
      "properties": {
        "targetReplicaCount": {
          "type": "integer",
          "description": "Target number of replica nodes per shard."
        },
        "targetShardCount": {
          "type": "integer",
          "description": "Target number of shards for redis cluster"
        }
      },
      "type": "object",
      "required": [
        "targetReplicaCount",
        "targetShardCount"
      ]
    },
    "google-native:redis/v1beta1:WeeklyMaintenanceWindow": {
      "description": "Time window in which disruptive maintenance updates occur. Non-disruptive updates can occur inside or outside this window.",
      "properties": {
        "day": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:WeeklyMaintenanceWindowDay",
          "description": "The day of week that maintenance updates occur."
        },
        "startTime": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:TimeOfDay",
          "description": "Start time of the window in UTC time."
        }
      },
      "type": "object",
      "required": [
        "day",
        "startTime"
      ]
    },
    "google-native:redis/v1beta1:WeeklyMaintenanceWindowDay": {
      "description": "Required. The day of week that maintenance updates occur.",
      "type": "string",
      "enum": [
        {
          "name": "DayOfWeekUnspecified",
          "description": "The day of the week is unspecified.",
          "value": "DAY_OF_WEEK_UNSPECIFIED"
        },
        {
          "name": "Monday",
          "description": "Monday",
          "value": "MONDAY"
        },
        {
          "name": "Tuesday",
          "description": "Tuesday",
          "value": "TUESDAY"
        },
        {
          "name": "Wednesday",
          "description": "Wednesday",
          "value": "WEDNESDAY"
        },
        {
          "name": "Thursday",
          "description": "Thursday",
          "value": "THURSDAY"
        },
        {
          "name": "Friday",
          "description": "Friday",
          "value": "FRIDAY"
        },
        {
          "name": "Saturday",
          "description": "Saturday",
          "value": "SATURDAY"
        },
        {
          "name": "Sunday",
          "description": "Sunday",
          "value": "SUNDAY"
        }
      ]
    },
    "google-native:redis/v1beta1:WeeklyMaintenanceWindowResponse": {
      "description": "Time window in which disruptive maintenance updates occur. Non-disruptive updates can occur inside or outside this window.",
      "properties": {
        "day": {
          "type": "string",
          "description": "The day of week that maintenance updates occur."
        },
        "duration": {
          "type": "string",
          "description": "Duration of the maintenance window. The current window is fixed at 1 hour."
        },
        "startTime": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:TimeOfDayResponse",
          "description": "Start time of the window in UTC time."
        }
      },
      "type": "object",
      "required": [
        "day",
        "duration",
        "startTime"
      ]
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfig": {
      "description": "AcceleratorConfig defines the accelerator cards to attach to the VM.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "The number of guest accelerator cards exposed to each VM."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The type of accelerator to attach to each VM, e.g. \"nvidia-tesla-k80\" for nVidia Tesla K80."
        }
      },
      "type": "object"
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfigResponse": {
      "description": "AcceleratorConfig defines the accelerator cards to attach to the VM.",
      "properties": {
        "acceleratorCount": {
          "type": "string",
          "description": "The number of guest accelerator cards exposed to each VM."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The type of accelerator to attach to each VM, e.g. \"nvidia-tesla-k80\" for nVidia Tesla K80."
        }
      },
      "type": "object",
      "required": [
        "acceleratorCount",
        "acceleratorType"
      ]
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAutoscale": {
      "description": "Autoscale defines the autoscaling policy of a worker pool.",
      "properties": {
        "maxSize": {
          "type": "string",
          "description": "The maximal number of workers. Must be equal to or greater than min_size."
        },
        "minSize": {
          "type": "string",
          "description": "The minimal number of workers. Must be greater than 0."
        }
      },
      "type": "object"
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAutoscaleResponse": {
      "description": "Autoscale defines the autoscaling policy of a worker pool.",
      "properties": {
        "maxSize": {
          "type": "string",
          "description": "The maximal number of workers. Must be equal to or greater than min_size."
        },
        "minSize": {
          "type": "string",
          "description": "The minimal number of workers. Must be greater than 0."
        }
      },
      "type": "object",
      "required": [
        "maxSize",
        "minSize"
      ]
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicy": {
      "description": "FeaturePolicy defines features allowed to be used on RBE instances, as well as instance-wide behavior changes that take effect without opt-in or opt-out at usage time.",
      "properties": {
        "containerImageSources": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature",
          "description": "Which container image sources are allowed. Currently only RBE-supported registry (gcr.io) is allowed. One can allow all repositories under a project or one specific repository only. E.g. container_image_sources { policy: RESTRICTED allowed_values: [ \"gcr.io/project-foo\", \"gcr.io/project-bar/repo-baz\", ] } will allow any repositories under \"gcr.io/project-foo\" plus the repository \"gcr.io/project-bar/repo-baz\". Default (UNSPECIFIED) is equivalent to any source is allowed."
        },
        "dockerAddCapabilities": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature",
          "description": "Whether dockerAddCapabilities can be used or what capabilities are allowed."
        },
        "dockerChrootPath": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature",
          "description": "Whether dockerChrootPath can be used."
        },
        "dockerNetwork": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature",
          "description": "Whether dockerNetwork can be used or what network modes are allowed. E.g. one may allow `off` value only via `allowed_values`."
        },
        "dockerPrivileged": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature",
          "description": "Whether dockerPrivileged can be used."
        },
        "dockerRunAsRoot": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature",
          "description": "Whether dockerRunAsRoot can be used."
        },
        "dockerRuntime": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature",
          "description": "Whether dockerRuntime is allowed to be set or what runtimes are allowed. Note linux_isolation takes precedence, and if set, docker_runtime values may be rejected if they are incompatible with the selected isolation."
        },
        "dockerSiblingContainers": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature",
          "description": "Whether dockerSiblingContainers can be used."
        },
        "linuxIsolation": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyLinuxIsolation",
          "description": "linux_isolation allows overriding the docker runtime used for containers started on Linux."
        }
      },
      "type": "object"
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeature": {
      "description": "Defines whether a feature can be used or what values are accepted.",
      "properties": {
        "allowedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of acceptable values. Only effective when the policy is `RESTRICTED`."
        },
        "policy": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeaturePolicy",
          "description": "The policy of the feature."
        }
      },
      "type": "object"
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeaturePolicy": {
      "description": "The policy of the feature.",
      "type": "string",
      "enum": [
        {
          "name": "PolicyUnspecified",
          "description": "Default value, if not explicitly set. Equivalent to FORBIDDEN, unless otherwise documented on a specific Feature.",
          "value": "POLICY_UNSPECIFIED"
        },
        {
          "name": "Allowed",
          "description": "Feature is explicitly allowed.",
          "value": "ALLOWED"
        },
        {
          "name": "Forbidden",
          "description": "Feature is forbidden. Requests attempting to leverage it will get an FailedPrecondition error, with a message like: \"Feature forbidden by FeaturePolicy: Feature on instance \"",
          "value": "FORBIDDEN"
        },
        {
          "name": "Restricted",
          "description": "Only the values specified in the `allowed_values` are allowed.",
          "value": "RESTRICTED"
        }
      ]
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse": {
      "description": "Defines whether a feature can be used or what values are accepted.",
      "properties": {
        "allowedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of acceptable values. Only effective when the policy is `RESTRICTED`."
        },
        "policy": {
          "type": "string",
          "description": "The policy of the feature."
        }
      },
      "type": "object",
      "required": [
        "allowedValues",
        "policy"
      ]
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyLinuxIsolation": {
      "description": "linux_isolation allows overriding the docker runtime used for containers started on Linux.",
      "type": "string",
      "enum": [
        {
          "name": "LinuxIsolationUnspecified",
          "description": "Default value. Will be using Linux default runtime.",
          "value": "LINUX_ISOLATION_UNSPECIFIED"
        },
        {
          "name": "Gvisor",
          "description": "Use gVisor runsc runtime.",
          "value": "GVISOR"
        },
        {
          "name": "Off",
          "description": "Use stardard Linux runtime. This has the same behaviour as unspecified, but it can be used to revert back from gVisor.",
          "value": "OFF"
        }
      ]
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyResponse": {
      "description": "FeaturePolicy defines features allowed to be used on RBE instances, as well as instance-wide behavior changes that take effect without opt-in or opt-out at usage time.",
      "properties": {
        "containerImageSources": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse",
          "description": "Which container image sources are allowed. Currently only RBE-supported registry (gcr.io) is allowed. One can allow all repositories under a project or one specific repository only. E.g. container_image_sources { policy: RESTRICTED allowed_values: [ \"gcr.io/project-foo\", \"gcr.io/project-bar/repo-baz\", ] } will allow any repositories under \"gcr.io/project-foo\" plus the repository \"gcr.io/project-bar/repo-baz\". Default (UNSPECIFIED) is equivalent to any source is allowed."
        },
        "dockerAddCapabilities": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse",
          "description": "Whether dockerAddCapabilities can be used or what capabilities are allowed."
        },
        "dockerChrootPath": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse",
          "description": "Whether dockerChrootPath can be used."
        },
        "dockerNetwork": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse",
          "description": "Whether dockerNetwork can be used or what network modes are allowed. E.g. one may allow `off` value only via `allowed_values`."
        },
        "dockerPrivileged": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse",
          "description": "Whether dockerPrivileged can be used."
        },
        "dockerRunAsRoot": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse",
          "description": "Whether dockerRunAsRoot can be used."
        },
        "dockerRuntime": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse",
          "description": "Whether dockerRuntime is allowed to be set or what runtimes are allowed. Note linux_isolation takes precedence, and if set, docker_runtime values may be rejected if they are incompatible with the selected isolation."
        },
        "dockerSiblingContainers": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyFeatureResponse",
          "description": "Whether dockerSiblingContainers can be used."
        },
        "linuxIsolation": {
          "type": "string",
          "description": "linux_isolation allows overriding the docker runtime used for containers started on Linux."
        }
      },
      "type": "object",
      "required": [
        "containerImageSources",
        "dockerAddCapabilities",
        "dockerChrootPath",
        "dockerNetwork",
        "dockerPrivileged",
        "dockerRunAsRoot",
        "dockerRuntime",
        "dockerSiblingContainers",
        "linuxIsolation"
      ]
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig": {
      "description": "Defines the configuration to be used for creating workers in the worker pool.",
      "properties": {
        "accelerator": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfig",
          "description": "The accelerator card attached to each VM."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See https://cloud.google.com/compute/docs/disks/"
        },
        "diskType": {
          "type": "string",
          "description": "Disk Type to use for the worker. See [Storage options](https://cloud.google.com/compute/docs/disks/#introduction). Currently only `pd-standard` and `pd-ssd` are supported."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with the workers. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International letters are permitted. Label keys must start with a letter. Label values are optional. There can not be more than 64 labels per resource."
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of the worker, such as `e2-standard-2`. See https://cloud.google.com/compute/docs/machine-types for a list of supported machine types. Note that `f1-micro` and `g1-small` are not yet supported."
        },
        "maxConcurrentActions": {
          "type": "string",
          "description": "The maximum number of actions a worker can execute concurrently."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum CPU platform to use when creating the worker. See [CPU Platforms](https://cloud.google.com/compute/docs/cpu-platforms)."
        },
        "networkAccess": {
          "type": "string",
          "description": "Determines the type of network access granted to workers. Possible values: - \"public\": Workers can connect to the public internet. - \"private\": Workers can only connect to Google APIs and services. - \"restricted-private\": Workers can only connect to Google APIs that are reachable through `restricted.googleapis.com` (`199.36.153.4/30`)."
        },
        "reserved": {
          "type": "boolean",
          "description": "Determines whether the worker is reserved (equivalent to a Compute Engine on-demand VM and therefore won't be preempted). See [Preemptible VMs](https://cloud.google.com/preemptible-vms/) for more details."
        },
        "soleTenantNodeType": {
          "type": "string",
          "description": "The node type name to be used for sole-tenant nodes."
        },
        "vmImage": {
          "type": "string",
          "description": "The name of the image used by each VM."
        }
      },
      "type": "object",
      "required": [
        "diskSizeGb",
        "diskType",
        "machineType"
      ]
    },
    "google-native:remotebuildexecution/v1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfigResponse": {
      "description": "Defines the configuration to be used for creating workers in the worker pool.",
      "properties": {
        "accelerator": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAcceleratorConfigResponse",
          "description": "The accelerator card attached to each VM."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the disk attached to the worker, in GB. See https://cloud.google.com/compute/docs/disks/"
        },
        "diskType": {
          "type": "string",
          "description": "Disk Type to use for the worker. See [Storage options](https://cloud.google.com/compute/docs/disks/#introduction). Currently only `pd-standard` and `pd-ssd` are supported."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with the workers. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International letters are permitted. Label keys must start with a letter. Label values are optional. There can not be more than 64 labels per resource."
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of the worker, such as `e2-standard-2`. See https://cloud.google.com/compute/docs/machine-types for a list of supported machine types. Note that `f1-micro` and `g1-small` are not yet supported."
        },
        "maxConcurrentActions": {
          "type": "string",
          "description": "The maximum number of actions a worker can execute concurrently."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Minimum CPU platform to use when creating the worker. See [CPU Platforms](https://cloud.google.com/compute/docs/cpu-platforms)."
        },
        "networkAccess": {
          "type": "string",
          "description": "Determines the type of network access granted to workers. Possible values: - \"public\": Workers can connect to the public internet. - \"private\": Workers can only connect to Google APIs and services. - \"restricted-private\": Workers can only connect to Google APIs that are reachable through `restricted.googleapis.com` (`199.36.153.4/30`)."
        },
        "reserved": {
          "type": "boolean",
          "description": "Determines whether the worker is reserved (equivalent to a Compute Engine on-demand VM and therefore won't be preempted). See [Preemptible VMs](https://cloud.google.com/preemptible-vms/) for more details."
        },
        "soleTenantNodeType": {
          "type": "string",
          "description": "The node type name to be used for sole-tenant nodes."
        },
        "vmImage": {
          "type": "string",
          "description": "The name of the image used by each VM."
        }
      },
      "type": "object",
      "required": [
        "accelerator",
        "diskSizeGb",
        "diskType",
        "labels",
        "machineType",
        "maxConcurrentActions",
        "minCpuPlatform",
        "networkAccess",
        "reserved",
        "soleTenantNodeType",
        "vmImage"
      ]
    },
    "google-native:retail/v2:ControlSearchSolutionUseCaseItem": {
      "type": "string",
      "enum": [
        {
          "name": "SearchSolutionUseCaseUnspecified",
          "description": "The value when it's unspecified. In this case, server behavior defaults to SEARCH_SOLUTION_USE_CASE_SEARCH.",
          "value": "SEARCH_SOLUTION_USE_CASE_UNSPECIFIED"
        },
        {
          "name": "SearchSolutionUseCaseSearch",
          "description": "Search use case. Expects the traffic has a non-empty query.",
          "value": "SEARCH_SOLUTION_USE_CASE_SEARCH"
        },
        {
          "name": "SearchSolutionUseCaseBrowse",
          "description": "Browse use case. Expects the traffic has an empty query.",
          "value": "SEARCH_SOLUTION_USE_CASE_BROWSE"
        }
      ]
    },
    "google-native:retail/v2:ControlSolutionTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "SolutionTypeUnspecified",
          "description": "Default value.",
          "value": "SOLUTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SolutionTypeRecommendation",
          "description": "Used for Recommendations AI.",
          "value": "SOLUTION_TYPE_RECOMMENDATION"
        },
        {
          "name": "SolutionTypeSearch",
          "description": "Used for Retail Search.",
          "value": "SOLUTION_TYPE_SEARCH"
        }
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2Audience": {
      "description": "An intended audience of the Product for whom it's sold.",
      "properties": {
        "ageGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The age groups of the audience. Strongly encouraged to use the standard values: \"newborn\" (up to 3 months old), \"infant\" (3–12 months old), \"toddler\" (1–5 years old), \"kids\" (5–13 years old), \"adult\" (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge)."
        },
        "genders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The genders of the audience. Strongly encouraged to use the standard values: \"male\", \"female\", \"unisex\". At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2AudienceResponse": {
      "description": "An intended audience of the Product for whom it's sold.",
      "properties": {
        "ageGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The age groups of the audience. Strongly encouraged to use the standard values: \"newborn\" (up to 3 months old), \"infant\" (3–12 months old), \"toddler\" (1–5 years old), \"kids\" (5–13 years old), \"adult\" (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge)."
        },
        "genders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The genders of the audience. Strongly encouraged to use the standard values: \"male\", \"female\", \"unisex\". At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender)."
        }
      },
      "type": "object",
      "required": [
        "ageGroups",
        "genders"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ColorInfo": {
      "description": "The color information of a Product.",
      "properties": {
        "colorFamilies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The standard color families. Strongly recommended to use the following standard color groups: \"Red\", \"Pink\", \"Orange\", \"Yellow\", \"Purple\", \"Green\", \"Cyan\", \"Blue\", \"Brown\", \"White\", \"Gray\", \"Black\" and \"Mixed\". Normally it is expected to have only 1 color family. May consider using single \"Mixed\" instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single \"Mixed\" instead of multiple values. A maximum of 75 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2ColorInfoResponse": {
      "description": "The color information of a Product.",
      "properties": {
        "colorFamilies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The standard color families. Strongly recommended to use the following standard color groups: \"Red\", \"Pink\", \"Orange\", \"Yellow\", \"Purple\", \"Green\", \"Cyan\", \"Blue\", \"Brown\", \"White\", \"Gray\", \"Black\" and \"Mixed\". Normally it is expected to have only 1 color family. May consider using single \"Mixed\" instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single \"Mixed\" instead of multiple values. A maximum of 75 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        }
      },
      "type": "object",
      "required": [
        "colorFamilies",
        "colors"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2Condition": {
      "description": "Metadata that is used to define a condition that triggers an action. A valid condition must specify at least one of 'query_terms' or 'products_filter'. If multiple fields are specified, the condition is met if all the fields are satisfied e.g. if a set of query terms and product_filter are set, then only items matching the product_filter for requests with a query matching the query terms wil get boosted.",
      "properties": {
        "activeTimeRange": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ConditionTimeRange"
          },
          "description": "Range of time(s) specifying when Condition is active. Condition true if any time range matches."
        },
        "pageCategories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Used to support browse uses cases. A list (up to 10 entries) of categories or departments. The format should be the same as UserEvent.page_categories;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ConditionQueryTerm"
          },
          "description": "A list (up to 10 entries) of terms to match the query on. If not specified, match all queries. If many query terms are specified, the condition is matched if any of the terms is a match (i.e. using the OR operator)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2ConditionQueryTerm": {
      "description": "Query terms that we want to match on.",
      "properties": {
        "fullMatch": {
          "type": "boolean",
          "description": "Whether this is supposed to be a full or partial match."
        },
        "value": {
          "type": "string",
          "description": "The value of the term to match on. Value cannot be empty. Value can have at most 3 terms if specified as a partial match. Each space separated string is considered as one term. For example, \"a b c\" is 3 terms and allowed, but \" a b c d\" is 4 terms and not allowed for a partial match."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2ConditionQueryTermResponse": {
      "description": "Query terms that we want to match on.",
      "properties": {
        "fullMatch": {
          "type": "boolean",
          "description": "Whether this is supposed to be a full or partial match."
        },
        "value": {
          "type": "string",
          "description": "The value of the term to match on. Value cannot be empty. Value can have at most 3 terms if specified as a partial match. Each space separated string is considered as one term. For example, \"a b c\" is 3 terms and allowed, but \" a b c d\" is 4 terms and not allowed for a partial match."
        }
      },
      "type": "object",
      "required": [
        "fullMatch",
        "value"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ConditionResponse": {
      "description": "Metadata that is used to define a condition that triggers an action. A valid condition must specify at least one of 'query_terms' or 'products_filter'. If multiple fields are specified, the condition is met if all the fields are satisfied e.g. if a set of query terms and product_filter are set, then only items matching the product_filter for requests with a query matching the query terms wil get boosted.",
      "properties": {
        "activeTimeRange": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ConditionTimeRangeResponse"
          },
          "description": "Range of time(s) specifying when Condition is active. Condition true if any time range matches."
        },
        "pageCategories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Used to support browse uses cases. A list (up to 10 entries) of categories or departments. The format should be the same as UserEvent.page_categories;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ConditionQueryTermResponse"
          },
          "description": "A list (up to 10 entries) of terms to match the query on. If not specified, match all queries. If many query terms are specified, the condition is matched if any of the terms is a match (i.e. using the OR operator)."
        }
      },
      "type": "object",
      "required": [
        "activeTimeRange",
        "pageCategories",
        "queryTerms"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ConditionTimeRange": {
      "description": "Used for time-dependent conditions. Example: Want to have rule applied for week long sale.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "End of time range. Range is inclusive."
        },
        "startTime": {
          "type": "string",
          "description": "Start of time range. Range is inclusive."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2ConditionTimeRangeResponse": {
      "description": "Used for time-dependent conditions. Example: Want to have rule applied for week long sale.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "End of time range. Range is inclusive."
        },
        "startTime": {
          "type": "string",
          "description": "Start of time range. Range is inclusive."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "startTime"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2FulfillmentInfo": {
      "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.",
      "properties": {
        "placeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 3000 values are allowed. Each value must be a string with a length limit of 30 characters, matching the pattern `[a-zA-Z0-9_-]+`, such as \"store1\" or \"REGION-2\". Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "type": {
          "type": "string",
          "description": "The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2FulfillmentInfoResponse": {
      "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.",
      "properties": {
        "placeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 3000 values are allowed. Each value must be a string with a length limit of 30 characters, matching the pattern `[a-zA-Z0-9_-]+`, such as \"store1\" or \"REGION-2\". Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "type": {
          "type": "string",
          "description": "The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "placeIds",
        "type"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2Image": {
      "description": "Product image. Recommendations AI and Retail Search do not use product images to improve prediction and search results. However, product images can be returned in results, and are shown in prediction or search previews in the console.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "uri": {
          "type": "string",
          "description": "URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "width": {
          "type": "integer",
          "description": "Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ImageResponse": {
      "description": "Product image. Recommendations AI and Retail Search do not use product images to improve prediction and search results. However, product images can be returned in results, and are shown in prediction or search previews in the console.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "uri": {
          "type": "string",
          "description": "URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "width": {
          "type": "integer",
          "description": "Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "height",
        "uri",
        "width"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2IntervalResponse": {
      "description": "A floating point interval.",
      "properties": {
        "exclusiveMaximum": {
          "type": "number",
          "description": "Exclusive upper bound."
        },
        "exclusiveMinimum": {
          "type": "number",
          "description": "Exclusive lower bound."
        },
        "maximum": {
          "type": "number",
          "description": "Inclusive upper bound."
        },
        "minimum": {
          "type": "number",
          "description": "Inclusive lower bound."
        }
      },
      "type": "object",
      "required": [
        "exclusiveMaximum",
        "exclusiveMinimum",
        "maximum",
        "minimum"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2LocalInventoryResponse": {
      "description": "The inventory information at a place (e.g. a store) identified by a place ID.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional local inventory attributes, for example, store name, promotion tags, etc. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * At most 30 attributes are allowed. * The key must be a UTF-8 encoded string with a length limit of 32 characters. * The key must match the pattern: `a-zA-Z0-9*`. For example, key0LikeThis or KEY_1_LIKE_THIS. * The attribute values must be of the same type (text or number). * Only 1 value is allowed for each attribute. * For text values, the length limit is 256 UTF-8 characters. * The attribute does not support search. The `searchable` field should be unset or set to false. * The max summed total bytes of custom attribute keys and values per product is 5MiB."
        },
        "fulfillmentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Input only. Supported fulfillment types. Valid fulfillment type values include commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. All the elements must be distinct. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "placeId": {
          "type": "string",
          "description": "The place ID for the current set of inventory information."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PriceInfoResponse",
          "description": "Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "fulfillmentTypes",
        "placeId",
        "priceInfo"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ModelFrequentlyBoughtTogetherFeaturesConfig": {
      "description": "Additional configs for the frequently-bought-together model type.",
      "properties": {
        "contextProductsType": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ModelFrequentlyBoughtTogetherFeaturesConfigContextProductsType",
          "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2ModelFrequentlyBoughtTogetherFeaturesConfigContextProductsType": {
      "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS.",
      "type": "string",
      "enum": [
        {
          "name": "ContextProductsTypeUnspecified",
          "description": "Unspecified default value, should never be explicitly set. Defaults to MULTIPLE_CONTEXT_PRODUCTS.",
          "value": "CONTEXT_PRODUCTS_TYPE_UNSPECIFIED"
        },
        {
          "name": "SingleContextProduct",
          "description": "Use only a single product as context for the recommendation. Typically used on pages like add-to-cart or product details.",
          "value": "SINGLE_CONTEXT_PRODUCT"
        },
        {
          "name": "MultipleContextProducts",
          "description": "Use one or multiple products as context for the recommendation. Typically used on shopping cart pages.",
          "value": "MULTIPLE_CONTEXT_PRODUCTS"
        }
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ModelFrequentlyBoughtTogetherFeaturesConfigResponse": {
      "description": "Additional configs for the frequently-bought-together model type.",
      "properties": {
        "contextProductsType": {
          "type": "string",
          "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS."
        }
      },
      "type": "object",
      "required": [
        "contextProductsType"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ModelModelFeaturesConfig": {
      "description": "Additional model features config.",
      "properties": {
        "frequentlyBoughtTogetherConfig": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ModelFrequentlyBoughtTogetherFeaturesConfig",
          "description": "Additional configs for frequently-bought-together models."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2ModelModelFeaturesConfigResponse": {
      "description": "Additional model features config.",
      "properties": {
        "frequentlyBoughtTogetherConfig": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ModelFrequentlyBoughtTogetherFeaturesConfigResponse",
          "description": "Additional configs for frequently-bought-together models."
        }
      },
      "type": "object",
      "required": [
        "frequentlyBoughtTogetherConfig"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ModelServingConfigListResponse": {
      "description": "Represents an ordered combination of valid serving configs, which can be used for `PAGE_OPTIMIZATION` recommendations.",
      "properties": {
        "servingConfigIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of valid serving configs that may be used for `PAGE_OPTIMIZATION`."
        }
      },
      "type": "object",
      "required": [
        "servingConfigIds"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2PriceInfo": {
      "description": "The price information of a Product.",
      "properties": {
        "cost": {
          "type": "number",
          "description": "The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895)."
        },
        "currencyCode": {
          "type": "string",
          "description": "The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned."
        },
        "originalPrice": {
          "type": "number",
          "description": "Price of the product without any discount. If zero, by default set to be the price. If set, original_price should be greater than or equal to price, otherwise an INVALID_ARGUMENT error is thrown."
        },
        "price": {
          "type": "number",
          "description": "Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.price](https://schema.org/price)."
        },
        "priceEffectiveTime": {
          "type": "string",
          "description": "The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceExpireTime": {
          "type": "string",
          "description": "The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2PriceInfoPriceRangeResponse": {
      "description": "The price range of all variant Product having the same Product.primary_product_id.",
      "properties": {
        "originalPrice": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2IntervalResponse",
          "description": "The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id."
        },
        "price": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2IntervalResponse",
          "description": "The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id."
        }
      },
      "type": "object",
      "required": [
        "originalPrice",
        "price"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2PriceInfoResponse": {
      "description": "The price information of a Product.",
      "properties": {
        "cost": {
          "type": "number",
          "description": "The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895)."
        },
        "currencyCode": {
          "type": "string",
          "description": "The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned."
        },
        "originalPrice": {
          "type": "number",
          "description": "Price of the product without any discount. If zero, by default set to be the price. If set, original_price should be greater than or equal to price, otherwise an INVALID_ARGUMENT error is thrown."
        },
        "price": {
          "type": "number",
          "description": "Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.price](https://schema.org/price)."
        },
        "priceEffectiveTime": {
          "type": "string",
          "description": "The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceExpireTime": {
          "type": "string",
          "description": "The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceRange": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PriceInfoPriceRangeResponse",
          "description": "The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "cost",
        "currencyCode",
        "originalPrice",
        "price",
        "priceEffectiveTime",
        "priceExpireTime",
        "priceRange"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2ProductResponse": {
      "description": "Product captures all metadata information of items to be recommended or searched.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2AudienceResponse",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "type": "string",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ColorInfoResponse",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2FulfillmentInfoResponse"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ImageResponse"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "localInventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2LocalInventoryResponse"
          },
          "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PriceInfoResponse",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PromotionResponse"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RatingResponse",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        },
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ProductResponse"
          },
          "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "audience",
        "availability",
        "availableQuantity",
        "availableTime",
        "brands",
        "categories",
        "collectionMemberIds",
        "colorInfo",
        "conditions",
        "description",
        "expireTime",
        "fulfillmentInfo",
        "gtin",
        "images",
        "languageCode",
        "localInventories",
        "materials",
        "name",
        "patterns",
        "priceInfo",
        "primaryProductId",
        "promotions",
        "publishTime",
        "rating",
        "retrievableFields",
        "sizes",
        "tags",
        "title",
        "ttl",
        "type",
        "uri",
        "variants"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2Promotion": {
      "description": "Promotion specification.",
      "properties": {
        "promotionId": {
          "type": "string",
          "description": "Promotion identifier, which is the final component of name. For example, this field is \"free_gift\", if name is `projects/*/locations/global/catalogs/default_catalog/promotions/free_gift`. The value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: `a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Corresponds to Google Merchant Center property [promotion_id](https://support.google.com/merchants/answer/7050148)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2PromotionResponse": {
      "description": "Promotion specification.",
      "properties": {
        "promotionId": {
          "type": "string",
          "description": "Promotion identifier, which is the final component of name. For example, this field is \"free_gift\", if name is `projects/*/locations/global/catalogs/default_catalog/promotions/free_gift`. The value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: `a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Corresponds to Google Merchant Center property [promotion_id](https://support.google.com/merchants/answer/7050148)."
        }
      },
      "type": "object",
      "required": [
        "promotionId"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2Rating": {
      "description": "The rating of a Product.",
      "properties": {
        "averageRating": {
          "type": "number",
          "description": "The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingCount": {
          "type": "integer",
          "description": "The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingHistogram": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RatingResponse": {
      "description": "The rating of a Product.",
      "properties": {
        "averageRating": {
          "type": "number",
          "description": "The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingCount": {
          "type": "integer",
          "description": "The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingHistogram": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on."
        }
      },
      "type": "object",
      "required": [
        "averageRating",
        "ratingCount",
        "ratingHistogram"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2Rule": {
      "description": "A rule is a condition-action pair * A condition defines when a rule is to be triggered. * An action specifies what occurs on that trigger. Currently rules only work for controls with SOLUTION_TYPE_SEARCH.",
      "properties": {
        "boostAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleBoostAction",
          "description": "A boost action."
        },
        "condition": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2Condition",
          "description": "The condition that triggers the rule. If the condition is empty, the rule will always apply."
        },
        "doNotAssociateAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleDoNotAssociateAction",
          "description": "Prevents term from being associated with other terms."
        },
        "filterAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleFilterAction",
          "description": "Filters results."
        },
        "forceReturnFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleForceReturnFacetAction",
          "description": "Force returns an attribute as a facet in the request."
        },
        "ignoreAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleIgnoreAction",
          "description": "Ignores specific terms from query during search."
        },
        "onewaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleOnewaySynonymsAction",
          "description": "Treats specific term as a synonym with a group of terms. Group of terms will not be treated as synonyms with the specific term."
        },
        "redirectAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleRedirectAction",
          "description": "Redirects a shopper to a specific page."
        },
        "removeFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleRemoveFacetAction",
          "description": "Remove an attribute as a facet in the request (if present)."
        },
        "replacementAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleReplacementAction",
          "description": "Replaces specific terms in the query."
        },
        "twowaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleTwowaySynonymsAction",
          "description": "Treats a set of terms as synonyms of one another."
        }
      },
      "type": "object",
      "required": [
        "condition"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleBoostAction": {
      "description": "A boost action to apply to results matching condition specified above.",
      "properties": {
        "boost": {
          "type": "number",
          "description": "Strength of the condition boost, which must be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored."
        },
        "productsFilter": {
          "type": "string",
          "description": "The filter can have a max size of 5000 characters. An expression which specifies which products to apply an action to. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleBoostActionResponse": {
      "description": "A boost action to apply to results matching condition specified above.",
      "properties": {
        "boost": {
          "type": "number",
          "description": "Strength of the condition boost, which must be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored."
        },
        "productsFilter": {
          "type": "string",
          "description": "The filter can have a max size of 5000 characters. An expression which specifies which products to apply an action to. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object",
      "required": [
        "boost",
        "productsFilter"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleDoNotAssociateAction": {
      "description": "Prevents `query_term` from being associated with specified terms during search. Example: Don't associate \"gShoe\" and \"cheap\".",
      "properties": {
        "doNotAssociateTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cannot contain duplicates or the query term. Can specify up to 100 terms."
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will not consider do_not_associate_terms for search if in search query. Can specify up to 100 terms."
        },
        "terms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleDoNotAssociateActionResponse": {
      "description": "Prevents `query_term` from being associated with specified terms during search. Example: Don't associate \"gShoe\" and \"cheap\".",
      "properties": {
        "doNotAssociateTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cannot contain duplicates or the query term. Can specify up to 100 terms."
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will not consider do_not_associate_terms for search if in search query. Can specify up to 100 terms."
        },
        "terms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object",
      "required": [
        "doNotAssociateTerms",
        "queryTerms",
        "terms"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleFilterAction": {
      "description": "* Rule Condition: - No Condition.query_terms provided is a global match. - 1 or more Condition.query_terms provided are combined with OR operator. * Action Input: The request query and filter that are applied to the retrieved products, in addition to any filters already provided with the SearchRequest. The AND operator is used to combine the query's existing filters with the filter rule(s). NOTE: May result in 0 results when filters conflict. * Action Result: Filters the returned objects to be ONLY those that passed the filter.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter to apply on the matching condition results. Supported features: * filter must be set. * Filter syntax is identical to SearchRequest.filter. For more information, see [Filter](/retail/docs/filter-and-order#filter). * To filter products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleFilterActionResponse": {
      "description": "* Rule Condition: - No Condition.query_terms provided is a global match. - 1 or more Condition.query_terms provided are combined with OR operator. * Action Input: The request query and filter that are applied to the retrieved products, in addition to any filters already provided with the SearchRequest. The AND operator is used to combine the query's existing filters with the filter rule(s). NOTE: May result in 0 results when filters conflict. * Action Result: Filters the returned objects to be ONLY those that passed the filter.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter to apply on the matching condition results. Supported features: * filter must be set. * Filter syntax is identical to SearchRequest.filter. For more information, see [Filter](/retail/docs/filter-and-order#filter). * To filter products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleForceReturnFacetAction": {
      "description": "Force returns an attribute/facet in the request around a certain position or above. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Inputs: attribute name, position * Action Result: Will force return a facet key around a certain position or above if the condition is satisfied. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\", the ForceReturnFacetAction.FacetPositionAdjustment.attribute_name is \"size\" and the ForceReturnFacetAction.FacetPositionAdjustment.position is 8. Two cases: a) The facet key \"size\" is not already in the top 8 slots, then the facet \"size\" will appear at a position close to 8. b) The facet key \"size\" in among the top 8 positions in the request, then it will stay at its current rank.",
      "properties": {
        "facetPositionAdjustments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleForceReturnFacetActionFacetPositionAdjustment"
          },
          "description": "Each instance corresponds to a force return attribute for the given condition. There can't be more 3 instances here."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleForceReturnFacetActionFacetPositionAdjustment": {
      "description": "Each facet position adjustment consists of a single attribute name (i.e. facet key) along with a specified position.",
      "properties": {
        "attributeName": {
          "type": "string",
          "description": "The attribute name to force return as a facet. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters long."
        },
        "position": {
          "type": "integer",
          "description": "This is the position in the request as explained above. It should be strictly positive be at most 100."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleForceReturnFacetActionFacetPositionAdjustmentResponse": {
      "description": "Each facet position adjustment consists of a single attribute name (i.e. facet key) along with a specified position.",
      "properties": {
        "attributeName": {
          "type": "string",
          "description": "The attribute name to force return as a facet. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters long."
        },
        "position": {
          "type": "integer",
          "description": "This is the position in the request as explained above. It should be strictly positive be at most 100."
        }
      },
      "type": "object",
      "required": [
        "attributeName",
        "position"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleForceReturnFacetActionResponse": {
      "description": "Force returns an attribute/facet in the request around a certain position or above. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Inputs: attribute name, position * Action Result: Will force return a facet key around a certain position or above if the condition is satisfied. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\", the ForceReturnFacetAction.FacetPositionAdjustment.attribute_name is \"size\" and the ForceReturnFacetAction.FacetPositionAdjustment.position is 8. Two cases: a) The facet key \"size\" is not already in the top 8 slots, then the facet \"size\" will appear at a position close to 8. b) The facet key \"size\" in among the top 8 positions in the request, then it will stay at its current rank.",
      "properties": {
        "facetPositionAdjustments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleForceReturnFacetActionFacetPositionAdjustmentResponse"
          },
          "description": "Each instance corresponds to a force return attribute for the given condition. There can't be more 3 instances here."
        }
      },
      "type": "object",
      "required": [
        "facetPositionAdjustments"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleIgnoreAction": {
      "description": "Prevents a term in the query from being used in search. Example: Don't search for \"shoddy\".",
      "properties": {
        "ignoreTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms to ignore in the search query."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleIgnoreActionResponse": {
      "description": "Prevents a term in the query from being used in search. Example: Don't search for \"shoddy\".",
      "properties": {
        "ignoreTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms to ignore in the search query."
        }
      },
      "type": "object",
      "required": [
        "ignoreTerms"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleOnewaySynonymsAction": {
      "description": "Maps a set of terms to a set of synonyms. Set of synonyms will be treated as synonyms of each query term only. `query_terms` will not be treated as synonyms of each other. Example: \"sneakers\" will use a synonym of \"shoes\". \"shoes\" will not use a synonym of \"sneakers\".",
      "properties": {
        "onewayTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will treat synonyms as their synonyms. Not themselves synonyms of the synonyms. Can specify up to 100 terms."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100 synonyms."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleOnewaySynonymsActionResponse": {
      "description": "Maps a set of terms to a set of synonyms. Set of synonyms will be treated as synonyms of each query term only. `query_terms` will not be treated as synonyms of each other. Example: \"sneakers\" will use a synonym of \"shoes\". \"shoes\" will not use a synonym of \"sneakers\".",
      "properties": {
        "onewayTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will treat synonyms as their synonyms. Not themselves synonyms of the synonyms. Can specify up to 100 terms."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100 synonyms."
        }
      },
      "type": "object",
      "required": [
        "onewayTerms",
        "queryTerms",
        "synonyms"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleRedirectAction": {
      "description": "Redirects a shopper to a specific page. * Rule Condition: Must specify Condition.query_terms. * Action Input: Request Query * Action Result: Redirects shopper to provided uri.",
      "properties": {
        "redirectUri": {
          "type": "string",
          "description": "URL must have length equal or less than 2000 characters."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleRedirectActionResponse": {
      "description": "Redirects a shopper to a specific page. * Rule Condition: Must specify Condition.query_terms. * Action Input: Request Query * Action Result: Redirects shopper to provided uri.",
      "properties": {
        "redirectUri": {
          "type": "string",
          "description": "URL must have length equal or less than 2000 characters."
        }
      },
      "type": "object",
      "required": [
        "redirectUri"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleRemoveFacetAction": {
      "description": "Removes an attribute/facet in the request if is present. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Input: attribute name * Action Result: Will remove the attribute (as a facet) from the request if it is present. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\" and the attribute name \"size\", then facet key \"size\" will be removed from the request (if it is present).",
      "properties": {
        "attributeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The attribute names (i.e. facet keys) to remove from the dynamic facets (if present in the request). There can't be more 3 attribute names. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleRemoveFacetActionResponse": {
      "description": "Removes an attribute/facet in the request if is present. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Input: attribute name * Action Result: Will remove the attribute (as a facet) from the request if it is present. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\" and the attribute name \"size\", then facet key \"size\" will be removed from the request (if it is present).",
      "properties": {
        "attributeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The attribute names (i.e. facet keys) to remove from the dynamic facets (if present in the request). There can't be more 3 attribute names. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters."
        }
      },
      "type": "object",
      "required": [
        "attributeNames"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleReplacementAction": {
      "description": "Replaces a term in the query. Multiple replacement candidates can be specified. All `query_terms` will be replaced with the replacement term. Example: Replace \"gShoe\" with \"google shoe\".",
      "properties": {
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will be replaced by replacement term. Can specify up to 100 terms."
        },
        "replacementTerm": {
          "type": "string",
          "description": "Term that will be used for replacement."
        },
        "term": {
          "type": "string",
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleReplacementActionResponse": {
      "description": "Replaces a term in the query. Multiple replacement candidates can be specified. All `query_terms` will be replaced with the replacement term. Example: Replace \"gShoe\" with \"google shoe\".",
      "properties": {
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will be replaced by replacement term. Can specify up to 100 terms."
        },
        "replacementTerm": {
          "type": "string",
          "description": "Term that will be used for replacement."
        },
        "term": {
          "type": "string",
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object",
      "required": [
        "queryTerms",
        "replacementTerm",
        "term"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleResponse": {
      "description": "A rule is a condition-action pair * A condition defines when a rule is to be triggered. * An action specifies what occurs on that trigger. Currently rules only work for controls with SOLUTION_TYPE_SEARCH.",
      "properties": {
        "boostAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleBoostActionResponse",
          "description": "A boost action."
        },
        "condition": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ConditionResponse",
          "description": "The condition that triggers the rule. If the condition is empty, the rule will always apply."
        },
        "doNotAssociateAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleDoNotAssociateActionResponse",
          "description": "Prevents term from being associated with other terms."
        },
        "filterAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleFilterActionResponse",
          "description": "Filters results."
        },
        "forceReturnFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleForceReturnFacetActionResponse",
          "description": "Force returns an attribute as a facet in the request."
        },
        "ignoreAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleIgnoreActionResponse",
          "description": "Ignores specific terms from query during search."
        },
        "onewaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleOnewaySynonymsActionResponse",
          "description": "Treats specific term as a synonym with a group of terms. Group of terms will not be treated as synonyms with the specific term."
        },
        "redirectAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleRedirectActionResponse",
          "description": "Redirects a shopper to a specific page."
        },
        "removeFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleRemoveFacetActionResponse",
          "description": "Remove an attribute as a facet in the request (if present)."
        },
        "replacementAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleReplacementActionResponse",
          "description": "Replaces specific terms in the query."
        },
        "twowaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleTwowaySynonymsActionResponse",
          "description": "Treats a set of terms as synonyms of one another."
        }
      },
      "type": "object",
      "required": [
        "boostAction",
        "condition",
        "doNotAssociateAction",
        "filterAction",
        "forceReturnFacetAction",
        "ignoreAction",
        "onewaySynonymsAction",
        "redirectAction",
        "removeFacetAction",
        "replacementAction",
        "twowaySynonymsAction"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleTwowaySynonymsAction": {
      "description": "Creates a set of terms that will be treated as synonyms of each other. Example: synonyms of \"sneakers\" and \"shoes\": * \"sneakers\" will use a synonym of \"shoes\". * \"shoes\" will use a synonym of \"sneakers\".",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at least 2 synonyms."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2RuleTwowaySynonymsActionResponse": {
      "description": "Creates a set of terms that will be treated as synonyms of each other. Example: synonyms of \"sneakers\" and \"shoes\": * \"sneakers\" will use a synonym of \"shoes\". * \"shoes\" will use a synonym of \"sneakers\".",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at least 2 synonyms."
        }
      },
      "type": "object",
      "required": [
        "synonyms"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2SearchRequestDynamicFacetSpec": {
      "description": "The specifications of dynamically generated facets.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2SearchRequestDynamicFacetSpecMode",
          "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2SearchRequestDynamicFacetSpecMode": {
      "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable Dynamic Facet.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "Automatic mode built by Google Retail Search.",
          "value": "ENABLED"
        }
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2SearchRequestDynamicFacetSpecResponse": {
      "description": "The specifications of dynamically generated facets.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2SearchRequestPersonalizationSpec": {
      "description": "The specification for personalization.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2SearchRequestPersonalizationSpecMode",
          "description": "Defaults to Mode.AUTO."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2:GoogleCloudRetailV2SearchRequestPersonalizationSpecMode": {
      "description": "Defaults to Mode.AUTO.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value. In this case, server behavior defaults to Mode.AUTO.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Auto",
          "description": "Let CRS decide whether to use personalization based on quality of user event data.",
          "value": "AUTO"
        },
        {
          "name": "Disabled",
          "description": "Disable personalization.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:retail/v2:GoogleCloudRetailV2SearchRequestPersonalizationSpecResponse": {
      "description": "The specification for personalization.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Defaults to Mode.AUTO."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:retail/v2:ModelFilteringOption": {
      "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model.",
      "type": "string",
      "enum": [
        {
          "name": "RecommendationsFilteringOptionUnspecified",
          "description": "Value used when unset. In this case, server behavior defaults to RECOMMENDATIONS_FILTERING_DISABLED.",
          "value": "RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED"
        },
        {
          "name": "RecommendationsFilteringDisabled",
          "description": "Recommendation filtering is disabled.",
          "value": "RECOMMENDATIONS_FILTERING_DISABLED"
        },
        {
          "name": "RecommendationsFilteringEnabled",
          "description": "Recommendation filtering is enabled.",
          "value": "RECOMMENDATIONS_FILTERING_ENABLED"
        }
      ]
    },
    "google-native:retail/v2:ModelPeriodicTuningState": {
      "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`.",
      "type": "string",
      "enum": [
        {
          "name": "PeriodicTuningStateUnspecified",
          "description": "Unspecified default value, should never be explicitly set.",
          "value": "PERIODIC_TUNING_STATE_UNSPECIFIED"
        },
        {
          "name": "PeriodicTuningDisabled",
          "description": "The model has periodic tuning disabled. Tuning can be reenabled by calling the `EnableModelPeriodicTuning` method or by calling the `TuneModel` method.",
          "value": "PERIODIC_TUNING_DISABLED"
        },
        {
          "name": "AllTuningDisabled",
          "description": "The model cannot be tuned with periodic tuning OR the `TuneModel` method. Hide the options in customer UI and reject any requests through the backend self serve API.",
          "value": "ALL_TUNING_DISABLED"
        },
        {
          "name": "PeriodicTuningEnabled",
          "description": "The model has periodic tuning enabled. Tuning can be disabled by calling the `DisableModelPeriodicTuning` method.",
          "value": "PERIODIC_TUNING_ENABLED"
        }
      ]
    },
    "google-native:retail/v2:ModelTrainingState": {
      "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before.",
      "type": "string",
      "enum": [
        {
          "name": "TrainingStateUnspecified",
          "description": "Unspecified training state.",
          "value": "TRAINING_STATE_UNSPECIFIED"
        },
        {
          "name": "Paused",
          "description": "The model training is paused.",
          "value": "PAUSED"
        },
        {
          "name": "Training",
          "description": "The model is training.",
          "value": "TRAINING"
        }
      ]
    },
    "google-native:retail/v2:ProductAvailability": {
      "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability).",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityUnspecified",
          "description": "Default product availability. Default to Availability.IN_STOCK if unset.",
          "value": "AVAILABILITY_UNSPECIFIED"
        },
        {
          "name": "InStock",
          "description": "Product in stock.",
          "value": "IN_STOCK"
        },
        {
          "name": "OutOfStock",
          "description": "Product out of stock.",
          "value": "OUT_OF_STOCK"
        },
        {
          "name": "Preorder",
          "description": "Product that is in pre-order state.",
          "value": "PREORDER"
        },
        {
          "name": "Backorder",
          "description": "Product that is back-ordered (i.e. temporarily out of stock).",
          "value": "BACKORDER"
        }
      ]
    },
    "google-native:retail/v2:ProductType": {
      "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. Default to Catalog.product_level_config.ingestion_product_type if unset.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "The primary type. As the primary unit for predicting, indexing and search serving, a Type.PRIMARY Product is grouped with multiple Type.VARIANT Products.",
          "value": "PRIMARY"
        },
        {
          "name": "Variant",
          "description": "The variant type. Type.VARIANT Products usually share some common attributes on the same Type.PRIMARY Products, but they have variant attributes like different colors, sizes and prices, etc.",
          "value": "VARIANT"
        },
        {
          "name": "Collection",
          "description": "The collection type. Collection products are bundled Type.PRIMARY Products or Type.VARIANT Products that are sold together, such as a jewelry set with necklaces, earrings and rings, etc.",
          "value": "COLLECTION"
        }
      ]
    },
    "google-native:retail/v2:ServingConfigDiversityType": {
      "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY.",
      "type": "string",
      "enum": [
        {
          "name": "DiversityTypeUnspecified",
          "description": "Default value.",
          "value": "DIVERSITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "RuleBasedDiversity",
          "description": "Rule based diversity.",
          "value": "RULE_BASED_DIVERSITY"
        },
        {
          "name": "DataDrivenDiversity",
          "description": "Data driven diversity.",
          "value": "DATA_DRIVEN_DIVERSITY"
        }
      ]
    },
    "google-native:retail/v2:ServingConfigSolutionTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "SolutionTypeUnspecified",
          "description": "Default value.",
          "value": "SOLUTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SolutionTypeRecommendation",
          "description": "Used for Recommendations AI.",
          "value": "SOLUTION_TYPE_RECOMMENDATION"
        },
        {
          "name": "SolutionTypeSearch",
          "description": "Used for Retail Search.",
          "value": "SOLUTION_TYPE_SEARCH"
        }
      ]
    },
    "google-native:retail/v2alpha:ControlSearchSolutionUseCaseItem": {
      "type": "string",
      "enum": [
        {
          "name": "SearchSolutionUseCaseUnspecified",
          "description": "The value when it's unspecified. In this case, server behavior defaults to SEARCH_SOLUTION_USE_CASE_SEARCH.",
          "value": "SEARCH_SOLUTION_USE_CASE_UNSPECIFIED"
        },
        {
          "name": "SearchSolutionUseCaseSearch",
          "description": "Search use case. Expects the traffic has a non-empty query.",
          "value": "SEARCH_SOLUTION_USE_CASE_SEARCH"
        },
        {
          "name": "SearchSolutionUseCaseBrowse",
          "description": "Browse use case. Expects the traffic has an empty query.",
          "value": "SEARCH_SOLUTION_USE_CASE_BROWSE"
        }
      ]
    },
    "google-native:retail/v2alpha:ControlSolutionTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "SolutionTypeUnspecified",
          "description": "Default value.",
          "value": "SOLUTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SolutionTypeRecommendation",
          "description": "Used for Recommendations AI.",
          "value": "SOLUTION_TYPE_RECOMMENDATION"
        },
        {
          "name": "SolutionTypeSearch",
          "description": "Used for Retail Search.",
          "value": "SOLUTION_TYPE_SEARCH"
        }
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaAudience": {
      "description": "An intended audience of the Product for whom it's sold.",
      "properties": {
        "ageGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The age groups of the audience. Strongly encouraged to use the standard values: \"newborn\" (up to 3 months old), \"infant\" (3–12 months old), \"toddler\" (1–5 years old), \"kids\" (5–13 years old), \"adult\" (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge)."
        },
        "genders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The genders of the audience. Strongly encouraged to use the standard values: \"male\", \"female\", \"unisex\". At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaAudienceResponse": {
      "description": "An intended audience of the Product for whom it's sold.",
      "properties": {
        "ageGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The age groups of the audience. Strongly encouraged to use the standard values: \"newborn\" (up to 3 months old), \"infant\" (3–12 months old), \"toddler\" (1–5 years old), \"kids\" (5–13 years old), \"adult\" (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge)."
        },
        "genders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The genders of the audience. Strongly encouraged to use the standard values: \"male\", \"female\", \"unisex\". At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender)."
        }
      },
      "type": "object",
      "required": [
        "ageGroups",
        "genders"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaColorInfo": {
      "description": "The color information of a Product.",
      "properties": {
        "colorFamilies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The standard color families. Strongly recommended to use the following standard color groups: \"Red\", \"Pink\", \"Orange\", \"Yellow\", \"Purple\", \"Green\", \"Cyan\", \"Blue\", \"Brown\", \"White\", \"Gray\", \"Black\" and \"Mixed\". Normally it is expected to have only 1 color family. May consider using single \"Mixed\" instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single \"Mixed\" instead of multiple values. A maximum of 75 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaColorInfoResponse": {
      "description": "The color information of a Product.",
      "properties": {
        "colorFamilies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The standard color families. Strongly recommended to use the following standard color groups: \"Red\", \"Pink\", \"Orange\", \"Yellow\", \"Purple\", \"Green\", \"Cyan\", \"Blue\", \"Brown\", \"White\", \"Gray\", \"Black\" and \"Mixed\". Normally it is expected to have only 1 color family. May consider using single \"Mixed\" instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single \"Mixed\" instead of multiple values. A maximum of 75 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        }
      },
      "type": "object",
      "required": [
        "colorFamilies",
        "colors"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaCondition": {
      "description": "Metadata that is used to define a condition that triggers an action. A valid condition must specify at least one of 'query_terms' or 'products_filter'. If multiple fields are specified, the condition is met if all the fields are satisfied e.g. if a set of query terms and product_filter are set, then only items matching the product_filter for requests with a query matching the query terms wil get boosted.",
      "properties": {
        "activeTimeRange": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaConditionTimeRange"
          },
          "description": "Range of time(s) specifying when Condition is active. Condition true if any time range matches."
        },
        "pageCategories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Used to support browse uses cases. A list (up to 10 entries) of categories or departments. The format should be the same as UserEvent.page_categories;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaConditionQueryTerm"
          },
          "description": "A list (up to 10 entries) of terms to match the query on. If not specified, match all queries. If many query terms are specified, the condition is matched if any of the terms is a match (i.e. using the OR operator)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaConditionQueryTerm": {
      "description": "Query terms that we want to match on.",
      "properties": {
        "fullMatch": {
          "type": "boolean",
          "description": "Whether this is supposed to be a full or partial match."
        },
        "value": {
          "type": "string",
          "description": "The value of the term to match on. Value cannot be empty. Value can have at most 3 terms if specified as a partial match. Each space separated string is considered as one term. For example, \"a b c\" is 3 terms and allowed, but \" a b c d\" is 4 terms and not allowed for a partial match."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaConditionQueryTermResponse": {
      "description": "Query terms that we want to match on.",
      "properties": {
        "fullMatch": {
          "type": "boolean",
          "description": "Whether this is supposed to be a full or partial match."
        },
        "value": {
          "type": "string",
          "description": "The value of the term to match on. Value cannot be empty. Value can have at most 3 terms if specified as a partial match. Each space separated string is considered as one term. For example, \"a b c\" is 3 terms and allowed, but \" a b c d\" is 4 terms and not allowed for a partial match."
        }
      },
      "type": "object",
      "required": [
        "fullMatch",
        "value"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaConditionResponse": {
      "description": "Metadata that is used to define a condition that triggers an action. A valid condition must specify at least one of 'query_terms' or 'products_filter'. If multiple fields are specified, the condition is met if all the fields are satisfied e.g. if a set of query terms and product_filter are set, then only items matching the product_filter for requests with a query matching the query terms wil get boosted.",
      "properties": {
        "activeTimeRange": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaConditionTimeRangeResponse"
          },
          "description": "Range of time(s) specifying when Condition is active. Condition true if any time range matches."
        },
        "pageCategories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Used to support browse uses cases. A list (up to 10 entries) of categories or departments. The format should be the same as UserEvent.page_categories;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaConditionQueryTermResponse"
          },
          "description": "A list (up to 10 entries) of terms to match the query on. If not specified, match all queries. If many query terms are specified, the condition is matched if any of the terms is a match (i.e. using the OR operator)."
        }
      },
      "type": "object",
      "required": [
        "activeTimeRange",
        "pageCategories",
        "queryTerms"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaConditionTimeRange": {
      "description": "Used for time-dependent conditions. Example: Want to have rule applied for week long sale.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "End of time range. Range is inclusive."
        },
        "startTime": {
          "type": "string",
          "description": "Start of time range. Range is inclusive."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaConditionTimeRangeResponse": {
      "description": "Used for time-dependent conditions. Example: Want to have rule applied for week long sale.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "End of time range. Range is inclusive."
        },
        "startTime": {
          "type": "string",
          "description": "Start of time range. Range is inclusive."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "startTime"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaFulfillmentInfo": {
      "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.",
      "properties": {
        "placeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 3000 values are allowed. Each value must be a string with a length limit of 30 characters, matching the pattern `[a-zA-Z0-9_-]+`, such as \"store1\" or \"REGION-2\". Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "type": {
          "type": "string",
          "description": "The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaFulfillmentInfoResponse": {
      "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.",
      "properties": {
        "placeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 3000 values are allowed. Each value must be a string with a length limit of 30 characters, matching the pattern `[a-zA-Z0-9_-]+`, such as \"store1\" or \"REGION-2\". Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "type": {
          "type": "string",
          "description": "The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "placeIds",
        "type"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaImage": {
      "description": "Product image. Recommendations AI and Retail Search do not use product images to improve prediction and search results. However, product images can be returned in results, and are shown in prediction or search previews in the console.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "uri": {
          "type": "string",
          "description": "URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "width": {
          "type": "integer",
          "description": "Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaImageResponse": {
      "description": "Product image. Recommendations AI and Retail Search do not use product images to improve prediction and search results. However, product images can be returned in results, and are shown in prediction or search previews in the console.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "uri": {
          "type": "string",
          "description": "URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "width": {
          "type": "integer",
          "description": "Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "height",
        "uri",
        "width"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaInterval": {
      "description": "A floating point interval.",
      "properties": {
        "exclusiveMaximum": {
          "type": "number",
          "description": "Exclusive upper bound."
        },
        "exclusiveMinimum": {
          "type": "number",
          "description": "Exclusive lower bound."
        },
        "maximum": {
          "type": "number",
          "description": "Inclusive upper bound."
        },
        "minimum": {
          "type": "number",
          "description": "Inclusive lower bound."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaIntervalResponse": {
      "description": "A floating point interval.",
      "properties": {
        "exclusiveMaximum": {
          "type": "number",
          "description": "Exclusive upper bound."
        },
        "exclusiveMinimum": {
          "type": "number",
          "description": "Exclusive lower bound."
        },
        "maximum": {
          "type": "number",
          "description": "Inclusive upper bound."
        },
        "minimum": {
          "type": "number",
          "description": "Inclusive lower bound."
        }
      },
      "type": "object",
      "required": [
        "exclusiveMaximum",
        "exclusiveMinimum",
        "maximum",
        "minimum"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaLocalInventoryResponse": {
      "description": "The inventory information at a place (e.g. a store) identified by a place ID.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional local inventory attributes, for example, store name, promotion tags, etc. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * At most 30 attributes are allowed. * The key must be a UTF-8 encoded string with a length limit of 32 characters. * The key must match the pattern: `a-zA-Z0-9*`. For example, key0LikeThis or KEY_1_LIKE_THIS. * The attribute values must be of the same type (text or number). * Only 1 value is allowed for each attribute. * For text values, the length limit is 256 UTF-8 characters. * The attribute does not support search. The `searchable` field should be unset or set to false. * The max summed total bytes of custom attribute keys and values per product is 5MiB."
        },
        "fulfillmentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Input only. Supported fulfillment types. Valid fulfillment type values include commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. All the elements must be distinct. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "placeId": {
          "type": "string",
          "description": "The place ID for the current set of inventory information."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPriceInfoResponse",
          "description": "Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "fulfillmentTypes",
        "placeId",
        "priceInfo"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelFrequentlyBoughtTogetherFeaturesConfig": {
      "description": "Additional configs for the frequently-bought-together model type.",
      "properties": {
        "contextProductsType": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelFrequentlyBoughtTogetherFeaturesConfigContextProductsType",
          "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelFrequentlyBoughtTogetherFeaturesConfigContextProductsType": {
      "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS.",
      "type": "string",
      "enum": [
        {
          "name": "ContextProductsTypeUnspecified",
          "description": "Unspecified default value, should never be explicitly set. Defaults to MULTIPLE_CONTEXT_PRODUCTS.",
          "value": "CONTEXT_PRODUCTS_TYPE_UNSPECIFIED"
        },
        {
          "name": "SingleContextProduct",
          "description": "Use only a single product as context for the recommendation. Typically used on pages like add-to-cart or product details.",
          "value": "SINGLE_CONTEXT_PRODUCT"
        },
        {
          "name": "MultipleContextProducts",
          "description": "Use one or multiple products as context for the recommendation. Typically used on shopping cart pages.",
          "value": "MULTIPLE_CONTEXT_PRODUCTS"
        }
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelFrequentlyBoughtTogetherFeaturesConfigResponse": {
      "description": "Additional configs for the frequently-bought-together model type.",
      "properties": {
        "contextProductsType": {
          "type": "string",
          "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS."
        }
      },
      "type": "object",
      "required": [
        "contextProductsType"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelModelFeaturesConfig": {
      "description": "Additional model features config.",
      "properties": {
        "frequentlyBoughtTogetherConfig": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelFrequentlyBoughtTogetherFeaturesConfig",
          "description": "Additional configs for frequently-bought-together models."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelModelFeaturesConfigResponse": {
      "description": "Additional model features config.",
      "properties": {
        "frequentlyBoughtTogetherConfig": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelFrequentlyBoughtTogetherFeaturesConfigResponse",
          "description": "Additional configs for frequently-bought-together models."
        }
      },
      "type": "object",
      "required": [
        "frequentlyBoughtTogetherConfig"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfig": {
      "description": "The PageOptimizationConfig for model training. This determines how many panels to optimize for, and which serving configs to consider for each panel. The purpose of this model is to optimize which ServingConfig to show on which panels in way that optimizes the visitors shopping journey.",
      "properties": {
        "pageOptimizationEventType": {
          "type": "string",
          "description": "The type of UserEvent this page optimization is shown for. Each page has an associated event type - this will be the corresponding event type for the page that the page optimization model is used on. Supported types: * `add-to-cart`: Products being added to cart. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed * `category-page-view`: Homepage viewed * `shopping-cart-page-view`: User viewing a shopping cart. `home-page-view` only allows models with type `recommended-for-you`. All other page_optimization_event_type allow all Model.types."
        },
        "panels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigPanel"
          },
          "description": "A list of panel configurations. Limit = 5."
        },
        "restriction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigRestriction",
          "description": "Optional. How to restrict results across panels e.g. can the same ServingConfig be shown on multiple panels at once. If unspecified, default to `UNIQUE_MODEL_RESTRICTION`."
        }
      },
      "type": "object",
      "required": [
        "pageOptimizationEventType",
        "panels"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigCandidate": {
      "description": "A candidate to consider for a given panel. Currently only ServingConfig are valid candidates.",
      "properties": {
        "servingConfigId": {
          "type": "string",
          "description": "This has to be a valid ServingConfig identifier. For example, for a ServingConfig with full name: `projects/*/locations/global/catalogs/default_catalog/servingConfigs/my_candidate_config`, this would be `my_candidate_config`."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigCandidateResponse": {
      "description": "A candidate to consider for a given panel. Currently only ServingConfig are valid candidates.",
      "properties": {
        "servingConfigId": {
          "type": "string",
          "description": "This has to be a valid ServingConfig identifier. For example, for a ServingConfig with full name: `projects/*/locations/global/catalogs/default_catalog/servingConfigs/my_candidate_config`, this would be `my_candidate_config`."
        }
      },
      "type": "object",
      "required": [
        "servingConfigId"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigPanel": {
      "description": "An individual panel with a list of ServingConfigs to consider for it.",
      "properties": {
        "candidates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigCandidate"
          },
          "description": "The candidates to consider on the panel."
        },
        "defaultCandidate": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigCandidate",
          "description": "The default candidate. If the model fails at serving time, we fall back to the default."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The name to display for the panel."
        }
      },
      "type": "object",
      "required": [
        "candidates",
        "defaultCandidate"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigPanelResponse": {
      "description": "An individual panel with a list of ServingConfigs to consider for it.",
      "properties": {
        "candidates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigCandidateResponse"
          },
          "description": "The candidates to consider on the panel."
        },
        "defaultCandidate": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigCandidateResponse",
          "description": "The default candidate. If the model fails at serving time, we fall back to the default."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The name to display for the panel."
        }
      },
      "type": "object",
      "required": [
        "candidates",
        "defaultCandidate",
        "displayName"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigResponse": {
      "description": "The PageOptimizationConfig for model training. This determines how many panels to optimize for, and which serving configs to consider for each panel. The purpose of this model is to optimize which ServingConfig to show on which panels in way that optimizes the visitors shopping journey.",
      "properties": {
        "pageOptimizationEventType": {
          "type": "string",
          "description": "The type of UserEvent this page optimization is shown for. Each page has an associated event type - this will be the corresponding event type for the page that the page optimization model is used on. Supported types: * `add-to-cart`: Products being added to cart. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed * `category-page-view`: Homepage viewed * `shopping-cart-page-view`: User viewing a shopping cart. `home-page-view` only allows models with type `recommended-for-you`. All other page_optimization_event_type allow all Model.types."
        },
        "panels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigPanelResponse"
          },
          "description": "A list of panel configurations. Limit = 5."
        },
        "restriction": {
          "type": "string",
          "description": "Optional. How to restrict results across panels e.g. can the same ServingConfig be shown on multiple panels at once. If unspecified, default to `UNIQUE_MODEL_RESTRICTION`."
        }
      },
      "type": "object",
      "required": [
        "pageOptimizationEventType",
        "panels",
        "restriction"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigRestriction": {
      "description": "Optional. How to restrict results across panels e.g. can the same ServingConfig be shown on multiple panels at once. If unspecified, default to `UNIQUE_MODEL_RESTRICTION`.",
      "type": "string",
      "enum": [
        {
          "name": "RestrictionUnspecified",
          "description": "Unspecified value for restriction.",
          "value": "RESTRICTION_UNSPECIFIED"
        },
        {
          "name": "NoRestriction",
          "description": "Allow any ServingConfig to be show on any number of panels. Example: `Panel1 candidates`: pdp_ctr, pdp_cvr, home_page_ctr_no_diversity `Panel2 candidates`: home_page_ctr_no_diversity, home_page_ctr_diversity, pdp_cvr_no_diversity `Restriction` = NO_RESTRICTION `Valid combinations`: * * (pdp_ctr, home_page_ctr_no_diversity) * (pdp_ctr, home_page_ctr_diversity) * (pdp_ctr, pdp_cvr_no_diversity) * (pdp_cvr, home_page_ctr_no_diversity) * (pdp_cvr, home_page_ctr_diversity) * (pdp_cvr, pdp_cvr_no_diversity) * (home_page_ctr_no_diversity, home_page_ctr_no_diversity) * (home_page_ctr_no_diversity, home_page_ctr_diversity) * (home_page_ctr_no_diversity, pdp_cvr_no_diversity) * `Invalid combinations`: []",
          "value": "NO_RESTRICTION"
        },
        {
          "name": "UniqueServingConfigRestriction",
          "description": "Do not allow the same ServingConfig.name to be shown on multiple panels. Example: `Panel1 candidates`: * pdp_ctr, pdp_cvr, home_page_ctr_no_diversity * `Panel2 candidates`: * home_page_ctr_no_diversity, home_page_ctr_diversity_low, pdp_cvr_no_diversity * `Restriction` = `UNIQUE_SERVING_CONFIG_RESTRICTION` `Valid combinations`: * * (pdp_ctr, home_page_ctr_no_diversity) * (pdp_ctr, home_page_ctr_diversity_low) * (pdp_ctr, pdp_cvr_no_diversity) * (pdp_ctr, pdp_cvr_no_diversity) * (pdp_cvr, home_page_ctr_no_diversity) * (pdp_cvr, home_page_ctr_diversity_low) * (pdp_cvr, pdp_cvr_no_diversity) * (home_page_ctr_no_diversity, home_page_ctr_diversity_low) * (home_page_ctr_no_diversity, pdp_cvr_no_diversity) * `Invalid combinations`: * * (home_page_ctr_no_diversity, home_page_ctr_no_diversity) *",
          "value": "UNIQUE_SERVING_CONFIG_RESTRICTION"
        },
        {
          "name": "UniqueModelRestriction",
          "description": "Do not allow multiple ServingConfigs with same Model.name to be show on on different panels. Example: `Panel1 candidates`: * pdp_ctr, pdp_cvr, home_page_ctr_no_diversity * `Panel2 candidates`: * home_page_ctr_no_diversity, home_page_ctr_diversity_low, pdp_cvr_no_diversity * `Restriction` = `UNIQUE_MODEL_RESTRICTION` `Valid combinations`: * * (pdp_ctr, home_page_ctr_no_diversity) * (pdp_ctr, home_page_ctr_diversity) * (pdp_ctr, pdp_cvr_no_diversity) * (pdp_ctr, pdp_cvr_no_diversity) * (pdp_cvr, home_page_ctr_no_diversity) * (pdp_cvr, home_page_ctr_diversity_low) * (home_page_ctr_no_diversity, pdp_cvr_no_diversity) * `Invalid combinations`: * * (home_page_ctr_no_diversity, home_page_ctr_no_diversity) * (pdp_cvr, pdp_cvr_no_diversity) *",
          "value": "UNIQUE_MODEL_RESTRICTION"
        },
        {
          "name": "UniqueModelTypeRestriction",
          "description": "Do not allow multiple ServingConfigs with same Model.type to be shown on different panels. Example: `Panel1 candidates`: * pdp_ctr, pdp_cvr, home_page_ctr_no_diversity * `Panel2 candidates`: * home_page_ctr_no_diversity, home_page_ctr_diversity_low, pdp_cvr_no_diversity * `Restriction` = `UNIQUE_MODEL_RESTRICTION` `Valid combinations`: * * (pdp_ctr, home_page_ctr_no_diversity) * (pdp_ctr, home_page_ctr_diversity) * (pdp_cvr, home_page_ctr_no_diversity) * (pdp_cvr, home_page_ctr_diversity_low) * (home_page_ctr_no_diversity, pdp_cvr_no_diversity) * `Invalid combinations`: * * (pdp_ctr, pdp_cvr_no_diversity) * (pdp_ctr, pdp_cvr_no_diversity) * (pdp_cvr, pdp_cvr_no_diversity) * (home_page_ctr_no_diversity, home_page_ctr_no_diversity) * (home_page_ctr_no_diversity, home_page_ctr_diversity) *",
          "value": "UNIQUE_MODEL_TYPE_RESTRICTION"
        }
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaModelServingConfigListResponse": {
      "description": "Represents an ordered combination of valid serving configs, which can be used for `PAGE_OPTIMIZATION` recommendations.",
      "properties": {
        "servingConfigIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of valid serving configs that may be used for `PAGE_OPTIMIZATION`."
        }
      },
      "type": "object",
      "required": [
        "servingConfigIds"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaPriceInfo": {
      "description": "The price information of a Product.",
      "properties": {
        "cost": {
          "type": "number",
          "description": "The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895)."
        },
        "currencyCode": {
          "type": "string",
          "description": "The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned."
        },
        "originalPrice": {
          "type": "number",
          "description": "Price of the product without any discount. If zero, by default set to be the price. If set, original_price should be greater than or equal to price, otherwise an INVALID_ARGUMENT error is thrown."
        },
        "price": {
          "type": "number",
          "description": "Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.price](https://schema.org/price)."
        },
        "priceEffectiveTime": {
          "type": "string",
          "description": "The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceExpireTime": {
          "type": "string",
          "description": "The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaPriceInfoPriceRangeResponse": {
      "description": "The price range of all variant Product having the same Product.primary_product_id.",
      "properties": {
        "originalPrice": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaIntervalResponse",
          "description": "The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id."
        },
        "price": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaIntervalResponse",
          "description": "The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id."
        }
      },
      "type": "object",
      "required": [
        "originalPrice",
        "price"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaPriceInfoResponse": {
      "description": "The price information of a Product.",
      "properties": {
        "cost": {
          "type": "number",
          "description": "The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895)."
        },
        "currencyCode": {
          "type": "string",
          "description": "The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned."
        },
        "originalPrice": {
          "type": "number",
          "description": "Price of the product without any discount. If zero, by default set to be the price. If set, original_price should be greater than or equal to price, otherwise an INVALID_ARGUMENT error is thrown."
        },
        "price": {
          "type": "number",
          "description": "Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.price](https://schema.org/price)."
        },
        "priceEffectiveTime": {
          "type": "string",
          "description": "The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceExpireTime": {
          "type": "string",
          "description": "The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceRange": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPriceInfoPriceRangeResponse",
          "description": "The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "cost",
        "currencyCode",
        "originalPrice",
        "price",
        "priceEffectiveTime",
        "priceExpireTime",
        "priceRange"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaProductResponse": {
      "description": "Product captures all metadata information of items to be recommended or searched.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaAudienceResponse",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "type": "string",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaColorInfoResponse",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaFulfillmentInfoResponse"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaImageResponse"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "localInventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaLocalInventoryResponse"
          },
          "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPriceInfoResponse",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPromotionResponse"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRatingResponse",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        },
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaProductResponse"
          },
          "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "audience",
        "availability",
        "availableQuantity",
        "availableTime",
        "brands",
        "categories",
        "collectionMemberIds",
        "colorInfo",
        "conditions",
        "description",
        "expireTime",
        "fulfillmentInfo",
        "gtin",
        "images",
        "languageCode",
        "localInventories",
        "materials",
        "name",
        "patterns",
        "priceInfo",
        "primaryProductId",
        "promotions",
        "publishTime",
        "rating",
        "retrievableFields",
        "sizes",
        "tags",
        "title",
        "ttl",
        "type",
        "uri",
        "variants"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaPromotion": {
      "description": "Promotion specification.",
      "properties": {
        "promotionId": {
          "type": "string",
          "description": "Promotion identifier, which is the final component of name. For example, this field is \"free_gift\", if name is `projects/*/locations/global/catalogs/default_catalog/promotions/free_gift`. The value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: `a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Corresponds to Google Merchant Center property [promotion_id](https://support.google.com/merchants/answer/7050148)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaPromotionResponse": {
      "description": "Promotion specification.",
      "properties": {
        "promotionId": {
          "type": "string",
          "description": "Promotion identifier, which is the final component of name. For example, this field is \"free_gift\", if name is `projects/*/locations/global/catalogs/default_catalog/promotions/free_gift`. The value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: `a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Corresponds to Google Merchant Center property [promotion_id](https://support.google.com/merchants/answer/7050148)."
        }
      },
      "type": "object",
      "required": [
        "promotionId"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRating": {
      "description": "The rating of a Product.",
      "properties": {
        "averageRating": {
          "type": "number",
          "description": "The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingCount": {
          "type": "integer",
          "description": "The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingHistogram": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRatingResponse": {
      "description": "The rating of a Product.",
      "properties": {
        "averageRating": {
          "type": "number",
          "description": "The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingCount": {
          "type": "integer",
          "description": "The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingHistogram": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on."
        }
      },
      "type": "object",
      "required": [
        "averageRating",
        "ratingCount",
        "ratingHistogram"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRule": {
      "description": "A rule is a condition-action pair * A condition defines when a rule is to be triggered. * An action specifies what occurs on that trigger. Currently rules only work for controls with SOLUTION_TYPE_SEARCH.",
      "properties": {
        "boostAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleBoostAction",
          "description": "A boost action."
        },
        "condition": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaCondition",
          "description": "The condition that triggers the rule. If the condition is empty, the rule will always apply."
        },
        "doNotAssociateAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleDoNotAssociateAction",
          "description": "Prevents term from being associated with other terms."
        },
        "filterAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleFilterAction",
          "description": "Filters results."
        },
        "forceReturnFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleForceReturnFacetAction",
          "description": "Force returns an attribute as a facet in the request."
        },
        "ignoreAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleIgnoreAction",
          "description": "Ignores specific terms from query during search."
        },
        "onewaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleOnewaySynonymsAction",
          "description": "Treats specific term as a synonym with a group of terms. Group of terms will not be treated as synonyms with the specific term."
        },
        "redirectAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleRedirectAction",
          "description": "Redirects a shopper to a specific page."
        },
        "removeFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleRemoveFacetAction",
          "description": "Remove an attribute as a facet in the request (if present)."
        },
        "replacementAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleReplacementAction",
          "description": "Replaces specific terms in the query."
        },
        "twowaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleTwowaySynonymsAction",
          "description": "Treats a set of terms as synonyms of one another."
        }
      },
      "type": "object",
      "required": [
        "condition"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleBoostAction": {
      "description": "A boost action to apply to results matching condition specified above.",
      "properties": {
        "boost": {
          "type": "number",
          "description": "Strength of the condition boost, which must be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored."
        },
        "productsFilter": {
          "type": "string",
          "description": "The filter can have a max size of 5000 characters. An expression which specifies which products to apply an action to. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleBoostActionResponse": {
      "description": "A boost action to apply to results matching condition specified above.",
      "properties": {
        "boost": {
          "type": "number",
          "description": "Strength of the condition boost, which must be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored."
        },
        "productsFilter": {
          "type": "string",
          "description": "The filter can have a max size of 5000 characters. An expression which specifies which products to apply an action to. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object",
      "required": [
        "boost",
        "productsFilter"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleDoNotAssociateAction": {
      "description": "Prevents `query_term` from being associated with specified terms during search. Example: Don't associate \"gShoe\" and \"cheap\".",
      "properties": {
        "doNotAssociateTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cannot contain duplicates or the query term. Can specify up to 100 terms."
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will not consider do_not_associate_terms for search if in search query. Can specify up to 100 terms."
        },
        "terms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleDoNotAssociateActionResponse": {
      "description": "Prevents `query_term` from being associated with specified terms during search. Example: Don't associate \"gShoe\" and \"cheap\".",
      "properties": {
        "doNotAssociateTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cannot contain duplicates or the query term. Can specify up to 100 terms."
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will not consider do_not_associate_terms for search if in search query. Can specify up to 100 terms."
        },
        "terms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object",
      "required": [
        "doNotAssociateTerms",
        "queryTerms",
        "terms"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleFilterAction": {
      "description": "* Rule Condition: - No Condition.query_terms provided is a global match. - 1 or more Condition.query_terms provided are combined with OR operator. * Action Input: The request query and filter that are applied to the retrieved products, in addition to any filters already provided with the SearchRequest. The AND operator is used to combine the query's existing filters with the filter rule(s). NOTE: May result in 0 results when filters conflict. * Action Result: Filters the returned objects to be ONLY those that passed the filter.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter to apply on the matching condition results. Supported features: * filter must be set. * Filter syntax is identical to SearchRequest.filter. For more information, see [Filter](/retail/docs/filter-and-order#filter). * To filter products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleFilterActionResponse": {
      "description": "* Rule Condition: - No Condition.query_terms provided is a global match. - 1 or more Condition.query_terms provided are combined with OR operator. * Action Input: The request query and filter that are applied to the retrieved products, in addition to any filters already provided with the SearchRequest. The AND operator is used to combine the query's existing filters with the filter rule(s). NOTE: May result in 0 results when filters conflict. * Action Result: Filters the returned objects to be ONLY those that passed the filter.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter to apply on the matching condition results. Supported features: * filter must be set. * Filter syntax is identical to SearchRequest.filter. For more information, see [Filter](/retail/docs/filter-and-order#filter). * To filter products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleForceReturnFacetAction": {
      "description": "Force returns an attribute/facet in the request around a certain position or above. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Inputs: attribute name, position * Action Result: Will force return a facet key around a certain position or above if the condition is satisfied. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\", the ForceReturnFacetAction.FacetPositionAdjustment.attribute_name is \"size\" and the ForceReturnFacetAction.FacetPositionAdjustment.position is 8. Two cases: a) The facet key \"size\" is not already in the top 8 slots, then the facet \"size\" will appear at a position close to 8. b) The facet key \"size\" in among the top 8 positions in the request, then it will stay at its current rank.",
      "properties": {
        "facetPositionAdjustments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleForceReturnFacetActionFacetPositionAdjustment"
          },
          "description": "Each instance corresponds to a force return attribute for the given condition. There can't be more 3 instances here."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleForceReturnFacetActionFacetPositionAdjustment": {
      "description": "Each facet position adjustment consists of a single attribute name (i.e. facet key) along with a specified position.",
      "properties": {
        "attributeName": {
          "type": "string",
          "description": "The attribute name to force return as a facet. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters long."
        },
        "position": {
          "type": "integer",
          "description": "This is the position in the request as explained above. It should be strictly positive be at most 100."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleForceReturnFacetActionFacetPositionAdjustmentResponse": {
      "description": "Each facet position adjustment consists of a single attribute name (i.e. facet key) along with a specified position.",
      "properties": {
        "attributeName": {
          "type": "string",
          "description": "The attribute name to force return as a facet. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters long."
        },
        "position": {
          "type": "integer",
          "description": "This is the position in the request as explained above. It should be strictly positive be at most 100."
        }
      },
      "type": "object",
      "required": [
        "attributeName",
        "position"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleForceReturnFacetActionResponse": {
      "description": "Force returns an attribute/facet in the request around a certain position or above. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Inputs: attribute name, position * Action Result: Will force return a facet key around a certain position or above if the condition is satisfied. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\", the ForceReturnFacetAction.FacetPositionAdjustment.attribute_name is \"size\" and the ForceReturnFacetAction.FacetPositionAdjustment.position is 8. Two cases: a) The facet key \"size\" is not already in the top 8 slots, then the facet \"size\" will appear at a position close to 8. b) The facet key \"size\" in among the top 8 positions in the request, then it will stay at its current rank.",
      "properties": {
        "facetPositionAdjustments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleForceReturnFacetActionFacetPositionAdjustmentResponse"
          },
          "description": "Each instance corresponds to a force return attribute for the given condition. There can't be more 3 instances here."
        }
      },
      "type": "object",
      "required": [
        "facetPositionAdjustments"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleIgnoreAction": {
      "description": "Prevents a term in the query from being used in search. Example: Don't search for \"shoddy\".",
      "properties": {
        "ignoreTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms to ignore in the search query."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleIgnoreActionResponse": {
      "description": "Prevents a term in the query from being used in search. Example: Don't search for \"shoddy\".",
      "properties": {
        "ignoreTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms to ignore in the search query."
        }
      },
      "type": "object",
      "required": [
        "ignoreTerms"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleOnewaySynonymsAction": {
      "description": "Maps a set of terms to a set of synonyms. Set of synonyms will be treated as synonyms of each query term only. `query_terms` will not be treated as synonyms of each other. Example: \"sneakers\" will use a synonym of \"shoes\". \"shoes\" will not use a synonym of \"sneakers\".",
      "properties": {
        "onewayTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will treat synonyms as their synonyms. Not themselves synonyms of the synonyms. Can specify up to 100 terms."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100 synonyms."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleOnewaySynonymsActionResponse": {
      "description": "Maps a set of terms to a set of synonyms. Set of synonyms will be treated as synonyms of each query term only. `query_terms` will not be treated as synonyms of each other. Example: \"sneakers\" will use a synonym of \"shoes\". \"shoes\" will not use a synonym of \"sneakers\".",
      "properties": {
        "onewayTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will treat synonyms as their synonyms. Not themselves synonyms of the synonyms. Can specify up to 100 terms."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100 synonyms."
        }
      },
      "type": "object",
      "required": [
        "onewayTerms",
        "queryTerms",
        "synonyms"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleRedirectAction": {
      "description": "Redirects a shopper to a specific page. * Rule Condition: Must specify Condition.query_terms. * Action Input: Request Query * Action Result: Redirects shopper to provided uri.",
      "properties": {
        "redirectUri": {
          "type": "string",
          "description": "URL must have length equal or less than 2000 characters."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleRedirectActionResponse": {
      "description": "Redirects a shopper to a specific page. * Rule Condition: Must specify Condition.query_terms. * Action Input: Request Query * Action Result: Redirects shopper to provided uri.",
      "properties": {
        "redirectUri": {
          "type": "string",
          "description": "URL must have length equal or less than 2000 characters."
        }
      },
      "type": "object",
      "required": [
        "redirectUri"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleRemoveFacetAction": {
      "description": "Removes an attribute/facet in the request if is present. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Input: attribute name * Action Result: Will remove the attribute (as a facet) from the request if it is present. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\" and the attribute name \"size\", then facet key \"size\" will be removed from the request (if it is present).",
      "properties": {
        "attributeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The attribute names (i.e. facet keys) to remove from the dynamic facets (if present in the request). There can't be more 3 attribute names. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleRemoveFacetActionResponse": {
      "description": "Removes an attribute/facet in the request if is present. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Input: attribute name * Action Result: Will remove the attribute (as a facet) from the request if it is present. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\" and the attribute name \"size\", then facet key \"size\" will be removed from the request (if it is present).",
      "properties": {
        "attributeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The attribute names (i.e. facet keys) to remove from the dynamic facets (if present in the request). There can't be more 3 attribute names. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters."
        }
      },
      "type": "object",
      "required": [
        "attributeNames"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleReplacementAction": {
      "description": "Replaces a term in the query. Multiple replacement candidates can be specified. All `query_terms` will be replaced with the replacement term. Example: Replace \"gShoe\" with \"google shoe\".",
      "properties": {
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will be replaced by replacement term. Can specify up to 100 terms."
        },
        "replacementTerm": {
          "type": "string",
          "description": "Term that will be used for replacement."
        },
        "term": {
          "type": "string",
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleReplacementActionResponse": {
      "description": "Replaces a term in the query. Multiple replacement candidates can be specified. All `query_terms` will be replaced with the replacement term. Example: Replace \"gShoe\" with \"google shoe\".",
      "properties": {
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will be replaced by replacement term. Can specify up to 100 terms."
        },
        "replacementTerm": {
          "type": "string",
          "description": "Term that will be used for replacement."
        },
        "term": {
          "type": "string",
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object",
      "required": [
        "queryTerms",
        "replacementTerm",
        "term"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleResponse": {
      "description": "A rule is a condition-action pair * A condition defines when a rule is to be triggered. * An action specifies what occurs on that trigger. Currently rules only work for controls with SOLUTION_TYPE_SEARCH.",
      "properties": {
        "boostAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleBoostActionResponse",
          "description": "A boost action."
        },
        "condition": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaConditionResponse",
          "description": "The condition that triggers the rule. If the condition is empty, the rule will always apply."
        },
        "doNotAssociateAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleDoNotAssociateActionResponse",
          "description": "Prevents term from being associated with other terms."
        },
        "filterAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleFilterActionResponse",
          "description": "Filters results."
        },
        "forceReturnFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleForceReturnFacetActionResponse",
          "description": "Force returns an attribute as a facet in the request."
        },
        "ignoreAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleIgnoreActionResponse",
          "description": "Ignores specific terms from query during search."
        },
        "onewaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleOnewaySynonymsActionResponse",
          "description": "Treats specific term as a synonym with a group of terms. Group of terms will not be treated as synonyms with the specific term."
        },
        "redirectAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleRedirectActionResponse",
          "description": "Redirects a shopper to a specific page."
        },
        "removeFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleRemoveFacetActionResponse",
          "description": "Remove an attribute as a facet in the request (if present)."
        },
        "replacementAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleReplacementActionResponse",
          "description": "Replaces specific terms in the query."
        },
        "twowaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleTwowaySynonymsActionResponse",
          "description": "Treats a set of terms as synonyms of one another."
        }
      },
      "type": "object",
      "required": [
        "boostAction",
        "condition",
        "doNotAssociateAction",
        "filterAction",
        "forceReturnFacetAction",
        "ignoreAction",
        "onewaySynonymsAction",
        "redirectAction",
        "removeFacetAction",
        "replacementAction",
        "twowaySynonymsAction"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleTwowaySynonymsAction": {
      "description": "Creates a set of terms that will be treated as synonyms of each other. Example: synonyms of \"sneakers\" and \"shoes\": * \"sneakers\" will use a synonym of \"shoes\". * \"shoes\" will use a synonym of \"sneakers\".",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at least 2 synonyms."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaRuleTwowaySynonymsActionResponse": {
      "description": "Creates a set of terms that will be treated as synonyms of each other. Example: synonyms of \"sneakers\" and \"shoes\": * \"sneakers\" will use a synonym of \"shoes\". * \"shoes\" will use a synonym of \"sneakers\".",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at least 2 synonyms."
        }
      },
      "type": "object",
      "required": [
        "synonyms"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpec": {
      "description": "The specifications of dynamically generated facets.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpecMode",
          "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpecMode": {
      "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable Dynamic Facet.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "Automatic mode built by Google Retail Search.",
          "value": "ENABLED"
        }
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpecResponse": {
      "description": "The specifications of dynamically generated facets.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpec": {
      "description": "A facet specification to perform faceted search.",
      "properties": {
        "enableDynamicPosition": {
          "type": "boolean",
          "description": "Enables dynamic position for this facet. If set to true, the position of this facet among all facets in the response is determined by Google Retail Search. It is ordered together with dynamic facets if dynamic facets is enabled. If set to false, the position of this facet in the response is the same as in the request, and it is ranked before the facets with dynamic position enable and all dynamic facets. For example, you may always want to have rating facet returned in the response, but it's not necessarily to always display the rating facet at the top. In that case, you can set enable_dynamic_position to true so that the position of rating facet in response is determined by Google Retail Search. Another example, assuming you have the following facets in the request: * \"rating\", enable_dynamic_position = true * \"price\", enable_dynamic_position = false * \"brands\", enable_dynamic_position = false And also you have a dynamic facets enable, which generates a facet \"gender\". Then, the final order of the facets in the response can be (\"price\", \"brands\", \"rating\", \"gender\") or (\"price\", \"brands\", \"gender\", \"rating\") depends on how Google Retail Search orders \"gender\" and \"rating\" facets. However, notice that \"price\" and \"brands\" are always ranked at first and second position because their enable_dynamic_position values are false."
        },
        "excludedFilterKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of keys to exclude when faceting. By default, FacetKey.key is not excluded from the filter unless it is listed in this field. Listing a facet key in this field allows its values to appear as facet results, even when they are filtered out of search results. Using this field does not affect what search results are returned. For example, suppose there are 100 products with the color facet \"Red\" and 200 products with the color facet \"Blue\". A query containing the filter \"colorFamilies:ANY(\"Red\")\" and having \"colorFamilies\" as FacetKey.key would by default return only \"Red\" products in the search results, and also return \"Red\" with count 100 as the only color facet. Although there are also blue products available, \"Blue\" would not be shown as an available facet value. If \"colorFamilies\" is listed in \"excludedFilterKeys\", then the query returns the facet values \"Red\" with count 100 and \"Blue\" with count 200, because the \"colorFamilies\" key is now excluded from the filter. Because this field doesn't affect search results, the search results are still correctly filtered to return only \"Red\" products. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "facetKey": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpecFacetKey",
          "description": "The facet key specification."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum of facet values that should be returned for this facet. If unspecified, defaults to 50. The maximum allowed value is 300. Values above 300 will be coerced to 300. If this field is negative, an INVALID_ARGUMENT is returned."
        }
      },
      "type": "object",
      "required": [
        "facetKey"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpecFacetKey": {
      "description": "Specifies how a facet is computed.",
      "properties": {
        "caseInsensitive": {
          "type": "boolean",
          "description": "True to make facet keys case insensitive when getting faceting values with prefixes or contains; false otherwise."
        },
        "contains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet values that contains the given strings. For example, suppose \"categories\" has three values \"Women > Shoe\", \"Women > Dress\" and \"Men > Shoe\". If set \"contains\" to \"Shoe\", the \"categories\" facet gives only \"Women > Shoe\" and \"Men > Shoe\". Only supported on textual fields. Maximum is 10."
        },
        "intervals": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaInterval"
          },
          "description": "Set only if values should be bucketized into intervals. Must be set for facets with numerical values. Must not be set for facet with text values. Maximum number of intervals is 40. For all numerical facet keys that appear in the list of products from the catalog, the percentiles 0, 10, 30, 50, 70, 90, and 100 are computed from their distribution weekly. If the model assigns a high score to a numerical facet key and its intervals are not specified in the search request, these percentiles become the bounds for its intervals and are returned in the response. If the facet key intervals are specified in the request, then the specified intervals are returned instead."
        },
        "key": {
          "type": "string",
          "description": "Supported textual and numerical facet keys in Product object, over which the facet values are computed. Facet key is case-sensitive. Allowed facet keys when FacetKey.query is not specified: * textual_field = * \"brands\" * \"categories\" * \"genders\" * \"ageGroups\" * \"availability\" * \"colorFamilies\" * \"colors\" * \"sizes\" * \"materials\" * \"patterns\" * \"conditions\" * \"attributes.key\" * \"pickupInStore\" * \"shipToStore\" * \"sameDayDelivery\" * \"nextDayDelivery\" * \"customFulfillment1\" * \"customFulfillment2\" * \"customFulfillment3\" * \"customFulfillment4\" * \"customFulfillment5\" * \"inventory(place_id,attributes.key)\" * numerical_field = * \"price\" * \"discount\" * \"rating\" * \"ratingCount\" * \"attributes.key\" * \"inventory(place_id,price)\" * \"inventory(place_id,original_price)\" * \"inventory(place_id,attributes.key)\""
        },
        "orderBy": {
          "type": "string",
          "description": "The order in which SearchResponse.Facet.values are returned. Allowed values are: * \"count desc\", which means order by SearchResponse.Facet.values.count descending. * \"value desc\", which means order by SearchResponse.Facet.values.value descending. Only applies to textual facets. If not set, textual values are sorted in [natural order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical intervals are sorted in the order given by FacetSpec.FacetKey.intervals; FulfillmentInfo.place_ids are sorted in the order given by FacetSpec.FacetKey.restricted_values."
        },
        "prefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet values that start with the given string prefix. For example, suppose \"categories\" has three values \"Women > Shoe\", \"Women > Dress\" and \"Men > Shoe\". If set \"prefixes\" to \"Women\", the \"categories\" facet gives only \"Women > Shoe\" and \"Women > Dress\". Only supported on textual fields. Maximum is 10."
        },
        "query": {
          "type": "string",
          "description": "The query that is used to compute facet for the given facet key. When provided, it overrides the default behavior of facet computation. The query syntax is the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Notice that there is no limitation on FacetKey.key when query is specified. In the response, SearchResponse.Facet.values.value is always \"1\" and SearchResponse.Facet.values.count is the number of results that match the query. For example, you can set a customized facet for \"shipToStore\", where FacetKey.key is \"customizedShipToStore\", and FacetKey.query is \"availability: ANY(\\\"IN_STOCK\\\") AND shipToStore: ANY(\\\"123\\\")\". Then the facet counts the products that are both in stock and ship to store \"123\"."
        },
        "restrictedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet for the given restricted values. For example, when using \"pickupInStore\" as key and set restricted values to [\"store123\", \"store456\"], only facets for \"store123\" and \"store456\" are returned. Only supported on predefined textual fields, custom textual attributes and fulfillments. Maximum is 20. Must be set for the fulfillment facet keys: * pickupInStore * shipToStore * sameDayDelivery * nextDayDelivery * customFulfillment1 * customFulfillment2 * customFulfillment3 * customFulfillment4 * customFulfillment5"
        },
        "returnMinMax": {
          "type": "boolean",
          "description": "Returns the min and max value for each numerical facet intervals. Ignored for textual facets."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpecFacetKeyResponse": {
      "description": "Specifies how a facet is computed.",
      "properties": {
        "caseInsensitive": {
          "type": "boolean",
          "description": "True to make facet keys case insensitive when getting faceting values with prefixes or contains; false otherwise."
        },
        "contains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet values that contains the given strings. For example, suppose \"categories\" has three values \"Women > Shoe\", \"Women > Dress\" and \"Men > Shoe\". If set \"contains\" to \"Shoe\", the \"categories\" facet gives only \"Women > Shoe\" and \"Men > Shoe\". Only supported on textual fields. Maximum is 10."
        },
        "intervals": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaIntervalResponse"
          },
          "description": "Set only if values should be bucketized into intervals. Must be set for facets with numerical values. Must not be set for facet with text values. Maximum number of intervals is 40. For all numerical facet keys that appear in the list of products from the catalog, the percentiles 0, 10, 30, 50, 70, 90, and 100 are computed from their distribution weekly. If the model assigns a high score to a numerical facet key and its intervals are not specified in the search request, these percentiles become the bounds for its intervals and are returned in the response. If the facet key intervals are specified in the request, then the specified intervals are returned instead."
        },
        "key": {
          "type": "string",
          "description": "Supported textual and numerical facet keys in Product object, over which the facet values are computed. Facet key is case-sensitive. Allowed facet keys when FacetKey.query is not specified: * textual_field = * \"brands\" * \"categories\" * \"genders\" * \"ageGroups\" * \"availability\" * \"colorFamilies\" * \"colors\" * \"sizes\" * \"materials\" * \"patterns\" * \"conditions\" * \"attributes.key\" * \"pickupInStore\" * \"shipToStore\" * \"sameDayDelivery\" * \"nextDayDelivery\" * \"customFulfillment1\" * \"customFulfillment2\" * \"customFulfillment3\" * \"customFulfillment4\" * \"customFulfillment5\" * \"inventory(place_id,attributes.key)\" * numerical_field = * \"price\" * \"discount\" * \"rating\" * \"ratingCount\" * \"attributes.key\" * \"inventory(place_id,price)\" * \"inventory(place_id,original_price)\" * \"inventory(place_id,attributes.key)\""
        },
        "orderBy": {
          "type": "string",
          "description": "The order in which SearchResponse.Facet.values are returned. Allowed values are: * \"count desc\", which means order by SearchResponse.Facet.values.count descending. * \"value desc\", which means order by SearchResponse.Facet.values.value descending. Only applies to textual facets. If not set, textual values are sorted in [natural order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical intervals are sorted in the order given by FacetSpec.FacetKey.intervals; FulfillmentInfo.place_ids are sorted in the order given by FacetSpec.FacetKey.restricted_values."
        },
        "prefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet values that start with the given string prefix. For example, suppose \"categories\" has three values \"Women > Shoe\", \"Women > Dress\" and \"Men > Shoe\". If set \"prefixes\" to \"Women\", the \"categories\" facet gives only \"Women > Shoe\" and \"Women > Dress\". Only supported on textual fields. Maximum is 10."
        },
        "query": {
          "type": "string",
          "description": "The query that is used to compute facet for the given facet key. When provided, it overrides the default behavior of facet computation. The query syntax is the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Notice that there is no limitation on FacetKey.key when query is specified. In the response, SearchResponse.Facet.values.value is always \"1\" and SearchResponse.Facet.values.count is the number of results that match the query. For example, you can set a customized facet for \"shipToStore\", where FacetKey.key is \"customizedShipToStore\", and FacetKey.query is \"availability: ANY(\\\"IN_STOCK\\\") AND shipToStore: ANY(\\\"123\\\")\". Then the facet counts the products that are both in stock and ship to store \"123\"."
        },
        "restrictedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet for the given restricted values. For example, when using \"pickupInStore\" as key and set restricted values to [\"store123\", \"store456\"], only facets for \"store123\" and \"store456\" are returned. Only supported on predefined textual fields, custom textual attributes and fulfillments. Maximum is 20. Must be set for the fulfillment facet keys: * pickupInStore * shipToStore * sameDayDelivery * nextDayDelivery * customFulfillment1 * customFulfillment2 * customFulfillment3 * customFulfillment4 * customFulfillment5"
        },
        "returnMinMax": {
          "type": "boolean",
          "description": "Returns the min and max value for each numerical facet intervals. Ignored for textual facets."
        }
      },
      "type": "object",
      "required": [
        "caseInsensitive",
        "contains",
        "intervals",
        "key",
        "orderBy",
        "prefixes",
        "query",
        "restrictedValues",
        "returnMinMax"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpecResponse": {
      "description": "A facet specification to perform faceted search.",
      "properties": {
        "enableDynamicPosition": {
          "type": "boolean",
          "description": "Enables dynamic position for this facet. If set to true, the position of this facet among all facets in the response is determined by Google Retail Search. It is ordered together with dynamic facets if dynamic facets is enabled. If set to false, the position of this facet in the response is the same as in the request, and it is ranked before the facets with dynamic position enable and all dynamic facets. For example, you may always want to have rating facet returned in the response, but it's not necessarily to always display the rating facet at the top. In that case, you can set enable_dynamic_position to true so that the position of rating facet in response is determined by Google Retail Search. Another example, assuming you have the following facets in the request: * \"rating\", enable_dynamic_position = true * \"price\", enable_dynamic_position = false * \"brands\", enable_dynamic_position = false And also you have a dynamic facets enable, which generates a facet \"gender\". Then, the final order of the facets in the response can be (\"price\", \"brands\", \"rating\", \"gender\") or (\"price\", \"brands\", \"gender\", \"rating\") depends on how Google Retail Search orders \"gender\" and \"rating\" facets. However, notice that \"price\" and \"brands\" are always ranked at first and second position because their enable_dynamic_position values are false."
        },
        "excludedFilterKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of keys to exclude when faceting. By default, FacetKey.key is not excluded from the filter unless it is listed in this field. Listing a facet key in this field allows its values to appear as facet results, even when they are filtered out of search results. Using this field does not affect what search results are returned. For example, suppose there are 100 products with the color facet \"Red\" and 200 products with the color facet \"Blue\". A query containing the filter \"colorFamilies:ANY(\"Red\")\" and having \"colorFamilies\" as FacetKey.key would by default return only \"Red\" products in the search results, and also return \"Red\" with count 100 as the only color facet. Although there are also blue products available, \"Blue\" would not be shown as an available facet value. If \"colorFamilies\" is listed in \"excludedFilterKeys\", then the query returns the facet values \"Red\" with count 100 and \"Blue\" with count 200, because the \"colorFamilies\" key is now excluded from the filter. Because this field doesn't affect search results, the search results are still correctly filtered to return only \"Red\" products. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "facetKey": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpecFacetKeyResponse",
          "description": "The facet key specification."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum of facet values that should be returned for this facet. If unspecified, defaults to 50. The maximum allowed value is 300. Values above 300 will be coerced to 300. If this field is negative, an INVALID_ARGUMENT is returned."
        }
      },
      "type": "object",
      "required": [
        "enableDynamicPosition",
        "excludedFilterKeys",
        "facetKey",
        "limit"
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestPersonalizationSpec": {
      "description": "The specification for personalization.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestPersonalizationSpecMode",
          "description": "Defaults to Mode.AUTO."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestPersonalizationSpecMode": {
      "description": "Defaults to Mode.AUTO.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value. In this case, server behavior defaults to Mode.AUTO.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Auto",
          "description": "Let CRS decide whether to use personalization based on quality of user event data.",
          "value": "AUTO"
        },
        {
          "name": "Disabled",
          "description": "Disable personalization.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:retail/v2alpha:GoogleCloudRetailV2alphaSearchRequestPersonalizationSpecResponse": {
      "description": "The specification for personalization.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Defaults to Mode.AUTO."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:retail/v2alpha:ModelFilteringOption": {
      "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model.",
      "type": "string",
      "enum": [
        {
          "name": "RecommendationsFilteringOptionUnspecified",
          "description": "Value used when unset. In this case, server behavior defaults to RECOMMENDATIONS_FILTERING_DISABLED.",
          "value": "RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED"
        },
        {
          "name": "RecommendationsFilteringDisabled",
          "description": "Recommendation filtering is disabled.",
          "value": "RECOMMENDATIONS_FILTERING_DISABLED"
        },
        {
          "name": "RecommendationsFilteringEnabled",
          "description": "Recommendation filtering is enabled.",
          "value": "RECOMMENDATIONS_FILTERING_ENABLED"
        }
      ]
    },
    "google-native:retail/v2alpha:ModelPeriodicTuningState": {
      "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`.",
      "type": "string",
      "enum": [
        {
          "name": "PeriodicTuningStateUnspecified",
          "description": "Unspecified default value, should never be explicitly set.",
          "value": "PERIODIC_TUNING_STATE_UNSPECIFIED"
        },
        {
          "name": "PeriodicTuningDisabled",
          "description": "The model has periodic tuning disabled. Tuning can be reenabled by calling the `EnableModelPeriodicTuning` method or by calling the `TuneModel` method.",
          "value": "PERIODIC_TUNING_DISABLED"
        },
        {
          "name": "AllTuningDisabled",
          "description": "The model cannot be tuned with periodic tuning OR the `TuneModel` method. Hide the options in customer UI and reject any requests through the backend self serve API.",
          "value": "ALL_TUNING_DISABLED"
        },
        {
          "name": "PeriodicTuningEnabled",
          "description": "The model has periodic tuning enabled. Tuning can be disabled by calling the `DisableModelPeriodicTuning` method.",
          "value": "PERIODIC_TUNING_ENABLED"
        }
      ]
    },
    "google-native:retail/v2alpha:ModelTrainingState": {
      "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before.",
      "type": "string",
      "enum": [
        {
          "name": "TrainingStateUnspecified",
          "description": "Unspecified training state.",
          "value": "TRAINING_STATE_UNSPECIFIED"
        },
        {
          "name": "Paused",
          "description": "The model training is paused.",
          "value": "PAUSED"
        },
        {
          "name": "Training",
          "description": "The model is training.",
          "value": "TRAINING"
        }
      ]
    },
    "google-native:retail/v2alpha:ProductAvailability": {
      "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability).",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityUnspecified",
          "description": "Default product availability. Default to Availability.IN_STOCK if unset.",
          "value": "AVAILABILITY_UNSPECIFIED"
        },
        {
          "name": "InStock",
          "description": "Product in stock.",
          "value": "IN_STOCK"
        },
        {
          "name": "OutOfStock",
          "description": "Product out of stock.",
          "value": "OUT_OF_STOCK"
        },
        {
          "name": "Preorder",
          "description": "Product that is in pre-order state.",
          "value": "PREORDER"
        },
        {
          "name": "Backorder",
          "description": "Product that is back-ordered (i.e. temporarily out of stock).",
          "value": "BACKORDER"
        }
      ]
    },
    "google-native:retail/v2alpha:ProductType": {
      "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. Default to Catalog.product_level_config.ingestion_product_type if unset.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "The primary type. As the primary unit for predicting, indexing and search serving, a Type.PRIMARY Product is grouped with multiple Type.VARIANT Products.",
          "value": "PRIMARY"
        },
        {
          "name": "Variant",
          "description": "The variant type. Type.VARIANT Products usually share some common attributes on the same Type.PRIMARY Products, but they have variant attributes like different colors, sizes and prices, etc.",
          "value": "VARIANT"
        },
        {
          "name": "Collection",
          "description": "The collection type. Collection products are bundled Type.PRIMARY Products or Type.VARIANT Products that are sold together, such as a jewelry set with necklaces, earrings and rings, etc.",
          "value": "COLLECTION"
        }
      ]
    },
    "google-native:retail/v2alpha:ServingConfigDiversityType": {
      "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY.",
      "type": "string",
      "enum": [
        {
          "name": "DiversityTypeUnspecified",
          "description": "Default value.",
          "value": "DIVERSITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "RuleBasedDiversity",
          "description": "Rule based diversity.",
          "value": "RULE_BASED_DIVERSITY"
        },
        {
          "name": "DataDrivenDiversity",
          "description": "Data driven diversity.",
          "value": "DATA_DRIVEN_DIVERSITY"
        }
      ]
    },
    "google-native:retail/v2alpha:ServingConfigSolutionTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "SolutionTypeUnspecified",
          "description": "Default value.",
          "value": "SOLUTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SolutionTypeRecommendation",
          "description": "Used for Recommendations AI.",
          "value": "SOLUTION_TYPE_RECOMMENDATION"
        },
        {
          "name": "SolutionTypeSearch",
          "description": "Used for Retail Search.",
          "value": "SOLUTION_TYPE_SEARCH"
        }
      ]
    },
    "google-native:retail/v2beta:ControlSearchSolutionUseCaseItem": {
      "type": "string",
      "enum": [
        {
          "name": "SearchSolutionUseCaseUnspecified",
          "description": "The value when it's unspecified. In this case, server behavior defaults to SEARCH_SOLUTION_USE_CASE_SEARCH.",
          "value": "SEARCH_SOLUTION_USE_CASE_UNSPECIFIED"
        },
        {
          "name": "SearchSolutionUseCaseSearch",
          "description": "Search use case. Expects the traffic has a non-empty query.",
          "value": "SEARCH_SOLUTION_USE_CASE_SEARCH"
        },
        {
          "name": "SearchSolutionUseCaseBrowse",
          "description": "Browse use case. Expects the traffic has an empty query.",
          "value": "SEARCH_SOLUTION_USE_CASE_BROWSE"
        }
      ]
    },
    "google-native:retail/v2beta:ControlSolutionTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "SolutionTypeUnspecified",
          "description": "Default value.",
          "value": "SOLUTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SolutionTypeRecommendation",
          "description": "Used for Recommendations AI.",
          "value": "SOLUTION_TYPE_RECOMMENDATION"
        },
        {
          "name": "SolutionTypeSearch",
          "description": "Used for Retail Search.",
          "value": "SOLUTION_TYPE_SEARCH"
        }
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaAudience": {
      "description": "An intended audience of the Product for whom it's sold.",
      "properties": {
        "ageGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The age groups of the audience. Strongly encouraged to use the standard values: \"newborn\" (up to 3 months old), \"infant\" (3–12 months old), \"toddler\" (1–5 years old), \"kids\" (5–13 years old), \"adult\" (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge)."
        },
        "genders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The genders of the audience. Strongly encouraged to use the standard values: \"male\", \"female\", \"unisex\". At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaAudienceResponse": {
      "description": "An intended audience of the Product for whom it's sold.",
      "properties": {
        "ageGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The age groups of the audience. Strongly encouraged to use the standard values: \"newborn\" (up to 3 months old), \"infant\" (3–12 months old), \"toddler\" (1–5 years old), \"kids\" (5–13 years old), \"adult\" (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge)."
        },
        "genders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The genders of the audience. Strongly encouraged to use the standard values: \"male\", \"female\", \"unisex\". At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender)."
        }
      },
      "type": "object",
      "required": [
        "ageGroups",
        "genders"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaColorInfo": {
      "description": "The color information of a Product.",
      "properties": {
        "colorFamilies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The standard color families. Strongly recommended to use the following standard color groups: \"Red\", \"Pink\", \"Orange\", \"Yellow\", \"Purple\", \"Green\", \"Cyan\", \"Blue\", \"Brown\", \"White\", \"Gray\", \"Black\" and \"Mixed\". Normally it is expected to have only 1 color family. May consider using single \"Mixed\" instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single \"Mixed\" instead of multiple values. A maximum of 75 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaColorInfoResponse": {
      "description": "The color information of a Product.",
      "properties": {
        "colorFamilies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The standard color families. Strongly recommended to use the following standard color groups: \"Red\", \"Pink\", \"Orange\", \"Yellow\", \"Purple\", \"Green\", \"Cyan\", \"Blue\", \"Brown\", \"White\", \"Gray\", \"Black\" and \"Mixed\". Normally it is expected to have only 1 color family. May consider using single \"Mixed\" instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single \"Mixed\" instead of multiple values. A maximum of 75 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        }
      },
      "type": "object",
      "required": [
        "colorFamilies",
        "colors"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaCondition": {
      "description": "Metadata that is used to define a condition that triggers an action. A valid condition must specify at least one of 'query_terms' or 'products_filter'. If multiple fields are specified, the condition is met if all the fields are satisfied e.g. if a set of query terms and product_filter are set, then only items matching the product_filter for requests with a query matching the query terms wil get boosted.",
      "properties": {
        "activeTimeRange": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaConditionTimeRange"
          },
          "description": "Range of time(s) specifying when Condition is active. Condition true if any time range matches."
        },
        "pageCategories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Used to support browse uses cases. A list (up to 10 entries) of categories or departments. The format should be the same as UserEvent.page_categories;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaConditionQueryTerm"
          },
          "description": "A list (up to 10 entries) of terms to match the query on. If not specified, match all queries. If many query terms are specified, the condition is matched if any of the terms is a match (i.e. using the OR operator)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaConditionQueryTerm": {
      "description": "Query terms that we want to match on.",
      "properties": {
        "fullMatch": {
          "type": "boolean",
          "description": "Whether this is supposed to be a full or partial match."
        },
        "value": {
          "type": "string",
          "description": "The value of the term to match on. Value cannot be empty. Value can have at most 3 terms if specified as a partial match. Each space separated string is considered as one term. For example, \"a b c\" is 3 terms and allowed, but \" a b c d\" is 4 terms and not allowed for a partial match."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaConditionQueryTermResponse": {
      "description": "Query terms that we want to match on.",
      "properties": {
        "fullMatch": {
          "type": "boolean",
          "description": "Whether this is supposed to be a full or partial match."
        },
        "value": {
          "type": "string",
          "description": "The value of the term to match on. Value cannot be empty. Value can have at most 3 terms if specified as a partial match. Each space separated string is considered as one term. For example, \"a b c\" is 3 terms and allowed, but \" a b c d\" is 4 terms and not allowed for a partial match."
        }
      },
      "type": "object",
      "required": [
        "fullMatch",
        "value"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaConditionResponse": {
      "description": "Metadata that is used to define a condition that triggers an action. A valid condition must specify at least one of 'query_terms' or 'products_filter'. If multiple fields are specified, the condition is met if all the fields are satisfied e.g. if a set of query terms and product_filter are set, then only items matching the product_filter for requests with a query matching the query terms wil get boosted.",
      "properties": {
        "activeTimeRange": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaConditionTimeRangeResponse"
          },
          "description": "Range of time(s) specifying when Condition is active. Condition true if any time range matches."
        },
        "pageCategories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Used to support browse uses cases. A list (up to 10 entries) of categories or departments. The format should be the same as UserEvent.page_categories;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaConditionQueryTermResponse"
          },
          "description": "A list (up to 10 entries) of terms to match the query on. If not specified, match all queries. If many query terms are specified, the condition is matched if any of the terms is a match (i.e. using the OR operator)."
        }
      },
      "type": "object",
      "required": [
        "activeTimeRange",
        "pageCategories",
        "queryTerms"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaConditionTimeRange": {
      "description": "Used for time-dependent conditions. Example: Want to have rule applied for week long sale.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "End of time range. Range is inclusive."
        },
        "startTime": {
          "type": "string",
          "description": "Start of time range. Range is inclusive."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaConditionTimeRangeResponse": {
      "description": "Used for time-dependent conditions. Example: Want to have rule applied for week long sale.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "End of time range. Range is inclusive."
        },
        "startTime": {
          "type": "string",
          "description": "Start of time range. Range is inclusive."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "startTime"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaFulfillmentInfo": {
      "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.",
      "properties": {
        "placeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 3000 values are allowed. Each value must be a string with a length limit of 30 characters, matching the pattern `[a-zA-Z0-9_-]+`, such as \"store1\" or \"REGION-2\". Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "type": {
          "type": "string",
          "description": "The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaFulfillmentInfoResponse": {
      "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.",
      "properties": {
        "placeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 3000 values are allowed. Each value must be a string with a length limit of 30 characters, matching the pattern `[a-zA-Z0-9_-]+`, such as \"store1\" or \"REGION-2\". Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "type": {
          "type": "string",
          "description": "The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "placeIds",
        "type"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaImage": {
      "description": "Product image. Recommendations AI and Retail Search do not use product images to improve prediction and search results. However, product images can be returned in results, and are shown in prediction or search previews in the console.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "uri": {
          "type": "string",
          "description": "URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "width": {
          "type": "integer",
          "description": "Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaImageResponse": {
      "description": "Product image. Recommendations AI and Retail Search do not use product images to improve prediction and search results. However, product images can be returned in results, and are shown in prediction or search previews in the console.",
      "properties": {
        "height": {
          "type": "integer",
          "description": "Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "uri": {
          "type": "string",
          "description": "URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "width": {
          "type": "integer",
          "description": "Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        }
      },
      "type": "object",
      "required": [
        "height",
        "uri",
        "width"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaInterval": {
      "description": "A floating point interval.",
      "properties": {
        "exclusiveMaximum": {
          "type": "number",
          "description": "Exclusive upper bound."
        },
        "exclusiveMinimum": {
          "type": "number",
          "description": "Exclusive lower bound."
        },
        "maximum": {
          "type": "number",
          "description": "Inclusive upper bound."
        },
        "minimum": {
          "type": "number",
          "description": "Inclusive lower bound."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaIntervalResponse": {
      "description": "A floating point interval.",
      "properties": {
        "exclusiveMaximum": {
          "type": "number",
          "description": "Exclusive upper bound."
        },
        "exclusiveMinimum": {
          "type": "number",
          "description": "Exclusive lower bound."
        },
        "maximum": {
          "type": "number",
          "description": "Inclusive upper bound."
        },
        "minimum": {
          "type": "number",
          "description": "Inclusive lower bound."
        }
      },
      "type": "object",
      "required": [
        "exclusiveMaximum",
        "exclusiveMinimum",
        "maximum",
        "minimum"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaLocalInventoryResponse": {
      "description": "The inventory information at a place (e.g. a store) identified by a place ID.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional local inventory attributes, for example, store name, promotion tags, etc. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * At most 30 attributes are allowed. * The key must be a UTF-8 encoded string with a length limit of 32 characters. * The key must match the pattern: `a-zA-Z0-9*`. For example, key0LikeThis or KEY_1_LIKE_THIS. * The attribute values must be of the same type (text or number). * Only 1 value is allowed for each attribute. * For text values, the length limit is 256 UTF-8 characters. * The attribute does not support search. The `searchable` field should be unset or set to false. * The max summed total bytes of custom attribute keys and values per product is 5MiB."
        },
        "fulfillmentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Input only. Supported fulfillment types. Valid fulfillment type values include commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * \"pickup-in-store\" * \"ship-to-store\" * \"same-day-delivery\" * \"next-day-delivery\" * \"custom-type-1\" * \"custom-type-2\" * \"custom-type-3\" * \"custom-type-4\" * \"custom-type-5\" If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. All the elements must be distinct. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "placeId": {
          "type": "string",
          "description": "The place ID for the current set of inventory information."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPriceInfoResponse",
          "description": "Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "fulfillmentTypes",
        "placeId",
        "priceInfo"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaModelFrequentlyBoughtTogetherFeaturesConfig": {
      "description": "Additional configs for the frequently-bought-together model type.",
      "properties": {
        "contextProductsType": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaModelFrequentlyBoughtTogetherFeaturesConfigContextProductsType",
          "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaModelFrequentlyBoughtTogetherFeaturesConfigContextProductsType": {
      "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS.",
      "type": "string",
      "enum": [
        {
          "name": "ContextProductsTypeUnspecified",
          "description": "Unspecified default value, should never be explicitly set. Defaults to MULTIPLE_CONTEXT_PRODUCTS.",
          "value": "CONTEXT_PRODUCTS_TYPE_UNSPECIFIED"
        },
        {
          "name": "SingleContextProduct",
          "description": "Use only a single product as context for the recommendation. Typically used on pages like add-to-cart or product details.",
          "value": "SINGLE_CONTEXT_PRODUCT"
        },
        {
          "name": "MultipleContextProducts",
          "description": "Use one or multiple products as context for the recommendation. Typically used on shopping cart pages.",
          "value": "MULTIPLE_CONTEXT_PRODUCTS"
        }
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaModelFrequentlyBoughtTogetherFeaturesConfigResponse": {
      "description": "Additional configs for the frequently-bought-together model type.",
      "properties": {
        "contextProductsType": {
          "type": "string",
          "description": "Optional. Specifies the context of the model when it is used in predict requests. Can only be set for the `frequently-bought-together` type. If it isn't specified, it defaults to MULTIPLE_CONTEXT_PRODUCTS."
        }
      },
      "type": "object",
      "required": [
        "contextProductsType"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaModelModelFeaturesConfig": {
      "description": "Additional model features config.",
      "properties": {
        "frequentlyBoughtTogetherConfig": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaModelFrequentlyBoughtTogetherFeaturesConfig",
          "description": "Additional configs for frequently-bought-together models."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaModelModelFeaturesConfigResponse": {
      "description": "Additional model features config.",
      "properties": {
        "frequentlyBoughtTogetherConfig": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaModelFrequentlyBoughtTogetherFeaturesConfigResponse",
          "description": "Additional configs for frequently-bought-together models."
        }
      },
      "type": "object",
      "required": [
        "frequentlyBoughtTogetherConfig"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaModelServingConfigListResponse": {
      "description": "Represents an ordered combination of valid serving configs, which can be used for `PAGE_OPTIMIZATION` recommendations.",
      "properties": {
        "servingConfigIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A set of valid serving configs that may be used for `PAGE_OPTIMIZATION`."
        }
      },
      "type": "object",
      "required": [
        "servingConfigIds"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaPriceInfo": {
      "description": "The price information of a Product.",
      "properties": {
        "cost": {
          "type": "number",
          "description": "The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895)."
        },
        "currencyCode": {
          "type": "string",
          "description": "The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned."
        },
        "originalPrice": {
          "type": "number",
          "description": "Price of the product without any discount. If zero, by default set to be the price. If set, original_price should be greater than or equal to price, otherwise an INVALID_ARGUMENT error is thrown."
        },
        "price": {
          "type": "number",
          "description": "Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.price](https://schema.org/price)."
        },
        "priceEffectiveTime": {
          "type": "string",
          "description": "The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceExpireTime": {
          "type": "string",
          "description": "The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaPriceInfoPriceRangeResponse": {
      "description": "The price range of all variant Product having the same Product.primary_product_id.",
      "properties": {
        "originalPrice": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaIntervalResponse",
          "description": "The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id."
        },
        "price": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaIntervalResponse",
          "description": "The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id."
        }
      },
      "type": "object",
      "required": [
        "originalPrice",
        "price"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaPriceInfoResponse": {
      "description": "The price information of a Product.",
      "properties": {
        "cost": {
          "type": "number",
          "description": "The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895)."
        },
        "currencyCode": {
          "type": "string",
          "description": "The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned."
        },
        "originalPrice": {
          "type": "number",
          "description": "Price of the product without any discount. If zero, by default set to be the price. If set, original_price should be greater than or equal to price, otherwise an INVALID_ARGUMENT error is thrown."
        },
        "price": {
          "type": "number",
          "description": "Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.price](https://schema.org/price)."
        },
        "priceEffectiveTime": {
          "type": "string",
          "description": "The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceExpireTime": {
          "type": "string",
          "description": "The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search."
        },
        "priceRange": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPriceInfoPriceRangeResponse",
          "description": "The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "cost",
        "currencyCode",
        "originalPrice",
        "price",
        "priceEffectiveTime",
        "priceExpireTime",
        "priceRange"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaProductResponse": {
      "description": "Product captures all metadata information of items to be recommended or searched.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaAudienceResponse",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "type": "string",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaColorInfoResponse",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaFulfillmentInfoResponse"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaImageResponse"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "localInventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaLocalInventoryResponse"
          },
          "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPriceInfoResponse",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPromotionResponse"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRatingResponse",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        },
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaProductResponse"
          },
          "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "audience",
        "availability",
        "availableQuantity",
        "availableTime",
        "brands",
        "categories",
        "collectionMemberIds",
        "colorInfo",
        "conditions",
        "description",
        "expireTime",
        "fulfillmentInfo",
        "gtin",
        "images",
        "languageCode",
        "localInventories",
        "materials",
        "name",
        "patterns",
        "priceInfo",
        "primaryProductId",
        "promotions",
        "publishTime",
        "rating",
        "retrievableFields",
        "sizes",
        "tags",
        "title",
        "ttl",
        "type",
        "uri",
        "variants"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaPromotion": {
      "description": "Promotion specification.",
      "properties": {
        "promotionId": {
          "type": "string",
          "description": "Promotion identifier, which is the final component of name. For example, this field is \"free_gift\", if name is `projects/*/locations/global/catalogs/default_catalog/promotions/free_gift`. The value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: `a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Corresponds to Google Merchant Center property [promotion_id](https://support.google.com/merchants/answer/7050148)."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaPromotionResponse": {
      "description": "Promotion specification.",
      "properties": {
        "promotionId": {
          "type": "string",
          "description": "Promotion identifier, which is the final component of name. For example, this field is \"free_gift\", if name is `projects/*/locations/global/catalogs/default_catalog/promotions/free_gift`. The value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: `a-zA-Z*`. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Corresponds to Google Merchant Center property [promotion_id](https://support.google.com/merchants/answer/7050148)."
        }
      },
      "type": "object",
      "required": [
        "promotionId"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRating": {
      "description": "The rating of a Product.",
      "properties": {
        "averageRating": {
          "type": "number",
          "description": "The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingCount": {
          "type": "integer",
          "description": "The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingHistogram": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRatingResponse": {
      "description": "The rating of a Product.",
      "properties": {
        "averageRating": {
          "type": "number",
          "description": "The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingCount": {
          "type": "integer",
          "description": "The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "ratingHistogram": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on."
        }
      },
      "type": "object",
      "required": [
        "averageRating",
        "ratingCount",
        "ratingHistogram"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRule": {
      "description": "A rule is a condition-action pair * A condition defines when a rule is to be triggered. * An action specifies what occurs on that trigger. Currently rules only work for controls with SOLUTION_TYPE_SEARCH.",
      "properties": {
        "boostAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleBoostAction",
          "description": "A boost action."
        },
        "condition": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaCondition",
          "description": "The condition that triggers the rule. If the condition is empty, the rule will always apply."
        },
        "doNotAssociateAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleDoNotAssociateAction",
          "description": "Prevents term from being associated with other terms."
        },
        "filterAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleFilterAction",
          "description": "Filters results."
        },
        "forceReturnFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleForceReturnFacetAction",
          "description": "Force returns an attribute as a facet in the request."
        },
        "ignoreAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleIgnoreAction",
          "description": "Ignores specific terms from query during search."
        },
        "onewaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleOnewaySynonymsAction",
          "description": "Treats specific term as a synonym with a group of terms. Group of terms will not be treated as synonyms with the specific term."
        },
        "redirectAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleRedirectAction",
          "description": "Redirects a shopper to a specific page."
        },
        "removeFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleRemoveFacetAction",
          "description": "Remove an attribute as a facet in the request (if present)."
        },
        "replacementAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleReplacementAction",
          "description": "Replaces specific terms in the query."
        },
        "twowaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleTwowaySynonymsAction",
          "description": "Treats a set of terms as synonyms of one another."
        }
      },
      "type": "object",
      "required": [
        "condition"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleBoostAction": {
      "description": "A boost action to apply to results matching condition specified above.",
      "properties": {
        "boost": {
          "type": "number",
          "description": "Strength of the condition boost, which must be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored."
        },
        "productsFilter": {
          "type": "string",
          "description": "The filter can have a max size of 5000 characters. An expression which specifies which products to apply an action to. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleBoostActionResponse": {
      "description": "A boost action to apply to results matching condition specified above.",
      "properties": {
        "boost": {
          "type": "number",
          "description": "Strength of the condition boost, which must be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored."
        },
        "productsFilter": {
          "type": "string",
          "description": "The filter can have a max size of 5000 characters. An expression which specifies which products to apply an action to. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object",
      "required": [
        "boost",
        "productsFilter"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleDoNotAssociateAction": {
      "description": "Prevents `query_term` from being associated with specified terms during search. Example: Don't associate \"gShoe\" and \"cheap\".",
      "properties": {
        "doNotAssociateTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cannot contain duplicates or the query term. Can specify up to 100 terms."
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will not consider do_not_associate_terms for search if in search query. Can specify up to 100 terms."
        },
        "terms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleDoNotAssociateActionResponse": {
      "description": "Prevents `query_term` from being associated with specified terms during search. Example: Don't associate \"gShoe\" and \"cheap\".",
      "properties": {
        "doNotAssociateTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cannot contain duplicates or the query term. Can specify up to 100 terms."
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will not consider do_not_associate_terms for search if in search query. Can specify up to 100 terms."
        },
        "terms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object",
      "required": [
        "doNotAssociateTerms",
        "queryTerms",
        "terms"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleFilterAction": {
      "description": "* Rule Condition: - No Condition.query_terms provided is a global match. - 1 or more Condition.query_terms provided are combined with OR operator. * Action Input: The request query and filter that are applied to the retrieved products, in addition to any filters already provided with the SearchRequest. The AND operator is used to combine the query's existing filters with the filter rule(s). NOTE: May result in 0 results when filters conflict. * Action Result: Filters the returned objects to be ONLY those that passed the filter.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter to apply on the matching condition results. Supported features: * filter must be set. * Filter syntax is identical to SearchRequest.filter. For more information, see [Filter](/retail/docs/filter-and-order#filter). * To filter products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleFilterActionResponse": {
      "description": "* Rule Condition: - No Condition.query_terms provided is a global match. - 1 or more Condition.query_terms provided are combined with OR operator. * Action Input: The request query and filter that are applied to the retrieved products, in addition to any filters already provided with the SearchRequest. The AND operator is used to combine the query's existing filters with the filter rule(s). NOTE: May result in 0 results when filters conflict. * Action Result: Filters the returned objects to be ONLY those that passed the filter.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "A filter to apply on the matching condition results. Supported features: * filter must be set. * Filter syntax is identical to SearchRequest.filter. For more information, see [Filter](/retail/docs/filter-and-order#filter). * To filter products with product ID \"product_1\" or \"product_2\", and color \"Red\" or \"Blue\": *(id: ANY(\"product_1\", \"product_2\")) * *AND * *(colorFamilies: ANY(\"Red\", \"Blue\")) *"
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleForceReturnFacetAction": {
      "description": "Force returns an attribute/facet in the request around a certain position or above. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Inputs: attribute name, position * Action Result: Will force return a facet key around a certain position or above if the condition is satisfied. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\", the ForceReturnFacetAction.FacetPositionAdjustment.attribute_name is \"size\" and the ForceReturnFacetAction.FacetPositionAdjustment.position is 8. Two cases: a) The facet key \"size\" is not already in the top 8 slots, then the facet \"size\" will appear at a position close to 8. b) The facet key \"size\" in among the top 8 positions in the request, then it will stay at its current rank.",
      "properties": {
        "facetPositionAdjustments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleForceReturnFacetActionFacetPositionAdjustment"
          },
          "description": "Each instance corresponds to a force return attribute for the given condition. There can't be more 3 instances here."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleForceReturnFacetActionFacetPositionAdjustment": {
      "description": "Each facet position adjustment consists of a single attribute name (i.e. facet key) along with a specified position.",
      "properties": {
        "attributeName": {
          "type": "string",
          "description": "The attribute name to force return as a facet. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters long."
        },
        "position": {
          "type": "integer",
          "description": "This is the position in the request as explained above. It should be strictly positive be at most 100."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleForceReturnFacetActionFacetPositionAdjustmentResponse": {
      "description": "Each facet position adjustment consists of a single attribute name (i.e. facet key) along with a specified position.",
      "properties": {
        "attributeName": {
          "type": "string",
          "description": "The attribute name to force return as a facet. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters long."
        },
        "position": {
          "type": "integer",
          "description": "This is the position in the request as explained above. It should be strictly positive be at most 100."
        }
      },
      "type": "object",
      "required": [
        "attributeName",
        "position"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleForceReturnFacetActionResponse": {
      "description": "Force returns an attribute/facet in the request around a certain position or above. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Inputs: attribute name, position * Action Result: Will force return a facet key around a certain position or above if the condition is satisfied. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\", the ForceReturnFacetAction.FacetPositionAdjustment.attribute_name is \"size\" and the ForceReturnFacetAction.FacetPositionAdjustment.position is 8. Two cases: a) The facet key \"size\" is not already in the top 8 slots, then the facet \"size\" will appear at a position close to 8. b) The facet key \"size\" in among the top 8 positions in the request, then it will stay at its current rank.",
      "properties": {
        "facetPositionAdjustments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleForceReturnFacetActionFacetPositionAdjustmentResponse"
          },
          "description": "Each instance corresponds to a force return attribute for the given condition. There can't be more 3 instances here."
        }
      },
      "type": "object",
      "required": [
        "facetPositionAdjustments"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleIgnoreAction": {
      "description": "Prevents a term in the query from being used in search. Example: Don't search for \"shoddy\".",
      "properties": {
        "ignoreTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms to ignore in the search query."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleIgnoreActionResponse": {
      "description": "Prevents a term in the query from being used in search. Example: Don't search for \"shoddy\".",
      "properties": {
        "ignoreTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms to ignore in the search query."
        }
      },
      "type": "object",
      "required": [
        "ignoreTerms"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleOnewaySynonymsAction": {
      "description": "Maps a set of terms to a set of synonyms. Set of synonyms will be treated as synonyms of each query term only. `query_terms` will not be treated as synonyms of each other. Example: \"sneakers\" will use a synonym of \"shoes\". \"shoes\" will not use a synonym of \"sneakers\".",
      "properties": {
        "onewayTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will treat synonyms as their synonyms. Not themselves synonyms of the synonyms. Can specify up to 100 terms."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100 synonyms."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleOnewaySynonymsActionResponse": {
      "description": "Maps a set of terms to a set of synonyms. Set of synonyms will be treated as synonyms of each query term only. `query_terms` will not be treated as synonyms of each other. Example: \"sneakers\" will use a synonym of \"shoes\". \"shoes\" will not use a synonym of \"sneakers\".",
      "properties": {
        "onewayTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Will be [deprecated = true] post migration;"
        },
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will treat synonyms as their synonyms. Not themselves synonyms of the synonyms. Can specify up to 100 terms."
        },
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Cannot contain duplicates. Can specify up to 100 synonyms."
        }
      },
      "type": "object",
      "required": [
        "onewayTerms",
        "queryTerms",
        "synonyms"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleRedirectAction": {
      "description": "Redirects a shopper to a specific page. * Rule Condition: Must specify Condition.query_terms. * Action Input: Request Query * Action Result: Redirects shopper to provided uri.",
      "properties": {
        "redirectUri": {
          "type": "string",
          "description": "URL must have length equal or less than 2000 characters."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleRedirectActionResponse": {
      "description": "Redirects a shopper to a specific page. * Rule Condition: Must specify Condition.query_terms. * Action Input: Request Query * Action Result: Redirects shopper to provided uri.",
      "properties": {
        "redirectUri": {
          "type": "string",
          "description": "URL must have length equal or less than 2000 characters."
        }
      },
      "type": "object",
      "required": [
        "redirectUri"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleRemoveFacetAction": {
      "description": "Removes an attribute/facet in the request if is present. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Input: attribute name * Action Result: Will remove the attribute (as a facet) from the request if it is present. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\" and the attribute name \"size\", then facet key \"size\" will be removed from the request (if it is present).",
      "properties": {
        "attributeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The attribute names (i.e. facet keys) to remove from the dynamic facets (if present in the request). There can't be more 3 attribute names. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleRemoveFacetActionResponse": {
      "description": "Removes an attribute/facet in the request if is present. * Rule Condition: Must specify non-empty Condition.query_terms (for search only) or Condition.page_categories (for browse only), but can't specify both. * Action Input: attribute name * Action Result: Will remove the attribute (as a facet) from the request if it is present. Example: Suppose the query is \"shoes\", the Condition.query_terms is \"shoes\" and the attribute name \"size\", then facet key \"size\" will be removed from the request (if it is present).",
      "properties": {
        "attributeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The attribute names (i.e. facet keys) to remove from the dynamic facets (if present in the request). There can't be more 3 attribute names. Each attribute name should be a valid attribute name, be non-empty and contain at most 80 characters."
        }
      },
      "type": "object",
      "required": [
        "attributeNames"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleReplacementAction": {
      "description": "Replaces a term in the query. Multiple replacement candidates can be specified. All `query_terms` will be replaced with the replacement term. Example: Replace \"gShoe\" with \"google shoe\".",
      "properties": {
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will be replaced by replacement term. Can specify up to 100 terms."
        },
        "replacementTerm": {
          "type": "string",
          "description": "Term that will be used for replacement."
        },
        "term": {
          "type": "string",
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleReplacementActionResponse": {
      "description": "Replaces a term in the query. Multiple replacement candidates can be specified. All `query_terms` will be replaced with the replacement term. Example: Replace \"gShoe\" with \"google shoe\".",
      "properties": {
        "queryTerms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Terms from the search query. Will be replaced by replacement term. Can specify up to 100 terms."
        },
        "replacementTerm": {
          "type": "string",
          "description": "Term that will be used for replacement."
        },
        "term": {
          "type": "string",
          "description": "Will be [deprecated = true] post migration;"
        }
      },
      "type": "object",
      "required": [
        "queryTerms",
        "replacementTerm",
        "term"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleResponse": {
      "description": "A rule is a condition-action pair * A condition defines when a rule is to be triggered. * An action specifies what occurs on that trigger. Currently rules only work for controls with SOLUTION_TYPE_SEARCH.",
      "properties": {
        "boostAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleBoostActionResponse",
          "description": "A boost action."
        },
        "condition": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaConditionResponse",
          "description": "The condition that triggers the rule. If the condition is empty, the rule will always apply."
        },
        "doNotAssociateAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleDoNotAssociateActionResponse",
          "description": "Prevents term from being associated with other terms."
        },
        "filterAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleFilterActionResponse",
          "description": "Filters results."
        },
        "forceReturnFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleForceReturnFacetActionResponse",
          "description": "Force returns an attribute as a facet in the request."
        },
        "ignoreAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleIgnoreActionResponse",
          "description": "Ignores specific terms from query during search."
        },
        "onewaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleOnewaySynonymsActionResponse",
          "description": "Treats specific term as a synonym with a group of terms. Group of terms will not be treated as synonyms with the specific term."
        },
        "redirectAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleRedirectActionResponse",
          "description": "Redirects a shopper to a specific page."
        },
        "removeFacetAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleRemoveFacetActionResponse",
          "description": "Remove an attribute as a facet in the request (if present)."
        },
        "replacementAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleReplacementActionResponse",
          "description": "Replaces specific terms in the query."
        },
        "twowaySynonymsAction": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleTwowaySynonymsActionResponse",
          "description": "Treats a set of terms as synonyms of one another."
        }
      },
      "type": "object",
      "required": [
        "boostAction",
        "condition",
        "doNotAssociateAction",
        "filterAction",
        "forceReturnFacetAction",
        "ignoreAction",
        "onewaySynonymsAction",
        "redirectAction",
        "removeFacetAction",
        "replacementAction",
        "twowaySynonymsAction"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleTwowaySynonymsAction": {
      "description": "Creates a set of terms that will be treated as synonyms of each other. Example: synonyms of \"sneakers\" and \"shoes\": * \"sneakers\" will use a synonym of \"shoes\". * \"shoes\" will use a synonym of \"sneakers\".",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at least 2 synonyms."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaRuleTwowaySynonymsActionResponse": {
      "description": "Creates a set of terms that will be treated as synonyms of each other. Example: synonyms of \"sneakers\" and \"shoes\": * \"sneakers\" will use a synonym of \"shoes\". * \"shoes\" will use a synonym of \"sneakers\".",
      "properties": {
        "synonyms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines a set of synonyms. Can specify up to 100 synonyms. Must specify at least 2 synonyms."
        }
      },
      "type": "object",
      "required": [
        "synonyms"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestDynamicFacetSpec": {
      "description": "The specifications of dynamically generated facets.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestDynamicFacetSpecMode",
          "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestDynamicFacetSpecMode": {
      "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Disabled",
          "description": "Disable Dynamic Facet.",
          "value": "DISABLED"
        },
        {
          "name": "Enabled",
          "description": "Automatic mode built by Google Retail Search.",
          "value": "ENABLED"
        }
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestDynamicFacetSpecResponse": {
      "description": "The specifications of dynamically generated facets.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it's unset."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestFacetSpec": {
      "description": "A facet specification to perform faceted search.",
      "properties": {
        "enableDynamicPosition": {
          "type": "boolean",
          "description": "Enables dynamic position for this facet. If set to true, the position of this facet among all facets in the response is determined by Google Retail Search. It is ordered together with dynamic facets if dynamic facets is enabled. If set to false, the position of this facet in the response is the same as in the request, and it is ranked before the facets with dynamic position enable and all dynamic facets. For example, you may always want to have rating facet returned in the response, but it's not necessarily to always display the rating facet at the top. In that case, you can set enable_dynamic_position to true so that the position of rating facet in response is determined by Google Retail Search. Another example, assuming you have the following facets in the request: * \"rating\", enable_dynamic_position = true * \"price\", enable_dynamic_position = false * \"brands\", enable_dynamic_position = false And also you have a dynamic facets enable, which generates a facet \"gender\". Then, the final order of the facets in the response can be (\"price\", \"brands\", \"rating\", \"gender\") or (\"price\", \"brands\", \"gender\", \"rating\") depends on how Google Retail Search orders \"gender\" and \"rating\" facets. However, notice that \"price\" and \"brands\" are always ranked at first and second position because their enable_dynamic_position values are false."
        },
        "excludedFilterKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of keys to exclude when faceting. By default, FacetKey.key is not excluded from the filter unless it is listed in this field. Listing a facet key in this field allows its values to appear as facet results, even when they are filtered out of search results. Using this field does not affect what search results are returned. For example, suppose there are 100 products with the color facet \"Red\" and 200 products with the color facet \"Blue\". A query containing the filter \"colorFamilies:ANY(\"Red\")\" and having \"colorFamilies\" as FacetKey.key would by default return only \"Red\" products in the search results, and also return \"Red\" with count 100 as the only color facet. Although there are also blue products available, \"Blue\" would not be shown as an available facet value. If \"colorFamilies\" is listed in \"excludedFilterKeys\", then the query returns the facet values \"Red\" with count 100 and \"Blue\" with count 200, because the \"colorFamilies\" key is now excluded from the filter. Because this field doesn't affect search results, the search results are still correctly filtered to return only \"Red\" products. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "facetKey": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestFacetSpecFacetKey",
          "description": "The facet key specification."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum of facet values that should be returned for this facet. If unspecified, defaults to 50. The maximum allowed value is 300. Values above 300 will be coerced to 300. If this field is negative, an INVALID_ARGUMENT is returned."
        }
      },
      "type": "object",
      "required": [
        "facetKey"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestFacetSpecFacetKey": {
      "description": "Specifies how a facet is computed.",
      "properties": {
        "caseInsensitive": {
          "type": "boolean",
          "description": "True to make facet keys case insensitive when getting faceting values with prefixes or contains; false otherwise."
        },
        "contains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet values that contains the given strings. For example, suppose \"categories\" has three values \"Women > Shoe\", \"Women > Dress\" and \"Men > Shoe\". If set \"contains\" to \"Shoe\", the \"categories\" facet gives only \"Women > Shoe\" and \"Men > Shoe\". Only supported on textual fields. Maximum is 10."
        },
        "intervals": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaInterval"
          },
          "description": "Set only if values should be bucketized into intervals. Must be set for facets with numerical values. Must not be set for facet with text values. Maximum number of intervals is 40. For all numerical facet keys that appear in the list of products from the catalog, the percentiles 0, 10, 30, 50, 70, 90, and 100 are computed from their distribution weekly. If the model assigns a high score to a numerical facet key and its intervals are not specified in the search request, these percentiles become the bounds for its intervals and are returned in the response. If the facet key intervals are specified in the request, then the specified intervals are returned instead."
        },
        "key": {
          "type": "string",
          "description": "Supported textual and numerical facet keys in Product object, over which the facet values are computed. Facet key is case-sensitive. Allowed facet keys when FacetKey.query is not specified: * textual_field = * \"brands\" * \"categories\" * \"genders\" * \"ageGroups\" * \"availability\" * \"colorFamilies\" * \"colors\" * \"sizes\" * \"materials\" * \"patterns\" * \"conditions\" * \"attributes.key\" * \"pickupInStore\" * \"shipToStore\" * \"sameDayDelivery\" * \"nextDayDelivery\" * \"customFulfillment1\" * \"customFulfillment2\" * \"customFulfillment3\" * \"customFulfillment4\" * \"customFulfillment5\" * \"inventory(place_id,attributes.key)\" * numerical_field = * \"price\" * \"discount\" * \"rating\" * \"ratingCount\" * \"attributes.key\" * \"inventory(place_id,price)\" * \"inventory(place_id,original_price)\" * \"inventory(place_id,attributes.key)\""
        },
        "orderBy": {
          "type": "string",
          "description": "The order in which SearchResponse.Facet.values are returned. Allowed values are: * \"count desc\", which means order by SearchResponse.Facet.values.count descending. * \"value desc\", which means order by SearchResponse.Facet.values.value descending. Only applies to textual facets. If not set, textual values are sorted in [natural order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical intervals are sorted in the order given by FacetSpec.FacetKey.intervals; FulfillmentInfo.place_ids are sorted in the order given by FacetSpec.FacetKey.restricted_values."
        },
        "prefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet values that start with the given string prefix. For example, suppose \"categories\" has three values \"Women > Shoe\", \"Women > Dress\" and \"Men > Shoe\". If set \"prefixes\" to \"Women\", the \"categories\" facet gives only \"Women > Shoe\" and \"Women > Dress\". Only supported on textual fields. Maximum is 10."
        },
        "query": {
          "type": "string",
          "description": "The query that is used to compute facet for the given facet key. When provided, it overrides the default behavior of facet computation. The query syntax is the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Notice that there is no limitation on FacetKey.key when query is specified. In the response, SearchResponse.Facet.values.value is always \"1\" and SearchResponse.Facet.values.count is the number of results that match the query. For example, you can set a customized facet for \"shipToStore\", where FacetKey.key is \"customizedShipToStore\", and FacetKey.query is \"availability: ANY(\\\"IN_STOCK\\\") AND shipToStore: ANY(\\\"123\\\")\". Then the facet counts the products that are both in stock and ship to store \"123\"."
        },
        "restrictedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet for the given restricted values. For example, when using \"pickupInStore\" as key and set restricted values to [\"store123\", \"store456\"], only facets for \"store123\" and \"store456\" are returned. Only supported on predefined textual fields, custom textual attributes and fulfillments. Maximum is 20. Must be set for the fulfillment facet keys: * pickupInStore * shipToStore * sameDayDelivery * nextDayDelivery * customFulfillment1 * customFulfillment2 * customFulfillment3 * customFulfillment4 * customFulfillment5"
        },
        "returnMinMax": {
          "type": "boolean",
          "description": "Returns the min and max value for each numerical facet intervals. Ignored for textual facets."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestFacetSpecFacetKeyResponse": {
      "description": "Specifies how a facet is computed.",
      "properties": {
        "caseInsensitive": {
          "type": "boolean",
          "description": "True to make facet keys case insensitive when getting faceting values with prefixes or contains; false otherwise."
        },
        "contains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet values that contains the given strings. For example, suppose \"categories\" has three values \"Women > Shoe\", \"Women > Dress\" and \"Men > Shoe\". If set \"contains\" to \"Shoe\", the \"categories\" facet gives only \"Women > Shoe\" and \"Men > Shoe\". Only supported on textual fields. Maximum is 10."
        },
        "intervals": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaIntervalResponse"
          },
          "description": "Set only if values should be bucketized into intervals. Must be set for facets with numerical values. Must not be set for facet with text values. Maximum number of intervals is 40. For all numerical facet keys that appear in the list of products from the catalog, the percentiles 0, 10, 30, 50, 70, 90, and 100 are computed from their distribution weekly. If the model assigns a high score to a numerical facet key and its intervals are not specified in the search request, these percentiles become the bounds for its intervals and are returned in the response. If the facet key intervals are specified in the request, then the specified intervals are returned instead."
        },
        "key": {
          "type": "string",
          "description": "Supported textual and numerical facet keys in Product object, over which the facet values are computed. Facet key is case-sensitive. Allowed facet keys when FacetKey.query is not specified: * textual_field = * \"brands\" * \"categories\" * \"genders\" * \"ageGroups\" * \"availability\" * \"colorFamilies\" * \"colors\" * \"sizes\" * \"materials\" * \"patterns\" * \"conditions\" * \"attributes.key\" * \"pickupInStore\" * \"shipToStore\" * \"sameDayDelivery\" * \"nextDayDelivery\" * \"customFulfillment1\" * \"customFulfillment2\" * \"customFulfillment3\" * \"customFulfillment4\" * \"customFulfillment5\" * \"inventory(place_id,attributes.key)\" * numerical_field = * \"price\" * \"discount\" * \"rating\" * \"ratingCount\" * \"attributes.key\" * \"inventory(place_id,price)\" * \"inventory(place_id,original_price)\" * \"inventory(place_id,attributes.key)\""
        },
        "orderBy": {
          "type": "string",
          "description": "The order in which SearchResponse.Facet.values are returned. Allowed values are: * \"count desc\", which means order by SearchResponse.Facet.values.count descending. * \"value desc\", which means order by SearchResponse.Facet.values.value descending. Only applies to textual facets. If not set, textual values are sorted in [natural order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical intervals are sorted in the order given by FacetSpec.FacetKey.intervals; FulfillmentInfo.place_ids are sorted in the order given by FacetSpec.FacetKey.restricted_values."
        },
        "prefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet values that start with the given string prefix. For example, suppose \"categories\" has three values \"Women > Shoe\", \"Women > Dress\" and \"Men > Shoe\". If set \"prefixes\" to \"Women\", the \"categories\" facet gives only \"Women > Shoe\" and \"Women > Dress\". Only supported on textual fields. Maximum is 10."
        },
        "query": {
          "type": "string",
          "description": "The query that is used to compute facet for the given facet key. When provided, it overrides the default behavior of facet computation. The query syntax is the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Notice that there is no limitation on FacetKey.key when query is specified. In the response, SearchResponse.Facet.values.value is always \"1\" and SearchResponse.Facet.values.count is the number of results that match the query. For example, you can set a customized facet for \"shipToStore\", where FacetKey.key is \"customizedShipToStore\", and FacetKey.query is \"availability: ANY(\\\"IN_STOCK\\\") AND shipToStore: ANY(\\\"123\\\")\". Then the facet counts the products that are both in stock and ship to store \"123\"."
        },
        "restrictedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only get facet for the given restricted values. For example, when using \"pickupInStore\" as key and set restricted values to [\"store123\", \"store456\"], only facets for \"store123\" and \"store456\" are returned. Only supported on predefined textual fields, custom textual attributes and fulfillments. Maximum is 20. Must be set for the fulfillment facet keys: * pickupInStore * shipToStore * sameDayDelivery * nextDayDelivery * customFulfillment1 * customFulfillment2 * customFulfillment3 * customFulfillment4 * customFulfillment5"
        },
        "returnMinMax": {
          "type": "boolean",
          "description": "Returns the min and max value for each numerical facet intervals. Ignored for textual facets."
        }
      },
      "type": "object",
      "required": [
        "caseInsensitive",
        "contains",
        "intervals",
        "key",
        "orderBy",
        "prefixes",
        "query",
        "restrictedValues",
        "returnMinMax"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestFacetSpecResponse": {
      "description": "A facet specification to perform faceted search.",
      "properties": {
        "enableDynamicPosition": {
          "type": "boolean",
          "description": "Enables dynamic position for this facet. If set to true, the position of this facet among all facets in the response is determined by Google Retail Search. It is ordered together with dynamic facets if dynamic facets is enabled. If set to false, the position of this facet in the response is the same as in the request, and it is ranked before the facets with dynamic position enable and all dynamic facets. For example, you may always want to have rating facet returned in the response, but it's not necessarily to always display the rating facet at the top. In that case, you can set enable_dynamic_position to true so that the position of rating facet in response is determined by Google Retail Search. Another example, assuming you have the following facets in the request: * \"rating\", enable_dynamic_position = true * \"price\", enable_dynamic_position = false * \"brands\", enable_dynamic_position = false And also you have a dynamic facets enable, which generates a facet \"gender\". Then, the final order of the facets in the response can be (\"price\", \"brands\", \"rating\", \"gender\") or (\"price\", \"brands\", \"gender\", \"rating\") depends on how Google Retail Search orders \"gender\" and \"rating\" facets. However, notice that \"price\" and \"brands\" are always ranked at first and second position because their enable_dynamic_position values are false."
        },
        "excludedFilterKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of keys to exclude when faceting. By default, FacetKey.key is not excluded from the filter unless it is listed in this field. Listing a facet key in this field allows its values to appear as facet results, even when they are filtered out of search results. Using this field does not affect what search results are returned. For example, suppose there are 100 products with the color facet \"Red\" and 200 products with the color facet \"Blue\". A query containing the filter \"colorFamilies:ANY(\"Red\")\" and having \"colorFamilies\" as FacetKey.key would by default return only \"Red\" products in the search results, and also return \"Red\" with count 100 as the only color facet. Although there are also blue products available, \"Blue\" would not be shown as an available facet value. If \"colorFamilies\" is listed in \"excludedFilterKeys\", then the query returns the facet values \"Red\" with count 100 and \"Blue\" with count 200, because the \"colorFamilies\" key is now excluded from the filter. Because this field doesn't affect search results, the search results are still correctly filtered to return only \"Red\" products. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "facetKey": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestFacetSpecFacetKeyResponse",
          "description": "The facet key specification."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum of facet values that should be returned for this facet. If unspecified, defaults to 50. The maximum allowed value is 300. Values above 300 will be coerced to 300. If this field is negative, an INVALID_ARGUMENT is returned."
        }
      },
      "type": "object",
      "required": [
        "enableDynamicPosition",
        "excludedFilterKeys",
        "facetKey",
        "limit"
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestPersonalizationSpec": {
      "description": "The specification for personalization.",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestPersonalizationSpecMode",
          "description": "Defaults to Mode.AUTO."
        }
      },
      "type": "object"
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestPersonalizationSpecMode": {
      "description": "Defaults to Mode.AUTO.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Default value. In this case, server behavior defaults to Mode.AUTO.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "Auto",
          "description": "Let CRS decide whether to use personalization based on quality of user event data.",
          "value": "AUTO"
        },
        {
          "name": "Disabled",
          "description": "Disable personalization.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:retail/v2beta:GoogleCloudRetailV2betaSearchRequestPersonalizationSpecResponse": {
      "description": "The specification for personalization.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "Defaults to Mode.AUTO."
        }
      },
      "type": "object",
      "required": [
        "mode"
      ]
    },
    "google-native:retail/v2beta:ModelFilteringOption": {
      "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model.",
      "type": "string",
      "enum": [
        {
          "name": "RecommendationsFilteringOptionUnspecified",
          "description": "Value used when unset. In this case, server behavior defaults to RECOMMENDATIONS_FILTERING_DISABLED.",
          "value": "RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED"
        },
        {
          "name": "RecommendationsFilteringDisabled",
          "description": "Recommendation filtering is disabled.",
          "value": "RECOMMENDATIONS_FILTERING_DISABLED"
        },
        {
          "name": "RecommendationsFilteringEnabled",
          "description": "Recommendation filtering is enabled.",
          "value": "RECOMMENDATIONS_FILTERING_ENABLED"
        }
      ]
    },
    "google-native:retail/v2beta:ModelPeriodicTuningState": {
      "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`.",
      "type": "string",
      "enum": [
        {
          "name": "PeriodicTuningStateUnspecified",
          "description": "Unspecified default value, should never be explicitly set.",
          "value": "PERIODIC_TUNING_STATE_UNSPECIFIED"
        },
        {
          "name": "PeriodicTuningDisabled",
          "description": "The model has periodic tuning disabled. Tuning can be reenabled by calling the `EnableModelPeriodicTuning` method or by calling the `TuneModel` method.",
          "value": "PERIODIC_TUNING_DISABLED"
        },
        {
          "name": "AllTuningDisabled",
          "description": "The model cannot be tuned with periodic tuning OR the `TuneModel` method. Hide the options in customer UI and reject any requests through the backend self serve API.",
          "value": "ALL_TUNING_DISABLED"
        },
        {
          "name": "PeriodicTuningEnabled",
          "description": "The model has periodic tuning enabled. Tuning can be disabled by calling the `DisableModelPeriodicTuning` method.",
          "value": "PERIODIC_TUNING_ENABLED"
        }
      ]
    },
    "google-native:retail/v2beta:ModelTrainingState": {
      "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before.",
      "type": "string",
      "enum": [
        {
          "name": "TrainingStateUnspecified",
          "description": "Unspecified training state.",
          "value": "TRAINING_STATE_UNSPECIFIED"
        },
        {
          "name": "Paused",
          "description": "The model training is paused.",
          "value": "PAUSED"
        },
        {
          "name": "Training",
          "description": "The model is training.",
          "value": "TRAINING"
        }
      ]
    },
    "google-native:retail/v2beta:ProductAvailability": {
      "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability).",
      "type": "string",
      "enum": [
        {
          "name": "AvailabilityUnspecified",
          "description": "Default product availability. Default to Availability.IN_STOCK if unset.",
          "value": "AVAILABILITY_UNSPECIFIED"
        },
        {
          "name": "InStock",
          "description": "Product in stock.",
          "value": "IN_STOCK"
        },
        {
          "name": "OutOfStock",
          "description": "Product out of stock.",
          "value": "OUT_OF_STOCK"
        },
        {
          "name": "Preorder",
          "description": "Product that is in pre-order state.",
          "value": "PREORDER"
        },
        {
          "name": "Backorder",
          "description": "Product that is back-ordered (i.e. temporarily out of stock).",
          "value": "BACKORDER"
        }
      ]
    },
    "google-native:retail/v2beta:ProductType": {
      "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Default value. Default to Catalog.product_level_config.ingestion_product_type if unset.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "The primary type. As the primary unit for predicting, indexing and search serving, a Type.PRIMARY Product is grouped with multiple Type.VARIANT Products.",
          "value": "PRIMARY"
        },
        {
          "name": "Variant",
          "description": "The variant type. Type.VARIANT Products usually share some common attributes on the same Type.PRIMARY Products, but they have variant attributes like different colors, sizes and prices, etc.",
          "value": "VARIANT"
        },
        {
          "name": "Collection",
          "description": "The collection type. Collection products are bundled Type.PRIMARY Products or Type.VARIANT Products that are sold together, such as a jewelry set with necklaces, earrings and rings, etc.",
          "value": "COLLECTION"
        }
      ]
    },
    "google-native:retail/v2beta:ServingConfigDiversityType": {
      "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY.",
      "type": "string",
      "enum": [
        {
          "name": "DiversityTypeUnspecified",
          "description": "Default value.",
          "value": "DIVERSITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "RuleBasedDiversity",
          "description": "Rule based diversity.",
          "value": "RULE_BASED_DIVERSITY"
        },
        {
          "name": "DataDrivenDiversity",
          "description": "Data driven diversity.",
          "value": "DATA_DRIVEN_DIVERSITY"
        }
      ]
    },
    "google-native:retail/v2beta:ServingConfigSolutionTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "SolutionTypeUnspecified",
          "description": "Default value.",
          "value": "SOLUTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SolutionTypeRecommendation",
          "description": "Used for Recommendations AI.",
          "value": "SOLUTION_TYPE_RECOMMENDATION"
        },
        {
          "name": "SolutionTypeSearch",
          "description": "Used for Retail Search.",
          "value": "SOLUTION_TYPE_SEARCH"
        }
      ]
    },
    "google-native:run/v1:Addressable": {
      "description": "Information for connecting over HTTP(s).",
      "properties": {
        "url": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:run/v1:AddressableResponse": {
      "description": "Information for connecting over HTTP(s).",
      "properties": {
        "url": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "url"
      ]
    },
    "google-native:run/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:run/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:run%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:run/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:run/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:run%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:run%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:run/v1:ConfigMapEnvSource": {
      "description": "Not supported by Cloud Run. ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.",
      "properties": {
        "localObjectReference": {
          "$ref": "#/types/google-native:run%2Fv1:LocalObjectReference",
          "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
        },
        "name": {
          "type": "string",
          "description": "The ConfigMap to select from."
        },
        "optional": {
          "type": "boolean",
          "description": "Specify whether the ConfigMap must be defined."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ConfigMapEnvSourceResponse": {
      "description": "Not supported by Cloud Run. ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.",
      "properties": {
        "localObjectReference": {
          "$ref": "#/types/google-native:run%2Fv1:LocalObjectReferenceResponse",
          "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
        },
        "name": {
          "type": "string",
          "description": "The ConfigMap to select from."
        },
        "optional": {
          "type": "boolean",
          "description": "Specify whether the ConfigMap must be defined."
        }
      },
      "type": "object",
      "required": [
        "localObjectReference",
        "name",
        "optional"
      ]
    },
    "google-native:run/v1:ConfigMapKeySelector": {
      "description": "Not supported by Cloud Run.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        },
        "localObjectReference": {
          "$ref": "#/types/google-native:run%2Fv1:LocalObjectReference",
          "description": "Not supported by Cloud Run."
        },
        "name": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        },
        "optional": {
          "type": "boolean",
          "description": "Not supported by Cloud Run."
        }
      },
      "type": "object",
      "required": [
        "key",
        "name"
      ]
    },
    "google-native:run/v1:ConfigMapKeySelectorResponse": {
      "description": "Not supported by Cloud Run.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        },
        "localObjectReference": {
          "$ref": "#/types/google-native:run%2Fv1:LocalObjectReferenceResponse",
          "description": "Not supported by Cloud Run."
        },
        "name": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        },
        "optional": {
          "type": "boolean",
          "description": "Not supported by Cloud Run."
        }
      },
      "type": "object",
      "required": [
        "key",
        "localObjectReference",
        "name",
        "optional"
      ]
    },
    "google-native:run/v1:ConfigMapVolumeSource": {
      "description": "Not supported by Cloud Run. Adapts a ConfigMap into a volume. The contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths.",
      "properties": {
        "defaultMode": {
          "type": "integer",
          "description": "(Optional) Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:KeyToPath"
          },
          "description": "(Optional) If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional."
        },
        "name": {
          "type": "string",
          "description": "Name of the config."
        },
        "optional": {
          "type": "boolean",
          "description": "(Optional) Specify whether the Secret or its keys must be defined."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ConfigMapVolumeSourceResponse": {
      "description": "Not supported by Cloud Run. Adapts a ConfigMap into a volume. The contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths.",
      "properties": {
        "defaultMode": {
          "type": "integer",
          "description": "(Optional) Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:KeyToPathResponse"
          },
          "description": "(Optional) If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional."
        },
        "name": {
          "type": "string",
          "description": "Name of the config."
        },
        "optional": {
          "type": "boolean",
          "description": "(Optional) Specify whether the Secret or its keys must be defined."
        }
      },
      "type": "object",
      "required": [
        "defaultMode",
        "items",
        "name",
        "optional"
      ]
    },
    "google-native:run/v1:Container": {
      "description": "A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.",
      "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."
        },
        "command": {
          "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 are not supported in Cloud Run."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:EnvVar"
          },
          "description": "List of environment variables to set in the container. EnvVar with duplicate names are generally allowed; if referencing a secret, the name must be unique for the container. For non-secret EnvVar names, the Container will only get the last-declared one."
        },
        "envFrom": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:EnvFromSource"
          },
          "description": "Not supported by Cloud Run."
        },
        "image": {
          "type": "string",
          "description": "Name of the container image in Dockerhub, Google Artifact Registry, or Google Container Registry. If the host is not provided, Dockerhub is assumed."
        },
        "imagePullPolicy": {
          "type": "string",
          "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise."
        },
        "livenessProbe": {
          "$ref": "#/types/google-native:run%2Fv1:Probe",
          "description": "Periodic probe of container liveness. Container will be restarted if the probe fails."
        },
        "name": {
          "type": "string",
          "description": "Name of the container specified as a DNS_LABEL (RFC 1123)."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:ContainerPort"
          },
          "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. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on."
        },
        "readinessProbe": {
          "$ref": "#/types/google-native:run%2Fv1:Probe",
          "description": "Not supported by Cloud Run."
        },
        "resources": {
          "$ref": "#/types/google-native:run%2Fv1:ResourceRequirements",
          "description": "Compute Resources required by this container."
        },
        "securityContext": {
          "$ref": "#/types/google-native:run%2Fv1:SecurityContext",
          "description": "Not supported by Cloud Run."
        },
        "startupProbe": {
          "$ref": "#/types/google-native:run%2Fv1:Probe",
          "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 receive traffic if the probe fails. If not provided, a default startup probe with TCP socket action is used."
        },
        "terminationMessagePath": {
          "type": "string",
          "description": "Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log."
        },
        "terminationMessagePolicy": {
          "type": "string",
          "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated."
        },
        "volumeMounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:VolumeMount"
          },
          "description": "Volume to mount into the container's filesystem. Only supports SecretVolumeSources. Pod volumes to mount into the container's filesystem."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "image"
      ]
    },
    "google-native:run/v1:ContainerPort": {
      "description": "ContainerPort represents a network port in a single container.",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "Port number the container listens on. If present, this must be a valid port number, 0 < x < 65536. If not present, it will default to port 8080. For more information, see https://cloud.google.com/run/docs/container-contract#port"
        },
        "name": {
          "type": "string",
          "description": "If specified, used to specify which protocol to use. Allowed values are \"http1\" and \"h2c\"."
        },
        "protocol": {
          "type": "string",
          "description": "Protocol for port. Must be \"TCP\". Defaults to \"TCP\"."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ContainerPortResponse": {
      "description": "ContainerPort represents a network port in a single container.",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "Port number the container listens on. If present, this must be a valid port number, 0 < x < 65536. If not present, it will default to port 8080. For more information, see https://cloud.google.com/run/docs/container-contract#port"
        },
        "name": {
          "type": "string",
          "description": "If specified, used to specify which protocol to use. Allowed values are \"http1\" and \"h2c\"."
        },
        "protocol": {
          "type": "string",
          "description": "Protocol for port. Must be \"TCP\". Defaults to \"TCP\"."
        }
      },
      "type": "object",
      "required": [
        "containerPort",
        "name",
        "protocol"
      ]
    },
    "google-native:run/v1:ContainerResponse": {
      "description": "A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.",
      "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."
        },
        "command": {
          "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 are not supported in Cloud Run."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:EnvVarResponse"
          },
          "description": "List of environment variables to set in the container. EnvVar with duplicate names are generally allowed; if referencing a secret, the name must be unique for the container. For non-secret EnvVar names, the Container will only get the last-declared one."
        },
        "envFrom": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:EnvFromSourceResponse"
          },
          "description": "Not supported by Cloud Run."
        },
        "image": {
          "type": "string",
          "description": "Name of the container image in Dockerhub, Google Artifact Registry, or Google Container Registry. If the host is not provided, Dockerhub is assumed."
        },
        "imagePullPolicy": {
          "type": "string",
          "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise."
        },
        "livenessProbe": {
          "$ref": "#/types/google-native:run%2Fv1:ProbeResponse",
          "description": "Periodic probe of container liveness. Container will be restarted if the probe fails."
        },
        "name": {
          "type": "string",
          "description": "Name of the container specified as a DNS_LABEL (RFC 1123)."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:ContainerPortResponse"
          },
          "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. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on."
        },
        "readinessProbe": {
          "$ref": "#/types/google-native:run%2Fv1:ProbeResponse",
          "description": "Not supported by Cloud Run."
        },
        "resources": {
          "$ref": "#/types/google-native:run%2Fv1:ResourceRequirementsResponse",
          "description": "Compute Resources required by this container."
        },
        "securityContext": {
          "$ref": "#/types/google-native:run%2Fv1:SecurityContextResponse",
          "description": "Not supported by Cloud Run."
        },
        "startupProbe": {
          "$ref": "#/types/google-native:run%2Fv1:ProbeResponse",
          "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 receive traffic if the probe fails. If not provided, a default startup probe with TCP socket action is used."
        },
        "terminationMessagePath": {
          "type": "string",
          "description": "Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log."
        },
        "terminationMessagePolicy": {
          "type": "string",
          "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated."
        },
        "volumeMounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:VolumeMountResponse"
          },
          "description": "Volume to mount into the container's filesystem. Only supports SecretVolumeSources. Pod volumes to mount into the container's filesystem."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "env",
        "envFrom",
        "image",
        "imagePullPolicy",
        "livenessProbe",
        "name",
        "ports",
        "readinessProbe",
        "resources",
        "securityContext",
        "startupProbe",
        "terminationMessagePath",
        "terminationMessagePolicy",
        "volumeMounts",
        "workingDir"
      ]
    },
    "google-native:run/v1:DomainMappingSpec": {
      "description": "The desired state of the Domain Mapping.",
      "properties": {
        "certificateMode": {
          "$ref": "#/types/google-native:run%2Fv1:DomainMappingSpecCertificateMode",
          "description": "The mode of the certificate."
        },
        "forceOverride": {
          "type": "boolean",
          "description": "If set, the mapping will override any mapping set before this spec was set. It is recommended that the user leaves this empty to receive an error warning about a potential conflict and only set it once the respective UI has given such a warning."
        },
        "routeName": {
          "type": "string",
          "description": "The name of the Knative Route that this DomainMapping applies to. The route must exist."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:DomainMappingSpecCertificateMode": {
      "description": "The mode of the certificate.",
      "type": "string",
      "enum": [
        {
          "name": "CertificateModeUnspecified",
          "value": "CERTIFICATE_MODE_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "Do not provision an HTTPS certificate.",
          "value": "NONE"
        },
        {
          "name": "Automatic",
          "description": "Automatically provisions an HTTPS certificate via GoogleCA.",
          "value": "AUTOMATIC"
        }
      ]
    },
    "google-native:run/v1:DomainMappingSpecResponse": {
      "description": "The desired state of the Domain Mapping.",
      "properties": {
        "certificateMode": {
          "type": "string",
          "description": "The mode of the certificate."
        },
        "forceOverride": {
          "type": "boolean",
          "description": "If set, the mapping will override any mapping set before this spec was set. It is recommended that the user leaves this empty to receive an error warning about a potential conflict and only set it once the respective UI has given such a warning."
        },
        "routeName": {
          "type": "string",
          "description": "The name of the Knative Route that this DomainMapping applies to. The route must exist."
        }
      },
      "type": "object",
      "required": [
        "certificateMode",
        "forceOverride",
        "routeName"
      ]
    },
    "google-native:run/v1:DomainMappingStatus": {
      "description": "The current state of the Domain Mapping.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:GoogleCloudRunV1Condition"
          },
          "description": "Array of observed DomainMappingConditions, indicating the current state of the DomainMapping."
        },
        "mappedRouteName": {
          "type": "string",
          "description": "The name of the route that the mapping currently points to."
        },
        "observedGeneration": {
          "type": "integer",
          "description": "ObservedGeneration is the 'Generation' of the DomainMapping that was last processed by the controller. Clients polling for completed reconciliation should poll until observedGeneration = metadata.generation and the Ready condition's status is True or False."
        },
        "resourceRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:ResourceRecord"
          },
          "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping."
        },
        "url": {
          "type": "string",
          "description": "Optional. Not supported by Cloud Run."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:DomainMappingStatusResponse": {
      "description": "The current state of the Domain Mapping.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:GoogleCloudRunV1ConditionResponse"
          },
          "description": "Array of observed DomainMappingConditions, indicating the current state of the DomainMapping."
        },
        "mappedRouteName": {
          "type": "string",
          "description": "The name of the route that the mapping currently points to."
        },
        "observedGeneration": {
          "type": "integer",
          "description": "ObservedGeneration is the 'Generation' of the DomainMapping that was last processed by the controller. Clients polling for completed reconciliation should poll until observedGeneration = metadata.generation and the Ready condition's status is True or False."
        },
        "resourceRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:ResourceRecordResponse"
          },
          "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping."
        },
        "url": {
          "type": "string",
          "description": "Optional. Not supported by Cloud Run."
        }
      },
      "type": "object",
      "required": [
        "conditions",
        "mappedRouteName",
        "observedGeneration",
        "resourceRecords",
        "url"
      ]
    },
    "google-native:run/v1:EmptyDirVolumeSource": {
      "description": "In memory (tmpfs) ephemeral storage. 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).",
      "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. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir"
        },
        "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. The default is nil which means that the limit is undefined. More info: https://cloud.google.com/run/docs/configuring/in-memory-volumes#configure-volume. Info in Kubernetes: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir"
        }
      },
      "type": "object"
    },
    "google-native:run/v1:EmptyDirVolumeSourceResponse": {
      "description": "In memory (tmpfs) ephemeral storage. 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).",
      "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. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir"
        },
        "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. The default is nil which means that the limit is undefined. More info: https://cloud.google.com/run/docs/configuring/in-memory-volumes#configure-volume. Info in Kubernetes: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir"
        }
      },
      "type": "object",
      "required": [
        "medium",
        "sizeLimit"
      ]
    },
    "google-native:run/v1:EnvFromSource": {
      "description": "Not supported by Cloud Run. EnvFromSource represents the source of a set of ConfigMaps",
      "properties": {
        "configMapRef": {
          "$ref": "#/types/google-native:run%2Fv1:ConfigMapEnvSource",
          "description": "The ConfigMap to select from"
        },
        "prefix": {
          "type": "string",
          "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER."
        },
        "secretRef": {
          "$ref": "#/types/google-native:run%2Fv1:SecretEnvSource",
          "description": "The Secret to select from"
        }
      },
      "type": "object"
    },
    "google-native:run/v1:EnvFromSourceResponse": {
      "description": "Not supported by Cloud Run. EnvFromSource represents the source of a set of ConfigMaps",
      "properties": {
        "configMapRef": {
          "$ref": "#/types/google-native:run%2Fv1:ConfigMapEnvSourceResponse",
          "description": "The ConfigMap to select from"
        },
        "prefix": {
          "type": "string",
          "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER."
        },
        "secretRef": {
          "$ref": "#/types/google-native:run%2Fv1:SecretEnvSourceResponse",
          "description": "The Secret to select from"
        }
      },
      "type": "object",
      "required": [
        "configMapRef",
        "prefix",
        "secretRef"
      ]
    },
    "google-native:run/v1:EnvVar": {
      "description": "EnvVar represents an environment variable present in a Container.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "value": {
          "type": "string",
          "description": "Value of the environment variable. Defaults to \"\". Variable references are not supported in Cloud Run."
        },
        "valueFrom": {
          "$ref": "#/types/google-native:run%2Fv1:EnvVarSource",
          "description": "Source for the environment variable's value. Only supports secret_key_ref. Cannot be used if value is not empty."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:run/v1:EnvVarResponse": {
      "description": "EnvVar represents an environment variable present in a Container.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable."
        },
        "value": {
          "type": "string",
          "description": "Value of the environment variable. Defaults to \"\". Variable references are not supported in Cloud Run."
        },
        "valueFrom": {
          "$ref": "#/types/google-native:run%2Fv1:EnvVarSourceResponse",
          "description": "Source for the environment variable's value. Only supports secret_key_ref. Cannot be used if value is not empty."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value",
        "valueFrom"
      ]
    },
    "google-native:run/v1:EnvVarSource": {
      "description": "EnvVarSource represents a source for the value of an EnvVar.",
      "properties": {
        "configMapKeyRef": {
          "$ref": "#/types/google-native:run%2Fv1:ConfigMapKeySelector",
          "description": "Not supported by Cloud Run. Not supported in Cloud Run."
        },
        "secretKeyRef": {
          "$ref": "#/types/google-native:run%2Fv1:SecretKeySelector",
          "description": "Selects a key (version) of a secret in Secret Manager."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:EnvVarSourceResponse": {
      "description": "EnvVarSource represents a source for the value of an EnvVar.",
      "properties": {
        "configMapKeyRef": {
          "$ref": "#/types/google-native:run%2Fv1:ConfigMapKeySelectorResponse",
          "description": "Not supported by Cloud Run. Not supported in Cloud Run."
        },
        "secretKeyRef": {
          "$ref": "#/types/google-native:run%2Fv1:SecretKeySelectorResponse",
          "description": "Selects a key (version) of a secret in Secret Manager."
        }
      },
      "type": "object",
      "required": [
        "configMapKeyRef",
        "secretKeyRef"
      ]
    },
    "google-native:run/v1:ExecAction": {
      "description": "Not supported by Cloud Run. ExecAction describes a \"run in container\" action.",
      "properties": {
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ExecActionResponse": {
      "description": "Not supported by Cloud Run. ExecAction describes a \"run in container\" action.",
      "properties": {
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy."
        }
      },
      "type": "object",
      "required": [
        "command"
      ]
    },
    "google-native:run/v1:ExecutionReferenceResponse": {
      "description": "Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status.",
      "properties": {
        "completionTimestamp": {
          "type": "string",
          "description": "Optional. Completion timestamp of the execution."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Optional. Creation timestamp of the execution."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the execution."
        }
      },
      "type": "object",
      "required": [
        "completionTimestamp",
        "creationTimestamp",
        "name"
      ]
    },
    "google-native:run/v1:ExecutionSpec": {
      "description": "ExecutionSpec describes how the execution will look.",
      "properties": {
        "parallelism": {
          "type": "integer",
          "description": "Optional. Specifies the maximum desired number of tasks the execution should run at given time. Must be <= task_count. 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, i.e. when the work left to do is less than max parallelism."
        },
        "taskCount": {
          "type": "integer",
          "description": "Optional. 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. Defaults to 1."
        },
        "template": {
          "$ref": "#/types/google-native:run%2Fv1:TaskTemplateSpec",
          "description": "Optional. The template used to create tasks for this execution."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ExecutionSpecResponse": {
      "description": "ExecutionSpec describes how the execution will look.",
      "properties": {
        "parallelism": {
          "type": "integer",
          "description": "Optional. Specifies the maximum desired number of tasks the execution should run at given time. Must be <= task_count. 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, i.e. when the work left to do is less than max parallelism."
        },
        "taskCount": {
          "type": "integer",
          "description": "Optional. 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. Defaults to 1."
        },
        "template": {
          "$ref": "#/types/google-native:run%2Fv1:TaskTemplateSpecResponse",
          "description": "Optional. The template used to create tasks for this execution."
        }
      },
      "type": "object",
      "required": [
        "parallelism",
        "taskCount",
        "template"
      ]
    },
    "google-native:run/v1:ExecutionTemplateSpec": {
      "description": "ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job.",
      "properties": {
        "metadata": {
          "$ref": "#/types/google-native:run%2Fv1:ObjectMeta",
          "description": "Optional. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`."
        },
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:ExecutionSpec",
          "description": "ExecutionSpec holds the desired configuration for executions of this job."
        }
      },
      "type": "object",
      "required": [
        "spec"
      ]
    },
    "google-native:run/v1:ExecutionTemplateSpecResponse": {
      "description": "ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job.",
      "properties": {
        "metadata": {
          "$ref": "#/types/google-native:run%2Fv1:ObjectMetaResponse",
          "description": "Optional. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`."
        },
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:ExecutionSpecResponse",
          "description": "ExecutionSpec holds the desired configuration for executions of this job."
        }
      },
      "type": "object",
      "required": [
        "metadata",
        "spec"
      ]
    },
    "google-native:run/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:run/v1:GRPCAction": {
      "description": "GRPCAction describes an action involving a GRPC port.",
      "properties": {
        "port": {
          "type": "integer",
          "description": "Port number of the gRPC service. Number must be in the range 1 to 65535."
        },
        "service": {
          "type": "string",
          "description": "Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:GRPCActionResponse": {
      "description": "GRPCAction describes an action involving a GRPC port.",
      "properties": {
        "port": {
          "type": "integer",
          "description": "Port number of the gRPC service. Number must be in the range 1 to 65535."
        },
        "service": {
          "type": "string",
          "description": "Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC."
        }
      },
      "type": "object",
      "required": [
        "port",
        "service"
      ]
    },
    "google-native:run/v1:GoogleCloudRunV1Condition": {
      "description": "Conditions show the status of reconciliation progress on a given resource. Most resource use a top-level condition type \"Ready\" or \"Completed\" to show overall status with other conditions to checkpoint each stage of reconciliation. Note that if metadata.Generation does not equal status.ObservedGeneration, the conditions shown may not be relevant for the current spec.",
      "properties": {
        "lastTransitionTime": {
          "type": "string",
          "description": "Optional. Last time the condition transitioned from one status to another."
        },
        "message": {
          "type": "string",
          "description": "Optional. Human readable message indicating details about the current status."
        },
        "reason": {
          "type": "string",
          "description": "Optional. One-word CamelCase reason for the condition's last transition. These are intended to be stable, unique values which the client may use to trigger error handling logic, whereas messages which may be changed later by the server."
        },
        "severity": {
          "type": "string",
          "description": "Optional. How to interpret this condition. One of Error, Warning, or Info. Conditions of severity Info do not contribute to resource readiness."
        },
        "status": {
          "type": "string",
          "description": "Status of the condition, one of True, False, Unknown."
        },
        "type": {
          "type": "string",
          "description": "type is used to communicate the status of the reconciliation process. Types common to all resources include: * \"Ready\" or \"Completed\": True when the Resource is ready."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:GoogleCloudRunV1ConditionResponse": {
      "description": "Conditions show the status of reconciliation progress on a given resource. Most resource use a top-level condition type \"Ready\" or \"Completed\" to show overall status with other conditions to checkpoint each stage of reconciliation. Note that if metadata.Generation does not equal status.ObservedGeneration, the conditions shown may not be relevant for the current spec.",
      "properties": {
        "lastTransitionTime": {
          "type": "string",
          "description": "Optional. Last time the condition transitioned from one status to another."
        },
        "message": {
          "type": "string",
          "description": "Optional. Human readable message indicating details about the current status."
        },
        "reason": {
          "type": "string",
          "description": "Optional. One-word CamelCase reason for the condition's last transition. These are intended to be stable, unique values which the client may use to trigger error handling logic, whereas messages which may be changed later by the server."
        },
        "severity": {
          "type": "string",
          "description": "Optional. How to interpret this condition. One of Error, Warning, or Info. Conditions of severity Info do not contribute to resource readiness."
        },
        "status": {
          "type": "string",
          "description": "Status of the condition, one of True, False, Unknown."
        },
        "type": {
          "type": "string",
          "description": "type is used to communicate the status of the reconciliation process. Types common to all resources include: * \"Ready\" or \"Completed\": True when the Resource is ready."
        }
      },
      "type": "object",
      "required": [
        "lastTransitionTime",
        "message",
        "reason",
        "severity",
        "status",
        "type"
      ]
    },
    "google-native:run/v1:HTTPGetAction": {
      "description": "HTTPGetAction describes an action based on HTTP Get requests.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        },
        "httpHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:HTTPHeader"
          },
          "description": "Custom headers to set in the request. HTTP allows repeated headers."
        },
        "path": {
          "type": "string",
          "description": "Path to access on the HTTP server."
        },
        "port": {
          "type": "integer",
          "description": "Port number to access on the container. Number must be in the range 1 to 65535."
        },
        "scheme": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:HTTPGetActionResponse": {
      "description": "HTTPGetAction describes an action based on HTTP Get requests.",
      "properties": {
        "host": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        },
        "httpHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:HTTPHeaderResponse"
          },
          "description": "Custom headers to set in the request. HTTP allows repeated headers."
        },
        "path": {
          "type": "string",
          "description": "Path to access on the HTTP server."
        },
        "port": {
          "type": "integer",
          "description": "Port number to access on the container. Number must be in the range 1 to 65535."
        },
        "scheme": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        }
      },
      "type": "object",
      "required": [
        "host",
        "httpHeaders",
        "path",
        "port",
        "scheme"
      ]
    },
    "google-native:run/v1:HTTPHeader": {
      "description": "HTTPHeader describes a custom header to be used in HTTP probes",
      "properties": {
        "name": {
          "type": "string",
          "description": "The header field name"
        },
        "value": {
          "type": "string",
          "description": "The header field value"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:run/v1:HTTPHeaderResponse": {
      "description": "HTTPHeader describes a custom header to be used in HTTP probes",
      "properties": {
        "name": {
          "type": "string",
          "description": "The header field name"
        },
        "value": {
          "type": "string",
          "description": "The header field value"
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:run/v1:JobSpec": {
      "description": "JobSpec describes how the job will look.",
      "properties": {
        "template": {
          "$ref": "#/types/google-native:run%2Fv1:ExecutionTemplateSpec",
          "description": "Optional. Describes the execution that will be created when running a job."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:JobSpecResponse": {
      "description": "JobSpec describes how the job will look.",
      "properties": {
        "template": {
          "$ref": "#/types/google-native:run%2Fv1:ExecutionTemplateSpecResponse",
          "description": "Optional. Describes the execution that will be created when running a job."
        }
      },
      "type": "object",
      "required": [
        "template"
      ]
    },
    "google-native:run/v1:JobStatusResponse": {
      "description": "JobStatus represents the current state of a Job.",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:GoogleCloudRunV1ConditionResponse"
          },
          "description": "Conditions communicate information about ongoing/complete reconciliation processes that bring the \"spec\" inline with the observed state of the world. Job-specific conditions include: * `Ready`: `True` when the job is ready to be executed."
        },
        "executionCount": {
          "type": "integer",
          "description": "Number of executions created for this job."
        },
        "latestCreatedExecution": {
          "$ref": "#/types/google-native:run%2Fv1:ExecutionReferenceResponse",
          "description": "A pointer to the most recently created execution for this job. This is set regardless of the eventual state of the execution."
        },
        "observedGeneration": {
          "type": "integer",
          "description": "The 'generation' of the job that was last processed by the controller."
        }
      },
      "type": "object",
      "required": [
        "conditions",
        "executionCount",
        "latestCreatedExecution",
        "observedGeneration"
      ]
    },
    "google-native:run/v1:KeyToPath": {
      "description": "Maps a string key to a path within a volume.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value, or an integer or a secret alias for a specific version. The key to project."
        },
        "mode": {
          "type": "integer",
          "description": "(Optional) 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. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."
        },
        "path": {
          "type": "string",
          "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:KeyToPathResponse": {
      "description": "Maps a string key to a path within a volume.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value, or an integer or a secret alias for a specific version. The key to project."
        },
        "mode": {
          "type": "integer",
          "description": "(Optional) 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. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."
        },
        "path": {
          "type": "string",
          "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'."
        }
      },
      "type": "object",
      "required": [
        "key",
        "mode",
        "path"
      ]
    },
    "google-native:run/v1:LocalObjectReference": {
      "description": "Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the referent."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:LocalObjectReferenceResponse": {
      "description": "Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the referent."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:run/v1:ObjectMeta": {
      "description": "google.cloud.run.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. In Cloud Run, annotations with 'run.googleapis.com/' and 'autoscaling.knative.dev' are restricted, and the accepted annotations will be different depending on the resource type. * `autoscaling.knative.dev/maxScale`: Revision. * `autoscaling.knative.dev/minScale`: Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/client-name`: All resources. * `run.googleapis.com/cloudsql-instances`: Revision, Execution. * `run.googleapis.com/container-dependencies`: Revision. * `run.googleapis.com/cpu-throttling`: Revision. * `run.googleapis.com/custom-audiences`: Service. * `run.googleapis.com/description`: Service. * `run.googleapis.com/disable-default-url`: Service. * `run.googleapis.com/encryption-key-shutdown-hours`: Revision * `run.googleapis.com/encryption-key`: Revision, Execution. * `run.googleapis.com/execution-environment`: Revision, Execution. * `run.googleapis.com/gc-traffic-tags`: Service. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service (ALPHA) * `run.googleapis.com/network-interfaces`: Revision, Execution. * `run.googleapis.com/post-key-revocation-action-type`: Revision. * `run.googleapis.com/secrets`: Revision, Execution. * `run.googleapis.com/secure-session-agent`: Revision. * `run.googleapis.com/sessionAffinity`: Revision. * `run.googleapis.com/startup-cpu-boost`: Revision. * `run.googleapis.com/vpc-access-connector`: Revision, Execution. * `run.googleapis.com/vpc-access-egress`: Revision, Execution."
        },
        "clusterName": {
          "type": "string",
          "description": "Not supported by Cloud Run"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "UTC timestamp representing the server time when this object was created."
        },
        "deletionGracePeriodSeconds": {
          "type": "integer",
          "description": "Not supported by Cloud Run"
        },
        "deletionTimestamp": {
          "type": "string",
          "description": "The read-only soft deletion timestamp for this resource. In Cloud Run, users are not able to set this field. Instead, they must call the corresponding Delete API."
        },
        "finalizers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Not supported by Cloud Run"
        },
        "generateName": {
          "type": "string",
          "description": "Not supported by Cloud Run"
        },
        "generation": {
          "type": "integer",
          "description": "A system-provided sequence number representing a specific generation of the desired state."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource. Name is required when creating top-level resources (Service, Job), must be unique within a Cloud Run project/region, and cannot be changed once created."
        },
        "namespace": {
          "type": "string",
          "description": "Defines the space within each name must be unique within a Cloud Run region. In Cloud Run, it must be project ID or number."
        },
        "ownerReferences": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:OwnerReference"
          },
          "description": "Not supported by Cloud Run"
        },
        "resourceVersion": {
          "type": "string",
          "description": "Opaque, system-generated value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server or omit the value to disable conflict-detection."
        },
        "selfLink": {
          "type": "string",
          "description": "URL representing this object."
        },
        "uid": {
          "type": "string",
          "description": "Unique, system-generated identifier for this resource."
        }
      },
      "type": "object",
      "required": [
        "name",
        "namespace"
      ]
    },
    "google-native:run/v1:ObjectMetaResponse": {
      "description": "google.cloud.run.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. In Cloud Run, annotations with 'run.googleapis.com/' and 'autoscaling.knative.dev' are restricted, and the accepted annotations will be different depending on the resource type. * `autoscaling.knative.dev/maxScale`: Revision. * `autoscaling.knative.dev/minScale`: Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/client-name`: All resources. * `run.googleapis.com/cloudsql-instances`: Revision, Execution. * `run.googleapis.com/container-dependencies`: Revision. * `run.googleapis.com/cpu-throttling`: Revision. * `run.googleapis.com/custom-audiences`: Service. * `run.googleapis.com/description`: Service. * `run.googleapis.com/disable-default-url`: Service. * `run.googleapis.com/encryption-key-shutdown-hours`: Revision * `run.googleapis.com/encryption-key`: Revision, Execution. * `run.googleapis.com/execution-environment`: Revision, Execution. * `run.googleapis.com/gc-traffic-tags`: Service. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service (ALPHA) * `run.googleapis.com/network-interfaces`: Revision, Execution. * `run.googleapis.com/post-key-revocation-action-type`: Revision. * `run.googleapis.com/secrets`: Revision, Execution. * `run.googleapis.com/secure-session-agent`: Revision. * `run.googleapis.com/sessionAffinity`: Revision. * `run.googleapis.com/startup-cpu-boost`: Revision. * `run.googleapis.com/vpc-access-connector`: Revision, Execution. * `run.googleapis.com/vpc-access-egress`: Revision, Execution."
        },
        "clusterName": {
          "type": "string",
          "description": "Not supported by Cloud Run"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "UTC timestamp representing the server time when this object was created."
        },
        "deletionGracePeriodSeconds": {
          "type": "integer",
          "description": "Not supported by Cloud Run"
        },
        "deletionTimestamp": {
          "type": "string",
          "description": "The read-only soft deletion timestamp for this resource. In Cloud Run, users are not able to set this field. Instead, they must call the corresponding Delete API."
        },
        "finalizers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Not supported by Cloud Run"
        },
        "generateName": {
          "type": "string",
          "description": "Not supported by Cloud Run"
        },
        "generation": {
          "type": "integer",
          "description": "A system-provided sequence number representing a specific generation of the desired state."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource. Name is required when creating top-level resources (Service, Job), must be unique within a Cloud Run project/region, and cannot be changed once created."
        },
        "namespace": {
          "type": "string",
          "description": "Defines the space within each name must be unique within a Cloud Run region. In Cloud Run, it must be project ID or number."
        },
        "ownerReferences": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:OwnerReferenceResponse"
          },
          "description": "Not supported by Cloud Run"
        },
        "resourceVersion": {
          "type": "string",
          "description": "Opaque, system-generated value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server or omit the value to disable conflict-detection."
        },
        "selfLink": {
          "type": "string",
          "description": "URL representing this object."
        },
        "uid": {
          "type": "string",
          "description": "Unique, system-generated identifier for this resource."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "clusterName",
        "creationTimestamp",
        "deletionGracePeriodSeconds",
        "deletionTimestamp",
        "finalizers",
        "generateName",
        "generation",
        "labels",
        "name",
        "namespace",
        "ownerReferences",
        "resourceVersion",
        "selfLink",
        "uid"
      ]
    },
    "google-native:run/v1:OwnerReference": {
      "description": "This is not supported or used by Cloud Run.",
      "properties": {
        "apiVersion": {
          "type": "string",
          "description": "This is not supported or used by Cloud Run."
        },
        "blockOwnerDeletion": {
          "type": "boolean",
          "description": "This is not supported or used by Cloud Run."
        },
        "controller": {
          "type": "boolean",
          "description": "This is not supported or used by Cloud Run."
        },
        "kind": {
          "type": "string",
          "description": "This is not supported or used by Cloud Run."
        },
        "name": {
          "type": "string",
          "description": "This is not supported or used by Cloud Run."
        },
        "uid": {
          "type": "string",
          "description": "This is not supported or used by Cloud Run."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:OwnerReferenceResponse": {
      "description": "This is not supported or used by Cloud Run.",
      "properties": {
        "apiVersion": {
          "type": "string",
          "description": "This is not supported or used by Cloud Run."
        },
        "blockOwnerDeletion": {
          "type": "boolean",
          "description": "This is not supported or used by Cloud Run."
        },
        "controller": {
          "type": "boolean",
          "description": "This is not supported or used by Cloud Run."
        },
        "kind": {
          "type": "string",
          "description": "This is not supported or used by Cloud Run."
        },
        "name": {
          "type": "string",
          "description": "This is not supported or used by Cloud Run."
        },
        "uid": {
          "type": "string",
          "description": "This is not supported or used by Cloud Run."
        }
      },
      "type": "object",
      "required": [
        "apiVersion",
        "blockOwnerDeletion",
        "controller",
        "kind",
        "name",
        "uid"
      ]
    },
    "google-native:run/v1:Probe": {
      "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:run%2Fv1:ExecAction",
          "description": "Not supported by Cloud Run."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1."
        },
        "grpc": {
          "$ref": "#/types/google-native:run%2Fv1:GRPCAction",
          "description": "GRPCAction specifies an action involving a GRPC port."
        },
        "httpGet": {
          "$ref": "#/types/google-native:run%2Fv1:HTTPGetAction",
          "description": "HTTPGet specifies the http request to perform."
        },
        "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."
        },
        "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 timeout_seconds."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set."
        },
        "tcpSocket": {
          "$ref": "#/types/google-native:run%2Fv1:TCPSocketAction",
          "description": "TCPSocket specifies an action involving a TCP port."
        },
        "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 period_seconds; if period_seconds is not set, must be less or equal than 10."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ProbeResponse": {
      "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
      "properties": {
        "exec": {
          "$ref": "#/types/google-native:run%2Fv1:ExecActionResponse",
          "description": "Not supported by Cloud Run."
        },
        "failureThreshold": {
          "type": "integer",
          "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1."
        },
        "grpc": {
          "$ref": "#/types/google-native:run%2Fv1:GRPCActionResponse",
          "description": "GRPCAction specifies an action involving a GRPC port."
        },
        "httpGet": {
          "$ref": "#/types/google-native:run%2Fv1:HTTPGetActionResponse",
          "description": "HTTPGet specifies the http request to perform."
        },
        "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."
        },
        "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 timeout_seconds."
        },
        "successThreshold": {
          "type": "integer",
          "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set."
        },
        "tcpSocket": {
          "$ref": "#/types/google-native:run%2Fv1:TCPSocketActionResponse",
          "description": "TCPSocket specifies an action involving a TCP port."
        },
        "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 period_seconds; if period_seconds is not set, must be less or equal than 10."
        }
      },
      "type": "object",
      "required": [
        "exec",
        "failureThreshold",
        "grpc",
        "httpGet",
        "initialDelaySeconds",
        "periodSeconds",
        "successThreshold",
        "tcpSocket",
        "timeoutSeconds"
      ]
    },
    "google-native:run/v1:ResourceRecord": {
      "description": "A DNS resource record.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Relative name of the object affected by this record. Only applicable for `CNAME` records. Example: 'www'."
        },
        "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)."
        },
        "type": {
          "$ref": "#/types/google-native:run%2Fv1:ResourceRecordType",
          "description": "Resource record type. Example: `AAAA`."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ResourceRecordResponse": {
      "description": "A DNS resource record.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Relative name of the object affected by this record. Only applicable for `CNAME` records. Example: 'www'."
        },
        "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)."
        },
        "type": {
          "type": "string",
          "description": "Resource record type. Example: `AAAA`."
        }
      },
      "type": "object",
      "required": [
        "name",
        "rrdata",
        "type"
      ]
    },
    "google-native:run/v1:ResourceRecordType": {
      "description": "Resource record type. Example: `AAAA`.",
      "type": "string",
      "enum": [
        {
          "name": "RecordTypeUnspecified",
          "description": "An unknown resource record.",
          "value": "RECORD_TYPE_UNSPECIFIED"
        },
        {
          "name": "A",
          "description": "An A resource record. Data is an IPv4 address.",
          "value": "A"
        },
        {
          "name": "Aaaa",
          "description": "An AAAA resource record. Data is an IPv6 address.",
          "value": "AAAA"
        },
        {
          "name": "Cname",
          "description": "A CNAME resource record. Data is a domain name to be aliased.",
          "value": "CNAME"
        }
      ]
    },
    "google-native:run/v1:ResourceRequirements": {
      "description": "ResourceRequirements describes the compute resource requirements.",
      "properties": {
        "limits": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Limits describes the maximum amount of compute resources allowed. Only 'cpu' and 'memory' keys are supported. * For supported 'cpu' values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported 'memory' values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits"
        },
        "requests": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Requests describes the minimum amount of compute resources required. Only `cpu` and `memory` are supported. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. * For supported 'cpu' values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported 'memory' values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits"
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ResourceRequirementsResponse": {
      "description": "ResourceRequirements describes the compute resource requirements.",
      "properties": {
        "limits": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Limits describes the maximum amount of compute resources allowed. Only 'cpu' and 'memory' keys are supported. * For supported 'cpu' values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported 'memory' values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits"
        },
        "requests": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Requests describes the minimum amount of compute resources required. Only `cpu` and `memory` are supported. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. * For supported 'cpu' values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported 'memory' values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits"
        }
      },
      "type": "object",
      "required": [
        "limits",
        "requests"
      ]
    },
    "google-native:run/v1:RevisionSpec": {
      "description": "RevisionSpec holds the desired state of the Revision (from the client).",
      "properties": {
        "containerConcurrency": {
          "type": "integer",
          "description": "ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. If not specified, defaults to 80."
        },
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:Container"
          },
          "description": "Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided."
        },
        "enableServiceLinks": {
          "type": "boolean",
          "description": "Not supported by Cloud Run."
        },
        "imagePullSecrets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:LocalObjectReference"
          },
          "description": "Not supported by Cloud Run."
        },
        "serviceAccountName": {
          "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."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "TimeoutSeconds holds the max duration the instance is allowed for responding to a request. Cloud Run: defaults to 300 seconds (5 minutes). Maximum allowed value is 3600 seconds (1 hour)."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:Volume"
          }
        }
      },
      "type": "object"
    },
    "google-native:run/v1:RevisionSpecResponse": {
      "description": "RevisionSpec holds the desired state of the Revision (from the client).",
      "properties": {
        "containerConcurrency": {
          "type": "integer",
          "description": "ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. If not specified, defaults to 80."
        },
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:ContainerResponse"
          },
          "description": "Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided."
        },
        "enableServiceLinks": {
          "type": "boolean",
          "description": "Not supported by Cloud Run."
        },
        "imagePullSecrets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:LocalObjectReferenceResponse"
          },
          "description": "Not supported by Cloud Run."
        },
        "serviceAccountName": {
          "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."
        },
        "timeoutSeconds": {
          "type": "integer",
          "description": "TimeoutSeconds holds the max duration the instance is allowed for responding to a request. Cloud Run: defaults to 300 seconds (5 minutes). Maximum allowed value is 3600 seconds (1 hour)."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:VolumeResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "containerConcurrency",
        "containers",
        "enableServiceLinks",
        "imagePullSecrets",
        "serviceAccountName",
        "timeoutSeconds",
        "volumes"
      ]
    },
    "google-native:run/v1:RevisionTemplate": {
      "description": "RevisionTemplateSpec describes the data a revision should have when created from a template.",
      "properties": {
        "metadata": {
          "$ref": "#/types/google-native:run%2Fv1:ObjectMeta",
          "description": "Optional metadata for this Revision, including labels and annotations. Name will be generated by the Configuration. The following annotation keys set properties of the created revision: * `autoscaling.knative.dev/minScale` sets the minimum number of instances. * `autoscaling.knative.dev/maxScale` sets the maximum number of instances. * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`."
        },
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:RevisionSpec",
          "description": "RevisionSpec holds the desired state of the Revision (from the client)."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:RevisionTemplateResponse": {
      "description": "RevisionTemplateSpec describes the data a revision should have when created from a template.",
      "properties": {
        "metadata": {
          "$ref": "#/types/google-native:run%2Fv1:ObjectMetaResponse",
          "description": "Optional metadata for this Revision, including labels and annotations. Name will be generated by the Configuration. The following annotation keys set properties of the created revision: * `autoscaling.knative.dev/minScale` sets the minimum number of instances. * `autoscaling.knative.dev/maxScale` sets the maximum number of instances. * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`."
        },
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:RevisionSpecResponse",
          "description": "RevisionSpec holds the desired state of the Revision (from the client)."
        }
      },
      "type": "object",
      "required": [
        "metadata",
        "spec"
      ]
    },
    "google-native:run/v1:SecretEnvSource": {
      "description": "Not supported by Cloud Run. SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret's Data field will represent the key-value pairs as environment variables.",
      "properties": {
        "localObjectReference": {
          "$ref": "#/types/google-native:run%2Fv1:LocalObjectReference",
          "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
        },
        "name": {
          "type": "string",
          "description": "The Secret to select from."
        },
        "optional": {
          "type": "boolean",
          "description": "Specify whether the Secret must be defined"
        }
      },
      "type": "object"
    },
    "google-native:run/v1:SecretEnvSourceResponse": {
      "description": "Not supported by Cloud Run. SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret's Data field will represent the key-value pairs as environment variables.",
      "properties": {
        "localObjectReference": {
          "$ref": "#/types/google-native:run%2Fv1:LocalObjectReferenceResponse",
          "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
        },
        "name": {
          "type": "string",
          "description": "The Secret to select from."
        },
        "optional": {
          "type": "boolean",
          "description": "Specify whether the Secret must be defined"
        }
      },
      "type": "object",
      "required": [
        "localObjectReference",
        "name",
        "optional"
      ]
    },
    "google-native:run/v1:SecretKeySelector": {
      "description": "SecretKeySelector selects a key of a Secret.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A Cloud Secret Manager secret version. Must be 'latest' for the latest version, an integer for a specific version, or a version alias. The key of the secret to select from. Must be a valid secret key."
        },
        "localObjectReference": {
          "$ref": "#/types/google-native:run%2Fv1:LocalObjectReference",
          "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
        },
        "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. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. The name of the secret in the pod's namespace to select from."
        },
        "optional": {
          "type": "boolean",
          "description": "Specify whether the Secret or its key must be defined."
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "google-native:run/v1:SecretKeySelectorResponse": {
      "description": "SecretKeySelector selects a key of a Secret.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A Cloud Secret Manager secret version. Must be 'latest' for the latest version, an integer for a specific version, or a version alias. The key of the secret to select from. Must be a valid secret key."
        },
        "localObjectReference": {
          "$ref": "#/types/google-native:run%2Fv1:LocalObjectReferenceResponse",
          "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
        },
        "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. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. The name of the secret in the pod's namespace to select from."
        },
        "optional": {
          "type": "boolean",
          "description": "Specify whether the Secret or its key must be defined."
        }
      },
      "type": "object",
      "required": [
        "key",
        "localObjectReference",
        "name",
        "optional"
      ]
    },
    "google-native:run/v1:SecretVolumeSource": {
      "description": "A volume representing a secret stored in Google Secret Manager. The secret's value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret_name. The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names.",
      "properties": {
        "defaultMode": {
          "type": "integer",
          "description": "Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0444. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:KeyToPath"
          },
          "description": "A list of secret versions to mount in the volume. If no items are specified, the volume will expose a file with the same name as the secret name. The contents of the file will be the data in the latest version of the secret. If items are 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 both a key and a path."
        },
        "optional": {
          "type": "boolean",
          "description": "Not supported by Cloud Run."
        },
        "secretName": {
          "type": "string",
          "description": "The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. Name of the secret in the container's namespace to use."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:SecretVolumeSourceResponse": {
      "description": "A volume representing a secret stored in Google Secret Manager. The secret's value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret_name. The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names.",
      "properties": {
        "defaultMode": {
          "type": "integer",
          "description": "Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0444. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:KeyToPathResponse"
          },
          "description": "A list of secret versions to mount in the volume. If no items are specified, the volume will expose a file with the same name as the secret name. The contents of the file will be the data in the latest version of the secret. If items are 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 both a key and a path."
        },
        "optional": {
          "type": "boolean",
          "description": "Not supported by Cloud Run."
        },
        "secretName": {
          "type": "string",
          "description": "The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. Name of the secret in the container's namespace to use."
        }
      },
      "type": "object",
      "required": [
        "defaultMode",
        "items",
        "optional",
        "secretName"
      ]
    },
    "google-native:run/v1:SecurityContext": {
      "description": "Not supported by Cloud Run. SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.",
      "properties": {
        "runAsUser": {
          "type": "integer",
          "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:SecurityContextResponse": {
      "description": "Not supported by Cloud Run. SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.",
      "properties": {
        "runAsUser": {
          "type": "integer",
          "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence."
        }
      },
      "type": "object",
      "required": [
        "runAsUser"
      ]
    },
    "google-native:run/v1:ServiceSpec": {
      "description": "ServiceSpec holds the desired state of the Route (from the client), which is used to manipulate the underlying Route and Configuration(s).",
      "properties": {
        "template": {
          "$ref": "#/types/google-native:run%2Fv1:RevisionTemplate",
          "description": "Holds the latest specification for the Revision to be stamped out."
        },
        "traffic": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:TrafficTarget"
          },
          "description": "Specifies how to distribute traffic over a collection of Knative Revisions and Configurations to the Service's main URL."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ServiceSpecResponse": {
      "description": "ServiceSpec holds the desired state of the Route (from the client), which is used to manipulate the underlying Route and Configuration(s).",
      "properties": {
        "template": {
          "$ref": "#/types/google-native:run%2Fv1:RevisionTemplateResponse",
          "description": "Holds the latest specification for the Revision to be stamped out."
        },
        "traffic": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:TrafficTargetResponse"
          },
          "description": "Specifies how to distribute traffic over a collection of Knative Revisions and Configurations to the Service's main URL."
        }
      },
      "type": "object",
      "required": [
        "template",
        "traffic"
      ]
    },
    "google-native:run/v1:ServiceStatus": {
      "description": "The current state of the Service. Output only.",
      "properties": {
        "address": {
          "$ref": "#/types/google-native:run%2Fv1:Addressable",
          "description": "Similar to url, information on where the service is available on HTTP."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:GoogleCloudRunV1Condition"
          },
          "description": "Conditions communicate information about ongoing/complete reconciliation processes that bring the `spec` inline with the observed state of the world. Service-specific conditions include: * `ConfigurationsReady`: `True` when the underlying Configuration is ready. * `RoutesReady`: `True` when the underlying Route is ready. * `Ready`: `True` when all underlying resources are ready."
        },
        "latestCreatedRevisionName": {
          "type": "string",
          "description": "Name of the last revision that was created from this Service's Configuration. It might not be ready yet, for that use LatestReadyRevisionName."
        },
        "latestReadyRevisionName": {
          "type": "string",
          "description": "Name of the latest Revision from this Service's Configuration that has had its `Ready` condition become `True`."
        },
        "observedGeneration": {
          "type": "integer",
          "description": "Returns the generation last seen by the system. Clients polling for completed reconciliation should poll until observedGeneration = metadata.generation and the Ready condition's status is True or False."
        },
        "traffic": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:TrafficTarget"
          },
          "description": "Holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed."
        },
        "url": {
          "type": "string",
          "description": "URL that will distribute traffic over the provided traffic targets. It generally has the form `https://{route-hash}-{project-hash}-{cluster-level-suffix}.a.run.app`"
        }
      },
      "type": "object"
    },
    "google-native:run/v1:ServiceStatusResponse": {
      "description": "The current state of the Service. Output only.",
      "properties": {
        "address": {
          "$ref": "#/types/google-native:run%2Fv1:AddressableResponse",
          "description": "Similar to url, information on where the service is available on HTTP."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:GoogleCloudRunV1ConditionResponse"
          },
          "description": "Conditions communicate information about ongoing/complete reconciliation processes that bring the `spec` inline with the observed state of the world. Service-specific conditions include: * `ConfigurationsReady`: `True` when the underlying Configuration is ready. * `RoutesReady`: `True` when the underlying Route is ready. * `Ready`: `True` when all underlying resources are ready."
        },
        "latestCreatedRevisionName": {
          "type": "string",
          "description": "Name of the last revision that was created from this Service's Configuration. It might not be ready yet, for that use LatestReadyRevisionName."
        },
        "latestReadyRevisionName": {
          "type": "string",
          "description": "Name of the latest Revision from this Service's Configuration that has had its `Ready` condition become `True`."
        },
        "observedGeneration": {
          "type": "integer",
          "description": "Returns the generation last seen by the system. Clients polling for completed reconciliation should poll until observedGeneration = metadata.generation and the Ready condition's status is True or False."
        },
        "traffic": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:TrafficTargetResponse"
          },
          "description": "Holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed."
        },
        "url": {
          "type": "string",
          "description": "URL that will distribute traffic over the provided traffic targets. It generally has the form `https://{route-hash}-{project-hash}-{cluster-level-suffix}.a.run.app`"
        }
      },
      "type": "object",
      "required": [
        "address",
        "conditions",
        "latestCreatedRevisionName",
        "latestReadyRevisionName",
        "observedGeneration",
        "traffic",
        "url"
      ]
    },
    "google-native:run/v1:TCPSocketAction": {
      "description": "TCPSocketAction describes an action based on opening a socket",
      "properties": {
        "host": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        },
        "port": {
          "type": "integer",
          "description": "Port number to access on the container. Number must be in the range 1 to 65535."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:TCPSocketActionResponse": {
      "description": "TCPSocketAction describes an action based on opening a socket",
      "properties": {
        "host": {
          "type": "string",
          "description": "Not supported by Cloud Run."
        },
        "port": {
          "type": "integer",
          "description": "Port number to access on the container. Number must be in the range 1 to 65535."
        }
      },
      "type": "object",
      "required": [
        "host",
        "port"
      ]
    },
    "google-native:run/v1:TaskSpec": {
      "description": "TaskSpec is a description of a task.",
      "properties": {
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:Container"
          },
          "description": "Optional. List of containers belonging to the task. We disallow a number of fields on this Container. Only a single container may be provided."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Optional. Number of retries allowed per task, before marking this job failed. Defaults to 3."
        },
        "serviceAccountName": {
          "type": "string",
          "description": "Optional. Email address of the IAM service account associated with the task of a job execution. 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."
        },
        "timeoutSeconds": {
          "type": "string",
          "description": "Optional. Duration in seconds 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. Defaults to 600 seconds."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:Volume"
          },
          "description": "Optional. List of volumes that can be mounted by containers belonging to the task."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:TaskSpecResponse": {
      "description": "TaskSpec is a description of a task.",
      "properties": {
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:ContainerResponse"
          },
          "description": "Optional. List of containers belonging to the task. We disallow a number of fields on this Container. Only a single container may be provided."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Optional. Number of retries allowed per task, before marking this job failed. Defaults to 3."
        },
        "serviceAccountName": {
          "type": "string",
          "description": "Optional. Email address of the IAM service account associated with the task of a job execution. 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."
        },
        "timeoutSeconds": {
          "type": "string",
          "description": "Optional. Duration in seconds 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. Defaults to 600 seconds."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:VolumeResponse"
          },
          "description": "Optional. List of volumes that can be mounted by containers belonging to the task."
        }
      },
      "type": "object",
      "required": [
        "containers",
        "maxRetries",
        "serviceAccountName",
        "timeoutSeconds",
        "volumes"
      ]
    },
    "google-native:run/v1:TaskTemplateSpec": {
      "description": "TaskTemplateSpec describes the data a task should have when created from a template.",
      "properties": {
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:TaskSpec",
          "description": "Optional. Specification of the desired behavior of the task."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:TaskTemplateSpecResponse": {
      "description": "TaskTemplateSpec describes the data a task should have when created from a template.",
      "properties": {
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:TaskSpecResponse",
          "description": "Optional. Specification of the desired behavior of the task."
        }
      },
      "type": "object",
      "required": [
        "spec"
      ]
    },
    "google-native:run/v1:TrafficTarget": {
      "description": "TrafficTarget holds a single entry of the routing table for a Route.",
      "properties": {
        "configurationName": {
          "type": "string",
          "description": "[Deprecated] Not supported in Cloud Run. It must be empty.",
          "deprecationMessage": "[Deprecated] Not supported in Cloud Run. It must be empty."
        },
        "latestRevision": {
          "type": "boolean",
          "description": "Uses the \"status.latestReadyRevisionName\" of the Service to determine the traffic target. When it changes, traffic will automatically migrate from the prior \"latest ready\" revision to the new one. This field must be false if RevisionName is set. This field defaults to true otherwise. If the field is set to true on Status, this means that the Revision was resolved from the Service's latest ready revision."
        },
        "percent": {
          "type": "integer",
          "description": "Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified."
        },
        "revisionName": {
          "type": "string",
          "description": "Points this traffic target to a specific Revision. This field is mutually exclusive with latest_revision."
        },
        "tag": {
          "type": "string",
          "description": "Tag is used to expose a dedicated url for referencing this target exclusively."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:TrafficTargetResponse": {
      "description": "TrafficTarget holds a single entry of the routing table for a Route.",
      "properties": {
        "configurationName": {
          "type": "string",
          "description": "[Deprecated] Not supported in Cloud Run. It must be empty.",
          "deprecationMessage": "[Deprecated] Not supported in Cloud Run. It must be empty."
        },
        "latestRevision": {
          "type": "boolean",
          "description": "Uses the \"status.latestReadyRevisionName\" of the Service to determine the traffic target. When it changes, traffic will automatically migrate from the prior \"latest ready\" revision to the new one. This field must be false if RevisionName is set. This field defaults to true otherwise. If the field is set to true on Status, this means that the Revision was resolved from the Service's latest ready revision."
        },
        "percent": {
          "type": "integer",
          "description": "Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified."
        },
        "revisionName": {
          "type": "string",
          "description": "Points this traffic target to a specific Revision. This field is mutually exclusive with latest_revision."
        },
        "tag": {
          "type": "string",
          "description": "Tag is used to expose a dedicated url for referencing this target exclusively."
        },
        "url": {
          "type": "string",
          "description": "URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. https://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)"
        }
      },
      "type": "object",
      "required": [
        "configurationName",
        "latestRevision",
        "percent",
        "revisionName",
        "tag",
        "url"
      ]
    },
    "google-native:run/v1:Volume": {
      "description": "Volume represents a named volume in a container.",
      "properties": {
        "configMap": {
          "$ref": "#/types/google-native:run%2Fv1:ConfigMapVolumeSource",
          "description": "Not supported in Cloud Run."
        },
        "emptyDir": {
          "$ref": "#/types/google-native:run%2Fv1:EmptyDirVolumeSource",
          "description": "Ephemeral storage used as a shared volume."
        },
        "name": {
          "type": "string",
          "description": "Volume's name. In Cloud Run Fully Managed, the name 'cloudsql' is reserved."
        },
        "secret": {
          "$ref": "#/types/google-native:run%2Fv1:SecretVolumeSource",
          "description": "The secret's value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secretName."
        }
      },
      "type": "object"
    },
    "google-native:run/v1:VolumeMount": {
      "description": "VolumeMount describes a mounting of a Volume within a container.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "Path within the container at which the volume should be mounted. Must not contain ':'."
        },
        "name": {
          "type": "string",
          "description": "The name of the volume. There must be a corresponding Volume with the same name."
        },
        "readOnly": {
          "type": "boolean",
          "description": "Sets the mount to be read-only or read-write. Not used by Cloud Run."
        },
        "subPath": {
          "type": "string",
          "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)."
        }
      },
      "type": "object",
      "required": [
        "mountPath",
        "name"
      ]
    },
    "google-native:run/v1:VolumeMountResponse": {
      "description": "VolumeMount describes a mounting of a Volume within a container.",
      "properties": {
        "mountPath": {
          "type": "string",
          "description": "Path within the container at which the volume should be mounted. Must not contain ':'."
        },
        "name": {
          "type": "string",
          "description": "The name of the volume. There must be a corresponding Volume with the same name."
        },
        "readOnly": {
          "type": "boolean",
          "description": "Sets the mount to be read-only or read-write. Not used by Cloud Run."
        },
        "subPath": {
          "type": "string",
          "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)."
        }
      },
      "type": "object",
      "required": [
        "mountPath",
        "name",
        "readOnly",
        "subPath"
      ]
    },
    "google-native:run/v1:VolumeResponse": {
      "description": "Volume represents a named volume in a container.",
      "properties": {
        "configMap": {
          "$ref": "#/types/google-native:run%2Fv1:ConfigMapVolumeSourceResponse",
          "description": "Not supported in Cloud Run."
        },
        "emptyDir": {
          "$ref": "#/types/google-native:run%2Fv1:EmptyDirVolumeSourceResponse",
          "description": "Ephemeral storage used as a shared volume."
        },
        "name": {
          "type": "string",
          "description": "Volume's name. In Cloud Run Fully Managed, the name 'cloudsql' is reserved."
        },
        "secret": {
          "$ref": "#/types/google-native:run%2Fv1:SecretVolumeSourceResponse",
          "description": "The secret's value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secretName."
        }
      },
      "type": "object",
      "required": [
        "configMap",
        "emptyDir",
        "name",
        "secret"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2BinaryAuthorization": {
      "description": "Settings for Binary Authorization feature.",
      "properties": {
        "breakglassJustification": {
          "type": "string",
          "description": "If present, indicates to use Breakglass using this justification. If use_default is False, then it must be empty. For more information on breakglass, see https://cloud.google.com/binary-authorization/docs/using-breakglass"
        },
        "useDefault": {
          "type": "boolean",
          "description": "If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2BinaryAuthorizationResponse": {
      "description": "Settings for Binary Authorization feature.",
      "properties": {
        "breakglassJustification": {
          "type": "string",
          "description": "If present, indicates to use Breakglass using this justification. If use_default is False, then it must be empty. For more information on breakglass, see https://cloud.google.com/binary-authorization/docs/using-breakglass"
        },
        "useDefault": {
          "type": "boolean",
          "description": "If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled."
        }
      },
      "type": "object",
      "required": [
        "breakglassJustification",
        "useDefault"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2CloudSqlInstance": {
      "description": "Represents a set of Cloud SQL instances. Each one will be available under /cloudsql/[instance]. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run.",
      "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}"
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2CloudSqlInstanceResponse": {
      "description": "Represents a set of Cloud SQL instances. Each one will be available under /cloudsql/[instance]. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run.",
      "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}"
        }
      },
      "type": "object",
      "required": [
        "instances"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2ConditionResponse": {
      "description": "Defines a status condition for a resource.",
      "properties": {
        "executionReason": {
          "type": "string",
          "description": "A reason for the execution condition."
        },
        "lastTransitionTime": {
          "type": "string",
          "description": "Last time the condition transitioned from one status to another."
        },
        "message": {
          "type": "string",
          "description": "Human readable message indicating details about the current status."
        },
        "reason": {
          "type": "string",
          "description": "A common (service-level) reason for this condition."
        },
        "revisionReason": {
          "type": "string",
          "description": "A reason for the revision condition."
        },
        "severity": {
          "type": "string",
          "description": "How to interpret failures of this condition, one of Error, Warning, Info"
        },
        "state": {
          "type": "string",
          "description": "State of the condition."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "executionReason",
        "lastTransitionTime",
        "message",
        "reason",
        "revisionReason",
        "severity",
        "state",
        "type"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2Container": {
      "description": "A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments can be supplied by the system to the container at runtime.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided."
        },
        "command": {
          "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."
        },
        "dependsOn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the containers that must start before this container."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2EnvVar"
          },
          "description": "List of environment variables to set in the container."
        },
        "image": {
          "type": "string",
          "description": "Name of the container image in Dockerhub, Google Artifact Registry, or Google Container Registry. If the host is not provided, Dockerhub is assumed."
        },
        "livenessProbe": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2Probe",
          "description": "Periodic probe of container liveness. Container will be restarted if the probe fails."
        },
        "name": {
          "type": "string",
          "description": "Name of the container specified as a DNS_LABEL (RFC 1123)."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ContainerPort"
          },
          "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. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on."
        },
        "resources": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ResourceRequirements",
          "description": "Compute Resource requirements by this container."
        },
        "startupProbe": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2Probe",
          "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."
        },
        "volumeMounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VolumeMount"
          },
          "description": "Volume to mount into the container's filesystem."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "image"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2ContainerPort": {
      "description": "ContainerPort represents a network port in a single container.",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "Port number the container listens on. This must be a valid TCP port number, 0 < container_port < 65536."
        },
        "name": {
          "type": "string",
          "description": "If specified, used to specify which protocol to use. Allowed values are \"http1\" and \"h2c\"."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2ContainerPortResponse": {
      "description": "ContainerPort represents a network port in a single container.",
      "properties": {
        "containerPort": {
          "type": "integer",
          "description": "Port number the container listens on. This must be a valid TCP port number, 0 < container_port < 65536."
        },
        "name": {
          "type": "string",
          "description": "If specified, used to specify which protocol to use. Allowed values are \"http1\" and \"h2c\"."
        }
      },
      "type": "object",
      "required": [
        "containerPort",
        "name"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2ContainerResponse": {
      "description": "A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments can be supplied by the system to the container at runtime.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided."
        },
        "command": {
          "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."
        },
        "dependsOn": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the containers that must start before this container."
        },
        "env": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2EnvVarResponse"
          },
          "description": "List of environment variables to set in the container."
        },
        "image": {
          "type": "string",
          "description": "Name of the container image in Dockerhub, Google Artifact Registry, or Google Container Registry. If the host is not provided, Dockerhub is assumed."
        },
        "livenessProbe": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ProbeResponse",
          "description": "Periodic probe of container liveness. Container will be restarted if the probe fails."
        },
        "name": {
          "type": "string",
          "description": "Name of the container specified as a DNS_LABEL (RFC 1123)."
        },
        "ports": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ContainerPortResponse"
          },
          "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. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on."
        },
        "resources": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ResourceRequirementsResponse",
          "description": "Compute Resource requirements by this container."
        },
        "startupProbe": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ProbeResponse",
          "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."
        },
        "volumeMounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VolumeMountResponse"
          },
          "description": "Volume to mount into the container's filesystem."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "dependsOn",
        "env",
        "image",
        "livenessProbe",
        "name",
        "ports",
        "resources",
        "startupProbe",
        "volumeMounts",
        "workingDir"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2EmptyDirVolumeSource": {
      "description": "In memory (tmpfs) ephemeral storage. 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).",
      "properties": {
        "medium": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2EmptyDirVolumeSourceMedium",
          "description": "The medium on which the data is stored. Acceptable values today is only MEMORY or none. When none, the default will currently be backed by memory but could change over time. +optional"
        },
        "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. The default is nil which means that the limit is undefined. More info: https://cloud.google.com/run/docs/configuring/in-memory-volumes#configure-volume. Info in Kubernetes: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir"
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2EmptyDirVolumeSourceMedium": {
      "description": "The medium on which the data is stored. Acceptable values today is only MEMORY or none. When none, the default will currently be backed by memory but could change over time. +optional",
      "type": "string",
      "enum": [
        {
          "name": "MediumUnspecified",
          "description": "When not specified, falls back to the default implementation which is currently in memory (this may change over time).",
          "value": "MEDIUM_UNSPECIFIED"
        },
        {
          "name": "Memory",
          "description": "Explicitly set the EmptyDir to be in memory. Uses tmpfs.",
          "value": "MEMORY"
        }
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2EmptyDirVolumeSourceResponse": {
      "description": "In memory (tmpfs) ephemeral storage. 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).",
      "properties": {
        "medium": {
          "type": "string",
          "description": "The medium on which the data is stored. Acceptable values today is only MEMORY or none. When none, the default will currently be backed by memory but could change over time. +optional"
        },
        "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. The default is nil which means that the limit is undefined. More info: https://cloud.google.com/run/docs/configuring/in-memory-volumes#configure-volume. Info in Kubernetes: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir"
        }
      },
      "type": "object",
      "required": [
        "medium",
        "sizeLimit"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2EnvVar": {
      "description": "EnvVar represents an environment variable present in a Container.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable. Must not exceed 32768 characters."
        },
        "value": {
          "type": "string",
          "description": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route 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. Defaults to \"\", and the maximum length is 32768 bytes."
        },
        "valueSource": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2EnvVarSource",
          "description": "Source for the environment variable's value."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2EnvVarResponse": {
      "description": "EnvVar represents an environment variable present in a Container.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the environment variable. Must not exceed 32768 characters."
        },
        "value": {
          "type": "string",
          "description": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route 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. Defaults to \"\", and the maximum length is 32768 bytes."
        },
        "valueSource": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2EnvVarSourceResponse",
          "description": "Source for the environment variable's value."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value",
        "valueSource"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2EnvVarSource": {
      "description": "EnvVarSource represents a source for the value of an EnvVar.",
      "properties": {
        "secretKeyRef": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2SecretKeySelector",
          "description": "Selects a secret and a specific version from Cloud Secret Manager."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2EnvVarSourceResponse": {
      "description": "EnvVarSource represents a source for the value of an EnvVar.",
      "properties": {
        "secretKeyRef": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2SecretKeySelectorResponse",
          "description": "Selects a secret and a specific version from Cloud Secret Manager."
        }
      },
      "type": "object",
      "required": [
        "secretKeyRef"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2ExecutionReferenceResponse": {
      "description": "Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status.",
      "properties": {
        "completionTime": {
          "type": "string",
          "description": "Creation timestamp of the execution."
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp of the execution."
        },
        "name": {
          "type": "string",
          "description": "Name of the execution."
        }
      },
      "type": "object",
      "required": [
        "completionTime",
        "createTime",
        "name"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2ExecutionTemplate": {
      "description": "ExecutionTemplate describes the data an execution should have when created from a template.",
      "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. Cloud 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. All system annotations in v1 now have a corresponding field in v2 ExecutionTemplate. This field follows Kubernetes annotations' namespacing, limits, and rules."
        },
        "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 ExecutionTemplate."
        },
        "parallelism": {
          "type": "integer",
          "description": "Specifies the maximum desired number of tasks the execution should run at given time. Must be <= task_count. 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."
        },
        "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. Defaults to 1."
        },
        "template": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TaskTemplate",
          "description": "Describes the task(s) that will be created when executing an execution."
        }
      },
      "type": "object",
      "required": [
        "template"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2ExecutionTemplateResponse": {
      "description": "ExecutionTemplate describes the data an execution should have when created from a template.",
      "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. Cloud 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. All system annotations in v1 now have a corresponding field in v2 ExecutionTemplate. This field follows Kubernetes annotations' namespacing, limits, and rules."
        },
        "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 ExecutionTemplate."
        },
        "parallelism": {
          "type": "integer",
          "description": "Specifies the maximum desired number of tasks the execution should run at given time. Must be <= task_count. 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."
        },
        "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. Defaults to 1."
        },
        "template": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TaskTemplateResponse",
          "description": "Describes the task(s) that will be created when executing an execution."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "labels",
        "parallelism",
        "taskCount",
        "template"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2GRPCAction": {
      "description": "GRPCAction describes an action involving a GRPC port.",
      "properties": {
        "port": {
          "type": "integer",
          "description": "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."
        },
        "service": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2GRPCActionResponse": {
      "description": "GRPCAction describes an action involving a GRPC port.",
      "properties": {
        "port": {
          "type": "integer",
          "description": "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."
        },
        "service": {
          "type": "string",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "port",
        "service"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2HTTPGetAction": {
      "description": "HTTPGetAction describes an action based on HTTP Get requests.",
      "properties": {
        "httpHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2HTTPHeader"
          },
          "description": "Custom headers to set in the request. HTTP allows repeated headers."
        },
        "path": {
          "type": "string",
          "description": "Path to access on the HTTP server. Defaults to '/'."
        },
        "port": {
          "type": "integer",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2HTTPGetActionResponse": {
      "description": "HTTPGetAction describes an action based on HTTP Get requests.",
      "properties": {
        "httpHeaders": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2HTTPHeaderResponse"
          },
          "description": "Custom headers to set in the request. HTTP allows repeated headers."
        },
        "path": {
          "type": "string",
          "description": "Path to access on the HTTP server. Defaults to '/'."
        },
        "port": {
          "type": "integer",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "httpHeaders",
        "path",
        "port"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2HTTPHeader": {
      "description": "HTTPHeader describes a custom header to be used in HTTP probes",
      "properties": {
        "name": {
          "type": "string",
          "description": "The header field name"
        },
        "value": {
          "type": "string",
          "description": "The header field value"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2HTTPHeaderResponse": {
      "description": "HTTPHeader describes a custom header to be used in HTTP probes",
      "properties": {
        "name": {
          "type": "string",
          "description": "The header field name"
        },
        "value": {
          "type": "string",
          "description": "The header field value"
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2NetworkInterface": {
      "description": "Direct VPC egress settings.",
      "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 network and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If network is not specified, it will be looked up from the subnetwork."
        },
        "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 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."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Network tags applied to this Cloud Run resource."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2NetworkInterfaceResponse": {
      "description": "Direct VPC egress settings.",
      "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 network and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If network is not specified, it will be looked up from the subnetwork."
        },
        "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 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."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Network tags applied to this Cloud Run resource."
        }
      },
      "type": "object",
      "required": [
        "network",
        "subnetwork",
        "tags"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2Probe": {
      "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
      "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."
        },
        "grpc": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2GRPCAction",
          "description": "GRPC specifies an action involving a gRPC port. Exactly one of httpGet, tcpSocket, or grpc must be specified."
        },
        "httpGet": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2HTTPGetAction",
          "description": "HTTPGet specifies the http request to perform. Exactly one of httpGet, tcpSocket, or grpc must be specified."
        },
        "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."
        },
        "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 timeout_seconds."
        },
        "tcpSocket": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TCPSocketAction",
          "description": "TCPSocket specifies an action involving a TCP port. Exactly one of httpGet, tcpSocket, or grpc must be specified."
        },
        "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 period_seconds."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2ProbeResponse": {
      "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
      "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."
        },
        "grpc": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2GRPCActionResponse",
          "description": "GRPC specifies an action involving a gRPC port. Exactly one of httpGet, tcpSocket, or grpc must be specified."
        },
        "httpGet": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2HTTPGetActionResponse",
          "description": "HTTPGet specifies the http request to perform. Exactly one of httpGet, tcpSocket, or grpc must be specified."
        },
        "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."
        },
        "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 timeout_seconds."
        },
        "tcpSocket": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TCPSocketActionResponse",
          "description": "TCPSocket specifies an action involving a TCP port. Exactly one of httpGet, tcpSocket, or grpc must be specified."
        },
        "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 period_seconds."
        }
      },
      "type": "object",
      "required": [
        "failureThreshold",
        "grpc",
        "httpGet",
        "initialDelaySeconds",
        "periodSeconds",
        "tcpSocket",
        "timeoutSeconds"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2ResourceRequirements": {
      "description": "ResourceRequirements describes the compute resource requirements.",
      "properties": {
        "cpuIdle": {
          "type": "boolean",
          "description": "Determines whether CPU should be throttled or not outside of requests."
        },
        "limits": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Only ´memory´ and 'cpu' are supported. Notes: * The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported 'memory' values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits"
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2ResourceRequirementsResponse": {
      "description": "ResourceRequirements describes the compute resource requirements.",
      "properties": {
        "cpuIdle": {
          "type": "boolean",
          "description": "Determines whether CPU should be throttled or not outside of requests."
        },
        "limits": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Only ´memory´ and 'cpu' are supported. Notes: * The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. For more information, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported 'memory' values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits"
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "cpuIdle",
        "limits",
        "startupCpuBoost"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2RevisionScaling": {
      "description": "Settings for revision-level scaling settings.",
      "properties": {
        "maxInstanceCount": {
          "type": "integer",
          "description": "Maximum number of serving instances that this resource should have."
        },
        "minInstanceCount": {
          "type": "integer",
          "description": "Minimum number of serving instances that this resource should have."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2RevisionScalingResponse": {
      "description": "Settings for revision-level scaling settings.",
      "properties": {
        "maxInstanceCount": {
          "type": "integer",
          "description": "Maximum number of serving instances that this resource should have."
        },
        "minInstanceCount": {
          "type": "integer",
          "description": "Minimum number of serving instances that this resource should have."
        }
      },
      "type": "object",
      "required": [
        "maxInstanceCount",
        "minInstanceCount"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2RevisionTemplate": {
      "description": "RevisionTemplate describes the data a revision should have when created from a template.",
      "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. Cloud 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. All system annotations in v1 now have a corresponding field in v2 RevisionTemplate. This field follows Kubernetes annotations' namespacing, limits, and rules."
        },
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2Container"
          },
          "description": "Holds the single container that defines the unit of execution for this Revision."
        },
        "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"
        },
        "executionEnvironment": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2RevisionTemplateExecutionEnvironment",
          "description": "The sandbox environment to host this Revision."
        },
        "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 RevisionTemplate."
        },
        "maxInstanceRequestConcurrency": {
          "type": "integer",
          "description": "Sets the maximum number of requests that each serving instance can receive."
        },
        "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."
        },
        "scaling": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2RevisionScaling",
          "description": "Scaling settings for this Revision."
        },
        "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."
        },
        "sessionAffinity": {
          "type": "boolean",
          "description": "Enable session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Max allowed time for an instance to respond to a request."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2Volume"
          },
          "description": "A list of Volumes to make available to containers."
        },
        "vpcAccess": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VpcAccess",
          "description": "VPC Access configuration to use for this Revision. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2RevisionTemplateExecutionEnvironment": {
      "description": "The sandbox environment to host this Revision.",
      "type": "string",
      "enum": [
        {
          "name": "ExecutionEnvironmentUnspecified",
          "description": "Unspecified",
          "value": "EXECUTION_ENVIRONMENT_UNSPECIFIED"
        },
        {
          "name": "ExecutionEnvironmentGen1",
          "description": "Uses the First Generation environment.",
          "value": "EXECUTION_ENVIRONMENT_GEN1"
        },
        {
          "name": "ExecutionEnvironmentGen2",
          "description": "Uses Second Generation environment.",
          "value": "EXECUTION_ENVIRONMENT_GEN2"
        }
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2RevisionTemplateResponse": {
      "description": "RevisionTemplate describes the data a revision should have when created from a template.",
      "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. Cloud 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. All system annotations in v1 now have a corresponding field in v2 RevisionTemplate. This field follows Kubernetes annotations' namespacing, limits, and rules."
        },
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ContainerResponse"
          },
          "description": "Holds the single container that defines the unit of execution for this Revision."
        },
        "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"
        },
        "executionEnvironment": {
          "type": "string",
          "description": "The sandbox environment to host this Revision."
        },
        "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 RevisionTemplate."
        },
        "maxInstanceRequestConcurrency": {
          "type": "integer",
          "description": "Sets the maximum number of requests that each serving instance can receive."
        },
        "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."
        },
        "scaling": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2RevisionScalingResponse",
          "description": "Scaling settings for this Revision."
        },
        "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."
        },
        "sessionAffinity": {
          "type": "boolean",
          "description": "Enable session affinity."
        },
        "timeout": {
          "type": "string",
          "description": "Max allowed time for an instance to respond to a request."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VolumeResponse"
          },
          "description": "A list of Volumes to make available to containers."
        },
        "vpcAccess": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VpcAccessResponse",
          "description": "VPC Access configuration to use for this Revision. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "containers",
        "encryptionKey",
        "executionEnvironment",
        "labels",
        "maxInstanceRequestConcurrency",
        "revision",
        "scaling",
        "serviceAccount",
        "sessionAffinity",
        "timeout",
        "volumes",
        "vpcAccess"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2SecretKeySelector": {
      "description": "SecretEnvVarSource represents a source for the value of an EnvVar.",
      "properties": {
        "secret": {
          "type": "string",
          "description": "The name of the secret in Cloud Secret Manager. Format: {secret_name} if the secret is in the same project. projects/{project}/secrets/{secret_name} if the secret is in a different project."
        },
        "version": {
          "type": "string",
          "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias."
        }
      },
      "type": "object",
      "required": [
        "secret"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2SecretKeySelectorResponse": {
      "description": "SecretEnvVarSource represents a source for the value of an EnvVar.",
      "properties": {
        "secret": {
          "type": "string",
          "description": "The name of the secret in Cloud Secret Manager. Format: {secret_name} if the secret is in the same project. projects/{project}/secrets/{secret_name} if the secret is in a different project."
        },
        "version": {
          "type": "string",
          "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest version, an integer for a specific version, or a version alias."
        }
      },
      "type": "object",
      "required": [
        "secret",
        "version"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2SecretVolumeSource": {
      "description": "The secret's value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret.",
      "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. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. This might be in conflict with other options that affect the file mode, like fsGroup, and as a result, other mode bits could be set."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VersionToPath"
          },
          "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "secret"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2SecretVolumeSourceResponse": {
      "description": "The secret's value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret.",
      "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. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. This might be in conflict with other options that affect the file mode, like fsGroup, and as a result, other mode bits could be set."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VersionToPathResponse"
          },
          "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "defaultMode",
        "items",
        "secret"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2ServiceScaling": {
      "description": "Scaling settings applied at the service level rather than at the revision level.",
      "properties": {
        "minInstanceCount": {
          "type": "integer",
          "description": "total min instances for the service. This number of instances is divided among all revisions with specified traffic based on the percent of traffic they are receiving. (ALPHA)"
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2ServiceScalingResponse": {
      "description": "Scaling settings applied at the service level rather than at the revision level.",
      "properties": {
        "minInstanceCount": {
          "type": "integer",
          "description": "total min instances for the service. This number of instances is divided among all revisions with specified traffic based on the percent of traffic they are receiving. (ALPHA)"
        }
      },
      "type": "object",
      "required": [
        "minInstanceCount"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2TCPSocketAction": {
      "description": "TCPSocketAction describes an action based on opening a socket",
      "properties": {
        "port": {
          "type": "integer",
          "description": "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."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2TCPSocketActionResponse": {
      "description": "TCPSocketAction describes an action based on opening a socket",
      "properties": {
        "port": {
          "type": "integer",
          "description": "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."
        }
      },
      "type": "object",
      "required": [
        "port"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2TaskTemplate": {
      "description": "TaskTemplate describes the data a task should have when created from a template.",
      "properties": {
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2Container"
          },
          "description": "Holds the single container that defines the unit of execution for this task."
        },
        "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"
        },
        "executionEnvironment": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TaskTemplateExecutionEnvironment",
          "description": "The execution environment being used to host this Task."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Number of retries allowed per Task, before marking this Task failed. Defaults to 3."
        },
        "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."
        },
        "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. Defaults to 600 seconds."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2Volume"
          },
          "description": "A list of Volumes to make available to containers."
        },
        "vpcAccess": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VpcAccess",
          "description": "VPC Access configuration to use for this Task. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2TaskTemplateExecutionEnvironment": {
      "description": "The execution environment being used to host this Task.",
      "type": "string",
      "enum": [
        {
          "name": "ExecutionEnvironmentUnspecified",
          "description": "Unspecified",
          "value": "EXECUTION_ENVIRONMENT_UNSPECIFIED"
        },
        {
          "name": "ExecutionEnvironmentGen1",
          "description": "Uses the First Generation environment.",
          "value": "EXECUTION_ENVIRONMENT_GEN1"
        },
        {
          "name": "ExecutionEnvironmentGen2",
          "description": "Uses Second Generation environment.",
          "value": "EXECUTION_ENVIRONMENT_GEN2"
        }
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2TaskTemplateResponse": {
      "description": "TaskTemplate describes the data a task should have when created from a template.",
      "properties": {
        "containers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ContainerResponse"
          },
          "description": "Holds the single container that defines the unit of execution for this task."
        },
        "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"
        },
        "executionEnvironment": {
          "type": "string",
          "description": "The execution environment being used to host this Task."
        },
        "maxRetries": {
          "type": "integer",
          "description": "Number of retries allowed per Task, before marking this Task failed. Defaults to 3."
        },
        "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."
        },
        "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. Defaults to 600 seconds."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VolumeResponse"
          },
          "description": "A list of Volumes to make available to containers."
        },
        "vpcAccess": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VpcAccessResponse",
          "description": "VPC Access configuration to use for this Task. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc."
        }
      },
      "type": "object",
      "required": [
        "containers",
        "encryptionKey",
        "executionEnvironment",
        "maxRetries",
        "serviceAccount",
        "timeout",
        "volumes",
        "vpcAccess"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2TrafficTarget": {
      "description": "Holds a single traffic routing entry for the Service. Allocations can be done to a specific Revision name, or pointing to the latest Ready Revision.",
      "properties": {
        "percent": {
          "type": "integer",
          "description": "Specifies percent of the traffic to this Revision. This defaults to zero if unspecified."
        },
        "revision": {
          "type": "string",
          "description": "Revision to which to send this portion of traffic, if traffic allocation is by revision."
        },
        "tag": {
          "type": "string",
          "description": "Indicates a string to be part of the URI to exclusively reference this target."
        },
        "type": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TrafficTargetType",
          "description": "The allocation type for this traffic target."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2TrafficTargetResponse": {
      "description": "Holds a single traffic routing entry for the Service. Allocations can be done to a specific Revision name, or pointing to the latest Ready Revision.",
      "properties": {
        "percent": {
          "type": "integer",
          "description": "Specifies percent of the traffic to this Revision. This defaults to zero if unspecified."
        },
        "revision": {
          "type": "string",
          "description": "Revision to which to send this portion of traffic, if traffic allocation is by revision."
        },
        "tag": {
          "type": "string",
          "description": "Indicates a string to be part of the URI to exclusively reference this target."
        },
        "type": {
          "type": "string",
          "description": "The allocation type for this traffic target."
        }
      },
      "type": "object",
      "required": [
        "percent",
        "revision",
        "tag",
        "type"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2TrafficTargetStatusResponse": {
      "description": "Represents the observed state of a single `TrafficTarget` entry.",
      "properties": {
        "percent": {
          "type": "integer",
          "description": "Specifies percent of the traffic to this Revision."
        },
        "revision": {
          "type": "string",
          "description": "Revision to which this traffic is sent."
        },
        "tag": {
          "type": "string",
          "description": "Indicates the string used in the URI to exclusively reference this target."
        },
        "type": {
          "type": "string",
          "description": "The allocation type for this traffic target."
        },
        "uri": {
          "type": "string",
          "description": "Displays the target URI."
        }
      },
      "type": "object",
      "required": [
        "percent",
        "revision",
        "tag",
        "type",
        "uri"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2TrafficTargetType": {
      "description": "The allocation type for this traffic target.",
      "type": "string",
      "enum": [
        {
          "name": "TrafficTargetAllocationTypeUnspecified",
          "description": "Unspecified instance allocation type.",
          "value": "TRAFFIC_TARGET_ALLOCATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "TrafficTargetAllocationTypeLatest",
          "description": "Allocates instances to the Service's latest ready Revision.",
          "value": "TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST"
        },
        {
          "name": "TrafficTargetAllocationTypeRevision",
          "description": "Allocates instances to a Revision by name.",
          "value": "TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION"
        }
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2VersionToPath": {
      "description": "VersionToPath maps a specific version of a secret to a relative file to mount to, relative to VolumeMount's mount_path.",
      "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. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."
        },
        "path": {
          "type": "string",
          "description": "The relative path of the secret in the container."
        },
        "version": {
          "type": "string",
          "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value, or an integer or a secret alias for a specific version."
        }
      },
      "type": "object",
      "required": [
        "path"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2VersionToPathResponse": {
      "description": "VersionToPath maps a specific version of a secret to a relative file to mount to, relative to VolumeMount's mount_path.",
      "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. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."
        },
        "path": {
          "type": "string",
          "description": "The relative path of the secret in the container."
        },
        "version": {
          "type": "string",
          "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value, or an integer or a secret alias for a specific version."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "path",
        "version"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2Volume": {
      "description": "Volume represents a named volume in a container.",
      "properties": {
        "cloudSqlInstance": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2CloudSqlInstance",
          "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."
        },
        "emptyDir": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2EmptyDirVolumeSource",
          "description": "Ephemeral storage used as a shared volume."
        },
        "name": {
          "type": "string",
          "description": "Volume's name."
        },
        "secret": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2SecretVolumeSource",
          "description": "Secret represents a secret that should populate this volume."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2VolumeMount": {
      "description": "VolumeMount describes a mounting of a Volume within a container.",
      "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"
        },
        "name": {
          "type": "string",
          "description": "This must match the Name of a Volume."
        }
      },
      "type": "object",
      "required": [
        "mountPath",
        "name"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2VolumeMountResponse": {
      "description": "VolumeMount describes a mounting of a Volume within a container.",
      "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"
        },
        "name": {
          "type": "string",
          "description": "This must match the Name of a Volume."
        }
      },
      "type": "object",
      "required": [
        "mountPath",
        "name"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2VolumeResponse": {
      "description": "Volume represents a named volume in a container.",
      "properties": {
        "cloudSqlInstance": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2CloudSqlInstanceResponse",
          "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."
        },
        "emptyDir": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2EmptyDirVolumeSourceResponse",
          "description": "Ephemeral storage used as a shared volume."
        },
        "name": {
          "type": "string",
          "description": "Volume's name."
        },
        "secret": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2SecretVolumeSourceResponse",
          "description": "Secret represents a secret that should populate this volume."
        }
      },
      "type": "object",
      "required": [
        "cloudSqlInstance",
        "emptyDir",
        "name",
        "secret"
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2VpcAccess": {
      "description": "VPC Access settings. For more information on sending traffic to a VPC network, visit https://cloud.google.com/run/docs/configuring/connecting-vpc.",
      "properties": {
        "connector": {
          "type": "string",
          "description": "VPC Access connector name. Format: projects/{project}/locations/{location}/connectors/{connector}, where {project} can be project id or number. For more information on sending traffic to a VPC network via a connector, visit https://cloud.google.com/run/docs/configuring/vpc-connectors."
        },
        "egress": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2VpcAccessEgress",
          "description": "Traffic VPC egress settings. If not provided, it defaults to PRIVATE_RANGES_ONLY."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2NetworkInterface"
          },
          "description": "Direct VPC egress settings. Currently only single network interface is supported."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleCloudRunV2VpcAccessEgress": {
      "description": "Traffic VPC egress settings. If not provided, it defaults to PRIVATE_RANGES_ONLY.",
      "type": "string",
      "enum": [
        {
          "name": "VpcEgressUnspecified",
          "description": "Unspecified",
          "value": "VPC_EGRESS_UNSPECIFIED"
        },
        {
          "name": "AllTraffic",
          "description": "All outbound traffic is routed through the VPC connector.",
          "value": "ALL_TRAFFIC"
        },
        {
          "name": "PrivateRangesOnly",
          "description": "Only private IP ranges are routed through the VPC connector.",
          "value": "PRIVATE_RANGES_ONLY"
        }
      ]
    },
    "google-native:run/v2:GoogleCloudRunV2VpcAccessResponse": {
      "description": "VPC Access settings. For more information on sending traffic to a VPC network, visit https://cloud.google.com/run/docs/configuring/connecting-vpc.",
      "properties": {
        "connector": {
          "type": "string",
          "description": "VPC Access connector name. Format: projects/{project}/locations/{location}/connectors/{connector}, where {project} can be project id or number. For more information on sending traffic to a VPC network via a connector, visit https://cloud.google.com/run/docs/configuring/vpc-connectors."
        },
        "egress": {
          "type": "string",
          "description": "Traffic VPC egress settings. If not provided, it defaults to PRIVATE_RANGES_ONLY."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2NetworkInterfaceResponse"
          },
          "description": "Direct VPC egress settings. Currently only single network interface is supported."
        }
      },
      "type": "object",
      "required": [
        "connector",
        "egress",
        "networkInterfaces"
      ]
    },
    "google-native:run/v2:GoogleIamV1AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleIamV1AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:run/v2:GoogleIamV1AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleIamV1AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:run/v2:GoogleIamV1AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:run/v2:GoogleIamV1Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleTypeExpr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleIamV1BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleTypeExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:run/v2:GoogleTypeExpr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:run/v2:GoogleTypeExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:run/v2:JobLaunchStage": {
      "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features. For example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:run/v2:ServiceIngress": {
      "description": "Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active.",
      "type": "string",
      "enum": [
        {
          "name": "IngressTrafficUnspecified",
          "description": "Unspecified",
          "value": "INGRESS_TRAFFIC_UNSPECIFIED"
        },
        {
          "name": "IngressTrafficAll",
          "description": "All inbound traffic is allowed.",
          "value": "INGRESS_TRAFFIC_ALL"
        },
        {
          "name": "IngressTrafficInternalOnly",
          "description": "Only internal traffic is allowed.",
          "value": "INGRESS_TRAFFIC_INTERNAL_ONLY"
        },
        {
          "name": "IngressTrafficInternalLoadBalancer",
          "description": "Both internal and Google Cloud Load Balancer traffic is allowed.",
          "value": "INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER"
        }
      ]
    },
    "google-native:run/v2:ServiceLaunchStage": {
      "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features. For example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:runtimeconfig/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:runtimeconfig/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:runtimeconfig/v1beta1:Cardinality": {
      "description": "A Cardinality condition for the Waiter resource. A cardinality condition is met when the number of variables under a specified path prefix reaches a predefined number. For example, if you set a Cardinality condition where the `path` is set to `/foo` and the number of paths is set to `2`, the following variables would meet the condition in a RuntimeConfig resource: + `/foo/variable1 = \"value1\"` + `/foo/variable2 = \"value2\"` + `/bar/variable3 = \"value3\"` It would not satisfy the same condition with the `number` set to `3`, however, because there is only 2 paths that start with `/foo`. Cardinality conditions are recursive; all subtrees under the specific path prefix are counted.",
      "properties": {
        "number": {
          "type": "integer",
          "description": "The number variables under the `path` that must exist to meet this condition. Defaults to 1 if not specified."
        },
        "path": {
          "type": "string",
          "description": "The root of the variable subtree to monitor. For example, `/foo`."
        }
      },
      "type": "object"
    },
    "google-native:runtimeconfig/v1beta1:CardinalityResponse": {
      "description": "A Cardinality condition for the Waiter resource. A cardinality condition is met when the number of variables under a specified path prefix reaches a predefined number. For example, if you set a Cardinality condition where the `path` is set to `/foo` and the number of paths is set to `2`, the following variables would meet the condition in a RuntimeConfig resource: + `/foo/variable1 = \"value1\"` + `/foo/variable2 = \"value2\"` + `/bar/variable3 = \"value3\"` It would not satisfy the same condition with the `number` set to `3`, however, because there is only 2 paths that start with `/foo`. Cardinality conditions are recursive; all subtrees under the specific path prefix are counted.",
      "properties": {
        "number": {
          "type": "integer",
          "description": "The number variables under the `path` that must exist to meet this condition. Defaults to 1 if not specified."
        },
        "path": {
          "type": "string",
          "description": "The root of the variable subtree to monitor. For example, `/foo`."
        }
      },
      "type": "object",
      "required": [
        "number",
        "path"
      ]
    },
    "google-native:runtimeconfig/v1beta1:EndCondition": {
      "description": "The condition that a Waiter resource is waiting for.",
      "properties": {
        "cardinality": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:Cardinality",
          "description": "The cardinality of the `EndCondition`."
        }
      },
      "type": "object"
    },
    "google-native:runtimeconfig/v1beta1:EndConditionResponse": {
      "description": "The condition that a Waiter resource is waiting for.",
      "properties": {
        "cardinality": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:CardinalityResponse",
          "description": "The cardinality of the `EndCondition`."
        }
      },
      "type": "object",
      "required": [
        "cardinality"
      ]
    },
    "google-native:runtimeconfig/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:runtimeconfig/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:runtimeconfig/v1beta1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:secretmanager/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:secretmanager/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:secretmanager/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:secretmanager/v1:Automatic": {
      "description": "A replication policy that replicates the Secret payload without any restrictions.",
      "properties": {
        "customerManagedEncryption": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:CustomerManagedEncryption",
          "description": "Optional. The customer-managed encryption configuration of the Secret. If no configuration is provided, Google-managed default encryption is used. Updates to the Secret encryption configuration only apply to SecretVersions added afterwards. They do not apply retroactively to existing SecretVersions."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1:AutomaticResponse": {
      "description": "A replication policy that replicates the Secret payload without any restrictions.",
      "properties": {
        "customerManagedEncryption": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:CustomerManagedEncryptionResponse",
          "description": "Optional. The customer-managed encryption configuration of the Secret. If no configuration is provided, Google-managed default encryption is used. Updates to the Secret encryption configuration only apply to SecretVersions added afterwards. They do not apply retroactively to existing SecretVersions."
        }
      },
      "type": "object",
      "required": [
        "customerManagedEncryption"
      ]
    },
    "google-native:secretmanager/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:secretmanager/v1:CustomerManagedEncryption": {
      "description": "Configuration for encrypting secret payloads using customer-managed encryption keys (CMEK).",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The resource name of the Cloud KMS CryptoKey used to encrypt secret payloads. For secrets using the UserManaged replication policy type, Cloud KMS CryptoKeys must reside in the same location as the replica location. For secrets using the Automatic replication policy type, Cloud KMS CryptoKeys must reside in `global`. The expected format is `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:secretmanager/v1:CustomerManagedEncryptionResponse": {
      "description": "Configuration for encrypting secret payloads using customer-managed encryption keys (CMEK).",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The resource name of the Cloud KMS CryptoKey used to encrypt secret payloads. For secrets using the UserManaged replication policy type, Cloud KMS CryptoKeys must reside in the same location as the replica location. For secrets using the Automatic replication policy type, Cloud KMS CryptoKeys must reside in `global`. The expected format is `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:secretmanager/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:secretmanager/v1:Replica": {
      "description": "Represents a Replica for this Secret.",
      "properties": {
        "customerManagedEncryption": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:CustomerManagedEncryption",
          "description": "Optional. The customer-managed encryption configuration of the User-Managed Replica. If no configuration is provided, Google-managed default encryption is used. Updates to the Secret encryption configuration only apply to SecretVersions added afterwards. They do not apply retroactively to existing SecretVersions."
        },
        "location": {
          "type": "string",
          "description": "The canonical IDs of the location to replicate data. For example: `\"us-east1\"`."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1:ReplicaResponse": {
      "description": "Represents a Replica for this Secret.",
      "properties": {
        "customerManagedEncryption": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:CustomerManagedEncryptionResponse",
          "description": "Optional. The customer-managed encryption configuration of the User-Managed Replica. If no configuration is provided, Google-managed default encryption is used. Updates to the Secret encryption configuration only apply to SecretVersions added afterwards. They do not apply retroactively to existing SecretVersions."
        },
        "location": {
          "type": "string",
          "description": "The canonical IDs of the location to replicate data. For example: `\"us-east1\"`."
        }
      },
      "type": "object",
      "required": [
        "customerManagedEncryption",
        "location"
      ]
    },
    "google-native:secretmanager/v1:Replication": {
      "description": "A policy that defines the replication and encryption configuration of data.",
      "properties": {
        "automatic": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:Automatic",
          "description": "The Secret will automatically be replicated without any restrictions."
        },
        "userManaged": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:UserManaged",
          "description": "The Secret will only be replicated into the locations specified."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1:ReplicationResponse": {
      "description": "A policy that defines the replication and encryption configuration of data.",
      "properties": {
        "automatic": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:AutomaticResponse",
          "description": "The Secret will automatically be replicated without any restrictions."
        },
        "userManaged": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:UserManagedResponse",
          "description": "The Secret will only be replicated into the locations specified."
        }
      },
      "type": "object",
      "required": [
        "automatic",
        "userManaged"
      ]
    },
    "google-native:secretmanager/v1:Rotation": {
      "description": "The rotation time and period for a Secret. At next_rotation_time, Secret Manager will send a Pub/Sub notification to the topics configured on the Secret. Secret.topics must be set to configure rotation.",
      "properties": {
        "nextRotationTime": {
          "type": "string",
          "description": "Optional. Timestamp in UTC at which the Secret is scheduled to rotate. Cannot be set to less than 300s (5 min) in the future and at most 3153600000s (100 years). next_rotation_time MUST be set if rotation_period is set."
        },
        "rotationPeriod": {
          "type": "string",
          "description": "Input only. The Duration between rotation notifications. Must be in seconds and at least 3600s (1h) and at most 3153600000s (100 years). If rotation_period is set, next_rotation_time must be set. next_rotation_time will be advanced by this period when the service automatically sends rotation notifications."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1:RotationResponse": {
      "description": "The rotation time and period for a Secret. At next_rotation_time, Secret Manager will send a Pub/Sub notification to the topics configured on the Secret. Secret.topics must be set to configure rotation.",
      "properties": {
        "nextRotationTime": {
          "type": "string",
          "description": "Optional. Timestamp in UTC at which the Secret is scheduled to rotate. Cannot be set to less than 300s (5 min) in the future and at most 3153600000s (100 years). next_rotation_time MUST be set if rotation_period is set."
        },
        "rotationPeriod": {
          "type": "string",
          "description": "Input only. The Duration between rotation notifications. Must be in seconds and at least 3600s (1h) and at most 3153600000s (100 years). If rotation_period is set, next_rotation_time must be set. next_rotation_time will be advanced by this period when the service automatically sends rotation notifications."
        }
      },
      "type": "object",
      "required": [
        "nextRotationTime",
        "rotationPeriod"
      ]
    },
    "google-native:secretmanager/v1:Topic": {
      "description": "A Pub/Sub topic which Secret Manager will publish to when control plane events occur on this secret.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The resource name of the Pub/Sub topic that will be published to, in the following format: `projects/*/topics/*`. For publication to succeed, the Secret Manager service agent must have the `pubsub.topic.publish` permission on the topic. The Pub/Sub Publisher role (`roles/pubsub.publisher`) includes this permission."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:secretmanager/v1:TopicResponse": {
      "description": "A Pub/Sub topic which Secret Manager will publish to when control plane events occur on this secret.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The resource name of the Pub/Sub topic that will be published to, in the following format: `projects/*/topics/*`. For publication to succeed, the Secret Manager service agent must have the `pubsub.topic.publish` permission on the topic. The Pub/Sub Publisher role (`roles/pubsub.publisher`) includes this permission."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:secretmanager/v1:UserManaged": {
      "description": "A replication policy that replicates the Secret payload into the locations specified in Secret.replication.user_managed.replicas",
      "properties": {
        "replicas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:Replica"
          },
          "description": "The list of Replicas for this Secret. Cannot be empty."
        }
      },
      "type": "object",
      "required": [
        "replicas"
      ]
    },
    "google-native:secretmanager/v1:UserManagedResponse": {
      "description": "A replication policy that replicates the Secret payload into the locations specified in Secret.replication.user_managed.replicas",
      "properties": {
        "replicas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:ReplicaResponse"
          },
          "description": "The list of Replicas for this Secret. Cannot be empty."
        }
      },
      "type": "object",
      "required": [
        "replicas"
      ]
    },
    "google-native:secretmanager/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:secretmanager/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:secretmanager/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:secretmanager/v1beta1:Automatic": {
      "description": "A replication policy that replicates the Secret payload without any restrictions.",
      "type": "object"
    },
    "google-native:secretmanager/v1beta1:AutomaticResponse": {
      "description": "A replication policy that replicates the Secret payload without any restrictions.",
      "type": "object"
    },
    "google-native:secretmanager/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:secretmanager/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:secretmanager/v1beta1:Replica": {
      "description": "Represents a Replica for this Secret.",
      "properties": {
        "location": {
          "type": "string",
          "description": "The canonical IDs of the location to replicate data. For example: `\"us-east1\"`."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1beta1:ReplicaResponse": {
      "description": "Represents a Replica for this Secret.",
      "properties": {
        "location": {
          "type": "string",
          "description": "The canonical IDs of the location to replicate data. For example: `\"us-east1\"`."
        }
      },
      "type": "object",
      "required": [
        "location"
      ]
    },
    "google-native:secretmanager/v1beta1:Replication": {
      "description": "A policy that defines the replication configuration of data.",
      "properties": {
        "automatic": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:Automatic",
          "description": "The Secret will automatically be replicated without any restrictions."
        },
        "userManaged": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:UserManaged",
          "description": "The Secret will only be replicated into the locations specified."
        }
      },
      "type": "object"
    },
    "google-native:secretmanager/v1beta1:ReplicationResponse": {
      "description": "A policy that defines the replication configuration of data.",
      "properties": {
        "automatic": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:AutomaticResponse",
          "description": "The Secret will automatically be replicated without any restrictions."
        },
        "userManaged": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:UserManagedResponse",
          "description": "The Secret will only be replicated into the locations specified."
        }
      },
      "type": "object",
      "required": [
        "automatic",
        "userManaged"
      ]
    },
    "google-native:secretmanager/v1beta1:UserManaged": {
      "description": "A replication policy that replicates the Secret payload into the locations specified in Secret.replication.user_managed.replicas",
      "properties": {
        "replicas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:Replica"
          },
          "description": "The list of Replicas for this Secret. Cannot be empty."
        }
      },
      "type": "object",
      "required": [
        "replicas"
      ]
    },
    "google-native:secretmanager/v1beta1:UserManagedResponse": {
      "description": "A replication policy that replicates the Secret payload into the locations specified in Secret.replication.user_managed.replicas",
      "properties": {
        "replicas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:ReplicaResponse"
          },
          "description": "The list of Replicas for this Secret. Cannot be empty."
        }
      },
      "type": "object",
      "required": [
        "replicas"
      ]
    },
    "google-native:securitycenter/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:securitycenter/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:securitycenter/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:securitycenter/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:securitycenter/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:securitycenter/v1:FolderSecurityHealthAnalyticsSettingCustomModuleEnablementState": {
      "description": "The enablement state of the custom module.",
      "type": "string",
      "enum": [
        {
          "name": "EnablementStateUnspecified",
          "description": "Unspecified enablement state.",
          "value": "ENABLEMENT_STATE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "The module is enabled at the given CRM resource.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "The module is disabled at the given CRM resource.",
          "value": "DISABLED"
        },
        {
          "name": "Inherited",
          "description": "State is inherited from an ancestor module. The module will either be effectively ENABLED or DISABLED based on its closest non-inherited ancestor module in the CRM hierarchy.",
          "value": "INHERITED"
        }
      ]
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1CustomConfig": {
      "description": "Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify.",
      "properties": {
        "customOutput": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomOutputSpec",
          "description": "Custom output properties."
        },
        "description": {
          "type": "string",
          "description": "Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks."
        },
        "predicate": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:Expr",
          "description": "The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated."
        },
        "recommendation": {
          "type": "string",
          "description": "An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON."
        },
        "resourceSelector": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1ResourceSelector",
          "description": "The resource types that the custom module operates on. Each custom module can specify up to 5 resource types."
        },
        "severity": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfigSeverity",
          "description": "The severity to assign to findings generated by the module."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1CustomConfigResponse": {
      "description": "Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify.",
      "properties": {
        "customOutput": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomOutputSpecResponse",
          "description": "Custom output properties."
        },
        "description": {
          "type": "string",
          "description": "Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks."
        },
        "predicate": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:ExprResponse",
          "description": "The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated."
        },
        "recommendation": {
          "type": "string",
          "description": "An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON."
        },
        "resourceSelector": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1ResourceSelectorResponse",
          "description": "The resource types that the custom module operates on. Each custom module can specify up to 5 resource types."
        },
        "severity": {
          "type": "string",
          "description": "The severity to assign to findings generated by the module."
        }
      },
      "type": "object",
      "required": [
        "customOutput",
        "description",
        "predicate",
        "recommendation",
        "resourceSelector",
        "severity"
      ]
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1CustomConfigSeverity": {
      "description": "The severity to assign to findings generated by the module.",
      "type": "string",
      "enum": [
        {
          "name": "SeverityUnspecified",
          "description": "Unspecified severity.",
          "value": "SEVERITY_UNSPECIFIED"
        },
        {
          "name": "Critical",
          "description": "Critical severity.",
          "value": "CRITICAL"
        },
        {
          "name": "High",
          "description": "High severity.",
          "value": "HIGH"
        },
        {
          "name": "Medium",
          "description": "Medium severity.",
          "value": "MEDIUM"
        },
        {
          "name": "Low",
          "description": "Low severity.",
          "value": "LOW"
        }
      ]
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1CustomOutputSpec": {
      "description": "A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1Property"
          },
          "description": "A list of custom output properties to add to the finding."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1CustomOutputSpecResponse": {
      "description": "A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`.",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1PropertyResponse"
          },
          "description": "A list of custom output properties to add to the finding."
        }
      },
      "type": "object",
      "required": [
        "properties"
      ]
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1Property": {
      "description": "An individual name-value pair that defines a custom source property.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the property for the custom output."
        },
        "valueExpression": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:Expr",
          "description": "The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1PropertyResponse": {
      "description": "An individual name-value pair that defines a custom source property.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the property for the custom output."
        },
        "valueExpression": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:ExprResponse",
          "description": "The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks."
        }
      },
      "type": "object",
      "required": [
        "name",
        "valueExpression"
      ]
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1ResourceSelector": {
      "description": "Resource for selecting resource type.",
      "properties": {
        "resourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource types to run the detector on."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:GoogleCloudSecuritycenterV1ResourceSelectorResponse": {
      "description": "Resource for selecting resource type.",
      "properties": {
        "resourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource types to run the detector on."
        }
      },
      "type": "object",
      "required": [
        "resourceTypes"
      ]
    },
    "google-native:securitycenter/v1:OrganizationEventThreatDetectionSettingCustomModuleEnablementState": {
      "description": "The state of enablement for the module at the given level of the hierarchy.",
      "type": "string",
      "enum": [
        {
          "name": "EnablementStateUnspecified",
          "description": "Unspecified enablement state.",
          "value": "ENABLEMENT_STATE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "The module is enabled at the given level.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "The module is disabled at the given level.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:securitycenter/v1:OrganizationSecurityHealthAnalyticsSettingCustomModuleEnablementState": {
      "description": "The enablement state of the custom module.",
      "type": "string",
      "enum": [
        {
          "name": "EnablementStateUnspecified",
          "description": "Unspecified enablement state.",
          "value": "ENABLEMENT_STATE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "The module is enabled at the given CRM resource.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "The module is disabled at the given CRM resource.",
          "value": "DISABLED"
        },
        {
          "name": "Inherited",
          "description": "State is inherited from an ancestor module. The module will either be effectively ENABLED or DISABLED based on its closest non-inherited ancestor module in the CRM hierarchy.",
          "value": "INHERITED"
        }
      ]
    },
    "google-native:securitycenter/v1:ProjectSecurityHealthAnalyticsSettingCustomModuleEnablementState": {
      "description": "The enablement state of the custom module.",
      "type": "string",
      "enum": [
        {
          "name": "EnablementStateUnspecified",
          "description": "Unspecified enablement state.",
          "value": "ENABLEMENT_STATE_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "The module is enabled at the given CRM resource.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "The module is disabled at the given CRM resource.",
          "value": "DISABLED"
        },
        {
          "name": "Inherited",
          "description": "State is inherited from an ancestor module. The module will either be effectively ENABLED or DISABLED based on its closest non-inherited ancestor module in the CRM hierarchy.",
          "value": "INHERITED"
        }
      ]
    },
    "google-native:securitycenter/v1:StreamingConfig": {
      "description": "The config for streaming-based notifications, which send each event as soon as it is detected.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Expression that defines the filter to apply across create/update events of assets or findings as specified by the event type. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1:StreamingConfigResponse": {
      "description": "The config for streaming-based notifications, which send each event as soon as it is detected.",
      "properties": {
        "filter": {
          "type": "string",
          "description": "Expression that defines the filter to apply across create/update events of assets or findings as specified by the event type. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes."
        }
      },
      "type": "object",
      "required": [
        "filter"
      ]
    },
    "google-native:securitycenter/v1beta1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1beta1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1beta1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1beta1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:securitycenter/v1beta1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:securitycenter%2Fv1beta1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1beta1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:securitycenter/v1beta1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:securitycenter/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:securitycenter%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:securitycenter%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:securitycenter/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:securitycenter/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:servicedirectory/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:servicedirectory%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:servicedirectory/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:servicedirectory%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:servicedirectory/v1:EndpointResponse": {
      "description": "An individual endpoint that provides a service. The service must already exist to create an endpoint.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The Google Compute Engine network (VPC) of the endpoint in the format `projects//locations/global/networks/*`. The project must be specified by project number (project id is rejected). Incorrectly formatted networks are rejected, we also check to make sure that you have the servicedirectory.networks.attach permission on the project specified."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Service Directory rejects values outside of `[0, 65535]`."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique identifier of the endpoint in the UUID4 format."
        }
      },
      "type": "object",
      "required": [
        "address",
        "annotations",
        "name",
        "network",
        "port",
        "uid"
      ]
    },
    "google-native:servicedirectory/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:servicedirectory/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:servicedirectory/v1beta1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:servicedirectory/v1beta1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:servicedirectory/v1beta1:EndpointResponse": {
      "description": "An individual endpoint that provides a service. The service must already exist to create an endpoint.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the endpoint was created."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The Google Compute Engine network (VPC) of the endpoint in the format `projects//locations/global/networks/*`. The project must be specified by project number (project id is rejected). Incorrectly formatted networks are rejected, but no other validation is performed on this field (ex. network or project existence, reachability, or permissions)."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Service Directory rejects values outside of `[0, 65535]`."
        },
        "uid": {
          "type": "string",
          "description": "A globally unique identifier (in UUID4 format) for this endpoint."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the endpoint was last updated."
        }
      },
      "type": "object",
      "required": [
        "address",
        "createTime",
        "metadata",
        "name",
        "network",
        "port",
        "uid",
        "updateTime"
      ]
    },
    "google-native:servicedirectory/v1beta1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:servicedirectory/v1beta1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:servicemanagement/v1:Api": {
      "description": "Api is a light-weight descriptor for an API Interface. Interfaces are also described as \"protocol buffer services\" in some contexts, such as by the \"service\" keyword in a .proto file, but they are different from API Services, which represent a concrete implementation of an interface as opposed to simply a description of methods and bindings. They are also sometimes simply referred to as \"APIs\" in other contexts, such as the name of this message itself. See https://cloud.google.com/apis/design/glossary for detailed terminology.",
      "properties": {
        "methods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Method"
          },
          "description": "The methods of this interface, in unspecified order."
        },
        "mixins": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Mixin"
          },
          "description": "Included interfaces. See Mixin."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified name of this interface, including package name followed by the interface's simple name."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Option"
          },
          "description": "Any metadata attached to the interface."
        },
        "sourceContext": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SourceContext",
          "description": "Source context for the protocol buffer service represented by this message."
        },
        "syntax": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:ApiSyntax",
          "description": "The source syntax of the service."
        },
        "version": {
          "type": "string",
          "description": "A version string for this interface. If specified, must have the form `major-version.minor-version`, as in `1.10`. If the minor version is omitted, it defaults to zero. If the entire version field is empty, the major version is derived from the package name, as outlined below. If the field is not empty, the version in the package name will be verified to be consistent with what is provided here. The versioning schema uses [semantic versioning](http://semver.org) where the major version number indicates a breaking change and the minor version an additive, non-breaking change. Both version numbers are signals to users what to expect from different versions, and should be carefully chosen based on the product plan. The major version is also reflected in the package name of the interface, which must end in `v`, as in `google.feature.v1`. For major versions 0 and 1, the suffix can be omitted. Zero major versions must only be used for experimental, non-GA interfaces. "
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:ApiResponse": {
      "description": "Api is a light-weight descriptor for an API Interface. Interfaces are also described as \"protocol buffer services\" in some contexts, such as by the \"service\" keyword in a .proto file, but they are different from API Services, which represent a concrete implementation of an interface as opposed to simply a description of methods and bindings. They are also sometimes simply referred to as \"APIs\" in other contexts, such as the name of this message itself. See https://cloud.google.com/apis/design/glossary for detailed terminology.",
      "properties": {
        "methods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MethodResponse"
          },
          "description": "The methods of this interface, in unspecified order."
        },
        "mixins": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MixinResponse"
          },
          "description": "Included interfaces. See Mixin."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified name of this interface, including package name followed by the interface's simple name."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:OptionResponse"
          },
          "description": "Any metadata attached to the interface."
        },
        "sourceContext": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SourceContextResponse",
          "description": "Source context for the protocol buffer service represented by this message."
        },
        "syntax": {
          "type": "string",
          "description": "The source syntax of the service."
        },
        "version": {
          "type": "string",
          "description": "A version string for this interface. If specified, must have the form `major-version.minor-version`, as in `1.10`. If the minor version is omitted, it defaults to zero. If the entire version field is empty, the major version is derived from the package name, as outlined below. If the field is not empty, the version in the package name will be verified to be consistent with what is provided here. The versioning schema uses [semantic versioning](http://semver.org) where the major version number indicates a breaking change and the minor version an additive, non-breaking change. Both version numbers are signals to users what to expect from different versions, and should be carefully chosen based on the product plan. The major version is also reflected in the package name of the interface, which must end in `v`, as in `google.feature.v1`. For major versions 0 and 1, the suffix can be omitted. Zero major versions must only be used for experimental, non-GA interfaces. "
        }
      },
      "type": "object",
      "required": [
        "methods",
        "mixins",
        "name",
        "options",
        "sourceContext",
        "syntax",
        "version"
      ]
    },
    "google-native:servicemanagement/v1:ApiSyntax": {
      "description": "The source syntax of the service.",
      "type": "string",
      "enum": [
        {
          "name": "SyntaxProto2",
          "description": "Syntax `proto2`.",
          "value": "SYNTAX_PROTO2"
        },
        {
          "name": "SyntaxProto3",
          "description": "Syntax `proto3`.",
          "value": "SYNTAX_PROTO3"
        },
        {
          "name": "SyntaxEditions",
          "description": "Syntax `editions`.",
          "value": "SYNTAX_EDITIONS"
        }
      ]
    },
    "google-native:servicemanagement/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:servicemanagement/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:servicemanagement/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:servicemanagement/v1:AuthProvider": {
      "description": "Configuration for an authentication provider, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
      "properties": {
        "audiences": {
          "type": "string",
          "description": "The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted. When this setting is absent, JWTs with audiences: - \"https://[service.name]/[google.protobuf.Api.name]\" - \"https://[service.name]/\" will be accepted. For example, if no audiences are in the setting, LibraryService API will accept JWTs with the following audiences: - https://library-example.googleapis.com/google.example.library.v1.LibraryService - https://library-example.googleapis.com/ Example: audiences: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com"
        },
        "authorizationUrl": {
          "type": "string",
          "description": "Redirect URL if JWT token is required but not present or is expired. Implement authorizationUrl of securityDefinitions in OpenAPI spec."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the auth provider. It will be referred to by `AuthRequirement.provider_id`. Example: \"bookstore_auth\"."
        },
        "issuer": {
          "type": "string",
          "description": "Identifies the principal that issued the JWT. See https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1 Usually a URL or an email address. Example: https://securetoken.google.com Example: 1234567-compute@developer.gserviceaccount.com"
        },
        "jwksUri": {
          "type": "string",
          "description": "URL of the provider's public key set to validate signature of the JWT. See [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata). Optional if the key set document: - can be retrieved from [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) of the issuer. - can be inferred from the email domain of the issuer (e.g. a Google service account). Example: https://www.googleapis.com/oauth2/v1/certs"
        },
        "jwtLocations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:JwtLocation"
          },
          "description": "Defines the locations to extract the JWT. For now it is only used by the Cloud Endpoints to store the OpenAPI extension [x-google-jwt-locations] (https://cloud.google.com/endpoints/docs/openapi/openapi-extensions#x-google-jwt-locations) JWT locations can be one of HTTP headers, URL query parameters or cookies. The rule is that the first match wins. If not specified, default to use following 3 locations: 1) Authorization: Bearer 2) x-goog-iap-jwt-assertion 3) access_token query parameter Default locations can be specified as followings: jwt_locations: - header: Authorization value_prefix: \"Bearer \" - header: x-goog-iap-jwt-assertion - query: access_token"
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:AuthProviderResponse": {
      "description": "Configuration for an authentication provider, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
      "properties": {
        "audiences": {
          "type": "string",
          "description": "The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted. When this setting is absent, JWTs with audiences: - \"https://[service.name]/[google.protobuf.Api.name]\" - \"https://[service.name]/\" will be accepted. For example, if no audiences are in the setting, LibraryService API will accept JWTs with the following audiences: - https://library-example.googleapis.com/google.example.library.v1.LibraryService - https://library-example.googleapis.com/ Example: audiences: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com"
        },
        "authorizationUrl": {
          "type": "string",
          "description": "Redirect URL if JWT token is required but not present or is expired. Implement authorizationUrl of securityDefinitions in OpenAPI spec."
        },
        "issuer": {
          "type": "string",
          "description": "Identifies the principal that issued the JWT. See https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1 Usually a URL or an email address. Example: https://securetoken.google.com Example: 1234567-compute@developer.gserviceaccount.com"
        },
        "jwksUri": {
          "type": "string",
          "description": "URL of the provider's public key set to validate signature of the JWT. See [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata). Optional if the key set document: - can be retrieved from [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) of the issuer. - can be inferred from the email domain of the issuer (e.g. a Google service account). Example: https://www.googleapis.com/oauth2/v1/certs"
        },
        "jwtLocations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:JwtLocationResponse"
          },
          "description": "Defines the locations to extract the JWT. For now it is only used by the Cloud Endpoints to store the OpenAPI extension [x-google-jwt-locations] (https://cloud.google.com/endpoints/docs/openapi/openapi-extensions#x-google-jwt-locations) JWT locations can be one of HTTP headers, URL query parameters or cookies. The rule is that the first match wins. If not specified, default to use following 3 locations: 1) Authorization: Bearer 2) x-goog-iap-jwt-assertion 3) access_token query parameter Default locations can be specified as followings: jwt_locations: - header: Authorization value_prefix: \"Bearer \" - header: x-goog-iap-jwt-assertion - query: access_token"
        }
      },
      "type": "object",
      "required": [
        "audiences",
        "authorizationUrl",
        "issuer",
        "jwksUri",
        "jwtLocations"
      ]
    },
    "google-native:servicemanagement/v1:AuthRequirement": {
      "description": "User-defined authentication requirements, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
      "properties": {
        "audiences": {
          "type": "string",
          "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is implemented and accepted in all the runtime components. The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted. When this setting is absent, only JWTs with audience \"https://Service_name/API_name\" will be accepted. For example, if no audiences are in the setting, LibraryService API will only accept JWTs with the following audience \"https://library-example.googleapis.com/google.example.library.v1.LibraryService\". Example: audiences: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com"
        },
        "providerId": {
          "type": "string",
          "description": "id from authentication provider. Example: provider_id: bookstore_auth"
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:AuthRequirementResponse": {
      "description": "User-defined authentication requirements, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
      "properties": {
        "audiences": {
          "type": "string",
          "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is implemented and accepted in all the runtime components. The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted. When this setting is absent, only JWTs with audience \"https://Service_name/API_name\" will be accepted. For example, if no audiences are in the setting, LibraryService API will only accept JWTs with the following audience \"https://library-example.googleapis.com/google.example.library.v1.LibraryService\". Example: audiences: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com"
        },
        "providerId": {
          "type": "string",
          "description": "id from authentication provider. Example: provider_id: bookstore_auth"
        }
      },
      "type": "object",
      "required": [
        "audiences",
        "providerId"
      ]
    },
    "google-native:servicemanagement/v1:Authentication": {
      "description": "`Authentication` defines the authentication configuration for API methods provided by an API service. Example: name: calendar.googleapis.com authentication: providers: - id: google_calendar_auth jwks_uri: https://www.googleapis.com/oauth2/v1/certs issuer: https://securetoken.google.com rules: - selector: \"*\" requirements: provider_id: google_calendar_auth - selector: google.calendar.Delegate oauth: canonical_scopes: https://www.googleapis.com/auth/calendar.read",
      "properties": {
        "providers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuthProvider"
          },
          "description": "Defines a set of authentication providers that a service supports."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuthenticationRule"
          },
          "description": "A list of authentication rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:AuthenticationResponse": {
      "description": "`Authentication` defines the authentication configuration for API methods provided by an API service. Example: name: calendar.googleapis.com authentication: providers: - id: google_calendar_auth jwks_uri: https://www.googleapis.com/oauth2/v1/certs issuer: https://securetoken.google.com rules: - selector: \"*\" requirements: provider_id: google_calendar_auth - selector: google.calendar.Delegate oauth: canonical_scopes: https://www.googleapis.com/auth/calendar.read",
      "properties": {
        "providers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuthProviderResponse"
          },
          "description": "Defines a set of authentication providers that a service supports."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuthenticationRuleResponse"
          },
          "description": "A list of authentication rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object",
      "required": [
        "providers",
        "rules"
      ]
    },
    "google-native:servicemanagement/v1:AuthenticationRule": {
      "description": "Authentication rules for the service. By default, if a method has any authentication requirements, every request must include a valid credential matching one of the requirements. It's an error to include more than one kind of credential in a single request. If a method doesn't have any auth requirements, request credentials will be ignored.",
      "properties": {
        "allowWithoutCredential": {
          "type": "boolean",
          "description": "If true, the service accepts API keys without any other credential. This flag only applies to HTTP and gRPC requests."
        },
        "oauth": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:OAuthRequirements",
          "description": "The requirements for OAuth credentials."
        },
        "requirements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuthRequirement"
          },
          "description": "Requirements for additional authentication providers."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:AuthenticationRuleResponse": {
      "description": "Authentication rules for the service. By default, if a method has any authentication requirements, every request must include a valid credential matching one of the requirements. It's an error to include more than one kind of credential in a single request. If a method doesn't have any auth requirements, request credentials will be ignored.",
      "properties": {
        "allowWithoutCredential": {
          "type": "boolean",
          "description": "If true, the service accepts API keys without any other credential. This flag only applies to HTTP and gRPC requests."
        },
        "oauth": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:OAuthRequirementsResponse",
          "description": "The requirements for OAuth credentials."
        },
        "requirements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuthRequirementResponse"
          },
          "description": "Requirements for additional authentication providers."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object",
      "required": [
        "allowWithoutCredential",
        "oauth",
        "requirements",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:Backend": {
      "description": "`Backend` defines the backend configuration for a service.",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:BackendRule"
          },
          "description": "A list of API backend rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:BackendResponse": {
      "description": "`Backend` defines the backend configuration for a service.",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:BackendRuleResponse"
          },
          "description": "A list of API backend rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object",
      "required": [
        "rules"
      ]
    },
    "google-native:servicemanagement/v1:BackendRule": {
      "description": "A backend rule provides configuration for an individual API element.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The address of the API backend. The scheme is used to determine the backend protocol and security. The following schemes are accepted: SCHEME PROTOCOL SECURITY http:// HTTP None https:// HTTP TLS grpc:// gRPC None grpcs:// gRPC TLS It is recommended to explicitly include a scheme. Leaving out the scheme may cause constrasting behaviors across platforms. If the port is unspecified, the default is: - 80 for schemes without TLS - 443 for schemes with TLS For HTTP backends, use protocol to specify the protocol version."
        },
        "deadline": {
          "type": "number",
          "description": "The number of seconds to wait for a response from a request. The default varies based on the request protocol and deployment environment."
        },
        "disableAuth": {
          "type": "boolean",
          "description": "When disable_auth is true, a JWT ID token won't be generated and the original \"Authorization\" HTTP header will be preserved. If the header is used to carry the original token and is expected by the backend, this field must be set to true to preserve the header."
        },
        "jwtAudience": {
          "type": "string",
          "description": "The JWT audience is used when generating a JWT ID token for the backend. This ID token will be added in the HTTP \"authorization\" header, and sent to the backend."
        },
        "minDeadline": {
          "type": "number",
          "description": "Deprecated, do not use.",
          "deprecationMessage": "Deprecated, do not use."
        },
        "operationDeadline": {
          "type": "number",
          "description": "The number of seconds to wait for the completion of a long running operation. The default is no deadline."
        },
        "overridesByRequestProtocol": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map between request protocol and the backend address."
        },
        "pathTranslation": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:BackendRulePathTranslation"
        },
        "protocol": {
          "type": "string",
          "description": "The protocol used for sending a request to the backend. The supported values are \"http/1.1\" and \"h2\". The default value is inferred from the scheme in the address field: SCHEME PROTOCOL http:// http/1.1 https:// http/1.1 grpc:// h2 grpcs:// h2 For secure HTTP backends (https://) that support HTTP/2, set this field to \"h2\" for improved performance. Configuring this field to non-default values is only supported for secure HTTP backends. This field will be ignored for all other backends. See https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for more details on the supported values."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:BackendRulePathTranslation": {
      "type": "string",
      "enum": [
        {
          "name": "PathTranslationUnspecified",
          "value": "PATH_TRANSLATION_UNSPECIFIED"
        },
        {
          "name": "ConstantAddress",
          "description": "Use the backend address as-is, with no modification to the path. If the URL pattern contains variables, the variable names and values will be appended to the query string. If a query string parameter and a URL pattern variable have the same name, this may result in duplicate keys in the query string. # Examples Given the following operation config: Method path: /api/company/{cid}/user/{uid} Backend address: https://example.cloudfunctions.net/getUser Requests to the following request paths will call the backend at the translated path: Request path: /api/company/widgetworks/user/johndoe Translated: https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe Request path: /api/company/widgetworks/user/johndoe?timezone=EST Translated: https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe",
          "value": "CONSTANT_ADDRESS"
        },
        {
          "name": "AppendPathToAddress",
          "description": "The request path will be appended to the backend address. # Examples Given the following operation config: Method path: /api/company/{cid}/user/{uid} Backend address: https://example.appspot.com Requests to the following request paths will call the backend at the translated path: Request path: /api/company/widgetworks/user/johndoe Translated: https://example.appspot.com/api/company/widgetworks/user/johndoe Request path: /api/company/widgetworks/user/johndoe?timezone=EST Translated: https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST",
          "value": "APPEND_PATH_TO_ADDRESS"
        }
      ]
    },
    "google-native:servicemanagement/v1:BackendRuleResponse": {
      "description": "A backend rule provides configuration for an individual API element.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The address of the API backend. The scheme is used to determine the backend protocol and security. The following schemes are accepted: SCHEME PROTOCOL SECURITY http:// HTTP None https:// HTTP TLS grpc:// gRPC None grpcs:// gRPC TLS It is recommended to explicitly include a scheme. Leaving out the scheme may cause constrasting behaviors across platforms. If the port is unspecified, the default is: - 80 for schemes without TLS - 443 for schemes with TLS For HTTP backends, use protocol to specify the protocol version."
        },
        "deadline": {
          "type": "number",
          "description": "The number of seconds to wait for a response from a request. The default varies based on the request protocol and deployment environment."
        },
        "disableAuth": {
          "type": "boolean",
          "description": "When disable_auth is true, a JWT ID token won't be generated and the original \"Authorization\" HTTP header will be preserved. If the header is used to carry the original token and is expected by the backend, this field must be set to true to preserve the header."
        },
        "jwtAudience": {
          "type": "string",
          "description": "The JWT audience is used when generating a JWT ID token for the backend. This ID token will be added in the HTTP \"authorization\" header, and sent to the backend."
        },
        "minDeadline": {
          "type": "number",
          "description": "Deprecated, do not use.",
          "deprecationMessage": "Deprecated, do not use."
        },
        "operationDeadline": {
          "type": "number",
          "description": "The number of seconds to wait for the completion of a long running operation. The default is no deadline."
        },
        "overridesByRequestProtocol": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map between request protocol and the backend address."
        },
        "pathTranslation": {
          "type": "string"
        },
        "protocol": {
          "type": "string",
          "description": "The protocol used for sending a request to the backend. The supported values are \"http/1.1\" and \"h2\". The default value is inferred from the scheme in the address field: SCHEME PROTOCOL http:// http/1.1 https:// http/1.1 grpc:// h2 grpcs:// h2 For secure HTTP backends (https://) that support HTTP/2, set this field to \"h2\" for improved performance. Configuring this field to non-default values is only supported for secure HTTP backends. This field will be ignored for all other backends. See https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for more details on the supported values."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object",
      "required": [
        "address",
        "deadline",
        "disableAuth",
        "jwtAudience",
        "minDeadline",
        "operationDeadline",
        "overridesByRequestProtocol",
        "pathTranslation",
        "protocol",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:Billing": {
      "description": "Billing related configuration of the service. The following example shows how to configure monitored resources and metrics for billing, `consumer_destinations` is the only supported destination and the monitored resources need at least one label key `cloud.googleapis.com/location` to indicate the location of the billing usage, using different monitored resources between monitoring and billing is recommended so they can be evolved independently: monitored_resources: - type: library.googleapis.com/billing_branch labels: - key: cloud.googleapis.com/location description: | Predefined label to support billing location restriction. - key: city description: | Custom label to define the city where the library branch is located in. - key: name description: Custom label to define the name of the library branch. metrics: - name: library.googleapis.com/book/borrowed_count metric_kind: DELTA value_type: INT64 unit: \"1\" billing: consumer_destinations: - monitored_resource: library.googleapis.com/billing_branch metrics: - library.googleapis.com/book/borrowed_count",
      "properties": {
        "consumerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:BillingDestination"
          },
          "description": "Billing configurations for sending metrics to the consumer project. There can be multiple consumer destinations per service, each one must have a different monitored resource type. A metric can be used in at most one consumer destination."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:BillingDestination": {
      "description": "Configuration of a specific billing destination (Currently only support bill against consumer project).",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the metrics to report to this billing destination. Each name must be defined in Service.metrics section."
        },
        "monitoredResource": {
          "type": "string",
          "description": "The monitored resource type. The type must be defined in Service.monitored_resources section."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:BillingDestinationResponse": {
      "description": "Configuration of a specific billing destination (Currently only support bill against consumer project).",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the metrics to report to this billing destination. Each name must be defined in Service.metrics section."
        },
        "monitoredResource": {
          "type": "string",
          "description": "The monitored resource type. The type must be defined in Service.monitored_resources section."
        }
      },
      "type": "object",
      "required": [
        "metrics",
        "monitoredResource"
      ]
    },
    "google-native:servicemanagement/v1:BillingResponse": {
      "description": "Billing related configuration of the service. The following example shows how to configure monitored resources and metrics for billing, `consumer_destinations` is the only supported destination and the monitored resources need at least one label key `cloud.googleapis.com/location` to indicate the location of the billing usage, using different monitored resources between monitoring and billing is recommended so they can be evolved independently: monitored_resources: - type: library.googleapis.com/billing_branch labels: - key: cloud.googleapis.com/location description: | Predefined label to support billing location restriction. - key: city description: | Custom label to define the city where the library branch is located in. - key: name description: Custom label to define the name of the library branch. metrics: - name: library.googleapis.com/book/borrowed_count metric_kind: DELTA value_type: INT64 unit: \"1\" billing: consumer_destinations: - monitored_resource: library.googleapis.com/billing_branch metrics: - library.googleapis.com/book/borrowed_count",
      "properties": {
        "consumerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:BillingDestinationResponse"
          },
          "description": "Billing configurations for sending metrics to the consumer project. There can be multiple consumer destinations per service, each one must have a different monitored resource type. A metric can be used in at most one consumer destination."
        }
      },
      "type": "object",
      "required": [
        "consumerDestinations"
      ]
    },
    "google-native:servicemanagement/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:servicemanagement/v1:ClientLibrarySettings": {
      "description": "Details about how and where to publish client libraries.",
      "properties": {
        "cppSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CppSettings",
          "description": "Settings for C++ client libraries."
        },
        "dotnetSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:DotnetSettings",
          "description": "Settings for .NET client libraries."
        },
        "goSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:GoSettings",
          "description": "Settings for Go client libraries."
        },
        "javaSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:JavaSettings",
          "description": "Settings for legacy Java features, supported in the Service YAML."
        },
        "launchStage": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:ClientLibrarySettingsLaunchStage",
          "description": "Launch stage of this version of the API."
        },
        "nodeSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:NodeSettings",
          "description": "Settings for Node client libraries."
        },
        "phpSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:PhpSettings",
          "description": "Settings for PHP client libraries."
        },
        "pythonSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:PythonSettings",
          "description": "Settings for Python client libraries."
        },
        "restNumericEnums": {
          "type": "boolean",
          "description": "When using transport=rest, the client request will encode enums as numbers rather than strings."
        },
        "rubySettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:RubySettings",
          "description": "Settings for Ruby client libraries."
        },
        "version": {
          "type": "string",
          "description": "Version of the API to apply these settings to. This is the full protobuf package for the API, ending in the version element. Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\"."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:ClientLibrarySettingsLaunchStage": {
      "description": "Launch stage of this version of the API.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:servicemanagement/v1:ClientLibrarySettingsResponse": {
      "description": "Details about how and where to publish client libraries.",
      "properties": {
        "cppSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CppSettingsResponse",
          "description": "Settings for C++ client libraries."
        },
        "dotnetSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:DotnetSettingsResponse",
          "description": "Settings for .NET client libraries."
        },
        "goSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:GoSettingsResponse",
          "description": "Settings for Go client libraries."
        },
        "javaSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:JavaSettingsResponse",
          "description": "Settings for legacy Java features, supported in the Service YAML."
        },
        "launchStage": {
          "type": "string",
          "description": "Launch stage of this version of the API."
        },
        "nodeSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:NodeSettingsResponse",
          "description": "Settings for Node client libraries."
        },
        "phpSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:PhpSettingsResponse",
          "description": "Settings for PHP client libraries."
        },
        "pythonSettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:PythonSettingsResponse",
          "description": "Settings for Python client libraries."
        },
        "restNumericEnums": {
          "type": "boolean",
          "description": "When using transport=rest, the client request will encode enums as numbers rather than strings."
        },
        "rubySettings": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:RubySettingsResponse",
          "description": "Settings for Ruby client libraries."
        },
        "version": {
          "type": "string",
          "description": "Version of the API to apply these settings to. This is the full protobuf package for the API, ending in the version element. Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\"."
        }
      },
      "type": "object",
      "required": [
        "cppSettings",
        "dotnetSettings",
        "goSettings",
        "javaSettings",
        "launchStage",
        "nodeSettings",
        "phpSettings",
        "pythonSettings",
        "restNumericEnums",
        "rubySettings",
        "version"
      ]
    },
    "google-native:servicemanagement/v1:CommonLanguageSettings": {
      "description": "Required information for every language.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsDestinationsItem"
          },
          "description": "The destination where API teams want this client library to be published."
        },
        "referenceDocsUri": {
          "type": "string",
          "description": "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest"
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:CommonLanguageSettingsDestinationsItem": {
      "type": "string",
      "enum": [
        {
          "name": "ClientLibraryDestinationUnspecified",
          "description": "Client libraries will neither be generated nor published to package managers.",
          "value": "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED"
        },
        {
          "name": "Github",
          "description": "Generate the client library in a repo under github.com/googleapis, but don't publish it to package managers.",
          "value": "GITHUB"
        },
        {
          "name": "PackageManager",
          "description": "Publish the library to package managers like nuget.org and npmjs.com.",
          "value": "PACKAGE_MANAGER"
        }
      ]
    },
    "google-native:servicemanagement/v1:CommonLanguageSettingsResponse": {
      "description": "Required information for every language.",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The destination where API teams want this client library to be published."
        },
        "referenceDocsUri": {
          "type": "string",
          "description": "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest"
        }
      },
      "type": "object",
      "required": [
        "destinations",
        "referenceDocsUri"
      ]
    },
    "google-native:servicemanagement/v1:Context": {
      "description": "`Context` defines which contexts an API requests. Example: context: rules: - selector: \"*\" requested: - google.rpc.context.ProjectContext - google.rpc.context.OriginContext The above specifies that all methods in the API request `google.rpc.context.ProjectContext` and `google.rpc.context.OriginContext`. Available context types are defined in package `google.rpc.context`. This also provides mechanism to allowlist any protobuf message extension that can be sent in grpc metadata using “x-goog-ext--bin” and “x-goog-ext--jspb” format. For example, list any service specific protobuf types that can appear in grpc metadata as follows in your yaml file: Example: context: rules: - selector: \"google.example.library.v1.LibraryService.CreateBook\" allowed_request_extensions: - google.foo.v1.NewExtension allowed_response_extensions: - google.foo.v1.NewExtension You can also specify extension ID instead of fully qualified extension name here.",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:ContextRule"
          },
          "description": "A list of RPC context rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:ContextResponse": {
      "description": "`Context` defines which contexts an API requests. Example: context: rules: - selector: \"*\" requested: - google.rpc.context.ProjectContext - google.rpc.context.OriginContext The above specifies that all methods in the API request `google.rpc.context.ProjectContext` and `google.rpc.context.OriginContext`. Available context types are defined in package `google.rpc.context`. This also provides mechanism to allowlist any protobuf message extension that can be sent in grpc metadata using “x-goog-ext--bin” and “x-goog-ext--jspb” format. For example, list any service specific protobuf types that can appear in grpc metadata as follows in your yaml file: Example: context: rules: - selector: \"google.example.library.v1.LibraryService.CreateBook\" allowed_request_extensions: - google.foo.v1.NewExtension allowed_response_extensions: - google.foo.v1.NewExtension You can also specify extension ID instead of fully qualified extension name here.",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:ContextRuleResponse"
          },
          "description": "A list of RPC context rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object",
      "required": [
        "rules"
      ]
    },
    "google-native:servicemanagement/v1:ContextRule": {
      "description": "A context rule provides information about the context for an individual API element.",
      "properties": {
        "allowedRequestExtensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of full type names or extension IDs of extensions allowed in grpc side channel from client to backend."
        },
        "allowedResponseExtensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of full type names or extension IDs of extensions allowed in grpc side channel from backend to client."
        },
        "provided": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of full type names of provided contexts."
        },
        "requested": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of full type names of requested contexts."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:ContextRuleResponse": {
      "description": "A context rule provides information about the context for an individual API element.",
      "properties": {
        "allowedRequestExtensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of full type names or extension IDs of extensions allowed in grpc side channel from client to backend."
        },
        "allowedResponseExtensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of full type names or extension IDs of extensions allowed in grpc side channel from backend to client."
        },
        "provided": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of full type names of provided contexts."
        },
        "requested": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of full type names of requested contexts."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object",
      "required": [
        "allowedRequestExtensions",
        "allowedResponseExtensions",
        "provided",
        "requested",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:Control": {
      "description": "Selects and configures the service controller used by the service. Example: control: environment: servicecontrol.googleapis.com",
      "properties": {
        "environment": {
          "type": "string",
          "description": "The service controller environment to use. If empty, no control plane feature (like quota and billing) will be enabled. The recommended value for most services is servicecontrol.googleapis.com"
        },
        "methodPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MethodPolicy"
          },
          "description": "Defines policies applying to the API methods of the service."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:ControlResponse": {
      "description": "Selects and configures the service controller used by the service. Example: control: environment: servicecontrol.googleapis.com",
      "properties": {
        "environment": {
          "type": "string",
          "description": "The service controller environment to use. If empty, no control plane feature (like quota and billing) will be enabled. The recommended value for most services is servicecontrol.googleapis.com"
        },
        "methodPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MethodPolicyResponse"
          },
          "description": "Defines policies applying to the API methods of the service."
        }
      },
      "type": "object",
      "required": [
        "environment",
        "methodPolicies"
      ]
    },
    "google-native:servicemanagement/v1:CppSettings": {
      "description": "Settings for C++ client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettings",
          "description": "Some settings."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:CppSettingsResponse": {
      "description": "Settings for C++ client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsResponse",
          "description": "Some settings."
        }
      },
      "type": "object",
      "required": [
        "common"
      ]
    },
    "google-native:servicemanagement/v1:CustomError": {
      "description": "Customize service error responses. For example, list any service specific protobuf types that can appear in error detail lists of error responses. Example: custom_error: types: - google.foo.v1.CustomError - google.foo.v1.AnotherError",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:CustomErrorRule"
          },
          "description": "The list of custom error rules that apply to individual API messages. **NOTE:** All service configuration rules follow \"last one wins\" order."
        },
        "types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:CustomErrorResponse": {
      "description": "Customize service error responses. For example, list any service specific protobuf types that can appear in error detail lists of error responses. Example: custom_error: types: - google.foo.v1.CustomError - google.foo.v1.AnotherError",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:CustomErrorRuleResponse"
          },
          "description": "The list of custom error rules that apply to individual API messages. **NOTE:** All service configuration rules follow \"last one wins\" order."
        },
        "types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'."
        }
      },
      "type": "object",
      "required": [
        "rules",
        "types"
      ]
    },
    "google-native:servicemanagement/v1:CustomErrorRule": {
      "description": "A custom error rule.",
      "properties": {
        "isErrorType": {
          "type": "boolean",
          "description": "Mark this message as possible payload in error response. Otherwise, objects of this type will be filtered when they appear in error payload."
        },
        "selector": {
          "type": "string",
          "description": "Selects messages to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:CustomErrorRuleResponse": {
      "description": "A custom error rule.",
      "properties": {
        "isErrorType": {
          "type": "boolean",
          "description": "Mark this message as possible payload in error response. Otherwise, objects of this type will be filtered when they appear in error payload."
        },
        "selector": {
          "type": "string",
          "description": "Selects messages to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object",
      "required": [
        "isErrorType",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:CustomHttpPattern": {
      "description": "A custom pattern is used for defining custom HTTP verb.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The name of this custom HTTP verb."
        },
        "path": {
          "type": "string",
          "description": "The path matched by this custom verb."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:CustomHttpPatternResponse": {
      "description": "A custom pattern is used for defining custom HTTP verb.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The name of this custom HTTP verb."
        },
        "path": {
          "type": "string",
          "description": "The path matched by this custom verb."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "path"
      ]
    },
    "google-native:servicemanagement/v1:DeleteServiceStrategy": {
      "description": "Strategy used to delete a service. This strategy is a placeholder only used by the system generated rollout to delete a service.",
      "type": "object"
    },
    "google-native:servicemanagement/v1:DeleteServiceStrategyResponse": {
      "description": "Strategy used to delete a service. This strategy is a placeholder only used by the system generated rollout to delete a service.",
      "type": "object"
    },
    "google-native:servicemanagement/v1:Documentation": {
      "description": "`Documentation` provides the information for describing a service. Example: documentation: summary: > The Google Calendar API gives access to most calendar features. pages: - name: Overview content: (== include google/foo/overview.md ==) - name: Tutorial content: (== include google/foo/tutorial.md ==) subpages: - name: Java content: (== include google/foo/tutorial_java.md ==) rules: - selector: google.calendar.Calendar.Get description: > ... - selector: google.calendar.Calendar.Put description: > ... Documentation is provided in markdown syntax. In addition to standard markdown features, definition lists, tables and fenced code blocks are supported. Section headers can be provided and are interpreted relative to the section nesting of the context where a documentation fragment is embedded. Documentation from the IDL is merged with documentation defined via the config at normalization time, where documentation provided by config rules overrides IDL provided. A number of constructs specific to the API platform are supported in documentation text. In order to reference a proto element, the following notation can be used: [fully.qualified.proto.name][] To override the display text used for the link, this can be used: [display text][fully.qualified.proto.name] Text can be excluded from doc using the following notation: (-- internal comment --) A few directives are available in documentation. Note that directives must appear on a single line to be properly identified. The `include` directive includes a markdown file from an external source: (== include path/to/file ==) The `resource_for` directive marks a message to be the resource of a collection in REST view. If it is not specified, tools attempt to infer the resource from the operations in a collection: (== resource_for v1.shelves.books ==) The directive `suppress_warning` does not directly affect documentation and is documented together with service config validation.",
      "properties": {
        "documentationRootUrl": {
          "type": "string",
          "description": "The URL to the root of documentation."
        },
        "overview": {
          "type": "string",
          "description": "Declares a single overview page. For example: documentation: summary: ... overview: (== include overview.md ==) This is a shortcut for the following declaration (using pages style): documentation: summary: ... pages: - name: Overview content: (== include overview.md ==) Note: you cannot specify both `overview` field and `pages` field."
        },
        "pages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Page"
          },
          "description": "The top level pages for the documentation set."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:DocumentationRule"
          },
          "description": "A list of documentation rules that apply to individual API elements. **NOTE:** All service configuration rules follow \"last one wins\" order."
        },
        "sectionOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Page"
          },
          "description": "Specifies section and content to override boilerplate content provided by go/api-docgen. Currently overrides following sections: 1. rest.service.client_libraries"
        },
        "serviceRootUrl": {
          "type": "string",
          "description": "Specifies the service root url if the default one (the service name from the yaml file) is not suitable. This can be seen in any fully specified service urls as well as sections that show a base that other urls are relative to."
        },
        "summary": {
          "type": "string",
          "description": "A short description of what the service does. The summary must be plain text. It becomes the overview of the service displayed in Google Cloud Console. NOTE: This field is equivalent to the standard field `description`."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:DocumentationResponse": {
      "description": "`Documentation` provides the information for describing a service. Example: documentation: summary: > The Google Calendar API gives access to most calendar features. pages: - name: Overview content: (== include google/foo/overview.md ==) - name: Tutorial content: (== include google/foo/tutorial.md ==) subpages: - name: Java content: (== include google/foo/tutorial_java.md ==) rules: - selector: google.calendar.Calendar.Get description: > ... - selector: google.calendar.Calendar.Put description: > ... Documentation is provided in markdown syntax. In addition to standard markdown features, definition lists, tables and fenced code blocks are supported. Section headers can be provided and are interpreted relative to the section nesting of the context where a documentation fragment is embedded. Documentation from the IDL is merged with documentation defined via the config at normalization time, where documentation provided by config rules overrides IDL provided. A number of constructs specific to the API platform are supported in documentation text. In order to reference a proto element, the following notation can be used: [fully.qualified.proto.name][] To override the display text used for the link, this can be used: [display text][fully.qualified.proto.name] Text can be excluded from doc using the following notation: (-- internal comment --) A few directives are available in documentation. Note that directives must appear on a single line to be properly identified. The `include` directive includes a markdown file from an external source: (== include path/to/file ==) The `resource_for` directive marks a message to be the resource of a collection in REST view. If it is not specified, tools attempt to infer the resource from the operations in a collection: (== resource_for v1.shelves.books ==) The directive `suppress_warning` does not directly affect documentation and is documented together with service config validation.",
      "properties": {
        "documentationRootUrl": {
          "type": "string",
          "description": "The URL to the root of documentation."
        },
        "overview": {
          "type": "string",
          "description": "Declares a single overview page. For example: documentation: summary: ... overview: (== include overview.md ==) This is a shortcut for the following declaration (using pages style): documentation: summary: ... pages: - name: Overview content: (== include overview.md ==) Note: you cannot specify both `overview` field and `pages` field."
        },
        "pages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:PageResponse"
          },
          "description": "The top level pages for the documentation set."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:DocumentationRuleResponse"
          },
          "description": "A list of documentation rules that apply to individual API elements. **NOTE:** All service configuration rules follow \"last one wins\" order."
        },
        "sectionOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:PageResponse"
          },
          "description": "Specifies section and content to override boilerplate content provided by go/api-docgen. Currently overrides following sections: 1. rest.service.client_libraries"
        },
        "serviceRootUrl": {
          "type": "string",
          "description": "Specifies the service root url if the default one (the service name from the yaml file) is not suitable. This can be seen in any fully specified service urls as well as sections that show a base that other urls are relative to."
        },
        "summary": {
          "type": "string",
          "description": "A short description of what the service does. The summary must be plain text. It becomes the overview of the service displayed in Google Cloud Console. NOTE: This field is equivalent to the standard field `description`."
        }
      },
      "type": "object",
      "required": [
        "documentationRootUrl",
        "overview",
        "pages",
        "rules",
        "sectionOverrides",
        "serviceRootUrl",
        "summary"
      ]
    },
    "google-native:servicemanagement/v1:DocumentationRule": {
      "description": "A documentation rule provides information about individual API elements.",
      "properties": {
        "deprecationDescription": {
          "type": "string",
          "description": "Deprecation description of the selected element(s). It can be provided if an element is marked as `deprecated`."
        },
        "description": {
          "type": "string",
          "description": "Description of the selected proto element (e.g. a message, a method, a 'service' definition, or a field). Defaults to leading & trailing comments taken from the proto source definition of the proto element."
        },
        "disableReplacementWords": {
          "type": "string",
          "description": "String of comma or space separated case-sensitive words for which method/field name replacement will be disabled by go/api-docgen."
        },
        "selector": {
          "type": "string",
          "description": "The selector is a comma-separated list of patterns for any element such as a method, a field, an enum value. Each pattern is a qualified name of the element which may end in \"*\", indicating a wildcard. Wildcards are only allowed at the end and for a whole component of the qualified name, i.e. \"foo.*\" is ok, but not \"foo.b*\" or \"foo.*.bar\". A wildcard will match one or more components. To specify a default for all applicable elements, the whole pattern \"*\" is used."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:DocumentationRuleResponse": {
      "description": "A documentation rule provides information about individual API elements.",
      "properties": {
        "deprecationDescription": {
          "type": "string",
          "description": "Deprecation description of the selected element(s). It can be provided if an element is marked as `deprecated`."
        },
        "description": {
          "type": "string",
          "description": "Description of the selected proto element (e.g. a message, a method, a 'service' definition, or a field). Defaults to leading & trailing comments taken from the proto source definition of the proto element."
        },
        "disableReplacementWords": {
          "type": "string",
          "description": "String of comma or space separated case-sensitive words for which method/field name replacement will be disabled by go/api-docgen."
        },
        "selector": {
          "type": "string",
          "description": "The selector is a comma-separated list of patterns for any element such as a method, a field, an enum value. Each pattern is a qualified name of the element which may end in \"*\", indicating a wildcard. Wildcards are only allowed at the end and for a whole component of the qualified name, i.e. \"foo.*\" is ok, but not \"foo.b*\" or \"foo.*.bar\". A wildcard will match one or more components. To specify a default for all applicable elements, the whole pattern \"*\" is used."
        }
      },
      "type": "object",
      "required": [
        "deprecationDescription",
        "description",
        "disableReplacementWords",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:DotnetSettings": {
      "description": "Settings for Dotnet client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettings",
          "description": "Some settings."
        },
        "forcedNamespaceAliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Namespaces which must be aliased in snippets due to a known (but non-generator-predictable) naming collision"
        },
        "handwrittenSignatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Method signatures (in the form \"service.method(signature)\") which are provided separately, so shouldn't be generated. Snippets *calling* these methods are still generated, however."
        },
        "ignoredResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of full resource types to ignore during generation. This is typically used for API-specific Location resources, which should be handled by the generator as if they were actually the common Location resources. Example entry: \"documentai.googleapis.com/Location\""
        },
        "renamedResources": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from full resource types to the effective short name for the resource. This is used when otherwise resource named from different services would cause naming collisions. Example entry: \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\""
        },
        "renamedServices": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from original service names to renamed versions. This is used when the default generated types would cause a naming conflict. (Neither name is fully-qualified.) Example: Subscriber to SubscriberServiceApi."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:DotnetSettingsResponse": {
      "description": "Settings for Dotnet client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsResponse",
          "description": "Some settings."
        },
        "forcedNamespaceAliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Namespaces which must be aliased in snippets due to a known (but non-generator-predictable) naming collision"
        },
        "handwrittenSignatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Method signatures (in the form \"service.method(signature)\") which are provided separately, so shouldn't be generated. Snippets *calling* these methods are still generated, however."
        },
        "ignoredResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of full resource types to ignore during generation. This is typically used for API-specific Location resources, which should be handled by the generator as if they were actually the common Location resources. Example entry: \"documentai.googleapis.com/Location\""
        },
        "renamedResources": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from full resource types to the effective short name for the resource. This is used when otherwise resource named from different services would cause naming collisions. Example entry: \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\""
        },
        "renamedServices": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from original service names to renamed versions. This is used when the default generated types would cause a naming conflict. (Neither name is fully-qualified.) Example: Subscriber to SubscriberServiceApi."
        }
      },
      "type": "object",
      "required": [
        "common",
        "forcedNamespaceAliases",
        "handwrittenSignatures",
        "ignoredResources",
        "renamedResources",
        "renamedServices"
      ]
    },
    "google-native:servicemanagement/v1:Endpoint": {
      "description": "`Endpoint` describes a network address of a service that serves a set of APIs. It is commonly known as a service endpoint. A service may expose any number of service endpoints, and all service endpoints share the same service definition, such as quota limits and monitoring metrics. Example: type: google.api.Service name: library-example.googleapis.com endpoints: # Declares network address `https://library-example.googleapis.com` # for service `library-example.googleapis.com`. The `https` scheme # is implicit for all service endpoints. Other schemes may be # supported in the future. - name: library-example.googleapis.com allow_cors: false - name: content-staging-library-example.googleapis.com # Allows HTTP OPTIONS calls to be passed to the API frontend, for it # to decide whether the subsequent cross-origin request is allowed # to proceed. allow_cors: true",
      "properties": {
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unimplemented. Dot not use. DEPRECATED: This field is no longer supported. Instead of using aliases, please specify multiple google.api.Endpoint for each of the intended aliases. Additional names that this endpoint will be hosted on.",
          "deprecationMessage": "Unimplemented. Dot not use. DEPRECATED: This field is no longer supported. Instead of using aliases, please specify multiple google.api.Endpoint for each of the intended aliases. Additional names that this endpoint will be hosted on."
        },
        "allowCors": {
          "type": "boolean",
          "description": "Allowing [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka cross-domain traffic, would allow the backends served from this endpoint to receive and respond to HTTP OPTIONS requests. The response will be used by the browser to determine whether the subsequent cross-origin request is allowed to proceed."
        },
        "name": {
          "type": "string",
          "description": "The canonical name of this endpoint."
        },
        "target": {
          "type": "string",
          "description": "The specification of an Internet routable address of API frontend that will handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary). It should be either a valid IPv4 address or a fully-qualified domain name. For example, \"8.8.8.8\" or \"myservice.appspot.com\"."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:EndpointResponse": {
      "description": "`Endpoint` describes a network address of a service that serves a set of APIs. It is commonly known as a service endpoint. A service may expose any number of service endpoints, and all service endpoints share the same service definition, such as quota limits and monitoring metrics. Example: type: google.api.Service name: library-example.googleapis.com endpoints: # Declares network address `https://library-example.googleapis.com` # for service `library-example.googleapis.com`. The `https` scheme # is implicit for all service endpoints. Other schemes may be # supported in the future. - name: library-example.googleapis.com allow_cors: false - name: content-staging-library-example.googleapis.com # Allows HTTP OPTIONS calls to be passed to the API frontend, for it # to decide whether the subsequent cross-origin request is allowed # to proceed. allow_cors: true",
      "properties": {
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unimplemented. Dot not use. DEPRECATED: This field is no longer supported. Instead of using aliases, please specify multiple google.api.Endpoint for each of the intended aliases. Additional names that this endpoint will be hosted on.",
          "deprecationMessage": "Unimplemented. Dot not use. DEPRECATED: This field is no longer supported. Instead of using aliases, please specify multiple google.api.Endpoint for each of the intended aliases. Additional names that this endpoint will be hosted on."
        },
        "allowCors": {
          "type": "boolean",
          "description": "Allowing [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka cross-domain traffic, would allow the backends served from this endpoint to receive and respond to HTTP OPTIONS requests. The response will be used by the browser to determine whether the subsequent cross-origin request is allowed to proceed."
        },
        "name": {
          "type": "string",
          "description": "The canonical name of this endpoint."
        },
        "target": {
          "type": "string",
          "description": "The specification of an Internet routable address of API frontend that will handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary). It should be either a valid IPv4 address or a fully-qualified domain name. For example, \"8.8.8.8\" or \"myservice.appspot.com\"."
        }
      },
      "type": "object",
      "required": [
        "aliases",
        "allowCors",
        "name",
        "target"
      ]
    },
    "google-native:servicemanagement/v1:Enum": {
      "description": "Enum type definition.",
      "properties": {
        "edition": {
          "type": "string",
          "description": "The source edition string, only valid when syntax is SYNTAX_EDITIONS."
        },
        "enumvalue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:EnumValue"
          },
          "description": "Enum value definitions."
        },
        "name": {
          "type": "string",
          "description": "Enum type name."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Option"
          },
          "description": "Protocol buffer options."
        },
        "sourceContext": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SourceContext",
          "description": "The source context."
        },
        "syntax": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:EnumSyntax",
          "description": "The source syntax."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:EnumResponse": {
      "description": "Enum type definition.",
      "properties": {
        "edition": {
          "type": "string",
          "description": "The source edition string, only valid when syntax is SYNTAX_EDITIONS."
        },
        "enumvalue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:EnumValueResponse"
          },
          "description": "Enum value definitions."
        },
        "name": {
          "type": "string",
          "description": "Enum type name."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:OptionResponse"
          },
          "description": "Protocol buffer options."
        },
        "sourceContext": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SourceContextResponse",
          "description": "The source context."
        },
        "syntax": {
          "type": "string",
          "description": "The source syntax."
        }
      },
      "type": "object",
      "required": [
        "edition",
        "enumvalue",
        "name",
        "options",
        "sourceContext",
        "syntax"
      ]
    },
    "google-native:servicemanagement/v1:EnumSyntax": {
      "description": "The source syntax.",
      "type": "string",
      "enum": [
        {
          "name": "SyntaxProto2",
          "description": "Syntax `proto2`.",
          "value": "SYNTAX_PROTO2"
        },
        {
          "name": "SyntaxProto3",
          "description": "Syntax `proto3`.",
          "value": "SYNTAX_PROTO3"
        },
        {
          "name": "SyntaxEditions",
          "description": "Syntax `editions`.",
          "value": "SYNTAX_EDITIONS"
        }
      ]
    },
    "google-native:servicemanagement/v1:EnumValue": {
      "description": "Enum value definition.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Enum value name."
        },
        "number": {
          "type": "integer",
          "description": "Enum value number."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Option"
          },
          "description": "Protocol buffer options."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:EnumValueResponse": {
      "description": "Enum value definition.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Enum value name."
        },
        "number": {
          "type": "integer",
          "description": "Enum value number."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:OptionResponse"
          },
          "description": "Protocol buffer options."
        }
      },
      "type": "object",
      "required": [
        "name",
        "number",
        "options"
      ]
    },
    "google-native:servicemanagement/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:servicemanagement/v1:Field": {
      "description": "A single field of a message type.",
      "properties": {
        "cardinality": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:FieldCardinality",
          "description": "The field cardinality."
        },
        "defaultValue": {
          "type": "string",
          "description": "The string value of the default value of this field. Proto2 syntax only."
        },
        "jsonName": {
          "type": "string",
          "description": "The field JSON name."
        },
        "kind": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:FieldKind",
          "description": "The field type."
        },
        "name": {
          "type": "string",
          "description": "The field name."
        },
        "number": {
          "type": "integer",
          "description": "The field number."
        },
        "oneofIndex": {
          "type": "integer",
          "description": "The index of the field type in `Type.oneofs`, for message or enumeration types. The first type has index 1; zero means the type is not in the list."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Option"
          },
          "description": "The protocol buffer options."
        },
        "packed": {
          "type": "boolean",
          "description": "Whether to use alternative packed wire representation."
        },
        "typeUrl": {
          "type": "string",
          "description": "The field type URL, without the scheme, for message or enumeration types. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:FieldCardinality": {
      "description": "The field cardinality.",
      "type": "string",
      "enum": [
        {
          "name": "CardinalityUnknown",
          "description": "For fields with unknown cardinality.",
          "value": "CARDINALITY_UNKNOWN"
        },
        {
          "name": "CardinalityOptional",
          "description": "For optional fields.",
          "value": "CARDINALITY_OPTIONAL"
        },
        {
          "name": "CardinalityRequired",
          "description": "For required fields. Proto2 syntax only.",
          "value": "CARDINALITY_REQUIRED"
        },
        {
          "name": "CardinalityRepeated",
          "description": "For repeated fields.",
          "value": "CARDINALITY_REPEATED"
        }
      ]
    },
    "google-native:servicemanagement/v1:FieldKind": {
      "description": "The field type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnknown",
          "description": "Field type unknown.",
          "value": "TYPE_UNKNOWN"
        },
        {
          "name": "TypeDouble",
          "description": "Field type double.",
          "value": "TYPE_DOUBLE"
        },
        {
          "name": "TypeFloat",
          "description": "Field type float.",
          "value": "TYPE_FLOAT"
        },
        {
          "name": "TypeInt64",
          "description": "Field type int64.",
          "value": "TYPE_INT64"
        },
        {
          "name": "TypeUint64",
          "description": "Field type uint64.",
          "value": "TYPE_UINT64"
        },
        {
          "name": "TypeInt32",
          "description": "Field type int32.",
          "value": "TYPE_INT32"
        },
        {
          "name": "TypeFixed64",
          "description": "Field type fixed64.",
          "value": "TYPE_FIXED64"
        },
        {
          "name": "TypeFixed32",
          "description": "Field type fixed32.",
          "value": "TYPE_FIXED32"
        },
        {
          "name": "TypeBool",
          "description": "Field type bool.",
          "value": "TYPE_BOOL"
        },
        {
          "name": "TypeString",
          "description": "Field type string.",
          "value": "TYPE_STRING"
        },
        {
          "name": "TypeGroup",
          "description": "Field type group. Proto2 syntax only, and deprecated.",
          "value": "TYPE_GROUP"
        },
        {
          "name": "TypeMessage",
          "description": "Field type message.",
          "value": "TYPE_MESSAGE"
        },
        {
          "name": "TypeBytes",
          "description": "Field type bytes.",
          "value": "TYPE_BYTES"
        },
        {
          "name": "TypeUint32",
          "description": "Field type uint32.",
          "value": "TYPE_UINT32"
        },
        {
          "name": "TypeEnum",
          "description": "Field type enum.",
          "value": "TYPE_ENUM"
        },
        {
          "name": "TypeSfixed32",
          "description": "Field type sfixed32.",
          "value": "TYPE_SFIXED32"
        },
        {
          "name": "TypeSfixed64",
          "description": "Field type sfixed64.",
          "value": "TYPE_SFIXED64"
        },
        {
          "name": "TypeSint32",
          "description": "Field type sint32.",
          "value": "TYPE_SINT32"
        },
        {
          "name": "TypeSint64",
          "description": "Field type sint64.",
          "value": "TYPE_SINT64"
        }
      ]
    },
    "google-native:servicemanagement/v1:FieldPolicy": {
      "description": "Google API Policy Annotation This message defines a simple API policy annotation that can be used to annotate API request and response message fields with applicable policies. One field may have multiple applicable policies that must all be satisfied before a request can be processed. This policy annotation is used to generate the overall policy that will be used for automatic runtime policy enforcement and documentation generation.",
      "properties": {
        "resourcePermission": {
          "type": "string",
          "description": "Specifies the required permission(s) for the resource referred to by the field. It requires the field contains a valid resource reference, and the request must pass the permission checks to proceed. For example, \"resourcemanager.projects.get\"."
        },
        "resourceType": {
          "type": "string",
          "description": "Specifies the resource type for the resource referred to by the field."
        },
        "selector": {
          "type": "string",
          "description": "Selects one or more request or response message fields to apply this `FieldPolicy`. When a `FieldPolicy` is used in proto annotation, the selector must be left as empty. The service config generator will automatically fill the correct value. When a `FieldPolicy` is used in service config, the selector must be a comma-separated string with valid request or response field paths, such as \"foo.bar\" or \"foo.bar,foo.baz\"."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:FieldPolicyResponse": {
      "description": "Google API Policy Annotation This message defines a simple API policy annotation that can be used to annotate API request and response message fields with applicable policies. One field may have multiple applicable policies that must all be satisfied before a request can be processed. This policy annotation is used to generate the overall policy that will be used for automatic runtime policy enforcement and documentation generation.",
      "properties": {
        "resourcePermission": {
          "type": "string",
          "description": "Specifies the required permission(s) for the resource referred to by the field. It requires the field contains a valid resource reference, and the request must pass the permission checks to proceed. For example, \"resourcemanager.projects.get\"."
        },
        "resourceType": {
          "type": "string",
          "description": "Specifies the resource type for the resource referred to by the field."
        },
        "selector": {
          "type": "string",
          "description": "Selects one or more request or response message fields to apply this `FieldPolicy`. When a `FieldPolicy` is used in proto annotation, the selector must be left as empty. The service config generator will automatically fill the correct value. When a `FieldPolicy` is used in service config, the selector must be a comma-separated string with valid request or response field paths, such as \"foo.bar\" or \"foo.bar,foo.baz\"."
        }
      },
      "type": "object",
      "required": [
        "resourcePermission",
        "resourceType",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:FieldResponse": {
      "description": "A single field of a message type.",
      "properties": {
        "cardinality": {
          "type": "string",
          "description": "The field cardinality."
        },
        "defaultValue": {
          "type": "string",
          "description": "The string value of the default value of this field. Proto2 syntax only."
        },
        "jsonName": {
          "type": "string",
          "description": "The field JSON name."
        },
        "kind": {
          "type": "string",
          "description": "The field type."
        },
        "name": {
          "type": "string",
          "description": "The field name."
        },
        "number": {
          "type": "integer",
          "description": "The field number."
        },
        "oneofIndex": {
          "type": "integer",
          "description": "The index of the field type in `Type.oneofs`, for message or enumeration types. The first type has index 1; zero means the type is not in the list."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:OptionResponse"
          },
          "description": "The protocol buffer options."
        },
        "packed": {
          "type": "boolean",
          "description": "Whether to use alternative packed wire representation."
        },
        "typeUrl": {
          "type": "string",
          "description": "The field type URL, without the scheme, for message or enumeration types. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`."
        }
      },
      "type": "object",
      "required": [
        "cardinality",
        "defaultValue",
        "jsonName",
        "kind",
        "name",
        "number",
        "oneofIndex",
        "options",
        "packed",
        "typeUrl"
      ]
    },
    "google-native:servicemanagement/v1:GoSettings": {
      "description": "Settings for Go client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettings",
          "description": "Some settings."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:GoSettingsResponse": {
      "description": "Settings for Go client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsResponse",
          "description": "Some settings."
        }
      },
      "type": "object",
      "required": [
        "common"
      ]
    },
    "google-native:servicemanagement/v1:Http": {
      "description": "Defines the HTTP configuration for an API service. It contains a list of HttpRule, each specifying the mapping of an RPC method to one or more HTTP REST API methods.",
      "properties": {
        "fullyDecodeReservedExpansion": {
          "type": "boolean",
          "description": "When set to true, URL path parameters will be fully URI-decoded except in cases of single segment matches in reserved expansion, where \"%2F\" will be left encoded. The default behavior is to not decode RFC 6570 reserved characters in multi segment matches."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:HttpRule"
          },
          "description": "A list of HTTP configuration rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:HttpResponse": {
      "description": "Defines the HTTP configuration for an API service. It contains a list of HttpRule, each specifying the mapping of an RPC method to one or more HTTP REST API methods.",
      "properties": {
        "fullyDecodeReservedExpansion": {
          "type": "boolean",
          "description": "When set to true, URL path parameters will be fully URI-decoded except in cases of single segment matches in reserved expansion, where \"%2F\" will be left encoded. The default behavior is to not decode RFC 6570 reserved characters in multi segment matches."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:HttpRuleResponse"
          },
          "description": "A list of HTTP configuration rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object",
      "required": [
        "fullyDecodeReservedExpansion",
        "rules"
      ]
    },
    "google-native:servicemanagement/v1:HttpRule": {
      "description": "# gRPC Transcoding gRPC Transcoding is a feature for mapping between a gRPC method and one or more HTTP REST endpoints. It allows developers to build a single API service that supports both gRPC APIs and REST APIs. Many systems, including [Google APIs](https://github.com/googleapis/googleapis), [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC Gateway](https://github.com/grpc-ecosystem/grpc-gateway), and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature and use it for large scale production services. `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies how different portions of the gRPC request message are mapped to the URL path, URL query parameters, and HTTP request body. It also controls how the gRPC response message is mapped to the HTTP response body. `HttpRule` is typically specified as an `google.api.http` annotation on the gRPC method. Each mapping specifies a URL path template and an HTTP method. The path template may refer to one or more fields in the gRPC request message, as long as each field is a non-repeated field with a primitive (non-message) type. The path template controls how fields of the request message are mapped to the URL path. Example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get: \"/v1/{name=messages/*}\" }; } } message GetMessageRequest { string name = 1; // Mapped to URL path. } message Message { string text = 1; // The resource content. } This enables an HTTP REST to gRPC mapping as below: HTTP | gRPC -----|----- `GET /v1/messages/123456` | `GetMessage(name: \"messages/123456\")` Any fields in the request message which are not bound by the path template automatically become HTTP query parameters if there is no HTTP request body. For example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get:\"/v1/messages/{message_id}\" }; } } message GetMessageRequest { message SubMessage { string subfield = 1; } string message_id = 1; // Mapped to URL path. int64 revision = 2; // Mapped to URL query parameter `revision`. SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. } This enables a HTTP JSON to RPC mapping as below: HTTP | gRPC -----|----- `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))` Note that fields which are mapped to URL query parameters must have a primitive type or a repeated primitive type or a non-repeated message type. In the case of a repeated type, the parameter can be repeated in the URL as `...?param=A&param=B`. In the case of a message type, each field of the message is mapped to a separate parameter, such as `...?foo.a=A&foo.b=B&foo.c=C`. For HTTP methods that allow a request body, the `body` field specifies the mapping. Consider a REST update method on the message resource collection: service Messaging { rpc UpdateMessage(UpdateMessageRequest) returns (Message) { option (google.api.http) = { patch: \"/v1/messages/{message_id}\" body: \"message\" }; } } message UpdateMessageRequest { string message_id = 1; // mapped to the URL Message message = 2; // mapped to the body } The following HTTP JSON to RPC mapping is enabled, where the representation of the JSON in the request body is determined by protos JSON encoding: HTTP | gRPC -----|----- `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })` The special name `*` can be used in the body mapping to define that every field not bound by the path template should be mapped to the request body. This enables the following alternative definition of the update method: service Messaging { rpc UpdateMessage(Message) returns (Message) { option (google.api.http) = { patch: \"/v1/messages/{message_id}\" body: \"*\" }; } } message Message { string message_id = 1; string text = 2; } The following HTTP JSON to RPC mapping is enabled: HTTP | gRPC -----|----- `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")` Note that when using `*` in the body mapping, it is not possible to have HTTP parameters, as all fields not bound by the path end in the body. This makes this option more rarely used in practice when defining REST APIs. The common usage of `*` is in custom methods which don't use the URL at all for transferring data. It is possible to define multiple HTTP methods for one RPC by using the `additional_bindings` option. Example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get: \"/v1/messages/{message_id}\" additional_bindings { get: \"/v1/users/{user_id}/messages/{message_id}\" } }; } } message GetMessageRequest { string message_id = 1; string user_id = 2; } This enables the following two alternative HTTP JSON to RPC mappings: HTTP | gRPC -----|----- `GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")` `GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")` ## Rules for HTTP mapping 1. Leaf request fields (recursive expansion nested messages in the request message) are classified into three categories: - Fields referred by the path template. They are passed via the URL path. - Fields referred by the HttpRule.body. They are passed via the HTTP request body. - All other fields are passed via the URL query parameters, and the parameter name is the field path in the request message. A repeated field can be represented as multiple query parameters under the same name. 2. If HttpRule.body is \"*\", there is no URL query parameter, all fields are passed via URL path and HTTP request body. 3. If HttpRule.body is omitted, there is no HTTP request body, all fields are passed via URL path and URL query parameters. ### Path template syntax Template = \"/\" Segments [ Verb ] ; Segments = Segment { \"/\" Segment } ; Segment = \"*\" | \"**\" | LITERAL | Variable ; Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ; FieldPath = IDENT { \".\" IDENT } ; Verb = \":\" LITERAL ; The syntax `*` matches a single URL path segment. The syntax `**` matches zero or more URL path segments, which must be the last part of the URL path except the `Verb`. The syntax `Variable` matches part of the URL path as specified by its template. A variable template must not contain other variables. If a variable matches a single path segment, its template may be omitted, e.g. `{var}` is equivalent to `{var=*}`. The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` contains any reserved character, such characters should be percent-encoded before the matching. If a variable contains exactly one path segment, such as `\"{var}\"` or `\"{var=*}\"`, when such a variable is expanded into a URL path on the client side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The server side does the reverse decoding. Such variables show up in the [Discovery Document](https://developers.google.com/discovery/v1/reference/apis) as `{var}`. If a variable contains multiple path segments, such as `\"{var=foo/*}\"` or `\"{var=**}\"`, when such a variable is expanded into a URL path on the client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left unchanged. Such variables show up in the [Discovery Document](https://developers.google.com/discovery/v1/reference/apis) as `{+var}`. ## Using gRPC API Service Configuration gRPC API Service Configuration (service config) is a configuration language for configuring a gRPC service to become a user-facing product. The service config is simply the YAML representation of the `google.api.Service` proto message. As an alternative to annotating your proto file, you can configure gRPC transcoding in your service config YAML files. You do this by specifying a `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same effect as the proto annotation. This can be particularly useful if you have a proto that is reused in multiple services. Note that any transcoding specified in the service config will override any matching transcoding configuration in the proto. Example: http: rules: # Selects a gRPC method and applies HttpRule to it. - selector: example.v1.Messaging.GetMessage get: /v1/messages/{message_id}/{sub.subfield} ## Special notes When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the proto to JSON conversion must follow the [proto3 specification](https://developers.google.com/protocol-buffers/docs/proto3#json). While the single segment variable follows the semantics of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String Expansion, the multi segment variable **does not** follow RFC 6570 Section 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion does not expand special characters like `?` and `#`, which would lead to invalid URLs. As the result, gRPC Transcoding uses a custom encoding for multi segment variables. The path variables **must not** refer to any repeated or mapped field, because client libraries are not capable of handling such variable expansion. The path variables **must not** capture the leading \"/\" character. The reason is that the most common use case \"{var}\" does not capture the leading \"/\" character. For consistency, all path variables must share the same behavior. Repeated message fields must not be mapped to URL query parameters, because no client library can support such complicated mapping. If an API needs to use a JSON array for request or response body, it can map the request or response body to a repeated field. However, some gRPC Transcoding implementations may not support this feature.",
      "properties": {
        "additionalBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:HttpRule"
          },
          "description": "Additional HTTP bindings for the selector. Nested bindings must not contain an `additional_bindings` field themselves (that is, the nesting may only be one level deep)."
        },
        "body": {
          "type": "string",
          "description": "The name of the request field whose value is mapped to the HTTP request body, or `*` for mapping all request fields not captured by the path pattern to the HTTP body, or omitted for not having any HTTP request body. NOTE: the referred field must be present at the top-level of the request message type."
        },
        "custom": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CustomHttpPattern",
          "description": "The custom pattern is used for specifying an HTTP method that is not included in the `pattern` field, such as HEAD, or \"*\" to leave the HTTP method unspecified for this rule. The wild-card rule is useful for services that provide content to Web (HTML) clients."
        },
        "delete": {
          "type": "string",
          "description": "Maps to HTTP DELETE. Used for deleting a resource."
        },
        "get": {
          "type": "string",
          "description": "Maps to HTTP GET. Used for listing and getting information about resources."
        },
        "patch": {
          "type": "string",
          "description": "Maps to HTTP PATCH. Used for updating a resource."
        },
        "post": {
          "type": "string",
          "description": "Maps to HTTP POST. Used for creating a resource or performing an action."
        },
        "put": {
          "type": "string",
          "description": "Maps to HTTP PUT. Used for replacing a resource."
        },
        "responseBody": {
          "type": "string",
          "description": "Optional. The name of the response field whose value is mapped to the HTTP response body. When omitted, the entire response message will be used as the HTTP response body. NOTE: The referred field must be present at the top-level of the response message type."
        },
        "selector": {
          "type": "string",
          "description": "Selects a method to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:HttpRuleResponse": {
      "description": "# gRPC Transcoding gRPC Transcoding is a feature for mapping between a gRPC method and one or more HTTP REST endpoints. It allows developers to build a single API service that supports both gRPC APIs and REST APIs. Many systems, including [Google APIs](https://github.com/googleapis/googleapis), [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC Gateway](https://github.com/grpc-ecosystem/grpc-gateway), and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature and use it for large scale production services. `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies how different portions of the gRPC request message are mapped to the URL path, URL query parameters, and HTTP request body. It also controls how the gRPC response message is mapped to the HTTP response body. `HttpRule` is typically specified as an `google.api.http` annotation on the gRPC method. Each mapping specifies a URL path template and an HTTP method. The path template may refer to one or more fields in the gRPC request message, as long as each field is a non-repeated field with a primitive (non-message) type. The path template controls how fields of the request message are mapped to the URL path. Example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get: \"/v1/{name=messages/*}\" }; } } message GetMessageRequest { string name = 1; // Mapped to URL path. } message Message { string text = 1; // The resource content. } This enables an HTTP REST to gRPC mapping as below: HTTP | gRPC -----|----- `GET /v1/messages/123456` | `GetMessage(name: \"messages/123456\")` Any fields in the request message which are not bound by the path template automatically become HTTP query parameters if there is no HTTP request body. For example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get:\"/v1/messages/{message_id}\" }; } } message GetMessageRequest { message SubMessage { string subfield = 1; } string message_id = 1; // Mapped to URL path. int64 revision = 2; // Mapped to URL query parameter `revision`. SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. } This enables a HTTP JSON to RPC mapping as below: HTTP | gRPC -----|----- `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))` Note that fields which are mapped to URL query parameters must have a primitive type or a repeated primitive type or a non-repeated message type. In the case of a repeated type, the parameter can be repeated in the URL as `...?param=A&param=B`. In the case of a message type, each field of the message is mapped to a separate parameter, such as `...?foo.a=A&foo.b=B&foo.c=C`. For HTTP methods that allow a request body, the `body` field specifies the mapping. Consider a REST update method on the message resource collection: service Messaging { rpc UpdateMessage(UpdateMessageRequest) returns (Message) { option (google.api.http) = { patch: \"/v1/messages/{message_id}\" body: \"message\" }; } } message UpdateMessageRequest { string message_id = 1; // mapped to the URL Message message = 2; // mapped to the body } The following HTTP JSON to RPC mapping is enabled, where the representation of the JSON in the request body is determined by protos JSON encoding: HTTP | gRPC -----|----- `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })` The special name `*` can be used in the body mapping to define that every field not bound by the path template should be mapped to the request body. This enables the following alternative definition of the update method: service Messaging { rpc UpdateMessage(Message) returns (Message) { option (google.api.http) = { patch: \"/v1/messages/{message_id}\" body: \"*\" }; } } message Message { string message_id = 1; string text = 2; } The following HTTP JSON to RPC mapping is enabled: HTTP | gRPC -----|----- `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")` Note that when using `*` in the body mapping, it is not possible to have HTTP parameters, as all fields not bound by the path end in the body. This makes this option more rarely used in practice when defining REST APIs. The common usage of `*` is in custom methods which don't use the URL at all for transferring data. It is possible to define multiple HTTP methods for one RPC by using the `additional_bindings` option. Example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get: \"/v1/messages/{message_id}\" additional_bindings { get: \"/v1/users/{user_id}/messages/{message_id}\" } }; } } message GetMessageRequest { string message_id = 1; string user_id = 2; } This enables the following two alternative HTTP JSON to RPC mappings: HTTP | gRPC -----|----- `GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")` `GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")` ## Rules for HTTP mapping 1. Leaf request fields (recursive expansion nested messages in the request message) are classified into three categories: - Fields referred by the path template. They are passed via the URL path. - Fields referred by the HttpRule.body. They are passed via the HTTP request body. - All other fields are passed via the URL query parameters, and the parameter name is the field path in the request message. A repeated field can be represented as multiple query parameters under the same name. 2. If HttpRule.body is \"*\", there is no URL query parameter, all fields are passed via URL path and HTTP request body. 3. If HttpRule.body is omitted, there is no HTTP request body, all fields are passed via URL path and URL query parameters. ### Path template syntax Template = \"/\" Segments [ Verb ] ; Segments = Segment { \"/\" Segment } ; Segment = \"*\" | \"**\" | LITERAL | Variable ; Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ; FieldPath = IDENT { \".\" IDENT } ; Verb = \":\" LITERAL ; The syntax `*` matches a single URL path segment. The syntax `**` matches zero or more URL path segments, which must be the last part of the URL path except the `Verb`. The syntax `Variable` matches part of the URL path as specified by its template. A variable template must not contain other variables. If a variable matches a single path segment, its template may be omitted, e.g. `{var}` is equivalent to `{var=*}`. The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` contains any reserved character, such characters should be percent-encoded before the matching. If a variable contains exactly one path segment, such as `\"{var}\"` or `\"{var=*}\"`, when such a variable is expanded into a URL path on the client side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The server side does the reverse decoding. Such variables show up in the [Discovery Document](https://developers.google.com/discovery/v1/reference/apis) as `{var}`. If a variable contains multiple path segments, such as `\"{var=foo/*}\"` or `\"{var=**}\"`, when such a variable is expanded into a URL path on the client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left unchanged. Such variables show up in the [Discovery Document](https://developers.google.com/discovery/v1/reference/apis) as `{+var}`. ## Using gRPC API Service Configuration gRPC API Service Configuration (service config) is a configuration language for configuring a gRPC service to become a user-facing product. The service config is simply the YAML representation of the `google.api.Service` proto message. As an alternative to annotating your proto file, you can configure gRPC transcoding in your service config YAML files. You do this by specifying a `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same effect as the proto annotation. This can be particularly useful if you have a proto that is reused in multiple services. Note that any transcoding specified in the service config will override any matching transcoding configuration in the proto. Example: http: rules: # Selects a gRPC method and applies HttpRule to it. - selector: example.v1.Messaging.GetMessage get: /v1/messages/{message_id}/{sub.subfield} ## Special notes When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the proto to JSON conversion must follow the [proto3 specification](https://developers.google.com/protocol-buffers/docs/proto3#json). While the single segment variable follows the semantics of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String Expansion, the multi segment variable **does not** follow RFC 6570 Section 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion does not expand special characters like `?` and `#`, which would lead to invalid URLs. As the result, gRPC Transcoding uses a custom encoding for multi segment variables. The path variables **must not** refer to any repeated or mapped field, because client libraries are not capable of handling such variable expansion. The path variables **must not** capture the leading \"/\" character. The reason is that the most common use case \"{var}\" does not capture the leading \"/\" character. For consistency, all path variables must share the same behavior. Repeated message fields must not be mapped to URL query parameters, because no client library can support such complicated mapping. If an API needs to use a JSON array for request or response body, it can map the request or response body to a repeated field. However, some gRPC Transcoding implementations may not support this feature.",
      "properties": {
        "additionalBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:HttpRuleResponse"
          },
          "description": "Additional HTTP bindings for the selector. Nested bindings must not contain an `additional_bindings` field themselves (that is, the nesting may only be one level deep)."
        },
        "body": {
          "type": "string",
          "description": "The name of the request field whose value is mapped to the HTTP request body, or `*` for mapping all request fields not captured by the path pattern to the HTTP body, or omitted for not having any HTTP request body. NOTE: the referred field must be present at the top-level of the request message type."
        },
        "custom": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CustomHttpPatternResponse",
          "description": "The custom pattern is used for specifying an HTTP method that is not included in the `pattern` field, such as HEAD, or \"*\" to leave the HTTP method unspecified for this rule. The wild-card rule is useful for services that provide content to Web (HTML) clients."
        },
        "delete": {
          "type": "string",
          "description": "Maps to HTTP DELETE. Used for deleting a resource."
        },
        "get": {
          "type": "string",
          "description": "Maps to HTTP GET. Used for listing and getting information about resources."
        },
        "patch": {
          "type": "string",
          "description": "Maps to HTTP PATCH. Used for updating a resource."
        },
        "post": {
          "type": "string",
          "description": "Maps to HTTP POST. Used for creating a resource or performing an action."
        },
        "put": {
          "type": "string",
          "description": "Maps to HTTP PUT. Used for replacing a resource."
        },
        "responseBody": {
          "type": "string",
          "description": "Optional. The name of the response field whose value is mapped to the HTTP response body. When omitted, the entire response message will be used as the HTTP response body. NOTE: The referred field must be present at the top-level of the response message type."
        },
        "selector": {
          "type": "string",
          "description": "Selects a method to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object",
      "required": [
        "additionalBindings",
        "body",
        "custom",
        "delete",
        "get",
        "patch",
        "post",
        "put",
        "responseBody",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:JavaSettings": {
      "description": "Settings for Java client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettings",
          "description": "Some settings."
        },
        "libraryPackage": {
          "type": "string",
          "description": "The package name to use in Java. Clobbers the java_package option set in the protobuf. This should be used **only** by APIs who have already set the language_settings.java.package_name\" field in gapic.yaml. API teams should use the protobuf java_package option where possible. Example of a YAML configuration:: publishing: java_settings: library_package: com.google.cloud.pubsub.v1"
        },
        "serviceClassNames": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configure the Java class name to use instead of the service's for its corresponding generated GAPIC client. Keys are fully-qualified service names as they appear in the protobuf (including the full the language_settings.java.interface_names\" field in gapic.yaml. API teams should otherwise use the service name as it appears in the protobuf. Example of a YAML configuration:: publishing: java_settings: service_class_names: - google.pubsub.v1.Publisher: TopicAdmin - google.pubsub.v1.Subscriber: SubscriptionAdmin"
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:JavaSettingsResponse": {
      "description": "Settings for Java client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsResponse",
          "description": "Some settings."
        },
        "libraryPackage": {
          "type": "string",
          "description": "The package name to use in Java. Clobbers the java_package option set in the protobuf. This should be used **only** by APIs who have already set the language_settings.java.package_name\" field in gapic.yaml. API teams should use the protobuf java_package option where possible. Example of a YAML configuration:: publishing: java_settings: library_package: com.google.cloud.pubsub.v1"
        },
        "serviceClassNames": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configure the Java class name to use instead of the service's for its corresponding generated GAPIC client. Keys are fully-qualified service names as they appear in the protobuf (including the full the language_settings.java.interface_names\" field in gapic.yaml. API teams should otherwise use the service name as it appears in the protobuf. Example of a YAML configuration:: publishing: java_settings: service_class_names: - google.pubsub.v1.Publisher: TopicAdmin - google.pubsub.v1.Subscriber: SubscriptionAdmin"
        }
      },
      "type": "object",
      "required": [
        "common",
        "libraryPackage",
        "serviceClassNames"
      ]
    },
    "google-native:servicemanagement/v1:JwtLocation": {
      "description": "Specifies a location to extract JWT from an API request.",
      "properties": {
        "cookie": {
          "type": "string",
          "description": "Specifies cookie name to extract JWT token."
        },
        "header": {
          "type": "string",
          "description": "Specifies HTTP header name to extract JWT token."
        },
        "query": {
          "type": "string",
          "description": "Specifies URL query parameter name to extract JWT token."
        },
        "valuePrefix": {
          "type": "string",
          "description": "The value prefix. The value format is \"value_prefix{token}\" Only applies to \"in\" header type. Must be empty for \"in\" query type. If not empty, the header value has to match (case sensitive) this prefix. If not matched, JWT will not be extracted. If matched, JWT will be extracted after the prefix is removed. For example, for \"Authorization: Bearer {JWT}\", value_prefix=\"Bearer \" with a space at the end."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:JwtLocationResponse": {
      "description": "Specifies a location to extract JWT from an API request.",
      "properties": {
        "cookie": {
          "type": "string",
          "description": "Specifies cookie name to extract JWT token."
        },
        "header": {
          "type": "string",
          "description": "Specifies HTTP header name to extract JWT token."
        },
        "query": {
          "type": "string",
          "description": "Specifies URL query parameter name to extract JWT token."
        },
        "valuePrefix": {
          "type": "string",
          "description": "The value prefix. The value format is \"value_prefix{token}\" Only applies to \"in\" header type. Must be empty for \"in\" query type. If not empty, the header value has to match (case sensitive) this prefix. If not matched, JWT will not be extracted. If matched, JWT will be extracted after the prefix is removed. For example, for \"Authorization: Bearer {JWT}\", value_prefix=\"Bearer \" with a space at the end."
        }
      },
      "type": "object",
      "required": [
        "cookie",
        "header",
        "query",
        "valuePrefix"
      ]
    },
    "google-native:servicemanagement/v1:LabelDescriptor": {
      "description": "A description of a label.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description for the label."
        },
        "key": {
          "type": "string",
          "description": "The label key."
        },
        "valueType": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:LabelDescriptorValueType",
          "description": "The type of data that can be assigned to the label."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:LabelDescriptorResponse": {
      "description": "A description of a label.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description for the label."
        },
        "key": {
          "type": "string",
          "description": "The label key."
        },
        "valueType": {
          "type": "string",
          "description": "The type of data that can be assigned to the label."
        }
      },
      "type": "object",
      "required": [
        "description",
        "key",
        "valueType"
      ]
    },
    "google-native:servicemanagement/v1:LabelDescriptorValueType": {
      "description": "The type of data that can be assigned to the label.",
      "type": "string",
      "enum": [
        {
          "name": "String",
          "description": "A variable-length string. This is the default.",
          "value": "STRING"
        },
        {
          "name": "Bool",
          "description": "Boolean; true or false.",
          "value": "BOOL"
        },
        {
          "name": "Int64",
          "description": "A 64-bit signed integer.",
          "value": "INT64"
        }
      ]
    },
    "google-native:servicemanagement/v1:LogDescriptor": {
      "description": "A description of a log type. Example in YAML format: - name: library.googleapis.com/activity_history description: The history of borrowing and returning library items. display_name: Activity labels: - key: /customer_id description: Identifier of a library customer",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description of this log. This information appears in the documentation and can contain details."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name for this log. This information appears on the user interface and should be concise."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LabelDescriptor"
          },
          "description": "The set of labels that are available to describe a specific log entry. Runtime requests that contain labels not specified here are considered invalid."
        },
        "name": {
          "type": "string",
          "description": "The name of the log. It must be less than 512 characters long and can include the following characters: upper- and lower-case alphanumeric characters [A-Za-z0-9], and punctuation characters including slash, underscore, hyphen, period [/_-.]."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:LogDescriptorResponse": {
      "description": "A description of a log type. Example in YAML format: - name: library.googleapis.com/activity_history description: The history of borrowing and returning library items. display_name: Activity labels: - key: /customer_id description: Identifier of a library customer",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description of this log. This information appears in the documentation and can contain details."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name for this log. This information appears on the user interface and should be concise."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LabelDescriptorResponse"
          },
          "description": "The set of labels that are available to describe a specific log entry. Runtime requests that contain labels not specified here are considered invalid."
        },
        "name": {
          "type": "string",
          "description": "The name of the log. It must be less than 512 characters long and can include the following characters: upper- and lower-case alphanumeric characters [A-Za-z0-9], and punctuation characters including slash, underscore, hyphen, period [/_-.]."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "labels",
        "name"
      ]
    },
    "google-native:servicemanagement/v1:Logging": {
      "description": "Logging configuration of the service. The following example shows how to configure logs to be sent to the producer and consumer projects. In the example, the `activity_history` log is sent to both the producer and consumer projects, whereas the `purchase_history` log is only sent to the producer project. monitored_resources: - type: library.googleapis.com/branch labels: - key: /city description: The city where the library branch is located in. - key: /name description: The name of the branch. logs: - name: activity_history labels: - key: /customer_id - name: purchase_history logging: producer_destinations: - monitored_resource: library.googleapis.com/branch logs: - activity_history - purchase_history consumer_destinations: - monitored_resource: library.googleapis.com/branch logs: - activity_history",
      "properties": {
        "consumerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LoggingDestination"
          },
          "description": "Logging configurations for sending logs to the consumer project. There can be multiple consumer destinations, each one must have a different monitored resource type. A log can be used in at most one consumer destination."
        },
        "producerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LoggingDestination"
          },
          "description": "Logging configurations for sending logs to the producer project. There can be multiple producer destinations, each one must have a different monitored resource type. A log can be used in at most one producer destination."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:LoggingDestination": {
      "description": "Configuration of a specific logging destination (the producer project or the consumer project).",
      "properties": {
        "logs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the logs to be sent to this destination. Each name must be defined in the Service.logs section. If the log name is not a domain scoped name, it will be automatically prefixed with the service name followed by \"/\"."
        },
        "monitoredResource": {
          "type": "string",
          "description": "The monitored resource type. The type must be defined in the Service.monitored_resources section."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:LoggingDestinationResponse": {
      "description": "Configuration of a specific logging destination (the producer project or the consumer project).",
      "properties": {
        "logs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the logs to be sent to this destination. Each name must be defined in the Service.logs section. If the log name is not a domain scoped name, it will be automatically prefixed with the service name followed by \"/\"."
        },
        "monitoredResource": {
          "type": "string",
          "description": "The monitored resource type. The type must be defined in the Service.monitored_resources section."
        }
      },
      "type": "object",
      "required": [
        "logs",
        "monitoredResource"
      ]
    },
    "google-native:servicemanagement/v1:LoggingResponse": {
      "description": "Logging configuration of the service. The following example shows how to configure logs to be sent to the producer and consumer projects. In the example, the `activity_history` log is sent to both the producer and consumer projects, whereas the `purchase_history` log is only sent to the producer project. monitored_resources: - type: library.googleapis.com/branch labels: - key: /city description: The city where the library branch is located in. - key: /name description: The name of the branch. logs: - name: activity_history labels: - key: /customer_id - name: purchase_history logging: producer_destinations: - monitored_resource: library.googleapis.com/branch logs: - activity_history - purchase_history consumer_destinations: - monitored_resource: library.googleapis.com/branch logs: - activity_history",
      "properties": {
        "consumerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LoggingDestinationResponse"
          },
          "description": "Logging configurations for sending logs to the consumer project. There can be multiple consumer destinations, each one must have a different monitored resource type. A log can be used in at most one consumer destination."
        },
        "producerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LoggingDestinationResponse"
          },
          "description": "Logging configurations for sending logs to the producer project. There can be multiple producer destinations, each one must have a different monitored resource type. A log can be used in at most one producer destination."
        }
      },
      "type": "object",
      "required": [
        "consumerDestinations",
        "producerDestinations"
      ]
    },
    "google-native:servicemanagement/v1:LongRunning": {
      "description": "Describes settings to use when generating API methods that use the long-running operation pattern. All default values below are from those used in the client library generators (e.g. [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).",
      "properties": {
        "initialPollDelay": {
          "type": "string",
          "description": "Initial delay after which the first poll request will be made. Default value: 5 seconds."
        },
        "maxPollDelay": {
          "type": "string",
          "description": "Maximum time between two subsequent poll requests. Default value: 45 seconds."
        },
        "pollDelayMultiplier": {
          "type": "number",
          "description": "Multiplier to gradually increase delay between subsequent polls until it reaches max_poll_delay. Default value: 1.5."
        },
        "totalPollTimeout": {
          "type": "string",
          "description": "Total polling timeout. Default value: 5 minutes."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:LongRunningResponse": {
      "description": "Describes settings to use when generating API methods that use the long-running operation pattern. All default values below are from those used in the client library generators (e.g. [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).",
      "properties": {
        "initialPollDelay": {
          "type": "string",
          "description": "Initial delay after which the first poll request will be made. Default value: 5 seconds."
        },
        "maxPollDelay": {
          "type": "string",
          "description": "Maximum time between two subsequent poll requests. Default value: 45 seconds."
        },
        "pollDelayMultiplier": {
          "type": "number",
          "description": "Multiplier to gradually increase delay between subsequent polls until it reaches max_poll_delay. Default value: 1.5."
        },
        "totalPollTimeout": {
          "type": "string",
          "description": "Total polling timeout. Default value: 5 minutes."
        }
      },
      "type": "object",
      "required": [
        "initialPollDelay",
        "maxPollDelay",
        "pollDelayMultiplier",
        "totalPollTimeout"
      ]
    },
    "google-native:servicemanagement/v1:Method": {
      "description": "Method represents a method of an API interface.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The simple name of this method."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Option"
          },
          "description": "Any metadata attached to the method."
        },
        "requestStreaming": {
          "type": "boolean",
          "description": "If true, the request is streamed."
        },
        "requestTypeUrl": {
          "type": "string",
          "description": "A URL of the input message type."
        },
        "responseStreaming": {
          "type": "boolean",
          "description": "If true, the response is streamed."
        },
        "responseTypeUrl": {
          "type": "string",
          "description": "The URL of the output message type."
        },
        "syntax": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MethodSyntax",
          "description": "The source syntax of this method."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MethodPolicy": {
      "description": "Defines policies applying to an RPC method.",
      "properties": {
        "requestPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:FieldPolicy"
          },
          "description": "Policies that are applicable to the request message."
        },
        "selector": {
          "type": "string",
          "description": "Selects a method to which these policies should be enforced, for example, \"google.pubsub.v1.Subscriber.CreateSubscription\". Refer to selector for syntax details. NOTE: This field must not be set in the proto annotation. It will be automatically filled by the service config compiler ."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MethodPolicyResponse": {
      "description": "Defines policies applying to an RPC method.",
      "properties": {
        "requestPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:FieldPolicyResponse"
          },
          "description": "Policies that are applicable to the request message."
        },
        "selector": {
          "type": "string",
          "description": "Selects a method to which these policies should be enforced, for example, \"google.pubsub.v1.Subscriber.CreateSubscription\". Refer to selector for syntax details. NOTE: This field must not be set in the proto annotation. It will be automatically filled by the service config compiler ."
        }
      },
      "type": "object",
      "required": [
        "requestPolicies",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:MethodResponse": {
      "description": "Method represents a method of an API interface.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The simple name of this method."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:OptionResponse"
          },
          "description": "Any metadata attached to the method."
        },
        "requestStreaming": {
          "type": "boolean",
          "description": "If true, the request is streamed."
        },
        "requestTypeUrl": {
          "type": "string",
          "description": "A URL of the input message type."
        },
        "responseStreaming": {
          "type": "boolean",
          "description": "If true, the response is streamed."
        },
        "responseTypeUrl": {
          "type": "string",
          "description": "The URL of the output message type."
        },
        "syntax": {
          "type": "string",
          "description": "The source syntax of this method."
        }
      },
      "type": "object",
      "required": [
        "name",
        "options",
        "requestStreaming",
        "requestTypeUrl",
        "responseStreaming",
        "responseTypeUrl",
        "syntax"
      ]
    },
    "google-native:servicemanagement/v1:MethodSettings": {
      "description": "Describes the generator configuration for a method.",
      "properties": {
        "longRunning": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:LongRunning",
          "description": "Describes settings to use for long-running operations when generating API methods for RPCs. Complements RPCs that use the annotations in google/longrunning/operations.proto. Example of a YAML configuration:: publishing: method_settings: - selector: google.cloud.speech.v2.Speech.BatchRecognize long_running: initial_poll_delay: seconds: 60 # 1 minute poll_delay_multiplier: 1.5 max_poll_delay: seconds: 360 # 6 minutes total_poll_timeout: seconds: 54000 # 90 minutes"
        },
        "selector": {
          "type": "string",
          "description": "The fully qualified name of the method, for which the options below apply. This is used to find the method to apply the options."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MethodSettingsResponse": {
      "description": "Describes the generator configuration for a method.",
      "properties": {
        "longRunning": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:LongRunningResponse",
          "description": "Describes settings to use for long-running operations when generating API methods for RPCs. Complements RPCs that use the annotations in google/longrunning/operations.proto. Example of a YAML configuration:: publishing: method_settings: - selector: google.cloud.speech.v2.Speech.BatchRecognize long_running: initial_poll_delay: seconds: 60 # 1 minute poll_delay_multiplier: 1.5 max_poll_delay: seconds: 360 # 6 minutes total_poll_timeout: seconds: 54000 # 90 minutes"
        },
        "selector": {
          "type": "string",
          "description": "The fully qualified name of the method, for which the options below apply. This is used to find the method to apply the options."
        }
      },
      "type": "object",
      "required": [
        "longRunning",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:MethodSyntax": {
      "description": "The source syntax of this method.",
      "type": "string",
      "enum": [
        {
          "name": "SyntaxProto2",
          "description": "Syntax `proto2`.",
          "value": "SYNTAX_PROTO2"
        },
        {
          "name": "SyntaxProto3",
          "description": "Syntax `proto3`.",
          "value": "SYNTAX_PROTO3"
        },
        {
          "name": "SyntaxEditions",
          "description": "Syntax `editions`.",
          "value": "SYNTAX_EDITIONS"
        }
      ]
    },
    "google-native:servicemanagement/v1:MetricDescriptor": {
      "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable. ",
      "properties": {
        "description": {
          "type": "string",
          "description": "A detailed description of the metric, which can be used in documentation."
        },
        "displayName": {
          "type": "string",
          "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LabelDescriptor"
          },
          "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the `appengine.googleapis.com/http/server/response_latencies` metric type has a label for the HTTP response code, `response_code`, so you can look at latencies for successful responses or just for responses that failed."
        },
        "launchStage": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptorLaunchStage",
          "description": "Optional. The launch stage of the metric definition."
        },
        "metadata": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptorMetadata",
          "description": "Optional. Metadata which can be used to guide usage of the metric."
        },
        "metricKind": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptorMetricKind",
          "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of `metric_kind` and `value_type` might not be supported."
        },
        "monitoredResourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the metric descriptor."
        },
        "type": {
          "type": "string",
          "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name `custom.googleapis.com` or `external.googleapis.com`. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\""
        },
        "unit": {
          "type": "string",
          "description": "The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. Different systems might scale the values to be more easily displayed (so a value of `0.02kBy` _might_ be displayed as `20By`, and a value of `3523kBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is `kBy`, then the value of the metric is always in thousands of bytes, no matter how it might be displayed. If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005 CPU-seconds, then the value is written as `12005`. Alternatively, if you want a custom metric to record data in a more granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`), or use `Kis{CPU}` and write `11.723` (which is `12005/1024`). The supported units are a subset of [The Unified Code for Units of Measure](https://unitsofmeasure.org/ucum.html) standard: **Basic units (UNIT)** * `bit` bit * `By` byte * `s` second * `min` minute * `h` hour * `d` day * `1` dimensionless **Prefixes (PREFIX)** * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera (10^12) * `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) * `Y` yotta (10^24) * `m` milli (10^-3) * `u` micro (10^-6) * `n` nano (10^-9) * `p` pico (10^-12) * `f` femto (10^-15) * `a` atto (10^-18) * `z` zepto (10^-21) * `y` yocto (10^-24) * `Ki` kibi (2^10) * `Mi` mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (2^40) * `Pi` pebi (2^50) **Grammar** The grammar also includes these connectors: * `/` division or ratio (as an infix operator). For examples, `kBy/{email}` or `MiBy/10ms` (although you should almost never have `/s` in a metric `unit`; rates should always be computed at query time from the underlying cumulative or delta value). * `.` multiplication or composition (as an infix operator). For examples, `GBy.d` or `k{watt}.h`. The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: * `Annotation` is just a comment if it follows a `UNIT`. If the annotation is used alone, then the unit is equivalent to `1`. For examples, `{request}/s == 1/s`, `By{transmitted}/s == By/s`. * `NAME` is a sequence of non-blank printable ASCII characters not containing `{` or `}`. * `1` represents a unitary [dimensionless unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in `1/s`. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as `1/d` or `{new-users}/d` (and a metric value `5` would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric value of `5.3` would mean \"5300 page views per day\"). * `%` represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value `3` means \"3 percent\"). * `10^2.%` indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value `0.03` means \"3 percent\")."
        },
        "valueType": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptorValueType",
          "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of `metric_kind` and `value_type` might not be supported."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MetricDescriptorLaunchStage": {
      "description": "Optional. The launch stage of the metric definition.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:servicemanagement/v1:MetricDescriptorMetadata": {
      "description": "Additional annotations that can be used to guide the usage of a metric.",
      "properties": {
        "ingestDelay": {
          "type": "string",
          "description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors."
        },
        "launchStage": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptorMetadataLaunchStage",
          "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
          "deprecationMessage": "Deprecated. Must use the MetricDescriptor.launch_stage instead."
        },
        "samplePeriod": {
          "type": "string",
          "description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MetricDescriptorMetadataLaunchStage": {
      "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:servicemanagement/v1:MetricDescriptorMetadataResponse": {
      "description": "Additional annotations that can be used to guide the usage of a metric.",
      "properties": {
        "ingestDelay": {
          "type": "string",
          "description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors."
        },
        "launchStage": {
          "type": "string",
          "description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
          "deprecationMessage": "Deprecated. Must use the MetricDescriptor.launch_stage instead."
        },
        "samplePeriod": {
          "type": "string",
          "description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period."
        }
      },
      "type": "object",
      "required": [
        "ingestDelay",
        "launchStage",
        "samplePeriod"
      ]
    },
    "google-native:servicemanagement/v1:MetricDescriptorMetricKind": {
      "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of `metric_kind` and `value_type` might not be supported.",
      "type": "string",
      "enum": [
        {
          "name": "MetricKindUnspecified",
          "description": "Do not use this default value.",
          "value": "METRIC_KIND_UNSPECIFIED"
        },
        {
          "name": "Gauge",
          "description": "An instantaneous measurement of a value.",
          "value": "GAUGE"
        },
        {
          "name": "Delta",
          "description": "The change in a value during a time interval.",
          "value": "DELTA"
        },
        {
          "name": "Cumulative",
          "description": "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.",
          "value": "CUMULATIVE"
        }
      ]
    },
    "google-native:servicemanagement/v1:MetricDescriptorResponse": {
      "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable. ",
      "properties": {
        "description": {
          "type": "string",
          "description": "A detailed description of the metric, which can be used in documentation."
        },
        "displayName": {
          "type": "string",
          "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LabelDescriptorResponse"
          },
          "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the `appengine.googleapis.com/http/server/response_latencies` metric type has a label for the HTTP response code, `response_code`, so you can look at latencies for successful responses or just for responses that failed."
        },
        "launchStage": {
          "type": "string",
          "description": "Optional. The launch stage of the metric definition."
        },
        "metadata": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptorMetadataResponse",
          "description": "Optional. Metadata which can be used to guide usage of the metric."
        },
        "metricKind": {
          "type": "string",
          "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of `metric_kind` and `value_type` might not be supported."
        },
        "monitoredResourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the metric descriptor."
        },
        "type": {
          "type": "string",
          "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name `custom.googleapis.com` or `external.googleapis.com`. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\""
        },
        "unit": {
          "type": "string",
          "description": "The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. Different systems might scale the values to be more easily displayed (so a value of `0.02kBy` _might_ be displayed as `20By`, and a value of `3523kBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is `kBy`, then the value of the metric is always in thousands of bytes, no matter how it might be displayed. If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005 CPU-seconds, then the value is written as `12005`. Alternatively, if you want a custom metric to record data in a more granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`), or use `Kis{CPU}` and write `11.723` (which is `12005/1024`). The supported units are a subset of [The Unified Code for Units of Measure](https://unitsofmeasure.org/ucum.html) standard: **Basic units (UNIT)** * `bit` bit * `By` byte * `s` second * `min` minute * `h` hour * `d` day * `1` dimensionless **Prefixes (PREFIX)** * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera (10^12) * `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) * `Y` yotta (10^24) * `m` milli (10^-3) * `u` micro (10^-6) * `n` nano (10^-9) * `p` pico (10^-12) * `f` femto (10^-15) * `a` atto (10^-18) * `z` zepto (10^-21) * `y` yocto (10^-24) * `Ki` kibi (2^10) * `Mi` mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (2^40) * `Pi` pebi (2^50) **Grammar** The grammar also includes these connectors: * `/` division or ratio (as an infix operator). For examples, `kBy/{email}` or `MiBy/10ms` (although you should almost never have `/s` in a metric `unit`; rates should always be computed at query time from the underlying cumulative or delta value). * `.` multiplication or composition (as an infix operator). For examples, `GBy.d` or `k{watt}.h`. The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: * `Annotation` is just a comment if it follows a `UNIT`. If the annotation is used alone, then the unit is equivalent to `1`. For examples, `{request}/s == 1/s`, `By{transmitted}/s == By/s`. * `NAME` is a sequence of non-blank printable ASCII characters not containing `{` or `}`. * `1` represents a unitary [dimensionless unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in `1/s`. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as `1/d` or `{new-users}/d` (and a metric value `5` would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric value of `5.3` would mean \"5300 page views per day\"). * `%` represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value `3` means \"3 percent\"). * `10^2.%` indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value `0.03` means \"3 percent\")."
        },
        "valueType": {
          "type": "string",
          "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of `metric_kind` and `value_type` might not be supported."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "labels",
        "launchStage",
        "metadata",
        "metricKind",
        "monitoredResourceTypes",
        "name",
        "type",
        "unit",
        "valueType"
      ]
    },
    "google-native:servicemanagement/v1:MetricDescriptorValueType": {
      "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of `metric_kind` and `value_type` might not be supported.",
      "type": "string",
      "enum": [
        {
          "name": "ValueTypeUnspecified",
          "description": "Do not use this default value.",
          "value": "VALUE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Bool",
          "description": "The value is a boolean. This value type can be used only if the metric kind is `GAUGE`.",
          "value": "BOOL"
        },
        {
          "name": "Int64",
          "description": "The value is a signed 64-bit integer.",
          "value": "INT64"
        },
        {
          "name": "Double",
          "description": "The value is a double precision floating point number.",
          "value": "DOUBLE"
        },
        {
          "name": "String",
          "description": "The value is a text string. This value type can be used only if the metric kind is `GAUGE`.",
          "value": "STRING"
        },
        {
          "name": "Distribution",
          "description": "The value is a `Distribution`.",
          "value": "DISTRIBUTION"
        },
        {
          "name": "Money",
          "description": "The value is money.",
          "value": "MONEY"
        }
      ]
    },
    "google-native:servicemanagement/v1:MetricRule": {
      "description": "Bind API methods to metrics. Binding a method to a metric causes that metric's configured quota behaviors to apply to the method call.",
      "properties": {
        "metricCosts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metrics to update when the selected methods are called, and the associated cost applied to each metric. The key of the map is the metric name, and the values are the amount increased for the metric against which the quota limits are defined. The value must not be negative."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MetricRuleResponse": {
      "description": "Bind API methods to metrics. Binding a method to a metric causes that metric's configured quota behaviors to apply to the method call.",
      "properties": {
        "metricCosts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metrics to update when the selected methods are called, and the associated cost applied to each metric. The key of the map is the metric name, and the values are the amount increased for the metric against which the quota limits are defined. The value must not be negative."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Refer to selector for syntax details."
        }
      },
      "type": "object",
      "required": [
        "metricCosts",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:Mixin": {
      "description": "Declares an API Interface to be included in this interface. The including interface must redeclare all the methods from the included interface, but documentation and options are inherited as follows: - If after comment and whitespace stripping, the documentation string of the redeclared method is empty, it will be inherited from the original method. - Each annotation belonging to the service config (http, visibility) which is not set in the redeclared method will be inherited. - If an http annotation is inherited, the path pattern will be modified as follows. Any version prefix will be replaced by the version of the including interface plus the root path if specified. Example of a simple mixin: package google.acl.v1; service AccessControl { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v1/{resource=**}:getAcl\"; } } package google.storage.v2; service Storage { // rpc GetAcl(GetAclRequest) returns (Acl); // Get a data record. rpc GetData(GetDataRequest) returns (Data) { option (google.api.http).get = \"/v2/{resource=**}\"; } } Example of a mixin configuration: apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl The mixin construct implies that all methods in `AccessControl` are also declared with same name and request/response types in `Storage`. A documentation generator or annotation processor will see the effective `Storage.GetAcl` method after inherting documentation and annotations as follows: service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v2/{resource=**}:getAcl\"; } ... } Note how the version in the path pattern changed from `v1` to `v2`. If the `root` field in the mixin is specified, it should be a relative path under which inherited HTTP paths are placed. Example: apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl root: acls This implies the following inherited HTTP annotation: service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v2/acls/{resource=**}:getAcl\"; } ... }",
      "properties": {
        "name": {
          "type": "string",
          "description": "The fully qualified name of the interface which is included."
        },
        "root": {
          "type": "string",
          "description": "If non-empty specifies a path under which inherited HTTP paths are rooted."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MixinResponse": {
      "description": "Declares an API Interface to be included in this interface. The including interface must redeclare all the methods from the included interface, but documentation and options are inherited as follows: - If after comment and whitespace stripping, the documentation string of the redeclared method is empty, it will be inherited from the original method. - Each annotation belonging to the service config (http, visibility) which is not set in the redeclared method will be inherited. - If an http annotation is inherited, the path pattern will be modified as follows. Any version prefix will be replaced by the version of the including interface plus the root path if specified. Example of a simple mixin: package google.acl.v1; service AccessControl { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v1/{resource=**}:getAcl\"; } } package google.storage.v2; service Storage { // rpc GetAcl(GetAclRequest) returns (Acl); // Get a data record. rpc GetData(GetDataRequest) returns (Data) { option (google.api.http).get = \"/v2/{resource=**}\"; } } Example of a mixin configuration: apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl The mixin construct implies that all methods in `AccessControl` are also declared with same name and request/response types in `Storage`. A documentation generator or annotation processor will see the effective `Storage.GetAcl` method after inherting documentation and annotations as follows: service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v2/{resource=**}:getAcl\"; } ... } Note how the version in the path pattern changed from `v1` to `v2`. If the `root` field in the mixin is specified, it should be a relative path under which inherited HTTP paths are placed. Example: apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl root: acls This implies the following inherited HTTP annotation: service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v2/acls/{resource=**}:getAcl\"; } ... }",
      "properties": {
        "name": {
          "type": "string",
          "description": "The fully qualified name of the interface which is included."
        },
        "root": {
          "type": "string",
          "description": "If non-empty specifies a path under which inherited HTTP paths are rooted."
        }
      },
      "type": "object",
      "required": [
        "name",
        "root"
      ]
    },
    "google-native:servicemanagement/v1:MonitoredResourceDescriptor": {
      "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of `\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and `\"zone\"` to identify particular VM instances. Different APIs can support different monitored resource types. APIs generally provide a `list` method that returns the monitored resource descriptors used by the API. ",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. A detailed description of the monitored resource type that might be used in documentation."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, `\"Google Cloud SQL Database\"`."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LabelDescriptor"
          },
          "description": "A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels `\"database_id\"` and `\"zone\"`."
        },
        "launchStage": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoredResourceDescriptorLaunchStage",
          "description": "Optional. The launch stage of the monitored resource definition."
        },
        "name": {
          "type": "string",
          "description": "Optional. The resource name of the monitored resource descriptor: `\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where {type} is the value of the `type` field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format `\"monitoredResourceDescriptors/{type}\"`."
        },
        "type": {
          "type": "string",
          "description": "The monitored resource type. For example, the type `\"cloudsql_database\"` represents databases in Google Cloud SQL. For a list of types, see [Monitoring resource types](https://cloud.google.com/monitoring/api/resources) and [Logging resource types](https://cloud.google.com/logging/docs/api/v2/resource-list)."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "type"
      ]
    },
    "google-native:servicemanagement/v1:MonitoredResourceDescriptorLaunchStage": {
      "description": "Optional. The launch stage of the monitored resource definition.",
      "type": "string",
      "enum": [
        {
          "name": "LaunchStageUnspecified",
          "description": "Do not use this default value.",
          "value": "LAUNCH_STAGE_UNSPECIFIED"
        },
        {
          "name": "Unimplemented",
          "description": "The feature is not yet implemented. Users can not use it.",
          "value": "UNIMPLEMENTED"
        },
        {
          "name": "Prelaunch",
          "description": "Prelaunch features are hidden from users and are only visible internally.",
          "value": "PRELAUNCH"
        },
        {
          "name": "EarlyAccess",
          "description": "Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
          "value": "EARLY_ACCESS"
        },
        {
          "name": "Alpha",
          "description": "Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
          "value": "ALPHA"
        },
        {
          "name": "Beta",
          "description": "Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
          "value": "BETA"
        },
        {
          "name": "Ga",
          "description": "GA features are open to all developers and are considered stable and fully qualified for production use.",
          "value": "GA"
        },
        {
          "name": "Deprecated",
          "description": "Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation.",
          "value": "DEPRECATED"
        }
      ]
    },
    "google-native:servicemanagement/v1:MonitoredResourceDescriptorResponse": {
      "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of `\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and `\"zone\"` to identify particular VM instances. Different APIs can support different monitored resource types. APIs generally provide a `list` method that returns the monitored resource descriptors used by the API. ",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. A detailed description of the monitored resource type that might be used in documentation."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, `\"Google Cloud SQL Database\"`."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LabelDescriptorResponse"
          },
          "description": "A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels `\"database_id\"` and `\"zone\"`."
        },
        "launchStage": {
          "type": "string",
          "description": "Optional. The launch stage of the monitored resource definition."
        },
        "name": {
          "type": "string",
          "description": "Optional. The resource name of the monitored resource descriptor: `\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where {type} is the value of the `type` field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format `\"monitoredResourceDescriptors/{type}\"`."
        },
        "type": {
          "type": "string",
          "description": "The monitored resource type. For example, the type `\"cloudsql_database\"` represents databases in Google Cloud SQL. For a list of types, see [Monitoring resource types](https://cloud.google.com/monitoring/api/resources) and [Logging resource types](https://cloud.google.com/logging/docs/api/v2/resource-list)."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "labels",
        "launchStage",
        "name",
        "type"
      ]
    },
    "google-native:servicemanagement/v1:Monitoring": {
      "description": "Monitoring configuration of the service. The example below shows how to configure monitored resources and metrics for monitoring. In the example, a monitored resource and two metrics are defined. The `library.googleapis.com/book/returned_count` metric is sent to both producer and consumer projects, whereas the `library.googleapis.com/book/num_overdue` metric is only sent to the consumer project. monitored_resources: - type: library.googleapis.com/Branch display_name: \"Library Branch\" description: \"A branch of a library.\" launch_stage: GA labels: - key: resource_container description: \"The Cloud container (ie. project id) for the Branch.\" - key: location description: \"The location of the library branch.\" - key: branch_id description: \"The id of the branch.\" metrics: - name: library.googleapis.com/book/returned_count display_name: \"Books Returned\" description: \"The count of books that have been returned.\" launch_stage: GA metric_kind: DELTA value_type: INT64 unit: \"1\" labels: - key: customer_id description: \"The id of the customer.\" - name: library.googleapis.com/book/num_overdue display_name: \"Books Overdue\" description: \"The current number of overdue books.\" launch_stage: GA metric_kind: GAUGE value_type: INT64 unit: \"1\" labels: - key: customer_id description: \"The id of the customer.\" monitoring: producer_destinations: - monitored_resource: library.googleapis.com/Branch metrics: - library.googleapis.com/book/returned_count consumer_destinations: - monitored_resource: library.googleapis.com/Branch metrics: - library.googleapis.com/book/returned_count - library.googleapis.com/book/num_overdue",
      "properties": {
        "consumerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoringDestination"
          },
          "description": "Monitoring configurations for sending metrics to the consumer project. There can be multiple consumer destinations. A monitored resource type may appear in multiple monitoring destinations if different aggregations are needed for different sets of metrics associated with that monitored resource type. A monitored resource and metric pair may only be used once in the Monitoring configuration."
        },
        "producerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoringDestination"
          },
          "description": "Monitoring configurations for sending metrics to the producer project. There can be multiple producer destinations. A monitored resource type may appear in multiple monitoring destinations if different aggregations are needed for different sets of metrics associated with that monitored resource type. A monitored resource and metric pair may only be used once in the Monitoring configuration."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MonitoringDestination": {
      "description": "Configuration of a specific monitoring destination (the producer project or the consumer project).",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Types of the metrics to report to this monitoring destination. Each type must be defined in Service.metrics section."
        },
        "monitoredResource": {
          "type": "string",
          "description": "The monitored resource type. The type must be defined in Service.monitored_resources section."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:MonitoringDestinationResponse": {
      "description": "Configuration of a specific monitoring destination (the producer project or the consumer project).",
      "properties": {
        "metrics": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Types of the metrics to report to this monitoring destination. Each type must be defined in Service.metrics section."
        },
        "monitoredResource": {
          "type": "string",
          "description": "The monitored resource type. The type must be defined in Service.monitored_resources section."
        }
      },
      "type": "object",
      "required": [
        "metrics",
        "monitoredResource"
      ]
    },
    "google-native:servicemanagement/v1:MonitoringResponse": {
      "description": "Monitoring configuration of the service. The example below shows how to configure monitored resources and metrics for monitoring. In the example, a monitored resource and two metrics are defined. The `library.googleapis.com/book/returned_count` metric is sent to both producer and consumer projects, whereas the `library.googleapis.com/book/num_overdue` metric is only sent to the consumer project. monitored_resources: - type: library.googleapis.com/Branch display_name: \"Library Branch\" description: \"A branch of a library.\" launch_stage: GA labels: - key: resource_container description: \"The Cloud container (ie. project id) for the Branch.\" - key: location description: \"The location of the library branch.\" - key: branch_id description: \"The id of the branch.\" metrics: - name: library.googleapis.com/book/returned_count display_name: \"Books Returned\" description: \"The count of books that have been returned.\" launch_stage: GA metric_kind: DELTA value_type: INT64 unit: \"1\" labels: - key: customer_id description: \"The id of the customer.\" - name: library.googleapis.com/book/num_overdue display_name: \"Books Overdue\" description: \"The current number of overdue books.\" launch_stage: GA metric_kind: GAUGE value_type: INT64 unit: \"1\" labels: - key: customer_id description: \"The id of the customer.\" monitoring: producer_destinations: - monitored_resource: library.googleapis.com/Branch metrics: - library.googleapis.com/book/returned_count consumer_destinations: - monitored_resource: library.googleapis.com/Branch metrics: - library.googleapis.com/book/returned_count - library.googleapis.com/book/num_overdue",
      "properties": {
        "consumerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoringDestinationResponse"
          },
          "description": "Monitoring configurations for sending metrics to the consumer project. There can be multiple consumer destinations. A monitored resource type may appear in multiple monitoring destinations if different aggregations are needed for different sets of metrics associated with that monitored resource type. A monitored resource and metric pair may only be used once in the Monitoring configuration."
        },
        "producerDestinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoringDestinationResponse"
          },
          "description": "Monitoring configurations for sending metrics to the producer project. There can be multiple producer destinations. A monitored resource type may appear in multiple monitoring destinations if different aggregations are needed for different sets of metrics associated with that monitored resource type. A monitored resource and metric pair may only be used once in the Monitoring configuration."
        }
      },
      "type": "object",
      "required": [
        "consumerDestinations",
        "producerDestinations"
      ]
    },
    "google-native:servicemanagement/v1:NodeSettings": {
      "description": "Settings for Node client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettings",
          "description": "Some settings."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:NodeSettingsResponse": {
      "description": "Settings for Node client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsResponse",
          "description": "Some settings."
        }
      },
      "type": "object",
      "required": [
        "common"
      ]
    },
    "google-native:servicemanagement/v1:OAuthRequirements": {
      "description": "OAuth scopes are a way to define data and permissions on data. For example, there are scopes defined for \"Read-only access to Google Calendar\" and \"Access to Cloud Platform\". Users can consent to a scope for an application, giving it permission to access that data on their behalf. OAuth scope specifications should be fairly coarse grained; a user will need to see and understand the text description of what your scope means. In most cases: use one or at most two OAuth scopes for an entire family of products. If your product has multiple APIs, you should probably be sharing the OAuth scope across all of those APIs. When you need finer grained OAuth consent screens: talk with your product management about how developers will use them in practice. Please note that even though each of the canonical scopes is enough for a request to be accepted and passed to the backend, a request can still fail due to the backend requiring additional scopes or permissions.",
      "properties": {
        "canonicalScopes": {
          "type": "string",
          "description": "The list of publicly documented OAuth scopes that are allowed access. An OAuth token containing any of these scopes will be accepted. Example: canonical_scopes: https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.read"
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:OAuthRequirementsResponse": {
      "description": "OAuth scopes are a way to define data and permissions on data. For example, there are scopes defined for \"Read-only access to Google Calendar\" and \"Access to Cloud Platform\". Users can consent to a scope for an application, giving it permission to access that data on their behalf. OAuth scope specifications should be fairly coarse grained; a user will need to see and understand the text description of what your scope means. In most cases: use one or at most two OAuth scopes for an entire family of products. If your product has multiple APIs, you should probably be sharing the OAuth scope across all of those APIs. When you need finer grained OAuth consent screens: talk with your product management about how developers will use them in practice. Please note that even though each of the canonical scopes is enough for a request to be accepted and passed to the backend, a request can still fail due to the backend requiring additional scopes or permissions.",
      "properties": {
        "canonicalScopes": {
          "type": "string",
          "description": "The list of publicly documented OAuth scopes that are allowed access. An OAuth token containing any of these scopes will be accepted. Example: canonical_scopes: https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.read"
        }
      },
      "type": "object",
      "required": [
        "canonicalScopes"
      ]
    },
    "google-native:servicemanagement/v1:Option": {
      "description": "A protocol buffer option, which can be attached to a message, field, enumeration, etc.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, `\"map_entry\"`. For custom options, it should be the fully-qualified name. For example, `\"google.api.http\"`."
        },
        "value": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The option's value packed in an Any message. If the value is a primitive, the corresponding wrapper type defined in google/protobuf/wrappers.proto should be used. If the value is an enum, it should be stored as an int32 value using the google.protobuf.Int32Value type."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:OptionResponse": {
      "description": "A protocol buffer option, which can be attached to a message, field, enumeration, etc.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, `\"map_entry\"`. For custom options, it should be the fully-qualified name. For example, `\"google.api.http\"`."
        },
        "value": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The option's value packed in an Any message. If the value is a primitive, the corresponding wrapper type defined in google/protobuf/wrappers.proto should be used. If the value is an enum, it should be stored as an int32 value using the google.protobuf.Int32Value type."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:servicemanagement/v1:Page": {
      "description": "Represents a documentation page. A page can contain subpages to represent nested documentation set structure.",
      "properties": {
        "content": {
          "type": "string",
          "description": "The Markdown content of the page. You can use (== include {path} ==) to include content from a Markdown file. The content can be used to produce the documentation page such as HTML format page."
        },
        "name": {
          "type": "string",
          "description": "The name of the page. It will be used as an identity of the page to generate URI of the page, text of the link to this page in navigation, etc. The full page name (start from the root page name to this page concatenated with `.`) can be used as reference to the page in your documentation. For example: pages: - name: Tutorial content: (== include tutorial.md ==) subpages: - name: Java content: (== include tutorial_java.md ==) You can reference `Java` page using Markdown reference link syntax: `Java`."
        },
        "subpages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Page"
          },
          "description": "Subpages of this page. The order of subpages specified here will be honored in the generated docset."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:PageResponse": {
      "description": "Represents a documentation page. A page can contain subpages to represent nested documentation set structure.",
      "properties": {
        "content": {
          "type": "string",
          "description": "The Markdown content of the page. You can use (== include {path} ==) to include content from a Markdown file. The content can be used to produce the documentation page such as HTML format page."
        },
        "name": {
          "type": "string",
          "description": "The name of the page. It will be used as an identity of the page to generate URI of the page, text of the link to this page in navigation, etc. The full page name (start from the root page name to this page concatenated with `.`) can be used as reference to the page in your documentation. For example: pages: - name: Tutorial content: (== include tutorial.md ==) subpages: - name: Java content: (== include tutorial_java.md ==) You can reference `Java` page using Markdown reference link syntax: `Java`."
        },
        "subpages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:PageResponse"
          },
          "description": "Subpages of this page. The order of subpages specified here will be honored in the generated docset."
        }
      },
      "type": "object",
      "required": [
        "content",
        "name",
        "subpages"
      ]
    },
    "google-native:servicemanagement/v1:PhpSettings": {
      "description": "Settings for Php client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettings",
          "description": "Some settings."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:PhpSettingsResponse": {
      "description": "Settings for Php client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsResponse",
          "description": "Some settings."
        }
      },
      "type": "object",
      "required": [
        "common"
      ]
    },
    "google-native:servicemanagement/v1:Publishing": {
      "description": "This message configures the settings for publishing [Google Cloud Client libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) generated from the service config.",
      "properties": {
        "apiShortName": {
          "type": "string",
          "description": "Used as a tracking tag when collecting data about the APIs developer relations artifacts like docs, packages delivered to package managers, etc. Example: \"speech\"."
        },
        "codeownerGithubTeams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "GitHub teams to be added to CODEOWNERS in the directory in GitHub containing source code for the client libraries for this API."
        },
        "docTagPrefix": {
          "type": "string",
          "description": "A prefix used in sample code when demarking regions to be included in documentation."
        },
        "documentationUri": {
          "type": "string",
          "description": "Link to product home page. Example: https://cloud.google.com/asset-inventory/docs/overview"
        },
        "githubLabel": {
          "type": "string",
          "description": "GitHub label to apply to issues and pull requests opened for this API."
        },
        "librarySettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:ClientLibrarySettings"
          },
          "description": "Client library settings. If the same version string appears multiple times in this list, then the last one wins. Settings from earlier settings with the same version string are discarded."
        },
        "methodSettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MethodSettings"
          },
          "description": "A list of API method settings, e.g. the behavior for methods that use the long-running operation pattern."
        },
        "newIssueUri": {
          "type": "string",
          "description": "Link to a *public* URI where users can report issues. Example: https://issuetracker.google.com/issues/new?component=190865&template=1161103"
        },
        "organization": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:PublishingOrganization",
          "description": "For whom the client library is being published."
        },
        "protoReferenceDocumentationUri": {
          "type": "string",
          "description": "Optional link to proto reference documentation. Example: https://cloud.google.com/pubsub/lite/docs/reference/rpc"
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:PublishingOrganization": {
      "description": "For whom the client library is being published.",
      "type": "string",
      "enum": [
        {
          "name": "ClientLibraryOrganizationUnspecified",
          "description": "Not useful.",
          "value": "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED"
        },
        {
          "name": "Cloud",
          "description": "Google Cloud Platform Org.",
          "value": "CLOUD"
        },
        {
          "name": "Ads",
          "description": "Ads (Advertising) Org.",
          "value": "ADS"
        },
        {
          "name": "Photos",
          "description": "Photos Org.",
          "value": "PHOTOS"
        },
        {
          "name": "StreetView",
          "description": "Street View Org.",
          "value": "STREET_VIEW"
        },
        {
          "name": "Shopping",
          "description": "Shopping Org.",
          "value": "SHOPPING"
        },
        {
          "name": "Geo",
          "description": "Geo Org.",
          "value": "GEO"
        },
        {
          "name": "GenerativeAi",
          "description": "Generative AI - https://developers.generativeai.google",
          "value": "GENERATIVE_AI"
        }
      ]
    },
    "google-native:servicemanagement/v1:PublishingResponse": {
      "description": "This message configures the settings for publishing [Google Cloud Client libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) generated from the service config.",
      "properties": {
        "apiShortName": {
          "type": "string",
          "description": "Used as a tracking tag when collecting data about the APIs developer relations artifacts like docs, packages delivered to package managers, etc. Example: \"speech\"."
        },
        "codeownerGithubTeams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "GitHub teams to be added to CODEOWNERS in the directory in GitHub containing source code for the client libraries for this API."
        },
        "docTagPrefix": {
          "type": "string",
          "description": "A prefix used in sample code when demarking regions to be included in documentation."
        },
        "documentationUri": {
          "type": "string",
          "description": "Link to product home page. Example: https://cloud.google.com/asset-inventory/docs/overview"
        },
        "githubLabel": {
          "type": "string",
          "description": "GitHub label to apply to issues and pull requests opened for this API."
        },
        "librarySettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:ClientLibrarySettingsResponse"
          },
          "description": "Client library settings. If the same version string appears multiple times in this list, then the last one wins. Settings from earlier settings with the same version string are discarded."
        },
        "methodSettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MethodSettingsResponse"
          },
          "description": "A list of API method settings, e.g. the behavior for methods that use the long-running operation pattern."
        },
        "newIssueUri": {
          "type": "string",
          "description": "Link to a *public* URI where users can report issues. Example: https://issuetracker.google.com/issues/new?component=190865&template=1161103"
        },
        "organization": {
          "type": "string",
          "description": "For whom the client library is being published."
        },
        "protoReferenceDocumentationUri": {
          "type": "string",
          "description": "Optional link to proto reference documentation. Example: https://cloud.google.com/pubsub/lite/docs/reference/rpc"
        }
      },
      "type": "object",
      "required": [
        "apiShortName",
        "codeownerGithubTeams",
        "docTagPrefix",
        "documentationUri",
        "githubLabel",
        "librarySettings",
        "methodSettings",
        "newIssueUri",
        "organization",
        "protoReferenceDocumentationUri"
      ]
    },
    "google-native:servicemanagement/v1:PythonSettings": {
      "description": "Settings for Python client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettings",
          "description": "Some settings."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:PythonSettingsResponse": {
      "description": "Settings for Python client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsResponse",
          "description": "Some settings."
        }
      },
      "type": "object",
      "required": [
        "common"
      ]
    },
    "google-native:servicemanagement/v1:Quota": {
      "description": "Quota configuration helps to achieve fairness and budgeting in service usage. The metric based quota configuration works this way: - The service configuration defines a set of metrics. - For API calls, the quota.metric_rules maps methods to metrics with corresponding costs. - The quota.limits defines limits on the metrics, which will be used for quota checks at runtime. An example quota configuration in yaml format: quota: limits: - name: apiWriteQpsPerProject metric: library.googleapis.com/write_calls unit: \"1/min/{project}\" # rate limit for consumer projects values: STANDARD: 10000 (The metric rules bind all methods to the read_calls metric, except for the UpdateBook and DeleteBook methods. These two methods are mapped to the write_calls metric, with the UpdateBook method consuming at twice rate as the DeleteBook method.) metric_rules: - selector: \"*\" metric_costs: library.googleapis.com/read_calls: 1 - selector: google.example.library.v1.LibraryService.UpdateBook metric_costs: library.googleapis.com/write_calls: 2 - selector: google.example.library.v1.LibraryService.DeleteBook metric_costs: library.googleapis.com/write_calls: 1 Corresponding Metric definition: metrics: - name: library.googleapis.com/read_calls display_name: Read requests metric_kind: DELTA value_type: INT64 - name: library.googleapis.com/write_calls display_name: Write requests metric_kind: DELTA value_type: INT64 ",
      "properties": {
        "limits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:QuotaLimit"
          },
          "description": "List of QuotaLimit definitions for the service."
        },
        "metricRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricRule"
          },
          "description": "List of MetricRule definitions, each one mapping a selected method to one or more metrics."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:QuotaLimit": {
      "description": "`QuotaLimit` defines a specific limit that applies over a specified duration for a limit type. There can be at most one limit for a duration and limit type combination defined within a `QuotaGroup`.",
      "properties": {
        "defaultLimit": {
          "type": "string",
          "description": "Default number of tokens that can be consumed during the specified duration. This is the number of tokens assigned when a client application developer activates the service for his/her project. Specifying a value of 0 will block all requests. This can be used if you are provisioning quota to selected consumers and blocking others. Similarly, a value of -1 will indicate an unlimited quota. No other negative values are allowed. Used by group-based quotas only."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-visible, extended description for this quota limit. Should be used only when more context is needed to understand this limit than provided by the limit's display name (see: `display_name`)."
        },
        "displayName": {
          "type": "string",
          "description": "User-visible display name for this limit. Optional. If not set, the UI will provide a default display name based on the quota configuration. This field can be used to override the default display name generated from the configuration."
        },
        "duration": {
          "type": "string",
          "description": "Duration of this limit in textual notation. Must be \"100s\" or \"1d\". Used by group-based quotas only."
        },
        "freeTier": {
          "type": "string",
          "description": "Free tier value displayed in the Developers Console for this limit. The free tier is the number of tokens that will be subtracted from the billed amount when billing is enabled. This field can only be set on a limit with duration \"1d\", in a billable group; it is invalid on any other limit. If this field is not set, it defaults to 0, indicating that there is no free tier for this service. Used by group-based quotas only."
        },
        "maxLimit": {
          "type": "string",
          "description": "Maximum number of tokens that can be consumed during the specified duration. Client application developers can override the default limit up to this maximum. If specified, this value cannot be set to a value less than the default limit. If not specified, it is set to the default limit. To allow clients to apply overrides with no upper bound, set this to -1, indicating unlimited maximum quota. Used by group-based quotas only."
        },
        "metric": {
          "type": "string",
          "description": "The name of the metric this quota limit applies to. The quota limits with the same metric will be checked together during runtime. The metric must be defined within the service config."
        },
        "name": {
          "type": "string",
          "description": "Name of the quota limit. The name must be provided, and it must be unique within the service. The name can only include alphanumeric characters as well as '-'. The maximum length of the limit name is 64 characters."
        },
        "unit": {
          "type": "string",
          "description": "Specify the unit of the quota limit. It uses the same syntax as Metric.unit. The supported unit kinds are determined by the quota backend system. Here are some examples: * \"1/min/{project}\" for quota per minute per project. Note: the order of unit components is insignificant. The \"1\" at the beginning is required to follow the metric unit syntax."
        },
        "values": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tiered limit values. You must specify this as a key:value pair, with an integer value that is the maximum number of requests allowed for the specified unit. Currently only STANDARD is supported."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:QuotaLimitResponse": {
      "description": "`QuotaLimit` defines a specific limit that applies over a specified duration for a limit type. There can be at most one limit for a duration and limit type combination defined within a `QuotaGroup`.",
      "properties": {
        "defaultLimit": {
          "type": "string",
          "description": "Default number of tokens that can be consumed during the specified duration. This is the number of tokens assigned when a client application developer activates the service for his/her project. Specifying a value of 0 will block all requests. This can be used if you are provisioning quota to selected consumers and blocking others. Similarly, a value of -1 will indicate an unlimited quota. No other negative values are allowed. Used by group-based quotas only."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-visible, extended description for this quota limit. Should be used only when more context is needed to understand this limit than provided by the limit's display name (see: `display_name`)."
        },
        "displayName": {
          "type": "string",
          "description": "User-visible display name for this limit. Optional. If not set, the UI will provide a default display name based on the quota configuration. This field can be used to override the default display name generated from the configuration."
        },
        "duration": {
          "type": "string",
          "description": "Duration of this limit in textual notation. Must be \"100s\" or \"1d\". Used by group-based quotas only."
        },
        "freeTier": {
          "type": "string",
          "description": "Free tier value displayed in the Developers Console for this limit. The free tier is the number of tokens that will be subtracted from the billed amount when billing is enabled. This field can only be set on a limit with duration \"1d\", in a billable group; it is invalid on any other limit. If this field is not set, it defaults to 0, indicating that there is no free tier for this service. Used by group-based quotas only."
        },
        "maxLimit": {
          "type": "string",
          "description": "Maximum number of tokens that can be consumed during the specified duration. Client application developers can override the default limit up to this maximum. If specified, this value cannot be set to a value less than the default limit. If not specified, it is set to the default limit. To allow clients to apply overrides with no upper bound, set this to -1, indicating unlimited maximum quota. Used by group-based quotas only."
        },
        "metric": {
          "type": "string",
          "description": "The name of the metric this quota limit applies to. The quota limits with the same metric will be checked together during runtime. The metric must be defined within the service config."
        },
        "name": {
          "type": "string",
          "description": "Name of the quota limit. The name must be provided, and it must be unique within the service. The name can only include alphanumeric characters as well as '-'. The maximum length of the limit name is 64 characters."
        },
        "unit": {
          "type": "string",
          "description": "Specify the unit of the quota limit. It uses the same syntax as Metric.unit. The supported unit kinds are determined by the quota backend system. Here are some examples: * \"1/min/{project}\" for quota per minute per project. Note: the order of unit components is insignificant. The \"1\" at the beginning is required to follow the metric unit syntax."
        },
        "values": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tiered limit values. You must specify this as a key:value pair, with an integer value that is the maximum number of requests allowed for the specified unit. Currently only STANDARD is supported."
        }
      },
      "type": "object",
      "required": [
        "defaultLimit",
        "description",
        "displayName",
        "duration",
        "freeTier",
        "maxLimit",
        "metric",
        "name",
        "unit",
        "values"
      ]
    },
    "google-native:servicemanagement/v1:QuotaResponse": {
      "description": "Quota configuration helps to achieve fairness and budgeting in service usage. The metric based quota configuration works this way: - The service configuration defines a set of metrics. - For API calls, the quota.metric_rules maps methods to metrics with corresponding costs. - The quota.limits defines limits on the metrics, which will be used for quota checks at runtime. An example quota configuration in yaml format: quota: limits: - name: apiWriteQpsPerProject metric: library.googleapis.com/write_calls unit: \"1/min/{project}\" # rate limit for consumer projects values: STANDARD: 10000 (The metric rules bind all methods to the read_calls metric, except for the UpdateBook and DeleteBook methods. These two methods are mapped to the write_calls metric, with the UpdateBook method consuming at twice rate as the DeleteBook method.) metric_rules: - selector: \"*\" metric_costs: library.googleapis.com/read_calls: 1 - selector: google.example.library.v1.LibraryService.UpdateBook metric_costs: library.googleapis.com/write_calls: 2 - selector: google.example.library.v1.LibraryService.DeleteBook metric_costs: library.googleapis.com/write_calls: 1 Corresponding Metric definition: metrics: - name: library.googleapis.com/read_calls display_name: Read requests metric_kind: DELTA value_type: INT64 - name: library.googleapis.com/write_calls display_name: Write requests metric_kind: DELTA value_type: INT64 ",
      "properties": {
        "limits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:QuotaLimitResponse"
          },
          "description": "List of QuotaLimit definitions for the service."
        },
        "metricRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricRuleResponse"
          },
          "description": "List of MetricRule definitions, each one mapping a selected method to one or more metrics."
        }
      },
      "type": "object",
      "required": [
        "limits",
        "metricRules"
      ]
    },
    "google-native:servicemanagement/v1:RolloutStatus": {
      "description": "The status of this rollout. Readonly. In case of a failed rollout, the system will automatically rollback to the current Rollout version. Readonly.",
      "type": "string",
      "enum": [
        {
          "name": "RolloutStatusUnspecified",
          "description": "No status specified.",
          "value": "ROLLOUT_STATUS_UNSPECIFIED"
        },
        {
          "name": "InProgress",
          "description": "The Rollout is in progress.",
          "value": "IN_PROGRESS"
        },
        {
          "name": "Success",
          "description": "The Rollout has completed successfully.",
          "value": "SUCCESS"
        },
        {
          "name": "Cancelled",
          "description": "The Rollout has been cancelled. This can happen if you have overlapping Rollout pushes, and the previous ones will be cancelled.",
          "value": "CANCELLED"
        },
        {
          "name": "Failed",
          "description": "The Rollout has failed and the rollback attempt has failed too.",
          "value": "FAILED"
        },
        {
          "name": "Pending",
          "description": "The Rollout has not started yet and is pending for execution.",
          "value": "PENDING"
        },
        {
          "name": "FailedRolledBack",
          "description": "The Rollout has failed and rolled back to the previous successful Rollout.",
          "value": "FAILED_ROLLED_BACK"
        }
      ]
    },
    "google-native:servicemanagement/v1:RubySettings": {
      "description": "Settings for Ruby client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettings",
          "description": "Some settings."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:RubySettingsResponse": {
      "description": "Settings for Ruby client libraries.",
      "properties": {
        "common": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CommonLanguageSettingsResponse",
          "description": "Some settings."
        }
      },
      "type": "object",
      "required": [
        "common"
      ]
    },
    "google-native:servicemanagement/v1:SourceContext": {
      "description": "`SourceContext` represents information about the source of a protobuf element, like the file in which it is defined.",
      "properties": {
        "fileName": {
          "type": "string",
          "description": "The path-qualified name of the .proto file that contained the associated protobuf element. For example: `\"google/protobuf/source_context.proto\"`."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:SourceContextResponse": {
      "description": "`SourceContext` represents information about the source of a protobuf element, like the file in which it is defined.",
      "properties": {
        "fileName": {
          "type": "string",
          "description": "The path-qualified name of the .proto file that contained the associated protobuf element. For example: `\"google/protobuf/source_context.proto\"`."
        }
      },
      "type": "object",
      "required": [
        "fileName"
      ]
    },
    "google-native:servicemanagement/v1:SourceInfoResponse": {
      "description": "Source information used to create a Service Config",
      "properties": {
        "sourceFiles": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "All files used during config generation."
        }
      },
      "type": "object",
      "required": [
        "sourceFiles"
      ]
    },
    "google-native:servicemanagement/v1:SystemParameter": {
      "description": "Define a parameter's name and location. The parameter may be passed as either an HTTP header or a URL query parameter, and if both are passed the behavior is implementation-dependent.",
      "properties": {
        "httpHeader": {
          "type": "string",
          "description": "Define the HTTP header name to use for the parameter. It is case insensitive."
        },
        "name": {
          "type": "string",
          "description": "Define the name of the parameter, such as \"api_key\" . It is case sensitive."
        },
        "urlQueryParameter": {
          "type": "string",
          "description": "Define the URL query parameter name to use for the parameter. It is case sensitive."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:SystemParameterResponse": {
      "description": "Define a parameter's name and location. The parameter may be passed as either an HTTP header or a URL query parameter, and if both are passed the behavior is implementation-dependent.",
      "properties": {
        "httpHeader": {
          "type": "string",
          "description": "Define the HTTP header name to use for the parameter. It is case insensitive."
        },
        "name": {
          "type": "string",
          "description": "Define the name of the parameter, such as \"api_key\" . It is case sensitive."
        },
        "urlQueryParameter": {
          "type": "string",
          "description": "Define the URL query parameter name to use for the parameter. It is case sensitive."
        }
      },
      "type": "object",
      "required": [
        "httpHeader",
        "name",
        "urlQueryParameter"
      ]
    },
    "google-native:servicemanagement/v1:SystemParameterRule": {
      "description": "Define a system parameter rule mapping system parameter definitions to methods.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:SystemParameter"
          },
          "description": "Define parameters. Multiple names may be defined for a parameter. For a given method call, only one of them should be used. If multiple names are used the behavior is implementation-dependent. If none of the specified names are present the behavior is parameter-dependent."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Use '*' to indicate all methods in all APIs. Refer to selector for syntax details."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:SystemParameterRuleResponse": {
      "description": "Define a system parameter rule mapping system parameter definitions to methods.",
      "properties": {
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:SystemParameterResponse"
          },
          "description": "Define parameters. Multiple names may be defined for a parameter. For a given method call, only one of them should be used. If multiple names are used the behavior is implementation-dependent. If none of the specified names are present the behavior is parameter-dependent."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Use '*' to indicate all methods in all APIs. Refer to selector for syntax details."
        }
      },
      "type": "object",
      "required": [
        "parameters",
        "selector"
      ]
    },
    "google-native:servicemanagement/v1:SystemParameters": {
      "description": "### System parameter configuration A system parameter is a special kind of parameter defined by the API system, not by an individual API. It is typically mapped to an HTTP header and/or a URL query parameter. This configuration specifies which methods change the names of the system parameters.",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:SystemParameterRule"
          },
          "description": "Define system parameters. The parameters defined here will override the default parameters implemented by the system. If this field is missing from the service config, default system parameters will be used. Default system parameters and names is implementation-dependent. Example: define api key for all methods system_parameters rules: - selector: \"*\" parameters: - name: api_key url_query_parameter: api_key Example: define 2 api key names for a specific method. system_parameters rules: - selector: \"/ListShelves\" parameters: - name: api_key http_header: Api-Key1 - name: api_key http_header: Api-Key2 **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:SystemParametersResponse": {
      "description": "### System parameter configuration A system parameter is a special kind of parameter defined by the API system, not by an individual API. It is typically mapped to an HTTP header and/or a URL query parameter. This configuration specifies which methods change the names of the system parameters.",
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:SystemParameterRuleResponse"
          },
          "description": "Define system parameters. The parameters defined here will override the default parameters implemented by the system. If this field is missing from the service config, default system parameters will be used. Default system parameters and names is implementation-dependent. Example: define api key for all methods system_parameters rules: - selector: \"*\" parameters: - name: api_key url_query_parameter: api_key Example: define 2 api key names for a specific method. system_parameters rules: - selector: \"/ListShelves\" parameters: - name: api_key http_header: Api-Key1 - name: api_key http_header: Api-Key2 **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object",
      "required": [
        "rules"
      ]
    },
    "google-native:servicemanagement/v1:TrafficPercentStrategy": {
      "description": "Strategy that specifies how clients of Google Service Controller want to send traffic to use different config versions. This is generally used by API proxy to split traffic based on your configured percentage for each config version. One example of how to gradually rollout a new service configuration using this strategy: Day 1 Rollout { id: \"example.googleapis.com/rollout_20160206\" traffic_percent_strategy { percentages: { \"example.googleapis.com/20160201\": 70.00 \"example.googleapis.com/20160206\": 30.00 } } } Day 2 Rollout { id: \"example.googleapis.com/rollout_20160207\" traffic_percent_strategy: { percentages: { \"example.googleapis.com/20160206\": 100.00 } } }",
      "properties": {
        "percentages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Maps service configuration IDs to their corresponding traffic percentage. Key is the service configuration ID, Value is the traffic percentage which must be greater than 0.0 and the sum must equal to 100.0."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:TrafficPercentStrategyResponse": {
      "description": "Strategy that specifies how clients of Google Service Controller want to send traffic to use different config versions. This is generally used by API proxy to split traffic based on your configured percentage for each config version. One example of how to gradually rollout a new service configuration using this strategy: Day 1 Rollout { id: \"example.googleapis.com/rollout_20160206\" traffic_percent_strategy { percentages: { \"example.googleapis.com/20160201\": 70.00 \"example.googleapis.com/20160206\": 30.00 } } } Day 2 Rollout { id: \"example.googleapis.com/rollout_20160207\" traffic_percent_strategy: { percentages: { \"example.googleapis.com/20160206\": 100.00 } } }",
      "properties": {
        "percentages": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Maps service configuration IDs to their corresponding traffic percentage. Key is the service configuration ID, Value is the traffic percentage which must be greater than 0.0 and the sum must equal to 100.0."
        }
      },
      "type": "object",
      "required": [
        "percentages"
      ]
    },
    "google-native:servicemanagement/v1:Type": {
      "description": "A protocol buffer message type.",
      "properties": {
        "edition": {
          "type": "string",
          "description": "The source edition string, only valid when syntax is SYNTAX_EDITIONS."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Field"
          },
          "description": "The list of fields."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified message name."
        },
        "oneofs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of types appearing in `oneof` definitions in this type."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Option"
          },
          "description": "The protocol buffer options."
        },
        "sourceContext": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SourceContext",
          "description": "The source context."
        },
        "syntax": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:TypeSyntax",
          "description": "The source syntax."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:TypeResponse": {
      "description": "A protocol buffer message type.",
      "properties": {
        "edition": {
          "type": "string",
          "description": "The source edition string, only valid when syntax is SYNTAX_EDITIONS."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:FieldResponse"
          },
          "description": "The list of fields."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified message name."
        },
        "oneofs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of types appearing in `oneof` definitions in this type."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:OptionResponse"
          },
          "description": "The protocol buffer options."
        },
        "sourceContext": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SourceContextResponse",
          "description": "The source context."
        },
        "syntax": {
          "type": "string",
          "description": "The source syntax."
        }
      },
      "type": "object",
      "required": [
        "edition",
        "fields",
        "name",
        "oneofs",
        "options",
        "sourceContext",
        "syntax"
      ]
    },
    "google-native:servicemanagement/v1:TypeSyntax": {
      "description": "The source syntax.",
      "type": "string",
      "enum": [
        {
          "name": "SyntaxProto2",
          "description": "Syntax `proto2`.",
          "value": "SYNTAX_PROTO2"
        },
        {
          "name": "SyntaxProto3",
          "description": "Syntax `proto3`.",
          "value": "SYNTAX_PROTO3"
        },
        {
          "name": "SyntaxEditions",
          "description": "Syntax `editions`.",
          "value": "SYNTAX_EDITIONS"
        }
      ]
    },
    "google-native:servicemanagement/v1:Usage": {
      "description": "Configuration controlling usage of a service.",
      "properties": {
        "producerNotificationChannel": {
          "type": "string",
          "description": "The full resource name of a channel used for sending notifications to the service producer. Google Service Management currently only supports [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification channel. To use Google Cloud Pub/Sub as the channel, this must be the name of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format documented in https://cloud.google.com/pubsub/docs/overview."
        },
        "requirements": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requirements that must be satisfied before a consumer project can use the service. Each requirement is of the form /; for example 'serviceusage.googleapis.com/billing-enabled'. For Google APIs, a Terms of Service requirement must be included here. Google Cloud APIs must include \"serviceusage.googleapis.com/tos/cloud\". Other Google APIs should include \"serviceusage.googleapis.com/tos/universal\". Additional ToS can be included based on the business needs."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:UsageRule"
          },
          "description": "A list of usage rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:UsageResponse": {
      "description": "Configuration controlling usage of a service.",
      "properties": {
        "producerNotificationChannel": {
          "type": "string",
          "description": "The full resource name of a channel used for sending notifications to the service producer. Google Service Management currently only supports [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification channel. To use Google Cloud Pub/Sub as the channel, this must be the name of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format documented in https://cloud.google.com/pubsub/docs/overview."
        },
        "requirements": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Requirements that must be satisfied before a consumer project can use the service. Each requirement is of the form /; for example 'serviceusage.googleapis.com/billing-enabled'. For Google APIs, a Terms of Service requirement must be included here. Google Cloud APIs must include \"serviceusage.googleapis.com/tos/cloud\". Other Google APIs should include \"serviceusage.googleapis.com/tos/universal\". Additional ToS can be included based on the business needs."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:UsageRuleResponse"
          },
          "description": "A list of usage rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order."
        }
      },
      "type": "object",
      "required": [
        "producerNotificationChannel",
        "requirements",
        "rules"
      ]
    },
    "google-native:servicemanagement/v1:UsageRule": {
      "description": "Usage configuration rules for the service. NOTE: Under development. Use this rule to configure unregistered calls for the service. Unregistered calls are calls that do not contain consumer project identity. (Example: calls that do not contain an API key). By default, API methods do not allow unregistered calls, and each method call must be identified by a consumer project identity. Use this rule to allow/disallow unregistered calls. Example of an API that wants to allow unregistered calls for entire service. usage: rules: - selector: \"*\" allow_unregistered_calls: true Example of a method that wants to allow unregistered calls. usage: rules: - selector: \"google.example.library.v1.LibraryService.CreateBook\" allow_unregistered_calls: true",
      "properties": {
        "allowUnregisteredCalls": {
          "type": "boolean",
          "description": "If true, the selected method allows unregistered calls, e.g. calls that don't identify any user or application."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Use '*' to indicate all methods in all APIs. Refer to selector for syntax details."
        },
        "skipServiceControl": {
          "type": "boolean",
          "description": "If true, the selected method should skip service control and the control plane features, such as quota and billing, will not be available. This flag is used by Google Cloud Endpoints to bypass checks for internal methods, such as service health check methods."
        }
      },
      "type": "object"
    },
    "google-native:servicemanagement/v1:UsageRuleResponse": {
      "description": "Usage configuration rules for the service. NOTE: Under development. Use this rule to configure unregistered calls for the service. Unregistered calls are calls that do not contain consumer project identity. (Example: calls that do not contain an API key). By default, API methods do not allow unregistered calls, and each method call must be identified by a consumer project identity. Use this rule to allow/disallow unregistered calls. Example of an API that wants to allow unregistered calls for entire service. usage: rules: - selector: \"*\" allow_unregistered_calls: true Example of a method that wants to allow unregistered calls. usage: rules: - selector: \"google.example.library.v1.LibraryService.CreateBook\" allow_unregistered_calls: true",
      "properties": {
        "allowUnregisteredCalls": {
          "type": "boolean",
          "description": "If true, the selected method allows unregistered calls, e.g. calls that don't identify any user or application."
        },
        "selector": {
          "type": "string",
          "description": "Selects the methods to which this rule applies. Use '*' to indicate all methods in all APIs. Refer to selector for syntax details."
        },
        "skipServiceControl": {
          "type": "boolean",
          "description": "If true, the selected method should skip service control and the control plane features, such as quota and billing, will not be available. This flag is used by Google Cloud Endpoints to bypass checks for internal methods, such as service health check methods."
        }
      },
      "type": "object",
      "required": [
        "allowUnregisteredCalls",
        "selector",
        "skipServiceControl"
      ]
    },
    "google-native:sourcerepo/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sourcerepo%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:sourcerepo/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sourcerepo%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:sourcerepo/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:sourcerepo%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:sourcerepo/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:sourcerepo/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:sourcerepo/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:sourcerepo%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:sourcerepo/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:sourcerepo%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:sourcerepo/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:sourcerepo/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:sourcerepo/v1:MirrorConfig": {
      "description": "Configuration to automatically mirror a repository from another hosting service, for example GitHub or Bitbucket.",
      "properties": {
        "deployKeyId": {
          "type": "string",
          "description": "ID of the SSH deploy key at the other hosting service. Removing this key from the other service would deauthorize Google Cloud Source Repositories from mirroring."
        },
        "url": {
          "type": "string",
          "description": "URL of the main repository at the other hosting service."
        },
        "webhookId": {
          "type": "string",
          "description": "ID of the webhook listening to updates to trigger mirroring. Removing this webhook from the other hosting service will stop Google Cloud Source Repositories from receiving notifications, and thereby disabling mirroring."
        }
      },
      "type": "object"
    },
    "google-native:sourcerepo/v1:MirrorConfigResponse": {
      "description": "Configuration to automatically mirror a repository from another hosting service, for example GitHub or Bitbucket.",
      "properties": {
        "deployKeyId": {
          "type": "string",
          "description": "ID of the SSH deploy key at the other hosting service. Removing this key from the other service would deauthorize Google Cloud Source Repositories from mirroring."
        },
        "url": {
          "type": "string",
          "description": "URL of the main repository at the other hosting service."
        },
        "webhookId": {
          "type": "string",
          "description": "ID of the webhook listening to updates to trigger mirroring. Removing this webhook from the other hosting service will stop Google Cloud Source Repositories from receiving notifications, and thereby disabling mirroring."
        }
      },
      "type": "object",
      "required": [
        "deployKeyId",
        "url",
        "webhookId"
      ]
    },
    "google-native:spanner/v1:AutoscalingConfig": {
      "description": "Autoscaling config for an instance.",
      "properties": {
        "autoscalingLimits": {
          "$ref": "#/types/google-native:spanner%2Fv1:AutoscalingLimits",
          "description": "Autoscaling limits for an instance."
        },
        "autoscalingTargets": {
          "$ref": "#/types/google-native:spanner%2Fv1:AutoscalingTargets",
          "description": "The autoscaling targets for an instance."
        }
      },
      "type": "object",
      "required": [
        "autoscalingLimits",
        "autoscalingTargets"
      ]
    },
    "google-native:spanner/v1:AutoscalingConfigResponse": {
      "description": "Autoscaling config for an instance.",
      "properties": {
        "autoscalingLimits": {
          "$ref": "#/types/google-native:spanner%2Fv1:AutoscalingLimitsResponse",
          "description": "Autoscaling limits for an instance."
        },
        "autoscalingTargets": {
          "$ref": "#/types/google-native:spanner%2Fv1:AutoscalingTargetsResponse",
          "description": "The autoscaling targets for an instance."
        }
      },
      "type": "object",
      "required": [
        "autoscalingLimits",
        "autoscalingTargets"
      ]
    },
    "google-native:spanner/v1:AutoscalingLimits": {
      "description": "The autoscaling limits for the instance. Users can define the minimum and maximum compute capacity allocated to the instance, and the autoscaler will only scale within that range. Users can either use nodes or processing units to specify the limits, but should use the same unit to set both the min_limit and max_limit.",
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "Maximum number of nodes allocated to the instance. If set, this number should be greater than or equal to min_nodes."
        },
        "maxProcessingUnits": {
          "type": "integer",
          "description": "Maximum number of processing units allocated to the instance. If set, this number should be multiples of 1000 and be greater than or equal to min_processing_units."
        },
        "minNodes": {
          "type": "integer",
          "description": "Minimum number of nodes allocated to the instance. If set, this number should be greater than or equal to 1."
        },
        "minProcessingUnits": {
          "type": "integer",
          "description": "Minimum number of processing units allocated to the instance. If set, this number should be multiples of 1000."
        }
      },
      "type": "object"
    },
    "google-native:spanner/v1:AutoscalingLimitsResponse": {
      "description": "The autoscaling limits for the instance. Users can define the minimum and maximum compute capacity allocated to the instance, and the autoscaler will only scale within that range. Users can either use nodes or processing units to specify the limits, but should use the same unit to set both the min_limit and max_limit.",
      "properties": {
        "maxNodes": {
          "type": "integer",
          "description": "Maximum number of nodes allocated to the instance. If set, this number should be greater than or equal to min_nodes."
        },
        "maxProcessingUnits": {
          "type": "integer",
          "description": "Maximum number of processing units allocated to the instance. If set, this number should be multiples of 1000 and be greater than or equal to min_processing_units."
        },
        "minNodes": {
          "type": "integer",
          "description": "Minimum number of nodes allocated to the instance. If set, this number should be greater than or equal to 1."
        },
        "minProcessingUnits": {
          "type": "integer",
          "description": "Minimum number of processing units allocated to the instance. If set, this number should be multiples of 1000."
        }
      },
      "type": "object",
      "required": [
        "maxNodes",
        "maxProcessingUnits",
        "minNodes",
        "minProcessingUnits"
      ]
    },
    "google-native:spanner/v1:AutoscalingTargets": {
      "description": "The autoscaling targets for an instance.",
      "properties": {
        "highPriorityCpuUtilizationPercent": {
          "type": "integer",
          "description": "The target high priority cpu utilization percentage that the autoscaler should be trying to achieve for the instance. This number is on a scale from 0 (no utilization) to 100 (full utilization). The valid range is [10, 90] inclusive."
        },
        "storageUtilizationPercent": {
          "type": "integer",
          "description": "The target storage utilization percentage that the autoscaler should be trying to achieve for the instance. This number is on a scale from 0 (no utilization) to 100 (full utilization). The valid range is [10, 100] inclusive."
        }
      },
      "type": "object",
      "required": [
        "highPriorityCpuUtilizationPercent",
        "storageUtilizationPercent"
      ]
    },
    "google-native:spanner/v1:AutoscalingTargetsResponse": {
      "description": "The autoscaling targets for an instance.",
      "properties": {
        "highPriorityCpuUtilizationPercent": {
          "type": "integer",
          "description": "The target high priority cpu utilization percentage that the autoscaler should be trying to achieve for the instance. This number is on a scale from 0 (no utilization) to 100 (full utilization). The valid range is [10, 90] inclusive."
        },
        "storageUtilizationPercent": {
          "type": "integer",
          "description": "The target storage utilization percentage that the autoscaler should be trying to achieve for the instance. This number is on a scale from 0 (no utilization) to 100 (full utilization). The valid range is [10, 100] inclusive."
        }
      },
      "type": "object",
      "required": [
        "highPriorityCpuUtilizationPercent",
        "storageUtilizationPercent"
      ]
    },
    "google-native:spanner/v1:BackupInfoResponse": {
      "description": "Information about a backup.",
      "properties": {
        "backup": {
          "type": "string",
          "description": "Name of the backup."
        },
        "createTime": {
          "type": "string",
          "description": "The time the CreateBackup request was received."
        },
        "sourceDatabase": {
          "type": "string",
          "description": "Name of the database the backup was created from."
        },
        "versionTime": {
          "type": "string",
          "description": "The backup contains an externally consistent copy of `source_database` at the timestamp specified by `version_time`. If the CreateBackup request did not specify `version_time`, the `version_time` of the backup is equivalent to the `create_time`."
        }
      },
      "type": "object",
      "required": [
        "backup",
        "createTime",
        "sourceDatabase",
        "versionTime"
      ]
    },
    "google-native:spanner/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:spanner%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:spanner/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:spanner%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:spanner/v1:DatabaseDatabaseDialect": {
      "description": "Optional. The dialect of the Cloud Spanner Database.",
      "type": "string",
      "enum": [
        {
          "name": "DatabaseDialectUnspecified",
          "description": "Default value. This value will create a database with the GOOGLE_STANDARD_SQL dialect.",
          "value": "DATABASE_DIALECT_UNSPECIFIED"
        },
        {
          "name": "GoogleStandardSql",
          "description": "GoogleSQL supported SQL.",
          "value": "GOOGLE_STANDARD_SQL"
        },
        {
          "name": "Postgresql",
          "description": "PostgreSQL supported SQL.",
          "value": "POSTGRESQL"
        }
      ]
    },
    "google-native:spanner/v1:EncryptionConfig": {
      "description": "Encryption configuration for a Cloud Spanner database.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS key to be used for encrypting and decrypting the database. Values are of the form `projects//locations//keyRings//cryptoKeys/`."
        }
      },
      "type": "object"
    },
    "google-native:spanner/v1:EncryptionConfigResponse": {
      "description": "Encryption configuration for a Cloud Spanner database.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS key to be used for encrypting and decrypting the database. Values are of the form `projects//locations//keyRings//cryptoKeys/`."
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:spanner/v1:EncryptionInfoResponse": {
      "description": "Encryption information for a Cloud Spanner database or backup.",
      "properties": {
        "encryptionStatus": {
          "$ref": "#/types/google-native:spanner%2Fv1:StatusResponse",
          "description": "If present, the status of a recent encrypt/decrypt call on underlying data for this database or backup. Regardless of status, data is always encrypted at rest."
        },
        "encryptionType": {
          "type": "string",
          "description": "The type of encryption."
        },
        "kmsKeyVersion": {
          "type": "string",
          "description": "A Cloud KMS key version that is being used to protect the database or backup."
        }
      },
      "type": "object",
      "required": [
        "encryptionStatus",
        "encryptionType",
        "kmsKeyVersion"
      ]
    },
    "google-native:spanner/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:spanner/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:spanner/v1:FreeInstanceMetadata": {
      "description": "Free instance specific metadata that is kept even after an instance has been upgraded for tracking purposes.",
      "properties": {
        "expireBehavior": {
          "$ref": "#/types/google-native:spanner%2Fv1:FreeInstanceMetadataExpireBehavior",
          "description": "Specifies the expiration behavior of a free instance. The default of ExpireBehavior is `REMOVE_AFTER_GRACE_PERIOD`. This can be modified during or after creation, and before expiration."
        }
      },
      "type": "object"
    },
    "google-native:spanner/v1:FreeInstanceMetadataExpireBehavior": {
      "description": "Specifies the expiration behavior of a free instance. The default of ExpireBehavior is `REMOVE_AFTER_GRACE_PERIOD`. This can be modified during or after creation, and before expiration.",
      "type": "string",
      "enum": [
        {
          "name": "ExpireBehaviorUnspecified",
          "description": "Not specified.",
          "value": "EXPIRE_BEHAVIOR_UNSPECIFIED"
        },
        {
          "name": "FreeToProvisioned",
          "description": "When the free instance expires, upgrade the instance to a provisioned instance.",
          "value": "FREE_TO_PROVISIONED"
        },
        {
          "name": "RemoveAfterGracePeriod",
          "description": "When the free instance expires, disable the instance, and delete it after the grace period passes if it has not been upgraded.",
          "value": "REMOVE_AFTER_GRACE_PERIOD"
        }
      ]
    },
    "google-native:spanner/v1:FreeInstanceMetadataResponse": {
      "description": "Free instance specific metadata that is kept even after an instance has been upgraded for tracking purposes.",
      "properties": {
        "expireBehavior": {
          "type": "string",
          "description": "Specifies the expiration behavior of a free instance. The default of ExpireBehavior is `REMOVE_AFTER_GRACE_PERIOD`. This can be modified during or after creation, and before expiration."
        },
        "expireTime": {
          "type": "string",
          "description": "Timestamp after which the instance will either be upgraded or scheduled for deletion after a grace period. ExpireBehavior is used to choose between upgrading or scheduling the free instance for deletion. This timestamp is set during the creation of a free instance."
        },
        "upgradeTime": {
          "type": "string",
          "description": "If present, the timestamp at which the free instance was upgraded to a provisioned instance."
        }
      },
      "type": "object",
      "required": [
        "expireBehavior",
        "expireTime",
        "upgradeTime"
      ]
    },
    "google-native:spanner/v1:InstanceInstanceType": {
      "description": "The `InstanceType` of the current instance.",
      "type": "string",
      "enum": [
        {
          "name": "InstanceTypeUnspecified",
          "description": "Not specified.",
          "value": "INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Provisioned",
          "description": "Provisioned instances have dedicated resources, standard usage limits and support.",
          "value": "PROVISIONED"
        },
        {
          "name": "FreeInstance",
          "description": "Free instances provide no guarantee for dedicated resources, [node_count, processing_units] should be 0. They come with stricter usage limits and limited support.",
          "value": "FREE_INSTANCE"
        }
      ]
    },
    "google-native:spanner/v1:ReplicaInfo": {
      "properties": {
        "defaultLeaderLocation": {
          "type": "boolean",
          "description": "If true, this location is designated as the default leader location where leader replicas are placed. See the [region types documentation](https://cloud.google.com/spanner/docs/instances#region_types) for more details."
        },
        "location": {
          "type": "string",
          "description": "The location of the serving resources, e.g. \"us-central1\"."
        },
        "type": {
          "$ref": "#/types/google-native:spanner%2Fv1:ReplicaInfoType",
          "description": "The type of replica."
        }
      },
      "type": "object"
    },
    "google-native:spanner/v1:ReplicaInfoResponse": {
      "properties": {
        "defaultLeaderLocation": {
          "type": "boolean",
          "description": "If true, this location is designated as the default leader location where leader replicas are placed. See the [region types documentation](https://cloud.google.com/spanner/docs/instances#region_types) for more details."
        },
        "location": {
          "type": "string",
          "description": "The location of the serving resources, e.g. \"us-central1\"."
        },
        "type": {
          "type": "string",
          "description": "The type of replica."
        }
      },
      "type": "object",
      "required": [
        "defaultLeaderLocation",
        "location",
        "type"
      ]
    },
    "google-native:spanner/v1:ReplicaInfoType": {
      "description": "The type of replica.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Not specified.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "ReadWrite",
          "description": "Read-write replicas support both reads and writes. These replicas: * Maintain a full copy of your data. * Serve reads. * Can vote whether to commit a write. * Participate in leadership election. * Are eligible to become a leader.",
          "value": "READ_WRITE"
        },
        {
          "name": "ReadOnly",
          "description": "Read-only replicas only support reads (not writes). Read-only replicas: * Maintain a full copy of your data. * Serve reads. * Do not participate in voting to commit writes. * Are not eligible to become a leader.",
          "value": "READ_ONLY"
        },
        {
          "name": "Witness",
          "description": "Witness replicas don't support reads but do participate in voting to commit writes. Witness replicas: * Do not maintain a full copy of data. * Do not serve reads. * Vote whether to commit writes. * Participate in leader election but are not eligible to become leader.",
          "value": "WITNESS"
        }
      ]
    },
    "google-native:spanner/v1:RestoreInfoResponse": {
      "description": "Information about the database restore.",
      "properties": {
        "backupInfo": {
          "$ref": "#/types/google-native:spanner%2Fv1:BackupInfoResponse",
          "description": "Information about the backup used to restore the database. The backup may no longer exist."
        },
        "sourceType": {
          "type": "string",
          "description": "The type of the restore source."
        }
      },
      "type": "object",
      "required": [
        "backupInfo",
        "sourceType"
      ]
    },
    "google-native:spanner/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:speech/v1:ClassItem": {
      "description": "An item of the class.",
      "properties": {
        "value": {
          "type": "string",
          "description": "The class item's value."
        }
      },
      "type": "object"
    },
    "google-native:speech/v1:ClassItemResponse": {
      "description": "An item of the class.",
      "properties": {
        "value": {
          "type": "string",
          "description": "The class item's value."
        }
      },
      "type": "object",
      "required": [
        "value"
      ]
    },
    "google-native:speech/v1:Phrase": {
      "description": "A phrases containing words and phrase \"hints\" so that the speech recognition is more likely to recognize them. This can be used to improve the accuracy for specific words and phrases, for example, if specific commands are typically spoken by the user. This can also be used to add additional words to the vocabulary of the recognizer. See [usage limits](https://cloud.google.com/speech-to-text/quotas#content). List items can also include pre-built or custom classes containing groups of words that represent common concepts that occur in natural language. For example, rather than providing a phrase hint for every month of the year (e.g. \"i was born in january\", \"i was born in febuary\", ...), use the pre-built `$MONTH` class improves the likelihood of correctly transcribing audio that includes months (e.g. \"i was born in $month\"). To refer to pre-built classes, use the class' symbol prepended with `$` e.g. `$MONTH`. To refer to custom classes that were defined inline in the request, set the class's `custom_class_id` to a string unique to all class resources and inline classes. Then use the class' id wrapped in $`{...}` e.g. \"${my-months}\". To refer to custom classes resources, use the class' id wrapped in `${}` (e.g. `${my-months}`). Speech-to-Text supports three locations: `global`, `us` (US North America), and `eu` (Europe). If you are calling the `speech.googleapis.com` endpoint, use the `global` location. To specify a region, use a [regional endpoint](https://cloud.google.com/speech-to-text/docs/endpoints) with matching `us` or `eu` location value.",
      "properties": {
        "boost": {
          "type": "number",
          "description": "Hint Boost. Overrides the boost set at the phrase set level. Positive value will increase the probability that a specific phrase will be recognized over other similar sounding phrases. The higher the boost, the higher the chance of false positive recognition as well. Negative boost will simply be ignored. Though `boost` can accept a wide range of positive values, most use cases are best served with values between 0 and 20. We recommend using a binary search approach to finding the optimal value for your use case as well as adding phrases both with and without boost to your requests."
        },
        "value": {
          "type": "string",
          "description": "The phrase itself."
        }
      },
      "type": "object"
    },
    "google-native:speech/v1:PhraseResponse": {
      "description": "A phrases containing words and phrase \"hints\" so that the speech recognition is more likely to recognize them. This can be used to improve the accuracy for specific words and phrases, for example, if specific commands are typically spoken by the user. This can also be used to add additional words to the vocabulary of the recognizer. See [usage limits](https://cloud.google.com/speech-to-text/quotas#content). List items can also include pre-built or custom classes containing groups of words that represent common concepts that occur in natural language. For example, rather than providing a phrase hint for every month of the year (e.g. \"i was born in january\", \"i was born in febuary\", ...), use the pre-built `$MONTH` class improves the likelihood of correctly transcribing audio that includes months (e.g. \"i was born in $month\"). To refer to pre-built classes, use the class' symbol prepended with `$` e.g. `$MONTH`. To refer to custom classes that were defined inline in the request, set the class's `custom_class_id` to a string unique to all class resources and inline classes. Then use the class' id wrapped in $`{...}` e.g. \"${my-months}\". To refer to custom classes resources, use the class' id wrapped in `${}` (e.g. `${my-months}`). Speech-to-Text supports three locations: `global`, `us` (US North America), and `eu` (Europe). If you are calling the `speech.googleapis.com` endpoint, use the `global` location. To specify a region, use a [regional endpoint](https://cloud.google.com/speech-to-text/docs/endpoints) with matching `us` or `eu` location value.",
      "properties": {
        "boost": {
          "type": "number",
          "description": "Hint Boost. Overrides the boost set at the phrase set level. Positive value will increase the probability that a specific phrase will be recognized over other similar sounding phrases. The higher the boost, the higher the chance of false positive recognition as well. Negative boost will simply be ignored. Though `boost` can accept a wide range of positive values, most use cases are best served with values between 0 and 20. We recommend using a binary search approach to finding the optimal value for your use case as well as adding phrases both with and without boost to your requests."
        },
        "value": {
          "type": "string",
          "description": "The phrase itself."
        }
      },
      "type": "object",
      "required": [
        "boost",
        "value"
      ]
    },
    "google-native:sqladmin/v1:AclEntry": {
      "description": "An entry for an Access Control list.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#aclEntry`."
        },
        "name": {
          "type": "string",
          "description": "Optional. A label to identify this entry."
        },
        "value": {
          "type": "string",
          "description": "The allowlisted value for the access control list."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:AclEntryResponse": {
      "description": "An entry for an Access Control list.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#aclEntry`."
        },
        "name": {
          "type": "string",
          "description": "Optional. A label to identify this entry."
        },
        "value": {
          "type": "string",
          "description": "The allowlisted value for the access control list."
        }
      },
      "type": "object",
      "required": [
        "expirationTime",
        "kind",
        "name",
        "value"
      ]
    },
    "google-native:sqladmin/v1:AdvancedMachineFeatures": {
      "description": "Specifies options for controlling advanced machine features.",
      "properties": {
        "threadsPerCore": {
          "type": "integer",
          "description": "The number of threads per physical core."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:AdvancedMachineFeaturesResponse": {
      "description": "Specifies options for controlling advanced machine features.",
      "properties": {
        "threadsPerCore": {
          "type": "integer",
          "description": "The number of threads per physical core."
        }
      },
      "type": "object",
      "required": [
        "threadsPerCore"
      ]
    },
    "google-native:sqladmin/v1:BackupConfiguration": {
      "description": "Database instance backup configuration.",
      "properties": {
        "backupRetentionSettings": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:BackupRetentionSettings",
          "description": "Backup retention settings."
        },
        "binaryLogEnabled": {
          "type": "boolean",
          "description": "(MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this configuration is enabled."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#backupConfiguration`."
        },
        "location": {
          "type": "string",
          "description": "Location of the backup"
        },
        "pointInTimeRecoveryEnabled": {
          "type": "boolean",
          "description": "Whether point in time recovery is enabled."
        },
        "replicationLogArchivingEnabled": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "startTime": {
          "type": "string",
          "description": "Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`."
        },
        "transactionLogRetentionDays": {
          "type": "integer",
          "description": "The number of days of transaction logs we retain for point in time restore, from 1-7."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:BackupConfigurationResponse": {
      "description": "Database instance backup configuration.",
      "properties": {
        "backupRetentionSettings": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:BackupRetentionSettingsResponse",
          "description": "Backup retention settings."
        },
        "binaryLogEnabled": {
          "type": "boolean",
          "description": "(MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this configuration is enabled."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#backupConfiguration`."
        },
        "location": {
          "type": "string",
          "description": "Location of the backup"
        },
        "pointInTimeRecoveryEnabled": {
          "type": "boolean",
          "description": "Whether point in time recovery is enabled."
        },
        "replicationLogArchivingEnabled": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "startTime": {
          "type": "string",
          "description": "Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`."
        },
        "transactionLogRetentionDays": {
          "type": "integer",
          "description": "The number of days of transaction logs we retain for point in time restore, from 1-7."
        }
      },
      "type": "object",
      "required": [
        "backupRetentionSettings",
        "binaryLogEnabled",
        "enabled",
        "kind",
        "location",
        "pointInTimeRecoveryEnabled",
        "replicationLogArchivingEnabled",
        "startTime",
        "transactionLogRetentionDays"
      ]
    },
    "google-native:sqladmin/v1:BackupRetentionSettings": {
      "description": "We currently only support backup retention by specifying the number of backups we will retain.",
      "properties": {
        "retainedBackups": {
          "type": "integer",
          "description": "Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is 'COUNT', we will retain this many backups."
        },
        "retentionUnit": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:BackupRetentionSettingsRetentionUnit",
          "description": "The unit that 'retained_backups' represents."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:BackupRetentionSettingsResponse": {
      "description": "We currently only support backup retention by specifying the number of backups we will retain.",
      "properties": {
        "retainedBackups": {
          "type": "integer",
          "description": "Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is 'COUNT', we will retain this many backups."
        },
        "retentionUnit": {
          "type": "string",
          "description": "The unit that 'retained_backups' represents."
        }
      },
      "type": "object",
      "required": [
        "retainedBackups",
        "retentionUnit"
      ]
    },
    "google-native:sqladmin/v1:BackupRetentionSettingsRetentionUnit": {
      "description": "The unit that 'retained_backups' represents.",
      "type": "string",
      "enum": [
        {
          "name": "RetentionUnitUnspecified",
          "description": "Backup retention unit is unspecified, will be treated as COUNT.",
          "value": "RETENTION_UNIT_UNSPECIFIED"
        },
        {
          "name": "Count",
          "description": "Retention will be by count, eg. \"retain the most recent 7 backups\".",
          "value": "COUNT"
        }
      ]
    },
    "google-native:sqladmin/v1:BackupRunBackupKind": {
      "description": "Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.",
      "type": "string",
      "enum": [
        {
          "name": "SqlBackupKindUnspecified",
          "description": "This is an unknown BackupKind.",
          "value": "SQL_BACKUP_KIND_UNSPECIFIED"
        },
        {
          "name": "Snapshot",
          "description": "The snapshot based backups",
          "value": "SNAPSHOT"
        },
        {
          "name": "Physical",
          "description": "Physical backups",
          "value": "PHYSICAL"
        }
      ]
    },
    "google-native:sqladmin/v1:BackupRunStatus": {
      "description": "The status of this run.",
      "type": "string",
      "enum": [
        {
          "name": "SqlBackupRunStatusUnspecified",
          "description": "The status of the run is unknown.",
          "value": "SQL_BACKUP_RUN_STATUS_UNSPECIFIED"
        },
        {
          "name": "Enqueued",
          "description": "The backup operation was enqueued.",
          "value": "ENQUEUED"
        },
        {
          "name": "Overdue",
          "description": "The backup is overdue across a given backup window. Indicates a problem. Example: Long-running operation in progress during the whole window.",
          "value": "OVERDUE"
        },
        {
          "name": "Running",
          "description": "The backup is in progress.",
          "value": "RUNNING"
        },
        {
          "name": "Failed",
          "description": "The backup failed.",
          "value": "FAILED"
        },
        {
          "name": "Successful",
          "description": "The backup was successful.",
          "value": "SUCCESSFUL"
        },
        {
          "name": "Skipped",
          "description": "The backup was skipped (without problems) for a given backup window. Example: Instance was idle.",
          "value": "SKIPPED"
        },
        {
          "name": "DeletionPending",
          "description": "The backup is about to be deleted.",
          "value": "DELETION_PENDING"
        },
        {
          "name": "DeletionFailed",
          "description": "The backup deletion failed.",
          "value": "DELETION_FAILED"
        },
        {
          "name": "Deleted",
          "description": "The backup has been deleted.",
          "value": "DELETED"
        }
      ]
    },
    "google-native:sqladmin/v1:BackupRunType": {
      "description": "The type of this run; can be either \"AUTOMATED\" or \"ON_DEMAND\" or \"FINAL\". This field defaults to \"ON_DEMAND\" and is ignored, when specified for insert requests.",
      "type": "string",
      "enum": [
        {
          "name": "SqlBackupRunTypeUnspecified",
          "description": "This is an unknown BackupRun type.",
          "value": "SQL_BACKUP_RUN_TYPE_UNSPECIFIED"
        },
        {
          "name": "Automated",
          "description": "The backup schedule automatically triggers a backup.",
          "value": "AUTOMATED"
        },
        {
          "name": "OnDemand",
          "description": "The user manually triggers a backup.",
          "value": "ON_DEMAND"
        }
      ]
    },
    "google-native:sqladmin/v1:DataCacheConfig": {
      "description": "Data cache configurations.",
      "properties": {
        "dataCacheEnabled": {
          "type": "boolean",
          "description": "Whether data cache is enabled for the instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:DataCacheConfigResponse": {
      "description": "Data cache configurations.",
      "properties": {
        "dataCacheEnabled": {
          "type": "boolean",
          "description": "Whether data cache is enabled for the instance."
        }
      },
      "type": "object",
      "required": [
        "dataCacheEnabled"
      ]
    },
    "google-native:sqladmin/v1:DatabaseFlags": {
      "description": "Database flags for Cloud SQL instances.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation."
        },
        "value": {
          "type": "string",
          "description": "The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn't take a value."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:DatabaseFlagsResponse": {
      "description": "Database flags for Cloud SQL instances.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation."
        },
        "value": {
          "type": "string",
          "description": "The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn't take a value."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:sqladmin/v1:DenyMaintenancePeriod": {
      "description": "Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.",
      "properties": {
        "endDate": {
          "type": "string",
          "description": "\"deny maintenance period\" end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01"
        },
        "startDate": {
          "type": "string",
          "description": "\"deny maintenance period\" start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01"
        },
        "time": {
          "type": "string",
          "description": "Time in UTC when the \"deny maintenance period\" starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:DenyMaintenancePeriodResponse": {
      "description": "Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.",
      "properties": {
        "endDate": {
          "type": "string",
          "description": "\"deny maintenance period\" end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01"
        },
        "startDate": {
          "type": "string",
          "description": "\"deny maintenance period\" start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01"
        },
        "time": {
          "type": "string",
          "description": "Time in UTC when the \"deny maintenance period\" starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00"
        }
      },
      "type": "object",
      "required": [
        "endDate",
        "startDate",
        "time"
      ]
    },
    "google-native:sqladmin/v1:DiskEncryptionConfiguration": {
      "description": "Disk encryption configuration for an instance.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "This is always `sql#diskEncryptionConfiguration`."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of KMS key for disk encryption"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:DiskEncryptionConfigurationResponse": {
      "description": "Disk encryption configuration for an instance.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "This is always `sql#diskEncryptionConfiguration`."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of KMS key for disk encryption"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "kmsKeyName"
      ]
    },
    "google-native:sqladmin/v1:DiskEncryptionStatus": {
      "description": "Disk encryption status for an instance.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "This is always `sql#diskEncryptionStatus`."
        },
        "kmsKeyVersionName": {
          "type": "string",
          "description": "KMS key version used to encrypt the Cloud SQL instance resource"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:DiskEncryptionStatusResponse": {
      "description": "Disk encryption status for an instance.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "This is always `sql#diskEncryptionStatus`."
        },
        "kmsKeyVersionName": {
          "type": "string",
          "description": "KMS key version used to encrypt the Cloud SQL instance resource"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "kmsKeyVersionName"
      ]
    },
    "google-native:sqladmin/v1:InsightsConfig": {
      "description": "Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration.",
      "properties": {
        "queryInsightsEnabled": {
          "type": "boolean",
          "description": "Whether Query Insights feature is enabled."
        },
        "queryPlansPerMinute": {
          "type": "integer",
          "description": "Number of query execution plans captured by Insights per minute for all queries combined. Default is 5."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Whether Query Insights will record application tags from query when enabled."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Whether Query Insights will record client address when enabled."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:InsightsConfigResponse": {
      "description": "Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration.",
      "properties": {
        "queryInsightsEnabled": {
          "type": "boolean",
          "description": "Whether Query Insights feature is enabled."
        },
        "queryPlansPerMinute": {
          "type": "integer",
          "description": "Number of query execution plans captured by Insights per minute for all queries combined. Default is 5."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Whether Query Insights will record application tags from query when enabled."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Whether Query Insights will record client address when enabled."
        }
      },
      "type": "object",
      "required": [
        "queryInsightsEnabled",
        "queryPlansPerMinute",
        "queryStringLength",
        "recordApplicationTags",
        "recordClientAddress"
      ]
    },
    "google-native:sqladmin/v1:InstanceBackendType": {
      "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.",
      "type": "string",
      "enum": [
        {
          "name": "SqlBackendTypeUnspecified",
          "description": "This is an unknown backend type for instance.",
          "value": "SQL_BACKEND_TYPE_UNSPECIFIED"
        },
        {
          "name": "FirstGen",
          "description": "V1 speckle instance.",
          "value": "FIRST_GEN"
        },
        {
          "name": "SecondGen",
          "description": "V2 speckle instance.",
          "value": "SECOND_GEN"
        },
        {
          "name": "External",
          "description": "On premises instance.",
          "value": "EXTERNAL"
        }
      ]
    },
    "google-native:sqladmin/v1:InstanceDatabaseVersion": {
      "description": "The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.",
      "type": "string",
      "enum": [
        {
          "name": "SqlDatabaseVersionUnspecified",
          "description": "This is an unknown database version.",
          "value": "SQL_DATABASE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Mysql51",
          "description": "The database version is MySQL 5.1.",
          "value": "MYSQL_5_1"
        },
        {
          "name": "Mysql55",
          "description": "The database version is MySQL 5.5.",
          "value": "MYSQL_5_5"
        },
        {
          "name": "Mysql56",
          "description": "The database version is MySQL 5.6.",
          "value": "MYSQL_5_6"
        },
        {
          "name": "Mysql57",
          "description": "The database version is MySQL 5.7.",
          "value": "MYSQL_5_7"
        },
        {
          "name": "Sqlserver2017Standard",
          "description": "The database version is SQL Server 2017 Standard.",
          "value": "SQLSERVER_2017_STANDARD"
        },
        {
          "name": "Sqlserver2017Enterprise",
          "description": "The database version is SQL Server 2017 Enterprise.",
          "value": "SQLSERVER_2017_ENTERPRISE"
        },
        {
          "name": "Sqlserver2017Express",
          "description": "The database version is SQL Server 2017 Express.",
          "value": "SQLSERVER_2017_EXPRESS"
        },
        {
          "name": "Sqlserver2017Web",
          "description": "The database version is SQL Server 2017 Web.",
          "value": "SQLSERVER_2017_WEB"
        },
        {
          "name": "Postgres96",
          "description": "The database version is PostgreSQL 9.6.",
          "value": "POSTGRES_9_6"
        },
        {
          "name": "Postgres10",
          "description": "The database version is PostgreSQL 10.",
          "value": "POSTGRES_10"
        },
        {
          "name": "Postgres11",
          "description": "The database version is PostgreSQL 11.",
          "value": "POSTGRES_11"
        },
        {
          "name": "Postgres12",
          "description": "The database version is PostgreSQL 12.",
          "value": "POSTGRES_12"
        },
        {
          "name": "Postgres13",
          "description": "The database version is PostgreSQL 13.",
          "value": "POSTGRES_13"
        },
        {
          "name": "Postgres14",
          "description": "The database version is PostgreSQL 14.",
          "value": "POSTGRES_14"
        },
        {
          "name": "Postgres15",
          "description": "The database version is PostgreSQL 15.",
          "value": "POSTGRES_15"
        },
        {
          "name": "Mysql80",
          "description": "The database version is MySQL 8.",
          "value": "MYSQL_8_0"
        },
        {
          "name": "Mysql8018",
          "description": "The database major version is MySQL 8.0 and the minor version is 18.",
          "value": "MYSQL_8_0_18"
        },
        {
          "name": "Mysql8026",
          "description": "The database major version is MySQL 8.0 and the minor version is 26.",
          "value": "MYSQL_8_0_26"
        },
        {
          "name": "Mysql8027",
          "description": "The database major version is MySQL 8.0 and the minor version is 27.",
          "value": "MYSQL_8_0_27"
        },
        {
          "name": "Mysql8028",
          "description": "The database major version is MySQL 8.0 and the minor version is 28.",
          "value": "MYSQL_8_0_28"
        },
        {
          "name": "Mysql8029",
          "description": "The database major version is MySQL 8.0 and the minor version is 29.",
          "value": "MYSQL_8_0_29"
        },
        {
          "name": "Mysql8030",
          "description": "The database major version is MySQL 8.0 and the minor version is 30.",
          "value": "MYSQL_8_0_30"
        },
        {
          "name": "Mysql8031",
          "description": "The database major version is MySQL 8.0 and the minor version is 31.",
          "value": "MYSQL_8_0_31"
        },
        {
          "name": "Mysql8032",
          "description": "The database major version is MySQL 8.0 and the minor version is 32.",
          "value": "MYSQL_8_0_32"
        },
        {
          "name": "Mysql8033",
          "description": "The database major version is MySQL 8.0 and the minor version is 33.",
          "value": "MYSQL_8_0_33"
        },
        {
          "name": "Mysql8034",
          "description": "The database major version is MySQL 8.0 and the minor version is 34.",
          "value": "MYSQL_8_0_34"
        },
        {
          "name": "Mysql8035",
          "description": "The database major version is MySQL 8.0 and the minor version is 35.",
          "value": "MYSQL_8_0_35"
        },
        {
          "name": "Mysql8036",
          "description": "The database major version is MySQL 8.0 and the minor version is 36.",
          "value": "MYSQL_8_0_36"
        },
        {
          "name": "Sqlserver2019Standard",
          "description": "The database version is SQL Server 2019 Standard.",
          "value": "SQLSERVER_2019_STANDARD"
        },
        {
          "name": "Sqlserver2019Enterprise",
          "description": "The database version is SQL Server 2019 Enterprise.",
          "value": "SQLSERVER_2019_ENTERPRISE"
        },
        {
          "name": "Sqlserver2019Express",
          "description": "The database version is SQL Server 2019 Express.",
          "value": "SQLSERVER_2019_EXPRESS"
        },
        {
          "name": "Sqlserver2019Web",
          "description": "The database version is SQL Server 2019 Web.",
          "value": "SQLSERVER_2019_WEB"
        },
        {
          "name": "Sqlserver2022Standard",
          "description": "The database version is SQL Server 2022 Standard.",
          "value": "SQLSERVER_2022_STANDARD"
        },
        {
          "name": "Sqlserver2022Enterprise",
          "description": "The database version is SQL Server 2022 Enterprise.",
          "value": "SQLSERVER_2022_ENTERPRISE"
        },
        {
          "name": "Sqlserver2022Express",
          "description": "The database version is SQL Server 2022 Express.",
          "value": "SQLSERVER_2022_EXPRESS"
        },
        {
          "name": "Sqlserver2022Web",
          "description": "The database version is SQL Server 2022 Web.",
          "value": "SQLSERVER_2022_WEB"
        }
      ]
    },
    "google-native:sqladmin/v1:InstanceFailoverReplica": {
      "description": "The name and status of the failover replica.",
      "properties": {
        "available": {
          "type": "boolean",
          "description": "The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true."
        },
        "name": {
          "type": "string",
          "description": "The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn't include the project ID."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:InstanceFailoverReplicaResponse": {
      "description": "The name and status of the failover replica.",
      "properties": {
        "available": {
          "type": "boolean",
          "description": "The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true."
        },
        "name": {
          "type": "string",
          "description": "The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn't include the project ID."
        }
      },
      "type": "object",
      "required": [
        "available",
        "name"
      ]
    },
    "google-native:sqladmin/v1:InstanceInstanceType": {
      "description": "The instance type.",
      "type": "string",
      "enum": [
        {
          "name": "SqlInstanceTypeUnspecified",
          "description": "This is an unknown Cloud SQL instance type.",
          "value": "SQL_INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "CloudSqlInstance",
          "description": "A regular Cloud SQL instance that is not replicating from a primary instance.",
          "value": "CLOUD_SQL_INSTANCE"
        },
        {
          "name": "OnPremisesInstance",
          "description": "An instance running on the customer's premises that is not managed by Cloud SQL.",
          "value": "ON_PREMISES_INSTANCE"
        },
        {
          "name": "ReadReplicaInstance",
          "description": "A Cloud SQL instance acting as a read-replica.",
          "value": "READ_REPLICA_INSTANCE"
        }
      ]
    },
    "google-native:sqladmin/v1:InstanceReference": {
      "description": "Reference to another Cloud SQL instance.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the Cloud SQL instance being referenced. This does not include the project ID."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it."
        },
        "region": {
          "type": "string",
          "description": "The region of the Cloud SQL instance being referenced."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:InstanceReferenceResponse": {
      "description": "Reference to another Cloud SQL instance.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the Cloud SQL instance being referenced. This does not include the project ID."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it."
        },
        "region": {
          "type": "string",
          "description": "The region of the Cloud SQL instance being referenced."
        }
      },
      "type": "object",
      "required": [
        "name",
        "project",
        "region"
      ]
    },
    "google-native:sqladmin/v1:InstanceSqlNetworkArchitecture": {
      "type": "string",
      "enum": [
        {
          "name": "SqlNetworkArchitectureUnspecified",
          "value": "SQL_NETWORK_ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "NewNetworkArchitecture",
          "description": "Instance is a Tenancy Unit (TU) instance.",
          "value": "NEW_NETWORK_ARCHITECTURE"
        },
        {
          "name": "OldNetworkArchitecture",
          "description": "Instance is an Umbrella instance.",
          "value": "OLD_NETWORK_ARCHITECTURE"
        }
      ]
    },
    "google-native:sqladmin/v1:InstanceState": {
      "description": "The current serving state of the Cloud SQL instance.",
      "type": "string",
      "enum": [
        {
          "name": "SqlInstanceStateUnspecified",
          "description": "The state of the instance is unknown.",
          "value": "SQL_INSTANCE_STATE_UNSPECIFIED"
        },
        {
          "name": "Runnable",
          "description": "The instance is running, or has been stopped by owner.",
          "value": "RUNNABLE"
        },
        {
          "name": "Suspended",
          "description": "The instance is not available, for example due to problems with billing.",
          "value": "SUSPENDED"
        },
        {
          "name": "PendingDelete",
          "description": "The instance is being deleted.",
          "value": "PENDING_DELETE"
        },
        {
          "name": "PendingCreate",
          "description": "The instance is being created.",
          "value": "PENDING_CREATE"
        },
        {
          "name": "Maintenance",
          "description": "The instance is down for maintenance.",
          "value": "MAINTENANCE"
        },
        {
          "name": "Failed",
          "description": "The creation of the instance failed or a fatal error occurred during maintenance.",
          "value": "FAILED"
        },
        {
          "name": "OnlineMaintenance",
          "description": "Deprecated",
          "value": "ONLINE_MAINTENANCE"
        }
      ]
    },
    "google-native:sqladmin/v1:InstanceSuspensionReasonItem": {
      "type": "string",
      "enum": [
        {
          "name": "SqlSuspensionReasonUnspecified",
          "description": "This is an unknown suspension reason.",
          "value": "SQL_SUSPENSION_REASON_UNSPECIFIED"
        },
        {
          "name": "BillingIssue",
          "description": "The instance is suspended due to billing issues (for example:, GCP account issue)",
          "value": "BILLING_ISSUE"
        },
        {
          "name": "LegalIssue",
          "description": "The instance is suspended due to illegal content (for example:, child pornography, copyrighted material, etc.).",
          "value": "LEGAL_ISSUE"
        },
        {
          "name": "OperationalIssue",
          "description": "The instance is causing operational issues (for example:, causing the database to crash).",
          "value": "OPERATIONAL_ISSUE"
        },
        {
          "name": "KmsKeyIssue",
          "description": "The KMS key used by the instance is either revoked or denied access to",
          "value": "KMS_KEY_ISSUE"
        }
      ]
    },
    "google-native:sqladmin/v1:IpConfiguration": {
      "description": "IP Management configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "The name of the allocated ip range for the private ip Cloud SQL instance. For example: \"google-managed-services-default\". If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`"
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:AclEntry"
          },
          "description": "The list of external networks that are allowed to connect to the instance using the IP. In 'CIDR' notation, also known as 'slash' notation (for example: `157.197.200.0/24`)."
        },
        "enablePrivatePathForGoogleCloudServices": {
          "type": "boolean",
          "description": "Controls connectivity to private IP instances from Google services, such as BigQuery."
        },
        "ipv4Enabled": {
          "type": "boolean",
          "description": "Whether the instance is assigned a public IP address or not."
        },
        "privateNetwork": {
          "type": "string",
          "description": "The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `/projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set."
        },
        "pscConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:PscConfig",
          "description": "PSC settings for this instance."
        },
        "requireSsl": {
          "type": "boolean",
          "description": "Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won't be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the legacy `require_ssl` flag."
        },
        "sslMode": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:IpConfigurationSslMode",
          "description": "Specify how SSL/TLS is enforced in database connections. This flag is supported only for PostgreSQL. Use the legacy `require_ssl` flag for enforcing SSL/TLS in MySQL and SQL Server. But, for PostgreSQL, use the `ssl_mode` flag instead of the legacy `require_ssl` flag. To avoid the conflict between those flags in PostgreSQL, only the following value pairs are valid: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` Note that the value of `ssl_mode` gets priority over the value of the legacy `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY, require_ssl=false`, the `ssl_mode=ENCRYPTED_ONLY` means \"only accepts SSL connection\", while the `require_ssl=false` means \"both non-SSL and SSL connections are allowed\". The database respects `ssl_mode` in this case and only accepts SSL connections."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:IpConfigurationResponse": {
      "description": "IP Management configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "The name of the allocated ip range for the private ip Cloud SQL instance. For example: \"google-managed-services-default\". If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`"
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:AclEntryResponse"
          },
          "description": "The list of external networks that are allowed to connect to the instance using the IP. In 'CIDR' notation, also known as 'slash' notation (for example: `157.197.200.0/24`)."
        },
        "enablePrivatePathForGoogleCloudServices": {
          "type": "boolean",
          "description": "Controls connectivity to private IP instances from Google services, such as BigQuery."
        },
        "ipv4Enabled": {
          "type": "boolean",
          "description": "Whether the instance is assigned a public IP address or not."
        },
        "privateNetwork": {
          "type": "string",
          "description": "The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `/projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set."
        },
        "pscConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:PscConfigResponse",
          "description": "PSC settings for this instance."
        },
        "requireSsl": {
          "type": "boolean",
          "description": "Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won't be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the legacy `require_ssl` flag."
        },
        "sslMode": {
          "type": "string",
          "description": "Specify how SSL/TLS is enforced in database connections. This flag is supported only for PostgreSQL. Use the legacy `require_ssl` flag for enforcing SSL/TLS in MySQL and SQL Server. But, for PostgreSQL, use the `ssl_mode` flag instead of the legacy `require_ssl` flag. To avoid the conflict between those flags in PostgreSQL, only the following value pairs are valid: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` Note that the value of `ssl_mode` gets priority over the value of the legacy `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY, require_ssl=false`, the `ssl_mode=ENCRYPTED_ONLY` means \"only accepts SSL connection\", while the `require_ssl=false` means \"both non-SSL and SSL connections are allowed\". The database respects `ssl_mode` in this case and only accepts SSL connections."
        }
      },
      "type": "object",
      "required": [
        "allocatedIpRange",
        "authorizedNetworks",
        "enablePrivatePathForGoogleCloudServices",
        "ipv4Enabled",
        "privateNetwork",
        "pscConfig",
        "requireSsl",
        "sslMode"
      ]
    },
    "google-native:sqladmin/v1:IpConfigurationSslMode": {
      "description": "Specify how SSL/TLS is enforced in database connections. This flag is supported only for PostgreSQL. Use the legacy `require_ssl` flag for enforcing SSL/TLS in MySQL and SQL Server. But, for PostgreSQL, use the `ssl_mode` flag instead of the legacy `require_ssl` flag. To avoid the conflict between those flags in PostgreSQL, only the following value pairs are valid: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` Note that the value of `ssl_mode` gets priority over the value of the legacy `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY, require_ssl=false`, the `ssl_mode=ENCRYPTED_ONLY` means \"only accepts SSL connection\", while the `require_ssl=false` means \"both non-SSL and SSL connections are allowed\". The database respects `ssl_mode` in this case and only accepts SSL connections.",
      "type": "string",
      "enum": [
        {
          "name": "SslModeUnspecified",
          "description": "The SSL mode is unknown.",
          "value": "SSL_MODE_UNSPECIFIED"
        },
        {
          "name": "AllowUnencryptedAndEncrypted",
          "description": "Allow non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won't be verified. When this value is used, the legacy `require_ssl` flag must be false or cleared to avoid the conflict between values of two flags.",
          "value": "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
        },
        {
          "name": "EncryptedOnly",
          "description": "Only allow connections encrypted with SSL/TLS. When this value is used, the legacy `require_ssl` flag must be false or cleared to avoid the conflict between values of two flags.",
          "value": "ENCRYPTED_ONLY"
        },
        {
          "name": "TrustedClientCertificateRequired",
          "description": "Only allow connections encrypted with SSL/TLS and with valid client certificates. When this value is used, the legacy `require_ssl` flag must be true or cleared to avoid the conflict between values of two flags.",
          "value": "TRUSTED_CLIENT_CERTIFICATE_REQUIRED"
        }
      ]
    },
    "google-native:sqladmin/v1:IpMapping": {
      "description": "Database instance IP mapping",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address assigned."
        },
        "timeToRetire": {
          "type": "string",
          "description": "The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired."
        },
        "type": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:IpMappingType",
          "description": "The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:IpMappingResponse": {
      "description": "Database instance IP mapping",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address assigned."
        },
        "timeToRetire": {
          "type": "string",
          "description": "The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired."
        },
        "type": {
          "type": "string",
          "description": "The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "timeToRetire",
        "type"
      ]
    },
    "google-native:sqladmin/v1:IpMappingType": {
      "description": "The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.",
      "type": "string",
      "enum": [
        {
          "name": "SqlIpAddressTypeUnspecified",
          "description": "This is an unknown IP address type.",
          "value": "SQL_IP_ADDRESS_TYPE_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "IP address the customer is supposed to connect to. Usually this is the load balancer's IP address",
          "value": "PRIMARY"
        },
        {
          "name": "Outgoing",
          "description": "Source IP address of the connection a read replica establishes to its external primary instance. This IP address can be allowlisted by the customer in case it has a firewall that filters incoming connection to its on premises primary instance.",
          "value": "OUTGOING"
        },
        {
          "name": "Private",
          "description": "Private IP used when using private IPs and network peering.",
          "value": "PRIVATE"
        },
        {
          "name": "Migrated1stGen",
          "description": "V1 IP of a migrated instance. We want the user to decommission this IP as soon as the migration is complete. Note: V1 instances with V1 ip addresses will be counted as PRIMARY.",
          "value": "MIGRATED_1ST_GEN"
        }
      ]
    },
    "google-native:sqladmin/v1:LocationPreference": {
      "description": "Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified.",
      "properties": {
        "followGaeApplication": {
          "type": "string",
          "description": "The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#locationPreference`."
        },
        "secondaryZone": {
          "type": "string",
          "description": "The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to 'no_secondary_zone'."
        },
        "zone": {
          "type": "string",
          "description": "The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:LocationPreferenceResponse": {
      "description": "Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified.",
      "properties": {
        "followGaeApplication": {
          "type": "string",
          "description": "The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#locationPreference`."
        },
        "secondaryZone": {
          "type": "string",
          "description": "The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to 'no_secondary_zone'."
        },
        "zone": {
          "type": "string",
          "description": "The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance."
        }
      },
      "type": "object",
      "required": [
        "followGaeApplication",
        "kind",
        "secondaryZone",
        "zone"
      ]
    },
    "google-native:sqladmin/v1:MaintenanceWindow": {
      "description": "Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes.",
      "properties": {
        "day": {
          "type": "integer",
          "description": "day of week (1-7), starting on Monday."
        },
        "hour": {
          "type": "integer",
          "description": "hour of day - 0 to 23."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#maintenanceWindow`."
        },
        "updateTrack": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:MaintenanceWindowUpdateTrack",
          "description": "Maintenance timing setting: `canary` (Earlier) or `stable` (Later). [Learn more](https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen)."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:MaintenanceWindowResponse": {
      "description": "Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes.",
      "properties": {
        "day": {
          "type": "integer",
          "description": "day of week (1-7), starting on Monday."
        },
        "hour": {
          "type": "integer",
          "description": "hour of day - 0 to 23."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#maintenanceWindow`."
        },
        "updateTrack": {
          "type": "string",
          "description": "Maintenance timing setting: `canary` (Earlier) or `stable` (Later). [Learn more](https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen)."
        }
      },
      "type": "object",
      "required": [
        "day",
        "hour",
        "kind",
        "updateTrack"
      ]
    },
    "google-native:sqladmin/v1:MaintenanceWindowUpdateTrack": {
      "description": "Maintenance timing setting: `canary` (Earlier) or `stable` (Later). [Learn more](https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen).",
      "type": "string",
      "enum": [
        {
          "name": "SqlUpdateTrackUnspecified",
          "description": "This is an unknown maintenance timing preference.",
          "value": "SQL_UPDATE_TRACK_UNSPECIFIED"
        },
        {
          "name": "Canary",
          "description": "For instance update that requires a restart, this update track indicates your instance prefer to restart for new version early in maintenance window.",
          "value": "canary"
        },
        {
          "name": "Stable",
          "description": "For instance update that requires a restart, this update track indicates your instance prefer to let Cloud SQL choose the timing of restart (within its Maintenance window, if applicable).",
          "value": "stable"
        },
        {
          "name": "Week5",
          "description": "For instance update that requires a restart, this update track indicates your instance prefer to let Cloud SQL choose the timing of restart (within its Maintenance window, if applicable) to be at least 5 weeks after the notification.",
          "value": "week5"
        }
      ]
    },
    "google-native:sqladmin/v1:MySqlReplicaConfiguration": {
      "description": "Read-replica configuration specific to MySQL databases.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "PEM representation of the trusted CA's x509 certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "PEM representation of the replica's x509 certificate."
        },
        "clientKey": {
          "type": "string",
          "description": "PEM representation of the replica's private key. The corresponsing public key is encoded in the client's certificate."
        },
        "connectRetryInterval": {
          "type": "integer",
          "description": "Seconds to wait between connect retries. MySQL's default is 60 seconds."
        },
        "dumpFilePath": {
          "type": "string",
          "description": "Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#mysqlReplicaConfiguration`."
        },
        "masterHeartbeatPeriod": {
          "type": "string",
          "description": "Interval in milliseconds between replication heartbeats."
        },
        "password": {
          "type": "string",
          "description": "The password for the replication connection."
        },
        "sslCipher": {
          "type": "string",
          "description": "A list of permissible ciphers to use for SSL encryption."
        },
        "username": {
          "type": "string",
          "description": "The username for the replication connection."
        },
        "verifyServerCertificate": {
          "type": "boolean",
          "description": "Whether or not to check the primary instance's Common Name value in the certificate that it sends during the SSL handshake."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:MySqlReplicaConfigurationResponse": {
      "description": "Read-replica configuration specific to MySQL databases.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "PEM representation of the trusted CA's x509 certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "PEM representation of the replica's x509 certificate."
        },
        "clientKey": {
          "type": "string",
          "description": "PEM representation of the replica's private key. The corresponsing public key is encoded in the client's certificate."
        },
        "connectRetryInterval": {
          "type": "integer",
          "description": "Seconds to wait between connect retries. MySQL's default is 60 seconds."
        },
        "dumpFilePath": {
          "type": "string",
          "description": "Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#mysqlReplicaConfiguration`."
        },
        "masterHeartbeatPeriod": {
          "type": "string",
          "description": "Interval in milliseconds between replication heartbeats."
        },
        "password": {
          "type": "string",
          "description": "The password for the replication connection."
        },
        "sslCipher": {
          "type": "string",
          "description": "A list of permissible ciphers to use for SSL encryption."
        },
        "username": {
          "type": "string",
          "description": "The username for the replication connection."
        },
        "verifyServerCertificate": {
          "type": "boolean",
          "description": "Whether or not to check the primary instance's Common Name value in the certificate that it sends during the SSL handshake."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "clientCertificate",
        "clientKey",
        "connectRetryInterval",
        "dumpFilePath",
        "kind",
        "masterHeartbeatPeriod",
        "password",
        "sslCipher",
        "username",
        "verifyServerCertificate"
      ]
    },
    "google-native:sqladmin/v1:OnPremisesConfiguration": {
      "description": "On-premises instance configuration.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "PEM representation of the trusted CA's x509 certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "PEM representation of the replica's x509 certificate."
        },
        "clientKey": {
          "type": "string",
          "description": "PEM representation of the replica's private key. The corresponsing public key is encoded in the client's certificate."
        },
        "dumpFilePath": {
          "type": "string",
          "description": "The dump file to create the Cloud SQL replica."
        },
        "hostPort": {
          "type": "string",
          "description": "The host and port of the on-premises instance in host:port format"
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#onPremisesConfiguration`."
        },
        "password": {
          "type": "string",
          "description": "The password for connecting to on-premises instance."
        },
        "sourceInstance": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceReference",
          "description": "The reference to Cloud SQL instance if the source is Cloud SQL."
        },
        "username": {
          "type": "string",
          "description": "The username for connecting to on-premises instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:OnPremisesConfigurationResponse": {
      "description": "On-premises instance configuration.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "PEM representation of the trusted CA's x509 certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "PEM representation of the replica's x509 certificate."
        },
        "clientKey": {
          "type": "string",
          "description": "PEM representation of the replica's private key. The corresponsing public key is encoded in the client's certificate."
        },
        "dumpFilePath": {
          "type": "string",
          "description": "The dump file to create the Cloud SQL replica."
        },
        "hostPort": {
          "type": "string",
          "description": "The host and port of the on-premises instance in host:port format"
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#onPremisesConfiguration`."
        },
        "password": {
          "type": "string",
          "description": "The password for connecting to on-premises instance."
        },
        "sourceInstance": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceReferenceResponse",
          "description": "The reference to Cloud SQL instance if the source is Cloud SQL."
        },
        "username": {
          "type": "string",
          "description": "The username for connecting to on-premises instance."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "clientCertificate",
        "clientKey",
        "dumpFilePath",
        "hostPort",
        "kind",
        "password",
        "sourceInstance",
        "username"
      ]
    },
    "google-native:sqladmin/v1:OperationError": {
      "description": "Database instance operation error.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Identifies the specific error that occurred."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#operationError`."
        },
        "message": {
          "type": "string",
          "description": "Additional information about the error encountered."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:OperationErrorResponse": {
      "description": "Database instance operation error.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Identifies the specific error that occurred."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#operationError`."
        },
        "message": {
          "type": "string",
          "description": "Additional information about the error encountered."
        }
      },
      "type": "object",
      "required": [
        "code",
        "kind",
        "message"
      ]
    },
    "google-native:sqladmin/v1:PasswordStatusResponse": {
      "description": "Read-only password status.",
      "properties": {
        "locked": {
          "type": "boolean",
          "description": "If true, user does not have login privileges."
        },
        "passwordExpirationTime": {
          "type": "string",
          "description": "The expiration time of the current password."
        }
      },
      "type": "object",
      "required": [
        "locked",
        "passwordExpirationTime"
      ]
    },
    "google-native:sqladmin/v1:PasswordValidationPolicy": {
      "description": "Database instance local user password validation policy",
      "properties": {
        "complexity": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:PasswordValidationPolicyComplexity",
          "description": "The complexity of the password."
        },
        "disallowCompromisedCredentials": {
          "type": "boolean",
          "description": "Disallow credentials that have been previously compromised by a public data breach."
        },
        "disallowUsernameSubstring": {
          "type": "boolean",
          "description": "Disallow username as a part of the password."
        },
        "enablePasswordPolicy": {
          "type": "boolean",
          "description": "Whether the password policy is enabled or not."
        },
        "minLength": {
          "type": "integer",
          "description": "Minimum number of characters allowed."
        },
        "passwordChangeInterval": {
          "type": "string",
          "description": "Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL."
        },
        "reuseInterval": {
          "type": "integer",
          "description": "Number of previous passwords that cannot be reused."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:PasswordValidationPolicyComplexity": {
      "description": "The complexity of the password.",
      "type": "string",
      "enum": [
        {
          "name": "ComplexityUnspecified",
          "description": "Complexity check is not specified.",
          "value": "COMPLEXITY_UNSPECIFIED"
        },
        {
          "name": "ComplexityDefault",
          "description": "A combination of lowercase, uppercase, numeric, and non-alphanumeric characters.",
          "value": "COMPLEXITY_DEFAULT"
        }
      ]
    },
    "google-native:sqladmin/v1:PasswordValidationPolicyResponse": {
      "description": "Database instance local user password validation policy",
      "properties": {
        "complexity": {
          "type": "string",
          "description": "The complexity of the password."
        },
        "disallowCompromisedCredentials": {
          "type": "boolean",
          "description": "Disallow credentials that have been previously compromised by a public data breach."
        },
        "disallowUsernameSubstring": {
          "type": "boolean",
          "description": "Disallow username as a part of the password."
        },
        "enablePasswordPolicy": {
          "type": "boolean",
          "description": "Whether the password policy is enabled or not."
        },
        "minLength": {
          "type": "integer",
          "description": "Minimum number of characters allowed."
        },
        "passwordChangeInterval": {
          "type": "string",
          "description": "Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL."
        },
        "reuseInterval": {
          "type": "integer",
          "description": "Number of previous passwords that cannot be reused."
        }
      },
      "type": "object",
      "required": [
        "complexity",
        "disallowCompromisedCredentials",
        "disallowUsernameSubstring",
        "enablePasswordPolicy",
        "minLength",
        "passwordChangeInterval",
        "reuseInterval"
      ]
    },
    "google-native:sqladmin/v1:PscConfig": {
      "description": "PSC settings for a Cloud SQL instance.",
      "properties": {
        "allowedConsumerProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric)."
        },
        "pscEnabled": {
          "type": "boolean",
          "description": "Whether PSC connectivity is enabled for this instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:PscConfigResponse": {
      "description": "PSC settings for a Cloud SQL instance.",
      "properties": {
        "allowedConsumerProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric)."
        },
        "pscEnabled": {
          "type": "boolean",
          "description": "Whether PSC connectivity is enabled for this instance."
        }
      },
      "type": "object",
      "required": [
        "allowedConsumerProjects",
        "pscEnabled"
      ]
    },
    "google-native:sqladmin/v1:ReplicaConfiguration": {
      "description": "Read-replica configuration for connecting to the primary instance.",
      "properties": {
        "cascadableReplica": {
          "type": "boolean",
          "description": "Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it."
        },
        "failoverTarget": {
          "type": "boolean",
          "description": "Specifies if the replica is the failover target. If the field is set to `true`, the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#replicaConfiguration`."
        },
        "mysqlReplicaConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:MySqlReplicaConfiguration",
          "description": "MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:ReplicaConfigurationResponse": {
      "description": "Read-replica configuration for connecting to the primary instance.",
      "properties": {
        "cascadableReplica": {
          "type": "boolean",
          "description": "Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it."
        },
        "failoverTarget": {
          "type": "boolean",
          "description": "Specifies if the replica is the failover target. If the field is set to `true`, the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#replicaConfiguration`."
        },
        "mysqlReplicaConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:MySqlReplicaConfigurationResponse",
          "description": "MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory."
        }
      },
      "type": "object",
      "required": [
        "cascadableReplica",
        "failoverTarget",
        "kind",
        "mysqlReplicaConfiguration"
      ]
    },
    "google-native:sqladmin/v1:Settings": {
      "description": "Database instance settings.",
      "properties": {
        "activationPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsActivationPolicy",
          "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: * `ALWAYS`: The instance is on, and remains so even in the absence of connection requests. * `NEVER`: The instance is off; it is not activated, even if a connection request arrives."
        },
        "activeDirectoryConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlActiveDirectoryConfig",
          "description": "Active Directory configuration, relevant only for Cloud SQL for SQL Server."
        },
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:AdvancedMachineFeatures",
          "description": "Specifies advance machine configuration for the instance relevant only for SQL Server."
        },
        "authorizedGaeApplications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.",
          "deprecationMessage": "The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only."
        },
        "availabilityType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsAvailabilityType",
          "description": "Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability)."
        },
        "backupConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:BackupConfiguration",
          "description": "The daily backup configuration for the instance."
        },
        "collation": {
          "type": "string",
          "description": "The name of server Instance collation."
        },
        "connectorEnforcement": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsConnectorEnforcement",
          "description": "Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance."
        },
        "crashSafeReplicationEnabled": {
          "type": "boolean",
          "description": "Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances."
        },
        "dataCacheConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DataCacheConfig",
          "description": "Configuration for data cache."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "The size of data disk, in GB. The data disk size minimum is 10GB."
        },
        "dataDiskType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsDataDiskType",
          "description": "The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances."
        },
        "databaseFlags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:DatabaseFlags"
          },
          "description": "The database flags passed to the instance at startup."
        },
        "databaseReplicationEnabled": {
          "type": "boolean",
          "description": "Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance."
        },
        "deletionProtectionEnabled": {
          "type": "boolean",
          "description": "Configuration to protect against accidental instance deletion."
        },
        "denyMaintenancePeriods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:DenyMaintenancePeriod"
          },
          "description": "Deny maintenance periods"
        },
        "edition": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsEdition",
          "description": "Optional. The edition of the instance."
        },
        "insightsConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InsightsConfig",
          "description": "Insights configuration, for now relevant only for Postgres."
        },
        "ipConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:IpConfiguration",
          "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#settings`."
        },
        "locationPreference": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:LocationPreference",
          "description": "The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:MaintenanceWindow",
          "description": "The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes."
        },
        "passwordValidationPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:PasswordValidationPolicy",
          "description": "The local user password validation policy of the instance."
        },
        "pricingPlan": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsPricingPlan",
          "description": "The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances."
        },
        "replicationType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsReplicationType",
          "description": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.",
          "deprecationMessage": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances."
        },
        "settingsVersion": {
          "type": "string",
          "description": "The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value."
        },
        "sqlServerAuditConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlServerAuditConfig",
          "description": "SQL Server specific audit configuration."
        },
        "storageAutoResize": {
          "type": "boolean",
          "description": "Configuration to increase storage size automatically. The default value is true."
        },
        "storageAutoResizeLimit": {
          "type": "string",
          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
        },
        "tier": {
          "type": "string",
          "description": "The tier (or machine type) for this instance, for example `db-custom-1-3840`. WARNING: Changing this restarts the instance."
        },
        "timeZone": {
          "type": "string",
          "description": "Server timezone, relevant only for Cloud SQL for SQL Server."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided labels, represented as a dictionary where each label is a single key value pair."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:SettingsActivationPolicy": {
      "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: * `ALWAYS`: The instance is on, and remains so even in the absence of connection requests. * `NEVER`: The instance is off; it is not activated, even if a connection request arrives.",
      "type": "string",
      "enum": [
        {
          "name": "SqlActivationPolicyUnspecified",
          "description": "Unknown activation plan.",
          "value": "SQL_ACTIVATION_POLICY_UNSPECIFIED"
        },
        {
          "name": "Always",
          "description": "The instance is always up and running.",
          "value": "ALWAYS"
        },
        {
          "name": "Never",
          "description": "The instance never starts.",
          "value": "NEVER"
        },
        {
          "name": "OnDemand",
          "description": "The instance starts upon receiving requests.",
          "value": "ON_DEMAND"
        }
      ]
    },
    "google-native:sqladmin/v1:SettingsAvailabilityType": {
      "description": "Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).",
      "type": "string",
      "enum": [
        {
          "name": "SqlAvailabilityTypeUnspecified",
          "description": "This is an unknown Availability type.",
          "value": "SQL_AVAILABILITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Zonal",
          "description": "Zonal available instance.",
          "value": "ZONAL"
        },
        {
          "name": "Regional",
          "description": "Regional available instance.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:sqladmin/v1:SettingsConnectorEnforcement": {
      "description": "Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectorEnforcementUnspecified",
          "description": "The requirement for Cloud SQL connectors is unknown.",
          "value": "CONNECTOR_ENFORCEMENT_UNSPECIFIED"
        },
        {
          "name": "NotRequired",
          "description": "Do not require Cloud SQL connectors.",
          "value": "NOT_REQUIRED"
        },
        {
          "name": "Required",
          "description": "Require all connections to use Cloud SQL connectors, including the Cloud SQL Auth Proxy and Cloud SQL Java, Python, and Go connectors. Note: This disables all existing authorized networks.",
          "value": "REQUIRED"
        }
      ]
    },
    "google-native:sqladmin/v1:SettingsDataDiskType": {
      "description": "The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances.",
      "type": "string",
      "enum": [
        {
          "name": "SqlDataDiskTypeUnspecified",
          "description": "This is an unknown data disk type.",
          "value": "SQL_DATA_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdSsd",
          "description": "An SSD data disk.",
          "value": "PD_SSD"
        },
        {
          "name": "PdHdd",
          "description": "An HDD data disk.",
          "value": "PD_HDD"
        },
        {
          "name": "ObsoleteLocalSsd",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "value": "OBSOLETE_LOCAL_SSD"
        }
      ]
    },
    "google-native:sqladmin/v1:SettingsEdition": {
      "description": "Optional. The edition of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "EditionUnspecified",
          "description": "The instance did not specify the edition.",
          "value": "EDITION_UNSPECIFIED"
        },
        {
          "name": "Enterprise",
          "description": "The instance is an enterprise edition.",
          "value": "ENTERPRISE"
        },
        {
          "name": "EnterprisePlus",
          "description": "The instance is an Enterprise Plus edition.",
          "value": "ENTERPRISE_PLUS"
        }
      ]
    },
    "google-native:sqladmin/v1:SettingsPricingPlan": {
      "description": "The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances.",
      "type": "string",
      "enum": [
        {
          "name": "SqlPricingPlanUnspecified",
          "description": "This is an unknown pricing plan for this instance.",
          "value": "SQL_PRICING_PLAN_UNSPECIFIED"
        },
        {
          "name": "Package",
          "description": "The instance is billed at a monthly flat rate.",
          "value": "PACKAGE"
        },
        {
          "name": "PerUse",
          "description": "The instance is billed per usage.",
          "value": "PER_USE"
        }
      ]
    },
    "google-native:sqladmin/v1:SettingsReplicationType": {
      "description": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.",
      "type": "string",
      "enum": [
        {
          "name": "SqlReplicationTypeUnspecified",
          "description": "This is an unknown replication type for a Cloud SQL instance.",
          "value": "SQL_REPLICATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Synchronous",
          "description": "The synchronous replication mode for First Generation instances. It is the default value.",
          "value": "SYNCHRONOUS"
        },
        {
          "name": "Asynchronous",
          "description": "The asynchronous replication mode for First Generation instances. It provides a slight performance gain, but if an outage occurs while this option is set to asynchronous, you can lose up to a few seconds of updates to your data.",
          "value": "ASYNCHRONOUS"
        }
      ]
    },
    "google-native:sqladmin/v1:SettingsResponse": {
      "description": "Database instance settings.",
      "properties": {
        "activationPolicy": {
          "type": "string",
          "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: * `ALWAYS`: The instance is on, and remains so even in the absence of connection requests. * `NEVER`: The instance is off; it is not activated, even if a connection request arrives."
        },
        "activeDirectoryConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlActiveDirectoryConfigResponse",
          "description": "Active Directory configuration, relevant only for Cloud SQL for SQL Server."
        },
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:AdvancedMachineFeaturesResponse",
          "description": "Specifies advance machine configuration for the instance relevant only for SQL Server."
        },
        "authorizedGaeApplications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.",
          "deprecationMessage": "The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only."
        },
        "availabilityType": {
          "type": "string",
          "description": "Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability)."
        },
        "backupConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:BackupConfigurationResponse",
          "description": "The daily backup configuration for the instance."
        },
        "collation": {
          "type": "string",
          "description": "The name of server Instance collation."
        },
        "connectorEnforcement": {
          "type": "string",
          "description": "Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors). Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance."
        },
        "crashSafeReplicationEnabled": {
          "type": "boolean",
          "description": "Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances."
        },
        "dataCacheConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DataCacheConfigResponse",
          "description": "Configuration for data cache."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "The size of data disk, in GB. The data disk size minimum is 10GB."
        },
        "dataDiskType": {
          "type": "string",
          "description": "The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances."
        },
        "databaseFlags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:DatabaseFlagsResponse"
          },
          "description": "The database flags passed to the instance at startup."
        },
        "databaseReplicationEnabled": {
          "type": "boolean",
          "description": "Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance."
        },
        "deletionProtectionEnabled": {
          "type": "boolean",
          "description": "Configuration to protect against accidental instance deletion."
        },
        "denyMaintenancePeriods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:DenyMaintenancePeriodResponse"
          },
          "description": "Deny maintenance periods"
        },
        "edition": {
          "type": "string",
          "description": "Optional. The edition of the instance."
        },
        "insightsConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InsightsConfigResponse",
          "description": "Insights configuration, for now relevant only for Postgres."
        },
        "ipConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:IpConfigurationResponse",
          "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#settings`."
        },
        "locationPreference": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:LocationPreferenceResponse",
          "description": "The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:MaintenanceWindowResponse",
          "description": "The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes."
        },
        "passwordValidationPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:PasswordValidationPolicyResponse",
          "description": "The local user password validation policy of the instance."
        },
        "pricingPlan": {
          "type": "string",
          "description": "The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances."
        },
        "replicationType": {
          "type": "string",
          "description": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.",
          "deprecationMessage": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances."
        },
        "settingsVersion": {
          "type": "string",
          "description": "The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value."
        },
        "sqlServerAuditConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlServerAuditConfigResponse",
          "description": "SQL Server specific audit configuration."
        },
        "storageAutoResize": {
          "type": "boolean",
          "description": "Configuration to increase storage size automatically. The default value is true."
        },
        "storageAutoResizeLimit": {
          "type": "string",
          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
        },
        "tier": {
          "type": "string",
          "description": "The tier (or machine type) for this instance, for example `db-custom-1-3840`. WARNING: Changing this restarts the instance."
        },
        "timeZone": {
          "type": "string",
          "description": "Server timezone, relevant only for Cloud SQL for SQL Server."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided labels, represented as a dictionary where each label is a single key value pair."
        }
      },
      "type": "object",
      "required": [
        "activationPolicy",
        "activeDirectoryConfig",
        "advancedMachineFeatures",
        "authorizedGaeApplications",
        "availabilityType",
        "backupConfiguration",
        "collation",
        "connectorEnforcement",
        "crashSafeReplicationEnabled",
        "dataCacheConfig",
        "dataDiskSizeGb",
        "dataDiskType",
        "databaseFlags",
        "databaseReplicationEnabled",
        "deletionProtectionEnabled",
        "denyMaintenancePeriods",
        "edition",
        "insightsConfig",
        "ipConfiguration",
        "kind",
        "locationPreference",
        "maintenanceWindow",
        "passwordValidationPolicy",
        "pricingPlan",
        "replicationType",
        "settingsVersion",
        "sqlServerAuditConfig",
        "storageAutoResize",
        "storageAutoResizeLimit",
        "tier",
        "timeZone",
        "userLabels"
      ]
    },
    "google-native:sqladmin/v1:SqlActiveDirectoryConfig": {
      "description": "Active Directory configuration, relevant only for Cloud SQL for SQL Server.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "The name of the domain (e.g., mydomain.com)."
        },
        "kind": {
          "type": "string",
          "description": "This is always sql#activeDirectoryConfig."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:SqlActiveDirectoryConfigResponse": {
      "description": "Active Directory configuration, relevant only for Cloud SQL for SQL Server.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "The name of the domain (e.g., mydomain.com)."
        },
        "kind": {
          "type": "string",
          "description": "This is always sql#activeDirectoryConfig."
        }
      },
      "type": "object",
      "required": [
        "domain",
        "kind"
      ]
    },
    "google-native:sqladmin/v1:SqlOutOfDiskReport": {
      "description": "This message wraps up the information written by out-of-disk detection job.",
      "properties": {
        "sqlMinRecommendedIncreaseSizeGb": {
          "type": "integer",
          "description": "The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:"
        },
        "sqlOutOfDiskState": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlOutOfDiskReportSqlOutOfDiskState",
          "description": "This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:SqlOutOfDiskReportResponse": {
      "description": "This message wraps up the information written by out-of-disk detection job.",
      "properties": {
        "sqlMinRecommendedIncreaseSizeGb": {
          "type": "integer",
          "description": "The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:"
        },
        "sqlOutOfDiskState": {
          "type": "string",
          "description": "This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
        }
      },
      "type": "object",
      "required": [
        "sqlMinRecommendedIncreaseSizeGb",
        "sqlOutOfDiskState"
      ]
    },
    "google-native:sqladmin/v1:SqlOutOfDiskReportSqlOutOfDiskState": {
      "description": "This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job",
      "type": "string",
      "enum": [
        {
          "name": "SqlOutOfDiskStateUnspecified",
          "description": "Unspecified state",
          "value": "SQL_OUT_OF_DISK_STATE_UNSPECIFIED"
        },
        {
          "name": "Normal",
          "description": "The instance has plenty space on data disk",
          "value": "NORMAL"
        },
        {
          "name": "SoftShutdown",
          "description": "Data disk is almost used up. It is shutdown to prevent data corruption.",
          "value": "SOFT_SHUTDOWN"
        }
      ]
    },
    "google-native:sqladmin/v1:SqlScheduledMaintenance": {
      "description": "Any scheduled maintenance for this instance.",
      "properties": {
        "canDefer": {
          "type": "boolean"
        },
        "canReschedule": {
          "type": "boolean",
          "description": "If the scheduled maintenance can be rescheduled."
        },
        "scheduleDeadlineTime": {
          "type": "string",
          "description": "Maintenance cannot be rescheduled to start beyond this deadline."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:SqlScheduledMaintenanceResponse": {
      "description": "Any scheduled maintenance for this instance.",
      "properties": {
        "canDefer": {
          "type": "boolean"
        },
        "canReschedule": {
          "type": "boolean",
          "description": "If the scheduled maintenance can be rescheduled."
        },
        "scheduleDeadlineTime": {
          "type": "string",
          "description": "Maintenance cannot be rescheduled to start beyond this deadline."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        }
      },
      "type": "object",
      "required": [
        "canDefer",
        "canReschedule",
        "scheduleDeadlineTime",
        "startTime"
      ]
    },
    "google-native:sqladmin/v1:SqlServerAuditConfig": {
      "description": "SQL Server specific audit configuration.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The name of the destination bucket (e.g., gs://mybucket)."
        },
        "kind": {
          "type": "string",
          "description": "This is always sql#sqlServerAuditConfig"
        },
        "retentionInterval": {
          "type": "string",
          "description": "How long to keep generated audit files."
        },
        "uploadInterval": {
          "type": "string",
          "description": "How often to upload generated audit files."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:SqlServerAuditConfigResponse": {
      "description": "SQL Server specific audit configuration.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The name of the destination bucket (e.g., gs://mybucket)."
        },
        "kind": {
          "type": "string",
          "description": "This is always sql#sqlServerAuditConfig"
        },
        "retentionInterval": {
          "type": "string",
          "description": "How long to keep generated audit files."
        },
        "uploadInterval": {
          "type": "string",
          "description": "How often to upload generated audit files."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "kind",
        "retentionInterval",
        "uploadInterval"
      ]
    },
    "google-native:sqladmin/v1:SqlServerDatabaseDetails": {
      "description": "Represents a Sql Server database on the Cloud SQL instance.",
      "properties": {
        "compatibilityLevel": {
          "type": "integer",
          "description": "The version of SQL Server with which the database is to be made compatible"
        },
        "recoveryModel": {
          "type": "string",
          "description": "The recovery model of a SQL Server database"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:SqlServerDatabaseDetailsResponse": {
      "description": "Represents a Sql Server database on the Cloud SQL instance.",
      "properties": {
        "compatibilityLevel": {
          "type": "integer",
          "description": "The version of SQL Server with which the database is to be made compatible"
        },
        "recoveryModel": {
          "type": "string",
          "description": "The recovery model of a SQL Server database"
        }
      },
      "type": "object",
      "required": [
        "compatibilityLevel",
        "recoveryModel"
      ]
    },
    "google-native:sqladmin/v1:SqlServerUserDetails": {
      "description": "Represents a Sql Server user on the Cloud SQL instance.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "If the user has been disabled"
        },
        "serverRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The server roles for this user"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:SqlServerUserDetailsResponse": {
      "description": "Represents a Sql Server user on the Cloud SQL instance.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "If the user has been disabled"
        },
        "serverRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The server roles for this user"
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "serverRoles"
      ]
    },
    "google-native:sqladmin/v1:SslCert": {
      "description": "SslCerts Resource",
      "properties": {
        "cert": {
          "type": "string",
          "description": "PEM representation."
        },
        "certSerialNumber": {
          "type": "string",
          "description": "Serial number, as extracted from the certificate."
        },
        "commonName": {
          "type": "string",
          "description": "User supplied name. Constrained to [a-zA-Z.-_ ]+."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`"
        },
        "expirationTime": {
          "type": "string",
          "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "instance": {
          "type": "string",
          "description": "Name of the database instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#sslCert`."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "Sha1 Fingerprint."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:SslCertResponse": {
      "description": "SslCerts Resource",
      "properties": {
        "cert": {
          "type": "string",
          "description": "PEM representation."
        },
        "certSerialNumber": {
          "type": "string",
          "description": "Serial number, as extracted from the certificate."
        },
        "commonName": {
          "type": "string",
          "description": "User supplied name. Constrained to [a-zA-Z.-_ ]+."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`"
        },
        "expirationTime": {
          "type": "string",
          "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "instance": {
          "type": "string",
          "description": "Name of the database instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#sslCert`."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "Sha1 Fingerprint."
        }
      },
      "type": "object",
      "required": [
        "cert",
        "certSerialNumber",
        "commonName",
        "createTime",
        "expirationTime",
        "instance",
        "kind",
        "selfLink",
        "sha1Fingerprint"
      ]
    },
    "google-native:sqladmin/v1:UserDualPasswordType": {
      "description": "Dual password status for the user.",
      "type": "string",
      "enum": [
        {
          "name": "DualPasswordTypeUnspecified",
          "description": "The default value.",
          "value": "DUAL_PASSWORD_TYPE_UNSPECIFIED"
        },
        {
          "name": "NoModifyDualPassword",
          "description": "Do not update the user's dual password status.",
          "value": "NO_MODIFY_DUAL_PASSWORD"
        },
        {
          "name": "NoDualPassword",
          "description": "No dual password usable for connecting using this user.",
          "value": "NO_DUAL_PASSWORD"
        },
        {
          "name": "DualPassword",
          "description": "Dual password usable for connecting using this user.",
          "value": "DUAL_PASSWORD"
        }
      ]
    },
    "google-native:sqladmin/v1:UserPasswordValidationPolicy": {
      "description": "User level password validation policy.",
      "properties": {
        "allowedFailedAttempts": {
          "type": "integer",
          "description": "Number of failed login attempts allowed before user get locked."
        },
        "enableFailedAttemptsCheck": {
          "type": "boolean",
          "description": "If true, failed login attempts check will be enabled."
        },
        "enablePasswordVerification": {
          "type": "boolean",
          "description": "If true, the user must specify the current password before changing the password. This flag is supported only for MySQL."
        },
        "passwordExpirationDuration": {
          "type": "string",
          "description": "Expiration duration after password is updated."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1:UserPasswordValidationPolicyResponse": {
      "description": "User level password validation policy.",
      "properties": {
        "allowedFailedAttempts": {
          "type": "integer",
          "description": "Number of failed login attempts allowed before user get locked."
        },
        "enableFailedAttemptsCheck": {
          "type": "boolean",
          "description": "If true, failed login attempts check will be enabled."
        },
        "enablePasswordVerification": {
          "type": "boolean",
          "description": "If true, the user must specify the current password before changing the password. This flag is supported only for MySQL."
        },
        "passwordExpirationDuration": {
          "type": "string",
          "description": "Expiration duration after password is updated."
        },
        "status": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:PasswordStatusResponse",
          "description": "Read-only password status."
        }
      },
      "type": "object",
      "required": [
        "allowedFailedAttempts",
        "enableFailedAttemptsCheck",
        "enablePasswordVerification",
        "passwordExpirationDuration",
        "status"
      ]
    },
    "google-native:sqladmin/v1:UserType": {
      "description": "The user type. It determines the method to authenticate the user during login. The default is the database's built-in user type.",
      "type": "string",
      "enum": [
        {
          "name": "BuiltIn",
          "description": "The database's built-in user type.",
          "value": "BUILT_IN"
        },
        {
          "name": "CloudIamUser",
          "description": "Cloud IAM user.",
          "value": "CLOUD_IAM_USER"
        },
        {
          "name": "CloudIamServiceAccount",
          "description": "Cloud IAM service account.",
          "value": "CLOUD_IAM_SERVICE_ACCOUNT"
        },
        {
          "name": "CloudIamGroup",
          "description": "Cloud IAM Group non-login user.",
          "value": "CLOUD_IAM_GROUP"
        },
        {
          "name": "CloudIamGroupUser",
          "description": "Cloud IAM Group login user.",
          "value": "CLOUD_IAM_GROUP_USER"
        },
        {
          "name": "CloudIamGroupServiceAccount",
          "description": "Cloud IAM Group login service account.",
          "value": "CLOUD_IAM_GROUP_SERVICE_ACCOUNT"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:AclEntry": {
      "description": "An entry for an Access Control list.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#aclEntry`."
        },
        "name": {
          "type": "string",
          "description": "Optional. A label to identify this entry."
        },
        "value": {
          "type": "string",
          "description": "The allowlisted value for the access control list."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:AclEntryResponse": {
      "description": "An entry for an Access Control list.",
      "properties": {
        "expirationTime": {
          "type": "string",
          "description": "The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#aclEntry`."
        },
        "name": {
          "type": "string",
          "description": "Optional. A label to identify this entry."
        },
        "value": {
          "type": "string",
          "description": "The allowlisted value for the access control list."
        }
      },
      "type": "object",
      "required": [
        "expirationTime",
        "kind",
        "name",
        "value"
      ]
    },
    "google-native:sqladmin/v1beta4:AdvancedMachineFeatures": {
      "description": "Specifies options for controlling advanced machine features.",
      "properties": {
        "threadsPerCore": {
          "type": "integer",
          "description": "The number of threads per physical core."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:AdvancedMachineFeaturesResponse": {
      "description": "Specifies options for controlling advanced machine features.",
      "properties": {
        "threadsPerCore": {
          "type": "integer",
          "description": "The number of threads per physical core."
        }
      },
      "type": "object",
      "required": [
        "threadsPerCore"
      ]
    },
    "google-native:sqladmin/v1beta4:BackupConfiguration": {
      "description": "Database instance backup configuration.",
      "properties": {
        "backupRetentionSettings": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:BackupRetentionSettings",
          "description": "Backup retention settings."
        },
        "binaryLogEnabled": {
          "type": "boolean",
          "description": "(MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this configuration is enabled."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#backupConfiguration`."
        },
        "location": {
          "type": "string",
          "description": "Location of the backup"
        },
        "pointInTimeRecoveryEnabled": {
          "type": "boolean",
          "description": "Whether point in time recovery is enabled."
        },
        "replicationLogArchivingEnabled": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "startTime": {
          "type": "string",
          "description": "Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`."
        },
        "transactionLogRetentionDays": {
          "type": "integer",
          "description": "The number of days of transaction logs we retain for point in time restore, from 1-7."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:BackupConfigurationResponse": {
      "description": "Database instance backup configuration.",
      "properties": {
        "backupRetentionSettings": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:BackupRetentionSettingsResponse",
          "description": "Backup retention settings."
        },
        "binaryLogEnabled": {
          "type": "boolean",
          "description": "(MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this configuration is enabled."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#backupConfiguration`."
        },
        "location": {
          "type": "string",
          "description": "Location of the backup"
        },
        "pointInTimeRecoveryEnabled": {
          "type": "boolean",
          "description": "Whether point in time recovery is enabled."
        },
        "replicationLogArchivingEnabled": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "startTime": {
          "type": "string",
          "description": "Start time for the daily backup configuration in UTC timezone in the 24 hour format - `HH:MM`."
        },
        "transactionLogRetentionDays": {
          "type": "integer",
          "description": "The number of days of transaction logs we retain for point in time restore, from 1-7."
        }
      },
      "type": "object",
      "required": [
        "backupRetentionSettings",
        "binaryLogEnabled",
        "enabled",
        "kind",
        "location",
        "pointInTimeRecoveryEnabled",
        "replicationLogArchivingEnabled",
        "startTime",
        "transactionLogRetentionDays"
      ]
    },
    "google-native:sqladmin/v1beta4:BackupRetentionSettings": {
      "description": "We currently only support backup retention by specifying the number of backups we will retain.",
      "properties": {
        "retainedBackups": {
          "type": "integer",
          "description": "Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is 'COUNT', we will retain this many backups."
        },
        "retentionUnit": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:BackupRetentionSettingsRetentionUnit",
          "description": "The unit that 'retained_backups' represents."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:BackupRetentionSettingsResponse": {
      "description": "We currently only support backup retention by specifying the number of backups we will retain.",
      "properties": {
        "retainedBackups": {
          "type": "integer",
          "description": "Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is 'COUNT', we will retain this many backups."
        },
        "retentionUnit": {
          "type": "string",
          "description": "The unit that 'retained_backups' represents."
        }
      },
      "type": "object",
      "required": [
        "retainedBackups",
        "retentionUnit"
      ]
    },
    "google-native:sqladmin/v1beta4:BackupRetentionSettingsRetentionUnit": {
      "description": "The unit that 'retained_backups' represents.",
      "type": "string",
      "enum": [
        {
          "name": "RetentionUnitUnspecified",
          "description": "Backup retention unit is unspecified, will be treated as COUNT.",
          "value": "RETENTION_UNIT_UNSPECIFIED"
        },
        {
          "name": "Count",
          "description": "Retention will be by count, eg. \"retain the most recent 7 backups\".",
          "value": "COUNT"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:BackupRunBackupKind": {
      "description": "Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.",
      "type": "string",
      "enum": [
        {
          "name": "SqlBackupKindUnspecified",
          "description": "This is an unknown BackupKind.",
          "value": "SQL_BACKUP_KIND_UNSPECIFIED"
        },
        {
          "name": "Snapshot",
          "description": "The snapshot based backups",
          "value": "SNAPSHOT"
        },
        {
          "name": "Physical",
          "description": "Physical backups",
          "value": "PHYSICAL"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:BackupRunStatus": {
      "description": "The status of this run.",
      "type": "string",
      "enum": [
        {
          "name": "SqlBackupRunStatusUnspecified",
          "description": "The status of the run is unknown.",
          "value": "SQL_BACKUP_RUN_STATUS_UNSPECIFIED"
        },
        {
          "name": "Enqueued",
          "description": "The backup operation was enqueued.",
          "value": "ENQUEUED"
        },
        {
          "name": "Overdue",
          "description": "The backup is overdue across a given backup window. Indicates a problem. Example: Long-running operation in progress during the whole window.",
          "value": "OVERDUE"
        },
        {
          "name": "Running",
          "description": "The backup is in progress.",
          "value": "RUNNING"
        },
        {
          "name": "Failed",
          "description": "The backup failed.",
          "value": "FAILED"
        },
        {
          "name": "Successful",
          "description": "The backup was successful.",
          "value": "SUCCESSFUL"
        },
        {
          "name": "Skipped",
          "description": "The backup was skipped (without problems) for a given backup window. Example: Instance was idle.",
          "value": "SKIPPED"
        },
        {
          "name": "DeletionPending",
          "description": "The backup is about to be deleted.",
          "value": "DELETION_PENDING"
        },
        {
          "name": "DeletionFailed",
          "description": "The backup deletion failed.",
          "value": "DELETION_FAILED"
        },
        {
          "name": "Deleted",
          "description": "The backup has been deleted.",
          "value": "DELETED"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:BackupRunType": {
      "description": "The type of this run; can be either \"AUTOMATED\" or \"ON_DEMAND\" or \"FINAL\". This field defaults to \"ON_DEMAND\" and is ignored, when specified for insert requests.",
      "type": "string",
      "enum": [
        {
          "name": "SqlBackupRunTypeUnspecified",
          "description": "This is an unknown BackupRun type.",
          "value": "SQL_BACKUP_RUN_TYPE_UNSPECIFIED"
        },
        {
          "name": "Automated",
          "description": "The backup schedule automatically triggers a backup.",
          "value": "AUTOMATED"
        },
        {
          "name": "OnDemand",
          "description": "The user manually triggers a backup.",
          "value": "ON_DEMAND"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:DataCacheConfig": {
      "description": "Data cache configurations.",
      "properties": {
        "dataCacheEnabled": {
          "type": "boolean",
          "description": "Whether data cache is enabled for the instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:DataCacheConfigResponse": {
      "description": "Data cache configurations.",
      "properties": {
        "dataCacheEnabled": {
          "type": "boolean",
          "description": "Whether data cache is enabled for the instance."
        }
      },
      "type": "object",
      "required": [
        "dataCacheEnabled"
      ]
    },
    "google-native:sqladmin/v1beta4:DatabaseFlags": {
      "description": "Database flags for Cloud SQL instances.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation."
        },
        "value": {
          "type": "string",
          "description": "The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn't take a value."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:DatabaseFlagsResponse": {
      "description": "Database flags for Cloud SQL instances.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation."
        },
        "value": {
          "type": "string",
          "description": "The value of the flag. Boolean flags are set to `on` for true and `off` for false. This field must be omitted if the flag doesn't take a value."
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "google-native:sqladmin/v1beta4:DenyMaintenancePeriod": {
      "description": "Deny Maintenance Periods. This specifies a date range during when all CSA rollout will be denied.",
      "properties": {
        "endDate": {
          "type": "string",
          "description": "\"deny maintenance period\" end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01"
        },
        "startDate": {
          "type": "string",
          "description": "\"deny maintenance period\" start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01"
        },
        "time": {
          "type": "string",
          "description": "Time in UTC when the \"deny maintenance period\" starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:DenyMaintenancePeriodResponse": {
      "description": "Deny Maintenance Periods. This specifies a date range during when all CSA rollout will be denied.",
      "properties": {
        "endDate": {
          "type": "string",
          "description": "\"deny maintenance period\" end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01"
        },
        "startDate": {
          "type": "string",
          "description": "\"deny maintenance period\" start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the deny maintenance period recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01"
        },
        "time": {
          "type": "string",
          "description": "Time in UTC when the \"deny maintenance period\" starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00"
        }
      },
      "type": "object",
      "required": [
        "endDate",
        "startDate",
        "time"
      ]
    },
    "google-native:sqladmin/v1beta4:DiskEncryptionConfiguration": {
      "description": "Disk encryption configuration for an instance.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "This is always `sql#diskEncryptionConfiguration`."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of KMS key for disk encryption"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:DiskEncryptionConfigurationResponse": {
      "description": "Disk encryption configuration for an instance.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "This is always `sql#diskEncryptionConfiguration`."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of KMS key for disk encryption"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "kmsKeyName"
      ]
    },
    "google-native:sqladmin/v1beta4:DiskEncryptionStatus": {
      "description": "Disk encryption status for an instance.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "This is always `sql#diskEncryptionStatus`."
        },
        "kmsKeyVersionName": {
          "type": "string",
          "description": "KMS key version used to encrypt the Cloud SQL instance resource"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:DiskEncryptionStatusResponse": {
      "description": "Disk encryption status for an instance.",
      "properties": {
        "kind": {
          "type": "string",
          "description": "This is always `sql#diskEncryptionStatus`."
        },
        "kmsKeyVersionName": {
          "type": "string",
          "description": "KMS key version used to encrypt the Cloud SQL instance resource"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "kmsKeyVersionName"
      ]
    },
    "google-native:sqladmin/v1beta4:InsightsConfig": {
      "description": "Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration.",
      "properties": {
        "queryInsightsEnabled": {
          "type": "boolean",
          "description": "Whether Query Insights feature is enabled."
        },
        "queryPlansPerMinute": {
          "type": "integer",
          "description": "Number of query execution plans captured by Insights per minute for all queries combined. Default is 5."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Whether Query Insights will record application tags from query when enabled."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Whether Query Insights will record client address when enabled."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:InsightsConfigResponse": {
      "description": "Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration.",
      "properties": {
        "queryInsightsEnabled": {
          "type": "boolean",
          "description": "Whether Query Insights feature is enabled."
        },
        "queryPlansPerMinute": {
          "type": "integer",
          "description": "Number of query execution plans captured by Insights per minute for all queries combined. Default is 5."
        },
        "queryStringLength": {
          "type": "integer",
          "description": "Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database."
        },
        "recordApplicationTags": {
          "type": "boolean",
          "description": "Whether Query Insights will record application tags from query when enabled."
        },
        "recordClientAddress": {
          "type": "boolean",
          "description": "Whether Query Insights will record client address when enabled."
        }
      },
      "type": "object",
      "required": [
        "queryInsightsEnabled",
        "queryPlansPerMinute",
        "queryStringLength",
        "recordApplicationTags",
        "recordClientAddress"
      ]
    },
    "google-native:sqladmin/v1beta4:InstanceBackendType": {
      "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.",
      "type": "string",
      "enum": [
        {
          "name": "SqlBackendTypeUnspecified",
          "description": "This is an unknown backend type for instance.",
          "value": "SQL_BACKEND_TYPE_UNSPECIFIED"
        },
        {
          "name": "FirstGen",
          "description": "V1 speckle instance.",
          "value": "FIRST_GEN"
        },
        {
          "name": "SecondGen",
          "description": "V2 speckle instance.",
          "value": "SECOND_GEN"
        },
        {
          "name": "External",
          "description": "On premises instance.",
          "value": "EXTERNAL"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:InstanceDatabaseVersion": {
      "description": "The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.",
      "type": "string",
      "enum": [
        {
          "name": "SqlDatabaseVersionUnspecified",
          "description": "This is an unknown database version.",
          "value": "SQL_DATABASE_VERSION_UNSPECIFIED"
        },
        {
          "name": "Mysql51",
          "description": "The database version is MySQL 5.1.",
          "value": "MYSQL_5_1"
        },
        {
          "name": "Mysql55",
          "description": "The database version is MySQL 5.5.",
          "value": "MYSQL_5_5"
        },
        {
          "name": "Mysql56",
          "description": "The database version is MySQL 5.6.",
          "value": "MYSQL_5_6"
        },
        {
          "name": "Mysql57",
          "description": "The database version is MySQL 5.7.",
          "value": "MYSQL_5_7"
        },
        {
          "name": "Sqlserver2017Standard",
          "description": "The database version is SQL Server 2017 Standard.",
          "value": "SQLSERVER_2017_STANDARD"
        },
        {
          "name": "Sqlserver2017Enterprise",
          "description": "The database version is SQL Server 2017 Enterprise.",
          "value": "SQLSERVER_2017_ENTERPRISE"
        },
        {
          "name": "Sqlserver2017Express",
          "description": "The database version is SQL Server 2017 Express.",
          "value": "SQLSERVER_2017_EXPRESS"
        },
        {
          "name": "Sqlserver2017Web",
          "description": "The database version is SQL Server 2017 Web.",
          "value": "SQLSERVER_2017_WEB"
        },
        {
          "name": "Postgres96",
          "description": "The database version is PostgreSQL 9.6.",
          "value": "POSTGRES_9_6"
        },
        {
          "name": "Postgres10",
          "description": "The database version is PostgreSQL 10.",
          "value": "POSTGRES_10"
        },
        {
          "name": "Postgres11",
          "description": "The database version is PostgreSQL 11.",
          "value": "POSTGRES_11"
        },
        {
          "name": "Postgres12",
          "description": "The database version is PostgreSQL 12.",
          "value": "POSTGRES_12"
        },
        {
          "name": "Postgres13",
          "description": "The database version is PostgreSQL 13.",
          "value": "POSTGRES_13"
        },
        {
          "name": "Postgres14",
          "description": "The database version is PostgreSQL 14.",
          "value": "POSTGRES_14"
        },
        {
          "name": "Postgres15",
          "description": "The database version is PostgreSQL 15.",
          "value": "POSTGRES_15"
        },
        {
          "name": "Mysql80",
          "description": "The database version is MySQL 8.",
          "value": "MYSQL_8_0"
        },
        {
          "name": "Mysql8018",
          "description": "The database major version is MySQL 8.0 and the minor version is 18.",
          "value": "MYSQL_8_0_18"
        },
        {
          "name": "Mysql8026",
          "description": "The database major version is MySQL 8.0 and the minor version is 26.",
          "value": "MYSQL_8_0_26"
        },
        {
          "name": "Mysql8027",
          "description": "The database major version is MySQL 8.0 and the minor version is 27.",
          "value": "MYSQL_8_0_27"
        },
        {
          "name": "Mysql8028",
          "description": "The database major version is MySQL 8.0 and the minor version is 28.",
          "value": "MYSQL_8_0_28"
        },
        {
          "name": "Mysql8029",
          "description": "The database major version is MySQL 8.0 and the minor version is 29.",
          "value": "MYSQL_8_0_29"
        },
        {
          "name": "Mysql8030",
          "description": "The database major version is MySQL 8.0 and the minor version is 30.",
          "value": "MYSQL_8_0_30"
        },
        {
          "name": "Mysql8031",
          "description": "The database major version is MySQL 8.0 and the minor version is 31.",
          "value": "MYSQL_8_0_31"
        },
        {
          "name": "Mysql8032",
          "description": "The database major version is MySQL 8.0 and the minor version is 32.",
          "value": "MYSQL_8_0_32"
        },
        {
          "name": "Mysql8033",
          "description": "The database major version is MySQL 8.0 and the minor version is 33.",
          "value": "MYSQL_8_0_33"
        },
        {
          "name": "Mysql8034",
          "description": "The database major version is MySQL 8.0 and the minor version is 34.",
          "value": "MYSQL_8_0_34"
        },
        {
          "name": "Mysql8035",
          "description": "The database major version is MySQL 8.0 and the minor version is 35.",
          "value": "MYSQL_8_0_35"
        },
        {
          "name": "Mysql8036",
          "description": "The database major version is MySQL 8.0 and the minor version is 36.",
          "value": "MYSQL_8_0_36"
        },
        {
          "name": "Sqlserver2019Standard",
          "description": "The database version is SQL Server 2019 Standard.",
          "value": "SQLSERVER_2019_STANDARD"
        },
        {
          "name": "Sqlserver2019Enterprise",
          "description": "The database version is SQL Server 2019 Enterprise.",
          "value": "SQLSERVER_2019_ENTERPRISE"
        },
        {
          "name": "Sqlserver2019Express",
          "description": "The database version is SQL Server 2019 Express.",
          "value": "SQLSERVER_2019_EXPRESS"
        },
        {
          "name": "Sqlserver2019Web",
          "description": "The database version is SQL Server 2019 Web.",
          "value": "SQLSERVER_2019_WEB"
        },
        {
          "name": "Sqlserver2022Standard",
          "description": "The database version is SQL Server 2022 Standard.",
          "value": "SQLSERVER_2022_STANDARD"
        },
        {
          "name": "Sqlserver2022Enterprise",
          "description": "The database version is SQL Server 2022 Enterprise.",
          "value": "SQLSERVER_2022_ENTERPRISE"
        },
        {
          "name": "Sqlserver2022Express",
          "description": "The database version is SQL Server 2022 Express.",
          "value": "SQLSERVER_2022_EXPRESS"
        },
        {
          "name": "Sqlserver2022Web",
          "description": "The database version is SQL Server 2022 Web.",
          "value": "SQLSERVER_2022_WEB"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:InstanceFailoverReplica": {
      "description": "The name and status of the failover replica.",
      "properties": {
        "available": {
          "type": "boolean",
          "description": "The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true."
        },
        "name": {
          "type": "string",
          "description": "The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn't include the project ID."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:InstanceFailoverReplicaResponse": {
      "description": "The name and status of the failover replica.",
      "properties": {
        "available": {
          "type": "boolean",
          "description": "The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true."
        },
        "name": {
          "type": "string",
          "description": "The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn't include the project ID."
        }
      },
      "type": "object",
      "required": [
        "available",
        "name"
      ]
    },
    "google-native:sqladmin/v1beta4:InstanceInstanceType": {
      "description": "The instance type.",
      "type": "string",
      "enum": [
        {
          "name": "SqlInstanceTypeUnspecified",
          "description": "This is an unknown Cloud SQL instance type.",
          "value": "SQL_INSTANCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "CloudSqlInstance",
          "description": "A regular Cloud SQL instance that is not replicating from a primary instance.",
          "value": "CLOUD_SQL_INSTANCE"
        },
        {
          "name": "OnPremisesInstance",
          "description": "An instance running on the customer's premises that is not managed by Cloud SQL.",
          "value": "ON_PREMISES_INSTANCE"
        },
        {
          "name": "ReadReplicaInstance",
          "description": "A Cloud SQL instance acting as a read-replica.",
          "value": "READ_REPLICA_INSTANCE"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:InstanceReference": {
      "description": "Reference to another Cloud SQL instance.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the Cloud SQL instance being referenced. This does not include the project ID."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it."
        },
        "region": {
          "type": "string",
          "description": "The region of the Cloud SQL instance being referenced."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:InstanceReferenceResponse": {
      "description": "Reference to another Cloud SQL instance.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the Cloud SQL instance being referenced. This does not include the project ID."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the Cloud SQL instance being referenced. The default is the same project ID as the instance references it."
        },
        "region": {
          "type": "string",
          "description": "The region of the Cloud SQL instance being referenced."
        }
      },
      "type": "object",
      "required": [
        "name",
        "project",
        "region"
      ]
    },
    "google-native:sqladmin/v1beta4:InstanceSqlNetworkArchitecture": {
      "description": "The SQL network architecture for the instance.",
      "type": "string",
      "enum": [
        {
          "name": "SqlNetworkArchitectureUnspecified",
          "value": "SQL_NETWORK_ARCHITECTURE_UNSPECIFIED"
        },
        {
          "name": "NewNetworkArchitecture",
          "description": "Instance is a Tenancy Unit (TU) instance.",
          "value": "NEW_NETWORK_ARCHITECTURE"
        },
        {
          "name": "OldNetworkArchitecture",
          "description": "Instance is an Umbrella instance.",
          "value": "OLD_NETWORK_ARCHITECTURE"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:InstanceState": {
      "description": "The current serving state of the Cloud SQL instance.",
      "type": "string",
      "enum": [
        {
          "name": "SqlInstanceStateUnspecified",
          "description": "The state of the instance is unknown.",
          "value": "SQL_INSTANCE_STATE_UNSPECIFIED"
        },
        {
          "name": "Runnable",
          "description": "The instance is running, or has been stopped by owner.",
          "value": "RUNNABLE"
        },
        {
          "name": "Suspended",
          "description": "The instance is not available, for example due to problems with billing.",
          "value": "SUSPENDED"
        },
        {
          "name": "PendingDelete",
          "description": "The instance is being deleted.",
          "value": "PENDING_DELETE"
        },
        {
          "name": "PendingCreate",
          "description": "The instance is being created.",
          "value": "PENDING_CREATE"
        },
        {
          "name": "Maintenance",
          "description": "The instance is down for maintenance.",
          "value": "MAINTENANCE"
        },
        {
          "name": "Failed",
          "description": "The creation of the instance failed or a fatal error occurred during maintenance.",
          "value": "FAILED"
        },
        {
          "name": "OnlineMaintenance",
          "description": "Deprecated",
          "value": "ONLINE_MAINTENANCE"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:InstanceSuspensionReasonItem": {
      "type": "string",
      "enum": [
        {
          "name": "SqlSuspensionReasonUnspecified",
          "description": "This is an unknown suspension reason.",
          "value": "SQL_SUSPENSION_REASON_UNSPECIFIED"
        },
        {
          "name": "BillingIssue",
          "description": "The instance is suspended due to billing issues (for example:, GCP account issue)",
          "value": "BILLING_ISSUE"
        },
        {
          "name": "LegalIssue",
          "description": "The instance is suspended due to illegal content (for example:, child pornography, copyrighted material, etc.).",
          "value": "LEGAL_ISSUE"
        },
        {
          "name": "OperationalIssue",
          "description": "The instance is causing operational issues (for example:, causing the database to crash).",
          "value": "OPERATIONAL_ISSUE"
        },
        {
          "name": "KmsKeyIssue",
          "description": "The KMS key used by the instance is either revoked or denied access to",
          "value": "KMS_KEY_ISSUE"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:IpConfiguration": {
      "description": "IP Management configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "The name of the allocated ip range for the private ip Cloud SQL instance. For example: \"google-managed-services-default\". If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`"
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:AclEntry"
          },
          "description": "The list of external networks that are allowed to connect to the instance using the IP. In 'CIDR' notation, also known as 'slash' notation (for example: `157.197.200.0/24`)."
        },
        "enablePrivatePathForGoogleCloudServices": {
          "type": "boolean",
          "description": "Controls connectivity to private IP instances from Google services, such as BigQuery."
        },
        "ipv4Enabled": {
          "type": "boolean",
          "description": "Whether the instance is assigned a public IP address or not."
        },
        "privateNetwork": {
          "type": "string",
          "description": "The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `/projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set."
        },
        "pscConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:PscConfig",
          "description": "PSC settings for this instance."
        },
        "requireSsl": {
          "type": "boolean",
          "description": "Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won't be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the legacy `require_ssl` flag."
        },
        "sslMode": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:IpConfigurationSslMode",
          "description": "Specify how SSL/TLS is enforced in database connections. This flag is supported only for PostgreSQL. Use the legacy `require_ssl` flag for enforcing SSL/TLS in MySQL and SQL Server. But, for PostgreSQL, use the `ssl_mode` flag instead of the legacy `require_ssl` flag. To avoid the conflict between those flags in PostgreSQL, only the following value pairs are valid: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` Note that the value of `ssl_mode` gets priority over the value of the legacy `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY, require_ssl=false`, the `ssl_mode=ENCRYPTED_ONLY` means \"only accepts SSL connection\", while the `require_ssl=false` means \"both non-SSL and SSL connections are allowed\". The database respects `ssl_mode` in this case and only accepts SSL connections."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:IpConfigurationResponse": {
      "description": "IP Management configuration.",
      "properties": {
        "allocatedIpRange": {
          "type": "string",
          "description": "The name of the allocated ip range for the private ip Cloud SQL instance. For example: \"google-managed-services-default\". If set, the instance ip will be created in the allocated range. The range name must comply with [RFC 1035](https://tools.ietf.org/html/rfc1035). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?.`"
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:AclEntryResponse"
          },
          "description": "The list of external networks that are allowed to connect to the instance using the IP. In 'CIDR' notation, also known as 'slash' notation (for example: `157.197.200.0/24`)."
        },
        "enablePrivatePathForGoogleCloudServices": {
          "type": "boolean",
          "description": "Controls connectivity to private IP instances from Google services, such as BigQuery."
        },
        "ipv4Enabled": {
          "type": "boolean",
          "description": "Whether the instance is assigned a public IP address or not."
        },
        "privateNetwork": {
          "type": "string",
          "description": "The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, `/projects/myProject/global/networks/default`. This setting can be updated, but it cannot be removed after it is set."
        },
        "pscConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:PscConfigResponse",
          "description": "PSC settings for this instance."
        },
        "requireSsl": {
          "type": "boolean",
          "description": "Whether SSL/TLS connections over IP are enforced. If set to false, then allow both non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won't be verified. If set to true, then only allow connections encrypted with SSL/TLS and with valid client certificates. If you want to enforce SSL/TLS without enforcing the requirement for valid client certificates, then use the `ssl_mode` flag instead of the legacy `require_ssl` flag."
        },
        "sslMode": {
          "type": "string",
          "description": "Specify how SSL/TLS is enforced in database connections. This flag is supported only for PostgreSQL. Use the legacy `require_ssl` flag for enforcing SSL/TLS in MySQL and SQL Server. But, for PostgreSQL, use the `ssl_mode` flag instead of the legacy `require_ssl` flag. To avoid the conflict between those flags in PostgreSQL, only the following value pairs are valid: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` Note that the value of `ssl_mode` gets priority over the value of the legacy `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY, require_ssl=false`, the `ssl_mode=ENCRYPTED_ONLY` means \"only accepts SSL connection\", while the `require_ssl=false` means \"both non-SSL and SSL connections are allowed\". The database respects `ssl_mode` in this case and only accepts SSL connections."
        }
      },
      "type": "object",
      "required": [
        "allocatedIpRange",
        "authorizedNetworks",
        "enablePrivatePathForGoogleCloudServices",
        "ipv4Enabled",
        "privateNetwork",
        "pscConfig",
        "requireSsl",
        "sslMode"
      ]
    },
    "google-native:sqladmin/v1beta4:IpConfigurationSslMode": {
      "description": "Specify how SSL/TLS is enforced in database connections. This flag is supported only for PostgreSQL. Use the legacy `require_ssl` flag for enforcing SSL/TLS in MySQL and SQL Server. But, for PostgreSQL, use the `ssl_mode` flag instead of the legacy `require_ssl` flag. To avoid the conflict between those flags in PostgreSQL, only the following value pairs are valid: * `ssl_mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED` and `require_ssl=false` * `ssl_mode=ENCRYPTED_ONLY` and `require_ssl=false` * `ssl_mode=TRUSTED_CLIENT_CERTIFICATE_REQUIRED` and `require_ssl=true` Note that the value of `ssl_mode` gets priority over the value of the legacy `require_ssl`. For example, for the pair `ssl_mode=ENCRYPTED_ONLY, require_ssl=false`, the `ssl_mode=ENCRYPTED_ONLY` means \"only accepts SSL connection\", while the `require_ssl=false` means \"both non-SSL and SSL connections are allowed\". The database respects `ssl_mode` in this case and only accepts SSL connections.",
      "type": "string",
      "enum": [
        {
          "name": "SslModeUnspecified",
          "description": "The SSL mode is unknown.",
          "value": "SSL_MODE_UNSPECIFIED"
        },
        {
          "name": "AllowUnencryptedAndEncrypted",
          "description": "Allow non-SSL/non-TLS and SSL/TLS connections. For SSL/TLS connections, the client certificate won't be verified. When this value is used, the legacy `require_ssl` flag must be false or cleared to avoid the conflict between values of two flags.",
          "value": "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
        },
        {
          "name": "EncryptedOnly",
          "description": "Only allow connections encrypted with SSL/TLS. When this value is used, the legacy `require_ssl` flag must be false or cleared to avoid the conflict between values of two flags.",
          "value": "ENCRYPTED_ONLY"
        },
        {
          "name": "TrustedClientCertificateRequired",
          "description": "Only allow connections encrypted with SSL/TLS and with valid client certificates. When this value is used, the legacy `require_ssl` flag must be true or cleared to avoid the conflict between values of two flags.",
          "value": "TRUSTED_CLIENT_CERTIFICATE_REQUIRED"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:IpMapping": {
      "description": "Database instance IP mapping",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address assigned."
        },
        "timeToRetire": {
          "type": "string",
          "description": "The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired."
        },
        "type": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:IpMappingType",
          "description": "The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:IpMappingResponse": {
      "description": "Database instance IP mapping",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address assigned."
        },
        "timeToRetire": {
          "type": "string",
          "description": "The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`. This field is only available when the IP is scheduled to be retired."
        },
        "type": {
          "type": "string",
          "description": "The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "timeToRetire",
        "type"
      ]
    },
    "google-native:sqladmin/v1beta4:IpMappingType": {
      "description": "The type of this IP address. A `PRIMARY` address is a public address that can accept incoming connections. A `PRIVATE` address is a private address that can accept incoming connections. An `OUTGOING` address is the source address of connections originating from the instance, if supported.",
      "type": "string",
      "enum": [
        {
          "name": "SqlIpAddressTypeUnspecified",
          "description": "This is an unknown IP address type.",
          "value": "SQL_IP_ADDRESS_TYPE_UNSPECIFIED"
        },
        {
          "name": "Primary",
          "description": "IP address the customer is supposed to connect to. Usually this is the load balancer's IP address",
          "value": "PRIMARY"
        },
        {
          "name": "Outgoing",
          "description": "Source IP address of the connection a read replica establishes to its external primary instance. This IP address can be allowlisted by the customer in case it has a firewall that filters incoming connection to its on premises primary instance.",
          "value": "OUTGOING"
        },
        {
          "name": "Private",
          "description": "Private IP used when using private IPs and network peering.",
          "value": "PRIVATE"
        },
        {
          "name": "Migrated1stGen",
          "description": "V1 IP of a migrated instance. We want the user to decommission this IP as soon as the migration is complete. Note: V1 instances with V1 ip addresses will be counted as PRIMARY.",
          "value": "MIGRATED_1ST_GEN"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:LocationPreference": {
      "description": "Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified.",
      "properties": {
        "followGaeApplication": {
          "type": "string",
          "description": "The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#locationPreference`."
        },
        "secondaryZone": {
          "type": "string",
          "description": "The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to 'no_secondary_zone'."
        },
        "zone": {
          "type": "string",
          "description": "The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:LocationPreferenceResponse": {
      "description": "Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified.",
      "properties": {
        "followGaeApplication": {
          "type": "string",
          "description": "The App Engine application to follow, it must be in the same region as the Cloud SQL instance. WARNING: Changing this might restart the instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#locationPreference`."
        },
        "secondaryZone": {
          "type": "string",
          "description": "The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). To disable this field, set it to 'no_secondary_zone'."
        },
        "zone": {
          "type": "string",
          "description": "The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.). WARNING: Changing this might restart the instance."
        }
      },
      "type": "object",
      "required": [
        "followGaeApplication",
        "kind",
        "secondaryZone",
        "zone"
      ]
    },
    "google-native:sqladmin/v1beta4:MaintenanceWindow": {
      "description": "Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes.",
      "properties": {
        "day": {
          "type": "integer",
          "description": "day of week (1-7), starting on Monday."
        },
        "hour": {
          "type": "integer",
          "description": "hour of day - 0 to 23."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#maintenanceWindow`."
        },
        "updateTrack": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:MaintenanceWindowUpdateTrack",
          "description": "Maintenance timing setting: `canary` (Earlier) or `stable` (Later). [Learn more](https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen)."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:MaintenanceWindowResponse": {
      "description": "Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes.",
      "properties": {
        "day": {
          "type": "integer",
          "description": "day of week (1-7), starting on Monday."
        },
        "hour": {
          "type": "integer",
          "description": "hour of day - 0 to 23."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#maintenanceWindow`."
        },
        "updateTrack": {
          "type": "string",
          "description": "Maintenance timing setting: `canary` (Earlier) or `stable` (Later). [Learn more](https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen)."
        }
      },
      "type": "object",
      "required": [
        "day",
        "hour",
        "kind",
        "updateTrack"
      ]
    },
    "google-native:sqladmin/v1beta4:MaintenanceWindowUpdateTrack": {
      "description": "Maintenance timing setting: `canary` (Earlier) or `stable` (Later). [Learn more](https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen).",
      "type": "string",
      "enum": [
        {
          "name": "SqlUpdateTrackUnspecified",
          "description": "This is an unknown maintenance timing preference.",
          "value": "SQL_UPDATE_TRACK_UNSPECIFIED"
        },
        {
          "name": "Canary",
          "description": "For instance update that requires a restart, this update track indicates your instance prefer to restart for new version early in maintenance window.",
          "value": "canary"
        },
        {
          "name": "Stable",
          "description": "For instance update that requires a restart, this update track indicates your instance prefer to let Cloud SQL choose the timing of restart (within its Maintenance window, if applicable).",
          "value": "stable"
        },
        {
          "name": "Week5",
          "description": "For instance update that requires a restart, this update track indicates your instance prefer to let Cloud SQL choose the timing of restart (within its Maintenance window, if applicable) to be at least 5 weeks after the notification.",
          "value": "week5"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:MySqlReplicaConfiguration": {
      "description": "Read-replica configuration specific to MySQL databases.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "PEM representation of the trusted CA's x509 certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "PEM representation of the replica's x509 certificate."
        },
        "clientKey": {
          "type": "string",
          "description": "PEM representation of the replica's private key. The corresponsing public key is encoded in the client's certificate."
        },
        "connectRetryInterval": {
          "type": "integer",
          "description": "Seconds to wait between connect retries. MySQL's default is 60 seconds."
        },
        "dumpFilePath": {
          "type": "string",
          "description": "Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#mysqlReplicaConfiguration`."
        },
        "masterHeartbeatPeriod": {
          "type": "string",
          "description": "Interval in milliseconds between replication heartbeats."
        },
        "password": {
          "type": "string",
          "description": "The password for the replication connection."
        },
        "sslCipher": {
          "type": "string",
          "description": "A list of permissible ciphers to use for SSL encryption."
        },
        "username": {
          "type": "string",
          "description": "The username for the replication connection."
        },
        "verifyServerCertificate": {
          "type": "boolean",
          "description": "Whether or not to check the primary instance's Common Name value in the certificate that it sends during the SSL handshake."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:MySqlReplicaConfigurationResponse": {
      "description": "Read-replica configuration specific to MySQL databases.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "PEM representation of the trusted CA's x509 certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "PEM representation of the replica's x509 certificate."
        },
        "clientKey": {
          "type": "string",
          "description": "PEM representation of the replica's private key. The corresponsing public key is encoded in the client's certificate."
        },
        "connectRetryInterval": {
          "type": "integer",
          "description": "Seconds to wait between connect retries. MySQL's default is 60 seconds."
        },
        "dumpFilePath": {
          "type": "string",
          "description": "Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#mysqlReplicaConfiguration`."
        },
        "masterHeartbeatPeriod": {
          "type": "string",
          "description": "Interval in milliseconds between replication heartbeats."
        },
        "password": {
          "type": "string",
          "description": "The password for the replication connection."
        },
        "sslCipher": {
          "type": "string",
          "description": "A list of permissible ciphers to use for SSL encryption."
        },
        "username": {
          "type": "string",
          "description": "The username for the replication connection."
        },
        "verifyServerCertificate": {
          "type": "boolean",
          "description": "Whether or not to check the primary instance's Common Name value in the certificate that it sends during the SSL handshake."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "clientCertificate",
        "clientKey",
        "connectRetryInterval",
        "dumpFilePath",
        "kind",
        "masterHeartbeatPeriod",
        "password",
        "sslCipher",
        "username",
        "verifyServerCertificate"
      ]
    },
    "google-native:sqladmin/v1beta4:OnPremisesConfiguration": {
      "description": "On-premises instance configuration.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "PEM representation of the trusted CA's x509 certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "PEM representation of the replica's x509 certificate."
        },
        "clientKey": {
          "type": "string",
          "description": "PEM representation of the replica's private key. The corresponsing public key is encoded in the client's certificate."
        },
        "dumpFilePath": {
          "type": "string",
          "description": "The dump file to create the Cloud SQL replica."
        },
        "hostPort": {
          "type": "string",
          "description": "The host and port of the on-premises instance in host:port format"
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#onPremisesConfiguration`."
        },
        "password": {
          "type": "string",
          "description": "The password for connecting to on-premises instance."
        },
        "sourceInstance": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceReference",
          "description": "The reference to Cloud SQL instance if the source is Cloud SQL."
        },
        "username": {
          "type": "string",
          "description": "The username for connecting to on-premises instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:OnPremisesConfigurationResponse": {
      "description": "On-premises instance configuration.",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "PEM representation of the trusted CA's x509 certificate."
        },
        "clientCertificate": {
          "type": "string",
          "description": "PEM representation of the replica's x509 certificate."
        },
        "clientKey": {
          "type": "string",
          "description": "PEM representation of the replica's private key. The corresponsing public key is encoded in the client's certificate."
        },
        "dumpFilePath": {
          "type": "string",
          "description": "The dump file to create the Cloud SQL replica."
        },
        "hostPort": {
          "type": "string",
          "description": "The host and port of the on-premises instance in host:port format"
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#onPremisesConfiguration`."
        },
        "password": {
          "type": "string",
          "description": "The password for connecting to on-premises instance."
        },
        "sourceInstance": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceReferenceResponse",
          "description": "The reference to Cloud SQL instance if the source is Cloud SQL."
        },
        "username": {
          "type": "string",
          "description": "The username for connecting to on-premises instance."
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "clientCertificate",
        "clientKey",
        "dumpFilePath",
        "hostPort",
        "kind",
        "password",
        "sourceInstance",
        "username"
      ]
    },
    "google-native:sqladmin/v1beta4:OperationError": {
      "description": "Database instance operation error.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Identifies the specific error that occurred."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#operationError`."
        },
        "message": {
          "type": "string",
          "description": "Additional information about the error encountered."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:OperationErrorResponse": {
      "description": "Database instance operation error.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Identifies the specific error that occurred."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#operationError`."
        },
        "message": {
          "type": "string",
          "description": "Additional information about the error encountered."
        }
      },
      "type": "object",
      "required": [
        "code",
        "kind",
        "message"
      ]
    },
    "google-native:sqladmin/v1beta4:PasswordStatusResponse": {
      "description": "Read-only password status.",
      "properties": {
        "locked": {
          "type": "boolean",
          "description": "If true, user does not have login privileges."
        },
        "passwordExpirationTime": {
          "type": "string",
          "description": "The expiration time of the current password."
        }
      },
      "type": "object",
      "required": [
        "locked",
        "passwordExpirationTime"
      ]
    },
    "google-native:sqladmin/v1beta4:PasswordValidationPolicy": {
      "description": "Database instance local user password validation policy",
      "properties": {
        "complexity": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:PasswordValidationPolicyComplexity",
          "description": "The complexity of the password."
        },
        "disallowCompromisedCredentials": {
          "type": "boolean",
          "description": "Disallow credentials that have been previously compromised by a public data breach."
        },
        "disallowUsernameSubstring": {
          "type": "boolean",
          "description": "Disallow username as a part of the password."
        },
        "enablePasswordPolicy": {
          "type": "boolean",
          "description": "Whether the password policy is enabled or not."
        },
        "minLength": {
          "type": "integer",
          "description": "Minimum number of characters allowed."
        },
        "passwordChangeInterval": {
          "type": "string",
          "description": "Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL."
        },
        "reuseInterval": {
          "type": "integer",
          "description": "Number of previous passwords that cannot be reused."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:PasswordValidationPolicyComplexity": {
      "description": "The complexity of the password.",
      "type": "string",
      "enum": [
        {
          "name": "ComplexityUnspecified",
          "description": "Complexity check is not specified.",
          "value": "COMPLEXITY_UNSPECIFIED"
        },
        {
          "name": "ComplexityDefault",
          "description": "A combination of lowercase, uppercase, numeric, and non-alphanumeric characters.",
          "value": "COMPLEXITY_DEFAULT"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:PasswordValidationPolicyResponse": {
      "description": "Database instance local user password validation policy",
      "properties": {
        "complexity": {
          "type": "string",
          "description": "The complexity of the password."
        },
        "disallowCompromisedCredentials": {
          "type": "boolean",
          "description": "Disallow credentials that have been previously compromised by a public data breach."
        },
        "disallowUsernameSubstring": {
          "type": "boolean",
          "description": "Disallow username as a part of the password."
        },
        "enablePasswordPolicy": {
          "type": "boolean",
          "description": "Whether the password policy is enabled or not."
        },
        "minLength": {
          "type": "integer",
          "description": "Minimum number of characters allowed."
        },
        "passwordChangeInterval": {
          "type": "string",
          "description": "Minimum interval after which the password can be changed. This flag is only supported for PostgreSQL."
        },
        "reuseInterval": {
          "type": "integer",
          "description": "Number of previous passwords that cannot be reused."
        }
      },
      "type": "object",
      "required": [
        "complexity",
        "disallowCompromisedCredentials",
        "disallowUsernameSubstring",
        "enablePasswordPolicy",
        "minLength",
        "passwordChangeInterval",
        "reuseInterval"
      ]
    },
    "google-native:sqladmin/v1beta4:PscConfig": {
      "description": "PSC settings for a Cloud SQL instance.",
      "properties": {
        "allowedConsumerProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric)."
        },
        "pscEnabled": {
          "type": "boolean",
          "description": "Whether PSC connectivity is enabled for this instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:PscConfigResponse": {
      "description": "PSC settings for a Cloud SQL instance.",
      "properties": {
        "allowedConsumerProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of consumer projects that are allow-listed for PSC connections to this instance. This instance can be connected to with PSC from any network in these projects. Each consumer project in this list may be represented by a project number (numeric) or by a project id (alphanumeric)."
        },
        "pscEnabled": {
          "type": "boolean",
          "description": "Whether PSC connectivity is enabled for this instance."
        }
      },
      "type": "object",
      "required": [
        "allowedConsumerProjects",
        "pscEnabled"
      ]
    },
    "google-native:sqladmin/v1beta4:ReplicaConfiguration": {
      "description": "Read-replica configuration for connecting to the primary instance.",
      "properties": {
        "cascadableReplica": {
          "type": "boolean",
          "description": "Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it."
        },
        "failoverTarget": {
          "type": "boolean",
          "description": "Specifies if the replica is the failover target. If the field is set to `true` the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#replicaConfiguration`."
        },
        "mysqlReplicaConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:MySqlReplicaConfiguration",
          "description": "MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:ReplicaConfigurationResponse": {
      "description": "Read-replica configuration for connecting to the primary instance.",
      "properties": {
        "cascadableReplica": {
          "type": "boolean",
          "description": "Optional. Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it."
        },
        "failoverTarget": {
          "type": "boolean",
          "description": "Specifies if the replica is the failover target. If the field is set to `true` the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#replicaConfiguration`."
        },
        "mysqlReplicaConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:MySqlReplicaConfigurationResponse",
          "description": "MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named `master.info` in the data directory."
        }
      },
      "type": "object",
      "required": [
        "cascadableReplica",
        "failoverTarget",
        "kind",
        "mysqlReplicaConfiguration"
      ]
    },
    "google-native:sqladmin/v1beta4:Settings": {
      "description": "Database instance settings.",
      "properties": {
        "activationPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsActivationPolicy",
          "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: * `ALWAYS`: The instance is on, and remains so even in the absence of connection requests. * `NEVER`: The instance is off; it is not activated, even if a connection request arrives."
        },
        "activeDirectoryConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlActiveDirectoryConfig",
          "description": "Active Directory configuration, relevant only for Cloud SQL for SQL Server."
        },
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:AdvancedMachineFeatures",
          "description": "Specifies advance machine configuration for the instance relevant only for SQL Server."
        },
        "authorizedGaeApplications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.",
          "deprecationMessage": "The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only."
        },
        "availabilityType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsAvailabilityType",
          "description": "Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability)."
        },
        "backupConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:BackupConfiguration",
          "description": "The daily backup configuration for the instance."
        },
        "collation": {
          "type": "string",
          "description": "The name of server Instance collation."
        },
        "connectorEnforcement": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsConnectorEnforcement",
          "description": "Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors) Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance."
        },
        "crashSafeReplicationEnabled": {
          "type": "boolean",
          "description": "Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances."
        },
        "dataCacheConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DataCacheConfig",
          "description": "Configuration for data cache."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "The size of data disk, in GB. The data disk size minimum is 10GB."
        },
        "dataDiskType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsDataDiskType",
          "description": "The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances."
        },
        "databaseFlags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DatabaseFlags"
          },
          "description": "The database flags passed to the instance at startup."
        },
        "databaseReplicationEnabled": {
          "type": "boolean",
          "description": "Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance."
        },
        "deletionProtectionEnabled": {
          "type": "boolean",
          "description": "Configuration to protect against accidental instance deletion."
        },
        "denyMaintenancePeriods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DenyMaintenancePeriod"
          },
          "description": "Deny maintenance periods"
        },
        "edition": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsEdition",
          "description": "Optional. The edition of the instance."
        },
        "insightsConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InsightsConfig",
          "description": "Insights configuration, for now relevant only for Postgres."
        },
        "ipConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:IpConfiguration",
          "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#settings`."
        },
        "locationPreference": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:LocationPreference",
          "description": "The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:MaintenanceWindow",
          "description": "The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes."
        },
        "passwordValidationPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:PasswordValidationPolicy",
          "description": "The local user password validation policy of the instance."
        },
        "pricingPlan": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsPricingPlan",
          "description": "The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances."
        },
        "replicationType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsReplicationType",
          "description": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.",
          "deprecationMessage": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances."
        },
        "settingsVersion": {
          "type": "string",
          "description": "The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value."
        },
        "sqlServerAuditConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlServerAuditConfig",
          "description": "SQL Server specific audit configuration."
        },
        "storageAutoResize": {
          "type": "boolean",
          "description": "Configuration to increase storage size automatically. The default value is true."
        },
        "storageAutoResizeLimit": {
          "type": "string",
          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
        },
        "tier": {
          "type": "string",
          "description": "The tier (or machine type) for this instance, for example `db-custom-1-3840`. WARNING: Changing this restarts the instance."
        },
        "timeZone": {
          "type": "string",
          "description": "Server timezone, relevant only for Cloud SQL for SQL Server."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided labels, represented as a dictionary where each label is a single key value pair."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:SettingsActivationPolicy": {
      "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: * `ALWAYS`: The instance is on, and remains so even in the absence of connection requests. * `NEVER`: The instance is off; it is not activated, even if a connection request arrives.",
      "type": "string",
      "enum": [
        {
          "name": "SqlActivationPolicyUnspecified",
          "description": "Unknown activation plan.",
          "value": "SQL_ACTIVATION_POLICY_UNSPECIFIED"
        },
        {
          "name": "Always",
          "description": "The instance is always up and running.",
          "value": "ALWAYS"
        },
        {
          "name": "Never",
          "description": "The instance never starts.",
          "value": "NEVER"
        },
        {
          "name": "OnDemand",
          "description": "The instance starts upon receiving requests.",
          "value": "ON_DEMAND"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:SettingsAvailabilityType": {
      "description": "Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).",
      "type": "string",
      "enum": [
        {
          "name": "SqlAvailabilityTypeUnspecified",
          "description": "This is an unknown Availability type.",
          "value": "SQL_AVAILABILITY_TYPE_UNSPECIFIED"
        },
        {
          "name": "Zonal",
          "description": "Zonal available instance.",
          "value": "ZONAL"
        },
        {
          "name": "Regional",
          "description": "Regional available instance.",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:SettingsConnectorEnforcement": {
      "description": "Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors) Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance.",
      "type": "string",
      "enum": [
        {
          "name": "ConnectorEnforcementUnspecified",
          "description": "The requirement for Cloud SQL connectors is unknown.",
          "value": "CONNECTOR_ENFORCEMENT_UNSPECIFIED"
        },
        {
          "name": "NotRequired",
          "description": "Do not require Cloud SQL connectors.",
          "value": "NOT_REQUIRED"
        },
        {
          "name": "Required",
          "description": "Require all connections to use Cloud SQL connectors, including the Cloud SQL Auth Proxy and Cloud SQL Java, Python, and Go connectors. Note: This disables all existing authorized networks.",
          "value": "REQUIRED"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:SettingsDataDiskType": {
      "description": "The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances.",
      "type": "string",
      "enum": [
        {
          "name": "SqlDataDiskTypeUnspecified",
          "description": "This is an unknown data disk type.",
          "value": "SQL_DATA_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "PdSsd",
          "description": "An SSD data disk.",
          "value": "PD_SSD"
        },
        {
          "name": "PdHdd",
          "description": "An HDD data disk.",
          "value": "PD_HDD"
        },
        {
          "name": "ObsoleteLocalSsd",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "value": "OBSOLETE_LOCAL_SSD"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:SettingsEdition": {
      "description": "Optional. The edition of the instance.",
      "type": "string",
      "enum": [
        {
          "name": "EditionUnspecified",
          "description": "The instance did not specify the edition.",
          "value": "EDITION_UNSPECIFIED"
        },
        {
          "name": "Enterprise",
          "description": "The instance is an enterprise edition.",
          "value": "ENTERPRISE"
        },
        {
          "name": "EnterprisePlus",
          "description": "The instance is an Enterprise Plus edition.",
          "value": "ENTERPRISE_PLUS"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:SettingsPricingPlan": {
      "description": "The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances.",
      "type": "string",
      "enum": [
        {
          "name": "SqlPricingPlanUnspecified",
          "description": "This is an unknown pricing plan for this instance.",
          "value": "SQL_PRICING_PLAN_UNSPECIFIED"
        },
        {
          "name": "Package",
          "description": "The instance is billed at a monthly flat rate.",
          "value": "PACKAGE"
        },
        {
          "name": "PerUse",
          "description": "The instance is billed per usage.",
          "value": "PER_USE"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:SettingsReplicationType": {
      "description": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.",
      "type": "string",
      "enum": [
        {
          "name": "SqlReplicationTypeUnspecified",
          "description": "This is an unknown replication type for a Cloud SQL instance.",
          "value": "SQL_REPLICATION_TYPE_UNSPECIFIED"
        },
        {
          "name": "Synchronous",
          "description": "The synchronous replication mode for First Generation instances. It is the default value.",
          "value": "SYNCHRONOUS"
        },
        {
          "name": "Asynchronous",
          "description": "The asynchronous replication mode for First Generation instances. It provides a slight performance gain, but if an outage occurs while this option is set to asynchronous, you can lose up to a few seconds of updates to your data.",
          "value": "ASYNCHRONOUS"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:SettingsResponse": {
      "description": "Database instance settings.",
      "properties": {
        "activationPolicy": {
          "type": "string",
          "description": "The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: * `ALWAYS`: The instance is on, and remains so even in the absence of connection requests. * `NEVER`: The instance is off; it is not activated, even if a connection request arrives."
        },
        "activeDirectoryConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlActiveDirectoryConfigResponse",
          "description": "Active Directory configuration, relevant only for Cloud SQL for SQL Server."
        },
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:AdvancedMachineFeaturesResponse",
          "description": "Specifies advance machine configuration for the instance relevant only for SQL Server."
        },
        "authorizedGaeApplications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.",
          "deprecationMessage": "The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only."
        },
        "availabilityType": {
          "type": "string",
          "description": "Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available)./ For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability)."
        },
        "backupConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:BackupConfigurationResponse",
          "description": "The daily backup configuration for the instance."
        },
        "collation": {
          "type": "string",
          "description": "The name of server Instance collation."
        },
        "connectorEnforcement": {
          "type": "string",
          "description": "Specifies if connections must use Cloud SQL connectors. Option values include the following: `NOT_REQUIRED` (Cloud SQL instances can be connected without Cloud SQL Connectors) and `REQUIRED` (Only allow connections that use Cloud SQL Connectors) Note that using REQUIRED disables all existing authorized networks. If this field is not specified when creating a new instance, NOT_REQUIRED is used. If this field is not specified when patching or updating an existing instance, it is left unchanged in the instance."
        },
        "crashSafeReplicationEnabled": {
          "type": "boolean",
          "description": "Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances."
        },
        "dataCacheConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DataCacheConfigResponse",
          "description": "Configuration for data cache."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "The size of data disk, in GB. The data disk size minimum is 10GB."
        },
        "dataDiskType": {
          "type": "string",
          "description": "The type of data disk: `PD_SSD` (default) or `PD_HDD`. Not used for First Generation instances."
        },
        "databaseFlags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DatabaseFlagsResponse"
          },
          "description": "The database flags passed to the instance at startup."
        },
        "databaseReplicationEnabled": {
          "type": "boolean",
          "description": "Configuration specific to read replica instances. Indicates whether replication is enabled or not. WARNING: Changing this restarts the instance."
        },
        "deletionProtectionEnabled": {
          "type": "boolean",
          "description": "Configuration to protect against accidental instance deletion."
        },
        "denyMaintenancePeriods": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DenyMaintenancePeriodResponse"
          },
          "description": "Deny maintenance periods"
        },
        "edition": {
          "type": "string",
          "description": "Optional. The edition of the instance."
        },
        "insightsConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InsightsConfigResponse",
          "description": "Insights configuration, for now relevant only for Postgres."
        },
        "ipConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:IpConfigurationResponse",
          "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#settings`."
        },
        "locationPreference": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:LocationPreferenceResponse",
          "description": "The location preference settings. This allows the instance to be located as near as possible to either an App Engine app or Compute Engine zone for better performance. App Engine co-location was only applicable to First Generation instances."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:MaintenanceWindowResponse",
          "description": "The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes."
        },
        "passwordValidationPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:PasswordValidationPolicyResponse",
          "description": "The local user password validation policy of the instance."
        },
        "pricingPlan": {
          "type": "string",
          "description": "The pricing plan for this instance. This can be either `PER_USE` or `PACKAGE`. Only `PER_USE` is supported for Second Generation instances."
        },
        "replicationType": {
          "type": "string",
          "description": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances.",
          "deprecationMessage": "The type of replication this instance uses. This can be either `ASYNCHRONOUS` or `SYNCHRONOUS`. (Deprecated) This property was only applicable to First Generation instances."
        },
        "settingsVersion": {
          "type": "string",
          "description": "The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value."
        },
        "sqlServerAuditConfig": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlServerAuditConfigResponse",
          "description": "SQL Server specific audit configuration."
        },
        "storageAutoResize": {
          "type": "boolean",
          "description": "Configuration to increase storage size automatically. The default value is true."
        },
        "storageAutoResizeLimit": {
          "type": "string",
          "description": "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
        },
        "tier": {
          "type": "string",
          "description": "The tier (or machine type) for this instance, for example `db-custom-1-3840`. WARNING: Changing this restarts the instance."
        },
        "timeZone": {
          "type": "string",
          "description": "Server timezone, relevant only for Cloud SQL for SQL Server."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided labels, represented as a dictionary where each label is a single key value pair."
        }
      },
      "type": "object",
      "required": [
        "activationPolicy",
        "activeDirectoryConfig",
        "advancedMachineFeatures",
        "authorizedGaeApplications",
        "availabilityType",
        "backupConfiguration",
        "collation",
        "connectorEnforcement",
        "crashSafeReplicationEnabled",
        "dataCacheConfig",
        "dataDiskSizeGb",
        "dataDiskType",
        "databaseFlags",
        "databaseReplicationEnabled",
        "deletionProtectionEnabled",
        "denyMaintenancePeriods",
        "edition",
        "insightsConfig",
        "ipConfiguration",
        "kind",
        "locationPreference",
        "maintenanceWindow",
        "passwordValidationPolicy",
        "pricingPlan",
        "replicationType",
        "settingsVersion",
        "sqlServerAuditConfig",
        "storageAutoResize",
        "storageAutoResizeLimit",
        "tier",
        "timeZone",
        "userLabels"
      ]
    },
    "google-native:sqladmin/v1beta4:SqlActiveDirectoryConfig": {
      "description": "Active Directory configuration, relevant only for Cloud SQL for SQL Server.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "The name of the domain (e.g., mydomain.com)."
        },
        "kind": {
          "type": "string",
          "description": "This is always sql#activeDirectoryConfig."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:SqlActiveDirectoryConfigResponse": {
      "description": "Active Directory configuration, relevant only for Cloud SQL for SQL Server.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "The name of the domain (e.g., mydomain.com)."
        },
        "kind": {
          "type": "string",
          "description": "This is always sql#activeDirectoryConfig."
        }
      },
      "type": "object",
      "required": [
        "domain",
        "kind"
      ]
    },
    "google-native:sqladmin/v1beta4:SqlOutOfDiskReport": {
      "description": "This message wraps up the information written by out-of-disk detection job.",
      "properties": {
        "sqlMinRecommendedIncreaseSizeGb": {
          "type": "integer",
          "description": "The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:"
        },
        "sqlOutOfDiskState": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlOutOfDiskReportSqlOutOfDiskState",
          "description": "This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:SqlOutOfDiskReportResponse": {
      "description": "This message wraps up the information written by out-of-disk detection job.",
      "properties": {
        "sqlMinRecommendedIncreaseSizeGb": {
          "type": "integer",
          "description": "The minimum recommended increase size in GigaBytes This field is consumed by the frontend * Writers: * the proactive database wellness job for OOD. * Readers:"
        },
        "sqlOutOfDiskState": {
          "type": "string",
          "description": "This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
        }
      },
      "type": "object",
      "required": [
        "sqlMinRecommendedIncreaseSizeGb",
        "sqlOutOfDiskState"
      ]
    },
    "google-native:sqladmin/v1beta4:SqlOutOfDiskReportSqlOutOfDiskState": {
      "description": "This field represents the state generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job",
      "type": "string",
      "enum": [
        {
          "name": "SqlOutOfDiskStateUnspecified",
          "description": "Unspecified state",
          "value": "SQL_OUT_OF_DISK_STATE_UNSPECIFIED"
        },
        {
          "name": "Normal",
          "description": "The instance has plenty space on data disk",
          "value": "NORMAL"
        },
        {
          "name": "SoftShutdown",
          "description": "Data disk is almost used up. It is shutdown to prevent data corruption.",
          "value": "SOFT_SHUTDOWN"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:SqlScheduledMaintenance": {
      "description": "Any scheduled maintenance for this instance.",
      "properties": {
        "canDefer": {
          "type": "boolean"
        },
        "canReschedule": {
          "type": "boolean",
          "description": "If the scheduled maintenance can be rescheduled."
        },
        "scheduleDeadlineTime": {
          "type": "string",
          "description": "Maintenance cannot be rescheduled to start beyond this deadline."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:SqlScheduledMaintenanceResponse": {
      "description": "Any scheduled maintenance for this instance.",
      "properties": {
        "canDefer": {
          "type": "boolean"
        },
        "canReschedule": {
          "type": "boolean",
          "description": "If the scheduled maintenance can be rescheduled."
        },
        "scheduleDeadlineTime": {
          "type": "string",
          "description": "Maintenance cannot be rescheduled to start beyond this deadline."
        },
        "startTime": {
          "type": "string",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        }
      },
      "type": "object",
      "required": [
        "canDefer",
        "canReschedule",
        "scheduleDeadlineTime",
        "startTime"
      ]
    },
    "google-native:sqladmin/v1beta4:SqlServerAuditConfig": {
      "description": "SQL Server specific audit configuration.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The name of the destination bucket (e.g., gs://mybucket)."
        },
        "kind": {
          "type": "string",
          "description": "This is always sql#sqlServerAuditConfig"
        },
        "retentionInterval": {
          "type": "string",
          "description": "How long to keep generated audit files."
        },
        "uploadInterval": {
          "type": "string",
          "description": "How often to upload generated audit files."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:SqlServerAuditConfigResponse": {
      "description": "SQL Server specific audit configuration.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The name of the destination bucket (e.g., gs://mybucket)."
        },
        "kind": {
          "type": "string",
          "description": "This is always sql#sqlServerAuditConfig"
        },
        "retentionInterval": {
          "type": "string",
          "description": "How long to keep generated audit files."
        },
        "uploadInterval": {
          "type": "string",
          "description": "How often to upload generated audit files."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "kind",
        "retentionInterval",
        "uploadInterval"
      ]
    },
    "google-native:sqladmin/v1beta4:SqlServerDatabaseDetails": {
      "description": "Represents a Sql Server database on the Cloud SQL instance.",
      "properties": {
        "compatibilityLevel": {
          "type": "integer",
          "description": "The version of SQL Server with which the database is to be made compatible"
        },
        "recoveryModel": {
          "type": "string",
          "description": "The recovery model of a SQL Server database"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:SqlServerDatabaseDetailsResponse": {
      "description": "Represents a Sql Server database on the Cloud SQL instance.",
      "properties": {
        "compatibilityLevel": {
          "type": "integer",
          "description": "The version of SQL Server with which the database is to be made compatible"
        },
        "recoveryModel": {
          "type": "string",
          "description": "The recovery model of a SQL Server database"
        }
      },
      "type": "object",
      "required": [
        "compatibilityLevel",
        "recoveryModel"
      ]
    },
    "google-native:sqladmin/v1beta4:SqlServerUserDetails": {
      "description": "Represents a Sql Server user on the Cloud SQL instance.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "If the user has been disabled"
        },
        "serverRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The server roles for this user"
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:SqlServerUserDetailsResponse": {
      "description": "Represents a Sql Server user on the Cloud SQL instance.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "If the user has been disabled"
        },
        "serverRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The server roles for this user"
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "serverRoles"
      ]
    },
    "google-native:sqladmin/v1beta4:SslCert": {
      "description": "SslCerts Resource",
      "properties": {
        "cert": {
          "type": "string",
          "description": "PEM representation."
        },
        "certSerialNumber": {
          "type": "string",
          "description": "Serial number, as extracted from the certificate."
        },
        "commonName": {
          "type": "string",
          "description": "User supplied name. Constrained to [a-zA-Z.-_ ]+."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "expirationTime": {
          "type": "string",
          "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "instance": {
          "type": "string",
          "description": "Name of the database instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#sslCert`."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "Sha1 Fingerprint."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:SslCertResponse": {
      "description": "SslCerts Resource",
      "properties": {
        "cert": {
          "type": "string",
          "description": "PEM representation."
        },
        "certSerialNumber": {
          "type": "string",
          "description": "Serial number, as extracted from the certificate."
        },
        "commonName": {
          "type": "string",
          "description": "User supplied name. Constrained to [a-zA-Z.-_ ]+."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "expirationTime": {
          "type": "string",
          "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "instance": {
          "type": "string",
          "description": "Name of the database instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#sslCert`."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "Sha1 Fingerprint."
        }
      },
      "type": "object",
      "required": [
        "cert",
        "certSerialNumber",
        "commonName",
        "createTime",
        "expirationTime",
        "instance",
        "kind",
        "selfLink",
        "sha1Fingerprint"
      ]
    },
    "google-native:sqladmin/v1beta4:UserDualPasswordType": {
      "description": "Dual password status for the user.",
      "type": "string",
      "enum": [
        {
          "name": "DualPasswordTypeUnspecified",
          "description": "The default value.",
          "value": "DUAL_PASSWORD_TYPE_UNSPECIFIED"
        },
        {
          "name": "NoModifyDualPassword",
          "description": "Do not update the user's dual password status.",
          "value": "NO_MODIFY_DUAL_PASSWORD"
        },
        {
          "name": "NoDualPassword",
          "description": "No dual password usable for connecting using this user.",
          "value": "NO_DUAL_PASSWORD"
        },
        {
          "name": "DualPassword",
          "description": "Dual password usable for connecting using this user.",
          "value": "DUAL_PASSWORD"
        }
      ]
    },
    "google-native:sqladmin/v1beta4:UserPasswordValidationPolicy": {
      "description": "User level password validation policy.",
      "properties": {
        "allowedFailedAttempts": {
          "type": "integer",
          "description": "Number of failed login attempts allowed before user get locked."
        },
        "enableFailedAttemptsCheck": {
          "type": "boolean",
          "description": "If true, failed login attempts check will be enabled."
        },
        "enablePasswordVerification": {
          "type": "boolean",
          "description": "If true, the user must specify the current password before changing the password. This flag is supported only for MySQL."
        },
        "passwordExpirationDuration": {
          "type": "string",
          "description": "Expiration duration after password is updated."
        }
      },
      "type": "object"
    },
    "google-native:sqladmin/v1beta4:UserPasswordValidationPolicyResponse": {
      "description": "User level password validation policy.",
      "properties": {
        "allowedFailedAttempts": {
          "type": "integer",
          "description": "Number of failed login attempts allowed before user get locked."
        },
        "enableFailedAttemptsCheck": {
          "type": "boolean",
          "description": "If true, failed login attempts check will be enabled."
        },
        "enablePasswordVerification": {
          "type": "boolean",
          "description": "If true, the user must specify the current password before changing the password. This flag is supported only for MySQL."
        },
        "passwordExpirationDuration": {
          "type": "string",
          "description": "Expiration duration after password is updated."
        },
        "status": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:PasswordStatusResponse",
          "description": "Read-only password status."
        }
      },
      "type": "object",
      "required": [
        "allowedFailedAttempts",
        "enableFailedAttemptsCheck",
        "enablePasswordVerification",
        "passwordExpirationDuration",
        "status"
      ]
    },
    "google-native:sqladmin/v1beta4:UserType": {
      "description": "The user type. It determines the method to authenticate the user during login. The default is the database's built-in user type.",
      "type": "string",
      "enum": [
        {
          "name": "BuiltIn",
          "description": "The database's built-in user type.",
          "value": "BUILT_IN"
        },
        {
          "name": "CloudIamUser",
          "description": "Cloud IAM user.",
          "value": "CLOUD_IAM_USER"
        },
        {
          "name": "CloudIamServiceAccount",
          "description": "Cloud IAM service account.",
          "value": "CLOUD_IAM_SERVICE_ACCOUNT"
        },
        {
          "name": "CloudIamGroup",
          "description": "Cloud IAM Group non-login user.",
          "value": "CLOUD_IAM_GROUP"
        },
        {
          "name": "CloudIamGroupUser",
          "description": "Cloud IAM Group login user.",
          "value": "CLOUD_IAM_GROUP_USER"
        },
        {
          "name": "CloudIamGroupServiceAccount",
          "description": "Cloud IAM Group service account.",
          "value": "CLOUD_IAM_GROUP_SERVICE_ACCOUNT"
        }
      ]
    },
    "google-native:storage/v1:BucketAccessControl": {
      "description": "An access-control entry.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "id": {
          "type": "string",
          "description": "The ID of the access-control entry."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketAccessControlProjectTeam",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketAccessControlProjectTeam": {
      "description": "The project team associated with the entity, if any.",
      "properties": {
        "projectNumber": {
          "type": "string",
          "description": "The project number."
        },
        "team": {
          "type": "string",
          "description": "The team."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketAccessControlProjectTeamResponse": {
      "description": "The project team associated with the entity, if any.",
      "properties": {
        "projectNumber": {
          "type": "string",
          "description": "The project number."
        },
        "team": {
          "type": "string",
          "description": "The team."
        }
      },
      "type": "object",
      "required": [
        "projectNumber",
        "team"
      ]
    },
    "google-native:storage/v1:BucketAccessControlResponse": {
      "description": "An access-control entry.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketAccessControlProjectTeamResponse",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "domain",
        "email",
        "entity",
        "entityId",
        "etag",
        "kind",
        "projectTeam",
        "role",
        "selfLink"
      ]
    },
    "google-native:storage/v1:BucketAutoclass": {
      "description": "The bucket's Autoclass configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether or not Autoclass is enabled on this bucket"
        },
        "terminalStorageClass": {
          "type": "string",
          "description": "The storage class that objects in the bucket eventually transition to if they are not read for a certain length of time. Valid values are NEARLINE and ARCHIVE."
        },
        "terminalStorageClassUpdateTime": {
          "type": "string",
          "description": "A date and time in RFC 3339 format representing the time of the most recent update to \"terminalStorageClass\"."
        },
        "toggleTime": {
          "type": "string",
          "description": "A date and time in RFC 3339 format representing the instant at which \"enabled\" was last toggled."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketAutoclassResponse": {
      "description": "The bucket's Autoclass configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether or not Autoclass is enabled on this bucket"
        },
        "terminalStorageClass": {
          "type": "string",
          "description": "The storage class that objects in the bucket eventually transition to if they are not read for a certain length of time. Valid values are NEARLINE and ARCHIVE."
        },
        "terminalStorageClassUpdateTime": {
          "type": "string",
          "description": "A date and time in RFC 3339 format representing the time of the most recent update to \"terminalStorageClass\"."
        },
        "toggleTime": {
          "type": "string",
          "description": "A date and time in RFC 3339 format representing the instant at which \"enabled\" was last toggled."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "terminalStorageClass",
        "terminalStorageClassUpdateTime",
        "toggleTime"
      ]
    },
    "google-native:storage/v1:BucketBilling": {
      "description": "The bucket's billing configuration.",
      "properties": {
        "requesterPays": {
          "type": "boolean",
          "description": "When set to true, Requester Pays is enabled for this bucket."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketBillingResponse": {
      "description": "The bucket's billing configuration.",
      "properties": {
        "requesterPays": {
          "type": "boolean",
          "description": "When set to true, Requester Pays is enabled for this bucket."
        }
      },
      "type": "object",
      "required": [
        "requesterPays"
      ]
    },
    "google-native:storage/v1:BucketCorsItem": {
      "properties": {
        "maxAgeSeconds": {
          "type": "integer",
          "description": "The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses."
        },
        "method": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: \"*\" is permitted in the list of methods, and means \"any method\"."
        },
        "origin": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Origins eligible to receive CORS response headers. Note: \"*\" is permitted in the list of origins, and means \"any Origin\"."
        },
        "responseHeader": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketCorsItemResponse": {
      "properties": {
        "maxAgeSeconds": {
          "type": "integer",
          "description": "The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses."
        },
        "method": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: \"*\" is permitted in the list of methods, and means \"any method\"."
        },
        "origin": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Origins eligible to receive CORS response headers. Note: \"*\" is permitted in the list of origins, and means \"any Origin\"."
        },
        "responseHeader": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains."
        }
      },
      "type": "object",
      "required": [
        "maxAgeSeconds",
        "method",
        "origin",
        "responseHeader"
      ]
    },
    "google-native:storage/v1:BucketCustomPlacementConfig": {
      "description": "The bucket's custom placement configuration for Custom Dual Regions.",
      "properties": {
        "dataLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of regional locations in which data is placed."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketCustomPlacementConfigResponse": {
      "description": "The bucket's custom placement configuration for Custom Dual Regions.",
      "properties": {
        "dataLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of regional locations in which data is placed."
        }
      },
      "type": "object",
      "required": [
        "dataLocations"
      ]
    },
    "google-native:storage/v1:BucketEncryption": {
      "description": "Encryption configuration for a bucket.",
      "properties": {
        "defaultKmsKeyName": {
          "type": "string",
          "description": "A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketEncryptionResponse": {
      "description": "Encryption configuration for a bucket.",
      "properties": {
        "defaultKmsKeyName": {
          "type": "string",
          "description": "A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified."
        }
      },
      "type": "object",
      "required": [
        "defaultKmsKeyName"
      ]
    },
    "google-native:storage/v1:BucketIamConfiguration": {
      "description": "The bucket's IAM configuration.",
      "properties": {
        "bucketPolicyOnly": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketIamConfigurationBucketPolicyOnly",
          "description": "The bucket's uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature."
        },
        "publicAccessPrevention": {
          "type": "string",
          "description": "The bucket's Public Access Prevention configuration. Currently, 'inherited' and 'enforced' are supported."
        },
        "uniformBucketLevelAccess": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketIamConfigurationUniformBucketLevelAccess",
          "description": "The bucket's uniform bucket-level access configuration."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketIamConfigurationBucketPolicyOnly": {
      "description": "The bucket's uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If set, access is controlled only by bucket-level or above IAM policies."
        },
        "lockedTime": {
          "type": "string",
          "description": "The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketIamConfigurationBucketPolicyOnlyResponse": {
      "description": "The bucket's uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If set, access is controlled only by bucket-level or above IAM policies."
        },
        "lockedTime": {
          "type": "string",
          "description": "The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "lockedTime"
      ]
    },
    "google-native:storage/v1:BucketIamConfigurationResponse": {
      "description": "The bucket's IAM configuration.",
      "properties": {
        "bucketPolicyOnly": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketIamConfigurationBucketPolicyOnlyResponse",
          "description": "The bucket's uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature."
        },
        "publicAccessPrevention": {
          "type": "string",
          "description": "The bucket's Public Access Prevention configuration. Currently, 'inherited' and 'enforced' are supported."
        },
        "uniformBucketLevelAccess": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketIamConfigurationUniformBucketLevelAccessResponse",
          "description": "The bucket's uniform bucket-level access configuration."
        }
      },
      "type": "object",
      "required": [
        "bucketPolicyOnly",
        "publicAccessPrevention",
        "uniformBucketLevelAccess"
      ]
    },
    "google-native:storage/v1:BucketIamConfigurationUniformBucketLevelAccess": {
      "description": "The bucket's uniform bucket-level access configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If set, access is controlled only by bucket-level or above IAM policies."
        },
        "lockedTime": {
          "type": "string",
          "description": "The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketIamConfigurationUniformBucketLevelAccessResponse": {
      "description": "The bucket's uniform bucket-level access configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If set, access is controlled only by bucket-level or above IAM policies."
        },
        "lockedTime": {
          "type": "string",
          "description": "The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "lockedTime"
      ]
    },
    "google-native:storage/v1:BucketIamPolicyBindingsItem": {
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:storage%2Fv1:Expr",
          "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketIamPolicyBindingsItemResponse": {
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:storage%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:storage/v1:BucketLifecycle": {
      "description": "The bucket's lifecycle configuration. See lifecycle management for more information.",
      "properties": {
        "rule": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycleRuleItem"
          },
          "description": "A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketLifecycleResponse": {
      "description": "The bucket's lifecycle configuration. See lifecycle management for more information.",
      "properties": {
        "rule": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycleRuleItemResponse"
          },
          "description": "A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken."
        }
      },
      "type": "object",
      "required": [
        "rule"
      ]
    },
    "google-native:storage/v1:BucketLifecycleRuleItem": {
      "properties": {
        "action": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycleRuleItemAction",
          "description": "The action to take."
        },
        "condition": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycleRuleItemCondition",
          "description": "The condition(s) under which the action will be taken."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketLifecycleRuleItemAction": {
      "description": "The action to take.",
      "properties": {
        "storageClass": {
          "type": "string",
          "description": "Target storage class. Required iff the type of the action is SetStorageClass."
        },
        "type": {
          "type": "string",
          "description": "Type of the action. Currently, only Delete, SetStorageClass, and AbortIncompleteMultipartUpload are supported."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketLifecycleRuleItemActionResponse": {
      "description": "The action to take.",
      "properties": {
        "storageClass": {
          "type": "string",
          "description": "Target storage class. Required iff the type of the action is SetStorageClass."
        },
        "type": {
          "type": "string",
          "description": "Type of the action. Currently, only Delete, SetStorageClass, and AbortIncompleteMultipartUpload are supported."
        }
      },
      "type": "object",
      "required": [
        "storageClass",
        "type"
      ]
    },
    "google-native:storage/v1:BucketLifecycleRuleItemCondition": {
      "description": "The condition(s) under which the action will be taken.",
      "properties": {
        "age": {
          "type": "integer",
          "description": "Age of an object (in days). This condition is satisfied when an object reaches the specified age."
        },
        "createdBefore": {
          "type": "string",
          "description": "A date in RFC 3339 format with only the date part (for instance, \"2013-01-15\"). This condition is satisfied when an object is created before midnight of the specified date in UTC."
        },
        "customTimeBefore": {
          "type": "string",
          "description": "A date in RFC 3339 format with only the date part (for instance, \"2013-01-15\"). This condition is satisfied when the custom time on an object is before this date in UTC."
        },
        "daysSinceCustomTime": {
          "type": "integer",
          "description": "Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply."
        },
        "daysSinceNoncurrentTime": {
          "type": "integer",
          "description": "Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it's zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent."
        },
        "isLive": {
          "type": "boolean",
          "description": "Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects."
        },
        "matchesPattern": {
          "type": "string",
          "description": "A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the \"Early Access\" launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released."
        },
        "matchesPrefix": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of object name prefixes. This condition will be satisfied when at least one of the prefixes exactly matches the beginning of the object name."
        },
        "matchesStorageClass": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY."
        },
        "matchesSuffix": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of object name suffixes. This condition will be satisfied when at least one of the suffixes exactly matches the end of the object name."
        },
        "noncurrentTimeBefore": {
          "type": "string",
          "description": "A date in RFC 3339 format with only the date part (for instance, \"2013-01-15\"). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects."
        },
        "numNewerVersions": {
          "type": "integer",
          "description": "Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketLifecycleRuleItemConditionResponse": {
      "description": "The condition(s) under which the action will be taken.",
      "properties": {
        "age": {
          "type": "integer",
          "description": "Age of an object (in days). This condition is satisfied when an object reaches the specified age."
        },
        "createdBefore": {
          "type": "string",
          "description": "A date in RFC 3339 format with only the date part (for instance, \"2013-01-15\"). This condition is satisfied when an object is created before midnight of the specified date in UTC."
        },
        "customTimeBefore": {
          "type": "string",
          "description": "A date in RFC 3339 format with only the date part (for instance, \"2013-01-15\"). This condition is satisfied when the custom time on an object is before this date in UTC."
        },
        "daysSinceCustomTime": {
          "type": "integer",
          "description": "Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply."
        },
        "daysSinceNoncurrentTime": {
          "type": "integer",
          "description": "Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it's zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent."
        },
        "isLive": {
          "type": "boolean",
          "description": "Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects."
        },
        "matchesPattern": {
          "type": "string",
          "description": "A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the \"Early Access\" launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released."
        },
        "matchesPrefix": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of object name prefixes. This condition will be satisfied when at least one of the prefixes exactly matches the beginning of the object name."
        },
        "matchesStorageClass": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY."
        },
        "matchesSuffix": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of object name suffixes. This condition will be satisfied when at least one of the suffixes exactly matches the end of the object name."
        },
        "noncurrentTimeBefore": {
          "type": "string",
          "description": "A date in RFC 3339 format with only the date part (for instance, \"2013-01-15\"). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects."
        },
        "numNewerVersions": {
          "type": "integer",
          "description": "Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object."
        }
      },
      "type": "object",
      "required": [
        "age",
        "createdBefore",
        "customTimeBefore",
        "daysSinceCustomTime",
        "daysSinceNoncurrentTime",
        "isLive",
        "matchesPattern",
        "matchesPrefix",
        "matchesStorageClass",
        "matchesSuffix",
        "noncurrentTimeBefore",
        "numNewerVersions"
      ]
    },
    "google-native:storage/v1:BucketLifecycleRuleItemResponse": {
      "properties": {
        "action": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycleRuleItemActionResponse",
          "description": "The action to take."
        },
        "condition": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycleRuleItemConditionResponse",
          "description": "The condition(s) under which the action will be taken."
        }
      },
      "type": "object",
      "required": [
        "action",
        "condition"
      ]
    },
    "google-native:storage/v1:BucketLogging": {
      "description": "The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.",
      "properties": {
        "logBucket": {
          "type": "string",
          "description": "The destination bucket where the current bucket's logs should be placed."
        },
        "logObjectPrefix": {
          "type": "string",
          "description": "A prefix for log object names."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketLoggingResponse": {
      "description": "The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.",
      "properties": {
        "logBucket": {
          "type": "string",
          "description": "The destination bucket where the current bucket's logs should be placed."
        },
        "logObjectPrefix": {
          "type": "string",
          "description": "A prefix for log object names."
        }
      },
      "type": "object",
      "required": [
        "logBucket",
        "logObjectPrefix"
      ]
    },
    "google-native:storage/v1:BucketObjectCustomerEncryption": {
      "description": "Metadata of customer-supplied encryption key, if the object is encrypted by such a key.",
      "properties": {
        "encryptionAlgorithm": {
          "type": "string",
          "description": "The encryption algorithm."
        },
        "keySha256": {
          "type": "string",
          "description": "SHA256 hash value of the encryption key."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketObjectCustomerEncryptionResponse": {
      "description": "Metadata of customer-supplied encryption key, if the object is encrypted by such a key.",
      "properties": {
        "encryptionAlgorithm": {
          "type": "string",
          "description": "The encryption algorithm."
        },
        "keySha256": {
          "type": "string",
          "description": "SHA256 hash value of the encryption key."
        }
      },
      "type": "object",
      "required": [
        "encryptionAlgorithm",
        "keySha256"
      ]
    },
    "google-native:storage/v1:BucketObjectOwner": {
      "description": "The owner of the object. This will always be the uploader of the object.",
      "properties": {
        "entity": {
          "type": "string",
          "description": "The entity, in the form user-userId."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketObjectOwnerResponse": {
      "description": "The owner of the object. This will always be the uploader of the object.",
      "properties": {
        "entity": {
          "type": "string",
          "description": "The entity, in the form user-userId."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity."
        }
      },
      "type": "object",
      "required": [
        "entity",
        "entityId"
      ]
    },
    "google-native:storage/v1:BucketObjectRetention": {
      "description": "A collection of object level retention parameters.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "The bucket's object retention mode, can only be Unlocked or Locked."
        },
        "retainUntilTime": {
          "type": "string",
          "description": "A time in RFC 3339 format until which object retention protects this object."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketObjectRetentionResponse": {
      "description": "A collection of object level retention parameters.",
      "properties": {
        "mode": {
          "type": "string",
          "description": "The bucket's object retention mode, can only be Unlocked or Locked."
        },
        "retainUntilTime": {
          "type": "string",
          "description": "A time in RFC 3339 format until which object retention protects this object."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "retainUntilTime"
      ]
    },
    "google-native:storage/v1:BucketOwner": {
      "description": "The owner of the bucket. This is always the project team's owner group.",
      "properties": {
        "entity": {
          "type": "string",
          "description": "The entity, in the form project-owner-projectId."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketOwnerResponse": {
      "description": "The owner of the bucket. This is always the project team's owner group.",
      "properties": {
        "entity": {
          "type": "string",
          "description": "The entity, in the form project-owner-projectId."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity."
        }
      },
      "type": "object",
      "required": [
        "entity",
        "entityId"
      ]
    },
    "google-native:storage/v1:BucketRetentionPolicy": {
      "description": "The bucket's retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.",
      "properties": {
        "effectiveTime": {
          "type": "string",
          "description": "Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format."
        },
        "isLocked": {
          "type": "boolean",
          "description": "Once locked, an object retention policy cannot be modified."
        },
        "retentionPeriod": {
          "type": "string",
          "description": "The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketRetentionPolicyResponse": {
      "description": "The bucket's retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.",
      "properties": {
        "effectiveTime": {
          "type": "string",
          "description": "Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format."
        },
        "isLocked": {
          "type": "boolean",
          "description": "Once locked, an object retention policy cannot be modified."
        },
        "retentionPeriod": {
          "type": "string",
          "description": "The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes."
        }
      },
      "type": "object",
      "required": [
        "effectiveTime",
        "isLocked",
        "retentionPeriod"
      ]
    },
    "google-native:storage/v1:BucketSoftDeletePolicy": {
      "description": "The bucket's soft delete policy, which defines the period of time that soft-deleted objects will be retained, and cannot be permanently deleted.",
      "properties": {
        "effectiveTime": {
          "type": "string",
          "description": "Server-determined value that indicates the time from which the policy, or one with a greater retention, was effective. This value is in RFC 3339 format."
        },
        "retentionDurationSeconds": {
          "type": "string",
          "description": "The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketSoftDeletePolicyResponse": {
      "description": "The bucket's soft delete policy, which defines the period of time that soft-deleted objects will be retained, and cannot be permanently deleted.",
      "properties": {
        "effectiveTime": {
          "type": "string",
          "description": "Server-determined value that indicates the time from which the policy, or one with a greater retention, was effective. This value is in RFC 3339 format."
        },
        "retentionDurationSeconds": {
          "type": "string",
          "description": "The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted."
        }
      },
      "type": "object",
      "required": [
        "effectiveTime",
        "retentionDurationSeconds"
      ]
    },
    "google-native:storage/v1:BucketVersioning": {
      "description": "The bucket's versioning configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "While set to true, versioning is fully enabled for this bucket."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketVersioningResponse": {
      "description": "The bucket's versioning configuration.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "While set to true, versioning is fully enabled for this bucket."
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "google-native:storage/v1:BucketWebsite": {
      "description": "The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.",
      "properties": {
        "mainPageSuffix": {
          "type": "string",
          "description": "If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages."
        },
        "notFoundPage": {
          "type": "string",
          "description": "If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:BucketWebsiteResponse": {
      "description": "The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.",
      "properties": {
        "mainPageSuffix": {
          "type": "string",
          "description": "If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages."
        },
        "notFoundPage": {
          "type": "string",
          "description": "If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result."
        }
      },
      "type": "object",
      "required": [
        "mainPageSuffix",
        "notFoundPage"
      ]
    },
    "google-native:storage/v1:DefaultObjectAccessControlProjectTeam": {
      "description": "The project team associated with the entity, if any.",
      "properties": {
        "projectNumber": {
          "type": "string",
          "description": "The project number."
        },
        "team": {
          "type": "string",
          "description": "The team."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:DefaultObjectAccessControlProjectTeamResponse": {
      "description": "The project team associated with the entity, if any.",
      "properties": {
        "projectNumber": {
          "type": "string",
          "description": "The project number."
        },
        "team": {
          "type": "string",
          "description": "The team."
        }
      },
      "type": "object",
      "required": [
        "projectNumber",
        "team"
      ]
    },
    "google-native:storage/v1:Expr": {
      "description": "Represents an expression text. Example: title: \"User account presence\" description: \"Determines whether the request has a user account\" expression: \"size(request.user) > 0\"",
      "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."
        },
        "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."
        },
        "location": {
          "type": "string",
          "description": "An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file."
        },
        "title": {
          "type": "string",
          "description": "An 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."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:ExprResponse": {
      "description": "Represents an expression text. Example: title: \"User account presence\" description: \"Determines whether the request has a user account\" expression: \"size(request.user) > 0\"",
      "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."
        },
        "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."
        },
        "location": {
          "type": "string",
          "description": "An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file."
        },
        "title": {
          "type": "string",
          "description": "An 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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:storage/v1:ManagedFolderIamPolicyBindingsItem": {
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:storage%2Fv1:Expr",
          "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:ManagedFolderIamPolicyBindingsItemResponse": {
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:storage%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:storage/v1:ObjectAccessControl": {
      "description": "An access-control entry.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "generation": {
          "type": "string",
          "description": "The content generation of the object, if applied to an object."
        },
        "id": {
          "type": "string",
          "description": "The ID of the access-control entry."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For object access control entries, this is always storage#objectAccessControl."
        },
        "object": {
          "type": "string",
          "description": "The name of the object, if applied to an object."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlProjectTeam",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:ObjectAccessControlProjectTeam": {
      "description": "The project team associated with the entity, if any.",
      "properties": {
        "projectNumber": {
          "type": "string",
          "description": "The project number."
        },
        "team": {
          "type": "string",
          "description": "The team."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:ObjectAccessControlProjectTeamResponse": {
      "description": "The project team associated with the entity, if any.",
      "properties": {
        "projectNumber": {
          "type": "string",
          "description": "The project number."
        },
        "team": {
          "type": "string",
          "description": "The team."
        }
      },
      "type": "object",
      "required": [
        "projectNumber",
        "team"
      ]
    },
    "google-native:storage/v1:ObjectAccessControlResponse": {
      "description": "An access-control entry.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "generation": {
          "type": "string",
          "description": "The content generation of the object, if applied to an object."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For object access control entries, this is always storage#objectAccessControl."
        },
        "object": {
          "type": "string",
          "description": "The name of the object, if applied to an object."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlProjectTeamResponse",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "domain",
        "email",
        "entity",
        "entityId",
        "etag",
        "generation",
        "kind",
        "object",
        "projectTeam",
        "role",
        "selfLink"
      ]
    },
    "google-native:storage/v1:ObjectIamPolicyBindingsItem": {
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:storage%2Fv1:Expr",
          "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object"
    },
    "google-native:storage/v1:ObjectIamPolicyBindingsItemResponse": {
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:storage%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:storagetransfer/v1:AwsAccessKey": {
      "description": "AWS access key (see [AWS Security Credentials](https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)). For information on our data retention policy for user credentials, see [User credentials](/storage-transfer/docs/data-retention#user-credentials).",
      "properties": {
        "accessKeyId": {
          "type": "string",
          "description": "AWS access key ID."
        },
        "secretAccessKey": {
          "type": "string",
          "description": "AWS secret access key. This field is not returned in RPC responses."
        }
      },
      "type": "object",
      "required": [
        "accessKeyId",
        "secretAccessKey"
      ]
    },
    "google-native:storagetransfer/v1:AwsAccessKeyResponse": {
      "description": "AWS access key (see [AWS Security Credentials](https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)). For information on our data retention policy for user credentials, see [User credentials](/storage-transfer/docs/data-retention#user-credentials).",
      "properties": {
        "accessKeyId": {
          "type": "string",
          "description": "AWS access key ID."
        },
        "secretAccessKey": {
          "type": "string",
          "description": "AWS secret access key. This field is not returned in RPC responses."
        }
      },
      "type": "object",
      "required": [
        "accessKeyId",
        "secretAccessKey"
      ]
    },
    "google-native:storagetransfer/v1:AwsS3CompatibleData": {
      "description": "An AwsS3CompatibleData resource.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Specifies the name of the bucket."
        },
        "endpoint": {
          "type": "string",
          "description": "Specifies the endpoint of the storage service."
        },
        "path": {
          "type": "string",
          "description": "Specifies the root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'."
        },
        "region": {
          "type": "string",
          "description": "Specifies the region to sign requests with. This can be left blank if requests should be signed with an empty region."
        },
        "s3Metadata": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:S3CompatibleMetadata",
          "description": "A S3 compatible metadata."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "endpoint"
      ]
    },
    "google-native:storagetransfer/v1:AwsS3CompatibleDataResponse": {
      "description": "An AwsS3CompatibleData resource.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Specifies the name of the bucket."
        },
        "endpoint": {
          "type": "string",
          "description": "Specifies the endpoint of the storage service."
        },
        "path": {
          "type": "string",
          "description": "Specifies the root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'."
        },
        "region": {
          "type": "string",
          "description": "Specifies the region to sign requests with. This can be left blank if requests should be signed with an empty region."
        },
        "s3Metadata": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:S3CompatibleMetadataResponse",
          "description": "A S3 compatible metadata."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "endpoint",
        "path",
        "region",
        "s3Metadata"
      ]
    },
    "google-native:storagetransfer/v1:AwsS3Data": {
      "description": "An AwsS3Data resource can be a data source, but not a data sink. In an AwsS3Data resource, an object's name is the S3 object's key name.",
      "properties": {
        "awsAccessKey": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AwsAccessKey",
          "description": "Input only. AWS access key used to sign the API requests to the AWS S3 bucket. Permissions on the bucket must be granted to the access ID of the AWS access key. For information on our data retention policy for user credentials, see [User credentials](/storage-transfer/docs/data-retention#user-credentials)."
        },
        "bucketName": {
          "type": "string",
          "description": "S3 Bucket name (see [Creating a bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/create-bucket-get-location-example.html))."
        },
        "cloudfrontDomain": {
          "type": "string",
          "description": "Optional. Cloudfront domain name pointing to this bucket (as origin), to use when fetching. Format: `https://{id}.cloudfront.net` or any valid custom domain `https://...`"
        },
        "credentialsSecret": {
          "type": "string",
          "description": "Optional. The Resource name of a secret in Secret Manager. The Azure SAS token must be stored in Secret Manager in JSON format: { \"sas_token\" : \"SAS_TOKEN\" } GoogleServiceAccount must be granted `roles/secretmanager.secretAccessor` for the resource. See [Configure access to a source: Microsoft Azure Blob Storage] (https://cloud.google.com/storage-transfer/docs/source-microsoft-azure#secret_manager) for more information. If `credentials_secret` is specified, do not specify azure_credentials. This feature is in [preview](https://cloud.google.com/terms/service-terms#1). Format: `projects/{project_number}/secrets/{secret_name}`"
        },
        "path": {
          "type": "string",
          "description": "Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'."
        },
        "roleArn": {
          "type": "string",
          "description": "The Amazon Resource Name (ARN) of the role to support temporary credentials via `AssumeRoleWithWebIdentity`. For more information about ARNs, see [IAM ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns). When a role ARN is provided, Transfer Service fetches temporary credentials for the session using a `AssumeRoleWithWebIdentity` call for the provided role using the GoogleServiceAccount for this project."
        }
      },
      "type": "object",
      "required": [
        "bucketName"
      ]
    },
    "google-native:storagetransfer/v1:AwsS3DataResponse": {
      "description": "An AwsS3Data resource can be a data source, but not a data sink. In an AwsS3Data resource, an object's name is the S3 object's key name.",
      "properties": {
        "awsAccessKey": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AwsAccessKeyResponse",
          "description": "Input only. AWS access key used to sign the API requests to the AWS S3 bucket. Permissions on the bucket must be granted to the access ID of the AWS access key. For information on our data retention policy for user credentials, see [User credentials](/storage-transfer/docs/data-retention#user-credentials)."
        },
        "bucketName": {
          "type": "string",
          "description": "S3 Bucket name (see [Creating a bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/create-bucket-get-location-example.html))."
        },
        "cloudfrontDomain": {
          "type": "string",
          "description": "Optional. Cloudfront domain name pointing to this bucket (as origin), to use when fetching. Format: `https://{id}.cloudfront.net` or any valid custom domain `https://...`"
        },
        "credentialsSecret": {
          "type": "string",
          "description": "Optional. The Resource name of a secret in Secret Manager. The Azure SAS token must be stored in Secret Manager in JSON format: { \"sas_token\" : \"SAS_TOKEN\" } GoogleServiceAccount must be granted `roles/secretmanager.secretAccessor` for the resource. See [Configure access to a source: Microsoft Azure Blob Storage] (https://cloud.google.com/storage-transfer/docs/source-microsoft-azure#secret_manager) for more information. If `credentials_secret` is specified, do not specify azure_credentials. This feature is in [preview](https://cloud.google.com/terms/service-terms#1). Format: `projects/{project_number}/secrets/{secret_name}`"
        },
        "path": {
          "type": "string",
          "description": "Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'."
        },
        "roleArn": {
          "type": "string",
          "description": "The Amazon Resource Name (ARN) of the role to support temporary credentials via `AssumeRoleWithWebIdentity`. For more information about ARNs, see [IAM ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns). When a role ARN is provided, Transfer Service fetches temporary credentials for the session using a `AssumeRoleWithWebIdentity` call for the provided role using the GoogleServiceAccount for this project."
        }
      },
      "type": "object",
      "required": [
        "awsAccessKey",
        "bucketName",
        "cloudfrontDomain",
        "credentialsSecret",
        "path",
        "roleArn"
      ]
    },
    "google-native:storagetransfer/v1:AzureBlobStorageData": {
      "description": "An AzureBlobStorageData resource can be a data source, but not a data sink. An AzureBlobStorageData resource represents one Azure container. The storage account determines the [Azure endpoint](https://docs.microsoft.com/en-us/azure/storage/common/storage-create-storage-account#storage-account-endpoints). In an AzureBlobStorageData resource, a blobs's name is the [Azure Blob Storage blob's key name](https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#blob-names).",
      "properties": {
        "azureCredentials": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AzureCredentials",
          "description": "Input only. Credentials used to authenticate API requests to Azure. For information on our data retention policy for user credentials, see [User credentials](/storage-transfer/docs/data-retention#user-credentials)."
        },
        "container": {
          "type": "string",
          "description": "The container to transfer from the Azure Storage account."
        },
        "credentialsSecret": {
          "type": "string",
          "description": "Optional. The Resource name of a secret in Secret Manager. The Azure SAS token must be stored in Secret Manager in JSON format: { \"sas_token\" : \"SAS_TOKEN\" } GoogleServiceAccount must be granted `roles/secretmanager.secretAccessor` for the resource. See [Configure access to a source: Microsoft Azure Blob Storage] (https://cloud.google.com/storage-transfer/docs/source-microsoft-azure#secret_manager) for more information. If `credentials_secret` is specified, do not specify azure_credentials. This feature is in [preview](https://cloud.google.com/terms/service-terms#1). Format: `projects/{project_number}/secrets/{secret_name}`"
        },
        "path": {
          "type": "string",
          "description": "Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'."
        },
        "storageAccount": {
          "type": "string",
          "description": "The name of the Azure Storage account."
        }
      },
      "type": "object",
      "required": [
        "azureCredentials",
        "container",
        "storageAccount"
      ]
    },
    "google-native:storagetransfer/v1:AzureBlobStorageDataResponse": {
      "description": "An AzureBlobStorageData resource can be a data source, but not a data sink. An AzureBlobStorageData resource represents one Azure container. The storage account determines the [Azure endpoint](https://docs.microsoft.com/en-us/azure/storage/common/storage-create-storage-account#storage-account-endpoints). In an AzureBlobStorageData resource, a blobs's name is the [Azure Blob Storage blob's key name](https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#blob-names).",
      "properties": {
        "azureCredentials": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AzureCredentialsResponse",
          "description": "Input only. Credentials used to authenticate API requests to Azure. For information on our data retention policy for user credentials, see [User credentials](/storage-transfer/docs/data-retention#user-credentials)."
        },
        "container": {
          "type": "string",
          "description": "The container to transfer from the Azure Storage account."
        },
        "credentialsSecret": {
          "type": "string",
          "description": "Optional. The Resource name of a secret in Secret Manager. The Azure SAS token must be stored in Secret Manager in JSON format: { \"sas_token\" : \"SAS_TOKEN\" } GoogleServiceAccount must be granted `roles/secretmanager.secretAccessor` for the resource. See [Configure access to a source: Microsoft Azure Blob Storage] (https://cloud.google.com/storage-transfer/docs/source-microsoft-azure#secret_manager) for more information. If `credentials_secret` is specified, do not specify azure_credentials. This feature is in [preview](https://cloud.google.com/terms/service-terms#1). Format: `projects/{project_number}/secrets/{secret_name}`"
        },
        "path": {
          "type": "string",
          "description": "Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'."
        },
        "storageAccount": {
          "type": "string",
          "description": "The name of the Azure Storage account."
        }
      },
      "type": "object",
      "required": [
        "azureCredentials",
        "container",
        "credentialsSecret",
        "path",
        "storageAccount"
      ]
    },
    "google-native:storagetransfer/v1:AzureCredentials": {
      "description": "Azure credentials For information on our data retention policy for user credentials, see [User credentials](/storage-transfer/docs/data-retention#user-credentials).",
      "properties": {
        "sasToken": {
          "type": "string",
          "description": "Azure shared access signature (SAS). For more information about SAS, see [Grant limited access to Azure Storage resources using shared access signatures (SAS)](https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview)."
        }
      },
      "type": "object",
      "required": [
        "sasToken"
      ]
    },
    "google-native:storagetransfer/v1:AzureCredentialsResponse": {
      "description": "Azure credentials For information on our data retention policy for user credentials, see [User credentials](/storage-transfer/docs/data-retention#user-credentials).",
      "properties": {
        "sasToken": {
          "type": "string",
          "description": "Azure shared access signature (SAS). For more information about SAS, see [Grant limited access to Azure Storage resources using shared access signatures (SAS)](https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview)."
        }
      },
      "type": "object",
      "required": [
        "sasToken"
      ]
    },
    "google-native:storagetransfer/v1:BandwidthLimit": {
      "description": "Specifies a bandwidth limit for an agent pool.",
      "properties": {
        "limitMbps": {
          "type": "string",
          "description": "Bandwidth rate in megabytes per second, distributed across all the agents in the pool."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:BandwidthLimitResponse": {
      "description": "Specifies a bandwidth limit for an agent pool.",
      "properties": {
        "limitMbps": {
          "type": "string",
          "description": "Bandwidth rate in megabytes per second, distributed across all the agents in the pool."
        }
      },
      "type": "object",
      "required": [
        "limitMbps"
      ]
    },
    "google-native:storagetransfer/v1:Date": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:DateResponse": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "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."
        },
        "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."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        }
      },
      "type": "object",
      "required": [
        "day",
        "month",
        "year"
      ]
    },
    "google-native:storagetransfer/v1:EventStream": {
      "description": "Specifies the Event-driven transfer options. Event-driven transfers listen to an event stream to transfer updated files.",
      "properties": {
        "eventStreamExpirationTime": {
          "type": "string",
          "description": "Specifies the data and time at which Storage Transfer Service stops listening for events from this stream. After this time, any transfers in progress will complete, but no new transfers are initiated."
        },
        "eventStreamStartTime": {
          "type": "string",
          "description": "Specifies the date and time that Storage Transfer Service starts listening for events from this stream. If no start time is specified or start time is in the past, Storage Transfer Service starts listening immediately."
        },
        "name": {
          "type": "string",
          "description": "Specifies a unique name of the resource such as AWS SQS ARN in the form 'arn:aws:sqs:region:account_id:queue_name', or Pub/Sub subscription resource name in the form 'projects/{project}/subscriptions/{sub}'."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:storagetransfer/v1:EventStreamResponse": {
      "description": "Specifies the Event-driven transfer options. Event-driven transfers listen to an event stream to transfer updated files.",
      "properties": {
        "eventStreamExpirationTime": {
          "type": "string",
          "description": "Specifies the data and time at which Storage Transfer Service stops listening for events from this stream. After this time, any transfers in progress will complete, but no new transfers are initiated."
        },
        "eventStreamStartTime": {
          "type": "string",
          "description": "Specifies the date and time that Storage Transfer Service starts listening for events from this stream. If no start time is specified or start time is in the past, Storage Transfer Service starts listening immediately."
        },
        "name": {
          "type": "string",
          "description": "Specifies a unique name of the resource such as AWS SQS ARN in the form 'arn:aws:sqs:region:account_id:queue_name', or Pub/Sub subscription resource name in the form 'projects/{project}/subscriptions/{sub}'."
        }
      },
      "type": "object",
      "required": [
        "eventStreamExpirationTime",
        "eventStreamStartTime",
        "name"
      ]
    },
    "google-native:storagetransfer/v1:GcsData": {
      "description": "In a GcsData resource, an object's name is the Cloud Storage object's name and its \"last modification time\" refers to the object's `updated` property of Cloud Storage objects, which changes when the content or the metadata of the object is updated.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name. Must meet [Bucket Name Requirements](/storage/docs/naming#requirements)."
        },
        "path": {
          "type": "string",
          "description": "Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'. The root path value must meet [Object Name Requirements](/storage/docs/naming#objectnames)."
        }
      },
      "type": "object",
      "required": [
        "bucketName"
      ]
    },
    "google-native:storagetransfer/v1:GcsDataResponse": {
      "description": "In a GcsData resource, an object's name is the Cloud Storage object's name and its \"last modification time\" refers to the object's `updated` property of Cloud Storage objects, which changes when the content or the metadata of the object is updated.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name. Must meet [Bucket Name Requirements](/storage/docs/naming#requirements)."
        },
        "path": {
          "type": "string",
          "description": "Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'. The root path value must meet [Object Name Requirements](/storage/docs/naming#objectnames)."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "path"
      ]
    },
    "google-native:storagetransfer/v1:HttpData": {
      "description": "An HttpData resource specifies a list of objects on the web to be transferred over HTTP. The information of the objects to be transferred is contained in a file referenced by a URL. The first line in the file must be `\"TsvHttpData-1.0\"`, which specifies the format of the file. Subsequent lines specify the information of the list of objects, one object per list entry. Each entry has the following tab-delimited fields: * **HTTP URL** — The location of the object. * **Length** — The size of the object in bytes. * **MD5** — The base64-encoded MD5 hash of the object. For an example of a valid TSV file, see [Transferring data from URLs](https://cloud.google.com/storage-transfer/docs/create-url-list). When transferring data based on a URL list, keep the following in mind: * When an object located at `http(s)://hostname:port/` is transferred to a data sink, the name of the object at the data sink is `/`. * If the specified size of an object does not match the actual size of the object fetched, the object is not transferred. * If the specified MD5 does not match the MD5 computed from the transferred bytes, the object transfer fails. * Ensure that each URL you specify is publicly accessible. For example, in Cloud Storage you can [share an object publicly] (/storage/docs/cloud-console#_sharingdata) and get a link to it. * Storage Transfer Service obeys `robots.txt` rules and requires the source HTTP server to support `Range` requests and to return a `Content-Length` header in each response. * ObjectConditions have no effect when filtering objects to transfer.",
      "properties": {
        "listUrl": {
          "type": "string",
          "description": "The URL that points to the file that stores the object list entries. This file must allow public access. Currently, only URLs with HTTP and HTTPS schemes are supported."
        }
      },
      "type": "object",
      "required": [
        "listUrl"
      ]
    },
    "google-native:storagetransfer/v1:HttpDataResponse": {
      "description": "An HttpData resource specifies a list of objects on the web to be transferred over HTTP. The information of the objects to be transferred is contained in a file referenced by a URL. The first line in the file must be `\"TsvHttpData-1.0\"`, which specifies the format of the file. Subsequent lines specify the information of the list of objects, one object per list entry. Each entry has the following tab-delimited fields: * **HTTP URL** — The location of the object. * **Length** — The size of the object in bytes. * **MD5** — The base64-encoded MD5 hash of the object. For an example of a valid TSV file, see [Transferring data from URLs](https://cloud.google.com/storage-transfer/docs/create-url-list). When transferring data based on a URL list, keep the following in mind: * When an object located at `http(s)://hostname:port/` is transferred to a data sink, the name of the object at the data sink is `/`. * If the specified size of an object does not match the actual size of the object fetched, the object is not transferred. * If the specified MD5 does not match the MD5 computed from the transferred bytes, the object transfer fails. * Ensure that each URL you specify is publicly accessible. For example, in Cloud Storage you can [share an object publicly] (/storage/docs/cloud-console#_sharingdata) and get a link to it. * Storage Transfer Service obeys `robots.txt` rules and requires the source HTTP server to support `Range` requests and to return a `Content-Length` header in each response. * ObjectConditions have no effect when filtering objects to transfer.",
      "properties": {
        "listUrl": {
          "type": "string",
          "description": "The URL that points to the file that stores the object list entries. This file must allow public access. Currently, only URLs with HTTP and HTTPS schemes are supported."
        }
      },
      "type": "object",
      "required": [
        "listUrl"
      ]
    },
    "google-native:storagetransfer/v1:LoggingConfig": {
      "description": "Specifies the logging behavior for transfer operations. For cloud-to-cloud transfers, logs are sent to Cloud Logging. See [Read transfer logs](https://cloud.google.com/storage-transfer/docs/read-transfer-logs) for details. For transfers to or from a POSIX file system, logs are stored in the Cloud Storage bucket that is the source or sink of the transfer. See [Managing Transfer for on-premises jobs] (https://cloud.google.com/storage-transfer/docs/managing-on-prem-jobs#viewing-logs) for details.",
      "properties": {
        "enableOnpremGcsTransferLogs": {
          "type": "boolean",
          "description": "For transfers with a PosixFilesystem source, this option enables the Cloud Storage transfer logs for this transfer."
        },
        "logActionStates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:LoggingConfigLogActionStatesItem"
          },
          "description": "States in which `log_actions` are logged. If empty, no logs are generated. Not supported for transfers with PosixFilesystem data sources; use enable_onprem_gcs_transfer_logs instead."
        },
        "logActions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:LoggingConfigLogActionsItem"
          },
          "description": "Specifies the actions to be logged. If empty, no logs are generated. Not supported for transfers with PosixFilesystem data sources; use enable_onprem_gcs_transfer_logs instead."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:LoggingConfigLogActionStatesItem": {
      "type": "string",
      "enum": [
        {
          "name": "LoggableActionStateUnspecified",
          "description": "Default value. This value is unused.",
          "value": "LOGGABLE_ACTION_STATE_UNSPECIFIED"
        },
        {
          "name": "Succeeded",
          "description": "`LoggableAction` completed successfully. `SUCCEEDED` actions are logged as INFO.",
          "value": "SUCCEEDED"
        },
        {
          "name": "Failed",
          "description": "`LoggableAction` terminated in an error state. `FAILED` actions are logged as ERROR.",
          "value": "FAILED"
        }
      ]
    },
    "google-native:storagetransfer/v1:LoggingConfigLogActionsItem": {
      "type": "string",
      "enum": [
        {
          "name": "LoggableActionUnspecified",
          "description": "Default value. This value is unused.",
          "value": "LOGGABLE_ACTION_UNSPECIFIED"
        },
        {
          "name": "Find",
          "description": "Listing objects in a bucket.",
          "value": "FIND"
        },
        {
          "name": "Delete",
          "description": "Deleting objects at the source or the destination.",
          "value": "DELETE"
        },
        {
          "name": "Copy",
          "description": "Copying objects to Google Cloud Storage.",
          "value": "COPY"
        }
      ]
    },
    "google-native:storagetransfer/v1:LoggingConfigResponse": {
      "description": "Specifies the logging behavior for transfer operations. For cloud-to-cloud transfers, logs are sent to Cloud Logging. See [Read transfer logs](https://cloud.google.com/storage-transfer/docs/read-transfer-logs) for details. For transfers to or from a POSIX file system, logs are stored in the Cloud Storage bucket that is the source or sink of the transfer. See [Managing Transfer for on-premises jobs] (https://cloud.google.com/storage-transfer/docs/managing-on-prem-jobs#viewing-logs) for details.",
      "properties": {
        "enableOnpremGcsTransferLogs": {
          "type": "boolean",
          "description": "For transfers with a PosixFilesystem source, this option enables the Cloud Storage transfer logs for this transfer."
        },
        "logActionStates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "States in which `log_actions` are logged. If empty, no logs are generated. Not supported for transfers with PosixFilesystem data sources; use enable_onprem_gcs_transfer_logs instead."
        },
        "logActions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the actions to be logged. If empty, no logs are generated. Not supported for transfers with PosixFilesystem data sources; use enable_onprem_gcs_transfer_logs instead."
        }
      },
      "type": "object",
      "required": [
        "enableOnpremGcsTransferLogs",
        "logActionStates",
        "logActions"
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptions": {
      "description": "Specifies the metadata options for running a transfer.",
      "properties": {
        "acl": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsAcl",
          "description": "Specifies how each object's ACLs should be preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as ACL_DESTINATION_BUCKET_DEFAULT."
        },
        "gid": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsGid",
          "description": "Specifies how each file's POSIX group ID (GID) attribute should be handled by the transfer. By default, GID is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers."
        },
        "kmsKey": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsKmsKey",
          "description": "Specifies how each object's Cloud KMS customer-managed encryption key (CMEK) is preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as KMS_KEY_DESTINATION_BUCKET_DEFAULT."
        },
        "mode": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsMode",
          "description": "Specifies how each file's mode attribute should be handled by the transfer. By default, mode is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers."
        },
        "storageClass": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsStorageClass",
          "description": "Specifies the storage class to set on objects being transferred to Google Cloud Storage buckets. If unspecified, the default behavior is the same as STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT."
        },
        "symlink": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsSymlink",
          "description": "Specifies how symlinks should be handled by the transfer. By default, symlinks are not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers."
        },
        "temporaryHold": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsTemporaryHold",
          "description": "Specifies how each object's temporary hold status should be preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as TEMPORARY_HOLD_PRESERVE."
        },
        "timeCreated": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsTimeCreated",
          "description": "Specifies how each object's `timeCreated` metadata is preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as TIME_CREATED_SKIP."
        },
        "uid": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsUid",
          "description": "Specifies how each file's POSIX user ID (UID) attribute should be handled by the transfer. By default, UID is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:MetadataOptionsAcl": {
      "description": "Specifies how each object's ACLs should be preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as ACL_DESTINATION_BUCKET_DEFAULT.",
      "type": "string",
      "enum": [
        {
          "name": "AclUnspecified",
          "description": "ACL behavior is unspecified.",
          "value": "ACL_UNSPECIFIED"
        },
        {
          "name": "AclDestinationBucketDefault",
          "description": "Use the destination bucket's default object ACLS, if applicable.",
          "value": "ACL_DESTINATION_BUCKET_DEFAULT"
        },
        {
          "name": "AclPreserve",
          "description": "Preserve the object's original ACLs. This requires the service account to have `storage.objects.getIamPolicy` permission for the source object. [Uniform bucket-level access](https://cloud.google.com/storage/docs/uniform-bucket-level-access) must not be enabled on either the source or destination buckets.",
          "value": "ACL_PRESERVE"
        }
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsGid": {
      "description": "Specifies how each file's POSIX group ID (GID) attribute should be handled by the transfer. By default, GID is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers.",
      "type": "string",
      "enum": [
        {
          "name": "GidUnspecified",
          "description": "GID behavior is unspecified.",
          "value": "GID_UNSPECIFIED"
        },
        {
          "name": "GidSkip",
          "description": "Do not preserve GID during a transfer job.",
          "value": "GID_SKIP"
        },
        {
          "name": "GidNumber",
          "description": "Preserve GID during a transfer job.",
          "value": "GID_NUMBER"
        }
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsKmsKey": {
      "description": "Specifies how each object's Cloud KMS customer-managed encryption key (CMEK) is preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as KMS_KEY_DESTINATION_BUCKET_DEFAULT.",
      "type": "string",
      "enum": [
        {
          "name": "KmsKeyUnspecified",
          "description": "KmsKey behavior is unspecified.",
          "value": "KMS_KEY_UNSPECIFIED"
        },
        {
          "name": "KmsKeyDestinationBucketDefault",
          "description": "Use the destination bucket's default encryption settings.",
          "value": "KMS_KEY_DESTINATION_BUCKET_DEFAULT"
        },
        {
          "name": "KmsKeyPreserve",
          "description": "Preserve the object's original Cloud KMS customer-managed encryption key (CMEK) if present. Objects that do not use a Cloud KMS encryption key will be encrypted using the destination bucket's encryption settings.",
          "value": "KMS_KEY_PRESERVE"
        }
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsMode": {
      "description": "Specifies how each file's mode attribute should be handled by the transfer. By default, mode is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers.",
      "type": "string",
      "enum": [
        {
          "name": "ModeUnspecified",
          "description": "Mode behavior is unspecified.",
          "value": "MODE_UNSPECIFIED"
        },
        {
          "name": "ModeSkip",
          "description": "Do not preserve mode during a transfer job.",
          "value": "MODE_SKIP"
        },
        {
          "name": "ModePreserve",
          "description": "Preserve mode during a transfer job.",
          "value": "MODE_PRESERVE"
        }
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsResponse": {
      "description": "Specifies the metadata options for running a transfer.",
      "properties": {
        "acl": {
          "type": "string",
          "description": "Specifies how each object's ACLs should be preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as ACL_DESTINATION_BUCKET_DEFAULT."
        },
        "gid": {
          "type": "string",
          "description": "Specifies how each file's POSIX group ID (GID) attribute should be handled by the transfer. By default, GID is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers."
        },
        "kmsKey": {
          "type": "string",
          "description": "Specifies how each object's Cloud KMS customer-managed encryption key (CMEK) is preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as KMS_KEY_DESTINATION_BUCKET_DEFAULT."
        },
        "mode": {
          "type": "string",
          "description": "Specifies how each file's mode attribute should be handled by the transfer. By default, mode is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers."
        },
        "storageClass": {
          "type": "string",
          "description": "Specifies the storage class to set on objects being transferred to Google Cloud Storage buckets. If unspecified, the default behavior is the same as STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT."
        },
        "symlink": {
          "type": "string",
          "description": "Specifies how symlinks should be handled by the transfer. By default, symlinks are not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers."
        },
        "temporaryHold": {
          "type": "string",
          "description": "Specifies how each object's temporary hold status should be preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as TEMPORARY_HOLD_PRESERVE."
        },
        "timeCreated": {
          "type": "string",
          "description": "Specifies how each object's `timeCreated` metadata is preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as TIME_CREATED_SKIP."
        },
        "uid": {
          "type": "string",
          "description": "Specifies how each file's POSIX user ID (UID) attribute should be handled by the transfer. By default, UID is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers."
        }
      },
      "type": "object",
      "required": [
        "acl",
        "gid",
        "kmsKey",
        "mode",
        "storageClass",
        "symlink",
        "temporaryHold",
        "timeCreated",
        "uid"
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsStorageClass": {
      "description": "Specifies the storage class to set on objects being transferred to Google Cloud Storage buckets. If unspecified, the default behavior is the same as STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT.",
      "type": "string",
      "enum": [
        {
          "name": "StorageClassUnspecified",
          "description": "Storage class behavior is unspecified.",
          "value": "STORAGE_CLASS_UNSPECIFIED"
        },
        {
          "name": "StorageClassDestinationBucketDefault",
          "description": "Use the destination bucket's default storage class.",
          "value": "STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT"
        },
        {
          "name": "StorageClassPreserve",
          "description": "Preserve the object's original storage class. This is only supported for transfers from Google Cloud Storage buckets. REGIONAL and MULTI_REGIONAL storage classes will be mapped to STANDARD to ensure they can be written to the destination bucket.",
          "value": "STORAGE_CLASS_PRESERVE"
        },
        {
          "name": "StorageClassStandard",
          "description": "Set the storage class to STANDARD.",
          "value": "STORAGE_CLASS_STANDARD"
        },
        {
          "name": "StorageClassNearline",
          "description": "Set the storage class to NEARLINE.",
          "value": "STORAGE_CLASS_NEARLINE"
        },
        {
          "name": "StorageClassColdline",
          "description": "Set the storage class to COLDLINE.",
          "value": "STORAGE_CLASS_COLDLINE"
        },
        {
          "name": "StorageClassArchive",
          "description": "Set the storage class to ARCHIVE.",
          "value": "STORAGE_CLASS_ARCHIVE"
        }
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsSymlink": {
      "description": "Specifies how symlinks should be handled by the transfer. By default, symlinks are not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers.",
      "type": "string",
      "enum": [
        {
          "name": "SymlinkUnspecified",
          "description": "Symlink behavior is unspecified.",
          "value": "SYMLINK_UNSPECIFIED"
        },
        {
          "name": "SymlinkSkip",
          "description": "Do not preserve symlinks during a transfer job.",
          "value": "SYMLINK_SKIP"
        },
        {
          "name": "SymlinkPreserve",
          "description": "Preserve symlinks during a transfer job.",
          "value": "SYMLINK_PRESERVE"
        }
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsTemporaryHold": {
      "description": "Specifies how each object's temporary hold status should be preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as TEMPORARY_HOLD_PRESERVE.",
      "type": "string",
      "enum": [
        {
          "name": "TemporaryHoldUnspecified",
          "description": "Temporary hold behavior is unspecified.",
          "value": "TEMPORARY_HOLD_UNSPECIFIED"
        },
        {
          "name": "TemporaryHoldSkip",
          "description": "Do not set a temporary hold on the destination object.",
          "value": "TEMPORARY_HOLD_SKIP"
        },
        {
          "name": "TemporaryHoldPreserve",
          "description": "Preserve the object's original temporary hold status.",
          "value": "TEMPORARY_HOLD_PRESERVE"
        }
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsTimeCreated": {
      "description": "Specifies how each object's `timeCreated` metadata is preserved for transfers between Google Cloud Storage buckets. If unspecified, the default behavior is the same as TIME_CREATED_SKIP.",
      "type": "string",
      "enum": [
        {
          "name": "TimeCreatedUnspecified",
          "description": "TimeCreated behavior is unspecified.",
          "value": "TIME_CREATED_UNSPECIFIED"
        },
        {
          "name": "TimeCreatedSkip",
          "description": "Do not preserve the `timeCreated` metadata from the source object.",
          "value": "TIME_CREATED_SKIP"
        },
        {
          "name": "TimeCreatedPreserveAsCustomTime",
          "description": "Preserves the source object's `timeCreated` metadata in the `customTime` field in the destination object. Note that any value stored in the source object's `customTime` field will not be propagated to the destination object.",
          "value": "TIME_CREATED_PRESERVE_AS_CUSTOM_TIME"
        }
      ]
    },
    "google-native:storagetransfer/v1:MetadataOptionsUid": {
      "description": "Specifies how each file's POSIX user ID (UID) attribute should be handled by the transfer. By default, UID is not preserved. Only applicable to transfers involving POSIX file systems, and ignored for other transfers.",
      "type": "string",
      "enum": [
        {
          "name": "UidUnspecified",
          "description": "UID behavior is unspecified.",
          "value": "UID_UNSPECIFIED"
        },
        {
          "name": "UidSkip",
          "description": "Do not preserve UID during a transfer job.",
          "value": "UID_SKIP"
        },
        {
          "name": "UidNumber",
          "description": "Preserve UID during a transfer job.",
          "value": "UID_NUMBER"
        }
      ]
    },
    "google-native:storagetransfer/v1:NotificationConfig": {
      "description": "Specification to configure notifications published to Pub/Sub. Notifications are published to the customer-provided topic using the following `PubsubMessage.attributes`: * `\"eventType\"`: one of the EventType values * `\"payloadFormat\"`: one of the PayloadFormat values * `\"projectId\"`: the project_id of the `TransferOperation` * `\"transferJobName\"`: the transfer_job_name of the `TransferOperation` * `\"transferOperationName\"`: the name of the `TransferOperation` The `PubsubMessage.data` contains a TransferOperation resource formatted according to the specified `PayloadFormat`.",
      "properties": {
        "eventTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:NotificationConfigEventTypesItem"
          },
          "description": "Event types for which a notification is desired. If empty, send notifications for all event types."
        },
        "payloadFormat": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:NotificationConfigPayloadFormat",
          "description": "The desired format of the notification message payloads."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The `Topic.name` of the Pub/Sub topic to which to publish notifications. Must be of the format: `projects/{project}/topics/{topic}`. Not matching this format results in an INVALID_ARGUMENT error."
        }
      },
      "type": "object",
      "required": [
        "payloadFormat",
        "pubsubTopic"
      ]
    },
    "google-native:storagetransfer/v1:NotificationConfigEventTypesItem": {
      "type": "string",
      "enum": [
        {
          "name": "EventTypeUnspecified",
          "description": "Illegal value, to avoid allowing a default.",
          "value": "EVENT_TYPE_UNSPECIFIED"
        },
        {
          "name": "TransferOperationSuccess",
          "description": "`TransferOperation` completed with status SUCCESS.",
          "value": "TRANSFER_OPERATION_SUCCESS"
        },
        {
          "name": "TransferOperationFailed",
          "description": "`TransferOperation` completed with status FAILED.",
          "value": "TRANSFER_OPERATION_FAILED"
        },
        {
          "name": "TransferOperationAborted",
          "description": "`TransferOperation` completed with status ABORTED.",
          "value": "TRANSFER_OPERATION_ABORTED"
        }
      ]
    },
    "google-native:storagetransfer/v1:NotificationConfigPayloadFormat": {
      "description": "Required. The desired format of the notification message payloads.",
      "type": "string",
      "enum": [
        {
          "name": "PayloadFormatUnspecified",
          "description": "Illegal value, to avoid allowing a default.",
          "value": "PAYLOAD_FORMAT_UNSPECIFIED"
        },
        {
          "name": "None",
          "description": "No payload is included with the notification.",
          "value": "NONE"
        },
        {
          "name": "Json",
          "description": "`TransferOperation` is [formatted as a JSON response](https://developers.google.com/protocol-buffers/docs/proto3#json), in application/json.",
          "value": "JSON"
        }
      ]
    },
    "google-native:storagetransfer/v1:NotificationConfigResponse": {
      "description": "Specification to configure notifications published to Pub/Sub. Notifications are published to the customer-provided topic using the following `PubsubMessage.attributes`: * `\"eventType\"`: one of the EventType values * `\"payloadFormat\"`: one of the PayloadFormat values * `\"projectId\"`: the project_id of the `TransferOperation` * `\"transferJobName\"`: the transfer_job_name of the `TransferOperation` * `\"transferOperationName\"`: the name of the `TransferOperation` The `PubsubMessage.data` contains a TransferOperation resource formatted according to the specified `PayloadFormat`.",
      "properties": {
        "eventTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Event types for which a notification is desired. If empty, send notifications for all event types."
        },
        "payloadFormat": {
          "type": "string",
          "description": "The desired format of the notification message payloads."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The `Topic.name` of the Pub/Sub topic to which to publish notifications. Must be of the format: `projects/{project}/topics/{topic}`. Not matching this format results in an INVALID_ARGUMENT error."
        }
      },
      "type": "object",
      "required": [
        "eventTypes",
        "payloadFormat",
        "pubsubTopic"
      ]
    },
    "google-native:storagetransfer/v1:ObjectConditions": {
      "description": "Conditions that determine which objects are transferred. Applies only to Cloud Data Sources such as S3, Azure, and Cloud Storage. The \"last modification time\" refers to the time of the last change to the object's content or metadata — specifically, this is the `updated` property of Cloud Storage objects, the `LastModified` field of S3 objects, and the `Last-Modified` header of Azure blobs. Transfers with a PosixFilesystem source or destination don't support `ObjectConditions`.",
      "properties": {
        "excludePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If you specify `exclude_prefixes`, Storage Transfer Service uses the items in the `exclude_prefixes` array to determine which objects to exclude from a transfer. Objects must not start with one of the matching `exclude_prefixes` for inclusion in a transfer. The following are requirements of `exclude_prefixes`: * Each exclude-prefix can contain any sequence of Unicode characters, to a max length of 1024 bytes when UTF8-encoded, and must not contain Carriage Return or Line Feed characters. Wildcard matching and regular expression matching are not supported. * Each exclude-prefix must omit the leading slash. For example, to exclude the object `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the exclude-prefix as `logs/y=2015/requests.gz`. * None of the exclude-prefix values can be empty, if specified. * Each exclude-prefix must exclude a distinct portion of the object namespace. No exclude-prefix may be a prefix of another exclude-prefix. * If include_prefixes is specified, then each exclude-prefix must start with the value of a path explicitly included by `include_prefixes`. The max size of `exclude_prefixes` is 1000. For more information, see [Filtering objects from transfers](/storage-transfer/docs/filtering-objects-from-transfers)."
        },
        "includePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If you specify `include_prefixes`, Storage Transfer Service uses the items in the `include_prefixes` array to determine which objects to include in a transfer. Objects must start with one of the matching `include_prefixes` for inclusion in the transfer. If exclude_prefixes is specified, objects must not start with any of the `exclude_prefixes` specified for inclusion in the transfer. The following are requirements of `include_prefixes`: * Each include-prefix can contain any sequence of Unicode characters, to a max length of 1024 bytes when UTF8-encoded, and must not contain Carriage Return or Line Feed characters. Wildcard matching and regular expression matching are not supported. * Each include-prefix must omit the leading slash. For example, to include the object `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include-prefix as `logs/y=2015/requests.gz`. * None of the include-prefix values can be empty, if specified. * Each include-prefix must include a distinct portion of the object namespace. No include-prefix may be a prefix of another include-prefix. The max size of `include_prefixes` is 1000. For more information, see [Filtering objects from transfers](/storage-transfer/docs/filtering-objects-from-transfers)."
        },
        "lastModifiedBefore": {
          "type": "string",
          "description": "If specified, only objects with a \"last modification time\" before this timestamp and objects that don't have a \"last modification time\" are transferred."
        },
        "lastModifiedSince": {
          "type": "string",
          "description": "If specified, only objects with a \"last modification time\" on or after this timestamp and objects that don't have a \"last modification time\" are transferred. The `last_modified_since` and `last_modified_before` fields can be used together for chunked data processing. For example, consider a script that processes each day's worth of data at a time. For that you'd set each of the fields as follows: * `last_modified_since` to the start of the day * `last_modified_before` to the end of the day"
        },
        "maxTimeElapsedSinceLastModification": {
          "type": "string",
          "description": "Ensures that objects are not transferred if a specific maximum time has elapsed since the \"last modification time\". When a TransferOperation begins, objects with a \"last modification time\" are transferred only if the elapsed time between the start_time of the `TransferOperation`and the \"last modification time\" of the object is less than the value of max_time_elapsed_since_last_modification`. Objects that do not have a \"last modification time\" are also transferred."
        },
        "minTimeElapsedSinceLastModification": {
          "type": "string",
          "description": "Ensures that objects are not transferred until a specific minimum time has elapsed after the \"last modification time\". When a TransferOperation begins, objects with a \"last modification time\" are transferred only if the elapsed time between the start_time of the `TransferOperation` and the \"last modification time\" of the object is equal to or greater than the value of min_time_elapsed_since_last_modification`. Objects that do not have a \"last modification time\" are also transferred."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:ObjectConditionsResponse": {
      "description": "Conditions that determine which objects are transferred. Applies only to Cloud Data Sources such as S3, Azure, and Cloud Storage. The \"last modification time\" refers to the time of the last change to the object's content or metadata — specifically, this is the `updated` property of Cloud Storage objects, the `LastModified` field of S3 objects, and the `Last-Modified` header of Azure blobs. Transfers with a PosixFilesystem source or destination don't support `ObjectConditions`.",
      "properties": {
        "excludePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If you specify `exclude_prefixes`, Storage Transfer Service uses the items in the `exclude_prefixes` array to determine which objects to exclude from a transfer. Objects must not start with one of the matching `exclude_prefixes` for inclusion in a transfer. The following are requirements of `exclude_prefixes`: * Each exclude-prefix can contain any sequence of Unicode characters, to a max length of 1024 bytes when UTF8-encoded, and must not contain Carriage Return or Line Feed characters. Wildcard matching and regular expression matching are not supported. * Each exclude-prefix must omit the leading slash. For example, to exclude the object `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the exclude-prefix as `logs/y=2015/requests.gz`. * None of the exclude-prefix values can be empty, if specified. * Each exclude-prefix must exclude a distinct portion of the object namespace. No exclude-prefix may be a prefix of another exclude-prefix. * If include_prefixes is specified, then each exclude-prefix must start with the value of a path explicitly included by `include_prefixes`. The max size of `exclude_prefixes` is 1000. For more information, see [Filtering objects from transfers](/storage-transfer/docs/filtering-objects-from-transfers)."
        },
        "includePrefixes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If you specify `include_prefixes`, Storage Transfer Service uses the items in the `include_prefixes` array to determine which objects to include in a transfer. Objects must start with one of the matching `include_prefixes` for inclusion in the transfer. If exclude_prefixes is specified, objects must not start with any of the `exclude_prefixes` specified for inclusion in the transfer. The following are requirements of `include_prefixes`: * Each include-prefix can contain any sequence of Unicode characters, to a max length of 1024 bytes when UTF8-encoded, and must not contain Carriage Return or Line Feed characters. Wildcard matching and regular expression matching are not supported. * Each include-prefix must omit the leading slash. For example, to include the object `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include-prefix as `logs/y=2015/requests.gz`. * None of the include-prefix values can be empty, if specified. * Each include-prefix must include a distinct portion of the object namespace. No include-prefix may be a prefix of another include-prefix. The max size of `include_prefixes` is 1000. For more information, see [Filtering objects from transfers](/storage-transfer/docs/filtering-objects-from-transfers)."
        },
        "lastModifiedBefore": {
          "type": "string",
          "description": "If specified, only objects with a \"last modification time\" before this timestamp and objects that don't have a \"last modification time\" are transferred."
        },
        "lastModifiedSince": {
          "type": "string",
          "description": "If specified, only objects with a \"last modification time\" on or after this timestamp and objects that don't have a \"last modification time\" are transferred. The `last_modified_since` and `last_modified_before` fields can be used together for chunked data processing. For example, consider a script that processes each day's worth of data at a time. For that you'd set each of the fields as follows: * `last_modified_since` to the start of the day * `last_modified_before` to the end of the day"
        },
        "maxTimeElapsedSinceLastModification": {
          "type": "string",
          "description": "Ensures that objects are not transferred if a specific maximum time has elapsed since the \"last modification time\". When a TransferOperation begins, objects with a \"last modification time\" are transferred only if the elapsed time between the start_time of the `TransferOperation`and the \"last modification time\" of the object is less than the value of max_time_elapsed_since_last_modification`. Objects that do not have a \"last modification time\" are also transferred."
        },
        "minTimeElapsedSinceLastModification": {
          "type": "string",
          "description": "Ensures that objects are not transferred until a specific minimum time has elapsed after the \"last modification time\". When a TransferOperation begins, objects with a \"last modification time\" are transferred only if the elapsed time between the start_time of the `TransferOperation` and the \"last modification time\" of the object is equal to or greater than the value of min_time_elapsed_since_last_modification`. Objects that do not have a \"last modification time\" are also transferred."
        }
      },
      "type": "object",
      "required": [
        "excludePrefixes",
        "includePrefixes",
        "lastModifiedBefore",
        "lastModifiedSince",
        "maxTimeElapsedSinceLastModification",
        "minTimeElapsedSinceLastModification"
      ]
    },
    "google-native:storagetransfer/v1:PosixFilesystem": {
      "description": "A POSIX filesystem resource.",
      "properties": {
        "rootDirectory": {
          "type": "string",
          "description": "Root directory path to the filesystem."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:PosixFilesystemResponse": {
      "description": "A POSIX filesystem resource.",
      "properties": {
        "rootDirectory": {
          "type": "string",
          "description": "Root directory path to the filesystem."
        }
      },
      "type": "object",
      "required": [
        "rootDirectory"
      ]
    },
    "google-native:storagetransfer/v1:S3CompatibleMetadata": {
      "description": "S3CompatibleMetadata contains the metadata fields that apply to the basic types of S3-compatible data providers.",
      "properties": {
        "authMethod": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:S3CompatibleMetadataAuthMethod",
          "description": "Specifies the authentication and authorization method used by the storage service. When not specified, Transfer Service will attempt to determine right auth method to use."
        },
        "listApi": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:S3CompatibleMetadataListApi",
          "description": "The Listing API to use for discovering objects. When not specified, Transfer Service will attempt to determine the right API to use."
        },
        "protocol": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:S3CompatibleMetadataProtocol",
          "description": "Specifies the network protocol of the agent. When not specified, the default value of NetworkProtocol NETWORK_PROTOCOL_HTTPS is used."
        },
        "requestModel": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:S3CompatibleMetadataRequestModel",
          "description": "Specifies the API request model used to call the storage service. When not specified, the default value of RequestModel REQUEST_MODEL_VIRTUAL_HOSTED_STYLE is used."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:S3CompatibleMetadataAuthMethod": {
      "description": "Specifies the authentication and authorization method used by the storage service. When not specified, Transfer Service will attempt to determine right auth method to use.",
      "type": "string",
      "enum": [
        {
          "name": "AuthMethodUnspecified",
          "description": "AuthMethod is not specified.",
          "value": "AUTH_METHOD_UNSPECIFIED"
        },
        {
          "name": "AuthMethodAwsSignatureV4",
          "description": "Auth requests with AWS SigV4.",
          "value": "AUTH_METHOD_AWS_SIGNATURE_V4"
        },
        {
          "name": "AuthMethodAwsSignatureV2",
          "description": "Auth requests with AWS SigV2.",
          "value": "AUTH_METHOD_AWS_SIGNATURE_V2"
        }
      ]
    },
    "google-native:storagetransfer/v1:S3CompatibleMetadataListApi": {
      "description": "The Listing API to use for discovering objects. When not specified, Transfer Service will attempt to determine the right API to use.",
      "type": "string",
      "enum": [
        {
          "name": "ListApiUnspecified",
          "description": "ListApi is not specified.",
          "value": "LIST_API_UNSPECIFIED"
        },
        {
          "name": "ListObjectsV2",
          "description": "Perform listing using ListObjectsV2 API.",
          "value": "LIST_OBJECTS_V2"
        },
        {
          "name": "ListObjects",
          "description": "Legacy ListObjects API.",
          "value": "LIST_OBJECTS"
        }
      ]
    },
    "google-native:storagetransfer/v1:S3CompatibleMetadataProtocol": {
      "description": "Specifies the network protocol of the agent. When not specified, the default value of NetworkProtocol NETWORK_PROTOCOL_HTTPS is used.",
      "type": "string",
      "enum": [
        {
          "name": "NetworkProtocolUnspecified",
          "description": "NetworkProtocol is not specified.",
          "value": "NETWORK_PROTOCOL_UNSPECIFIED"
        },
        {
          "name": "NetworkProtocolHttps",
          "description": "Perform requests using HTTPS.",
          "value": "NETWORK_PROTOCOL_HTTPS"
        },
        {
          "name": "NetworkProtocolHttp",
          "description": "Not recommended: This sends data in clear-text. This is only appropriate within a closed network or for publicly available data. Perform requests using HTTP.",
          "value": "NETWORK_PROTOCOL_HTTP"
        }
      ]
    },
    "google-native:storagetransfer/v1:S3CompatibleMetadataRequestModel": {
      "description": "Specifies the API request model used to call the storage service. When not specified, the default value of RequestModel REQUEST_MODEL_VIRTUAL_HOSTED_STYLE is used.",
      "type": "string",
      "enum": [
        {
          "name": "RequestModelUnspecified",
          "description": "RequestModel is not specified.",
          "value": "REQUEST_MODEL_UNSPECIFIED"
        },
        {
          "name": "RequestModelVirtualHostedStyle",
          "description": "Perform requests using Virtual Hosted Style. Example: https://bucket-name.s3.region.amazonaws.com/key-name",
          "value": "REQUEST_MODEL_VIRTUAL_HOSTED_STYLE"
        },
        {
          "name": "RequestModelPathStyle",
          "description": "Perform requests using Path Style. Example: https://s3.region.amazonaws.com/bucket-name/key-name",
          "value": "REQUEST_MODEL_PATH_STYLE"
        }
      ]
    },
    "google-native:storagetransfer/v1:S3CompatibleMetadataResponse": {
      "description": "S3CompatibleMetadata contains the metadata fields that apply to the basic types of S3-compatible data providers.",
      "properties": {
        "authMethod": {
          "type": "string",
          "description": "Specifies the authentication and authorization method used by the storage service. When not specified, Transfer Service will attempt to determine right auth method to use."
        },
        "listApi": {
          "type": "string",
          "description": "The Listing API to use for discovering objects. When not specified, Transfer Service will attempt to determine the right API to use."
        },
        "protocol": {
          "type": "string",
          "description": "Specifies the network protocol of the agent. When not specified, the default value of NetworkProtocol NETWORK_PROTOCOL_HTTPS is used."
        },
        "requestModel": {
          "type": "string",
          "description": "Specifies the API request model used to call the storage service. When not specified, the default value of RequestModel REQUEST_MODEL_VIRTUAL_HOSTED_STYLE is used."
        }
      },
      "type": "object",
      "required": [
        "authMethod",
        "listApi",
        "protocol",
        "requestModel"
      ]
    },
    "google-native:storagetransfer/v1:Schedule": {
      "description": "Transfers can be scheduled to recur or to run just once.",
      "properties": {
        "endTimeOfDay": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TimeOfDay",
          "description": "The time in UTC that no further transfer operations are scheduled. Combined with schedule_end_date, `end_time_of_day` specifies the end date and time for starting new transfer operations. This field must be greater than or equal to the timestamp corresponding to the combintation of schedule_start_date and start_time_of_day, and is subject to the following: * If `end_time_of_day` is not set and `schedule_end_date` is set, then a default value of `23:59:59` is used for `end_time_of_day`. * If `end_time_of_day` is set and `schedule_end_date` is not set, then INVALID_ARGUMENT is returned."
        },
        "repeatInterval": {
          "type": "string",
          "description": "Interval between the start of each scheduled TransferOperation. If unspecified, the default value is 24 hours. This value may not be less than 1 hour."
        },
        "scheduleEndDate": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:Date",
          "description": "The last day a transfer runs. Date boundaries are determined relative to UTC time. A job runs once per 24 hours within the following guidelines: * If `schedule_end_date` and schedule_start_date are the same and in the future relative to UTC, the transfer is executed only one time. * If `schedule_end_date` is later than `schedule_start_date` and `schedule_end_date` is in the future relative to UTC, the job runs each day at start_time_of_day through `schedule_end_date`."
        },
        "scheduleStartDate": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:Date",
          "description": "The start date of a transfer. Date boundaries are determined relative to UTC time. If `schedule_start_date` and start_time_of_day are in the past relative to the job's creation time, the transfer starts the day after you schedule the transfer request. **Note:** When starting jobs at or near midnight UTC it is possible that a job starts later than expected. For example, if you send an outbound request on June 1 one millisecond prior to midnight UTC and the Storage Transfer Service server receives the request on June 2, then it creates a TransferJob with `schedule_start_date` set to June 2 and a `start_time_of_day` set to midnight UTC. The first scheduled TransferOperation takes place on June 3 at midnight UTC."
        },
        "startTimeOfDay": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TimeOfDay",
          "description": "The time in UTC that a transfer job is scheduled to run. Transfers may start later than this time. If `start_time_of_day` is not specified: * One-time transfers run immediately. * Recurring transfers run immediately, and each day at midnight UTC, through schedule_end_date. If `start_time_of_day` is specified: * One-time transfers run at the specified time. * Recurring transfers run at the specified time each day, through `schedule_end_date`."
        }
      },
      "type": "object",
      "required": [
        "scheduleStartDate"
      ]
    },
    "google-native:storagetransfer/v1:ScheduleResponse": {
      "description": "Transfers can be scheduled to recur or to run just once.",
      "properties": {
        "endTimeOfDay": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TimeOfDayResponse",
          "description": "The time in UTC that no further transfer operations are scheduled. Combined with schedule_end_date, `end_time_of_day` specifies the end date and time for starting new transfer operations. This field must be greater than or equal to the timestamp corresponding to the combintation of schedule_start_date and start_time_of_day, and is subject to the following: * If `end_time_of_day` is not set and `schedule_end_date` is set, then a default value of `23:59:59` is used for `end_time_of_day`. * If `end_time_of_day` is set and `schedule_end_date` is not set, then INVALID_ARGUMENT is returned."
        },
        "repeatInterval": {
          "type": "string",
          "description": "Interval between the start of each scheduled TransferOperation. If unspecified, the default value is 24 hours. This value may not be less than 1 hour."
        },
        "scheduleEndDate": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:DateResponse",
          "description": "The last day a transfer runs. Date boundaries are determined relative to UTC time. A job runs once per 24 hours within the following guidelines: * If `schedule_end_date` and schedule_start_date are the same and in the future relative to UTC, the transfer is executed only one time. * If `schedule_end_date` is later than `schedule_start_date` and `schedule_end_date` is in the future relative to UTC, the job runs each day at start_time_of_day through `schedule_end_date`."
        },
        "scheduleStartDate": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:DateResponse",
          "description": "The start date of a transfer. Date boundaries are determined relative to UTC time. If `schedule_start_date` and start_time_of_day are in the past relative to the job's creation time, the transfer starts the day after you schedule the transfer request. **Note:** When starting jobs at or near midnight UTC it is possible that a job starts later than expected. For example, if you send an outbound request on June 1 one millisecond prior to midnight UTC and the Storage Transfer Service server receives the request on June 2, then it creates a TransferJob with `schedule_start_date` set to June 2 and a `start_time_of_day` set to midnight UTC. The first scheduled TransferOperation takes place on June 3 at midnight UTC."
        },
        "startTimeOfDay": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TimeOfDayResponse",
          "description": "The time in UTC that a transfer job is scheduled to run. Transfers may start later than this time. If `start_time_of_day` is not specified: * One-time transfers run immediately. * Recurring transfers run immediately, and each day at midnight UTC, through schedule_end_date. If `start_time_of_day` is specified: * One-time transfers run at the specified time. * Recurring transfers run at the specified time each day, through `schedule_end_date`."
        }
      },
      "type": "object",
      "required": [
        "endTimeOfDay",
        "repeatInterval",
        "scheduleEndDate",
        "scheduleStartDate",
        "startTimeOfDay"
      ]
    },
    "google-native:storagetransfer/v1:TimeOfDay": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:TimeOfDayResponse": {
      "description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
      "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."
        },
        "minutes": {
          "type": "integer",
          "description": "Minutes of hour of day. Must be from 0 to 59."
        },
        "nanos": {
          "type": "integer",
          "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999."
        },
        "seconds": {
          "type": "integer",
          "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds."
        }
      },
      "type": "object",
      "required": [
        "hours",
        "minutes",
        "nanos",
        "seconds"
      ]
    },
    "google-native:storagetransfer/v1:TransferJobStatus": {
      "description": "Status of the job. This value MUST be specified for `CreateTransferJobRequests`. **Note:** The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.",
      "type": "string",
      "enum": [
        {
          "name": "StatusUnspecified",
          "description": "Zero is an illegal value.",
          "value": "STATUS_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "New transfers are performed based on the schedule.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "New transfers are not scheduled.",
          "value": "DISABLED"
        },
        {
          "name": "Deleted",
          "description": "This is a soft delete state. After a transfer job is set to this state, the job and all the transfer executions are subject to garbage collection. Transfer jobs become eligible for garbage collection 30 days after their status is set to `DELETED`.",
          "value": "DELETED"
        }
      ]
    },
    "google-native:storagetransfer/v1:TransferManifest": {
      "description": "Specifies where the manifest is located.",
      "properties": {
        "location": {
          "type": "string",
          "description": "Specifies the path to the manifest in Cloud Storage. The Google-managed service account for the transfer must have `storage.objects.get` permission for this object. An example path is `gs://bucket_name/path/manifest.csv`."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:TransferManifestResponse": {
      "description": "Specifies where the manifest is located.",
      "properties": {
        "location": {
          "type": "string",
          "description": "Specifies the path to the manifest in Cloud Storage. The Google-managed service account for the transfer must have `storage.objects.get` permission for this object. An example path is `gs://bucket_name/path/manifest.csv`."
        }
      },
      "type": "object",
      "required": [
        "location"
      ]
    },
    "google-native:storagetransfer/v1:TransferOptions": {
      "description": "TransferOptions define the actions to be performed on objects in a transfer.",
      "properties": {
        "deleteObjectsFromSourceAfterTransfer": {
          "type": "boolean",
          "description": "Whether objects should be deleted from the source after they are transferred to the sink. **Note:** This option and delete_objects_unique_in_sink are mutually exclusive."
        },
        "deleteObjectsUniqueInSink": {
          "type": "boolean",
          "description": "Whether objects that exist only in the sink should be deleted. **Note:** This option and delete_objects_from_source_after_transfer are mutually exclusive."
        },
        "metadataOptions": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptions",
          "description": "Represents the selected metadata options for a transfer job."
        },
        "overwriteObjectsAlreadyExistingInSink": {
          "type": "boolean",
          "description": "When to overwrite objects that already exist in the sink. The default is that only objects that are different from the source are ovewritten. If true, all objects in the sink whose name matches an object in the source are overwritten with the source object."
        },
        "overwriteWhen": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferOptionsOverwriteWhen",
          "description": "When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by overwrite_objects_already_existing_in_sink."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:TransferOptionsOverwriteWhen": {
      "description": "When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by overwrite_objects_already_existing_in_sink.",
      "type": "string",
      "enum": [
        {
          "name": "OverwriteWhenUnspecified",
          "description": "Overwrite behavior is unspecified.",
          "value": "OVERWRITE_WHEN_UNSPECIFIED"
        },
        {
          "name": "Different",
          "description": "Overwrites destination objects with the source objects, only if the objects have the same name but different HTTP ETags or checksum values.",
          "value": "DIFFERENT"
        },
        {
          "name": "Never",
          "description": "Never overwrites a destination object if a source object has the same name. In this case, the source object is not transferred.",
          "value": "NEVER"
        },
        {
          "name": "Always",
          "description": "Always overwrite the destination object with the source object, even if the HTTP Etags or checksum values are the same.",
          "value": "ALWAYS"
        }
      ]
    },
    "google-native:storagetransfer/v1:TransferOptionsResponse": {
      "description": "TransferOptions define the actions to be performed on objects in a transfer.",
      "properties": {
        "deleteObjectsFromSourceAfterTransfer": {
          "type": "boolean",
          "description": "Whether objects should be deleted from the source after they are transferred to the sink. **Note:** This option and delete_objects_unique_in_sink are mutually exclusive."
        },
        "deleteObjectsUniqueInSink": {
          "type": "boolean",
          "description": "Whether objects that exist only in the sink should be deleted. **Note:** This option and delete_objects_from_source_after_transfer are mutually exclusive."
        },
        "metadataOptions": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:MetadataOptionsResponse",
          "description": "Represents the selected metadata options for a transfer job."
        },
        "overwriteObjectsAlreadyExistingInSink": {
          "type": "boolean",
          "description": "When to overwrite objects that already exist in the sink. The default is that only objects that are different from the source are ovewritten. If true, all objects in the sink whose name matches an object in the source are overwritten with the source object."
        },
        "overwriteWhen": {
          "type": "string",
          "description": "When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by overwrite_objects_already_existing_in_sink."
        }
      },
      "type": "object",
      "required": [
        "deleteObjectsFromSourceAfterTransfer",
        "deleteObjectsUniqueInSink",
        "metadataOptions",
        "overwriteObjectsAlreadyExistingInSink",
        "overwriteWhen"
      ]
    },
    "google-native:storagetransfer/v1:TransferSpec": {
      "description": "Configuration for running a transfer.",
      "properties": {
        "awsS3CompatibleDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AwsS3CompatibleData",
          "description": "An AWS S3 compatible data source."
        },
        "awsS3DataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AwsS3Data",
          "description": "An AWS S3 data source."
        },
        "azureBlobStorageDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AzureBlobStorageData",
          "description": "An Azure Blob Storage data source."
        },
        "gcsDataSink": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:GcsData",
          "description": "A Cloud Storage data sink."
        },
        "gcsDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:GcsData",
          "description": "A Cloud Storage data source."
        },
        "gcsIntermediateDataLocation": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:GcsData",
          "description": "For transfers between file systems, specifies a Cloud Storage bucket to be used as an intermediate location through which to transfer data. See [Transfer data between file systems](https://cloud.google.com/storage-transfer/docs/file-to-file) for more information."
        },
        "httpDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:HttpData",
          "description": "An HTTP URL data source."
        },
        "objectConditions": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:ObjectConditions",
          "description": "Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' \"last modification time\" do not exclude objects in a data sink."
        },
        "posixDataSink": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:PosixFilesystem",
          "description": "A POSIX Filesystem data sink."
        },
        "posixDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:PosixFilesystem",
          "description": "A POSIX Filesystem data source."
        },
        "sinkAgentPoolName": {
          "type": "string",
          "description": "Specifies the agent pool name associated with the posix data sink. When unspecified, the default name is used."
        },
        "sourceAgentPoolName": {
          "type": "string",
          "description": "Specifies the agent pool name associated with the posix data source. When unspecified, the default name is used."
        },
        "transferManifest": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferManifest",
          "description": "A manifest file provides a list of objects to be transferred from the data source. This field points to the location of the manifest file. Otherwise, the entire source bucket is used. ObjectConditions still apply."
        },
        "transferOptions": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferOptions",
          "description": "If the option delete_objects_unique_in_sink is `true` and time-based object conditions such as 'last modification time' are specified, the request fails with an INVALID_ARGUMENT error."
        }
      },
      "type": "object"
    },
    "google-native:storagetransfer/v1:TransferSpecResponse": {
      "description": "Configuration for running a transfer.",
      "properties": {
        "awsS3CompatibleDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AwsS3CompatibleDataResponse",
          "description": "An AWS S3 compatible data source."
        },
        "awsS3DataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AwsS3DataResponse",
          "description": "An AWS S3 data source."
        },
        "azureBlobStorageDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:AzureBlobStorageDataResponse",
          "description": "An Azure Blob Storage data source."
        },
        "gcsDataSink": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:GcsDataResponse",
          "description": "A Cloud Storage data sink."
        },
        "gcsDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:GcsDataResponse",
          "description": "A Cloud Storage data source."
        },
        "gcsIntermediateDataLocation": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:GcsDataResponse",
          "description": "For transfers between file systems, specifies a Cloud Storage bucket to be used as an intermediate location through which to transfer data. See [Transfer data between file systems](https://cloud.google.com/storage-transfer/docs/file-to-file) for more information."
        },
        "httpDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:HttpDataResponse",
          "description": "An HTTP URL data source."
        },
        "objectConditions": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:ObjectConditionsResponse",
          "description": "Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' \"last modification time\" do not exclude objects in a data sink."
        },
        "posixDataSink": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:PosixFilesystemResponse",
          "description": "A POSIX Filesystem data sink."
        },
        "posixDataSource": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:PosixFilesystemResponse",
          "description": "A POSIX Filesystem data source."
        },
        "sinkAgentPoolName": {
          "type": "string",
          "description": "Specifies the agent pool name associated with the posix data sink. When unspecified, the default name is used."
        },
        "sourceAgentPoolName": {
          "type": "string",
          "description": "Specifies the agent pool name associated with the posix data source. When unspecified, the default name is used."
        },
        "transferManifest": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferManifestResponse",
          "description": "A manifest file provides a list of objects to be transferred from the data source. This field points to the location of the manifest file. Otherwise, the entire source bucket is used. ObjectConditions still apply."
        },
        "transferOptions": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferOptionsResponse",
          "description": "If the option delete_objects_unique_in_sink is `true` and time-based object conditions such as 'last modification time' are specified, the request fails with an INVALID_ARGUMENT error."
        }
      },
      "type": "object",
      "required": [
        "awsS3CompatibleDataSource",
        "awsS3DataSource",
        "azureBlobStorageDataSource",
        "gcsDataSink",
        "gcsDataSource",
        "gcsIntermediateDataLocation",
        "httpDataSource",
        "objectConditions",
        "posixDataSink",
        "posixDataSource",
        "sinkAgentPoolName",
        "sourceAgentPoolName",
        "transferManifest",
        "transferOptions"
      ]
    },
    "google-native:testing/v1:Account": {
      "description": "Identifies an account and how to log into it.",
      "properties": {
        "googleAuto": {
          "$ref": "#/types/google-native:testing%2Fv1:GoogleAuto",
          "description": "An automatic google login account."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:AccountResponse": {
      "description": "Identifies an account and how to log into it.",
      "properties": {
        "googleAuto": {
          "$ref": "#/types/google-native:testing%2Fv1:GoogleAutoResponse",
          "description": "An automatic google login account."
        }
      },
      "type": "object",
      "required": [
        "googleAuto"
      ]
    },
    "google-native:testing/v1:AndroidDevice": {
      "description": "A single Android device.",
      "properties": {
        "androidModelId": {
          "type": "string",
          "description": "The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "androidVersionId": {
          "type": "string",
          "description": "The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "locale": {
          "type": "string",
          "description": "The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "orientation": {
          "type": "string",
          "description": "How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options."
        }
      },
      "type": "object",
      "required": [
        "androidModelId",
        "androidVersionId",
        "locale",
        "orientation"
      ]
    },
    "google-native:testing/v1:AndroidDeviceList": {
      "description": "A list of Android device configurations in which the test is to be executed.",
      "properties": {
        "androidDevices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:AndroidDevice"
          },
          "description": "A list of Android devices."
        }
      },
      "type": "object",
      "required": [
        "androidDevices"
      ]
    },
    "google-native:testing/v1:AndroidDeviceListResponse": {
      "description": "A list of Android device configurations in which the test is to be executed.",
      "properties": {
        "androidDevices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:AndroidDeviceResponse"
          },
          "description": "A list of Android devices."
        }
      },
      "type": "object",
      "required": [
        "androidDevices"
      ]
    },
    "google-native:testing/v1:AndroidDeviceResponse": {
      "description": "A single Android device.",
      "properties": {
        "androidModelId": {
          "type": "string",
          "description": "The id of the Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "androidVersionId": {
          "type": "string",
          "description": "The id of the Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "locale": {
          "type": "string",
          "description": "The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "orientation": {
          "type": "string",
          "description": "How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options."
        }
      },
      "type": "object",
      "required": [
        "androidModelId",
        "androidVersionId",
        "locale",
        "orientation"
      ]
    },
    "google-native:testing/v1:AndroidInstrumentationTest": {
      "description": "A test of an Android application that can control an Android component independently of its normal lifecycle. Android instrumentation tests run an application APK and test APK inside the same process on a virtual or physical AndroidDevice. They also specify a test runner class, such as com.google.GoogleTestRunner, which can vary on the specific instrumentation framework chosen. See for more information on types of Android tests.",
      "properties": {
        "appApk": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The APK for the application under test."
        },
        "appBundle": {
          "$ref": "#/types/google-native:testing%2Fv1:AppBundle",
          "description": "A multi-apk app bundle for the application under test."
        },
        "appPackageId": {
          "type": "string",
          "description": "The java package for the application under test. The default value is determined by examining the application's manifest."
        },
        "orchestratorOption": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidInstrumentationTestOrchestratorOption",
          "description": "The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.1 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator."
        },
        "shardingOption": {
          "$ref": "#/types/google-native:testing%2Fv1:ShardingOption",
          "description": "The option to run tests in multiple shards in parallel."
        },
        "testApk": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The APK containing the test code to be executed."
        },
        "testPackageId": {
          "type": "string",
          "description": "The java package for the test to be executed. The default value is determined by examining the application's manifest."
        },
        "testRunnerClass": {
          "type": "string",
          "description": "The InstrumentationTestRunner class. The default value is determined by examining the application's manifest."
        },
        "testTargets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Each target must be fully qualified with the package name or class name, in one of these formats: - \"package package_name\" - \"class package_name.class_name\" - \"class package_name.class_name#method_name\" If empty, all targets in the module will be run."
        }
      },
      "type": "object",
      "required": [
        "testApk"
      ]
    },
    "google-native:testing/v1:AndroidInstrumentationTestOrchestratorOption": {
      "description": "The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.1 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator.",
      "type": "string",
      "enum": [
        {
          "name": "OrchestratorOptionUnspecified",
          "description": "Default value: the server will choose the mode. Currently implies that the test will run without the orchestrator. In the future, all instrumentation tests will be run with the orchestrator. Using the orchestrator is highly encouraged because of all the benefits it offers.",
          "value": "ORCHESTRATOR_OPTION_UNSPECIFIED"
        },
        {
          "name": "UseOrchestrator",
          "description": "Run test using orchestrator. ** Only compatible with AndroidJUnitRunner version 1.1 or higher! ** Recommended.",
          "value": "USE_ORCHESTRATOR"
        },
        {
          "name": "DoNotUseOrchestrator",
          "description": "Run test without using orchestrator.",
          "value": "DO_NOT_USE_ORCHESTRATOR"
        }
      ]
    },
    "google-native:testing/v1:AndroidInstrumentationTestResponse": {
      "description": "A test of an Android application that can control an Android component independently of its normal lifecycle. Android instrumentation tests run an application APK and test APK inside the same process on a virtual or physical AndroidDevice. They also specify a test runner class, such as com.google.GoogleTestRunner, which can vary on the specific instrumentation framework chosen. See for more information on types of Android tests.",
      "properties": {
        "appApk": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The APK for the application under test."
        },
        "appBundle": {
          "$ref": "#/types/google-native:testing%2Fv1:AppBundleResponse",
          "description": "A multi-apk app bundle for the application under test."
        },
        "appPackageId": {
          "type": "string",
          "description": "The java package for the application under test. The default value is determined by examining the application's manifest."
        },
        "orchestratorOption": {
          "type": "string",
          "description": "The option of whether running each test within its own invocation of instrumentation with Android Test Orchestrator or not. ** Orchestrator is only compatible with AndroidJUnitRunner version 1.1 or higher! ** Orchestrator offers the following benefits: - No shared state - Crashes are isolated - Logs are scoped per test See for more information about Android Test Orchestrator. If not set, the test will be run without the orchestrator."
        },
        "shardingOption": {
          "$ref": "#/types/google-native:testing%2Fv1:ShardingOptionResponse",
          "description": "The option to run tests in multiple shards in parallel."
        },
        "testApk": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The APK containing the test code to be executed."
        },
        "testPackageId": {
          "type": "string",
          "description": "The java package for the test to be executed. The default value is determined by examining the application's manifest."
        },
        "testRunnerClass": {
          "type": "string",
          "description": "The InstrumentationTestRunner class. The default value is determined by examining the application's manifest."
        },
        "testTargets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Each target must be fully qualified with the package name or class name, in one of these formats: - \"package package_name\" - \"class package_name.class_name\" - \"class package_name.class_name#method_name\" If empty, all targets in the module will be run."
        }
      },
      "type": "object",
      "required": [
        "appApk",
        "appBundle",
        "appPackageId",
        "orchestratorOption",
        "shardingOption",
        "testApk",
        "testPackageId",
        "testRunnerClass",
        "testTargets"
      ]
    },
    "google-native:testing/v1:AndroidMatrix": {
      "description": "A set of Android device configuration permutations is defined by the the cross-product of the given axes. Internally, the given AndroidMatrix will be expanded into a set of AndroidDevices. Only supported permutations will be instantiated. Invalid permutations (e.g., incompatible models/versions) are ignored.",
      "properties": {
        "androidModelIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ids of the set of Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "androidVersionIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ids of the set of Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "locales": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of locales the test device will enable for testing. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "orientations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of orientations to test with. Use the TestEnvironmentDiscoveryService to get supported options."
        }
      },
      "type": "object",
      "required": [
        "androidModelIds",
        "androidVersionIds",
        "locales",
        "orientations"
      ]
    },
    "google-native:testing/v1:AndroidMatrixResponse": {
      "description": "A set of Android device configuration permutations is defined by the the cross-product of the given axes. Internally, the given AndroidMatrix will be expanded into a set of AndroidDevices. Only supported permutations will be instantiated. Invalid permutations (e.g., incompatible models/versions) are ignored.",
      "properties": {
        "androidModelIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ids of the set of Android device to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "androidVersionIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ids of the set of Android OS version to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "locales": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of locales the test device will enable for testing. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "orientations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of orientations to test with. Use the TestEnvironmentDiscoveryService to get supported options."
        }
      },
      "type": "object",
      "required": [
        "androidModelIds",
        "androidVersionIds",
        "locales",
        "orientations"
      ]
    },
    "google-native:testing/v1:AndroidRoboTest": {
      "description": "A test of an android application that explores the application on a virtual or physical Android Device, finding culprits and crashes as it goes.",
      "properties": {
        "appApk": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The APK for the application under test."
        },
        "appBundle": {
          "$ref": "#/types/google-native:testing%2Fv1:AppBundle",
          "description": "A multi-apk app bundle for the application under test."
        },
        "appInitialActivity": {
          "type": "string",
          "description": "The initial activity that should be used to start the app."
        },
        "appPackageId": {
          "type": "string",
          "description": "The java package for the application under test. The default value is determined by examining the application's manifest."
        },
        "maxDepth": {
          "type": "integer",
          "description": "The max depth of the traversal stack Robo can explore. Needs to be at least 2 to make Robo explore the app beyond the first activity. Default is 50."
        },
        "maxSteps": {
          "type": "integer",
          "description": "The max number of steps Robo can execute. Default is no limit."
        },
        "roboDirectives": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:RoboDirective"
          },
          "description": "A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided."
        },
        "roboMode": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidRoboTestRoboMode",
          "description": "The mode in which Robo should run. Most clients should allow the server to populate this field automatically."
        },
        "roboScript": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "A JSON file with a sequence of actions Robo should perform as a prologue for the crawl."
        },
        "startingIntents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:RoboStartingIntent"
          },
          "description": "The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly)."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:AndroidRoboTestResponse": {
      "description": "A test of an android application that explores the application on a virtual or physical Android Device, finding culprits and crashes as it goes.",
      "properties": {
        "appApk": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The APK for the application under test."
        },
        "appBundle": {
          "$ref": "#/types/google-native:testing%2Fv1:AppBundleResponse",
          "description": "A multi-apk app bundle for the application under test."
        },
        "appInitialActivity": {
          "type": "string",
          "description": "The initial activity that should be used to start the app."
        },
        "appPackageId": {
          "type": "string",
          "description": "The java package for the application under test. The default value is determined by examining the application's manifest."
        },
        "maxDepth": {
          "type": "integer",
          "description": "The max depth of the traversal stack Robo can explore. Needs to be at least 2 to make Robo explore the app beyond the first activity. Default is 50."
        },
        "maxSteps": {
          "type": "integer",
          "description": "The max number of steps Robo can execute. Default is no limit."
        },
        "roboDirectives": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:RoboDirectiveResponse"
          },
          "description": "A set of directives Robo should apply during the crawl. This allows users to customize the crawl. For example, the username and password for a test account can be provided."
        },
        "roboMode": {
          "type": "string",
          "description": "The mode in which Robo should run. Most clients should allow the server to populate this field automatically."
        },
        "roboScript": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "A JSON file with a sequence of actions Robo should perform as a prologue for the crawl."
        },
        "startingIntents": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:RoboStartingIntentResponse"
          },
          "description": "The intents used to launch the app for the crawl. If none are provided, then the main launcher activity is launched. If some are provided, then only those provided are launched (the main launcher activity must be provided explicitly)."
        }
      },
      "type": "object",
      "required": [
        "appApk",
        "appBundle",
        "appInitialActivity",
        "appPackageId",
        "maxDepth",
        "maxSteps",
        "roboDirectives",
        "roboMode",
        "roboScript",
        "startingIntents"
      ]
    },
    "google-native:testing/v1:AndroidRoboTestRoboMode": {
      "description": "The mode in which Robo should run. Most clients should allow the server to populate this field automatically.",
      "type": "string",
      "enum": [
        {
          "name": "RoboModeUnspecified",
          "description": "This means that the server should choose the mode. Recommended.",
          "value": "ROBO_MODE_UNSPECIFIED"
        },
        {
          "name": "RoboVersion1",
          "description": "Runs Robo in UIAutomator-only mode without app resigning",
          "value": "ROBO_VERSION_1"
        },
        {
          "name": "RoboVersion2",
          "description": "Runs Robo in standard Espresso with UIAutomator fallback",
          "value": "ROBO_VERSION_2"
        }
      ]
    },
    "google-native:testing/v1:AndroidTestLoop": {
      "description": "A test of an Android Application with a Test Loop. The intent \\ will be implicitly added, since Games is the only user of this api, for the time being.",
      "properties": {
        "appApk": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The APK for the application under test."
        },
        "appBundle": {
          "$ref": "#/types/google-native:testing%2Fv1:AppBundle",
          "description": "A multi-apk app bundle for the application under test."
        },
        "appPackageId": {
          "type": "string",
          "description": "The java package for the application under test. The default is determined by examining the application's manifest."
        },
        "scenarioLabels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scenario labels that should be run during the test. The scenario labels should map to labels defined in the application's manifest. For example, player_experience and com.google.test.loops.player_experience add all of the loops labeled in the manifest with the com.google.test.loops.player_experience name to the execution. Scenarios can also be specified in the scenarios field."
        },
        "scenarios": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The list of scenarios that should be run during the test. The default is all test loops, derived from the application's manifest."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:AndroidTestLoopResponse": {
      "description": "A test of an Android Application with a Test Loop. The intent \\ will be implicitly added, since Games is the only user of this api, for the time being.",
      "properties": {
        "appApk": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The APK for the application under test."
        },
        "appBundle": {
          "$ref": "#/types/google-native:testing%2Fv1:AppBundleResponse",
          "description": "A multi-apk app bundle for the application under test."
        },
        "appPackageId": {
          "type": "string",
          "description": "The java package for the application under test. The default is determined by examining the application's manifest."
        },
        "scenarioLabels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scenario labels that should be run during the test. The scenario labels should map to labels defined in the application's manifest. For example, player_experience and com.google.test.loops.player_experience add all of the loops labeled in the manifest with the com.google.test.loops.player_experience name to the execution. Scenarios can also be specified in the scenarios field."
        },
        "scenarios": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The list of scenarios that should be run during the test. The default is all test loops, derived from the application's manifest."
        }
      },
      "type": "object",
      "required": [
        "appApk",
        "appBundle",
        "appPackageId",
        "scenarioLabels",
        "scenarios"
      ]
    },
    "google-native:testing/v1:Apk": {
      "description": "An Android package file to install.",
      "properties": {
        "location": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The path to an APK to be installed on the device before the test begins."
        },
        "packageName": {
          "type": "string",
          "description": "The java package for the APK to be installed. Value is determined by examining the application's manifest."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:ApkResponse": {
      "description": "An Android package file to install.",
      "properties": {
        "location": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The path to an APK to be installed on the device before the test begins."
        },
        "packageName": {
          "type": "string",
          "description": "The java package for the APK to be installed. Value is determined by examining the application's manifest."
        }
      },
      "type": "object",
      "required": [
        "location",
        "packageName"
      ]
    },
    "google-native:testing/v1:AppBundle": {
      "description": "An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles.",
      "properties": {
        "bundleLocation": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": ".aab file representing the app bundle under test."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:AppBundleResponse": {
      "description": "An Android App Bundle file format, containing a BundleConfig.pb file, a base module directory, zero or more dynamic feature module directories. See https://developer.android.com/guide/app-bundle/build for guidance on building App Bundles.",
      "properties": {
        "bundleLocation": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": ".aab file representing the app bundle under test."
        }
      },
      "type": "object",
      "required": [
        "bundleLocation"
      ]
    },
    "google-native:testing/v1:ClientInfo": {
      "description": "Information about the client which invoked the test.",
      "properties": {
        "clientInfoDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:ClientInfoDetail"
          },
          "description": "The list of detailed information about client."
        },
        "name": {
          "type": "string",
          "description": "Client name, such as gcloud."
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:testing/v1:ClientInfoDetail": {
      "description": "Key-value pair of detailed information about the client which invoked the test. Examples: {'Version', '1.0'}, {'Release Track', 'BETA'}.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of detailed client information."
        },
        "value": {
          "type": "string",
          "description": "The value of detailed client information."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:testing/v1:ClientInfoDetailResponse": {
      "description": "Key-value pair of detailed information about the client which invoked the test. Examples: {'Version', '1.0'}, {'Release Track', 'BETA'}.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of detailed client information."
        },
        "value": {
          "type": "string",
          "description": "The value of detailed client information."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:testing/v1:ClientInfoResponse": {
      "description": "Information about the client which invoked the test.",
      "properties": {
        "clientInfoDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:ClientInfoDetailResponse"
          },
          "description": "The list of detailed information about client."
        },
        "name": {
          "type": "string",
          "description": "Client name, such as gcloud."
        }
      },
      "type": "object",
      "required": [
        "clientInfoDetails",
        "name"
      ]
    },
    "google-native:testing/v1:DeviceFile": {
      "description": "A single device file description.",
      "properties": {
        "obbFile": {
          "$ref": "#/types/google-native:testing%2Fv1:ObbFile",
          "description": "A reference to an opaque binary blob file."
        },
        "regularFile": {
          "$ref": "#/types/google-native:testing%2Fv1:RegularFile",
          "description": "A reference to a regular file."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:DeviceFileResponse": {
      "description": "A single device file description.",
      "properties": {
        "obbFile": {
          "$ref": "#/types/google-native:testing%2Fv1:ObbFileResponse",
          "description": "A reference to an opaque binary blob file."
        },
        "regularFile": {
          "$ref": "#/types/google-native:testing%2Fv1:RegularFileResponse",
          "description": "A reference to a regular file."
        }
      },
      "type": "object",
      "required": [
        "obbFile",
        "regularFile"
      ]
    },
    "google-native:testing/v1:EnvironmentMatrix": {
      "description": "The matrix of environments in which the test is to be executed.",
      "properties": {
        "androidDeviceList": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidDeviceList",
          "description": "A list of Android devices; the test will be run only on the specified devices."
        },
        "androidMatrix": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidMatrix",
          "description": "A matrix of Android devices."
        },
        "iosDeviceList": {
          "$ref": "#/types/google-native:testing%2Fv1:IosDeviceList",
          "description": "A list of iOS devices."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:EnvironmentMatrixResponse": {
      "description": "The matrix of environments in which the test is to be executed.",
      "properties": {
        "androidDeviceList": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidDeviceListResponse",
          "description": "A list of Android devices; the test will be run only on the specified devices."
        },
        "androidMatrix": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidMatrixResponse",
          "description": "A matrix of Android devices."
        },
        "iosDeviceList": {
          "$ref": "#/types/google-native:testing%2Fv1:IosDeviceListResponse",
          "description": "A list of iOS devices."
        }
      },
      "type": "object",
      "required": [
        "androidDeviceList",
        "androidMatrix",
        "iosDeviceList"
      ]
    },
    "google-native:testing/v1:EnvironmentResponse": {
      "description": "The environment in which the test is run.",
      "properties": {
        "androidDevice": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidDeviceResponse",
          "description": "An Android device which must be used with an Android test."
        },
        "iosDevice": {
          "$ref": "#/types/google-native:testing%2Fv1:IosDeviceResponse",
          "description": "An iOS device which must be used with an iOS test."
        }
      },
      "type": "object",
      "required": [
        "androidDevice",
        "iosDevice"
      ]
    },
    "google-native:testing/v1:EnvironmentVariable": {
      "description": "A key-value pair passed as an environment variable to the test.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for the environment variable."
        },
        "value": {
          "type": "string",
          "description": "Value for the environment variable."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:EnvironmentVariableResponse": {
      "description": "A key-value pair passed as an environment variable to the test.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key for the environment variable."
        },
        "value": {
          "type": "string",
          "description": "Value for the environment variable."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:testing/v1:FileReference": {
      "description": "A reference to a file, used for user inputs.",
      "properties": {
        "gcsPath": {
          "type": "string",
          "description": "A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)"
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:FileReferenceResponse": {
      "description": "A reference to a file, used for user inputs.",
      "properties": {
        "gcsPath": {
          "type": "string",
          "description": "A path to a file in Google Cloud Storage. Example: gs://build-app-1414623860166/app%40debug-unaligned.apk These paths are expected to be url encoded (percent encoding)"
        }
      },
      "type": "object",
      "required": [
        "gcsPath"
      ]
    },
    "google-native:testing/v1:GoogleAuto": {
      "description": "Enables automatic Google account login. If set, the service automatically generates a Google test account and adds it to the device, before executing the test. Note that test accounts might be reused. Many applications show their full set of functionalities when an account is present on the device. Logging into the device with these generated accounts allows testing more functionalities.",
      "type": "object"
    },
    "google-native:testing/v1:GoogleAutoResponse": {
      "description": "Enables automatic Google account login. If set, the service automatically generates a Google test account and adds it to the device, before executing the test. Note that test accounts might be reused. Many applications show their full set of functionalities when an account is present on the device. Logging into the device with these generated accounts allows testing more functionalities.",
      "type": "object"
    },
    "google-native:testing/v1:GoogleCloudStorage": {
      "description": "A storage location within Google cloud storage (GCS).",
      "properties": {
        "gcsPath": {
          "type": "string",
          "description": "The path to a directory in GCS that will eventually contain the results for this test. The requesting user must have write access on the bucket in the supplied path."
        }
      },
      "type": "object",
      "required": [
        "gcsPath"
      ]
    },
    "google-native:testing/v1:GoogleCloudStorageResponse": {
      "description": "A storage location within Google cloud storage (GCS).",
      "properties": {
        "gcsPath": {
          "type": "string",
          "description": "The path to a directory in GCS that will eventually contain the results for this test. The requesting user must have write access on the bucket in the supplied path."
        }
      },
      "type": "object",
      "required": [
        "gcsPath"
      ]
    },
    "google-native:testing/v1:IosDevice": {
      "description": "A single iOS device.",
      "properties": {
        "iosModelId": {
          "type": "string",
          "description": "The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "iosVersionId": {
          "type": "string",
          "description": "The id of the iOS major software version to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "locale": {
          "type": "string",
          "description": "The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "orientation": {
          "type": "string",
          "description": "How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options."
        }
      },
      "type": "object",
      "required": [
        "iosModelId",
        "iosVersionId",
        "locale",
        "orientation"
      ]
    },
    "google-native:testing/v1:IosDeviceFile": {
      "description": "A file or directory to install on the device before the test starts.",
      "properties": {
        "bundleId": {
          "type": "string",
          "description": "The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device."
        },
        "content": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The source file"
        },
        "devicePath": {
          "type": "string",
          "description": "Location of the file on the device, inside the app's sandboxed filesystem"
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:IosDeviceFileResponse": {
      "description": "A file or directory to install on the device before the test starts.",
      "properties": {
        "bundleId": {
          "type": "string",
          "description": "The bundle id of the app where this file lives. iOS apps sandbox their own filesystem, so app files must specify which app installed on the device."
        },
        "content": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The source file"
        },
        "devicePath": {
          "type": "string",
          "description": "Location of the file on the device, inside the app's sandboxed filesystem"
        }
      },
      "type": "object",
      "required": [
        "bundleId",
        "content",
        "devicePath"
      ]
    },
    "google-native:testing/v1:IosDeviceList": {
      "description": "A list of iOS device configurations in which the test is to be executed.",
      "properties": {
        "iosDevices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:IosDevice"
          },
          "description": "A list of iOS devices."
        }
      },
      "type": "object",
      "required": [
        "iosDevices"
      ]
    },
    "google-native:testing/v1:IosDeviceListResponse": {
      "description": "A list of iOS device configurations in which the test is to be executed.",
      "properties": {
        "iosDevices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:IosDeviceResponse"
          },
          "description": "A list of iOS devices."
        }
      },
      "type": "object",
      "required": [
        "iosDevices"
      ]
    },
    "google-native:testing/v1:IosDeviceResponse": {
      "description": "A single iOS device.",
      "properties": {
        "iosModelId": {
          "type": "string",
          "description": "The id of the iOS device to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "iosVersionId": {
          "type": "string",
          "description": "The id of the iOS major software version to be used. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "locale": {
          "type": "string",
          "description": "The locale the test device used for testing. Use the TestEnvironmentDiscoveryService to get supported options."
        },
        "orientation": {
          "type": "string",
          "description": "How the device is oriented during the test. Use the TestEnvironmentDiscoveryService to get supported options."
        }
      },
      "type": "object",
      "required": [
        "iosModelId",
        "iosVersionId",
        "locale",
        "orientation"
      ]
    },
    "google-native:testing/v1:IosRoboTest": {
      "description": "A test that explores an iOS application on an iOS device.",
      "properties": {
        "appBundleId": {
          "type": "string",
          "description": "The bundle ID for the app-under-test. This is determined by examining the application's \"Info.plist\" file."
        },
        "appIpa": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The ipa stored at this file should be used to run the test."
        },
        "roboScript": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "An optional Roboscript to customize the crawl. See https://firebase.google.com/docs/test-lab/android/robo-scripts-reference for more information about Roboscripts."
        }
      },
      "type": "object",
      "required": [
        "appIpa"
      ]
    },
    "google-native:testing/v1:IosRoboTestResponse": {
      "description": "A test that explores an iOS application on an iOS device.",
      "properties": {
        "appBundleId": {
          "type": "string",
          "description": "The bundle ID for the app-under-test. This is determined by examining the application's \"Info.plist\" file."
        },
        "appIpa": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The ipa stored at this file should be used to run the test."
        },
        "roboScript": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "An optional Roboscript to customize the crawl. See https://firebase.google.com/docs/test-lab/android/robo-scripts-reference for more information about Roboscripts."
        }
      },
      "type": "object",
      "required": [
        "appBundleId",
        "appIpa",
        "roboScript"
      ]
    },
    "google-native:testing/v1:IosTestLoop": {
      "description": "A test of an iOS application that implements one or more game loop scenarios. This test type accepts an archived application (.ipa file) and a list of integer scenarios that will be executed on the app sequentially.",
      "properties": {
        "appIpa": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The .ipa of the application to test."
        },
        "scenarios": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified."
        }
      },
      "type": "object",
      "required": [
        "appIpa"
      ]
    },
    "google-native:testing/v1:IosTestLoopResponse": {
      "description": "A test of an iOS application that implements one or more game loop scenarios. This test type accepts an archived application (.ipa file) and a list of integer scenarios that will be executed on the app sequentially.",
      "properties": {
        "appBundleId": {
          "type": "string",
          "description": "The bundle id for the application under test."
        },
        "appIpa": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The .ipa of the application to test."
        },
        "scenarios": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The list of scenarios that should be run during the test. Defaults to the single scenario 0 if unspecified."
        }
      },
      "type": "object",
      "required": [
        "appBundleId",
        "appIpa",
        "scenarios"
      ]
    },
    "google-native:testing/v1:IosTestSetup": {
      "description": "A description of how to set up an iOS device prior to running the test.",
      "properties": {
        "additionalIpas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:FileReference"
          },
          "description": "iOS apps to install in addition to those being directly tested."
        },
        "networkProfile": {
          "type": "string",
          "description": "The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog."
        },
        "pullDirectories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:IosDeviceFile"
          },
          "description": "List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (such as /private/var/mobile/Media) or within an accessible directory inside the app's filesystem (such as /Documents) by specifying the bundle ID."
        },
        "pushFiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:IosDeviceFile"
          },
          "description": "List of files to push to the device before starting the test."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:IosTestSetupResponse": {
      "description": "A description of how to set up an iOS device prior to running the test.",
      "properties": {
        "additionalIpas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse"
          },
          "description": "iOS apps to install in addition to those being directly tested."
        },
        "networkProfile": {
          "type": "string",
          "description": "The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog."
        },
        "pullDirectories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:IosDeviceFileResponse"
          },
          "description": "List of directories on the device to upload to Cloud Storage at the end of the test. Directories should either be in a shared directory (such as /private/var/mobile/Media) or within an accessible directory inside the app's filesystem (such as /Documents) by specifying the bundle ID."
        },
        "pushFiles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:IosDeviceFileResponse"
          },
          "description": "List of files to push to the device before starting the test."
        }
      },
      "type": "object",
      "required": [
        "additionalIpas",
        "networkProfile",
        "pullDirectories",
        "pushFiles"
      ]
    },
    "google-native:testing/v1:IosXcTest": {
      "description": "A test of an iOS application that uses the XCTest framework. Xcode supports the option to \"build for testing\", which generates an .xctestrun file that contains a test specification (arguments, test methods, etc). This test type accepts a zip file containing the .xctestrun file and the corresponding contents of the Build/Products directory that contains all the binaries needed to run the tests.",
      "properties": {
        "testSpecialEntitlements": {
          "type": "boolean",
          "description": "The option to test special app entitlements. Setting this would re-sign the app having special entitlements with an explicit application-identifier. Currently supports testing aps-environment entitlement."
        },
        "testsZip": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The .zip containing the .xctestrun file and the contents of the DerivedData/Build/Products directory. The .xctestrun file in this zip is ignored if the xctestrun field is specified."
        },
        "xcodeVersion": {
          "type": "string",
          "description": "The Xcode version that should be used for the test. Use the TestEnvironmentDiscoveryService to get supported options. Defaults to the latest Xcode version Firebase Test Lab supports."
        },
        "xctestrun": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "An .xctestrun file that will override the .xctestrun file in the tests zip. Because the .xctestrun file contains environment variables along with test methods to run and/or ignore, this can be useful for sharding tests. Default is taken from the tests zip."
        }
      },
      "type": "object",
      "required": [
        "testsZip"
      ]
    },
    "google-native:testing/v1:IosXcTestResponse": {
      "description": "A test of an iOS application that uses the XCTest framework. Xcode supports the option to \"build for testing\", which generates an .xctestrun file that contains a test specification (arguments, test methods, etc). This test type accepts a zip file containing the .xctestrun file and the corresponding contents of the Build/Products directory that contains all the binaries needed to run the tests.",
      "properties": {
        "appBundleId": {
          "type": "string",
          "description": "The bundle id for the application under test."
        },
        "testSpecialEntitlements": {
          "type": "boolean",
          "description": "The option to test special app entitlements. Setting this would re-sign the app having special entitlements with an explicit application-identifier. Currently supports testing aps-environment entitlement."
        },
        "testsZip": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The .zip containing the .xctestrun file and the contents of the DerivedData/Build/Products directory. The .xctestrun file in this zip is ignored if the xctestrun field is specified."
        },
        "xcodeVersion": {
          "type": "string",
          "description": "The Xcode version that should be used for the test. Use the TestEnvironmentDiscoveryService to get supported options. Defaults to the latest Xcode version Firebase Test Lab supports."
        },
        "xctestrun": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "An .xctestrun file that will override the .xctestrun file in the tests zip. Because the .xctestrun file contains environment variables along with test methods to run and/or ignore, this can be useful for sharding tests. Default is taken from the tests zip."
        }
      },
      "type": "object",
      "required": [
        "appBundleId",
        "testSpecialEntitlements",
        "testsZip",
        "xcodeVersion",
        "xctestrun"
      ]
    },
    "google-native:testing/v1:LauncherActivityIntent": {
      "description": "Specifies an intent that starts the main launcher activity.",
      "type": "object"
    },
    "google-native:testing/v1:LauncherActivityIntentResponse": {
      "description": "Specifies an intent that starts the main launcher activity.",
      "type": "object"
    },
    "google-native:testing/v1:ManualSharding": {
      "description": "Shards test cases into the specified groups of packages, classes, and/or methods. With manual sharding enabled, specifying test targets via environment_variables or in InstrumentationTest is invalid.",
      "properties": {
        "testTargetsForShard": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:TestTargetsForShard"
          },
          "description": "Group of packages, classes, and/or test methods to be run for each manually-created shard. You must specify at least one shard if this field is present. When you select one or more physical devices, the number of repeated test_targets_for_shard must be <= 50. When you select one or more ARM virtual devices, it must be <= 200. When you select only x86 virtual devices, it must be <= 500."
        }
      },
      "type": "object",
      "required": [
        "testTargetsForShard"
      ]
    },
    "google-native:testing/v1:ManualShardingResponse": {
      "description": "Shards test cases into the specified groups of packages, classes, and/or methods. With manual sharding enabled, specifying test targets via environment_variables or in InstrumentationTest is invalid.",
      "properties": {
        "testTargetsForShard": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:TestTargetsForShardResponse"
          },
          "description": "Group of packages, classes, and/or test methods to be run for each manually-created shard. You must specify at least one shard if this field is present. When you select one or more physical devices, the number of repeated test_targets_for_shard must be <= 50. When you select one or more ARM virtual devices, it must be <= 200. When you select only x86 virtual devices, it must be <= 500."
        }
      },
      "type": "object",
      "required": [
        "testTargetsForShard"
      ]
    },
    "google-native:testing/v1:NoActivityIntent": {
      "description": "Skips the starting activity",
      "type": "object"
    },
    "google-native:testing/v1:NoActivityIntentResponse": {
      "description": "Skips the starting activity",
      "type": "object"
    },
    "google-native:testing/v1:ObbFile": {
      "description": "An opaque binary blob file to install on the device before the test starts.",
      "properties": {
        "obb": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "Opaque Binary Blob (OBB) file(s) to install on the device."
        },
        "obbFileName": {
          "type": "string",
          "description": "OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \\/Android/obb/\\/ on the device."
        }
      },
      "type": "object",
      "required": [
        "obb",
        "obbFileName"
      ]
    },
    "google-native:testing/v1:ObbFileResponse": {
      "description": "An opaque binary blob file to install on the device before the test starts.",
      "properties": {
        "obb": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "Opaque Binary Blob (OBB) file(s) to install on the device."
        },
        "obbFileName": {
          "type": "string",
          "description": "OBB file name which must conform to the format as specified by Android e.g. [main|patch].0300110.com.example.android.obb which will be installed into \\/Android/obb/\\/ on the device."
        }
      },
      "type": "object",
      "required": [
        "obb",
        "obbFileName"
      ]
    },
    "google-native:testing/v1:RegularFile": {
      "description": "A file or directory to install on the device before the test starts.",
      "properties": {
        "content": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReference",
          "description": "The source file."
        },
        "devicePath": {
          "type": "string",
          "description": "Where to put the content on the device. Must be an absolute, allowlisted path. If the file exists, it will be replaced. The following device-side directories and any of their subdirectories are allowlisted: ${EXTERNAL_STORAGE}, /sdcard, or /storage ${ANDROID_DATA}/local/tmp, or /data/local/tmp Specifying a path outside of these directory trees is invalid. The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device and copy the file there. It is strongly advised to use the Environment API in app and test code to access files on the device in a portable way."
        }
      },
      "type": "object",
      "required": [
        "content",
        "devicePath"
      ]
    },
    "google-native:testing/v1:RegularFileResponse": {
      "description": "A file or directory to install on the device before the test starts.",
      "properties": {
        "content": {
          "$ref": "#/types/google-native:testing%2Fv1:FileReferenceResponse",
          "description": "The source file."
        },
        "devicePath": {
          "type": "string",
          "description": "Where to put the content on the device. Must be an absolute, allowlisted path. If the file exists, it will be replaced. The following device-side directories and any of their subdirectories are allowlisted: ${EXTERNAL_STORAGE}, /sdcard, or /storage ${ANDROID_DATA}/local/tmp, or /data/local/tmp Specifying a path outside of these directory trees is invalid. The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device and copy the file there. It is strongly advised to use the Environment API in app and test code to access files on the device in a portable way."
        }
      },
      "type": "object",
      "required": [
        "content",
        "devicePath"
      ]
    },
    "google-native:testing/v1:ResultStorage": {
      "description": "Locations where the results of running the test are stored.",
      "properties": {
        "googleCloudStorage": {
          "$ref": "#/types/google-native:testing%2Fv1:GoogleCloudStorage",
          "description": "Required."
        },
        "toolResultsHistory": {
          "$ref": "#/types/google-native:testing%2Fv1:ToolResultsHistory",
          "description": "The tool results history that contains the tool results execution that results are written to. If not provided, the service will choose an appropriate value."
        }
      },
      "type": "object",
      "required": [
        "googleCloudStorage"
      ]
    },
    "google-native:testing/v1:ResultStorageResponse": {
      "description": "Locations where the results of running the test are stored.",
      "properties": {
        "googleCloudStorage": {
          "$ref": "#/types/google-native:testing%2Fv1:GoogleCloudStorageResponse",
          "description": "Required."
        },
        "resultsUrl": {
          "type": "string",
          "description": "URL to the results in the Firebase Web Console."
        },
        "toolResultsExecution": {
          "$ref": "#/types/google-native:testing%2Fv1:ToolResultsExecutionResponse",
          "description": "The tool results execution that results are written to."
        },
        "toolResultsHistory": {
          "$ref": "#/types/google-native:testing%2Fv1:ToolResultsHistoryResponse",
          "description": "The tool results history that contains the tool results execution that results are written to. If not provided, the service will choose an appropriate value."
        }
      },
      "type": "object",
      "required": [
        "googleCloudStorage",
        "resultsUrl",
        "toolResultsExecution",
        "toolResultsHistory"
      ]
    },
    "google-native:testing/v1:RoboDirective": {
      "description": "Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.",
      "properties": {
        "actionType": {
          "$ref": "#/types/google-native:testing%2Fv1:RoboDirectiveActionType",
          "description": "The type of action that Robo should perform on the specified element."
        },
        "inputText": {
          "type": "string",
          "description": "The text that Robo is directed to set. If left empty, the directive will be treated as a CLICK on the element matching the resource_name."
        },
        "resourceName": {
          "type": "string",
          "description": "The android resource name of the target UI element. For example, in Java: R.string.foo in xml: @string/foo Only the \"foo\" part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html"
        }
      },
      "type": "object",
      "required": [
        "actionType",
        "resourceName"
      ]
    },
    "google-native:testing/v1:RoboDirectiveActionType": {
      "description": "Required. The type of action that Robo should perform on the specified element.",
      "type": "string",
      "enum": [
        {
          "name": "ActionTypeUnspecified",
          "description": "DO NOT USE. For proto versioning only.",
          "value": "ACTION_TYPE_UNSPECIFIED"
        },
        {
          "name": "SingleClick",
          "description": "Direct Robo to click on the specified element. No-op if specified element is not clickable.",
          "value": "SINGLE_CLICK"
        },
        {
          "name": "EnterText",
          "description": "Direct Robo to enter text on the specified element. No-op if specified element is not enabled or does not allow text entry.",
          "value": "ENTER_TEXT"
        },
        {
          "name": "Ignore",
          "description": "Direct Robo to ignore interactions with a specific element.",
          "value": "IGNORE"
        }
      ]
    },
    "google-native:testing/v1:RoboDirectiveResponse": {
      "description": "Directs Robo to interact with a specific UI element if it is encountered during the crawl. Currently, Robo can perform text entry or element click.",
      "properties": {
        "actionType": {
          "type": "string",
          "description": "The type of action that Robo should perform on the specified element."
        },
        "inputText": {
          "type": "string",
          "description": "The text that Robo is directed to set. If left empty, the directive will be treated as a CLICK on the element matching the resource_name."
        },
        "resourceName": {
          "type": "string",
          "description": "The android resource name of the target UI element. For example, in Java: R.string.foo in xml: @string/foo Only the \"foo\" part is needed. Reference doc: https://developer.android.com/guide/topics/resources/accessing-resources.html"
        }
      },
      "type": "object",
      "required": [
        "actionType",
        "inputText",
        "resourceName"
      ]
    },
    "google-native:testing/v1:RoboStartingIntent": {
      "description": "Message for specifying the start activities to crawl.",
      "properties": {
        "launcherActivity": {
          "$ref": "#/types/google-native:testing%2Fv1:LauncherActivityIntent",
          "description": "An intent that starts the main launcher activity."
        },
        "noActivity": {
          "$ref": "#/types/google-native:testing%2Fv1:NoActivityIntent",
          "description": "Skips the starting activity"
        },
        "startActivity": {
          "$ref": "#/types/google-native:testing%2Fv1:StartActivityIntent",
          "description": "An intent that starts an activity with specific details."
        },
        "timeout": {
          "type": "string",
          "description": "Timeout in seconds for each intent."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:RoboStartingIntentResponse": {
      "description": "Message for specifying the start activities to crawl.",
      "properties": {
        "launcherActivity": {
          "$ref": "#/types/google-native:testing%2Fv1:LauncherActivityIntentResponse",
          "description": "An intent that starts the main launcher activity."
        },
        "noActivity": {
          "$ref": "#/types/google-native:testing%2Fv1:NoActivityIntentResponse",
          "description": "Skips the starting activity"
        },
        "startActivity": {
          "$ref": "#/types/google-native:testing%2Fv1:StartActivityIntentResponse",
          "description": "An intent that starts an activity with specific details."
        },
        "timeout": {
          "type": "string",
          "description": "Timeout in seconds for each intent."
        }
      },
      "type": "object",
      "required": [
        "launcherActivity",
        "noActivity",
        "startActivity",
        "timeout"
      ]
    },
    "google-native:testing/v1:SessionStateEventResponse": {
      "description": "A message encapsulating a series of Session states and the time that the DeviceSession first entered those states.",
      "properties": {
        "eventTime": {
          "type": "string",
          "description": "The time that the session_state first encountered that state."
        },
        "sessionState": {
          "type": "string",
          "description": "The session_state tracked by this event"
        },
        "stateMessage": {
          "type": "string",
          "description": "A human-readable message to explain the state."
        }
      },
      "type": "object",
      "required": [
        "eventTime",
        "sessionState",
        "stateMessage"
      ]
    },
    "google-native:testing/v1:ShardResponse": {
      "description": "Output only. Details about the shard.",
      "properties": {
        "estimatedShardDuration": {
          "type": "string",
          "description": "The estimated shard duration based on previous test case timing records, if available."
        },
        "numShards": {
          "type": "integer",
          "description": "The total number of shards."
        },
        "shardIndex": {
          "type": "integer",
          "description": "The index of the shard among all the shards."
        },
        "testTargetsForShard": {
          "$ref": "#/types/google-native:testing%2Fv1:TestTargetsForShardResponse",
          "description": "Test targets for each shard. Only set for manual sharding."
        }
      },
      "type": "object",
      "required": [
        "estimatedShardDuration",
        "numShards",
        "shardIndex",
        "testTargetsForShard"
      ]
    },
    "google-native:testing/v1:ShardingOption": {
      "description": "Options for enabling sharding.",
      "properties": {
        "manualSharding": {
          "$ref": "#/types/google-native:testing%2Fv1:ManualSharding",
          "description": "Shards test cases into the specified groups of packages, classes, and/or methods."
        },
        "smartSharding": {
          "$ref": "#/types/google-native:testing%2Fv1:SmartSharding",
          "description": "Shards test based on previous test case timing records."
        },
        "uniformSharding": {
          "$ref": "#/types/google-native:testing%2Fv1:UniformSharding",
          "description": "Uniformly shards test cases given a total number of shards."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:ShardingOptionResponse": {
      "description": "Options for enabling sharding.",
      "properties": {
        "manualSharding": {
          "$ref": "#/types/google-native:testing%2Fv1:ManualShardingResponse",
          "description": "Shards test cases into the specified groups of packages, classes, and/or methods."
        },
        "smartSharding": {
          "$ref": "#/types/google-native:testing%2Fv1:SmartShardingResponse",
          "description": "Shards test based on previous test case timing records."
        },
        "uniformSharding": {
          "$ref": "#/types/google-native:testing%2Fv1:UniformShardingResponse",
          "description": "Uniformly shards test cases given a total number of shards."
        }
      },
      "type": "object",
      "required": [
        "manualSharding",
        "smartSharding",
        "uniformSharding"
      ]
    },
    "google-native:testing/v1:SmartSharding": {
      "description": "Shards test based on previous test case timing records.",
      "properties": {
        "targetedShardDuration": {
          "type": "string",
          "description": "The amount of time tests within a shard should take. Default: 300 seconds (5 minutes). The minimum allowed: 120 seconds (2 minutes). The shard count is dynamically set based on time, up to the maximum shard limit (described below). To guarantee at least one test case for each shard, the number of shards will not exceed the number of test cases. Shard duration will be exceeded if: - The maximum shard limit is reached and there is more calculated test time remaining to allocate into shards. - Any individual test is estimated to be longer than the targeted shard duration. Shard duration is not guaranteed because smart sharding uses test case history and default durations which may not be accurate. The rules for finding the test case timing records are: - If the service has processed a test case in the last 30 days, the record of the latest successful test case will be used. - For new test cases, the average duration of other known test cases will be used. - If there are no previous test case timing records available, the default test case duration is 15 seconds. Because the actual shard duration can exceed the targeted shard duration, we recommend that you set the targeted value at least 5 minutes less than the maximum allowed test timeout (45 minutes for physical devices and 60 minutes for virtual), or that you use the custom test timeout value that you set. This approach avoids cancelling the shard before all tests can finish. Note that there is a limit for maximum number of shards. When you select one or more physical devices, the number of shards must be <= 50. When you select one or more ARM virtual devices, it must be <= 200. When you select only x86 virtual devices, it must be <= 500. To guarantee at least one test case for per shard, the number of shards will not exceed the number of test cases. Each shard created counts toward daily test quota."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:SmartShardingResponse": {
      "description": "Shards test based on previous test case timing records.",
      "properties": {
        "targetedShardDuration": {
          "type": "string",
          "description": "The amount of time tests within a shard should take. Default: 300 seconds (5 minutes). The minimum allowed: 120 seconds (2 minutes). The shard count is dynamically set based on time, up to the maximum shard limit (described below). To guarantee at least one test case for each shard, the number of shards will not exceed the number of test cases. Shard duration will be exceeded if: - The maximum shard limit is reached and there is more calculated test time remaining to allocate into shards. - Any individual test is estimated to be longer than the targeted shard duration. Shard duration is not guaranteed because smart sharding uses test case history and default durations which may not be accurate. The rules for finding the test case timing records are: - If the service has processed a test case in the last 30 days, the record of the latest successful test case will be used. - For new test cases, the average duration of other known test cases will be used. - If there are no previous test case timing records available, the default test case duration is 15 seconds. Because the actual shard duration can exceed the targeted shard duration, we recommend that you set the targeted value at least 5 minutes less than the maximum allowed test timeout (45 minutes for physical devices and 60 minutes for virtual), or that you use the custom test timeout value that you set. This approach avoids cancelling the shard before all tests can finish. Note that there is a limit for maximum number of shards. When you select one or more physical devices, the number of shards must be <= 50. When you select one or more ARM virtual devices, it must be <= 200. When you select only x86 virtual devices, it must be <= 500. To guarantee at least one test case for per shard, the number of shards will not exceed the number of test cases. Each shard created counts toward daily test quota."
        }
      },
      "type": "object",
      "required": [
        "targetedShardDuration"
      ]
    },
    "google-native:testing/v1:StartActivityIntent": {
      "description": "A starting intent specified by an action, uri, and categories.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Action name. Required for START_ACTIVITY."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Intent categories to set on the intent."
        },
        "uri": {
          "type": "string",
          "description": "URI for the action."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:StartActivityIntentResponse": {
      "description": "A starting intent specified by an action, uri, and categories.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Action name. Required for START_ACTIVITY."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Intent categories to set on the intent."
        },
        "uri": {
          "type": "string",
          "description": "URI for the action."
        }
      },
      "type": "object",
      "required": [
        "action",
        "categories",
        "uri"
      ]
    },
    "google-native:testing/v1:SystraceSetup": {
      "properties": {
        "durationSeconds": {
          "type": "integer",
          "description": "Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:SystraceSetupResponse": {
      "properties": {
        "durationSeconds": {
          "type": "integer",
          "description": "Systrace duration in seconds. Should be between 1 and 30 seconds. 0 disables systrace."
        }
      },
      "type": "object",
      "required": [
        "durationSeconds"
      ]
    },
    "google-native:testing/v1:TestDetailsResponse": {
      "description": "Additional details about the progress of the running test.",
      "properties": {
        "errorMessage": {
          "type": "string",
          "description": "If the TestState is ERROR, then this string will contain human-readable details about the error."
        },
        "progressMessages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Human-readable, detailed descriptions of the test's progress. For example: \"Provisioning a device\", \"Starting Test\". During the course of execution new data may be appended to the end of progress_messages."
        }
      },
      "type": "object",
      "required": [
        "errorMessage",
        "progressMessages"
      ]
    },
    "google-native:testing/v1:TestExecutionResponse": {
      "description": "A single test executed in a single environment.",
      "properties": {
        "environment": {
          "$ref": "#/types/google-native:testing%2Fv1:EnvironmentResponse",
          "description": "How the host machine(s) are configured."
        },
        "matrixId": {
          "type": "string",
          "description": "Id of the containing TestMatrix."
        },
        "project": {
          "type": "string",
          "description": "The cloud project that owns the test execution."
        },
        "shard": {
          "$ref": "#/types/google-native:testing%2Fv1:ShardResponse",
          "description": "Details about the shard."
        },
        "state": {
          "type": "string",
          "description": "Indicates the current progress of the test execution (e.g., FINISHED)."
        },
        "testDetails": {
          "$ref": "#/types/google-native:testing%2Fv1:TestDetailsResponse",
          "description": "Additional details about the running test."
        },
        "testSpecification": {
          "$ref": "#/types/google-native:testing%2Fv1:TestSpecificationResponse",
          "description": "How to run the test."
        },
        "timestamp": {
          "type": "string",
          "description": "The time this test execution was initially created."
        },
        "toolResultsStep": {
          "$ref": "#/types/google-native:testing%2Fv1:ToolResultsStepResponse",
          "description": "Where the results for this execution are written."
        }
      },
      "type": "object",
      "required": [
        "environment",
        "matrixId",
        "project",
        "shard",
        "state",
        "testDetails",
        "testSpecification",
        "timestamp",
        "toolResultsStep"
      ]
    },
    "google-native:testing/v1:TestSetup": {
      "description": "A description of how to set up the Android device prior to running the test.",
      "properties": {
        "account": {
          "$ref": "#/types/google-native:testing%2Fv1:Account",
          "description": "The device will be logged in on this account for the duration of the test."
        },
        "additionalApks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:Apk"
          },
          "description": "APKs to install in addition to those being directly tested. These will be installed after the app under test. Currently capped at 100."
        },
        "directoriesToPull": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of directories on the device to upload to GCS at the end of the test; they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device."
        },
        "dontAutograntPermissions": {
          "type": "boolean",
          "description": "Whether to prevent all runtime permissions to be granted at app install"
        },
        "environmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:EnvironmentVariable"
          },
          "description": "Environment variables to set for the test (only applicable for instrumentation tests)."
        },
        "filesToPush": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:DeviceFile"
          },
          "description": "List of files to push to the device before starting the test."
        },
        "initialSetupApks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:Apk"
          },
          "description": "Optional. Initial setup APKs to install before the app under test is installed. Currently capped at 100."
        },
        "networkProfile": {
          "type": "string",
          "description": "The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog."
        },
        "systrace": {
          "$ref": "#/types/google-native:testing%2Fv1:SystraceSetup",
          "description": "Systrace configuration for the run. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results.",
          "deprecationMessage": "Systrace configuration for the run. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:TestSetupResponse": {
      "description": "A description of how to set up the Android device prior to running the test.",
      "properties": {
        "account": {
          "$ref": "#/types/google-native:testing%2Fv1:AccountResponse",
          "description": "The device will be logged in on this account for the duration of the test."
        },
        "additionalApks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:ApkResponse"
          },
          "description": "APKs to install in addition to those being directly tested. These will be installed after the app under test. Currently capped at 100."
        },
        "directoriesToPull": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of directories on the device to upload to GCS at the end of the test; they must be absolute paths under /sdcard, /storage or /data/local/tmp. Path names are restricted to characters a-z A-Z 0-9 _ - . + and / Note: The paths /sdcard and /data will be made available and treated as implicit path substitutions. E.g. if /sdcard on a particular device does not map to external storage, the system will replace it with the external storage path prefix for that device."
        },
        "dontAutograntPermissions": {
          "type": "boolean",
          "description": "Whether to prevent all runtime permissions to be granted at app install"
        },
        "environmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:EnvironmentVariableResponse"
          },
          "description": "Environment variables to set for the test (only applicable for instrumentation tests)."
        },
        "filesToPush": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:DeviceFileResponse"
          },
          "description": "List of files to push to the device before starting the test."
        },
        "initialSetupApks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:ApkResponse"
          },
          "description": "Optional. Initial setup APKs to install before the app under test is installed. Currently capped at 100."
        },
        "networkProfile": {
          "type": "string",
          "description": "The network traffic profile used for running the test. Available network profiles can be queried by using the NETWORK_CONFIGURATION environment type when calling TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog."
        },
        "systrace": {
          "$ref": "#/types/google-native:testing%2Fv1:SystraceSetupResponse",
          "description": "Systrace configuration for the run. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results.",
          "deprecationMessage": "Systrace configuration for the run. Deprecated: Systrace used Python 2 which was sunsetted on 2020-01-01. Systrace is no longer supported in the Cloud Testing API, and no Systrace file will be provided in the results."
        }
      },
      "type": "object",
      "required": [
        "account",
        "additionalApks",
        "directoriesToPull",
        "dontAutograntPermissions",
        "environmentVariables",
        "filesToPush",
        "initialSetupApks",
        "networkProfile",
        "systrace"
      ]
    },
    "google-native:testing/v1:TestSpecification": {
      "description": "A description of how to run the test.",
      "properties": {
        "androidInstrumentationTest": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidInstrumentationTest",
          "description": "An Android instrumentation test."
        },
        "androidRoboTest": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidRoboTest",
          "description": "An Android robo test."
        },
        "androidTestLoop": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidTestLoop",
          "description": "An Android Application with a Test Loop."
        },
        "disablePerformanceMetrics": {
          "type": "boolean",
          "description": "Disables performance metrics recording. May reduce test latency."
        },
        "disableVideoRecording": {
          "type": "boolean",
          "description": "Disables video recording. May reduce test latency."
        },
        "iosRoboTest": {
          "$ref": "#/types/google-native:testing%2Fv1:IosRoboTest",
          "description": "An iOS Robo test."
        },
        "iosTestLoop": {
          "$ref": "#/types/google-native:testing%2Fv1:IosTestLoop",
          "description": "An iOS application with a test loop."
        },
        "iosTestSetup": {
          "$ref": "#/types/google-native:testing%2Fv1:IosTestSetup",
          "description": "Test setup requirements for iOS."
        },
        "iosXcTest": {
          "$ref": "#/types/google-native:testing%2Fv1:IosXcTest",
          "description": "An iOS XCTest, via an .xctestrun file."
        },
        "testSetup": {
          "$ref": "#/types/google-native:testing%2Fv1:TestSetup",
          "description": "Test setup requirements for Android e.g. files to install, bootstrap scripts."
        },
        "testTimeout": {
          "type": "string",
          "description": "Max time a test execution is allowed to run before it is automatically cancelled. The default value is 5 min."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:TestSpecificationResponse": {
      "description": "A description of how to run the test.",
      "properties": {
        "androidInstrumentationTest": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidInstrumentationTestResponse",
          "description": "An Android instrumentation test."
        },
        "androidRoboTest": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidRoboTestResponse",
          "description": "An Android robo test."
        },
        "androidTestLoop": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidTestLoopResponse",
          "description": "An Android Application with a Test Loop."
        },
        "disablePerformanceMetrics": {
          "type": "boolean",
          "description": "Disables performance metrics recording. May reduce test latency."
        },
        "disableVideoRecording": {
          "type": "boolean",
          "description": "Disables video recording. May reduce test latency."
        },
        "iosRoboTest": {
          "$ref": "#/types/google-native:testing%2Fv1:IosRoboTestResponse",
          "description": "An iOS Robo test."
        },
        "iosTestLoop": {
          "$ref": "#/types/google-native:testing%2Fv1:IosTestLoopResponse",
          "description": "An iOS application with a test loop."
        },
        "iosTestSetup": {
          "$ref": "#/types/google-native:testing%2Fv1:IosTestSetupResponse",
          "description": "Test setup requirements for iOS."
        },
        "iosXcTest": {
          "$ref": "#/types/google-native:testing%2Fv1:IosXcTestResponse",
          "description": "An iOS XCTest, via an .xctestrun file."
        },
        "testSetup": {
          "$ref": "#/types/google-native:testing%2Fv1:TestSetupResponse",
          "description": "Test setup requirements for Android e.g. files to install, bootstrap scripts."
        },
        "testTimeout": {
          "type": "string",
          "description": "Max time a test execution is allowed to run before it is automatically cancelled. The default value is 5 min."
        }
      },
      "type": "object",
      "required": [
        "androidInstrumentationTest",
        "androidRoboTest",
        "androidTestLoop",
        "disablePerformanceMetrics",
        "disableVideoRecording",
        "iosRoboTest",
        "iosTestLoop",
        "iosTestSetup",
        "iosXcTest",
        "testSetup",
        "testTimeout"
      ]
    },
    "google-native:testing/v1:TestTargetsForShard": {
      "description": "Test targets for a shard.",
      "properties": {
        "testTargets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, \"package com.my.packages\" \"class com.my.package.MyClass\". The number of test_targets must be greater than 0."
        }
      },
      "type": "object"
    },
    "google-native:testing/v1:TestTargetsForShardResponse": {
      "description": "Test targets for a shard.",
      "properties": {
        "testTargets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Group of packages, classes, and/or test methods to be run for each shard. The targets need to be specified in AndroidJUnitRunner argument format. For example, \"package com.my.packages\" \"class com.my.package.MyClass\". The number of test_targets must be greater than 0."
        }
      },
      "type": "object",
      "required": [
        "testTargets"
      ]
    },
    "google-native:testing/v1:ToolResultsExecutionResponse": {
      "description": "Represents a tool results execution resource. This has the results of a TestMatrix.",
      "properties": {
        "executionId": {
          "type": "string",
          "description": "A tool results execution ID."
        },
        "historyId": {
          "type": "string",
          "description": "A tool results history ID."
        },
        "project": {
          "type": "string",
          "description": "The cloud project that owns the tool results execution."
        }
      },
      "type": "object",
      "required": [
        "executionId",
        "historyId",
        "project"
      ]
    },
    "google-native:testing/v1:ToolResultsHistory": {
      "description": "Represents a tool results history resource.",
      "properties": {
        "historyId": {
          "type": "string",
          "description": "A tool results history ID."
        },
        "project": {
          "type": "string",
          "description": "The cloud project that owns the tool results history."
        }
      },
      "type": "object",
      "required": [
        "historyId",
        "project"
      ]
    },
    "google-native:testing/v1:ToolResultsHistoryResponse": {
      "description": "Represents a tool results history resource.",
      "properties": {
        "historyId": {
          "type": "string",
          "description": "A tool results history ID."
        },
        "project": {
          "type": "string",
          "description": "The cloud project that owns the tool results history."
        }
      },
      "type": "object",
      "required": [
        "historyId",
        "project"
      ]
    },
    "google-native:testing/v1:ToolResultsStepResponse": {
      "description": "Represents a tool results step resource. This has the results of a TestExecution.",
      "properties": {
        "executionId": {
          "type": "string",
          "description": "A tool results execution ID."
        },
        "historyId": {
          "type": "string",
          "description": "A tool results history ID."
        },
        "project": {
          "type": "string",
          "description": "The cloud project that owns the tool results step."
        },
        "stepId": {
          "type": "string",
          "description": "A tool results step ID."
        }
      },
      "type": "object",
      "required": [
        "executionId",
        "historyId",
        "project",
        "stepId"
      ]
    },
    "google-native:testing/v1:UniformSharding": {
      "description": "Uniformly shards test cases given a total number of shards. For instrumentation tests, it will be translated to \"-e numShard\" and \"-e shardIndex\" AndroidJUnitRunner arguments. With uniform sharding enabled, specifying either of these sharding arguments via `environment_variables` is invalid. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards.",
      "properties": {
        "numShards": {
          "type": "integer",
          "description": "The total number of shards to create. This must always be a positive number that is no greater than the total number of test cases. When you select one or more physical devices, the number of shards must be <= 50. When you select one or more ARM virtual devices, it must be <= 200. When you select only x86 virtual devices, it must be <= 500."
        }
      },
      "type": "object",
      "required": [
        "numShards"
      ]
    },
    "google-native:testing/v1:UniformShardingResponse": {
      "description": "Uniformly shards test cases given a total number of shards. For instrumentation tests, it will be translated to \"-e numShard\" and \"-e shardIndex\" AndroidJUnitRunner arguments. With uniform sharding enabled, specifying either of these sharding arguments via `environment_variables` is invalid. Based on the sharding mechanism AndroidJUnitRunner uses, there is no guarantee that test cases will be distributed uniformly across all shards.",
      "properties": {
        "numShards": {
          "type": "integer",
          "description": "The total number of shards to create. This must always be a positive number that is no greater than the total number of test cases. When you select one or more physical devices, the number of shards must be <= 50. When you select one or more ARM virtual devices, it must be <= 200. When you select only x86 virtual devices, it must be <= 500."
        }
      },
      "type": "object",
      "required": [
        "numShards"
      ]
    },
    "google-native:toolresults/v1beta3:AndroidAppInfo": {
      "description": "Android app information.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the app. Optional"
        },
        "packageName": {
          "type": "string",
          "description": "The package name of the app. Required."
        },
        "versionCode": {
          "type": "string",
          "description": "The internal version code of the app. Optional."
        },
        "versionName": {
          "type": "string",
          "description": "The version name of the app. Optional."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:AndroidAppInfoResponse": {
      "description": "Android app information.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the app. Optional"
        },
        "packageName": {
          "type": "string",
          "description": "The package name of the app. Required."
        },
        "versionCode": {
          "type": "string",
          "description": "The internal version code of the app. Optional."
        },
        "versionName": {
          "type": "string",
          "description": "The version name of the app. Optional."
        }
      },
      "type": "object",
      "required": [
        "name",
        "packageName",
        "versionCode",
        "versionName"
      ]
    },
    "google-native:toolresults/v1beta3:AndroidInstrumentationTest": {
      "description": "A test of an Android application that can control an Android component independently of its normal lifecycle. See for more information on types of Android tests.",
      "properties": {
        "testPackageId": {
          "type": "string",
          "description": "The java package for the test to be executed. Required"
        },
        "testRunnerClass": {
          "type": "string",
          "description": "The InstrumentationTestRunner class. Required"
        },
        "testTargets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Each target must be fully qualified with the package name or class name, in one of these formats: - \"package package_name\" - \"class package_name.class_name\" - \"class package_name.class_name#method_name\" If empty, all targets in the module will be run."
        },
        "useOrchestrator": {
          "type": "boolean",
          "description": "The flag indicates whether Android Test Orchestrator will be used to run test or not."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:AndroidInstrumentationTestResponse": {
      "description": "A test of an Android application that can control an Android component independently of its normal lifecycle. See for more information on types of Android tests.",
      "properties": {
        "testPackageId": {
          "type": "string",
          "description": "The java package for the test to be executed. Required"
        },
        "testRunnerClass": {
          "type": "string",
          "description": "The InstrumentationTestRunner class. Required"
        },
        "testTargets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Each target must be fully qualified with the package name or class name, in one of these formats: - \"package package_name\" - \"class package_name.class_name\" - \"class package_name.class_name#method_name\" If empty, all targets in the module will be run."
        },
        "useOrchestrator": {
          "type": "boolean",
          "description": "The flag indicates whether Android Test Orchestrator will be used to run test or not."
        }
      },
      "type": "object",
      "required": [
        "testPackageId",
        "testRunnerClass",
        "testTargets",
        "useOrchestrator"
      ]
    },
    "google-native:toolresults/v1beta3:AndroidRoboTest": {
      "description": "A test of an android application that explores the application on a virtual or physical Android device, finding culprits and crashes as it goes.",
      "properties": {
        "appInitialActivity": {
          "type": "string",
          "description": "The initial activity that should be used to start the app. Optional"
        },
        "bootstrapPackageId": {
          "type": "string",
          "description": "The java package for the bootstrap. Optional"
        },
        "bootstrapRunnerClass": {
          "type": "string",
          "description": "The runner class for the bootstrap. Optional"
        },
        "maxDepth": {
          "type": "integer",
          "description": "The max depth of the traversal stack Robo can explore. Optional"
        },
        "maxSteps": {
          "type": "integer",
          "description": "The max number of steps/actions Robo can execute. Default is no limit (0). Optional"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:AndroidRoboTestResponse": {
      "description": "A test of an android application that explores the application on a virtual or physical Android device, finding culprits and crashes as it goes.",
      "properties": {
        "appInitialActivity": {
          "type": "string",
          "description": "The initial activity that should be used to start the app. Optional"
        },
        "bootstrapPackageId": {
          "type": "string",
          "description": "The java package for the bootstrap. Optional"
        },
        "bootstrapRunnerClass": {
          "type": "string",
          "description": "The runner class for the bootstrap. Optional"
        },
        "maxDepth": {
          "type": "integer",
          "description": "The max depth of the traversal stack Robo can explore. Optional"
        },
        "maxSteps": {
          "type": "integer",
          "description": "The max number of steps/actions Robo can execute. Default is no limit (0). Optional"
        }
      },
      "type": "object",
      "required": [
        "appInitialActivity",
        "bootstrapPackageId",
        "bootstrapRunnerClass",
        "maxDepth",
        "maxSteps"
      ]
    },
    "google-native:toolresults/v1beta3:AndroidTest": {
      "description": "An Android mobile test specification.",
      "properties": {
        "androidAppInfo": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidAppInfo",
          "description": "Information about the application under test."
        },
        "androidInstrumentationTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidInstrumentationTest",
          "description": "An Android instrumentation test."
        },
        "androidRoboTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidRoboTest",
          "description": "An Android robo test."
        },
        "androidTestLoop": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidTestLoop",
          "description": "An Android test loop."
        },
        "testTimeout": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Duration",
          "description": "Max time a test is allowed to run before it is automatically cancelled."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:AndroidTestLoop": {
      "description": "Test Loops are tests that can be launched by the app itself, determining when to run by listening for an intent.",
      "type": "object"
    },
    "google-native:toolresults/v1beta3:AndroidTestLoopResponse": {
      "description": "Test Loops are tests that can be launched by the app itself, determining when to run by listening for an intent.",
      "type": "object"
    },
    "google-native:toolresults/v1beta3:AndroidTestResponse": {
      "description": "An Android mobile test specification.",
      "properties": {
        "androidAppInfo": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidAppInfoResponse",
          "description": "Information about the application under test."
        },
        "androidInstrumentationTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidInstrumentationTestResponse",
          "description": "An Android instrumentation test."
        },
        "androidRoboTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidRoboTestResponse",
          "description": "An Android robo test."
        },
        "androidTestLoop": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidTestLoopResponse",
          "description": "An Android test loop."
        },
        "testTimeout": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
          "description": "Max time a test is allowed to run before it is automatically cancelled."
        }
      },
      "type": "object",
      "required": [
        "androidAppInfo",
        "androidInstrumentationTest",
        "androidRoboTest",
        "androidTestLoop",
        "testTimeout"
      ]
    },
    "google-native:toolresults/v1beta3:Any": {
      "description": " `Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message. Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional generated methods of the Any type. Example 1: Pack and unpack a message in C++. Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { ... } Example 2: Pack and unpack a message in Java. Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ... Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := ptypes.MarshalAny(foo) ... foo := &pb.Foo{} if err := ptypes.UnmarshalAny(any, foo); err != nil { ... } The pack methods provided by protobuf library will by default use 'type.googleapis.com/full.type.name' as the type URL and the unpack methods only use the fully qualified type name after the last '/' in the type URL, for example \"foo.bar.com/x/y.z\" will yield type name \"y.z\". # JSON The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded message, with an additional field `@type` which contains the type URL. Example: package google.profile; message Person { string first_name = 1; string last_name = 2; } { \"@type\": \"type.googleapis.com/google.profile.Person\", \"firstName\": , \"lastName\": } If the embedded message type is well-known and has a custom JSON representation, that representation will be embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for message google.protobuf.Duration): { \"@type\": \"type.googleapis.com/google.protobuf.Duration\", \"value\": \"1.212s\" }",
      "properties": {
        "typeUrl": {
          "type": "string",
          "description": "A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one \"/\" character. The last segment of the URL's path must represent the fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading \".\" is not accepted). In practice, teams usually precompile into the binary all types that they expect it to use in the context of Any. However, for URLs which use the scheme `http`, `https`, or no scheme, one can optionally set up a type server that maps type URLs to message definitions as follows: * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a google.protobuf.Type value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage breaking changes.) Note: this functionality is not currently available in the official protobuf release, and it is not used for type URLs beginning with type.googleapis.com. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics."
        },
        "value": {
          "type": "string",
          "description": "Must be a valid serialized protocol buffer of the above specified type."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:AnyResponse": {
      "description": " `Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message. Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional generated methods of the Any type. Example 1: Pack and unpack a message in C++. Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { ... } Example 2: Pack and unpack a message in Java. Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ... Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := ptypes.MarshalAny(foo) ... foo := &pb.Foo{} if err := ptypes.UnmarshalAny(any, foo); err != nil { ... } The pack methods provided by protobuf library will by default use 'type.googleapis.com/full.type.name' as the type URL and the unpack methods only use the fully qualified type name after the last '/' in the type URL, for example \"foo.bar.com/x/y.z\" will yield type name \"y.z\". # JSON The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded message, with an additional field `@type` which contains the type URL. Example: package google.profile; message Person { string first_name = 1; string last_name = 2; } { \"@type\": \"type.googleapis.com/google.profile.Person\", \"firstName\": , \"lastName\": } If the embedded message type is well-known and has a custom JSON representation, that representation will be embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for message google.protobuf.Duration): { \"@type\": \"type.googleapis.com/google.protobuf.Duration\", \"value\": \"1.212s\" }",
      "properties": {
        "typeUrl": {
          "type": "string",
          "description": "A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one \"/\" character. The last segment of the URL's path must represent the fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading \".\" is not accepted). In practice, teams usually precompile into the binary all types that they expect it to use in the context of Any. However, for URLs which use the scheme `http`, `https`, or no scheme, one can optionally set up a type server that maps type URLs to message definitions as follows: * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a google.protobuf.Type value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage breaking changes.) Note: this functionality is not currently available in the official protobuf release, and it is not used for type URLs beginning with type.googleapis.com. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics."
        },
        "value": {
          "type": "string",
          "description": "Must be a valid serialized protocol buffer of the above specified type."
        }
      },
      "type": "object",
      "required": [
        "typeUrl",
        "value"
      ]
    },
    "google-native:toolresults/v1beta3:BasicPerfSampleSeries": {
      "description": "Encapsulates the metadata for basic sample series represented by a line chart",
      "properties": {
        "perfMetricType": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:BasicPerfSampleSeriesPerfMetricType"
        },
        "perfUnit": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:BasicPerfSampleSeriesPerfUnit"
        },
        "sampleSeriesLabel": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:BasicPerfSampleSeriesSampleSeriesLabel"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:BasicPerfSampleSeriesPerfMetricType": {
      "type": "string",
      "enum": [
        {
          "name": "PerfMetricTypeUnspecified",
          "value": "perfMetricTypeUnspecified"
        },
        {
          "name": "Memory",
          "value": "memory"
        },
        {
          "name": "Cpu",
          "value": "cpu"
        },
        {
          "name": "Network",
          "value": "network"
        },
        {
          "name": "Graphics",
          "value": "graphics"
        }
      ]
    },
    "google-native:toolresults/v1beta3:BasicPerfSampleSeriesPerfUnit": {
      "type": "string",
      "enum": [
        {
          "name": "PerfUnitUnspecified",
          "value": "perfUnitUnspecified"
        },
        {
          "name": "Kibibyte",
          "value": "kibibyte"
        },
        {
          "name": "Percent",
          "value": "percent"
        },
        {
          "name": "BytesPerSecond",
          "value": "bytesPerSecond"
        },
        {
          "name": "FramesPerSecond",
          "value": "framesPerSecond"
        },
        {
          "name": "Byte",
          "value": "byte"
        }
      ]
    },
    "google-native:toolresults/v1beta3:BasicPerfSampleSeriesResponse": {
      "description": "Encapsulates the metadata for basic sample series represented by a line chart",
      "properties": {
        "perfMetricType": {
          "type": "string"
        },
        "perfUnit": {
          "type": "string"
        },
        "sampleSeriesLabel": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "perfMetricType",
        "perfUnit",
        "sampleSeriesLabel"
      ]
    },
    "google-native:toolresults/v1beta3:BasicPerfSampleSeriesSampleSeriesLabel": {
      "type": "string",
      "enum": [
        {
          "name": "SampleSeriesTypeUnspecified",
          "value": "sampleSeriesTypeUnspecified"
        },
        {
          "name": "MemoryRssPrivate",
          "description": "Memory sample series",
          "value": "memoryRssPrivate"
        },
        {
          "name": "MemoryRssShared",
          "value": "memoryRssShared"
        },
        {
          "name": "MemoryRssTotal",
          "value": "memoryRssTotal"
        },
        {
          "name": "MemoryTotal",
          "value": "memoryTotal"
        },
        {
          "name": "CpuUser",
          "description": "CPU sample series",
          "value": "cpuUser"
        },
        {
          "name": "CpuKernel",
          "value": "cpuKernel"
        },
        {
          "name": "CpuTotal",
          "value": "cpuTotal"
        },
        {
          "name": "NtBytesTransferred",
          "description": "Network sample series",
          "value": "ntBytesTransferred"
        },
        {
          "name": "NtBytesReceived",
          "value": "ntBytesReceived"
        },
        {
          "name": "NetworkSent",
          "value": "networkSent"
        },
        {
          "name": "NetworkReceived",
          "value": "networkReceived"
        },
        {
          "name": "GraphicsFrameRate",
          "description": "Graphics sample series",
          "value": "graphicsFrameRate"
        }
      ]
    },
    "google-native:toolresults/v1beta3:Duration": {
      "description": " A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.",
      "properties": {
        "nanos": {
          "type": "integer",
          "description": "Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field. Must be from -999,999,999 to +999,999,999 inclusive."
        },
        "seconds": {
          "type": "string",
          "description": "Signed seconds of the span of time. Must be from -315,576,000,000 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"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:DurationResponse": {
      "description": " A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.",
      "properties": {
        "nanos": {
          "type": "integer",
          "description": "Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field. Must be from -999,999,999 to +999,999,999 inclusive."
        },
        "seconds": {
          "type": "string",
          "description": "Signed seconds of the span of time. Must be from -315,576,000,000 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"
        }
      },
      "type": "object",
      "required": [
        "nanos",
        "seconds"
      ]
    },
    "google-native:toolresults/v1beta3:ExecutionState": {
      "description": "The initial state is IN_PROGRESS. The only legal state transitions is from IN_PROGRESS to COMPLETE. A PRECONDITION_FAILED will be returned if an invalid transition is requested. The state can only be set to COMPLETE once. A FAILED_PRECONDITION will be returned if the state is set to COMPLETE multiple times. If the state is set to COMPLETE, all the in-progress steps within the execution will be set as COMPLETE. If the outcome of the step is not set, the outcome will be set to INCONCLUSIVE. - In response always set - In create/update request: optional",
      "type": "string",
      "enum": [
        {
          "name": "UnknownState",
          "description": "Should never be in this state. Exists for proto deserialization backward compatibility.",
          "value": "unknownState"
        },
        {
          "name": "Pending",
          "description": "The Execution/Step is created, ready to run, but not running yet. If an Execution/Step is created without initial state, it is assumed that the Execution/Step is in PENDING state.",
          "value": "pending"
        },
        {
          "name": "InProgress",
          "description": "The Execution/Step is in progress.",
          "value": "inProgress"
        },
        {
          "name": "Complete",
          "description": "The finalized, immutable state. Steps/Executions in this state cannot be modified.",
          "value": "complete"
        }
      ]
    },
    "google-native:toolresults/v1beta3:FailureDetail": {
      "description": "Details for an outcome with a FAILURE outcome summary.",
      "properties": {
        "crashed": {
          "type": "boolean",
          "description": "If the failure was severe because the system (app) under test crashed."
        },
        "deviceOutOfMemory": {
          "type": "boolean",
          "description": "If the device ran out of memory during a test, causing the test to crash."
        },
        "failedRoboscript": {
          "type": "boolean",
          "description": "If the Roboscript failed to complete successfully, e.g., because a Roboscript action or assertion failed or a Roboscript action could not be matched during the entire crawl."
        },
        "notInstalled": {
          "type": "boolean",
          "description": "If an app is not installed and thus no test can be run with the app. This might be caused by trying to run a test on an unsupported platform."
        },
        "otherNativeCrash": {
          "type": "boolean",
          "description": "If a native process (including any other than the app) crashed."
        },
        "timedOut": {
          "type": "boolean",
          "description": "If the test overran some time limit, and that is why it failed."
        },
        "unableToCrawl": {
          "type": "boolean",
          "description": "If the robo was unable to crawl the app; perhaps because the app did not start."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:FailureDetailResponse": {
      "description": "Details for an outcome with a FAILURE outcome summary.",
      "properties": {
        "crashed": {
          "type": "boolean",
          "description": "If the failure was severe because the system (app) under test crashed."
        },
        "deviceOutOfMemory": {
          "type": "boolean",
          "description": "If the device ran out of memory during a test, causing the test to crash."
        },
        "failedRoboscript": {
          "type": "boolean",
          "description": "If the Roboscript failed to complete successfully, e.g., because a Roboscript action or assertion failed or a Roboscript action could not be matched during the entire crawl."
        },
        "notInstalled": {
          "type": "boolean",
          "description": "If an app is not installed and thus no test can be run with the app. This might be caused by trying to run a test on an unsupported platform."
        },
        "otherNativeCrash": {
          "type": "boolean",
          "description": "If a native process (including any other than the app) crashed."
        },
        "timedOut": {
          "type": "boolean",
          "description": "If the test overran some time limit, and that is why it failed."
        },
        "unableToCrawl": {
          "type": "boolean",
          "description": "If the robo was unable to crawl the app; perhaps because the app did not start."
        }
      },
      "type": "object",
      "required": [
        "crashed",
        "deviceOutOfMemory",
        "failedRoboscript",
        "notInstalled",
        "otherNativeCrash",
        "timedOut",
        "unableToCrawl"
      ]
    },
    "google-native:toolresults/v1beta3:FileReference": {
      "description": "A reference to a file.",
      "properties": {
        "fileUri": {
          "type": "string",
          "description": "The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:FileReferenceResponse": {
      "description": "A reference to a file.",
      "properties": {
        "fileUri": {
          "type": "string",
          "description": "The URI of a file stored in Google Cloud Storage. For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://mybucket/path/to/test.xml#1360383693690000 An INVALID_ARGUMENT error will be returned if the URI format is not supported. - In response: always set - In create/update request: always set"
        }
      },
      "type": "object",
      "required": [
        "fileUri"
      ]
    },
    "google-native:toolresults/v1beta3:HistoryTestPlatform": {
      "description": "The platform of the test history. - In response: always set. Returns the platform of the last execution if unknown.",
      "type": "string",
      "enum": [
        {
          "name": "UnknownPlatform",
          "value": "unknownPlatform"
        },
        {
          "name": "Android",
          "value": "android"
        },
        {
          "name": "Ios",
          "value": "ios"
        }
      ]
    },
    "google-native:toolresults/v1beta3:InconclusiveDetail": {
      "description": "Details for an outcome with an INCONCLUSIVE outcome summary.",
      "properties": {
        "abortedByUser": {
          "type": "boolean",
          "description": "If the end user aborted the test execution before a pass or fail could be determined. For example, the user pressed ctrl-c which sent a kill signal to the test runner while the test was running."
        },
        "hasErrorLogs": {
          "type": "boolean",
          "description": "If results are being provided to the user in certain cases of infrastructure failures"
        },
        "infrastructureFailure": {
          "type": "boolean",
          "description": "If the test runner could not determine success or failure because the test depends on a component other than the system under test which failed. For example, a mobile test requires provisioning a device where the test executes, and that provisioning can fail."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:InconclusiveDetailResponse": {
      "description": "Details for an outcome with an INCONCLUSIVE outcome summary.",
      "properties": {
        "abortedByUser": {
          "type": "boolean",
          "description": "If the end user aborted the test execution before a pass or fail could be determined. For example, the user pressed ctrl-c which sent a kill signal to the test runner while the test was running."
        },
        "hasErrorLogs": {
          "type": "boolean",
          "description": "If results are being provided to the user in certain cases of infrastructure failures"
        },
        "infrastructureFailure": {
          "type": "boolean",
          "description": "If the test runner could not determine success or failure because the test depends on a component other than the system under test which failed. For example, a mobile test requires provisioning a device where the test executes, and that provisioning can fail."
        }
      },
      "type": "object",
      "required": [
        "abortedByUser",
        "hasErrorLogs",
        "infrastructureFailure"
      ]
    },
    "google-native:toolresults/v1beta3:IndividualOutcome": {
      "description": "Step Id and outcome of each individual step that was run as a group with other steps with the same configuration.",
      "properties": {
        "multistepNumber": {
          "type": "integer",
          "description": "Unique int given to each step. Ranges from 0(inclusive) to total number of steps(exclusive). The primary step is 0."
        },
        "outcomeSummary": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IndividualOutcomeOutcomeSummary"
        },
        "runDuration": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Duration",
          "description": "How long it took for this step to run."
        },
        "stepId": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:IndividualOutcomeOutcomeSummary": {
      "type": "string",
      "enum": [
        {
          "name": "Unset",
          "description": "Do not use. For proto versioning only.",
          "value": "unset"
        },
        {
          "name": "Success",
          "description": "The test matrix run was successful, for instance: - All the test cases passed. - Robo did not detect a crash of the application under test.",
          "value": "success"
        },
        {
          "name": "Failure",
          "description": "A run failed, for instance: - One or more test case failed. - A test timed out. - The application under test crashed.",
          "value": "failure"
        },
        {
          "name": "Inconclusive",
          "description": "Something unexpected happened. The run should still be considered unsuccessful but this is likely a transient problem and re-running the test might be successful.",
          "value": "inconclusive"
        },
        {
          "name": "Skipped",
          "description": "All tests were skipped, for instance: - All device configurations were incompatible.",
          "value": "skipped"
        },
        {
          "name": "Flaky",
          "description": "A group of steps that were run with the same configuration had both failure and success outcomes.",
          "value": "flaky"
        }
      ]
    },
    "google-native:toolresults/v1beta3:IndividualOutcomeResponse": {
      "description": "Step Id and outcome of each individual step that was run as a group with other steps with the same configuration.",
      "properties": {
        "multistepNumber": {
          "type": "integer",
          "description": "Unique int given to each step. Ranges from 0(inclusive) to total number of steps(exclusive). The primary step is 0."
        },
        "outcomeSummary": {
          "type": "string"
        },
        "runDuration": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
          "description": "How long it took for this step to run."
        },
        "stepId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "multistepNumber",
        "outcomeSummary",
        "runDuration",
        "stepId"
      ]
    },
    "google-native:toolresults/v1beta3:IosAppInfo": {
      "description": "iOS app information",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the app. Required"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:IosAppInfoResponse": {
      "description": "iOS app information",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the app. Required"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "google-native:toolresults/v1beta3:IosRoboTest": {
      "description": "A Robo test for an iOS application.",
      "type": "object"
    },
    "google-native:toolresults/v1beta3:IosRoboTestResponse": {
      "description": "A Robo test for an iOS application.",
      "type": "object"
    },
    "google-native:toolresults/v1beta3:IosTest": {
      "description": "A iOS mobile test specification",
      "properties": {
        "iosAppInfo": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosAppInfo",
          "description": "Information about the application under test."
        },
        "iosRoboTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosRoboTest",
          "description": "An iOS Robo test."
        },
        "iosTestLoop": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosTestLoop",
          "description": "An iOS test loop."
        },
        "iosXcTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosXcTest",
          "description": "An iOS XCTest."
        },
        "testTimeout": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Duration",
          "description": "Max time a test is allowed to run before it is automatically cancelled."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:IosTestLoop": {
      "description": "A game loop test of an iOS application.",
      "properties": {
        "bundleId": {
          "type": "string",
          "description": "Bundle ID of the app."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:IosTestLoopResponse": {
      "description": "A game loop test of an iOS application.",
      "properties": {
        "bundleId": {
          "type": "string",
          "description": "Bundle ID of the app."
        }
      },
      "type": "object",
      "required": [
        "bundleId"
      ]
    },
    "google-native:toolresults/v1beta3:IosTestResponse": {
      "description": "A iOS mobile test specification",
      "properties": {
        "iosAppInfo": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosAppInfoResponse",
          "description": "Information about the application under test."
        },
        "iosRoboTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosRoboTestResponse",
          "description": "An iOS Robo test."
        },
        "iosTestLoop": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosTestLoopResponse",
          "description": "An iOS test loop."
        },
        "iosXcTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosXcTestResponse",
          "description": "An iOS XCTest."
        },
        "testTimeout": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
          "description": "Max time a test is allowed to run before it is automatically cancelled."
        }
      },
      "type": "object",
      "required": [
        "iosAppInfo",
        "iosRoboTest",
        "iosTestLoop",
        "iosXcTest",
        "testTimeout"
      ]
    },
    "google-native:toolresults/v1beta3:IosXcTest": {
      "description": "A test of an iOS application that uses the XCTest framework.",
      "properties": {
        "bundleId": {
          "type": "string",
          "description": "Bundle ID of the app."
        },
        "xcodeVersion": {
          "type": "string",
          "description": "Xcode version that the test was run with."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:IosXcTestResponse": {
      "description": "A test of an iOS application that uses the XCTest framework.",
      "properties": {
        "bundleId": {
          "type": "string",
          "description": "Bundle ID of the app."
        },
        "xcodeVersion": {
          "type": "string",
          "description": "Xcode version that the test was run with."
        }
      },
      "type": "object",
      "required": [
        "bundleId",
        "xcodeVersion"
      ]
    },
    "google-native:toolresults/v1beta3:MatrixDimensionDefinition": {
      "description": "One dimension of the matrix of different runs of a step.",
      "type": "object"
    },
    "google-native:toolresults/v1beta3:MatrixDimensionDefinitionResponse": {
      "description": "One dimension of the matrix of different runs of a step.",
      "type": "object"
    },
    "google-native:toolresults/v1beta3:MultiStep": {
      "description": "Details when multiple steps are run with the same configuration as a group.",
      "properties": {
        "multistepNumber": {
          "type": "integer",
          "description": "Unique int given to each step. Ranges from 0(inclusive) to total number of steps(exclusive). The primary step is 0."
        },
        "primaryStep": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:PrimaryStep",
          "description": "Present if it is a primary (original) step."
        },
        "primaryStepId": {
          "type": "string",
          "description": "Step Id of the primary (original) step, which might be this step."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:MultiStepResponse": {
      "description": "Details when multiple steps are run with the same configuration as a group.",
      "properties": {
        "multistepNumber": {
          "type": "integer",
          "description": "Unique int given to each step. Ranges from 0(inclusive) to total number of steps(exclusive). The primary step is 0."
        },
        "primaryStep": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:PrimaryStepResponse",
          "description": "Present if it is a primary (original) step."
        },
        "primaryStepId": {
          "type": "string",
          "description": "Step Id of the primary (original) step, which might be this step."
        }
      },
      "type": "object",
      "required": [
        "multistepNumber",
        "primaryStep",
        "primaryStepId"
      ]
    },
    "google-native:toolresults/v1beta3:Outcome": {
      "description": "Interprets a result so that humans and machines can act on it.",
      "properties": {
        "failureDetail": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:FailureDetail",
          "description": "More information about a FAILURE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE. Optional"
        },
        "inconclusiveDetail": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:InconclusiveDetail",
          "description": "More information about an INCONCLUSIVE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not INCONCLUSIVE. Optional"
        },
        "skippedDetail": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:SkippedDetail",
          "description": "More information about a SKIPPED outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED. Optional"
        },
        "successDetail": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:SuccessDetail",
          "description": "More information about a SUCCESS outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS. Optional"
        },
        "summary": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:OutcomeSummary",
          "description": "The simplest way to interpret a result. Required"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:OutcomeResponse": {
      "description": "Interprets a result so that humans and machines can act on it.",
      "properties": {
        "failureDetail": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:FailureDetailResponse",
          "description": "More information about a FAILURE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE. Optional"
        },
        "inconclusiveDetail": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:InconclusiveDetailResponse",
          "description": "More information about an INCONCLUSIVE outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not INCONCLUSIVE. Optional"
        },
        "skippedDetail": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:SkippedDetailResponse",
          "description": "More information about a SKIPPED outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED. Optional"
        },
        "successDetail": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:SuccessDetailResponse",
          "description": "More information about a SUCCESS outcome. Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS. Optional"
        },
        "summary": {
          "type": "string",
          "description": "The simplest way to interpret a result. Required"
        }
      },
      "type": "object",
      "required": [
        "failureDetail",
        "inconclusiveDetail",
        "skippedDetail",
        "successDetail",
        "summary"
      ]
    },
    "google-native:toolresults/v1beta3:OutcomeSummary": {
      "description": "The simplest way to interpret a result. Required",
      "type": "string",
      "enum": [
        {
          "name": "Unset",
          "description": "Do not use. For proto versioning only.",
          "value": "unset"
        },
        {
          "name": "Success",
          "description": "The test matrix run was successful, for instance: - All the test cases passed. - Robo did not detect a crash of the application under test.",
          "value": "success"
        },
        {
          "name": "Failure",
          "description": "A run failed, for instance: - One or more test case failed. - A test timed out. - The application under test crashed.",
          "value": "failure"
        },
        {
          "name": "Inconclusive",
          "description": "Something unexpected happened. The run should still be considered unsuccessful but this is likely a transient problem and re-running the test might be successful.",
          "value": "inconclusive"
        },
        {
          "name": "Skipped",
          "description": "All tests were skipped, for instance: - All device configurations were incompatible.",
          "value": "skipped"
        },
        {
          "name": "Flaky",
          "description": "A group of steps that were run with the same configuration had both failure and success outcomes.",
          "value": "flaky"
        }
      ]
    },
    "google-native:toolresults/v1beta3:PrimaryStep": {
      "description": "Stores rollup test status of multiple steps that were run as a group and outcome of each individual step.",
      "properties": {
        "individualOutcome": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:IndividualOutcome"
          },
          "description": "Step Id and outcome of each individual step."
        },
        "rollUp": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:PrimaryStepRollUp",
          "description": "Rollup test status of multiple steps that were run with the same configuration as a group."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:PrimaryStepResponse": {
      "description": "Stores rollup test status of multiple steps that were run as a group and outcome of each individual step.",
      "properties": {
        "individualOutcome": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:IndividualOutcomeResponse"
          },
          "description": "Step Id and outcome of each individual step."
        },
        "rollUp": {
          "type": "string",
          "description": "Rollup test status of multiple steps that were run with the same configuration as a group."
        }
      },
      "type": "object",
      "required": [
        "individualOutcome",
        "rollUp"
      ]
    },
    "google-native:toolresults/v1beta3:PrimaryStepRollUp": {
      "description": "Rollup test status of multiple steps that were run with the same configuration as a group.",
      "type": "string",
      "enum": [
        {
          "name": "Unset",
          "description": "Do not use. For proto versioning only.",
          "value": "unset"
        },
        {
          "name": "Success",
          "description": "The test matrix run was successful, for instance: - All the test cases passed. - Robo did not detect a crash of the application under test.",
          "value": "success"
        },
        {
          "name": "Failure",
          "description": "A run failed, for instance: - One or more test case failed. - A test timed out. - The application under test crashed.",
          "value": "failure"
        },
        {
          "name": "Inconclusive",
          "description": "Something unexpected happened. The run should still be considered unsuccessful but this is likely a transient problem and re-running the test might be successful.",
          "value": "inconclusive"
        },
        {
          "name": "Skipped",
          "description": "All tests were skipped, for instance: - All device configurations were incompatible.",
          "value": "skipped"
        },
        {
          "name": "Flaky",
          "description": "A group of steps that were run with the same configuration had both failure and success outcomes.",
          "value": "flaky"
        }
      ]
    },
    "google-native:toolresults/v1beta3:SkippedDetail": {
      "description": "Details for an outcome with a SKIPPED outcome summary.",
      "properties": {
        "incompatibleAppVersion": {
          "type": "boolean",
          "description": "If the App doesn't support the specific API level."
        },
        "incompatibleArchitecture": {
          "type": "boolean",
          "description": "If the App doesn't run on the specific architecture, for example, x86."
        },
        "incompatibleDevice": {
          "type": "boolean",
          "description": "If the requested OS version doesn't run on the specific device model."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:SkippedDetailResponse": {
      "description": "Details for an outcome with a SKIPPED outcome summary.",
      "properties": {
        "incompatibleAppVersion": {
          "type": "boolean",
          "description": "If the App doesn't support the specific API level."
        },
        "incompatibleArchitecture": {
          "type": "boolean",
          "description": "If the App doesn't run on the specific architecture, for example, x86."
        },
        "incompatibleDevice": {
          "type": "boolean",
          "description": "If the requested OS version doesn't run on the specific device model."
        }
      },
      "type": "object",
      "required": [
        "incompatibleAppVersion",
        "incompatibleArchitecture",
        "incompatibleDevice"
      ]
    },
    "google-native:toolresults/v1beta3:Specification": {
      "description": "The details about how to run the execution.",
      "properties": {
        "androidTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidTest",
          "description": "An Android mobile test execution specification."
        },
        "iosTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosTest",
          "description": "An iOS mobile test execution specification."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:SpecificationResponse": {
      "description": "The details about how to run the execution.",
      "properties": {
        "androidTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AndroidTestResponse",
          "description": "An Android mobile test execution specification."
        },
        "iosTest": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:IosTestResponse",
          "description": "An iOS mobile test execution specification."
        }
      },
      "type": "object",
      "required": [
        "androidTest",
        "iosTest"
      ]
    },
    "google-native:toolresults/v1beta3:StackTrace": {
      "description": "A stacktrace.",
      "properties": {
        "exception": {
          "type": "string",
          "description": "The stack trace message. Required"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:StackTraceResponse": {
      "description": "A stacktrace.",
      "properties": {
        "exception": {
          "type": "string",
          "description": "The stack trace message. Required"
        }
      },
      "type": "object",
      "required": [
        "exception"
      ]
    },
    "google-native:toolresults/v1beta3:StepDimensionValueEntry": {
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:StepDimensionValueEntryResponse": {
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:toolresults/v1beta3:StepLabelsEntry": {
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:StepLabelsEntryResponse": {
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:toolresults/v1beta3:StepState": {
      "description": "The initial state is IN_PROGRESS. The only legal state transitions are * IN_PROGRESS -> COMPLETE A PRECONDITION_FAILED will be returned if an invalid transition is requested. It is valid to create Step with a state set to COMPLETE. The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be returned if the state is set to COMPLETE multiple times. - In response: always set - In create/update request: optional",
      "type": "string",
      "enum": [
        {
          "name": "UnknownState",
          "description": "Should never be in this state. Exists for proto deserialization backward compatibility.",
          "value": "unknownState"
        },
        {
          "name": "Pending",
          "description": "The Execution/Step is created, ready to run, but not running yet. If an Execution/Step is created without initial state, it is assumed that the Execution/Step is in PENDING state.",
          "value": "pending"
        },
        {
          "name": "InProgress",
          "description": "The Execution/Step is in progress.",
          "value": "inProgress"
        },
        {
          "name": "Complete",
          "description": "The finalized, immutable state. Steps/Executions in this state cannot be modified.",
          "value": "complete"
        }
      ]
    },
    "google-native:toolresults/v1beta3:SuccessDetail": {
      "description": "Details for an outcome with a SUCCESS outcome summary. LINT.IfChange",
      "properties": {
        "otherNativeCrash": {
          "type": "boolean",
          "description": "If a native process other than the app crashed."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:SuccessDetailResponse": {
      "description": "Details for an outcome with a SUCCESS outcome summary. LINT.IfChange",
      "properties": {
        "otherNativeCrash": {
          "type": "boolean",
          "description": "If a native process other than the app crashed."
        }
      },
      "type": "object",
      "required": [
        "otherNativeCrash"
      ]
    },
    "google-native:toolresults/v1beta3:TestCaseReference": {
      "description": "A reference to a test case. Test case references are canonically ordered lexicographically by these three factors: * First, by test_suite_name. * Second, by class_name. * Third, by name.",
      "properties": {
        "className": {
          "type": "string",
          "description": "The name of the class."
        },
        "name": {
          "type": "string",
          "description": "The name of the test case. Required."
        },
        "testSuiteName": {
          "type": "string",
          "description": "The name of the test suite to which this test case belongs."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:TestCaseReferenceResponse": {
      "description": "A reference to a test case. Test case references are canonically ordered lexicographically by these three factors: * First, by test_suite_name. * Second, by class_name. * Third, by name.",
      "properties": {
        "className": {
          "type": "string",
          "description": "The name of the class."
        },
        "name": {
          "type": "string",
          "description": "The name of the test case. Required."
        },
        "testSuiteName": {
          "type": "string",
          "description": "The name of the test suite to which this test case belongs."
        }
      },
      "type": "object",
      "required": [
        "className",
        "name",
        "testSuiteName"
      ]
    },
    "google-native:toolresults/v1beta3:TestExecutionStep": {
      "description": "A step that represents running tests. It accepts ant-junit xml files which will be parsed into structured test results by the service. Xml file paths are updated in order to append more files, however they can't be deleted. Users can also add test results manually by using the test_result field.",
      "properties": {
        "testIssues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestIssue"
          },
          "description": "Issues observed during the test execution. For example, if the mobile app under test crashed during the test, the error message and the stack trace content can be recorded here to assist debugging. - In response: present if set by create or update - In create/update request: optional"
        },
        "testSuiteOverviews": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestSuiteOverview"
          },
          "description": "List of test suite overview contents. This could be parsed from xUnit XML log by server, or uploaded directly by user. This references should only be called when test suites are fully parsed or uploaded. The maximum allowed number of test suite overviews per step is 1000. - In response: always set - In create request: optional - In update request: never (use publishXunitXmlFiles custom method instead)"
        },
        "testTiming": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestTiming",
          "description": "The timing break down of the test execution. - In response: present if set by create or update - In create/update request: optional"
        },
        "toolExecution": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExecution",
          "description": "Represents the execution of the test runner. The exit code of this tool will be used to determine if the test passed. - In response: always set - In create/update request: optional"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:TestExecutionStepResponse": {
      "description": "A step that represents running tests. It accepts ant-junit xml files which will be parsed into structured test results by the service. Xml file paths are updated in order to append more files, however they can't be deleted. Users can also add test results manually by using the test_result field.",
      "properties": {
        "testIssues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestIssueResponse"
          },
          "description": "Issues observed during the test execution. For example, if the mobile app under test crashed during the test, the error message and the stack trace content can be recorded here to assist debugging. - In response: present if set by create or update - In create/update request: optional"
        },
        "testSuiteOverviews": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestSuiteOverviewResponse"
          },
          "description": "List of test suite overview contents. This could be parsed from xUnit XML log by server, or uploaded directly by user. This references should only be called when test suites are fully parsed or uploaded. The maximum allowed number of test suite overviews per step is 1000. - In response: always set - In create request: optional - In update request: never (use publishXunitXmlFiles custom method instead)"
        },
        "testTiming": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestTimingResponse",
          "description": "The timing break down of the test execution. - In response: present if set by create or update - In create/update request: optional"
        },
        "toolExecution": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExecutionResponse",
          "description": "Represents the execution of the test runner. The exit code of this tool will be used to determine if the test passed. - In response: always set - In create/update request: optional"
        }
      },
      "type": "object",
      "required": [
        "testIssues",
        "testSuiteOverviews",
        "testTiming",
        "toolExecution"
      ]
    },
    "google-native:toolresults/v1beta3:TestIssue": {
      "description": "An issue detected occurring during a test execution.",
      "properties": {
        "category": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestIssueCategory",
          "description": "Category of issue. Required."
        },
        "errorMessage": {
          "type": "string",
          "description": "A brief human-readable message describing the issue. Required."
        },
        "severity": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestIssueSeverity",
          "description": "Severity of issue. Required."
        },
        "stackTrace": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:StackTrace",
          "description": "Deprecated in favor of stack trace fields inside specific warnings.",
          "deprecationMessage": "Deprecated in favor of stack trace fields inside specific warnings."
        },
        "type": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestIssueType",
          "description": "Type of issue. Required."
        },
        "warning": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Any",
          "description": "Warning message with additional details of the issue. Should always be a message from com.google.devtools.toolresults.v1.warnings"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:TestIssueCategory": {
      "description": "Category of issue. Required.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedCategory",
          "description": "Default unspecified category. Do not use. For versioning only.",
          "value": "unspecifiedCategory"
        },
        {
          "name": "Common",
          "description": "Issue is not specific to a particular test kind (e.g., a native crash).",
          "value": "common"
        },
        {
          "name": "Robo",
          "description": "Issue is specific to Robo run.",
          "value": "robo"
        }
      ]
    },
    "google-native:toolresults/v1beta3:TestIssueResponse": {
      "description": "An issue detected occurring during a test execution.",
      "properties": {
        "category": {
          "type": "string",
          "description": "Category of issue. Required."
        },
        "errorMessage": {
          "type": "string",
          "description": "A brief human-readable message describing the issue. Required."
        },
        "severity": {
          "type": "string",
          "description": "Severity of issue. Required."
        },
        "stackTrace": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:StackTraceResponse",
          "description": "Deprecated in favor of stack trace fields inside specific warnings.",
          "deprecationMessage": "Deprecated in favor of stack trace fields inside specific warnings."
        },
        "type": {
          "type": "string",
          "description": "Type of issue. Required."
        },
        "warning": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:AnyResponse",
          "description": "Warning message with additional details of the issue. Should always be a message from com.google.devtools.toolresults.v1.warnings"
        }
      },
      "type": "object",
      "required": [
        "category",
        "errorMessage",
        "severity",
        "stackTrace",
        "type",
        "warning"
      ]
    },
    "google-native:toolresults/v1beta3:TestIssueSeverity": {
      "description": "Severity of issue. Required.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedSeverity",
          "description": "Default unspecified severity. Do not use. For versioning only.",
          "value": "unspecifiedSeverity"
        },
        {
          "name": "Info",
          "description": "Non critical issue, providing users with some info about the test run.",
          "value": "info"
        },
        {
          "name": "Suggestion",
          "description": "Non critical issue, providing users with some hints on improving their testing experience, e.g., suggesting to use Game Loops.",
          "value": "suggestion"
        },
        {
          "name": "Warning",
          "description": "Potentially critical issue.",
          "value": "warning"
        },
        {
          "name": "Severe",
          "description": "Critical issue.",
          "value": "severe"
        }
      ]
    },
    "google-native:toolresults/v1beta3:TestIssueType": {
      "description": "Type of issue. Required.",
      "type": "string",
      "enum": [
        {
          "name": "UnspecifiedType",
          "description": "Default unspecified type. Do not use. For versioning only.",
          "value": "unspecifiedType"
        },
        {
          "name": "FatalException",
          "description": "Issue is a fatal exception.",
          "value": "fatalException"
        },
        {
          "name": "NativeCrash",
          "description": "Issue is a native crash.",
          "value": "nativeCrash"
        },
        {
          "name": "Anr",
          "description": "Issue is an ANR crash.",
          "value": "anr"
        },
        {
          "name": "UnusedRoboDirective",
          "description": "Issue is an unused robo directive.",
          "value": "unusedRoboDirective"
        },
        {
          "name": "CompatibleWithOrchestrator",
          "description": "Issue is a suggestion to use orchestrator.",
          "value": "compatibleWithOrchestrator"
        },
        {
          "name": "LauncherActivityNotFound",
          "description": "Issue with finding a launcher activity",
          "value": "launcherActivityNotFound"
        },
        {
          "name": "StartActivityNotFound",
          "description": "Issue with resolving a user-provided intent to start an activity",
          "value": "startActivityNotFound"
        },
        {
          "name": "IncompleteRoboScriptExecution",
          "description": "A Robo script was not fully executed.",
          "value": "incompleteRoboScriptExecution"
        },
        {
          "name": "CompleteRoboScriptExecution",
          "description": "A Robo script was fully and successfully executed.",
          "value": "completeRoboScriptExecution"
        },
        {
          "name": "FailedToInstall",
          "description": "The APK failed to install.",
          "value": "failedToInstall"
        },
        {
          "name": "AvailableDeepLinks",
          "description": "The app-under-test has deep links, but none were provided to Robo.",
          "value": "availableDeepLinks"
        },
        {
          "name": "NonSdkApiUsageViolation",
          "description": "App accessed a non-sdk Api.",
          "value": "nonSdkApiUsageViolation"
        },
        {
          "name": "NonSdkApiUsageReport",
          "description": "App accessed a non-sdk Api (new detailed report)",
          "value": "nonSdkApiUsageReport"
        },
        {
          "name": "EncounteredNonAndroidUiWidgetScreen",
          "description": "Robo crawl encountered at least one screen with elements that are not Android UI widgets.",
          "value": "encounteredNonAndroidUiWidgetScreen"
        },
        {
          "name": "EncounteredLoginScreen",
          "description": "Robo crawl encountered at least one probable login screen.",
          "value": "encounteredLoginScreen"
        },
        {
          "name": "PerformedGoogleLogin",
          "description": "Robo signed in with Google.",
          "value": "performedGoogleLogin"
        },
        {
          "name": "IosException",
          "description": "iOS App crashed with an exception.",
          "value": "iosException"
        },
        {
          "name": "IosCrash",
          "description": "iOS App crashed without an exception (e.g. killed).",
          "value": "iosCrash"
        },
        {
          "name": "PerformedMonkeyActions",
          "description": "Robo crawl involved performing some monkey actions.",
          "value": "performedMonkeyActions"
        },
        {
          "name": "UsedRoboDirective",
          "description": "Robo crawl used a Robo directive.",
          "value": "usedRoboDirective"
        },
        {
          "name": "UsedRoboIgnoreDirective",
          "description": "Robo crawl used a Robo directive to ignore an UI element.",
          "value": "usedRoboIgnoreDirective"
        },
        {
          "name": "InsufficientCoverage",
          "description": "Robo did not crawl some potentially important parts of the app.",
          "value": "insufficientCoverage"
        },
        {
          "name": "InAppPurchases",
          "description": "Robo crawl involved some in-app purchases.",
          "value": "inAppPurchases"
        },
        {
          "name": "CrashDialogError",
          "description": "Crash dialog was detected during the test execution",
          "value": "crashDialogError"
        },
        {
          "name": "UiElementsTooDeep",
          "description": "UI element depth is greater than the threshold",
          "value": "uiElementsTooDeep"
        },
        {
          "name": "BlankScreen",
          "description": "Blank screen is found in the Robo crawl",
          "value": "blankScreen"
        },
        {
          "name": "OverlappingUiElements",
          "description": "Overlapping UI elements are found in the Robo crawl",
          "value": "overlappingUiElements"
        },
        {
          "name": "UnityException",
          "description": "An uncaught Unity exception was detected (these don't crash apps).",
          "value": "unityException"
        },
        {
          "name": "DeviceOutOfMemory",
          "description": "Device running out of memory was detected",
          "value": "deviceOutOfMemory"
        },
        {
          "name": "LogcatCollectionError",
          "description": "Problems detected while collecting logcat",
          "value": "logcatCollectionError"
        },
        {
          "name": "DetectedAppSplashScreen",
          "description": "Robo detected a splash screen provided by app (vs. Android OS splash screen).",
          "value": "detectedAppSplashScreen"
        },
        {
          "name": "AssetIssue",
          "description": "There was an issue with the assets in this test.",
          "value": "assetIssue"
        }
      ]
    },
    "google-native:toolresults/v1beta3:TestSuiteOverview": {
      "description": "A summary of a test suite result either parsed from XML or uploaded directly by a user. Note: the API related comments are for StepService only. This message is also being used in ExecutionService in a read only mode for the corresponding step.",
      "properties": {
        "elapsedTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Duration",
          "description": "Elapsed time of test suite."
        },
        "errorCount": {
          "type": "integer",
          "description": "Number of test cases in error, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never"
        },
        "failureCount": {
          "type": "integer",
          "description": "Number of failed test cases, typically set by the service by parsing the xml_source. May also be set by the user. - In create/response: always set - In update request: never"
        },
        "flakyCount": {
          "type": "integer",
          "description": "Number of flaky test cases, set by the service by rolling up flaky test attempts. Present only for rollup test suite overview at environment level. A step cannot have flaky test cases."
        },
        "name": {
          "type": "string",
          "description": "The name of the test suite. - In create/response: always set - In update request: never"
        },
        "skippedCount": {
          "type": "integer",
          "description": "Number of test cases not run, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never"
        },
        "totalCount": {
          "type": "integer",
          "description": "Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never"
        },
        "xmlSource": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:FileReference",
          "description": "If this test suite was parsed from XML, this is the URI where the original XML file is stored. Note: Multiple test suites can share the same xml_source Returns INVALID_ARGUMENT if the uri format is not supported. - In create/response: optional - In update request: never"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:TestSuiteOverviewResponse": {
      "description": "A summary of a test suite result either parsed from XML or uploaded directly by a user. Note: the API related comments are for StepService only. This message is also being used in ExecutionService in a read only mode for the corresponding step.",
      "properties": {
        "elapsedTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
          "description": "Elapsed time of test suite."
        },
        "errorCount": {
          "type": "integer",
          "description": "Number of test cases in error, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never"
        },
        "failureCount": {
          "type": "integer",
          "description": "Number of failed test cases, typically set by the service by parsing the xml_source. May also be set by the user. - In create/response: always set - In update request: never"
        },
        "flakyCount": {
          "type": "integer",
          "description": "Number of flaky test cases, set by the service by rolling up flaky test attempts. Present only for rollup test suite overview at environment level. A step cannot have flaky test cases."
        },
        "name": {
          "type": "string",
          "description": "The name of the test suite. - In create/response: always set - In update request: never"
        },
        "skippedCount": {
          "type": "integer",
          "description": "Number of test cases not run, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never"
        },
        "totalCount": {
          "type": "integer",
          "description": "Number of test cases, typically set by the service by parsing the xml_source. - In create/response: always set - In update request: never"
        },
        "xmlSource": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:FileReferenceResponse",
          "description": "If this test suite was parsed from XML, this is the URI where the original XML file is stored. Note: Multiple test suites can share the same xml_source Returns INVALID_ARGUMENT if the uri format is not supported. - In create/response: optional - In update request: never"
        }
      },
      "type": "object",
      "required": [
        "elapsedTime",
        "errorCount",
        "failureCount",
        "flakyCount",
        "name",
        "skippedCount",
        "totalCount",
        "xmlSource"
      ]
    },
    "google-native:toolresults/v1beta3:TestTiming": {
      "description": "Testing timing break down to know phases.",
      "properties": {
        "testProcessDuration": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Duration",
          "description": "How long it took to run the test process. - In response: present if previously set. - In create/update request: optional"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:TestTimingResponse": {
      "description": "Testing timing break down to know phases.",
      "properties": {
        "testProcessDuration": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
          "description": "How long it took to run the test process. - In response: present if previously set. - In create/update request: optional"
        }
      },
      "type": "object",
      "required": [
        "testProcessDuration"
      ]
    },
    "google-native:toolresults/v1beta3:Timestamp": {
      "description": "A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.",
      "properties": {
        "nanos": {
          "type": "integer",
          "description": "Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive."
        },
        "seconds": {
          "type": "string",
          "description": "Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive."
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:TimestampResponse": {
      "description": "A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.",
      "properties": {
        "nanos": {
          "type": "integer",
          "description": "Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive."
        },
        "seconds": {
          "type": "string",
          "description": "Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive."
        }
      },
      "type": "object",
      "required": [
        "nanos",
        "seconds"
      ]
    },
    "google-native:toolresults/v1beta3:ToolExecution": {
      "description": "An execution of an arbitrary tool. It could be a test runner or a tool copying artifacts or deploying code.",
      "properties": {
        "commandLineArguments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The full tokenized command line including the program name (equivalent to argv in a C program). - In response: present if set by create request - In create request: optional - In update request: never set"
        },
        "exitCode": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExitCode",
          "description": "Tool execution exit code. This field will be set once the tool has exited. - In response: present if set by create/update request - In create request: optional - In update request: optional, a FAILED_PRECONDITION error will be returned if an exit_code is already set."
        },
        "toolLogs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:FileReference"
          },
          "description": "References to any plain text logs output the tool execution. This field can be set before the tool has exited in order to be able to have access to a live view of the logs while the tool is running. The maximum allowed number of tool logs per step is 1000. - In response: present if set by create/update request - In create request: optional - In update request: optional, any value provided will be appended to the existing list"
        },
        "toolOutputs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolOutputReference"
          },
          "description": "References to opaque files of any format output by the tool execution. The maximum allowed number of tool outputs per step is 1000. - In response: present if set by create/update request - In create request: optional - In update request: optional, any value provided will be appended to the existing list"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:ToolExecutionResponse": {
      "description": "An execution of an arbitrary tool. It could be a test runner or a tool copying artifacts or deploying code.",
      "properties": {
        "commandLineArguments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The full tokenized command line including the program name (equivalent to argv in a C program). - In response: present if set by create request - In create request: optional - In update request: never set"
        },
        "exitCode": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExitCodeResponse",
          "description": "Tool execution exit code. This field will be set once the tool has exited. - In response: present if set by create/update request - In create request: optional - In update request: optional, a FAILED_PRECONDITION error will be returned if an exit_code is already set."
        },
        "toolLogs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:FileReferenceResponse"
          },
          "description": "References to any plain text logs output the tool execution. This field can be set before the tool has exited in order to be able to have access to a live view of the logs while the tool is running. The maximum allowed number of tool logs per step is 1000. - In response: present if set by create/update request - In create request: optional - In update request: optional, any value provided will be appended to the existing list"
        },
        "toolOutputs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolOutputReferenceResponse"
          },
          "description": "References to opaque files of any format output by the tool execution. The maximum allowed number of tool outputs per step is 1000. - In response: present if set by create/update request - In create request: optional - In update request: optional, any value provided will be appended to the existing list"
        }
      },
      "type": "object",
      "required": [
        "commandLineArguments",
        "exitCode",
        "toolLogs",
        "toolOutputs"
      ]
    },
    "google-native:toolresults/v1beta3:ToolExecutionStep": {
      "description": "Generic tool step to be used for binaries we do not explicitly support. For example: running cp to copy artifacts from one location to another.",
      "properties": {
        "toolExecution": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExecution",
          "description": "A Tool execution. - In response: present if set by create/update request - In create/update request: optional"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:ToolExecutionStepResponse": {
      "description": "Generic tool step to be used for binaries we do not explicitly support. For example: running cp to copy artifacts from one location to another.",
      "properties": {
        "toolExecution": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExecutionResponse",
          "description": "A Tool execution. - In response: present if set by create/update request - In create/update request: optional"
        }
      },
      "type": "object",
      "required": [
        "toolExecution"
      ]
    },
    "google-native:toolresults/v1beta3:ToolExitCode": {
      "description": "Exit code from a tool execution.",
      "properties": {
        "number": {
          "type": "integer",
          "description": "Tool execution exit code. A value of 0 means that the execution was successful. - In response: always set - In create/update request: always set"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:ToolExitCodeResponse": {
      "description": "Exit code from a tool execution.",
      "properties": {
        "number": {
          "type": "integer",
          "description": "Tool execution exit code. A value of 0 means that the execution was successful. - In response: always set - In create/update request: always set"
        }
      },
      "type": "object",
      "required": [
        "number"
      ]
    },
    "google-native:toolresults/v1beta3:ToolOutputReference": {
      "description": "A reference to a ToolExecution output file.",
      "properties": {
        "creationTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Timestamp",
          "description": "The creation time of the file. - In response: present if set by create/update request - In create/update request: optional"
        },
        "output": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:FileReference",
          "description": "A FileReference to an output file. - In response: always set - In create/update request: always set"
        },
        "testCase": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestCaseReference",
          "description": "The test case to which this output file belongs. - In response: present if set by create/update request - In create/update request: optional"
        }
      },
      "type": "object"
    },
    "google-native:toolresults/v1beta3:ToolOutputReferenceResponse": {
      "description": "A reference to a ToolExecution output file.",
      "properties": {
        "creationTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
          "description": "The creation time of the file. - In response: present if set by create/update request - In create/update request: optional"
        },
        "output": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:FileReferenceResponse",
          "description": "A FileReference to an output file. - In response: always set - In create/update request: always set"
        },
        "testCase": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestCaseReferenceResponse",
          "description": "The test case to which this output file belongs. - In response: present if set by create/update request - In create/update request: optional"
        }
      },
      "type": "object",
      "required": [
        "creationTime",
        "output",
        "testCase"
      ]
    },
    "google-native:tpu/v1:NetworkEndpointResponse": {
      "description": "A network endpoint over which a TPU worker can be reached.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address of this network endpoint."
        },
        "port": {
          "type": "integer",
          "description": "The port of this network endpoint."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "port"
      ]
    },
    "google-native:tpu/v1:NodeHealth": {
      "description": "The health status of the TPU node.",
      "type": "string",
      "enum": [
        {
          "name": "HealthUnspecified",
          "description": "Health status is unknown: not initialized or failed to retrieve.",
          "value": "HEALTH_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "The resource is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "DeprecatedUnhealthy",
          "description": "The resource is unhealthy.",
          "value": "DEPRECATED_UNHEALTHY"
        },
        {
          "name": "Timeout",
          "description": "The resource is unresponsive.",
          "value": "TIMEOUT"
        },
        {
          "name": "UnhealthyTensorflow",
          "description": "The in-guest ML stack is unhealthy.",
          "value": "UNHEALTHY_TENSORFLOW"
        },
        {
          "name": "UnhealthyMaintenance",
          "description": "The node is under maintenance/priority boost caused rescheduling and will resume running once rescheduled.",
          "value": "UNHEALTHY_MAINTENANCE"
        }
      ]
    },
    "google-native:tpu/v1:SchedulingConfig": {
      "description": "Sets the scheduling options for this node.",
      "properties": {
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the node is preemptible."
        },
        "reserved": {
          "type": "boolean",
          "description": "Whether the node is created under a reservation."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v1:SchedulingConfigResponse": {
      "description": "Sets the scheduling options for this node.",
      "properties": {
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the node is preemptible."
        },
        "reserved": {
          "type": "boolean",
          "description": "Whether the node is created under a reservation."
        }
      },
      "type": "object",
      "required": [
        "preemptible",
        "reserved"
      ]
    },
    "google-native:tpu/v1:SymptomResponse": {
      "description": "A Symptom instance.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the Symptom is created."
        },
        "details": {
          "type": "string",
          "description": "Detailed information of the current Symptom."
        },
        "symptomType": {
          "type": "string",
          "description": "Type of the Symptom."
        },
        "workerId": {
          "type": "string",
          "description": "A string used to uniquely distinguish a worker within a TPU node."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "details",
        "symptomType",
        "workerId"
      ]
    },
    "google-native:tpu/v1alpha1:NetworkEndpointResponse": {
      "description": "A network endpoint over which a TPU worker can be reached.",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IP address of this network endpoint."
        },
        "port": {
          "type": "integer",
          "description": "The port of this network endpoint."
        }
      },
      "type": "object",
      "required": [
        "ipAddress",
        "port"
      ]
    },
    "google-native:tpu/v1alpha1:NodeHealth": {
      "description": "The health status of the TPU node.",
      "type": "string",
      "enum": [
        {
          "name": "HealthUnspecified",
          "description": "Health status is unknown: not initialized or failed to retrieve.",
          "value": "HEALTH_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "The resource is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "DeprecatedUnhealthy",
          "description": "The resource is unhealthy.",
          "value": "DEPRECATED_UNHEALTHY"
        },
        {
          "name": "Timeout",
          "description": "The resource is unresponsive.",
          "value": "TIMEOUT"
        },
        {
          "name": "UnhealthyTensorflow",
          "description": "The in-guest ML stack is unhealthy.",
          "value": "UNHEALTHY_TENSORFLOW"
        },
        {
          "name": "UnhealthyMaintenance",
          "description": "The node is under maintenance/priority boost caused rescheduling and will resume running once rescheduled.",
          "value": "UNHEALTHY_MAINTENANCE"
        }
      ]
    },
    "google-native:tpu/v1alpha1:SchedulingConfig": {
      "description": "Sets the scheduling options for this node.",
      "properties": {
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the node is preemptible."
        },
        "reserved": {
          "type": "boolean",
          "description": "Whether the node is created under a reservation."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v1alpha1:SchedulingConfigResponse": {
      "description": "Sets the scheduling options for this node.",
      "properties": {
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the node is preemptible."
        },
        "reserved": {
          "type": "boolean",
          "description": "Whether the node is created under a reservation."
        }
      },
      "type": "object",
      "required": [
        "preemptible",
        "reserved"
      ]
    },
    "google-native:tpu/v1alpha1:SymptomResponse": {
      "description": "A Symptom instance.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the Symptom is created."
        },
        "details": {
          "type": "string",
          "description": "Detailed information of the current Symptom."
        },
        "symptomType": {
          "type": "string",
          "description": "Type of the Symptom."
        },
        "workerId": {
          "type": "string",
          "description": "A string used to uniquely distinguish a worker within a TPU node."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "details",
        "symptomType",
        "workerId"
      ]
    },
    "google-native:tpu/v2:AcceleratorConfig": {
      "description": "A TPU accelerator configuration.",
      "properties": {
        "topology": {
          "type": "string",
          "description": "Topology of TPU in chips."
        },
        "type": {
          "$ref": "#/types/google-native:tpu%2Fv2:AcceleratorConfigType",
          "description": "Type of TPU."
        }
      },
      "type": "object",
      "required": [
        "topology",
        "type"
      ]
    },
    "google-native:tpu/v2:AcceleratorConfigResponse": {
      "description": "A TPU accelerator configuration.",
      "properties": {
        "topology": {
          "type": "string",
          "description": "Topology of TPU in chips."
        },
        "type": {
          "type": "string",
          "description": "Type of TPU."
        }
      },
      "type": "object",
      "required": [
        "topology",
        "type"
      ]
    },
    "google-native:tpu/v2:AcceleratorConfigType": {
      "description": "Required. Type of TPU.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified version.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "V2",
          "description": "TPU v2.",
          "value": "V2"
        },
        {
          "name": "V3",
          "description": "TPU v3.",
          "value": "V3"
        },
        {
          "name": "V4",
          "description": "TPU v4.",
          "value": "V4"
        }
      ]
    },
    "google-native:tpu/v2:AccessConfigResponse": {
      "description": "An access config attached to the TPU worker.",
      "properties": {
        "externalIp": {
          "type": "string",
          "description": "An external IP address associated with the TPU worker."
        }
      },
      "type": "object",
      "required": [
        "externalIp"
      ]
    },
    "google-native:tpu/v2:AttachedDisk": {
      "description": "A node-attached disk resource. Next ID: 8;",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:tpu%2Fv2:AttachedDiskMode",
          "description": "The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks."
        },
        "sourceDisk": {
          "type": "string",
          "description": "Specifies the full path to an existing disk. For example: \"projects/my-project/zones/us-central1-c/disks/my-disk\"."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2:AttachedDiskMode": {
      "description": "The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks.",
      "type": "string",
      "enum": [
        {
          "name": "DiskModeUnspecified",
          "description": "The disk mode is not known/set.",
          "value": "DISK_MODE_UNSPECIFIED"
        },
        {
          "name": "ReadWrite",
          "description": "Attaches the disk in read-write mode. Only one TPU node can attach a disk in read-write mode at a time.",
          "value": "READ_WRITE"
        },
        {
          "name": "ReadOnly",
          "description": "Attaches the disk in read-only mode. Multiple TPU nodes can attach a disk in read-only mode at a time.",
          "value": "READ_ONLY"
        }
      ]
    },
    "google-native:tpu/v2:AttachedDiskResponse": {
      "description": "A node-attached disk resource. Next ID: 8;",
      "properties": {
        "mode": {
          "type": "string",
          "description": "The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks."
        },
        "sourceDisk": {
          "type": "string",
          "description": "Specifies the full path to an existing disk. For example: \"projects/my-project/zones/us-central1-c/disks/my-disk\"."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "sourceDisk"
      ]
    },
    "google-native:tpu/v2:NetworkConfig": {
      "description": "Network related configurations.",
      "properties": {
        "canIpForward": {
          "type": "boolean",
          "description": "Allows the TPU node to send and receive packets with non-matching destination or source IPs. This is required if you plan to use the TPU workers to forward routes."
        },
        "enableExternalIps": {
          "type": "boolean",
          "description": "Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled."
        },
        "network": {
          "type": "string",
          "description": "The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, \"default\" will be used."
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, \"default\" will be used."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2:NetworkConfigResponse": {
      "description": "Network related configurations.",
      "properties": {
        "canIpForward": {
          "type": "boolean",
          "description": "Allows the TPU node to send and receive packets with non-matching destination or source IPs. This is required if you plan to use the TPU workers to forward routes."
        },
        "enableExternalIps": {
          "type": "boolean",
          "description": "Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled."
        },
        "network": {
          "type": "string",
          "description": "The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, \"default\" will be used."
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, \"default\" will be used."
        }
      },
      "type": "object",
      "required": [
        "canIpForward",
        "enableExternalIps",
        "network",
        "subnetwork"
      ]
    },
    "google-native:tpu/v2:NetworkEndpointResponse": {
      "description": "A network endpoint over which a TPU worker can be reached.",
      "properties": {
        "accessConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:AccessConfigResponse",
          "description": "The access config for the TPU worker."
        },
        "ipAddress": {
          "type": "string",
          "description": "The internal IP address of this network endpoint."
        },
        "port": {
          "type": "integer",
          "description": "The port of this network endpoint."
        }
      },
      "type": "object",
      "required": [
        "accessConfig",
        "ipAddress",
        "port"
      ]
    },
    "google-native:tpu/v2:NodeHealth": {
      "description": "The health status of the TPU node.",
      "type": "string",
      "enum": [
        {
          "name": "HealthUnspecified",
          "description": "Health status is unknown: not initialized or failed to retrieve.",
          "value": "HEALTH_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "The resource is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "Timeout",
          "description": "The resource is unresponsive.",
          "value": "TIMEOUT"
        },
        {
          "name": "UnhealthyTensorflow",
          "description": "The in-guest ML stack is unhealthy.",
          "value": "UNHEALTHY_TENSORFLOW"
        },
        {
          "name": "UnhealthyMaintenance",
          "description": "The node is under maintenance/priority boost caused rescheduling and will resume running once rescheduled.",
          "value": "UNHEALTHY_MAINTENANCE"
        }
      ]
    },
    "google-native:tpu/v2:SchedulingConfig": {
      "description": "Sets the scheduling options for this node.",
      "properties": {
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the node is preemptible."
        },
        "reserved": {
          "type": "boolean",
          "description": "Whether the node is created under a reservation."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2:SchedulingConfigResponse": {
      "description": "Sets the scheduling options for this node.",
      "properties": {
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the node is preemptible."
        },
        "reserved": {
          "type": "boolean",
          "description": "Whether the node is created under a reservation."
        }
      },
      "type": "object",
      "required": [
        "preemptible",
        "reserved"
      ]
    },
    "google-native:tpu/v2:ServiceAccount": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account. If empty, default Compute service account will be used."
        },
        "scope": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2:ServiceAccountResponse": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account. If empty, default Compute service account will be used."
        },
        "scope": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed."
        }
      },
      "type": "object",
      "required": [
        "email",
        "scope"
      ]
    },
    "google-native:tpu/v2:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled."
        }
      },
      "type": "object",
      "required": [
        "enableSecureBoot"
      ]
    },
    "google-native:tpu/v2:SymptomResponse": {
      "description": "A Symptom instance.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the Symptom is created."
        },
        "details": {
          "type": "string",
          "description": "Detailed information of the current Symptom."
        },
        "symptomType": {
          "type": "string",
          "description": "Type of the Symptom."
        },
        "workerId": {
          "type": "string",
          "description": "A string used to uniquely distinguish a worker within a TPU node."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "details",
        "symptomType",
        "workerId"
      ]
    },
    "google-native:tpu/v2alpha1:AcceleratorConfig": {
      "description": "A TPU accelerator configuration.",
      "properties": {
        "topology": {
          "type": "string",
          "description": "Topology of TPU in chips."
        },
        "type": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:AcceleratorConfigType",
          "description": "Type of TPU."
        }
      },
      "type": "object",
      "required": [
        "topology",
        "type"
      ]
    },
    "google-native:tpu/v2alpha1:AcceleratorConfigResponse": {
      "description": "A TPU accelerator configuration.",
      "properties": {
        "topology": {
          "type": "string",
          "description": "Topology of TPU in chips."
        },
        "type": {
          "type": "string",
          "description": "Type of TPU."
        }
      },
      "type": "object",
      "required": [
        "topology",
        "type"
      ]
    },
    "google-native:tpu/v2alpha1:AcceleratorConfigType": {
      "description": "Required. Type of TPU.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "Unspecified version.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "V2",
          "description": "TPU v2.",
          "value": "V2"
        },
        {
          "name": "V3",
          "description": "TPU v3.",
          "value": "V3"
        },
        {
          "name": "V4",
          "description": "TPU v4.",
          "value": "V4"
        }
      ]
    },
    "google-native:tpu/v2alpha1:AcceptedDataResponse": {
      "description": "Further data for the accepted state.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:AccessConfigResponse": {
      "description": "An access config attached to the TPU worker.",
      "properties": {
        "externalIp": {
          "type": "string",
          "description": "An external IP address associated with the TPU worker."
        }
      },
      "type": "object",
      "required": [
        "externalIp"
      ]
    },
    "google-native:tpu/v2alpha1:ActiveDataResponse": {
      "description": "Further data for the active state.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:AttachedDisk": {
      "description": "A node-attached disk resource. Next ID: 8;",
      "properties": {
        "mode": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:AttachedDiskMode",
          "description": "The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks."
        },
        "sourceDisk": {
          "type": "string",
          "description": "Specifies the full path to an existing disk. For example: \"projects/my-project/zones/us-central1-c/disks/my-disk\"."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:AttachedDiskMode": {
      "description": "The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks.",
      "type": "string",
      "enum": [
        {
          "name": "DiskModeUnspecified",
          "description": "The disk mode is not known/set.",
          "value": "DISK_MODE_UNSPECIFIED"
        },
        {
          "name": "ReadWrite",
          "description": "Attaches the disk in read-write mode. Only one TPU node can attach a disk in read-write mode at a time.",
          "value": "READ_WRITE"
        },
        {
          "name": "ReadOnly",
          "description": "Attaches the disk in read-only mode. Multiple TPU nodes can attach a disk in read-only mode at a time.",
          "value": "READ_ONLY"
        }
      ]
    },
    "google-native:tpu/v2alpha1:AttachedDiskResponse": {
      "description": "A node-attached disk resource. Next ID: 8;",
      "properties": {
        "mode": {
          "type": "string",
          "description": "The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks."
        },
        "sourceDisk": {
          "type": "string",
          "description": "Specifies the full path to an existing disk. For example: \"projects/my-project/zones/us-central1-c/disks/my-disk\"."
        }
      },
      "type": "object",
      "required": [
        "mode",
        "sourceDisk"
      ]
    },
    "google-native:tpu/v2alpha1:BestEffort": {
      "description": "BestEffort tier definition.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:BestEffortResponse": {
      "description": "BestEffort tier definition.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:BootDiskConfig": {
      "description": "Boot disk configurations.",
      "properties": {
        "customerEncryptionKey": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:CustomerEncryptionKey",
          "description": "Optional. Customer encryption key for boot disk."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Optional. Whether the boot disk will be created with confidential compute mode."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:BootDiskConfigResponse": {
      "description": "Boot disk configurations.",
      "properties": {
        "customerEncryptionKey": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:CustomerEncryptionKeyResponse",
          "description": "Optional. Customer encryption key for boot disk."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Optional. Whether the boot disk will be created with confidential compute mode."
        }
      },
      "type": "object",
      "required": [
        "customerEncryptionKey",
        "enableConfidentialCompute"
      ]
    },
    "google-native:tpu/v2alpha1:CreatingDataResponse": {
      "description": "Further data for the creating state.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:CustomerEncryptionKey": {
      "description": "Customer's encryption key.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 "
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:CustomerEncryptionKeyResponse": {
      "description": "Customer's encryption key.",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key The fully-qualifed key name may be returned for resource GET requests. For example: \"kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeyVersions/1 "
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName"
      ]
    },
    "google-native:tpu/v2alpha1:DeletingDataResponse": {
      "description": "Further data for the deleting state.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:FailedDataResponse": {
      "description": "Further data for the failed state.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:StatusResponse",
          "description": "The error that caused the queued resource to enter the FAILED state."
        }
      },
      "type": "object",
      "required": [
        "error"
      ]
    },
    "google-native:tpu/v2alpha1:Guaranteed": {
      "description": "Guaranteed tier definition.",
      "properties": {
        "minDuration": {
          "type": "string",
          "description": "Optional. Defines the minimum duration of the guarantee. If specified, the requested resources will only be provisioned if they can be allocated for at least the given duration."
        },
        "reserved": {
          "type": "boolean",
          "description": "Optional. Specifies the request should be scheduled on reserved capacity."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:GuaranteedResponse": {
      "description": "Guaranteed tier definition.",
      "properties": {
        "minDuration": {
          "type": "string",
          "description": "Optional. Defines the minimum duration of the guarantee. If specified, the requested resources will only be provisioned if they can be allocated for at least the given duration."
        },
        "reserved": {
          "type": "boolean",
          "description": "Optional. Specifies the request should be scheduled on reserved capacity."
        }
      },
      "type": "object",
      "required": [
        "minDuration",
        "reserved"
      ]
    },
    "google-native:tpu/v2alpha1:Interval": {
      "description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:IntervalResponse": {
      "description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end."
        },
        "startTime": {
          "type": "string",
          "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "startTime"
      ]
    },
    "google-native:tpu/v2alpha1:MultiNodeParams": {
      "description": "Parameters to specify for multi-node QueuedResource requests. This field must be populated in case of multi-node requests instead of node_id. It's an error to specify both node_id and multi_node_params.",
      "properties": {
        "nodeCount": {
          "type": "integer",
          "description": "Number of nodes with this spec. The system will attempt to provison \"node_count\" nodes as part of the request. This needs to be > 1."
        },
        "nodeIdPrefix": {
          "type": "string",
          "description": "Prefix of node_ids in case of multi-node request Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format. If node_count = 3 and node_id_prefix = \"np\", node ids of nodes created will be \"np-0\", \"np-1\", \"np-2\". If this field is not provided we use queued_resource_id as the node_id_prefix."
        }
      },
      "type": "object",
      "required": [
        "nodeCount"
      ]
    },
    "google-native:tpu/v2alpha1:MultiNodeParamsResponse": {
      "description": "Parameters to specify for multi-node QueuedResource requests. This field must be populated in case of multi-node requests instead of node_id. It's an error to specify both node_id and multi_node_params.",
      "properties": {
        "nodeCount": {
          "type": "integer",
          "description": "Number of nodes with this spec. The system will attempt to provison \"node_count\" nodes as part of the request. This needs to be > 1."
        },
        "nodeIdPrefix": {
          "type": "string",
          "description": "Prefix of node_ids in case of multi-node request Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format. If node_count = 3 and node_id_prefix = \"np\", node ids of nodes created will be \"np-0\", \"np-1\", \"np-2\". If this field is not provided we use queued_resource_id as the node_id_prefix."
        }
      },
      "type": "object",
      "required": [
        "nodeCount",
        "nodeIdPrefix"
      ]
    },
    "google-native:tpu/v2alpha1:NetworkConfig": {
      "description": "Network related configurations.",
      "properties": {
        "canIpForward": {
          "type": "boolean",
          "description": "Allows the TPU node to send and receive packets with non-matching destination or source IPs. This is required if you plan to use the TPU workers to forward routes."
        },
        "enableExternalIps": {
          "type": "boolean",
          "description": "Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled."
        },
        "network": {
          "type": "string",
          "description": "The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, \"default\" will be used."
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, \"default\" will be used."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:NetworkConfigResponse": {
      "description": "Network related configurations.",
      "properties": {
        "canIpForward": {
          "type": "boolean",
          "description": "Allows the TPU node to send and receive packets with non-matching destination or source IPs. This is required if you plan to use the TPU workers to forward routes."
        },
        "enableExternalIps": {
          "type": "boolean",
          "description": "Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled."
        },
        "network": {
          "type": "string",
          "description": "The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, \"default\" will be used."
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, \"default\" will be used."
        }
      },
      "type": "object",
      "required": [
        "canIpForward",
        "enableExternalIps",
        "network",
        "subnetwork"
      ]
    },
    "google-native:tpu/v2alpha1:NetworkEndpointResponse": {
      "description": "A network endpoint over which a TPU worker can be reached.",
      "properties": {
        "accessConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:AccessConfigResponse",
          "description": "The access config for the TPU worker."
        },
        "ipAddress": {
          "type": "string",
          "description": "The internal IP address of this network endpoint."
        },
        "port": {
          "type": "integer",
          "description": "The port of this network endpoint."
        }
      },
      "type": "object",
      "required": [
        "accessConfig",
        "ipAddress",
        "port"
      ]
    },
    "google-native:tpu/v2alpha1:Node": {
      "description": "A TPU instance.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:AcceleratorConfig",
          "description": "The AccleratorConfig for the TPU Node."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The type of hardware accelerators associated with this node."
        },
        "autocheckpointEnabled": {
          "type": "boolean",
          "description": "Optional. Whether Autocheckpoint is enabled."
        },
        "bootDiskConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:BootDiskConfig",
          "description": "Optional. Boot disk configuration."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:AttachedDisk"
          },
          "description": "The additional data disks for the Node."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:NodeHealth",
          "description": "The health status of the TPU node."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script"
        },
        "networkConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:NetworkConfig",
          "description": "Network configurations for the TPU node."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version running in the Node."
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:SchedulingConfig",
          "description": "The scheduling options for this node."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ServiceAccount",
          "description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ShieldedInstanceConfig",
          "description": "Shielded Instance options."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls."
        }
      },
      "type": "object",
      "required": [
        "runtimeVersion"
      ]
    },
    "google-native:tpu/v2alpha1:NodeHealth": {
      "description": "The health status of the TPU node.",
      "type": "string",
      "enum": [
        {
          "name": "HealthUnspecified",
          "description": "Health status is unknown: not initialized or failed to retrieve.",
          "value": "HEALTH_UNSPECIFIED"
        },
        {
          "name": "Healthy",
          "description": "The resource is healthy.",
          "value": "HEALTHY"
        },
        {
          "name": "Timeout",
          "description": "The resource is unresponsive.",
          "value": "TIMEOUT"
        },
        {
          "name": "UnhealthyTensorflow",
          "description": "The in-guest ML stack is unhealthy.",
          "value": "UNHEALTHY_TENSORFLOW"
        },
        {
          "name": "UnhealthyMaintenance",
          "description": "The node is under maintenance/priority boost caused rescheduling and will resume running once rescheduled.",
          "value": "UNHEALTHY_MAINTENANCE"
        }
      ]
    },
    "google-native:tpu/v2alpha1:NodeResponse": {
      "description": "A TPU instance.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:AcceleratorConfigResponse",
          "description": "The AccleratorConfig for the TPU Node."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The type of hardware accelerators associated with this node."
        },
        "apiVersion": {
          "type": "string",
          "description": "The API version that created this Node."
        },
        "autocheckpointEnabled": {
          "type": "boolean",
          "description": "Optional. Whether Autocheckpoint is enabled."
        },
        "bootDiskConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:BootDiskConfigResponse",
          "description": "Optional. Boot disk configuration."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the node was created."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:AttachedDiskResponse"
          },
          "description": "The additional data disks for the Node."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "type": "string",
          "description": "The health status of the TPU node."
        },
        "healthDescription": {
          "type": "string",
          "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script"
        },
        "multisliceNode": {
          "type": "boolean",
          "description": "Whether the Node belongs to a Multislice group."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the TPU."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:NetworkConfigResponse",
          "description": "Network configurations for the TPU node."
        },
        "networkEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:NetworkEndpointResponse"
          },
          "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first."
        },
        "queuedResource": {
          "type": "string",
          "description": "The qualified name of the QueuedResource that requested this Node."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version running in the Node."
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:SchedulingConfigResponse",
          "description": "The scheduling options for this node."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ServiceAccountResponse",
          "description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ShieldedInstanceConfigResponse",
          "description": "Shielded Instance options."
        },
        "state": {
          "type": "string",
          "description": "The current state for the TPU Node."
        },
        "symptoms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:SymptomResponse"
          },
          "description": "The Symptoms that have occurred to the TPU Node."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "acceleratorType",
        "apiVersion",
        "autocheckpointEnabled",
        "bootDiskConfig",
        "cidrBlock",
        "createTime",
        "dataDisks",
        "description",
        "health",
        "healthDescription",
        "labels",
        "metadata",
        "multisliceNode",
        "name",
        "networkConfig",
        "networkEndpoints",
        "queuedResource",
        "runtimeVersion",
        "schedulingConfig",
        "serviceAccount",
        "shieldedInstanceConfig",
        "state",
        "symptoms",
        "tags"
      ]
    },
    "google-native:tpu/v2alpha1:NodeSpec": {
      "description": "Details of the TPU node(s) being requested. Users can request either a single node or multiple nodes. NodeSpec provides the specification for node(s) to be created.",
      "properties": {
        "multiNodeParams": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:MultiNodeParams",
          "description": "Optional. Fields to specify in case of multi-node request."
        },
        "node": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:Node",
          "description": "The node."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name. Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format. This is only specified when requesting a single node. In case of multi-node requests, multi_node_params must be populated instead. It's an error to specify both node_id and multi_node_params."
        },
        "parent": {
          "type": "string",
          "description": "The parent resource name."
        }
      },
      "type": "object",
      "required": [
        "node",
        "parent"
      ]
    },
    "google-native:tpu/v2alpha1:NodeSpecResponse": {
      "description": "Details of the TPU node(s) being requested. Users can request either a single node or multiple nodes. NodeSpec provides the specification for node(s) to be created.",
      "properties": {
        "multiNodeParams": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:MultiNodeParamsResponse",
          "description": "Optional. Fields to specify in case of multi-node request."
        },
        "node": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:NodeResponse",
          "description": "The node."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name. Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format. This is only specified when requesting a single node. In case of multi-node requests, multi_node_params must be populated instead. It's an error to specify both node_id and multi_node_params."
        },
        "parent": {
          "type": "string",
          "description": "The parent resource name."
        }
      },
      "type": "object",
      "required": [
        "multiNodeParams",
        "node",
        "nodeId",
        "parent"
      ]
    },
    "google-native:tpu/v2alpha1:ProvisioningDataResponse": {
      "description": "Further data for the provisioning state.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:QueuedResourceStateResponse": {
      "description": "QueuedResourceState defines the details of the QueuedResource request.",
      "properties": {
        "acceptedData": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:AcceptedDataResponse",
          "description": "Further data for the accepted state."
        },
        "activeData": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ActiveDataResponse",
          "description": "Further data for the active state."
        },
        "creatingData": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:CreatingDataResponse",
          "description": "Further data for the creating state."
        },
        "deletingData": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:DeletingDataResponse",
          "description": "Further data for the deleting state."
        },
        "failedData": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:FailedDataResponse",
          "description": "Further data for the failed state."
        },
        "provisioningData": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ProvisioningDataResponse",
          "description": "Further data for the provisioning state."
        },
        "state": {
          "type": "string",
          "description": "State of the QueuedResource request."
        },
        "stateInitiator": {
          "type": "string",
          "description": "The initiator of the QueuedResources's current state."
        },
        "suspendedData": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:SuspendedDataResponse",
          "description": "Further data for the suspended state."
        },
        "suspendingData": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:SuspendingDataResponse",
          "description": "Further data for the suspending state."
        }
      },
      "type": "object",
      "required": [
        "acceptedData",
        "activeData",
        "creatingData",
        "deletingData",
        "failedData",
        "provisioningData",
        "state",
        "stateInitiator",
        "suspendedData",
        "suspendingData"
      ]
    },
    "google-native:tpu/v2alpha1:QueueingPolicy": {
      "description": "Defines the policy of the QueuedRequest.",
      "properties": {
        "validAfterDuration": {
          "type": "string",
          "description": "A relative time after which resources may be created."
        },
        "validAfterTime": {
          "type": "string",
          "description": "An absolute time at which resources may be created."
        },
        "validInterval": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:Interval",
          "description": "An absolute time interval within which resources may be created."
        },
        "validUntilDuration": {
          "type": "string",
          "description": "A relative time after which resources should not be created. If the request cannot be fulfilled by this time the request will be failed."
        },
        "validUntilTime": {
          "type": "string",
          "description": "An absolute time after which resources should not be created. If the request cannot be fulfilled by this time the request will be failed."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:QueueingPolicyResponse": {
      "description": "Defines the policy of the QueuedRequest.",
      "properties": {
        "validAfterDuration": {
          "type": "string",
          "description": "A relative time after which resources may be created."
        },
        "validAfterTime": {
          "type": "string",
          "description": "An absolute time at which resources may be created."
        },
        "validInterval": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:IntervalResponse",
          "description": "An absolute time interval within which resources may be created."
        },
        "validUntilDuration": {
          "type": "string",
          "description": "A relative time after which resources should not be created. If the request cannot be fulfilled by this time the request will be failed."
        },
        "validUntilTime": {
          "type": "string",
          "description": "An absolute time after which resources should not be created. If the request cannot be fulfilled by this time the request will be failed."
        }
      },
      "type": "object",
      "required": [
        "validAfterDuration",
        "validAfterTime",
        "validInterval",
        "validUntilDuration",
        "validUntilTime"
      ]
    },
    "google-native:tpu/v2alpha1:SchedulingConfig": {
      "description": "Sets the scheduling options for this node.",
      "properties": {
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the node is preemptible."
        },
        "reserved": {
          "type": "boolean",
          "description": "Whether the node is created under a reservation."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:SchedulingConfigResponse": {
      "description": "Sets the scheduling options for this node.",
      "properties": {
        "preemptible": {
          "type": "boolean",
          "description": "Defines whether the node is preemptible."
        },
        "reserved": {
          "type": "boolean",
          "description": "Whether the node is created under a reservation."
        }
      },
      "type": "object",
      "required": [
        "preemptible",
        "reserved"
      ]
    },
    "google-native:tpu/v2alpha1:ServiceAccount": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account. If empty, default Compute service account will be used."
        },
        "scope": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:ServiceAccountResponse": {
      "description": "A service account.",
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the service account. If empty, default Compute service account will be used."
        },
        "scope": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed."
        }
      },
      "type": "object",
      "required": [
        "email",
        "scope"
      ]
    },
    "google-native:tpu/v2alpha1:ShieldedInstanceConfig": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:ShieldedInstanceConfigResponse": {
      "description": "A set of Shielded Instance options.",
      "properties": {
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled."
        }
      },
      "type": "object",
      "required": [
        "enableSecureBoot"
      ]
    },
    "google-native:tpu/v2alpha1:Spot": {
      "description": "Spot tier definition.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:SpotResponse": {
      "description": "Spot tier definition.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:tpu/v2alpha1:SuspendedDataResponse": {
      "description": "Further data for the suspended state.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:SuspendingDataResponse": {
      "description": "Further data for the suspending state.",
      "type": "object"
    },
    "google-native:tpu/v2alpha1:SymptomResponse": {
      "description": "A Symptom instance.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the Symptom is created."
        },
        "details": {
          "type": "string",
          "description": "Detailed information of the current Symptom."
        },
        "symptomType": {
          "type": "string",
          "description": "Type of the Symptom."
        },
        "workerId": {
          "type": "string",
          "description": "A string used to uniquely distinguish a worker within a TPU node."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "details",
        "symptomType",
        "workerId"
      ]
    },
    "google-native:tpu/v2alpha1:Tpu": {
      "description": "Details of the TPU resource(s) being requested.",
      "properties": {
        "nodeSpec": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:NodeSpec"
          },
          "description": "The TPU node(s) being requested."
        }
      },
      "type": "object"
    },
    "google-native:tpu/v2alpha1:TpuResponse": {
      "description": "Details of the TPU resource(s) being requested.",
      "properties": {
        "nodeSpec": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:NodeSpecResponse"
          },
          "description": "The TPU node(s) being requested."
        }
      },
      "type": "object",
      "required": [
        "nodeSpec"
      ]
    },
    "google-native:transcoder/v1:AdBreak": {
      "description": "Ad break.",
      "properties": {
        "startTimeOffset": {
          "type": "string",
          "description": "Start time in seconds for the ad break, relative to the output file timeline. The default is `0s`."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:AdBreakResponse": {
      "description": "Ad break.",
      "properties": {
        "startTimeOffset": {
          "type": "string",
          "description": "Start time in seconds for the ad break, relative to the output file timeline. The default is `0s`."
        }
      },
      "type": "object",
      "required": [
        "startTimeOffset"
      ]
    },
    "google-native:transcoder/v1:Aes128Encryption": {
      "description": "Configuration for AES-128 encryption.",
      "type": "object"
    },
    "google-native:transcoder/v1:Aes128EncryptionResponse": {
      "description": "Configuration for AES-128 encryption.",
      "type": "object"
    },
    "google-native:transcoder/v1:Animation": {
      "description": "Animation types.",
      "properties": {
        "animationEnd": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AnimationEnd",
          "description": "End previous animation."
        },
        "animationFade": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AnimationFade",
          "description": "Display overlay object with fade animation."
        },
        "animationStatic": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AnimationStatic",
          "description": "Display static overlay object."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:AnimationEnd": {
      "description": "End previous overlay animation from the video. Without `AnimationEnd`, the overlay object will keep the state of previous animation until the end of the video.",
      "properties": {
        "startTimeOffset": {
          "type": "string",
          "description": "The time to end overlay object, in seconds. Default: 0"
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:AnimationEndResponse": {
      "description": "End previous overlay animation from the video. Without `AnimationEnd`, the overlay object will keep the state of previous animation until the end of the video.",
      "properties": {
        "startTimeOffset": {
          "type": "string",
          "description": "The time to end overlay object, in seconds. Default: 0"
        }
      },
      "type": "object",
      "required": [
        "startTimeOffset"
      ]
    },
    "google-native:transcoder/v1:AnimationFade": {
      "description": "Display overlay object with fade animation.",
      "properties": {
        "endTimeOffset": {
          "type": "string",
          "description": "The time to end the fade animation, in seconds. Default: `start_time_offset` + 1s"
        },
        "fadeType": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AnimationFadeFadeType",
          "description": "Type of fade animation: `FADE_IN` or `FADE_OUT`."
        },
        "startTimeOffset": {
          "type": "string",
          "description": "The time to start the fade animation, in seconds. Default: 0"
        },
        "xy": {
          "$ref": "#/types/google-native:transcoder%2Fv1:NormalizedCoordinate",
          "description": "Normalized coordinates based on output video resolution. Valid values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the overlay object. For example, use the x and y coordinates {0,0} to position the top-left corner of the overlay animation in the top-left corner of the output video."
        }
      },
      "type": "object",
      "required": [
        "fadeType"
      ]
    },
    "google-native:transcoder/v1:AnimationFadeFadeType": {
      "description": "Required. Type of fade animation: `FADE_IN` or `FADE_OUT`.",
      "type": "string",
      "enum": [
        {
          "name": "FadeTypeUnspecified",
          "description": "The fade type is not specified.",
          "value": "FADE_TYPE_UNSPECIFIED"
        },
        {
          "name": "FadeIn",
          "description": "Fade the overlay object into view.",
          "value": "FADE_IN"
        },
        {
          "name": "FadeOut",
          "description": "Fade the overlay object out of view.",
          "value": "FADE_OUT"
        }
      ]
    },
    "google-native:transcoder/v1:AnimationFadeResponse": {
      "description": "Display overlay object with fade animation.",
      "properties": {
        "endTimeOffset": {
          "type": "string",
          "description": "The time to end the fade animation, in seconds. Default: `start_time_offset` + 1s"
        },
        "fadeType": {
          "type": "string",
          "description": "Type of fade animation: `FADE_IN` or `FADE_OUT`."
        },
        "startTimeOffset": {
          "type": "string",
          "description": "The time to start the fade animation, in seconds. Default: 0"
        },
        "xy": {
          "$ref": "#/types/google-native:transcoder%2Fv1:NormalizedCoordinateResponse",
          "description": "Normalized coordinates based on output video resolution. Valid values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the overlay object. For example, use the x and y coordinates {0,0} to position the top-left corner of the overlay animation in the top-left corner of the output video."
        }
      },
      "type": "object",
      "required": [
        "endTimeOffset",
        "fadeType",
        "startTimeOffset",
        "xy"
      ]
    },
    "google-native:transcoder/v1:AnimationResponse": {
      "description": "Animation types.",
      "properties": {
        "animationEnd": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AnimationEndResponse",
          "description": "End previous animation."
        },
        "animationFade": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AnimationFadeResponse",
          "description": "Display overlay object with fade animation."
        },
        "animationStatic": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AnimationStaticResponse",
          "description": "Display static overlay object."
        }
      },
      "type": "object",
      "required": [
        "animationEnd",
        "animationFade",
        "animationStatic"
      ]
    },
    "google-native:transcoder/v1:AnimationStatic": {
      "description": "Display static overlay object.",
      "properties": {
        "startTimeOffset": {
          "type": "string",
          "description": "The time to start displaying the overlay object, in seconds. Default: 0"
        },
        "xy": {
          "$ref": "#/types/google-native:transcoder%2Fv1:NormalizedCoordinate",
          "description": "Normalized coordinates based on output video resolution. Valid values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the overlay object. For example, use the x and y coordinates {0,0} to position the top-left corner of the overlay animation in the top-left corner of the output video."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:AnimationStaticResponse": {
      "description": "Display static overlay object.",
      "properties": {
        "startTimeOffset": {
          "type": "string",
          "description": "The time to start displaying the overlay object, in seconds. Default: 0"
        },
        "xy": {
          "$ref": "#/types/google-native:transcoder%2Fv1:NormalizedCoordinateResponse",
          "description": "Normalized coordinates based on output video resolution. Valid values: `0.0`–`1.0`. `xy` is the upper-left coordinate of the overlay object. For example, use the x and y coordinates {0,0} to position the top-left corner of the overlay animation in the top-left corner of the output video."
        }
      },
      "type": "object",
      "required": [
        "startTimeOffset",
        "xy"
      ]
    },
    "google-native:transcoder/v1:Audio": {
      "description": "Audio preprocessing configuration.",
      "properties": {
        "highBoost": {
          "type": "boolean",
          "description": "Enable boosting high frequency components. The default is `false`. **Note:** This field is not supported."
        },
        "lowBoost": {
          "type": "boolean",
          "description": "Enable boosting low frequency components. The default is `false`. **Note:** This field is not supported."
        },
        "lufs": {
          "type": "number",
          "description": "Specify audio loudness normalization in loudness units relative to full scale (LUFS). Enter a value between -24 and 0 (the default), where: * -24 is the Advanced Television Systems Committee (ATSC A/85) standard * -23 is the EU R128 broadcast standard * -19 is the prior standard for online mono audio * -18 is the ReplayGain standard * -16 is the prior standard for stereo audio * -14 is the new online audio standard recommended by Spotify, as well as Amazon Echo * 0 disables normalization"
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:AudioMapping": {
      "description": "The mapping for the JobConfig.edit_list atoms with audio EditAtom.inputs.",
      "properties": {
        "atomKey": {
          "type": "string",
          "description": "The EditAtom.key that references the atom with audio inputs in the JobConfig.edit_list."
        },
        "gainDb": {
          "type": "number",
          "description": "Audio volume control in dB. Negative values decrease volume, positive values increase. The default is 0."
        },
        "inputChannel": {
          "type": "integer",
          "description": "The zero-based index of the channel in the input audio stream."
        },
        "inputKey": {
          "type": "string",
          "description": "The Input.key that identifies the input file."
        },
        "inputTrack": {
          "type": "integer",
          "description": "The zero-based index of the track in the input file."
        },
        "outputChannel": {
          "type": "integer",
          "description": "The zero-based index of the channel in the output audio stream."
        }
      },
      "type": "object",
      "required": [
        "atomKey",
        "inputChannel",
        "inputKey",
        "inputTrack",
        "outputChannel"
      ]
    },
    "google-native:transcoder/v1:AudioMappingResponse": {
      "description": "The mapping for the JobConfig.edit_list atoms with audio EditAtom.inputs.",
      "properties": {
        "atomKey": {
          "type": "string",
          "description": "The EditAtom.key that references the atom with audio inputs in the JobConfig.edit_list."
        },
        "gainDb": {
          "type": "number",
          "description": "Audio volume control in dB. Negative values decrease volume, positive values increase. The default is 0."
        },
        "inputChannel": {
          "type": "integer",
          "description": "The zero-based index of the channel in the input audio stream."
        },
        "inputKey": {
          "type": "string",
          "description": "The Input.key that identifies the input file."
        },
        "inputTrack": {
          "type": "integer",
          "description": "The zero-based index of the track in the input file."
        },
        "outputChannel": {
          "type": "integer",
          "description": "The zero-based index of the channel in the output audio stream."
        }
      },
      "type": "object",
      "required": [
        "atomKey",
        "gainDb",
        "inputChannel",
        "inputKey",
        "inputTrack",
        "outputChannel"
      ]
    },
    "google-native:transcoder/v1:AudioResponse": {
      "description": "Audio preprocessing configuration.",
      "properties": {
        "highBoost": {
          "type": "boolean",
          "description": "Enable boosting high frequency components. The default is `false`. **Note:** This field is not supported."
        },
        "lowBoost": {
          "type": "boolean",
          "description": "Enable boosting low frequency components. The default is `false`. **Note:** This field is not supported."
        },
        "lufs": {
          "type": "number",
          "description": "Specify audio loudness normalization in loudness units relative to full scale (LUFS). Enter a value between -24 and 0 (the default), where: * -24 is the Advanced Television Systems Committee (ATSC A/85) standard * -23 is the EU R128 broadcast standard * -19 is the prior standard for online mono audio * -18 is the ReplayGain standard * -16 is the prior standard for stereo audio * -14 is the new online audio standard recommended by Spotify, as well as Amazon Echo * 0 disables normalization"
        }
      },
      "type": "object",
      "required": [
        "highBoost",
        "lowBoost",
        "lufs"
      ]
    },
    "google-native:transcoder/v1:AudioStream": {
      "description": "Audio stream resource.",
      "properties": {
        "bitrateBps": {
          "type": "integer",
          "description": "Audio bitrate in bits per second. Must be between 1 and 10,000,000."
        },
        "channelCount": {
          "type": "integer",
          "description": "Number of audio channels. Must be between 1 and 6. The default is 2."
        },
        "channelLayout": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of channel names specifying layout of the audio channels. This only affects the metadata embedded in the container headers, if supported by the specified format. The default is `[\"fl\", \"fr\"]`. Supported channel names: - `fl` - Front left channel - `fr` - Front right channel - `sl` - Side left channel - `sr` - Side right channel - `fc` - Front center channel - `lfe` - Low frequency"
        },
        "codec": {
          "type": "string",
          "description": "The codec for this audio stream. The default is `aac`. Supported audio codecs: - `aac` - `aac-he` - `aac-he-v2` - `mp3` - `ac3` - `eac3`"
        },
        "displayName": {
          "type": "string",
          "description": "The name for this particular audio stream that will be added to the HLS/DASH manifest. Not supported in MP4 files."
        },
        "languageCode": {
          "type": "string",
          "description": "The BCP-47 language code, such as `en-US` or `sr-Latn`. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier. Not supported in MP4 files."
        },
        "mapping": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:AudioMapping"
          },
          "description": "The mapping for the JobConfig.edit_list atoms with audio EditAtom.inputs."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "The audio sample rate in Hertz. The default is 48000 Hertz."
        }
      },
      "type": "object",
      "required": [
        "bitrateBps"
      ]
    },
    "google-native:transcoder/v1:AudioStreamResponse": {
      "description": "Audio stream resource.",
      "properties": {
        "bitrateBps": {
          "type": "integer",
          "description": "Audio bitrate in bits per second. Must be between 1 and 10,000,000."
        },
        "channelCount": {
          "type": "integer",
          "description": "Number of audio channels. Must be between 1 and 6. The default is 2."
        },
        "channelLayout": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of channel names specifying layout of the audio channels. This only affects the metadata embedded in the container headers, if supported by the specified format. The default is `[\"fl\", \"fr\"]`. Supported channel names: - `fl` - Front left channel - `fr` - Front right channel - `sl` - Side left channel - `sr` - Side right channel - `fc` - Front center channel - `lfe` - Low frequency"
        },
        "codec": {
          "type": "string",
          "description": "The codec for this audio stream. The default is `aac`. Supported audio codecs: - `aac` - `aac-he` - `aac-he-v2` - `mp3` - `ac3` - `eac3`"
        },
        "displayName": {
          "type": "string",
          "description": "The name for this particular audio stream that will be added to the HLS/DASH manifest. Not supported in MP4 files."
        },
        "languageCode": {
          "type": "string",
          "description": "The BCP-47 language code, such as `en-US` or `sr-Latn`. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier. Not supported in MP4 files."
        },
        "mapping": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:AudioMappingResponse"
          },
          "description": "The mapping for the JobConfig.edit_list atoms with audio EditAtom.inputs."
        },
        "sampleRateHertz": {
          "type": "integer",
          "description": "The audio sample rate in Hertz. The default is 48000 Hertz."
        }
      },
      "type": "object",
      "required": [
        "bitrateBps",
        "channelCount",
        "channelLayout",
        "codec",
        "displayName",
        "languageCode",
        "mapping",
        "sampleRateHertz"
      ]
    },
    "google-native:transcoder/v1:BwdifConfig": {
      "description": "Bob Weaver Deinterlacing Filter Configuration.",
      "properties": {
        "deinterlaceAllFrames": {
          "type": "boolean",
          "description": "Deinterlace all frames rather than just the frames identified as interlaced. The default is `false`."
        },
        "mode": {
          "type": "string",
          "description": "Specifies the deinterlacing mode to adopt. The default is `send_frame`. Supported values: - `send_frame`: Output one frame for each frame - `send_field`: Output one frame for each field"
        },
        "parity": {
          "type": "string",
          "description": "The picture field parity assumed for the input interlaced video. The default is `auto`. Supported values: - `tff`: Assume the top field is first - `bff`: Assume the bottom field is first - `auto`: Enable automatic detection of field parity"
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:BwdifConfigResponse": {
      "description": "Bob Weaver Deinterlacing Filter Configuration.",
      "properties": {
        "deinterlaceAllFrames": {
          "type": "boolean",
          "description": "Deinterlace all frames rather than just the frames identified as interlaced. The default is `false`."
        },
        "mode": {
          "type": "string",
          "description": "Specifies the deinterlacing mode to adopt. The default is `send_frame`. Supported values: - `send_frame`: Output one frame for each frame - `send_field`: Output one frame for each field"
        },
        "parity": {
          "type": "string",
          "description": "The picture field parity assumed for the input interlaced video. The default is `auto`. Supported values: - `tff`: Assume the top field is first - `bff`: Assume the bottom field is first - `auto`: Enable automatic detection of field parity"
        }
      },
      "type": "object",
      "required": [
        "deinterlaceAllFrames",
        "mode",
        "parity"
      ]
    },
    "google-native:transcoder/v1:Clearkey": {
      "description": "Clearkey configuration.",
      "type": "object"
    },
    "google-native:transcoder/v1:ClearkeyResponse": {
      "description": "Clearkey configuration.",
      "type": "object"
    },
    "google-native:transcoder/v1:Color": {
      "description": "Color preprocessing configuration. **Note:** This configuration is not supported.",
      "properties": {
        "brightness": {
          "type": "number",
          "description": "Control brightness of the video. Enter a value between -1 and 1, where -1 is minimum brightness and 1 is maximum brightness. 0 is no change. The default is 0."
        },
        "contrast": {
          "type": "number",
          "description": "Control black and white contrast of the video. Enter a value between -1 and 1, where -1 is minimum contrast and 1 is maximum contrast. 0 is no change. The default is 0."
        },
        "saturation": {
          "type": "number",
          "description": "Control color saturation of the video. Enter a value between -1 and 1, where -1 is fully desaturated and 1 is maximum saturation. 0 is no change. The default is 0."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:ColorResponse": {
      "description": "Color preprocessing configuration. **Note:** This configuration is not supported.",
      "properties": {
        "brightness": {
          "type": "number",
          "description": "Control brightness of the video. Enter a value between -1 and 1, where -1 is minimum brightness and 1 is maximum brightness. 0 is no change. The default is 0."
        },
        "contrast": {
          "type": "number",
          "description": "Control black and white contrast of the video. Enter a value between -1 and 1, where -1 is minimum contrast and 1 is maximum contrast. 0 is no change. The default is 0."
        },
        "saturation": {
          "type": "number",
          "description": "Control color saturation of the video. Enter a value between -1 and 1, where -1 is fully desaturated and 1 is maximum saturation. 0 is no change. The default is 0."
        }
      },
      "type": "object",
      "required": [
        "brightness",
        "contrast",
        "saturation"
      ]
    },
    "google-native:transcoder/v1:Crop": {
      "description": "Video cropping configuration for the input video. The cropped input video is scaled to match the output resolution.",
      "properties": {
        "bottomPixels": {
          "type": "integer",
          "description": "The number of pixels to crop from the bottom. The default is 0."
        },
        "leftPixels": {
          "type": "integer",
          "description": "The number of pixels to crop from the left. The default is 0."
        },
        "rightPixels": {
          "type": "integer",
          "description": "The number of pixels to crop from the right. The default is 0."
        },
        "topPixels": {
          "type": "integer",
          "description": "The number of pixels to crop from the top. The default is 0."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:CropResponse": {
      "description": "Video cropping configuration for the input video. The cropped input video is scaled to match the output resolution.",
      "properties": {
        "bottomPixels": {
          "type": "integer",
          "description": "The number of pixels to crop from the bottom. The default is 0."
        },
        "leftPixels": {
          "type": "integer",
          "description": "The number of pixels to crop from the left. The default is 0."
        },
        "rightPixels": {
          "type": "integer",
          "description": "The number of pixels to crop from the right. The default is 0."
        },
        "topPixels": {
          "type": "integer",
          "description": "The number of pixels to crop from the top. The default is 0."
        }
      },
      "type": "object",
      "required": [
        "bottomPixels",
        "leftPixels",
        "rightPixels",
        "topPixels"
      ]
    },
    "google-native:transcoder/v1:DashConfig": {
      "description": "`DASH` manifest configuration.",
      "properties": {
        "segmentReferenceScheme": {
          "$ref": "#/types/google-native:transcoder%2Fv1:DashConfigSegmentReferenceScheme",
          "description": "The segment reference scheme for a `DASH` manifest. The default is `SEGMENT_LIST`."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:DashConfigResponse": {
      "description": "`DASH` manifest configuration.",
      "properties": {
        "segmentReferenceScheme": {
          "type": "string",
          "description": "The segment reference scheme for a `DASH` manifest. The default is `SEGMENT_LIST`."
        }
      },
      "type": "object",
      "required": [
        "segmentReferenceScheme"
      ]
    },
    "google-native:transcoder/v1:DashConfigSegmentReferenceScheme": {
      "description": "The segment reference scheme for a `DASH` manifest. The default is `SEGMENT_LIST`.",
      "type": "string",
      "enum": [
        {
          "name": "SegmentReferenceSchemeUnspecified",
          "description": "The segment reference scheme is not specified.",
          "value": "SEGMENT_REFERENCE_SCHEME_UNSPECIFIED"
        },
        {
          "name": "SegmentList",
          "description": "Explicitly lists the URLs of media files for each segment. For example, if SegmentSettings.individual_segments is `true`, then the manifest contains fields similar to the following: ```xml ... ```",
          "value": "SEGMENT_LIST"
        },
        {
          "name": "SegmentTemplateNumber",
          "description": "SegmentSettings.individual_segments must be set to `true` to use this segment reference scheme. Uses the DASH specification `` tag to determine the URLs of media files for each segment. For example: ```xml ... ```",
          "value": "SEGMENT_TEMPLATE_NUMBER"
        }
      ]
    },
    "google-native:transcoder/v1:Deblock": {
      "description": "Deblock preprocessing configuration. **Note:** This configuration is not supported.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable deblocker. The default is `false`."
        },
        "strength": {
          "type": "number",
          "description": "Set strength of the deblocker. Enter a value between 0 and 1. The higher the value, the stronger the block removal. 0 is no deblocking. The default is 0."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:DeblockResponse": {
      "description": "Deblock preprocessing configuration. **Note:** This configuration is not supported.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable deblocker. The default is `false`."
        },
        "strength": {
          "type": "number",
          "description": "Set strength of the deblocker. Enter a value between 0 and 1. The higher the value, the stronger the block removal. 0 is no deblocking. The default is 0."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "strength"
      ]
    },
    "google-native:transcoder/v1:Deinterlace": {
      "description": "Deinterlace configuration for input video.",
      "properties": {
        "bwdif": {
          "$ref": "#/types/google-native:transcoder%2Fv1:BwdifConfig",
          "description": "Specifies the Bob Weaver Deinterlacing Filter Configuration."
        },
        "yadif": {
          "$ref": "#/types/google-native:transcoder%2Fv1:YadifConfig",
          "description": "Specifies the Yet Another Deinterlacing Filter Configuration."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:DeinterlaceResponse": {
      "description": "Deinterlace configuration for input video.",
      "properties": {
        "bwdif": {
          "$ref": "#/types/google-native:transcoder%2Fv1:BwdifConfigResponse",
          "description": "Specifies the Bob Weaver Deinterlacing Filter Configuration."
        },
        "yadif": {
          "$ref": "#/types/google-native:transcoder%2Fv1:YadifConfigResponse",
          "description": "Specifies the Yet Another Deinterlacing Filter Configuration."
        }
      },
      "type": "object",
      "required": [
        "bwdif",
        "yadif"
      ]
    },
    "google-native:transcoder/v1:Denoise": {
      "description": "Denoise preprocessing configuration. **Note:** This configuration is not supported.",
      "properties": {
        "strength": {
          "type": "number",
          "description": "Set strength of the denoise. Enter a value between 0 and 1. The higher the value, the smoother the image. 0 is no denoising. The default is 0."
        },
        "tune": {
          "type": "string",
          "description": "Set the denoiser mode. The default is `standard`. Supported denoiser modes: - `standard` - `grain`"
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:DenoiseResponse": {
      "description": "Denoise preprocessing configuration. **Note:** This configuration is not supported.",
      "properties": {
        "strength": {
          "type": "number",
          "description": "Set strength of the denoise. Enter a value between 0 and 1. The higher the value, the smoother the image. 0 is no denoising. The default is 0."
        },
        "tune": {
          "type": "string",
          "description": "Set the denoiser mode. The default is `standard`. Supported denoiser modes: - `standard` - `grain`"
        }
      },
      "type": "object",
      "required": [
        "strength",
        "tune"
      ]
    },
    "google-native:transcoder/v1:DrmSystems": {
      "description": "Defines configuration for DRM systems in use.",
      "properties": {
        "clearkey": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Clearkey",
          "description": "Clearkey configuration."
        },
        "fairplay": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Fairplay",
          "description": "Fairplay configuration."
        },
        "playready": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Playready",
          "description": "Playready configuration."
        },
        "widevine": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Widevine",
          "description": "Widevine configuration."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:DrmSystemsResponse": {
      "description": "Defines configuration for DRM systems in use.",
      "properties": {
        "clearkey": {
          "$ref": "#/types/google-native:transcoder%2Fv1:ClearkeyResponse",
          "description": "Clearkey configuration."
        },
        "fairplay": {
          "$ref": "#/types/google-native:transcoder%2Fv1:FairplayResponse",
          "description": "Fairplay configuration."
        },
        "playready": {
          "$ref": "#/types/google-native:transcoder%2Fv1:PlayreadyResponse",
          "description": "Playready configuration."
        },
        "widevine": {
          "$ref": "#/types/google-native:transcoder%2Fv1:WidevineResponse",
          "description": "Widevine configuration."
        }
      },
      "type": "object",
      "required": [
        "clearkey",
        "fairplay",
        "playready",
        "widevine"
      ]
    },
    "google-native:transcoder/v1:EditAtom": {
      "description": "Edit atom.",
      "properties": {
        "endTimeOffset": {
          "type": "string",
          "description": "End time in seconds for the atom, relative to the input file timeline. When `end_time_offset` is not specified, the `inputs` are used until the end of the atom."
        },
        "inputs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of Input.key values identifying files that should be used in this atom. The listed `inputs` must have the same timeline."
        },
        "key": {
          "type": "string",
          "description": "A unique key for this atom. Must be specified when using advanced mapping."
        },
        "startTimeOffset": {
          "type": "string",
          "description": "Start time in seconds for the atom, relative to the input file timeline. The default is `0s`."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:EditAtomResponse": {
      "description": "Edit atom.",
      "properties": {
        "endTimeOffset": {
          "type": "string",
          "description": "End time in seconds for the atom, relative to the input file timeline. When `end_time_offset` is not specified, the `inputs` are used until the end of the atom."
        },
        "inputs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of Input.key values identifying files that should be used in this atom. The listed `inputs` must have the same timeline."
        },
        "key": {
          "type": "string",
          "description": "A unique key for this atom. Must be specified when using advanced mapping."
        },
        "startTimeOffset": {
          "type": "string",
          "description": "Start time in seconds for the atom, relative to the input file timeline. The default is `0s`."
        }
      },
      "type": "object",
      "required": [
        "endTimeOffset",
        "inputs",
        "key",
        "startTimeOffset"
      ]
    },
    "google-native:transcoder/v1:ElementaryStream": {
      "description": "Encoding of an input file such as an audio, video, or text track. Elementary streams must be packaged before mapping and sharing between different output formats.",
      "properties": {
        "audioStream": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AudioStream",
          "description": "Encoding of an audio stream."
        },
        "key": {
          "type": "string",
          "description": "A unique key for this elementary stream."
        },
        "textStream": {
          "$ref": "#/types/google-native:transcoder%2Fv1:TextStream",
          "description": "Encoding of a text stream. For example, closed captions or subtitles."
        },
        "videoStream": {
          "$ref": "#/types/google-native:transcoder%2Fv1:VideoStream",
          "description": "Encoding of a video stream."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:ElementaryStreamResponse": {
      "description": "Encoding of an input file such as an audio, video, or text track. Elementary streams must be packaged before mapping and sharing between different output formats.",
      "properties": {
        "audioStream": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AudioStreamResponse",
          "description": "Encoding of an audio stream."
        },
        "key": {
          "type": "string",
          "description": "A unique key for this elementary stream."
        },
        "textStream": {
          "$ref": "#/types/google-native:transcoder%2Fv1:TextStreamResponse",
          "description": "Encoding of a text stream. For example, closed captions or subtitles."
        },
        "videoStream": {
          "$ref": "#/types/google-native:transcoder%2Fv1:VideoStreamResponse",
          "description": "Encoding of a video stream."
        }
      },
      "type": "object",
      "required": [
        "audioStream",
        "key",
        "textStream",
        "videoStream"
      ]
    },
    "google-native:transcoder/v1:Encryption": {
      "description": "Encryption settings.",
      "properties": {
        "aes128": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Aes128Encryption",
          "description": "Configuration for AES-128 encryption."
        },
        "drmSystems": {
          "$ref": "#/types/google-native:transcoder%2Fv1:DrmSystems",
          "description": "DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled."
        },
        "id": {
          "type": "string",
          "description": "Identifier for this set of encryption options."
        },
        "mpegCenc": {
          "$ref": "#/types/google-native:transcoder%2Fv1:MpegCommonEncryption",
          "description": "Configuration for MPEG Common Encryption (MPEG-CENC)."
        },
        "sampleAes": {
          "$ref": "#/types/google-native:transcoder%2Fv1:SampleAesEncryption",
          "description": "Configuration for SAMPLE-AES encryption."
        },
        "secretManagerKeySource": {
          "$ref": "#/types/google-native:transcoder%2Fv1:SecretManagerSource",
          "description": "Keys are stored in Google Secret Manager."
        }
      },
      "type": "object",
      "required": [
        "drmSystems",
        "id"
      ]
    },
    "google-native:transcoder/v1:EncryptionResponse": {
      "description": "Encryption settings.",
      "properties": {
        "aes128": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Aes128EncryptionResponse",
          "description": "Configuration for AES-128 encryption."
        },
        "drmSystems": {
          "$ref": "#/types/google-native:transcoder%2Fv1:DrmSystemsResponse",
          "description": "DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled."
        },
        "mpegCenc": {
          "$ref": "#/types/google-native:transcoder%2Fv1:MpegCommonEncryptionResponse",
          "description": "Configuration for MPEG Common Encryption (MPEG-CENC)."
        },
        "sampleAes": {
          "$ref": "#/types/google-native:transcoder%2Fv1:SampleAesEncryptionResponse",
          "description": "Configuration for SAMPLE-AES encryption."
        },
        "secretManagerKeySource": {
          "$ref": "#/types/google-native:transcoder%2Fv1:SecretManagerSourceResponse",
          "description": "Keys are stored in Google Secret Manager."
        }
      },
      "type": "object",
      "required": [
        "aes128",
        "drmSystems",
        "mpegCenc",
        "sampleAes",
        "secretManagerKeySource"
      ]
    },
    "google-native:transcoder/v1:Fairplay": {
      "description": "Fairplay configuration.",
      "type": "object"
    },
    "google-native:transcoder/v1:FairplayResponse": {
      "description": "Fairplay configuration.",
      "type": "object"
    },
    "google-native:transcoder/v1:Fmp4Config": {
      "description": "`fmp4` container configuration.",
      "properties": {
        "codecTag": {
          "type": "string",
          "description": "Optional. Specify the codec tag string that will be used in the media bitstream. When not specified, the codec appropriate value is used. Supported H265 codec tags: - `hvc1` (default) - `hev1`"
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:Fmp4ConfigResponse": {
      "description": "`fmp4` container configuration.",
      "properties": {
        "codecTag": {
          "type": "string",
          "description": "Optional. Specify the codec tag string that will be used in the media bitstream. When not specified, the codec appropriate value is used. Supported H265 codec tags: - `hvc1` (default) - `hev1`"
        }
      },
      "type": "object",
      "required": [
        "codecTag"
      ]
    },
    "google-native:transcoder/v1:H264CodecSettings": {
      "description": "H264 codec settings.",
      "properties": {
        "allowOpenGop": {
          "type": "boolean",
          "description": "Specifies whether an open Group of Pictures (GOP) structure should be allowed or not. The default is `false`."
        },
        "aqStrength": {
          "type": "number",
          "description": "Specify the intensity of the adaptive quantizer (AQ). Must be between 0 and 1, where 0 disables the quantizer and 1 maximizes the quantizer. A higher value equals a lower bitrate but smoother image. The default is 0."
        },
        "bFrameCount": {
          "type": "integer",
          "description": "The number of consecutive B-frames. Must be greater than or equal to zero. Must be less than H264CodecSettings.gop_frame_count if set. The default is 0."
        },
        "bPyramid": {
          "type": "boolean",
          "description": "Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`."
        },
        "bitrateBps": {
          "type": "integer",
          "description": "The video bitrate in bits per second. The minimum value is 1,000. The maximum value is 800,000,000."
        },
        "crfLevel": {
          "type": "integer",
          "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21."
        },
        "enableTwoPass": {
          "type": "boolean",
          "description": "Use two-pass encoding strategy to achieve better video quality. H264CodecSettings.rate_control_mode must be `vbr`. The default is `false`."
        },
        "entropyCoder": {
          "type": "string",
          "description": "The entropy coder to use. The default is `cabac`. Supported entropy coders: - `cavlc` - `cabac`"
        },
        "frameRate": {
          "type": "number",
          "description": "The target video frame rate in frames per second (FPS). Must be less than or equal to 120. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculating frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information."
        },
        "gopDuration": {
          "type": "string",
          "description": "Select the GOP size based on the specified duration. The default is `3s`. Note that `gopDuration` must be less than or equal to [`segmentDuration`](#SegmentSettings), and [`segmentDuration`](#SegmentSettings) must be divisible by `gopDuration`."
        },
        "gopFrameCount": {
          "type": "integer",
          "description": "Select the GOP size based on the specified frame count. Must be greater than zero."
        },
        "heightPixels": {
          "type": "integer",
          "description": "The height of the video in pixels. Must be an even integer. When not specified, the height is adjusted to match the specified width and input aspect ratio. If both are omitted, the input height is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the height, in pixels, per the horizontal ASR. The API calculates the width per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "pixelFormat": {
          "type": "string",
          "description": "Pixel format to use. The default is `yuv420p`. Supported pixel formats: - `yuv420p` pixel format - `yuv422p` pixel format - `yuv444p` pixel format - `yuv420p10` 10-bit HDR pixel format - `yuv422p10` 10-bit HDR pixel format - `yuv444p10` 10-bit HDR pixel format - `yuv420p12` 12-bit HDR pixel format - `yuv422p12` 12-bit HDR pixel format - `yuv444p12` 12-bit HDR pixel format"
        },
        "preset": {
          "type": "string",
          "description": "Enforces the specified codec preset. The default is `veryfast`. The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.264#Preset). Note that certain values for this field may cause the transcoder to override other fields you set in the `H264CodecSettings` message."
        },
        "profile": {
          "type": "string",
          "description": "Enforces the specified codec profile. The following profiles are supported: * `baseline` * `main` * `high` (default) The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.264#Tune). Note that certain values for this field may cause the transcoder to override other fields you set in the `H264CodecSettings` message."
        },
        "rateControlMode": {
          "type": "string",
          "description": "Specify the mode. The default is `vbr`. Supported rate control modes: - `vbr` - variable bitrate - `crf` - constant rate factor"
        },
        "tune": {
          "type": "string",
          "description": "Enforces the specified codec tune. The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.264#Tune). Note that certain values for this field may cause the transcoder to override other fields you set in the `H264CodecSettings` message."
        },
        "vbvFullnessBits": {
          "type": "integer",
          "description": "Initial fullness of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to 90% of H264CodecSettings.vbv_size_bits."
        },
        "vbvSizeBits": {
          "type": "integer",
          "description": "Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to H264CodecSettings.bitrate_bps."
        },
        "widthPixels": {
          "type": "integer",
          "description": "The width of the video in pixels. Must be an even integer. When not specified, the width is adjusted to match the specified height and input aspect ratio. If both are omitted, the input width is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the width, in pixels, per the horizontal ASR. The API calculates the height per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        }
      },
      "type": "object",
      "required": [
        "bitrateBps",
        "frameRate"
      ]
    },
    "google-native:transcoder/v1:H264CodecSettingsResponse": {
      "description": "H264 codec settings.",
      "properties": {
        "allowOpenGop": {
          "type": "boolean",
          "description": "Specifies whether an open Group of Pictures (GOP) structure should be allowed or not. The default is `false`."
        },
        "aqStrength": {
          "type": "number",
          "description": "Specify the intensity of the adaptive quantizer (AQ). Must be between 0 and 1, where 0 disables the quantizer and 1 maximizes the quantizer. A higher value equals a lower bitrate but smoother image. The default is 0."
        },
        "bFrameCount": {
          "type": "integer",
          "description": "The number of consecutive B-frames. Must be greater than or equal to zero. Must be less than H264CodecSettings.gop_frame_count if set. The default is 0."
        },
        "bPyramid": {
          "type": "boolean",
          "description": "Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`."
        },
        "bitrateBps": {
          "type": "integer",
          "description": "The video bitrate in bits per second. The minimum value is 1,000. The maximum value is 800,000,000."
        },
        "crfLevel": {
          "type": "integer",
          "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21."
        },
        "enableTwoPass": {
          "type": "boolean",
          "description": "Use two-pass encoding strategy to achieve better video quality. H264CodecSettings.rate_control_mode must be `vbr`. The default is `false`."
        },
        "entropyCoder": {
          "type": "string",
          "description": "The entropy coder to use. The default is `cabac`. Supported entropy coders: - `cavlc` - `cabac`"
        },
        "frameRate": {
          "type": "number",
          "description": "The target video frame rate in frames per second (FPS). Must be less than or equal to 120. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculating frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information."
        },
        "gopDuration": {
          "type": "string",
          "description": "Select the GOP size based on the specified duration. The default is `3s`. Note that `gopDuration` must be less than or equal to [`segmentDuration`](#SegmentSettings), and [`segmentDuration`](#SegmentSettings) must be divisible by `gopDuration`."
        },
        "gopFrameCount": {
          "type": "integer",
          "description": "Select the GOP size based on the specified frame count. Must be greater than zero."
        },
        "heightPixels": {
          "type": "integer",
          "description": "The height of the video in pixels. Must be an even integer. When not specified, the height is adjusted to match the specified width and input aspect ratio. If both are omitted, the input height is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the height, in pixels, per the horizontal ASR. The API calculates the width per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "pixelFormat": {
          "type": "string",
          "description": "Pixel format to use. The default is `yuv420p`. Supported pixel formats: - `yuv420p` pixel format - `yuv422p` pixel format - `yuv444p` pixel format - `yuv420p10` 10-bit HDR pixel format - `yuv422p10` 10-bit HDR pixel format - `yuv444p10` 10-bit HDR pixel format - `yuv420p12` 12-bit HDR pixel format - `yuv422p12` 12-bit HDR pixel format - `yuv444p12` 12-bit HDR pixel format"
        },
        "preset": {
          "type": "string",
          "description": "Enforces the specified codec preset. The default is `veryfast`. The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.264#Preset). Note that certain values for this field may cause the transcoder to override other fields you set in the `H264CodecSettings` message."
        },
        "profile": {
          "type": "string",
          "description": "Enforces the specified codec profile. The following profiles are supported: * `baseline` * `main` * `high` (default) The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.264#Tune). Note that certain values for this field may cause the transcoder to override other fields you set in the `H264CodecSettings` message."
        },
        "rateControlMode": {
          "type": "string",
          "description": "Specify the mode. The default is `vbr`. Supported rate control modes: - `vbr` - variable bitrate - `crf` - constant rate factor"
        },
        "tune": {
          "type": "string",
          "description": "Enforces the specified codec tune. The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.264#Tune). Note that certain values for this field may cause the transcoder to override other fields you set in the `H264CodecSettings` message."
        },
        "vbvFullnessBits": {
          "type": "integer",
          "description": "Initial fullness of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to 90% of H264CodecSettings.vbv_size_bits."
        },
        "vbvSizeBits": {
          "type": "integer",
          "description": "Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to H264CodecSettings.bitrate_bps."
        },
        "widthPixels": {
          "type": "integer",
          "description": "The width of the video in pixels. Must be an even integer. When not specified, the width is adjusted to match the specified height and input aspect ratio. If both are omitted, the input width is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the width, in pixels, per the horizontal ASR. The API calculates the height per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        }
      },
      "type": "object",
      "required": [
        "allowOpenGop",
        "aqStrength",
        "bFrameCount",
        "bPyramid",
        "bitrateBps",
        "crfLevel",
        "enableTwoPass",
        "entropyCoder",
        "frameRate",
        "gopDuration",
        "gopFrameCount",
        "heightPixels",
        "pixelFormat",
        "preset",
        "profile",
        "rateControlMode",
        "tune",
        "vbvFullnessBits",
        "vbvSizeBits",
        "widthPixels"
      ]
    },
    "google-native:transcoder/v1:H265CodecSettings": {
      "description": "H265 codec settings.",
      "properties": {
        "allowOpenGop": {
          "type": "boolean",
          "description": "Specifies whether an open Group of Pictures (GOP) structure should be allowed or not. The default is `false`."
        },
        "aqStrength": {
          "type": "number",
          "description": "Specify the intensity of the adaptive quantizer (AQ). Must be between 0 and 1, where 0 disables the quantizer and 1 maximizes the quantizer. A higher value equals a lower bitrate but smoother image. The default is 0."
        },
        "bFrameCount": {
          "type": "integer",
          "description": "The number of consecutive B-frames. Must be greater than or equal to zero. Must be less than H265CodecSettings.gop_frame_count if set. The default is 0."
        },
        "bPyramid": {
          "type": "boolean",
          "description": "Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`."
        },
        "bitrateBps": {
          "type": "integer",
          "description": "The video bitrate in bits per second. The minimum value is 1,000. The maximum value is 800,000,000."
        },
        "crfLevel": {
          "type": "integer",
          "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21."
        },
        "enableTwoPass": {
          "type": "boolean",
          "description": "Use two-pass encoding strategy to achieve better video quality. H265CodecSettings.rate_control_mode must be `vbr`. The default is `false`."
        },
        "frameRate": {
          "type": "number",
          "description": "The target video frame rate in frames per second (FPS). Must be less than or equal to 120. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculating frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information."
        },
        "gopDuration": {
          "type": "string",
          "description": "Select the GOP size based on the specified duration. The default is `3s`. Note that `gopDuration` must be less than or equal to [`segmentDuration`](#SegmentSettings), and [`segmentDuration`](#SegmentSettings) must be divisible by `gopDuration`."
        },
        "gopFrameCount": {
          "type": "integer",
          "description": "Select the GOP size based on the specified frame count. Must be greater than zero."
        },
        "heightPixels": {
          "type": "integer",
          "description": "The height of the video in pixels. Must be an even integer. When not specified, the height is adjusted to match the specified width and input aspect ratio. If both are omitted, the input height is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the height, in pixels, per the horizontal ASR. The API calculates the width per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "pixelFormat": {
          "type": "string",
          "description": "Pixel format to use. The default is `yuv420p`. Supported pixel formats: - `yuv420p` pixel format - `yuv422p` pixel format - `yuv444p` pixel format - `yuv420p10` 10-bit HDR pixel format - `yuv422p10` 10-bit HDR pixel format - `yuv444p10` 10-bit HDR pixel format - `yuv420p12` 12-bit HDR pixel format - `yuv422p12` 12-bit HDR pixel format - `yuv444p12` 12-bit HDR pixel format"
        },
        "preset": {
          "type": "string",
          "description": "Enforces the specified codec preset. The default is `veryfast`. The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.265). Note that certain values for this field may cause the transcoder to override other fields you set in the `H265CodecSettings` message."
        },
        "profile": {
          "type": "string",
          "description": "Enforces the specified codec profile. The following profiles are supported: * 8-bit profiles * `main` (default) * `main-intra` * `mainstillpicture` * 10-bit profiles * `main10` (default) * `main10-intra` * `main422-10` * `main422-10-intra` * `main444-10` * `main444-10-intra` * 12-bit profiles * `main12` (default) * `main12-intra` * `main422-12` * `main422-12-intra` * `main444-12` * `main444-12-intra` The available options are [FFmpeg-compatible](https://x265.readthedocs.io/). Note that certain values for this field may cause the transcoder to override other fields you set in the `H265CodecSettings` message."
        },
        "rateControlMode": {
          "type": "string",
          "description": "Specify the mode. The default is `vbr`. Supported rate control modes: - `vbr` - variable bitrate - `crf` - constant rate factor"
        },
        "tune": {
          "type": "string",
          "description": "Enforces the specified codec tune. The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.265). Note that certain values for this field may cause the transcoder to override other fields you set in the `H265CodecSettings` message."
        },
        "vbvFullnessBits": {
          "type": "integer",
          "description": "Initial fullness of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to 90% of H265CodecSettings.vbv_size_bits."
        },
        "vbvSizeBits": {
          "type": "integer",
          "description": "Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to `VideoStream.bitrate_bps`."
        },
        "widthPixels": {
          "type": "integer",
          "description": "The width of the video in pixels. Must be an even integer. When not specified, the width is adjusted to match the specified height and input aspect ratio. If both are omitted, the input width is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the width, in pixels, per the horizontal ASR. The API calculates the height per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        }
      },
      "type": "object",
      "required": [
        "bitrateBps",
        "frameRate"
      ]
    },
    "google-native:transcoder/v1:H265CodecSettingsResponse": {
      "description": "H265 codec settings.",
      "properties": {
        "allowOpenGop": {
          "type": "boolean",
          "description": "Specifies whether an open Group of Pictures (GOP) structure should be allowed or not. The default is `false`."
        },
        "aqStrength": {
          "type": "number",
          "description": "Specify the intensity of the adaptive quantizer (AQ). Must be between 0 and 1, where 0 disables the quantizer and 1 maximizes the quantizer. A higher value equals a lower bitrate but smoother image. The default is 0."
        },
        "bFrameCount": {
          "type": "integer",
          "description": "The number of consecutive B-frames. Must be greater than or equal to zero. Must be less than H265CodecSettings.gop_frame_count if set. The default is 0."
        },
        "bPyramid": {
          "type": "boolean",
          "description": "Allow B-pyramid for reference frame selection. This may not be supported on all decoders. The default is `false`."
        },
        "bitrateBps": {
          "type": "integer",
          "description": "The video bitrate in bits per second. The minimum value is 1,000. The maximum value is 800,000,000."
        },
        "crfLevel": {
          "type": "integer",
          "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21."
        },
        "enableTwoPass": {
          "type": "boolean",
          "description": "Use two-pass encoding strategy to achieve better video quality. H265CodecSettings.rate_control_mode must be `vbr`. The default is `false`."
        },
        "frameRate": {
          "type": "number",
          "description": "The target video frame rate in frames per second (FPS). Must be less than or equal to 120. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculating frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information."
        },
        "gopDuration": {
          "type": "string",
          "description": "Select the GOP size based on the specified duration. The default is `3s`. Note that `gopDuration` must be less than or equal to [`segmentDuration`](#SegmentSettings), and [`segmentDuration`](#SegmentSettings) must be divisible by `gopDuration`."
        },
        "gopFrameCount": {
          "type": "integer",
          "description": "Select the GOP size based on the specified frame count. Must be greater than zero."
        },
        "heightPixels": {
          "type": "integer",
          "description": "The height of the video in pixels. Must be an even integer. When not specified, the height is adjusted to match the specified width and input aspect ratio. If both are omitted, the input height is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the height, in pixels, per the horizontal ASR. The API calculates the width per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "pixelFormat": {
          "type": "string",
          "description": "Pixel format to use. The default is `yuv420p`. Supported pixel formats: - `yuv420p` pixel format - `yuv422p` pixel format - `yuv444p` pixel format - `yuv420p10` 10-bit HDR pixel format - `yuv422p10` 10-bit HDR pixel format - `yuv444p10` 10-bit HDR pixel format - `yuv420p12` 12-bit HDR pixel format - `yuv422p12` 12-bit HDR pixel format - `yuv444p12` 12-bit HDR pixel format"
        },
        "preset": {
          "type": "string",
          "description": "Enforces the specified codec preset. The default is `veryfast`. The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.265). Note that certain values for this field may cause the transcoder to override other fields you set in the `H265CodecSettings` message."
        },
        "profile": {
          "type": "string",
          "description": "Enforces the specified codec profile. The following profiles are supported: * 8-bit profiles * `main` (default) * `main-intra` * `mainstillpicture` * 10-bit profiles * `main10` (default) * `main10-intra` * `main422-10` * `main422-10-intra` * `main444-10` * `main444-10-intra` * 12-bit profiles * `main12` (default) * `main12-intra` * `main422-12` * `main422-12-intra` * `main444-12` * `main444-12-intra` The available options are [FFmpeg-compatible](https://x265.readthedocs.io/). Note that certain values for this field may cause the transcoder to override other fields you set in the `H265CodecSettings` message."
        },
        "rateControlMode": {
          "type": "string",
          "description": "Specify the mode. The default is `vbr`. Supported rate control modes: - `vbr` - variable bitrate - `crf` - constant rate factor"
        },
        "tune": {
          "type": "string",
          "description": "Enforces the specified codec tune. The available options are [FFmpeg-compatible](https://trac.ffmpeg.org/wiki/Encode/H.265). Note that certain values for this field may cause the transcoder to override other fields you set in the `H265CodecSettings` message."
        },
        "vbvFullnessBits": {
          "type": "integer",
          "description": "Initial fullness of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to 90% of H265CodecSettings.vbv_size_bits."
        },
        "vbvSizeBits": {
          "type": "integer",
          "description": "Size of the Video Buffering Verifier (VBV) buffer in bits. Must be greater than zero. The default is equal to `VideoStream.bitrate_bps`."
        },
        "widthPixels": {
          "type": "integer",
          "description": "The width of the video in pixels. Must be an even integer. When not specified, the width is adjusted to match the specified height and input aspect ratio. If both are omitted, the input width is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the width, in pixels, per the horizontal ASR. The API calculates the height per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        }
      },
      "type": "object",
      "required": [
        "allowOpenGop",
        "aqStrength",
        "bFrameCount",
        "bPyramid",
        "bitrateBps",
        "crfLevel",
        "enableTwoPass",
        "frameRate",
        "gopDuration",
        "gopFrameCount",
        "heightPixels",
        "pixelFormat",
        "preset",
        "profile",
        "rateControlMode",
        "tune",
        "vbvFullnessBits",
        "vbvSizeBits",
        "widthPixels"
      ]
    },
    "google-native:transcoder/v1:Image": {
      "description": "Overlaid image.",
      "properties": {
        "alpha": {
          "type": "number",
          "description": "Target image opacity. Valid values are from `1.0` (solid, default) to `0.0` (transparent), exclusive. Set this to a value greater than `0.0`."
        },
        "resolution": {
          "$ref": "#/types/google-native:transcoder%2Fv1:NormalizedCoordinate",
          "description": "Normalized image resolution, based on output video resolution. Valid values: `0.0`–`1.0`. To respect the original image aspect ratio, set either `x` or `y` to `0.0`. To use the original image resolution, set both `x` and `y` to `0.0`."
        },
        "uri": {
          "type": "string",
          "description": "URI of the image in Cloud Storage. For example, `gs://bucket/inputs/image.png`. Only PNG and JPEG images are supported."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:transcoder/v1:ImageResponse": {
      "description": "Overlaid image.",
      "properties": {
        "alpha": {
          "type": "number",
          "description": "Target image opacity. Valid values are from `1.0` (solid, default) to `0.0` (transparent), exclusive. Set this to a value greater than `0.0`."
        },
        "resolution": {
          "$ref": "#/types/google-native:transcoder%2Fv1:NormalizedCoordinateResponse",
          "description": "Normalized image resolution, based on output video resolution. Valid values: `0.0`–`1.0`. To respect the original image aspect ratio, set either `x` or `y` to `0.0`. To use the original image resolution, set both `x` and `y` to `0.0`."
        },
        "uri": {
          "type": "string",
          "description": "URI of the image in Cloud Storage. For example, `gs://bucket/inputs/image.png`. Only PNG and JPEG images are supported."
        }
      },
      "type": "object",
      "required": [
        "alpha",
        "resolution",
        "uri"
      ]
    },
    "google-native:transcoder/v1:Input": {
      "description": "Input asset.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A unique key for this input. Must be specified when using advanced mapping and edit lists."
        },
        "preprocessingConfig": {
          "$ref": "#/types/google-native:transcoder%2Fv1:PreprocessingConfig",
          "description": "Preprocessing configurations."
        },
        "uri": {
          "type": "string",
          "description": "URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`). If empty, the value is populated from Job.input_uri. See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:InputResponse": {
      "description": "Input asset.",
      "properties": {
        "key": {
          "type": "string",
          "description": "A unique key for this input. Must be specified when using advanced mapping and edit lists."
        },
        "preprocessingConfig": {
          "$ref": "#/types/google-native:transcoder%2Fv1:PreprocessingConfigResponse",
          "description": "Preprocessing configurations."
        },
        "uri": {
          "type": "string",
          "description": "URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`). If empty, the value is populated from Job.input_uri. See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)."
        }
      },
      "type": "object",
      "required": [
        "key",
        "preprocessingConfig",
        "uri"
      ]
    },
    "google-native:transcoder/v1:JobConfig": {
      "description": "Job configuration",
      "properties": {
        "adBreaks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:AdBreak"
          },
          "description": "List of ad breaks. Specifies where to insert ad break tags in the output manifests."
        },
        "editList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:EditAtom"
          },
          "description": "List of edit atoms. Defines the ultimate timeline of the resulting file or manifest."
        },
        "elementaryStreams": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:ElementaryStream"
          },
          "description": "List of elementary streams."
        },
        "encryptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:Encryption"
          },
          "description": "List of encryption configurations for the content. Each configuration has an ID. Specify this ID in the MuxStream.encryption_id field to indicate the configuration to use for that `MuxStream` output."
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:Input"
          },
          "description": "List of input assets stored in Cloud Storage."
        },
        "manifests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:Manifest"
          },
          "description": "List of output manifests."
        },
        "muxStreams": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:MuxStream"
          },
          "description": "List of multiplexing settings for output streams."
        },
        "output": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Output",
          "description": "Output configuration."
        },
        "overlays": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:Overlay"
          },
          "description": "List of overlays on the output video, in descending Z-order."
        },
        "pubsubDestination": {
          "$ref": "#/types/google-native:transcoder%2Fv1:PubsubDestination",
          "description": "Destination on Pub/Sub."
        },
        "spriteSheets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:SpriteSheet"
          },
          "description": "List of output sprite sheets. Spritesheets require at least one VideoStream in the Jobconfig."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:JobConfigResponse": {
      "description": "Job configuration",
      "properties": {
        "adBreaks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:AdBreakResponse"
          },
          "description": "List of ad breaks. Specifies where to insert ad break tags in the output manifests."
        },
        "editList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:EditAtomResponse"
          },
          "description": "List of edit atoms. Defines the ultimate timeline of the resulting file or manifest."
        },
        "elementaryStreams": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:ElementaryStreamResponse"
          },
          "description": "List of elementary streams."
        },
        "encryptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:EncryptionResponse"
          },
          "description": "List of encryption configurations for the content. Each configuration has an ID. Specify this ID in the MuxStream.encryption_id field to indicate the configuration to use for that `MuxStream` output."
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:InputResponse"
          },
          "description": "List of input assets stored in Cloud Storage."
        },
        "manifests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:ManifestResponse"
          },
          "description": "List of output manifests."
        },
        "muxStreams": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:MuxStreamResponse"
          },
          "description": "List of multiplexing settings for output streams."
        },
        "output": {
          "$ref": "#/types/google-native:transcoder%2Fv1:OutputResponse",
          "description": "Output configuration."
        },
        "overlays": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:OverlayResponse"
          },
          "description": "List of overlays on the output video, in descending Z-order."
        },
        "pubsubDestination": {
          "$ref": "#/types/google-native:transcoder%2Fv1:PubsubDestinationResponse",
          "description": "Destination on Pub/Sub."
        },
        "spriteSheets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:SpriteSheetResponse"
          },
          "description": "List of output sprite sheets. Spritesheets require at least one VideoStream in the Jobconfig."
        }
      },
      "type": "object",
      "required": [
        "adBreaks",
        "editList",
        "elementaryStreams",
        "encryptions",
        "inputs",
        "manifests",
        "muxStreams",
        "output",
        "overlays",
        "pubsubDestination",
        "spriteSheets"
      ]
    },
    "google-native:transcoder/v1:JobMode": {
      "description": "The processing mode of the job. The default is `PROCESSING_MODE_INTERACTIVE`.",
      "type": "string",
      "enum": [
        {
          "name": "ProcessingModeUnspecified",
          "description": "The job processing mode is not specified.",
          "value": "PROCESSING_MODE_UNSPECIFIED"
        },
        {
          "name": "ProcessingModeInteractive",
          "description": "The job processing mode is interactive mode. Interactive job will either be ran or rejected if quota does not allow for it.",
          "value": "PROCESSING_MODE_INTERACTIVE"
        },
        {
          "name": "ProcessingModeBatch",
          "description": "The job processing mode is batch mode. Batch mode allows queuing of jobs.",
          "value": "PROCESSING_MODE_BATCH"
        }
      ]
    },
    "google-native:transcoder/v1:JobOptimization": {
      "description": "Optional. The optimization strategy of the job. The default is `AUTODETECT`.",
      "type": "string",
      "enum": [
        {
          "name": "OptimizationStrategyUnspecified",
          "description": "The optimization strategy is not specified.",
          "value": "OPTIMIZATION_STRATEGY_UNSPECIFIED"
        },
        {
          "name": "Autodetect",
          "description": "Prioritize job processing speed.",
          "value": "AUTODETECT"
        },
        {
          "name": "Disabled",
          "description": "Disable all optimizations.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:transcoder/v1:Manifest": {
      "description": "Manifest configuration.",
      "properties": {
        "dash": {
          "$ref": "#/types/google-native:transcoder%2Fv1:DashConfig",
          "description": "`DASH` manifest configuration."
        },
        "fileName": {
          "type": "string",
          "description": "The name of the generated file. The default is `manifest` with the extension suffix corresponding to the Manifest.type."
        },
        "muxStreams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of user supplied MuxStream.key values that should appear in this manifest. When Manifest.type is `HLS`, a media manifest with name MuxStream.key and `.m3u8` extension is generated for each element in this list."
        },
        "type": {
          "$ref": "#/types/google-native:transcoder%2Fv1:ManifestType",
          "description": "Type of the manifest."
        }
      },
      "type": "object",
      "required": [
        "muxStreams",
        "type"
      ]
    },
    "google-native:transcoder/v1:ManifestResponse": {
      "description": "Manifest configuration.",
      "properties": {
        "dash": {
          "$ref": "#/types/google-native:transcoder%2Fv1:DashConfigResponse",
          "description": "`DASH` manifest configuration."
        },
        "fileName": {
          "type": "string",
          "description": "The name of the generated file. The default is `manifest` with the extension suffix corresponding to the Manifest.type."
        },
        "muxStreams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of user supplied MuxStream.key values that should appear in this manifest. When Manifest.type is `HLS`, a media manifest with name MuxStream.key and `.m3u8` extension is generated for each element in this list."
        },
        "type": {
          "type": "string",
          "description": "Type of the manifest."
        }
      },
      "type": "object",
      "required": [
        "dash",
        "fileName",
        "muxStreams",
        "type"
      ]
    },
    "google-native:transcoder/v1:ManifestType": {
      "description": "Required. Type of the manifest.",
      "type": "string",
      "enum": [
        {
          "name": "ManifestTypeUnspecified",
          "description": "The manifest type is not specified.",
          "value": "MANIFEST_TYPE_UNSPECIFIED"
        },
        {
          "name": "Hls",
          "description": "Create an HLS manifest. The corresponding file extension is `.m3u8`.",
          "value": "HLS"
        },
        {
          "name": "Dash",
          "description": "Create an MPEG-DASH manifest. The corresponding file extension is `.mpd`.",
          "value": "DASH"
        }
      ]
    },
    "google-native:transcoder/v1:MpegCommonEncryption": {
      "description": "Configuration for MPEG Common Encryption (MPEG-CENC).",
      "properties": {
        "scheme": {
          "type": "string",
          "description": "Specify the encryption scheme. Supported encryption schemes: - `cenc` - `cbcs`"
        }
      },
      "type": "object",
      "required": [
        "scheme"
      ]
    },
    "google-native:transcoder/v1:MpegCommonEncryptionResponse": {
      "description": "Configuration for MPEG Common Encryption (MPEG-CENC).",
      "properties": {
        "scheme": {
          "type": "string",
          "description": "Specify the encryption scheme. Supported encryption schemes: - `cenc` - `cbcs`"
        }
      },
      "type": "object",
      "required": [
        "scheme"
      ]
    },
    "google-native:transcoder/v1:MuxStream": {
      "description": "Multiplexing settings for output stream.",
      "properties": {
        "container": {
          "type": "string",
          "description": "The container format. The default is `mp4` Supported container formats: - `ts` - `fmp4`- the corresponding file extension is `.m4s` - `mp4` - `vtt` See also: [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)"
        },
        "elementaryStreams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of ElementaryStream.key values multiplexed in this stream."
        },
        "encryptionId": {
          "type": "string",
          "description": "Identifier of the encryption configuration to use. If omitted, output will be unencrypted."
        },
        "fileName": {
          "type": "string",
          "description": "The name of the generated file. The default is MuxStream.key with the extension suffix corresponding to the MuxStream.container. Individual segments also have an incremental 10-digit zero-padded suffix starting from 0 before the extension, such as `mux_stream0000000123.ts`."
        },
        "fmp4": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Fmp4Config",
          "description": "Optional. `fmp4` container configuration."
        },
        "key": {
          "type": "string",
          "description": "A unique key for this multiplexed stream."
        },
        "segmentSettings": {
          "$ref": "#/types/google-native:transcoder%2Fv1:SegmentSettings",
          "description": "Segment settings for `ts`, `fmp4` and `vtt`."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:MuxStreamResponse": {
      "description": "Multiplexing settings for output stream.",
      "properties": {
        "container": {
          "type": "string",
          "description": "The container format. The default is `mp4` Supported container formats: - `ts` - `fmp4`- the corresponding file extension is `.m4s` - `mp4` - `vtt` See also: [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)"
        },
        "elementaryStreams": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of ElementaryStream.key values multiplexed in this stream."
        },
        "encryptionId": {
          "type": "string",
          "description": "Identifier of the encryption configuration to use. If omitted, output will be unencrypted."
        },
        "fileName": {
          "type": "string",
          "description": "The name of the generated file. The default is MuxStream.key with the extension suffix corresponding to the MuxStream.container. Individual segments also have an incremental 10-digit zero-padded suffix starting from 0 before the extension, such as `mux_stream0000000123.ts`."
        },
        "fmp4": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Fmp4ConfigResponse",
          "description": "Optional. `fmp4` container configuration."
        },
        "key": {
          "type": "string",
          "description": "A unique key for this multiplexed stream."
        },
        "segmentSettings": {
          "$ref": "#/types/google-native:transcoder%2Fv1:SegmentSettingsResponse",
          "description": "Segment settings for `ts`, `fmp4` and `vtt`."
        }
      },
      "type": "object",
      "required": [
        "container",
        "elementaryStreams",
        "encryptionId",
        "fileName",
        "fmp4",
        "key",
        "segmentSettings"
      ]
    },
    "google-native:transcoder/v1:NormalizedCoordinate": {
      "description": "2D normalized coordinates. Default: `{0.0, 0.0}`",
      "properties": {
        "x": {
          "type": "number",
          "description": "Normalized x coordinate."
        },
        "y": {
          "type": "number",
          "description": "Normalized y coordinate."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:NormalizedCoordinateResponse": {
      "description": "2D normalized coordinates. Default: `{0.0, 0.0}`",
      "properties": {
        "x": {
          "type": "number",
          "description": "Normalized x coordinate."
        },
        "y": {
          "type": "number",
          "description": "Normalized y coordinate."
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:transcoder/v1:Output": {
      "description": "Location of output file(s) in a Cloud Storage bucket.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "URI for the output file(s). For example, `gs://my-bucket/outputs/`. If empty, the value is populated from Job.output_uri. See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:OutputResponse": {
      "description": "Location of output file(s) in a Cloud Storage bucket.",
      "properties": {
        "uri": {
          "type": "string",
          "description": "URI for the output file(s). For example, `gs://my-bucket/outputs/`. If empty, the value is populated from Job.output_uri. See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)."
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "google-native:transcoder/v1:Overlay": {
      "description": "Overlay configuration.",
      "properties": {
        "animations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:Animation"
          },
          "description": "List of animations. The list should be chronological, without any time overlap."
        },
        "image": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Image",
          "description": "Image overlay."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:OverlayResponse": {
      "description": "Overlay configuration.",
      "properties": {
        "animations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:AnimationResponse"
          },
          "description": "List of animations. The list should be chronological, without any time overlap."
        },
        "image": {
          "$ref": "#/types/google-native:transcoder%2Fv1:ImageResponse",
          "description": "Image overlay."
        }
      },
      "type": "object",
      "required": [
        "animations",
        "image"
      ]
    },
    "google-native:transcoder/v1:Pad": {
      "description": "Pad filter configuration for the input video. The padded input video is scaled after padding with black to match the output resolution.",
      "properties": {
        "bottomPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the bottom. The default is 0."
        },
        "leftPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the left. The default is 0."
        },
        "rightPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the right. The default is 0."
        },
        "topPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the top. The default is 0."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:PadResponse": {
      "description": "Pad filter configuration for the input video. The padded input video is scaled after padding with black to match the output resolution.",
      "properties": {
        "bottomPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the bottom. The default is 0."
        },
        "leftPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the left. The default is 0."
        },
        "rightPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the right. The default is 0."
        },
        "topPixels": {
          "type": "integer",
          "description": "The number of pixels to add to the top. The default is 0."
        }
      },
      "type": "object",
      "required": [
        "bottomPixels",
        "leftPixels",
        "rightPixels",
        "topPixels"
      ]
    },
    "google-native:transcoder/v1:Playready": {
      "description": "Playready configuration.",
      "type": "object"
    },
    "google-native:transcoder/v1:PlayreadyResponse": {
      "description": "Playready configuration.",
      "type": "object"
    },
    "google-native:transcoder/v1:PreprocessingConfig": {
      "description": "Preprocessing configurations.",
      "properties": {
        "audio": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Audio",
          "description": "Audio preprocessing configuration."
        },
        "color": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Color",
          "description": "Color preprocessing configuration."
        },
        "crop": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Crop",
          "description": "Specify the video cropping configuration."
        },
        "deblock": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Deblock",
          "description": "Deblock preprocessing configuration."
        },
        "deinterlace": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Deinterlace",
          "description": "Specify the video deinterlace configuration."
        },
        "denoise": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Denoise",
          "description": "Denoise preprocessing configuration."
        },
        "pad": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Pad",
          "description": "Specify the video pad filter configuration."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:PreprocessingConfigResponse": {
      "description": "Preprocessing configurations.",
      "properties": {
        "audio": {
          "$ref": "#/types/google-native:transcoder%2Fv1:AudioResponse",
          "description": "Audio preprocessing configuration."
        },
        "color": {
          "$ref": "#/types/google-native:transcoder%2Fv1:ColorResponse",
          "description": "Color preprocessing configuration."
        },
        "crop": {
          "$ref": "#/types/google-native:transcoder%2Fv1:CropResponse",
          "description": "Specify the video cropping configuration."
        },
        "deblock": {
          "$ref": "#/types/google-native:transcoder%2Fv1:DeblockResponse",
          "description": "Deblock preprocessing configuration."
        },
        "deinterlace": {
          "$ref": "#/types/google-native:transcoder%2Fv1:DeinterlaceResponse",
          "description": "Specify the video deinterlace configuration."
        },
        "denoise": {
          "$ref": "#/types/google-native:transcoder%2Fv1:DenoiseResponse",
          "description": "Denoise preprocessing configuration."
        },
        "pad": {
          "$ref": "#/types/google-native:transcoder%2Fv1:PadResponse",
          "description": "Specify the video pad filter configuration."
        }
      },
      "type": "object",
      "required": [
        "audio",
        "color",
        "crop",
        "deblock",
        "deinterlace",
        "denoise",
        "pad"
      ]
    },
    "google-native:transcoder/v1:PubsubDestination": {
      "description": "A Pub/Sub destination.",
      "properties": {
        "topic": {
          "type": "string",
          "description": "The name of the Pub/Sub topic to publish job completion notification to. For example: `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:PubsubDestinationResponse": {
      "description": "A Pub/Sub destination.",
      "properties": {
        "topic": {
          "type": "string",
          "description": "The name of the Pub/Sub topic to publish job completion notification to. For example: `projects/{project}/topics/{topic}`."
        }
      },
      "type": "object",
      "required": [
        "topic"
      ]
    },
    "google-native:transcoder/v1:SampleAesEncryption": {
      "description": "Configuration for SAMPLE-AES encryption.",
      "type": "object"
    },
    "google-native:transcoder/v1:SampleAesEncryptionResponse": {
      "description": "Configuration for SAMPLE-AES encryption.",
      "type": "object"
    },
    "google-native:transcoder/v1:SecretManagerSource": {
      "description": "Configuration for secrets stored in Google Secret Manager.",
      "properties": {
        "secretVersion": {
          "type": "string",
          "description": "The name of the Secret Version containing the encryption key in the following format: `projects/{project}/secrets/{secret_id}/versions/{version_number}` Note that only numbered versions are supported. Aliases like \"latest\" are not supported."
        }
      },
      "type": "object",
      "required": [
        "secretVersion"
      ]
    },
    "google-native:transcoder/v1:SecretManagerSourceResponse": {
      "description": "Configuration for secrets stored in Google Secret Manager.",
      "properties": {
        "secretVersion": {
          "type": "string",
          "description": "The name of the Secret Version containing the encryption key in the following format: `projects/{project}/secrets/{secret_id}/versions/{version_number}` Note that only numbered versions are supported. Aliases like \"latest\" are not supported."
        }
      },
      "type": "object",
      "required": [
        "secretVersion"
      ]
    },
    "google-native:transcoder/v1:SegmentSettings": {
      "description": "Segment settings for `ts`, `fmp4` and `vtt`.",
      "properties": {
        "individualSegments": {
          "type": "boolean",
          "description": "Create an individual segment file. The default is `false`."
        },
        "segmentDuration": {
          "type": "string",
          "description": "Duration of the segments in seconds. The default is `6.0s`. Note that `segmentDuration` must be greater than or equal to [`gopDuration`](#videostream), and `segmentDuration` must be divisible by [`gopDuration`](#videostream)."
        }
      },
      "type": "object",
      "required": [
        "individualSegments"
      ]
    },
    "google-native:transcoder/v1:SegmentSettingsResponse": {
      "description": "Segment settings for `ts`, `fmp4` and `vtt`.",
      "properties": {
        "individualSegments": {
          "type": "boolean",
          "description": "Create an individual segment file. The default is `false`."
        },
        "segmentDuration": {
          "type": "string",
          "description": "Duration of the segments in seconds. The default is `6.0s`. Note that `segmentDuration` must be greater than or equal to [`gopDuration`](#videostream), and `segmentDuration` must be divisible by [`gopDuration`](#videostream)."
        }
      },
      "type": "object",
      "required": [
        "individualSegments",
        "segmentDuration"
      ]
    },
    "google-native:transcoder/v1:SpriteSheet": {
      "description": "Sprite sheet configuration.",
      "properties": {
        "columnCount": {
          "type": "integer",
          "description": "The maximum number of sprites per row in a sprite sheet. The default is 0, which indicates no maximum limit."
        },
        "endTimeOffset": {
          "type": "string",
          "description": "End time in seconds, relative to the output file timeline. When `end_time_offset` is not specified, the sprites are generated until the end of the output file."
        },
        "filePrefix": {
          "type": "string",
          "description": "File name prefix for the generated sprite sheets. Each sprite sheet has an incremental 10-digit zero-padded suffix starting from 0 before the extension, such as `sprite_sheet0000000123.jpeg`."
        },
        "format": {
          "type": "string",
          "description": "Format type. The default is `jpeg`. Supported formats: - `jpeg`"
        },
        "interval": {
          "type": "string",
          "description": "Starting from `0s`, create sprites at regular intervals. Specify the interval value in seconds."
        },
        "quality": {
          "type": "integer",
          "description": "The quality of the generated sprite sheet. Enter a value between 1 and 100, where 1 is the lowest quality and 100 is the highest quality. The default is 100. A high quality value corresponds to a low image data compression ratio."
        },
        "rowCount": {
          "type": "integer",
          "description": "The maximum number of rows per sprite sheet. When the sprite sheet is full, a new sprite sheet is created. The default is 0, which indicates no maximum limit."
        },
        "spriteHeightPixels": {
          "type": "integer",
          "description": "The height of sprite in pixels. Must be an even integer. To preserve the source aspect ratio, set the SpriteSheet.sprite_height_pixels field or the SpriteSheet.sprite_width_pixels field, but not both (the API will automatically calculate the missing field). For portrait videos that contain horizontal ASR and rotation metadata, provide the height, in pixels, per the horizontal ASR. The API calculates the width per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "spriteWidthPixels": {
          "type": "integer",
          "description": "The width of sprite in pixels. Must be an even integer. To preserve the source aspect ratio, set the SpriteSheet.sprite_width_pixels field or the SpriteSheet.sprite_height_pixels field, but not both (the API will automatically calculate the missing field). For portrait videos that contain horizontal ASR and rotation metadata, provide the width, in pixels, per the horizontal ASR. The API calculates the height per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "startTimeOffset": {
          "type": "string",
          "description": "Start time in seconds, relative to the output file timeline. Determines the first sprite to pick. The default is `0s`."
        },
        "totalCount": {
          "type": "integer",
          "description": "Total number of sprites. Create the specified number of sprites distributed evenly across the timeline of the output media. The default is 100."
        }
      },
      "type": "object",
      "required": [
        "filePrefix",
        "spriteHeightPixels",
        "spriteWidthPixels"
      ]
    },
    "google-native:transcoder/v1:SpriteSheetResponse": {
      "description": "Sprite sheet configuration.",
      "properties": {
        "columnCount": {
          "type": "integer",
          "description": "The maximum number of sprites per row in a sprite sheet. The default is 0, which indicates no maximum limit."
        },
        "endTimeOffset": {
          "type": "string",
          "description": "End time in seconds, relative to the output file timeline. When `end_time_offset` is not specified, the sprites are generated until the end of the output file."
        },
        "filePrefix": {
          "type": "string",
          "description": "File name prefix for the generated sprite sheets. Each sprite sheet has an incremental 10-digit zero-padded suffix starting from 0 before the extension, such as `sprite_sheet0000000123.jpeg`."
        },
        "format": {
          "type": "string",
          "description": "Format type. The default is `jpeg`. Supported formats: - `jpeg`"
        },
        "interval": {
          "type": "string",
          "description": "Starting from `0s`, create sprites at regular intervals. Specify the interval value in seconds."
        },
        "quality": {
          "type": "integer",
          "description": "The quality of the generated sprite sheet. Enter a value between 1 and 100, where 1 is the lowest quality and 100 is the highest quality. The default is 100. A high quality value corresponds to a low image data compression ratio."
        },
        "rowCount": {
          "type": "integer",
          "description": "The maximum number of rows per sprite sheet. When the sprite sheet is full, a new sprite sheet is created. The default is 0, which indicates no maximum limit."
        },
        "spriteHeightPixels": {
          "type": "integer",
          "description": "The height of sprite in pixels. Must be an even integer. To preserve the source aspect ratio, set the SpriteSheet.sprite_height_pixels field or the SpriteSheet.sprite_width_pixels field, but not both (the API will automatically calculate the missing field). For portrait videos that contain horizontal ASR and rotation metadata, provide the height, in pixels, per the horizontal ASR. The API calculates the width per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "spriteWidthPixels": {
          "type": "integer",
          "description": "The width of sprite in pixels. Must be an even integer. To preserve the source aspect ratio, set the SpriteSheet.sprite_width_pixels field or the SpriteSheet.sprite_height_pixels field, but not both (the API will automatically calculate the missing field). For portrait videos that contain horizontal ASR and rotation metadata, provide the width, in pixels, per the horizontal ASR. The API calculates the height per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "startTimeOffset": {
          "type": "string",
          "description": "Start time in seconds, relative to the output file timeline. Determines the first sprite to pick. The default is `0s`."
        },
        "totalCount": {
          "type": "integer",
          "description": "Total number of sprites. Create the specified number of sprites distributed evenly across the timeline of the output media. The default is 100."
        }
      },
      "type": "object",
      "required": [
        "columnCount",
        "endTimeOffset",
        "filePrefix",
        "format",
        "interval",
        "quality",
        "rowCount",
        "spriteHeightPixels",
        "spriteWidthPixels",
        "startTimeOffset",
        "totalCount"
      ]
    },
    "google-native:transcoder/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:transcoder/v1:TextMapping": {
      "description": "The mapping for the JobConfig.edit_list atoms with text EditAtom.inputs.",
      "properties": {
        "atomKey": {
          "type": "string",
          "description": "The EditAtom.key that references atom with text inputs in the JobConfig.edit_list."
        },
        "inputKey": {
          "type": "string",
          "description": "The Input.key that identifies the input file."
        },
        "inputTrack": {
          "type": "integer",
          "description": "The zero-based index of the track in the input file."
        }
      },
      "type": "object",
      "required": [
        "atomKey",
        "inputKey",
        "inputTrack"
      ]
    },
    "google-native:transcoder/v1:TextMappingResponse": {
      "description": "The mapping for the JobConfig.edit_list atoms with text EditAtom.inputs.",
      "properties": {
        "atomKey": {
          "type": "string",
          "description": "The EditAtom.key that references atom with text inputs in the JobConfig.edit_list."
        },
        "inputKey": {
          "type": "string",
          "description": "The Input.key that identifies the input file."
        },
        "inputTrack": {
          "type": "integer",
          "description": "The zero-based index of the track in the input file."
        }
      },
      "type": "object",
      "required": [
        "atomKey",
        "inputKey",
        "inputTrack"
      ]
    },
    "google-native:transcoder/v1:TextStream": {
      "description": "Encoding of a text stream. For example, closed captions or subtitles.",
      "properties": {
        "codec": {
          "type": "string",
          "description": "The codec for this text stream. The default is `webvtt`. Supported text codecs: - `srt` - `ttml` - `cea608` - `cea708` - `webvtt`"
        },
        "displayName": {
          "type": "string",
          "description": "The name for this particular text stream that will be added to the HLS/DASH manifest. Not supported in MP4 files."
        },
        "languageCode": {
          "type": "string",
          "description": "The BCP-47 language code, such as `en-US` or `sr-Latn`. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier. Not supported in MP4 files."
        },
        "mapping": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:TextMapping"
          },
          "description": "The mapping for the JobConfig.edit_list atoms with text EditAtom.inputs."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:TextStreamResponse": {
      "description": "Encoding of a text stream. For example, closed captions or subtitles.",
      "properties": {
        "codec": {
          "type": "string",
          "description": "The codec for this text stream. The default is `webvtt`. Supported text codecs: - `srt` - `ttml` - `cea608` - `cea708` - `webvtt`"
        },
        "displayName": {
          "type": "string",
          "description": "The name for this particular text stream that will be added to the HLS/DASH manifest. Not supported in MP4 files."
        },
        "languageCode": {
          "type": "string",
          "description": "The BCP-47 language code, such as `en-US` or `sr-Latn`. For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier. Not supported in MP4 files."
        },
        "mapping": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:transcoder%2Fv1:TextMappingResponse"
          },
          "description": "The mapping for the JobConfig.edit_list atoms with text EditAtom.inputs."
        }
      },
      "type": "object",
      "required": [
        "codec",
        "displayName",
        "languageCode",
        "mapping"
      ]
    },
    "google-native:transcoder/v1:VideoStream": {
      "description": "Video stream resource.",
      "properties": {
        "h264": {
          "$ref": "#/types/google-native:transcoder%2Fv1:H264CodecSettings",
          "description": "H264 codec settings."
        },
        "h265": {
          "$ref": "#/types/google-native:transcoder%2Fv1:H265CodecSettings",
          "description": "H265 codec settings."
        },
        "vp9": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Vp9CodecSettings",
          "description": "VP9 codec settings."
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:VideoStreamResponse": {
      "description": "Video stream resource.",
      "properties": {
        "h264": {
          "$ref": "#/types/google-native:transcoder%2Fv1:H264CodecSettingsResponse",
          "description": "H264 codec settings."
        },
        "h265": {
          "$ref": "#/types/google-native:transcoder%2Fv1:H265CodecSettingsResponse",
          "description": "H265 codec settings."
        },
        "vp9": {
          "$ref": "#/types/google-native:transcoder%2Fv1:Vp9CodecSettingsResponse",
          "description": "VP9 codec settings."
        }
      },
      "type": "object",
      "required": [
        "h264",
        "h265",
        "vp9"
      ]
    },
    "google-native:transcoder/v1:Vp9CodecSettings": {
      "description": "VP9 codec settings.",
      "properties": {
        "bitrateBps": {
          "type": "integer",
          "description": "The video bitrate in bits per second. The minimum value is 1,000. The maximum value is 480,000,000."
        },
        "crfLevel": {
          "type": "integer",
          "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21. **Note:** This field is not supported."
        },
        "frameRate": {
          "type": "number",
          "description": "The target video frame rate in frames per second (FPS). Must be less than or equal to 120. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculating frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information."
        },
        "gopDuration": {
          "type": "string",
          "description": "Select the GOP size based on the specified duration. The default is `3s`. Note that `gopDuration` must be less than or equal to [`segmentDuration`](#SegmentSettings), and [`segmentDuration`](#SegmentSettings) must be divisible by `gopDuration`."
        },
        "gopFrameCount": {
          "type": "integer",
          "description": "Select the GOP size based on the specified frame count. Must be greater than zero."
        },
        "heightPixels": {
          "type": "integer",
          "description": "The height of the video in pixels. Must be an even integer. When not specified, the height is adjusted to match the specified width and input aspect ratio. If both are omitted, the input height is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the height, in pixels, per the horizontal ASR. The API calculates the width per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "pixelFormat": {
          "type": "string",
          "description": "Pixel format to use. The default is `yuv420p`. Supported pixel formats: - `yuv420p` pixel format - `yuv422p` pixel format - `yuv444p` pixel format - `yuv420p10` 10-bit HDR pixel format - `yuv422p10` 10-bit HDR pixel format - `yuv444p10` 10-bit HDR pixel format - `yuv420p12` 12-bit HDR pixel format - `yuv422p12` 12-bit HDR pixel format - `yuv444p12` 12-bit HDR pixel format"
        },
        "profile": {
          "type": "string",
          "description": "Enforces the specified codec profile. The following profiles are supported: * `profile0` (default) * `profile1` * `profile2` * `profile3` The available options are [WebM-compatible](https://www.webmproject.org/vp9/profiles/). Note that certain values for this field may cause the transcoder to override other fields you set in the `Vp9CodecSettings` message."
        },
        "rateControlMode": {
          "type": "string",
          "description": "Specify the mode. The default is `vbr`. Supported rate control modes: - `vbr` - variable bitrate"
        },
        "widthPixels": {
          "type": "integer",
          "description": "The width of the video in pixels. Must be an even integer. When not specified, the width is adjusted to match the specified height and input aspect ratio. If both are omitted, the input width is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the width, in pixels, per the horizontal ASR. The API calculates the height per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        }
      },
      "type": "object",
      "required": [
        "bitrateBps",
        "frameRate"
      ]
    },
    "google-native:transcoder/v1:Vp9CodecSettingsResponse": {
      "description": "VP9 codec settings.",
      "properties": {
        "bitrateBps": {
          "type": "integer",
          "description": "The video bitrate in bits per second. The minimum value is 1,000. The maximum value is 480,000,000."
        },
        "crfLevel": {
          "type": "integer",
          "description": "Target CRF level. Must be between 10 and 36, where 10 is the highest quality and 36 is the most efficient compression. The default is 21. **Note:** This field is not supported."
        },
        "frameRate": {
          "type": "number",
          "description": "The target video frame rate in frames per second (FPS). Must be less than or equal to 120. Will default to the input frame rate if larger than the input frame rate. The API will generate an output FPS that is divisible by the input FPS, and smaller or equal to the target FPS. See [Calculating frame rate](https://cloud.google.com/transcoder/docs/concepts/frame-rate) for more information."
        },
        "gopDuration": {
          "type": "string",
          "description": "Select the GOP size based on the specified duration. The default is `3s`. Note that `gopDuration` must be less than or equal to [`segmentDuration`](#SegmentSettings), and [`segmentDuration`](#SegmentSettings) must be divisible by `gopDuration`."
        },
        "gopFrameCount": {
          "type": "integer",
          "description": "Select the GOP size based on the specified frame count. Must be greater than zero."
        },
        "heightPixels": {
          "type": "integer",
          "description": "The height of the video in pixels. Must be an even integer. When not specified, the height is adjusted to match the specified width and input aspect ratio. If both are omitted, the input height is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the height, in pixels, per the horizontal ASR. The API calculates the width per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        },
        "pixelFormat": {
          "type": "string",
          "description": "Pixel format to use. The default is `yuv420p`. Supported pixel formats: - `yuv420p` pixel format - `yuv422p` pixel format - `yuv444p` pixel format - `yuv420p10` 10-bit HDR pixel format - `yuv422p10` 10-bit HDR pixel format - `yuv444p10` 10-bit HDR pixel format - `yuv420p12` 12-bit HDR pixel format - `yuv422p12` 12-bit HDR pixel format - `yuv444p12` 12-bit HDR pixel format"
        },
        "profile": {
          "type": "string",
          "description": "Enforces the specified codec profile. The following profiles are supported: * `profile0` (default) * `profile1` * `profile2` * `profile3` The available options are [WebM-compatible](https://www.webmproject.org/vp9/profiles/). Note that certain values for this field may cause the transcoder to override other fields you set in the `Vp9CodecSettings` message."
        },
        "rateControlMode": {
          "type": "string",
          "description": "Specify the mode. The default is `vbr`. Supported rate control modes: - `vbr` - variable bitrate"
        },
        "widthPixels": {
          "type": "integer",
          "description": "The width of the video in pixels. Must be an even integer. When not specified, the width is adjusted to match the specified height and input aspect ratio. If both are omitted, the input width is used. For portrait videos that contain horizontal ASR and rotation metadata, provide the width, in pixels, per the horizontal ASR. The API calculates the height per the horizontal ASR. The API detects any rotation metadata and swaps the requested height and width for the output."
        }
      },
      "type": "object",
      "required": [
        "bitrateBps",
        "crfLevel",
        "frameRate",
        "gopDuration",
        "gopFrameCount",
        "heightPixels",
        "pixelFormat",
        "profile",
        "rateControlMode",
        "widthPixels"
      ]
    },
    "google-native:transcoder/v1:Widevine": {
      "description": "Widevine configuration.",
      "type": "object"
    },
    "google-native:transcoder/v1:WidevineResponse": {
      "description": "Widevine configuration.",
      "type": "object"
    },
    "google-native:transcoder/v1:YadifConfig": {
      "description": "Yet Another Deinterlacing Filter Configuration.",
      "properties": {
        "deinterlaceAllFrames": {
          "type": "boolean",
          "description": "Deinterlace all frames rather than just the frames identified as interlaced. The default is `false`."
        },
        "disableSpatialInterlacing": {
          "type": "boolean",
          "description": "Disable spacial interlacing. The default is `false`."
        },
        "mode": {
          "type": "string",
          "description": "Specifies the deinterlacing mode to adopt. The default is `send_frame`. Supported values: - `send_frame`: Output one frame for each frame - `send_field`: Output one frame for each field"
        },
        "parity": {
          "type": "string",
          "description": "The picture field parity assumed for the input interlaced video. The default is `auto`. Supported values: - `tff`: Assume the top field is first - `bff`: Assume the bottom field is first - `auto`: Enable automatic detection of field parity"
        }
      },
      "type": "object"
    },
    "google-native:transcoder/v1:YadifConfigResponse": {
      "description": "Yet Another Deinterlacing Filter Configuration.",
      "properties": {
        "deinterlaceAllFrames": {
          "type": "boolean",
          "description": "Deinterlace all frames rather than just the frames identified as interlaced. The default is `false`."
        },
        "disableSpatialInterlacing": {
          "type": "boolean",
          "description": "Disable spacial interlacing. The default is `false`."
        },
        "mode": {
          "type": "string",
          "description": "Specifies the deinterlacing mode to adopt. The default is `send_frame`. Supported values: - `send_frame`: Output one frame for each frame - `send_field`: Output one frame for each field"
        },
        "parity": {
          "type": "string",
          "description": "The picture field parity assumed for the input interlaced video. The default is `auto`. Supported values: - `tff`: Assume the top field is first - `bff`: Assume the bottom field is first - `auto`: Enable automatic detection of field parity"
        }
      },
      "type": "object",
      "required": [
        "deinterlaceAllFrames",
        "disableSpatialInterlacing",
        "mode",
        "parity"
      ]
    },
    "google-native:translate/v3:GcsSource": {
      "description": "The Google Cloud Storage location for the input content.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "Source data URI. For example, `gs://my_bucket/my_object`."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:translate/v3:GcsSourceResponse": {
      "description": "The Google Cloud Storage location for the input content.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "Source data URI. For example, `gs://my_bucket/my_object`."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:translate/v3:GlossaryInputConfig": {
      "description": "Input configuration for glossaries.",
      "properties": {
        "gcsSource": {
          "$ref": "#/types/google-native:translate%2Fv3:GcsSource",
          "description": "Google Cloud Storage location of glossary data. File format is determined based on the filename extension. API returns [google.rpc.Code.INVALID_ARGUMENT] for unsupported URI-s and file formats. Wildcards are not allowed. This must be a single file in one of the following formats: For unidirectional glossaries: - TSV/CSV (`.tsv`/`.csv`): Two column file, tab- or comma-separated. The first column is source text. The second column is target text. No headers in this file. The first row contains data and not column names. - TMX (`.tmx`): TMX file with parallel data defining source/target term pairs. For equivalent term sets glossaries: - CSV (`.csv`): Multi-column CSV file defining equivalent glossary terms in multiple languages. See documentation for more information - [glossaries](https://cloud.google.com/translate/docs/advanced/glossary)."
        }
      },
      "type": "object",
      "required": [
        "gcsSource"
      ]
    },
    "google-native:translate/v3:GlossaryInputConfigResponse": {
      "description": "Input configuration for glossaries.",
      "properties": {
        "gcsSource": {
          "$ref": "#/types/google-native:translate%2Fv3:GcsSourceResponse",
          "description": "Google Cloud Storage location of glossary data. File format is determined based on the filename extension. API returns [google.rpc.Code.INVALID_ARGUMENT] for unsupported URI-s and file formats. Wildcards are not allowed. This must be a single file in one of the following formats: For unidirectional glossaries: - TSV/CSV (`.tsv`/`.csv`): Two column file, tab- or comma-separated. The first column is source text. The second column is target text. No headers in this file. The first row contains data and not column names. - TMX (`.tmx`): TMX file with parallel data defining source/target term pairs. For equivalent term sets glossaries: - CSV (`.csv`): Multi-column CSV file defining equivalent glossary terms in multiple languages. See documentation for more information - [glossaries](https://cloud.google.com/translate/docs/advanced/glossary)."
        }
      },
      "type": "object",
      "required": [
        "gcsSource"
      ]
    },
    "google-native:translate/v3:GlossaryTerm": {
      "description": "Represents a single glossary term",
      "properties": {
        "languageCode": {
          "type": "string",
          "description": "The language for this glossary term."
        },
        "text": {
          "type": "string",
          "description": "The text for the glossary term."
        }
      },
      "type": "object"
    },
    "google-native:translate/v3:GlossaryTermResponse": {
      "description": "Represents a single glossary term",
      "properties": {
        "languageCode": {
          "type": "string",
          "description": "The language for this glossary term."
        },
        "text": {
          "type": "string",
          "description": "The text for the glossary term."
        }
      },
      "type": "object",
      "required": [
        "languageCode",
        "text"
      ]
    },
    "google-native:translate/v3:GlossaryTermsPair": {
      "description": "Represents a single entry for an unidirectional glossary.",
      "properties": {
        "sourceTerm": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryTerm",
          "description": "The source term is the term that will get match in the text,"
        },
        "targetTerm": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryTerm",
          "description": "The term that will replace the match source term."
        }
      },
      "type": "object"
    },
    "google-native:translate/v3:GlossaryTermsPairResponse": {
      "description": "Represents a single entry for an unidirectional glossary.",
      "properties": {
        "sourceTerm": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermResponse",
          "description": "The source term is the term that will get match in the text,"
        },
        "targetTerm": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermResponse",
          "description": "The term that will replace the match source term."
        }
      },
      "type": "object",
      "required": [
        "sourceTerm",
        "targetTerm"
      ]
    },
    "google-native:translate/v3:GlossaryTermsSet": {
      "description": "Represents a single entry for an equivalent term set glossary. This is used for equivalent term sets where each term can be replaced by the other terms in the set.",
      "properties": {
        "terms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:translate%2Fv3:GlossaryTerm"
          },
          "description": "Each term in the set represents a term that can be replaced by the other terms."
        }
      },
      "type": "object"
    },
    "google-native:translate/v3:GlossaryTermsSetResponse": {
      "description": "Represents a single entry for an equivalent term set glossary. This is used for equivalent term sets where each term can be replaced by the other terms in the set.",
      "properties": {
        "terms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermResponse"
          },
          "description": "Each term in the set represents a term that can be replaced by the other terms."
        }
      },
      "type": "object",
      "required": [
        "terms"
      ]
    },
    "google-native:translate/v3:LanguageCodePair": {
      "description": "Used with unidirectional glossaries.",
      "properties": {
        "sourceLanguageCode": {
          "type": "string",
          "description": "The ISO-639 language code of the input text, for example, \"en-US\". Expected to be an exact match for GlossaryTerm.language_code."
        },
        "targetLanguageCode": {
          "type": "string",
          "description": "The ISO-639 language code for translation output, for example, \"zh-CN\". Expected to be an exact match for GlossaryTerm.language_code."
        }
      },
      "type": "object",
      "required": [
        "sourceLanguageCode",
        "targetLanguageCode"
      ]
    },
    "google-native:translate/v3:LanguageCodePairResponse": {
      "description": "Used with unidirectional glossaries.",
      "properties": {
        "sourceLanguageCode": {
          "type": "string",
          "description": "The ISO-639 language code of the input text, for example, \"en-US\". Expected to be an exact match for GlossaryTerm.language_code."
        },
        "targetLanguageCode": {
          "type": "string",
          "description": "The ISO-639 language code for translation output, for example, \"zh-CN\". Expected to be an exact match for GlossaryTerm.language_code."
        }
      },
      "type": "object",
      "required": [
        "sourceLanguageCode",
        "targetLanguageCode"
      ]
    },
    "google-native:translate/v3:LanguageCodesSet": {
      "description": "Used with equivalent term set glossaries.",
      "properties": {
        "languageCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ISO-639 language code(s) for terms defined in the glossary. All entries are unique. The list contains at least two entries. Expected to be an exact match for GlossaryTerm.language_code."
        }
      },
      "type": "object"
    },
    "google-native:translate/v3:LanguageCodesSetResponse": {
      "description": "Used with equivalent term set glossaries.",
      "properties": {
        "languageCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ISO-639 language code(s) for terms defined in the glossary. All entries are unique. The list contains at least two entries. Expected to be an exact match for GlossaryTerm.language_code."
        }
      },
      "type": "object",
      "required": [
        "languageCodes"
      ]
    },
    "google-native:translate/v3beta1:GcsSource": {
      "description": "The Google Cloud Storage location for the input content.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "Source data URI. For example, `gs://my_bucket/my_object`."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:translate/v3beta1:GcsSourceResponse": {
      "description": "The Google Cloud Storage location for the input content.",
      "properties": {
        "inputUri": {
          "type": "string",
          "description": "Source data URI. For example, `gs://my_bucket/my_object`."
        }
      },
      "type": "object",
      "required": [
        "inputUri"
      ]
    },
    "google-native:translate/v3beta1:GlossaryInputConfig": {
      "description": "Input configuration for glossaries.",
      "properties": {
        "gcsSource": {
          "$ref": "#/types/google-native:translate%2Fv3beta1:GcsSource",
          "description": "Google Cloud Storage location of glossary data. File format is determined based on the filename extension. API returns [google.rpc.Code.INVALID_ARGUMENT] for unsupported URI-s and file formats. Wildcards are not allowed. This must be a single file in one of the following formats: For unidirectional glossaries: - TSV/CSV (`.tsv`/`.csv`): 2 column file, tab- or comma-separated. The first column is source text. The second column is target text. The file must not contain headers. That is, the first row is data, not column names. - TMX (`.tmx`): TMX file with parallel data defining source/target term pairs. For equivalent term sets glossaries: - CSV (`.csv`): Multi-column CSV file defining equivalent glossary terms in multiple languages. See documentation for more information - [glossaries](https://cloud.google.com/translate/docs/advanced/glossary)."
        }
      },
      "type": "object",
      "required": [
        "gcsSource"
      ]
    },
    "google-native:translate/v3beta1:GlossaryInputConfigResponse": {
      "description": "Input configuration for glossaries.",
      "properties": {
        "gcsSource": {
          "$ref": "#/types/google-native:translate%2Fv3beta1:GcsSourceResponse",
          "description": "Google Cloud Storage location of glossary data. File format is determined based on the filename extension. API returns [google.rpc.Code.INVALID_ARGUMENT] for unsupported URI-s and file formats. Wildcards are not allowed. This must be a single file in one of the following formats: For unidirectional glossaries: - TSV/CSV (`.tsv`/`.csv`): 2 column file, tab- or comma-separated. The first column is source text. The second column is target text. The file must not contain headers. That is, the first row is data, not column names. - TMX (`.tmx`): TMX file with parallel data defining source/target term pairs. For equivalent term sets glossaries: - CSV (`.csv`): Multi-column CSV file defining equivalent glossary terms in multiple languages. See documentation for more information - [glossaries](https://cloud.google.com/translate/docs/advanced/glossary)."
        }
      },
      "type": "object",
      "required": [
        "gcsSource"
      ]
    },
    "google-native:translate/v3beta1:LanguageCodePair": {
      "description": "Used with unidirectional glossaries.",
      "properties": {
        "sourceLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code of the input text, for example, \"en-US\". Expected to be an exact match for GlossaryTerm.language_code."
        },
        "targetLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code for translation output, for example, \"zh-CN\". Expected to be an exact match for GlossaryTerm.language_code."
        }
      },
      "type": "object",
      "required": [
        "sourceLanguageCode",
        "targetLanguageCode"
      ]
    },
    "google-native:translate/v3beta1:LanguageCodePairResponse": {
      "description": "Used with unidirectional glossaries.",
      "properties": {
        "sourceLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code of the input text, for example, \"en-US\". Expected to be an exact match for GlossaryTerm.language_code."
        },
        "targetLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code for translation output, for example, \"zh-CN\". Expected to be an exact match for GlossaryTerm.language_code."
        }
      },
      "type": "object",
      "required": [
        "sourceLanguageCode",
        "targetLanguageCode"
      ]
    },
    "google-native:translate/v3beta1:LanguageCodesSet": {
      "description": "Used with equivalent term set glossaries.",
      "properties": {
        "languageCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The BCP-47 language code(s) for terms defined in the glossary. All entries are unique. The list contains at least two entries. Expected to be an exact match for GlossaryTerm.language_code."
        }
      },
      "type": "object"
    },
    "google-native:translate/v3beta1:LanguageCodesSetResponse": {
      "description": "Used with equivalent term set glossaries.",
      "properties": {
        "languageCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The BCP-47 language code(s) for terms defined in the glossary. All entries are unique. The list contains at least two entries. Expected to be an exact match for GlossaryTerm.language_code."
        }
      },
      "type": "object",
      "required": [
        "languageCodes"
      ]
    },
    "google-native:vision/v1:BoundingPoly": {
      "description": "A bounding polygon for the detected image annotation.",
      "properties": {
        "normalizedVertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vision%2Fv1:NormalizedVertex"
          },
          "description": "The bounding polygon normalized vertices."
        },
        "vertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vision%2Fv1:Vertex"
          },
          "description": "The bounding polygon vertices."
        }
      },
      "type": "object"
    },
    "google-native:vision/v1:BoundingPolyResponse": {
      "description": "A bounding polygon for the detected image annotation.",
      "properties": {
        "normalizedVertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vision%2Fv1:NormalizedVertexResponse"
          },
          "description": "The bounding polygon normalized vertices."
        },
        "vertices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vision%2Fv1:VertexResponse"
          },
          "description": "The bounding polygon vertices."
        }
      },
      "type": "object",
      "required": [
        "normalizedVertices",
        "vertices"
      ]
    },
    "google-native:vision/v1:KeyValue": {
      "description": "A product label represented as a key-value pair.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of the label attached to the product. Cannot be empty and cannot exceed 128 bytes."
        },
        "value": {
          "type": "string",
          "description": "The value of the label attached to the product. Cannot be empty and cannot exceed 128 bytes."
        }
      },
      "type": "object"
    },
    "google-native:vision/v1:KeyValueResponse": {
      "description": "A product label represented as a key-value pair.",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of the label attached to the product. Cannot be empty and cannot exceed 128 bytes."
        },
        "value": {
          "type": "string",
          "description": "The value of the label attached to the product. Cannot be empty and cannot exceed 128 bytes."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:vision/v1:NormalizedVertex": {
      "description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
      "properties": {
        "x": {
          "type": "number",
          "description": "X coordinate."
        },
        "y": {
          "type": "number",
          "description": "Y coordinate."
        }
      },
      "type": "object"
    },
    "google-native:vision/v1:NormalizedVertexResponse": {
      "description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
      "properties": {
        "x": {
          "type": "number",
          "description": "X coordinate."
        },
        "y": {
          "type": "number",
          "description": "Y coordinate."
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:vision/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:vision/v1:Vertex": {
      "description": "A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.",
      "properties": {
        "x": {
          "type": "integer",
          "description": "X coordinate."
        },
        "y": {
          "type": "integer",
          "description": "Y coordinate."
        }
      },
      "type": "object"
    },
    "google-native:vision/v1:VertexResponse": {
      "description": "A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.",
      "properties": {
        "x": {
          "type": "integer",
          "description": "X coordinate."
        },
        "y": {
          "type": "integer",
          "description": "Y coordinate."
        }
      },
      "type": "object",
      "required": [
        "x",
        "y"
      ]
    },
    "google-native:vmmigration/v1:AccessKeyCredentials": {
      "description": "Message describing AWS Credentials using access key id and secret.",
      "properties": {
        "accessKeyId": {
          "type": "string",
          "description": "AWS access key ID."
        },
        "secretAccessKey": {
          "type": "string",
          "description": "Input only. AWS secret access key."
        },
        "sessionToken": {
          "type": "string",
          "description": "Input only. AWS session token. Used only when AWS security token service (STS) is responsible for creating the temporary credentials."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:AccessKeyCredentialsResponse": {
      "description": "Message describing AWS Credentials using access key id and secret.",
      "properties": {
        "accessKeyId": {
          "type": "string",
          "description": "AWS access key ID."
        },
        "secretAccessKey": {
          "type": "string",
          "description": "Input only. AWS secret access key."
        },
        "sessionToken": {
          "type": "string",
          "description": "Input only. AWS session token. Used only when AWS security token service (STS) is responsible for creating the temporary credentials."
        }
      },
      "type": "object",
      "required": [
        "accessKeyId",
        "secretAccessKey",
        "sessionToken"
      ]
    },
    "google-native:vmmigration/v1:AdaptingOSStepResponse": {
      "description": "AdaptingOSStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1:ApplianceVersionResponse": {
      "description": "Describes an appliance version.",
      "properties": {
        "critical": {
          "type": "boolean",
          "description": "Determine whether it's critical to upgrade the appliance to this version."
        },
        "releaseNotesUri": {
          "type": "string",
          "description": "Link to a page that contains the version release notes."
        },
        "uri": {
          "type": "string",
          "description": "A link for downloading the version."
        },
        "version": {
          "type": "string",
          "description": "The appliance version."
        }
      },
      "type": "object",
      "required": [
        "critical",
        "releaseNotesUri",
        "uri",
        "version"
      ]
    },
    "google-native:vmmigration/v1:AppliedLicenseResponse": {
      "description": "AppliedLicense holds the license data returned by adaptation module report.",
      "properties": {
        "osLicense": {
          "type": "string",
          "description": "The OS license returned from the adaptation module's report."
        },
        "type": {
          "type": "string",
          "description": "The license type that was used in OS adaptation."
        }
      },
      "type": "object",
      "required": [
        "osLicense",
        "type"
      ]
    },
    "google-native:vmmigration/v1:AvailableUpdatesResponse": {
      "description": "Holds informatiom about the available versions for upgrade.",
      "properties": {
        "inPlaceUpdate": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ApplianceVersionResponse",
          "description": "The latest version for in place update. The current appliance can be updated to this version using the API or m4c CLI."
        },
        "newDeployableAppliance": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ApplianceVersionResponse",
          "description": "The newest deployable version of the appliance. The current appliance can't be updated into this version, and the owner must manually deploy this OVA to a new appliance."
        }
      },
      "type": "object",
      "required": [
        "inPlaceUpdate",
        "newDeployableAppliance"
      ]
    },
    "google-native:vmmigration/v1:AwsDiskDetailsResponse": {
      "description": "The details of an AWS instance disk.",
      "properties": {
        "diskNumber": {
          "type": "integer",
          "description": "The ordinal number of the disk."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size in GB."
        },
        "volumeId": {
          "type": "string",
          "description": "AWS volume ID."
        }
      },
      "type": "object",
      "required": [
        "diskNumber",
        "sizeGb",
        "volumeId"
      ]
    },
    "google-native:vmmigration/v1:AwsSourceDetails": {
      "description": "AwsSourceDetails message describes a specific source details for the AWS source type.",
      "properties": {
        "accessKeyCreds": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AccessKeyCredentials",
          "description": "AWS Credentials using access key id and secret."
        },
        "awsRegion": {
          "type": "string",
          "description": "Immutable. The AWS region that the source VMs will be migrated from."
        },
        "inventorySecurityGroupNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AWS security group names to limit the scope of the source inventory."
        },
        "inventoryTagList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:Tag"
          },
          "description": "AWS resource tags to limit the scope of the source inventory."
        },
        "migrationResourcesUserTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified tags to add to every M2VM generated resource in AWS. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m2vm`."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:AwsSourceDetailsResponse": {
      "description": "AwsSourceDetails message describes a specific source details for the AWS source type.",
      "properties": {
        "accessKeyCreds": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AccessKeyCredentialsResponse",
          "description": "AWS Credentials using access key id and secret."
        },
        "awsRegion": {
          "type": "string",
          "description": "Immutable. The AWS region that the source VMs will be migrated from."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details on the state of the Source in case of an error."
        },
        "inventorySecurityGroupNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AWS security group names to limit the scope of the source inventory."
        },
        "inventoryTagList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:TagResponse"
          },
          "description": "AWS resource tags to limit the scope of the source inventory."
        },
        "migrationResourcesUserTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified tags to add to every M2VM generated resource in AWS. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m2vm`."
        },
        "publicIp": {
          "type": "string",
          "description": "The source's public IP. All communication initiated by this source will originate from this IP."
        },
        "state": {
          "type": "string",
          "description": "State of the source as determined by the health check."
        }
      },
      "type": "object",
      "required": [
        "accessKeyCreds",
        "awsRegion",
        "error",
        "inventorySecurityGroupNames",
        "inventoryTagList",
        "migrationResourcesUserTags",
        "publicIp",
        "state"
      ]
    },
    "google-native:vmmigration/v1:AwsSourceVmDetailsResponse": {
      "description": "Represent the source AWS VM details.",
      "properties": {
        "committedStorageBytes": {
          "type": "string",
          "description": "The total size of the disks being migrated in bytes."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:AwsDiskDetailsResponse"
          },
          "description": "The disks attached to the source VM."
        },
        "firmware": {
          "type": "string",
          "description": "The firmware type of the source VM."
        },
        "vmCapabilitiesInfo": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmCapabilitiesResponse",
          "description": "Information about VM capabilities needed for some Compute Engine features."
        }
      },
      "type": "object",
      "required": [
        "committedStorageBytes",
        "disks",
        "firmware",
        "vmCapabilitiesInfo"
      ]
    },
    "google-native:vmmigration/v1:AzureDiskDetailsResponse": {
      "description": "The details of an Azure VM disk.",
      "properties": {
        "diskId": {
          "type": "string",
          "description": "Azure disk ID."
        },
        "diskNumber": {
          "type": "integer",
          "description": "The ordinal number of the disk."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size in GB."
        }
      },
      "type": "object",
      "required": [
        "diskId",
        "diskNumber",
        "sizeGb"
      ]
    },
    "google-native:vmmigration/v1:AzureSourceDetails": {
      "description": "AzureSourceDetails message describes a specific source details for the Azure source type.",
      "properties": {
        "azureLocation": {
          "type": "string",
          "description": "Immutable. The Azure location (region) that the source VMs will be migrated from."
        },
        "clientSecretCreds": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ClientSecretCredentials",
          "description": "Azure Credentials using tenant ID, client ID and secret."
        },
        "migrationResourcesUserTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified tags to add to every M2VM generated resource in Azure. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m4ce` or `m2vm`."
        },
        "subscriptionId": {
          "type": "string",
          "description": "Immutable. Azure subscription ID."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:AzureSourceDetailsResponse": {
      "description": "AzureSourceDetails message describes a specific source details for the Azure source type.",
      "properties": {
        "azureLocation": {
          "type": "string",
          "description": "Immutable. The Azure location (region) that the source VMs will be migrated from."
        },
        "clientSecretCreds": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ClientSecretCredentialsResponse",
          "description": "Azure Credentials using tenant ID, client ID and secret."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details on the state of the Source in case of an error."
        },
        "migrationResourcesUserTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified tags to add to every M2VM generated resource in Azure. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m4ce` or `m2vm`."
        },
        "resourceGroupId": {
          "type": "string",
          "description": "The ID of the Azure resource group that contains all resources related to the migration process of this source."
        },
        "state": {
          "type": "string",
          "description": "State of the source as determined by the health check."
        },
        "subscriptionId": {
          "type": "string",
          "description": "Immutable. Azure subscription ID."
        }
      },
      "type": "object",
      "required": [
        "azureLocation",
        "clientSecretCreds",
        "error",
        "migrationResourcesUserTags",
        "resourceGroupId",
        "state",
        "subscriptionId"
      ]
    },
    "google-native:vmmigration/v1:AzureSourceVmDetailsResponse": {
      "description": "Represent the source Azure VM details.",
      "properties": {
        "committedStorageBytes": {
          "type": "string",
          "description": "The total size of the disks being migrated in bytes."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:AzureDiskDetailsResponse"
          },
          "description": "The disks attached to the source VM."
        },
        "firmware": {
          "type": "string",
          "description": "The firmware type of the source VM."
        },
        "vmCapabilitiesInfo": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmCapabilitiesResponse",
          "description": "Information about VM capabilities needed for some Compute Engine features."
        }
      },
      "type": "object",
      "required": [
        "committedStorageBytes",
        "disks",
        "firmware",
        "vmCapabilitiesInfo"
      ]
    },
    "google-native:vmmigration/v1:BootDiskDefaults": {
      "description": "BootDiskDefaults hold information about the boot disk of a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* 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, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. The name of the disk."
        },
        "diskType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:BootDiskDefaultsDiskType",
          "description": "Optional. The type of disk provisioning to use for the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:Encryption",
          "description": "Optional. The encryption to apply to the boot disk."
        },
        "image": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:DiskImageDefaults",
          "description": "The image to use when creating the disk."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:BootDiskDefaultsDiskType": {
      "description": "Optional. The type of disk provisioning to use for the VM.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeEngineDiskTypeUnspecified",
          "description": "An unspecified disk type. Will be used as STANDARD.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComputeEngineDiskTypeStandard",
          "description": "A Standard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_STANDARD"
        },
        {
          "name": "ComputeEngineDiskTypeSsd",
          "description": "SSD hard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_SSD"
        },
        {
          "name": "ComputeEngineDiskTypeBalanced",
          "description": "An alternative to SSD persistent disks that balance performance and cost.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_BALANCED"
        }
      ]
    },
    "google-native:vmmigration/v1:BootDiskDefaultsResponse": {
      "description": "BootDiskDefaults hold information about the boot disk of a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* 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, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. The name of the disk."
        },
        "diskType": {
          "type": "string",
          "description": "Optional. The type of disk provisioning to use for the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:EncryptionResponse",
          "description": "Optional. The encryption to apply to the boot disk."
        },
        "image": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:DiskImageDefaultsResponse",
          "description": "The image to use when creating the disk."
        }
      },
      "type": "object",
      "required": [
        "deviceName",
        "diskName",
        "diskType",
        "encryption",
        "image"
      ]
    },
    "google-native:vmmigration/v1:ClientSecretCredentials": {
      "description": "Message describing Azure Credentials using tenant ID, client ID and secret.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Azure client ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Azure client secret."
        },
        "tenantId": {
          "type": "string",
          "description": "Azure tenant ID."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:ClientSecretCredentialsResponse": {
      "description": "Message describing Azure Credentials using tenant ID, client ID and secret.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Azure client ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Azure client secret."
        },
        "tenantId": {
          "type": "string",
          "description": "Azure tenant ID."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "tenantId"
      ]
    },
    "google-native:vmmigration/v1:CloneJobResponse": {
      "description": "CloneJob describes the process of creating a clone of a MigratingVM to the requested target based on the latest successful uploaded snapshots. While the migration cycles of a MigratingVm take place, it is possible to verify the uploaded VM can be started in the cloud, by creating a clone. The clone can be created without any downtime, and it is created using the latest snapshots which are already in the cloud. The cloneJob is only responsible for its work, not its products, which means once it is finished, it will never touch the instance it created. It will only delete it in case of the CloneJob being cancelled or upon failure to clone.",
      "properties": {
        "computeEngineDisksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDetailsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDetailsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "createTime": {
          "type": "string",
          "description": "The time the clone job was created (as an API call, not when it was actually created in the target)."
        },
        "endTime": {
          "type": "string",
          "description": "The time the clone job was ended."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details for the errors that led to the Clone Job's state."
        },
        "name": {
          "type": "string",
          "description": "The name of the clone."
        },
        "state": {
          "type": "string",
          "description": "State of the clone job."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last updated."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:CloneStepResponse"
          },
          "description": "The clone steps list representing its progress."
        }
      },
      "type": "object",
      "required": [
        "computeEngineDisksTargetDetails",
        "computeEngineTargetDetails",
        "createTime",
        "endTime",
        "error",
        "name",
        "state",
        "stateTime",
        "steps"
      ]
    },
    "google-native:vmmigration/v1:CloneStepResponse": {
      "description": "CloneStep holds information about the clone step progress.",
      "properties": {
        "adaptingOs": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AdaptingOSStepResponse",
          "description": "Adapting OS step."
        },
        "endTime": {
          "type": "string",
          "description": "The time the step has ended."
        },
        "instantiatingMigratedVm": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:InstantiatingMigratedVMStepResponse",
          "description": "Instantiating migrated VM step."
        },
        "preparingVmDisks": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:PreparingVMDisksStepResponse",
          "description": "Preparing VM disks step."
        },
        "startTime": {
          "type": "string",
          "description": "The time the step has started."
        }
      },
      "type": "object",
      "required": [
        "adaptingOs",
        "endTime",
        "instantiatingMigratedVm",
        "preparingVmDisks",
        "startTime"
      ]
    },
    "google-native:vmmigration/v1:ComputeEngineDisksTargetDefaults": {
      "description": "ComputeEngineDisksTargetDefaults is a collection of details for creating Persistent Disks in a target Compute Engine project.",
      "properties": {
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:PersistentDiskDefaults"
          },
          "description": "The details of each Persistent Disk to create."
        },
        "disksTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:DisksMigrationDisksTargetDefaults",
          "description": "Details of the disk only migration target."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create the Persistent Disks."
        },
        "vmTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:DisksMigrationVmTargetDefaults",
          "description": "Details of the VM migration target."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the Persistent Disks."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:ComputeEngineDisksTargetDefaultsResponse": {
      "description": "ComputeEngineDisksTargetDefaults is a collection of details for creating Persistent Disks in a target Compute Engine project.",
      "properties": {
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:PersistentDiskDefaultsResponse"
          },
          "description": "The details of each Persistent Disk to create."
        },
        "disksTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:DisksMigrationDisksTargetDefaultsResponse",
          "description": "Details of the disk only migration target."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create the Persistent Disks."
        },
        "vmTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:DisksMigrationVmTargetDefaultsResponse",
          "description": "Details of the VM migration target."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the Persistent Disks."
        }
      },
      "type": "object",
      "required": [
        "disks",
        "disksTargetDefaults",
        "targetProject",
        "vmTargetDefaults",
        "zone"
      ]
    },
    "google-native:vmmigration/v1:ComputeEngineDisksTargetDetailsResponse": {
      "description": "ComputeEngineDisksTargetDetails is a collection of created Persistent Disks details.",
      "properties": {
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:PersistentDiskResponse"
          },
          "description": "The details of each created Persistent Disk."
        },
        "disksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:DisksMigrationDisksTargetDetailsResponse",
          "description": "Details of the disks-only migration target."
        },
        "vmTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:DisksMigrationVmTargetDetailsResponse",
          "description": "Details for the VM the migrated data disks are attached to."
        }
      },
      "type": "object",
      "required": [
        "disks",
        "disksTargetDetails",
        "vmTargetDetails"
      ]
    },
    "google-native:vmmigration/v1:ComputeEngineTargetDefaults": {
      "description": "ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional licenses to assign to the VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeScheduling",
          "description": "Compute instance scheduling information (if empty default is used)."
        },
        "diskType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDefaultsDiskType",
          "description": "The disk type to use in the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:Encryption",
          "description": "Optional. Immutable. The encryption to apply to the VM disks."
        },
        "hostname": {
          "type": "string",
          "description": "The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "licenseType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDefaultsLicenseType",
          "description": "The license type to use in OS adaptation."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "The machine type series to create the VM with."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:NetworkInterface"
          },
          "description": "List of NICs connected to this VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to associate the VM with."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the VM."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:ComputeEngineTargetDefaultsDiskType": {
      "description": "The disk type to use in the VM.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeEngineDiskTypeUnspecified",
          "description": "An unspecified disk type. Will be used as STANDARD.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComputeEngineDiskTypeStandard",
          "description": "A Standard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_STANDARD"
        },
        {
          "name": "ComputeEngineDiskTypeSsd",
          "description": "SSD hard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_SSD"
        },
        {
          "name": "ComputeEngineDiskTypeBalanced",
          "description": "An alternative to SSD persistent disks that balance performance and cost.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_BALANCED"
        }
      ]
    },
    "google-native:vmmigration/v1:ComputeEngineTargetDefaultsLicenseType": {
      "description": "The license type to use in OS adaptation.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeEngineLicenseTypeDefault",
          "description": "The license type is the default for the OS.",
          "value": "COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT"
        },
        {
          "name": "ComputeEngineLicenseTypePayg",
          "description": "The license type is Pay As You Go license type.",
          "value": "COMPUTE_ENGINE_LICENSE_TYPE_PAYG"
        },
        {
          "name": "ComputeEngineLicenseTypeByol",
          "description": "The license type is Bring Your Own License type.",
          "value": "COMPUTE_ENGINE_LICENSE_TYPE_BYOL"
        }
      ]
    },
    "google-native:vmmigration/v1:ComputeEngineTargetDefaultsResponse": {
      "description": "ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional licenses to assign to the VM."
        },
        "appliedLicense": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AppliedLicenseResponse",
          "description": "The OS license returned from the adaptation module report."
        },
        "bootOption": {
          "type": "string",
          "description": "The VM Boot Option, as set in the source VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeSchedulingResponse",
          "description": "Compute instance scheduling information (if empty default is used)."
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use in the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:EncryptionResponse",
          "description": "Optional. Immutable. The encryption to apply to the VM disks."
        },
        "hostname": {
          "type": "string",
          "description": "The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "licenseType": {
          "type": "string",
          "description": "The license type to use in OS adaptation."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "The machine type series to create the VM with."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:NetworkInterfaceResponse"
          },
          "description": "List of NICs connected to this VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to associate the VM with."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the VM."
        }
      },
      "type": "object",
      "required": [
        "additionalLicenses",
        "appliedLicense",
        "bootOption",
        "computeScheduling",
        "diskType",
        "encryption",
        "hostname",
        "labels",
        "licenseType",
        "machineType",
        "machineTypeSeries",
        "metadata",
        "networkInterfaces",
        "networkTags",
        "secureBoot",
        "serviceAccount",
        "targetProject",
        "vmName",
        "zone"
      ]
    },
    "google-native:vmmigration/v1:ComputeEngineTargetDetailsResponse": {
      "description": "ComputeEngineTargetDetails is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional licenses to assign to the VM."
        },
        "appliedLicense": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AppliedLicenseResponse",
          "description": "The OS license returned from the adaptation module report."
        },
        "bootOption": {
          "type": "string",
          "description": "The VM Boot Option, as set in the source VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeSchedulingResponse",
          "description": "Compute instance scheduling information (if empty default is used)."
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use in the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:EncryptionResponse",
          "description": "Optional. The encryption to apply to the VM disks."
        },
        "hostname": {
          "type": "string",
          "description": "The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "licenseType": {
          "type": "string",
          "description": "The license type to use in OS adaptation."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "The machine type series to create the VM with."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:NetworkInterfaceResponse"
          },
          "description": "List of NICs connected to this VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "project": {
          "type": "string",
          "description": "The Google Cloud target project ID or project name."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to associate the VM with."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the VM."
        }
      },
      "type": "object",
      "required": [
        "additionalLicenses",
        "appliedLicense",
        "bootOption",
        "computeScheduling",
        "diskType",
        "encryption",
        "hostname",
        "labels",
        "licenseType",
        "machineType",
        "machineTypeSeries",
        "metadata",
        "networkInterfaces",
        "networkTags",
        "project",
        "secureBoot",
        "serviceAccount",
        "vmName",
        "zone"
      ]
    },
    "google-native:vmmigration/v1:ComputeScheduling": {
      "description": "Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes.",
      "properties": {
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:SchedulingNodeAffinity"
          },
          "description": "A set of node affinity and anti-affinity configurations for sole tenant nodes."
        },
        "onHostMaintenance": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeSchedulingOnHostMaintenance",
          "description": "How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance."
        },
        "restartType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeSchedulingRestartType",
          "description": "Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:ComputeSchedulingOnHostMaintenance": {
      "description": "How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.",
      "type": "string",
      "enum": [
        {
          "name": "OnHostMaintenanceUnspecified",
          "description": "An unknown, unexpected behavior.",
          "value": "ON_HOST_MAINTENANCE_UNSPECIFIED"
        },
        {
          "name": "Terminate",
          "description": "Terminate the instance when the host machine undergoes maintenance.",
          "value": "TERMINATE"
        },
        {
          "name": "Migrate",
          "description": "Migrate the instance when the host machine undergoes maintenance.",
          "value": "MIGRATE"
        }
      ]
    },
    "google-native:vmmigration/v1:ComputeSchedulingResponse": {
      "description": "Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes.",
      "properties": {
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:SchedulingNodeAffinityResponse"
          },
          "description": "A set of node affinity and anti-affinity configurations for sole tenant nodes."
        },
        "onHostMaintenance": {
          "type": "string",
          "description": "How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance."
        },
        "restartType": {
          "type": "string",
          "description": "Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart."
        }
      },
      "type": "object",
      "required": [
        "minNodeCpus",
        "nodeAffinities",
        "onHostMaintenance",
        "restartType"
      ]
    },
    "google-native:vmmigration/v1:ComputeSchedulingRestartType": {
      "description": "Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.",
      "type": "string",
      "enum": [
        {
          "name": "RestartTypeUnspecified",
          "description": "Unspecified behavior. This will use the default.",
          "value": "RESTART_TYPE_UNSPECIFIED"
        },
        {
          "name": "AutomaticRestart",
          "description": "The Instance should be automatically restarted whenever it is terminated by Compute Engine.",
          "value": "AUTOMATIC_RESTART"
        },
        {
          "name": "NoAutomaticRestart",
          "description": "The Instance isn't automatically restarted whenever it is terminated by Compute Engine.",
          "value": "NO_AUTOMATIC_RESTART"
        }
      ]
    },
    "google-native:vmmigration/v1:CutoverForecastResponse": {
      "description": "CutoverForecast holds information about future CutoverJobs of a MigratingVm.",
      "properties": {
        "estimatedCutoverJobDuration": {
          "type": "string",
          "description": "Estimation of the CutoverJob duration."
        }
      },
      "type": "object",
      "required": [
        "estimatedCutoverJobDuration"
      ]
    },
    "google-native:vmmigration/v1:CutoverJobResponse": {
      "description": "CutoverJob message describes a cutover of a migrating VM. The CutoverJob is the operation of shutting down the VM, creating a snapshot and clonning the VM using the replicated snapshot.",
      "properties": {
        "computeEngineDisksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDetailsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDetailsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "createTime": {
          "type": "string",
          "description": "The time the cutover job was created (as an API call, not when it was actually created in the target)."
        },
        "endTime": {
          "type": "string",
          "description": "The time the cutover job had finished."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details for the errors that led to the Cutover Job's state."
        },
        "name": {
          "type": "string",
          "description": "The name of the cutover job."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The current progress in percentage of the cutover job."
        },
        "state": {
          "type": "string",
          "description": "State of the cutover job."
        },
        "stateMessage": {
          "type": "string",
          "description": "A message providing possible extra details about the current state."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last updated."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:CutoverStepResponse"
          },
          "description": "The cutover steps list representing its progress."
        }
      },
      "type": "object",
      "required": [
        "computeEngineDisksTargetDetails",
        "computeEngineTargetDetails",
        "createTime",
        "endTime",
        "error",
        "name",
        "progressPercent",
        "state",
        "stateMessage",
        "stateTime",
        "steps"
      ]
    },
    "google-native:vmmigration/v1:CutoverStepResponse": {
      "description": "CutoverStep holds information about the cutover step progress.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time the step has ended."
        },
        "finalSync": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicationCycleResponse",
          "description": "Final sync step."
        },
        "instantiatingMigratedVm": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:InstantiatingMigratedVMStepResponse",
          "description": "Instantiating migrated VM step."
        },
        "preparingVmDisks": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:PreparingVMDisksStepResponse",
          "description": "Preparing VM disks step."
        },
        "previousReplicationCycle": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicationCycleResponse",
          "description": "A replication cycle prior cutover step."
        },
        "shuttingDownSourceVm": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ShuttingDownSourceVMStepResponse",
          "description": "Shutting down VM step."
        },
        "startTime": {
          "type": "string",
          "description": "The time the step has started."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "finalSync",
        "instantiatingMigratedVm",
        "preparingVmDisks",
        "previousReplicationCycle",
        "shuttingDownSourceVm",
        "startTime"
      ]
    },
    "google-native:vmmigration/v1:CycleStepResponse": {
      "description": "CycleStep holds information about a step progress.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time the cycle step has ended."
        },
        "initializingReplication": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:InitializingReplicationStepResponse",
          "description": "Initializing replication step."
        },
        "postProcessing": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:PostProcessingStepResponse",
          "description": "Post processing step."
        },
        "replicating": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicatingStepResponse",
          "description": "Replicating step."
        },
        "startTime": {
          "type": "string",
          "description": "The time the cycle step has started."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "initializingReplication",
        "postProcessing",
        "replicating",
        "startTime"
      ]
    },
    "google-native:vmmigration/v1:DiskImageDefaults": {
      "description": "Contains details about the image source used to create the disk.",
      "properties": {
        "sourceImage": {
          "type": "string",
          "description": "The Image resource used when creating the disk."
        }
      },
      "type": "object",
      "required": [
        "sourceImage"
      ]
    },
    "google-native:vmmigration/v1:DiskImageDefaultsResponse": {
      "description": "Contains details about the image source used to create the disk.",
      "properties": {
        "sourceImage": {
          "type": "string",
          "description": "The Image resource used when creating the disk."
        }
      },
      "type": "object",
      "required": [
        "sourceImage"
      ]
    },
    "google-native:vmmigration/v1:DisksMigrationDisksTargetDefaults": {
      "description": "Details for a disk only migration.",
      "type": "object"
    },
    "google-native:vmmigration/v1:DisksMigrationDisksTargetDefaultsResponse": {
      "description": "Details for a disk only migration.",
      "type": "object"
    },
    "google-native:vmmigration/v1:DisksMigrationDisksTargetDetailsResponse": {
      "description": "Details for a disks-only migration.",
      "type": "object"
    },
    "google-native:vmmigration/v1:DisksMigrationVmTargetDefaults": {
      "description": "Details for creation of a VM that migrated data disks will be attached to.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional licenses to assign to the VM."
        },
        "bootDiskDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:BootDiskDefaults",
          "description": "Optional. Details of the boot disk of the VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeScheduling",
          "description": "Optional. Compute instance scheduling information (if empty default is used)."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:Encryption",
          "description": "Optional. The encryption to apply to the VM."
        },
        "hostname": {
          "type": "string",
          "description": "Optional. The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map of labels to associate with the VM."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "Optional. The machine type series to create the VM with. For presentation only."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:NetworkInterface"
          },
          "description": "Optional. NICs to attach to the VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The service account to associate the VM with."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        }
      },
      "type": "object",
      "required": [
        "machineType",
        "vmName"
      ]
    },
    "google-native:vmmigration/v1:DisksMigrationVmTargetDefaultsResponse": {
      "description": "Details for creation of a VM that migrated data disks will be attached to.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional licenses to assign to the VM."
        },
        "bootDiskDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:BootDiskDefaultsResponse",
          "description": "Optional. Details of the boot disk of the VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeSchedulingResponse",
          "description": "Optional. Compute instance scheduling information (if empty default is used)."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:EncryptionResponse",
          "description": "Optional. The encryption to apply to the VM."
        },
        "hostname": {
          "type": "string",
          "description": "Optional. The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map of labels to associate with the VM."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "Optional. The machine type series to create the VM with. For presentation only."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:NetworkInterfaceResponse"
          },
          "description": "Optional. NICs to attach to the VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The service account to associate the VM with."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        }
      },
      "type": "object",
      "required": [
        "additionalLicenses",
        "bootDiskDefaults",
        "computeScheduling",
        "encryption",
        "hostname",
        "labels",
        "machineType",
        "machineTypeSeries",
        "metadata",
        "networkInterfaces",
        "networkTags",
        "secureBoot",
        "serviceAccount",
        "vmName"
      ]
    },
    "google-native:vmmigration/v1:DisksMigrationVmTargetDetailsResponse": {
      "description": "Details for the VM created VM as part of disks migration.",
      "properties": {
        "vmUri": {
          "type": "string",
          "description": "The URI of the Compute Engine VM."
        }
      },
      "type": "object",
      "required": [
        "vmUri"
      ]
    },
    "google-native:vmmigration/v1:Encryption": {
      "description": "Encryption message describes the details of the applied encryption.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS."
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:vmmigration/v1:EncryptionResponse": {
      "description": "Encryption message describes the details of the applied encryption.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS."
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:vmmigration/v1:GroupMigrationTargetType": {
      "description": "Immutable. The target type of this group.",
      "type": "string",
      "enum": [
        {
          "name": "MigrationTargetTypeUnspecified",
          "description": "Group type is not specified. This defaults to Compute Engine targets.",
          "value": "MIGRATION_TARGET_TYPE_UNSPECIFIED"
        },
        {
          "name": "MigrationTargetTypeGce",
          "description": "All MigratingVMs in the group must have Compute Engine targets.",
          "value": "MIGRATION_TARGET_TYPE_GCE"
        },
        {
          "name": "MigrationTargetTypeDisks",
          "description": "All MigratingVMs in the group must have Compute Engine Disks targets.",
          "value": "MIGRATION_TARGET_TYPE_DISKS"
        }
      ]
    },
    "google-native:vmmigration/v1:InitializingReplicationStepResponse": {
      "description": "InitializingReplicationStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1:InstantiatingMigratedVMStepResponse": {
      "description": "InstantiatingMigratedVMStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1:LinkResponse": {
      "description": "Describes a URL link.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Describes what the link offers."
        },
        "url": {
          "type": "string",
          "description": "The URL of the link."
        }
      },
      "type": "object",
      "required": [
        "description",
        "url"
      ]
    },
    "google-native:vmmigration/v1:LocalizedMessageResponse": {
      "description": "Provides a localized error message that is safe to return to the user which can be attached to an RPC error.",
      "properties": {
        "locale": {
          "type": "string",
          "description": "The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\""
        },
        "message": {
          "type": "string",
          "description": "The localized error message in the above locale."
        }
      },
      "type": "object",
      "required": [
        "locale",
        "message"
      ]
    },
    "google-native:vmmigration/v1:MigrationWarningResponse": {
      "description": "Represents migration resource warning information that can be used with google.rpc.Status message. MigrationWarning is used to present the user with warning information in migration operations.",
      "properties": {
        "actionItem": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:LocalizedMessageResponse",
          "description": "Suggested action for solving the warning."
        },
        "code": {
          "type": "string",
          "description": "The warning code."
        },
        "helpLinks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:LinkResponse"
          },
          "description": "URL(s) pointing to additional information on handling the current warning."
        },
        "warningMessage": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:LocalizedMessageResponse",
          "description": "The localized warning message."
        },
        "warningTime": {
          "type": "string",
          "description": "The time the warning occurred."
        }
      },
      "type": "object",
      "required": [
        "actionItem",
        "code",
        "helpLinks",
        "warningMessage",
        "warningTime"
      ]
    },
    "google-native:vmmigration/v1:NetworkInterface": {
      "description": "NetworkInterface represents a NIC of a VM.",
      "properties": {
        "externalIp": {
          "type": "string",
          "description": "The external IP to define in the NIC."
        },
        "internalIp": {
          "type": "string",
          "description": "The internal IP to define in the NIC. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path."
        },
        "network": {
          "type": "string",
          "description": "The network to connect the NIC to."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork to connect the NIC to."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:NetworkInterfaceResponse": {
      "description": "NetworkInterface represents a NIC of a VM.",
      "properties": {
        "externalIp": {
          "type": "string",
          "description": "The external IP to define in the NIC."
        },
        "internalIp": {
          "type": "string",
          "description": "The internal IP to define in the NIC. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path."
        },
        "network": {
          "type": "string",
          "description": "The network to connect the NIC to."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork to connect the NIC to."
        }
      },
      "type": "object",
      "required": [
        "externalIp",
        "internalIp",
        "network",
        "subnetwork"
      ]
    },
    "google-native:vmmigration/v1:PersistentDiskDefaults": {
      "description": "Details for creation of a Persistent Disk.",
      "properties": {
        "additionalLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the Persistent Disk."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. The name of the Persistent Disk to create."
        },
        "diskType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:PersistentDiskDefaultsDiskType",
          "description": "The disk type to use."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:Encryption",
          "description": "Optional. The encryption to apply to the disk."
        },
        "sourceDiskNumber": {
          "type": "integer",
          "description": "The ordinal number of the source VM disk."
        },
        "vmAttachmentDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmAttachmentDetails",
          "description": "Optional. Details for attachment of the disk to a VM. Used when the disk is set to be attacked to a target VM."
        }
      },
      "type": "object",
      "required": [
        "sourceDiskNumber"
      ]
    },
    "google-native:vmmigration/v1:PersistentDiskDefaultsDiskType": {
      "description": "The disk type to use.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeEngineDiskTypeUnspecified",
          "description": "An unspecified disk type. Will be used as STANDARD.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComputeEngineDiskTypeStandard",
          "description": "A Standard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_STANDARD"
        },
        {
          "name": "ComputeEngineDiskTypeSsd",
          "description": "SSD hard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_SSD"
        },
        {
          "name": "ComputeEngineDiskTypeBalanced",
          "description": "An alternative to SSD persistent disks that balance performance and cost.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_BALANCED"
        }
      ]
    },
    "google-native:vmmigration/v1:PersistentDiskDefaultsResponse": {
      "description": "Details for creation of a Persistent Disk.",
      "properties": {
        "additionalLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the Persistent Disk."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. The name of the Persistent Disk to create."
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:EncryptionResponse",
          "description": "Optional. The encryption to apply to the disk."
        },
        "sourceDiskNumber": {
          "type": "integer",
          "description": "The ordinal number of the source VM disk."
        },
        "vmAttachmentDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmAttachmentDetailsResponse",
          "description": "Optional. Details for attachment of the disk to a VM. Used when the disk is set to be attacked to a target VM."
        }
      },
      "type": "object",
      "required": [
        "additionalLabels",
        "diskName",
        "diskType",
        "encryption",
        "sourceDiskNumber",
        "vmAttachmentDetails"
      ]
    },
    "google-native:vmmigration/v1:PersistentDiskResponse": {
      "description": "Details of a created Persistent Disk.",
      "properties": {
        "diskUri": {
          "type": "string",
          "description": "The URI of the Persistent Disk."
        },
        "sourceDiskNumber": {
          "type": "integer",
          "description": "The ordinal number of the source VM disk."
        }
      },
      "type": "object",
      "required": [
        "diskUri",
        "sourceDiskNumber"
      ]
    },
    "google-native:vmmigration/v1:PostProcessingStepResponse": {
      "description": "PostProcessingStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1:PreparingVMDisksStepResponse": {
      "description": "PreparingVMDisksStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1:ReplicatingStepResponse": {
      "description": "ReplicatingStep contains specific step details.",
      "properties": {
        "lastThirtyMinutesAverageBytesPerSecond": {
          "type": "string",
          "description": "The source disks replication rate for the last 30 minutes in bytes per second."
        },
        "lastTwoMinutesAverageBytesPerSecond": {
          "type": "string",
          "description": "The source disks replication rate for the last 2 minutes in bytes per second."
        },
        "replicatedBytes": {
          "type": "string",
          "description": "Replicated bytes in the step."
        },
        "totalBytes": {
          "type": "string",
          "description": "Total bytes to be handled in the step."
        }
      },
      "type": "object",
      "required": [
        "lastThirtyMinutesAverageBytesPerSecond",
        "lastTwoMinutesAverageBytesPerSecond",
        "replicatedBytes",
        "totalBytes"
      ]
    },
    "google-native:vmmigration/v1:ReplicationCycleResponse": {
      "description": "ReplicationCycle contains information about the current replication cycle status.",
      "properties": {
        "cycleNumber": {
          "type": "integer",
          "description": "The cycle's ordinal number."
        },
        "endTime": {
          "type": "string",
          "description": "The time the replication cycle has ended."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details on the state of the cycle in case of an error."
        },
        "name": {
          "type": "string",
          "description": "The identifier of the ReplicationCycle."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The current progress in percentage of this cycle. Was replaced by 'steps' field, which breaks down the cycle progression more accurately."
        },
        "startTime": {
          "type": "string",
          "description": "The time the replication cycle has started."
        },
        "state": {
          "type": "string",
          "description": "State of the ReplicationCycle."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:CycleStepResponse"
          },
          "description": "The cycle's steps list representing its progress."
        },
        "totalPauseDuration": {
          "type": "string",
          "description": "The accumulated duration the replication cycle was paused."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:MigrationWarningResponse"
          },
          "description": "Warnings that occurred during the cycle."
        }
      },
      "type": "object",
      "required": [
        "cycleNumber",
        "endTime",
        "error",
        "name",
        "progressPercent",
        "startTime",
        "state",
        "steps",
        "totalPauseDuration",
        "warnings"
      ]
    },
    "google-native:vmmigration/v1:ReplicationSyncResponse": {
      "description": "ReplicationSync contain information about the last replica sync to the cloud.",
      "properties": {
        "lastSyncTime": {
          "type": "string",
          "description": "The most updated snapshot created time in the source that finished replication."
        }
      },
      "type": "object",
      "required": [
        "lastSyncTime"
      ]
    },
    "google-native:vmmigration/v1:SchedulePolicy": {
      "description": "A policy for scheduling replications.",
      "properties": {
        "idleDuration": {
          "type": "string",
          "description": "The idle duration between replication stages."
        },
        "skipOsAdaptation": {
          "type": "boolean",
          "description": "A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM's operating system undergoes changes and adaptations to fully function on Compute Engine."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:SchedulePolicyResponse": {
      "description": "A policy for scheduling replications.",
      "properties": {
        "idleDuration": {
          "type": "string",
          "description": "The idle duration between replication stages."
        },
        "skipOsAdaptation": {
          "type": "boolean",
          "description": "A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM's operating system undergoes changes and adaptations to fully function on Compute Engine."
        }
      },
      "type": "object",
      "required": [
        "idleDuration",
        "skipOsAdaptation"
      ]
    },
    "google-native:vmmigration/v1:SchedulingNodeAffinity": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling",
      "properties": {
        "key": {
          "type": "string",
          "description": "The label key of Node resource to reference."
        },
        "operator": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:SchedulingNodeAffinityOperator",
          "description": "The operator to use for the node resources specified in the `values` parameter."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:SchedulingNodeAffinityOperator": {
      "description": "The operator to use for the node resources specified in the `values` parameter.",
      "type": "string",
      "enum": [
        {
          "name": "OperatorUnspecified",
          "description": "An unknown, unexpected behavior.",
          "value": "OPERATOR_UNSPECIFIED"
        },
        {
          "name": "In",
          "description": "The node resource group should be in these resources affinity.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "The node resource group should not be in these resources affinity.",
          "value": "NOT_IN"
        }
      ]
    },
    "google-native:vmmigration/v1:SchedulingNodeAffinityResponse": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling",
      "properties": {
        "key": {
          "type": "string",
          "description": "The label key of Node resource to reference."
        },
        "operator": {
          "type": "string",
          "description": "The operator to use for the node resources specified in the `values` parameter."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "google-native:vmmigration/v1:ShuttingDownSourceVMStepResponse": {
      "description": "ShuttingDownSourceVMStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:vmmigration/v1:Tag": {
      "description": "Tag is an AWS tag representation.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of tag."
        },
        "value": {
          "type": "string",
          "description": "Value of tag."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:TagResponse": {
      "description": "Tag is an AWS tag representation.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of tag."
        },
        "value": {
          "type": "string",
          "description": "Value of tag."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:vmmigration/v1:UpgradeStatusResponse": {
      "description": "UpgradeStatus contains information about upgradeAppliance operation.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details on the state of the upgrade operation in case of an error."
        },
        "previousVersion": {
          "type": "string",
          "description": "The version from which we upgraded."
        },
        "startTime": {
          "type": "string",
          "description": "The time the operation was started."
        },
        "state": {
          "type": "string",
          "description": "The state of the upgradeAppliance operation."
        },
        "version": {
          "type": "string",
          "description": "The version to upgrade to."
        }
      },
      "type": "object",
      "required": [
        "error",
        "previousVersion",
        "startTime",
        "state",
        "version"
      ]
    },
    "google-native:vmmigration/v1:UtilizationReportTimeFrame": {
      "description": "Time frame of the report.",
      "type": "string",
      "enum": [
        {
          "name": "TimeFrameUnspecified",
          "description": "The time frame was not specified and will default to WEEK.",
          "value": "TIME_FRAME_UNSPECIFIED"
        },
        {
          "name": "Week",
          "description": "One week.",
          "value": "WEEK"
        },
        {
          "name": "Month",
          "description": "One month.",
          "value": "MONTH"
        },
        {
          "name": "Year",
          "description": "One year.",
          "value": "YEAR"
        }
      ]
    },
    "google-native:vmmigration/v1:VmAttachmentDetails": {
      "description": "Details for attachment of the disk to a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* 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, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:VmAttachmentDetailsResponse": {
      "description": "Details for attachment of the disk to a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* 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, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        }
      },
      "type": "object",
      "required": [
        "deviceName"
      ]
    },
    "google-native:vmmigration/v1:VmCapabilitiesResponse": {
      "description": "Migrating VM source information about the VM capabilities needed for some Compute Engine features.",
      "properties": {
        "lastOsCapabilitiesUpdateTime": {
          "type": "string",
          "description": "The last time OS capabilities list was updated."
        },
        "osCapabilities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unordered list. List of certain VM OS capabilities needed for some Compute Engine features."
        }
      },
      "type": "object",
      "required": [
        "lastOsCapabilitiesUpdateTime",
        "osCapabilities"
      ]
    },
    "google-native:vmmigration/v1:VmUtilizationInfo": {
      "description": "Utilization information of a single VM.",
      "properties": {
        "utilization": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmUtilizationMetrics",
          "description": "Utilization metrics for this VM."
        },
        "vmId": {
          "type": "string",
          "description": "The VM's ID in the source."
        },
        "vmwareVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareVmDetails",
          "description": "The description of the VM in a Source of type Vmware."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:VmUtilizationInfoResponse": {
      "description": "Utilization information of a single VM.",
      "properties": {
        "utilization": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmUtilizationMetricsResponse",
          "description": "Utilization metrics for this VM."
        },
        "vmId": {
          "type": "string",
          "description": "The VM's ID in the source."
        },
        "vmwareVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareVmDetailsResponse",
          "description": "The description of the VM in a Source of type Vmware."
        }
      },
      "type": "object",
      "required": [
        "utilization",
        "vmId",
        "vmwareVmDetails"
      ]
    },
    "google-native:vmmigration/v1:VmUtilizationMetrics": {
      "description": "Utilization metrics values for a single VM.",
      "properties": {
        "cpuAveragePercent": {
          "type": "integer",
          "description": "Average CPU usage, percent."
        },
        "cpuMaxPercent": {
          "type": "integer",
          "description": "Max CPU usage, percent."
        },
        "diskIoRateAverageKbps": {
          "type": "string",
          "description": "Average disk IO rate, in kilobytes per second."
        },
        "diskIoRateMaxKbps": {
          "type": "string",
          "description": "Max disk IO rate, in kilobytes per second."
        },
        "memoryAveragePercent": {
          "type": "integer",
          "description": "Average memory usage, percent."
        },
        "memoryMaxPercent": {
          "type": "integer",
          "description": "Max memory usage, percent."
        },
        "networkThroughputAverageKbps": {
          "type": "string",
          "description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "networkThroughputMaxKbps": {
          "type": "string",
          "description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:VmUtilizationMetricsResponse": {
      "description": "Utilization metrics values for a single VM.",
      "properties": {
        "cpuAveragePercent": {
          "type": "integer",
          "description": "Average CPU usage, percent."
        },
        "cpuMaxPercent": {
          "type": "integer",
          "description": "Max CPU usage, percent."
        },
        "diskIoRateAverageKbps": {
          "type": "string",
          "description": "Average disk IO rate, in kilobytes per second."
        },
        "diskIoRateMaxKbps": {
          "type": "string",
          "description": "Max disk IO rate, in kilobytes per second."
        },
        "memoryAveragePercent": {
          "type": "integer",
          "description": "Average memory usage, percent."
        },
        "memoryMaxPercent": {
          "type": "integer",
          "description": "Max memory usage, percent."
        },
        "networkThroughputAverageKbps": {
          "type": "string",
          "description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "networkThroughputMaxKbps": {
          "type": "string",
          "description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        }
      },
      "type": "object",
      "required": [
        "cpuAveragePercent",
        "cpuMaxPercent",
        "diskIoRateAverageKbps",
        "diskIoRateMaxKbps",
        "memoryAveragePercent",
        "memoryMaxPercent",
        "networkThroughputAverageKbps",
        "networkThroughputMaxKbps"
      ]
    },
    "google-native:vmmigration/v1:VmwareDiskDetailsResponse": {
      "description": "The details of a Vmware VM disk.",
      "properties": {
        "diskNumber": {
          "type": "integer",
          "description": "The ordinal number of the disk."
        },
        "label": {
          "type": "string",
          "description": "The disk label."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size in GB."
        }
      },
      "type": "object",
      "required": [
        "diskNumber",
        "label",
        "sizeGb"
      ]
    },
    "google-native:vmmigration/v1:VmwareSourceDetails": {
      "description": "VmwareSourceDetails message describes a specific source details for the vmware source type.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The credentials password. This is write only and can not be read in a GET operation."
        },
        "resolvedVcenterHost": {
          "type": "string",
          "description": "The hostname of the vcenter."
        },
        "thumbprint": {
          "type": "string",
          "description": "The thumbprint representing the certificate for the vcenter."
        },
        "username": {
          "type": "string",
          "description": "The credentials username."
        },
        "vcenterIp": {
          "type": "string",
          "description": "The ip address of the vcenter this Source represents."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:VmwareSourceDetailsResponse": {
      "description": "VmwareSourceDetails message describes a specific source details for the vmware source type.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The credentials password. This is write only and can not be read in a GET operation."
        },
        "resolvedVcenterHost": {
          "type": "string",
          "description": "The hostname of the vcenter."
        },
        "thumbprint": {
          "type": "string",
          "description": "The thumbprint representing the certificate for the vcenter."
        },
        "username": {
          "type": "string",
          "description": "The credentials username."
        },
        "vcenterIp": {
          "type": "string",
          "description": "The ip address of the vcenter this Source represents."
        }
      },
      "type": "object",
      "required": [
        "password",
        "resolvedVcenterHost",
        "thumbprint",
        "username",
        "vcenterIp"
      ]
    },
    "google-native:vmmigration/v1:VmwareSourceVmDetailsResponse": {
      "description": "Represent the source Vmware VM details.",
      "properties": {
        "committedStorageBytes": {
          "type": "string",
          "description": "The total size of the disks being migrated in bytes."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareDiskDetailsResponse"
          },
          "description": "The disks attached to the source VM."
        },
        "firmware": {
          "type": "string",
          "description": "The firmware type of the source VM."
        },
        "vmCapabilitiesInfo": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmCapabilitiesResponse",
          "description": "Information about VM capabilities needed for some Compute Engine features."
        }
      },
      "type": "object",
      "required": [
        "committedStorageBytes",
        "disks",
        "firmware",
        "vmCapabilitiesInfo"
      ]
    },
    "google-native:vmmigration/v1:VmwareVmDetails": {
      "description": "VmwareVmDetails describes a VM in vCenter.",
      "properties": {
        "committedStorageMb": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB."
        },
        "cpuCount": {
          "type": "integer",
          "description": "The number of cpus in the VM."
        },
        "datacenterDescription": {
          "type": "string",
          "description": "The descriptive name of the vCenter's datacenter this VM is contained in."
        },
        "datacenterId": {
          "type": "string",
          "description": "The id of the vCenter's datacenter this VM is contained in."
        },
        "diskCount": {
          "type": "integer",
          "description": "The number of disks the VM has."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the VM. Note that this is not necessarily unique."
        },
        "guestDescription": {
          "type": "string",
          "description": "The VM's OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The size of the memory of the VM in MB."
        },
        "powerState": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareVmDetailsPowerState",
          "description": "The power state of the VM at the moment list was taken."
        },
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the VM in vCenter."
        },
        "vmId": {
          "type": "string",
          "description": "The VM's id in the source (note that this is not the MigratingVm's id). This is the moref id of the VM."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1:VmwareVmDetailsPowerState": {
      "description": "The power state of the VM at the moment list was taken.",
      "type": "string",
      "enum": [
        {
          "name": "PowerStateUnspecified",
          "description": "Power state is not specified.",
          "value": "POWER_STATE_UNSPECIFIED"
        },
        {
          "name": "On",
          "description": "The VM is turned ON.",
          "value": "ON"
        },
        {
          "name": "Off",
          "description": "The VM is turned OFF.",
          "value": "OFF"
        },
        {
          "name": "Suspended",
          "description": "The VM is suspended. This is similar to hibernation or sleep mode.",
          "value": "SUSPENDED"
        }
      ]
    },
    "google-native:vmmigration/v1:VmwareVmDetailsResponse": {
      "description": "VmwareVmDetails describes a VM in vCenter.",
      "properties": {
        "bootOption": {
          "type": "string",
          "description": "The VM Boot Option."
        },
        "committedStorageMb": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB."
        },
        "cpuCount": {
          "type": "integer",
          "description": "The number of cpus in the VM."
        },
        "datacenterDescription": {
          "type": "string",
          "description": "The descriptive name of the vCenter's datacenter this VM is contained in."
        },
        "datacenterId": {
          "type": "string",
          "description": "The id of the vCenter's datacenter this VM is contained in."
        },
        "diskCount": {
          "type": "integer",
          "description": "The number of disks the VM has."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the VM. Note that this is not necessarily unique."
        },
        "guestDescription": {
          "type": "string",
          "description": "The VM's OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The size of the memory of the VM in MB."
        },
        "powerState": {
          "type": "string",
          "description": "The power state of the VM at the moment list was taken."
        },
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the VM in vCenter."
        },
        "vmId": {
          "type": "string",
          "description": "The VM's id in the source (note that this is not the MigratingVm's id). This is the moref id of the VM."
        }
      },
      "type": "object",
      "required": [
        "bootOption",
        "committedStorageMb",
        "cpuCount",
        "datacenterDescription",
        "datacenterId",
        "diskCount",
        "displayName",
        "guestDescription",
        "memoryMb",
        "powerState",
        "uuid",
        "vmId"
      ]
    },
    "google-native:vmmigration/v1alpha1:AccessKeyCredentials": {
      "description": "Message describing AWS Credentials using access key id and secret.",
      "properties": {
        "accessKeyId": {
          "type": "string",
          "description": "AWS access key ID."
        },
        "secretAccessKey": {
          "type": "string",
          "description": "Input only. AWS secret access key."
        },
        "sessionToken": {
          "type": "string",
          "description": "Input only. AWS session token. Used only when AWS security token service (STS) is responsible for creating the temporary credentials."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:AccessKeyCredentialsResponse": {
      "description": "Message describing AWS Credentials using access key id and secret.",
      "properties": {
        "accessKeyId": {
          "type": "string",
          "description": "AWS access key ID."
        },
        "secretAccessKey": {
          "type": "string",
          "description": "Input only. AWS secret access key."
        },
        "sessionToken": {
          "type": "string",
          "description": "Input only. AWS session token. Used only when AWS security token service (STS) is responsible for creating the temporary credentials."
        }
      },
      "type": "object",
      "required": [
        "accessKeyId",
        "secretAccessKey",
        "sessionToken"
      ]
    },
    "google-native:vmmigration/v1alpha1:AdaptingOSStepResponse": {
      "description": "AdaptingOSStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:ApplianceVersionResponse": {
      "description": "Describes an appliance version.",
      "properties": {
        "critical": {
          "type": "boolean",
          "description": "Determine whether it's critical to upgrade the appliance to this version."
        },
        "releaseNotesUri": {
          "type": "string",
          "description": "Link to a page that contains the version release notes."
        },
        "uri": {
          "type": "string",
          "description": "A link for downloading the version."
        },
        "version": {
          "type": "string",
          "description": "The appliance version."
        }
      },
      "type": "object",
      "required": [
        "critical",
        "releaseNotesUri",
        "uri",
        "version"
      ]
    },
    "google-native:vmmigration/v1alpha1:AppliedLicenseResponse": {
      "description": "AppliedLicense holds the license data returned by adaptation module report.",
      "properties": {
        "osLicense": {
          "type": "string",
          "description": "The OS license returned from the adaptation module's report."
        },
        "type": {
          "type": "string",
          "description": "The license type that was used in OS adaptation."
        }
      },
      "type": "object",
      "required": [
        "osLicense",
        "type"
      ]
    },
    "google-native:vmmigration/v1alpha1:AvailableUpdatesResponse": {
      "description": "Holds informatiom about the available versions for upgrade.",
      "properties": {
        "inPlaceUpdate": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ApplianceVersionResponse",
          "description": "The latest version for in place update. The current appliance can be updated to this version using the API or m4c CLI."
        },
        "newDeployableAppliance": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ApplianceVersionResponse",
          "description": "The newest deployable version of the appliance. The current appliance can't be updated into this version, and the owner must manually deploy this OVA to a new appliance."
        }
      },
      "type": "object",
      "required": [
        "inPlaceUpdate",
        "newDeployableAppliance"
      ]
    },
    "google-native:vmmigration/v1alpha1:AwsDiskDetailsResponse": {
      "description": "The details of an AWS instance disk.",
      "properties": {
        "diskNumber": {
          "type": "integer",
          "description": "The ordinal number of the disk."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size in GB."
        },
        "volumeId": {
          "type": "string",
          "description": "AWS volume ID."
        }
      },
      "type": "object",
      "required": [
        "diskNumber",
        "sizeGb",
        "volumeId"
      ]
    },
    "google-native:vmmigration/v1alpha1:AwsSourceDetails": {
      "description": "AwsSourceDetails message describes a specific source details for the AWS source type.",
      "properties": {
        "accessKeyCreds": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AccessKeyCredentials",
          "description": "AWS Credentials using access key id and secret."
        },
        "awsRegion": {
          "type": "string",
          "description": "Immutable. The AWS region that the source VMs will be migrated from."
        },
        "inventorySecurityGroupNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AWS security group names to limit the scope of the source inventory."
        },
        "inventoryTagList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:Tag"
          },
          "description": "AWS resource tags to limit the scope of the source inventory."
        },
        "migrationResourcesUserTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified tags to add to every M2VM generated resource in AWS. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m2vm`."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:AwsSourceDetailsResponse": {
      "description": "AwsSourceDetails message describes a specific source details for the AWS source type.",
      "properties": {
        "accessKeyCreds": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AccessKeyCredentialsResponse",
          "description": "AWS Credentials using access key id and secret."
        },
        "awsRegion": {
          "type": "string",
          "description": "Immutable. The AWS region that the source VMs will be migrated from."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details on the state of the Source in case of an error."
        },
        "inventorySecurityGroupNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AWS security group names to limit the scope of the source inventory."
        },
        "inventoryTagList": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TagResponse"
          },
          "description": "AWS resource tags to limit the scope of the source inventory."
        },
        "migrationResourcesUserTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified tags to add to every M2VM generated resource in AWS. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m2vm`."
        },
        "publicIp": {
          "type": "string",
          "description": "The source's public IP. All communication initiated by this source will originate from this IP."
        },
        "state": {
          "type": "string",
          "description": "State of the source as determined by the health check."
        }
      },
      "type": "object",
      "required": [
        "accessKeyCreds",
        "awsRegion",
        "error",
        "inventorySecurityGroupNames",
        "inventoryTagList",
        "migrationResourcesUserTags",
        "publicIp",
        "state"
      ]
    },
    "google-native:vmmigration/v1alpha1:AwsSourceVmDetailsResponse": {
      "description": "Represent the source AWS VM details.",
      "properties": {
        "committedStorageBytes": {
          "type": "string",
          "description": "The total size of the disks being migrated in bytes."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AwsDiskDetailsResponse"
          },
          "description": "The disks attached to the source VM."
        },
        "firmware": {
          "type": "string",
          "description": "The firmware type of the source VM."
        },
        "vmCapabilitiesInfo": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmCapabilitiesResponse",
          "description": "Information about VM capabilities needed for some Compute Engine features."
        }
      },
      "type": "object",
      "required": [
        "committedStorageBytes",
        "disks",
        "firmware",
        "vmCapabilitiesInfo"
      ]
    },
    "google-native:vmmigration/v1alpha1:AzureDiskDetailsResponse": {
      "description": "The details of an Azure VM disk.",
      "properties": {
        "diskId": {
          "type": "string",
          "description": "Azure disk ID."
        },
        "diskNumber": {
          "type": "integer",
          "description": "The ordinal number of the disk."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size in GB."
        }
      },
      "type": "object",
      "required": [
        "diskId",
        "diskNumber",
        "sizeGb"
      ]
    },
    "google-native:vmmigration/v1alpha1:AzureSourceDetails": {
      "description": "AzureSourceDetails message describes a specific source details for the Azure source type.",
      "properties": {
        "azureLocation": {
          "type": "string",
          "description": "Immutable. The Azure location (region) that the source VMs will be migrated from."
        },
        "clientSecretCreds": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ClientSecretCredentials",
          "description": "Azure Credentials using tenant ID, client ID and secret."
        },
        "migrationResourcesUserTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified tags to add to every M2VM generated resource in Azure. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m4ce` or `m2vm`."
        },
        "subscriptionId": {
          "type": "string",
          "description": "Immutable. Azure subscription ID."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:AzureSourceDetailsResponse": {
      "description": "AzureSourceDetails message describes a specific source details for the Azure source type.",
      "properties": {
        "azureLocation": {
          "type": "string",
          "description": "Immutable. The Azure location (region) that the source VMs will be migrated from."
        },
        "clientSecretCreds": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ClientSecretCredentialsResponse",
          "description": "Azure Credentials using tenant ID, client ID and secret."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details on the state of the Source in case of an error."
        },
        "migrationResourcesUserTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified tags to add to every M2VM generated resource in Azure. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m4ce` or `m2vm`."
        },
        "resourceGroupId": {
          "type": "string",
          "description": "The ID of the Azure resource group that contains all resources related to the migration process of this source."
        },
        "state": {
          "type": "string",
          "description": "State of the source as determined by the health check."
        },
        "subscriptionId": {
          "type": "string",
          "description": "Immutable. Azure subscription ID."
        }
      },
      "type": "object",
      "required": [
        "azureLocation",
        "clientSecretCreds",
        "error",
        "migrationResourcesUserTags",
        "resourceGroupId",
        "state",
        "subscriptionId"
      ]
    },
    "google-native:vmmigration/v1alpha1:AzureSourceVmDetailsResponse": {
      "description": "Represent the source Azure VM details.",
      "properties": {
        "committedStorageBytes": {
          "type": "string",
          "description": "The total size of the disks being migrated in bytes."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AzureDiskDetailsResponse"
          },
          "description": "The disks attached to the source VM."
        },
        "firmware": {
          "type": "string",
          "description": "The firmware type of the source VM."
        },
        "vmCapabilitiesInfo": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmCapabilitiesResponse",
          "description": "Information about VM capabilities needed for some Compute Engine features."
        }
      },
      "type": "object",
      "required": [
        "committedStorageBytes",
        "disks",
        "firmware",
        "vmCapabilitiesInfo"
      ]
    },
    "google-native:vmmigration/v1alpha1:BootDiskDefaults": {
      "description": "BootDiskDefaults hold information about the boot disk of a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* 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, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. The name of the disk."
        },
        "diskType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:BootDiskDefaultsDiskType",
          "description": "Optional. The type of disk provisioning to use for the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:Encryption",
          "description": "Optional. The encryption to apply to the boot disk."
        },
        "image": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:DiskImageDefaults",
          "description": "The image to use when creating the disk."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:BootDiskDefaultsDiskType": {
      "description": "Optional. The type of disk provisioning to use for the VM.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeEngineDiskTypeUnspecified",
          "description": "An unspecified disk type. Will be used as STANDARD.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComputeEngineDiskTypeStandard",
          "description": "A Standard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_STANDARD"
        },
        {
          "name": "ComputeEngineDiskTypeSsd",
          "description": "SSD hard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_SSD"
        },
        {
          "name": "ComputeEngineDiskTypeBalanced",
          "description": "An alternative to SSD persistent disks that balance performance and cost.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_BALANCED"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:BootDiskDefaultsResponse": {
      "description": "BootDiskDefaults hold information about the boot disk of a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* 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, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. The name of the disk."
        },
        "diskType": {
          "type": "string",
          "description": "Optional. The type of disk provisioning to use for the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:EncryptionResponse",
          "description": "Optional. The encryption to apply to the boot disk."
        },
        "image": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:DiskImageDefaultsResponse",
          "description": "The image to use when creating the disk."
        }
      },
      "type": "object",
      "required": [
        "deviceName",
        "diskName",
        "diskType",
        "encryption",
        "image"
      ]
    },
    "google-native:vmmigration/v1alpha1:ClientSecretCredentials": {
      "description": "Message describing Azure Credentials using tenant ID, client ID and secret.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Azure client ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Azure client secret."
        },
        "tenantId": {
          "type": "string",
          "description": "Azure tenant ID."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:ClientSecretCredentialsResponse": {
      "description": "Message describing Azure Credentials using tenant ID, client ID and secret.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Azure client ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "Input only. Azure client secret."
        },
        "tenantId": {
          "type": "string",
          "description": "Azure tenant ID."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "tenantId"
      ]
    },
    "google-native:vmmigration/v1alpha1:CloneJobResponse": {
      "description": "CloneJob describes the process of creating a clone of a MigratingVM to the requested target based on the latest successful uploaded snapshots. While the migration cycles of a MigratingVm take place, it is possible to verify the uploaded VM can be started in the cloud, by creating a clone. The clone can be created without any downtime, and it is created using the latest snapshots which are already in the cloud. The cloneJob is only responsible for its work, not its products, which means once it is finished, it will never touch the instance it created. It will only delete it in case of the CloneJob being cancelled or upon failure to clone.",
      "properties": {
        "computeEngineDisksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDetailsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDetailsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "computeEngineVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
          "deprecationMessage": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead."
        },
        "createTime": {
          "type": "string",
          "description": "The time the clone job was created (as an API call, not when it was actually created in the target)."
        },
        "endTime": {
          "type": "string",
          "description": "The time the clone job was ended."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details for the errors that led to the Clone Job's state."
        },
        "name": {
          "type": "string",
          "description": "The name of the clone."
        },
        "state": {
          "type": "string",
          "description": "State of the clone job."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last updated."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CloneStepResponse"
          },
          "description": "The clone steps list representing its progress."
        },
        "targetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM to create as the target of this clone job. Deprecated: Use compute_engine_target_details instead.",
          "deprecationMessage": "Output only. Details of the VM to create as the target of this clone job. Deprecated: Use compute_engine_target_details instead."
        }
      },
      "type": "object",
      "required": [
        "computeEngineDisksTargetDetails",
        "computeEngineTargetDetails",
        "computeEngineVmDetails",
        "createTime",
        "endTime",
        "error",
        "name",
        "state",
        "stateTime",
        "steps",
        "targetDetails"
      ]
    },
    "google-native:vmmigration/v1alpha1:CloneStepResponse": {
      "description": "CloneStep holds information about the clone step progress.",
      "properties": {
        "adaptingOs": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AdaptingOSStepResponse",
          "description": "Adapting OS step."
        },
        "endTime": {
          "type": "string",
          "description": "The time the step has ended."
        },
        "instantiatingMigratedVm": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:InstantiatingMigratedVMStepResponse",
          "description": "Instantiating migrated VM step."
        },
        "preparingVmDisks": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:PreparingVMDisksStepResponse",
          "description": "Preparing VM disks step."
        },
        "startTime": {
          "type": "string",
          "description": "The time the step has started."
        }
      },
      "type": "object",
      "required": [
        "adaptingOs",
        "endTime",
        "instantiatingMigratedVm",
        "preparingVmDisks",
        "startTime"
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeEngineDisksTargetDefaults": {
      "description": "ComputeEngineDisksTargetDefaults is a collection of details for creating Persistent Disks in a target Compute Engine project.",
      "properties": {
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:PersistentDiskDefaults"
          },
          "description": "The details of each Persistent Disk to create."
        },
        "disksTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:DisksMigrationDisksTargetDefaults",
          "description": "Details of the disk only migration target."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create the Persistent Disks."
        },
        "vmTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:DisksMigrationVmTargetDefaults",
          "description": "Details of the VM migration target."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the Persistent Disks."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:ComputeEngineDisksTargetDefaultsResponse": {
      "description": "ComputeEngineDisksTargetDefaults is a collection of details for creating Persistent Disks in a target Compute Engine project.",
      "properties": {
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:PersistentDiskDefaultsResponse"
          },
          "description": "The details of each Persistent Disk to create."
        },
        "disksTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:DisksMigrationDisksTargetDefaultsResponse",
          "description": "Details of the disk only migration target."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create the Persistent Disks."
        },
        "vmTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:DisksMigrationVmTargetDefaultsResponse",
          "description": "Details of the VM migration target."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the Persistent Disks."
        }
      },
      "type": "object",
      "required": [
        "disks",
        "disksTargetDefaults",
        "targetProject",
        "vmTargetDefaults",
        "zone"
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeEngineDisksTargetDetailsResponse": {
      "description": "ComputeEngineDisksTargetDetails is a collection of created Persistent Disks details.",
      "properties": {
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:PersistentDiskResponse"
          },
          "description": "The details of each created Persistent Disk."
        },
        "disksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:DisksMigrationDisksTargetDetailsResponse",
          "description": "Details of the disks-only migration target."
        },
        "vmTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:DisksMigrationVmTargetDetailsResponse",
          "description": "Details for the VM the migrated data disks are attached to."
        }
      },
      "type": "object",
      "required": [
        "disks",
        "disksTargetDetails",
        "vmTargetDetails"
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeEngineTargetDefaults": {
      "description": "ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional licenses to assign to the VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeScheduling",
          "description": "Compute instance scheduling information (if empty default is used)."
        },
        "diskType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDefaultsDiskType",
          "description": "The disk type to use in the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:Encryption",
          "description": "Optional. Immutable. The encryption to apply to the VM disks."
        },
        "hostname": {
          "type": "string",
          "description": "The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "licenseType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDefaultsLicenseType",
          "description": "The license type to use in OS adaptation."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "The machine type series to create the VM with."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:NetworkInterface"
          },
          "description": "List of NICs connected to this VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to associate the VM with."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the VM."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:ComputeEngineTargetDefaultsDiskType": {
      "description": "The disk type to use in the VM.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeEngineDiskTypeUnspecified",
          "description": "An unspecified disk type. Will be used as STANDARD.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComputeEngineDiskTypeStandard",
          "description": "A Standard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_STANDARD"
        },
        {
          "name": "ComputeEngineDiskTypeSsd",
          "description": "SSD hard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_SSD"
        },
        {
          "name": "ComputeEngineDiskTypeBalanced",
          "description": "An alternative to SSD persistent disks that balance performance and cost.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_BALANCED"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeEngineTargetDefaultsLicenseType": {
      "description": "The license type to use in OS adaptation.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeEngineLicenseTypeDefault",
          "description": "The license type is the default for the OS.",
          "value": "COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT"
        },
        {
          "name": "ComputeEngineLicenseTypePayg",
          "description": "The license type is Pay As You Go license type.",
          "value": "COMPUTE_ENGINE_LICENSE_TYPE_PAYG"
        },
        {
          "name": "ComputeEngineLicenseTypeByol",
          "description": "The license type is Bring Your Own License type.",
          "value": "COMPUTE_ENGINE_LICENSE_TYPE_BYOL"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeEngineTargetDefaultsResponse": {
      "description": "ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional licenses to assign to the VM."
        },
        "appliedLicense": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AppliedLicenseResponse",
          "description": "The OS license returned from the adaptation module report."
        },
        "bootOption": {
          "type": "string",
          "description": "The VM Boot Option, as set in the source VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeSchedulingResponse",
          "description": "Compute instance scheduling information (if empty default is used)."
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use in the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:EncryptionResponse",
          "description": "Optional. Immutable. The encryption to apply to the VM disks."
        },
        "hostname": {
          "type": "string",
          "description": "The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "licenseType": {
          "type": "string",
          "description": "The license type to use in OS adaptation."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "The machine type series to create the VM with."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:NetworkInterfaceResponse"
          },
          "description": "List of NICs connected to this VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to associate the VM with."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the VM."
        }
      },
      "type": "object",
      "required": [
        "additionalLicenses",
        "appliedLicense",
        "bootOption",
        "computeScheduling",
        "diskType",
        "encryption",
        "hostname",
        "labels",
        "licenseType",
        "machineType",
        "machineTypeSeries",
        "metadata",
        "networkInterfaces",
        "networkTags",
        "secureBoot",
        "serviceAccount",
        "targetProject",
        "vmName",
        "zone"
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeEngineTargetDetailsResponse": {
      "description": "ComputeEngineTargetDetails is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional licenses to assign to the VM."
        },
        "appliedLicense": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AppliedLicenseResponse",
          "description": "The OS license returned from the adaptation module report."
        },
        "bootOption": {
          "type": "string",
          "description": "The VM Boot Option, as set in the source VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeSchedulingResponse",
          "description": "Compute instance scheduling information (if empty default is used)."
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use in the VM."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:EncryptionResponse",
          "description": "Optional. The encryption to apply to the VM disks."
        },
        "hostname": {
          "type": "string",
          "description": "The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "licenseType": {
          "type": "string",
          "description": "The license type to use in OS adaptation."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "The machine type series to create the VM with."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:NetworkInterfaceResponse"
          },
          "description": "List of NICs connected to this VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "project": {
          "type": "string",
          "description": "The Google Cloud target project ID or project name."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to associate the VM with."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the VM."
        }
      },
      "type": "object",
      "required": [
        "additionalLicenses",
        "appliedLicense",
        "bootOption",
        "computeScheduling",
        "diskType",
        "encryption",
        "hostname",
        "labels",
        "licenseType",
        "machineType",
        "machineTypeSeries",
        "metadata",
        "networkInterfaces",
        "networkTags",
        "project",
        "secureBoot",
        "serviceAccount",
        "vmName",
        "zone"
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeScheduling": {
      "description": "Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes.",
      "properties": {
        "automaticRestart": {
          "type": "boolean"
        },
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:SchedulingNodeAffinity"
          },
          "description": "A set of node affinity and anti-affinity configurations for sole tenant nodes."
        },
        "onHostMaintenance": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeSchedulingOnHostMaintenance",
          "description": "How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance."
        },
        "restartType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeSchedulingRestartType",
          "description": "Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:ComputeSchedulingOnHostMaintenance": {
      "description": "How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.",
      "type": "string",
      "enum": [
        {
          "name": "OnHostMaintenanceUnspecified",
          "description": "An unknown, unexpected behavior.",
          "value": "ON_HOST_MAINTENANCE_UNSPECIFIED"
        },
        {
          "name": "Terminate",
          "description": "Terminate the instance when the host machine undergoes maintenance.",
          "value": "TERMINATE"
        },
        {
          "name": "Migrate",
          "description": "Migrate the instance when the host machine undergoes maintenance.",
          "value": "MIGRATE"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeSchedulingResponse": {
      "description": "Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes.",
      "properties": {
        "automaticRestart": {
          "type": "boolean"
        },
        "minNodeCpus": {
          "type": "integer",
          "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured."
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:SchedulingNodeAffinityResponse"
          },
          "description": "A set of node affinity and anti-affinity configurations for sole tenant nodes."
        },
        "onHostMaintenance": {
          "type": "string",
          "description": "How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance."
        },
        "restartType": {
          "type": "string",
          "description": "Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart."
        }
      },
      "type": "object",
      "required": [
        "automaticRestart",
        "minNodeCpus",
        "nodeAffinities",
        "onHostMaintenance",
        "restartType"
      ]
    },
    "google-native:vmmigration/v1alpha1:ComputeSchedulingRestartType": {
      "description": "Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.",
      "type": "string",
      "enum": [
        {
          "name": "RestartTypeUnspecified",
          "description": "Unspecified behavior. This will use the default.",
          "value": "RESTART_TYPE_UNSPECIFIED"
        },
        {
          "name": "AutomaticRestart",
          "description": "The Instance should be automatically restarted whenever it is terminated by Compute Engine.",
          "value": "AUTOMATIC_RESTART"
        },
        {
          "name": "NoAutomaticRestart",
          "description": "The Instance isn't automatically restarted whenever it is terminated by Compute Engine.",
          "value": "NO_AUTOMATIC_RESTART"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:CutoverForecastResponse": {
      "description": "CutoverForecast holds information about future CutoverJobs of a MigratingVm.",
      "properties": {
        "estimatedCutoverJobDuration": {
          "type": "string",
          "description": "Estimation of the CutoverJob duration."
        }
      },
      "type": "object",
      "required": [
        "estimatedCutoverJobDuration"
      ]
    },
    "google-native:vmmigration/v1alpha1:CutoverJobResponse": {
      "description": "CutoverJob message describes a cutover of a migrating VM. The CutoverJob is the operation of shutting down the VM, creating a snapshot and clonning the VM using the replicated snapshot.",
      "properties": {
        "computeEngineDisksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDetailsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDetailsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "computeEngineVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
          "deprecationMessage": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead."
        },
        "createTime": {
          "type": "string",
          "description": "The time the cutover job was created (as an API call, not when it was actually created in the target)."
        },
        "endTime": {
          "type": "string",
          "description": "The time the cutover job had finished."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details for the errors that led to the Cutover Job's state."
        },
        "name": {
          "type": "string",
          "description": "The name of the cutover job."
        },
        "progress": {
          "type": "integer",
          "description": "The current progress in percentage of the cutover job."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The current progress in percentage of the cutover job."
        },
        "state": {
          "type": "string",
          "description": "State of the cutover job."
        },
        "stateMessage": {
          "type": "string",
          "description": "A message providing possible extra details about the current state."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last updated."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CutoverStepResponse"
          },
          "description": "The cutover steps list representing its progress."
        },
        "targetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead.",
          "deprecationMessage": "Output only. Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead."
        }
      },
      "type": "object",
      "required": [
        "computeEngineDisksTargetDetails",
        "computeEngineTargetDetails",
        "computeEngineVmDetails",
        "createTime",
        "endTime",
        "error",
        "name",
        "progress",
        "progressPercent",
        "state",
        "stateMessage",
        "stateTime",
        "steps",
        "targetDetails"
      ]
    },
    "google-native:vmmigration/v1alpha1:CutoverStepResponse": {
      "description": "CutoverStep holds information about the cutover step progress.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time the step has ended."
        },
        "finalSync": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicationCycleResponse",
          "description": "Final sync step."
        },
        "instantiatingMigratedVm": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:InstantiatingMigratedVMStepResponse",
          "description": "Instantiating migrated VM step."
        },
        "preparingVmDisks": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:PreparingVMDisksStepResponse",
          "description": "Preparing VM disks step."
        },
        "previousReplicationCycle": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicationCycleResponse",
          "description": "A replication cycle prior cutover step."
        },
        "shuttingDownSourceVm": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ShuttingDownSourceVMStepResponse",
          "description": "Shutting down VM step."
        },
        "startTime": {
          "type": "string",
          "description": "The time the step has started."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "finalSync",
        "instantiatingMigratedVm",
        "preparingVmDisks",
        "previousReplicationCycle",
        "shuttingDownSourceVm",
        "startTime"
      ]
    },
    "google-native:vmmigration/v1alpha1:CycleStepResponse": {
      "description": "CycleStep holds information about a step progress.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time the cycle step has ended."
        },
        "initializingReplication": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:InitializingReplicationStepResponse",
          "description": "Initializing replication step."
        },
        "postProcessing": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:PostProcessingStepResponse",
          "description": "Post processing step."
        },
        "replicating": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicatingStepResponse",
          "description": "Replicating step."
        },
        "startTime": {
          "type": "string",
          "description": "The time the cycle step has started."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "initializingReplication",
        "postProcessing",
        "replicating",
        "startTime"
      ]
    },
    "google-native:vmmigration/v1alpha1:DiskImageDefaults": {
      "description": "Contains details about the image source used to create the disk.",
      "properties": {
        "sourceImage": {
          "type": "string",
          "description": "The Image resource used when creating the disk."
        }
      },
      "type": "object",
      "required": [
        "sourceImage"
      ]
    },
    "google-native:vmmigration/v1alpha1:DiskImageDefaultsResponse": {
      "description": "Contains details about the image source used to create the disk.",
      "properties": {
        "sourceImage": {
          "type": "string",
          "description": "The Image resource used when creating the disk."
        }
      },
      "type": "object",
      "required": [
        "sourceImage"
      ]
    },
    "google-native:vmmigration/v1alpha1:DisksMigrationDisksTargetDefaults": {
      "description": "Details for a disk only migration.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:DisksMigrationDisksTargetDefaultsResponse": {
      "description": "Details for a disk only migration.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:DisksMigrationDisksTargetDetailsResponse": {
      "description": "Details for a disks-only migration.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:DisksMigrationVmTargetDefaults": {
      "description": "Details for creation of a VM that migrated data disks will be attached to.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional licenses to assign to the VM."
        },
        "bootDiskDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:BootDiskDefaults",
          "description": "Optional. Details of the boot disk of the VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeScheduling",
          "description": "Optional. Compute instance scheduling information (if empty default is used)."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:Encryption",
          "description": "Optional. The encryption to apply to the VM."
        },
        "hostname": {
          "type": "string",
          "description": "Optional. The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map of labels to associate with the VM."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "Optional. The machine type series to create the VM with. For presentation only."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:NetworkInterface"
          },
          "description": "Optional. NICs to attach to the VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The service account to associate the VM with."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        }
      },
      "type": "object",
      "required": [
        "machineType",
        "vmName"
      ]
    },
    "google-native:vmmigration/v1alpha1:DisksMigrationVmTargetDefaultsResponse": {
      "description": "Details for creation of a VM that migrated data disks will be attached to.",
      "properties": {
        "additionalLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional licenses to assign to the VM."
        },
        "bootDiskDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:BootDiskDefaultsResponse",
          "description": "Optional. Details of the boot disk of the VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeSchedulingResponse",
          "description": "Optional. Compute instance scheduling information (if empty default is used)."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:EncryptionResponse",
          "description": "Optional. The encryption to apply to the VM."
        },
        "hostname": {
          "type": "string",
          "description": "Optional. The hostname to assign to the VM."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map of labels to associate with the VM."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "Optional. The machine type series to create the VM with. For presentation only."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The metadata key/value pairs to assign to the VM."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:NetworkInterfaceResponse"
          },
          "description": "Optional. NICs to attach to the VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Optional. Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The service account to associate the VM with."
        },
        "vmName": {
          "type": "string",
          "description": "The name of the VM to create."
        }
      },
      "type": "object",
      "required": [
        "additionalLicenses",
        "bootDiskDefaults",
        "computeScheduling",
        "encryption",
        "hostname",
        "labels",
        "machineType",
        "machineTypeSeries",
        "metadata",
        "networkInterfaces",
        "networkTags",
        "secureBoot",
        "serviceAccount",
        "vmName"
      ]
    },
    "google-native:vmmigration/v1alpha1:DisksMigrationVmTargetDetailsResponse": {
      "description": "Details for the VM created VM as part of disks migration.",
      "properties": {
        "vmUri": {
          "type": "string",
          "description": "The URI of the Compute Engine VM."
        }
      },
      "type": "object",
      "required": [
        "vmUri"
      ]
    },
    "google-native:vmmigration/v1alpha1:Encryption": {
      "description": "Encryption message describes the details of the applied encryption.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS."
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:vmmigration/v1alpha1:EncryptionResponse": {
      "description": "Encryption message describes the details of the applied encryption.",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "The name of the encryption key that is stored in Google Cloud KMS."
        }
      },
      "type": "object",
      "required": [
        "kmsKey"
      ]
    },
    "google-native:vmmigration/v1alpha1:GroupMigrationTargetType": {
      "description": "Immutable. The target type of this group.",
      "type": "string",
      "enum": [
        {
          "name": "MigrationTargetTypeUnspecified",
          "description": "Group type is not specified. This defaults to Compute Engine targets.",
          "value": "MIGRATION_TARGET_TYPE_UNSPECIFIED"
        },
        {
          "name": "MigrationTargetTypeGce",
          "description": "All MigratingVMs in the group must have Compute Engine targets.",
          "value": "MIGRATION_TARGET_TYPE_GCE"
        },
        {
          "name": "MigrationTargetTypeDisks",
          "description": "All MigratingVMs in the group must have Compute Engine Disks targets.",
          "value": "MIGRATION_TARGET_TYPE_DISKS"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:InitializingReplicationStepResponse": {
      "description": "InitializingReplicationStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:InstantiatingMigratedVMStepResponse": {
      "description": "InstantiatingMigratedVMStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:LinkResponse": {
      "description": "Describes a URL link.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Describes what the link offers."
        },
        "url": {
          "type": "string",
          "description": "The URL of the link."
        }
      },
      "type": "object",
      "required": [
        "description",
        "url"
      ]
    },
    "google-native:vmmigration/v1alpha1:LocalizedMessageResponse": {
      "description": "Provides a localized error message that is safe to return to the user which can be attached to an RPC error.",
      "properties": {
        "locale": {
          "type": "string",
          "description": "The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\""
        },
        "message": {
          "type": "string",
          "description": "The localized error message in the above locale."
        }
      },
      "type": "object",
      "required": [
        "locale",
        "message"
      ]
    },
    "google-native:vmmigration/v1alpha1:MigrationWarningResponse": {
      "description": "Represents migration resource warning information that can be used with google.rpc.Status message. MigrationWarning is used to present the user with warning information in migration operations.",
      "properties": {
        "actionItem": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:LocalizedMessageResponse",
          "description": "Suggested action for solving the warning."
        },
        "code": {
          "type": "string",
          "description": "The warning code."
        },
        "helpLinks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:LinkResponse"
          },
          "description": "URL(s) pointing to additional information on handling the current warning."
        },
        "warningMessage": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:LocalizedMessageResponse",
          "description": "The localized warning message."
        },
        "warningTime": {
          "type": "string",
          "description": "The time the warning occurred."
        }
      },
      "type": "object",
      "required": [
        "actionItem",
        "code",
        "helpLinks",
        "warningMessage",
        "warningTime"
      ]
    },
    "google-native:vmmigration/v1alpha1:NetworkInterface": {
      "description": "NetworkInterface represents a NIC of a VM.",
      "properties": {
        "externalIp": {
          "type": "string",
          "description": "The external IP to define in the NIC."
        },
        "internalIp": {
          "type": "string",
          "description": "The internal IP to define in the NIC. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path."
        },
        "network": {
          "type": "string",
          "description": "The network to connect the NIC to."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork to connect the NIC to."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:NetworkInterfaceResponse": {
      "description": "NetworkInterface represents a NIC of a VM.",
      "properties": {
        "externalIp": {
          "type": "string",
          "description": "The external IP to define in the NIC."
        },
        "internalIp": {
          "type": "string",
          "description": "The internal IP to define in the NIC. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path."
        },
        "network": {
          "type": "string",
          "description": "The network to connect the NIC to."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork to connect the NIC to."
        }
      },
      "type": "object",
      "required": [
        "externalIp",
        "internalIp",
        "network",
        "subnetwork"
      ]
    },
    "google-native:vmmigration/v1alpha1:PersistentDiskDefaults": {
      "description": "Details for creation of a Persistent Disk.",
      "properties": {
        "additionalLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the Persistent Disk."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. The name of the Persistent Disk to create."
        },
        "diskType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:PersistentDiskDefaultsDiskType",
          "description": "The disk type to use."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:Encryption",
          "description": "Optional. The encryption to apply to the disk."
        },
        "sourceDiskNumber": {
          "type": "integer",
          "description": "The ordinal number of the source VM disk."
        },
        "vmAttachmentDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmAttachmentDetails",
          "description": "Optional. Details for attachment of the disk to a VM. Used when the disk is set to be attacked to a target VM."
        }
      },
      "type": "object",
      "required": [
        "sourceDiskNumber"
      ]
    },
    "google-native:vmmigration/v1alpha1:PersistentDiskDefaultsDiskType": {
      "description": "The disk type to use.",
      "type": "string",
      "enum": [
        {
          "name": "ComputeEngineDiskTypeUnspecified",
          "description": "An unspecified disk type. Will be used as STANDARD.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "ComputeEngineDiskTypeStandard",
          "description": "A Standard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_STANDARD"
        },
        {
          "name": "ComputeEngineDiskTypeSsd",
          "description": "SSD hard disk type.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_SSD"
        },
        {
          "name": "ComputeEngineDiskTypeBalanced",
          "description": "An alternative to SSD persistent disks that balance performance and cost.",
          "value": "COMPUTE_ENGINE_DISK_TYPE_BALANCED"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:PersistentDiskDefaultsResponse": {
      "description": "Details for creation of a Persistent Disk.",
      "properties": {
        "additionalLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the Persistent Disk."
        },
        "diskName": {
          "type": "string",
          "description": "Optional. The name of the Persistent Disk to create."
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:EncryptionResponse",
          "description": "Optional. The encryption to apply to the disk."
        },
        "sourceDiskNumber": {
          "type": "integer",
          "description": "The ordinal number of the source VM disk."
        },
        "vmAttachmentDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmAttachmentDetailsResponse",
          "description": "Optional. Details for attachment of the disk to a VM. Used when the disk is set to be attacked to a target VM."
        }
      },
      "type": "object",
      "required": [
        "additionalLabels",
        "diskName",
        "diskType",
        "encryption",
        "sourceDiskNumber",
        "vmAttachmentDetails"
      ]
    },
    "google-native:vmmigration/v1alpha1:PersistentDiskResponse": {
      "description": "Details of a created Persistent Disk.",
      "properties": {
        "diskUri": {
          "type": "string",
          "description": "The URI of the Persistent Disk."
        },
        "sourceDiskNumber": {
          "type": "integer",
          "description": "The ordinal number of the source VM disk."
        }
      },
      "type": "object",
      "required": [
        "diskUri",
        "sourceDiskNumber"
      ]
    },
    "google-native:vmmigration/v1alpha1:PostProcessingStepResponse": {
      "description": "PostProcessingStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:PreparingVMDisksStepResponse": {
      "description": "PreparingVMDisksStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:ReplicatingStepResponse": {
      "description": "ReplicatingStep contains specific step details.",
      "properties": {
        "lastThirtyMinutesAverageBytesPerSecond": {
          "type": "string",
          "description": "The source disks replication rate for the last 30 minutes in bytes per second."
        },
        "lastTwoMinutesAverageBytesPerSecond": {
          "type": "string",
          "description": "The source disks replication rate for the last 2 minutes in bytes per second."
        },
        "replicatedBytes": {
          "type": "string",
          "description": "Replicated bytes in the step."
        },
        "totalBytes": {
          "type": "string",
          "description": "Total bytes to be handled in the step."
        }
      },
      "type": "object",
      "required": [
        "lastThirtyMinutesAverageBytesPerSecond",
        "lastTwoMinutesAverageBytesPerSecond",
        "replicatedBytes",
        "totalBytes"
      ]
    },
    "google-native:vmmigration/v1alpha1:ReplicationCycleResponse": {
      "description": "ReplicationCycle contains information about the current replication cycle status.",
      "properties": {
        "cycleNumber": {
          "type": "integer",
          "description": "The cycle's ordinal number."
        },
        "endTime": {
          "type": "string",
          "description": "The time the replication cycle has ended."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details on the state of the cycle in case of an error."
        },
        "name": {
          "type": "string",
          "description": "The identifier of the ReplicationCycle."
        },
        "progress": {
          "type": "integer",
          "description": "The current progress in percentage of this cycle."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The current progress in percentage of this cycle. Was replaced by 'steps' field, which breaks down the cycle progression more accurately."
        },
        "startTime": {
          "type": "string",
          "description": "The time the replication cycle has started."
        },
        "state": {
          "type": "string",
          "description": "State of the ReplicationCycle."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CycleStepResponse"
          },
          "description": "The cycle's steps list representing its progress."
        },
        "totalPauseDuration": {
          "type": "string",
          "description": "The accumulated duration the replication cycle was paused."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:MigrationWarningResponse"
          },
          "description": "Warnings that occurred during the cycle."
        }
      },
      "type": "object",
      "required": [
        "cycleNumber",
        "endTime",
        "error",
        "name",
        "progress",
        "progressPercent",
        "startTime",
        "state",
        "steps",
        "totalPauseDuration",
        "warnings"
      ]
    },
    "google-native:vmmigration/v1alpha1:ReplicationSyncResponse": {
      "description": "ReplicationSync contain information about the last replica sync to the cloud.",
      "properties": {
        "lastSyncTime": {
          "type": "string",
          "description": "The most updated snapshot created time in the source that finished replication."
        }
      },
      "type": "object",
      "required": [
        "lastSyncTime"
      ]
    },
    "google-native:vmmigration/v1alpha1:SchedulePolicy": {
      "description": "A policy for scheduling replications.",
      "properties": {
        "idleDuration": {
          "type": "string",
          "description": "The idle duration between replication stages."
        },
        "skipOsAdaptation": {
          "type": "boolean",
          "description": "A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM's operating system undergoes changes and adaptations to fully function on Compute Engine."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:SchedulePolicyResponse": {
      "description": "A policy for scheduling replications.",
      "properties": {
        "idleDuration": {
          "type": "string",
          "description": "The idle duration between replication stages."
        },
        "skipOsAdaptation": {
          "type": "boolean",
          "description": "A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM's operating system undergoes changes and adaptations to fully function on Compute Engine."
        }
      },
      "type": "object",
      "required": [
        "idleDuration",
        "skipOsAdaptation"
      ]
    },
    "google-native:vmmigration/v1alpha1:SchedulingNodeAffinity": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling",
      "properties": {
        "key": {
          "type": "string",
          "description": "The label key of Node resource to reference."
        },
        "operator": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:SchedulingNodeAffinityOperator",
          "description": "The operator to use for the node resources specified in the `values` parameter."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:SchedulingNodeAffinityOperator": {
      "description": "The operator to use for the node resources specified in the `values` parameter.",
      "type": "string",
      "enum": [
        {
          "name": "OperatorUnspecified",
          "description": "An unknown, unexpected behavior.",
          "value": "OPERATOR_UNSPECIFIED"
        },
        {
          "name": "In",
          "description": "The node resource group should be in these resources affinity.",
          "value": "IN"
        },
        {
          "name": "NotIn",
          "description": "The node resource group should not be in these resources affinity.",
          "value": "NOT_IN"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:SchedulingNodeAffinityResponse": {
      "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling",
      "properties": {
        "key": {
          "type": "string",
          "description": "The label key of Node resource to reference."
        },
        "operator": {
          "type": "string",
          "description": "The operator to use for the node resources specified in the `values` parameter."
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Corresponds to the label values of Node resource."
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "google-native:vmmigration/v1alpha1:ShuttingDownSourceVMStepResponse": {
      "description": "ShuttingDownSourceVMStep contains specific step details.",
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:vmmigration/v1alpha1:Tag": {
      "description": "Tag is an AWS tag representation.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of tag."
        },
        "value": {
          "type": "string",
          "description": "Value of tag."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:TagResponse": {
      "description": "Tag is an AWS tag representation.",
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of tag."
        },
        "value": {
          "type": "string",
          "description": "Value of tag."
        }
      },
      "type": "object",
      "required": [
        "key",
        "value"
      ]
    },
    "google-native:vmmigration/v1alpha1:TargetVMDetails": {
      "description": "TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeScheduling",
          "description": "Compute instance scheduling information (if empty default is used)."
        },
        "diskType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsDiskType",
          "description": "The disk type to use in the VM."
        },
        "externalIp": {
          "type": "string",
          "description": "The external IP to define in the VM."
        },
        "internalIp": {
          "type": "string",
          "description": "The internal IP to define in the VM. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "licenseType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsLicenseType",
          "description": "The license type to use in OS adaptation."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "The machine type series to create the VM with."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "name": {
          "type": "string",
          "description": "The name of the VM to create."
        },
        "network": {
          "type": "string",
          "description": "The network to connect the VM to."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:NetworkInterface"
          },
          "description": "List of NICs connected to this VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to associate the VM with."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork to connect the VM to."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the VM."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:TargetVMDetailsDiskType": {
      "description": "The disk type to use in the VM.",
      "type": "string",
      "enum": [
        {
          "name": "DiskTypeUnspecified",
          "description": "An unspecified disk type. Will be used as STANDARD.",
          "value": "DISK_TYPE_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "A Standard disk type.",
          "value": "STANDARD"
        },
        {
          "name": "Balanced",
          "description": "An alternative to SSD persistent disks that balance performance and cost.",
          "value": "BALANCED"
        },
        {
          "name": "Ssd",
          "description": "SSD hard disk type.",
          "value": "SSD"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:TargetVMDetailsLicenseType": {
      "description": "The license type to use in OS adaptation.",
      "type": "string",
      "enum": [
        {
          "name": "Default",
          "description": "The license type is the default for the OS.",
          "value": "DEFAULT"
        },
        {
          "name": "Payg",
          "description": "The license type is Pay As You Go license type.",
          "value": "PAYG"
        },
        {
          "name": "Byol",
          "description": "The license type is Bring Your Own License type.",
          "value": "BYOL"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:TargetVMDetailsResponse": {
      "description": "TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project.",
      "properties": {
        "appliedLicense": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AppliedLicenseResponse",
          "description": "The OS license returned from the adaptation module report."
        },
        "bootOption": {
          "type": "string",
          "description": "The VM Boot Option, as set in the source VM."
        },
        "computeScheduling": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeSchedulingResponse",
          "description": "Compute instance scheduling information (if empty default is used)."
        },
        "diskType": {
          "type": "string",
          "description": "The disk type to use in the VM."
        },
        "externalIp": {
          "type": "string",
          "description": "The external IP to define in the VM."
        },
        "internalIp": {
          "type": "string",
          "description": "The internal IP to define in the VM. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of labels to associate with the VM."
        },
        "licenseType": {
          "type": "string",
          "description": "The license type to use in OS adaptation."
        },
        "machineType": {
          "type": "string",
          "description": "The machine type to create the VM with."
        },
        "machineTypeSeries": {
          "type": "string",
          "description": "The machine type series to create the VM with."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key/value pairs to assign to the VM."
        },
        "name": {
          "type": "string",
          "description": "The name of the VM to create."
        },
        "network": {
          "type": "string",
          "description": "The network to connect the VM to."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:NetworkInterfaceResponse"
          },
          "description": "List of NICs connected to this VM."
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of network tags to associate with the VM."
        },
        "project": {
          "type": "string",
          "description": "The project in which to create the VM."
        },
        "secureBoot": {
          "type": "boolean",
          "description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to associate the VM with."
        },
        "subnetwork": {
          "type": "string",
          "description": "The subnetwork to connect the VM to."
        },
        "targetProject": {
          "type": "string",
          "description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM."
        },
        "zone": {
          "type": "string",
          "description": "The zone in which to create the VM."
        }
      },
      "type": "object",
      "required": [
        "appliedLicense",
        "bootOption",
        "computeScheduling",
        "diskType",
        "externalIp",
        "internalIp",
        "labels",
        "licenseType",
        "machineType",
        "machineTypeSeries",
        "metadata",
        "name",
        "network",
        "networkInterfaces",
        "networkTags",
        "project",
        "secureBoot",
        "serviceAccount",
        "subnetwork",
        "targetProject",
        "zone"
      ]
    },
    "google-native:vmmigration/v1alpha1:UpgradeStatusResponse": {
      "description": "UpgradeStatus contains information about upgradeAppliance operation.",
      "properties": {
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details on the state of the upgrade operation in case of an error."
        },
        "previousVersion": {
          "type": "string",
          "description": "The version from which we upgraded."
        },
        "startTime": {
          "type": "string",
          "description": "The time the operation was started."
        },
        "state": {
          "type": "string",
          "description": "The state of the upgradeAppliance operation."
        },
        "version": {
          "type": "string",
          "description": "The version to upgrade to."
        }
      },
      "type": "object",
      "required": [
        "error",
        "previousVersion",
        "startTime",
        "state",
        "version"
      ]
    },
    "google-native:vmmigration/v1alpha1:UtilizationReportTimeFrame": {
      "description": "Time frame of the report.",
      "type": "string",
      "enum": [
        {
          "name": "TimeFrameUnspecified",
          "description": "The time frame was not specified and will default to WEEK.",
          "value": "TIME_FRAME_UNSPECIFIED"
        },
        {
          "name": "Week",
          "description": "One week.",
          "value": "WEEK"
        },
        {
          "name": "Month",
          "description": "One month.",
          "value": "MONTH"
        },
        {
          "name": "Year",
          "description": "One year.",
          "value": "YEAR"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:VmAttachmentDetails": {
      "description": "Details for attachment of the disk to a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* 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, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:VmAttachmentDetailsResponse": {
      "description": "Details for attachment of the disk to a VM.",
      "properties": {
        "deviceName": {
          "type": "string",
          "description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* 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, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
        }
      },
      "type": "object",
      "required": [
        "deviceName"
      ]
    },
    "google-native:vmmigration/v1alpha1:VmCapabilitiesResponse": {
      "description": "Migrating VM source information about the VM capabilities needed for some Compute Engine features.",
      "properties": {
        "lastOsCapabilitiesUpdateTime": {
          "type": "string",
          "description": "The last time OS capabilities list was updated."
        },
        "osCapabilities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unordered list. List of certain VM OS capabilities needed for some Compute Engine features."
        }
      },
      "type": "object",
      "required": [
        "lastOsCapabilitiesUpdateTime",
        "osCapabilities"
      ]
    },
    "google-native:vmmigration/v1alpha1:VmUtilizationInfo": {
      "description": "Utilization information of a single VM.",
      "properties": {
        "utilization": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmUtilizationMetrics",
          "description": "Utilization metrics for this VM."
        },
        "vmId": {
          "type": "string",
          "description": "The VM's ID in the source."
        },
        "vmwareVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareVmDetails",
          "description": "The description of the VM in a Source of type Vmware."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:VmUtilizationInfoResponse": {
      "description": "Utilization information of a single VM.",
      "properties": {
        "utilization": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmUtilizationMetricsResponse",
          "description": "Utilization metrics for this VM."
        },
        "vmId": {
          "type": "string",
          "description": "The VM's ID in the source."
        },
        "vmwareVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareVmDetailsResponse",
          "description": "The description of the VM in a Source of type Vmware."
        }
      },
      "type": "object",
      "required": [
        "utilization",
        "vmId",
        "vmwareVmDetails"
      ]
    },
    "google-native:vmmigration/v1alpha1:VmUtilizationMetrics": {
      "description": "Utilization metrics values for a single VM.",
      "properties": {
        "cpuAverage": {
          "type": "integer",
          "description": "Average CPU usage, percent."
        },
        "cpuAveragePercent": {
          "type": "integer",
          "description": "Average CPU usage, percent."
        },
        "cpuMax": {
          "type": "integer",
          "description": "Max CPU usage, percent."
        },
        "cpuMaxPercent": {
          "type": "integer",
          "description": "Max CPU usage, percent."
        },
        "diskIoRateAverage": {
          "type": "string",
          "description": "Average disk IO rate, in kilobytes per second."
        },
        "diskIoRateAverageKbps": {
          "type": "string",
          "description": "Average disk IO rate, in kilobytes per second."
        },
        "diskIoRateMax": {
          "type": "string",
          "description": "Max disk IO rate, in kilobytes per second."
        },
        "diskIoRateMaxKbps": {
          "type": "string",
          "description": "Max disk IO rate, in kilobytes per second."
        },
        "memoryAverage": {
          "type": "integer",
          "description": "Average memory usage, percent."
        },
        "memoryAveragePercent": {
          "type": "integer",
          "description": "Average memory usage, percent."
        },
        "memoryMax": {
          "type": "integer",
          "description": "Max memory usage, percent."
        },
        "memoryMaxPercent": {
          "type": "integer",
          "description": "Max memory usage, percent."
        },
        "networkThroughputAverage": {
          "type": "string",
          "description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "networkThroughputAverageKbps": {
          "type": "string",
          "description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "networkThroughputMax": {
          "type": "string",
          "description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "networkThroughputMaxKbps": {
          "type": "string",
          "description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:VmUtilizationMetricsResponse": {
      "description": "Utilization metrics values for a single VM.",
      "properties": {
        "cpuAverage": {
          "type": "integer",
          "description": "Average CPU usage, percent."
        },
        "cpuAveragePercent": {
          "type": "integer",
          "description": "Average CPU usage, percent."
        },
        "cpuMax": {
          "type": "integer",
          "description": "Max CPU usage, percent."
        },
        "cpuMaxPercent": {
          "type": "integer",
          "description": "Max CPU usage, percent."
        },
        "diskIoRateAverage": {
          "type": "string",
          "description": "Average disk IO rate, in kilobytes per second."
        },
        "diskIoRateAverageKbps": {
          "type": "string",
          "description": "Average disk IO rate, in kilobytes per second."
        },
        "diskIoRateMax": {
          "type": "string",
          "description": "Max disk IO rate, in kilobytes per second."
        },
        "diskIoRateMaxKbps": {
          "type": "string",
          "description": "Max disk IO rate, in kilobytes per second."
        },
        "memoryAverage": {
          "type": "integer",
          "description": "Average memory usage, percent."
        },
        "memoryAveragePercent": {
          "type": "integer",
          "description": "Average memory usage, percent."
        },
        "memoryMax": {
          "type": "integer",
          "description": "Max memory usage, percent."
        },
        "memoryMaxPercent": {
          "type": "integer",
          "description": "Max memory usage, percent."
        },
        "networkThroughputAverage": {
          "type": "string",
          "description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "networkThroughputAverageKbps": {
          "type": "string",
          "description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "networkThroughputMax": {
          "type": "string",
          "description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        },
        "networkThroughputMaxKbps": {
          "type": "string",
          "description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second."
        }
      },
      "type": "object",
      "required": [
        "cpuAverage",
        "cpuAveragePercent",
        "cpuMax",
        "cpuMaxPercent",
        "diskIoRateAverage",
        "diskIoRateAverageKbps",
        "diskIoRateMax",
        "diskIoRateMaxKbps",
        "memoryAverage",
        "memoryAveragePercent",
        "memoryMax",
        "memoryMaxPercent",
        "networkThroughputAverage",
        "networkThroughputAverageKbps",
        "networkThroughputMax",
        "networkThroughputMaxKbps"
      ]
    },
    "google-native:vmmigration/v1alpha1:VmwareDiskDetailsResponse": {
      "description": "The details of a Vmware VM disk.",
      "properties": {
        "diskNumber": {
          "type": "integer",
          "description": "The ordinal number of the disk."
        },
        "label": {
          "type": "string",
          "description": "The disk label."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size in GB."
        }
      },
      "type": "object",
      "required": [
        "diskNumber",
        "label",
        "sizeGb"
      ]
    },
    "google-native:vmmigration/v1alpha1:VmwareSourceDetails": {
      "description": "VmwareSourceDetails message describes a specific source details for the vmware source type.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The credentials password. This is write only and can not be read in a GET operation."
        },
        "resolvedVcenterHost": {
          "type": "string",
          "description": "The hostname of the vcenter."
        },
        "thumbprint": {
          "type": "string",
          "description": "The thumbprint representing the certificate for the vcenter."
        },
        "username": {
          "type": "string",
          "description": "The credentials username."
        },
        "vcenterIp": {
          "type": "string",
          "description": "The ip address of the vcenter this Source represents."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:VmwareSourceDetailsResponse": {
      "description": "VmwareSourceDetails message describes a specific source details for the vmware source type.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The credentials password. This is write only and can not be read in a GET operation."
        },
        "resolvedVcenterHost": {
          "type": "string",
          "description": "The hostname of the vcenter."
        },
        "thumbprint": {
          "type": "string",
          "description": "The thumbprint representing the certificate for the vcenter."
        },
        "username": {
          "type": "string",
          "description": "The credentials username."
        },
        "vcenterIp": {
          "type": "string",
          "description": "The ip address of the vcenter this Source represents."
        }
      },
      "type": "object",
      "required": [
        "password",
        "resolvedVcenterHost",
        "thumbprint",
        "username",
        "vcenterIp"
      ]
    },
    "google-native:vmmigration/v1alpha1:VmwareSourceVmDetailsResponse": {
      "description": "Represent the source Vmware VM details.",
      "properties": {
        "committedStorageBytes": {
          "type": "string",
          "description": "The total size of the disks being migrated in bytes."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareDiskDetailsResponse"
          },
          "description": "The disks attached to the source VM."
        },
        "firmware": {
          "type": "string",
          "description": "The firmware type of the source VM."
        },
        "vmCapabilitiesInfo": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmCapabilitiesResponse",
          "description": "Information about VM capabilities needed for some Compute Engine features."
        }
      },
      "type": "object",
      "required": [
        "committedStorageBytes",
        "disks",
        "firmware",
        "vmCapabilitiesInfo"
      ]
    },
    "google-native:vmmigration/v1alpha1:VmwareVmDetails": {
      "description": "VmwareVmDetails describes a VM in vCenter.",
      "properties": {
        "committedStorage": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB."
        },
        "committedStorageMb": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB."
        },
        "cpuCount": {
          "type": "integer",
          "description": "The number of cpus in the VM."
        },
        "datacenterDescription": {
          "type": "string",
          "description": "The descriptive name of the vCenter's datacenter this VM is contained in."
        },
        "datacenterId": {
          "type": "string",
          "description": "The id of the vCenter's datacenter this VM is contained in."
        },
        "diskCount": {
          "type": "integer",
          "description": "The number of disks the VM has."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the VM. Note that this is not necessarily unique."
        },
        "guestDescription": {
          "type": "string",
          "description": "The VM's OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The size of the memory of the VM in MB."
        },
        "powerState": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareVmDetailsPowerState",
          "description": "The power state of the VM at the moment list was taken."
        },
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the VM in vCenter."
        },
        "vmId": {
          "type": "string",
          "description": "The VM's id in the source (note that this is not the MigratingVm's id). This is the moref id of the VM."
        }
      },
      "type": "object"
    },
    "google-native:vmmigration/v1alpha1:VmwareVmDetailsPowerState": {
      "description": "The power state of the VM at the moment list was taken.",
      "type": "string",
      "enum": [
        {
          "name": "PowerStateUnspecified",
          "description": "Power state is not specified.",
          "value": "POWER_STATE_UNSPECIFIED"
        },
        {
          "name": "On",
          "description": "The VM is turned ON.",
          "value": "ON"
        },
        {
          "name": "Off",
          "description": "The VM is turned OFF.",
          "value": "OFF"
        },
        {
          "name": "Suspended",
          "description": "The VM is suspended. This is similar to hibernation or sleep mode.",
          "value": "SUSPENDED"
        }
      ]
    },
    "google-native:vmmigration/v1alpha1:VmwareVmDetailsResponse": {
      "description": "VmwareVmDetails describes a VM in vCenter.",
      "properties": {
        "bootOption": {
          "type": "string",
          "description": "The VM Boot Option."
        },
        "committedStorage": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB."
        },
        "committedStorageMb": {
          "type": "string",
          "description": "The total size of the storage allocated to the VM in MB."
        },
        "cpuCount": {
          "type": "integer",
          "description": "The number of cpus in the VM."
        },
        "datacenterDescription": {
          "type": "string",
          "description": "The descriptive name of the vCenter's datacenter this VM is contained in."
        },
        "datacenterId": {
          "type": "string",
          "description": "The id of the vCenter's datacenter this VM is contained in."
        },
        "diskCount": {
          "type": "integer",
          "description": "The number of disks the VM has."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the VM. Note that this is not necessarily unique."
        },
        "guestDescription": {
          "type": "string",
          "description": "The VM's OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold."
        },
        "memoryMb": {
          "type": "integer",
          "description": "The size of the memory of the VM in MB."
        },
        "powerState": {
          "type": "string",
          "description": "The power state of the VM at the moment list was taken."
        },
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the VM in vCenter."
        },
        "vmId": {
          "type": "string",
          "description": "The VM's id in the source (note that this is not the MigratingVm's id). This is the moref id of the VM."
        }
      },
      "type": "object",
      "required": [
        "bootOption",
        "committedStorage",
        "committedStorageMb",
        "cpuCount",
        "datacenterDescription",
        "datacenterId",
        "diskCount",
        "displayName",
        "guestDescription",
        "memoryMb",
        "powerState",
        "uuid",
        "vmId"
      ]
    },
    "google-native:vmwareengine/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:vmwareengine/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:vmwareengine/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:vmwareengine/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:vmwareengine/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:vmwareengine/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:vmwareengine/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:vmwareengine/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:vmwareengine/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:vmwareengine/v1:ExternalAccessRuleAction": {
      "description": "The action that the external access rule performs.",
      "type": "string",
      "enum": [
        {
          "name": "ActionUnspecified",
          "description": "Defaults to allow.",
          "value": "ACTION_UNSPECIFIED"
        },
        {
          "name": "Allow",
          "description": "Allows connections that match the other specified components.",
          "value": "ALLOW"
        },
        {
          "name": "Deny",
          "description": "Blocks connections that match the other specified components.",
          "value": "DENY"
        }
      ]
    },
    "google-native:vmwareengine/v1:HcxResponse": {
      "description": "Details about a HCX Cloud Manager appliance.",
      "properties": {
        "fqdn": {
          "type": "string",
          "description": "Fully qualified domain name of the appliance."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of the appliance."
        },
        "state": {
          "type": "string",
          "description": "The state of the appliance."
        },
        "version": {
          "type": "string",
          "description": "Version of the appliance."
        }
      },
      "type": "object",
      "required": [
        "fqdn",
        "internalIp",
        "state",
        "version"
      ]
    },
    "google-native:vmwareengine/v1:IpRange": {
      "description": "An IP range provided in any one of the supported formats.",
      "properties": {
        "externalAddress": {
          "type": "string",
          "description": "The name of an `ExternalAddress` resource. The external address must have been reserved in the scope of this external access rule's parent network policy. Provide the external address name in the form of `projects/{project}/locations/{location}/privateClouds/{private_cloud}/externalAddresses/{external_address}`. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`."
        },
        "ipAddress": {
          "type": "string",
          "description": "A single IP address. For example: `10.0.0.5`."
        },
        "ipAddressRange": {
          "type": "string",
          "description": "An IP address range in the CIDR format. For example: `10.0.0.0/24`."
        }
      },
      "type": "object"
    },
    "google-native:vmwareengine/v1:IpRangeResponse": {
      "description": "An IP range provided in any one of the supported formats.",
      "properties": {
        "externalAddress": {
          "type": "string",
          "description": "The name of an `ExternalAddress` resource. The external address must have been reserved in the scope of this external access rule's parent network policy. Provide the external address name in the form of `projects/{project}/locations/{location}/privateClouds/{private_cloud}/externalAddresses/{external_address}`. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`."
        },
        "ipAddress": {
          "type": "string",
          "description": "A single IP address. For example: `10.0.0.5`."
        },
        "ipAddressRange": {
          "type": "string",
          "description": "An IP address range in the CIDR format. For example: `10.0.0.0/24`."
        }
      },
      "type": "object",
      "required": [
        "externalAddress",
        "ipAddress",
        "ipAddressRange"
      ]
    },
    "google-native:vmwareengine/v1:LoggingServerProtocol": {
      "description": "Required. Protocol used by vCenter to send logs to a logging server.",
      "type": "string",
      "enum": [
        {
          "name": "ProtocolUnspecified",
          "description": "Unspecified communications protocol. This is the default value.",
          "value": "PROTOCOL_UNSPECIFIED"
        },
        {
          "name": "Udp",
          "description": "UDP",
          "value": "UDP"
        },
        {
          "name": "Tcp",
          "description": "TCP",
          "value": "TCP"
        }
      ]
    },
    "google-native:vmwareengine/v1:LoggingServerSourceType": {
      "description": "Required. The type of component that produces logs that will be forwarded to this logging server.",
      "type": "string",
      "enum": [
        {
          "name": "SourceTypeUnspecified",
          "description": "The default value. This value should never be used.",
          "value": "SOURCE_TYPE_UNSPECIFIED"
        },
        {
          "name": "Esxi",
          "description": "Logs produced by ESXI hosts",
          "value": "ESXI"
        },
        {
          "name": "Vcsa",
          "description": "Logs produced by vCenter server",
          "value": "VCSA"
        }
      ]
    },
    "google-native:vmwareengine/v1:ManagementCluster": {
      "description": "Management cluster configuration.",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "The user-provided identifier of the new `Cluster`. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)"
        },
        "nodeTypeConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of cluster node types in this cluster, where the key is canonical identifier of the node type (corresponds to the `NodeType`)."
        },
        "stretchedClusterConfig": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:StretchedClusterConfig",
          "description": "Optional. Configuration of a stretched cluster. Required for STRETCHED private clouds."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "nodeTypeConfigs"
      ]
    },
    "google-native:vmwareengine/v1:ManagementClusterResponse": {
      "description": "Management cluster configuration.",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "The user-provided identifier of the new `Cluster`. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)"
        },
        "nodeTypeConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of cluster node types in this cluster, where the key is canonical identifier of the node type (corresponds to the `NodeType`)."
        },
        "stretchedClusterConfig": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:StretchedClusterConfigResponse",
          "description": "Optional. Configuration of a stretched cluster. Required for STRETCHED private clouds."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "nodeTypeConfigs",
        "stretchedClusterConfig"
      ]
    },
    "google-native:vmwareengine/v1:NetworkConfig": {
      "description": "Network configuration in the consumer project with which the peering has to be done.",
      "properties": {
        "managementCidr": {
          "type": "string",
          "description": "Management CIDR used by VMware management appliances."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "Optional. The relative resource name of the VMware Engine network attached to the private cloud. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}` can either be a project number or a project ID."
        }
      },
      "type": "object",
      "required": [
        "managementCidr"
      ]
    },
    "google-native:vmwareengine/v1:NetworkConfigResponse": {
      "description": "Network configuration in the consumer project with which the peering has to be done.",
      "properties": {
        "dnsServerIp": {
          "type": "string",
          "description": "DNS Server IP of the Private Cloud. All DNS queries can be forwarded to this address for name resolution of Private Cloud's management entities like vCenter, NSX-T Manager and ESXi hosts."
        },
        "managementCidr": {
          "type": "string",
          "description": "Management CIDR used by VMware management appliances."
        },
        "managementIpAddressLayoutVersion": {
          "type": "integer",
          "description": "The IP address layout version of the management IP address range. Possible versions include: * `managementIpAddressLayoutVersion=1`: Indicates the legacy IP address layout used by some existing private clouds. This is no longer supported for new private clouds as it does not support all features. * `managementIpAddressLayoutVersion=2`: Indicates the latest IP address layout used by all newly created private clouds. This version supports all current features."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "Optional. The relative resource name of the VMware Engine network attached to the private cloud. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}` can either be a project number or a project ID."
        },
        "vmwareEngineNetworkCanonical": {
          "type": "string",
          "description": "The canonical name of the VMware Engine network in the form: `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`"
        }
      },
      "type": "object",
      "required": [
        "dnsServerIp",
        "managementCidr",
        "managementIpAddressLayoutVersion",
        "vmwareEngineNetwork",
        "vmwareEngineNetworkCanonical"
      ]
    },
    "google-native:vmwareengine/v1:NetworkPeeringPeerNetworkType": {
      "description": "Required. The type of the network to peer with the VMware Engine network.",
      "type": "string",
      "enum": [
        {
          "name": "PeerNetworkTypeUnspecified",
          "description": "Unspecified",
          "value": "PEER_NETWORK_TYPE_UNSPECIFIED"
        },
        {
          "name": "Standard",
          "description": "Peering connection used for connecting to another VPC network established by the same user. For example, a peering connection to another VPC network in the same project or to an on-premises network.",
          "value": "STANDARD"
        },
        {
          "name": "VmwareEngineNetwork",
          "description": "Peering connection used for connecting to another VMware Engine network.",
          "value": "VMWARE_ENGINE_NETWORK"
        },
        {
          "name": "PrivateServicesAccess",
          "description": "Peering connection used for establishing [private services access](https://cloud.google.com/vpc/docs/private-services-access).",
          "value": "PRIVATE_SERVICES_ACCESS"
        },
        {
          "name": "NetappCloudVolumes",
          "description": "Peering connection used for connecting to NetApp Cloud Volumes.",
          "value": "NETAPP_CLOUD_VOLUMES"
        },
        {
          "name": "ThirdPartyService",
          "description": "Peering connection used for connecting to third-party services. Most third-party services require manual setup of reverse peering on the VPC network associated with the third-party service.",
          "value": "THIRD_PARTY_SERVICE"
        },
        {
          "name": "DellPowerscale",
          "description": "Peering connection used for connecting to Dell PowerScale Filers",
          "value": "DELL_POWERSCALE"
        }
      ]
    },
    "google-native:vmwareengine/v1:NetworkService": {
      "description": "Represents a network service that is managed by a `NetworkPolicy` resource. A network service provides a way to control an aspect of external access to VMware workloads. For example, whether the VMware workloads in the private clouds governed by a network policy can access or be accessed from the internet.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "True if the service is enabled; false otherwise."
        }
      },
      "type": "object"
    },
    "google-native:vmwareengine/v1:NetworkServiceResponse": {
      "description": "Represents a network service that is managed by a `NetworkPolicy` resource. A network service provides a way to control an aspect of external access to VMware workloads. For example, whether the VMware workloads in the private clouds governed by a network policy can access or be accessed from the internet.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "True if the service is enabled; false otherwise."
        },
        "state": {
          "type": "string",
          "description": "State of the service. New values may be added to this enum when appropriate."
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "state"
      ]
    },
    "google-native:vmwareengine/v1:NsxResponse": {
      "description": "Details about a NSX Manager appliance.",
      "properties": {
        "fqdn": {
          "type": "string",
          "description": "Fully qualified domain name of the appliance."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of the appliance."
        },
        "state": {
          "type": "string",
          "description": "The state of the appliance."
        },
        "version": {
          "type": "string",
          "description": "Version of the appliance."
        }
      },
      "type": "object",
      "required": [
        "fqdn",
        "internalIp",
        "state",
        "version"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudType": {
      "description": "Optional. Type of the private cloud. Defaults to STANDARD.",
      "type": "string",
      "enum": [
        {
          "name": "Standard",
          "description": "Standard private is a zonal resource, with 3+ nodes. Default type.",
          "value": "STANDARD"
        },
        {
          "name": "TimeLimited",
          "description": "Time limited private cloud is a zonal resource, can have only 1 node and has limited life span. Will be deleted after defined period of time, can be converted into standard private cloud by expanding it up to 3 or more nodes.",
          "value": "TIME_LIMITED"
        },
        {
          "name": "Stretched",
          "description": "Stretched private cloud is a regional resource with redundancy, with a minimum of 6 nodes, nodes count has to be even.",
          "value": "STRETCHED"
        }
      ]
    },
    "google-native:vmwareengine/v1:PrivateConnectionRoutingMode": {
      "description": "Optional. Routing Mode. Default value is set to GLOBAL. For type = PRIVATE_SERVICE_ACCESS, this field can be set to GLOBAL or REGIONAL, for other types only GLOBAL is supported.",
      "type": "string",
      "enum": [
        {
          "name": "RoutingModeUnspecified",
          "description": "The default value. This value should never be used.",
          "value": "ROUTING_MODE_UNSPECIFIED"
        },
        {
          "name": "Global",
          "description": "Global Routing Mode",
          "value": "GLOBAL"
        },
        {
          "name": "Regional",
          "description": "Regional Routing Mode",
          "value": "REGIONAL"
        }
      ]
    },
    "google-native:vmwareengine/v1:PrivateConnectionType": {
      "description": "Required. Private connection type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The default value. This value should never be used.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "PrivateServiceAccess",
          "description": "Connection used for establishing [private services access](https://cloud.google.com/vpc/docs/private-services-access).",
          "value": "PRIVATE_SERVICE_ACCESS"
        },
        {
          "name": "NetappCloudVolumes",
          "description": "Connection used for connecting to NetApp Cloud Volumes.",
          "value": "NETAPP_CLOUD_VOLUMES"
        },
        {
          "name": "DellPowerscale",
          "description": "Connection used for connecting to Dell PowerScale.",
          "value": "DELL_POWERSCALE"
        },
        {
          "name": "ThirdPartyService",
          "description": "Connection used for connecting to third-party services.",
          "value": "THIRD_PARTY_SERVICE"
        }
      ]
    },
    "google-native:vmwareengine/v1:StretchedClusterConfig": {
      "description": "Configuration of a stretched cluster.",
      "properties": {
        "preferredLocation": {
          "type": "string",
          "description": "Zone that will remain operational when connection between the two zones is lost. Specify the resource name of a zone that belongs to the region of the private cloud. For example: `projects/{project}/locations/europe-west3-a` where `{project}` can either be a project number or a project ID."
        },
        "secondaryLocation": {
          "type": "string",
          "description": "Additional zone for a higher level of availability and load balancing. Specify the resource name of a zone that belongs to the region of the private cloud. For example: `projects/{project}/locations/europe-west3-b` where `{project}` can either be a project number or a project ID."
        }
      },
      "type": "object",
      "required": [
        "preferredLocation",
        "secondaryLocation"
      ]
    },
    "google-native:vmwareengine/v1:StretchedClusterConfigResponse": {
      "description": "Configuration of a stretched cluster.",
      "properties": {
        "preferredLocation": {
          "type": "string",
          "description": "Zone that will remain operational when connection between the two zones is lost. Specify the resource name of a zone that belongs to the region of the private cloud. For example: `projects/{project}/locations/europe-west3-a` where `{project}` can either be a project number or a project ID."
        },
        "secondaryLocation": {
          "type": "string",
          "description": "Additional zone for a higher level of availability and load balancing. Specify the resource name of a zone that belongs to the region of the private cloud. For example: `projects/{project}/locations/europe-west3-b` where `{project}` can either be a project number or a project ID."
        }
      },
      "type": "object",
      "required": [
        "preferredLocation",
        "secondaryLocation"
      ]
    },
    "google-native:vmwareengine/v1:VcenterResponse": {
      "description": "Details about a vCenter Server management appliance.",
      "properties": {
        "fqdn": {
          "type": "string",
          "description": "Fully qualified domain name of the appliance."
        },
        "internalIp": {
          "type": "string",
          "description": "Internal IP address of the appliance."
        },
        "state": {
          "type": "string",
          "description": "The state of the appliance."
        },
        "version": {
          "type": "string",
          "description": "Version of the appliance."
        }
      },
      "type": "object",
      "required": [
        "fqdn",
        "internalIp",
        "state",
        "version"
      ]
    },
    "google-native:vmwareengine/v1:VmwareEngineNetworkType": {
      "description": "Required. VMware Engine network type.",
      "type": "string",
      "enum": [
        {
          "name": "TypeUnspecified",
          "description": "The default value. This value should never be used.",
          "value": "TYPE_UNSPECIFIED"
        },
        {
          "name": "Legacy",
          "description": "Network type used by private clouds created in projects without a network of type `STANDARD`. This network type is no longer used for new VMware Engine private cloud deployments.",
          "value": "LEGACY"
        },
        {
          "name": "Standard",
          "description": "Standard network type used for private cloud connectivity.",
          "value": "STANDARD"
        }
      ]
    },
    "google-native:vmwareengine/v1:VpcNetworkResponse": {
      "description": "Represents a VMware Engine VPC network that is managed by a VMware Engine network resource.",
      "properties": {
        "network": {
          "type": "string",
          "description": "The relative resource name of the service VPC network this VMware Engine network is attached to. For example: `projects/123123/global/networks/my-network`"
        },
        "type": {
          "type": "string",
          "description": "Type of VPC network (INTRANET, INTERNET, or GOOGLE_CLOUD)"
        }
      },
      "type": "object",
      "required": [
        "network",
        "type"
      ]
    },
    "google-native:vpcaccess/v1:Subnet": {
      "description": "The subnet in which to house the connector",
      "properties": {
        "name": {
          "type": "string",
          "description": "Subnet name (relative, not fully qualified). E.g. if the full subnet selfLink is https://compute.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetName} the correct input for this field would be {subnetName}"
        },
        "project": {
          "type": "string",
          "description": "Project in which the subnet exists. If not set, this project is assumed to be the project for which the connector create request was issued."
        }
      },
      "type": "object"
    },
    "google-native:vpcaccess/v1:SubnetResponse": {
      "description": "The subnet in which to house the connector",
      "properties": {
        "name": {
          "type": "string",
          "description": "Subnet name (relative, not fully qualified). E.g. if the full subnet selfLink is https://compute.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetName} the correct input for this field would be {subnetName}"
        },
        "project": {
          "type": "string",
          "description": "Project in which the subnet exists. If not set, this project is assumed to be the project for which the connector create request was issued."
        }
      },
      "type": "object",
      "required": [
        "name",
        "project"
      ]
    },
    "google-native:vpcaccess/v1beta1:Subnet": {
      "description": "The subnet in which to house the connector",
      "properties": {
        "name": {
          "type": "string",
          "description": "Subnet name (relative, not fully qualified). E.g. if the full subnet selfLink is https://compute.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetName} the correct input for this field would be {subnetName}"
        },
        "project": {
          "type": "string",
          "description": "Project in which the subnet exists. If not set, this project is assumed to be the project for which the connector create request was issued."
        }
      },
      "type": "object"
    },
    "google-native:vpcaccess/v1beta1:SubnetResponse": {
      "description": "The subnet in which to house the connector",
      "properties": {
        "name": {
          "type": "string",
          "description": "Subnet name (relative, not fully qualified). E.g. if the full subnet selfLink is https://compute.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetName} the correct input for this field would be {subnetName}"
        },
        "project": {
          "type": "string",
          "description": "Project in which the subnet exists. If not set, this project is assumed to be the project for which the connector create request was issued."
        }
      },
      "type": "object",
      "required": [
        "name",
        "project"
      ]
    },
    "google-native:websecurityscanner/v1:Authentication": {
      "description": "Scan authentication configuration.",
      "properties": {
        "customAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:CustomAccount",
          "description": "Authentication using a custom account."
        },
        "googleAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:GoogleAccount",
          "description": "Authentication using a Google account."
        },
        "iapCredential": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:IapCredential",
          "description": "Authentication using Identity-Aware-Proxy (IAP)."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1:AuthenticationResponse": {
      "description": "Scan authentication configuration.",
      "properties": {
        "customAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:CustomAccountResponse",
          "description": "Authentication using a custom account."
        },
        "googleAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:GoogleAccountResponse",
          "description": "Authentication using a Google account."
        },
        "iapCredential": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:IapCredentialResponse",
          "description": "Authentication using Identity-Aware-Proxy (IAP)."
        }
      },
      "type": "object",
      "required": [
        "customAccount",
        "googleAccount",
        "iapCredential"
      ]
    },
    "google-native:websecurityscanner/v1:CustomAccount": {
      "description": "Describes authentication configuration that uses a custom account.",
      "properties": {
        "loginUrl": {
          "type": "string",
          "description": "The login form URL of the website."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the custom account."
        }
      },
      "type": "object",
      "required": [
        "loginUrl",
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1:CustomAccountResponse": {
      "description": "Describes authentication configuration that uses a custom account.",
      "properties": {
        "loginUrl": {
          "type": "string",
          "description": "The login form URL of the website."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the custom account."
        }
      },
      "type": "object",
      "required": [
        "loginUrl",
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1:GoogleAccount": {
      "description": "Describes authentication configuration that uses a Google account.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the Google account."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1:GoogleAccountResponse": {
      "description": "Describes authentication configuration that uses a Google account.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the Google account."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1:IapCredential": {
      "description": "Describes authentication configuration for Identity-Aware-Proxy (IAP).",
      "properties": {
        "iapTestServiceAccountInfo": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:IapTestServiceAccountInfo",
          "description": "Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1:IapCredentialResponse": {
      "description": "Describes authentication configuration for Identity-Aware-Proxy (IAP).",
      "properties": {
        "iapTestServiceAccountInfo": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:IapTestServiceAccountInfoResponse",
          "description": "Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies."
        }
      },
      "type": "object",
      "required": [
        "iapTestServiceAccountInfo"
      ]
    },
    "google-native:websecurityscanner/v1:IapTestServiceAccountInfo": {
      "description": "Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.",
      "properties": {
        "targetAudienceClientId": {
          "type": "string",
          "description": "Describes OAuth2 client id of resources protected by Identity-Aware-Proxy (IAP)."
        }
      },
      "type": "object",
      "required": [
        "targetAudienceClientId"
      ]
    },
    "google-native:websecurityscanner/v1:IapTestServiceAccountInfoResponse": {
      "description": "Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.",
      "properties": {
        "targetAudienceClientId": {
          "type": "string",
          "description": "Describes OAuth2 client id of resources protected by Identity-Aware-Proxy (IAP)."
        }
      },
      "type": "object",
      "required": [
        "targetAudienceClientId"
      ]
    },
    "google-native:websecurityscanner/v1:ScanConfigExportToSecurityCommandCenter": {
      "description": "Controls export of scan configurations and results to Security Command Center.",
      "type": "string",
      "enum": [
        {
          "name": "ExportToSecurityCommandCenterUnspecified",
          "description": "Use default, which is ENABLED.",
          "value": "EXPORT_TO_SECURITY_COMMAND_CENTER_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "Export results of this scan to Security Command Center.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "Do not export results of this scan to Security Command Center.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:websecurityscanner/v1:ScanConfigRiskLevel": {
      "description": "The risk level selected for the scan",
      "type": "string",
      "enum": [
        {
          "name": "RiskLevelUnspecified",
          "description": "Use default, which is NORMAL.",
          "value": "RISK_LEVEL_UNSPECIFIED"
        },
        {
          "name": "Normal",
          "description": "Normal scanning (Recommended)",
          "value": "NORMAL"
        },
        {
          "name": "Low",
          "description": "Lower impact scanning",
          "value": "LOW"
        }
      ]
    },
    "google-native:websecurityscanner/v1:ScanConfigUserAgent": {
      "description": "The user agent used during scanning.",
      "type": "string",
      "enum": [
        {
          "name": "UserAgentUnspecified",
          "description": "The user agent is unknown. Service will default to CHROME_LINUX.",
          "value": "USER_AGENT_UNSPECIFIED"
        },
        {
          "name": "ChromeLinux",
          "description": "Chrome on Linux. This is the service default if unspecified.",
          "value": "CHROME_LINUX"
        },
        {
          "name": "ChromeAndroid",
          "description": "Chrome on Android.",
          "value": "CHROME_ANDROID"
        },
        {
          "name": "SafariIphone",
          "description": "Safari on IPhone.",
          "value": "SAFARI_IPHONE"
        }
      ]
    },
    "google-native:websecurityscanner/v1:Schedule": {
      "description": "Scan schedule configuration.",
      "properties": {
        "intervalDurationDays": {
          "type": "integer",
          "description": "The duration of time between executions in days."
        },
        "scheduleTime": {
          "type": "string",
          "description": "A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately."
        }
      },
      "type": "object",
      "required": [
        "intervalDurationDays"
      ]
    },
    "google-native:websecurityscanner/v1:ScheduleResponse": {
      "description": "Scan schedule configuration.",
      "properties": {
        "intervalDurationDays": {
          "type": "integer",
          "description": "The duration of time between executions in days."
        },
        "scheduleTime": {
          "type": "string",
          "description": "A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately."
        }
      },
      "type": "object",
      "required": [
        "intervalDurationDays",
        "scheduleTime"
      ]
    },
    "google-native:websecurityscanner/v1alpha:Authentication": {
      "description": "Scan authentication configuration.",
      "properties": {
        "customAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:CustomAccount",
          "description": "Authentication using a custom account."
        },
        "googleAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:GoogleAccount",
          "description": "Authentication using a Google account."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1alpha:AuthenticationResponse": {
      "description": "Scan authentication configuration.",
      "properties": {
        "customAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:CustomAccountResponse",
          "description": "Authentication using a custom account."
        },
        "googleAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:GoogleAccountResponse",
          "description": "Authentication using a Google account."
        }
      },
      "type": "object",
      "required": [
        "customAccount",
        "googleAccount"
      ]
    },
    "google-native:websecurityscanner/v1alpha:CustomAccount": {
      "description": "Describes authentication configuration that uses a custom account.",
      "properties": {
        "loginUrl": {
          "type": "string",
          "description": "The login form URL of the website."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the custom account."
        }
      },
      "type": "object",
      "required": [
        "loginUrl",
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1alpha:CustomAccountResponse": {
      "description": "Describes authentication configuration that uses a custom account.",
      "properties": {
        "loginUrl": {
          "type": "string",
          "description": "The login form URL of the website."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the custom account."
        }
      },
      "type": "object",
      "required": [
        "loginUrl",
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1alpha:GoogleAccount": {
      "description": "Describes authentication configuration that uses a Google account.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the Google account."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1alpha:GoogleAccountResponse": {
      "description": "Describes authentication configuration that uses a Google account.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the Google account."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1alpha:ScanConfigTargetPlatformsItem": {
      "type": "string",
      "enum": [
        {
          "name": "TargetPlatformUnspecified",
          "description": "The target platform is unknown. Requests with this enum value will be rejected with INVALID_ARGUMENT error.",
          "value": "TARGET_PLATFORM_UNSPECIFIED"
        },
        {
          "name": "AppEngine",
          "description": "Google App Engine service.",
          "value": "APP_ENGINE"
        },
        {
          "name": "Compute",
          "description": "Google Compute Engine service.",
          "value": "COMPUTE"
        },
        {
          "name": "CloudRun",
          "description": "Google Cloud Run service.",
          "value": "CLOUD_RUN"
        },
        {
          "name": "CloudFunctions",
          "description": "Google Cloud Function service.",
          "value": "CLOUD_FUNCTIONS"
        }
      ]
    },
    "google-native:websecurityscanner/v1alpha:ScanConfigUserAgent": {
      "description": "The user agent used during scanning.",
      "type": "string",
      "enum": [
        {
          "name": "UserAgentUnspecified",
          "description": "The user agent is unknown. Service will default to CHROME_LINUX.",
          "value": "USER_AGENT_UNSPECIFIED"
        },
        {
          "name": "ChromeLinux",
          "description": "Chrome on Linux. This is the service default if unspecified.",
          "value": "CHROME_LINUX"
        },
        {
          "name": "ChromeAndroid",
          "description": "Chrome on Android.",
          "value": "CHROME_ANDROID"
        },
        {
          "name": "SafariIphone",
          "description": "Safari on IPhone.",
          "value": "SAFARI_IPHONE"
        }
      ]
    },
    "google-native:websecurityscanner/v1alpha:ScanRun": {
      "description": "A ScanRun is a output-only resource representing an actual run of the scan.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time at which the ScanRun reached termination state - that the ScanRun is either finished or stopped by user."
        },
        "executionState": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScanRunExecutionState",
          "description": "The execution state of the ScanRun."
        },
        "hasVulnerabilities": {
          "type": "boolean",
          "description": "Whether the scan run has found any vulnerabilities."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanRun. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'. The ScanRun IDs are generated by the system."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The percentage of total completion ranging from 0 to 100. If the scan is in queue, the value is 0. If the scan is running, the value ranges from 0 to 100. If the scan is finished, the value is 100."
        },
        "resultState": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScanRunResultState",
          "description": "The result state of the ScanRun. This field is only available after the execution state reaches \"FINISHED\"."
        },
        "startTime": {
          "type": "string",
          "description": "The time at which the ScanRun started."
        },
        "urlsCrawledCount": {
          "type": "string",
          "description": "The number of URLs crawled during this ScanRun. If the scan is in progress, the value represents the number of URLs crawled up to now."
        },
        "urlsTestedCount": {
          "type": "string",
          "description": "The number of URLs tested during this ScanRun. If the scan is in progress, the value represents the number of URLs tested up to now. The number of URLs tested is usually larger than the number URLS crawled because typically a crawled URL is tested with multiple test payloads."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1alpha:ScanRunExecutionState": {
      "description": "The execution state of the ScanRun.",
      "type": "string",
      "enum": [
        {
          "name": "ExecutionStateUnspecified",
          "description": "Represents an invalid state caused by internal server error. This value should never be returned.",
          "value": "EXECUTION_STATE_UNSPECIFIED"
        },
        {
          "name": "Queued",
          "description": "The scan is waiting in the queue.",
          "value": "QUEUED"
        },
        {
          "name": "Scanning",
          "description": "The scan is in progress.",
          "value": "SCANNING"
        },
        {
          "name": "Finished",
          "description": "The scan is either finished or stopped by user.",
          "value": "FINISHED"
        }
      ]
    },
    "google-native:websecurityscanner/v1alpha:ScanRunResponse": {
      "description": "A ScanRun is a output-only resource representing an actual run of the scan.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time at which the ScanRun reached termination state - that the ScanRun is either finished or stopped by user."
        },
        "executionState": {
          "type": "string",
          "description": "The execution state of the ScanRun."
        },
        "hasVulnerabilities": {
          "type": "boolean",
          "description": "Whether the scan run has found any vulnerabilities."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanRun. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'. The ScanRun IDs are generated by the system."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The percentage of total completion ranging from 0 to 100. If the scan is in queue, the value is 0. If the scan is running, the value ranges from 0 to 100. If the scan is finished, the value is 100."
        },
        "resultState": {
          "type": "string",
          "description": "The result state of the ScanRun. This field is only available after the execution state reaches \"FINISHED\"."
        },
        "startTime": {
          "type": "string",
          "description": "The time at which the ScanRun started."
        },
        "urlsCrawledCount": {
          "type": "string",
          "description": "The number of URLs crawled during this ScanRun. If the scan is in progress, the value represents the number of URLs crawled up to now."
        },
        "urlsTestedCount": {
          "type": "string",
          "description": "The number of URLs tested during this ScanRun. If the scan is in progress, the value represents the number of URLs tested up to now. The number of URLs tested is usually larger than the number URLS crawled because typically a crawled URL is tested with multiple test payloads."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "executionState",
        "hasVulnerabilities",
        "name",
        "progressPercent",
        "resultState",
        "startTime",
        "urlsCrawledCount",
        "urlsTestedCount"
      ]
    },
    "google-native:websecurityscanner/v1alpha:ScanRunResultState": {
      "description": "The result state of the ScanRun. This field is only available after the execution state reaches \"FINISHED\".",
      "type": "string",
      "enum": [
        {
          "name": "ResultStateUnspecified",
          "description": "Default value. This value is returned when the ScanRun is not yet finished.",
          "value": "RESULT_STATE_UNSPECIFIED"
        },
        {
          "name": "Success",
          "description": "The scan finished without errors.",
          "value": "SUCCESS"
        },
        {
          "name": "Error",
          "description": "The scan finished with errors.",
          "value": "ERROR"
        },
        {
          "name": "Killed",
          "description": "The scan was terminated by user.",
          "value": "KILLED"
        }
      ]
    },
    "google-native:websecurityscanner/v1alpha:Schedule": {
      "description": "Scan schedule configuration.",
      "properties": {
        "intervalDurationDays": {
          "type": "integer",
          "description": "The duration of time between executions in days."
        },
        "scheduleTime": {
          "type": "string",
          "description": "A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately."
        }
      },
      "type": "object",
      "required": [
        "intervalDurationDays"
      ]
    },
    "google-native:websecurityscanner/v1alpha:ScheduleResponse": {
      "description": "Scan schedule configuration.",
      "properties": {
        "intervalDurationDays": {
          "type": "integer",
          "description": "The duration of time between executions in days."
        },
        "scheduleTime": {
          "type": "string",
          "description": "A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately."
        }
      },
      "type": "object",
      "required": [
        "intervalDurationDays",
        "scheduleTime"
      ]
    },
    "google-native:websecurityscanner/v1beta:Authentication": {
      "description": "Scan authentication configuration.",
      "properties": {
        "customAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:CustomAccount",
          "description": "Authentication using a custom account."
        },
        "googleAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:GoogleAccount",
          "description": "Authentication using a Google account."
        },
        "iapCredential": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:IapCredential",
          "description": "Authentication using Identity-Aware-Proxy (IAP)."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1beta:AuthenticationResponse": {
      "description": "Scan authentication configuration.",
      "properties": {
        "customAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:CustomAccountResponse",
          "description": "Authentication using a custom account."
        },
        "googleAccount": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:GoogleAccountResponse",
          "description": "Authentication using a Google account."
        },
        "iapCredential": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:IapCredentialResponse",
          "description": "Authentication using Identity-Aware-Proxy (IAP)."
        }
      },
      "type": "object",
      "required": [
        "customAccount",
        "googleAccount",
        "iapCredential"
      ]
    },
    "google-native:websecurityscanner/v1beta:CustomAccount": {
      "description": "Describes authentication configuration that uses a custom account.",
      "properties": {
        "loginUrl": {
          "type": "string",
          "description": "The login form URL of the website."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the custom account."
        }
      },
      "type": "object",
      "required": [
        "loginUrl",
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1beta:CustomAccountResponse": {
      "description": "Describes authentication configuration that uses a custom account.",
      "properties": {
        "loginUrl": {
          "type": "string",
          "description": "The login form URL of the website."
        },
        "password": {
          "type": "string",
          "description": "Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the custom account."
        }
      },
      "type": "object",
      "required": [
        "loginUrl",
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1beta:GoogleAccount": {
      "description": "Describes authentication configuration that uses a Google account.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the Google account."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1beta:GoogleAccountResponse": {
      "description": "Describes authentication configuration that uses a Google account.",
      "properties": {
        "password": {
          "type": "string",
          "description": "Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs."
        },
        "username": {
          "type": "string",
          "description": "The user name of the Google account."
        }
      },
      "type": "object",
      "required": [
        "password",
        "username"
      ]
    },
    "google-native:websecurityscanner/v1beta:IapCredential": {
      "description": "Describes authentication configuration for Identity-Aware-Proxy (IAP).",
      "properties": {
        "iapTestServiceAccountInfo": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:IapTestServiceAccountInfo",
          "description": "Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1beta:IapCredentialResponse": {
      "description": "Describes authentication configuration for Identity-Aware-Proxy (IAP).",
      "properties": {
        "iapTestServiceAccountInfo": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:IapTestServiceAccountInfoResponse",
          "description": "Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies."
        }
      },
      "type": "object",
      "required": [
        "iapTestServiceAccountInfo"
      ]
    },
    "google-native:websecurityscanner/v1beta:IapTestServiceAccountInfo": {
      "description": "Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.",
      "properties": {
        "targetAudienceClientId": {
          "type": "string",
          "description": "Describes OAuth2 Client ID of resources protected by Identity-Aware-Proxy(IAP)."
        }
      },
      "type": "object",
      "required": [
        "targetAudienceClientId"
      ]
    },
    "google-native:websecurityscanner/v1beta:IapTestServiceAccountInfoResponse": {
      "description": "Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.",
      "properties": {
        "targetAudienceClientId": {
          "type": "string",
          "description": "Describes OAuth2 Client ID of resources protected by Identity-Aware-Proxy(IAP)."
        }
      },
      "type": "object",
      "required": [
        "targetAudienceClientId"
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanConfigError": {
      "description": "Defines a custom error message used by CreateScanConfig and UpdateScanConfig APIs when scan configuration validation fails. It is also reported as part of a ScanRunErrorTrace message if scan validation fails due to a scan configuration error.",
      "properties": {
        "code": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanConfigErrorCode",
          "description": "Indicates the reason code for a configuration failure."
        },
        "fieldName": {
          "type": "string",
          "description": "Indicates the full name of the ScanConfig field that triggers this error, for example \"scan_config.max_qps\". This field is provided for troubleshooting purposes only and its actual value can change in the future."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1beta:ScanConfigErrorCode": {
      "description": "Indicates the reason code for a configuration failure.",
      "type": "string",
      "enum": [
        {
          "name": "CodeUnspecified",
          "description": "There is no error.",
          "value": "CODE_UNSPECIFIED"
        },
        {
          "name": "Ok",
          "description": "There is no error.",
          "value": "OK"
        },
        {
          "name": "InternalError",
          "description": "Indicates an internal server error. Please DO NOT USE THIS ERROR CODE unless the root cause is truly unknown.",
          "value": "INTERNAL_ERROR"
        },
        {
          "name": "AppengineApiBackendError",
          "description": "One of the seed URLs is an App Engine URL but we cannot validate the scan settings due to an App Engine API backend error.",
          "value": "APPENGINE_API_BACKEND_ERROR"
        },
        {
          "name": "AppengineApiNotAccessible",
          "description": "One of the seed URLs is an App Engine URL but we cannot access the App Engine API to validate scan settings.",
          "value": "APPENGINE_API_NOT_ACCESSIBLE"
        },
        {
          "name": "AppengineDefaultHostMissing",
          "description": "One of the seed URLs is an App Engine URL but the Default Host of the App Engine is not set.",
          "value": "APPENGINE_DEFAULT_HOST_MISSING"
        },
        {
          "name": "CannotUseGoogleComAccount",
          "description": "Google corporate accounts can not be used for scanning.",
          "value": "CANNOT_USE_GOOGLE_COM_ACCOUNT"
        },
        {
          "name": "CannotUseOwnerAccount",
          "description": "The account of the scan creator can not be used for scanning.",
          "value": "CANNOT_USE_OWNER_ACCOUNT"
        },
        {
          "name": "ComputeApiBackendError",
          "description": "This scan targets Compute Engine, but we cannot validate scan settings due to a Compute Engine API backend error.",
          "value": "COMPUTE_API_BACKEND_ERROR"
        },
        {
          "name": "ComputeApiNotAccessible",
          "description": "This scan targets Compute Engine, but we cannot access the Compute Engine API to validate the scan settings.",
          "value": "COMPUTE_API_NOT_ACCESSIBLE"
        },
        {
          "name": "CustomLoginUrlDoesNotBelongToCurrentProject",
          "description": "The Custom Login URL does not belong to the current project.",
          "value": "CUSTOM_LOGIN_URL_DOES_NOT_BELONG_TO_CURRENT_PROJECT"
        },
        {
          "name": "CustomLoginUrlMalformed",
          "description": "The Custom Login URL is malformed (can not be parsed).",
          "value": "CUSTOM_LOGIN_URL_MALFORMED"
        },
        {
          "name": "CustomLoginUrlMappedToNonRoutableAddress",
          "description": "The Custom Login URL is mapped to a non-routable IP address in DNS.",
          "value": "CUSTOM_LOGIN_URL_MAPPED_TO_NON_ROUTABLE_ADDRESS"
        },
        {
          "name": "CustomLoginUrlMappedToUnreservedAddress",
          "description": "The Custom Login URL is mapped to an IP address which is not reserved for the current project.",
          "value": "CUSTOM_LOGIN_URL_MAPPED_TO_UNRESERVED_ADDRESS"
        },
        {
          "name": "CustomLoginUrlHasNonRoutableIpAddress",
          "description": "The Custom Login URL has a non-routable IP address.",
          "value": "CUSTOM_LOGIN_URL_HAS_NON_ROUTABLE_IP_ADDRESS"
        },
        {
          "name": "CustomLoginUrlHasUnreservedIpAddress",
          "description": "The Custom Login URL has an IP address which is not reserved for the current project.",
          "value": "CUSTOM_LOGIN_URL_HAS_UNRESERVED_IP_ADDRESS"
        },
        {
          "name": "DuplicateScanName",
          "description": "Another scan with the same name (case-sensitive) already exists.",
          "value": "DUPLICATE_SCAN_NAME"
        },
        {
          "name": "InvalidFieldValue",
          "description": "A field is set to an invalid value.",
          "value": "INVALID_FIELD_VALUE"
        },
        {
          "name": "FailedToAuthenticateToTarget",
          "description": "There was an error trying to authenticate to the scan target.",
          "value": "FAILED_TO_AUTHENTICATE_TO_TARGET"
        },
        {
          "name": "FindingTypeUnspecified",
          "description": "Finding type value is not specified in the list findings request.",
          "value": "FINDING_TYPE_UNSPECIFIED"
        },
        {
          "name": "ForbiddenToScanCompute",
          "description": "Scan targets Compute Engine, yet current project was not whitelisted for Google Compute Engine Scanning Alpha access.",
          "value": "FORBIDDEN_TO_SCAN_COMPUTE"
        },
        {
          "name": "ForbiddenUpdateToManagedScan",
          "description": "User tries to update managed scan",
          "value": "FORBIDDEN_UPDATE_TO_MANAGED_SCAN"
        },
        {
          "name": "MalformedFilter",
          "description": "The supplied filter is malformed. For example, it can not be parsed, does not have a filter type in expression, or the same filter type appears more than once.",
          "value": "MALFORMED_FILTER"
        },
        {
          "name": "MalformedResourceName",
          "description": "The supplied resource name is malformed (can not be parsed).",
          "value": "MALFORMED_RESOURCE_NAME"
        },
        {
          "name": "ProjectInactive",
          "description": "The current project is not in an active state.",
          "value": "PROJECT_INACTIVE"
        },
        {
          "name": "RequiredField",
          "description": "A required field is not set.",
          "value": "REQUIRED_FIELD"
        },
        {
          "name": "ResourceNameInconsistent",
          "description": "Project id, scanconfig id, scanrun id, or finding id are not consistent with each other in resource name.",
          "value": "RESOURCE_NAME_INCONSISTENT"
        },
        {
          "name": "ScanAlreadyRunning",
          "description": "The scan being requested to start is already running.",
          "value": "SCAN_ALREADY_RUNNING"
        },
        {
          "name": "ScanNotRunning",
          "description": "The scan that was requested to be stopped is not running.",
          "value": "SCAN_NOT_RUNNING"
        },
        {
          "name": "SeedUrlDoesNotBelongToCurrentProject",
          "description": "One of the seed URLs does not belong to the current project.",
          "value": "SEED_URL_DOES_NOT_BELONG_TO_CURRENT_PROJECT"
        },
        {
          "name": "SeedUrlMalformed",
          "description": "One of the seed URLs is malformed (can not be parsed).",
          "value": "SEED_URL_MALFORMED"
        },
        {
          "name": "SeedUrlMappedToNonRoutableAddress",
          "description": "One of the seed URLs is mapped to a non-routable IP address in DNS.",
          "value": "SEED_URL_MAPPED_TO_NON_ROUTABLE_ADDRESS"
        },
        {
          "name": "SeedUrlMappedToUnreservedAddress",
          "description": "One of the seed URLs is mapped to an IP address which is not reserved for the current project.",
          "value": "SEED_URL_MAPPED_TO_UNRESERVED_ADDRESS"
        },
        {
          "name": "SeedUrlHasNonRoutableIpAddress",
          "description": "One of the seed URLs has on-routable IP address.",
          "value": "SEED_URL_HAS_NON_ROUTABLE_IP_ADDRESS"
        },
        {
          "name": "SeedUrlHasUnreservedIpAddress",
          "description": "One of the seed URLs has an IP address that is not reserved for the current project.",
          "value": "SEED_URL_HAS_UNRESERVED_IP_ADDRESS"
        },
        {
          "name": "ServiceAccountNotConfigured",
          "description": "The Web Security Scanner service account is not configured under the project.",
          "value": "SERVICE_ACCOUNT_NOT_CONFIGURED"
        },
        {
          "name": "TooManyScans",
          "description": "A project has reached the maximum number of scans.",
          "value": "TOO_MANY_SCANS"
        },
        {
          "name": "UnableToResolveProjectInfo",
          "description": "Resolving the details of the current project fails.",
          "value": "UNABLE_TO_RESOLVE_PROJECT_INFO"
        },
        {
          "name": "UnsupportedBlacklistPatternFormat",
          "description": "One or more blacklist patterns were in the wrong format.",
          "value": "UNSUPPORTED_BLACKLIST_PATTERN_FORMAT"
        },
        {
          "name": "UnsupportedFilter",
          "description": "The supplied filter is not supported.",
          "value": "UNSUPPORTED_FILTER"
        },
        {
          "name": "UnsupportedFindingType",
          "description": "The supplied finding type is not supported. For example, we do not provide findings of the given finding type.",
          "value": "UNSUPPORTED_FINDING_TYPE"
        },
        {
          "name": "UnsupportedUrlScheme",
          "description": "The URL scheme of one or more of the supplied URLs is not supported.",
          "value": "UNSUPPORTED_URL_SCHEME"
        },
        {
          "name": "CloudAssetInventoryAssetNotFound",
          "description": "CAI is not able to list assets.",
          "value": "CLOUD_ASSET_INVENTORY_ASSET_NOT_FOUND"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanConfigErrorResponse": {
      "description": "Defines a custom error message used by CreateScanConfig and UpdateScanConfig APIs when scan configuration validation fails. It is also reported as part of a ScanRunErrorTrace message if scan validation fails due to a scan configuration error.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Indicates the reason code for a configuration failure."
        },
        "fieldName": {
          "type": "string",
          "description": "Indicates the full name of the ScanConfig field that triggers this error, for example \"scan_config.max_qps\". This field is provided for troubleshooting purposes only and its actual value can change in the future."
        }
      },
      "type": "object",
      "required": [
        "code",
        "fieldName"
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanConfigExportToSecurityCommandCenter": {
      "description": "Controls export of scan configurations and results to Security Command Center.",
      "type": "string",
      "enum": [
        {
          "name": "ExportToSecurityCommandCenterUnspecified",
          "description": "Use default, which is ENABLED.",
          "value": "EXPORT_TO_SECURITY_COMMAND_CENTER_UNSPECIFIED"
        },
        {
          "name": "Enabled",
          "description": "Export results of this scan to Security Command Center.",
          "value": "ENABLED"
        },
        {
          "name": "Disabled",
          "description": "Do not export results of this scan to Security Command Center.",
          "value": "DISABLED"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanConfigRiskLevel": {
      "description": "The risk level selected for the scan",
      "type": "string",
      "enum": [
        {
          "name": "RiskLevelUnspecified",
          "description": "Use default, which is NORMAL.",
          "value": "RISK_LEVEL_UNSPECIFIED"
        },
        {
          "name": "Normal",
          "description": "Normal scanning (Recommended)",
          "value": "NORMAL"
        },
        {
          "name": "Low",
          "description": "Lower impact scanning",
          "value": "LOW"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanConfigTargetPlatformsItem": {
      "type": "string",
      "enum": [
        {
          "name": "TargetPlatformUnspecified",
          "description": "The target platform is unknown. Requests with this enum value will be rejected with INVALID_ARGUMENT error.",
          "value": "TARGET_PLATFORM_UNSPECIFIED"
        },
        {
          "name": "AppEngine",
          "description": "Google App Engine service.",
          "value": "APP_ENGINE"
        },
        {
          "name": "Compute",
          "description": "Google Compute Engine service.",
          "value": "COMPUTE"
        },
        {
          "name": "CloudRun",
          "description": "Google Cloud Run service.",
          "value": "CLOUD_RUN"
        },
        {
          "name": "CloudFunctions",
          "description": "Google Cloud Function service.",
          "value": "CLOUD_FUNCTIONS"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanConfigUserAgent": {
      "description": "The user agent used during scanning.",
      "type": "string",
      "enum": [
        {
          "name": "UserAgentUnspecified",
          "description": "The user agent is unknown. Service will default to CHROME_LINUX.",
          "value": "USER_AGENT_UNSPECIFIED"
        },
        {
          "name": "ChromeLinux",
          "description": "Chrome on Linux. This is the service default if unspecified.",
          "value": "CHROME_LINUX"
        },
        {
          "name": "ChromeAndroid",
          "description": "Chrome on Android.",
          "value": "CHROME_ANDROID"
        },
        {
          "name": "SafariIphone",
          "description": "Safari on IPhone.",
          "value": "SAFARI_IPHONE"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanRun": {
      "description": "A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time at which the ScanRun reached termination state - that the ScanRun is either finished or stopped by user."
        },
        "errorTrace": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunErrorTrace",
          "description": "If result_state is an ERROR, this field provides the primary reason for scan's termination and more details, if such are available."
        },
        "executionState": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunExecutionState",
          "description": "The execution state of the ScanRun."
        },
        "hasVulnerabilities": {
          "type": "boolean",
          "description": "Whether the scan run has found any vulnerabilities."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanRun. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'. The ScanRun IDs are generated by the system."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The percentage of total completion ranging from 0 to 100. If the scan is in queue, the value is 0. If the scan is running, the value ranges from 0 to 100. If the scan is finished, the value is 100."
        },
        "resultState": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunResultState",
          "description": "The result state of the ScanRun. This field is only available after the execution state reaches \"FINISHED\"."
        },
        "startTime": {
          "type": "string",
          "description": "The time at which the ScanRun started."
        },
        "urlsCrawledCount": {
          "type": "string",
          "description": "The number of URLs crawled during this ScanRun. If the scan is in progress, the value represents the number of URLs crawled up to now."
        },
        "urlsTestedCount": {
          "type": "string",
          "description": "The number of URLs tested during this ScanRun. If the scan is in progress, the value represents the number of URLs tested up to now. The number of URLs tested is usually larger than the number URLS crawled because typically a crawled URL is tested with multiple test payloads."
        },
        "warningTraces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunWarningTrace"
          },
          "description": "A list of warnings, if such are encountered during this scan run."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1beta:ScanRunErrorTrace": {
      "description": "Output only. Defines an error trace message for a ScanRun.",
      "properties": {
        "code": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunErrorTraceCode",
          "description": "Indicates the error reason code."
        },
        "mostCommonHttpErrorCode": {
          "type": "integer",
          "description": "If the scan encounters TOO_MANY_HTTP_ERRORS, this field indicates the most common HTTP error code, if such is available. For example, if this code is 404, the scan has encountered too many NOT_FOUND responses."
        },
        "scanConfigError": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanConfigError",
          "description": "If the scan encounters SCAN_CONFIG_ISSUE error, this field has the error message encountered during scan configuration validation that is performed before each scan run."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1beta:ScanRunErrorTraceCode": {
      "description": "Indicates the error reason code.",
      "type": "string",
      "enum": [
        {
          "name": "CodeUnspecified",
          "description": "Default value is never used.",
          "value": "CODE_UNSPECIFIED"
        },
        {
          "name": "InternalError",
          "description": "Indicates that the scan run failed due to an internal server error.",
          "value": "INTERNAL_ERROR"
        },
        {
          "name": "ScanConfigIssue",
          "description": "Indicates a scan configuration error, usually due to outdated ScanConfig settings, such as starting_urls or the DNS configuration.",
          "value": "SCAN_CONFIG_ISSUE"
        },
        {
          "name": "AuthenticationConfigIssue",
          "description": "Indicates an authentication error, usually due to outdated ScanConfig authentication settings.",
          "value": "AUTHENTICATION_CONFIG_ISSUE"
        },
        {
          "name": "TimedOutWhileScanning",
          "description": "Indicates a scan operation timeout, usually caused by a very large site.",
          "value": "TIMED_OUT_WHILE_SCANNING"
        },
        {
          "name": "TooManyRedirects",
          "description": "Indicates that a scan encountered excessive redirects, either to authentication or some other page outside of the scan scope.",
          "value": "TOO_MANY_REDIRECTS"
        },
        {
          "name": "TooManyHttpErrors",
          "description": "Indicates that a scan encountered numerous errors from the web site pages. When available, most_common_http_error_code field indicates the most common HTTP error code encountered during the scan.",
          "value": "TOO_MANY_HTTP_ERRORS"
        },
        {
          "name": "StartingUrlsCrawlHttpErrors",
          "description": "Indicates that some of the starting web urls returned HTTP errors during the scan.",
          "value": "STARTING_URLS_CRAWL_HTTP_ERRORS"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanRunErrorTraceResponse": {
      "description": "Output only. Defines an error trace message for a ScanRun.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Indicates the error reason code."
        },
        "mostCommonHttpErrorCode": {
          "type": "integer",
          "description": "If the scan encounters TOO_MANY_HTTP_ERRORS, this field indicates the most common HTTP error code, if such is available. For example, if this code is 404, the scan has encountered too many NOT_FOUND responses."
        },
        "scanConfigError": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanConfigErrorResponse",
          "description": "If the scan encounters SCAN_CONFIG_ISSUE error, this field has the error message encountered during scan configuration validation that is performed before each scan run."
        }
      },
      "type": "object",
      "required": [
        "code",
        "mostCommonHttpErrorCode",
        "scanConfigError"
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanRunExecutionState": {
      "description": "The execution state of the ScanRun.",
      "type": "string",
      "enum": [
        {
          "name": "ExecutionStateUnspecified",
          "description": "Represents an invalid state caused by internal server error. This value should never be returned.",
          "value": "EXECUTION_STATE_UNSPECIFIED"
        },
        {
          "name": "Queued",
          "description": "The scan is waiting in the queue.",
          "value": "QUEUED"
        },
        {
          "name": "Scanning",
          "description": "The scan is in progress.",
          "value": "SCANNING"
        },
        {
          "name": "Finished",
          "description": "The scan is either finished or stopped by user.",
          "value": "FINISHED"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanRunResponse": {
      "description": "A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "The time at which the ScanRun reached termination state - that the ScanRun is either finished or stopped by user."
        },
        "errorTrace": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunErrorTraceResponse",
          "description": "If result_state is an ERROR, this field provides the primary reason for scan's termination and more details, if such are available."
        },
        "executionState": {
          "type": "string",
          "description": "The execution state of the ScanRun."
        },
        "hasVulnerabilities": {
          "type": "boolean",
          "description": "Whether the scan run has found any vulnerabilities."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanRun. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'. The ScanRun IDs are generated by the system."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The percentage of total completion ranging from 0 to 100. If the scan is in queue, the value is 0. If the scan is running, the value ranges from 0 to 100. If the scan is finished, the value is 100."
        },
        "resultState": {
          "type": "string",
          "description": "The result state of the ScanRun. This field is only available after the execution state reaches \"FINISHED\"."
        },
        "startTime": {
          "type": "string",
          "description": "The time at which the ScanRun started."
        },
        "urlsCrawledCount": {
          "type": "string",
          "description": "The number of URLs crawled during this ScanRun. If the scan is in progress, the value represents the number of URLs crawled up to now."
        },
        "urlsTestedCount": {
          "type": "string",
          "description": "The number of URLs tested during this ScanRun. If the scan is in progress, the value represents the number of URLs tested up to now. The number of URLs tested is usually larger than the number URLS crawled because typically a crawled URL is tested with multiple test payloads."
        },
        "warningTraces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunWarningTraceResponse"
          },
          "description": "A list of warnings, if such are encountered during this scan run."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "errorTrace",
        "executionState",
        "hasVulnerabilities",
        "name",
        "progressPercent",
        "resultState",
        "startTime",
        "urlsCrawledCount",
        "urlsTestedCount",
        "warningTraces"
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanRunResultState": {
      "description": "The result state of the ScanRun. This field is only available after the execution state reaches \"FINISHED\".",
      "type": "string",
      "enum": [
        {
          "name": "ResultStateUnspecified",
          "description": "Default value. This value is returned when the ScanRun is not yet finished.",
          "value": "RESULT_STATE_UNSPECIFIED"
        },
        {
          "name": "Success",
          "description": "The scan finished without errors.",
          "value": "SUCCESS"
        },
        {
          "name": "Error",
          "description": "The scan finished with errors.",
          "value": "ERROR"
        },
        {
          "name": "Killed",
          "description": "The scan was terminated by user.",
          "value": "KILLED"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanRunWarningTrace": {
      "description": "Output only. Defines a warning trace message for ScanRun. Warning traces provide customers with useful information that helps make the scanning process more effective.",
      "properties": {
        "code": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunWarningTraceCode",
          "description": "Indicates the warning code."
        }
      },
      "type": "object"
    },
    "google-native:websecurityscanner/v1beta:ScanRunWarningTraceCode": {
      "description": "Indicates the warning code.",
      "type": "string",
      "enum": [
        {
          "name": "CodeUnspecified",
          "description": "Default value is never used.",
          "value": "CODE_UNSPECIFIED"
        },
        {
          "name": "InsufficientCrawlResults",
          "description": "Indicates that a scan discovered an unexpectedly low number of URLs. This is sometimes caused by complex navigation features or by using a single URL for numerous pages.",
          "value": "INSUFFICIENT_CRAWL_RESULTS"
        },
        {
          "name": "TooManyCrawlResults",
          "description": "Indicates that a scan discovered too many URLs to test, or excessive redundant URLs.",
          "value": "TOO_MANY_CRAWL_RESULTS"
        },
        {
          "name": "TooManyFuzzTasks",
          "description": "Indicates that too many tests have been generated for the scan. Customer should try reducing the number of starting URLs, increasing the QPS rate, or narrowing down the scope of the scan using the excluded patterns.",
          "value": "TOO_MANY_FUZZ_TASKS"
        },
        {
          "name": "BlockedByIap",
          "description": "Indicates that a scan is blocked by IAP.",
          "value": "BLOCKED_BY_IAP"
        },
        {
          "name": "NoStartingUrlFoundForManagedScan",
          "description": "Indicates that no seed is found for a scan",
          "value": "NO_STARTING_URL_FOUND_FOR_MANAGED_SCAN"
        }
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanRunWarningTraceResponse": {
      "description": "Output only. Defines a warning trace message for ScanRun. Warning traces provide customers with useful information that helps make the scanning process more effective.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Indicates the warning code."
        }
      },
      "type": "object",
      "required": [
        "code"
      ]
    },
    "google-native:websecurityscanner/v1beta:Schedule": {
      "description": "Scan schedule configuration.",
      "properties": {
        "intervalDurationDays": {
          "type": "integer",
          "description": "The duration of time between executions in days."
        },
        "scheduleTime": {
          "type": "string",
          "description": "A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately."
        }
      },
      "type": "object",
      "required": [
        "intervalDurationDays"
      ]
    },
    "google-native:websecurityscanner/v1beta:ScheduleResponse": {
      "description": "Scan schedule configuration.",
      "properties": {
        "intervalDurationDays": {
          "type": "integer",
          "description": "The duration of time between executions in days."
        },
        "scheduleTime": {
          "type": "string",
          "description": "A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately."
        }
      },
      "type": "object",
      "required": [
        "intervalDurationDays",
        "scheduleTime"
      ]
    },
    "google-native:workflowexecutions/v1:ErrorResponse": {
      "description": "Error describes why the execution was abnormally terminated.",
      "properties": {
        "context": {
          "type": "string",
          "description": "Human-readable stack trace string."
        },
        "payload": {
          "type": "string",
          "description": "Error message and data returned represented as a JSON string."
        },
        "stackTrace": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1:StackTraceResponse",
          "description": "Stack trace with detailed information of where error was generated."
        }
      },
      "type": "object",
      "required": [
        "context",
        "payload",
        "stackTrace"
      ]
    },
    "google-native:workflowexecutions/v1:ExecutionCallLogLevel": {
      "description": "The call logging level associated to this execution.",
      "type": "string",
      "enum": [
        {
          "name": "CallLogLevelUnspecified",
          "description": "No call logging level specified.",
          "value": "CALL_LOG_LEVEL_UNSPECIFIED"
        },
        {
          "name": "LogAllCalls",
          "description": "Log all call steps within workflows, all call returns, and all exceptions raised.",
          "value": "LOG_ALL_CALLS"
        },
        {
          "name": "LogErrorsOnly",
          "description": "Log only exceptions that are raised from call steps within workflows.",
          "value": "LOG_ERRORS_ONLY"
        },
        {
          "name": "LogNone",
          "description": "Explicitly log nothing.",
          "value": "LOG_NONE"
        }
      ]
    },
    "google-native:workflowexecutions/v1:PositionResponse": {
      "description": "Position contains source position information about the stack trace element such as line number, column number and length of the code block in bytes.",
      "properties": {
        "column": {
          "type": "string",
          "description": "The source code column position (of the line) the current instruction was generated from."
        },
        "length": {
          "type": "string",
          "description": "The number of bytes of source code making up this stack trace element."
        },
        "line": {
          "type": "string",
          "description": "The source code line number the current instruction was generated from."
        }
      },
      "type": "object",
      "required": [
        "column",
        "length",
        "line"
      ]
    },
    "google-native:workflowexecutions/v1:StackTraceElementResponse": {
      "description": "A single stack element (frame) where an error occurred.",
      "properties": {
        "position": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1:PositionResponse",
          "description": "The source position information of the stack trace element."
        },
        "routine": {
          "type": "string",
          "description": "The routine where the error occurred."
        },
        "step": {
          "type": "string",
          "description": "The step the error occurred at."
        }
      },
      "type": "object",
      "required": [
        "position",
        "routine",
        "step"
      ]
    },
    "google-native:workflowexecutions/v1:StackTraceResponse": {
      "description": "A collection of stack elements (frames) where an error occurred.",
      "properties": {
        "elements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1:StackTraceElementResponse"
          },
          "description": "An array of stack elements."
        }
      },
      "type": "object",
      "required": [
        "elements"
      ]
    },
    "google-native:workflowexecutions/v1:StateErrorResponse": {
      "description": "Describes an error related to the current state of the Execution resource.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Provides specifics about the error."
        },
        "type": {
          "type": "string",
          "description": "The type of this state error."
        }
      },
      "type": "object",
      "required": [
        "details",
        "type"
      ]
    },
    "google-native:workflowexecutions/v1:StatusResponse": {
      "description": "Represents the current status of this execution.",
      "properties": {
        "currentSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1:StepResponse"
          },
          "description": "A list of currently executing or last executed step names for the workflow execution currently running. If the workflow has succeeded or failed, this is the last attempted or executed step. Presently, if the current step is inside a subworkflow, the list only includes that step. In the future, the list will contain items for each step in the call stack, starting with the outermost step in the `main` subworkflow, and ending with the most deeply nested step."
        }
      },
      "type": "object",
      "required": [
        "currentSteps"
      ]
    },
    "google-native:workflowexecutions/v1:StepResponse": {
      "description": "Represents a step of the workflow this execution is running.",
      "properties": {
        "routine": {
          "type": "string",
          "description": "Name of a routine within the workflow."
        },
        "step": {
          "type": "string",
          "description": "Name of a step within the routine."
        }
      },
      "type": "object",
      "required": [
        "routine",
        "step"
      ]
    },
    "google-native:workflowexecutions/v1beta:ErrorResponse": {
      "description": "Error describes why the execution was abnormally terminated.",
      "properties": {
        "context": {
          "type": "string",
          "description": "Human-readable stack trace string."
        },
        "payload": {
          "type": "string",
          "description": "Error message and data returned represented as a JSON string."
        },
        "stackTrace": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:StackTraceResponse",
          "description": "Stack trace with detailed information of where error was generated."
        }
      },
      "type": "object",
      "required": [
        "context",
        "payload",
        "stackTrace"
      ]
    },
    "google-native:workflowexecutions/v1beta:ExecutionCallLogLevel": {
      "description": "The call logging level associated to this execution.",
      "type": "string",
      "enum": [
        {
          "name": "CallLogLevelUnspecified",
          "description": "No call logging level specified.",
          "value": "CALL_LOG_LEVEL_UNSPECIFIED"
        },
        {
          "name": "LogAllCalls",
          "description": "Log all call steps within workflows, all call returns, and all exceptions raised.",
          "value": "LOG_ALL_CALLS"
        },
        {
          "name": "LogErrorsOnly",
          "description": "Log only exceptions that are raised from call steps within workflows.",
          "value": "LOG_ERRORS_ONLY"
        }
      ]
    },
    "google-native:workflowexecutions/v1beta:PositionResponse": {
      "description": "Position contains source position information about the stack trace element such as line number, column number and length of the code block in bytes.",
      "properties": {
        "column": {
          "type": "string",
          "description": "The source code column position (of the line) the current instruction was generated from."
        },
        "length": {
          "type": "string",
          "description": "The number of bytes of source code making up this stack trace element."
        },
        "line": {
          "type": "string",
          "description": "The source code line number the current instruction was generated from."
        }
      },
      "type": "object",
      "required": [
        "column",
        "length",
        "line"
      ]
    },
    "google-native:workflowexecutions/v1beta:StackTraceElementResponse": {
      "description": "A single stack element (frame) where an error occurred.",
      "properties": {
        "position": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:PositionResponse",
          "description": "The source position information of the stack trace element."
        },
        "routine": {
          "type": "string",
          "description": "The routine where the error occurred."
        },
        "step": {
          "type": "string",
          "description": "The step the error occurred at."
        }
      },
      "type": "object",
      "required": [
        "position",
        "routine",
        "step"
      ]
    },
    "google-native:workflowexecutions/v1beta:StackTraceResponse": {
      "description": "A collection of stack elements (frames) where an error occurred.",
      "properties": {
        "elements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:StackTraceElementResponse"
          },
          "description": "An array of stack elements."
        }
      },
      "type": "object",
      "required": [
        "elements"
      ]
    },
    "google-native:workflowexecutions/v1beta:StatusResponse": {
      "description": "Represents the current status of this execution.",
      "properties": {
        "currentSteps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:StepResponse"
          },
          "description": "A list of currently executing or last executed step names for the workflow execution currently running. If the workflow has succeeded or failed, this is the last attempted or executed step. Presently, if the current step is inside a subworkflow, the list only includes that step. In the future, the list will contain items for each step in the call stack, starting with the outermost step in the `main` subworkflow, and ending with the most deeply nested step."
        }
      },
      "type": "object",
      "required": [
        "currentSteps"
      ]
    },
    "google-native:workflowexecutions/v1beta:StepResponse": {
      "description": "Represents a step of the workflow this execution is running.",
      "properties": {
        "routine": {
          "type": "string",
          "description": "Name of a routine within the workflow."
        },
        "step": {
          "type": "string",
          "description": "Name of a step within the routine."
        }
      },
      "type": "object",
      "required": [
        "routine",
        "step"
      ]
    },
    "google-native:workflows/v1:StateErrorResponse": {
      "description": "Describes an error related to the current state of the workflow.",
      "properties": {
        "details": {
          "type": "string",
          "description": "Provides specifics about the error."
        },
        "type": {
          "type": "string",
          "description": "The type of this state error."
        }
      },
      "type": "object",
      "required": [
        "details",
        "type"
      ]
    },
    "google-native:workflows/v1:WorkflowCallLogLevel": {
      "description": "Optional. Describes the level of platform logging to apply to calls and call responses during executions of this workflow. If both the workflow and the execution specify a logging level, the execution level takes precedence.",
      "type": "string",
      "enum": [
        {
          "name": "CallLogLevelUnspecified",
          "description": "No call logging level specified.",
          "value": "CALL_LOG_LEVEL_UNSPECIFIED"
        },
        {
          "name": "LogAllCalls",
          "description": "Log all call steps within workflows, all call returns, and all exceptions raised.",
          "value": "LOG_ALL_CALLS"
        },
        {
          "name": "LogErrorsOnly",
          "description": "Log only exceptions that are raised from call steps within workflows.",
          "value": "LOG_ERRORS_ONLY"
        },
        {
          "name": "LogNone",
          "description": "Explicitly log nothing.",
          "value": "LOG_NONE"
        }
      ]
    },
    "google-native:workloadmanager/v1:GceInstanceFilter": {
      "description": "Message describing compute engine instance filter",
      "properties": {
        "serviceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Service account of compute engine"
        }
      },
      "type": "object"
    },
    "google-native:workloadmanager/v1:GceInstanceFilterResponse": {
      "description": "Message describing compute engine instance filter",
      "properties": {
        "serviceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Service account of compute engine"
        }
      },
      "type": "object",
      "required": [
        "serviceAccounts"
      ]
    },
    "google-native:workloadmanager/v1:ResourceFilter": {
      "description": "Message describing resource filters",
      "properties": {
        "gceInstanceFilter": {
          "$ref": "#/types/google-native:workloadmanager%2Fv1:GceInstanceFilter",
          "description": "Filter compute engine resource"
        },
        "inclusionLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The label used for filter resource"
        },
        "resourceIdPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id pattern for filter resource"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The scopes of evaluation resource"
        }
      },
      "type": "object"
    },
    "google-native:workloadmanager/v1:ResourceFilterResponse": {
      "description": "Message describing resource filters",
      "properties": {
        "gceInstanceFilter": {
          "$ref": "#/types/google-native:workloadmanager%2Fv1:GceInstanceFilterResponse",
          "description": "Filter compute engine resource"
        },
        "inclusionLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The label used for filter resource"
        },
        "resourceIdPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id pattern for filter resource"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The scopes of evaluation resource"
        }
      },
      "type": "object",
      "required": [
        "gceInstanceFilter",
        "inclusionLabels",
        "resourceIdPatterns",
        "scopes"
      ]
    },
    "google-native:workloadmanager/v1:ResourceStatusResponse": {
      "description": "Message describing resource status",
      "properties": {
        "rulesNewerVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Historical: Used before 2023-05-22 the new version of rule id if exists"
        },
        "state": {
          "type": "string",
          "description": "State of the resource"
        }
      },
      "type": "object",
      "required": [
        "rulesNewerVersions",
        "state"
      ]
    },
    "google-native:workstations/v1:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:workstations/v1:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:workstations%2Fv1:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:workstations/v1:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:workstations/v1:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:workstations%2Fv1:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:workstations%2Fv1:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:workstations/v1:Container": {
      "description": "A Docker container.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Arguments passed to the entrypoint."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If set, overrides the default ENTRYPOINT specified by the image."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Environment variables passed to the container's entrypoint."
        },
        "image": {
          "type": "string",
          "description": "Optional. A Docker container image that defines a custom environment. Cloud Workstations provides a number of [preconfigured images](https://cloud.google.com/workstations/docs/preconfigured-base-images), but you can create your own [custom container images](https://cloud.google.com/workstations/docs/custom-container-images). If using a private image, the `host.gceInstance.serviceAccount` field must be specified in the workstation configuration. If using a custom container image, the service account must have [Artifact Registry Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles) permission to pull the specified image. Otherwise, the image must be publicly accessible."
        },
        "runAsUser": {
          "type": "integer",
          "description": "Optional. If set, overrides the USER specified in the image with the given uid."
        },
        "workingDir": {
          "type": "string",
          "description": "Optional. If set, overrides the default DIR specified by the image."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:ContainerResponse": {
      "description": "A Docker container.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Arguments passed to the entrypoint."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If set, overrides the default ENTRYPOINT specified by the image."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Environment variables passed to the container's entrypoint."
        },
        "image": {
          "type": "string",
          "description": "Optional. A Docker container image that defines a custom environment. Cloud Workstations provides a number of [preconfigured images](https://cloud.google.com/workstations/docs/preconfigured-base-images), but you can create your own [custom container images](https://cloud.google.com/workstations/docs/custom-container-images). If using a private image, the `host.gceInstance.serviceAccount` field must be specified in the workstation configuration. If using a custom container image, the service account must have [Artifact Registry Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles) permission to pull the specified image. Otherwise, the image must be publicly accessible."
        },
        "runAsUser": {
          "type": "integer",
          "description": "Optional. If set, overrides the USER specified in the image with the given uid."
        },
        "workingDir": {
          "type": "string",
          "description": "Optional. If set, overrides the default DIR specified by the image."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "env",
        "image",
        "runAsUser",
        "workingDir"
      ]
    },
    "google-native:workstations/v1:CustomerEncryptionKey": {
      "description": "A customer-managed encryption key (CMEK) for the Compute Engine resources of the associated workstation configuration. Specify the name of your Cloud KMS encryption key and the default service account. We recommend that you use a separate service account and follow [Cloud KMS best practices](https://cloud.google.com/kms/docs/separation-of-duties).",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "Immutable. The name of the Google Cloud KMS encryption key. For example, `\"projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME\"`. The key must be in the same region as the workstation configuration."
        },
        "kmsKeyServiceAccount": {
          "type": "string",
          "description": "Immutable. The service account to use with the specified KMS key. We recommend that you use a separate service account and follow KMS best practices. For more information, see [Separation of duties](https://cloud.google.com/kms/docs/separation-of-duties) and `gcloud kms keys add-iam-policy-binding` [`--member`](https://cloud.google.com/sdk/gcloud/reference/kms/keys/add-iam-policy-binding#--member)."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:CustomerEncryptionKeyResponse": {
      "description": "A customer-managed encryption key (CMEK) for the Compute Engine resources of the associated workstation configuration. Specify the name of your Cloud KMS encryption key and the default service account. We recommend that you use a separate service account and follow [Cloud KMS best practices](https://cloud.google.com/kms/docs/separation-of-duties).",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "Immutable. The name of the Google Cloud KMS encryption key. For example, `\"projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME\"`. The key must be in the same region as the workstation configuration."
        },
        "kmsKeyServiceAccount": {
          "type": "string",
          "description": "Immutable. The service account to use with the specified KMS key. We recommend that you use a separate service account and follow KMS best practices. For more information, see [Separation of duties](https://cloud.google.com/kms/docs/separation-of-duties) and `gcloud kms keys add-iam-policy-binding` [`--member`](https://cloud.google.com/sdk/gcloud/reference/kms/keys/add-iam-policy-binding#--member)."
        }
      },
      "type": "object",
      "required": [
        "kmsKey",
        "kmsKeyServiceAccount"
      ]
    },
    "google-native:workstations/v1:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:workstations/v1:GceConfidentialInstanceConfig": {
      "description": "A set of Compute Engine Confidential VM instance options.",
      "properties": {
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Optional. Whether the instance has confidential compute enabled."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:GceConfidentialInstanceConfigResponse": {
      "description": "A set of Compute Engine Confidential VM instance options.",
      "properties": {
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Optional. Whether the instance has confidential compute enabled."
        }
      },
      "type": "object",
      "required": [
        "enableConfidentialCompute"
      ]
    },
    "google-native:workstations/v1:GceInstance": {
      "description": "A runtime using a Compute Engine instance.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Optional. The size of the boot disk for the VM in gigabytes (GB). The minimum boot disk size is `30` GB. Defaults to `50` GB."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceConfidentialInstanceConfig",
          "description": "Optional. A set of Compute Engine Confidential VM instance options."
        },
        "disablePublicIpAddresses": {
          "type": "boolean",
          "description": "Optional. When set to true, disables public IP addresses for VMs. If you disable public IP addresses, you must set up Private Google Access or Cloud NAT on your network. If you use Private Google Access and you use `private.googleapis.com` or `restricted.googleapis.com` for Container Registry and Artifact Registry, make sure that you set up DNS records for domains `*.gcr.io` and `*.pkg.dev`. Defaults to false (VMs have public IP addresses)."
        },
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Optional. Whether to enable nested virtualization on Cloud Workstations VMs created under this workstation configuration. Nested virtualization lets you run virtual machine (VM) instances inside your workstation. Before enabling nested virtualization, consider the following important considerations. Cloud Workstations instances are subject to the [same restrictions as Compute Engine instances](https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions): * **Organization policy**: projects, folders, or organizations may be restricted from creating nested VMs if the **Disable VM nested virtualization** constraint is enforced in the organization policy. For more information, see the Compute Engine section, [Checking whether nested virtualization is allowed](https://cloud.google.com/compute/docs/instances/nested-virtualization/managing-constraint#checking_whether_nested_virtualization_is_allowed). * **Performance**: nested VMs might experience a 10% or greater decrease in performance for workloads that are CPU-bound and possibly greater than a 10% decrease for workloads that are input/output bound. * **Machine Type**: nested virtualization can only be enabled on workstation configurations that specify a machine_type in the N1 or N2 machine series. * **GPUs**: nested virtualization may not be enabled on workstation configurations with accelerators. * **Operating System**: Because [Container-Optimized OS](https://cloud.google.com/compute/docs/images/os-details#container-optimized_os_cos) does not support nested virtualization, when nested virtualization is enabled, the underlying Compute Engine VM instances boot from an [Ubuntu LTS](https://cloud.google.com/compute/docs/images/os-details#ubuntu_lts) image."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The type of machine to use for VM instances—for example, `\"e2-standard-4\"`. For more information about machine types that Cloud Workstations supports, see the list of [available machine types](https://cloud.google.com/workstations/docs/available-machine-types)."
        },
        "poolSize": {
          "type": "integer",
          "description": "Optional. The number of VMs that the system should keep idle so that new workstations can be started quickly for new users. Defaults to `0` in the API."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The email address of the service account for Cloud Workstations VMs created with this configuration. When specified, be sure that the service account has `logginglogEntries.create` permission on the project so it can write logs out to Cloud Logging. If using a custom container image, the service account must have [Artifact Registry Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles) permission to pull the specified image. If you as the administrator want to be able to `ssh` into the underlying VM, you need to set this value to a service account for which you have the `iam.serviceAccounts.actAs` permission. Conversely, if you don't want anyone to be able to `ssh` into the underlying VM, use a service account where no one has that permission. If not set, VMs run with a service account provided by the Cloud Workstations service, and the image must be publicly accessible."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have `iam.serviceAccounts.actAs` on the service account."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceShieldedInstanceConfig",
          "description": "Optional. A set of Compute Engine Shielded instance options."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Network tags to add to the Compute Engine VMs backing the workstations. This option applies [network tags](https://cloud.google.com/vpc/docs/add-remove-network-tags) to VMs created with this configuration. These network tags enable the creation of [firewall rules](https://cloud.google.com/workstations/docs/configure-firewall-rules)."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:GceInstanceResponse": {
      "description": "A runtime using a Compute Engine instance.",
      "properties": {
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Optional. The size of the boot disk for the VM in gigabytes (GB). The minimum boot disk size is `30` GB. Defaults to `50` GB."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceConfidentialInstanceConfigResponse",
          "description": "Optional. A set of Compute Engine Confidential VM instance options."
        },
        "disablePublicIpAddresses": {
          "type": "boolean",
          "description": "Optional. When set to true, disables public IP addresses for VMs. If you disable public IP addresses, you must set up Private Google Access or Cloud NAT on your network. If you use Private Google Access and you use `private.googleapis.com` or `restricted.googleapis.com` for Container Registry and Artifact Registry, make sure that you set up DNS records for domains `*.gcr.io` and `*.pkg.dev`. Defaults to false (VMs have public IP addresses)."
        },
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Optional. Whether to enable nested virtualization on Cloud Workstations VMs created under this workstation configuration. Nested virtualization lets you run virtual machine (VM) instances inside your workstation. Before enabling nested virtualization, consider the following important considerations. Cloud Workstations instances are subject to the [same restrictions as Compute Engine instances](https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions): * **Organization policy**: projects, folders, or organizations may be restricted from creating nested VMs if the **Disable VM nested virtualization** constraint is enforced in the organization policy. For more information, see the Compute Engine section, [Checking whether nested virtualization is allowed](https://cloud.google.com/compute/docs/instances/nested-virtualization/managing-constraint#checking_whether_nested_virtualization_is_allowed). * **Performance**: nested VMs might experience a 10% or greater decrease in performance for workloads that are CPU-bound and possibly greater than a 10% decrease for workloads that are input/output bound. * **Machine Type**: nested virtualization can only be enabled on workstation configurations that specify a machine_type in the N1 or N2 machine series. * **GPUs**: nested virtualization may not be enabled on workstation configurations with accelerators. * **Operating System**: Because [Container-Optimized OS](https://cloud.google.com/compute/docs/images/os-details#container-optimized_os_cos) does not support nested virtualization, when nested virtualization is enabled, the underlying Compute Engine VM instances boot from an [Ubuntu LTS](https://cloud.google.com/compute/docs/images/os-details#ubuntu_lts) image."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The type of machine to use for VM instances—for example, `\"e2-standard-4\"`. For more information about machine types that Cloud Workstations supports, see the list of [available machine types](https://cloud.google.com/workstations/docs/available-machine-types)."
        },
        "poolSize": {
          "type": "integer",
          "description": "Optional. The number of VMs that the system should keep idle so that new workstations can be started quickly for new users. Defaults to `0` in the API."
        },
        "pooledInstances": {
          "type": "integer",
          "description": "Number of instances currently available in the pool for faster workstation startup."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The email address of the service account for Cloud Workstations VMs created with this configuration. When specified, be sure that the service account has `logginglogEntries.create` permission on the project so it can write logs out to Cloud Logging. If using a custom container image, the service account must have [Artifact Registry Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles) permission to pull the specified image. If you as the administrator want to be able to `ssh` into the underlying VM, you need to set this value to a service account for which you have the `iam.serviceAccounts.actAs` permission. Conversely, if you don't want anyone to be able to `ssh` into the underlying VM, use a service account where no one has that permission. If not set, VMs run with a service account provided by the Cloud Workstations service, and the image must be publicly accessible."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have `iam.serviceAccounts.actAs` on the service account."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceShieldedInstanceConfigResponse",
          "description": "Optional. A set of Compute Engine Shielded instance options."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Network tags to add to the Compute Engine VMs backing the workstations. This option applies [network tags](https://cloud.google.com/vpc/docs/add-remove-network-tags) to VMs created with this configuration. These network tags enable the creation of [firewall rules](https://cloud.google.com/workstations/docs/configure-firewall-rules)."
        }
      },
      "type": "object",
      "required": [
        "bootDiskSizeGb",
        "confidentialInstanceConfig",
        "disablePublicIpAddresses",
        "enableNestedVirtualization",
        "machineType",
        "poolSize",
        "pooledInstances",
        "serviceAccount",
        "serviceAccountScopes",
        "shieldedInstanceConfig",
        "tags"
      ]
    },
    "google-native:workstations/v1:GceRegionalPersistentDisk": {
      "description": "A PersistentDirectory backed by a Compute Engine regional persistent disk. The persistent_directories field is repeated, but it may contain only one entry. It creates a [persistent disk](https://cloud.google.com/compute/docs/disks/persistent-disks) that mounts to the workstation VM at `/home` when the session starts and detaches when the session ends. If this field is empty, workstations created with this configuration do not have a persistent home directory.",
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Optional. The [type of the persistent disk](https://cloud.google.com/compute/docs/disks#disk-types) for the home directory. Defaults to `\"pd-standard\"`."
        },
        "fsType": {
          "type": "string",
          "description": "Optional. Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if source_snapshot is set. Defaults to `\"ext4\"`."
        },
        "reclaimPolicy": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceRegionalPersistentDiskReclaimPolicy",
          "description": "Optional. Whether the persistent disk should be deleted when the workstation is deleted. Valid values are `DELETE` and `RETAIN`. Defaults to `DELETE`."
        },
        "sizeGb": {
          "type": "integer",
          "description": "Optional. The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if source_snapshot is set. Valid values are `10`, `50`, `100`, `200`, `500`, or `1000`. Defaults to `200`. If less than `200` GB, the disk_type must be `\"pd-balanced\"` or `\"pd-ssd\"`."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "Optional. Name of the snapshot to use as the source for the disk. If set, size_gb and fs_type must be empty."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:GceRegionalPersistentDiskReclaimPolicy": {
      "description": "Optional. Whether the persistent disk should be deleted when the workstation is deleted. Valid values are `DELETE` and `RETAIN`. Defaults to `DELETE`.",
      "type": "string",
      "enum": [
        {
          "name": "ReclaimPolicyUnspecified",
          "description": "Do not use.",
          "value": "RECLAIM_POLICY_UNSPECIFIED"
        },
        {
          "name": "Delete",
          "description": "Delete the persistent disk when deleting the workstation.",
          "value": "DELETE"
        },
        {
          "name": "Retain",
          "description": "Keep the persistent disk when deleting the workstation. An administrator must manually delete the disk.",
          "value": "RETAIN"
        }
      ]
    },
    "google-native:workstations/v1:GceRegionalPersistentDiskResponse": {
      "description": "A PersistentDirectory backed by a Compute Engine regional persistent disk. The persistent_directories field is repeated, but it may contain only one entry. It creates a [persistent disk](https://cloud.google.com/compute/docs/disks/persistent-disks) that mounts to the workstation VM at `/home` when the session starts and detaches when the session ends. If this field is empty, workstations created with this configuration do not have a persistent home directory.",
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Optional. The [type of the persistent disk](https://cloud.google.com/compute/docs/disks#disk-types) for the home directory. Defaults to `\"pd-standard\"`."
        },
        "fsType": {
          "type": "string",
          "description": "Optional. Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if source_snapshot is set. Defaults to `\"ext4\"`."
        },
        "reclaimPolicy": {
          "type": "string",
          "description": "Optional. Whether the persistent disk should be deleted when the workstation is deleted. Valid values are `DELETE` and `RETAIN`. Defaults to `DELETE`."
        },
        "sizeGb": {
          "type": "integer",
          "description": "Optional. The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if source_snapshot is set. Valid values are `10`, `50`, `100`, `200`, `500`, or `1000`. Defaults to `200`. If less than `200` GB, the disk_type must be `\"pd-balanced\"` or `\"pd-ssd\"`."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "Optional. Name of the snapshot to use as the source for the disk. If set, size_gb and fs_type must be empty."
        }
      },
      "type": "object",
      "required": [
        "diskType",
        "fsType",
        "reclaimPolicy",
        "sizeGb",
        "sourceSnapshot"
      ]
    },
    "google-native:workstations/v1:GceShieldedInstanceConfig": {
      "description": "A set of Compute Engine Shielded instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Whether the instance has integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Whether the instance has Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Whether the instance has the vTPM enabled."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:GceShieldedInstanceConfigResponse": {
      "description": "A set of Compute Engine Shielded instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Whether the instance has integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Whether the instance has Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Whether the instance has the vTPM enabled."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:workstations/v1:Host": {
      "description": "Runtime host for a workstation.",
      "properties": {
        "gceInstance": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceInstance",
          "description": "Specifies a Compute Engine instance as the host."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:HostResponse": {
      "description": "Runtime host for a workstation.",
      "properties": {
        "gceInstance": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceInstanceResponse",
          "description": "Specifies a Compute Engine instance as the host."
        }
      },
      "type": "object",
      "required": [
        "gceInstance"
      ]
    },
    "google-native:workstations/v1:PersistentDirectory": {
      "description": "A directory to persist across workstation sessions.",
      "properties": {
        "gcePd": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceRegionalPersistentDisk",
          "description": "A PersistentDirectory backed by a Compute Engine persistent disk."
        },
        "mountPath": {
          "type": "string",
          "description": "Optional. Location of this directory in the running workstation."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:PersistentDirectoryResponse": {
      "description": "A directory to persist across workstation sessions.",
      "properties": {
        "gcePd": {
          "$ref": "#/types/google-native:workstations%2Fv1:GceRegionalPersistentDiskResponse",
          "description": "A PersistentDirectory backed by a Compute Engine persistent disk."
        },
        "mountPath": {
          "type": "string",
          "description": "Optional. Location of this directory in the running workstation."
        }
      },
      "type": "object",
      "required": [
        "gcePd",
        "mountPath"
      ]
    },
    "google-native:workstations/v1:PrivateClusterConfig": {
      "description": "Configuration options for private workstation clusters.",
      "properties": {
        "allowedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional projects that are allowed to attach to the workstation cluster's service attachment. By default, the workstation cluster's project and the VPC host project (if different) are allowed."
        },
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Immutable. Whether Workstations endpoint is private."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:PrivateClusterConfigResponse": {
      "description": "Configuration options for private workstation clusters.",
      "properties": {
        "allowedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional projects that are allowed to attach to the workstation cluster's service attachment. By default, the workstation cluster's project and the VPC host project (if different) are allowed."
        },
        "clusterHostname": {
          "type": "string",
          "description": "Hostname for the workstation cluster. This field will be populated only when private endpoint is enabled. To access workstations in the workstation cluster, create a new DNS zone mapping this domain name to an internal IP address and a forwarding rule mapping that address to the service attachment."
        },
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Immutable. Whether Workstations endpoint is private."
        },
        "serviceAttachmentUri": {
          "type": "string",
          "description": "Service attachment URI for the workstation cluster. The service attachemnt is created when private endpoint is enabled. To access workstations in the workstation cluster, configure access to the managed service using [Private Service Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-services)."
        }
      },
      "type": "object",
      "required": [
        "allowedProjects",
        "clusterHostname",
        "enablePrivateEndpoint",
        "serviceAttachmentUri"
      ]
    },
    "google-native:workstations/v1:ReadinessCheck": {
      "description": "A readiness check to be performed on a workstation.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. Path to which the request should be sent."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Port to which the request should be sent."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1:ReadinessCheckResponse": {
      "description": "A readiness check to be performed on a workstation.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. Path to which the request should be sent."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Port to which the request should be sent."
        }
      },
      "type": "object",
      "required": [
        "path",
        "port"
      ]
    },
    "google-native:workstations/v1:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    },
    "google-native:workstations/v1beta:Accelerator": {
      "description": "An accelerator card attached to the instance.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. Number of accelerator cards exposed to the instance."
        },
        "type": {
          "type": "string",
          "description": "Optional. Type of accelerator resource to attach to the instance, for example, `\"nvidia-tesla-p100\"`."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:AcceleratorResponse": {
      "description": "An accelerator card attached to the instance.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "Optional. Number of accelerator cards exposed to the instance."
        },
        "type": {
          "type": "string",
          "description": "Optional. Type of accelerator resource to attach to the instance, for example, `\"nvidia-tesla-p100\"`."
        }
      },
      "type": "object",
      "required": [
        "count",
        "type"
      ]
    },
    "google-native:workstations/v1beta:AuditConfig": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:AuditLogConfig"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:AuditConfigResponse": {
      "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
      "properties": {
        "auditLogConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:AuditLogConfigResponse"
          },
          "description": "The configuration for logging of each type of permission."
        },
        "service": {
          "type": "string",
          "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
        }
      },
      "type": "object",
      "required": [
        "auditLogConfigs",
        "service"
      ]
    },
    "google-native:workstations/v1beta:AuditLogConfig": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:AuditLogConfigLogType",
          "description": "The log type that this config enables."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:AuditLogConfigLogType": {
      "description": "The log type that this config enables.",
      "type": "string",
      "enum": [
        {
          "name": "LogTypeUnspecified",
          "description": "Default case. Should never be this.",
          "value": "LOG_TYPE_UNSPECIFIED"
        },
        {
          "name": "AdminRead",
          "description": "Admin reads. Example: CloudIAM getIamPolicy",
          "value": "ADMIN_READ"
        },
        {
          "name": "DataWrite",
          "description": "Data writes. Example: CloudSQL Users create",
          "value": "DATA_WRITE"
        },
        {
          "name": "DataRead",
          "description": "Data reads. Example: CloudSQL Users list",
          "value": "DATA_READ"
        }
      ]
    },
    "google-native:workstations/v1beta:AuditLogConfigResponse": {
      "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
      "properties": {
        "exemptedMembers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members."
        },
        "logType": {
          "type": "string",
          "description": "The log type that this config enables."
        }
      },
      "type": "object",
      "required": [
        "exemptedMembers",
        "logType"
      ]
    },
    "google-native:workstations/v1beta:Binding": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:Expr",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:BindingResponse": {
      "description": "Associates `members`, or principals, with a `role`.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:ExprResponse",
          "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "condition",
        "members",
        "role"
      ]
    },
    "google-native:workstations/v1beta:Container": {
      "description": "A Docker container.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Arguments passed to the entrypoint."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If set, overrides the default ENTRYPOINT specified by the image."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Environment variables passed to the container's entrypoint."
        },
        "image": {
          "type": "string",
          "description": "Optional. A Docker container image that defines a custom environment. Cloud Workstations provides a number of [preconfigured images](https://cloud.google.com/workstations/docs/preconfigured-base-images), but you can create your own [custom container images](https://cloud.google.com/workstations/docs/custom-container-images). If using a private image, the `host.gceInstance.serviceAccount` field must be specified in the workstation configuration. If using a custom container image, the service account must have [Artifact Registry Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles) permission to pull the specified image. Otherwise, the image must be publicly accessible."
        },
        "runAsUser": {
          "type": "integer",
          "description": "Optional. If set, overrides the USER specified in the image with the given uid."
        },
        "workingDir": {
          "type": "string",
          "description": "Optional. If set, overrides the default DIR specified by the image."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:ContainerResponse": {
      "description": "A Docker container.",
      "properties": {
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Arguments passed to the entrypoint."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If set, overrides the default ENTRYPOINT specified by the image."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Environment variables passed to the container's entrypoint."
        },
        "image": {
          "type": "string",
          "description": "Optional. A Docker container image that defines a custom environment. Cloud Workstations provides a number of [preconfigured images](https://cloud.google.com/workstations/docs/preconfigured-base-images), but you can create your own [custom container images](https://cloud.google.com/workstations/docs/custom-container-images). If using a private image, the `host.gceInstance.serviceAccount` field must be specified in the workstation configuration. If using a custom container image, the service account must have [Artifact Registry Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles) permission to pull the specified image. Otherwise, the image must be publicly accessible."
        },
        "runAsUser": {
          "type": "integer",
          "description": "Optional. If set, overrides the USER specified in the image with the given uid."
        },
        "workingDir": {
          "type": "string",
          "description": "Optional. If set, overrides the default DIR specified by the image."
        }
      },
      "type": "object",
      "required": [
        "args",
        "command",
        "env",
        "image",
        "runAsUser",
        "workingDir"
      ]
    },
    "google-native:workstations/v1beta:CustomerEncryptionKey": {
      "description": "A customer-managed encryption key (CMEK) for the Compute Engine resources of the associated workstation configuration. Specify the name of your Cloud KMS encryption key and the default service account. We recommend that you use a separate service account and follow [Cloud KMS best practices](https://cloud.google.com/kms/docs/separation-of-duties).",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "Immutable. The name of the Google Cloud KMS encryption key. For example, `\"projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME\"`. The key must be in the same region as the workstation configuration."
        },
        "kmsKeyServiceAccount": {
          "type": "string",
          "description": "Immutable. The service account to use with the specified KMS key. We recommend that you use a separate service account and follow KMS best practices. For more information, see [Separation of duties](https://cloud.google.com/kms/docs/separation-of-duties) and `gcloud kms keys add-iam-policy-binding` [`--member`](https://cloud.google.com/sdk/gcloud/reference/kms/keys/add-iam-policy-binding#--member)."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:CustomerEncryptionKeyResponse": {
      "description": "A customer-managed encryption key (CMEK) for the Compute Engine resources of the associated workstation configuration. Specify the name of your Cloud KMS encryption key and the default service account. We recommend that you use a separate service account and follow [Cloud KMS best practices](https://cloud.google.com/kms/docs/separation-of-duties).",
      "properties": {
        "kmsKey": {
          "type": "string",
          "description": "Immutable. The name of the Google Cloud KMS encryption key. For example, `\"projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME\"`. The key must be in the same region as the workstation configuration."
        },
        "kmsKeyServiceAccount": {
          "type": "string",
          "description": "Immutable. The service account to use with the specified KMS key. We recommend that you use a separate service account and follow KMS best practices. For more information, see [Separation of duties](https://cloud.google.com/kms/docs/separation-of-duties) and `gcloud kms keys add-iam-policy-binding` [`--member`](https://cloud.google.com/sdk/gcloud/reference/kms/keys/add-iam-policy-binding#--member)."
        }
      },
      "type": "object",
      "required": [
        "kmsKey",
        "kmsKeyServiceAccount"
      ]
    },
    "google-native:workstations/v1beta:DomainConfig": {
      "description": "Configuration options for a custom domain.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Immutable. Domain used by Workstations for HTTP ingress."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:DomainConfigResponse": {
      "description": "Configuration options for a custom domain.",
      "properties": {
        "domain": {
          "type": "string",
          "description": "Immutable. Domain used by Workstations for HTTP ingress."
        }
      },
      "type": "object",
      "required": [
        "domain"
      ]
    },
    "google-native:workstations/v1beta:EphemeralDirectory": {
      "description": "An ephemeral directory which won't persist across workstation sessions. It is freshly created on every workstation start operation.",
      "properties": {
        "gcePd": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GcePersistentDisk",
          "description": "An EphemeralDirectory backed by a Compute Engine persistent disk."
        },
        "mountPath": {
          "type": "string",
          "description": "Location of this directory in the running workstation."
        }
      },
      "type": "object",
      "required": [
        "mountPath"
      ]
    },
    "google-native:workstations/v1beta:EphemeralDirectoryResponse": {
      "description": "An ephemeral directory which won't persist across workstation sessions. It is freshly created on every workstation start operation.",
      "properties": {
        "gcePd": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GcePersistentDiskResponse",
          "description": "An EphemeralDirectory backed by a Compute Engine persistent disk."
        },
        "mountPath": {
          "type": "string",
          "description": "Location of this directory in the running workstation."
        }
      },
      "type": "object",
      "required": [
        "gcePd",
        "mountPath"
      ]
    },
    "google-native:workstations/v1beta:Expr": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:ExprResponse": {
      "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
      "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."
        },
        "expression": {
          "type": "string",
          "description": "Textual representation of an expression in Common Expression Language syntax."
        },
        "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."
        },
        "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."
        }
      },
      "type": "object",
      "required": [
        "description",
        "expression",
        "location",
        "title"
      ]
    },
    "google-native:workstations/v1beta:GceConfidentialInstanceConfig": {
      "description": "A set of Compute Engine Confidential VM instance options.",
      "properties": {
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Optional. Whether the instance has confidential compute enabled."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:GceConfidentialInstanceConfigResponse": {
      "description": "A set of Compute Engine Confidential VM instance options.",
      "properties": {
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Optional. Whether the instance has confidential compute enabled."
        }
      },
      "type": "object",
      "required": [
        "enableConfidentialCompute"
      ]
    },
    "google-native:workstations/v1beta:GceInstance": {
      "description": "A runtime using a Compute Engine instance.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:Accelerator"
          },
          "description": "Optional. A list of the type and count of accelerator cards attached to the instance."
        },
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Optional. The size of the boot disk for the VM in gigabytes (GB). The minimum boot disk size is `30` GB. Defaults to `50` GB."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceConfidentialInstanceConfig",
          "description": "Optional. A set of Compute Engine Confidential VM instance options."
        },
        "disablePublicIpAddresses": {
          "type": "boolean",
          "description": "Optional. When set to true, disables public IP addresses for VMs. If you disable public IP addresses, you must set up Private Google Access or Cloud NAT on your network. If you use Private Google Access and you use `private.googleapis.com` or `restricted.googleapis.com` for Container Registry and Artifact Registry, make sure that you set up DNS records for domains `*.gcr.io` and `*.pkg.dev`. Defaults to false (VMs have public IP addresses)."
        },
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Optional. Whether to enable nested virtualization on Cloud Workstations VMs created under this workstation configuration. Nested virtualization lets you run virtual machine (VM) instances inside your workstation. Before enabling nested virtualization, consider the following important considerations. Cloud Workstations instances are subject to the [same restrictions as Compute Engine instances](https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions): * **Organization policy**: projects, folders, or organizations may be restricted from creating nested VMs if the **Disable VM nested virtualization** constraint is enforced in the organization policy. For more information, see the Compute Engine section, [Checking whether nested virtualization is allowed](https://cloud.google.com/compute/docs/instances/nested-virtualization/managing-constraint#checking_whether_nested_virtualization_is_allowed). * **Performance**: nested VMs might experience a 10% or greater decrease in performance for workloads that are CPU-bound and possibly greater than a 10% decrease for workloads that are input/output bound. * **Machine Type**: nested virtualization can only be enabled on workstation configurations that specify a machine_type in the N1 or N2 machine series. * **GPUs**: nested virtualization may not be enabled on workstation configurations with accelerators. * **Operating System**: Because [Container-Optimized OS](https://cloud.google.com/compute/docs/images/os-details#container-optimized_os_cos) does not support nested virtualization, when nested virtualization is enabled, the underlying Compute Engine VM instances boot from an [Ubuntu LTS](https://cloud.google.com/compute/docs/images/os-details#ubuntu_lts) image."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The type of machine to use for VM instances—for example, `\"e2-standard-4\"`. For more information about machine types that Cloud Workstations supports, see the list of [available machine types](https://cloud.google.com/workstations/docs/available-machine-types)."
        },
        "poolSize": {
          "type": "integer",
          "description": "Optional. The number of VMs that the system should keep idle so that new workstations can be started quickly for new users. Defaults to `0` in the API."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The email address of the service account for Cloud Workstations VMs created with this configuration. When specified, be sure that the service account has `logginglogEntries.create` permission on the project so it can write logs out to Cloud Logging. If using a custom container image, the service account must have [Artifact Registry Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles) permission to pull the specified image. If you as the administrator want to be able to `ssh` into the underlying VM, you need to set this value to a service account for which you have the `iam.serviceAccounts.actAs` permission. Conversely, if you don't want anyone to be able to `ssh` into the underlying VM, use a service account where no one has that permission. If not set, VMs run with a service account provided by the Cloud Workstations service, and the image must be publicly accessible."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have `iam.serviceAccounts.actAs` on the service account."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceShieldedInstanceConfig",
          "description": "Optional. A set of Compute Engine Shielded instance options."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Network tags to add to the Compute Engine VMs backing the workstations. This option applies [network tags](https://cloud.google.com/vpc/docs/add-remove-network-tags) to VMs created with this configuration. These network tags enable the creation of [firewall rules](https://cloud.google.com/workstations/docs/configure-firewall-rules)."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:GceInstanceResponse": {
      "description": "A runtime using a Compute Engine instance.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:AcceleratorResponse"
          },
          "description": "Optional. A list of the type and count of accelerator cards attached to the instance."
        },
        "bootDiskSizeGb": {
          "type": "integer",
          "description": "Optional. The size of the boot disk for the VM in gigabytes (GB). The minimum boot disk size is `30` GB. Defaults to `50` GB."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceConfidentialInstanceConfigResponse",
          "description": "Optional. A set of Compute Engine Confidential VM instance options."
        },
        "disablePublicIpAddresses": {
          "type": "boolean",
          "description": "Optional. When set to true, disables public IP addresses for VMs. If you disable public IP addresses, you must set up Private Google Access or Cloud NAT on your network. If you use Private Google Access and you use `private.googleapis.com` or `restricted.googleapis.com` for Container Registry and Artifact Registry, make sure that you set up DNS records for domains `*.gcr.io` and `*.pkg.dev`. Defaults to false (VMs have public IP addresses)."
        },
        "enableNestedVirtualization": {
          "type": "boolean",
          "description": "Optional. Whether to enable nested virtualization on Cloud Workstations VMs created under this workstation configuration. Nested virtualization lets you run virtual machine (VM) instances inside your workstation. Before enabling nested virtualization, consider the following important considerations. Cloud Workstations instances are subject to the [same restrictions as Compute Engine instances](https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions): * **Organization policy**: projects, folders, or organizations may be restricted from creating nested VMs if the **Disable VM nested virtualization** constraint is enforced in the organization policy. For more information, see the Compute Engine section, [Checking whether nested virtualization is allowed](https://cloud.google.com/compute/docs/instances/nested-virtualization/managing-constraint#checking_whether_nested_virtualization_is_allowed). * **Performance**: nested VMs might experience a 10% or greater decrease in performance for workloads that are CPU-bound and possibly greater than a 10% decrease for workloads that are input/output bound. * **Machine Type**: nested virtualization can only be enabled on workstation configurations that specify a machine_type in the N1 or N2 machine series. * **GPUs**: nested virtualization may not be enabled on workstation configurations with accelerators. * **Operating System**: Because [Container-Optimized OS](https://cloud.google.com/compute/docs/images/os-details#container-optimized_os_cos) does not support nested virtualization, when nested virtualization is enabled, the underlying Compute Engine VM instances boot from an [Ubuntu LTS](https://cloud.google.com/compute/docs/images/os-details#ubuntu_lts) image."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The type of machine to use for VM instances—for example, `\"e2-standard-4\"`. For more information about machine types that Cloud Workstations supports, see the list of [available machine types](https://cloud.google.com/workstations/docs/available-machine-types)."
        },
        "poolSize": {
          "type": "integer",
          "description": "Optional. The number of VMs that the system should keep idle so that new workstations can be started quickly for new users. Defaults to `0` in the API."
        },
        "pooledInstances": {
          "type": "integer",
          "description": "Number of instances currently available in the pool for faster workstation startup."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The email address of the service account for Cloud Workstations VMs created with this configuration. When specified, be sure that the service account has `logginglogEntries.create` permission on the project so it can write logs out to Cloud Logging. If using a custom container image, the service account must have [Artifact Registry Reader](https://cloud.google.com/artifact-registry/docs/access-control#roles) permission to pull the specified image. If you as the administrator want to be able to `ssh` into the underlying VM, you need to set this value to a service account for which you have the `iam.serviceAccounts.actAs` permission. Conversely, if you don't want anyone to be able to `ssh` into the underlying VM, use a service account where no one has that permission. If not set, VMs run with a service account provided by the Cloud Workstations service, and the image must be publicly accessible."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Scopes to grant to the service_account. Various scopes are automatically added based on feature usage. When specified, users of workstations under this configuration must have `iam.serviceAccounts.actAs` on the service account."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceShieldedInstanceConfigResponse",
          "description": "Optional. A set of Compute Engine Shielded instance options."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Network tags to add to the Compute Engine VMs backing the workstations. This option applies [network tags](https://cloud.google.com/vpc/docs/add-remove-network-tags) to VMs created with this configuration. These network tags enable the creation of [firewall rules](https://cloud.google.com/workstations/docs/configure-firewall-rules)."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "bootDiskSizeGb",
        "confidentialInstanceConfig",
        "disablePublicIpAddresses",
        "enableNestedVirtualization",
        "machineType",
        "poolSize",
        "pooledInstances",
        "serviceAccount",
        "serviceAccountScopes",
        "shieldedInstanceConfig",
        "tags"
      ]
    },
    "google-native:workstations/v1beta:GcePersistentDisk": {
      "description": "An EphemeralDirectory is backed by a Compute Engine persistent disk.",
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Optional. Type of the disk to use. Defaults to `\"pd-standard\"`."
        },
        "readOnly": {
          "type": "boolean",
          "description": "Optional. Whether the disk is read only. If true, the disk may be shared by multiple VMs and source_snapshot must be set."
        },
        "sourceImage": {
          "type": "string",
          "description": "Optional. Name of the disk image to use as the source for the disk. Must be empty if source_snapshot is set. Updating source_image will update content in the ephemeral directory after the workstation is restarted. This field is mutable."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "Optional. Name of the snapshot to use as the source for the disk. Must be empty if source_image is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted. This field is mutable."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:GcePersistentDiskResponse": {
      "description": "An EphemeralDirectory is backed by a Compute Engine persistent disk.",
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Optional. Type of the disk to use. Defaults to `\"pd-standard\"`."
        },
        "readOnly": {
          "type": "boolean",
          "description": "Optional. Whether the disk is read only. If true, the disk may be shared by multiple VMs and source_snapshot must be set."
        },
        "sourceImage": {
          "type": "string",
          "description": "Optional. Name of the disk image to use as the source for the disk. Must be empty if source_snapshot is set. Updating source_image will update content in the ephemeral directory after the workstation is restarted. This field is mutable."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "Optional. Name of the snapshot to use as the source for the disk. Must be empty if source_image is set. Must be empty if read_only is false. Updating source_snapshot will update content in the ephemeral directory after the workstation is restarted. This field is mutable."
        }
      },
      "type": "object",
      "required": [
        "diskType",
        "readOnly",
        "sourceImage",
        "sourceSnapshot"
      ]
    },
    "google-native:workstations/v1beta:GceRegionalPersistentDisk": {
      "description": "A PersistentDirectory backed by a Compute Engine regional persistent disk. The persistent_directories field is repeated, but it may contain only one entry. It creates a [persistent disk](https://cloud.google.com/compute/docs/disks/persistent-disks) that mounts to the workstation VM at `/home` when the session starts and detaches when the session ends. If this field is empty, workstations created with this configuration do not have a persistent home directory.",
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Optional. The [type of the persistent disk](https://cloud.google.com/compute/docs/disks#disk-types) for the home directory. Defaults to `\"pd-standard\"`."
        },
        "fsType": {
          "type": "string",
          "description": "Optional. Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if source_snapshot is set. Defaults to `\"ext4\"`."
        },
        "reclaimPolicy": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceRegionalPersistentDiskReclaimPolicy",
          "description": "Optional. Whether the persistent disk should be deleted when the workstation is deleted. Valid values are `DELETE` and `RETAIN`. Defaults to `DELETE`."
        },
        "sizeGb": {
          "type": "integer",
          "description": "Optional. The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if source_snapshot is set. Valid values are `10`, `50`, `100`, `200`, `500`, or `1000`. Defaults to `200`. If less than `200` GB, the disk_type must be `\"pd-balanced\"` or `\"pd-ssd\"`."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "Optional. Name of the snapshot to use as the source for the disk. If set, size_gb and fs_type must be empty."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:GceRegionalPersistentDiskReclaimPolicy": {
      "description": "Optional. Whether the persistent disk should be deleted when the workstation is deleted. Valid values are `DELETE` and `RETAIN`. Defaults to `DELETE`.",
      "type": "string",
      "enum": [
        {
          "name": "ReclaimPolicyUnspecified",
          "description": "Do not use.",
          "value": "RECLAIM_POLICY_UNSPECIFIED"
        },
        {
          "name": "Delete",
          "description": "Delete the persistent disk when deleting the workstation.",
          "value": "DELETE"
        },
        {
          "name": "Retain",
          "description": "Keep the persistent disk when deleting the workstation. An administrator must manually delete the disk.",
          "value": "RETAIN"
        }
      ]
    },
    "google-native:workstations/v1beta:GceRegionalPersistentDiskResponse": {
      "description": "A PersistentDirectory backed by a Compute Engine regional persistent disk. The persistent_directories field is repeated, but it may contain only one entry. It creates a [persistent disk](https://cloud.google.com/compute/docs/disks/persistent-disks) that mounts to the workstation VM at `/home` when the session starts and detaches when the session ends. If this field is empty, workstations created with this configuration do not have a persistent home directory.",
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Optional. The [type of the persistent disk](https://cloud.google.com/compute/docs/disks#disk-types) for the home directory. Defaults to `\"pd-standard\"`."
        },
        "fsType": {
          "type": "string",
          "description": "Optional. Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if source_snapshot is set. Defaults to `\"ext4\"`."
        },
        "reclaimPolicy": {
          "type": "string",
          "description": "Optional. Whether the persistent disk should be deleted when the workstation is deleted. Valid values are `DELETE` and `RETAIN`. Defaults to `DELETE`."
        },
        "sizeGb": {
          "type": "integer",
          "description": "Optional. The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if source_snapshot is set. Valid values are `10`, `50`, `100`, `200`, `500`, or `1000`. Defaults to `200`. If less than `200` GB, the disk_type must be `\"pd-balanced\"` or `\"pd-ssd\"`."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "Optional. Name of the snapshot to use as the source for the disk. If set, size_gb and fs_type must be empty."
        }
      },
      "type": "object",
      "required": [
        "diskType",
        "fsType",
        "reclaimPolicy",
        "sizeGb",
        "sourceSnapshot"
      ]
    },
    "google-native:workstations/v1beta:GceShieldedInstanceConfig": {
      "description": "A set of Compute Engine Shielded instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Whether the instance has integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Whether the instance has Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Whether the instance has the vTPM enabled."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:GceShieldedInstanceConfigResponse": {
      "description": "A set of Compute Engine Shielded instance options.",
      "properties": {
        "enableIntegrityMonitoring": {
          "type": "boolean",
          "description": "Optional. Whether the instance has integrity monitoring enabled."
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Optional. Whether the instance has Secure Boot enabled."
        },
        "enableVtpm": {
          "type": "boolean",
          "description": "Optional. Whether the instance has the vTPM enabled."
        }
      },
      "type": "object",
      "required": [
        "enableIntegrityMonitoring",
        "enableSecureBoot",
        "enableVtpm"
      ]
    },
    "google-native:workstations/v1beta:Host": {
      "description": "Runtime host for a workstation.",
      "properties": {
        "gceInstance": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceInstance",
          "description": "Specifies a Compute Engine instance as the host."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:HostResponse": {
      "description": "Runtime host for a workstation.",
      "properties": {
        "gceInstance": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceInstanceResponse",
          "description": "Specifies a Compute Engine instance as the host."
        }
      },
      "type": "object",
      "required": [
        "gceInstance"
      ]
    },
    "google-native:workstations/v1beta:PersistentDirectory": {
      "description": "A directory to persist across workstation sessions.",
      "properties": {
        "gcePd": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceRegionalPersistentDisk",
          "description": "A PersistentDirectory backed by a Compute Engine persistent disk."
        },
        "mountPath": {
          "type": "string",
          "description": "Optional. Location of this directory in the running workstation."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:PersistentDirectoryResponse": {
      "description": "A directory to persist across workstation sessions.",
      "properties": {
        "gcePd": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:GceRegionalPersistentDiskResponse",
          "description": "A PersistentDirectory backed by a Compute Engine persistent disk."
        },
        "mountPath": {
          "type": "string",
          "description": "Optional. Location of this directory in the running workstation."
        }
      },
      "type": "object",
      "required": [
        "gcePd",
        "mountPath"
      ]
    },
    "google-native:workstations/v1beta:PrivateClusterConfig": {
      "description": "Configuration options for private workstation clusters.",
      "properties": {
        "allowedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional projects that are allowed to attach to the workstation cluster's service attachment. By default, the workstation cluster's project and the VPC host project (if different) are allowed."
        },
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Immutable. Whether Workstations endpoint is private."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:PrivateClusterConfigResponse": {
      "description": "Configuration options for private workstation clusters.",
      "properties": {
        "allowedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Additional projects that are allowed to attach to the workstation cluster's service attachment. By default, the workstation cluster's project and the VPC host project (if different) are allowed."
        },
        "clusterHostname": {
          "type": "string",
          "description": "Hostname for the workstation cluster. This field will be populated only when private endpoint is enabled. To access workstations in the workstation cluster, create a new DNS zone mapping this domain name to an internal IP address and a forwarding rule mapping that address to the service attachment."
        },
        "enablePrivateEndpoint": {
          "type": "boolean",
          "description": "Immutable. Whether Workstations endpoint is private."
        },
        "serviceAttachmentUri": {
          "type": "string",
          "description": "Service attachment URI for the workstation cluster. The service attachemnt is created when private endpoint is enabled. To access workstations in the workstation cluster, configure access to the managed service using [Private Service Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-services)."
        }
      },
      "type": "object",
      "required": [
        "allowedProjects",
        "clusterHostname",
        "enablePrivateEndpoint",
        "serviceAttachmentUri"
      ]
    },
    "google-native:workstations/v1beta:ReadinessCheck": {
      "description": "A readiness check to be performed on a workstation.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. Path to which the request should be sent."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Port to which the request should be sent."
        }
      },
      "type": "object"
    },
    "google-native:workstations/v1beta:ReadinessCheckResponse": {
      "description": "A readiness check to be performed on a workstation.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Optional. Path to which the request should be sent."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Port to which the request should be sent."
        }
      },
      "type": "object",
      "required": [
        "path",
        "port"
      ]
    },
    "google-native:workstations/v1beta:StatusResponse": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "properties": {
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "type": "object",
      "required": [
        "code",
        "details",
        "message"
      ]
    }
  },
  "provider": {
    "description": "The provider type for the Google Cloud package.",
    "properties": {
      "project": {
        "type": "string",
        "description": "The default project to manage resources in. If another project is specified on a resource, it will take precedence."
      },
      "region": {
        "type": "string",
        "description": "The default region to manage resources in. If another region is specified on a regional resource, it will take precedence."
      },
      "zone": {
        "type": "string",
        "description": "The default zone to manage resources in. Generally, this zone should be within the default region you specified. If another zone is specified on a zonal resource, it will take precedence."
      }
    },
    "type": "object",
    "inputProperties": {
      "appendUserAgent": {
        "type": "string",
        "description": "Additional user-agent string to append to the default one (<prod_name>/<ver>).",
        "defaultInfo": {
          "environment": [
            "GOOGLE_APPEND_USER_AGENT"
          ]
        }
      },
      "disablePartnerName": {
        "type": "boolean",
        "description": "This will disable the Pulumi Partner Name which is used if a custom `partnerName` isn't specified.",
        "defaultInfo": {
          "environment": [
            "GOOGLE_DISABLE_PARTNER_NAME"
          ]
        }
      },
      "partnerName": {
        "type": "string",
        "description": "A Google Partner Name to facilitate partner resource usage attribution.",
        "defaultInfo": {
          "environment": [
            "GOOGLE_PARTNER_NAME"
          ]
        }
      },
      "project": {
        "type": "string",
        "description": "The default project to manage resources in. If another project is specified on a resource, it will take precedence.",
        "defaultInfo": {
          "environment": [
            "GOOGLE_PROJECT",
            "GOOGLE_CLOUD_PROJECT",
            "GCLOUD_PROJECT",
            "CLOUDSDK_CORE_PROJECT"
          ]
        }
      },
      "region": {
        "type": "string",
        "description": "The default region to manage resources in. If another region is specified on a regional resource, it will take precedence.",
        "defaultInfo": {
          "environment": [
            "GOOGLE_REGION",
            "GCLOUD_REGION",
            "CLOUDSDK_COMPUTE_REGION"
          ]
        }
      },
      "zone": {
        "type": "string",
        "description": "The default zone to manage resources in. Generally, this zone should be within the default region you specified. If another zone is specified on a zonal resource, it will take precedence.",
        "defaultInfo": {
          "environment": [
            "GOOGLE_ZONE",
            "GCLOUD_ZONE",
            "CLOUDSDK_COMPUTE_ZONE"
          ]
        }
      }
    }
  },
  "resources": {
    "google-native:accesscontextmanager/v1:AccessLevel": {
      "description": "Creates an access level. The long-running operation from this RPC has a successful status after the access level propagates to long-lasting storage. If access levels contain errors, an error response is returned for the first error encountered.",
      "properties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "basic": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:BasicLevelResponse",
          "description": "A `BasicLevel` composed of `Conditions`."
        },
        "custom": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:CustomLevelResponse",
          "description": "A `CustomLevel` written in the Common Expression Language."
        },
        "description": {
          "type": "string",
          "description": "Description of the `AccessLevel` and its use. Does not affect behavior."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `AccessLevel`. Format: `accessPolicies/{access_policy}/accessLevels/{access_level}`. The `access_level` component must begin with a letter, followed by alphanumeric characters or `_`. Its maximum length is 50 characters. After you create an `AccessLevel`, you cannot change its `name`."
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Must be unique within the Policy."
        }
      },
      "type": "object",
      "required": [
        "accessPolicyId",
        "basic",
        "custom",
        "description",
        "name",
        "title"
      ],
      "inputProperties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "basic": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:BasicLevel",
          "description": "A `BasicLevel` composed of `Conditions`."
        },
        "custom": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:CustomLevel",
          "description": "A `CustomLevel` written in the Common Expression Language."
        },
        "description": {
          "type": "string",
          "description": "Description of the `AccessLevel` and its use. Does not affect behavior."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `AccessLevel`. Format: `accessPolicies/{access_policy}/accessLevels/{access_level}`. The `access_level` component must begin with a letter, followed by alphanumeric characters or `_`. Its maximum length is 50 characters. After you create an `AccessLevel`, you cannot change its `name`."
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Must be unique within the Policy."
        }
      },
      "requiredInputs": [
        "accessPolicyId"
      ]
    },
    "google-native:accesscontextmanager/v1:AccessPolicy": {
      "description": "Creates an access policy. This method fails if the organization already has an access policy. The long-running operation has a successful status after the access policy propagates to long-lasting storage. Syntactic and basic semantic errors are returned in `metadata` as a BadRequest proto.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "etag": {
          "type": "string",
          "description": "An opaque identifier for the current version of the `AccessPolicy`. This will always be a strongly validated etag, meaning that two Access Polices will be identical if and only if their etags are identical. Clients should not expect this to be in any specific format."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the `AccessPolicy`. Format: `accessPolicies/{access_policy}`"
        },
        "parent": {
          "type": "string",
          "description": "The parent of this `AccessPolicy` in the Cloud Resource Hierarchy. Currently immutable once created. Format: `organizations/{organization_id}`"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The scopes of the AccessPolicy. Scopes define which resources a policy can restrict and where its resources can be referenced. For example, policy A with `scopes=[\"folders/123\"]` has the following behavior: - ServicePerimeter can only restrict projects within `folders/123`. - ServicePerimeter within policy A can only reference access levels defined within policy A. - Only one policy can include a given scope; thus, attempting to create a second policy which includes `folders/123` will result in an error. If no scopes are provided, then any resource within the organization can be restricted. Scopes cannot be modified after a policy is created. Policies can only have a single scope. Format: list of `folders/{folder_number}` or `projects/{project_number}`"
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Does not affect behavior."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "name",
        "parent",
        "scopes",
        "title"
      ],
      "inputProperties": {
        "parent": {
          "type": "string",
          "description": "The parent of this `AccessPolicy` in the Cloud Resource Hierarchy. Currently immutable once created. Format: `organizations/{organization_id}`"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The scopes of the AccessPolicy. Scopes define which resources a policy can restrict and where its resources can be referenced. For example, policy A with `scopes=[\"folders/123\"]` has the following behavior: - ServicePerimeter can only restrict projects within `folders/123`. - ServicePerimeter within policy A can only reference access levels defined within policy A. - Only one policy can include a given scope; thus, attempting to create a second policy which includes `folders/123` will result in an error. If no scopes are provided, then any resource within the organization can be restricted. Scopes cannot be modified after a policy is created. Policies can only have a single scope. Format: list of `folders/{folder_number}` or `projects/{project_number}`"
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Does not affect behavior."
        }
      },
      "requiredInputs": [
        "parent",
        "title"
      ]
    },
    "google-native:accesscontextmanager/v1:AccessPolicyIamBinding": {
      "description": "Sets the IAM policy for the specified Access Context Manager access policy. This method replaces the existing IAM policy on the access policy. The IAM policy controls the set of users who can perform specific operations on the Access Context Manager access policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:accesscontextmanager/v1:AccessPolicyIamMember": {
      "description": "Sets the IAM policy for the specified Access Context Manager access policy. This method replaces the existing IAM policy on the access policy. The IAM policy controls the set of users who can perform specific operations on the Access Context Manager access policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:accesscontextmanager/v1:AccessPolicyIamPolicy": {
      "description": "Sets the IAM policy for the specified Access Context Manager access policy. This method replaces the existing IAM policy on the access policy. The IAM policy controls the set of users who can perform specific operations on the Access Context Manager access policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "accessPolicyId",
        "auditConfigs",
        "bindings",
        "etag",
        "version"
      ],
      "inputProperties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "accessPolicyId"
      ]
    },
    "google-native:accesscontextmanager/v1:AuthorizedOrgsDesc": {
      "description": "Creates an authorized orgs desc. The long-running operation from this RPC has a successful status after the authorized orgs desc propagates to long-lasting storage. If a authorized orgs desc contains errors, an error response is returned for the first error encountered. The name of this `AuthorizedOrgsDesc` will be assigned during creation.",
      "properties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "assetType": {
          "type": "string",
          "description": "The asset type of this authorized orgs desc. Valid values are `ASSET_TYPE_DEVICE`, and `ASSET_TYPE_CREDENTIAL_STRENGTH`."
        },
        "authorizationDirection": {
          "type": "string",
          "description": "The direction of the authorization relationship between this organization and the organizations listed in the `orgs` field. The valid values for this field include the following: `AUTHORIZATION_DIRECTION_FROM`: Allows this organization to evaluate traffic in the organizations listed in the `orgs` field. `AUTHORIZATION_DIRECTION_TO`: Allows the organizations listed in the `orgs` field to evaluate the traffic in this organization. For the authorization relationship to take effect, all of the organizations must authorize and specify the appropriate relationship direction. For example, if organization A authorized organization B and C to evaluate its traffic, by specifying `AUTHORIZATION_DIRECTION_TO` as the authorization direction, organizations B and C must specify `AUTHORIZATION_DIRECTION_FROM` as the authorization direction in their `AuthorizedOrgsDesc` resource."
        },
        "authorizationType": {
          "type": "string",
          "description": "A granular control type for authorization levels. Valid value is `AUTHORIZATION_TYPE_TRUST`."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `AuthorizedOrgsDesc`. Format: `accessPolicies/{access_policy}/authorizedOrgsDescs/{authorized_orgs_desc}`. The `authorized_orgs_desc` component must begin with a letter, followed by alphanumeric characters or `_`. After you create an `AuthorizedOrgsDesc`, you cannot change its `name`."
        },
        "orgs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of organization ids in this AuthorizedOrgsDesc. Format: `organizations/` Example: `organizations/123456`"
        }
      },
      "type": "object",
      "required": [
        "accessPolicyId",
        "assetType",
        "authorizationDirection",
        "authorizationType",
        "name",
        "orgs"
      ],
      "inputProperties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "assetType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuthorizedOrgsDescAssetType",
          "description": "The asset type of this authorized orgs desc. Valid values are `ASSET_TYPE_DEVICE`, and `ASSET_TYPE_CREDENTIAL_STRENGTH`."
        },
        "authorizationDirection": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuthorizedOrgsDescAuthorizationDirection",
          "description": "The direction of the authorization relationship between this organization and the organizations listed in the `orgs` field. The valid values for this field include the following: `AUTHORIZATION_DIRECTION_FROM`: Allows this organization to evaluate traffic in the organizations listed in the `orgs` field. `AUTHORIZATION_DIRECTION_TO`: Allows the organizations listed in the `orgs` field to evaluate the traffic in this organization. For the authorization relationship to take effect, all of the organizations must authorize and specify the appropriate relationship direction. For example, if organization A authorized organization B and C to evaluate its traffic, by specifying `AUTHORIZATION_DIRECTION_TO` as the authorization direction, organizations B and C must specify `AUTHORIZATION_DIRECTION_FROM` as the authorization direction in their `AuthorizedOrgsDesc` resource."
        },
        "authorizationType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuthorizedOrgsDescAuthorizationType",
          "description": "A granular control type for authorization levels. Valid value is `AUTHORIZATION_TYPE_TRUST`."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `AuthorizedOrgsDesc`. Format: `accessPolicies/{access_policy}/authorizedOrgsDescs/{authorized_orgs_desc}`. The `authorized_orgs_desc` component must begin with a letter, followed by alphanumeric characters or `_`. After you create an `AuthorizedOrgsDesc`, you cannot change its `name`."
        },
        "orgs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of organization ids in this AuthorizedOrgsDesc. Format: `organizations/` Example: `organizations/123456`"
        }
      },
      "requiredInputs": [
        "accessPolicyId"
      ]
    },
    "google-native:accesscontextmanager/v1:GcpUserAccessBinding": {
      "description": "Creates a GcpUserAccessBinding. If the client specifies a name, the server ignores it. Fails if a resource already exists with the same group_key. Completion of this long-running operation does not necessarily signify that the new binding is deployed onto all affected users, which may take more time.",
      "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\""
        },
        "dryRunAccessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Dry run access level that will be evaluated but will not be enforced. The access denial based on dry run policy will be logged. Only one access level is supported, not multiple. This list must have exactly one element. Example: \"accessPolicies/9522/accessLevels/device_trusted\""
        },
        "groupKey": {
          "type": "string",
          "description": "Immutable. Google Group id whose members are subject to this binding's restrictions. See \"id\" in the [G Suite Directory API's Groups resource] (https://developers.google.com/admin-sdk/directory/v1/reference/groups#resource). If a group's email address/alias is changed, this resource will continue to point at the changed group. This field does not accept group email addresses or aliases. Example: \"01d520gv4vjcrht\""
        },
        "name": {
          "type": "string",
          "description": "Immutable. Assigned by the server during creation. The last segment has an arbitrary length and has only URI unreserved characters (as defined by [RFC 3986 Section 2.3](https://tools.ietf.org/html/rfc3986#section-2.3)). Should not be specified by the client during creation. Example: \"organizations/256/gcpUserAccessBindings/b3-BhcX_Ud5N\""
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "accessLevels",
        "dryRunAccessLevels",
        "groupKey",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "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\""
        },
        "dryRunAccessLevels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Dry run access level that will be evaluated but will not be enforced. The access denial based on dry run policy will be logged. Only one access level is supported, not multiple. This list must have exactly one element. Example: \"accessPolicies/9522/accessLevels/device_trusted\""
        },
        "groupKey": {
          "type": "string",
          "description": "Immutable. Google Group id whose members are subject to this binding's restrictions. See \"id\" in the [G Suite Directory API's Groups resource] (https://developers.google.com/admin-sdk/directory/v1/reference/groups#resource). If a group's email address/alias is changed, this resource will continue to point at the changed group. This field does not accept group email addresses or aliases. Example: \"01d520gv4vjcrht\""
        },
        "name": {
          "type": "string",
          "description": "Immutable. Assigned by the server during creation. The last segment has an arbitrary length and has only URI unreserved characters (as defined by [RFC 3986 Section 2.3](https://tools.ietf.org/html/rfc3986#section-2.3)). Should not be specified by the client during creation. Example: \"organizations/256/gcpUserAccessBindings/b3-BhcX_Ud5N\""
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "groupKey",
        "organizationId"
      ]
    },
    "google-native:accesscontextmanager/v1:ServicePerimeter": {
      "description": "Creates a service perimeter. The long-running operation from this RPC has a successful status after the service perimeter propagates to long-lasting storage. If a service perimeter contains errors, an error response is returned for the first error encountered.",
      "properties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Description of the `ServicePerimeter` and its use. Does not affect behavior."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `ServicePerimeter`. Format: `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`. The `service_perimeter` component must begin with a letter, followed by alphanumeric characters or `_`. After you create a `ServicePerimeter`, you cannot change its `name`."
        },
        "perimeterType": {
          "type": "string",
          "description": "Perimeter type indicator. A single project or VPC network is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, the restricted service list as well as access level lists must be empty."
        },
        "spec": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ServicePerimeterConfigResponse",
          "description": "Proposed (or dry run) ServicePerimeter configuration. This configuration allows to specify and test ServicePerimeter configuration without enforcing actual access restrictions. Only allowed to be set when the \"use_explicit_dry_run_spec\" flag is set."
        },
        "status": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ServicePerimeterConfigResponse",
          "description": "Current ServicePerimeter configuration. Specifies sets of resources, restricted services and access levels that determine perimeter content and boundaries."
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Must be unique within the Policy."
        },
        "useExplicitDryRunSpec": {
          "type": "boolean",
          "description": "Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists for all Service Perimeters, and that spec is identical to the status for those Service Perimeters. When this flag is set, it inhibits the generation of the implicit spec, thereby allowing the user to explicitly provide a configuration (\"spec\") to use in a dry-run version of the Service Perimeter. This allows the user to test changes to the enforced config (\"status\") without actually enforcing them. This testing is done through analyzing the differences between currently enforced and suggested restrictions. use_explicit_dry_run_spec must bet set to True if any of the fields in the spec are set to non-default values."
        }
      },
      "type": "object",
      "required": [
        "accessPolicyId",
        "description",
        "name",
        "perimeterType",
        "spec",
        "status",
        "title",
        "useExplicitDryRunSpec"
      ],
      "inputProperties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Description of the `ServicePerimeter` and its use. Does not affect behavior."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `ServicePerimeter`. Format: `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`. The `service_perimeter` component must begin with a letter, followed by alphanumeric characters or `_`. After you create a `ServicePerimeter`, you cannot change its `name`."
        },
        "perimeterType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ServicePerimeterPerimeterType",
          "description": "Perimeter type indicator. A single project or VPC network is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, the restricted service list as well as access level lists must be empty."
        },
        "spec": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ServicePerimeterConfig",
          "description": "Proposed (or dry run) ServicePerimeter configuration. This configuration allows to specify and test ServicePerimeter configuration without enforcing actual access restrictions. Only allowed to be set when the \"use_explicit_dry_run_spec\" flag is set."
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Must be unique within the Policy."
        },
        "useExplicitDryRunSpec": {
          "type": "boolean",
          "description": "Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists for all Service Perimeters, and that spec is identical to the status for those Service Perimeters. When this flag is set, it inhibits the generation of the implicit spec, thereby allowing the user to explicitly provide a configuration (\"spec\") to use in a dry-run version of the Service Perimeter. This allows the user to test changes to the enforced config (\"status\") without actually enforcing them. This testing is done through analyzing the differences between currently enforced and suggested restrictions. use_explicit_dry_run_spec must bet set to True if any of the fields in the spec are set to non-default values."
        }
      },
      "requiredInputs": [
        "accessPolicyId"
      ]
    },
    "google-native:accesscontextmanager/v1beta:AccessLevel": {
      "description": "Create an Access Level. The longrunning operation from this RPC will have a successful status once the Access Level has propagated to long-lasting storage. Access Levels containing errors will result in an error response for the first error encountered.",
      "properties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "basic": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:BasicLevelResponse",
          "description": "A `BasicLevel` composed of `Conditions`."
        },
        "custom": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:CustomLevelResponse",
          "description": "A `CustomLevel` written in the Common Expression Language."
        },
        "description": {
          "type": "string",
          "description": "Description of the `AccessLevel` and its use. Does not affect behavior."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `AccessLevel`. Format: `accessPolicies/{access_policy}/accessLevels/{access_level}`. The `access_level` component must begin with a letter, followed by alphanumeric characters or `_`. Its maximum length is 50 characters. After you create an `AccessLevel`, you cannot change its `name`."
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Must be unique within the Policy."
        }
      },
      "type": "object",
      "required": [
        "accessPolicyId",
        "basic",
        "custom",
        "description",
        "name",
        "title"
      ],
      "inputProperties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "basic": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:BasicLevel",
          "description": "A `BasicLevel` composed of `Conditions`."
        },
        "custom": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:CustomLevel",
          "description": "A `CustomLevel` written in the Common Expression Language."
        },
        "description": {
          "type": "string",
          "description": "Description of the `AccessLevel` and its use. Does not affect behavior."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `AccessLevel`. Format: `accessPolicies/{access_policy}/accessLevels/{access_level}`. The `access_level` component must begin with a letter, followed by alphanumeric characters or `_`. Its maximum length is 50 characters. After you create an `AccessLevel`, you cannot change its `name`."
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Must be unique within the Policy."
        }
      },
      "requiredInputs": [
        "accessPolicyId"
      ]
    },
    "google-native:accesscontextmanager/v1beta:AccessPolicy": {
      "description": "Create an `AccessPolicy`. Fails if this organization already has a `AccessPolicy`. The longrunning Operation will have a successful status once the `AccessPolicy` has propagated to long-lasting storage. Syntactic and basic semantic errors will be returned in `metadata` as a BadRequest proto.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Resource name of the `AccessPolicy`. Format: `accessPolicies/{policy_id}`"
        },
        "parent": {
          "type": "string",
          "description": "The parent of this `AccessPolicy` in the Cloud Resource Hierarchy. Currently immutable once created. Format: `organizations/{organization_id}`"
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Does not affect behavior."
        }
      },
      "type": "object",
      "required": [
        "name",
        "parent",
        "title"
      ],
      "inputProperties": {
        "parent": {
          "type": "string",
          "description": "The parent of this `AccessPolicy` in the Cloud Resource Hierarchy. Currently immutable once created. Format: `organizations/{organization_id}`"
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Does not affect behavior."
        }
      },
      "requiredInputs": [
        "parent",
        "title"
      ]
    },
    "google-native:accesscontextmanager/v1beta:ServicePerimeter": {
      "description": "Create a Service Perimeter. The longrunning operation from this RPC will have a successful status once the Service Perimeter has propagated to long-lasting storage. Service Perimeters containing errors will result in an error response for the first error encountered.",
      "properties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Description of the `ServicePerimeter` and its use. Does not affect behavior."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `ServicePerimeter`. Format: `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`. The `service_perimeter` component must begin with a letter, followed by alphanumeric characters or `_`. After you create a `ServicePerimeter`, you cannot change its `name`."
        },
        "perimeterType": {
          "type": "string",
          "description": "Perimeter type indicator. A single project is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, restricted/unrestricted service lists as well as access lists must be empty."
        },
        "status": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:ServicePerimeterConfigResponse",
          "description": "Current ServicePerimeter configuration. Specifies sets of resources, restricted/unrestricted services and access levels that determine perimeter content and boundaries."
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Must be unique within the Policy."
        }
      },
      "type": "object",
      "required": [
        "accessPolicyId",
        "description",
        "name",
        "perimeterType",
        "status",
        "title"
      ],
      "inputProperties": {
        "accessPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Description of the `ServicePerimeter` and its use. Does not affect behavior."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the `ServicePerimeter`. Format: `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`. The `service_perimeter` component must begin with a letter, followed by alphanumeric characters or `_`. After you create a `ServicePerimeter`, you cannot change its `name`."
        },
        "perimeterType": {
          "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:ServicePerimeterPerimeterType",
          "description": "Perimeter type indicator. A single project is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, restricted/unrestricted service lists as well as access lists must be empty."
        },
        "title": {
          "type": "string",
          "description": "Human readable title. Must be unique within the Policy."
        }
      },
      "requiredInputs": [
        "accessPolicyId"
      ]
    },
    "google-native:aiplatform/v1:Artifact": {
      "description": "Creates an Artifact associated with a MetadataStore.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The {artifact} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/artifacts/{artifact}` If not provided, the Artifact's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Artifacts in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Artifact.)"
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Artifact was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Artifact"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Artifact. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Artifacts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Artifact (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Artifact. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Artifact."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "type": "string",
          "description": "The state of this Artifact. This is a property of the Artifact, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines), and the system does not prescribe or check the validity of state transitions."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Artifact was last updated."
        },
        "uri": {
          "type": "string",
          "description": "The uniform resource identifier of the artifact file. May be empty if there is no actual artifact file."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "metadata",
        "metadataStoreId",
        "name",
        "project",
        "schemaTitle",
        "schemaVersion",
        "state",
        "updateTime",
        "uri"
      ],
      "inputProperties": {
        "artifactId": {
          "type": "string",
          "description": "The {artifact} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/artifacts/{artifact}` If not provided, the Artifact's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Artifacts in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Artifact.)"
        },
        "description": {
          "type": "string",
          "description": "Description of the Artifact"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Artifact. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Artifacts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Artifact (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Artifact. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:ArtifactState",
          "description": "The state of this Artifact. This is a property of the Artifact, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines), and the system does not prescribe or check the validity of state transitions."
        },
        "uri": {
          "type": "string",
          "description": "The uniform resource identifier of the artifact file. May be empty if there is no actual artifact file."
        }
      },
      "requiredInputs": [
        "metadataStoreId"
      ]
    },
    "google-native:aiplatform/v1:BatchPredictionJob": {
      "description": "Creates a BatchPredictionJob. A BatchPredictionJob once created will right away be attempted to start.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "completionStats": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CompletionStatsResponse",
          "description": "Statistics on completed and failed prediction instances."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the BatchPredictionJob was created."
        },
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchDedicatedResourcesResponse",
          "description": "The config of resources used by the Model during the batch prediction. If the Model supports DEDICATED_RESOURCES this config may be provided (and the job will use these resources), if the Model doesn't support AUTOMATIC_RESOURCES, this config must be provided."
        },
        "disableContainerLogging": {
          "type": "boolean",
          "description": "For custom-trained Models and AutoML Tabular Models, the container of the DeployedModel instances will send `stderr` and `stdout` streams to Cloud Logging by default. Please note that the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can disable container logging by setting this flag to true."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of this BatchPredictionJob."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key options for a BatchPredictionJob. If this is set, then all resources created by the BatchPredictionJob will be encrypted with the provided encryption key."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the BatchPredictionJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "Only populated when the job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationSpecResponse",
          "description": "Explanation configuration for this BatchPredictionJob. Can be specified only if generate_explanation is set to `true`. This value overrides the value of Model.explanation_spec. All fields of explanation_spec are optional in the request. If a field of the explanation_spec object is not populated, the corresponding field of the Model.explanation_spec object is inherited."
        },
        "generateExplanation": {
          "type": "boolean",
          "description": "Generate explanation with the batch prediction results. When set to `true`, the batch prediction output changes based on the `predictions_format` field of the BatchPredictionJob.output_config object: * `bigquery`: output includes a column named `explanation`. The value is a struct that conforms to the Explanation object. * `jsonl`: The JSON objects on each line include an additional entry keyed `explanation`. The value of the entry is a JSON object that conforms to the Explanation object. * `csv`: Generating explanations for CSV format is not supported. If this field is set to true, either the Model.explanation_spec or explanation_spec must be populated."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobInputConfigResponse",
          "description": "Input configuration of the instances on which predictions are performed. The schema of any single instance may be specified via the Model's PredictSchemata's instance_schema_uri."
        },
        "instanceConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobInstanceConfigResponse",
          "description": "Configuration for how to convert batch prediction input instances to the prediction instances that are sent to the Model."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize BatchPredictionJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "manualBatchTuningParameters": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ManualBatchTuningParametersResponse",
          "description": "Immutable. Parameters configuring the batch behavior. Currently only applicable when dedicated_resources are used (in other cases Vertex AI does the tuning itself)."
        },
        "model": {
          "type": "string",
          "description": "The name of the Model resource that produces the predictions via this job, must share the same ancestor Location. Starting this job has no impact on any existing deployments of the Model and their resources. Exactly one of model and unmanaged_container_model must be set. The model resource name may contain version id or version alias to specify the version. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` if no version is specified, the default version will be deployed. The model resource could also be a publisher model. Example: `publishers/{publisher}/models/{model}` or `projects/{project}/locations/{location}/publishers/{publisher}/models/{model}`"
        },
        "modelParameters": {
          "$ref": "pulumi.json#/Any",
          "description": "The parameters that govern the predictions. The schema of the parameters may be specified via the Model's PredictSchemata's parameters_schema_uri."
        },
        "modelVersionId": {
          "type": "string",
          "description": "The version ID of the Model that produces the predictions via this job."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the BatchPredictionJob."
        },
        "outputConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobOutputConfigResponse",
          "description": "The Configuration specifying where output predictions should be written. The schema of any single prediction may be specified as a concatenation of Model's PredictSchemata's instance_schema_uri and prediction_schema_uri."
        },
        "outputInfo": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobOutputInfoResponse",
          "description": "Information further describing the output of this job."
        },
        "partialFailures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse"
          },
          "description": "Partial failures encountered. For example, single files that can't be read. This field never exceeds 20 entries. Status details fields contain standard Google Cloud error details."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourcesConsumed": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ResourcesConsumedResponse",
          "description": "Information about resources that had been consumed by this job. Provided in real time at best effort basis, as well as a final value once the job completes. Note: This field currently may be not populated for batch predictions that use AutoML Models."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the DeployedModel's container runs as. If not specified, a system generated one will be used, which has minimal permissions and the custom container, if used, may not have enough permission to access other Google Cloud resources. Users deploying the Model must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the BatchPredictionJob for the first time entered the `JOB_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "unmanagedContainerModel": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1UnmanagedContainerModelResponse",
          "description": "Contains model information necessary to perform batch prediction without requiring uploading to model registry. Exactly one of model and unmanaged_container_model must be set."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the BatchPredictionJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "completionStats",
        "createTime",
        "dedicatedResources",
        "disableContainerLogging",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "explanationSpec",
        "generateExplanation",
        "inputConfig",
        "instanceConfig",
        "labels",
        "location",
        "manualBatchTuningParameters",
        "model",
        "modelParameters",
        "modelVersionId",
        "name",
        "outputConfig",
        "outputInfo",
        "partialFailures",
        "project",
        "resourcesConsumed",
        "serviceAccount",
        "startTime",
        "state",
        "unmanagedContainerModel",
        "updateTime"
      ],
      "inputProperties": {
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchDedicatedResources",
          "description": "The config of resources used by the Model during the batch prediction. If the Model supports DEDICATED_RESOURCES this config may be provided (and the job will use these resources), if the Model doesn't support AUTOMATIC_RESOURCES, this config must be provided."
        },
        "disableContainerLogging": {
          "type": "boolean",
          "description": "For custom-trained Models and AutoML Tabular Models, the container of the DeployedModel instances will send `stderr` and `stdout` streams to Cloud Logging by default. Please note that the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can disable container logging by setting this flag to true."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of this BatchPredictionJob."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key options for a BatchPredictionJob. If this is set, then all resources created by the BatchPredictionJob will be encrypted with the provided encryption key."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationSpec",
          "description": "Explanation configuration for this BatchPredictionJob. Can be specified only if generate_explanation is set to `true`. This value overrides the value of Model.explanation_spec. All fields of explanation_spec are optional in the request. If a field of the explanation_spec object is not populated, the corresponding field of the Model.explanation_spec object is inherited."
        },
        "generateExplanation": {
          "type": "boolean",
          "description": "Generate explanation with the batch prediction results. When set to `true`, the batch prediction output changes based on the `predictions_format` field of the BatchPredictionJob.output_config object: * `bigquery`: output includes a column named `explanation`. The value is a struct that conforms to the Explanation object. * `jsonl`: The JSON objects on each line include an additional entry keyed `explanation`. The value of the entry is a JSON object that conforms to the Explanation object. * `csv`: Generating explanations for CSV format is not supported. If this field is set to true, either the Model.explanation_spec or explanation_spec must be populated."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobInputConfig",
          "description": "Input configuration of the instances on which predictions are performed. The schema of any single instance may be specified via the Model's PredictSchemata's instance_schema_uri."
        },
        "instanceConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobInstanceConfig",
          "description": "Configuration for how to convert batch prediction input instances to the prediction instances that are sent to the Model."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize BatchPredictionJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "manualBatchTuningParameters": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ManualBatchTuningParameters",
          "description": "Immutable. Parameters configuring the batch behavior. Currently only applicable when dedicated_resources are used (in other cases Vertex AI does the tuning itself)."
        },
        "model": {
          "type": "string",
          "description": "The name of the Model resource that produces the predictions via this job, must share the same ancestor Location. Starting this job has no impact on any existing deployments of the Model and their resources. Exactly one of model and unmanaged_container_model must be set. The model resource name may contain version id or version alias to specify the version. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` if no version is specified, the default version will be deployed. The model resource could also be a publisher model. Example: `publishers/{publisher}/models/{model}` or `projects/{project}/locations/{location}/publishers/{publisher}/models/{model}`"
        },
        "modelParameters": {
          "$ref": "pulumi.json#/Any",
          "description": "The parameters that govern the predictions. The schema of the parameters may be specified via the Model's PredictSchemata's parameters_schema_uri."
        },
        "outputConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobOutputConfig",
          "description": "The Configuration specifying where output predictions should be written. The schema of any single prediction may be specified as a concatenation of Model's PredictSchemata's instance_schema_uri and prediction_schema_uri."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the DeployedModel's container runs as. If not specified, a system generated one will be used, which has minimal permissions and the custom container, if used, may not have enough permission to access other Google Cloud resources. Users deploying the Model must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "unmanagedContainerModel": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1UnmanagedContainerModel",
          "description": "Contains model information necessary to perform batch prediction without requiring uploading to model registry. Exactly one of model and unmanaged_container_model must be set."
        }
      },
      "requiredInputs": [
        "displayName",
        "inputConfig",
        "outputConfig"
      ]
    },
    "google-native:aiplatform/v1:Context": {
      "description": "Creates a Context associated with a MetadataStore.",
      "properties": {
        "contextId": {
          "type": "string",
          "description": "The {context} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/contexts/{context}`. If not provided, the Context's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Contexts in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Context.)"
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Context was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Context"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Context. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Contexts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Context (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Context. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Context."
        },
        "parentContexts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource names of Contexts that are parents of this Context. A Context may have at most 10 parent_contexts."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Context was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "metadata",
        "metadataStoreId",
        "name",
        "parentContexts",
        "project",
        "schemaTitle",
        "schemaVersion",
        "updateTime"
      ],
      "inputProperties": {
        "contextId": {
          "type": "string",
          "description": "The {context} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/contexts/{context}`. If not provided, the Context's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Contexts in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Context.)"
        },
        "description": {
          "type": "string",
          "description": "Description of the Context"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Context. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Contexts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Context (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Context. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Context."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        }
      },
      "requiredInputs": [
        "metadataStoreId"
      ]
    },
    "google-native:aiplatform/v1:CustomJob": {
      "description": "Creates a CustomJob. A created CustomJob right away will be attempted to be run.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the CustomJob was created."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the CustomJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key options for a CustomJob. If this is set, then all resources created by the CustomJob will be encrypted with the provided encryption key."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the CustomJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "Only populated when job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
        },
        "jobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpecResponse",
          "description": "Job spec."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize CustomJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of a CustomJob."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the CustomJob for the first time entered the `JOB_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the CustomJob was most recently updated."
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if job_spec.enable_web_access is `true`. The keys are names of each node in the training job; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "jobSpec",
        "labels",
        "location",
        "name",
        "project",
        "startTime",
        "state",
        "updateTime",
        "webAccessUris"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the CustomJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key options for a CustomJob. If this is set, then all resources created by the CustomJob will be encrypted with the provided encryption key."
        },
        "jobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpec",
          "description": "Job spec."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize CustomJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "jobSpec"
      ]
    },
    "google-native:aiplatform/v1:DataLabelingJob": {
      "description": "Creates a DataLabelingJob.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "activeLearningConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ActiveLearningConfigResponse",
          "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally via several iterations. For every iteration, it will select a batch of data based on the sampling strategy."
        },
        "annotationLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to assign to annotations generated by this DataLabelingJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this DataLabelingJob was created."
        },
        "currentSpend": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleTypeMoneyResponse",
          "description": "Estimated cost(in US dollars) that the DataLabelingJob has incurred to date."
        },
        "datasets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Dataset resource names. Right now we only support labeling from a single Dataset. Format: `projects/{project}/locations/{location}/datasets/{dataset}`"
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the DataLabelingJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a DataLabelingJob."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a DataLabelingJob. If set, this DataLabelingJob will be secured by this key. Note: Annotations created in the DataLabelingJob are associated with the EncryptionSpec of the Dataset they are exported to."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "DataLabelingJob errors. It is only populated when job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
        },
        "inputs": {
          "$ref": "pulumi.json#/Any",
          "description": "Input config parameters for the DataLabelingJob."
        },
        "inputsSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing the config for a specific type of DataLabelingJob. The schema files that can be used here are found in the https://storage.googleapis.com/google-cloud-aiplatform bucket in the /schema/datalabelingjob/inputs/ folder."
        },
        "instructionUri": {
          "type": "string",
          "description": "The Google Cloud Storage location of the instruction pdf. This pdf is shared with labelers, and provides detailed description on how to label DataItems in Datasets."
        },
        "labelerCount": {
          "type": "integer",
          "description": "Number of labelers to work on each DataItem."
        },
        "labelingProgress": {
          "type": "integer",
          "description": "Current labeling job progress percentage scaled in interval [0, 100], indicating the percentage of DataItems that has been finished."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your DataLabelingJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each DataLabelingJob: * \"aiplatform.googleapis.com/schema\": output only, its value is the inputs_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the DataLabelingJob."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specialistPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SpecialistPools' resource names associated with this job."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this DataLabelingJob was updated most recently."
        }
      },
      "type": "object",
      "required": [
        "activeLearningConfig",
        "annotationLabels",
        "createTime",
        "currentSpend",
        "datasets",
        "displayName",
        "encryptionSpec",
        "error",
        "inputs",
        "inputsSchemaUri",
        "instructionUri",
        "labelerCount",
        "labelingProgress",
        "labels",
        "location",
        "name",
        "project",
        "specialistPools",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "activeLearningConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ActiveLearningConfig",
          "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally via several iterations. For every iteration, it will select a batch of data based on the sampling strategy."
        },
        "annotationLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to assign to annotations generated by this DataLabelingJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "datasets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Dataset resource names. Right now we only support labeling from a single Dataset. Format: `projects/{project}/locations/{location}/datasets/{dataset}`"
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the DataLabelingJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a DataLabelingJob."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a DataLabelingJob. If set, this DataLabelingJob will be secured by this key. Note: Annotations created in the DataLabelingJob are associated with the EncryptionSpec of the Dataset they are exported to."
        },
        "inputs": {
          "$ref": "pulumi.json#/Any",
          "description": "Input config parameters for the DataLabelingJob."
        },
        "inputsSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing the config for a specific type of DataLabelingJob. The schema files that can be used here are found in the https://storage.googleapis.com/google-cloud-aiplatform bucket in the /schema/datalabelingjob/inputs/ folder."
        },
        "instructionUri": {
          "type": "string",
          "description": "The Google Cloud Storage location of the instruction pdf. This pdf is shared with labelers, and provides detailed description on how to label DataItems in Datasets."
        },
        "labelerCount": {
          "type": "integer",
          "description": "Number of labelers to work on each DataItem."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your DataLabelingJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each DataLabelingJob: * \"aiplatform.googleapis.com/schema\": output only, its value is the inputs_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specialistPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SpecialistPools' resource names associated with this job."
        }
      },
      "requiredInputs": [
        "datasets",
        "displayName",
        "inputs",
        "inputsSchemaUri",
        "instructionUri",
        "labelerCount"
      ]
    },
    "google-native:aiplatform/v1:Dataset": {
      "description": "Creates a Dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Dataset was created."
        },
        "dataItemCount": {
          "type": "string",
          "description": "The number of DataItems in this Dataset. Only apply for non-structured Dataset."
        },
        "description": {
          "type": "string",
          "description": "The description of the Dataset."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the Dataset. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a Dataset. If set, this Dataset and all sub-resources of this Dataset will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Datasets. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each Dataset: * \"aiplatform.googleapis.com/dataset_metadata_schema\": output only, its value is the metadata_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Additional information about the Dataset."
        },
        "metadataArtifact": {
          "type": "string",
          "description": "The resource name of the Artifact that was created in MetadataStore when creating the Dataset. The Artifact resource name pattern is `projects/{project}/locations/{location}/metadataStores/{metadata_store}/artifacts/{artifact}`."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing additional information about the Dataset. The schema is defined as an OpenAPI 3.0.2 Schema Object. The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/metadata/."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Dataset."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "savedQueries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SavedQueryResponse"
          },
          "description": "All SavedQueries belong to the Dataset will be returned in List/Get Dataset response. The annotation_specs field will not be populated except for UI cases which will only use annotation_spec_count. In CreateDataset request, a SavedQuery is created together if this field is set, up to one SavedQuery can be set in CreateDatasetRequest. The SavedQuery should not contain any AnnotationSpec."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Dataset was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dataItemCount",
        "description",
        "displayName",
        "encryptionSpec",
        "etag",
        "labels",
        "location",
        "metadata",
        "metadataArtifact",
        "metadataSchemaUri",
        "name",
        "project",
        "savedQueries",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the Dataset."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the Dataset. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a Dataset. If set, this Dataset and all sub-resources of this Dataset will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Datasets. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each Dataset: * \"aiplatform.googleapis.com/dataset_metadata_schema\": output only, its value is the metadata_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Additional information about the Dataset."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing additional information about the Dataset. The schema is defined as an OpenAPI 3.0.2 Schema Object. The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/metadata/."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "savedQueries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SavedQuery"
          },
          "description": "All SavedQueries belong to the Dataset will be returned in List/Get Dataset response. The annotation_specs field will not be populated except for UI cases which will only use annotation_spec_count. In CreateDataset request, a SavedQuery is created together if this field is set, up to one SavedQuery can be set in CreateDatasetRequest. The SavedQuery should not contain any AnnotationSpec."
        }
      },
      "requiredInputs": [
        "displayName",
        "metadata",
        "metadataSchemaUri"
      ]
    },
    "google-native:aiplatform/v1:DatasetVersion": {
      "description": "Create a version from a Dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigQueryDatasetName": {
          "type": "string",
          "description": "Name of the associated BigQuery dataset."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this DatasetVersion was created."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the DatasetVersion."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this DatasetVersion was last updated."
        }
      },
      "type": "object",
      "required": [
        "bigQueryDatasetName",
        "createTime",
        "datasetId",
        "etag",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:aiplatform/v1:DeploymentResourcePool": {
      "description": "Create a DeploymentResourcePool.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this DeploymentResourcePool was created."
        },
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DedicatedResourcesResponse",
          "description": "The underlying DedicatedResources that the DeploymentResourcePool uses."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the DeploymentResourcePool. Format: `projects/{project}/locations/{location}/deploymentResourcePools/{deployment_resource_pool}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dedicatedResources",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DedicatedResources",
          "description": "The underlying DedicatedResources that the DeploymentResourcePool uses."
        },
        "deploymentResourcePoolId": {
          "type": "string",
          "description": "The ID to use for the DeploymentResourcePool, which will become the final component of the DeploymentResourcePool's resource name. The maximum length is 63 characters, and valid characters are `/^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the DeploymentResourcePool. Format: `projects/{project}/locations/{location}/deploymentResourcePools/{deployment_resource_pool}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "dedicatedResources",
        "deploymentResourcePoolId"
      ]
    },
    "google-native:aiplatform/v1:Endpoint": {
      "description": "Creates an Endpoint.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Endpoint was created."
        },
        "deployedModels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedModelResponse"
          },
          "description": "The models deployed in this Endpoint. To add or remove DeployedModels use EndpointService.DeployModel and EndpointService.UndeployModel respectively."
        },
        "description": {
          "type": "string",
          "description": "The description of the Endpoint."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
          "deprecationMessage": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key."
        },
        "endpointId": {
          "type": "string",
          "description": "Immutable. The ID to use for endpoint, which will become the final component of the endpoint resource name. If not provided, Vertex AI will generate a value for this ID. If the first character is a letter, this value may be up to 63 characters, and valid characters are `[a-z0-9-]`. The last character must be a letter or number. If the first character is a number, this value may be up to 9 characters, and valid characters are `[0-9]` with no leading zeros. When using HTTP/JSON, this field is populated based on a query string argument, such as `?endpoint_id=12345`. This is the fallback for fields that are not included in either the URI or the body."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelDeploymentMonitoringJob": {
          "type": "string",
          "description": "Resource name of the Model Monitoring job associated with this Endpoint if monitoring is enabled by JobService.CreateModelDeploymentMonitoringJob. Format: `projects/{project}/locations/{location}/modelDeploymentMonitoringJobs/{model_deployment_monitoring_job}`"
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Endpoint."
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name."
        },
        "predictRequestResponseLoggingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredictRequestResponseLoggingConfigResponse",
          "description": "Configures the request-response logging for online prediction."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trafficSplit": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from a DeployedModel's ID to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel. If a DeployedModel's ID is not listed in this map, then it receives no traffic. The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Endpoint was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deployedModels",
        "description",
        "displayName",
        "enablePrivateServiceConnect",
        "encryptionSpec",
        "etag",
        "labels",
        "location",
        "modelDeploymentMonitoringJob",
        "name",
        "network",
        "predictRequestResponseLoggingConfig",
        "project",
        "trafficSplit",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the Endpoint."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
          "deprecationMessage": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key."
        },
        "endpointId": {
          "type": "string",
          "description": "Immutable. The ID to use for endpoint, which will become the final component of the endpoint resource name. If not provided, Vertex AI will generate a value for this ID. If the first character is a letter, this value may be up to 63 characters, and valid characters are `[a-z0-9-]`. The last character must be a letter or number. If the first character is a number, this value may be up to 9 characters, and valid characters are `[0-9]` with no leading zeros. When using HTTP/JSON, this field is populated based on a query string argument, such as `?endpoint_id=12345`. This is the fallback for fields that are not included in either the URI or the body."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name."
        },
        "predictRequestResponseLoggingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredictRequestResponseLoggingConfig",
          "description": "Configures the request-response logging for online prediction."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trafficSplit": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from a DeployedModel's ID to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel. If a DeployedModel's ID is not listed in this map, then it receives no traffic. The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1:EntityType": {
      "description": "Creates a new EntityType in a given Featurestore.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this EntityType was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the EntityType."
        },
        "entityTypeId": {
          "type": "string",
          "description": "Required. The ID to use for the EntityType, which will become the final component of the EntityType's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within a featurestore.",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your EntityTypes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one EntityType (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigResponse",
          "description": "Optional. The default monitoring configuration for all Features with value type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 under this EntityType. If this is populated with [FeaturestoreMonitoringConfig.monitoring_interval] specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring is disabled."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the EntityType. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` The last part entity_type is assigned by the client. The entity_type can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z and underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given a featurestore."
        },
        "offlineStorageTtlDays": {
          "type": "integer",
          "description": "Optional. Config for data retention policy in offline storage. TTL in days for feature values that will be stored in offline storage. The Feature Store offline storage periodically removes obsolete feature values older than `offline_storage_ttl_days` since the feature generation time. If unset (or explicitly set to 0), default to 4000 days TTL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this EntityType was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "entityTypeId",
        "etag",
        "featurestoreId",
        "labels",
        "location",
        "monitoringConfig",
        "name",
        "offlineStorageTtlDays",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the EntityType."
        },
        "entityTypeId": {
          "type": "string",
          "description": "Required. The ID to use for the EntityType, which will become the final component of the EntityType's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within a featurestore.",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your EntityTypes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one EntityType (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfig",
          "description": "Optional. The default monitoring configuration for all Features with value type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 under this EntityType. If this is populated with [FeaturestoreMonitoringConfig.monitoring_interval] specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring is disabled."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the EntityType. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` The last part entity_type is assigned by the client. The entity_type can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z and underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given a featurestore."
        },
        "offlineStorageTtlDays": {
          "type": "integer",
          "description": "Optional. Config for data retention policy in offline storage. TTL in days for feature values that will be stored in offline storage. The Feature Store offline storage periodically removes obsolete feature values older than `offline_storage_ttl_days` since the feature generation time. If unset (or explicitly set to 0), default to 4000 days TTL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "entityTypeId",
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1:Execution": {
      "description": "Creates an Execution associated with a MetadataStore.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Execution was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Execution"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Execution. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "executionId": {
          "type": "string",
          "description": "The {execution} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/executions/{execution}` If not provided, the Execution's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Executions in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Execution.)"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Executions. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Execution (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Execution. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Execution."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in `schema_title` to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "type": "string",
          "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Execution was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "metadata",
        "metadataStoreId",
        "name",
        "project",
        "schemaTitle",
        "schemaVersion",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the Execution"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Execution. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "executionId": {
          "type": "string",
          "description": "The {execution} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/executions/{execution}` If not provided, the Execution's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Executions in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Execution.)"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Executions. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Execution (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Execution. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in `schema_title` to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:ExecutionState",
          "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions."
        }
      },
      "requiredInputs": [
        "metadataStoreId"
      ]
    },
    "google-native:aiplatform/v1:Experiment": {
      "description": "Creates a TensorboardExperiment.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardExperiment was created."
        },
        "description": {
          "type": "string",
          "description": "Description of this TensorboardExperiment."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardExperiment."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your TensorboardExperiment. Label keys and values cannot be longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `aiplatform.googleapis.com/` and are immutable. The following system labels exist for each Dataset: * `aiplatform.googleapis.com/dataset_metadata_schema`: output only. Its value is the metadata_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the TensorboardExperiment. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "source": {
          "type": "string",
          "description": "Immutable. Source of the TensorboardExperiment. Example: a custom training job."
        },
        "tensorboardExperimentId": {
          "type": "string",
          "description": "Required. The ID to use for the Tensorboard experiment, which becomes the final component of the Tensorboard experiment's resource name. This value should be 1-128 characters, and valid characters are `/a-z-/`.",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardExperiment was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "source",
        "tensorboardExperimentId",
        "tensorboardId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this TensorboardExperiment."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardExperiment."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your TensorboardExperiment. Label keys and values cannot be longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `aiplatform.googleapis.com/` and are immutable. The following system labels exist for each Dataset: * `aiplatform.googleapis.com/dataset_metadata_schema`: output only. Its value is the metadata_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "source": {
          "type": "string",
          "description": "Immutable. Source of the TensorboardExperiment. Example: a custom training job."
        },
        "tensorboardExperimentId": {
          "type": "string",
          "description": "Required. The ID to use for the Tensorboard experiment, which becomes the final component of the Tensorboard experiment's resource name. This value should be 1-128 characters, and valid characters are `/a-z-/`.",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "tensorboardExperimentId",
        "tensorboardId"
      ]
    },
    "google-native:aiplatform/v1:FeatureGroup": {
      "description": "Creates a new FeatureGroup in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigQuery": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureGroupBigQueryResponse",
          "description": "Indicates that features for this group come from BigQuery Table/View. By default treats the source as a sparse time series source, which is required to have an entity_id and a feature_timestamp column in the source."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this FeatureGroup was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the FeatureGroup."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureGroupId": {
          "type": "string",
          "description": "Required. The ID to use for this FeatureGroup, which will become the final component of the FeatureGroup's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureGroup. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureGroup(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the FeatureGroup. Format: `projects/{project}/locations/{location}/featureGroups/{featureGroup}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this FeatureGroup was last updated."
        }
      },
      "type": "object",
      "required": [
        "bigQuery",
        "createTime",
        "description",
        "etag",
        "featureGroupId",
        "labels",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "bigQuery": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureGroupBigQuery",
          "description": "Indicates that features for this group come from BigQuery Table/View. By default treats the source as a sparse time series source, which is required to have an entity_id and a feature_timestamp column in the source."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the FeatureGroup."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureGroupId": {
          "type": "string",
          "description": "Required. The ID to use for this FeatureGroup, which will become the final component of the FeatureGroup's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureGroup. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureGroup(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "featureGroupId"
      ]
    },
    "google-native:aiplatform/v1:FeatureGroupFeature": {
      "description": "Creates a new Feature in a given FeatureGroup.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Feature."
        },
        "disableMonitoring": {
          "type": "boolean",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "featureId": {
          "type": "string",
          "description": "Required. The ID to use for the Feature, which will become the final component of the Feature's resource name. This value may be up to 128 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within an EntityType/FeatureGroup.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringStatsAnomalies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureMonitoringStatsAnomalyResponse"
          },
          "description": "Only applicable for Vertex AI Feature Store (Legacy). The list of historical stats and anomalies with specified objectives."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was most recently updated."
        },
        "valueType": {
          "type": "string",
          "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value."
        },
        "versionColumnName": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "disableMonitoring",
        "etag",
        "featureGroupId",
        "featureId",
        "labels",
        "location",
        "monitoringStatsAnomalies",
        "name",
        "project",
        "updateTime",
        "valueType",
        "versionColumnName"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the Feature."
        },
        "disableMonitoring": {
          "type": "boolean",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "featureId": {
          "type": "string",
          "description": "Required. The ID to use for the Feature, which will become the final component of the Feature's resource name. This value may be up to 128 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within an EntityType/FeatureGroup.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "valueType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:FeatureGroupFeatureValueType",
          "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value."
        },
        "versionColumnName": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id."
        }
      },
      "requiredInputs": [
        "featureGroupId",
        "featureId"
      ]
    },
    "google-native:aiplatform/v1:FeatureOnlineStore": {
      "description": "Creates a new FeatureOnlineStore in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigtable": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtableResponse",
          "description": "Contains settings for the Cloud Bigtable instance that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this FeatureOnlineStore was created."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureOnlineStoreId": {
          "type": "string",
          "description": "Required. The ID to use for this FeatureOnlineStore, which will become the final component of the FeatureOnlineStore's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureOnlineStore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the FeatureOnlineStore. Format: `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the featureOnlineStore."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this FeatureOnlineStore was last updated."
        }
      },
      "type": "object",
      "required": [
        "bigtable",
        "createTime",
        "etag",
        "featureOnlineStoreId",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "bigtable": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtable",
          "description": "Contains settings for the Cloud Bigtable instance that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureOnlineStoreId": {
          "type": "string",
          "description": "Required. The ID to use for this FeatureOnlineStore, which will become the final component of the FeatureOnlineStore's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureOnlineStore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "featureOnlineStoreId"
      ]
    },
    "google-native:aiplatform/v1:FeatureStoreFeature": {
      "description": "Creates a new Feature in a given EntityType.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Feature."
        },
        "disableMonitoring": {
          "type": "boolean",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType."
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureId": {
          "type": "string",
          "description": "Required. The ID to use for the Feature, which will become the final component of the Feature's resource name. This value may be up to 128 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within an EntityType/FeatureGroup.",
          "replaceOnChanges": true
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringStatsAnomalies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureMonitoringStatsAnomalyResponse"
          },
          "description": "Only applicable for Vertex AI Feature Store (Legacy). The list of historical stats and anomalies with specified objectives."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was most recently updated."
        },
        "valueType": {
          "type": "string",
          "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value."
        },
        "versionColumnName": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "disableMonitoring",
        "entityTypeId",
        "etag",
        "featureId",
        "featurestoreId",
        "labels",
        "location",
        "monitoringStatsAnomalies",
        "name",
        "project",
        "updateTime",
        "valueType",
        "versionColumnName"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the Feature."
        },
        "disableMonitoring": {
          "type": "boolean",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType."
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureId": {
          "type": "string",
          "description": "Required. The ID to use for the Feature, which will become the final component of the Feature's resource name. This value may be up to 128 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within an EntityType/FeatureGroup.",
          "replaceOnChanges": true
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "valueType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:FeatureStoreFeatureValueType",
          "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value."
        },
        "versionColumnName": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id."
        }
      },
      "requiredInputs": [
        "entityTypeId",
        "featureId",
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1:FeatureView": {
      "description": "Creates a new FeatureView in a given FeatureOnlineStore.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigQuerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewBigQuerySourceResponse",
          "description": "Optional. Configures how data is supposed to be extracted from a BigQuery source to be loaded onto the FeatureOnlineStore."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this FeatureView was created."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureOnlineStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "featureRegistrySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceResponse",
          "description": "Optional. Configures the features from a Feature Registry source that need to be loaded onto the FeatureOnlineStore."
        },
        "featureViewId": {
          "type": "string",
          "description": "Required. The ID to use for the FeatureView, which will become the final component of the FeatureView's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within a FeatureOnlineStore.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureViews. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the FeatureView. Format: `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runSyncImmediately": {
          "type": "boolean",
          "description": "Immutable. If set to true, one on demand sync will be run immediately, regardless whether the FeatureView.sync_config is configured or not."
        },
        "syncConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewSyncConfigResponse",
          "description": "Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this FeatureView was last updated."
        }
      },
      "type": "object",
      "required": [
        "bigQuerySource",
        "createTime",
        "etag",
        "featureOnlineStoreId",
        "featureRegistrySource",
        "featureViewId",
        "labels",
        "location",
        "name",
        "project",
        "syncConfig",
        "updateTime"
      ],
      "inputProperties": {
        "bigQuerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewBigQuerySource",
          "description": "Optional. Configures how data is supposed to be extracted from a BigQuery source to be loaded onto the FeatureOnlineStore."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureOnlineStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "featureRegistrySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySource",
          "description": "Optional. Configures the features from a Feature Registry source that need to be loaded onto the FeatureOnlineStore."
        },
        "featureViewId": {
          "type": "string",
          "description": "Required. The ID to use for the FeatureView, which will become the final component of the FeatureView's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within a FeatureOnlineStore.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureViews. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runSyncImmediately": {
          "type": "boolean",
          "description": "Immutable. If set to true, one on demand sync will be run immediately, regardless whether the FeatureView.sync_config is configured or not."
        },
        "syncConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewSyncConfig",
          "description": "Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving."
        }
      },
      "requiredInputs": [
        "featureOnlineStoreId",
        "featureViewId"
      ]
    },
    "google-native:aiplatform/v1:Featurestore": {
      "description": "Creates a new Featurestore in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Featurestore was created."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Optional. Customer-managed encryption key spec for data storage. If set, both of the online and offline data storage will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featurestoreId": {
          "type": "string",
          "description": "Required. The ID to use for this Featurestore, which will become the final component of the Featurestore's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Featurestore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Featurestore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Featurestore. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}`"
        },
        "onlineServingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigResponse",
          "description": "Optional. Config for online storage resources. The field should not co-exist with the field of `OnlineStoreReplicationConfig`. If both of it and OnlineStoreReplicationConfig are unset, the feature store will not have an online store and cannot be used for online serving."
        },
        "onlineStorageTtlDays": {
          "type": "integer",
          "description": "Optional. TTL in days for feature values that will be stored in online serving storage. The Feature Store online storage periodically removes obsolete feature values older than `online_storage_ttl_days` since the feature generation time. Note that `online_storage_ttl_days` should be less than or equal to `offline_storage_ttl_days` for each EntityType under a featurestore. If not set, default to 4000 days"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the featurestore."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Featurestore was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "encryptionSpec",
        "etag",
        "featurestoreId",
        "labels",
        "location",
        "name",
        "onlineServingConfig",
        "onlineStorageTtlDays",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Optional. Customer-managed encryption key spec for data storage. If set, both of the online and offline data storage will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featurestoreId": {
          "type": "string",
          "description": "Required. The ID to use for this Featurestore, which will become the final component of the Featurestore's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Featurestore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Featurestore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "onlineServingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfig",
          "description": "Optional. Config for online storage resources. The field should not co-exist with the field of `OnlineStoreReplicationConfig`. If both of it and OnlineStoreReplicationConfig are unset, the feature store will not have an online store and cannot be used for online serving."
        },
        "onlineStorageTtlDays": {
          "type": "integer",
          "description": "Optional. TTL in days for feature values that will be stored in online serving storage. The Feature Store online storage periodically removes obsolete feature values older than `online_storage_ttl_days` since the feature generation time. Note that `online_storage_ttl_days` should be less than or equal to `offline_storage_ttl_days` for each EntityType under a featurestore. If not set, default to 4000 days"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1:FeaturestoreEntityTypeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1:FeaturestoreEntityTypeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1:FeaturestoreEntityTypeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "entityTypeId",
        "etag",
        "featurestoreId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "entityTypeId",
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1:FeaturestoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1:FeaturestoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1:FeaturestoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "featurestoreId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1:HyperparameterTuningJob": {
      "description": "Creates a HyperparameterTuningJob\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the HyperparameterTuningJob was created."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize HyperparameterTuningJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxFailedTrialCount": {
          "type": "integer",
          "description": "The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails."
        },
        "maxTrialCount": {
          "type": "integer",
          "description": "The desired total number of Trials."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the HyperparameterTuningJob."
        },
        "parallelTrialCount": {
          "type": "integer",
          "description": "The desired number of Trials to run in parallel."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "studySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecResponse",
          "description": "Study configuration of the HyperparameterTuningJob."
        },
        "trialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpecResponse",
          "description": "The spec of a trial job. The same spec applies to the CustomJobs created in all the trials."
        },
        "trials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TrialResponse"
          },
          "description": "Trials of the HyperparameterTuningJob."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the HyperparameterTuningJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "labels",
        "location",
        "maxFailedTrialCount",
        "maxTrialCount",
        "name",
        "parallelTrialCount",
        "project",
        "startTime",
        "state",
        "studySpec",
        "trialJobSpec",
        "trials",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize HyperparameterTuningJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxFailedTrialCount": {
          "type": "integer",
          "description": "The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails."
        },
        "maxTrialCount": {
          "type": "integer",
          "description": "The desired total number of Trials."
        },
        "parallelTrialCount": {
          "type": "integer",
          "description": "The desired number of Trials to run in parallel."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "studySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpec",
          "description": "Study configuration of the HyperparameterTuningJob."
        },
        "trialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpec",
          "description": "The spec of a trial job. The same spec applies to the CustomJobs created in all the trials."
        }
      },
      "requiredInputs": [
        "displayName",
        "maxTrialCount",
        "parallelTrialCount",
        "studySpec",
        "trialJobSpec"
      ]
    },
    "google-native:aiplatform/v1:Index": {
      "description": "Creates an Index.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Index was created."
        },
        "deployedIndexes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedIndexRefResponse"
          },
          "description": "The pointers to DeployedIndexes created from this Index. An Index can be only deleted if all its DeployedIndexes had been undeployed first."
        },
        "description": {
          "type": "string",
          "description": "The description of the Index."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Immutable. Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "indexStats": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1IndexStatsResponse",
          "description": "Stats of the index resource."
        },
        "indexUpdateMethod": {
          "type": "string",
          "description": "Immutable. The update method to use with this Index. If not set, BATCH_UPDATE will be used by default."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Indexes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "An additional information about the Index; the schema of the metadata can be found in metadata_schema."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Index, that is specific to it. Unset if the Index does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Index."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Index was most recently updated. This also includes any update to the contents of the Index. Note that Operations working on this Index may have their Operations.metadata.generic_metadata.update_time a little after the value of this timestamp, yet that does not mean their results are not already reflected in the Index. Result of any successfully completed Operation on the Index is reflected in it."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deployedIndexes",
        "description",
        "displayName",
        "encryptionSpec",
        "etag",
        "indexStats",
        "indexUpdateMethod",
        "labels",
        "location",
        "metadata",
        "metadataSchemaUri",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the Index."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Immutable. Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "indexUpdateMethod": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:IndexIndexUpdateMethod",
          "description": "Immutable. The update method to use with this Index. If not set, BATCH_UPDATE will be used by default."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Indexes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "An additional information about the Index; the schema of the metadata can be found in metadata_schema."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Index, that is specific to it. Unset if the Index does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1:IndexEndpoint": {
      "description": "Creates an IndexEndpoint.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this IndexEndpoint was created."
        },
        "deployedIndexes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedIndexResponse"
          },
          "description": "The indexes deployed in this endpoint."
        },
        "description": {
          "type": "string",
          "description": "The description of the IndexEndpoint."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the IndexEndpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
          "deprecationMessage": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Immutable. Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your IndexEndpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the IndexEndpoint."
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the IndexEndpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. network and private_service_connect_config are mutually exclusive. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in '12345', and {network} is network name."
        },
        "privateServiceConnectConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PrivateServiceConnectConfigResponse",
          "description": "Optional. Configuration for private service connect. network and private_service_connect_config are mutually exclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicEndpointDomainName": {
          "type": "string",
          "description": "If public_endpoint_enabled is true, this field will be populated with the domain name to use for this index endpoint."
        },
        "publicEndpointEnabled": {
          "type": "boolean",
          "description": "Optional. If true, the deployed index will be accessible through public endpoint."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this IndexEndpoint was last updated. This timestamp is not updated when the endpoint's DeployedIndexes are updated, e.g. due to updates of the original Indexes they are the deployments of."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deployedIndexes",
        "description",
        "displayName",
        "enablePrivateServiceConnect",
        "encryptionSpec",
        "etag",
        "labels",
        "location",
        "name",
        "network",
        "privateServiceConnectConfig",
        "project",
        "publicEndpointDomainName",
        "publicEndpointEnabled",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the IndexEndpoint."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the IndexEndpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
          "deprecationMessage": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Immutable. Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your IndexEndpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the IndexEndpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. network and private_service_connect_config are mutually exclusive. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in '12345', and {network} is network name."
        },
        "privateServiceConnectConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PrivateServiceConnectConfig",
          "description": "Optional. Configuration for private service connect. network and private_service_connect_config are mutually exclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicEndpointEnabled": {
          "type": "boolean",
          "description": "Optional. If true, the deployed index will be accessible through public endpoint."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1:MetadataSchema": {
      "description": "Creates a MetadataSchema.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this MetadataSchema was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Metadata Schema"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataSchemaId": {
          "type": "string",
          "description": "The {metadata_schema} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/metadataSchemas/{metadataschema}` If not provided, the MetadataStore's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all MetadataSchemas in the parent Location. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting MetadataSchema.)"
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the MetadataSchema."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schema": {
          "type": "string",
          "description": "The raw YAML string representation of the MetadataSchema. The combination of [MetadataSchema.version] and the schema name given by `title` in [MetadataSchema.schema] must be unique within a MetadataStore. The schema is defined as an OpenAPI 3.0.2 [MetadataSchema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)"
        },
        "schemaType": {
          "type": "string",
          "description": "The type of the MetadataSchema. This is a property that identifies which metadata types will use the MetadataSchema."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the MetadataSchema. The version's format must match the following regular expression: `^[0-9]+.+.+$`, which would allow to order/compare different versions. Example: 1.0.0, 1.0.1, etc."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "metadataStoreId",
        "name",
        "project",
        "schema",
        "schemaType",
        "schemaVersion"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the Metadata Schema"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataSchemaId": {
          "type": "string",
          "description": "The {metadata_schema} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/metadataSchemas/{metadataschema}` If not provided, the MetadataStore's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all MetadataSchemas in the parent Location. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting MetadataSchema.)"
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schema": {
          "type": "string",
          "description": "The raw YAML string representation of the MetadataSchema. The combination of [MetadataSchema.version] and the schema name given by `title` in [MetadataSchema.schema] must be unique within a MetadataStore. The schema is defined as an OpenAPI 3.0.2 [MetadataSchema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)"
        },
        "schemaType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:MetadataSchemaSchemaType",
          "description": "The type of the MetadataSchema. This is a property that identifies which metadata types will use the MetadataSchema."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the MetadataSchema. The version's format must match the following regular expression: `^[0-9]+.+.+$`, which would allow to order/compare different versions. Example: 1.0.0, 1.0.1, etc."
        }
      },
      "requiredInputs": [
        "metadataStoreId",
        "schema"
      ]
    },
    "google-native:aiplatform/v1:MetadataStore": {
      "description": "Initializes a MetadataStore, including allocation of resources.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this MetadataStore was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the MetadataStore."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a Metadata Store. If set, this Metadata Store and all sub-resources of this Metadata Store are secured using this key."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataStoreId": {
          "type": "string",
          "description": "The {metadatastore} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}` If not provided, the MetadataStore's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all MetadataStores in the parent Location. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting MetadataStore.)"
        },
        "name": {
          "type": "string",
          "description": "The resource name of the MetadataStore instance."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MetadataStoreMetadataStoreStateResponse",
          "description": "State information of the MetadataStore."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this MetadataStore was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "encryptionSpec",
        "location",
        "name",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the MetadataStore."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a Metadata Store. If set, this Metadata Store and all sub-resources of this Metadata Store are secured using this key."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataStoreId": {
          "type": "string",
          "description": "The {metadatastore} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}` If not provided, the MetadataStore's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all MetadataStores in the parent Location. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting MetadataStore.)"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:aiplatform/v1:ModelDeploymentMonitoringJob": {
      "description": "Creates a ModelDeploymentMonitoringJob. It will run periodically on a configured interval.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "analysisInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri describing the format of a single instance that you want Tensorflow Data Validation (TFDV) to analyze. If this field is empty, all the feature data types are inferred from predict_instance_schema_uri, meaning that TFDV will use the data in the exact format(data type) as prediction request/response. If there are any data type differences between predict instance and TFDV instance, this field can be used to override the schema. For models trained with Vertex AI, this field must be set as all the fields in predict instance formatted as string."
        },
        "bigqueryTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringBigQueryTableResponse"
          },
          "description": "The created bigquery tables for the job under customer project. Customer could do their own query & analysis. There could be 4 log tables in maximum: 1. Training data logging predict request/response 2. Serving data logging predict request/response"
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this ModelDeploymentMonitoringJob was created."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the ModelDeploymentMonitoringJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a ModelDeploymentMonitoringJob."
        },
        "enableMonitoringPipelineLogs": {
          "type": "boolean",
          "description": "If true, the scheduled monitoring pipeline logs are sent to Google Cloud Logging, including pipeline status and anomalies detected. Please note the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging#pricing)."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a ModelDeploymentMonitoringJob. If set, this ModelDeploymentMonitoringJob and all sub-resources of this ModelDeploymentMonitoringJob will be secured by this key."
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint resource name. Format: `projects/{project}/locations/{location}/endpoints/{endpoint}`"
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "Only populated when the job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your ModelDeploymentMonitoringJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "latestMonitoringPipelineMetadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringJobLatestMonitoringPipelineMetadataResponse",
          "description": "Latest triggered monitoring pipeline metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logTtl": {
          "type": "string",
          "description": "The TTL of BigQuery tables in user projects which stores logs. A day is the basic unit of the TTL and we take the ceil of TTL/86400(a day). e.g. { second: 3600} indicates ttl = 1 day."
        },
        "loggingSamplingStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SamplingStrategyResponse",
          "description": "Sample Strategy for logging."
        },
        "modelDeploymentMonitoringObjectiveConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringObjectiveConfigResponse"
          },
          "description": "The config for monitoring objectives. This is a per DeployedModel config. Each DeployedModel needs to be configured separately."
        },
        "modelDeploymentMonitoringScheduleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringScheduleConfigResponse",
          "description": "Schedule config for running the monitoring job."
        },
        "modelMonitoringAlertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringAlertConfigResponse",
          "description": "Alert config for model monitoring."
        },
        "name": {
          "type": "string",
          "description": "Resource name of a ModelDeploymentMonitoringJob."
        },
        "nextScheduleTime": {
          "type": "string",
          "description": "Timestamp when this monitoring pipeline will be scheduled to run for the next round."
        },
        "predictInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri describing the format of a single instance, which are given to format this Endpoint's prediction (and explanation). If not set, we will generate predict schema from collected predict requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "samplePredictInstance": {
          "$ref": "pulumi.json#/Any",
          "description": "Sample Predict instance, same format as PredictRequest.instances, this can be set as a replacement of ModelDeploymentMonitoringJob.predict_instance_schema_uri. If not set, we will generate predict schema from collected predict requests."
        },
        "scheduleState": {
          "type": "string",
          "description": "Schedule state when the monitoring job is in Running state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the monitoring job. When the job is still creating, the state will be 'PENDING'. Once the job is successfully created, the state will be 'RUNNING'. Pause the job, the state will be 'PAUSED'. Resume the job, the state will return to 'RUNNING'."
        },
        "statsAnomaliesBaseDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestinationResponse",
          "description": "Stats anomalies base folder path."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this ModelDeploymentMonitoringJob was updated most recently."
        }
      },
      "type": "object",
      "required": [
        "analysisInstanceSchemaUri",
        "bigqueryTables",
        "createTime",
        "displayName",
        "enableMonitoringPipelineLogs",
        "encryptionSpec",
        "endpoint",
        "error",
        "labels",
        "latestMonitoringPipelineMetadata",
        "location",
        "logTtl",
        "loggingSamplingStrategy",
        "modelDeploymentMonitoringObjectiveConfigs",
        "modelDeploymentMonitoringScheduleConfig",
        "modelMonitoringAlertConfig",
        "name",
        "nextScheduleTime",
        "predictInstanceSchemaUri",
        "project",
        "samplePredictInstance",
        "scheduleState",
        "state",
        "statsAnomaliesBaseDirectory",
        "updateTime"
      ],
      "inputProperties": {
        "analysisInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri describing the format of a single instance that you want Tensorflow Data Validation (TFDV) to analyze. If this field is empty, all the feature data types are inferred from predict_instance_schema_uri, meaning that TFDV will use the data in the exact format(data type) as prediction request/response. If there are any data type differences between predict instance and TFDV instance, this field can be used to override the schema. For models trained with Vertex AI, this field must be set as all the fields in predict instance formatted as string."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the ModelDeploymentMonitoringJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a ModelDeploymentMonitoringJob."
        },
        "enableMonitoringPipelineLogs": {
          "type": "boolean",
          "description": "If true, the scheduled monitoring pipeline logs are sent to Google Cloud Logging, including pipeline status and anomalies detected. Please note the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging#pricing)."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a ModelDeploymentMonitoringJob. If set, this ModelDeploymentMonitoringJob and all sub-resources of this ModelDeploymentMonitoringJob will be secured by this key."
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint resource name. Format: `projects/{project}/locations/{location}/endpoints/{endpoint}`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your ModelDeploymentMonitoringJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logTtl": {
          "type": "string",
          "description": "The TTL of BigQuery tables in user projects which stores logs. A day is the basic unit of the TTL and we take the ceil of TTL/86400(a day). e.g. { second: 3600} indicates ttl = 1 day."
        },
        "loggingSamplingStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SamplingStrategy",
          "description": "Sample Strategy for logging."
        },
        "modelDeploymentMonitoringObjectiveConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringObjectiveConfig"
          },
          "description": "The config for monitoring objectives. This is a per DeployedModel config. Each DeployedModel needs to be configured separately."
        },
        "modelDeploymentMonitoringScheduleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringScheduleConfig",
          "description": "Schedule config for running the monitoring job."
        },
        "modelMonitoringAlertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringAlertConfig",
          "description": "Alert config for model monitoring."
        },
        "predictInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri describing the format of a single instance, which are given to format this Endpoint's prediction (and explanation). If not set, we will generate predict schema from collected predict requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "samplePredictInstance": {
          "$ref": "pulumi.json#/Any",
          "description": "Sample Predict instance, same format as PredictRequest.instances, this can be set as a replacement of ModelDeploymentMonitoringJob.predict_instance_schema_uri. If not set, we will generate predict schema from collected predict requests."
        },
        "statsAnomaliesBaseDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestination",
          "description": "Stats anomalies base folder path."
        }
      },
      "requiredInputs": [
        "displayName",
        "endpoint",
        "loggingSamplingStrategy",
        "modelDeploymentMonitoringObjectiveConfigs",
        "modelDeploymentMonitoringScheduleConfig"
      ]
    },
    "google-native:aiplatform/v1:NasJob": {
      "description": "Creates a NasJob\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the NasJob was created."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the NasJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enableRestrictedImageTraining": {
          "type": "boolean",
          "description": "Optional. Enable a separation of Custom model training and restricted image training for tenant project."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key options for a NasJob. If this is set, then all resources created by the NasJob will be encrypted with the provided encryption key."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the NasJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize NasJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the NasJob."
        },
        "nasJobOutput": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobOutputResponse",
          "description": "Output of the NasJob."
        },
        "nasJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecResponse",
          "description": "The specification of a NasJob."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the NasJob for the first time entered the `JOB_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the NasJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "enableRestrictedImageTraining",
        "encryptionSpec",
        "endTime",
        "error",
        "labels",
        "location",
        "name",
        "nasJobOutput",
        "nasJobSpec",
        "project",
        "startTime",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the NasJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enableRestrictedImageTraining": {
          "type": "boolean",
          "description": "Optional. Enable a separation of Custom model training and restricted image training for tenant project."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key options for a NasJob. If this is set, then all resources created by the NasJob will be encrypted with the provided encryption key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize NasJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "nasJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpec",
          "description": "The specification of a NasJob."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "nasJobSpec"
      ]
    },
    "google-native:aiplatform/v1:NotebookRuntimeTemplate": {
      "description": "Creates a NotebookRuntimeTemplate.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this NotebookRuntimeTemplate was created."
        },
        "dataPersistentDiskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PersistentDiskSpecResponse",
          "description": "Optional. The specification of persistent disk attached to the runtime as data disk storage."
        },
        "description": {
          "type": "string",
          "description": "The description of the NotebookRuntimeTemplate."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the NotebookRuntimeTemplate. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "eucConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NotebookEucConfigResponse",
          "description": "EUC configuration of the NotebookRuntimeTemplate."
        },
        "idleShutdownConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NotebookIdleShutdownConfigResponse",
          "description": "The idle shutdown configuration of NotebookRuntimeTemplate. This config will only be set when idle shutdown is enabled."
        },
        "isDefault": {
          "type": "boolean",
          "description": "The default template to use if not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize the NotebookRuntimeTemplates. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpecResponse",
          "description": "Optional. Immutable. The specification of a single machine for the template."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the NotebookRuntimeTemplate."
        },
        "networkSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NetworkSpecResponse",
          "description": "Optional. Network spec."
        },
        "notebookRuntimeTemplateId": {
          "type": "string",
          "description": "Optional. User specified ID for the notebook runtime template."
        },
        "notebookRuntimeType": {
          "type": "string",
          "description": "Optional. Immutable. The type of the notebook runtime template."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the runtime workload runs as. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this NotebookRuntimeTemplate was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dataPersistentDiskSpec",
        "description",
        "displayName",
        "etag",
        "eucConfig",
        "idleShutdownConfig",
        "isDefault",
        "labels",
        "location",
        "machineSpec",
        "name",
        "networkSpec",
        "notebookRuntimeType",
        "project",
        "serviceAccount",
        "updateTime"
      ],
      "inputProperties": {
        "dataPersistentDiskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PersistentDiskSpec",
          "description": "Optional. The specification of persistent disk attached to the runtime as data disk storage."
        },
        "description": {
          "type": "string",
          "description": "The description of the NotebookRuntimeTemplate."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the NotebookRuntimeTemplate. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "eucConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NotebookEucConfig",
          "description": "EUC configuration of the NotebookRuntimeTemplate."
        },
        "idleShutdownConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NotebookIdleShutdownConfig",
          "description": "The idle shutdown configuration of NotebookRuntimeTemplate. This config will only be set when idle shutdown is enabled."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize the NotebookRuntimeTemplates. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpec",
          "description": "Optional. Immutable. The specification of a single machine for the template."
        },
        "networkSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NetworkSpec",
          "description": "Optional. Network spec."
        },
        "notebookRuntimeTemplateId": {
          "type": "string",
          "description": "Optional. User specified ID for the notebook runtime template."
        },
        "notebookRuntimeType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:NotebookRuntimeTemplateNotebookRuntimeType",
          "description": "Optional. Immutable. The type of the notebook runtime template."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the runtime workload runs as. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1:NotebookRuntimeTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1:NotebookRuntimeTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1:NotebookRuntimeTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notebookRuntimeTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "notebookRuntimeTemplateId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notebookRuntimeTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "notebookRuntimeTemplateId"
      ]
    },
    "google-native:aiplatform/v1:PipelineJob": {
      "description": "Creates a PipelineJob. A PipelineJob will run immediately when created.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Pipeline creation time."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
        },
        "endTime": {
          "type": "string",
          "description": "Pipeline end time."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "The error that occurred during pipeline execution. Only populated when the pipeline's state is FAILED or CANCELLED."
        },
        "jobDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobDetailResponse",
          "description": "The details of pipeline run. Not available in the list view."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the PipelineJob."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network."
        },
        "pipelineJobId": {
          "type": "string",
          "description": "The ID to use for the PipelineJob, which will become the final component of the PipelineJob name. If not provided, an ID will be automatically generated. This value should be less than 128 characters, and valid characters are `/a-z-/`."
        },
        "pipelineSpec": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The spec of the pipeline."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobRuntimeConfigResponse",
          "description": "Runtime config of the pipeline."
        },
        "scheduleName": {
          "type": "string",
          "description": "The schedule resource name. Only returned if the Pipeline is created by Schedule API."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "startTime": {
          "type": "string",
          "description": "Pipeline start time."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "templateMetadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineTemplateMetadataResponse",
          "description": "Pipeline template metadata. Will fill up fields if PipelineJob.template_uri is from supported template registry."
        },
        "templateUri": {
          "type": "string",
          "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry & Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this PipelineJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "jobDetail",
        "labels",
        "location",
        "name",
        "network",
        "pipelineSpec",
        "project",
        "reservedIpRanges",
        "runtimeConfig",
        "scheduleName",
        "serviceAccount",
        "startTime",
        "state",
        "templateMetadata",
        "templateUri",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network."
        },
        "pipelineJobId": {
          "type": "string",
          "description": "The ID to use for the PipelineJob, which will become the final component of the PipelineJob name. If not provided, an ID will be automatically generated. This value should be less than 128 characters, and valid characters are `/a-z-/`."
        },
        "pipelineSpec": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The spec of the pipeline."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobRuntimeConfig",
          "description": "Runtime config of the pipeline."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "templateUri": {
          "type": "string",
          "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry & Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template."
        }
      }
    },
    "google-native:aiplatform/v1:Run": {
      "description": "Creates a TensorboardRun.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardRun was created."
        },
        "description": {
          "type": "string",
          "description": "Description of this TensorboardRun."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardRun. This value must be unique among all TensorboardRuns belonging to the same parent TensorboardExperiment."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "experimentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your TensorboardRuns. This field will be used to filter and visualize Runs in the Tensorboard UI. For example, a Vertex AI training job can set a label aiplatform.googleapis.com/training_job_id=xxxxx to all the runs created within that job. An end user can set a label experiment_id=xxxxx for all the runs produced in a Jupyter notebook. These runs can be grouped by a label value and visualized together in the Tensorboard UI. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one TensorboardRun (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the TensorboardRun. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}/runs/{run}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardRunId": {
          "type": "string",
          "description": "Required. The ID to use for the Tensorboard run, which becomes the final component of the Tensorboard run's resource name. This value should be 1-128 characters, and valid characters are `/a-z-/`.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardRun was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "experimentId",
        "labels",
        "location",
        "name",
        "project",
        "tensorboardId",
        "tensorboardRunId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this TensorboardRun."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardRun. This value must be unique among all TensorboardRuns belonging to the same parent TensorboardExperiment."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "experimentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your TensorboardRuns. This field will be used to filter and visualize Runs in the Tensorboard UI. For example, a Vertex AI training job can set a label aiplatform.googleapis.com/training_job_id=xxxxx to all the runs created within that job. An end user can set a label experiment_id=xxxxx for all the runs produced in a Jupyter notebook. These runs can be grouped by a label value and visualized together in the Tensorboard UI. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one TensorboardRun (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardRunId": {
          "type": "string",
          "description": "Required. The ID to use for the Tensorboard run, which becomes the final component of the Tensorboard run's resource name. This value should be 1-128 characters, and valid characters are `/a-z-/`.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "experimentId",
        "tensorboardId",
        "tensorboardRunId"
      ]
    },
    "google-native:aiplatform/v1:Schedule": {
      "description": "Creates a Schedule.",
      "properties": {
        "allowQueueing": {
          "type": "boolean",
          "description": "Optional. Whether new scheduled runs can be queued when max_concurrent_runs limit is reached. If set to true, new runs will be queued instead of skipped. Default to false."
        },
        "catchUp": {
          "type": "boolean",
          "description": "Whether to backfill missed runs when the schedule is resumed from PAUSED state. If set to true, all missed runs will be scheduled. New runs will be scheduled after the backfill is complete. Default to false."
        },
        "createPipelineJobRequest": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CreatePipelineJobRequestResponse",
          "description": "Request for PipelineService.CreatePipelineJob. CreatePipelineJobRequest.parent field is required (format: projects/{project}/locations/{location})."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Schedule was created."
        },
        "cron": {
          "type": "string",
          "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\"."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of the Schedule. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "endTime": {
          "type": "string",
          "description": "Optional. Timestamp after which no new runs can be scheduled. If specified, The schedule will be completed when either end_time is reached or when scheduled_run_count >= max_run_count. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified."
        },
        "lastPauseTime": {
          "type": "string",
          "description": "Timestamp when this Schedule was last paused. Unset if never paused."
        },
        "lastResumeTime": {
          "type": "string",
          "description": "Timestamp when this Schedule was last resumed. Unset if never resumed from pause."
        },
        "lastScheduledRunResponse": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ScheduleRunResponseResponse",
          "description": "Response of the last scheduled run. This is the response for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable). Unset if no run has been scheduled yet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxConcurrentRunCount": {
          "type": "string",
          "description": "Maximum number of runs that can be started concurrently for this Schedule. This is the limit for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable)."
        },
        "maxRunCount": {
          "type": "string",
          "description": "Optional. Maximum run count of the schedule. If specified, The schedule will be completed when either started_run_count >= max_run_count or when end_time is reached. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Schedule."
        },
        "nextRunTime": {
          "type": "string",
          "description": "Timestamp when this Schedule should schedule the next run. Having a next_run_time in the past means the runs are being started behind schedule."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Optional. Timestamp after which the first run can be scheduled. Default to Schedule create time if not specified."
        },
        "startedRunCount": {
          "type": "string",
          "description": "The number of runs started by this schedule."
        },
        "state": {
          "type": "string",
          "description": "The state of this Schedule."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Schedule was updated."
        }
      },
      "type": "object",
      "required": [
        "allowQueueing",
        "catchUp",
        "createPipelineJobRequest",
        "createTime",
        "cron",
        "displayName",
        "endTime",
        "lastPauseTime",
        "lastResumeTime",
        "lastScheduledRunResponse",
        "location",
        "maxConcurrentRunCount",
        "maxRunCount",
        "name",
        "nextRunTime",
        "project",
        "startTime",
        "startedRunCount",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "allowQueueing": {
          "type": "boolean",
          "description": "Optional. Whether new scheduled runs can be queued when max_concurrent_runs limit is reached. If set to true, new runs will be queued instead of skipped. Default to false."
        },
        "createPipelineJobRequest": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CreatePipelineJobRequest",
          "description": "Request for PipelineService.CreatePipelineJob. CreatePipelineJobRequest.parent field is required (format: projects/{project}/locations/{location})."
        },
        "cron": {
          "type": "string",
          "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\"."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of the Schedule. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "endTime": {
          "type": "string",
          "description": "Optional. Timestamp after which no new runs can be scheduled. If specified, The schedule will be completed when either end_time is reached or when scheduled_run_count >= max_run_count. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxConcurrentRunCount": {
          "type": "string",
          "description": "Maximum number of runs that can be started concurrently for this Schedule. This is the limit for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable)."
        },
        "maxRunCount": {
          "type": "string",
          "description": "Optional. Maximum run count of the schedule. If specified, The schedule will be completed when either started_run_count >= max_run_count or when end_time is reached. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Schedule."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Optional. Timestamp after which the first run can be scheduled. Default to Schedule create time if not specified."
        }
      },
      "requiredInputs": [
        "displayName",
        "maxConcurrentRunCount"
      ]
    },
    "google-native:aiplatform/v1:SpecialistPool": {
      "description": "Creates a SpecialistPool.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the SpecialistPool. The name can be up to 128 characters long and can consist of any UTF-8 characters. This field should be unique on project-level."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the SpecialistPool."
        },
        "pendingDataLabelingJobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource name of the pending data labeling jobs."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specialistManagerEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses of the managers in the SpecialistPool."
        },
        "specialistManagersCount": {
          "type": "integer",
          "description": "The number of managers in this SpecialistPool."
        },
        "specialistWorkerEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses of workers in the SpecialistPool."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "location",
        "name",
        "pendingDataLabelingJobs",
        "project",
        "specialistManagerEmails",
        "specialistManagersCount",
        "specialistWorkerEmails"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the SpecialistPool. The name can be up to 128 characters long and can consist of any UTF-8 characters. This field should be unique on project-level."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the SpecialistPool."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specialistManagerEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses of the managers in the SpecialistPool."
        },
        "specialistWorkerEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses of workers in the SpecialistPool."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1:Study": {
      "description": "Creates a Study. A resource name will be generated after creation of the Study.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time at which the study was created."
        },
        "displayName": {
          "type": "string",
          "description": "Describes the Study, default value is empty string."
        },
        "inactiveReason": {
          "type": "string",
          "description": "A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of a study. The study's globally unique identifier. Format: `projects/{project}/locations/{location}/studies/{study}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The detailed state of a Study."
        },
        "studySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecResponse",
          "description": "Configuration of the Study."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "inactiveReason",
        "location",
        "name",
        "project",
        "state",
        "studySpec"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Describes the Study, default value is empty string."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "studySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpec",
          "description": "Configuration of the Study."
        }
      },
      "requiredInputs": [
        "displayName",
        "studySpec"
      ]
    },
    "google-native:aiplatform/v1:Tensorboard": {
      "description": "Creates a Tensorboard.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "blobStoragePathPrefix": {
          "type": "string",
          "description": "Consumer project Cloud Storage path prefix used to store blob data, which can either be a bucket or directory. Does not end with a '/'."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Tensorboard was created."
        },
        "description": {
          "type": "string",
          "description": "Description of this Tensorboard."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this Tensorboard."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a Tensorboard. If set, this Tensorboard and all sub-resources of this Tensorboard will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "isDefault": {
          "type": "boolean",
          "description": "Used to indicate if the TensorBoard instance is the default one. Each project & region can have at most one default TensorBoard instance. Creation of a default TensorBoard instance and updating an existing TensorBoard instance to be default will mark all other TensorBoard instances (if any) as non default."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Tensorboards. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Tensorboard (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Tensorboard. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runCount": {
          "type": "integer",
          "description": "The number of Runs stored in this Tensorboard."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Tensorboard was last updated."
        }
      },
      "type": "object",
      "required": [
        "blobStoragePathPrefix",
        "createTime",
        "description",
        "displayName",
        "encryptionSpec",
        "etag",
        "isDefault",
        "labels",
        "location",
        "name",
        "project",
        "runCount",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this Tensorboard."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this Tensorboard."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a Tensorboard. If set, this Tensorboard and all sub-resources of this Tensorboard will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "isDefault": {
          "type": "boolean",
          "description": "Used to indicate if the TensorBoard instance is the default one. Each project & region can have at most one default TensorBoard instance. Creation of a default TensorBoard instance and updating an existing TensorBoard instance to be default will mark all other TensorBoard instances (if any) as non default."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Tensorboards. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Tensorboard (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1:TimeSeries": {
      "description": "Creates a TensorboardTimeSeries.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardTimeSeries was created."
        },
        "description": {
          "type": "string",
          "description": "Description of this TensorboardTimeSeries."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardTimeSeries. This value should be unique among all TensorboardTimeSeries resources belonging to the same TensorboardRun resource (parent resource)."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "experimentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TensorboardTimeSeriesMetadataResponse",
          "description": "Scalar, Tensor, or Blob metadata for this TensorboardTimeSeries."
        },
        "name": {
          "type": "string",
          "description": "Name of the TensorboardTimeSeries."
        },
        "pluginData": {
          "type": "string",
          "description": "Data of the current plugin, with the size limited to 65KB."
        },
        "pluginName": {
          "type": "string",
          "description": "Immutable. Name of the plugin this time series pertain to. Such as Scalar, Tensor, Blob"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardTimeSeriesId": {
          "type": "string",
          "description": "Optional. The user specified unique ID to use for the TensorboardTimeSeries, which becomes the final component of the TensorboardTimeSeries's resource name. This value should match \"a-z0-9{0, 127}\""
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardTimeSeries was last updated."
        },
        "valueType": {
          "type": "string",
          "description": "Immutable. Type of TensorboardTimeSeries value."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "experimentId",
        "location",
        "metadata",
        "name",
        "pluginData",
        "pluginName",
        "project",
        "runId",
        "tensorboardId",
        "updateTime",
        "valueType"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this TensorboardTimeSeries."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardTimeSeries. This value should be unique among all TensorboardTimeSeries resources belonging to the same TensorboardRun resource (parent resource)."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "experimentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pluginData": {
          "type": "string",
          "description": "Data of the current plugin, with the size limited to 65KB."
        },
        "pluginName": {
          "type": "string",
          "description": "Immutable. Name of the plugin this time series pertain to. Such as Scalar, Tensor, Blob"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardTimeSeriesId": {
          "type": "string",
          "description": "Optional. The user specified unique ID to use for the TensorboardTimeSeries, which becomes the final component of the TensorboardTimeSeries's resource name. This value should match \"a-z0-9{0, 127}\""
        },
        "valueType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:TimeSeriesValueType",
          "description": "Immutable. Type of TensorboardTimeSeries value."
        }
      },
      "requiredInputs": [
        "displayName",
        "experimentId",
        "runId",
        "tensorboardId",
        "valueType"
      ]
    },
    "google-native:aiplatform/v1:TrainingPipeline": {
      "description": "Creates a TrainingPipeline. A created TrainingPipeline right away will be attempted to be run.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the TrainingPipeline was created."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of this TrainingPipeline."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a TrainingPipeline. If set, this TrainingPipeline will be secured by this key. Note: Model trained by this TrainingPipeline is also secured by this key if model_to_upload is not set separately."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the TrainingPipeline entered any of the following states: `PIPELINE_STATE_SUCCEEDED`, `PIPELINE_STATE_FAILED`, `PIPELINE_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
          "description": "Only populated when the pipeline's state is `PIPELINE_STATE_FAILED` or `PIPELINE_STATE_CANCELLED`."
        },
        "inputDataConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1InputDataConfigResponse",
          "description": "Specifies Vertex AI owned input data that may be used for training the Model. The TrainingPipeline's training_task_definition should make clear whether this config is used and if there are any special requirements on how it should be filled. If nothing about this config is mentioned in the training_task_definition, then it should be assumed that the TrainingPipeline does not depend on this configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize TrainingPipelines. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "Optional. The ID to use for the uploaded Model, which will become the final component of the model resource name. This value may be up to 63 characters, and valid characters are `[a-z0-9_-]`. The first character cannot be a number or hyphen."
        },
        "modelToUpload": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelResponse",
          "description": "Describes the Model that may be uploaded (via ModelService.UploadModel) by this TrainingPipeline. The TrainingPipeline's training_task_definition should make clear whether this Model description should be populated, and if there are any special requirements regarding how it should be filled. If nothing is mentioned in the training_task_definition, then it should be assumed that this field should not be filled and the training task either uploads the Model without a need of this information, or that training task does not support uploading a Model as part of the pipeline. When the Pipeline's state becomes `PIPELINE_STATE_SUCCEEDED` and the trained Model had been uploaded into Vertex AI, then the model_to_upload's resource name is populated. The Model is always uploaded into the Project and Location in which this pipeline is."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the TrainingPipeline."
        },
        "parentModel": {
          "type": "string",
          "description": "Optional. When specify this field, the `model_to_upload` will not be uploaded as a new model, instead, it will become a new version of this `parent_model`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the TrainingPipeline for the first time entered the `PIPELINE_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the pipeline."
        },
        "trainingTaskDefinition": {
          "type": "string",
          "description": "A Google Cloud Storage path to the YAML file that defines the training task which is responsible for producing the model artifact, and may also include additional auxiliary work. The definition files that can be used here are found in gs://google-cloud-aiplatform/schema/trainingjob/definition/. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "trainingTaskInputs": {
          "$ref": "pulumi.json#/Any",
          "description": "The training task's parameter(s), as specified in the training_task_definition's `inputs`."
        },
        "trainingTaskMetadata": {
          "$ref": "pulumi.json#/Any",
          "description": "The metadata information as specified in the training_task_definition's `metadata`. This metadata is an auxiliary runtime and final information about the training task. While the pipeline is running this information is populated only at a best effort basis. Only present if the pipeline's training_task_definition contains `metadata` object."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the TrainingPipeline was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "inputDataConfig",
        "labels",
        "location",
        "modelId",
        "modelToUpload",
        "name",
        "parentModel",
        "project",
        "startTime",
        "state",
        "trainingTaskDefinition",
        "trainingTaskInputs",
        "trainingTaskMetadata",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The user-defined name of this TrainingPipeline."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a TrainingPipeline. If set, this TrainingPipeline will be secured by this key. Note: Model trained by this TrainingPipeline is also secured by this key if model_to_upload is not set separately."
        },
        "inputDataConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1InputDataConfig",
          "description": "Specifies Vertex AI owned input data that may be used for training the Model. The TrainingPipeline's training_task_definition should make clear whether this config is used and if there are any special requirements on how it should be filled. If nothing about this config is mentioned in the training_task_definition, then it should be assumed that the TrainingPipeline does not depend on this configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize TrainingPipelines. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "Optional. The ID to use for the uploaded Model, which will become the final component of the model resource name. This value may be up to 63 characters, and valid characters are `[a-z0-9_-]`. The first character cannot be a number or hyphen."
        },
        "modelToUpload": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1Model",
          "description": "Describes the Model that may be uploaded (via ModelService.UploadModel) by this TrainingPipeline. The TrainingPipeline's training_task_definition should make clear whether this Model description should be populated, and if there are any special requirements regarding how it should be filled. If nothing is mentioned in the training_task_definition, then it should be assumed that this field should not be filled and the training task either uploads the Model without a need of this information, or that training task does not support uploading a Model as part of the pipeline. When the Pipeline's state becomes `PIPELINE_STATE_SUCCEEDED` and the trained Model had been uploaded into Vertex AI, then the model_to_upload's resource name is populated. The Model is always uploaded into the Project and Location in which this pipeline is."
        },
        "parentModel": {
          "type": "string",
          "description": "Optional. When specify this field, the `model_to_upload` will not be uploaded as a new model, instead, it will become a new version of this `parent_model`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingTaskDefinition": {
          "type": "string",
          "description": "A Google Cloud Storage path to the YAML file that defines the training task which is responsible for producing the model artifact, and may also include additional auxiliary work. The definition files that can be used here are found in gs://google-cloud-aiplatform/schema/trainingjob/definition/. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "trainingTaskInputs": {
          "$ref": "pulumi.json#/Any",
          "description": "The training task's parameter(s), as specified in the training_task_definition's `inputs`."
        }
      },
      "requiredInputs": [
        "displayName",
        "trainingTaskDefinition",
        "trainingTaskInputs"
      ]
    },
    "google-native:aiplatform/v1:Trial": {
      "description": "Adds a user provided Trial to a Study.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial."
        },
        "customJob": {
          "type": "string",
          "description": "The CustomJob name linked to the Trial. It's set for a HyperparameterTuningJob's Trial."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the Trial's status changed to `SUCCEEDED` or `INFEASIBLE`."
        },
        "finalMeasurement": {
          "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MeasurementResponse",
          "description": "The final measurement containing the objective value."
        },
        "infeasibleReason": {
          "type": "string",
          "description": "A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "measurements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MeasurementResponse"
          },
          "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Trial assigned by the service."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TrialParameterResponse"
          },
          "description": "The parameters of the Trial."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the Trial was started."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the Trial."
        },
        "studyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job's trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "customJob",
        "endTime",
        "finalMeasurement",
        "infeasibleReason",
        "location",
        "measurements",
        "name",
        "parameters",
        "project",
        "startTime",
        "state",
        "studyId",
        "webAccessUris"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "studyId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "studyId"
      ]
    },
    "google-native:aiplatform/v1beta1:Artifact": {
      "description": "Creates an Artifact associated with a MetadataStore.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "artifactId": {
          "type": "string",
          "description": "The {artifact} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/artifacts/{artifact}` If not provided, the Artifact's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Artifacts in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Artifact.)"
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Artifact was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Artifact"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Artifact. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Artifacts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Artifact (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Artifact. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Artifact."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "type": "string",
          "description": "The state of this Artifact. This is a property of the Artifact, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines), and the system does not prescribe or check the validity of state transitions."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Artifact was last updated."
        },
        "uri": {
          "type": "string",
          "description": "The uniform resource identifier of the artifact file. May be empty if there is no actual artifact file."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "metadata",
        "metadataStoreId",
        "name",
        "project",
        "schemaTitle",
        "schemaVersion",
        "state",
        "updateTime",
        "uri"
      ],
      "inputProperties": {
        "artifactId": {
          "type": "string",
          "description": "The {artifact} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/artifacts/{artifact}` If not provided, the Artifact's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Artifacts in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Artifact.)"
        },
        "description": {
          "type": "string",
          "description": "Description of the Artifact"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Artifact. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Artifacts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Artifact (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Artifact. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:ArtifactState",
          "description": "The state of this Artifact. This is a property of the Artifact, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines), and the system does not prescribe or check the validity of state transitions."
        },
        "uri": {
          "type": "string",
          "description": "The uniform resource identifier of the artifact file. May be empty if there is no actual artifact file."
        }
      },
      "requiredInputs": [
        "metadataStoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:BatchPredictionJob": {
      "description": "Creates a BatchPredictionJob. A BatchPredictionJob once created will right away be attempted to start.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "completionStats": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CompletionStatsResponse",
          "description": "Statistics on completed and failed prediction instances."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the BatchPredictionJob was created."
        },
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchDedicatedResourcesResponse",
          "description": "The config of resources used by the Model during the batch prediction. If the Model supports DEDICATED_RESOURCES this config may be provided (and the job will use these resources), if the Model doesn't support AUTOMATIC_RESOURCES, this config must be provided."
        },
        "disableContainerLogging": {
          "type": "boolean",
          "description": "For custom-trained Models and AutoML Tabular Models, the container of the DeployedModel instances will send `stderr` and `stdout` streams to Cloud Logging by default. Please note that the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can disable container logging by setting this flag to true."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of this BatchPredictionJob."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key options for a BatchPredictionJob. If this is set, then all resources created by the BatchPredictionJob will be encrypted with the provided encryption key."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the BatchPredictionJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "Only populated when the job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationSpecResponse",
          "description": "Explanation configuration for this BatchPredictionJob. Can be specified only if generate_explanation is set to `true`. This value overrides the value of Model.explanation_spec. All fields of explanation_spec are optional in the request. If a field of the explanation_spec object is not populated, the corresponding field of the Model.explanation_spec object is inherited."
        },
        "generateExplanation": {
          "type": "boolean",
          "description": "Generate explanation with the batch prediction results. When set to `true`, the batch prediction output changes based on the `predictions_format` field of the BatchPredictionJob.output_config object: * `bigquery`: output includes a column named `explanation`. The value is a struct that conforms to the Explanation object. * `jsonl`: The JSON objects on each line include an additional entry keyed `explanation`. The value of the entry is a JSON object that conforms to the Explanation object. * `csv`: Generating explanations for CSV format is not supported. If this field is set to true, either the Model.explanation_spec or explanation_spec must be populated."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInputConfigResponse",
          "description": "Input configuration of the instances on which predictions are performed. The schema of any single instance may be specified via the Model's PredictSchemata's instance_schema_uri."
        },
        "instanceConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInstanceConfigResponse",
          "description": "Configuration for how to convert batch prediction input instances to the prediction instances that are sent to the Model."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize BatchPredictionJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "manualBatchTuningParameters": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ManualBatchTuningParametersResponse",
          "description": "Immutable. Parameters configuring the batch behavior. Currently only applicable when dedicated_resources are used (in other cases Vertex AI does the tuning itself)."
        },
        "model": {
          "type": "string",
          "description": "The name of the Model resource that produces the predictions via this job, must share the same ancestor Location. Starting this job has no impact on any existing deployments of the Model and their resources. Exactly one of model and unmanaged_container_model must be set. The model resource name may contain version id or version alias to specify the version. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` if no version is specified, the default version will be deployed. The model resource could also be a publisher model. Example: `publishers/{publisher}/models/{model}` or `projects/{project}/locations/{location}/publishers/{publisher}/models/{model}`"
        },
        "modelMonitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringConfigResponse",
          "description": "Model monitoring config will be used for analysis model behaviors, based on the input and output to the batch prediction job, as well as the provided training dataset."
        },
        "modelMonitoringStatsAnomalies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesResponse"
          },
          "description": "Get batch prediction job monitoring statistics."
        },
        "modelMonitoringStatus": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "The running status of the model monitoring pipeline."
        },
        "modelParameters": {
          "$ref": "pulumi.json#/Any",
          "description": "The parameters that govern the predictions. The schema of the parameters may be specified via the Model's PredictSchemata's parameters_schema_uri."
        },
        "modelVersionId": {
          "type": "string",
          "description": "The version ID of the Model that produces the predictions via this job."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the BatchPredictionJob."
        },
        "outputConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobOutputConfigResponse",
          "description": "The Configuration specifying where output predictions should be written. The schema of any single prediction may be specified as a concatenation of Model's PredictSchemata's instance_schema_uri and prediction_schema_uri."
        },
        "outputInfo": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobOutputInfoResponse",
          "description": "Information further describing the output of this job."
        },
        "partialFailures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse"
          },
          "description": "Partial failures encountered. For example, single files that can't be read. This field never exceeds 20 entries. Status details fields contain standard Google Cloud error details."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourcesConsumed": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourcesConsumedResponse",
          "description": "Information about resources that had been consumed by this job. Provided in real time at best effort basis, as well as a final value once the job completes. Note: This field currently may be not populated for batch predictions that use AutoML Models."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the DeployedModel's container runs as. If not specified, a system generated one will be used, which has minimal permissions and the custom container, if used, may not have enough permission to access other Google Cloud resources. Users deploying the Model must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the BatchPredictionJob for the first time entered the `JOB_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "unmanagedContainerModel": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1UnmanagedContainerModelResponse",
          "description": "Contains model information necessary to perform batch prediction without requiring uploading to model registry. Exactly one of model and unmanaged_container_model must be set."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the BatchPredictionJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "completionStats",
        "createTime",
        "dedicatedResources",
        "disableContainerLogging",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "explanationSpec",
        "generateExplanation",
        "inputConfig",
        "instanceConfig",
        "labels",
        "location",
        "manualBatchTuningParameters",
        "model",
        "modelMonitoringConfig",
        "modelMonitoringStatsAnomalies",
        "modelMonitoringStatus",
        "modelParameters",
        "modelVersionId",
        "name",
        "outputConfig",
        "outputInfo",
        "partialFailures",
        "project",
        "resourcesConsumed",
        "serviceAccount",
        "startTime",
        "state",
        "unmanagedContainerModel",
        "updateTime"
      ],
      "inputProperties": {
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchDedicatedResources",
          "description": "The config of resources used by the Model during the batch prediction. If the Model supports DEDICATED_RESOURCES this config may be provided (and the job will use these resources), if the Model doesn't support AUTOMATIC_RESOURCES, this config must be provided."
        },
        "disableContainerLogging": {
          "type": "boolean",
          "description": "For custom-trained Models and AutoML Tabular Models, the container of the DeployedModel instances will send `stderr` and `stdout` streams to Cloud Logging by default. Please note that the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can disable container logging by setting this flag to true."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of this BatchPredictionJob."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key options for a BatchPredictionJob. If this is set, then all resources created by the BatchPredictionJob will be encrypted with the provided encryption key."
        },
        "explanationSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationSpec",
          "description": "Explanation configuration for this BatchPredictionJob. Can be specified only if generate_explanation is set to `true`. This value overrides the value of Model.explanation_spec. All fields of explanation_spec are optional in the request. If a field of the explanation_spec object is not populated, the corresponding field of the Model.explanation_spec object is inherited."
        },
        "generateExplanation": {
          "type": "boolean",
          "description": "Generate explanation with the batch prediction results. When set to `true`, the batch prediction output changes based on the `predictions_format` field of the BatchPredictionJob.output_config object: * `bigquery`: output includes a column named `explanation`. The value is a struct that conforms to the Explanation object. * `jsonl`: The JSON objects on each line include an additional entry keyed `explanation`. The value of the entry is a JSON object that conforms to the Explanation object. * `csv`: Generating explanations for CSV format is not supported. If this field is set to true, either the Model.explanation_spec or explanation_spec must be populated."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInputConfig",
          "description": "Input configuration of the instances on which predictions are performed. The schema of any single instance may be specified via the Model's PredictSchemata's instance_schema_uri."
        },
        "instanceConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInstanceConfig",
          "description": "Configuration for how to convert batch prediction input instances to the prediction instances that are sent to the Model."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize BatchPredictionJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "manualBatchTuningParameters": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ManualBatchTuningParameters",
          "description": "Immutable. Parameters configuring the batch behavior. Currently only applicable when dedicated_resources are used (in other cases Vertex AI does the tuning itself)."
        },
        "model": {
          "type": "string",
          "description": "The name of the Model resource that produces the predictions via this job, must share the same ancestor Location. Starting this job has no impact on any existing deployments of the Model and their resources. Exactly one of model and unmanaged_container_model must be set. The model resource name may contain version id or version alias to specify the version. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` if no version is specified, the default version will be deployed. The model resource could also be a publisher model. Example: `publishers/{publisher}/models/{model}` or `projects/{project}/locations/{location}/publishers/{publisher}/models/{model}`"
        },
        "modelMonitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringConfig",
          "description": "Model monitoring config will be used for analysis model behaviors, based on the input and output to the batch prediction job, as well as the provided training dataset."
        },
        "modelMonitoringStatsAnomalies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomalies"
          },
          "description": "Get batch prediction job monitoring statistics."
        },
        "modelParameters": {
          "$ref": "pulumi.json#/Any",
          "description": "The parameters that govern the predictions. The schema of the parameters may be specified via the Model's PredictSchemata's parameters_schema_uri."
        },
        "outputConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobOutputConfig",
          "description": "The Configuration specifying where output predictions should be written. The schema of any single prediction may be specified as a concatenation of Model's PredictSchemata's instance_schema_uri and prediction_schema_uri."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the DeployedModel's container runs as. If not specified, a system generated one will be used, which has minimal permissions and the custom container, if used, may not have enough permission to access other Google Cloud resources. Users deploying the Model must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "unmanagedContainerModel": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1UnmanagedContainerModel",
          "description": "Contains model information necessary to perform batch prediction without requiring uploading to model registry. Exactly one of model and unmanaged_container_model must be set."
        }
      },
      "requiredInputs": [
        "displayName",
        "inputConfig",
        "outputConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:Context": {
      "description": "Creates a Context associated with a MetadataStore.",
      "properties": {
        "contextId": {
          "type": "string",
          "description": "The {context} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/contexts/{context}`. If not provided, the Context's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Contexts in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Context.)"
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Context was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Context"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Context. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Contexts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Context (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Context. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Context."
        },
        "parentContexts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource names of Contexts that are parents of this Context. A Context may have at most 10 parent_contexts."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Context was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "metadata",
        "metadataStoreId",
        "name",
        "parentContexts",
        "project",
        "schemaTitle",
        "schemaVersion",
        "updateTime"
      ],
      "inputProperties": {
        "contextId": {
          "type": "string",
          "description": "The {context} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/contexts/{context}`. If not provided, the Context's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Contexts in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Context.)"
        },
        "description": {
          "type": "string",
          "description": "Description of the Context"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Context. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Contexts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Context (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Context. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Context."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        }
      },
      "requiredInputs": [
        "metadataStoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:CustomJob": {
      "description": "Creates a CustomJob. A created CustomJob right away will be attempted to be run.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the CustomJob was created."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the CustomJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key options for a CustomJob. If this is set, then all resources created by the CustomJob will be encrypted with the provided encryption key."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the CustomJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "Only populated when job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
        },
        "jobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpecResponse",
          "description": "Job spec."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize CustomJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of a CustomJob."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the CustomJob for the first time entered the `JOB_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the CustomJob was most recently updated."
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if job_spec.enable_web_access is `true`. The keys are names of each node in the training job; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "jobSpec",
        "labels",
        "location",
        "name",
        "project",
        "startTime",
        "state",
        "updateTime",
        "webAccessUris"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the CustomJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key options for a CustomJob. If this is set, then all resources created by the CustomJob will be encrypted with the provided encryption key."
        },
        "jobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpec",
          "description": "Job spec."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize CustomJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "jobSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:DataLabelingJob": {
      "description": "Creates a DataLabelingJob.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "activeLearningConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ActiveLearningConfigResponse",
          "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally via several iterations. For every iteration, it will select a batch of data based on the sampling strategy."
        },
        "annotationLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to assign to annotations generated by this DataLabelingJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this DataLabelingJob was created."
        },
        "currentSpend": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleTypeMoneyResponse",
          "description": "Estimated cost(in US dollars) that the DataLabelingJob has incurred to date."
        },
        "datasets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Dataset resource names. Right now we only support labeling from a single Dataset. Format: `projects/{project}/locations/{location}/datasets/{dataset}`"
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the DataLabelingJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a DataLabelingJob."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a DataLabelingJob. If set, this DataLabelingJob will be secured by this key. Note: Annotations created in the DataLabelingJob are associated with the EncryptionSpec of the Dataset they are exported to."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "DataLabelingJob errors. It is only populated when job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
        },
        "inputs": {
          "$ref": "pulumi.json#/Any",
          "description": "Input config parameters for the DataLabelingJob."
        },
        "inputsSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing the config for a specific type of DataLabelingJob. The schema files that can be used here are found in the https://storage.googleapis.com/google-cloud-aiplatform bucket in the /schema/datalabelingjob/inputs/ folder."
        },
        "instructionUri": {
          "type": "string",
          "description": "The Google Cloud Storage location of the instruction pdf. This pdf is shared with labelers, and provides detailed description on how to label DataItems in Datasets."
        },
        "labelerCount": {
          "type": "integer",
          "description": "Number of labelers to work on each DataItem."
        },
        "labelingProgress": {
          "type": "integer",
          "description": "Current labeling job progress percentage scaled in interval [0, 100], indicating the percentage of DataItems that has been finished."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your DataLabelingJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each DataLabelingJob: * \"aiplatform.googleapis.com/schema\": output only, its value is the inputs_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the DataLabelingJob."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specialistPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SpecialistPools' resource names associated with this job."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this DataLabelingJob was updated most recently."
        }
      },
      "type": "object",
      "required": [
        "activeLearningConfig",
        "annotationLabels",
        "createTime",
        "currentSpend",
        "datasets",
        "displayName",
        "encryptionSpec",
        "error",
        "inputs",
        "inputsSchemaUri",
        "instructionUri",
        "labelerCount",
        "labelingProgress",
        "labels",
        "location",
        "name",
        "project",
        "specialistPools",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "activeLearningConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ActiveLearningConfig",
          "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally via several iterations. For every iteration, it will select a batch of data based on the sampling strategy."
        },
        "annotationLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to assign to annotations generated by this DataLabelingJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "datasets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Dataset resource names. Right now we only support labeling from a single Dataset. Format: `projects/{project}/locations/{location}/datasets/{dataset}`"
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the DataLabelingJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a DataLabelingJob."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a DataLabelingJob. If set, this DataLabelingJob will be secured by this key. Note: Annotations created in the DataLabelingJob are associated with the EncryptionSpec of the Dataset they are exported to."
        },
        "inputs": {
          "$ref": "pulumi.json#/Any",
          "description": "Input config parameters for the DataLabelingJob."
        },
        "inputsSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing the config for a specific type of DataLabelingJob. The schema files that can be used here are found in the https://storage.googleapis.com/google-cloud-aiplatform bucket in the /schema/datalabelingjob/inputs/ folder."
        },
        "instructionUri": {
          "type": "string",
          "description": "The Google Cloud Storage location of the instruction pdf. This pdf is shared with labelers, and provides detailed description on how to label DataItems in Datasets."
        },
        "labelerCount": {
          "type": "integer",
          "description": "Number of labelers to work on each DataItem."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your DataLabelingJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each DataLabelingJob: * \"aiplatform.googleapis.com/schema\": output only, its value is the inputs_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specialistPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SpecialistPools' resource names associated with this job."
        }
      },
      "requiredInputs": [
        "datasets",
        "displayName",
        "inputs",
        "inputsSchemaUri",
        "instructionUri",
        "labelerCount"
      ]
    },
    "google-native:aiplatform/v1beta1:Dataset": {
      "description": "Creates a Dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Dataset was created."
        },
        "dataItemCount": {
          "type": "string",
          "description": "The number of DataItems in this Dataset. Only apply for non-structured Dataset."
        },
        "description": {
          "type": "string",
          "description": "The description of the Dataset."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the Dataset. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a Dataset. If set, this Dataset and all sub-resources of this Dataset will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Datasets. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each Dataset: * \"aiplatform.googleapis.com/dataset_metadata_schema\": output only, its value is the metadata_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Additional information about the Dataset."
        },
        "metadataArtifact": {
          "type": "string",
          "description": "The resource name of the Artifact that was created in MetadataStore when creating the Dataset. The Artifact resource name pattern is `projects/{project}/locations/{location}/metadataStores/{metadata_store}/artifacts/{artifact}`."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing additional information about the Dataset. The schema is defined as an OpenAPI 3.0.2 Schema Object. The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/metadata/."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Dataset."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "savedQueries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SavedQueryResponse"
          },
          "description": "All SavedQueries belong to the Dataset will be returned in List/Get Dataset response. The annotation_specs field will not be populated except for UI cases which will only use annotation_spec_count. In CreateDataset request, a SavedQuery is created together if this field is set, up to one SavedQuery can be set in CreateDatasetRequest. The SavedQuery should not contain any AnnotationSpec."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Dataset was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dataItemCount",
        "description",
        "displayName",
        "encryptionSpec",
        "etag",
        "labels",
        "location",
        "metadata",
        "metadataArtifact",
        "metadataSchemaUri",
        "name",
        "project",
        "savedQueries",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the Dataset."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the Dataset. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a Dataset. If set, this Dataset and all sub-resources of this Dataset will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Datasets. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each Dataset: * \"aiplatform.googleapis.com/dataset_metadata_schema\": output only, its value is the metadata_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "Additional information about the Dataset."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Points to a YAML file stored on Google Cloud Storage describing additional information about the Dataset. The schema is defined as an OpenAPI 3.0.2 Schema Object. The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/metadata/."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "savedQueries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SavedQuery"
          },
          "description": "All SavedQueries belong to the Dataset will be returned in List/Get Dataset response. The annotation_specs field will not be populated except for UI cases which will only use annotation_spec_count. In CreateDataset request, a SavedQuery is created together if this field is set, up to one SavedQuery can be set in CreateDatasetRequest. The SavedQuery should not contain any AnnotationSpec."
        }
      },
      "requiredInputs": [
        "displayName",
        "metadata",
        "metadataSchemaUri"
      ]
    },
    "google-native:aiplatform/v1beta1:DatasetVersion": {
      "description": "Create a version from a Dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigQueryDatasetName": {
          "type": "string",
          "description": "Name of the associated BigQuery dataset."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this DatasetVersion was created."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the DatasetVersion."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this DatasetVersion was last updated."
        }
      },
      "type": "object",
      "required": [
        "bigQueryDatasetName",
        "createTime",
        "datasetId",
        "etag",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:aiplatform/v1beta1:DeploymentResourcePool": {
      "description": "Create a DeploymentResourcePool.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this DeploymentResourcePool was created."
        },
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DedicatedResourcesResponse",
          "description": "The underlying DedicatedResources that the DeploymentResourcePool uses."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the DeploymentResourcePool. Format: `projects/{project}/locations/{location}/deploymentResourcePools/{deployment_resource_pool}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dedicatedResources",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "dedicatedResources": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DedicatedResources",
          "description": "The underlying DedicatedResources that the DeploymentResourcePool uses."
        },
        "deploymentResourcePoolId": {
          "type": "string",
          "description": "The ID to use for the DeploymentResourcePool, which will become the final component of the DeploymentResourcePool's resource name. The maximum length is 63 characters, and valid characters are `/^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the DeploymentResourcePool. Format: `projects/{project}/locations/{location}/deploymentResourcePools/{deployment_resource_pool}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "dedicatedResources",
        "deploymentResourcePoolId"
      ]
    },
    "google-native:aiplatform/v1beta1:Endpoint": {
      "description": "Creates an Endpoint.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Endpoint was created."
        },
        "deployedModels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedModelResponse"
          },
          "description": "The models deployed in this Endpoint. To add or remove DeployedModels use EndpointService.DeployModel and EndpointService.UndeployModel respectively."
        },
        "description": {
          "type": "string",
          "description": "The description of the Endpoint."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
          "deprecationMessage": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key."
        },
        "endpointId": {
          "type": "string",
          "description": "Immutable. The ID to use for endpoint, which will become the final component of the endpoint resource name. If not provided, Vertex AI will generate a value for this ID. If the first character is a letter, this value may be up to 63 characters, and valid characters are `[a-z0-9-]`. The last character must be a letter or number. If the first character is a number, this value may be up to 9 characters, and valid characters are `[0-9]` with no leading zeros. When using HTTP/JSON, this field is populated based on a query string argument, such as `?endpoint_id=12345`. This is the fallback for fields that are not included in either the URI or the body."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelDeploymentMonitoringJob": {
          "type": "string",
          "description": "Resource name of the Model Monitoring job associated with this Endpoint if monitoring is enabled by JobService.CreateModelDeploymentMonitoringJob. Format: `projects/{project}/locations/{location}/modelDeploymentMonitoringJobs/{model_deployment_monitoring_job}`"
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Endpoint."
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name."
        },
        "predictRequestResponseLoggingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredictRequestResponseLoggingConfigResponse",
          "description": "Configures the request-response logging for online prediction."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trafficSplit": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from a DeployedModel's ID to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel. If a DeployedModel's ID is not listed in this map, then it receives no traffic. The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Endpoint was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deployedModels",
        "description",
        "displayName",
        "enablePrivateServiceConnect",
        "encryptionSpec",
        "etag",
        "labels",
        "location",
        "modelDeploymentMonitoringJob",
        "name",
        "network",
        "predictRequestResponseLoggingConfig",
        "project",
        "trafficSplit",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the Endpoint."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
          "deprecationMessage": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key."
        },
        "endpointId": {
          "type": "string",
          "description": "Immutable. The ID to use for endpoint, which will become the final component of the endpoint resource name. If not provided, Vertex AI will generate a value for this ID. If the first character is a letter, this value may be up to 63 characters, and valid characters are `[a-z0-9-]`. The last character must be a letter or number. If the first character is a number, this value may be up to 9 characters, and valid characters are `[0-9]` with no leading zeros. When using HTTP/JSON, this field is populated based on a query string argument, such as `?endpoint_id=12345`. This is the fallback for fields that are not included in either the URI or the body."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name."
        },
        "predictRequestResponseLoggingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredictRequestResponseLoggingConfig",
          "description": "Configures the request-response logging for online prediction."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trafficSplit": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from a DeployedModel's ID to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel. If a DeployedModel's ID is not listed in this map, then it receives no traffic. The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1beta1:EndpointIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:EndpointIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:EndpointIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "endpointId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "endpointId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "endpointId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "endpointId"
      ]
    },
    "google-native:aiplatform/v1beta1:EntityType": {
      "description": "Creates a new EntityType in a given Featurestore.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this EntityType was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the EntityType."
        },
        "entityTypeId": {
          "type": "string",
          "description": "Required. The ID to use for the EntityType, which will become the final component of the EntityType's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within a featurestore.",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your EntityTypes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one EntityType (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigResponse",
          "description": "Optional. The default monitoring configuration for all Features with value type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 under this EntityType. If this is populated with [FeaturestoreMonitoringConfig.monitoring_interval] specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring is disabled."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the EntityType. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` The last part entity_type is assigned by the client. The entity_type can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z and underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given a featurestore."
        },
        "offlineStorageTtlDays": {
          "type": "integer",
          "description": "Optional. Config for data retention policy in offline storage. TTL in days for feature values that will be stored in offline storage. The Feature Store offline storage periodically removes obsolete feature values older than `offline_storage_ttl_days` since the feature generation time. If unset (or explicitly set to 0), default to 4000 days TTL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this EntityType was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "entityTypeId",
        "etag",
        "featurestoreId",
        "labels",
        "location",
        "monitoringConfig",
        "name",
        "offlineStorageTtlDays",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the EntityType."
        },
        "entityTypeId": {
          "type": "string",
          "description": "Required. The ID to use for the EntityType, which will become the final component of the EntityType's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within a featurestore.",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your EntityTypes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one EntityType (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfig",
          "description": "Optional. The default monitoring configuration for all Features with value type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 under this EntityType. If this is populated with [FeaturestoreMonitoringConfig.monitoring_interval] specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring is disabled."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the EntityType. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` The last part entity_type is assigned by the client. The entity_type can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z and underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given a featurestore."
        },
        "offlineStorageTtlDays": {
          "type": "integer",
          "description": "Optional. Config for data retention policy in offline storage. TTL in days for feature values that will be stored in offline storage. The Feature Store offline storage periodically removes obsolete feature values older than `offline_storage_ttl_days` since the feature generation time. If unset (or explicitly set to 0), default to 4000 days TTL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "entityTypeId",
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:Execution": {
      "description": "Creates an Execution associated with a MetadataStore.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Execution was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Execution"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Execution. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "executionId": {
          "type": "string",
          "description": "The {execution} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/executions/{execution}` If not provided, the Execution's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Executions in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Execution.)"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Executions. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Execution (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Execution. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Execution."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in `schema_title` to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "type": "string",
          "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Execution was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "metadata",
        "metadataStoreId",
        "name",
        "project",
        "schemaTitle",
        "schemaVersion",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the Execution"
        },
        "displayName": {
          "type": "string",
          "description": "User provided display name of the Execution. May be up to 128 Unicode characters."
        },
        "etag": {
          "type": "string",
          "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "executionId": {
          "type": "string",
          "description": "The {execution} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/executions/{execution}` If not provided, the Execution's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all Executions in the parent MetadataStore. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting Execution.)"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Executions. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Execution (System labels are excluded)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties of the Execution. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB."
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaTitle": {
          "type": "string",
          "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the schema in `schema_title` to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store."
        },
        "state": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:ExecutionState",
          "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions."
        }
      },
      "requiredInputs": [
        "metadataStoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:Experiment": {
      "description": "Creates a TensorboardExperiment.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardExperiment was created."
        },
        "description": {
          "type": "string",
          "description": "Description of this TensorboardExperiment."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardExperiment."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your TensorboardExperiment. Label keys and values cannot be longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `aiplatform.googleapis.com/` and are immutable. The following system labels exist for each Dataset: * `aiplatform.googleapis.com/dataset_metadata_schema`: output only. Its value is the metadata_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the TensorboardExperiment. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "source": {
          "type": "string",
          "description": "Immutable. Source of the TensorboardExperiment. Example: a custom training job."
        },
        "tensorboardExperimentId": {
          "type": "string",
          "description": "Required. The ID to use for the Tensorboard experiment, which becomes the final component of the Tensorboard experiment's resource name. This value should be 1-128 characters, and valid characters are `/a-z-/`.",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardExperiment was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "source",
        "tensorboardExperimentId",
        "tensorboardId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this TensorboardExperiment."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardExperiment."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your TensorboardExperiment. Label keys and values cannot be longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `aiplatform.googleapis.com/` and are immutable. The following system labels exist for each Dataset: * `aiplatform.googleapis.com/dataset_metadata_schema`: output only. Its value is the metadata_schema's title."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "source": {
          "type": "string",
          "description": "Immutable. Source of the TensorboardExperiment. Example: a custom training job."
        },
        "tensorboardExperimentId": {
          "type": "string",
          "description": "Required. The ID to use for the Tensorboard experiment, which becomes the final component of the Tensorboard experiment's resource name. This value should be 1-128 characters, and valid characters are `/a-z-/`.",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "tensorboardExperimentId",
        "tensorboardId"
      ]
    },
    "google-native:aiplatform/v1beta1:FeatureGroup": {
      "description": "Creates a new FeatureGroup in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigQuery": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureGroupBigQueryResponse",
          "description": "Indicates that features for this group come from BigQuery Table/View. By default treats the source as a sparse time series source, which is required to have an entity_id and a feature_timestamp column in the source."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this FeatureGroup was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the FeatureGroup."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureGroupId": {
          "type": "string",
          "description": "Required. The ID to use for this FeatureGroup, which will become the final component of the FeatureGroup's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureGroup. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureGroup(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the FeatureGroup. Format: `projects/{project}/locations/{location}/featureGroups/{featureGroup}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this FeatureGroup was last updated."
        }
      },
      "type": "object",
      "required": [
        "bigQuery",
        "createTime",
        "description",
        "etag",
        "featureGroupId",
        "labels",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "bigQuery": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureGroupBigQuery",
          "description": "Indicates that features for this group come from BigQuery Table/View. By default treats the source as a sparse time series source, which is required to have an entity_id and a feature_timestamp column in the source."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the FeatureGroup."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureGroupId": {
          "type": "string",
          "description": "Required. The ID to use for this FeatureGroup, which will become the final component of the FeatureGroup's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureGroup. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureGroup(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "featureGroupId"
      ]
    },
    "google-native:aiplatform/v1beta1:FeatureGroupFeature": {
      "description": "Creates a new Feature in a given FeatureGroup.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Feature."
        },
        "disableMonitoring": {
          "type": "boolean",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "featureId": {
          "type": "string",
          "description": "Required. The ID to use for the Feature, which will become the final component of the Feature's resource name. This value may be up to 128 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within an EntityType/FeatureGroup.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigResponse",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to.",
          "deprecationMessage": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to."
        },
        "monitoringStats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomalyResponse"
          },
          "description": "Only applicable for Vertex AI Feature Store (Legacy). A list of historical SnapshotAnalysis stats requested by user, sorted by FeatureStatsAnomaly.start_time descending."
        },
        "monitoringStatsAnomalies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureMonitoringStatsAnomalyResponse"
          },
          "description": "Only applicable for Vertex AI Feature Store (Legacy). The list of historical stats and anomalies with specified objectives."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was most recently updated."
        },
        "valueType": {
          "type": "string",
          "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value."
        },
        "versionColumnName": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "disableMonitoring",
        "etag",
        "featureGroupId",
        "featureId",
        "labels",
        "location",
        "monitoringConfig",
        "monitoringStats",
        "monitoringStatsAnomalies",
        "name",
        "project",
        "updateTime",
        "valueType",
        "versionColumnName"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the Feature."
        },
        "disableMonitoring": {
          "type": "boolean",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "featureId": {
          "type": "string",
          "description": "Required. The ID to use for the Feature, which will become the final component of the Feature's resource name. This value may be up to 128 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within an EntityType/FeatureGroup.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfig",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to.",
          "deprecationMessage": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "valueType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:FeatureGroupFeatureValueType",
          "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value."
        },
        "versionColumnName": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id."
        }
      },
      "requiredInputs": [
        "featureGroupId",
        "featureId"
      ]
    },
    "google-native:aiplatform/v1beta1:FeatureOnlineStore": {
      "description": "Creates a new FeatureOnlineStore in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigtable": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtableResponse",
          "description": "Contains settings for the Cloud Bigtable instance that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this FeatureOnlineStore was created."
        },
        "dedicatedServingEndpoint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreDedicatedServingEndpointResponse",
          "description": "Optional. The dedicated serving endpoint for this FeatureOnlineStore, which is different from common Vertex service endpoint."
        },
        "embeddingManagement": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreEmbeddingManagementResponse",
          "description": "Optional. The settings for embedding management in FeatureOnlineStore."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureOnlineStoreId": {
          "type": "string",
          "description": "Required. The ID to use for this FeatureOnlineStore, which will become the final component of the FeatureOnlineStore's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureOnlineStore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the FeatureOnlineStore. Format: `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}`"
        },
        "optimized": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreOptimizedResponse",
          "description": "Contains settings for the Optimized store that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore. When choose Optimized storage type, need to set PrivateServiceConnectConfig.enable_private_service_connect to use private endpoint. Otherwise will use public endpoint by default."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the featureOnlineStore."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this FeatureOnlineStore was last updated."
        }
      },
      "type": "object",
      "required": [
        "bigtable",
        "createTime",
        "dedicatedServingEndpoint",
        "embeddingManagement",
        "etag",
        "featureOnlineStoreId",
        "labels",
        "location",
        "name",
        "optimized",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "bigtable": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtable",
          "description": "Contains settings for the Cloud Bigtable instance that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore."
        },
        "dedicatedServingEndpoint": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreDedicatedServingEndpoint",
          "description": "Optional. The dedicated serving endpoint for this FeatureOnlineStore, which is different from common Vertex service endpoint."
        },
        "embeddingManagement": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreEmbeddingManagement",
          "description": "Optional. The settings for embedding management in FeatureOnlineStore."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureOnlineStoreId": {
          "type": "string",
          "description": "Required. The ID to use for this FeatureOnlineStore, which will become the final component of the FeatureOnlineStore's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureOnlineStore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "optimized": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreOptimized",
          "description": "Contains settings for the Optimized store that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore. When choose Optimized storage type, need to set PrivateServiceConnectConfig.enable_private_service_connect to use private endpoint. Otherwise will use public endpoint by default."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "featureOnlineStoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:FeatureStoreFeature": {
      "description": "Creates a new Feature in a given EntityType.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Feature."
        },
        "disableMonitoring": {
          "type": "boolean",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType."
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureId": {
          "type": "string",
          "description": "Required. The ID to use for the Feature, which will become the final component of the Feature's resource name. This value may be up to 128 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within an EntityType/FeatureGroup.",
          "replaceOnChanges": true
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigResponse",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to.",
          "deprecationMessage": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to."
        },
        "monitoringStats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomalyResponse"
          },
          "description": "Only applicable for Vertex AI Feature Store (Legacy). A list of historical SnapshotAnalysis stats requested by user, sorted by FeatureStatsAnomaly.start_time descending."
        },
        "monitoringStatsAnomalies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureMonitoringStatsAnomalyResponse"
          },
          "description": "Only applicable for Vertex AI Feature Store (Legacy). The list of historical stats and anomalies with specified objectives."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was most recently updated."
        },
        "valueType": {
          "type": "string",
          "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value."
        },
        "versionColumnName": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "disableMonitoring",
        "entityTypeId",
        "etag",
        "featureId",
        "featurestoreId",
        "labels",
        "location",
        "monitoringConfig",
        "monitoringStats",
        "monitoringStatsAnomalies",
        "name",
        "project",
        "updateTime",
        "valueType",
        "versionColumnName"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the Feature."
        },
        "disableMonitoring": {
          "type": "boolean",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType."
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureId": {
          "type": "string",
          "description": "Required. The ID to use for the Feature, which will become the final component of the Feature's resource name. This value may be up to 128 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within an EntityType/FeatureGroup.",
          "replaceOnChanges": true
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfig",
          "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to.",
          "deprecationMessage": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "valueType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:FeatureStoreFeatureValueType",
          "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value."
        },
        "versionColumnName": {
          "type": "string",
          "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id."
        }
      },
      "requiredInputs": [
        "entityTypeId",
        "featureId",
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:FeatureView": {
      "description": "Creates a new FeatureView in a given FeatureOnlineStore.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigQuerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewBigQuerySourceResponse",
          "description": "Optional. Configures how data is supposed to be extracted from a BigQuery source to be loaded onto the FeatureOnlineStore."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this FeatureView was created."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureOnlineStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "featureRegistrySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySourceResponse",
          "description": "Optional. Configures the features from a Feature Registry source that need to be loaded onto the FeatureOnlineStore."
        },
        "featureViewId": {
          "type": "string",
          "description": "Required. The ID to use for the FeatureView, which will become the final component of the FeatureView's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within a FeatureOnlineStore.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureViews. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the FeatureView. Format: `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runSyncImmediately": {
          "type": "boolean",
          "description": "Immutable. If set to true, one on demand sync will be run immediately, regardless whether the FeatureView.sync_config is configured or not."
        },
        "syncConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewSyncConfigResponse",
          "description": "Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this FeatureView was last updated."
        },
        "vectorSearchConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigResponse",
          "description": "Optional. Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving."
        }
      },
      "type": "object",
      "required": [
        "bigQuerySource",
        "createTime",
        "etag",
        "featureOnlineStoreId",
        "featureRegistrySource",
        "featureViewId",
        "labels",
        "location",
        "name",
        "project",
        "syncConfig",
        "updateTime",
        "vectorSearchConfig"
      ],
      "inputProperties": {
        "bigQuerySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewBigQuerySource",
          "description": "Optional. Configures how data is supposed to be extracted from a BigQuery source to be loaded onto the FeatureOnlineStore."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featureOnlineStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "featureRegistrySource": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySource",
          "description": "Optional. Configures the features from a Feature Registry source that need to be loaded onto the FeatureOnlineStore."
        },
        "featureViewId": {
          "type": "string",
          "description": "Required. The ID to use for the FeatureView, which will become the final component of the FeatureView's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within a FeatureOnlineStore.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your FeatureViews. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runSyncImmediately": {
          "type": "boolean",
          "description": "Immutable. If set to true, one on demand sync will be run immediately, regardless whether the FeatureView.sync_config is configured or not."
        },
        "syncConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewSyncConfig",
          "description": "Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving."
        },
        "vectorSearchConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfig",
          "description": "Optional. Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving."
        }
      },
      "requiredInputs": [
        "featureOnlineStoreId",
        "featureViewId"
      ]
    },
    "google-native:aiplatform/v1beta1:Featurestore": {
      "description": "Creates a new Featurestore in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Featurestore was created."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Optional. Customer-managed encryption key spec for data storage. If set, both of the online and offline data storage will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featurestoreId": {
          "type": "string",
          "description": "Required. The ID to use for this Featurestore, which will become the final component of the Featurestore's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Featurestore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Featurestore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Featurestore. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}`"
        },
        "onlineServingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfigResponse",
          "description": "Optional. Config for online storage resources. The field should not co-exist with the field of `OnlineStoreReplicationConfig`. If both of it and OnlineStoreReplicationConfig are unset, the feature store will not have an online store and cannot be used for online serving."
        },
        "onlineStorageTtlDays": {
          "type": "integer",
          "description": "Optional. TTL in days for feature values that will be stored in online serving storage. The Feature Store online storage periodically removes obsolete feature values older than `online_storage_ttl_days` since the feature generation time. Note that `online_storage_ttl_days` should be less than or equal to `offline_storage_ttl_days` for each EntityType under a featurestore. If not set, default to 4000 days"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the featurestore."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Featurestore was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "encryptionSpec",
        "etag",
        "featurestoreId",
        "labels",
        "location",
        "name",
        "onlineServingConfig",
        "onlineStorageTtlDays",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Optional. Customer-managed encryption key spec for data storage. If set, both of the online and offline data storage will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "featurestoreId": {
          "type": "string",
          "description": "Required. The ID to use for this Featurestore, which will become the final component of the Featurestore's resource name. This value may be up to 60 characters, and valid characters are `[a-z0-9_]`. The first character cannot be a number. The value must be unique within the project and location.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize your Featurestore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Featurestore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "onlineServingConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfig",
          "description": "Optional. Config for online storage resources. The field should not co-exist with the field of `OnlineStoreReplicationConfig`. If both of it and OnlineStoreReplicationConfig are unset, the feature store will not have an online store and cannot be used for online serving."
        },
        "onlineStorageTtlDays": {
          "type": "integer",
          "description": "Optional. TTL in days for feature values that will be stored in online serving storage. The Feature Store online storage periodically removes obsolete feature values older than `online_storage_ttl_days` since the feature generation time. Note that `online_storage_ttl_days` should be less than or equal to `offline_storage_ttl_days` for each EntityType under a featurestore. If not set, default to 4000 days"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:FeaturestoreEntityTypeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:FeaturestoreEntityTypeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:FeaturestoreEntityTypeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "entityTypeId",
        "etag",
        "featurestoreId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "entityTypeId",
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:FeaturestoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:FeaturestoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:FeaturestoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "featurestoreId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featurestoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "featurestoreId"
      ]
    },
    "google-native:aiplatform/v1beta1:HyperparameterTuningJob": {
      "description": "Creates a HyperparameterTuningJob\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the HyperparameterTuningJob was created."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize HyperparameterTuningJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxFailedTrialCount": {
          "type": "integer",
          "description": "The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails."
        },
        "maxTrialCount": {
          "type": "integer",
          "description": "The desired total number of Trials."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the HyperparameterTuningJob."
        },
        "parallelTrialCount": {
          "type": "integer",
          "description": "The desired number of Trials to run in parallel."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "studySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecResponse",
          "description": "Study configuration of the HyperparameterTuningJob."
        },
        "trialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpecResponse",
          "description": "The spec of a trial job. The same spec applies to the CustomJobs created in all the trials."
        },
        "trials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TrialResponse"
          },
          "description": "Trials of the HyperparameterTuningJob."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the HyperparameterTuningJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "labels",
        "location",
        "maxFailedTrialCount",
        "maxTrialCount",
        "name",
        "parallelTrialCount",
        "project",
        "startTime",
        "state",
        "studySpec",
        "trialJobSpec",
        "trials",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize HyperparameterTuningJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxFailedTrialCount": {
          "type": "integer",
          "description": "The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails."
        },
        "maxTrialCount": {
          "type": "integer",
          "description": "The desired total number of Trials."
        },
        "parallelTrialCount": {
          "type": "integer",
          "description": "The desired number of Trials to run in parallel."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "studySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpec",
          "description": "Study configuration of the HyperparameterTuningJob."
        },
        "trialJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpec",
          "description": "The spec of a trial job. The same spec applies to the CustomJobs created in all the trials."
        }
      },
      "requiredInputs": [
        "displayName",
        "maxTrialCount",
        "parallelTrialCount",
        "studySpec",
        "trialJobSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:Index": {
      "description": "Creates an Index.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Index was created."
        },
        "deployedIndexes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedIndexRefResponse"
          },
          "description": "The pointers to DeployedIndexes created from this Index. An Index can be only deleted if all its DeployedIndexes had been undeployed first."
        },
        "description": {
          "type": "string",
          "description": "The description of the Index."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Immutable. Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "indexStats": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1IndexStatsResponse",
          "description": "Stats of the index resource."
        },
        "indexUpdateMethod": {
          "type": "string",
          "description": "Immutable. The update method to use with this Index. If not set, BATCH_UPDATE will be used by default."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Indexes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "An additional information about the Index; the schema of the metadata can be found in metadata_schema."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Index, that is specific to it. Unset if the Index does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Index."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Index was most recently updated. This also includes any update to the contents of the Index. Note that Operations working on this Index may have their Operations.metadata.generic_metadata.update_time a little after the value of this timestamp, yet that does not mean their results are not already reflected in the Index. Result of any successfully completed Operation on the Index is reflected in it."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deployedIndexes",
        "description",
        "displayName",
        "encryptionSpec",
        "etag",
        "indexStats",
        "indexUpdateMethod",
        "labels",
        "location",
        "metadata",
        "metadataSchemaUri",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the Index."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Immutable. Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "indexUpdateMethod": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:IndexIndexUpdateMethod",
          "description": "Immutable. The update method to use with this Index. If not set, BATCH_UPDATE will be used by default."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Indexes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "pulumi.json#/Any",
          "description": "An additional information about the Index; the schema of the metadata can be found in metadata_schema."
        },
        "metadataSchemaUri": {
          "type": "string",
          "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Index, that is specific to it. Unset if the Index does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1beta1:IndexEndpoint": {
      "description": "Creates an IndexEndpoint.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this IndexEndpoint was created."
        },
        "deployedIndexes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedIndexResponse"
          },
          "description": "The indexes deployed in this endpoint."
        },
        "description": {
          "type": "string",
          "description": "The description of the IndexEndpoint."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the IndexEndpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
          "deprecationMessage": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Immutable. Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your IndexEndpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the IndexEndpoint."
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the IndexEndpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. network and private_service_connect_config are mutually exclusive. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in '12345', and {network} is network name."
        },
        "privateServiceConnectConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PrivateServiceConnectConfigResponse",
          "description": "Optional. Configuration for private service connect. network and private_service_connect_config are mutually exclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicEndpointDomainName": {
          "type": "string",
          "description": "If public_endpoint_enabled is true, this field will be populated with the domain name to use for this index endpoint."
        },
        "publicEndpointEnabled": {
          "type": "boolean",
          "description": "Optional. If true, the deployed index will be accessible through public endpoint."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this IndexEndpoint was last updated. This timestamp is not updated when the endpoint's DeployedIndexes are updated, e.g. due to updates of the original Indexes they are the deployments of."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deployedIndexes",
        "description",
        "displayName",
        "enablePrivateServiceConnect",
        "encryptionSpec",
        "etag",
        "labels",
        "location",
        "name",
        "network",
        "privateServiceConnectConfig",
        "project",
        "publicEndpointDomainName",
        "publicEndpointEnabled",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the IndexEndpoint."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the IndexEndpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enablePrivateServiceConnect": {
          "type": "boolean",
          "description": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
          "deprecationMessage": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Immutable. Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your IndexEndpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the IndexEndpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. network and private_service_connect_config are mutually exclusive. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in '12345', and {network} is network name."
        },
        "privateServiceConnectConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PrivateServiceConnectConfig",
          "description": "Optional. Configuration for private service connect. network and private_service_connect_config are mutually exclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicEndpointEnabled": {
          "type": "boolean",
          "description": "Optional. If true, the deployed index will be accessible through public endpoint."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1beta1:MetadataSchema": {
      "description": "Creates a MetadataSchema.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this MetadataSchema was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the Metadata Schema"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataSchemaId": {
          "type": "string",
          "description": "The {metadata_schema} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/metadataSchemas/{metadataschema}` If not provided, the MetadataStore's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all MetadataSchemas in the parent Location. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting MetadataSchema.)"
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the MetadataSchema."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schema": {
          "type": "string",
          "description": "The raw YAML string representation of the MetadataSchema. The combination of [MetadataSchema.version] and the schema name given by `title` in [MetadataSchema.schema] must be unique within a MetadataStore. The schema is defined as an OpenAPI 3.0.2 [MetadataSchema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)"
        },
        "schemaType": {
          "type": "string",
          "description": "The type of the MetadataSchema. This is a property that identifies which metadata types will use the MetadataSchema."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the MetadataSchema. The version's format must match the following regular expression: `^[0-9]+.+.+$`, which would allow to order/compare different versions. Example: 1.0.0, 1.0.1, etc."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "metadataStoreId",
        "name",
        "project",
        "schema",
        "schemaType",
        "schemaVersion"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the Metadata Schema"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataSchemaId": {
          "type": "string",
          "description": "The {metadata_schema} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}/metadataSchemas/{metadataschema}` If not provided, the MetadataStore's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all MetadataSchemas in the parent Location. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting MetadataSchema.)"
        },
        "metadataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schema": {
          "type": "string",
          "description": "The raw YAML string representation of the MetadataSchema. The combination of [MetadataSchema.version] and the schema name given by `title` in [MetadataSchema.schema] must be unique within a MetadataStore. The schema is defined as an OpenAPI 3.0.2 [MetadataSchema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)"
        },
        "schemaType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:MetadataSchemaSchemaType",
          "description": "The type of the MetadataSchema. This is a property that identifies which metadata types will use the MetadataSchema."
        },
        "schemaVersion": {
          "type": "string",
          "description": "The version of the MetadataSchema. The version's format must match the following regular expression: `^[0-9]+.+.+$`, which would allow to order/compare different versions. Example: 1.0.0, 1.0.1, etc."
        }
      },
      "requiredInputs": [
        "metadataStoreId",
        "schema"
      ]
    },
    "google-native:aiplatform/v1beta1:MetadataStore": {
      "description": "Initializes a MetadataStore, including allocation of resources.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this MetadataStore was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the MetadataStore."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a Metadata Store. If set, this Metadata Store and all sub-resources of this Metadata Store are secured using this key."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataStoreId": {
          "type": "string",
          "description": "The {metadatastore} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}` If not provided, the MetadataStore's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all MetadataStores in the parent Location. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting MetadataStore.)"
        },
        "name": {
          "type": "string",
          "description": "The resource name of the MetadataStore instance."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MetadataStoreMetadataStoreStateResponse",
          "description": "State information of the MetadataStore."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this MetadataStore was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "encryptionSpec",
        "location",
        "name",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the MetadataStore."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a Metadata Store. If set, this Metadata Store and all sub-resources of this Metadata Store are secured using this key."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataStoreId": {
          "type": "string",
          "description": "The {metadatastore} portion of the resource name with the format: `projects/{project}/locations/{location}/metadataStores/{metadatastore}` If not provided, the MetadataStore's ID will be a UUID generated by the service. Must be 4-128 characters in length. Valid characters are `/a-z-/`. Must be unique across all MetadataStores in the parent Location. (Otherwise the request will fail with ALREADY_EXISTS, or PERMISSION_DENIED if the caller can't view the preexisting MetadataStore.)"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:aiplatform/v1beta1:ModelDeploymentMonitoringJob": {
      "description": "Creates a ModelDeploymentMonitoringJob. It will run periodically on a configured interval.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "analysisInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri describing the format of a single instance that you want Tensorflow Data Validation (TFDV) to analyze. If this field is empty, all the feature data types are inferred from predict_instance_schema_uri, meaning that TFDV will use the data in the exact format(data type) as prediction request/response. If there are any data type differences between predict instance and TFDV instance, this field can be used to override the schema. For models trained with Vertex AI, this field must be set as all the fields in predict instance formatted as string."
        },
        "bigqueryTables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringBigQueryTableResponse"
          },
          "description": "The created bigquery tables for the job under customer project. Customer could do their own query & analysis. There could be 4 log tables in maximum: 1. Training data logging predict request/response 2. Serving data logging predict request/response"
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this ModelDeploymentMonitoringJob was created."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the ModelDeploymentMonitoringJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a ModelDeploymentMonitoringJob."
        },
        "enableMonitoringPipelineLogs": {
          "type": "boolean",
          "description": "If true, the scheduled monitoring pipeline logs are sent to Google Cloud Logging, including pipeline status and anomalies detected. Please note the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging#pricing)."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a ModelDeploymentMonitoringJob. If set, this ModelDeploymentMonitoringJob and all sub-resources of this ModelDeploymentMonitoringJob will be secured by this key."
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint resource name. Format: `projects/{project}/locations/{location}/endpoints/{endpoint}`"
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "Only populated when the job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your ModelDeploymentMonitoringJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "latestMonitoringPipelineMetadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringJobLatestMonitoringPipelineMetadataResponse",
          "description": "Latest triggered monitoring pipeline metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logTtl": {
          "type": "string",
          "description": "The TTL of BigQuery tables in user projects which stores logs. A day is the basic unit of the TTL and we take the ceil of TTL/86400(a day). e.g. { second: 3600} indicates ttl = 1 day."
        },
        "loggingSamplingStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SamplingStrategyResponse",
          "description": "Sample Strategy for logging."
        },
        "modelDeploymentMonitoringObjectiveConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringObjectiveConfigResponse"
          },
          "description": "The config for monitoring objectives. This is a per DeployedModel config. Each DeployedModel needs to be configured separately."
        },
        "modelDeploymentMonitoringScheduleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringScheduleConfigResponse",
          "description": "Schedule config for running the monitoring job."
        },
        "modelMonitoringAlertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfigResponse",
          "description": "Alert config for model monitoring."
        },
        "name": {
          "type": "string",
          "description": "Resource name of a ModelDeploymentMonitoringJob."
        },
        "nextScheduleTime": {
          "type": "string",
          "description": "Timestamp when this monitoring pipeline will be scheduled to run for the next round."
        },
        "predictInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri describing the format of a single instance, which are given to format this Endpoint's prediction (and explanation). If not set, we will generate predict schema from collected predict requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "samplePredictInstance": {
          "$ref": "pulumi.json#/Any",
          "description": "Sample Predict instance, same format as PredictRequest.instances, this can be set as a replacement of ModelDeploymentMonitoringJob.predict_instance_schema_uri. If not set, we will generate predict schema from collected predict requests."
        },
        "scheduleState": {
          "type": "string",
          "description": "Schedule state when the monitoring job is in Running state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the monitoring job. When the job is still creating, the state will be 'PENDING'. Once the job is successfully created, the state will be 'RUNNING'. Pause the job, the state will be 'PAUSED'. Resume the job, the state will return to 'RUNNING'."
        },
        "statsAnomaliesBaseDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestinationResponse",
          "description": "Stats anomalies base folder path."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this ModelDeploymentMonitoringJob was updated most recently."
        }
      },
      "type": "object",
      "required": [
        "analysisInstanceSchemaUri",
        "bigqueryTables",
        "createTime",
        "displayName",
        "enableMonitoringPipelineLogs",
        "encryptionSpec",
        "endpoint",
        "error",
        "labels",
        "latestMonitoringPipelineMetadata",
        "location",
        "logTtl",
        "loggingSamplingStrategy",
        "modelDeploymentMonitoringObjectiveConfigs",
        "modelDeploymentMonitoringScheduleConfig",
        "modelMonitoringAlertConfig",
        "name",
        "nextScheduleTime",
        "predictInstanceSchemaUri",
        "project",
        "samplePredictInstance",
        "scheduleState",
        "state",
        "statsAnomaliesBaseDirectory",
        "updateTime"
      ],
      "inputProperties": {
        "analysisInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri describing the format of a single instance that you want Tensorflow Data Validation (TFDV) to analyze. If this field is empty, all the feature data types are inferred from predict_instance_schema_uri, meaning that TFDV will use the data in the exact format(data type) as prediction request/response. If there are any data type differences between predict instance and TFDV instance, this field can be used to override the schema. For models trained with Vertex AI, this field must be set as all the fields in predict instance formatted as string."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the ModelDeploymentMonitoringJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a ModelDeploymentMonitoringJob."
        },
        "enableMonitoringPipelineLogs": {
          "type": "boolean",
          "description": "If true, the scheduled monitoring pipeline logs are sent to Google Cloud Logging, including pipeline status and anomalies detected. Please note the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging#pricing)."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a ModelDeploymentMonitoringJob. If set, this ModelDeploymentMonitoringJob and all sub-resources of this ModelDeploymentMonitoringJob will be secured by this key."
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint resource name. Format: `projects/{project}/locations/{location}/endpoints/{endpoint}`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your ModelDeploymentMonitoringJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logTtl": {
          "type": "string",
          "description": "The TTL of BigQuery tables in user projects which stores logs. A day is the basic unit of the TTL and we take the ceil of TTL/86400(a day). e.g. { second: 3600} indicates ttl = 1 day."
        },
        "loggingSamplingStrategy": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SamplingStrategy",
          "description": "Sample Strategy for logging."
        },
        "modelDeploymentMonitoringObjectiveConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringObjectiveConfig"
          },
          "description": "The config for monitoring objectives. This is a per DeployedModel config. Each DeployedModel needs to be configured separately."
        },
        "modelDeploymentMonitoringScheduleConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringScheduleConfig",
          "description": "Schedule config for running the monitoring job."
        },
        "modelMonitoringAlertConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfig",
          "description": "Alert config for model monitoring."
        },
        "predictInstanceSchemaUri": {
          "type": "string",
          "description": "YAML schema file uri describing the format of a single instance, which are given to format this Endpoint's prediction (and explanation). If not set, we will generate predict schema from collected predict requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "samplePredictInstance": {
          "$ref": "pulumi.json#/Any",
          "description": "Sample Predict instance, same format as PredictRequest.instances, this can be set as a replacement of ModelDeploymentMonitoringJob.predict_instance_schema_uri. If not set, we will generate predict schema from collected predict requests."
        },
        "statsAnomaliesBaseDirectory": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestination",
          "description": "Stats anomalies base folder path."
        }
      },
      "requiredInputs": [
        "displayName",
        "endpoint",
        "loggingSamplingStrategy",
        "modelDeploymentMonitoringObjectiveConfigs",
        "modelDeploymentMonitoringScheduleConfig"
      ]
    },
    "google-native:aiplatform/v1beta1:ModelIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:ModelIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:ModelIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "modelId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "modelId"
      ]
    },
    "google-native:aiplatform/v1beta1:NasJob": {
      "description": "Creates a NasJob\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the NasJob was created."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the NasJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enableRestrictedImageTraining": {
          "type": "boolean",
          "description": "Optional. Enable a separation of Custom model training and restricted image training for tenant project."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key options for a NasJob. If this is set, then all resources created by the NasJob will be encrypted with the provided encryption key."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the NasJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize NasJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the NasJob."
        },
        "nasJobOutput": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobOutputResponse",
          "description": "Output of the NasJob."
        },
        "nasJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecResponse",
          "description": "The specification of a NasJob."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the NasJob for the first time entered the `JOB_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the NasJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "enableRestrictedImageTraining",
        "encryptionSpec",
        "endTime",
        "error",
        "labels",
        "location",
        "name",
        "nasJobOutput",
        "nasJobSpec",
        "project",
        "startTime",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the NasJob. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "enableRestrictedImageTraining": {
          "type": "boolean",
          "description": "Optional. Enable a separation of Custom model training and restricted image training for tenant project."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key options for a NasJob. If this is set, then all resources created by the NasJob will be encrypted with the provided encryption key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize NasJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "nasJobSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpec",
          "description": "The specification of a NasJob."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "nasJobSpec"
      ]
    },
    "google-native:aiplatform/v1beta1:NotebookRuntimeTemplate": {
      "description": "Creates a NotebookRuntimeTemplate.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this NotebookRuntimeTemplate was created."
        },
        "dataPersistentDiskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PersistentDiskSpecResponse",
          "description": "Optional. The specification of persistent disk attached to the runtime as data disk storage."
        },
        "description": {
          "type": "string",
          "description": "The description of the NotebookRuntimeTemplate."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the NotebookRuntimeTemplate. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "eucConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NotebookEucConfigResponse",
          "description": "EUC configuration of the NotebookRuntimeTemplate."
        },
        "idleShutdownConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NotebookIdleShutdownConfigResponse",
          "description": "The idle shutdown configuration of NotebookRuntimeTemplate. This config will only be set when idle shutdown is enabled."
        },
        "isDefault": {
          "type": "boolean",
          "description": "The default template to use if not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize the NotebookRuntimeTemplates. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpecResponse",
          "description": "Optional. Immutable. The specification of a single machine for the template."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the NotebookRuntimeTemplate."
        },
        "networkSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NetworkSpecResponse",
          "description": "Optional. Network spec."
        },
        "notebookRuntimeTemplateId": {
          "type": "string",
          "description": "Optional. User specified ID for the notebook runtime template."
        },
        "notebookRuntimeType": {
          "type": "string",
          "description": "Optional. Immutable. The type of the notebook runtime template."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the runtime workload runs as. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this NotebookRuntimeTemplate was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dataPersistentDiskSpec",
        "description",
        "displayName",
        "etag",
        "eucConfig",
        "idleShutdownConfig",
        "isDefault",
        "labels",
        "location",
        "machineSpec",
        "name",
        "networkSpec",
        "notebookRuntimeType",
        "project",
        "serviceAccount",
        "updateTime"
      ],
      "inputProperties": {
        "dataPersistentDiskSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PersistentDiskSpec",
          "description": "Optional. The specification of persistent disk attached to the runtime as data disk storage."
        },
        "description": {
          "type": "string",
          "description": "The description of the NotebookRuntimeTemplate."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the NotebookRuntimeTemplate. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "eucConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NotebookEucConfig",
          "description": "EUC configuration of the NotebookRuntimeTemplate."
        },
        "idleShutdownConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NotebookIdleShutdownConfig",
          "description": "The idle shutdown configuration of NotebookRuntimeTemplate. This config will only be set when idle shutdown is enabled."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize the NotebookRuntimeTemplates. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpec",
          "description": "Optional. Immutable. The specification of a single machine for the template."
        },
        "networkSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NetworkSpec",
          "description": "Optional. Network spec."
        },
        "notebookRuntimeTemplateId": {
          "type": "string",
          "description": "Optional. User specified ID for the notebook runtime template."
        },
        "notebookRuntimeType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:NotebookRuntimeTemplateNotebookRuntimeType",
          "description": "Optional. Immutable. The type of the notebook runtime template."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the runtime workload runs as. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1beta1:NotebookRuntimeTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:NotebookRuntimeTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:aiplatform/v1beta1:NotebookRuntimeTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notebookRuntimeTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "notebookRuntimeTemplateId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notebookRuntimeTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "notebookRuntimeTemplateId"
      ]
    },
    "google-native:aiplatform/v1beta1:PersistentResource": {
      "description": "Creates a PersistentResource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the PersistentResource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The display name of the PersistentResource. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Optional. Customer-managed encryption key spec for a PersistentResource. If set, this PersistentResource and all sub-resources of this PersistentResource will be secured by this key."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "Only populated when persistent resource's state is `STOPPING` or `ERROR`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize PersistentResource. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Resource name of a PersistentResource."
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to peered with Vertex AI to host the persistent resources. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the resources aren't peered with any network."
        },
        "persistentResourceId": {
          "type": "string",
          "description": "Required. The ID to use for the PersistentResource, which become the final component of the PersistentResource's resource name. The maximum length is 63 characters, and valid characters are `/^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/`.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of names for the reserved IP ranges under the VPC network that can be used for this persistent resource. If set, we will deploy the persistent resource within the provided IP ranges. Otherwise, the persistent resource is deployed to any IP ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "resourcePools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourcePoolResponse"
          },
          "description": "The spec of the pools of different resources."
        },
        "resourceRuntime": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourceRuntimeResponse",
          "description": "Runtime information of the Persistent Resource."
        },
        "resourceRuntimeSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourceRuntimeSpecResponse",
          "description": "Optional. Persistent Resource runtime spec. For example, used for Ray cluster configuration."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the PersistentResource for the first time entered the `RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of a Study."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the PersistentResource was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "error",
        "labels",
        "location",
        "name",
        "network",
        "persistentResourceId",
        "project",
        "reservedIpRanges",
        "resourcePools",
        "resourceRuntime",
        "resourceRuntimeSpec",
        "startTime",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Optional. The display name of the PersistentResource. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Optional. Customer-managed encryption key spec for a PersistentResource. If set, this PersistentResource and all sub-resources of this PersistentResource will be secured by this key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels with user-defined metadata to organize PersistentResource. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Resource name of a PersistentResource."
        },
        "network": {
          "type": "string",
          "description": "Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to peered with Vertex AI to host the persistent resources. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the resources aren't peered with any network."
        },
        "persistentResourceId": {
          "type": "string",
          "description": "Required. The ID to use for the PersistentResource, which become the final component of the PersistentResource's resource name. The maximum length is 63 characters, and valid characters are `/^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/`.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of names for the reserved IP ranges under the VPC network that can be used for this persistent resource. If set, we will deploy the persistent resource within the provided IP ranges. Otherwise, the persistent resource is deployed to any IP ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "resourcePools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourcePool"
          },
          "description": "The spec of the pools of different resources."
        },
        "resourceRuntimeSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourceRuntimeSpec",
          "description": "Optional. Persistent Resource runtime spec. For example, used for Ray cluster configuration."
        }
      },
      "requiredInputs": [
        "persistentResourceId",
        "resourcePools"
      ]
    },
    "google-native:aiplatform/v1beta1:PipelineJob": {
      "description": "Creates a PipelineJob. A PipelineJob will run immediately when created.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Pipeline creation time."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
        },
        "endTime": {
          "type": "string",
          "description": "Pipeline end time."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "The error that occurred during pipeline execution. Only populated when the pipeline's state is FAILED or CANCELLED."
        },
        "jobDetail": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobDetailResponse",
          "description": "The details of pipeline run. Not available in the list view."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the PipelineJob."
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network."
        },
        "pipelineJobId": {
          "type": "string",
          "description": "The ID to use for the PipelineJob, which will become the final component of the PipelineJob name. If not provided, an ID will be automatically generated. This value should be less than 128 characters, and valid characters are `/a-z-/`."
        },
        "pipelineSpec": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The spec of the pipeline."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfigResponse",
          "description": "Runtime config of the pipeline."
        },
        "scheduleName": {
          "type": "string",
          "description": "The schedule resource name. Only returned if the Pipeline is created by Schedule API."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "startTime": {
          "type": "string",
          "description": "Pipeline start time."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the job."
        },
        "templateMetadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineTemplateMetadataResponse",
          "description": "Pipeline template metadata. Will fill up fields if PipelineJob.template_uri is from supported template registry."
        },
        "templateUri": {
          "type": "string",
          "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry & Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this PipelineJob was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "jobDetail",
        "labels",
        "location",
        "name",
        "network",
        "pipelineSpec",
        "project",
        "reservedIpRanges",
        "runtimeConfig",
        "scheduleName",
        "serviceAccount",
        "startTime",
        "state",
        "templateMetadata",
        "templateUri",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network."
        },
        "pipelineJobId": {
          "type": "string",
          "description": "The ID to use for the PipelineJob, which will become the final component of the PipelineJob name. If not provided, an ID will be automatically generated. This value should be less than 128 characters, and valid characters are `/a-z-/`."
        },
        "pipelineSpec": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The spec of the pipeline."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range']."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfig",
          "description": "Runtime config of the pipeline."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account."
        },
        "templateUri": {
          "type": "string",
          "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry & Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template."
        }
      }
    },
    "google-native:aiplatform/v1beta1:Run": {
      "description": "Creates a TensorboardRun.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardRun was created."
        },
        "description": {
          "type": "string",
          "description": "Description of this TensorboardRun."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardRun. This value must be unique among all TensorboardRuns belonging to the same parent TensorboardExperiment."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "experimentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your TensorboardRuns. This field will be used to filter and visualize Runs in the Tensorboard UI. For example, a Vertex AI training job can set a label aiplatform.googleapis.com/training_job_id=xxxxx to all the runs created within that job. An end user can set a label experiment_id=xxxxx for all the runs produced in a Jupyter notebook. These runs can be grouped by a label value and visualized together in the Tensorboard UI. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one TensorboardRun (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the TensorboardRun. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}/runs/{run}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardRunId": {
          "type": "string",
          "description": "Required. The ID to use for the Tensorboard run, which becomes the final component of the Tensorboard run's resource name. This value should be 1-128 characters, and valid characters are `/a-z-/`.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardRun was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "experimentId",
        "labels",
        "location",
        "name",
        "project",
        "tensorboardId",
        "tensorboardRunId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this TensorboardRun."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardRun. This value must be unique among all TensorboardRuns belonging to the same parent TensorboardExperiment."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "experimentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your TensorboardRuns. This field will be used to filter and visualize Runs in the Tensorboard UI. For example, a Vertex AI training job can set a label aiplatform.googleapis.com/training_job_id=xxxxx to all the runs created within that job. An end user can set a label experiment_id=xxxxx for all the runs produced in a Jupyter notebook. These runs can be grouped by a label value and visualized together in the Tensorboard UI. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one TensorboardRun (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardRunId": {
          "type": "string",
          "description": "Required. The ID to use for the Tensorboard run, which becomes the final component of the Tensorboard run's resource name. This value should be 1-128 characters, and valid characters are `/a-z-/`.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "experimentId",
        "tensorboardId",
        "tensorboardRunId"
      ]
    },
    "google-native:aiplatform/v1beta1:Schedule": {
      "description": "Creates a Schedule.",
      "properties": {
        "allowQueueing": {
          "type": "boolean",
          "description": "Optional. Whether new scheduled runs can be queued when max_concurrent_runs limit is reached. If set to true, new runs will be queued instead of skipped. Default to false."
        },
        "catchUp": {
          "type": "boolean",
          "description": "Whether to backfill missed runs when the schedule is resumed from PAUSED state. If set to true, all missed runs will be scheduled. New runs will be scheduled after the backfill is complete. Default to false."
        },
        "createPipelineJobRequest": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CreatePipelineJobRequestResponse",
          "description": "Request for PipelineService.CreatePipelineJob. CreatePipelineJobRequest.parent field is required (format: projects/{project}/locations/{location})."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Schedule was created."
        },
        "cron": {
          "type": "string",
          "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\"."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of the Schedule. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "endTime": {
          "type": "string",
          "description": "Optional. Timestamp after which no new runs can be scheduled. If specified, The schedule will be completed when either end_time is reached or when scheduled_run_count >= max_run_count. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified."
        },
        "lastPauseTime": {
          "type": "string",
          "description": "Timestamp when this Schedule was last paused. Unset if never paused."
        },
        "lastResumeTime": {
          "type": "string",
          "description": "Timestamp when this Schedule was last resumed. Unset if never resumed from pause."
        },
        "lastScheduledRunResponse": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ScheduleRunResponseResponse",
          "description": "Response of the last scheduled run. This is the response for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable). Unset if no run has been scheduled yet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxConcurrentRunCount": {
          "type": "string",
          "description": "Maximum number of runs that can be started concurrently for this Schedule. This is the limit for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable)."
        },
        "maxRunCount": {
          "type": "string",
          "description": "Optional. Maximum run count of the schedule. If specified, The schedule will be completed when either started_run_count >= max_run_count or when end_time is reached. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Schedule."
        },
        "nextRunTime": {
          "type": "string",
          "description": "Timestamp when this Schedule should schedule the next run. Having a next_run_time in the past means the runs are being started behind schedule."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Optional. Timestamp after which the first run can be scheduled. Default to Schedule create time if not specified."
        },
        "startedRunCount": {
          "type": "string",
          "description": "The number of runs started by this schedule."
        },
        "state": {
          "type": "string",
          "description": "The state of this Schedule."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Schedule was updated."
        }
      },
      "type": "object",
      "required": [
        "allowQueueing",
        "catchUp",
        "createPipelineJobRequest",
        "createTime",
        "cron",
        "displayName",
        "endTime",
        "lastPauseTime",
        "lastResumeTime",
        "lastScheduledRunResponse",
        "location",
        "maxConcurrentRunCount",
        "maxRunCount",
        "name",
        "nextRunTime",
        "project",
        "startTime",
        "startedRunCount",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "allowQueueing": {
          "type": "boolean",
          "description": "Optional. Whether new scheduled runs can be queued when max_concurrent_runs limit is reached. If set to true, new runs will be queued instead of skipped. Default to false."
        },
        "createPipelineJobRequest": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CreatePipelineJobRequest",
          "description": "Request for PipelineService.CreatePipelineJob. CreatePipelineJobRequest.parent field is required (format: projects/{project}/locations/{location})."
        },
        "cron": {
          "type": "string",
          "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\"."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of the Schedule. The name can be up to 128 characters long and can consist of any UTF-8 characters."
        },
        "endTime": {
          "type": "string",
          "description": "Optional. Timestamp after which no new runs can be scheduled. If specified, The schedule will be completed when either end_time is reached or when scheduled_run_count >= max_run_count. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxConcurrentRunCount": {
          "type": "string",
          "description": "Maximum number of runs that can be started concurrently for this Schedule. This is the limit for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable)."
        },
        "maxRunCount": {
          "type": "string",
          "description": "Optional. Maximum run count of the schedule. If specified, The schedule will be completed when either started_run_count >= max_run_count or when end_time is reached. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Schedule."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Optional. Timestamp after which the first run can be scheduled. Default to Schedule create time if not specified."
        }
      },
      "requiredInputs": [
        "displayName",
        "maxConcurrentRunCount"
      ]
    },
    "google-native:aiplatform/v1beta1:SpecialistPool": {
      "description": "Creates a SpecialistPool.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the SpecialistPool. The name can be up to 128 characters long and can consist of any UTF-8 characters. This field should be unique on project-level."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the SpecialistPool."
        },
        "pendingDataLabelingJobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The resource name of the pending data labeling jobs."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specialistManagerEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses of the managers in the SpecialistPool."
        },
        "specialistManagersCount": {
          "type": "integer",
          "description": "The number of managers in this SpecialistPool."
        },
        "specialistWorkerEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses of workers in the SpecialistPool."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "location",
        "name",
        "pendingDataLabelingJobs",
        "project",
        "specialistManagerEmails",
        "specialistManagersCount",
        "specialistWorkerEmails"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The user-defined name of the SpecialistPool. The name can be up to 128 characters long and can consist of any UTF-8 characters. This field should be unique on project-level."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the SpecialistPool."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specialistManagerEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses of the managers in the SpecialistPool."
        },
        "specialistWorkerEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses of workers in the SpecialistPool."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1beta1:Study": {
      "description": "Creates a Study. A resource name will be generated after creation of the Study.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time at which the study was created."
        },
        "displayName": {
          "type": "string",
          "description": "Describes the Study, default value is empty string."
        },
        "inactiveReason": {
          "type": "string",
          "description": "A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of a study. The study's globally unique identifier. Format: `projects/{project}/locations/{location}/studies/{study}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The detailed state of a Study."
        },
        "studySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecResponse",
          "description": "Configuration of the Study."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "inactiveReason",
        "location",
        "name",
        "project",
        "state",
        "studySpec"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Describes the Study, default value is empty string."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "studySpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpec",
          "description": "Configuration of the Study."
        }
      },
      "requiredInputs": [
        "displayName",
        "studySpec"
      ]
    },
    "google-native:aiplatform/v1beta1:Tensorboard": {
      "description": "Creates a Tensorboard.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "blobStoragePathPrefix": {
          "type": "string",
          "description": "Consumer project Cloud Storage path prefix used to store blob data, which can either be a bucket or directory. Does not end with a '/'."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this Tensorboard was created."
        },
        "description": {
          "type": "string",
          "description": "Description of this Tensorboard."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this Tensorboard."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a Tensorboard. If set, this Tensorboard and all sub-resources of this Tensorboard will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "isDefault": {
          "type": "boolean",
          "description": "Used to indicate if the TensorBoard instance is the default one. Each project & region can have at most one default TensorBoard instance. Creation of a default TensorBoard instance and updating an existing TensorBoard instance to be default will mark all other TensorBoard instances (if any) as non default."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Tensorboards. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Tensorboard (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Tensorboard. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runCount": {
          "type": "integer",
          "description": "The number of Runs stored in this Tensorboard."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this Tensorboard was last updated."
        }
      },
      "type": "object",
      "required": [
        "blobStoragePathPrefix",
        "createTime",
        "description",
        "displayName",
        "encryptionSpec",
        "etag",
        "isDefault",
        "labels",
        "location",
        "name",
        "project",
        "runCount",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this Tensorboard."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this Tensorboard."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a Tensorboard. If set, this Tensorboard and all sub-resources of this Tensorboard will be secured by this key."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "isDefault": {
          "type": "boolean",
          "description": "Used to indicate if the TensorBoard instance is the default one. Each project & region can have at most one default TensorBoard instance. Creation of a default TensorBoard instance and updating an existing TensorBoard instance to be default will mark all other TensorBoard instances (if any) as non default."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize your Tensorboards. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Tensorboard (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:aiplatform/v1beta1:TimeSeries": {
      "description": "Creates a TensorboardTimeSeries.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardTimeSeries was created."
        },
        "description": {
          "type": "string",
          "description": "Description of this TensorboardTimeSeries."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardTimeSeries. This value should be unique among all TensorboardTimeSeries resources belonging to the same TensorboardRun resource (parent resource)."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "experimentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TensorboardTimeSeriesMetadataResponse",
          "description": "Scalar, Tensor, or Blob metadata for this TensorboardTimeSeries."
        },
        "name": {
          "type": "string",
          "description": "Name of the TensorboardTimeSeries."
        },
        "pluginData": {
          "type": "string",
          "description": "Data of the current plugin, with the size limited to 65KB."
        },
        "pluginName": {
          "type": "string",
          "description": "Immutable. Name of the plugin this time series pertain to. Such as Scalar, Tensor, Blob"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardTimeSeriesId": {
          "type": "string",
          "description": "Optional. The user specified unique ID to use for the TensorboardTimeSeries, which becomes the final component of the TensorboardTimeSeries's resource name. This value should match \"a-z0-9{0, 127}\""
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this TensorboardTimeSeries was last updated."
        },
        "valueType": {
          "type": "string",
          "description": "Immutable. Type of TensorboardTimeSeries value."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "etag",
        "experimentId",
        "location",
        "metadata",
        "name",
        "pluginData",
        "pluginName",
        "project",
        "runId",
        "tensorboardId",
        "updateTime",
        "valueType"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this TensorboardTimeSeries."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name of this TensorboardTimeSeries. This value should be unique among all TensorboardTimeSeries resources belonging to the same TensorboardRun resource (parent resource)."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens."
        },
        "experimentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pluginData": {
          "type": "string",
          "description": "Data of the current plugin, with the size limited to 65KB."
        },
        "pluginName": {
          "type": "string",
          "description": "Immutable. Name of the plugin this time series pertain to. Such as Scalar, Tensor, Blob"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tensorboardTimeSeriesId": {
          "type": "string",
          "description": "Optional. The user specified unique ID to use for the TensorboardTimeSeries, which becomes the final component of the TensorboardTimeSeries's resource name. This value should match \"a-z0-9{0, 127}\""
        },
        "valueType": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:TimeSeriesValueType",
          "description": "Immutable. Type of TensorboardTimeSeries value."
        }
      },
      "requiredInputs": [
        "displayName",
        "experimentId",
        "runId",
        "tensorboardId",
        "valueType"
      ]
    },
    "google-native:aiplatform/v1beta1:TrainingPipeline": {
      "description": "Creates a TrainingPipeline. A created TrainingPipeline right away will be attempted to be run.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the TrainingPipeline was created."
        },
        "displayName": {
          "type": "string",
          "description": "The user-defined name of this TrainingPipeline."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
          "description": "Customer-managed encryption key spec for a TrainingPipeline. If set, this TrainingPipeline will be secured by this key. Note: Model trained by this TrainingPipeline is also secured by this key if model_to_upload is not set separately."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the TrainingPipeline entered any of the following states: `PIPELINE_STATE_SUCCEEDED`, `PIPELINE_STATE_FAILED`, `PIPELINE_STATE_CANCELLED`."
        },
        "error": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
          "description": "Only populated when the pipeline's state is `PIPELINE_STATE_FAILED` or `PIPELINE_STATE_CANCELLED`."
        },
        "inputDataConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1InputDataConfigResponse",
          "description": "Specifies Vertex AI owned input data that may be used for training the Model. The TrainingPipeline's training_task_definition should make clear whether this config is used and if there are any special requirements on how it should be filled. If nothing about this config is mentioned in the training_task_definition, then it should be assumed that the TrainingPipeline does not depend on this configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize TrainingPipelines. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "Optional. The ID to use for the uploaded Model, which will become the final component of the model resource name. This value may be up to 63 characters, and valid characters are `[a-z0-9_-]`. The first character cannot be a number or hyphen."
        },
        "modelToUpload": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelResponse",
          "description": "Describes the Model that may be uploaded (via ModelService.UploadModel) by this TrainingPipeline. The TrainingPipeline's training_task_definition should make clear whether this Model description should be populated, and if there are any special requirements regarding how it should be filled. If nothing is mentioned in the training_task_definition, then it should be assumed that this field should not be filled and the training task either uploads the Model without a need of this information, or that training task does not support uploading a Model as part of the pipeline. When the Pipeline's state becomes `PIPELINE_STATE_SUCCEEDED` and the trained Model had been uploaded into Vertex AI, then the model_to_upload's resource name is populated. The Model is always uploaded into the Project and Location in which this pipeline is."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the TrainingPipeline."
        },
        "parentModel": {
          "type": "string",
          "description": "Optional. When specify this field, the `model_to_upload` will not be uploaded as a new model, instead, it will become a new version of this `parent_model`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the TrainingPipeline for the first time entered the `PIPELINE_STATE_RUNNING` state."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the pipeline."
        },
        "trainingTaskDefinition": {
          "type": "string",
          "description": "A Google Cloud Storage path to the YAML file that defines the training task which is responsible for producing the model artifact, and may also include additional auxiliary work. The definition files that can be used here are found in gs://google-cloud-aiplatform/schema/trainingjob/definition/. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "trainingTaskInputs": {
          "$ref": "pulumi.json#/Any",
          "description": "The training task's parameter(s), as specified in the training_task_definition's `inputs`."
        },
        "trainingTaskMetadata": {
          "$ref": "pulumi.json#/Any",
          "description": "The metadata information as specified in the training_task_definition's `metadata`. This metadata is an auxiliary runtime and final information about the training task. While the pipeline is running this information is populated only at a best effort basis. Only present if the pipeline's training_task_definition contains `metadata` object."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the TrainingPipeline was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionSpec",
        "endTime",
        "error",
        "inputDataConfig",
        "labels",
        "location",
        "modelId",
        "modelToUpload",
        "name",
        "parentModel",
        "project",
        "startTime",
        "state",
        "trainingTaskDefinition",
        "trainingTaskInputs",
        "trainingTaskMetadata",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The user-defined name of this TrainingPipeline."
        },
        "encryptionSpec": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpec",
          "description": "Customer-managed encryption key spec for a TrainingPipeline. If set, this TrainingPipeline will be secured by this key. Note: Model trained by this TrainingPipeline is also secured by this key if model_to_upload is not set separately."
        },
        "inputDataConfig": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1InputDataConfig",
          "description": "Specifies Vertex AI owned input data that may be used for training the Model. The TrainingPipeline's training_task_definition should make clear whether this config is used and if there are any special requirements on how it should be filled. If nothing about this config is mentioned in the training_task_definition, then it should be assumed that the TrainingPipeline does not depend on this configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels with user-defined metadata to organize TrainingPipelines. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "Optional. The ID to use for the uploaded Model, which will become the final component of the model resource name. This value may be up to 63 characters, and valid characters are `[a-z0-9_-]`. The first character cannot be a number or hyphen."
        },
        "modelToUpload": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1Model",
          "description": "Describes the Model that may be uploaded (via ModelService.UploadModel) by this TrainingPipeline. The TrainingPipeline's training_task_definition should make clear whether this Model description should be populated, and if there are any special requirements regarding how it should be filled. If nothing is mentioned in the training_task_definition, then it should be assumed that this field should not be filled and the training task either uploads the Model without a need of this information, or that training task does not support uploading a Model as part of the pipeline. When the Pipeline's state becomes `PIPELINE_STATE_SUCCEEDED` and the trained Model had been uploaded into Vertex AI, then the model_to_upload's resource name is populated. The Model is always uploaded into the Project and Location in which this pipeline is."
        },
        "parentModel": {
          "type": "string",
          "description": "Optional. When specify this field, the `model_to_upload` will not be uploaded as a new model, instead, it will become a new version of this `parent_model`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingTaskDefinition": {
          "type": "string",
          "description": "A Google Cloud Storage path to the YAML file that defines the training task which is responsible for producing the model artifact, and may also include additional auxiliary work. The definition files that can be used here are found in gs://google-cloud-aiplatform/schema/trainingjob/definition/. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access."
        },
        "trainingTaskInputs": {
          "$ref": "pulumi.json#/Any",
          "description": "The training task's parameter(s), as specified in the training_task_definition's `inputs`."
        }
      },
      "requiredInputs": [
        "displayName",
        "trainingTaskDefinition",
        "trainingTaskInputs"
      ]
    },
    "google-native:aiplatform/v1beta1:Trial": {
      "description": "Adds a user provided Trial to a Study.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial."
        },
        "customJob": {
          "type": "string",
          "description": "The CustomJob name linked to the Trial. It's set for a HyperparameterTuningJob's Trial."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the Trial's status changed to `SUCCEEDED` or `INFEASIBLE`."
        },
        "finalMeasurement": {
          "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MeasurementResponse",
          "description": "The final measurement containing the objective value."
        },
        "infeasibleReason": {
          "type": "string",
          "description": "A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "measurements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MeasurementResponse"
          },
          "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Trial assigned by the service."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TrialParameterResponse"
          },
          "description": "The parameters of the Trial."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the Trial was started."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of the Trial."
        },
        "studyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "webAccessUris": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job's trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "customJob",
        "endTime",
        "finalMeasurement",
        "infeasibleReason",
        "location",
        "measurements",
        "name",
        "parameters",
        "project",
        "startTime",
        "state",
        "studyId",
        "webAccessUris"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "studyId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "studyId"
      ]
    },
    "google-native:alloydb/v1:Backup": {
      "description": "Creates a new Backup in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "backupId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterName": {
          "type": "string",
          "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id})."
        },
        "clusterUid": {
          "type": "string",
          "description": "The system-generated UID of the cluster which was used to create this resource."
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseVersion": {
          "type": "string",
          "description": "The database engine major version of the cluster this backup was created from. Any restored cluster created from this backup will have the same database version."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the backup."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Backup."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionInfoResponse",
          "description": "The encryption information for the backup."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "expiryQuantity": {
          "$ref": "#/types/google-native:alloydb%2Fv1:QuantityBasedExpiryResponse",
          "description": "The QuantityBasedExpiry of the backup, specified by the backup's retention policy. Once the expiry quantity is over retention, the backup is eligible to be garbage collected."
        },
        "expiryTime": {
          "type": "string",
          "description": "The time at which after the backup is eligible to be garbage collected. It is the duration specified by the backup's retention policy, added to the backup's create_time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id} where the cluster and backup ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the backup resource name is the name of the parent resource: * projects/{project}/locations/{region}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation), if true, indicates that the service is actively updating the resource. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The size of the backup in bytes."
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        },
        "type": {
          "type": "string",
          "description": "The backup type, which suggests the trigger for the backup."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "backupId",
        "clusterName",
        "clusterUid",
        "createTime",
        "databaseVersion",
        "deleteTime",
        "description",
        "displayName",
        "encryptionConfig",
        "encryptionInfo",
        "etag",
        "expiryQuantity",
        "expiryTime",
        "labels",
        "location",
        "name",
        "project",
        "reconciling",
        "sizeBytes",
        "state",
        "type",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "backupId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterName": {
          "type": "string",
          "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id})."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the backup."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Backup."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:alloydb%2Fv1:BackupType",
          "description": "The backup type, which suggests the trigger for the backup."
        }
      },
      "requiredInputs": [
        "backupId",
        "clusterName"
      ]
    },
    "google-native:alloydb/v1:Cluster": {
      "description": "Creates a new Cluster in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "automatedBackupPolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1:AutomatedBackupPolicyResponse",
          "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
        },
        "backupSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1:BackupSourceResponse",
          "description": "Cluster created from backup."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterType": {
          "type": "string",
          "description": "The type of the cluster. This is an output-only field and it's populated at the Cluster creation time or the Cluster promotion time. The cluster type is determined by which RPC was used to create the cluster (i.e. `CreateCluster` vs. `CreateSecondaryCluster`"
        },
        "continuousBackupConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:ContinuousBackupConfigResponse",
          "description": "Optional. Continuous backup configuration for this cluster."
        },
        "continuousBackupInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1:ContinuousBackupInfoResponse",
          "description": "Continuous backup properties for this cluster."
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseVersion": {
          "type": "string",
          "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Cluster."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionInfoResponse",
          "description": "The encryption information for the cluster."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "initialUser": {
          "$ref": "#/types/google-native:alloydb%2Fv1:UserPasswordResponse",
          "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1:MigrationSourceResponse",
          "description": "Cluster created via DMS migration."
        },
        "name": {
          "type": "string",
          "description": "The name of the cluster resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id} where the cluster ID segment should satisfy the regex expression `[a-z0-9-]+`. For more details see https://google.aip.dev/122. The prefix of the cluster resource name is the name of the parent resource: * projects/{project}/locations/{region}"
        },
        "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
          "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:NetworkConfigResponse"
        },
        "primaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:PrimaryConfigResponse",
          "description": "Cross Region replication config specific to PRIMARY cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Cluster does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "secondaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:SecondaryConfigResponse",
          "description": "Cross Region replication config specific to SECONDARY cluster."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:SslConfigResponse",
          "description": "SSL configuration for this AlloyDB cluster."
        },
        "state": {
          "type": "string",
          "description": "The current serving state of the cluster."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "automatedBackupPolicy",
        "backupSource",
        "clusterId",
        "clusterType",
        "continuousBackupConfig",
        "continuousBackupInfo",
        "createTime",
        "databaseVersion",
        "deleteTime",
        "displayName",
        "encryptionConfig",
        "encryptionInfo",
        "etag",
        "initialUser",
        "labels",
        "location",
        "migrationSource",
        "name",
        "network",
        "networkConfig",
        "primaryConfig",
        "project",
        "reconciling",
        "secondaryConfig",
        "sslConfig",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "automatedBackupPolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1:AutomatedBackupPolicy",
          "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "continuousBackupConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:ContinuousBackupConfig",
          "description": "Optional. Continuous backup configuration for this cluster."
        },
        "databaseVersion": {
          "$ref": "#/types/google-native:alloydb%2Fv1:ClusterDatabaseVersion",
          "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Cluster."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "initialUser": {
          "$ref": "#/types/google-native:alloydb%2Fv1:UserPassword",
          "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
          "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:NetworkConfig"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "secondaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:SecondaryConfig",
          "description": "Cross Region replication config specific to SECONDARY cluster."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:SslConfig",
          "description": "SSL configuration for this AlloyDB cluster."
        }
      },
      "requiredInputs": [
        "clusterId",
        "network"
      ]
    },
    "google-native:alloydb/v1:Instance": {
      "description": "Creates a new Instance in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "availabilityType": {
          "type": "string",
          "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones)."
        },
        "clientConnectionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:ClientConnectionConfigResponse",
          "description": "Optional. Client connection specific configurations"
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Instance."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "instanceType": {
          "type": "string",
          "description": "The type of the instance. Specified at creation time."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address for the Instance. This is the connection endpoint for an end-user application."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:MachineConfigResponse",
          "description": "Configurations for the machines that host the underlying database engine."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id} where the cluster and instance ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the instance resource name is the name of the parent resource: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1:NodeResponse"
          },
          "description": "List of available read-only VMs in this instance, including the standby for a PRIMARY instance."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryInsightsConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:QueryInsightsInstanceConfigResponse",
          "description": "Configuration for query insights."
        },
        "readPoolConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:ReadPoolConfigResponse",
          "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Instance does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The current serving state of the instance."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        },
        "writableNode": {
          "$ref": "#/types/google-native:alloydb%2Fv1:NodeResponse",
          "description": "This is set for the read-write VM of the PRIMARY instance only."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "availabilityType",
        "clientConnectionConfig",
        "clusterId",
        "createTime",
        "databaseFlags",
        "deleteTime",
        "displayName",
        "etag",
        "gceZone",
        "instanceId",
        "instanceType",
        "ipAddress",
        "labels",
        "location",
        "machineConfig",
        "name",
        "nodes",
        "project",
        "queryInsightsConfig",
        "readPoolConfig",
        "reconciling",
        "state",
        "uid",
        "updateTime",
        "writableNode"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "availabilityType": {
          "$ref": "#/types/google-native:alloydb%2Fv1:InstanceAvailabilityType",
          "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones)."
        },
        "clientConnectionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:ClientConnectionConfig",
          "description": "Optional. Client connection specific configurations"
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Instance."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "instanceType": {
          "$ref": "#/types/google-native:alloydb%2Fv1:InstanceInstanceType",
          "description": "The type of the instance. Specified at creation time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:MachineConfig",
          "description": "Configurations for the machines that host the underlying database engine."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryInsightsConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:QueryInsightsInstanceConfig",
          "description": "Configuration for query insights."
        },
        "readPoolConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1:ReadPoolConfig",
          "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "clusterId",
        "instanceId",
        "instanceType"
      ]
    },
    "google-native:alloydb/v1:User": {
      "description": "Creates a new User in a given project, location, and cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource in the form of projects/{project}/locations/{location}/cluster/{cluster}/users/{user}."
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the user."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "userId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "userType": {
          "type": "string",
          "description": "Optional. Type of this user."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "databaseRoles",
        "location",
        "name",
        "password",
        "project",
        "userId",
        "userType"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the user."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "userId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "userType": {
          "$ref": "#/types/google-native:alloydb%2Fv1:UserUserType",
          "description": "Optional. Type of this user."
        }
      },
      "requiredInputs": [
        "clusterId",
        "userId"
      ]
    },
    "google-native:alloydb/v1alpha:Backup": {
      "description": "Creates a new Backup in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "backupId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterName": {
          "type": "string",
          "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id})."
        },
        "clusterUid": {
          "type": "string",
          "description": "The system-generated UID of the cluster which was used to create this resource."
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseVersion": {
          "type": "string",
          "description": "The database engine major version of the cluster this backup was created from. Any restored cluster created from this backup will have the same database version."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the backup."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Backup."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionInfoResponse",
          "description": "The encryption information for the backup."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "expiryQuantity": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:QuantityBasedExpiryResponse",
          "description": "The QuantityBasedExpiry of the backup, specified by the backup's retention policy. Once the expiry quantity is over retention, the backup is eligible to be garbage collected."
        },
        "expiryTime": {
          "type": "string",
          "description": "The time at which after the backup is eligible to be garbage collected. It is the duration specified by the backup's retention policy, added to the backup's create_time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id} where the cluster and backup ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the backup resource name is the name of the parent resource: * projects/{project}/locations/{region}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation), if true, indicates that the service is actively updating the resource. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The size of the backup in bytes."
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        },
        "type": {
          "type": "string",
          "description": "The backup type, which suggests the trigger for the backup."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "backupId",
        "clusterName",
        "clusterUid",
        "createTime",
        "databaseVersion",
        "deleteTime",
        "description",
        "displayName",
        "encryptionConfig",
        "encryptionInfo",
        "etag",
        "expiryQuantity",
        "expiryTime",
        "labels",
        "location",
        "name",
        "project",
        "reconciling",
        "satisfiesPzs",
        "sizeBytes",
        "state",
        "type",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "backupId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterName": {
          "type": "string",
          "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id})."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the backup."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Backup."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:BackupType",
          "description": "The backup type, which suggests the trigger for the backup."
        }
      },
      "requiredInputs": [
        "backupId",
        "clusterName"
      ]
    },
    "google-native:alloydb/v1alpha:Cluster": {
      "description": "Creates a new Cluster in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "automatedBackupPolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:AutomatedBackupPolicyResponse",
          "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
        },
        "backupSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:BackupSourceResponse",
          "description": "Cluster created from backup."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterType": {
          "type": "string",
          "description": "The type of the cluster. This is an output-only field and it's populated at the Cluster creation time or the Cluster promotion time. The cluster type is determined by which RPC was used to create the cluster (i.e. `CreateCluster` vs. `CreateSecondaryCluster`"
        },
        "continuousBackupConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:ContinuousBackupConfigResponse",
          "description": "Optional. Continuous backup configuration for this cluster."
        },
        "continuousBackupInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:ContinuousBackupInfoResponse",
          "description": "Continuous backup properties for this cluster."
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseVersion": {
          "type": "string",
          "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Cluster."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionInfoResponse",
          "description": "The encryption information for the cluster."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "initialUser": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:UserPasswordResponse",
          "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:MigrationSourceResponse",
          "description": "Cluster created via DMS migration."
        },
        "name": {
          "type": "string",
          "description": "The name of the cluster resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id} where the cluster ID segment should satisfy the regex expression `[a-z0-9-]+`. For more details see https://google.aip.dev/122. The prefix of the cluster resource name is the name of the parent resource: * projects/{project}/locations/{region}"
        },
        "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
          "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:NetworkConfigResponse"
        },
        "primaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:PrimaryConfigResponse",
          "description": "Cross Region replication config specific to PRIMARY cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:PscConfigResponse",
          "description": "Optional. The configuration for Private Service Connect (PSC) for the cluster."
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Cluster does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "secondaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:SecondaryConfigResponse",
          "description": "Cross Region replication config specific to SECONDARY cluster."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:SslConfigResponse",
          "description": "SSL configuration for this AlloyDB cluster."
        },
        "state": {
          "type": "string",
          "description": "The current serving state of the cluster."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "automatedBackupPolicy",
        "backupSource",
        "clusterId",
        "clusterType",
        "continuousBackupConfig",
        "continuousBackupInfo",
        "createTime",
        "databaseVersion",
        "deleteTime",
        "displayName",
        "encryptionConfig",
        "encryptionInfo",
        "etag",
        "initialUser",
        "labels",
        "location",
        "migrationSource",
        "name",
        "network",
        "networkConfig",
        "primaryConfig",
        "project",
        "pscConfig",
        "reconciling",
        "satisfiesPzs",
        "secondaryConfig",
        "sslConfig",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "automatedBackupPolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:AutomatedBackupPolicy",
          "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "continuousBackupConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:ContinuousBackupConfig",
          "description": "Optional. Continuous backup configuration for this cluster."
        },
        "databaseVersion": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:ClusterDatabaseVersion",
          "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Cluster."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "initialUser": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:UserPassword",
          "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
          "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:NetworkConfig"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:PscConfig",
          "description": "Optional. The configuration for Private Service Connect (PSC) for the cluster."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "secondaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:SecondaryConfig",
          "description": "Cross Region replication config specific to SECONDARY cluster."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:SslConfig",
          "description": "SSL configuration for this AlloyDB cluster."
        }
      },
      "requiredInputs": [
        "clusterId",
        "network"
      ]
    },
    "google-native:alloydb/v1alpha:Instance": {
      "description": "Creates a new Instance in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "availabilityType": {
          "type": "string",
          "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones)."
        },
        "clientConnectionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:ClientConnectionConfigResponse",
          "description": "Optional. Client connection specific configurations"
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Instance."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "instanceType": {
          "type": "string",
          "description": "The type of the instance. Specified at creation time."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address for the Instance. This is the connection endpoint for an end-user application."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:MachineConfigResponse",
          "description": "Configurations for the machines that host the underlying database engine."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id} where the cluster and instance ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the instance resource name is the name of the parent resource: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:NodeResponse"
          },
          "description": "List of available read-only VMs in this instance, including the standby for a PRIMARY instance."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryInsightsConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:QueryInsightsInstanceConfigResponse",
          "description": "Configuration for query insights."
        },
        "readPoolConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:ReadPoolConfigResponse",
          "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Instance does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "state": {
          "type": "string",
          "description": "The current serving state of the instance."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:UpdatePolicyResponse",
          "description": "Update policy that will be applied during instance update. This field is not persisted when you update the instance. To use a non-default update policy, you must specify explicitly specify the value in each update request."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        },
        "writableNode": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:NodeResponse",
          "description": "This is set for the read-write VM of the PRIMARY instance only."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "availabilityType",
        "clientConnectionConfig",
        "clusterId",
        "createTime",
        "databaseFlags",
        "deleteTime",
        "displayName",
        "etag",
        "gceZone",
        "instanceId",
        "instanceType",
        "ipAddress",
        "labels",
        "location",
        "machineConfig",
        "name",
        "nodes",
        "project",
        "queryInsightsConfig",
        "readPoolConfig",
        "reconciling",
        "satisfiesPzs",
        "state",
        "uid",
        "updatePolicy",
        "updateTime",
        "writableNode"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "availabilityType": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:InstanceAvailabilityType",
          "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones)."
        },
        "clientConnectionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:ClientConnectionConfig",
          "description": "Optional. Client connection specific configurations"
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Instance."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "instanceType": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:InstanceInstanceType",
          "description": "The type of the instance. Specified at creation time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:MachineConfig",
          "description": "Configurations for the machines that host the underlying database engine."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryInsightsConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:QueryInsightsInstanceConfig",
          "description": "Configuration for query insights."
        },
        "readPoolConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:ReadPoolConfig",
          "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:UpdatePolicy",
          "description": "Update policy that will be applied during instance update. This field is not persisted when you update the instance. To use a non-default update policy, you must specify explicitly specify the value in each update request."
        }
      },
      "requiredInputs": [
        "clusterId",
        "instanceId",
        "instanceType"
      ]
    },
    "google-native:alloydb/v1alpha:User": {
      "description": "Creates a new User in a given project, location, and cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource in the form of projects/{project}/locations/{location}/cluster/{cluster}/users/{user}."
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the user."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "userId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "userType": {
          "type": "string",
          "description": "Optional. Type of this user."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "databaseRoles",
        "location",
        "name",
        "password",
        "project",
        "userId",
        "userType"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the user."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "userId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "userType": {
          "$ref": "#/types/google-native:alloydb%2Fv1alpha:UserUserType",
          "description": "Optional. Type of this user."
        }
      },
      "requiredInputs": [
        "clusterId",
        "userId"
      ]
    },
    "google-native:alloydb/v1beta:Backup": {
      "description": "Creates a new Backup in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "backupId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterName": {
          "type": "string",
          "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id})."
        },
        "clusterUid": {
          "type": "string",
          "description": "The system-generated UID of the cluster which was used to create this resource."
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseVersion": {
          "type": "string",
          "description": "The database engine major version of the cluster this backup was created from. Any restored cluster created from this backup will have the same database version."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the backup."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Backup."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionInfoResponse",
          "description": "The encryption information for the backup."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "expiryQuantity": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:QuantityBasedExpiryResponse",
          "description": "The QuantityBasedExpiry of the backup, specified by the backup's retention policy. Once the expiry quantity is over retention, the backup is eligible to be garbage collected."
        },
        "expiryTime": {
          "type": "string",
          "description": "The time at which after the backup is eligible to be garbage collected. It is the duration specified by the backup's retention policy, added to the backup's create_time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id} where the cluster and backup ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the backup resource name is the name of the parent resource: * projects/{project}/locations/{region}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation), if true, indicates that the service is actively updating the resource. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The size of the backup in bytes."
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        },
        "type": {
          "type": "string",
          "description": "The backup type, which suggests the trigger for the backup."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "backupId",
        "clusterName",
        "clusterUid",
        "createTime",
        "databaseVersion",
        "deleteTime",
        "description",
        "displayName",
        "encryptionConfig",
        "encryptionInfo",
        "etag",
        "expiryQuantity",
        "expiryTime",
        "labels",
        "location",
        "name",
        "project",
        "reconciling",
        "sizeBytes",
        "state",
        "type",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "backupId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterName": {
          "type": "string",
          "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id})."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the backup."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Backup."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:BackupType",
          "description": "The backup type, which suggests the trigger for the backup."
        }
      },
      "requiredInputs": [
        "backupId",
        "clusterName"
      ]
    },
    "google-native:alloydb/v1beta:Cluster": {
      "description": "Creates a new Cluster in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "automatedBackupPolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:AutomatedBackupPolicyResponse",
          "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
        },
        "backupSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:BackupSourceResponse",
          "description": "Cluster created from backup."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "clusterType": {
          "type": "string",
          "description": "The type of the cluster. This is an output-only field and it's populated at the Cluster creation time or the Cluster promotion time. The cluster type is determined by which RPC was used to create the cluster (i.e. `CreateCluster` vs. `CreateSecondaryCluster`"
        },
        "continuousBackupConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:ContinuousBackupConfigResponse",
          "description": "Optional. Continuous backup configuration for this cluster."
        },
        "continuousBackupInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:ContinuousBackupInfoResponse",
          "description": "Continuous backup properties for this cluster."
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseVersion": {
          "type": "string",
          "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Cluster."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfigResponse",
          "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionInfoResponse",
          "description": "The encryption information for the cluster."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "initialUser": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:UserPasswordResponse",
          "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationSource": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:MigrationSourceResponse",
          "description": "Cluster created via DMS migration."
        },
        "name": {
          "type": "string",
          "description": "The name of the cluster resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id} where the cluster ID segment should satisfy the regex expression `[a-z0-9-]+`. For more details see https://google.aip.dev/122. The prefix of the cluster resource name is the name of the parent resource: * projects/{project}/locations/{region}"
        },
        "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
          "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:NetworkConfigResponse"
        },
        "primaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:PrimaryConfigResponse",
          "description": "Cross Region replication config specific to PRIMARY cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Cluster does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "secondaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:SecondaryConfigResponse",
          "description": "Cross Region replication config specific to SECONDARY cluster."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:SslConfigResponse",
          "description": "SSL configuration for this AlloyDB cluster."
        },
        "state": {
          "type": "string",
          "description": "The current serving state of the cluster."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "automatedBackupPolicy",
        "backupSource",
        "clusterId",
        "clusterType",
        "continuousBackupConfig",
        "continuousBackupInfo",
        "createTime",
        "databaseVersion",
        "deleteTime",
        "displayName",
        "encryptionConfig",
        "encryptionInfo",
        "etag",
        "initialUser",
        "labels",
        "location",
        "migrationSource",
        "name",
        "network",
        "networkConfig",
        "primaryConfig",
        "project",
        "reconciling",
        "secondaryConfig",
        "sslConfig",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "automatedBackupPolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:AutomatedBackupPolicy",
          "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "continuousBackupConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:ContinuousBackupConfig",
          "description": "Optional. Continuous backup configuration for this cluster."
        },
        "databaseVersion": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:ClusterDatabaseVersion",
          "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Cluster."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfig",
          "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "initialUser": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:UserPassword",
          "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
          "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:NetworkConfig"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "secondaryConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:SecondaryConfig",
          "description": "Cross Region replication config specific to SECONDARY cluster."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:SslConfig",
          "description": "SSL configuration for this AlloyDB cluster."
        }
      },
      "requiredInputs": [
        "clusterId",
        "network"
      ]
    },
    "google-native:alloydb/v1beta:Instance": {
      "description": "Creates a new Instance in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "availabilityType": {
          "type": "string",
          "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones)."
        },
        "clientConnectionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:ClientConnectionConfigResponse",
          "description": "Optional. Client connection specific configurations"
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value."
        },
        "deleteTime": {
          "type": "string",
          "description": "Delete time stamp"
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Instance."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "instanceType": {
          "type": "string",
          "description": "The type of the instance. Specified at creation time."
        },
        "ipAddress": {
          "type": "string",
          "description": "The IP address for the Instance. This is the connection endpoint for an end-user application."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:MachineConfigResponse",
          "description": "Configurations for the machines that host the underlying database engine."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id} where the cluster and instance ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the instance resource name is the name of the parent resource: * projects/{project}/locations/{region}/clusters/{cluster_id}"
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:NodeResponse"
          },
          "description": "List of available read-only VMs in this instance, including the standby for a PRIMARY instance."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryInsightsConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:QueryInsightsInstanceConfigResponse",
          "description": "Configuration for query insights."
        },
        "readPoolConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:ReadPoolConfigResponse",
          "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
        },
        "reconciling": {
          "type": "boolean",
          "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Instance does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The current serving state of the instance."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted."
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:UpdatePolicyResponse",
          "description": "Update policy that will be applied during instance update. This field is not persisted when you update the instance. To use a non-default update policy, you must specify explicitly specify the value in each update request."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        },
        "writableNode": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:NodeResponse",
          "description": "This is set for the read-write VM of the PRIMARY instance only."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "availabilityType",
        "clientConnectionConfig",
        "clusterId",
        "createTime",
        "databaseFlags",
        "deleteTime",
        "displayName",
        "etag",
        "gceZone",
        "instanceId",
        "instanceType",
        "ipAddress",
        "labels",
        "location",
        "machineConfig",
        "name",
        "nodes",
        "project",
        "queryInsightsConfig",
        "readPoolConfig",
        "reconciling",
        "state",
        "uid",
        "updatePolicy",
        "updateTime",
        "writableNode"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128"
        },
        "availabilityType": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:InstanceAvailabilityType",
          "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones)."
        },
        "clientConnectionConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:ClientConnectionConfig",
          "description": "Optional. Client connection specific configurations"
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseFlags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable and human-readable display name for the Instance."
        },
        "etag": {
          "type": "string",
          "description": "For Resource freshness validation (https://google.aip.dev/154)"
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "instanceType": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:InstanceInstanceType",
          "description": "The type of the instance. Specified at creation time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:MachineConfig",
          "description": "Configurations for the machines that host the underlying database engine."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryInsightsConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:QueryInsightsInstanceConfig",
          "description": "Configuration for query insights."
        },
        "readPoolConfig": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:ReadPoolConfig",
          "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:UpdatePolicy",
          "description": "Update policy that will be applied during instance update. This field is not persisted when you update the instance. To use a non-default update policy, you must specify explicitly specify the value in each update request."
        }
      },
      "requiredInputs": [
        "clusterId",
        "instanceId",
        "instanceType"
      ]
    },
    "google-native:alloydb/v1beta:User": {
      "description": "Creates a new User in a given project, location, and cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource in the form of projects/{project}/locations/{location}/cluster/{cluster}/users/{user}."
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the user."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "userId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "userType": {
          "type": "string",
          "description": "Optional. Type of this user."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "databaseRoles",
        "location",
        "name",
        "password",
        "project",
        "userId",
        "userType"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "password": {
          "type": "string",
          "description": "Input only. Password for the user."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "userId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "userType": {
          "$ref": "#/types/google-native:alloydb%2Fv1beta:UserUserType",
          "description": "Optional. Type of this user."
        }
      },
      "requiredInputs": [
        "clusterId",
        "userId"
      ]
    },
    "google-native:analyticshub/v1:DataExchange": {
      "description": "Creates a new data exchange.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "dataExchangeId": {
          "type": "string",
          "description": "Required. The ID of the data exchange. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the data exchange. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of the data exchange. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and must not start or end with spaces. Default value is an empty string. Max length: 63 bytes."
        },
        "documentation": {
          "type": "string",
          "description": "Optional. Documentation describing the data exchange."
        },
        "icon": {
          "type": "string",
          "description": "Optional. Base64 encoded image representing the data exchange. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the content of the fields are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire."
        },
        "listingCount": {
          "type": "integer",
          "description": "Number of listings contained in the data exchange."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the data exchange. e.g. `projects/myproject/locations/US/dataExchanges/123`."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the primary point of contact of the data exchange. Max Length: 1000 bytes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sharingEnvironmentConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:SharingEnvironmentConfigResponse",
          "description": "Optional. Configurable data sharing environment option for a data exchange."
        }
      },
      "type": "object",
      "required": [
        "dataExchangeId",
        "description",
        "displayName",
        "documentation",
        "icon",
        "listingCount",
        "location",
        "name",
        "primaryContact",
        "project",
        "sharingEnvironmentConfig"
      ],
      "inputProperties": {
        "dataExchangeId": {
          "type": "string",
          "description": "Required. The ID of the data exchange. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the data exchange. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of the data exchange. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and must not start or end with spaces. Default value is an empty string. Max length: 63 bytes."
        },
        "documentation": {
          "type": "string",
          "description": "Optional. Documentation describing the data exchange."
        },
        "icon": {
          "type": "string",
          "description": "Optional. Base64 encoded image representing the data exchange. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the content of the fields are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the primary point of contact of the data exchange. Max Length: 1000 bytes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sharingEnvironmentConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:SharingEnvironmentConfig",
          "description": "Optional. Configurable data sharing environment option for a data exchange."
        }
      },
      "requiredInputs": [
        "dataExchangeId",
        "displayName"
      ]
    },
    "google-native:analyticshub/v1:DataExchangeIamBinding": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1:DataExchangeIamMember": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1:DataExchangeIamPolicy": {
      "description": "Sets the IAM policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "dataExchangeId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "dataExchangeId"
      ]
    },
    "google-native:analyticshub/v1:DataExchangeListingIamBinding": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1:DataExchangeListingIamMember": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1:DataExchangeListingIamPolicy": {
      "description": "Sets the IAM policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "listingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "dataExchangeId",
        "etag",
        "listingId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "listingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "dataExchangeId",
        "listingId"
      ]
    },
    "google-native:analyticshub/v1:Listing": {
      "description": "Creates a new listing.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:BigQueryDatasetSourceResponse",
          "description": "Shared dataset i.e. BigQuery dataset source."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Categories of the listing. Up to two categories are allowed."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataProvider": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:DataProviderResponse",
          "description": "Optional. Details of the data provider who owns the source data."
        },
        "description": {
          "type": "string",
          "description": "Optional. Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes."
        },
        "documentation": {
          "type": "string",
          "description": "Optional. Documentation describing the listing."
        },
        "icon": {
          "type": "string",
          "description": "Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the contents of the field are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire."
        },
        "listingId": {
          "type": "string",
          "description": "Required. The ID of the listing to create. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`"
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the primary point of contact of the listing. Max Length: 1000 bytes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publisher": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:PublisherResponse",
          "description": "Optional. Details of the publisher who owns the listing and who can share the source data."
        },
        "requestAccess": {
          "type": "string",
          "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes."
        },
        "restrictedExportConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:RestrictedExportConfigResponse",
          "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
        },
        "state": {
          "type": "string",
          "description": "Current state of the listing."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDataset",
        "categories",
        "dataExchangeId",
        "dataProvider",
        "description",
        "displayName",
        "documentation",
        "icon",
        "listingId",
        "location",
        "name",
        "primaryContact",
        "project",
        "publisher",
        "requestAccess",
        "restrictedExportConfig",
        "state"
      ],
      "inputProperties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:BigQueryDatasetSource",
          "description": "Shared dataset i.e. BigQuery dataset source."
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:ListingCategoriesItem"
          },
          "description": "Optional. Categories of the listing. Up to two categories are allowed."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataProvider": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:DataProvider",
          "description": "Optional. Details of the data provider who owns the source data."
        },
        "description": {
          "type": "string",
          "description": "Optional. Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes."
        },
        "documentation": {
          "type": "string",
          "description": "Optional. Documentation describing the listing."
        },
        "icon": {
          "type": "string",
          "description": "Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the contents of the field are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire."
        },
        "listingId": {
          "type": "string",
          "description": "Required. The ID of the listing to create. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the primary point of contact of the listing. Max Length: 1000 bytes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publisher": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:Publisher",
          "description": "Optional. Details of the publisher who owns the listing and who can share the source data."
        },
        "requestAccess": {
          "type": "string",
          "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes."
        },
        "restrictedExportConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1:RestrictedExportConfig",
          "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
        }
      },
      "requiredInputs": [
        "bigqueryDataset",
        "dataExchangeId",
        "displayName",
        "listingId"
      ]
    },
    "google-native:analyticshub/v1:SubscriptionIamBinding": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1:SubscriptionIamMember": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1:SubscriptionIamPolicy": {
      "description": "Sets the IAM policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "subscriptionId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "subscriptionId"
      ]
    },
    "google-native:analyticshub/v1beta1:DataExchange": {
      "description": "Creates a new data exchange.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "dataExchangeId": {
          "type": "string",
          "description": "Required. The ID of the data exchange. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the data exchange. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of the data exchange. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and must not start or end with spaces. Default value is an empty string. Max length: 63 bytes."
        },
        "documentation": {
          "type": "string",
          "description": "Optional. Documentation describing the data exchange."
        },
        "icon": {
          "type": "string",
          "description": "Optional. Base64 encoded image representing the data exchange. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the content of the fields are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire."
        },
        "listingCount": {
          "type": "integer",
          "description": "Number of listings contained in the data exchange."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the data exchange. e.g. `projects/myproject/locations/US/dataExchanges/123`."
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the primary point of contact of the data exchange. Max Length: 1000 bytes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "dataExchangeId",
        "description",
        "displayName",
        "documentation",
        "icon",
        "listingCount",
        "location",
        "name",
        "primaryContact",
        "project"
      ],
      "inputProperties": {
        "dataExchangeId": {
          "type": "string",
          "description": "Required. The ID of the data exchange. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the data exchange. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of the data exchange. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and must not start or end with spaces. Default value is an empty string. Max length: 63 bytes."
        },
        "documentation": {
          "type": "string",
          "description": "Optional. Documentation describing the data exchange."
        },
        "icon": {
          "type": "string",
          "description": "Optional. Base64 encoded image representing the data exchange. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the content of the fields are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the primary point of contact of the data exchange. Max Length: 1000 bytes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "dataExchangeId",
        "displayName"
      ]
    },
    "google-native:analyticshub/v1beta1:DataExchangeIamBinding": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1beta1:DataExchangeIamMember": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1beta1:DataExchangeIamPolicy": {
      "description": "Sets the IAM policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "dataExchangeId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "dataExchangeId"
      ]
    },
    "google-native:analyticshub/v1beta1:DataExchangeListingIamBinding": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1beta1:DataExchangeListingIamMember": {
      "description": "Sets the IAM policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:analyticshub/v1beta1:DataExchangeListingIamPolicy": {
      "description": "Sets the IAM policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "listingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "dataExchangeId",
        "etag",
        "listingId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "listingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "dataExchangeId",
        "listingId"
      ]
    },
    "google-native:analyticshub/v1beta1:Listing": {
      "description": "Creates a new listing.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:BigQueryDatasetSourceResponse",
          "description": "Shared dataset i.e. BigQuery dataset source."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Categories of the listing. Up to two categories are allowed."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataProvider": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:DataProviderResponse",
          "description": "Optional. Details of the data provider who owns the source data."
        },
        "description": {
          "type": "string",
          "description": "Optional. Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes."
        },
        "documentation": {
          "type": "string",
          "description": "Optional. Documentation describing the listing."
        },
        "icon": {
          "type": "string",
          "description": "Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the contents of the field are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire."
        },
        "listingId": {
          "type": "string",
          "description": "Required. The ID of the listing to create. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`"
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the primary point of contact of the listing. Max Length: 1000 bytes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publisher": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:PublisherResponse",
          "description": "Optional. Details of the publisher who owns the listing and who can share the source data."
        },
        "requestAccess": {
          "type": "string",
          "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes."
        },
        "restrictedExportConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:RestrictedExportConfigResponse",
          "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
        },
        "state": {
          "type": "string",
          "description": "Current state of the listing."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDataset",
        "categories",
        "dataExchangeId",
        "dataProvider",
        "description",
        "displayName",
        "documentation",
        "icon",
        "listingId",
        "location",
        "name",
        "primaryContact",
        "project",
        "publisher",
        "requestAccess",
        "restrictedExportConfig",
        "state"
      ],
      "inputProperties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:BigQueryDatasetSource",
          "description": "Shared dataset i.e. BigQuery dataset source."
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:ListingCategoriesItem"
          },
          "description": "Optional. Categories of the listing. Up to two categories are allowed."
        },
        "dataExchangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataProvider": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:DataProvider",
          "description": "Optional. Details of the data provider who owns the source data."
        },
        "description": {
          "type": "string",
          "description": "Optional. Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes."
        },
        "documentation": {
          "type": "string",
          "description": "Optional. Documentation describing the listing."
        },
        "icon": {
          "type": "string",
          "description": "Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the contents of the field are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire."
        },
        "listingId": {
          "type": "string",
          "description": "Required. The ID of the listing to create. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "primaryContact": {
          "type": "string",
          "description": "Optional. Email or URL of the primary point of contact of the listing. Max Length: 1000 bytes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publisher": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:Publisher",
          "description": "Optional. Details of the publisher who owns the listing and who can share the source data."
        },
        "requestAccess": {
          "type": "string",
          "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes."
        },
        "restrictedExportConfig": {
          "$ref": "#/types/google-native:analyticshub%2Fv1beta1:RestrictedExportConfig",
          "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
        }
      },
      "requiredInputs": [
        "bigqueryDataset",
        "dataExchangeId",
        "displayName",
        "listingId"
      ]
    },
    "google-native:apigateway/v1:Api": {
      "description": "Creates a new Api in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiId": {
          "type": "string",
          "description": "Required. Identifier to assign to the API. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managedService": {
          "type": "string",
          "description": "Optional. Immutable. The name of a Google Managed Service ( https://cloud.google.com/service-infrastructure/docs/glossary#managed). If not specified, a new Service will automatically be created in the same project as this API."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the API. Format: projects/{project}/locations/global/apis/{api}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the API."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "createTime",
        "displayName",
        "labels",
        "location",
        "managedService",
        "name",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "description": "Required. Identifier to assign to the API. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managedService": {
          "type": "string",
          "description": "Optional. Immutable. The name of a Google Managed Service ( https://cloud.google.com/service-infrastructure/docs/glossary#managed). If not specified, a new Service will automatically be created in the same project as this API."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId"
      ]
    },
    "google-native:apigateway/v1:ApiConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1:ApiConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1:ApiConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "auditConfigs",
        "bindings",
        "configId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBinding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "apiId",
        "configId"
      ]
    },
    "google-native:apigateway/v1:ApiIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1:ApiIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1:ApiIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBinding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "apiId"
      ]
    },
    "google-native:apigateway/v1:Config": {
      "description": "Creates a new ApiConfig in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiConfigId": {
          "type": "string",
          "description": "Required. Identifier to assign to the API Config. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "gatewayServiceAccount": {
          "type": "string",
          "description": "Immutable. The Google Cloud IAM Service Account that Gateways serving this config should use to authenticate to other services. This may either be the Service Account's email (`{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`) or its full resource name (`projects/{PROJECT}/accounts/{UNIQUE_ID}`). This is most often used when the service is a GCP resource such as a Cloud Run Service or an IAP-secured service."
        },
        "grpcServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigGrpcServiceDefinitionResponse"
          },
          "description": "Optional. gRPC service definition files. If specified, openapi_documents must not be included."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managedServiceConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFileResponse"
          },
          "description": "Optional. Service Configuration files. At least one must be included when using gRPC service definitions. See https://cloud.google.com/endpoints/docs/grpc/grpc-service-config#service_configuration_overview for the expected file contents. If multiple files are specified, the files are merged with the following rules: * All singular scalar fields are merged using \"last one wins\" semantics in the order of the files uploaded. * Repeated fields are concatenated. * Singular embedded messages are merged using these rules for nested fields."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the API Config. Format: projects/{project}/locations/global/apis/{api}/configs/{api_config}"
        },
        "openapiDocuments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigOpenApiDocumentResponse"
          },
          "description": "Optional. OpenAPI specification documents. If specified, grpc_services and managed_service_configs must not be included."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConfigId": {
          "type": "string",
          "description": "The ID of the associated Service Config ( https://cloud.google.com/service-infrastructure/docs/glossary#config)."
        },
        "state": {
          "type": "string",
          "description": "State of the API Config."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "apiConfigId",
        "apiId",
        "createTime",
        "displayName",
        "gatewayServiceAccount",
        "grpcServices",
        "labels",
        "location",
        "managedServiceConfigs",
        "name",
        "openapiDocuments",
        "project",
        "serviceConfigId",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "apiConfigId": {
          "type": "string",
          "description": "Required. Identifier to assign to the API Config. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "gatewayServiceAccount": {
          "type": "string",
          "description": "Immutable. The Google Cloud IAM Service Account that Gateways serving this config should use to authenticate to other services. This may either be the Service Account's email (`{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`) or its full resource name (`projects/{PROJECT}/accounts/{UNIQUE_ID}`). This is most often used when the service is a GCP resource such as a Cloud Run Service or an IAP-secured service."
        },
        "grpcServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigGrpcServiceDefinition"
          },
          "description": "Optional. gRPC service definition files. If specified, openapi_documents must not be included."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managedServiceConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFile"
          },
          "description": "Optional. Service Configuration files. At least one must be included when using gRPC service definitions. See https://cloud.google.com/endpoints/docs/grpc/grpc-service-config#service_configuration_overview for the expected file contents. If multiple files are specified, the files are merged with the following rules: * All singular scalar fields are merged using \"last one wins\" semantics in the order of the files uploaded. * Repeated fields are concatenated. * Singular embedded messages are merged using these rules for nested fields."
        },
        "openapiDocuments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigOpenApiDocument"
          },
          "description": "Optional. OpenAPI specification documents. If specified, grpc_services and managed_service_configs must not be included."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiConfigId",
        "apiId"
      ]
    },
    "google-native:apigateway/v1:Gateway": {
      "description": "Creates a new Gateway in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiConfig": {
          "type": "string",
          "description": "Resource name of the API Config for this Gateway. Format: projects/{project}/locations/global/apis/{api}/configs/{apiConfig}"
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "defaultHostname": {
          "type": "string",
          "description": "The default API Gateway host name of the form `{gateway_id}-{hash}.{region_code}.gateway.dev`."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "gatewayId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Gateway. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Gateway. Format: projects/{project}/locations/{location}/gateways/{gateway}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the Gateway."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "apiConfig",
        "createTime",
        "defaultHostname",
        "displayName",
        "gatewayId",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "apiConfig": {
          "type": "string",
          "description": "Resource name of the API Config for this Gateway. Format: projects/{project}/locations/global/apis/{api}/configs/{apiConfig}"
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "gatewayId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Gateway. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiConfig",
        "gatewayId"
      ]
    },
    "google-native:apigateway/v1:GatewayIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1:GatewayIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1:GatewayIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "gatewayId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBinding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "gatewayId"
      ]
    },
    "google-native:apigateway/v1beta:Api": {
      "description": "Creates a new Api in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiId": {
          "type": "string",
          "description": "Required. Identifier to assign to the API. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managedService": {
          "type": "string",
          "description": "Optional. Immutable. The name of a Google Managed Service ( https://cloud.google.com/service-infrastructure/docs/glossary#managed). If not specified, a new Service will automatically be created in the same project as this API."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the API. Format: projects/{project}/locations/global/apis/{api}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the API."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "createTime",
        "displayName",
        "labels",
        "location",
        "managedService",
        "name",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "description": "Required. Identifier to assign to the API. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managedService": {
          "type": "string",
          "description": "Optional. Immutable. The name of a Google Managed Service ( https://cloud.google.com/service-infrastructure/docs/glossary#managed). If not specified, a new Service will automatically be created in the same project as this API."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId"
      ]
    },
    "google-native:apigateway/v1beta:ApiConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1beta:ApiConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1beta:ApiConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "auditConfigs",
        "bindings",
        "configId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBinding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "apiId",
        "configId"
      ]
    },
    "google-native:apigateway/v1beta:ApiIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1beta:ApiIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1beta:ApiIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBinding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "apiId"
      ]
    },
    "google-native:apigateway/v1beta:Config": {
      "description": "Creates a new ApiConfig in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiConfigId": {
          "type": "string",
          "description": "Required. Identifier to assign to the API Config. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "gatewayConfig": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayGatewayConfigResponse",
          "description": "Immutable. Gateway specific configuration."
        },
        "gatewayServiceAccount": {
          "type": "string",
          "description": "Immutable. The Google Cloud IAM Service Account that Gateways serving this config should use to authenticate to other services. This may either be the Service Account's email (`{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`) or its full resource name (`projects/{PROJECT}/accounts/{UNIQUE_ID}`). This is most often used when the service is a GCP resource such as a Cloud Run Service or an IAP-secured service."
        },
        "grpcServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigGrpcServiceDefinitionResponse"
          },
          "description": "Optional. gRPC service definition files. If specified, openapi_documents must not be included."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managedServiceConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFileResponse"
          },
          "description": "Optional. Service Configuration files. At least one must be included when using gRPC service definitions. See https://cloud.google.com/endpoints/docs/grpc/grpc-service-config#service_configuration_overview for the expected file contents. If multiple files are specified, the files are merged with the following rules: * All singular scalar fields are merged using \"last one wins\" semantics in the order of the files uploaded. * Repeated fields are concatenated. * Singular embedded messages are merged using these rules for nested fields."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the API Config. Format: projects/{project}/locations/global/apis/{api}/configs/{api_config}"
        },
        "openapiDocuments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigOpenApiDocumentResponse"
          },
          "description": "Optional. OpenAPI specification documents. If specified, grpc_services and managed_service_configs must not be included."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConfigId": {
          "type": "string",
          "description": "The ID of the associated Service Config ( https://cloud.google.com/service-infrastructure/docs/glossary#config)."
        },
        "state": {
          "type": "string",
          "description": "State of the API Config."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "apiConfigId",
        "apiId",
        "createTime",
        "displayName",
        "gatewayConfig",
        "gatewayServiceAccount",
        "grpcServices",
        "labels",
        "location",
        "managedServiceConfigs",
        "name",
        "openapiDocuments",
        "project",
        "serviceConfigId",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "apiConfigId": {
          "type": "string",
          "description": "Required. Identifier to assign to the API Config. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "gatewayConfig": {
          "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayGatewayConfig",
          "description": "Immutable. Gateway specific configuration."
        },
        "gatewayServiceAccount": {
          "type": "string",
          "description": "Immutable. The Google Cloud IAM Service Account that Gateways serving this config should use to authenticate to other services. This may either be the Service Account's email (`{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`) or its full resource name (`projects/{PROJECT}/accounts/{UNIQUE_ID}`). This is most often used when the service is a GCP resource such as a Cloud Run Service or an IAP-secured service."
        },
        "grpcServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigGrpcServiceDefinition"
          },
          "description": "Optional. gRPC service definition files. If specified, openapi_documents must not be included."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managedServiceConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFile"
          },
          "description": "Optional. Service Configuration files. At least one must be included when using gRPC service definitions. See https://cloud.google.com/endpoints/docs/grpc/grpc-service-config#service_configuration_overview for the expected file contents. If multiple files are specified, the files are merged with the following rules: * All singular scalar fields are merged using \"last one wins\" semantics in the order of the files uploaded. * Repeated fields are concatenated. * Singular embedded messages are merged using these rules for nested fields."
        },
        "openapiDocuments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigOpenApiDocument"
          },
          "description": "Optional. OpenAPI specification documents. If specified, grpc_services and managed_service_configs must not be included."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiConfigId",
        "apiId"
      ]
    },
    "google-native:apigateway/v1beta:Gateway": {
      "description": "Creates a new Gateway in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiConfig": {
          "type": "string",
          "description": "Resource name of the API Config for this Gateway. Format: projects/{project}/locations/global/apis/{api}/configs/{apiConfig}"
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "defaultHostname": {
          "type": "string",
          "description": "The default API Gateway host name of the form `{gateway_id}-{hash}.{region_code}.gateway.dev`."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "gatewayId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Gateway. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Gateway. Format: projects/{project}/locations/{location}/gateways/{gateway}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the Gateway."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "apiConfig",
        "createTime",
        "defaultHostname",
        "displayName",
        "gatewayId",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "apiConfig": {
          "type": "string",
          "description": "Resource name of the API Config for this Gateway. Format: projects/{project}/locations/global/apis/{api}/configs/{apiConfig}"
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "gatewayId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Gateway. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiConfig",
        "gatewayId"
      ]
    },
    "google-native:apigateway/v1beta:GatewayIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1beta:GatewayIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigateway/v1beta:GatewayIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "gatewayId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBinding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "gatewayId"
      ]
    },
    "google-native:apigee/v1:Alias": {
      "description": "Creates an alias from a key/certificate pair. The structure of the request is controlled by the `format` query parameter: - `keycertfile` - Separate PEM-encoded key and certificate files are uploaded. Set `Content-Type: multipart/form-data` and include the `keyFile`, `certFile`, and `password` (if keys are encrypted) fields in the request body. If uploading to a truststore, omit `keyFile`. - `pkcs12` - A PKCS12 file is uploaded. Set `Content-Type: multipart/form-data`, provide the file in the `file` field, and include the `password` field if the file is encrypted in the request body. - `selfsignedcert` - A new private key and certificate are generated. Set `Content-Type: application/json` and include CertificateGenerationSpec in the request body.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "alias": {
          "type": "string",
          "description": "Alias for the key/certificate pair. Values must match the regular expression `[\\w\\s-.]{1,255}`. This must be provided for all formats except `selfsignedcert`; self-signed certs may specify the alias in either this parameter or the JSON body.",
          "language": {
            "csharp": {
              "name": "AliasValue"
            }
          }
        },
        "certsInfo": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CertificateResponse",
          "description": "Chain of certificates under this alias."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "format": {
          "type": "string",
          "description": "Required. Format of the data. Valid values include: `selfsignedcert`, `keycertfile`, or `pkcs12`",
          "replaceOnChanges": true
        },
        "ignoreExpiryValidation": {
          "type": "boolean",
          "description": "Flag that specifies whether to ignore expiry validation. If set to `true`, no expiry validation will be performed."
        },
        "ignoreNewlineValidation": {
          "type": "boolean",
          "description": "Flag that specifies whether to ignore newline validation. If set to `true`, no error is thrown when the file contains a certificate chain with no newline between each certificate. Defaults to `false`."
        },
        "keystoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "password": {
          "type": "string",
          "description": "DEPRECATED: For improved security, specify the password in the request body instead of using the query parameter. To specify the password in the request body, set `Content-type: multipart/form-data` part with name `password`. Password for the private key file, if required."
        },
        "type": {
          "type": "string",
          "description": "Type of alias."
        }
      },
      "type": "object",
      "required": [
        "alias",
        "certsInfo",
        "environmentId",
        "format",
        "keystoreId",
        "organizationId",
        "type"
      ],
      "inputProperties": {
        "alias": {
          "type": "string",
          "description": "Alias for the key/certificate pair. Values must match the regular expression `[\\w\\s-.]{1,255}`. This must be provided for all formats except `selfsignedcert`; self-signed certs may specify the alias in either this parameter or the JSON body."
        },
        "contentType": {
          "type": "string",
          "description": "The HTTP Content-Type header value specifying the content type of the body."
        },
        "data": {
          "type": "string",
          "description": "The HTTP request/response body as raw binary."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "extensions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Application specific response metadata. Must be set in the first response for streaming APIs."
        },
        "file": {
          "$ref": "pulumi.json#/Asset",
          "description": "File to upload."
        },
        "format": {
          "type": "string",
          "description": "Required. Format of the data. Valid values include: `selfsignedcert`, `keycertfile`, or `pkcs12`",
          "replaceOnChanges": true
        },
        "ignoreExpiryValidation": {
          "type": "boolean",
          "description": "Flag that specifies whether to ignore expiry validation. If set to `true`, no expiry validation will be performed."
        },
        "ignoreNewlineValidation": {
          "type": "boolean",
          "description": "Flag that specifies whether to ignore newline validation. If set to `true`, no error is thrown when the file contains a certificate chain with no newline between each certificate. Defaults to `false`."
        },
        "keystoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "password": {
          "type": "string",
          "description": "DEPRECATED: For improved security, specify the password in the request body instead of using the query parameter. To specify the password in the request body, set `Content-type: multipart/form-data` part with name `password`. Password for the private key file, if required."
        }
      },
      "requiredInputs": [
        "environmentId",
        "format",
        "keystoreId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Api": {
      "description": "Creates an API proxy. The API proxy created will not be accessible at runtime until it is deployed to an environment. Create a new API proxy by setting the `name` query parameter to the name of the API proxy. Import an API proxy configuration bundle stored in zip format on your local machine to your organization by doing the following: * Set the `name` query parameter to the name of the API proxy. * Set the `action` query parameter to `import`. * Set the `Content-Type` header to `multipart/form-data`. * Pass as a file the name of API proxy configuration bundle stored in zip format on your local machine using the `file` form field. **Note**: To validate the API proxy configuration bundle only without importing it, set the `action` query parameter to `validate`. When importing an API proxy configuration bundle, if the API proxy does not exist, it will be created. If the API proxy exists, then a new revision is created. Invalid API proxy configurations are rejected, and a list of validation errors is returned to the client.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Action to perform when importing an API proxy configuration bundle. Set this parameter to one of the following values: * `import` to import the API proxy configuration bundle. * `validate` to validate the API proxy configuration bundle without importing it."
        },
        "apiProxyType": {
          "type": "string",
          "description": "The type of the API proxy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User labels applied to this API Proxy."
        },
        "latestRevisionId": {
          "type": "string",
          "description": "The id of the most recently created revision for this api proxy."
        },
        "metaData": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1EntityMetadataResponse",
          "description": "Metadata describing the API proxy."
        },
        "name": {
          "type": "string",
          "description": "Name of the API proxy. Restrict the characters used to: A-Za-z0-9._-"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readOnly": {
          "type": "boolean",
          "description": "Whether this proxy is read-only. A read-only proxy cannot have new revisions created through calls to CreateApiProxyRevision. A proxy is read-only if it was generated by an archive."
        },
        "revision": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of revisions defined for the API proxy."
        },
        "validate": {
          "type": "boolean",
          "description": "Ignored. All uploads are validated regardless of the value of this field. Maintained for compatibility with Apigee Edge API."
        }
      },
      "type": "object",
      "required": [
        "apiProxyType",
        "labels",
        "latestRevisionId",
        "metaData",
        "name",
        "organizationId",
        "readOnly",
        "revision"
      ],
      "inputProperties": {
        "action": {
          "type": "string",
          "description": "Action to perform when importing an API proxy configuration bundle. Set this parameter to one of the following values: * `import` to import the API proxy configuration bundle. * `validate` to validate the API proxy configuration bundle without importing it."
        },
        "contentType": {
          "type": "string",
          "description": "The HTTP Content-Type header value specifying the content type of the body."
        },
        "data": {
          "type": "string",
          "description": "The HTTP request/response body as raw binary."
        },
        "extensions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Application specific response metadata. Must be set in the first response for streaming APIs."
        },
        "file": {
          "$ref": "pulumi.json#/Asset",
          "description": "File to upload."
        },
        "name": {
          "type": "string",
          "description": "Name of the API proxy. Restrict the characters used to: A-Za-z0-9._-"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validate": {
          "type": "boolean",
          "description": "Ignored. All uploads are validated regardless of the value of this field. Maintained for compatibility with Apigee Edge API."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:apigee/v1:ApiProduct": {
      "description": "Creates an API product in an organization. You create API products after you have proxied backend services using API proxies. An API product is a collection of API resources combined with quota settings and metadata that you can use to deliver customized and productized API bundles to your developer community. This metadata can include: - Scope - Environments - API proxies - Extensible profile API products enable you repackage APIs on the fly, without having to do any additional coding or configuration. Apigee recommends that you start with a simple API product including only required elements. You then provision credentials to apps to enable them to start testing your APIs. After you have authentication and authorization working against a simple API product, you can iterate to create finer-grained API products, defining different sets of API resources for each API product. **WARNING:** - If you don't specify an API proxy in the request body, *any* app associated with the product can make calls to *any* API in your entire organization. - If you don't specify an environment in the request body, the product allows access to all environments. For more information, see What is an API product?",
      "properties": {
        "apiResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the `proxy.pathsuffix` variable. The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the `apiResources` element is defined to be `/forecastrss` and the base path defined for the API proxy is `/weather`, then only requests to `/weather/forecastrss` are permitted by the API product. You can select a specific path, or you can select all subpaths with the following wildcard: - `/**`: Indicates that all sub-URIs are included. - `/*` : Indicates that only URIs one level down are included. By default, / supports the same resources as /** as well as the base path defined by the API proxy. For example, if the base path of the API proxy is `/v1/weatherapikey`, then the API product supports requests to `/v1/weatherapikey` and to any sub-URIs, such as `/v1/weatherapikey/forecastrss`, `/v1/weatherapikey/region/CA`, and so on. For more information, see Managing API products."
        },
        "approvalType": {
          "type": "string",
          "description": "Flag that specifies how API keys are approved to access the APIs defined by the API product. If set to `manual`, the consumer key is generated and returned in \"pending\" state. In this case, the API keys won't work until they have been explicitly approved. If set to `auto`, the consumer key is generated and returned in \"approved\" state and can be used immediately. **Note:** Typically, `auto` is used to provide access to free or trial API products that provide limited quota or capabilities."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes. Use this property to specify the access level of the API product as either `public`, `private`, or `internal`. Only products marked `public` are available to developers in the Apigee developer portal. For example, you can set a product to `internal` while it is in development and then change access to `public` when it is ready to release on the portal. API products marked as `private` do not appear on the portal, but can be accessed by external developers."
        },
        "createdAt": {
          "type": "string",
          "description": "Response only. Creation time of this environment as milliseconds since epoch."
        },
        "description": {
          "type": "string",
          "description": "Description of the API product. Include key information about the API product that is not captured by other fields."
        },
        "displayName": {
          "type": "string",
          "description": "Name displayed in the UI or developer portal to developers registering for API access."
        },
        "environments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected. By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment. This setting is used, for example, to prevent resources associated with API proxies in `prod` from being accessed by API proxies deployed in `test`."
        },
        "graphqlOperationGroup": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GraphQLOperationGroupResponse",
          "description": "Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type."
        },
        "grpcOperationGroup": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GrpcOperationGroupResponse",
          "description": "Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Response only. Modified time of this environment as milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Internal name of the API product. Characters you can use in the name are restricted to: `A-Z0-9._\\-$ %`. **Note:** The internal name cannot be edited when updating the API product."
        },
        "operationGroup": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1OperationGroupResponse",
          "description": "Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the `quota` setting). **Note:** The `api_resources` setting cannot be specified for both the API product and operation group; otherwise the call will fail."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies. Apigee rejects requests to API proxies that are not listed. **Note:** The API proxy names must already exist in the specified environment as they will be validated upon creation."
        },
        "quota": {
          "type": "string",
          "description": "Number of request messages permitted per app by this API product for the specified `quotaInterval` and `quotaTimeUnit`. For example, a `quota` of 50, for a `quotaInterval` of 12 and a `quotaTimeUnit` of hours means 50 requests are allowed every 12 hours."
        },
        "quotaCounterScope": {
          "type": "string",
          "description": "Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself."
        },
        "quotaInterval": {
          "type": "string",
          "description": "Time interval over which the number of request messages is calculated."
        },
        "quotaTimeUnit": {
          "type": "string",
          "description": "Time unit defined for the `quotaInterval`. Valid values include `minute`, `hour`, `day`, or `month`."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product."
        }
      },
      "type": "object",
      "required": [
        "apiResources",
        "approvalType",
        "attributes",
        "createdAt",
        "description",
        "displayName",
        "environments",
        "graphqlOperationGroup",
        "grpcOperationGroup",
        "lastModifiedAt",
        "name",
        "operationGroup",
        "organizationId",
        "proxies",
        "quota",
        "quotaCounterScope",
        "quotaInterval",
        "quotaTimeUnit",
        "scopes"
      ],
      "inputProperties": {
        "apiResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the `proxy.pathsuffix` variable. The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the `apiResources` element is defined to be `/forecastrss` and the base path defined for the API proxy is `/weather`, then only requests to `/weather/forecastrss` are permitted by the API product. You can select a specific path, or you can select all subpaths with the following wildcard: - `/**`: Indicates that all sub-URIs are included. - `/*` : Indicates that only URIs one level down are included. By default, / supports the same resources as /** as well as the base path defined by the API proxy. For example, if the base path of the API proxy is `/v1/weatherapikey`, then the API product supports requests to `/v1/weatherapikey` and to any sub-URIs, such as `/v1/weatherapikey/forecastrss`, `/v1/weatherapikey/region/CA`, and so on. For more information, see Managing API products."
        },
        "approvalType": {
          "type": "string",
          "description": "Flag that specifies how API keys are approved to access the APIs defined by the API product. If set to `manual`, the consumer key is generated and returned in \"pending\" state. In this case, the API keys won't work until they have been explicitly approved. If set to `auto`, the consumer key is generated and returned in \"approved\" state and can be used immediately. **Note:** Typically, `auto` is used to provide access to free or trial API products that provide limited quota or capabilities."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes. Use this property to specify the access level of the API product as either `public`, `private`, or `internal`. Only products marked `public` are available to developers in the Apigee developer portal. For example, you can set a product to `internal` while it is in development and then change access to `public` when it is ready to release on the portal. API products marked as `private` do not appear on the portal, but can be accessed by external developers."
        },
        "createdAt": {
          "type": "string",
          "description": "Response only. Creation time of this environment as milliseconds since epoch."
        },
        "description": {
          "type": "string",
          "description": "Description of the API product. Include key information about the API product that is not captured by other fields."
        },
        "displayName": {
          "type": "string",
          "description": "Name displayed in the UI or developer portal to developers registering for API access."
        },
        "environments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected. By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment. This setting is used, for example, to prevent resources associated with API proxies in `prod` from being accessed by API proxies deployed in `test`."
        },
        "graphqlOperationGroup": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GraphQLOperationGroup",
          "description": "Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type."
        },
        "grpcOperationGroup": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GrpcOperationGroup",
          "description": "Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Response only. Modified time of this environment as milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Internal name of the API product. Characters you can use in the name are restricted to: `A-Z0-9._\\-$ %`. **Note:** The internal name cannot be edited when updating the API product."
        },
        "operationGroup": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1OperationGroup",
          "description": "Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the `quota` setting). **Note:** The `api_resources` setting cannot be specified for both the API product and operation group; otherwise the call will fail."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies. Apigee rejects requests to API proxies that are not listed. **Note:** The API proxy names must already exist in the specified environment as they will be validated upon creation."
        },
        "quota": {
          "type": "string",
          "description": "Number of request messages permitted per app by this API product for the specified `quotaInterval` and `quotaTimeUnit`. For example, a `quota` of 50, for a `quotaInterval` of 12 and a `quotaTimeUnit` of hours means 50 requests are allowed every 12 hours."
        },
        "quotaCounterScope": {
          "$ref": "#/types/google-native:apigee%2Fv1:ApiProductQuotaCounterScope",
          "description": "Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself."
        },
        "quotaInterval": {
          "type": "string",
          "description": "Time interval over which the number of request messages is calculated."
        },
        "quotaTimeUnit": {
          "type": "string",
          "description": "Time unit defined for the `quotaInterval`. Valid values include `minute`, `hour`, `day`, or `month`."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:apigee/v1:AppGroupApp": {
      "description": "Creates an app and associates it with an AppGroup. This API associates the AppGroup app with the specified API product and auto-generates an API key for the app to use in calls to API proxies inside that API product. The `name` is the unique ID of the app that you can use in API calls.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiProducts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of API products associated with the AppGroup app."
        },
        "appGroup": {
          "type": "string",
          "description": "Immutable. Name of the parent AppGroup whose resource name format is of syntax (organizations/*/appgroups/*)."
        },
        "appId": {
          "type": "string",
          "description": "Immutable. ID of the AppGroup app."
        },
        "appgroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "List of attributes for the AppGroup app."
        },
        "callbackUrl": {
          "type": "string",
          "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to AppGroup apps."
        },
        "createdAt": {
          "type": "string",
          "description": "Time the AppGroup app was created in milliseconds since epoch."
        },
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CredentialResponse"
          },
          "description": "Set of credentials for the AppGroup app consisting of the consumer key/secret pairs associated with the API products."
        },
        "keyExpiresIn": {
          "type": "string",
          "description": "Immutable. Expiration time, in seconds, for the consumer key that is generated for the AppGroup app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time the AppGroup app was modified in milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the AppGroup app whose resource name format is of syntax (organizations/*/appgroups/*/apps/*)."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes to apply to the AppGroup app. The specified scopes must already exist for the API product that you associate with the AppGroup app."
        },
        "status": {
          "type": "string",
          "description": "Status of the App. Valid values include `approved` or `revoked`."
        }
      },
      "type": "object",
      "required": [
        "apiProducts",
        "appGroup",
        "appId",
        "appgroupId",
        "attributes",
        "callbackUrl",
        "createdAt",
        "credentials",
        "keyExpiresIn",
        "lastModifiedAt",
        "name",
        "organizationId",
        "scopes",
        "status"
      ],
      "inputProperties": {
        "apiProducts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of API products associated with the AppGroup app."
        },
        "appGroup": {
          "type": "string",
          "description": "Immutable. Name of the parent AppGroup whose resource name format is of syntax (organizations/*/appgroups/*)."
        },
        "appId": {
          "type": "string",
          "description": "Immutable. ID of the AppGroup app."
        },
        "appgroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "List of attributes for the AppGroup app."
        },
        "callbackUrl": {
          "type": "string",
          "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to AppGroup apps."
        },
        "keyExpiresIn": {
          "type": "string",
          "description": "Immutable. Expiration time, in seconds, for the consumer key that is generated for the AppGroup app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the AppGroup app whose resource name format is of syntax (organizations/*/appgroups/*/apps/*)."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes to apply to the AppGroup app. The specified scopes must already exist for the API product that you associate with the AppGroup app."
        },
        "status": {
          "type": "string",
          "description": "Status of the App. Valid values include `approved` or `revoked`."
        }
      },
      "requiredInputs": [
        "appgroupId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Appgroup": {
      "description": "Creates an AppGroup. Once created, user can register apps under the AppGroup to obtain secret key and password. At creation time, the AppGroup's state is set as `active`.",
      "properties": {
        "appGroupId": {
          "type": "string",
          "description": "Internal identifier that cannot be edited"
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "A list of attributes"
        },
        "channelId": {
          "type": "string",
          "description": "channel identifier identifies the owner maintaing this grouping."
        },
        "channelUri": {
          "type": "string",
          "description": "A reference to the associated storefront/marketplace."
        },
        "createdAt": {
          "type": "string",
          "description": "Created time as milliseconds since epoch."
        },
        "displayName": {
          "type": "string",
          "description": "app group name displayed in the UI"
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Modified time as milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the AppGroup. Characters you can use in the name are restricted to: A-Z0-9._\\-$ %."
        },
        "organization": {
          "type": "string",
          "description": "Immutable. the org the app group is created"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "Valid values are `active` or `inactive`. Note that the status of the AppGroup should be updated via UpdateAppGroupRequest by setting the action as `active` or `inactive`."
        }
      },
      "type": "object",
      "required": [
        "appGroupId",
        "attributes",
        "channelId",
        "channelUri",
        "createdAt",
        "displayName",
        "lastModifiedAt",
        "name",
        "organization",
        "organizationId",
        "status"
      ],
      "inputProperties": {
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "A list of attributes"
        },
        "channelId": {
          "type": "string",
          "description": "channel identifier identifies the owner maintaing this grouping."
        },
        "channelUri": {
          "type": "string",
          "description": "A reference to the associated storefront/marketplace."
        },
        "displayName": {
          "type": "string",
          "description": "app group name displayed in the UI"
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the AppGroup. Characters you can use in the name are restricted to: A-Z0-9._\\-$ %."
        },
        "organization": {
          "type": "string",
          "description": "Immutable. the org the app group is created"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:apigee/v1:ArchiveDeployment": {
      "description": "Creates a new ArchiveDeployment.",
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "The time at which the Archive Deployment was created in milliseconds since the epoch."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "gcsUri": {
          "type": "string",
          "description": "Input only. The Google Cloud Storage signed URL returned from GenerateUploadUrl and used to upload the Archive zip file."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize ArchiveDeployments. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "name": {
          "type": "string",
          "description": "Name of the Archive Deployment in the following format: `organizations/{org}/environments/{env}/archiveDeployments/{id}`."
        },
        "operation": {
          "type": "string",
          "description": "A reference to the LRO that created this Archive Deployment in the following format: `organizations/{org}/operations/{id}`"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updatedAt": {
          "type": "string",
          "description": "The time at which the Archive Deployment was updated in milliseconds since the epoch."
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "environmentId",
        "gcsUri",
        "labels",
        "name",
        "operation",
        "organizationId",
        "updatedAt"
      ],
      "inputProperties": {
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "gcsUri": {
          "type": "string",
          "description": "Input only. The Google Cloud Storage signed URL returned from GenerateUploadUrl and used to upload the Archive zip file."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize ArchiveDeployments. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "name": {
          "type": "string",
          "description": "Name of the Archive Deployment in the following format: `organizations/{org}/environments/{env}/archiveDeployments/{id}`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "environmentId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:CanaryEvaluation": {
      "description": "Creates a new canary evaluation for an organization.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "control": {
          "type": "string",
          "description": "The stable version that is serving requests."
        },
        "createTime": {
          "type": "string",
          "description": "Create time of the canary evaluation."
        },
        "endTime": {
          "type": "string",
          "description": "End time for the evaluation's analysis."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metricLabels": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CanaryEvaluationMetricLabelsResponse",
          "description": "Labels used to filter the metrics used for a canary evaluation."
        },
        "name": {
          "type": "string",
          "description": "Name of the canary evalution."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Start time for the canary evaluation's analysis."
        },
        "state": {
          "type": "string",
          "description": "The current state of the canary evaluation."
        },
        "treatment": {
          "type": "string",
          "description": "The newer version that is serving requests."
        },
        "verdict": {
          "type": "string",
          "description": "The resulting verdict of the canary evaluations: NONE, PASS, or FAIL."
        }
      },
      "type": "object",
      "required": [
        "control",
        "createTime",
        "endTime",
        "instanceId",
        "metricLabels",
        "name",
        "organizationId",
        "startTime",
        "state",
        "treatment",
        "verdict"
      ],
      "inputProperties": {
        "control": {
          "type": "string",
          "description": "The stable version that is serving requests."
        },
        "endTime": {
          "type": "string",
          "description": "End time for the evaluation's analysis."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metricLabels": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CanaryEvaluationMetricLabels",
          "description": "Labels used to filter the metrics used for a canary evaluation."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Start time for the canary evaluation's analysis."
        },
        "treatment": {
          "type": "string",
          "description": "The newer version that is serving requests."
        }
      },
      "requiredInputs": [
        "control",
        "endTime",
        "instanceId",
        "metricLabels",
        "organizationId",
        "startTime",
        "treatment"
      ]
    },
    "google-native:apigee/v1:DataCollector": {
      "description": "Creates a new data collector.",
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "The time at which the data collector was created in milliseconds since the epoch."
        },
        "dataCollectorId": {
          "type": "string",
          "description": "ID of the data collector. Overrides any ID in the data collector resource. Must be a string beginning with `dc_` that contains only letters, numbers, and underscores."
        },
        "description": {
          "type": "string",
          "description": "A description of the data collector."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "The time at which the Data Collector was last updated in milliseconds since the epoch."
        },
        "name": {
          "type": "string",
          "description": "ID of the data collector. Must begin with `dc_`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of data this data collector will collect."
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "description",
        "lastModifiedAt",
        "name",
        "organizationId",
        "type"
      ],
      "inputProperties": {
        "dataCollectorId": {
          "type": "string",
          "description": "ID of the data collector. Overrides any ID in the data collector resource. Must be a string beginning with `dc_` that contains only letters, numbers, and underscores."
        },
        "description": {
          "type": "string",
          "description": "A description of the data collector."
        },
        "name": {
          "type": "string",
          "description": "ID of the data collector. Must begin with `dc_`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:apigee%2Fv1:DataCollectorType",
          "description": "Immutable. The type of data this data collector will collect."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Datastore": {
      "description": "Create a Datastore for an org\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Datastore create time, in milliseconds since the epoch of 1970-01-01T00:00:00Z"
        },
        "datastoreConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1DatastoreConfigResponse",
          "description": "Datastore Configurations."
        },
        "displayName": {
          "type": "string",
          "description": "Display name in UI"
        },
        "lastUpdateTime": {
          "type": "string",
          "description": "Datastore last update time, in milliseconds since the epoch of 1970-01-01T00:00:00Z"
        },
        "org": {
          "type": "string",
          "description": "Organization that the datastore belongs to"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "self": {
          "type": "string",
          "description": "Resource link of Datastore. Example: `/organizations/{org}/analytics/datastores/{uuid}`"
        },
        "targetType": {
          "type": "string",
          "description": "Destination storage type. Supported types `gcs` or `bigquery`."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "datastoreConfig",
        "displayName",
        "lastUpdateTime",
        "org",
        "organizationId",
        "self",
        "targetType"
      ],
      "inputProperties": {
        "datastoreConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1DatastoreConfig",
          "description": "Datastore Configurations."
        },
        "displayName": {
          "type": "string",
          "description": "Display name in UI"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "targetType": {
          "type": "string",
          "description": "Destination storage type. Supported types `gcs` or `bigquery`."
        }
      },
      "requiredInputs": [
        "displayName",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:DebugSession": {
      "description": "Creates a debug session for a deployed API Proxy revision.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "count": {
          "type": "integer",
          "description": "Optional. The number of request to be traced. Min = 1, Max = 15, Default = 10."
        },
        "createTime": {
          "type": "string",
          "description": "The first transaction creation timestamp, recorded by UAP."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "filter": {
          "type": "string",
          "description": "Optional. A conditional statement which is evaluated against the request message to determine if it should be traced. Syntax matches that of on API Proxy bundle flow Condition."
        },
        "name": {
          "type": "string",
          "description": "A unique ID for this DebugSession."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeout": {
          "type": "string",
          "description": "Optional. The time in seconds after which this DebugSession should end. A timeout specified in DebugSession will overwrite this value."
        },
        "tracesize": {
          "type": "integer",
          "description": "Optional. The maximum number of bytes captured from the response payload. Min = 0, Max = 5120, Default = 5120."
        },
        "validity": {
          "type": "integer",
          "description": "Optional. The length of time, in seconds, that this debug session is valid, starting from when it's received in the control plane. Min = 1, Max = 15, Default = 10."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "count",
        "createTime",
        "environmentId",
        "filter",
        "name",
        "organizationId",
        "revisionId",
        "timeout",
        "tracesize",
        "validity"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "count": {
          "type": "integer",
          "description": "Optional. The number of request to be traced. Min = 1, Max = 15, Default = 10."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "filter": {
          "type": "string",
          "description": "Optional. A conditional statement which is evaluated against the request message to determine if it should be traced. Syntax matches that of on API Proxy bundle flow Condition."
        },
        "name": {
          "type": "string",
          "description": "A unique ID for this DebugSession."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeout": {
          "type": "string",
          "description": "Optional. The time in seconds after which this DebugSession should end. This value will override the value in query param, if both are provided."
        },
        "tracesize": {
          "type": "integer",
          "description": "Optional. The maximum number of bytes captured from the response payload. Min = 0, Max = 5120, Default = 5120."
        },
        "validity": {
          "type": "integer",
          "description": "Optional. The length of time, in seconds, that this debug session is valid, starting from when it's received in the control plane. Min = 1, Max = 15, Default = 10."
        }
      },
      "requiredInputs": [
        "apiId",
        "environmentId",
        "organizationId",
        "revisionId"
      ]
    },
    "google-native:apigee/v1:Developer": {
      "description": "Creates a developer. Once created, the developer can register an app and obtain an API key. At creation time, a developer is set as `active`. To change the developer status, use the SetDeveloperStatus API.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accessType": {
          "type": "string",
          "description": "Access type."
        },
        "appFamily": {
          "type": "string",
          "description": "Developer app family."
        },
        "apps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of apps associated with the developer."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "Optional. Developer attributes (name/value pairs). The custom attribute limit is 18."
        },
        "companies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of companies associated with the developer."
        },
        "createdAt": {
          "type": "string",
          "description": "Time at which the developer was created in milliseconds since epoch."
        },
        "developerId": {
          "type": "string",
          "description": "ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time."
        },
        "email": {
          "type": "string",
          "description": "Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only."
        },
        "firstName": {
          "type": "string",
          "description": "First name of the developer."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time at which the developer was last modified in milliseconds since epoch."
        },
        "lastName": {
          "type": "string",
          "description": "Last name of the developer."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationName": {
          "type": "string",
          "description": "Name of the Apigee organization in which the developer resides."
        },
        "status": {
          "type": "string",
          "description": "Status of the developer. Valid values are `active` and `inactive`."
        },
        "userName": {
          "type": "string",
          "description": "User name of the developer. Not used by Apigee hybrid."
        }
      },
      "type": "object",
      "required": [
        "accessType",
        "appFamily",
        "apps",
        "attributes",
        "companies",
        "createdAt",
        "developerId",
        "email",
        "firstName",
        "lastModifiedAt",
        "lastName",
        "organizationId",
        "organizationName",
        "status",
        "userName"
      ],
      "inputProperties": {
        "accessType": {
          "type": "string",
          "description": "Access type."
        },
        "appFamily": {
          "type": "string",
          "description": "Developer app family."
        },
        "apps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of apps associated with the developer."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "Optional. Developer attributes (name/value pairs). The custom attribute limit is 18."
        },
        "companies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of companies associated with the developer."
        },
        "developerId": {
          "type": "string",
          "description": "ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time."
        },
        "email": {
          "type": "string",
          "description": "Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only."
        },
        "firstName": {
          "type": "string",
          "description": "First name of the developer."
        },
        "lastName": {
          "type": "string",
          "description": "Last name of the developer."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userName": {
          "type": "string",
          "description": "User name of the developer. Not used by Apigee hybrid."
        }
      },
      "requiredInputs": [
        "email",
        "firstName",
        "lastName",
        "organizationId",
        "userName"
      ]
    },
    "google-native:apigee/v1:DeveloperApp": {
      "description": "Creates an app associated with a developer. This API associates the developer app with the specified API product and auto-generates an API key for the app to use in calls to API proxies inside that API product. The `name` is the unique ID of the app that you can use in API calls. The `DisplayName` (set as an attribute) appears in the UI. If you don't set the `DisplayName` attribute, the `name` appears in the UI.",
      "properties": {
        "apiProducts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of API products associated with the developer app."
        },
        "appFamily": {
          "type": "string",
          "description": "Developer app family."
        },
        "appId": {
          "type": "string",
          "description": "ID of the developer app."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
          },
          "description": "List of attributes for the developer app."
        },
        "callbackUrl": {
          "type": "string",
          "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps."
        },
        "createdAt": {
          "type": "string",
          "description": "Time the developer app was created in milliseconds since epoch."
        },
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CredentialResponse"
          },
          "description": "Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products."
        },
        "developerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "keyExpiresIn": {
          "type": "string",
          "description": "Expiration time, in milliseconds, for the consumer key that is generated for the developer app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time the developer app was modified in milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Name of the developer app."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app."
        },
        "status": {
          "type": "string",
          "description": "Status of the credential. Valid values include `approved` or `revoked`."
        }
      },
      "type": "object",
      "required": [
        "apiProducts",
        "appFamily",
        "appId",
        "attributes",
        "callbackUrl",
        "createdAt",
        "credentials",
        "developerId",
        "keyExpiresIn",
        "lastModifiedAt",
        "name",
        "organizationId",
        "scopes",
        "status"
      ],
      "inputProperties": {
        "apiProducts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of API products associated with the developer app."
        },
        "appFamily": {
          "type": "string",
          "description": "Developer app family."
        },
        "appId": {
          "type": "string",
          "description": "ID of the developer app."
        },
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Attribute"
          },
          "description": "List of attributes for the developer app."
        },
        "callbackUrl": {
          "type": "string",
          "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps."
        },
        "developerId": {
          "type": "string",
          "description": "ID of the developer."
        },
        "keyExpiresIn": {
          "type": "string",
          "description": "Expiration time, in milliseconds, for the consumer key that is generated for the developer app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set."
        },
        "name": {
          "type": "string",
          "description": "Name of the developer app."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app."
        },
        "status": {
          "type": "string",
          "description": "Status of the credential. Valid values include `approved` or `revoked`."
        }
      },
      "requiredInputs": [
        "developerId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:EndpointAttachment": {
      "description": "Creates an endpoint attachment. **Note:** Not supported for Apigee hybrid.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "connectionState": {
          "type": "string",
          "description": "State of the endpoint attachment connection to the service attachment."
        },
        "endpointAttachmentId": {
          "type": "string",
          "description": "ID to use for the endpoint attachment. ID must start with a lowercase letter followed by up to 31 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. The minimum length is 2."
        },
        "host": {
          "type": "string",
          "description": "Host that can be used in either the HTTP target endpoint directly or as the host in target server."
        },
        "location": {
          "type": "string",
          "description": "Location of the endpoint attachment."
        },
        "name": {
          "type": "string",
          "description": "Name of the endpoint attachment. Use the following structure in your request: `organizations/{org}/endpointAttachments/{endpoint_attachment}`"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAttachment": {
          "type": "string",
          "description": "Format: projects/*/regions/*/serviceAttachments/*"
        },
        "state": {
          "type": "string",
          "description": "State of the endpoint attachment. Values other than `ACTIVE` mean the resource is not ready to use."
        }
      },
      "type": "object",
      "required": [
        "connectionState",
        "host",
        "location",
        "name",
        "organizationId",
        "serviceAttachment",
        "state"
      ],
      "inputProperties": {
        "endpointAttachmentId": {
          "type": "string",
          "description": "ID to use for the endpoint attachment. ID must start with a lowercase letter followed by up to 31 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. The minimum length is 2."
        },
        "location": {
          "type": "string",
          "description": "Location of the endpoint attachment."
        },
        "name": {
          "type": "string",
          "description": "Name of the endpoint attachment. Use the following structure in your request: `organizations/{org}/endpointAttachments/{endpoint_attachment}`"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAttachment": {
          "type": "string",
          "description": "Format: projects/*/regions/*/serviceAttachments/*"
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Entry": {
      "description": "Creates key value entries in a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "keyvaluemapId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource URI that can be used to identify the scope of the key value map entries."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "value": {
          "type": "string",
          "description": "Data or payload that is being retrieved and associated with the unique key."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "keyvaluemapId",
        "name",
        "organizationId",
        "value"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "keyvaluemapId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource URI that can be used to identify the scope of the key value map entries."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "value": {
          "type": "string",
          "description": "Data or payload that is being retrieved and associated with the unique key."
        }
      },
      "requiredInputs": [
        "apiId",
        "keyvaluemapId",
        "organizationId",
        "value"
      ]
    },
    "google-native:apigee/v1:Envgroup": {
      "description": "Creates a new environment group.",
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "The time at which the environment group was created as milliseconds since epoch."
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Host names for this environment group."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "The time at which the environment group was last updated as milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "ID of the environment group. Overrides any ID in the environment_group resource."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the environment group. Values other than ACTIVE means the resource is not ready to use."
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "hostnames",
        "lastModifiedAt",
        "name",
        "organizationId",
        "state"
      ],
      "inputProperties": {
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Host names for this environment group."
        },
        "name": {
          "type": "string",
          "description": "ID of the environment group."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "hostnames",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:EnvgroupAttachment": {
      "description": "Creates a new attachment of an environment to an environment group.",
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "The time at which the environment group attachment was created as milliseconds since epoch."
        },
        "envgroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "environment": {
          "type": "string",
          "description": "ID of the attached environment."
        },
        "environmentGroupId": {
          "type": "string",
          "description": "ID of the environment group."
        },
        "name": {
          "type": "string",
          "description": "ID of the environment group attachment."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "envgroupId",
        "environment",
        "environmentGroupId",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "envgroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "environment": {
          "type": "string",
          "description": "ID of the attached environment."
        },
        "name": {
          "type": "string",
          "description": "ID of the environment group attachment."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "envgroupId",
        "environment",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Environment": {
      "description": "Creates an environment in an organization.",
      "properties": {
        "apiProxyType": {
          "type": "string",
          "description": "Optional. API Proxy type supported by the environment. The type can be set when creating the Environment and cannot be changed."
        },
        "createdAt": {
          "type": "string",
          "description": "Creation time of this environment as milliseconds since epoch."
        },
        "deploymentType": {
          "type": "string",
          "description": "Optional. Deployment type supported by the environment. The deployment type can be set when creating the environment and cannot be changed. When you enable archive deployment, you will be **prevented from performing** a [subset of actions](/apigee/docs/api-platform/local-development/overview#prevented-actions) within the environment, including: * Managing the deployment of API proxy or shared flow revisions * Creating, updating, or deleting resource files * Creating, updating, or deleting target servers"
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the environment."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name for this environment."
        },
        "forwardProxyUri": {
          "type": "string",
          "description": "Optional. Url of the forward proxy to be applied to the runtime instances in this environment. Must be in the format of {scheme}://{hostname}:{port}. Note that scheme must be one of \"http\" or \"https\", and port must be supplied."
        },
        "hasAttachedFlowHooks": {
          "type": "boolean"
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Last modification time of this environment as milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the environment."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1NodeConfigResponse",
          "description": "Optional. NodeConfig of the environment."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1PropertiesResponse",
          "description": "Optional. Key-value pairs that may be used for customizing the environment."
        },
        "state": {
          "type": "string",
          "description": "State of the environment. Values other than ACTIVE means the resource is not ready to use."
        },
        "type": {
          "type": "string",
          "description": "Optional. EnvironmentType selected for the environment."
        }
      },
      "type": "object",
      "required": [
        "apiProxyType",
        "createdAt",
        "deploymentType",
        "description",
        "displayName",
        "forwardProxyUri",
        "hasAttachedFlowHooks",
        "lastModifiedAt",
        "name",
        "nodeConfig",
        "organizationId",
        "properties",
        "state",
        "type"
      ],
      "inputProperties": {
        "apiProxyType": {
          "$ref": "#/types/google-native:apigee%2Fv1:EnvironmentApiProxyType",
          "description": "Optional. API Proxy type supported by the environment. The type can be set when creating the Environment and cannot be changed."
        },
        "deploymentType": {
          "$ref": "#/types/google-native:apigee%2Fv1:EnvironmentDeploymentType",
          "description": "Optional. Deployment type supported by the environment. The deployment type can be set when creating the environment and cannot be changed. When you enable archive deployment, you will be **prevented from performing** a [subset of actions](/apigee/docs/api-platform/local-development/overview#prevented-actions) within the environment, including: * Managing the deployment of API proxy or shared flow revisions * Creating, updating, or deleting resource files * Creating, updating, or deleting target servers"
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the environment."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name for this environment."
        },
        "forwardProxyUri": {
          "type": "string",
          "description": "Optional. Url of the forward proxy to be applied to the runtime instances in this environment. Must be in the format of {scheme}://{hostname}:{port}. Note that scheme must be one of \"http\" or \"https\", and port must be supplied."
        },
        "hasAttachedFlowHooks": {
          "type": "boolean"
        },
        "name": {
          "type": "string",
          "description": "Name of the environment. Values must match the regular expression `^[.\\\\p{Alnum}-_]{1,255}$`"
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1NodeConfig",
          "description": "Optional. NodeConfig of the environment."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Properties",
          "description": "Optional. Key-value pairs that may be used for customizing the environment."
        },
        "type": {
          "$ref": "#/types/google-native:apigee%2Fv1:EnvironmentType",
          "description": "Optional. EnvironmentType selected for the environment."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:apigee/v1:EnvironmentEntry": {
      "description": "Creates key value entries in a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
      "properties": {
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "keyvaluemapId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource URI that can be used to identify the scope of the key value map entries."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "value": {
          "type": "string",
          "description": "Data or payload that is being retrieved and associated with the unique key."
        }
      },
      "type": "object",
      "required": [
        "environmentId",
        "keyvaluemapId",
        "name",
        "organizationId",
        "value"
      ],
      "inputProperties": {
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "keyvaluemapId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource URI that can be used to identify the scope of the key value map entries."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "value": {
          "type": "string",
          "description": "Data or payload that is being retrieved and associated with the unique key."
        }
      },
      "requiredInputs": [
        "environmentId",
        "keyvaluemapId",
        "organizationId",
        "value"
      ]
    },
    "google-native:apigee/v1:Export": {
      "description": "Submit a data export job to be processed in the background. If the request is successful, the API returns a 201 status, a URI that can be used to retrieve the status of the export job, and the `state` value of \"enqueued\".\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "created": {
          "type": "string",
          "description": "Time the export job was created."
        },
        "datastoreName": {
          "type": "string",
          "description": "Name of the datastore that is the destination of the export job [datastore]"
        },
        "description": {
          "type": "string",
          "description": "Description of the export job."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "error": {
          "type": "string",
          "description": "Error is set when export fails"
        },
        "executionTime": {
          "type": "string",
          "description": "Execution time for this export job. If the job is still in progress, it will be set to the amount of time that has elapsed since`created`, in seconds. Else, it will set to (`updated` - `created`), in seconds."
        },
        "name": {
          "type": "string",
          "description": "Display name of the export job."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "self": {
          "type": "string",
          "description": "Self link of the export job. A URI that can be used to retrieve the status of an export job. Example: `/organizations/myorg/environments/myenv/analytics/exports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`"
        },
        "state": {
          "type": "string",
          "description": "Status of the export job. Valid values include `enqueued`, `running`, `completed`, and `failed`."
        },
        "updated": {
          "type": "string",
          "description": "Time the export job was last updated."
        }
      },
      "type": "object",
      "required": [
        "created",
        "datastoreName",
        "description",
        "environmentId",
        "error",
        "executionTime",
        "name",
        "organizationId",
        "self",
        "state",
        "updated"
      ],
      "inputProperties": {
        "csvDelimiter": {
          "type": "string",
          "description": "Optional. Delimiter used in the CSV file, if `outputFormat` is set to `csv`. Defaults to the `,` (comma) character. Supported delimiter characters include comma (`,`), pipe (`|`), and tab (`\\t`)."
        },
        "datastoreName": {
          "type": "string",
          "description": "Name of the preconfigured datastore."
        },
        "dateRange": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1DateRange",
          "description": "Date range of the data to export."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the export job."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Display name of the export job."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "outputFormat": {
          "type": "string",
          "description": "Optional. Output format of the export. Valid values include: `csv` or `json`. Defaults to `json`. Note: Configure the delimiter for CSV output using the `csvDelimiter` property."
        }
      },
      "requiredInputs": [
        "datastoreName",
        "dateRange",
        "environmentId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:HostQuery": {
      "description": "Submit a query at host level to be processed in the background. If the submission of the query succeeds, the API returns a 201 status and an ID that refer to the query. In addition to the HTTP status 201, the `state` of \"enqueued\" means that the request succeeded.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "created": {
          "type": "string",
          "description": "Creation time of the query."
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname is available only when query is executed at host level."
        },
        "error": {
          "type": "string",
          "description": "Error is set when query fails."
        },
        "executionTime": {
          "type": "string",
          "description": "ExecutionTime is available only after the query is completed."
        },
        "name": {
          "type": "string",
          "description": "Asynchronous Query Name."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryParams": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QueryMetadataResponse",
          "description": "Contains information like metrics, dimenstions etc of the AsyncQuery."
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Asynchronous Report ID."
        },
        "result": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AsyncQueryResultResponse",
          "description": "Result is available only after the query is completed."
        },
        "resultFileSize": {
          "type": "string",
          "description": "ResultFileSize is available only after the query is completed."
        },
        "resultRows": {
          "type": "string",
          "description": "ResultRows is available only after the query is completed."
        },
        "self": {
          "type": "string",
          "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostQueries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`"
        },
        "state": {
          "type": "string",
          "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"failed\"."
        },
        "updated": {
          "type": "string",
          "description": "Last updated timestamp for the query."
        }
      },
      "type": "object",
      "required": [
        "created",
        "envgroupHostname",
        "error",
        "executionTime",
        "name",
        "organizationId",
        "queryParams",
        "reportDefinitionId",
        "result",
        "resultFileSize",
        "resultRows",
        "self",
        "state",
        "updated"
      ],
      "inputProperties": {
        "csvDelimiter": {
          "type": "string",
          "description": "Delimiter used in the CSV file, if `outputFormat` is set to `csv`. Defaults to the `,` (comma) character. Supported delimiter characters include comma (`,`), pipe (`|`), and tab (`\\t`)."
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of dimensions. https://docs.apigee.com/api-platform/analytics/analytics-reference#dimensions"
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname needs to be specified if query intends to run at host level. This field is only allowed when query is submitted by CreateHostAsyncQuery where analytics data will be grouped by organization and hostname."
        },
        "filter": {
          "type": "string",
          "description": "Boolean expression that can be used to filter data. Filter expressions can be combined using AND/OR terms and should be fully parenthesized to avoid ambiguity. See Analytics metrics, dimensions, and filters reference https://docs.apigee.com/api-platform/analytics/analytics-reference for more information on the fields available to filter on. For more information on the tokens that you use to build filter expressions, see Filter expression syntax. https://docs.apigee.com/api-platform/analytics/asynch-reports-api#filter-expression-syntax"
        },
        "groupByTimeUnit": {
          "type": "string",
          "description": "Time unit used to group the result set. Valid values include: second, minute, hour, day, week, or month. If a query includes groupByTimeUnit, then the result is an aggregation based on the specified time unit and the resultant timestamp does not include milliseconds precision. If a query omits groupByTimeUnit, then the resultant timestamp includes milliseconds precision."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of rows that can be returned in the result."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QueryMetric"
          },
          "description": "A list of Metrics."
        },
        "name": {
          "type": "string",
          "description": "Asynchronous Query Name."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "outputFormat": {
          "type": "string",
          "description": "Valid values include: `csv` or `json`. Defaults to `json`. Note: Configure the delimiter for CSV output using the csvDelimiter property."
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Asynchronous Report ID."
        },
        "timeRange": {
          "$ref": "pulumi.json#/Any",
          "description": "Time range for the query. Can use the following predefined strings to specify the time range: `last60minutes` `last24hours` `last7days` Or, specify the timeRange as a structure describing start and end timestamps in the ISO format: yyyy-mm-ddThh:mm:ssZ. Example: \"timeRange\": { \"start\": \"2018-07-29T00:13:00Z\", \"end\": \"2018-08-01T00:18:00Z\" }"
        }
      },
      "requiredInputs": [
        "organizationId",
        "timeRange"
      ]
    },
    "google-native:apigee/v1:HostSecurityReport": {
      "description": "Submit a query at host level to be processed in the background. If the submission of the query succeeds, the API returns a 201 status and an ID that refer to the query. In addition to the HTTP status 201, the `state` of \"enqueued\" means that the request succeeded.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "created": {
          "type": "string",
          "description": "Creation time of the query."
        },
        "displayName": {
          "type": "string",
          "description": "Display Name specified by the user."
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname is available only when query is executed at host level."
        },
        "error": {
          "type": "string",
          "description": "Error is set when query fails."
        },
        "executionTime": {
          "type": "string",
          "description": "ExecutionTime is available only after the query is completed."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryParams": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportMetadataResponse",
          "description": "Contains information like metrics, dimenstions etc of the Security Report."
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Report Definition ID."
        },
        "result": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportResultMetadataResponse",
          "description": "Result is available only after the query is completed."
        },
        "resultFileSize": {
          "type": "string",
          "description": "ResultFileSize is available only after the query is completed."
        },
        "resultRows": {
          "type": "string",
          "description": "ResultRows is available only after the query is completed."
        },
        "self": {
          "type": "string",
          "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/securityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostSecurityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`"
        },
        "state": {
          "type": "string",
          "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"expired\" and \"failed\"."
        },
        "updated": {
          "type": "string",
          "description": "Last updated timestamp for the query."
        }
      },
      "type": "object",
      "required": [
        "created",
        "displayName",
        "envgroupHostname",
        "error",
        "executionTime",
        "organizationId",
        "queryParams",
        "reportDefinitionId",
        "result",
        "resultFileSize",
        "resultRows",
        "self",
        "state",
        "updated"
      ],
      "inputProperties": {
        "csvDelimiter": {
          "type": "string",
          "description": "Delimiter used in the CSV file, if `outputFormat` is set to `csv`. Defaults to the `,` (comma) character. Supported delimiter characters include comma (`,`), pipe (`|`), and tab (`\\t`)."
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of dimensions. https://docs.apigee.com/api-platform/analytics/analytics-reference#dimensions"
        },
        "displayName": {
          "type": "string",
          "description": "Security Report display name which users can specify."
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname needs to be specified if query intends to run at host level. This field is only allowed when query is submitted by CreateHostSecurityReport where analytics data will be grouped by organization and hostname."
        },
        "filter": {
          "type": "string",
          "description": "Boolean expression that can be used to filter data. Filter expressions can be combined using AND/OR terms and should be fully parenthesized to avoid ambiguity. See Analytics metrics, dimensions, and filters reference https://docs.apigee.com/api-platform/analytics/analytics-reference for more information on the fields available to filter on. For more information on the tokens that you use to build filter expressions, see Filter expression syntax. https://docs.apigee.com/api-platform/analytics/asynch-reports-api#filter-expression-syntax"
        },
        "groupByTimeUnit": {
          "type": "string",
          "description": "Time unit used to group the result set. Valid values include: second, minute, hour, day, week, or month. If a query includes groupByTimeUnit, then the result is an aggregation based on the specified time unit and the resultant timestamp does not include milliseconds precision. If a query omits groupByTimeUnit, then the resultant timestamp includes milliseconds precision."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of rows that can be returned in the result."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportQueryMetric"
          },
          "description": "A list of Metrics."
        },
        "mimeType": {
          "type": "string",
          "description": "Valid values include: `csv` or `json`. Defaults to `json`. Note: Configure the delimiter for CSV output using the csvDelimiter property."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Report Definition ID."
        },
        "timeRange": {
          "$ref": "pulumi.json#/Any",
          "description": "Time range for the query. Can use the following predefined strings to specify the time range: `last60minutes` `last24hours` `last7days` Or, specify the timeRange as a structure describing start and end timestamps in the ISO format: yyyy-mm-ddThh:mm:ssZ. Example: \"timeRange\": { \"start\": \"2018-07-29T00:13:00Z\", \"end\": \"2018-08-01T00:18:00Z\" }"
        }
      },
      "requiredInputs": [
        "organizationId",
        "timeRange"
      ]
    },
    "google-native:apigee/v1:Instance": {
      "description": "Creates an Apigee runtime instance. The instance is accessible from the authorized network configured on the organization. **Note:** Not supported for Apigee hybrid.",
      "properties": {
        "consumerAcceptList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Customer accept list represents the list of projects (id/number) on customer side that can privately connect to the service attachment. It is an optional field which the customers can provide during the instance creation. By default, the customer project associated with the Apigee organization will be included to the list."
        },
        "createdAt": {
          "type": "string",
          "description": "Time the instance was created in milliseconds since epoch."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the instance."
        },
        "diskEncryptionKeyName": {
          "type": "string",
          "description": "Customer Managed Encryption Key (CMEK) used for disk and volume encryption. Required for Apigee paid subscriptions only. Use the following format: `projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)`"
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name for the instance."
        },
        "host": {
          "type": "string",
          "description": "Internal hostname or IP address of the Apigee endpoint used by clients to connect to the service."
        },
        "ipRange": {
          "type": "string",
          "description": "Optional. Comma-separated list of CIDR blocks of length 22 and/or 28 used to create the Apigee instance. Providing CIDR ranges is optional. You can provide just /22 or /28 or both (or neither). Ranges you provide should be freely available as part of a larger named range you have allocated to the Service Networking peering. If this parameter is not provided, Apigee automatically requests an available /22 and /28 CIDR block from Service Networking. Use the /22 CIDR block for configuring your firewall needs to allow traffic from Apigee. Input formats: `a.b.c.d/22` or `e.f.g.h/28` or `a.b.c.d/22,e.f.g.h/28`"
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time the instance was last modified in milliseconds since epoch."
        },
        "location": {
          "type": "string",
          "description": "Compute Engine location where the instance resides."
        },
        "name": {
          "type": "string",
          "description": "Resource ID of the instance. Values must match the regular expression `^a-z{0,30}[a-z\\d]$`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "peeringCidrRange": {
          "type": "string",
          "description": "Optional. Size of the CIDR block range that will be reserved by the instance. PAID organizations support `SLASH_16` to `SLASH_20` and defaults to `SLASH_16`. Evaluation organizations support only `SLASH_23`."
        },
        "port": {
          "type": "string",
          "description": "Port number of the exposed Apigee endpoint."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "Version of the runtime system running in the instance. The runtime system is the set of components that serve the API Proxy traffic in your Environments."
        },
        "serviceAttachment": {
          "type": "string",
          "description": "Resource name of the service attachment created for the instance in the format: `projects/*/regions/*/serviceAttachments/*` Apigee customers can privately forward traffic to this service attachment using the PSC endpoints."
        },
        "state": {
          "type": "string",
          "description": "State of the instance. Values other than `ACTIVE` means the resource is not ready to use."
        }
      },
      "type": "object",
      "required": [
        "consumerAcceptList",
        "createdAt",
        "description",
        "diskEncryptionKeyName",
        "displayName",
        "host",
        "ipRange",
        "lastModifiedAt",
        "location",
        "name",
        "organizationId",
        "peeringCidrRange",
        "port",
        "runtimeVersion",
        "serviceAttachment",
        "state"
      ],
      "inputProperties": {
        "consumerAcceptList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Customer accept list represents the list of projects (id/number) on customer side that can privately connect to the service attachment. It is an optional field which the customers can provide during the instance creation. By default, the customer project associated with the Apigee organization will be included to the list."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the instance."
        },
        "diskEncryptionKeyName": {
          "type": "string",
          "description": "Customer Managed Encryption Key (CMEK) used for disk and volume encryption. Required for Apigee paid subscriptions only. Use the following format: `projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)`"
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name for the instance."
        },
        "ipRange": {
          "type": "string",
          "description": "Optional. Comma-separated list of CIDR blocks of length 22 and/or 28 used to create the Apigee instance. Providing CIDR ranges is optional. You can provide just /22 or /28 or both (or neither). Ranges you provide should be freely available as part of a larger named range you have allocated to the Service Networking peering. If this parameter is not provided, Apigee automatically requests an available /22 and /28 CIDR block from Service Networking. Use the /22 CIDR block for configuring your firewall needs to allow traffic from Apigee. Input formats: `a.b.c.d/22` or `e.f.g.h/28` or `a.b.c.d/22,e.f.g.h/28`"
        },
        "location": {
          "type": "string",
          "description": "Compute Engine location where the instance resides."
        },
        "name": {
          "type": "string",
          "description": "Resource ID of the instance. Values must match the regular expression `^a-z{0,30}[a-z\\d]$`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "peeringCidrRange": {
          "$ref": "#/types/google-native:apigee%2Fv1:InstancePeeringCidrRange",
          "description": "Optional. Size of the CIDR block range that will be reserved by the instance. PAID organizations support `SLASH_16` to `SLASH_20` and defaults to `SLASH_16`. Evaluation organizations support only `SLASH_23`."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:apigee/v1:InstanceAttachment": {
      "description": "Creates a new attachment of an environment to an instance. **Note:** Not supported for Apigee hybrid.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "Time the attachment was created in milliseconds since epoch."
        },
        "environment": {
          "type": "string",
          "description": "ID of the attached environment."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "ID of the attachment."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "environment",
        "instanceId",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "environment": {
          "type": "string",
          "description": "ID of the attached environment."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instanceId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Keystore": {
      "description": "Creates a keystore or truststore. - Keystore: Contains certificates and their associated keys. - Truststore: Contains trusted certificates used to validate a server's certificate. These certificates are typically self-signed certificates or certificates that are not signed by a trusted CA.",
      "properties": {
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Aliases in this keystore."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the keystore. Overrides the value in Keystore."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "aliases",
        "environmentId",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource ID for this keystore. Values must match the regular expression `[\\w[:space:].-]{1,255}`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "environmentId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:NatAddress": {
      "description": "Creates a NAT address. The address is created in the RESERVED state and a static external IP address will be provisioned. At this time, the instance will not use this IP address for Internet egress traffic. The address can be activated for use once any required firewall IP whitelisting has been completed. **Note:** Not supported for Apigee hybrid.",
      "properties": {
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "ipAddress": {
          "type": "string",
          "description": "The static IPV4 address."
        },
        "name": {
          "type": "string",
          "description": "Resource ID of the NAT address."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the nat address."
        }
      },
      "type": "object",
      "required": [
        "instanceId",
        "ipAddress",
        "name",
        "organizationId",
        "state"
      ],
      "inputProperties": {
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource ID of the NAT address."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instanceId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Organization": {
      "description": "Creates an Apigee organization. See [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "addonsConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AddonsConfigResponse",
          "description": "Addon configurations of the Apigee organization."
        },
        "analyticsRegion": {
          "type": "string",
          "description": "DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).",
          "deprecationMessage": "Required. DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)."
        },
        "apiConsumerDataEncryptionKeyName": {
          "type": "string",
          "description": "Cloud KMS key name used for encrypting API consumer data. Required for US/EU regions when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION` or the region is not US/EU, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`"
        },
        "apiConsumerDataLocation": {
          "type": "string",
          "description": "This field is needed only for customers with control plane in US or EU. Apigee stores some control plane data only in single region. This field determines which single region Apigee should use. For example: \"us-west1\" when control plane is in US or \"europe-west2\" when control plane is in EU."
        },
        "apigeeProjectId": {
          "type": "string",
          "description": "Apigee Project ID associated with the organization. Use this project to allowlist Apigee in the Service Attachment when using private service connect with Apigee."
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Not used by Apigee."
        },
        "authorizedNetwork": {
          "type": "string",
          "description": "Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when [RuntimeType](#RuntimeType) is set to `CLOUD`. The value must be set before the creation of a runtime instance and can be updated only when there are no runtime instances. For example: `default`. Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork` **Note:** Not supported for Apigee hybrid."
        },
        "billingType": {
          "type": "string",
          "description": "Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing)."
        },
        "caCertificate": {
          "type": "string",
          "description": "Base64-encoded public certificate for the root CA of the Apigee organization. Valid only when [RuntimeType](#RuntimeType) is `CLOUD`."
        },
        "controlPlaneEncryptionKeyName": {
          "type": "string",
          "description": "Cloud KMS key name used for encrypting control plane data that is stored in a multi region. Required when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION`, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`"
        },
        "createdAt": {
          "type": "string",
          "description": "Time that the Apigee organization was created in milliseconds since epoch."
        },
        "customerName": {
          "type": "string",
          "description": "Not used by Apigee."
        },
        "description": {
          "type": "string",
          "description": "Description of the Apigee organization."
        },
        "disableVpcPeering": {
          "type": "boolean",
          "description": "Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Valid only when RuntimeType is set to CLOUD. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid."
        },
        "displayName": {
          "type": "string",
          "description": "Display name for the Apigee organization. Unused, but reserved for future use."
        },
        "environments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of environments in the Apigee organization."
        },
        "expiresAt": {
          "type": "string",
          "description": "Time that the Apigee organization is scheduled for deletion."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time that the Apigee organization was last modified in milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Name of the Apigee organization."
        },
        "parent": {
          "type": "string",
          "description": "Required. Name of the Google Cloud project in which to associate the Apigee organization. Pass the information as a query parameter using the following structure in your request: `projects/`",
          "replaceOnChanges": true
        },
        "portalDisabled": {
          "type": "boolean",
          "description": "Configuration for the Portals settings."
        },
        "project": {
          "type": "string",
          "description": "Project ID associated with the Apigee organization."
        },
        "properties": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1PropertiesResponse",
          "description": "Properties defined in the Apigee organization profile."
        },
        "runtimeDatabaseEncryptionKeyName": {
          "type": "string",
          "description": "Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances. Update is not allowed after the organization is created. Required when [RuntimeType](#RuntimeType) is `CLOUD`. If not specified when [RuntimeType](#RuntimeType) is `TRIAL`, a Google-Managed encryption key will be used. For example: \"projects/foo/locations/us/keyRings/bar/cryptoKeys/baz\". **Note:** Not supported for Apigee hybrid."
        },
        "runtimeType": {
          "type": "string",
          "description": "Runtime type of the Apigee organization based on the Apigee subscription purchased."
        },
        "state": {
          "type": "string",
          "description": "State of the organization. Values other than ACTIVE means the resource is not ready to use."
        },
        "subscriptionPlan": {
          "type": "string",
          "description": "Subscription plan that the customer has purchased. Output only."
        },
        "subscriptionType": {
          "type": "string",
          "description": "DEPRECATED: This will eventually be replaced by BillingType. Subscription type of the Apigee organization. Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased). See [Apigee pricing](https://cloud.google.com/apigee/pricing/).",
          "deprecationMessage": "Output only. DEPRECATED: This will eventually be replaced by BillingType. Subscription type of the Apigee organization. Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased). See [Apigee pricing](https://cloud.google.com/apigee/pricing/)."
        },
        "type": {
          "type": "string",
          "description": "Not used by Apigee."
        }
      },
      "type": "object",
      "required": [
        "addonsConfig",
        "analyticsRegion",
        "apiConsumerDataEncryptionKeyName",
        "apiConsumerDataLocation",
        "apigeeProjectId",
        "attributes",
        "authorizedNetwork",
        "billingType",
        "caCertificate",
        "controlPlaneEncryptionKeyName",
        "createdAt",
        "customerName",
        "description",
        "disableVpcPeering",
        "displayName",
        "environments",
        "expiresAt",
        "lastModifiedAt",
        "name",
        "parent",
        "portalDisabled",
        "project",
        "properties",
        "runtimeDatabaseEncryptionKeyName",
        "runtimeType",
        "state",
        "subscriptionPlan",
        "subscriptionType",
        "type"
      ],
      "inputProperties": {
        "addonsConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AddonsConfig",
          "description": "Addon configurations of the Apigee organization."
        },
        "analyticsRegion": {
          "type": "string",
          "description": "DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).",
          "deprecationMessage": "Required. DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)."
        },
        "apiConsumerDataEncryptionKeyName": {
          "type": "string",
          "description": "Cloud KMS key name used for encrypting API consumer data. Required for US/EU regions when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION` or the region is not US/EU, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`"
        },
        "apiConsumerDataLocation": {
          "type": "string",
          "description": "This field is needed only for customers with control plane in US or EU. Apigee stores some control plane data only in single region. This field determines which single region Apigee should use. For example: \"us-west1\" when control plane is in US or \"europe-west2\" when control plane is in EU."
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Not used by Apigee."
        },
        "authorizedNetwork": {
          "type": "string",
          "description": "Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when [RuntimeType](#RuntimeType) is set to `CLOUD`. The value must be set before the creation of a runtime instance and can be updated only when there are no runtime instances. For example: `default`. Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork` **Note:** Not supported for Apigee hybrid."
        },
        "billingType": {
          "$ref": "#/types/google-native:apigee%2Fv1:OrganizationBillingType",
          "description": "Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing)."
        },
        "controlPlaneEncryptionKeyName": {
          "type": "string",
          "description": "Cloud KMS key name used for encrypting control plane data that is stored in a multi region. Required when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION`, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`"
        },
        "customerName": {
          "type": "string",
          "description": "Not used by Apigee."
        },
        "description": {
          "type": "string",
          "description": "Description of the Apigee organization."
        },
        "disableVpcPeering": {
          "type": "boolean",
          "description": "Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Valid only when RuntimeType is set to CLOUD. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid."
        },
        "displayName": {
          "type": "string",
          "description": "Display name for the Apigee organization. Unused, but reserved for future use."
        },
        "parent": {
          "type": "string",
          "description": "Required. Name of the Google Cloud project in which to associate the Apigee organization. Pass the information as a query parameter using the following structure in your request: `projects/`",
          "replaceOnChanges": true
        },
        "portalDisabled": {
          "type": "boolean",
          "description": "Configuration for the Portals settings."
        },
        "properties": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1Properties",
          "description": "Properties defined in the Apigee organization profile."
        },
        "runtimeDatabaseEncryptionKeyName": {
          "type": "string",
          "description": "Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances. Update is not allowed after the organization is created. Required when [RuntimeType](#RuntimeType) is `CLOUD`. If not specified when [RuntimeType](#RuntimeType) is `TRIAL`, a Google-Managed encryption key will be used. For example: \"projects/foo/locations/us/keyRings/bar/cryptoKeys/baz\". **Note:** Not supported for Apigee hybrid."
        },
        "runtimeType": {
          "$ref": "#/types/google-native:apigee%2Fv1:OrganizationRuntimeType",
          "description": "Runtime type of the Apigee organization based on the Apigee subscription purchased."
        },
        "type": {
          "$ref": "#/types/google-native:apigee%2Fv1:OrganizationType",
          "description": "Not used by Apigee."
        }
      },
      "requiredInputs": [
        "analyticsRegion",
        "parent",
        "runtimeType"
      ]
    },
    "google-native:apigee/v1:OrganizationEnvironmentIamBinding": {
      "description": "Sets the IAM policy on an environment, if the policy already exists it will be replaced. For more information, see [Manage users, roles, and permissions using the API](https://cloud.google.com/apigee/docs/api-platform/system-administration/manage-users-roles). You must have the `apigee.environments.setIamPolicy` permission to call this API.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigee/v1:OrganizationEnvironmentIamMember": {
      "description": "Sets the IAM policy on an environment, if the policy already exists it will be replaced. For more information, see [Manage users, roles, and permissions using the API](https://cloud.google.com/apigee/docs/api-platform/system-administration/manage-users-roles). You must have the `apigee.environments.setIamPolicy` permission to call this API.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigee/v1:OrganizationEnvironmentIamPolicy": {
      "description": "Sets the IAM policy on an environment, if the policy already exists it will be replaced. For more information, see [Manage users, roles, and permissions using the API](https://cloud.google.com/apigee/docs/api-platform/system-administration/manage-users-roles). You must have the `apigee.environments.setIamPolicy` permission to call this API.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "environmentId",
        "etag",
        "organizationId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "environmentId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Override": {
      "description": "Creates a trace configuration override. The response contains a system-generated UUID, that can be used to view, update, or delete the configuration override. Use the List API to view the existing trace configuration overrides.",
      "properties": {
        "apiProxy": {
          "type": "string",
          "description": "ID of the API proxy that will have its trace configuration overridden."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "ID of the trace configuration override specified as a system-generated UUID."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "samplingConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TraceSamplingConfigResponse",
          "description": "Trace configuration to override."
        }
      },
      "type": "object",
      "required": [
        "apiProxy",
        "environmentId",
        "name",
        "organizationId",
        "samplingConfig"
      ],
      "inputProperties": {
        "apiProxy": {
          "type": "string",
          "description": "ID of the API proxy that will have its trace configuration overridden."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "ID of the trace configuration override specified as a system-generated UUID."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "samplingConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TraceSamplingConfig",
          "description": "Trace configuration to override."
        }
      },
      "requiredInputs": [
        "environmentId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Query": {
      "description": "Submit a query to be processed in the background. If the submission of the query succeeds, the API returns a 201 status and an ID that refer to the query. In addition to the HTTP status 201, the `state` of \"enqueued\" means that the request succeeded.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "created": {
          "type": "string",
          "description": "Creation time of the query."
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname is available only when query is executed at host level."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "error": {
          "type": "string",
          "description": "Error is set when query fails."
        },
        "executionTime": {
          "type": "string",
          "description": "ExecutionTime is available only after the query is completed."
        },
        "name": {
          "type": "string",
          "description": "Asynchronous Query Name."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryParams": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QueryMetadataResponse",
          "description": "Contains information like metrics, dimenstions etc of the AsyncQuery."
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Asynchronous Report ID."
        },
        "result": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AsyncQueryResultResponse",
          "description": "Result is available only after the query is completed."
        },
        "resultFileSize": {
          "type": "string",
          "description": "ResultFileSize is available only after the query is completed."
        },
        "resultRows": {
          "type": "string",
          "description": "ResultRows is available only after the query is completed."
        },
        "self": {
          "type": "string",
          "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostQueries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`"
        },
        "state": {
          "type": "string",
          "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"failed\"."
        },
        "updated": {
          "type": "string",
          "description": "Last updated timestamp for the query."
        }
      },
      "type": "object",
      "required": [
        "created",
        "envgroupHostname",
        "environmentId",
        "error",
        "executionTime",
        "name",
        "organizationId",
        "queryParams",
        "reportDefinitionId",
        "result",
        "resultFileSize",
        "resultRows",
        "self",
        "state",
        "updated"
      ],
      "inputProperties": {
        "csvDelimiter": {
          "type": "string",
          "description": "Delimiter used in the CSV file, if `outputFormat` is set to `csv`. Defaults to the `,` (comma) character. Supported delimiter characters include comma (`,`), pipe (`|`), and tab (`\\t`)."
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of dimensions. https://docs.apigee.com/api-platform/analytics/analytics-reference#dimensions"
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname needs to be specified if query intends to run at host level. This field is only allowed when query is submitted by CreateHostAsyncQuery where analytics data will be grouped by organization and hostname."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "filter": {
          "type": "string",
          "description": "Boolean expression that can be used to filter data. Filter expressions can be combined using AND/OR terms and should be fully parenthesized to avoid ambiguity. See Analytics metrics, dimensions, and filters reference https://docs.apigee.com/api-platform/analytics/analytics-reference for more information on the fields available to filter on. For more information on the tokens that you use to build filter expressions, see Filter expression syntax. https://docs.apigee.com/api-platform/analytics/asynch-reports-api#filter-expression-syntax"
        },
        "groupByTimeUnit": {
          "type": "string",
          "description": "Time unit used to group the result set. Valid values include: second, minute, hour, day, week, or month. If a query includes groupByTimeUnit, then the result is an aggregation based on the specified time unit and the resultant timestamp does not include milliseconds precision. If a query omits groupByTimeUnit, then the resultant timestamp includes milliseconds precision."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of rows that can be returned in the result."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QueryMetric"
          },
          "description": "A list of Metrics."
        },
        "name": {
          "type": "string",
          "description": "Asynchronous Query Name."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "outputFormat": {
          "type": "string",
          "description": "Valid values include: `csv` or `json`. Defaults to `json`. Note: Configure the delimiter for CSV output using the csvDelimiter property."
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Asynchronous Report ID."
        },
        "timeRange": {
          "$ref": "pulumi.json#/Any",
          "description": "Time range for the query. Can use the following predefined strings to specify the time range: `last60minutes` `last24hours` `last7days` Or, specify the timeRange as a structure describing start and end timestamps in the ISO format: yyyy-mm-ddThh:mm:ssZ. Example: \"timeRange\": { \"start\": \"2018-07-29T00:13:00Z\", \"end\": \"2018-08-01T00:18:00Z\" }"
        }
      },
      "requiredInputs": [
        "environmentId",
        "organizationId",
        "timeRange"
      ]
    },
    "google-native:apigee/v1:RatePlan": {
      "description": "Create a rate plan that is associated with an API product in an organization. Using rate plans, API product owners can monetize their API products by configuring one or more of the following: - Billing frequency - Initial setup fees for using an API product - Payment funding model (postpaid only) - Fixed recurring or consumption-based charges for using an API product - Revenue sharing with developer partners An API product can have multiple rate plans associated with it but *only one* rate plan can be active at any point of time. **Note: From the developer's perspective, they purchase API products not rate plans.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiproduct": {
          "type": "string",
          "description": "Name of the API product that the rate plan is associated with."
        },
        "apiproductId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "billingPeriod": {
          "type": "string",
          "description": "Frequency at which the customer will be billed."
        },
        "consumptionPricingRates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1RateRangeResponse"
          },
          "description": "API call volume ranges and the fees charged when the total number of API calls is within a given range. The method used to calculate the final fee depends on the selected pricing model. For example, if the pricing model is `STAIRSTEP` and the ranges are defined as follows: ``` { \"start\": 1, \"end\": 100, \"fee\": 75 }, { \"start\": 101, \"end\": 200, \"fee\": 100 }, } ``` Then the following fees would be charged based on the total number of API calls (assuming the currency selected is `USD`): * 1 call costs $75 * 50 calls cost $75 * 150 calls cost $100 The number of API calls cannot exceed 200."
        },
        "consumptionPricingType": {
          "type": "string",
          "description": "Pricing model used for consumption-based charges."
        },
        "createdAt": {
          "type": "string",
          "description": "Time that the rate plan was created in milliseconds since epoch."
        },
        "currencyCode": {
          "type": "string",
          "description": "Currency to be used for billing. Consists of a three-letter code as defined by the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard."
        },
        "description": {
          "type": "string",
          "description": "Description of the rate plan."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the rate plan."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the rate plan will expire in milliseconds since epoch. Set to 0 or `null` to indicate that the rate plan should never expire."
        },
        "fixedFeeFrequency": {
          "type": "integer",
          "description": "Frequency at which the fixed fee is charged."
        },
        "fixedRecurringFee": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeMoneyResponse",
          "description": "Fixed amount that is charged at a defined interval and billed in advance of use of the API product. The fee will be prorated for the first billing period."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time the rate plan was last modified in milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Name of the rate plan."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "paymentFundingModel": {
          "type": "string",
          "description": "DEPRECATED: This field is no longer supported and will eventually be removed when Apigee Hybrid 1.5/1.6 is no longer supported. Instead, use the `billingType` field inside `DeveloperMonetizationConfig` resource. Flag that specifies the billing account type, prepaid or postpaid.",
          "deprecationMessage": "DEPRECATED: This field is no longer supported and will eventually be removed when Apigee Hybrid 1.5/1.6 is no longer supported. Instead, use the `billingType` field inside `DeveloperMonetizationConfig` resource. Flag that specifies the billing account type, prepaid or postpaid."
        },
        "revenueShareRates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1RevenueShareRangeResponse"
          },
          "description": "Details of the revenue sharing model."
        },
        "revenueShareType": {
          "type": "string",
          "description": "Method used to calculate the revenue that is shared with developers."
        },
        "setupFee": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeMoneyResponse",
          "description": "Initial, one-time fee paid when purchasing the API product."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the rate plan becomes active in milliseconds since epoch."
        },
        "state": {
          "type": "string",
          "description": "Current state of the rate plan (draft or published)."
        }
      },
      "type": "object",
      "required": [
        "apiproduct",
        "apiproductId",
        "billingPeriod",
        "consumptionPricingRates",
        "consumptionPricingType",
        "createdAt",
        "currencyCode",
        "description",
        "displayName",
        "endTime",
        "fixedFeeFrequency",
        "fixedRecurringFee",
        "lastModifiedAt",
        "name",
        "organizationId",
        "paymentFundingModel",
        "revenueShareRates",
        "revenueShareType",
        "setupFee",
        "startTime",
        "state"
      ],
      "inputProperties": {
        "apiproduct": {
          "type": "string",
          "description": "Name of the API product that the rate plan is associated with."
        },
        "apiproductId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "billingPeriod": {
          "$ref": "#/types/google-native:apigee%2Fv1:RatePlanBillingPeriod",
          "description": "Frequency at which the customer will be billed."
        },
        "consumptionPricingRates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1RateRange"
          },
          "description": "API call volume ranges and the fees charged when the total number of API calls is within a given range. The method used to calculate the final fee depends on the selected pricing model. For example, if the pricing model is `STAIRSTEP` and the ranges are defined as follows: ``` { \"start\": 1, \"end\": 100, \"fee\": 75 }, { \"start\": 101, \"end\": 200, \"fee\": 100 }, } ``` Then the following fees would be charged based on the total number of API calls (assuming the currency selected is `USD`): * 1 call costs $75 * 50 calls cost $75 * 150 calls cost $100 The number of API calls cannot exceed 200."
        },
        "consumptionPricingType": {
          "$ref": "#/types/google-native:apigee%2Fv1:RatePlanConsumptionPricingType",
          "description": "Pricing model used for consumption-based charges."
        },
        "currencyCode": {
          "type": "string",
          "description": "Currency to be used for billing. Consists of a three-letter code as defined by the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard."
        },
        "description": {
          "type": "string",
          "description": "Description of the rate plan."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the rate plan."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the rate plan will expire in milliseconds since epoch. Set to 0 or `null` to indicate that the rate plan should never expire."
        },
        "fixedFeeFrequency": {
          "type": "integer",
          "description": "Frequency at which the fixed fee is charged."
        },
        "fixedRecurringFee": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeMoney",
          "description": "Fixed amount that is charged at a defined interval and billed in advance of use of the API product. The fee will be prorated for the first billing period."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "paymentFundingModel": {
          "$ref": "#/types/google-native:apigee%2Fv1:RatePlanPaymentFundingModel",
          "description": "DEPRECATED: This field is no longer supported and will eventually be removed when Apigee Hybrid 1.5/1.6 is no longer supported. Instead, use the `billingType` field inside `DeveloperMonetizationConfig` resource. Flag that specifies the billing account type, prepaid or postpaid.",
          "deprecationMessage": "DEPRECATED: This field is no longer supported and will eventually be removed when Apigee Hybrid 1.5/1.6 is no longer supported. Instead, use the `billingType` field inside `DeveloperMonetizationConfig` resource. Flag that specifies the billing account type, prepaid or postpaid."
        },
        "revenueShareRates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1RevenueShareRange"
          },
          "description": "Details of the revenue sharing model."
        },
        "revenueShareType": {
          "$ref": "#/types/google-native:apigee%2Fv1:RatePlanRevenueShareType",
          "description": "Method used to calculate the revenue that is shared with developers."
        },
        "setupFee": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeMoney",
          "description": "Initial, one-time fee paid when purchasing the API product."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the rate plan becomes active in milliseconds since epoch."
        },
        "state": {
          "$ref": "#/types/google-native:apigee%2Fv1:RatePlanState",
          "description": "Current state of the rate plan (draft or published)."
        }
      },
      "requiredInputs": [
        "apiproductId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Reference": {
      "description": "Creates a Reference in the specified environment.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of this reference."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource id of this reference. Values must match the regular expression [\\w\\s\\-.]+."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "refers": {
          "type": "string",
          "description": "The id of the resource to which this reference refers. Must be the id of a resource that exists in the parent environment and is of the given resource_type."
        },
        "resourceType": {
          "type": "string",
          "description": "The type of resource referred to by this reference. Valid values are 'KeyStore' or 'TrustStore'."
        }
      },
      "type": "object",
      "required": [
        "description",
        "environmentId",
        "name",
        "organizationId",
        "refers",
        "resourceType"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of this reference."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource id of this reference. Values must match the regular expression [\\w\\s\\-.]+."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "refers": {
          "type": "string",
          "description": "The id of the resource to which this reference refers. Must be the id of a resource that exists in the parent environment and is of the given resource_type."
        },
        "resourceType": {
          "type": "string",
          "description": "The type of resource referred to by this reference. Valid values are 'KeyStore' or 'TrustStore'."
        }
      },
      "requiredInputs": [
        "environmentId",
        "organizationId",
        "refers"
      ]
    },
    "google-native:apigee/v1:Report": {
      "description": "Creates a Custom Report for an Organization. A Custom Report provides Apigee Customers to create custom dashboards in addition to the standard dashboards which are provided. The Custom Report in its simplest form contains specifications about metrics, dimensions and filters. It is important to note that the custom report by itself does not provide an executable entity. The Edge UI converts the custom report definition into an analytics query and displays the result in a chart.",
      "properties": {
        "chartType": {
          "type": "string",
          "description": "This field contains the chart type for the report"
        },
        "comments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Legacy field: not used. This field contains a list of comments associated with custom report"
        },
        "createdAt": {
          "type": "string",
          "description": "Unix time when the app was created json key: createdAt"
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This contains the list of dimensions for the report"
        },
        "displayName": {
          "type": "string",
          "description": "This is the display name for the report"
        },
        "environment": {
          "type": "string",
          "description": "Environment name"
        },
        "filter": {
          "type": "string",
          "description": "This field contains the filter expression"
        },
        "fromTime": {
          "type": "string",
          "description": "Legacy field: not used. Contains the from time for the report"
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Modified time of this entity as milliseconds since epoch. json key: lastModifiedAt"
        },
        "lastViewedAt": {
          "type": "string",
          "description": "Last viewed time of this entity as milliseconds since epoch"
        },
        "limit": {
          "type": "string",
          "description": "Legacy field: not used This field contains the limit for the result retrieved"
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CustomReportMetricResponse"
          },
          "description": "This contains the list of metrics"
        },
        "name": {
          "type": "string",
          "description": "Unique identifier for the report T his is a legacy field used to encode custom report unique id"
        },
        "offset": {
          "type": "string",
          "description": "Legacy field: not used. This field contains the offset for the data"
        },
        "organization": {
          "type": "string",
          "description": "Organization name"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ReportPropertyResponse"
          },
          "description": "This field contains report properties such as ui metadata etc."
        },
        "sortByCols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Legacy field: not used much. Contains the list of sort by columns"
        },
        "sortOrder": {
          "type": "string",
          "description": "Legacy field: not used much. Contains the sort order for the sort columns"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Legacy field: not used. This field contains a list of tags associated with custom report"
        },
        "timeUnit": {
          "type": "string",
          "description": "This field contains the time unit of aggregation for the report"
        },
        "toTime": {
          "type": "string",
          "description": "Legacy field: not used. Contains the end time for the report"
        },
        "topk": {
          "type": "string",
          "description": "Legacy field: not used. This field contains the top k parameter value for restricting the result"
        }
      },
      "type": "object",
      "required": [
        "chartType",
        "comments",
        "createdAt",
        "dimensions",
        "displayName",
        "environment",
        "filter",
        "fromTime",
        "lastModifiedAt",
        "lastViewedAt",
        "limit",
        "metrics",
        "name",
        "offset",
        "organization",
        "organizationId",
        "properties",
        "sortByCols",
        "sortOrder",
        "tags",
        "timeUnit",
        "toTime",
        "topk"
      ],
      "inputProperties": {
        "chartType": {
          "type": "string",
          "description": "This field contains the chart type for the report"
        },
        "comments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Legacy field: not used. This field contains a list of comments associated with custom report"
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This contains the list of dimensions for the report"
        },
        "displayName": {
          "type": "string",
          "description": "This is the display name for the report"
        },
        "filter": {
          "type": "string",
          "description": "This field contains the filter expression"
        },
        "fromTime": {
          "type": "string",
          "description": "Legacy field: not used. Contains the from time for the report"
        },
        "limit": {
          "type": "string",
          "description": "Legacy field: not used This field contains the limit for the result retrieved"
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CustomReportMetric"
          },
          "description": "This contains the list of metrics"
        },
        "name": {
          "type": "string",
          "description": "Unique identifier for the report T his is a legacy field used to encode custom report unique id"
        },
        "offset": {
          "type": "string",
          "description": "Legacy field: not used. This field contains the offset for the data"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ReportProperty"
          },
          "description": "This field contains report properties such as ui metadata etc."
        },
        "sortByCols": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Legacy field: not used much. Contains the list of sort by columns"
        },
        "sortOrder": {
          "type": "string",
          "description": "Legacy field: not used much. Contains the sort order for the sort columns"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Legacy field: not used. This field contains a list of tags associated with custom report"
        },
        "timeUnit": {
          "type": "string",
          "description": "This field contains the time unit of aggregation for the report"
        },
        "toTime": {
          "type": "string",
          "description": "Legacy field: not used. Contains the end time for the report"
        },
        "topk": {
          "type": "string",
          "description": "Legacy field: not used. This field contains the top k parameter value for restricting the result"
        }
      },
      "requiredInputs": [
        "metrics",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Resourcefile": {
      "description": "Creates a resource file. Specify the `Content-Type` as `application/octet-stream` or `multipart/form-data`. For more information about resource files, see [Resource files](https://cloud.google.com/apigee/docs/api-platform/develop/resource-files).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "contentType": {
          "type": "string",
          "description": "The HTTP Content-Type header value specifying the content type of the body."
        },
        "data": {
          "type": "string",
          "description": "The HTTP request/response body as raw binary."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "extensions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Application specific response metadata. Must be set in the first response for streaming APIs."
        },
        "name": {
          "type": "string",
          "description": "Required. Name of the resource file. Must match the regular expression: [a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()+\\-=,.~'` ]{1,255}",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "Required. Resource file type. {{ resource_file_type }}",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "contentType",
        "data",
        "environmentId",
        "extensions",
        "name",
        "organizationId",
        "type"
      ],
      "inputProperties": {
        "contentType": {
          "type": "string",
          "description": "The HTTP Content-Type header value specifying the content type of the body."
        },
        "data": {
          "type": "string",
          "description": "The HTTP request/response body as raw binary."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "extensions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Application specific response metadata. Must be set in the first response for streaming APIs."
        },
        "file": {
          "$ref": "pulumi.json#/Asset",
          "description": "File to upload."
        },
        "name": {
          "type": "string",
          "description": "Required. Name of the resource file. Must match the regular expression: [a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()+\\-=,.~'` ]{1,255}",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "Required. Resource file type. {{ resource_file_type }}",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "environmentId",
        "name",
        "organizationId",
        "type"
      ]
    },
    "google-native:apigee/v1:SecurityAction": {
      "description": "CreateSecurityAction creates a SecurityAction.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "allow": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionAllowResponse",
          "description": "Allow a request through if it matches this SecurityAction."
        },
        "conditionConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionConditionConfigResponse",
          "description": "A valid SecurityAction must contain at least one condition."
        },
        "createTime": {
          "type": "string",
          "description": "The create time for this SecurityAction."
        },
        "deny": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionDenyResponse",
          "description": "Deny a request through if it matches this SecurityAction."
        },
        "description": {
          "type": "string",
          "description": "Optional. An optional user provided description of the SecurityAction."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "expireTime": {
          "type": "string",
          "description": "The expiration for this SecurityAction."
        },
        "flag": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionFlagResponse",
          "description": "Flag a request through if it matches this SecurityAction."
        },
        "name": {
          "type": "string",
          "description": "Immutable. This field is ignored during creation as per AIP-133. Please set the `security_action_id` field in the CreateSecurityActionRequest when creating a new SecurityAction. Format: organizations/{org}/environments/{env}/securityActions/{security_action}"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securityActionId": {
          "type": "string",
          "description": "Required. The ID to use for the SecurityAction, which will become the final component of the action's resource name. This value should be 0-61 characters, and valid format is (^[a-z]([a-z0-9-]{​0,61}[a-z0-9])?$).",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "Only an ENABLED SecurityAction is enforced. An ENABLED SecurityAction past its expiration time will not be enforced."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL for this SecurityAction."
        },
        "updateTime": {
          "type": "string",
          "description": "The update time for this SecurityAction. This reflects when this SecurityAction changed states."
        }
      },
      "type": "object",
      "required": [
        "allow",
        "conditionConfig",
        "createTime",
        "deny",
        "description",
        "environmentId",
        "expireTime",
        "flag",
        "name",
        "organizationId",
        "securityActionId",
        "state",
        "ttl",
        "updateTime"
      ],
      "inputProperties": {
        "allow": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionAllow",
          "description": "Allow a request through if it matches this SecurityAction."
        },
        "conditionConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionConditionConfig",
          "description": "A valid SecurityAction must contain at least one condition."
        },
        "deny": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionDeny",
          "description": "Deny a request through if it matches this SecurityAction."
        },
        "description": {
          "type": "string",
          "description": "Optional. An optional user provided description of the SecurityAction."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "expireTime": {
          "type": "string",
          "description": "The expiration for this SecurityAction."
        },
        "flag": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionFlag",
          "description": "Flag a request through if it matches this SecurityAction."
        },
        "name": {
          "type": "string",
          "description": "Immutable. This field is ignored during creation as per AIP-133. Please set the `security_action_id` field in the CreateSecurityActionRequest when creating a new SecurityAction. Format: organizations/{org}/environments/{env}/securityActions/{security_action}"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securityActionId": {
          "type": "string",
          "description": "Required. The ID to use for the SecurityAction, which will become the final component of the action's resource name. This value should be 0-61 characters, and valid format is (^[a-z]([a-z0-9-]{​0,61}[a-z0-9])?$).",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:apigee%2Fv1:SecurityActionState",
          "description": "Only an ENABLED SecurityAction is enforced. An ENABLED SecurityAction past its expiration time will not be enforced."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL for this SecurityAction."
        }
      },
      "requiredInputs": [
        "conditionConfig",
        "environmentId",
        "organizationId",
        "securityActionId",
        "state"
      ]
    },
    "google-native:apigee/v1:SecurityProfile": {
      "description": "CreateSecurityProfile create a new custom security profile.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the security profile."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the security profile."
        },
        "environments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityProfileEnvironmentResponse"
          },
          "description": "List of environments attached to security profile."
        },
        "maxScore": {
          "type": "integer",
          "description": "Maximum security score that can be generated by this profile."
        },
        "minScore": {
          "type": "integer",
          "description": "Minimum security score that can be generated by this profile."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the security profile resource. Format: organizations/{org}/securityProfiles/{profile}"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "profileConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigResponse",
          "description": "Customized profile configuration that computes the security score."
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The time when revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "Revision ID of the security profile."
        },
        "revisionPublishTime": {
          "type": "string",
          "description": "The time when revision was published. Once published, the security profile revision cannot be updated further and can be attached to environments."
        },
        "revisionUpdateTime": {
          "type": "string",
          "description": "The time when revision was updated."
        },
        "scoringConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityProfileScoringConfigResponse"
          },
          "description": "List of profile scoring configs in this revision."
        },
        "securityProfileId": {
          "type": "string",
          "description": "Required. The ID to use for the SecurityProfile, which will become the final component of the action's resource name. This value should be 1-63 characters and validated by \"(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)\".",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "environments",
        "maxScore",
        "minScore",
        "name",
        "organizationId",
        "profileConfig",
        "revisionCreateTime",
        "revisionId",
        "revisionPublishTime",
        "revisionUpdateTime",
        "scoringConfigs",
        "securityProfileId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the security profile."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the security profile."
        },
        "environments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityProfileEnvironment"
          },
          "description": "List of environments attached to security profile."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the security profile resource. Format: organizations/{org}/securityProfiles/{profile}"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "profileConfig": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfig",
          "description": "Customized profile configuration that computes the security score."
        },
        "scoringConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityProfileScoringConfig"
          },
          "description": "List of profile scoring configs in this revision."
        },
        "securityProfileId": {
          "type": "string",
          "description": "Required. The ID to use for the SecurityProfile, which will become the final component of the action's resource name. This value should be 1-63 characters and validated by \"(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)\".",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "organizationId",
        "profileConfig",
        "securityProfileId"
      ]
    },
    "google-native:apigee/v1:SecurityReport": {
      "description": "Submit a report request to be processed in the background. If the submission succeeds, the API returns a 200 status and an ID that refer to the report request. In addition to the HTTP status 200, the `state` of \"enqueued\" means that the request succeeded.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "created": {
          "type": "string",
          "description": "Creation time of the query."
        },
        "displayName": {
          "type": "string",
          "description": "Display Name specified by the user."
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname is available only when query is executed at host level."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "error": {
          "type": "string",
          "description": "Error is set when query fails."
        },
        "executionTime": {
          "type": "string",
          "description": "ExecutionTime is available only after the query is completed."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryParams": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportMetadataResponse",
          "description": "Contains information like metrics, dimenstions etc of the Security Report."
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Report Definition ID."
        },
        "result": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportResultMetadataResponse",
          "description": "Result is available only after the query is completed."
        },
        "resultFileSize": {
          "type": "string",
          "description": "ResultFileSize is available only after the query is completed."
        },
        "resultRows": {
          "type": "string",
          "description": "ResultRows is available only after the query is completed."
        },
        "self": {
          "type": "string",
          "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/securityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostSecurityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`"
        },
        "state": {
          "type": "string",
          "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"expired\" and \"failed\"."
        },
        "updated": {
          "type": "string",
          "description": "Last updated timestamp for the query."
        }
      },
      "type": "object",
      "required": [
        "created",
        "displayName",
        "envgroupHostname",
        "environmentId",
        "error",
        "executionTime",
        "organizationId",
        "queryParams",
        "reportDefinitionId",
        "result",
        "resultFileSize",
        "resultRows",
        "self",
        "state",
        "updated"
      ],
      "inputProperties": {
        "csvDelimiter": {
          "type": "string",
          "description": "Delimiter used in the CSV file, if `outputFormat` is set to `csv`. Defaults to the `,` (comma) character. Supported delimiter characters include comma (`,`), pipe (`|`), and tab (`\\t`)."
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of dimensions. https://docs.apigee.com/api-platform/analytics/analytics-reference#dimensions"
        },
        "displayName": {
          "type": "string",
          "description": "Security Report display name which users can specify."
        },
        "envgroupHostname": {
          "type": "string",
          "description": "Hostname needs to be specified if query intends to run at host level. This field is only allowed when query is submitted by CreateHostSecurityReport where analytics data will be grouped by organization and hostname."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "filter": {
          "type": "string",
          "description": "Boolean expression that can be used to filter data. Filter expressions can be combined using AND/OR terms and should be fully parenthesized to avoid ambiguity. See Analytics metrics, dimensions, and filters reference https://docs.apigee.com/api-platform/analytics/analytics-reference for more information on the fields available to filter on. For more information on the tokens that you use to build filter expressions, see Filter expression syntax. https://docs.apigee.com/api-platform/analytics/asynch-reports-api#filter-expression-syntax"
        },
        "groupByTimeUnit": {
          "type": "string",
          "description": "Time unit used to group the result set. Valid values include: second, minute, hour, day, week, or month. If a query includes groupByTimeUnit, then the result is an aggregation based on the specified time unit and the resultant timestamp does not include milliseconds precision. If a query omits groupByTimeUnit, then the resultant timestamp includes milliseconds precision."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of rows that can be returned in the result."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportQueryMetric"
          },
          "description": "A list of Metrics."
        },
        "mimeType": {
          "type": "string",
          "description": "Valid values include: `csv` or `json`. Defaults to `json`. Note: Configure the delimiter for CSV output using the csvDelimiter property."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportDefinitionId": {
          "type": "string",
          "description": "Report Definition ID."
        },
        "timeRange": {
          "$ref": "pulumi.json#/Any",
          "description": "Time range for the query. Can use the following predefined strings to specify the time range: `last60minutes` `last24hours` `last7days` Or, specify the timeRange as a structure describing start and end timestamps in the ISO format: yyyy-mm-ddThh:mm:ssZ. Example: \"timeRange\": { \"start\": \"2018-07-29T00:13:00Z\", \"end\": \"2018-08-01T00:18:00Z\" }"
        }
      },
      "requiredInputs": [
        "environmentId",
        "organizationId",
        "timeRange"
      ]
    },
    "google-native:apigee/v1:Sharedflow": {
      "description": "Uploads a ZIP-formatted shared flow configuration bundle to an organization. If the shared flow already exists, this creates a new revision of it. If the shared flow does not exist, this creates it. Once imported, the shared flow revision must be deployed before it can be accessed at runtime. The size limit of a shared flow bundle is 15 MB.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Required. Must be set to either `import` or `validate`.",
          "replaceOnChanges": true
        },
        "latestRevisionId": {
          "type": "string",
          "description": "The id of the most recently created revision for this shared flow."
        },
        "metaData": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1EntityMetadataResponse",
          "description": "Metadata describing the shared flow."
        },
        "name": {
          "type": "string",
          "description": "Required. The name to give the shared flow",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revision": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of revisions of this shared flow."
        }
      },
      "type": "object",
      "required": [
        "action",
        "latestRevisionId",
        "metaData",
        "name",
        "organizationId",
        "revision"
      ],
      "inputProperties": {
        "action": {
          "type": "string",
          "description": "Required. Must be set to either `import` or `validate`.",
          "replaceOnChanges": true
        },
        "contentType": {
          "type": "string",
          "description": "The HTTP Content-Type header value specifying the content type of the body."
        },
        "data": {
          "type": "string",
          "description": "The HTTP request/response body as raw binary."
        },
        "extensions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": "Application specific response metadata. Must be set in the first response for streaming APIs."
        },
        "name": {
          "type": "string",
          "description": "Required. The name to give the shared flow",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "action",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:Subscription": {
      "description": "Creates a subscription to an API product. \nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiproduct": {
          "type": "string",
          "description": "Name of the API product for which the developer is purchasing a subscription."
        },
        "createdAt": {
          "type": "string",
          "description": "Time when the API product subscription was created in milliseconds since epoch."
        },
        "developerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "endTime": {
          "type": "string",
          "description": "Time when the API product subscription ends in milliseconds since epoch."
        },
        "lastModifiedAt": {
          "type": "string",
          "description": "Time when the API product subscription was last modified in milliseconds since epoch."
        },
        "name": {
          "type": "string",
          "description": "Name of the API product subscription."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the API product subscription starts in milliseconds since epoch."
        }
      },
      "type": "object",
      "required": [
        "apiproduct",
        "createdAt",
        "developerId",
        "endTime",
        "lastModifiedAt",
        "name",
        "organizationId",
        "startTime"
      ],
      "inputProperties": {
        "apiproduct": {
          "type": "string",
          "description": "Name of the API product for which the developer is purchasing a subscription."
        },
        "developerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "endTime": {
          "type": "string",
          "description": "Time when the API product subscription ends in milliseconds since epoch."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time when the API product subscription starts in milliseconds since epoch."
        }
      },
      "requiredInputs": [
        "developerId",
        "organizationId"
      ]
    },
    "google-native:apigee/v1:TargetServer": {
      "description": "Creates a TargetServer in the specified environment.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of this TargetServer."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "host": {
          "type": "string",
          "description": "The host name this target connects to. Value must be a valid hostname as described by RFC-1123."
        },
        "isEnabled": {
          "type": "boolean",
          "description": "Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true."
        },
        "name": {
          "type": "string",
          "description": "Optional. The ID to give the TargetServer. This will overwrite the value in TargetServer."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "port": {
          "type": "integer",
          "description": "The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive."
        },
        "protocol": {
          "type": "string",
          "description": "Immutable. The protocol used by this TargetServer."
        },
        "sSLInfo": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TlsInfoResponse",
          "description": "Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration."
        }
      },
      "type": "object",
      "required": [
        "description",
        "environmentId",
        "host",
        "isEnabled",
        "name",
        "organizationId",
        "port",
        "protocol",
        "sSLInfo"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of this TargetServer."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "host": {
          "type": "string",
          "description": "The host name this target connects to. Value must be a valid hostname as described by RFC-1123."
        },
        "isEnabled": {
          "type": "boolean",
          "description": "Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true."
        },
        "name": {
          "type": "string",
          "description": "The resource id of this target server. Values must match the regular expression "
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "port": {
          "type": "integer",
          "description": "The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive."
        },
        "protocol": {
          "$ref": "#/types/google-native:apigee%2Fv1:TargetServerProtocol",
          "description": "Immutable. The protocol used by this TargetServer."
        },
        "sSLInfo": {
          "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TlsInfo",
          "description": "Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration."
        }
      },
      "requiredInputs": [
        "environmentId",
        "host",
        "organizationId",
        "port"
      ]
    },
    "google-native:apigeeregistry/v1:Api": {
      "description": "Creates a specified API.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "description": "Required. The ID to use for the API, which will become the final component of the API's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "availability": {
          "type": "string",
          "description": "A user-definable description of the availability of this service. Format: free-form, but we expect single words that describe availability, e.g., \"NONE\", \"TESTING\", \"PREVIEW\", \"GENERAL\", \"DEPRECATED\", \"SHUTDOWN\"."
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp."
        },
        "description": {
          "type": "string",
          "description": "A detailed description."
        },
        "displayName": {
          "type": "string",
          "description": "Human-meaningful name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores, and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendedDeployment": {
          "type": "string",
          "description": "The recommended deployment of the API. Format: `projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}`"
        },
        "recommendedVersion": {
          "type": "string",
          "description": "The recommended version of the API. Format: `projects/{project}/locations/{location}/apis/{api}/versions/{version}`"
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "apiId",
        "availability",
        "createTime",
        "description",
        "displayName",
        "labels",
        "location",
        "name",
        "project",
        "recommendedDeployment",
        "recommendedVersion",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "description": "Required. The ID to use for the API, which will become the final component of the API's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "availability": {
          "type": "string",
          "description": "A user-definable description of the availability of this service. Format: free-form, but we expect single words that describe availability, e.g., \"NONE\", \"TESTING\", \"PREVIEW\", \"GENERAL\", \"DEPRECATED\", \"SHUTDOWN\"."
        },
        "description": {
          "type": "string",
          "description": "A detailed description."
        },
        "displayName": {
          "type": "string",
          "description": "Human-meaningful name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores, and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendedDeployment": {
          "type": "string",
          "description": "The recommended deployment of the API. Format: `projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}`"
        },
        "recommendedVersion": {
          "type": "string",
          "description": "The recommended version of the API. Format: `projects/{project}/locations/{location}/apis/{api}/versions/{version}`"
        }
      },
      "requiredInputs": [
        "apiId"
      ]
    },
    "google-native:apigeeregistry/v1:ApiArtifactIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiArtifactIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiArtifactIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "artifactId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "apiId",
        "artifactId"
      ]
    },
    "google-native:apigeeregistry/v1:ApiDeploymentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiDeploymentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiDeploymentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "deploymentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "bindings",
        "deploymentId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "deploymentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "apiId",
        "deploymentId"
      ]
    },
    "google-native:apigeeregistry/v1:ApiIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "apiId"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionArtifactIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionArtifactIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionArtifactIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "artifactId",
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "versionId"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId",
        "artifactId",
        "versionId"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "versionId"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId",
        "versionId"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionSpecArtifactIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionSpecArtifactIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionSpecArtifactIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "artifactId",
        "bindings",
        "etag",
        "location",
        "project",
        "specId",
        "version",
        "versionId"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId",
        "artifactId",
        "specId",
        "versionId"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionSpecIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionSpecIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ApiVersionSpecIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "apiId",
        "bindings",
        "etag",
        "location",
        "project",
        "specId",
        "version",
        "versionId"
      ],
      "inputProperties": {
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId",
        "specId",
        "versionId"
      ]
    },
    "google-native:apigeeregistry/v1:Artifact": {
      "description": "Creates a specified artifact.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "description": "Required. The ID to use for the artifact, which will become the final component of the artifact's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "contents": {
          "type": "string",
          "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents."
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp."
        },
        "hash": {
          "type": "string",
          "description": "A SHA-256 hash of the artifact's contents. If the artifact is gzipped, this is the hash of the uncompressed artifact."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mimeType": {
          "type": "string",
          "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\")."
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sizeBytes": {
          "type": "integer",
          "description": "The size of the artifact in bytes. If the artifact is gzipped, this is the size of the uncompressed artifact."
        },
        "specId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "apiId",
        "artifactId",
        "contents",
        "createTime",
        "hash",
        "labels",
        "location",
        "mimeType",
        "name",
        "project",
        "sizeBytes",
        "specId",
        "updateTime",
        "versionId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "description": "Required. The ID to use for the artifact, which will become the final component of the artifact's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "contents": {
          "type": "string",
          "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mimeType": {
          "type": "string",
          "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\")."
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId",
        "artifactId",
        "specId",
        "versionId"
      ]
    },
    "google-native:apigeeregistry/v1:ArtifactIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ArtifactIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:ArtifactIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "artifactId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "artifactId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "artifactId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "artifactId"
      ]
    },
    "google-native:apigeeregistry/v1:Deployment": {
      "description": "Creates a specified deployment.",
      "properties": {
        "accessGuidance": {
          "type": "string",
          "description": "Text briefly describing how to access the endpoint. Changes to this value will not affect the revision."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiDeploymentId": {
          "type": "string",
          "description": "Required. The ID to use for the deployment, which will become the final component of the deployment's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "apiSpecRevision": {
          "type": "string",
          "description": "The full resource name (including revision ID) of the spec of the API being served by the deployment. Changes to this value will update the revision. Format: `projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec@revision}`"
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp; when the deployment resource was created."
        },
        "description": {
          "type": "string",
          "description": "A detailed description."
        },
        "displayName": {
          "type": "string",
          "description": "Human-meaningful name."
        },
        "endpointUri": {
          "type": "string",
          "description": "The address where the deployment is serving. Changes to this value will update the revision."
        },
        "externalChannelUri": {
          "type": "string",
          "description": "The address of the external channel of the API (e.g., the Developer Portal). Changes to this value will not affect the revision."
        },
        "intendedAudience": {
          "type": "string",
          "description": "Text briefly identifying the intended audience of the API. Changes to this value will not affect the revision."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "Revision creation timestamp; when the represented revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "Immutable. The revision ID of the deployment. A new revision is committed whenever the deployment contents are changed. The format is an 8-character hexadecimal string."
        },
        "revisionUpdateTime": {
          "type": "string",
          "description": "Last update timestamp: when the represented revision was last modified."
        }
      },
      "type": "object",
      "required": [
        "accessGuidance",
        "annotations",
        "apiDeploymentId",
        "apiId",
        "apiSpecRevision",
        "createTime",
        "description",
        "displayName",
        "endpointUri",
        "externalChannelUri",
        "intendedAudience",
        "labels",
        "location",
        "name",
        "project",
        "revisionCreateTime",
        "revisionId",
        "revisionUpdateTime"
      ],
      "inputProperties": {
        "accessGuidance": {
          "type": "string",
          "description": "Text briefly describing how to access the endpoint. Changes to this value will not affect the revision."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiDeploymentId": {
          "type": "string",
          "description": "Required. The ID to use for the deployment, which will become the final component of the deployment's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "apiSpecRevision": {
          "type": "string",
          "description": "The full resource name (including revision ID) of the spec of the API being served by the deployment. Changes to this value will update the revision. Format: `projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec@revision}`"
        },
        "description": {
          "type": "string",
          "description": "A detailed description."
        },
        "displayName": {
          "type": "string",
          "description": "Human-meaningful name."
        },
        "endpointUri": {
          "type": "string",
          "description": "The address where the deployment is serving. Changes to this value will update the revision."
        },
        "externalChannelUri": {
          "type": "string",
          "description": "The address of the external channel of the API (e.g., the Developer Portal). Changes to this value will not affect the revision."
        },
        "intendedAudience": {
          "type": "string",
          "description": "Text briefly identifying the intended audience of the API. Changes to this value will not affect the revision."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiDeploymentId",
        "apiId"
      ]
    },
    "google-native:apigeeregistry/v1:DeploymentArtifact": {
      "description": "Creates a specified artifact.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "description": "Required. The ID to use for the artifact, which will become the final component of the artifact's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "contents": {
          "type": "string",
          "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents."
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp."
        },
        "deploymentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hash": {
          "type": "string",
          "description": "A SHA-256 hash of the artifact's contents. If the artifact is gzipped, this is the hash of the uncompressed artifact."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mimeType": {
          "type": "string",
          "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\")."
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sizeBytes": {
          "type": "integer",
          "description": "The size of the artifact in bytes. If the artifact is gzipped, this is the size of the uncompressed artifact."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "apiId",
        "artifactId",
        "contents",
        "createTime",
        "deploymentId",
        "hash",
        "labels",
        "location",
        "mimeType",
        "name",
        "project",
        "sizeBytes",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "description": "Required. The ID to use for the artifact, which will become the final component of the artifact's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "contents": {
          "type": "string",
          "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents."
        },
        "deploymentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mimeType": {
          "type": "string",
          "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\")."
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId",
        "artifactId",
        "deploymentId"
      ]
    },
    "google-native:apigeeregistry/v1:DocumentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:DocumentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:DocumentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      }
    },
    "google-native:apigeeregistry/v1:Instance": {
      "description": "Provisions instance resources for the Registry.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "build": {
          "$ref": "#/types/google-native:apigeeregistry%2Fv1:BuildResponse",
          "description": "Build info of the Instance if it's in `ACTIVE` state."
        },
        "config": {
          "$ref": "#/types/google-native:apigeeregistry%2Fv1:ConfigResponse",
          "description": "Config of the Instance."
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Instance. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Format: `projects/*/locations/*/instance`. Currently only `locations/global` is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the Instance."
        },
        "stateMessage": {
          "type": "string",
          "description": "Extra information of Instance.State if the state is `FAILED`."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        }
      },
      "type": "object",
      "required": [
        "build",
        "config",
        "createTime",
        "instanceId",
        "location",
        "name",
        "project",
        "state",
        "stateMessage",
        "updateTime"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:apigeeregistry%2Fv1:Config",
          "description": "Config of the Instance."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Instance. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Format: `projects/*/locations/*/instance`. Currently only `locations/global` is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "instanceId"
      ]
    },
    "google-native:apigeeregistry/v1:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "instanceId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:apigeeregistry/v1:RuntimeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:RuntimeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:apigeeregistry/v1:RuntimeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      }
    },
    "google-native:apigeeregistry/v1:Spec": {
      "description": "Creates a specified spec.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "apiSpecId": {
          "type": "string",
          "description": "Required. The ID to use for the spec, which will become the final component of the spec's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "contents": {
          "type": "string",
          "description": "Input only. The contents of the spec. Provided by API callers when specs are created or updated. To access the contents of a spec, use GetApiSpecContents."
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp; when the spec resource was created."
        },
        "description": {
          "type": "string",
          "description": "A detailed description."
        },
        "filename": {
          "type": "string",
          "description": "A possibly-hierarchical name used to refer to the spec from other specs."
        },
        "hash": {
          "type": "string",
          "description": "A SHA-256 hash of the spec's contents. If the spec is gzipped, this is the hash of the uncompressed spec."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mimeType": {
          "type": "string",
          "description": "A style (format) descriptor for this spec that is specified as a [Media Type](https://en.wikipedia.org/wiki/Media_type). Possible values include `application/vnd.apigee.proto`, `application/vnd.apigee.openapi`, and `application/vnd.apigee.graphql`, with possible suffixes representing compression types. These hypothetical names are defined in the vendor tree defined in RFC6838 (https://tools.ietf.org/html/rfc6838) and are not final. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\")."
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "Revision creation timestamp; when the represented revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "Immutable. The revision ID of the spec. A new revision is committed whenever the spec contents are changed. The format is an 8-character hexadecimal string."
        },
        "revisionUpdateTime": {
          "type": "string",
          "description": "Last update timestamp: when the represented revision was last modified."
        },
        "sizeBytes": {
          "type": "integer",
          "description": "The size of the spec file in bytes. If the spec is gzipped, this is the size of the uncompressed spec."
        },
        "sourceUri": {
          "type": "string",
          "description": "The original source URI of the spec (if one exists). This is an external location that can be used for reference purposes but which may not be authoritative since this external resource may change after the spec is retrieved."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "apiId",
        "apiSpecId",
        "contents",
        "createTime",
        "description",
        "filename",
        "hash",
        "labels",
        "location",
        "mimeType",
        "name",
        "project",
        "revisionCreateTime",
        "revisionId",
        "revisionUpdateTime",
        "sizeBytes",
        "sourceUri",
        "versionId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "apiSpecId": {
          "type": "string",
          "description": "Required. The ID to use for the spec, which will become the final component of the spec's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "contents": {
          "type": "string",
          "description": "Input only. The contents of the spec. Provided by API callers when specs are created or updated. To access the contents of a spec, use GetApiSpecContents."
        },
        "description": {
          "type": "string",
          "description": "A detailed description."
        },
        "filename": {
          "type": "string",
          "description": "A possibly-hierarchical name used to refer to the spec from other specs."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mimeType": {
          "type": "string",
          "description": "A style (format) descriptor for this spec that is specified as a [Media Type](https://en.wikipedia.org/wiki/Media_type). Possible values include `application/vnd.apigee.proto`, `application/vnd.apigee.openapi`, and `application/vnd.apigee.graphql`, with possible suffixes representing compression types. These hypothetical names are defined in the vendor tree defined in RFC6838 (https://tools.ietf.org/html/rfc6838) and are not final. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\")."
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceUri": {
          "type": "string",
          "description": "The original source URI of the spec (if one exists). This is an external location that can be used for reference purposes but which may not be authoritative since this external resource may change after the spec is retrieved."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId",
        "apiSpecId",
        "versionId"
      ]
    },
    "google-native:apigeeregistry/v1:Version": {
      "description": "Creates a specified version.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "apiVersionId": {
          "type": "string",
          "description": "Required. The ID to use for the version, which will become the final component of the version's resource name. This value should be 1-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp."
        },
        "description": {
          "type": "string",
          "description": "A detailed description."
        },
        "displayName": {
          "type": "string",
          "description": "Human-meaningful name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "primarySpec": {
          "type": "string",
          "description": "The primary spec for this version. Format: projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "A user-definable description of the lifecycle phase of this API version. Format: free-form, but we expect single words that describe API maturity, e.g., \"CONCEPT\", \"DESIGN\", \"DEVELOPMENT\", \"STAGING\", \"PRODUCTION\", \"DEPRECATED\", \"RETIRED\"."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "apiId",
        "apiVersionId",
        "createTime",
        "description",
        "displayName",
        "labels",
        "location",
        "name",
        "primarySpec",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "apiVersionId": {
          "type": "string",
          "description": "Required. The ID to use for the version, which will become the final component of the version's resource name. This value should be 1-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "A detailed description."
        },
        "displayName": {
          "type": "string",
          "description": "Human-meaningful name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "primarySpec": {
          "type": "string",
          "description": "The primary spec for this version. Format: projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "A user-definable description of the lifecycle phase of this API version. Format: free-form, but we expect single words that describe API maturity, e.g., \"CONCEPT\", \"DESIGN\", \"DEVELOPMENT\", \"STAGING\", \"PRODUCTION\", \"DEPRECATED\", \"RETIRED\"."
        }
      },
      "requiredInputs": [
        "apiId",
        "apiVersionId"
      ]
    },
    "google-native:apigeeregistry/v1:VersionArtifact": {
      "description": "Creates a specified artifact.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "description": "Required. The ID to use for the artifact, which will become the final component of the artifact's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "contents": {
          "type": "string",
          "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents."
        },
        "createTime": {
          "type": "string",
          "description": "Creation timestamp."
        },
        "hash": {
          "type": "string",
          "description": "A SHA-256 hash of the artifact's contents. If the artifact is gzipped, this is the hash of the uncompressed artifact."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mimeType": {
          "type": "string",
          "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\")."
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sizeBytes": {
          "type": "integer",
          "description": "The size of the artifact in bytes. If the artifact is gzipped, this is the size of the uncompressed artifact."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "apiId",
        "artifactId",
        "contents",
        "createTime",
        "hash",
        "labels",
        "location",
        "mimeType",
        "name",
        "project",
        "sizeBytes",
        "updateTime",
        "versionId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts."
        },
        "apiId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "artifactId": {
          "type": "string",
          "description": "Required. The ID to use for the artifact, which will become the final component of the artifact's resource name. This value should be 4-63 characters, and valid characters are /a-z-/. Following AIP-162, IDs must not have the form of a UUID.",
          "replaceOnChanges": true
        },
        "contents": {
          "type": "string",
          "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mimeType": {
          "type": "string",
          "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\")."
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "apiId",
        "artifactId",
        "versionId"
      ]
    },
    "google-native:apikeys/v2:Key": {
      "description": "Creates a new API key. NOTE: Key is a global resource; hence the only supported value for location is `global`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations is an unstructured key-value map stored with a policy that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects."
        },
        "createTime": {
          "type": "string",
          "description": "A timestamp identifying the time this key was originally created."
        },
        "deleteTime": {
          "type": "string",
          "description": "A timestamp when this key was deleted. If the resource is not deleted, this must be empty."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of this key that you can modify. The maximum length is 63 characters."
        },
        "etag": {
          "type": "string",
          "description": "A checksum computed by the server based on the current value of the Key resource. This may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. See https://google.aip.dev/154."
        },
        "keyId": {
          "type": "string",
          "description": "User specified key id (optional). If specified, it will become the final component of the key resource name. The id must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. In another word, the id must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`. The id must NOT be a UUID-like string."
        },
        "keyString": {
          "type": "string",
          "description": "An encrypted and signed value held by this key. This field can be accessed only through the `GetKeyString` method."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the key. The `name` has the form: `projects//locations/global/keys/`. For example: `projects/123456867718/locations/global/keys/b7ff1f9f-8275-410a-94dd-3855ee9b5dd2` NOTE: Key is a global resource; hence the only supported value for location is `global`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2RestrictionsResponse",
          "description": "Key restrictions."
        },
        "uid": {
          "type": "string",
          "description": "Unique id in UUID4 format."
        },
        "updateTime": {
          "type": "string",
          "description": "A timestamp identifying the time this key was last updated."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "createTime",
        "deleteTime",
        "displayName",
        "etag",
        "keyString",
        "location",
        "name",
        "project",
        "restrictions",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations is an unstructured key-value map stored with a policy that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of this key that you can modify. The maximum length is 63 characters."
        },
        "keyId": {
          "type": "string",
          "description": "User specified key id (optional). If specified, it will become the final component of the key resource name. The id must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. In another word, the id must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`. The id must NOT be a UUID-like string."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restrictions": {
          "$ref": "#/types/google-native:apikeys%2Fv2:V2Restrictions",
          "description": "Key restrictions."
        }
      }
    },
    "google-native:appengine/v1:App": {
      "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields: id - The ID of the target Cloud Platform project. location - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/standard/python/console/).\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "authDomain": {
          "type": "string",
          "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account."
        },
        "codeBucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands."
        },
        "databaseType": {
          "type": "string",
          "description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application."
        },
        "defaultBucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket that can be used by this application to store content."
        },
        "defaultCookieExpiration": {
          "type": "string",
          "description": "Cookie expiration policy for this application."
        },
        "defaultHostname": {
          "type": "string",
          "description": "Hostname used to reach this application, as resolved by App Engine."
        },
        "dispatchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:UrlDispatchRuleResponse"
          },
          "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported."
        },
        "featureSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1:FeatureSettingsResponse",
          "description": "The feature specific settings to be used in the application."
        },
        "gcrDomain": {
          "type": "string",
          "description": "The Google Container Registry domain used for storing managed build docker images for this application."
        },
        "generatedCustomerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetApplicationRequest"
        },
        "iap": {
          "$ref": "#/types/google-native:appengine%2Fv1:IdentityAwareProxyResponse"
        },
        "location": {
          "type": "string",
          "description": "Location from which this application runs. Application instances run out of the data centers in the specified location, which is also where all of the application's end user content is stored.Defaults to us-central.View the list of supported locations (https://cloud.google.com/appengine/docs/locations)."
        },
        "name": {
          "type": "string",
          "description": "Full path to the Application resource in the API. Example: apps/myapp."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account associated with the application. This is the app-level default identity. If no identity provided during create version, Admin API will fallback to this one."
        },
        "servingStatus": {
          "type": "string",
          "description": "Serving status of this application."
        }
      },
      "type": "object",
      "required": [
        "authDomain",
        "codeBucket",
        "databaseType",
        "defaultBucket",
        "defaultCookieExpiration",
        "defaultHostname",
        "dispatchRules",
        "featureSettings",
        "gcrDomain",
        "generatedCustomerMetadata",
        "iap",
        "location",
        "name",
        "serviceAccount",
        "servingStatus"
      ],
      "inputProperties": {
        "authDomain": {
          "type": "string",
          "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account."
        },
        "databaseType": {
          "$ref": "#/types/google-native:appengine%2Fv1:AppDatabaseType",
          "description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application."
        },
        "defaultCookieExpiration": {
          "type": "string",
          "description": "Cookie expiration policy for this application."
        },
        "dispatchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:UrlDispatchRule"
          },
          "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported."
        },
        "featureSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1:FeatureSettings",
          "description": "The feature specific settings to be used in the application."
        },
        "generatedCustomerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetApplicationRequest"
        },
        "iap": {
          "$ref": "#/types/google-native:appengine%2Fv1:IdentityAwareProxy"
        },
        "id": {
          "type": "string",
          "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp."
        },
        "location": {
          "type": "string",
          "description": "Location from which this application runs. Application instances run out of the data centers in the specified location, which is also where all of the application's end user content is stored.Defaults to us-central.View the list of supported locations (https://cloud.google.com/appengine/docs/locations)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account associated with the application. This is the app-level default identity. If no identity provided during create version, Admin API will fallback to this one."
        },
        "servingStatus": {
          "$ref": "#/types/google-native:appengine%2Fv1:AppServingStatus",
          "description": "Serving status of this application."
        }
      }
    },
    "google-native:appengine/v1:AuthorizedCertificate": {
      "description": "Uploads the specified SSL certificate.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRawData": {
          "$ref": "#/types/google-native:appengine%2Fv1:CertificateRawDataResponse",
          "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
        },
        "displayName": {
          "type": "string",
          "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate."
        },
        "domainMappingsCount": {
          "type": "integer",
          "description": "Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com."
        },
        "expireTime": {
          "type": "string",
          "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate."
        },
        "managedCertificate": {
          "$ref": "#/types/google-native:appengine%2Fv1:ManagedCertificateResponse",
          "description": "Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty."
        },
        "name": {
          "type": "string",
          "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345."
        },
        "visibleDomainMappings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "certificateRawData",
        "displayName",
        "domainMappingsCount",
        "domainNames",
        "expireTime",
        "managedCertificate",
        "name",
        "visibleDomainMappings"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRawData": {
          "$ref": "#/types/google-native:appengine%2Fv1:CertificateRawData",
          "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
        },
        "displayName": {
          "type": "string",
          "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:appengine/v1:DomainMapping": {
      "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com."
        },
        "overrideStrategy": {
          "type": "string",
          "description": "Whether the domain creation should override any existing mappings for this domain. By default, overrides are rejected."
        },
        "resourceRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:ResourceRecordResponse"
          },
          "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping."
        },
        "sslSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1:SslSettingsResponse",
          "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "name",
        "resourceRecords",
        "sslSettings"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "id": {
          "type": "string",
          "description": "Relative name of the domain serving the application. Example: example.com."
        },
        "overrideStrategy": {
          "type": "string",
          "description": "Whether the domain creation should override any existing mappings for this domain. By default, overrides are rejected."
        },
        "sslSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1:SslSettings",
          "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:appengine/v1:IngressRule": {
      "description": "Creates a firewall rule for the application.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "action": {
          "type": "string",
          "description": "The action to take on matched requests."
        },
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "An optional string description of this rule. This field has a maximum length of 400 characters."
        },
        "priority": {
          "type": "integer",
          "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user."
        },
        "sourceRange": {
          "type": "string",
          "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32."
        }
      },
      "type": "object",
      "required": [
        "action",
        "appId",
        "description",
        "priority",
        "sourceRange"
      ],
      "inputProperties": {
        "action": {
          "$ref": "#/types/google-native:appengine%2Fv1:IngressRuleAction",
          "description": "The action to take on matched requests."
        },
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "An optional string description of this rule. This field has a maximum length of 400 characters."
        },
        "priority": {
          "type": "integer",
          "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user."
        },
        "sourceRange": {
          "type": "string",
          "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:appengine/v1:Version": {
      "description": "Deploys code and resource files to a new version.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiConfig": {
          "$ref": "#/types/google-native:appengine%2Fv1:ApiConfigHandlerResponse",
          "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/endpoints).Only returned in GET requests if view=FULL is set."
        },
        "appEngineApis": {
          "type": "boolean",
          "description": "Allows App Engine second generation runtimes to access the legacy bundled services."
        },
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "automaticScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1:AutomaticScalingResponse",
          "description": "Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic."
        },
        "basicScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1:BasicScalingResponse",
          "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity."
        },
        "betaSettings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata settings that are supplied to this version to enable beta runtime features."
        },
        "buildEnvVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables available to the build environment.Only returned in GET requests if view=FULL is set."
        },
        "createTime": {
          "type": "string",
          "description": "Time that this version was created."
        },
        "createdBy": {
          "type": "string",
          "description": "Email address of the user who created this version."
        },
        "defaultExpiration": {
          "type": "string",
          "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set."
        },
        "deployment": {
          "$ref": "#/types/google-native:appengine%2Fv1:DeploymentResponse",
          "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
        },
        "diskUsageBytes": {
          "type": "string",
          "description": "Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk."
        },
        "endpointsApiService": {
          "$ref": "#/types/google-native:appengine%2Fv1:EndpointsApiServiceResponse",
          "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app."
        },
        "entrypoint": {
          "$ref": "#/types/google-native:appengine%2Fv1:EntrypointResponse",
          "description": "The entrypoint for the application."
        },
        "env": {
          "type": "string",
          "description": "App Engine execution environment for this version.Defaults to standard."
        },
        "envVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set."
        },
        "errorHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:ErrorHandlerResponse"
          },
          "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set."
        },
        "flexibleRuntimeSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1:FlexibleRuntimeSettingsResponse",
          "description": "Settings for App Engine flexible runtimes."
        },
        "generatedCustomerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetVersionRequest"
        },
        "handlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:UrlMapResponse"
          },
          "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set."
        },
        "healthCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1:HealthCheckResponse",
          "description": "Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment."
        },
        "inboundServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service."
        },
        "instanceClass": {
          "type": "string",
          "description": "Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling."
        },
        "libraries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:LibraryResponse"
          },
          "description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set."
        },
        "livenessCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1:LivenessCheckResponse",
          "description": "Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instances"
        },
        "manualScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1:ManualScalingResponse",
          "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as \"backends\"."
        },
        "name": {
          "type": "string",
          "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1."
        },
        "network": {
          "$ref": "#/types/google-native:appengine%2Fv1:NetworkResponse",
          "description": "Extra network settings. Only applicable in the App Engine flexible environment."
        },
        "nobuildFilesRegex": {
          "type": "string",
          "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set."
        },
        "readinessCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1:ReadinessCheckResponse",
          "description": "Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation."
        },
        "resources": {
          "$ref": "#/types/google-native:appengine%2Fv1:ResourcesResponse",
          "description": "Machine resources for this version. Only applicable in the App Engine flexible environment."
        },
        "runtime": {
          "type": "string",
          "description": "Desired runtime. Example: python27."
        },
        "runtimeApiVersion": {
          "type": "string",
          "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref"
        },
        "runtimeChannel": {
          "type": "string",
          "description": "The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel."
        },
        "runtimeMainExecutablePath": {
          "type": "string",
          "description": "The path or name of the app's main executable."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "servingStatus": {
          "type": "string",
          "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING."
        },
        "threadsafe": {
          "type": "boolean",
          "description": "Whether multiple requests can be dispatched to this version at once."
        },
        "versionUrl": {
          "type": "string",
          "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\""
        },
        "vm": {
          "type": "boolean",
          "description": "Whether to deploy this version in a container on a virtual machine."
        },
        "vpcAccessConnector": {
          "$ref": "#/types/google-native:appengine%2Fv1:VpcAccessConnectorResponse",
          "description": "Enables VPC connectivity for standard apps."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
          "deprecationMessage": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated."
        }
      },
      "type": "object",
      "required": [
        "apiConfig",
        "appEngineApis",
        "appId",
        "automaticScaling",
        "basicScaling",
        "betaSettings",
        "buildEnvVariables",
        "createTime",
        "createdBy",
        "defaultExpiration",
        "deployment",
        "diskUsageBytes",
        "endpointsApiService",
        "entrypoint",
        "env",
        "envVariables",
        "errorHandlers",
        "flexibleRuntimeSettings",
        "generatedCustomerMetadata",
        "handlers",
        "healthCheck",
        "inboundServices",
        "instanceClass",
        "libraries",
        "livenessCheck",
        "manualScaling",
        "name",
        "network",
        "nobuildFilesRegex",
        "readinessCheck",
        "resources",
        "runtime",
        "runtimeApiVersion",
        "runtimeChannel",
        "runtimeMainExecutablePath",
        "serviceAccount",
        "serviceId",
        "servingStatus",
        "threadsafe",
        "versionUrl",
        "vm",
        "vpcAccessConnector",
        "zones"
      ],
      "inputProperties": {
        "apiConfig": {
          "$ref": "#/types/google-native:appengine%2Fv1:ApiConfigHandler",
          "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/endpoints).Only returned in GET requests if view=FULL is set."
        },
        "appEngineApis": {
          "type": "boolean",
          "description": "Allows App Engine second generation runtimes to access the legacy bundled services."
        },
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "automaticScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1:AutomaticScaling",
          "description": "Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic."
        },
        "basicScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1:BasicScaling",
          "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity."
        },
        "betaSettings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata settings that are supplied to this version to enable beta runtime features."
        },
        "buildEnvVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables available to the build environment.Only returned in GET requests if view=FULL is set."
        },
        "defaultExpiration": {
          "type": "string",
          "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set."
        },
        "deployment": {
          "$ref": "#/types/google-native:appengine%2Fv1:Deployment",
          "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
        },
        "endpointsApiService": {
          "$ref": "#/types/google-native:appengine%2Fv1:EndpointsApiService",
          "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app."
        },
        "entrypoint": {
          "$ref": "#/types/google-native:appengine%2Fv1:Entrypoint",
          "description": "The entrypoint for the application."
        },
        "env": {
          "type": "string",
          "description": "App Engine execution environment for this version.Defaults to standard."
        },
        "envVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set."
        },
        "errorHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:ErrorHandler"
          },
          "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set."
        },
        "flexibleRuntimeSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1:FlexibleRuntimeSettings",
          "description": "Settings for App Engine flexible runtimes."
        },
        "generatedCustomerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetVersionRequest"
        },
        "handlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:UrlMap"
          },
          "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set."
        },
        "healthCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1:HealthCheck",
          "description": "Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment."
        },
        "id": {
          "type": "string",
          "description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\"."
        },
        "inboundServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:VersionInboundServicesItem"
          },
          "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service."
        },
        "instanceClass": {
          "type": "string",
          "description": "Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling."
        },
        "libraries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1:Library"
          },
          "description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set."
        },
        "livenessCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1:LivenessCheck",
          "description": "Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instances"
        },
        "manualScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1:ManualScaling",
          "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as \"backends\"."
        },
        "network": {
          "$ref": "#/types/google-native:appengine%2Fv1:Network",
          "description": "Extra network settings. Only applicable in the App Engine flexible environment."
        },
        "nobuildFilesRegex": {
          "type": "string",
          "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set."
        },
        "readinessCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1:ReadinessCheck",
          "description": "Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation."
        },
        "resources": {
          "$ref": "#/types/google-native:appengine%2Fv1:Resources",
          "description": "Machine resources for this version. Only applicable in the App Engine flexible environment."
        },
        "runtime": {
          "type": "string",
          "description": "Desired runtime. Example: python27."
        },
        "runtimeApiVersion": {
          "type": "string",
          "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref"
        },
        "runtimeChannel": {
          "type": "string",
          "description": "The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel."
        },
        "runtimeMainExecutablePath": {
          "type": "string",
          "description": "The path or name of the app's main executable."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "servingStatus": {
          "$ref": "#/types/google-native:appengine%2Fv1:VersionServingStatus",
          "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING."
        },
        "threadsafe": {
          "type": "boolean",
          "description": "Whether multiple requests can be dispatched to this version at once."
        },
        "vm": {
          "type": "boolean",
          "description": "Whether to deploy this version in a container on a virtual machine."
        },
        "vpcAccessConnector": {
          "$ref": "#/types/google-native:appengine%2Fv1:VpcAccessConnector",
          "description": "Enables VPC connectivity for standard apps."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
          "deprecationMessage": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated."
        }
      },
      "requiredInputs": [
        "appId",
        "serviceId"
      ]
    },
    "google-native:appengine/v1alpha:AuthorizedCertificate": {
      "description": "Uploads the specified SSL certificate.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRawData": {
          "$ref": "#/types/google-native:appengine%2Fv1alpha:CertificateRawDataResponse",
          "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
        },
        "displayName": {
          "type": "string",
          "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate."
        },
        "domainMappingsCount": {
          "type": "integer",
          "description": "Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com."
        },
        "expireTime": {
          "type": "string",
          "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate."
        },
        "managedCertificate": {
          "$ref": "#/types/google-native:appengine%2Fv1alpha:ManagedCertificateResponse",
          "description": "Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty."
        },
        "name": {
          "type": "string",
          "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345."
        },
        "visibleDomainMappings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "certificateRawData",
        "displayName",
        "domainMappingsCount",
        "domainNames",
        "expireTime",
        "managedCertificate",
        "name",
        "visibleDomainMappings"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRawData": {
          "$ref": "#/types/google-native:appengine%2Fv1alpha:CertificateRawData",
          "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
        },
        "displayName": {
          "type": "string",
          "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:appengine/v1alpha:DomainMapping": {
      "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com."
        },
        "noManagedCertificate": {
          "type": "boolean",
          "description": "Whether a managed certificate should be provided by App Engine. If true, a certificate ID must be manaually set in the DomainMapping resource to configure SSL for this domain. If false, a managed certificate will be provisioned and a certificate ID will be automatically populated."
        },
        "overrideStrategy": {
          "type": "string",
          "description": "Whether the domain creation should override any existing mappings for this domain. By default, overrides are rejected."
        },
        "resourceRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1alpha:ResourceRecordResponse"
          },
          "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping."
        },
        "sslSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1alpha:SslSettingsResponse",
          "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "name",
        "resourceRecords",
        "sslSettings"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "id": {
          "type": "string",
          "description": "Relative name of the domain serving the application. Example: example.com."
        },
        "noManagedCertificate": {
          "type": "boolean",
          "description": "Whether a managed certificate should be provided by App Engine. If true, a certificate ID must be manaually set in the DomainMapping resource to configure SSL for this domain. If false, a managed certificate will be provisioned and a certificate ID will be automatically populated."
        },
        "overrideStrategy": {
          "type": "string",
          "description": "Whether the domain creation should override any existing mappings for this domain. By default, overrides are rejected."
        },
        "sslSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1alpha:SslSettings",
          "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:appengine/v1beta:App": {
      "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields: id - The ID of the target Cloud Platform project. location - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/standard/python/console/).\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "authDomain": {
          "type": "string",
          "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account."
        },
        "codeBucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands."
        },
        "databaseType": {
          "type": "string",
          "description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application."
        },
        "defaultBucket": {
          "type": "string",
          "description": "Google Cloud Storage bucket that can be used by this application to store content."
        },
        "defaultCookieExpiration": {
          "type": "string",
          "description": "Cookie expiration policy for this application."
        },
        "defaultHostname": {
          "type": "string",
          "description": "Hostname used to reach this application, as resolved by App Engine."
        },
        "dispatchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:UrlDispatchRuleResponse"
          },
          "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported."
        },
        "featureSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:FeatureSettingsResponse",
          "description": "The feature specific settings to be used in the application."
        },
        "gcrDomain": {
          "type": "string",
          "description": "The Google Container Registry domain used for storing managed build docker images for this application."
        },
        "generatedCustomerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetApplicationRequest"
        },
        "iap": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:IdentityAwareProxyResponse"
        },
        "location": {
          "type": "string",
          "description": "Location from which this application runs. Application instances run out of the data centers in the specified location, which is also where all of the application's end user content is stored.Defaults to us-central.View the list of supported locations (https://cloud.google.com/appengine/docs/locations)."
        },
        "name": {
          "type": "string",
          "description": "Full path to the Application resource in the API. Example: apps/myapp."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account associated with the application. This is the app-level default identity. If no identity provided during create version, Admin API will fallback to this one."
        },
        "servingStatus": {
          "type": "string",
          "description": "Serving status of this application."
        }
      },
      "type": "object",
      "required": [
        "authDomain",
        "codeBucket",
        "databaseType",
        "defaultBucket",
        "defaultCookieExpiration",
        "defaultHostname",
        "dispatchRules",
        "featureSettings",
        "gcrDomain",
        "generatedCustomerMetadata",
        "iap",
        "location",
        "name",
        "serviceAccount",
        "servingStatus"
      ],
      "inputProperties": {
        "authDomain": {
          "type": "string",
          "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account."
        },
        "databaseType": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:AppDatabaseType",
          "description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application."
        },
        "defaultCookieExpiration": {
          "type": "string",
          "description": "Cookie expiration policy for this application."
        },
        "dispatchRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:UrlDispatchRule"
          },
          "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported."
        },
        "featureSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:FeatureSettings",
          "description": "The feature specific settings to be used in the application."
        },
        "generatedCustomerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetApplicationRequest"
        },
        "iap": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:IdentityAwareProxy"
        },
        "id": {
          "type": "string",
          "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp."
        },
        "location": {
          "type": "string",
          "description": "Location from which this application runs. Application instances run out of the data centers in the specified location, which is also where all of the application's end user content is stored.Defaults to us-central.View the list of supported locations (https://cloud.google.com/appengine/docs/locations)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account associated with the application. This is the app-level default identity. If no identity provided during create version, Admin API will fallback to this one."
        },
        "servingStatus": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:AppServingStatus",
          "description": "Serving status of this application."
        }
      }
    },
    "google-native:appengine/v1beta:AuthorizedCertificate": {
      "description": "Uploads the specified SSL certificate.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRawData": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:CertificateRawDataResponse",
          "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
        },
        "displayName": {
          "type": "string",
          "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate."
        },
        "domainMappingsCount": {
          "type": "integer",
          "description": "Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com."
        },
        "expireTime": {
          "type": "string",
          "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate."
        },
        "managedCertificate": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ManagedCertificateResponse",
          "description": "Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty."
        },
        "name": {
          "type": "string",
          "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345."
        },
        "visibleDomainMappings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "certificateRawData",
        "displayName",
        "domainMappingsCount",
        "domainNames",
        "expireTime",
        "managedCertificate",
        "name",
        "visibleDomainMappings"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRawData": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:CertificateRawData",
          "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
        },
        "displayName": {
          "type": "string",
          "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:appengine/v1beta:DomainMapping": {
      "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com."
        },
        "overrideStrategy": {
          "type": "string",
          "description": "Whether the domain creation should override any existing mappings for this domain. By default, overrides are rejected."
        },
        "resourceRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:ResourceRecordResponse"
          },
          "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping."
        },
        "sslSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:SslSettingsResponse",
          "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "name",
        "resourceRecords",
        "sslSettings"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "id": {
          "type": "string",
          "description": "Relative name of the domain serving the application. Example: example.com."
        },
        "overrideStrategy": {
          "type": "string",
          "description": "Whether the domain creation should override any existing mappings for this domain. By default, overrides are rejected."
        },
        "sslSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:SslSettings",
          "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:appengine/v1beta:IngressRule": {
      "description": "Creates a firewall rule for the application.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "action": {
          "type": "string",
          "description": "The action to take on matched requests."
        },
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "An optional string description of this rule. This field has a maximum length of 400 characters."
        },
        "priority": {
          "type": "integer",
          "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user."
        },
        "sourceRange": {
          "type": "string",
          "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32."
        }
      },
      "type": "object",
      "required": [
        "action",
        "appId",
        "description",
        "priority",
        "sourceRange"
      ],
      "inputProperties": {
        "action": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:IngressRuleAction",
          "description": "The action to take on matched requests."
        },
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "An optional string description of this rule. This field has a maximum length of 400 characters."
        },
        "priority": {
          "type": "integer",
          "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user."
        },
        "sourceRange": {
          "type": "string",
          "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:appengine/v1beta:Version": {
      "description": "Deploys code and resource files to a new version.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiConfig": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ApiConfigHandlerResponse",
          "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/endpoints).Only returned in GET requests if view=FULL is set."
        },
        "appEngineApis": {
          "type": "boolean",
          "description": "Allows App Engine second generation runtimes to access the legacy bundled services."
        },
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "automaticScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:AutomaticScalingResponse",
          "description": "Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic."
        },
        "basicScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:BasicScalingResponse",
          "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity."
        },
        "betaSettings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata settings that are supplied to this version to enable beta runtime features."
        },
        "buildEnvVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables available to the build environment.Only returned in GET requests if view=FULL is set."
        },
        "createTime": {
          "type": "string",
          "description": "Time that this version was created."
        },
        "createdBy": {
          "type": "string",
          "description": "Email address of the user who created this version."
        },
        "defaultExpiration": {
          "type": "string",
          "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set."
        },
        "deployment": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:DeploymentResponse",
          "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
        },
        "diskUsageBytes": {
          "type": "string",
          "description": "Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk."
        },
        "endpointsApiService": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:EndpointsApiServiceResponse",
          "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app."
        },
        "entrypoint": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:EntrypointResponse",
          "description": "The entrypoint for the application."
        },
        "env": {
          "type": "string",
          "description": "App Engine execution environment for this version.Defaults to standard."
        },
        "envVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set."
        },
        "errorHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:ErrorHandlerResponse"
          },
          "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set."
        },
        "flexibleRuntimeSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:FlexibleRuntimeSettingsResponse",
          "description": "Settings for App Engine flexible runtimes."
        },
        "generatedCustomerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetVersionRequest"
        },
        "handlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:UrlMapResponse"
          },
          "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set."
        },
        "healthCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:HealthCheckResponse",
          "description": "Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment."
        },
        "inboundServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service."
        },
        "instanceClass": {
          "type": "string",
          "description": "Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling."
        },
        "libraries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:LibraryResponse"
          },
          "description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set."
        },
        "livenessCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:LivenessCheckResponse",
          "description": "Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instances"
        },
        "manualScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ManualScalingResponse",
          "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as \"backends\"."
        },
        "name": {
          "type": "string",
          "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1."
        },
        "network": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:NetworkResponse",
          "description": "Extra network settings. Only applicable in the App Engine flexible environment."
        },
        "nobuildFilesRegex": {
          "type": "string",
          "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set."
        },
        "readinessCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ReadinessCheckResponse",
          "description": "Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation."
        },
        "resources": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ResourcesResponse",
          "description": "Machine resources for this version. Only applicable in the App Engine flexible environment."
        },
        "runtime": {
          "type": "string",
          "description": "Desired runtime. Example: python27."
        },
        "runtimeApiVersion": {
          "type": "string",
          "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref"
        },
        "runtimeChannel": {
          "type": "string",
          "description": "The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel."
        },
        "runtimeMainExecutablePath": {
          "type": "string",
          "description": "The path or name of the app's main executable."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "servingStatus": {
          "type": "string",
          "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING."
        },
        "threadsafe": {
          "type": "boolean",
          "description": "Whether multiple requests can be dispatched to this version at once."
        },
        "versionUrl": {
          "type": "string",
          "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\""
        },
        "vm": {
          "type": "boolean",
          "description": "Whether to deploy this version in a container on a virtual machine."
        },
        "vpcAccessConnector": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:VpcAccessConnectorResponse",
          "description": "Enables VPC connectivity for standard apps."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
          "deprecationMessage": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated."
        }
      },
      "type": "object",
      "required": [
        "apiConfig",
        "appEngineApis",
        "appId",
        "automaticScaling",
        "basicScaling",
        "betaSettings",
        "buildEnvVariables",
        "createTime",
        "createdBy",
        "defaultExpiration",
        "deployment",
        "diskUsageBytes",
        "endpointsApiService",
        "entrypoint",
        "env",
        "envVariables",
        "errorHandlers",
        "flexibleRuntimeSettings",
        "generatedCustomerMetadata",
        "handlers",
        "healthCheck",
        "inboundServices",
        "instanceClass",
        "libraries",
        "livenessCheck",
        "manualScaling",
        "name",
        "network",
        "nobuildFilesRegex",
        "readinessCheck",
        "resources",
        "runtime",
        "runtimeApiVersion",
        "runtimeChannel",
        "runtimeMainExecutablePath",
        "serviceAccount",
        "serviceId",
        "servingStatus",
        "threadsafe",
        "versionUrl",
        "vm",
        "vpcAccessConnector",
        "zones"
      ],
      "inputProperties": {
        "apiConfig": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ApiConfigHandler",
          "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/endpoints).Only returned in GET requests if view=FULL is set."
        },
        "appEngineApis": {
          "type": "boolean",
          "description": "Allows App Engine second generation runtimes to access the legacy bundled services."
        },
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "automaticScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:AutomaticScaling",
          "description": "Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic."
        },
        "basicScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:BasicScaling",
          "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity."
        },
        "betaSettings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata settings that are supplied to this version to enable beta runtime features."
        },
        "buildEnvVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables available to the build environment.Only returned in GET requests if view=FULL is set."
        },
        "defaultExpiration": {
          "type": "string",
          "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set."
        },
        "deployment": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:Deployment",
          "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
        },
        "endpointsApiService": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:EndpointsApiService",
          "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app."
        },
        "entrypoint": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:Entrypoint",
          "description": "The entrypoint for the application."
        },
        "env": {
          "type": "string",
          "description": "App Engine execution environment for this version.Defaults to standard."
        },
        "envVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set."
        },
        "errorHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:ErrorHandler"
          },
          "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set."
        },
        "flexibleRuntimeSettings": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:FlexibleRuntimeSettings",
          "description": "Settings for App Engine flexible runtimes."
        },
        "generatedCustomerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetVersionRequest"
        },
        "handlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:UrlMap"
          },
          "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set."
        },
        "healthCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:HealthCheck",
          "description": "Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment."
        },
        "id": {
          "type": "string",
          "description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\"."
        },
        "inboundServices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:VersionInboundServicesItem"
          },
          "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service."
        },
        "instanceClass": {
          "type": "string",
          "description": "Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling."
        },
        "libraries": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:Library"
          },
          "description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set."
        },
        "livenessCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:LivenessCheck",
          "description": "Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instances"
        },
        "manualScaling": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ManualScaling",
          "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as \"backends\"."
        },
        "network": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:Network",
          "description": "Extra network settings. Only applicable in the App Engine flexible environment."
        },
        "nobuildFilesRegex": {
          "type": "string",
          "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set."
        },
        "readinessCheck": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:ReadinessCheck",
          "description": "Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation."
        },
        "resources": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:Resources",
          "description": "Machine resources for this version. Only applicable in the App Engine flexible environment."
        },
        "runtime": {
          "type": "string",
          "description": "Desired runtime. Example: python27."
        },
        "runtimeApiVersion": {
          "type": "string",
          "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref"
        },
        "runtimeChannel": {
          "type": "string",
          "description": "The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel."
        },
        "runtimeMainExecutablePath": {
          "type": "string",
          "description": "The path or name of the app's main executable."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "servingStatus": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:VersionServingStatus",
          "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING."
        },
        "threadsafe": {
          "type": "boolean",
          "description": "Whether multiple requests can be dispatched to this version at once."
        },
        "vm": {
          "type": "boolean",
          "description": "Whether to deploy this version in a container on a virtual machine."
        },
        "vpcAccessConnector": {
          "$ref": "#/types/google-native:appengine%2Fv1beta:VpcAccessConnector",
          "description": "Enables VPC connectivity for standard apps."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
          "deprecationMessage": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated."
        }
      },
      "requiredInputs": [
        "appId",
        "serviceId"
      ]
    },
    "google-native:artifactregistry/v1:Repository": {
      "description": "Creates a repository. The returned Operation will finish once the repository has been created. Its response will be the created Repository.",
      "properties": {
        "cleanupPolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Cleanup policies for this repository. Cleanup policies indicate when certain package versions can be automatically deleted. Map keys are policy IDs supplied by users during policy creation. They must unique within a repository and be under 128 characters in length."
        },
        "cleanupPolicyDryRun": {
          "type": "boolean",
          "description": "Optional. If true, the cleanup pipeline is prevented from deleting versions in this repository."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the repository was created."
        },
        "description": {
          "type": "string",
          "description": "The user-provided description of the repository."
        },
        "dockerConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:DockerRepositoryConfigResponse",
          "description": "Docker repository config contains repository level configuration for the repositories of docker type."
        },
        "format": {
          "type": "string",
          "description": "Optional. The format of packages that are stored in the repository."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mavenConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:MavenRepositoryConfigResponse",
          "description": "Maven repository config contains repository level configuration for the repositories of maven type."
        },
        "mode": {
          "type": "string",
          "description": "Optional. The mode of the repository."
        },
        "name": {
          "type": "string",
          "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteRepositoryConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:RemoteRepositoryConfigResponse",
          "description": "Configuration specific for a Remote Repository."
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The repository id to use for this repository.",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "If set, the repository satisfies physical zone separation."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The size, in bytes, of all artifact storage in this repository. Repositories that are generally available or in public preview use this to calculate storage costs."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the repository was last updated."
        },
        "virtualRepositoryConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:VirtualRepositoryConfigResponse",
          "description": "Configuration specific for a Virtual Repository."
        }
      },
      "type": "object",
      "required": [
        "cleanupPolicies",
        "cleanupPolicyDryRun",
        "createTime",
        "description",
        "dockerConfig",
        "format",
        "kmsKeyName",
        "labels",
        "location",
        "mavenConfig",
        "mode",
        "name",
        "project",
        "remoteRepositoryConfig",
        "repositoryId",
        "satisfiesPzs",
        "sizeBytes",
        "updateTime",
        "virtualRepositoryConfig"
      ],
      "inputProperties": {
        "cleanupPolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Cleanup policies for this repository. Cleanup policies indicate when certain package versions can be automatically deleted. Map keys are policy IDs supplied by users during policy creation. They must unique within a repository and be under 128 characters in length."
        },
        "cleanupPolicyDryRun": {
          "type": "boolean",
          "description": "Optional. If true, the cleanup pipeline is prevented from deleting versions in this repository."
        },
        "description": {
          "type": "string",
          "description": "The user-provided description of the repository."
        },
        "dockerConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:DockerRepositoryConfig",
          "description": "Docker repository config contains repository level configuration for the repositories of docker type."
        },
        "format": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:RepositoryFormat",
          "description": "Optional. The format of packages that are stored in the repository."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mavenConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:MavenRepositoryConfig",
          "description": "Maven repository config contains repository level configuration for the repositories of maven type."
        },
        "mode": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:RepositoryMode",
          "description": "Optional. The mode of the repository."
        },
        "name": {
          "type": "string",
          "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteRepositoryConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:RemoteRepositoryConfig",
          "description": "Configuration specific for a Remote Repository."
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The repository id to use for this repository.",
          "replaceOnChanges": true
        },
        "virtualRepositoryConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1:VirtualRepositoryConfig",
          "description": "Configuration specific for a Virtual Repository."
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:artifactregistry/v1:RepositoryIamBinding": {
      "description": "Updates the IAM policy for a given resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:artifactregistry/v1:RepositoryIamMember": {
      "description": "Updates the IAM policy for a given resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:artifactregistry/v1:RepositoryIamPolicy": {
      "description": "Updates the IAM policy for a given resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "repositoryId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:artifactregistry/v1:Tag": {
      "description": "Creates a tag.",
      "properties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded."
        },
        "packageId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagId": {
          "type": "string",
          "description": "The tag id to use for this repository."
        },
        "version": {
          "type": "string",
          "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped."
        }
      },
      "type": "object",
      "required": [
        "location",
        "name",
        "packageId",
        "project",
        "repositoryId",
        "version"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded."
        },
        "packageId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagId": {
          "type": "string",
          "description": "The tag id to use for this repository."
        },
        "version": {
          "type": "string",
          "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped."
        }
      },
      "requiredInputs": [
        "packageId",
        "repositoryId"
      ]
    },
    "google-native:artifactregistry/v1beta1:Repository": {
      "description": "Creates a repository. The returned Operation will finish once the repository has been created. Its response will be the created Repository.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the repository was created."
        },
        "description": {
          "type": "string",
          "description": "The user-provided description of the repository."
        },
        "format": {
          "type": "string",
          "description": "Optional. The format of packages that are stored in the repository."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The repository id to use for this repository.",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "If set, the repository satisfies physical zone separation."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The size, in bytes, of all artifact storage in this repository. Repositories that are generally available or in public preview use this to calculate storage costs."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the repository was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "format",
        "kmsKeyName",
        "labels",
        "location",
        "name",
        "project",
        "repositoryId",
        "satisfiesPzs",
        "sizeBytes",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The user-provided description of the repository."
        },
        "format": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta1:RepositoryFormat",
          "description": "Optional. The format of packages that are stored in the repository."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The repository id to use for this repository.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:artifactregistry/v1beta1:RepositoryIamBinding": {
      "description": "Updates the IAM policy for a given resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:artifactregistry/v1beta1:RepositoryIamMember": {
      "description": "Updates the IAM policy for a given resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:artifactregistry/v1beta1:RepositoryIamPolicy": {
      "description": "Updates the IAM policy for a given resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "repositoryId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:artifactregistry/v1beta1:Tag": {
      "description": "Creates a tag.",
      "properties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded."
        },
        "packageId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagId": {
          "type": "string",
          "description": "The tag id to use for this repository."
        },
        "version": {
          "type": "string",
          "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped."
        }
      },
      "type": "object",
      "required": [
        "location",
        "name",
        "packageId",
        "project",
        "repositoryId",
        "version"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded."
        },
        "packageId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagId": {
          "type": "string",
          "description": "The tag id to use for this repository."
        },
        "version": {
          "type": "string",
          "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped."
        }
      },
      "requiredInputs": [
        "packageId",
        "repositoryId"
      ]
    },
    "google-native:artifactregistry/v1beta2:Repository": {
      "description": "Creates a repository. The returned Operation will finish once the repository has been created. Its response will be the created Repository.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the repository was created."
        },
        "description": {
          "type": "string",
          "description": "The user-provided description of the repository."
        },
        "format": {
          "type": "string",
          "description": "Optional. The format of packages that are stored in the repository."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mavenConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:MavenRepositoryConfigResponse",
          "description": "Maven repository config contains repository level configuration for the repositories of maven type."
        },
        "name": {
          "type": "string",
          "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The repository id to use for this repository.",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "If set, the repository satisfies physical zone separation."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The size, in bytes, of all artifact storage in this repository. Repositories that are generally available or in public preview use this to calculate storage costs."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the repository was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "format",
        "kmsKeyName",
        "labels",
        "location",
        "mavenConfig",
        "name",
        "project",
        "repositoryId",
        "satisfiesPzs",
        "sizeBytes",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The user-provided description of the repository."
        },
        "format": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:RepositoryFormat",
          "description": "Optional. The format of packages that are stored in the repository."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mavenConfig": {
          "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:MavenRepositoryConfig",
          "description": "Maven repository config contains repository level configuration for the repositories of maven type."
        },
        "name": {
          "type": "string",
          "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The repository id to use for this repository.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:artifactregistry/v1beta2:RepositoryIamBinding": {
      "description": "Updates the IAM policy for a given resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:artifactregistry/v1beta2:RepositoryIamMember": {
      "description": "Updates the IAM policy for a given resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:artifactregistry/v1beta2:RepositoryIamPolicy": {
      "description": "Updates the IAM policy for a given resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "repositoryId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:artifactregistry/v1beta2:Tag": {
      "description": "Creates a tag.",
      "properties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded."
        },
        "packageId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagId": {
          "type": "string",
          "description": "The tag id to use for this repository."
        },
        "version": {
          "type": "string",
          "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped."
        }
      },
      "type": "object",
      "required": [
        "location",
        "name",
        "packageId",
        "project",
        "repositoryId",
        "version"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded."
        },
        "packageId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagId": {
          "type": "string",
          "description": "The tag id to use for this repository."
        },
        "version": {
          "type": "string",
          "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped."
        }
      },
      "requiredInputs": [
        "packageId",
        "repositoryId"
      ]
    },
    "google-native:assuredworkloads/v1:Workload": {
      "description": "Creates Assured Workload.",
      "properties": {
        "billingAccount": {
          "type": "string",
          "description": "Optional. The billing account used for the resources which are direct children of workload. This billing account is initially associated with the resources created as part of Workload creation. After the initial creation of these resources, the customer can change the assigned billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF`."
        },
        "complianceRegime": {
          "type": "string",
          "description": "Immutable. Compliance Regime associated with this workload."
        },
        "complianceStatus": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadComplianceStatusResponse",
          "description": "Count of active Violations in the Workload."
        },
        "compliantButDisallowedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Urls for services which are compliant for this Assured Workload, but which are currently disallowed by the ResourceUsageRestriction org policy. Invoke RestrictAllowedResources endpoint to allow your project developers to use these services in their environment."
        },
        "createTime": {
          "type": "string",
          "description": "Immutable. The Workload creation timestamp."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name of the Workload. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, and spaces. Example: My Workload"
        },
        "ekmProvisioningResponse": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadEkmProvisioningResponseResponse",
          "description": "Represents the Ekm Provisioning State of the given workload."
        },
        "enableSovereignControls": {
          "type": "boolean",
          "description": "Optional. Indicates the sovereignty status of the given workload. Currently meant to be used by Europe/Canada customers."
        },
        "etag": {
          "type": "string",
          "description": "Optional. ETag of the workload, it is calculated on the basis of the Workload contents. It will be used in Update & Delete operations."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. A identifier associated with the workload and underlying projects which allows for the break down of billing costs for a workload. The value provided for the identifier will add a label to the workload and contained projects with the identifier as the value."
        },
        "kajEnrollmentState": {
          "type": "string",
          "description": "Represents the KAJ enrollment state of the given workload."
        },
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadKMSSettingsResponse",
          "description": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.",
          "deprecationMessage": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels applied to the workload."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partner": {
          "type": "string",
          "description": "Optional. Partner regime associated with this workload."
        },
        "partnerPermissions": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadPartnerPermissionsResponse",
          "description": "Optional. Permissions granted to the AW Partner SA account for the customer workload"
        },
        "provisionedResourcesParent": {
          "type": "string",
          "description": "Input only. The parent resource for the resources managed by this Assured Workload. May be either empty or a folder resource which is a child of the Workload parent. If not specified all resources are created under the parent organization. Format: folders/{folder_id}"
        },
        "resourceMonitoringEnabled": {
          "type": "boolean",
          "description": "Indicates whether resource monitoring is enabled for workload or not. It is true when Resource feed is subscribed to AWM topic and AWM Service Agent Role is binded to AW Service Account for resource Assured workload."
        },
        "resourceSettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadResourceSettingsResponse"
          },
          "description": "Input only. Resource properties that are used to customize workload resources. These properties (such as custom project id) will be used to create workload resources if possible. This field is optional."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadResourceInfoResponse"
          },
          "description": "The resources associated with this workload. These resources will be created when creating the workload. If any of the projects already exist, the workload creation will fail. Always read only."
        },
        "saaEnrollmentResponse": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponseResponse",
          "description": "Represents the SAA enrollment response of the given workload. SAA enrollment response is queried during GetWorkload call. In failure cases, user friendly error message is shown in SAA details page."
        },
        "violationNotificationsEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored. This will always be true while creating the workload."
        }
      },
      "type": "object",
      "required": [
        "billingAccount",
        "complianceRegime",
        "complianceStatus",
        "compliantButDisallowedServices",
        "createTime",
        "displayName",
        "ekmProvisioningResponse",
        "enableSovereignControls",
        "etag",
        "kajEnrollmentState",
        "kmsSettings",
        "labels",
        "location",
        "name",
        "organizationId",
        "partner",
        "partnerPermissions",
        "provisionedResourcesParent",
        "resourceMonitoringEnabled",
        "resourceSettings",
        "resources",
        "saaEnrollmentResponse",
        "violationNotificationsEnabled"
      ],
      "inputProperties": {
        "billingAccount": {
          "type": "string",
          "description": "Optional. The billing account used for the resources which are direct children of workload. This billing account is initially associated with the resources created as part of Workload creation. After the initial creation of these resources, the customer can change the assigned billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF`."
        },
        "complianceRegime": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:WorkloadComplianceRegime",
          "description": "Immutable. Compliance Regime associated with this workload."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name of the Workload. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, and spaces. Example: My Workload"
        },
        "enableSovereignControls": {
          "type": "boolean",
          "description": "Optional. Indicates the sovereignty status of the given workload. Currently meant to be used by Europe/Canada customers."
        },
        "etag": {
          "type": "string",
          "description": "Optional. ETag of the workload, it is calculated on the basis of the Workload contents. It will be used in Update & Delete operations."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. A identifier associated with the workload and underlying projects which allows for the break down of billing costs for a workload. The value provided for the identifier will add a label to the workload and contained projects with the identifier as the value."
        },
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadKMSSettings",
          "description": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.",
          "deprecationMessage": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels applied to the workload."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partner": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:WorkloadPartner",
          "description": "Optional. Partner regime associated with this workload."
        },
        "partnerPermissions": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadPartnerPermissions",
          "description": "Optional. Permissions granted to the AW Partner SA account for the customer workload"
        },
        "provisionedResourcesParent": {
          "type": "string",
          "description": "Input only. The parent resource for the resources managed by this Assured Workload. May be either empty or a folder resource which is a child of the Workload parent. If not specified all resources are created under the parent organization. Format: folders/{folder_id}"
        },
        "resourceSettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadResourceSettings"
          },
          "description": "Input only. Resource properties that are used to customize workload resources. These properties (such as custom project id) will be used to create workload resources if possible. This field is optional."
        },
        "violationNotificationsEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored. This will always be true while creating the workload."
        }
      },
      "requiredInputs": [
        "complianceRegime",
        "displayName",
        "organizationId"
      ]
    },
    "google-native:assuredworkloads/v1beta1:Workload": {
      "description": "Creates Assured Workload.",
      "properties": {
        "billingAccount": {
          "type": "string",
          "description": "Optional. The billing account used for the resources which are direct children of workload. This billing account is initially associated with the resources created as part of Workload creation. After the initial creation of these resources, the customer can change the assigned billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF`."
        },
        "cjisSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettingsResponse",
          "description": "Input only. Immutable. Settings specific to resources needed for CJIS."
        },
        "complianceRegime": {
          "type": "string",
          "description": "Immutable. Compliance Regime associated with this workload."
        },
        "complianceStatus": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadComplianceStatusResponse",
          "description": "Count of active Violations in the Workload."
        },
        "compliantButDisallowedServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Urls for services which are compliant for this Assured Workload, but which are currently disallowed by the ResourceUsageRestriction org policy. Invoke RestrictAllowedResources endpoint to allow your project developers to use these services in their environment."
        },
        "createTime": {
          "type": "string",
          "description": "Immutable. The Workload creation timestamp."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name of the Workload. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, and spaces. Example: My Workload"
        },
        "ekmProvisioningResponse": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadEkmProvisioningResponseResponse",
          "description": "Represents the Ekm Provisioning State of the given workload."
        },
        "enableSovereignControls": {
          "type": "boolean",
          "description": "Optional. Indicates the sovereignty status of the given workload. Currently meant to be used by Europe/Canada customers."
        },
        "etag": {
          "type": "string",
          "description": "Optional. ETag of the workload, it is calculated on the basis of the Workload contents. It will be used in Update & Delete operations."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. A identifier associated with the workload and underlying projects which allows for the break down of billing costs for a workload. The value provided for the identifier will add a label to the workload and contained projects with the identifier as the value."
        },
        "fedrampHighSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettingsResponse",
          "description": "Input only. Immutable. Settings specific to resources needed for FedRAMP High."
        },
        "fedrampModerateSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettingsResponse",
          "description": "Input only. Immutable. Settings specific to resources needed for FedRAMP Moderate."
        },
        "il4Settings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadIL4SettingsResponse",
          "description": "Input only. Immutable. Settings specific to resources needed for IL4."
        },
        "kajEnrollmentState": {
          "type": "string",
          "description": "Represents the KAJ enrollment state of the given workload."
        },
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettingsResponse",
          "description": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.",
          "deprecationMessage": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels applied to the workload."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partner": {
          "type": "string",
          "description": "Optional. Partner regime associated with this workload."
        },
        "partnerPermissions": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissionsResponse",
          "description": "Optional. Permissions granted to the AW Partner SA account for the customer workload"
        },
        "provisionedResourcesParent": {
          "type": "string",
          "description": "Input only. The parent resource for the resources managed by this Assured Workload. May be either empty or a folder resource which is a child of the Workload parent. If not specified all resources are created under the parent organization. Format: folders/{folder_id}"
        },
        "resourceMonitoringEnabled": {
          "type": "boolean",
          "description": "Indicates whether resource monitoring is enabled for workload or not. It is true when Resource feed is subscribed to AWM topic and AWM Service Agent Role is binded to AW Service Account for resource Assured workload."
        },
        "resourceSettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettingsResponse"
          },
          "description": "Input only. Resource properties that are used to customize workload resources. These properties (such as custom project id) will be used to create workload resources if possible. This field is optional."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfoResponse"
          },
          "description": "The resources associated with this workload. These resources will be created when creating the workload. If any of the projects already exist, the workload creation will fail. Always read only."
        },
        "saaEnrollmentResponse": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponseResponse",
          "description": "Represents the SAA enrollment response of the given workload. SAA enrollment response is queried during GetWorkload call. In failure cases, user friendly error message is shown in SAA details page."
        },
        "violationNotificationsEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored. This will always be true while creating the workload."
        }
      },
      "type": "object",
      "required": [
        "billingAccount",
        "cjisSettings",
        "complianceRegime",
        "complianceStatus",
        "compliantButDisallowedServices",
        "createTime",
        "displayName",
        "ekmProvisioningResponse",
        "enableSovereignControls",
        "etag",
        "fedrampHighSettings",
        "fedrampModerateSettings",
        "il4Settings",
        "kajEnrollmentState",
        "kmsSettings",
        "labels",
        "location",
        "name",
        "organizationId",
        "partner",
        "partnerPermissions",
        "provisionedResourcesParent",
        "resourceMonitoringEnabled",
        "resourceSettings",
        "resources",
        "saaEnrollmentResponse",
        "violationNotificationsEnabled"
      ],
      "inputProperties": {
        "billingAccount": {
          "type": "string",
          "description": "Optional. The billing account used for the resources which are direct children of workload. This billing account is initially associated with the resources created as part of Workload creation. After the initial creation of these resources, the customer can change the assigned billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF`."
        },
        "cjisSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings",
          "description": "Input only. Immutable. Settings specific to resources needed for CJIS."
        },
        "complianceRegime": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:WorkloadComplianceRegime",
          "description": "Immutable. Compliance Regime associated with this workload."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name of the Workload. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, and spaces. Example: My Workload"
        },
        "enableSovereignControls": {
          "type": "boolean",
          "description": "Optional. Indicates the sovereignty status of the given workload. Currently meant to be used by Europe/Canada customers."
        },
        "etag": {
          "type": "string",
          "description": "Optional. ETag of the workload, it is calculated on the basis of the Workload contents. It will be used in Update & Delete operations."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. A identifier associated with the workload and underlying projects which allows for the break down of billing costs for a workload. The value provided for the identifier will add a label to the workload and contained projects with the identifier as the value."
        },
        "fedrampHighSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings",
          "description": "Input only. Immutable. Settings specific to resources needed for FedRAMP High."
        },
        "fedrampModerateSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings",
          "description": "Input only. Immutable. Settings specific to resources needed for FedRAMP Moderate."
        },
        "il4Settings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings",
          "description": "Input only. Immutable. Settings specific to resources needed for IL4."
        },
        "kmsSettings": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
          "description": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.",
          "deprecationMessage": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels applied to the workload."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partner": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:WorkloadPartner",
          "description": "Optional. Partner regime associated with this workload."
        },
        "partnerPermissions": {
          "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissions",
          "description": "Optional. Permissions granted to the AW Partner SA account for the customer workload"
        },
        "provisionedResourcesParent": {
          "type": "string",
          "description": "Input only. The parent resource for the resources managed by this Assured Workload. May be either empty or a folder resource which is a child of the Workload parent. If not specified all resources are created under the parent organization. Format: folders/{folder_id}"
        },
        "resourceSettings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings"
          },
          "description": "Input only. Resource properties that are used to customize workload resources. These properties (such as custom project id) will be used to create workload resources if possible. This field is optional."
        },
        "violationNotificationsEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored. This will always be true while creating the workload."
        }
      },
      "requiredInputs": [
        "complianceRegime",
        "displayName",
        "organizationId"
      ]
    },
    "google-native:backupdr/v1:ManagementServer": {
      "description": "Creates a new ManagementServer in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the instance was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the ManagementServer instance (2048 characters or less)."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Server specified ETag for the ManagementServer resource to prevent simultaneous updates from overwiting each other."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata. Labels currently defined: 1. migrate_from_go= If set to true, the MS is created in migration ready mode."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementServerId": {
          "type": "string",
          "description": "Required. The name of the management server to create. The name must be unique for the specified project and location.",
          "replaceOnChanges": true
        },
        "managementUri": {
          "$ref": "#/types/google-native:backupdr%2Fv1:ManagementURIResponse",
          "description": "The hostname or ip address of the exposed AGM endpoints, used by clients to connect to AGM/RD graphical user interface and APIs."
        },
        "name": {
          "type": "string",
          "description": "The resource name."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:backupdr%2Fv1:NetworkConfigResponse"
          },
          "description": "VPC networks to which the ManagementServer instance is connected. For this version, only a single network is supported."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "The OAuth 2.0 client id is required to make API calls to the BackupDR instance API of this ManagementServer. This is the value that should be provided in the ‘aud’ field of the OIDC ID Token (see openid specification https://openid.net/specs/openid-connect-core-1_0.html#IDToken)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The ManagementServer state."
        },
        "type": {
          "type": "string",
          "description": "The type of the ManagementServer resource."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the instance was updated."
        },
        "workforceIdentityBasedManagementUri": {
          "$ref": "#/types/google-native:backupdr%2Fv1:WorkforceIdentityBasedManagementURIResponse",
          "description": "The hostnames of the exposed AGM endpoints for both types of user i.e. 1p and 3p, used to connect AGM/RM UI."
        },
        "workforceIdentityBasedOauth2ClientId": {
          "$ref": "#/types/google-native:backupdr%2Fv1:WorkforceIdentityBasedOAuth2ClientIDResponse",
          "description": "The OAuth client IDs for both types of user i.e. 1p and 3p."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "labels",
        "location",
        "managementServerId",
        "managementUri",
        "name",
        "networks",
        "oauth2ClientId",
        "project",
        "state",
        "type",
        "updateTime",
        "workforceIdentityBasedManagementUri",
        "workforceIdentityBasedOauth2ClientId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. The description of the ManagementServer instance (2048 characters or less)."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Server specified ETag for the ManagementServer resource to prevent simultaneous updates from overwiting each other."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata. Labels currently defined: 1. migrate_from_go= If set to true, the MS is created in migration ready mode."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementServerId": {
          "type": "string",
          "description": "Required. The name of the management server to create. The name must be unique for the specified project and location.",
          "replaceOnChanges": true
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:backupdr%2Fv1:NetworkConfig"
          },
          "description": "VPC networks to which the ManagementServer instance is connected. For this version, only a single network is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:backupdr%2Fv1:ManagementServerType",
          "description": "The type of the ManagementServer resource."
        }
      },
      "requiredInputs": [
        "managementServerId",
        "networks",
        "type"
      ]
    },
    "google-native:backupdr/v1:ManagementServerIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:backupdr/v1:ManagementServerIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:backupdr/v1:ManagementServerIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:backupdr%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:backupdr%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementServerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "managementServerId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:backupdr%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:backupdr%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementServerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "managementServerId"
      ]
    },
    "google-native:baremetalsolution/v2:NfsShare": {
      "description": "Create an NFS share.",
      "properties": {
        "allowedClients": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:AllowedClientResponse"
          },
          "description": "List of allowed access points."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the NFS share."
        },
        "nfsShareId": {
          "type": "string",
          "description": "An identifier for the NFS share, generated by the backend. This field will be deprecated in the future, use `id` instead."
        },
        "pod": {
          "type": "string",
          "description": "Immutable. Pod name. Pod is an independent part of infrastructure. NFSShare can only be connected to the assets (networks, instances) allocated in the same pod."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestedSizeGib": {
          "type": "string",
          "description": "The requested size, in GiB."
        },
        "state": {
          "type": "string",
          "description": "The state of the NFS share."
        },
        "storageType": {
          "type": "string",
          "description": "Immutable. The storage type of the underlying volume."
        },
        "volume": {
          "type": "string",
          "description": "The underlying volume of the share. Created automatically during provisioning."
        }
      },
      "type": "object",
      "required": [
        "allowedClients",
        "labels",
        "location",
        "name",
        "nfsShareId",
        "pod",
        "project",
        "requestedSizeGib",
        "state",
        "storageType",
        "volume"
      ],
      "inputProperties": {
        "allowedClients": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:AllowedClient"
          },
          "description": "List of allowed access points."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the NFS share."
        },
        "pod": {
          "type": "string",
          "description": "Immutable. Pod name. Pod is an independent part of infrastructure. NFSShare can only be connected to the assets (networks, instances) allocated in the same pod."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestedSizeGib": {
          "type": "string",
          "description": "The requested size, in GiB."
        },
        "storageType": {
          "$ref": "#/types/google-native:baremetalsolution%2Fv2:NfsShareStorageType",
          "description": "Immutable. The storage type of the underlying volume."
        }
      }
    },
    "google-native:baremetalsolution/v2:ProvisioningConfig": {
      "description": "Create new ProvisioningConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "cloudConsoleUri": {
          "type": "string",
          "description": "URI to Cloud Console UI view of this provisioning config."
        },
        "customId": {
          "type": "string",
          "description": "Optional. The user-defined identifier of the provisioning config."
        },
        "email": {
          "type": "string",
          "description": "Optional. Email provided to send a confirmation with provisioning config to."
        },
        "handoverServiceAccount": {
          "type": "string",
          "description": "A service account to enable customers to access instance credentials upon handover."
        },
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:InstanceConfigResponse"
          },
          "description": "Instances to be created."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The system-generated name of the provisioning config. This follows the UUID format."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkConfigResponse"
          },
          "description": "Networks to be created."
        },
        "pod": {
          "type": "string",
          "description": "Optional. Pod name. Pod is an independent part of infrastructure. Instance can be connected to the assets (networks, volumes, nfsshares) allocated in the same pod only."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of ProvisioningConfig."
        },
        "statusMessage": {
          "type": "string",
          "description": "Optional status messages associated with the FAILED state."
        },
        "ticketId": {
          "type": "string",
          "description": "A generated ticket id to track provisioning request."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:VolumeConfigResponse"
          },
          "description": "Volumes to be created."
        },
        "vpcScEnabled": {
          "type": "boolean",
          "description": "If true, VPC SC is enabled for the cluster."
        }
      },
      "type": "object",
      "required": [
        "cloudConsoleUri",
        "customId",
        "email",
        "handoverServiceAccount",
        "instances",
        "location",
        "name",
        "networks",
        "pod",
        "project",
        "state",
        "statusMessage",
        "ticketId",
        "updateTime",
        "volumes",
        "vpcScEnabled"
      ],
      "inputProperties": {
        "customId": {
          "type": "string",
          "description": "Optional. The user-defined identifier of the provisioning config."
        },
        "email": {
          "type": "string",
          "description": "Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.",
          "deprecationMessage": "Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages."
        },
        "handoverServiceAccount": {
          "type": "string",
          "description": "A service account to enable customers to access instance credentials upon handover."
        },
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:InstanceConfig"
          },
          "description": "Instances to be created."
        },
        "location": {
          "type": "string",
          "description": "Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkConfig"
          },
          "description": "Networks to be created."
        },
        "pod": {
          "type": "string",
          "description": "Optional. Pod name. Pod is an independent part of infrastructure. Instance can be connected to the assets (networks, volumes, nfsshares) allocated in the same pod only."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "statusMessage": {
          "type": "string",
          "description": "Optional status messages associated with the FAILED state."
        },
        "ticketId": {
          "type": "string",
          "description": "A generated ticket id to track provisioning request."
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:baremetalsolution%2Fv2:VolumeConfig"
          },
          "description": "Volumes to be created."
        },
        "vpcScEnabled": {
          "type": "boolean",
          "description": "If true, VPC SC is enabled for the cluster."
        }
      }
    },
    "google-native:baremetalsolution/v2:Snapshot": {
      "description": "Takes a snapshot of a boot volume. Returns INVALID_ARGUMENT if called for a non-boot volume.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation time of the snapshot."
        },
        "description": {
          "type": "string",
          "description": "The description of the snapshot."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the snapshot."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "storageVolume": {
          "type": "string",
          "description": "The name of the volume which this snapshot belongs to."
        },
        "type": {
          "type": "string",
          "description": "The type of the snapshot which indicates whether it was scheduled or manual/ad-hoc."
        },
        "volumeId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "name",
        "project",
        "storageVolume",
        "type",
        "volumeId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the snapshot."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the snapshot."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "volumeId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "volumeId"
      ]
    },
    "google-native:batch/v1:Job": {
      "description": "Create a Job.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "allocationPolicy": {
          "$ref": "#/types/google-native:batch%2Fv1:AllocationPolicyResponse",
          "description": "Compute resource allocation for all TaskGroups in the Job."
        },
        "createTime": {
          "type": "string",
          "description": "When the Job was created."
        },
        "jobId": {
          "type": "string",
          "description": "ID used to uniquely identify the Job within its parent scope. This field should contain at most 63 characters and must start with lowercase characters. Only lowercase characters, numbers and '-' are accepted. The '-' character cannot be the first or the last one. A system generated ID will be used if the field is not set. The job.name field in the request will be ignored and the created resource name of the Job will be \"{parent}/jobs/{job_id}\"."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for the Job. Labels could be user provided or system generated. For example, \"labels\": { \"department\": \"finance\", \"environment\": \"test\" } You can assign up to 64 labels. [Google Compute Engine label restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) apply. Label names that start with \"goog-\" or \"google-\" are reserved."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logsPolicy": {
          "$ref": "#/types/google-native:batch%2Fv1:LogsPolicyResponse",
          "description": "Log preservation policy for the Job."
        },
        "name": {
          "type": "string",
          "description": "Job name. For example: \"projects/123456/locations/us-central1/jobs/job01\"."
        },
        "notifications": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:JobNotificationResponse"
          },
          "description": "Notification configurations."
        },
        "priority": {
          "type": "string",
          "description": "Priority of the Job. The valid value range is [0, 100). Default value is 0. Higher value indicates higher priority. A job with higher priority value is more likely to run earlier if all other requirements are satisfied."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "status": {
          "$ref": "#/types/google-native:batch%2Fv1:JobStatusResponse",
          "description": "Job status. It is read only for users."
        },
        "taskGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:TaskGroupResponse"
          },
          "description": "TaskGroups in the Job. Only one TaskGroup is supported now."
        },
        "uid": {
          "type": "string",
          "description": "A system generated unique ID (in UUID4 format) for the Job."
        },
        "updateTime": {
          "type": "string",
          "description": "The last time the Job was updated."
        }
      },
      "type": "object",
      "required": [
        "allocationPolicy",
        "createTime",
        "labels",
        "location",
        "logsPolicy",
        "name",
        "notifications",
        "priority",
        "project",
        "status",
        "taskGroups",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "allocationPolicy": {
          "$ref": "#/types/google-native:batch%2Fv1:AllocationPolicy",
          "description": "Compute resource allocation for all TaskGroups in the Job."
        },
        "jobId": {
          "type": "string",
          "description": "ID used to uniquely identify the Job within its parent scope. This field should contain at most 63 characters and must start with lowercase characters. Only lowercase characters, numbers and '-' are accepted. The '-' character cannot be the first or the last one. A system generated ID will be used if the field is not set. The job.name field in the request will be ignored and the created resource name of the Job will be \"{parent}/jobs/{job_id}\"."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for the Job. Labels could be user provided or system generated. For example, \"labels\": { \"department\": \"finance\", \"environment\": \"test\" } You can assign up to 64 labels. [Google Compute Engine label restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) apply. Label names that start with \"goog-\" or \"google-\" are reserved."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logsPolicy": {
          "$ref": "#/types/google-native:batch%2Fv1:LogsPolicy",
          "description": "Log preservation policy for the Job."
        },
        "notifications": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:JobNotification"
          },
          "description": "Notification configurations."
        },
        "priority": {
          "type": "string",
          "description": "Priority of the Job. The valid value range is [0, 100). Default value is 0. Higher value indicates higher priority. A job with higher priority value is more likely to run earlier if all other requirements are satisfied."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "taskGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:batch%2Fv1:TaskGroup"
          },
          "description": "TaskGroups in the Job. Only one TaskGroup is supported now."
        }
      },
      "requiredInputs": [
        "taskGroups"
      ]
    },
    "google-native:beyondcorp/v1:AppConnection": {
      "description": "Creates a new AppConnection in a given project and location.",
      "properties": {
        "appConnectionId": {
          "type": "string",
          "description": "Optional. User-settable AppConnection resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "applicationEndpoint": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionApplicationEndpointResponse",
          "description": "Address of the remote application endpoint for the BeyondCorp AppConnection."
        },
        "connectors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this AppConnection."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppConnection. Cannot exceed 64 characters."
        },
        "gateway": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionGatewayResponse",
          "description": "Optional. Gateway used by the AppConnection."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppConnection. The name is ignored when creating a AppConnection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The current state of the AppConnection."
        },
        "type": {
          "type": "string",
          "description": "The type of network connectivity used by the AppConnection."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the instance generated by the system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        }
      },
      "type": "object",
      "required": [
        "applicationEndpoint",
        "connectors",
        "createTime",
        "displayName",
        "gateway",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "type",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "appConnectionId": {
          "type": "string",
          "description": "Optional. User-settable AppConnection resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "applicationEndpoint": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionApplicationEndpoint",
          "description": "Address of the remote application endpoint for the BeyondCorp AppConnection."
        },
        "connectors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this AppConnection."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppConnection. Cannot exceed 64 characters."
        },
        "gateway": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionGateway",
          "description": "Optional. Gateway used by the AppConnection."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppConnection. The name is ignored when creating a AppConnection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:AppConnectionType",
          "description": "The type of network connectivity used by the AppConnection."
        }
      },
      "requiredInputs": [
        "applicationEndpoint",
        "type"
      ]
    },
    "google-native:beyondcorp/v1:AppConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:AppConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:AppConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "appConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "appConnectionId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "appConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "appConnectionId"
      ]
    },
    "google-native:beyondcorp/v1:AppConnector": {
      "description": "Creates a new AppConnector in a given project and location.",
      "properties": {
        "appConnectorId": {
          "type": "string",
          "description": "Optional. User-settable AppConnector resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppConnector. Cannot exceed 64 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppConnector. The name is ignored when creating a AppConnector."
        },
        "principalInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfoResponse",
          "description": "Principal information about the Identity of the AppConnector."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfoResponse",
          "description": "Optional. Resource info of the connector."
        },
        "state": {
          "type": "string",
          "description": "The current state of the AppConnector."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the instance generated by the system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "labels",
        "location",
        "name",
        "principalInfo",
        "project",
        "resourceInfo",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "appConnectorId": {
          "type": "string",
          "description": "Optional. User-settable AppConnector resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppConnector. Cannot exceed 64 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppConnector. The name is ignored when creating a AppConnector."
        },
        "principalInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfo",
          "description": "Principal information about the Identity of the AppConnector."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfo",
          "description": "Optional. Resource info of the connector."
        }
      },
      "requiredInputs": [
        "principalInfo"
      ]
    },
    "google-native:beyondcorp/v1:AppConnectorIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:AppConnectorIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:AppConnectorIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "appConnectorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "appConnectorId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "appConnectorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "appConnectorId"
      ]
    },
    "google-native:beyondcorp/v1:AppGateway": {
      "description": "Creates a new AppGateway in a given project and location.",
      "properties": {
        "allocatedConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:AllocatedConnectionResponse"
          },
          "description": "A list of connections allocated for the Gateway"
        },
        "appGatewayId": {
          "type": "string",
          "description": "Optional. User-settable AppGateway resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppGateway. Cannot exceed 64 characters."
        },
        "hostType": {
          "type": "string",
          "description": "The type of hosting used by the AppGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppGateway. The name is ignored when creating an AppGateway."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The current state of the AppGateway."
        },
        "type": {
          "type": "string",
          "description": "The type of network connectivity used by the AppGateway."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the instance generated by the system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        },
        "uri": {
          "type": "string",
          "description": "Server-defined URI for this resource."
        }
      },
      "type": "object",
      "required": [
        "allocatedConnections",
        "createTime",
        "displayName",
        "hostType",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "type",
        "uid",
        "updateTime",
        "uri"
      ],
      "inputProperties": {
        "appGatewayId": {
          "type": "string",
          "description": "Optional. User-settable AppGateway resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppGateway. Cannot exceed 64 characters."
        },
        "hostType": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:AppGatewayHostType",
          "description": "The type of hosting used by the AppGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppGateway. The name is ignored when creating an AppGateway."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1:AppGatewayType",
          "description": "The type of network connectivity used by the AppGateway."
        }
      },
      "requiredInputs": [
        "hostType",
        "type"
      ]
    },
    "google-native:beyondcorp/v1:AppGatewayIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:AppGatewayIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:AppGatewayIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "appGatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "appGatewayId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "appGatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "appGatewayId"
      ]
    },
    "google-native:beyondcorp/v1:ClientConnectorServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:ClientConnectorServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:ClientConnectorServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientConnectorServiceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "clientConnectorServiceId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientConnectorServiceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clientConnectorServiceId"
      ]
    },
    "google-native:beyondcorp/v1:ClientGatewayIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:ClientGatewayIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:ClientGatewayIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientGatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "clientGatewayId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientGatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clientGatewayId"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantBrowserDlpRuleIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantBrowserDlpRuleIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantBrowserDlpRuleIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "browserDlpRuleId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "browserDlpRuleId",
        "etag",
        "organizationId",
        "partnerTenantId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "browserDlpRuleId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "browserDlpRuleId",
        "organizationId",
        "partnerTenantId"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "partnerTenantId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId",
        "partnerTenantId"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantProxyConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantProxyConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1:OrganizationPartnerTenantProxyConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "partnerTenantId",
        "proxyConfigId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId",
        "partnerTenantId",
        "proxyConfigId"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnection": {
      "description": "Creates a new AppConnection in a given project and location.",
      "properties": {
        "appConnectionId": {
          "type": "string",
          "description": "Optional. User-settable AppConnection resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "applicationEndpoint": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionApplicationEndpointResponse",
          "description": "Address of the remote application endpoint for the BeyondCorp AppConnection."
        },
        "connectors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this AppConnection."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppConnection. Cannot exceed 64 characters."
        },
        "gateway": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionGatewayResponse",
          "description": "Optional. Gateway used by the AppConnection."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppConnection. The name is ignored when creating a AppConnection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The current state of the AppConnection."
        },
        "type": {
          "type": "string",
          "description": "The type of network connectivity used by the AppConnection."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the instance generated by the system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        }
      },
      "type": "object",
      "required": [
        "applicationEndpoint",
        "connectors",
        "createTime",
        "displayName",
        "gateway",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "type",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "appConnectionId": {
          "type": "string",
          "description": "Optional. User-settable AppConnection resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "applicationEndpoint": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionApplicationEndpoint",
          "description": "Address of the remote application endpoint for the BeyondCorp AppConnection."
        },
        "connectors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this AppConnection."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppConnection. Cannot exceed 64 characters."
        },
        "gateway": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionGateway",
          "description": "Optional. Gateway used by the AppConnection."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppConnection. The name is ignored when creating a AppConnection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:AppConnectionType",
          "description": "The type of network connectivity used by the AppConnection."
        }
      },
      "requiredInputs": [
        "applicationEndpoint",
        "type"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "appConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "appConnectionId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "appConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "appConnectionId"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnector": {
      "description": "Creates a new AppConnector in a given project and location.",
      "properties": {
        "appConnectorId": {
          "type": "string",
          "description": "Optional. User-settable AppConnector resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppConnector. Cannot exceed 64 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppConnector. The name is ignored when creating a AppConnector."
        },
        "principalInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfoResponse",
          "description": "Principal information about the Identity of the AppConnector."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfoResponse",
          "description": "Optional. Resource info of the connector."
        },
        "state": {
          "type": "string",
          "description": "The current state of the AppConnector."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the instance generated by the system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "labels",
        "location",
        "name",
        "principalInfo",
        "project",
        "resourceInfo",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "appConnectorId": {
          "type": "string",
          "description": "Optional. User-settable AppConnector resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppConnector. Cannot exceed 64 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppConnector. The name is ignored when creating a AppConnector."
        },
        "principalInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfo",
          "description": "Principal information about the Identity of the AppConnector."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfo",
          "description": "Optional. Resource info of the connector."
        }
      },
      "requiredInputs": [
        "principalInfo"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnectorIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnectorIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppConnectorIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "appConnectorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "appConnectorId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "appConnectorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "appConnectorId"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppGateway": {
      "description": "Creates a new AppGateway in a given project and location.",
      "properties": {
        "allocatedConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:AllocatedConnectionResponse"
          },
          "description": "A list of connections allocated for the Gateway"
        },
        "appGatewayId": {
          "type": "string",
          "description": "Optional. User-settable AppGateway resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppGateway. Cannot exceed 64 characters."
        },
        "hostType": {
          "type": "string",
          "description": "The type of hosting used by the AppGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppGateway. The name is ignored when creating an AppGateway."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The current state of the AppGateway."
        },
        "type": {
          "type": "string",
          "description": "The type of network connectivity used by the AppGateway."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the instance generated by the system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        },
        "uri": {
          "type": "string",
          "description": "Server-defined URI for this resource."
        }
      },
      "type": "object",
      "required": [
        "allocatedConnections",
        "createTime",
        "displayName",
        "hostType",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "type",
        "uid",
        "updateTime",
        "uri"
      ],
      "inputProperties": {
        "appGatewayId": {
          "type": "string",
          "description": "Optional. User-settable AppGateway resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the AppGateway. Cannot exceed 64 characters."
        },
        "hostType": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:AppGatewayHostType",
          "description": "The type of hosting used by the AppGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the AppGateway. The name is ignored when creating an AppGateway."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:AppGatewayType",
          "description": "The type of network connectivity used by the AppGateway."
        }
      },
      "requiredInputs": [
        "hostType",
        "type"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppGatewayIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppGatewayIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:AppGatewayIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "appGatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "appGatewayId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "appGatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "appGatewayId"
      ]
    },
    "google-native:beyondcorp/v1alpha:ApplicationDomainIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ApplicationDomainIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ApplicationDomainIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "applicationDomainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "applicationDomainId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "applicationDomainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "applicationDomainId"
      ]
    },
    "google-native:beyondcorp/v1alpha:ApplicationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ApplicationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ApplicationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "applicationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "applicationId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "applicationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "applicationId"
      ]
    },
    "google-native:beyondcorp/v1alpha:BrowserDlpRule": {
      "description": "Creates a new BrowserDlpRule in a given organization and PartnerTenant.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "group": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaGroupResponse",
          "description": "The group to which this Rule should be applied to."
        },
        "name": {
          "type": "string",
          "description": "Unique resource name. The name is ignored when creating BrowserDlpRule."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "ruleSetting": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRuleSettingResponse",
          "description": "The policy settings to apply."
        }
      },
      "type": "object",
      "required": [
        "group",
        "name",
        "organizationId",
        "partnerTenantId",
        "ruleSetting"
      ],
      "inputProperties": {
        "group": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaGroup",
          "description": "The group to which this Rule should be applied to."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "ruleSetting": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRuleSetting",
          "description": "The policy settings to apply."
        }
      },
      "requiredInputs": [
        "group",
        "organizationId",
        "partnerTenantId",
        "ruleSetting"
      ]
    },
    "google-native:beyondcorp/v1alpha:ClientConnectorServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ClientConnectorServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ClientConnectorServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientConnectorServiceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "clientConnectorServiceId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientConnectorServiceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clientConnectorServiceId"
      ]
    },
    "google-native:beyondcorp/v1alpha:ClientGatewayIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ClientGatewayIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ClientGatewayIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientGatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "clientGatewayId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientGatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clientGatewayId"
      ]
    },
    "google-native:beyondcorp/v1alpha:Connection": {
      "description": "Creates a new Connection in a given project and location.",
      "properties": {
        "applicationEndpoint": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ApplicationEndpointResponse",
          "description": "Address of the remote application endpoint for the BeyondCorp Connection."
        },
        "connectionId": {
          "type": "string",
          "description": "Optional. User-settable connection resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "connectors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this Connection."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the connection. Cannot exceed 64 characters."
        },
        "gateway": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GatewayResponse",
          "description": "Optional. Gateway used by the connection."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the connection. The name is ignored when creating a connection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The current state of the connection."
        },
        "type": {
          "type": "string",
          "description": "The type of network connectivity used by the connection."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the instance generated by the system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        }
      },
      "type": "object",
      "required": [
        "applicationEndpoint",
        "connectors",
        "createTime",
        "displayName",
        "gateway",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "type",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "applicationEndpoint": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ApplicationEndpoint",
          "description": "Address of the remote application endpoint for the BeyondCorp Connection."
        },
        "connectionId": {
          "type": "string",
          "description": "Optional. User-settable connection resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "connectors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this Connection."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the connection. Cannot exceed 64 characters."
        },
        "gateway": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:Gateway",
          "description": "Optional. Gateway used by the connection."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the connection. The name is ignored when creating a connection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ConnectionType",
          "description": "The type of network connectivity used by the connection."
        }
      },
      "requiredInputs": [
        "applicationEndpoint",
        "type"
      ]
    },
    "google-native:beyondcorp/v1alpha:ConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectionId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectionId"
      ]
    },
    "google-native:beyondcorp/v1alpha:Connector": {
      "description": "Creates a new Connector in a given project and location.",
      "properties": {
        "connectorId": {
          "type": "string",
          "description": "Optional. User-settable connector resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the connector. Cannot exceed 64 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the connector. The name is ignored when creating a connector."
        },
        "principalInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:PrincipalInfoResponse",
          "description": "Principal information about the Identity of the connector."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ResourceInfoResponse",
          "description": "Optional. Resource info of the connector."
        },
        "state": {
          "type": "string",
          "description": "The current state of the connector."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the instance generated by the system."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "labels",
        "location",
        "name",
        "principalInfo",
        "project",
        "resourceInfo",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "connectorId": {
          "type": "string",
          "description": "Optional. User-settable connector resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary user-provided name for the connector. Cannot exceed 64 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the connector. The name is ignored when creating a connector."
        },
        "principalInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:PrincipalInfo",
          "description": "Principal information about the Identity of the connector."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ResourceInfo",
          "description": "Optional. Resource info of the connector."
        }
      },
      "requiredInputs": [
        "principalInfo"
      ]
    },
    "google-native:beyondcorp/v1alpha:ConnectorIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ConnectorIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:ConnectorIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectorId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectorId"
      ]
    },
    "google-native:beyondcorp/v1alpha:NetConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:NetConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:NetConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "netConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "netConnectionId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "netConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "netConnectionId"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantBrowserDlpRuleIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantBrowserDlpRuleIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantBrowserDlpRuleIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "browserDlpRuleId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "browserDlpRuleId",
        "etag",
        "organizationId",
        "partnerTenantId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "browserDlpRuleId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "browserDlpRuleId",
        "organizationId",
        "partnerTenantId"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "partnerTenantId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId",
        "partnerTenantId"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantProxyConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantProxyConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:beyondcorp/v1alpha:OrganizationPartnerTenantProxyConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "partnerTenantId",
        "proxyConfigId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId",
        "partnerTenantId",
        "proxyConfigId"
      ]
    },
    "google-native:beyondcorp/v1alpha:PartnerTenant": {
      "description": "Creates a new BeyondCorp Enterprise partnerTenant in a given organization and can only be called by onboarded BeyondCorp Enterprise partner.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary caller-provided name for the PartnerTenant. Cannot exceed 64 characters."
        },
        "group": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaGroupResponse",
          "description": "Optional. Group information for the users enabled to use the partnerTenant. If the group information is not provided then the partnerTenant will be enabled for all users."
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the PartnerTenant. The name is ignored when creating PartnerTenant."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerMetadata": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerMetadataResponse",
          "description": "Optional. Metadata provided by the Partner associated with PartnerTenant."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "group",
        "name",
        "organizationId",
        "partnerMetadata",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary caller-provided name for the PartnerTenant. Cannot exceed 64 characters."
        },
        "group": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaGroup",
          "description": "Optional. Group information for the users enabled to use the partnerTenant. If the group information is not provided then the partnerTenant will be enabled for all users."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerMetadata": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerMetadata",
          "description": "Optional. Metadata provided by the Partner associated with PartnerTenant."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:beyondcorp/v1alpha:ProxyConfig": {
      "description": "Creates a new BeyondCorp Enterprise ProxyConfig in a given organization and PartnerTenant. Can only be called by on onboarded Beyondcorp Enterprise partner.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the resource was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary caller-provided name for the ProxyConfig. Cannot exceed 64 characters."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaEncryptionInfoResponse",
          "description": "Optional. Information to encrypt JWT for the proxy server."
        },
        "name": {
          "type": "string",
          "description": "ProxyConfig resource name."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyUri": {
          "type": "string",
          "description": "The URI of the proxy server."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routingInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRoutingInfoResponse",
          "description": "Routing info to direct traffic to the proxy server."
        },
        "transportInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaTransportInfoResponse",
          "description": "Transport layer information to verify for the proxy server."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the resource was last modified."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "encryptionInfo",
        "name",
        "organizationId",
        "partnerTenantId",
        "proxyUri",
        "routingInfo",
        "transportInfo",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Optional. An arbitrary caller-provided name for the ProxyConfig. Cannot exceed 64 characters."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaEncryptionInfo",
          "description": "Optional. Information to encrypt JWT for the proxy server."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "partnerTenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyUri": {
          "type": "string",
          "description": "The URI of the proxy server."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routingInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRoutingInfo",
          "description": "Routing info to direct traffic to the proxy server."
        },
        "transportInfo": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaTransportInfo",
          "description": "Transport layer information to verify for the proxy server."
        }
      },
      "requiredInputs": [
        "organizationId",
        "partnerTenantId",
        "proxyUri",
        "routingInfo",
        "transportInfo"
      ]
    },
    "google-native:beyondcorp/v1alpha:Subscription": {
      "description": "Creates a new BeyondCorp Enterprise Subscription in a given organization. Location will always be global as BeyondCorp subscriptions are per organization.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "autoRenewEnabled": {
          "type": "boolean",
          "description": "Represents that, if subscription will renew or end when the term ends."
        },
        "createTime": {
          "type": "string",
          "description": "Create time of the subscription."
        },
        "endTime": {
          "type": "string",
          "description": "End time of the subscription."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the Subscription. The name is ignored when creating a subscription."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "seatCount": {
          "type": "string",
          "description": "Optional. Number of seats in the subscription."
        },
        "sku": {
          "type": "string",
          "description": "SKU of subscription."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of the subscription."
        },
        "state": {
          "type": "string",
          "description": "The current state of the subscription."
        },
        "type": {
          "type": "string",
          "description": "Type of subscription."
        }
      },
      "type": "object",
      "required": [
        "autoRenewEnabled",
        "createTime",
        "endTime",
        "location",
        "name",
        "organizationId",
        "seatCount",
        "sku",
        "startTime",
        "state",
        "type"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name of the Subscription. The name is ignored when creating a subscription."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "seatCount": {
          "type": "string",
          "description": "Optional. Number of seats in the subscription."
        },
        "sku": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:SubscriptionSku",
          "description": "SKU of subscription."
        },
        "type": {
          "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:SubscriptionType",
          "description": "Type of subscription."
        }
      },
      "requiredInputs": [
        "organizationId",
        "sku",
        "type"
      ]
    },
    "google-native:biglake/v1:Catalog": {
      "description": "Creates a new catalog.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "catalogId": {
          "type": "string",
          "description": "Required. The ID to use for the catalog, which will become the final component of the catalog's resource name.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation time of the catalog."
        },
        "deleteTime": {
          "type": "string",
          "description": "The deletion time of the catalog. Only set after the catalog is deleted."
        },
        "expireTime": {
          "type": "string",
          "description": "The time when this catalog is considered expired. Only set after the catalog is deleted."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name. Format: projects/{project_id_or_number}/locations/{location_id}/catalogs/{catalog_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last modification time of the catalog."
        }
      },
      "type": "object",
      "required": [
        "catalogId",
        "createTime",
        "deleteTime",
        "expireTime",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "description": "Required. The ID to use for the catalog, which will become the final component of the catalog's resource name.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "catalogId"
      ]
    },
    "google-native:biglake/v1:Database": {
      "description": "Creates a new database.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation time of the database."
        },
        "databaseId": {
          "type": "string",
          "description": "Required. The ID to use for the database, which will become the final component of the database's resource name.",
          "replaceOnChanges": true
        },
        "deleteTime": {
          "type": "string",
          "description": "The deletion time of the database. Only set after the database is deleted."
        },
        "expireTime": {
          "type": "string",
          "description": "The time when this database is considered expired. Only set after the database is deleted."
        },
        "hiveOptions": {
          "$ref": "#/types/google-native:biglake%2Fv1:HiveDatabaseOptionsResponse",
          "description": "Options of a Hive database."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name. Format: projects/{project_id_or_number}/locations/{location_id}/catalogs/{catalog_id}/databases/{database_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The database type."
        },
        "updateTime": {
          "type": "string",
          "description": "The last modification time of the database."
        }
      },
      "type": "object",
      "required": [
        "catalogId",
        "createTime",
        "databaseId",
        "deleteTime",
        "expireTime",
        "hiveOptions",
        "location",
        "name",
        "project",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "description": "Required. The ID to use for the database, which will become the final component of the database's resource name.",
          "replaceOnChanges": true
        },
        "hiveOptions": {
          "$ref": "#/types/google-native:biglake%2Fv1:HiveDatabaseOptions",
          "description": "Options of a Hive database."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:biglake%2Fv1:DatabaseType",
          "description": "The database type."
        }
      },
      "requiredInputs": [
        "catalogId",
        "databaseId"
      ]
    },
    "google-native:biglake/v1:Table": {
      "description": "Creates a new table.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation time of the table."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "deleteTime": {
          "type": "string",
          "description": "The deletion time of the table. Only set after the table is deleted."
        },
        "etag": {
          "type": "string",
          "description": "The checksum of a table object computed by the server based on the value of other fields. It may be sent on update requests to ensure the client has an up-to-date value before proceeding. It is only checked for update table operations."
        },
        "expireTime": {
          "type": "string",
          "description": "The time when this table is considered expired. Only set after the table is deleted."
        },
        "hiveOptions": {
          "$ref": "#/types/google-native:biglake%2Fv1:HiveTableOptionsResponse",
          "description": "Options of a Hive table."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name. Format: projects/{project_id_or_number}/locations/{location_id}/catalogs/{catalog_id}/databases/{database_id}/tables/{table_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "description": "Required. The ID to use for the table, which will become the final component of the table's resource name.",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The table type."
        },
        "updateTime": {
          "type": "string",
          "description": "The last modification time of the table."
        }
      },
      "type": "object",
      "required": [
        "catalogId",
        "createTime",
        "databaseId",
        "deleteTime",
        "etag",
        "expireTime",
        "hiveOptions",
        "location",
        "name",
        "project",
        "tableId",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "The checksum of a table object computed by the server based on the value of other fields. It may be sent on update requests to ensure the client has an up-to-date value before proceeding. It is only checked for update table operations."
        },
        "hiveOptions": {
          "$ref": "#/types/google-native:biglake%2Fv1:HiveTableOptions",
          "description": "Options of a Hive table."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "description": "Required. The ID to use for the table, which will become the final component of the table's resource name.",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:biglake%2Fv1:TableType",
          "description": "The table type."
        }
      },
      "requiredInputs": [
        "catalogId",
        "databaseId",
        "tableId"
      ]
    },
    "google-native:bigquery/v2:Dataset": {
      "description": "Creates a new empty dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "access": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:DatasetAccessItemResponse"
          },
          "description": "[Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;"
        },
        "creationTime": {
          "type": "string",
          "description": "The time when this dataset was created, in milliseconds since the epoch."
        },
        "datasetReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetReferenceResponse",
          "description": "[Required] A reference that identifies the dataset."
        },
        "defaultCollation": {
          "type": "string",
          "description": "The default collation of the dataset."
        },
        "defaultEncryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfigurationResponse"
        },
        "defaultPartitionExpirationMs": {
          "type": "string",
          "description": "[Optional] The default partition expiration for all partitioned tables in the dataset, in milliseconds. Once this property is set, all newly-created partitioned tables in the dataset will have an expirationMs property in the timePartitioning settings set to this value, and changing the value will only affect new tables, not existing ones. The storage in a partition will have an expiration time of its partition time plus this value. Setting this property overrides the use of defaultTableExpirationMs for partitioned tables: only one of defaultTableExpirationMs and defaultPartitionExpirationMs will be used for any new partitioned table. If you provide an explicit timePartitioning.expirationMs when creating or updating a partitioned table, that value takes precedence over the default partition expiration time indicated by this property."
        },
        "defaultRoundingMode": {
          "type": "string",
          "description": "The default rounding mode of the dataset."
        },
        "defaultTableExpirationMs": {
          "type": "string",
          "description": "[Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property."
        },
        "description": {
          "type": "string",
          "description": "[Optional] A user-friendly description of the dataset."
        },
        "etag": {
          "type": "string",
          "description": "A hash of the resource."
        },
        "externalDatasetReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ExternalDatasetReferenceResponse",
          "description": "[Optional] Information about the external metadata storage where the dataset is defined. Filled out when the dataset type is EXTERNAL."
        },
        "friendlyName": {
          "type": "string",
          "description": "[Optional] A descriptive name for the dataset."
        },
        "isCaseInsensitive": {
          "type": "boolean",
          "description": "[Optional] Indicates if table names are case insensitive in the dataset."
        },
        "kind": {
          "type": "string",
          "description": "The resource type."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this dataset. You can use these to organize and group your datasets. You can set this property when inserting or updating a dataset. See Creating and Updating Dataset Labels for more information."
        },
        "lastModifiedTime": {
          "type": "string",
          "description": "The date when this dataset or any of its tables was last modified, in milliseconds since the epoch."
        },
        "location": {
          "type": "string",
          "description": "The geographic location where the dataset should reside. The default value is US. See details at https://cloud.google.com/bigquery/docs/locations."
        },
        "maxTimeTravelHours": {
          "type": "string",
          "description": "[Optional] Number of hours for the max time travel for all tables in the dataset."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource."
        },
        "storageBillingModel": {
          "type": "string",
          "description": "[Optional] Storage billing model to be used for all tables in the dataset. Can be set to PHYSICAL. Default is LOGICAL."
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:DatasetTagsItemResponse"
          },
          "description": "[Optional]The tags associated with this dataset. Tag keys are globally unique."
        }
      },
      "type": "object",
      "required": [
        "access",
        "creationTime",
        "datasetReference",
        "defaultCollation",
        "defaultEncryptionConfiguration",
        "defaultPartitionExpirationMs",
        "defaultRoundingMode",
        "defaultTableExpirationMs",
        "description",
        "etag",
        "externalDatasetReference",
        "friendlyName",
        "isCaseInsensitive",
        "kind",
        "labels",
        "lastModifiedTime",
        "location",
        "maxTimeTravelHours",
        "project",
        "satisfiesPzs",
        "selfLink",
        "storageBillingModel",
        "tags"
      ],
      "inputProperties": {
        "access": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:DatasetAccessItem"
          },
          "description": "[Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;"
        },
        "datasetReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:DatasetReference",
          "description": "[Required] A reference that identifies the dataset."
        },
        "defaultEncryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfiguration"
        },
        "defaultPartitionExpirationMs": {
          "type": "string",
          "description": "[Optional] The default partition expiration for all partitioned tables in the dataset, in milliseconds. Once this property is set, all newly-created partitioned tables in the dataset will have an expirationMs property in the timePartitioning settings set to this value, and changing the value will only affect new tables, not existing ones. The storage in a partition will have an expiration time of its partition time plus this value. Setting this property overrides the use of defaultTableExpirationMs for partitioned tables: only one of defaultTableExpirationMs and defaultPartitionExpirationMs will be used for any new partitioned table. If you provide an explicit timePartitioning.expirationMs when creating or updating a partitioned table, that value takes precedence over the default partition expiration time indicated by this property."
        },
        "defaultTableExpirationMs": {
          "type": "string",
          "description": "[Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property."
        },
        "description": {
          "type": "string",
          "description": "[Optional] A user-friendly description of the dataset."
        },
        "externalDatasetReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ExternalDatasetReference",
          "description": "[Optional] Information about the external metadata storage where the dataset is defined. Filled out when the dataset type is EXTERNAL."
        },
        "friendlyName": {
          "type": "string",
          "description": "[Optional] A descriptive name for the dataset."
        },
        "isCaseInsensitive": {
          "type": "boolean",
          "description": "[Optional] Indicates if table names are case insensitive in the dataset."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this dataset. You can use these to organize and group your datasets. You can set this property when inserting or updating a dataset. See Creating and Updating Dataset Labels for more information."
        },
        "location": {
          "type": "string",
          "description": "The geographic location where the dataset should reside. The default value is US. See details at https://cloud.google.com/bigquery/docs/locations."
        },
        "maxTimeTravelHours": {
          "type": "string",
          "description": "[Optional] Number of hours for the max time travel for all tables in the dataset."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "storageBillingModel": {
          "type": "string",
          "description": "[Optional] Storage billing model to be used for all tables in the dataset. Can be set to PHYSICAL. Default is LOGICAL."
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:DatasetTagsItem"
          },
          "description": "[Optional]The tags associated with this dataset. Tag keys are globally unique."
        }
      }
    },
    "google-native:bigquery/v2:Job": {
      "description": "Starts a new asynchronous job. Requires the Can View project role.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "configuration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationResponse",
          "description": "[Required] Describes the job configuration."
        },
        "etag": {
          "type": "string",
          "description": "A hash of this resource."
        },
        "jobCreationReason": {
          "$ref": "pulumi.json#/Any",
          "description": "If set, it provides the reason why a Job was created. If not set, it should be treated as the default: REQUESTED. This feature is not yet available. Jobs will always be created."
        },
        "jobReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobReferenceResponse",
          "description": "[Optional] Reference describing the unique-per-user name of the job."
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "A URL that can be used to access this resource again."
        },
        "statistics": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobStatisticsResponse",
          "description": "Information about the job, including starting time and ending time of the job."
        },
        "status": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobStatusResponse",
          "description": "The status of this job. Examine this value when polling an asynchronous job to see if the job is complete."
        },
        "userEmail": {
          "type": "string",
          "description": "Email address of the user who ran the job."
        }
      },
      "type": "object",
      "required": [
        "configuration",
        "etag",
        "jobCreationReason",
        "jobReference",
        "kind",
        "project",
        "selfLink",
        "statistics",
        "status",
        "userEmail"
      ],
      "inputProperties": {
        "configuration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobConfiguration",
          "description": "[Required] Describes the job configuration."
        },
        "jobReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:JobReference",
          "description": "[Optional] Reference describing the unique-per-user name of the job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "source": {
          "$ref": "pulumi.json#/Asset"
        }
      }
    },
    "google-native:bigquery/v2:Routine": {
      "description": "Creates a new routine in the dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "arguments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ArgumentResponse"
          },
          "description": "Optional."
        },
        "creationTime": {
          "type": "string",
          "description": "The time when this routine was created, in milliseconds since the epoch."
        },
        "dataGovernanceType": {
          "type": "string",
          "description": "Optional. If set to `DATA_MASKING`, the function is validated and made available as a masking function. For more information, see [Create custom masking routines](https://cloud.google.com/bigquery/docs/user-defined-functions#custom-mask)."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "definitionBody": {
          "type": "string",
          "description": "The body of the routine. For functions, this is the expression in the AS clause. If language=SQL, it is the substring inside (but excluding) the parentheses. For example, for the function created with the following statement: `CREATE FUNCTION JoinLines(x string, y string) as (concat(x, \"\\n\", y))` The definition_body is `concat(x, \"\\n\", y)` (\\n is not replaced with linebreak). If language=JAVASCRIPT, it is the evaluated string in the AS clause. For example, for the function created with the following statement: `CREATE FUNCTION f() RETURNS STRING LANGUAGE js AS 'return \"\\n\";\\n'` The definition_body is `return \"\\n\";\\n` Note that both \\n are replaced with linebreaks."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the routine, if defined."
        },
        "determinismLevel": {
          "type": "string",
          "description": "Optional. The determinism level of the JavaScript UDF, if defined."
        },
        "etag": {
          "type": "string",
          "description": "A hash of this resource."
        },
        "importedLibraries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If language = \"JAVASCRIPT\", this field stores the path of the imported JAVASCRIPT libraries."
        },
        "language": {
          "type": "string",
          "description": "Optional. Defaults to \"SQL\" if remote_function_options field is absent, not set otherwise."
        },
        "lastModifiedTime": {
          "type": "string",
          "description": "The time when this routine was last modified, in milliseconds since the epoch."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteFunctionOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RemoteFunctionOptionsResponse",
          "description": "Optional. Remote function specific options."
        },
        "returnTableType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlTableTypeResponse",
          "description": "Optional. Can be set only if routine_type = \"TABLE_VALUED_FUNCTION\". If absent, the return table type is inferred from definition_body at query time in each query that references this routine. If present, then the columns in the evaluated table result will be cast to match the column types specified in return table type, at query time."
        },
        "returnType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataTypeResponse",
          "description": "Optional if language = \"SQL\"; required otherwise. Cannot be set if routine_type = \"TABLE_VALUED_FUNCTION\". If absent, the return type is inferred from definition_body at query time in each query that references this routine. If present, then the evaluated result will be cast to the specified returned type at query time. For example, for the functions created with the following statements: * `CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);` * `CREATE FUNCTION Increment(x FLOAT64) AS (Add(x, 1));` * `CREATE FUNCTION Decrement(x FLOAT64) RETURNS FLOAT64 AS (Add(x, -1));` The return_type is `{type_kind: \"FLOAT64\"}` for `Add` and `Decrement`, and is absent for `Increment` (inferred as FLOAT64 at query time). Suppose the function `Add` is replaced by `CREATE OR REPLACE FUNCTION Add(x INT64, y INT64) AS (x + y);` Then the inferred return type of `Increment` is automatically changed to INT64 at query time, while the return type of `Decrement` remains FLOAT64."
        },
        "routineReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineReferenceResponse",
          "description": "Reference describing the ID of this routine."
        },
        "routineType": {
          "type": "string",
          "description": "The type of routine."
        },
        "securityMode": {
          "type": "string",
          "description": "Optional. The security mode of the routine, if defined. If not defined, the security mode is automatically determined from the routine's configuration."
        },
        "sparkOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:SparkOptionsResponse",
          "description": "Optional. Spark specific options."
        },
        "strictMode": {
          "type": "boolean",
          "description": "Optional. Can be set for procedures only. If true (default), the definition body will be validated in the creation and the updates of the procedure. For procedures with an argument of ANY TYPE, the definition body validtion is not supported at creation/update time, and thus this field must be set to false explicitly."
        }
      },
      "type": "object",
      "required": [
        "arguments",
        "creationTime",
        "dataGovernanceType",
        "datasetId",
        "definitionBody",
        "description",
        "determinismLevel",
        "etag",
        "importedLibraries",
        "language",
        "lastModifiedTime",
        "project",
        "remoteFunctionOptions",
        "returnTableType",
        "returnType",
        "routineReference",
        "routineType",
        "securityMode",
        "sparkOptions",
        "strictMode"
      ],
      "inputProperties": {
        "arguments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:Argument"
          },
          "description": "Optional."
        },
        "dataGovernanceType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineDataGovernanceType",
          "description": "Optional. If set to `DATA_MASKING`, the function is validated and made available as a masking function. For more information, see [Create custom masking routines](https://cloud.google.com/bigquery/docs/user-defined-functions#custom-mask)."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "definitionBody": {
          "type": "string",
          "description": "The body of the routine. For functions, this is the expression in the AS clause. If language=SQL, it is the substring inside (but excluding) the parentheses. For example, for the function created with the following statement: `CREATE FUNCTION JoinLines(x string, y string) as (concat(x, \"\\n\", y))` The definition_body is `concat(x, \"\\n\", y)` (\\n is not replaced with linebreak). If language=JAVASCRIPT, it is the evaluated string in the AS clause. For example, for the function created with the following statement: `CREATE FUNCTION f() RETURNS STRING LANGUAGE js AS 'return \"\\n\";\\n'` The definition_body is `return \"\\n\";\\n` Note that both \\n are replaced with linebreaks."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the routine, if defined."
        },
        "determinismLevel": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineDeterminismLevel",
          "description": "Optional. The determinism level of the JavaScript UDF, if defined."
        },
        "importedLibraries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. If language = \"JAVASCRIPT\", this field stores the path of the imported JAVASCRIPT libraries."
        },
        "language": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineLanguage",
          "description": "Optional. Defaults to \"SQL\" if remote_function_options field is absent, not set otherwise."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteFunctionOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RemoteFunctionOptions",
          "description": "Optional. Remote function specific options."
        },
        "returnTableType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlTableType",
          "description": "Optional. Can be set only if routine_type = \"TABLE_VALUED_FUNCTION\". If absent, the return table type is inferred from definition_body at query time in each query that references this routine. If present, then the columns in the evaluated table result will be cast to match the column types specified in return table type, at query time."
        },
        "returnType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataType",
          "description": "Optional if language = \"SQL\"; required otherwise. Cannot be set if routine_type = \"TABLE_VALUED_FUNCTION\". If absent, the return type is inferred from definition_body at query time in each query that references this routine. If present, then the evaluated result will be cast to the specified returned type at query time. For example, for the functions created with the following statements: * `CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);` * `CREATE FUNCTION Increment(x FLOAT64) AS (Add(x, 1));` * `CREATE FUNCTION Decrement(x FLOAT64) RETURNS FLOAT64 AS (Add(x, -1));` The return_type is `{type_kind: \"FLOAT64\"}` for `Add` and `Decrement`, and is absent for `Increment` (inferred as FLOAT64 at query time). Suppose the function `Add` is replaced by `CREATE OR REPLACE FUNCTION Add(x INT64, y INT64) AS (x + y);` Then the inferred return type of `Increment` is automatically changed to INT64 at query time, while the return type of `Decrement` remains FLOAT64."
        },
        "routineReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineReference",
          "description": "Reference describing the ID of this routine."
        },
        "routineType": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineRoutineType",
          "description": "The type of routine."
        },
        "securityMode": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RoutineSecurityMode",
          "description": "Optional. The security mode of the routine, if defined. If not defined, the security mode is automatically determined from the routine's configuration."
        },
        "sparkOptions": {
          "$ref": "#/types/google-native:bigquery%2Fv2:SparkOptions",
          "description": "Optional. Spark specific options."
        },
        "strictMode": {
          "type": "boolean",
          "description": "Optional. Can be set for procedures only. If true (default), the definition body will be validated in the creation and the updates of the procedure. For procedures with an argument of ANY TYPE, the definition body validtion is not supported at creation/update time, and thus this field must be set to false explicitly."
        }
      },
      "requiredInputs": [
        "datasetId",
        "definitionBody",
        "routineReference",
        "routineType"
      ]
    },
    "google-native:bigquery/v2:Table": {
      "description": "Creates a new, empty table in the dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "biglakeConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:BigLakeConfigurationResponse",
          "description": "[Optional] Specifies the configuration of a BigLake managed table."
        },
        "cloneDefinition": {
          "$ref": "#/types/google-native:bigquery%2Fv2:CloneDefinitionResponse",
          "description": "Clone definition."
        },
        "clustering": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ClusteringResponse",
          "description": "[Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered."
        },
        "creationTime": {
          "type": "string",
          "description": "The time when this table was created, in milliseconds since the epoch."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultCollation": {
          "type": "string",
          "description": "The default collation of the table."
        },
        "defaultRoundingMode": {
          "type": "string",
          "description": "The default rounding mode of the table."
        },
        "description": {
          "type": "string",
          "description": "[Optional] A user-friendly description of this table."
        },
        "encryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfigurationResponse",
          "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
        },
        "etag": {
          "type": "string",
          "description": "A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change."
        },
        "expirationTime": {
          "type": "string",
          "description": "[Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed. The defaultTableExpirationMs property of the encapsulating dataset can be used to set a default expirationTime on newly created tables."
        },
        "externalDataConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ExternalDataConfigurationResponse",
          "description": "[Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table."
        },
        "friendlyName": {
          "type": "string",
          "description": "[Optional] A descriptive name for this table."
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and each label in the list must have a different key."
        },
        "lastModifiedTime": {
          "type": "string",
          "description": "The time when this table was last modified, in milliseconds since the epoch."
        },
        "location": {
          "type": "string",
          "description": "The geographic location where the table resides. This value is inherited from the dataset."
        },
        "materializedView": {
          "$ref": "#/types/google-native:bigquery%2Fv2:MaterializedViewDefinitionResponse",
          "description": "[Optional] Materialized view definition."
        },
        "maxStaleness": {
          "type": "string",
          "description": "[Optional] Max staleness of data that could be returned when table or materialized view is queried (formatted as Google SQL Interval type)."
        },
        "model": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ModelDefinitionResponse",
          "description": "[Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run 'PREDICT' queries."
        },
        "numActiveLogicalBytes": {
          "type": "string",
          "description": "Number of logical bytes that are less than 90 days old."
        },
        "numActivePhysicalBytes": {
          "type": "string",
          "description": "Number of physical bytes less than 90 days old. This data is not kept in real time, and might be delayed by a few seconds to a few minutes."
        },
        "numBytes": {
          "type": "string",
          "description": "The size of this table in bytes, excluding any data in the streaming buffer."
        },
        "numLongTermBytes": {
          "type": "string",
          "description": "The number of bytes in the table that are considered \"long-term storage\"."
        },
        "numLongTermLogicalBytes": {
          "type": "string",
          "description": "Number of logical bytes that are more than 90 days old."
        },
        "numLongTermPhysicalBytes": {
          "type": "string",
          "description": "Number of physical bytes more than 90 days old. This data is not kept in real time, and might be delayed by a few seconds to a few minutes."
        },
        "numPartitions": {
          "type": "string",
          "description": "The number of partitions present in the table or materialized view. This data is not kept in real time, and might be delayed by a few seconds to a few minutes."
        },
        "numPhysicalBytes": {
          "type": "string",
          "description": "[TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel."
        },
        "numRows": {
          "type": "string",
          "description": "The number of rows of data in this table, excluding any data in the streaming buffer."
        },
        "numTimeTravelPhysicalBytes": {
          "type": "string",
          "description": "Number of physical bytes used by time travel storage (deleted or changed data). This data is not kept in real time, and might be delayed by a few seconds to a few minutes."
        },
        "numTotalLogicalBytes": {
          "type": "string",
          "description": "Total number of logical bytes in the table or materialized view."
        },
        "numTotalPhysicalBytes": {
          "type": "string",
          "description": "The physical size of this table in bytes. This also includes storage used for time travel. This data is not kept in real time, and might be delayed by a few seconds to a few minutes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rangePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioningResponse",
          "description": "[TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "requirePartitionFilter": {
          "type": "boolean",
          "description": "[Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified."
        },
        "resourceTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Optional] The tags associated with this table. Tag keys are globally unique. See additional information on [tags](https://cloud.google.com/iam/docs/tags-access-control#definitions). An object containing a list of \"key\": value pairs. The key is the namespaced friendly name of the tag key, e.g. \"12345/environment\" where 12345 is parent id. The value is the friendly short name of the tag value, e.g. \"production\"."
        },
        "schema": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableSchemaResponse",
          "description": "[Optional] Describes the schema of this table."
        },
        "selfLink": {
          "type": "string",
          "description": "A URL that can be used to access this resource again."
        },
        "snapshotDefinition": {
          "$ref": "#/types/google-native:bigquery%2Fv2:SnapshotDefinitionResponse",
          "description": "Snapshot definition."
        },
        "streamingBuffer": {
          "$ref": "#/types/google-native:bigquery%2Fv2:StreamingbufferResponse",
          "description": "Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer."
        },
        "tableConstraints": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsResponse",
          "description": "[Optional] The table constraints on the table."
        },
        "tableReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
          "description": "[Required] Reference describing the ID of this table."
        },
        "timePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TimePartitioningResponse",
          "description": "Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "type": {
          "type": "string",
          "description": "Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. SNAPSHOT: An immutable, read-only table that is a copy of another table. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE."
        },
        "view": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ViewDefinitionResponse",
          "description": "[Optional] The view definition."
        }
      },
      "type": "object",
      "required": [
        "biglakeConfiguration",
        "cloneDefinition",
        "clustering",
        "creationTime",
        "datasetId",
        "defaultCollation",
        "defaultRoundingMode",
        "description",
        "encryptionConfiguration",
        "etag",
        "expirationTime",
        "externalDataConfiguration",
        "friendlyName",
        "kind",
        "labels",
        "lastModifiedTime",
        "location",
        "materializedView",
        "maxStaleness",
        "model",
        "numActiveLogicalBytes",
        "numActivePhysicalBytes",
        "numBytes",
        "numLongTermBytes",
        "numLongTermLogicalBytes",
        "numLongTermPhysicalBytes",
        "numPartitions",
        "numPhysicalBytes",
        "numRows",
        "numTimeTravelPhysicalBytes",
        "numTotalLogicalBytes",
        "numTotalPhysicalBytes",
        "project",
        "rangePartitioning",
        "requirePartitionFilter",
        "resourceTags",
        "schema",
        "selfLink",
        "snapshotDefinition",
        "streamingBuffer",
        "tableConstraints",
        "tableReference",
        "timePartitioning",
        "type",
        "view"
      ],
      "inputProperties": {
        "biglakeConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:BigLakeConfiguration",
          "description": "[Optional] Specifies the configuration of a BigLake managed table."
        },
        "clustering": {
          "$ref": "#/types/google-native:bigquery%2Fv2:Clustering",
          "description": "[Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "[Optional] A user-friendly description of this table."
        },
        "encryptionConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfiguration",
          "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
        },
        "expirationTime": {
          "type": "string",
          "description": "[Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed. The defaultTableExpirationMs property of the encapsulating dataset can be used to set a default expirationTime on newly created tables."
        },
        "externalDataConfiguration": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ExternalDataConfiguration",
          "description": "[Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table."
        },
        "friendlyName": {
          "type": "string",
          "description": "[Optional] A descriptive name for this table."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and each label in the list must have a different key."
        },
        "materializedView": {
          "$ref": "#/types/google-native:bigquery%2Fv2:MaterializedViewDefinition",
          "description": "[Optional] Materialized view definition."
        },
        "maxStaleness": {
          "type": "string",
          "description": "[Optional] Max staleness of data that could be returned when table or materialized view is queried (formatted as Google SQL Interval type)."
        },
        "model": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ModelDefinition",
          "description": "[Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run 'PREDICT' queries."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rangePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioning",
          "description": "[TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "requirePartitionFilter": {
          "type": "boolean",
          "description": "[Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified."
        },
        "resourceTags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[Optional] The tags associated with this table. Tag keys are globally unique. See additional information on [tags](https://cloud.google.com/iam/docs/tags-access-control#definitions). An object containing a list of \"key\": value pairs. The key is the namespaced friendly name of the tag key, e.g. \"12345/environment\" where 12345 is parent id. The value is the friendly short name of the tag value, e.g. \"production\"."
        },
        "schema": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableSchema",
          "description": "[Optional] Describes the schema of this table."
        },
        "tableConstraints": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraints",
          "description": "[Optional] The table constraints on the table."
        },
        "tableReference": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TableReference",
          "description": "[Required] Reference describing the ID of this table."
        },
        "timePartitioning": {
          "$ref": "#/types/google-native:bigquery%2Fv2:TimePartitioning",
          "description": "Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
        },
        "view": {
          "$ref": "#/types/google-native:bigquery%2Fv2:ViewDefinition",
          "description": "[Optional] The view definition."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:bigquery/v2:TableIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:bigquery/v2:TableIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:bigquery/v2:TableIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "etag",
        "project",
        "tableId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquery%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId",
        "tableId"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:Connection": {
      "description": "Creates a new connection.",
      "properties": {
        "cloudSql": {
          "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:CloudSqlPropertiesResponse",
          "description": "Cloud SQL properties."
        },
        "connectionId": {
          "type": "string",
          "description": "Optional. Connection id that should be assigned to the created connection."
        },
        "creationTime": {
          "type": "string",
          "description": "The creation timestamp of the connection."
        },
        "description": {
          "type": "string",
          "description": "User provided description."
        },
        "friendlyName": {
          "type": "string",
          "description": "User provided display name for the connection."
        },
        "hasCredential": {
          "type": "boolean",
          "description": "True, if credential is configured for this connection."
        },
        "lastModifiedTime": {
          "type": "string",
          "description": "The last update timestamp of the connection."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the connection in the form of: `projects/{project_id}/locations/{location_id}/connections/{connection_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "cloudSql",
        "creationTime",
        "description",
        "friendlyName",
        "hasCredential",
        "lastModifiedTime",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "cloudSql": {
          "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:CloudSqlProperties",
          "description": "Cloud SQL properties."
        },
        "connectionId": {
          "type": "string",
          "description": "Optional. Connection id that should be assigned to the created connection."
        },
        "description": {
          "type": "string",
          "description": "User provided description."
        },
        "friendlyName": {
          "type": "string",
          "description": "User provided display name for the connection."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the connection in the form of: `projects/{project_id}/locations/{location_id}/connections/{connection_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:bigqueryconnection/v1beta1:ConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:ConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:bigqueryconnection/v1beta1:ConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectionId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectionId"
      ]
    },
    "google-native:bigquerydatapolicy/v1:DataPolicy": {
      "description": "Creates a new data policy under a project with the given `dataPolicyId` (used as the display name), policy tag, and data policy type.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "dataMaskingPolicy": {
          "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:DataMaskingPolicyResponse",
          "description": "The data masking policy that specifies the data masking rule to use."
        },
        "dataPolicyId": {
          "type": "string",
          "description": "User-assigned (human readable) ID of the data policy that needs to be unique within a project. Used as {data_policy_id} in part of the resource name."
        },
        "dataPolicyType": {
          "type": "string",
          "description": "Type of data policy."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of this data policy, in the format of `projects/{project_number}/locations/{location_id}/dataPolicies/{data_policy_id}`."
        },
        "policyTag": {
          "type": "string",
          "description": "Policy tag resource name, in the format of `projects/{project_number}/locations/{location_id}/taxonomies/{taxonomy_id}/policyTags/{policyTag_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "dataMaskingPolicy",
        "dataPolicyId",
        "dataPolicyType",
        "location",
        "name",
        "policyTag",
        "project"
      ],
      "inputProperties": {
        "dataMaskingPolicy": {
          "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:DataMaskingPolicy",
          "description": "The data masking policy that specifies the data masking rule to use."
        },
        "dataPolicyId": {
          "type": "string",
          "description": "User-assigned (human readable) ID of the data policy that needs to be unique within a project. Used as {data_policy_id} in part of the resource name."
        },
        "dataPolicyType": {
          "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:DataPolicyDataPolicyType",
          "description": "Type of data policy."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "policyTag": {
          "type": "string",
          "description": "Policy tag resource name, in the format of `projects/{project_number}/locations/{location_id}/taxonomies/{taxonomy_id}/policyTags/{policyTag_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:bigquerydatapolicy/v1:DataPolicyIamBinding": {
      "description": "Sets the IAM policy for the specified data policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:bigquerydatapolicy/v1:DataPolicyIamMember": {
      "description": "Sets the IAM policy for the specified data policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:bigquerydatapolicy/v1:DataPolicyIamPolicy": {
      "description": "Sets the IAM policy for the specified data policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "dataPolicyId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "dataPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "dataPolicyId"
      ]
    },
    "google-native:bigquerydatatransfer/v1:TransferConfig": {
      "description": "Creates a new data transfer configuration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authorizationCode": {
          "type": "string",
          "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_code&client_id=client_id&scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config."
        },
        "dataRefreshWindowDays": {
          "type": "integer",
          "description": "The number of days to look back to automatically refresh the data. For example, if `data_refresh_window_days = 10`, then every day BigQuery reingests data for [today-10, today-1], rather than ingesting data for just [today-1]. Only valid if the data source supports the feature. Set the value to 0 to use the default value."
        },
        "dataSourceId": {
          "type": "string",
          "description": "Data source ID. This cannot be changed once data transfer is created. The full list of available data source IDs can be returned through an API call: https://cloud.google.com/bigquery-transfer/docs/reference/datatransfer/rest/v1/projects.locations.dataSources/list"
        },
        "datasetRegion": {
          "type": "string",
          "description": "Region in which BigQuery dataset is located."
        },
        "destinationDatasetId": {
          "type": "string",
          "description": "The BigQuery target dataset id."
        },
        "disabled": {
          "type": "boolean",
          "description": "Is this config disabled. When set to true, no runs are scheduled for a given transfer."
        },
        "displayName": {
          "type": "string",
          "description": "User specified display name for the data transfer."
        },
        "emailPreferences": {
          "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:EmailPreferencesResponse",
          "description": "Email notifications will be sent according to these preferences to the email address of the user who owns this transfer config."
        },
        "encryptionConfiguration": {
          "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:EncryptionConfigurationResponse",
          "description": "The encryption configuration part. Currently, it is only used for the optional KMS key name. The BigQuery service account of your project must be granted permissions to use the key. Read methods will return the key name applied in effect. Write methods will apply the key if it is present, or otherwise try to apply project default keys if it is absent."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the transfer config. Transfer config names have the form either `projects/{project_id}/locations/{region}/transferConfigs/{config_id}` or `projects/{project_id}/transferConfigs/{config_id}`, where `config_id` is usually a UUID, even though it is not guaranteed or required. The name is ignored when creating a transfer config."
        },
        "nextRunTime": {
          "type": "string",
          "description": "Next time when data transfer will run."
        },
        "notificationPubsubTopic": {
          "type": "string",
          "description": "Pub/Sub topic where notifications will be sent after transfer runs associated with this transfer config finish. The format for specifying a pubsub topic is: `projects/{project}/topics/{topic}`"
        },
        "ownerInfo": {
          "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:UserInfoResponse",
          "description": "Information about the user whose credentials are used to transfer data. Populated only for `transferConfigs.get` requests. In case the user information is not available, this field will not be populated."
        },
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Parameters specific to each data source. For more information see the bq tab in the 'Setting up a data transfer' section for each data source. For example the parameters for Cloud Storage transfers are listed here: https://cloud.google.com/bigquery-transfer/docs/cloud-storage-transfer#bq"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schedule": {
          "type": "string",
          "description": "Data transfer schedule. If the data source does not support a custom schedule, this should be empty. If it is empty, the default value for the data source will be used. The specified times are in UTC. Examples of valid format: `1st,3rd monday of month 15:30`, `every wed,fri of jan,jun 13:15`, and `first sunday of quarter 00:00`. See more explanation about the format here: https://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format NOTE: The minimum interval time between recurring transfers depends on the data source; refer to the documentation for your data source."
        },
        "scheduleOptions": {
          "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:ScheduleOptionsResponse",
          "description": "Options customizing the data transfer schedule."
        },
        "serviceAccountName": {
          "type": "string",
          "description": "Optional service account email. If this field is set, the transfer config will be created with this service account's credentials. It requires that the requesting user calling this API has permissions to act as this service account. Note that not all data sources support service account credentials when creating a transfer config. For the latest list of data sources, read about [using service accounts](https://cloud.google.com/bigquery-transfer/docs/use-service-accounts)."
        },
        "state": {
          "type": "string",
          "description": "State of the most recently updated transfer run."
        },
        "updateTime": {
          "type": "string",
          "description": "Data transfer modification time. Ignored by server on input."
        },
        "userId": {
          "type": "string",
          "description": "Deprecated. Unique ID of the user on whose behalf transfer is done.",
          "deprecationMessage": "Deprecated. Unique ID of the user on whose behalf transfer is done."
        },
        "versionInfo": {
          "type": "string",
          "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info&client_id=client_id&scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config."
        }
      },
      "type": "object",
      "required": [
        "dataRefreshWindowDays",
        "dataSourceId",
        "datasetRegion",
        "destinationDatasetId",
        "disabled",
        "displayName",
        "emailPreferences",
        "encryptionConfiguration",
        "location",
        "name",
        "nextRunTime",
        "notificationPubsubTopic",
        "ownerInfo",
        "params",
        "project",
        "schedule",
        "scheduleOptions",
        "state",
        "updateTime",
        "userId"
      ],
      "inputProperties": {
        "authorizationCode": {
          "type": "string",
          "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_code&client_id=client_id&scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config."
        },
        "dataRefreshWindowDays": {
          "type": "integer",
          "description": "The number of days to look back to automatically refresh the data. For example, if `data_refresh_window_days = 10`, then every day BigQuery reingests data for [today-10, today-1], rather than ingesting data for just [today-1]. Only valid if the data source supports the feature. Set the value to 0 to use the default value."
        },
        "dataSourceId": {
          "type": "string",
          "description": "Data source ID. This cannot be changed once data transfer is created. The full list of available data source IDs can be returned through an API call: https://cloud.google.com/bigquery-transfer/docs/reference/datatransfer/rest/v1/projects.locations.dataSources/list"
        },
        "destinationDatasetId": {
          "type": "string",
          "description": "The BigQuery target dataset id."
        },
        "disabled": {
          "type": "boolean",
          "description": "Is this config disabled. When set to true, no runs are scheduled for a given transfer."
        },
        "displayName": {
          "type": "string",
          "description": "User specified display name for the data transfer."
        },
        "emailPreferences": {
          "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:EmailPreferences",
          "description": "Email notifications will be sent according to these preferences to the email address of the user who owns this transfer config."
        },
        "encryptionConfiguration": {
          "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:EncryptionConfiguration",
          "description": "The encryption configuration part. Currently, it is only used for the optional KMS key name. The BigQuery service account of your project must be granted permissions to use the key. Read methods will return the key name applied in effect. Write methods will apply the key if it is present, or otherwise try to apply project default keys if it is absent."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the transfer config. Transfer config names have the form either `projects/{project_id}/locations/{region}/transferConfigs/{config_id}` or `projects/{project_id}/transferConfigs/{config_id}`, where `config_id` is usually a UUID, even though it is not guaranteed or required. The name is ignored when creating a transfer config."
        },
        "notificationPubsubTopic": {
          "type": "string",
          "description": "Pub/Sub topic where notifications will be sent after transfer runs associated with this transfer config finish. The format for specifying a pubsub topic is: `projects/{project}/topics/{topic}`"
        },
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Parameters specific to each data source. For more information see the bq tab in the 'Setting up a data transfer' section for each data source. For example the parameters for Cloud Storage transfers are listed here: https://cloud.google.com/bigquery-transfer/docs/cloud-storage-transfer#bq"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schedule": {
          "type": "string",
          "description": "Data transfer schedule. If the data source does not support a custom schedule, this should be empty. If it is empty, the default value for the data source will be used. The specified times are in UTC. Examples of valid format: `1st,3rd monday of month 15:30`, `every wed,fri of jan,jun 13:15`, and `first sunday of quarter 00:00`. See more explanation about the format here: https://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format NOTE: The minimum interval time between recurring transfers depends on the data source; refer to the documentation for your data source."
        },
        "scheduleOptions": {
          "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:ScheduleOptions",
          "description": "Options customizing the data transfer schedule."
        },
        "serviceAccountName": {
          "type": "string",
          "description": "Optional service account email. If this field is set, the transfer config will be created with this service account's credentials. It requires that the requesting user calling this API has permissions to act as this service account. Note that not all data sources support service account credentials when creating a transfer config. For the latest list of data sources, read about [using service accounts](https://cloud.google.com/bigquery-transfer/docs/use-service-accounts)."
        },
        "userId": {
          "type": "string",
          "description": "Deprecated. Unique ID of the user on whose behalf transfer is done.",
          "deprecationMessage": "Deprecated. Unique ID of the user on whose behalf transfer is done."
        },
        "versionInfo": {
          "type": "string",
          "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info&client_id=client_id&scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config."
        }
      }
    },
    "google-native:bigqueryreservation/v1:CapacityCommitment": {
      "description": "Creates a new capacity commitment resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "capacityCommitmentId": {
          "type": "string",
          "description": "The optional capacity commitment ID. Capacity commitment name will be generated automatically if this field is empty. This field must only contain lower case alphanumeric characters or dashes. The first and last character cannot be a dash. Max length is 64 characters. NOTE: this ID won't be kept if the capacity commitment is split or merged."
        },
        "commitmentEndTime": {
          "type": "string",
          "description": "The end of the current commitment period. It is applicable only for ACTIVE capacity commitments."
        },
        "commitmentStartTime": {
          "type": "string",
          "description": "The start of the current commitment period. It is applicable only for ACTIVE capacity commitments."
        },
        "edition": {
          "type": "string",
          "description": "Edition of the capacity commitment."
        },
        "enforceSingleAdminProjectPerOrg": {
          "type": "boolean",
          "description": "If true, fail the request if another project in the organization has a capacity commitment."
        },
        "failureStatus": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1:StatusResponse",
          "description": "For FAILED commitment plan, provides the reason of failure."
        },
        "isFlatRate": {
          "type": "boolean",
          "description": "If true, the commitment is a flat-rate commitment, otherwise, it's an edition commitment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiRegionAuxiliary": {
          "type": "boolean",
          "description": "Applicable only for commitments located within one of the BigQuery multi-regions (US or EU). If set to true, this commitment is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this commitment is placed in the organization's default region. NOTE: this is a preview feature. Project must be allow-listed in order to set this field."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the capacity commitment, e.g., `projects/myproject/locations/US/capacityCommitments/123` The commitment_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "plan": {
          "type": "string",
          "description": "Capacity commitment commitment plan."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "renewalPlan": {
          "type": "string",
          "description": "The plan this capacity commitment is converted to after commitment_end_time passes. Once the plan is changed, committed period is extended according to commitment plan. Only applicable for ANNUAL and TRIAL commitments."
        },
        "slotCount": {
          "type": "string",
          "description": "Number of slots in this commitment."
        },
        "state": {
          "type": "string",
          "description": "State of the commitment."
        }
      },
      "type": "object",
      "required": [
        "commitmentEndTime",
        "commitmentStartTime",
        "edition",
        "failureStatus",
        "isFlatRate",
        "location",
        "multiRegionAuxiliary",
        "name",
        "plan",
        "project",
        "renewalPlan",
        "slotCount",
        "state"
      ],
      "inputProperties": {
        "capacityCommitmentId": {
          "type": "string",
          "description": "The optional capacity commitment ID. Capacity commitment name will be generated automatically if this field is empty. This field must only contain lower case alphanumeric characters or dashes. The first and last character cannot be a dash. Max length is 64 characters. NOTE: this ID won't be kept if the capacity commitment is split or merged."
        },
        "edition": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1:CapacityCommitmentEdition",
          "description": "Edition of the capacity commitment."
        },
        "enforceSingleAdminProjectPerOrg": {
          "type": "boolean",
          "description": "If true, fail the request if another project in the organization has a capacity commitment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiRegionAuxiliary": {
          "type": "boolean",
          "description": "Applicable only for commitments located within one of the BigQuery multi-regions (US or EU). If set to true, this commitment is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this commitment is placed in the organization's default region. NOTE: this is a preview feature. Project must be allow-listed in order to set this field."
        },
        "plan": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1:CapacityCommitmentPlan",
          "description": "Capacity commitment commitment plan."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "renewalPlan": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1:CapacityCommitmentRenewalPlan",
          "description": "The plan this capacity commitment is converted to after commitment_end_time passes. Once the plan is changed, committed period is extended according to commitment plan. Only applicable for ANNUAL and TRIAL commitments."
        },
        "slotCount": {
          "type": "string",
          "description": "Number of slots in this commitment."
        }
      }
    },
    "google-native:bigqueryreservation/v1:Reservation": {
      "description": "Creates a new reservation resource.",
      "properties": {
        "autoscale": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1:AutoscaleResponse",
          "description": "The configuration parameters for the auto scaling feature."
        },
        "concurrency": {
          "type": "string",
          "description": "Job concurrency target which sets a soft upper bound on the number of jobs that can run concurrently in this reservation. This is a soft target due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency target will be automatically computed by the system. NOTE: this field is exposed as `target_job_concurrency` in the Information Schema, DDL and BQ CLI."
        },
        "creationTime": {
          "type": "string",
          "description": "Creation time of the reservation."
        },
        "edition": {
          "type": "string",
          "description": "Edition of the reservation."
        },
        "ignoreIdleSlots": {
          "type": "boolean",
          "description": "If false, any query or pipeline job using this reservation will use idle slots from other reservations within the same admin project. If true, a query or pipeline job using this reservation will execute with the slot capacity specified in the slot_capacity field at most."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiRegionAuxiliary": {
          "type": "boolean",
          "description": "Applicable only for reservations located within one of the BigQuery multi-regions (US or EU). If set to true, this reservation is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this reservation is placed in the organization's default region. NOTE: this is a preview feature. Project must be allow-listed in order to set this field."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the reservation, e.g., `projects/*/locations/*/reservations/team1-prod`. The reservation_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationId": {
          "type": "string",
          "description": "The reservation ID. It must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "slotCapacity": {
          "type": "string",
          "description": "Baseline slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. Queries using this reservation might use more slots during runtime if ignore_idle_slots is set to false, or autoscaling is enabled. If edition is EDITION_UNSPECIFIED and total slot_capacity of the reservation and its siblings exceeds the total slot_count of all capacity commitments, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`. If edition is any value but EDITION_UNSPECIFIED, then the above requirement is not needed. The total slot_capacity of the reservation and its siblings may exceed the total slot_count of capacity commitments. In that case, the exceeding slots will be charged with the autoscale SKU. You can increase the number of baseline slots in a reservation every few minutes. If you want to decrease your baseline slots, you are limited to once an hour if you have recently changed your baseline slot capacity and your baseline slots exceed your committed slots. Otherwise, you can decrease your baseline slots every few minutes."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of the reservation."
        }
      },
      "type": "object",
      "required": [
        "autoscale",
        "concurrency",
        "creationTime",
        "edition",
        "ignoreIdleSlots",
        "location",
        "multiRegionAuxiliary",
        "name",
        "project",
        "slotCapacity",
        "updateTime"
      ],
      "inputProperties": {
        "autoscale": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1:Autoscale",
          "description": "The configuration parameters for the auto scaling feature."
        },
        "concurrency": {
          "type": "string",
          "description": "Job concurrency target which sets a soft upper bound on the number of jobs that can run concurrently in this reservation. This is a soft target due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency target will be automatically computed by the system. NOTE: this field is exposed as `target_job_concurrency` in the Information Schema, DDL and BQ CLI."
        },
        "edition": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1:ReservationEdition",
          "description": "Edition of the reservation."
        },
        "ignoreIdleSlots": {
          "type": "boolean",
          "description": "If false, any query or pipeline job using this reservation will use idle slots from other reservations within the same admin project. If true, a query or pipeline job using this reservation will execute with the slot capacity specified in the slot_capacity field at most."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiRegionAuxiliary": {
          "type": "boolean",
          "description": "Applicable only for reservations located within one of the BigQuery multi-regions (US or EU). If set to true, this reservation is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this reservation is placed in the organization's default region. NOTE: this is a preview feature. Project must be allow-listed in order to set this field."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the reservation, e.g., `projects/*/locations/*/reservations/team1-prod`. The reservation_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationId": {
          "type": "string",
          "description": "The reservation ID. It must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "slotCapacity": {
          "type": "string",
          "description": "Baseline slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. Queries using this reservation might use more slots during runtime if ignore_idle_slots is set to false, or autoscaling is enabled. If edition is EDITION_UNSPECIFIED and total slot_capacity of the reservation and its siblings exceeds the total slot_count of all capacity commitments, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`. If edition is any value but EDITION_UNSPECIFIED, then the above requirement is not needed. The total slot_capacity of the reservation and its siblings may exceed the total slot_count of capacity commitments. In that case, the exceeding slots will be charged with the autoscale SKU. You can increase the number of baseline slots in a reservation every few minutes. If you want to decrease your baseline slots, you are limited to once an hour if you have recently changed your baseline slot capacity and your baseline slots exceed your committed slots. Otherwise, you can decrease your baseline slots every few minutes."
        }
      }
    },
    "google-native:bigqueryreservation/v1beta1:CapacityCommitment": {
      "description": "Creates a new capacity commitment resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "capacityCommitmentId": {
          "type": "string",
          "description": "The optional capacity commitment ID. Capacity commitment name will be generated automatically if this field is empty. This field must only contain lower case alphanumeric characters or dashes. The first and last character cannot be a dash. Max length is 64 characters. NOTE: this ID won't be kept if the capacity commitment is split or merged."
        },
        "commitmentEndTime": {
          "type": "string",
          "description": "The end of the current commitment period. It is applicable only for ACTIVE capacity commitments."
        },
        "commitmentStartTime": {
          "type": "string",
          "description": "The start of the current commitment period. It is applicable only for ACTIVE capacity commitments."
        },
        "enforceSingleAdminProjectPerOrg": {
          "type": "boolean",
          "description": "If true, fail the request if another project in the organization has a capacity commitment."
        },
        "failureStatus": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1beta1:StatusResponse",
          "description": "For FAILED commitment plan, provides the reason of failure."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiRegionAuxiliary": {
          "type": "boolean",
          "description": "Applicable only for commitments located within one of the BigQuery multi-regions (US or EU). If set to true, this commitment is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this commitment is placed in the organization's default region."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the capacity commitment, e.g., `projects/myproject/locations/US/capacityCommitments/123` The commitment_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "plan": {
          "type": "string",
          "description": "Capacity commitment commitment plan."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "renewalPlan": {
          "type": "string",
          "description": "The plan this capacity commitment is converted to after commitment_end_time passes. Once the plan is changed, committed period is extended according to commitment plan. Only applicable for ANNUAL commitments."
        },
        "slotCount": {
          "type": "string",
          "description": "Number of slots in this commitment."
        },
        "state": {
          "type": "string",
          "description": "State of the commitment."
        }
      },
      "type": "object",
      "required": [
        "commitmentEndTime",
        "commitmentStartTime",
        "failureStatus",
        "location",
        "multiRegionAuxiliary",
        "name",
        "plan",
        "project",
        "renewalPlan",
        "slotCount",
        "state"
      ],
      "inputProperties": {
        "capacityCommitmentId": {
          "type": "string",
          "description": "The optional capacity commitment ID. Capacity commitment name will be generated automatically if this field is empty. This field must only contain lower case alphanumeric characters or dashes. The first and last character cannot be a dash. Max length is 64 characters. NOTE: this ID won't be kept if the capacity commitment is split or merged."
        },
        "enforceSingleAdminProjectPerOrg": {
          "type": "boolean",
          "description": "If true, fail the request if another project in the organization has a capacity commitment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiRegionAuxiliary": {
          "type": "boolean",
          "description": "Applicable only for commitments located within one of the BigQuery multi-regions (US or EU). If set to true, this commitment is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this commitment is placed in the organization's default region."
        },
        "plan": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1beta1:CapacityCommitmentPlan",
          "description": "Capacity commitment commitment plan."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "renewalPlan": {
          "$ref": "#/types/google-native:bigqueryreservation%2Fv1beta1:CapacityCommitmentRenewalPlan",
          "description": "The plan this capacity commitment is converted to after commitment_end_time passes. Once the plan is changed, committed period is extended according to commitment plan. Only applicable for ANNUAL commitments."
        },
        "slotCount": {
          "type": "string",
          "description": "Number of slots in this commitment."
        }
      }
    },
    "google-native:bigqueryreservation/v1beta1:Reservation": {
      "description": "Creates a new reservation resource.",
      "properties": {
        "concurrency": {
          "type": "string",
          "description": "Maximum number of queries that are allowed to run concurrently in this reservation. This is a soft limit due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency will be automatically set based on the reservation size."
        },
        "creationTime": {
          "type": "string",
          "description": "Creation time of the reservation."
        },
        "ignoreIdleSlots": {
          "type": "boolean",
          "description": "If false, any query or pipeline job using this reservation will use idle slots from other reservations within the same admin project. If true, a query or pipeline job using this reservation will execute with the slot capacity specified in the slot_capacity field at most."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiRegionAuxiliary": {
          "type": "boolean",
          "description": "Applicable only for reservations located within one of the BigQuery multi-regions (US or EU). If set to true, this reservation is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this reservation is placed in the organization's default region."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the reservation, e.g., `projects/*/locations/*/reservations/team1-prod`. The reservation_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationId": {
          "type": "string",
          "description": "The reservation ID. It must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "slotCapacity": {
          "type": "string",
          "description": "Minimum slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. Queries using this reservation might use more slots during runtime if ignore_idle_slots is set to false. If the new reservation's slot capacity exceeds the project's slot capacity or if total slot capacity of the new reservation and its siblings exceeds the project's slot capacity, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`. NOTE: for reservations in US or EU multi-regions, slot capacity constraints are checked separately for default and auxiliary regions. See multi_region_auxiliary flag for more details."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of the reservation."
        }
      },
      "type": "object",
      "required": [
        "concurrency",
        "creationTime",
        "ignoreIdleSlots",
        "location",
        "multiRegionAuxiliary",
        "name",
        "project",
        "slotCapacity",
        "updateTime"
      ],
      "inputProperties": {
        "concurrency": {
          "type": "string",
          "description": "Maximum number of queries that are allowed to run concurrently in this reservation. This is a soft limit due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency will be automatically set based on the reservation size."
        },
        "ignoreIdleSlots": {
          "type": "boolean",
          "description": "If false, any query or pipeline job using this reservation will use idle slots from other reservations within the same admin project. If true, a query or pipeline job using this reservation will execute with the slot capacity specified in the slot_capacity field at most."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiRegionAuxiliary": {
          "type": "boolean",
          "description": "Applicable only for reservations located within one of the BigQuery multi-regions (US or EU). If set to true, this reservation is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this reservation is placed in the organization's default region."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the reservation, e.g., `projects/*/locations/*/reservations/team1-prod`. The reservation_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationId": {
          "type": "string",
          "description": "The reservation ID. It must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters."
        },
        "slotCapacity": {
          "type": "string",
          "description": "Minimum slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. Queries using this reservation might use more slots during runtime if ignore_idle_slots is set to false. If the new reservation's slot capacity exceeds the project's slot capacity or if total slot capacity of the new reservation and its siblings exceeds the project's slot capacity, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`. NOTE: for reservations in US or EU multi-regions, slot capacity constraints are checked separately for default and auxiliary regions. See multi_region_auxiliary flag for more details."
        }
      }
    },
    "google-native:bigtableadmin/v2:AppProfile": {
      "description": "Creates an app profile within an instance.",
      "properties": {
        "appProfileId": {
          "type": "string",
          "description": "Required. The ID to be used when referring to the new app profile within its instance, e.g., just `myprofile` rather than `projects/myproject/instances/myinstance/appProfiles/myprofile`.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Long form description of the use case for this AppProfile."
        },
        "etag": {
          "type": "string",
          "description": "Strongly validated etag for optimistic concurrency control. Preserve the value returned from `GetAppProfile` when calling `UpdateAppProfile` to fail the request if there has been a modification in the mean time. The `update_mask` of the request need not include `etag` for this protection to apply. See [Wikipedia](https://en.wikipedia.org/wiki/HTTP_ETag) and [RFC 7232](https://tools.ietf.org/html/rfc7232#section-2.3) for more details."
        },
        "ignoreWarnings": {
          "type": "boolean",
          "description": "If true, ignore safety checks when creating the app profile."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiClusterRoutingUseAny": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:MultiClusterRoutingUseAnyResponse",
          "description": "Use a multi-cluster routing policy."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the app profile. Values are of the form `projects/{project}/instances/{instance}/appProfiles/_a-zA-Z0-9*`."
        },
        "priority": {
          "type": "string",
          "description": "This field has been deprecated in favor of `standard_isolation.priority`. If you set this field, `standard_isolation.priority` will be set instead. The priority of requests sent using this app profile."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "singleClusterRouting": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:SingleClusterRoutingResponse",
          "description": "Use a single-cluster routing policy."
        },
        "standardIsolation": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:StandardIsolationResponse",
          "description": "The standard options used for isolating this app profile's traffic from other use cases."
        }
      },
      "type": "object",
      "required": [
        "appProfileId",
        "description",
        "etag",
        "instanceId",
        "multiClusterRoutingUseAny",
        "name",
        "priority",
        "project",
        "singleClusterRouting",
        "standardIsolation"
      ],
      "inputProperties": {
        "appProfileId": {
          "type": "string",
          "description": "Required. The ID to be used when referring to the new app profile within its instance, e.g., just `myprofile` rather than `projects/myproject/instances/myinstance/appProfiles/myprofile`.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Long form description of the use case for this AppProfile."
        },
        "etag": {
          "type": "string",
          "description": "Strongly validated etag for optimistic concurrency control. Preserve the value returned from `GetAppProfile` when calling `UpdateAppProfile` to fail the request if there has been a modification in the mean time. The `update_mask` of the request need not include `etag` for this protection to apply. See [Wikipedia](https://en.wikipedia.org/wiki/HTTP_ETag) and [RFC 7232](https://tools.ietf.org/html/rfc7232#section-2.3) for more details."
        },
        "ignoreWarnings": {
          "type": "boolean",
          "description": "If true, ignore safety checks when creating the app profile."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiClusterRoutingUseAny": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:MultiClusterRoutingUseAny",
          "description": "Use a multi-cluster routing policy."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the app profile. Values are of the form `projects/{project}/instances/{instance}/appProfiles/_a-zA-Z0-9*`."
        },
        "priority": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:AppProfilePriority",
          "description": "This field has been deprecated in favor of `standard_isolation.priority`. If you set this field, `standard_isolation.priority` will be set instead. The priority of requests sent using this app profile."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "singleClusterRouting": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:SingleClusterRouting",
          "description": "Use a single-cluster routing policy."
        },
        "standardIsolation": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:StandardIsolation",
          "description": "The standard options used for isolating this app profile's traffic from other use cases."
        }
      },
      "requiredInputs": [
        "appProfileId",
        "instanceId"
      ]
    },
    "google-native:bigtableadmin/v2:Backup": {
      "description": "Starts creating a new Cloud Bigtable Backup. The returned backup long-running operation can be used to track creation of the backup. The metadata field type is CreateBackupMetadata. The response field type is Backup, if successful. Cancelling the returned operation will stop the creation and delete the backup.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. The id of the backup to be created. The `backup_id` along with the parent `parent` are combined as {parent}/backups/{backup_id} to create the full backup name, of the form: `projects/{project}/instances/{instance}/clusters/{cluster}/backups/{backup_id}`. This string must be between 1 and 50 characters in length and match the regex _a-zA-Z0-9*.",
          "replaceOnChanges": true
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:EncryptionInfoResponse",
          "description": "The encryption information for the backup."
        },
        "endTime": {
          "type": "string",
          "description": "`end_time` is the time that the backup was finished. The row data in the backup will be no newer than this timestamp."
        },
        "expireTime": {
          "type": "string",
          "description": "The expiration time of the backup, with microseconds granularity that must be at least 6 hours and at most 90 days from the time the request is received. Once the `expire_time` has passed, Cloud Bigtable will delete the backup and free the resources used by the backup."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A globally unique identifier for the backup which cannot be changed. Values are of the form `projects/{project}/instances/{instance}/clusters/{cluster}/ backups/_a-zA-Z0-9*` The final segment of the name must be between 1 and 50 characters in length. The backup is stored in the cluster identified by the prefix of the backup name of the form `projects/{project}/instances/{instance}/clusters/{cluster}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sizeBytes": {
          "type": "string",
          "description": "Size of the backup in bytes."
        },
        "sourceBackup": {
          "type": "string",
          "description": "Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//backups/."
        },
        "sourceTable": {
          "type": "string",
          "description": "Immutable. Name of the table from which this backup was created. This needs to be in the same instance as the backup. Values are of the form `projects/{project}/instances/{instance}/tables/{source_table}`."
        },
        "startTime": {
          "type": "string",
          "description": "`start_time` is the time that the backup was started (i.e. approximately the time the CreateBackup request is received). The row data in this backup will be no older than this timestamp."
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "clusterId",
        "encryptionInfo",
        "endTime",
        "expireTime",
        "instanceId",
        "name",
        "project",
        "sizeBytes",
        "sourceBackup",
        "sourceTable",
        "startTime",
        "state"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. The id of the backup to be created. The `backup_id` along with the parent `parent` are combined as {parent}/backups/{backup_id} to create the full backup name, of the form: `projects/{project}/instances/{instance}/clusters/{cluster}/backups/{backup_id}`. This string must be between 1 and 50 characters in length and match the regex _a-zA-Z0-9*.",
          "replaceOnChanges": true
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "expireTime": {
          "type": "string",
          "description": "The expiration time of the backup, with microseconds granularity that must be at least 6 hours and at most 90 days from the time the request is received. Once the `expire_time` has passed, Cloud Bigtable will delete the backup and free the resources used by the backup."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A globally unique identifier for the backup which cannot be changed. Values are of the form `projects/{project}/instances/{instance}/clusters/{cluster}/ backups/_a-zA-Z0-9*` The final segment of the name must be between 1 and 50 characters in length. The backup is stored in the cluster identified by the prefix of the backup name of the form `projects/{project}/instances/{instance}/clusters/{cluster}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceTable": {
          "type": "string",
          "description": "Immutable. Name of the table from which this backup was created. This needs to be in the same instance as the backup. Values are of the form `projects/{project}/instances/{instance}/tables/{source_table}`."
        }
      },
      "requiredInputs": [
        "backupId",
        "clusterId",
        "expireTime",
        "instanceId",
        "sourceTable"
      ]
    },
    "google-native:bigtableadmin/v2:Cluster": {
      "description": "Creates a cluster within an instance. Note that exactly one of Cluster.serve_nodes and Cluster.cluster_config.cluster_autoscaling_config can be set. If serve_nodes is set to non-zero, then the cluster is manually scaled. If cluster_config.cluster_autoscaling_config is non-empty, then autoscaling is enabled.",
      "properties": {
        "clusterConfig": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:ClusterConfigResponse",
          "description": "Configuration for this cluster."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. The ID to be used when referring to the new cluster within its instance, e.g., just `mycluster` rather than `projects/myproject/instances/myinstance/clusters/mycluster`.",
          "replaceOnChanges": true
        },
        "defaultStorageType": {
          "type": "string",
          "description": "Immutable. The type of storage used by this cluster to serve its parent instance's tables, unless explicitly overridden."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:EncryptionConfigResponse",
          "description": "Immutable. The encryption configuration for CMEK-protected clusters."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "description": "Immutable. The location where this cluster's nodes and storage reside. For best performance, clients should be located as close as possible to this cluster. Currently only zones are supported, so values should be of the form `projects/{project}/locations/{zone}`."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the cluster. Values are of the form `projects/{project}/instances/{instance}/clusters/a-z*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serveNodes": {
          "type": "integer",
          "description": "The number of nodes in the cluster. If no value is set, Cloud Bigtable automatically allocates nodes based on your data footprint and optimized for 50% storage utilization."
        },
        "state": {
          "type": "string",
          "description": "The current state of the cluster."
        }
      },
      "type": "object",
      "required": [
        "clusterConfig",
        "clusterId",
        "defaultStorageType",
        "encryptionConfig",
        "instanceId",
        "location",
        "name",
        "project",
        "serveNodes",
        "state"
      ],
      "inputProperties": {
        "clusterConfig": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:ClusterConfig",
          "description": "Configuration for this cluster."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. The ID to be used when referring to the new cluster within its instance, e.g., just `mycluster` rather than `projects/myproject/instances/myinstance/clusters/mycluster`.",
          "replaceOnChanges": true
        },
        "defaultStorageType": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:ClusterDefaultStorageType",
          "description": "Immutable. The type of storage used by this cluster to serve its parent instance's tables, unless explicitly overridden."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:EncryptionConfig",
          "description": "Immutable. The encryption configuration for CMEK-protected clusters."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "description": "Immutable. The location where this cluster's nodes and storage reside. For best performance, clients should be located as close as possible to this cluster. Currently only zones are supported, so values should be of the form `projects/{project}/locations/{zone}`."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the cluster. Values are of the form `projects/{project}/instances/{instance}/clusters/a-z*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serveNodes": {
          "type": "integer",
          "description": "The number of nodes in the cluster. If no value is set, Cloud Bigtable automatically allocates nodes based on your data footprint and optimized for 50% storage utilization."
        }
      },
      "requiredInputs": [
        "clusterId",
        "instanceId"
      ]
    },
    "google-native:bigtableadmin/v2:Instance": {
      "description": "Create an instance within a project. Note that exactly one of Cluster.serve_nodes and Cluster.cluster_config.cluster_autoscaling_config can be set. If serve_nodes is set to non-zero, then the cluster is manually scaled. If cluster_config.cluster_autoscaling_config is non-empty, then autoscaling is enabled.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "A commit timestamp representing when this Instance was created. For instances created before this field was added (August 2021), this value is `seconds: 0, nanos: 1`."
        },
        "displayName": {
          "type": "string",
          "description": "The descriptive name for this instance as it appears in UIs. Can be changed at any time, but should be kept globally unique to avoid confusion."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. They can be used to filter resources and aggregate metrics. * Label keys must be between 1 and 63 characters long and must conform to the regular expression: `\\p{Ll}\\p{Lo}{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}`. * No more than 64 labels can be associated with a given resource. * Keys and values must both be under 128 bytes."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the instance. Values are of the form `projects/{project}/instances/a-z+[a-z0-9]`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "state": {
          "type": "string",
          "description": "The current state of the instance."
        },
        "type": {
          "type": "string",
          "description": "The type of the instance. Defaults to `PRODUCTION`."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "labels",
        "name",
        "project",
        "satisfiesPzs",
        "state",
        "type"
      ],
      "inputProperties": {
        "clusters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The clusters to be created within the instance, mapped by desired cluster ID, e.g., just `mycluster` rather than `projects/myproject/instances/myinstance/clusters/mycluster`. Fields marked `OutputOnly` must be left blank."
        },
        "displayName": {
          "type": "string",
          "description": "The descriptive name for this instance as it appears in UIs. Can be changed at any time, but should be kept globally unique to avoid confusion."
        },
        "instanceId": {
          "type": "string",
          "description": "The ID to be used when referring to the new instance within its project, e.g., just `myinstance` rather than `projects/myproject/instances/myinstance`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. They can be used to filter resources and aggregate metrics. * Label keys must be between 1 and 63 characters long and must conform to the regular expression: `\\p{Ll}\\p{Lo}{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}`. * No more than 64 labels can be associated with a given resource. * Keys and values must both be under 128 bytes."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the instance. Values are of the form `projects/{project}/instances/a-z+[a-z0-9]`."
        },
        "parent": {
          "type": "string",
          "description": "The unique name of the project in which to create the new instance. Values are of the form `projects/{project}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:InstanceType",
          "description": "The type of the instance. Defaults to `PRODUCTION`."
        }
      },
      "requiredInputs": [
        "clusters",
        "displayName",
        "instanceId",
        "parent"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceClusterBackupIamBinding": {
      "description": "Sets the access control policy on a Table or Backup resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceClusterBackupIamMember": {
      "description": "Sets the access control policy on a Table or Backup resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceClusterBackupIamPolicy": {
      "description": "Sets the access control policy on a Table or Backup resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "backupId",
        "bindings",
        "clusterId",
        "etag",
        "instanceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "clusterId",
        "instanceId"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceIamBinding": {
      "description": "Sets the access control policy on an instance resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceIamMember": {
      "description": "Sets the access control policy on an instance resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceIamPolicy": {
      "description": "Sets the access control policy on an instance resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "instanceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceTableIamBinding": {
      "description": "Sets the access control policy on a Table or Backup resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceTableIamMember": {
      "description": "Sets the access control policy on a Table or Backup resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:bigtableadmin/v2:InstanceTableIamPolicy": {
      "description": "Sets the access control policy on a Table or Backup resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "instanceId",
        "project",
        "tableId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId",
        "tableId"
      ]
    },
    "google-native:bigtableadmin/v2:Table": {
      "description": "Creates a new table in the specified instance. The table can be created with a full set of initial column families, specified in the request.",
      "properties": {
        "changeStreamConfig": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:ChangeStreamConfigResponse",
          "description": "If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."
        },
        "clusterStates": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from cluster ID to per-cluster table state. If it could not be determined whether or not the table has data in a particular cluster (for example, if its zone is unavailable), then there will be an entry for the cluster with UNKNOWN `replication_status`. Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`"
        },
        "columnFamilies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs."
        },
        "granularity": {
          "type": "string",
          "description": "Immutable. The granularity (i.e. `MILLIS`) at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restoreInfo": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:RestoreInfoResponse",
          "description": "If this table was restored from another data source (e.g. a backup), this field will be populated with information about the restore."
        },
        "stats": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:TableStatsResponse",
          "description": "Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above."
        }
      },
      "type": "object",
      "required": [
        "changeStreamConfig",
        "clusterStates",
        "columnFamilies",
        "deletionProtection",
        "granularity",
        "instanceId",
        "name",
        "project",
        "restoreInfo",
        "stats"
      ],
      "inputProperties": {
        "changeStreamConfig": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:ChangeStreamConfig",
          "description": "If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."
        },
        "columnFamilies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs."
        },
        "granularity": {
          "$ref": "#/types/google-native:bigtableadmin%2Fv2:TableGranularity",
          "description": "Immutable. The granularity (i.e. `MILLIS`) at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`."
        },
        "initialSplits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:Split"
          },
          "description": "The optional list of row keys that will be used to initially split the table into several tablets (tablets are similar to HBase regions). Given two split keys, `s1` and `s2`, three tablets will be created, spanning the key ranges: `[, s1), [s1, s2), [s2, )`. Example: * Row keys := `[\"a\", \"apple\", \"custom\", \"customer_1\", \"customer_2\",` `\"other\", \"zz\"]` * initial_split_keys := `[\"apple\", \"customer_1\", \"customer_2\", \"other\"]` * Key assignment: - Tablet 1 `[, apple) => {\"a\"}.` - Tablet 2 `[apple, customer_1) => {\"apple\", \"custom\"}.` - Tablet 3 `[customer_1, customer_2) => {\"customer_1\"}.` - Tablet 4 `[customer_2, other) => {\"customer_2\"}.` - Tablet 5 `[other, ) => {\"other\", \"zz\"}.`"
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "description": "The name by which the new table should be referred to within the parent instance, e.g., `foobar` rather than `{parent}/tables/foobar`. Maximum 50 characters."
        }
      },
      "requiredInputs": [
        "instanceId",
        "tableId"
      ]
    },
    "google-native:billingbudgets/v1:Budget": {
      "description": "Creates a new budget. See [Quotas and limits](https://cloud.google.com/billing/quotas) for more information on the limits of the number of budgets you can create.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "amount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1BudgetAmountResponse",
          "description": "Budgeted amount."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "budgetFilter": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1FilterResponse",
          "description": "Optional. Filters that define which resources are used to compute the actual spend against the budget amount, such as projects, services, and the budget's time period, as well as other filters."
        },
        "displayName": {
          "type": "string",
          "description": "User data for display name in UI. The name must be less than or equal to 60 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Etag to validate that the object is unchanged for a read-modify-write operation. An empty etag causes an update to overwrite other changes."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the budget. The resource name implies the scope of a budget. Values are of the form `billingAccounts/{billingAccountId}/budgets/{budgetId}`."
        },
        "notificationsRule": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1NotificationsRuleResponse",
          "description": "Optional. Rules to apply to notifications sent based on budget spend and thresholds."
        },
        "ownershipScope": {
          "type": "string"
        },
        "thresholdRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1ThresholdRuleResponse"
          },
          "description": "Optional. Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. Optional for `pubsubTopic` notifications. Required if using email notifications."
        }
      },
      "type": "object",
      "required": [
        "amount",
        "billingAccountId",
        "budgetFilter",
        "displayName",
        "etag",
        "name",
        "notificationsRule",
        "ownershipScope",
        "thresholdRules"
      ],
      "inputProperties": {
        "amount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1BudgetAmount",
          "description": "Budgeted amount."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "budgetFilter": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1Filter",
          "description": "Optional. Filters that define which resources are used to compute the actual spend against the budget amount, such as projects, services, and the budget's time period, as well as other filters."
        },
        "displayName": {
          "type": "string",
          "description": "User data for display name in UI. The name must be less than or equal to 60 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Etag to validate that the object is unchanged for a read-modify-write operation. An empty etag causes an update to overwrite other changes."
        },
        "notificationsRule": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1NotificationsRule",
          "description": "Optional. Rules to apply to notifications sent based on budget spend and thresholds."
        },
        "ownershipScope": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1:BudgetOwnershipScope"
        },
        "thresholdRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1ThresholdRule"
          },
          "description": "Optional. Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. Optional for `pubsubTopic` notifications. Required if using email notifications."
        }
      },
      "requiredInputs": [
        "amount",
        "billingAccountId"
      ]
    },
    "google-native:billingbudgets/v1beta1:Budget": {
      "description": "Creates a new budget. See [Quotas and limits](https://cloud.google.com/billing/quotas) for more information on the limits of the number of budgets you can create.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "allUpdatesRule": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1AllUpdatesRuleResponse",
          "description": "Optional. Rules to apply to notifications sent based on budget spend and thresholds."
        },
        "amount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1BudgetAmountResponse",
          "description": "Budgeted amount."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "budgetFilter": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1FilterResponse",
          "description": "Optional. Filters that define which resources are used to compute the actual spend against the budget amount, such as projects, services, and the budget's time period, as well as other filters."
        },
        "displayName": {
          "type": "string",
          "description": "User data for display name in UI. Validation: <= 60 chars."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Etag to validate that the object is unchanged for a read-modify-write operation. An empty etag will cause an update to overwrite other changes."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the budget. The resource name implies the scope of a budget. Values are of the form `billingAccounts/{billingAccountId}/budgets/{budgetId}`."
        },
        "ownershipScope": {
          "type": "string"
        },
        "thresholdRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1ThresholdRuleResponse"
          },
          "description": "Optional. Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. Optional for `pubsubTopic` notifications. Required if using email notifications."
        }
      },
      "type": "object",
      "required": [
        "allUpdatesRule",
        "amount",
        "billingAccountId",
        "budgetFilter",
        "displayName",
        "etag",
        "name",
        "ownershipScope",
        "thresholdRules"
      ],
      "inputProperties": {
        "allUpdatesRule": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1AllUpdatesRule",
          "description": "Optional. Rules to apply to notifications sent based on budget spend and thresholds."
        },
        "amount": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1BudgetAmount",
          "description": "Budgeted amount."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "budgetFilter": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1Filter",
          "description": "Optional. Filters that define which resources are used to compute the actual spend against the budget amount, such as projects, services, and the budget's time period, as well as other filters."
        },
        "displayName": {
          "type": "string",
          "description": "User data for display name in UI. Validation: <= 60 chars."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Etag to validate that the object is unchanged for a read-modify-write operation. An empty etag will cause an update to overwrite other changes."
        },
        "ownershipScope": {
          "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:BudgetOwnershipScope"
        },
        "thresholdRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1ThresholdRule"
          },
          "description": "Optional. Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. Optional for `pubsubTopic` notifications. Required if using email notifications."
        }
      },
      "requiredInputs": [
        "amount",
        "billingAccountId"
      ]
    },
    "google-native:binaryauthorization/v1:Attestor": {
      "description": "Creates an attestor, and returns a copy of the new attestor. Returns `NOT_FOUND` if the project does not exist, `INVALID_ARGUMENT` if the request is malformed, `ALREADY_EXISTS` if the attestor already exists.",
      "properties": {
        "attestorId": {
          "type": "string",
          "description": "Required. The attestors ID.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A descriptive comment. This field may be updated. The field may be displayed in chooser dialogs."
        },
        "etag": {
          "type": "string",
          "description": "Optional. A checksum, returned by the server, that can be sent on update requests to ensure the attestor has an up-to-date value before attempting to update it. See https://google.aip.dev/154."
        },
        "name": {
          "type": "string",
          "description": "The resource name, in the format: `projects/*/attestors/*`. This field may not be updated."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the attestor was last updated."
        },
        "userOwnedGrafeasNote": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:UserOwnedGrafeasNoteResponse",
          "description": "This specifies how an attestation will be read, and how it will be used during policy enforcement."
        }
      },
      "type": "object",
      "required": [
        "attestorId",
        "description",
        "etag",
        "name",
        "project",
        "updateTime",
        "userOwnedGrafeasNote"
      ],
      "inputProperties": {
        "attestorId": {
          "type": "string",
          "description": "Required. The attestors ID.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A descriptive comment. This field may be updated. The field may be displayed in chooser dialogs."
        },
        "etag": {
          "type": "string",
          "description": "Optional. A checksum, returned by the server, that can be sent on update requests to ensure the attestor has an up-to-date value before attempting to update it. See https://google.aip.dev/154."
        },
        "name": {
          "type": "string",
          "description": "The resource name, in the format: `projects/*/attestors/*`. This field may not be updated."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userOwnedGrafeasNote": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:UserOwnedGrafeasNote",
          "description": "This specifies how an attestation will be read, and how it will be used during policy enforcement."
        }
      },
      "requiredInputs": [
        "attestorId"
      ]
    },
    "google-native:binaryauthorization/v1:AttestorIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1:AttestorIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1:AttestorIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "attestorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "attestorId",
        "bindings",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "attestorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "attestorId"
      ]
    },
    "google-native:binaryauthorization/v1:Policy": {
      "description": "Creates a platform policy, and returns a copy of it. Returns `NOT_FOUND` if the project or platform doesn't exist, `INVALID_ARGUMENT` if the request is malformed, `ALREADY_EXISTS` if the policy already exists, and `INVALID_ARGUMENT` if the policy contains a platform-specific policy that does not match the platform value specified in the URL.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. A description comment about the policy."
        },
        "gkePolicy": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:GkePolicyResponse",
          "description": "Optional. GKE platform-specific policy."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the Binary Authorization platform policy, in the form of `projects/*/platforms/*/policies/*`."
        },
        "platformId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "policyId": {
          "type": "string",
          "description": "Required. The platform policy ID.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the policy was last updated."
        }
      },
      "type": "object",
      "required": [
        "description",
        "gkePolicy",
        "name",
        "platformId",
        "policyId",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A description comment about the policy."
        },
        "gkePolicy": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1:GkePolicy",
          "description": "Optional. GKE platform-specific policy."
        },
        "platformId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "policyId": {
          "type": "string",
          "description": "Required. The platform policy ID.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "platformId",
        "policyId"
      ]
    },
    "google-native:binaryauthorization/v1:PolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1:PolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1:PolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      }
    },
    "google-native:binaryauthorization/v1beta1:Attestor": {
      "description": "Creates an attestor, and returns a copy of the new attestor. Returns NOT_FOUND if the project does not exist, INVALID_ARGUMENT if the request is malformed, ALREADY_EXISTS if the attestor already exists.",
      "properties": {
        "attestorId": {
          "type": "string",
          "description": "Required. The attestors ID.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A descriptive comment. This field may be updated. The field may be displayed in chooser dialogs."
        },
        "etag": {
          "type": "string",
          "description": "Optional. A checksum, returned by the server, that can be sent on update requests to ensure the attestor has an up-to-date value before attempting to update it. See https://google.aip.dev/154."
        },
        "name": {
          "type": "string",
          "description": "The resource name, in the format: `projects/*/attestors/*`. This field may not be updated."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the attestor was last updated."
        },
        "userOwnedDrydockNote": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:UserOwnedDrydockNoteResponse",
          "description": "A Drydock ATTESTATION_AUTHORITY Note, created by the user."
        }
      },
      "type": "object",
      "required": [
        "attestorId",
        "description",
        "etag",
        "name",
        "project",
        "updateTime",
        "userOwnedDrydockNote"
      ],
      "inputProperties": {
        "attestorId": {
          "type": "string",
          "description": "Required. The attestors ID.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A descriptive comment. This field may be updated. The field may be displayed in chooser dialogs."
        },
        "etag": {
          "type": "string",
          "description": "Optional. A checksum, returned by the server, that can be sent on update requests to ensure the attestor has an up-to-date value before attempting to update it. See https://google.aip.dev/154."
        },
        "name": {
          "type": "string",
          "description": "The resource name, in the format: `projects/*/attestors/*`. This field may not be updated."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userOwnedDrydockNote": {
          "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:UserOwnedDrydockNote",
          "description": "A Drydock ATTESTATION_AUTHORITY Note, created by the user."
        }
      },
      "requiredInputs": [
        "attestorId"
      ]
    },
    "google-native:binaryauthorization/v1beta1:AttestorIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1beta1:AttestorIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1beta1:AttestorIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "attestorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "attestorId",
        "bindings",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "attestorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "attestorId"
      ]
    },
    "google-native:binaryauthorization/v1beta1:PolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1beta1:PolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:binaryauthorization/v1beta1:PolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      }
    },
    "google-native:blockchainnodeengine/v1:BlockchainNode": {
      "description": "Creates a new blockchain node in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "blockchainNodeId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "blockchainType": {
          "type": "string",
          "description": "Immutable. The blockchain type of the node."
        },
        "connectionInfo": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:ConnectionInfoResponse",
          "description": "The connection information used to interact with a blockchain node."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp at which the blockchain node was first created."
        },
        "ethereumDetails": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EthereumDetailsResponse",
          "description": "Ethereum-specific blockchain node details."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided key-value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The fully qualified name of the blockchain node. e.g. `projects/my-project/locations/us-central1/blockchainNodes/my-node`."
        },
        "privateServiceConnectEnabled": {
          "type": "boolean",
          "description": "Optional. When true, the node is only accessible via Private Service Connect; no public endpoints are exposed. Otherwise, the node is only accessible via public endpoints. See https://cloud.google.com/vpc/docs/private-service-connect."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "A status representing the state of the node."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp at which the blockchain node was last updated."
        }
      },
      "type": "object",
      "required": [
        "blockchainNodeId",
        "blockchainType",
        "connectionInfo",
        "createTime",
        "ethereumDetails",
        "labels",
        "location",
        "name",
        "privateServiceConnectEnabled",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "blockchainNodeId": {
          "type": "string",
          "description": "Required. ID of the requesting object.",
          "replaceOnChanges": true
        },
        "blockchainType": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:BlockchainNodeBlockchainType",
          "description": "Immutable. The blockchain type of the node."
        },
        "ethereumDetails": {
          "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EthereumDetails",
          "description": "Ethereum-specific blockchain node details."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided key-value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateServiceConnectEnabled": {
          "type": "boolean",
          "description": "Optional. When true, the node is only accessible via Private Service Connect; no public endpoints are exposed. Otherwise, the node is only accessible via public endpoints. See https://cloud.google.com/vpc/docs/private-service-connect."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "blockchainNodeId"
      ]
    },
    "google-native:certificatemanager/v1:Certificate": {
      "description": "Creates a new Certificate in a given project and location.",
      "properties": {
        "certificateId": {
          "type": "string",
          "description": "Required. A user-provided name of the certificate.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a Certificate."
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a certificate."
        },
        "expireTime": {
          "type": "string",
          "description": "The expiry timestamp of a Certificate."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a Certificate."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managed": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:ManagedCertificateResponse",
          "description": "If set, contains configuration and state of a managed certificate."
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the certificate. Certificate names must be unique globally and match pattern `projects/*/locations/*/certificates/*`."
        },
        "pemCertificate": {
          "type": "string",
          "description": "The PEM-encoded certificate chain."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": 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). Managed certificates that haven't been provisioned yet have this field populated with a value of the managed.domains field."
        },
        "scope": {
          "type": "string",
          "description": "Immutable. The scope of the certificate."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:SelfManagedCertificateResponse",
          "description": "If set, defines data of a self-managed certificate."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a Certificate."
        }
      },
      "type": "object",
      "required": [
        "certificateId",
        "createTime",
        "description",
        "expireTime",
        "labels",
        "location",
        "managed",
        "name",
        "pemCertificate",
        "project",
        "sanDnsnames",
        "scope",
        "selfManaged",
        "updateTime"
      ],
      "inputProperties": {
        "certificateId": {
          "type": "string",
          "description": "Required. A user-provided name of the certificate.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a certificate."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a Certificate."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managed": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:ManagedCertificate",
          "description": "If set, contains configuration and state of a managed certificate."
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the certificate. Certificate names must be unique globally and match pattern `projects/*/locations/*/certificates/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:CertificateScope",
          "description": "Immutable. The scope of the certificate."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:SelfManagedCertificate",
          "description": "If set, defines data of a self-managed certificate."
        }
      },
      "requiredInputs": [
        "certificateId"
      ]
    },
    "google-native:certificatemanager/v1:CertificateIssuanceConfig": {
      "description": "Creates a new CertificateIssuanceConfig in a given project and location.",
      "properties": {
        "certificateAuthorityConfig": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:CertificateAuthorityConfigResponse",
          "description": "The CA that issues the workload certificate. It includes the CA address, type, authentication to CA service, etc."
        },
        "certificateIssuanceConfigId": {
          "type": "string",
          "description": "Required. A user-provided name of the certificate config.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a CertificateIssuanceConfig."
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a CertificateIssuanceConfig."
        },
        "keyAlgorithm": {
          "type": "string",
          "description": "The key algorithm to use when generating the private key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a CertificateIssuanceConfig."
        },
        "lifetime": {
          "type": "string",
          "description": "Workload certificate lifetime requested."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the certificate issuance config. CertificateIssuanceConfig names must be unique globally and match pattern `projects/*/locations/*/certificateIssuanceConfigs/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rotationWindowPercentage": {
          "type": "integer",
          "description": "Specifies the percentage of elapsed time of the certificate lifetime to wait before renewing the certificate. Must be a number between 1-99, inclusive."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a CertificateIssuanceConfig."
        }
      },
      "type": "object",
      "required": [
        "certificateAuthorityConfig",
        "certificateIssuanceConfigId",
        "createTime",
        "description",
        "keyAlgorithm",
        "labels",
        "lifetime",
        "location",
        "name",
        "project",
        "rotationWindowPercentage",
        "updateTime"
      ],
      "inputProperties": {
        "certificateAuthorityConfig": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:CertificateAuthorityConfig",
          "description": "The CA that issues the workload certificate. It includes the CA address, type, authentication to CA service, etc."
        },
        "certificateIssuanceConfigId": {
          "type": "string",
          "description": "Required. A user-provided name of the certificate config.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a CertificateIssuanceConfig."
        },
        "keyAlgorithm": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:CertificateIssuanceConfigKeyAlgorithm",
          "description": "The key algorithm to use when generating the private key."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a CertificateIssuanceConfig."
        },
        "lifetime": {
          "type": "string",
          "description": "Workload certificate lifetime requested."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the certificate issuance config. CertificateIssuanceConfig names must be unique globally and match pattern `projects/*/locations/*/certificateIssuanceConfigs/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rotationWindowPercentage": {
          "type": "integer",
          "description": "Specifies the percentage of elapsed time of the certificate lifetime to wait before renewing the certificate. Must be a number between 1-99, inclusive."
        }
      },
      "requiredInputs": [
        "certificateAuthorityConfig",
        "certificateIssuanceConfigId",
        "keyAlgorithm",
        "lifetime",
        "rotationWindowPercentage"
      ]
    },
    "google-native:certificatemanager/v1:CertificateMap": {
      "description": "Creates a new CertificateMap in a given project and location.",
      "properties": {
        "certificateMapId": {
          "type": "string",
          "description": "Required. A user-provided name of the certificate map.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a Certificate Map."
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a certificate map."
        },
        "gclbTargets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:GclbTargetResponse"
          },
          "description": "A list of GCLB targets that use this Certificate Map. A Target Proxy is only present on this list if it's attached to a Forwarding Rule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a Certificate Map."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the Certificate Map. Certificate Map names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The update timestamp of a Certificate Map."
        }
      },
      "type": "object",
      "required": [
        "certificateMapId",
        "createTime",
        "description",
        "gclbTargets",
        "labels",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "certificateMapId": {
          "type": "string",
          "description": "Required. A user-provided name of the certificate map.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a certificate map."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a Certificate Map."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the Certificate Map. Certificate Map names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "certificateMapId"
      ]
    },
    "google-native:certificatemanager/v1:CertificateMapEntry": {
      "description": "Creates a new CertificateMapEntry in a given project and location.",
      "properties": {
        "certificateMapEntryId": {
          "type": "string",
          "description": "Required. A user-provided name of the certificate map entry.",
          "replaceOnChanges": true
        },
        "certificateMapId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of Certificates defines for the given `hostname`. There can be defined up to four certificates in each Certificate Map Entry. Each certificate must match pattern `projects/*/locations/*/certificates/*`."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a Certificate Map Entry."
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a certificate map entry."
        },
        "hostname": {
          "type": "string",
          "description": "A Hostname (FQDN, e.g. `example.com`) or a wildcard hostname expression (`*.example.com`) for a set of hostnames with common suffix. Used as Server Name Indication (SNI) for selecting a proper certificate."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a Certificate Map Entry."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "matcher": {
          "type": "string",
          "description": "A predefined matcher for particular cases, other than SNI selection."
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the Certificate Map Entry. Certificate Map Entry names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*/certificateMapEntries/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "A serving state of this Certificate Map Entry."
        },
        "updateTime": {
          "type": "string",
          "description": "The update timestamp of a Certificate Map Entry."
        }
      },
      "type": "object",
      "required": [
        "certificateMapEntryId",
        "certificateMapId",
        "certificates",
        "createTime",
        "description",
        "hostname",
        "labels",
        "location",
        "matcher",
        "name",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "certificateMapEntryId": {
          "type": "string",
          "description": "Required. A user-provided name of the certificate map entry.",
          "replaceOnChanges": true
        },
        "certificateMapId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of Certificates defines for the given `hostname`. There can be defined up to four certificates in each Certificate Map Entry. Each certificate must match pattern `projects/*/locations/*/certificates/*`."
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a certificate map entry."
        },
        "hostname": {
          "type": "string",
          "description": "A Hostname (FQDN, e.g. `example.com`) or a wildcard hostname expression (`*.example.com`) for a set of hostnames with common suffix. Used as Server Name Indication (SNI) for selecting a proper certificate."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a Certificate Map Entry."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "matcher": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:CertificateMapEntryMatcher",
          "description": "A predefined matcher for particular cases, other than SNI selection."
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the Certificate Map Entry. Certificate Map Entry names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*/certificateMapEntries/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "certificateMapEntryId",
        "certificateMapId"
      ]
    },
    "google-native:certificatemanager/v1:DnsAuthorization": {
      "description": "Creates a new DnsAuthorization in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a DnsAuthorization."
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a DnsAuthorization."
        },
        "dnsAuthorizationId": {
          "type": "string",
          "description": "Required. A user-provided name of the dns authorization.",
          "replaceOnChanges": true
        },
        "dnsResourceRecord": {
          "$ref": "#/types/google-native:certificatemanager%2Fv1:DnsResourceRecordResponse",
          "description": "DNS Resource Record that needs to be added to DNS configuration."
        },
        "domain": {
          "type": "string",
          "description": "Immutable. A domain that is being authorized. A DnsAuthorization resource covers a single domain and its wildcard, e.g. authorization for `example.com` can be used to issue certificates for `example.com` and `*.example.com`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a DnsAuthorization."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the dns authorization. DnsAuthorization names must be unique globally and match pattern `projects/*/locations/*/dnsAuthorizations/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a DnsAuthorization."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "dnsAuthorizationId",
        "dnsResourceRecord",
        "domain",
        "labels",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a DnsAuthorization."
        },
        "dnsAuthorizationId": {
          "type": "string",
          "description": "Required. A user-provided name of the dns authorization.",
          "replaceOnChanges": true
        },
        "domain": {
          "type": "string",
          "description": "Immutable. A domain that is being authorized. A DnsAuthorization resource covers a single domain and its wildcard, e.g. authorization for `example.com` can be used to issue certificates for `example.com` and `*.example.com`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a DnsAuthorization."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the dns authorization. DnsAuthorization names must be unique globally and match pattern `projects/*/locations/*/dnsAuthorizations/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "dnsAuthorizationId",
        "domain"
      ]
    },
    "google-native:certificatemanager/v1:TrustConfig": {
      "description": "Creates a new TrustConfig in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a TrustConfig."
        },
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a TrustConfig."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a TrustConfig."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the trust config. TrustConfig names must be unique globally and match pattern `projects/*/locations/*/trustConfigs/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trustConfigId": {
          "type": "string",
          "description": "Required. A user-provided name of the TrustConfig. Must match the regexp `[a-z0-9-]{1,63}`.",
          "replaceOnChanges": true
        },
        "trustStores": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:TrustStoreResponse"
          },
          "description": "Set of trust stores to perform validation against. This field is supported when TrustConfig is configured with Load Balancers, currently not supported for SPIFFE certificate validation. Only one TrustStore specified is currently allowed."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a TrustConfig."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "trustConfigId",
        "trustStores",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "One or more paragraphs of text description of a TrustConfig."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with a TrustConfig."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the trust config. TrustConfig names must be unique globally and match pattern `projects/*/locations/*/trustConfigs/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trustConfigId": {
          "type": "string",
          "description": "Required. A user-provided name of the TrustConfig. Must match the regexp `[a-z0-9-]{1,63}`.",
          "replaceOnChanges": true
        },
        "trustStores": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:TrustStore"
          },
          "description": "Set of trust stores to perform validation against. This field is supported when TrustConfig is configured with Load Balancers, currently not supported for SPIFFE certificate validation. Only one TrustStore specified is currently allowed."
        }
      },
      "requiredInputs": [
        "trustConfigId"
      ]
    },
    "google-native:cloudasset/v1:Feed": {
      "description": "Creates a feed in a parent project/folder/organization to listen to its asset updates.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "assetNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format)."
        },
        "assetTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `\"compute.googleapis.com/Disk\"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types)."
        },
        "condition": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:ExprResponse",
          "description": "A condition which determines whether an asset update should be published. If specified, an asset will be returned only when the expression evaluates to true. When set, `expression` field in the `Expr` must be a valid [CEL expression] (https://github.com/google/cel-spec) on a TemporalAsset with name `temporal_asset`. Example: a Feed with expression (\"temporal_asset.deleted == true\") will only publish Asset deletions. Other fields of `Expr` are optional. See our [user guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes-with-condition) for detailed instructions."
        },
        "contentType": {
          "type": "string",
          "description": "Asset content type. If not specified, no content but the asset name and type will be returned."
        },
        "feedOutputConfig": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:FeedOutputConfigResponse",
          "description": "Feed output configuration defining where the asset updates are published to."
        },
        "name": {
          "type": "string",
          "description": "The format will be projects/{project_number}/feeds/{client-assigned_feed_identifier} or folders/{folder_number}/feeds/{client-assigned_feed_identifier} or organizations/{organization_number}/feeds/{client-assigned_feed_identifier} The client-assigned feed identifier must be unique within the parent project/folder/organization."
        },
        "relationshipTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types."
        },
        "v1Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v1Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "assetNames",
        "assetTypes",
        "condition",
        "contentType",
        "feedOutputConfig",
        "name",
        "relationshipTypes",
        "v1Id",
        "v1Id1"
      ],
      "inputProperties": {
        "assetNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format)."
        },
        "assetTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `\"compute.googleapis.com/Disk\"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types)."
        },
        "condition": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:Expr",
          "description": "A condition which determines whether an asset update should be published. If specified, an asset will be returned only when the expression evaluates to true. When set, `expression` field in the `Expr` must be a valid [CEL expression] (https://github.com/google/cel-spec) on a TemporalAsset with name `temporal_asset`. Example: a Feed with expression (\"temporal_asset.deleted == true\") will only publish Asset deletions. Other fields of `Expr` are optional. See our [user guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes-with-condition) for detailed instructions."
        },
        "contentType": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:FeedContentType",
          "description": "Asset content type. If not specified, no content but the asset name and type will be returned."
        },
        "feedId": {
          "type": "string",
          "description": "This is the client-assigned asset feed identifier and it needs to be unique under a specific parent project/folder/organization."
        },
        "feedOutputConfig": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:FeedOutputConfig",
          "description": "Feed output configuration defining where the asset updates are published to."
        },
        "name": {
          "type": "string",
          "description": "The format will be projects/{project_number}/feeds/{client-assigned_feed_identifier} or folders/{folder_number}/feeds/{client-assigned_feed_identifier} or organizations/{organization_number}/feeds/{client-assigned_feed_identifier} The client-assigned feed identifier must be unique within the parent project/folder/organization."
        },
        "relationshipTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types."
        },
        "v1Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v1Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "feedId",
        "feedOutputConfig",
        "name",
        "v1Id",
        "v1Id1"
      ]
    },
    "google-native:cloudasset/v1:SavedQuery": {
      "description": "Creates a saved query in a parent project/folder/organization.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "content": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:QueryContentResponse",
          "description": "The query content."
        },
        "createTime": {
          "type": "string",
          "description": "The create time of this saved query."
        },
        "creator": {
          "type": "string",
          "description": "The account's email address who has created this saved query."
        },
        "description": {
          "type": "string",
          "description": "The description of this saved query. This value should be fewer than 255 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels applied on the resource. This value should not contain more than 10 entries. The key and value of each entry must be non-empty and fewer than 64 characters."
        },
        "lastUpdateTime": {
          "type": "string",
          "description": "The last update time of this saved query."
        },
        "lastUpdater": {
          "type": "string",
          "description": "The account's email address who has updated this saved query most recently."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the saved query. The format must be: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id"
        },
        "savedQueryId": {
          "type": "string",
          "description": "Required. The ID to use for the saved query, which must be unique in the specified parent. It will become the final component of the saved query's resource name. This value should be 4-63 characters, and valid characters are `a-z-`. Notice that this field is required in the saved query creation, and the `name` field of the `saved_query` will be ignored.",
          "replaceOnChanges": true
        },
        "v1Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v1Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "content",
        "createTime",
        "creator",
        "description",
        "labels",
        "lastUpdateTime",
        "lastUpdater",
        "name",
        "savedQueryId",
        "v1Id",
        "v1Id1"
      ],
      "inputProperties": {
        "content": {
          "$ref": "#/types/google-native:cloudasset%2Fv1:QueryContent",
          "description": "The query content."
        },
        "description": {
          "type": "string",
          "description": "The description of this saved query. This value should be fewer than 255 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels applied on the resource. This value should not contain more than 10 entries. The key and value of each entry must be non-empty and fewer than 64 characters."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the saved query. The format must be: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id"
        },
        "savedQueryId": {
          "type": "string",
          "description": "Required. The ID to use for the saved query, which must be unique in the specified parent. It will become the final component of the saved query's resource name. This value should be 4-63 characters, and valid characters are `a-z-`. Notice that this field is required in the saved query creation, and the `name` field of the `saved_query` will be ignored.",
          "replaceOnChanges": true
        },
        "v1Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v1Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "savedQueryId",
        "v1Id",
        "v1Id1"
      ]
    },
    "google-native:cloudbilling/v1:BillingAccount": {
      "description": "This method creates [billing subaccounts](https://cloud.google.com/billing/docs/concepts#subaccounts). Google Cloud resellers should use the Channel Services APIs, [accounts.customers.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers/create) and [accounts.customers.entitlements.create](https://cloud.google.com/channel/docs/reference/rest/v1/accounts.customers.entitlements/create). When creating a subaccount, the current authenticated user must have the `billing.accounts.update` IAM permission on the parent account, which is typically given to billing account [administrators](https://cloud.google.com/billing/docs/how-to/billing-access). This method will return an error if the parent account has not been provisioned for subaccounts.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The display name given to the billing account, such as `My Billing Account`. This name is displayed in the Google Cloud Console."
        },
        "masterBillingAccount": {
          "type": "string",
          "description": "If this account is a [subaccount](https://cloud.google.com/billing/docs/concepts), then this will be the resource name of the parent billing account that it is being resold through. Otherwise this will be empty."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF` would be the resource name for billing account `012345-567890-ABCDEF`."
        },
        "open": {
          "type": "boolean",
          "description": "True if the billing account is open, and will therefore be charged for any usage on associated projects. False if the billing account is closed, and therefore projects associated with it will be unable to use paid services."
        },
        "parent": {
          "type": "string",
          "description": "Optional. The parent to create a billing account from. Format: - organizations/{organization_id} eg organizations/12345678 - billingAccounts/{billing_account_id} eg `billingAccounts/012345-567890-ABCDEF`"
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "masterBillingAccount",
        "name",
        "open",
        "parent"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name given to the billing account, such as `My Billing Account`. This name is displayed in the Google Cloud Console."
        },
        "masterBillingAccount": {
          "type": "string",
          "description": "If this account is a [subaccount](https://cloud.google.com/billing/docs/concepts), then this will be the resource name of the parent billing account that it is being resold through. Otherwise this will be empty."
        },
        "parent": {
          "type": "string",
          "description": "Optional. The parent to create a billing account from. Format: - organizations/{organization_id} eg organizations/12345678 - billingAccounts/{billing_account_id} eg `billingAccounts/012345-567890-ABCDEF`"
        }
      }
    },
    "google-native:cloudbilling/v1:BillingAccountIamBinding": {
      "description": "Sets the access control policy for a billing account. Replaces any existing policy. The caller must have the `billing.accounts.setIamPolicy` permission on the account, which is often given to billing account [administrators](https://cloud.google.com/billing/docs/how-to/billing-access).",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudbilling/v1:BillingAccountIamMember": {
      "description": "Sets the access control policy for a billing account. Replaces any existing policy. The caller must have the `billing.accounts.setIamPolicy` permission on the account, which is often given to billing account [administrators](https://cloud.google.com/billing/docs/how-to/billing-access).",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudbilling/v1:BillingAccountIamPolicy": {
      "description": "Sets the access control policy for a billing account. Replaces any existing policy. The caller must have the `billing.accounts.setIamPolicy` permission on the account, which is often given to billing account [administrators](https://cloud.google.com/billing/docs/how-to/billing-access).\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbilling%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbilling%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "billingAccountId",
        "bindings",
        "etag",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbilling%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbilling%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "billingAccountId"
      ]
    },
    "google-native:cloudbuild/v1:BitbucketServerConfig": {
      "description": "Creates a new `BitbucketServerConfig`. This API is experimental.",
      "properties": {
        "apiKey": {
          "type": "string",
          "description": "Immutable. API Key that will be attached to webhook. Once this field has been set, it cannot be changed. If you need to change it, please create another BitbucketServerConfig."
        },
        "bitbucketServerConfigId": {
          "type": "string",
          "description": "Optional. The ID to use for the BitbucketServerConfig, which will become the final component of the BitbucketServerConfig's resource name. bitbucket_server_config_id must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character."
        },
        "connectedRepositories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerRepositoryIdResponse"
          },
          "description": "Connected Bitbucket Server repositories for this config."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the config was created."
        },
        "hostUri": {
          "type": "string",
          "description": "Immutable. The URI of the Bitbucket Server host. Once this field has been set, it cannot be changed. If you need to change it, please create another BitbucketServerConfig."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the config."
        },
        "peeredNetwork": {
          "type": "string",
          "description": "Optional. The network to be used when reaching out to the Bitbucket Server instance. The VPC network must be enabled for private service connection. This should be set if the Bitbucket Server instance is hosted on-premises and not reachable by public internet. If this field is left empty, no network peering will occur and calls to the Bitbucket Server instance will be made over the public internet. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number or id and {network} is the name of a VPC network in the project."
        },
        "peeredNetworkIpRange": {
          "type": "string",
          "description": "Immutable. 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 29 bit prefix size. `/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. The field only has an effect if peered_network is set."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerSecretsResponse",
          "description": "Secret Manager secrets needed by the config."
        },
        "sslCa": {
          "type": "string",
          "description": "Optional. SSL certificate to use for requests to Bitbucket Server. The format should be PEM format but the extension can be one of .pem, .cer, or .crt."
        },
        "username": {
          "type": "string",
          "description": "Username of the account Cloud Build will use on Bitbucket Server."
        },
        "webhookKey": {
          "type": "string",
          "description": "UUID included in webhook requests. The UUID is used to look up the corresponding config."
        }
      },
      "type": "object",
      "required": [
        "apiKey",
        "connectedRepositories",
        "createTime",
        "hostUri",
        "location",
        "name",
        "peeredNetwork",
        "peeredNetworkIpRange",
        "project",
        "secrets",
        "sslCa",
        "username",
        "webhookKey"
      ],
      "inputProperties": {
        "apiKey": {
          "type": "string",
          "description": "Immutable. API Key that will be attached to webhook. Once this field has been set, it cannot be changed. If you need to change it, please create another BitbucketServerConfig."
        },
        "bitbucketServerConfigId": {
          "type": "string",
          "description": "Optional. The ID to use for the BitbucketServerConfig, which will become the final component of the BitbucketServerConfig's resource name. bitbucket_server_config_id must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the config was created."
        },
        "hostUri": {
          "type": "string",
          "description": "Immutable. The URI of the Bitbucket Server host. Once this field has been set, it cannot be changed. If you need to change it, please create another BitbucketServerConfig."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the config."
        },
        "peeredNetwork": {
          "type": "string",
          "description": "Optional. The network to be used when reaching out to the Bitbucket Server instance. The VPC network must be enabled for private service connection. This should be set if the Bitbucket Server instance is hosted on-premises and not reachable by public internet. If this field is left empty, no network peering will occur and calls to the Bitbucket Server instance will be made over the public internet. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number or id and {network} is the name of a VPC network in the project."
        },
        "peeredNetworkIpRange": {
          "type": "string",
          "description": "Immutable. 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 29 bit prefix size. `/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. The field only has an effect if peered_network is set."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerSecrets",
          "description": "Secret Manager secrets needed by the config."
        },
        "sslCa": {
          "type": "string",
          "description": "Optional. SSL certificate to use for requests to Bitbucket Server. The format should be PEM format but the extension can be one of .pem, .cer, or .crt."
        },
        "username": {
          "type": "string",
          "description": "Username of the account Cloud Build will use on Bitbucket Server."
        }
      },
      "requiredInputs": [
        "apiKey",
        "hostUri",
        "secrets"
      ]
    },
    "google-native:cloudbuild/v1:Build": {
      "description": "Starts a build with the specified configuration. This method returns a long-running `Operation`, which includes the build ID. Pass the build ID to `GetBuild` to determine the build status (such as `SUCCESS` or `FAILURE`).\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "approval": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildApprovalResponse",
          "description": "Describes this build's approval configuration, status, and result."
        },
        "artifacts": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ArtifactsResponse",
          "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps."
        },
        "availableSecrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:SecretsResponse",
          "description": "Secrets and secret environment variables."
        },
        "buildTriggerId": {
          "type": "string",
          "description": "The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the request to create the build was received."
        },
        "failureInfo": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:FailureInfoResponse",
          "description": "Contains information about the build when status=FAILURE."
        },
        "finishTime": {
          "type": "string",
          "description": "Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build's execution."
        },
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the `Build` resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logUrl": {
          "type": "string",
          "description": "URL to logs for this build in Google Cloud Console."
        },
        "logsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`."
        },
        "name": {
          "type": "string",
          "description": "The 'Build' name with format: `projects/{project}/locations/{location}/builds/{build}`, where {build} is a unique identifier generated by the service."
        },
        "options": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsResponse",
          "description": "Special options for this build."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "projectId": {
          "type": "string",
          "description": "Required. ID of the project.",
          "replaceOnChanges": true
        },
        "queueTtl": {
          "type": "string",
          "description": "TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time."
        },
        "results": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ResultsResponse",
          "description": "Results of the build."
        },
        "secrets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:SecretResponse"
          },
          "description": "Secrets to decrypt using Cloud Key Management Service. Note: Secret Manager is the recommended technique for managing sensitive data with Cloud Build. Use `available_secrets` to configure builds to access secrets from Secret Manager. For instructions, see: https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets"
        },
        "serviceAccount": {
          "type": "string",
          "description": "IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. "
        },
        "source": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:SourceResponse",
          "description": "The location of the source files to build."
        },
        "sourceProvenance": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:SourceProvenanceResponse",
          "description": "A permanent fixed identifier for source."
        },
        "startTime": {
          "type": "string",
          "description": "Time at which execution of the build was started."
        },
        "status": {
          "type": "string",
          "description": "Status of the build."
        },
        "statusDetail": {
          "type": "string",
          "description": "Customer-readable message about the current status."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildStepResponse"
          },
          "description": "The operations to be performed on the workspace."
        },
        "substitutions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Substitutions data for `Build` resource."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags for annotation of a `Build`. These are not docker tags."
        },
        "timeout": {
          "type": "string",
          "description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`. `timeout` starts ticking from `startTime`. Default time is 60 minutes."
        },
        "timing": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all artifacts including docker images and non docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:WarningResponse"
          },
          "description": "Non-fatal problems encountered during the execution of the build."
        }
      },
      "type": "object",
      "required": [
        "approval",
        "artifacts",
        "availableSecrets",
        "buildTriggerId",
        "createTime",
        "failureInfo",
        "finishTime",
        "images",
        "location",
        "logUrl",
        "logsBucket",
        "name",
        "options",
        "project",
        "projectId",
        "queueTtl",
        "results",
        "secrets",
        "serviceAccount",
        "source",
        "sourceProvenance",
        "startTime",
        "status",
        "statusDetail",
        "steps",
        "substitutions",
        "tags",
        "timeout",
        "timing",
        "warnings"
      ],
      "inputProperties": {
        "artifacts": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:Artifacts",
          "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps."
        },
        "availableSecrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:Secrets",
          "description": "Secrets and secret environment variables."
        },
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the `Build` resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`."
        },
        "options": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptions",
          "description": "Special options for this build."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "projectId": {
          "type": "string",
          "description": "Required. ID of the project.",
          "replaceOnChanges": true
        },
        "queueTtl": {
          "type": "string",
          "description": "TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time."
        },
        "secrets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:Secret"
          },
          "description": "Secrets to decrypt using Cloud Key Management Service. Note: Secret Manager is the recommended technique for managing sensitive data with Cloud Build. Use `available_secrets` to configure builds to access secrets from Secret Manager. For instructions, see: https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets"
        },
        "serviceAccount": {
          "type": "string",
          "description": "IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. "
        },
        "source": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:Source",
          "description": "The location of the source files to build."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildStep"
          },
          "description": "The operations to be performed on the workspace."
        },
        "substitutions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Substitutions data for `Build` resource."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags for annotation of a `Build`. These are not docker tags."
        },
        "timeout": {
          "type": "string",
          "description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`. `timeout` starts ticking from `startTime`. Default time is 60 minutes."
        }
      },
      "requiredInputs": [
        "projectId",
        "steps"
      ]
    },
    "google-native:cloudbuild/v1:GitLabConfig": {
      "description": "Creates a new `GitLabConfig`. This API is experimental",
      "properties": {
        "connectedRepositories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabRepositoryIdResponse"
          },
          "description": "Connected GitLab.com or GitLabEnterprise repositories for this config."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the config was created."
        },
        "enterpriseConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabEnterpriseConfigResponse",
          "description": "Optional. GitLabEnterprise config."
        },
        "gitlabConfigId": {
          "type": "string",
          "description": "Optional. The ID to use for the GitLabConfig, which will become the final component of the GitLabConfig’s resource name. gitlab_config_id must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the config."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabSecretsResponse",
          "description": "Secret Manager secrets needed by the config."
        },
        "username": {
          "type": "string",
          "description": "Username of the GitLab.com or GitLab Enterprise account Cloud Build will use."
        },
        "webhookKey": {
          "type": "string",
          "description": "UUID included in webhook requests. The UUID is used to look up the corresponding config."
        }
      },
      "type": "object",
      "required": [
        "connectedRepositories",
        "createTime",
        "enterpriseConfig",
        "location",
        "name",
        "project",
        "secrets",
        "username",
        "webhookKey"
      ],
      "inputProperties": {
        "connectedRepositories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabRepositoryId"
          },
          "description": "Connected GitLab.com or GitLabEnterprise repositories for this config."
        },
        "enterpriseConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabEnterpriseConfig",
          "description": "Optional. GitLabEnterprise config."
        },
        "gitlabConfigId": {
          "type": "string",
          "description": "Optional. The ID to use for the GitLabConfig, which will become the final component of the GitLabConfig’s resource name. gitlab_config_id must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the config."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabSecrets",
          "description": "Secret Manager secrets needed by the config."
        },
        "username": {
          "type": "string",
          "description": "Username of the GitLab.com or GitLab Enterprise account Cloud Build will use."
        }
      },
      "requiredInputs": [
        "secrets"
      ]
    },
    "google-native:cloudbuild/v1:GithubEnterpriseConfig": {
      "description": "Create an association between a GCP project and a GitHub Enterprise server.",
      "properties": {
        "appId": {
          "type": "string",
          "description": "The GitHub app id of the Cloud Build app on the GitHub Enterprise server."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the installation was associated with the project."
        },
        "displayName": {
          "type": "string",
          "description": "Name to display for this config."
        },
        "gheConfigId": {
          "type": "string",
          "description": "Optional. The ID to use for the GithubEnterpriseConfig, which will become the final component of the GithubEnterpriseConfig's resource name. ghe_config_id must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character"
        },
        "hostUrl": {
          "type": "string",
          "description": "The URL of the github enterprise host the configuration is for."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The full resource name for the GitHubEnterpriseConfig For example: \"projects/{$project_id}/locations/{$location_id}/githubEnterpriseConfigs/{$config_id}\""
        },
        "peeredNetwork": {
          "type": "string",
          "description": "Optional. The network to be used when reaching out to the GitHub Enterprise server. The VPC network must be enabled for private service connection. This should be set if the GitHub Enterprise server is hosted on-premises and not reachable by public internet. If this field is left empty, no network peering will occur and calls to the GitHub Enterprise server will be made over the public internet. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number or id and {network} is the name of a VPC network in the project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "projectId": {
          "type": "string",
          "description": "ID of the project."
        },
        "secrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitHubEnterpriseSecretsResponse",
          "description": "Names of secrets in Secret Manager."
        },
        "sslCa": {
          "type": "string",
          "description": "Optional. SSL certificate to use for requests to GitHub Enterprise."
        },
        "webhookKey": {
          "type": "string",
          "description": "The key that should be attached to webhook calls to the ReceiveWebhook endpoint."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "createTime",
        "displayName",
        "hostUrl",
        "location",
        "name",
        "peeredNetwork",
        "project",
        "secrets",
        "sslCa",
        "webhookKey"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "description": "The GitHub app id of the Cloud Build app on the GitHub Enterprise server."
        },
        "displayName": {
          "type": "string",
          "description": "Name to display for this config."
        },
        "gheConfigId": {
          "type": "string",
          "description": "Optional. The ID to use for the GithubEnterpriseConfig, which will become the final component of the GithubEnterpriseConfig's resource name. ghe_config_id must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character"
        },
        "hostUrl": {
          "type": "string",
          "description": "The URL of the github enterprise host the configuration is for."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The full resource name for the GitHubEnterpriseConfig For example: \"projects/{$project_id}/locations/{$location_id}/githubEnterpriseConfigs/{$config_id}\""
        },
        "peeredNetwork": {
          "type": "string",
          "description": "Optional. The network to be used when reaching out to the GitHub Enterprise server. The VPC network must be enabled for private service connection. This should be set if the GitHub Enterprise server is hosted on-premises and not reachable by public internet. If this field is left empty, no network peering will occur and calls to the GitHub Enterprise server will be made over the public internet. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number or id and {network} is the name of a VPC network in the project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "projectId": {
          "type": "string",
          "description": "ID of the project."
        },
        "secrets": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitHubEnterpriseSecrets",
          "description": "Names of secrets in Secret Manager."
        },
        "sslCa": {
          "type": "string",
          "description": "Optional. SSL certificate to use for requests to GitHub Enterprise."
        },
        "webhookKey": {
          "type": "string",
          "description": "The key that should be attached to webhook calls to the ReceiveWebhook endpoint."
        }
      },
      "requiredInputs": [
        "appId"
      ]
    },
    "google-native:cloudbuild/v1:Trigger": {
      "description": "Creates a new `BuildTrigger`.",
      "properties": {
        "approvalConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ApprovalConfigResponse",
          "description": "Configuration for manual approval to start a build invocation of this BuildTrigger."
        },
        "autodetect": {
          "type": "boolean",
          "description": "Autodetect build configuration. The following precedence is used (case insensitive): 1. cloudbuild.yaml 2. cloudbuild.yml 3. cloudbuild.json 4. Dockerfile Currently only available for GitHub App Triggers."
        },
        "bitbucketServerTriggerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerTriggerConfigResponse",
          "description": "BitbucketServerTriggerConfig describes the configuration of a trigger that creates a build whenever a Bitbucket Server event is received."
        },
        "build": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildResponse",
          "description": "Contents of the build template."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the trigger was created."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of this trigger."
        },
        "disabled": {
          "type": "boolean",
          "description": "If true, the trigger will never automatically execute a build."
        },
        "eventType": {
          "type": "string",
          "description": "EventType allows the user to explicitly set the type of event to which this BuildTrigger should respond. This field will be validated against the rest of the configuration if it is set."
        },
        "filename": {
          "type": "string",
          "description": "Path, from the source root, to the build configuration file (i.e. cloudbuild.yaml)."
        },
        "filter": {
          "type": "string",
          "description": "A Common Expression Language string."
        },
        "gitFileSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitFileSourceResponse",
          "description": "The file source describing the local or remote Build template."
        },
        "github": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitHubEventsConfigResponse",
          "description": "GitHubEventsConfig describes the configuration of a trigger that creates a build whenever a GitHub event is received. Mutually exclusive with `trigger_template`."
        },
        "gitlabEnterpriseEventsConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabEventsConfigResponse",
          "description": "GitLabEnterpriseEventsConfig describes the configuration of a trigger that creates a build whenever a GitLab Enterprise event is received."
        },
        "ignoredFiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "ignored_files and included_files are file glob matches using https://golang.org/pkg/path/filepath/#Match extended with support for \"**\". If ignored_files and changed files are both empty, then they are not used to determine whether or not to trigger a build. If ignored_files is not empty, then we ignore any files that match any of the ignored_file globs. If the change has no files that are outside of the ignored_files globs, then we do not trigger a build."
        },
        "includeBuildLogs": {
          "type": "string",
          "description": "If set to INCLUDE_BUILD_LOGS_WITH_STATUS, log url will be shown on GitHub page when build status is final. Setting this field to INCLUDE_BUILD_LOGS_WITH_STATUS for non GitHub triggers results in INVALID_ARGUMENT error."
        },
        "includedFiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If any of the files altered in the commit pass the ignored_files filter and included_files is empty, then as far as this filter is concerned, we should trigger the build. If any of the files altered in the commit pass the ignored_files filter and included_files is not empty, then we make sure that at least one of those files matches a included_files glob. If not, then we do not trigger a build."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "User-assigned name of the trigger. Must be unique within the project. Trigger names must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "projectId": {
          "type": "string",
          "description": "Required. ID of the project for which to configure automatic builds.",
          "replaceOnChanges": true
        },
        "pubsubConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PubsubConfigResponse",
          "description": "PubsubConfig describes the configuration of a trigger that creates a build whenever a Pub/Sub message is published."
        },
        "repositoryEventConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:RepositoryEventConfigResponse",
          "description": "The configuration of a trigger that creates a build whenever an event from Repo API is received."
        },
        "resourceName": {
          "type": "string",
          "description": "The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account used for all user-controlled operations including UpdateBuildTrigger, RunBuildTrigger, CreateBuild, and CancelBuild. If no service account is set, then the standard Cloud Build service account ([PROJECT_NUM]@system.gserviceaccount.com) will be used instead. Format: `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT_ID_OR_EMAIL}`"
        },
        "sourceToBuild": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitRepoSourceResponse",
          "description": "The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers."
        },
        "substitutions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags for annotation of a `BuildTrigger`"
        },
        "triggerTemplate": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:RepoSourceResponse",
          "description": "Template describing the types of source changes to trigger a build. Branch and tag names in trigger templates are interpreted as regular expressions. Any branch or tag change that matches that regular expression will trigger a build. Mutually exclusive with `github`."
        },
        "webhookConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:WebhookConfigResponse",
          "description": "WebhookConfig describes the configuration of a trigger that creates a build whenever a webhook is sent to a trigger's webhook URL."
        }
      },
      "type": "object",
      "required": [
        "approvalConfig",
        "autodetect",
        "bitbucketServerTriggerConfig",
        "build",
        "createTime",
        "description",
        "disabled",
        "eventType",
        "filename",
        "filter",
        "gitFileSource",
        "github",
        "gitlabEnterpriseEventsConfig",
        "ignoredFiles",
        "includeBuildLogs",
        "includedFiles",
        "location",
        "name",
        "project",
        "projectId",
        "pubsubConfig",
        "repositoryEventConfig",
        "resourceName",
        "serviceAccount",
        "sourceToBuild",
        "substitutions",
        "tags",
        "triggerTemplate",
        "webhookConfig"
      ],
      "inputProperties": {
        "approvalConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:ApprovalConfig",
          "description": "Configuration for manual approval to start a build invocation of this BuildTrigger."
        },
        "autodetect": {
          "type": "boolean",
          "description": "Autodetect build configuration. The following precedence is used (case insensitive): 1. cloudbuild.yaml 2. cloudbuild.yml 3. cloudbuild.json 4. Dockerfile Currently only available for GitHub App Triggers."
        },
        "bitbucketServerTriggerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerTriggerConfig",
          "description": "BitbucketServerTriggerConfig describes the configuration of a trigger that creates a build whenever a Bitbucket Server event is received."
        },
        "build": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:Build",
          "description": "Contents of the build template."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of this trigger."
        },
        "disabled": {
          "type": "boolean",
          "description": "If true, the trigger will never automatically execute a build."
        },
        "eventType": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TriggerEventType",
          "description": "EventType allows the user to explicitly set the type of event to which this BuildTrigger should respond. This field will be validated against the rest of the configuration if it is set."
        },
        "filename": {
          "type": "string",
          "description": "Path, from the source root, to the build configuration file (i.e. cloudbuild.yaml)."
        },
        "filter": {
          "type": "string",
          "description": "A Common Expression Language string."
        },
        "gitFileSource": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitFileSource",
          "description": "The file source describing the local or remote Build template."
        },
        "github": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitHubEventsConfig",
          "description": "GitHubEventsConfig describes the configuration of a trigger that creates a build whenever a GitHub event is received. Mutually exclusive with `trigger_template`."
        },
        "gitlabEnterpriseEventsConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabEventsConfig",
          "description": "GitLabEnterpriseEventsConfig describes the configuration of a trigger that creates a build whenever a GitLab Enterprise event is received."
        },
        "ignoredFiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "ignored_files and included_files are file glob matches using https://golang.org/pkg/path/filepath/#Match extended with support for \"**\". If ignored_files and changed files are both empty, then they are not used to determine whether or not to trigger a build. If ignored_files is not empty, then we ignore any files that match any of the ignored_file globs. If the change has no files that are outside of the ignored_files globs, then we do not trigger a build."
        },
        "includeBuildLogs": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:TriggerIncludeBuildLogs",
          "description": "If set to INCLUDE_BUILD_LOGS_WITH_STATUS, log url will be shown on GitHub page when build status is final. Setting this field to INCLUDE_BUILD_LOGS_WITH_STATUS for non GitHub triggers results in INVALID_ARGUMENT error."
        },
        "includedFiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If any of the files altered in the commit pass the ignored_files filter and included_files is empty, then as far as this filter is concerned, we should trigger the build. If any of the files altered in the commit pass the ignored_files filter and included_files is not empty, then we make sure that at least one of those files matches a included_files glob. If not, then we do not trigger a build."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "User-assigned name of the trigger. Must be unique within the project. Trigger names must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "projectId": {
          "type": "string",
          "description": "Required. ID of the project for which to configure automatic builds.",
          "replaceOnChanges": true
        },
        "pubsubConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PubsubConfig",
          "description": "PubsubConfig describes the configuration of a trigger that creates a build whenever a Pub/Sub message is published."
        },
        "repositoryEventConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:RepositoryEventConfig",
          "description": "The configuration of a trigger that creates a build whenever an event from Repo API is received."
        },
        "resourceName": {
          "type": "string",
          "description": "The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account used for all user-controlled operations including UpdateBuildTrigger, RunBuildTrigger, CreateBuild, and CancelBuild. If no service account is set, then the standard Cloud Build service account ([PROJECT_NUM]@system.gserviceaccount.com) will be used instead. Format: `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT_ID_OR_EMAIL}`"
        },
        "sourceToBuild": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:GitRepoSource",
          "description": "The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers."
        },
        "substitutions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags for annotation of a `BuildTrigger`"
        },
        "triggerTemplate": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:RepoSource",
          "description": "Template describing the types of source changes to trigger a build. Branch and tag names in trigger templates are interpreted as regular expressions. Any branch or tag change that matches that regular expression will trigger a build. Mutually exclusive with `github`."
        },
        "webhookConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:WebhookConfig",
          "description": "WebhookConfig describes the configuration of a trigger that creates a build whenever a webhook is sent to a trigger's webhook URL."
        }
      },
      "requiredInputs": [
        "projectId"
      ]
    },
    "google-native:cloudbuild/v1:WorkerPool": {
      "description": "Creates a `WorkerPool`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified annotations. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the request to create the `WorkerPool` was received."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time at which the request to delete the `WorkerPool` was received."
        },
        "displayName": {
          "type": "string",
          "description": "A user-specified, human-readable name for the `WorkerPool`. If provided, this value must be 1-63 characters."
        },
        "etag": {
          "type": "string",
          "description": "Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `WorkerPool`, with format `projects/{project}/locations/{location}/workerPools/{worker_pool}`. The value of `{worker_pool}` is provided by `worker_pool_id` in `CreateWorkerPool` request and the value of `{location}` is determined by the endpoint accessed."
        },
        "privatePoolV1Config": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PrivatePoolV1ConfigResponse",
          "description": "Legacy Private Pool configuration."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "`WorkerPool` state."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the `WorkerPool`."
        },
        "updateTime": {
          "type": "string",
          "description": "Time at which the request to update the `WorkerPool` was received."
        },
        "workerPoolId": {
          "type": "string",
          "description": "Required. Immutable. The ID to use for the `WorkerPool`, which will become the final component of the resource name. This value should be 1-63 characters, and valid characters are /a-z-/.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "createTime",
        "deleteTime",
        "displayName",
        "etag",
        "location",
        "name",
        "privatePoolV1Config",
        "project",
        "state",
        "uid",
        "updateTime",
        "workerPoolId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified annotations. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "displayName": {
          "type": "string",
          "description": "A user-specified, human-readable name for the `WorkerPool`. If provided, this value must be 1-63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privatePoolV1Config": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1:PrivatePoolV1Config",
          "description": "Legacy Private Pool configuration."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workerPoolId": {
          "type": "string",
          "description": "Required. Immutable. The ID to use for the `WorkerPool`, which will become the final component of the resource name. This value should be 1-63 characters, and valid characters are /a-z-/.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workerPoolId"
      ]
    },
    "google-native:cloudbuild/v1alpha1:WorkerPool": {
      "description": "Creates a `WorkerPool` to run the builds, and returns the new worker pool.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time at which the request to create the `WorkerPool` was received."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time at which the request to delete the `WorkerPool` was received."
        },
        "name": {
          "type": "string",
          "description": "User-defined name of the `WorkerPool`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of regions to create the `WorkerPool`. Regions can't be empty. If Cloud Build adds a new GCP region in the future, the existing `WorkerPool` will not be enabled in the new region automatically; you must add the new region to the `regions` field to enable the `WorkerPool` in that region."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The service account used to manage the `WorkerPool`. The service account must have the Compute Instance Admin (Beta) permission at the project level."
        },
        "status": {
          "type": "string",
          "description": "WorkerPool Status."
        },
        "updateTime": {
          "type": "string",
          "description": "Time at which the request to update the `WorkerPool` was received."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1alpha1:WorkerConfigResponse",
          "description": "Configuration to be used for a creating workers in the `WorkerPool`."
        },
        "workerCount": {
          "type": "string",
          "description": "Total number of workers to be created across all requested regions."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "name",
        "project",
        "regions",
        "serviceAccountEmail",
        "status",
        "updateTime",
        "workerConfig",
        "workerCount"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "User-defined name of the `WorkerPool`."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the GCP project for which the `WorkerPool` is created."
        },
        "regions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1alpha1:WorkerPoolRegionsItem"
          },
          "description": "List of regions to create the `WorkerPool`. Regions can't be empty. If Cloud Build adds a new GCP region in the future, the existing `WorkerPool` will not be enabled in the new region automatically; you must add the new region to the `regions` field to enable the `WorkerPool` in that region."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1alpha1:WorkerConfig",
          "description": "Configuration to be used for a creating workers in the `WorkerPool`."
        },
        "workerCount": {
          "type": "string",
          "description": "Total number of workers to be created across all requested regions."
        }
      }
    },
    "google-native:cloudbuild/v1alpha2:WorkerPool": {
      "description": "Creates a `WorkerPool` to run the builds, and returns the new worker pool.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time at which the request to create the `WorkerPool` was received."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time at which the request to delete the `WorkerPool` was received."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `WorkerPool`. Format of the name is `projects/{project_id}/workerPools/{worker_pool_id}`, where the value of {worker_pool_id} is provided in the CreateWorkerPool request."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1alpha2:NetworkConfigResponse",
          "description": "Network configuration for the `WorkerPool`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "Immutable. The region where the `WorkerPool` runs. Only \"us-central1\" is currently supported. Note that `region` cannot be changed once the `WorkerPool` is created."
        },
        "state": {
          "type": "string",
          "description": "WorkerPool state."
        },
        "updateTime": {
          "type": "string",
          "description": "Time at which the request to update the `WorkerPool` was received."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1alpha2:WorkerConfigResponse",
          "description": "Worker configuration for the `WorkerPool`."
        },
        "workerPoolId": {
          "type": "string",
          "description": "Required. Immutable. The ID to use for the `WorkerPool`, which will become the final component of the resource name. This value should be 1-63 characters, and valid characters are /a-z-/.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "name",
        "networkConfig",
        "project",
        "region",
        "state",
        "updateTime",
        "workerConfig",
        "workerPoolId"
      ],
      "inputProperties": {
        "networkConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1alpha2:NetworkConfig",
          "description": "Network configuration for the `WorkerPool`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "Immutable. The region where the `WorkerPool` runs. Only \"us-central1\" is currently supported. Note that `region` cannot be changed once the `WorkerPool` is created."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1alpha2:WorkerConfig",
          "description": "Worker configuration for the `WorkerPool`."
        },
        "workerPoolId": {
          "type": "string",
          "description": "Required. Immutable. The ID to use for the `WorkerPool`, which will become the final component of the resource name. This value should be 1-63 characters, and valid characters are /a-z-/.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "region",
        "workerPoolId"
      ]
    },
    "google-native:cloudbuild/v1beta1:WorkerPool": {
      "description": "Creates a `WorkerPool` to run the builds, and returns the new worker pool. NOTE: As of now, this method returns an `Operation` that is always complete.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified annotations. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the request to create the `WorkerPool` was received."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time at which the request to delete the `WorkerPool` was received."
        },
        "displayName": {
          "type": "string",
          "description": "A user-specified, human-readable name for the `WorkerPool`. If provided, this value must be 1-63 characters."
        },
        "etag": {
          "type": "string",
          "description": "Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `WorkerPool`, with format `projects/{project}/locations/{location}/workerPools/{worker_pool}`. The value of `{worker_pool}` is provided by `worker_pool_id` in `CreateWorkerPool` request and the value of `{location}` is determined by the endpoint accessed."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1beta1:NetworkConfigResponse",
          "description": "Network configuration for the `WorkerPool`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "`WorkerPool` state."
        },
        "uid": {
          "type": "string",
          "description": "A unique identifier for the `WorkerPool`."
        },
        "updateTime": {
          "type": "string",
          "description": "Time at which the request to update the `WorkerPool` was received."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1beta1:WorkerConfigResponse",
          "description": "Worker configuration for the `WorkerPool`."
        },
        "workerPoolId": {
          "type": "string",
          "description": "Required. Immutable. The ID to use for the `WorkerPool`, which will become the final component of the resource name. This value should be 1-63 characters, and valid characters are /a-z-/.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "createTime",
        "deleteTime",
        "displayName",
        "etag",
        "location",
        "name",
        "networkConfig",
        "project",
        "state",
        "uid",
        "updateTime",
        "workerConfig",
        "workerPoolId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User specified annotations. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "displayName": {
          "type": "string",
          "description": "A user-specified, human-readable name for the `WorkerPool`. If provided, this value must be 1-63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "networkConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1beta1:NetworkConfig",
          "description": "Network configuration for the `WorkerPool`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workerConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv1beta1:WorkerConfig",
          "description": "Worker configuration for the `WorkerPool`."
        },
        "workerPoolId": {
          "type": "string",
          "description": "Required. Immutable. The ID to use for the `WorkerPool`, which will become the final component of the resource name. This value should be 1-63 characters, and valid characters are /a-z-/.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workerPoolId"
      ]
    },
    "google-native:cloudbuild/v2:Connection": {
      "description": "Creates a Connection.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Allows clients to store small amounts of arbitrary data."
        },
        "connectionId": {
          "type": "string",
          "description": "Required. The ID to use for the Connection, which will become the final component of the Connection's resource name. Names must be unique per-project per-location. Allows alphanumeric characters and any of -._~%!$&'()*+,;=@.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Server assigned timestamp for when the connection was created."
        },
        "disabled": {
          "type": "boolean",
          "description": "If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "githubConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GitHubConfigResponse",
          "description": "Configuration for connections to github.com."
        },
        "githubEnterpriseConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2GitHubEnterpriseConfigResponse",
          "description": "Configuration for connections to an instance of GitHub Enterprise."
        },
        "gitlabConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2GitLabConfigResponse",
          "description": "Configuration for connections to gitlab.com or an instance of GitLab Enterprise."
        },
        "installationState": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:InstallationStateResponse",
          "description": "Installation state of the Connection."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the connection, in the format `projects/{project}/locations/{location}/connections/{connection_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Set to true when the connection is being set up or updated in the background."
        },
        "updateTime": {
          "type": "string",
          "description": "Server assigned timestamp for when the connection was updated."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "connectionId",
        "createTime",
        "disabled",
        "etag",
        "githubConfig",
        "githubEnterpriseConfig",
        "gitlabConfig",
        "installationState",
        "location",
        "name",
        "project",
        "reconciling",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Allows clients to store small amounts of arbitrary data."
        },
        "connectionId": {
          "type": "string",
          "description": "Required. The ID to use for the Connection, which will become the final component of the Connection's resource name. Names must be unique per-project per-location. Allows alphanumeric characters and any of -._~%!$&'()*+,;=@.",
          "replaceOnChanges": true
        },
        "disabled": {
          "type": "boolean",
          "description": "If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "githubConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GitHubConfig",
          "description": "Configuration for connections to github.com."
        },
        "githubEnterpriseConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2GitHubEnterpriseConfig",
          "description": "Configuration for connections to an instance of GitHub Enterprise."
        },
        "gitlabConfig": {
          "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2GitLabConfig",
          "description": "Configuration for connections to gitlab.com or an instance of GitLab Enterprise."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the connection, in the format `projects/{project}/locations/{location}/connections/{connection_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "connectionId"
      ]
    },
    "google-native:cloudbuild/v2:ConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudbuild/v2:ConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudbuild/v2:ConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectionId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectionId"
      ]
    },
    "google-native:cloudbuild/v2:Repository": {
      "description": "Creates a Repository.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Allows clients to store small amounts of arbitrary data."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Server assigned timestamp for when the connection was created."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Resource name of the repository, in the format `projects/*/locations/*/connections/*/repositories/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteUri": {
          "type": "string",
          "description": "Git Clone HTTPS URI."
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The ID to use for the repository, which will become the final component of the repository's resource name. This ID should be unique in the connection. Allows alphanumeric characters and any of -._~%!$&'()*+,;=@.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Server assigned timestamp for when the connection was updated."
        },
        "webhookId": {
          "type": "string",
          "description": "External ID of the webhook created for the repository."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "connectionId",
        "createTime",
        "etag",
        "location",
        "name",
        "project",
        "remoteUri",
        "repositoryId",
        "updateTime",
        "webhookId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Allows clients to store small amounts of arbitrary data."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Resource name of the repository, in the format `projects/*/locations/*/connections/*/repositories/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteUri": {
          "type": "string",
          "description": "Git Clone HTTPS URI."
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The ID to use for the repository, which will become the final component of the repository's resource name. This ID should be unique in the connection. Allows alphanumeric characters and any of -._~%!$&'()*+,;=@.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "connectionId",
        "remoteUri",
        "repositoryId"
      ]
    },
    "google-native:cloudchannel/v1:ChannelPartnerLink": {
      "description": "Initiates a channel partner link between a distributor and a reseller, or between resellers in an n-tier reseller channel. Invited partners need to follow the invite_link_uri provided in the response to accept. After accepting the invitation, a link is set up between the two parties. You must be a distributor to call this method. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * ALREADY_EXISTS: The ChannelPartnerLink sent in the request already exists. * NOT_FOUND: No Cloud Identity customer exists for provided domain. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The new ChannelPartnerLink resource.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "channelPartnerCloudIdentityInfo": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1CloudIdentityInfoResponse",
          "description": "Cloud Identity info of the channel partner (IR)."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp of when the channel partner link is created."
        },
        "inviteLinkUri": {
          "type": "string",
          "description": "URI of the web page where partner accepts the link invitation."
        },
        "linkState": {
          "type": "string",
          "description": "State of the channel partner link."
        },
        "name": {
          "type": "string",
          "description": "Resource name for the channel partner link, in the format accounts/{account_id}/channelPartnerLinks/{id}."
        },
        "publicId": {
          "type": "string",
          "description": "Public identifier that a customer must use to generate a transfer token to move to this distributor-reseller combination."
        },
        "resellerCloudIdentityId": {
          "type": "string",
          "description": "Cloud Identity ID of the linked reseller."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp of when the channel partner link is updated."
        }
      },
      "type": "object",
      "required": [
        "accountId",
        "channelPartnerCloudIdentityInfo",
        "createTime",
        "inviteLinkUri",
        "linkState",
        "name",
        "publicId",
        "resellerCloudIdentityId",
        "updateTime"
      ],
      "inputProperties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "linkState": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:ChannelPartnerLinkLinkState",
          "description": "State of the channel partner link."
        },
        "resellerCloudIdentityId": {
          "type": "string",
          "description": "Cloud Identity ID of the linked reseller."
        }
      },
      "requiredInputs": [
        "accountId",
        "linkState",
        "resellerCloudIdentityId"
      ]
    },
    "google-native:cloudchannel/v1:ChannelPartnerRepricingConfig": {
      "description": "Creates a ChannelPartnerRepricingConfig. Call this method to set modifications for a specific ChannelPartner's bill. You can only create configs if the RepricingConfig.effective_invoice_month is a future month. If needed, you can create a config for the current month, with some restrictions. When creating a config for a future month, make sure there are no existing configs for that RepricingConfig.effective_invoice_month. The following restrictions are for creating configs in the current month. * This functionality is reserved for recovering from an erroneous config, and should not be used for regular business cases. * The new config will not modify exports used with other configs. Changes to the config may be immediate, but may take up to 24 hours. * There is a limit of ten configs for any ChannelPartner or RepricingConfig.EntitlementGranularity.entitlement, for any RepricingConfig.effective_invoice_month. * The contained ChannelPartnerRepricingConfig.repricing_config value must be different from the value used in the current config for a ChannelPartner. Possible Error Codes: * PERMISSION_DENIED: If the account making the request and the account being queried are different. * INVALID_ARGUMENT: Missing or invalid required parameters in the request. Also displays if the updated config is for the current month or past months. * NOT_FOUND: The ChannelPartnerRepricingConfig specified does not exist or is not associated with the given account. * INTERNAL: Any non-user error related to technical issues in the backend. In this case, contact Cloud Channel support. Return Value: If successful, the updated ChannelPartnerRepricingConfig resource, otherwise returns an error.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "channelPartnerLinkId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the ChannelPartnerRepricingConfig. Format: accounts/{account_id}/channelPartnerLinks/{channel_partner_id}/channelPartnerRepricingConfigs/{id}."
        },
        "repricingConfig": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigResponse",
          "description": "The configuration for bill modifications made by a reseller before sending it to ChannelPartner."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp of an update to the repricing rule. If `update_time` is after RepricingConfig.effective_invoice_month then it indicates this was set mid-month."
        }
      },
      "type": "object",
      "required": [
        "accountId",
        "channelPartnerLinkId",
        "name",
        "repricingConfig",
        "updateTime"
      ],
      "inputProperties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "channelPartnerLinkId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repricingConfig": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfig",
          "description": "The configuration for bill modifications made by a reseller before sending it to ChannelPartner."
        }
      },
      "requiredInputs": [
        "accountId",
        "channelPartnerLinkId",
        "repricingConfig"
      ]
    },
    "google-native:cloudchannel/v1:Customer": {
      "description": "Creates a new Customer resource under the reseller or distributor account. Possible error codes: * PERMISSION_DENIED: * The reseller account making the request is different from the reseller account in the API request. * You are not authorized to create a customer. See https://support.google.com/channelservices/answer/9759265 * INVALID_ARGUMENT: * Required request parameters are missing or invalid. * Domain field value doesn't match the primary email domain. Return value: The newly created Customer resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "alternateEmail": {
          "type": "string",
          "description": "Secondary contact email. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers."
        },
        "channelPartnerId": {
          "type": "string",
          "description": "Cloud Identity ID of the customer's channel partner. Populated only if a channel partner exists for this customer."
        },
        "channelPartnerLinkId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "cloudIdentityId": {
          "type": "string",
          "description": "The customer's Cloud Identity ID if the customer has a Cloud Identity resource."
        },
        "cloudIdentityInfo": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1CloudIdentityInfoResponse",
          "description": "Cloud Identity information for the customer. Populated only if a Cloud Identity account exists for this customer."
        },
        "correlationId": {
          "type": "string",
          "description": "Optional. External CRM ID for the customer. Populated only if a CRM ID exists for this customer."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the customer was created."
        },
        "domain": {
          "type": "string",
          "description": "The customer's primary domain. Must match the primary contact email's domain."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id}"
        },
        "orgDisplayName": {
          "type": "string",
          "description": "Name of the organization that the customer entity represents."
        },
        "orgPostalAddress": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleTypePostalAddressResponse",
          "description": "The organization address for the customer. To enforce US laws and embargoes, we require a region, postal code, and address lines. You must provide valid addresses for every customer. To set the customer's language, use the Customer-level language code."
        },
        "primaryContactInfo": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ContactInfoResponse",
          "description": "Primary contact info."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the customer was updated."
        }
      },
      "type": "object",
      "required": [
        "accountId",
        "alternateEmail",
        "channelPartnerId",
        "channelPartnerLinkId",
        "cloudIdentityId",
        "cloudIdentityInfo",
        "correlationId",
        "createTime",
        "domain",
        "languageCode",
        "name",
        "orgDisplayName",
        "orgPostalAddress",
        "primaryContactInfo",
        "updateTime"
      ],
      "inputProperties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "alternateEmail": {
          "type": "string",
          "description": "Secondary contact email. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers."
        },
        "channelPartnerId": {
          "type": "string",
          "description": "Cloud Identity ID of the customer's channel partner. Populated only if a channel partner exists for this customer."
        },
        "channelPartnerLinkId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "correlationId": {
          "type": "string",
          "description": "Optional. External CRM ID for the customer. Populated only if a CRM ID exists for this customer."
        },
        "domain": {
          "type": "string",
          "description": "The customer's primary domain. Must match the primary contact email's domain."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier."
        },
        "orgDisplayName": {
          "type": "string",
          "description": "Name of the organization that the customer entity represents."
        },
        "orgPostalAddress": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleTypePostalAddress",
          "description": "The organization address for the customer. To enforce US laws and embargoes, we require a region, postal code, and address lines. You must provide valid addresses for every customer. To set the customer's language, use the Customer-level language code."
        },
        "primaryContactInfo": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ContactInfo",
          "description": "Primary contact info."
        }
      },
      "requiredInputs": [
        "accountId",
        "channelPartnerLinkId",
        "domain",
        "orgDisplayName",
        "orgPostalAddress"
      ]
    },
    "google-native:cloudchannel/v1:CustomerRepricingConfig": {
      "description": "Creates a CustomerRepricingConfig. Call this method to set modifications for a specific customer's bill. You can only create configs if the RepricingConfig.effective_invoice_month is a future month. If needed, you can create a config for the current month, with some restrictions. When creating a config for a future month, make sure there are no existing configs for that RepricingConfig.effective_invoice_month. The following restrictions are for creating configs in the current month. * This functionality is reserved for recovering from an erroneous config, and should not be used for regular business cases. * The new config will not modify exports used with other configs. Changes to the config may be immediate, but may take up to 24 hours. * There is a limit of ten configs for any RepricingConfig.EntitlementGranularity.entitlement, for any RepricingConfig.effective_invoice_month. * The contained CustomerRepricingConfig.repricing_config value must be different from the value used in the current config for a RepricingConfig.EntitlementGranularity.entitlement. Possible Error Codes: * PERMISSION_DENIED: If the account making the request and the account being queried are different. * INVALID_ARGUMENT: Missing or invalid required parameters in the request. Also displays if the updated config is for the current month or past months. * NOT_FOUND: The CustomerRepricingConfig specified does not exist or is not associated with the given account. * INTERNAL: Any non-user error related to technical issues in the backend. In this case, contact Cloud Channel support. Return Value: If successful, the updated CustomerRepricingConfig resource, otherwise returns an error.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the CustomerRepricingConfig. Format: accounts/{account_id}/customers/{customer_id}/customerRepricingConfigs/{id}."
        },
        "repricingConfig": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigResponse",
          "description": "The configuration for bill modifications made by a reseller before sending it to customers."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp of an update to the repricing rule. If `update_time` is after RepricingConfig.effective_invoice_month then it indicates this was set mid-month."
        }
      },
      "type": "object",
      "required": [
        "accountId",
        "customerId",
        "name",
        "repricingConfig",
        "updateTime"
      ],
      "inputProperties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repricingConfig": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfig",
          "description": "The configuration for bill modifications made by a reseller before sending it to customers."
        }
      },
      "requiredInputs": [
        "accountId",
        "customerId",
        "repricingConfig"
      ]
    },
    "google-native:cloudchannel/v1:Entitlement": {
      "description": "Creates an entitlement for a customer. Possible error codes: * PERMISSION_DENIED: * The customer doesn't belong to the reseller. * The reseller is not authorized to transact on this Product. See https://support.google.com/channelservices/answer/9759265 * INVALID_ARGUMENT: * Required request parameters are missing or invalid. * There is already a customer entitlement for a SKU from the same product family. * INVALID_VALUE: Make sure the OfferId is valid. If it is, contact Google Channel support for further troubleshooting. * NOT_FOUND: The customer or offer resource was not found. * ALREADY_EXISTS: * The SKU was already purchased for the customer. * The customer's primary email already exists. Retry after changing the customer's primary contact email. * CONDITION_NOT_MET or FAILED_PRECONDITION: * The domain required for purchasing a SKU has not been verified. * A pre-requisite SKU required to purchase an Add-On SKU is missing. For example, Google Workspace Business Starter is required to purchase Vault or Drive. * (Developer accounts only) Reseller and resold domain must meet the following naming requirements: * Domain names must start with goog-test. * Domain names must include the reseller domain. * INTERNAL: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. * UNKNOWN: Any non-user error related to a technical issue in the backend. Contact Cloud Channel support. Return value: The ID of a long-running operation. To get the results of the operation, call the GetOperation method of CloudChannelOperationsService. The Operation metadata will contain an instance of OperationMetadata.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "associationInfo": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1AssociationInfoResponse",
          "description": "Association information to other entitlements."
        },
        "billingAccount": {
          "type": "string",
          "description": "Optional. The billing account resource name that is used to pay for this entitlement."
        },
        "commitmentSettings": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1CommitmentSettingsResponse",
          "description": "Commitment settings for a commitment-based Offer. Required for commitment based offers."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the entitlement is created."
        },
        "customerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of an entitlement in the form: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}."
        },
        "offer": {
          "type": "string",
          "description": "The offer resource name for which the entitlement is to be created. Takes the form: accounts/{account_id}/offers/{offer_id}."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ParameterResponse"
          },
          "description": "Extended entitlement parameters. When creating an entitlement, valid parameter names and values are defined in the Offer.parameter_definitions. For Google Workspace, the following Parameters may be accepted as input: - max_units: The maximum assignable units for a flexible offer OR - num_units: The total commitment for commitment-based offers The response may additionally include the following output-only Parameters: - assigned_units: The number of licenses assigned to users. For Google Cloud billing subaccounts, the following Parameter may be accepted as input: - display_name: The display name of the billing subaccount."
        },
        "provisionedService": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ProvisionedServiceResponse",
          "description": "Service provisioning details for the entitlement."
        },
        "provisioningState": {
          "type": "string",
          "description": "Current provisioning state of the entitlement."
        },
        "purchaseOrderId": {
          "type": "string",
          "description": "Optional. This purchase order (PO) information is for resellers to use for their company tracking usage. If a purchaseOrderId value is given, it appears in the API responses and shows up in the invoice. The property accepts up to 80 plain text characters. This is only supported for Google Workspace entitlements."
        },
        "suspensionReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Enumerable of all current suspension reasons for an entitlement."
        },
        "trialSettings": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1TrialSettingsResponse",
          "description": "Settings for trial offers."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which the entitlement is updated."
        }
      },
      "type": "object",
      "required": [
        "accountId",
        "associationInfo",
        "billingAccount",
        "commitmentSettings",
        "createTime",
        "customerId",
        "name",
        "offer",
        "parameters",
        "provisionedService",
        "provisioningState",
        "purchaseOrderId",
        "suspensionReasons",
        "trialSettings",
        "updateTime"
      ],
      "inputProperties": {
        "accountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "associationInfo": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1AssociationInfo",
          "description": "Association information to other entitlements."
        },
        "billingAccount": {
          "type": "string",
          "description": "Optional. The billing account resource name that is used to pay for this entitlement."
        },
        "commitmentSettings": {
          "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1CommitmentSettings",
          "description": "Commitment settings for a commitment-based Offer. Required for commitment based offers."
        },
        "customerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "offer": {
          "type": "string",
          "description": "The offer resource name for which the entitlement is to be created. Takes the form: accounts/{account_id}/offers/{offer_id}."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1Parameter"
          },
          "description": "Extended entitlement parameters. When creating an entitlement, valid parameter names and values are defined in the Offer.parameter_definitions. For Google Workspace, the following Parameters may be accepted as input: - max_units: The maximum assignable units for a flexible offer OR - num_units: The total commitment for commitment-based offers The response may additionally include the following output-only Parameters: - assigned_units: The number of licenses assigned to users. For Google Cloud billing subaccounts, the following Parameter may be accepted as input: - display_name: The display name of the billing subaccount."
        },
        "purchaseOrderId": {
          "type": "string",
          "description": "Optional. This purchase order (PO) information is for resellers to use for their company tracking usage. If a purchaseOrderId value is given, it appears in the API responses and shows up in the invoice. The property accepts up to 80 plain text characters. This is only supported for Google Workspace entitlements."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. You can specify an optional unique request ID, and if you need to retry your request, the server will know to ignore the request if it's complete. For example, you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if it received the original operation with the same request ID. If it did, it will ignore the second request. The request ID must be a valid [UUID](https://tools.ietf.org/html/rfc4122) with the exception that zero UUID is not supported (`00000000-0000-0000-0000-000000000000`)."
        }
      },
      "requiredInputs": [
        "accountId",
        "customerId",
        "offer"
      ]
    },
    "google-native:clouddeploy/v1:Automation": {
      "description": "Creates a new Automation in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. Annotations must meet the following constraints: * Annotations are key/value pairs. * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (`/`). * The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. * The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots(`.`), not longer than 253 characters in total, followed by a slash (`/`). See https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set for more details."
        },
        "automationId": {
          "type": "string",
          "description": "Required. ID of the `Automation`.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the automation was created."
        },
        "deliveryPipelineId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the `Automation`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The weak etag of the `Automation` resource. This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the `Automation`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}/automations/{automation}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationRuleResponse"
          },
          "description": "List of Automation rules associated with the Automation resource. Must have at least one rule and limited to 250 rules per Delivery Pipeline. Note: the order of the rules here is not the same as the order of execution."
        },
        "selector": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationResourceSelectorResponse",
          "description": "Selected resources to which the automation will be applied."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Email address of the user-managed IAM service account that creates Cloud Deploy release and rollout resources."
        },
        "suspended": {
          "type": "boolean",
          "description": "Optional. When Suspended, automation is deactivated from execution."
        },
        "uid": {
          "type": "string",
          "description": "Unique identifier of the `Automation`."
        },
        "updateTime": {
          "type": "string",
          "description": "Time at which the automation was updated."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "automationId",
        "createTime",
        "deliveryPipelineId",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "rules",
        "selector",
        "serviceAccount",
        "suspended",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. Annotations must meet the following constraints: * Annotations are key/value pairs. * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (`/`). * The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. * The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots(`.`), not longer than 253 characters in total, followed by a slash (`/`). See https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set for more details."
        },
        "automationId": {
          "type": "string",
          "description": "Required. ID of the `Automation`.",
          "replaceOnChanges": true
        },
        "deliveryPipelineId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the `Automation`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The weak etag of the `Automation` resource. This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationRule"
          },
          "description": "List of Automation rules associated with the Automation resource. Must have at least one rule and limited to 250 rules per Delivery Pipeline. Note: the order of the rules here is not the same as the order of execution."
        },
        "selector": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationResourceSelector",
          "description": "Selected resources to which the automation will be applied."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Email address of the user-managed IAM service account that creates Cloud Deploy release and rollout resources."
        },
        "suspended": {
          "type": "boolean",
          "description": "Optional. When Suspended, automation is deactivated from execution."
        }
      },
      "requiredInputs": [
        "automationId",
        "deliveryPipelineId",
        "rules",
        "selector",
        "serviceAccount"
      ]
    },
    "google-native:clouddeploy/v1:DeliveryPipeline": {
      "description": "Creates a new DeliveryPipeline in a given project and location.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy."
        },
        "condition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:PipelineConditionResponse",
          "description": "Information around the state of the Delivery Pipeline."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the pipeline was created."
        },
        "deliveryPipelineId": {
          "type": "string",
          "description": "Required. ID of the `DeliveryPipeline`.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Description of the `DeliveryPipeline`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `DeliveryPipeline`. Format is `projects/{project}/locations/{location}/deliveryPipelines/a-z{0,62}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serialPipeline": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:SerialPipelineResponse",
          "description": "SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`."
        },
        "suspended": {
          "type": "boolean",
          "description": "When suspended, no new releases or rollouts can be created, but in-progress ones will complete."
        },
        "uid": {
          "type": "string",
          "description": "Unique identifier of the `DeliveryPipeline`."
        },
        "updateTime": {
          "type": "string",
          "description": "Most recent time at which the pipeline was updated."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "condition",
        "createTime",
        "deliveryPipelineId",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "serialPipeline",
        "suspended",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy."
        },
        "deliveryPipelineId": {
          "type": "string",
          "description": "Required. ID of the `DeliveryPipeline`.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Description of the `DeliveryPipeline`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `DeliveryPipeline`. Format is `projects/{project}/locations/{location}/deliveryPipelines/a-z{0,62}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serialPipeline": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:SerialPipeline",
          "description": "SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`."
        },
        "suspended": {
          "type": "boolean",
          "description": "When suspended, no new releases or rollouts can be created, but in-progress ones will complete."
        }
      },
      "requiredInputs": [
        "deliveryPipelineId"
      ]
    },
    "google-native:clouddeploy/v1:DeliveryPipelineIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:clouddeploy/v1:DeliveryPipelineIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:clouddeploy/v1:DeliveryPipelineIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "deliveryPipelineId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "deliveryPipelineId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "deliveryPipelineId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "deliveryPipelineId"
      ]
    },
    "google-native:clouddeploy/v1:Release": {
      "description": "Creates a new Release in a given project and location.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "abandoned": {
          "type": "boolean",
          "description": "Indicates whether this is an abandoned release."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "buildArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:BuildArtifactResponse"
          },
          "description": "List of artifacts to pass through to Skaffold command."
        },
        "condition": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:ReleaseConditionResponse",
          "description": "Information around the state of the Release."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the `Release` was created."
        },
        "deliveryPipelineId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "deliveryPipelineSnapshot": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:DeliveryPipelineResponse",
          "description": "Snapshot of the parent pipeline taken at release creation time."
        },
        "deployParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The deploy parameters to use for all targets in this release."
        },
        "description": {
          "type": "string",
          "description": "Description of the `Release`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `Release`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/a-z{0,62}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseId": {
          "type": "string",
          "description": "Required. ID of the `Release`.",
          "replaceOnChanges": true
        },
        "renderEndTime": {
          "type": "string",
          "description": "Time at which the render completed."
        },
        "renderStartTime": {
          "type": "string",
          "description": "Time at which the render began."
        },
        "renderState": {
          "type": "string",
          "description": "Current state of the render operation."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "skaffoldConfigPath": {
          "type": "string",
          "description": "Filepath of the Skaffold config inside of the config URI."
        },
        "skaffoldConfigUri": {
          "type": "string",
          "description": "Cloud Storage URI of tar.gz archive containing Skaffold configuration."
        },
        "skaffoldVersion": {
          "type": "string",
          "description": "The Skaffold version to use when operating on this release, such as \"1.20.0\". Not all versions are valid; Cloud Deploy supports a specific set of versions. If unset, the most recent supported Skaffold version will be used."
        },
        "targetArtifacts": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from target ID to the target artifacts created during the render operation."
        },
        "targetRenders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map from target ID to details of the render operation for that target."
        },
        "targetSnapshots": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:TargetResponse"
          },
          "description": "Snapshot of the targets taken at release creation time."
        },
        "uid": {
          "type": "string",
          "description": "Unique identifier of the `Release`."
        }
      },
      "type": "object",
      "required": [
        "abandoned",
        "annotations",
        "buildArtifacts",
        "condition",
        "createTime",
        "deliveryPipelineId",
        "deliveryPipelineSnapshot",
        "deployParameters",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "releaseId",
        "renderEndTime",
        "renderStartTime",
        "renderState",
        "skaffoldConfigPath",
        "skaffoldConfigUri",
        "skaffoldVersion",
        "targetArtifacts",
        "targetRenders",
        "targetSnapshots",
        "uid"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "buildArtifacts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:BuildArtifact"
          },
          "description": "List of artifacts to pass through to Skaffold command."
        },
        "deliveryPipelineId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "deployParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The deploy parameters to use for all targets in this release."
        },
        "description": {
          "type": "string",
          "description": "Description of the `Release`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `Release`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/a-z{0,62}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseId": {
          "type": "string",
          "description": "Required. ID of the `Release`.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "skaffoldConfigPath": {
          "type": "string",
          "description": "Filepath of the Skaffold config inside of the config URI."
        },
        "skaffoldConfigUri": {
          "type": "string",
          "description": "Cloud Storage URI of tar.gz archive containing Skaffold configuration."
        },
        "skaffoldVersion": {
          "type": "string",
          "description": "The Skaffold version to use when operating on this release, such as \"1.20.0\". Not all versions are valid; Cloud Deploy supports a specific set of versions. If unset, the most recent supported Skaffold version will be used."
        }
      },
      "requiredInputs": [
        "deliveryPipelineId",
        "releaseId"
      ]
    },
    "google-native:clouddeploy/v1:Rollout": {
      "description": "Creates a new Rollout in a given project and location.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "approvalState": {
          "type": "string",
          "description": "Approval state of the `Rollout`."
        },
        "approveTime": {
          "type": "string",
          "description": "Time at which the `Rollout` was approved."
        },
        "controllerRollout": {
          "type": "string",
          "description": "Name of the `ControllerRollout`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/a-z{0,62}`."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the `Rollout` was created."
        },
        "deliveryPipelineId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "deployEndTime": {
          "type": "string",
          "description": "Time at which the `Rollout` finished deploying."
        },
        "deployFailureCause": {
          "type": "string",
          "description": "The reason this rollout failed. This will always be unspecified while the rollout is in progress."
        },
        "deployStartTime": {
          "type": "string",
          "description": "Time at which the `Rollout` started deploying."
        },
        "deployingBuild": {
          "type": "string",
          "description": "The resource name of the Cloud Build `Build` object that is used to deploy the Rollout. Format is `projects/{project}/locations/{location}/builds/{build}`."
        },
        "description": {
          "type": "string",
          "description": "Description of the `Rollout` for user purposes. Max length is 255 characters."
        },
        "enqueueTime": {
          "type": "string",
          "description": "Time at which the `Rollout` was enqueued."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "failureReason": {
          "type": "string",
          "description": "Additional information about the rollout failure, if available."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:MetadataResponse",
          "description": "Metadata contains information about the rollout."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `Rollout`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/a-z{0,62}`."
        },
        "phases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:PhaseResponse"
          },
          "description": "The phases that represent the workflows of this `Rollout`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "rollbackOfRollout": {
          "type": "string",
          "description": "Name of the `Rollout` that is rolled back by this `Rollout`. Empty if this `Rollout` wasn't created as a rollback."
        },
        "rolledBackByRollouts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of `Rollouts` that rolled back this `Rollout`."
        },
        "rolloutId": {
          "type": "string",
          "description": "Required. ID of the `Rollout`.",
          "replaceOnChanges": true
        },
        "startingPhaseId": {
          "type": "string",
          "description": "Optional. The starting phase ID for the `Rollout`. If empty the `Rollout` will start at the first phase."
        },
        "state": {
          "type": "string",
          "description": "Current state of the `Rollout`."
        },
        "targetId": {
          "type": "string",
          "description": "The ID of Target to which this `Rollout` is deploying."
        },
        "uid": {
          "type": "string",
          "description": "Unique identifier of the `Rollout`."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "approvalState",
        "approveTime",
        "controllerRollout",
        "createTime",
        "deliveryPipelineId",
        "deployEndTime",
        "deployFailureCause",
        "deployStartTime",
        "deployingBuild",
        "description",
        "enqueueTime",
        "etag",
        "failureReason",
        "labels",
        "location",
        "metadata",
        "name",
        "phases",
        "project",
        "releaseId",
        "rollbackOfRollout",
        "rolledBackByRollouts",
        "rolloutId",
        "state",
        "targetId",
        "uid"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "deliveryPipelineId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Description of the `Rollout` for user purposes. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `Rollout`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/a-z{0,62}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "rolloutId": {
          "type": "string",
          "description": "Required. ID of the `Rollout`.",
          "replaceOnChanges": true
        },
        "startingPhaseId": {
          "type": "string",
          "description": "Optional. The starting phase ID for the `Rollout`. If empty the `Rollout` will start at the first phase."
        },
        "targetId": {
          "type": "string",
          "description": "The ID of Target to which this `Rollout` is deploying."
        }
      },
      "requiredInputs": [
        "deliveryPipelineId",
        "releaseId",
        "rolloutId",
        "targetId"
      ]
    },
    "google-native:clouddeploy/v1:Target": {
      "description": "Creates a new Target in a given project and location.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "anthosCluster": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AnthosClusterResponse",
          "description": "Optional. Information specifying an Anthos Cluster."
        },
        "createTime": {
          "type": "string",
          "description": "Time at which the `Target` was created."
        },
        "deployParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The deploy parameters to use for this target."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the `Target`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "executionConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:ExecutionConfigResponse"
          },
          "description": "Configurations for all execution that relates to this `Target`. Each `ExecutionEnvironmentUsage` value may only be used in a single configuration; using the same value multiple times is an error. When one or more configurations are specified, they must include the `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values. When no configurations are specified, execution will use the default specified in `DefaultPool`."
        },
        "gke": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:GkeClusterResponse",
          "description": "Optional. Information specifying a GKE Cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiTarget": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:MultiTargetResponse",
          "description": "Optional. Information specifying a multiTarget."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `Target`. Format is `projects/{project}/locations/{location}/targets/a-z{0,62}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "requireApproval": {
          "type": "boolean",
          "description": "Optional. Whether or not the `Target` requires approval."
        },
        "run": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CloudRunLocationResponse",
          "description": "Optional. Information specifying a Cloud Run deployment target."
        },
        "targetId": {
          "type": "string",
          "description": "Required. ID of the `Target`.",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "Unique identifier of the `Target`."
        },
        "updateTime": {
          "type": "string",
          "description": "Most recent time at which the `Target` was updated."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "anthosCluster",
        "createTime",
        "deployParameters",
        "description",
        "etag",
        "executionConfigs",
        "gke",
        "labels",
        "location",
        "multiTarget",
        "name",
        "project",
        "requireApproval",
        "run",
        "targetId",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations."
        },
        "anthosCluster": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:AnthosCluster",
          "description": "Optional. Information specifying an Anthos Cluster."
        },
        "deployParameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The deploy parameters to use for this target."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the `Target`. Max length is 255 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "executionConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:ExecutionConfig"
          },
          "description": "Configurations for all execution that relates to this `Target`. Each `ExecutionEnvironmentUsage` value may only be used in a single configuration; using the same value multiple times is an error. When one or more configurations are specified, they must include the `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values. When no configurations are specified, execution will use the default specified in `DefaultPool`."
        },
        "gke": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:GkeCluster",
          "description": "Optional. Information specifying a GKE Cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be <= 128 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "multiTarget": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:MultiTarget",
          "description": "Optional. Information specifying a multiTarget."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the `Target`. Format is `projects/{project}/locations/{location}/targets/a-z{0,62}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "requireApproval": {
          "type": "boolean",
          "description": "Optional. Whether or not the `Target` requires approval."
        },
        "run": {
          "$ref": "#/types/google-native:clouddeploy%2Fv1:CloudRunLocation",
          "description": "Optional. Information specifying a Cloud Run deployment target."
        },
        "targetId": {
          "type": "string",
          "description": "Required. ID of the `Target`.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "targetId"
      ]
    },
    "google-native:clouddeploy/v1:TargetIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:clouddeploy/v1:TargetIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:clouddeploy/v1:TargetIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "targetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "targetId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "targetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "targetId"
      ]
    },
    "google-native:cloudfunctions/v1:Function": {
      "description": "Creates a new function. If a function with the given name already exists in the specified project, the long running operation will return `ALREADY_EXISTS` error.",
      "properties": {
        "availableMemoryMb": {
          "type": "integer",
          "description": "The amount of memory in MB available for a function. Defaults to 256MB."
        },
        "buildEnvironmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Build environment variables that shall be available during build time."
        },
        "buildId": {
          "type": "string",
          "description": "The Cloud Build ID of the latest successful deployment of the function."
        },
        "buildName": {
          "type": "string",
          "description": "The Cloud Build Name of the function deployment. `projects//locations//builds/`."
        },
        "buildWorkerPool": {
          "type": "string",
          "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (`service-@gcf-admin-robot.iam.gserviceaccount.com`) must be granted the role Cloud Build Custom Workers Builder (`roles/cloudbuild.customworkers.builder`) in the project."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of a function."
        },
        "dockerRegistry": {
          "type": "string",
          "description": "Docker Registry to use for this deployment. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments."
        },
        "dockerRepository": {
          "type": "string",
          "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. If specified, deployments will use Artifact Registry. If unspecified and the deployment is eligible to use Artifact Registry, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'."
        },
        "entryPoint": {
          "type": "string",
          "description": "The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix (ID of the function), if not specified."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables that shall be available during function execution."
        },
        "eventTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:EventTriggerResponse",
          "description": "A source that fires events in response to a condition in another service."
        },
        "httpsTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:HttpsTriggerResponse",
          "description": "An HTTPS endpoint type of source that can be triggered via URL."
        },
        "ingressSettings": {
          "type": "string",
          "description": "The ingress settings for the function, controlling what traffic can reach it."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`. If specified, you must also provide an artifact registry repository using the `docker_repository` field that was created with the same KMS crypto key. The following service accounts need to be granted the role 'Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter)' on the Key/KeyRing/Project/Organization (least access preferred). 1. Google Cloud Functions service account (service-{project_number}@gcf-admin-robot.iam.gserviceaccount.com) - Required to protect the function's image. 2. Google Storage service account (service-{project_number}@gs-project-accounts.iam.gserviceaccount.com) - Required to protect the function's source code. If this service account does not exist, deploying a function without a KMS key or retrieving the service agent name provisions it. For more information, see https://cloud.google.com/storage/docs/projects#service-agents and https://cloud.google.com/storage/docs/getting-service-agent#gsutil. Google Cloud Functions delegates access to service agents to protect function resources in internal projects that are not accessible by the end user."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this Cloud Function."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxInstances": {
          "type": "integer",
          "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details."
        },
        "minInstances": {
          "type": "integer",
          "description": "A lower bound for the number function instances that may coexist at a given time."
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`"
        },
        "network": {
          "type": "string",
          "description": "Deprecated: use vpc_connector",
          "deprecationMessage": "Deprecated: use vpc_connector"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtime": {
          "type": "string",
          "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime)."
        },
        "secretEnvironmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:SecretEnvVarResponse"
          },
          "description": "Secret environment variables configuration."
        },
        "secretVolumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:SecretVolumeResponse"
          },
          "description": "Secret volumes configuration."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email of the function's service account. If empty, defaults to `{project_id}@appspot.gserviceaccount.com`."
        },
        "sourceArchiveUrl": {
          "type": "string",
          "description": "The Google Cloud Storage URL, starting with `gs://`, pointing to the zip archive which contains the function."
        },
        "sourceRepository": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:SourceRepositoryResponse",
          "description": "**Beta Feature** The source repository where a function is hosted."
        },
        "sourceToken": {
          "type": "string",
          "description": "Input only. An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments."
        },
        "sourceUploadUrl": {
          "type": "string",
          "description": "The Google Cloud Storage signed URL used for source uploading, generated by calling [google.cloud.functions.v1.GenerateUploadUrl]. The signature is validated on write methods (Create, Update) The signature is stripped from the Function object on read methods (Get, List)"
        },
        "status": {
          "type": "string",
          "description": "Status of the function deployment."
        },
        "timeout": {
          "type": "string",
          "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a Cloud Function."
        },
        "versionId": {
          "type": "string",
          "description": "The version identifier of the Cloud Function. Each deployment attempt results in a new version of a function being created."
        },
        "vpcConnector": {
          "type": "string",
          "description": "The VPC Network Connector that this cloud function can connect to. It can be either the fully-qualified URI, or the short name of the network connector resource. The format of this field is `projects/*/locations/*/connectors/*` This field is mutually exclusive with `network` field and will eventually replace it. See [the VPC documentation](https://cloud.google.com/compute/docs/vpc) for more information on connecting Cloud projects."
        },
        "vpcConnectorEgressSettings": {
          "type": "string",
          "description": "The egress settings for the connector, controlling what traffic is diverted through it."
        }
      },
      "type": "object",
      "required": [
        "availableMemoryMb",
        "buildEnvironmentVariables",
        "buildId",
        "buildName",
        "buildWorkerPool",
        "description",
        "dockerRegistry",
        "dockerRepository",
        "entryPoint",
        "environmentVariables",
        "eventTrigger",
        "httpsTrigger",
        "ingressSettings",
        "kmsKeyName",
        "labels",
        "location",
        "maxInstances",
        "minInstances",
        "name",
        "network",
        "project",
        "runtime",
        "secretEnvironmentVariables",
        "secretVolumes",
        "serviceAccountEmail",
        "sourceArchiveUrl",
        "sourceRepository",
        "sourceToken",
        "sourceUploadUrl",
        "status",
        "timeout",
        "updateTime",
        "versionId",
        "vpcConnector",
        "vpcConnectorEgressSettings"
      ],
      "inputProperties": {
        "availableMemoryMb": {
          "type": "integer",
          "description": "The amount of memory in MB available for a function. Defaults to 256MB."
        },
        "buildEnvironmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Build environment variables that shall be available during build time."
        },
        "buildWorkerPool": {
          "type": "string",
          "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (`service-@gcf-admin-robot.iam.gserviceaccount.com`) must be granted the role Cloud Build Custom Workers Builder (`roles/cloudbuild.customworkers.builder`) in the project."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of a function."
        },
        "dockerRegistry": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:FunctionDockerRegistry",
          "description": "Docker Registry to use for this deployment. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments."
        },
        "dockerRepository": {
          "type": "string",
          "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. If specified, deployments will use Artifact Registry. If unspecified and the deployment is eligible to use Artifact Registry, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'."
        },
        "entryPoint": {
          "type": "string",
          "description": "The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix (ID of the function), if not specified."
        },
        "environmentVariables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Environment variables that shall be available during function execution."
        },
        "eventTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:EventTrigger",
          "description": "A source that fires events in response to a condition in another service."
        },
        "httpsTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:HttpsTrigger",
          "description": "An HTTPS endpoint type of source that can be triggered via URL."
        },
        "ingressSettings": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:FunctionIngressSettings",
          "description": "The ingress settings for the function, controlling what traffic can reach it."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`. If specified, you must also provide an artifact registry repository using the `docker_repository` field that was created with the same KMS crypto key. The following service accounts need to be granted the role 'Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter)' on the Key/KeyRing/Project/Organization (least access preferred). 1. Google Cloud Functions service account (service-{project_number}@gcf-admin-robot.iam.gserviceaccount.com) - Required to protect the function's image. 2. Google Storage service account (service-{project_number}@gs-project-accounts.iam.gserviceaccount.com) - Required to protect the function's source code. If this service account does not exist, deploying a function without a KMS key or retrieving the service agent name provisions it. For more information, see https://cloud.google.com/storage/docs/projects#service-agents and https://cloud.google.com/storage/docs/getting-service-agent#gsutil. Google Cloud Functions delegates access to service agents to protect function resources in internal projects that are not accessible by the end user."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this Cloud Function."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxInstances": {
          "type": "integer",
          "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details."
        },
        "minInstances": {
          "type": "integer",
          "description": "A lower bound for the number function instances that may coexist at a given time."
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`"
        },
        "network": {
          "type": "string",
          "description": "Deprecated: use vpc_connector",
          "deprecationMessage": "Deprecated: use vpc_connector"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtime": {
          "type": "string",
          "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime)."
        },
        "secretEnvironmentVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:SecretEnvVar"
          },
          "description": "Secret environment variables configuration."
        },
        "secretVolumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:SecretVolume"
          },
          "description": "Secret volumes configuration."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "The email of the function's service account. If empty, defaults to `{project_id}@appspot.gserviceaccount.com`."
        },
        "sourceArchiveUrl": {
          "type": "string",
          "description": "The Google Cloud Storage URL, starting with `gs://`, pointing to the zip archive which contains the function."
        },
        "sourceRepository": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:SourceRepository",
          "description": "**Beta Feature** The source repository where a function is hosted."
        },
        "sourceToken": {
          "type": "string",
          "description": "Input only. An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments."
        },
        "sourceUploadUrl": {
          "type": "string",
          "description": "The Google Cloud Storage signed URL used for source uploading, generated by calling [google.cloud.functions.v1.GenerateUploadUrl]. The signature is validated on write methods (Create, Update) The signature is stripped from the Function object on read methods (Get, List)"
        },
        "timeout": {
          "type": "string",
          "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds."
        },
        "vpcConnector": {
          "type": "string",
          "description": "The VPC Network Connector that this cloud function can connect to. It can be either the fully-qualified URI, or the short name of the network connector resource. The format of this field is `projects/*/locations/*/connectors/*` This field is mutually exclusive with `network` field and will eventually replace it. See [the VPC documentation](https://cloud.google.com/compute/docs/vpc) for more information on connecting Cloud projects."
        },
        "vpcConnectorEgressSettings": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv1:FunctionVpcConnectorEgressSettings",
          "description": "The egress settings for the connector, controlling what traffic is diverted through it."
        }
      }
    },
    "google-native:cloudfunctions/v1:FunctionIamBinding": {
      "description": "Sets the IAM access control policy on the specified function. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudfunctions/v1:FunctionIamMember": {
      "description": "Sets the IAM access control policy on the specified function. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudfunctions/v1:FunctionIamPolicy": {
      "description": "Sets the IAM access control policy on the specified function. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "functionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "functionId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "functionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "functionId"
      ]
    },
    "google-native:cloudfunctions/v2:Function": {
      "description": "Creates a new function. If a function with the given name already exists in the specified project, the long running operation will return `ALREADY_EXISTS` error.",
      "properties": {
        "buildConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:BuildConfigResponse",
          "description": "Describes the Build step of the function that builds a container from the given source."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of a function."
        },
        "environment": {
          "type": "string",
          "description": "Describe whether the function is 1st Gen or 2nd Gen."
        },
        "eventTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:EventTriggerResponse",
          "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
        },
        "functionId": {
          "type": "string",
          "description": "The ID to use for the function, which will become the final component of the function's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this Cloud Function."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "serviceConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:ServiceConfigResponse",
          "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
        },
        "state": {
          "type": "string",
          "description": "State of the function."
        },
        "stateMessages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:GoogleCloudFunctionsV2StateMessageResponse"
          },
          "description": "State Messages for this Cloud Function."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a Cloud Function."
        },
        "url": {
          "type": "string",
          "description": "The deployed url for the function."
        }
      },
      "type": "object",
      "required": [
        "buildConfig",
        "description",
        "environment",
        "eventTrigger",
        "kmsKeyName",
        "labels",
        "location",
        "name",
        "project",
        "satisfiesPzs",
        "serviceConfig",
        "state",
        "stateMessages",
        "updateTime",
        "url"
      ],
      "inputProperties": {
        "buildConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:BuildConfig",
          "description": "Describes the Build step of the function that builds a container from the given source."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of a function."
        },
        "environment": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:FunctionEnvironment",
          "description": "Describe whether the function is 1st Gen or 2nd Gen."
        },
        "eventTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:EventTrigger",
          "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
        },
        "functionId": {
          "type": "string",
          "description": "The ID to use for the function, which will become the final component of the function's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this Cloud Function."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2:ServiceConfig",
          "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
        }
      }
    },
    "google-native:cloudfunctions/v2:FunctionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2:FunctionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2:FunctionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "functionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "functionId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "functionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "functionId"
      ]
    },
    "google-native:cloudfunctions/v2alpha:Function": {
      "description": "Creates a new function. If a function with the given name already exists in the specified project, the long running operation will return `ALREADY_EXISTS` error.",
      "properties": {
        "buildConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:BuildConfigResponse",
          "description": "Describes the Build step of the function that builds a container from the given source."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of a function."
        },
        "environment": {
          "type": "string",
          "description": "Describe whether the function is 1st Gen or 2nd Gen."
        },
        "eventTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:EventTriggerResponse",
          "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
        },
        "functionId": {
          "type": "string",
          "description": "The ID to use for the function, which will become the final component of the function's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this Cloud Function."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "serviceConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:ServiceConfigResponse",
          "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
        },
        "state": {
          "type": "string",
          "description": "State of the function."
        },
        "stateMessages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:GoogleCloudFunctionsV2alphaStateMessageResponse"
          },
          "description": "State Messages for this Cloud Function."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a Cloud Function."
        },
        "url": {
          "type": "string",
          "description": "The deployed url for the function."
        }
      },
      "type": "object",
      "required": [
        "buildConfig",
        "description",
        "environment",
        "eventTrigger",
        "kmsKeyName",
        "labels",
        "location",
        "name",
        "project",
        "satisfiesPzs",
        "serviceConfig",
        "state",
        "stateMessages",
        "updateTime",
        "url"
      ],
      "inputProperties": {
        "buildConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:BuildConfig",
          "description": "Describes the Build step of the function that builds a container from the given source."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of a function."
        },
        "environment": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:FunctionEnvironment",
          "description": "Describe whether the function is 1st Gen or 2nd Gen."
        },
        "eventTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:EventTrigger",
          "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
        },
        "functionId": {
          "type": "string",
          "description": "The ID to use for the function, which will become the final component of the function's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this Cloud Function."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:ServiceConfig",
          "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
        }
      }
    },
    "google-native:cloudfunctions/v2alpha:FunctionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2alpha:FunctionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2alpha:FunctionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "functionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "functionId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "functionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "functionId"
      ]
    },
    "google-native:cloudfunctions/v2beta:Function": {
      "description": "Creates a new function. If a function with the given name already exists in the specified project, the long running operation will return `ALREADY_EXISTS` error.",
      "properties": {
        "buildConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:BuildConfigResponse",
          "description": "Describes the Build step of the function that builds a container from the given source."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of a function."
        },
        "environment": {
          "type": "string",
          "description": "Describe whether the function is 1st Gen or 2nd Gen."
        },
        "eventTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:EventTriggerResponse",
          "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
        },
        "functionId": {
          "type": "string",
          "description": "The ID to use for the function, which will become the final component of the function's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this Cloud Function."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "serviceConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:ServiceConfigResponse",
          "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
        },
        "state": {
          "type": "string",
          "description": "State of the function."
        },
        "stateMessages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:GoogleCloudFunctionsV2betaStateMessageResponse"
          },
          "description": "State Messages for this Cloud Function."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a Cloud Function."
        },
        "url": {
          "type": "string",
          "description": "The deployed url for the function."
        }
      },
      "type": "object",
      "required": [
        "buildConfig",
        "description",
        "environment",
        "eventTrigger",
        "kmsKeyName",
        "labels",
        "location",
        "name",
        "project",
        "satisfiesPzs",
        "serviceConfig",
        "state",
        "stateMessages",
        "updateTime",
        "url"
      ],
      "inputProperties": {
        "buildConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:BuildConfig",
          "description": "Describes the Build step of the function that builds a container from the given source."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of a function."
        },
        "environment": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:FunctionEnvironment",
          "description": "Describe whether the function is 1st Gen or 2nd Gen."
        },
        "eventTrigger": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:EventTrigger",
          "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
        },
        "functionId": {
          "type": "string",
          "description": "The ID to use for the function, which will become the final component of the function's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this Cloud Function."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConfig": {
          "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:ServiceConfig",
          "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
        }
      }
    },
    "google-native:cloudfunctions/v2beta:FunctionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2beta:FunctionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudfunctions/v2beta:FunctionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "functionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "functionId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "functionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "functionId"
      ]
    },
    "google-native:cloudidentity/v1:Device": {
      "description": "Creates a device. Only company-owned device may be created. **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "androidSpecificAttributes": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:GoogleAppsCloudidentityDevicesV1AndroidAttributesResponse",
          "description": "Attributes specific to Android devices."
        },
        "assetTag": {
          "type": "string",
          "description": "Asset tag of the device."
        },
        "basebandVersion": {
          "type": "string",
          "description": "Baseband version of the device."
        },
        "bootloaderVersion": {
          "type": "string",
          "description": "Device bootloader version. Example: 0.6.7."
        },
        "brand": {
          "type": "string",
          "description": "Device brand. Example: Samsung."
        },
        "buildNumber": {
          "type": "string",
          "description": "Build number of the device."
        },
        "compromisedState": {
          "type": "string",
          "description": "Represents whether the Device is compromised."
        },
        "createTime": {
          "type": "string",
          "description": "When the Company-Owned device was imported. This field is empty for BYOD devices."
        },
        "customer": {
          "type": "string",
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
        },
        "deviceId": {
          "type": "string",
          "description": "Unique identifier for the device."
        },
        "deviceType": {
          "type": "string",
          "description": "Type of device."
        },
        "enabledDeveloperOptions": {
          "type": "boolean",
          "description": "Whether developer options is enabled on device."
        },
        "enabledUsbDebugging": {
          "type": "boolean",
          "description": "Whether USB debugging is enabled on device."
        },
        "encryptionState": {
          "type": "string",
          "description": "Device encryption state."
        },
        "hostname": {
          "type": "string",
          "description": "Host name of the device."
        },
        "imei": {
          "type": "string",
          "description": "IMEI number of device if GSM device; empty otherwise."
        },
        "kernelVersion": {
          "type": "string",
          "description": "Kernel version of the device."
        },
        "lastSyncTime": {
          "type": "string",
          "description": "Most recent time when device synced with this service."
        },
        "managementState": {
          "type": "string",
          "description": "Management state of the device"
        },
        "manufacturer": {
          "type": "string",
          "description": "Device manufacturer. Example: Motorola."
        },
        "meid": {
          "type": "string",
          "description": "MEID number of device if CDMA device; empty otherwise."
        },
        "model": {
          "type": "string",
          "description": "Model name of device. Example: Pixel 3."
        },
        "name": {
          "type": "string",
          "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique id assigned to the Device."
        },
        "networkOperator": {
          "type": "string",
          "description": "Mobile or network operator of device, if available."
        },
        "osVersion": {
          "type": "string",
          "description": "OS version of the device. Example: Android 8.1.0."
        },
        "otherAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account's domain has only one account. Examples: \"com.example\", \"xyz.com\"."
        },
        "ownerType": {
          "type": "string",
          "description": "Whether the device is owned by the company or an individual"
        },
        "releaseVersion": {
          "type": "string",
          "description": "OS release version. Example: 6.0."
        },
        "securityPatchTime": {
          "type": "string",
          "description": "OS security patch update time on device."
        },
        "serialNumber": {
          "type": "string",
          "description": "Serial Number of device. Example: HT82V1A01076."
        },
        "wifiMacAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "WiFi MAC addresses of device."
        }
      },
      "type": "object",
      "required": [
        "androidSpecificAttributes",
        "assetTag",
        "basebandVersion",
        "bootloaderVersion",
        "brand",
        "buildNumber",
        "compromisedState",
        "createTime",
        "deviceId",
        "deviceType",
        "enabledDeveloperOptions",
        "enabledUsbDebugging",
        "encryptionState",
        "hostname",
        "imei",
        "kernelVersion",
        "lastSyncTime",
        "managementState",
        "manufacturer",
        "meid",
        "model",
        "name",
        "networkOperator",
        "osVersion",
        "otherAccounts",
        "ownerType",
        "releaseVersion",
        "securityPatchTime",
        "serialNumber",
        "wifiMacAddresses"
      ],
      "inputProperties": {
        "assetTag": {
          "type": "string",
          "description": "Asset tag of the device."
        },
        "customer": {
          "type": "string",
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs."
        },
        "deviceId": {
          "type": "string",
          "description": "Unique identifier for the device."
        },
        "hostname": {
          "type": "string",
          "description": "Host name of the device."
        },
        "lastSyncTime": {
          "type": "string",
          "description": "Most recent time when device synced with this service."
        },
        "serialNumber": {
          "type": "string",
          "description": "Serial Number of device. Example: HT82V1A01076."
        },
        "wifiMacAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "WiFi MAC addresses of device."
        }
      }
    },
    "google-native:cloudidentity/v1:Group": {
      "description": "Creates a Group.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "additionalGroupKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:EntityKeyResponse"
          },
          "description": "Additional group keys associated with the Group."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the `Group` was created."
        },
        "description": {
          "type": "string",
          "description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the `Group`."
        },
        "dynamicGroupMetadata": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:DynamicGroupMetadataResponse",
          "description": "Optional. Dynamic group metadata like queries and status."
        },
        "groupKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:EntityKeyResponse",
          "description": "The `EntityKey` of the `Group`."
        },
        "initialGroupConfig": {
          "type": "string",
          "description": "Optional. The initial configuration option for the `Group`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value."
        },
        "name": {
          "type": "string",
          "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group}`."
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)"
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the `Group` was last updated."
        }
      },
      "type": "object",
      "required": [
        "additionalGroupKeys",
        "createTime",
        "description",
        "displayName",
        "dynamicGroupMetadata",
        "groupKey",
        "labels",
        "name",
        "parent",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the `Group`."
        },
        "dynamicGroupMetadata": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:DynamicGroupMetadata",
          "description": "Optional. Dynamic group metadata like queries and status."
        },
        "groupKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:EntityKey",
          "description": "The `EntityKey` of the `Group`."
        },
        "initialGroupConfig": {
          "type": "string",
          "description": "Optional. The initial configuration option for the `Group`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value."
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)"
        }
      },
      "requiredInputs": [
        "groupKey",
        "labels",
        "parent"
      ]
    },
    "google-native:cloudidentity/v1:InboundSamlSsoProfile": {
      "description": "Creates an InboundSamlSsoProfile for a customer.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable name of the SAML SSO profile."
        },
        "idpConfig": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlIdpConfigResponse",
          "description": "SAML identity provider configuration."
        },
        "name": {
          "type": "string",
          "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile."
        },
        "spConfig": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlSpConfigResponse",
          "description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
        }
      },
      "type": "object",
      "required": [
        "customer",
        "displayName",
        "idpConfig",
        "name",
        "spConfig"
      ],
      "inputProperties": {
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable name of the SAML SSO profile."
        },
        "idpConfig": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlIdpConfig",
          "description": "SAML identity provider configuration."
        },
        "spConfig": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlSpConfig",
          "description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
        }
      }
    },
    "google-native:cloudidentity/v1:InboundSsoAssignment": {
      "description": "Creates an InboundSsoAssignment for users and devices in a `Customer` under a given `Group` or `OrgUnit`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "name": {
          "type": "string",
          "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment."
        },
        "rank": {
          "type": "integer",
          "description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set."
        },
        "samlSsoInfo": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlSsoInfoResponse",
          "description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
        },
        "signInBehavior": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SignInBehaviorResponse",
          "description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration."
        },
        "ssoMode": {
          "type": "string",
          "description": "Inbound SSO behavior."
        },
        "targetGroup": {
          "type": "string",
          "description": "Immutable. Must be of the form `groups/{group}`."
        },
        "targetOrgUnit": {
          "type": "string",
          "description": "Immutable. Must be of the form `orgUnits/{org_unit}`."
        }
      },
      "type": "object",
      "required": [
        "customer",
        "name",
        "rank",
        "samlSsoInfo",
        "signInBehavior",
        "ssoMode",
        "targetGroup",
        "targetOrgUnit"
      ],
      "inputProperties": {
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "rank": {
          "type": "integer",
          "description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set."
        },
        "samlSsoInfo": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlSsoInfo",
          "description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
        },
        "signInBehavior": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:SignInBehavior",
          "description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration."
        },
        "ssoMode": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:InboundSsoAssignmentSsoMode",
          "description": "Inbound SSO behavior."
        },
        "targetGroup": {
          "type": "string",
          "description": "Immutable. Must be of the form `groups/{group}`."
        },
        "targetOrgUnit": {
          "type": "string",
          "description": "Immutable. Must be of the form `orgUnits/{org_unit}`."
        }
      }
    },
    "google-native:cloudidentity/v1:Membership": {
      "description": "Creates a `Membership`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the `Membership` was created."
        },
        "deliverySetting": {
          "type": "string",
          "description": "Delivery setting associated with the membership."
        },
        "groupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group}/memberships/{membership}`."
        },
        "preferredMemberKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:EntityKeyResponse",
          "description": "Immutable. The `EntityKey` of the member."
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:MembershipRoleResponse"
          },
          "description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`."
        },
        "type": {
          "type": "string",
          "description": "The type of the membership."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the `Membership` was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deliverySetting",
        "groupId",
        "name",
        "preferredMemberKey",
        "roles",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "groupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "preferredMemberKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1:EntityKey",
          "description": "Immutable. The `EntityKey` of the member."
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:MembershipRole"
          },
          "description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`."
        }
      },
      "requiredInputs": [
        "groupId",
        "preferredMemberKey"
      ]
    },
    "google-native:cloudidentity/v1beta1:Device": {
      "description": "Creates a device. Only company-owned device may be created. **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "androidSpecificAttributes": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:AndroidAttributesResponse",
          "description": "Attributes specific to Android devices."
        },
        "assetTag": {
          "type": "string",
          "description": "Asset tag of the device."
        },
        "basebandVersion": {
          "type": "string",
          "description": "Baseband version of the device."
        },
        "bootloaderVersion": {
          "type": "string",
          "description": "Device bootloader version. Example: 0.6.7."
        },
        "brand": {
          "type": "string",
          "description": "Device brand. Example: Samsung."
        },
        "buildNumber": {
          "type": "string",
          "description": "Build number of the device."
        },
        "clientTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of the clients the device is reporting to."
        },
        "compromisedState": {
          "type": "string",
          "description": "Represents whether the Device is compromised."
        },
        "createTime": {
          "type": "string",
          "description": "When the Company-Owned device was imported. This field is empty for BYOD devices."
        },
        "deviceId": {
          "type": "string",
          "description": "Unique identifier for the device."
        },
        "deviceType": {
          "type": "string",
          "description": "Type of device."
        },
        "enabledDeveloperOptions": {
          "type": "boolean",
          "description": "Whether developer options is enabled on device."
        },
        "enabledUsbDebugging": {
          "type": "boolean",
          "description": "Whether USB debugging is enabled on device."
        },
        "encryptionState": {
          "type": "string",
          "description": "Device encryption state."
        },
        "endpointVerificationSpecificAttributes": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EndpointVerificationSpecificAttributesResponse",
          "description": "Attributes specific to Endpoint Verification devices."
        },
        "hostname": {
          "type": "string",
          "description": "Host name of the device."
        },
        "imei": {
          "type": "string",
          "description": "IMEI number of device if GSM device; empty otherwise."
        },
        "kernelVersion": {
          "type": "string",
          "description": "Kernel version of the device."
        },
        "lastSyncTime": {
          "type": "string",
          "description": "Most recent time when device synced with this service."
        },
        "managementState": {
          "type": "string",
          "description": "Management state of the device"
        },
        "manufacturer": {
          "type": "string",
          "description": "Device manufacturer. Example: Motorola."
        },
        "meid": {
          "type": "string",
          "description": "MEID number of device if CDMA device; empty otherwise."
        },
        "model": {
          "type": "string",
          "description": "Model name of device. Example: Pixel 3."
        },
        "name": {
          "type": "string",
          "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique id assigned to the Device."
        },
        "networkOperator": {
          "type": "string",
          "description": "Mobile or network operator of device, if available."
        },
        "osVersion": {
          "type": "string",
          "description": "OS version of the device. Example: Android 8.1.0."
        },
        "otherAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account's domain has only one account. Examples: \"com.example\", \"xyz.com\"."
        },
        "ownerType": {
          "type": "string",
          "description": "Whether the device is owned by the company or an individual"
        },
        "releaseVersion": {
          "type": "string",
          "description": "OS release version. Example: 6.0."
        },
        "securityPatchTime": {
          "type": "string",
          "description": "OS security patch update time on device."
        },
        "serialNumber": {
          "type": "string",
          "description": "Serial Number of device. Example: HT82V1A01076."
        },
        "wifiMacAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "WiFi MAC addresses of device."
        }
      },
      "type": "object",
      "required": [
        "androidSpecificAttributes",
        "assetTag",
        "basebandVersion",
        "bootloaderVersion",
        "brand",
        "buildNumber",
        "clientTypes",
        "compromisedState",
        "createTime",
        "deviceId",
        "deviceType",
        "enabledDeveloperOptions",
        "enabledUsbDebugging",
        "encryptionState",
        "endpointVerificationSpecificAttributes",
        "hostname",
        "imei",
        "kernelVersion",
        "lastSyncTime",
        "managementState",
        "manufacturer",
        "meid",
        "model",
        "name",
        "networkOperator",
        "osVersion",
        "otherAccounts",
        "ownerType",
        "releaseVersion",
        "securityPatchTime",
        "serialNumber",
        "wifiMacAddresses"
      ],
      "inputProperties": {
        "assetTag": {
          "type": "string",
          "description": "Asset tag of the device."
        },
        "clientTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:DeviceClientTypesItem"
          },
          "description": "List of the clients the device is reporting to."
        },
        "customer": {
          "type": "string",
          "description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs."
        },
        "deviceId": {
          "type": "string",
          "description": "Unique identifier for the device."
        },
        "hostname": {
          "type": "string",
          "description": "Host name of the device."
        },
        "lastSyncTime": {
          "type": "string",
          "description": "Most recent time when device synced with this service."
        },
        "serialNumber": {
          "type": "string",
          "description": "Serial Number of device. Example: HT82V1A01076."
        },
        "wifiMacAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "WiFi MAC addresses of device."
        }
      }
    },
    "google-native:cloudidentity/v1beta1:Group": {
      "description": "Creates a `Group`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "additionalGroupKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKeyResponse"
          },
          "description": "Additional group keys associated with the Group."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the `Group` was created."
        },
        "description": {
          "type": "string",
          "description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the `Group`."
        },
        "dynamicGroupMetadata": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:DynamicGroupMetadataResponse",
          "description": "Optional. Dynamic group metadata like queries and status."
        },
        "groupKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKeyResponse",
          "description": "The `EntityKey` of the `Group`."
        },
        "initialGroupConfig": {
          "type": "string",
          "description": "Required. The initial configuration option for the `Group`.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value."
        },
        "name": {
          "type": "string",
          "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group_id}`."
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)"
        },
        "posixGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:PosixGroupResponse"
          },
          "description": "Optional. The POSIX groups associated with the `Group`."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the `Group` was last updated."
        }
      },
      "type": "object",
      "required": [
        "additionalGroupKeys",
        "createTime",
        "description",
        "displayName",
        "dynamicGroupMetadata",
        "groupKey",
        "initialGroupConfig",
        "labels",
        "name",
        "parent",
        "posixGroups",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the `Group`."
        },
        "dynamicGroupMetadata": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:DynamicGroupMetadata",
          "description": "Optional. Dynamic group metadata like queries and status."
        },
        "groupKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKey",
          "description": "The `EntityKey` of the `Group`."
        },
        "initialGroupConfig": {
          "type": "string",
          "description": "Required. The initial configuration option for the `Group`.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value."
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)"
        },
        "posixGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:PosixGroup"
          },
          "description": "Optional. The POSIX groups associated with the `Group`."
        }
      },
      "requiredInputs": [
        "groupKey",
        "initialGroupConfig",
        "labels",
        "parent"
      ]
    },
    "google-native:cloudidentity/v1beta1:InboundSamlSsoProfile": {
      "description": "Creates an InboundSamlSsoProfile for a customer.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable name of the SAML SSO profile."
        },
        "idpConfig": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlIdpConfigResponse",
          "description": "SAML identity provider configuration."
        },
        "name": {
          "type": "string",
          "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile."
        },
        "spConfig": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlSpConfigResponse",
          "description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
        }
      },
      "type": "object",
      "required": [
        "customer",
        "displayName",
        "idpConfig",
        "name",
        "spConfig"
      ],
      "inputProperties": {
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable name of the SAML SSO profile."
        },
        "idpConfig": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlIdpConfig",
          "description": "SAML identity provider configuration."
        },
        "spConfig": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlSpConfig",
          "description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
        }
      }
    },
    "google-native:cloudidentity/v1beta1:InboundSsoAssignment": {
      "description": "Creates an InboundSsoAssignment for users and devices in a `Customer` under a given `Group` or `OrgUnit`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "name": {
          "type": "string",
          "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment."
        },
        "rank": {
          "type": "integer",
          "description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set."
        },
        "samlSsoInfo": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlSsoInfoResponse",
          "description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
        },
        "signInBehavior": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SignInBehaviorResponse",
          "description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration."
        },
        "ssoMode": {
          "type": "string",
          "description": "Inbound SSO behavior."
        },
        "targetGroup": {
          "type": "string",
          "description": "Immutable. Must be of the form `groups/{group}`."
        },
        "targetOrgUnit": {
          "type": "string",
          "description": "Immutable. Must be of the form `orgUnits/{org_unit}`."
        }
      },
      "type": "object",
      "required": [
        "customer",
        "name",
        "rank",
        "samlSsoInfo",
        "signInBehavior",
        "ssoMode",
        "targetGroup",
        "targetOrgUnit"
      ],
      "inputProperties": {
        "customer": {
          "type": "string",
          "description": "Immutable. The customer. For example: `customers/C0123abc`."
        },
        "rank": {
          "type": "integer",
          "description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set."
        },
        "samlSsoInfo": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlSsoInfo",
          "description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
        },
        "signInBehavior": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SignInBehavior",
          "description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration."
        },
        "ssoMode": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:InboundSsoAssignmentSsoMode",
          "description": "Inbound SSO behavior."
        },
        "targetGroup": {
          "type": "string",
          "description": "Immutable. Must be of the form `groups/{group}`."
        },
        "targetOrgUnit": {
          "type": "string",
          "description": "Immutable. Must be of the form `orgUnits/{org_unit}`."
        }
      }
    },
    "google-native:cloudidentity/v1beta1:Membership": {
      "description": "Creates a `Membership`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the `Membership` was created."
        },
        "deliverySetting": {
          "type": "string",
          "description": "Delivery setting associated with the membership."
        },
        "groupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "memberKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKeyResponse",
          "description": "Immutable. The `EntityKey` of the member. Either `member_key` or `preferred_member_key` must be set when calling MembershipsService.CreateMembership but not both; both shall be set when returned."
        },
        "name": {
          "type": "string",
          "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group_id}/memberships/{membership_id}`."
        },
        "preferredMemberKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKeyResponse",
          "description": "Immutable. The `EntityKey` of the member. Either `member_key` or `preferred_member_key` must be set when calling MembershipsService.CreateMembership but not both; both shall be set when returned."
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:MembershipRoleResponse"
          },
          "description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`."
        },
        "type": {
          "type": "string",
          "description": "The type of the membership."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the `Membership` was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deliverySetting",
        "groupId",
        "memberKey",
        "name",
        "preferredMemberKey",
        "roles",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "groupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "memberKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKey",
          "description": "Immutable. The `EntityKey` of the member. Either `member_key` or `preferred_member_key` must be set when calling MembershipsService.CreateMembership but not both; both shall be set when returned."
        },
        "preferredMemberKey": {
          "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKey",
          "description": "Immutable. The `EntityKey` of the member. Either `member_key` or `preferred_member_key` must be set when calling MembershipsService.CreateMembership but not both; both shall be set when returned."
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:MembershipRole"
          },
          "description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`."
        }
      },
      "requiredInputs": [
        "groupId",
        "preferredMemberKey"
      ]
    },
    "google-native:cloudiot/v1:Device": {
      "description": "Creates a device in a device registry.",
      "properties": {
        "blocked": {
          "type": "boolean",
          "description": "If a device is blocked, connections or requests from this device will fail. Can be used to temporarily prevent the device from connecting if, for example, the sensor is generating bad data and needs maintenance."
        },
        "config": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceConfigResponse",
          "description": "The most recent device configuration, which is eventually sent from Cloud IoT Core to the device. If not present on creation, the configuration will be initialized with an empty payload and version value of `1`. To update this field after creation, use the `DeviceManager.ModifyCloudToDeviceConfig` method."
        },
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceCredentialResponse"
          },
          "description": "The credentials used to authenticate this device. To allow credential rotation without interruption, multiple device credentials can be bound to this device. No more than 3 credentials can be bound to a single device at a time. When new credentials are added to a device, they are verified against the registry credentials. For details, see the description of the `DeviceRegistry.credentials` field."
        },
        "gatewayConfig": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:GatewayConfigResponse",
          "description": "Gateway-related configuration and state."
        },
        "lastConfigAckTime": {
          "type": "string",
          "description": "[Output only] The last time a cloud-to-device config version acknowledgment was received from the device. This field is only for configurations sent through MQTT."
        },
        "lastConfigSendTime": {
          "type": "string",
          "description": "[Output only] The last time a cloud-to-device config version was sent to the device."
        },
        "lastErrorStatus": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:StatusResponse",
          "description": "[Output only] The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this field. If no errors have occurred, this field has an empty message and the status code 0 == OK. Otherwise, this field is expected to have a status code other than OK."
        },
        "lastErrorTime": {
          "type": "string",
          "description": "[Output only] The time the most recent error occurred, such as a failure to publish to Cloud Pub/Sub. This field is the timestamp of 'last_error_status'."
        },
        "lastEventTime": {
          "type": "string",
          "description": "[Output only] The last time a telemetry event was received. Timestamps are periodically collected and written to storage; they may be stale by a few minutes."
        },
        "lastHeartbeatTime": {
          "type": "string",
          "description": "[Output only] The last time an MQTT `PINGREQ` was received. This field applies only to devices connecting through MQTT. MQTT clients usually only send `PINGREQ` messages if the connection is idle, and no other messages have been sent. Timestamps are periodically collected and written to storage; they may be stale by a few minutes."
        },
        "lastStateTime": {
          "type": "string",
          "description": "[Output only] The last time a state event was received. Timestamps are periodically collected and written to storage; they may be stale by a few minutes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logLevel": {
          "type": "string",
          "description": "**Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key-value pairs assigned to the device. This metadata is not interpreted or indexed by Cloud IoT Core. It can be used to add contextual information for the device. Keys must conform to the regular expression a-zA-Z+ and be less than 128 bytes in length. Values are free-form strings. Each value must be less than or equal to 32 KB in size. The total size of all keys and values must be less than 256 KB, and the maximum number of key-value pairs is 500."
        },
        "name": {
          "type": "string",
          "description": "The resource path name. For example, `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`. When `name` is populated as a response from the service, it always ends in the device numeric ID."
        },
        "numId": {
          "type": "string",
          "description": "[Output only] A server-defined unique numeric ID for the device. This is a more compact way to identify devices, and it is globally unique."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceStateResponse",
          "description": "[Output only] The state most recently received from the device. If no state has been reported, this field is not present."
        }
      },
      "type": "object",
      "required": [
        "blocked",
        "config",
        "credentials",
        "gatewayConfig",
        "lastConfigAckTime",
        "lastConfigSendTime",
        "lastErrorStatus",
        "lastErrorTime",
        "lastEventTime",
        "lastHeartbeatTime",
        "lastStateTime",
        "location",
        "logLevel",
        "metadata",
        "name",
        "numId",
        "project",
        "registryId",
        "state"
      ],
      "inputProperties": {
        "blocked": {
          "type": "boolean",
          "description": "If a device is blocked, connections or requests from this device will fail. Can be used to temporarily prevent the device from connecting if, for example, the sensor is generating bad data and needs maintenance."
        },
        "config": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceConfig",
          "description": "The most recent device configuration, which is eventually sent from Cloud IoT Core to the device. If not present on creation, the configuration will be initialized with an empty payload and version value of `1`. To update this field after creation, use the `DeviceManager.ModifyCloudToDeviceConfig` method."
        },
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceCredential"
          },
          "description": "The credentials used to authenticate this device. To allow credential rotation without interruption, multiple device credentials can be bound to this device. No more than 3 credentials can be bound to a single device at a time. When new credentials are added to a device, they are verified against the registry credentials. For details, see the description of the `DeviceRegistry.credentials` field."
        },
        "gatewayConfig": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:GatewayConfig",
          "description": "Gateway-related configuration and state."
        },
        "id": {
          "type": "string",
          "description": "The user-defined device identifier. The device ID must be unique within a device registry."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logLevel": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceLogLevel",
          "description": "**Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The metadata key-value pairs assigned to the device. This metadata is not interpreted or indexed by Cloud IoT Core. It can be used to add contextual information for the device. Keys must conform to the regular expression a-zA-Z+ and be less than 128 bytes in length. Values are free-form strings. Each value must be less than or equal to 32 KB in size. The total size of all keys and values must be less than 256 KB, and the maximum number of key-value pairs is 500."
        },
        "name": {
          "type": "string",
          "description": "The resource path name. For example, `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`. When `name` is populated as a response from the service, it always ends in the device numeric ID."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registryId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "registryId"
      ]
    },
    "google-native:cloudiot/v1:Registry": {
      "description": "Creates a device registry that contains devices.",
      "properties": {
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:RegistryCredentialResponse"
          },
          "description": "The credentials used to verify the device credentials. No more than 10 credentials can be bound to a single registry at a time. The verification process occurs at the time of device creation or update. If this field is empty, no verification is performed. Otherwise, the credentials of a newly created device or added credentials of an updated device should be signed with one of these registry credentials. Note, however, that existing devices will never be affected by modifications to this list of credentials: after a device has been successfully created in a registry, it should be able to connect even if its registry credentials are revoked, deleted, or modified."
        },
        "eventNotificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:EventNotificationConfigResponse"
          },
          "description": "The configuration for notification of telemetry events received from the device. All telemetry events that were successfully published by the device and acknowledged by Cloud IoT Core are guaranteed to be delivered to Cloud Pub/Sub. If multiple configurations match a message, only the first matching configuration is used. If you try to publish a device telemetry event using MQTT without specifying a Cloud Pub/Sub topic for the device's registry, the connection closes automatically. If you try to do so using an HTTP connection, an error is returned. Up to 10 configurations may be provided."
        },
        "httpConfig": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:HttpConfigResponse",
          "description": "The DeviceService (HTTP) configuration for this device registry."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logLevel": {
          "type": "string",
          "description": "**Beta Feature** The default logging verbosity for activity from devices in this registry. The verbosity level can be overridden by Device.log_level."
        },
        "mqttConfig": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:MqttConfigResponse",
          "description": "The MQTT configuration for this device registry."
        },
        "name": {
          "type": "string",
          "description": "The resource path name. For example, `projects/example-project/locations/us-central1/registries/my-registry`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "stateNotificationConfig": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:StateNotificationConfigResponse",
          "description": "The configuration for notification of new states received from the device. State updates are guaranteed to be stored in the state history, but notifications to Cloud Pub/Sub are not guaranteed. For example, if permissions are misconfigured or the specified topic doesn't exist, no notification will be published but the state will still be stored in Cloud IoT Core."
        }
      },
      "type": "object",
      "required": [
        "credentials",
        "eventNotificationConfigs",
        "httpConfig",
        "location",
        "logLevel",
        "mqttConfig",
        "name",
        "project",
        "stateNotificationConfig"
      ],
      "inputProperties": {
        "credentials": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:RegistryCredential"
          },
          "description": "The credentials used to verify the device credentials. No more than 10 credentials can be bound to a single registry at a time. The verification process occurs at the time of device creation or update. If this field is empty, no verification is performed. Otherwise, the credentials of a newly created device or added credentials of an updated device should be signed with one of these registry credentials. Note, however, that existing devices will never be affected by modifications to this list of credentials: after a device has been successfully created in a registry, it should be able to connect even if its registry credentials are revoked, deleted, or modified."
        },
        "eventNotificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:EventNotificationConfig"
          },
          "description": "The configuration for notification of telemetry events received from the device. All telemetry events that were successfully published by the device and acknowledged by Cloud IoT Core are guaranteed to be delivered to Cloud Pub/Sub. If multiple configurations match a message, only the first matching configuration is used. If you try to publish a device telemetry event using MQTT without specifying a Cloud Pub/Sub topic for the device's registry, the connection closes automatically. If you try to do so using an HTTP connection, an error is returned. Up to 10 configurations may be provided."
        },
        "httpConfig": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:HttpConfig",
          "description": "The DeviceService (HTTP) configuration for this device registry."
        },
        "id": {
          "type": "string",
          "description": "The identifier of this device registry. For example, `myRegistry`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "logLevel": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:RegistryLogLevel",
          "description": "**Beta Feature** The default logging verbosity for activity from devices in this registry. The verbosity level can be overridden by Device.log_level."
        },
        "mqttConfig": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:MqttConfig",
          "description": "The MQTT configuration for this device registry."
        },
        "name": {
          "type": "string",
          "description": "The resource path name. For example, `projects/example-project/locations/us-central1/registries/my-registry`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "stateNotificationConfig": {
          "$ref": "#/types/google-native:cloudiot%2Fv1:StateNotificationConfig",
          "description": "The configuration for notification of new states received from the device. State updates are guaranteed to be stored in the state history, but notifications to Cloud Pub/Sub are not guaranteed. For example, if permissions are misconfigured or the specified topic doesn't exist, no notification will be published but the state will still be stored in Cloud IoT Core."
        }
      }
    },
    "google-native:cloudiot/v1:RegistryGroupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudiot/v1:RegistryGroupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudiot/v1:RegistryGroupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "groupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "groupId",
        "location",
        "project",
        "registryId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "groupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "groupId",
        "registryId"
      ]
    },
    "google-native:cloudiot/v1:RegistryIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudiot/v1:RegistryIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudiot/v1:RegistryIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "registryId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "registryId"
      ]
    },
    "google-native:cloudkms/v1:CryptoKey": {
      "description": "Create a new CryptoKey within a KeyRing. CryptoKey.purpose and CryptoKey.version_template.algorithm are required.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time at which this CryptoKey was created."
        },
        "cryptoKeyBackend": {
          "type": "string",
          "description": "Immutable. The resource name of the backend environment where the key material for all CryptoKeyVersions associated with this CryptoKey reside and where all related cryptographic operations are performed. Only applicable if CryptoKeyVersions have a ProtectionLevel of EXTERNAL_VPC, with the resource name in the format `projects/*/locations/*/ekmConnections/*`. Note, this list is non-exhaustive and may apply to additional ProtectionLevels in the future."
        },
        "cryptoKeyId": {
          "type": "string",
          "description": "Required. It must be unique within a KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "destroyScheduledDuration": {
          "type": "string",
          "description": "Immutable. The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED. If not specified at creation time, the default duration is 24 hours."
        },
        "importOnly": {
          "type": "boolean",
          "description": "Immutable. Whether this key may contain imported versions only."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user-defined metadata. For more information, see [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for this CryptoKey in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        },
        "nextRotationTime": {
          "type": "string",
          "description": "At next_rotation_time, the Key Management Service will automatically: 1. Create a new version of this CryptoKey. 2. Mark the new version as primary. Key rotations performed manually via CreateCryptoKeyVersion and UpdateCryptoKeyPrimaryVersion do not affect next_rotation_time. Keys with purpose ENCRYPT_DECRYPT support automatic rotation. For other keys, this field must be omitted."
        },
        "primary": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyVersionResponse",
          "description": "A copy of the \"primary\" CryptoKeyVersion that will be used by Encrypt when this CryptoKey is given in EncryptRequest.name. The CryptoKey's primary version can be updated via UpdateCryptoKeyPrimaryVersion. Keys with purpose ENCRYPT_DECRYPT may have a primary. For other keys, this field will be omitted."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "Immutable. The immutable purpose of this CryptoKey."
        },
        "rotationPeriod": {
          "type": "string",
          "description": "next_rotation_time will be advanced by this period when the service automatically rotates a key. Must be at least 24 hours and at most 876,000 hours. If rotation_period is set, next_rotation_time must also be set. Keys with purpose ENCRYPT_DECRYPT support automatic rotation. For other keys, this field must be omitted."
        },
        "skipInitialVersionCreation": {
          "type": "boolean",
          "description": "If set to true, the request will create a CryptoKey without any CryptoKeyVersions. You must manually call CreateCryptoKeyVersion or ImportCryptoKeyVersion before you can use this CryptoKey."
        },
        "versionTemplate": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyVersionTemplateResponse",
          "description": "A template describing settings for new CryptoKeyVersion instances. The properties of new CryptoKeyVersion instances created by either CreateCryptoKeyVersion or auto-rotation are controlled by this template."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "cryptoKeyBackend",
        "cryptoKeyId",
        "destroyScheduledDuration",
        "importOnly",
        "keyRingId",
        "labels",
        "location",
        "name",
        "nextRotationTime",
        "primary",
        "project",
        "purpose",
        "rotationPeriod",
        "versionTemplate"
      ],
      "inputProperties": {
        "cryptoKeyBackend": {
          "type": "string",
          "description": "Immutable. The resource name of the backend environment where the key material for all CryptoKeyVersions associated with this CryptoKey reside and where all related cryptographic operations are performed. Only applicable if CryptoKeyVersions have a ProtectionLevel of EXTERNAL_VPC, with the resource name in the format `projects/*/locations/*/ekmConnections/*`. Note, this list is non-exhaustive and may apply to additional ProtectionLevels in the future."
        },
        "cryptoKeyId": {
          "type": "string",
          "description": "Required. It must be unique within a KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "destroyScheduledDuration": {
          "type": "string",
          "description": "Immutable. The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED. If not specified at creation time, the default duration is 24 hours."
        },
        "importOnly": {
          "type": "boolean",
          "description": "Immutable. Whether this key may contain imported versions only."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels with user-defined metadata. For more information, see [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "nextRotationTime": {
          "type": "string",
          "description": "At next_rotation_time, the Key Management Service will automatically: 1. Create a new version of this CryptoKey. 2. Mark the new version as primary. Key rotations performed manually via CreateCryptoKeyVersion and UpdateCryptoKeyPrimaryVersion do not affect next_rotation_time. Keys with purpose ENCRYPT_DECRYPT support automatic rotation. For other keys, this field must be omitted."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyPurpose",
          "description": "Immutable. The immutable purpose of this CryptoKey."
        },
        "rotationPeriod": {
          "type": "string",
          "description": "next_rotation_time will be advanced by this period when the service automatically rotates a key. Must be at least 24 hours and at most 876,000 hours. If rotation_period is set, next_rotation_time must also be set. Keys with purpose ENCRYPT_DECRYPT support automatic rotation. For other keys, this field must be omitted."
        },
        "skipInitialVersionCreation": {
          "type": "boolean",
          "description": "If set to true, the request will create a CryptoKey without any CryptoKeyVersions. You must manually call CreateCryptoKeyVersion or ImportCryptoKeyVersion before you can use this CryptoKey."
        },
        "versionTemplate": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyVersionTemplate",
          "description": "A template describing settings for new CryptoKeyVersion instances. The properties of new CryptoKeyVersion instances created by either CreateCryptoKeyVersion or auto-rotation are controlled by this template."
        }
      },
      "requiredInputs": [
        "keyRingId"
      ]
    },
    "google-native:cloudkms/v1:CryptoKeyVersion": {
      "description": "Create a new CryptoKeyVersion in a CryptoKey. The server will assign the next sequential id. If unset, state will be set to ENABLED.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports."
        },
        "attestation": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:KeyOperationAttestationResponse",
          "description": "Statement that was generated and signed by the HSM at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google. Only provided for key versions with protection_level HSM."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this CryptoKeyVersion was created."
        },
        "cryptoKeyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "destroyEventTime": {
          "type": "string",
          "description": "The time this CryptoKeyVersion's key material was destroyed. Only present if state is DESTROYED."
        },
        "destroyTime": {
          "type": "string",
          "description": "The time this CryptoKeyVersion's key material is scheduled for destruction. Only present if state is DESTROY_SCHEDULED."
        },
        "externalDestructionFailureReason": {
          "type": "string",
          "description": "The root cause of the most recent external destruction failure. Only present if state is EXTERNAL_DESTRUCTION_FAILED."
        },
        "externalProtectionLevelOptions": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:ExternalProtectionLevelOptionsResponse",
          "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels."
        },
        "generateTime": {
          "type": "string",
          "description": "The time this CryptoKeyVersion's key material was generated."
        },
        "generationFailureReason": {
          "type": "string",
          "description": "The root cause of the most recent generation failure. Only present if state is GENERATION_FAILED."
        },
        "importFailureReason": {
          "type": "string",
          "description": "The root cause of the most recent import failure. Only present if state is IMPORT_FAILED."
        },
        "importJob": {
          "type": "string",
          "description": "The name of the ImportJob used in the most recent import of this CryptoKeyVersion. Only present if the underlying key material was imported."
        },
        "importTime": {
          "type": "string",
          "description": "The time at which this CryptoKeyVersion's key material was most recently imported."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for this CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protectionLevel": {
          "type": "string",
          "description": "The ProtectionLevel describing how crypto operations are performed with this CryptoKeyVersion."
        },
        "reimportEligible": {
          "type": "boolean",
          "description": "Whether or not this key version is eligible for reimport, by being specified as a target in ImportCryptoKeyVersionRequest.crypto_key_version."
        },
        "state": {
          "type": "string",
          "description": "The current state of the CryptoKeyVersion."
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "attestation",
        "createTime",
        "cryptoKeyId",
        "destroyEventTime",
        "destroyTime",
        "externalDestructionFailureReason",
        "externalProtectionLevelOptions",
        "generateTime",
        "generationFailureReason",
        "importFailureReason",
        "importJob",
        "importTime",
        "keyRingId",
        "location",
        "name",
        "project",
        "protectionLevel",
        "reimportEligible",
        "state"
      ],
      "inputProperties": {
        "cryptoKeyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "externalProtectionLevelOptions": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:ExternalProtectionLevelOptions",
          "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyVersionState",
          "description": "The current state of the CryptoKeyVersion."
        }
      },
      "requiredInputs": [
        "keyRingId"
      ]
    },
    "google-native:cloudkms/v1:EkmConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:EkmConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:EkmConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      }
    },
    "google-native:cloudkms/v1:EkmConnection": {
      "description": "Creates a new EkmConnection in a given Project and Location.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time at which the EkmConnection was created."
        },
        "cryptoSpacePath": {
          "type": "string",
          "description": "Optional. Identifies the EKM Crypto Space that this EkmConnection maps to. Note: This field is required if KeyManagementMode is CLOUD_KMS."
        },
        "ekmConnectionId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`.",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Optional. Etag of the currently stored EkmConnection."
        },
        "keyManagementMode": {
          "type": "string",
          "description": "Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the EkmConnection in the format `projects/*/locations/*/ekmConnections/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceResolvers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:ServiceResolverResponse"
          },
          "description": "A list of ServiceResolvers where the EKM can be reached. There should be one ServiceResolver per EKM replica. Currently, only a single ServiceResolver is supported."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "cryptoSpacePath",
        "ekmConnectionId",
        "etag",
        "keyManagementMode",
        "location",
        "name",
        "project",
        "serviceResolvers"
      ],
      "inputProperties": {
        "cryptoSpacePath": {
          "type": "string",
          "description": "Optional. Identifies the EKM Crypto Space that this EkmConnection maps to. Note: This field is required if KeyManagementMode is CLOUD_KMS."
        },
        "ekmConnectionId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`.",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Optional. Etag of the currently stored EkmConnection."
        },
        "keyManagementMode": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:EkmConnectionKeyManagementMode",
          "description": "Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceResolvers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:ServiceResolver"
          },
          "description": "A list of ServiceResolvers where the EKM can be reached. There should be one ServiceResolver per EKM replica. Currently, only a single ServiceResolver is supported."
        }
      }
    },
    "google-native:cloudkms/v1:EkmConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:EkmConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:EkmConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "ekmConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "ekmConnectionId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "ekmConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "ekmConnectionId"
      ]
    },
    "google-native:cloudkms/v1:ImportJob": {
      "description": "Create a new ImportJob within a KeyRing. ImportJob.import_method is required.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "attestation": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:KeyOperationAttestationResponse",
          "description": "Statement that was generated and signed by the key creator (for example, an HSM) at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google. Only present if the chosen ImportMethod is one with a protection level of HSM."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this ImportJob was created."
        },
        "expireEventTime": {
          "type": "string",
          "description": "The time this ImportJob expired. Only present if state is EXPIRED."
        },
        "expireTime": {
          "type": "string",
          "description": "The time at which this ImportJob is scheduled for expiration and can no longer be used to import key material."
        },
        "generateTime": {
          "type": "string",
          "description": "The time this ImportJob's key material was generated."
        },
        "importJobId": {
          "type": "string",
          "description": "Required. It must be unique within a KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "importMethod": {
          "type": "string",
          "description": "Immutable. The wrapping method to be used for incoming key material."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for this ImportJob in the format `projects/*/locations/*/keyRings/*/importJobs/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protectionLevel": {
          "type": "string",
          "description": "Immutable. The protection level of the ImportJob. This must match the protection_level of the version_template on the CryptoKey you attempt to import into."
        },
        "publicKey": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:WrappingPublicKeyResponse",
          "description": "The public key with which to wrap key material prior to import. Only returned if state is ACTIVE."
        },
        "state": {
          "type": "string",
          "description": "The current state of the ImportJob, indicating if it can be used."
        }
      },
      "type": "object",
      "required": [
        "attestation",
        "createTime",
        "expireEventTime",
        "expireTime",
        "generateTime",
        "importJobId",
        "importMethod",
        "keyRingId",
        "location",
        "name",
        "project",
        "protectionLevel",
        "publicKey",
        "state"
      ],
      "inputProperties": {
        "importJobId": {
          "type": "string",
          "description": "Required. It must be unique within a KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "importMethod": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:ImportJobImportMethod",
          "description": "Immutable. The wrapping method to be used for incoming key material."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protectionLevel": {
          "$ref": "#/types/google-native:cloudkms%2Fv1:ImportJobProtectionLevel",
          "description": "Immutable. The protection level of the ImportJob. This must match the protection_level of the version_template on the CryptoKey you attempt to import into."
        }
      },
      "requiredInputs": [
        "importMethod",
        "keyRingId",
        "protectionLevel"
      ]
    },
    "google-native:cloudkms/v1:KeyRing": {
      "description": "Create a new KeyRing in a given Project and Location.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time at which this KeyRing was created."
        },
        "keyRingId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the KeyRing in the format `projects/*/locations/*/keyRings/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "keyRingId",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "keyRingId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:cloudkms/v1:KeyRingCryptoKeyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:KeyRingCryptoKeyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:KeyRingCryptoKeyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "cryptoKeyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "cryptoKeyId",
        "etag",
        "keyRingId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "cryptoKeyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "cryptoKeyId",
        "keyRingId"
      ]
    },
    "google-native:cloudkms/v1:KeyRingIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:KeyRingIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:KeyRingIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "keyRingId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "keyRingId"
      ]
    },
    "google-native:cloudkms/v1:KeyRingImportJobIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:KeyRingImportJobIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudkms/v1:KeyRingImportJobIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "importJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "importJobId",
        "keyRingId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "importJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "keyRingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "importJobId",
        "keyRingId"
      ]
    },
    "google-native:cloudresourcemanager/v1:Lien": {
      "description": "Create a Lien which applies to the resource denoted by the `parent` field. Callers of this method will require permission on the `parent` resource. For example, applying to `projects/1234` requires permission `resourcemanager.projects.updateLiens`. NOTE: Some resources may limit the number of Liens which may be applied.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation time of this Lien."
        },
        "name": {
          "type": "string",
          "description": "A system-generated unique identifier for this Lien. Example: `liens/1234abcd`"
        },
        "origin": {
          "type": "string",
          "description": "A stable, user-visible/meaningful string identifying the origin of the Lien, intended to be inspected programmatically. Maximum length of 200 characters. Example: 'compute.googleapis.com'"
        },
        "parent": {
          "type": "string",
          "description": "A reference to the resource this Lien is attached to. The server will validate the parent against those for which Liens are supported. Example: `projects/1234`"
        },
        "reason": {
          "type": "string",
          "description": "Concise user-visible strings indicating why an action cannot be performed on a resource. Maximum length of 200 characters. Example: 'Holds production API key'"
        },
        "restrictions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The types of operations which should be blocked as a result of this Lien. Each value should correspond to an IAM permission. The server will validate the permissions against those for which Liens are supported. An empty list is meaningless and will be rejected. Example: ['resourcemanager.projects.delete']"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "name",
        "origin",
        "parent",
        "reason",
        "restrictions"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "The creation time of this Lien."
        },
        "name": {
          "type": "string",
          "description": "A system-generated unique identifier for this Lien. Example: `liens/1234abcd`"
        },
        "origin": {
          "type": "string",
          "description": "A stable, user-visible/meaningful string identifying the origin of the Lien, intended to be inspected programmatically. Maximum length of 200 characters. Example: 'compute.googleapis.com'"
        },
        "parent": {
          "type": "string",
          "description": "A reference to the resource this Lien is attached to. The server will validate the parent against those for which Liens are supported. Example: `projects/1234`"
        },
        "reason": {
          "type": "string",
          "description": "Concise user-visible strings indicating why an action cannot be performed on a resource. Maximum length of 200 characters. Example: 'Holds production API key'"
        },
        "restrictions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The types of operations which should be blocked as a result of this Lien. Each value should correspond to an IAM permission. The server will validate the permissions against those for which Liens are supported. An empty list is meaningless and will be rejected. Example: ['resourcemanager.projects.delete']"
        }
      }
    },
    "google-native:cloudresourcemanager/v1:OrganizationIamBinding": {
      "description": "Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. \"organizations/123\". Authorization requires the Google IAM permission `resourcemanager.organizations.setIamPolicy` on the specified organization",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1:OrganizationIamMember": {
      "description": "Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. \"organizations/123\". Authorization requires the Google IAM permission `resourcemanager.organizations.setIamPolicy` on the specified organization",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1:OrganizationIamPolicy": {
      "description": "Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. \"organizations/123\". Authorization requires the Google IAM permission `resourcemanager.organizations.setIamPolicy` on the specified organization\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:cloudresourcemanager/v1:Project": {
      "description": "Request that a new Project be created. The result is an Operation which can be used to track the creation process. This process usually takes a few seconds, but can sometimes take much longer. The tracking Operation is automatically deleted after a few hours, so there is no need to call DeleteOperation. Authorization requires the Google IAM permission `resourcemanager.projects.create` on the specified parent for the new project. The parent is identified by a specified ResourceId, which must include both an ID and a type, such as organization. This method does not associate the new project with a billing account. You can set or update the billing account associated with a project using the [`projects.updateBillingInfo`] (/billing/reference/rest/v1/projects/updateBillingInfo) method.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time. Read-only."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z{0,62}. Label values must be between 0 and 63 characters long and must conform to the regular expression [a-z0-9_-]{0,63}. A label value can be empty. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: \"environment\" : \"dev\" Read-write."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The Project lifecycle state. Read-only."
        },
        "name": {
          "type": "string",
          "description": "The optional user-assigned display name of the Project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project` Read-write."
        },
        "parent": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:ResourceIdResponse",
          "description": "An optional reference to a parent Resource. Supported parent types include \"organization\" and \"folder\". Once set, the parent cannot be cleared. The `parent` can be set on creation or using the `UpdateProject` method; the end user must have the `resourcemanager.projects.create` permission on the parent."
        },
        "projectId": {
          "type": "string",
          "description": "The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123` Read-only after creation."
        },
        "projectNumber": {
          "type": "string",
          "description": "The number uniquely identifying the project. Example: `415104041262` Read-only."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "labels",
        "lifecycleState",
        "name",
        "parent",
        "projectId",
        "projectNumber"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "Creation time. Read-only."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z{0,62}. Label values must be between 0 and 63 characters long and must conform to the regular expression [a-z0-9_-]{0,63}. A label value can be empty. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: \"environment\" : \"dev\" Read-write."
        },
        "lifecycleState": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:ProjectLifecycleState",
          "description": "The Project lifecycle state. Read-only."
        },
        "name": {
          "type": "string",
          "description": "The optional user-assigned display name of the Project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project` Read-write."
        },
        "parent": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:ResourceId",
          "description": "An optional reference to a parent Resource. Supported parent types include \"organization\" and \"folder\". Once set, the parent cannot be cleared. The `parent` can be set on creation or using the `UpdateProject` method; the end user must have the `resourcemanager.projects.create` permission on the parent."
        },
        "projectId": {
          "type": "string",
          "description": "The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123` Read-only after creation."
        },
        "projectNumber": {
          "type": "string",
          "description": "The number uniquely identifying the project. Example: `415104041262` Read-only."
        }
      }
    },
    "google-native:cloudresourcemanager/v1:ProjectIamBinding": {
      "description": "Sets the IAM access control policy for the specified Project. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. NOTE: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. For additional information about `resource` (e.g. my-project-id) structure and identification, see [Resource Names](https://cloud.google.com/apis/design/resource_names). The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + You can only grant ownership of a project to a member by using the Google Cloud console. Inviting a member will deliver an invitation email that they must accept. An invitation email is not generated if you are granting a role other than owner, or if both the member you are inviting and the project are part of your organization. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. If the project is part of an organization, you can remove all owners, potentially making the organization inaccessible. Authorization requires the Google IAM permission `resourcemanager.projects.setIamPolicy` on the project",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1:ProjectIamMember": {
      "description": "Sets the IAM access control policy for the specified Project. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. NOTE: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. For additional information about `resource` (e.g. my-project-id) structure and identification, see [Resource Names](https://cloud.google.com/apis/design/resource_names). The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + You can only grant ownership of a project to a member by using the Google Cloud console. Inviting a member will deliver an invitation email that they must accept. An invitation email is not generated if you are granting a role other than owner, or if both the member you are inviting and the project are part of your organization. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. If the project is part of an organization, you can remove all owners, potentially making the organization inaccessible. Authorization requires the Google IAM permission `resourcemanager.projects.setIamPolicy` on the project",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1:ProjectIamPolicy": {
      "description": "Sets the IAM access control policy for the specified Project. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. NOTE: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. For additional information about `resource` (e.g. my-project-id) structure and identification, see [Resource Names](https://cloud.google.com/apis/design/resource_names). The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + You can only grant ownership of a project to a member by using the Google Cloud console. Inviting a member will deliver an invitation email that they must accept. An invitation email is not generated if you are granting a role other than owner, or if both the member you are inviting and the project are part of your organization. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. If the project is part of an organization, you can remove all owners, potentially making the organization inaccessible. Authorization requires the Google IAM permission `resourcemanager.projects.setIamPolicy` on the project\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "resource",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:OrganizationIamBinding": {
      "description": "Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. \"organizations/123\".",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:OrganizationIamMember": {
      "description": "Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. \"organizations/123\".",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:OrganizationIamPolicy": {
      "description": "Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. \"organizations/123\".\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:Project": {
      "description": "Creates a Project resource. Initially, the Project resource is owned by its creator exclusively. The creator can later grant permission to others to read or update the Project. Several APIs are activated automatically for the Project, including Google Cloud Storage. The parent is identified by a specified ResourceId, which must include both an ID and a type, such as project, folder, or organization. This method does not associate the new project with a billing account. You can set or update the billing account associated with a project using the [`projects.updateBillingInfo`] (/billing/reference/rest/v1/projects/updateBillingInfo) method.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time. Read-only."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z{0,62}. Label values must be between 0 and 63 characters long and must conform to the regular expression [a-z0-9_-]{0,63}. A label value can be empty. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: `\"environment\" : \"dev\"` Read-write."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The Project lifecycle state. Read-only."
        },
        "name": {
          "type": "string",
          "description": "The optional user-assigned display name of the Project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project` Read-write."
        },
        "parent": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:ResourceIdResponse",
          "description": "An optional reference to a parent Resource. Supported parent types include \"organization\" and \"folder\". Once set, the parent cannot be cleared. The `parent` can be set on creation or using the `UpdateProject` method; the end user must have the `resourcemanager.projects.create` permission on the parent. Read-write."
        },
        "projectId": {
          "type": "string",
          "description": "The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123` Read-only after creation."
        },
        "projectNumber": {
          "type": "string",
          "description": "The number uniquely identifying the project. Example: `415104041262` Read-only."
        },
        "useLegacyStack": {
          "type": "boolean",
          "description": "A now unused experiment opt-out option."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "labels",
        "lifecycleState",
        "name",
        "parent",
        "projectId",
        "projectNumber"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "Creation time. Read-only."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z{0,62}. Label values must be between 0 and 63 characters long and must conform to the regular expression [a-z0-9_-]{0,63}. A label value can be empty. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: `\"environment\" : \"dev\"` Read-write."
        },
        "lifecycleState": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:ProjectLifecycleState",
          "description": "The Project lifecycle state. Read-only."
        },
        "name": {
          "type": "string",
          "description": "The optional user-assigned display name of the Project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project` Read-write."
        },
        "parent": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:ResourceId",
          "description": "An optional reference to a parent Resource. Supported parent types include \"organization\" and \"folder\". Once set, the parent cannot be cleared. The `parent` can be set on creation or using the `UpdateProject` method; the end user must have the `resourcemanager.projects.create` permission on the parent. Read-write."
        },
        "projectId": {
          "type": "string",
          "description": "The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123` Read-only after creation."
        },
        "projectNumber": {
          "type": "string",
          "description": "The number uniquely identifying the project. Example: `415104041262` Read-only."
        },
        "useLegacyStack": {
          "type": "boolean",
          "description": "A now unused experiment opt-out option."
        }
      }
    },
    "google-native:cloudresourcemanager/v1beta1:ProjectIamBinding": {
      "description": "Sets the IAM access control policy for the specified Project. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. NOTE: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + Membership changes that leave the project without any owners that have accepted the Terms of Service (ToS) will be rejected. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. Authorization requires the Google IAM permission `resourcemanager.projects.setIamPolicy` on the project",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:ProjectIamMember": {
      "description": "Sets the IAM access control policy for the specified Project. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. NOTE: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + Membership changes that leave the project without any owners that have accepted the Terms of Service (ToS) will be rejected. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. Authorization requires the Google IAM permission `resourcemanager.projects.setIamPolicy` on the project",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v1beta1:ProjectIamPolicy": {
      "description": "Sets the IAM access control policy for the specified Project. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. NOTE: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + Membership changes that leave the project without any owners that have accepted the Terms of Service (ToS) will be rejected. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. Authorization requires the Google IAM permission `resourcemanager.projects.setIamPolicy` on the project\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "resource",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:cloudresourcemanager/v2:Folder": {
      "description": "Creates a Folder in the resource hierarchy. Returns an Operation which can be used to track the progress of the folder creation workflow. Upon success the Operation.response field will be populated with the created Folder. In order to succeed, the addition of this new Folder must not violate the Folder naming, height or fanout constraints. + The Folder's display_name must be distinct from all other Folders that share its parent. + The addition of the Folder must not cause the active Folder hierarchy to exceed a height of 10. Note, the full active + deleted Folder hierarchy is allowed to reach a height of 20; this provides additional headroom when moving folders that contain deleted folders. + The addition of the Folder must not cause the total number of Folders under its parent to exceed 300. If the operation fails due to a folder constraint violation, some errors may be returned by the CreateFolder request, with status code FAILED_PRECONDITION and an error description. Other folder constraint violations will be communicated in the Operation, with the specific PreconditionFailure returned via the details list in the Operation.error field. The caller must have `resourcemanager.folders.create` permission on the identified parent.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the Folder was created. Assigned by the server."
        },
        "displayName": {
          "type": "string",
          "description": "The folder's display name. A folder's display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The lifecycle state of the folder. Updates to the lifecycle_state must be performed via DeleteFolder and UndeleteFolder."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Folder. Its format is `folders/{folder_id}`, for example: \"folders/1234\"."
        },
        "parent": {
          "type": "string",
          "description": "Required. The resource name of the new Folder's parent. Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "lifecycleState",
        "name",
        "parent"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The folder's display name. A folder's display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`."
        },
        "parent": {
          "type": "string",
          "description": "The Folder's parent's resource name. Updates to the folder's parent must be performed via MoveFolder."
        }
      },
      "requiredInputs": [
        "parent"
      ]
    },
    "google-native:cloudresourcemanager/v2:FolderIamBinding": {
      "description": "Sets the access control policy on a Folder, replacing any existing policy. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v2:FolderIamMember": {
      "description": "Sets the access control policy on a Folder, replacing any existing policy. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v2:FolderIamPolicy": {
      "description": "Sets the access control policy on a Folder, replacing any existing policy. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "folderId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "folderId"
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:Folder": {
      "description": "Creates a Folder in the resource hierarchy. Returns an Operation which can be used to track the progress of the folder creation workflow. Upon success the Operation.response field will be populated with the created Folder. In order to succeed, the addition of this new Folder must not violate the Folder naming, height or fanout constraints. + The Folder's display_name must be distinct from all other Folders that share its parent. + The addition of the Folder must not cause the active Folder hierarchy to exceed a height of 10. Note, the full active + deleted Folder hierarchy is allowed to reach a height of 20; this provides additional headroom when moving folders that contain deleted folders. + The addition of the Folder must not cause the total number of Folders under its parent to exceed 300. If the operation fails due to a folder constraint violation, some errors may be returned by the CreateFolder request, with status code FAILED_PRECONDITION and an error description. Other folder constraint violations will be communicated in the Operation, with the specific PreconditionFailure returned via the details list in the Operation.error field. The caller must have `resourcemanager.folders.create` permission on the identified parent.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the Folder was created. Assigned by the server."
        },
        "displayName": {
          "type": "string",
          "description": "The folder's display name. A folder's display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The lifecycle state of the folder. Updates to the lifecycle_state must be performed via DeleteFolder and UndeleteFolder."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Folder. Its format is `folders/{folder_id}`, for example: \"folders/1234\"."
        },
        "parent": {
          "type": "string",
          "description": "Required. The resource name of the new Folder's parent. Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "lifecycleState",
        "name",
        "parent"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The folder's display name. A folder's display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`."
        },
        "parent": {
          "type": "string",
          "description": "The Folder's parent's resource name. Updates to the folder's parent must be performed via MoveFolder."
        }
      },
      "requiredInputs": [
        "parent"
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:FolderIamBinding": {
      "description": "Sets the access control policy on a Folder, replacing any existing policy. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:FolderIamMember": {
      "description": "Sets the access control policy on a Folder, replacing any existing policy. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v2beta1:FolderIamPolicy": {
      "description": "Sets the access control policy on a Folder, replacing any existing policy. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "folderId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "folderId"
      ]
    },
    "google-native:cloudresourcemanager/v3:Folder": {
      "description": "Creates a folder in the resource hierarchy. Returns an `Operation` which can be used to track the progress of the folder creation workflow. Upon success, the `Operation.response` field will be populated with the created Folder. In order to succeed, the addition of this new folder must not violate the folder naming, height, or fanout constraints. + The folder's `display_name` must be distinct from all other folders that share its parent. + The addition of the folder must not cause the active folder hierarchy to exceed a height of 10. Note, the full active + deleted folder hierarchy is allowed to reach a height of 20; this provides additional headroom when moving folders that contain deleted folders. + The addition of the folder must not cause the total number of folders under its parent to exceed 300. If the operation fails due to a folder constraint violation, some errors may be returned by the `CreateFolder` request, with status code `FAILED_PRECONDITION` and an error description. Other folder constraint violations will be communicated in the `Operation`, with the specific `PreconditionFailure` returned in the details list in the `Operation.error` field. The caller must have `resourcemanager.folders.create` permission on the identified parent.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the folder was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "Timestamp when the folder was requested to be deleted."
        },
        "displayName": {
          "type": "string",
          "description": "The folder's display name. A folder's display name must be unique amongst its siblings. For example, no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`."
        },
        "etag": {
          "type": "string",
          "description": "A checksum computed by the server based on the current value of the folder resource. This may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the folder. Its format is `folders/{folder_id}`, for example: \"folders/1234\"."
        },
        "parent": {
          "type": "string",
          "description": "The folder's parent's resource name. Updates to the folder's parent must be performed using MoveFolder."
        },
        "state": {
          "type": "string",
          "description": "The lifecycle state of the folder. Updates to the state must be performed using DeleteFolder and UndeleteFolder."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when the folder was last modified."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "displayName",
        "etag",
        "name",
        "parent",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The folder's display name. A folder's display name must be unique amongst its siblings. For example, no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`."
        },
        "parent": {
          "type": "string",
          "description": "The folder's parent's resource name. Updates to the folder's parent must be performed using MoveFolder."
        }
      },
      "requiredInputs": [
        "parent"
      ]
    },
    "google-native:cloudresourcemanager/v3:FolderIamBinding": {
      "description": "Sets the access control policy on a folder, replacing any existing policy. The `resource` field should be the folder's resource name, for example: \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:FolderIamMember": {
      "description": "Sets the access control policy on a folder, replacing any existing policy. The `resource` field should be the folder's resource name, for example: \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:FolderIamPolicy": {
      "description": "Sets the access control policy on a folder, replacing any existing policy. The `resource` field should be the folder's resource name, for example: \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "folderId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "folderId"
      ]
    },
    "google-native:cloudresourcemanager/v3:Lien": {
      "description": "Create a Lien which applies to the resource denoted by the `parent` field. Callers of this method will require permission on the `parent` resource. For example, applying to `projects/1234` requires permission `resourcemanager.projects.updateLiens`. NOTE: Some resources may limit the number of Liens which may be applied.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation time of this Lien."
        },
        "name": {
          "type": "string",
          "description": "A system-generated unique identifier for this Lien. Example: `liens/1234abcd`"
        },
        "origin": {
          "type": "string",
          "description": "A stable, user-visible/meaningful string identifying the origin of the Lien, intended to be inspected programmatically. Maximum length of 200 characters. Example: 'compute.googleapis.com'"
        },
        "parent": {
          "type": "string",
          "description": "A reference to the resource this Lien is attached to. The server will validate the parent against those for which Liens are supported. Example: `projects/1234`"
        },
        "reason": {
          "type": "string",
          "description": "Concise user-visible strings indicating why an action cannot be performed on a resource. Maximum length of 200 characters. Example: 'Holds production API key'"
        },
        "restrictions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The types of operations which should be blocked as a result of this Lien. Each value should correspond to an IAM permission. The server will validate the permissions against those for which Liens are supported. An empty list is meaningless and will be rejected. Example: ['resourcemanager.projects.delete']"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "name",
        "origin",
        "parent",
        "reason",
        "restrictions"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "The creation time of this Lien."
        },
        "name": {
          "type": "string",
          "description": "A system-generated unique identifier for this Lien. Example: `liens/1234abcd`"
        },
        "origin": {
          "type": "string",
          "description": "A stable, user-visible/meaningful string identifying the origin of the Lien, intended to be inspected programmatically. Maximum length of 200 characters. Example: 'compute.googleapis.com'"
        },
        "parent": {
          "type": "string",
          "description": "A reference to the resource this Lien is attached to. The server will validate the parent against those for which Liens are supported. Example: `projects/1234`"
        },
        "reason": {
          "type": "string",
          "description": "Concise user-visible strings indicating why an action cannot be performed on a resource. Maximum length of 200 characters. Example: 'Holds production API key'"
        },
        "restrictions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The types of operations which should be blocked as a result of this Lien. Each value should correspond to an IAM permission. The server will validate the permissions against those for which Liens are supported. An empty list is meaningless and will be rejected. Example: ['resourcemanager.projects.delete']"
        }
      }
    },
    "google-native:cloudresourcemanager/v3:OrganizationIamBinding": {
      "description": "Sets the access control policy on an organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, for example: \"organizations/123\". Authorization requires the IAM permission `resourcemanager.organizations.setIamPolicy` on the specified organization.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:OrganizationIamMember": {
      "description": "Sets the access control policy on an organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, for example: \"organizations/123\". Authorization requires the IAM permission `resourcemanager.organizations.setIamPolicy` on the specified organization.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:OrganizationIamPolicy": {
      "description": "Sets the access control policy on an organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, for example: \"organizations/123\". Authorization requires the IAM permission `resourcemanager.organizations.setIamPolicy` on the specified organization.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:cloudresourcemanager/v3:Project": {
      "description": "Request that a new project be created. The result is an `Operation` which can be used to track the creation process. This process usually takes a few seconds, but can sometimes take much longer. The tracking `Operation` is automatically deleted after a few hours, so there is no need to call `DeleteOperation`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which this resource was requested for deletion."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-assigned display name of the project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project`"
        },
        "etag": {
          "type": "string",
          "description": "A checksum computed by the server based on the current value of the Project resource. This may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels associated with this project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?. No more than 64 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: `\"myBusinessDimension\" : \"businessValue\"`"
        },
        "name": {
          "type": "string",
          "description": "The unique resource name of the project. It is an int64 generated number prefixed by \"projects/\". Example: `projects/415104041262`"
        },
        "parent": {
          "type": "string",
          "description": "Optional. A reference to a parent Resource. eg., `organizations/123` or `folders/876`."
        },
        "projectId": {
          "type": "string",
          "description": "Immutable. The unique, user-assigned id of the project. It must be 6 to 30 lowercase ASCII letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123`"
        },
        "state": {
          "type": "string",
          "description": "The project lifecycle state."
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time this resource was modified."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "displayName",
        "etag",
        "labels",
        "name",
        "parent",
        "projectId",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Optional. A user-assigned display name of the project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels associated with this project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?. No more than 64 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: `\"myBusinessDimension\" : \"businessValue\"`"
        },
        "parent": {
          "type": "string",
          "description": "Optional. A reference to a parent Resource. eg., `organizations/123` or `folders/876`."
        },
        "projectId": {
          "type": "string",
          "description": "Immutable. The unique, user-assigned id of the project. It must be 6 to 30 lowercase ASCII letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123`"
        }
      }
    },
    "google-native:cloudresourcemanager/v3:ProjectIamBinding": {
      "description": "Sets the IAM access control policy for the specified project, in the format `projects/{ProjectIdOrNumber}` e.g. projects/123. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. Note: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited using the Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. If the project is part of an organization, you can remove all owners, potentially making the organization inaccessible.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:ProjectIamMember": {
      "description": "Sets the IAM access control policy for the specified project, in the format `projects/{ProjectIdOrNumber}` e.g. projects/123. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. Note: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited using the Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. If the project is part of an organization, you can remove all owners, potentially making the organization inaccessible.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:ProjectIamPolicy": {
      "description": "Sets the IAM access control policy for the specified project, in the format `projects/{ProjectIdOrNumber}` e.g. projects/123. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. Note: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited using the Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. If the project is part of an organization, you can remove all owners, potentially making the organization inaccessible.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      }
    },
    "google-native:cloudresourcemanager/v3:TagKey": {
      "description": "Creates a new TagKey. If another request with the same parameters is sent while the original request is in process, the second request will receive an error. A maximum of 1000 TagKeys can exist under a parent at any given time.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-assigned description of the TagKey. Must not exceed 256 characters. Read-write."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Entity tag which users can pass to prevent race conditions. This field is always set in server responses. See UpdateTagKeyRequest for details."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for a TagKey. Must be in the format `tagKeys/{tag_key_id}`, where `tag_key_id` is the generated numeric id for the TagKey."
        },
        "namespacedName": {
          "type": "string",
          "description": "Immutable. Namespaced name of the TagKey."
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the TagKey's parent. A TagKey can be parented by an Organization or a Project. For a TagKey parented by an Organization, its parent must be in the form `organizations/{org_id}`. For a TagKey parented by a Project, its parent can be in the form `projects/{project_id}` or `projects/{project_number}`."
        },
        "purpose": {
          "type": "string",
          "description": "Optional. A purpose denotes that this Tag is intended for use in policies of a specific policy engine, and will involve that policy engine in management operations involving this Tag. A purpose does not grant a policy engine exclusive rights to the Tag, and it may be referenced by other policy engines. A purpose cannot be changed once set."
        },
        "purposeData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Purpose data corresponds to the policy system that the tag is intended for. See documentation for `Purpose` for formatting of this field. Purpose data cannot be changed once set."
        },
        "shortName": {
          "type": "string",
          "description": "Immutable. The user friendly name for a TagKey. The short name should be unique for TagKeys within the same tag namespace. The short name must be 1-63 characters, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "name",
        "namespacedName",
        "parent",
        "purpose",
        "purposeData",
        "shortName",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. User-assigned description of the TagKey. Must not exceed 256 characters. Read-write."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Entity tag which users can pass to prevent race conditions. This field is always set in server responses. See UpdateTagKeyRequest for details."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for a TagKey. Must be in the format `tagKeys/{tag_key_id}`, where `tag_key_id` is the generated numeric id for the TagKey."
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the TagKey's parent. A TagKey can be parented by an Organization or a Project. For a TagKey parented by an Organization, its parent must be in the form `organizations/{org_id}`. For a TagKey parented by a Project, its parent can be in the form `projects/{project_id}` or `projects/{project_number}`."
        },
        "purpose": {
          "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:TagKeyPurpose",
          "description": "Optional. A purpose denotes that this Tag is intended for use in policies of a specific policy engine, and will involve that policy engine in management operations involving this Tag. A purpose does not grant a policy engine exclusive rights to the Tag, and it may be referenced by other policy engines. A purpose cannot be changed once set."
        },
        "purposeData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Purpose data corresponds to the policy system that the tag is intended for. See documentation for `Purpose` for formatting of this field. Purpose data cannot be changed once set."
        },
        "shortName": {
          "type": "string",
          "description": "Immutable. The user friendly name for a TagKey. The short name should be unique for TagKeys within the same tag namespace. The short name must be 1-63 characters, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between."
        }
      },
      "requiredInputs": [
        "shortName"
      ]
    },
    "google-native:cloudresourcemanager/v3:TagKeyIamBinding": {
      "description": "Sets the access control policy on a TagKey, replacing any existing policy. The `resource` field should be the TagKey's resource name. For example, \"tagKeys/1234\". The caller must have `resourcemanager.tagKeys.setIamPolicy` permission on the identified tagValue.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:TagKeyIamMember": {
      "description": "Sets the access control policy on a TagKey, replacing any existing policy. The `resource` field should be the TagKey's resource name. For example, \"tagKeys/1234\". The caller must have `resourcemanager.tagKeys.setIamPolicy` permission on the identified tagValue.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:TagKeyIamPolicy": {
      "description": "Sets the access control policy on a TagKey, replacing any existing policy. The `resource` field should be the TagKey's resource name. For example, \"tagKeys/1234\". The caller must have `resourcemanager.tagKeys.setIamPolicy` permission on the identified tagValue.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "tagKeyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "tagKeyId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "tagKeyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "tagKeyId"
      ]
    },
    "google-native:cloudresourcemanager/v3:TagValue": {
      "description": "Creates a TagValue as a child of the specified TagKey. If a another request with the same parameters is sent while the original request is in process the second request will receive an error. A maximum of 1000 TagValues can exist under a TagKey at any given time.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-assigned description of the TagValue. Must not exceed 256 characters. Read-write."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Entity tag which users can pass to prevent race conditions. This field is always set in server responses. See UpdateTagValueRequest for details."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Resource name for TagValue in the format `tagValues/456`."
        },
        "namespacedName": {
          "type": "string",
          "description": "The namespaced name of the TagValue. Can be in the form `{organization_id}/{tag_key_short_name}/{tag_value_short_name}` or `{project_id}/{tag_key_short_name}/{tag_value_short_name}` or `{project_number}/{tag_key_short_name}/{tag_value_short_name}`."
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the new TagValue's parent TagKey. Must be of the form `tagKeys/{tag_key_id}`."
        },
        "shortName": {
          "type": "string",
          "description": "Immutable. User-assigned short name for TagValue. The short name should be unique for TagValues within the same parent TagKey. The short name must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "name",
        "namespacedName",
        "parent",
        "shortName",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. User-assigned description of the TagValue. Must not exceed 256 characters. Read-write."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Entity tag which users can pass to prevent race conditions. This field is always set in server responses. See UpdateTagValueRequest for details."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Resource name for TagValue in the format `tagValues/456`."
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the new TagValue's parent TagKey. Must be of the form `tagKeys/{tag_key_id}`."
        },
        "shortName": {
          "type": "string",
          "description": "Immutable. User-assigned short name for TagValue. The short name should be unique for TagValues within the same parent TagKey. The short name must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between."
        }
      },
      "requiredInputs": [
        "shortName"
      ]
    },
    "google-native:cloudresourcemanager/v3:TagValueIamBinding": {
      "description": "Sets the access control policy on a TagValue, replacing any existing policy. The `resource` field should be the TagValue's resource name. For example: `tagValues/1234`. The caller must have `resourcemanager.tagValues.setIamPolicy` permission on the identified tagValue.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:TagValueIamMember": {
      "description": "Sets the access control policy on a TagValue, replacing any existing policy. The `resource` field should be the TagValue's resource name. For example: `tagValues/1234`. The caller must have `resourcemanager.tagValues.setIamPolicy` permission on the identified tagValue.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudresourcemanager/v3:TagValueIamPolicy": {
      "description": "Sets the access control policy on a TagValue, replacing any existing policy. The `resource` field should be the TagValue's resource name. For example: `tagValues/1234`. The caller must have `resourcemanager.tagValues.setIamPolicy` permission on the identified tagValue.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "tagValueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "tagValueId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "tagValueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "tagValueId"
      ]
    },
    "google-native:cloudscheduler/v1:Job": {
      "description": "Creates a job.",
      "properties": {
        "appEngineHttpTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:AppEngineHttpTargetResponse",
          "description": "App Engine HTTP target."
        },
        "attemptDeadline": {
          "type": "string",
          "description": "The deadline for job attempts. If the request handler does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in execution logs. Cloud Scheduler will retry the job according to the RetryConfig. The default and the allowed values depend on the type of target: * For HTTP targets, the default is 3 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine HTTP targets, 0 indicates that the request has the default deadline. The default deadline depends on the scaling type of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. * For Pub/Sub targets, this field is ignored."
        },
        "description": {
          "type": "string",
          "description": "Optionally caller-specified in CreateJob or UpdateJob. A human-readable description for the job. This string must not contain more than 500 characters."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:HttpTargetResponse",
          "description": "HTTP target."
        },
        "lastAttemptTime": {
          "type": "string",
          "description": "The time the last job attempt started."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateJob, after which it becomes output only. The job name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the job's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:PubsubTargetResponse",
          "description": "Pub/Sub target."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:RetryConfigResponse",
          "description": "Settings that determine the retry behavior."
        },
        "schedule": {
          "type": "string",
          "description": "Required, except when used with UpdateJob. Describes the schedule on which the job will be executed. The schedule can be either of the following types: * [Crontab](https://en.wikipedia.org/wiki/Cron#Overview) * English-like [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules) As a general rule, execution `n + 1` of a job will not begin until execution `n` has finished. Cloud Scheduler will never allow two simultaneously outstanding executions. For example, this implies that if the `n+1`th execution is scheduled to run at 16:00 but the `n`th execution takes until 16:15, the `n+1`th execution will not start until `16:15`. A scheduled start time will be delayed if the previous execution has not ended when its scheduled time occurs. If retry_count > 0 and a job attempt fails, the job will be tried a total of retry_count times, with exponential backoff, until the next scheduled start time. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The next time the job is scheduled. Note that this may be a retry of a previously failed attempt or the next execution time according to the schedule."
        },
        "state": {
          "type": "string",
          "description": "State of the job."
        },
        "status": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:StatusResponse",
          "description": "The response from the target for the last attempted execution."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting schedule. The value of this field must be a time zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database). Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT)."
        },
        "userUpdateTime": {
          "type": "string",
          "description": "The creation time of the job."
        }
      },
      "type": "object",
      "required": [
        "appEngineHttpTarget",
        "attemptDeadline",
        "description",
        "httpTarget",
        "lastAttemptTime",
        "location",
        "name",
        "project",
        "pubsubTarget",
        "retryConfig",
        "schedule",
        "scheduleTime",
        "state",
        "status",
        "timeZone",
        "userUpdateTime"
      ],
      "inputProperties": {
        "appEngineHttpTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:AppEngineHttpTarget",
          "description": "App Engine HTTP target."
        },
        "attemptDeadline": {
          "type": "string",
          "description": "The deadline for job attempts. If the request handler does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in execution logs. Cloud Scheduler will retry the job according to the RetryConfig. The default and the allowed values depend on the type of target: * For HTTP targets, the default is 3 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine HTTP targets, 0 indicates that the request has the default deadline. The default deadline depends on the scaling type of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. * For Pub/Sub targets, this field is ignored."
        },
        "description": {
          "type": "string",
          "description": "Optionally caller-specified in CreateJob or UpdateJob. A human-readable description for the job. This string must not contain more than 500 characters."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:HttpTarget",
          "description": "HTTP target."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateJob, after which it becomes output only. The job name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the job's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:PubsubTarget",
          "description": "Pub/Sub target."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1:RetryConfig",
          "description": "Settings that determine the retry behavior."
        },
        "schedule": {
          "type": "string",
          "description": "Required, except when used with UpdateJob. Describes the schedule on which the job will be executed. The schedule can be either of the following types: * [Crontab](https://en.wikipedia.org/wiki/Cron#Overview) * English-like [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules) As a general rule, execution `n + 1` of a job will not begin until execution `n` has finished. Cloud Scheduler will never allow two simultaneously outstanding executions. For example, this implies that if the `n+1`th execution is scheduled to run at 16:00 but the `n`th execution takes until 16:15, the `n+1`th execution will not start until `16:15`. A scheduled start time will be delayed if the previous execution has not ended when its scheduled time occurs. If retry_count > 0 and a job attempt fails, the job will be tried a total of retry_count times, with exponential backoff, until the next scheduled start time. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting schedule. The value of this field must be a time zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database). Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT)."
        }
      }
    },
    "google-native:cloudscheduler/v1beta1:Job": {
      "description": "Creates a job.",
      "properties": {
        "appEngineHttpTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:AppEngineHttpTargetResponse",
          "description": "App Engine HTTP target."
        },
        "attemptDeadline": {
          "type": "string",
          "description": "The deadline for job attempts. If the request handler does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in execution logs. Cloud Scheduler will retry the job according to the RetryConfig. The default and the allowed values depend on the type of target: * For HTTP targets, the default is 3 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine HTTP targets, 0 indicates that the request has the default deadline. The default deadline depends on the scaling type of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. * For Pub/Sub targets, this field is ignored."
        },
        "description": {
          "type": "string",
          "description": "Optionally caller-specified in CreateJob or UpdateJob. A human-readable description for the job. This string must not contain more than 500 characters."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:HttpTargetResponse",
          "description": "HTTP target."
        },
        "lastAttemptTime": {
          "type": "string",
          "description": "The time the last job attempt started."
        },
        "legacyAppEngineCron": {
          "type": "boolean",
          "description": "Immutable. This field is used to manage the legacy App Engine Cron jobs using the Cloud Scheduler API. If the field is set to true, the job will be considered a legacy job. Note that App Engine Cron jobs have fewer features than Cloud Scheduler jobs, e.g., are only limited to App Engine targets."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateJob, after which it becomes output only. The job name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the job's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:PubsubTargetResponse",
          "description": "Pub/Sub target."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:RetryConfigResponse",
          "description": "Settings that determine the retry behavior."
        },
        "schedule": {
          "type": "string",
          "description": "Required, except when used with UpdateJob. Describes the schedule on which the job will be executed. The schedule can be either of the following types: * [Crontab](https://en.wikipedia.org/wiki/Cron#Overview) * English-like [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules) As a general rule, execution `n + 1` of a job will not begin until execution `n` has finished. Cloud Scheduler will never allow two simultaneously outstanding executions. For example, this implies that if the `n+1`th execution is scheduled to run at 16:00 but the `n`th execution takes until 16:15, the `n+1`th execution will not start until `16:15`. A scheduled start time will be delayed if the previous execution has not ended when its scheduled time occurs. If retry_count > 0 and a job attempt fails, the job will be tried a total of retry_count times, with exponential backoff, until the next scheduled start time. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The next time the job is scheduled. Note that this may be a retry of a previously failed attempt or the next execution time according to the schedule."
        },
        "state": {
          "type": "string",
          "description": "State of the job."
        },
        "status": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:StatusResponse",
          "description": "The response from the target for the last attempted execution."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting schedule. The value of this field must be a time zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database). Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT)."
        },
        "userUpdateTime": {
          "type": "string",
          "description": "The creation time of the job."
        }
      },
      "type": "object",
      "required": [
        "appEngineHttpTarget",
        "attemptDeadline",
        "description",
        "httpTarget",
        "lastAttemptTime",
        "legacyAppEngineCron",
        "location",
        "name",
        "project",
        "pubsubTarget",
        "retryConfig",
        "schedule",
        "scheduleTime",
        "state",
        "status",
        "timeZone",
        "userUpdateTime"
      ],
      "inputProperties": {
        "appEngineHttpTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:AppEngineHttpTarget",
          "description": "App Engine HTTP target."
        },
        "attemptDeadline": {
          "type": "string",
          "description": "The deadline for job attempts. If the request handler does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in execution logs. Cloud Scheduler will retry the job according to the RetryConfig. The default and the allowed values depend on the type of target: * For HTTP targets, the default is 3 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine HTTP targets, 0 indicates that the request has the default deadline. The default deadline depends on the scaling type of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. * For Pub/Sub targets, this field is ignored."
        },
        "description": {
          "type": "string",
          "description": "Optionally caller-specified in CreateJob or UpdateJob. A human-readable description for the job. This string must not contain more than 500 characters."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:HttpTarget",
          "description": "HTTP target."
        },
        "legacyAppEngineCron": {
          "type": "boolean",
          "description": "Immutable. This field is used to manage the legacy App Engine Cron jobs using the Cloud Scheduler API. If the field is set to true, the job will be considered a legacy job. Note that App Engine Cron jobs have fewer features than Cloud Scheduler jobs, e.g., are only limited to App Engine targets."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateJob, after which it becomes output only. The job name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the job's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubTarget": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:PubsubTarget",
          "description": "Pub/Sub target."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:RetryConfig",
          "description": "Settings that determine the retry behavior."
        },
        "schedule": {
          "type": "string",
          "description": "Required, except when used with UpdateJob. Describes the schedule on which the job will be executed. The schedule can be either of the following types: * [Crontab](https://en.wikipedia.org/wiki/Cron#Overview) * English-like [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules) As a general rule, execution `n + 1` of a job will not begin until execution `n` has finished. Cloud Scheduler will never allow two simultaneously outstanding executions. For example, this implies that if the `n+1`th execution is scheduled to run at 16:00 but the `n`th execution takes until 16:15, the `n+1`th execution will not start until `16:15`. A scheduled start time will be delayed if the previous execution has not ended when its scheduled time occurs. If retry_count > 0 and a job attempt fails, the job will be tried a total of retry_count times, with exponential backoff, until the next scheduled start time. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure."
        },
        "timeZone": {
          "type": "string",
          "description": "Specifies the time zone to be used in interpreting schedule. The value of this field must be a time zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database). Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT)."
        }
      }
    },
    "google-native:cloudsearch/v1:DataSource": {
      "description": "Creates a datasource. **Note:** This API requires an admin account to execute.",
      "properties": {
        "disableModifications": {
          "type": "boolean",
          "description": "If true, sets the datasource to read-only mode. In read-only mode, the Indexing API rejects any requests to index or delete items in this source. Enabling read-only mode does not stop the processing of previously accepted data."
        },
        "disableServing": {
          "type": "boolean",
          "description": "Disable serving any search or assist results."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the datasource The maximum length is 300 characters."
        },
        "indexingServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of service accounts that have indexing access."
        },
        "itemsVisibility": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:GSuitePrincipalResponse"
          },
          "description": "This field restricts visibility to items at the datasource level. Items within the datasource are restricted to the union of users and groups included in this field. Note that, this does not ensure access to a specific item, as users need to have ACL permissions on the contained items. This ensures a high level access on the entire datasource, and that the individual items are not shared outside this visibility."
        },
        "name": {
          "type": "string",
          "description": "The name of the datasource resource. Format: datasources/{source_id}. The name is ignored when creating a datasource."
        },
        "operationIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IDs of the Long Running Operations (LROs) currently running for this schema."
        },
        "returnThumbnailUrls": {
          "type": "boolean",
          "description": "Can a user request to get thumbnail URI for Items indexed in this data source."
        },
        "shortName": {
          "type": "string",
          "description": "A short name or alias for the source. This value will be used to match the 'source' operator. For example, if the short name is *<value>* then queries like *source:<value>* will only return results for this source. The value must be unique across all datasources. The value must only contain alphanumeric characters (a-zA-Z0-9). The value cannot start with 'google' and cannot be one of the following: mail, gmail, docs, drive, groups, sites, calendar, hangouts, gplus, keep, people, teams. Its maximum length is 32 characters."
        }
      },
      "type": "object",
      "required": [
        "disableModifications",
        "disableServing",
        "displayName",
        "indexingServiceAccounts",
        "itemsVisibility",
        "name",
        "operationIds",
        "returnThumbnailUrls",
        "shortName"
      ],
      "inputProperties": {
        "disableModifications": {
          "type": "boolean",
          "description": "If true, sets the datasource to read-only mode. In read-only mode, the Indexing API rejects any requests to index or delete items in this source. Enabling read-only mode does not stop the processing of previously accepted data."
        },
        "disableServing": {
          "type": "boolean",
          "description": "Disable serving any search or assist results."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the datasource The maximum length is 300 characters."
        },
        "indexingServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of service accounts that have indexing access."
        },
        "itemsVisibility": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:GSuitePrincipal"
          },
          "description": "This field restricts visibility to items at the datasource level. Items within the datasource are restricted to the union of users and groups included in this field. Note that, this does not ensure access to a specific item, as users need to have ACL permissions on the contained items. This ensures a high level access on the entire datasource, and that the individual items are not shared outside this visibility."
        },
        "name": {
          "type": "string",
          "description": "The name of the datasource resource. Format: datasources/{source_id}. The name is ignored when creating a datasource."
        },
        "operationIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IDs of the Long Running Operations (LROs) currently running for this schema."
        },
        "returnThumbnailUrls": {
          "type": "boolean",
          "description": "Can a user request to get thumbnail URI for Items indexed in this data source."
        },
        "shortName": {
          "type": "string",
          "description": "A short name or alias for the source. This value will be used to match the 'source' operator. For example, if the short name is *<value>* then queries like *source:<value>* will only return results for this source. The value must be unique across all datasources. The value must only contain alphanumeric characters (a-zA-Z0-9). The value cannot start with 'google' and cannot be one of the following: mail, gmail, docs, drive, groups, sites, calendar, hangouts, gplus, keep, people, teams. Its maximum length is 32 characters."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:cloudsearch/v1:SearchApplication": {
      "description": "Creates a search application. **Note:** This API requires an admin account to execute.",
      "properties": {
        "dataSourceRestrictions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:DataSourceRestrictionResponse"
          },
          "description": "Retrictions applied to the configurations. The maximum number of elements is 10."
        },
        "defaultFacetOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:FacetOptionsResponse"
          },
          "description": "The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above."
        },
        "defaultSortOptions": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SortOptionsResponse",
          "description": "The default options for sorting the search results"
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the Search Application. The maximum length is 300 characters."
        },
        "enableAuditLog": {
          "type": "boolean",
          "description": "Indicates whether audit logging is on/off for requests made for the search application in query APIs."
        },
        "name": {
          "type": "string",
          "description": "The name of the Search Application. Format: searchapplications/{application_id}."
        },
        "operationIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IDs of the Long Running Operations (LROs) currently running for this schema. Output only field."
        },
        "queryInterpretationConfig": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:QueryInterpretationConfigResponse",
          "description": "The default options for query interpretation"
        },
        "returnResultThumbnailUrls": {
          "type": "boolean",
          "description": "With each result we should return the URI for its thumbnail (when applicable)"
        },
        "scoringConfig": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:ScoringConfigResponse",
          "description": "Configuration for ranking results."
        },
        "sourceConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceConfigResponse"
          },
          "description": "Configuration for a sources specified in data_source_restrictions."
        }
      },
      "type": "object",
      "required": [
        "dataSourceRestrictions",
        "defaultFacetOptions",
        "defaultSortOptions",
        "displayName",
        "enableAuditLog",
        "name",
        "operationIds",
        "queryInterpretationConfig",
        "returnResultThumbnailUrls",
        "scoringConfig",
        "sourceConfig"
      ],
      "inputProperties": {
        "dataSourceRestrictions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:DataSourceRestriction"
          },
          "description": "Retrictions applied to the configurations. The maximum number of elements is 10."
        },
        "defaultFacetOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:FacetOptions"
          },
          "description": "The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above."
        },
        "defaultSortOptions": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:SortOptions",
          "description": "The default options for sorting the search results"
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the Search Application. The maximum length is 300 characters."
        },
        "enableAuditLog": {
          "type": "boolean",
          "description": "Indicates whether audit logging is on/off for requests made for the search application in query APIs."
        },
        "name": {
          "type": "string",
          "description": "The name of the Search Application. Format: searchapplications/{application_id}."
        },
        "queryInterpretationConfig": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:QueryInterpretationConfig",
          "description": "The default options for query interpretation"
        },
        "returnResultThumbnailUrls": {
          "type": "boolean",
          "description": "With each result we should return the URI for its thumbnail (when applicable)"
        },
        "scoringConfig": {
          "$ref": "#/types/google-native:cloudsearch%2Fv1:ScoringConfig",
          "description": "Configuration for ranking results."
        },
        "sourceConfig": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceConfig"
          },
          "description": "Configuration for a sources specified in data_source_restrictions."
        }
      }
    },
    "google-native:cloudsupport/v2:Case": {
      "description": "Create a new case and associate it with a parent. It must have the following fields set: `display_name`, `description`, `classification`, and `priority`. If you're just testing the API and don't want to route your case to an agent, set `testCase=true`. EXAMPLES: cURL: ```shell parent=\"projects/some-project\" curl \\ --request POST \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ --header 'Content-Type: application/json' \\ --data '{ \"display_name\": \"Test case created by me.\", \"description\": \"a random test case, feel free to close\", \"classification\": { \"id\": \"100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8\" }, \"time_zone\": \"-07:00\", \"subscriber_email_addresses\": [ \"foo@domain.com\", \"bar@domain.com\" ], \"testCase\": true, \"priority\": \"P3\" }' \\ \"https://cloudsupport.googleapis.com/v2/$parent/cases\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().create( parent=\"projects/some-project\", body={ \"displayName\": \"A Test Case\", \"description\": \"This is a test case.\", \"testCase\": True, \"priority\": \"P2\", \"classification\": { \"id\": \"100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8\" }, }, ) print(request.execute()) ```\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "classification": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2:CaseClassificationResponse",
          "description": "The issue classification applicable to this case."
        },
        "contactEmail": {
          "type": "string",
          "description": "A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user's email address directly from their EUCs."
        },
        "createTime": {
          "type": "string",
          "description": "The time this case was created."
        },
        "creator": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2:ActorResponse",
          "description": "The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support."
        },
        "description": {
          "type": "string",
          "description": "A broad description of the issue."
        },
        "displayName": {
          "type": "string",
          "description": "The short summary of the issue reported in this case."
        },
        "escalated": {
          "type": "boolean",
          "description": "Whether the case is currently escalated."
        },
        "languageCode": {
          "type": "string",
          "description": "The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `\"en\"`, `\"zh-CN\"`, `\"zh-TW\"`, `\"ja\"`, `\"ko\"`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours"
        },
        "name": {
          "type": "string",
          "description": "The resource name for the case."
        },
        "priority": {
          "type": "string",
          "description": "The priority of this case."
        },
        "state": {
          "type": "string",
          "description": "The current status of the support case."
        },
        "subscriberEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses to receive updates on this case."
        },
        "testCase": {
          "type": "boolean",
          "description": "Whether this case was created for internal API testing and should not be acted on by the support team."
        },
        "timeZone": {
          "type": "string",
          "description": "The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this case was last updated."
        },
        "v2Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v2Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "classification",
        "contactEmail",
        "createTime",
        "creator",
        "description",
        "displayName",
        "escalated",
        "languageCode",
        "name",
        "priority",
        "state",
        "subscriberEmailAddresses",
        "testCase",
        "timeZone",
        "updateTime",
        "v2Id",
        "v2Id1"
      ],
      "inputProperties": {
        "classification": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2:CaseClassification",
          "description": "The issue classification applicable to this case."
        },
        "contactEmail": {
          "type": "string",
          "description": "A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user's email address directly from their EUCs."
        },
        "creator": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2:Actor",
          "description": "The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support."
        },
        "description": {
          "type": "string",
          "description": "A broad description of the issue."
        },
        "displayName": {
          "type": "string",
          "description": "The short summary of the issue reported in this case."
        },
        "escalated": {
          "type": "boolean",
          "description": "Whether the case is currently escalated."
        },
        "languageCode": {
          "type": "string",
          "description": "The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `\"en\"`, `\"zh-CN\"`, `\"zh-TW\"`, `\"ja\"`, `\"ko\"`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours"
        },
        "name": {
          "type": "string",
          "description": "The resource name for the case."
        },
        "priority": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2:CasePriority",
          "description": "The priority of this case."
        },
        "subscriberEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses to receive updates on this case."
        },
        "testCase": {
          "type": "boolean",
          "description": "Whether this case was created for internal API testing and should not be acted on by the support team."
        },
        "timeZone": {
          "type": "string",
          "description": "The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API."
        },
        "v2Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v2Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "v2Id",
        "v2Id1"
      ]
    },
    "google-native:cloudsupport/v2beta:Case": {
      "description": "Create a new case and associate it with a parent. It must have the following fields set: `display_name`, `description`, `classification`, and `priority`. If you're just testing the API and don't want to route your case to an agent, set `testCase=true`. EXAMPLES: cURL: ```shell parent=\"projects/some-project\" curl \\ --request POST \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ --header 'Content-Type: application/json' \\ --data '{ \"display_name\": \"Test case created by me.\", \"description\": \"a random test case, feel free to close\", \"classification\": { \"id\": \"100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8\" }, \"time_zone\": \"-07:00\", \"subscriber_email_addresses\": [ \"foo@domain.com\", \"bar@domain.com\" ], \"testCase\": true, \"priority\": \"P3\" }' \\ \"https://cloudsupport.googleapis.com/v2/$parent/cases\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().create( parent=\"projects/some-project\", body={ \"displayName\": \"A Test Case\", \"description\": \"This is a test case.\", \"testCase\": True, \"priority\": \"P2\", \"classification\": { \"id\": \"100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8\" }, }, ) print(request.execute()) ```\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "classification": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2beta:CaseClassificationResponse",
          "description": "The issue classification applicable to this case."
        },
        "contactEmail": {
          "type": "string",
          "description": "A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user's email address directly from their EUCs."
        },
        "createTime": {
          "type": "string",
          "description": "The time this case was created."
        },
        "creator": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2beta:ActorResponse",
          "description": "The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support."
        },
        "description": {
          "type": "string",
          "description": "A broad description of the issue."
        },
        "displayName": {
          "type": "string",
          "description": "The short summary of the issue reported in this case."
        },
        "escalated": {
          "type": "boolean",
          "description": "Whether the case is currently escalated."
        },
        "languageCode": {
          "type": "string",
          "description": "The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `\"en\"`, `\"zh-CN\"`, `\"zh-TW\"`, `\"ja\"`, `\"ko\"`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours"
        },
        "name": {
          "type": "string",
          "description": "The resource name for the case."
        },
        "priority": {
          "type": "string",
          "description": "The priority of this case."
        },
        "severity": {
          "type": "string",
          "description": "REMOVED. The severity of this case. Use priority instead."
        },
        "state": {
          "type": "string",
          "description": "The current status of the support case."
        },
        "subscriberEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses to receive updates on this case."
        },
        "testCase": {
          "type": "boolean",
          "description": "Whether this case was created for internal API testing and should not be acted on by the support team."
        },
        "timeZone": {
          "type": "string",
          "description": "The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this case was last updated."
        },
        "v2betaId1": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v2betumId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "classification",
        "contactEmail",
        "createTime",
        "creator",
        "description",
        "displayName",
        "escalated",
        "languageCode",
        "name",
        "priority",
        "severity",
        "state",
        "subscriberEmailAddresses",
        "testCase",
        "timeZone",
        "updateTime",
        "v2betaId1",
        "v2betumId"
      ],
      "inputProperties": {
        "classification": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2beta:CaseClassification",
          "description": "The issue classification applicable to this case."
        },
        "contactEmail": {
          "type": "string",
          "description": "A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user's email address directly from their EUCs."
        },
        "creator": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2beta:Actor",
          "description": "The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support."
        },
        "description": {
          "type": "string",
          "description": "A broad description of the issue."
        },
        "displayName": {
          "type": "string",
          "description": "The short summary of the issue reported in this case."
        },
        "escalated": {
          "type": "boolean",
          "description": "Whether the case is currently escalated."
        },
        "languageCode": {
          "type": "string",
          "description": "The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `\"en\"`, `\"zh-CN\"`, `\"zh-TW\"`, `\"ja\"`, `\"ko\"`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours"
        },
        "name": {
          "type": "string",
          "description": "The resource name for the case."
        },
        "priority": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2beta:CasePriority",
          "description": "The priority of this case."
        },
        "severity": {
          "$ref": "#/types/google-native:cloudsupport%2Fv2beta:CaseSeverity",
          "description": "REMOVED. The severity of this case. Use priority instead."
        },
        "subscriberEmailAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The email addresses to receive updates on this case."
        },
        "testCase": {
          "type": "boolean",
          "description": "Whether this case was created for internal API testing and should not be acted on by the support team."
        },
        "timeZone": {
          "type": "string",
          "description": "The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API."
        },
        "v2betaId1": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v2betumId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "v2betaId1",
        "v2betumId"
      ]
    },
    "google-native:cloudtasks/v2:Queue": {
      "description": "Creates a queue. Queues created with this method allow tasks to live for a maximum of 31 days. After a task is 31 days old, the task will be deleted regardless of whether it was dispatched or not. WARNING: Using this method may have unintended side effects if you are using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. Read [Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using this method.",
      "properties": {
        "appEngineRoutingOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineRoutingResponse",
          "description": "Overrides for task-level app_engine_routing. These settings apply only to App Engine tasks in this queue. Http tasks are not affected. If set, `app_engine_routing_override` is used for all App Engine tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:HttpTargetResponse",
          "description": "Modifies HTTP target for HTTP tasks."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purgeTime": {
          "type": "string",
          "description": "The last time this queue was purged. All tasks that were created before this time were purged. A queue can be purged using PurgeQueue, the [App Engine Task Queue SDK, or the Cloud Console](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue). Purge time will be truncated to the nearest microsecond. Purge time will be unset if the queue has never been purged."
        },
        "rateLimits": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:RateLimitsResponse",
          "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts. However they control task attempts in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc). The queue's actual dispatch rate is the result of: * Number of tasks in the queue * User-specified throttling: rate_limits, retry_config, and the queue's state. * System throttling due to `429` (Too Many Requests) or `503` (Service Unavailable) responses from the worker, high error rates, or to smooth sudden large traffic spikes."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:RetryConfigResponse",
          "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
        },
        "stackdriverLoggingConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:StackdriverLoggingConfigResponse",
          "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/). If this field is unset, then no logs are written."
        },
        "state": {
          "type": "string",
          "description": "The state of the queue. `state` can only be changed by calling PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https://cloud.google.com/appengine/docs/python/config/queueref). UpdateQueue cannot be used to change `state`."
        }
      },
      "type": "object",
      "required": [
        "appEngineRoutingOverride",
        "httpTarget",
        "location",
        "name",
        "project",
        "purgeTime",
        "rateLimits",
        "retryConfig",
        "stackdriverLoggingConfig",
        "state"
      ],
      "inputProperties": {
        "appEngineRoutingOverride": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineRouting",
          "description": "Overrides for task-level app_engine_routing. These settings apply only to App Engine tasks in this queue. Http tasks are not affected. If set, `app_engine_routing_override` is used for all App Engine tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:HttpTarget",
          "description": "Modifies HTTP target for HTTP tasks."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rateLimits": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:RateLimits",
          "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts. However they control task attempts in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc). The queue's actual dispatch rate is the result of: * Number of tasks in the queue * User-specified throttling: rate_limits, retry_config, and the queue's state. * System throttling due to `429` (Too Many Requests) or `503` (Service Unavailable) responses from the worker, high error rates, or to smooth sudden large traffic spikes."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:RetryConfig",
          "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
        },
        "stackdriverLoggingConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:StackdriverLoggingConfig",
          "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/). If this field is unset, then no logs are written."
        }
      }
    },
    "google-native:cloudtasks/v2:QueueIamBinding": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudtasks/v2:QueueIamMember": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudtasks/v2:QueueIamPolicy": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "queueId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "queueId"
      ]
    },
    "google-native:cloudtasks/v2:Task": {
      "description": "Creates a task and adds it to a queue. Tasks cannot be updated after creation; there is no UpdateTask command. * The maximum task size is 100KB.",
      "properties": {
        "appEngineHttpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineHttpRequestResponse",
          "description": "HTTP request that is sent to the App Engine app handler. An App Engine task is a task that has AppEngineHttpRequest set."
        },
        "createTime": {
          "type": "string",
          "description": "The time that the task was created. `create_time` will be truncated to the nearest second."
        },
        "dispatchCount": {
          "type": "integer",
          "description": "The number of attempts dispatched. This count includes attempts which have been dispatched but haven't received a response."
        },
        "dispatchDeadline": {
          "type": "string",
          "description": "The deadline for requests sent to the worker. If the worker does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry the task according to the RetryConfig. Note that when the request is cancelled, Cloud Tasks will stop listening for the response, but whether the worker stops processing depends on the worker. For example, if the worker is stuck, it may not react to cancelled requests. The default and maximum values depend on the type of request: * For HTTP tasks, the default is 10 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine tasks, 0 indicates that the request has the default deadline. The default deadline depends on the [scaling type](https://cloud.google.com/appengine/docs/standard/go/how-instances-are-managed#instance_scaling) of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. Regardless of the task's `dispatch_deadline`, the app handler will not run for longer than than the service's timeout. We recommend setting the `dispatch_deadline` to at most a few seconds more than the app handler's timeout. For more information see [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-handlers#timeouts). The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `dispatch_deadline` will be truncated to the nearest millisecond. The deadline is an approximate deadline."
        },
        "firstAttempt": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AttemptResponse",
          "description": "The status of the task's first attempt. Only dispatch_time will be set. The other Attempt information is not retained by Cloud Tasks."
        },
        "httpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:HttpRequestResponse",
          "description": "HTTP request that is sent to the worker. An HTTP task is a task that has HttpRequest set."
        },
        "lastAttempt": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AttemptResponse",
          "description": "The status of the task's last attempt."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responseCount": {
          "type": "integer",
          "description": "The number of attempts which have received a response."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time when the task is scheduled to be attempted or retried. `schedule_time` will be truncated to the nearest microsecond."
        },
        "view": {
          "type": "string",
          "description": "The view specifies which subset of the Task has been returned."
        }
      },
      "type": "object",
      "required": [
        "appEngineHttpRequest",
        "createTime",
        "dispatchCount",
        "dispatchDeadline",
        "firstAttempt",
        "httpRequest",
        "lastAttempt",
        "location",
        "name",
        "project",
        "queueId",
        "responseCount",
        "scheduleTime",
        "view"
      ],
      "inputProperties": {
        "appEngineHttpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineHttpRequest",
          "description": "HTTP request that is sent to the App Engine app handler. An App Engine task is a task that has AppEngineHttpRequest set."
        },
        "dispatchDeadline": {
          "type": "string",
          "description": "The deadline for requests sent to the worker. If the worker does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry the task according to the RetryConfig. Note that when the request is cancelled, Cloud Tasks will stop listening for the response, but whether the worker stops processing depends on the worker. For example, if the worker is stuck, it may not react to cancelled requests. The default and maximum values depend on the type of request: * For HTTP tasks, the default is 10 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine tasks, 0 indicates that the request has the default deadline. The default deadline depends on the [scaling type](https://cloud.google.com/appengine/docs/standard/go/how-instances-are-managed#instance_scaling) of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. Regardless of the task's `dispatch_deadline`, the app handler will not run for longer than than the service's timeout. We recommend setting the `dispatch_deadline` to at most a few seconds more than the app handler's timeout. For more information see [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-handlers#timeouts). The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `dispatch_deadline` will be truncated to the nearest millisecond. The deadline is an approximate deadline."
        },
        "httpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:HttpRequest",
          "description": "HTTP request that is sent to the worker. An HTTP task is a task that has HttpRequest set."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responseView": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2:TaskResponseView",
          "description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time when the task is scheduled to be attempted or retried. `schedule_time` will be truncated to the nearest microsecond."
        }
      },
      "requiredInputs": [
        "queueId"
      ]
    },
    "google-native:cloudtasks/v2beta2:Queue": {
      "description": "Creates a queue. Queues created with this method allow tasks to live for a maximum of 31 days. After a task is 31 days old, the task will be deleted regardless of whether it was dispatched or not. WARNING: Using this method may have unintended side effects if you are using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. Read [Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using this method.",
      "properties": {
        "appEngineHttpTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineHttpTargetResponse",
          "description": "App Engine HTTP target. An App Engine queue is a queue that has an AppEngineHttpTarget."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HttpTargetResponse",
          "description": "An http_target is used to override the target values for HTTP tasks."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pullTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:PullTargetResponse",
          "description": "Pull target. A pull queue is a queue that has a PullTarget."
        },
        "purgeTime": {
          "type": "string",
          "description": "The last time this queue was purged. All tasks that were created before this time were purged. A queue can be purged using PurgeQueue, the [App Engine Task Queue SDK, or the Cloud Console](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue). Purge time will be truncated to the nearest microsecond. Purge time will be unset if the queue has never been purged."
        },
        "rateLimits": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:RateLimitsResponse",
          "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts however they control how tasks are attempted in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc)."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:RetryConfigResponse",
          "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
        },
        "state": {
          "type": "string",
          "description": "The state of the queue. `state` can only be changed by called PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https://cloud.google.com/appengine/docs/python/config/queueref). UpdateQueue cannot be used to change `state`."
        },
        "stats": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:QueueStatsResponse",
          "description": "The realtime, informational statistics for a queue. In order to receive the statistics the caller should include this field in the FieldMask."
        },
        "taskTtl": {
          "type": "string",
          "description": "The maximum amount of time that a task will be retained in this queue. Queues created by Cloud Tasks have a default `task_ttl` of 31 days. After a task has lived for `task_ttl`, the task will be deleted regardless of whether it was dispatched or not. The `task_ttl` for queues created via queue.yaml/xml is equal to the maximum duration because there is a [storage quota](https://cloud.google.com/appengine/quotas#Task_Queue) for these queues. To view the maximum valid duration, see the documentation for Duration."
        },
        "tombstoneTtl": {
          "type": "string",
          "description": "The task tombstone time to live (TTL). After a task is deleted or completed, the task's tombstone is retained for the length of time specified by `tombstone_ttl`. The tombstone is used by task de-duplication; another task with the same name can't be created until the tombstone has expired. For more information about task de-duplication, see the documentation for CreateTaskRequest. Queues created by Cloud Tasks have a default `tombstone_ttl` of 1 hour."
        }
      },
      "type": "object",
      "required": [
        "appEngineHttpTarget",
        "httpTarget",
        "location",
        "name",
        "project",
        "pullTarget",
        "purgeTime",
        "rateLimits",
        "retryConfig",
        "state",
        "stats",
        "taskTtl",
        "tombstoneTtl"
      ],
      "inputProperties": {
        "appEngineHttpTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineHttpTarget",
          "description": "App Engine HTTP target. An App Engine queue is a queue that has an AppEngineHttpTarget."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HttpTarget",
          "description": "An http_target is used to override the target values for HTTP tasks."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pullTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:PullTarget",
          "description": "Pull target. A pull queue is a queue that has a PullTarget."
        },
        "rateLimits": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:RateLimits",
          "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts however they control how tasks are attempted in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc)."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:RetryConfig",
          "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
        },
        "taskTtl": {
          "type": "string",
          "description": "The maximum amount of time that a task will be retained in this queue. Queues created by Cloud Tasks have a default `task_ttl` of 31 days. After a task has lived for `task_ttl`, the task will be deleted regardless of whether it was dispatched or not. The `task_ttl` for queues created via queue.yaml/xml is equal to the maximum duration because there is a [storage quota](https://cloud.google.com/appengine/quotas#Task_Queue) for these queues. To view the maximum valid duration, see the documentation for Duration."
        },
        "tombstoneTtl": {
          "type": "string",
          "description": "The task tombstone time to live (TTL). After a task is deleted or completed, the task's tombstone is retained for the length of time specified by `tombstone_ttl`. The tombstone is used by task de-duplication; another task with the same name can't be created until the tombstone has expired. For more information about task de-duplication, see the documentation for CreateTaskRequest. Queues created by Cloud Tasks have a default `tombstone_ttl` of 1 hour."
        }
      }
    },
    "google-native:cloudtasks/v2beta2:QueueIamBinding": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudtasks/v2beta2:QueueIamMember": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudtasks/v2beta2:QueueIamPolicy": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "queueId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "queueId"
      ]
    },
    "google-native:cloudtasks/v2beta2:Task": {
      "description": "Creates a task and adds it to a queue. Tasks cannot be updated after creation; there is no UpdateTask command. * For App Engine queues, the maximum task size is 100KB. * For pull queues, the maximum task size is 1MB.",
      "properties": {
        "appEngineHttpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineHttpRequestResponse",
          "description": "App Engine HTTP request that is sent to the task's target. Can be set only if app_engine_http_target is set on the queue. An App Engine task is a task that has AppEngineHttpRequest set."
        },
        "createTime": {
          "type": "string",
          "description": "The time that the task was created. `create_time` will be truncated to the nearest second."
        },
        "httpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HttpRequestResponse",
          "description": "HTTP request that is sent to the task's target. An HTTP task is a task that has HttpRequest set."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pullMessage": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:PullMessageResponse",
          "description": "LeaseTasks to process the task. Can be set only if pull_target is set on the queue. A pull task is a task that has PullMessage set."
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time when the task is scheduled to be attempted. For App Engine queues, this is when the task will be attempted or retried. For pull queues, this is the time when the task is available to be leased; if a task is currently leased, this is the time when the current lease expires, that is, the time that the task was leased plus the lease_duration. `schedule_time` will be truncated to the nearest microsecond."
        },
        "status": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:TaskStatusResponse",
          "description": "The task status."
        },
        "view": {
          "type": "string",
          "description": "The view specifies which subset of the Task has been returned."
        }
      },
      "type": "object",
      "required": [
        "appEngineHttpRequest",
        "createTime",
        "httpRequest",
        "location",
        "name",
        "project",
        "pullMessage",
        "queueId",
        "scheduleTime",
        "status",
        "view"
      ],
      "inputProperties": {
        "appEngineHttpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineHttpRequest",
          "description": "App Engine HTTP request that is sent to the task's target. Can be set only if app_engine_http_target is set on the queue. An App Engine task is a task that has AppEngineHttpRequest set."
        },
        "httpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HttpRequest",
          "description": "HTTP request that is sent to the task's target. An HTTP task is a task that has HttpRequest set."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pullMessage": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:PullMessage",
          "description": "LeaseTasks to process the task. Can be set only if pull_target is set on the queue. A pull task is a task that has PullMessage set."
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responseView": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:TaskResponseView",
          "description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time when the task is scheduled to be attempted. For App Engine queues, this is when the task will be attempted or retried. For pull queues, this is the time when the task is available to be leased; if a task is currently leased, this is the time when the current lease expires, that is, the time that the task was leased plus the lease_duration. `schedule_time` will be truncated to the nearest microsecond."
        }
      },
      "requiredInputs": [
        "queueId"
      ]
    },
    "google-native:cloudtasks/v2beta3:Queue": {
      "description": "Creates a queue. Queues created with this method allow tasks to live for a maximum of 31 days. After a task is 31 days old, the task will be deleted regardless of whether it was dispatched or not. WARNING: Using this method may have unintended side effects if you are using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. Read [Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using this method.",
      "properties": {
        "appEngineHttpQueue": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineHttpQueueResponse",
          "description": "AppEngineHttpQueue settings apply only to App Engine tasks in this queue. Http tasks are not affected by this proto."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HttpTargetResponse",
          "description": "Modifies HTTP target for HTTP tasks."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purgeTime": {
          "type": "string",
          "description": "The last time this queue was purged. All tasks that were created before this time were purged. A queue can be purged using PurgeQueue, the [App Engine Task Queue SDK, or the Cloud Console](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue). Purge time will be truncated to the nearest microsecond. Purge time will be unset if the queue has never been purged."
        },
        "rateLimits": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:RateLimitsResponse",
          "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts. However they control task attempts in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc). The queue's actual dispatch rate is the result of: * Number of tasks in the queue * User-specified throttling: rate_limits, retry_config, and the queue's state. * System throttling due to `429` (Too Many Requests) or `503` (Service Unavailable) responses from the worker, high error rates, or to smooth sudden large traffic spikes."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:RetryConfigResponse",
          "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
        },
        "stackdriverLoggingConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:StackdriverLoggingConfigResponse",
          "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/). If this field is unset, then no logs are written."
        },
        "state": {
          "type": "string",
          "description": "The state of the queue. `state` can only be changed by called PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https://cloud.google.com/appengine/docs/python/config/queueref). UpdateQueue cannot be used to change `state`."
        },
        "stats": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:QueueStatsResponse",
          "description": "The realtime, informational statistics for a queue. In order to receive the statistics the caller should include this field in the FieldMask."
        },
        "taskTtl": {
          "type": "string",
          "description": "The maximum amount of time that a task will be retained in this queue. After a task has lived for `task_ttl`, the task will be deleted regardless of whether it was dispatched or not. The minimum value is 10 days. The maximum value is 10 years. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). Queues created by Cloud Tasks have a default `task_ttl` of 31 days. . Queues created by queue.yaml/xml have a fixed `task_ttl` of the maximum duration, because there is a [storage quota](https://cloud.google.com/appengine/quotas#Task_Queue) for these queues."
        },
        "tombstoneTtl": {
          "type": "string",
          "description": "The task tombstone time to live (TTL). After a task is deleted or executed, the task's tombstone is retained for the length of time specified by `tombstone_ttl`. The tombstone is used by task de-duplication; another task with the same name can't be created until the tombstone has expired. For more information about task de-duplication, see the documentation for CreateTaskRequest. The minimum value is 1 hour. The maximum value is 9 days. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). Queues created by Cloud Tasks have a default `tombstone_ttl` of 1 hour."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of a queue (push or pull). `Queue.type` is an immutable property of the queue that is set at the queue creation time. When left unspecified, the default value of `PUSH` is selected."
        }
      },
      "type": "object",
      "required": [
        "appEngineHttpQueue",
        "httpTarget",
        "location",
        "name",
        "project",
        "purgeTime",
        "rateLimits",
        "retryConfig",
        "stackdriverLoggingConfig",
        "state",
        "stats",
        "taskTtl",
        "tombstoneTtl",
        "type"
      ],
      "inputProperties": {
        "appEngineHttpQueue": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineHttpQueue",
          "description": "AppEngineHttpQueue settings apply only to App Engine tasks in this queue. Http tasks are not affected by this proto."
        },
        "httpTarget": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HttpTarget",
          "description": "Modifies HTTP target for HTTP tasks."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rateLimits": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:RateLimits",
          "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts. However they control task attempts in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc). The queue's actual dispatch rate is the result of: * Number of tasks in the queue * User-specified throttling: rate_limits, retry_config, and the queue's state. * System throttling due to `429` (Too Many Requests) or `503` (Service Unavailable) responses from the worker, high error rates, or to smooth sudden large traffic spikes."
        },
        "retryConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:RetryConfig",
          "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
        },
        "stackdriverLoggingConfig": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:StackdriverLoggingConfig",
          "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/). If this field is unset, then no logs are written."
        },
        "taskTtl": {
          "type": "string",
          "description": "The maximum amount of time that a task will be retained in this queue. After a task has lived for `task_ttl`, the task will be deleted regardless of whether it was dispatched or not. The minimum value is 10 days. The maximum value is 10 years. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). Queues created by Cloud Tasks have a default `task_ttl` of 31 days. . Queues created by queue.yaml/xml have a fixed `task_ttl` of the maximum duration, because there is a [storage quota](https://cloud.google.com/appengine/quotas#Task_Queue) for these queues."
        },
        "tombstoneTtl": {
          "type": "string",
          "description": "The task tombstone time to live (TTL). After a task is deleted or executed, the task's tombstone is retained for the length of time specified by `tombstone_ttl`. The tombstone is used by task de-duplication; another task with the same name can't be created until the tombstone has expired. For more information about task de-duplication, see the documentation for CreateTaskRequest. The minimum value is 1 hour. The maximum value is 9 days. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). Queues created by Cloud Tasks have a default `tombstone_ttl` of 1 hour."
        },
        "type": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:QueueType",
          "description": "Immutable. The type of a queue (push or pull). `Queue.type` is an immutable property of the queue that is set at the queue creation time. When left unspecified, the default value of `PUSH` is selected."
        }
      }
    },
    "google-native:cloudtasks/v2beta3:QueueIamBinding": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:cloudtasks/v2beta3:QueueIamMember": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:cloudtasks/v2beta3:QueueIamPolicy": {
      "description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "queueId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "queueId"
      ]
    },
    "google-native:cloudtasks/v2beta3:Task": {
      "description": "Creates a task and adds it to a queue. Tasks cannot be updated after creation; there is no UpdateTask command. * The maximum task size is 100KB.",
      "properties": {
        "appEngineHttpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineHttpRequestResponse",
          "description": "HTTP request that is sent to the App Engine app handler. An App Engine task is a task that has AppEngineHttpRequest set."
        },
        "createTime": {
          "type": "string",
          "description": "The time that the task was created. `create_time` will be truncated to the nearest second."
        },
        "dispatchCount": {
          "type": "integer",
          "description": "The number of attempts dispatched. This count includes attempts which have been dispatched but haven't received a response."
        },
        "dispatchDeadline": {
          "type": "string",
          "description": "The deadline for requests sent to the worker. If the worker does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry the task according to the RetryConfig. Note that when the request is cancelled, Cloud Tasks will stop listening for the response, but whether the worker stops processing depends on the worker. For example, if the worker is stuck, it may not react to cancelled requests. The default and maximum values depend on the type of request: * For HTTP tasks, the default is 10 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine tasks, 0 indicates that the request has the default deadline. The default deadline depends on the [scaling type](https://cloud.google.com/appengine/docs/standard/go/how-instances-are-managed#instance_scaling) of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. Regardless of the task's `dispatch_deadline`, the app handler will not run for longer than than the service's timeout. We recommend setting the `dispatch_deadline` to at most a few seconds more than the app handler's timeout. For more information see [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-handlers#timeouts). The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `dispatch_deadline` will be truncated to the nearest millisecond. The deadline is an approximate deadline."
        },
        "firstAttempt": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AttemptResponse",
          "description": "The status of the task's first attempt. Only dispatch_time will be set. The other Attempt information is not retained by Cloud Tasks."
        },
        "httpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HttpRequestResponse",
          "description": "HTTP request that is sent to the task's target. An HTTP task is a task that has HttpRequest set."
        },
        "lastAttempt": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AttemptResponse",
          "description": "The status of the task's last attempt."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pullMessage": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:PullMessageResponse",
          "description": "Pull Message contained in a task in a PULL queue type. This payload type cannot be explicitly set through Cloud Tasks API. Its purpose, currently is to provide backward compatibility with App Engine Task Queue [pull](https://cloud.google.com/appengine/docs/standard/java/taskqueue/pull/) queues to provide a way to inspect contents of pull tasks through the CloudTasks.GetTask."
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responseCount": {
          "type": "integer",
          "description": "The number of attempts which have received a response."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time when the task is scheduled to be attempted. For App Engine queues, this is when the task will be attempted or retried. `schedule_time` will be truncated to the nearest microsecond."
        },
        "view": {
          "type": "string",
          "description": "The view specifies which subset of the Task has been returned."
        }
      },
      "type": "object",
      "required": [
        "appEngineHttpRequest",
        "createTime",
        "dispatchCount",
        "dispatchDeadline",
        "firstAttempt",
        "httpRequest",
        "lastAttempt",
        "location",
        "name",
        "project",
        "pullMessage",
        "queueId",
        "responseCount",
        "scheduleTime",
        "view"
      ],
      "inputProperties": {
        "appEngineHttpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineHttpRequest",
          "description": "HTTP request that is sent to the App Engine app handler. An App Engine task is a task that has AppEngineHttpRequest set."
        },
        "dispatchDeadline": {
          "type": "string",
          "description": "The deadline for requests sent to the worker. If the worker does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry the task according to the RetryConfig. Note that when the request is cancelled, Cloud Tasks will stop listening for the response, but whether the worker stops processing depends on the worker. For example, if the worker is stuck, it may not react to cancelled requests. The default and maximum values depend on the type of request: * For HTTP tasks, the default is 10 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine tasks, 0 indicates that the request has the default deadline. The default deadline depends on the [scaling type](https://cloud.google.com/appengine/docs/standard/go/how-instances-are-managed#instance_scaling) of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. Regardless of the task's `dispatch_deadline`, the app handler will not run for longer than than the service's timeout. We recommend setting the `dispatch_deadline` to at most a few seconds more than the app handler's timeout. For more information see [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-handlers#timeouts). The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `dispatch_deadline` will be truncated to the nearest millisecond. The deadline is an approximate deadline."
        },
        "httpRequest": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HttpRequest",
          "description": "HTTP request that is sent to the task's target. An HTTP task is a task that has HttpRequest set."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pullMessage": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:PullMessage",
          "description": "Pull Message contained in a task in a PULL queue type. This payload type cannot be explicitly set through Cloud Tasks API. Its purpose, currently is to provide backward compatibility with App Engine Task Queue [pull](https://cloud.google.com/appengine/docs/standard/java/taskqueue/pull/) queues to provide a way to inspect contents of pull tasks through the CloudTasks.GetTask."
        },
        "queueId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responseView": {
          "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:TaskResponseView",
          "description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource."
        },
        "scheduleTime": {
          "type": "string",
          "description": "The time when the task is scheduled to be attempted. For App Engine queues, this is when the task will be attempted or retried. `schedule_time` will be truncated to the nearest microsecond."
        }
      },
      "requiredInputs": [
        "queueId"
      ]
    },
    "google-native:cloudtrace/v2beta1:TraceSink": {
      "description": "Creates a sink that exports trace spans to a destination. The export of newly-ingested traces begins immediately, unless the sink's `writer_identity` is not permitted to write to the destination. A sink can export traces only from the resource owning the sink (the 'parent').",
      "properties": {
        "name": {
          "type": "string",
          "description": "The canonical sink resource name, unique within the project. Must be of the form: projects/[PROJECT_NUMBER]/traceSinks/[SINK_ID]. E.g.: `\"projects/12345/traceSinks/my-project-trace-sink\"`. Sink identifiers are limited to 256 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods."
        },
        "outputConfig": {
          "$ref": "#/types/google-native:cloudtrace%2Fv2beta1:OutputConfigResponse",
          "description": "The export destination."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "writerIdentity": {
          "type": "string",
          "description": "A service account name for exporting the data. This field is set by sinks.create and sinks.update. The service account will need to be granted write access to the destination specified in the output configuration, see [Granting access for a resource](/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). To create tables and to write data, this account needs the `dataEditor` role. Read more about roles in the [BigQuery documentation](https://cloud.google.com/bigquery/docs/access-control). E.g.: \"service-00000001@00000002.iam.gserviceaccount.com\""
        }
      },
      "type": "object",
      "required": [
        "name",
        "outputConfig",
        "project",
        "writerIdentity"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "The canonical sink resource name, unique within the project. Must be of the form: projects/[PROJECT_NUMBER]/traceSinks/[SINK_ID]. E.g.: `\"projects/12345/traceSinks/my-project-trace-sink\"`. Sink identifiers are limited to 256 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods."
        },
        "outputConfig": {
          "$ref": "#/types/google-native:cloudtrace%2Fv2beta1:OutputConfig",
          "description": "The export destination."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "outputConfig"
      ]
    },
    "google-native:composer/v1:Environment": {
      "description": "Create a new environment.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:composer%2Fv1:EnvironmentConfigResponse",
          "description": "Configuration parameters for this environment."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this environment was created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the environment, in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\" EnvironmentId must start with a lowercase letter followed by up to 63 lowercase letters, numbers, or hyphens, and cannot end with a hyphen."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "state": {
          "type": "string",
          "description": "The current state of the environment."
        },
        "storageConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:StorageConfigResponse",
          "description": "Optional. Storage configuration for this environment."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which this environment was last modified."
        },
        "uuid": {
          "type": "string",
          "description": "The UUID (Universally Unique IDentifier) associated with this environment. This value is generated when the environment is created."
        }
      },
      "type": "object",
      "required": [
        "config",
        "createTime",
        "labels",
        "location",
        "name",
        "project",
        "satisfiesPzs",
        "state",
        "storageConfig",
        "updateTime",
        "uuid"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:composer%2Fv1:EnvironmentConfig",
          "description": "Configuration parameters for this environment."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the environment, in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\" EnvironmentId must start with a lowercase letter followed by up to 63 lowercase letters, numbers, or hyphens, and cannot end with a hyphen."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:composer%2Fv1:EnvironmentState",
          "description": "The current state of the environment."
        },
        "storageConfig": {
          "$ref": "#/types/google-native:composer%2Fv1:StorageConfig",
          "description": "Optional. Storage configuration for this environment."
        }
      }
    },
    "google-native:composer/v1beta1:Environment": {
      "description": "Create a new environment.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:EnvironmentConfigResponse",
          "description": "Configuration parameters for this environment."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this environment was created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the environment, in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\" EnvironmentId must start with a lowercase letter followed by up to 63 lowercase letters, numbers, or hyphens, and cannot end with a hyphen."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "state": {
          "type": "string",
          "description": "The current state of the environment."
        },
        "storageConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:StorageConfigResponse",
          "description": "Optional. Storage configuration for this environment."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which this environment was last modified."
        },
        "uuid": {
          "type": "string",
          "description": "The UUID (Universally Unique IDentifier) associated with this environment. This value is generated when the environment is created."
        }
      },
      "type": "object",
      "required": [
        "config",
        "createTime",
        "labels",
        "location",
        "name",
        "project",
        "satisfiesPzs",
        "state",
        "storageConfig",
        "updateTime",
        "uuid"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:EnvironmentConfig",
          "description": "Configuration parameters for this environment."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the environment, in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\" EnvironmentId must start with a lowercase letter followed by up to 63 lowercase letters, numbers, or hyphens, and cannot end with a hyphen."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:EnvironmentState",
          "description": "The current state of the environment."
        },
        "storageConfig": {
          "$ref": "#/types/google-native:composer%2Fv1beta1:StorageConfig",
          "description": "Optional. Storage configuration for this environment."
        }
      }
    },
    "google-native:compute/alpha:Address": {
      "description": "Creates an address resource in the specified project by using the data included in the request.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource.",
          "language": {
            "csharp": {
              "name": "AddressValue"
            }
          }
        },
        "addressType": {
          "type": "string",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "type": "string",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#address for addresses."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "status": {
          "type": "string",
          "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs of the resources that are using this address."
        }
      },
      "type": "object",
      "required": [
        "address",
        "addressType",
        "creationTimestamp",
        "description",
        "ipVersion",
        "ipv6EndpointType",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "networkTier",
        "prefixLength",
        "project",
        "purpose",
        "region",
        "selfLink",
        "selfLinkWithId",
        "status",
        "subnetwork",
        "users"
      ],
      "inputProperties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "$ref": "#/types/google-native:compute%2Falpha:AddressAddressType",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Falpha:AddressIpVersion",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "$ref": "#/types/google-native:compute%2Falpha:AddressIpv6EndpointType",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Falpha:AddressNetworkTier",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Falpha:AddressPurpose",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:Autoscaler": {
      "description": "Creates an autoscaler in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyResponse",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#autoscaler for autoscalers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendedSize": {
          "type": "integer",
          "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the instance group resides (for autoscalers living in regional scope)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "scalingScheduleStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information of existing scaling schedules."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "status": {
          "type": "string",
          "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future."
        },
        "statusDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AutoscalerStatusDetailsResponse"
          },
          "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "recommendedSize",
        "region",
        "scalingScheduleStatus",
        "selfLink",
        "selfLinkWithId",
        "status",
        "statusDetails",
        "target",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicy",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:BackendBucket": {
      "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendBucket."
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the Application Load Balancer should add to proxied responses."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend bucket."
        },
        "enableCdn": {
          "type": "boolean",
          "description": "If true, enable Cloud CDN for this BackendBucket."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "cdnPolicy",
        "compressionMode",
        "creationTimestamp",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCdn",
        "kind",
        "name",
        "project",
        "selfLink",
        "selfLinkWithId"
      ],
      "inputProperties": {
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicy",
          "description": "Cloud CDN configuration for this BackendBucket."
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the Application Load Balancer should add to proxied responses."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "enableCdn": {
          "type": "boolean",
          "description": "If true, enable Cloud CDN for this BackendBucket."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/alpha:BackendBucketIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:BackendBucketIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:BackendBucketIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:BackendService": {
      "description": "Creates a BackendService resource in the specified project using the data included in the request. For more information, see Backend services overview .",
      "properties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendResponse"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Falpha:CircuitBreakersResponse"
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Falpha:ConnectionDrainingResponse"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceConnectionTrackingPolicyResponse",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Falpha:ConsistentHashLoadBalancerSettingsResponse",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend service."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceFailoverPolicyResponse",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIAPResponse",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "ipAddressSelectionPolicy": {
          "type": "string",
          "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). "
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#backendService for backend services."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "type": "string",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLogConfigResponse",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Falpha:OutlierDetectionResponse",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this backend service."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Falpha:SecuritySettingsResponse",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "serviceLbPolicy": {
          "type": "string",
          "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Falpha:SubsettingResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceUsedByResponse"
          }
        },
        "vpcNetworkScope": {
          "type": "string",
          "description": "The network scope of the backends that can be added to the backend service. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A backend service with the VPC scope set to GLOBAL_VPC_NETWORK is only allowed to have backends in global VPC networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the backend service is only allowed to have backends in regional networks in the same scope as the backend service. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      },
      "type": "object",
      "required": [
        "affinityCookieTtlSec",
        "backends",
        "cdnPolicy",
        "circuitBreakers",
        "compressionMode",
        "connectionDraining",
        "connectionTrackingPolicy",
        "consistentHash",
        "creationTimestamp",
        "customRequestHeaders",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCDN",
        "failoverPolicy",
        "fingerprint",
        "healthChecks",
        "iap",
        "ipAddressSelectionPolicy",
        "kind",
        "loadBalancingScheme",
        "localityLbPolicies",
        "localityLbPolicy",
        "logConfig",
        "maxStreamDuration",
        "metadatas",
        "name",
        "network",
        "outlierDetection",
        "port",
        "portName",
        "project",
        "protocol",
        "region",
        "securityPolicy",
        "securitySettings",
        "selfLink",
        "selfLinkWithId",
        "serviceBindings",
        "serviceLbPolicy",
        "sessionAffinity",
        "subsetting",
        "timeoutSec",
        "usedBy",
        "vpcNetworkScope"
      ],
      "inputProperties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Backend"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicy",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Falpha:CircuitBreakers"
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Falpha:ConnectionDraining"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceConnectionTrackingPolicy",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Falpha:ConsistentHashLoadBalancerSettings",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceFailoverPolicy",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIAP",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "ipAddressSelectionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIpAddressSelectionPolicy",
          "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). "
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLoadBalancingScheme",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfig"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLbPolicy",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLogConfig",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Falpha:OutlierDetection",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceProtocol",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Falpha:SecuritySettings",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "serviceLbPolicy": {
          "type": "string",
          "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceSessionAffinity",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Falpha:Subsetting"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceUsedBy"
          }
        },
        "vpcNetworkScope": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceVpcNetworkScope",
          "description": "The network scope of the backends that can be added to the backend service. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A backend service with the VPC scope set to GLOBAL_VPC_NETWORK is only allowed to have backends in global VPC networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the backend service is only allowed to have backends in regional networks in the same scope as the backend service. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      }
    },
    "google-native:compute/alpha:BackendServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:BackendServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:BackendServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:Disk": {
      "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk from a source (sourceImage, sourceSnapshot, or sourceDisk) or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
      "properties": {
        "accessMode": {
          "type": "string",
          "description": "The access mode of the disk. - READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. - READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. - READ_ONLY_MANY: The AccessMode means the disk can be attached to multiple instances in RO mode. The AccessMode is only valid for Hyperdisk disk types."
        },
        "architecture": {
          "type": "string",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskAsyncReplicationResponse",
          "description": "Disk asynchronously replicated into this disk."
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of disks this disk is asynchronously replicated to."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "interface": {
          "type": "string",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#disk for disks."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "lastAttachTimestamp": {
          "type": "string",
          "description": "Last attach timestamp in RFC3339 text format."
        },
        "lastDetachTimestamp": {
          "type": "string",
          "description": "Last detach timestamp in RFC3339 text format."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "locked": {
          "type": "boolean",
          "description": "The field indicates if the disk is created from a locked source image. Attachment of a disk created from a locked source image will cause the following operations to become irreversibly prohibited: - R/W or R/O disk attachment to any other instance - Disk detachment. And the disk can only be deleted when the instance is deleted - Creation of images or snapshots - Disk cloning Furthermore, the instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Further attachment of secondary disks. - Detachment of any disks - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true for locked disks - Attach a locked disk with --auto-delete parameter set to false "
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskResourceStatusResponse",
          "description": "Status information for the disk resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceConsistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceConsistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used."
        },
        "sourceImage": {
          "type": "string",
          "description": "Source image to restore onto a disk. This field is optional."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotId": {
          "type": "string",
          "description": "The unique ID of the instant snapshot used to create this disk. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact version of the instant snapshot that was used."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "status": {
          "type": "string",
          "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. "
        },
        "storagePool": {
          "type": "string",
          "description": "The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /storagePools/storagePool - projects/project/zones/zone/storagePools/storagePool - zones/zone/storagePools/storagePool "
        },
        "storageType": {
          "type": "string",
          "description": "[Deprecated] Storage type of the persistent disk.",
          "deprecationMessage": "[Deprecated] Storage type of the persistent disk."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "accessMode",
        "architecture",
        "asyncPrimaryDisk",
        "asyncSecondaryDisks",
        "creationTimestamp",
        "description",
        "diskEncryptionKey",
        "enableConfidentialCompute",
        "eraseWindowsVssSignature",
        "guestOsFeatures",
        "interface",
        "kind",
        "labelFingerprint",
        "labels",
        "lastAttachTimestamp",
        "lastDetachTimestamp",
        "licenseCodes",
        "licenses",
        "locationHint",
        "locked",
        "multiWriter",
        "name",
        "options",
        "params",
        "physicalBlockSizeBytes",
        "project",
        "provisionedIops",
        "provisionedThroughput",
        "region",
        "replicaZones",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "sizeGb",
        "sourceConsistencyGroupPolicy",
        "sourceConsistencyGroupPolicyId",
        "sourceDisk",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceInstantSnapshot",
        "sourceInstantSnapshotId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceStorageObject",
        "status",
        "storagePool",
        "storageType",
        "type",
        "userLicenses",
        "users",
        "zone"
      ],
      "inputProperties": {
        "accessMode": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskAccessMode",
          "description": "The access mode of the disk. - READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. - READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. - READ_ONLY_MANY: The AccessMode means the disk can be attached to multiple instances in RO mode. The AccessMode is only valid for Hyperdisk disk types."
        },
        "architecture": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskArchitecture",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskAsyncReplication",
          "description": "Disk asynchronously replicated into this disk."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskInterface",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "storagePool": {
          "type": "string",
          "description": "The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /storagePools/storagePool - projects/project/zones/zone/storagePools/storagePool - zones/zone/storagePools/storagePool "
        },
        "storageType": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskStorageType",
          "description": "[Deprecated] Storage type of the persistent disk.",
          "deprecationMessage": "[Deprecated] Storage type of the persistent disk."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:DiskIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:DiskIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:DiskIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:ExternalVpnGateway": {
      "description": "Creates a ExternalVpnGateway in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ExternalVpnGatewayInterfaceResponse"
          },
          "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#externalVpnGateway for externalVpnGateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this ExternalVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an ExternalVpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redundancyType": {
          "type": "string",
          "description": "Indicates the user-supplied redundancy type of this external VPN gateway."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "interfaces",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "redundancyType",
        "selfLink"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ExternalVpnGatewayInterface"
          },
          "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redundancyType": {
          "$ref": "#/types/google-native:compute%2Falpha:ExternalVpnGatewayRedundancyType",
          "description": "Indicates the user-supplied redundancy type of this external VPN gateway."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/alpha:Firewall": {
      "description": "Creates a firewall rule in the specified project using the data included in the request.",
      "properties": {
        "allowed": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallAllowedItemResponse"
          },
          "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "denied": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallDeniedItemResponse"
          },
          "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destinationRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported."
        },
        "direction": {
          "type": "string",
          "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging.",
          "deprecationMessage": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#firewall for firewall rules."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:FirewallLogConfigResponse",
          "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default "
        },
        "priority": {
          "type": "integer",
          "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "sourceRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported."
        },
        "sourceServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags."
        },
        "sourceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network."
        },
        "targetTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network."
        }
      },
      "type": "object",
      "required": [
        "allowed",
        "creationTimestamp",
        "denied",
        "description",
        "destinationRanges",
        "direction",
        "disabled",
        "enableLogging",
        "kind",
        "logConfig",
        "name",
        "network",
        "priority",
        "project",
        "selfLink",
        "selfLinkWithId",
        "sourceRanges",
        "sourceServiceAccounts",
        "sourceTags",
        "targetServiceAccounts",
        "targetTags"
      ],
      "inputProperties": {
        "allowed": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallAllowedItem"
          },
          "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection."
        },
        "denied": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallDeniedItem"
          },
          "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destinationRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Falpha:FirewallDirection",
          "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging.",
          "deprecationMessage": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:FirewallLogConfig",
          "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default "
        },
        "priority": {
          "type": "integer",
          "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported."
        },
        "sourceServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags."
        },
        "sourceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network."
        },
        "targetTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network."
        }
      }
    },
    "google-native:compute/alpha:FirewallPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "vpcNetworkScope": {
          "type": "string",
          "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName",
        "vpcNetworkScope"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "vpcNetworkScope": {
          "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyVpcNetworkScope",
          "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      }
    },
    "google-native:compute/alpha:FirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:FirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:FirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:ForwardingRule": {
      "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
      "properties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "allowPscPacketInjection": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "baseForwardingRule": {
          "type": "string",
          "description": "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."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipCollection": {
          "type": "string",
          "description": "Resource reference of a PublicDelegatedPrefix. The PDP must be a sub-PDP in EXTERNAL_IPV6_FORWARDING_RULE_CREATION mode. Use one of the following formats to specify a sub-PDP when creating an IPv6 NetLB forwarding rule using BYOIP: Full resource URL, as in https://www.googleapis.com/compute/v1/projects/project_id/regions/region /publicDelegatedPrefixes/sub-pdp-name Partial URL, as in: - projects/project_id/regions/region/publicDelegatedPrefixes/sub-pdp-name - regions/region/publicDelegatedPrefixes/sub-pdp-name "
        },
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Forwarding Rule."
        },
        "pscConnectionStatus": {
          "type": "string"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleServiceDirectoryRegistrationResponse"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "serviceName": {
          "type": "string",
          "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "type": "object",
      "required": [
        "allPorts",
        "allowGlobalAccess",
        "allowPscGlobalAccess",
        "allowPscPacketInjection",
        "backendService",
        "baseForwardingRule",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipAddress",
        "ipCollection",
        "ipProtocol",
        "ipVersion",
        "isMirroringCollector",
        "kind",
        "labelFingerprint",
        "labels",
        "loadBalancingScheme",
        "metadataFilters",
        "name",
        "network",
        "networkTier",
        "noAutomateDnsZone",
        "portRange",
        "ports",
        "project",
        "pscConnectionId",
        "pscConnectionStatus",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serviceDirectoryRegistrations",
        "serviceLabel",
        "serviceName",
        "sourceIpRanges",
        "subnetwork",
        "target"
      ],
      "inputProperties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "allowPscPacketInjection": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipCollection": {
          "type": "string",
          "description": "Resource reference of a PublicDelegatedPrefix. The PDP must be a sub-PDP in EXTERNAL_IPV6_FORWARDING_RULE_CREATION mode. Use one of the following formats to specify a sub-PDP when creating an IPv6 NetLB forwarding rule using BYOIP: Full resource URL, as in https://www.googleapis.com/compute/v1/projects/project_id/regions/region /publicDelegatedPrefixes/sub-pdp-name Partial URL, as in: - projects/project_id/regions/region/publicDelegatedPrefixes/sub-pdp-name - regions/region/publicDelegatedPrefixes/sub-pdp-name "
        },
        "ipProtocol": {
          "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleIpProtocol",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleIpVersion",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleLoadBalancingScheme",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataFilter"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleNetworkTier",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:ForwardingRulePscConnectionStatus"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleServiceDirectoryRegistration"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:FutureReservation": {
      "description": "Creates a new Future Reservation.",
      "properties": {
        "autoCreatedReservationsDeleteTime": {
          "type": "string",
          "description": "Future timestamp when the FR auto-created reservations will be deleted by GCE. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\">RFC3339 value."
        },
        "autoCreatedReservationsDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by GCE. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
        },
        "autoDeleteAutoCreatedReservations": {
          "type": "boolean",
          "description": "Setting for enabling or disabling automatic deletion for auto-created reservation. If set to true, auto-created reservations will be deleted at Future Reservation's end time (default) or at user's defined timestamp if any of the [auto_created_reservations_delete_time, auto_created_reservations_duration] values is specified. For keeping auto-created reservation indefinitely, this value should be set to false."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this future reservation in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the future reservation."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#futureReservation for future reservations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "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-####."
        },
        "planningStatus": {
          "type": "string",
          "description": "Planning state before being submitted for evaluation"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsResponse",
          "description": "List of Projects/Folders to share with."
        },
        "specificSkuProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationSpecificSKUPropertiesResponse",
          "description": "Future Reservation configuration to indicate instance properties and total count."
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationStatusResponse",
          "description": "[Output only] Status of the Future Reservation"
        },
        "timeWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationTimeWindowResponse",
          "description": "Time window for this Future Reservation."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoCreatedReservationsDeleteTime",
        "autoCreatedReservationsDuration",
        "autoDeleteAutoCreatedReservations",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "namePrefix",
        "planningStatus",
        "project",
        "selfLink",
        "selfLinkWithId",
        "shareSettings",
        "specificSkuProperties",
        "status",
        "timeWindow",
        "zone"
      ],
      "inputProperties": {
        "autoCreatedReservationsDeleteTime": {
          "type": "string",
          "description": "Future timestamp when the FR auto-created reservations will be deleted by GCE. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\">RFC3339 value."
        },
        "autoCreatedReservationsDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by GCE. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
        },
        "autoDeleteAutoCreatedReservations": {
          "type": "boolean",
          "description": "Setting for enabling or disabling automatic deletion for auto-created reservation. If set to true, auto-created reservations will be deleted at Future Reservation's end time (default) or at user's defined timestamp if any of the [auto_created_reservations_delete_time, auto_created_reservations_duration] values is specified. For keeping auto-created reservation indefinitely, this value should be set to false."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the future reservation."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "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-####."
        },
        "planningStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationPlanningStatus",
          "description": "Planning state before being submitted for evaluation"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettings",
          "description": "List of Projects/Folders to share with."
        },
        "specificSkuProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationSpecificSKUProperties",
          "description": "Future Reservation configuration to indicate instance properties and total count."
        },
        "timeWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:FutureReservationTimeWindow",
          "description": "Time window for this Future Reservation."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:GlobalAddress": {
      "description": "Creates an address resource in the specified project by using the data included in the request.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "type": "string",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "type": "string",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#address for addresses."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "status": {
          "type": "string",
          "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs of the resources that are using this address."
        }
      },
      "type": "object",
      "required": [
        "address",
        "addressType",
        "creationTimestamp",
        "description",
        "ipVersion",
        "ipv6EndpointType",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "networkTier",
        "prefixLength",
        "project",
        "purpose",
        "region",
        "selfLink",
        "selfLinkWithId",
        "status",
        "subnetwork",
        "users"
      ],
      "inputProperties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalAddressAddressType",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalAddressIpVersion",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalAddressIpv6EndpointType",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalAddressNetworkTier",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalAddressPurpose",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        }
      }
    },
    "google-native:compute/alpha:GlobalForwardingRule": {
      "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
      "properties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "allowPscPacketInjection": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "baseForwardingRule": {
          "type": "string",
          "description": "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."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipCollection": {
          "type": "string",
          "description": "Resource reference of a PublicDelegatedPrefix. The PDP must be a sub-PDP in EXTERNAL_IPV6_FORWARDING_RULE_CREATION mode. Use one of the following formats to specify a sub-PDP when creating an IPv6 NetLB forwarding rule using BYOIP: Full resource URL, as in https://www.googleapis.com/compute/v1/projects/project_id/regions/region /publicDelegatedPrefixes/sub-pdp-name Partial URL, as in: - projects/project_id/regions/region/publicDelegatedPrefixes/sub-pdp-name - regions/region/publicDelegatedPrefixes/sub-pdp-name "
        },
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Forwarding Rule."
        },
        "pscConnectionStatus": {
          "type": "string"
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleServiceDirectoryRegistrationResponse"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "serviceName": {
          "type": "string",
          "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "type": "object",
      "required": [
        "allPorts",
        "allowGlobalAccess",
        "allowPscGlobalAccess",
        "allowPscPacketInjection",
        "backendService",
        "baseForwardingRule",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipAddress",
        "ipCollection",
        "ipProtocol",
        "ipVersion",
        "isMirroringCollector",
        "kind",
        "labelFingerprint",
        "labels",
        "loadBalancingScheme",
        "metadataFilters",
        "name",
        "network",
        "networkTier",
        "noAutomateDnsZone",
        "portRange",
        "ports",
        "project",
        "pscConnectionId",
        "pscConnectionStatus",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serviceDirectoryRegistrations",
        "serviceLabel",
        "serviceName",
        "sourceIpRanges",
        "subnetwork",
        "target"
      ],
      "inputProperties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "allowPscPacketInjection": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipCollection": {
          "type": "string",
          "description": "Resource reference of a PublicDelegatedPrefix. The PDP must be a sub-PDP in EXTERNAL_IPV6_FORWARDING_RULE_CREATION mode. Use one of the following formats to specify a sub-PDP when creating an IPv6 NetLB forwarding rule using BYOIP: Full resource URL, as in https://www.googleapis.com/compute/v1/projects/project_id/regions/region /publicDelegatedPrefixes/sub-pdp-name Partial URL, as in: - projects/project_id/regions/region/publicDelegatedPrefixes/sub-pdp-name - regions/region/publicDelegatedPrefixes/sub-pdp-name "
        },
        "ipProtocol": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalForwardingRuleIpProtocol",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalForwardingRuleIpVersion",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalForwardingRuleLoadBalancingScheme",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataFilter"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalForwardingRuleNetworkTier",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalForwardingRulePscConnectionStatus"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleServiceDirectoryRegistration"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      }
    },
    "google-native:compute/alpha:GlobalNetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "clientPortMappingMode": {
          "type": "string",
          "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the network endpoint group is located."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeploymentResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "type": {
          "type": "string",
          "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the network endpoint group is located."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "clientPortMappingMode",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "loadBalancer",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serverlessDeployment",
        "size",
        "subnetwork",
        "type",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "clientPortMappingMode": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalNetworkEndpointGroupClientPortMappingMode",
          "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroup",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalNetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeployment",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalNetworkEndpointGroupType",
          "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now."
        }
      }
    },
    "google-native:compute/alpha:GlobalPublicDelegatedPrefix": {
      "description": "Creates a global PublicDelegatedPrefix in the specified project using the parameters that are included in the request.",
      "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."
        },
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes."
        },
        "mode": {
          "type": "string",
          "description": "The public delegated prefix mode for IPv6 only."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL with id for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. "
        }
      },
      "type": "object",
      "required": [
        "allocatablePrefixLength",
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipCidrRange",
        "isLiveMigration",
        "kind",
        "mode",
        "name",
        "parentPrefix",
        "project",
        "publicDelegatedSubPrefixs",
        "region",
        "selfLink",
        "selfLinkWithId",
        "status"
      ],
      "inputProperties": {
        "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."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:GlobalPublicDelegatedPrefixMode",
          "description": "The public delegated prefix mode for IPv6 only."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PublicDelegatedPrefixPublicDelegatedSubPrefix"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/alpha:HealthCheck": {
      "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in 3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:GRPCHealthCheckResponse"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheckResponse"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheckResponse"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheckResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:HealthCheckLogConfigResponse",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "Region where the health check resides. Not applicable to global health checks."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "sourceRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of cloud regions from which health checks are performed. If any regions are specified, then exactly 3 regions should be specified. The region names must be valid names of GCP regions. This can only be set for global health check. If this list is non-empty, then there are restrictions on what other health check fields are supported and what other resources can use this health check: - SSL, HTTP2, and GRPC protocols are not supported. - The TCP request field is not supported. - The proxyHeader field for HTTP, HTTPS, and TCP is not supported. - The checkIntervalSec field must be at least 30. - The health check cannot be used with BackendService nor with managed instance group auto-healing. "
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:SSLHealthCheckResponse"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:TCPHealthCheckResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "udpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:UDPHealthCheckResponse"
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "grpcHealthCheck",
        "healthyThreshold",
        "http2HealthCheck",
        "httpHealthCheck",
        "httpsHealthCheck",
        "kind",
        "logConfig",
        "name",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "sourceRegions",
        "sslHealthCheck",
        "tcpHealthCheck",
        "timeoutSec",
        "type",
        "udpHealthCheck",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:GRPCHealthCheck"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheck"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheck"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheck"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:HealthCheckLogConfig",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of cloud regions from which health checks are performed. If any regions are specified, then exactly 3 regions should be specified. The region names must be valid names of GCP regions. This can only be set for global health check. If this list is non-empty, then there are restrictions on what other health check fields are supported and what other resources can use this health check: - SSL, HTTP2, and GRPC protocols are not supported. - The TCP request field is not supported. - The proxyHeader field for HTTP, HTTPS, and TCP is not supported. - The checkIntervalSec field must be at least 30. - The health check cannot be used with BackendService nor with managed instance group auto-healing. "
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:SSLHealthCheck"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:TCPHealthCheck"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:HealthCheckType",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "udpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:UDPHealthCheck"
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/alpha:HttpHealthCheck": {
      "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#httpHealthCheck for HTTP health checks."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTP health check request. The default value is 80."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "healthyThreshold",
        "host",
        "kind",
        "name",
        "port",
        "project",
        "requestPath",
        "selfLink",
        "selfLinkWithId",
        "timeoutSec",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTP health check request. The default value is 80."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/alpha:HttpsHealthCheck": {
      "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTPS health check request. The default value is 443."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "healthyThreshold",
        "host",
        "kind",
        "name",
        "port",
        "project",
        "requestPath",
        "selfLink",
        "selfLinkWithId",
        "timeoutSec",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTPS health check request. The default value is 443."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/alpha:Image": {
      "description": "Creates an image in the specified project using the data included in the request.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the image. Valid values are ARM64 or X86_64."
        },
        "archiveSizeBytes": {
          "type": "string",
          "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes)."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deprecated": {
          "$ref": "#/types/google-native:compute%2Falpha:DeprecationStatusResponse",
          "description": "The deprecation status associated with this image."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the image when restored onto a persistent disk (in GB)."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this image is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "family": {
          "type": "string",
          "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
        },
        "forceCreate": {
          "type": "boolean",
          "description": "Force image creation if true."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter."
        },
        "imageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#image for images."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an image."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this image. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this image."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any applicable license URI."
        },
        "locked": {
          "type": "boolean",
          "description": "A flag for marketplace VM disk created from the image, which is designed for marketplace VM disk to prevent the proprietary data on the disk from being accessed unwantedly. The flag will be inherited by the disk created from the image. The disk with locked flag set to true will be prohibited from performing the operations below: - R/W or R/O disk attach - Disk detach, if disk is created via create-on-create - Create images - Create snapshots - Create disk clone (create disk from the current disk) The image with the locked field set to true will be prohibited from performing the operations below: - Create images from the current image - Update the locked field for the current image The instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Secondary disk attach - Create instant snapshot - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true "
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawDisk": {
          "$ref": "#/types/google-native:compute%2Falpha:ImageRawDiskResponse",
          "description": "The parameters of the raw disk image."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rolloutOverride": {
          "$ref": "#/types/google-native:compute%2Falpha:RolloutPolicyResponse",
          "description": "A rollout policy to apply to this image. When specified, the rollout policy overrides per-zone references to the image via the associated image family. The rollout policy restricts the zones where this image is accessible when using a zonal image family reference. When the rollout policy does not include the user specified zone, or if the zone is rolled out, this image is accessible. The rollout policy for this image is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Falpha:InitialStateConfigResponse",
          "description": "Set the secure boot keys of shielded instance."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name."
        },
        "sourceImage": {
          "type": "string",
          "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name."
        },
        "sourceType": {
          "type": "string",
          "description": "The type of the image used to create this disk. The default and only valid value is RAW."
        },
        "status": {
          "type": "string",
          "description": "The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the image (regional or multi-regional)."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "archiveSizeBytes",
        "creationTimestamp",
        "deprecated",
        "description",
        "diskSizeGb",
        "enableConfidentialCompute",
        "family",
        "guestOsFeatures",
        "imageEncryptionKey",
        "kind",
        "labelFingerprint",
        "labels",
        "licenseCodes",
        "licenses",
        "locked",
        "name",
        "project",
        "rawDisk",
        "rolloutOverride",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "shieldedInstanceInitialState",
        "sourceDisk",
        "sourceDiskEncryptionKey",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceType",
        "status",
        "storageLocations",
        "userLicenses"
      ],
      "inputProperties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Falpha:ImageArchitecture",
          "description": "The architecture of the image. Valid values are ARM64 or X86_64."
        },
        "archiveSizeBytes": {
          "type": "string",
          "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes)."
        },
        "deprecated": {
          "$ref": "#/types/google-native:compute%2Falpha:DeprecationStatus",
          "description": "The deprecation status associated with this image."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the image when restored onto a persistent disk (in GB)."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this image is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "family": {
          "type": "string",
          "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
        },
        "forceCreate": {
          "type": "boolean",
          "description": "Force image creation if true."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter."
        },
        "imageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this image. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this image."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any applicable license URI."
        },
        "locked": {
          "type": "boolean",
          "description": "A flag for marketplace VM disk created from the image, which is designed for marketplace VM disk to prevent the proprietary data on the disk from being accessed unwantedly. The flag will be inherited by the disk created from the image. The disk with locked flag set to true will be prohibited from performing the operations below: - R/W or R/O disk attach - Disk detach, if disk is created via create-on-create - Create images - Create snapshots - Create disk clone (create disk from the current disk) The image with the locked field set to true will be prohibited from performing the operations below: - Create images from the current image - Update the locked field for the current image The instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Secondary disk attach - Create instant snapshot - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true "
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawDisk": {
          "$ref": "#/types/google-native:compute%2Falpha:ImageRawDisk",
          "description": "The parameters of the raw disk image."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rolloutOverride": {
          "$ref": "#/types/google-native:compute%2Falpha:RolloutPolicy",
          "description": "A rollout policy to apply to this image. When specified, the rollout policy overrides per-zone references to the image via the associated image family. The rollout policy restricts the zones where this image is accessible when using a zonal image family reference. When the rollout policy does not include the user specified zone, or if the zone is rolled out, this image is accessible. The rollout policy for this image is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Falpha:InitialStateConfig",
          "description": "Set the secure boot keys of shielded instance."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceImage": {
          "type": "string",
          "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceType": {
          "$ref": "#/types/google-native:compute%2Falpha:ImageSourceType",
          "description": "The type of the image used to create this disk. The default and only valid value is RAW."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the image (regional or multi-regional)."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        }
      }
    },
    "google-native:compute/alpha:ImageIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:ImageIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:ImageIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:Instance": {
      "description": "Creates an instance resource in the specified project using the data included in the request.",
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Falpha:AdvancedMachineFeaturesResponse",
          "description": "Controls for advanced machine-related behavior features."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding ."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ConfidentialInstanceConfigResponse"
        },
        "cpuPlatform": {
          "type": "string",
          "description": "The CPU platform used by this instance."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the resource should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskResponse"
          },
          "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Falpha:DisplayDeviceResponse",
          "description": "Enables display device for the instance."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disks restored from source snapshots or source machine image should erase Windows specific VSS signature."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the instance's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update the instance. You must always provide an up-to-date fingerprint hash in order to update the instance. To see the latest fingerprint, make get() request to the instance."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfigResponse"
          },
          "description": "A list of the type and count of accelerator cards attached to the instance."
        },
        "hostname": {
          "type": "string",
          "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS."
        },
        "instanceEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#instance for instances."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for this request, which is essentially a hash of the label's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method."
        },
        "lastStartTimestamp": {
          "type": "string",
          "description": "Last start timestamp in RFC3339 text format."
        },
        "lastStopTimestamp": {
          "type": "string",
          "description": "Last stop timestamp in RFC3339 text format."
        },
        "lastSuspendedTimestamp": {
          "type": "string",
          "description": "Last suspended timestamp in RFC3339 text format."
        },
        "machineType": {
          "type": "string",
          "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Falpha:MetadataResponse",
          "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceResponse"
          },
          "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkPerformanceConfigResponse"
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "partnerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Partner Metadata assigned to the instance. A map from a subdomain (namespace) to entries map."
        },
        "postKeyRevocationActionType": {
          "type": "string",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "preservedStateSizeGb": {
          "type": "string",
          "description": "Total amount of preserved state for SUSPENDED instances. Read-only in the api."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Falpha:ReservationAffinityResponse",
          "description": "Specifies the reservations that this instance can consume from."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this instance."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourceStatusResponse",
          "description": "Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Falpha:SchedulingResponse",
          "description": "Sets the scheduling options for this instance."
        },
        "secureTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Input Only] Secure tags to apply to this instance. These can be later modified by the update method. Maximum number of secure tags allowed is 50."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAccountResponse"
          },
          "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information."
        },
        "serviceIntegrationSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Mapping of user-defined keys to specifications for service integrations. Currently only a single key-value pair is supported."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedInstanceConfigResponse"
        },
        "shieldedInstanceIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedInstanceIntegrityPolicyResponse"
        },
        "shieldedVmConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedVmConfigResponse",
          "description": "Deprecating, please use shielded_instance_config."
        },
        "shieldedVmIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedVmIntegrityPolicyResponse",
          "description": "Deprecating, please use shielded_instance_integrity_policy."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies instance template to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        },
        "sourceMachineImage": {
          "type": "string",
          "description": "Specifies the machine image to use to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to a machine image: - https://www.googleapis.com/compute/v1/projects/project/global/global /machineImages/machineImage - projects/project/global/global/machineImages/machineImage - global/machineImages/machineImage "
        },
        "sourceMachineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Source machine image encryption key when creating an instance from a machine image."
        },
        "startRestricted": {
          "type": "boolean",
          "description": "Whether a VM has been restricted for start because Compute Engine has detected suspicious activity."
        },
        "status": {
          "type": "string",
          "description": "The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING, and TERMINATED. For more information about the status of the instance, see Instance life cycle."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Falpha:TagsResponse",
          "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
        },
        "upcomingMaintenance": {
          "$ref": "#/types/google-native:compute%2Falpha:UpcomingMaintenanceResponse",
          "description": "Specifies upcoming maintenance for the instance."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "advancedMachineFeatures",
        "canIpForward",
        "confidentialInstanceConfig",
        "cpuPlatform",
        "creationTimestamp",
        "deletionProtection",
        "description",
        "disks",
        "displayDevice",
        "eraseWindowsVssSignature",
        "fingerprint",
        "guestAccelerators",
        "hostname",
        "instanceEncryptionKey",
        "keyRevocationActionType",
        "kind",
        "labelFingerprint",
        "labels",
        "lastStartTimestamp",
        "lastStopTimestamp",
        "lastSuspendedTimestamp",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "name",
        "networkInterfaces",
        "networkPerformanceConfig",
        "params",
        "partnerMetadata",
        "postKeyRevocationActionType",
        "preservedStateSizeGb",
        "privateIpv6GoogleAccess",
        "project",
        "reservationAffinity",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "scheduling",
        "secureTags",
        "selfLink",
        "selfLinkWithId",
        "serviceAccounts",
        "serviceIntegrationSpecs",
        "shieldedInstanceConfig",
        "shieldedInstanceIntegrityPolicy",
        "shieldedVmConfig",
        "shieldedVmIntegrityPolicy",
        "sourceMachineImage",
        "sourceMachineImageEncryptionKey",
        "startRestricted",
        "status",
        "statusMessage",
        "tags",
        "upcomingMaintenance",
        "zone"
      ],
      "inputProperties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Falpha:AdvancedMachineFeatures",
          "description": "Controls for advanced machine-related behavior features."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding ."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ConfidentialInstanceConfig"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the resource should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AttachedDisk"
          },
          "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Falpha:DisplayDevice",
          "description": "Enables display device for the instance."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disks restored from source snapshots or source machine image should erase Windows specific VSS signature."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfig"
          },
          "description": "A list of the type and count of accelerator cards attached to the instance."
        },
        "hostname": {
          "type": "string",
          "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS."
        },
        "instanceEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
        },
        "keyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceKeyRevocationActionType",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method."
        },
        "machineType": {
          "type": "string",
          "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Falpha:Metadata",
          "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkInterface"
          },
          "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkPerformanceConfig"
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "partnerMetadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Partner Metadata assigned to the instance. A map from a subdomain (namespace) to entries map."
        },
        "postKeyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePostKeyRevocationActionType",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "preservedStateSizeGb": {
          "type": "string",
          "description": "Total amount of preserved state for SUSPENDED instances. Read-only in the api."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePrivateIpv6GoogleAccess",
          "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Falpha:ReservationAffinity",
          "description": "Specifies the reservations that this instance can consume from."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this instance."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Falpha:Scheduling",
          "description": "Sets the scheduling options for this instance."
        },
        "secureTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Input Only] Secure tags to apply to this instance. These can be later modified by the update method. Maximum number of secure tags allowed is 50."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAccount"
          },
          "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information."
        },
        "serviceIntegrationSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Mapping of user-defined keys to specifications for service integrations. Currently only a single key-value pair is supported."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedInstanceConfig"
        },
        "shieldedInstanceIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedInstanceIntegrityPolicy"
        },
        "shieldedVmConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedVmConfig",
          "description": "Deprecating, please use shielded_instance_config."
        },
        "shieldedVmIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ShieldedVmIntegrityPolicy",
          "description": "Deprecating, please use shielded_instance_integrity_policy."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies instance template to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        },
        "sourceMachineImage": {
          "type": "string",
          "description": "Source machine image"
        },
        "sourceMachineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Source machine image encryption key when creating an instance from a machine image."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Falpha:Tags",
          "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:InstanceGroup": {
      "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance group in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroup for instance groups."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NamedPortResponse"
          },
          "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. "
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the instance group is located (for regional resources)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance group. The server generates this URL."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "size": {
          "type": "integer",
          "description": "The total number of instances in the instance group."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "namedPorts",
        "network",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NamedPort"
          },
          "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:InstanceGroupManager": {
      "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, instances in the group are created using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method. A managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
      "properties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAllInstancesConfigResponse",
          "description": "Specifies configuration that overrides the instance template configuration for the group."
        },
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicyResponse"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this managed instance group in RFC3339 text format."
        },
        "currentActions": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerActionsSummaryResponse",
          "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicyResponse",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "failoverAction": {
          "type": "string",
          "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceFlexibilityPolicyResponse",
          "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
        },
        "instanceGroup": {
          "type": "string",
          "description": "The URL of the Instance Group resource."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicyResponse",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups."
        },
        "listManagedInstancesResults": {
          "type": "string",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NamedPortResponse"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the managed instance group resides (for regional resources)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this managed instance group. The server defines this URL."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
        },
        "standbyPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStandbyPolicyResponse",
          "description": "Standby policy for stopped and suspended instances."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:StatefulPolicyResponse",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStatusResponse",
          "description": "The status of this managed instance group."
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "targetSizeUnit": {
          "type": "string",
          "description": "The unit of measure for the target size."
        },
        "targetStoppedSize": {
          "type": "integer",
          "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. "
        },
        "targetSuspendedSize": {
          "type": "integer",
          "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. "
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyResponse",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerVersionResponse"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "allInstancesConfig",
        "autoHealingPolicies",
        "baseInstanceName",
        "creationTimestamp",
        "currentActions",
        "description",
        "distributionPolicy",
        "failoverAction",
        "fingerprint",
        "instanceFlexibilityPolicy",
        "instanceGroup",
        "instanceLifecyclePolicy",
        "instanceTemplate",
        "kind",
        "listManagedInstancesResults",
        "name",
        "namedPorts",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serviceAccount",
        "standbyPolicy",
        "statefulPolicy",
        "status",
        "targetPools",
        "targetSize",
        "targetSizeUnit",
        "targetStoppedSize",
        "targetSuspendedSize",
        "updatePolicy",
        "versions",
        "zone"
      ],
      "inputProperties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAllInstancesConfig",
          "description": "Specifies configuration that overrides the instance template configuration for the group."
        },
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicy"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicy",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "failoverAction": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerFailoverAction",
          "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceFlexibilityPolicy",
          "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicy",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "listManagedInstancesResults": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerListManagedInstancesResults",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NamedPort"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
        },
        "standbyPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStandbyPolicy",
          "description": "Standby policy for stopped and suspended instances."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:StatefulPolicy",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "targetSizeUnit": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerTargetSizeUnit",
          "description": "The unit of measure for the target size."
        },
        "targetStoppedSize": {
          "type": "integer",
          "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. "
        },
        "targetSuspendedSize": {
          "type": "integer",
          "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. "
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicy",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerVersion"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:InstanceGroupManagerResizeRequest": {
      "description": "Creates a new resize request that starts provisioning VMs immediately or queues VM creation.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The count of instances to create as part of this resize request."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this resize request in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "instanceGroupManager": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroupManagerResizeRequest for resize requests."
        },
        "name": {
          "type": "string",
          "description": "The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuingPolicyResponse",
          "description": "When set, defines queing parameters for the requested deferred capacity. When unset, the request starts provisioning immediately, or fails if immediate provisioning is not possible."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedRunDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted."
        },
        "resizeBy": {
          "type": "integer",
          "description": "The number of instances to be created by this resize request. The group's target size will be increased by this number."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this resize request. The server defines this URL."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "state": {
          "type": "string",
          "description": "[Output only] Current state of the request."
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerResizeRequestStatusResponse",
          "description": "[Output only] Status of the request."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "count",
        "creationTimestamp",
        "description",
        "instanceGroupManager",
        "kind",
        "name",
        "project",
        "queuingPolicy",
        "requestedRunDuration",
        "resizeBy",
        "selfLink",
        "selfLinkWithId",
        "state",
        "status",
        "zone"
      ],
      "inputProperties": {
        "count": {
          "type": "integer",
          "description": "The count of instances to create as part of this resize request."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "instanceGroupManager": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuingPolicy",
          "description": "When set, defines queing parameters for the requested deferred capacity. When unset, the request starts provisioning immediately, or fails if immediate provisioning is not possible."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedRunDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted."
        },
        "resizeBy": {
          "type": "integer",
          "description": "The number of instances to be created by this resize request. The group's target size will be increased by this number."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instanceGroupManager"
      ]
    },
    "google-native:compute/alpha:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:InstanceTemplate": {
      "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance template in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceTemplate for instance templates."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesResponse",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the instance template resides. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance template. The server defines this URL."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Falpha:SourceInstanceParamsResponse",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "properties",
        "region",
        "selfLink",
        "selfLinkWithId",
        "sourceInstance",
        "sourceInstanceParams"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceProperties",
          "description": "The instance properties for this instance template."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Falpha:SourceInstanceParams",
          "description": "The source instance params to use to create this instance template."
        }
      }
    },
    "google-native:compute/alpha:InstanceTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InstanceTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InstanceTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:InstantSnapshot": {
      "description": "Creates an instant snapshot in the specified zone.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the instant snapshot. Valid values are ARM64 or X86_64."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the source disk, specified in GB."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Whether to attempt an application consistent instant snapshot by informing the OS to prepare for the snapshot process."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#instantSnapshot for InstantSnapshot resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this InstantSnapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a InstantSnapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:InstantSnapshotResourceStatusResponse",
          "description": "Status information for the instant snapshot resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this InstantSnapshot. This value may be used to determine whether the InstantSnapshot was taken from the current or a previous instance of a given disk name."
        },
        "status": {
          "type": "string",
          "description": "The status of the instantSnapshot. This can be CREATING, DELETING, FAILED, or READY."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "creationTimestamp",
        "description",
        "diskSizeGb",
        "guestFlush",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "region",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "sourceDisk",
        "sourceDiskId",
        "status",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Whether to attempt an application consistent instant snapshot by informing the OS to prepare for the snapshot process."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:InstantSnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InstantSnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InstantSnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:Interconnect": {
      "description": "Creates an Interconnect in the specified project using the data included in the request.",
      "properties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
        },
        "availableFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] List of features available for this Interconnect connection, which can take one of the following values: - MACSEC If present then the Interconnect connection is provisioned on MACsec capable hardware ports. If not present then the Interconnect connection is provisioned on non-MACsec capable ports and MACsec isn't supported and enabling MACsec fails."
        },
        "circuitInfos": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectCircuitInfoResponse"
          },
          "description": "A list of CircuitInfo objects, that describe the individual circuits in this LAG."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customerName": {
          "type": "string",
          "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expectedOutages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectOutageNotificationResponse"
          },
          "description": "A list of outages expected for this Interconnect."
        },
        "googleIpAddress": {
          "type": "string",
          "description": "IP address configured on the Google side of the Interconnect link. This can be used only for ping tests."
        },
        "googleReferenceId": {
          "type": "string",
          "description": "Google reference ID to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
        },
        "interconnectAttachments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the URLs of all InterconnectAttachments configured to use this Interconnect."
        },
        "interconnectType": {
          "type": "string",
          "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#interconnect for interconnects."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Interconnect."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "linkType": {
          "type": "string",
          "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle."
        },
        "location": {
          "type": "string",
          "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
        },
        "macsec": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectMacsecResponse",
          "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
        },
        "macsecEnabled": {
          "type": "boolean",
          "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nocContactEmail": {
          "type": "string",
          "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation."
        },
        "operationalStatus": {
          "type": "string",
          "description": "The current status of this Interconnect's functionality, which can take one of the following values: - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. "
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedLinkCount": {
          "type": "integer",
          "description": "Number of links actually provisioned in this interconnect."
        },
        "remoteLocation": {
          "type": "string",
          "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH."
        },
        "requestedLinkCount": {
          "type": "integer",
          "description": "Target number of physical links in the link bundle, as requested by the customer."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "state": {
          "type": "string",
          "description": "The current state of Interconnect functionality, which can take one of the following values: - ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. - UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. - UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. "
        }
      },
      "type": "object",
      "required": [
        "adminEnabled",
        "availableFeatures",
        "circuitInfos",
        "creationTimestamp",
        "customerName",
        "description",
        "expectedOutages",
        "googleIpAddress",
        "googleReferenceId",
        "interconnectAttachments",
        "interconnectType",
        "kind",
        "labelFingerprint",
        "labels",
        "linkType",
        "location",
        "macsec",
        "macsecEnabled",
        "name",
        "nocContactEmail",
        "operationalStatus",
        "peerIpAddress",
        "project",
        "provisionedLinkCount",
        "remoteLocation",
        "requestedFeatures",
        "requestedLinkCount",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "state"
      ],
      "inputProperties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
        },
        "customerName": {
          "type": "string",
          "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interconnectType": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectInterconnectType",
          "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "linkType": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectLinkType",
          "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle."
        },
        "location": {
          "type": "string",
          "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
        },
        "macsec": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectMacsec",
          "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
        },
        "macsecEnabled": {
          "type": "boolean",
          "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nocContactEmail": {
          "type": "string",
          "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteLocation": {
          "type": "string",
          "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectRequestedFeaturesItem"
          },
          "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH."
        },
        "requestedLinkCount": {
          "type": "integer",
          "description": "Target number of physical links in the link bundle, as requested by the customer."
        }
      }
    },
    "google-native:compute/alpha:InterconnectAttachment": {
      "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
      "properties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER."
        },
        "bandwidth": {
          "type": "string",
          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s "
        },
        "candidateIpv6Subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is not available."
        },
        "candidateSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space."
        },
        "cloudRouterIpAddress": {
          "type": "string",
          "description": "IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
        },
        "cloudRouterIpv6Address": {
          "type": "string",
          "description": "IPv6 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
        },
        "cloudRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "configurationConstraints": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentConfigurationConstraintsResponse",
          "description": "Constraints for this attachment, if any. The attachment does not work if these constraints are not met."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customerRouterIpAddress": {
          "type": "string",
          "description": "IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
        },
        "customerRouterIpv6Address": {
          "type": "string",
          "description": "IPv6 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
        },
        "customerRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "dataplaneVersion": {
          "type": "integer",
          "description": "Dataplane version for this InterconnectAttachment. This field is only present for Dataplane version 2 and higher. Absence of this field in the API output indicates that the Dataplane is version 1."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "edgeAvailabilityDomain": {
          "type": "string",
          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY."
        },
        "encryption": {
          "type": "string",
          "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. "
        },
        "googleReferenceId": {
          "type": "string",
          "description": "Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
          "deprecationMessage": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used."
        },
        "interconnect": {
          "type": "string",
          "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
        },
        "ipsecInternalAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#interconnectAttachment for interconnect attachments."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "operationalStatus": {
          "type": "string",
          "description": "The current status of whether or not this interconnect attachment is functional, which can take one of the following values: - OS_ACTIVE: The attachment has been turned up and is ready to use. - OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. "
        },
        "pairingKey": {
          "type": "string",
          "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\""
        },
        "partnerAsn": {
          "type": "string",
          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "partnerMetadata": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentPartnerMetadataResponse",
          "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "privateInterconnectInfo": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentPrivateInfoResponse",
          "description": "Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteService": {
          "type": "string",
          "description": "If the attachment is on a Cross-Cloud Interconnect connection, this field contains the interconnect's remote location service provider. Example values: \"Amazon Web Services\" \"Microsoft Azure\". The field is set only for attachments on Cross-Cloud Interconnect connections. Its value is copied from the InterconnectRemoteLocation remoteService field."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations."
        },
        "state": {
          "type": "string",
          "description": "The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: - ACTIVE: The attachment has been turned up and is ready to use. - UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. - PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. - DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted. "
        },
        "subnetLength": {
          "type": "integer",
          "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. "
        },
        "type": {
          "type": "string",
          "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. "
        },
        "vlanTag8021q": {
          "type": "integer",
          "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time."
        }
      },
      "type": "object",
      "required": [
        "adminEnabled",
        "bandwidth",
        "candidateIpv6Subnets",
        "candidateSubnets",
        "cloudRouterIpAddress",
        "cloudRouterIpv6Address",
        "cloudRouterIpv6InterfaceId",
        "configurationConstraints",
        "creationTimestamp",
        "customerRouterIpAddress",
        "customerRouterIpv6Address",
        "customerRouterIpv6InterfaceId",
        "dataplaneVersion",
        "description",
        "edgeAvailabilityDomain",
        "encryption",
        "googleReferenceId",
        "interconnect",
        "ipsecInternalAddresses",
        "kind",
        "labelFingerprint",
        "labels",
        "mtu",
        "name",
        "operationalStatus",
        "pairingKey",
        "partnerAsn",
        "partnerMetadata",
        "privateInterconnectInfo",
        "project",
        "region",
        "remoteService",
        "router",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "stackType",
        "state",
        "subnetLength",
        "type",
        "vlanTag8021q"
      ],
      "inputProperties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER."
        },
        "bandwidth": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentBandwidth",
          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s "
        },
        "candidateIpv6Subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is not available."
        },
        "candidateSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space."
        },
        "cloudRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "customerRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "edgeAvailabilityDomain": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentEdgeAvailabilityDomain",
          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY."
        },
        "encryption": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentEncryption",
          "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. "
        },
        "interconnect": {
          "type": "string",
          "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
        },
        "ipsecInternalAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pairingKey": {
          "type": "string",
          "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\""
        },
        "partnerAsn": {
          "type": "string",
          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "partnerMetadata": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentPartnerMetadata",
          "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentStackType",
          "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations."
        },
        "subnetLength": {
          "type": "integer",
          "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. "
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentType",
          "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. "
        },
        "vlanTag8021q": {
          "type": "integer",
          "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InterconnectAttachmentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:InterconnectIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InterconnectIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:InterconnectIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:License": {
      "description": "Create a License resource in the specified project. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "chargesUseFee": {
          "type": "boolean",
          "description": "Deprecated. This field no longer reflects whether a license charges a usage fee.",
          "deprecationMessage": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#license for licenses."
        },
        "licenseCode": {
          "type": "string",
          "description": "The unique code used to attach this license to images, snapshots, and disks."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceRequirements": {
          "$ref": "#/types/google-native:compute%2Falpha:LicenseResourceRequirementsResponse"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "transferable": {
          "type": "boolean",
          "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk."
        }
      },
      "type": "object",
      "required": [
        "chargesUseFee",
        "creationTimestamp",
        "description",
        "kind",
        "licenseCode",
        "name",
        "project",
        "resourceRequirements",
        "selfLink",
        "selfLinkWithId",
        "transferable"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceRequirements": {
          "$ref": "#/types/google-native:compute%2Falpha:LicenseResourceRequirements"
        },
        "transferable": {
          "type": "boolean",
          "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk."
        }
      }
    },
    "google-native:compute/alpha:LicenseCodeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:LicenseCodeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:LicenseCodeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. \nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:LicenseIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:LicenseIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:LicenseIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. \nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:MachineImage": {
      "description": "Creates a machine image in the specified project using the data that is included in the request. If you are creating a new machine image to update an existing instance, your new machine image should use the same network or, if applicable, the same subnetwork as the original instance.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this machine image in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesResponse",
          "description": "Properties of source instance"
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#machineImage for machine image."
        },
        "machineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "savedDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SavedDiskResponse"
          },
          "description": "An array of Machine Image specific properties for disks attached to the source instance"
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this machine image. The server defines this URL."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "sourceDiskEncryptionKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SourceDiskEncryptionKeyResponse"
          },
          "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceInstance": {
          "type": "string",
          "description": "Required. Source instance that is used to create the machine image from.",
          "replaceOnChanges": true
        },
        "sourceInstanceProperties": {
          "$ref": "#/types/google-native:compute%2Falpha:SourceInstancePropertiesResponse",
          "description": "DEPRECATED: Please use instance_properties instead for source instance related properties. New properties will not be added to this field."
        },
        "status": {
          "type": "string",
          "description": "The status of the machine image. One of the following values: INVALID, CREATING, READY, DELETING, and UPLOADING."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored."
        },
        "totalStorageBytes": {
          "type": "string",
          "description": "Total size of the storage used by the machine image."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "guestFlush",
        "instanceProperties",
        "kind",
        "machineImageEncryptionKey",
        "name",
        "project",
        "satisfiesPzs",
        "savedDisks",
        "selfLink",
        "selfLinkWithId",
        "sourceDiskEncryptionKeys",
        "sourceInstance",
        "sourceInstanceProperties",
        "status",
        "storageLocations",
        "totalStorageBytes"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process."
        },
        "machineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "savedDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SavedDisk"
          },
          "description": "An array of Machine Image specific properties for disks attached to the source instance"
        },
        "sourceDiskEncryptionKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SourceDiskEncryptionKey"
          },
          "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the machine image. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored."
        }
      },
      "requiredInputs": [
        "sourceInstance"
      ]
    },
    "google-native:compute/alpha:MachineImageIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:MachineImageIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:MachineImageIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:Network": {
      "description": "Creates a network in the specified project using the data included in the request.",
      "properties": {
        "autoCreateSubnetworks": {
          "type": "boolean",
          "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "enableUlaInternalIpv6": {
          "type": "boolean",
          "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. ."
        },
        "firewallPolicy": {
          "type": "string",
          "description": "URL of the firewall policy the network is associated with."
        },
        "gatewayIPv4": {
          "type": "string",
          "description": "The gateway address for default routing out of the network, selected by Google Cloud."
        },
        "internalIpv6Range": {
          "type": "string",
          "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. ."
        },
        "ipv4Range": {
          "type": "string",
          "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
          "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#network for networks."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "networkFirewallPolicyEnforcementOrder": {
          "type": "string",
          "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified."
        },
        "peerings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkPeeringResponse"
          },
          "description": "A list of network peerings for the resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional network resides. This field is not applicable to global network. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routingConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkRoutingConfigResponse",
          "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Server-defined fully-qualified URLs for all subnetworks in this VPC network."
        }
      },
      "type": "object",
      "required": [
        "autoCreateSubnetworks",
        "creationTimestamp",
        "description",
        "enableUlaInternalIpv6",
        "firewallPolicy",
        "gatewayIPv4",
        "internalIpv6Range",
        "ipv4Range",
        "kind",
        "mtu",
        "name",
        "networkFirewallPolicyEnforcementOrder",
        "peerings",
        "project",
        "region",
        "routingConfig",
        "selfLink",
        "selfLinkWithId",
        "subnetworks"
      ],
      "inputProperties": {
        "autoCreateSubnetworks": {
          "type": "boolean",
          "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "enableUlaInternalIpv6": {
          "type": "boolean",
          "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. ."
        },
        "internalIpv6Range": {
          "type": "string",
          "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. ."
        },
        "ipv4Range": {
          "type": "string",
          "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
          "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "networkFirewallPolicyEnforcementOrder": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkNetworkFirewallPolicyEnforcementOrder",
          "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routingConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkRoutingConfig",
          "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
        }
      }
    },
    "google-native:compute/alpha:NetworkAttachment": {
      "description": "Creates a NetworkAttachment in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "connectionEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkAttachmentConnectedEndpointResponse"
          },
          "description": "An array of connections for all the producers connected to this network attachment."
        },
        "connectionPreference": {
          "type": "string"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. An up-to-date fingerprint must be provided in order to patch."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network which the Network Attachment belongs to. Practically it is inferred by fetching the network of the first subnetwork associated. Because it is required that all the subnetworks must be from the same network, it is assured that the Network Attachment belongs to the same network as all the subnetworks."
        },
        "producerAcceptLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "producerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000). end_interface: MixerMutationRequestBuilder"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment."
        }
      },
      "type": "object",
      "required": [
        "connectionEndpoints",
        "connectionPreference",
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "network",
        "producerAcceptLists",
        "producerRejectLists",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "subnetworks"
      ],
      "inputProperties": {
        "connectionPreference": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkAttachmentConnectionPreference"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "producerAcceptLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "producerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000). end_interface: MixerMutationRequestBuilder"
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:NetworkAttachmentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:NetworkAttachmentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:NetworkAttachmentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:NetworkEdgeSecurityService": {
      "description": "Creates a new service in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a NetworkEdgeSecurityService. An up-to-date fingerprint must be provided in order to update the NetworkEdgeSecurityService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a NetworkEdgeSecurityService."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#networkEdgeSecurityService for NetworkEdgeSecurityServices"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the network edge security service associated with this network edge security service."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "project",
        "region",
        "securityPolicy",
        "selfLink",
        "selfLinkWithId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the network edge security service associated with this network edge security service."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:NetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "clientPortMappingMode": {
          "type": "string",
          "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the network endpoint group is located."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeploymentResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "type": {
          "type": "string",
          "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "clientPortMappingMode",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "loadBalancer",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serverlessDeployment",
        "size",
        "subnetwork",
        "type",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "clientPortMappingMode": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupClientPortMappingMode",
          "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroup",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeployment",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupType",
          "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:NetworkFirewallPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "vpcNetworkScope": {
          "type": "string",
          "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "project",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName",
        "vpcNetworkScope"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "vpcNetworkScope": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkFirewallPolicyVpcNetworkScope",
          "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      }
    },
    "google-native:compute/alpha:NetworkFirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:NetworkFirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:NetworkFirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:NodeGroup": {
      "description": "Creates a NodeGroup resource in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeGroupAutoscalingPolicyResponse",
          "description": "Specifies how autoscaling should behave."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string"
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "Initial count of nodes in the node group.",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#nodeGroup for node group."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate."
        },
        "maintenanceInterval": {
          "type": "string",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `AS_NEEDED` and `RECURRENT`."
        },
        "maintenancePolicy": {
          "type": "string",
          "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeGroupMaintenanceWindowResponse"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeTemplate": {
          "type": "string",
          "description": "URL of the node template to create the node group from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsResponse",
          "description": "Share-settings for the node group"
        },
        "size": {
          "type": "integer",
          "description": "The total number of nodes in the node group."
        },
        "status": {
          "type": "string"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "fingerprint",
        "initialNodeCount",
        "kind",
        "locationHint",
        "maintenanceInterval",
        "maintenancePolicy",
        "maintenanceWindow",
        "name",
        "nodeTemplate",
        "project",
        "selfLink",
        "selfLinkWithId",
        "shareSettings",
        "size",
        "status",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeGroupAutoscalingPolicy",
          "description": "Specifies how autoscaling should behave."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "Initial count of nodes in the node group.",
          "replaceOnChanges": true
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate."
        },
        "maintenanceInterval": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeGroupMaintenanceInterval",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `AS_NEEDED` and `RECURRENT`."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeGroupMaintenancePolicy",
          "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeGroupMaintenanceWindow"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeTemplate": {
          "type": "string",
          "description": "URL of the node template to create the node group from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettings",
          "description": "Share-settings for the node group"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "initialNodeCount"
      ]
    },
    "google-native:compute/alpha:NodeGroupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:NodeGroupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:NodeGroupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:NodeTemplate": {
      "description": "Creates a NodeTemplate resource in the specified project using the data included in the request.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfigResponse"
          }
        },
        "cpuOvercommitType": {
          "type": "string",
          "description": "CPU overcommit."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:LocalDiskResponse"
          }
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#nodeTemplate for node templates."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeAffinityLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to use for node affinity, which will be used in instance scheduling."
        },
        "nodeType": {
          "type": "string",
          "description": "The node type to use for nodes group that are created from this template."
        },
        "nodeTypeFlexibility": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeTemplateNodeTypeFlexibilityResponse",
          "description": "Do not use. Instead, use the node_type property."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serverBinding": {
          "$ref": "#/types/google-native:compute%2Falpha:ServerBindingResponse",
          "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
        },
        "status": {
          "type": "string",
          "description": "The status of the node template. One of the following values: CREATING, READY, and DELETING."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "cpuOvercommitType",
        "creationTimestamp",
        "description",
        "disks",
        "kind",
        "name",
        "nodeAffinityLabels",
        "nodeType",
        "nodeTypeFlexibility",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serverBinding",
        "status",
        "statusMessage"
      ],
      "inputProperties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfig"
          }
        },
        "cpuOvercommitType": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeTemplateCpuOvercommitType",
          "description": "CPU overcommit."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:LocalDisk"
          }
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeAffinityLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to use for node affinity, which will be used in instance scheduling."
        },
        "nodeType": {
          "type": "string",
          "description": "The node type to use for nodes group that are created from this template."
        },
        "nodeTypeFlexibility": {
          "$ref": "#/types/google-native:compute%2Falpha:NodeTemplateNodeTypeFlexibility",
          "description": "Do not use. Instead, use the node_type property."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverBinding": {
          "$ref": "#/types/google-native:compute%2Falpha:ServerBinding",
          "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:NodeTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:NodeTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:NodeTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:OrganizationSecurityPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigResponse"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigResponse"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this policy."
        },
        "cloudArmorConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfigResponse"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies"
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the security policy."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfigResponse"
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "type": {
          "type": "string",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedFieldResponse"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "type": "object",
      "required": [
        "adaptiveProtectionConfig",
        "advancedOptionsConfig",
        "associations",
        "cloudArmorConfig",
        "creationTimestamp",
        "ddosProtectionConfig",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "parent",
        "recaptchaOptionsConfig",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "type",
        "userDefinedFields"
      ],
      "inputProperties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfig"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfig"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociation"
          },
          "description": "A list of associations that belong to this policy."
        },
        "cloudArmorConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfig"
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfig"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfig"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:OrganizationSecurityPolicyType",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedField"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      }
    },
    "google-native:compute/alpha:PacketMirroring": {
      "description": "Creates a PacketMirroring resource in the specified project and region using the data included in the request.",
      "properties": {
        "collectorIlb": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringForwardingRuleInfoResponse",
          "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enable": {
          "type": "string",
          "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringFilterResponse",
          "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#packetMirroring for packet mirrorings."
        },
        "mirroredResources": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringMirroredResourceInfoResponse",
          "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringNetworkInfoResponse",
          "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        }
      },
      "type": "object",
      "required": [
        "collectorIlb",
        "creationTimestamp",
        "description",
        "enable",
        "filter",
        "kind",
        "mirroredResources",
        "name",
        "network",
        "priority",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId"
      ],
      "inputProperties": {
        "collectorIlb": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringForwardingRuleInfo",
          "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enable": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringEnable",
          "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringFilter",
          "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
        },
        "mirroredResources": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringMirroredResourceInfo",
          "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringNetworkInfo",
          "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:PublicAdvertisedPrefix": {
      "description": "Creates a PublicAdvertisedPrefix in the specified project using the parameters that are included in the request.",
      "properties": {
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "dnsVerificationIp": {
          "type": "string",
          "description": "The address to be used for reverse DNS verification."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicAdvertisedPrefix. An up-to-date fingerprint must be provided in order to update the PublicAdvertisedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicAdvertisedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The address range, in CIDR format, represented by this public advertised prefix."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicAdvertisedPrefix for public advertised prefixes."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pdpScope": {
          "type": "string",
          "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PublicAdvertisedPrefixPublicDelegatedPrefixResponse"
          },
          "description": "The list of public delegated prefixes that exist for this public advertised prefix."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL with id for the resource."
        },
        "sharedSecret": {
          "type": "string",
          "description": "The shared secret to be used for reverse DNS verification."
        },
        "status": {
          "type": "string",
          "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. "
        }
      },
      "type": "object",
      "required": [
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "dnsVerificationIp",
        "fingerprint",
        "ipCidrRange",
        "kind",
        "name",
        "pdpScope",
        "project",
        "publicDelegatedPrefixs",
        "selfLink",
        "selfLinkWithId",
        "sharedSecret",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "dnsVerificationIp": {
          "type": "string",
          "description": "The address to be used for reverse DNS verification."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The address range, in CIDR format, represented by this public advertised prefix."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pdpScope": {
          "$ref": "#/types/google-native:compute%2Falpha:PublicAdvertisedPrefixPdpScope",
          "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Falpha:PublicAdvertisedPrefixStatus",
          "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. "
        }
      }
    },
    "google-native:compute/alpha:PublicDelegatedPrefix": {
      "description": "Creates a PublicDelegatedPrefix in the specified project in the given region using the parameters that are included in the request.",
      "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."
        },
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes."
        },
        "mode": {
          "type": "string",
          "description": "The public delegated prefix mode for IPv6 only."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL with id for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. "
        }
      },
      "type": "object",
      "required": [
        "allocatablePrefixLength",
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipCidrRange",
        "isLiveMigration",
        "kind",
        "mode",
        "name",
        "parentPrefix",
        "project",
        "publicDelegatedSubPrefixs",
        "region",
        "selfLink",
        "selfLinkWithId",
        "status"
      ],
      "inputProperties": {
        "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."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "mode": {
          "$ref": "#/types/google-native:compute%2Falpha:PublicDelegatedPrefixMode",
          "description": "The public delegated prefix mode for IPv6 only."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PublicDelegatedPrefixPublicDelegatedSubPrefix"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionAutoscaler": {
      "description": "Creates an autoscaler in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyResponse",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#autoscaler for autoscalers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendedSize": {
          "type": "integer",
          "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "scalingScheduleStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information of existing scaling schedules."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "status": {
          "type": "string",
          "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future."
        },
        "statusDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AutoscalerStatusDetailsResponse"
          },
          "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope)."
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "recommendedSize",
        "region",
        "scalingScheduleStatus",
        "selfLink",
        "selfLinkWithId",
        "status",
        "statusDetails",
        "target",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicy",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionBackendService": {
      "description": "Creates a regional BackendService resource in the specified project using the data included in the request. For more information, see Backend services overview.",
      "properties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendResponse"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Falpha:CircuitBreakersResponse"
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Falpha:ConnectionDrainingResponse"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceConnectionTrackingPolicyResponse",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Falpha:ConsistentHashLoadBalancerSettingsResponse",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend service."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceFailoverPolicyResponse",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIAPResponse",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "ipAddressSelectionPolicy": {
          "type": "string",
          "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). "
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#backendService for backend services."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "type": "string",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLogConfigResponse",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Falpha:OutlierDetectionResponse",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this backend service."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Falpha:SecuritySettingsResponse",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "serviceLbPolicy": {
          "type": "string",
          "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Falpha:SubsettingResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceUsedByResponse"
          }
        },
        "vpcNetworkScope": {
          "type": "string",
          "description": "The network scope of the backends that can be added to the backend service. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A backend service with the VPC scope set to GLOBAL_VPC_NETWORK is only allowed to have backends in global VPC networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the backend service is only allowed to have backends in regional networks in the same scope as the backend service. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      },
      "type": "object",
      "required": [
        "affinityCookieTtlSec",
        "backends",
        "cdnPolicy",
        "circuitBreakers",
        "compressionMode",
        "connectionDraining",
        "connectionTrackingPolicy",
        "consistentHash",
        "creationTimestamp",
        "customRequestHeaders",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCDN",
        "failoverPolicy",
        "fingerprint",
        "healthChecks",
        "iap",
        "ipAddressSelectionPolicy",
        "kind",
        "loadBalancingScheme",
        "localityLbPolicies",
        "localityLbPolicy",
        "logConfig",
        "maxStreamDuration",
        "metadatas",
        "name",
        "network",
        "outlierDetection",
        "port",
        "portName",
        "project",
        "protocol",
        "region",
        "securityPolicy",
        "securitySettings",
        "selfLink",
        "selfLinkWithId",
        "serviceBindings",
        "serviceLbPolicy",
        "sessionAffinity",
        "subsetting",
        "timeoutSec",
        "usedBy",
        "vpcNetworkScope"
      ],
      "inputProperties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Backend"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicy",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Falpha:CircuitBreakers"
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionBackendServiceCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Falpha:ConnectionDraining"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceConnectionTrackingPolicy",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Falpha:ConsistentHashLoadBalancerSettings",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceFailoverPolicy",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIAP",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "ipAddressSelectionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionBackendServiceIpAddressSelectionPolicy",
          "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). "
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionBackendServiceLoadBalancingScheme",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfig"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionBackendServiceLocalityLbPolicy",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLogConfig",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Falpha:OutlierDetection",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionBackendServiceProtocol",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Falpha:SecuritySettings",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "serviceLbPolicy": {
          "type": "string",
          "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionBackendServiceSessionAffinity",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Falpha:Subsetting"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceUsedBy"
          }
        },
        "vpcNetworkScope": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionBackendServiceVpcNetworkScope",
          "description": "The network scope of the backends that can be added to the backend service. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A backend service with the VPC scope set to GLOBAL_VPC_NETWORK is only allowed to have backends in global VPC networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the backend service is only allowed to have backends in regional networks in the same scope as the backend service. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionBackendServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:RegionCommitment": {
      "description": "Creates a commitment in the specified project using the data included in the request.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "autoRenew": {
          "type": "boolean",
          "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment."
        },
        "category": {
          "type": "string",
          "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "endTimestamp": {
          "type": "string",
          "description": "Commitment end time in RFC3339 text format."
        },
        "existingReservations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the already existing reservations to attach to the Commitment. This field is optional, and it can be a full or partial URL. For example, the following are valid URLs to an reservation: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /reservations/reservation - projects/project/zones/zone/reservations/reservation "
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#commitment for commitments."
        },
        "licenseResource": {
          "$ref": "#/types/google-native:compute%2Falpha:LicenseResourceCommitmentResponse",
          "description": "The license specification required as part of a license commitment."
        },
        "mergeSourceCommitments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of source commitments to be merged into a new commitment."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "plan": {
          "type": "string",
          "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ReservationResponse"
          },
          "description": "List of create-on-create reseravtions for this commitment."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:CommitmentResourceStatusResponse",
          "description": "Status information for Commitment resource."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourceCommitmentResponse"
          },
          "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "splitSourceCommitment": {
          "type": "string",
          "description": "Source commitment to be split into a new commitment."
        },
        "startTimestamp": {
          "type": "string",
          "description": "Commitment start time in RFC3339 text format."
        },
        "status": {
          "type": "string",
          "description": "Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        },
        "type": {
          "type": "string",
          "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines."
        }
      },
      "type": "object",
      "required": [
        "autoRenew",
        "category",
        "creationTimestamp",
        "description",
        "endTimestamp",
        "existingReservations",
        "kind",
        "licenseResource",
        "mergeSourceCommitments",
        "name",
        "plan",
        "project",
        "region",
        "reservations",
        "resourceStatus",
        "resources",
        "selfLink",
        "selfLinkWithId",
        "splitSourceCommitment",
        "startTimestamp",
        "status",
        "statusMessage",
        "type"
      ],
      "inputProperties": {
        "autoRenew": {
          "type": "boolean",
          "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment."
        },
        "category": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionCommitmentCategory",
          "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "existingReservations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the already existing reservations to attach to the Commitment. This field is optional, and it can be a full or partial URL. For example, the following are valid URLs to an reservation: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /reservations/reservation - projects/project/zones/zone/reservations/reservation "
        },
        "licenseResource": {
          "$ref": "#/types/google-native:compute%2Falpha:LicenseResourceCommitment",
          "description": "The license specification required as part of a license commitment."
        },
        "mergeSourceCommitments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of source commitments to be merged into a new commitment."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "plan": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionCommitmentPlan",
          "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Reservation"
          },
          "description": "List of create-on-create reseravtions for this commitment."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourceCommitment"
          },
          "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together."
        },
        "splitSourceCommitment": {
          "type": "string",
          "description": "Source commitment to be split into a new commitment."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionCommitmentType",
          "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionDisk": {
      "description": "Creates a persistent regional disk in the specified project using the data included in the request.",
      "properties": {
        "accessMode": {
          "type": "string",
          "description": "The access mode of the disk. - READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. - READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. - READ_ONLY_MANY: The AccessMode means the disk can be attached to multiple instances in RO mode. The AccessMode is only valid for Hyperdisk disk types."
        },
        "architecture": {
          "type": "string",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskAsyncReplicationResponse",
          "description": "Disk asynchronously replicated into this disk."
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of disks this disk is asynchronously replicated to."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "interface": {
          "type": "string",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#disk for disks."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "lastAttachTimestamp": {
          "type": "string",
          "description": "Last attach timestamp in RFC3339 text format."
        },
        "lastDetachTimestamp": {
          "type": "string",
          "description": "Last detach timestamp in RFC3339 text format."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "locked": {
          "type": "boolean",
          "description": "The field indicates if the disk is created from a locked source image. Attachment of a disk created from a locked source image will cause the following operations to become irreversibly prohibited: - R/W or R/O disk attachment to any other instance - Disk detachment. And the disk can only be deleted when the instance is deleted - Creation of images or snapshots - Disk cloning Furthermore, the instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Further attachment of secondary disks. - Detachment of any disks - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true for locked disks - Attach a locked disk with --auto-delete parameter set to false "
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskResourceStatusResponse",
          "description": "Status information for the disk resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceConsistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceConsistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used."
        },
        "sourceImage": {
          "type": "string",
          "description": "Source image to restore onto a disk. This field is optional."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotId": {
          "type": "string",
          "description": "The unique ID of the instant snapshot used to create this disk. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact version of the instant snapshot that was used."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "status": {
          "type": "string",
          "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. "
        },
        "storagePool": {
          "type": "string",
          "description": "The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /storagePools/storagePool - projects/project/zones/zone/storagePools/storagePool - zones/zone/storagePools/storagePool "
        },
        "storageType": {
          "type": "string",
          "description": "[Deprecated] Storage type of the persistent disk.",
          "deprecationMessage": "[Deprecated] Storage type of the persistent disk."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance"
        },
        "zone": {
          "type": "string",
          "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        }
      },
      "type": "object",
      "required": [
        "accessMode",
        "architecture",
        "asyncPrimaryDisk",
        "asyncSecondaryDisks",
        "creationTimestamp",
        "description",
        "diskEncryptionKey",
        "enableConfidentialCompute",
        "eraseWindowsVssSignature",
        "guestOsFeatures",
        "interface",
        "kind",
        "labelFingerprint",
        "labels",
        "lastAttachTimestamp",
        "lastDetachTimestamp",
        "licenseCodes",
        "licenses",
        "locationHint",
        "locked",
        "multiWriter",
        "name",
        "options",
        "params",
        "physicalBlockSizeBytes",
        "project",
        "provisionedIops",
        "provisionedThroughput",
        "region",
        "replicaZones",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "sizeGb",
        "sourceConsistencyGroupPolicy",
        "sourceConsistencyGroupPolicyId",
        "sourceDisk",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceInstantSnapshot",
        "sourceInstantSnapshotId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceStorageObject",
        "status",
        "storagePool",
        "storageType",
        "type",
        "userLicenses",
        "users",
        "zone"
      ],
      "inputProperties": {
        "accessMode": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionDiskAccessMode",
          "description": "The access mode of the disk. - READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. - READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. - READ_ONLY_MANY: The AccessMode means the disk can be attached to multiple instances in RO mode. The AccessMode is only valid for Hyperdisk disk types."
        },
        "architecture": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionDiskArchitecture",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskAsyncReplication",
          "description": "Disk asynchronously replicated into this disk."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionDiskInterface",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Falpha:DiskParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "storagePool": {
          "type": "string",
          "description": "The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /storagePools/storagePool - projects/project/zones/zone/storagePools/storagePool - zones/zone/storagePools/storagePool "
        },
        "storageType": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionDiskStorageType",
          "description": "[Deprecated] Storage type of the persistent disk.",
          "deprecationMessage": "[Deprecated] Storage type of the persistent disk."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionDiskIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionDiskIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionDiskIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:RegionHealthCheck": {
      "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in 3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:GRPCHealthCheckResponse"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheckResponse"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheckResponse"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheckResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:HealthCheckLogConfigResponse",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "sourceRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of cloud regions from which health checks are performed. If any regions are specified, then exactly 3 regions should be specified. The region names must be valid names of GCP regions. This can only be set for global health check. If this list is non-empty, then there are restrictions on what other health check fields are supported and what other resources can use this health check: - SSL, HTTP2, and GRPC protocols are not supported. - The TCP request field is not supported. - The proxyHeader field for HTTP, HTTPS, and TCP is not supported. - The checkIntervalSec field must be at least 30. - The health check cannot be used with BackendService nor with managed instance group auto-healing. "
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:SSLHealthCheckResponse"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:TCPHealthCheckResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "udpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:UDPHealthCheckResponse"
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "grpcHealthCheck",
        "healthyThreshold",
        "http2HealthCheck",
        "httpHealthCheck",
        "httpsHealthCheck",
        "kind",
        "logConfig",
        "name",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "sourceRegions",
        "sslHealthCheck",
        "tcpHealthCheck",
        "timeoutSec",
        "type",
        "udpHealthCheck",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:GRPCHealthCheck"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheck"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheck"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheck"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:HealthCheckLogConfig",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of cloud regions from which health checks are performed. If any regions are specified, then exactly 3 regions should be specified. The region names must be valid names of GCP regions. This can only be set for global health check. If this list is non-empty, then there are restrictions on what other health check fields are supported and what other resources can use this health check: - SSL, HTTP2, and GRPC protocols are not supported. - The TCP request field is not supported. - The proxyHeader field for HTTP, HTTPS, and TCP is not supported. - The checkIntervalSec field must be at least 30. - The health check cannot be used with BackendService nor with managed instance group auto-healing. "
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:SSLHealthCheck"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:TCPHealthCheck"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionHealthCheckType",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "udpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Falpha:UDPHealthCheck"
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionHealthCheckService": {
      "description": "Creates a regional HealthCheckService resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a HealthCheckService. An up-to-date fingerprint must be provided in order to patch/update the HealthCheckService; Otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the HealthCheckService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups."
        },
        "healthStatusAggregationPolicy": {
          "type": "string",
          "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService."
        },
        "healthStatusAggregationStrategy": {
          "type": "string",
          "description": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
          "deprecationMessage": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. ."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#healthCheckServicefor health check services."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkEndpointGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT."
        },
        "notificationEndpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL with id for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "healthChecks",
        "healthStatusAggregationPolicy",
        "healthStatusAggregationStrategy",
        "kind",
        "name",
        "networkEndpointGroups",
        "notificationEndpoints",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups."
        },
        "healthStatusAggregationPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionHealthCheckServiceHealthStatusAggregationPolicy",
          "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService."
        },
        "healthStatusAggregationStrategy": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionHealthCheckServiceHealthStatusAggregationStrategy",
          "description": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
          "deprecationMessage": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. ."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkEndpointGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT."
        },
        "notificationEndpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionInstanceGroupManager": {
      "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, instances in the group are created using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method. A regional managed instance group can contain up to 2000 instances.",
      "properties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAllInstancesConfigResponse",
          "description": "Specifies configuration that overrides the instance template configuration for the group."
        },
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicyResponse"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this managed instance group in RFC3339 text format."
        },
        "currentActions": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerActionsSummaryResponse",
          "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicyResponse",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "failoverAction": {
          "type": "string",
          "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceFlexibilityPolicyResponse",
          "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
        },
        "instanceGroup": {
          "type": "string",
          "description": "The URL of the Instance Group resource."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicyResponse",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups."
        },
        "listManagedInstancesResults": {
          "type": "string",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NamedPortResponse"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this managed instance group. The server defines this URL."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
        },
        "standbyPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStandbyPolicyResponse",
          "description": "Standby policy for stopped and suspended instances."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:StatefulPolicyResponse",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStatusResponse",
          "description": "The status of this managed instance group."
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "targetSizeUnit": {
          "type": "string",
          "description": "The unit of measure for the target size."
        },
        "targetStoppedSize": {
          "type": "integer",
          "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. "
        },
        "targetSuspendedSize": {
          "type": "integer",
          "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. "
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyResponse",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerVersionResponse"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "description": "The URL of a zone where the managed instance group is located (for zonal resources)."
        }
      },
      "type": "object",
      "required": [
        "allInstancesConfig",
        "autoHealingPolicies",
        "baseInstanceName",
        "creationTimestamp",
        "currentActions",
        "description",
        "distributionPolicy",
        "failoverAction",
        "fingerprint",
        "instanceFlexibilityPolicy",
        "instanceGroup",
        "instanceLifecyclePolicy",
        "instanceTemplate",
        "kind",
        "listManagedInstancesResults",
        "name",
        "namedPorts",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serviceAccount",
        "standbyPolicy",
        "statefulPolicy",
        "status",
        "targetPools",
        "targetSize",
        "targetSizeUnit",
        "targetStoppedSize",
        "targetSuspendedSize",
        "updatePolicy",
        "versions",
        "zone"
      ],
      "inputProperties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAllInstancesConfig",
          "description": "Specifies configuration that overrides the instance template configuration for the group."
        },
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicy"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicy",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "failoverAction": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionInstanceGroupManagerFailoverAction",
          "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceFlexibilityPolicy",
          "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicy",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "listManagedInstancesResults": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionInstanceGroupManagerListManagedInstancesResults",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:NamedPort"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
        },
        "standbyPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStandbyPolicy",
          "description": "Standby policy for stopped and suspended instances."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:StatefulPolicy",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "targetSizeUnit": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionInstanceGroupManagerTargetSizeUnit",
          "description": "The unit of measure for the target size."
        },
        "targetStoppedSize": {
          "type": "integer",
          "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. "
        },
        "targetSuspendedSize": {
          "type": "integer",
          "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. "
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicy",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerVersion"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionInstanceTemplate": {
      "description": "Creates an instance template in the specified project and region using the global instance template whose URL is included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance template in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceTemplate for instance templates."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesResponse",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance template. The server defines this URL."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Falpha:SourceInstanceParamsResponse",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "properties",
        "region",
        "selfLink",
        "selfLinkWithId",
        "sourceInstance",
        "sourceInstanceParams"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Falpha:InstanceProperties",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Falpha:SourceInstanceParams",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionInstantSnapshot": {
      "description": "Creates an instant snapshot in the specified region.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the instant snapshot. Valid values are ARM64 or X86_64."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the source disk, specified in GB."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Whether to attempt an application consistent instant snapshot by informing the OS to prepare for the snapshot process."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#instantSnapshot for InstantSnapshot resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this InstantSnapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a InstantSnapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:InstantSnapshotResourceStatusResponse",
          "description": "Status information for the instant snapshot resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this InstantSnapshot. This value may be used to determine whether the InstantSnapshot was taken from the current or a previous instance of a given disk name."
        },
        "status": {
          "type": "string",
          "description": "The status of the instantSnapshot. This can be CREATING, DELETING, FAILED, or READY."
        },
        "zone": {
          "type": "string",
          "description": "URL of the zone where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "creationTimestamp",
        "description",
        "diskSizeGb",
        "guestFlush",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "region",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "sourceDisk",
        "sourceDiskId",
        "status",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "Whether to attempt an application consistent instant snapshot by informing the OS to prepare for the snapshot process."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionInstantSnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionInstantSnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionInstantSnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:RegionNetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "clientPortMappingMode": {
          "type": "string",
          "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeploymentResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "type": {
          "type": "string",
          "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the network endpoint group is located."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "clientPortMappingMode",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "loadBalancer",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serverlessDeployment",
        "size",
        "subnetwork",
        "type",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "clientPortMappingMode": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionNetworkEndpointGroupClientPortMappingMode",
          "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroup",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionNetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeployment",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionNetworkEndpointGroupType",
          "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionNetworkFirewallPolicy": {
      "description": "Creates a new network firewall policy in the specified project and region.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "vpcNetworkScope": {
          "type": "string",
          "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "project",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName",
        "vpcNetworkScope"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "vpcNetworkScope": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionNetworkFirewallPolicyVpcNetworkScope",
          "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionNetworkFirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionNetworkFirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionNetworkFirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:RegionNotificationEndpoint": {
      "description": "Create a NotificationEndpoint in the specified project in the given region using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:NotificationEndpointGrpcSettingsResponse",
          "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#notificationEndpoint for notification endpoints."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "grpcSettings",
        "kind",
        "name",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:NotificationEndpointGrpcSettings",
          "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionSecurityPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigResponse"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigResponse"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this policy."
        },
        "cloudArmorConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfigResponse"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies"
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the security policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfigResponse"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "type": {
          "type": "string",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedFieldResponse"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "type": "object",
      "required": [
        "adaptiveProtectionConfig",
        "advancedOptionsConfig",
        "associations",
        "cloudArmorConfig",
        "creationTimestamp",
        "ddosProtectionConfig",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "parent",
        "project",
        "recaptchaOptionsConfig",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "type",
        "userDefinedFields"
      ],
      "inputProperties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfig"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfig"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociation"
          },
          "description": "A list of associations that belong to this policy."
        },
        "cloudArmorConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfig"
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfig"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfig"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionSecurityPolicyType",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedField"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionSnapshot": {
      "description": "Creates a snapshot in the specified region using the data included in the request.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the snapshot. Valid values are ARM64 or X86_64."
        },
        "autoCreated": {
          "type": "boolean",
          "description": "Set to true if snapshots are automatically created by applying resource policy on the target disk."
        },
        "chainName": {
          "type": "string",
          "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value."
        },
        "creationSizeBytes": {
          "type": "string",
          "description": "Size in bytes of the snapshot at creation time."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the source disk, specified in GB."
        },
        "downloadBytes": {
          "type": "string",
          "description": "Number of bytes downloaded to restore a snapshot to a disk."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#snapshot for Snapshot resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this snapshot."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image)."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API."
        },
        "maxRetentionDays": {
          "type": "integer",
          "description": "Number of days the snapshot should be retained before being deleted automatically."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "snapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
        },
        "snapshotType": {
          "type": "string",
          "description": "Indicates the type of the snapshot."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this snapshot."
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskForRecoveryCheckpoint": {
          "type": "string",
          "description": "The source disk whose recovery checkpoint will be used to create this snapshot."
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
        },
        "sourceInstantSnapshotId": {
          "type": "string",
          "description": "The unique ID of the instant snapshot used to create this snapshot. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact instant snapshot that was used."
        },
        "sourceSnapshotSchedulePolicy": {
          "type": "string",
          "description": "URL of the resource policy which created this scheduled snapshot."
        },
        "sourceSnapshotSchedulePolicyId": {
          "type": "string",
          "description": "ID of the resource policy which created this scheduled snapshot."
        },
        "status": {
          "type": "string",
          "description": "The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING."
        },
        "storageBytes": {
          "type": "string",
          "description": "A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional)."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of user provided licenses represented by a list of URLs to the license resource."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "autoCreated",
        "chainName",
        "creationSizeBytes",
        "creationTimestamp",
        "description",
        "diskSizeGb",
        "downloadBytes",
        "enableConfidentialCompute",
        "guestFlush",
        "guestOsFeatures",
        "kind",
        "labelFingerprint",
        "labels",
        "licenseCodes",
        "licenses",
        "locationHint",
        "maxRetentionDays",
        "name",
        "project",
        "region",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "snapshotEncryptionKey",
        "snapshotType",
        "sourceDisk",
        "sourceDiskEncryptionKey",
        "sourceDiskForRecoveryCheckpoint",
        "sourceDiskId",
        "sourceInstantSnapshot",
        "sourceInstantSnapshotEncryptionKey",
        "sourceInstantSnapshotId",
        "sourceSnapshotSchedulePolicy",
        "sourceSnapshotSchedulePolicyId",
        "status",
        "storageBytes",
        "storageBytesStatus",
        "storageLocations",
        "userLicenses"
      ],
      "inputProperties": {
        "chainName": {
          "type": "string",
          "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API."
        },
        "maxRetentionDays": {
          "type": "integer",
          "description": "Number of days the snapshot should be retained before being deleted automatically."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "snapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
        },
        "snapshotType": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionSnapshotSnapshotType",
          "description": "Indicates the type of the snapshot."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this snapshot."
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskForRecoveryCheckpoint": {
          "type": "string",
          "description": "The source disk whose recovery checkpoint will be used to create this snapshot."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionSnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionSnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:RegionSnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:RegionSslCertificate": {
      "description": "Creates a SslCertificate resource in the specified project and region using the data included in the request",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expireTime": {
          "type": "string",
          "description": "Expire time of the certificate. RFC3339"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#sslCertificate for SSL certificates."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateManagedSslCertificateResponse",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateSelfManagedSslCertificateResponse",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "subjectAlternativeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Domains associated with the certificate via Subject Alternative Name."
        },
        "type": {
          "type": "string",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "creationTimestamp",
        "description",
        "expireTime",
        "kind",
        "managed",
        "name",
        "privateKey",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "selfManaged",
        "subjectAlternativeNames",
        "type"
      ],
      "inputProperties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateManagedSslCertificate",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateSelfManagedSslCertificate",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionSslCertificateType",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionSslPolicy": {
      "description": "Creates a new policy in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enabledFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of features enabled in the SSL policy."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies."
        },
        "minTlsVersion": {
          "type": "string",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "type": "string",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "tlsSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ServerTlsSettingsResponse",
          "description": "Security settings for the proxy. This field is only applicable to a global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RegionSslPolicyWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "customFeatures",
        "description",
        "enabledFeatures",
        "fingerprint",
        "kind",
        "minTlsVersion",
        "name",
        "profile",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "tlsSettings",
        "warnings"
      ],
      "inputProperties": {
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "minTlsVersion": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionSslPolicyMinTlsVersion",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionSslPolicyProfile",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "tlsSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ServerTlsSettings",
          "description": "Security settings for the proxy. This field is only applicable to a global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionTargetHttpProxy": {
      "description": "Creates a TargetHttpProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpFilters",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "region",
        "selfLink",
        "selfLinkWithId",
        "urlMap"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionTargetHttpsProxy": {
      "description": "Creates a TargetHttpsProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use serverTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead."
        },
        "authorization": {
          "type": "string",
          "description": "[Deprecated] Use authorizationPolicy instead.",
          "deprecationMessage": "[Deprecated] Use authorizationPolicy instead."
        },
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "type": "string",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "authorization",
        "authorizationPolicy",
        "certificateMap",
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpFilters",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "quicOverride",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serverTlsPolicy",
        "sslCertificates",
        "sslPolicy",
        "urlMap"
      ],
      "inputProperties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use serverTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead."
        },
        "authorization": {
          "type": "string",
          "description": "[Deprecated] Use authorizationPolicy instead.",
          "deprecationMessage": "[Deprecated] Use authorizationPolicy instead."
        },
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionTargetHttpsProxyQuicOverride",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionTargetTcpProxy": {
      "description": "Creates a TargetTcpProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyBind",
        "proxyHeader",
        "region",
        "selfLink",
        "service"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Falpha:RegionTargetTcpProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:RegionUrlMap": {
      "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyResponse",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectActionResponse",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HostRuleResponse"
          },
          "description": "The list of host rules to use against the URL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#urlMaps for url maps."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PathMatcherResponse"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:UrlMapTestResponse"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "defaultCustomErrorResponsePolicy",
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "fingerprint",
        "headerAction",
        "hostRules",
        "kind",
        "name",
        "pathMatchers",
        "project",
        "region",
        "selfLink",
        "tests"
      ],
      "inputProperties": {
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicy",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectAction",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HostRule"
          },
          "description": "The list of host rules to use against the URL."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PathMatcher"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:UrlMapTest"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:Reservation": {
      "description": "Creates a new reservation. For more information, read Reserving zonal resources.",
      "properties": {
        "aggregateReservation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationResponse",
          "description": "Reservation for aggregated resources, providing shape flexibility."
        },
        "commitment": {
          "type": "string",
          "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deleteAfterDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
          "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
        },
        "deleteAtTime": {
          "type": "string",
          "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#reservations for reservations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationResourceStatusResponse",
          "description": "Status information for Reservation resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsResponse",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUReservationResponse",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "status": {
          "type": "string",
          "description": "The status of the reservation."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "aggregateReservation",
        "commitment",
        "creationTimestamp",
        "deleteAfterDuration",
        "deleteAtTime",
        "description",
        "kind",
        "name",
        "project",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "shareSettings",
        "specificReservation",
        "specificReservationRequired",
        "status",
        "zone"
      ],
      "inputProperties": {
        "aggregateReservation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservation",
          "description": "Reservation for aggregated resources, providing shape flexibility."
        },
        "deleteAfterDuration": {
          "$ref": "#/types/google-native:compute%2Falpha:Duration",
          "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
        },
        "deleteAtTime": {
          "type": "string",
          "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ShareSettings",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUReservation",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      }
    },
    "google-native:compute/alpha:ReservationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:ReservationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:ReservationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:ResourcePolicy": {
      "description": "Creates a new resource policy.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string"
        },
        "diskConsistencyGroupPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyDiskConsistencyGroupPolicyResponse",
          "description": "Resource policy for disk consistency groups."
        },
        "groupPlacementPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyGroupPlacementPolicyResponse",
          "description": "Resource policy for instances for placement configuration."
        },
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyInstanceSchedulePolicyResponse",
          "description": "Resource policy for scheduling instance operations."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#resource_policies for resource policies."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyResourceStatusResponse",
          "description": "The system status of the resource policy."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "snapshotSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicyResponse",
          "description": "Resource policy for persistent disks for creating snapshots."
        },
        "status": {
          "type": "string",
          "description": "The status of resource policy creation."
        },
        "vmMaintenancePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyVmMaintenancePolicyResponse",
          "description": "Resource policy applicable to VMs for infrastructure maintenance."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "diskConsistencyGroupPolicy",
        "groupPlacementPolicy",
        "instanceSchedulePolicy",
        "kind",
        "name",
        "project",
        "region",
        "resourceStatus",
        "selfLink",
        "selfLinkWithId",
        "snapshotSchedulePolicy",
        "status",
        "vmMaintenancePolicy"
      ],
      "inputProperties": {
        "description": {
          "type": "string"
        },
        "diskConsistencyGroupPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyDiskConsistencyGroupPolicy",
          "description": "Resource policy for disk consistency groups."
        },
        "groupPlacementPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyGroupPlacementPolicy",
          "description": "Resource policy for instances for placement configuration."
        },
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyInstanceSchedulePolicy",
          "description": "Resource policy for scheduling instance operations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "snapshotSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicy",
          "description": "Resource policy for persistent disks for creating snapshots."
        },
        "vmMaintenancePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyVmMaintenancePolicy",
          "description": "Resource policy applicable to VMs for infrastructure maintenance."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:ResourcePolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:Route": {
      "description": "Creates a Route resource in the specified project using the data included in the request.",
      "properties": {
        "allowConflictingSubnetworks": {
          "type": "boolean",
          "description": "Whether this route can conflict with existing subnetworks. Setting this to true allows this route to conflict with subnetworks that have already been configured on the corresponding network."
        },
        "asPaths": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouteAsPathResponse"
          },
          "description": "AS path."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destRange": {
          "type": "string",
          "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format."
        },
        "ilbRouteBehaviorOnUnhealthy": {
          "type": "string",
          "description": "ILB route behavior when ILB is deemed unhealthy based on user specified threshold on the Backend Service of the internal load balancing."
        },
        "kind": {
          "type": "string",
          "description": "Type of this resource. Always compute#routes for Route resources."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "Fully-qualified URL of the network that this route applies to."
        },
        "nextHopGateway": {
          "type": "string",
          "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway"
        },
        "nextHopHub": {
          "type": "string",
          "description": "The full resource name of the Network Connectivity Center hub that will handle matching packets."
        },
        "nextHopIlb": {
          "type": "string",
          "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule "
        },
        "nextHopInstance": {
          "type": "string",
          "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
        },
        "nextHopInterRegionCost": {
          "type": "integer",
          "description": "[Output only] Internal fixed region-to-region cost that Google Cloud calculates based on factors such as network performance, distance, and available bandwidth between regions."
        },
        "nextHopInterconnectAttachment": {
          "type": "string",
          "description": "The URL to an InterconnectAttachment which is the next hop for the route. This field will only be populated for the dynamic routes generated by Cloud Router with a linked interconnectAttachment."
        },
        "nextHopIp": {
          "type": "string",
          "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address."
        },
        "nextHopMed": {
          "type": "integer",
          "description": "Multi-Exit Discriminator, a BGP route metric that indicates the desirability of a particular route in a network."
        },
        "nextHopNetwork": {
          "type": "string",
          "description": "The URL of the local network if it should handle matching packets."
        },
        "nextHopOrigin": {
          "type": "string",
          "description": "Indicates the origin of the route. Can be IGP (Interior Gateway Protocol), EGP (Exterior Gateway Protocol), or INCOMPLETE."
        },
        "nextHopPeering": {
          "type": "string",
          "description": "The network peering name that should handle matching packets, which should conform to RFC1035."
        },
        "nextHopVpnTunnel": {
          "type": "string",
          "description": "The URL to a VpnTunnel that should handle matching packets."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routeStatus": {
          "type": "string",
          "description": "[Output only] The status of the route."
        },
        "routeType": {
          "type": "string",
          "description": "The type of this route, which can be one of the following values: - 'TRANSIT' for a transit route that this router learned from another Cloud Router and will readvertise to one of its BGP peers - 'SUBNET' for a route from a subnet of the VPC - 'BGP' for a route learned from a BGP peer of this router - 'STATIC' for a static route"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of instance tags to which this route applies."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouteWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "allowConflictingSubnetworks",
        "asPaths",
        "creationTimestamp",
        "description",
        "destRange",
        "ilbRouteBehaviorOnUnhealthy",
        "kind",
        "name",
        "network",
        "nextHopGateway",
        "nextHopHub",
        "nextHopIlb",
        "nextHopInstance",
        "nextHopInterRegionCost",
        "nextHopInterconnectAttachment",
        "nextHopIp",
        "nextHopMed",
        "nextHopNetwork",
        "nextHopOrigin",
        "nextHopPeering",
        "nextHopVpnTunnel",
        "priority",
        "project",
        "routeStatus",
        "routeType",
        "selfLink",
        "selfLinkWithId",
        "tags",
        "warnings"
      ],
      "inputProperties": {
        "allowConflictingSubnetworks": {
          "type": "boolean",
          "description": "Whether this route can conflict with existing subnetworks. Setting this to true allows this route to conflict with subnetworks that have already been configured on the corresponding network."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destRange": {
          "type": "string",
          "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format."
        },
        "ilbRouteBehaviorOnUnhealthy": {
          "$ref": "#/types/google-native:compute%2Falpha:RouteIlbRouteBehaviorOnUnhealthy",
          "description": "ILB route behavior when ILB is deemed unhealthy based on user specified threshold on the Backend Service of the internal load balancing."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "Fully-qualified URL of the network that this route applies to."
        },
        "nextHopGateway": {
          "type": "string",
          "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway"
        },
        "nextHopIlb": {
          "type": "string",
          "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule "
        },
        "nextHopInstance": {
          "type": "string",
          "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
        },
        "nextHopIp": {
          "type": "string",
          "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address."
        },
        "nextHopNetwork": {
          "type": "string",
          "description": "The URL of the local network if it should handle matching packets."
        },
        "nextHopVpnTunnel": {
          "type": "string",
          "description": "The URL to a VpnTunnel that should handle matching packets."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of instance tags to which this route applies."
        }
      }
    },
    "google-native:compute/alpha:Router": {
      "description": "Creates a Router resource in the specified project and region using the data included in the request.",
      "properties": {
        "bgp": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgpResponse",
          "description": "BGP information specific to this router."
        },
        "bgpPeers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerResponse"
          },
          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "encryptedInterconnectRouter": {
          "type": "boolean",
          "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments)."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterInterfaceResponse"
          },
          "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#router for routers."
        },
        "md5AuthenticationKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterMd5AuthenticationKeyResponse"
          },
          "description": "Keys used for MD5 authentication."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterNatResponse"
          },
          "description": "A list of NAT services created in this router."
        },
        "network": {
          "type": "string",
          "description": "URI of the network to which this router belongs."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        }
      },
      "type": "object",
      "required": [
        "bgp",
        "bgpPeers",
        "creationTimestamp",
        "description",
        "encryptedInterconnectRouter",
        "interfaces",
        "kind",
        "md5AuthenticationKeys",
        "name",
        "nats",
        "network",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId"
      ],
      "inputProperties": {
        "bgp": {
          "$ref": "#/types/google-native:compute%2Falpha:RouterBgp",
          "description": "BGP information specific to this router."
        },
        "bgpPeers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeer"
          },
          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "encryptedInterconnectRouter": {
          "type": "boolean",
          "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments)."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterInterface"
          },
          "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface."
        },
        "md5AuthenticationKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterMd5AuthenticationKey"
          },
          "description": "Keys used for MD5 authentication."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterNat"
          },
          "description": "A list of NAT services created in this router."
        },
        "network": {
          "type": "string",
          "description": "URI of the network to which this router belongs."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:SecurityPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigResponse"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigResponse"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this policy."
        },
        "cloudArmorConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfigResponse"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies"
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the security policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfigResponse"
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "type": {
          "type": "string",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedFieldResponse"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "type": "object",
      "required": [
        "adaptiveProtectionConfig",
        "advancedOptionsConfig",
        "associations",
        "cloudArmorConfig",
        "creationTimestamp",
        "ddosProtectionConfig",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "parent",
        "project",
        "recaptchaOptionsConfig",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "type",
        "userDefinedFields"
      ],
      "inputProperties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfig"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfig"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociation"
          },
          "description": "A list of associations that belong to this policy."
        },
        "cloudArmorConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfig"
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfig"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfig"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyType",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedField"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      }
    },
    "google-native:compute/alpha:ServiceAttachment": {
      "description": "Creates a ServiceAttachment in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "connectedEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentConnectedEndpointResponse"
          },
          "description": "An array of connections for all the consumers connected to this service attachment."
        },
        "connectionPreference": {
          "type": "string",
          "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules."
        },
        "consumerAcceptLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentConsumerProjectLimitResponse"
          },
          "description": "Projects that are allowed to connect to this service attachment."
        },
        "consumerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1."
        },
        "enableProxyProtocol": {
          "type": "boolean",
          "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ServiceAttachment. An up-to-date fingerprint must be provided in order to patch/update the ServiceAttachment; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the ServiceAttachment."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#serviceAttachment for service attachments."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment."
        },
        "producerForwardingRule": {
          "type": "string",
          "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "propagatedConnectionLimit": {
          "type": "integer",
          "description": "The number of VPCs to which this endpoint is allowed to be propagated per accept list resource (project or network). For ACCEPT_AUTOMATIC service attachment, this limit is default to per project."
        },
        "pscServiceAttachmentId": {
          "$ref": "#/types/google-native:compute%2Falpha:Uint128Response",
          "description": "An 128-bit global unique ID of the PSC service attachment."
        },
        "reconcileConnections": {
          "type": "boolean",
          "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "targetService": {
          "type": "string",
          "description": "The URL of a service serving the endpoint identified by this service attachment."
        },
        "tunnelingConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentTunnelingConfigResponse",
          "description": "When a tunneling config is set on this service attachment it will encapsulate traffic between consumer and producer. When tunneling is enabled: - nat_subnets must be unset - enable_proxy_protocol must be false - producer_forwarding_rule must be a L4 ILB. - "
        }
      },
      "type": "object",
      "required": [
        "connectedEndpoints",
        "connectionPreference",
        "consumerAcceptLists",
        "consumerRejectLists",
        "creationTimestamp",
        "description",
        "domainNames",
        "enableProxyProtocol",
        "fingerprint",
        "kind",
        "name",
        "natSubnets",
        "producerForwardingRule",
        "project",
        "propagatedConnectionLimit",
        "pscServiceAttachmentId",
        "reconcileConnections",
        "region",
        "selfLink",
        "targetService",
        "tunnelingConfig"
      ],
      "inputProperties": {
        "connectionPreference": {
          "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentConnectionPreference",
          "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules."
        },
        "consumerAcceptLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentConsumerProjectLimit"
          },
          "description": "Projects that are allowed to connect to this service attachment."
        },
        "consumerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1."
        },
        "enableProxyProtocol": {
          "type": "boolean",
          "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment."
        },
        "producerForwardingRule": {
          "type": "string",
          "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "propagatedConnectionLimit": {
          "type": "integer",
          "description": "The number of VPCs to which this endpoint is allowed to be propagated per accept list resource (project or network). For ACCEPT_AUTOMATIC service attachment, this limit is default to per project."
        },
        "reconcileConnections": {
          "type": "boolean",
          "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "targetService": {
          "type": "string",
          "description": "The URL of a service serving the endpoint identified by this service attachment."
        },
        "tunnelingConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentTunnelingConfig",
          "description": "When a tunneling config is set on this service attachment it will encapsulate traffic between consumer and producer. When tunneling is enabled: - nat_subnets must be unset - enable_proxy_protocol must be false - producer_forwarding_rule must be a L4 ILB. - "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:ServiceAttachmentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:Snapshot": {
      "description": "Creates a snapshot in the specified project using the data included in the request. For regular snapshot creation, consider using this method instead of disks.createSnapshot, as this method supports more features, such as creating snapshots in a project different from the source disk project.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the snapshot. Valid values are ARM64 or X86_64."
        },
        "autoCreated": {
          "type": "boolean",
          "description": "Set to true if snapshots are automatically created by applying resource policy on the target disk."
        },
        "chainName": {
          "type": "string",
          "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value."
        },
        "creationSizeBytes": {
          "type": "string",
          "description": "Size in bytes of the snapshot at creation time."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the source disk, specified in GB."
        },
        "downloadBytes": {
          "type": "string",
          "description": "Number of bytes downloaded to restore a snapshot to a disk."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#snapshot for Snapshot resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this snapshot."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image)."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API."
        },
        "maxRetentionDays": {
          "type": "integer",
          "description": "Number of days the snapshot should be retained before being deleted automatically."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the snapshot resides. Only applicable for regional snapshots."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "snapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
        },
        "snapshotType": {
          "type": "string",
          "description": "Indicates the type of the snapshot."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this snapshot."
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskForRecoveryCheckpoint": {
          "type": "string",
          "description": "The source disk whose recovery checkpoint will be used to create this snapshot."
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
          "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
        },
        "sourceInstantSnapshotId": {
          "type": "string",
          "description": "The unique ID of the instant snapshot used to create this snapshot. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact instant snapshot that was used."
        },
        "sourceSnapshotSchedulePolicy": {
          "type": "string",
          "description": "URL of the resource policy which created this scheduled snapshot."
        },
        "sourceSnapshotSchedulePolicyId": {
          "type": "string",
          "description": "ID of the resource policy which created this scheduled snapshot."
        },
        "status": {
          "type": "string",
          "description": "The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING."
        },
        "storageBytes": {
          "type": "string",
          "description": "A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional)."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of user provided licenses represented by a list of URLs to the license resource."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "autoCreated",
        "chainName",
        "creationSizeBytes",
        "creationTimestamp",
        "description",
        "diskSizeGb",
        "downloadBytes",
        "enableConfidentialCompute",
        "guestFlush",
        "guestOsFeatures",
        "kind",
        "labelFingerprint",
        "labels",
        "licenseCodes",
        "licenses",
        "locationHint",
        "maxRetentionDays",
        "name",
        "project",
        "region",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "snapshotEncryptionKey",
        "snapshotType",
        "sourceDisk",
        "sourceDiskEncryptionKey",
        "sourceDiskForRecoveryCheckpoint",
        "sourceDiskId",
        "sourceInstantSnapshot",
        "sourceInstantSnapshotEncryptionKey",
        "sourceInstantSnapshotId",
        "sourceSnapshotSchedulePolicy",
        "sourceSnapshotSchedulePolicyId",
        "status",
        "storageBytes",
        "storageBytesStatus",
        "storageLocations",
        "userLicenses"
      ],
      "inputProperties": {
        "chainName": {
          "type": "string",
          "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API."
        },
        "maxRetentionDays": {
          "type": "integer",
          "description": "Number of days the snapshot should be retained before being deleted automatically."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "snapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
        },
        "snapshotType": {
          "$ref": "#/types/google-native:compute%2Falpha:SnapshotSnapshotType",
          "description": "Indicates the type of the snapshot."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this snapshot."
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskForRecoveryCheckpoint": {
          "type": "string",
          "description": "The source disk whose recovery checkpoint will be used to create this snapshot."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKey",
          "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional)."
        }
      }
    },
    "google-native:compute/alpha:SnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:SnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:SnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:SslCertificate": {
      "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expireTime": {
          "type": "string",
          "description": "Expire time of the certificate. RFC3339"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#sslCertificate for SSL certificates."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateManagedSslCertificateResponse",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateSelfManagedSslCertificateResponse",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "subjectAlternativeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Domains associated with the certificate via Subject Alternative Name."
        },
        "type": {
          "type": "string",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "creationTimestamp",
        "description",
        "expireTime",
        "kind",
        "managed",
        "name",
        "privateKey",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "selfManaged",
        "subjectAlternativeNames",
        "type"
      ],
      "inputProperties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateManagedSslCertificate",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateSelfManagedSslCertificate",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Falpha:SslCertificateType",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      }
    },
    "google-native:compute/alpha:SslPolicy": {
      "description": "Returns the specified SSL policy resource.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enabledFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of features enabled in the SSL policy."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies."
        },
        "minTlsVersion": {
          "type": "string",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "type": "string",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "tlsSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ServerTlsSettingsResponse",
          "description": "Security settings for the proxy. This field is only applicable to a global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SslPolicyWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "customFeatures",
        "description",
        "enabledFeatures",
        "fingerprint",
        "kind",
        "minTlsVersion",
        "name",
        "profile",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "tlsSettings",
        "warnings"
      ],
      "inputProperties": {
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "minTlsVersion": {
          "$ref": "#/types/google-native:compute%2Falpha:SslPolicyMinTlsVersion",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "$ref": "#/types/google-native:compute%2Falpha:SslPolicyProfile",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "tlsSettings": {
          "$ref": "#/types/google-native:compute%2Falpha:ServerTlsSettings",
          "description": "Security settings for the proxy. This field is only applicable to a global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        }
      }
    },
    "google-native:compute/alpha:StoragePool": {
      "description": "Creates a storage pool in the specified project using the data in the request.",
      "properties": {
        "capacityProvisioningType": {
          "type": "string",
          "description": "Provisioning type of the byte capacity of the pool."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#storagePool for storage pools."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this storage pool, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a storage pool."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this storage pool. These can be later modified by the setLabels method."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "performanceProvisioningType": {
          "type": "string",
          "description": "Provisioning type of the performance-related parameters of the pool, such as throughput and IOPS."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "description": "Provsioned IOPS of the storage pool."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Provisioned throughput of the storage pool. Only relevant if the storage pool type is hyperdisk-balanced or hyperdisk-throughput."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Falpha:StoragePoolResourceStatusResponse",
          "description": "Status information for the storage pool resource."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GiB, of the storage pool."
        },
        "state": {
          "type": "string",
          "description": "The status of storage pool creation. - CREATING: Storage pool is provisioning. storagePool. - FAILED: Storage pool creation failed. - READY: Storage pool is ready for use. - DELETING: Storage pool is deleting. "
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Falpha:StoragePoolResourceStatusResponse",
          "description": "Status information for the storage pool resource."
        },
        "storagePoolType": {
          "type": "string",
          "description": "Type of the storage pool."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "capacityProvisioningType",
        "creationTimestamp",
        "description",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "performanceProvisioningType",
        "project",
        "provisionedIops",
        "provisionedThroughput",
        "resourceStatus",
        "selfLink",
        "selfLinkWithId",
        "sizeGb",
        "state",
        "status",
        "storagePoolType",
        "zone"
      ],
      "inputProperties": {
        "capacityProvisioningType": {
          "$ref": "#/types/google-native:compute%2Falpha:StoragePoolCapacityProvisioningType",
          "description": "Provisioning type of the byte capacity of the pool."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this storage pool. These can be later modified by the setLabels method."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "performanceProvisioningType": {
          "$ref": "#/types/google-native:compute%2Falpha:StoragePoolPerformanceProvisioningType",
          "description": "Provisioning type of the performance-related parameters of the pool, such as throughput and IOPS."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "description": "Provsioned IOPS of the storage pool."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Provisioned throughput of the storage pool. Only relevant if the storage pool type is hyperdisk-balanced or hyperdisk-throughput."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GiB, of the storage pool."
        },
        "storagePoolType": {
          "type": "string",
          "description": "Type of the storage pool."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:StoragePoolIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:StoragePoolIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:StoragePoolIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/alpha:Subnetwork": {
      "description": "Creates a subnetwork in the specified project using the data included in the request.",
      "properties": {
        "aggregationInterval": {
          "type": "string",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Sets the aggregation interval for collecting flow logs. Increasing the interval time reduces the amount of generated flow logs for long-lasting connections. Default is an interval of 5 seconds per connection. Valid values: INTERVAL_5_SEC, INTERVAL_30_SEC, INTERVAL_1_MIN, INTERVAL_5_MIN, INTERVAL_10_MIN, INTERVAL_15_MIN."
        },
        "allowSubnetCidrRoutesOverlap": {
          "type": "boolean",
          "description": "Whether this subnetwork's ranges can conflict with existing static routes. Setting this to true allows this subnetwork's primary and secondary ranges to overlap with (and contain) static routes that have already been configured on the corresponding network. For example if a static route has range 10.1.0.0/16, a subnet range 10.0.0.0/8 could only be created if allow_conflicting_routes=true. Overlapping is only allowed on subnetwork operations; routes whose ranges conflict with this subnetwork's ranges won't be allowed unless route.allow_conflicting_subnetworks is set to true. Typically packets destined to IPs within the subnetwork (which may contain private/sensitive data) are prevented from leaving the virtual network. Setting this field to true will disable this feature. The default value is false and applies to all existing subnetworks and automatically created subnetworks. This field cannot be set to true at resource creation time."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
        },
        "enableFlowLogs": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "enableL2": {
          "type": "boolean",
          "description": "Enables Layer2 communication on the subnetwork."
        },
        "enablePrivateV6Access": {
          "type": "boolean",
          "description": "Deprecated in favor of enable in PrivateIpv6GoogleAccess. Whether the VMs in this subnet can directly access Google services via internal IPv6 addresses. This field can be both set at resource creation time and updated using patch.",
          "deprecationMessage": "Deprecated in favor of enable in PrivateIpv6GoogleAccess. Whether the VMs in this subnet can directly access Google services via internal IPv6 addresses. This field can be both set at resource creation time and updated using patch."
        },
        "externalIpv6Prefix": {
          "type": "string",
          "description": "The external IPv6 address range that is owned by this subnetwork."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a Subnetwork."
        },
        "flowSampling": {
          "type": "number",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported."
        },
        "gatewayAddress": {
          "type": "string",
          "description": "The gateway address for default routes to reach destination addresses outside this subnetwork."
        },
        "internalIpv6Prefix": {
          "type": "string",
          "description": "The internal IPv6 address range that is assigned to this subnetwork."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange."
        },
        "ipv6AccessType": {
          "type": "string",
          "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack."
        },
        "ipv6CidrRange": {
          "type": "string",
          "description": "This field is for internal use."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#subnetwork for Subnetwork resources."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkLogConfigResponse",
          "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
        },
        "metadata": {
          "type": "string",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Configures whether metadata fields should be added to the reported VPC flow logs. Options are INCLUDE_ALL_METADATA, EXCLUDE_ALL_METADATA, and CUSTOM_METADATA. Default is EXCLUDE_ALL_METADATA."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time."
        },
        "privateIpGoogleAccess": {
          "type": "boolean",
          "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservedInternalRange": {
          "type": "string",
          "description": "The URL of the reserved internal range."
        },
        "role": {
          "type": "string",
          "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request."
        },
        "secondaryIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SubnetworkSecondaryRangeResponse"
          },
          "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch."
        },
        "state": {
          "type": "string",
          "description": "The state of the subnetwork, which can be one of the following values: READY: Subnetwork is created and ready to use DRAINING: only applicable to subnetworks that have the purpose set to INTERNAL_HTTPS_LOAD_BALANCER and indicates that connections to the load balancer are being drained. A subnetwork that is draining cannot be used or modified until it reaches a status of READY"
        },
        "vlans": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "A repeated field indicating the VLAN IDs supported on this subnetwork. During Subnet creation, specifying vlan is valid only if enable_l2 is true. During Subnet Update, specifying vlan is allowed only for l2 enabled subnets. Restricted to only one VLAN."
        }
      },
      "type": "object",
      "required": [
        "aggregationInterval",
        "allowSubnetCidrRoutesOverlap",
        "creationTimestamp",
        "description",
        "enableFlowLogs",
        "enableL2",
        "enablePrivateV6Access",
        "externalIpv6Prefix",
        "fingerprint",
        "flowSampling",
        "gatewayAddress",
        "internalIpv6Prefix",
        "ipCidrRange",
        "ipv6AccessType",
        "ipv6CidrRange",
        "kind",
        "logConfig",
        "metadata",
        "name",
        "network",
        "privateIpGoogleAccess",
        "privateIpv6GoogleAccess",
        "project",
        "purpose",
        "region",
        "reservedInternalRange",
        "role",
        "secondaryIpRanges",
        "selfLink",
        "selfLinkWithId",
        "stackType",
        "state",
        "vlans"
      ],
      "inputProperties": {
        "aggregationInterval": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkAggregationInterval",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Sets the aggregation interval for collecting flow logs. Increasing the interval time reduces the amount of generated flow logs for long-lasting connections. Default is an interval of 5 seconds per connection. Valid values: INTERVAL_5_SEC, INTERVAL_30_SEC, INTERVAL_1_MIN, INTERVAL_5_MIN, INTERVAL_10_MIN, INTERVAL_15_MIN."
        },
        "allowSubnetCidrRoutesOverlap": {
          "type": "boolean",
          "description": "Whether this subnetwork's ranges can conflict with existing static routes. Setting this to true allows this subnetwork's primary and secondary ranges to overlap with (and contain) static routes that have already been configured on the corresponding network. For example if a static route has range 10.1.0.0/16, a subnet range 10.0.0.0/8 could only be created if allow_conflicting_routes=true. Overlapping is only allowed on subnetwork operations; routes whose ranges conflict with this subnetwork's ranges won't be allowed unless route.allow_conflicting_subnetworks is set to true. Typically packets destined to IPs within the subnetwork (which may contain private/sensitive data) are prevented from leaving the virtual network. Setting this field to true will disable this feature. The default value is false and applies to all existing subnetworks and automatically created subnetworks. This field cannot be set to true at resource creation time."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
        },
        "enableFlowLogs": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "enableL2": {
          "type": "boolean",
          "description": "Enables Layer2 communication on the subnetwork."
        },
        "enablePrivateV6Access": {
          "type": "boolean",
          "description": "Deprecated in favor of enable in PrivateIpv6GoogleAccess. Whether the VMs in this subnet can directly access Google services via internal IPv6 addresses. This field can be both set at resource creation time and updated using patch.",
          "deprecationMessage": "Deprecated in favor of enable in PrivateIpv6GoogleAccess. Whether the VMs in this subnet can directly access Google services via internal IPv6 addresses. This field can be both set at resource creation time and updated using patch."
        },
        "externalIpv6Prefix": {
          "type": "string",
          "description": "The external IPv6 address range that is owned by this subnetwork."
        },
        "flowSampling": {
          "type": "number",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange."
        },
        "ipv6AccessType": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkIpv6AccessType",
          "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkLogConfig",
          "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkMetadata",
          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Configures whether metadata fields should be added to the reported VPC flow logs. Options are INCLUDE_ALL_METADATA, EXCLUDE_ALL_METADATA, and CUSTOM_METADATA. Default is EXCLUDE_ALL_METADATA."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time."
        },
        "privateIpGoogleAccess": {
          "type": "boolean",
          "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkPrivateIpv6GoogleAccess",
          "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkPurpose",
          "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservedInternalRange": {
          "type": "string",
          "description": "The URL of the reserved internal range."
        },
        "role": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkRole",
          "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request."
        },
        "secondaryIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:SubnetworkSecondaryRange"
          },
          "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Falpha:SubnetworkStackType",
          "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch."
        },
        "vlans": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "A repeated field indicating the VLAN IDs supported on this subnetwork. During Subnet creation, specifying vlan is valid only if enable_l2 is true. During Subnet Update, specifying vlan is allowed only for l2 enabled subnets. Restricted to only one VLAN."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:SubnetworkIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:SubnetworkIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/alpha:SubnetworkIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/alpha:TargetGrpcProxy": {
      "description": "Creates a TargetGrpcProxy in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetGrpcProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetGrpcProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetGrpcProxy."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetGrpcProxy for target grpc proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL with id for the resource."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC."
        },
        "validateForProxyless": {
          "type": "boolean",
          "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to"
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "project",
        "selfLink",
        "selfLinkWithId",
        "urlMap",
        "validateForProxyless"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC."
        },
        "validateForProxyless": {
          "type": "boolean",
          "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to"
        }
      }
    },
    "google-native:compute/alpha:TargetHttpProxy": {
      "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpFilters",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "region",
        "selfLink",
        "selfLinkWithId",
        "urlMap"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      }
    },
    "google-native:compute/alpha:TargetHttpsProxy": {
      "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use serverTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead."
        },
        "authorization": {
          "type": "string",
          "description": "[Deprecated] Use authorizationPolicy instead.",
          "deprecationMessage": "[Deprecated] Use authorizationPolicy instead."
        },
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "type": "string",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "authorization",
        "authorizationPolicy",
        "certificateMap",
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpFilters",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "quicOverride",
        "region",
        "selfLink",
        "selfLinkWithId",
        "serverTlsPolicy",
        "sslCertificates",
        "sslPolicy",
        "urlMap"
      ],
      "inputProperties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use serverTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead."
        },
        "authorization": {
          "type": "string",
          "description": "[Deprecated] Use authorizationPolicy instead.",
          "deprecationMessage": "[Deprecated] Use authorizationPolicy instead."
        },
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "$ref": "#/types/google-native:compute%2Falpha:TargetHttpsProxyQuicOverride",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      }
    },
    "google-native:compute/alpha:TargetInstance": {
      "description": "Creates a TargetInstance resource in the specified project and zone using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "instance": {
          "type": "string",
          "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance "
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#targetInstance for target instances."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natPolicy": {
          "type": "string",
          "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this target instance."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "instance",
        "kind",
        "name",
        "natPolicy",
        "network",
        "project",
        "securityPolicy",
        "selfLink",
        "selfLinkWithId",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "instance": {
          "type": "string",
          "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance "
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:TargetInstanceNatPolicy",
          "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/alpha:TargetPool": {
      "description": "Creates a target pool in the specified project and region using the data included in the request.",
      "properties": {
        "backupPool": {
          "type": "string",
          "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failoverRatio": {
          "type": "number",
          "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetPool for target pools."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this target pool."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy."
        }
      },
      "type": "object",
      "required": [
        "backupPool",
        "creationTimestamp",
        "description",
        "failoverRatio",
        "healthChecks",
        "instances",
        "kind",
        "name",
        "project",
        "region",
        "securityPolicy",
        "selfLink",
        "selfLinkWithId",
        "sessionAffinity"
      ],
      "inputProperties": {
        "backupPool": {
          "type": "string",
          "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failoverRatio": {
          "type": "number",
          "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Falpha:TargetPoolSessionAffinity",
          "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:TargetSslProxy": {
      "description": "Creates a TargetSslProxy resource in the specified project using the data included in the request.",
      "properties": {
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetSslProxy for target SSL proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured."
        }
      },
      "type": "object",
      "required": [
        "certificateMap",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyHeader",
        "selfLink",
        "service",
        "sslCertificates",
        "sslPolicy"
      ],
      "inputProperties": {
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Falpha:TargetSslProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured."
        }
      }
    },
    "google-native:compute/alpha:TargetTcpProxy": {
      "description": "Creates a TargetTcpProxy resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyBind",
        "proxyHeader",
        "region",
        "selfLink",
        "service"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Falpha:TargetTcpProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      }
    },
    "google-native:compute/alpha:TargetVpnGateway": {
      "description": "Creates a target VPN gateway in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "forwardingRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated with a VPN gateway."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetVpnGateway for target VPN gateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a TargetVpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the VPN gateway, which can be one of the following: CREATING, READY, FAILED, or DELETING."
        },
        "tunnels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to VpnTunnel resources. VpnTunnels are created using the compute.vpntunnels.insert method and associated with a VPN gateway."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "forwardingRules",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "project",
        "region",
        "selfLink",
        "status",
        "tunnels"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:UrlMap": {
      "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyResponse",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectActionResponse",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HostRuleResponse"
          },
          "description": "The list of host rules to use against the URL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#urlMaps for url maps."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PathMatcherResponse"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:UrlMapTestResponse"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "defaultCustomErrorResponsePolicy",
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "fingerprint",
        "headerAction",
        "hostRules",
        "kind",
        "name",
        "pathMatchers",
        "project",
        "region",
        "selfLink",
        "tests"
      ],
      "inputProperties": {
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicy",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectAction",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:HostRule"
          },
          "description": "The list of host rules to use against the URL."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:PathMatcher"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:UrlMapTest"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      }
    },
    "google-native:compute/alpha:VpnGateway": {
      "description": "Creates a VPN gateway in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "gatewayIpVersion": {
          "type": "string",
          "description": "The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#vpnGateway for VPN gateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this VpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used."
        },
        "vpnInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:VpnGatewayVpnGatewayInterfaceResponse"
          },
          "description": "The list of VPN interfaces associated with this VPN gateway."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "gatewayIpVersion",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "project",
        "region",
        "selfLink",
        "stackType",
        "vpnInterfaces"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "gatewayIpVersion": {
          "$ref": "#/types/google-native:compute%2Falpha:VpnGatewayGatewayIpVersion",
          "description": "The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Falpha:VpnGatewayStackType",
          "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used."
        },
        "vpnInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Falpha:VpnGatewayVpnGatewayInterface"
          },
          "description": "The list of VPN interfaces associated with this VPN gateway."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:VpnTunnel": {
      "description": "Creates a VpnTunnel resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "detailedStatus": {
          "type": "string",
          "description": "Detailed status message for the VPN tunnel."
        },
        "ikeVersion": {
          "type": "integer",
          "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#vpnTunnel for VPN tunnels."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnTunnel."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "localTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerExternalGateway": {
          "type": "string",
          "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway."
        },
        "peerExternalGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type."
        },
        "peerGcpGateway": {
          "type": "string",
          "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway."
        },
        "peerIp": {
          "type": "string",
          "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the router resource to be used for dynamic routing."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sharedSecret": {
          "type": "string",
          "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
        },
        "sharedSecretHash": {
          "type": "string",
          "description": "Hash of the shared secret."
        },
        "status": {
          "type": "string",
          "description": "The status of the VPN tunnel, which can be one of the following: - PROVISIONING: Resource is being allocated for the VPN tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all VPN-related configs from the user. Network, TargetVpnGateway, VpnTunnel, ForwardingRule, and Route resources are needed to setup the VPN tunnel. - FIRST_HANDSHAKE: Successful first handshake with the peer VPN. - ESTABLISHED: Secure session is successfully established with the peer VPN. - NETWORK_ERROR: Deprecated, replaced by NO_INCOMING_PACKETS - AUTHORIZATION_ERROR: Auth error (for example, bad shared secret). - NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING: Resources are being deallocated for the VPN tunnel. - FAILED: Tunnel creation has failed and the tunnel is not ready to be used. - NO_INCOMING_PACKETS: No incoming packets from peer. - REJECTED: Tunnel configuration was rejected, can be result of being denied access. - ALLOCATING_RESOURCES: Cloud VPN is in the process of allocating all required resources. - STOPPED: Tunnel is stopped due to its Forwarding Rules being deleted for Classic VPN tunnels or the project is in frozen state. - PEER_IDENTITY_MISMATCH: Peer identity does not match peer IP, probably behind NAT. - TS_NARROWING_NOT_ALLOWED: Traffic selector narrowing not allowed for an HA-VPN tunnel. "
        },
        "targetVpnGateway": {
          "type": "string",
          "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created."
        },
        "vpnGateway": {
          "type": "string",
          "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created."
        },
        "vpnGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "detailedStatus",
        "ikeVersion",
        "kind",
        "labelFingerprint",
        "labels",
        "localTrafficSelector",
        "name",
        "peerExternalGateway",
        "peerExternalGatewayInterface",
        "peerGcpGateway",
        "peerIp",
        "project",
        "region",
        "remoteTrafficSelector",
        "router",
        "selfLink",
        "sharedSecret",
        "sharedSecretHash",
        "status",
        "targetVpnGateway",
        "vpnGateway",
        "vpnGatewayInterface"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ikeVersion": {
          "type": "integer",
          "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "localTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerExternalGateway": {
          "type": "string",
          "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway."
        },
        "peerExternalGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type."
        },
        "peerGcpGateway": {
          "type": "string",
          "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway."
        },
        "peerIp": {
          "type": "string",
          "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the router resource to be used for dynamic routing."
        },
        "sharedSecret": {
          "type": "string",
          "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
        },
        "sharedSecretHash": {
          "type": "string",
          "description": "Hash of the shared secret."
        },
        "targetVpnGateway": {
          "type": "string",
          "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created."
        },
        "vpnGateway": {
          "type": "string",
          "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created."
        },
        "vpnGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/alpha:ZoneQueuedResource": {
      "description": "Creates a QueuedResource.",
      "properties": {
        "bulkInsertInstanceResource": {
          "$ref": "#/types/google-native:compute%2Falpha:BulkInsertInstanceResourceResponse",
          "description": "Specification of VM instances to create."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#queuedResource for QueuedResources."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuingPolicyResponse",
          "description": "Queuing parameters for the requested capacity."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "state": {
          "type": "string",
          "description": "[Output only] High-level status of the request."
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuedResourceStatusResponse",
          "description": "[Output only] Result of queuing and provisioning based on deferred capacity."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bulkInsertInstanceResource",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "queuingPolicy",
        "selfLink",
        "selfLinkWithId",
        "state",
        "status",
        "zone"
      ],
      "inputProperties": {
        "bulkInsertInstanceResource": {
          "$ref": "#/types/google-native:compute%2Falpha:BulkInsertInstanceResource",
          "description": "Specification of VM instances to create."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuingPolicy": {
          "$ref": "#/types/google-native:compute%2Falpha:QueuingPolicy",
          "description": "Queuing parameters for the requested capacity."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:Address": {
      "description": "Creates an address resource in the specified project by using the data included in the request.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource.",
          "language": {
            "csharp": {
              "name": "AddressValue"
            }
          }
        },
        "addressType": {
          "type": "string",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "type": "string",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#address for addresses."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs of the resources that are using this address."
        }
      },
      "type": "object",
      "required": [
        "address",
        "addressType",
        "creationTimestamp",
        "description",
        "ipVersion",
        "ipv6EndpointType",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "networkTier",
        "prefixLength",
        "project",
        "purpose",
        "region",
        "selfLink",
        "status",
        "subnetwork",
        "users"
      ],
      "inputProperties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "$ref": "#/types/google-native:compute%2Fbeta:AddressAddressType",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fbeta:AddressIpVersion",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "$ref": "#/types/google-native:compute%2Fbeta:AddressIpv6EndpointType",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fbeta:AddressNetworkTier",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Fbeta:AddressPurpose",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:Autoscaler": {
      "description": "Creates an autoscaler in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyResponse",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#autoscaler for autoscalers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendedSize": {
          "type": "integer",
          "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the instance group resides (for autoscalers living in regional scope)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "scalingScheduleStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information of existing scaling schedules."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future."
        },
        "statusDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AutoscalerStatusDetailsResponse"
          },
          "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "recommendedSize",
        "region",
        "scalingScheduleStatus",
        "selfLink",
        "status",
        "statusDetails",
        "target",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicy",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:BackendBucket": {
      "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendBucket."
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the Application Load Balancer should add to proxied responses."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend bucket."
        },
        "enableCdn": {
          "type": "boolean",
          "description": "If true, enable Cloud CDN for this BackendBucket."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "cdnPolicy",
        "compressionMode",
        "creationTimestamp",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCdn",
        "kind",
        "name",
        "project",
        "selfLink"
      ],
      "inputProperties": {
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicy",
          "description": "Cloud CDN configuration for this BackendBucket."
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the Application Load Balancer should add to proxied responses."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "enableCdn": {
          "type": "boolean",
          "description": "If true, enable Cloud CDN for this BackendBucket."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/beta:BackendBucketIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:BackendBucketIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:BackendBucketIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:BackendService": {
      "description": "Creates a BackendService resource in the specified project using the data included in the request. For more information, see Backend services overview .",
      "properties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendResponse"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Fbeta:CircuitBreakersResponse"
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConnectionDrainingResponse"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceConnectionTrackingPolicyResponse",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConsistentHashLoadBalancerSettingsResponse",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend service."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceFailoverPolicyResponse",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceIAPResponse",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "ipAddressSelectionPolicy": {
          "type": "string",
          "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). "
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#backendService for backend services."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "type": "string",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLogConfigResponse",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Fbeta:OutlierDetectionResponse",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this backend service."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecuritySettingsResponse",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "serviceLbPolicy": {
          "type": "string",
          "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubsettingResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceUsedByResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "affinityCookieTtlSec",
        "backends",
        "cdnPolicy",
        "circuitBreakers",
        "compressionMode",
        "connectionDraining",
        "connectionTrackingPolicy",
        "consistentHash",
        "creationTimestamp",
        "customRequestHeaders",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCDN",
        "failoverPolicy",
        "fingerprint",
        "healthChecks",
        "iap",
        "ipAddressSelectionPolicy",
        "kind",
        "loadBalancingScheme",
        "localityLbPolicies",
        "localityLbPolicy",
        "logConfig",
        "maxStreamDuration",
        "metadatas",
        "name",
        "network",
        "outlierDetection",
        "port",
        "portName",
        "project",
        "protocol",
        "region",
        "securityPolicy",
        "securitySettings",
        "selfLink",
        "serviceBindings",
        "serviceLbPolicy",
        "sessionAffinity",
        "subsetting",
        "timeoutSec",
        "usedBy"
      ],
      "inputProperties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Backend"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicy",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Fbeta:CircuitBreakers"
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConnectionDraining"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceConnectionTrackingPolicy",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConsistentHashLoadBalancerSettings",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceFailoverPolicy",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceIAP",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "ipAddressSelectionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceIpAddressSelectionPolicy",
          "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). "
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLoadBalancingScheme",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfig"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLbPolicy",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLogConfig",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Fbeta:OutlierDetection",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceProtocol",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecuritySettings",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "serviceLbPolicy": {
          "type": "string",
          "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceSessionAffinity",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Fbeta:Subsetting"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceUsedBy"
          }
        }
      }
    },
    "google-native:compute/beta:BackendServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:BackendServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:BackendServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:Disk": {
      "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk from a source (sourceImage, sourceSnapshot, or sourceDisk) or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskAsyncReplicationResponse",
          "description": "Disk asynchronously replicated into this disk."
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of disks this disk is asynchronously replicated to."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "interface": {
          "type": "string",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#disk for disks."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "lastAttachTimestamp": {
          "type": "string",
          "description": "Last attach timestamp in RFC3339 text format."
        },
        "lastDetachTimestamp": {
          "type": "string",
          "description": "Last detach timestamp in RFC3339 text format."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "locked": {
          "type": "boolean",
          "description": "The field indicates if the disk is created from a locked source image. Attachment of a disk created from a locked source image will cause the following operations to become irreversibly prohibited: - R/W or R/O disk attachment to any other instance - Disk detachment. And the disk can only be deleted when the instance is deleted - Creation of images or snapshots - Disk cloning Furthermore, the instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Further attachment of secondary disks. - Detachment of any disks - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true for locked disks - Attach a locked disk with --auto-delete parameter set to false "
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskResourceStatusResponse",
          "description": "Status information for the disk resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceConsistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceConsistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used."
        },
        "sourceImage": {
          "type": "string",
          "description": "Source image to restore onto a disk. This field is optional."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotId": {
          "type": "string",
          "description": "The unique ID of the instant snapshot used to create this disk. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact version of the instant snapshot that was used."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "status": {
          "type": "string",
          "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. "
        },
        "storageType": {
          "type": "string",
          "description": "[Deprecated] Storage type of the persistent disk.",
          "deprecationMessage": "[Deprecated] Storage type of the persistent disk."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "asyncPrimaryDisk",
        "asyncSecondaryDisks",
        "creationTimestamp",
        "description",
        "diskEncryptionKey",
        "enableConfidentialCompute",
        "eraseWindowsVssSignature",
        "guestOsFeatures",
        "interface",
        "kind",
        "labelFingerprint",
        "labels",
        "lastAttachTimestamp",
        "lastDetachTimestamp",
        "licenseCodes",
        "licenses",
        "locationHint",
        "locked",
        "multiWriter",
        "name",
        "options",
        "params",
        "physicalBlockSizeBytes",
        "project",
        "provisionedIops",
        "provisionedThroughput",
        "region",
        "replicaZones",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "sizeGb",
        "sourceConsistencyGroupPolicy",
        "sourceConsistencyGroupPolicyId",
        "sourceDisk",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceInstantSnapshot",
        "sourceInstantSnapshotId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceStorageObject",
        "status",
        "storageType",
        "type",
        "userLicenses",
        "users",
        "zone"
      ],
      "inputProperties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskArchitecture",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskAsyncReplication",
          "description": "Disk asynchronously replicated into this disk."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskInterface",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "storageType": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskStorageType",
          "description": "[Deprecated] Storage type of the persistent disk.",
          "deprecationMessage": "[Deprecated] Storage type of the persistent disk."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:DiskIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:DiskIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:DiskIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:ExternalVpnGateway": {
      "description": "Creates a ExternalVpnGateway in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ExternalVpnGatewayInterfaceResponse"
          },
          "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#externalVpnGateway for externalVpnGateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this ExternalVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an ExternalVpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redundancyType": {
          "type": "string",
          "description": "Indicates the user-supplied redundancy type of this external VPN gateway."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "interfaces",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "redundancyType",
        "selfLink"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ExternalVpnGatewayInterface"
          },
          "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redundancyType": {
          "$ref": "#/types/google-native:compute%2Fbeta:ExternalVpnGatewayRedundancyType",
          "description": "Indicates the user-supplied redundancy type of this external VPN gateway."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/beta:Firewall": {
      "description": "Creates a firewall rule in the specified project using the data included in the request.",
      "properties": {
        "allowed": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallAllowedItemResponse"
          },
          "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "denied": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallDeniedItemResponse"
          },
          "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destinationRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported."
        },
        "direction": {
          "type": "string",
          "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging.",
          "deprecationMessage": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#firewall for firewall rules."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:FirewallLogConfigResponse",
          "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default "
        },
        "priority": {
          "type": "integer",
          "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sourceRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported."
        },
        "sourceServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags."
        },
        "sourceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network."
        },
        "targetTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network."
        }
      },
      "type": "object",
      "required": [
        "allowed",
        "creationTimestamp",
        "denied",
        "description",
        "destinationRanges",
        "direction",
        "disabled",
        "enableLogging",
        "kind",
        "logConfig",
        "name",
        "network",
        "priority",
        "project",
        "selfLink",
        "sourceRanges",
        "sourceServiceAccounts",
        "sourceTags",
        "targetServiceAccounts",
        "targetTags"
      ],
      "inputProperties": {
        "allowed": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallAllowedItem"
          },
          "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection."
        },
        "denied": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallDeniedItem"
          },
          "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destinationRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Fbeta:FirewallDirection",
          "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging.",
          "deprecationMessage": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:FirewallLogConfig",
          "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default "
        },
        "priority": {
          "type": "integer",
          "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported."
        },
        "sourceServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags."
        },
        "sourceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network."
        },
        "targetTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network."
        }
      }
    },
    "google-native:compute/beta:FirewallPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      }
    },
    "google-native:compute/beta:FirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:FirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:FirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:ForwardingRule": {
      "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
      "properties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "allowPscPacketInjection": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "baseForwardingRule": {
          "type": "string",
          "description": "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."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Forwarding Rule."
        },
        "pscConnectionStatus": {
          "type": "string"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleServiceDirectoryRegistrationResponse"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "serviceName": {
          "type": "string",
          "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "type": "object",
      "required": [
        "allPorts",
        "allowGlobalAccess",
        "allowPscGlobalAccess",
        "allowPscPacketInjection",
        "backendService",
        "baseForwardingRule",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipAddress",
        "ipProtocol",
        "ipVersion",
        "isMirroringCollector",
        "kind",
        "labelFingerprint",
        "labels",
        "loadBalancingScheme",
        "metadataFilters",
        "name",
        "network",
        "networkTier",
        "noAutomateDnsZone",
        "portRange",
        "ports",
        "project",
        "pscConnectionId",
        "pscConnectionStatus",
        "region",
        "selfLink",
        "serviceDirectoryRegistrations",
        "serviceLabel",
        "serviceName",
        "sourceIpRanges",
        "subnetwork",
        "target"
      ],
      "inputProperties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "allowPscPacketInjection": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipProtocol": {
          "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleIpProtocol",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleIpVersion",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleLoadBalancingScheme",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilter"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleNetworkTier",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRulePscConnectionStatus"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleServiceDirectoryRegistration"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:FutureReservation": {
      "description": "Creates a new Future Reservation.",
      "properties": {
        "autoCreatedReservationsDeleteTime": {
          "type": "string",
          "description": "Future timestamp when the FR auto-created reservations will be deleted by GCE. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\">RFC3339 value."
        },
        "autoCreatedReservationsDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by GCE. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
        },
        "autoDeleteAutoCreatedReservations": {
          "type": "boolean",
          "description": "Setting for enabling or disabling automatic deletion for auto-created reservation. If set to true, auto-created reservations will be deleted at Future Reservation's end time (default) or at user's defined timestamp if any of the [auto_created_reservations_delete_time, auto_created_reservations_duration] values is specified. For keeping auto-created reservation indefinitely, this value should be set to false."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this future reservation in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the future reservation."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#futureReservation for future reservations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "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-####."
        },
        "planningStatus": {
          "type": "string",
          "description": "Planning state before being submitted for evaluation"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsResponse",
          "description": "List of Projects/Folders to share with."
        },
        "specificSkuProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationSpecificSKUPropertiesResponse",
          "description": "Future Reservation configuration to indicate instance properties and total count."
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationStatusResponse",
          "description": "[Output only] Status of the Future Reservation"
        },
        "timeWindow": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationTimeWindowResponse",
          "description": "Time window for this Future Reservation."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoCreatedReservationsDeleteTime",
        "autoCreatedReservationsDuration",
        "autoDeleteAutoCreatedReservations",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "namePrefix",
        "planningStatus",
        "project",
        "selfLink",
        "selfLinkWithId",
        "shareSettings",
        "specificSkuProperties",
        "status",
        "timeWindow",
        "zone"
      ],
      "inputProperties": {
        "autoCreatedReservationsDeleteTime": {
          "type": "string",
          "description": "Future timestamp when the FR auto-created reservations will be deleted by GCE. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\">RFC3339 value."
        },
        "autoCreatedReservationsDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by GCE. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
        },
        "autoDeleteAutoCreatedReservations": {
          "type": "boolean",
          "description": "Setting for enabling or disabling automatic deletion for auto-created reservation. If set to true, auto-created reservations will be deleted at Future Reservation's end time (default) or at user's defined timestamp if any of the [auto_created_reservations_delete_time, auto_created_reservations_duration] values is specified. For keeping auto-created reservation indefinitely, this value should be set to false."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the future reservation."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "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-####."
        },
        "planningStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationPlanningStatus",
          "description": "Planning state before being submitted for evaluation"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettings",
          "description": "List of Projects/Folders to share with."
        },
        "specificSkuProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationSpecificSKUProperties",
          "description": "Future Reservation configuration to indicate instance properties and total count."
        },
        "timeWindow": {
          "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationTimeWindow",
          "description": "Time window for this Future Reservation."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:GlobalAddress": {
      "description": "Creates an address resource in the specified project by using the data included in the request.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "type": "string",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "type": "string",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#address for addresses."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs of the resources that are using this address."
        }
      },
      "type": "object",
      "required": [
        "address",
        "addressType",
        "creationTimestamp",
        "description",
        "ipVersion",
        "ipv6EndpointType",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "networkTier",
        "prefixLength",
        "project",
        "purpose",
        "region",
        "selfLink",
        "status",
        "subnetwork",
        "users"
      ],
      "inputProperties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalAddressAddressType",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalAddressIpVersion",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalAddressIpv6EndpointType",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalAddressNetworkTier",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalAddressPurpose",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        }
      }
    },
    "google-native:compute/beta:GlobalForwardingRule": {
      "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
      "properties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "allowPscPacketInjection": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "baseForwardingRule": {
          "type": "string",
          "description": "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."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Forwarding Rule."
        },
        "pscConnectionStatus": {
          "type": "string"
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleServiceDirectoryRegistrationResponse"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "serviceName": {
          "type": "string",
          "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "type": "object",
      "required": [
        "allPorts",
        "allowGlobalAccess",
        "allowPscGlobalAccess",
        "allowPscPacketInjection",
        "backendService",
        "baseForwardingRule",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipAddress",
        "ipProtocol",
        "ipVersion",
        "isMirroringCollector",
        "kind",
        "labelFingerprint",
        "labels",
        "loadBalancingScheme",
        "metadataFilters",
        "name",
        "network",
        "networkTier",
        "noAutomateDnsZone",
        "portRange",
        "ports",
        "project",
        "pscConnectionId",
        "pscConnectionStatus",
        "region",
        "selfLink",
        "serviceDirectoryRegistrations",
        "serviceLabel",
        "serviceName",
        "sourceIpRanges",
        "subnetwork",
        "target"
      ],
      "inputProperties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "allowPscPacketInjection": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipProtocol": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalForwardingRuleIpProtocol",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalForwardingRuleIpVersion",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalForwardingRuleLoadBalancingScheme",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilter"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalForwardingRuleNetworkTier",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalForwardingRulePscConnectionStatus"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleServiceDirectoryRegistration"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      }
    },
    "google-native:compute/beta:GlobalNetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the network endpoint group is located."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeploymentResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the network endpoint group is located."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "loadBalancer",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "serverlessDeployment",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroup",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Fbeta:GlobalNetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeployment",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        }
      }
    },
    "google-native:compute/beta:GlobalPublicDelegatedPrefix": {
      "description": "Creates a global PublicDelegatedPrefix in the specified project using the parameters that are included in the request.",
      "properties": {
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. "
        }
      },
      "type": "object",
      "required": [
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipCidrRange",
        "isLiveMigration",
        "kind",
        "name",
        "parentPrefix",
        "project",
        "publicDelegatedSubPrefixs",
        "region",
        "selfLink",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PublicDelegatedPrefixPublicDelegatedSubPrefix"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/beta:HealthCheck": {
      "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in 3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:GRPCHealthCheckResponse"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTP2HealthCheckResponse"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPHealthCheckResponse"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPSHealthCheckResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:HealthCheckLogConfigResponse",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "Region where the health check resides. Not applicable to global health checks."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:SSLHealthCheckResponse"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:TCPHealthCheckResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "grpcHealthCheck",
        "healthyThreshold",
        "http2HealthCheck",
        "httpHealthCheck",
        "httpsHealthCheck",
        "kind",
        "logConfig",
        "name",
        "project",
        "region",
        "selfLink",
        "sslHealthCheck",
        "tcpHealthCheck",
        "timeoutSec",
        "type",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:GRPCHealthCheck"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTP2HealthCheck"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPHealthCheck"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPSHealthCheck"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:HealthCheckLogConfig",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:SSLHealthCheck"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:TCPHealthCheck"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:HealthCheckType",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/beta:HttpHealthCheck": {
      "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#httpHealthCheck for HTTP health checks."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTP health check request. The default value is 80."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "healthyThreshold",
        "host",
        "kind",
        "name",
        "port",
        "project",
        "requestPath",
        "selfLink",
        "timeoutSec",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTP health check request. The default value is 80."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/beta:HttpsHealthCheck": {
      "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTPS health check request. The default value is 443."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "healthyThreshold",
        "host",
        "kind",
        "name",
        "port",
        "project",
        "requestPath",
        "selfLink",
        "timeoutSec",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTPS health check request. The default value is 443."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/beta:Image": {
      "description": "Creates an image in the specified project using the data included in the request.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the image. Valid values are ARM64 or X86_64."
        },
        "archiveSizeBytes": {
          "type": "string",
          "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes)."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deprecated": {
          "$ref": "#/types/google-native:compute%2Fbeta:DeprecationStatusResponse",
          "description": "The deprecation status associated with this image."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the image when restored onto a persistent disk (in GB)."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this image is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "family": {
          "type": "string",
          "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
        },
        "forceCreate": {
          "type": "boolean",
          "description": "Force image creation if true."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter."
        },
        "imageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#image for images."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an image."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this image. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this image."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any applicable license URI."
        },
        "locked": {
          "type": "boolean",
          "description": "A flag for marketplace VM disk created from the image, which is designed for marketplace VM disk to prevent the proprietary data on the disk from being accessed unwantedly. The flag will be inherited by the disk created from the image. The disk with locked flag set to true will be prohibited from performing the operations below: - R/W or R/O disk attach - Disk detach, if disk is created via create-on-create - Create images - Create snapshots - Create disk clone (create disk from the current disk) The image with the locked field set to true will be prohibited from performing the operations below: - Create images from the current image - Update the locked field for the current image The instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Secondary disk attach - Create instant snapshot - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true "
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawDisk": {
          "$ref": "#/types/google-native:compute%2Fbeta:ImageRawDiskResponse",
          "description": "The parameters of the raw disk image."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rolloutOverride": {
          "$ref": "#/types/google-native:compute%2Fbeta:RolloutPolicyResponse",
          "description": "A rollout policy to apply to this image. When specified, the rollout policy overrides per-zone references to the image via the associated image family. The rollout policy restricts the zones where this image is accessible when using a zonal image family reference. When the rollout policy does not include the user specified zone, or if the zone is rolled out, this image is accessible. The rollout policy for this image is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Fbeta:InitialStateConfigResponse",
          "description": "Set the secure boot keys of shielded instance."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name."
        },
        "sourceImage": {
          "type": "string",
          "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name."
        },
        "sourceType": {
          "type": "string",
          "description": "The type of the image used to create this disk. The default and only valid value is RAW."
        },
        "status": {
          "type": "string",
          "description": "The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the image (regional or multi-regional)."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "archiveSizeBytes",
        "creationTimestamp",
        "deprecated",
        "description",
        "diskSizeGb",
        "enableConfidentialCompute",
        "family",
        "guestOsFeatures",
        "imageEncryptionKey",
        "kind",
        "labelFingerprint",
        "labels",
        "licenseCodes",
        "licenses",
        "locked",
        "name",
        "project",
        "rawDisk",
        "rolloutOverride",
        "satisfiesPzs",
        "selfLink",
        "shieldedInstanceInitialState",
        "sourceDisk",
        "sourceDiskEncryptionKey",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceType",
        "status",
        "storageLocations",
        "userLicenses"
      ],
      "inputProperties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Fbeta:ImageArchitecture",
          "description": "The architecture of the image. Valid values are ARM64 or X86_64."
        },
        "archiveSizeBytes": {
          "type": "string",
          "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes)."
        },
        "deprecated": {
          "$ref": "#/types/google-native:compute%2Fbeta:DeprecationStatus",
          "description": "The deprecation status associated with this image."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the image when restored onto a persistent disk (in GB)."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this image is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "family": {
          "type": "string",
          "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
        },
        "forceCreate": {
          "type": "boolean",
          "description": "Force image creation if true."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter."
        },
        "imageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this image. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this image."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any applicable license URI."
        },
        "locked": {
          "type": "boolean",
          "description": "A flag for marketplace VM disk created from the image, which is designed for marketplace VM disk to prevent the proprietary data on the disk from being accessed unwantedly. The flag will be inherited by the disk created from the image. The disk with locked flag set to true will be prohibited from performing the operations below: - R/W or R/O disk attach - Disk detach, if disk is created via create-on-create - Create images - Create snapshots - Create disk clone (create disk from the current disk) The image with the locked field set to true will be prohibited from performing the operations below: - Create images from the current image - Update the locked field for the current image The instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Secondary disk attach - Create instant snapshot - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true "
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawDisk": {
          "$ref": "#/types/google-native:compute%2Fbeta:ImageRawDisk",
          "description": "The parameters of the raw disk image."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rolloutOverride": {
          "$ref": "#/types/google-native:compute%2Fbeta:RolloutPolicy",
          "description": "A rollout policy to apply to this image. When specified, the rollout policy overrides per-zone references to the image via the associated image family. The rollout policy restricts the zones where this image is accessible when using a zonal image family reference. When the rollout policy does not include the user specified zone, or if the zone is rolled out, this image is accessible. The rollout policy for this image is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Fbeta:InitialStateConfig",
          "description": "Set the secure boot keys of shielded instance."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceImage": {
          "type": "string",
          "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceType": {
          "$ref": "#/types/google-native:compute%2Fbeta:ImageSourceType",
          "description": "The type of the image used to create this disk. The default and only valid value is RAW."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the image (regional or multi-regional)."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        }
      }
    },
    "google-native:compute/beta:ImageIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:ImageIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:ImageIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:Instance": {
      "description": "Creates an instance resource in the specified project using the data included in the request.",
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Fbeta:AdvancedMachineFeaturesResponse",
          "description": "Controls for advanced machine-related behavior features."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding ."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConfidentialInstanceConfigResponse"
        },
        "cpuPlatform": {
          "type": "string",
          "description": "The CPU platform used by this instance."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the resource should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskResponse"
          },
          "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Fbeta:DisplayDeviceResponse",
          "description": "Enables display device for the instance."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disks restored from source snapshots or source machine image should erase Windows specific VSS signature."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the instance's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update the instance. You must always provide an up-to-date fingerprint hash in order to update the instance. To see the latest fingerprint, make get() request to the instance."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfigResponse"
          },
          "description": "A list of the type and count of accelerator cards attached to the instance."
        },
        "hostname": {
          "type": "string",
          "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS."
        },
        "instanceEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#instance for instances."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for this request, which is essentially a hash of the label's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method."
        },
        "lastStartTimestamp": {
          "type": "string",
          "description": "Last start timestamp in RFC3339 text format."
        },
        "lastStopTimestamp": {
          "type": "string",
          "description": "Last stop timestamp in RFC3339 text format."
        },
        "lastSuspendedTimestamp": {
          "type": "string",
          "description": "Last suspended timestamp in RFC3339 text format."
        },
        "machineType": {
          "type": "string",
          "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:MetadataResponse",
          "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkInterfaceResponse"
          },
          "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkPerformanceConfigResponse"
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "postKeyRevocationActionType": {
          "type": "string",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Fbeta:ReservationAffinityResponse",
          "description": "Specifies the reservations that this instance can consume from."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this instance."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourceStatusResponse",
          "description": "Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fbeta:SchedulingResponse",
          "description": "Sets the scheduling options for this instance."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for this resource."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAccountResponse"
          },
          "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedInstanceConfigResponse"
        },
        "shieldedInstanceIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedInstanceIntegrityPolicyResponse"
        },
        "shieldedVmConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedVmConfigResponse",
          "description": "Deprecating, please use shielded_instance_config."
        },
        "shieldedVmIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedVmIntegrityPolicyResponse",
          "description": "Deprecating, please use shielded_instance_integrity_policy."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies instance template to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        },
        "sourceMachineImage": {
          "type": "string",
          "description": "Specifies the machine image to use to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to a machine image: - https://www.googleapis.com/compute/v1/projects/project/global/global /machineImages/machineImage - projects/project/global/global/machineImages/machineImage - global/machineImages/machineImage "
        },
        "sourceMachineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Source machine image encryption key when creating an instance from a machine image."
        },
        "startRestricted": {
          "type": "boolean",
          "description": "Whether a VM has been restricted for start because Compute Engine has detected suspicious activity."
        },
        "status": {
          "type": "string",
          "description": "The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING, and TERMINATED. For more information about the status of the instance, see Instance life cycle."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fbeta:TagsResponse",
          "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "advancedMachineFeatures",
        "canIpForward",
        "confidentialInstanceConfig",
        "cpuPlatform",
        "creationTimestamp",
        "deletionProtection",
        "description",
        "disks",
        "displayDevice",
        "eraseWindowsVssSignature",
        "fingerprint",
        "guestAccelerators",
        "hostname",
        "instanceEncryptionKey",
        "keyRevocationActionType",
        "kind",
        "labelFingerprint",
        "labels",
        "lastStartTimestamp",
        "lastStopTimestamp",
        "lastSuspendedTimestamp",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "name",
        "networkInterfaces",
        "networkPerformanceConfig",
        "params",
        "postKeyRevocationActionType",
        "privateIpv6GoogleAccess",
        "project",
        "reservationAffinity",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "scheduling",
        "selfLink",
        "serviceAccounts",
        "shieldedInstanceConfig",
        "shieldedInstanceIntegrityPolicy",
        "shieldedVmConfig",
        "shieldedVmIntegrityPolicy",
        "sourceMachineImage",
        "sourceMachineImageEncryptionKey",
        "startRestricted",
        "status",
        "statusMessage",
        "tags",
        "zone"
      ],
      "inputProperties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Fbeta:AdvancedMachineFeatures",
          "description": "Controls for advanced machine-related behavior features."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding ."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConfidentialInstanceConfig"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the resource should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AttachedDisk"
          },
          "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Fbeta:DisplayDevice",
          "description": "Enables display device for the instance."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disks restored from source snapshots or source machine image should erase Windows specific VSS signature."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfig"
          },
          "description": "A list of the type and count of accelerator cards attached to the instance."
        },
        "hostname": {
          "type": "string",
          "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS."
        },
        "instanceEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
        },
        "keyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceKeyRevocationActionType",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method."
        },
        "machineType": {
          "type": "string",
          "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:Metadata",
          "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkInterface"
          },
          "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkPerformanceConfig"
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "postKeyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePostKeyRevocationActionType",
          "description": "PostKeyRevocationActionType of the instance."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePrivateIpv6GoogleAccess",
          "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Fbeta:ReservationAffinity",
          "description": "Specifies the reservations that this instance can consume from."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this instance."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fbeta:Scheduling",
          "description": "Sets the scheduling options for this instance."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAccount"
          },
          "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedInstanceConfig"
        },
        "shieldedInstanceIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedInstanceIntegrityPolicy"
        },
        "shieldedVmConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedVmConfig",
          "description": "Deprecating, please use shielded_instance_config."
        },
        "shieldedVmIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShieldedVmIntegrityPolicy",
          "description": "Deprecating, please use shielded_instance_integrity_policy."
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies instance template to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        },
        "sourceMachineImage": {
          "type": "string",
          "description": "Source machine image"
        },
        "sourceMachineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Source machine image encryption key when creating an instance from a machine image."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fbeta:Tags",
          "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:InstanceGroup": {
      "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance group in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroup for instance groups."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NamedPortResponse"
          },
          "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. "
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the instance group is located (for regional resources)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance group. The server generates this URL."
        },
        "size": {
          "type": "integer",
          "description": "The total number of instances in the instance group."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "namedPorts",
        "network",
        "project",
        "region",
        "selfLink",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NamedPort"
          },
          "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:InstanceGroupManager": {
      "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, instances in the group are created using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method. A managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
      "properties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAllInstancesConfigResponse",
          "description": "Specifies configuration that overrides the instance template configuration for the group."
        },
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAutoHealingPolicyResponse"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this managed instance group in RFC3339 text format."
        },
        "currentActions": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerActionsSummaryResponse",
          "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicyResponse",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "failoverAction": {
          "type": "string",
          "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceFlexibilityPolicyResponse",
          "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
        },
        "instanceGroup": {
          "type": "string",
          "description": "The URL of the Instance Group resource."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceLifecyclePolicyResponse",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups."
        },
        "listManagedInstancesResults": {
          "type": "string",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NamedPortResponse"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the managed instance group resides (for regional resources)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this managed instance group. The server defines this URL."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
        },
        "standbyPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStandbyPolicyResponse",
          "description": "Standby policy for stopped and suspended instances."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:StatefulPolicyResponse",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStatusResponse",
          "description": "The status of this managed instance group."
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "targetStoppedSize": {
          "type": "integer",
          "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. "
        },
        "targetSuspendedSize": {
          "type": "integer",
          "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. "
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyResponse",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerVersionResponse"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "allInstancesConfig",
        "autoHealingPolicies",
        "baseInstanceName",
        "creationTimestamp",
        "currentActions",
        "description",
        "distributionPolicy",
        "failoverAction",
        "fingerprint",
        "instanceFlexibilityPolicy",
        "instanceGroup",
        "instanceLifecyclePolicy",
        "instanceTemplate",
        "kind",
        "listManagedInstancesResults",
        "name",
        "namedPorts",
        "project",
        "region",
        "selfLink",
        "serviceAccount",
        "standbyPolicy",
        "statefulPolicy",
        "status",
        "targetPools",
        "targetSize",
        "targetStoppedSize",
        "targetSuspendedSize",
        "updatePolicy",
        "versions",
        "zone"
      ],
      "inputProperties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAllInstancesConfig",
          "description": "Specifies configuration that overrides the instance template configuration for the group."
        },
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAutoHealingPolicy"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicy",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "failoverAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerFailoverAction",
          "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceFlexibilityPolicy",
          "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceLifecyclePolicy",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "listManagedInstancesResults": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerListManagedInstancesResults",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NamedPort"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
        },
        "standbyPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStandbyPolicy",
          "description": "Standby policy for stopped and suspended instances."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:StatefulPolicy",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "targetStoppedSize": {
          "type": "integer",
          "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. "
        },
        "targetSuspendedSize": {
          "type": "integer",
          "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. "
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicy",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerVersion"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:InstanceGroupManagerResizeRequest": {
      "description": "Creates a new resize request that starts provisioning VMs immediately or queues VM creation.",
      "properties": {
        "count": {
          "type": "integer",
          "description": "The count of instances to create as part of this resize request."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this resize request in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "instanceGroupManager": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroupManagerResizeRequest for resize requests."
        },
        "name": {
          "type": "string",
          "description": "The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedRunDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted."
        },
        "resizeBy": {
          "type": "integer",
          "description": "The number of instances to be created by this resize request. The group's target size will be increased by this number."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this resize request. The server defines this URL."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "state": {
          "type": "string",
          "description": "[Output only] Current state of the request."
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerResizeRequestStatusResponse",
          "description": "[Output only] Status of the request."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "count",
        "creationTimestamp",
        "description",
        "instanceGroupManager",
        "kind",
        "name",
        "project",
        "requestedRunDuration",
        "resizeBy",
        "selfLink",
        "selfLinkWithId",
        "state",
        "status",
        "zone"
      ],
      "inputProperties": {
        "count": {
          "type": "integer",
          "description": "The count of instances to create as part of this resize request."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "instanceGroupManager": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedRunDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted."
        },
        "resizeBy": {
          "type": "integer",
          "description": "The number of instances to be created by this resize request. The group's target size will be increased by this number."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instanceGroupManager"
      ]
    },
    "google-native:compute/beta:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:InstanceTemplate": {
      "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance template in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceTemplate for instance templates."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesResponse",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the instance template resides. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance template. The server defines this URL."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Fbeta:SourceInstanceParamsResponse",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "properties",
        "region",
        "selfLink",
        "sourceInstance",
        "sourceInstanceParams"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceProperties",
          "description": "The instance properties for this instance template."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Fbeta:SourceInstanceParams",
          "description": "The source instance params to use to create this instance template."
        }
      }
    },
    "google-native:compute/beta:InstanceTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:InstanceTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:InstanceTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:InstantSnapshot": {
      "description": "Creates an instant snapshot in the specified zone.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the instant snapshot. Valid values are ARM64 or X86_64."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the source disk, specified in GB."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#instantSnapshot for InstantSnapshot resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this InstantSnapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a InstantSnapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstantSnapshotResourceStatusResponse",
          "description": "Status information for the instant snapshot resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this InstantSnapshot. This value may be used to determine whether the InstantSnapshot was taken from the current or a previous instance of a given disk name."
        },
        "status": {
          "type": "string",
          "description": "The status of the instantSnapshot. This can be CREATING, DELETING, FAILED, or READY."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "creationTimestamp",
        "description",
        "diskSizeGb",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "region",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "sourceDisk",
        "sourceDiskId",
        "status",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:InstantSnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:InstantSnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:InstantSnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:Interconnect": {
      "description": "Creates an Interconnect in the specified project using the data included in the request.",
      "properties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
        },
        "availableFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] List of features available for this Interconnect connection, which can take one of the following values: - MACSEC If present then the Interconnect connection is provisioned on MACsec capable hardware ports. If not present then the Interconnect connection is provisioned on non-MACsec capable ports and MACsec isn't supported and enabling MACsec fails."
        },
        "circuitInfos": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectCircuitInfoResponse"
          },
          "description": "A list of CircuitInfo objects, that describe the individual circuits in this LAG."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customerName": {
          "type": "string",
          "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expectedOutages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectOutageNotificationResponse"
          },
          "description": "A list of outages expected for this Interconnect."
        },
        "googleIpAddress": {
          "type": "string",
          "description": "IP address configured on the Google side of the Interconnect link. This can be used only for ping tests."
        },
        "googleReferenceId": {
          "type": "string",
          "description": "Google reference ID to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
        },
        "interconnectAttachments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the URLs of all InterconnectAttachments configured to use this Interconnect."
        },
        "interconnectType": {
          "type": "string",
          "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#interconnect for interconnects."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Interconnect."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "linkType": {
          "type": "string",
          "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle."
        },
        "location": {
          "type": "string",
          "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
        },
        "macsec": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectMacsecResponse",
          "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
        },
        "macsecEnabled": {
          "type": "boolean",
          "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nocContactEmail": {
          "type": "string",
          "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation."
        },
        "operationalStatus": {
          "type": "string",
          "description": "The current status of this Interconnect's functionality, which can take one of the following values: - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. "
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedLinkCount": {
          "type": "integer",
          "description": "Number of links actually provisioned in this interconnect."
        },
        "remoteLocation": {
          "type": "string",
          "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH."
        },
        "requestedLinkCount": {
          "type": "integer",
          "description": "Target number of physical links in the link bundle, as requested by the customer."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "state": {
          "type": "string",
          "description": "The current state of Interconnect functionality, which can take one of the following values: - ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. - UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. - UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. "
        }
      },
      "type": "object",
      "required": [
        "adminEnabled",
        "availableFeatures",
        "circuitInfos",
        "creationTimestamp",
        "customerName",
        "description",
        "expectedOutages",
        "googleIpAddress",
        "googleReferenceId",
        "interconnectAttachments",
        "interconnectType",
        "kind",
        "labelFingerprint",
        "labels",
        "linkType",
        "location",
        "macsec",
        "macsecEnabled",
        "name",
        "nocContactEmail",
        "operationalStatus",
        "peerIpAddress",
        "project",
        "provisionedLinkCount",
        "remoteLocation",
        "requestedFeatures",
        "requestedLinkCount",
        "satisfiesPzs",
        "selfLink",
        "state"
      ],
      "inputProperties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
        },
        "customerName": {
          "type": "string",
          "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interconnectType": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectInterconnectType",
          "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "linkType": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectLinkType",
          "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle."
        },
        "location": {
          "type": "string",
          "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
        },
        "macsec": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectMacsec",
          "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
        },
        "macsecEnabled": {
          "type": "boolean",
          "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nocContactEmail": {
          "type": "string",
          "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteLocation": {
          "type": "string",
          "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectRequestedFeaturesItem"
          },
          "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH."
        },
        "requestedLinkCount": {
          "type": "integer",
          "description": "Target number of physical links in the link bundle, as requested by the customer."
        }
      }
    },
    "google-native:compute/beta:InterconnectAttachment": {
      "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
      "properties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER."
        },
        "bandwidth": {
          "type": "string",
          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s "
        },
        "candidateIpv6Subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is not available."
        },
        "candidateSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space."
        },
        "cloudRouterIpAddress": {
          "type": "string",
          "description": "IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
        },
        "cloudRouterIpv6Address": {
          "type": "string",
          "description": "IPv6 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
        },
        "cloudRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "configurationConstraints": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentConfigurationConstraintsResponse",
          "description": "Constraints for this attachment, if any. The attachment does not work if these constraints are not met."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customerRouterIpAddress": {
          "type": "string",
          "description": "IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
        },
        "customerRouterIpv6Address": {
          "type": "string",
          "description": "IPv6 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
        },
        "customerRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "dataplaneVersion": {
          "type": "integer",
          "description": "Dataplane version for this InterconnectAttachment. This field is only present for Dataplane version 2 and higher. Absence of this field in the API output indicates that the Dataplane is version 1."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "edgeAvailabilityDomain": {
          "type": "string",
          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY."
        },
        "encryption": {
          "type": "string",
          "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. "
        },
        "googleReferenceId": {
          "type": "string",
          "description": "Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
          "deprecationMessage": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used."
        },
        "interconnect": {
          "type": "string",
          "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
        },
        "ipsecInternalAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#interconnectAttachment for interconnect attachments."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "operationalStatus": {
          "type": "string",
          "description": "The current status of whether or not this interconnect attachment is functional, which can take one of the following values: - OS_ACTIVE: The attachment has been turned up and is ready to use. - OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. "
        },
        "pairingKey": {
          "type": "string",
          "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\""
        },
        "partnerAsn": {
          "type": "string",
          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "partnerMetadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentPartnerMetadataResponse",
          "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "privateInterconnectInfo": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentPrivateInfoResponse",
          "description": "Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteService": {
          "type": "string",
          "description": "If the attachment is on a Cross-Cloud Interconnect connection, this field contains the interconnect's remote location service provider. Example values: \"Amazon Web Services\" \"Microsoft Azure\". The field is set only for attachments on Cross-Cloud Interconnect connections. Its value is copied from the InterconnectRemoteLocation remoteService field."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations."
        },
        "state": {
          "type": "string",
          "description": "The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: - ACTIVE: The attachment has been turned up and is ready to use. - UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. - PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. - DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted. "
        },
        "subnetLength": {
          "type": "integer",
          "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. "
        },
        "type": {
          "type": "string",
          "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. "
        },
        "vlanTag8021q": {
          "type": "integer",
          "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time."
        }
      },
      "type": "object",
      "required": [
        "adminEnabled",
        "bandwidth",
        "candidateIpv6Subnets",
        "candidateSubnets",
        "cloudRouterIpAddress",
        "cloudRouterIpv6Address",
        "cloudRouterIpv6InterfaceId",
        "configurationConstraints",
        "creationTimestamp",
        "customerRouterIpAddress",
        "customerRouterIpv6Address",
        "customerRouterIpv6InterfaceId",
        "dataplaneVersion",
        "description",
        "edgeAvailabilityDomain",
        "encryption",
        "googleReferenceId",
        "interconnect",
        "ipsecInternalAddresses",
        "kind",
        "labelFingerprint",
        "labels",
        "mtu",
        "name",
        "operationalStatus",
        "pairingKey",
        "partnerAsn",
        "partnerMetadata",
        "privateInterconnectInfo",
        "project",
        "region",
        "remoteService",
        "router",
        "satisfiesPzs",
        "selfLink",
        "stackType",
        "state",
        "subnetLength",
        "type",
        "vlanTag8021q"
      ],
      "inputProperties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER."
        },
        "bandwidth": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentBandwidth",
          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s "
        },
        "candidateIpv6Subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is not available."
        },
        "candidateSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space."
        },
        "cloudRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "customerRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "edgeAvailabilityDomain": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentEdgeAvailabilityDomain",
          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY."
        },
        "encryption": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentEncryption",
          "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. "
        },
        "interconnect": {
          "type": "string",
          "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
        },
        "ipsecInternalAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pairingKey": {
          "type": "string",
          "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\""
        },
        "partnerAsn": {
          "type": "string",
          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "partnerMetadata": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentPartnerMetadata",
          "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentStackType",
          "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations."
        },
        "subnetLength": {
          "type": "integer",
          "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. "
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentType",
          "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. "
        },
        "vlanTag8021q": {
          "type": "integer",
          "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:License": {
      "description": "Create a License resource in the specified project. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "chargesUseFee": {
          "type": "boolean",
          "description": "Deprecated. This field no longer reflects whether a license charges a usage fee.",
          "deprecationMessage": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#license for licenses."
        },
        "licenseCode": {
          "type": "string",
          "description": "The unique code used to attach this license to images, snapshots, and disks."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceRequirements": {
          "$ref": "#/types/google-native:compute%2Fbeta:LicenseResourceRequirementsResponse"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "transferable": {
          "type": "boolean",
          "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk."
        }
      },
      "type": "object",
      "required": [
        "chargesUseFee",
        "creationTimestamp",
        "description",
        "kind",
        "licenseCode",
        "name",
        "project",
        "resourceRequirements",
        "selfLink",
        "transferable"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceRequirements": {
          "$ref": "#/types/google-native:compute%2Fbeta:LicenseResourceRequirements"
        },
        "transferable": {
          "type": "boolean",
          "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk."
        }
      }
    },
    "google-native:compute/beta:LicenseIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:LicenseIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:LicenseIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. \nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:MachineImage": {
      "description": "Creates a machine image in the specified project using the data that is included in the request. If you are creating a new machine image to update an existing instance, your new machine image should use the same network or, if applicable, the same subnetwork as the original instance.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this machine image in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesResponse",
          "description": "Properties of source instance"
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#machineImage for machine image."
        },
        "machineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "savedDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SavedDiskResponse"
          },
          "description": "An array of Machine Image specific properties for disks attached to the source instance"
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this machine image. The server defines this URL."
        },
        "sourceDiskEncryptionKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SourceDiskEncryptionKeyResponse"
          },
          "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceInstance": {
          "type": "string",
          "description": "Required. Source instance that is used to create the machine image from.",
          "replaceOnChanges": true
        },
        "sourceInstanceProperties": {
          "$ref": "#/types/google-native:compute%2Fbeta:SourceInstancePropertiesResponse",
          "description": "DEPRECATED: Please use instance_properties instead for source instance related properties. New properties will not be added to this field."
        },
        "status": {
          "type": "string",
          "description": "The status of the machine image. One of the following values: INVALID, CREATING, READY, DELETING, and UPLOADING."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored."
        },
        "totalStorageBytes": {
          "type": "string",
          "description": "Total size of the storage used by the machine image."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "guestFlush",
        "instanceProperties",
        "kind",
        "machineImageEncryptionKey",
        "name",
        "project",
        "satisfiesPzs",
        "savedDisks",
        "selfLink",
        "sourceDiskEncryptionKeys",
        "sourceInstance",
        "sourceInstanceProperties",
        "status",
        "storageLocations",
        "totalStorageBytes"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process."
        },
        "machineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "savedDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SavedDisk"
          },
          "description": "An array of Machine Image specific properties for disks attached to the source instance"
        },
        "sourceDiskEncryptionKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SourceDiskEncryptionKey"
          },
          "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the machine image. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored."
        }
      },
      "requiredInputs": [
        "sourceInstance"
      ]
    },
    "google-native:compute/beta:MachineImageIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:MachineImageIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:MachineImageIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:Network": {
      "description": "Creates a network in the specified project using the data included in the request.",
      "properties": {
        "autoCreateSubnetworks": {
          "type": "boolean",
          "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "enableUlaInternalIpv6": {
          "type": "boolean",
          "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. ."
        },
        "firewallPolicy": {
          "type": "string",
          "description": "URL of the firewall policy the network is associated with."
        },
        "gatewayIPv4": {
          "type": "string",
          "description": "The gateway address for default routing out of the network, selected by Google Cloud."
        },
        "internalIpv6Range": {
          "type": "string",
          "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. ."
        },
        "ipv4Range": {
          "type": "string",
          "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
          "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#network for networks."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "networkFirewallPolicyEnforcementOrder": {
          "type": "string",
          "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified."
        },
        "peerings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkPeeringResponse"
          },
          "description": "A list of network peerings for the resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routingConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkRoutingConfigResponse",
          "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Server-defined fully-qualified URLs for all subnetworks in this VPC network."
        }
      },
      "type": "object",
      "required": [
        "autoCreateSubnetworks",
        "creationTimestamp",
        "description",
        "enableUlaInternalIpv6",
        "firewallPolicy",
        "gatewayIPv4",
        "internalIpv6Range",
        "ipv4Range",
        "kind",
        "mtu",
        "name",
        "networkFirewallPolicyEnforcementOrder",
        "peerings",
        "project",
        "routingConfig",
        "selfLink",
        "selfLinkWithId",
        "subnetworks"
      ],
      "inputProperties": {
        "autoCreateSubnetworks": {
          "type": "boolean",
          "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "enableUlaInternalIpv6": {
          "type": "boolean",
          "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. ."
        },
        "internalIpv6Range": {
          "type": "string",
          "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. ."
        },
        "ipv4Range": {
          "type": "string",
          "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
          "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "networkFirewallPolicyEnforcementOrder": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkNetworkFirewallPolicyEnforcementOrder",
          "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routingConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkRoutingConfig",
          "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
        }
      }
    },
    "google-native:compute/beta:NetworkAttachment": {
      "description": "Creates a NetworkAttachment in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "connectionEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkAttachmentConnectedEndpointResponse"
          },
          "description": "An array of connections for all the producers connected to this network attachment."
        },
        "connectionPreference": {
          "type": "string"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. An up-to-date fingerprint must be provided in order to patch."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network which the Network Attachment belongs to. Practically it is inferred by fetching the network of the first subnetwork associated. Because it is required that all the subnetworks must be from the same network, it is assured that the Network Attachment belongs to the same network as all the subnetworks."
        },
        "producerAcceptLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "producerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000). end_interface: MixerMutationRequestBuilder"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment."
        }
      },
      "type": "object",
      "required": [
        "connectionEndpoints",
        "connectionPreference",
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "network",
        "producerAcceptLists",
        "producerRejectLists",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "subnetworks"
      ],
      "inputProperties": {
        "connectionPreference": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkAttachmentConnectionPreference"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "producerAcceptLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "producerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000). end_interface: MixerMutationRequestBuilder"
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:NetworkAttachmentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:NetworkAttachmentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:NetworkAttachmentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:NetworkEdgeSecurityService": {
      "description": "Creates a new service in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a NetworkEdgeSecurityService. An up-to-date fingerprint must be provided in order to update the NetworkEdgeSecurityService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a NetworkEdgeSecurityService."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#networkEdgeSecurityService for NetworkEdgeSecurityServices"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the network edge security service associated with this network edge security service."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "project",
        "region",
        "securityPolicy",
        "selfLink",
        "selfLinkWithId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the network edge security service associated with this network edge security service."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:NetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the network endpoint group is located."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeploymentResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "loadBalancer",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "serverlessDeployment",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroup",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeployment",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:NetworkFirewallPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "project",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      }
    },
    "google-native:compute/beta:NetworkFirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:NetworkFirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:NetworkFirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:NodeGroup": {
      "description": "Creates a NodeGroup resource in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupAutoscalingPolicyResponse",
          "description": "Specifies how autoscaling should behave."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string"
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "Initial count of nodes in the node group.",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#nodeGroup for node group."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate."
        },
        "maintenanceInterval": {
          "type": "string",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `AS_NEEDED` and `RECURRENT`."
        },
        "maintenancePolicy": {
          "type": "string",
          "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupMaintenanceWindowResponse"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeTemplate": {
          "type": "string",
          "description": "URL of the node template to create the node group from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsResponse",
          "description": "Share-settings for the node group"
        },
        "size": {
          "type": "integer",
          "description": "The total number of nodes in the node group."
        },
        "status": {
          "type": "string"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "fingerprint",
        "initialNodeCount",
        "kind",
        "locationHint",
        "maintenanceInterval",
        "maintenancePolicy",
        "maintenanceWindow",
        "name",
        "nodeTemplate",
        "project",
        "selfLink",
        "shareSettings",
        "size",
        "status",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupAutoscalingPolicy",
          "description": "Specifies how autoscaling should behave."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "Initial count of nodes in the node group.",
          "replaceOnChanges": true
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate."
        },
        "maintenanceInterval": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupMaintenanceInterval",
          "description": "Specifies the frequency of planned maintenance events. The accepted values are: `AS_NEEDED` and `RECURRENT`."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupMaintenancePolicy",
          "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupMaintenanceWindow"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeTemplate": {
          "type": "string",
          "description": "URL of the node template to create the node group from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettings",
          "description": "Share-settings for the node group"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "initialNodeCount"
      ]
    },
    "google-native:compute/beta:NodeGroupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:NodeGroupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:NodeGroupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:NodeTemplate": {
      "description": "Creates a NodeTemplate resource in the specified project using the data included in the request.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfigResponse"
          }
        },
        "cpuOvercommitType": {
          "type": "string",
          "description": "CPU overcommit."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:LocalDiskResponse"
          }
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#nodeTemplate for node templates."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeAffinityLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to use for node affinity, which will be used in instance scheduling."
        },
        "nodeType": {
          "type": "string",
          "description": "The node type to use for nodes group that are created from this template."
        },
        "nodeTypeFlexibility": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeTemplateNodeTypeFlexibilityResponse",
          "description": "Do not use. Instead, use the node_type property."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverBinding": {
          "$ref": "#/types/google-native:compute%2Fbeta:ServerBindingResponse",
          "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
        },
        "status": {
          "type": "string",
          "description": "The status of the node template. One of the following values: CREATING, READY, and DELETING."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "cpuOvercommitType",
        "creationTimestamp",
        "description",
        "disks",
        "kind",
        "name",
        "nodeAffinityLabels",
        "nodeType",
        "nodeTypeFlexibility",
        "project",
        "region",
        "selfLink",
        "serverBinding",
        "status",
        "statusMessage"
      ],
      "inputProperties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfig"
          }
        },
        "cpuOvercommitType": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeTemplateCpuOvercommitType",
          "description": "CPU overcommit."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:LocalDisk"
          }
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeAffinityLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to use for node affinity, which will be used in instance scheduling."
        },
        "nodeType": {
          "type": "string",
          "description": "The node type to use for nodes group that are created from this template."
        },
        "nodeTypeFlexibility": {
          "$ref": "#/types/google-native:compute%2Fbeta:NodeTemplateNodeTypeFlexibility",
          "description": "Do not use. Instead, use the node_type property."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverBinding": {
          "$ref": "#/types/google-native:compute%2Fbeta:ServerBinding",
          "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:NodeTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:NodeTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:NodeTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:OrganizationSecurityPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigResponse"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigResponse"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies"
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the security policy."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfigResponse"
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "type": {
          "type": "string",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedFieldResponse"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "type": "object",
      "required": [
        "adaptiveProtectionConfig",
        "advancedOptionsConfig",
        "associations",
        "creationTimestamp",
        "ddosProtectionConfig",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "parent",
        "recaptchaOptionsConfig",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "type",
        "userDefinedFields"
      ],
      "inputProperties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfig"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfig"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociation"
          },
          "description": "A list of associations that belong to this policy."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfig"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfig"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:OrganizationSecurityPolicyType",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedField"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      }
    },
    "google-native:compute/beta:PacketMirroring": {
      "description": "Creates a PacketMirroring resource in the specified project and region using the data included in the request.",
      "properties": {
        "collectorIlb": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringForwardingRuleInfoResponse",
          "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enable": {
          "type": "string",
          "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringFilterResponse",
          "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#packetMirroring for packet mirrorings."
        },
        "mirroredResources": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringMirroredResourceInfoResponse",
          "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringNetworkInfoResponse",
          "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "collectorIlb",
        "creationTimestamp",
        "description",
        "enable",
        "filter",
        "kind",
        "mirroredResources",
        "name",
        "network",
        "priority",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "collectorIlb": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringForwardingRuleInfo",
          "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enable": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringEnable",
          "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringFilter",
          "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
        },
        "mirroredResources": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringMirroredResourceInfo",
          "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringNetworkInfo",
          "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:PublicAdvertisedPrefix": {
      "description": "Creates a PublicAdvertisedPrefix in the specified project using the parameters that are included in the request.",
      "properties": {
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "dnsVerificationIp": {
          "type": "string",
          "description": "The address to be used for reverse DNS verification."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicAdvertisedPrefix. An up-to-date fingerprint must be provided in order to update the PublicAdvertisedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicAdvertisedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The address range, in CIDR format, represented by this public advertised prefix."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicAdvertisedPrefix for public advertised prefixes."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pdpScope": {
          "type": "string",
          "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PublicAdvertisedPrefixPublicDelegatedPrefixResponse"
          },
          "description": "The list of public delegated prefixes that exist for this public advertised prefix."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sharedSecret": {
          "type": "string",
          "description": "The shared secret to be used for reverse DNS verification."
        },
        "status": {
          "type": "string",
          "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. "
        }
      },
      "type": "object",
      "required": [
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "dnsVerificationIp",
        "fingerprint",
        "ipCidrRange",
        "kind",
        "name",
        "pdpScope",
        "project",
        "publicDelegatedPrefixs",
        "selfLink",
        "sharedSecret",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "dnsVerificationIp": {
          "type": "string",
          "description": "The address to be used for reverse DNS verification."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The address range, in CIDR format, represented by this public advertised prefix."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pdpScope": {
          "$ref": "#/types/google-native:compute%2Fbeta:PublicAdvertisedPrefixPdpScope",
          "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Fbeta:PublicAdvertisedPrefixStatus",
          "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. "
        }
      }
    },
    "google-native:compute/beta:PublicDelegatedPrefix": {
      "description": "Creates a PublicDelegatedPrefix in the specified project in the given region using the parameters that are included in the request.",
      "properties": {
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. "
        }
      },
      "type": "object",
      "required": [
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipCidrRange",
        "isLiveMigration",
        "kind",
        "name",
        "parentPrefix",
        "project",
        "publicDelegatedSubPrefixs",
        "region",
        "selfLink",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PublicDelegatedPrefixPublicDelegatedSubPrefix"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionAutoscaler": {
      "description": "Creates an autoscaler in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyResponse",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#autoscaler for autoscalers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendedSize": {
          "type": "integer",
          "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "scalingScheduleStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information of existing scaling schedules."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future."
        },
        "statusDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AutoscalerStatusDetailsResponse"
          },
          "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope)."
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "recommendedSize",
        "region",
        "scalingScheduleStatus",
        "selfLink",
        "status",
        "statusDetails",
        "target",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicy",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionBackendService": {
      "description": "Creates a regional BackendService resource in the specified project using the data included in the request. For more information, see Backend services overview.",
      "properties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendResponse"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Fbeta:CircuitBreakersResponse"
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConnectionDrainingResponse"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceConnectionTrackingPolicyResponse",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConsistentHashLoadBalancerSettingsResponse",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend service."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceFailoverPolicyResponse",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceIAPResponse",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "ipAddressSelectionPolicy": {
          "type": "string",
          "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). "
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#backendService for backend services."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "type": "string",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLogConfigResponse",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Fbeta:OutlierDetectionResponse",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this backend service."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecuritySettingsResponse",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "serviceLbPolicy": {
          "type": "string",
          "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubsettingResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceUsedByResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "affinityCookieTtlSec",
        "backends",
        "cdnPolicy",
        "circuitBreakers",
        "compressionMode",
        "connectionDraining",
        "connectionTrackingPolicy",
        "consistentHash",
        "creationTimestamp",
        "customRequestHeaders",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCDN",
        "failoverPolicy",
        "fingerprint",
        "healthChecks",
        "iap",
        "ipAddressSelectionPolicy",
        "kind",
        "loadBalancingScheme",
        "localityLbPolicies",
        "localityLbPolicy",
        "logConfig",
        "maxStreamDuration",
        "metadatas",
        "name",
        "network",
        "outlierDetection",
        "port",
        "portName",
        "project",
        "protocol",
        "region",
        "securityPolicy",
        "securitySettings",
        "selfLink",
        "serviceBindings",
        "serviceLbPolicy",
        "sessionAffinity",
        "subsetting",
        "timeoutSec",
        "usedBy"
      ],
      "inputProperties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Backend"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicy",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Fbeta:CircuitBreakers"
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionBackendServiceCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConnectionDraining"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceConnectionTrackingPolicy",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Fbeta:ConsistentHashLoadBalancerSettings",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceFailoverPolicy",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceIAP",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "ipAddressSelectionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionBackendServiceIpAddressSelectionPolicy",
          "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). "
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionBackendServiceLoadBalancingScheme",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfig"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionBackendServiceLocalityLbPolicy",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLogConfig",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Fbeta:OutlierDetection",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionBackendServiceProtocol",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecuritySettings",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "serviceLbPolicy": {
          "type": "string",
          "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionBackendServiceSessionAffinity",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Fbeta:Subsetting"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceUsedBy"
          }
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionBackendServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:RegionBackendServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:RegionBackendServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:RegionCommitment": {
      "description": "Creates a commitment in the specified project using the data included in the request.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "autoRenew": {
          "type": "boolean",
          "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment."
        },
        "category": {
          "type": "string",
          "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "endTimestamp": {
          "type": "string",
          "description": "Commitment end time in RFC3339 text format."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#commitment for commitments."
        },
        "licenseResource": {
          "$ref": "#/types/google-native:compute%2Fbeta:LicenseResourceCommitmentResponse",
          "description": "The license specification required as part of a license commitment."
        },
        "mergeSourceCommitments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of source commitments to be merged into a new commitment."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "plan": {
          "type": "string",
          "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ReservationResponse"
          },
          "description": "List of create-on-create reseravtions for this commitment."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourceCommitmentResponse"
          },
          "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "splitSourceCommitment": {
          "type": "string",
          "description": "Source commitment to be split into a new commitment."
        },
        "startTimestamp": {
          "type": "string",
          "description": "Commitment start time in RFC3339 text format."
        },
        "status": {
          "type": "string",
          "description": "Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        },
        "type": {
          "type": "string",
          "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines."
        }
      },
      "type": "object",
      "required": [
        "autoRenew",
        "category",
        "creationTimestamp",
        "description",
        "endTimestamp",
        "kind",
        "licenseResource",
        "mergeSourceCommitments",
        "name",
        "plan",
        "project",
        "region",
        "reservations",
        "resources",
        "selfLink",
        "splitSourceCommitment",
        "startTimestamp",
        "status",
        "statusMessage",
        "type"
      ],
      "inputProperties": {
        "autoRenew": {
          "type": "boolean",
          "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment."
        },
        "category": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionCommitmentCategory",
          "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "licenseResource": {
          "$ref": "#/types/google-native:compute%2Fbeta:LicenseResourceCommitment",
          "description": "The license specification required as part of a license commitment."
        },
        "mergeSourceCommitments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of source commitments to be merged into a new commitment."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "plan": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionCommitmentPlan",
          "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Reservation"
          },
          "description": "List of create-on-create reseravtions for this commitment."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourceCommitment"
          },
          "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together."
        },
        "splitSourceCommitment": {
          "type": "string",
          "description": "Source commitment to be split into a new commitment."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionCommitmentType",
          "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionDisk": {
      "description": "Creates a persistent regional disk in the specified project using the data included in the request.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskAsyncReplicationResponse",
          "description": "Disk asynchronously replicated into this disk."
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of disks this disk is asynchronously replicated to."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "interface": {
          "type": "string",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#disk for disks."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "lastAttachTimestamp": {
          "type": "string",
          "description": "Last attach timestamp in RFC3339 text format."
        },
        "lastDetachTimestamp": {
          "type": "string",
          "description": "Last detach timestamp in RFC3339 text format."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "locked": {
          "type": "boolean",
          "description": "The field indicates if the disk is created from a locked source image. Attachment of a disk created from a locked source image will cause the following operations to become irreversibly prohibited: - R/W or R/O disk attachment to any other instance - Disk detachment. And the disk can only be deleted when the instance is deleted - Creation of images or snapshots - Disk cloning Furthermore, the instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Further attachment of secondary disks. - Detachment of any disks - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true for locked disks - Attach a locked disk with --auto-delete parameter set to false "
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskResourceStatusResponse",
          "description": "Status information for the disk resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceConsistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceConsistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used."
        },
        "sourceImage": {
          "type": "string",
          "description": "Source image to restore onto a disk. This field is optional."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotId": {
          "type": "string",
          "description": "The unique ID of the instant snapshot used to create this disk. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact version of the instant snapshot that was used."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "status": {
          "type": "string",
          "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. "
        },
        "storageType": {
          "type": "string",
          "description": "[Deprecated] Storage type of the persistent disk.",
          "deprecationMessage": "[Deprecated] Storage type of the persistent disk."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance"
        },
        "zone": {
          "type": "string",
          "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "asyncPrimaryDisk",
        "asyncSecondaryDisks",
        "creationTimestamp",
        "description",
        "diskEncryptionKey",
        "enableConfidentialCompute",
        "eraseWindowsVssSignature",
        "guestOsFeatures",
        "interface",
        "kind",
        "labelFingerprint",
        "labels",
        "lastAttachTimestamp",
        "lastDetachTimestamp",
        "licenseCodes",
        "licenses",
        "locationHint",
        "locked",
        "multiWriter",
        "name",
        "options",
        "params",
        "physicalBlockSizeBytes",
        "project",
        "provisionedIops",
        "provisionedThroughput",
        "region",
        "replicaZones",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "sizeGb",
        "sourceConsistencyGroupPolicy",
        "sourceConsistencyGroupPolicyId",
        "sourceDisk",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceInstantSnapshot",
        "sourceInstantSnapshotId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceStorageObject",
        "status",
        "storageType",
        "type",
        "userLicenses",
        "users",
        "zone"
      ],
      "inputProperties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionDiskArchitecture",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskAsyncReplication",
          "description": "Disk asynchronously replicated into this disk."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this disk is using confidential compute mode."
        },
        "eraseWindowsVssSignature": {
          "type": "boolean",
          "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "interface": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionDiskInterface",
          "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
          "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "multiWriter": {
          "type": "boolean",
          "description": "Indicates whether or not the disk can be read/write attached to more than one instance."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fbeta:DiskParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "storageType": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionDiskStorageType",
          "description": "[Deprecated] Storage type of the persistent disk.",
          "deprecationMessage": "[Deprecated] Storage type of the persistent disk."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionDiskIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:RegionDiskIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:RegionDiskIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:RegionHealthCheck": {
      "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in 3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:GRPCHealthCheckResponse"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTP2HealthCheckResponse"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPHealthCheckResponse"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPSHealthCheckResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:HealthCheckLogConfigResponse",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:SSLHealthCheckResponse"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:TCPHealthCheckResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "grpcHealthCheck",
        "healthyThreshold",
        "http2HealthCheck",
        "httpHealthCheck",
        "httpsHealthCheck",
        "kind",
        "logConfig",
        "name",
        "project",
        "region",
        "selfLink",
        "sslHealthCheck",
        "tcpHealthCheck",
        "timeoutSec",
        "type",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:GRPCHealthCheck"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTP2HealthCheck"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPHealthCheck"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:HTTPSHealthCheck"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:HealthCheckLogConfig",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:SSLHealthCheck"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fbeta:TCPHealthCheck"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionHealthCheckType",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionHealthCheckService": {
      "description": "Creates a regional HealthCheckService resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a HealthCheckService. An up-to-date fingerprint must be provided in order to patch/update the HealthCheckService; Otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the HealthCheckService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups."
        },
        "healthStatusAggregationPolicy": {
          "type": "string",
          "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService."
        },
        "healthStatusAggregationStrategy": {
          "type": "string",
          "description": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
          "deprecationMessage": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. ."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#healthCheckServicefor health check services."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkEndpointGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT."
        },
        "notificationEndpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "healthChecks",
        "healthStatusAggregationPolicy",
        "healthStatusAggregationStrategy",
        "kind",
        "name",
        "networkEndpointGroups",
        "notificationEndpoints",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups."
        },
        "healthStatusAggregationPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionHealthCheckServiceHealthStatusAggregationPolicy",
          "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService."
        },
        "healthStatusAggregationStrategy": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionHealthCheckServiceHealthStatusAggregationStrategy",
          "description": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
          "deprecationMessage": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. ."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkEndpointGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT."
        },
        "notificationEndpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionInstanceGroupManager": {
      "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, instances in the group are created using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method. A regional managed instance group can contain up to 2000 instances.",
      "properties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAllInstancesConfigResponse",
          "description": "Specifies configuration that overrides the instance template configuration for the group."
        },
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAutoHealingPolicyResponse"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this managed instance group in RFC3339 text format."
        },
        "currentActions": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerActionsSummaryResponse",
          "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicyResponse",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "failoverAction": {
          "type": "string",
          "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceFlexibilityPolicyResponse",
          "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
        },
        "instanceGroup": {
          "type": "string",
          "description": "The URL of the Instance Group resource."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceLifecyclePolicyResponse",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups."
        },
        "listManagedInstancesResults": {
          "type": "string",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NamedPortResponse"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this managed instance group. The server defines this URL."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
        },
        "standbyPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStandbyPolicyResponse",
          "description": "Standby policy for stopped and suspended instances."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:StatefulPolicyResponse",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStatusResponse",
          "description": "The status of this managed instance group."
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "targetStoppedSize": {
          "type": "integer",
          "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. "
        },
        "targetSuspendedSize": {
          "type": "integer",
          "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. "
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyResponse",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerVersionResponse"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "description": "The URL of a zone where the managed instance group is located (for zonal resources)."
        }
      },
      "type": "object",
      "required": [
        "allInstancesConfig",
        "autoHealingPolicies",
        "baseInstanceName",
        "creationTimestamp",
        "currentActions",
        "description",
        "distributionPolicy",
        "failoverAction",
        "fingerprint",
        "instanceFlexibilityPolicy",
        "instanceGroup",
        "instanceLifecyclePolicy",
        "instanceTemplate",
        "kind",
        "listManagedInstancesResults",
        "name",
        "namedPorts",
        "project",
        "region",
        "selfLink",
        "serviceAccount",
        "standbyPolicy",
        "statefulPolicy",
        "status",
        "targetPools",
        "targetSize",
        "targetStoppedSize",
        "targetSuspendedSize",
        "updatePolicy",
        "versions",
        "zone"
      ],
      "inputProperties": {
        "allInstancesConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAllInstancesConfig",
          "description": "Specifies configuration that overrides the instance template configuration for the group."
        },
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAutoHealingPolicy"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicy",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "failoverAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionInstanceGroupManagerFailoverAction",
          "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER."
        },
        "instanceFlexibilityPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceFlexibilityPolicy",
          "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceLifecyclePolicy",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "listManagedInstancesResults": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionInstanceGroupManagerListManagedInstancesResults",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:NamedPort"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
        },
        "standbyPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStandbyPolicy",
          "description": "Standby policy for stopped and suspended instances."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:StatefulPolicy",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "targetStoppedSize": {
          "type": "integer",
          "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. "
        },
        "targetSuspendedSize": {
          "type": "integer",
          "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. "
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicy",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerVersion"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionInstanceTemplate": {
      "description": "Creates an instance template in the specified project and region using the global instance template whose URL is included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance template in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceTemplate for instance templates."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesResponse",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance template. The server defines this URL."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Fbeta:SourceInstanceParamsResponse",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "properties",
        "region",
        "selfLink",
        "sourceInstance",
        "sourceInstanceParams"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstanceProperties",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Fbeta:SourceInstanceParams",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionInstantSnapshot": {
      "description": "Creates an instant snapshot in the specified region.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the instant snapshot. Valid values are ARM64 or X86_64."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the source disk, specified in GB."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#instantSnapshot for InstantSnapshot resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this InstantSnapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a InstantSnapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:InstantSnapshotResourceStatusResponse",
          "description": "Status information for the instant snapshot resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this InstantSnapshot. This value may be used to determine whether the InstantSnapshot was taken from the current or a previous instance of a given disk name."
        },
        "status": {
          "type": "string",
          "description": "The status of the instantSnapshot. This can be CREATING, DELETING, FAILED, or READY."
        },
        "zone": {
          "type": "string",
          "description": "URL of the zone where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "creationTimestamp",
        "description",
        "diskSizeGb",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "region",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "selfLinkWithId",
        "sourceDisk",
        "sourceDiskId",
        "status",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionInstantSnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:RegionInstantSnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:RegionInstantSnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:RegionNetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeploymentResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the network endpoint group is located."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "loadBalancer",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "serverlessDeployment",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroup",
          "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
          "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionNetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverlessDeployment": {
          "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeployment",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionNetworkFirewallPolicy": {
      "description": "Creates a new network firewall policy in the specified project and region.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "project",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionNetworkFirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:RegionNetworkFirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:RegionNetworkFirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:RegionNotificationEndpoint": {
      "description": "Create a NotificationEndpoint in the specified project in the given region using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:NotificationEndpointGrpcSettingsResponse",
          "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#notificationEndpoint for notification endpoints."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "grpcSettings",
        "kind",
        "name",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:NotificationEndpointGrpcSettings",
          "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionSecurityPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigResponse"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigResponse"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies"
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the security policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfigResponse"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "type": {
          "type": "string",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedFieldResponse"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "type": "object",
      "required": [
        "adaptiveProtectionConfig",
        "advancedOptionsConfig",
        "associations",
        "creationTimestamp",
        "ddosProtectionConfig",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "parent",
        "project",
        "recaptchaOptionsConfig",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "type",
        "userDefinedFields"
      ],
      "inputProperties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfig"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfig"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociation"
          },
          "description": "A list of associations that belong to this policy."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfig"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfig"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionSecurityPolicyType",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedField"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionSslCertificate": {
      "description": "Creates a SslCertificate resource in the specified project and region using the data included in the request",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expireTime": {
          "type": "string",
          "description": "Expire time of the certificate. RFC3339"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#sslCertificate for SSL certificates."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateManagedSslCertificateResponse",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateSelfManagedSslCertificateResponse",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "subjectAlternativeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Domains associated with the certificate via Subject Alternative Name."
        },
        "type": {
          "type": "string",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "creationTimestamp",
        "description",
        "expireTime",
        "kind",
        "managed",
        "name",
        "privateKey",
        "project",
        "region",
        "selfLink",
        "selfManaged",
        "subjectAlternativeNames",
        "type"
      ],
      "inputProperties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateManagedSslCertificate",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateSelfManagedSslCertificate",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionSslCertificateType",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionSslPolicy": {
      "description": "Creates a new policy in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enabledFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of features enabled in the SSL policy."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies."
        },
        "minTlsVersion": {
          "type": "string",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "type": "string",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RegionSslPolicyWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "customFeatures",
        "description",
        "enabledFeatures",
        "fingerprint",
        "kind",
        "minTlsVersion",
        "name",
        "profile",
        "project",
        "region",
        "selfLink",
        "warnings"
      ],
      "inputProperties": {
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "minTlsVersion": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionSslPolicyMinTlsVersion",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionSslPolicyProfile",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionTargetHttpProxy": {
      "description": "Creates a TargetHttpProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpFilters",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "region",
        "selfLink",
        "urlMap"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionTargetHttpsProxy": {
      "description": "Creates a TargetHttpsProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use serverTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead."
        },
        "authorization": {
          "type": "string",
          "description": "[Deprecated] Use authorizationPolicy instead.",
          "deprecationMessage": "[Deprecated] Use authorizationPolicy instead."
        },
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "type": "string",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "authorization",
        "authorizationPolicy",
        "certificateMap",
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpFilters",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "quicOverride",
        "region",
        "selfLink",
        "serverTlsPolicy",
        "sslCertificates",
        "sslPolicy",
        "urlMap"
      ],
      "inputProperties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use serverTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead."
        },
        "authorization": {
          "type": "string",
          "description": "[Deprecated] Use authorizationPolicy instead.",
          "deprecationMessage": "[Deprecated] Use authorizationPolicy instead."
        },
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionTargetHttpsProxyQuicOverride",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionTargetTcpProxy": {
      "description": "Creates a TargetTcpProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyBind",
        "proxyHeader",
        "region",
        "selfLink",
        "service"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fbeta:RegionTargetTcpProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:RegionUrlMap": {
      "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyResponse",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectActionResponse",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HostRuleResponse"
          },
          "description": "The list of host rules to use against the URL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#urlMaps for url maps."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PathMatcherResponse"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:UrlMapTestResponse"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "defaultCustomErrorResponsePolicy",
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "fingerprint",
        "headerAction",
        "hostRules",
        "kind",
        "name",
        "pathMatchers",
        "project",
        "region",
        "selfLink",
        "tests"
      ],
      "inputProperties": {
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicy",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectAction",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HostRule"
          },
          "description": "The list of host rules to use against the URL."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PathMatcher"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:UrlMapTest"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:Reservation": {
      "description": "Creates a new reservation. For more information, read Reserving zonal resources.",
      "properties": {
        "aggregateReservation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationResponse",
          "description": "Reservation for aggregated resources, providing shape flexibility."
        },
        "commitment": {
          "type": "string",
          "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deleteAfterDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
          "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
        },
        "deleteAtTime": {
          "type": "string",
          "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#reservations for reservations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationResourceStatusResponse",
          "description": "Status information for Reservation resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsResponse",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUReservationResponse",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "status": {
          "type": "string",
          "description": "The status of the reservation."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "aggregateReservation",
        "commitment",
        "creationTimestamp",
        "deleteAfterDuration",
        "deleteAtTime",
        "description",
        "kind",
        "name",
        "project",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "shareSettings",
        "specificReservation",
        "specificReservationRequired",
        "status",
        "zone"
      ],
      "inputProperties": {
        "aggregateReservation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservation",
          "description": "Reservation for aggregated resources, providing shape flexibility."
        },
        "deleteAfterDuration": {
          "$ref": "#/types/google-native:compute%2Fbeta:Duration",
          "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
        },
        "deleteAtTime": {
          "type": "string",
          "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fbeta:ShareSettings",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUReservation",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      }
    },
    "google-native:compute/beta:ReservationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:ReservationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:ReservationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:ResourcePolicy": {
      "description": "Creates a new resource policy.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string"
        },
        "diskConsistencyGroupPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyDiskConsistencyGroupPolicyResponse",
          "description": "Resource policy for disk consistency groups."
        },
        "groupPlacementPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyGroupPlacementPolicyResponse",
          "description": "Resource policy for instances for placement configuration."
        },
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyInstanceSchedulePolicyResponse",
          "description": "Resource policy for scheduling instance operations."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#resource_policies for resource policies."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyResourceStatusResponse",
          "description": "The system status of the resource policy."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "snapshotSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicyResponse",
          "description": "Resource policy for persistent disks for creating snapshots."
        },
        "status": {
          "type": "string",
          "description": "The status of resource policy creation."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "diskConsistencyGroupPolicy",
        "groupPlacementPolicy",
        "instanceSchedulePolicy",
        "kind",
        "name",
        "project",
        "region",
        "resourceStatus",
        "selfLink",
        "snapshotSchedulePolicy",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string"
        },
        "diskConsistencyGroupPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyDiskConsistencyGroupPolicy",
          "description": "Resource policy for disk consistency groups."
        },
        "groupPlacementPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyGroupPlacementPolicy",
          "description": "Resource policy for instances for placement configuration."
        },
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyInstanceSchedulePolicy",
          "description": "Resource policy for scheduling instance operations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "snapshotSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicy",
          "description": "Resource policy for persistent disks for creating snapshots."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:ResourcePolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:ResourcePolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:ResourcePolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:Route": {
      "description": "Creates a Route resource in the specified project using the data included in the request.",
      "properties": {
        "asPaths": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouteAsPathResponse"
          },
          "description": "AS path."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destRange": {
          "type": "string",
          "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format."
        },
        "kind": {
          "type": "string",
          "description": "Type of this resource. Always compute#routes for Route resources."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "Fully-qualified URL of the network that this route applies to."
        },
        "nextHopGateway": {
          "type": "string",
          "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway"
        },
        "nextHopHub": {
          "type": "string",
          "description": "The full resource name of the Network Connectivity Center hub that will handle matching packets."
        },
        "nextHopIlb": {
          "type": "string",
          "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule "
        },
        "nextHopInstance": {
          "type": "string",
          "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
        },
        "nextHopInterconnectAttachment": {
          "type": "string",
          "description": "The URL to an InterconnectAttachment which is the next hop for the route. This field will only be populated for the dynamic routes generated by Cloud Router with a linked interconnectAttachment."
        },
        "nextHopIp": {
          "type": "string",
          "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address."
        },
        "nextHopNetwork": {
          "type": "string",
          "description": "The URL of the local network if it should handle matching packets."
        },
        "nextHopPeering": {
          "type": "string",
          "description": "The network peering name that should handle matching packets, which should conform to RFC1035."
        },
        "nextHopVpnTunnel": {
          "type": "string",
          "description": "The URL to a VpnTunnel that should handle matching packets."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routeStatus": {
          "type": "string",
          "description": "[Output only] The status of the route."
        },
        "routeType": {
          "type": "string",
          "description": "The type of this route, which can be one of the following values: - 'TRANSIT' for a transit route that this router learned from another Cloud Router and will readvertise to one of its BGP peers - 'SUBNET' for a route from a subnet of the VPC - 'BGP' for a route learned from a BGP peer of this router - 'STATIC' for a static route"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of instance tags to which this route applies."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouteWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "asPaths",
        "creationTimestamp",
        "description",
        "destRange",
        "kind",
        "name",
        "network",
        "nextHopGateway",
        "nextHopHub",
        "nextHopIlb",
        "nextHopInstance",
        "nextHopInterconnectAttachment",
        "nextHopIp",
        "nextHopNetwork",
        "nextHopPeering",
        "nextHopVpnTunnel",
        "priority",
        "project",
        "routeStatus",
        "routeType",
        "selfLink",
        "tags",
        "warnings"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destRange": {
          "type": "string",
          "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "Fully-qualified URL of the network that this route applies to."
        },
        "nextHopGateway": {
          "type": "string",
          "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway"
        },
        "nextHopIlb": {
          "type": "string",
          "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule "
        },
        "nextHopInstance": {
          "type": "string",
          "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
        },
        "nextHopIp": {
          "type": "string",
          "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address."
        },
        "nextHopNetwork": {
          "type": "string",
          "description": "The URL of the local network if it should handle matching packets."
        },
        "nextHopVpnTunnel": {
          "type": "string",
          "description": "The URL to a VpnTunnel that should handle matching packets."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of instance tags to which this route applies."
        }
      }
    },
    "google-native:compute/beta:Router": {
      "description": "Creates a Router resource in the specified project and region using the data included in the request.",
      "properties": {
        "bgp": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpResponse",
          "description": "BGP information specific to this router."
        },
        "bgpPeers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerResponse"
          },
          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "encryptedInterconnectRouter": {
          "type": "boolean",
          "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments)."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterInterfaceResponse"
          },
          "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#router for routers."
        },
        "md5AuthenticationKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterMd5AuthenticationKeyResponse"
          },
          "description": "Keys used for MD5 authentication."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterNatResponse"
          },
          "description": "A list of NAT services created in this router."
        },
        "network": {
          "type": "string",
          "description": "URI of the network to which this router belongs."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "bgp",
        "bgpPeers",
        "creationTimestamp",
        "description",
        "encryptedInterconnectRouter",
        "interfaces",
        "kind",
        "md5AuthenticationKeys",
        "name",
        "nats",
        "network",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "bgp": {
          "$ref": "#/types/google-native:compute%2Fbeta:RouterBgp",
          "description": "BGP information specific to this router."
        },
        "bgpPeers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeer"
          },
          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "encryptedInterconnectRouter": {
          "type": "boolean",
          "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments)."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterInterface"
          },
          "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface."
        },
        "md5AuthenticationKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterMd5AuthenticationKey"
          },
          "description": "Keys used for MD5 authentication."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterNat"
          },
          "description": "A list of NAT services created in this router."
        },
        "network": {
          "type": "string",
          "description": "URI of the network to which this router belongs."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:SecurityPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigResponse"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigResponse"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies"
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the security policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfigResponse"
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "type": {
          "type": "string",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedFieldResponse"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "type": "object",
      "required": [
        "adaptiveProtectionConfig",
        "advancedOptionsConfig",
        "associations",
        "creationTimestamp",
        "ddosProtectionConfig",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "parent",
        "project",
        "recaptchaOptionsConfig",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "type",
        "userDefinedFields"
      ],
      "inputProperties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfig"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfig"
        },
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociation"
          },
          "description": "A list of associations that belong to this policy."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfig"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfig"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyType",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedField"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      }
    },
    "google-native:compute/beta:ServiceAttachment": {
      "description": "Creates a ServiceAttachment in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "connectedEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentConnectedEndpointResponse"
          },
          "description": "An array of connections for all the consumers connected to this service attachment."
        },
        "connectionPreference": {
          "type": "string",
          "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules."
        },
        "consumerAcceptLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentConsumerProjectLimitResponse"
          },
          "description": "Projects that are allowed to connect to this service attachment."
        },
        "consumerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1."
        },
        "enableProxyProtocol": {
          "type": "boolean",
          "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ServiceAttachment. An up-to-date fingerprint must be provided in order to patch/update the ServiceAttachment; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the ServiceAttachment."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#serviceAttachment for service attachments."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment."
        },
        "producerForwardingRule": {
          "type": "string",
          "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscServiceAttachmentId": {
          "$ref": "#/types/google-native:compute%2Fbeta:Uint128Response",
          "description": "An 128-bit global unique ID of the PSC service attachment."
        },
        "reconcileConnections": {
          "type": "boolean",
          "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "targetService": {
          "type": "string",
          "description": "The URL of a service serving the endpoint identified by this service attachment."
        },
        "tunnelingConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentTunnelingConfigResponse",
          "description": "When a tunneling config is set on this service attachment it will encapsulate traffic between consumer and producer. When tunneling is enabled: - nat_subnets must be unset - enable_proxy_protocol must be false - producer_forwarding_rule must be a L4 ILB. - "
        }
      },
      "type": "object",
      "required": [
        "connectedEndpoints",
        "connectionPreference",
        "consumerAcceptLists",
        "consumerRejectLists",
        "creationTimestamp",
        "description",
        "domainNames",
        "enableProxyProtocol",
        "fingerprint",
        "kind",
        "name",
        "natSubnets",
        "producerForwardingRule",
        "project",
        "pscServiceAttachmentId",
        "reconcileConnections",
        "region",
        "selfLink",
        "targetService",
        "tunnelingConfig"
      ],
      "inputProperties": {
        "connectionPreference": {
          "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentConnectionPreference",
          "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules."
        },
        "consumerAcceptLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentConsumerProjectLimit"
          },
          "description": "Projects that are allowed to connect to this service attachment."
        },
        "consumerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1."
        },
        "enableProxyProtocol": {
          "type": "boolean",
          "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment."
        },
        "producerForwardingRule": {
          "type": "string",
          "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconcileConnections": {
          "type": "boolean",
          "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "targetService": {
          "type": "string",
          "description": "The URL of a service serving the endpoint identified by this service attachment."
        },
        "tunnelingConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentTunnelingConfig",
          "description": "When a tunneling config is set on this service attachment it will encapsulate traffic between consumer and producer. When tunneling is enabled: - nat_subnets must be unset - enable_proxy_protocol must be false - producer_forwarding_rule must be a L4 ILB. - "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:ServiceAttachmentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:ServiceAttachmentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:ServiceAttachmentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:Snapshot": {
      "description": "Creates a snapshot in the specified project using the data included in the request. For regular snapshot creation, consider using this method instead of disks.createSnapshot, as this method supports more features, such as creating snapshots in a project different from the source disk project.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the snapshot. Valid values are ARM64 or X86_64."
        },
        "autoCreated": {
          "type": "boolean",
          "description": "Set to true if snapshots are automatically created by applying resource policy on the target disk."
        },
        "chainName": {
          "type": "string",
          "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value."
        },
        "creationSizeBytes": {
          "type": "string",
          "description": "Size in bytes of the snapshot at creation time."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the source disk, specified in GB."
        },
        "downloadBytes": {
          "type": "string",
          "description": "Number of bytes downloaded to restore a snapshot to a disk."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#snapshot for Snapshot resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this snapshot."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image)."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "snapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
        },
        "snapshotType": {
          "type": "string",
          "description": "Indicates the type of the snapshot."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this snapshot."
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskForRecoveryCheckpoint": {
          "type": "string",
          "description": "The source disk whose recovery checkpoint will be used to create this snapshot."
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
          "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
        },
        "sourceInstantSnapshotId": {
          "type": "string",
          "description": "The unique ID of the instant snapshot used to create this snapshot. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact instant snapshot that was used."
        },
        "sourceSnapshotSchedulePolicy": {
          "type": "string",
          "description": "URL of the resource policy which created this scheduled snapshot."
        },
        "sourceSnapshotSchedulePolicyId": {
          "type": "string",
          "description": "ID of the resource policy which created this scheduled snapshot."
        },
        "status": {
          "type": "string",
          "description": "The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING."
        },
        "storageBytes": {
          "type": "string",
          "description": "A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional)."
        },
        "userLicenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of user provided licenses represented by a list of URLs to the license resource."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "autoCreated",
        "chainName",
        "creationSizeBytes",
        "creationTimestamp",
        "description",
        "diskSizeGb",
        "downloadBytes",
        "enableConfidentialCompute",
        "guestFlush",
        "guestOsFeatures",
        "kind",
        "labelFingerprint",
        "labels",
        "licenseCodes",
        "licenses",
        "locationHint",
        "name",
        "project",
        "satisfiesPzs",
        "selfLink",
        "snapshotEncryptionKey",
        "snapshotType",
        "sourceDisk",
        "sourceDiskEncryptionKey",
        "sourceDiskForRecoveryCheckpoint",
        "sourceDiskId",
        "sourceInstantSnapshot",
        "sourceInstantSnapshotEncryptionKey",
        "sourceInstantSnapshotId",
        "sourceSnapshotSchedulePolicy",
        "sourceSnapshotSchedulePolicyId",
        "status",
        "storageBytes",
        "storageBytesStatus",
        "storageLocations",
        "userLicenses"
      ],
      "inputProperties": {
        "chainName": {
          "type": "string",
          "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableConfidentialCompute": {
          "type": "boolean",
          "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "snapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
        },
        "snapshotType": {
          "$ref": "#/types/google-native:compute%2Fbeta:SnapshotSnapshotType",
          "description": "Indicates the type of the snapshot."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this snapshot."
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskForRecoveryCheckpoint": {
          "type": "string",
          "description": "The source disk whose recovery checkpoint will be used to create this snapshot."
        },
        "sourceInstantSnapshot": {
          "type": "string",
          "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot "
        },
        "sourceInstantSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKey",
          "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional)."
        }
      }
    },
    "google-native:compute/beta:SnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:SnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:SnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/beta:SslCertificate": {
      "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expireTime": {
          "type": "string",
          "description": "Expire time of the certificate. RFC3339"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#sslCertificate for SSL certificates."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateManagedSslCertificateResponse",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateSelfManagedSslCertificateResponse",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "subjectAlternativeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Domains associated with the certificate via Subject Alternative Name."
        },
        "type": {
          "type": "string",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "creationTimestamp",
        "description",
        "expireTime",
        "kind",
        "managed",
        "name",
        "privateKey",
        "project",
        "region",
        "selfLink",
        "selfManaged",
        "subjectAlternativeNames",
        "type"
      ],
      "inputProperties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateManagedSslCertificate",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateSelfManagedSslCertificate",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateType",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      }
    },
    "google-native:compute/beta:SslPolicy": {
      "description": "Returns the specified SSL policy resource.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enabledFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of features enabled in the SSL policy."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies."
        },
        "minTlsVersion": {
          "type": "string",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "type": "string",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SslPolicyWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "customFeatures",
        "description",
        "enabledFeatures",
        "fingerprint",
        "kind",
        "minTlsVersion",
        "name",
        "profile",
        "project",
        "region",
        "selfLink",
        "warnings"
      ],
      "inputProperties": {
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "minTlsVersion": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslPolicyMinTlsVersion",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "$ref": "#/types/google-native:compute%2Fbeta:SslPolicyProfile",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/beta:Subnetwork": {
      "description": "Creates a subnetwork in the specified project using the data included in the request.",
      "properties": {
        "allowSubnetCidrRoutesOverlap": {
          "type": "boolean",
          "description": "Whether this subnetwork's ranges can conflict with existing static routes. Setting this to true allows this subnetwork's primary and secondary ranges to overlap with (and contain) static routes that have already been configured on the corresponding network. For example if a static route has range 10.1.0.0/16, a subnet range 10.0.0.0/8 could only be created if allow_conflicting_routes=true. Overlapping is only allowed on subnetwork operations; routes whose ranges conflict with this subnetwork's ranges won't be allowed unless route.allow_conflicting_subnetworks is set to true. Typically packets destined to IPs within the subnetwork (which may contain private/sensitive data) are prevented from leaving the virtual network. Setting this field to true will disable this feature. The default value is false and applies to all existing subnetworks and automatically created subnetworks. This field cannot be set to true at resource creation time."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
        },
        "enableFlowLogs": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "externalIpv6Prefix": {
          "type": "string",
          "description": "The external IPv6 address range that is owned by this subnetwork."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a Subnetwork."
        },
        "gatewayAddress": {
          "type": "string",
          "description": "The gateway address for default routes to reach destination addresses outside this subnetwork."
        },
        "internalIpv6Prefix": {
          "type": "string",
          "description": "The internal IPv6 address range that is assigned to this subnetwork."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange."
        },
        "ipv6AccessType": {
          "type": "string",
          "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack."
        },
        "ipv6CidrRange": {
          "type": "string",
          "description": "This field is for internal use."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#subnetwork for Subnetwork resources."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkLogConfigResponse",
          "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time."
        },
        "privateIpGoogleAccess": {
          "type": "boolean",
          "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservedInternalRange": {
          "type": "string",
          "description": "The URL of the reserved internal range."
        },
        "role": {
          "type": "string",
          "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request."
        },
        "secondaryIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkSecondaryRangeResponse"
          },
          "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch."
        },
        "state": {
          "type": "string",
          "description": "The state of the subnetwork, which can be one of the following values: READY: Subnetwork is created and ready to use DRAINING: only applicable to subnetworks that have the purpose set to INTERNAL_HTTPS_LOAD_BALANCER and indicates that connections to the load balancer are being drained. A subnetwork that is draining cannot be used or modified until it reaches a status of READY"
        }
      },
      "type": "object",
      "required": [
        "allowSubnetCidrRoutesOverlap",
        "creationTimestamp",
        "description",
        "enableFlowLogs",
        "externalIpv6Prefix",
        "fingerprint",
        "gatewayAddress",
        "internalIpv6Prefix",
        "ipCidrRange",
        "ipv6AccessType",
        "ipv6CidrRange",
        "kind",
        "logConfig",
        "name",
        "network",
        "privateIpGoogleAccess",
        "privateIpv6GoogleAccess",
        "project",
        "purpose",
        "region",
        "reservedInternalRange",
        "role",
        "secondaryIpRanges",
        "selfLink",
        "stackType",
        "state"
      ],
      "inputProperties": {
        "allowSubnetCidrRoutesOverlap": {
          "type": "boolean",
          "description": "Whether this subnetwork's ranges can conflict with existing static routes. Setting this to true allows this subnetwork's primary and secondary ranges to overlap with (and contain) static routes that have already been configured on the corresponding network. For example if a static route has range 10.1.0.0/16, a subnet range 10.0.0.0/8 could only be created if allow_conflicting_routes=true. Overlapping is only allowed on subnetwork operations; routes whose ranges conflict with this subnetwork's ranges won't be allowed unless route.allow_conflicting_subnetworks is set to true. Typically packets destined to IPs within the subnetwork (which may contain private/sensitive data) are prevented from leaving the virtual network. Setting this field to true will disable this feature. The default value is false and applies to all existing subnetworks and automatically created subnetworks. This field cannot be set to true at resource creation time."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
        },
        "enableFlowLogs": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "externalIpv6Prefix": {
          "type": "string",
          "description": "The external IPv6 address range that is owned by this subnetwork."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange."
        },
        "ipv6AccessType": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkIpv6AccessType",
          "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkLogConfig",
          "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time."
        },
        "privateIpGoogleAccess": {
          "type": "boolean",
          "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkPrivateIpv6GoogleAccess",
          "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkPurpose",
          "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservedInternalRange": {
          "type": "string",
          "description": "The URL of the reserved internal range."
        },
        "role": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkRole",
          "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request."
        },
        "secondaryIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkSecondaryRange"
          },
          "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkStackType",
          "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:SubnetworkIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:SubnetworkIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/beta:SubnetworkIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/beta:TargetGrpcProxy": {
      "description": "Creates a TargetGrpcProxy in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetGrpcProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetGrpcProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetGrpcProxy."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetGrpcProxy for target grpc proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL with id for the resource."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC."
        },
        "validateForProxyless": {
          "type": "boolean",
          "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to"
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "project",
        "selfLink",
        "selfLinkWithId",
        "urlMap",
        "validateForProxyless"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC."
        },
        "validateForProxyless": {
          "type": "boolean",
          "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to"
        }
      }
    },
    "google-native:compute/beta:TargetHttpProxy": {
      "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpFilters",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "region",
        "selfLink",
        "urlMap"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      }
    },
    "google-native:compute/beta:TargetHttpsProxy": {
      "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use serverTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead."
        },
        "authorization": {
          "type": "string",
          "description": "[Deprecated] Use authorizationPolicy instead.",
          "deprecationMessage": "[Deprecated] Use authorizationPolicy instead."
        },
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "type": "string",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "authorization",
        "authorizationPolicy",
        "certificateMap",
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpFilters",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "quicOverride",
        "region",
        "selfLink",
        "serverTlsPolicy",
        "sslCertificates",
        "sslPolicy",
        "urlMap"
      ],
      "inputProperties": {
        "authentication": {
          "type": "string",
          "description": "[Deprecated] Use serverTlsPolicy instead.",
          "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead."
        },
        "authorization": {
          "type": "string",
          "description": "[Deprecated] Use authorizationPolicy instead.",
          "deprecationMessage": "[Deprecated] Use authorizationPolicy instead."
        },
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "$ref": "#/types/google-native:compute%2Fbeta:TargetHttpsProxyQuicOverride",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      }
    },
    "google-native:compute/beta:TargetInstance": {
      "description": "Creates a TargetInstance resource in the specified project and zone using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "instance": {
          "type": "string",
          "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance "
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#targetInstance for target instances."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natPolicy": {
          "type": "string",
          "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this target instance."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "instance",
        "kind",
        "name",
        "natPolicy",
        "network",
        "project",
        "securityPolicy",
        "selfLink",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "instance": {
          "type": "string",
          "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance "
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natPolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:TargetInstanceNatPolicy",
          "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/beta:TargetPool": {
      "description": "Creates a target pool in the specified project and region using the data included in the request.",
      "properties": {
        "backupPool": {
          "type": "string",
          "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failoverRatio": {
          "type": "number",
          "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetPool for target pools."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this target pool."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy."
        }
      },
      "type": "object",
      "required": [
        "backupPool",
        "creationTimestamp",
        "description",
        "failoverRatio",
        "healthChecks",
        "instances",
        "kind",
        "name",
        "project",
        "region",
        "securityPolicy",
        "selfLink",
        "sessionAffinity"
      ],
      "inputProperties": {
        "backupPool": {
          "type": "string",
          "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failoverRatio": {
          "type": "number",
          "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Fbeta:TargetPoolSessionAffinity",
          "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:TargetSslProxy": {
      "description": "Creates a TargetSslProxy resource in the specified project using the data included in the request.",
      "properties": {
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetSslProxy for target SSL proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured."
        }
      },
      "type": "object",
      "required": [
        "certificateMap",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyHeader",
        "selfLink",
        "service",
        "sslCertificates",
        "sslPolicy"
      ],
      "inputProperties": {
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fbeta:TargetSslProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured."
        }
      }
    },
    "google-native:compute/beta:TargetTcpProxy": {
      "description": "Creates a TargetTcpProxy resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyBind",
        "proxyHeader",
        "region",
        "selfLink",
        "service"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fbeta:TargetTcpProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      }
    },
    "google-native:compute/beta:TargetVpnGateway": {
      "description": "Creates a target VPN gateway in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "forwardingRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated with a VPN gateway."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetVpnGateway for target VPN gateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a TargetVpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the VPN gateway, which can be one of the following: CREATING, READY, FAILED, or DELETING."
        },
        "tunnels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to VpnTunnel resources. VpnTunnels are created using the compute.vpntunnels.insert method and associated with a VPN gateway."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "forwardingRules",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "project",
        "region",
        "selfLink",
        "status",
        "tunnels"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:UrlMap": {
      "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyResponse",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectActionResponse",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HostRuleResponse"
          },
          "description": "The list of host rules to use against the URL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#urlMaps for url maps."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PathMatcherResponse"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:UrlMapTestResponse"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "defaultCustomErrorResponsePolicy",
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "fingerprint",
        "headerAction",
        "hostRules",
        "kind",
        "name",
        "pathMatchers",
        "project",
        "region",
        "selfLink",
        "tests"
      ],
      "inputProperties": {
        "defaultCustomErrorResponsePolicy": {
          "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicy",
          "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectAction",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:HostRule"
          },
          "description": "The list of host rules to use against the URL."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:PathMatcher"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:UrlMapTest"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      }
    },
    "google-native:compute/beta:VpnGateway": {
      "description": "Creates a VPN gateway in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "gatewayIpVersion": {
          "type": "string",
          "description": "The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#vpnGateway for VPN gateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this VpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used."
        },
        "vpnInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:VpnGatewayVpnGatewayInterfaceResponse"
          },
          "description": "The list of VPN interfaces associated with this VPN gateway."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "gatewayIpVersion",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "project",
        "region",
        "selfLink",
        "stackType",
        "vpnInterfaces"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "gatewayIpVersion": {
          "$ref": "#/types/google-native:compute%2Fbeta:VpnGatewayGatewayIpVersion",
          "description": "The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Fbeta:VpnGatewayStackType",
          "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used."
        },
        "vpnInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fbeta:VpnGatewayVpnGatewayInterface"
          },
          "description": "The list of VPN interfaces associated with this VPN gateway."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/beta:VpnTunnel": {
      "description": "Creates a VpnTunnel resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "detailedStatus": {
          "type": "string",
          "description": "Detailed status message for the VPN tunnel."
        },
        "ikeVersion": {
          "type": "integer",
          "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#vpnTunnel for VPN tunnels."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnTunnel."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "localTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerExternalGateway": {
          "type": "string",
          "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway."
        },
        "peerExternalGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type."
        },
        "peerGcpGateway": {
          "type": "string",
          "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway."
        },
        "peerIp": {
          "type": "string",
          "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the router resource to be used for dynamic routing."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sharedSecret": {
          "type": "string",
          "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
        },
        "sharedSecretHash": {
          "type": "string",
          "description": "Hash of the shared secret."
        },
        "status": {
          "type": "string",
          "description": "The status of the VPN tunnel, which can be one of the following: - PROVISIONING: Resource is being allocated for the VPN tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all VPN-related configs from the user. Network, TargetVpnGateway, VpnTunnel, ForwardingRule, and Route resources are needed to setup the VPN tunnel. - FIRST_HANDSHAKE: Successful first handshake with the peer VPN. - ESTABLISHED: Secure session is successfully established with the peer VPN. - NETWORK_ERROR: Deprecated, replaced by NO_INCOMING_PACKETS - AUTHORIZATION_ERROR: Auth error (for example, bad shared secret). - NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING: Resources are being deallocated for the VPN tunnel. - FAILED: Tunnel creation has failed and the tunnel is not ready to be used. - NO_INCOMING_PACKETS: No incoming packets from peer. - REJECTED: Tunnel configuration was rejected, can be result of being denied access. - ALLOCATING_RESOURCES: Cloud VPN is in the process of allocating all required resources. - STOPPED: Tunnel is stopped due to its Forwarding Rules being deleted for Classic VPN tunnels or the project is in frozen state. - PEER_IDENTITY_MISMATCH: Peer identity does not match peer IP, probably behind NAT. - TS_NARROWING_NOT_ALLOWED: Traffic selector narrowing not allowed for an HA-VPN tunnel. "
        },
        "targetVpnGateway": {
          "type": "string",
          "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created."
        },
        "vpnGateway": {
          "type": "string",
          "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created."
        },
        "vpnGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "detailedStatus",
        "ikeVersion",
        "kind",
        "labelFingerprint",
        "labels",
        "localTrafficSelector",
        "name",
        "peerExternalGateway",
        "peerExternalGatewayInterface",
        "peerGcpGateway",
        "peerIp",
        "project",
        "region",
        "remoteTrafficSelector",
        "router",
        "selfLink",
        "sharedSecret",
        "sharedSecretHash",
        "status",
        "targetVpnGateway",
        "vpnGateway",
        "vpnGatewayInterface"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ikeVersion": {
          "type": "integer",
          "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "localTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerExternalGateway": {
          "type": "string",
          "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway."
        },
        "peerExternalGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type."
        },
        "peerGcpGateway": {
          "type": "string",
          "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway."
        },
        "peerIp": {
          "type": "string",
          "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the router resource to be used for dynamic routing."
        },
        "sharedSecret": {
          "type": "string",
          "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
        },
        "sharedSecretHash": {
          "type": "string",
          "description": "Hash of the shared secret."
        },
        "targetVpnGateway": {
          "type": "string",
          "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created."
        },
        "vpnGateway": {
          "type": "string",
          "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created."
        },
        "vpnGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:Address": {
      "description": "Creates an address resource in the specified project by using the data included in the request.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource.",
          "language": {
            "csharp": {
              "name": "AddressValue"
            }
          }
        },
        "addressType": {
          "type": "string",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "type": "string",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#address for addresses."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs of the resources that are using this address."
        }
      },
      "type": "object",
      "required": [
        "address",
        "addressType",
        "creationTimestamp",
        "description",
        "ipVersion",
        "ipv6EndpointType",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "networkTier",
        "prefixLength",
        "project",
        "purpose",
        "region",
        "selfLink",
        "status",
        "subnetwork",
        "users"
      ],
      "inputProperties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "$ref": "#/types/google-native:compute%2Fv1:AddressAddressType",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fv1:AddressIpVersion",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "$ref": "#/types/google-native:compute%2Fv1:AddressIpv6EndpointType",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fv1:AddressNetworkTier",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Fv1:AddressPurpose",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:Autoscaler": {
      "description": "Creates an autoscaler in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyResponse",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#autoscaler for autoscalers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendedSize": {
          "type": "integer",
          "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the instance group resides (for autoscalers living in regional scope)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "scalingScheduleStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information of existing scaling schedules."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future."
        },
        "statusDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AutoscalerStatusDetailsResponse"
          },
          "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "recommendedSize",
        "region",
        "scalingScheduleStatus",
        "selfLink",
        "status",
        "statusDetails",
        "target",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicy",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/v1:BackendBucket": {
      "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendBucket."
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the Application Load Balancer should add to proxied responses."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend bucket."
        },
        "enableCdn": {
          "type": "boolean",
          "description": "If true, enable Cloud CDN for this BackendBucket."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "cdnPolicy",
        "compressionMode",
        "creationTimestamp",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCdn",
        "kind",
        "name",
        "project",
        "selfLink"
      ],
      "inputProperties": {
        "bucketName": {
          "type": "string",
          "description": "Cloud Storage bucket name."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicy",
          "description": "Cloud CDN configuration for this BackendBucket."
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the Application Load Balancer should add to proxied responses."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "enableCdn": {
          "type": "boolean",
          "description": "If true, enable Cloud CDN for this BackendBucket."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/v1:BackendBucketIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:BackendBucketIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:BackendBucketIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:BackendService": {
      "description": "Creates a BackendService resource in the specified project using the data included in the request. For more information, see Backend services overview .",
      "properties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendResponse"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Fv1:CircuitBreakersResponse"
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Fv1:ConnectionDrainingResponse"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceConnectionTrackingPolicyResponse",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Fv1:ConsistentHashLoadBalancerSettingsResponse",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend service."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceFailoverPolicyResponse",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceIAPResponse",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#backendService for backend services."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "type": "string",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLogConfigResponse",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Fv1:OutlierDetectionResponse",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this backend service."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Fv1:SecuritySettingsResponse",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Fv1:SubsettingResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceUsedByResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "affinityCookieTtlSec",
        "backends",
        "cdnPolicy",
        "circuitBreakers",
        "compressionMode",
        "connectionDraining",
        "connectionTrackingPolicy",
        "consistentHash",
        "creationTimestamp",
        "customRequestHeaders",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCDN",
        "failoverPolicy",
        "fingerprint",
        "healthChecks",
        "iap",
        "kind",
        "loadBalancingScheme",
        "localityLbPolicies",
        "localityLbPolicy",
        "logConfig",
        "maxStreamDuration",
        "metadatas",
        "name",
        "network",
        "outlierDetection",
        "port",
        "portName",
        "project",
        "protocol",
        "region",
        "securityPolicy",
        "securitySettings",
        "selfLink",
        "serviceBindings",
        "sessionAffinity",
        "subsetting",
        "timeoutSec",
        "usedBy"
      ],
      "inputProperties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Backend"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicy",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Fv1:CircuitBreakers"
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Fv1:ConnectionDraining"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceConnectionTrackingPolicy",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Fv1:ConsistentHashLoadBalancerSettings",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceFailoverPolicy",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceIAP",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLoadBalancingScheme",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfig"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLbPolicy",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLogConfig",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Fv1:OutlierDetection",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceProtocol",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Fv1:SecuritySettings",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceSessionAffinity",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Fv1:Subsetting"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceUsedBy"
          }
        }
      }
    },
    "google-native:compute/v1:BackendServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:BackendServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:BackendServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:Disk": {
      "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk from a source (sourceImage, sourceSnapshot, or sourceDisk) or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskAsyncReplicationResponse",
          "description": "Disk asynchronously replicated into this disk."
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of disks this disk is asynchronously replicated to."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#disk for disks."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "lastAttachTimestamp": {
          "type": "string",
          "description": "Last attach timestamp in RFC3339 text format."
        },
        "lastDetachTimestamp": {
          "type": "string",
          "description": "Last detach timestamp in RFC3339 text format."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskResourceStatusResponse",
          "description": "Status information for the disk resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceConsistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceConsistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used."
        },
        "sourceImage": {
          "type": "string",
          "description": "Source image to restore onto a disk. This field is optional."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "status": {
          "type": "string",
          "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. "
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "asyncPrimaryDisk",
        "asyncSecondaryDisks",
        "creationTimestamp",
        "description",
        "diskEncryptionKey",
        "guestOsFeatures",
        "kind",
        "labelFingerprint",
        "labels",
        "lastAttachTimestamp",
        "lastDetachTimestamp",
        "licenseCodes",
        "licenses",
        "locationHint",
        "name",
        "options",
        "params",
        "physicalBlockSizeBytes",
        "project",
        "provisionedIops",
        "provisionedThroughput",
        "region",
        "replicaZones",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "sizeGb",
        "sourceConsistencyGroupPolicy",
        "sourceConsistencyGroupPolicyId",
        "sourceDisk",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceStorageObject",
        "status",
        "type",
        "users",
        "zone"
      ],
      "inputProperties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskArchitecture",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskAsyncReplication",
          "description": "Disk asynchronously replicated into this disk."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/v1:DiskIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:DiskIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:DiskIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:ExternalVpnGateway": {
      "description": "Creates a ExternalVpnGateway in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ExternalVpnGatewayInterfaceResponse"
          },
          "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#externalVpnGateway for externalVpnGateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this ExternalVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an ExternalVpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redundancyType": {
          "type": "string",
          "description": "Indicates the user-supplied redundancy type of this external VPN gateway."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "interfaces",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "redundancyType",
        "selfLink"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ExternalVpnGatewayInterface"
          },
          "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redundancyType": {
          "$ref": "#/types/google-native:compute%2Fv1:ExternalVpnGatewayRedundancyType",
          "description": "Indicates the user-supplied redundancy type of this external VPN gateway."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/v1:Firewall": {
      "description": "Creates a firewall rule in the specified project using the data included in the request.",
      "properties": {
        "allowed": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallAllowedItemResponse"
          },
          "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "denied": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallDeniedItemResponse"
          },
          "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destinationRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported."
        },
        "direction": {
          "type": "string",
          "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#firewall for firewall rules."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:FirewallLogConfigResponse",
          "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default "
        },
        "priority": {
          "type": "integer",
          "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sourceRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported."
        },
        "sourceServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags."
        },
        "sourceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network."
        },
        "targetTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network."
        }
      },
      "type": "object",
      "required": [
        "allowed",
        "creationTimestamp",
        "denied",
        "description",
        "destinationRanges",
        "direction",
        "disabled",
        "kind",
        "logConfig",
        "name",
        "network",
        "priority",
        "project",
        "selfLink",
        "sourceRanges",
        "sourceServiceAccounts",
        "sourceTags",
        "targetServiceAccounts",
        "targetTags"
      ],
      "inputProperties": {
        "allowed": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallAllowedItem"
          },
          "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection."
        },
        "denied": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallDeniedItem"
          },
          "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destinationRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported."
        },
        "direction": {
          "$ref": "#/types/google-native:compute%2Fv1:FirewallDirection",
          "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields."
        },
        "disabled": {
          "type": "boolean",
          "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:FirewallLogConfig",
          "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default "
        },
        "priority": {
          "type": "integer",
          "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceRanges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported."
        },
        "sourceServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags."
        },
        "sourceTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply."
        },
        "targetServiceAccounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network."
        },
        "targetTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network."
        }
      }
    },
    "google-native:compute/v1:FirewallPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parentId": {
          "type": "string",
          "description": "Parent ID for this request. The ID can be either be \"folders/[FOLDER_ID]\" if the parent is a folder or \"organizations/[ORGANIZATION_ID]\" if the parent is an organization."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      }
    },
    "google-native:compute/v1:FirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:FirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:FirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:ForwardingRule": {
      "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
      "properties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "baseForwardingRule": {
          "type": "string",
          "description": "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."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Forwarding Rule."
        },
        "pscConnectionStatus": {
          "type": "string"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleServiceDirectoryRegistrationResponse"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "serviceName": {
          "type": "string",
          "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "type": "object",
      "required": [
        "allPorts",
        "allowGlobalAccess",
        "allowPscGlobalAccess",
        "backendService",
        "baseForwardingRule",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipAddress",
        "ipProtocol",
        "ipVersion",
        "isMirroringCollector",
        "kind",
        "labelFingerprint",
        "labels",
        "loadBalancingScheme",
        "metadataFilters",
        "name",
        "network",
        "networkTier",
        "noAutomateDnsZone",
        "portRange",
        "ports",
        "project",
        "pscConnectionId",
        "pscConnectionStatus",
        "region",
        "selfLink",
        "serviceDirectoryRegistrations",
        "serviceLabel",
        "serviceName",
        "sourceIpRanges",
        "subnetwork",
        "target"
      ],
      "inputProperties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipProtocol": {
          "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleIpProtocol",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleIpVersion",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleLoadBalancingScheme",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataFilter"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleNetworkTier",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionStatus": {
          "$ref": "#/types/google-native:compute%2Fv1:ForwardingRulePscConnectionStatus"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleServiceDirectoryRegistration"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:GlobalAddress": {
      "description": "Creates an address resource in the specified project by using the data included in the request.",
      "properties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "type": "string",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "type": "string",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#address for addresses."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs of the resources that are using this address."
        }
      },
      "type": "object",
      "required": [
        "address",
        "addressType",
        "creationTimestamp",
        "description",
        "ipVersion",
        "ipv6EndpointType",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "networkTier",
        "prefixLength",
        "project",
        "purpose",
        "region",
        "selfLink",
        "status",
        "subnetwork",
        "users"
      ],
      "inputProperties": {
        "address": {
          "type": "string",
          "description": "The static IP address represented by this resource."
        },
        "addressType": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalAddressAddressType",
          "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalAddressIpVersion",
          "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6."
        },
        "ipv6EndpointType": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalAddressIpv6EndpointType",
          "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalAddressNetworkTier",
          "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM."
        },
        "prefixLength": {
          "type": "integer",
          "description": "The prefix length if the resource represents an IP range."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalAddressPurpose",
          "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. "
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose."
        }
      }
    },
    "google-native:compute/v1:GlobalForwardingRule": {
      "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
      "properties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "baseForwardingRule": {
          "type": "string",
          "description": "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."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "type": "string",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataFilterResponse"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "type": "string",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionId": {
          "type": "string",
          "description": "The PSC connection id of the PSC Forwarding Rule."
        },
        "pscConnectionStatus": {
          "type": "string"
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleServiceDirectoryRegistrationResponse"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "serviceName": {
          "type": "string",
          "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      },
      "type": "object",
      "required": [
        "allPorts",
        "allowGlobalAccess",
        "allowPscGlobalAccess",
        "backendService",
        "baseForwardingRule",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipAddress",
        "ipProtocol",
        "ipVersion",
        "isMirroringCollector",
        "kind",
        "labelFingerprint",
        "labels",
        "loadBalancingScheme",
        "metadataFilters",
        "name",
        "network",
        "networkTier",
        "noAutomateDnsZone",
        "portRange",
        "ports",
        "project",
        "pscConnectionId",
        "pscConnectionStatus",
        "region",
        "selfLink",
        "serviceDirectoryRegistrations",
        "serviceLabel",
        "serviceName",
        "sourceIpRanges",
        "subnetwork",
        "target"
      ],
      "inputProperties": {
        "allPorts": {
          "type": "boolean",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. "
        },
        "allowGlobalAccess": {
          "type": "boolean",
          "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created."
        },
        "allowPscGlobalAccess": {
          "type": "boolean",
          "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region."
        },
        "backendService": {
          "type": "string",
          "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number."
        },
        "ipProtocol": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalForwardingRuleIpProtocol",
          "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends)."
        },
        "ipVersion": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalForwardingRuleIpVersion",
          "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6."
        },
        "isMirroringCollector": {
          "type": "boolean",
          "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalForwardingRuleLoadBalancingScheme",
          "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts."
        },
        "metadataFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataFilter"
          },
          "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter."
        },
        "network": {
          "type": "string",
          "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided."
        },
        "networkTier": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalForwardingRuleNetworkTier",
          "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address."
        },
        "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. Once set, this field is not mutable."
        },
        "portRange": {
          "type": "string",
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConnectionStatus": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalForwardingRulePscConnectionStatus"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serviceDirectoryRegistrations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleServiceDirectoryRegistration"
          },
          "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource."
        },
        "serviceLabel": {
          "type": "string",
          "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing."
        },
        "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24)."
        },
        "subnetwork": {
          "type": "string",
          "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6."
        },
        "target": {
          "type": "string",
          "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. "
        }
      }
    },
    "google-native:compute/v1:GlobalNetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the network endpoint group is located."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the network endpoint group is located."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Fv1:GlobalNetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        }
      }
    },
    "google-native:compute/v1:GlobalPublicDelegatedPrefix": {
      "description": "Creates a global PublicDelegatedPrefix in the specified project using the parameters that are included in the request.",
      "properties": {
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. "
        }
      },
      "type": "object",
      "required": [
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipCidrRange",
        "isLiveMigration",
        "kind",
        "name",
        "parentPrefix",
        "project",
        "publicDelegatedSubPrefixs",
        "region",
        "selfLink",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PublicDelegatedPrefixPublicDelegatedSubPrefix"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/v1:HealthCheck": {
      "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in 3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:GRPCHealthCheckResponse"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTP2HealthCheckResponse"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPHealthCheckResponse"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPSHealthCheckResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:HealthCheckLogConfigResponse",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "Region where the health check resides. Not applicable to global health checks."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:SSLHealthCheckResponse"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:TCPHealthCheckResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "grpcHealthCheck",
        "healthyThreshold",
        "http2HealthCheck",
        "httpHealthCheck",
        "httpsHealthCheck",
        "kind",
        "logConfig",
        "name",
        "project",
        "region",
        "selfLink",
        "sslHealthCheck",
        "tcpHealthCheck",
        "timeoutSec",
        "type",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:GRPCHealthCheck"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTP2HealthCheck"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPHealthCheck"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPSHealthCheck"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:HealthCheckLogConfig",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:SSLHealthCheck"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:TCPHealthCheck"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:HealthCheckType",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/v1:HttpHealthCheck": {
      "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#httpHealthCheck for HTTP health checks."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTP health check request. The default value is 80."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "healthyThreshold",
        "host",
        "kind",
        "name",
        "port",
        "project",
        "requestPath",
        "selfLink",
        "timeoutSec",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTP health check request. The default value is 80."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/v1:HttpsHealthCheck": {
      "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTPS health check request. The default value is 443."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "healthyThreshold",
        "host",
        "kind",
        "name",
        "port",
        "project",
        "requestPath",
        "selfLink",
        "timeoutSec",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "host": {
          "type": "string",
          "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port number for the HTTPS health check request. The default value is 443."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestPath": {
          "type": "string",
          "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986."
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      }
    },
    "google-native:compute/v1:Image": {
      "description": "Creates an image in the specified project using the data included in the request.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the image. Valid values are ARM64 or X86_64."
        },
        "archiveSizeBytes": {
          "type": "string",
          "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes)."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deprecated": {
          "$ref": "#/types/google-native:compute%2Fv1:DeprecationStatusResponse",
          "description": "The deprecation status associated with this image."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the image when restored onto a persistent disk (in GB)."
        },
        "family": {
          "type": "string",
          "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
        },
        "forceCreate": {
          "type": "boolean",
          "description": "Force image creation if true."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter."
        },
        "imageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#image for images."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an image."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this image. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this image."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any applicable license URI."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawDisk": {
          "$ref": "#/types/google-native:compute%2Fv1:ImageRawDiskResponse",
          "description": "The parameters of the raw disk image."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Fv1:InitialStateConfigResponse",
          "description": "Set the secure boot keys of shielded instance."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name."
        },
        "sourceImage": {
          "type": "string",
          "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name."
        },
        "sourceType": {
          "type": "string",
          "description": "The type of the image used to create this disk. The default and only valid value is RAW."
        },
        "status": {
          "type": "string",
          "description": "The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the image (regional or multi-regional)."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "archiveSizeBytes",
        "creationTimestamp",
        "deprecated",
        "description",
        "diskSizeGb",
        "family",
        "guestOsFeatures",
        "imageEncryptionKey",
        "kind",
        "labelFingerprint",
        "labels",
        "licenseCodes",
        "licenses",
        "name",
        "project",
        "rawDisk",
        "satisfiesPzs",
        "selfLink",
        "shieldedInstanceInitialState",
        "sourceDisk",
        "sourceDiskEncryptionKey",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceType",
        "status",
        "storageLocations"
      ],
      "inputProperties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Fv1:ImageArchitecture",
          "description": "The architecture of the image. Valid values are ARM64 or X86_64."
        },
        "archiveSizeBytes": {
          "type": "string",
          "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes)."
        },
        "deprecated": {
          "$ref": "#/types/google-native:compute%2Fv1:DeprecationStatus",
          "description": "The deprecation status associated with this image."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the image when restored onto a persistent disk (in GB)."
        },
        "family": {
          "type": "string",
          "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
        },
        "forceCreate": {
          "type": "boolean",
          "description": "Force image creation if true."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter."
        },
        "imageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this image. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this image."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any applicable license URI."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawDisk": {
          "$ref": "#/types/google-native:compute%2Fv1:ImageRawDisk",
          "description": "The parameters of the raw disk image."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "shieldedInstanceInitialState": {
          "$ref": "#/types/google-native:compute%2Fv1:InitialStateConfig",
          "description": "Set the secure boot keys of shielded instance."
        },
        "sourceDisk": {
          "type": "string",
          "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceImage": {
          "type": "string",
          "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceType": {
          "$ref": "#/types/google-native:compute%2Fv1:ImageSourceType",
          "description": "The type of the image used to create this disk. The default and only valid value is RAW."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the image (regional or multi-regional)."
        }
      }
    },
    "google-native:compute/v1:ImageIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:ImageIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:ImageIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:Instance": {
      "description": "Creates an instance resource in the specified project using the data included in the request.",
      "properties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Fv1:AdvancedMachineFeaturesResponse",
          "description": "Controls for advanced machine-related behavior features."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding ."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:ConfidentialInstanceConfigResponse"
        },
        "cpuPlatform": {
          "type": "string",
          "description": "The CPU platform used by this instance."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the resource should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskResponse"
          },
          "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Fv1:DisplayDeviceResponse",
          "description": "Enables display device for the instance."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the instance's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update the instance. You must always provide an up-to-date fingerprint hash in order to update the instance. To see the latest fingerprint, make get() request to the instance."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfigResponse"
          },
          "description": "A list of the type and count of accelerator cards attached to the instance."
        },
        "hostname": {
          "type": "string",
          "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS."
        },
        "instanceEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
        },
        "keyRevocationActionType": {
          "type": "string",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#instance for instances."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for this request, which is essentially a hash of the label's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method."
        },
        "lastStartTimestamp": {
          "type": "string",
          "description": "Last start timestamp in RFC3339 text format."
        },
        "lastStopTimestamp": {
          "type": "string",
          "description": "Last stop timestamp in RFC3339 text format."
        },
        "lastSuspendedTimestamp": {
          "type": "string",
          "description": "Last suspended timestamp in RFC3339 text format."
        },
        "machineType": {
          "type": "string",
          "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fv1:MetadataResponse",
          "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkInterfaceResponse"
          },
          "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkPerformanceConfigResponse"
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Fv1:ReservationAffinityResponse",
          "description": "Specifies the reservations that this instance can consume from."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this instance."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourceStatusResponse",
          "description": "Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fv1:SchedulingResponse",
          "description": "Sets the scheduling options for this instance."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for this resource."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ServiceAccountResponse"
          },
          "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:ShieldedInstanceConfigResponse"
        },
        "shieldedInstanceIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ShieldedInstanceIntegrityPolicyResponse"
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies instance template to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        },
        "sourceMachineImage": {
          "type": "string",
          "description": "Specifies the machine image to use to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to a machine image: - https://www.googleapis.com/compute/v1/projects/project/global/global /machineImages/machineImage - projects/project/global/global/machineImages/machineImage - global/machineImages/machineImage "
        },
        "sourceMachineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Source machine image encryption key when creating an instance from a machine image."
        },
        "startRestricted": {
          "type": "boolean",
          "description": "Whether a VM has been restricted for start because Compute Engine has detected suspicious activity."
        },
        "status": {
          "type": "string",
          "description": "The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING, and TERMINATED. For more information about the status of the instance, see Instance life cycle."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fv1:TagsResponse",
          "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "advancedMachineFeatures",
        "canIpForward",
        "confidentialInstanceConfig",
        "cpuPlatform",
        "creationTimestamp",
        "deletionProtection",
        "description",
        "disks",
        "displayDevice",
        "fingerprint",
        "guestAccelerators",
        "hostname",
        "instanceEncryptionKey",
        "keyRevocationActionType",
        "kind",
        "labelFingerprint",
        "labels",
        "lastStartTimestamp",
        "lastStopTimestamp",
        "lastSuspendedTimestamp",
        "machineType",
        "metadata",
        "minCpuPlatform",
        "name",
        "networkInterfaces",
        "networkPerformanceConfig",
        "params",
        "privateIpv6GoogleAccess",
        "project",
        "reservationAffinity",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "scheduling",
        "selfLink",
        "serviceAccounts",
        "shieldedInstanceConfig",
        "shieldedInstanceIntegrityPolicy",
        "sourceMachineImage",
        "sourceMachineImageEncryptionKey",
        "startRestricted",
        "status",
        "statusMessage",
        "tags",
        "zone"
      ],
      "inputProperties": {
        "advancedMachineFeatures": {
          "$ref": "#/types/google-native:compute%2Fv1:AdvancedMachineFeatures",
          "description": "Controls for advanced machine-related behavior features."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding ."
        },
        "confidentialInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:ConfidentialInstanceConfig"
        },
        "deletionProtection": {
          "type": "boolean",
          "description": "Whether the resource should be protected against deletion."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AttachedDisk"
          },
          "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them."
        },
        "displayDevice": {
          "$ref": "#/types/google-native:compute%2Fv1:DisplayDevice",
          "description": "Enables display device for the instance."
        },
        "guestAccelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfig"
          },
          "description": "A list of the type and count of accelerator cards attached to the instance."
        },
        "hostname": {
          "type": "string",
          "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS."
        },
        "instanceEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
        },
        "keyRevocationActionType": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceKeyRevocationActionType",
          "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method."
        },
        "machineType": {
          "type": "string",
          "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types."
        },
        "metadata": {
          "$ref": "#/types/google-native:compute%2Fv1:Metadata",
          "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
        },
        "minCpuPlatform": {
          "type": "string",
          "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkInterface"
          },
          "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance."
        },
        "networkPerformanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkPerformanceConfig"
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Fv1:InstancePrivateIpv6GoogleAccess",
          "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:compute%2Fv1:ReservationAffinity",
          "description": "Specifies the reservations that this instance can consume from."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this instance."
        },
        "scheduling": {
          "$ref": "#/types/google-native:compute%2Fv1:Scheduling",
          "description": "Sets the scheduling options for this instance."
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ServiceAccount"
          },
          "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:ShieldedInstanceConfig"
        },
        "shieldedInstanceIntegrityPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ShieldedInstanceIntegrityPolicy"
        },
        "sourceInstanceTemplate": {
          "type": "string",
          "description": "Specifies instance template to create the instance. This field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: - https://www.googleapis.com/compute/v1/projects/project /global/instanceTemplates/instanceTemplate - projects/project/global/instanceTemplates/instanceTemplate - global/instanceTemplates/instanceTemplate "
        },
        "sourceMachineImage": {
          "type": "string",
          "description": "Source machine image"
        },
        "sourceMachineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "Source machine image encryption key when creating an instance from a machine image."
        },
        "tags": {
          "$ref": "#/types/google-native:compute%2Fv1:Tags",
          "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/v1:InstanceGroup": {
      "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance group in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroup for instance groups."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NamedPortResponse"
          },
          "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. "
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the instance group is located (for regional resources)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance group. The server generates this URL."
        },
        "size": {
          "type": "integer",
          "description": "The total number of instances in the instance group."
        },
        "subnetwork": {
          "type": "string",
          "description": "The URL of the subnetwork to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "namedPorts",
        "network",
        "project",
        "region",
        "selfLink",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NamedPort"
          },
          "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/v1:InstanceGroupManager": {
      "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, instances in the group are created using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method. A managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
      "properties": {
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerAutoHealingPolicyResponse"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this managed instance group in RFC3339 text format."
        },
        "currentActions": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerActionsSummaryResponse",
          "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicyResponse",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager."
        },
        "instanceGroup": {
          "type": "string",
          "description": "The URL of the Instance Group resource."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerInstanceLifecyclePolicyResponse",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups."
        },
        "listManagedInstancesResults": {
          "type": "string",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NamedPortResponse"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the managed instance group resides (for regional resources)."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this managed instance group. The server defines this URL."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:StatefulPolicyResponse",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerStatusResponse",
          "description": "The status of this managed instance group."
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyResponse",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerVersionResponse"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoHealingPolicies",
        "baseInstanceName",
        "creationTimestamp",
        "currentActions",
        "description",
        "distributionPolicy",
        "fingerprint",
        "instanceGroup",
        "instanceLifecyclePolicy",
        "instanceTemplate",
        "kind",
        "listManagedInstancesResults",
        "name",
        "namedPorts",
        "project",
        "region",
        "selfLink",
        "statefulPolicy",
        "status",
        "targetPools",
        "targetSize",
        "updatePolicy",
        "versions",
        "zone"
      ],
      "inputProperties": {
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerAutoHealingPolicy"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicy",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerInstanceLifecyclePolicy",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "listManagedInstancesResults": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerListManagedInstancesResults",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NamedPort"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:StatefulPolicy",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicy",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerVersion"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/v1:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:InstanceTemplate": {
      "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance template in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceTemplate for instance templates."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Fv1:InstancePropertiesResponse",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the instance template resides. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance template. The server defines this URL."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Fv1:SourceInstanceParamsResponse",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "properties",
        "region",
        "selfLink",
        "sourceInstance",
        "sourceInstanceParams"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceProperties",
          "description": "The instance properties for this instance template."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Fv1:SourceInstanceParams",
          "description": "The source instance params to use to create this instance template."
        }
      }
    },
    "google-native:compute/v1:InstanceTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:InstanceTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:InstanceTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:Interconnect": {
      "description": "Creates an Interconnect in the specified project using the data included in the request.",
      "properties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
        },
        "availableFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] List of features available for this Interconnect connection, which can take one of the following values: - MACSEC If present then the Interconnect connection is provisioned on MACsec capable hardware ports. If not present then the Interconnect connection is provisioned on non-MACsec capable ports and MACsec isn't supported and enabling MACsec fails."
        },
        "circuitInfos": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectCircuitInfoResponse"
          },
          "description": "A list of CircuitInfo objects, that describe the individual circuits in this LAG."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customerName": {
          "type": "string",
          "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expectedOutages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectOutageNotificationResponse"
          },
          "description": "A list of outages expected for this Interconnect."
        },
        "googleIpAddress": {
          "type": "string",
          "description": "IP address configured on the Google side of the Interconnect link. This can be used only for ping tests."
        },
        "googleReferenceId": {
          "type": "string",
          "description": "Google reference ID to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
        },
        "interconnectAttachments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the URLs of all InterconnectAttachments configured to use this Interconnect."
        },
        "interconnectType": {
          "type": "string",
          "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#interconnect for interconnects."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Interconnect."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "linkType": {
          "type": "string",
          "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle."
        },
        "location": {
          "type": "string",
          "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
        },
        "macsec": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectMacsecResponse",
          "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
        },
        "macsecEnabled": {
          "type": "boolean",
          "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nocContactEmail": {
          "type": "string",
          "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation."
        },
        "operationalStatus": {
          "type": "string",
          "description": "The current status of this Interconnect's functionality, which can take one of the following values: - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. "
        },
        "peerIpAddress": {
          "type": "string",
          "description": "IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedLinkCount": {
          "type": "integer",
          "description": "Number of links actually provisioned in this interconnect."
        },
        "remoteLocation": {
          "type": "string",
          "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH."
        },
        "requestedLinkCount": {
          "type": "integer",
          "description": "Target number of physical links in the link bundle, as requested by the customer."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "state": {
          "type": "string",
          "description": "The current state of Interconnect functionality, which can take one of the following values: - ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. - UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. - UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. "
        }
      },
      "type": "object",
      "required": [
        "adminEnabled",
        "availableFeatures",
        "circuitInfos",
        "creationTimestamp",
        "customerName",
        "description",
        "expectedOutages",
        "googleIpAddress",
        "googleReferenceId",
        "interconnectAttachments",
        "interconnectType",
        "kind",
        "labelFingerprint",
        "labels",
        "linkType",
        "location",
        "macsec",
        "macsecEnabled",
        "name",
        "nocContactEmail",
        "operationalStatus",
        "peerIpAddress",
        "project",
        "provisionedLinkCount",
        "remoteLocation",
        "requestedFeatures",
        "requestedLinkCount",
        "satisfiesPzs",
        "selfLink",
        "state"
      ],
      "inputProperties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
        },
        "customerName": {
          "type": "string",
          "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "interconnectType": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectInterconnectType",
          "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "linkType": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectLinkType",
          "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle."
        },
        "location": {
          "type": "string",
          "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
        },
        "macsec": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectMacsec",
          "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
        },
        "macsecEnabled": {
          "type": "boolean",
          "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nocContactEmail": {
          "type": "string",
          "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteLocation": {
          "type": "string",
          "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "requestedFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectRequestedFeaturesItem"
          },
          "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH."
        },
        "requestedLinkCount": {
          "type": "integer",
          "description": "Target number of physical links in the link bundle, as requested by the customer."
        }
      }
    },
    "google-native:compute/v1:InterconnectAttachment": {
      "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
      "properties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER."
        },
        "bandwidth": {
          "type": "string",
          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s "
        },
        "candidateIpv6Subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is not available."
        },
        "candidateSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space."
        },
        "cloudRouterIpAddress": {
          "type": "string",
          "description": "IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
        },
        "cloudRouterIpv6Address": {
          "type": "string",
          "description": "IPv6 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
        },
        "cloudRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "configurationConstraints": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentConfigurationConstraintsResponse",
          "description": "Constraints for this attachment, if any. The attachment does not work if these constraints are not met."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customerRouterIpAddress": {
          "type": "string",
          "description": "IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
        },
        "customerRouterIpv6Address": {
          "type": "string",
          "description": "IPv6 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
        },
        "customerRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "dataplaneVersion": {
          "type": "integer",
          "description": "Dataplane version for this InterconnectAttachment. This field is only present for Dataplane version 2 and higher. Absence of this field in the API output indicates that the Dataplane is version 1."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "edgeAvailabilityDomain": {
          "type": "string",
          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY."
        },
        "encryption": {
          "type": "string",
          "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. "
        },
        "googleReferenceId": {
          "type": "string",
          "description": "Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
          "deprecationMessage": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used."
        },
        "interconnect": {
          "type": "string",
          "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
        },
        "ipsecInternalAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#interconnectAttachment for interconnect attachments."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "operationalStatus": {
          "type": "string",
          "description": "The current status of whether or not this interconnect attachment is functional, which can take one of the following values: - OS_ACTIVE: The attachment has been turned up and is ready to use. - OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. "
        },
        "pairingKey": {
          "type": "string",
          "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\""
        },
        "partnerAsn": {
          "type": "string",
          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "partnerMetadata": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentPartnerMetadataResponse",
          "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "privateInterconnectInfo": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentPrivateInfoResponse",
          "description": "Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteService": {
          "type": "string",
          "description": "If the attachment is on a Cross-Cloud Interconnect connection, this field contains the interconnect's remote location service provider. Example values: \"Amazon Web Services\" \"Microsoft Azure\". The field is set only for attachments on Cross-Cloud Interconnect connections. Its value is copied from the InterconnectRemoteLocation remoteService field."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations."
        },
        "state": {
          "type": "string",
          "description": "The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: - ACTIVE: The attachment has been turned up and is ready to use. - UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. - PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. - DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted. "
        },
        "subnetLength": {
          "type": "integer",
          "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. "
        },
        "type": {
          "type": "string",
          "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. "
        },
        "vlanTag8021q": {
          "type": "integer",
          "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time."
        }
      },
      "type": "object",
      "required": [
        "adminEnabled",
        "bandwidth",
        "candidateIpv6Subnets",
        "candidateSubnets",
        "cloudRouterIpAddress",
        "cloudRouterIpv6Address",
        "cloudRouterIpv6InterfaceId",
        "configurationConstraints",
        "creationTimestamp",
        "customerRouterIpAddress",
        "customerRouterIpv6Address",
        "customerRouterIpv6InterfaceId",
        "dataplaneVersion",
        "description",
        "edgeAvailabilityDomain",
        "encryption",
        "googleReferenceId",
        "interconnect",
        "ipsecInternalAddresses",
        "kind",
        "labelFingerprint",
        "labels",
        "mtu",
        "name",
        "operationalStatus",
        "pairingKey",
        "partnerAsn",
        "partnerMetadata",
        "privateInterconnectInfo",
        "project",
        "region",
        "remoteService",
        "router",
        "satisfiesPzs",
        "selfLink",
        "stackType",
        "state",
        "subnetLength",
        "type",
        "vlanTag8021q"
      ],
      "inputProperties": {
        "adminEnabled": {
          "type": "boolean",
          "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER."
        },
        "bandwidth": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentBandwidth",
          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s "
        },
        "candidateIpv6Subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is not available."
        },
        "candidateSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space."
        },
        "cloudRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "customerRouterIpv6InterfaceId": {
          "type": "string",
          "description": "This field is not available."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "edgeAvailabilityDomain": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentEdgeAvailabilityDomain",
          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY."
        },
        "encryption": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentEncryption",
          "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. "
        },
        "interconnect": {
          "type": "string",
          "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
        },
        "ipsecInternalAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pairingKey": {
          "type": "string",
          "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\""
        },
        "partnerAsn": {
          "type": "string",
          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "partnerMetadata": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentPartnerMetadata",
          "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentStackType",
          "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations."
        },
        "subnetLength": {
          "type": "integer",
          "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. "
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentType",
          "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. "
        },
        "vlanTag8021q": {
          "type": "integer",
          "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:License": {
      "description": "Create a License resource in the specified project. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "chargesUseFee": {
          "type": "boolean",
          "description": "Deprecated. This field no longer reflects whether a license charges a usage fee.",
          "deprecationMessage": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#license for licenses."
        },
        "licenseCode": {
          "type": "string",
          "description": "The unique code used to attach this license to images, snapshots, and disks."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceRequirements": {
          "$ref": "#/types/google-native:compute%2Fv1:LicenseResourceRequirementsResponse"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "transferable": {
          "type": "boolean",
          "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk."
        }
      },
      "type": "object",
      "required": [
        "chargesUseFee",
        "creationTimestamp",
        "description",
        "kind",
        "licenseCode",
        "name",
        "project",
        "resourceRequirements",
        "selfLink",
        "transferable"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceRequirements": {
          "$ref": "#/types/google-native:compute%2Fv1:LicenseResourceRequirements"
        },
        "transferable": {
          "type": "boolean",
          "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk."
        }
      }
    },
    "google-native:compute/v1:LicenseIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:LicenseIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:LicenseIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. \nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:MachineImage": {
      "description": "Creates a machine image in the specified project using the data that is included in the request. If you are creating a new machine image to update an existing instance, your new machine image should use the same network or, if applicable, the same subnetwork as the original instance.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this machine image in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process."
        },
        "instanceProperties": {
          "$ref": "#/types/google-native:compute%2Fv1:InstancePropertiesResponse",
          "description": "Properties of source instance"
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#machineImage for machine image."
        },
        "machineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "savedDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SavedDiskResponse"
          },
          "description": "An array of Machine Image specific properties for disks attached to the source instance"
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this machine image. The server defines this URL."
        },
        "sourceDiskEncryptionKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SourceDiskEncryptionKeyResponse"
          },
          "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceInstance": {
          "type": "string",
          "description": "Required. Source instance that is used to create the machine image from.",
          "replaceOnChanges": true
        },
        "sourceInstanceProperties": {
          "$ref": "#/types/google-native:compute%2Fv1:SourceInstancePropertiesResponse",
          "description": "DEPRECATED: Please use instance_properties instead for source instance related properties. New properties will not be added to this field."
        },
        "status": {
          "type": "string",
          "description": "The status of the machine image. One of the following values: INVALID, CREATING, READY, DELETING, and UPLOADING."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored."
        },
        "totalStorageBytes": {
          "type": "string",
          "description": "Total size of the storage used by the machine image."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "guestFlush",
        "instanceProperties",
        "kind",
        "machineImageEncryptionKey",
        "name",
        "project",
        "satisfiesPzs",
        "savedDisks",
        "selfLink",
        "sourceDiskEncryptionKeys",
        "sourceInstance",
        "sourceInstanceProperties",
        "status",
        "storageLocations",
        "totalStorageBytes"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "guestFlush": {
          "type": "boolean",
          "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process."
        },
        "machineImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "savedDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SavedDisk"
          },
          "description": "An array of Machine Image specific properties for disks attached to the source instance"
        },
        "sourceDiskEncryptionKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SourceDiskEncryptionKey"
          },
          "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the machine image. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored."
        }
      },
      "requiredInputs": [
        "sourceInstance"
      ]
    },
    "google-native:compute/v1:MachineImageIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:MachineImageIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:MachineImageIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:Network": {
      "description": "Creates a network in the specified project using the data included in the request.",
      "properties": {
        "autoCreateSubnetworks": {
          "type": "boolean",
          "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "enableUlaInternalIpv6": {
          "type": "boolean",
          "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. ."
        },
        "firewallPolicy": {
          "type": "string",
          "description": "URL of the firewall policy the network is associated with."
        },
        "gatewayIPv4": {
          "type": "string",
          "description": "The gateway address for default routing out of the network, selected by Google Cloud."
        },
        "internalIpv6Range": {
          "type": "string",
          "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. ."
        },
        "ipv4Range": {
          "type": "string",
          "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
          "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#network for networks."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "networkFirewallPolicyEnforcementOrder": {
          "type": "string",
          "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified."
        },
        "peerings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkPeeringResponse"
          },
          "description": "A list of network peerings for the resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routingConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkRoutingConfigResponse",
          "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Server-defined fully-qualified URLs for all subnetworks in this VPC network."
        }
      },
      "type": "object",
      "required": [
        "autoCreateSubnetworks",
        "creationTimestamp",
        "description",
        "enableUlaInternalIpv6",
        "firewallPolicy",
        "gatewayIPv4",
        "internalIpv6Range",
        "ipv4Range",
        "kind",
        "mtu",
        "name",
        "networkFirewallPolicyEnforcementOrder",
        "peerings",
        "project",
        "routingConfig",
        "selfLink",
        "selfLinkWithId",
        "subnetworks"
      ],
      "inputProperties": {
        "autoCreateSubnetworks": {
          "type": "boolean",
          "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "enableUlaInternalIpv6": {
          "type": "boolean",
          "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. ."
        },
        "internalIpv6Range": {
          "type": "string",
          "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. ."
        },
        "ipv4Range": {
          "type": "string",
          "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
          "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created."
        },
        "mtu": {
          "type": "integer",
          "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "networkFirewallPolicyEnforcementOrder": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkNetworkFirewallPolicyEnforcementOrder",
          "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routingConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkRoutingConfig",
          "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
        }
      }
    },
    "google-native:compute/v1:NetworkAttachment": {
      "description": "Creates a NetworkAttachment in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "connectionEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkAttachmentConnectedEndpointResponse"
          },
          "description": "An array of connections for all the producers connected to this network attachment."
        },
        "connectionPreference": {
          "type": "string"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. An up-to-date fingerprint must be provided in order to patch."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network which the Network Attachment belongs to. Practically it is inferred by fetching the network of the first subnetwork associated. Because it is required that all the subnetworks must be from the same network, it is assured that the Network Attachment belongs to the same network as all the subnetworks."
        },
        "producerAcceptLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "producerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000). end_interface: MixerMutationRequestBuilder"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource's resource id."
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment."
        }
      },
      "type": "object",
      "required": [
        "connectionEndpoints",
        "connectionPreference",
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "network",
        "producerAcceptLists",
        "producerRejectLists",
        "project",
        "region",
        "selfLink",
        "selfLinkWithId",
        "subnetworks"
      ],
      "inputProperties": {
        "connectionPreference": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkAttachmentConnectionPreference"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "producerAcceptLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "producerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000). end_interface: MixerMutationRequestBuilder"
        },
        "subnetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:NetworkAttachmentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:NetworkAttachmentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:NetworkAttachmentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/v1:NetworkEdgeSecurityService": {
      "description": "Creates a new service in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a NetworkEdgeSecurityService. An up-to-date fingerprint must be provided in order to update the NetworkEdgeSecurityService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a NetworkEdgeSecurityService."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#networkEdgeSecurityService for NetworkEdgeSecurityServices"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the network edge security service associated with this network edge security service."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "project",
        "region",
        "securityPolicy",
        "selfLink",
        "selfLinkWithId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the network edge security service associated with this network edge security service."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:NetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "description": "The URL of the region where the network endpoint group is located."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/v1:NetworkFirewallPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "project",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      }
    },
    "google-native:compute/v1:NetworkFirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:NetworkFirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:NetworkFirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:NodeGroup": {
      "description": "Creates a NodeGroup resource in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeGroupAutoscalingPolicyResponse",
          "description": "Specifies how autoscaling should behave."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string"
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "Initial count of nodes in the node group.",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#nodeGroup for node group."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate."
        },
        "maintenancePolicy": {
          "type": "string",
          "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeGroupMaintenanceWindowResponse"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeTemplate": {
          "type": "string",
          "description": "URL of the node template to create the node group from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fv1:ShareSettingsResponse",
          "description": "Share-settings for the node group"
        },
        "size": {
          "type": "integer",
          "description": "The total number of nodes in the node group."
        },
        "status": {
          "type": "string"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "fingerprint",
        "initialNodeCount",
        "kind",
        "locationHint",
        "maintenancePolicy",
        "maintenanceWindow",
        "name",
        "nodeTemplate",
        "project",
        "selfLink",
        "shareSettings",
        "size",
        "status",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeGroupAutoscalingPolicy",
          "description": "Specifies how autoscaling should behave."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "Initial count of nodes in the node group.",
          "replaceOnChanges": true
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeGroupMaintenancePolicy",
          "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeGroupMaintenanceWindow"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeTemplate": {
          "type": "string",
          "description": "URL of the node template to create the node group from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fv1:ShareSettings",
          "description": "Share-settings for the node group"
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "initialNodeCount"
      ]
    },
    "google-native:compute/v1:NodeGroupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:NodeGroupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:NodeGroupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:NodeTemplate": {
      "description": "Creates a NodeTemplate resource in the specified project using the data included in the request.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfigResponse"
          }
        },
        "cpuOvercommitType": {
          "type": "string",
          "description": "CPU overcommit."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:LocalDiskResponse"
          }
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#nodeTemplate for node templates."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeAffinityLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to use for node affinity, which will be used in instance scheduling."
        },
        "nodeType": {
          "type": "string",
          "description": "The node type to use for nodes group that are created from this template."
        },
        "nodeTypeFlexibility": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeTemplateNodeTypeFlexibilityResponse",
          "description": "Do not use. Instead, use the node_type property."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverBinding": {
          "$ref": "#/types/google-native:compute%2Fv1:ServerBindingResponse",
          "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
        },
        "status": {
          "type": "string",
          "description": "The status of the node template. One of the following values: CREATING, READY, and DELETING."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "cpuOvercommitType",
        "creationTimestamp",
        "description",
        "disks",
        "kind",
        "name",
        "nodeAffinityLabels",
        "nodeType",
        "nodeTypeFlexibility",
        "project",
        "region",
        "selfLink",
        "serverBinding",
        "status",
        "statusMessage"
      ],
      "inputProperties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfig"
          }
        },
        "cpuOvercommitType": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeTemplateCpuOvercommitType",
          "description": "CPU overcommit."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:LocalDisk"
          }
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nodeAffinityLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to use for node affinity, which will be used in instance scheduling."
        },
        "nodeType": {
          "type": "string",
          "description": "The node type to use for nodes group that are created from this template."
        },
        "nodeTypeFlexibility": {
          "$ref": "#/types/google-native:compute%2Fv1:NodeTemplateNodeTypeFlexibility",
          "description": "Do not use. Instead, use the node_type property."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverBinding": {
          "$ref": "#/types/google-native:compute%2Fv1:ServerBinding",
          "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:NodeTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:NodeTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:NodeTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/v1:PacketMirroring": {
      "description": "Creates a PacketMirroring resource in the specified project and region using the data included in the request.",
      "properties": {
        "collectorIlb": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringForwardingRuleInfoResponse",
          "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enable": {
          "type": "string",
          "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringFilterResponse",
          "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#packetMirroring for packet mirrorings."
        },
        "mirroredResources": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringMirroredResourceInfoResponse",
          "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringNetworkInfoResponse",
          "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "collectorIlb",
        "creationTimestamp",
        "description",
        "enable",
        "filter",
        "kind",
        "mirroredResources",
        "name",
        "network",
        "priority",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "collectorIlb": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringForwardingRuleInfo",
          "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enable": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringEnable",
          "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE."
        },
        "filter": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringFilter",
          "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
        },
        "mirroredResources": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringMirroredResourceInfo",
          "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringNetworkInfo",
          "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:PublicAdvertisedPrefix": {
      "description": "Creates a PublicAdvertisedPrefix in the specified project using the parameters that are included in the request.",
      "properties": {
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "dnsVerificationIp": {
          "type": "string",
          "description": "The address to be used for reverse DNS verification."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicAdvertisedPrefix. An up-to-date fingerprint must be provided in order to update the PublicAdvertisedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicAdvertisedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The address range, in CIDR format, represented by this public advertised prefix."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicAdvertisedPrefix for public advertised prefixes."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pdpScope": {
          "type": "string",
          "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PublicAdvertisedPrefixPublicDelegatedPrefixResponse"
          },
          "description": "The list of public delegated prefixes that exist for this public advertised prefix."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sharedSecret": {
          "type": "string",
          "description": "The shared secret to be used for reverse DNS verification."
        },
        "status": {
          "type": "string",
          "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. "
        }
      },
      "type": "object",
      "required": [
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "dnsVerificationIp",
        "fingerprint",
        "ipCidrRange",
        "kind",
        "name",
        "pdpScope",
        "project",
        "publicDelegatedPrefixs",
        "selfLink",
        "sharedSecret",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "dnsVerificationIp": {
          "type": "string",
          "description": "The address to be used for reverse DNS verification."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The address range, in CIDR format, represented by this public advertised prefix."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pdpScope": {
          "$ref": "#/types/google-native:compute%2Fv1:PublicAdvertisedPrefixPdpScope",
          "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Fv1:PublicAdvertisedPrefixStatus",
          "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. "
        }
      }
    },
    "google-native:compute/v1:PublicDelegatedPrefix": {
      "description": "Creates a PublicDelegatedPrefix in the specified project in the given region using the parameters that are included in the request.",
      "properties": {
        "byoipApiVersion": {
          "type": "string",
          "description": "The version of BYOIP API."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. "
        }
      },
      "type": "object",
      "required": [
        "byoipApiVersion",
        "creationTimestamp",
        "description",
        "fingerprint",
        "ipCidrRange",
        "isLiveMigration",
        "kind",
        "name",
        "parentPrefix",
        "project",
        "publicDelegatedSubPrefixs",
        "region",
        "selfLink",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP address range, in CIDR format, represented by this public delegated prefix."
        },
        "isLiveMigration": {
          "type": "boolean",
          "description": "If true, the prefix will be live migrated."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "parentPrefix": {
          "type": "string",
          "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicDelegatedSubPrefixs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PublicDelegatedPrefixPublicDelegatedSubPrefix"
          },
          "description": "The list of sub public delegated prefixes that exist for this public delegated prefix."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionAutoscaler": {
      "description": "Creates an autoscaler in the specified project using the data included in the request.",
      "properties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyResponse",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#autoscaler for autoscalers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendedSize": {
          "type": "integer",
          "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "scalingScheduleStatus": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Status information of existing scaling schedules."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future."
        },
        "statusDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AutoscalerStatusDetailsResponse"
          },
          "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        },
        "zone": {
          "type": "string",
          "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope)."
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicy",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "recommendedSize",
        "region",
        "scalingScheduleStatus",
        "selfLink",
        "status",
        "statusDetails",
        "target",
        "zone"
      ],
      "inputProperties": {
        "autoscalingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicy",
          "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "target": {
          "type": "string",
          "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionBackendService": {
      "description": "Creates a regional BackendService resource in the specified project using the data included in the request. For more information, see Backend services overview.",
      "properties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendResponse"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicyResponse",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Fv1:CircuitBreakersResponse"
        },
        "compressionMode": {
          "type": "string",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Fv1:ConnectionDrainingResponse"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceConnectionTrackingPolicyResponse",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Fv1:ConsistentHashLoadBalancerSettingsResponse",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "edgeSecurityPolicy": {
          "type": "string",
          "description": "The resource URL for the edge security policy associated with this backend service."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceFailoverPolicyResponse",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceIAPResponse",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#backendService for backend services."
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "type": "string",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLogConfigResponse",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Fv1:OutlierDetectionResponse",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this backend service."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Fv1:SecuritySettingsResponse",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Fv1:SubsettingResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceUsedByResponse"
          }
        }
      },
      "type": "object",
      "required": [
        "affinityCookieTtlSec",
        "backends",
        "cdnPolicy",
        "circuitBreakers",
        "compressionMode",
        "connectionDraining",
        "connectionTrackingPolicy",
        "consistentHash",
        "creationTimestamp",
        "customRequestHeaders",
        "customResponseHeaders",
        "description",
        "edgeSecurityPolicy",
        "enableCDN",
        "failoverPolicy",
        "fingerprint",
        "healthChecks",
        "iap",
        "kind",
        "loadBalancingScheme",
        "localityLbPolicies",
        "localityLbPolicy",
        "logConfig",
        "maxStreamDuration",
        "metadatas",
        "name",
        "network",
        "outlierDetection",
        "port",
        "portName",
        "project",
        "protocol",
        "region",
        "securityPolicy",
        "securitySettings",
        "selfLink",
        "serviceBindings",
        "sessionAffinity",
        "subsetting",
        "timeoutSec",
        "usedBy"
      ],
      "inputProperties": {
        "affinityCookieTtlSec": {
          "type": "integer",
          "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "backends": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Backend"
          },
          "description": "The list of backends that serve this BackendService."
        },
        "cdnPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicy",
          "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
        },
        "circuitBreakers": {
          "$ref": "#/types/google-native:compute%2Fv1:CircuitBreakers"
        },
        "compressionMode": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionBackendServiceCompressionMode",
          "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header."
        },
        "connectionDraining": {
          "$ref": "#/types/google-native:compute%2Fv1:ConnectionDraining"
        },
        "connectionTrackingPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceConnectionTrackingPolicy",
          "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
        },
        "consistentHash": {
          "$ref": "#/types/google-native:compute%2Fv1:ConsistentHashLoadBalancerSettings",
          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
        },
        "customRequestHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "customResponseHeaders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers)."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enableCDN": {
          "type": "boolean",
          "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer."
        },
        "failoverPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceFailoverPolicy",
          "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check."
        },
        "iap": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceIAP",
          "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionBackendServiceLoadBalancingScheme",
          "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer."
        },
        "localityLbPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfig"
          },
          "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration."
        },
        "localityLbPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionBackendServiceLocalityLbPolicy",
          "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLogConfig",
          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
        },
        "maxStreamDuration": {
          "$ref": "#/types/google-native:compute%2Fv1:Duration",
          "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
        },
        "metadatas": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL."
        },
        "outlierDetection": {
          "$ref": "#/types/google-native:compute%2Fv1:OutlierDetection",
          "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
        },
        "port": {
          "type": "integer",
          "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
          "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port."
        },
        "portName": {
          "type": "string",
          "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionBackendServiceProtocol",
          "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securitySettings": {
          "$ref": "#/types/google-native:compute%2Fv1:SecuritySettings",
          "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
        },
        "serviceBindings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionBackendServiceSessionAffinity",
          "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity)."
        },
        "subsetting": {
          "$ref": "#/types/google-native:compute%2Fv1:Subsetting"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration."
        },
        "usedBy": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceUsedBy"
          }
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionBackendServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:RegionBackendServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:RegionBackendServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/v1:RegionCommitment": {
      "description": "Creates a commitment in the specified project using the data included in the request.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "autoRenew": {
          "type": "boolean",
          "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment."
        },
        "category": {
          "type": "string",
          "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "endTimestamp": {
          "type": "string",
          "description": "Commitment end time in RFC3339 text format."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#commitment for commitments."
        },
        "licenseResource": {
          "$ref": "#/types/google-native:compute%2Fv1:LicenseResourceCommitmentResponse",
          "description": "The license specification required as part of a license commitment."
        },
        "mergeSourceCommitments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of source commitments to be merged into a new commitment."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "plan": {
          "type": "string",
          "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ReservationResponse"
          },
          "description": "List of create-on-create reseravtions for this commitment."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourceCommitmentResponse"
          },
          "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "splitSourceCommitment": {
          "type": "string",
          "description": "Source commitment to be split into a new commitment."
        },
        "startTimestamp": {
          "type": "string",
          "description": "Commitment start time in RFC3339 text format."
        },
        "status": {
          "type": "string",
          "description": "Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED."
        },
        "statusMessage": {
          "type": "string",
          "description": "An optional, human-readable explanation of the status."
        },
        "type": {
          "type": "string",
          "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines."
        }
      },
      "type": "object",
      "required": [
        "autoRenew",
        "category",
        "creationTimestamp",
        "description",
        "endTimestamp",
        "kind",
        "licenseResource",
        "mergeSourceCommitments",
        "name",
        "plan",
        "project",
        "region",
        "reservations",
        "resources",
        "selfLink",
        "splitSourceCommitment",
        "startTimestamp",
        "status",
        "statusMessage",
        "type"
      ],
      "inputProperties": {
        "autoRenew": {
          "type": "boolean",
          "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment."
        },
        "category": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionCommitmentCategory",
          "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "licenseResource": {
          "$ref": "#/types/google-native:compute%2Fv1:LicenseResourceCommitment",
          "description": "The license specification required as part of a license commitment."
        },
        "mergeSourceCommitments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of source commitments to be merged into a new commitment."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "plan": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionCommitmentPlan",
          "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "reservations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Reservation"
          },
          "description": "List of create-on-create reseravtions for this commitment."
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourceCommitment"
          },
          "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together."
        },
        "splitSourceCommitment": {
          "type": "string",
          "description": "Source commitment to be split into a new commitment."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionCommitmentType",
          "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionDisk": {
      "description": "Creates a persistent regional disk in the specified project using the data included in the request.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskAsyncReplicationResponse",
          "description": "Disk asynchronously replicated into this disk."
        },
        "asyncSecondaryDisks": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A list of disks this disk is asynchronously replicated to."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#disk for disks."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "lastAttachTimestamp": {
          "type": "string",
          "description": "Last attach timestamp in RFC3339 text format."
        },
        "lastDetachTimestamp": {
          "type": "string",
          "description": "Last detach timestamp in RFC3339 text format."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskParamsResponse",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskResourceStatusResponse",
          "description": "Status information for the disk resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceConsistencyGroupPolicy": {
          "type": "string",
          "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceConsistencyGroupPolicyId": {
          "type": "string",
          "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used."
        },
        "sourceImage": {
          "type": "string",
          "description": "Source image to restore onto a disk. This field is optional."
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceImageId": {
          "type": "string",
          "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceSnapshotId": {
          "type": "string",
          "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "status": {
          "type": "string",
          "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. "
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance"
        },
        "zone": {
          "type": "string",
          "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "asyncPrimaryDisk",
        "asyncSecondaryDisks",
        "creationTimestamp",
        "description",
        "diskEncryptionKey",
        "guestOsFeatures",
        "kind",
        "labelFingerprint",
        "labels",
        "lastAttachTimestamp",
        "lastDetachTimestamp",
        "licenseCodes",
        "licenses",
        "locationHint",
        "name",
        "options",
        "params",
        "physicalBlockSizeBytes",
        "project",
        "provisionedIops",
        "provisionedThroughput",
        "region",
        "replicaZones",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "sizeGb",
        "sourceConsistencyGroupPolicy",
        "sourceConsistencyGroupPolicyId",
        "sourceDisk",
        "sourceDiskId",
        "sourceImage",
        "sourceImageEncryptionKey",
        "sourceImageId",
        "sourceSnapshot",
        "sourceSnapshotEncryptionKey",
        "sourceSnapshotId",
        "sourceStorageObject",
        "status",
        "type",
        "users",
        "zone"
      ],
      "inputProperties": {
        "architecture": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionDiskArchitecture",
          "description": "The architecture of the disk. Valid values are ARM64 or X86_64."
        },
        "asyncPrimaryDisk": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskAsyncReplication",
          "description": "Disk asynchronously replicated into this disk."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeature"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this disk. These can be later modified by the setLabels method."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this disk."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of publicly visible licenses. Reserved for Google's use."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "type": "string",
          "description": "Internal use only."
        },
        "params": {
          "$ref": "#/types/google-native:compute%2Fv1:DiskParams",
          "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
        },
        "physicalBlockSizeBytes": {
          "type": "string",
          "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisionedIops": {
          "type": "string",
          "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation."
        },
        "provisionedThroughput": {
          "type": "string",
          "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource policies applied to this disk for automatic snapshot creations."
        },
        "sizeGb": {
          "type": "string",
          "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk "
        },
        "sourceImage": {
          "type": "string",
          "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family "
        },
        "sourceImageEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
        },
        "sourceSnapshot": {
          "type": "string",
          "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot "
        },
        "sourceSnapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
        },
        "sourceStorageObject": {
          "type": "string",
          "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead."
        },
        "type": {
          "type": "string",
          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionDiskIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:RegionDiskIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:RegionDiskIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/v1:RegionHealthCheck": {
      "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
      "properties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in 3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:GRPCHealthCheckResponse"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTP2HealthCheckResponse"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPHealthCheckResponse"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPSHealthCheckResponse"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:HealthCheckLogConfigResponse",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:SSLHealthCheckResponse"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:TCPHealthCheckResponse"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "type": "string",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "type": "object",
      "required": [
        "checkIntervalSec",
        "creationTimestamp",
        "description",
        "grpcHealthCheck",
        "healthyThreshold",
        "http2HealthCheck",
        "httpHealthCheck",
        "httpsHealthCheck",
        "kind",
        "logConfig",
        "name",
        "project",
        "region",
        "selfLink",
        "sslHealthCheck",
        "tcpHealthCheck",
        "timeoutSec",
        "type",
        "unhealthyThreshold"
      ],
      "inputProperties": {
        "checkIntervalSec": {
          "type": "integer",
          "description": "How often (in seconds) to send a health check. The default value is 5 seconds."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:GRPCHealthCheck"
        },
        "healthyThreshold": {
          "type": "integer",
          "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2."
        },
        "http2HealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTP2HealthCheck"
        },
        "httpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPHealthCheck"
        },
        "httpsHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:HTTPSHealthCheck"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:HealthCheckLogConfig",
          "description": "Configure logging on this health check."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sslHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:SSLHealthCheck"
        },
        "tcpHealthCheck": {
          "$ref": "#/types/google-native:compute%2Fv1:TCPHealthCheck"
        },
        "timeoutSec": {
          "type": "integer",
          "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionHealthCheckType",
          "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field."
        },
        "unhealthyThreshold": {
          "type": "integer",
          "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionHealthCheckService": {
      "description": "Creates a regional HealthCheckService resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a HealthCheckService. An up-to-date fingerprint must be provided in order to patch/update the HealthCheckService; Otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the HealthCheckService."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups."
        },
        "healthStatusAggregationPolicy": {
          "type": "string",
          "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#healthCheckServicefor health check services."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkEndpointGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT."
        },
        "notificationEndpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "healthChecks",
        "healthStatusAggregationPolicy",
        "kind",
        "name",
        "networkEndpointGroups",
        "notificationEndpoints",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups."
        },
        "healthStatusAggregationPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionHealthCheckServiceHealthStatusAggregationPolicy",
          "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "networkEndpointGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT."
        },
        "notificationEndpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionInstanceGroupManager": {
      "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, instances in the group are created using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method. A regional managed instance group can contain up to 2000 instances.",
      "properties": {
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerAutoHealingPolicyResponse"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this managed instance group in RFC3339 text format."
        },
        "currentActions": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerActionsSummaryResponse",
          "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicyResponse",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager."
        },
        "instanceGroup": {
          "type": "string",
          "description": "The URL of the Instance Group resource."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerInstanceLifecyclePolicyResponse",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups."
        },
        "listManagedInstancesResults": {
          "type": "string",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NamedPortResponse"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this managed instance group. The server defines this URL."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:StatefulPolicyResponse",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "status": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerStatusResponse",
          "description": "The status of this managed instance group."
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyResponse",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerVersionResponse"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        },
        "zone": {
          "type": "string",
          "description": "The URL of a zone where the managed instance group is located (for zonal resources)."
        }
      },
      "type": "object",
      "required": [
        "autoHealingPolicies",
        "baseInstanceName",
        "creationTimestamp",
        "currentActions",
        "description",
        "distributionPolicy",
        "fingerprint",
        "instanceGroup",
        "instanceLifecyclePolicy",
        "instanceTemplate",
        "kind",
        "listManagedInstancesResults",
        "name",
        "namedPorts",
        "project",
        "region",
        "selfLink",
        "statefulPolicy",
        "status",
        "targetPools",
        "targetSize",
        "updatePolicy",
        "versions",
        "zone"
      ],
      "inputProperties": {
        "autoHealingPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerAutoHealingPolicy"
          },
          "description": "The autohealing policy for this managed instance group. You can specify only one value."
        },
        "baseInstanceName": {
          "type": "string",
          "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource."
        },
        "distributionPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicy",
          "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
        },
        "instanceLifecyclePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerInstanceLifecyclePolicy",
          "description": "The repair policy for this managed instance group."
        },
        "instanceTemplate": {
          "type": "string",
          "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE."
        },
        "listManagedInstancesResults": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionInstanceGroupManagerListManagedInstancesResults",
          "description": "Pagination behavior of the listManagedInstances API method for this managed instance group."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035."
        },
        "namedPorts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:NamedPort"
          },
          "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "statefulPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:StatefulPolicy",
          "description": "Stateful configuration for this Instanced Group Manager"
        },
        "targetPools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group."
        },
        "targetSize": {
          "type": "integer",
          "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number."
        },
        "updatePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicy",
          "description": "The update policy for this managed instance group."
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerVersion"
          },
          "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionInstanceTemplate": {
      "description": "Creates an instance template in the specified project and region using the global instance template whose URL is included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "The creation timestamp for this instance template in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "The resource type, which is always compute#instanceTemplate for instance templates."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Fv1:InstancePropertiesResponse",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "The URL for this instance template. The server defines this URL."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Fv1:SourceInstanceParamsResponse",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "properties",
        "region",
        "selfLink",
        "sourceInstance",
        "sourceInstanceParams"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "$ref": "#/types/google-native:compute%2Fv1:InstanceProperties",
          "description": "The instance properties for this instance template."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance "
        },
        "sourceInstanceParams": {
          "$ref": "#/types/google-native:compute%2Fv1:SourceInstanceParams",
          "description": "The source instance params to use to create this instance template."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionNetworkEndpointGroup": {
      "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngineResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunctionResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRunResponse",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "type": "string",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscDataResponse"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "size": {
          "type": "integer",
          "description": "[Output only] Number of network endpoints in the network endpoint group."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        },
        "zone": {
          "type": "string",
          "description": "The URL of the zone where the network endpoint group is located."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "appEngine",
        "cloudFunction",
        "cloudRun",
        "creationTimestamp",
        "defaultPort",
        "description",
        "kind",
        "name",
        "network",
        "networkEndpointType",
        "project",
        "pscData",
        "pscTargetService",
        "region",
        "selfLink",
        "size",
        "subnetwork",
        "zone"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Metadata defined as annotations on the network endpoint group."
        },
        "appEngine": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngine",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudFunction": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunction",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRun",
          "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
        },
        "defaultPort": {
          "type": "integer",
          "description": "The default port used if the port number is not specified in the network endpoint."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
        },
        "networkEndpointType": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionNetworkEndpointGroupNetworkEndpointType",
          "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscData": {
          "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscData"
        },
        "pscTargetService": {
          "type": "string",
          "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\""
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionNetworkFirewallPolicy": {
      "description": "Creates a new network firewall policy in the specified project and region.",
      "properties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociationResponse"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "parent": {
          "type": "string",
          "description": "The parent of the firewall policy. This field is not applicable to network firewall policies."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "ruleTupleCount": {
          "type": "integer",
          "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL for this resource with the resource id."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      },
      "type": "object",
      "required": [
        "associations",
        "creationTimestamp",
        "description",
        "displayName",
        "fingerprint",
        "kind",
        "name",
        "parent",
        "project",
        "region",
        "ruleTupleCount",
        "rules",
        "selfLink",
        "selfLinkWithId",
        "shortName"
      ],
      "inputProperties": {
        "associations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociation"
          },
          "description": "A list of associations that belong to this firewall policy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added."
        },
        "shortName": {
          "type": "string",
          "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionNetworkFirewallPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:RegionNetworkFirewallPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:RegionNetworkFirewallPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/v1:RegionNotificationEndpoint": {
      "description": "Create a NotificationEndpoint in the specified project in the given region using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcSettings": {
          "$ref": "#/types/google-native:compute%2Fv1:NotificationEndpointGrpcSettingsResponse",
          "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#notificationEndpoint for notification endpoints."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "grpcSettings",
        "kind",
        "name",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "grpcSettings": {
          "$ref": "#/types/google-native:compute%2Fv1:NotificationEndpointGrpcSettings",
          "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionSecurityPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigResponse"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfigResponse"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyDdosProtectionConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies"
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRecaptchaOptionsConfigResponse"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "type": {
          "type": "string",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyUserDefinedFieldResponse"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "type": "object",
      "required": [
        "adaptiveProtectionConfig",
        "advancedOptionsConfig",
        "creationTimestamp",
        "ddosProtectionConfig",
        "description",
        "fingerprint",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "recaptchaOptionsConfig",
        "region",
        "rules",
        "selfLink",
        "type",
        "userDefinedFields"
      ],
      "inputProperties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfig"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfig"
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyDdosProtectionConfig"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRecaptchaOptionsConfig"
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionSecurityPolicyType",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyUserDefinedField"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionSslCertificate": {
      "description": "Creates a SslCertificate resource in the specified project and region using the data included in the request",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expireTime": {
          "type": "string",
          "description": "Expire time of the certificate. RFC3339"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#sslCertificate for SSL certificates."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateManagedSslCertificateResponse",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateSelfManagedSslCertificateResponse",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "subjectAlternativeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Domains associated with the certificate via Subject Alternative Name."
        },
        "type": {
          "type": "string",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "creationTimestamp",
        "description",
        "expireTime",
        "kind",
        "managed",
        "name",
        "privateKey",
        "project",
        "region",
        "selfLink",
        "selfManaged",
        "subjectAlternativeNames",
        "type"
      ],
      "inputProperties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateManagedSslCertificate",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateSelfManagedSslCertificate",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionSslCertificateType",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionSslPolicy": {
      "description": "Creates a new policy in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enabledFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of features enabled in the SSL policy."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies."
        },
        "minTlsVersion": {
          "type": "string",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "type": "string",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RegionSslPolicyWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "customFeatures",
        "description",
        "enabledFeatures",
        "fingerprint",
        "kind",
        "minTlsVersion",
        "name",
        "profile",
        "project",
        "region",
        "selfLink",
        "warnings"
      ],
      "inputProperties": {
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "minTlsVersion": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionSslPolicyMinTlsVersion",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionSslPolicyProfile",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionTargetHttpProxy": {
      "description": "Creates a TargetHttpProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "region",
        "selfLink",
        "urlMap"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionTargetHttpsProxy": {
      "description": "Creates a TargetHttpsProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "type": "string",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "type": "object",
      "required": [
        "authorizationPolicy",
        "certificateMap",
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "quicOverride",
        "region",
        "selfLink",
        "serverTlsPolicy",
        "sslCertificates",
        "sslPolicy",
        "urlMap"
      ],
      "inputProperties": {
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionTargetHttpsProxyQuicOverride",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionTargetTcpProxy": {
      "description": "Creates a TargetTcpProxy resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyBind",
        "proxyHeader",
        "region",
        "selfLink",
        "service"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fv1:RegionTargetTcpProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:RegionUrlMap": {
      "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectActionResponse",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HostRuleResponse"
          },
          "description": "The list of host rules to use against the URL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#urlMaps for url maps."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PathMatcherResponse"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:UrlMapTestResponse"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "fingerprint",
        "headerAction",
        "hostRules",
        "kind",
        "name",
        "pathMatchers",
        "project",
        "region",
        "selfLink",
        "tests"
      ],
      "inputProperties": {
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectAction",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HostRule"
          },
          "description": "The list of host rules to use against the URL."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PathMatcher"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:UrlMapTest"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:Reservation": {
      "description": "Creates a new reservation. For more information, read Reserving zonal resources.",
      "properties": {
        "commitment": {
          "type": "string",
          "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#reservations for reservations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationResourceStatusResponse",
          "description": "Status information for Reservation resource."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fv1:ShareSettingsResponse",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUReservationResponse",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "status": {
          "type": "string",
          "description": "The status of the reservation."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "commitment",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "resourcePolicies",
        "resourceStatus",
        "satisfiesPzs",
        "selfLink",
        "shareSettings",
        "specificReservation",
        "specificReservationRequired",
        "status",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourcePolicies": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation."
        },
        "shareSettings": {
          "$ref": "#/types/google-native:compute%2Fv1:ShareSettings",
          "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
        },
        "specificReservation": {
          "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUReservation",
          "description": "Reservation for instances with specific machine shapes."
        },
        "specificReservationRequired": {
          "type": "boolean",
          "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation."
        },
        "zone": {
          "type": "string",
          "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment."
        }
      }
    },
    "google-native:compute/v1:ReservationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:ReservationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:ReservationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:ResourcePolicy": {
      "description": "Creates a new resource policy.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string"
        },
        "diskConsistencyGroupPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyDiskConsistencyGroupPolicyResponse",
          "description": "Resource policy for disk consistency groups."
        },
        "groupPlacementPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyGroupPlacementPolicyResponse",
          "description": "Resource policy for instances for placement configuration."
        },
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyInstanceSchedulePolicyResponse",
          "description": "Resource policy for scheduling instance operations."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#resource_policies for resource policies."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyResourceStatusResponse",
          "description": "The system status of the resource policy."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "snapshotSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicyResponse",
          "description": "Resource policy for persistent disks for creating snapshots."
        },
        "status": {
          "type": "string",
          "description": "The status of resource policy creation."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "diskConsistencyGroupPolicy",
        "groupPlacementPolicy",
        "instanceSchedulePolicy",
        "kind",
        "name",
        "project",
        "region",
        "resourceStatus",
        "selfLink",
        "snapshotSchedulePolicy",
        "status"
      ],
      "inputProperties": {
        "description": {
          "type": "string"
        },
        "diskConsistencyGroupPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyDiskConsistencyGroupPolicy",
          "description": "Resource policy for disk consistency groups."
        },
        "groupPlacementPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyGroupPlacementPolicy",
          "description": "Resource policy for instances for placement configuration."
        },
        "instanceSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyInstanceSchedulePolicy",
          "description": "Resource policy for scheduling instance operations."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "snapshotSchedulePolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicy",
          "description": "Resource policy for persistent disks for creating snapshots."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:ResourcePolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:ResourcePolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:ResourcePolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/v1:Route": {
      "description": "Creates a Route resource in the specified project using the data included in the request.",
      "properties": {
        "asPaths": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouteAsPathResponse"
          },
          "description": "AS path."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destRange": {
          "type": "string",
          "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format."
        },
        "kind": {
          "type": "string",
          "description": "Type of this resource. Always compute#routes for Route resources."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "Fully-qualified URL of the network that this route applies to."
        },
        "nextHopGateway": {
          "type": "string",
          "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway"
        },
        "nextHopHub": {
          "type": "string",
          "description": "The full resource name of the Network Connectivity Center hub that will handle matching packets."
        },
        "nextHopIlb": {
          "type": "string",
          "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule "
        },
        "nextHopInstance": {
          "type": "string",
          "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
        },
        "nextHopIp": {
          "type": "string",
          "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address."
        },
        "nextHopNetwork": {
          "type": "string",
          "description": "The URL of the local network if it should handle matching packets."
        },
        "nextHopPeering": {
          "type": "string",
          "description": "The network peering name that should handle matching packets, which should conform to RFC1035."
        },
        "nextHopVpnTunnel": {
          "type": "string",
          "description": "The URL to a VpnTunnel that should handle matching packets."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "routeStatus": {
          "type": "string",
          "description": "[Output only] The status of the route."
        },
        "routeType": {
          "type": "string",
          "description": "The type of this route, which can be one of the following values: - 'TRANSIT' for a transit route that this router learned from another Cloud Router and will readvertise to one of its BGP peers - 'SUBNET' for a route from a subnet of the VPC - 'BGP' for a route learned from a BGP peer of this router - 'STATIC' for a static route"
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of instance tags to which this route applies."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouteWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "asPaths",
        "creationTimestamp",
        "description",
        "destRange",
        "kind",
        "name",
        "network",
        "nextHopGateway",
        "nextHopHub",
        "nextHopIlb",
        "nextHopInstance",
        "nextHopIp",
        "nextHopNetwork",
        "nextHopPeering",
        "nextHopVpnTunnel",
        "priority",
        "project",
        "routeStatus",
        "routeType",
        "selfLink",
        "tags",
        "warnings"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this field when you create the resource."
        },
        "destRange": {
          "type": "string",
          "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit."
        },
        "network": {
          "type": "string",
          "description": "Fully-qualified URL of the network that this route applies to."
        },
        "nextHopGateway": {
          "type": "string",
          "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway"
        },
        "nextHopIlb": {
          "type": "string",
          "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule "
        },
        "nextHopInstance": {
          "type": "string",
          "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
        },
        "nextHopIp": {
          "type": "string",
          "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address."
        },
        "nextHopNetwork": {
          "type": "string",
          "description": "The URL of the local network if it should handle matching packets."
        },
        "nextHopVpnTunnel": {
          "type": "string",
          "description": "The URL to a VpnTunnel that should handle matching packets."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of instance tags to which this route applies."
        }
      }
    },
    "google-native:compute/v1:Router": {
      "description": "Creates a Router resource in the specified project and region using the data included in the request.",
      "properties": {
        "bgp": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterBgpResponse",
          "description": "BGP information specific to this router."
        },
        "bgpPeers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerResponse"
          },
          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "encryptedInterconnectRouter": {
          "type": "boolean",
          "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments)."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterInterfaceResponse"
          },
          "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#router for routers."
        },
        "md5AuthenticationKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterMd5AuthenticationKeyResponse"
          },
          "description": "Keys used for MD5 authentication."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterNatResponse"
          },
          "description": "A list of NAT services created in this router."
        },
        "network": {
          "type": "string",
          "description": "URI of the network to which this router belongs."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        }
      },
      "type": "object",
      "required": [
        "bgp",
        "bgpPeers",
        "creationTimestamp",
        "description",
        "encryptedInterconnectRouter",
        "interfaces",
        "kind",
        "md5AuthenticationKeys",
        "name",
        "nats",
        "network",
        "project",
        "region",
        "selfLink"
      ],
      "inputProperties": {
        "bgp": {
          "$ref": "#/types/google-native:compute%2Fv1:RouterBgp",
          "description": "BGP information specific to this router."
        },
        "bgpPeers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeer"
          },
          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "encryptedInterconnectRouter": {
          "type": "boolean",
          "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments)."
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterInterface"
          },
          "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface."
        },
        "md5AuthenticationKeys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterMd5AuthenticationKey"
          },
          "description": "Keys used for MD5 authentication."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "nats": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterNat"
          },
          "description": "A list of NAT services created in this router."
        },
        "network": {
          "type": "string",
          "description": "URI of the network to which this router belongs."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:SecurityPolicy": {
      "description": "Creates a new policy in the specified project using the data included in the request.",
      "properties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigResponse"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfigResponse"
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyDdosProtectionConfigResponse"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies"
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRecaptchaOptionsConfigResponse"
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleResponse"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "type": {
          "type": "string",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyUserDefinedFieldResponse"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      },
      "type": "object",
      "required": [
        "adaptiveProtectionConfig",
        "advancedOptionsConfig",
        "creationTimestamp",
        "ddosProtectionConfig",
        "description",
        "fingerprint",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "project",
        "recaptchaOptionsConfig",
        "region",
        "rules",
        "selfLink",
        "type",
        "userDefinedFields"
      ],
      "inputProperties": {
        "adaptiveProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfig"
        },
        "advancedOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfig"
        },
        "ddosProtectionConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyDdosProtectionConfig"
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaOptionsConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRecaptchaOptionsConfig"
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRule"
          },
          "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyType",
          "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time."
        },
        "userDefinedFields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyUserDefinedField"
          },
          "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\""
        }
      }
    },
    "google-native:compute/v1:ServiceAttachment": {
      "description": "Creates a ServiceAttachment in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "connectedEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ServiceAttachmentConnectedEndpointResponse"
          },
          "description": "An array of connections for all the consumers connected to this service attachment."
        },
        "connectionPreference": {
          "type": "string",
          "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules."
        },
        "consumerAcceptLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ServiceAttachmentConsumerProjectLimitResponse"
          },
          "description": "Projects that are allowed to connect to this service attachment."
        },
        "consumerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1."
        },
        "enableProxyProtocol": {
          "type": "boolean",
          "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ServiceAttachment. An up-to-date fingerprint must be provided in order to patch/update the ServiceAttachment; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the ServiceAttachment."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#serviceAttachment for service attachments."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment."
        },
        "producerForwardingRule": {
          "type": "string",
          "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscServiceAttachmentId": {
          "$ref": "#/types/google-native:compute%2Fv1:Uint128Response",
          "description": "An 128-bit global unique ID of the PSC service attachment."
        },
        "reconcileConnections": {
          "type": "boolean",
          "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "targetService": {
          "type": "string",
          "description": "The URL of a service serving the endpoint identified by this service attachment."
        }
      },
      "type": "object",
      "required": [
        "connectedEndpoints",
        "connectionPreference",
        "consumerAcceptLists",
        "consumerRejectLists",
        "creationTimestamp",
        "description",
        "domainNames",
        "enableProxyProtocol",
        "fingerprint",
        "kind",
        "name",
        "natSubnets",
        "producerForwardingRule",
        "project",
        "pscServiceAttachmentId",
        "reconcileConnections",
        "region",
        "selfLink",
        "targetService"
      ],
      "inputProperties": {
        "connectionPreference": {
          "$ref": "#/types/google-native:compute%2Fv1:ServiceAttachmentConnectionPreference",
          "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules."
        },
        "consumerAcceptLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:ServiceAttachmentConsumerProjectLimit"
          },
          "description": "Projects that are allowed to connect to this service attachment."
        },
        "consumerRejectLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "domainNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1."
        },
        "enableProxyProtocol": {
          "type": "boolean",
          "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natSubnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment."
        },
        "producerForwardingRule": {
          "type": "string",
          "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconcileConnections": {
          "type": "boolean",
          "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "targetService": {
          "type": "string",
          "description": "The URL of a service serving the endpoint identified by this service attachment."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:ServiceAttachmentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:ServiceAttachmentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:ServiceAttachmentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/v1:Snapshot": {
      "description": "Creates a snapshot in the specified project using the data included in the request. For regular snapshot creation, consider using this method instead of disks.createSnapshot, as this method supports more features, such as creating snapshots in a project different from the source disk project.",
      "properties": {
        "architecture": {
          "type": "string",
          "description": "The architecture of the snapshot. Valid values are ARM64 or X86_64."
        },
        "autoCreated": {
          "type": "boolean",
          "description": "Set to true if snapshots are automatically created by applying resource policy on the target disk."
        },
        "chainName": {
          "type": "string",
          "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value."
        },
        "creationSizeBytes": {
          "type": "string",
          "description": "Size in bytes of the snapshot at creation time."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "diskSizeGb": {
          "type": "string",
          "description": "Size of the source disk, specified in GB."
        },
        "downloadBytes": {
          "type": "string",
          "description": "Number of bytes downloaded to restore a snapshot to a disk."
        },
        "guestOsFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
          },
          "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#snapshot for Snapshot resources."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a snapshot."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "licenseCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Integer license codes indicating which licenses are attached to this snapshot."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image)."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "snapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
        },
        "snapshotType": {
          "type": "string",
          "description": "Indicates the type of the snapshot."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this snapshot."
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskForRecoveryCheckpoint": {
          "type": "string",
          "description": "The source disk whose recovery checkpoint will be used to create this snapshot."
        },
        "sourceDiskId": {
          "type": "string",
          "description": "The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name."
        },
        "sourceSnapshotSchedulePolicy": {
          "type": "string",
          "description": "URL of the resource policy which created this scheduled snapshot."
        },
        "sourceSnapshotSchedulePolicyId": {
          "type": "string",
          "description": "ID of the resource policy which created this scheduled snapshot."
        },
        "status": {
          "type": "string",
          "description": "The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING."
        },
        "storageBytes": {
          "type": "string",
          "description": "A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion."
        },
        "storageBytesStatus": {
          "type": "string",
          "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional)."
        }
      },
      "type": "object",
      "required": [
        "architecture",
        "autoCreated",
        "chainName",
        "creationSizeBytes",
        "creationTimestamp",
        "description",
        "diskSizeGb",
        "downloadBytes",
        "guestOsFeatures",
        "kind",
        "labelFingerprint",
        "labels",
        "licenseCodes",
        "licenses",
        "locationHint",
        "name",
        "project",
        "satisfiesPzs",
        "selfLink",
        "snapshotEncryptionKey",
        "snapshotType",
        "sourceDisk",
        "sourceDiskEncryptionKey",
        "sourceDiskForRecoveryCheckpoint",
        "sourceDiskId",
        "sourceSnapshotSchedulePolicy",
        "sourceSnapshotSchedulePolicyId",
        "status",
        "storageBytes",
        "storageBytesStatus",
        "storageLocations"
      ],
      "inputProperties": {
        "chainName": {
          "type": "string",
          "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty."
        },
        "locationHint": {
          "type": "string",
          "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "snapshotEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
        },
        "snapshotType": {
          "$ref": "#/types/google-native:compute%2Fv1:SnapshotSnapshotType",
          "description": "Indicates the type of the snapshot."
        },
        "sourceDisk": {
          "type": "string",
          "description": "The source disk used to create this snapshot."
        },
        "sourceDiskEncryptionKey": {
          "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKey",
          "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
        },
        "sourceDiskForRecoveryCheckpoint": {
          "type": "string",
          "description": "The source disk whose recovery checkpoint will be used to create this snapshot."
        },
        "storageLocations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional)."
        }
      }
    },
    "google-native:compute/v1:SnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:SnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:SnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:compute/v1:SslCertificate": {
      "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "expireTime": {
          "type": "string",
          "description": "Expire time of the certificate. RFC3339"
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#sslCertificate for SSL certificates."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateManagedSslCertificateResponse",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateSelfManagedSslCertificateResponse",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "subjectAlternativeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Domains associated with the certificate via Subject Alternative Name."
        },
        "type": {
          "type": "string",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      },
      "type": "object",
      "required": [
        "certificate",
        "creationTimestamp",
        "description",
        "expireTime",
        "kind",
        "managed",
        "name",
        "privateKey",
        "project",
        "region",
        "selfLink",
        "selfManaged",
        "subjectAlternativeNames",
        "type"
      ],
      "inputProperties": {
        "certificate": {
          "type": "string",
          "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "managed": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateManagedSslCertificate",
          "description": "Configuration and status of a managed SSL certificate."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "privateKey": {
          "type": "string",
          "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfManaged": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateSelfManagedSslCertificate",
          "description": "Configuration and status of a self-managed SSL certificate."
        },
        "type": {
          "$ref": "#/types/google-native:compute%2Fv1:SslCertificateType",
          "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used."
        }
      }
    },
    "google-native:compute/v1:SslPolicy": {
      "description": "Returns the specified SSL policy resource.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "enabledFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of features enabled in the SSL policy."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy."
        },
        "kind": {
          "type": "string",
          "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies."
        },
        "minTlsVersion": {
          "type": "string",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "type": "string",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SslPolicyWarningsItemResponse"
          },
          "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "customFeatures",
        "description",
        "enabledFeatures",
        "fingerprint",
        "kind",
        "minTlsVersion",
        "name",
        "profile",
        "project",
        "region",
        "selfLink",
        "warnings"
      ],
      "inputProperties": {
        "customFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "minTlsVersion": {
          "$ref": "#/types/google-native:compute%2Fv1:SslPolicyMinTlsVersion",
          "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "profile": {
          "$ref": "#/types/google-native:compute%2Fv1:SslPolicyProfile",
          "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      }
    },
    "google-native:compute/v1:Subnetwork": {
      "description": "Creates a subnetwork in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
        },
        "enableFlowLogs": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "externalIpv6Prefix": {
          "type": "string",
          "description": "The external IPv6 address range that is owned by this subnetwork."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a Subnetwork."
        },
        "gatewayAddress": {
          "type": "string",
          "description": "The gateway address for default routes to reach destination addresses outside this subnetwork."
        },
        "internalIpv6Prefix": {
          "type": "string",
          "description": "The internal IPv6 address range that is assigned to this subnetwork."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange."
        },
        "ipv6AccessType": {
          "type": "string",
          "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack."
        },
        "ipv6CidrRange": {
          "type": "string",
          "description": "This field is for internal use."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#subnetwork for Subnetwork resources."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkLogConfigResponse",
          "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time."
        },
        "privateIpGoogleAccess": {
          "type": "boolean",
          "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
        },
        "privateIpv6GoogleAccess": {
          "type": "string",
          "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "role": {
          "type": "string",
          "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request."
        },
        "secondaryIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SubnetworkSecondaryRangeResponse"
          },
          "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch."
        },
        "state": {
          "type": "string",
          "description": "The state of the subnetwork, which can be one of the following values: READY: Subnetwork is created and ready to use DRAINING: only applicable to subnetworks that have the purpose set to INTERNAL_HTTPS_LOAD_BALANCER and indicates that connections to the load balancer are being drained. A subnetwork that is draining cannot be used or modified until it reaches a status of READY"
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "enableFlowLogs",
        "externalIpv6Prefix",
        "fingerprint",
        "gatewayAddress",
        "internalIpv6Prefix",
        "ipCidrRange",
        "ipv6AccessType",
        "ipv6CidrRange",
        "kind",
        "logConfig",
        "name",
        "network",
        "privateIpGoogleAccess",
        "privateIpv6GoogleAccess",
        "project",
        "purpose",
        "region",
        "role",
        "secondaryIpRanges",
        "selfLink",
        "stackType",
        "state"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
        },
        "enableFlowLogs": {
          "type": "boolean",
          "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "externalIpv6Prefix": {
          "type": "string",
          "description": "The external IPv6 address range that is owned by this subnetwork."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange."
        },
        "ipv6AccessType": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkIpv6AccessType",
          "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack."
        },
        "logConfig": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkLogConfig",
          "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time."
        },
        "privateIpGoogleAccess": {
          "type": "boolean",
          "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
        },
        "privateIpv6GoogleAccess": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkPrivateIpv6GoogleAccess",
          "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purpose": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkPurpose",
          "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "role": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkRole",
          "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request."
        },
        "secondaryIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:SubnetworkSecondaryRange"
          },
          "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Fv1:SubnetworkStackType",
          "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:SubnetworkIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:SubnetworkIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:compute/v1:SubnetworkIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "region",
        "resource",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:Rule"
          },
          "description": "This is deprecated and has no effect. Do not use."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "region",
        "resource"
      ]
    },
    "google-native:compute/v1:TargetGrpcProxy": {
      "description": "Creates a TargetGrpcProxy in the specified project in the given scope using the parameters that are included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetGrpcProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetGrpcProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetGrpcProxy."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetGrpcProxy for target grpc proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "selfLinkWithId": {
          "type": "string",
          "description": "Server-defined URL with id for the resource."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC."
        },
        "validateForProxyless": {
          "type": "boolean",
          "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to"
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "kind",
        "name",
        "project",
        "selfLink",
        "selfLinkWithId",
        "urlMap",
        "validateForProxyless"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC."
        },
        "validateForProxyless": {
          "type": "boolean",
          "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to"
        }
      }
    },
    "google-native:compute/v1:TargetHttpProxy": {
      "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "region",
        "selfLink",
        "urlMap"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "urlMap": {
          "type": "string",
          "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
        }
      }
    },
    "google-native:compute/v1:TargetHttpsProxy": {
      "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
      "properties": {
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "type": "string",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      },
      "type": "object",
      "required": [
        "authorizationPolicy",
        "certificateMap",
        "creationTimestamp",
        "description",
        "fingerprint",
        "httpKeepAliveTimeoutSec",
        "kind",
        "name",
        "project",
        "proxyBind",
        "quicOverride",
        "region",
        "selfLink",
        "serverTlsPolicy",
        "sslCertificates",
        "sslPolicy",
        "urlMap"
      ],
      "inputProperties": {
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact."
        },
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "httpKeepAliveTimeoutSec": {
          "type": "integer",
          "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "quicOverride": {
          "$ref": "#/types/google-native:compute%2Fv1:TargetHttpsProxyQuicOverride",
          "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. "
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured."
        },
        "urlMap": {
          "type": "string",
          "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map "
        }
      }
    },
    "google-native:compute/v1:TargetInstance": {
      "description": "Creates a TargetInstance resource in the specified project and zone using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "instance": {
          "type": "string",
          "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance "
        },
        "kind": {
          "type": "string",
          "description": "The type of the resource. Always compute#targetInstance for target instances."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natPolicy": {
          "type": "string",
          "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this target instance."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "instance",
        "kind",
        "name",
        "natPolicy",
        "network",
        "project",
        "securityPolicy",
        "selfLink",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "instance": {
          "type": "string",
          "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance "
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "natPolicy": {
          "$ref": "#/types/google-native:compute%2Fv1:TargetInstanceNatPolicy",
          "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance."
        },
        "network": {
          "type": "string",
          "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:compute/v1:TargetPool": {
      "description": "Creates a target pool in the specified project and region using the data included in the request.",
      "properties": {
        "backupPool": {
          "type": "string",
          "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failoverRatio": {
          "type": "number",
          "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetPool for target pools."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "securityPolicy": {
          "type": "string",
          "description": "The resource URL for the security policy associated with this target pool."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sessionAffinity": {
          "type": "string",
          "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy."
        }
      },
      "type": "object",
      "required": [
        "backupPool",
        "creationTimestamp",
        "description",
        "failoverRatio",
        "healthChecks",
        "instances",
        "kind",
        "name",
        "project",
        "region",
        "securityPolicy",
        "selfLink",
        "sessionAffinity"
      ],
      "inputProperties": {
        "backupPool": {
          "type": "string",
          "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "failoverRatio": {
          "type": "number",
          "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
        },
        "healthChecks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified."
        },
        "instances": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "sessionAffinity": {
          "$ref": "#/types/google-native:compute%2Fv1:TargetPoolSessionAffinity",
          "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:TargetSslProxy": {
      "description": "Creates a TargetSslProxy resource in the specified project using the data included in the request.",
      "properties": {
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetSslProxy for target SSL proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured."
        }
      },
      "type": "object",
      "required": [
        "certificateMap",
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyHeader",
        "selfLink",
        "service",
        "sslCertificates",
        "sslPolicy"
      ],
      "inputProperties": {
        "certificateMap": {
          "type": "string",
          "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fv1:TargetSslProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        },
        "sslCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED."
        },
        "sslPolicy": {
          "type": "string",
          "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured."
        }
      }
    },
    "google-native:compute/v1:TargetTcpProxy": {
      "description": "Creates a TargetTcpProxy resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "type": "string",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "name",
        "project",
        "proxyBind",
        "proxyHeader",
        "region",
        "selfLink",
        "service"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyBind": {
          "type": "boolean",
          "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false."
        },
        "proxyHeader": {
          "$ref": "#/types/google-native:compute%2Fv1:TargetTcpProxyProxyHeader",
          "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "service": {
          "type": "string",
          "description": "URL to the BackendService resource."
        }
      }
    },
    "google-native:compute/v1:TargetVpnGateway": {
      "description": "Creates a target VPN gateway in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "forwardingRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated with a VPN gateway."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#targetVpnGateway for target VPN gateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a TargetVpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "The status of the VPN gateway, which can be one of the following: CREATING, READY, FAILED, or DELETING."
        },
        "tunnels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of URLs to VpnTunnel resources. VpnTunnels are created using the compute.vpntunnels.insert method and associated with a VPN gateway."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "forwardingRules",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "project",
        "region",
        "selfLink",
        "status",
        "tunnels"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:UrlMap": {
      "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteActionResponse",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectActionResponse",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "fingerprint": {
          "type": "string",
          "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderActionResponse",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HostRuleResponse"
          },
          "description": "The list of host rules to use against the URL."
        },
        "kind": {
          "type": "string",
          "description": "Type of the resource. Always compute#urlMaps for url maps."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PathMatcherResponse"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:UrlMapTestResponse"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "defaultRouteAction",
        "defaultService",
        "defaultUrlRedirect",
        "description",
        "fingerprint",
        "headerAction",
        "hostRules",
        "kind",
        "name",
        "pathMatchers",
        "project",
        "region",
        "selfLink",
        "tests"
      ],
      "inputProperties": {
        "defaultRouteAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRouteAction",
          "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultService": {
          "type": "string",
          "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
        },
        "defaultUrlRedirect": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectAction",
          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "headerAction": {
          "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderAction",
          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        },
        "hostRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:HostRule"
          },
          "description": "The list of host rules to use against the URL."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "pathMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:PathMatcher"
          },
          "description": "The list of named PathMatchers to use against the URL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "tests": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:UrlMapTest"
          },
          "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
        }
      }
    },
    "google-native:compute/v1:VpnGateway": {
      "description": "Creates a VPN gateway in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#vpnGateway for VPN gateways."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this VpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnGateway."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "stackType": {
          "type": "string",
          "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used."
        },
        "vpnInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:VpnGatewayVpnGatewayInterfaceResponse"
          },
          "description": "The list of VPN interfaces associated with this VPN gateway."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "kind",
        "labelFingerprint",
        "labels",
        "name",
        "network",
        "project",
        "region",
        "selfLink",
        "stackType",
        "vpnInterfaces"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "network": {
          "type": "string",
          "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "stackType": {
          "$ref": "#/types/google-native:compute%2Fv1:VpnGatewayStackType",
          "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used."
        },
        "vpnInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:compute%2Fv1:VpnGatewayVpnGatewayInterface"
          },
          "description": "The list of VPN interfaces associated with this VPN gateway."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:compute/v1:VpnTunnel": {
      "description": "Creates a VpnTunnel resource in the specified project and region using the data included in the request.",
      "properties": {
        "creationTimestamp": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "detailedStatus": {
          "type": "string",
          "description": "Detailed status message for the VPN tunnel."
        },
        "ikeVersion": {
          "type": "integer",
          "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2."
        },
        "kind": {
          "type": "string",
          "description": "Type of resource. Always compute#vpnTunnel for VPN tunnels."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnTunnel."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "localTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerExternalGateway": {
          "type": "string",
          "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway."
        },
        "peerExternalGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type."
        },
        "peerGcpGateway": {
          "type": "string",
          "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway."
        },
        "peerIp": {
          "type": "string",
          "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the router resource to be used for dynamic routing."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL for the resource."
        },
        "sharedSecret": {
          "type": "string",
          "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
        },
        "sharedSecretHash": {
          "type": "string",
          "description": "Hash of the shared secret."
        },
        "status": {
          "type": "string",
          "description": "The status of the VPN tunnel, which can be one of the following: - PROVISIONING: Resource is being allocated for the VPN tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all VPN-related configs from the user. Network, TargetVpnGateway, VpnTunnel, ForwardingRule, and Route resources are needed to setup the VPN tunnel. - FIRST_HANDSHAKE: Successful first handshake with the peer VPN. - ESTABLISHED: Secure session is successfully established with the peer VPN. - NETWORK_ERROR: Deprecated, replaced by NO_INCOMING_PACKETS - AUTHORIZATION_ERROR: Auth error (for example, bad shared secret). - NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING: Resources are being deallocated for the VPN tunnel. - FAILED: Tunnel creation has failed and the tunnel is not ready to be used. - NO_INCOMING_PACKETS: No incoming packets from peer. - REJECTED: Tunnel configuration was rejected, can be result of being denied access. - ALLOCATING_RESOURCES: Cloud VPN is in the process of allocating all required resources. - STOPPED: Tunnel is stopped due to its Forwarding Rules being deleted for Classic VPN tunnels or the project is in frozen state. - PEER_IDENTITY_MISMATCH: Peer identity does not match peer IP, probably behind NAT. - TS_NARROWING_NOT_ALLOWED: Traffic selector narrowing not allowed for an HA-VPN tunnel. "
        },
        "targetVpnGateway": {
          "type": "string",
          "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created."
        },
        "vpnGateway": {
          "type": "string",
          "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created."
        },
        "vpnGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`."
        }
      },
      "type": "object",
      "required": [
        "creationTimestamp",
        "description",
        "detailedStatus",
        "ikeVersion",
        "kind",
        "labelFingerprint",
        "labels",
        "localTrafficSelector",
        "name",
        "peerExternalGateway",
        "peerExternalGatewayInterface",
        "peerGcpGateway",
        "peerIp",
        "project",
        "region",
        "remoteTrafficSelector",
        "router",
        "selfLink",
        "sharedSecret",
        "sharedSecretHash",
        "status",
        "targetVpnGateway",
        "vpnGateway",
        "vpnGatewayInterface"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of this resource. Provide this property when you create the resource."
        },
        "ikeVersion": {
          "type": "integer",
          "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty."
        },
        "localTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "peerExternalGateway": {
          "type": "string",
          "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway."
        },
        "peerExternalGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type."
        },
        "peerGcpGateway": {
          "type": "string",
          "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway."
        },
        "peerIp": {
          "type": "string",
          "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remoteTrafficSelector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported."
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000)."
        },
        "router": {
          "type": "string",
          "description": "URL of the router resource to be used for dynamic routing."
        },
        "sharedSecret": {
          "type": "string",
          "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
        },
        "sharedSecretHash": {
          "type": "string",
          "description": "Hash of the shared secret."
        },
        "targetVpnGateway": {
          "type": "string",
          "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created."
        },
        "vpnGateway": {
          "type": "string",
          "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created."
        },
        "vpnGatewayInterface": {
          "type": "integer",
          "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`."
        }
      },
      "requiredInputs": [
        "region"
      ]
    },
    "google-native:connectors/v1:Connection": {
      "description": "Creates a new Connection in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:AuthConfigResponse",
          "description": "Optional. Configuration for establishing the connection's authentication with an external system."
        },
        "configVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariableResponse"
          },
          "description": "Optional. Configuration for configuring the connection with an external system."
        },
        "connectionId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Connection. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "connectionRevision": {
          "type": "string",
          "description": "Connection revision. This field is only updated when the connection is created or updated by User."
        },
        "connectorVersion": {
          "type": "string",
          "description": "Connector version on which the connection is created. The format is: projects/*/locations/*/providers/*/connectors/*/versions/* Only global location is supported for ConnectorVersion resource."
        },
        "connectorVersionInfraConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:ConnectorVersionInfraConfigResponse",
          "description": "Infra configs supported by Connector Version."
        },
        "connectorVersionLaunchStage": {
          "type": "string",
          "description": "Flag to mark the version indicating the launch stage."
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the resource."
        },
        "destinationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:DestinationConfigResponse"
          },
          "description": "Optional. Configuration of the Connector's destination. Only accepted for Connectors that accepts user defined destination(s)."
        },
        "envoyImageLocation": {
          "type": "string",
          "description": "GCR location where the envoy image is stored. formatted like: gcr.io/{bucketName}/{imageName}"
        },
        "eventingConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:EventingConfigResponse",
          "description": "Optional. Eventing config of a connection"
        },
        "eventingEnablementType": {
          "type": "string",
          "description": "Optional. Eventing enablement type. Will be nil if eventing is not enabled."
        },
        "eventingRuntimeData": {
          "$ref": "#/types/google-native:connectors%2Fv1:EventingRuntimeDataResponse",
          "description": "Eventing Runtime Data."
        },
        "imageLocation": {
          "type": "string",
          "description": "GCR location where the runtime image is stored. formatted like: gcr.io/{bucketName}/{imageName}"
        },
        "isTrustedTester": {
          "type": "boolean",
          "description": "Is trusted tester program enabled for the project."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lockConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:LockConfigResponse",
          "description": "Optional. Configuration that indicates whether or not the Connection can be edited."
        },
        "logConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:ConnectorsLogConfigResponse",
          "description": "Optional. Log configuration for the connection."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Connection. Format: projects/{project}/locations/{location}/connections/{connection}"
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:NodeConfigResponse",
          "description": "Optional. Node configuration for the connection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Service account needed for runtime plane to access Google Cloud resources."
        },
        "serviceDirectory": {
          "type": "string",
          "description": "The name of the Service Directory service name. Used for Private Harpoon to resolve the ILB address. e.g. \"projects/cloud-connectors-e2e-testing/locations/us-central1/namespaces/istio-system/services/istio-ingressgateway-connectors\""
        },
        "sslConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:SslConfigResponse",
          "description": "Optional. Ssl config of a connection"
        },
        "status": {
          "$ref": "#/types/google-native:connectors%2Fv1:ConnectionStatusResponse",
          "description": "Current status of the connection."
        },
        "subscriptionType": {
          "type": "string",
          "description": "This subscription type enum states the subscription type of the project."
        },
        "suspended": {
          "type": "boolean",
          "description": "Optional. Suspended indicates if a user has suspended a connection or not."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "authConfig",
        "configVariables",
        "connectionId",
        "connectionRevision",
        "connectorVersion",
        "connectorVersionInfraConfig",
        "connectorVersionLaunchStage",
        "createTime",
        "description",
        "destinationConfigs",
        "envoyImageLocation",
        "eventingConfig",
        "eventingEnablementType",
        "eventingRuntimeData",
        "imageLocation",
        "isTrustedTester",
        "labels",
        "location",
        "lockConfig",
        "logConfig",
        "name",
        "nodeConfig",
        "project",
        "serviceAccount",
        "serviceDirectory",
        "sslConfig",
        "status",
        "subscriptionType",
        "suspended",
        "updateTime"
      ],
      "inputProperties": {
        "authConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:AuthConfig",
          "description": "Optional. Configuration for establishing the connection's authentication with an external system."
        },
        "configVariables": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariable"
          },
          "description": "Optional. Configuration for configuring the connection with an external system."
        },
        "connectionId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Connection. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "connectorVersion": {
          "type": "string",
          "description": "Connector version on which the connection is created. The format is: projects/*/locations/*/providers/*/connectors/*/versions/* Only global location is supported for ConnectorVersion resource."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the resource."
        },
        "destinationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:DestinationConfig"
          },
          "description": "Optional. Configuration of the Connector's destination. Only accepted for Connectors that accepts user defined destination(s)."
        },
        "eventingConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:EventingConfig",
          "description": "Optional. Eventing config of a connection"
        },
        "eventingEnablementType": {
          "$ref": "#/types/google-native:connectors%2Fv1:ConnectionEventingEnablementType",
          "description": "Optional. Eventing enablement type. Will be nil if eventing is not enabled."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lockConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:LockConfig",
          "description": "Optional. Configuration that indicates whether or not the Connection can be edited."
        },
        "logConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:ConnectorsLogConfig",
          "description": "Optional. Log configuration for the connection."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:NodeConfig",
          "description": "Optional. Node configuration for the connection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Service account needed for runtime plane to access Google Cloud resources."
        },
        "sslConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:SslConfig",
          "description": "Optional. Ssl config of a connection"
        },
        "suspended": {
          "type": "boolean",
          "description": "Optional. Suspended indicates if a user has suspended a connection or not."
        }
      },
      "requiredInputs": [
        "connectionId",
        "connectorVersion"
      ]
    },
    "google-native:connectors/v1:ConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:connectors/v1:ConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:connectors/v1:ConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectionId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectionId"
      ]
    },
    "google-native:connectors/v1:CustomConnector": {
      "description": "Creates a new CustomConnector in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "customConnectorId": {
          "type": "string",
          "description": "Required. Identifier to assign to the CreateCustomConnector. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "customConnectorType": {
          "type": "string",
          "description": "Type of the custom connector."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "launchStage": {
          "type": "string",
          "description": "Launch stage."
        },
        "logo": {
          "type": "string",
          "description": "Optional. Logo of the resource."
        },
        "name": {
          "type": "string",
          "description": "Identifier. Resource name of the CustomConnector. Format: projects/{project}/locations/{location}/customConnectors/{connector}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "customConnectorId",
        "customConnectorType",
        "description",
        "displayName",
        "labels",
        "launchStage",
        "logo",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "customConnectorId": {
          "type": "string",
          "description": "Required. Identifier to assign to the CreateCustomConnector. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "customConnectorType": {
          "$ref": "#/types/google-native:connectors%2Fv1:CustomConnectorCustomConnectorType",
          "description": "Type of the custom connector."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "logo": {
          "type": "string",
          "description": "Optional. Logo of the resource."
        },
        "name": {
          "type": "string",
          "description": "Identifier. Resource name of the CustomConnector. Format: projects/{project}/locations/{location}/customConnectors/{connector}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "customConnectorId",
        "customConnectorType"
      ]
    },
    "google-native:connectors/v1:CustomConnectorVersion": {
      "description": "Creates a new CustomConnectorVersion in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:AuthConfigResponse",
          "description": "Configuration for establishing the authentication to the connector destination."
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "customConnectorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customConnectorVersionId": {
          "type": "string",
          "description": "Required. Identifier to assign to the CreateCustomConnectorVersion. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "destinationConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:DestinationConfigResponse",
          "description": "Configuration of the customConnector's destination."
        },
        "enableBackendDestinationConfig": {
          "type": "boolean",
          "description": "Optional. Whether to enable backend destination config. This is the backend server that the connector connects to."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "name": {
          "type": "string",
          "description": "Identifier. Resource name of the Version. Format: projects/{project}/locations/{location}/customConnectors/{custom_connector}/customConnectorVersions/{custom_connector_version}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specLocation": {
          "type": "string",
          "description": "Optional. Location of the custom connector spec."
        },
        "type": {
          "type": "string",
          "description": "Type of the customConnector."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "authConfig",
        "createTime",
        "customConnectorId",
        "customConnectorVersionId",
        "destinationConfig",
        "enableBackendDestinationConfig",
        "labels",
        "name",
        "project",
        "specLocation",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "authConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:AuthConfig",
          "description": "Configuration for establishing the authentication to the connector destination."
        },
        "customConnectorId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customConnectorVersionId": {
          "type": "string",
          "description": "Required. Identifier to assign to the CreateCustomConnectorVersion. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "destinationConfig": {
          "$ref": "#/types/google-native:connectors%2Fv1:DestinationConfig",
          "description": "Configuration of the customConnector's destination."
        },
        "enableBackendDestinationConfig": {
          "type": "boolean",
          "description": "Optional. Whether to enable backend destination config. This is the backend server that the connector connects to."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "specLocation": {
          "type": "string",
          "description": "Optional. Location of the custom connector spec."
        },
        "type": {
          "$ref": "#/types/google-native:connectors%2Fv1:CustomConnectorVersionType",
          "description": "Type of the customConnector."
        }
      },
      "requiredInputs": [
        "authConfig",
        "customConnectorId",
        "customConnectorVersionId",
        "destinationConfig",
        "type"
      ]
    },
    "google-native:connectors/v1:EndpointAttachment": {
      "description": "Creates a new EndpointAttachment in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the resource."
        },
        "endpointAttachmentId": {
          "type": "string",
          "description": "Required. Identifier to assign to the EndpointAttachment. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "endpointIp": {
          "type": "string",
          "description": "The Private Service Connect connection endpoint ip"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Endpoint Attachment. Format: projects/{project}/locations/{location}/endpointAttachments/{endpoint_attachment}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAttachment": {
          "type": "string",
          "description": "The path of the service attachment"
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "endpointAttachmentId",
        "endpointIp",
        "labels",
        "location",
        "name",
        "project",
        "serviceAttachment",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the resource."
        },
        "endpointAttachmentId": {
          "type": "string",
          "description": "Required. Identifier to assign to the EndpointAttachment. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAttachment": {
          "type": "string",
          "description": "The path of the service attachment"
        }
      },
      "requiredInputs": [
        "endpointAttachmentId",
        "serviceAttachment"
      ]
    },
    "google-native:connectors/v1:EventSubscription": {
      "description": "Creates a new EventSubscription in a given project,location and connection.",
      "properties": {
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "destinations": {
          "$ref": "#/types/google-native:connectors%2Fv1:EventSubscriptionDestinationResponse",
          "description": "Optional. The destination to hit when we receive an event"
        },
        "eventSubscriptionId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Event Subscription. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "eventTypeId": {
          "type": "string",
          "description": "Optional. Event type id of the event of current EventSubscription."
        },
        "jms": {
          "$ref": "#/types/google-native:connectors%2Fv1:JMSResponse",
          "description": "Optional. JMS is the source for the event listener."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the EventSubscription. Format: projects/{project}/locations/{location}/connections/{connection}/eventSubscriptions/{event_subscription}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "$ref": "#/types/google-native:connectors%2Fv1:EventSubscriptionStatusResponse",
          "description": "Optional. Status indicates the status of the event subscription resource"
        },
        "subscriber": {
          "type": "string",
          "description": "Optional. name of the Subscriber for the current EventSubscription."
        },
        "subscriberLink": {
          "type": "string",
          "description": "Optional. Link for Subscriber of the current EventSubscription."
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "connectionId",
        "createTime",
        "destinations",
        "eventSubscriptionId",
        "eventTypeId",
        "jms",
        "location",
        "name",
        "project",
        "status",
        "subscriber",
        "subscriberLink",
        "updateTime"
      ],
      "inputProperties": {
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "destinations": {
          "$ref": "#/types/google-native:connectors%2Fv1:EventSubscriptionDestination",
          "description": "Optional. The destination to hit when we receive an event"
        },
        "eventSubscriptionId": {
          "type": "string",
          "description": "Required. Identifier to assign to the Event Subscription. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "eventTypeId": {
          "type": "string",
          "description": "Optional. Event type id of the event of current EventSubscription."
        },
        "jms": {
          "$ref": "#/types/google-native:connectors%2Fv1:JMS",
          "description": "Optional. JMS is the source for the event listener."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the EventSubscription. Format: projects/{project}/locations/{location}/connections/{connection}/eventSubscriptions/{event_subscription}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subscriber": {
          "type": "string",
          "description": "Optional. name of the Subscriber for the current EventSubscription."
        },
        "subscriberLink": {
          "type": "string",
          "description": "Optional. Link for Subscriber of the current EventSubscription."
        }
      },
      "requiredInputs": [
        "connectionId",
        "eventSubscriptionId"
      ]
    },
    "google-native:connectors/v1:ManagedZone": {
      "description": "Creates a new ManagedZone in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Created time."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the resource."
        },
        "dns": {
          "type": "string",
          "description": "DNS Name of the resource"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "managedZoneId": {
          "type": "string",
          "description": "Required. Identifier to assign to the ManagedZone. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Managed Zone. Format: projects/{project}/locations/global/managedZones/{managed_zone}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "targetProject": {
          "type": "string",
          "description": "The name of the Target Project"
        },
        "targetVpc": {
          "type": "string",
          "description": "The name of the Target Project VPC Network"
        },
        "updateTime": {
          "type": "string",
          "description": "Updated time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "dns",
        "labels",
        "managedZoneId",
        "name",
        "project",
        "targetProject",
        "targetVpc",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the resource."
        },
        "dns": {
          "type": "string",
          "description": "DNS Name of the resource"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "managedZoneId": {
          "type": "string",
          "description": "Required. Identifier to assign to the ManagedZone. Must be unique within scope of the parent resource.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "targetProject": {
          "type": "string",
          "description": "The name of the Target Project"
        },
        "targetVpc": {
          "type": "string",
          "description": "The name of the Target Project VPC Network"
        }
      },
      "requiredInputs": [
        "dns",
        "managedZoneId",
        "targetProject",
        "targetVpc"
      ]
    },
    "google-native:connectors/v1:ProviderIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:connectors/v1:ProviderIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:connectors/v1:ProviderIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "providerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "providerId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:connectors%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "providerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "providerId"
      ]
    },
    "google-native:connectors/v2:Entity": {
      "description": "Creates a new entity row of the specified entity type in the external system. The field values for creating the row are contained in the body of the request. The response message contains a `Entity` message object returned as a response by the external system.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Fields of the entity. The key is name of the field and the value contains the applicable `google.protobuf.Value` entry for this field."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Entity. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}/entities/{id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "connectionId",
        "entityTypeId",
        "fields",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "connectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entityTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Fields of the entity. The key is name of the field and the value contains the applicable `google.protobuf.Value` entry for this field."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "connectionId",
        "entityTypeId"
      ]
    },
    "google-native:contactcenteraiplatform/v1alpha1:ContactCenter": {
      "description": "Creates a new ContactCenter in a given project and location.",
      "properties": {
        "adminUser": {
          "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:AdminUserResponse",
          "description": "Optional. Info about the first admin user, such as given name and family name."
        },
        "ccaipManagedUsers": {
          "type": "boolean",
          "description": "Optional. Whether to enable users to be created in the CCAIP-instance concurrently to having users in Cloud identity"
        },
        "contactCenterId": {
          "type": "string",
          "description": "Required. Id of the requesting object If auto-generating Id server-side, remove this field and contact_center_id from the method_signature of Create RPC",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "[Output only] Create time stamp"
        },
        "customerDomainPrefix": {
          "type": "string",
          "description": "Immutable. At least 2 and max 16 char long, must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt)."
        },
        "displayName": {
          "type": "string",
          "description": "A user friendly name for the ContactCenter."
        },
        "instanceConfig": {
          "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:InstanceConfigResponse",
          "description": "The configuration of this instance, it is currently immutable once created."
        },
        "kmsKey": {
          "type": "string",
          "description": "Immutable. The KMS key name to encrypt the user input (`ContactCenter`)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "samlParams": {
          "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:SAMLParamsResponse",
          "description": "Optional. Params that sets up Google as IdP."
        },
        "state": {
          "type": "string",
          "description": "The state of this contact center."
        },
        "updateTime": {
          "type": "string",
          "description": "[Output only] Update time stamp"
        },
        "uris": {
          "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:URIsResponse",
          "description": "URIs to access the deployed ContactCenters."
        },
        "userEmail": {
          "type": "string",
          "description": "Optional. Email address of the first admin user."
        }
      },
      "type": "object",
      "required": [
        "adminUser",
        "ccaipManagedUsers",
        "contactCenterId",
        "createTime",
        "customerDomainPrefix",
        "displayName",
        "instanceConfig",
        "kmsKey",
        "labels",
        "location",
        "name",
        "project",
        "samlParams",
        "state",
        "updateTime",
        "uris",
        "userEmail"
      ],
      "inputProperties": {
        "adminUser": {
          "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:AdminUser",
          "description": "Optional. Info about the first admin user, such as given name and family name."
        },
        "ccaipManagedUsers": {
          "type": "boolean",
          "description": "Optional. Whether to enable users to be created in the CCAIP-instance concurrently to having users in Cloud identity"
        },
        "contactCenterId": {
          "type": "string",
          "description": "Required. Id of the requesting object If auto-generating Id server-side, remove this field and contact_center_id from the method_signature of Create RPC",
          "replaceOnChanges": true
        },
        "customerDomainPrefix": {
          "type": "string",
          "description": "Immutable. At least 2 and max 16 char long, must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt)."
        },
        "displayName": {
          "type": "string",
          "description": "A user friendly name for the ContactCenter."
        },
        "instanceConfig": {
          "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:InstanceConfig",
          "description": "The configuration of this instance, it is currently immutable once created."
        },
        "kmsKey": {
          "type": "string",
          "description": "Immutable. The KMS key name to encrypt the user input (`ContactCenter`)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "samlParams": {
          "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:SAMLParams",
          "description": "Optional. Params that sets up Google as IdP."
        },
        "userEmail": {
          "type": "string",
          "description": "Optional. Email address of the first admin user."
        }
      },
      "requiredInputs": [
        "contactCenterId",
        "customerDomainPrefix",
        "displayName"
      ]
    },
    "google-native:contactcenterinsights/v1:Analysis": {
      "description": "Creates an analysis. The long running operation is done when the analysis has completed.",
      "properties": {
        "analysisResult": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnalysisResultResponse",
          "description": "The result of the analysis, which is populated when the analysis finishes."
        },
        "annotatorSelector": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorResponse",
          "description": "To select the annotators to run and the phrase matchers to use (if any). If not specified, all annotators will be run."
        },
        "conversationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the analysis was created, which occurs when the long-running operation completes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the analysis. Format: projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestTime": {
          "type": "string",
          "description": "The time at which the analysis was requested."
        }
      },
      "type": "object",
      "required": [
        "analysisResult",
        "annotatorSelector",
        "conversationId",
        "createTime",
        "location",
        "name",
        "project",
        "requestTime"
      ],
      "inputProperties": {
        "annotatorSelector": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotatorSelector",
          "description": "To select the annotators to run and the phrase matchers to use (if any). If not specified, all annotators will be run."
        },
        "conversationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the analysis. Format: projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "conversationId"
      ]
    },
    "google-native:contactcenterinsights/v1:Conversation": {
      "description": "Creates a conversation.",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "An opaque, user-specified string representing the human agent who handled the conversation."
        },
        "callMetadata": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationCallMetadataResponse",
          "description": "Call-specific metadata."
        },
        "conversationId": {
          "type": "string",
          "description": "A unique ID for the new conversation. This ID will become the final component of the conversation's resource name. If no ID is specified, a server-generated ID will be used. This value should be 4-64 characters and must match the regular expression `^[a-z0-9-]{4,64}$`. Valid characters are `a-z-`"
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the conversation was created."
        },
        "dataSource": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationDataSourceResponse",
          "description": "The source of the audio and transcription for the conversation."
        },
        "dialogflowIntents": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "All the matched Dialogflow intents in the call. The key corresponds to a Dialogflow intent, format: projects/{project}/agent/{agent}/intents/{intent}"
        },
        "duration": {
          "type": "string",
          "description": "The duration of the conversation."
        },
        "expireTime": {
          "type": "string",
          "description": "The time at which this conversation should expire. After this time, the conversation data and any associated analyses will be deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map for the user to specify any custom fields. A maximum of 20 labels per conversation is allowed, with a maximum of 256 characters per entry."
        },
        "languageCode": {
          "type": "string",
          "description": "A user-specified language code for the conversation."
        },
        "latestAnalysis": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnalysisResponse",
          "description": "The conversation's latest analysis, if one exists."
        },
        "latestSummary": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationSummarizationSuggestionDataResponse",
          "description": "Latest summary of the conversation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "medium": {
          "type": "string",
          "description": "Immutable. The conversation medium, if unspecified will default to PHONE_CALL."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the conversation. Format: projects/{project}/locations/{location}/conversations/{conversation}"
        },
        "obfuscatedUserId": {
          "type": "string",
          "description": "Obfuscated user ID which the customer sent to us."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtimeAnnotations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1RuntimeAnnotationResponse"
          },
          "description": "The annotations that were generated during the customer and agent interaction."
        },
        "startTime": {
          "type": "string",
          "description": "The time at which the conversation started."
        },
        "transcript": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationTranscriptResponse",
          "description": "The conversation transcript."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL for this resource. If specified, then this TTL will be used to calculate the expire time."
        },
        "turnCount": {
          "type": "integer",
          "description": "The number of turns in the conversation."
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the conversation was updated."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "callMetadata",
        "createTime",
        "dataSource",
        "dialogflowIntents",
        "duration",
        "expireTime",
        "labels",
        "languageCode",
        "latestAnalysis",
        "latestSummary",
        "location",
        "medium",
        "name",
        "obfuscatedUserId",
        "project",
        "runtimeAnnotations",
        "startTime",
        "transcript",
        "ttl",
        "turnCount",
        "updateTime"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "description": "An opaque, user-specified string representing the human agent who handled the conversation."
        },
        "callMetadata": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationCallMetadata",
          "description": "Call-specific metadata."
        },
        "conversationId": {
          "type": "string",
          "description": "A unique ID for the new conversation. This ID will become the final component of the conversation's resource name. If no ID is specified, a server-generated ID will be used. This value should be 4-64 characters and must match the regular expression `^[a-z0-9-]{4,64}$`. Valid characters are `a-z-`"
        },
        "dataSource": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationDataSource",
          "description": "The source of the audio and transcription for the conversation."
        },
        "expireTime": {
          "type": "string",
          "description": "The time at which this conversation should expire. After this time, the conversation data and any associated analyses will be deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map for the user to specify any custom fields. A maximum of 20 labels per conversation is allowed, with a maximum of 256 characters per entry."
        },
        "languageCode": {
          "type": "string",
          "description": "A user-specified language code for the conversation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "medium": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:ConversationMedium",
          "description": "Immutable. The conversation medium, if unspecified will default to PHONE_CALL."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the conversation. Format: projects/{project}/locations/{location}/conversations/{conversation}"
        },
        "obfuscatedUserId": {
          "type": "string",
          "description": "Obfuscated user ID which the customer sent to us."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The time at which the conversation started."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL for this resource. If specified, then this TTL will be used to calculate the expire time."
        }
      }
    },
    "google-native:contactcenterinsights/v1:IssueModel": {
      "description": "Creates an issue model.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time at which this issue model was created."
        },
        "displayName": {
          "type": "string",
          "description": "The representative name for the issue model."
        },
        "inputDataConfig": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueModelInputDataConfigResponse",
          "description": "Configs for the input data that used to create the issue model."
        },
        "issueCount": {
          "type": "string",
          "description": "Number of issues in this issue model."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the model."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelType": {
          "type": "string",
          "description": "Type of the model."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the issue model. Format: projects/{project}/locations/{location}/issueModels/{issue_model}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the model."
        },
        "trainingStats": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueModelLabelStatsResponse",
          "description": "Immutable. The issue model's label statistics on its training data."
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the issue model was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "inputDataConfig",
        "issueCount",
        "languageCode",
        "location",
        "modelType",
        "name",
        "project",
        "state",
        "trainingStats",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The representative name for the issue model."
        },
        "inputDataConfig": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueModelInputDataConfig",
          "description": "Configs for the input data that used to create the issue model."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the model."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelType": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:IssueModelModelType",
          "description": "Type of the model."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the issue model. Format: projects/{project}/locations/{location}/issueModels/{issue_model}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:contactcenterinsights/v1:PhraseMatcher": {
      "description": "Creates a phrase matcher.",
      "properties": {
        "activationUpdateTime": {
          "type": "string",
          "description": "The most recent time at which the activation status was updated."
        },
        "active": {
          "type": "boolean",
          "description": "Applies the phrase matcher only when it is active."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the phrase matcher."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the phrase matcher. Format: projects/{project}/locations/{location}/phraseMatchers/{phrase_matcher}"
        },
        "phraseMatchRuleGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleGroupResponse"
          },
          "description": "A list of phase match rule groups that are included in this matcher."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp of when the revision was created. It is also the create time when a new matcher is added."
        },
        "revisionId": {
          "type": "string",
          "description": "Immutable. The revision ID of the phrase matcher. A new revision is committed whenever the matcher is changed, except when it is activated or deactivated. A server generated random ID will be used. Example: locations/global/phraseMatchers/my-first-matcher@1234567"
        },
        "roleMatch": {
          "type": "string",
          "description": "The role whose utterances the phrase matcher should be matched against. If the role is ROLE_UNSPECIFIED it will be matched against any utterances in the transcript."
        },
        "type": {
          "type": "string",
          "description": "The type of this phrase matcher."
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the phrase matcher was updated."
        },
        "versionTag": {
          "type": "string",
          "description": "The customized version tag to use for the phrase matcher. If not specified, it will default to `revision_id`."
        }
      },
      "type": "object",
      "required": [
        "activationUpdateTime",
        "active",
        "displayName",
        "location",
        "name",
        "phraseMatchRuleGroups",
        "project",
        "revisionCreateTime",
        "revisionId",
        "roleMatch",
        "type",
        "updateTime",
        "versionTag"
      ],
      "inputProperties": {
        "active": {
          "type": "boolean",
          "description": "Applies the phrase matcher only when it is active."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the phrase matcher."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the phrase matcher. Format: projects/{project}/locations/{location}/phraseMatchers/{phrase_matcher}"
        },
        "phraseMatchRuleGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleGroup"
          },
          "description": "A list of phase match rule groups that are included in this matcher."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "roleMatch": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:PhraseMatcherRoleMatch",
          "description": "The role whose utterances the phrase matcher should be matched against. If the role is ROLE_UNSPECIFIED it will be matched against any utterances in the transcript."
        },
        "type": {
          "$ref": "#/types/google-native:contactcenterinsights%2Fv1:PhraseMatcherType",
          "description": "The type of this phrase matcher."
        },
        "versionTag": {
          "type": "string",
          "description": "The customized version tag to use for the phrase matcher. If not specified, it will default to `revision_id`."
        }
      },
      "requiredInputs": [
        "type"
      ]
    },
    "google-native:contactcenterinsights/v1:View": {
      "description": "Creates a view.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time at which this view was created."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable display name of the view."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the view. Format: projects/{project}/locations/{location}/views/{view}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the view was updated."
        },
        "value": {
          "type": "string",
          "description": "String with specific view properties, must be non-empty."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "location",
        "name",
        "project",
        "updateTime",
        "value"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The human-readable display name of the view."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the view. Format: projects/{project}/locations/{location}/views/{view}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "value": {
          "type": "string",
          "description": "String with specific view properties, must be non-empty."
        }
      }
    },
    "google-native:container/v1:Cluster": {
      "description": "Creates a cluster, consisting of the specified number and type of Google Compute Engine instances. By default, the cluster is created in the project's [default network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks). One firewall is added for the cluster. After cluster creation, the Kubelet creates routes for each node to allow the containers on that node to communicate with all other instances in the cluster. Finally, an entry is added to the project's global metadata indicating which CIDR range the cluster is using.",
      "properties": {
        "addonsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AddonsConfigResponse",
          "description": "Configurations for the various addons available to run in the cluster."
        },
        "authenticatorGroupsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AuthenticatorGroupsConfigResponse",
          "description": "Configuration controlling RBAC group membership information."
        },
        "autopilot": {
          "$ref": "#/types/google-native:container%2Fv1:AutopilotResponse",
          "description": "Autopilot configuration for the cluster."
        },
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterAutoscalingResponse",
          "description": "Cluster-level autoscaling configuration."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:container%2Fv1:BinaryAuthorizationResponse",
          "description": "Configuration for Binary Authorization."
        },
        "clusterIpv4Cidr": {
          "type": "string",
          "description": "The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:StatusConditionResponse"
          },
          "description": "Which conditions caused the current cluster state."
        },
        "confidentialNodes": {
          "$ref": "#/types/google-native:container%2Fv1:ConfidentialNodesResponse",
          "description": "Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled."
        },
        "costManagementConfig": {
          "$ref": "#/types/google-native:container%2Fv1:CostManagementConfigResponse",
          "description": "Configuration for the fine-grained cost management feature."
        },
        "createTime": {
          "type": "string",
          "description": "[Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "currentMasterVersion": {
          "type": "string",
          "description": "[Output only] The current software version of the master endpoint."
        },
        "currentNodeCount": {
          "type": "integer",
          "description": "[Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.",
          "deprecationMessage": "[Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information."
        },
        "currentNodeVersion": {
          "type": "string",
          "description": "[Output only] Deprecated, use [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they're in the process of being upgraded, this reflects the minimum version of all nodes."
        },
        "databaseEncryption": {
          "$ref": "#/types/google-native:container%2Fv1:DatabaseEncryptionResponse",
          "description": "Configuration of etcd encryption."
        },
        "defaultMaxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraintResponse",
          "description": "The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this cluster."
        },
        "enableK8sBetaApis": {
          "$ref": "#/types/google-native:container%2Fv1:K8sBetaAPIConfigResponse",
          "description": "Beta APIs Config"
        },
        "enableKubernetesAlpha": {
          "type": "boolean",
          "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation."
        },
        "enableTpu": {
          "type": "boolean",
          "description": "Enable the ability to use Cloud TPUs in this cluster."
        },
        "endpoint": {
          "type": "string",
          "description": "[Output only] The IP address of this cluster's master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information."
        },
        "enterpriseConfig": {
          "$ref": "#/types/google-native:container%2Fv1:EnterpriseConfigResponse",
          "description": "GKE Enterprise Configuration."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "expireTime": {
          "type": "string",
          "description": "[Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "fleet": {
          "$ref": "#/types/google-native:container%2Fv1:FleetResponse",
          "description": "Fleet information for the cluster."
        },
        "identityServiceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:IdentityServiceConfigResponse",
          "description": "Configuration for Identity Service component."
        },
        "initialClusterVersion": {
          "type": "string",
          "description": "The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"\",\"-\": picks the default Kubernetes version"
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.",
          "deprecationMessage": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead."
        },
        "instanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated. Use node_pools.instance_group_urls.",
          "deprecationMessage": "Deprecated. Use node_pools.instance_group_urls."
        },
        "ipAllocationPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:IPAllocationPolicyResponse",
          "description": "Configuration for cluster IP allocation."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "The fingerprint of the set of labels for this cluster."
        },
        "legacyAbac": {
          "$ref": "#/types/google-native:container%2Fv1:LegacyAbacResponse",
          "description": "Configuration for the legacy ABAC authorization mode."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LoggingConfigResponse",
          "description": "Logging configuration for the cluster."
        },
        "loggingService": {
          "type": "string",
          "description": "The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1:MaintenancePolicyResponse",
          "description": "Configure the maintenance policy for this cluster."
        },
        "masterAuth": {
          "$ref": "#/types/google-native:container%2Fv1:MasterAuthResponse",
          "description": "The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to \"admin\", a random password will be generated, and a client certificate will be issued."
        },
        "masterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:container%2Fv1:MasterAuthorizedNetworksConfigResponse",
          "description": "The configuration options for master authorized networks feature."
        },
        "meshCertificates": {
          "$ref": "#/types/google-native:container%2Fv1:MeshCertificatesResponse",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:container%2Fv1:MonitoringConfigResponse",
          "description": "Monitoring configuration for the cluster."
        },
        "monitoringService": {
          "type": "string",
          "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions."
        },
        "name": {
          "type": "string",
          "description": "The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter."
        },
        "network": {
          "type": "string",
          "description": "The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkConfigResponse",
          "description": "Configuration for cluster networking."
        },
        "networkPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkPolicyResponse",
          "description": "Configuration options for the NetworkPolicy feature."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodeConfigResponse",
          "description": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.",
          "deprecationMessage": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead."
        },
        "nodeIpv4CidrSize": {
          "type": "integer",
          "description": "[Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode."
        },
        "nodePoolAutoConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoConfigResponse",
          "description": "Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
        },
        "nodePoolDefaults": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolDefaultsResponse",
          "description": "Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object."
        },
        "nodePools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:NodePoolResponse"
          },
          "description": "The node pools associated with this cluster. This field should not be set if \"node_config\" or \"initial_node_count\" are specified."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NotificationConfigResponse",
          "description": "Notification configuration of the cluster."
        },
        "parentProductConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ParentProductConfigResponse",
          "description": "The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PrivateClusterConfigResponse",
          "description": "Configuration for private cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseChannel": {
          "$ref": "#/types/google-native:container%2Fv1:ReleaseChannelResponse",
          "description": "Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version."
        },
        "resourceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for the cluster to use to annotate any related Google Compute Engine resources."
        },
        "resourceUsageExportConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ResourceUsageExportConfigResponse",
          "description": "Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:container%2Fv1:SecurityPostureConfigResponse",
          "description": "Enable/Disable Security Posture API features for the cluster."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "servicesIpv4Cidr": {
          "type": "string",
          "description": "[Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR."
        },
        "shieldedNodes": {
          "$ref": "#/types/google-native:container%2Fv1:ShieldedNodesResponse",
          "description": "Shielded Nodes configuration."
        },
        "status": {
          "type": "string",
          "description": "[Output only] The current status of this cluster."
        },
        "statusMessage": {
          "type": "string",
          "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.",
          "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available."
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected."
        },
        "tpuIpv4CidrBlock": {
          "type": "string",
          "description": "[Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`)."
        },
        "verticalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:VerticalPodAutoscalingResponse",
          "description": "Cluster-level Vertical Pod Autoscaling configuration."
        },
        "workloadIdentityConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadIdentityConfigResponse",
          "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies."
        },
        "zone": {
          "type": "string",
          "description": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.",
          "deprecationMessage": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead."
        }
      },
      "type": "object",
      "required": [
        "addonsConfig",
        "authenticatorGroupsConfig",
        "autopilot",
        "autoscaling",
        "binaryAuthorization",
        "clusterIpv4Cidr",
        "conditions",
        "confidentialNodes",
        "costManagementConfig",
        "createTime",
        "currentMasterVersion",
        "currentNodeCount",
        "currentNodeVersion",
        "databaseEncryption",
        "defaultMaxPodsConstraint",
        "description",
        "enableK8sBetaApis",
        "enableKubernetesAlpha",
        "enableTpu",
        "endpoint",
        "enterpriseConfig",
        "etag",
        "expireTime",
        "fleet",
        "identityServiceConfig",
        "initialClusterVersion",
        "initialNodeCount",
        "instanceGroupUrls",
        "ipAllocationPolicy",
        "labelFingerprint",
        "legacyAbac",
        "location",
        "locations",
        "loggingConfig",
        "loggingService",
        "maintenancePolicy",
        "masterAuth",
        "masterAuthorizedNetworksConfig",
        "meshCertificates",
        "monitoringConfig",
        "monitoringService",
        "name",
        "network",
        "networkConfig",
        "networkPolicy",
        "nodeConfig",
        "nodeIpv4CidrSize",
        "nodePoolAutoConfig",
        "nodePoolDefaults",
        "nodePools",
        "notificationConfig",
        "parentProductConfig",
        "privateClusterConfig",
        "project",
        "releaseChannel",
        "resourceLabels",
        "resourceUsageExportConfig",
        "securityPostureConfig",
        "selfLink",
        "servicesIpv4Cidr",
        "shieldedNodes",
        "status",
        "statusMessage",
        "subnetwork",
        "tpuIpv4CidrBlock",
        "verticalPodAutoscaling",
        "workloadIdentityConfig",
        "zone"
      ],
      "inputProperties": {
        "addonsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AddonsConfig",
          "description": "Configurations for the various addons available to run in the cluster."
        },
        "authenticatorGroupsConfig": {
          "$ref": "#/types/google-native:container%2Fv1:AuthenticatorGroupsConfig",
          "description": "Configuration controlling RBAC group membership information."
        },
        "autopilot": {
          "$ref": "#/types/google-native:container%2Fv1:Autopilot",
          "description": "Autopilot configuration for the cluster."
        },
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:ClusterAutoscaling",
          "description": "Cluster-level autoscaling configuration."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:container%2Fv1:BinaryAuthorization",
          "description": "Configuration for Binary Authorization."
        },
        "clusterIpv4Cidr": {
          "type": "string",
          "description": "The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:StatusCondition"
          },
          "description": "Which conditions caused the current cluster state."
        },
        "confidentialNodes": {
          "$ref": "#/types/google-native:container%2Fv1:ConfidentialNodes",
          "description": "Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled."
        },
        "costManagementConfig": {
          "$ref": "#/types/google-native:container%2Fv1:CostManagementConfig",
          "description": "Configuration for the fine-grained cost management feature."
        },
        "databaseEncryption": {
          "$ref": "#/types/google-native:container%2Fv1:DatabaseEncryption",
          "description": "Configuration of etcd encryption."
        },
        "defaultMaxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraint",
          "description": "The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this cluster."
        },
        "enableK8sBetaApis": {
          "$ref": "#/types/google-native:container%2Fv1:K8sBetaAPIConfig",
          "description": "Beta APIs Config"
        },
        "enableKubernetesAlpha": {
          "type": "boolean",
          "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation."
        },
        "enableTpu": {
          "type": "boolean",
          "description": "Enable the ability to use Cloud TPUs in this cluster."
        },
        "enterpriseConfig": {
          "$ref": "#/types/google-native:container%2Fv1:EnterpriseConfig",
          "description": "GKE Enterprise Configuration."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "fleet": {
          "$ref": "#/types/google-native:container%2Fv1:Fleet",
          "description": "Fleet information for the cluster."
        },
        "identityServiceConfig": {
          "$ref": "#/types/google-native:container%2Fv1:IdentityServiceConfig",
          "description": "Configuration for Identity Service component."
        },
        "initialClusterVersion": {
          "type": "string",
          "description": "The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"\",\"-\": picks the default Kubernetes version"
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.",
          "deprecationMessage": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead."
        },
        "instanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated. Use node_pools.instance_group_urls.",
          "deprecationMessage": "Deprecated. Use node_pools.instance_group_urls."
        },
        "ipAllocationPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:IPAllocationPolicy",
          "description": "Configuration for cluster IP allocation."
        },
        "legacyAbac": {
          "$ref": "#/types/google-native:container%2Fv1:LegacyAbac",
          "description": "Configuration for the legacy ABAC authorization mode."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1:LoggingConfig",
          "description": "Logging configuration for the cluster."
        },
        "loggingService": {
          "type": "string",
          "description": "The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1:MaintenancePolicy",
          "description": "Configure the maintenance policy for this cluster."
        },
        "masterAuth": {
          "$ref": "#/types/google-native:container%2Fv1:MasterAuth",
          "description": "The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to \"admin\", a random password will be generated, and a client certificate will be issued."
        },
        "masterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:container%2Fv1:MasterAuthorizedNetworksConfig",
          "description": "The configuration options for master authorized networks feature."
        },
        "meshCertificates": {
          "$ref": "#/types/google-native:container%2Fv1:MeshCertificates",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:container%2Fv1:MonitoringConfig",
          "description": "Monitoring configuration for the cluster."
        },
        "monitoringService": {
          "type": "string",
          "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions."
        },
        "name": {
          "type": "string",
          "description": "The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter."
        },
        "network": {
          "type": "string",
          "description": "The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkConfig",
          "description": "Configuration for cluster networking."
        },
        "networkPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:NetworkPolicy",
          "description": "Configuration options for the NetworkPolicy feature."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodeConfig",
          "description": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.",
          "deprecationMessage": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead."
        },
        "nodePoolAutoConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoConfig",
          "description": "Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
        },
        "nodePoolDefaults": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolDefaults",
          "description": "Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object."
        },
        "nodePools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:NodePool"
          },
          "description": "The node pools associated with this cluster. This field should not be set if \"node_config\" or \"initial_node_count\" are specified."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NotificationConfig",
          "description": "Notification configuration of the cluster."
        },
        "parent": {
          "type": "string",
          "description": "The parent (project and location) where the cluster will be created. Specified in the format `projects/*/locations/*`."
        },
        "parentProductConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ParentProductConfig",
          "description": "The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:container%2Fv1:PrivateClusterConfig",
          "description": "Configuration for private cluster."
        },
        "project": {
          "type": "string",
          "description": "Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field."
        },
        "releaseChannel": {
          "$ref": "#/types/google-native:container%2Fv1:ReleaseChannel",
          "description": "Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version."
        },
        "resourceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for the cluster to use to annotate any related Google Compute Engine resources."
        },
        "resourceUsageExportConfig": {
          "$ref": "#/types/google-native:container%2Fv1:ResourceUsageExportConfig",
          "description": "Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:container%2Fv1:SecurityPostureConfig",
          "description": "Enable/Disable Security Posture API features for the cluster."
        },
        "shieldedNodes": {
          "$ref": "#/types/google-native:container%2Fv1:ShieldedNodes",
          "description": "Shielded Nodes configuration."
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected."
        },
        "verticalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:VerticalPodAutoscaling",
          "description": "Cluster-level Vertical Pod Autoscaling configuration."
        },
        "workloadIdentityConfig": {
          "$ref": "#/types/google-native:container%2Fv1:WorkloadIdentityConfig",
          "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies."
        },
        "zone": {
          "type": "string",
          "description": "Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field."
        }
      },
      "methods": {
        "getKubeconfig": "google-native:container/v1:Cluster/getKubeconfig"
      }
    },
    "google-native:container/v1:NodePool": {
      "description": "Creates a node pool for a cluster.",
      "properties": {
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoscalingResponse",
          "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
        },
        "bestEffortProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1:BestEffortProvisioningResponse",
          "description": "Enable best effort provisioning for nodes"
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:StatusConditionResponse"
          },
          "description": "Which conditions caused the current node pool state."
        },
        "config": {
          "$ref": "#/types/google-native:container%2Fv1:NodeConfigResponse",
          "description": "The node configuration of the pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota."
        },
        "instanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1:NodeManagementResponse",
          "description": "NodeManagement configuration for this NodePool."
        },
        "maxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraintResponse",
          "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
        },
        "name": {
          "type": "string",
          "description": "The name of the node pool."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodeNetworkConfigResponse",
          "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
        },
        "placementPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:PlacementPolicyResponse",
          "description": "Specifies the node placement policy."
        },
        "podIpv4CidrSize": {
          "type": "integer",
          "description": "[Output only] The pod CIDR block size per node in this node pool."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuedProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1:QueuedProvisioningResponse",
          "description": "Specifies the configuration of queued provisioning."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "[Output only] The status of the nodes in this pool instance."
        },
        "statusMessage": {
          "type": "string",
          "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.",
          "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available."
        },
        "updateInfo": {
          "$ref": "#/types/google-native:container%2Fv1:UpdateInfoResponse",
          "description": "[Output only] Update info contains relevant information during a node pool update."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1:UpgradeSettingsResponse",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        },
        "version": {
          "type": "string",
          "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version)."
        }
      },
      "type": "object",
      "required": [
        "autoscaling",
        "bestEffortProvisioning",
        "clusterId",
        "conditions",
        "config",
        "etag",
        "initialNodeCount",
        "instanceGroupUrls",
        "location",
        "locations",
        "management",
        "maxPodsConstraint",
        "name",
        "networkConfig",
        "placementPolicy",
        "podIpv4CidrSize",
        "project",
        "queuedProvisioning",
        "selfLink",
        "status",
        "statusMessage",
        "updateInfo",
        "upgradeSettings",
        "version"
      ],
      "inputProperties": {
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoscaling",
          "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
        },
        "bestEffortProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1:BestEffortProvisioning",
          "description": "Enable best effort provisioning for nodes"
        },
        "clusterId": {
          "type": "string",
          "description": "Deprecated. The name of the cluster. This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Deprecated. The name of the cluster. This field has been deprecated and replaced by the parent field."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1:StatusCondition"
          },
          "description": "Which conditions caused the current node pool state."
        },
        "config": {
          "$ref": "#/types/google-native:container%2Fv1:NodeConfig",
          "description": "The node configuration of the pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1:NodeManagement",
          "description": "NodeManagement configuration for this NodePool."
        },
        "maxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraint",
          "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
        },
        "name": {
          "type": "string",
          "description": "The name of the node pool."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1:NodeNetworkConfig",
          "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
        },
        "parent": {
          "type": "string",
          "description": "The parent (project, location, cluster name) where the node pool will be created. Specified in the format `projects/*/locations/*/clusters/*`."
        },
        "placementPolicy": {
          "$ref": "#/types/google-native:container%2Fv1:PlacementPolicy",
          "description": "Specifies the node placement policy."
        },
        "project": {
          "type": "string",
          "description": "Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field."
        },
        "queuedProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1:QueuedProvisioning",
          "description": "Specifies the configuration of queued provisioning."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1:UpgradeSettings",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        },
        "version": {
          "type": "string",
          "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version)."
        },
        "zone": {
          "type": "string",
          "description": "Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field."
        }
      },
      "requiredInputs": [
        "clusterId"
      ]
    },
    "google-native:container/v1beta1:Cluster": {
      "description": "Creates a cluster, consisting of the specified number and type of Google Compute Engine instances. By default, the cluster is created in the project's [default network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks). One firewall is added for the cluster. After cluster creation, the Kubelet creates routes for each node to allow the containers on that node to communicate with all other instances in the cluster. Finally, an entry is added to the project's global metadata indicating which CIDR range the cluster is using.",
      "properties": {
        "addonsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AddonsConfigResponse",
          "description": "Configurations for the various addons available to run in the cluster."
        },
        "authenticatorGroupsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AuthenticatorGroupsConfigResponse",
          "description": "Configuration controlling RBAC group membership information."
        },
        "autopilot": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AutopilotResponse",
          "description": "Autopilot configuration for the cluster."
        },
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterAutoscalingResponse",
          "description": "Cluster-level autoscaling configuration."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BinaryAuthorizationResponse",
          "description": "Configuration for Binary Authorization."
        },
        "clusterIpv4Cidr": {
          "type": "string",
          "description": "The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`."
        },
        "clusterTelemetry": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterTelemetryResponse",
          "description": "Telemetry integration for the cluster."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:StatusConditionResponse"
          },
          "description": "Which conditions caused the current cluster state."
        },
        "confidentialNodes": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ConfidentialNodesResponse",
          "description": "Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled."
        },
        "costManagementConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:CostManagementConfigResponse",
          "description": "Configuration for the fine-grained cost management feature."
        },
        "createTime": {
          "type": "string",
          "description": "[Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "currentMasterVersion": {
          "type": "string",
          "description": "[Output only] The current software version of the master endpoint."
        },
        "currentNodeCount": {
          "type": "integer",
          "description": "[Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.",
          "deprecationMessage": "[Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information."
        },
        "currentNodeVersion": {
          "type": "string",
          "description": "[Output only] Deprecated, use [NodePool.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they're in the process of being upgraded, this reflects the minimum version of all nodes."
        },
        "databaseEncryption": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DatabaseEncryptionResponse",
          "description": "Configuration of etcd encryption."
        },
        "defaultMaxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraintResponse",
          "description": "The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this cluster."
        },
        "enableK8sBetaApis": {
          "$ref": "#/types/google-native:container%2Fv1beta1:K8sBetaAPIConfigResponse",
          "description": "Kubernetes open source beta apis enabled on the cluster. Only beta apis."
        },
        "enableKubernetesAlpha": {
          "type": "boolean",
          "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1beta1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation."
        },
        "enableTpu": {
          "type": "boolean",
          "description": "Enable the ability to use Cloud TPUs in this cluster. This field is deprecated, use tpu_config.enabled instead.",
          "deprecationMessage": "Enable the ability to use Cloud TPUs in this cluster. This field is deprecated, use tpu_config.enabled instead."
        },
        "endpoint": {
          "type": "string",
          "description": "[Output only] The IP address of this cluster's master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information."
        },
        "enterpriseConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:EnterpriseConfigResponse",
          "description": "GKE Enterprise Configuration."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "expireTime": {
          "type": "string",
          "description": "[Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "fleet": {
          "$ref": "#/types/google-native:container%2Fv1beta1:FleetResponse",
          "description": "Fleet information for the cluster."
        },
        "identityServiceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IdentityServiceConfigResponse",
          "description": "Configuration for Identity Service component."
        },
        "initialClusterVersion": {
          "type": "string",
          "description": "The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"\",\"-\": picks the default Kubernetes version"
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.",
          "deprecationMessage": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead."
        },
        "instanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated. Use node_pools.instance_group_urls.",
          "deprecationMessage": "Deprecated. Use node_pools.instance_group_urls."
        },
        "ipAllocationPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IPAllocationPolicyResponse",
          "description": "Configuration for cluster IP allocation."
        },
        "labelFingerprint": {
          "type": "string",
          "description": "The fingerprint of the set of labels for this cluster."
        },
        "legacyAbac": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LegacyAbacResponse",
          "description": "Configuration for the legacy ABAC authorization mode."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LoggingConfigResponse",
          "description": "Logging configuration for the cluster."
        },
        "loggingService": {
          "type": "string",
          "description": "The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaintenancePolicyResponse",
          "description": "Configure the maintenance policy for this cluster."
        },
        "master": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MasterResponse",
          "description": "Configuration for master components."
        },
        "masterAuth": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MasterAuthResponse",
          "description": "The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to \"admin\", a random password will be generated, and a client certificate will be issued."
        },
        "masterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MasterAuthorizedNetworksConfigResponse",
          "description": "The configuration options for master authorized networks feature."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP prefix in CIDR notation to use for the hosted master network. This prefix will be used for assigning private IP addresses to the master or set of masters, as well as the ILB VIP. This field is deprecated, use private_cluster_config.master_ipv4_cidr_block instead.",
          "deprecationMessage": "The IP prefix in CIDR notation to use for the hosted master network. This prefix will be used for assigning private IP addresses to the master or set of masters, as well as the ILB VIP. This field is deprecated, use private_cluster_config.master_ipv4_cidr_block instead."
        },
        "meshCertificates": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MeshCertificatesResponse",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MonitoringConfigResponse",
          "description": "Monitoring configuration for the cluster."
        },
        "monitoringService": {
          "type": "string",
          "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions."
        },
        "name": {
          "type": "string",
          "description": "The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter."
        },
        "network": {
          "type": "string",
          "description": "The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used. On output this shows the network ID instead of the name."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkConfigResponse",
          "description": "Configuration for cluster networking."
        },
        "networkPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPolicyResponse",
          "description": "Configuration options for the NetworkPolicy feature."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfigResponse",
          "description": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.",
          "deprecationMessage": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead."
        },
        "nodeIpv4CidrSize": {
          "type": "integer",
          "description": "[Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode."
        },
        "nodePoolAutoConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoConfigResponse",
          "description": "Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
        },
        "nodePoolDefaults": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolDefaultsResponse",
          "description": "Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object."
        },
        "nodePools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolResponse"
          },
          "description": "The node pools associated with this cluster. This field should not be set if \"node_config\" or \"initial_node_count\" are specified."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NotificationConfigResponse",
          "description": "Notification configuration of the cluster."
        },
        "parentProductConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ParentProductConfigResponse",
          "description": "The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster."
        },
        "podSecurityPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PodSecurityPolicyConfigResponse",
          "description": "Configuration for the PodSecurityPolicy feature."
        },
        "privateCluster": {
          "type": "boolean",
          "description": "If this is a private cluster setup. Private clusters are clusters that, by default have no external IP addresses on the nodes and where nodes and the master communicate over private IP addresses. This field is deprecated, use private_cluster_config.enable_private_nodes instead.",
          "deprecationMessage": "If this is a private cluster setup. Private clusters are clusters that, by default have no external IP addresses on the nodes and where nodes and the master communicate over private IP addresses. This field is deprecated, use private_cluster_config.enable_private_nodes instead."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PrivateClusterConfigResponse",
          "description": "Configuration for private cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protectConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ProtectConfigResponse",
          "description": "Deprecated: Use SecurityPostureConfig instead. Enable/Disable Protect API features for the cluster.",
          "deprecationMessage": "Deprecated: Use SecurityPostureConfig instead. Enable/Disable Protect API features for the cluster."
        },
        "releaseChannel": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ReleaseChannelResponse",
          "description": "Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version."
        },
        "resourceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for the cluster to use to annotate any related Google Compute Engine resources."
        },
        "resourceUsageExportConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ResourceUsageExportConfigResponse",
          "description": "Configuration for exporting resource usages. Resource usage export is disabled when this config unspecified."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SecurityPostureConfigResponse",
          "description": "Enable/Disable Security Posture API features for the cluster."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "servicesIpv4Cidr": {
          "type": "string",
          "description": "[Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR."
        },
        "shieldedNodes": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ShieldedNodesResponse",
          "description": "Shielded Nodes configuration."
        },
        "status": {
          "type": "string",
          "description": "[Output only] The current status of this cluster."
        },
        "statusMessage": {
          "type": "string",
          "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.",
          "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available."
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected. On output this shows the subnetwork ID instead of the name."
        },
        "tpuConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:TpuConfigResponse",
          "description": "Configuration for Cloud TPU support;"
        },
        "tpuIpv4CidrBlock": {
          "type": "string",
          "description": "[Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`)."
        },
        "verticalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:VerticalPodAutoscalingResponse",
          "description": "Cluster-level Vertical Pod Autoscaling configuration."
        },
        "workloadAltsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadALTSConfigResponse",
          "description": "Configuration for direct-path (via ALTS) with workload identity."
        },
        "workloadCertificates": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadCertificatesResponse",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "workloadIdentityConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadIdentityConfigResponse",
          "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies."
        },
        "zone": {
          "type": "string",
          "description": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.",
          "deprecationMessage": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead."
        }
      },
      "type": "object",
      "required": [
        "addonsConfig",
        "authenticatorGroupsConfig",
        "autopilot",
        "autoscaling",
        "binaryAuthorization",
        "clusterIpv4Cidr",
        "clusterTelemetry",
        "conditions",
        "confidentialNodes",
        "costManagementConfig",
        "createTime",
        "currentMasterVersion",
        "currentNodeCount",
        "currentNodeVersion",
        "databaseEncryption",
        "defaultMaxPodsConstraint",
        "description",
        "enableK8sBetaApis",
        "enableKubernetesAlpha",
        "enableTpu",
        "endpoint",
        "enterpriseConfig",
        "etag",
        "expireTime",
        "fleet",
        "identityServiceConfig",
        "initialClusterVersion",
        "initialNodeCount",
        "instanceGroupUrls",
        "ipAllocationPolicy",
        "labelFingerprint",
        "legacyAbac",
        "location",
        "locations",
        "loggingConfig",
        "loggingService",
        "maintenancePolicy",
        "master",
        "masterAuth",
        "masterAuthorizedNetworksConfig",
        "masterIpv4CidrBlock",
        "meshCertificates",
        "monitoringConfig",
        "monitoringService",
        "name",
        "network",
        "networkConfig",
        "networkPolicy",
        "nodeConfig",
        "nodeIpv4CidrSize",
        "nodePoolAutoConfig",
        "nodePoolDefaults",
        "nodePools",
        "notificationConfig",
        "parentProductConfig",
        "podSecurityPolicyConfig",
        "privateCluster",
        "privateClusterConfig",
        "project",
        "protectConfig",
        "releaseChannel",
        "resourceLabels",
        "resourceUsageExportConfig",
        "securityPostureConfig",
        "selfLink",
        "servicesIpv4Cidr",
        "shieldedNodes",
        "status",
        "statusMessage",
        "subnetwork",
        "tpuConfig",
        "tpuIpv4CidrBlock",
        "verticalPodAutoscaling",
        "workloadAltsConfig",
        "workloadCertificates",
        "workloadIdentityConfig",
        "zone"
      ],
      "inputProperties": {
        "addonsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AddonsConfig",
          "description": "Configurations for the various addons available to run in the cluster."
        },
        "authenticatorGroupsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:AuthenticatorGroupsConfig",
          "description": "Configuration controlling RBAC group membership information."
        },
        "autopilot": {
          "$ref": "#/types/google-native:container%2Fv1beta1:Autopilot",
          "description": "Autopilot configuration for the cluster."
        },
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterAutoscaling",
          "description": "Cluster-level autoscaling configuration."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BinaryAuthorization",
          "description": "Configuration for Binary Authorization."
        },
        "clusterIpv4Cidr": {
          "type": "string",
          "description": "The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`."
        },
        "clusterTelemetry": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ClusterTelemetry",
          "description": "Telemetry integration for the cluster."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:StatusCondition"
          },
          "description": "Which conditions caused the current cluster state."
        },
        "confidentialNodes": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ConfidentialNodes",
          "description": "Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled."
        },
        "costManagementConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:CostManagementConfig",
          "description": "Configuration for the fine-grained cost management feature."
        },
        "databaseEncryption": {
          "$ref": "#/types/google-native:container%2Fv1beta1:DatabaseEncryption",
          "description": "Configuration of etcd encryption."
        },
        "defaultMaxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraint",
          "description": "The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support."
        },
        "description": {
          "type": "string",
          "description": "An optional description of this cluster."
        },
        "enableK8sBetaApis": {
          "$ref": "#/types/google-native:container%2Fv1beta1:K8sBetaAPIConfig",
          "description": "Kubernetes open source beta apis enabled on the cluster. Only beta apis."
        },
        "enableKubernetesAlpha": {
          "type": "boolean",
          "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1beta1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation."
        },
        "enableTpu": {
          "type": "boolean",
          "description": "Enable the ability to use Cloud TPUs in this cluster. This field is deprecated, use tpu_config.enabled instead.",
          "deprecationMessage": "Enable the ability to use Cloud TPUs in this cluster. This field is deprecated, use tpu_config.enabled instead."
        },
        "enterpriseConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:EnterpriseConfig",
          "description": "GKE Enterprise Configuration."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "fleet": {
          "$ref": "#/types/google-native:container%2Fv1beta1:Fleet",
          "description": "Fleet information for the cluster."
        },
        "identityServiceConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IdentityServiceConfig",
          "description": "Configuration for Identity Service component."
        },
        "initialClusterVersion": {
          "type": "string",
          "description": "The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"\",\"-\": picks the default Kubernetes version"
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.",
          "deprecationMessage": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead."
        },
        "instanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated. Use node_pools.instance_group_urls.",
          "deprecationMessage": "Deprecated. Use node_pools.instance_group_urls."
        },
        "ipAllocationPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:IPAllocationPolicy",
          "description": "Configuration for cluster IP allocation."
        },
        "legacyAbac": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LegacyAbac",
          "description": "Configuration for the legacy ABAC authorization mode."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:LoggingConfig",
          "description": "Logging configuration for the cluster."
        },
        "loggingService": {
          "type": "string",
          "description": "The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaintenancePolicy",
          "description": "Configure the maintenance policy for this cluster."
        },
        "master": {
          "$ref": "#/types/google-native:container%2Fv1beta1:Master",
          "description": "Configuration for master components."
        },
        "masterAuth": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MasterAuth",
          "description": "The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to \"admin\", a random password will be generated, and a client certificate will be issued."
        },
        "masterAuthorizedNetworksConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MasterAuthorizedNetworksConfig",
          "description": "The configuration options for master authorized networks feature."
        },
        "masterIpv4CidrBlock": {
          "type": "string",
          "description": "The IP prefix in CIDR notation to use for the hosted master network. This prefix will be used for assigning private IP addresses to the master or set of masters, as well as the ILB VIP. This field is deprecated, use private_cluster_config.master_ipv4_cidr_block instead.",
          "deprecationMessage": "The IP prefix in CIDR notation to use for the hosted master network. This prefix will be used for assigning private IP addresses to the master or set of masters, as well as the ILB VIP. This field is deprecated, use private_cluster_config.master_ipv4_cidr_block instead."
        },
        "meshCertificates": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MeshCertificates",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MonitoringConfig",
          "description": "Monitoring configuration for the cluster."
        },
        "monitoringService": {
          "type": "string",
          "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions."
        },
        "name": {
          "type": "string",
          "description": "The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter."
        },
        "network": {
          "type": "string",
          "description": "The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used. On output this shows the network ID instead of the name."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkConfig",
          "description": "Configuration for cluster networking."
        },
        "networkPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPolicy",
          "description": "Configuration options for the NetworkPolicy feature."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfig",
          "description": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.",
          "deprecationMessage": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead."
        },
        "nodePoolAutoConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoConfig",
          "description": "Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
        },
        "nodePoolDefaults": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolDefaults",
          "description": "Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object."
        },
        "nodePools": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodePool"
          },
          "description": "The node pools associated with this cluster. This field should not be set if \"node_config\" or \"initial_node_count\" are specified."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NotificationConfig",
          "description": "Notification configuration of the cluster."
        },
        "parent": {
          "type": "string",
          "description": "The parent (project and location) where the cluster will be created. Specified in the format `projects/*/locations/*`."
        },
        "parentProductConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ParentProductConfig",
          "description": "The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster."
        },
        "podSecurityPolicyConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PodSecurityPolicyConfig",
          "description": "Configuration for the PodSecurityPolicy feature."
        },
        "privateCluster": {
          "type": "boolean",
          "description": "If this is a private cluster setup. Private clusters are clusters that, by default have no external IP addresses on the nodes and where nodes and the master communicate over private IP addresses. This field is deprecated, use private_cluster_config.enable_private_nodes instead.",
          "deprecationMessage": "If this is a private cluster setup. Private clusters are clusters that, by default have no external IP addresses on the nodes and where nodes and the master communicate over private IP addresses. This field is deprecated, use private_cluster_config.enable_private_nodes instead."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PrivateClusterConfig",
          "description": "Configuration for private cluster."
        },
        "project": {
          "type": "string",
          "description": "Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Required. Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field."
        },
        "protectConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ProtectConfig",
          "description": "Deprecated: Use SecurityPostureConfig instead. Enable/Disable Protect API features for the cluster.",
          "deprecationMessage": "Deprecated: Use SecurityPostureConfig instead. Enable/Disable Protect API features for the cluster."
        },
        "releaseChannel": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ReleaseChannel",
          "description": "Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version."
        },
        "resourceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for the cluster to use to annotate any related Google Compute Engine resources."
        },
        "resourceUsageExportConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ResourceUsageExportConfig",
          "description": "Configuration for exporting resource usages. Resource usage export is disabled when this config unspecified."
        },
        "securityPostureConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:SecurityPostureConfig",
          "description": "Enable/Disable Security Posture API features for the cluster."
        },
        "shieldedNodes": {
          "$ref": "#/types/google-native:container%2Fv1beta1:ShieldedNodes",
          "description": "Shielded Nodes configuration."
        },
        "subnetwork": {
          "type": "string",
          "description": "The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected. On output this shows the subnetwork ID instead of the name."
        },
        "tpuConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:TpuConfig",
          "description": "Configuration for Cloud TPU support;"
        },
        "verticalPodAutoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:VerticalPodAutoscaling",
          "description": "Cluster-level Vertical Pod Autoscaling configuration."
        },
        "workloadAltsConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadALTSConfig",
          "description": "Configuration for direct-path (via ALTS) with workload identity."
        },
        "workloadCertificates": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadCertificates",
          "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
        },
        "workloadIdentityConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadIdentityConfig",
          "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies."
        },
        "zone": {
          "type": "string",
          "description": "Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field."
        }
      },
      "methods": {
        "getKubeconfig": "google-native:container/v1beta1:Cluster/getKubeconfig"
      }
    },
    "google-native:container/v1beta1:NodePool": {
      "description": "Creates a node pool for a cluster.",
      "properties": {
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoscalingResponse",
          "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
        },
        "bestEffortProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BestEffortProvisioningResponse",
          "description": "Enable best effort provisioning for nodes"
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:StatusConditionResponse"
          },
          "description": "Which conditions caused the current node pool state."
        },
        "config": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfigResponse",
          "description": "The node configuration of the pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota."
        },
        "instanceGroupUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeManagementResponse",
          "description": "NodeManagement configuration for this NodePool."
        },
        "maxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraintResponse",
          "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
        },
        "name": {
          "type": "string",
          "description": "The name of the node pool."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeNetworkConfigResponse",
          "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
        },
        "placementPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PlacementPolicyResponse",
          "description": "Specifies the node placement policy."
        },
        "podIpv4CidrSize": {
          "type": "integer",
          "description": "[Output only] The pod CIDR block size per node in this node pool."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuedProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1beta1:QueuedProvisioningResponse",
          "description": "Specifies the configuration of queued provisioning."
        },
        "selfLink": {
          "type": "string",
          "description": "[Output only] Server-defined URL for the resource."
        },
        "status": {
          "type": "string",
          "description": "[Output only] The status of the nodes in this pool instance."
        },
        "statusMessage": {
          "type": "string",
          "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.",
          "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available."
        },
        "updateInfo": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpdateInfoResponse",
          "description": "[Output only] Update info contains relevant information during a node pool update."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpgradeSettingsResponse",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        },
        "version": {
          "type": "string",
          "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version)."
        }
      },
      "type": "object",
      "required": [
        "autoscaling",
        "bestEffortProvisioning",
        "clusterId",
        "conditions",
        "config",
        "etag",
        "initialNodeCount",
        "instanceGroupUrls",
        "location",
        "locations",
        "management",
        "maxPodsConstraint",
        "name",
        "networkConfig",
        "placementPolicy",
        "podIpv4CidrSize",
        "project",
        "queuedProvisioning",
        "selfLink",
        "status",
        "statusMessage",
        "updateInfo",
        "upgradeSettings",
        "version"
      ],
      "inputProperties": {
        "autoscaling": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoscaling",
          "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
        },
        "bestEffortProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1beta1:BestEffortProvisioning",
          "description": "Enable best effort provisioning for nodes"
        },
        "clusterId": {
          "type": "string",
          "description": "Deprecated. The name of the cluster. This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Required. Deprecated. The name of the cluster. This field has been deprecated and replaced by the parent field."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:container%2Fv1beta1:StatusCondition"
          },
          "description": "Which conditions caused the current node pool state."
        },
        "config": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfig",
          "description": "The node configuration of the pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding."
        },
        "initialNodeCount": {
          "type": "integer",
          "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed."
        },
        "management": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeManagement",
          "description": "NodeManagement configuration for this NodePool."
        },
        "maxPodsConstraint": {
          "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraint",
          "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
        },
        "name": {
          "type": "string",
          "description": "The name of the node pool."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:container%2Fv1beta1:NodeNetworkConfig",
          "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
        },
        "parent": {
          "type": "string",
          "description": "The parent (project, location, cluster name) where the node pool will be created. Specified in the format `projects/*/locations/*/clusters/*`."
        },
        "placementPolicy": {
          "$ref": "#/types/google-native:container%2Fv1beta1:PlacementPolicy",
          "description": "Specifies the node placement policy."
        },
        "project": {
          "type": "string",
          "description": "Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Required. Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field."
        },
        "queuedProvisioning": {
          "$ref": "#/types/google-native:container%2Fv1beta1:QueuedProvisioning",
          "description": "Specifies the configuration of queued provisioning."
        },
        "upgradeSettings": {
          "$ref": "#/types/google-native:container%2Fv1beta1:UpgradeSettings",
          "description": "Upgrade settings control disruption and speed of the upgrade."
        },
        "version": {
          "type": "string",
          "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version)."
        },
        "zone": {
          "type": "string",
          "description": "Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field.",
          "deprecationMessage": "Required. Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field."
        }
      },
      "requiredInputs": [
        "clusterId"
      ]
    },
    "google-native:containeranalysis/v1:Note": {
      "description": "Creates a new note.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AttestationNoteResponse",
          "description": "A note describing an attestation role."
        },
        "build": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildNoteResponse",
          "description": "A note describing build provenance for a verifiable build."
        },
        "compliance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ComplianceNoteResponse",
          "description": "A note describing a compliance check."
        },
        "createTime": {
          "type": "string",
          "description": "The time this note was created. This field can be used as a filter in list requests."
        },
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DeploymentNoteResponse",
          "description": "A note describing something that can be deployed."
        },
        "discovery": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryNoteResponse",
          "description": "A note describing the initial analysis of a resource."
        },
        "dsseAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DSSEAttestationNoteResponse",
          "description": "A note describing a dsse attestation note."
        },
        "expirationTime": {
          "type": "string",
          "description": "Time of expiration for this note. Empty if note does not expire."
        },
        "image": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ImageNoteResponse",
          "description": "A note describing a base image."
        },
        "kind": {
          "type": "string",
          "description": "The type of analysis. This field can be used as a filter in list requests."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this note."
        },
        "name": {
          "type": "string",
          "description": "The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`."
        },
        "noteId": {
          "type": "string",
          "description": "Required. The ID to use for this note.",
          "replaceOnChanges": true
        },
        "package": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageNoteResponse",
          "description": "A note describing a package hosted by various package managers."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "relatedNoteNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other notes related to this note."
        },
        "relatedUrl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrlResponse"
          },
          "description": "URLs associated with this note."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMReferenceNoteResponse",
          "description": "A note describing an SBOM reference."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this note."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this note was last updated. This field can be used as a filter in list requests."
        },
        "upgrade": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeNoteResponse",
          "description": "A note describing available package upgrades."
        },
        "vulnerability": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityNoteResponse",
          "description": "A note describing a package vulnerability."
        },
        "vulnerabilityAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityAssessmentNoteResponse",
          "description": "A note describing a vulnerability assessment."
        }
      },
      "type": "object",
      "required": [
        "attestation",
        "build",
        "compliance",
        "createTime",
        "deployment",
        "discovery",
        "dsseAttestation",
        "expirationTime",
        "image",
        "kind",
        "longDescription",
        "name",
        "noteId",
        "package",
        "project",
        "relatedNoteNames",
        "relatedUrl",
        "sbomReference",
        "shortDescription",
        "updateTime",
        "upgrade",
        "vulnerability",
        "vulnerabilityAssessment"
      ],
      "inputProperties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AttestationNote",
          "description": "A note describing an attestation role."
        },
        "build": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildNote",
          "description": "A note describing build provenance for a verifiable build."
        },
        "compliance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ComplianceNote",
          "description": "A note describing a compliance check."
        },
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DeploymentNote",
          "description": "A note describing something that can be deployed."
        },
        "discovery": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryNote",
          "description": "A note describing the initial analysis of a resource."
        },
        "dsseAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DSSEAttestationNote",
          "description": "A note describing a dsse attestation note."
        },
        "expirationTime": {
          "type": "string",
          "description": "Time of expiration for this note. Empty if note does not expire."
        },
        "image": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ImageNote",
          "description": "A note describing a base image."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this note."
        },
        "noteId": {
          "type": "string",
          "description": "Required. The ID to use for this note.",
          "replaceOnChanges": true
        },
        "package": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageNote",
          "description": "A note describing a package hosted by various package managers."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "relatedNoteNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other notes related to this note."
        },
        "relatedUrl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrl"
          },
          "description": "URLs associated with this note."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMReferenceNote",
          "description": "A note describing an SBOM reference."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this note."
        },
        "upgrade": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeNote",
          "description": "A note describing available package upgrades."
        },
        "vulnerability": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityNote",
          "description": "A note describing a package vulnerability."
        },
        "vulnerabilityAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityAssessmentNote",
          "description": "A note describing a vulnerability assessment."
        }
      },
      "requiredInputs": [
        "noteId"
      ]
    },
    "google-native:containeranalysis/v1:NoteIamBinding": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1:NoteIamMember": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1:NoteIamPolicy": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "noteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "noteId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "noteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "noteId"
      ]
    },
    "google-native:containeranalysis/v1:Occurrence": {
      "description": "Creates a new occurrence.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AttestationOccurrenceResponse",
          "description": "Describes an attestation of an artifact."
        },
        "build": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildOccurrenceResponse",
          "description": "Describes a verifiable build."
        },
        "compliance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ComplianceOccurrenceResponse",
          "description": "Describes a compliance violation on a linked resource."
        },
        "createTime": {
          "type": "string",
          "description": "The time this occurrence was created."
        },
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DeploymentOccurrenceResponse",
          "description": "Describes the deployment of an artifact on a runtime."
        },
        "discovery": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryOccurrenceResponse",
          "description": "Describes when a resource was discovered."
        },
        "dsseAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DSSEAttestationOccurrenceResponse",
          "description": "Describes an attestation of an artifact using dsse."
        },
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:EnvelopeResponse",
          "description": "https://github.com/secure-systems-lab/dsse"
        },
        "image": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ImageOccurrenceResponse",
          "description": "Describes how this resource derives from the basis in the associated note."
        },
        "kind": {
          "type": "string",
          "description": "This explicitly denotes which of the occurrence details are specified. This field can be used as a filter in list requests."
        },
        "name": {
          "type": "string",
          "description": "The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`."
        },
        "noteName": {
          "type": "string",
          "description": "Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests."
        },
        "package": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageOccurrenceResponse",
          "description": "Describes the installation of a package on the linked resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remediation": {
          "type": "string",
          "description": "A description of actions that can be taken to remedy the note."
        },
        "resourceUri": {
          "type": "string",
          "description": "Immutable. A URI that represents the resource for which the occurrence applies. For example, `https://gcr.io/project/image@sha256:123abc` for a Docker image."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMReferenceOccurrenceResponse",
          "description": "Describes a specific SBOM reference occurrences."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this occurrence was last updated."
        },
        "upgrade": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeOccurrenceResponse",
          "description": "Describes an available package upgrade on the linked resource."
        },
        "vulnerability": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityOccurrenceResponse",
          "description": "Describes a security vulnerability."
        }
      },
      "type": "object",
      "required": [
        "attestation",
        "build",
        "compliance",
        "createTime",
        "deployment",
        "discovery",
        "dsseAttestation",
        "envelope",
        "image",
        "kind",
        "name",
        "noteName",
        "package",
        "project",
        "remediation",
        "resourceUri",
        "sbomReference",
        "updateTime",
        "upgrade",
        "vulnerability"
      ],
      "inputProperties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:AttestationOccurrence",
          "description": "Describes an attestation of an artifact."
        },
        "build": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildOccurrence",
          "description": "Describes a verifiable build."
        },
        "compliance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ComplianceOccurrence",
          "description": "Describes a compliance violation on a linked resource."
        },
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DeploymentOccurrence",
          "description": "Describes the deployment of an artifact on a runtime."
        },
        "discovery": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryOccurrence",
          "description": "Describes when a resource was discovered."
        },
        "dsseAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:DSSEAttestationOccurrence",
          "description": "Describes an attestation of an artifact using dsse."
        },
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:Envelope",
          "description": "https://github.com/secure-systems-lab/dsse"
        },
        "image": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:ImageOccurrence",
          "description": "Describes how this resource derives from the basis in the associated note."
        },
        "noteName": {
          "type": "string",
          "description": "Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests."
        },
        "package": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageOccurrence",
          "description": "Describes the installation of a package on the linked resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remediation": {
          "type": "string",
          "description": "A description of actions that can be taken to remedy the note."
        },
        "resourceUri": {
          "type": "string",
          "description": "Immutable. A URI that represents the resource for which the occurrence applies. For example, `https://gcr.io/project/image@sha256:123abc` for a Docker image."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMReferenceOccurrence",
          "description": "Describes a specific SBOM reference occurrences."
        },
        "upgrade": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeOccurrence",
          "description": "Describes an available package upgrade on the linked resource."
        },
        "vulnerability": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityOccurrence",
          "description": "Describes a security vulnerability."
        }
      },
      "requiredInputs": [
        "noteName",
        "resourceUri"
      ]
    },
    "google-native:containeranalysis/v1:OccurrenceIamBinding": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1:OccurrenceIamMember": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1:OccurrenceIamPolicy": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "occurrenceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "occurrenceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "occurrenceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "occurrenceId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Note": {
      "description": "Creates a new `Note`.",
      "properties": {
        "attestationAuthority": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AttestationAuthorityResponse",
          "description": "A note describing an attestation role."
        },
        "baseImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BasisResponse",
          "description": "A note describing a base image."
        },
        "buildType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildTypeResponse",
          "description": "Build provenance type for a verifiable build."
        },
        "compliance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ComplianceNoteResponse",
          "description": "A note describing a compliance check."
        },
        "createTime": {
          "type": "string",
          "description": "The time this note was created. This field can be used as a filter in list requests."
        },
        "deployable": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DeployableResponse",
          "description": "A note describing something that can be deployed."
        },
        "discovery": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DiscoveryResponse",
          "description": "A note describing a provider/analysis type."
        },
        "dsseAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DSSEAttestationNoteResponse",
          "description": "A note describing a dsse attestation note."
        },
        "expirationTime": {
          "type": "string",
          "description": "Time of expiration for this note, null if note does not expire."
        },
        "kind": {
          "type": "string",
          "description": "This explicitly denotes which kind of note is specified. This field can be used as a filter in list requests."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this `Note`."
        },
        "name": {
          "type": "string",
          "description": "The name of the project. Should be of the form \"providers/{provider_id}\". @Deprecated"
        },
        "noteId": {
          "type": "string",
          "description": "The ID to use for this note."
        },
        "package": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageResponse",
          "description": "A note describing a package hosted by various package managers."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "relatedUrl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelatedUrlResponse"
          },
          "description": "URLs associated with this note"
        },
        "sbom": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DocumentNoteResponse",
          "description": "A note describing a software bill of materials."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SBOMReferenceNoteResponse",
          "description": "A note describing a reference to an SBOM."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this `Note`."
        },
        "spdxFile": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileNoteResponse",
          "description": "A note describing an SPDX File."
        },
        "spdxPackage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageInfoNoteResponse",
          "description": "A note describing an SPDX Package."
        },
        "spdxRelationship": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelationshipNoteResponse",
          "description": "A note describing a relationship between SPDX elements."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this note was last updated. This field can be used as a filter in list requests."
        },
        "upgrade": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeNoteResponse",
          "description": "A note describing an upgrade."
        },
        "vulnerabilityAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityAssessmentNoteResponse",
          "description": "A note describing a vulnerability assessment."
        },
        "vulnerabilityType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityTypeResponse",
          "description": "A package vulnerability type of note."
        }
      },
      "type": "object",
      "required": [
        "attestationAuthority",
        "baseImage",
        "buildType",
        "compliance",
        "createTime",
        "deployable",
        "discovery",
        "dsseAttestation",
        "expirationTime",
        "kind",
        "longDescription",
        "name",
        "package",
        "project",
        "relatedUrl",
        "sbom",
        "sbomReference",
        "shortDescription",
        "spdxFile",
        "spdxPackage",
        "spdxRelationship",
        "updateTime",
        "upgrade",
        "vulnerabilityAssessment",
        "vulnerabilityType"
      ],
      "inputProperties": {
        "attestationAuthority": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AttestationAuthority",
          "description": "A note describing an attestation role."
        },
        "baseImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Basis",
          "description": "A note describing a base image."
        },
        "buildType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildType",
          "description": "Build provenance type for a verifiable build."
        },
        "compliance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ComplianceNote",
          "description": "A note describing a compliance check."
        },
        "deployable": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Deployable",
          "description": "A note describing something that can be deployed."
        },
        "discovery": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Discovery",
          "description": "A note describing a provider/analysis type."
        },
        "dsseAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DSSEAttestationNote",
          "description": "A note describing a dsse attestation note."
        },
        "expirationTime": {
          "type": "string",
          "description": "Time of expiration for this note, null if note does not expire."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this `Note`."
        },
        "name": {
          "type": "string",
          "description": "The name of the note in the form \"projects/{provider_project_id}/notes/{NOTE_ID}\""
        },
        "noteId": {
          "type": "string",
          "description": "The ID to use for this note."
        },
        "package": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Package",
          "description": "A note describing a package hosted by various package managers."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "relatedUrl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelatedUrl"
          },
          "description": "URLs associated with this note"
        },
        "sbom": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DocumentNote",
          "description": "A note describing a software bill of materials."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SBOMReferenceNote",
          "description": "A note describing a reference to an SBOM."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this `Note`."
        },
        "spdxFile": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileNote",
          "description": "A note describing an SPDX File."
        },
        "spdxPackage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageInfoNote",
          "description": "A note describing an SPDX Package."
        },
        "spdxRelationship": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelationshipNote",
          "description": "A note describing a relationship between SPDX elements."
        },
        "upgrade": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeNote",
          "description": "A note describing an upgrade."
        },
        "vulnerabilityAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityAssessmentNote",
          "description": "A note describing a vulnerability assessment."
        },
        "vulnerabilityType": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityType",
          "description": "A package vulnerability type of note."
        }
      }
    },
    "google-native:containeranalysis/v1alpha1:NoteIamBinding": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1alpha1:NoteIamMember": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1alpha1:NoteIamPolicy": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "noteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "noteId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "noteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "noteId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:Occurrence": {
      "description": "Creates a new `Occurrence`. Use this method to create `Occurrences` for a resource.",
      "properties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AttestationResponse",
          "description": "Describes an attestation of an artifact."
        },
        "buildDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildDetailsResponse",
          "description": "Build details for a verifiable build."
        },
        "compliance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ComplianceOccurrenceResponse",
          "description": "Describes whether or not a resource passes compliance checks."
        },
        "createTime": {
          "type": "string",
          "description": "The time this `Occurrence` was created."
        },
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DeploymentResponse",
          "description": "Describes the deployment of an artifact on a runtime."
        },
        "derivedImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DerivedResponse",
          "description": "Describes how this resource derives from the basis in the associated note."
        },
        "discovered": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DiscoveredResponse",
          "description": "Describes the initial scan status for this resource."
        },
        "dsseAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DSSEAttestationOccurrenceResponse",
          "description": "This represents a DSSE attestation occurrence"
        },
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:EnvelopeResponse",
          "description": "https://github.com/secure-systems-lab/dsse"
        },
        "installation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InstallationResponse",
          "description": "Describes the installation of a package on the linked resource."
        },
        "kind": {
          "type": "string",
          "description": "This explicitly denotes which of the `Occurrence` details are specified. This field can be used as a filter in list requests."
        },
        "name": {
          "type": "string",
          "description": "The name of the project. Should be of the form \"projects/{project_id}\". @Deprecated"
        },
        "noteName": {
          "type": "string",
          "description": "An analysis note associated with this image, in the form \"providers/{provider_id}/notes/{NOTE_ID}\" This field can be used as a filter in list requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remediation": {
          "type": "string",
          "description": "A description of actions that can be taken to remedy the `Note`"
        },
        "resource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ResourceResponse",
          "description": " The resource for which the `Occurrence` applies."
        },
        "resourceUrl": {
          "type": "string",
          "description": "The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests."
        },
        "sbom": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DocumentOccurrenceResponse",
          "description": "Describes a specific software bill of materials document."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SBOMReferenceOccurrenceResponse",
          "description": "This represents an SBOM reference occurrence"
        },
        "spdxFile": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileOccurrenceResponse",
          "description": "Describes a specific SPDX File."
        },
        "spdxPackage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageInfoOccurrenceResponse",
          "description": "Describes a specific SPDX Package."
        },
        "spdxRelationship": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelationshipOccurrenceResponse",
          "description": "Describes a specific relationship between SPDX elements."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this `Occurrence` was last updated."
        },
        "upgrade": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeOccurrenceResponse",
          "description": "Describes an upgrade."
        },
        "vulnerabilityDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityDetailsResponse",
          "description": "Details of a security vulnerability note."
        }
      },
      "type": "object",
      "required": [
        "attestation",
        "buildDetails",
        "compliance",
        "createTime",
        "deployment",
        "derivedImage",
        "discovered",
        "dsseAttestation",
        "envelope",
        "installation",
        "kind",
        "name",
        "noteName",
        "project",
        "remediation",
        "resource",
        "resourceUrl",
        "sbom",
        "sbomReference",
        "spdxFile",
        "spdxPackage",
        "spdxRelationship",
        "updateTime",
        "upgrade",
        "vulnerabilityDetails"
      ],
      "inputProperties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Attestation",
          "description": "Describes an attestation of an artifact."
        },
        "buildDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildDetails",
          "description": "Build details for a verifiable build."
        },
        "compliance": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ComplianceOccurrence",
          "description": "Describes whether or not a resource passes compliance checks."
        },
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Deployment",
          "description": "Describes the deployment of an artifact on a runtime."
        },
        "derivedImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Derived",
          "description": "Describes how this resource derives from the basis in the associated note."
        },
        "discovered": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Discovered",
          "description": "Describes the initial scan status for this resource."
        },
        "dsseAttestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DSSEAttestationOccurrence",
          "description": "This represents a DSSE attestation occurrence"
        },
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Envelope",
          "description": "https://github.com/secure-systems-lab/dsse"
        },
        "installation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Installation",
          "description": "Describes the installation of a package on the linked resource."
        },
        "name": {
          "type": "string",
          "description": "The name of the project. Should be of the form \"projects/{project_id}\". @Deprecated"
        },
        "noteName": {
          "type": "string",
          "description": "An analysis note associated with this image, in the form \"providers/{provider_id}/notes/{NOTE_ID}\" This field can be used as a filter in list requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remediation": {
          "type": "string",
          "description": "A description of actions that can be taken to remedy the `Note`"
        },
        "resource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Resource",
          "description": " The resource for which the `Occurrence` applies."
        },
        "resourceUrl": {
          "type": "string",
          "description": "The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests."
        },
        "sbom": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DocumentOccurrence",
          "description": "Describes a specific software bill of materials document."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SBOMReferenceOccurrence",
          "description": "This represents an SBOM reference occurrence"
        },
        "spdxFile": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileOccurrence",
          "description": "Describes a specific SPDX File."
        },
        "spdxPackage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageInfoOccurrence",
          "description": "Describes a specific SPDX Package."
        },
        "spdxRelationship": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelationshipOccurrence",
          "description": "Describes a specific relationship between SPDX elements."
        },
        "upgrade": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeOccurrence",
          "description": "Describes an upgrade."
        },
        "vulnerabilityDetails": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityDetails",
          "description": "Details of a security vulnerability note."
        }
      }
    },
    "google-native:containeranalysis/v1alpha1:OccurrenceIamBinding": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1alpha1:OccurrenceIamMember": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1alpha1:OccurrenceIamPolicy": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "occurrenceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "occurrenceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "occurrenceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "occurrenceId"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ProviderNoteIamBinding": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ProviderNoteIamMember": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1alpha1:ProviderNoteIamPolicy": {
      "description": "Sets the access control policy on the specified `Note` or `Occurrence`. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a `Note` or an `Occurrence`, respectively. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "noteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "providerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "noteId",
        "providerId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "noteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "providerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "noteId",
        "providerId"
      ]
    },
    "google-native:containeranalysis/v1beta1:Note": {
      "description": "Creates a new note.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attestationAuthority": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AuthorityResponse",
          "description": "A note describing an attestation role."
        },
        "baseImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BasisResponse",
          "description": "A note describing a base image."
        },
        "build": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildResponse",
          "description": "A note describing build provenance for a verifiable build."
        },
        "createTime": {
          "type": "string",
          "description": "The time this note was created. This field can be used as a filter in list requests."
        },
        "deployable": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DeployableResponse",
          "description": "A note describing something that can be deployed."
        },
        "discovery": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DiscoveryResponse",
          "description": "A note describing the initial analysis of a resource."
        },
        "expirationTime": {
          "type": "string",
          "description": "Time of expiration for this note. Empty if note does not expire."
        },
        "intoto": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:InTotoResponse",
          "description": "A note describing an in-toto link."
        },
        "kind": {
          "type": "string",
          "description": "The type of analysis. This field can be used as a filter in list requests."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this note."
        },
        "name": {
          "type": "string",
          "description": "The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`."
        },
        "noteId": {
          "type": "string",
          "description": "Required. The ID to use for this note.",
          "replaceOnChanges": true
        },
        "package": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageResponse",
          "description": "A note describing a package hosted by various package managers."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "relatedNoteNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other notes related to this note."
        },
        "relatedUrl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrlResponse"
          },
          "description": "URLs associated with this note."
        },
        "sbom": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DocumentNoteResponse",
          "description": "A note describing a software bill of materials."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMReferenceNoteResponse",
          "description": "A note describing an SBOM reference."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this note."
        },
        "spdxFile": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FileNoteResponse",
          "description": "A note describing an SPDX File."
        },
        "spdxPackage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageInfoNoteResponse",
          "description": "A note describing an SPDX Package."
        },
        "spdxRelationship": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelationshipNoteResponse",
          "description": "A note describing an SPDX File."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this note was last updated. This field can be used as a filter in list requests."
        },
        "vulnerability": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityResponse",
          "description": "A note describing a package vulnerability."
        },
        "vulnerabilityAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityAssessmentNoteResponse",
          "description": "A note describing a vulnerability assessment."
        }
      },
      "type": "object",
      "required": [
        "attestationAuthority",
        "baseImage",
        "build",
        "createTime",
        "deployable",
        "discovery",
        "expirationTime",
        "intoto",
        "kind",
        "longDescription",
        "name",
        "noteId",
        "package",
        "project",
        "relatedNoteNames",
        "relatedUrl",
        "sbom",
        "sbomReference",
        "shortDescription",
        "spdxFile",
        "spdxPackage",
        "spdxRelationship",
        "updateTime",
        "vulnerability",
        "vulnerabilityAssessment"
      ],
      "inputProperties": {
        "attestationAuthority": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Authority",
          "description": "A note describing an attestation role."
        },
        "baseImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Basis",
          "description": "A note describing a base image."
        },
        "build": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Build",
          "description": "A note describing build provenance for a verifiable build."
        },
        "deployable": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Deployable",
          "description": "A note describing something that can be deployed."
        },
        "discovery": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Discovery",
          "description": "A note describing the initial analysis of a resource."
        },
        "expirationTime": {
          "type": "string",
          "description": "Time of expiration for this note. Empty if note does not expire."
        },
        "intoto": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:InToto",
          "description": "A note describing an in-toto link."
        },
        "longDescription": {
          "type": "string",
          "description": "A detailed description of this note."
        },
        "noteId": {
          "type": "string",
          "description": "Required. The ID to use for this note.",
          "replaceOnChanges": true
        },
        "package": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Package",
          "description": "A note describing a package hosted by various package managers."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "relatedNoteNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other notes related to this note."
        },
        "relatedUrl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrl"
          },
          "description": "URLs associated with this note."
        },
        "sbom": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DocumentNote",
          "description": "A note describing a software bill of materials."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMReferenceNote",
          "description": "A note describing an SBOM reference."
        },
        "shortDescription": {
          "type": "string",
          "description": "A one sentence description of this note."
        },
        "spdxFile": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FileNote",
          "description": "A note describing an SPDX File."
        },
        "spdxPackage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageInfoNote",
          "description": "A note describing an SPDX Package."
        },
        "spdxRelationship": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelationshipNote",
          "description": "A note describing an SPDX File."
        },
        "vulnerability": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Vulnerability",
          "description": "A note describing a package vulnerability."
        },
        "vulnerabilityAssessment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityAssessmentNote",
          "description": "A note describing a vulnerability assessment."
        }
      },
      "requiredInputs": [
        "noteId"
      ]
    },
    "google-native:containeranalysis/v1beta1:NoteIamBinding": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1beta1:NoteIamMember": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1beta1:NoteIamPolicy": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "noteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "noteId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "noteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "noteId"
      ]
    },
    "google-native:containeranalysis/v1beta1:Occurrence": {
      "description": "Creates a new occurrence.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DetailsResponse",
          "description": "Describes an attestation of an artifact."
        },
        "build": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1BuildDetailsResponse",
          "description": "Describes a verifiable build."
        },
        "createTime": {
          "type": "string",
          "description": "The time this occurrence was created."
        },
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1DeploymentDetailsResponse",
          "description": "Describes the deployment of an artifact on a runtime."
        },
        "derivedImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1ImageDetailsResponse",
          "description": "Describes how this resource derives from the basis in the associated note."
        },
        "discovered": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1DiscoveryDetailsResponse",
          "description": "Describes when a resource was discovered."
        },
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:EnvelopeResponse",
          "description": "https://github.com/secure-systems-lab/dsse"
        },
        "installation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1PackageDetailsResponse",
          "description": "Describes the installation of a package on the linked resource."
        },
        "intoto": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoDetailsResponse",
          "description": "Describes a specific in-toto link."
        },
        "kind": {
          "type": "string",
          "description": "This explicitly denotes which of the occurrence details are specified. This field can be used as a filter in list requests."
        },
        "name": {
          "type": "string",
          "description": "The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`."
        },
        "noteName": {
          "type": "string",
          "description": "Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remediation": {
          "type": "string",
          "description": "A description of actions that can be taken to remedy the note."
        },
        "resource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ResourceResponse",
          "description": "Immutable. The resource for which the occurrence applies."
        },
        "sbom": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DocumentOccurrenceResponse",
          "description": "Describes a specific software bill of materials document."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMReferenceOccurrenceResponse",
          "description": "Describes a specific SBOM reference occurrences."
        },
        "spdxFile": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FileOccurrenceResponse",
          "description": "Describes a specific SPDX File."
        },
        "spdxPackage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageInfoOccurrenceResponse",
          "description": "Describes a specific SPDX Package."
        },
        "spdxRelationship": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelationshipOccurrenceResponse",
          "description": "Describes a specific SPDX Relationship."
        },
        "updateTime": {
          "type": "string",
          "description": "The time this occurrence was last updated."
        },
        "vulnerability": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1VulnerabilityDetailsResponse",
          "description": "Describes a security vulnerability."
        }
      },
      "type": "object",
      "required": [
        "attestation",
        "build",
        "createTime",
        "deployment",
        "derivedImage",
        "discovered",
        "envelope",
        "installation",
        "intoto",
        "kind",
        "name",
        "noteName",
        "project",
        "remediation",
        "resource",
        "sbom",
        "sbomReference",
        "spdxFile",
        "spdxPackage",
        "spdxRelationship",
        "updateTime",
        "vulnerability"
      ],
      "inputProperties": {
        "attestation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Details",
          "description": "Describes an attestation of an artifact."
        },
        "build": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1BuildDetails",
          "description": "Describes a verifiable build."
        },
        "deployment": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1DeploymentDetails",
          "description": "Describes the deployment of an artifact on a runtime."
        },
        "derivedImage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1ImageDetails",
          "description": "Describes how this resource derives from the basis in the associated note."
        },
        "discovered": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1DiscoveryDetails",
          "description": "Describes when a resource was discovered."
        },
        "envelope": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Envelope",
          "description": "https://github.com/secure-systems-lab/dsse"
        },
        "installation": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1PackageDetails",
          "description": "Describes the installation of a package on the linked resource."
        },
        "intoto": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoDetails",
          "description": "Describes a specific in-toto link."
        },
        "noteName": {
          "type": "string",
          "description": "Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "remediation": {
          "type": "string",
          "description": "A description of actions that can be taken to remedy the note."
        },
        "resource": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Resource",
          "description": "Immutable. The resource for which the occurrence applies."
        },
        "sbom": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DocumentOccurrence",
          "description": "Describes a specific software bill of materials document."
        },
        "sbomReference": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMReferenceOccurrence",
          "description": "Describes a specific SBOM reference occurrences."
        },
        "spdxFile": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FileOccurrence",
          "description": "Describes a specific SPDX File."
        },
        "spdxPackage": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageInfoOccurrence",
          "description": "Describes a specific SPDX Package."
        },
        "spdxRelationship": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelationshipOccurrence",
          "description": "Describes a specific SPDX Relationship."
        },
        "vulnerability": {
          "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1VulnerabilityDetails",
          "description": "Describes a security vulnerability."
        }
      },
      "requiredInputs": [
        "noteName",
        "resource"
      ]
    },
    "google-native:containeranalysis/v1beta1:OccurrenceIamBinding": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1beta1:OccurrenceIamMember": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:containeranalysis/v1beta1:OccurrenceIamPolicy": {
      "description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "occurrenceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "occurrenceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "occurrenceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "occurrenceId"
      ]
    },
    "google-native:contentwarehouse/v1:Document": {
      "description": "Creates a document.",
      "properties": {
        "cloudAiDocument": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentResponse",
          "description": "Document AI format to save the structured content, including OCR."
        },
        "contentCategory": {
          "type": "string",
          "description": "Indicates the category (image, audio, video etc.) of the original content."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the document is created."
        },
        "creator": {
          "type": "string",
          "description": "The user who creates the document."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the document given by the user. This name will be displayed in the UI. Customer can populate this field with the name of the document. This differs from the 'title' field as 'title' is optional and stores the top heading in the document."
        },
        "displayUri": {
          "type": "string",
          "description": "Uri to display the document, for example, in the UI."
        },
        "dispositionTime": {
          "type": "string",
          "description": "If linked to a Collection with RetentionPolicy, the date when the document becomes mutable."
        },
        "documentSchemaName": {
          "type": "string",
          "description": "The Document schema name. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}."
        },
        "inlineRawDocument": {
          "type": "string",
          "description": "Raw document content."
        },
        "legalHold": {
          "type": "boolean",
          "description": "Indicates if the document has a legal hold on it."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the document. Format: projects/{project_number}/locations/{location}/documents/{document_id}. The name is ignored when creating a document."
        },
        "plainText": {
          "type": "string",
          "description": "Other document format, such as PPTX, XLXS"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyResponse"
          },
          "description": "List of values that are user supplied metadata."
        },
        "rawDocumentFileType": {
          "type": "string",
          "description": "This is used when DocAI was not used to load the document and parsing/ extracting is needed for the inline_raw_document. For example, if inline_raw_document is the byte representation of a PDF file, then this should be set to: RAW_DOCUMENT_FILE_TYPE_PDF."
        },
        "rawDocumentPath": {
          "type": "string",
          "description": "Raw document file in Cloud Storage path."
        },
        "referenceId": {
          "type": "string",
          "description": "The reference ID set by customers. Must be unique per project and location."
        },
        "textExtractionDisabled": {
          "type": "boolean",
          "description": "If true, text extraction will not be performed."
        },
        "textExtractionEnabled": {
          "type": "boolean",
          "description": "If true, text extraction will be performed."
        },
        "title": {
          "type": "string",
          "description": "Title that describes the document. This can be the top heading or text that describes the document."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the document is last updated."
        },
        "updater": {
          "type": "string",
          "description": "The user who lastly updates the document."
        }
      },
      "type": "object",
      "required": [
        "cloudAiDocument",
        "contentCategory",
        "createTime",
        "creator",
        "displayName",
        "displayUri",
        "dispositionTime",
        "documentSchemaName",
        "inlineRawDocument",
        "legalHold",
        "location",
        "name",
        "plainText",
        "project",
        "properties",
        "rawDocumentFileType",
        "rawDocumentPath",
        "referenceId",
        "textExtractionDisabled",
        "textExtractionEnabled",
        "title",
        "updateTime",
        "updater"
      ],
      "inputProperties": {
        "cloudAiDocument": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1Document",
          "description": "Document AI format to save the structured content, including OCR."
        },
        "cloudAiDocumentOption": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1CloudAIDocumentOption",
          "description": "Request Option for processing Cloud AI Document in Document Warehouse. This field offers limited support for mapping entities from Cloud AI Document to Warehouse Document. Please consult with product team before using this field and other available options."
        },
        "contentCategory": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:DocumentContentCategory",
          "description": "Indicates the category (image, audio, video etc.) of the original content."
        },
        "createMask": {
          "type": "string",
          "description": "Field mask for creating Document fields. If mask path is empty, it means all fields are masked. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask."
        },
        "creator": {
          "type": "string",
          "description": "The user who creates the document."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the document given by the user. This name will be displayed in the UI. Customer can populate this field with the name of the document. This differs from the 'title' field as 'title' is optional and stores the top heading in the document."
        },
        "displayUri": {
          "type": "string",
          "description": "Uri to display the document, for example, in the UI."
        },
        "documentSchemaName": {
          "type": "string",
          "description": "The Document schema name. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}."
        },
        "inlineRawDocument": {
          "type": "string",
          "description": "Raw document content."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the document. Format: projects/{project_number}/locations/{location}/documents/{document_id}. The name is ignored when creating a document."
        },
        "plainText": {
          "type": "string",
          "description": "Other document format, such as PPTX, XLXS"
        },
        "policy": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleIamV1Policy",
          "description": "Default document policy during creation. This refers to an Identity and Access (IAM) policy, which specifies access controls for the Document. Conditions defined in the policy will be ignored."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1Property"
          },
          "description": "List of values that are user supplied metadata."
        },
        "rawDocumentFileType": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:DocumentRawDocumentFileType",
          "description": "This is used when DocAI was not used to load the document and parsing/ extracting is needed for the inline_raw_document. For example, if inline_raw_document is the byte representation of a PDF file, then this should be set to: RAW_DOCUMENT_FILE_TYPE_PDF."
        },
        "rawDocumentPath": {
          "type": "string",
          "description": "Raw document file in Cloud Storage path."
        },
        "referenceId": {
          "type": "string",
          "description": "The reference ID set by customers. Must be unique per project and location."
        },
        "requestMetadata": {
          "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1RequestMetadata",
          "description": "The meta information collected about the end user, used to enforce access control for the service."
        },
        "textExtractionDisabled": {
          "type": "boolean",
          "description": "If true, text extraction will not be performed."
        },
        "textExtractionEnabled": {
          "type": "boolean",
          "description": "If true, text extraction will be performed."
        },
        "title": {
          "type": "string",
          "description": "Title that describes the document. This can be the top heading or text that describes the document."
        },
        "updater": {
          "type": "string",
          "description": "The user who lastly updates the document."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:contentwarehouse/v1:DocumentSchema": {
      "description": "Creates a document schema.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the document schema is created."
        },
        "description": {
          "type": "string",
          "description": "Schema description."
        },
        "displayName": {
          "type": "string",
          "description": "Name of the schema given by the user. Must be unique per project."
        },
        "documentIsFolder": {
          "type": "boolean",
          "description": "Document Type, true refers the document is a folder, otherwise it is a typical document."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the document schema. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}. The name is ignored when creating a document schema."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "propertyDefinitions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyDefinitionResponse"
          },
          "description": "Document details."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the document schema is last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "documentIsFolder",
        "location",
        "name",
        "project",
        "propertyDefinitions",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Schema description."
        },
        "displayName": {
          "type": "string",
          "description": "Name of the schema given by the user. Must be unique per project."
        },
        "documentIsFolder": {
          "type": "boolean",
          "description": "Document Type, true refers the document is a folder, otherwise it is a typical document."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the document schema. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}. The name is ignored when creating a document schema."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "propertyDefinitions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyDefinition"
          },
          "description": "Document details."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:contentwarehouse/v1:RuleSet": {
      "description": "Creates a ruleset.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Short description of the rule-set."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the rule set. Managed internally. Format: projects/{project_number}/locations/{location}/ruleSet/{rule_set_id}. The name is ignored when creating a rule set."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1RuleResponse"
          },
          "description": "List of rules given by the customer."
        },
        "source": {
          "type": "string",
          "description": "Source of the rules i.e., customer name."
        }
      },
      "type": "object",
      "required": [
        "description",
        "location",
        "name",
        "project",
        "rules",
        "source"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Short description of the rule-set."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the rule set. Managed internally. Format: projects/{project_number}/locations/{location}/ruleSet/{rule_set_id}. The name is ignored when creating a rule set."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1Rule"
          },
          "description": "List of rules given by the customer."
        },
        "source": {
          "type": "string",
          "description": "Source of the rules i.e., customer name."
        }
      }
    },
    "google-native:contentwarehouse/v1:SynonymSet": {
      "description": "Creates a SynonymSet for a single context. Throws an ALREADY_EXISTS exception if a synonymset already exists for the context.",
      "properties": {
        "context": {
          "type": "string",
          "description": "This is a freeform field. Example contexts can be \"sales,\" \"engineering,\" \"real estate,\" \"accounting,\" etc. The context can be supplied during search requests."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the SynonymSet This is mandatory for google.api.resource. Format: projects/{project_number}/locations/{location}/synonymSets/{context}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "synonyms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1SynonymSetSynonymResponse"
          },
          "description": "List of Synonyms for the context."
        }
      },
      "type": "object",
      "required": [
        "context",
        "location",
        "name",
        "project",
        "synonyms"
      ],
      "inputProperties": {
        "context": {
          "type": "string",
          "description": "This is a freeform field. Example contexts can be \"sales,\" \"engineering,\" \"real estate,\" \"accounting,\" etc. The context can be supplied during search requests."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the SynonymSet This is mandatory for google.api.resource. Format: projects/{project_number}/locations/{location}/synonymSets/{context}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "synonyms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1SynonymSetSynonym"
          },
          "description": "List of Synonyms for the context."
        }
      }
    },
    "google-native:datacatalog/v1:Entry": {
      "description": "Creates an entry. You can create entries only with 'FILESET', 'CLUSTER', 'DATA_STREAM', or custom types. Data Catalog automatically creates entries with other types during metadata ingestion from integrated systems. You must enable the Data Catalog API in the project identified by the `parent` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project). An entry group can have a maximum of 100,000 entries.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigqueryDateShardedSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BigQueryDateShardedSpecResponse",
          "description": "Specification for a group of BigQuery tables with the `[prefix]YYYYMMDD` name pattern. For more information, see [Introduction to partitioned tables] (https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding)."
        },
        "bigqueryTableSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BigQueryTableSpecResponse",
          "description": "Specification that applies to a BigQuery table. Valid only for entries with the `TABLE` type."
        },
        "businessContext": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BusinessContextResponse",
          "description": "Business Context of the entry. Not supported for BigQuery datasets"
        },
        "cloudBigtableSystemSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1CloudBigtableSystemSpecResponse",
          "description": "Specification that applies to Cloud Bigtable system. Only settable when `integrated_system` is equal to `CLOUD_BIGTABLE`"
        },
        "dataSource": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataSourceResponse",
          "description": "Physical location of the entry."
        },
        "dataSourceConnectionSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataSourceConnectionSpecResponse",
          "description": "Specification that applies to a data source connection. Valid only for entries with the `DATA_SOURCE_CONNECTION` type."
        },
        "databaseTableSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatabaseTableSpecResponse",
          "description": "Specification that applies to a table resource. Valid only for entries with the `TABLE` or `EXPLORE` type."
        },
        "datasetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatasetSpecResponse",
          "description": "Specification that applies to a dataset."
        },
        "description": {
          "type": "string",
          "description": "Entry description that can consist of several sentences or paragraphs that describe entry contents. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). The maximum size is 2000 bytes when encoded in UTF-8. Default value is an empty string."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of an entry. The maximum size is 500 bytes when encoded in UTF-8. Default value is an empty string."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entryId": {
          "type": "string",
          "description": "Required. The ID of the entry to create. The ID must contain only letters (a-z, A-Z), numbers (0-9), and underscores (_). The maximum size is 64 bytes when encoded in UTF-8.",
          "replaceOnChanges": true
        },
        "filesetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1FilesetSpecResponse",
          "description": "Specification that applies to a fileset resource. Valid only for entries with the `FILESET` type."
        },
        "fullyQualifiedName": {
          "type": "string",
          "description": "[Fully Qualified Name (FQN)](https://cloud.google.com//data-catalog/docs/fully-qualified-names) of the resource. Set automatically for entries representing resources from synced systems. Settable only during creation, and read-only later. Can be used for search and lookup of the entries. "
        },
        "gcsFilesetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1GcsFilesetSpecResponse",
          "description": "Specification that applies to a Cloud Storage fileset. Valid only for entries with the `FILESET` type."
        },
        "integratedSystem": {
          "type": "string",
          "description": "Indicates the entry's source system that Data Catalog integrates with, such as BigQuery, Pub/Sub, or Dataproc Metastore."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cloud labels attached to the entry. In Data Catalog, you can create and modify labels attached only to custom entries. Synced entries have unmodifiable labels that come from the source system."
        },
        "linkedResource": {
          "type": "string",
          "description": "The resource this metadata entry refers to. For Google Cloud Platform resources, `linked_resource` is the [Full Resource Name] (https://cloud.google.com/apis/design/resource_names#full_resource_name). For example, the `linked_resource` for a table resource from BigQuery is: `//bigquery.googleapis.com/projects/{PROJECT_ID}/datasets/{DATASET_ID}/tables/{TABLE_ID}` Output only when the entry is one of the types in the `EntryType` enum. For entries with a `user_specified_type`, this field is optional and defaults to an empty string. The resource string must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), periods (.), colons (:), slashes (/), dashes (-), and hashes (#). The maximum size is 200 bytes when encoded in UTF-8."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lookerSystemSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1LookerSystemSpecResponse",
          "description": "Specification that applies to Looker sysstem. Only settable when `user_specified_system` is equal to `LOOKER`"
        },
        "modelSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ModelSpecResponse",
          "description": "Model specification."
        },
        "name": {
          "type": "string",
          "description": "The resource name of an entry in URL format. Note: The entry itself and its child resources might not be stored in the location specified in its name."
        },
        "personalDetails": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PersonalDetailsResponse",
          "description": "Additional information related to the entry. Private to the current user."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "routineSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1RoutineSpecResponse",
          "description": "Specification that applies to a user-defined function or procedure. Valid only for entries with the `ROUTINE` type."
        },
        "schema": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SchemaResponse",
          "description": "Schema of the entry. An entry might not have any schema attached to it."
        },
        "serviceSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ServiceSpecResponse",
          "description": "Specification that applies to a Service resource."
        },
        "sourceSystemTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SystemTimestampsResponse",
          "description": "Timestamps from the underlying resource, not from the Data Catalog entry. Output only when the entry has a system listed in the `IntegratedSystem` enum. For entries with `user_specified_system`, this field is optional and defaults to an empty timestamp."
        },
        "sqlDatabaseSystemSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SqlDatabaseSystemSpecResponse",
          "description": "Specification that applies to a relational database system. Only settable when `user_specified_system` is equal to `SQL_DATABASE`"
        },
        "type": {
          "type": "string",
          "description": "The type of the entry. For details, see [`EntryType`](#entrytype)."
        },
        "usageSignal": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1UsageSignalResponse",
          "description": "Resource usage statistics."
        },
        "userSpecifiedSystem": {
          "type": "string",
          "description": "Indicates the entry's source system that Data Catalog doesn't automatically integrate with. The `user_specified_system` string has the following limitations: * Is case insensitive. * Must begin with a letter or underscore. * Can only contain letters, numbers, and underscores. * Must be at least 1 character and at most 64 characters long."
        },
        "userSpecifiedType": {
          "type": "string",
          "description": "Custom entry type that doesn't match any of the values allowed for input and listed in the `EntryType` enum. When creating an entry, first check the type values in the enum. If there are no appropriate types for the new entry, provide a custom value, for example, `my_special_type`. The `user_specified_type` string has the following limitations: * Is case insensitive. * Must begin with a letter or underscore. * Can only contain letters, numbers, and underscores. * Must be at least 1 character and at most 64 characters long."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDateShardedSpec",
        "bigqueryTableSpec",
        "businessContext",
        "cloudBigtableSystemSpec",
        "dataSource",
        "dataSourceConnectionSpec",
        "databaseTableSpec",
        "datasetSpec",
        "description",
        "displayName",
        "entryGroupId",
        "entryId",
        "filesetSpec",
        "fullyQualifiedName",
        "gcsFilesetSpec",
        "integratedSystem",
        "labels",
        "linkedResource",
        "location",
        "lookerSystemSpec",
        "modelSpec",
        "name",
        "personalDetails",
        "project",
        "routineSpec",
        "schema",
        "serviceSpec",
        "sourceSystemTimestamps",
        "sqlDatabaseSystemSpec",
        "type",
        "usageSignal",
        "userSpecifiedSystem",
        "userSpecifiedType"
      ],
      "inputProperties": {
        "businessContext": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BusinessContext",
          "description": "Business Context of the entry. Not supported for BigQuery datasets"
        },
        "cloudBigtableSystemSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1CloudBigtableSystemSpec",
          "description": "Specification that applies to Cloud Bigtable system. Only settable when `integrated_system` is equal to `CLOUD_BIGTABLE`"
        },
        "dataSourceConnectionSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataSourceConnectionSpec",
          "description": "Specification that applies to a data source connection. Valid only for entries with the `DATA_SOURCE_CONNECTION` type."
        },
        "databaseTableSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatabaseTableSpec",
          "description": "Specification that applies to a table resource. Valid only for entries with the `TABLE` or `EXPLORE` type."
        },
        "datasetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatasetSpec",
          "description": "Specification that applies to a dataset."
        },
        "description": {
          "type": "string",
          "description": "Entry description that can consist of several sentences or paragraphs that describe entry contents. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). The maximum size is 2000 bytes when encoded in UTF-8. Default value is an empty string."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of an entry. The maximum size is 500 bytes when encoded in UTF-8. Default value is an empty string."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entryId": {
          "type": "string",
          "description": "Required. The ID of the entry to create. The ID must contain only letters (a-z, A-Z), numbers (0-9), and underscores (_). The maximum size is 64 bytes when encoded in UTF-8.",
          "replaceOnChanges": true
        },
        "filesetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1FilesetSpec",
          "description": "Specification that applies to a fileset resource. Valid only for entries with the `FILESET` type."
        },
        "fullyQualifiedName": {
          "type": "string",
          "description": "[Fully Qualified Name (FQN)](https://cloud.google.com//data-catalog/docs/fully-qualified-names) of the resource. Set automatically for entries representing resources from synced systems. Settable only during creation, and read-only later. Can be used for search and lookup of the entries. "
        },
        "gcsFilesetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1GcsFilesetSpec",
          "description": "Specification that applies to a Cloud Storage fileset. Valid only for entries with the `FILESET` type."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cloud labels attached to the entry. In Data Catalog, you can create and modify labels attached only to custom entries. Synced entries have unmodifiable labels that come from the source system."
        },
        "linkedResource": {
          "type": "string",
          "description": "The resource this metadata entry refers to. For Google Cloud Platform resources, `linked_resource` is the [Full Resource Name] (https://cloud.google.com/apis/design/resource_names#full_resource_name). For example, the `linked_resource` for a table resource from BigQuery is: `//bigquery.googleapis.com/projects/{PROJECT_ID}/datasets/{DATASET_ID}/tables/{TABLE_ID}` Output only when the entry is one of the types in the `EntryType` enum. For entries with a `user_specified_type`, this field is optional and defaults to an empty string. The resource string must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), periods (.), colons (:), slashes (/), dashes (-), and hashes (#). The maximum size is 200 bytes when encoded in UTF-8."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lookerSystemSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1LookerSystemSpec",
          "description": "Specification that applies to Looker sysstem. Only settable when `user_specified_system` is equal to `LOOKER`"
        },
        "modelSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ModelSpec",
          "description": "Model specification."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "routineSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1RoutineSpec",
          "description": "Specification that applies to a user-defined function or procedure. Valid only for entries with the `ROUTINE` type."
        },
        "schema": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1Schema",
          "description": "Schema of the entry. An entry might not have any schema attached to it."
        },
        "serviceSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ServiceSpec",
          "description": "Specification that applies to a Service resource."
        },
        "sourceSystemTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SystemTimestamps",
          "description": "Timestamps from the underlying resource, not from the Data Catalog entry. Output only when the entry has a system listed in the `IntegratedSystem` enum. For entries with `user_specified_system`, this field is optional and defaults to an empty timestamp."
        },
        "sqlDatabaseSystemSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SqlDatabaseSystemSpec",
          "description": "Specification that applies to a relational database system. Only settable when `user_specified_system` is equal to `SQL_DATABASE`"
        },
        "type": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:EntryType",
          "description": "The type of the entry. For details, see [`EntryType`](#entrytype)."
        },
        "usageSignal": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1UsageSignal",
          "description": "Resource usage statistics."
        },
        "userSpecifiedSystem": {
          "type": "string",
          "description": "Indicates the entry's source system that Data Catalog doesn't automatically integrate with. The `user_specified_system` string has the following limitations: * Is case insensitive. * Must begin with a letter or underscore. * Can only contain letters, numbers, and underscores. * Must be at least 1 character and at most 64 characters long."
        },
        "userSpecifiedType": {
          "type": "string",
          "description": "Custom entry type that doesn't match any of the values allowed for input and listed in the `EntryType` enum. When creating an entry, first check the type values in the enum. If there are no appropriate types for the new entry, provide a custom value, for example, `my_special_type`. The `user_specified_type` string has the following limitations: * Is case insensitive. * Must begin with a letter or underscore. * Can only contain letters, numbers, and underscores. * Must be at least 1 character and at most 64 characters long."
        }
      },
      "requiredInputs": [
        "entryGroupId",
        "entryId"
      ]
    },
    "google-native:datacatalog/v1:EntryGroup": {
      "description": "Creates an entry group. An entry group contains logically related entries together with [Cloud Identity and Access Management](/data-catalog/docs/concepts/iam) policies. These policies specify users who can create, edit, and view entries within entry groups. Data Catalog automatically creates entry groups with names that start with the `@` symbol for the following resources: * BigQuery entries (`@bigquery`) * Pub/Sub topics (`@pubsub`) * Dataproc Metastore services (`@dataproc_metastore_{SERVICE_NAME_HASH}`) You can create your own entry groups for Cloud Storage fileset entries and custom entries together with the corresponding IAM policies. User-created entry groups can't contain the `@` symbol, it is reserved for automatically created groups. Entry groups, like entries, can be searched. A maximum of 10,000 entry groups may be created per organization across all locations. You must enable the Data Catalog API in the project identified by the `parent` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
      "properties": {
        "dataCatalogTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SystemTimestampsResponse",
          "description": "Timestamps of the entry group. Default value is empty."
        },
        "description": {
          "type": "string",
          "description": "Entry group description. Can consist of several sentences or paragraphs that describe the entry group contents. Default value is an empty string."
        },
        "displayName": {
          "type": "string",
          "description": "A short name to identify the entry group, for example, \"analytics data - jan 2011\". Default value is an empty string."
        },
        "entryGroupId": {
          "type": "string",
          "description": "Required. The ID of the entry group to create. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and must start with a letter or underscore. The maximum size is 64 bytes when encoded in UTF-8.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the entry group in URL format. Note: The entry group itself and its child resources might not be stored in the location specified in its name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "dataCatalogTimestamps",
        "description",
        "displayName",
        "entryGroupId",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Entry group description. Can consist of several sentences or paragraphs that describe the entry group contents. Default value is an empty string."
        },
        "displayName": {
          "type": "string",
          "description": "A short name to identify the entry group, for example, \"analytics data - jan 2011\". Default value is an empty string."
        },
        "entryGroupId": {
          "type": "string",
          "description": "Required. The ID of the entry group to create. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and must start with a letter or underscore. The maximum size is 64 bytes when encoded in UTF-8.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the entry group in URL format. Note: The entry group itself and its child resources might not be stored in the location specified in its name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "entryGroupId"
      ]
    },
    "google-native:datacatalog/v1:EntryGroupIamBinding": {
      "description": "Sets an access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates - Entry groups Note: This method sets policies only within Data Catalog and can't be used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources synced with the Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1:EntryGroupIamMember": {
      "description": "Sets an access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates - Entry groups Note: This method sets policies only within Data Catalog and can't be used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources synced with the Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1:EntryGroupIamPolicy": {
      "description": "Sets an access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates - Entry groups Note: This method sets policies only within Data Catalog and can't be used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources synced with the Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "entryGroupId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "entryGroupId"
      ]
    },
    "google-native:datacatalog/v1:PolicyTag": {
      "description": "Creates a policy tag in a taxonomy.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "childPolicyTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource names of child policy tags of this policy tag."
        },
        "description": {
          "type": "string",
          "description": "Description of this policy tag. If not set, defaults to empty. The description must contain only Unicode characters, tabs, newlines, carriage returns and page breaks, and be at most 2000 bytes long when encoded in UTF-8."
        },
        "displayName": {
          "type": "string",
          "description": "User-defined name of this policy tag. The name can't start or end with spaces and must be unique within the parent taxonomy, contain only Unicode letters, numbers, underscores, dashes and spaces, and be at most 200 bytes long when encoded in UTF-8."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of this policy tag in the URL format. The policy tag manager generates unique taxonomy IDs and policy tag IDs."
        },
        "parentPolicyTag": {
          "type": "string",
          "description": "Resource name of this policy tag's parent policy tag. If empty, this is a top level tag. If not set, defaults to an empty string. For example, for the \"LatLong\" policy tag in the example above, this field contains the resource name of the \"Geolocation\" policy tag, and, for \"Geolocation\", this field is empty."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "childPolicyTags",
        "description",
        "displayName",
        "location",
        "name",
        "parentPolicyTag",
        "project",
        "taxonomyId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this policy tag. If not set, defaults to empty. The description must contain only Unicode characters, tabs, newlines, carriage returns and page breaks, and be at most 2000 bytes long when encoded in UTF-8."
        },
        "displayName": {
          "type": "string",
          "description": "User-defined name of this policy tag. The name can't start or end with spaces and must be unique within the parent taxonomy, contain only Unicode letters, numbers, underscores, dashes and spaces, and be at most 200 bytes long when encoded in UTF-8."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "parentPolicyTag": {
          "type": "string",
          "description": "Resource name of this policy tag's parent policy tag. If empty, this is a top level tag. If not set, defaults to an empty string. For example, for the \"LatLong\" policy tag in the example above, this field contains the resource name of the \"Geolocation\" policy tag, and, for \"Geolocation\", this field is empty."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "taxonomyId"
      ]
    },
    "google-native:datacatalog/v1:TagTemplate": {
      "description": "Creates a tag template. You must enable the Data Catalog API in the project identified by the `parent` parameter. For more information, see [Data Catalog resource project] (https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Display name for this template. Defaults to an empty string. The name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), and can't start or end with spaces. The maximum length is 200 characters."
        },
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of tag template field IDs to the settings for the field. This map is an exhaustive list of the allowed fields. The map must contain at least one field and at most 500 fields. The keys to this map are tag template field IDs. The IDs have the following limitations: * Can contain uppercase and lowercase letters, numbers (0-9) and underscores (_). * Must be at least 1 character and at most 64 characters long. * Must start with a letter or underscore."
        },
        "isPubliclyReadable": {
          "type": "boolean",
          "description": "Indicates whether tags created with this template are public. Public tags do not require tag template access to appear in ListTags API response. Additionally, you can search for a public tag by value with a simple search query in addition to using a ``tag:`` predicate."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the tag template in URL format. Note: The tag template itself and its child resources might not be stored in the location specified in its name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagTemplateId": {
          "type": "string",
          "description": "Required. The ID of the tag template to create. The ID must contain only lowercase letters (a-z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum size is 64 bytes when encoded in UTF-8.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "fields",
        "isPubliclyReadable",
        "location",
        "name",
        "project",
        "tagTemplateId"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Display name for this template. Defaults to an empty string. The name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), and can't start or end with spaces. The maximum length is 200 characters."
        },
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of tag template field IDs to the settings for the field. This map is an exhaustive list of the allowed fields. The map must contain at least one field and at most 500 fields. The keys to this map are tag template field IDs. The IDs have the following limitations: * Can contain uppercase and lowercase letters, numbers (0-9) and underscores (_). * Must be at least 1 character and at most 64 characters long. * Must start with a letter or underscore."
        },
        "isPubliclyReadable": {
          "type": "boolean",
          "description": "Indicates whether tags created with this template are public. Public tags do not require tag template access to appear in ListTags API response. Additionally, you can search for a public tag by value with a simple search query in addition to using a ``tag:`` predicate."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the tag template in URL format. Note: The tag template itself and its child resources might not be stored in the location specified in its name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagTemplateId": {
          "type": "string",
          "description": "Required. The ID of the tag template to create. The ID must contain only lowercase letters (a-z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum size is 64 bytes when encoded in UTF-8.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "fields",
        "tagTemplateId"
      ]
    },
    "google-native:datacatalog/v1:TagTemplateIamBinding": {
      "description": "Sets an access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates - Entry groups Note: This method sets policies only within Data Catalog and can't be used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources synced with the Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1:TagTemplateIamMember": {
      "description": "Sets an access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates - Entry groups Note: This method sets policies only within Data Catalog and can't be used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources synced with the Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1:TagTemplateIamPolicy": {
      "description": "Sets an access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates - Entry groups Note: This method sets policies only within Data Catalog and can't be used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources synced with the Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "tagTemplateId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "tagTemplateId"
      ]
    },
    "google-native:datacatalog/v1:Taxonomy": {
      "description": "Creates a taxonomy in a specified project. The taxonomy is initially empty, that is, it doesn't contain policy tags.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "activatedPolicyTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of policy types that are activated for this taxonomy. If not set, defaults to an empty list."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of this taxonomy. If not set, defaults to empty. The description must contain only Unicode characters, tabs, newlines, carriage returns, and page breaks, and be at most 2000 bytes long when encoded in UTF-8."
        },
        "displayName": {
          "type": "string",
          "description": "User-defined name of this taxonomy. The name can't start or end with spaces, must contain only Unicode letters, numbers, underscores, dashes, and spaces, and be at most 200 bytes long when encoded in UTF-8. The taxonomy display name must be unique within an organization."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of this taxonomy in URL format. Note: Policy tag manager generates unique taxonomy IDs."
        },
        "policyTagCount": {
          "type": "integer",
          "description": "Number of policy tags in this taxonomy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "service": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1TaxonomyServiceResponse",
          "description": "Identity of the service which owns the Taxonomy. This field is only populated when the taxonomy is created by a Google Cloud service. Currently only 'DATAPLEX' is supported."
        },
        "taxonomyTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SystemTimestampsResponse",
          "description": "Creation and modification timestamps of this taxonomy."
        }
      },
      "type": "object",
      "required": [
        "activatedPolicyTypes",
        "description",
        "displayName",
        "location",
        "name",
        "policyTagCount",
        "project",
        "service",
        "taxonomyTimestamps"
      ],
      "inputProperties": {
        "activatedPolicyTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:TaxonomyActivatedPolicyTypesItem"
          },
          "description": "Optional. A list of policy types that are activated for this taxonomy. If not set, defaults to an empty list."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of this taxonomy. If not set, defaults to empty. The description must contain only Unicode characters, tabs, newlines, carriage returns, and page breaks, and be at most 2000 bytes long when encoded in UTF-8."
        },
        "displayName": {
          "type": "string",
          "description": "User-defined name of this taxonomy. The name can't start or end with spaces, must contain only Unicode letters, numbers, underscores, dashes, and spaces, and be at most 200 bytes long when encoded in UTF-8. The taxonomy display name must be unique within an organization."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:datacatalog/v1:TaxonomyIamBinding": {
      "description": "Sets the IAM policy for a policy tag or a taxonomy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1:TaxonomyIamMember": {
      "description": "Sets the IAM policy for a policy tag or a taxonomy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1:TaxonomyIamPolicy": {
      "description": "Sets the IAM policy for a policy tag or a taxonomy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "taxonomyId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "taxonomyId"
      ]
    },
    "google-native:datacatalog/v1:TaxonomyPolicyTagIamBinding": {
      "description": "Sets the IAM policy for a policy tag or a taxonomy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1:TaxonomyPolicyTagIamMember": {
      "description": "Sets the IAM policy for a policy tag or a taxonomy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1:TaxonomyPolicyTagIamPolicy": {
      "description": "Sets the IAM policy for a policy tag or a taxonomy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "policyTagId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "policyTagId",
        "project",
        "taxonomyId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "policyTagId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "policyTagId",
        "taxonomyId"
      ]
    },
    "google-native:datacatalog/v1beta1:Entry": {
      "description": "Creates an entry. Only entries of 'FILESET' type or user-specified type can be created. Users should enable the Data Catalog API in the project identified by the `parent` parameter (see [Data Catalog Resource Project] (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for more information). A maximum of 100,000 entries may be created per entry group.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigqueryDateShardedSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1BigQueryDateShardedSpecResponse",
          "description": "Specification for a group of BigQuery tables with name pattern `[prefix]YYYYMMDD`. Context: https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding."
        },
        "bigqueryTableSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1BigQueryTableSpecResponse",
          "description": "Specification that applies to a BigQuery table. This is only valid on entries of type `TABLE`."
        },
        "description": {
          "type": "string",
          "description": "Entry description, which can consist of several sentences or paragraphs that describe entry contents. Default value is an empty string."
        },
        "displayName": {
          "type": "string",
          "description": "Display information such as title and description. A short name to identify the entry, for example, \"Analytics Data - Jan 2011\". Default value is an empty string."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entryId": {
          "type": "string",
          "description": "Required. The id of the entry to create.",
          "replaceOnChanges": true
        },
        "gcsFilesetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1GcsFilesetSpecResponse",
          "description": "Specification that applies to a Cloud Storage fileset. This is only valid on entries of type FILESET."
        },
        "integratedSystem": {
          "type": "string",
          "description": "This field indicates the entry's source system that Data Catalog integrates with, such as BigQuery or Pub/Sub."
        },
        "linkedResource": {
          "type": "string",
          "description": "The resource this metadata entry refers to. For Google Cloud Platform resources, `linked_resource` is the [full name of the resource](https://cloud.google.com/apis/design/resource_names#full_resource_name). For example, the `linked_resource` for a table resource from BigQuery is: * //bigquery.googleapis.com/projects/projectId/datasets/datasetId/tables/tableId Output only when Entry is of type in the EntryType enum. For entries with user_specified_type, this field is optional and defaults to an empty string."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The Data Catalog resource name of the entry in URL format. Example: * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id} Note that this Entry and its child resources may not actually be stored in the location in this name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schema": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SchemaResponse",
          "description": "Schema of the entry. An entry might not have any schema attached to it."
        },
        "sourceSystemTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SystemTimestampsResponse",
          "description": "Timestamps about the underlying resource, not about this Data Catalog entry. Output only when Entry is of type in the EntryType enum. For entries with user_specified_type, this field is optional and defaults to an empty timestamp."
        },
        "type": {
          "type": "string",
          "description": "The type of the entry. Only used for Entries with types in the EntryType enum."
        },
        "usageSignal": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1UsageSignalResponse",
          "description": "Statistics on the usage level of the resource."
        },
        "userSpecifiedSystem": {
          "type": "string",
          "description": "This field indicates the entry's source system that Data Catalog does not integrate with. `user_specified_system` strings must begin with a letter or underscore and can only contain letters, numbers, and underscores; are case insensitive; must be at least 1 character and at most 64 characters long."
        },
        "userSpecifiedType": {
          "type": "string",
          "description": "Entry type if it does not fit any of the input-allowed values listed in `EntryType` enum above. When creating an entry, users should check the enum values first, if nothing matches the entry to be created, then provide a custom value, for example \"my_special_type\". `user_specified_type` strings must begin with a letter or underscore and can only contain letters, numbers, and underscores; are case insensitive; must be at least 1 character and at most 64 characters long. Currently, only FILESET enum value is allowed. All other entries created through Data Catalog must use `user_specified_type`."
        }
      },
      "type": "object",
      "required": [
        "bigqueryDateShardedSpec",
        "bigqueryTableSpec",
        "description",
        "displayName",
        "entryGroupId",
        "entryId",
        "gcsFilesetSpec",
        "integratedSystem",
        "linkedResource",
        "location",
        "name",
        "project",
        "schema",
        "sourceSystemTimestamps",
        "type",
        "usageSignal",
        "userSpecifiedSystem",
        "userSpecifiedType"
      ],
      "inputProperties": {
        "bigqueryDateShardedSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1BigQueryDateShardedSpec",
          "description": "Specification for a group of BigQuery tables with name pattern `[prefix]YYYYMMDD`. Context: https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding."
        },
        "bigqueryTableSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1BigQueryTableSpec",
          "description": "Specification that applies to a BigQuery table. This is only valid on entries of type `TABLE`."
        },
        "description": {
          "type": "string",
          "description": "Entry description, which can consist of several sentences or paragraphs that describe entry contents. Default value is an empty string."
        },
        "displayName": {
          "type": "string",
          "description": "Display information such as title and description. A short name to identify the entry, for example, \"Analytics Data - Jan 2011\". Default value is an empty string."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entryId": {
          "type": "string",
          "description": "Required. The id of the entry to create.",
          "replaceOnChanges": true
        },
        "gcsFilesetSpec": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1GcsFilesetSpec",
          "description": "Specification that applies to a Cloud Storage fileset. This is only valid on entries of type FILESET."
        },
        "linkedResource": {
          "type": "string",
          "description": "The resource this metadata entry refers to. For Google Cloud Platform resources, `linked_resource` is the [full name of the resource](https://cloud.google.com/apis/design/resource_names#full_resource_name). For example, the `linked_resource` for a table resource from BigQuery is: * //bigquery.googleapis.com/projects/projectId/datasets/datasetId/tables/tableId Output only when Entry is of type in the EntryType enum. For entries with user_specified_type, this field is optional and defaults to an empty string."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schema": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1Schema",
          "description": "Schema of the entry. An entry might not have any schema attached to it."
        },
        "type": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:EntryType",
          "description": "The type of the entry. Only used for Entries with types in the EntryType enum."
        },
        "userSpecifiedSystem": {
          "type": "string",
          "description": "This field indicates the entry's source system that Data Catalog does not integrate with. `user_specified_system` strings must begin with a letter or underscore and can only contain letters, numbers, and underscores; are case insensitive; must be at least 1 character and at most 64 characters long."
        },
        "userSpecifiedType": {
          "type": "string",
          "description": "Entry type if it does not fit any of the input-allowed values listed in `EntryType` enum above. When creating an entry, users should check the enum values first, if nothing matches the entry to be created, then provide a custom value, for example \"my_special_type\". `user_specified_type` strings must begin with a letter or underscore and can only contain letters, numbers, and underscores; are case insensitive; must be at least 1 character and at most 64 characters long. Currently, only FILESET enum value is allowed. All other entries created through Data Catalog must use `user_specified_type`."
        }
      },
      "requiredInputs": [
        "entryGroupId",
        "entryId"
      ]
    },
    "google-native:datacatalog/v1beta1:EntryGroup": {
      "description": "A maximum of 10,000 entry groups may be created per organization across all locations. Users should enable the Data Catalog API in the project identified by the `parent` parameter (see [Data Catalog Resource Project] (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for more information).",
      "properties": {
        "dataCatalogTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SystemTimestampsResponse",
          "description": "Timestamps about this EntryGroup. Default value is empty timestamps."
        },
        "description": {
          "type": "string",
          "description": "Entry group description, which can consist of several sentences or paragraphs that describe entry group contents. Default value is an empty string."
        },
        "displayName": {
          "type": "string",
          "description": "A short name to identify the entry group, for example, \"analytics data - jan 2011\". Default value is an empty string."
        },
        "entryGroupId": {
          "type": "string",
          "description": "Required. The id of the entry group to create. The id must begin with a letter or underscore, contain only English letters, numbers and underscores, and be at most 64 characters.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the entry group in URL format. Example: * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id} Note that this EntryGroup and its child resources may not actually be stored in the location in this name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "dataCatalogTimestamps",
        "description",
        "displayName",
        "entryGroupId",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Entry group description, which can consist of several sentences or paragraphs that describe entry group contents. Default value is an empty string."
        },
        "displayName": {
          "type": "string",
          "description": "A short name to identify the entry group, for example, \"analytics data - jan 2011\". Default value is an empty string."
        },
        "entryGroupId": {
          "type": "string",
          "description": "Required. The id of the entry group to create. The id must begin with a letter or underscore, contain only English letters, numbers and underscores, and be at most 64 characters.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the entry group in URL format. Example: * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id} Note that this EntryGroup and its child resources may not actually be stored in the location in this name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "entryGroupId"
      ]
    },
    "google-native:datacatalog/v1beta1:EntryGroupIamBinding": {
      "description": "Sets the access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates. - Entries. - Entry groups. Note, this method cannot be used to manage policies for BigQuery, Pub/Sub and any external Google Cloud Platform resources synced to Data Catalog. Callers must have following Google IAM permission - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entries.setIamPolicy` to set policies on entries. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:EntryGroupIamMember": {
      "description": "Sets the access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates. - Entries. - Entry groups. Note, this method cannot be used to manage policies for BigQuery, Pub/Sub and any external Google Cloud Platform resources synced to Data Catalog. Callers must have following Google IAM permission - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entries.setIamPolicy` to set policies on entries. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:EntryGroupIamPolicy": {
      "description": "Sets the access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates. - Entries. - Entry groups. Note, this method cannot be used to manage policies for BigQuery, Pub/Sub and any external Google Cloud Platform resources synced to Data Catalog. Callers must have following Google IAM permission - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entries.setIamPolicy` to set policies on entries. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "entryGroupId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "entryGroupId"
      ]
    },
    "google-native:datacatalog/v1beta1:PolicyTag": {
      "description": "Creates a policy tag in the specified taxonomy.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "childPolicyTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resource names of child policy tags of this policy tag."
        },
        "description": {
          "type": "string",
          "description": "Description of this policy tag. It must: contain only unicode characters, tabs, newlines, carriage returns and page breaks; and be at most 2000 bytes long when encoded in UTF-8. If not set, defaults to an empty description. If not set, defaults to an empty description."
        },
        "displayName": {
          "type": "string",
          "description": "User defined name of this policy tag. It must: be unique within the parent taxonomy; contain only unicode letters, numbers, underscores, dashes and spaces; not start or end with spaces; and be at most 200 bytes long when encoded in UTF-8."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of this policy tag, whose format is: \"projects/{project_number}/locations/{location_id}/taxonomies/{taxonomy_id}/policyTags/{id}\"."
        },
        "parentPolicyTag": {
          "type": "string",
          "description": "Resource name of this policy tag's parent policy tag (e.g. for the \"LatLong\" policy tag in the example above, this field contains the resource name of the \"Geolocation\" policy tag). If empty, it means this policy tag is a top level policy tag (e.g. this field is empty for the \"Geolocation\" policy tag in the example above). If not set, defaults to an empty string."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "childPolicyTags",
        "description",
        "displayName",
        "location",
        "name",
        "parentPolicyTag",
        "project",
        "taxonomyId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of this policy tag. It must: contain only unicode characters, tabs, newlines, carriage returns and page breaks; and be at most 2000 bytes long when encoded in UTF-8. If not set, defaults to an empty description. If not set, defaults to an empty description."
        },
        "displayName": {
          "type": "string",
          "description": "User defined name of this policy tag. It must: be unique within the parent taxonomy; contain only unicode letters, numbers, underscores, dashes and spaces; not start or end with spaces; and be at most 200 bytes long when encoded in UTF-8."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "parentPolicyTag": {
          "type": "string",
          "description": "Resource name of this policy tag's parent policy tag (e.g. for the \"LatLong\" policy tag in the example above, this field contains the resource name of the \"Geolocation\" policy tag). If empty, it means this policy tag is a top level policy tag (e.g. this field is empty for the \"Geolocation\" policy tag in the example above). If not set, defaults to an empty string."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "taxonomyId"
      ]
    },
    "google-native:datacatalog/v1beta1:TagTemplate": {
      "description": "Creates a tag template. The user should enable the Data Catalog API in the project identified by the `parent` parameter (see [Data Catalog Resource Project](https://cloud.google.com/data-catalog/docs/concepts/resource-project) for more information).",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The display name for this template. Defaults to an empty string."
        },
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of tag template field IDs to the settings for the field. This map is an exhaustive list of the allowed fields. This map must contain at least one field and at most 500 fields. The keys to this map are tag template field IDs. Field IDs can contain letters (both uppercase and lowercase), numbers (0-9) and underscores (_). Field IDs must be at least 1 character long and at most 64 characters long. Field IDs must start with a letter or underscore."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the tag template in URL format. Example: * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id} Note that this TagTemplate and its child resources may not actually be stored in the location in this name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagTemplateId": {
          "type": "string",
          "description": "Required. The id of the tag template to create.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "fields",
        "location",
        "name",
        "project",
        "tagTemplateId"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name for this template. Defaults to an empty string."
        },
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of tag template field IDs to the settings for the field. This map is an exhaustive list of the allowed fields. This map must contain at least one field and at most 500 fields. The keys to this map are tag template field IDs. Field IDs can contain letters (both uppercase and lowercase), numbers (0-9) and underscores (_). Field IDs must be at least 1 character long and at most 64 characters long. Field IDs must start with a letter or underscore."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the tag template in URL format. Example: * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id} Note that this TagTemplate and its child resources may not actually be stored in the location in this name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagTemplateId": {
          "type": "string",
          "description": "Required. The id of the tag template to create.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "fields",
        "tagTemplateId"
      ]
    },
    "google-native:datacatalog/v1beta1:TagTemplateIamBinding": {
      "description": "Sets the access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates. - Entries. - Entry groups. Note, this method cannot be used to manage policies for BigQuery, Pub/Sub and any external Google Cloud Platform resources synced to Data Catalog. Callers must have following Google IAM permission - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entries.setIamPolicy` to set policies on entries. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:TagTemplateIamMember": {
      "description": "Sets the access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates. - Entries. - Entry groups. Note, this method cannot be used to manage policies for BigQuery, Pub/Sub and any external Google Cloud Platform resources synced to Data Catalog. Callers must have following Google IAM permission - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entries.setIamPolicy` to set policies on entries. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:TagTemplateIamPolicy": {
      "description": "Sets the access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates. - Entries. - Entry groups. Note, this method cannot be used to manage policies for BigQuery, Pub/Sub and any external Google Cloud Platform resources synced to Data Catalog. Callers must have following Google IAM permission - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entries.setIamPolicy` to set policies on entries. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "tagTemplateId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tagTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "tagTemplateId"
      ]
    },
    "google-native:datacatalog/v1beta1:Taxonomy": {
      "description": "Creates a taxonomy in the specified project.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "activatedPolicyTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of policy types that are activated for this taxonomy. If not set, defaults to an empty list."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of this taxonomy. It must: contain only unicode characters, tabs, newlines, carriage returns and page breaks; and be at most 2000 bytes long when encoded in UTF-8. If not set, defaults to an empty description."
        },
        "displayName": {
          "type": "string",
          "description": "User defined name of this taxonomy. It must: contain only unicode letters, numbers, underscores, dashes and spaces; not start or end with spaces; and be at most 200 bytes long when encoded in UTF-8. The taxonomy display name must be unique within an organization."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of this taxonomy, whose format is: \"projects/{project_number}/locations/{location_id}/taxonomies/{id}\"."
        },
        "policyTagCount": {
          "type": "integer",
          "description": "Number of policy tags contained in this taxonomy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "service": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1TaxonomyServiceResponse",
          "description": "Identity of the service which owns the Taxonomy. This field is only populated when the taxonomy is created by a Google Cloud service. Currently only 'DATAPLEX' is supported."
        },
        "taxonomyTimestamps": {
          "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SystemTimestampsResponse",
          "description": "Timestamps about this taxonomy. Only create_time and update_time are used."
        }
      },
      "type": "object",
      "required": [
        "activatedPolicyTypes",
        "description",
        "displayName",
        "location",
        "name",
        "policyTagCount",
        "project",
        "service",
        "taxonomyTimestamps"
      ],
      "inputProperties": {
        "activatedPolicyTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:TaxonomyActivatedPolicyTypesItem"
          },
          "description": "Optional. A list of policy types that are activated for this taxonomy. If not set, defaults to an empty list."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of this taxonomy. It must: contain only unicode characters, tabs, newlines, carriage returns and page breaks; and be at most 2000 bytes long when encoded in UTF-8. If not set, defaults to an empty description."
        },
        "displayName": {
          "type": "string",
          "description": "User defined name of this taxonomy. It must: contain only unicode letters, numbers, underscores, dashes and spaces; not start or end with spaces; and be at most 200 bytes long when encoded in UTF-8. The taxonomy display name must be unique within an organization."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:datacatalog/v1beta1:TaxonomyIamBinding": {
      "description": "Sets the IAM policy for a taxonomy or a policy tag.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:TaxonomyIamMember": {
      "description": "Sets the IAM policy for a taxonomy or a policy tag.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:TaxonomyIamPolicy": {
      "description": "Sets the IAM policy for a taxonomy or a policy tag.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "taxonomyId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "taxonomyId"
      ]
    },
    "google-native:datacatalog/v1beta1:TaxonomyPolicyTagIamBinding": {
      "description": "Sets the IAM policy for a taxonomy or a policy tag.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:TaxonomyPolicyTagIamMember": {
      "description": "Sets the IAM policy for a taxonomy or a policy tag.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datacatalog/v1beta1:TaxonomyPolicyTagIamPolicy": {
      "description": "Sets the IAM policy for a taxonomy or a policy tag.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "policyTagId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "policyTagId",
        "project",
        "taxonomyId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "policyTagId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "policyTagId",
        "taxonomyId"
      ]
    },
    "google-native:dataflow/v1b3:Job": {
      "description": "Creates a Cloud Dataflow job. To create a job, we recommend using `projects.locations.jobs.create` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.create` is not recommended, as your job will always start in `us-central1`. Do not enter confidential information when you supply string values using the API.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "clientRequestId": {
          "type": "string",
          "description": "The client's unique identifier of the job, re-used across retried attempts. If this field is set, the service will ensure its uniqueness. The request to create a job will fail if the service has knowledge of a previously submitted job with the same client's ID and job name. The caller may use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the job was initially created. Immutable and set by the Cloud Dataflow service."
        },
        "createdFromSnapshotId": {
          "type": "string",
          "description": "If this is specified, the job's initial state is populated from the given snapshot."
        },
        "currentState": {
          "type": "string",
          "description": "The current state of the job. Jobs are created in the `JOB_STATE_STOPPED` state unless otherwise specified. A job in the `JOB_STATE_RUNNING` state may asynchronously enter a terminal state. After a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Cloud Dataflow service; callers cannot mutate it."
        },
        "currentStateTime": {
          "type": "string",
          "description": "The timestamp associated with the current state."
        },
        "environment": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:EnvironmentResponse",
          "description": "The environment for the job."
        },
        "executionInfo": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:JobExecutionInfoResponse",
          "description": "Deprecated.",
          "deprecationMessage": "Deprecated."
        },
        "jobMetadata": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:JobMetadataResponse",
          "description": "This field is populated by the Dataflow service to support filtering jobs by the metadata values provided here. Populated for ListJobs and all GetJob views SUMMARY and higher."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The user-specified Cloud Dataflow job name. Only one Job with a given name can exist in a project within one region at any given time. Jobs in different regions can have the same name. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt returns the existing Job. The name must match the regular expression `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?`"
        },
        "pipelineDescription": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:PipelineDescriptionResponse",
          "description": "Preliminary field: The format of this data may change at any time. A description of the user pipeline and stages through which it is executed. Created by Cloud Dataflow service. Only retrieved with JOB_VIEW_DESCRIPTION or JOB_VIEW_ALL."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replaceJobId": {
          "type": "string",
          "description": "Deprecated. This field is now in the Job message."
        },
        "replacedByJobId": {
          "type": "string",
          "description": "If another job is an update of this job (and thus, this job is in `JOB_STATE_UPDATED`), this field contains the ID of that job."
        },
        "requestedState": {
          "type": "string",
          "description": "The job's requested state. Applies to `UpdateJob` requests. Set `requested_state` with `UpdateJob` requests to switch between the states `JOB_STATE_STOPPED` and `JOB_STATE_RUNNING`. You can also use `UpdateJob` requests to change a job's state from `JOB_STATE_RUNNING` to `JOB_STATE_CANCELLED`, `JOB_STATE_DONE`, or `JOB_STATE_DRAINED`. These states irrevocably terminate the job if it hasn't already reached a terminal state. This field has no effect on `CreateJob` requests."
        },
        "runtimeUpdatableParams": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:RuntimeUpdatableParamsResponse",
          "description": "This field may ONLY be modified at runtime using the projects.jobs.update method to adjust job behavior. This field has no effect when specified at job creation."
        },
        "satisfiesPzi": {
          "type": "boolean",
          "description": "Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests."
        },
        "stageStates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ExecutionStageStateResponse"
          },
          "description": "This field may be mutated by the Cloud Dataflow service; callers cannot mutate it."
        },
        "startTime": {
          "type": "string",
          "description": "The timestamp when the job was started (transitioned to JOB_STATE_PENDING). Flexible resource scheduling jobs are started with some delay after job creation, so start_time is unset before start and is updated when the job is started by the Cloud Dataflow service. For other jobs, start_time always equals to create_time and is immutable and set by the Cloud Dataflow service."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:StepResponse"
          },
          "description": "Exactly one of step or steps_location should be specified. The top-level steps that constitute the entire job. Only retrieved with JOB_VIEW_ALL."
        },
        "stepsLocation": {
          "type": "string",
          "description": "The Cloud Storage location where the steps are stored."
        },
        "tempFiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "transformNameMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job."
        },
        "type": {
          "type": "string",
          "description": "The type of Cloud Dataflow job."
        },
        "view": {
          "type": "string",
          "description": "The level of information requested in response."
        }
      },
      "type": "object",
      "required": [
        "clientRequestId",
        "createTime",
        "createdFromSnapshotId",
        "currentState",
        "currentStateTime",
        "environment",
        "executionInfo",
        "jobMetadata",
        "labels",
        "location",
        "name",
        "pipelineDescription",
        "project",
        "replaceJobId",
        "replacedByJobId",
        "requestedState",
        "runtimeUpdatableParams",
        "satisfiesPzi",
        "satisfiesPzs",
        "stageStates",
        "startTime",
        "steps",
        "stepsLocation",
        "tempFiles",
        "transformNameMapping",
        "type"
      ],
      "inputProperties": {
        "clientRequestId": {
          "type": "string",
          "description": "The client's unique identifier of the job, re-used across retried attempts. If this field is set, the service will ensure its uniqueness. The request to create a job will fail if the service has knowledge of a previously submitted job with the same client's ID and job name. The caller may use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the job was initially created. Immutable and set by the Cloud Dataflow service."
        },
        "createdFromSnapshotId": {
          "type": "string",
          "description": "If this is specified, the job's initial state is populated from the given snapshot."
        },
        "currentState": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:JobCurrentState",
          "description": "The current state of the job. Jobs are created in the `JOB_STATE_STOPPED` state unless otherwise specified. A job in the `JOB_STATE_RUNNING` state may asynchronously enter a terminal state. After a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Cloud Dataflow service; callers cannot mutate it."
        },
        "currentStateTime": {
          "type": "string",
          "description": "The timestamp associated with the current state."
        },
        "environment": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:Environment",
          "description": "The environment for the job."
        },
        "executionInfo": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:JobExecutionInfo",
          "description": "Deprecated.",
          "deprecationMessage": "Deprecated."
        },
        "id": {
          "type": "string",
          "description": "The unique ID of this job. This field is set by the Cloud Dataflow service when the Job is created, and is immutable for the life of the job."
        },
        "jobMetadata": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:JobMetadata",
          "description": "This field is populated by the Dataflow service to support filtering jobs by the metadata values provided here. Populated for ListJobs and all GetJob views SUMMARY and higher."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size."
        },
        "location": {
          "type": "string",
          "description": "The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains this job."
        },
        "name": {
          "type": "string",
          "description": "The user-specified Cloud Dataflow job name. Only one Job with a given name can exist in a project within one region at any given time. Jobs in different regions can have the same name. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt returns the existing Job. The name must match the regular expression `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?`"
        },
        "pipelineDescription": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:PipelineDescription",
          "description": "Preliminary field: The format of this data may change at any time. A description of the user pipeline and stages through which it is executed. Created by Cloud Dataflow service. Only retrieved with JOB_VIEW_DESCRIPTION or JOB_VIEW_ALL."
        },
        "project": {
          "type": "string",
          "description": "The ID of the Cloud Platform project that the job belongs to."
        },
        "replaceJobId": {
          "type": "string",
          "description": "If this job is an update of an existing job, this field is the job ID of the job it replaced. When sending a `CreateJobRequest`, you can update a job by specifying it here. The job named here is stopped, and its intermediate state is transferred to this job."
        },
        "replacedByJobId": {
          "type": "string",
          "description": "If another job is an update of this job (and thus, this job is in `JOB_STATE_UPDATED`), this field contains the ID of that job."
        },
        "requestedState": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:JobRequestedState",
          "description": "The job's requested state. Applies to `UpdateJob` requests. Set `requested_state` with `UpdateJob` requests to switch between the states `JOB_STATE_STOPPED` and `JOB_STATE_RUNNING`. You can also use `UpdateJob` requests to change a job's state from `JOB_STATE_RUNNING` to `JOB_STATE_CANCELLED`, `JOB_STATE_DONE`, or `JOB_STATE_DRAINED`. These states irrevocably terminate the job if it hasn't already reached a terminal state. This field has no effect on `CreateJob` requests."
        },
        "runtimeUpdatableParams": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:RuntimeUpdatableParams",
          "description": "This field may ONLY be modified at runtime using the projects.jobs.update method to adjust job behavior. This field has no effect when specified at job creation."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests."
        },
        "stageStates": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:ExecutionStageState"
          },
          "description": "This field may be mutated by the Cloud Dataflow service; callers cannot mutate it."
        },
        "startTime": {
          "type": "string",
          "description": "The timestamp when the job was started (transitioned to JOB_STATE_PENDING). Flexible resource scheduling jobs are started with some delay after job creation, so start_time is unset before start and is updated when the job is started by the Cloud Dataflow service. For other jobs, start_time always equals to create_time and is immutable and set by the Cloud Dataflow service."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:Step"
          },
          "description": "Exactly one of step or steps_location should be specified. The top-level steps that constitute the entire job. Only retrieved with JOB_VIEW_ALL."
        },
        "stepsLocation": {
          "type": "string",
          "description": "The Cloud Storage location where the steps are stored."
        },
        "tempFiles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}"
        },
        "transformNameMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job."
        },
        "type": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:JobType",
          "description": "The type of Cloud Dataflow job."
        },
        "view": {
          "type": "string",
          "description": "The level of information requested in response."
        }
      }
    },
    "google-native:dataflow/v1b3:Template": {
      "description": "Creates a Cloud Dataflow job from a template. Do not enter confidential information when you supply string values using the API.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:TemplateMetadataResponse",
          "description": "The template metadata describing the template name, available parameters, etc."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtimeMetadata": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:RuntimeMetadataResponse",
          "description": "Describes the runtime metadata with SDKInfo and available parameters."
        },
        "status": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:StatusResponse",
          "description": "The status of the get template request. Any problems with the request will be indicated in the error_details."
        },
        "templateType": {
          "type": "string",
          "description": "Template Type."
        }
      },
      "type": "object",
      "required": [
        "location",
        "metadata",
        "project",
        "runtimeMetadata",
        "status",
        "templateType"
      ],
      "inputProperties": {
        "environment": {
          "$ref": "#/types/google-native:dataflow%2Fv1b3:RuntimeEnvironment",
          "description": "The runtime environment for the job."
        },
        "gcsPath": {
          "type": "string",
          "description": "A Cloud Storage path to the template from which to create the job. Must be a valid Cloud Storage URL, beginning with `gs://`."
        },
        "jobName": {
          "type": "string",
          "description": "The job name to use for the created job."
        },
        "location": {
          "type": "string",
          "description": "The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) to which to direct the request."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The runtime parameters to pass to the job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "gcsPath",
        "jobName"
      ]
    },
    "google-native:dataform/v1beta1:CollectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataform/v1beta1:CollectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataform/v1beta1:CollectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "collectionId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "collectionId"
      ]
    },
    "google-native:dataform/v1beta1:CompilationResult": {
      "description": "Creates a new CompilationResult in a given project and location.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "codeCompilationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:CodeCompilationConfigResponse",
          "description": "Immutable. If set, fields of `code_compilation_config` override the default compilation settings that are specified in dataform.json."
        },
        "compilationErrors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:CompilationErrorResponse"
          },
          "description": "Errors encountered during project compilation."
        },
        "dataformCoreVersion": {
          "type": "string",
          "description": "The version of `@dataform/core` that was used for compilation."
        },
        "gitCommitish": {
          "type": "string",
          "description": "Immutable. Git commit/tag/branch name at which the repository should be compiled. Must exist in the remote repository. Examples: - a commit SHA: `12ade345` - a tag: `tag1` - a branch name: `branch1`"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The compilation result's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseConfig": {
          "type": "string",
          "description": "Immutable. The name of the release config to compile. The release config's 'current_compilation_result' field will be updated to this compilation result. Must be in the format `projects/*/locations/*/repositories/*/releaseConfigs/*`."
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resolvedGitCommitSha": {
          "type": "string",
          "description": "The fully resolved Git commit SHA of the code that was compiled. Not set for compilation results whose source is a workspace."
        },
        "workspace": {
          "type": "string",
          "description": "Immutable. The name of the workspace to compile. Must be in the format `projects/*/locations/*/repositories/*/workspaces/*`."
        }
      },
      "type": "object",
      "required": [
        "codeCompilationConfig",
        "compilationErrors",
        "dataformCoreVersion",
        "gitCommitish",
        "location",
        "name",
        "project",
        "releaseConfig",
        "repositoryId",
        "resolvedGitCommitSha",
        "workspace"
      ],
      "inputProperties": {
        "codeCompilationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:CodeCompilationConfig",
          "description": "Immutable. If set, fields of `code_compilation_config` override the default compilation settings that are specified in dataform.json."
        },
        "gitCommitish": {
          "type": "string",
          "description": "Immutable. Git commit/tag/branch name at which the repository should be compiled. Must exist in the remote repository. Examples: - a commit SHA: `12ade345` - a tag: `tag1` - a branch name: `branch1`"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseConfig": {
          "type": "string",
          "description": "Immutable. The name of the release config to compile. The release config's 'current_compilation_result' field will be updated to this compilation result. Must be in the format `projects/*/locations/*/repositories/*/releaseConfigs/*`."
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workspace": {
          "type": "string",
          "description": "Immutable. The name of the workspace to compile. Must be in the format `projects/*/locations/*/repositories/*/workspaces/*`."
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:dataform/v1beta1:ReleaseConfig": {
      "description": "Creates a new ReleaseConfig in a given Repository.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "codeCompilationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:CodeCompilationConfigResponse",
          "description": "Optional. If set, fields of `code_compilation_config` override the default compilation settings that are specified in dataform.json."
        },
        "cronSchedule": {
          "type": "string",
          "description": "Optional. Optional schedule (in cron format) for automatic creation of compilation results."
        },
        "gitCommitish": {
          "type": "string",
          "description": "Git commit/tag/branch name at which the repository should be compiled. Must exist in the remote repository. Examples: - a commit SHA: `12ade345` - a tag: `tag1` - a branch name: `branch1`"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The release config's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recentScheduledReleaseRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:ScheduledReleaseRecordResponse"
          },
          "description": "Records of the 10 most recent scheduled release attempts, ordered in in descending order of `release_time`. Updated whenever automatic creation of a compilation result is triggered by cron_schedule."
        },
        "releaseCompilationResult": {
          "type": "string",
          "description": "Optional. The name of the currently released compilation result for this release config. This value is updated when a compilation result is created from this release config, or when this resource is updated by API call (perhaps to roll back to an earlier release). The compilation result must have been created using this release config. Must be in the format `projects/*/locations/*/repositories/*/compilationResults/*`."
        },
        "releaseConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the release config, which will become the final component of the release config's resource name.",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeZone": {
          "type": "string",
          "description": "Optional. Specifies the time zone to be used when interpreting cron_schedule. Must be a time zone name from the time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). If left unspecified, the default is UTC."
        }
      },
      "type": "object",
      "required": [
        "codeCompilationConfig",
        "cronSchedule",
        "gitCommitish",
        "location",
        "name",
        "project",
        "recentScheduledReleaseRecords",
        "releaseCompilationResult",
        "releaseConfigId",
        "repositoryId",
        "timeZone"
      ],
      "inputProperties": {
        "codeCompilationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:CodeCompilationConfig",
          "description": "Optional. If set, fields of `code_compilation_config` override the default compilation settings that are specified in dataform.json."
        },
        "cronSchedule": {
          "type": "string",
          "description": "Optional. Optional schedule (in cron format) for automatic creation of compilation results."
        },
        "gitCommitish": {
          "type": "string",
          "description": "Git commit/tag/branch name at which the repository should be compiled. Must exist in the remote repository. Examples: - a commit SHA: `12ade345` - a tag: `tag1` - a branch name: `branch1`"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseCompilationResult": {
          "type": "string",
          "description": "Optional. The name of the currently released compilation result for this release config. This value is updated when a compilation result is created from this release config, or when this resource is updated by API call (perhaps to roll back to an earlier release). The compilation result must have been created using this release config. Must be in the format `projects/*/locations/*/repositories/*/compilationResults/*`."
        },
        "releaseConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the release config, which will become the final component of the release config's resource name.",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeZone": {
          "type": "string",
          "description": "Optional. Specifies the time zone to be used when interpreting cron_schedule. Must be a time zone name from the time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). If left unspecified, the default is UTC."
        }
      },
      "requiredInputs": [
        "gitCommitish",
        "releaseConfigId",
        "repositoryId"
      ]
    },
    "google-native:dataform/v1beta1:Repository": {
      "description": "Creates a new Repository in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Optional. The repository's user-friendly name."
        },
        "gitRemoteSettings": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:GitRemoteSettingsResponse",
          "description": "Optional. If set, configures this repository to be linked to a Git remote."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Repository user labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The repository's name."
        },
        "npmrcEnvironmentVariablesSecretVersion": {
          "type": "string",
          "description": "Optional. The name of the Secret Manager secret version to be used to interpolate variables into the .npmrc file for package installation operations. Must be in the format `projects/*/secrets/*/versions/*`. The file itself must be in a JSON format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The ID to use for the repository, which will become the final component of the repository's resource name.",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The service account to run workflow invocations under."
        },
        "setAuthenticatedUserAdmin": {
          "type": "boolean",
          "description": "Optional. Input only. If set to true, the authenticated user will be granted the roles/dataform.admin role on the created repository. To modify access to the created repository later apply setIamPolicy from https://cloud.google.com/dataform/reference/rest#rest-resource:-v1beta1.projects.locations.repositories"
        },
        "workspaceCompilationOverrides": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:WorkspaceCompilationOverridesResponse",
          "description": "Optional. If set, fields of `workspace_compilation_overrides` override the default compilation settings that are specified in dataform.json when creating workspace-scoped compilation results. See documentation for `WorkspaceCompilationOverrides` for more information."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "gitRemoteSettings",
        "labels",
        "location",
        "name",
        "npmrcEnvironmentVariablesSecretVersion",
        "project",
        "repositoryId",
        "serviceAccount",
        "setAuthenticatedUserAdmin",
        "workspaceCompilationOverrides"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Optional. The repository's user-friendly name."
        },
        "gitRemoteSettings": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:GitRemoteSettings",
          "description": "Optional. If set, configures this repository to be linked to a Git remote."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Repository user labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "npmrcEnvironmentVariablesSecretVersion": {
          "type": "string",
          "description": "Optional. The name of the Secret Manager secret version to be used to interpolate variables into the .npmrc file for package installation operations. Must be in the format `projects/*/secrets/*/versions/*`. The file itself must be in a JSON format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "description": "Required. The ID to use for the repository, which will become the final component of the repository's resource name.",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The service account to run workflow invocations under."
        },
        "setAuthenticatedUserAdmin": {
          "type": "boolean",
          "description": "Optional. Input only. If set to true, the authenticated user will be granted the roles/dataform.admin role on the created repository. To modify access to the created repository later apply setIamPolicy from https://cloud.google.com/dataform/reference/rest#rest-resource:-v1beta1.projects.locations.repositories"
        },
        "workspaceCompilationOverrides": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:WorkspaceCompilationOverrides",
          "description": "Optional. If set, fields of `workspace_compilation_overrides` override the default compilation settings that are specified in dataform.json when creating workspace-scoped compilation results. See documentation for `WorkspaceCompilationOverrides` for more information."
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:dataform/v1beta1:RepositoryIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataform/v1beta1:RepositoryIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataform/v1beta1:RepositoryIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "repositoryId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:dataform/v1beta1:RepositoryWorkspaceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataform/v1beta1:RepositoryWorkspaceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataform/v1beta1:RepositoryWorkspaceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workspaceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "repositoryId",
        "version",
        "workspaceId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workspaceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "repositoryId",
        "workspaceId"
      ]
    },
    "google-native:dataform/v1beta1:WorkflowConfig": {
      "description": "Creates a new WorkflowConfig in a given Repository.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "cronSchedule": {
          "type": "string",
          "description": "Optional. Optional schedule (in cron format) for automatic execution of this workflow config."
        },
        "invocationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:InvocationConfigResponse",
          "description": "Optional. If left unset, a default InvocationConfig will be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The workflow config's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recentScheduledExecutionRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:ScheduledExecutionRecordResponse"
          },
          "description": "Records of the 10 most recent scheduled execution attempts, ordered in in descending order of `execution_time`. Updated whenever automatic creation of a workflow invocation is triggered by cron_schedule."
        },
        "releaseConfig": {
          "type": "string",
          "description": "The name of the release config whose release_compilation_result should be executed. Must be in the format `projects/*/locations/*/repositories/*/releaseConfigs/*`."
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeZone": {
          "type": "string",
          "description": "Optional. Specifies the time zone to be used when interpreting cron_schedule. Must be a time zone name from the time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). If left unspecified, the default is UTC."
        },
        "workflowConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the workflow config, which will become the final component of the workflow config's resource name.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "cronSchedule",
        "invocationConfig",
        "location",
        "name",
        "project",
        "recentScheduledExecutionRecords",
        "releaseConfig",
        "repositoryId",
        "timeZone",
        "workflowConfigId"
      ],
      "inputProperties": {
        "cronSchedule": {
          "type": "string",
          "description": "Optional. Optional schedule (in cron format) for automatic execution of this workflow config."
        },
        "invocationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:InvocationConfig",
          "description": "Optional. If left unset, a default InvocationConfig will be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseConfig": {
          "type": "string",
          "description": "The name of the release config whose release_compilation_result should be executed. Must be in the format `projects/*/locations/*/repositories/*/releaseConfigs/*`."
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeZone": {
          "type": "string",
          "description": "Optional. Specifies the time zone to be used when interpreting cron_schedule. Must be a time zone name from the time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). If left unspecified, the default is UTC."
        },
        "workflowConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the workflow config, which will become the final component of the workflow config's resource name.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "releaseConfig",
        "repositoryId",
        "workflowConfigId"
      ]
    },
    "google-native:dataform/v1beta1:WorkflowInvocation": {
      "description": "Creates a new WorkflowInvocation in a given Repository.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "compilationResult": {
          "type": "string",
          "description": "Immutable. The name of the compilation result to use for this invocation. Must be in the format `projects/*/locations/*/repositories/*/compilationResults/*`."
        },
        "invocationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:InvocationConfigResponse",
          "description": "Immutable. If left unset, a default InvocationConfig will be used."
        },
        "invocationTiming": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:IntervalResponse",
          "description": "This workflow invocation's timing details."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The workflow invocation's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resolvedCompilationResult": {
          "type": "string",
          "description": "The resolved compilation result that was used to create this invocation. Will be in the format `projects/*/locations/*/repositories/*/compilationResults/*`."
        },
        "state": {
          "type": "string",
          "description": "This workflow invocation's current state."
        },
        "workflowConfig": {
          "type": "string",
          "description": "Immutable. The name of the workflow config to invoke. Must be in the format `projects/*/locations/*/repositories/*/workflowConfigs/*`."
        }
      },
      "type": "object",
      "required": [
        "compilationResult",
        "invocationConfig",
        "invocationTiming",
        "location",
        "name",
        "project",
        "repositoryId",
        "resolvedCompilationResult",
        "state",
        "workflowConfig"
      ],
      "inputProperties": {
        "compilationResult": {
          "type": "string",
          "description": "Immutable. The name of the compilation result to use for this invocation. Must be in the format `projects/*/locations/*/repositories/*/compilationResults/*`."
        },
        "invocationConfig": {
          "$ref": "#/types/google-native:dataform%2Fv1beta1:InvocationConfig",
          "description": "Immutable. If left unset, a default InvocationConfig will be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workflowConfig": {
          "type": "string",
          "description": "Immutable. The name of the workflow config to invoke. Must be in the format `projects/*/locations/*/repositories/*/workflowConfigs/*`."
        }
      },
      "requiredInputs": [
        "repositoryId"
      ]
    },
    "google-native:dataform/v1beta1:Workspace": {
      "description": "Creates a new Workspace in a given Repository.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The workspace's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workspaceId": {
          "type": "string",
          "description": "Required. The ID to use for the workspace, which will become the final component of the workspace's resource name.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "location",
        "name",
        "project",
        "repositoryId",
        "workspaceId"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repositoryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workspaceId": {
          "type": "string",
          "description": "Required. The ID to use for the workspace, which will become the final component of the workspace's resource name.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "repositoryId",
        "workspaceId"
      ]
    },
    "google-native:datafusion/v1:Instance": {
      "description": "Creates a new Data Fusion instance in the specified project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1:AcceleratorResponse"
          },
          "description": "List of accelerators enabled for this CDF instance."
        },
        "apiEndpoint": {
          "type": "string",
          "description": "Endpoint on which the REST APIs is accessible."
        },
        "availableVersion": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1:VersionResponse"
          },
          "description": "Available versions that the instance can be upgraded to using UpdateInstanceRequest."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "cryptoKeyConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1:CryptoKeyConfigResponse",
          "description": "The crypto key configuration. This field is used by the Customer-Managed Encryption Keys (CMEK) feature."
        },
        "dataprocServiceAccount": {
          "type": "string",
          "description": "User-managed service account to set on Dataproc when Cloud Data Fusion creates Dataproc to run data processing pipelines. This allows users to have fine-grained access control on Dataproc's accesses to cloud resources."
        },
        "description": {
          "type": "string",
          "description": "A description of this instance."
        },
        "disabledReason": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If the instance state is DISABLED, the reason for disabling the instance."
        },
        "displayName": {
          "type": "string",
          "description": "Display name for an instance."
        },
        "enableRbac": {
          "type": "boolean",
          "description": "Option to enable granular role-based access control."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Option to enable Stackdriver Logging."
        },
        "enableStackdriverMonitoring": {
          "type": "boolean",
          "description": "Option to enable Stackdriver Monitoring."
        },
        "enableZoneSeparation": {
          "type": "boolean",
          "description": "Option to enable granular zone separation."
        },
        "eventPublishConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1:EventPublishConfigResponse",
          "description": "Option to enable and pass metadata for event publishing."
        },
        "gcsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket generated by Data Fusion in the customer project."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The name of the instance to create.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for instance to use to annotate any related underlying resources such as Compute Engine VMs. The character '=' is not allowed to be used within the labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of this instance is in the form of projects/{project}/locations/{location}/instances/{instance}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1:NetworkConfigResponse",
          "description": "Network configuration options. These are required when a private Data Fusion instance is to be created."
        },
        "options": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of additional options used to configure the behavior of Data Fusion instance."
        },
        "p4ServiceAccount": {
          "type": "string",
          "description": "P4 service account for the customer project."
        },
        "patchRevision": {
          "type": "string",
          "description": "Optional. Current patch revision of the Data Fusion."
        },
        "privateInstance": {
          "type": "boolean",
          "description": "Specifies whether the Data Fusion instance should be private. If set to true, all Data Fusion nodes will have private IP addresses and will not be able to access the public internet."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Deprecated. Use tenant_project_id instead to extract the tenant project ID.",
          "deprecationMessage": "Output only. Deprecated. Use tenant_project_id instead to extract the tenant project ID."
        },
        "serviceEndpoint": {
          "type": "string",
          "description": "Endpoint on which the Data Fusion UI is accessible."
        },
        "state": {
          "type": "string",
          "description": "The current state of this Data Fusion instance."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of this Data Fusion instance if available."
        },
        "tenantProjectId": {
          "type": "string",
          "description": "The name of the tenant project."
        },
        "type": {
          "type": "string",
          "description": "Instance type."
        },
        "updateTime": {
          "type": "string",
          "description": "The time the instance was last updated."
        },
        "version": {
          "type": "string",
          "description": "Current version of the Data Fusion. Only specifiable in Update."
        },
        "workforceIdentityServiceEndpoint": {
          "type": "string",
          "description": "Endpoint on which the Data Fusion UI is accessible to third-party users"
        },
        "zone": {
          "type": "string",
          "description": "Name of the zone in which the Data Fusion instance will be created. Only DEVELOPER instances use this field."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "apiEndpoint",
        "availableVersion",
        "createTime",
        "cryptoKeyConfig",
        "dataprocServiceAccount",
        "description",
        "disabledReason",
        "displayName",
        "enableRbac",
        "enableStackdriverLogging",
        "enableStackdriverMonitoring",
        "enableZoneSeparation",
        "eventPublishConfig",
        "gcsBucket",
        "instanceId",
        "labels",
        "location",
        "name",
        "networkConfig",
        "options",
        "p4ServiceAccount",
        "patchRevision",
        "privateInstance",
        "project",
        "satisfiesPzs",
        "serviceAccount",
        "serviceEndpoint",
        "state",
        "stateMessage",
        "tenantProjectId",
        "type",
        "updateTime",
        "version",
        "workforceIdentityServiceEndpoint",
        "zone"
      ],
      "inputProperties": {
        "cryptoKeyConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1:CryptoKeyConfig",
          "description": "The crypto key configuration. This field is used by the Customer-Managed Encryption Keys (CMEK) feature."
        },
        "dataprocServiceAccount": {
          "type": "string",
          "description": "User-managed service account to set on Dataproc when Cloud Data Fusion creates Dataproc to run data processing pipelines. This allows users to have fine-grained access control on Dataproc's accesses to cloud resources."
        },
        "description": {
          "type": "string",
          "description": "A description of this instance."
        },
        "displayName": {
          "type": "string",
          "description": "Display name for an instance."
        },
        "enableRbac": {
          "type": "boolean",
          "description": "Option to enable granular role-based access control."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Option to enable Stackdriver Logging."
        },
        "enableStackdriverMonitoring": {
          "type": "boolean",
          "description": "Option to enable Stackdriver Monitoring."
        },
        "enableZoneSeparation": {
          "type": "boolean",
          "description": "Option to enable granular zone separation."
        },
        "eventPublishConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1:EventPublishConfig",
          "description": "Option to enable and pass metadata for event publishing."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The name of the instance to create.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for instance to use to annotate any related underlying resources such as Compute Engine VMs. The character '=' is not allowed to be used within the labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "networkConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1:NetworkConfig",
          "description": "Network configuration options. These are required when a private Data Fusion instance is to be created."
        },
        "options": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of additional options used to configure the behavior of Data Fusion instance."
        },
        "patchRevision": {
          "type": "string",
          "description": "Optional. Current patch revision of the Data Fusion."
        },
        "privateInstance": {
          "type": "boolean",
          "description": "Specifies whether the Data Fusion instance should be private. If set to true, all Data Fusion nodes will have private IP addresses and will not be able to access the public internet."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:datafusion%2Fv1:InstanceType",
          "description": "Instance type."
        },
        "version": {
          "type": "string",
          "description": "Current version of the Data Fusion. Only specifiable in Update."
        },
        "zone": {
          "type": "string",
          "description": "Name of the zone in which the Data Fusion instance will be created. Only DEVELOPER instances use this field."
        }
      },
      "requiredInputs": [
        "instanceId",
        "type"
      ]
    },
    "google-native:datafusion/v1:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datafusion/v1:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datafusion/v1:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "instanceId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:datafusion/v1beta1:Instance": {
      "description": "Creates a new Data Fusion instance in the specified project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accelerators": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:AcceleratorResponse"
          },
          "description": "List of accelerators enabled for this CDF instance."
        },
        "apiEndpoint": {
          "type": "string",
          "description": "Endpoint on which the REST APIs is accessible."
        },
        "availableVersion": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:VersionResponse"
          },
          "description": "Available versions that the instance can be upgraded to using UpdateInstanceRequest."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "cryptoKeyConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:CryptoKeyConfigResponse",
          "description": "The crypto key configuration. This field is used by the Customer-Managed Encryption Keys (CMEK) feature."
        },
        "dataprocServiceAccount": {
          "type": "string",
          "description": "User-managed service account to set on Dataproc when Cloud Data Fusion creates Dataproc to run data processing pipelines. This allows users to have fine-grained access control on Dataproc's accesses to cloud resources."
        },
        "description": {
          "type": "string",
          "description": "A description of this instance."
        },
        "disabledReason": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If the instance state is DISABLED, the reason for disabling the instance."
        },
        "displayName": {
          "type": "string",
          "description": "Display name for an instance."
        },
        "enableRbac": {
          "type": "boolean",
          "description": "Option to enable granular role-based access control."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Option to enable Stackdriver Logging."
        },
        "enableStackdriverMonitoring": {
          "type": "boolean",
          "description": "Option to enable Stackdriver Monitoring."
        },
        "enableZoneSeparation": {
          "type": "boolean",
          "description": "Option to enable zone separation."
        },
        "eventPublishConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:EventPublishConfigResponse",
          "description": "Option to enable and pass metadata for event publishing."
        },
        "gcsBucket": {
          "type": "string",
          "description": "Cloud Storage bucket generated by Data Fusion in the customer project."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The name of the instance to create.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for instance to use to annotate any related underlying resources such as Compute Engine VMs. The character '=' is not allowed to be used within the labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of this instance is in the form of projects/{project}/locations/{location}/instances/{instance}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:NetworkConfigResponse",
          "description": "Network configuration options. These are required when a private Data Fusion instance is to be created."
        },
        "options": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of additional options used to configure the behavior of Data Fusion instance."
        },
        "p4ServiceAccount": {
          "type": "string",
          "description": "P4 service account for the customer project."
        },
        "patchRevision": {
          "type": "string",
          "description": "Optional. Current patch revision of the Data Fusion."
        },
        "privateInstance": {
          "type": "boolean",
          "description": "Specifies whether the Data Fusion instance should be private. If set to true, all Data Fusion nodes will have private IP addresses and will not be able to access the public internet."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Deprecated. Use tenant_project_id instead to extract the tenant project ID.",
          "deprecationMessage": "Output only. Deprecated. Use tenant_project_id instead to extract the tenant project ID."
        },
        "serviceEndpoint": {
          "type": "string",
          "description": "Endpoint on which the Data Fusion UI is accessible."
        },
        "state": {
          "type": "string",
          "description": "The current state of this Data Fusion instance."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of this Data Fusion instance if available."
        },
        "tenantProjectId": {
          "type": "string",
          "description": "The name of the tenant project."
        },
        "type": {
          "type": "string",
          "description": "Instance type."
        },
        "updateTime": {
          "type": "string",
          "description": "The time the instance was last updated."
        },
        "version": {
          "type": "string",
          "description": "Current version of Data Fusion."
        },
        "workforceIdentityServiceEndpoint": {
          "type": "string",
          "description": "Endpoint on which the Data Fusion UI is accessible to third-party users."
        },
        "zone": {
          "type": "string",
          "description": "Name of the zone in which the Data Fusion instance will be created. Only DEVELOPER instances use this field."
        }
      },
      "type": "object",
      "required": [
        "accelerators",
        "apiEndpoint",
        "availableVersion",
        "createTime",
        "cryptoKeyConfig",
        "dataprocServiceAccount",
        "description",
        "disabledReason",
        "displayName",
        "enableRbac",
        "enableStackdriverLogging",
        "enableStackdriverMonitoring",
        "enableZoneSeparation",
        "eventPublishConfig",
        "gcsBucket",
        "instanceId",
        "labels",
        "location",
        "name",
        "networkConfig",
        "options",
        "p4ServiceAccount",
        "patchRevision",
        "privateInstance",
        "project",
        "satisfiesPzs",
        "serviceAccount",
        "serviceEndpoint",
        "state",
        "stateMessage",
        "tenantProjectId",
        "type",
        "updateTime",
        "version",
        "workforceIdentityServiceEndpoint",
        "zone"
      ],
      "inputProperties": {
        "cryptoKeyConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:CryptoKeyConfig",
          "description": "The crypto key configuration. This field is used by the Customer-Managed Encryption Keys (CMEK) feature."
        },
        "dataprocServiceAccount": {
          "type": "string",
          "description": "User-managed service account to set on Dataproc when Cloud Data Fusion creates Dataproc to run data processing pipelines. This allows users to have fine-grained access control on Dataproc's accesses to cloud resources."
        },
        "description": {
          "type": "string",
          "description": "A description of this instance."
        },
        "displayName": {
          "type": "string",
          "description": "Display name for an instance."
        },
        "enableRbac": {
          "type": "boolean",
          "description": "Option to enable granular role-based access control."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Option to enable Stackdriver Logging."
        },
        "enableStackdriverMonitoring": {
          "type": "boolean",
          "description": "Option to enable Stackdriver Monitoring."
        },
        "enableZoneSeparation": {
          "type": "boolean",
          "description": "Option to enable zone separation."
        },
        "eventPublishConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:EventPublishConfig",
          "description": "Option to enable and pass metadata for event publishing."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The name of the instance to create.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for instance to use to annotate any related underlying resources such as Compute Engine VMs. The character '=' is not allowed to be used within the labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "networkConfig": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:NetworkConfig",
          "description": "Network configuration options. These are required when a private Data Fusion instance is to be created."
        },
        "options": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of additional options used to configure the behavior of Data Fusion instance."
        },
        "patchRevision": {
          "type": "string",
          "description": "Optional. Current patch revision of the Data Fusion."
        },
        "privateInstance": {
          "type": "boolean",
          "description": "Specifies whether the Data Fusion instance should be private. If set to true, all Data Fusion nodes will have private IP addresses and will not be able to access the public internet."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:datafusion%2Fv1beta1:InstanceType",
          "description": "Instance type."
        },
        "version": {
          "type": "string",
          "description": "Current version of Data Fusion."
        },
        "zone": {
          "type": "string",
          "description": "Name of the zone in which the Data Fusion instance will be created. Only DEVELOPER instances use this field."
        }
      },
      "requiredInputs": [
        "instanceId",
        "type"
      ]
    },
    "google-native:datafusion/v1beta1:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datafusion/v1beta1:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datafusion/v1beta1:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "instanceId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:datafusion/v1beta1:InstanceNamespaceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datafusion/v1beta1:InstanceNamespaceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datafusion/v1beta1:InstanceNamespaceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "instanceId",
        "location",
        "namespaceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId",
        "namespaceId"
      ]
    },
    "google-native:datalabeling/v1beta1:AnnotationSpecSet": {
      "description": "Creates an annotation spec set by providing a set of labels.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotationSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1AnnotationSpecResponse"
          },
          "description": "The array of AnnotationSpecs that you define when you create the AnnotationSpecSet. These are the possible labels for the labeling task."
        },
        "blockingResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of any related resources that are blocking changes to the annotation spec set."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description of the annotation specification set. The description can be up to 10,000 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The display name for AnnotationSpecSet that you define when you create it. Maximum of 64 characters."
        },
        "name": {
          "type": "string",
          "description": "The AnnotationSpecSet resource name in the following format: \"projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotationSpecs",
        "blockingResources",
        "description",
        "displayName",
        "name",
        "project"
      ],
      "inputProperties": {
        "annotationSpecs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1AnnotationSpec"
          },
          "description": "The array of AnnotationSpecs that you define when you create the AnnotationSpecSet. These are the possible labels for the labeling task."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description of the annotation specification set. The description can be up to 10,000 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The display name for AnnotationSpecSet that you define when you create it. Maximum of 64 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "annotationSpecs",
        "displayName"
      ]
    },
    "google-native:datalabeling/v1beta1:Dataset": {
      "description": "Creates dataset. If success return a Dataset resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "blockingResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of any related resources that are blocking changes to the dataset."
        },
        "createTime": {
          "type": "string",
          "description": "Time the dataset is created."
        },
        "dataItemCount": {
          "type": "string",
          "description": "The number of data items in the dataset."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description of the annotation specification set. The description can be up to 10000 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the dataset. Maximum of 64 characters."
        },
        "inputConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1InputConfigResponse"
          },
          "description": "This is populated with the original input configs where ImportData is called. It is available only after the clients import data to this dataset."
        },
        "lastMigrateTime": {
          "type": "string",
          "description": "Last time that the Dataset is migrated to AI Platform V2. If any of the AnnotatedDataset is migrated, the last_migration_time in Dataset is also updated."
        },
        "name": {
          "type": "string",
          "description": "Dataset resource name, format is: projects/{project_id}/datasets/{dataset_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "blockingResources",
        "createTime",
        "dataItemCount",
        "description",
        "displayName",
        "inputConfigs",
        "lastMigrateTime",
        "name",
        "project"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description of the annotation specification set. The description can be up to 10000 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the dataset. Maximum of 64 characters."
        },
        "lastMigrateTime": {
          "type": "string",
          "description": "Last time that the Dataset is migrated to AI Platform V2. If any of the AnnotatedDataset is migrated, the last_migration_time in Dataset is also updated."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:datalabeling/v1beta1:EvaluationJob": {
      "description": "Creates an evaluation job.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotationSpecSet": {
          "type": "string",
          "description": "Name of the AnnotationSpecSet describing all the labels that your machine learning model outputs. You must create this resource before you create an evaluation job and provide its name in the following format: \"projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}\""
        },
        "attempts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1AttemptResponse"
          },
          "description": "Every time the evaluation job runs and an error occurs, the failed attempt is appended to this array."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp of when this evaluation job was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the job. The description can be up to 25,000 characters long."
        },
        "evaluationJobConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobConfigResponse",
          "description": "Configuration details for the evaluation job."
        },
        "labelMissingGroundTruth": {
          "type": "boolean",
          "description": "Whether you want Data Labeling Service to provide ground truth labels for prediction input. If you want the service to assign human labelers to annotate your data, set this to `true`. If you want to provide your own ground truth labels in the evaluation job's BigQuery table, set this to `false`."
        },
        "modelVersion": {
          "type": "string",
          "description": "The [AI Platform Prediction model version](/ml-engine/docs/prediction-overview) to be evaluated. Prediction input and output is sampled from this model version. When creating an evaluation job, specify the model version in the following format: \"projects/{project_id}/models/{model_name}/versions/{version_name}\" There can only be one evaluation job per model version."
        },
        "name": {
          "type": "string",
          "description": "After you create a job, Data Labeling Service assigns a name to the job with the following format: \"projects/{project_id}/evaluationJobs/ {evaluation_job_id}\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schedule": {
          "type": "string",
          "description": "Describes the interval at which the job runs. This interval must be at least 1 day, and it is rounded to the nearest day. For example, if you specify a 50-hour interval, the job runs every 2 days. You can provide the schedule in [crontab format](/scheduler/docs/configuring/cron-job-schedules) or in an [English-like format](/appengine/docs/standard/python/config/cronref#schedule_format). Regardless of what you specify, the job will run at 10:00 AM UTC. Only the interval from this schedule is used, not the specific time of day."
        },
        "state": {
          "type": "string",
          "description": "Describes the current state of the job."
        }
      },
      "type": "object",
      "required": [
        "annotationSpecSet",
        "attempts",
        "createTime",
        "description",
        "evaluationJobConfig",
        "labelMissingGroundTruth",
        "modelVersion",
        "name",
        "project",
        "schedule",
        "state"
      ],
      "inputProperties": {
        "annotationSpecSet": {
          "type": "string",
          "description": "Name of the AnnotationSpecSet describing all the labels that your machine learning model outputs. You must create this resource before you create an evaluation job and provide its name in the following format: \"projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}\""
        },
        "description": {
          "type": "string",
          "description": "Description of the job. The description can be up to 25,000 characters long."
        },
        "evaluationJobConfig": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobConfig",
          "description": "Configuration details for the evaluation job."
        },
        "labelMissingGroundTruth": {
          "type": "boolean",
          "description": "Whether you want Data Labeling Service to provide ground truth labels for prediction input. If you want the service to assign human labelers to annotate your data, set this to `true`. If you want to provide your own ground truth labels in the evaluation job's BigQuery table, set this to `false`."
        },
        "modelVersion": {
          "type": "string",
          "description": "The [AI Platform Prediction model version](/ml-engine/docs/prediction-overview) to be evaluated. Prediction input and output is sampled from this model version. When creating an evaluation job, specify the model version in the following format: \"projects/{project_id}/models/{model_name}/versions/{version_name}\" There can only be one evaluation job per model version."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schedule": {
          "type": "string",
          "description": "Describes the interval at which the job runs. This interval must be at least 1 day, and it is rounded to the nearest day. For example, if you specify a 50-hour interval, the job runs every 2 days. You can provide the schedule in [crontab format](/scheduler/docs/configuring/cron-job-schedules) or in an [English-like format](/appengine/docs/standard/python/config/cronref#schedule_format). Regardless of what you specify, the job will run at 10:00 AM UTC. Only the interval from this schedule is used, not the specific time of day."
        }
      },
      "requiredInputs": [
        "annotationSpecSet",
        "description",
        "evaluationJobConfig",
        "labelMissingGroundTruth",
        "modelVersion",
        "schedule"
      ]
    },
    "google-native:datalabeling/v1beta1:FeedbackMessage": {
      "description": "Create a FeedbackMessage object.",
      "properties": {
        "annotatedDatasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "body": {
          "type": "string",
          "description": "String content of the feedback. Maximum of 10000 characters."
        },
        "createTime": {
          "type": "string",
          "description": "Create time."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "feedbackThreadId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "image": {
          "type": "string",
          "description": "The image storing this feedback if the feedback is an image representing operator's comments."
        },
        "name": {
          "type": "string",
          "description": "Name of the feedback message in a feedback thread. Format: 'project/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}/feedbackMessage/{feedback_message_id}'"
        },
        "operatorFeedbackMetadata": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1OperatorFeedbackMetadataResponse"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requesterFeedbackMetadata": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1RequesterFeedbackMetadataResponse"
        }
      },
      "type": "object",
      "required": [
        "annotatedDatasetId",
        "body",
        "createTime",
        "datasetId",
        "feedbackThreadId",
        "image",
        "name",
        "operatorFeedbackMetadata",
        "project",
        "requesterFeedbackMetadata"
      ],
      "inputProperties": {
        "annotatedDatasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "body": {
          "type": "string",
          "description": "String content of the feedback. Maximum of 10000 characters."
        },
        "createTime": {
          "type": "string",
          "description": "Create time."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "feedbackThreadId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "image": {
          "type": "string",
          "description": "The image storing this feedback if the feedback is an image representing operator's comments."
        },
        "name": {
          "type": "string",
          "description": "Name of the feedback message in a feedback thread. Format: 'project/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}/feedbackMessage/{feedback_message_id}'"
        },
        "operatorFeedbackMetadata": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1OperatorFeedbackMetadata"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requesterFeedbackMetadata": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1RequesterFeedbackMetadata"
        }
      },
      "requiredInputs": [
        "annotatedDatasetId",
        "datasetId",
        "feedbackThreadId"
      ]
    },
    "google-native:datalabeling/v1beta1:Instruction": {
      "description": "Creates an instruction for how data should be labeled.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "blockingResources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of any related resources that are blocking changes to the instruction."
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of instruction."
        },
        "csvInstruction": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1CsvInstructionResponse",
          "description": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file, such as for classification task. The CSV file should have exact two columns, in the following format: * The first column is labeled data, such as an image reference, text. * The second column is comma separated labels associated with data.",
          "deprecationMessage": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file, such as for classification task. The CSV file should have exact two columns, in the following format: * The first column is labeled data, such as an image reference, text. * The second column is comma separated labels associated with data."
        },
        "dataType": {
          "type": "string",
          "description": "The data type of this instruction."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description of the instruction. The description can be up to 10000 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the instruction. Maximum of 64 characters."
        },
        "name": {
          "type": "string",
          "description": "Instruction resource name, format: projects/{project_id}/instructions/{instruction_id}"
        },
        "pdfInstruction": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1PdfInstructionResponse",
          "description": "Instruction from a PDF document. The PDF should be in a Cloud Storage bucket."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of instruction."
        }
      },
      "type": "object",
      "required": [
        "blockingResources",
        "createTime",
        "csvInstruction",
        "dataType",
        "description",
        "displayName",
        "name",
        "pdfInstruction",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "csvInstruction": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1CsvInstruction",
          "description": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file, such as for classification task. The CSV file should have exact two columns, in the following format: * The first column is labeled data, such as an image reference, text. * The second column is comma separated labels associated with data.",
          "deprecationMessage": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file, such as for classification task. The CSV file should have exact two columns, in the following format: * The first column is labeled data, such as an image reference, text. * The second column is comma separated labels associated with data."
        },
        "dataType": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:InstructionDataType",
          "description": "The data type of this instruction."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description of the instruction. The description can be up to 10000 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the instruction. Maximum of 64 characters."
        },
        "pdfInstruction": {
          "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1PdfInstruction",
          "description": "Instruction from a PDF document. The PDF should be in a Cloud Storage bucket."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "dataType",
        "displayName"
      ]
    },
    "google-native:datalineage/v1:LineageEvent": {
      "description": "Creates a new lineage event.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "Optional. The end of the transformation which resulted in this lineage event. For streaming scenarios, it should be the end of the period from which the lineage is being reported."
        },
        "links": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1EventLinkResponse"
          },
          "description": "Optional. List of source-target pairs. Can't contain more than 100 tuples."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the lineage event. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}/lineageEvents/{lineage_event}`. Can be specified or auto-assigned. {lineage_event} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`"
        },
        "processId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is idempotent only if a `request_id` is provided."
        },
        "runId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The beginning of the transformation which resulted in this lineage event. For streaming scenarios, it should be the beginning of the period from which the lineage is being reported."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "links",
        "location",
        "name",
        "processId",
        "project",
        "runId",
        "startTime"
      ],
      "inputProperties": {
        "endTime": {
          "type": "string",
          "description": "Optional. The end of the transformation which resulted in this lineage event. For streaming scenarios, it should be the end of the period from which the lineage is being reported."
        },
        "links": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1EventLink"
          },
          "description": "Optional. List of source-target pairs. Can't contain more than 100 tuples."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the lineage event. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}/lineageEvents/{lineage_event}`. Can be specified or auto-assigned. {lineage_event} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`"
        },
        "processId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is idempotent only if a `request_id` is provided."
        },
        "runId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The beginning of the transformation which resulted in this lineage event. For streaming scenarios, it should be the beginning of the period from which the lineage is being reported."
        }
      },
      "requiredInputs": [
        "processId",
        "runId",
        "startTime"
      ]
    },
    "google-native:datalineage/v1:Process": {
      "description": "Creates a new process.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The attributes of the process. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the process). Up to 100 attributes are allowed."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A human-readable name you can set to display in a user interface. Must be not longer than 200 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&.`"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the lineage process. Format: `projects/{project}/locations/{location}/processes/{process}`. Can be specified or auto-assigned. {process} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`"
        },
        "origin": {
          "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1OriginResponse",
          "description": "Optional. The origin of this process and its runs and lineage events."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is idempotent only if a `request_id` is provided."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "displayName",
        "location",
        "name",
        "origin",
        "project"
      ],
      "inputProperties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The attributes of the process. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the process). Up to 100 attributes are allowed."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A human-readable name you can set to display in a user interface. Must be not longer than 200 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&.`"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the lineage process. Format: `projects/{project}/locations/{location}/processes/{process}`. Can be specified or auto-assigned. {process} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`"
        },
        "origin": {
          "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1Origin",
          "description": "Optional. The origin of this process and its runs and lineage events."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is idempotent only if a `request_id` is provided."
        }
      }
    },
    "google-native:datalineage/v1:Run": {
      "description": "Creates a new run.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&.`"
        },
        "endTime": {
          "type": "string",
          "description": "Optional. The timestamp of the end of the run."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`"
        },
        "processId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is idempotent only if a `request_id` is provided."
        },
        "startTime": {
          "type": "string",
          "description": "The timestamp of the start of the run."
        },
        "state": {
          "type": "string",
          "description": "The state of the run."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "displayName",
        "endTime",
        "location",
        "name",
        "processId",
        "project",
        "startTime",
        "state"
      ],
      "inputProperties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&.`"
        },
        "endTime": {
          "type": "string",
          "description": "Optional. The timestamp of the end of the run."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`"
        },
        "processId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is idempotent only if a `request_id` is provided."
        },
        "startTime": {
          "type": "string",
          "description": "The timestamp of the start of the run."
        },
        "state": {
          "$ref": "#/types/google-native:datalineage%2Fv1:RunState",
          "description": "The state of the run."
        }
      },
      "requiredInputs": [
        "processId",
        "startTime",
        "state"
      ]
    },
    "google-native:datamigration/v1:ConnectionProfile": {
      "description": "Creates a new connection profile in a given project and location.",
      "properties": {
        "alloydb": {
          "$ref": "#/types/google-native:datamigration%2Fv1:AlloyDbConnectionProfileResponse",
          "description": "An AlloyDB cluster connection profile."
        },
        "cloudsql": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlConnectionProfileResponse",
          "description": "A CloudSQL database connection profile."
        },
        "connectionProfileId": {
          "type": "string",
          "description": "Required. The connection profile identifier.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\"."
        },
        "displayName": {
          "type": "string",
          "description": "The connection profile display name."
        },
        "error": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StatusResponse",
          "description": "The error details in case of state FAILED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mysql": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MySqlConnectionProfileResponse",
          "description": "A MySQL database connection profile."
        },
        "name": {
          "type": "string",
          "description": "The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}."
        },
        "oracle": {
          "$ref": "#/types/google-native:datamigration%2Fv1:OracleConnectionProfileResponse",
          "description": "An Oracle database connection profile."
        },
        "postgresql": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PostgreSqlConnectionProfileResponse",
          "description": "A PostgreSQL database connection profile."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provider": {
          "type": "string",
          "description": "The database provider."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "skipValidation": {
          "type": "boolean",
          "description": "Optional. Create the connection profile without validating it. The default is false. Only supported for Oracle connection profiles."
        },
        "state": {
          "type": "string",
          "description": "The current connection profile state (e.g. DRAFT, READY, or FAILED)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was last updated. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\"."
        }
      },
      "type": "object",
      "required": [
        "alloydb",
        "cloudsql",
        "connectionProfileId",
        "createTime",
        "displayName",
        "error",
        "labels",
        "location",
        "mysql",
        "name",
        "oracle",
        "postgresql",
        "project",
        "provider",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "alloydb": {
          "$ref": "#/types/google-native:datamigration%2Fv1:AlloyDbConnectionProfile",
          "description": "An AlloyDB cluster connection profile."
        },
        "cloudsql": {
          "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlConnectionProfile",
          "description": "A CloudSQL database connection profile."
        },
        "connectionProfileId": {
          "type": "string",
          "description": "Required. The connection profile identifier.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The connection profile display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mysql": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MySqlConnectionProfile",
          "description": "A MySQL database connection profile."
        },
        "name": {
          "type": "string",
          "description": "The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}."
        },
        "oracle": {
          "$ref": "#/types/google-native:datamigration%2Fv1:OracleConnectionProfile",
          "description": "An Oracle database connection profile."
        },
        "postgresql": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PostgreSqlConnectionProfile",
          "description": "A PostgreSQL database connection profile."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provider": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ConnectionProfileProvider",
          "description": "The database provider."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "skipValidation": {
          "type": "boolean",
          "description": "Optional. Create the connection profile without validating it. The default is false. Only supported for Oracle connection profiles."
        },
        "state": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ConnectionProfileState",
          "description": "The current connection profile state (e.g. DRAFT, READY, or FAILED)."
        }
      },
      "requiredInputs": [
        "connectionProfileId"
      ]
    },
    "google-native:datamigration/v1:ConnectionProfileIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1:ConnectionProfileIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1:ConnectionProfileIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionProfileId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectionProfileId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionProfileId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectionProfileId"
      ]
    },
    "google-native:datamigration/v1:ConversionWorkspace": {
      "description": "Creates a new conversion workspace in a given project and location.",
      "properties": {
        "conversionWorkspaceId": {
          "type": "string",
          "description": "Required. The ID of the conversion workspace to create.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the workspace resource was created."
        },
        "destination": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseEngineInfoResponse",
          "description": "The destination engine details."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The display name for the workspace."
        },
        "globalSettings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A generic list of settings for the workspace. The settings are database pair dependant and can indicate default behavior for the mapping rules engine or turn on or off specific features. Such examples can be: convert_foreign_key_to_interleave=true, skip_triggers=false, ignore_non_table_synonyms=true"
        },
        "hasUncommittedChanges": {
          "type": "boolean",
          "description": "Whether the workspace has uncommitted changes (changes which were made after the workspace was committed)."
        },
        "latestCommitId": {
          "type": "string",
          "description": "The latest commit ID."
        },
        "latestCommitTime": {
          "type": "string",
          "description": "The timestamp when the workspace was committed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Full name of the workspace resource, in the form of: projects/{project}/locations/{location}/conversionWorkspaces/{conversion_workspace}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "source": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseEngineInfoResponse",
          "description": "The source engine details."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the workspace resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "conversionWorkspaceId",
        "createTime",
        "destination",
        "displayName",
        "globalSettings",
        "hasUncommittedChanges",
        "latestCommitId",
        "latestCommitTime",
        "location",
        "name",
        "project",
        "source",
        "updateTime"
      ],
      "inputProperties": {
        "conversionWorkspaceId": {
          "type": "string",
          "description": "Required. The ID of the conversion workspace to create.",
          "replaceOnChanges": true
        },
        "destination": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseEngineInfo",
          "description": "The destination engine details."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The display name for the workspace."
        },
        "globalSettings": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A generic list of settings for the workspace. The settings are database pair dependant and can indicate default behavior for the mapping rules engine or turn on or off specific features. Such examples can be: convert_foreign_key_to_interleave=true, skip_triggers=false, ignore_non_table_synonyms=true"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Full name of the workspace resource, in the form of: projects/{project}/locations/{location}/conversionWorkspaces/{conversion_workspace}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "source": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseEngineInfo",
          "description": "The source engine details."
        }
      },
      "requiredInputs": [
        "conversionWorkspaceId",
        "destination",
        "source"
      ]
    },
    "google-native:datamigration/v1:ConversionWorkspaceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1:ConversionWorkspaceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1:ConversionWorkspaceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "conversionWorkspaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "conversionWorkspaceId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "conversionWorkspaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "conversionWorkspaceId"
      ]
    },
    "google-native:datamigration/v1:MappingRule": {
      "description": "Creates a new mapping rule for a given conversion workspace.",
      "properties": {
        "conditionalColumnSetValue": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ConditionalColumnSetValueResponse",
          "description": "Optional. Rule to specify how the data contained in a column should be transformed (such as trimmed, rounded, etc) provided that the data meets certain criteria."
        },
        "conversionWorkspaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "convertRowidColumn": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ConvertRowIdToColumnResponse",
          "description": "Optional. Rule to specify how multiple tables should be converted with an additional rowid column."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A human readable name"
        },
        "entityMove": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EntityMoveResponse",
          "description": "Optional. Rule to specify how multiple entities should be relocated into a different schema."
        },
        "filter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MappingRuleFilterResponse",
          "description": "The rule filter"
        },
        "filterTableColumns": {
          "$ref": "#/types/google-native:datamigration%2Fv1:FilterTableColumnsResponse",
          "description": "Optional. Rule to specify the list of columns to include or exclude from a table."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mappingRuleId": {
          "type": "string",
          "description": "Required. The ID of the rule to create.",
          "replaceOnChanges": true
        },
        "multiColumnDataTypeChange": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MultiColumnDatatypeChangeResponse",
          "description": "Optional. Rule to specify how multiple columns should be converted to a different data type."
        },
        "multiEntityRename": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MultiEntityRenameResponse",
          "description": "Optional. Rule to specify how multiple entities should be renamed."
        },
        "name": {
          "type": "string",
          "description": "Full name of the mapping rule resource, in the form of: projects/{project}/locations/{location}/conversionWorkspaces/{set}/mappingRule/{rule}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp that the revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "The revision ID of the mapping rule. A new revision is committed whenever the mapping rule is changed in any way. The format is an 8-character hexadecimal string."
        },
        "ruleOrder": {
          "type": "string",
          "description": "The order in which the rule is applied. Lower order rules are applied before higher value rules so they may end up being overridden."
        },
        "ruleScope": {
          "type": "string",
          "description": "The rule scope"
        },
        "setTablePrimaryKey": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SetTablePrimaryKeyResponse",
          "description": "Optional. Rule to specify the primary key for a table"
        },
        "singleColumnChange": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SingleColumnChangeResponse",
          "description": "Optional. Rule to specify how a single column is converted."
        },
        "singleEntityRename": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SingleEntityRenameResponse",
          "description": "Optional. Rule to specify how a single entity should be renamed."
        },
        "singlePackageChange": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SinglePackageChangeResponse",
          "description": "Optional. Rule to specify how a single package is converted."
        },
        "sourceSqlChange": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceSqlChangeResponse",
          "description": "Optional. Rule to change the sql code for an entity, for example, function, procedure."
        },
        "state": {
          "type": "string",
          "description": "Optional. The mapping rule state"
        }
      },
      "type": "object",
      "required": [
        "conditionalColumnSetValue",
        "conversionWorkspaceId",
        "convertRowidColumn",
        "displayName",
        "entityMove",
        "filter",
        "filterTableColumns",
        "location",
        "mappingRuleId",
        "multiColumnDataTypeChange",
        "multiEntityRename",
        "name",
        "project",
        "revisionCreateTime",
        "revisionId",
        "ruleOrder",
        "ruleScope",
        "setTablePrimaryKey",
        "singleColumnChange",
        "singleEntityRename",
        "singlePackageChange",
        "sourceSqlChange",
        "state"
      ],
      "inputProperties": {
        "conditionalColumnSetValue": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ConditionalColumnSetValue",
          "description": "Optional. Rule to specify how the data contained in a column should be transformed (such as trimmed, rounded, etc) provided that the data meets certain criteria."
        },
        "conversionWorkspaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "convertRowidColumn": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ConvertRowIdToColumn",
          "description": "Optional. Rule to specify how multiple tables should be converted with an additional rowid column."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A human readable name"
        },
        "entityMove": {
          "$ref": "#/types/google-native:datamigration%2Fv1:EntityMove",
          "description": "Optional. Rule to specify how multiple entities should be relocated into a different schema."
        },
        "filter": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MappingRuleFilter",
          "description": "The rule filter"
        },
        "filterTableColumns": {
          "$ref": "#/types/google-native:datamigration%2Fv1:FilterTableColumns",
          "description": "Optional. Rule to specify the list of columns to include or exclude from a table."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mappingRuleId": {
          "type": "string",
          "description": "Required. The ID of the rule to create.",
          "replaceOnChanges": true
        },
        "multiColumnDataTypeChange": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MultiColumnDatatypeChange",
          "description": "Optional. Rule to specify how multiple columns should be converted to a different data type."
        },
        "multiEntityRename": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MultiEntityRename",
          "description": "Optional. Rule to specify how multiple entities should be renamed."
        },
        "name": {
          "type": "string",
          "description": "Full name of the mapping rule resource, in the form of: projects/{project}/locations/{location}/conversionWorkspaces/{set}/mappingRule/{rule}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "ruleOrder": {
          "type": "string",
          "description": "The order in which the rule is applied. Lower order rules are applied before higher value rules so they may end up being overridden."
        },
        "ruleScope": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MappingRuleRuleScope",
          "description": "The rule scope"
        },
        "setTablePrimaryKey": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SetTablePrimaryKey",
          "description": "Optional. Rule to specify the primary key for a table"
        },
        "singleColumnChange": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SingleColumnChange",
          "description": "Optional. Rule to specify how a single column is converted."
        },
        "singleEntityRename": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SingleEntityRename",
          "description": "Optional. Rule to specify how a single entity should be renamed."
        },
        "singlePackageChange": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SinglePackageChange",
          "description": "Optional. Rule to specify how a single package is converted."
        },
        "sourceSqlChange": {
          "$ref": "#/types/google-native:datamigration%2Fv1:SourceSqlChange",
          "description": "Optional. Rule to change the sql code for an entity, for example, function, procedure."
        },
        "state": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MappingRuleState",
          "description": "Optional. The mapping rule state"
        }
      },
      "requiredInputs": [
        "conversionWorkspaceId",
        "filter",
        "mappingRuleId",
        "ruleOrder",
        "ruleScope"
      ]
    },
    "google-native:datamigration/v1:MigrationJob": {
      "description": "Creates a new migration job in a given project and location.",
      "properties": {
        "cmekKeyName": {
          "type": "string",
          "description": "The CMEK (customer-managed encryption key) fully qualified key name used for the migration job. This field supports all migration jobs types except for: * Mysql to Mysql (use the cmek field in the cloudsql connection profile instead). * PostrgeSQL to PostgreSQL (use the cmek field in the cloudsql connection profile instead). * PostgreSQL to AlloyDB (use the kms_key_name field in the alloydb connection profile instead). Each Cloud CMEK key has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]"
        },
        "conversionWorkspace": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ConversionWorkspaceInfoResponse",
          "description": "The conversion workspace used by the migration."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the migration job resource was created. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\"."
        },
        "destination": {
          "type": "string",
          "description": "The resource name (URI) of the destination connection profile."
        },
        "destinationDatabase": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseTypeResponse",
          "description": "The database engine type and provider of the destination."
        },
        "displayName": {
          "type": "string",
          "description": "The migration job display name."
        },
        "dumpFlags": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DumpFlagsResponse",
          "description": "The initial dump flags. This field and the \"dump_path\" field are mutually exclusive."
        },
        "dumpPath": {
          "type": "string",
          "description": "The path to the dump file in Google Cloud Storage, in the format: (gs://[BUCKET_NAME]/[OBJECT_NAME]). This field and the \"dump_flags\" field are mutually exclusive."
        },
        "duration": {
          "type": "string",
          "description": "The duration of the migration job (in seconds). A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\"."
        },
        "endTime": {
          "type": "string",
          "description": "If the migration job is completed, the time when it was completed."
        },
        "error": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StatusResponse",
          "description": "The error details in case of state FAILED."
        },
        "filter": {
          "type": "string",
          "description": "This field can be used to select the entities to migrate as part of the migration job. It uses AIP-160 notation to select a subset of the entities configured on the associated conversion-workspace. This field should not be set on migration-jobs that are not associated with a conversion workspace."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for migration job to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationJobId": {
          "type": "string",
          "description": "Required. The ID of the instance to create.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name (URI) of this migration job resource, in the form of: projects/{project}/locations/{location}/migrationJobs/{migrationJob}."
        },
        "performanceConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PerformanceConfigResponse",
          "description": "Optional. Data dump parallelism settings used by the migration. Currently applicable only for MySQL to Cloud SQL for MySQL migrations only."
        },
        "phase": {
          "type": "string",
          "description": "The current migration job phase."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "reverseSshConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ReverseSshConnectivityResponse",
          "description": "The details needed to communicate to the source over Reverse SSH tunnel connectivity."
        },
        "source": {
          "type": "string",
          "description": "The resource name (URI) of the source connection profile."
        },
        "sourceDatabase": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseTypeResponse",
          "description": "The database engine type and provider of the source."
        },
        "state": {
          "type": "string",
          "description": "The current migration job state."
        },
        "staticIpConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StaticIpConnectivityResponse",
          "description": "static ip connectivity data (default, no additional details needed)."
        },
        "type": {
          "type": "string",
          "description": "The migration job type."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the migration job resource was last updated. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\"."
        },
        "vpcPeeringConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:VpcPeeringConnectivityResponse",
          "description": "The details of the VPC network that the source database is located in."
        }
      },
      "type": "object",
      "required": [
        "cmekKeyName",
        "conversionWorkspace",
        "createTime",
        "destination",
        "destinationDatabase",
        "displayName",
        "dumpFlags",
        "dumpPath",
        "duration",
        "endTime",
        "error",
        "filter",
        "labels",
        "location",
        "migrationJobId",
        "name",
        "performanceConfig",
        "phase",
        "project",
        "reverseSshConnectivity",
        "source",
        "sourceDatabase",
        "state",
        "staticIpConnectivity",
        "type",
        "updateTime",
        "vpcPeeringConnectivity"
      ],
      "inputProperties": {
        "cmekKeyName": {
          "type": "string",
          "description": "The CMEK (customer-managed encryption key) fully qualified key name used for the migration job. This field supports all migration jobs types except for: * Mysql to Mysql (use the cmek field in the cloudsql connection profile instead). * PostrgeSQL to PostgreSQL (use the cmek field in the cloudsql connection profile instead). * PostgreSQL to AlloyDB (use the kms_key_name field in the alloydb connection profile instead). Each Cloud CMEK key has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]"
        },
        "conversionWorkspace": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ConversionWorkspaceInfo",
          "description": "The conversion workspace used by the migration."
        },
        "destination": {
          "type": "string",
          "description": "The resource name (URI) of the destination connection profile."
        },
        "destinationDatabase": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseType",
          "description": "The database engine type and provider of the destination."
        },
        "displayName": {
          "type": "string",
          "description": "The migration job display name."
        },
        "dumpFlags": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DumpFlags",
          "description": "The initial dump flags. This field and the \"dump_path\" field are mutually exclusive."
        },
        "dumpPath": {
          "type": "string",
          "description": "The path to the dump file in Google Cloud Storage, in the format: (gs://[BUCKET_NAME]/[OBJECT_NAME]). This field and the \"dump_flags\" field are mutually exclusive."
        },
        "filter": {
          "type": "string",
          "description": "This field can be used to select the entities to migrate as part of the migration job. It uses AIP-160 notation to select a subset of the entities configured on the associated conversion-workspace. This field should not be set on migration-jobs that are not associated with a conversion workspace."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for migration job to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationJobId": {
          "type": "string",
          "description": "Required. The ID of the instance to create.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name (URI) of this migration job resource, in the form of: projects/{project}/locations/{location}/migrationJobs/{migrationJob}."
        },
        "performanceConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:PerformanceConfig",
          "description": "Optional. Data dump parallelism settings used by the migration. Currently applicable only for MySQL to Cloud SQL for MySQL migrations only."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "reverseSshConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:ReverseSshConnectivity",
          "description": "The details needed to communicate to the source over Reverse SSH tunnel connectivity."
        },
        "source": {
          "type": "string",
          "description": "The resource name (URI) of the source connection profile."
        },
        "sourceDatabase": {
          "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseType",
          "description": "The database engine type and provider of the source."
        },
        "state": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MigrationJobState",
          "description": "The current migration job state."
        },
        "staticIpConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StaticIpConnectivity",
          "description": "static ip connectivity data (default, no additional details needed)."
        },
        "type": {
          "$ref": "#/types/google-native:datamigration%2Fv1:MigrationJobType",
          "description": "The migration job type."
        },
        "vpcPeeringConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1:VpcPeeringConnectivity",
          "description": "The details of the VPC network that the source database is located in."
        }
      },
      "requiredInputs": [
        "destination",
        "migrationJobId",
        "source",
        "type"
      ]
    },
    "google-native:datamigration/v1:MigrationJobIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1:MigrationJobIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1:MigrationJobIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "migrationJobId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "migrationJobId"
      ]
    },
    "google-native:datamigration/v1:PrivateConnection": {
      "description": "Creates a new private connection in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The create time of the resource."
        },
        "displayName": {
          "type": "string",
          "description": "The private connection display name."
        },
        "error": {
          "$ref": "#/types/google-native:datamigration%2Fv1:StatusResponse",
          "description": "The error details in case of state FAILED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for private connections to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the resource."
        },
        "privateConnectionId": {
          "type": "string",
          "description": "Required. The private connection identifier.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "skipValidation": {
          "type": "boolean",
          "description": "Optional. If set to true, will skip validations."
        },
        "state": {
          "type": "string",
          "description": "The state of the private connection."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time of the resource."
        },
        "vpcPeeringConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:VpcPeeringConfigResponse",
          "description": "VPC peering configuration."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "error",
        "labels",
        "location",
        "name",
        "privateConnectionId",
        "project",
        "state",
        "updateTime",
        "vpcPeeringConfig"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The private connection display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for private connections to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the resource."
        },
        "privateConnectionId": {
          "type": "string",
          "description": "Required. The private connection identifier.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two requests with the same ID, then the second request is ignored. It is recommended to always set this value to a UUID. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "skipValidation": {
          "type": "boolean",
          "description": "Optional. If set to true, will skip validations."
        },
        "vpcPeeringConfig": {
          "$ref": "#/types/google-native:datamigration%2Fv1:VpcPeeringConfig",
          "description": "VPC peering configuration."
        }
      },
      "requiredInputs": [
        "privateConnectionId"
      ]
    },
    "google-native:datamigration/v1:PrivateConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1:PrivateConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1:PrivateConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "privateConnectionId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "privateConnectionId"
      ]
    },
    "google-native:datamigration/v1beta1:ConnectionProfile": {
      "description": "Creates a new connection profile in a given project and location.",
      "properties": {
        "cloudsql": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:CloudSqlConnectionProfileResponse",
          "description": "A CloudSQL database connection profile."
        },
        "connectionProfileId": {
          "type": "string",
          "description": "Required. The connection profile identifier.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\"."
        },
        "displayName": {
          "type": "string",
          "description": "The connection profile display name."
        },
        "error": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:StatusResponse",
          "description": "The error details in case of state FAILED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mysql": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:MySqlConnectionProfileResponse",
          "description": "A MySQL database connection profile."
        },
        "name": {
          "type": "string",
          "description": "The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provider": {
          "type": "string",
          "description": "The database provider."
        },
        "requestId": {
          "type": "string",
          "description": "A unique id used to identify the request. If the server receives two requests with the same id, then the second request will be ignored. It is recommended to always set this value to a UUID. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "state": {
          "type": "string",
          "description": "The current connection profile state (e.g. DRAFT, READY, or FAILED)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was last updated. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\"."
        }
      },
      "type": "object",
      "required": [
        "cloudsql",
        "connectionProfileId",
        "createTime",
        "displayName",
        "error",
        "labels",
        "location",
        "mysql",
        "name",
        "project",
        "provider",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "cloudsql": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:CloudSqlConnectionProfile",
          "description": "A CloudSQL database connection profile."
        },
        "connectionProfileId": {
          "type": "string",
          "description": "Required. The connection profile identifier.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The connection profile display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mysql": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:MySqlConnectionProfile",
          "description": "A MySQL database connection profile."
        },
        "name": {
          "type": "string",
          "description": "The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provider": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:ConnectionProfileProvider",
          "description": "The database provider."
        },
        "requestId": {
          "type": "string",
          "description": "A unique id used to identify the request. If the server receives two requests with the same id, then the second request will be ignored. It is recommended to always set this value to a UUID. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "state": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:ConnectionProfileState",
          "description": "The current connection profile state (e.g. DRAFT, READY, or FAILED)."
        }
      },
      "requiredInputs": [
        "connectionProfileId"
      ]
    },
    "google-native:datamigration/v1beta1:ConnectionProfileIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1beta1:ConnectionProfileIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1beta1:ConnectionProfileIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionProfileId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectionProfileId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectionProfileId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectionProfileId"
      ]
    },
    "google-native:datamigration/v1beta1:MigrationJob": {
      "description": "Creates a new migration job in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the migration job resource was created. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\"."
        },
        "destination": {
          "type": "string",
          "description": "The resource name (URI) of the destination connection profile."
        },
        "destinationDatabase": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:DatabaseTypeResponse",
          "description": "The database engine type and provider of the destination."
        },
        "displayName": {
          "type": "string",
          "description": "The migration job display name."
        },
        "dumpPath": {
          "type": "string",
          "description": "The path to the dump file in Google Cloud Storage, in the format: (gs://[BUCKET_NAME]/[OBJECT_NAME])."
        },
        "duration": {
          "type": "string",
          "description": "The duration of the migration job (in seconds). A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\"."
        },
        "endTime": {
          "type": "string",
          "description": "If the migration job is completed, the time when it was completed."
        },
        "error": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:StatusResponse",
          "description": "The error details in case of state FAILED."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for migration job to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationJobId": {
          "type": "string",
          "description": "Required. The ID of the instance to create.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name (URI) of this migration job resource, in the form of: projects/{project}/locations/{location}/migrationJobs/{migrationJob}."
        },
        "phase": {
          "type": "string",
          "description": "The current migration job phase."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique id used to identify the request. If the server receives two requests with the same id, then the second request will be ignored. It is recommended to always set this value to a UUID. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "reverseSshConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:ReverseSshConnectivityResponse",
          "description": "The details needed to communicate to the source over Reverse SSH tunnel connectivity."
        },
        "source": {
          "type": "string",
          "description": "The resource name (URI) of the source connection profile."
        },
        "sourceDatabase": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:DatabaseTypeResponse",
          "description": "The database engine type and provider of the source."
        },
        "state": {
          "type": "string",
          "description": "The current migration job state."
        },
        "staticIpConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:StaticIpConnectivityResponse",
          "description": "static ip connectivity data (default, no additional details needed)."
        },
        "type": {
          "type": "string",
          "description": "The migration job type."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the migration job resource was last updated. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\"."
        },
        "vpcPeeringConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:VpcPeeringConnectivityResponse",
          "description": "The details of the VPC network that the source database is located in."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "destination",
        "destinationDatabase",
        "displayName",
        "dumpPath",
        "duration",
        "endTime",
        "error",
        "labels",
        "location",
        "migrationJobId",
        "name",
        "phase",
        "project",
        "reverseSshConnectivity",
        "source",
        "sourceDatabase",
        "state",
        "staticIpConnectivity",
        "type",
        "updateTime",
        "vpcPeeringConnectivity"
      ],
      "inputProperties": {
        "destination": {
          "type": "string",
          "description": "The resource name (URI) of the destination connection profile."
        },
        "destinationDatabase": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:DatabaseType",
          "description": "The database engine type and provider of the destination."
        },
        "displayName": {
          "type": "string",
          "description": "The migration job display name."
        },
        "dumpPath": {
          "type": "string",
          "description": "The path to the dump file in Google Cloud Storage, in the format: (gs://[BUCKET_NAME]/[OBJECT_NAME])."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The resource labels for migration job to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationJobId": {
          "type": "string",
          "description": "Required. The ID of the instance to create.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name (URI) of this migration job resource, in the form of: projects/{project}/locations/{location}/migrationJobs/{migrationJob}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique id used to identify the request. If the server receives two requests with the same id, then the second request will be ignored. It is recommended to always set this value to a UUID. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "reverseSshConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:ReverseSshConnectivity",
          "description": "The details needed to communicate to the source over Reverse SSH tunnel connectivity."
        },
        "source": {
          "type": "string",
          "description": "The resource name (URI) of the source connection profile."
        },
        "sourceDatabase": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:DatabaseType",
          "description": "The database engine type and provider of the source."
        },
        "state": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:MigrationJobState",
          "description": "The current migration job state."
        },
        "staticIpConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:StaticIpConnectivity",
          "description": "static ip connectivity data (default, no additional details needed)."
        },
        "type": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:MigrationJobType",
          "description": "The migration job type."
        },
        "vpcPeeringConnectivity": {
          "$ref": "#/types/google-native:datamigration%2Fv1beta1:VpcPeeringConnectivity",
          "description": "The details of the VPC network that the source database is located in."
        }
      },
      "requiredInputs": [
        "destination",
        "migrationJobId",
        "source",
        "type"
      ]
    },
    "google-native:datamigration/v1beta1:MigrationJobIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1beta1:MigrationJobIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:datamigration/v1beta1:MigrationJobIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "migrationJobId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "migrationJobId"
      ]
    },
    "google-native:datapipelines/v1:Pipeline": {
      "description": "Creates a pipeline. For a batch pipeline, you can pass scheduler information. Data Pipelines uses the scheduler information to create an internal scheduler that runs jobs periodically. If the internal scheduler is not configured, you can use RunPipeline to run jobs.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Immutable. The timestamp when the pipeline was initially created. Set by the Data Pipelines service."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the pipeline. It can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), and underscores (_)."
        },
        "jobCount": {
          "type": "integer",
          "description": "Number of jobs."
        },
        "lastUpdateTime": {
          "type": "string",
          "description": "Immutable. The timestamp when the pipeline was last modified. Set by the Data Pipelines service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The pipeline name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/pipelines/PIPELINE_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), and periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects). * `LOCATION_ID` is the canonical ID for the pipeline's location. The list of available locations can be obtained by calling `google.cloud.location.Locations.ListLocations`. Note that the Data Pipelines service is not available in all regions. It depends on Cloud Scheduler, an App Engine application, so it's only available in [App Engine regions](https://cloud.google.com/about/locations#region). * `PIPELINE_ID` is the ID of the pipeline. Must be unique for the selected project and location."
        },
        "pipelineSources": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Immutable. The sources of the pipeline (for example, Dataplex). The keys and values are set by the corresponding sources during pipeline creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scheduleInfo": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1ScheduleSpecResponse",
          "description": "Internal scheduling information for a pipeline. If this information is provided, periodic jobs will be created per the schedule. If not, users are responsible for creating jobs externally."
        },
        "schedulerServiceAccountEmail": {
          "type": "string",
          "description": "Optional. A service account email to be used with the Cloud Scheduler job. If not specified, the default compute engine service account will be used."
        },
        "state": {
          "type": "string",
          "description": "The state of the pipeline. When the pipeline is created, the state is set to 'PIPELINE_STATE_ACTIVE' by default. State changes can be requested by setting the state to stopping, paused, or resuming. State cannot be changed through UpdatePipeline requests."
        },
        "type": {
          "type": "string",
          "description": "The type of the pipeline. This field affects the scheduling of the pipeline and the type of metrics to show for the pipeline."
        },
        "workload": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1WorkloadResponse",
          "description": "Workload information for creating new jobs."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "jobCount",
        "lastUpdateTime",
        "location",
        "name",
        "pipelineSources",
        "project",
        "scheduleInfo",
        "schedulerServiceAccountEmail",
        "state",
        "type",
        "workload"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the pipeline. It can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), and underscores (_)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The pipeline name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/pipelines/PIPELINE_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), and periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects). * `LOCATION_ID` is the canonical ID for the pipeline's location. The list of available locations can be obtained by calling `google.cloud.location.Locations.ListLocations`. Note that the Data Pipelines service is not available in all regions. It depends on Cloud Scheduler, an App Engine application, so it's only available in [App Engine regions](https://cloud.google.com/about/locations#region). * `PIPELINE_ID` is the ID of the pipeline. Must be unique for the selected project and location."
        },
        "pipelineSources": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Immutable. The sources of the pipeline (for example, Dataplex). The keys and values are set by the corresponding sources during pipeline creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scheduleInfo": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1ScheduleSpec",
          "description": "Internal scheduling information for a pipeline. If this information is provided, periodic jobs will be created per the schedule. If not, users are responsible for creating jobs externally."
        },
        "schedulerServiceAccountEmail": {
          "type": "string",
          "description": "Optional. A service account email to be used with the Cloud Scheduler job. If not specified, the default compute engine service account will be used."
        },
        "state": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:PipelineState",
          "description": "The state of the pipeline. When the pipeline is created, the state is set to 'PIPELINE_STATE_ACTIVE' by default. State changes can be requested by setting the state to stopping, paused, or resuming. State cannot be changed through UpdatePipeline requests."
        },
        "type": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:PipelineType",
          "description": "The type of the pipeline. This field affects the scheduling of the pipeline and the type of metrics to show for the pipeline."
        },
        "workload": {
          "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1Workload",
          "description": "Workload information for creating new jobs."
        }
      },
      "requiredInputs": [
        "displayName",
        "state",
        "type"
      ]
    },
    "google-native:dataplex/v1:AspectTypeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:AspectTypeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:AspectTypeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "aspectTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "aspectTypeId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "aspectTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "aspectTypeId"
      ]
    },
    "google-native:dataplex/v1:Asset": {
      "description": "Creates an asset resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "assetId": {
          "type": "string",
          "description": "Required. Asset identifier. This ID will be used to generate names such as table names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique within the zone.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time when the asset was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the asset."
        },
        "discoverySpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoverySpecResponse",
          "description": "Optional. Specification of the discovery feature applied to data referenced by this asset. When this spec is left unset, the asset will use the spec set on the parent zone."
        },
        "discoveryStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoveryStatusResponse",
          "description": "Status of the discovery feature applied to data referenced by this asset."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the asset."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the asset, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetResourceSpecResponse",
          "description": "Specification of the resource that is referenced by this asset."
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetResourceStatusResponse",
          "description": "Status of the resource referenced by this asset."
        },
        "securityStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetSecurityStatusResponse",
          "description": "Status of the security policy applied to resource referenced by this asset."
        },
        "state": {
          "type": "string",
          "description": "Current state of the asset."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the asset. This ID will be different if the asset is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the asset was last updated."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "assetId",
        "createTime",
        "description",
        "discoverySpec",
        "discoveryStatus",
        "displayName",
        "labels",
        "lakeId",
        "location",
        "name",
        "project",
        "resourceSpec",
        "resourceStatus",
        "securityStatus",
        "state",
        "uid",
        "updateTime",
        "zone"
      ],
      "inputProperties": {
        "assetId": {
          "type": "string",
          "description": "Required. Asset identifier. This ID will be used to generate names such as table names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique within the zone.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the asset."
        },
        "discoverySpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoverySpec",
          "description": "Optional. Specification of the discovery feature applied to data referenced by this asset. When this spec is left unset, the asset will use the spec set on the parent zone."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the asset."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetResourceSpec",
          "description": "Specification of the resource that is referenced by this asset."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "assetId",
        "lakeId",
        "resourceSpec"
      ]
    },
    "google-native:dataplex/v1:Attribute": {
      "description": "Create a DataAttribute resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attributeCount": {
          "type": "integer",
          "description": "The number of child attributes present for this attribute."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the DataAttribute was created."
        },
        "dataAccessSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataAccessSpecResponse",
          "description": "Optional. Specified when applied to data stored on the resource (eg: rows, columns in BigQuery Tables)."
        },
        "dataAttributeId": {
          "type": "string",
          "description": "Required. DataAttribute identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the DataTaxonomy.",
          "replaceOnChanges": true
        },
        "dataTaxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the DataAttribute."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the DataAttribute."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the dataAttribute, of the form: projects/{project_number}/locations/{location_id}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}."
        },
        "parentId": {
          "type": "string",
          "description": "Optional. The ID of the parent DataAttribute resource, should belong to the same data taxonomy. Circular dependency in parent chain is not valid. Maximum depth of the hierarchy allowed is 4. a -> b -> c -> d -> e, depth = 4"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceAccessSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ResourceAccessSpecResponse",
          "description": "Optional. Specified when applied to a resource (eg: Cloud Storage bucket, BigQuery dataset, BigQuery table)."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the DataAttribute. This ID will be different if the DataAttribute is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the DataAttribute was last updated."
        }
      },
      "type": "object",
      "required": [
        "attributeCount",
        "createTime",
        "dataAccessSpec",
        "dataAttributeId",
        "dataTaxonomyId",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "name",
        "parentId",
        "project",
        "resourceAccessSpec",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "dataAccessSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataAccessSpec",
          "description": "Optional. Specified when applied to data stored on the resource (eg: rows, columns in BigQuery Tables)."
        },
        "dataAttributeId": {
          "type": "string",
          "description": "Required. DataAttribute identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the DataTaxonomy.",
          "replaceOnChanges": true
        },
        "dataTaxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the DataAttribute."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the DataAttribute."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "parentId": {
          "type": "string",
          "description": "Optional. The ID of the parent DataAttribute resource, should belong to the same data taxonomy. Circular dependency in parent chain is not valid. Maximum depth of the hierarchy allowed is 4. a -> b -> c -> d -> e, depth = 4"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceAccessSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ResourceAccessSpec",
          "description": "Optional. Specified when applied to a resource (eg: Cloud Storage bucket, BigQuery dataset, BigQuery table)."
        }
      },
      "requiredInputs": [
        "dataAttributeId",
        "dataTaxonomyId"
      ]
    },
    "google-native:dataplex/v1:Content": {
      "description": "Create a content.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Content creation time."
        },
        "dataText": {
          "type": "string",
          "description": "Content data in string format."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the content."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the content."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the content, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}"
        },
        "notebook": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentNotebookResponse",
          "description": "Notebook related configurations."
        },
        "path": {
          "type": "string",
          "description": "The path for the Content file, represented as directory structure. Unique within a lake. Limited to alphanumerics, hyphens, underscores, dots and slashes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sqlScript": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentSqlScriptResponse",
          "description": "Sql Script related configurations."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the content. This ID will be different if the content is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the content was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dataText",
        "description",
        "labels",
        "lakeId",
        "location",
        "name",
        "notebook",
        "path",
        "project",
        "sqlScript",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "dataText": {
          "type": "string",
          "description": "Content data in string format."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the content."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the content."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notebook": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentNotebook",
          "description": "Notebook related configurations."
        },
        "path": {
          "type": "string",
          "description": "The path for the Content file, represented as directory structure. Unique within a lake. Limited to alphanumerics, hyphens, underscores, dots and slashes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sqlScript": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentSqlScript",
          "description": "Sql Script related configurations."
        }
      },
      "requiredInputs": [
        "dataText",
        "lakeId",
        "path"
      ]
    },
    "google-native:dataplex/v1:Contentitem": {
      "description": "Create a content.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Content creation time."
        },
        "dataText": {
          "type": "string",
          "description": "Content data in string format."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the content."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the content."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the content, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}"
        },
        "notebook": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentNotebookResponse",
          "description": "Notebook related configurations."
        },
        "path": {
          "type": "string",
          "description": "The path for the Content file, represented as directory structure. Unique within a lake. Limited to alphanumerics, hyphens, underscores, dots and slashes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sqlScript": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentSqlScriptResponse",
          "description": "Sql Script related configurations."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the content. This ID will be different if the content is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the content was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dataText",
        "description",
        "labels",
        "lakeId",
        "location",
        "name",
        "notebook",
        "path",
        "project",
        "sqlScript",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "dataText": {
          "type": "string",
          "description": "Content data in string format."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the content."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the content."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notebook": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentNotebook",
          "description": "Notebook related configurations."
        },
        "path": {
          "type": "string",
          "description": "The path for the Content file, represented as directory structure. Unique within a lake. Limited to alphanumerics, hyphens, underscores, dots and slashes."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sqlScript": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentSqlScript",
          "description": "Sql Script related configurations."
        }
      },
      "requiredInputs": [
        "dataText",
        "lakeId",
        "path"
      ]
    },
    "google-native:dataplex/v1:DataAttributeBinding": {
      "description": "Create a DataAttributeBinding resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of attributes to be associated with the resource, provided in the form: projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}"
        },
        "createTime": {
          "type": "string",
          "description": "The time when the DataAttributeBinding was created."
        },
        "dataAttributeBindingId": {
          "type": "string",
          "description": "Required. DataAttributeBinding identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the Location.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the DataAttributeBinding."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Etags must be used when calling the DeleteDataAttributeBinding and the UpdateDataAttributeBinding method."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the DataAttributeBinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the Data Attribute Binding, of the form: projects/{project_number}/locations/{location}/dataAttributeBindings/{data_attribute_binding_id}"
        },
        "paths": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataAttributeBindingPathResponse"
          },
          "description": "Optional. The list of paths for items within the associated resource (eg. columns and partitions within a table) along with attribute bindings."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "description": "Optional. Immutable. The resource name of the resource that is associated to attributes. Presently, only entity resource is supported in the form: projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/entities/{entity_id} Must belong in the same project and region as the attribute binding, and there can only exist one active binding for a resource."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the DataAttributeBinding. This ID will be different if the DataAttributeBinding is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the DataAttributeBinding was last updated."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "createTime",
        "dataAttributeBindingId",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "name",
        "paths",
        "project",
        "resource",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of attributes to be associated with the resource, provided in the form: projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}"
        },
        "dataAttributeBindingId": {
          "type": "string",
          "description": "Required. DataAttributeBinding identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the Location.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the DataAttributeBinding."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Etags must be used when calling the DeleteDataAttributeBinding and the UpdateDataAttributeBinding method."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the DataAttributeBinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "paths": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataAttributeBindingPath"
          },
          "description": "Optional. The list of paths for items within the associated resource (eg. columns and partitions within a table) along with attribute bindings."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "description": "Optional. Immutable. The resource name of the resource that is associated to attributes. Presently, only entity resource is supported in the form: projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/entities/{entity_id} Must belong in the same project and region as the attribute binding, and there can only exist one active binding for a resource."
        }
      },
      "requiredInputs": [
        "dataAttributeBindingId"
      ]
    },
    "google-native:dataplex/v1:DataAttributeBindingIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:DataAttributeBindingIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:DataAttributeBindingIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "dataAttributeBindingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "dataAttributeBindingId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "dataAttributeBindingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "dataAttributeBindingId"
      ]
    },
    "google-native:dataplex/v1:DataScan": {
      "description": "Creates a DataScan resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the scan was created."
        },
        "data": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataSourceResponse",
          "description": "The data source for DataScan."
        },
        "dataProfileResult": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultResponse",
          "description": "The result of the data profile scan."
        },
        "dataProfileSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecResponse",
          "description": "DataProfileScan related setting."
        },
        "dataQualityResult": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityResultResponse",
          "description": "The result of the data quality scan."
        },
        "dataQualitySpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualitySpecResponse",
          "description": "DataQualityScan related setting."
        },
        "dataScanId": {
          "type": "string",
          "description": "Required. DataScan identifier. Must contain only lowercase letters, numbers and hyphens. Must start with a letter. Must end with a number or a letter. Must be between 1-63 characters. Must be unique within the customer project / location.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the scan. Must be between 1-1024 characters."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name. Must be between 1-256 characters."
        },
        "executionSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataScanExecutionSpecResponse",
          "description": "Optional. DataScan execution settings.If not specified, the fields in it will use their default values."
        },
        "executionStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataScanExecutionStatusResponse",
          "description": "Status of the data scan execution."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the scan."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the scan, of the form: projects/{project}/locations/{location_id}/dataScans/{datascan_id}, where project refers to a project_id or project_number and location_id refers to a GCP region."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "Current state of the DataScan."
        },
        "type": {
          "type": "string",
          "description": "The type of DataScan."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the scan. This ID will be different if the scan is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the scan was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "data",
        "dataProfileResult",
        "dataProfileSpec",
        "dataQualityResult",
        "dataQualitySpec",
        "dataScanId",
        "description",
        "displayName",
        "executionSpec",
        "executionStatus",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "type",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "data": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataSource",
          "description": "The data source for DataScan."
        },
        "dataProfileSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpec",
          "description": "DataProfileScan related setting."
        },
        "dataQualitySpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualitySpec",
          "description": "DataQualityScan related setting."
        },
        "dataScanId": {
          "type": "string",
          "description": "Required. DataScan identifier. Must contain only lowercase letters, numbers and hyphens. Must start with a letter. Must end with a number or a letter. Must be between 1-63 characters. Must be unique within the customer project / location.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the scan. Must be between 1-1024 characters."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name. Must be between 1-256 characters."
        },
        "executionSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataScanExecutionSpec",
          "description": "Optional. DataScan execution settings.If not specified, the fields in it will use their default values."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the scan."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "data",
        "dataScanId"
      ]
    },
    "google-native:dataplex/v1:DataScanIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:DataScanIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:DataScanIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "dataScanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "dataScanId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "dataScanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "dataScanId"
      ]
    },
    "google-native:dataplex/v1:DataTaxonomy": {
      "description": "Create a DataTaxonomy resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attributeCount": {
          "type": "integer",
          "description": "The number of attributes in the DataTaxonomy."
        },
        "classCount": {
          "type": "integer",
          "description": "The number of classes in the DataTaxonomy."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the DataTaxonomy was created."
        },
        "dataTaxonomyId": {
          "type": "string",
          "description": "Required. DataTaxonomy identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the Project.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the DataTaxonomy."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the DataTaxonomy."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the DataTaxonomy, of the form: projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the dataTaxonomy. This ID will be different if the DataTaxonomy is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the DataTaxonomy was last updated."
        }
      },
      "type": "object",
      "required": [
        "attributeCount",
        "classCount",
        "createTime",
        "dataTaxonomyId",
        "description",
        "displayName",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "dataTaxonomyId": {
          "type": "string",
          "description": "Required. DataTaxonomy identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the Project.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the DataTaxonomy."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the DataTaxonomy."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "dataTaxonomyId"
      ]
    },
    "google-native:dataplex/v1:DataTaxonomyAttributeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:DataTaxonomyAttributeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:DataTaxonomyAttributeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "attributeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "dataTaxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "attributeId",
        "auditConfigs",
        "bindings",
        "dataTaxonomyId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "attributeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "dataTaxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "attributeId",
        "dataTaxonomyId"
      ]
    },
    "google-native:dataplex/v1:DataTaxonomyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:DataTaxonomyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:DataTaxonomyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "dataTaxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "dataTaxonomyId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "dataTaxonomyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "dataTaxonomyId"
      ]
    },
    "google-native:dataplex/v1:Entity": {
      "description": "Create a metadata entity.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "access": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageAccessResponse",
          "description": "Identifies the access mechanism to the entity. Not user settable."
        },
        "asset": {
          "type": "string",
          "description": "Immutable. The ID of the asset associated with the storage location containing the entity data. The entity must be with in the same zone with the asset."
        },
        "catalogEntry": {
          "type": "string",
          "description": "The name of the associated Data Catalog entry."
        },
        "compatibility": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EntityCompatibilityStatusResponse",
          "description": "Metadata stores that the entity is compatible with."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the entity was created."
        },
        "dataPath": {
          "type": "string",
          "description": "Immutable. The storage path of the entity data. For Cloud Storage data, this is the fully-qualified path to the entity, such as gs://bucket/path/to/data. For BigQuery data, this is the name of the table resource, such as projects/project_id/datasets/dataset_id/tables/table_id."
        },
        "dataPathPattern": {
          "type": "string",
          "description": "Optional. The set of items within the data path constituting the data in the entity, represented as a glob path. Example: gs://bucket/path/to/data/**/*.csv."
        },
        "description": {
          "type": "string",
          "description": "Optional. User friendly longer description text. Must be shorter than or equal to 1024 characters."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name must be shorter than or equal to 256 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag associated with the entity, which can be retrieved with a GetEntity request. Required for update and delete requests."
        },
        "format": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatResponse",
          "description": "Identifies the storage format of the entity data. It does not apply to entities with data stored in BigQuery."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the entity, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schema": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaResponse",
          "description": "The description of the data structure and layout. The schema is not included in list responses. It is only included in SCHEMA and FULL entity views of a GetEntity response."
        },
        "system": {
          "type": "string",
          "description": "Immutable. Identifies the storage system of the entity data."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of entity."
        },
        "uid": {
          "type": "string",
          "description": "System generated unique ID for the Entity. This ID will be different if the Entity is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the entity was last updated."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "access",
        "asset",
        "catalogEntry",
        "compatibility",
        "createTime",
        "dataPath",
        "dataPathPattern",
        "description",
        "displayName",
        "etag",
        "format",
        "lakeId",
        "location",
        "name",
        "project",
        "schema",
        "system",
        "type",
        "uid",
        "updateTime",
        "zone"
      ],
      "inputProperties": {
        "asset": {
          "type": "string",
          "description": "Immutable. The ID of the asset associated with the storage location containing the entity data. The entity must be with in the same zone with the asset."
        },
        "dataPath": {
          "type": "string",
          "description": "Immutable. The storage path of the entity data. For Cloud Storage data, this is the fully-qualified path to the entity, such as gs://bucket/path/to/data. For BigQuery data, this is the name of the table resource, such as projects/project_id/datasets/dataset_id/tables/table_id."
        },
        "dataPathPattern": {
          "type": "string",
          "description": "Optional. The set of items within the data path constituting the data in the entity, represented as a glob path. Example: gs://bucket/path/to/data/**/*.csv."
        },
        "description": {
          "type": "string",
          "description": "Optional. User friendly longer description text. Must be shorter than or equal to 1024 characters."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Display name must be shorter than or equal to 256 characters."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag associated with the entity, which can be retrieved with a GetEntity request. Required for update and delete requests."
        },
        "format": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormat",
          "description": "Identifies the storage format of the entity data. It does not apply to entities with data stored in BigQuery."
        },
        "id": {
          "type": "string",
          "description": "A user-provided entity ID. It is mutable, and will be used as the published table name. Specifying a new ID in an update entity request will override the existing value. The ID must contain only letters (a-z, A-Z), numbers (0-9), and underscores, and consist of 256 or fewer characters."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schema": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1Schema",
          "description": "The description of the data structure and layout. The schema is not included in list responses. It is only included in SCHEMA and FULL entity views of a GetEntity response."
        },
        "system": {
          "$ref": "#/types/google-native:dataplex%2Fv1:EntitySystem",
          "description": "Immutable. Identifies the storage system of the entity data."
        },
        "type": {
          "$ref": "#/types/google-native:dataplex%2Fv1:EntityType",
          "description": "Immutable. The type of entity."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "asset",
        "dataPath",
        "format",
        "id",
        "lakeId",
        "schema",
        "system",
        "type"
      ]
    },
    "google-native:dataplex/v1:EntryGroupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:EntryGroupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:EntryGroupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "entryGroupId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "entryGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "entryGroupId"
      ]
    },
    "google-native:dataplex/v1:EntryTypeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:EntryTypeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:EntryTypeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "entryTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "entryTypeId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "entryTypeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "entryTypeId"
      ]
    },
    "google-native:dataplex/v1:Environment": {
      "description": "Create an environment resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Environment creation time."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the environment."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "endpoints": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentEndpointsResponse",
          "description": "URI Endpoints to access sessions associated with the Environment."
        },
        "environmentId": {
          "type": "string",
          "description": "Required. Environment identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the lake.",
          "replaceOnChanges": true
        },
        "infrastructureSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecResponse",
          "description": "Infrastructure specification for the Environment."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the environment."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the environment, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentSessionSpecResponse",
          "description": "Optional. Configuration for sessions created for this environment."
        },
        "sessionStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentSessionStatusResponse",
          "description": "Status of sessions created for this environment."
        },
        "state": {
          "type": "string",
          "description": "Current state of the environment."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the environment. This ID will be different if the environment is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the environment was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "endpoints",
        "environmentId",
        "infrastructureSpec",
        "labels",
        "lakeId",
        "location",
        "name",
        "project",
        "sessionSpec",
        "sessionStatus",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the environment."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "environmentId": {
          "type": "string",
          "description": "Required. Environment identifier. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the lake.",
          "replaceOnChanges": true
        },
        "infrastructureSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentInfrastructureSpec",
          "description": "Infrastructure specification for the Environment."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the environment."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentSessionSpec",
          "description": "Optional. Configuration for sessions created for this environment."
        }
      },
      "requiredInputs": [
        "environmentId",
        "infrastructureSpec",
        "lakeId"
      ]
    },
    "google-native:dataplex/v1:GovernanceRuleIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:GovernanceRuleIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:GovernanceRuleIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "governanceRuleId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "governanceRuleId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "governanceRuleId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "governanceRuleId"
      ]
    },
    "google-native:dataplex/v1:Lake": {
      "description": "Creates a lake resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "assetStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetStatusResponse",
          "description": "Aggregated status of the underlying assets of the lake."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the lake was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the lake."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the lake."
        },
        "lakeId": {
          "type": "string",
          "description": "Required. Lake identifier. This ID will be used to generate names such as database and dataset names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique within the customer project / location.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metastore": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1LakeMetastoreResponse",
          "description": "Optional. Settings to manage lake and Dataproc Metastore service instance association."
        },
        "metastoreStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1LakeMetastoreStatusResponse",
          "description": "Metastore status of the lake."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the lake, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service account associated with this lake. This service account must be authorized to access or operate on resources managed by the lake."
        },
        "state": {
          "type": "string",
          "description": "Current state of the lake."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the lake. This ID will be different if the lake is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the lake was last updated."
        }
      },
      "type": "object",
      "required": [
        "assetStatus",
        "createTime",
        "description",
        "displayName",
        "labels",
        "lakeId",
        "location",
        "metastore",
        "metastoreStatus",
        "name",
        "project",
        "serviceAccount",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the lake."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the lake."
        },
        "lakeId": {
          "type": "string",
          "description": "Required. Lake identifier. This ID will be used to generate names such as database and dataset names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique within the customer project / location.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metastore": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1LakeMetastore",
          "description": "Optional. Settings to manage lake and Dataproc Metastore service instance association."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "lakeId"
      ]
    },
    "google-native:dataplex/v1:LakeAssetIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeAssetIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeAssetIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "assetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "assetId",
        "auditConfigs",
        "bindings",
        "etag",
        "lakeId",
        "location",
        "project",
        "version",
        "zone"
      ],
      "inputProperties": {
        "assetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "assetId",
        "lakeId"
      ]
    },
    "google-native:dataplex/v1:LakeContentIamBinding": {
      "description": "Sets the access control policy on the specified contentitem resource. Replaces any existing policy.Caller must have Google IAM dataplex.content.setIamPolicy permission on the resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeContentIamMember": {
      "description": "Sets the access control policy on the specified contentitem resource. Replaces any existing policy.Caller must have Google IAM dataplex.content.setIamPolicy permission on the resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeContentIamPolicy": {
      "description": "Sets the access control policy on the specified contentitem resource. Replaces any existing policy.Caller must have Google IAM dataplex.content.setIamPolicy permission on the resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "contentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "contentId",
        "etag",
        "lakeId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "contentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "contentId",
        "lakeId"
      ]
    },
    "google-native:dataplex/v1:LakeContentitemIamBinding": {
      "description": "Sets the access control policy on the specified contentitem resource. Replaces any existing policy.Caller must have Google IAM dataplex.content.setIamPolicy permission on the resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeContentitemIamMember": {
      "description": "Sets the access control policy on the specified contentitem resource. Replaces any existing policy.Caller must have Google IAM dataplex.content.setIamPolicy permission on the resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeContentitemIamPolicy": {
      "description": "Sets the access control policy on the specified contentitem resource. Replaces any existing policy.Caller must have Google IAM dataplex.content.setIamPolicy permission on the resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "contentitemId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "contentitemId",
        "etag",
        "lakeId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "contentitemId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "contentitemId",
        "lakeId"
      ]
    },
    "google-native:dataplex/v1:LakeEnvironmentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeEnvironmentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeEnvironmentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "environmentId",
        "etag",
        "lakeId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "environmentId",
        "lakeId"
      ]
    },
    "google-native:dataplex/v1:LakeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "lakeId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "lakeId"
      ]
    },
    "google-native:dataplex/v1:LakeTaskIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeTaskIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeTaskIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taskId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "lakeId",
        "location",
        "project",
        "taskId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taskId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "lakeId",
        "taskId"
      ]
    },
    "google-native:dataplex/v1:LakeZoneIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeZoneIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataplex/v1:LakeZoneIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "lakeId",
        "location",
        "project",
        "version",
        "zone"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "lakeId"
      ]
    },
    "google-native:dataplex/v1:Partition": {
      "description": "Create a metadata partition.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "entityId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag for this partition."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Partition values used in the HTTP URL must be double encoded. For example, url_encode(url_encode(value)) can be used to encode \"US:CA/CA#Sunnyvale so that the request URL ends with \"/partitions/US%253ACA/CA%2523Sunnyvale\". The name field in the response retains the encoded format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The set of values representing the partition, which correspond to the partition schema defined in the parent entity."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "entityId",
        "etag",
        "lakeId",
        "location",
        "name",
        "project",
        "values",
        "zone"
      ],
      "inputProperties": {
        "entityId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag for this partition."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "description": "Immutable. The location of the entity data within the partition, for example, gs://bucket/path/to/entity/key1=value1/key2=value2. Or projects//datasets//tables/"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The set of values representing the partition, which correspond to the partition schema defined in the parent entity."
        },
        "zone": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "entityId",
        "lakeId",
        "values"
      ]
    },
    "google-native:dataplex/v1:Task": {
      "description": "Creates a task resource within a lake.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the task was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the task."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "executionSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskExecutionSpecResponse",
          "description": "Spec related to how a task is executed."
        },
        "executionStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskExecutionStatusResponse",
          "description": "Status of the latest task executions."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the task."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the task, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/ tasks/{task_id}."
        },
        "notebook": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskNotebookTaskConfigResponse",
          "description": "Config related to running scheduled Notebooks."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spark": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskSparkTaskConfigResponse",
          "description": "Config related to running custom Spark tasks."
        },
        "state": {
          "type": "string",
          "description": "Current state of the task."
        },
        "taskId": {
          "type": "string",
          "description": "Required. Task identifier.",
          "replaceOnChanges": true
        },
        "triggerSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskTriggerSpecResponse",
          "description": "Spec related to how often and when a task should be triggered."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the task. This ID will be different if the task is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the task was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "executionSpec",
        "executionStatus",
        "labels",
        "lakeId",
        "location",
        "name",
        "notebook",
        "project",
        "spark",
        "state",
        "taskId",
        "triggerSpec",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the task."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "executionSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskExecutionSpec",
          "description": "Spec related to how a task is executed."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined labels for the task."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notebook": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskNotebookTaskConfig",
          "description": "Config related to running scheduled Notebooks."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spark": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskSparkTaskConfig",
          "description": "Config related to running custom Spark tasks."
        },
        "taskId": {
          "type": "string",
          "description": "Required. Task identifier.",
          "replaceOnChanges": true
        },
        "triggerSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskTriggerSpec",
          "description": "Spec related to how often and when a task should be triggered."
        }
      },
      "requiredInputs": [
        "executionSpec",
        "lakeId",
        "taskId",
        "triggerSpec"
      ]
    },
    "google-native:dataplex/v1:Zone": {
      "description": "Creates a zone resource within a lake.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "assetStatus": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetStatusResponse",
          "description": "Aggregated status of the underlying assets of the zone."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the zone was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the zone."
        },
        "discoverySpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneDiscoverySpecResponse",
          "description": "Optional. Specification of the discovery feature applied to data in this zone."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the zone."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the zone, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneResourceSpecResponse",
          "description": "Specification of the resources that are referenced by the assets within this zone."
        },
        "state": {
          "type": "string",
          "description": "Current state of the zone."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the zone."
        },
        "uid": {
          "type": "string",
          "description": "System generated globally unique ID for the zone. This ID will be different if the zone is deleted and re-created with the same name."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the zone was last updated."
        },
        "zoneId": {
          "type": "string",
          "description": "Required. Zone identifier. This ID will be used to generate names such as database and dataset names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique across all lakes from all locations in a project. * Must not be one of the reserved IDs (i.e. \"default\", \"global-temp\")",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "assetStatus",
        "createTime",
        "description",
        "discoverySpec",
        "displayName",
        "labels",
        "lakeId",
        "location",
        "name",
        "project",
        "resourceSpec",
        "state",
        "type",
        "uid",
        "updateTime",
        "zoneId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the zone."
        },
        "discoverySpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneDiscoverySpec",
          "description": "Optional. Specification of the discovery feature applied to data in this zone."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User friendly display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User defined labels for the zone."
        },
        "lakeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceSpec": {
          "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneResourceSpec",
          "description": "Specification of the resources that are referenced by the assets within this zone."
        },
        "type": {
          "$ref": "#/types/google-native:dataplex%2Fv1:ZoneType",
          "description": "Immutable. The type of the zone."
        },
        "zoneId": {
          "type": "string",
          "description": "Required. Zone identifier. This ID will be used to generate names such as database and dataset names when publishing metadata to Hive Metastore and BigQuery. * Must contain only lowercase letters, numbers and hyphens. * Must start with a letter. * Must end with a number or a letter. * Must be between 1-63 characters. * Must be unique across all lakes from all locations in a project. * Must not be one of the reserved IDs (i.e. \"default\", \"global-temp\")",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "lakeId",
        "resourceSpec",
        "type",
        "zoneId"
      ]
    },
    "google-native:dataproc/v1:AutoscalingPolicy": {
      "description": "Creates new autoscaling policy.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "basicAlgorithm": {
          "$ref": "#/types/google-native:dataproc%2Fv1:BasicAutoscalingAlgorithmResponse"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this autoscaling policy. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with an autoscaling policy."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The \"resource name\" of the autoscaling policy, as described in https://cloud.google.com/apis/design/resource_names. For projects.regions.autoscalingPolicies, the resource name of the policy has the following format: projects/{project_id}/regions/{region}/autoscalingPolicies/{policy_id} For projects.locations.autoscalingPolicies, the resource name of the policy has the following format: projects/{project_id}/locations/{location}/autoscalingPolicies/{policy_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secondaryWorkerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupAutoscalingPolicyConfigResponse",
          "description": "Optional. Describes how the autoscaler will operate for secondary workers."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupAutoscalingPolicyConfigResponse",
          "description": "Describes how the autoscaler will operate for primary workers."
        }
      },
      "type": "object",
      "required": [
        "basicAlgorithm",
        "labels",
        "location",
        "name",
        "project",
        "secondaryWorkerConfig",
        "workerConfig"
      ],
      "inputProperties": {
        "basicAlgorithm": {
          "$ref": "#/types/google-native:dataproc%2Fv1:BasicAutoscalingAlgorithm"
        },
        "id": {
          "type": "string",
          "description": "The policy id.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this autoscaling policy. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with an autoscaling policy."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secondaryWorkerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupAutoscalingPolicyConfig",
          "description": "Optional. Describes how the autoscaler will operate for secondary workers."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupAutoscalingPolicyConfig",
          "description": "Describes how the autoscaler will operate for primary workers."
        }
      },
      "requiredInputs": [
        "id",
        "workerConfig"
      ]
    },
    "google-native:dataproc/v1:AutoscalingPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:AutoscalingPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:AutoscalingPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "autoscalingPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicyId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "autoscalingPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "autoscalingPolicyId"
      ]
    },
    "google-native:dataproc/v1:Batch": {
      "description": "Creates a batch workload that executes asynchronously.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "batchId": {
          "type": "string",
          "description": "Optional. The ID to use for the batch, which will become the final component of the batch's resource name.This value must be 4-63 characters. Valid characters are /[a-z][0-9]-/."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the batch was created."
        },
        "creator": {
          "type": "string",
          "description": "The email address of the user who created the batch."
        },
        "environmentConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfigResponse",
          "description": "Optional. Environment configuration for the batch execution."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this batch. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a batch."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the batch."
        },
        "operation": {
          "type": "string",
          "description": "The resource name of the operation associated with this batch."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pysparkBatch": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PySparkBatchResponse",
          "description": "Optional. PySpark batch config."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the service receives two CreateBatchRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.CreateBatchRequest)s with the same request_id, the second request is ignored and the Operation that corresponds to the first Batch created and stored in the backend is returned.Recommendation: Set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The value must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfigResponse",
          "description": "Optional. Runtime configuration for the batch execution."
        },
        "runtimeInfo": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeInfoResponse",
          "description": "Runtime information about batch execution."
        },
        "sparkBatch": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkBatchResponse",
          "description": "Optional. Spark batch config."
        },
        "sparkRBatch": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkRBatchResponse",
          "description": "Optional. SparkR batch config."
        },
        "sparkSqlBatch": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkSqlBatchResponse",
          "description": "Optional. SparkSql batch config."
        },
        "state": {
          "type": "string",
          "description": "The state of the batch."
        },
        "stateHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:StateHistoryResponse"
          },
          "description": "Historical state information for the batch."
        },
        "stateMessage": {
          "type": "string",
          "description": "Batch state details, such as a failure description if the state is FAILED."
        },
        "stateTime": {
          "type": "string",
          "description": "The time when the batch entered a current state."
        },
        "uuid": {
          "type": "string",
          "description": "A batch UUID (Unique Universal Identifier). The service generates this value when it creates the batch."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "creator",
        "environmentConfig",
        "labels",
        "location",
        "name",
        "operation",
        "project",
        "pysparkBatch",
        "runtimeConfig",
        "runtimeInfo",
        "sparkBatch",
        "sparkRBatch",
        "sparkSqlBatch",
        "state",
        "stateHistory",
        "stateMessage",
        "stateTime",
        "uuid"
      ],
      "inputProperties": {
        "batchId": {
          "type": "string",
          "description": "Optional. The ID to use for the batch, which will become the final component of the batch's resource name.This value must be 4-63 characters. Valid characters are /[a-z][0-9]-/."
        },
        "environmentConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfig",
          "description": "Optional. Environment configuration for the batch execution."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this batch. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a batch."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pysparkBatch": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PySparkBatch",
          "description": "Optional. PySpark batch config."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the service receives two CreateBatchRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.CreateBatchRequest)s with the same request_id, the second request is ignored and the Operation that corresponds to the first Batch created and stored in the backend is returned.Recommendation: Set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The value must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfig",
          "description": "Optional. Runtime configuration for the batch execution."
        },
        "sparkBatch": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkBatch",
          "description": "Optional. Spark batch config."
        },
        "sparkRBatch": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkRBatch",
          "description": "Optional. SparkR batch config."
        },
        "sparkSqlBatch": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkSqlBatch",
          "description": "Optional. SparkSql batch config."
        }
      }
    },
    "google-native:dataproc/v1:Cluster": {
      "description": "Creates a cluster in a project. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#clusteroperationmetadata).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "actionOnFailedPrimaryWorkers": {
          "type": "string",
          "description": "Optional. Failure action when primary worker creation fails."
        },
        "clusterName": {
          "type": "string",
          "description": "The cluster name, which must be unique within a project. The name must start with a lowercase letter, and can contain up to 51 lowercase letters, numbers, and hyphens. It cannot end with a hyphen. The name of a deleted cluster can be reused."
        },
        "clusterUuid": {
          "type": "string",
          "description": "A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ClusterConfigResponse",
          "description": "Optional. The cluster config for a cluster of Compute Engine Instances. Note that Dataproc may set default values, and values may change when clusters are updated.Exactly one of ClusterConfig or VirtualClusterConfig must be specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster."
        },
        "metrics": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ClusterMetricsResponse",
          "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two CreateClusterRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.CreateClusterRequest)s with the same id, then the second request will be ignored and the first google.longrunning.Operation created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "status": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ClusterStatusResponse",
          "description": "Cluster status."
        },
        "statusHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:ClusterStatusResponse"
          },
          "description": "The previous cluster status."
        },
        "virtualClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:VirtualClusterConfigResponse",
          "description": "Optional. The virtual cluster config is used when creating a Dataproc cluster that does not directly control the underlying compute resources, for example, when creating a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/guides/dpgke/dataproc-gke-overview). Dataproc may set default values, and values may change when clusters are updated. Exactly one of config or virtual_cluster_config must be specified."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "clusterUuid",
        "config",
        "labels",
        "metrics",
        "project",
        "region",
        "status",
        "statusHistory",
        "virtualClusterConfig"
      ],
      "inputProperties": {
        "actionOnFailedPrimaryWorkers": {
          "type": "string",
          "description": "Optional. Failure action when primary worker creation fails."
        },
        "clusterName": {
          "type": "string",
          "description": "The cluster name, which must be unique within a project. The name must start with a lowercase letter, and can contain up to 51 lowercase letters, numbers, and hyphens. It cannot end with a hyphen. The name of a deleted cluster can be reused."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1:ClusterConfig",
          "description": "Optional. The cluster config for a cluster of Compute Engine Instances. Note that Dataproc may set default values, and values may change when clusters are updated.Exactly one of ClusterConfig or VirtualClusterConfig must be specified."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster."
        },
        "project": {
          "type": "string",
          "description": "The Google Cloud Platform project ID that the cluster belongs to."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two CreateClusterRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.CreateClusterRequest)s with the same id, then the second request will be ignored and the first google.longrunning.Operation created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "virtualClusterConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:VirtualClusterConfig",
          "description": "Optional. The virtual cluster config is used when creating a Dataproc cluster that does not directly control the underlying compute resources, for example, when creating a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/guides/dpgke/dataproc-gke-overview). Dataproc may set default values, and values may change when clusters are updated. Exactly one of config or virtual_cluster_config must be specified."
        }
      },
      "requiredInputs": [
        "clusterName",
        "region"
      ]
    },
    "google-native:dataproc/v1:Job": {
      "description": "Submits a job to a cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "done": {
          "type": "boolean",
          "description": "Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled."
        },
        "driverControlFilesUri": {
          "type": "string",
          "description": "If present, the location of miscellaneous control files which can be used as part of job setup and handling. If not present, control files might be placed in the same location as driver_output_uri."
        },
        "driverOutputResourceUri": {
          "type": "string",
          "description": "A URI pointing to the location of the stdout of the job's driver program."
        },
        "driverSchedulingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:DriverSchedulingConfigResponse",
          "description": "Optional. Driver scheduling configuration."
        },
        "flinkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:FlinkJobResponse",
          "description": "Optional. Job is a Flink job."
        },
        "hadoopJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:HadoopJobResponse",
          "description": "Optional. Job is a Hadoop job."
        },
        "hiveJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:HiveJobResponse",
          "description": "Optional. Job is a Hive job."
        },
        "jobUuid": {
          "type": "string",
          "description": "A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that might be reused over time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job."
        },
        "pigJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PigJobResponse",
          "description": "Optional. Job is a Pig job."
        },
        "placement": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobPlacementResponse",
          "description": "Job information, including how, when, and where to run the job."
        },
        "prestoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PrestoJobResponse",
          "description": "Optional. Job is a Presto job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pysparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PySparkJobResponse",
          "description": "Optional. Job is a PySpark job."
        },
        "reference": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobReferenceResponse",
          "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scheduling": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobSchedulingResponse",
          "description": "Optional. Job scheduling configuration."
        },
        "sparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkJobResponse",
          "description": "Optional. Job is a Spark job."
        },
        "sparkRJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkRJobResponse",
          "description": "Optional. Job is a SparkR job."
        },
        "sparkSqlJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkSqlJobResponse",
          "description": "Optional. Job is a SparkSql job."
        },
        "status": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobStatusResponse",
          "description": "The job status. Additional application-specific status information might be contained in the type_job and yarn_applications fields."
        },
        "statusHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:JobStatusResponse"
          },
          "description": "The previous job status."
        },
        "trinoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:TrinoJobResponse",
          "description": "Optional. Job is a Trino job."
        },
        "yarnApplications": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:YarnApplicationResponse"
          },
          "description": "The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It might be changed before final release."
        }
      },
      "type": "object",
      "required": [
        "done",
        "driverControlFilesUri",
        "driverOutputResourceUri",
        "driverSchedulingConfig",
        "flinkJob",
        "hadoopJob",
        "hiveJob",
        "jobUuid",
        "labels",
        "pigJob",
        "placement",
        "prestoJob",
        "project",
        "pysparkJob",
        "reference",
        "region",
        "scheduling",
        "sparkJob",
        "sparkRJob",
        "sparkSqlJob",
        "status",
        "statusHistory",
        "trinoJob",
        "yarnApplications"
      ],
      "inputProperties": {
        "driverSchedulingConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:DriverSchedulingConfig",
          "description": "Optional. Driver scheduling configuration."
        },
        "flinkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:FlinkJob",
          "description": "Optional. Job is a Flink job."
        },
        "hadoopJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:HadoopJob",
          "description": "Optional. Job is a Hadoop job."
        },
        "hiveJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:HiveJob",
          "description": "Optional. Job is a Hive job."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job."
        },
        "pigJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PigJob",
          "description": "Optional. Job is a Pig job."
        },
        "placement": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobPlacement",
          "description": "Job information, including how, when, and where to run the job."
        },
        "prestoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PrestoJob",
          "description": "Optional. Job is a Presto job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pysparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:PySparkJob",
          "description": "Optional. Job is a PySpark job."
        },
        "reference": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobReference",
          "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique id used to identify the request. If the server receives two SubmitJobRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.SubmitJobRequest)s with the same id, then the second request will be ignored and the first Job created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "scheduling": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JobScheduling",
          "description": "Optional. Job scheduling configuration."
        },
        "sparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkJob",
          "description": "Optional. Job is a Spark job."
        },
        "sparkRJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkRJob",
          "description": "Optional. Job is a SparkR job."
        },
        "sparkSqlJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:SparkSqlJob",
          "description": "Optional. Job is a SparkSql job."
        },
        "trinoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1:TrinoJob",
          "description": "Optional. Job is a Trino job."
        }
      },
      "requiredInputs": [
        "placement",
        "region"
      ]
    },
    "google-native:dataproc/v1:NodeGroup": {
      "description": "Creates a node group in a cluster. The returned Operation.metadata is NodeGroupOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#nodegroupoperationmetadata).\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Node group labels. Label keys must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty. If specified, they must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). The node group must have no more than 32 labelsn."
        },
        "name": {
          "type": "string",
          "description": "The Node group resource name (https://aip.dev/122)."
        },
        "nodeGroupConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfigResponse",
          "description": "Optional. The node group instance group configuration."
        },
        "nodeGroupId": {
          "type": "string",
          "description": "Optional. An optional node group ID. Generated if not specified.The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of from 3 to 33 characters."
        },
        "parentOperationId": {
          "type": "string",
          "description": "Optional. operation id of the parent operation sending the create request"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two CreateNodeGroupRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.CreateNodeGroupRequests) with the same ID, the second request is ignored and the first google.longrunning.Operation created and stored in the backend is returned.Recommendation: Set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Node group roles."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "labels",
        "name",
        "nodeGroupConfig",
        "project",
        "regionId",
        "roles"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Node group labels. Label keys must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty. If specified, they must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). The node group must have no more than 32 labelsn."
        },
        "name": {
          "type": "string",
          "description": "The Node group resource name (https://aip.dev/122)."
        },
        "nodeGroupConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfig",
          "description": "Optional. The node group instance group configuration."
        },
        "nodeGroupId": {
          "type": "string",
          "description": "Optional. An optional node group ID. Generated if not specified.The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of from 3 to 33 characters."
        },
        "parentOperationId": {
          "type": "string",
          "description": "Optional. operation id of the parent operation sending the create request"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the server receives two CreateNodeGroupRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.CreateNodeGroupRequests) with the same ID, the second request is ignored and the first google.longrunning.Operation created and stored in the backend is returned.Recommendation: Set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:NodeGroupRolesItem"
          },
          "description": "Node group roles."
        }
      },
      "requiredInputs": [
        "clusterId",
        "regionId",
        "roles"
      ]
    },
    "google-native:dataproc/v1:RegionAutoscalingPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionAutoscalingPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionAutoscalingPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "autoscalingPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicyId",
        "bindings",
        "etag",
        "project",
        "regionId",
        "version"
      ],
      "inputProperties": {
        "autoscalingPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "autoscalingPolicyId",
        "regionId"
      ]
    },
    "google-native:dataproc/v1:RegionClusterIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionClusterIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionClusterIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "clusterId",
        "etag",
        "project",
        "regionId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clusterId",
        "regionId"
      ]
    },
    "google-native:dataproc/v1:RegionJobIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionJobIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionJobIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "jobId",
        "project",
        "regionId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "jobId",
        "regionId"
      ]
    },
    "google-native:dataproc/v1:RegionOperationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionOperationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionOperationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "operationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "operationId",
        "project",
        "regionId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "operationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "operationId",
        "regionId"
      ]
    },
    "google-native:dataproc/v1:RegionWorkflowTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionWorkflowTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:RegionWorkflowTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workflowTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "regionId",
        "version",
        "workflowTemplateId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workflowTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "regionId",
        "workflowTemplateId"
      ]
    },
    "google-native:dataproc/v1:Session": {
      "description": "Create an interactive session asynchronously.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the session was created."
        },
        "creator": {
          "type": "string",
          "description": "The email address of the user who created the session."
        },
        "environmentConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfigResponse",
          "description": "Optional. Environment configuration for the session execution."
        },
        "jupyterSession": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JupyterConfigResponse",
          "description": "Optional. Jupyter session config."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with the session. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a session."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the session."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the service receives two CreateSessionRequests (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.CreateSessionRequest)s with the same ID, the second request is ignored, and the first Session is created and stored in the backend.Recommendation: Set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The value must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfigResponse",
          "description": "Optional. Runtime configuration for the session execution."
        },
        "runtimeInfo": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeInfoResponse",
          "description": "Runtime information about session execution."
        },
        "sessionId": {
          "type": "string",
          "description": "Required. The ID to use for the session, which becomes the final component of the session's resource name.This value must be 4-63 characters. Valid characters are /a-z-/.",
          "replaceOnChanges": true
        },
        "sessionTemplate": {
          "type": "string",
          "description": "Optional. The session template used by the session.Only resource names, including project ID and location, are valid.Example: * https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/sessionTemplates/[template_id] * projects/[project_id]/locations/[dataproc_region]/sessionTemplates/[template_id]The template must be in the same project and Dataproc region as the session."
        },
        "state": {
          "type": "string",
          "description": "A state of the session."
        },
        "stateHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:SessionStateHistoryResponse"
          },
          "description": "Historical state information for the session."
        },
        "stateMessage": {
          "type": "string",
          "description": "Session state details, such as the failure description if the state is FAILED."
        },
        "stateTime": {
          "type": "string",
          "description": "The time when the session entered the current state."
        },
        "user": {
          "type": "string",
          "description": "Optional. The email address of the user who owns the session."
        },
        "uuid": {
          "type": "string",
          "description": "A session UUID (Unique Universal Identifier). The service generates this value when it creates the session."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "creator",
        "environmentConfig",
        "jupyterSession",
        "labels",
        "location",
        "name",
        "project",
        "runtimeConfig",
        "runtimeInfo",
        "sessionId",
        "sessionTemplate",
        "state",
        "stateHistory",
        "stateMessage",
        "stateTime",
        "user",
        "uuid"
      ],
      "inputProperties": {
        "environmentConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfig",
          "description": "Optional. Environment configuration for the session execution."
        },
        "jupyterSession": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JupyterConfig",
          "description": "Optional. Jupyter session config."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with the session. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a session."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the session."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique ID used to identify the request. If the service receives two CreateSessionRequests (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#google.cloud.dataproc.v1.CreateSessionRequest)s with the same ID, the second request is ignored, and the first Session is created and stored in the backend.Recommendation: Set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The value must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfig",
          "description": "Optional. Runtime configuration for the session execution."
        },
        "sessionId": {
          "type": "string",
          "description": "Required. The ID to use for the session, which becomes the final component of the session's resource name.This value must be 4-63 characters. Valid characters are /a-z-/.",
          "replaceOnChanges": true
        },
        "sessionTemplate": {
          "type": "string",
          "description": "Optional. The session template used by the session.Only resource names, including project ID and location, are valid.Example: * https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/sessionTemplates/[template_id] * projects/[project_id]/locations/[dataproc_region]/sessionTemplates/[template_id]The template must be in the same project and Dataproc region as the session."
        },
        "user": {
          "type": "string",
          "description": "Optional. The email address of the user who owns the session."
        }
      },
      "requiredInputs": [
        "sessionId"
      ]
    },
    "google-native:dataproc/v1:SessionTemplate": {
      "description": "Create a session template synchronously.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the template was created."
        },
        "creator": {
          "type": "string",
          "description": "The email address of the user who created the template."
        },
        "description": {
          "type": "string",
          "description": "Optional. Brief description of the template."
        },
        "environmentConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfigResponse",
          "description": "Optional. Environment configuration for session execution."
        },
        "jupyterSession": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JupyterConfigResponse",
          "description": "Optional. Jupyter session config."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels to associate with sessions created using this template. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty, but, if present, must contain 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a session."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the session template."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfigResponse",
          "description": "Optional. Runtime configuration for session execution."
        },
        "updateTime": {
          "type": "string",
          "description": "The time the template was last updated."
        },
        "uuid": {
          "type": "string",
          "description": "A session template UUID (Unique Universal Identifier). The service generates this value when it creates the session template."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "creator",
        "description",
        "environmentConfig",
        "jupyterSession",
        "labels",
        "location",
        "name",
        "project",
        "runtimeConfig",
        "updateTime",
        "uuid"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Brief description of the template."
        },
        "environmentConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfig",
          "description": "Optional. Environment configuration for session execution."
        },
        "jupyterSession": {
          "$ref": "#/types/google-native:dataproc%2Fv1:JupyterConfig",
          "description": "Optional. Jupyter session config."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels to associate with sessions created using this template. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty, but, if present, must contain 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a session."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the session template."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtimeConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfig",
          "description": "Optional. Runtime configuration for session execution."
        }
      }
    },
    "google-native:dataproc/v1:WorkflowTemplate": {
      "description": "Creates new workflow template.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time template was created."
        },
        "dagTimeout": {
          "type": "string",
          "description": "Optional. Timeout duration for the DAG of jobs, expressed in seconds (see JSON representation of duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). The timeout duration must be from 10 minutes (\"600s\") to 24 hours (\"86400s\"). The timer begins when the first job is submitted. If the workflow is running at the end of the timeout period, any remaining jobs are cancelled, the workflow is ended, and if the workflow was running on a managed cluster, the cluster is deleted."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GoogleCloudDataprocV1WorkflowTemplateEncryptionConfigResponse",
          "description": "Optional. Encryption settings for the encrypting customer core content."
        },
        "jobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:OrderedJobResponse"
          },
          "description": "The Directed Acyclic Graph of Jobs to submit."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this template. These labels will be propagated to all jobs and clusters created by the workflow instance.Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).No more than 32 labels can be associated with a template."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the workflow template, as described in https://cloud.google.com/apis/design/resource_names. For projects.regions.workflowTemplates, the resource name of the template has the following format: projects/{project_id}/regions/{region}/workflowTemplates/{template_id} For projects.locations.workflowTemplates, the resource name of the template has the following format: projects/{project_id}/locations/{location}/workflowTemplates/{template_id}"
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:TemplateParameterResponse"
          },
          "description": "Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated."
        },
        "placement": {
          "$ref": "#/types/google-native:dataproc%2Fv1:WorkflowTemplatePlacementResponse",
          "description": "WorkflowTemplate scheduling information."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The time template was last updated."
        },
        "version": {
          "type": "integer",
          "description": "Optional. Used to perform a consistent read-modify-write.This field should be left blank for a CreateWorkflowTemplate request. It is required for an UpdateWorkflowTemplate request, and must match the current server version. A typical update template flow would fetch the current template with a GetWorkflowTemplate request, which will return the current template with the version field filled in with the current server version. The user updates other fields in the template, then returns it as part of the UpdateWorkflowTemplate request."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dagTimeout",
        "encryptionConfig",
        "jobs",
        "labels",
        "location",
        "name",
        "parameters",
        "placement",
        "project",
        "updateTime",
        "version"
      ],
      "inputProperties": {
        "dagTimeout": {
          "type": "string",
          "description": "Optional. Timeout duration for the DAG of jobs, expressed in seconds (see JSON representation of duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). The timeout duration must be from 10 minutes (\"600s\") to 24 hours (\"86400s\"). The timer begins when the first job is submitted. If the workflow is running at the end of the timeout period, any remaining jobs are cancelled, the workflow is ended, and if the workflow was running on a managed cluster, the cluster is deleted."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1:GoogleCloudDataprocV1WorkflowTemplateEncryptionConfig",
          "description": "Optional. Encryption settings for the encrypting customer core content."
        },
        "id": {
          "type": "string"
        },
        "jobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:OrderedJob"
          },
          "description": "The Directed Acyclic Graph of Jobs to submit."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this template. These labels will be propagated to all jobs and clusters created by the workflow instance.Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).No more than 32 labels can be associated with a template."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:TemplateParameter"
          },
          "description": "Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated."
        },
        "placement": {
          "$ref": "#/types/google-native:dataproc%2Fv1:WorkflowTemplatePlacement",
          "description": "WorkflowTemplate scheduling information."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Optional. Used to perform a consistent read-modify-write.This field should be left blank for a CreateWorkflowTemplate request. It is required for an UpdateWorkflowTemplate request, and must match the current server version. A typical update template flow would fetch the current template with a GetWorkflowTemplate request, which will return the current template with the version field filled in with the current server version. The user updates other fields in the template, then returns it as part of the UpdateWorkflowTemplate request."
        }
      },
      "requiredInputs": [
        "jobs",
        "placement"
      ]
    },
    "google-native:dataproc/v1:WorkflowTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:WorkflowTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1:WorkflowTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workflowTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "workflowTemplateId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workflowTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workflowTemplateId"
      ]
    },
    "google-native:dataproc/v1beta2:AutoscalingPolicy": {
      "description": "Creates new autoscaling policy.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "basicAlgorithm": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:BasicAutoscalingAlgorithmResponse"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The \"resource name\" of the autoscaling policy, as described in https://cloud.google.com/apis/design/resource_names. For projects.regions.autoscalingPolicies, the resource name of the policy has the following format: projects/{project_id}/regions/{region}/autoscalingPolicies/{policy_id} For projects.locations.autoscalingPolicies, the resource name of the policy has the following format: projects/{project_id}/locations/{location}/autoscalingPolicies/{policy_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secondaryWorkerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupAutoscalingPolicyConfigResponse",
          "description": "Optional. Describes how the autoscaler will operate for secondary workers."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupAutoscalingPolicyConfigResponse",
          "description": "Describes how the autoscaler will operate for primary workers."
        }
      },
      "type": "object",
      "required": [
        "basicAlgorithm",
        "location",
        "name",
        "project",
        "secondaryWorkerConfig",
        "workerConfig"
      ],
      "inputProperties": {
        "basicAlgorithm": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:BasicAutoscalingAlgorithm"
        },
        "id": {
          "type": "string",
          "description": "The policy id.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secondaryWorkerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupAutoscalingPolicyConfig",
          "description": "Optional. Describes how the autoscaler will operate for secondary workers."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupAutoscalingPolicyConfig",
          "description": "Describes how the autoscaler will operate for primary workers."
        }
      },
      "requiredInputs": [
        "id",
        "workerConfig"
      ]
    },
    "google-native:dataproc/v1beta2:AutoscalingPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:AutoscalingPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:AutoscalingPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "autoscalingPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicyId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "autoscalingPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:Binding"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "autoscalingPolicyId"
      ]
    },
    "google-native:dataproc/v1beta2:Cluster": {
      "description": "Creates a cluster in a project. The returned Operation.metadata will be ClusterOperationMetadata (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#clusteroperationmetadata).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clusterName": {
          "type": "string",
          "description": "The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused."
        },
        "clusterUuid": {
          "type": "string",
          "description": "A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterConfigResponse",
          "description": "The cluster config. Note that Dataproc may set default values, and values may change when clusters are updated."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster."
        },
        "metrics": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterMetricsResponse",
          "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique id used to identify the request. If the server receives two CreateClusterRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#google.cloud.dataproc.v1beta2.CreateClusterRequest)s with the same id, then the second request will be ignored and the first google.longrunning.Operation created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "status": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterStatusResponse",
          "description": "Cluster status."
        },
        "statusHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterStatusResponse"
          },
          "description": "The previous cluster status."
        }
      },
      "type": "object",
      "required": [
        "clusterName",
        "clusterUuid",
        "config",
        "labels",
        "metrics",
        "project",
        "region",
        "status",
        "statusHistory"
      ],
      "inputProperties": {
        "clusterName": {
          "type": "string",
          "description": "The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused."
        },
        "config": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterConfig",
          "description": "The cluster config. Note that Dataproc may set default values, and values may change when clusters are updated."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster."
        },
        "project": {
          "type": "string",
          "description": "The Google Cloud Platform project ID that the cluster belongs to."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique id used to identify the request. If the server receives two CreateClusterRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#google.cloud.dataproc.v1beta2.CreateClusterRequest)s with the same id, then the second request will be ignored and the first google.longrunning.Operation created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        }
      },
      "requiredInputs": [
        "clusterName",
        "config",
        "region"
      ]
    },
    "google-native:dataproc/v1beta2:Job": {
      "description": "Submits a job to a cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "done": {
          "type": "boolean",
          "description": "Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled."
        },
        "driverControlFilesUri": {
          "type": "string",
          "description": "If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri."
        },
        "driverOutputResourceUri": {
          "type": "string",
          "description": "A URI pointing to the location of the stdout of the job's driver program."
        },
        "hadoopJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:HadoopJobResponse",
          "description": "Optional. Job is a Hadoop job."
        },
        "hiveJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:HiveJobResponse",
          "description": "Optional. Job is a Hive job."
        },
        "jobUuid": {
          "type": "string",
          "description": "A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job."
        },
        "pigJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PigJobResponse",
          "description": "Optional. Job is a Pig job."
        },
        "placement": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobPlacementResponse",
          "description": "Job information, including how, when, and where to run the job."
        },
        "prestoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PrestoJobResponse",
          "description": "Optional. Job is a Presto job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pysparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PySparkJobResponse",
          "description": "Optional. Job is a PySpark job."
        },
        "reference": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobReferenceResponse",
          "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scheduling": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobSchedulingResponse",
          "description": "Optional. Job scheduling configuration."
        },
        "sparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkJobResponse",
          "description": "Optional. Job is a Spark job."
        },
        "sparkRJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkRJobResponse",
          "description": "Optional. Job is a SparkR job."
        },
        "sparkSqlJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkSqlJobResponse",
          "description": "Optional. Job is a SparkSql job."
        },
        "status": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobStatusResponse",
          "description": "The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields."
        },
        "statusHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobStatusResponse"
          },
          "description": "The previous job status."
        },
        "submittedBy": {
          "type": "string",
          "description": "The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname."
        },
        "yarnApplications": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:YarnApplicationResponse"
          },
          "description": "The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release."
        }
      },
      "type": "object",
      "required": [
        "done",
        "driverControlFilesUri",
        "driverOutputResourceUri",
        "hadoopJob",
        "hiveJob",
        "jobUuid",
        "labels",
        "pigJob",
        "placement",
        "prestoJob",
        "project",
        "pysparkJob",
        "reference",
        "region",
        "scheduling",
        "sparkJob",
        "sparkRJob",
        "sparkSqlJob",
        "status",
        "statusHistory",
        "submittedBy",
        "yarnApplications"
      ],
      "inputProperties": {
        "hadoopJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:HadoopJob",
          "description": "Optional. Job is a Hadoop job."
        },
        "hiveJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:HiveJob",
          "description": "Optional. Job is a Hive job."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job."
        },
        "pigJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PigJob",
          "description": "Optional. Job is a Pig job."
        },
        "placement": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobPlacement",
          "description": "Job information, including how, when, and where to run the job."
        },
        "prestoJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PrestoJob",
          "description": "Optional. Job is a Presto job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pysparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:PySparkJob",
          "description": "Optional. Job is a PySpark job."
        },
        "reference": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobReference",
          "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id."
        },
        "region": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A unique id used to identify the request. If the server receives two SubmitJobRequest (https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#google.cloud.dataproc.v1.SubmitJobRequest)s with the same id, then the second request will be ignored and the first Job created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters."
        },
        "scheduling": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobScheduling",
          "description": "Optional. Job scheduling configuration."
        },
        "sparkJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkJob",
          "description": "Optional. Job is a Spark job."
        },
        "sparkRJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkRJob",
          "description": "Optional. Job is a SparkR job."
        },
        "sparkSqlJob": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkSqlJob",
          "description": "Optional. Job is a SparkSql job."
        }
      },
      "requiredInputs": [
        "placement",
        "region"
      ]
    },
    "google-native:dataproc/v1beta2:RegionAutoscalingPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionAutoscalingPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionAutoscalingPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "autoscalingPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "autoscalingPolicyId",
        "bindings",
        "etag",
        "project",
        "regionId",
        "version"
      ],
      "inputProperties": {
        "autoscalingPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:Binding"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "autoscalingPolicyId",
        "regionId"
      ]
    },
    "google-native:dataproc/v1beta2:RegionClusterIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionClusterIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionClusterIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "clusterId",
        "etag",
        "project",
        "regionId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:Binding"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clusterId",
        "regionId"
      ]
    },
    "google-native:dataproc/v1beta2:RegionJobIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionJobIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionJobIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "jobId",
        "project",
        "regionId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:Binding"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "jobId",
        "regionId"
      ]
    },
    "google-native:dataproc/v1beta2:RegionOperationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionOperationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionOperationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "operationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "operationId",
        "project",
        "regionId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:Binding"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "operationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "operationId",
        "regionId"
      ]
    },
    "google-native:dataproc/v1beta2:RegionWorkflowTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionWorkflowTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:RegionWorkflowTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workflowTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "regionId",
        "version",
        "workflowTemplateId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:Binding"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workflowTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "regionId",
        "workflowTemplateId"
      ]
    },
    "google-native:dataproc/v1beta2:WorkflowTemplate": {
      "description": "Creates new workflow template.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time template was created."
        },
        "dagTimeout": {
          "type": "string",
          "description": "Optional. Timeout duration for the DAG of jobs, expressed in seconds (see JSON representation of duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). The timeout duration must be from 10 minutes (\"600s\") to 24 hours (\"86400s\"). The timer begins when the first job is submitted. If the workflow is running at the end of the timeout period, any remaining jobs are cancelled, the workflow is ended, and if the workflow was running on a managed cluster, the cluster is deleted."
        },
        "jobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:OrderedJobResponse"
          },
          "description": "The Directed Acyclic Graph of Jobs to submit."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this template. These labels will be propagated to all jobs and clusters created by the workflow instance.Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).No more than 32 labels can be associated with a template."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the workflow template, as described in https://cloud.google.com/apis/design/resource_names. For projects.regions.workflowTemplates, the resource name of the template has the following format: projects/{project_id}/regions/{region}/workflowTemplates/{template_id} For projects.locations.workflowTemplates, the resource name of the template has the following format: projects/{project_id}/locations/{location}/workflowTemplates/{template_id}"
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:TemplateParameterResponse"
          },
          "description": "Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated."
        },
        "placement": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:WorkflowTemplatePlacementResponse",
          "description": "WorkflowTemplate scheduling information."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The time template was last updated."
        },
        "version": {
          "type": "integer",
          "description": "Optional. Used to perform a consistent read-modify-write.This field should be left blank for a CreateWorkflowTemplate request. It is required for an UpdateWorkflowTemplate request, and must match the current server version. A typical update template flow would fetch the current template with a GetWorkflowTemplate request, which will return the current template with the version field filled in with the current server version. The user updates other fields in the template, then returns it as part of the UpdateWorkflowTemplate request."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dagTimeout",
        "jobs",
        "labels",
        "location",
        "name",
        "parameters",
        "placement",
        "project",
        "updateTime",
        "version"
      ],
      "inputProperties": {
        "dagTimeout": {
          "type": "string",
          "description": "Optional. Timeout duration for the DAG of jobs, expressed in seconds (see JSON representation of duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). The timeout duration must be from 10 minutes (\"600s\") to 24 hours (\"86400s\"). The timer begins when the first job is submitted. If the workflow is running at the end of the timeout period, any remaining jobs are cancelled, the workflow is ended, and if the workflow was running on a managed cluster, the cluster is deleted."
        },
        "id": {
          "type": "string",
          "description": "The template id.The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters.."
        },
        "jobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:OrderedJob"
          },
          "description": "The Directed Acyclic Graph of Jobs to submit."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this template. These labels will be propagated to all jobs and clusters created by the workflow instance.Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).No more than 32 labels can be associated with a template."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:TemplateParameter"
          },
          "description": "Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated."
        },
        "placement": {
          "$ref": "#/types/google-native:dataproc%2Fv1beta2:WorkflowTemplatePlacement",
          "description": "WorkflowTemplate scheduling information."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Optional. Used to perform a consistent read-modify-write.This field should be left blank for a CreateWorkflowTemplate request. It is required for an UpdateWorkflowTemplate request, and must match the current server version. A typical update template flow would fetch the current template with a GetWorkflowTemplate request, which will return the current template with the version field filled in with the current server version. The user updates other fields in the template, then returns it as part of the UpdateWorkflowTemplate request."
        }
      },
      "requiredInputs": [
        "id",
        "jobs",
        "placement"
      ]
    },
    "google-native:dataproc/v1beta2:WorkflowTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:WorkflowTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dataproc/v1beta2:WorkflowTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workflowTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "workflowTemplateId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:Binding"
          },
          "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workflowTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workflowTemplateId"
      ]
    },
    "google-native:datastore/v1:Index": {
      "description": "Creates the specified index. A newly created index's initial state is `CREATING`. On completion of the returned google.longrunning.Operation, the state will be `READY`. If the index already exists, the call will return an `ALREADY_EXISTS` status. During index creation, the process could result in an error, in which case the index will move to the `ERROR` state. The process can be recovered by fixing the data that caused the error, removing the index with delete, then re-creating the index with create. Indexes with a single property cannot be created.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "ancestor": {
          "type": "string",
          "description": "The index's ancestor mode. Must not be ANCESTOR_MODE_UNSPECIFIED."
        },
        "indexId": {
          "type": "string",
          "description": "The resource ID of the index."
        },
        "kind": {
          "type": "string",
          "description": "The entity kind to which this index applies."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastore%2Fv1:GoogleDatastoreAdminV1IndexedPropertyResponse"
          },
          "description": "An ordered sequence of property names and their index attributes. Requires: * A maximum of 100 properties."
        },
        "state": {
          "type": "string",
          "description": "The state of the index."
        }
      },
      "type": "object",
      "required": [
        "ancestor",
        "indexId",
        "kind",
        "project",
        "properties",
        "state"
      ],
      "inputProperties": {
        "ancestor": {
          "$ref": "#/types/google-native:datastore%2Fv1:IndexAncestor",
          "description": "The index's ancestor mode. Must not be ANCESTOR_MODE_UNSPECIFIED."
        },
        "kind": {
          "type": "string",
          "description": "The entity kind to which this index applies."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastore%2Fv1:GoogleDatastoreAdminV1IndexedProperty"
          },
          "description": "An ordered sequence of property names and their index attributes. Requires: * A maximum of 100 properties."
        }
      },
      "requiredInputs": [
        "ancestor",
        "kind",
        "properties"
      ]
    },
    "google-native:datastream/v1:ConnectionProfile": {
      "description": "Use this method to create a connection profile in a project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigqueryProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:BigQueryProfileResponse",
          "description": "BigQuery Connection Profile configuration."
        },
        "connectionProfileId": {
          "type": "string",
          "description": "Required. The connection profile identifier.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The create time of the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "force": {
          "type": "boolean",
          "description": "Optional. Create the connection profile without validating it."
        },
        "forwardSshConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1:ForwardSshTunnelConnectivityResponse",
          "description": "Forward SSH tunnel connectivity."
        },
        "gcsProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:GcsProfileResponse",
          "description": "Cloud Storage ConnectionProfile configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mysqlProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlProfileResponse",
          "description": "MySQL ConnectionProfile configuration."
        },
        "name": {
          "type": "string",
          "description": "The resource's name."
        },
        "oracleProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleProfileResponse",
          "description": "Oracle ConnectionProfile configuration."
        },
        "postgresqlProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlProfileResponse",
          "description": "PostgreSQL Connection Profile configuration."
        },
        "privateConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1:PrivateConnectivityResponse",
          "description": "Private connectivity."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "staticServiceIpConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1:StaticServiceIpConnectivityResponse",
          "description": "Static Service IP connectivity."
        },
        "updateTime": {
          "type": "string",
          "description": "The update time of the resource."
        }
      },
      "type": "object",
      "required": [
        "bigqueryProfile",
        "connectionProfileId",
        "createTime",
        "displayName",
        "forwardSshConnectivity",
        "gcsProfile",
        "labels",
        "location",
        "mysqlProfile",
        "name",
        "oracleProfile",
        "postgresqlProfile",
        "privateConnectivity",
        "project",
        "staticServiceIpConnectivity",
        "updateTime"
      ],
      "inputProperties": {
        "bigqueryProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:BigQueryProfile",
          "description": "BigQuery Connection Profile configuration."
        },
        "connectionProfileId": {
          "type": "string",
          "description": "Required. The connection profile identifier.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "force": {
          "type": "boolean",
          "description": "Optional. Create the connection profile without validating it."
        },
        "forwardSshConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1:ForwardSshTunnelConnectivity",
          "description": "Forward SSH tunnel connectivity."
        },
        "gcsProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:GcsProfile",
          "description": "Cloud Storage ConnectionProfile configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mysqlProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:MysqlProfile",
          "description": "MySQL ConnectionProfile configuration."
        },
        "oracleProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:OracleProfile",
          "description": "Oracle ConnectionProfile configuration."
        },
        "postgresqlProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlProfile",
          "description": "PostgreSQL Connection Profile configuration."
        },
        "privateConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1:PrivateConnectivity",
          "description": "Private connectivity."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "staticServiceIpConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1:StaticServiceIpConnectivity",
          "description": "Static Service IP connectivity."
        }
      },
      "requiredInputs": [
        "connectionProfileId",
        "displayName"
      ]
    },
    "google-native:datastream/v1:PrivateConnection": {
      "description": "Use this method to create a private connectivity configuration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The create time of the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "error": {
          "$ref": "#/types/google-native:datastream%2Fv1:ErrorResponse",
          "description": "In case of error, the details of the error in a user-friendly format."
        },
        "force": {
          "type": "boolean",
          "description": "Optional. If set to true, will skip validations."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource's name."
        },
        "privateConnectionId": {
          "type": "string",
          "description": "Required. The private connectivity identifier.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The state of the Private Connection."
        },
        "updateTime": {
          "type": "string",
          "description": "The update time of the resource."
        },
        "vpcPeeringConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:VpcPeeringConfigResponse",
          "description": "VPC Peering Config."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "error",
        "labels",
        "location",
        "name",
        "privateConnectionId",
        "project",
        "state",
        "updateTime",
        "vpcPeeringConfig"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "force": {
          "type": "boolean",
          "description": "Optional. If set to true, will skip validations."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateConnectionId": {
          "type": "string",
          "description": "Required. The private connectivity identifier.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "vpcPeeringConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:VpcPeeringConfig",
          "description": "VPC Peering Config."
        }
      },
      "requiredInputs": [
        "displayName",
        "privateConnectionId"
      ]
    },
    "google-native:datastream/v1:Route": {
      "description": "Use this method to create a route for a private connectivity configuration in a project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The create time of the resource."
        },
        "destinationAddress": {
          "type": "string",
          "description": "Destination address for connection"
        },
        "destinationPort": {
          "type": "integer",
          "description": "Destination port for connection"
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource's name."
        },
        "privateConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routeId": {
          "type": "string",
          "description": "Required. The Route identifier.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The update time of the resource."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "destinationAddress",
        "destinationPort",
        "displayName",
        "labels",
        "location",
        "name",
        "privateConnectionId",
        "project",
        "routeId",
        "updateTime"
      ],
      "inputProperties": {
        "destinationAddress": {
          "type": "string",
          "description": "Destination address for connection"
        },
        "destinationPort": {
          "type": "integer",
          "description": "Destination port for connection"
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routeId": {
          "type": "string",
          "description": "Required. The Route identifier.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destinationAddress",
        "displayName",
        "privateConnectionId",
        "routeId"
      ]
    },
    "google-native:datastream/v1:Stream": {
      "description": "Use this method to create a stream.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backfillAll": {
          "$ref": "#/types/google-native:datastream%2Fv1:BackfillAllStrategyResponse",
          "description": "Automatically backfill objects included in the stream source configuration. Specific objects can be excluded."
        },
        "backfillNone": {
          "$ref": "#/types/google-native:datastream%2Fv1:BackfillNoneStrategyResponse",
          "description": "Do not automatically backfill any objects."
        },
        "createTime": {
          "type": "string",
          "description": "The creation time of the stream."
        },
        "customerManagedEncryptionKey": {
          "type": "string",
          "description": "Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS."
        },
        "destinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:DestinationConfigResponse",
          "description": "Destination connection profile configuration."
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1:ErrorResponse"
          },
          "description": "Errors on the Stream."
        },
        "force": {
          "type": "boolean",
          "description": "Optional. Create the stream without validating it."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "lastRecoveryTime": {
          "type": "string",
          "description": "If the stream was recovered, the time of the last recovery. Note: This field is currently experimental."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The stream's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:SourceConfigResponse",
          "description": "Source connection profile configuration."
        },
        "state": {
          "type": "string",
          "description": "The state of the stream."
        },
        "streamId": {
          "type": "string",
          "description": "Required. The stream identifier.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time of the stream."
        }
      },
      "type": "object",
      "required": [
        "backfillAll",
        "backfillNone",
        "createTime",
        "customerManagedEncryptionKey",
        "destinationConfig",
        "displayName",
        "errors",
        "labels",
        "lastRecoveryTime",
        "location",
        "name",
        "project",
        "sourceConfig",
        "state",
        "streamId",
        "updateTime"
      ],
      "inputProperties": {
        "backfillAll": {
          "$ref": "#/types/google-native:datastream%2Fv1:BackfillAllStrategy",
          "description": "Automatically backfill objects included in the stream source configuration. Specific objects can be excluded."
        },
        "backfillNone": {
          "$ref": "#/types/google-native:datastream%2Fv1:BackfillNoneStrategy",
          "description": "Do not automatically backfill any objects."
        },
        "customerManagedEncryptionKey": {
          "type": "string",
          "description": "Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS."
        },
        "destinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:DestinationConfig",
          "description": "Destination connection profile configuration."
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "force": {
          "type": "boolean",
          "description": "Optional. Create the stream without validating it."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1:SourceConfig",
          "description": "Source connection profile configuration."
        },
        "state": {
          "$ref": "#/types/google-native:datastream%2Fv1:StreamState",
          "description": "The state of the stream."
        },
        "streamId": {
          "type": "string",
          "description": "Required. The stream identifier.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destinationConfig",
        "displayName",
        "sourceConfig",
        "streamId"
      ]
    },
    "google-native:datastream/v1alpha1:ConnectionProfile": {
      "description": "Use this method to create a connection profile in a project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "connectionProfileId": {
          "type": "string",
          "description": "Required. The connection profile identifier.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The create time of the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "forwardSshConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:ForwardSshTunnelConnectivityResponse",
          "description": "Forward SSH tunnel connectivity."
        },
        "gcsProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:GcsProfileResponse",
          "description": "Cloud Storage ConnectionProfile configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mysqlProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlProfileResponse",
          "description": "MySQL ConnectionProfile configuration."
        },
        "name": {
          "type": "string",
          "description": "The resource's name."
        },
        "noConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:NoConnectivitySettingsResponse",
          "description": "No connectivity option chosen."
        },
        "oracleProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleProfileResponse",
          "description": "Oracle ConnectionProfile configuration."
        },
        "privateConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:PrivateConnectivityResponse",
          "description": "Private connectivity."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "staticServiceIpConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:StaticServiceIpConnectivityResponse",
          "description": "Static Service IP connectivity."
        },
        "updateTime": {
          "type": "string",
          "description": "The update time of the resource."
        }
      },
      "type": "object",
      "required": [
        "connectionProfileId",
        "createTime",
        "displayName",
        "forwardSshConnectivity",
        "gcsProfile",
        "labels",
        "location",
        "mysqlProfile",
        "name",
        "noConnectivity",
        "oracleProfile",
        "privateConnectivity",
        "project",
        "staticServiceIpConnectivity",
        "updateTime"
      ],
      "inputProperties": {
        "connectionProfileId": {
          "type": "string",
          "description": "Required. The connection profile identifier.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "forwardSshConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:ForwardSshTunnelConnectivity",
          "description": "Forward SSH tunnel connectivity."
        },
        "gcsProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:GcsProfile",
          "description": "Cloud Storage ConnectionProfile configuration."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mysqlProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlProfile",
          "description": "MySQL ConnectionProfile configuration."
        },
        "noConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:NoConnectivitySettings",
          "description": "No connectivity option chosen."
        },
        "oracleProfile": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleProfile",
          "description": "Oracle ConnectionProfile configuration."
        },
        "privateConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:PrivateConnectivity",
          "description": "Private connectivity."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "staticServiceIpConnectivity": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:StaticServiceIpConnectivity",
          "description": "Static Service IP connectivity."
        }
      },
      "requiredInputs": [
        "connectionProfileId",
        "displayName"
      ]
    },
    "google-native:datastream/v1alpha1:PrivateConnection": {
      "description": "Use this method to create a private connectivity configuration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The create time of the resource."
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "error": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:ErrorResponse",
          "description": "In case of error, the details of the error in a user-friendly format."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource's name."
        },
        "privateConnectionId": {
          "type": "string",
          "description": "Required. The private connectivity identifier.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The state of the Private Connection."
        },
        "updateTime": {
          "type": "string",
          "description": "The update time of the resource."
        },
        "vpcPeeringConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:VpcPeeringConfigResponse",
          "description": "VPC Peering Config"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "error",
        "labels",
        "location",
        "name",
        "privateConnectionId",
        "project",
        "state",
        "updateTime",
        "vpcPeeringConfig"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateConnectionId": {
          "type": "string",
          "description": "Required. The private connectivity identifier.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "vpcPeeringConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:VpcPeeringConfig",
          "description": "VPC Peering Config"
        }
      },
      "requiredInputs": [
        "displayName",
        "privateConnectionId"
      ]
    },
    "google-native:datastream/v1alpha1:Route": {
      "description": "Use this method to create a route for a private connectivity in a project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The create time of the resource."
        },
        "destinationAddress": {
          "type": "string",
          "description": "Destination address for connection"
        },
        "destinationPort": {
          "type": "integer",
          "description": "Destination port for connection"
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource's name."
        },
        "privateConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routeId": {
          "type": "string",
          "description": "Required. The Route identifier.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The update time of the resource."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "destinationAddress",
        "destinationPort",
        "displayName",
        "labels",
        "location",
        "name",
        "privateConnectionId",
        "project",
        "routeId",
        "updateTime"
      ],
      "inputProperties": {
        "destinationAddress": {
          "type": "string",
          "description": "Destination address for connection"
        },
        "destinationPort": {
          "type": "integer",
          "description": "Destination port for connection"
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routeId": {
          "type": "string",
          "description": "Required. The Route identifier.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destinationAddress",
        "displayName",
        "privateConnectionId",
        "routeId"
      ]
    },
    "google-native:datastream/v1alpha1:Stream": {
      "description": "Use this method to create a stream.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backfillAll": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:BackfillAllStrategyResponse",
          "description": "Automatically backfill objects included in the stream source configuration. Specific objects can be excluded."
        },
        "backfillNone": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:BackfillNoneStrategyResponse",
          "description": "Do not automatically backfill any objects."
        },
        "createTime": {
          "type": "string",
          "description": "The creation time of the stream."
        },
        "customerManagedEncryptionKey": {
          "type": "string",
          "description": "Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS."
        },
        "destinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:DestinationConfigResponse",
          "description": "Destination connection profile configuration."
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:ErrorResponse"
          },
          "description": "Errors on the Stream."
        },
        "force": {
          "type": "boolean",
          "description": "Optional. Create the stream without validating it."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The stream's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:SourceConfigResponse",
          "description": "Source connection profile configuration."
        },
        "state": {
          "type": "string",
          "description": "The state of the stream."
        },
        "streamId": {
          "type": "string",
          "description": "Required. The stream identifier.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time of the stream."
        }
      },
      "type": "object",
      "required": [
        "backfillAll",
        "backfillNone",
        "createTime",
        "customerManagedEncryptionKey",
        "destinationConfig",
        "displayName",
        "errors",
        "labels",
        "location",
        "name",
        "project",
        "sourceConfig",
        "state",
        "streamId",
        "updateTime"
      ],
      "inputProperties": {
        "backfillAll": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:BackfillAllStrategy",
          "description": "Automatically backfill objects included in the stream source configuration. Specific objects can be excluded."
        },
        "backfillNone": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:BackfillNoneStrategy",
          "description": "Do not automatically backfill any objects."
        },
        "customerManagedEncryptionKey": {
          "type": "string",
          "description": "Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS."
        },
        "destinationConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:DestinationConfig",
          "description": "Destination connection profile configuration."
        },
        "displayName": {
          "type": "string",
          "description": "Display name."
        },
        "force": {
          "type": "boolean",
          "description": "Optional. Create the stream without validating it."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceConfig": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:SourceConfig",
          "description": "Source connection profile configuration."
        },
        "state": {
          "$ref": "#/types/google-native:datastream%2Fv1alpha1:StreamState",
          "description": "The state of the stream."
        },
        "streamId": {
          "type": "string",
          "description": "Required. The stream identifier.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destinationConfig",
        "displayName",
        "sourceConfig",
        "streamId"
      ]
    },
    "google-native:deploymentmanager/alpha:CompositeType": {
      "description": "Creates a composite type.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "insertTime": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:CompositeTypeLabelEntryResponse"
          },
          "description": "Map of labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "name": {
          "type": "string",
          "description": "Name of the composite type, must follow the expression: `[a-z]([-a-z0-9_.]{0,61}[a-z0-9])?`."
        },
        "operation": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationResponse",
          "description": "The Operation that most recently ran, or is currently running, on this composite type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Server defined URL for the resource."
        },
        "status": {
          "type": "string"
        },
        "templateContents": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:TemplateContentsResponse",
          "description": "Files for the template type."
        }
      },
      "type": "object",
      "required": [
        "description",
        "insertTime",
        "labels",
        "name",
        "operation",
        "project",
        "selfLink",
        "status",
        "templateContents"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "id": {
          "type": "string"
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:CompositeTypeLabelEntry"
          },
          "description": "Map of labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "name": {
          "type": "string",
          "description": "Name of the composite type, must follow the expression: `[a-z]([-a-z0-9_.]{0,61}[a-z0-9])?`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "templateContents": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:TemplateContents",
          "description": "Files for the template type."
        }
      }
    },
    "google-native:deploymentmanager/alpha:Deployment": {
      "description": "Creates a deployment and all of the resources described by the deployment manifest.",
      "properties": {
        "createPolicy": {
          "type": "string",
          "description": "Sets the policy to use for creating new resources."
        },
        "credential": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:CredentialResponse",
          "description": "User provided default credential for the deployment."
        },
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment."
        },
        "fingerprint": {
          "type": "string",
          "description": "Provides a fingerprint to use in requests to modify a deployment, such as `update()`, `stop()`, and `cancelPreview()` requests. A fingerprint is a randomly generated value that must be provided with `update()`, `stop()`, and `cancelPreview()` requests to perform optimistic locking. This ensures optimistic concurrency so that only one request happens at a time. The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a `get()` request to a deployment."
        },
        "insertTime": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:DeploymentLabelEntryResponse"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "manifest": {
          "type": "string",
          "description": "URL of the manifest representing the last manifest that was successfully deployed. If no manifest has been successfully deployed, this field will be absent."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "operation": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationResponse",
          "description": "The Operation that most recently ran, or is currently running, on this deployment."
        },
        "outputs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:DeploymentOutputEntryResponse"
          },
          "description": "List of outputs from the last manifest that deployed successfully."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, creates a deployment and creates \"shell\" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. After previewing a deployment, you can deploy your resources by making a request with the `update()` method or you can use the `cancelPreview()` method to cancel the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Server defined URL for the resource."
        },
        "target": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:TargetConfigurationResponse",
          "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
        },
        "update": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:DeploymentUpdateResponse",
          "description": "If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here."
        },
        "updateTime": {
          "type": "string",
          "description": "Update timestamp in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "credential",
        "description",
        "fingerprint",
        "insertTime",
        "labels",
        "manifest",
        "name",
        "operation",
        "outputs",
        "project",
        "selfLink",
        "target",
        "update",
        "updateTime"
      ],
      "inputProperties": {
        "createPolicy": {
          "type": "string",
          "description": "Sets the policy to use for creating new resources."
        },
        "credential": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:Credential",
          "description": "User provided default credential for the deployment."
        },
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment."
        },
        "id": {
          "type": "string"
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:DeploymentLabelEntry"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, creates a deployment and creates \"shell\" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. After previewing a deployment, you can deploy your resources by making a request with the `update()` method or you can use the `cancelPreview()` method to cancel the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "target": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:TargetConfiguration",
          "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
        }
      }
    },
    "google-native:deploymentmanager/alpha:DeploymentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:deploymentmanager/alpha:DeploymentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:deploymentmanager/alpha:DeploymentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:deploymentmanager/alpha:TypeProvider": {
      "description": "Creates a type provider.",
      "properties": {
        "collectionOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:CollectionOverrideResponse"
          },
          "description": "Allows resource handling overrides for specific collections"
        },
        "credential": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:CredentialResponse",
          "description": "Credential used when interacting with this type."
        },
        "customCertificateAuthorityRoots": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of up to 2 custom certificate authority roots to use for TLS authentication when making calls on behalf of this type provider. If set, TLS authentication will exclusively use these roots instead of relying on publicly trusted certificate authorities when validating TLS certificate authenticity. The certificates must be in base64-encoded PEM format. The maximum size of each certificate must not exceed 10KB."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "descriptorUrl": {
          "type": "string",
          "description": "Descriptor Url for the this type provider."
        },
        "insertTime": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:TypeProviderLabelEntryResponse"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "operation": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationResponse",
          "description": "The Operation that most recently ran, or is currently running, on this type provider."
        },
        "options": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:OptionsResponse",
          "description": "Options to apply when handling any resources in this service."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Self link for the type provider."
        }
      },
      "type": "object",
      "required": [
        "collectionOverrides",
        "credential",
        "customCertificateAuthorityRoots",
        "description",
        "descriptorUrl",
        "insertTime",
        "labels",
        "name",
        "operation",
        "options",
        "project",
        "selfLink"
      ],
      "inputProperties": {
        "collectionOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:CollectionOverride"
          },
          "description": "Allows resource handling overrides for specific collections"
        },
        "credential": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:Credential",
          "description": "Credential used when interacting with this type."
        },
        "customCertificateAuthorityRoots": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of up to 2 custom certificate authority roots to use for TLS authentication when making calls on behalf of this type provider. If set, TLS authentication will exclusively use these roots instead of relying on publicly trusted certificate authorities when validating TLS certificate authenticity. The certificates must be in base64-encoded PEM format. The maximum size of each certificate must not exceed 10KB."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "descriptorUrl": {
          "type": "string",
          "description": "Descriptor Url for the this type provider."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:TypeProviderLabelEntry"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "$ref": "#/types/google-native:deploymentmanager%2Falpha:Options",
          "description": "Options to apply when handling any resources in this service."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:deploymentmanager/v2:Deployment": {
      "description": "Creates a deployment and all of the resources described by the deployment manifest.",
      "properties": {
        "createPolicy": {
          "type": "string",
          "description": "Sets the policy to use for creating new resources."
        },
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment."
        },
        "fingerprint": {
          "type": "string",
          "description": "Provides a fingerprint to use in requests to modify a deployment, such as `update()`, `stop()`, and `cancelPreview()` requests. A fingerprint is a randomly generated value that must be provided with `update()`, `stop()`, and `cancelPreview()` requests to perform optimistic locking. This ensures optimistic concurrency so that only one request happens at a time. The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a `get()` request to a deployment."
        },
        "insertTime": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:DeploymentLabelEntryResponse"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "manifest": {
          "type": "string",
          "description": "URL of the manifest representing the last manifest that was successfully deployed. If no manifest has been successfully deployed, this field will be absent."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "operation": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:OperationResponse",
          "description": "The Operation that most recently ran, or is currently running, on this deployment."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, creates a deployment and creates \"shell\" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. After previewing a deployment, you can deploy your resources by making a request with the `update()` method or you can use the `cancelPreview()` method to cancel the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Server defined URL for the resource."
        },
        "target": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:TargetConfigurationResponse",
          "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
        },
        "update": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:DeploymentUpdateResponse",
          "description": "If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here."
        },
        "updateTime": {
          "type": "string",
          "description": "Update timestamp in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "description",
        "fingerprint",
        "insertTime",
        "labels",
        "manifest",
        "name",
        "operation",
        "project",
        "selfLink",
        "target",
        "update",
        "updateTime"
      ],
      "inputProperties": {
        "createPolicy": {
          "type": "string",
          "description": "Sets the policy to use for creating new resources."
        },
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment."
        },
        "id": {
          "type": "string"
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:DeploymentLabelEntry"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, creates a deployment and creates \"shell\" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. After previewing a deployment, you can deploy your resources by making a request with the `update()` method or you can use the `cancelPreview()` method to cancel the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "target": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2:TargetConfiguration",
          "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
        }
      }
    },
    "google-native:deploymentmanager/v2:DeploymentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:deploymentmanager/v2:DeploymentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:deploymentmanager/v2:DeploymentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:deploymentmanager/v2beta:CompositeType": {
      "description": "Creates a composite type.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "insertTime": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:CompositeTypeLabelEntryResponse"
          },
          "description": "Map of labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "name": {
          "type": "string",
          "description": "Name of the composite type, must follow the expression: `[a-z]([-a-z0-9_.]{0,61}[a-z0-9])?`."
        },
        "operation": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationResponse",
          "description": "The Operation that most recently ran, or is currently running, on this composite type."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Server defined URL for the resource."
        },
        "status": {
          "type": "string"
        },
        "templateContents": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TemplateContentsResponse",
          "description": "Files for the template type."
        }
      },
      "type": "object",
      "required": [
        "description",
        "insertTime",
        "labels",
        "name",
        "operation",
        "project",
        "selfLink",
        "status",
        "templateContents"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "id": {
          "type": "string"
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:CompositeTypeLabelEntry"
          },
          "description": "Map of labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "name": {
          "type": "string",
          "description": "Name of the composite type, must follow the expression: `[a-z]([-a-z0-9_.]{0,61}[a-z0-9])?`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "templateContents": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TemplateContents",
          "description": "Files for the template type."
        }
      }
    },
    "google-native:deploymentmanager/v2beta:Deployment": {
      "description": "Creates a deployment and all of the resources described by the deployment manifest.",
      "properties": {
        "createPolicy": {
          "type": "string",
          "description": "Sets the policy to use for creating new resources."
        },
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment."
        },
        "fingerprint": {
          "type": "string",
          "description": "Provides a fingerprint to use in requests to modify a deployment, such as `update()`, `stop()`, and `cancelPreview()` requests. A fingerprint is a randomly generated value that must be provided with `update()`, `stop()`, and `cancelPreview()` requests to perform optimistic locking. This ensures optimistic concurrency so that only one request happens at a time. The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a `get()` request to a deployment."
        },
        "insertTime": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:DeploymentLabelEntryResponse"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "manifest": {
          "type": "string",
          "description": "URL of the manifest representing the last manifest that was successfully deployed. If no manifest has been successfully deployed, this field will be absent."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "operation": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationResponse",
          "description": "The Operation that most recently ran, or is currently running, on this deployment."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, creates a deployment and creates \"shell\" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. After previewing a deployment, you can deploy your resources by making a request with the `update()` method or you can use the `cancelPreview()` method to cancel the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Server defined URL for the resource."
        },
        "target": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TargetConfigurationResponse",
          "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
        },
        "update": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:DeploymentUpdateResponse",
          "description": "If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here."
        },
        "updateTime": {
          "type": "string",
          "description": "Update timestamp in RFC3339 text format."
        }
      },
      "type": "object",
      "required": [
        "description",
        "fingerprint",
        "insertTime",
        "labels",
        "manifest",
        "name",
        "operation",
        "project",
        "selfLink",
        "target",
        "update",
        "updateTime"
      ],
      "inputProperties": {
        "createPolicy": {
          "type": "string",
          "description": "Sets the policy to use for creating new resources."
        },
        "description": {
          "type": "string",
          "description": "An optional user-provided description of the deployment."
        },
        "id": {
          "type": "string"
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:DeploymentLabelEntry"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "preview": {
          "type": "boolean",
          "description": "If set to true, creates a deployment and creates \"shell\" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. After previewing a deployment, you can deploy your resources by making a request with the `update()` method or you can use the `cancelPreview()` method to cancel the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "target": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TargetConfiguration",
          "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
        }
      }
    },
    "google-native:deploymentmanager/v2beta:DeploymentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:deploymentmanager/v2beta:DeploymentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:deploymentmanager/v2beta:DeploymentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "resource",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resource": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "resource"
      ]
    },
    "google-native:deploymentmanager/v2beta:TypeProvider": {
      "description": "Creates a type provider.",
      "properties": {
        "collectionOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:CollectionOverrideResponse"
          },
          "description": "Allows resource handling overrides for specific collections"
        },
        "credential": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:CredentialResponse",
          "description": "Credential used when interacting with this type."
        },
        "customCertificateAuthorityRoots": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of up to 2 custom certificate authority roots to use for TLS authentication when making calls on behalf of this type provider. If set, TLS authentication will exclusively use these roots instead of relying on publicly trusted certificate authorities when validating TLS certificate authenticity. The certificates must be in base64-encoded PEM format. The maximum size of each certificate must not exceed 10KB."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "descriptorUrl": {
          "type": "string",
          "description": "Descriptor Url for the this type provider."
        },
        "insertTime": {
          "type": "string",
          "description": "Creation timestamp in RFC3339 text format."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TypeProviderLabelEntryResponse"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "operation": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationResponse",
          "description": "The Operation that most recently ran, or is currently running, on this type provider."
        },
        "options": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OptionsResponse",
          "description": "Options to apply when handling any resources in this service."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Self link for the type provider."
        }
      },
      "type": "object",
      "required": [
        "collectionOverrides",
        "credential",
        "customCertificateAuthorityRoots",
        "description",
        "descriptorUrl",
        "insertTime",
        "labels",
        "name",
        "operation",
        "options",
        "project",
        "selfLink"
      ],
      "inputProperties": {
        "collectionOverrides": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:CollectionOverride"
          },
          "description": "Allows resource handling overrides for specific collections"
        },
        "credential": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:Credential",
          "description": "Credential used when interacting with this type."
        },
        "customCertificateAuthorityRoots": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of up to 2 custom certificate authority roots to use for TLS authentication when making calls on behalf of this type provider. If set, TLS authentication will exclusively use these roots instead of relying on publicly trusted certificate authorities when validating TLS certificate authenticity. The certificates must be in base64-encoded PEM format. The maximum size of each certificate must not exceed 10KB."
        },
        "description": {
          "type": "string",
          "description": "An optional textual description of the resource; provided by the client when the resource is created."
        },
        "descriptorUrl": {
          "type": "string",
          "description": "Descriptor Url for the this type provider."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TypeProviderLabelEntry"
          },
          "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`"
        },
        "name": {
          "type": "string",
          "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
        },
        "options": {
          "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:Options",
          "description": "Options to apply when handling any resources in this service."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:dialogflow/v2:Context": {
      "description": "Creates a context. If the specified context already exists, overrides the context.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lifespanCount": {
          "type": "integer",
          "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`"
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "environmentId",
        "lifespanCount",
        "location",
        "name",
        "parameters",
        "project",
        "sessionId",
        "userId"
      ],
      "inputProperties": {
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lifespanCount": {
          "type": "integer",
          "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`"
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "environmentId",
        "name",
        "sessionId",
        "userId"
      ]
    },
    "google-native:dialogflow/v2:Conversation": {
      "description": "Creates a new conversation. Conversations are auto-completed after 24 hours. Conversation Lifecycle: There are two stages during a conversation: Automated Agent Stage and Assist Stage. For Automated Agent Stage, there will be a dialogflow agent responding to user queries. For Assist Stage, there's no dialogflow agent responding to user queries. But we will provide suggestions which are generated from conversation. If Conversation.conversation_profile is configured for a dialogflow agent, conversation will start from `Automated Agent Stage`, otherwise, it will start from `Assist Stage`. And during `Automated Agent Stage`, once an Intent with Intent.live_agent_handoff is triggered, conversation will transfer to Assist Stage.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "conversationId": {
          "type": "string",
          "description": "Optional. Identifier of the conversation. Generally it's auto generated by Google. Only set it if you cannot wait for the response to return a auto-generated one to you. The conversation ID must be compliant with the regression fomula `a-zA-Z*` with the characters length in range of [3,64]. If the field is provided, the caller is resposible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness."
        },
        "conversationProfile": {
          "type": "string",
          "description": "The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`."
        },
        "conversationStage": {
          "type": "string",
          "description": "The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE."
        },
        "endTime": {
          "type": "string",
          "description": "The time the conversation was finished."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The current state of the Conversation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this conversation. Format: `projects//locations//conversations/`."
        },
        "phoneNumber": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ConversationPhoneNumberResponse",
          "description": "It will not be empty if the conversation is to be connected over telephony."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The time the conversation was started."
        }
      },
      "type": "object",
      "required": [
        "conversationProfile",
        "conversationStage",
        "endTime",
        "lifecycleState",
        "location",
        "name",
        "phoneNumber",
        "project",
        "startTime"
      ],
      "inputProperties": {
        "conversationId": {
          "type": "string",
          "description": "Optional. Identifier of the conversation. Generally it's auto generated by Google. Only set it if you cannot wait for the response to return a auto-generated one to you. The conversation ID must be compliant with the regression fomula `a-zA-Z*` with the characters length in range of [3,64]. If the field is provided, the caller is resposible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness."
        },
        "conversationProfile": {
          "type": "string",
          "description": "The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`."
        },
        "conversationStage": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:ConversationConversationStage",
          "description": "The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "conversationProfile"
      ]
    },
    "google-native:dialogflow/v2:ConversationDataset": {
      "description": "Creates a new conversation dataset. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: CreateConversationDatasetOperationMetadata - `response`: ConversationDataset\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "conversationCount": {
          "type": "string",
          "description": "The number of conversations this conversation dataset contains."
        },
        "conversationInfo": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ConversationInfoResponse",
          "description": "Metadata set during conversation data import."
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this dataset."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the dataset. Maximum of 10000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the dataset. Maximum of 64 bytes."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2InputConfigResponse",
          "description": "Input configurations set during conversation data import."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "ConversationDataset resource name. Format: `projects//locations//conversationDatasets/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "conversationCount",
        "conversationInfo",
        "createTime",
        "description",
        "displayName",
        "inputConfig",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. The description of the dataset. Maximum of 10000 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the dataset. Maximum of 64 bytes."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2:ConversationModel": {
      "description": "Creates a model. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: CreateConversationModelOperationMetadata - `response`: ConversationModel",
      "properties": {
        "articleSuggestionModelMetadata": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ArticleSuggestionModelMetadataResponse",
          "description": "Metadata for article suggestion models."
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this model."
        },
        "datasets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2InputDatasetResponse"
          },
          "description": "Datasets used to create model."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the model. At most 64 bytes long."
        },
        "languageCode": {
          "type": "string",
          "description": "Language code for the conversation model. If not specified, the language is en-US. Language at ConversationModel should be set for all non en-us languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "ConversationModel resource name. Format: `projects//conversationModels/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "smartReplyModelMetadata": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SmartReplyModelMetadataResponse",
          "description": "Metadata for smart reply models."
        },
        "state": {
          "type": "string",
          "description": "State of the model. A model can only serve prediction requests after it gets deployed."
        }
      },
      "type": "object",
      "required": [
        "articleSuggestionModelMetadata",
        "createTime",
        "datasets",
        "displayName",
        "languageCode",
        "location",
        "name",
        "project",
        "smartReplyModelMetadata",
        "state"
      ],
      "inputProperties": {
        "articleSuggestionModelMetadata": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ArticleSuggestionModelMetadata",
          "description": "Metadata for article suggestion models."
        },
        "datasets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2InputDataset"
          },
          "description": "Datasets used to create model."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the model. At most 64 bytes long."
        },
        "languageCode": {
          "type": "string",
          "description": "Language code for the conversation model. If not specified, the language is en-US. Language at ConversationModel should be set for all non en-us languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "ConversationModel resource name. Format: `projects//conversationModels/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "smartReplyModelMetadata": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SmartReplyModelMetadata",
          "description": "Metadata for smart reply models."
        }
      },
      "requiredInputs": [
        "datasets",
        "displayName"
      ]
    },
    "google-native:dialogflow/v2:ConversationProfile": {
      "description": "Creates a conversation profile in the specified project. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren't populated in the response. You can retrieve them via GetConversationProfile API.",
      "properties": {
        "automatedAgentConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2AutomatedAgentConfigResponse",
          "description": "Configuration for an automated agent to use with this profile."
        },
        "createTime": {
          "type": "string",
          "description": "Create time of the conversation profile."
        },
        "displayName": {
          "type": "string",
          "description": "Human readable name for this profile. Max length 1024 bytes."
        },
        "humanAgentAssistantConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigResponse",
          "description": "Configuration for agent assistance to use with this profile."
        },
        "humanAgentHandoffConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentHandoffConfigResponse",
          "description": "Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access."
        },
        "languageCode": {
          "type": "string",
          "description": "Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2LoggingConfigResponse",
          "description": "Configuration for logging conversation lifecycle events."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`."
        },
        "newMessageEventNotificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfigResponse",
          "description": "Configuration for publishing new message events. Event will be sent in format of ConversationEvent"
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfigResponse",
          "description": "Configuration for publishing conversation lifecycle events."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securitySettings": {
          "type": "string",
          "description": "Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`."
        },
        "sttConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SpeechToTextConfigResponse",
          "description": "Settings for speech transcription."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York."
        },
        "ttsConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SynthesizeSpeechConfigResponse",
          "description": "Configuration for Text-to-Speech synthesization. Used by Phone Gateway to specify synthesization options. If agent defines synthesization options as well, agent settings overrides the option here."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time of the conversation profile."
        }
      },
      "type": "object",
      "required": [
        "automatedAgentConfig",
        "createTime",
        "displayName",
        "humanAgentAssistantConfig",
        "humanAgentHandoffConfig",
        "languageCode",
        "location",
        "loggingConfig",
        "name",
        "newMessageEventNotificationConfig",
        "notificationConfig",
        "project",
        "securitySettings",
        "sttConfig",
        "timeZone",
        "ttsConfig",
        "updateTime"
      ],
      "inputProperties": {
        "automatedAgentConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2AutomatedAgentConfig",
          "description": "Configuration for an automated agent to use with this profile."
        },
        "displayName": {
          "type": "string",
          "description": "Human readable name for this profile. Max length 1024 bytes."
        },
        "humanAgentAssistantConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfig",
          "description": "Configuration for agent assistance to use with this profile."
        },
        "humanAgentHandoffConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentHandoffConfig",
          "description": "Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access."
        },
        "languageCode": {
          "type": "string",
          "description": "Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2LoggingConfig",
          "description": "Configuration for logging conversation lifecycle events."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`."
        },
        "newMessageEventNotificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfig",
          "description": "Configuration for publishing new message events. Event will be sent in format of ConversationEvent"
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfig",
          "description": "Configuration for publishing conversation lifecycle events."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securitySettings": {
          "type": "string",
          "description": "Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`."
        },
        "sttConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SpeechToTextConfig",
          "description": "Settings for speech transcription."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York."
        },
        "ttsConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SynthesizeSpeechConfig",
          "description": "Configuration for Text-to-Speech synthesization. Used by Phone Gateway to specify synthesization options. If agent defines synthesization options as well, agent settings overrides the option here."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2:Document": {
      "description": "Creates a new document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document",
      "properties": {
        "contentUri": {
          "type": "string",
          "description": "The URI where the file content is located. For documents stored in Google Cloud Storage, these URIs must have the form `gs:///`. NOTE: External URLs must correspond to public webpages, i.e., they must be indexed by Google Search. In particular, URLs for showing documents in Google Cloud Storage (i.e. the URL in your browser) are not supported. Instead use the `gs://` format URI described above."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the document. The name must be 1024 bytes or less; otherwise, the creation request fails."
        },
        "enableAutoReload": {
          "type": "boolean",
          "description": "Optional. If true, we try to automatically reload the document every day (at a time picked by the system). If false or unspecified, we don't try to automatically reload the document. Currently you can only enable automatic reload for documents sourced from a public url, see `source` field for the source types. Reload status can be tracked in `latest_reload_status`. If a reload fails, we will keep the document unchanged. If a reload fails with internal errors, the system will try to reload the document on the next day. If a reload fails with non-retriable errors (e.g. PERMISSION_DENIED), the system will not try to reload the document anymore. You need to manually reload the document successfully by calling `ReloadDocument` and clear the errors."
        },
        "knowledgeBaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "knowledgeTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The knowledge type of document content."
        },
        "latestReloadStatus": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2DocumentReloadStatusResponse",
          "description": "The time and status of the latest reload. This reload may have been triggered automatically or manually and may not have succeeded."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the document. The metadata supports arbitrary key-value pairs. Suggested use cases include storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a `key` or a `value` of the metadata is 1024 bytes."
        },
        "mimeType": {
          "type": "string",
          "description": "The MIME type of this document."
        },
        "name": {
          "type": "string",
          "description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawContent": {
          "type": "string",
          "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types."
        },
        "state": {
          "type": "string",
          "description": "The current state of the document."
        }
      },
      "type": "object",
      "required": [
        "contentUri",
        "displayName",
        "enableAutoReload",
        "knowledgeBaseId",
        "knowledgeTypes",
        "latestReloadStatus",
        "location",
        "metadata",
        "mimeType",
        "name",
        "project",
        "rawContent",
        "state"
      ],
      "inputProperties": {
        "contentUri": {
          "type": "string",
          "description": "The URI where the file content is located. For documents stored in Google Cloud Storage, these URIs must have the form `gs:///`. NOTE: External URLs must correspond to public webpages, i.e., they must be indexed by Google Search. In particular, URLs for showing documents in Google Cloud Storage (i.e. the URL in your browser) are not supported. Instead use the `gs://` format URI described above."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the document. The name must be 1024 bytes or less; otherwise, the creation request fails."
        },
        "enableAutoReload": {
          "type": "boolean",
          "description": "Optional. If true, we try to automatically reload the document every day (at a time picked by the system). If false or unspecified, we don't try to automatically reload the document. Currently you can only enable automatic reload for documents sourced from a public url, see `source` field for the source types. Reload status can be tracked in `latest_reload_status`. If a reload fails, we will keep the document unchanged. If a reload fails with internal errors, the system will try to reload the document on the next day. If a reload fails with non-retriable errors (e.g. PERMISSION_DENIED), the system will not try to reload the document anymore. You need to manually reload the document successfully by calling `ReloadDocument` and clear the errors."
        },
        "knowledgeBaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "knowledgeTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:DocumentKnowledgeTypesItem"
          },
          "description": "The knowledge type of document content."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the document. The metadata supports arbitrary key-value pairs. Suggested use cases include storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a `key` or a `value` of the metadata is 1024 bytes."
        },
        "mimeType": {
          "type": "string",
          "description": "The MIME type of this document."
        },
        "name": {
          "type": "string",
          "description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawContent": {
          "type": "string",
          "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types."
        }
      },
      "requiredInputs": [
        "displayName",
        "knowledgeBaseId",
        "knowledgeTypes",
        "mimeType"
      ]
    },
    "google-native:dialogflow/v2:EntityType": {
      "description": "Creates an entity type in the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "autoExpansionMode": {
          "type": "string",
          "description": "Optional. Indicates whether the entity type can be automatically expanded."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the entity type."
        },
        "enableFuzzyExtraction": {
          "type": "boolean",
          "description": "Optional. Enables fuzzy entity extraction during classification."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EntityTypeEntityResponse"
          },
          "description": "Optional. The collection of entity entries associated with the entity type."
        },
        "kind": {
          "type": "string",
          "description": "Indicates the kind of entity type."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Format: `projects//agent/entityTypes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoExpansionMode",
        "displayName",
        "enableFuzzyExtraction",
        "entities",
        "kind",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "autoExpansionMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:EntityTypeAutoExpansionMode",
          "description": "Optional. Indicates whether the entity type can be automatically expanded."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the entity type."
        },
        "enableFuzzyExtraction": {
          "type": "boolean",
          "description": "Optional. Enables fuzzy entity extraction during classification."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EntityTypeEntity"
          },
          "description": "Optional. The collection of entity entries associated with the entity type."
        },
        "kind": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:EntityTypeKind",
          "description": "Indicates the kind of entity type."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Format: `projects//agent/entityTypes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "kind"
      ]
    },
    "google-native:dialogflow/v2:Environment": {
      "description": "Creates an agent environment.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "agentVersion": {
          "type": "string",
          "description": "Optional. The agent version loaded into this environment. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`"
        },
        "description": {
          "type": "string",
          "description": "Optional. The developer-provided description for this environment. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "environmentId": {
          "type": "string",
          "description": "Required. The unique id of the new environment.",
          "replaceOnChanges": true
        },
        "fulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2FulfillmentResponse",
          "description": "Optional. The fulfillment settings to use for this environment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this agent environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/` The environment ID for the default environment is `-`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of this environment. This field is read-only, i.e., it cannot be set by create and update methods."
        },
        "textToSpeechSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2TextToSpeechSettingsResponse",
          "description": "Optional. Text to speech settings for this environment."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time of this environment. This field is read-only, i.e., it cannot be set by create and update methods."
        }
      },
      "type": "object",
      "required": [
        "agentVersion",
        "description",
        "environmentId",
        "fulfillment",
        "location",
        "name",
        "project",
        "state",
        "textToSpeechSettings",
        "updateTime"
      ],
      "inputProperties": {
        "agentVersion": {
          "type": "string",
          "description": "Optional. The agent version loaded into this environment. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`"
        },
        "description": {
          "type": "string",
          "description": "Optional. The developer-provided description for this environment. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "environmentId": {
          "type": "string",
          "description": "Required. The unique id of the new environment.",
          "replaceOnChanges": true
        },
        "fulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2Fulfillment",
          "description": "Optional. The fulfillment settings to use for this environment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "textToSpeechSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2TextToSpeechSettings",
          "description": "Optional. Text to speech settings for this environment."
        }
      },
      "requiredInputs": [
        "environmentId"
      ]
    },
    "google-native:dialogflow/v2:Evaluation": {
      "description": "Creates evaluation of a conversation model.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "conversationModelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this model."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The display name of the model evaluation. At most 64 bytes long."
        },
        "evaluationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EvaluationConfigResponse",
          "description": "Optional. The configuration of the evaluation task."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the evaluation. Format: `projects//conversationModels//evaluations/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawHumanEvalTemplateCsv": {
          "type": "string",
          "description": "Human eval template in csv format. It tooks real-world conversations provided through input dataset, generates example suggestions for customer to verify quality of the model. For Smart Reply, the generated csv file contains columns of Context, (Suggestions,Q1,Q2)*3, Actual reply. Context contains at most 10 latest messages in the conversation prior to the current suggestion. Q1: \"Would you send it as the next message of agent?\" Evaluated based on whether the suggest is appropriate to be sent by agent in current context. Q2: \"Does the suggestion move the conversation closer to resolution?\" Evaluated based on whether the suggestion provide solutions, or answers customer's question or collect information from customer to resolve the customer's issue. Actual reply column contains the actual agent reply sent in the context."
        },
        "smartReplyMetrics": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SmartReplyMetricsResponse",
          "description": "Only available when model is for smart reply."
        }
      },
      "type": "object",
      "required": [
        "conversationModelId",
        "createTime",
        "displayName",
        "evaluationConfig",
        "location",
        "name",
        "project",
        "rawHumanEvalTemplateCsv",
        "smartReplyMetrics"
      ],
      "inputProperties": {
        "conversationModelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Optional. The display name of the model evaluation. At most 64 bytes long."
        },
        "evaluationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EvaluationConfig",
          "description": "Optional. The configuration of the evaluation task."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the evaluation. Format: `projects//conversationModels//evaluations/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "conversationModelId"
      ]
    },
    "google-native:dialogflow/v2:Intent": {
      "description": "Creates an intent in the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces."
        },
        "defaultResponsePlatforms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform)."
        },
        "displayName": {
          "type": "string",
          "description": "The name of this intent."
        },
        "endInteraction": {
          "type": "boolean",
          "description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false."
        },
        "events": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters."
        },
        "followupIntentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentFollowupIntentInfoResponse"
          },
          "description": "Read-only. Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output."
        },
        "inputContextNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of context names required for this intent to be triggered. Format: `projects//agent/sessions/-/contexts/`."
        },
        "intentView": {
          "type": "string",
          "description": "Optional. The resource view to apply to the returned intent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Optional. Indicates whether this is a fallback intent."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity)."
        },
        "liveAgentHandoff": {
          "type": "boolean",
          "description": "Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageResponse"
          },
          "description": "Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console."
        },
        "mlDisabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off."
        },
        "name": {
          "type": "string",
          "description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Format: `projects//agent/intents/`."
        },
        "outputContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ContextResponse"
          },
          "description": "Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentParameterResponse"
          },
          "description": "Optional. The collection of parameters associated with the intent."
        },
        "parentFollowupIntentName": {
          "type": "string",
          "description": "Read-only after creation. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`."
        },
        "priority": {
          "type": "integer",
          "description": "Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resetContexts": {
          "type": "boolean",
          "description": "Optional. Indicates whether to delete all contexts in the current session when this intent is matched."
        },
        "rootFollowupIntentName": {
          "type": "string",
          "description": "Read-only. The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. We populate this field only in the output. Format: `projects//agent/intents/`."
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentTrainingPhraseResponse"
          },
          "description": "Optional. The collection of examples that the agent is trained on."
        },
        "webhookState": {
          "type": "string",
          "description": "Optional. Indicates whether webhooks are enabled for the intent."
        }
      },
      "type": "object",
      "required": [
        "action",
        "defaultResponsePlatforms",
        "displayName",
        "endInteraction",
        "events",
        "followupIntentInfo",
        "inputContextNames",
        "isFallback",
        "liveAgentHandoff",
        "location",
        "messages",
        "mlDisabled",
        "name",
        "outputContexts",
        "parameters",
        "parentFollowupIntentName",
        "priority",
        "project",
        "resetContexts",
        "rootFollowupIntentName",
        "trainingPhrases",
        "webhookState"
      ],
      "inputProperties": {
        "action": {
          "type": "string",
          "description": "Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces."
        },
        "defaultResponsePlatforms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:IntentDefaultResponsePlatformsItem"
          },
          "description": "Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform)."
        },
        "displayName": {
          "type": "string",
          "description": "The name of this intent."
        },
        "endInteraction": {
          "type": "boolean",
          "description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false."
        },
        "events": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters."
        },
        "inputContextNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of context names required for this intent to be triggered. Format: `projects//agent/sessions/-/contexts/`."
        },
        "intentView": {
          "type": "string",
          "description": "Optional. The resource view to apply to the returned intent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Optional. Indicates whether this is a fallback intent."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity)."
        },
        "liveAgentHandoff": {
          "type": "boolean",
          "description": "Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessage"
          },
          "description": "Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console."
        },
        "mlDisabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off."
        },
        "name": {
          "type": "string",
          "description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Format: `projects//agent/intents/`."
        },
        "outputContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2Context"
          },
          "description": "Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentParameter"
          },
          "description": "Optional. The collection of parameters associated with the intent."
        },
        "parentFollowupIntentName": {
          "type": "string",
          "description": "Read-only after creation. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`."
        },
        "priority": {
          "type": "integer",
          "description": "Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resetContexts": {
          "type": "boolean",
          "description": "Optional. Indicates whether to delete all contexts in the current session when this intent is matched."
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentTrainingPhrase"
          },
          "description": "Optional. The collection of examples that the agent is trained on."
        },
        "webhookState": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:IntentWebhookState",
          "description": "Optional. Indicates whether webhooks are enabled for the intent."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2:KnowledgeBase": {
      "description": "Creates a knowledge base.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the knowledge base. The name must be 1024 bytes or less; otherwise, the creation request fails."
        },
        "languageCode": {
          "type": "string",
          "description": "Language which represents the KnowledgeBase. When the KnowledgeBase is created/updated, expect this to be present for non en-us languages. When unspecified, the default language code en-us applies."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "languageCode",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the knowledge base. The name must be 1024 bytes or less; otherwise, the creation request fails."
        },
        "languageCode": {
          "type": "string",
          "description": "Language which represents the KnowledgeBase. When the KnowledgeBase is created/updated, expect this to be present for non en-us languages. When unspecified, the default language code en-us applies."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2:Participant": {
      "description": "Creates a new participant in a conversation.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "conversationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "documentsMetadataFilters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their Document.metadata. Multiple values for a metadata key should be concatenated by comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values will be ``` documents_metadata_filters { key: \"market\" value: \"US,CA\" } documents_metadata_filters { key: \"user\" value: \"agent\" } ```"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`."
        },
        "obfuscatedExternalUserId": {
          "type": "string",
          "description": "Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow returns an error if you try to add a user id for a non-END_USER participant. Dialogflow uses this user id for billing and measurement purposes. For example, Dialogflow determines whether a user in one conversation returned in a later conversation. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be <= 256 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "role": {
          "type": "string",
          "description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable."
        },
        "sipRecordingMediaLabel": {
          "type": "string",
          "description": "Optional. Label applied to streams representing this participant in SIPREC XML metadata and SDP. This is used to assign transcriptions from that media stream to this participant. This field can be updated."
        }
      },
      "type": "object",
      "required": [
        "conversationId",
        "documentsMetadataFilters",
        "location",
        "name",
        "obfuscatedExternalUserId",
        "project",
        "role",
        "sipRecordingMediaLabel"
      ],
      "inputProperties": {
        "conversationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "documentsMetadataFilters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their Document.metadata. Multiple values for a metadata key should be concatenated by comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values will be ``` documents_metadata_filters { key: \"market\" value: \"US,CA\" } documents_metadata_filters { key: \"user\" value: \"agent\" } ```"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`."
        },
        "obfuscatedExternalUserId": {
          "type": "string",
          "description": "Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow returns an error if you try to add a user id for a non-END_USER participant. Dialogflow uses this user id for billing and measurement purposes. For example, Dialogflow determines whether a user in one conversation returned in a later conversation. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be <= 256 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:ParticipantRole",
          "description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable."
        },
        "sipRecordingMediaLabel": {
          "type": "string",
          "description": "Optional. Label applied to streams representing this participant in SIPREC XML metadata and SDP. This is used to assign transcriptions from that media stream to this participant. This field can be updated."
        }
      },
      "requiredInputs": [
        "conversationId"
      ]
    },
    "google-native:dialogflow/v2:SessionEntityType": {
      "description": "Creates a session entity type. If the specified session entity type already exists, overrides the session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EntityTypeEntityResponse"
          },
          "description": "The collection of entities associated with this session entity type."
        },
        "entityOverrideMode": {
          "type": "string",
          "description": "Indicates whether the additional data should override or supplement the custom entity type definition."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this session entity type. Format: `projects//agent/sessions//entityTypes/`, or `projects//agent/environments//users//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "entities",
        "entityOverrideMode",
        "environmentId",
        "location",
        "name",
        "project",
        "sessionId",
        "userId"
      ],
      "inputProperties": {
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EntityTypeEntity"
          },
          "description": "The collection of entities associated with this session entity type."
        },
        "entityOverrideMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv2:SessionEntityTypeEntityOverrideMode",
          "description": "Indicates whether the additional data should override or supplement the custom entity type definition."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this session entity type. Format: `projects//agent/sessions//entityTypes/`, or `projects//agent/environments//users//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "entities",
        "entityOverrideMode",
        "environmentId",
        "name",
        "sessionId",
        "userId"
      ]
    },
    "google-native:dialogflow/v2:Version": {
      "description": "Creates an agent version. The new version points to the agent instance in the \"default\" environment.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation time of this version. This field is read-only, i.e., it cannot be set by create and update methods."
        },
        "description": {
          "type": "string",
          "description": "Optional. The developer-provided description of this version."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this agent version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "The status of this version. This field is read-only and cannot be set by create and update methods."
        },
        "versionNumber": {
          "type": "integer",
          "description": "The sequential number of this version. This field is read-only which means it cannot be set by create and update methods."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "name",
        "project",
        "status",
        "versionNumber"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. The developer-provided description of this version."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:dialogflow/v2beta1:Context": {
      "description": "Creates a context. If the specified context already exists, overrides the context.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lifespanCount": {
          "type": "integer",
          "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`"
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "environmentId",
        "lifespanCount",
        "location",
        "name",
        "parameters",
        "project",
        "sessionId",
        "userId"
      ],
      "inputProperties": {
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lifespanCount": {
          "type": "integer",
          "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`"
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "environmentId",
        "name",
        "sessionId",
        "userId"
      ]
    },
    "google-native:dialogflow/v2beta1:Conversation": {
      "description": "Creates a new conversation. Conversations are auto-completed after 24 hours. Conversation Lifecycle: There are two stages during a conversation: Automated Agent Stage and Assist Stage. For Automated Agent Stage, there will be a dialogflow agent responding to user queries. For Assist Stage, there's no dialogflow agent responding to user queries. But we will provide suggestions which are generated from conversation. If Conversation.conversation_profile is configured for a dialogflow agent, conversation will start from `Automated Agent Stage`, otherwise, it will start from `Assist Stage`. And during `Automated Agent Stage`, once an Intent with Intent.live_agent_handoff is triggered, conversation will transfer to Assist Stage.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "conversationId": {
          "type": "string",
          "description": "Optional. Identifier of the conversation. Generally it's auto generated by Google. Only set it if you cannot wait for the response to return a auto-generated one to you. The conversation ID must be compliant with the regression fomula `a-zA-Z*` with the characters length in range of [3,64]. If the field is provided, the caller is resposible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness."
        },
        "conversationProfile": {
          "type": "string",
          "description": "The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`."
        },
        "conversationStage": {
          "type": "string",
          "description": "The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE."
        },
        "endTime": {
          "type": "string",
          "description": "The time the conversation was finished."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The current state of the Conversation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this conversation. Format: `projects//locations//conversations/`."
        },
        "phoneNumber": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1ConversationPhoneNumberResponse",
          "description": "Required if the conversation is to be connected over telephony."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The time the conversation was started."
        }
      },
      "type": "object",
      "required": [
        "conversationProfile",
        "conversationStage",
        "endTime",
        "lifecycleState",
        "location",
        "name",
        "phoneNumber",
        "project",
        "startTime"
      ],
      "inputProperties": {
        "conversationId": {
          "type": "string",
          "description": "Optional. Identifier of the conversation. Generally it's auto generated by Google. Only set it if you cannot wait for the response to return a auto-generated one to you. The conversation ID must be compliant with the regression fomula `a-zA-Z*` with the characters length in range of [3,64]. If the field is provided, the caller is resposible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness."
        },
        "conversationProfile": {
          "type": "string",
          "description": "The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`."
        },
        "conversationStage": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:ConversationConversationStage",
          "description": "The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "conversationProfile"
      ]
    },
    "google-native:dialogflow/v2beta1:ConversationProfile": {
      "description": "Creates a conversation profile in the specified project. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren't populated in the response. You can retrieve them via GetConversationProfile API.",
      "properties": {
        "automatedAgentConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1AutomatedAgentConfigResponse",
          "description": "Configuration for an automated agent to use with this profile."
        },
        "createTime": {
          "type": "string",
          "description": "Create time of the conversation profile."
        },
        "displayName": {
          "type": "string",
          "description": "Human readable name for this profile. Max length 1024 bytes."
        },
        "humanAgentAssistantConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigResponse",
          "description": "Configuration for agent assistance to use with this profile."
        },
        "humanAgentHandoffConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigResponse",
          "description": "Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access."
        },
        "languageCode": {
          "type": "string",
          "description": "Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-us languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1LoggingConfigResponse",
          "description": "Configuration for logging conversation lifecycle events."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`."
        },
        "newMessageEventNotificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfigResponse",
          "description": "Configuration for publishing new message events. Event will be sent in format of ConversationEvent"
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfigResponse",
          "description": "Configuration for publishing conversation lifecycle events."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securitySettings": {
          "type": "string",
          "description": "Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`."
        },
        "sttConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SpeechToTextConfigResponse",
          "description": "Settings for speech transcription."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York."
        },
        "ttsConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SynthesizeSpeechConfigResponse",
          "description": "Configuration for Text-to-Speech synthesization. Used by Phone Gateway to specify synthesization options. If agent defines synthesization options as well, agent settings overrides the option here."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time of the conversation profile."
        }
      },
      "type": "object",
      "required": [
        "automatedAgentConfig",
        "createTime",
        "displayName",
        "humanAgentAssistantConfig",
        "humanAgentHandoffConfig",
        "languageCode",
        "location",
        "loggingConfig",
        "name",
        "newMessageEventNotificationConfig",
        "notificationConfig",
        "project",
        "securitySettings",
        "sttConfig",
        "timeZone",
        "ttsConfig",
        "updateTime"
      ],
      "inputProperties": {
        "automatedAgentConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1AutomatedAgentConfig",
          "description": "Configuration for an automated agent to use with this profile."
        },
        "displayName": {
          "type": "string",
          "description": "Human readable name for this profile. Max length 1024 bytes."
        },
        "humanAgentAssistantConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfig",
          "description": "Configuration for agent assistance to use with this profile."
        },
        "humanAgentHandoffConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfig",
          "description": "Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access."
        },
        "languageCode": {
          "type": "string",
          "description": "Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-us languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1LoggingConfig",
          "description": "Configuration for logging conversation lifecycle events."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`."
        },
        "newMessageEventNotificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfig",
          "description": "Configuration for publishing new message events. Event will be sent in format of ConversationEvent"
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfig",
          "description": "Configuration for publishing conversation lifecycle events."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securitySettings": {
          "type": "string",
          "description": "Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`."
        },
        "sttConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SpeechToTextConfig",
          "description": "Settings for speech transcription."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York."
        },
        "ttsConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig",
          "description": "Configuration for Text-to-Speech synthesization. Used by Phone Gateway to specify synthesization options. If agent defines synthesization options as well, agent settings overrides the option here."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2beta1:Document": {
      "description": "Creates a new document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
      "properties": {
        "content": {
          "type": "string",
          "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types. Note: This field is in the process of being deprecated, please use raw_content instead."
        },
        "contentUri": {
          "type": "string",
          "description": "The URI where the file content is located. For documents stored in Google Cloud Storage, these URIs must have the form `gs:///`. NOTE: External URLs must correspond to public webpages, i.e., they must be indexed by Google Search. In particular, URLs for showing documents in Google Cloud Storage (i.e. the URL in your browser) are not supported. Instead use the `gs://` format URI described above."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the document. The name must be 1024 bytes or less; otherwise, the creation request fails."
        },
        "enableAutoReload": {
          "type": "boolean",
          "description": "Optional. If true, we try to automatically reload the document every day (at a time picked by the system). If false or unspecified, we don't try to automatically reload the document. Currently you can only enable automatic reload for documents sourced from a public url, see `source` field for the source types. Reload status can be tracked in `latest_reload_status`. If a reload fails, we will keep the document unchanged. If a reload fails with internal errors, the system will try to reload the document on the next day. If a reload fails with non-retriable errors (e.g. PERMISSION_DENIED), the system will not try to reload the document anymore. You need to manually reload the document successfully by calling `ReloadDocument` and clear the errors."
        },
        "importGcsCustomMetadata": {
          "type": "boolean",
          "description": "Whether to import custom metadata from Google Cloud Storage. Only valid when the document source is Google Cloud Storage URI."
        },
        "knowledgeBaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "knowledgeTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The knowledge type of document content."
        },
        "latestReloadStatus": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1DocumentReloadStatusResponse",
          "description": "The time and status of the latest reload. This reload may have been triggered automatically or manually and may not have succeeded."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the document. The metadata supports arbitrary key-value pairs. Suggested use cases include storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a `key` or a `value` of the metadata is 1024 bytes."
        },
        "mimeType": {
          "type": "string",
          "description": "The MIME type of this document."
        },
        "name": {
          "type": "string",
          "description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawContent": {
          "type": "string",
          "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types."
        },
        "state": {
          "type": "string",
          "description": "The current state of the document."
        }
      },
      "type": "object",
      "required": [
        "content",
        "contentUri",
        "displayName",
        "enableAutoReload",
        "knowledgeBaseId",
        "knowledgeTypes",
        "latestReloadStatus",
        "location",
        "metadata",
        "mimeType",
        "name",
        "project",
        "rawContent",
        "state"
      ],
      "inputProperties": {
        "content": {
          "type": "string",
          "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types. Note: This field is in the process of being deprecated, please use raw_content instead."
        },
        "contentUri": {
          "type": "string",
          "description": "The URI where the file content is located. For documents stored in Google Cloud Storage, these URIs must have the form `gs:///`. NOTE: External URLs must correspond to public webpages, i.e., they must be indexed by Google Search. In particular, URLs for showing documents in Google Cloud Storage (i.e. the URL in your browser) are not supported. Instead use the `gs://` format URI described above."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the document. The name must be 1024 bytes or less; otherwise, the creation request fails."
        },
        "enableAutoReload": {
          "type": "boolean",
          "description": "Optional. If true, we try to automatically reload the document every day (at a time picked by the system). If false or unspecified, we don't try to automatically reload the document. Currently you can only enable automatic reload for documents sourced from a public url, see `source` field for the source types. Reload status can be tracked in `latest_reload_status`. If a reload fails, we will keep the document unchanged. If a reload fails with internal errors, the system will try to reload the document on the next day. If a reload fails with non-retriable errors (e.g. PERMISSION_DENIED), the system will not try to reload the document anymore. You need to manually reload the document successfully by calling `ReloadDocument` and clear the errors."
        },
        "importGcsCustomMetadata": {
          "type": "boolean",
          "description": "Whether to import custom metadata from Google Cloud Storage. Only valid when the document source is Google Cloud Storage URI."
        },
        "knowledgeBaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "knowledgeTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:DocumentKnowledgeTypesItem"
          },
          "description": "The knowledge type of document content."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the document. The metadata supports arbitrary key-value pairs. Suggested use cases include storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a `key` or a `value` of the metadata is 1024 bytes."
        },
        "mimeType": {
          "type": "string",
          "description": "The MIME type of this document."
        },
        "name": {
          "type": "string",
          "description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawContent": {
          "type": "string",
          "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types."
        }
      },
      "requiredInputs": [
        "displayName",
        "knowledgeBaseId",
        "knowledgeTypes",
        "mimeType"
      ]
    },
    "google-native:dialogflow/v2beta1:EntityType": {
      "description": "Creates an entity type in the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "autoExpansionMode": {
          "type": "string",
          "description": "Optional. Indicates whether the entity type can be automatically expanded."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the entity type."
        },
        "enableFuzzyExtraction": {
          "type": "boolean",
          "description": "Optional. Enables fuzzy entity extraction during classification."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1EntityTypeEntityResponse"
          },
          "description": "Optional. The collection of entity entries associated with the entity type."
        },
        "kind": {
          "type": "string",
          "description": "Indicates the kind of entity type."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "autoExpansionMode",
        "displayName",
        "enableFuzzyExtraction",
        "entities",
        "kind",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "autoExpansionMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:EntityTypeAutoExpansionMode",
          "description": "Optional. Indicates whether the entity type can be automatically expanded."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the entity type."
        },
        "enableFuzzyExtraction": {
          "type": "boolean",
          "description": "Optional. Enables fuzzy entity extraction during classification."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1EntityTypeEntity"
          },
          "description": "Optional. The collection of entity entries associated with the entity type."
        },
        "kind": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:EntityTypeKind",
          "description": "Indicates the kind of entity type."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName",
        "kind"
      ]
    },
    "google-native:dialogflow/v2beta1:Environment": {
      "description": "Creates an agent environment.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "agentVersion": {
          "type": "string",
          "description": "Optional. The agent version loaded into this environment. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`"
        },
        "description": {
          "type": "string",
          "description": "Optional. The developer-provided description for this environment. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "environmentId": {
          "type": "string",
          "description": "Required. The unique id of the new environment.",
          "replaceOnChanges": true
        },
        "fulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1FulfillmentResponse",
          "description": "Optional. The fulfillment settings to use for this environment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this agent environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of this environment. This field is read-only, i.e., it cannot be set by create and update methods."
        },
        "textToSpeechSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1TextToSpeechSettingsResponse",
          "description": "Optional. Text to speech settings for this environment."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time of this environment. This field is read-only, i.e., it cannot be set by create and update methods."
        }
      },
      "type": "object",
      "required": [
        "agentVersion",
        "description",
        "environmentId",
        "fulfillment",
        "location",
        "name",
        "project",
        "state",
        "textToSpeechSettings",
        "updateTime"
      ],
      "inputProperties": {
        "agentVersion": {
          "type": "string",
          "description": "Optional. The agent version loaded into this environment. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`"
        },
        "description": {
          "type": "string",
          "description": "Optional. The developer-provided description for this environment. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "environmentId": {
          "type": "string",
          "description": "Required. The unique id of the new environment.",
          "replaceOnChanges": true
        },
        "fulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1Fulfillment",
          "description": "Optional. The fulfillment settings to use for this environment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "textToSpeechSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1TextToSpeechSettings",
          "description": "Optional. Text to speech settings for this environment."
        }
      },
      "requiredInputs": [
        "environmentId"
      ]
    },
    "google-native:dialogflow/v2beta1:Intent": {
      "description": "Creates an intent in the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "action": {
          "type": "string",
          "description": "Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces."
        },
        "defaultResponsePlatforms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform)."
        },
        "displayName": {
          "type": "string",
          "description": "The name of this intent."
        },
        "endInteraction": {
          "type": "boolean",
          "description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false."
        },
        "events": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters."
        },
        "followupIntentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentFollowupIntentInfoResponse"
          },
          "description": "Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output."
        },
        "inputContextNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of context names required for this intent to be triggered. Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//agent/sessions/-/contexts/`"
        },
        "intentView": {
          "type": "string",
          "description": "Optional. The resource view to apply to the returned intent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Optional. Indicates whether this is a fallback intent."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity)."
        },
        "liveAgentHandoff": {
          "type": "boolean",
          "description": "Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageResponse"
          },
          "description": "Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console."
        },
        "mlDisabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off."
        },
        "mlEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false.",
          "deprecationMessage": "Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false."
        },
        "name": {
          "type": "string",
          "description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`"
        },
        "outputContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1ContextResponse"
          },
          "description": "Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentParameterResponse"
          },
          "description": "Optional. The collection of parameters associated with the intent."
        },
        "parentFollowupIntentName": {
          "type": "string",
          "description": "Optional. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`."
        },
        "priority": {
          "type": "integer",
          "description": "Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resetContexts": {
          "type": "boolean",
          "description": "Optional. Indicates whether to delete all contexts in the current session when this intent is matched."
        },
        "rootFollowupIntentName": {
          "type": "string",
          "description": "The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. Format: `projects//agent/intents/`."
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhraseResponse"
          },
          "description": "Optional. The collection of examples that the agent is trained on."
        },
        "webhookState": {
          "type": "string",
          "description": "Optional. Indicates whether webhooks are enabled for the intent."
        }
      },
      "type": "object",
      "required": [
        "action",
        "defaultResponsePlatforms",
        "displayName",
        "endInteraction",
        "events",
        "followupIntentInfo",
        "inputContextNames",
        "isFallback",
        "liveAgentHandoff",
        "location",
        "messages",
        "mlDisabled",
        "mlEnabled",
        "name",
        "outputContexts",
        "parameters",
        "parentFollowupIntentName",
        "priority",
        "project",
        "resetContexts",
        "rootFollowupIntentName",
        "trainingPhrases",
        "webhookState"
      ],
      "inputProperties": {
        "action": {
          "type": "string",
          "description": "Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces."
        },
        "defaultResponsePlatforms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:IntentDefaultResponsePlatformsItem"
          },
          "description": "Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform)."
        },
        "displayName": {
          "type": "string",
          "description": "The name of this intent."
        },
        "endInteraction": {
          "type": "boolean",
          "description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false."
        },
        "events": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters."
        },
        "inputContextNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of context names required for this intent to be triggered. Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//agent/sessions/-/contexts/`"
        },
        "intentView": {
          "type": "string",
          "description": "Optional. The resource view to apply to the returned intent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Optional. Indicates whether this is a fallback intent."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity)."
        },
        "liveAgentHandoff": {
          "type": "boolean",
          "description": "Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessage"
          },
          "description": "Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console."
        },
        "mlDisabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off."
        },
        "mlEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false.",
          "deprecationMessage": "Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false."
        },
        "name": {
          "type": "string",
          "description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`"
        },
        "outputContexts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1Context"
          },
          "description": "Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentParameter"
          },
          "description": "Optional. The collection of parameters associated with the intent."
        },
        "parentFollowupIntentName": {
          "type": "string",
          "description": "Optional. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`."
        },
        "priority": {
          "type": "integer",
          "description": "Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resetContexts": {
          "type": "boolean",
          "description": "Optional. Indicates whether to delete all contexts in the current session when this intent is matched."
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhrase"
          },
          "description": "Optional. The collection of examples that the agent is trained on."
        },
        "webhookState": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:IntentWebhookState",
          "description": "Optional. Indicates whether webhooks are enabled for the intent."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2beta1:KnowledgeBase": {
      "description": "Creates a knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the knowledge base. The name must be 1024 bytes or less; otherwise, the creation request fails."
        },
        "languageCode": {
          "type": "string",
          "description": "Language which represents the KnowledgeBase. When the KnowledgeBase is created/updated, this is populated for all non en-us languages. If not populated, the default language en-us applies."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "languageCode",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the knowledge base. The name must be 1024 bytes or less; otherwise, the creation request fails."
        },
        "languageCode": {
          "type": "string",
          "description": "Language which represents the KnowledgeBase. When the KnowledgeBase is created/updated, this is populated for all non en-us languages. If not populated, the default language en-us applies."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v2beta1:Participant": {
      "description": "Creates a new participant in a conversation.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "conversationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "documentsMetadataFilters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their Document.metadata. Multiple values for a metadata key should be concatenated by comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values will be ``` documents_metadata_filters { key: \"market\" value: \"US,CA\" } documents_metadata_filters { key: \"user\" value: \"agent\" } ```"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`."
        },
        "obfuscatedExternalUserId": {
          "type": "string",
          "description": "Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for billing and measurement. If a user with the same obfuscated_external_user_id is created in a later conversation, Dialogflow will know it's the same user. Dialogflow also uses this user id for Agent Assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be <= 256 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "role": {
          "type": "string",
          "description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable."
        }
      },
      "type": "object",
      "required": [
        "conversationId",
        "documentsMetadataFilters",
        "location",
        "name",
        "obfuscatedExternalUserId",
        "project",
        "role"
      ],
      "inputProperties": {
        "conversationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "documentsMetadataFilters": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their Document.metadata. Multiple values for a metadata key should be concatenated by comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values will be ``` documents_metadata_filters { key: \"market\" value: \"US,CA\" } documents_metadata_filters { key: \"user\" value: \"agent\" } ```"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`."
        },
        "obfuscatedExternalUserId": {
          "type": "string",
          "description": "Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for billing and measurement. If a user with the same obfuscated_external_user_id is created in a later conversation, Dialogflow will know it's the same user. Dialogflow also uses this user id for Agent Assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be <= 256 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:ParticipantRole",
          "description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable."
        }
      },
      "requiredInputs": [
        "conversationId"
      ]
    },
    "google-native:dialogflow/v2beta1:SessionEntityType": {
      "description": "Creates a session entity type. If the specified session entity type already exists, overrides the session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1EntityTypeEntityResponse"
          },
          "description": "The collection of entities associated with this session entity type."
        },
        "entityOverrideMode": {
          "type": "string",
          "description": "Indicates whether the additional data should override or supplement the custom entity type definition."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "entities",
        "entityOverrideMode",
        "environmentId",
        "location",
        "name",
        "project",
        "sessionId",
        "userId"
      ],
      "inputProperties": {
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1EntityTypeEntity"
          },
          "description": "The collection of entities associated with this session entity type."
        },
        "entityOverrideMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv2beta1:SessionEntityTypeEntityOverrideMode",
          "description": "Indicates whether the additional data should override or supplement the custom entity type definition."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "entities",
        "entityOverrideMode",
        "environmentId",
        "name",
        "sessionId",
        "userId"
      ]
    },
    "google-native:dialogflow/v2beta1:Version": {
      "description": "Creates an agent version. The new version points to the agent instance in the \"default\" environment.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation time of this version. This field is read-only, i.e., it cannot be set by create and update methods."
        },
        "description": {
          "type": "string",
          "description": "Optional. The developer-provided description of this version."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of this agent version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "The status of this version. This field is read-only and cannot be set by create and update methods."
        },
        "versionNumber": {
          "type": "integer",
          "description": "The sequential number of this version. This field is read-only which means it cannot be set by create and update methods."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "name",
        "project",
        "status",
        "versionNumber"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. The developer-provided description of this version."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:dialogflow/v3:Agent": {
      "description": "Creates an agent in the specified location. Note: You should always train flows prior to sending them queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this agent. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "answerFeedbackSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentAnswerFeedbackSettingsResponse",
          "description": "Optional. Answer feedback collection settings."
        },
        "avatarUri": {
          "type": "string",
          "description": "The URI of the agent's avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration."
        },
        "defaultLanguageCode": {
          "type": "string",
          "description": "Immutable. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the Agents.UpdateAgent method."
        },
        "description": {
          "type": "string",
          "description": "The description of the agent. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the agent, unique within the location."
        },
        "enableSpellCorrection": {
          "type": "boolean",
          "description": "Indicates if automatic spell correction is enabled in detect intent requests."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Indicates if stackdriver logging is enabled for the agent. Please use agent.advanced_settings instead."
        },
        "genAppBuilderSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentGenAppBuilderSettingsResponse",
          "description": "Gen App Builder-related agent-level settings."
        },
        "gitIntegrationSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettingsResponse",
          "description": "Git integration settings for this agent."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Indicates whether the agent is locked for changes. If the agent is locked, modifications to the agent will be rejected except for RestoreAgent."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the agent. Required for the Agents.UpdateAgent method. Agents.CreateAgent populates the name automatically. Format: `projects//locations//agents/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securitySettings": {
          "type": "string",
          "description": "Name of the SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`."
        },
        "speechToTextSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SpeechToTextSettingsResponse",
          "description": "Speech recognition related settings."
        },
        "startFlow": {
          "type": "string",
          "description": "Immutable. Name of the start flow in this agent. A start flow will be automatically created when the agent is created, and can only be deleted by deleting the agent. Format: `projects//locations//agents//flows/`."
        },
        "supportedLanguageCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of all languages supported by the agent (except for the `default_language_code`)."
        },
        "textToSpeechSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TextToSpeechSettingsResponse",
          "description": "Settings on instructing the speech synthesizer on how to generate the output audio content."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "answerFeedbackSettings",
        "avatarUri",
        "defaultLanguageCode",
        "description",
        "displayName",
        "enableSpellCorrection",
        "enableStackdriverLogging",
        "genAppBuilderSettings",
        "gitIntegrationSettings",
        "location",
        "locked",
        "name",
        "project",
        "securitySettings",
        "speechToTextSettings",
        "startFlow",
        "supportedLanguageCodes",
        "textToSpeechSettings",
        "timeZone"
      ],
      "inputProperties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettings",
          "description": "Hierarchical advanced settings for this agent. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "answerFeedbackSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentAnswerFeedbackSettings",
          "description": "Optional. Answer feedback collection settings."
        },
        "avatarUri": {
          "type": "string",
          "description": "The URI of the agent's avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration."
        },
        "defaultLanguageCode": {
          "type": "string",
          "description": "Immutable. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the Agents.UpdateAgent method."
        },
        "description": {
          "type": "string",
          "description": "The description of the agent. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the agent, unique within the location."
        },
        "enableSpellCorrection": {
          "type": "boolean",
          "description": "Indicates if automatic spell correction is enabled in detect intent requests."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Indicates if stackdriver logging is enabled for the agent. Please use agent.advanced_settings instead."
        },
        "genAppBuilderSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentGenAppBuilderSettings",
          "description": "Gen App Builder-related agent-level settings."
        },
        "gitIntegrationSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettings",
          "description": "Git integration settings for this agent."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Indicates whether the agent is locked for changes. If the agent is locked, modifications to the agent will be rejected except for RestoreAgent."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the agent. Required for the Agents.UpdateAgent method. Agents.CreateAgent populates the name automatically. Format: `projects//locations//agents/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securitySettings": {
          "type": "string",
          "description": "Name of the SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`."
        },
        "speechToTextSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SpeechToTextSettings",
          "description": "Speech recognition related settings."
        },
        "startFlow": {
          "type": "string",
          "description": "Immutable. Name of the start flow in this agent. A start flow will be automatically created when the agent is created, and can only be deleted by deleting the agent. Format: `projects//locations//agents//flows/`."
        },
        "supportedLanguageCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of all languages supported by the agent (except for the `default_language_code`)."
        },
        "textToSpeechSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TextToSpeechSettings",
          "description": "Settings on instructing the speech synthesizer on how to generate the output audio content."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris."
        }
      },
      "requiredInputs": [
        "defaultLanguageCode",
        "displayName",
        "timeZone"
      ]
    },
    "google-native:dialogflow/v3:EntityType": {
      "description": "Creates an entity type in the specified agent. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "autoExpansionMode": {
          "type": "string",
          "description": "Indicates whether the entity type can be automatically expanded."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the entity type, unique within the agent."
        },
        "enableFuzzyExtraction": {
          "type": "boolean",
          "description": "Enables fuzzy entity extraction during classification."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeEntityResponse"
          },
          "description": "The collection of entity entries associated with the entity type."
        },
        "excludedPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeExcludedPhraseResponse"
          },
          "description": "Collection of exceptional words and phrases that shouldn't be matched. For example, if you have a size entity type with entry `giant`(an adjective), you might consider adding `giants`(a noun) as an exclusion. If the kind of entity type is `KIND_MAP`, then the phrases specified by entities and excluded phrases should be mutually exclusive."
        },
        "kind": {
          "type": "string",
          "description": "Indicates the kind of entity type."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `entity_type`: * `EntityType.entities.value` * `EntityType.entities.synonyms` * `EntityType.excluded_phrases.value` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType. Format: `projects//locations//agents//entityTypes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether parameters of the entity type should be redacted in log. If redaction is enabled, page parameters and intent parameters referring to the entity type will be replaced by parameter name when logging."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "autoExpansionMode",
        "displayName",
        "enableFuzzyExtraction",
        "entities",
        "excludedPhrases",
        "kind",
        "location",
        "name",
        "project",
        "redact"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "autoExpansionMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:EntityTypeAutoExpansionMode",
          "description": "Indicates whether the entity type can be automatically expanded."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the entity type, unique within the agent."
        },
        "enableFuzzyExtraction": {
          "type": "boolean",
          "description": "Enables fuzzy entity extraction during classification."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeEntity"
          },
          "description": "The collection of entity entries associated with the entity type."
        },
        "excludedPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeExcludedPhrase"
          },
          "description": "Collection of exceptional words and phrases that shouldn't be matched. For example, if you have a size entity type with entry `giant`(an adjective), you might consider adding `giants`(a noun) as an exclusion. If the kind of entity type is `KIND_MAP`, then the phrases specified by entities and excluded phrases should be mutually exclusive."
        },
        "kind": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:EntityTypeKind",
          "description": "Indicates the kind of entity type."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `entity_type`: * `EntityType.entities.value` * `EntityType.entities.synonyms` * `EntityType.excluded_phrases.value` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType. Format: `projects//locations//agents//entityTypes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether parameters of the entity type should be redacted in log. If redaction is enabled, page parameters and intent parameters referring to the entity type will be replaced by parameter name when logging."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "kind"
      ]
    },
    "google-native:dialogflow/v3:Environment": {
      "description": "Creates an Environment in the specified Agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: Environment",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The human-readable description of the environment. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the environment (unique in an agent). Limit of 64 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the environment. Format: `projects//locations//agents//environments/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "testCasesConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentTestCasesConfigResponse",
          "description": "The test cases config for continuous tests of this environment."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time of this environment."
        },
        "versionConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentVersionConfigResponse"
          },
          "description": "A list of configurations for flow versions. You should include version configs for all flows that are reachable from `Start Flow` in the agent. Otherwise, an error will be returned."
        },
        "webhookConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentWebhookConfigResponse",
          "description": "The webhook configuration for this environment."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "description",
        "displayName",
        "location",
        "name",
        "project",
        "testCasesConfig",
        "updateTime",
        "versionConfigs",
        "webhookConfig"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The human-readable description of the environment. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the environment (unique in an agent). Limit of 64 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the environment. Format: `projects//locations//agents//environments/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "testCasesConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentTestCasesConfig",
          "description": "The test cases config for continuous tests of this environment."
        },
        "versionConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentVersionConfig"
          },
          "description": "A list of configurations for flow versions. You should include version configs for all flows that are reachable from `Start Flow` in the agent. Otherwise, an error will be returned."
        },
        "webhookConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentWebhookConfig",
          "description": "The webhook configuration for this environment."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3:Experiment": {
      "description": "Creates an Experiment in the specified Environment.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this experiment."
        },
        "definition": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentDefinitionResponse",
          "description": "The definition of the experiment."
        },
        "description": {
          "type": "string",
          "description": "The human-readable description of the experiment."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the experiment (unique in an environment). Limit of 64 characters."
        },
        "endTime": {
          "type": "string",
          "description": "End time of this experiment."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "experimentLength": {
          "type": "string",
          "description": "Maximum number of days to run the experiment/rollout. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days."
        },
        "lastUpdateTime": {
          "type": "string",
          "description": "Last update time of this experiment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the experiment. Format: projects//locations//agents//environments//experiments/.."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "result": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultResponse",
          "description": "Inference result of the experiment."
        },
        "rolloutConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3RolloutConfigResponse",
          "description": "The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow."
        },
        "rolloutFailureReason": {
          "type": "string",
          "description": "The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED."
        },
        "rolloutState": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3RolloutStateResponse",
          "description": "State of the auto rollout process."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of this experiment."
        },
        "state": {
          "type": "string",
          "description": "The current state of the experiment. Transition triggered by Experiments.StartExperiment: DRAFT->RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT->DONE or RUNNING->DONE."
        },
        "variantsHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VariantsHistoryResponse"
          },
          "description": "The history of updates to the experiment variants."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "createTime",
        "definition",
        "description",
        "displayName",
        "endTime",
        "environmentId",
        "experimentLength",
        "lastUpdateTime",
        "location",
        "name",
        "project",
        "result",
        "rolloutConfig",
        "rolloutFailureReason",
        "rolloutState",
        "startTime",
        "state",
        "variantsHistory"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this experiment."
        },
        "definition": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentDefinition",
          "description": "The definition of the experiment."
        },
        "description": {
          "type": "string",
          "description": "The human-readable description of the experiment."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the experiment (unique in an environment). Limit of 64 characters."
        },
        "endTime": {
          "type": "string",
          "description": "End time of this experiment."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "experimentLength": {
          "type": "string",
          "description": "Maximum number of days to run the experiment/rollout. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days."
        },
        "lastUpdateTime": {
          "type": "string",
          "description": "Last update time of this experiment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the experiment. Format: projects//locations//agents//environments//experiments/.."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "result": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResult",
          "description": "Inference result of the experiment."
        },
        "rolloutConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3RolloutConfig",
          "description": "The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow."
        },
        "rolloutFailureReason": {
          "type": "string",
          "description": "The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED."
        },
        "rolloutState": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3RolloutState",
          "description": "State of the auto rollout process."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of this experiment."
        },
        "state": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:ExperimentState",
          "description": "The current state of the experiment. Transition triggered by Experiments.StartExperiment: DRAFT->RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT->DONE or RUNNING->DONE."
        },
        "variantsHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VariantsHistory"
          },
          "description": "The history of updates to the experiment variants."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "environmentId"
      ]
    },
    "google-native:dialogflow/v3:Flow": {
      "description": "Creates a flow in the specified agent. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the flow."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandlerResponse"
          },
          "description": "A flow's event handlers serve two purposes: * They are responsible for handling events (e.g. no match, webhook errors) in the flow. * They are inherited by every page's event handlers, which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow. Unlike transition_routes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettingsResponse",
          "description": "Optional. Knowledge connector configuration."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `flow`: * `Flow.event_handlers.trigger_fulfillment.messages` * `Flow.event_handlers.trigger_fulfillment.conditional_cases` * `Flow.transition_routes.trigger_fulfillment.messages` * `Flow.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the flow. Format: `projects//locations//agents//flows/`."
        },
        "nluSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3NluSettingsResponse",
          "description": "NLU related settings of the flow."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A flow's transition route group serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition route groups. Transition route groups defined in the page have higher priority than those defined in the flow. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRouteResponse"
          },
          "description": "A flow's transition routes serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition routes and can support use cases such as the user saying \"help\" or \"can I talk to a human?\", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow. TransitionRoutes are evalauted in the following order: * TransitionRoutes with intent specified. * TransitionRoutes with only condition specified. TransitionRoutes with intent specified are inherited by pages in the flow."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "agentId",
        "description",
        "displayName",
        "eventHandlers",
        "knowledgeConnectorSettings",
        "location",
        "name",
        "nluSettings",
        "project",
        "transitionRouteGroups",
        "transitionRoutes"
      ],
      "inputProperties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettings",
          "description": "Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the flow."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandler"
          },
          "description": "A flow's event handlers serve two purposes: * They are responsible for handling events (e.g. no match, webhook errors) in the flow. * They are inherited by every page's event handlers, which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow. Unlike transition_routes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettings",
          "description": "Optional. Knowledge connector configuration."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `flow`: * `Flow.event_handlers.trigger_fulfillment.messages` * `Flow.event_handlers.trigger_fulfillment.conditional_cases` * `Flow.transition_routes.trigger_fulfillment.messages` * `Flow.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the flow. Format: `projects//locations//agents//flows/`."
        },
        "nluSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3NluSettings",
          "description": "NLU related settings of the flow."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A flow's transition route group serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition route groups. Transition route groups defined in the page have higher priority than those defined in the flow. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRoute"
          },
          "description": "A flow's transition routes serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition routes and can support use cases such as the user saying \"help\" or \"can I talk to a human?\", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow. TransitionRoutes are evalauted in the following order: * TransitionRoutes with intent specified. * TransitionRoutes with only condition specified. TransitionRoutes with intent specified are inherited by pages in the flow."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3:Intent": {
      "description": "Creates an intent in the specified agent. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the intent, unique within the agent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys.contextual\" means the intent is a contextual intent."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `intent`: * `Intent.training_phrases.parts.text` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentParameterResponse"
          },
          "description": "The collection of parameters associated with the intent."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentTrainingPhraseResponse"
          },
          "description": "The collection of training phrases the agent is trained on to identify the intent."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "description",
        "displayName",
        "isFallback",
        "labels",
        "location",
        "name",
        "parameters",
        "priority",
        "project",
        "trainingPhrases"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the intent, unique within the agent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys.contextual\" means the intent is a contextual intent."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `intent`: * `Intent.training_phrases.parts.text` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentParameter"
          },
          "description": "The collection of parameters associated with the intent."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentTrainingPhrase"
          },
          "description": "The collection of training phrases the agent is trained on to identify the intent."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3:Page": {
      "description": "Creates a page in the specified flow. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the page, unique within the flow."
        },
        "entryFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentResponse",
          "description": "The fulfillment to call when the session is entering the page."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandlerResponse"
          },
          "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "form": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FormResponse",
          "description": "The form associated with the page, used for collecting parameters relevant to the page."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettingsResponse",
          "description": "Optional. Knowledge connector configuration."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `page`: * `Page.entry_fulfillment.messages` * `Page.entry_fulfillment.conditional_cases` * `Page.event_handlers.trigger_fulfillment.messages` * `Page.event_handlers.trigger_fulfillment.conditional_cases` * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages` * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases` * `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages` * `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases` * `Page.transition_routes.trigger_fulfillment.messages` * `Page.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRouteResponse"
          },
          "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "agentId",
        "displayName",
        "entryFulfillment",
        "eventHandlers",
        "flowId",
        "form",
        "knowledgeConnectorSettings",
        "location",
        "name",
        "project",
        "transitionRouteGroups",
        "transitionRoutes"
      ],
      "inputProperties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettings",
          "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the page, unique within the flow."
        },
        "entryFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Fulfillment",
          "description": "The fulfillment to call when the session is entering the page."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandler"
          },
          "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "form": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3Form",
          "description": "The form associated with the page, used for collecting parameters relevant to the page."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettings",
          "description": "Optional. Knowledge connector configuration."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `page`: * `Page.entry_fulfillment.messages` * `Page.entry_fulfillment.conditional_cases` * `Page.event_handlers.trigger_fulfillment.messages` * `Page.event_handlers.trigger_fulfillment.conditional_cases` * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages` * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases` * `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages` * `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases` * `Page.transition_routes.trigger_fulfillment.messages` * `Page.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRoute"
          },
          "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "flowId"
      ]
    },
    "google-native:dialogflow/v3:SecuritySetting": {
      "description": "Create security settings in the specified location.",
      "properties": {
        "audioExportSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SecuritySettingsAudioExportSettingsResponse",
          "description": "Controls audio export settings for post-conversation analytics when ingesting audio to conversations via Participants.AnalyzeContent or Participants.StreamingAnalyzeContent. If retention_strategy is set to REMOVE_AFTER_CONVERSATION or audio_export_settings.gcs_bucket is empty, audio export is disabled. If audio export is enabled, audio is recorded and saved to audio_export_settings.gcs_bucket, subject to retention policy of audio_export_settings.gcs_bucket. This setting won't effect audio input for implicit sessions via Sessions.DetectIntent or Sessions.StreamingDetectIntent."
        },
        "deidentifyTemplate": {
          "type": "string",
          "description": "[DLP](https://cloud.google.com/dlp/docs) deidentify template name. Use this template to define de-identification configuration for the content. The `DLP De-identify Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, Dialogflow replaces sensitive info with `[redacted]` text. The template name will have one of the following formats: `projects//locations//deidentifyTemplates/` OR `organizations//locations//deidentifyTemplates/` Note: `deidentify_template` must be located in the same region as the `SecuritySettings`."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the security settings, unique within the location."
        },
        "insightsExportSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SecuritySettingsInsightsExportSettingsResponse",
          "description": "Controls conversation exporting settings to Insights after conversation is completed. If retention_strategy is set to REMOVE_AFTER_CONVERSATION, Insights export is disabled no matter what you configure here."
        },
        "inspectTemplate": {
          "type": "string",
          "description": "[DLP](https://cloud.google.com/dlp/docs) inspect template name. Use this template to define inspect base settings. The `DLP Inspect Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, we use the default DLP inspect config. The template name will have one of the following formats: `projects//locations//inspectTemplates/` OR `organizations//locations//inspectTemplates/` Note: `inspect_template` must be located in the same region as the `SecuritySettings`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the settings. Required for the SecuritySettingsService.UpdateSecuritySettings method. SecuritySettingsService.CreateSecuritySettings populates the name automatically. Format: `projects//locations//securitySettings/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purgeDataTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of types of data to remove when retention settings triggers purge."
        },
        "redactionScope": {
          "type": "string",
          "description": "Defines the data for which Dialogflow applies redaction. Dialogflow does not redact data that it does not have access to – for example, Cloud logging."
        },
        "redactionStrategy": {
          "type": "string",
          "description": "Strategy that defines how we do redaction."
        },
        "retentionStrategy": {
          "type": "string",
          "description": "Specifies the retention behavior defined by SecuritySettings.RetentionStrategy."
        },
        "retentionWindowDays": {
          "type": "integer",
          "description": "Retains the data for the specified number of days. User must set a value lower than Dialogflow's default 365d TTL (30 days for Agent Assist traffic), higher value will be ignored and use default. Setting a value higher than that has no effect. A missing value or setting to 0 also means we use default TTL."
        }
      },
      "type": "object",
      "required": [
        "audioExportSettings",
        "deidentifyTemplate",
        "displayName",
        "insightsExportSettings",
        "inspectTemplate",
        "location",
        "name",
        "project",
        "purgeDataTypes",
        "redactionScope",
        "redactionStrategy",
        "retentionStrategy",
        "retentionWindowDays"
      ],
      "inputProperties": {
        "audioExportSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SecuritySettingsAudioExportSettings",
          "description": "Controls audio export settings for post-conversation analytics when ingesting audio to conversations via Participants.AnalyzeContent or Participants.StreamingAnalyzeContent. If retention_strategy is set to REMOVE_AFTER_CONVERSATION or audio_export_settings.gcs_bucket is empty, audio export is disabled. If audio export is enabled, audio is recorded and saved to audio_export_settings.gcs_bucket, subject to retention policy of audio_export_settings.gcs_bucket. This setting won't effect audio input for implicit sessions via Sessions.DetectIntent or Sessions.StreamingDetectIntent."
        },
        "deidentifyTemplate": {
          "type": "string",
          "description": "[DLP](https://cloud.google.com/dlp/docs) deidentify template name. Use this template to define de-identification configuration for the content. The `DLP De-identify Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, Dialogflow replaces sensitive info with `[redacted]` text. The template name will have one of the following formats: `projects//locations//deidentifyTemplates/` OR `organizations//locations//deidentifyTemplates/` Note: `deidentify_template` must be located in the same region as the `SecuritySettings`."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the security settings, unique within the location."
        },
        "insightsExportSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SecuritySettingsInsightsExportSettings",
          "description": "Controls conversation exporting settings to Insights after conversation is completed. If retention_strategy is set to REMOVE_AFTER_CONVERSATION, Insights export is disabled no matter what you configure here."
        },
        "inspectTemplate": {
          "type": "string",
          "description": "[DLP](https://cloud.google.com/dlp/docs) inspect template name. Use this template to define inspect base settings. The `DLP Inspect Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, we use the default DLP inspect config. The template name will have one of the following formats: `projects//locations//inspectTemplates/` OR `organizations//locations//inspectTemplates/` Note: `inspect_template` must be located in the same region as the `SecuritySettings`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the settings. Required for the SecuritySettingsService.UpdateSecuritySettings method. SecuritySettingsService.CreateSecuritySettings populates the name automatically. Format: `projects//locations//securitySettings/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purgeDataTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:SecuritySettingPurgeDataTypesItem"
          },
          "description": "List of types of data to remove when retention settings triggers purge."
        },
        "redactionScope": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:SecuritySettingRedactionScope",
          "description": "Defines the data for which Dialogflow applies redaction. Dialogflow does not redact data that it does not have access to – for example, Cloud logging."
        },
        "redactionStrategy": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:SecuritySettingRedactionStrategy",
          "description": "Strategy that defines how we do redaction."
        },
        "retentionStrategy": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:SecuritySettingRetentionStrategy",
          "description": "Specifies the retention behavior defined by SecuritySettings.RetentionStrategy."
        },
        "retentionWindowDays": {
          "type": "integer",
          "description": "Retains the data for the specified number of days. User must set a value lower than Dialogflow's default 365d TTL (30 days for Agent Assist traffic), higher value will be ignored and use default. Setting a value higher than that has no effect. A missing value or setting to 0 also means we use default TTL."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v3:SessionEntityType": {
      "description": "Creates a session entity type.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeEntityResponse"
          },
          "description": "The collection of entities to override or supplement the custom entity type."
        },
        "entityOverrideMode": {
          "type": "string",
          "description": "Indicates whether the additional data should override or supplement the custom entity type definition."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the session entity type. Format: `projects//locations//agents//sessions//entityTypes/` or `projects//locations//agents//environments//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "entities",
        "entityOverrideMode",
        "environmentId",
        "location",
        "name",
        "project",
        "sessionId"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeEntity"
          },
          "description": "The collection of entities to override or supplement the custom entity type."
        },
        "entityOverrideMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:SessionEntityTypeEntityOverrideMode",
          "description": "Indicates whether the additional data should override or supplement the custom entity type definition."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the session entity type. Format: `projects//locations//agents//sessions//entityTypes/` or `projects//locations//agents//environments//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "agentId",
        "entities",
        "entityOverrideMode",
        "environmentId",
        "sessionId"
      ]
    },
    "google-native:dialogflow/v3:TestCase": {
      "description": "Creates a test case for the given agent.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "creationTime": {
          "type": "string",
          "description": "When the test was created."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the test case, unique within the agent. Limit of 200 characters."
        },
        "lastTestResult": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TestCaseResultResponse",
          "description": "The latest test result."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the test case. TestCases.CreateTestCase will populate the name automatically. Otherwise use format: `projects//locations//agents/ /testCases/`."
        },
        "notes": {
          "type": "string",
          "description": "Additional freeform notes about the test case. Limit of 400 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags are short descriptions that users may apply to test cases for organizational and filtering purposes. Each tag should start with \"#\" and has a limit of 30 characters."
        },
        "testCaseConversationTurns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurnResponse"
          },
          "description": "The conversation turns uttered when the test case was created, in chronological order. These include the canonical set of agent utterances that should occur when the agent is working properly."
        },
        "testConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TestConfigResponse",
          "description": "Config for the test case."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "creationTime",
        "displayName",
        "lastTestResult",
        "location",
        "name",
        "notes",
        "project",
        "tags",
        "testCaseConversationTurns",
        "testConfig"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the test case, unique within the agent. Limit of 200 characters."
        },
        "lastTestResult": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TestCaseResult",
          "description": "The latest test result."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the test case. TestCases.CreateTestCase will populate the name automatically. Otherwise use format: `projects//locations//agents/ /testCases/`."
        },
        "notes": {
          "type": "string",
          "description": "Additional freeform notes about the test case. Limit of 400 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags are short descriptions that users may apply to test cases for organizational and filtering purposes. Each tag should start with \"#\" and has a limit of 30 characters."
        },
        "testCaseConversationTurns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurn"
          },
          "description": "The conversation turns uttered when the test case was created, in chronological order. These include the canonical set of agent utterances that should occur when the agent is working properly."
        },
        "testConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TestConfig",
          "description": "Config for the test case."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3:TransitionRouteGroup": {
      "description": "Creates an TransitionRouteGroup in the specified flow. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the transition route group, unique within the flow. The display name can be no longer than 30 characters."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `TransitionRouteGroup`: * `TransitionRouteGroup.transition_routes.trigger_fulfillment.messages` * `TransitionRouteGroup.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the transition route group. TransitionRouteGroups.CreateTransitionRouteGroup populates the name automatically. Format: `projects//locations//agents//flows//transitionRouteGroups/` ."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRouteResponse"
          },
          "description": "Transition routes associated with the TransitionRouteGroup."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "displayName",
        "flowId",
        "location",
        "name",
        "project",
        "transitionRoutes"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the transition route group, unique within the flow. The display name can be no longer than 30 characters."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `TransitionRouteGroup`: * `TransitionRouteGroup.transition_routes.trigger_fulfillment.messages` * `TransitionRouteGroup.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the transition route group. TransitionRouteGroups.CreateTransitionRouteGroup populates the name automatically. Format: `projects//locations//agents//flows//transitionRouteGroups/` ."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRoute"
          },
          "description": "Transition routes associated with the TransitionRouteGroup."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "flowId"
      ]
    },
    "google-native:dialogflow/v3:Version": {
      "description": "Creates a Version in the specified Flow. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: CreateVersionOperationMetadata - `response`: Version",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Create time of the version."
        },
        "description": {
          "type": "string",
          "description": "The description of the version. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the version. Limit of 64 characters."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Format: projects//locations//agents//flows//versions/. Version ID is a self-increasing number generated by Dialogflow upon version creation."
        },
        "nluSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3NluSettingsResponse",
          "description": "The NLU settings of the flow at version creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of this version. This field is read-only and cannot be set by create and update methods."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "createTime",
        "description",
        "displayName",
        "flowId",
        "location",
        "name",
        "nluSettings",
        "project",
        "state"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the version. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the version. Limit of 64 characters."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Format: projects//locations//agents//flows//versions/. Version ID is a self-increasing number generated by Dialogflow upon version creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "flowId"
      ]
    },
    "google-native:dialogflow/v3:Webhook": {
      "description": "Creates a webhook in the specified agent.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "disabled": {
          "type": "boolean",
          "description": "Indicates whether the webhook is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the webhook, unique within the agent."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceResponse",
          "description": "Configuration for a generic web service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceDirectory": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfigResponse",
          "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
        },
        "timeout": {
          "type": "string",
          "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "disabled",
        "displayName",
        "genericWebService",
        "location",
        "name",
        "project",
        "serviceDirectory",
        "timeout"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "disabled": {
          "type": "boolean",
          "description": "Indicates whether the webhook is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the webhook, unique within the agent."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebService",
          "description": "Configuration for a generic web service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceDirectory": {
          "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfig",
          "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
        },
        "timeout": {
          "type": "string",
          "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:Agent": {
      "description": "Creates an agent in the specified location. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this agent. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "answerFeedbackSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentAnswerFeedbackSettingsResponse",
          "description": "Optional. Answer feedback collection settings."
        },
        "avatarUri": {
          "type": "string",
          "description": "The URI of the agent's avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration."
        },
        "defaultLanguageCode": {
          "type": "string",
          "description": "Immutable. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the Agents.UpdateAgent method."
        },
        "description": {
          "type": "string",
          "description": "The description of the agent. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the agent, unique within the location."
        },
        "enableSpellCorrection": {
          "type": "boolean",
          "description": "Indicates if automatic spell correction is enabled in detect intent requests."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Indicates if stackdriver logging is enabled for the agent. Please use agent.advanced_settings instead."
        },
        "genAppBuilderSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentGenAppBuilderSettingsResponse",
          "description": "Gen App Builder-related agent-level settings."
        },
        "gitIntegrationSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettingsResponse",
          "description": "Git integration settings for this agent."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Indicates whether the agent is locked for changes. If the agent is locked, modifications to the agent will be rejected except for RestoreAgent."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the agent. Required for the Agents.UpdateAgent method. Agents.CreateAgent populates the name automatically. Format: `projects//locations//agents/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securitySettings": {
          "type": "string",
          "description": "Name of the SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`."
        },
        "speechToTextSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SpeechToTextSettingsResponse",
          "description": "Speech recognition related settings."
        },
        "startFlow": {
          "type": "string",
          "description": "Immutable. Name of the start flow in this agent. A start flow will be automatically created when the agent is created, and can only be deleted by deleting the agent. Format: `projects//locations//agents//flows/`."
        },
        "supportedLanguageCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of all languages supported by the agent (except for the `default_language_code`)."
        },
        "textToSpeechSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TextToSpeechSettingsResponse",
          "description": "Settings on instructing the speech synthesizer on how to generate the output audio content."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "answerFeedbackSettings",
        "avatarUri",
        "defaultLanguageCode",
        "description",
        "displayName",
        "enableSpellCorrection",
        "enableStackdriverLogging",
        "genAppBuilderSettings",
        "gitIntegrationSettings",
        "location",
        "locked",
        "name",
        "project",
        "securitySettings",
        "speechToTextSettings",
        "startFlow",
        "supportedLanguageCodes",
        "textToSpeechSettings",
        "timeZone"
      ],
      "inputProperties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettings",
          "description": "Hierarchical advanced settings for this agent. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "answerFeedbackSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentAnswerFeedbackSettings",
          "description": "Optional. Answer feedback collection settings."
        },
        "avatarUri": {
          "type": "string",
          "description": "The URI of the agent's avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration."
        },
        "defaultLanguageCode": {
          "type": "string",
          "description": "Immutable. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the Agents.UpdateAgent method."
        },
        "description": {
          "type": "string",
          "description": "The description of the agent. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the agent, unique within the location."
        },
        "enableSpellCorrection": {
          "type": "boolean",
          "description": "Indicates if automatic spell correction is enabled in detect intent requests."
        },
        "enableStackdriverLogging": {
          "type": "boolean",
          "description": "Indicates if stackdriver logging is enabled for the agent. Please use agent.advanced_settings instead."
        },
        "genAppBuilderSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentGenAppBuilderSettings",
          "description": "Gen App Builder-related agent-level settings."
        },
        "gitIntegrationSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettings",
          "description": "Git integration settings for this agent."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Indicates whether the agent is locked for changes. If the agent is locked, modifications to the agent will be rejected except for RestoreAgent."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the agent. Required for the Agents.UpdateAgent method. Agents.CreateAgent populates the name automatically. Format: `projects//locations//agents/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securitySettings": {
          "type": "string",
          "description": "Name of the SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`."
        },
        "speechToTextSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SpeechToTextSettings",
          "description": "Speech recognition related settings."
        },
        "startFlow": {
          "type": "string",
          "description": "Immutable. Name of the start flow in this agent. A start flow will be automatically created when the agent is created, and can only be deleted by deleting the agent. Format: `projects//locations//agents//flows/`."
        },
        "supportedLanguageCodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of all languages supported by the agent (except for the `default_language_code`)."
        },
        "textToSpeechSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TextToSpeechSettings",
          "description": "Settings on instructing the speech synthesizer on how to generate the output audio content."
        },
        "timeZone": {
          "type": "string",
          "description": "The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris."
        }
      },
      "requiredInputs": [
        "defaultLanguageCode",
        "displayName",
        "timeZone"
      ]
    },
    "google-native:dialogflow/v3beta1:EntityType": {
      "description": "Creates an entity type in the specified agent.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "autoExpansionMode": {
          "type": "string",
          "description": "Indicates whether the entity type can be automatically expanded."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the entity type, unique within the agent."
        },
        "enableFuzzyExtraction": {
          "type": "boolean",
          "description": "Enables fuzzy entity extraction during classification."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeEntityResponse"
          },
          "description": "The collection of entity entries associated with the entity type."
        },
        "excludedPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeExcludedPhraseResponse"
          },
          "description": "Collection of exceptional words and phrases that shouldn't be matched. For example, if you have a size entity type with entry `giant`(an adjective), you might consider adding `giants`(a noun) as an exclusion. If the kind of entity type is `KIND_MAP`, then the phrases specified by entities and excluded phrases should be mutually exclusive."
        },
        "kind": {
          "type": "string",
          "description": "Indicates the kind of entity type."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `entity_type`: * `EntityType.entities.value` * `EntityType.entities.synonyms` * `EntityType.excluded_phrases.value` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType. Format: `projects//locations//agents//entityTypes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether parameters of the entity type should be redacted in log. If redaction is enabled, page parameters and intent parameters referring to the entity type will be replaced by parameter name during logging."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "autoExpansionMode",
        "displayName",
        "enableFuzzyExtraction",
        "entities",
        "excludedPhrases",
        "kind",
        "location",
        "name",
        "project",
        "redact"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "autoExpansionMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:EntityTypeAutoExpansionMode",
          "description": "Indicates whether the entity type can be automatically expanded."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the entity type, unique within the agent."
        },
        "enableFuzzyExtraction": {
          "type": "boolean",
          "description": "Enables fuzzy entity extraction during classification."
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeEntity"
          },
          "description": "The collection of entity entries associated with the entity type."
        },
        "excludedPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeExcludedPhrase"
          },
          "description": "Collection of exceptional words and phrases that shouldn't be matched. For example, if you have a size entity type with entry `giant`(an adjective), you might consider adding `giants`(a noun) as an exclusion. If the kind of entity type is `KIND_MAP`, then the phrases specified by entities and excluded phrases should be mutually exclusive."
        },
        "kind": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:EntityTypeKind",
          "description": "Indicates the kind of entity type."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `entity_type`: * `EntityType.entities.value` * `EntityType.entities.synonyms` * `EntityType.excluded_phrases.value` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType. Format: `projects//locations//agents//entityTypes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redact": {
          "type": "boolean",
          "description": "Indicates whether parameters of the entity type should be redacted in log. If redaction is enabled, page parameters and intent parameters referring to the entity type will be replaced by parameter name during logging."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "kind"
      ]
    },
    "google-native:dialogflow/v3beta1:Environment": {
      "description": "Creates an Environment in the specified Agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: Environment",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The human-readable description of the environment. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the environment (unique in an agent). Limit of 64 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the environment. Format: `projects//locations//agents//environments/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "testCasesConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfigResponse",
          "description": "The test cases config for continuous tests of this environment."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time of this environment."
        },
        "versionConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfigResponse"
          },
          "description": "A list of configurations for flow versions. You should include version configs for all flows that are reachable from `Start Flow` in the agent. Otherwise, an error will be returned."
        },
        "webhookConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfigResponse",
          "description": "The webhook configuration for this environment."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "description",
        "displayName",
        "location",
        "name",
        "project",
        "testCasesConfig",
        "updateTime",
        "versionConfigs",
        "webhookConfig"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The human-readable description of the environment. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the environment (unique in an agent). Limit of 64 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the environment. Format: `projects//locations//agents//environments/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "testCasesConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfig",
          "description": "The test cases config for continuous tests of this environment."
        },
        "versionConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfig"
          },
          "description": "A list of configurations for flow versions. You should include version configs for all flows that are reachable from `Start Flow` in the agent. Otherwise, an error will be returned."
        },
        "webhookConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfig",
          "description": "The webhook configuration for this environment."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:Experiment": {
      "description": "Creates an Experiment in the specified Environment.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this experiment."
        },
        "definition": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentDefinitionResponse",
          "description": "The definition of the experiment."
        },
        "description": {
          "type": "string",
          "description": "The human-readable description of the experiment."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the experiment (unique in an environment). Limit of 64 characters."
        },
        "endTime": {
          "type": "string",
          "description": "End time of this experiment."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "experimentLength": {
          "type": "string",
          "description": "Maximum number of days to run the experiment. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days."
        },
        "lastUpdateTime": {
          "type": "string",
          "description": "Last update time of this experiment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the experiment. Format: projects//locations//agents//environments//experiments/.."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "result": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultResponse",
          "description": "Inference result of the experiment."
        },
        "rolloutConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfigResponse",
          "description": "The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow."
        },
        "rolloutFailureReason": {
          "type": "string",
          "description": "The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED."
        },
        "rolloutState": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1RolloutStateResponse",
          "description": "State of the auto rollout process."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of this experiment."
        },
        "state": {
          "type": "string",
          "description": "The current state of the experiment. Transition triggered by Experiments.StartExperiment: DRAFT->RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT->DONE or RUNNING->DONE."
        },
        "variantsHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VariantsHistoryResponse"
          },
          "description": "The history of updates to the experiment variants."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "createTime",
        "definition",
        "description",
        "displayName",
        "endTime",
        "environmentId",
        "experimentLength",
        "lastUpdateTime",
        "location",
        "name",
        "project",
        "result",
        "rolloutConfig",
        "rolloutFailureReason",
        "rolloutState",
        "startTime",
        "state",
        "variantsHistory"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this experiment."
        },
        "definition": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentDefinition",
          "description": "The definition of the experiment."
        },
        "description": {
          "type": "string",
          "description": "The human-readable description of the experiment."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the experiment (unique in an environment). Limit of 64 characters."
        },
        "endTime": {
          "type": "string",
          "description": "End time of this experiment."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "experimentLength": {
          "type": "string",
          "description": "Maximum number of days to run the experiment. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days."
        },
        "lastUpdateTime": {
          "type": "string",
          "description": "Last update time of this experiment."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the experiment. Format: projects//locations//agents//environments//experiments/.."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "result": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResult",
          "description": "Inference result of the experiment."
        },
        "rolloutConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfig",
          "description": "The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow."
        },
        "rolloutFailureReason": {
          "type": "string",
          "description": "The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED."
        },
        "rolloutState": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1RolloutState",
          "description": "State of the auto rollout process."
        },
        "startTime": {
          "type": "string",
          "description": "Start time of this experiment."
        },
        "state": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:ExperimentState",
          "description": "The current state of the experiment. Transition triggered by Experiments.StartExperiment: DRAFT->RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT->DONE or RUNNING->DONE."
        },
        "variantsHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VariantsHistory"
          },
          "description": "The history of updates to the experiment variants."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "environmentId"
      ]
    },
    "google-native:dialogflow/v3beta1:Flow": {
      "description": "Creates a flow in the specified agent. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the flow."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandlerResponse"
          },
          "description": "A flow's event handlers serve two purposes: * They are responsible for handling events (e.g. no match, webhook errors) in the flow. * They are inherited by every page's event handlers, which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow. Unlike transition_routes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettingsResponse",
          "description": "Optional. Knowledge connector configuration."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `flow`: * `Flow.event_handlers.trigger_fulfillment.messages` * `Flow.event_handlers.trigger_fulfillment.conditional_cases` * `Flow.transition_routes.trigger_fulfillment.messages` * `Flow.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the flow. Format: `projects//locations//agents//flows/`."
        },
        "nluSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsResponse",
          "description": "NLU related settings of the flow."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A flow's transition route group serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition route groups. Transition route groups defined in the page have higher priority than those defined in the flow. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRouteResponse"
          },
          "description": "A flow's transition routes serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition routes and can support use cases such as the user saying \"help\" or \"can I talk to a human?\", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow. TransitionRoutes are evalauted in the following order: * TransitionRoutes with intent specified. * TransitionRoutes with only condition specified. TransitionRoutes with intent specified are inherited by pages in the flow."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "agentId",
        "description",
        "displayName",
        "eventHandlers",
        "knowledgeConnectorSettings",
        "location",
        "name",
        "nluSettings",
        "project",
        "transitionRouteGroups",
        "transitionRoutes"
      ],
      "inputProperties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettings",
          "description": "Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the flow."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandler"
          },
          "description": "A flow's event handlers serve two purposes: * They are responsible for handling events (e.g. no match, webhook errors) in the flow. * They are inherited by every page's event handlers, which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow. Unlike transition_routes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings",
          "description": "Optional. Knowledge connector configuration."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `flow`: * `Flow.event_handlers.trigger_fulfillment.messages` * `Flow.event_handlers.trigger_fulfillment.conditional_cases` * `Flow.transition_routes.trigger_fulfillment.messages` * `Flow.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the flow. Format: `projects//locations//agents//flows/`."
        },
        "nluSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1NluSettings",
          "description": "NLU related settings of the flow."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A flow's transition route group serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition route groups. Transition route groups defined in the page have higher priority than those defined in the flow. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRoute"
          },
          "description": "A flow's transition routes serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition routes and can support use cases such as the user saying \"help\" or \"can I talk to a human?\", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow. TransitionRoutes are evalauted in the following order: * TransitionRoutes with intent specified. * TransitionRoutes with only condition specified. TransitionRoutes with intent specified are inherited by pages in the flow."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:Intent": {
      "description": "Creates an intent in the specified agent. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the intent, unique within the agent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys-contextual\" means the intent is a contextual intent."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `intent`: * `Intent.training_phrases.parts.text` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentParameterResponse"
          },
          "description": "The collection of parameters associated with the intent."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhraseResponse"
          },
          "description": "The collection of training phrases the agent is trained on to identify the intent."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "description",
        "displayName",
        "isFallback",
        "labels",
        "location",
        "name",
        "parameters",
        "priority",
        "project",
        "trainingPhrases"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the intent, unique within the agent."
        },
        "isFallback": {
          "type": "boolean",
          "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys-contextual\" means the intent is a contextual intent."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `intent`: * `Intent.training_phrases.parts.text` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentParameter"
          },
          "description": "The collection of parameters associated with the intent."
        },
        "priority": {
          "type": "integer",
          "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingPhrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhrase"
          },
          "description": "The collection of training phrases the agent is trained on to identify the intent."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:Page": {
      "description": "Creates a page in the specified flow.",
      "properties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
          "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the page, unique within the flow."
        },
        "entryFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentResponse",
          "description": "The fulfillment to call when the session is entering the page."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandlerResponse"
          },
          "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "form": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FormResponse",
          "description": "The form associated with the page, used for collecting parameters relevant to the page."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettingsResponse",
          "description": "Optional. Knowledge connector configuration."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `page`: * `Page.entry_fulfillment.messages` * `Page.entry_fulfillment.conditional_cases` * `Page.event_handlers.trigger_fulfillment.messages` * `Page.event_handlers.trigger_fulfillment.conditional_cases` * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages` * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases` * `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages` * `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases` * `Page.transition_routes.trigger_fulfillment.messages` * `Page.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRouteResponse"
          },
          "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified."
        }
      },
      "type": "object",
      "required": [
        "advancedSettings",
        "agentId",
        "displayName",
        "entryFulfillment",
        "eventHandlers",
        "flowId",
        "form",
        "knowledgeConnectorSettings",
        "location",
        "name",
        "project",
        "transitionRouteGroups",
        "transitionRoutes"
      ],
      "inputProperties": {
        "advancedSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettings",
          "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
        },
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the page, unique within the flow."
        },
        "entryFulfillment": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Fulfillment",
          "description": "The fulfillment to call when the session is entering the page."
        },
        "eventHandlers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandler"
          },
          "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "form": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1Form",
          "description": "The form associated with the page, used for collecting parameters relevant to the page."
        },
        "knowledgeConnectorSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings",
          "description": "Optional. Knowledge connector configuration."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `page`: * `Page.entry_fulfillment.messages` * `Page.entry_fulfillment.conditional_cases` * `Page.event_handlers.trigger_fulfillment.messages` * `Page.event_handlers.trigger_fulfillment.conditional_cases` * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages` * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases` * `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages` * `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases` * `Page.transition_routes.trigger_fulfillment.messages` * `Page.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRouteGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRoute"
          },
          "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "flowId"
      ]
    },
    "google-native:dialogflow/v3beta1:SecuritySetting": {
      "description": "Create security settings in the specified location.",
      "properties": {
        "audioExportSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsAudioExportSettingsResponse",
          "description": "Controls audio export settings for post-conversation analytics when ingesting audio to conversations via Participants.AnalyzeContent or Participants.StreamingAnalyzeContent. If retention_strategy is set to REMOVE_AFTER_CONVERSATION or audio_export_settings.gcs_bucket is empty, audio export is disabled. If audio export is enabled, audio is recorded and saved to audio_export_settings.gcs_bucket, subject to retention policy of audio_export_settings.gcs_bucket. This setting won't effect audio input for implicit sessions via Sessions.DetectIntent or Sessions.StreamingDetectIntent."
        },
        "deidentifyTemplate": {
          "type": "string",
          "description": "[DLP](https://cloud.google.com/dlp/docs) deidentify template name. Use this template to define de-identification configuration for the content. The `DLP De-identify Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, Dialogflow replaces sensitive info with `[redacted]` text. The template name will have one of the following formats: `projects//locations//deidentifyTemplates/` OR `organizations//locations//deidentifyTemplates/` Note: `deidentify_template` must be located in the same region as the `SecuritySettings`."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the security settings, unique within the location."
        },
        "insightsExportSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsInsightsExportSettingsResponse",
          "description": "Controls conversation exporting settings to Insights after conversation is completed. If retention_strategy is set to REMOVE_AFTER_CONVERSATION, Insights export is disabled no matter what you configure here."
        },
        "inspectTemplate": {
          "type": "string",
          "description": "[DLP](https://cloud.google.com/dlp/docs) inspect template name. Use this template to define inspect base settings. The `DLP Inspect Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, we use the default DLP inspect config. The template name will have one of the following formats: `projects//locations//inspectTemplates/` OR `organizations//locations//inspectTemplates/` Note: `inspect_template` must be located in the same region as the `SecuritySettings`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the settings. Required for the SecuritySettingsService.UpdateSecuritySettings method. SecuritySettingsService.CreateSecuritySettings populates the name automatically. Format: `projects//locations//securitySettings/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purgeDataTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of types of data to remove when retention settings triggers purge."
        },
        "redactionScope": {
          "type": "string",
          "description": "Defines the data for which Dialogflow applies redaction. Dialogflow does not redact data that it does not have access to – for example, Cloud logging."
        },
        "redactionStrategy": {
          "type": "string",
          "description": "Strategy that defines how we do redaction."
        },
        "retentionStrategy": {
          "type": "string",
          "description": "Specifies the retention behavior defined by SecuritySettings.RetentionStrategy."
        },
        "retentionWindowDays": {
          "type": "integer",
          "description": "Retains data in interaction logging for the specified number of days. This does not apply to Cloud logging, which is owned by the user - not Dialogflow. User must set a value lower than Dialogflow's default 365d TTL (30 days for Agent Assist traffic), higher value will be ignored and use default. Setting a value higher than that has no effect. A missing value or setting to 0 also means we use default TTL."
        }
      },
      "type": "object",
      "required": [
        "audioExportSettings",
        "deidentifyTemplate",
        "displayName",
        "insightsExportSettings",
        "inspectTemplate",
        "location",
        "name",
        "project",
        "purgeDataTypes",
        "redactionScope",
        "redactionStrategy",
        "retentionStrategy",
        "retentionWindowDays"
      ],
      "inputProperties": {
        "audioExportSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsAudioExportSettings",
          "description": "Controls audio export settings for post-conversation analytics when ingesting audio to conversations via Participants.AnalyzeContent or Participants.StreamingAnalyzeContent. If retention_strategy is set to REMOVE_AFTER_CONVERSATION or audio_export_settings.gcs_bucket is empty, audio export is disabled. If audio export is enabled, audio is recorded and saved to audio_export_settings.gcs_bucket, subject to retention policy of audio_export_settings.gcs_bucket. This setting won't effect audio input for implicit sessions via Sessions.DetectIntent or Sessions.StreamingDetectIntent."
        },
        "deidentifyTemplate": {
          "type": "string",
          "description": "[DLP](https://cloud.google.com/dlp/docs) deidentify template name. Use this template to define de-identification configuration for the content. The `DLP De-identify Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, Dialogflow replaces sensitive info with `[redacted]` text. The template name will have one of the following formats: `projects//locations//deidentifyTemplates/` OR `organizations//locations//deidentifyTemplates/` Note: `deidentify_template` must be located in the same region as the `SecuritySettings`."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the security settings, unique within the location."
        },
        "insightsExportSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsInsightsExportSettings",
          "description": "Controls conversation exporting settings to Insights after conversation is completed. If retention_strategy is set to REMOVE_AFTER_CONVERSATION, Insights export is disabled no matter what you configure here."
        },
        "inspectTemplate": {
          "type": "string",
          "description": "[DLP](https://cloud.google.com/dlp/docs) inspect template name. Use this template to define inspect base settings. The `DLP Inspect Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, we use the default DLP inspect config. The template name will have one of the following formats: `projects//locations//inspectTemplates/` OR `organizations//locations//inspectTemplates/` Note: `inspect_template` must be located in the same region as the `SecuritySettings`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the settings. Required for the SecuritySettingsService.UpdateSecuritySettings method. SecuritySettingsService.CreateSecuritySettings populates the name automatically. Format: `projects//locations//securitySettings/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "purgeDataTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:SecuritySettingPurgeDataTypesItem"
          },
          "description": "List of types of data to remove when retention settings triggers purge."
        },
        "redactionScope": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:SecuritySettingRedactionScope",
          "description": "Defines the data for which Dialogflow applies redaction. Dialogflow does not redact data that it does not have access to – for example, Cloud logging."
        },
        "redactionStrategy": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:SecuritySettingRedactionStrategy",
          "description": "Strategy that defines how we do redaction."
        },
        "retentionStrategy": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:SecuritySettingRetentionStrategy",
          "description": "Specifies the retention behavior defined by SecuritySettings.RetentionStrategy."
        },
        "retentionWindowDays": {
          "type": "integer",
          "description": "Retains data in interaction logging for the specified number of days. This does not apply to Cloud logging, which is owned by the user - not Dialogflow. User must set a value lower than Dialogflow's default 365d TTL (30 days for Agent Assist traffic), higher value will be ignored and use default. Setting a value higher than that has no effect. A missing value or setting to 0 also means we use default TTL."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:SessionEntityType": {
      "description": "Creates a session entity type.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeEntityResponse"
          },
          "description": "The collection of entities to override or supplement the custom entity type."
        },
        "entityOverrideMode": {
          "type": "string",
          "description": "Indicates whether the additional data should override or supplement the custom entity type definition."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the session entity type. Format: `projects//locations//agents//sessions//entityTypes/` or `projects//locations//agents//environments//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "entities",
        "entityOverrideMode",
        "environmentId",
        "location",
        "name",
        "project",
        "sessionId"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "entities": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeEntity"
          },
          "description": "The collection of entities to override or supplement the custom entity type."
        },
        "entityOverrideMode": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:SessionEntityTypeEntityOverrideMode",
          "description": "Indicates whether the additional data should override or supplement the custom entity type definition."
        },
        "environmentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the session entity type. Format: `projects//locations//agents//sessions//entityTypes/` or `projects//locations//agents//environments//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "agentId",
        "entities",
        "entityOverrideMode",
        "environmentId",
        "sessionId"
      ]
    },
    "google-native:dialogflow/v3beta1:TestCase": {
      "description": "Creates a test case for the given agent.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "creationTime": {
          "type": "string",
          "description": "When the test was created."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the test case, unique within the agent. Limit of 200 characters."
        },
        "lastTestResult": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TestCaseResultResponse",
          "description": "The latest test result."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the test case. TestCases.CreateTestCase will populate the name automatically. Otherwise use format: `projects//locations//agents/ /testCases/`."
        },
        "notes": {
          "type": "string",
          "description": "Additional freeform notes about the test case. Limit of 400 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags are short descriptions that users may apply to test cases for organizational and filtering purposes. Each tag should start with \"#\" and has a limit of 30 characters."
        },
        "testCaseConversationTurns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnResponse"
          },
          "description": "The conversation turns uttered when the test case was created, in chronological order. These include the canonical set of agent utterances that should occur when the agent is working properly."
        },
        "testConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TestConfigResponse",
          "description": "Config for the test case."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "creationTime",
        "displayName",
        "lastTestResult",
        "location",
        "name",
        "notes",
        "project",
        "tags",
        "testCaseConversationTurns",
        "testConfig"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the test case, unique within the agent. Limit of 200 characters."
        },
        "lastTestResult": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TestCaseResult",
          "description": "The latest test result."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the test case. TestCases.CreateTestCase will populate the name automatically. Otherwise use format: `projects//locations//agents/ /testCases/`."
        },
        "notes": {
          "type": "string",
          "description": "Additional freeform notes about the test case. Limit of 400 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags are short descriptions that users may apply to test cases for organizational and filtering purposes. Each tag should start with \"#\" and has a limit of 30 characters."
        },
        "testCaseConversationTurns": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurn"
          },
          "description": "The conversation turns uttered when the test case was created, in chronological order. These include the canonical set of agent utterances that should occur when the agent is working properly."
        },
        "testConfig": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TestConfig",
          "description": "Config for the test case."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:dialogflow/v3beta1:TransitionRouteGroup": {
      "description": "Creates an TransitionRouteGroup in the specified flow. Note: You should always train a flow prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training).",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the transition route group, unique within the flow. The display name can be no longer than 30 characters."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `TransitionRouteGroup`: * `TransitionRouteGroup.transition_routes.trigger_fulfillment.messages` * `TransitionRouteGroup.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the transition route group. TransitionRouteGroups.CreateTransitionRouteGroup populates the name automatically. Format: `projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRouteResponse"
          },
          "description": "Transition routes associated with the TransitionRouteGroup."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "displayName",
        "flowId",
        "location",
        "name",
        "project",
        "transitionRoutes"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the transition route group, unique within the flow. The display name can be no longer than 30 characters."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the following fields in `TransitionRouteGroup`: * `TransitionRouteGroup.transition_routes.trigger_fulfillment.messages` * `TransitionRouteGroup.transition_routes.trigger_fulfillment.conditional_cases` If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the transition route group. TransitionRouteGroups.CreateTransitionRouteGroup populates the name automatically. Format: `projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "transitionRoutes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRoute"
          },
          "description": "Transition routes associated with the TransitionRouteGroup."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "flowId"
      ]
    },
    "google-native:dialogflow/v3beta1:Version": {
      "description": "Creates a Version in the specified Flow. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: CreateVersionOperationMetadata - `response`: Version",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Create time of the version."
        },
        "description": {
          "type": "string",
          "description": "The description of the version. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the version. Limit of 64 characters."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Format: projects//locations//agents//flows//versions/. Version ID is a self-increasing number generated by Dialogflow upon version creation."
        },
        "nluSettings": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsResponse",
          "description": "The NLU settings of the flow at version creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of this version. This field is read-only and cannot be set by create and update methods."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "createTime",
        "description",
        "displayName",
        "flowId",
        "location",
        "name",
        "nluSettings",
        "project",
        "state"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the version. The maximum length is 500 characters. If exceeded, the request is rejected."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the version. Limit of 64 characters."
        },
        "flowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Format: projects//locations//agents//flows//versions/. Version ID is a self-increasing number generated by Dialogflow upon version creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "flowId"
      ]
    },
    "google-native:dialogflow/v3beta1:Webhook": {
      "description": "Creates a webhook in the specified agent.",
      "properties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "disabled": {
          "type": "boolean",
          "description": "Indicates whether the webhook is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the webhook, unique within the agent."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceResponse",
          "description": "Configuration for a generic web service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceDirectory": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfigResponse",
          "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
        },
        "timeout": {
          "type": "string",
          "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds."
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "disabled",
        "displayName",
        "genericWebService",
        "location",
        "name",
        "project",
        "serviceDirectory",
        "timeout"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "disabled": {
          "type": "boolean",
          "description": "Indicates whether the webhook is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "The human-readable name of the webhook, unique within the agent."
        },
        "genericWebService": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebService",
          "description": "Configuration for a generic web service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceDirectory": {
          "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfig",
          "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
        },
        "timeout": {
          "type": "string",
          "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds."
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName"
      ]
    },
    "google-native:discoveryengine/v1alpha:Conversation": {
      "description": "Creates a Conversation. If the Conversation to create already exists, an ALREADY_EXISTS error is returned.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "endTime": {
          "type": "string",
          "description": "The time the conversation finished."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaConversationMessageResponse"
          },
          "description": "Conversation messages."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `project/*/locations/global/collections/{collection}/dataStore/*/conversations/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The time the conversation started."
        },
        "state": {
          "type": "string",
          "description": "The state of the Conversation."
        },
        "userPseudoId": {
          "type": "string",
          "description": "A unique identifier for tracking users."
        }
      },
      "type": "object",
      "required": [
        "collectionId",
        "dataStoreId",
        "endTime",
        "location",
        "messages",
        "name",
        "project",
        "startTime",
        "state",
        "userPseudoId"
      ],
      "inputProperties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaConversationMessage"
          },
          "description": "Conversation messages."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `project/*/locations/global/collections/{collection}/dataStore/*/conversations/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:ConversationState",
          "description": "The state of the Conversation."
        },
        "userPseudoId": {
          "type": "string",
          "description": "A unique identifier for tracking users."
        }
      },
      "requiredInputs": [
        "collectionId",
        "dataStoreId"
      ]
    },
    "google-native:discoveryengine/v1alpha:DataStore": {
      "description": "Creates a DataStore. DataStore is for storing Documents. To serve these documents for Search, or Recommendation use case, an Engine needs to be created separately.",
      "properties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "contentConfig": {
          "type": "string",
          "description": "Immutable. The content config of the data store. If this field is unset, the server behavior defaults to ContentConfig.NO_CONTENT."
        },
        "createAdvancedSiteSearch": {
          "type": "boolean",
          "description": "A boolean flag indicating whether user want to directly create an advanced data store for site search. If the data store is not configured as site search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will be ignored."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp the DataStore was created at."
        },
        "dataStoreId": {
          "type": "string",
          "description": "Required. The ID to use for the DataStore, which will become the final component of the DataStore's resource name. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "defaultSchemaId": {
          "type": "string",
          "description": "The id of the default Schema asscociated to this data store."
        },
        "displayName": {
          "type": "string",
          "description": "The data store display name. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "industryVertical": {
          "type": "string",
          "description": "Immutable. The industry vertical that the data store registers."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the data store. Format: `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The solutions that the data store enrolls. Available solutions for each industry_vertical: * `MEDIA`: `SOLUTION_TYPE_RECOMMENDATION` and `SOLUTION_TYPE_SEARCH`. * `SITE_SEARCH`: `SOLUTION_TYPE_SEARCH` is automatically enrolled. Other solutions cannot be enrolled."
        }
      },
      "type": "object",
      "required": [
        "collectionId",
        "contentConfig",
        "createTime",
        "dataStoreId",
        "defaultSchemaId",
        "displayName",
        "industryVertical",
        "location",
        "name",
        "project",
        "solutionTypes"
      ],
      "inputProperties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "contentConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:DataStoreContentConfig",
          "description": "Immutable. The content config of the data store. If this field is unset, the server behavior defaults to ContentConfig.NO_CONTENT."
        },
        "createAdvancedSiteSearch": {
          "type": "boolean",
          "description": "A boolean flag indicating whether user want to directly create an advanced data store for site search. If the data store is not configured as site search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will be ignored."
        },
        "dataStoreId": {
          "type": "string",
          "description": "Required. The ID to use for the DataStore, which will become the final component of the DataStore's resource name. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The data store display name. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "industryVertical": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:DataStoreIndustryVertical",
          "description": "Immutable. The industry vertical that the data store registers."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the data store. Format: `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:DataStoreSolutionTypesItem"
          },
          "description": "The solutions that the data store enrolls. Available solutions for each industry_vertical: * `MEDIA`: `SOLUTION_TYPE_RECOMMENDATION` and `SOLUTION_TYPE_SEARCH`. * `SITE_SEARCH`: `SOLUTION_TYPE_SEARCH` is automatically enrolled. Other solutions cannot be enrolled."
        }
      },
      "requiredInputs": [
        "collectionId",
        "dataStoreId",
        "displayName"
      ]
    },
    "google-native:discoveryengine/v1alpha:Document": {
      "description": "Creates a Document.",
      "properties": {
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "content": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaDocumentContentResponse",
          "description": "The unstructured data linked to this document. Content must be set if this document is under a `CONTENT_REQUIRED` data store."
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "derivedStructData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "This field is OUTPUT_ONLY. It contains derived data that are not in the original input document."
        },
        "documentId": {
          "type": "string",
          "description": "Required. The ID to use for the Document, which will become the final component of the Document.name. If the caller does not have permission to create the Document, regardless of whether or not it exists, a `PERMISSION_DENIED` error is returned. This field must be unique among all Documents with the same parent. Otherwise, an `ALREADY_EXISTS` error is returned. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an `INVALID_ARGUMENT` error is returned.",
          "replaceOnChanges": true
        },
        "jsonData": {
          "type": "string",
          "description": "The JSON string representation of the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the document. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "parentDocumentId": {
          "type": "string",
          "description": "The identifier of the parent document. Currently supports at most two level document hierarchy. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "The identifier of the schema located in the same data store."
        },
        "structData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The structured JSON data for the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown."
        }
      },
      "type": "object",
      "required": [
        "branchId",
        "collectionId",
        "content",
        "dataStoreId",
        "derivedStructData",
        "documentId",
        "jsonData",
        "location",
        "name",
        "parentDocumentId",
        "project",
        "schemaId",
        "structData"
      ],
      "inputProperties": {
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "content": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaDocumentContent",
          "description": "The unstructured data linked to this document. Content must be set if this document is under a `CONTENT_REQUIRED` data store."
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "documentId": {
          "type": "string",
          "description": "Required. The ID to use for the Document, which will become the final component of the Document.name. If the caller does not have permission to create the Document, regardless of whether or not it exists, a `PERMISSION_DENIED` error is returned. This field must be unique among all Documents with the same parent. Otherwise, an `ALREADY_EXISTS` error is returned. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an `INVALID_ARGUMENT` error is returned.",
          "replaceOnChanges": true
        },
        "id": {
          "type": "string",
          "description": "Immutable. The identifier of the document. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters."
        },
        "jsonData": {
          "type": "string",
          "description": "The JSON string representation of the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the document. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "parentDocumentId": {
          "type": "string",
          "description": "The identifier of the parent document. Currently supports at most two level document hierarchy. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "The identifier of the schema located in the same data store."
        },
        "structData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The structured JSON data for the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown."
        }
      },
      "requiredInputs": [
        "branchId",
        "collectionId",
        "dataStoreId",
        "documentId"
      ]
    },
    "google-native:discoveryengine/v1alpha:Engine": {
      "description": "Creates a Engine.",
      "properties": {
        "chatEngineConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfigResponse",
          "description": "Configurations for the Chat Engine. Only applicable if solution_type is SOLUTION_TYPE_CHAT."
        },
        "chatEngineMetadata": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineMetadataResponse",
          "description": "Additional information of the Chat Engine. Only applicable if solution_type is SOLUTION_TYPE_CHAT."
        },
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "commonConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineCommonConfigResponse",
          "description": "Common config spec that specifies the metadata of the engine."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp the Recommendation Engine was created at."
        },
        "dataStoreIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The data stores associated with this engine. For SOLUTION_TYPE_SEARCH and SOLUTION_TYPE_RECOMMENDATION type of engines, they can only associate with at most one data store. If solution_type is SOLUTION_TYPE_CHAT, multiple DataStores in the same Collection can be associated here. Note that when used in CreateEngineRequest, one DataStore id must be provided as the system will use it for necessary intializations."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the engine. Should be human readable. UTF-8 encoded string with limit of 1024 characters."
        },
        "engineId": {
          "type": "string",
          "description": "Required. The ID to use for the Engine, which will become the final component of the Engine's resource name. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "industryVertical": {
          "type": "string",
          "description": "The industry vertical that the engine registers. The restriction of the Engine industry vertical is based on DataStore: If unspecified, default to `GENERIC`. Vertical on Engine has to match vertical of the DataStore liniked to the engine."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mediaRecommendationEngineConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigResponse",
          "description": "Configurations for the Media Engine. Only applicable on the data stores with solution_type SOLUTION_TYPE_RECOMMENDATION and IndustryVertical.MEDIA vertical."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The fully qualified resource name of the engine. This field must be a UTF-8 encoded string with a length limit of 1024 characters. Format: `projects/{project_number}/locations/{location}/collections/{collection}/engines/{engine}` engine should be 1-63 characters, and valid characters are /a-z0-9*/. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recommendationMetadata": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineRecommendationMetadataResponse",
          "description": "Additional information of a recommendation engine. Only applicable if solution_type is SOLUTION_TYPE_RECOMMENDATION."
        },
        "searchEngineConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfigResponse",
          "description": "Configurations for the Search Engine. Only applicable if solution_type is SOLUTION_TYPE_SEARCH."
        },
        "similarDocumentsConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineSimilarDocumentsEngineConfigResponse",
          "description": "Additional config specs for a `similar-items` engine."
        },
        "solutionType": {
          "type": "string",
          "description": "The solutions of the engine."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp the Recommendation Engine was last updated."
        }
      },
      "type": "object",
      "required": [
        "chatEngineConfig",
        "chatEngineMetadata",
        "collectionId",
        "commonConfig",
        "createTime",
        "dataStoreIds",
        "displayName",
        "engineId",
        "industryVertical",
        "location",
        "mediaRecommendationEngineConfig",
        "name",
        "project",
        "recommendationMetadata",
        "searchEngineConfig",
        "similarDocumentsConfig",
        "solutionType",
        "updateTime"
      ],
      "inputProperties": {
        "chatEngineConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfig",
          "description": "Configurations for the Chat Engine. Only applicable if solution_type is SOLUTION_TYPE_CHAT."
        },
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "commonConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineCommonConfig",
          "description": "Common config spec that specifies the metadata of the engine."
        },
        "dataStoreIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The data stores associated with this engine. For SOLUTION_TYPE_SEARCH and SOLUTION_TYPE_RECOMMENDATION type of engines, they can only associate with at most one data store. If solution_type is SOLUTION_TYPE_CHAT, multiple DataStores in the same Collection can be associated here. Note that when used in CreateEngineRequest, one DataStore id must be provided as the system will use it for necessary intializations."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the engine. Should be human readable. UTF-8 encoded string with limit of 1024 characters."
        },
        "engineId": {
          "type": "string",
          "description": "Required. The ID to use for the Engine, which will become the final component of the Engine's resource name. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "industryVertical": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:EngineIndustryVertical",
          "description": "The industry vertical that the engine registers. The restriction of the Engine industry vertical is based on DataStore: If unspecified, default to `GENERIC`. Vertical on Engine has to match vertical of the DataStore liniked to the engine."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mediaRecommendationEngineConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfig",
          "description": "Configurations for the Media Engine. Only applicable on the data stores with solution_type SOLUTION_TYPE_RECOMMENDATION and IndustryVertical.MEDIA vertical."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The fully qualified resource name of the engine. This field must be a UTF-8 encoded string with a length limit of 1024 characters. Format: `projects/{project_number}/locations/{location}/collections/{collection}/engines/{engine}` engine should be 1-63 characters, and valid characters are /a-z0-9*/. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "searchEngineConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfig",
          "description": "Configurations for the Search Engine. Only applicable if solution_type is SOLUTION_TYPE_SEARCH."
        },
        "similarDocumentsConfig": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineSimilarDocumentsEngineConfig",
          "description": "Additional config specs for a `similar-items` engine."
        },
        "solutionType": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:EngineSolutionType",
          "description": "The solutions of the engine."
        }
      },
      "requiredInputs": [
        "collectionId",
        "displayName",
        "engineId",
        "solutionType"
      ]
    },
    "google-native:discoveryengine/v1alpha:Schema": {
      "description": "Creates a Schema.",
      "properties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fieldConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaFieldConfigResponse"
          },
          "description": "Configurations for fields of the schema."
        },
        "jsonSchema": {
          "type": "string",
          "description": "The JSON representation of the schema."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the schema, in the format of `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "Required. The ID to use for the Schema, which will become the final component of the Schema.name. This field should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters.",
          "replaceOnChanges": true
        },
        "structSchema": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The structured representation of the schema."
        }
      },
      "type": "object",
      "required": [
        "collectionId",
        "dataStoreId",
        "fieldConfigs",
        "jsonSchema",
        "location",
        "name",
        "project",
        "schemaId",
        "structSchema"
      ],
      "inputProperties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "jsonSchema": {
          "type": "string",
          "description": "The JSON representation of the schema."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the schema, in the format of `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "Required. The ID to use for the Schema, which will become the final component of the Schema.name. This field should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters.",
          "replaceOnChanges": true
        },
        "structSchema": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The structured representation of the schema."
        }
      },
      "requiredInputs": [
        "collectionId",
        "dataStoreId",
        "schemaId"
      ]
    },
    "google-native:discoveryengine/v1beta:Conversation": {
      "description": "Creates a Conversation. If the Conversation to create already exists, an ALREADY_EXISTS error is returned.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "endTime": {
          "type": "string",
          "description": "The time the conversation finished."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaConversationMessageResponse"
          },
          "description": "Conversation messages."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `project/*/locations/global/collections/{collection}/dataStore/*/conversations/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The time the conversation started."
        },
        "state": {
          "type": "string",
          "description": "The state of the Conversation."
        },
        "userPseudoId": {
          "type": "string",
          "description": "A unique identifier for tracking users."
        }
      },
      "type": "object",
      "required": [
        "collectionId",
        "dataStoreId",
        "endTime",
        "location",
        "messages",
        "name",
        "project",
        "startTime",
        "state",
        "userPseudoId"
      ],
      "inputProperties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaConversationMessage"
          },
          "description": "Conversation messages."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `project/*/locations/global/collections/{collection}/dataStore/*/conversations/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:ConversationState",
          "description": "The state of the Conversation."
        },
        "userPseudoId": {
          "type": "string",
          "description": "A unique identifier for tracking users."
        }
      },
      "requiredInputs": [
        "collectionId",
        "dataStoreId"
      ]
    },
    "google-native:discoveryengine/v1beta:Document": {
      "description": "Creates a Document.",
      "properties": {
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "content": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaDocumentContentResponse",
          "description": "The unstructured data linked to this document. Content must be set if this document is under a `CONTENT_REQUIRED` data store."
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "derivedStructData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "This field is OUTPUT_ONLY. It contains derived data that are not in the original input document."
        },
        "documentId": {
          "type": "string",
          "description": "Required. The ID to use for the Document, which will become the final component of the Document.name. If the caller does not have permission to create the Document, regardless of whether or not it exists, a `PERMISSION_DENIED` error is returned. This field must be unique among all Documents with the same parent. Otherwise, an `ALREADY_EXISTS` error is returned. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an `INVALID_ARGUMENT` error is returned.",
          "replaceOnChanges": true
        },
        "jsonData": {
          "type": "string",
          "description": "The JSON string representation of the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the document. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "parentDocumentId": {
          "type": "string",
          "description": "The identifier of the parent document. Currently supports at most two level document hierarchy. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "The identifier of the schema located in the same data store."
        },
        "structData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The structured JSON data for the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown."
        }
      },
      "type": "object",
      "required": [
        "branchId",
        "collectionId",
        "content",
        "dataStoreId",
        "derivedStructData",
        "documentId",
        "jsonData",
        "location",
        "name",
        "parentDocumentId",
        "project",
        "schemaId",
        "structData"
      ],
      "inputProperties": {
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "content": {
          "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaDocumentContent",
          "description": "The unstructured data linked to this document. Content must be set if this document is under a `CONTENT_REQUIRED` data store."
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "documentId": {
          "type": "string",
          "description": "Required. The ID to use for the Document, which will become the final component of the Document.name. If the caller does not have permission to create the Document, regardless of whether or not it exists, a `PERMISSION_DENIED` error is returned. This field must be unique among all Documents with the same parent. Otherwise, an `ALREADY_EXISTS` error is returned. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. Otherwise, an `INVALID_ARGUMENT` error is returned.",
          "replaceOnChanges": true
        },
        "id": {
          "type": "string",
          "description": "Immutable. The identifier of the document. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters."
        },
        "jsonData": {
          "type": "string",
          "description": "The JSON string representation of the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the document. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "parentDocumentId": {
          "type": "string",
          "description": "The identifier of the parent document. Currently supports at most two level document hierarchy. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "The identifier of the schema located in the same data store."
        },
        "structData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The structured JSON data for the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown."
        }
      },
      "requiredInputs": [
        "branchId",
        "collectionId",
        "dataStoreId",
        "documentId"
      ]
    },
    "google-native:discoveryengine/v1beta:Schema": {
      "description": "Creates a Schema.",
      "properties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "jsonSchema": {
          "type": "string",
          "description": "The JSON representation of the schema."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the schema, in the format of `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "Required. The ID to use for the Schema, which will become the final component of the Schema.name. This field should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters.",
          "replaceOnChanges": true
        },
        "structSchema": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The structured representation of the schema."
        }
      },
      "type": "object",
      "required": [
        "collectionId",
        "dataStoreId",
        "jsonSchema",
        "location",
        "name",
        "project",
        "schemaId",
        "structSchema"
      ],
      "inputProperties": {
        "collectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "jsonSchema": {
          "type": "string",
          "description": "The JSON representation of the schema."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The full resource name of the schema, in the format of `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "Required. The ID to use for the Schema, which will become the final component of the Schema.name. This field should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters.",
          "replaceOnChanges": true
        },
        "structSchema": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The structured representation of the schema."
        }
      },
      "requiredInputs": [
        "collectionId",
        "dataStoreId",
        "schemaId"
      ]
    },
    "google-native:dlp/v2:DeidentifyTemplate": {
      "description": "Creates a DeidentifyTemplate for reusing frequently used configuration for de-identifying content, images, and storage. See https://cloud.google.com/dlp/docs/creating-templates-deid to learn more.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of an inspectTemplate."
        },
        "deidentifyConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyConfigResponse",
          "description": "The core content of the template."
        },
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of an inspectTemplate."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deidentifyConfig",
        "description",
        "displayName",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "deidentifyConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyConfig",
          "description": "The core content of the template."
        },
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "location": {
          "type": "string",
          "description": "Deprecated. This field has no effect.",
          "deprecationMessage": "Deprecated. This field has no effect."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "templateId": {
          "type": "string",
          "description": "The template id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        }
      }
    },
    "google-native:dlp/v2:DiscoveryConfig": {
      "description": "Creates a config for discovery to scan and profile storage.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DataProfileActionResponse"
          },
          "description": "Actions to execute at the completion of scanning."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a DiscoveryConfig."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 100 chars)"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
          },
          "description": "A stream of errors encountered when the config was activated. Repeated errors may result in the config automatically being paused. Output only field. Will return the last 100 errors. Whenever the config is modified this list will be cleared."
        },
        "inspectTemplates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Detection logic for profile generation. Not all template features are used by Discovery. FindingLimits, include_quote and exclude_info_types have no impact on Discovery. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including \"global\"). Each region is scanned using the applicable template. If no region-specific template is specified, but a \"global\" template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region's data will not be scanned. For more information, see https://cloud.google.com/dlp/docs/data-profiles#data-residency."
        },
        "lastRunTime": {
          "type": "string",
          "description": "The timestamp of the last time this config was executed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name for the DiscoveryConfig, assigned by the service when the DiscoveryConfig is created, for example `projects/dlp-test-project/locations/global/discoveryConfigs/53234423`."
        },
        "orgConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OrgConfigResponse",
          "description": "Only set when the parent is an org."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "A status for this configuration."
        },
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTargetResponse"
          },
          "description": "Target to match against for determining what to scan and how frequently."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a DiscoveryConfig."
        }
      },
      "type": "object",
      "required": [
        "actions",
        "createTime",
        "displayName",
        "errors",
        "inspectTemplates",
        "lastRunTime",
        "location",
        "name",
        "orgConfig",
        "project",
        "status",
        "targets",
        "updateTime"
      ],
      "inputProperties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DataProfileAction"
          },
          "description": "Actions to execute at the completion of scanning."
        },
        "configId": {
          "type": "string",
          "description": "The config ID can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 100 chars)"
        },
        "inspectTemplates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Detection logic for profile generation. Not all template features are used by Discovery. FindingLimits, include_quote and exclude_info_types have no impact on Discovery. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including \"global\"). Each region is scanned using the applicable template. If no region-specific template is specified, but a \"global\" template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region's data will not be scanned. For more information, see https://cloud.google.com/dlp/docs/data-profiles#data-residency."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name for the DiscoveryConfig, assigned by the service when the DiscoveryConfig is created, for example `projects/dlp-test-project/locations/global/discoveryConfigs/53234423`."
        },
        "orgConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OrgConfig",
          "description": "Only set when the parent is an org."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "$ref": "#/types/google-native:dlp%2Fv2:DiscoveryConfigStatus",
          "description": "A status for this configuration."
        },
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTarget"
          },
          "description": "Target to match against for determining what to scan and how frequently."
        }
      },
      "requiredInputs": [
        "status"
      ]
    },
    "google-native:dlp/v2:DlpJob": {
      "description": "Creates a new job to inspect storage or calculate risk metrics. See https://cloud.google.com/dlp/docs/inspecting-storage and https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more. When no InfoTypes or CustomInfoTypes are specified in inspect jobs, the system will automatically choose what detectors to run. By default this may be all types, but may change over time as detectors are updated.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "actionDetails": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ActionDetailsResponse"
          },
          "description": "Events that should occur after the job has completed."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the job was created."
        },
        "endTime": {
          "type": "string",
          "description": "Time when the job finished."
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
          },
          "description": "A stream of errors encountered running the job."
        },
        "inspectDetails": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectDataSourceDetailsResponse",
          "description": "Results from inspecting a data source."
        },
        "jobTriggerName": {
          "type": "string",
          "description": "If created by a job trigger, the resource name of the trigger that instantiated the job."
        },
        "lastModified": {
          "type": "string",
          "description": "Time when the job was last modified by the system."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The server-assigned name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "riskDetails": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AnalyzeDataSourceRiskDetailsResponse",
          "description": "Results from analyzing risk of a data source."
        },
        "startTime": {
          "type": "string",
          "description": "Time when the job started."
        },
        "state": {
          "type": "string",
          "description": "State of a job."
        },
        "type": {
          "type": "string",
          "description": "The type of job."
        }
      },
      "type": "object",
      "required": [
        "actionDetails",
        "createTime",
        "endTime",
        "errors",
        "inspectDetails",
        "jobTriggerName",
        "lastModified",
        "location",
        "name",
        "project",
        "riskDetails",
        "startTime",
        "state",
        "type"
      ],
      "inputProperties": {
        "inspectJob": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectJobConfig",
          "description": "An inspection job scans a storage repository for InfoTypes."
        },
        "jobId": {
          "type": "string",
          "description": "The job id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        },
        "location": {
          "type": "string",
          "description": "Deprecated. This field has no effect.",
          "deprecationMessage": "Deprecated. This field has no effect."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "riskJob": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2RiskAnalysisJobConfig",
          "description": "A risk analysis job calculates re-identification risk metrics for a BigQuery table."
        }
      }
    },
    "google-native:dlp/v2:InspectTemplate": {
      "description": "Creates an InspectTemplate for reusing frequently used configuration for inspecting content, images, and storage. See https://cloud.google.com/dlp/docs/creating-templates to learn more.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of an inspectTemplate."
        },
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "inspectConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfigResponse",
          "description": "The core content of the template. Configuration of the scanning process."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`;"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of an inspectTemplate."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "inspectConfig",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "inspectConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfig",
          "description": "The core content of the template. Configuration of the scanning process."
        },
        "location": {
          "type": "string",
          "description": "Deprecated. This field has no effect.",
          "deprecationMessage": "Deprecated. This field has no effect."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "templateId": {
          "type": "string",
          "description": "The template id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        }
      }
    },
    "google-native:dlp/v2:JobTrigger": {
      "description": "Creates a job trigger to run DLP actions such as scanning storage for sensitive information on a set schedule. See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a triggeredJob."
        },
        "description": {
          "type": "string",
          "description": "User provided description (max 256 chars)"
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 100 chars)"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
          },
          "description": "A stream of errors encountered when the trigger was activated. Repeated errors may result in the JobTrigger automatically being paused. Will return the last 100 errors. Whenever the JobTrigger is modified this list will be cleared."
        },
        "inspectJob": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectJobConfigResponse",
          "description": "For inspect jobs, a snapshot of the configuration."
        },
        "lastRunTime": {
          "type": "string",
          "description": "The timestamp of the last time this trigger executed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name for the triggeredJob, assigned by the service when the triggeredJob is created, for example `projects/dlp-test-project/jobTriggers/53234423`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "A status for this trigger."
        },
        "triggers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TriggerResponse"
          },
          "description": "A list of triggers which will be OR'ed together. Only one in the list needs to trigger for a job to be started. The list may contain only a single Schedule trigger and must have at least one object."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a triggeredJob."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "errors",
        "inspectJob",
        "lastRunTime",
        "location",
        "name",
        "project",
        "status",
        "triggers",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User provided description (max 256 chars)"
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 100 chars)"
        },
        "inspectJob": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectJobConfig",
          "description": "For inspect jobs, a snapshot of the configuration."
        },
        "location": {
          "type": "string",
          "description": "Deprecated. This field has no effect.",
          "deprecationMessage": "Deprecated. This field has no effect."
        },
        "name": {
          "type": "string",
          "description": "Unique resource name for the triggeredJob, assigned by the service when the triggeredJob is created, for example `projects/dlp-test-project/jobTriggers/53234423`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "$ref": "#/types/google-native:dlp%2Fv2:JobTriggerStatus",
          "description": "A status for this trigger."
        },
        "triggerId": {
          "type": "string",
          "description": "The trigger id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        },
        "triggers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Trigger"
          },
          "description": "A list of triggers which will be OR'ed together. Only one in the list needs to trigger for a job to be started. The list may contain only a single Schedule trigger and must have at least one object."
        }
      },
      "requiredInputs": [
        "status"
      ]
    },
    "google-native:dlp/v2:OrganizationDiscoveryConfig": {
      "description": "Creates a config for discovery to scan and profile storage.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DataProfileActionResponse"
          },
          "description": "Actions to execute at the completion of scanning."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a DiscoveryConfig."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 100 chars)"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
          },
          "description": "A stream of errors encountered when the config was activated. Repeated errors may result in the config automatically being paused. Output only field. Will return the last 100 errors. Whenever the config is modified this list will be cleared."
        },
        "inspectTemplates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Detection logic for profile generation. Not all template features are used by Discovery. FindingLimits, include_quote and exclude_info_types have no impact on Discovery. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including \"global\"). Each region is scanned using the applicable template. If no region-specific template is specified, but a \"global\" template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region's data will not be scanned. For more information, see https://cloud.google.com/dlp/docs/data-profiles#data-residency."
        },
        "lastRunTime": {
          "type": "string",
          "description": "The timestamp of the last time this config was executed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name for the DiscoveryConfig, assigned by the service when the DiscoveryConfig is created, for example `projects/dlp-test-project/locations/global/discoveryConfigs/53234423`."
        },
        "orgConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OrgConfigResponse",
          "description": "Only set when the parent is an org."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "A status for this configuration."
        },
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTargetResponse"
          },
          "description": "Target to match against for determining what to scan and how frequently."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a DiscoveryConfig."
        }
      },
      "type": "object",
      "required": [
        "actions",
        "createTime",
        "displayName",
        "errors",
        "inspectTemplates",
        "lastRunTime",
        "location",
        "name",
        "orgConfig",
        "organizationId",
        "status",
        "targets",
        "updateTime"
      ],
      "inputProperties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DataProfileAction"
          },
          "description": "Actions to execute at the completion of scanning."
        },
        "configId": {
          "type": "string",
          "description": "The config ID can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 100 chars)"
        },
        "inspectTemplates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Detection logic for profile generation. Not all template features are used by Discovery. FindingLimits, include_quote and exclude_info_types have no impact on Discovery. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including \"global\"). Each region is scanned using the applicable template. If no region-specific template is specified, but a \"global\" template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region's data will not be scanned. For more information, see https://cloud.google.com/dlp/docs/data-profiles#data-residency."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name for the DiscoveryConfig, assigned by the service when the DiscoveryConfig is created, for example `projects/dlp-test-project/locations/global/discoveryConfigs/53234423`."
        },
        "orgConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OrgConfig",
          "description": "Only set when the parent is an org."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "$ref": "#/types/google-native:dlp%2Fv2:OrganizationDiscoveryConfigStatus",
          "description": "A status for this configuration."
        },
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTarget"
          },
          "description": "Target to match against for determining what to scan and how frequently."
        }
      },
      "requiredInputs": [
        "organizationId",
        "status"
      ]
    },
    "google-native:dlp/v2:OrganizationInspectTemplate": {
      "description": "Creates an InspectTemplate for reusing frequently used configuration for inspecting content, images, and storage. See https://cloud.google.com/dlp/docs/creating-templates to learn more.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of an inspectTemplate."
        },
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "inspectConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfigResponse",
          "description": "The core content of the template. Configuration of the scanning process."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`;"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of an inspectTemplate."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "inspectConfig",
        "location",
        "name",
        "organizationId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "inspectConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfig",
          "description": "The core content of the template. Configuration of the scanning process."
        },
        "location": {
          "type": "string",
          "description": "Deprecated. This field has no effect.",
          "deprecationMessage": "Deprecated. This field has no effect."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "templateId": {
          "type": "string",
          "description": "The template id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:dlp/v2:OrganizationJobTrigger": {
      "description": "Creates a job trigger to run DLP actions such as scanning storage for sensitive information on a set schedule. See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of a triggeredJob."
        },
        "description": {
          "type": "string",
          "description": "User provided description (max 256 chars)"
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 100 chars)"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
          },
          "description": "A stream of errors encountered when the trigger was activated. Repeated errors may result in the JobTrigger automatically being paused. Will return the last 100 errors. Whenever the JobTrigger is modified this list will be cleared."
        },
        "inspectJob": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectJobConfigResponse",
          "description": "For inspect jobs, a snapshot of the configuration."
        },
        "lastRunTime": {
          "type": "string",
          "description": "The timestamp of the last time this trigger executed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique resource name for the triggeredJob, assigned by the service when the triggeredJob is created, for example `projects/dlp-test-project/jobTriggers/53234423`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "A status for this trigger."
        },
        "triggers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TriggerResponse"
          },
          "description": "A list of triggers which will be OR'ed together. Only one in the list needs to trigger for a job to be started. The list may contain only a single Schedule trigger and must have at least one object."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of a triggeredJob."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "errors",
        "inspectJob",
        "lastRunTime",
        "location",
        "name",
        "organizationId",
        "status",
        "triggers",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User provided description (max 256 chars)"
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 100 chars)"
        },
        "inspectJob": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectJobConfig",
          "description": "For inspect jobs, a snapshot of the configuration."
        },
        "location": {
          "type": "string",
          "description": "Deprecated. This field has no effect.",
          "deprecationMessage": "Deprecated. This field has no effect."
        },
        "name": {
          "type": "string",
          "description": "Unique resource name for the triggeredJob, assigned by the service when the triggeredJob is created, for example `projects/dlp-test-project/jobTriggers/53234423`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "$ref": "#/types/google-native:dlp%2Fv2:OrganizationJobTriggerStatus",
          "description": "A status for this trigger."
        },
        "triggerId": {
          "type": "string",
          "description": "The trigger id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        },
        "triggers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2Trigger"
          },
          "description": "A list of triggers which will be OR'ed together. Only one in the list needs to trigger for a job to be started. The list may contain only a single Schedule trigger and must have at least one object."
        }
      },
      "requiredInputs": [
        "organizationId",
        "status"
      ]
    },
    "google-native:dlp/v2:OrganizationsDeidentifyTemplate": {
      "description": "Creates a DeidentifyTemplate for reusing frequently used configuration for de-identifying content, images, and storage. See https://cloud.google.com/dlp/docs/creating-templates-deid to learn more.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of an inspectTemplate."
        },
        "deidentifyConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyConfigResponse",
          "description": "The core content of the template."
        },
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of an inspectTemplate."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deidentifyConfig",
        "description",
        "displayName",
        "location",
        "name",
        "organizationId",
        "updateTime"
      ],
      "inputProperties": {
        "deidentifyConfig": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyConfig",
          "description": "The core content of the template."
        },
        "description": {
          "type": "string",
          "description": "Short description (max 256 chars)."
        },
        "displayName": {
          "type": "string",
          "description": "Display name (max 256 chars)."
        },
        "location": {
          "type": "string",
          "description": "Deprecated. This field has no effect.",
          "deprecationMessage": "Deprecated. This field has no effect."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "templateId": {
          "type": "string",
          "description": "The template id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:dlp/v2:StoredInfoType": {
      "description": "Creates a pre-built stored infoType to be used for inspection. See https://cloud.google.com/dlp/docs/creating-stored-infotypes to learn more.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "currentVersion": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredInfoTypeVersionResponse",
          "description": "Current version of the stored info type."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name."
        },
        "pendingVersions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredInfoTypeVersionResponse"
          },
          "description": "Pending versions of the stored info type. Empty if no versions are pending."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "currentVersion",
        "location",
        "name",
        "pendingVersions",
        "project"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredInfoTypeConfig",
          "description": "Configuration of the storedInfoType to create."
        },
        "location": {
          "type": "string",
          "description": "Deprecated. This field has no effect.",
          "deprecationMessage": "Deprecated. This field has no effect."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "storedInfoTypeId": {
          "type": "string",
          "description": "The storedInfoType ID can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular expression: `[a-zA-Z\\d-_]+`. The maximum length is 100 characters. Can be empty to allow the system to generate one."
        }
      },
      "requiredInputs": [
        "config"
      ]
    },
    "google-native:dns/v1:Change": {
      "description": "Atomically updates the ResourceRecordSet collection.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "additions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ResourceRecordSetResponse"
          },
          "description": "Which ResourceRecordSets to add?"
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "deletions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ResourceRecordSetResponse"
          },
          "description": "Which ResourceRecordSets to remove? Must match existing data exactly."
        },
        "isServing": {
          "type": "boolean",
          "description": "If the DNS queries for the zone will be served."
        },
        "kind": {
          "type": "string"
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The time that this operation was started by the server (output only). This is in RFC3339 text format."
        },
        "status": {
          "type": "string",
          "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet."
        }
      },
      "type": "object",
      "required": [
        "additions",
        "deletions",
        "isServing",
        "kind",
        "managedZone",
        "project",
        "startTime",
        "status"
      ],
      "inputProperties": {
        "additions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ResourceRecordSet"
          },
          "description": "Which ResourceRecordSets to add?"
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "deletions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:ResourceRecordSet"
          },
          "description": "Which ResourceRecordSets to remove? Must match existing data exactly."
        },
        "isServing": {
          "type": "boolean",
          "description": "If the DNS queries for the zone will be served."
        },
        "kind": {
          "type": "string"
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "managedZone"
      ]
    },
    "google-native:dns/v1:ManagedZone": {
      "description": "Creates a new ManagedZone.",
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "cloudLoggingConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneCloudLoggingConfigResponse"
        },
        "creationTime": {
          "type": "string",
          "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only."
        },
        "description": {
          "type": "string",
          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function."
        },
        "dnsName": {
          "type": "string",
          "description": "The DNS name of this managed zone, for instance \"example.com.\"."
        },
        "dnssecConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneDnsSecConfigResponse",
          "description": "DNSSEC configuration."
        },
        "forwardingConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneForwardingConfigResponse",
          "description": "The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to."
        },
        "kind": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User labels."
        },
        "name": {
          "type": "string",
          "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes."
        },
        "nameServerSet": {
          "type": "string",
          "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users leave this field unset. If you need to use this field, contact your account team."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Delegate your managed_zone to these virtual name servers; defined by the server (output only)"
        },
        "peeringConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePeeringConfigResponse",
          "description": "The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with."
        },
        "privateVisibilityConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePrivateVisibilityConfigResponse",
          "description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reverseLookupConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneReverseLookupConfigResponse",
          "description": "The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS resolves reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneServiceDirectoryConfigResponse",
          "description": "This field links to the associated service directory namespace. Do not set this field for public zones or forwarding zones."
        },
        "visibility": {
          "type": "string",
          "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources."
        }
      },
      "type": "object",
      "required": [
        "cloudLoggingConfig",
        "creationTime",
        "description",
        "dnsName",
        "dnssecConfig",
        "forwardingConfig",
        "kind",
        "labels",
        "name",
        "nameServerSet",
        "nameServers",
        "peeringConfig",
        "privateVisibilityConfig",
        "project",
        "reverseLookupConfig",
        "serviceDirectoryConfig",
        "visibility"
      ],
      "inputProperties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "cloudLoggingConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneCloudLoggingConfig"
        },
        "creationTime": {
          "type": "string",
          "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only."
        },
        "description": {
          "type": "string",
          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function."
        },
        "dnsName": {
          "type": "string",
          "description": "The DNS name of this managed zone, for instance \"example.com.\"."
        },
        "dnssecConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneDnsSecConfig",
          "description": "DNSSEC configuration."
        },
        "forwardingConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneForwardingConfig",
          "description": "The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to."
        },
        "kind": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User labels."
        },
        "name": {
          "type": "string",
          "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes."
        },
        "nameServerSet": {
          "type": "string",
          "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users leave this field unset. If you need to use this field, contact your account team."
        },
        "peeringConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePeeringConfig",
          "description": "The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with."
        },
        "privateVisibilityConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePrivateVisibilityConfig",
          "description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reverseLookupConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneReverseLookupConfig",
          "description": "The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS resolves reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneServiceDirectoryConfig",
          "description": "This field links to the associated service directory namespace. Do not set this field for public zones or forwarding zones."
        },
        "visibility": {
          "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneVisibility",
          "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources."
        }
      }
    },
    "google-native:dns/v1:ManagedZoneIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dns/v1:ManagedZoneIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dns/v1:ManagedZoneIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "managedZone",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "managedZone"
      ]
    },
    "google-native:dns/v1:Policy": {
      "description": "Creates a new Policy.",
      "properties": {
        "alternativeNameServerConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:PolicyAlternativeNameServerConfigResponse",
          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "description": {
          "type": "string",
          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the policy's function."
        },
        "enableInboundForwarding": {
          "type": "boolean",
          "description": "Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set."
        },
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "User-assigned name for this policy."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:PolicyNetworkResponse"
          },
          "description": "List of network names specifying networks to which this policy is applied."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "alternativeNameServerConfig",
        "description",
        "enableInboundForwarding",
        "enableLogging",
        "kind",
        "name",
        "networks",
        "project"
      ],
      "inputProperties": {
        "alternativeNameServerConfig": {
          "$ref": "#/types/google-native:dns%2Fv1:PolicyAlternativeNameServerConfig",
          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "description": {
          "type": "string",
          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the policy's function."
        },
        "enableInboundForwarding": {
          "type": "boolean",
          "description": "Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set."
        },
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "User-assigned name for this policy."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1:PolicyNetwork"
          },
          "description": "List of network names specifying networks to which this policy is applied."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:dns/v1:ResourceRecordSet": {
      "description": "Creates a new ResourceRecordSet.",
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "kind": {
          "type": "string"
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "For example, www.example.com."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "routingPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyResponse",
          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples."
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 4034 (section 3.2)."
        },
        "ttl": {
          "type": "integer",
          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers."
        },
        "type": {
          "type": "string",
          "description": "The identifier of a supported record type. See the list of Supported DNS record types."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "managedZone",
        "name",
        "project",
        "routingPolicy",
        "rrdatas",
        "signatureRrdatas",
        "ttl",
        "type"
      ],
      "inputProperties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "kind": {
          "type": "string"
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "For example, www.example.com."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "routingPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicy",
          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples."
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 4034 (section 3.2)."
        },
        "ttl": {
          "type": "integer",
          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers."
        },
        "type": {
          "type": "string",
          "description": "The identifier of a supported record type. See the list of Supported DNS record types."
        }
      },
      "requiredInputs": [
        "managedZone"
      ]
    },
    "google-native:dns/v1beta2:Change": {
      "description": "Atomically updates the ResourceRecordSet collection.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "additions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResourceRecordSetResponse"
          },
          "description": "Which ResourceRecordSets to add?"
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "deletions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResourceRecordSetResponse"
          },
          "description": "Which ResourceRecordSets to remove? Must match existing data exactly."
        },
        "isServing": {
          "type": "boolean",
          "description": "If the DNS queries for the zone will be served."
        },
        "kind": {
          "type": "string"
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The time that this operation was started by the server (output only). This is in RFC3339 text format."
        },
        "status": {
          "type": "string",
          "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet."
        }
      },
      "type": "object",
      "required": [
        "additions",
        "deletions",
        "isServing",
        "kind",
        "managedZone",
        "project",
        "startTime",
        "status"
      ],
      "inputProperties": {
        "additions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResourceRecordSet"
          },
          "description": "Which ResourceRecordSets to add?"
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "deletions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResourceRecordSet"
          },
          "description": "Which ResourceRecordSets to remove? Must match existing data exactly."
        },
        "isServing": {
          "type": "boolean",
          "description": "If the DNS queries for the zone will be served."
        },
        "kind": {
          "type": "string"
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "managedZone"
      ]
    },
    "google-native:dns/v1beta2:ManagedZone": {
      "description": "Creates a new ManagedZone.",
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "cloudLoggingConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneCloudLoggingConfigResponse"
        },
        "creationTime": {
          "type": "string",
          "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only."
        },
        "description": {
          "type": "string",
          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function."
        },
        "dnsName": {
          "type": "string",
          "description": "The DNS name of this managed zone, for instance \"example.com.\"."
        },
        "dnssecConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneDnsSecConfigResponse",
          "description": "DNSSEC configuration."
        },
        "forwardingConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneForwardingConfigResponse",
          "description": "The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to."
        },
        "kind": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User labels."
        },
        "name": {
          "type": "string",
          "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes."
        },
        "nameServerSet": {
          "type": "string",
          "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users leave this field unset. If you need to use this field, contact your account team."
        },
        "nameServers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Delegate your managed_zone to these virtual name servers; defined by the server (output only)"
        },
        "peeringConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePeeringConfigResponse",
          "description": "The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with."
        },
        "privateVisibilityConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePrivateVisibilityConfigResponse",
          "description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reverseLookupConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneReverseLookupConfigResponse",
          "description": "The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS resolves reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneServiceDirectoryConfigResponse",
          "description": "This field links to the associated service directory namespace. Do not set this field for public zones or forwarding zones."
        },
        "visibility": {
          "type": "string",
          "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources."
        }
      },
      "type": "object",
      "required": [
        "cloudLoggingConfig",
        "creationTime",
        "description",
        "dnsName",
        "dnssecConfig",
        "forwardingConfig",
        "kind",
        "labels",
        "name",
        "nameServerSet",
        "nameServers",
        "peeringConfig",
        "privateVisibilityConfig",
        "project",
        "reverseLookupConfig",
        "serviceDirectoryConfig",
        "visibility"
      ],
      "inputProperties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "cloudLoggingConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneCloudLoggingConfig"
        },
        "creationTime": {
          "type": "string",
          "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only."
        },
        "description": {
          "type": "string",
          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function."
        },
        "dnsName": {
          "type": "string",
          "description": "The DNS name of this managed zone, for instance \"example.com.\"."
        },
        "dnssecConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneDnsSecConfig",
          "description": "DNSSEC configuration."
        },
        "forwardingConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneForwardingConfig",
          "description": "The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to."
        },
        "kind": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User labels."
        },
        "name": {
          "type": "string",
          "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes."
        },
        "nameServerSet": {
          "type": "string",
          "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users leave this field unset. If you need to use this field, contact your account team."
        },
        "peeringConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePeeringConfig",
          "description": "The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with."
        },
        "privateVisibilityConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePrivateVisibilityConfig",
          "description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reverseLookupConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneReverseLookupConfig",
          "description": "The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS resolves reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config."
        },
        "serviceDirectoryConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneServiceDirectoryConfig",
          "description": "This field links to the associated service directory namespace. Do not set this field for public zones or forwarding zones."
        },
        "visibility": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneVisibility",
          "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources."
        }
      }
    },
    "google-native:dns/v1beta2:ManagedZoneIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:dns/v1beta2:ManagedZoneIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "managedZone",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "managedZone"
      ]
    },
    "google-native:dns/v1beta2:Policy": {
      "description": "Creates a new Policy.",
      "properties": {
        "alternativeNameServerConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyAlternativeNameServerConfigResponse",
          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "description": {
          "type": "string",
          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the policy's function."
        },
        "enableInboundForwarding": {
          "type": "boolean",
          "description": "Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set."
        },
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "User-assigned name for this policy."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyNetworkResponse"
          },
          "description": "List of network names specifying networks to which this policy is applied."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "alternativeNameServerConfig",
        "description",
        "enableInboundForwarding",
        "enableLogging",
        "kind",
        "name",
        "networks",
        "project"
      ],
      "inputProperties": {
        "alternativeNameServerConfig": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyAlternativeNameServerConfig",
          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "description": {
          "type": "string",
          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the policy's function."
        },
        "enableInboundForwarding": {
          "type": "boolean",
          "description": "Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy."
        },
        "enableLogging": {
          "type": "boolean",
          "description": "Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set."
        },
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "User-assigned name for this policy."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyNetwork"
          },
          "description": "List of network names specifying networks to which this policy is applied."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:dns/v1beta2:ResourceRecordSet": {
      "description": "Creates a new ResourceRecordSet.",
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "kind": {
          "type": "string"
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "For example, www.example.com."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "routingPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyResponse",
          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples."
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 4034 (section 3.2)."
        },
        "ttl": {
          "type": "integer",
          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers."
        },
        "type": {
          "type": "string",
          "description": "The identifier of a supported record type. See the list of Supported DNS record types."
        }
      },
      "type": "object",
      "required": [
        "kind",
        "managedZone",
        "name",
        "project",
        "routingPolicy",
        "rrdatas",
        "signatureRrdatas",
        "ttl",
        "type"
      ],
      "inputProperties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "kind": {
          "type": "string"
        },
        "managedZone": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "For example, www.example.com."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "routingPolicy": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicy",
          "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
        },
        "rrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples."
        },
        "signatureRrdatas": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "As defined in RFC 4034 (section 3.2)."
        },
        "ttl": {
          "type": "integer",
          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers."
        },
        "type": {
          "type": "string",
          "description": "The identifier of a supported record type. See the list of Supported DNS record types."
        }
      },
      "requiredInputs": [
        "managedZone"
      ]
    },
    "google-native:dns/v1beta2:ResponsePolicy": {
      "description": "Creates a new Response Policy\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "description": {
          "type": "string",
          "description": "User-provided description for this Response Policy."
        },
        "gkeClusters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyGKEClusterResponse"
          },
          "description": "The list of Google Kubernetes Engine clusters to which this response policy is applied."
        },
        "kind": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User labels."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyNetworkResponse"
          },
          "description": "List of network names specifying networks to which this policy is applied."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responsePolicyName": {
          "type": "string",
          "description": "User assigned name for this Response Policy."
        }
      },
      "type": "object",
      "required": [
        "description",
        "gkeClusters",
        "kind",
        "labels",
        "networks",
        "project",
        "responsePolicyName"
      ],
      "inputProperties": {
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "description": {
          "type": "string",
          "description": "User-provided description for this Response Policy."
        },
        "gkeClusters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyGKECluster"
          },
          "description": "The list of Google Kubernetes Engine clusters to which this response policy is applied."
        },
        "kind": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User labels."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyNetwork"
          },
          "description": "List of network names specifying networks to which this policy is applied."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responsePolicyName": {
          "type": "string",
          "description": "User assigned name for this Response Policy."
        }
      }
    },
    "google-native:dns/v1beta2:ResponsePolicyRule": {
      "description": "Creates a new Response Policy Rule.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "behavior": {
          "type": "string",
          "description": "Answer this query with a behavior rather than DNS data."
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "dnsName": {
          "type": "string",
          "description": "The DNS name (wildcard or exact) to apply this rule to. Must be unique within the Response Policy Rule."
        },
        "kind": {
          "type": "string"
        },
        "localData": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyRuleLocalDataResponse",
          "description": "Answer this query directly with DNS data. These ResourceRecordSets override any other DNS behavior for the matched name; in particular they override private zones, the public internet, and GCP internal DNS. No SOA nor NS types are allowed."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responsePolicy": {
          "type": "string",
          "replaceOnChanges": true
        },
        "ruleName": {
          "type": "string",
          "description": "An identifier for this rule. Must be unique with the ResponsePolicy."
        }
      },
      "type": "object",
      "required": [
        "behavior",
        "dnsName",
        "kind",
        "localData",
        "project",
        "responsePolicy",
        "ruleName"
      ],
      "inputProperties": {
        "behavior": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyRuleBehavior",
          "description": "Answer this query with a behavior rather than DNS data."
        },
        "clientOperationId": {
          "type": "string",
          "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection."
        },
        "dnsName": {
          "type": "string",
          "description": "The DNS name (wildcard or exact) to apply this rule to. Must be unique within the Response Policy Rule."
        },
        "kind": {
          "type": "string"
        },
        "localData": {
          "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyRuleLocalData",
          "description": "Answer this query directly with DNS data. These ResourceRecordSets override any other DNS behavior for the matched name; in particular they override private zones, the public internet, and GCP internal DNS. No SOA nor NS types are allowed."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responsePolicy": {
          "type": "string",
          "replaceOnChanges": true
        },
        "ruleName": {
          "type": "string",
          "description": "An identifier for this rule. Must be unique with the ResponsePolicy."
        }
      },
      "requiredInputs": [
        "responsePolicy"
      ]
    },
    "google-native:documentai/v1:Processor": {
      "description": "Creates a processor from the ProcessorType provided. The processor will be at `ENABLED` state by default after its creation.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the processor was created."
        },
        "defaultProcessorVersion": {
          "type": "string",
          "description": "The default processor version."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the processor."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The [KMS key](https://cloud.google.com/security-key-management) used for encryption and decryption in CMEK scenarios."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the processor. Format: `projects/{project}/locations/{location}/processors/{processor}`"
        },
        "processEndpoint": {
          "type": "string",
          "description": "Immutable. The http endpoint that can be called to invoke processing."
        },
        "processorVersionAliases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:documentai%2Fv1:GoogleCloudDocumentaiV1ProcessorVersionAliasResponse"
          },
          "description": "The processor version aliases."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the processor."
        },
        "type": {
          "type": "string",
          "description": "The processor type, such as: `OCR_PROCESSOR`, `INVOICE_PROCESSOR`. To get a list of processor types, see FetchProcessorTypes."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "defaultProcessorVersion",
        "displayName",
        "kmsKeyName",
        "location",
        "name",
        "processEndpoint",
        "processorVersionAliases",
        "project",
        "state",
        "type"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "The time the processor was created."
        },
        "defaultProcessorVersion": {
          "type": "string",
          "description": "The default processor version."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the processor."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The [KMS key](https://cloud.google.com/security-key-management) used for encryption and decryption in CMEK scenarios."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The processor type, such as: `OCR_PROCESSOR`, `INVOICE_PROCESSOR`. To get a list of processor types, see FetchProcessorTypes."
        }
      }
    },
    "google-native:documentai/v1beta3:Processor": {
      "description": "Creates a processor from the ProcessorType provided. The processor will be at `ENABLED` state by default after its creation.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the processor was created."
        },
        "defaultProcessorVersion": {
          "type": "string",
          "description": "The default processor version."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the processor."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The [KMS key](https://cloud.google.com/security-key-management) used for encryption and decryption in CMEK scenarios."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the processor. Format: `projects/{project}/locations/{location}/processors/{processor}`"
        },
        "processEndpoint": {
          "type": "string",
          "description": "Immutable. The http endpoint that can be called to invoke processing."
        },
        "processorVersionAliases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:documentai%2Fv1beta3:GoogleCloudDocumentaiV1beta3ProcessorVersionAliasResponse"
          },
          "description": "The processor version aliases."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the processor."
        },
        "type": {
          "type": "string",
          "description": "The processor type, such as: `OCR_PROCESSOR`, `INVOICE_PROCESSOR`. To get a list of processor types, see FetchProcessorTypes."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "defaultProcessorVersion",
        "displayName",
        "kmsKeyName",
        "location",
        "name",
        "processEndpoint",
        "processorVersionAliases",
        "project",
        "state",
        "type"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "The time the processor was created."
        },
        "defaultProcessorVersion": {
          "type": "string",
          "description": "The default processor version."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the processor."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The [KMS key](https://cloud.google.com/security-key-management) used for encryption and decryption in CMEK scenarios."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The processor type, such as: `OCR_PROCESSOR`, `INVOICE_PROCESSOR`. To get a list of processor types, see FetchProcessorTypes."
        }
      }
    },
    "google-native:domains/v1:Registration": {
      "description": "Registers a new domain name and creates a corresponding `Registration` resource. Call `RetrieveRegisterParameters` first to check availability of the domain name and determine parameters like price that are needed to build a call to this method. A successful call creates a `Registration` resource in state `REGISTRATION_PENDING`, which resolves to `ACTIVE` within 1-2 minutes, indicating that the domain was successfully registered. If the resource ends up in state `REGISTRATION_FAILED`, it indicates that the domain was not registered successfully, and you can safely delete the resource and retry registration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "contactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1:ContactSettingsResponse",
          "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the `Registration` resource."
        },
        "dnsSettings": {
          "$ref": "#/types/google-native:domains%2Fv1:DnsSettingsResponse",
          "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
        },
        "domainName": {
          "type": "string",
          "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format."
        },
        "expireTime": {
          "type": "string",
          "description": "The expiration timestamp of the `Registration`."
        },
        "issues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of issues with the `Registration` that require attention."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with the `Registration`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementSettings": {
          "$ref": "#/types/google-native:domains%2Fv1:ManagementSettingsResponse",
          "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
        },
        "name": {
          "type": "string",
          "description": "Name of the `Registration` resource, in the format `projects/*/locations/*/registrations/`."
        },
        "pendingContactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1:ContactSettingsResponse",
          "description": "Pending contact settings for the `Registration`. Updates to the `contact_settings` field that change its `registrant_contact` or `privacy` fields require email confirmation by the `registrant_contact` before taking effect. This field is set only if there are pending updates to the `contact_settings` that have not been confirmed. To confirm the changes, the `registrant_contact` must follow the instructions in the email they receive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registerFailureReason": {
          "type": "string",
          "description": "The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state."
        },
        "state": {
          "type": "string",
          "description": "The state of the `Registration`"
        },
        "supportedPrivacy": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of options for the `contact_settings.privacy` field that this `Registration` supports."
        },
        "transferFailureReason": {
          "type": "string",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
          "deprecationMessage": "Output only. Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state."
        }
      },
      "type": "object",
      "required": [
        "contactSettings",
        "createTime",
        "dnsSettings",
        "domainName",
        "expireTime",
        "issues",
        "labels",
        "location",
        "managementSettings",
        "name",
        "pendingContactSettings",
        "project",
        "registerFailureReason",
        "state",
        "supportedPrivacy",
        "transferFailureReason"
      ],
      "inputProperties": {
        "contactNotices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:RegistrationContactNoticesItem"
          },
          "description": "The list of contact notices that the caller acknowledges. The notices needed here depend on the values specified in `registration.contact_settings`."
        },
        "contactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1:ContactSettings",
          "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
        },
        "dnsSettings": {
          "$ref": "#/types/google-native:domains%2Fv1:DnsSettings",
          "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
        },
        "domainName": {
          "type": "string",
          "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format."
        },
        "domainNotices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:RegistrationDomainNoticesItem"
          },
          "description": "The list of domain notices that you acknowledge. Call `RetrieveRegisterParameters` to see the notices that need acknowledgement."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with the `Registration`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementSettings": {
          "$ref": "#/types/google-native:domains%2Fv1:ManagementSettings",
          "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validateOnly": {
          "type": "boolean",
          "description": "When true, only validation is performed, without actually registering the domain. Follows: https://cloud.google.com/apis/design/design_patterns#request_validation"
        },
        "yearlyPrice": {
          "$ref": "#/types/google-native:domains%2Fv1:Money",
          "description": "Yearly price to register or renew the domain. The value that should be put here can be obtained from RetrieveRegisterParameters or SearchDomains calls."
        }
      },
      "requiredInputs": [
        "contactSettings",
        "domainName",
        "yearlyPrice"
      ]
    },
    "google-native:domains/v1:RegistrationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:domains/v1:RegistrationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:domains/v1:RegistrationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "registrationId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "registrationId"
      ]
    },
    "google-native:domains/v1alpha2:Registration": {
      "description": "Registers a new domain name and creates a corresponding `Registration` resource. Call `RetrieveRegisterParameters` first to check availability of the domain name and determine parameters like price that are needed to build a call to this method. A successful call creates a `Registration` resource in state `REGISTRATION_PENDING`, which resolves to `ACTIVE` within 1-2 minutes, indicating that the domain was successfully registered. If the resource ends up in state `REGISTRATION_FAILED`, it indicates that the domain was not registered successfully, and you can safely delete the resource and retry registration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "contactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactSettingsResponse",
          "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the `Registration` resource."
        },
        "dnsSettings": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:DnsSettingsResponse",
          "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
        },
        "domainName": {
          "type": "string",
          "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format."
        },
        "expireTime": {
          "type": "string",
          "description": "The expiration timestamp of the `Registration`."
        },
        "issues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of issues with the `Registration` that require attention."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with the `Registration`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementSettings": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ManagementSettingsResponse",
          "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
        },
        "name": {
          "type": "string",
          "description": "Name of the `Registration` resource, in the format `projects/*/locations/*/registrations/`."
        },
        "pendingContactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactSettingsResponse",
          "description": "Pending contact settings for the `Registration`. Updates to the `contact_settings` field that change its `registrant_contact` or `privacy` fields require email confirmation by the `registrant_contact` before taking effect. This field is set only if there are pending updates to the `contact_settings` that have not been confirmed. To confirm the changes, the `registrant_contact` must follow the instructions in the email they receive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registerFailureReason": {
          "type": "string",
          "description": "The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state."
        },
        "state": {
          "type": "string",
          "description": "The state of the `Registration`"
        },
        "supportedPrivacy": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of options for the `contact_settings.privacy` field that this `Registration` supports."
        },
        "transferFailureReason": {
          "type": "string",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
          "deprecationMessage": "Output only. Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state."
        }
      },
      "type": "object",
      "required": [
        "contactSettings",
        "createTime",
        "dnsSettings",
        "domainName",
        "expireTime",
        "issues",
        "labels",
        "location",
        "managementSettings",
        "name",
        "pendingContactSettings",
        "project",
        "registerFailureReason",
        "state",
        "supportedPrivacy",
        "transferFailureReason"
      ],
      "inputProperties": {
        "contactNotices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:RegistrationContactNoticesItem"
          },
          "description": "The list of contact notices that the caller acknowledges. The notices needed here depend on the values specified in `registration.contact_settings`."
        },
        "contactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactSettings",
          "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
        },
        "dnsSettings": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:DnsSettings",
          "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
        },
        "domainName": {
          "type": "string",
          "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format."
        },
        "domainNotices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:RegistrationDomainNoticesItem"
          },
          "description": "The list of domain notices that you acknowledge. Call `RetrieveRegisterParameters` to see the notices that need acknowledgement."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with the `Registration`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementSettings": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:ManagementSettings",
          "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validateOnly": {
          "type": "boolean",
          "description": "When true, only validation is performed, without actually registering the domain. Follows: https://cloud.google.com/apis/design/design_patterns#request_validation"
        },
        "yearlyPrice": {
          "$ref": "#/types/google-native:domains%2Fv1alpha2:Money",
          "description": "Yearly price to register or renew the domain. The value that should be put here can be obtained from RetrieveRegisterParameters or SearchDomains calls."
        }
      },
      "requiredInputs": [
        "contactSettings",
        "domainName",
        "yearlyPrice"
      ]
    },
    "google-native:domains/v1alpha2:RegistrationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:domains/v1alpha2:RegistrationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:domains/v1alpha2:RegistrationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "registrationId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "registrationId"
      ]
    },
    "google-native:domains/v1beta1:Registration": {
      "description": "Registers a new domain name and creates a corresponding `Registration` resource. Call `RetrieveRegisterParameters` first to check availability of the domain name and determine parameters like price that are needed to build a call to this method. A successful call creates a `Registration` resource in state `REGISTRATION_PENDING`, which resolves to `ACTIVE` within 1-2 minutes, indicating that the domain was successfully registered. If the resource ends up in state `REGISTRATION_FAILED`, it indicates that the domain was not registered successfully, and you can safely delete the resource and retry registration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "contactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ContactSettingsResponse",
          "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the `Registration` resource."
        },
        "dnsSettings": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:DnsSettingsResponse",
          "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
        },
        "domainName": {
          "type": "string",
          "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format."
        },
        "expireTime": {
          "type": "string",
          "description": "The expiration timestamp of the `Registration`."
        },
        "issues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of issues with the `Registration` that require attention."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with the `Registration`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementSettings": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ManagementSettingsResponse",
          "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
        },
        "name": {
          "type": "string",
          "description": "Name of the `Registration` resource, in the format `projects/*/locations/*/registrations/`."
        },
        "pendingContactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ContactSettingsResponse",
          "description": "Pending contact settings for the `Registration`. Updates to the `contact_settings` field that change its `registrant_contact` or `privacy` fields require email confirmation by the `registrant_contact` before taking effect. This field is set only if there are pending updates to the `contact_settings` that have not been confirmed. To confirm the changes, the `registrant_contact` must follow the instructions in the email they receive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registerFailureReason": {
          "type": "string",
          "description": "The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state."
        },
        "state": {
          "type": "string",
          "description": "The state of the `Registration`"
        },
        "supportedPrivacy": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of options for the `contact_settings.privacy` field that this `Registration` supports."
        },
        "transferFailureReason": {
          "type": "string",
          "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
          "deprecationMessage": "Output only. Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state."
        }
      },
      "type": "object",
      "required": [
        "contactSettings",
        "createTime",
        "dnsSettings",
        "domainName",
        "expireTime",
        "issues",
        "labels",
        "location",
        "managementSettings",
        "name",
        "pendingContactSettings",
        "project",
        "registerFailureReason",
        "state",
        "supportedPrivacy",
        "transferFailureReason"
      ],
      "inputProperties": {
        "contactNotices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:RegistrationContactNoticesItem"
          },
          "description": "The list of contact notices that the caller acknowledges. The notices needed here depend on the values specified in `registration.contact_settings`."
        },
        "contactSettings": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ContactSettings",
          "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
        },
        "dnsSettings": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:DnsSettings",
          "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
        },
        "domainName": {
          "type": "string",
          "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format."
        },
        "domainNotices": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:RegistrationDomainNoticesItem"
          },
          "description": "The list of domain notices that you acknowledge. Call `RetrieveRegisterParameters` to see the notices that need acknowledgement."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of labels associated with the `Registration`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementSettings": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:ManagementSettings",
          "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validateOnly": {
          "type": "boolean",
          "description": "When true, only validation is performed, without actually registering the domain. Follows: https://cloud.google.com/apis/design/design_patterns#request_validation"
        },
        "yearlyPrice": {
          "$ref": "#/types/google-native:domains%2Fv1beta1:Money",
          "description": "Yearly price to register or renew the domain. The value that should be put here can be obtained from RetrieveRegisterParameters or SearchDomains calls."
        }
      },
      "requiredInputs": [
        "contactSettings",
        "domainName",
        "yearlyPrice"
      ]
    },
    "google-native:domains/v1beta1:RegistrationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:domains/v1beta1:RegistrationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:domains/v1beta1:RegistrationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "registrationId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "registrationId"
      ]
    },
    "google-native:essentialcontacts/v1:Contact": {
      "description": "Adds a new contact for a resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The email address to send notifications to. The email address does not need to be a Google Account."
        },
        "languageTag": {
          "type": "string",
          "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages."
        },
        "name": {
          "type": "string",
          "description": "The identifier for the contact. Format: {resource_type}/{resource_id}/contacts/{contact_id}"
        },
        "notificationCategorySubscriptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The categories of notifications that the contact will receive communications for."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validateTime": {
          "type": "string",
          "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago."
        },
        "validationState": {
          "type": "string",
          "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource."
        }
      },
      "type": "object",
      "required": [
        "email",
        "languageTag",
        "name",
        "notificationCategorySubscriptions",
        "project",
        "validateTime",
        "validationState"
      ],
      "inputProperties": {
        "email": {
          "type": "string",
          "description": "The email address to send notifications to. The email address does not need to be a Google Account."
        },
        "languageTag": {
          "type": "string",
          "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages."
        },
        "notificationCategorySubscriptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:essentialcontacts%2Fv1:ContactNotificationCategorySubscriptionsItem"
          },
          "description": "The categories of notifications that the contact will receive communications for."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validateTime": {
          "type": "string",
          "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago."
        },
        "validationState": {
          "$ref": "#/types/google-native:essentialcontacts%2Fv1:ContactValidationState",
          "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource."
        }
      },
      "requiredInputs": [
        "email",
        "languageTag",
        "notificationCategorySubscriptions"
      ]
    },
    "google-native:essentialcontacts/v1:FolderContact": {
      "description": "Adds a new contact for a resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The email address to send notifications to. The email address does not need to be a Google Account."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "languageTag": {
          "type": "string",
          "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages."
        },
        "name": {
          "type": "string",
          "description": "The identifier for the contact. Format: {resource_type}/{resource_id}/contacts/{contact_id}"
        },
        "notificationCategorySubscriptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The categories of notifications that the contact will receive communications for."
        },
        "validateTime": {
          "type": "string",
          "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago."
        },
        "validationState": {
          "type": "string",
          "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource."
        }
      },
      "type": "object",
      "required": [
        "email",
        "folderId",
        "languageTag",
        "name",
        "notificationCategorySubscriptions",
        "validateTime",
        "validationState"
      ],
      "inputProperties": {
        "email": {
          "type": "string",
          "description": "The email address to send notifications to. The email address does not need to be a Google Account."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "languageTag": {
          "type": "string",
          "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages."
        },
        "notificationCategorySubscriptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:essentialcontacts%2Fv1:FolderContactNotificationCategorySubscriptionsItem"
          },
          "description": "The categories of notifications that the contact will receive communications for."
        },
        "validateTime": {
          "type": "string",
          "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago."
        },
        "validationState": {
          "$ref": "#/types/google-native:essentialcontacts%2Fv1:FolderContactValidationState",
          "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource."
        }
      },
      "requiredInputs": [
        "email",
        "folderId",
        "languageTag",
        "notificationCategorySubscriptions"
      ]
    },
    "google-native:essentialcontacts/v1:OrganizationContact": {
      "description": "Adds a new contact for a resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "email": {
          "type": "string",
          "description": "The email address to send notifications to. The email address does not need to be a Google Account."
        },
        "languageTag": {
          "type": "string",
          "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages."
        },
        "name": {
          "type": "string",
          "description": "The identifier for the contact. Format: {resource_type}/{resource_id}/contacts/{contact_id}"
        },
        "notificationCategorySubscriptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The categories of notifications that the contact will receive communications for."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validateTime": {
          "type": "string",
          "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago."
        },
        "validationState": {
          "type": "string",
          "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource."
        }
      },
      "type": "object",
      "required": [
        "email",
        "languageTag",
        "name",
        "notificationCategorySubscriptions",
        "organizationId",
        "validateTime",
        "validationState"
      ],
      "inputProperties": {
        "email": {
          "type": "string",
          "description": "The email address to send notifications to. The email address does not need to be a Google Account."
        },
        "languageTag": {
          "type": "string",
          "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages."
        },
        "notificationCategorySubscriptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:essentialcontacts%2Fv1:OrganizationContactNotificationCategorySubscriptionsItem"
          },
          "description": "The categories of notifications that the contact will receive communications for."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validateTime": {
          "type": "string",
          "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago."
        },
        "validationState": {
          "$ref": "#/types/google-native:essentialcontacts%2Fv1:OrganizationContactValidationState",
          "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource."
        }
      },
      "requiredInputs": [
        "email",
        "languageTag",
        "notificationCategorySubscriptions",
        "organizationId"
      ]
    },
    "google-native:eventarc/v1:Channel": {
      "description": "Create a new channel in a particular project and location.",
      "properties": {
        "activationToken": {
          "type": "string",
          "description": "The activation token for the channel. The token must be used by the provider to register the channel for publishing."
        },
        "channelId": {
          "type": "string",
          "description": "Required. The user-provided ID to be assigned to the channel.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation time."
        },
        "cryptoKeyName": {
          "type": "string",
          "description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt their event data. It must match the pattern `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the channel. Must be unique within the location on the project and must be in `projects/{project}/locations/{location}/channels/{channel_id}` format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provider": {
          "type": "string",
          "description": "The name of the event provider (e.g. Eventarc SaaS partner) associated with the channel. This provider will be granted permissions to publish events to the channel. Format: `projects/{project}/locations/{location}/providers/{provider_id}`."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The name of the Pub/Sub topic created and managed by Eventarc system as a transport for the event delivery. Format: `projects/{project}/topics/{topic_id}`."
        },
        "state": {
          "type": "string",
          "description": "The state of a Channel."
        },
        "uid": {
          "type": "string",
          "description": "Server assigned unique identifier for the channel. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "The last-modified time."
        }
      },
      "type": "object",
      "required": [
        "activationToken",
        "channelId",
        "createTime",
        "cryptoKeyName",
        "location",
        "name",
        "project",
        "provider",
        "pubsubTopic",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "channelId": {
          "type": "string",
          "description": "Required. The user-provided ID to be assigned to the channel.",
          "replaceOnChanges": true
        },
        "cryptoKeyName": {
          "type": "string",
          "description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt their event data. It must match the pattern `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the channel. Must be unique within the location on the project and must be in `projects/{project}/locations/{location}/channels/{channel_id}` format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provider": {
          "type": "string",
          "description": "The name of the event provider (e.g. Eventarc SaaS partner) associated with the channel. This provider will be granted permissions to publish events to the channel. Format: `projects/{project}/locations/{location}/providers/{provider_id}`."
        }
      },
      "requiredInputs": [
        "channelId"
      ]
    },
    "google-native:eventarc/v1:ChannelConnection": {
      "description": "Create a new ChannelConnection in a particular project and location.",
      "properties": {
        "activationToken": {
          "type": "string",
          "description": "Input only. Activation token for the channel. The token will be used during the creation of ChannelConnection to bind the channel with the provider project. This field will not be stored in the provider resource."
        },
        "channel": {
          "type": "string",
          "description": "The name of the connected subscriber Channel. This is a weak reference to avoid cross project and cross accounts references. This must be in `projects/{project}/location/{location}/channels/{channel_id}` format."
        },
        "channelConnectionId": {
          "type": "string",
          "description": "Required. The user-provided ID to be assigned to the channel connection.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation time."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the connection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "Server assigned ID of the resource. The server guarantees uniqueness and immutability until deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "The last-modified time."
        }
      },
      "type": "object",
      "required": [
        "activationToken",
        "channel",
        "channelConnectionId",
        "createTime",
        "location",
        "name",
        "project",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "activationToken": {
          "type": "string",
          "description": "Input only. Activation token for the channel. The token will be used during the creation of ChannelConnection to bind the channel with the provider project. This field will not be stored in the provider resource."
        },
        "channel": {
          "type": "string",
          "description": "The name of the connected subscriber Channel. This is a weak reference to avoid cross project and cross accounts references. This must be in `projects/{project}/location/{location}/channels/{channel_id}` format."
        },
        "channelConnectionId": {
          "type": "string",
          "description": "Required. The user-provided ID to be assigned to the channel connection.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the connection."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "channel",
        "channelConnectionId"
      ]
    },
    "google-native:eventarc/v1:ChannelConnectionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:eventarc/v1:ChannelConnectionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:eventarc/v1:ChannelConnectionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "channelConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "channelConnectionId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "channelConnectionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "channelConnectionId"
      ]
    },
    "google-native:eventarc/v1:ChannelIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:eventarc/v1:ChannelIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:eventarc/v1:ChannelIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "channelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "channelId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "channelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "channelId"
      ]
    },
    "google-native:eventarc/v1:Trigger": {
      "description": "Create a new trigger in a particular project and location.",
      "properties": {
        "channel": {
          "type": "string",
          "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners."
        },
        "conditions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The reason(s) why a trigger is in FAILED state."
        },
        "createTime": {
          "type": "string",
          "description": "The creation time."
        },
        "destination": {
          "$ref": "#/types/google-native:eventarc%2Fv1:DestinationResponse",
          "description": "Destination specifies where the events should be sent to."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and might be sent only on create requests to ensure that the client has an up-to-date value before proceeding."
        },
        "eventDataContentType": {
          "type": "string",
          "description": "Optional. EventDataContentType specifies the type of payload in MIME format that is expected from the CloudEvent data field. This is set to `application/json` if the value is not defined."
        },
        "eventFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:EventFilterResponse"
          },
          "description": "Unordered list. The list of filters that applies to event attributes. Only events that match all the provided filters are sent to the destination."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User labels attached to the triggers that can be used to group resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the trigger. Must be unique within the location of the project and must be in `projects/{project}/locations/{location}/triggers/{trigger}` format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The IAM service account email associated with the trigger. The service account represents the identity of the trigger. The `iam.serviceAccounts.actAs` permission must be granted on the service account to allow a principal to impersonate the service account. For more information, see the [Roles and permissions](/eventarc/docs/all-roles-permissions) page specific to the trigger destination."
        },
        "transport": {
          "$ref": "#/types/google-native:eventarc%2Fv1:TransportResponse",
          "description": "Optional. To deliver messages, Eventarc might use other Google Cloud products as a transport intermediary. This field contains a reference to that transport intermediary. This information can be used for debugging purposes."
        },
        "triggerId": {
          "type": "string",
          "description": "Required. The user-provided ID to be assigned to the trigger.",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "Server-assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "The last-modified time."
        }
      },
      "type": "object",
      "required": [
        "channel",
        "conditions",
        "createTime",
        "destination",
        "etag",
        "eventDataContentType",
        "eventFilters",
        "labels",
        "location",
        "name",
        "project",
        "serviceAccount",
        "transport",
        "triggerId",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "channel": {
          "type": "string",
          "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners."
        },
        "destination": {
          "$ref": "#/types/google-native:eventarc%2Fv1:Destination",
          "description": "Destination specifies where the events should be sent to."
        },
        "eventDataContentType": {
          "type": "string",
          "description": "Optional. EventDataContentType specifies the type of payload in MIME format that is expected from the CloudEvent data field. This is set to `application/json` if the value is not defined."
        },
        "eventFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:EventFilter"
          },
          "description": "Unordered list. The list of filters that applies to event attributes. Only events that match all the provided filters are sent to the destination."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User labels attached to the triggers that can be used to group resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the trigger. Must be unique within the location of the project and must be in `projects/{project}/locations/{location}/triggers/{trigger}` format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The IAM service account email associated with the trigger. The service account represents the identity of the trigger. The `iam.serviceAccounts.actAs` permission must be granted on the service account to allow a principal to impersonate the service account. For more information, see the [Roles and permissions](/eventarc/docs/all-roles-permissions) page specific to the trigger destination."
        },
        "transport": {
          "$ref": "#/types/google-native:eventarc%2Fv1:Transport",
          "description": "Optional. To deliver messages, Eventarc might use other Google Cloud products as a transport intermediary. This field contains a reference to that transport intermediary. This information can be used for debugging purposes."
        },
        "triggerId": {
          "type": "string",
          "description": "Required. The user-provided ID to be assigned to the trigger.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destination",
        "eventFilters",
        "triggerId"
      ]
    },
    "google-native:eventarc/v1:TriggerIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:eventarc/v1:TriggerIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:eventarc/v1:TriggerIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "triggerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "triggerId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "triggerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "triggerId"
      ]
    },
    "google-native:eventarc/v1beta1:Trigger": {
      "description": "Create a new trigger in a particular project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation time."
        },
        "destination": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:DestinationResponse",
          "description": "Destination specifies where the events should be sent to."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent only on create requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User labels attached to the triggers that can be used to group resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "matchingCriteria": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:MatchingCriteriaResponse"
          },
          "description": "Unordered list. The criteria by which events are filtered. Only events that match with this criteria will be sent to the destination."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the trigger. Must be unique within the location on the project and must in `projects/{project}/locations/{location}/triggers/{trigger}` format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The IAM service account email associated with the trigger. The service account represents the identity of the trigger. The principal who calls this API must have `iam.serviceAccounts.actAs` permission in the service account. See https://cloud.google.com/iam/docs/understanding-service-accounts?hl=en#sa_common for more information. For Cloud Run destinations, this service account is used to generate identity tokens when invoking the service. See https://cloud.google.com/run/docs/triggering/pubsub-push#create-service-account for information on how to invoke authenticated Cloud Run services. In order to create Audit Log triggers, the service account should also have 'eventarc.events.receiveAuditLogV1Written' permission."
        },
        "transport": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:TransportResponse",
          "description": "In order to deliver messages, Eventarc may use other Google Cloud products as transport intermediary. This field contains a reference to that transport intermediary. This information can be used for debugging purposes."
        },
        "triggerId": {
          "type": "string",
          "description": "Required. The user-provided ID to be assigned to the trigger.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last-modified time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "destination",
        "etag",
        "labels",
        "location",
        "matchingCriteria",
        "name",
        "project",
        "serviceAccount",
        "transport",
        "triggerId",
        "updateTime"
      ],
      "inputProperties": {
        "destination": {
          "$ref": "#/types/google-native:eventarc%2Fv1beta1:Destination",
          "description": "Destination specifies where the events should be sent to."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User labels attached to the triggers that can be used to group resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "matchingCriteria": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:MatchingCriteria"
          },
          "description": "Unordered list. The criteria by which events are filtered. Only events that match with this criteria will be sent to the destination."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the trigger. Must be unique within the location on the project and must in `projects/{project}/locations/{location}/triggers/{trigger}` format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. The IAM service account email associated with the trigger. The service account represents the identity of the trigger. The principal who calls this API must have `iam.serviceAccounts.actAs` permission in the service account. See https://cloud.google.com/iam/docs/understanding-service-accounts?hl=en#sa_common for more information. For Cloud Run destinations, this service account is used to generate identity tokens when invoking the service. See https://cloud.google.com/run/docs/triggering/pubsub-push#create-service-account for information on how to invoke authenticated Cloud Run services. In order to create Audit Log triggers, the service account should also have 'eventarc.events.receiveAuditLogV1Written' permission."
        },
        "triggerId": {
          "type": "string",
          "description": "Required. The user-provided ID to be assigned to the trigger.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destination",
        "matchingCriteria",
        "triggerId"
      ]
    },
    "google-native:eventarc/v1beta1:TriggerIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:eventarc/v1beta1:TriggerIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:eventarc/v1beta1:TriggerIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "triggerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "triggerId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "triggerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "triggerId"
      ]
    },
    "google-native:file/v1:Backup": {
      "description": "Creates a backup.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID to use for the backup. The ID must be unique within the specified project and location. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. Values that do not match this pattern will trigger an INVALID_ARGUMENT error.",
          "replaceOnChanges": true
        },
        "capacityGb": {
          "type": "string",
          "description": "Capacity of the source file share when the backup was created."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the backup was created."
        },
        "description": {
          "type": "string",
          "description": "A description of the backup with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "downloadBytes": {
          "type": "string",
          "description": "Amount of bytes that will be downloaded if the backup is restored. This may be different than storage bytes, since sequential backups of the same disk will share storage."
        },
        "kmsKey": {
          "type": "string",
          "description": "Immutable. KMS key name used for data encryption."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the backup, in the format `projects/{project_number}/locations/{location_id}/backups/{backup_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "sourceFileShare": {
          "type": "string",
          "description": "Name of the file share in the source Filestore instance that the backup is created from."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The resource name of the source Filestore instance, in the format `projects/{project_number}/locations/{location_id}/instances/{instance_id}`, used to create this backup."
        },
        "sourceInstanceTier": {
          "type": "string",
          "description": "The service tier of the source Filestore instance that this backup is created from."
        },
        "state": {
          "type": "string",
          "description": "The backup state."
        },
        "storageBytes": {
          "type": "string",
          "description": "The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "capacityGb",
        "createTime",
        "description",
        "downloadBytes",
        "kmsKey",
        "labels",
        "location",
        "name",
        "project",
        "satisfiesPzs",
        "sourceFileShare",
        "sourceInstance",
        "sourceInstanceTier",
        "state",
        "storageBytes"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID to use for the backup. The ID must be unique within the specified project and location. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. Values that do not match this pattern will trigger an INVALID_ARGUMENT error.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "A description of the backup with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "kmsKey": {
          "type": "string",
          "description": "Immutable. KMS key name used for data encryption."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceFileShare": {
          "type": "string",
          "description": "Name of the file share in the source Filestore instance that the backup is created from."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The resource name of the source Filestore instance, in the format `projects/{project_number}/locations/{location_id}/instances/{instance_id}`, used to create this backup."
        }
      },
      "requiredInputs": [
        "backupId"
      ]
    },
    "google-native:file/v1:Instance": {
      "description": "Creates an instance. When creating from a backup, the capacity of the new instance needs to be equal to or larger than the capacity of the backup (and also equal to or larger than the minimum capacity of the tier).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the instance was created."
        },
        "description": {
          "type": "string",
          "description": "The description of the instance (2048 characters or less)."
        },
        "etag": {
          "type": "string",
          "description": "Server-specified ETag for the instance resource to prevent simultaneous updates from overwriting each other."
        },
        "fileShares": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1:FileShareConfigResponse"
          },
          "description": "File system shares on the instance. For this version, only a single file share is supported."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The name of the instance to create. The name must be unique for the specified project and location.",
          "replaceOnChanges": true
        },
        "kmsKeyName": {
          "type": "string",
          "description": "KMS key name used for data encryption."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the instance, in the format `projects/{project}/locations/{location}/instances/{instance}`."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1:NetworkConfigResponse"
          },
          "description": "VPC networks to which the instance is connected. For this version, only a single network is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "state": {
          "type": "string",
          "description": "The instance state."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the instance state, if available."
        },
        "suspensionReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Field indicates all the reasons the instance is in \"SUSPENDED\" state."
        },
        "tier": {
          "type": "string",
          "description": "The service tier of the instance."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "fileShares",
        "instanceId",
        "kmsKeyName",
        "labels",
        "location",
        "name",
        "networks",
        "project",
        "satisfiesPzs",
        "state",
        "statusMessage",
        "suspensionReasons",
        "tier"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the instance (2048 characters or less)."
        },
        "etag": {
          "type": "string",
          "description": "Server-specified ETag for the instance resource to prevent simultaneous updates from overwriting each other."
        },
        "fileShares": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1:FileShareConfig"
          },
          "description": "File system shares on the instance. For this version, only a single file share is supported."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The name of the instance to create. The name must be unique for the specified project and location.",
          "replaceOnChanges": true
        },
        "kmsKeyName": {
          "type": "string",
          "description": "KMS key name used for data encryption."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1:NetworkConfig"
          },
          "description": "VPC networks to which the instance is connected. For this version, only a single network is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tier": {
          "$ref": "#/types/google-native:file%2Fv1:InstanceTier",
          "description": "The service tier of the instance."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:file/v1:Snapshot": {
      "description": "Creates a snapshot.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the snapshot was created."
        },
        "description": {
          "type": "string",
          "description": "A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "filesystemUsedBytes": {
          "type": "string",
          "description": "The amount of bytes needed to allocate a full copy of the snapshot content"
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the snapshot, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotId": {
          "type": "string",
          "description": "Required. The ID to use for the snapshot. The ID must be unique within the specified instance. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The snapshot state."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "filesystemUsedBytes",
        "instanceId",
        "labels",
        "location",
        "name",
        "project",
        "snapshotId",
        "state"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotId": {
          "type": "string",
          "description": "Required. The ID to use for the snapshot. The ID must be unique within the specified instance. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instanceId",
        "snapshotId"
      ]
    },
    "google-native:file/v1beta1:Backup": {
      "description": "Creates a backup.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID to use for the backup. The ID must be unique within the specified project and location. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        },
        "capacityGb": {
          "type": "string",
          "description": "Capacity of the source file share when the backup was created."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the backup was created."
        },
        "description": {
          "type": "string",
          "description": "A description of the backup with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "downloadBytes": {
          "type": "string",
          "description": "Amount of bytes that will be downloaded if the backup is restored"
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Immutable. KMS key name used for data encryption."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the backup, in the format `projects/{project_id}/locations/{location_id}/backups/{backup_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "sourceFileShare": {
          "type": "string",
          "description": "Name of the file share in the source Filestore instance that the backup is created from."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The resource name of the source Filestore instance, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}`, used to create this backup."
        },
        "sourceInstanceTier": {
          "type": "string",
          "description": "The service tier of the source Filestore instance that this backup is created from."
        },
        "state": {
          "type": "string",
          "description": "The backup state."
        },
        "storageBytes": {
          "type": "string",
          "description": "The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "capacityGb",
        "createTime",
        "description",
        "downloadBytes",
        "kmsKeyName",
        "labels",
        "location",
        "name",
        "project",
        "satisfiesPzs",
        "sourceFileShare",
        "sourceInstance",
        "sourceInstanceTier",
        "state",
        "storageBytes"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID to use for the backup. The ID must be unique within the specified project and location. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "A description of the backup with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Immutable. KMS key name used for data encryption."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceFileShare": {
          "type": "string",
          "description": "Name of the file share in the source Filestore instance that the backup is created from."
        },
        "sourceInstance": {
          "type": "string",
          "description": "The resource name of the source Filestore instance, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}`, used to create this backup."
        }
      },
      "requiredInputs": [
        "backupId"
      ]
    },
    "google-native:file/v1beta1:Instance": {
      "description": "Creates an instance. When creating from a backup, the capacity of the new instance needs to be equal to or larger than the capacity of the backup (and also equal to or larger than the minimum capacity of the tier).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "capacityGb": {
          "type": "string",
          "description": "The storage capacity of the instance in gigabytes (GB = 1024^3 bytes). This capacity can be increased up to `max_capacity_gb` GB in multipliers of `capacity_step_size_gb` GB."
        },
        "capacityStepSizeGb": {
          "type": "string",
          "description": "The increase/decrease capacity step size."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the instance was created."
        },
        "description": {
          "type": "string",
          "description": "The description of the instance (2048 characters or less)."
        },
        "directoryServices": {
          "$ref": "#/types/google-native:file%2Fv1beta1:DirectoryServicesConfigResponse",
          "description": "Directory Services configuration for Kerberos-based authentication. Should only be set if protocol is \"NFS_V4_1\"."
        },
        "etag": {
          "type": "string",
          "description": "Server-specified ETag for the instance resource to prevent simultaneous updates from overwriting each other."
        },
        "fileShares": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:FileShareConfigResponse"
          },
          "description": "File system shares on the instance. For this version, only a single file share is supported."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The ID of the instance to create. The ID must be unique within the specified project and location. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        },
        "kmsKeyName": {
          "type": "string",
          "description": "KMS key name used for data encryption."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxCapacityGb": {
          "type": "string",
          "description": "The max capacity of the instance."
        },
        "maxShareCount": {
          "type": "string",
          "description": "The max number of shares allowed."
        },
        "multiShareEnabled": {
          "type": "boolean",
          "description": "Indicates whether this instance uses a multi-share configuration with which it can have more than one file-share or none at all. File-shares are added, updated and removed through the separate file-share APIs."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the instance, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}`."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:NetworkConfigResponse"
          },
          "description": "VPC networks to which the instance is connected. For this version, only a single network is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "Immutable. The protocol indicates the access protocol for all shares in the instance. This field is immutable and it cannot be changed after the instance has been created. Default value: `NFS_V3`."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "state": {
          "type": "string",
          "description": "The instance state."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the instance state, if available."
        },
        "suspensionReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Field indicates all the reasons the instance is in \"SUSPENDED\" state."
        },
        "tier": {
          "type": "string",
          "description": "The service tier of the instance."
        }
      },
      "type": "object",
      "required": [
        "capacityGb",
        "capacityStepSizeGb",
        "createTime",
        "description",
        "directoryServices",
        "etag",
        "fileShares",
        "instanceId",
        "kmsKeyName",
        "labels",
        "location",
        "maxCapacityGb",
        "maxShareCount",
        "multiShareEnabled",
        "name",
        "networks",
        "project",
        "protocol",
        "satisfiesPzs",
        "state",
        "statusMessage",
        "suspensionReasons",
        "tier"
      ],
      "inputProperties": {
        "capacityGb": {
          "type": "string",
          "description": "The storage capacity of the instance in gigabytes (GB = 1024^3 bytes). This capacity can be increased up to `max_capacity_gb` GB in multipliers of `capacity_step_size_gb` GB."
        },
        "description": {
          "type": "string",
          "description": "The description of the instance (2048 characters or less)."
        },
        "directoryServices": {
          "$ref": "#/types/google-native:file%2Fv1beta1:DirectoryServicesConfig",
          "description": "Directory Services configuration for Kerberos-based authentication. Should only be set if protocol is \"NFS_V4_1\"."
        },
        "etag": {
          "type": "string",
          "description": "Server-specified ETag for the instance resource to prevent simultaneous updates from overwriting each other."
        },
        "fileShares": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:FileShareConfig"
          },
          "description": "File system shares on the instance. For this version, only a single file share is supported."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The ID of the instance to create. The ID must be unique within the specified project and location. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        },
        "kmsKeyName": {
          "type": "string",
          "description": "KMS key name used for data encryption."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxShareCount": {
          "type": "string",
          "description": "The max number of shares allowed."
        },
        "multiShareEnabled": {
          "type": "boolean",
          "description": "Indicates whether this instance uses a multi-share configuration with which it can have more than one file-share or none at all. File-shares are added, updated and removed through the separate file-share APIs."
        },
        "networks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:NetworkConfig"
          },
          "description": "VPC networks to which the instance is connected. For this version, only a single network is supported."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "$ref": "#/types/google-native:file%2Fv1beta1:InstanceProtocol",
          "description": "Immutable. The protocol indicates the access protocol for all shares in the instance. This field is immutable and it cannot be changed after the instance has been created. Default value: `NFS_V3`."
        },
        "tier": {
          "$ref": "#/types/google-native:file%2Fv1beta1:InstanceTier",
          "description": "The service tier of the instance."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:file/v1beta1:Share": {
      "description": "Creates a share.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backup": {
          "type": "string",
          "description": "Immutable. Full name of the Cloud Filestore Backup resource that this Share is restored from, in the format of projects/{project_id}/locations/{location_id}/backups/{backup_id}. Empty, if the Share is created from scratch and not restored from a backup."
        },
        "capacityGb": {
          "type": "string",
          "description": "File share capacity in gigabytes (GB). Filestore defines 1 GB as 1024^3 bytes. Must be greater than 0."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the share was created."
        },
        "description": {
          "type": "string",
          "description": "A description of the share with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mountName": {
          "type": "string",
          "description": "The mount name of the share. Must be 63 characters or less and consist of uppercase or lowercase letters, numbers, and underscores."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the share, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}/shares/{share_id}`."
        },
        "nfsExportOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:NfsExportOptionsResponse"
          },
          "description": "Nfs Export Options. There is a limit of 10 export options per file share."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "shareId": {
          "type": "string",
          "description": "Required. The ID to use for the share. The ID must be unique within the specified instance. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The share state."
        }
      },
      "type": "object",
      "required": [
        "backup",
        "capacityGb",
        "createTime",
        "description",
        "instanceId",
        "labels",
        "location",
        "mountName",
        "name",
        "nfsExportOptions",
        "project",
        "shareId",
        "state"
      ],
      "inputProperties": {
        "backup": {
          "type": "string",
          "description": "Immutable. Full name of the Cloud Filestore Backup resource that this Share is restored from, in the format of projects/{project_id}/locations/{location_id}/backups/{backup_id}. Empty, if the Share is created from scratch and not restored from a backup."
        },
        "capacityGb": {
          "type": "string",
          "description": "File share capacity in gigabytes (GB). Filestore defines 1 GB as 1024^3 bytes. Must be greater than 0."
        },
        "description": {
          "type": "string",
          "description": "A description of the share with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mountName": {
          "type": "string",
          "description": "The mount name of the share. Must be 63 characters or less and consist of uppercase or lowercase letters, numbers, and underscores."
        },
        "nfsExportOptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:file%2Fv1beta1:NfsExportOptions"
          },
          "description": "Nfs Export Options. There is a limit of 10 export options per file share."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "shareId": {
          "type": "string",
          "description": "Required. The ID to use for the share. The ID must be unique within the specified instance. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instanceId",
        "shareId"
      ]
    },
    "google-native:file/v1beta1:Snapshot": {
      "description": "Creates a snapshot.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the snapshot was created."
        },
        "description": {
          "type": "string",
          "description": "A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "filesystemUsedBytes": {
          "type": "string",
          "description": "The amount of bytes needed to allocate a full copy of the snapshot content"
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the snapshot, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotId": {
          "type": "string",
          "description": "Required. The ID to use for the snapshot. The ID must be unique within the specified instance. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The snapshot state."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "filesystemUsedBytes",
        "instanceId",
        "labels",
        "location",
        "name",
        "project",
        "snapshotId",
        "state"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotId": {
          "type": "string",
          "description": "Required. The ID to use for the snapshot. The ID must be unique within the specified instance. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instanceId",
        "snapshotId"
      ]
    },
    "google-native:firebase/v1beta1:AndroidApp": {
      "description": "Requests the creation of a new AndroidApp in the specified FirebaseProject. The result of this call is an `Operation` which can be used to track the provisioning process. The `Operation` is automatically deleted after completion, so there is no need to call `DeleteOperation`.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiKeyId": {
          "type": "string",
          "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `AndroidApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.androidApps/getConfig). If `api_key_id` is not set in requests to [`androidApps.Create`](../../rest/v1beta1/projects.androidApps/create), then Firebase automatically associates an `api_key_id` with the `AndroidApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `AndroidApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys."
        },
        "appId": {
          "type": "string",
          "description": "Immutable. The globally unique, Firebase-assigned identifier for the `AndroidApp`. This identifier should be treated as an opaque token, as the data format is not specified."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name for the `AndroidApp`."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated."
        },
        "expireTime": {
          "type": "string",
          "description": "Timestamp of when the App will be considered expired and cannot be undeleted. This value is only provided if the App is in the `DELETED` state."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the AndroidApp, in the format: projects/ PROJECT_IDENTIFIER/androidApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.androidApps#AndroidApp.FIELDS.app_id))."
        },
        "packageName": {
          "type": "string",
          "description": "Immutable. The canonical package name of the Android app as would appear in the Google Play Developer Console."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sha1Hashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SHA1 certificate hashes for the AndroidApp."
        },
        "sha256Hashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SHA256 certificate hashes for the AndroidApp."
        },
        "state": {
          "type": "string",
          "description": "The lifecycle state of the App."
        }
      },
      "type": "object",
      "required": [
        "apiKeyId",
        "appId",
        "displayName",
        "etag",
        "expireTime",
        "name",
        "packageName",
        "project",
        "sha1Hashes",
        "sha256Hashes",
        "state"
      ],
      "inputProperties": {
        "apiKeyId": {
          "type": "string",
          "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `AndroidApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.androidApps/getConfig). If `api_key_id` is not set in requests to [`androidApps.Create`](../../rest/v1beta1/projects.androidApps/create), then Firebase automatically associates an `api_key_id` with the `AndroidApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `AndroidApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name for the `AndroidApp`."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the AndroidApp, in the format: projects/ PROJECT_IDENTIFIER/androidApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.androidApps#AndroidApp.FIELDS.app_id))."
        },
        "packageName": {
          "type": "string",
          "description": "Immutable. The canonical package name of the Android app as would appear in the Google Play Developer Console."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sha1Hashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SHA1 certificate hashes for the AndroidApp."
        },
        "sha256Hashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SHA256 certificate hashes for the AndroidApp."
        }
      }
    },
    "google-native:firebase/v1beta1:IosApp": {
      "description": "Requests the creation of a new IosApp in the specified FirebaseProject. The result of this call is an `Operation` which can be used to track the provisioning process. The `Operation` is automatically deleted after completion, so there is no need to call `DeleteOperation`.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiKeyId": {
          "type": "string",
          "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `IosApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.iosApps/getConfig). If `api_key_id` is not set in requests to [`iosApps.Create`](../../rest/v1beta1/projects.iosApps/create), then Firebase automatically associates an `api_key_id` with the `IosApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `IosApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys."
        },
        "appId": {
          "type": "string",
          "description": "Immutable. The globally unique, Firebase-assigned identifier for the `IosApp`. This identifier should be treated as an opaque token, as the data format is not specified."
        },
        "appStoreId": {
          "type": "string",
          "description": "The automatically generated Apple ID assigned to the iOS app by Apple in the iOS App Store."
        },
        "bundleId": {
          "type": "string",
          "description": "Immutable. The canonical bundle ID of the iOS app as it would appear in the iOS AppStore."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name for the `IosApp`."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated."
        },
        "expireTime": {
          "type": "string",
          "description": "Timestamp of when the App will be considered expired and cannot be undeleted. This value is only provided if the App is in the `DELETED` state."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the IosApp, in the format: projects/PROJECT_IDENTIFIER /iosApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.iosApps#IosApp.FIELDS.app_id))."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The lifecycle state of the App."
        },
        "teamId": {
          "type": "string",
          "description": "The Apple Developer Team ID associated with the App in the App Store."
        }
      },
      "type": "object",
      "required": [
        "apiKeyId",
        "appId",
        "appStoreId",
        "bundleId",
        "displayName",
        "etag",
        "expireTime",
        "name",
        "project",
        "state",
        "teamId"
      ],
      "inputProperties": {
        "apiKeyId": {
          "type": "string",
          "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `IosApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.iosApps/getConfig). If `api_key_id` is not set in requests to [`iosApps.Create`](../../rest/v1beta1/projects.iosApps/create), then Firebase automatically associates an `api_key_id` with the `IosApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `IosApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys."
        },
        "appStoreId": {
          "type": "string",
          "description": "The automatically generated Apple ID assigned to the iOS app by Apple in the iOS App Store."
        },
        "bundleId": {
          "type": "string",
          "description": "Immutable. The canonical bundle ID of the iOS app as it would appear in the iOS AppStore."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name for the `IosApp`."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the IosApp, in the format: projects/PROJECT_IDENTIFIER /iosApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.iosApps#IosApp.FIELDS.app_id))."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "teamId": {
          "type": "string",
          "description": "The Apple Developer Team ID associated with the App in the App Store."
        }
      }
    },
    "google-native:firebase/v1beta1:WebApp": {
      "description": "Requests the creation of a new WebApp in the specified FirebaseProject. The result of this call is an `Operation` which can be used to track the provisioning process. The `Operation` is automatically deleted after completion, so there is no need to call `DeleteOperation`.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apiKeyId": {
          "type": "string",
          "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `WebApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.webApps/getConfig). If `api_key_id` is not set in requests to [`webApps.Create`](../../rest/v1beta1/projects.webApps/create), then Firebase automatically associates an `api_key_id` with the `WebApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `WebApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys."
        },
        "appId": {
          "type": "string",
          "description": "Immutable. The globally unique, Firebase-assigned identifier for the `WebApp`. This identifier should be treated as an opaque token, as the data format is not specified."
        },
        "appUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs where the `WebApp` is hosted."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name for the `WebApp`."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated."
        },
        "expireTime": {
          "type": "string",
          "description": "Timestamp of when the App will be considered expired and cannot be undeleted. This value is only provided if the App is in the `DELETED` state."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the WebApp, in the format: projects/PROJECT_IDENTIFIER /webApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.webApps#WebApp.FIELDS.app_id))."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The lifecycle state of the App."
        },
        "webId": {
          "type": "string",
          "description": "Immutable. A unique, Firebase-assigned identifier for the `WebApp`. This identifier is only used to populate the `namespace` value for the `WebApp`. For most use cases, use `appId` to identify or reference the App. The `webId` value is only unique within a `FirebaseProject` and its associated Apps."
        }
      },
      "type": "object",
      "required": [
        "apiKeyId",
        "appId",
        "appUrls",
        "displayName",
        "etag",
        "expireTime",
        "name",
        "project",
        "state",
        "webId"
      ],
      "inputProperties": {
        "apiKeyId": {
          "type": "string",
          "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `WebApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.webApps/getConfig). If `api_key_id` is not set in requests to [`webApps.Create`](../../rest/v1beta1/projects.webApps/create), then Firebase automatically associates an `api_key_id` with the `WebApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `WebApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys."
        },
        "appUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URLs where the `WebApp` is hosted."
        },
        "displayName": {
          "type": "string",
          "description": "The user-assigned display name for the `WebApp`."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the WebApp, in the format: projects/PROJECT_IDENTIFIER /webApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.webApps#WebApp.FIELDS.app_id))."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:firebaseappcheck/v1:DebugToken": {
      "description": "Creates a new DebugToken for the specified app. For security reasons, after the creation operation completes, the `token` field cannot be updated or retrieved, but you can revoke the debug token using DeleteDebugToken. Each app can have a maximum of 20 debug tokens.",
      "properties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "A human readable display name used to identify this debug token."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the debug token, in the format: ``` projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "token": {
          "type": "string",
          "description": "Input only. Immutable. The secret token itself. Must be provided during creation, and must be a UUID4, case insensitive. This field is immutable once set, and cannot be provided during an UpdateDebugToken request. You can, however, delete this debug token using DeleteDebugToken to revoke it. For security reasons, this field will never be populated in any response."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "displayName",
        "name",
        "project",
        "token"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "A human readable display name used to identify this debug token."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the debug token, in the format: ``` projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "token": {
          "type": "string",
          "description": "Input only. Immutable. The secret token itself. Must be provided during creation, and must be a UUID4, case insensitive. This field is immutable once set, and cannot be provided during an UpdateDebugToken request. You can, however, delete this debug token using DeleteDebugToken to revoke it. For security reasons, this field will never be populated in any response."
        }
      },
      "requiredInputs": [
        "appId",
        "displayName",
        "token"
      ]
    },
    "google-native:firebaseappcheck/v1beta:DebugToken": {
      "description": "Creates a new DebugToken for the specified app. For security reasons, after the creation operation completes, the `token` field cannot be updated or retrieved, but you can revoke the debug token using DeleteDebugToken. Each app can have a maximum of 20 debug tokens.",
      "properties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "A human readable display name used to identify this debug token."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the debug token, in the format: ``` projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "token": {
          "type": "string",
          "description": "Input only. Immutable. The secret token itself. Must be provided during creation, and must be a UUID4, case insensitive. This field is immutable once set, and cannot be provided during an UpdateDebugToken request. You can, however, delete this debug token using DeleteDebugToken to revoke it. For security reasons, this field will never be populated in any response."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "displayName",
        "name",
        "project",
        "token"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "A human readable display name used to identify this debug token."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of the debug token, in the format: ``` projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "token": {
          "type": "string",
          "description": "Input only. Immutable. The secret token itself. Must be provided during creation, and must be a UUID4, case insensitive. This field is immutable once set, and cannot be provided during an UpdateDebugToken request. You can, however, delete this debug token using DeleteDebugToken to revoke it. For security reasons, this field will never be populated in any response."
        }
      },
      "requiredInputs": [
        "appId",
        "displayName",
        "token"
      ]
    },
    "google-native:firebaseappdistribution/v1:Group": {
      "description": "Create a group.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the group."
        },
        "groupId": {
          "type": "string",
          "description": "Optional. The \"alias\" to use for the group, which will become the final component of the group's resource name. This value must be unique per project. The field is named `groupId` to comply with AIP guidance for user-specified IDs. This value should be 4-63 characters, and valid characters are `/a-z-/`. If not set, it will be generated based on the display name."
        },
        "inviteLinkCount": {
          "type": "integer",
          "description": "The number of invite links for this group."
        },
        "name": {
          "type": "string",
          "description": "The name of the group resource. Format: `projects/{project_number}/groups/{group_alias}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseCount": {
          "type": "integer",
          "description": "The number of releases this group is permitted to access."
        },
        "testerCount": {
          "type": "integer",
          "description": "The number of testers who are members of this group."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "inviteLinkCount",
        "name",
        "project",
        "releaseCount",
        "testerCount"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The display name of the group."
        },
        "groupId": {
          "type": "string",
          "description": "Optional. The \"alias\" to use for the group, which will become the final component of the group's resource name. This value must be unique per project. The field is named `groupId` to comply with AIP guidance for user-specified IDs. This value should be 4-63 characters, and valid characters are `/a-z-/`. If not set, it will be generated based on the display name."
        },
        "name": {
          "type": "string",
          "description": "The name of the group resource. Format: `projects/{project_number}/groups/{group_alias}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:firebasedatabase/v1beta:Instance": {
      "description": "Requests that a new DatabaseInstance be created. The state of a successfully created DatabaseInstance is ACTIVE. Only available for projects on the Blaze plan. Projects can be upgraded using the Cloud Billing API https://cloud.google.com/billing/reference/rest/v1/projects/updateBillingInfo. Note that it might take a few minutes for billing enablement state to propagate to Firebase systems.",
      "properties": {
        "databaseId": {
          "type": "string",
          "description": "The globally unique identifier of the database instance."
        },
        "databaseUrl": {
          "type": "string",
          "description": "Output Only. The globally unique hostname of the database."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The fully qualified resource name of the database instance, in the form: `projects/{project-number}/locations/{location-id}/instances/{database-id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The database's lifecycle state. Read-only."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The database instance type. On creation only USER_DATABASE is allowed, which is also the default when omitted."
        }
      },
      "type": "object",
      "required": [
        "databaseUrl",
        "location",
        "name",
        "project",
        "state",
        "type"
      ],
      "inputProperties": {
        "databaseId": {
          "type": "string",
          "description": "The globally unique identifier of the database instance."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The fully qualified resource name of the database instance, in the form: `projects/{project-number}/locations/{location-id}/instances/{database-id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:firebasedatabase%2Fv1beta:InstanceType",
          "description": "Immutable. The database instance type. On creation only USER_DATABASE is allowed, which is also the default when omitted."
        }
      }
    },
    "google-native:firebasehosting/v1beta1:Channel": {
      "description": "Creates a new channel in the specified site.",
      "properties": {
        "channelId": {
          "type": "string",
          "description": "Required. Immutable. A unique ID within the site that identifies the channel.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the channel was created."
        },
        "expireTime": {
          "type": "string",
          "description": "The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in the output whether it's set directly or via the `ttl` field."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Text labels used for extra metadata and/or filtering."
        },
        "name": {
          "type": "string",
          "description": "The fully-qualified resource name for the channel, in the format: sites/ SITE_ID/channels/CHANNEL_ID"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "release": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ReleaseResponse",
          "description": "The current release for the channel, if any."
        },
        "retainedReleaseCount": {
          "type": "integer",
          "description": "The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels."
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "ttl": {
          "type": "string",
          "description": "Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which the channel was last updated."
        },
        "url": {
          "type": "string",
          "description": "The URL at which the content of this channel's current release can be viewed. This URL is a Firebase-provided subdomain of `web.app`. The content of this channel's current release can also be viewed at the Firebase-provided subdomain of `firebaseapp.com`. If this channel is the `live` channel for the Hosting site, then the content of this channel's current release can also be viewed at any connected custom domains."
        }
      },
      "type": "object",
      "required": [
        "channelId",
        "createTime",
        "expireTime",
        "labels",
        "name",
        "project",
        "release",
        "retainedReleaseCount",
        "siteId",
        "ttl",
        "updateTime",
        "url"
      ],
      "inputProperties": {
        "channelId": {
          "type": "string",
          "description": "Required. Immutable. A unique ID within the site that identifies the channel.",
          "replaceOnChanges": true
        },
        "expireTime": {
          "type": "string",
          "description": "The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in the output whether it's set directly or via the `ttl` field."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Text labels used for extra metadata and/or filtering."
        },
        "name": {
          "type": "string",
          "description": "The fully-qualified resource name for the channel, in the format: sites/ SITE_ID/channels/CHANNEL_ID"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "retainedReleaseCount": {
          "type": "integer",
          "description": "The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels."
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "ttl": {
          "type": "string",
          "description": "Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request."
        }
      },
      "requiredInputs": [
        "channelId",
        "siteId"
      ]
    },
    "google-native:firebasehosting/v1beta1:CustomDomain": {
      "description": "Creates a `CustomDomain`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations you can add to leave both human- and machine-readable metadata about your `CustomDomain`."
        },
        "cert": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:CertificateResponse",
          "description": "The SSL certificate Hosting has for this custom domain's domain name. For new custom domains, this often represents Hosting's intent to create a certificate, rather than an actual cert. Check the `state` field for more."
        },
        "certPreference": {
          "type": "string",
          "description": "A field that lets you specify which SSL certificate type Hosting creates for your domain name. Spark plan custom domains only have access to the `GROUPED` cert type, while Blaze plan domains can select any option."
        },
        "createTime": {
          "type": "string",
          "description": "The custom domain's create time."
        },
        "customDomainId": {
          "type": "string",
          "description": "Required. The ID of the `CustomDomain`, which is the domain name you'd like to use with Firebase Hosting.",
          "replaceOnChanges": true
        },
        "deleteTime": {
          "type": "string",
          "description": "The time the `CustomDomain` was deleted; null for custom domains that haven't been deleted. Deleted custom domains persist for approximately 30 days, after which time Hosting removes them completely. To restore a deleted custom domain, make an `UndeleteCustomDomain` request."
        },
        "etag": {
          "type": "string",
          "description": "A string that represents the current state of the `CustomDomain` and allows you to confirm its initial state in requests that would modify it. Use the tag to ensure consistency when making `UpdateCustomDomain`, `DeleteCustomDomain`, and `UndeleteCustomDomain` requests."
        },
        "expireTime": {
          "type": "string",
          "description": "The minimum time before a soft-deleted `CustomDomain` is completely removed from Hosting; null for custom domains that haven't been deleted."
        },
        "hostState": {
          "type": "string",
          "description": "The `HostState` of the domain name this `CustomDomain` refers to."
        },
        "issues": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:StatusResponse"
          },
          "description": "A set of errors Hosting systems encountered when trying to establish Hosting's ability to serve secure content for your domain name. Resolve these issues to ensure your `CustomDomain` behaves properly."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels used for extra metadata and/or filtering."
        },
        "name": {
          "type": "string",
          "description": "The fully-qualified name of the `CustomDomain`."
        },
        "ownershipState": {
          "type": "string",
          "description": "The `OwnershipState` of the domain name this `CustomDomain` refers to."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "A field that, if true, indicates that Hosting's systems are attmepting to make the custom domain's state match your preferred state. This is most frequently `true` when initially provisioning a `CustomDomain` after a `CreateCustomDomain` request or when creating a new SSL certificate to match an updated `cert_preference` after an `UpdateCustomDomain` request."
        },
        "redirectTarget": {
          "type": "string",
          "description": "A domain name that this `CustomDomain` should direct traffic towards. If specified, Hosting will respond to requests against this custom domain with an HTTP 301 code, and route traffic to the specified `redirect_target` instead."
        },
        "requiredDnsUpdates": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DnsUpdatesResponse",
          "description": "A set of updates you should make to the domain name's DNS records to let Hosting serve secure content on its behalf."
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last time the `CustomDomain` was updated."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "cert",
        "certPreference",
        "createTime",
        "customDomainId",
        "deleteTime",
        "etag",
        "expireTime",
        "hostState",
        "issues",
        "labels",
        "name",
        "ownershipState",
        "project",
        "reconciling",
        "redirectTarget",
        "requiredDnsUpdates",
        "siteId",
        "updateTime"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations you can add to leave both human- and machine-readable metadata about your `CustomDomain`."
        },
        "certPreference": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:CustomDomainCertPreference",
          "description": "A field that lets you specify which SSL certificate type Hosting creates for your domain name. Spark plan custom domains only have access to the `GROUPED` cert type, while Blaze plan domains can select any option."
        },
        "customDomainId": {
          "type": "string",
          "description": "Required. The ID of the `CustomDomain`, which is the domain name you'd like to use with Firebase Hosting.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels used for extra metadata and/or filtering."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redirectTarget": {
          "type": "string",
          "description": "A domain name that this `CustomDomain` should direct traffic towards. If specified, Hosting will respond to requests against this custom domain with an HTTP 301 code, and route traffic to the specified `redirect_target` instead."
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "customDomainId",
        "siteId"
      ]
    },
    "google-native:firebasehosting/v1beta1:Domain": {
      "description": "Creates a domain mapping on the specified site.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "domainName": {
          "type": "string",
          "description": "The domain name of the association."
        },
        "domainRedirect": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DomainRedirectResponse",
          "description": "If set, the domain should redirect with the provided parameters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "provisioning": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DomainProvisioningResponse",
          "description": "Information about the provisioning of certificates and the health of the DNS resolution for the domain."
        },
        "site": {
          "type": "string",
          "description": "The site name of the association."
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "Additional status of the domain association."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which the domain was last updated."
        }
      },
      "type": "object",
      "required": [
        "domainName",
        "domainRedirect",
        "project",
        "provisioning",
        "site",
        "siteId",
        "status",
        "updateTime"
      ],
      "inputProperties": {
        "domainName": {
          "type": "string",
          "description": "The domain name of the association."
        },
        "domainRedirect": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DomainRedirect",
          "description": "If set, the domain should redirect with the provided parameters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "site": {
          "type": "string",
          "description": "The site name of the association."
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "domainName",
        "site",
        "siteId"
      ]
    },
    "google-native:firebasehosting/v1beta1:Release": {
      "description": "Creates a new release, which makes the content of the specified version actively display on the appropriate URL(s).\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "channelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "message": {
          "type": "string",
          "description": "The deploy description when the release was created. The value can be up to 512 characters."
        },
        "name": {
          "type": "string",
          "description": "The unique identifier for the release, in either of the following formats: - sites/SITE_ID/releases/RELEASE_ID - sites/SITE_ID/channels/CHANNEL_ID/releases/RELEASE_ID This name is provided in the response body when you call [`releases.create`](sites.releases/create) or [`channels.releases.create`](sites.channels.releases/create)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseTime": {
          "type": "string",
          "description": "The time at which the version is set to be public."
        },
        "releaseUser": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
          "description": "Identifies the user who created the release."
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release."
        },
        "version": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:VersionResponse",
          "description": "The configuration and content that was released."
        },
        "versionName": {
          "type": "string",
          "description": " The unique identifier for a version, in the format: sites/SITE_ID/versions/ VERSION_ID The SITE_ID in this version identifier must match the SITE_ID in the `parent` parameter. This query parameter must be empty if the `type` field in the request body is `SITE_DISABLE`."
        }
      },
      "type": "object",
      "required": [
        "channelId",
        "message",
        "name",
        "project",
        "releaseTime",
        "releaseUser",
        "siteId",
        "type",
        "version"
      ],
      "inputProperties": {
        "channelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "message": {
          "type": "string",
          "description": "The deploy description when the release was created. The value can be up to 512 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ReleaseType",
          "description": "Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release."
        },
        "versionName": {
          "type": "string",
          "description": " The unique identifier for a version, in the format: sites/SITE_ID/versions/ VERSION_ID The SITE_ID in this version identifier must match the SITE_ID in the `parent` parameter. This query parameter must be empty if the `type` field in the request body is `SITE_DISABLE`."
        }
      },
      "requiredInputs": [
        "channelId",
        "siteId"
      ]
    },
    "google-native:firebasehosting/v1beta1:Site": {
      "description": "Creates a new Hosting Site in the specified parent Firebase project. Note that Hosting sites can take several minutes to propagate through Firebase systems.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "appId": {
          "type": "string",
          "description": "Optional. The [ID of a Web App](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.webApps#WebApp.FIELDS.app_id) associated with the Hosting site."
        },
        "defaultUrl": {
          "type": "string",
          "description": "The default URL for the Hosting site."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-specified labels for the Hosting site."
        },
        "name": {
          "type": "string",
          "description": "The fully-qualified resource name of the Hosting site, in the format: projects/PROJECT_IDENTIFIER/sites/SITE_ID PROJECT_IDENTIFIER: the Firebase project's [`ProjectNumber`](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "siteId": {
          "type": "string",
          "description": "Required. Immutable. A globally unique identifier for the Hosting site. This identifier is used to construct the Firebase-provisioned subdomains for the site, so it must also be a valid domain name label.",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The type of Hosting site. Every Firebase project has a `DEFAULT_SITE`, which is created when Hosting is provisioned for the project. All additional sites are `USER_SITE`."
        }
      },
      "type": "object",
      "required": [
        "appId",
        "defaultUrl",
        "labels",
        "name",
        "project",
        "siteId",
        "type"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "description": "Optional. The [ID of a Web App](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.webApps#WebApp.FIELDS.app_id) associated with the Hosting site."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-specified labels for the Hosting site."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "siteId": {
          "type": "string",
          "description": "Required. Immutable. A globally unique identifier for the Hosting site. This identifier is used to construct the Firebase-provisioned subdomains for the site, so it must also be a valid domain name label.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "siteId"
      ]
    },
    "google-native:firebasehosting/v1beta1:Version": {
      "description": "Creates a new version for the specified site.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ServingConfigResponse",
          "description": "The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](https://firebase.google.com/docs/cli/#the_firebasejson_file) file."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the version was created."
        },
        "createUser": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
          "description": "Identifies the user who created the version."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which the version was `DELETED`."
        },
        "deleteUser": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
          "description": "Identifies the user who `DELETED` the version."
        },
        "fileCount": {
          "type": "string",
          "description": "The total number of files associated with the version. This value is calculated after a version is `FINALIZED`."
        },
        "finalizeTime": {
          "type": "string",
          "description": "The time at which the version was `FINALIZED`."
        },
        "finalizeUser": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
          "description": "Identifies the user who `FINALIZED` the version."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels used for extra metadata and/or filtering."
        },
        "name": {
          "type": "string",
          "description": "The fully-qualified resource name for the version, in the format: sites/ SITE_ID/versions/VERSION_ID This name is provided in the response body when you call [`CreateVersion`](sites.versions/create)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sizeBytes": {
          "type": "string",
          "description": "The self-reported size of the version. This value is used for a pre-emptive quota check for legacy version uploads."
        },
        "status": {
          "type": "string",
          "description": "The deploy status of the version. For a successful deploy, call [`CreateVersion`](sites.versions/create) to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling [`DeleteVersion`](sites.versions/delete)."
        },
        "versionBytes": {
          "type": "string",
          "description": "The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`."
        },
        "versionId": {
          "type": "string",
          "description": "A unique id for the new version. This is was only specified for legacy version creations, and should be blank."
        }
      },
      "type": "object",
      "required": [
        "config",
        "createTime",
        "createUser",
        "deleteTime",
        "deleteUser",
        "fileCount",
        "finalizeTime",
        "finalizeUser",
        "labels",
        "name",
        "project",
        "siteId",
        "status",
        "versionBytes"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ServingConfig",
          "description": "The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](https://firebase.google.com/docs/cli/#the_firebasejson_file) file."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels used for extra metadata and/or filtering."
        },
        "name": {
          "type": "string",
          "description": "The fully-qualified resource name for the version, in the format: sites/ SITE_ID/versions/VERSION_ID This name is provided in the response body when you call [`CreateVersion`](sites.versions/create)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "siteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sizeBytes": {
          "type": "string",
          "description": "The self-reported size of the version. This value is used for a pre-emptive quota check for legacy version uploads."
        },
        "versionId": {
          "type": "string",
          "description": "A unique id for the new version. This is was only specified for legacy version creations, and should be blank."
        }
      },
      "requiredInputs": [
        "siteId"
      ]
    },
    "google-native:firebaseml/v1beta2:Model": {
      "description": "Creates a model in Firebase ML. The longrunning operation will eventually return a Model",
      "properties": {
        "activeOperations": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firebaseml%2Fv1beta2:OperationResponse"
          },
          "description": "Lists operation ids associated with this model whose status is NOT done."
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp when this model was created in Firebase ML."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the model to create. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores(_) and ASCII digits 0-9. It must start with a letter."
        },
        "etag": {
          "type": "string",
          "description": "See RFC7232 https://tools.ietf.org/html/rfc7232#section-2.3"
        },
        "modelHash": {
          "type": "string",
          "description": "The model_hash will change if a new file is available for download."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Model. Model names have the form `projects/{project_id}/models/{model_id}` The name is ignored when creating a model."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:firebaseml%2Fv1beta2:ModelStateResponse",
          "description": "State common to all model types. Includes publishing and validation information."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User defined tags which can be used to group/filter models during listing"
        },
        "tfliteModel": {
          "$ref": "#/types/google-native:firebaseml%2Fv1beta2:TfLiteModelResponse",
          "description": "A TFLite Model"
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this model was updated in Firebase ML."
        }
      },
      "type": "object",
      "required": [
        "activeOperations",
        "createTime",
        "displayName",
        "etag",
        "modelHash",
        "name",
        "project",
        "state",
        "tags",
        "tfliteModel",
        "updateTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The name of the model to create. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores(_) and ASCII digits 0-9. It must start with a letter."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Model. Model names have the form `projects/{project_id}/models/{model_id}` The name is ignored when creating a model."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:firebaseml%2Fv1beta2:ModelState",
          "description": "State common to all model types. Includes publishing and validation information."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User defined tags which can be used to group/filter models during listing"
        },
        "tfliteModel": {
          "$ref": "#/types/google-native:firebaseml%2Fv1beta2:TfLiteModel",
          "description": "A TFLite Model"
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:firebaserules/v1:Release": {
      "description": "Create a `Release`. Release names should reflect the developer's deployment practices. For example, the release name may include the environment name, application name, application version, or any other name meaningful to the developer. Once a `Release` refers to a `Ruleset`, the rules can be enforced by Firebase Rules-enabled services. More than one `Release` may be 'live' concurrently. Consider the following three `Release` names for `projects/foo` and the `Ruleset` to which they refer. Release Name -> Ruleset Name * projects/foo/releases/prod -> projects/foo/rulesets/uuid123 * projects/foo/releases/prod/beta -> projects/foo/rulesets/uuid123 * projects/foo/releases/prod/v23 -> projects/foo/rulesets/uuid456 The relationships reflect a `Ruleset` rollout in progress. The `prod` and `prod/beta` releases refer to the same `Ruleset`. However, `prod/v23` refers to a new `Ruleset`. The `Ruleset` reference for a `Release` may be updated using the UpdateRelease method.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time the release was created."
        },
        "name": {
          "type": "string",
          "description": "Format: `projects/{project_id}/releases/{release_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rulesetName": {
          "type": "string",
          "description": "Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must exist for the `Release` to be created."
        },
        "updateTime": {
          "type": "string",
          "description": "Time the release was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "name",
        "project",
        "rulesetName",
        "updateTime"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "Format: `projects/{project_id}/releases/{release_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rulesetName": {
          "type": "string",
          "description": "Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must exist for the `Release` to be created."
        }
      },
      "requiredInputs": [
        "rulesetName"
      ]
    },
    "google-native:firebaserules/v1:Ruleset": {
      "description": "Create a `Ruleset` from `Source`. The `Ruleset` is given a unique generated name which is returned to the caller. `Source` containing syntactic or semantics errors will result in an error response indicating the first error encountered. For a detailed view of `Source` issues, use TestRuleset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time the `Ruleset` was created."
        },
        "metadata": {
          "$ref": "#/types/google-native:firebaserules%2Fv1:MetadataResponse",
          "description": "The metadata for this ruleset."
        },
        "name": {
          "type": "string",
          "description": "Name of the `Ruleset`. The ruleset_id is auto generated by the service. Format: `projects/{project_id}/rulesets/{ruleset_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "source": {
          "$ref": "#/types/google-native:firebaserules%2Fv1:SourceResponse",
          "description": "`Source` for the `Ruleset`."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "metadata",
        "name",
        "project",
        "source"
      ],
      "inputProperties": {
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "source": {
          "$ref": "#/types/google-native:firebaserules%2Fv1:Source",
          "description": "`Source` for the `Ruleset`."
        }
      },
      "requiredInputs": [
        "source"
      ]
    },
    "google-native:firestore/v1:BackupSchedule": {
      "description": "Creates a backup schedule on a database. At most two backup schedules can be configured on a database, one daily backup schedule with retention up to 7 days and one weekly backup schedule with retention up to 14 weeks.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp at which this backup schedule was created and effective since. No backups will be created for this schedule before this time."
        },
        "dailyRecurrence": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1DailyRecurrenceResponse",
          "description": "For a schedule that runs daily at a specified time."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The unique backup schedule identifier across all locations and databases for the given project. This will be auto-assigned. Format is `projects/{project}/databases/{database}/backupSchedules/{backup_schedule}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "retention": {
          "type": "string",
          "description": "At what relative time in the future, compared to its creation time, the backup should be deleted, e.g. keep backups for 7 days."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp at which this backup schedule was most recently updated. When a backup schedule is first created, this is the same as create_time."
        },
        "weeklyRecurrence": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1WeeklyRecurrenceResponse",
          "description": "For a schedule that runs weekly on a specific day and time."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dailyRecurrence",
        "databaseId",
        "name",
        "project",
        "retention",
        "updateTime",
        "weeklyRecurrence"
      ],
      "inputProperties": {
        "dailyRecurrence": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1DailyRecurrence",
          "description": "For a schedule that runs daily at a specified time."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "retention": {
          "type": "string",
          "description": "At what relative time in the future, compared to its creation time, the backup should be deleted, e.g. keep backups for 7 days."
        },
        "weeklyRecurrence": {
          "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1WeeklyRecurrence",
          "description": "For a schedule that runs weekly on a specific day and time."
        }
      },
      "requiredInputs": [
        "databaseId"
      ]
    },
    "google-native:firestore/v1:Database": {
      "description": "Create a database.",
      "properties": {
        "appEngineIntegrationMode": {
          "type": "string",
          "description": "The App Engine integration mode to use for this database."
        },
        "concurrencyMode": {
          "type": "string",
          "description": "The concurrency control mode to use for this database."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp at which this database was created. Databases created before 2016 do not populate create_time."
        },
        "databaseId": {
          "type": "string",
          "description": "Required. The ID to use for the database, which will become the final component of the database's resource name. This value should be 4-63 characters. Valid characters are /a-z-/ with first character a letter and the last a letter or a number. Must not be UUID-like /[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}/. \"(default)\" database id is also valid.",
          "replaceOnChanges": true
        },
        "deleteProtectionState": {
          "type": "string",
          "description": "State of delete protection for the database."
        },
        "earliestVersionTime": {
          "type": "string",
          "description": "The earliest timestamp at which older versions of the data can be read from the database. See [version_retention_period] above; this field is populated with `now - version_retention_period`. This value is continuously updated, and becomes stale the moment it is queried. If you are using this value to recover data, make sure to account for the time from the moment when the value is queried to the moment when you initiate the recovery."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "keyPrefix": {
          "type": "string",
          "description": "The key_prefix for this database. This key_prefix is used, in combination with the project id (\"~\") to construct the application id that is returned from the Cloud Datastore APIs in Google App Engine first generation runtimes. This value may be empty in which case the appid to use for URL-encoded keys is the project_id (eg: foo instead of v~foo)."
        },
        "location": {
          "type": "string",
          "description": "The location of the database. Available locations are listed at https://cloud.google.com/firestore/docs/locations."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Database. Format: `projects/{project}/databases/{database}`"
        },
        "pointInTimeRecoveryEnablement": {
          "type": "string",
          "description": "Whether to enable the PITR feature on this database."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The type of the database. See https://cloud.google.com/datastore/docs/firestore-or-datastore for information about how to choose."
        },
        "uid": {
          "type": "string",
          "description": "The system-generated UUID4 for this Database."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp at which this database was most recently updated. Note this only includes updates to the database resource and not data contained by the database."
        },
        "versionRetentionPeriod": {
          "type": "string",
          "description": "The period during which past versions of data are retained in the database. Any read or query can specify a `read_time` within this window, and will read the state of the database at that time. If the PITR feature is enabled, the retention period is 7 days. Otherwise, the retention period is 1 hour."
        }
      },
      "type": "object",
      "required": [
        "appEngineIntegrationMode",
        "concurrencyMode",
        "createTime",
        "databaseId",
        "deleteProtectionState",
        "earliestVersionTime",
        "etag",
        "keyPrefix",
        "location",
        "name",
        "pointInTimeRecoveryEnablement",
        "project",
        "type",
        "uid",
        "updateTime",
        "versionRetentionPeriod"
      ],
      "inputProperties": {
        "appEngineIntegrationMode": {
          "$ref": "#/types/google-native:firestore%2Fv1:DatabaseAppEngineIntegrationMode",
          "description": "The App Engine integration mode to use for this database."
        },
        "concurrencyMode": {
          "$ref": "#/types/google-native:firestore%2Fv1:DatabaseConcurrencyMode",
          "description": "The concurrency control mode to use for this database."
        },
        "databaseId": {
          "type": "string",
          "description": "Required. The ID to use for the database, which will become the final component of the database's resource name. This value should be 4-63 characters. Valid characters are /a-z-/ with first character a letter and the last a letter or a number. Must not be UUID-like /[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}/. \"(default)\" database id is also valid.",
          "replaceOnChanges": true
        },
        "deleteProtectionState": {
          "$ref": "#/types/google-native:firestore%2Fv1:DatabaseDeleteProtectionState",
          "description": "State of delete protection for the database."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "location": {
          "type": "string",
          "description": "The location of the database. Available locations are listed at https://cloud.google.com/firestore/docs/locations."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Database. Format: `projects/{project}/databases/{database}`"
        },
        "pointInTimeRecoveryEnablement": {
          "$ref": "#/types/google-native:firestore%2Fv1:DatabasePointInTimeRecoveryEnablement",
          "description": "Whether to enable the PITR feature on this database."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:firestore%2Fv1:DatabaseType",
          "description": "The type of the database. See https://cloud.google.com/datastore/docs/firestore-or-datastore for information about how to choose."
        }
      },
      "requiredInputs": [
        "databaseId"
      ]
    },
    "google-native:firestore/v1:Index": {
      "description": "Creates a composite index. This returns a google.longrunning.Operation which may be used to track the status of the creation. The metadata for the operation will be the type IndexOperationMetadata.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiScope": {
          "type": "string",
          "description": "The API scope supported by this index."
        },
        "collectionGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1IndexFieldResponse"
          },
          "description": "The fields supported by this index. For composite indexes, this requires a minimum of 2 and a maximum of 100 fields. The last field entry is always for the field path `__name__`. If, on creation, `__name__` was not specified as the last field, it will be added automatically with the same direction as that of the last field defined. If the final field in a composite index is not directional, the `__name__` will be ordered ASCENDING (unless explicitly specified). For single field indexes, this will always be exactly one entry with a field path equal to the field path of the associated field."
        },
        "name": {
          "type": "string",
          "description": "A server defined name for this index. The form of this name for composite indexes will be: `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{composite_index_id}` For single field indexes, this field will be empty."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryScope": {
          "type": "string",
          "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection id. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection id as this index."
        },
        "state": {
          "type": "string",
          "description": "The serving state of the index."
        }
      },
      "type": "object",
      "required": [
        "apiScope",
        "collectionGroupId",
        "databaseId",
        "fields",
        "name",
        "project",
        "queryScope",
        "state"
      ],
      "inputProperties": {
        "apiScope": {
          "$ref": "#/types/google-native:firestore%2Fv1:IndexApiScope",
          "description": "The API scope supported by this index."
        },
        "collectionGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1IndexField"
          },
          "description": "The fields supported by this index. For composite indexes, this requires a minimum of 2 and a maximum of 100 fields. The last field entry is always for the field path `__name__`. If, on creation, `__name__` was not specified as the last field, it will be added automatically with the same direction as that of the last field defined. If the final field in a composite index is not directional, the `__name__` will be ordered ASCENDING (unless explicitly specified). For single field indexes, this will always be exactly one entry with a field path equal to the field path of the associated field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryScope": {
          "$ref": "#/types/google-native:firestore%2Fv1:IndexQueryScope",
          "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection id. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection id as this index."
        }
      },
      "requiredInputs": [
        "collectionGroupId",
        "databaseId"
      ]
    },
    "google-native:firestore/v1beta1:Index": {
      "description": "Creates the specified index. A newly created index's initial state is `CREATING`. On completion of the returned google.longrunning.Operation, the state will be `READY`. If the index already exists, the call will return an `ALREADY_EXISTS` status. During creation, the process could result in an error, in which case the index will move to the `ERROR` state. The process can be recovered by fixing the data that caused the error, removing the index with delete, then re-creating the index with create. Indexes with a single field cannot be created.",
      "properties": {
        "collectionId": {
          "type": "string",
          "description": "The collection ID to which this index applies. Required."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firestore%2Fv1beta1:GoogleFirestoreAdminV1beta1IndexFieldResponse"
          },
          "description": "The fields to index."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the index. Output only."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the index. Output only."
        }
      },
      "type": "object",
      "required": [
        "collectionId",
        "databaseId",
        "fields",
        "name",
        "project",
        "state"
      ],
      "inputProperties": {
        "collectionId": {
          "type": "string",
          "description": "The collection ID to which this index applies. Required."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firestore%2Fv1beta1:GoogleFirestoreAdminV1beta1IndexField"
          },
          "description": "The fields to index."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the index. Output only."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:firestore%2Fv1beta1:IndexState",
          "description": "The state of the index. Output only."
        }
      },
      "requiredInputs": [
        "databaseId"
      ]
    },
    "google-native:firestore/v1beta2:Index": {
      "description": "Creates a composite index. This returns a google.longrunning.Operation which may be used to track the status of the creation. The metadata for the operation will be the type IndexOperationMetadata.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "collectionGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firestore%2Fv1beta2:GoogleFirestoreAdminV1beta2IndexFieldResponse"
          },
          "description": "The fields supported by this index. For composite indexes, this is always 2 or more fields. The last field entry is always for the field path `__name__`. If, on creation, `__name__` was not specified as the last field, it will be added automatically with the same direction as that of the last field defined. If the final field in a composite index is not directional, the `__name__` will be ordered ASCENDING (unless explicitly specified). For single field indexes, this will always be exactly one entry with a field path equal to the field path of the associated field."
        },
        "name": {
          "type": "string",
          "description": "A server defined name for this index. The form of this name for composite indexes will be: `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{composite_index_id}` For single field indexes, this field will be empty."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryScope": {
          "type": "string",
          "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection id. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection id as this index."
        },
        "state": {
          "type": "string",
          "description": "The serving state of the index."
        }
      },
      "type": "object",
      "required": [
        "collectionGroupId",
        "databaseId",
        "fields",
        "name",
        "project",
        "queryScope",
        "state"
      ],
      "inputProperties": {
        "collectionGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:firestore%2Fv1beta2:GoogleFirestoreAdminV1beta2IndexField"
          },
          "description": "The fields supported by this index. For composite indexes, this is always 2 or more fields. The last field entry is always for the field path `__name__`. If, on creation, `__name__` was not specified as the last field, it will be added automatically with the same direction as that of the last field defined. If the final field in a composite index is not directional, the `__name__` will be ordered ASCENDING (unless explicitly specified). For single field indexes, this will always be exactly one entry with a field path equal to the field path of the associated field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queryScope": {
          "$ref": "#/types/google-native:firestore%2Fv1beta2:IndexQueryScope",
          "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection id. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection id as this index."
        }
      },
      "requiredInputs": [
        "collectionGroupId",
        "databaseId"
      ]
    },
    "google-native:gameservices/v1:GameServerDeploymentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gameservices/v1:GameServerDeploymentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gameservices/v1:GameServerDeploymentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gameServerDeploymentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:RuleResponse"
          },
          "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "gameServerDeploymentId",
        "location",
        "project",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gameServerDeploymentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1:Rule"
          },
          "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied."
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "gameServerDeploymentId"
      ]
    },
    "google-native:gameservices/v1beta:GameServerDeploymentIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gameservices/v1beta:GameServerDeploymentIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gameservices/v1beta:GameServerDeploymentIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gameServerDeploymentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:RuleResponse"
          },
          "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied."
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "gameServerDeploymentId",
        "location",
        "project",
        "rules",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gameServerDeploymentId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gameservices%2Fv1beta:Rule"
          },
          "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied."
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "gameServerDeploymentId"
      ]
    },
    "google-native:genomics/v1alpha2:Pipeline": {
      "description": "Creates a pipeline that can be run later. Create takes a Pipeline that has all fields other than `pipelineId` populated, and then returns the same pipeline with `pipelineId` populated. This id can be used to run the pipeline. Caller must have WRITE permission to the project.",
      "properties": {
        "description": {
          "type": "string",
          "description": "User-specified description."
        },
        "docker": {
          "$ref": "#/types/google-native:genomics%2Fv1alpha2:DockerExecutorResponse",
          "description": "Specifies the docker run information."
        },
        "inputParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineParameterResponse"
          },
          "description": "Input parameters of the pipeline."
        },
        "name": {
          "type": "string",
          "description": "A user specified pipeline name that does not have to be unique. This name can be used for filtering Pipelines in ListPipelines."
        },
        "outputParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineParameterResponse"
          },
          "description": "Output parameters of the pipeline."
        },
        "pipelineId": {
          "type": "string",
          "description": "Unique pipeline id that is generated by the service when CreatePipeline is called. Cannot be specified in the Pipeline used in the CreatePipelineRequest, and will be populated in the response to CreatePipeline and all subsequent Get and List calls. Indicates that the service has registered this pipeline."
        },
        "project": {
          "type": "string",
          "description": "The project in which to create the pipeline. The caller must have WRITE access."
        },
        "resources": {
          "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineResourcesResponse",
          "description": "Specifies resource requirements for the pipeline run. Required fields: * minimumCpuCores * minimumRamGb"
        }
      },
      "type": "object",
      "required": [
        "description",
        "docker",
        "inputParameters",
        "name",
        "outputParameters",
        "pipelineId",
        "project",
        "resources"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-specified description."
        },
        "docker": {
          "$ref": "#/types/google-native:genomics%2Fv1alpha2:DockerExecutor",
          "description": "Specifies the docker run information."
        },
        "inputParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineParameter"
          },
          "description": "Input parameters of the pipeline."
        },
        "name": {
          "type": "string",
          "description": "A user specified pipeline name that does not have to be unique. This name can be used for filtering Pipelines in ListPipelines."
        },
        "outputParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineParameter"
          },
          "description": "Output parameters of the pipeline."
        },
        "pipelineId": {
          "type": "string",
          "description": "Unique pipeline id that is generated by the service when CreatePipeline is called. Cannot be specified in the Pipeline used in the CreatePipelineRequest, and will be populated in the response to CreatePipeline and all subsequent Get and List calls. Indicates that the service has registered this pipeline."
        },
        "project": {
          "type": "string",
          "description": "The project in which to create the pipeline. The caller must have WRITE access."
        },
        "resources": {
          "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineResources",
          "description": "Specifies resource requirements for the pipeline run. Required fields: * minimumCpuCores * minimumRamGb"
        }
      },
      "requiredInputs": [
        "resources"
      ]
    },
    "google-native:gkebackup/v1:Backup": {
      "description": "Creates a Backup for the given BackupPlan.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "allNamespaces": {
          "type": "boolean",
          "description": "If True, all namespaces were included in the Backup."
        },
        "backupId": {
          "type": "string",
          "description": "Optional. The client-provided short name for the Backup resource. This name must: - be between 1 and 63 characters long (inclusive) - consist of only lower-case ASCII letters, numbers, and dashes - start with a lower-case letter - end with a lower-case letter or number - be unique within the set of Backups in this BackupPlan"
        },
        "backupPlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "clusterMetadata": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:ClusterMetadataResponse",
          "description": "Information about the GKE cluster from which this Backup was created."
        },
        "completeTime": {
          "type": "string",
          "description": "Completion time of the Backup"
        },
        "configBackupSizeBytes": {
          "type": "string",
          "description": "The size of the config backup in bytes."
        },
        "containsSecrets": {
          "type": "boolean",
          "description": "Whether or not the Backup contains Kubernetes Secrets. Controlled by the parent BackupPlan's include_secrets value."
        },
        "containsVolumeData": {
          "type": "boolean",
          "description": "Whether or not the Backup contains volume data. Controlled by the parent BackupPlan's include_volume_data value."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when this Backup resource was created."
        },
        "deleteLockDays": {
          "type": "integer",
          "description": "Optional. Minimum age for this Backup (in days). If this field is set to a non-zero value, the Backup will be \"locked\" against deletion (either manual or automatic deletion) for the number of days provided (measured from the creation time of the Backup). MUST be an integer value between 0-90 (inclusive). Defaults to parent BackupPlan's backup_delete_lock_days setting and may only be increased (either at creation time or in a subsequent update)."
        },
        "deleteLockExpireTime": {
          "type": "string",
          "description": "The time at which an existing delete lock will expire for this backup (calculated from create_time + delete_lock_days)."
        },
        "description": {
          "type": "string",
          "description": "Optional. User specified descriptive string for this Backup."
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:EncryptionKeyResponse",
          "description": "The customer managed encryption key that was used to encrypt the Backup's artifacts. Inherited from the parent BackupPlan's encryption_key value."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a backup from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform backup updates in order to avoid race conditions: An `etag` is returned in the response to `GetBackup`, and systems are expected to put that etag in the request to `UpdateBackup` or `DeleteBackup` to ensure that their change will be applied to the same version of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A set of custom labels supplied by user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "manual": {
          "type": "boolean",
          "description": "This flag indicates whether this Backup resource was created manually by a user or via a schedule in the BackupPlan. A value of True means that the Backup was created manually."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified name of the Backup. `projects/*/locations/*/backupPlans/*/backups/*`"
        },
        "podCount": {
          "type": "integer",
          "description": "The total number of Kubernetes Pods contained in the Backup."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceCount": {
          "type": "integer",
          "description": "The total number of Kubernetes resources included in the Backup."
        },
        "retainDays": {
          "type": "integer",
          "description": "Optional. The age (in days) after which this Backup will be automatically deleted. Must be an integer value >= 0: - If 0, no automatic deletion will occur for this Backup. - If not 0, this must be >= delete_lock_days and <= 365. Once a Backup is created, this value may only be increased. Defaults to the parent BackupPlan's backup_retain_days value."
        },
        "retainExpireTime": {
          "type": "string",
          "description": "The time at which this Backup will be automatically deleted (calculated from create_time + retain_days)."
        },
        "selectedApplications": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacedNamesResponse",
          "description": "If set, the list of ProtectedApplications whose resources were included in the Backup."
        },
        "selectedNamespaces": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacesResponse",
          "description": "If set, the list of namespaces that were included in the Backup."
        },
        "sizeBytes": {
          "type": "string",
          "description": "The total size of the Backup in bytes = config backup size + sum(volume backup sizes)"
        },
        "state": {
          "type": "string",
          "description": "Current state of the Backup"
        },
        "stateReason": {
          "type": "string",
          "description": "Human-readable description of why the backup is in the current `state`."
        },
        "uid": {
          "type": "string",
          "description": "Server generated global unique identifier of [UUID4](https://en.wikipedia.org/wiki/Universally_unique_identifier)"
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when this Backup resource was last updated."
        },
        "volumeCount": {
          "type": "integer",
          "description": "The total number of volume backups contained in the Backup."
        }
      },
      "type": "object",
      "required": [
        "allNamespaces",
        "backupPlanId",
        "clusterMetadata",
        "completeTime",
        "configBackupSizeBytes",
        "containsSecrets",
        "containsVolumeData",
        "createTime",
        "deleteLockDays",
        "deleteLockExpireTime",
        "description",
        "encryptionKey",
        "etag",
        "labels",
        "location",
        "manual",
        "name",
        "podCount",
        "project",
        "resourceCount",
        "retainDays",
        "retainExpireTime",
        "selectedApplications",
        "selectedNamespaces",
        "sizeBytes",
        "state",
        "stateReason",
        "uid",
        "updateTime",
        "volumeCount"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Optional. The client-provided short name for the Backup resource. This name must: - be between 1 and 63 characters long (inclusive) - consist of only lower-case ASCII letters, numbers, and dashes - start with a lower-case letter - end with a lower-case letter or number - be unique within the set of Backups in this BackupPlan"
        },
        "backupPlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "deleteLockDays": {
          "type": "integer",
          "description": "Optional. Minimum age for this Backup (in days). If this field is set to a non-zero value, the Backup will be \"locked\" against deletion (either manual or automatic deletion) for the number of days provided (measured from the creation time of the Backup). MUST be an integer value between 0-90 (inclusive). Defaults to parent BackupPlan's backup_delete_lock_days setting and may only be increased (either at creation time or in a subsequent update)."
        },
        "description": {
          "type": "string",
          "description": "Optional. User specified descriptive string for this Backup."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A set of custom labels supplied by user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "retainDays": {
          "type": "integer",
          "description": "Optional. The age (in days) after which this Backup will be automatically deleted. Must be an integer value >= 0: - If 0, no automatic deletion will occur for this Backup. - If not 0, this must be >= delete_lock_days and <= 365. Once a Backup is created, this value may only be increased. Defaults to the parent BackupPlan's backup_retain_days value."
        }
      },
      "requiredInputs": [
        "backupPlanId"
      ]
    },
    "google-native:gkebackup/v1:BackupPlan": {
      "description": "Creates a new BackupPlan in a given location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupConfig": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:BackupConfigResponse",
          "description": "Optional. Defines the configuration of Backups created via this BackupPlan."
        },
        "backupPlanId": {
          "type": "string",
          "description": "Required. The client-provided short name for the BackupPlan resource. This name must: - be between 1 and 63 characters long (inclusive) - consist of only lower-case ASCII letters, numbers, and dashes - start with a lower-case letter - end with a lower-case letter or number - be unique within the set of BackupPlans in this location",
          "replaceOnChanges": true
        },
        "backupSchedule": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:ScheduleResponse",
          "description": "Optional. Defines a schedule for automatic Backup creation via this BackupPlan."
        },
        "cluster": {
          "type": "string",
          "description": "Immutable. The source cluster from which Backups will be created via this BackupPlan. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*`"
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when this BackupPlan resource was created."
        },
        "deactivated": {
          "type": "boolean",
          "description": "Optional. This flag indicates whether this BackupPlan has been deactivated. Setting this field to True locks the BackupPlan such that no further updates will be allowed (except deletes), including the deactivated field itself. It also prevents any new Backups from being created via this BackupPlan (including scheduled Backups). Default: False"
        },
        "description": {
          "type": "string",
          "description": "Optional. User specified descriptive string for this BackupPlan."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a backup plan from overwriting each other. It is strongly suggested that systems make use of the 'etag' in the read-modify-write cycle to perform BackupPlan updates in order to avoid race conditions: An `etag` is returned in the response to `GetBackupPlan`, and systems are expected to put that etag in the request to `UpdateBackupPlan` or `DeleteBackupPlan` to ensure that their change will be applied to the same version of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A set of custom labels supplied by user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full name of the BackupPlan resource. Format: `projects/*/locations/*/backupPlans/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protectedPodCount": {
          "type": "integer",
          "description": "The number of Kubernetes Pods backed up in the last successful Backup created via this BackupPlan."
        },
        "retentionPolicy": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:RetentionPolicyResponse",
          "description": "Optional. RetentionPolicy governs lifecycle of Backups created under this plan."
        },
        "state": {
          "type": "string",
          "description": "State of the BackupPlan. This State field reflects the various stages a BackupPlan can be in during the Create operation. It will be set to \"DEACTIVATED\" if the BackupPlan is deactivated on an Update"
        },
        "stateReason": {
          "type": "string",
          "description": "Human-readable description of why BackupPlan is in the current `state`"
        },
        "uid": {
          "type": "string",
          "description": "Server generated global unique identifier of [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when this BackupPlan resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "backupConfig",
        "backupPlanId",
        "backupSchedule",
        "cluster",
        "createTime",
        "deactivated",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "protectedPodCount",
        "retentionPolicy",
        "state",
        "stateReason",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "backupConfig": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:BackupConfig",
          "description": "Optional. Defines the configuration of Backups created via this BackupPlan."
        },
        "backupPlanId": {
          "type": "string",
          "description": "Required. The client-provided short name for the BackupPlan resource. This name must: - be between 1 and 63 characters long (inclusive) - consist of only lower-case ASCII letters, numbers, and dashes - start with a lower-case letter - end with a lower-case letter or number - be unique within the set of BackupPlans in this location",
          "replaceOnChanges": true
        },
        "backupSchedule": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:Schedule",
          "description": "Optional. Defines a schedule for automatic Backup creation via this BackupPlan."
        },
        "cluster": {
          "type": "string",
          "description": "Immutable. The source cluster from which Backups will be created via this BackupPlan. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*`"
        },
        "deactivated": {
          "type": "boolean",
          "description": "Optional. This flag indicates whether this BackupPlan has been deactivated. Setting this field to True locks the BackupPlan such that no further updates will be allowed (except deletes), including the deactivated field itself. It also prevents any new Backups from being created via this BackupPlan (including scheduled Backups). Default: False"
        },
        "description": {
          "type": "string",
          "description": "Optional. User specified descriptive string for this BackupPlan."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A set of custom labels supplied by user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "retentionPolicy": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:RetentionPolicy",
          "description": "Optional. RetentionPolicy governs lifecycle of Backups created under this plan."
        }
      },
      "requiredInputs": [
        "backupPlanId",
        "cluster"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "backupPlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "backupId",
        "backupPlanId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "backupPlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "backupPlanId"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanBackupVolumeBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanBackupVolumeBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanBackupVolumeBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "backupPlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "volumeBackupId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "backupId",
        "backupPlanId",
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "volumeBackupId"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "backupPlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "volumeBackupId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backupId",
        "backupPlanId",
        "volumeBackupId"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:BackupPlanIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupPlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "backupPlanId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupPlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupPlanId"
      ]
    },
    "google-native:gkebackup/v1:Restore": {
      "description": "Creates a new Restore for the given RestorePlan.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backup": {
          "type": "string",
          "description": "Immutable. A reference to the Backup used as the source from which this Restore will restore. Note that this Backup must be a sub-resource of the RestorePlan's backup_plan. Format: `projects/*/locations/*/backupPlans/*/backups/*`."
        },
        "cluster": {
          "type": "string",
          "description": "The target cluster into which this Restore will restore data. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*` Inherited from parent RestorePlan's cluster value."
        },
        "completeTime": {
          "type": "string",
          "description": "Timestamp of when the restore operation completed."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when this Restore resource was created."
        },
        "description": {
          "type": "string",
          "description": "User specified descriptive string for this Restore."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a restore from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform restore updates in order to avoid race conditions: An `etag` is returned in the response to `GetRestore`, and systems are expected to put that etag in the request to `UpdateRestore` or `DeleteRestore` to ensure that their change will be applied to the same version of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A set of custom labels supplied by user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full name of the Restore resource. Format: `projects/*/locations/*/restorePlans/*/restores/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourcesExcludedCount": {
          "type": "integer",
          "description": "Number of resources excluded during the restore execution."
        },
        "resourcesFailedCount": {
          "type": "integer",
          "description": "Number of resources that failed to be restored during the restore execution."
        },
        "resourcesRestoredCount": {
          "type": "integer",
          "description": "Number of resources restored during the restore execution."
        },
        "restoreConfig": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:RestoreConfigResponse",
          "description": "Configuration of the Restore. Inherited from parent RestorePlan's restore_config."
        },
        "restoreId": {
          "type": "string",
          "description": "Required. The client-provided short name for the Restore resource. This name must: - be between 1 and 63 characters long (inclusive) - consist of only lower-case ASCII letters, numbers, and dashes - start with a lower-case letter - end with a lower-case letter or number - be unique within the set of Restores in this RestorePlan.",
          "replaceOnChanges": true
        },
        "restorePlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the Restore."
        },
        "stateReason": {
          "type": "string",
          "description": "Human-readable description of why the Restore is in its current state."
        },
        "uid": {
          "type": "string",
          "description": "Server generated global unique identifier of [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when this Restore resource was last updated."
        },
        "volumesRestoredCount": {
          "type": "integer",
          "description": "Number of volumes restored during the restore execution."
        }
      },
      "type": "object",
      "required": [
        "backup",
        "cluster",
        "completeTime",
        "createTime",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "resourcesExcludedCount",
        "resourcesFailedCount",
        "resourcesRestoredCount",
        "restoreConfig",
        "restoreId",
        "restorePlanId",
        "state",
        "stateReason",
        "uid",
        "updateTime",
        "volumesRestoredCount"
      ],
      "inputProperties": {
        "backup": {
          "type": "string",
          "description": "Immutable. A reference to the Backup used as the source from which this Restore will restore. Note that this Backup must be a sub-resource of the RestorePlan's backup_plan. Format: `projects/*/locations/*/backupPlans/*/backups/*`."
        },
        "description": {
          "type": "string",
          "description": "User specified descriptive string for this Restore."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A set of custom labels supplied by user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restoreId": {
          "type": "string",
          "description": "Required. The client-provided short name for the Restore resource. This name must: - be between 1 and 63 characters long (inclusive) - consist of only lower-case ASCII letters, numbers, and dashes - start with a lower-case letter - end with a lower-case letter or number - be unique within the set of Restores in this RestorePlan.",
          "replaceOnChanges": true
        },
        "restorePlanId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backup",
        "restoreId",
        "restorePlanId"
      ]
    },
    "google-native:gkebackup/v1:RestorePlan": {
      "description": "Creates a new RestorePlan in a given location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupPlan": {
          "type": "string",
          "description": "Immutable. A reference to the BackupPlan from which Backups may be used as the source for Restores created via this RestorePlan. Format: `projects/*/locations/*/backupPlans/*`."
        },
        "cluster": {
          "type": "string",
          "description": "Immutable. The target cluster into which Restores created via this RestorePlan will restore data. NOTE: the cluster's region must be the same as the RestorePlan. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*`"
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when this RestorePlan resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. User specified descriptive string for this RestorePlan."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a restore from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform restore updates in order to avoid race conditions: An `etag` is returned in the response to `GetRestorePlan`, and systems are expected to put that etag in the request to `UpdateRestorePlan` or `DeleteRestorePlan` to ensure that their change will be applied to the same version of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A set of custom labels supplied by user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full name of the RestorePlan resource. Format: `projects/*/locations/*/restorePlans/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restoreConfig": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:RestoreConfigResponse",
          "description": "Configuration of Restores created via this RestorePlan."
        },
        "restorePlanId": {
          "type": "string",
          "description": "Required. The client-provided short name for the RestorePlan resource. This name must: - be between 1 and 63 characters long (inclusive) - consist of only lower-case ASCII letters, numbers, and dashes - start with a lower-case letter - end with a lower-case letter or number - be unique within the set of RestorePlans in this location",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the RestorePlan. This State field reflects the various stages a RestorePlan can be in during the Create operation."
        },
        "stateReason": {
          "type": "string",
          "description": "Human-readable description of why RestorePlan is in the current `state`"
        },
        "uid": {
          "type": "string",
          "description": "Server generated global unique identifier of [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when this RestorePlan resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "backupPlan",
        "cluster",
        "createTime",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "project",
        "restoreConfig",
        "restorePlanId",
        "state",
        "stateReason",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "backupPlan": {
          "type": "string",
          "description": "Immutable. A reference to the BackupPlan from which Backups may be used as the source for Restores created via this RestorePlan. Format: `projects/*/locations/*/backupPlans/*`."
        },
        "cluster": {
          "type": "string",
          "description": "Immutable. The target cluster into which Restores created via this RestorePlan will restore data. NOTE: the cluster's region must be the same as the RestorePlan. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*`"
        },
        "description": {
          "type": "string",
          "description": "Optional. User specified descriptive string for this RestorePlan."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A set of custom labels supplied by user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restoreConfig": {
          "$ref": "#/types/google-native:gkebackup%2Fv1:RestoreConfig",
          "description": "Configuration of Restores created via this RestorePlan."
        },
        "restorePlanId": {
          "type": "string",
          "description": "Required. The client-provided short name for the RestorePlan resource. This name must: - be between 1 and 63 characters long (inclusive) - consist of only lower-case ASCII letters, numbers, and dashes - start with a lower-case letter - end with a lower-case letter or number - be unique within the set of RestorePlans in this location",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backupPlan",
        "cluster",
        "restoreConfig",
        "restorePlanId"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restorePlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "restorePlanId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restorePlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "restorePlanId"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanRestoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanRestoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanRestoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restorePlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "restoreId",
        "restorePlanId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restorePlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "restoreId",
        "restorePlanId"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanRestoreVolumeRestoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanRestoreVolumeRestoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkebackup/v1:RestorePlanRestoreVolumeRestoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restorePlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "volumeRestoreId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "restoreId",
        "restorePlanId",
        "version",
        "volumeRestoreId"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restorePlanId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "volumeRestoreId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "restoreId",
        "restorePlanId",
        "volumeRestoreId"
      ]
    },
    "google-native:gkehub/v1:Binding": {
      "description": "Creates a MembershipBinding.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the membership binding was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the membership binding was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this MembershipBinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipBindingId": {
          "type": "string",
          "description": "Required. The ID to use for the MembershipBinding.",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MembershipBindingLifecycleStateResponse",
          "description": "State of the membership binding resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all membershipbinding resources. If a membershipbinding resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the membership binding was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "membershipBindingId",
        "membershipId",
        "name",
        "project",
        "scope",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this MembershipBinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipBindingId": {
          "type": "string",
          "description": "Required. The ID to use for the MembershipBinding.",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`."
        }
      },
      "requiredInputs": [
        "membershipBindingId",
        "membershipId"
      ]
    },
    "google-native:gkehub/v1:Feature": {
      "description": "Adds a new Feature.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the Feature resource was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Feature resource was deleted."
        },
        "featureId": {
          "type": "string",
          "description": "The ID of the feature to create."
        },
        "fleetDefaultMemberConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:CommonFleetDefaultMemberConfigSpecResponse",
          "description": "Optional. Feature configuration applicable to all memberships of the fleet."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this Feature."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "membershipStates": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature's project number."
        },
        "name": {
          "type": "string",
          "description": "The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceState": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FeatureResourceStateResponse",
          "description": "State of the Feature resource itself."
        },
        "scopeSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "scopeStates": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scope-specific Feature status. If this Feature does report any per-Scope status, this field may be unused. The keys indicate which Scope the state is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project."
        },
        "spec": {
          "$ref": "#/types/google-native:gkehub%2Fv1:CommonFeatureSpecResponse",
          "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:CommonFeatureStateResponse",
          "description": "The Hub-wide Feature state."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Feature resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "fleetDefaultMemberConfig",
        "labels",
        "location",
        "membershipSpecs",
        "membershipStates",
        "name",
        "project",
        "resourceState",
        "scopeSpecs",
        "scopeStates",
        "spec",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "featureId": {
          "type": "string",
          "description": "The ID of the feature to create."
        },
        "fleetDefaultMemberConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:CommonFleetDefaultMemberConfigSpec",
          "description": "Optional. Feature configuration applicable to all memberships of the fleet."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this Feature."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "scopeSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "spec": {
          "$ref": "#/types/google-native:gkehub%2Fv1:CommonFeatureSpec",
          "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
        }
      }
    },
    "google-native:gkehub/v1:FeatureIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1:FeatureIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1:FeatureIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featureId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "featureId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featureId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "featureId"
      ]
    },
    "google-native:gkehub/v1:Fleet": {
      "description": "Creates a fleet.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the Fleet was created."
        },
        "defaultClusterConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:DefaultClusterConfigResponse",
          "description": "Optional. The default cluster configurations to apply across the fleet."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Fleet was deleted."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Fleet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full, unique resource name of this fleet in the format of `projects/{project}/locations/{location}/fleets/{fleet}`. Each Google Cloud project can have at most one fleet resource, named \"default\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:FleetLifecycleStateResponse",
          "description": "State of the namespace resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Fleet resources. If a Fleet resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Fleet was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "defaultClusterConfig",
        "deleteTime",
        "displayName",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "defaultClusterConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:DefaultClusterConfig",
          "description": "Optional. The default cluster configurations to apply across the fleet."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Fleet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:gkehub/v1:Membership": {
      "description": "Creates a new Membership. **This is currently only supported for GKE clusters on Google Cloud**. To register other clusters, follow the instructions at https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1:AuthorityResponse",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "createTime": {
          "type": "string",
          "description": "When the Membership was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Membership was deleted."
        },
        "description": {
          "type": "string",
          "description": "Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*` This field is present for legacy purposes."
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MembershipEndpointResponse",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this membership."
        },
        "lastConnectionTime": {
          "type": "string",
          "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MonitoringConfigResponse",
          "description": "Optional. The monitoring config information for this membership."
        },
        "name": {
          "type": "string",
          "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MembershipStateResponse",
          "description": "State of the Membership resource."
        },
        "uniqueId": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Membership was last updated."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "createTime",
        "deleteTime",
        "description",
        "endpoint",
        "externalId",
        "labels",
        "lastConnectionTime",
        "location",
        "membershipId",
        "monitoringConfig",
        "name",
        "project",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1:Authority",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MembershipEndpoint",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this membership."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1:MonitoringConfig",
          "description": "Optional. The monitoring config information for this membership."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1:MembershipIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1:MembershipIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1:MembershipIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "membershipId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1:Namespace": {
      "description": "Creates a fleet namespace.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the namespace was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the namespace was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Namespace."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Scope associated with the namespace"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeNamespaceId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Namespace. `namespace_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:NamespaceLifecycleStateResponse",
          "description": "State of the namespace resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all namespace resources. If a namespace resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the namespace was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "name",
        "namespaceLabels",
        "project",
        "scope",
        "scopeId",
        "scopeNamespaceId",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Namespace."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Scope associated with the namespace"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeNamespaceId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Namespace. `namespace_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "scope",
        "scopeId",
        "scopeNamespaceId"
      ]
    },
    "google-native:gkehub/v1:Rbacrolebinding": {
      "description": "Creates a Scope RBACRoleBinding.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the rbacrolebinding was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the rbacrolebinding was deleted."
        },
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1:RoleResponse",
          "description": "Role to bind to the principal"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:RBACRoleBindingLifecycleStateResponse",
          "description": "State of the rbacrolebinding resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the rbacrolebinding was last updated."
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "group",
        "labels",
        "location",
        "name",
        "project",
        "rbacrolebindingId",
        "role",
        "scopeId",
        "state",
        "uid",
        "updateTime",
        "user"
      ],
      "inputProperties": {
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1:Role",
          "description": "Role to bind to the principal"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "requiredInputs": [
        "rbacrolebindingId",
        "role",
        "scopeId"
      ]
    },
    "google-native:gkehub/v1:Scope": {
      "description": "Creates a Scope.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the scope was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the scope was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Scope."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Scope. `scope_id` must be a ????",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1:ScopeLifecycleStateResponse",
          "description": "State of the scope resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all scope resources. If a scope resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the scope was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "name",
        "namespaceLabels",
        "project",
        "scopeId",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Scope."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Scope. `scope_id` must be a ????",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "scopeId"
      ]
    },
    "google-native:gkehub/v1:ScopeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1:ScopeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1:ScopeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "scopeId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "scopeId"
      ]
    },
    "google-native:gkehub/v1alpha2:Membership": {
      "description": "Creates a new Membership. **This is currently only supported for GKE clusters on Google Cloud**. To register other clusters, follow the instructions at https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:AuthorityResponse",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "createTime": {
          "type": "string",
          "description": "When the Membership was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Membership was deleted."
        },
        "description": {
          "type": "string",
          "description": "Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*` This field is present for legacy purposes."
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MembershipEndpointResponse",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. For GKE clusters, external_id is managed by the Hub API and updates will be ignored. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "infrastructureType": {
          "type": "string",
          "description": "Optional. The infrastructure type this Membership is running on."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this membership."
        },
        "lastConnectionTime": {
          "type": "string",
          "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MonitoringConfigResponse",
          "description": "Optional. The monitoring config information for this membership."
        },
        "name": {
          "type": "string",
          "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MembershipStateResponse",
          "description": "State of the Membership resource."
        },
        "uniqueId": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Membership was last updated."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "createTime",
        "deleteTime",
        "description",
        "endpoint",
        "externalId",
        "infrastructureType",
        "labels",
        "lastConnectionTime",
        "location",
        "membershipId",
        "monitoringConfig",
        "name",
        "project",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:Authority",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MembershipEndpoint",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. For GKE clusters, external_id is managed by the Hub API and updates will be ignored. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "infrastructureType": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MembershipInfrastructureType",
          "description": "Optional. The infrastructure type this Membership is running on."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this membership."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MonitoringConfig",
          "description": "Optional. The monitoring config information for this membership."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1alpha2:MembershipIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha2:MembershipIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha2:MembershipIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "membershipId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1alpha:Binding": {
      "description": "Creates a MembershipBinding.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the membership binding was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the membership binding was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this MembershipBinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipBindingId": {
          "type": "string",
          "description": "Required. The ID to use for the MembershipBinding.",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipBindingLifecycleStateResponse",
          "description": "State of the membership binding resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all membershipbinding resources. If a membershipbinding resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the membership binding was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "membershipBindingId",
        "membershipId",
        "name",
        "project",
        "scope",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this MembershipBinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipBindingId": {
          "type": "string",
          "description": "Required. The ID to use for the MembershipBinding.",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`."
        }
      },
      "requiredInputs": [
        "membershipBindingId",
        "membershipId"
      ]
    },
    "google-native:gkehub/v1alpha:Feature": {
      "description": "Adds a new Feature.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the Feature resource was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Feature resource was deleted."
        },
        "featureId": {
          "type": "string",
          "description": "The ID of the feature to create."
        },
        "fleetDefaultMemberConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:CommonFleetDefaultMemberConfigSpecResponse",
          "description": "Optional. Feature configuration applicable to all memberships of the fleet."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this Feature."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "membershipStates": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature's project number."
        },
        "name": {
          "type": "string",
          "description": "The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceState": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FeatureResourceStateResponse",
          "description": "State of the Feature resource itself."
        },
        "scopeSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "scopeStates": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scope-specific Feature status. If this Feature does report any per-Scope status, this field may be unused. The keys indicate which Scope the state is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project."
        },
        "spec": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:CommonFeatureSpecResponse",
          "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:CommonFeatureStateResponse",
          "description": "The Hub-wide Feature state."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Feature resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "fleetDefaultMemberConfig",
        "labels",
        "location",
        "membershipSpecs",
        "membershipStates",
        "name",
        "project",
        "resourceState",
        "scopeSpecs",
        "scopeStates",
        "spec",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "featureId": {
          "type": "string",
          "description": "The ID of the feature to create."
        },
        "fleetDefaultMemberConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:CommonFleetDefaultMemberConfigSpec",
          "description": "Optional. Feature configuration applicable to all memberships of the fleet."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this Feature."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "scopeSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "spec": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:CommonFeatureSpec",
          "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
        }
      }
    },
    "google-native:gkehub/v1alpha:FeatureIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha:FeatureIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha:FeatureIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featureId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "featureId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featureId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "featureId"
      ]
    },
    "google-native:gkehub/v1alpha:Fleet": {
      "description": "Creates a fleet.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the Fleet was created."
        },
        "defaultClusterConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:DefaultClusterConfigResponse",
          "description": "Optional. The default cluster configurations to apply across the fleet."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Fleet was deleted."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Fleet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full, unique resource name of this fleet in the format of `projects/{project}/locations/{location}/fleets/{fleet}`. Each Google Cloud project can have at most one fleet resource, named \"default\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetLifecycleStateResponse",
          "description": "State of the namespace resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Fleet resources. If a Fleet resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Fleet was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "defaultClusterConfig",
        "deleteTime",
        "displayName",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "defaultClusterConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:DefaultClusterConfig",
          "description": "Optional. The default cluster configurations to apply across the fleet."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Fleet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:gkehub/v1alpha:Membership": {
      "description": "Creates a new Membership. **This is currently only supported for GKE clusters on Google Cloud**. To register other clusters, follow the instructions at https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuthorityResponse",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "createTime": {
          "type": "string",
          "description": "When the Membership was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Membership was deleted."
        },
        "description": {
          "type": "string",
          "description": "Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*` This field is present for legacy purposes."
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipEndpointResponse",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this membership."
        },
        "lastConnectionTime": {
          "type": "string",
          "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MonitoringConfigResponse",
          "description": "Optional. The monitoring config information for this membership."
        },
        "name": {
          "type": "string",
          "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipStateResponse",
          "description": "State of the Membership resource."
        },
        "uniqueId": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Membership was last updated."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "createTime",
        "deleteTime",
        "description",
        "endpoint",
        "externalId",
        "labels",
        "lastConnectionTime",
        "location",
        "membershipId",
        "monitoringConfig",
        "name",
        "project",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:Authority",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipEndpoint",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this membership."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:MonitoringConfig",
          "description": "Optional. The monitoring config information for this membership."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1alpha:MembershipIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha:MembershipIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha:MembershipIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "membershipId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1alpha:MembershipRbacRoleBinding": {
      "description": "Creates a Membership RBACRoleBinding.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the rbacrolebinding was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the rbacrolebinding was deleted."
        },
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:RoleResponse",
          "description": "Role to bind to the principal"
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:RBACRoleBindingLifecycleStateResponse",
          "description": "State of the rbacrolebinding resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the rbacrolebinding was last updated."
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "group",
        "labels",
        "location",
        "membershipId",
        "name",
        "project",
        "rbacrolebindingId",
        "role",
        "state",
        "uid",
        "updateTime",
        "user"
      ],
      "inputProperties": {
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:Role",
          "description": "Role to bind to the principal"
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "requiredInputs": [
        "membershipId",
        "rbacrolebindingId",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha:Namespace": {
      "description": "Creates a fleet namespace.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the namespace was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the namespace was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Namespace."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Scope associated with the namespace"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeNamespaceId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Namespace. `namespace_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:NamespaceLifecycleStateResponse",
          "description": "State of the namespace resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all namespace resources. If a namespace resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the namespace was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "name",
        "namespaceLabels",
        "project",
        "scope",
        "scopeId",
        "scopeNamespaceId",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Namespace."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Scope associated with the namespace"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeNamespaceId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Namespace. `namespace_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "scope",
        "scopeId",
        "scopeNamespaceId"
      ]
    },
    "google-native:gkehub/v1alpha:Scope": {
      "description": "Creates a Scope.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the scope was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the scope was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Scope."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Scope. `scope_id` must be a ????",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:ScopeLifecycleStateResponse",
          "description": "State of the scope resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all scope resources. If a scope resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the scope was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "name",
        "namespaceLabels",
        "project",
        "scopeId",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Scope."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Scope. `scope_id` must be a ????",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "scopeId"
      ]
    },
    "google-native:gkehub/v1alpha:ScopeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha:ScopeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1alpha:ScopeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "scopeId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "scopeId"
      ]
    },
    "google-native:gkehub/v1alpha:ScopeRbacRoleBinding": {
      "description": "Creates a Scope RBACRoleBinding.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the rbacrolebinding was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the rbacrolebinding was deleted."
        },
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:RoleResponse",
          "description": "Role to bind to the principal"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:RBACRoleBindingLifecycleStateResponse",
          "description": "State of the rbacrolebinding resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the rbacrolebinding was last updated."
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "group",
        "labels",
        "location",
        "name",
        "project",
        "rbacrolebindingId",
        "role",
        "scopeId",
        "state",
        "uid",
        "updateTime",
        "user"
      ],
      "inputProperties": {
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1alpha:Role",
          "description": "Role to bind to the principal"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "requiredInputs": [
        "rbacrolebindingId",
        "role",
        "scopeId"
      ]
    },
    "google-native:gkehub/v1beta1:Membership": {
      "description": "Creates a new Membership. **This is currently only supported for GKE clusters on Google Cloud**. To register other clusters, follow the instructions at https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:AuthorityResponse",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "createTime": {
          "type": "string",
          "description": "When the Membership was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Membership was deleted."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*`"
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:MembershipEndpointResponse",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. For GKE clusters, external_id is managed by the Hub API and updates will be ignored. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "infrastructureType": {
          "type": "string",
          "description": "Optional. The infrastructure type this Membership is running on."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. GCP labels for this membership."
        },
        "lastConnectionTime": {
          "type": "string",
          "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:MonitoringConfigResponse",
          "description": "Optional. The monitoring config information for this membership."
        },
        "name": {
          "type": "string",
          "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:MembershipStateResponse",
          "description": "State of the Membership resource."
        },
        "uniqueId": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Membership was last updated."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "createTime",
        "deleteTime",
        "description",
        "endpoint",
        "externalId",
        "infrastructureType",
        "labels",
        "lastConnectionTime",
        "location",
        "membershipId",
        "monitoringConfig",
        "name",
        "project",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:Authority",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*`"
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:MembershipEndpoint",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. For GKE clusters, external_id is managed by the Hub API and updates will be ignored. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "infrastructureType": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:MembershipInfrastructureType",
          "description": "Optional. The infrastructure type this Membership is running on."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. GCP labels for this membership."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta1:MonitoringConfig",
          "description": "Optional. The monitoring config information for this membership."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1beta1:MembershipIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1beta1:MembershipIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1beta1:MembershipIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "membershipId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1beta:Binding": {
      "description": "Creates a MembershipBinding.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the membership binding was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the membership binding was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this MembershipBinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipBindingId": {
          "type": "string",
          "description": "Required. The ID to use for the MembershipBinding.",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MembershipBindingLifecycleStateResponse",
          "description": "State of the membership binding resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all membershipbinding resources. If a membershipbinding resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the membership binding was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "membershipBindingId",
        "membershipId",
        "name",
        "project",
        "scope",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this MembershipBinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipBindingId": {
          "type": "string",
          "description": "Required. The ID to use for the MembershipBinding.",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`."
        }
      },
      "requiredInputs": [
        "membershipBindingId",
        "membershipId"
      ]
    },
    "google-native:gkehub/v1beta:Feature": {
      "description": "Adds a new Feature.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the Feature resource was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Feature resource was deleted."
        },
        "featureId": {
          "type": "string",
          "description": "The ID of the feature to create."
        },
        "fleetDefaultMemberConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:CommonFleetDefaultMemberConfigSpecResponse",
          "description": "Optional. Feature configuration applicable to all memberships of the fleet."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this Feature."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "membershipStates": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature's project number."
        },
        "name": {
          "type": "string",
          "description": "The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceState": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FeatureResourceStateResponse",
          "description": "State of the Feature resource itself."
        },
        "scopeSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "scopeStates": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Scope-specific Feature status. If this Feature does report any per-Scope status, this field may be unused. The keys indicate which Scope the state is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project."
        },
        "spec": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:CommonFeatureSpecResponse",
          "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:CommonFeatureStateResponse",
          "description": "The Hub-wide Feature state."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Feature resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "fleetDefaultMemberConfig",
        "labels",
        "location",
        "membershipSpecs",
        "membershipStates",
        "name",
        "project",
        "resourceState",
        "scopeSpecs",
        "scopeStates",
        "spec",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "featureId": {
          "type": "string",
          "description": "The ID of the feature to create."
        },
        "fleetDefaultMemberConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:CommonFleetDefaultMemberConfigSpec",
          "description": "Optional. Feature configuration applicable to all memberships of the fleet."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels for this Feature."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "scopeSpecs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature."
        },
        "spec": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:CommonFeatureSpec",
          "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
        }
      }
    },
    "google-native:gkehub/v1beta:FeatureIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1beta:FeatureIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1beta:FeatureIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featureId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "featureId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "featureId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "featureId"
      ]
    },
    "google-native:gkehub/v1beta:Fleet": {
      "description": "Creates a fleet.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the Fleet was created."
        },
        "defaultClusterConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:DefaultClusterConfigResponse",
          "description": "Optional. The default cluster configurations to apply across the fleet."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Fleet was deleted."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Fleet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full, unique resource name of this fleet in the format of `projects/{project}/locations/{location}/fleets/{fleet}`. Each Google Cloud project can have at most one fleet resource, named \"default\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetLifecycleStateResponse",
          "description": "State of the namespace resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Fleet resources. If a Fleet resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Fleet was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "defaultClusterConfig",
        "deleteTime",
        "displayName",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "defaultClusterConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:DefaultClusterConfig",
          "description": "Optional. The default cluster configurations to apply across the fleet."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Fleet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:gkehub/v1beta:Membership": {
      "description": "Creates a new Membership. **This is currently only supported for GKE clusters on Google Cloud**. To register other clusters, follow the instructions at https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:AuthorityResponse",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "createTime": {
          "type": "string",
          "description": "When the Membership was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the Membership was deleted."
        },
        "description": {
          "type": "string",
          "description": "Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*` This field is present for legacy purposes."
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MembershipEndpointResponse",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this membership."
        },
        "lastConnectionTime": {
          "type": "string",
          "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MonitoringConfigResponse",
          "description": "Optional. The monitoring config information for this membership."
        },
        "name": {
          "type": "string",
          "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MembershipStateResponse",
          "description": "State of the Membership resource."
        },
        "uniqueId": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id."
        },
        "updateTime": {
          "type": "string",
          "description": "When the Membership was last updated."
        }
      },
      "type": "object",
      "required": [
        "authority",
        "createTime",
        "deleteTime",
        "description",
        "endpoint",
        "externalId",
        "labels",
        "lastConnectionTime",
        "location",
        "membershipId",
        "monitoringConfig",
        "name",
        "project",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "authority": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:Authority",
          "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
        },
        "endpoint": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MembershipEndpoint",
          "description": "Optional. Endpoint information to reach this member."
        },
        "externalId": {
          "type": "string",
          "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this membership."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "description": "Required. Client chosen ID for the membership. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "monitoringConfig": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:MonitoringConfig",
          "description": "Optional. The monitoring config information for this membership."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1beta:MembershipIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1beta:MembershipIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1beta:MembershipIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "membershipId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "membershipId"
      ]
    },
    "google-native:gkehub/v1beta:MembershipRbacRoleBinding": {
      "description": "Creates a Membership RBACRoleBinding.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the rbacrolebinding was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the rbacrolebinding was deleted."
        },
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:RoleResponse",
          "description": "Role to bind to the principal"
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:RBACRoleBindingLifecycleStateResponse",
          "description": "State of the rbacrolebinding resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the rbacrolebinding was last updated."
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "group",
        "labels",
        "location",
        "membershipId",
        "name",
        "project",
        "rbacrolebindingId",
        "role",
        "state",
        "uid",
        "updateTime",
        "user"
      ],
      "inputProperties": {
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "membershipId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:Role",
          "description": "Role to bind to the principal"
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "requiredInputs": [
        "membershipId",
        "rbacrolebindingId",
        "role"
      ]
    },
    "google-native:gkehub/v1beta:Namespace": {
      "description": "Creates a fleet namespace.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the namespace was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the namespace was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Namespace."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Scope associated with the namespace"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeNamespaceId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Namespace. `namespace_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:NamespaceLifecycleStateResponse",
          "description": "State of the namespace resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all namespace resources. If a namespace resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the namespace was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "name",
        "namespaceLabels",
        "project",
        "scope",
        "scopeId",
        "scopeNamespaceId",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Namespace."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Scope associated with the namespace"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeNamespaceId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Namespace. `namespace_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "scope",
        "scopeId",
        "scopeNamespaceId"
      ]
    },
    "google-native:gkehub/v1beta:Scope": {
      "description": "Creates a Scope.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the scope was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the scope was deleted."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Scope."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Scope. `scope_id` must be a ????",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:ScopeLifecycleStateResponse",
          "description": "State of the scope resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all scope resources. If a scope resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the scope was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "labels",
        "location",
        "name",
        "namespaceLabels",
        "project",
        "scopeId",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this Scope."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`"
        },
        "namespaceLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "description": "Required. Client chosen ID for the Scope. `scope_id` must be a ????",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "scopeId"
      ]
    },
    "google-native:gkehub/v1beta:ScopeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1beta:ScopeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkehub/v1beta:ScopeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "scopeId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "scopeId"
      ]
    },
    "google-native:gkehub/v1beta:ScopeRbacRoleBinding": {
      "description": "Creates a Scope RBACRoleBinding.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the rbacrolebinding was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "When the rbacrolebinding was deleted."
        },
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:RoleResponse",
          "description": "Role to bind to the principal"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:RBACRoleBindingLifecycleStateResponse",
          "description": "State of the rbacrolebinding resource."
        },
        "uid": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid."
        },
        "updateTime": {
          "type": "string",
          "description": "When the rbacrolebinding was last updated."
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "group",
        "labels",
        "location",
        "name",
        "project",
        "rbacrolebindingId",
        "role",
        "scopeId",
        "state",
        "uid",
        "updateTime",
        "user"
      ],
      "inputProperties": {
        "group": {
          "type": "string",
          "description": "group is the group, as seen by the kubernetes cluster."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels for this RBACRolebinding."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rbacrolebindingId": {
          "type": "string",
          "description": "Required. Client chosen ID for the RBACRoleBinding. `rbacrolebinding_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
          "replaceOnChanges": true
        },
        "role": {
          "$ref": "#/types/google-native:gkehub%2Fv1beta:Role",
          "description": "Role to bind to the principal"
        },
        "scopeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "user": {
          "type": "string",
          "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\""
        }
      },
      "requiredInputs": [
        "rbacrolebindingId",
        "role",
        "scopeId"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminCluster": {
      "description": "Creates a new bare metal admin cluster in a given project and location. The API needs to be combined with creating a bootstrap cluster to work. See: https://cloud.google.com/anthos/clusters/docs/bare-metal/latest/installing/creating-clusters/create-admin-cluster-api#prepare_bootstrap_environment\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the bare metal admin cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "bareMetalAdminClusterId": {
          "type": "string",
          "description": "Required. User provided identifier that is used as part of the resource name; must conform to RFC-1034 and additionally restrict to lower-cased letters. This comes out roughly to: /^a-z+[a-z0-9]$/",
          "replaceOnChanges": true
        },
        "bareMetalVersion": {
          "type": "string",
          "description": "The Anthos clusters on bare metal version for the bare metal admin cluster."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BinaryAuthorizationResponse",
          "description": "Binary Authorization related configurations."
        },
        "clusterOperations": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminClusterOperationsConfigResponse",
          "description": "Cluster operations configuration."
        },
        "controlPlane": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminControlPlaneConfigResponse",
          "description": "Control plane configuration."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this bare metal admin cluster was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which this bare metal admin cluster was deleted. If the resource is not deleted, this must be empty"
        },
        "description": {
          "type": "string",
          "description": "A human readable description of this bare metal admin cluster."
        },
        "endpoint": {
          "type": "string",
          "description": "The IP address name of bare metal admin cluster's API server."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "fleet": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:FleetResponse",
          "description": "Fleet configuration for the cluster."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminLoadBalancerConfigResponse",
          "description": "Load balancer configuration."
        },
        "localName": {
          "type": "string",
          "description": "The object name of the bare metal cluster custom resource. This field is used to support conflicting names when enrolling existing clusters to the API. When used as a part of cluster enrollment, this field will differ from the ID in the resource name. For new clusters, this field will match the user provided cluster name and be visible in the last component of the resource name. It is not modifiable. All users should use this name to access their cluster using gkectl or kubectl and should expect to see the local name when viewing admin cluster controller logs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminMaintenanceConfigResponse",
          "description": "Maintenance configuration."
        },
        "maintenanceStatus": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminMaintenanceStatusResponse",
          "description": "MaintenanceStatus representing state of maintenance."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The bare metal admin cluster resource name."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminNetworkConfigResponse",
          "description": "Network configuration."
        },
        "nodeAccessConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminNodeAccessConfigResponse",
          "description": "Node access related configurations."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminWorkloadNodeConfigResponse",
          "description": "Workload node configuration."
        },
        "osEnvironmentConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminOsEnvironmentConfigResponse",
          "description": "OS environment related configurations."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminProxyConfigResponse",
          "description": "Proxy configuration."
        },
        "reconciling": {
          "type": "boolean",
          "description": "If set, there are currently changes in flight to the bare metal Admin Cluster."
        },
        "securityConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminSecurityConfigResponse",
          "description": "Security related configuration."
        },
        "state": {
          "type": "string",
          "description": "The current state of the bare metal admin cluster."
        },
        "status": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
          "description": "ResourceStatus representing detailed cluster status."
        },
        "storage": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminStorageConfigResponse",
          "description": "Storage configuration."
        },
        "uid": {
          "type": "string",
          "description": "The unique identifier of the bare metal admin cluster."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which this bare metal admin cluster was last updated."
        },
        "validationCheck": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ValidationCheckResponse",
          "description": "ValidationCheck representing the result of the preflight check."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "bareMetalAdminClusterId",
        "bareMetalVersion",
        "binaryAuthorization",
        "clusterOperations",
        "controlPlane",
        "createTime",
        "deleteTime",
        "description",
        "endpoint",
        "etag",
        "fleet",
        "loadBalancer",
        "localName",
        "location",
        "maintenanceConfig",
        "maintenanceStatus",
        "name",
        "networkConfig",
        "nodeAccessConfig",
        "nodeConfig",
        "osEnvironmentConfig",
        "project",
        "proxy",
        "reconciling",
        "securityConfig",
        "state",
        "status",
        "storage",
        "uid",
        "updateTime",
        "validationCheck"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the bare metal admin cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "bareMetalAdminClusterId": {
          "type": "string",
          "description": "Required. User provided identifier that is used as part of the resource name; must conform to RFC-1034 and additionally restrict to lower-cased letters. This comes out roughly to: /^a-z+[a-z0-9]$/",
          "replaceOnChanges": true
        },
        "bareMetalVersion": {
          "type": "string",
          "description": "The Anthos clusters on bare metal version for the bare metal admin cluster."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BinaryAuthorization",
          "description": "Binary Authorization related configurations."
        },
        "clusterOperations": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminClusterOperationsConfig",
          "description": "Cluster operations configuration."
        },
        "controlPlane": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminControlPlaneConfig",
          "description": "Control plane configuration."
        },
        "description": {
          "type": "string",
          "description": "A human readable description of this bare metal admin cluster."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminLoadBalancerConfig",
          "description": "Load balancer configuration."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminMaintenanceConfig",
          "description": "Maintenance configuration."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The bare metal admin cluster resource name."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminNetworkConfig",
          "description": "Network configuration."
        },
        "nodeAccessConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminNodeAccessConfig",
          "description": "Node access related configurations."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminWorkloadNodeConfig",
          "description": "Workload node configuration."
        },
        "osEnvironmentConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminOsEnvironmentConfig",
          "description": "OS environment related configurations."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminProxyConfig",
          "description": "Proxy configuration."
        },
        "securityConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminSecurityConfig",
          "description": "Security related configuration."
        },
        "storage": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminStorageConfig",
          "description": "Storage configuration."
        }
      },
      "requiredInputs": [
        "bareMetalAdminClusterId"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminClusterIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminClusterIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalAdminClusterIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bareMetalAdminClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bareMetalAdminClusterId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bareMetalAdminClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "bareMetalAdminClusterId"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalCluster": {
      "description": "Creates a new bare metal cluster in a given project and location.",
      "properties": {
        "adminClusterMembership": {
          "type": "string",
          "description": "The admin cluster this bare metal user cluster belongs to. This is the full resource name of the admin cluster's fleet membership."
        },
        "adminClusterName": {
          "type": "string",
          "description": "The resource name of the bare metal admin cluster managing this user cluster."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the bare metal user cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "bareMetalClusterId": {
          "type": "string",
          "description": "Required. User provided identifier that is used as part of the resource name; must conform to RFC-1034 and additionally restrict to lower-cased letters. This comes out roughly to: /^a-z+[a-z0-9]$/",
          "replaceOnChanges": true
        },
        "bareMetalVersion": {
          "type": "string",
          "description": "The Anthos clusters on bare metal version for your user cluster."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BinaryAuthorizationResponse",
          "description": "Binary Authorization related configurations."
        },
        "clusterOperations": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalClusterOperationsConfigResponse",
          "description": "Cluster operations configuration."
        },
        "controlPlane": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalControlPlaneConfigResponse",
          "description": "Control plane configuration."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the bare metal user cluster was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time when the bare metal user cluster was deleted. If the resource is not deleted, this must be empty"
        },
        "description": {
          "type": "string",
          "description": "A human readable description of this bare metal user cluster."
        },
        "endpoint": {
          "type": "string",
          "description": "The IP address of the bare metal user cluster's API server."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "fleet": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:FleetResponse",
          "description": "Fleet configuration for the cluster."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerConfigResponse",
          "description": "Load balancer configuration."
        },
        "localName": {
          "type": "string",
          "description": "The object name of the bare metal user cluster custom resource on the associated admin cluster. This field is used to support conflicting names when enrolling existing clusters to the API. When used as a part of cluster enrollment, this field will differ from the name in the resource name. For new clusters, this field will match the user provided cluster name and be visible in the last component of the resource name. It is not modifiable. When the local name and cluster name differ, the local name is used in the admin cluster controller logs. You use the cluster name when accessing the cluster using bmctl and kubectl."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMaintenanceConfigResponse",
          "description": "Maintenance configuration."
        },
        "maintenanceStatus": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMaintenanceStatusResponse",
          "description": "Status of on-going maintenance tasks."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The bare metal user cluster resource name."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNetworkConfigResponse",
          "description": "Network configuration."
        },
        "nodeAccessConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodeAccessConfigResponse",
          "description": "Node access related configurations."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalWorkloadNodeConfigResponse",
          "description": "Workload node configuration."
        },
        "osEnvironmentConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalOsEnvironmentConfigResponse",
          "description": "OS environment related configurations."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalProxyConfigResponse",
          "description": "Proxy configuration."
        },
        "reconciling": {
          "type": "boolean",
          "description": "If set, there are currently changes in flight to the bare metal user cluster."
        },
        "securityConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalSecurityConfigResponse",
          "description": "Security related setting configuration."
        },
        "state": {
          "type": "string",
          "description": "The current state of the bare metal user cluster."
        },
        "status": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
          "description": "Detailed cluster status."
        },
        "storage": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalStorageConfigResponse",
          "description": "Storage configuration."
        },
        "uid": {
          "type": "string",
          "description": "The unique identifier of the bare metal user cluster."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the bare metal user cluster was last updated."
        },
        "upgradePolicy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalClusterUpgradePolicyResponse",
          "description": "The cluster upgrade policy."
        },
        "validationCheck": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ValidationCheckResponse",
          "description": "The result of the preflight check."
        }
      },
      "type": "object",
      "required": [
        "adminClusterMembership",
        "adminClusterName",
        "annotations",
        "bareMetalClusterId",
        "bareMetalVersion",
        "binaryAuthorization",
        "clusterOperations",
        "controlPlane",
        "createTime",
        "deleteTime",
        "description",
        "endpoint",
        "etag",
        "fleet",
        "loadBalancer",
        "localName",
        "location",
        "maintenanceConfig",
        "maintenanceStatus",
        "name",
        "networkConfig",
        "nodeAccessConfig",
        "nodeConfig",
        "osEnvironmentConfig",
        "project",
        "proxy",
        "reconciling",
        "securityConfig",
        "state",
        "status",
        "storage",
        "uid",
        "updateTime",
        "upgradePolicy",
        "validationCheck"
      ],
      "inputProperties": {
        "adminClusterMembership": {
          "type": "string",
          "description": "The admin cluster this bare metal user cluster belongs to. This is the full resource name of the admin cluster's fleet membership."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the bare metal user cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "bareMetalClusterId": {
          "type": "string",
          "description": "Required. User provided identifier that is used as part of the resource name; must conform to RFC-1034 and additionally restrict to lower-cased letters. This comes out roughly to: /^a-z+[a-z0-9]$/",
          "replaceOnChanges": true
        },
        "bareMetalVersion": {
          "type": "string",
          "description": "The Anthos clusters on bare metal version for your user cluster."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BinaryAuthorization",
          "description": "Binary Authorization related configurations."
        },
        "clusterOperations": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalClusterOperationsConfig",
          "description": "Cluster operations configuration."
        },
        "controlPlane": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalControlPlaneConfig",
          "description": "Control plane configuration."
        },
        "description": {
          "type": "string",
          "description": "A human readable description of this bare metal user cluster."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerConfig",
          "description": "Load balancer configuration."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMaintenanceConfig",
          "description": "Maintenance configuration."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The bare metal user cluster resource name."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNetworkConfig",
          "description": "Network configuration."
        },
        "nodeAccessConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodeAccessConfig",
          "description": "Node access related configurations."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalWorkloadNodeConfig",
          "description": "Workload node configuration."
        },
        "osEnvironmentConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalOsEnvironmentConfig",
          "description": "OS environment related configurations."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalProxyConfig",
          "description": "Proxy configuration."
        },
        "securityConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalSecurityConfig",
          "description": "Security related setting configuration."
        },
        "storage": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalStorageConfig",
          "description": "Storage configuration."
        },
        "upgradePolicy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalClusterUpgradePolicy",
          "description": "The cluster upgrade policy."
        }
      },
      "requiredInputs": [
        "adminClusterMembership",
        "bareMetalClusterId",
        "bareMetalVersion",
        "controlPlane",
        "loadBalancer",
        "networkConfig",
        "storage"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterBareMetalNodePoolIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterBareMetalNodePoolIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterBareMetalNodePoolIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bareMetalClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bareMetalNodePoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bareMetalClusterId",
        "bareMetalNodePoolId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bareMetalClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bareMetalNodePoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "bareMetalClusterId",
        "bareMetalNodePoolId"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalClusterIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bareMetalClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bareMetalClusterId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bareMetalClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "bareMetalClusterId"
      ]
    },
    "google-native:gkeonprem/v1:BareMetalNodePool": {
      "description": "Creates a new bare metal node pool in a given project, location and Bare Metal cluster.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the bare metal node pool. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "bareMetalClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bareMetalNodePoolId": {
          "type": "string",
          "description": "The ID to use for the node pool, which will become the final component of the node pool's resource name. This value must be up to 63 characters, and valid characters are /a-z-/. The value must not be permitted to be a UUID (or UUID-like: anything matching /^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i)."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this bare metal node pool was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which this bare metal node pool was deleted. If the resource is not deleted, this must be empty"
        },
        "displayName": {
          "type": "string",
          "description": "The display name for the bare metal node pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The bare metal node pool resource name."
        },
        "nodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfigResponse",
          "description": "Node pool configuration."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "If set, there are currently changes in flight to the bare metal node pool."
        },
        "state": {
          "type": "string",
          "description": "The current state of the bare metal node pool."
        },
        "status": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
          "description": "ResourceStatus representing the detailed node pool status."
        },
        "uid": {
          "type": "string",
          "description": "The unique identifier of the bare metal node pool."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which this bare metal node pool was last updated."
        },
        "upgradePolicy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolUpgradePolicyResponse",
          "description": "The worker node pool upgrade policy."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "bareMetalClusterId",
        "createTime",
        "deleteTime",
        "displayName",
        "etag",
        "location",
        "name",
        "nodePoolConfig",
        "project",
        "reconciling",
        "state",
        "status",
        "uid",
        "updateTime",
        "upgradePolicy"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the bare metal node pool. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "bareMetalClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bareMetalNodePoolId": {
          "type": "string",
          "description": "The ID to use for the node pool, which will become the final component of the node pool's resource name. This value must be up to 63 characters, and valid characters are /a-z-/. The value must not be permitted to be a UUID (or UUID-like: anything matching /^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i)."
        },
        "displayName": {
          "type": "string",
          "description": "The display name for the bare metal node pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The bare metal node pool resource name."
        },
        "nodePoolConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfig",
          "description": "Node pool configuration."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "upgradePolicy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolUpgradePolicy",
          "description": "The worker node pool upgrade policy."
        }
      },
      "requiredInputs": [
        "bareMetalClusterId",
        "nodePoolConfig"
      ]
    },
    "google-native:gkeonprem/v1:VmwareAdminClusterIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:VmwareAdminClusterIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:VmwareAdminClusterIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "vmwareAdminClusterId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "vmwareAdminClusterId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "vmwareAdminClusterId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "vmwareAdminClusterId"
      ]
    },
    "google-native:gkeonprem/v1:VmwareCluster": {
      "description": "Creates a new VMware user cluster in a given project and location.",
      "properties": {
        "adminClusterMembership": {
          "type": "string",
          "description": "The admin cluster this VMware user cluster belongs to. This is the full resource name of the admin cluster's fleet membership. In the future, references to other resource types might be allowed if admin clusters are modeled as their own resources."
        },
        "adminClusterName": {
          "type": "string",
          "description": "The resource name of the VMware admin cluster hosting this user cluster."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the VMware user cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "antiAffinityGroups": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAAGConfigResponse",
          "description": "AAGConfig specifies whether to spread VMware user cluster nodes across at least three physical hosts in the datacenter."
        },
        "authorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:AuthorizationResponse",
          "description": "RBAC policy that will be applied and managed by the Anthos On-Prem API."
        },
        "autoRepairConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAutoRepairConfigResponse",
          "description": "Configuration for auto repairing."
        },
        "controlPlaneNode": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareControlPlaneNodeConfigResponse",
          "description": "VMware user cluster control plane nodes must have either 1 or 3 replicas."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which VMware user cluster was created."
        },
        "dataplaneV2": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareDataplaneV2ConfigResponse",
          "description": "VmwareDataplaneV2Config specifies configuration for Dataplane V2."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which VMware user cluster was deleted."
        },
        "description": {
          "type": "string",
          "description": "A human readable description of this VMware user cluster."
        },
        "disableBundledIngress": {
          "type": "boolean",
          "description": "Disable bundled ingress."
        },
        "enableControlPlaneV2": {
          "type": "boolean",
          "description": "Enable control plane V2. Default to false."
        },
        "endpoint": {
          "type": "string",
          "description": "The DNS name of VMware user cluster's API server."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "fleet": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:FleetResponse",
          "description": "Fleet configuration for the cluster."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareLoadBalancerConfigResponse",
          "description": "Load balancer configuration."
        },
        "localName": {
          "type": "string",
          "description": "The object name of the VMware OnPremUserCluster custom resource on the associated admin cluster. This field is used to support conflicting names when enrolling existing clusters to the API. When used as a part of cluster enrollment, this field will differ from the ID in the resource name. For new clusters, this field will match the user provided cluster name and be visible in the last component of the resource name. It is not modifiable. All users should use this name to access their cluster using gkectl or kubectl and should expect to see the local name when viewing admin cluster controller logs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The VMware user cluster resource name."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNetworkConfigResponse",
          "description": "The VMware user cluster network configuration."
        },
        "onPremVersion": {
          "type": "string",
          "description": "The Anthos clusters on the VMware version for your user cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "If set, there are currently changes in flight to the VMware user cluster."
        },
        "state": {
          "type": "string",
          "description": "The current state of VMware user cluster."
        },
        "status": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
          "description": "ResourceStatus representing detailed cluster state."
        },
        "storage": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareStorageConfigResponse",
          "description": "Storage configuration."
        },
        "uid": {
          "type": "string",
          "description": "The unique identifier of the VMware user cluster."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which VMware user cluster was last updated."
        },
        "upgradePolicy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareClusterUpgradePolicyResponse",
          "description": "Specifies upgrade policy for the cluster."
        },
        "validationCheck": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ValidationCheckResponse",
          "description": "ValidationCheck represents the result of the preflight check job."
        },
        "vcenter": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVCenterConfigResponse",
          "description": "VmwareVCenterConfig specifies vCenter config for the user cluster. If unspecified, it is inherited from the admin cluster."
        },
        "vmTrackingEnabled": {
          "type": "boolean",
          "description": "Enable VM tracking."
        },
        "vmwareClusterId": {
          "type": "string",
          "description": "User provided identifier that is used as part of the resource name; This value must be up to 40 characters and follow RFC-1123 (https://tools.ietf.org/html/rfc1123) format."
        }
      },
      "type": "object",
      "required": [
        "adminClusterMembership",
        "adminClusterName",
        "annotations",
        "antiAffinityGroups",
        "authorization",
        "autoRepairConfig",
        "controlPlaneNode",
        "createTime",
        "dataplaneV2",
        "deleteTime",
        "description",
        "disableBundledIngress",
        "enableControlPlaneV2",
        "endpoint",
        "etag",
        "fleet",
        "loadBalancer",
        "localName",
        "location",
        "name",
        "networkConfig",
        "onPremVersion",
        "project",
        "reconciling",
        "state",
        "status",
        "storage",
        "uid",
        "updateTime",
        "upgradePolicy",
        "validationCheck",
        "vcenter",
        "vmTrackingEnabled"
      ],
      "inputProperties": {
        "adminClusterMembership": {
          "type": "string",
          "description": "The admin cluster this VMware user cluster belongs to. This is the full resource name of the admin cluster's fleet membership. In the future, references to other resource types might be allowed if admin clusters are modeled as their own resources."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the VMware user cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "antiAffinityGroups": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAAGConfig",
          "description": "AAGConfig specifies whether to spread VMware user cluster nodes across at least three physical hosts in the datacenter."
        },
        "authorization": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:Authorization",
          "description": "RBAC policy that will be applied and managed by the Anthos On-Prem API."
        },
        "autoRepairConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAutoRepairConfig",
          "description": "Configuration for auto repairing."
        },
        "controlPlaneNode": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareControlPlaneNodeConfig",
          "description": "VMware user cluster control plane nodes must have either 1 or 3 replicas."
        },
        "dataplaneV2": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareDataplaneV2Config",
          "description": "VmwareDataplaneV2Config specifies configuration for Dataplane V2."
        },
        "description": {
          "type": "string",
          "description": "A human readable description of this VMware user cluster."
        },
        "disableBundledIngress": {
          "type": "boolean",
          "description": "Disable bundled ingress."
        },
        "enableControlPlaneV2": {
          "type": "boolean",
          "description": "Enable control plane V2. Default to false."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "loadBalancer": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareLoadBalancerConfig",
          "description": "Load balancer configuration."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The VMware user cluster resource name."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNetworkConfig",
          "description": "The VMware user cluster network configuration."
        },
        "onPremVersion": {
          "type": "string",
          "description": "The Anthos clusters on the VMware version for your user cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "storage": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareStorageConfig",
          "description": "Storage configuration."
        },
        "upgradePolicy": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareClusterUpgradePolicy",
          "description": "Specifies upgrade policy for the cluster."
        },
        "vcenter": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVCenterConfig",
          "description": "VmwareVCenterConfig specifies vCenter config for the user cluster. If unspecified, it is inherited from the admin cluster."
        },
        "vmTrackingEnabled": {
          "type": "boolean",
          "description": "Enable VM tracking."
        },
        "vmwareClusterId": {
          "type": "string",
          "description": "User provided identifier that is used as part of the resource name; This value must be up to 40 characters and follow RFC-1123 (https://tools.ietf.org/html/rfc1123) format."
        }
      },
      "requiredInputs": [
        "adminClusterMembership",
        "onPremVersion"
      ]
    },
    "google-native:gkeonprem/v1:VmwareClusterIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:VmwareClusterIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:VmwareClusterIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "vmwareClusterId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "vmwareClusterId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "vmwareClusterId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "vmwareClusterId"
      ]
    },
    "google-native:gkeonprem/v1:VmwareClusterVmwareNodePoolIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:VmwareClusterVmwareNodePoolIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:gkeonprem/v1:VmwareClusterVmwareNodePoolIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "vmwareClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "vmwareNodePoolId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "vmwareClusterId",
        "vmwareNodePoolId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "vmwareClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "vmwareNodePoolId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "vmwareClusterId",
        "vmwareNodePoolId"
      ]
    },
    "google-native:gkeonprem/v1:VmwareNodePool": {
      "description": "Creates a new VMware node pool in a given project, location and VMWare cluster.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the node pool. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "config": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNodeConfigResponse",
          "description": "The node configuration of the node pool."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this node pool was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which this node pool was deleted. If the resource is not deleted, this must be empty"
        },
        "displayName": {
          "type": "string",
          "description": "The display name for the node pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of this node pool."
        },
        "nodePoolAutoscaling": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNodePoolAutoscalingConfigResponse",
          "description": "Node pool autoscaling config for the node pool."
        },
        "onPremVersion": {
          "type": "string",
          "description": "Anthos version for the node pool. Defaults to the user cluster version."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "If set, there are currently changes in flight to the node pool."
        },
        "state": {
          "type": "string",
          "description": "The current state of the node pool."
        },
        "status": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
          "description": "ResourceStatus representing the detailed VMware node pool state."
        },
        "uid": {
          "type": "string",
          "description": "The unique identifier of the node pool."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which this node pool was last updated."
        },
        "vmwareClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "vmwareNodePoolId": {
          "type": "string",
          "description": "The ID to use for the node pool, which will become the final component of the node pool's resource name. This value must be up to 40 characters and follow RFC-1123 (https://tools.ietf.org/html/rfc1123) format. The value must not be permitted to be a UUID (or UUID-like: anything matching /^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i)."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "config",
        "createTime",
        "deleteTime",
        "displayName",
        "etag",
        "location",
        "name",
        "nodePoolAutoscaling",
        "onPremVersion",
        "project",
        "reconciling",
        "state",
        "status",
        "uid",
        "updateTime",
        "vmwareClusterId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations on the node pool. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between."
        },
        "config": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNodeConfig",
          "description": "The node configuration of the node pool."
        },
        "displayName": {
          "type": "string",
          "description": "The display name for the node pool."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of this node pool."
        },
        "nodePoolAutoscaling": {
          "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNodePoolAutoscalingConfig",
          "description": "Node pool autoscaling config for the node pool."
        },
        "onPremVersion": {
          "type": "string",
          "description": "Anthos version for the node pool. Defaults to the user cluster version."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "vmwareClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "vmwareNodePoolId": {
          "type": "string",
          "description": "The ID to use for the node pool, which will become the final component of the node pool's resource name. This value must be up to 40 characters and follow RFC-1123 (https://tools.ietf.org/html/rfc1123) format. The value must not be permitted to be a UUID (or UUID-like: anything matching /^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i)."
        }
      },
      "requiredInputs": [
        "config",
        "vmwareClusterId"
      ]
    },
    "google-native:healthcare/v1:AttributeDefinition": {
      "description": "Creates a new Attribute definition in the parent consent store.",
      "properties": {
        "allowedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Possible values for the attribute. The number of allowed values must not exceed 500. An empty list is invalid. The list can only be expanded after creation."
        },
        "attributeDefinitionId": {
          "type": "string",
          "description": "Required. The ID of the Attribute definition to create. The string must match the following regex: `_a-zA-Z{0,255}` and must not be a reserved keyword within the Common Expression Language as listed on https://github.com/google/cel-spec/blob/master/doc/langdef.md.",
          "replaceOnChanges": true
        },
        "category": {
          "type": "string",
          "description": "The category of the attribute. The value of this field cannot be changed after creation."
        },
        "consentDefaultValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Default values of the attribute in Consents. If no default values are specified, it defaults to an empty value."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataMappingDefaultValue": {
          "type": "string",
          "description": "Optional. Default value of the attribute in User data mappings. If no default value is specified, it defaults to an empty value. This field is only applicable to attributes of the category `RESOURCE`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of the attribute."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Attribute definition, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/attributeDefinitions/{attribute_definition_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "allowedValues",
        "attributeDefinitionId",
        "category",
        "consentDefaultValues",
        "consentStoreId",
        "dataMappingDefaultValue",
        "datasetId",
        "description",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "allowedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Possible values for the attribute. The number of allowed values must not exceed 500. An empty list is invalid. The list can only be expanded after creation."
        },
        "attributeDefinitionId": {
          "type": "string",
          "description": "Required. The ID of the Attribute definition to create. The string must match the following regex: `_a-zA-Z{0,255}` and must not be a reserved keyword within the Common Expression Language as listed on https://github.com/google/cel-spec/blob/master/doc/langdef.md.",
          "replaceOnChanges": true
        },
        "category": {
          "$ref": "#/types/google-native:healthcare%2Fv1:AttributeDefinitionCategory",
          "description": "The category of the attribute. The value of this field cannot be changed after creation."
        },
        "consentDefaultValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Default values of the attribute in Consents. If no default values are specified, it defaults to an empty value."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataMappingDefaultValue": {
          "type": "string",
          "description": "Optional. Default value of the attribute in User data mappings. If no default value is specified, it defaults to an empty value. This field is only applicable to attributes of the category `RESOURCE`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of the attribute."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Attribute definition, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/attributeDefinitions/{attribute_definition_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "allowedValues",
        "attributeDefinitionId",
        "category",
        "consentStoreId",
        "datasetId"
      ]
    },
    "google-native:healthcare/v1:Consent": {
      "description": "Creates a new Consent in the parent consent store.",
      "properties": {
        "consentArtifact": {
          "type": "string",
          "description": "The resource name of the Consent artifact that contains proof of the end user's consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "expireTime": {
          "type": "string",
          "description": "Timestamp in UTC of when this Consent is considered expired."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize Consent resources. Metadata keys must: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - begin with a letter - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes Metadata values must be: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes No more than 64 metadata entries can be associated with a given consent."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consents/{consent_id}`. Cannot be changed after creation."
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1ConsentPolicyResponse"
          },
          "description": "Optional. Represents a user's consent in terms of the resources that can be accessed and under what conditions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp that the revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "The revision ID of the Consent. The format is an 8-character hexadecimal string. Refer to a specific revision of a Consent by appending `@{revision_id}` to the Consent's resource name."
        },
        "state": {
          "type": "string",
          "description": "Indicates the current state of this Consent."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The time to live for this Consent from when it is created."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "type": "object",
      "required": [
        "consentArtifact",
        "consentStoreId",
        "datasetId",
        "expireTime",
        "location",
        "metadata",
        "name",
        "policies",
        "project",
        "revisionCreateTime",
        "revisionId",
        "state",
        "ttl",
        "userId"
      ],
      "inputProperties": {
        "consentArtifact": {
          "type": "string",
          "description": "The resource name of the Consent artifact that contains proof of the end user's consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "expireTime": {
          "type": "string",
          "description": "Timestamp in UTC of when this Consent is considered expired."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize Consent resources. Metadata keys must: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - begin with a letter - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes Metadata values must be: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes No more than 64 metadata entries can be associated with a given consent."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consents/{consent_id}`. Cannot be changed after creation."
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1ConsentPolicy"
          },
          "description": "Optional. Represents a user's consent in terms of the resources that can be accessed and under what conditions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ConsentState",
          "description": "Indicates the current state of this Consent."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The time to live for this Consent from when it is created."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "requiredInputs": [
        "consentArtifact",
        "consentStoreId",
        "datasetId",
        "state",
        "userId"
      ]
    },
    "google-native:healthcare/v1:ConsentArtifact": {
      "description": "Creates a new Consent artifact in the parent consent store.",
      "properties": {
        "consentContentScreenshots": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:ImageResponse"
          },
          "description": "Optional. Screenshots, PDFs, or other binary information documenting the user's consent."
        },
        "consentContentVersion": {
          "type": "string",
          "description": "Optional. An string indicating the version of the consent information shown to the user."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "guardianSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SignatureResponse",
          "description": "Optional. A signature from a guardian."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata associated with the Consent artifact. For example, the consent locale or user agent version."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Consent artifact, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        },
        "userSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SignatureResponse",
          "description": "Optional. User's signature."
        },
        "witnessSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SignatureResponse",
          "description": "Optional. A signature from a witness."
        }
      },
      "type": "object",
      "required": [
        "consentContentScreenshots",
        "consentContentVersion",
        "consentStoreId",
        "datasetId",
        "guardianSignature",
        "location",
        "metadata",
        "name",
        "project",
        "userId",
        "userSignature",
        "witnessSignature"
      ],
      "inputProperties": {
        "consentContentScreenshots": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Image"
          },
          "description": "Optional. Screenshots, PDFs, or other binary information documenting the user's consent."
        },
        "consentContentVersion": {
          "type": "string",
          "description": "Optional. An string indicating the version of the consent information shown to the user."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "guardianSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1:Signature",
          "description": "Optional. A signature from a guardian."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata associated with the Consent artifact. For example, the consent locale or user agent version."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Consent artifact, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        },
        "userSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1:Signature",
          "description": "Optional. User's signature."
        },
        "witnessSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1:Signature",
          "description": "Optional. A signature from a witness."
        }
      },
      "requiredInputs": [
        "consentStoreId",
        "datasetId",
        "userId"
      ]
    },
    "google-native:healthcare/v1:ConsentStore": {
      "description": "Creates a new consent store in the parent dataset. Attempting to create a consent store with the same ID as an existing store fails with an ALREADY_EXISTS error.",
      "properties": {
        "consentStoreId": {
          "type": "string",
          "description": "Required. The ID of the consent store to create. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`. Cannot be changed after creation.",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultConsentTtl": {
          "type": "string",
          "description": "Optional. Default time to live for Consents created in this store. Must be at least 24 hours. Updating this field will not affect the expiration time of existing consents."
        },
        "enableConsentCreateOnUpdate": {
          "type": "boolean",
          "description": "Optional. If `true`, UpdateConsent creates the Consent if it does not already exist. If unspecified, defaults to `false`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize consent stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}. Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}. No more than 64 labels can be associated with a given store. For more information: https://cloud.google.com/healthcare/docs/how-tos/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the consent store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "consentStoreId",
        "datasetId",
        "defaultConsentTtl",
        "enableConsentCreateOnUpdate",
        "labels",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "consentStoreId": {
          "type": "string",
          "description": "Required. The ID of the consent store to create. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`. Cannot be changed after creation.",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultConsentTtl": {
          "type": "string",
          "description": "Optional. Default time to live for Consents created in this store. Must be at least 24 hours. Updating this field will not affect the expiration time of existing consents."
        },
        "enableConsentCreateOnUpdate": {
          "type": "boolean",
          "description": "Optional. If `true`, UpdateConsent creates the Consent if it does not already exist. If unspecified, defaults to `false`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize consent stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}. Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}. No more than 64 labels can be associated with a given store. For more information: https://cloud.google.com/healthcare/docs/how-tos/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the consent store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "consentStoreId",
        "datasetId"
      ]
    },
    "google-native:healthcare/v1:Dataset": {
      "description": "Creates a new health dataset. Results are returned through the Operation interface which returns either an `Operation.response` which contains a Dataset or `Operation.error`. The metadata field type is OperationMetadata.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the dataset, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeZone": {
          "type": "string",
          "description": "The default timezone used by this dataset. Must be a either a valid IANA time zone name such as \"America/New_York\" or empty, which defaults to UTC. This is used for parsing times in resources, such as HL7 messages, where no explicit timezone is specified."
        }
      },
      "type": "object",
      "required": [
        "location",
        "name",
        "project",
        "timeZone"
      ],
      "inputProperties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the dataset, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeZone": {
          "type": "string",
          "description": "The default timezone used by this dataset. Must be a either a valid IANA time zone name such as \"America/New_York\" or empty, which defaults to UTC. This is used for parsing times in resources, such as HL7 messages, where no explicit timezone is specified."
        }
      }
    },
    "google-native:healthcare/v1:DatasetConsentStoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetConsentStoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetConsentStoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "consentStoreId",
        "datasetId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "consentStoreId",
        "datasetId"
      ]
    },
    "google-native:healthcare/v1:DatasetDicomStoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetDicomStoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetDicomStoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dicomStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "dicomStoreId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dicomStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId",
        "dicomStoreId"
      ]
    },
    "google-native:healthcare/v1:DatasetFhirStoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetFhirStoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetFhirStoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "fhirStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "etag",
        "fhirStoreId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "fhirStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId",
        "fhirStoreId"
      ]
    },
    "google-native:healthcare/v1:DatasetHl7V2StoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetHl7V2StoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetHl7V2StoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hl7V2StoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "etag",
        "hl7V2StoreId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hl7V2StoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId",
        "hl7V2StoreId"
      ]
    },
    "google-native:healthcare/v1:DatasetIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1:DatasetIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1:DicomStore": {
      "description": "Creates a new DICOM store within the parent dataset.",
      "properties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dicomStoreId": {
          "type": "string",
          "description": "The ID of the DICOM store that is being created. Any string value up to 256 characters in length."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize DICOM stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the DICOM store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/dicomStores/{dicom_store_id}`."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:NotificationConfigResponse",
          "description": "Notification destination for new DICOM instances. Supplied by the client."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "streamConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1DicomStreamConfigResponse"
          },
          "description": "Optional. A list of streaming configs used to configure the destination of streaming exports for every DICOM instance insertion in this DICOM store. After a new config is added to `stream_configs`, DICOM instance insertions are streamed to the new destination. When a config is removed from `stream_configs`, the server stops streaming to that destination. Each config must contain a unique destination."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "labels",
        "location",
        "name",
        "notificationConfig",
        "project",
        "streamConfigs"
      ],
      "inputProperties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dicomStoreId": {
          "type": "string",
          "description": "The ID of the DICOM store that is being created. Any string value up to 256 characters in length."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize DICOM stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the DICOM store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/dicomStores/{dicom_store_id}`."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:NotificationConfig",
          "description": "Notification destination for new DICOM instances. Supplied by the client."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "streamConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1DicomStreamConfig"
          },
          "description": "Optional. A list of streaming configs used to configure the destination of streaming exports for every DICOM instance insertion in this DICOM store. After a new config is added to `stream_configs`, DICOM instance insertions are streamed to the new destination. When a config is removed from `stream_configs`, the server stops streaming to that destination. Each config must contain a unique destination."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1:FhirStore": {
      "description": "Creates a new FHIR store within the parent dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "complexDataTypeReferenceParsing": {
          "type": "string",
          "description": "Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultSearchHandlingStrict": {
          "type": "boolean",
          "description": "If true, overrides the default search behavior for this FHIR store to `handling=strict` which returns an error for unrecognized search parameters. If false, uses the FHIR specification default `handling=lenient` which ignores unrecognized search parameters. The handling can always be changed from the default on an individual API call by setting the HTTP header `Prefer: handling=strict` or `Prefer: handling=lenient`."
        },
        "disableReferentialIntegrity": {
          "type": "boolean",
          "description": "Immutable. Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API enforces referential integrity and fails the requests that result in inconsistent state in the FHIR store. When this field is set to true, the API skips referential integrity checks. Consequently, operations that rely on references, such as GetPatientEverything, do not return all the results if broken references exist."
        },
        "disableResourceVersioning": {
          "type": "boolean",
          "description": "Immutable. Whether to disable resource versioning for this FHIR store. This field can not be changed after the creation of FHIR store. If set to false, which is the default behavior, all write operations cause historical versions to be recorded automatically. The historical versions can be fetched through the history APIs, but cannot be updated. If set to true, no historical versions are kept. The server sends errors for attempts to read the historical versions."
        },
        "enableUpdateCreate": {
          "type": "boolean",
          "description": "Whether this FHIR store has the [updateCreate capability](https://www.hl7.org/fhir/capabilitystatement-definitions.html#CapabilityStatement.rest.resource.updateCreate). This determines if the client can use an Update operation to create a new resource with a client-specified ID. If false, all IDs are server-assigned through the Create operation and attempts to update a non-existent resource return errors. It is strongly advised not to include or encode any sensitive data such as patient identifiers in client-specified resource IDs. Those IDs are part of the FHIR resource path recorded in Cloud audit logs and Pub/Sub notifications. Those IDs can also be contained in reference fields within other resources."
        },
        "fhirStoreId": {
          "type": "string",
          "description": "The ID of the FHIR store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize FHIR stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the FHIR store, of the form `projects/{project_id}/datasets/{dataset_id}/fhirStores/{fhir_store_id}`."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:NotificationConfigResponse",
          "description": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\".",
          "deprecationMessage": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\"."
        },
        "notificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:FhirNotificationConfigResponse"
          },
          "description": "Specifies where and whether to send notifications upon changes to a FHIR store."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "streamConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:StreamConfigResponse"
          },
          "description": "A list of streaming configs that configure the destinations of streaming export for every resource mutation in this FHIR store. Each store is allowed to have up to 10 streaming configs. After a new config is added, the next resource mutation is streamed to the new location in addition to the existing ones. When a location is removed from the list, the server stops streaming to that location. Before adding a new config, you must add the required [`bigquery.dataEditor`](https://cloud.google.com/bigquery/docs/access-control#bigquery.dataEditor) role to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/iam/docs/service-accounts). Some lag (typically on the order of dozens of seconds) is expected before the results show up in the streaming destination."
        },
        "validationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ValidationConfigResponse",
          "description": "Configuration for how to validate incoming FHIR resources against configured profiles."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The FHIR specification version that this FHIR store supports natively. This field is immutable after store creation. Requests are rejected if they contain FHIR resources of a different version. Version is required for every FHIR store."
        }
      },
      "type": "object",
      "required": [
        "complexDataTypeReferenceParsing",
        "datasetId",
        "defaultSearchHandlingStrict",
        "disableReferentialIntegrity",
        "disableResourceVersioning",
        "enableUpdateCreate",
        "labels",
        "location",
        "name",
        "notificationConfig",
        "notificationConfigs",
        "project",
        "streamConfigs",
        "validationConfig",
        "version"
      ],
      "inputProperties": {
        "complexDataTypeReferenceParsing": {
          "$ref": "#/types/google-native:healthcare%2Fv1:FhirStoreComplexDataTypeReferenceParsing",
          "description": "Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultSearchHandlingStrict": {
          "type": "boolean",
          "description": "If true, overrides the default search behavior for this FHIR store to `handling=strict` which returns an error for unrecognized search parameters. If false, uses the FHIR specification default `handling=lenient` which ignores unrecognized search parameters. The handling can always be changed from the default on an individual API call by setting the HTTP header `Prefer: handling=strict` or `Prefer: handling=lenient`."
        },
        "disableReferentialIntegrity": {
          "type": "boolean",
          "description": "Immutable. Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API enforces referential integrity and fails the requests that result in inconsistent state in the FHIR store. When this field is set to true, the API skips referential integrity checks. Consequently, operations that rely on references, such as GetPatientEverything, do not return all the results if broken references exist."
        },
        "disableResourceVersioning": {
          "type": "boolean",
          "description": "Immutable. Whether to disable resource versioning for this FHIR store. This field can not be changed after the creation of FHIR store. If set to false, which is the default behavior, all write operations cause historical versions to be recorded automatically. The historical versions can be fetched through the history APIs, but cannot be updated. If set to true, no historical versions are kept. The server sends errors for attempts to read the historical versions."
        },
        "enableUpdateCreate": {
          "type": "boolean",
          "description": "Whether this FHIR store has the [updateCreate capability](https://www.hl7.org/fhir/capabilitystatement-definitions.html#CapabilityStatement.rest.resource.updateCreate). This determines if the client can use an Update operation to create a new resource with a client-specified ID. If false, all IDs are server-assigned through the Create operation and attempts to update a non-existent resource return errors. It is strongly advised not to include or encode any sensitive data such as patient identifiers in client-specified resource IDs. Those IDs are part of the FHIR resource path recorded in Cloud audit logs and Pub/Sub notifications. Those IDs can also be contained in reference fields within other resources."
        },
        "fhirStoreId": {
          "type": "string",
          "description": "The ID of the FHIR store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize FHIR stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:NotificationConfig",
          "description": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\".",
          "deprecationMessage": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\"."
        },
        "notificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:FhirNotificationConfig"
          },
          "description": "Specifies where and whether to send notifications upon changes to a FHIR store."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "streamConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:StreamConfig"
          },
          "description": "A list of streaming configs that configure the destinations of streaming export for every resource mutation in this FHIR store. Each store is allowed to have up to 10 streaming configs. After a new config is added, the next resource mutation is streamed to the new location in addition to the existing ones. When a location is removed from the list, the server stops streaming to that location. Before adding a new config, you must add the required [`bigquery.dataEditor`](https://cloud.google.com/bigquery/docs/access-control#bigquery.dataEditor) role to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/iam/docs/service-accounts). Some lag (typically on the order of dozens of seconds) is expected before the results show up in the streaming destination."
        },
        "validationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ValidationConfig",
          "description": "Configuration for how to validate incoming FHIR resources against configured profiles."
        },
        "version": {
          "$ref": "#/types/google-native:healthcare%2Fv1:FhirStoreVersion",
          "description": "Immutable. The FHIR specification version that this FHIR store supports natively. This field is immutable after store creation. Requests are rejected if they contain FHIR resources of a different version. Version is required for every FHIR store."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1:Hl7V2Store": {
      "description": "Creates a new HL7v2 store within the parent dataset.",
      "properties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hl7V2StoreId": {
          "type": "string",
          "description": "The ID of the HL7v2 store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the HL7v2 store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7v2_store_id}`."
        },
        "notificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Hl7V2NotificationConfigResponse"
          },
          "description": "A list of notification configs. Each configuration uses a filter to determine whether to publish a message (both Ingest & Create) on the corresponding notification destination. Only the message name is sent as part of the notification. Supplied by the client."
        },
        "parserConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ParserConfigResponse",
          "description": "The configuration for the parser. It determines how the server parses the messages."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rejectDuplicateMessage": {
          "type": "boolean",
          "description": "Determines whether to reject duplicate messages. A duplicate message is a message with the same raw bytes as a message that has already been ingested/created in this HL7v2 store. The default value is false, meaning that the store accepts the duplicate messages and it also returns the same ACK message in the IngestMessageResponse as has been returned previously. Note that only one resource is created in the store. When this field is set to true, CreateMessage/IngestMessage requests with a duplicate message will be rejected by the store, and IngestMessageErrorDetail returns a NACK message upon rejection."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "labels",
        "location",
        "name",
        "notificationConfigs",
        "parserConfig",
        "project",
        "rejectDuplicateMessage"
      ],
      "inputProperties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hl7V2StoreId": {
          "type": "string",
          "description": "The ID of the HL7v2 store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the HL7v2 store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7v2_store_id}`."
        },
        "notificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Hl7V2NotificationConfig"
          },
          "description": "A list of notification configs. Each configuration uses a filter to determine whether to publish a message (both Ingest & Create) on the corresponding notification destination. Only the message name is sent as part of the notification. Supplied by the client."
        },
        "parserConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ParserConfig",
          "description": "The configuration for the parser. It determines how the server parses the messages."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rejectDuplicateMessage": {
          "type": "boolean",
          "description": "Determines whether to reject duplicate messages. A duplicate message is a message with the same raw bytes as a message that has already been ingested/created in this HL7v2 store. The default value is false, meaning that the store accepts the duplicate messages and it also returns the same ACK message in the IngestMessageResponse as has been returned previously. Note that only one resource is created in the store. When this field is set to true, CreateMessage/IngestMessage requests with a duplicate message will be rejected by the store, and IngestMessageErrorDetail returns a NACK message upon rejection."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1:Message": {
      "description": "Parses and stores an HL7v2 message. This method triggers an asynchronous notification to any Pub/Sub topic configured in Hl7V2Store.Hl7V2NotificationConfig, if the filtering matches the message. If an MLLP adapter is configured to listen to a Pub/Sub topic, the adapter transmits the message when a notification is received.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The datetime when the message was created. Set by the server."
        },
        "data": {
          "type": "string",
          "description": "Raw message bytes."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hl7V2StoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messageType": {
          "type": "string",
          "description": "The message type for this message. MSH-9.1."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Message, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7_v2_store_id}/messages/{message_id}`. Assigned by the server."
        },
        "parsedData": {
          "$ref": "#/types/google-native:healthcare%2Fv1:ParsedDataResponse",
          "description": "The parsed version of the raw message data."
        },
        "patientIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:PatientIdResponse"
          },
          "description": "All patient IDs listed in the PID-2, PID-3, and PID-4 segments of this message."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schematizedData": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchematizedDataResponse",
          "description": "The parsed version of the raw message data schematized according to this store's schemas and type definitions."
        },
        "sendFacility": {
          "type": "string",
          "description": "The hospital that this message came from. MSH-4."
        },
        "sendTime": {
          "type": "string",
          "description": "The datetime the sending application sent this message. MSH-7."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "data",
        "datasetId",
        "hl7V2StoreId",
        "labels",
        "location",
        "messageType",
        "name",
        "parsedData",
        "patientIds",
        "project",
        "schematizedData",
        "sendFacility",
        "sendTime"
      ],
      "inputProperties": {
        "data": {
          "type": "string",
          "description": "Raw message bytes."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hl7V2StoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messageType": {
          "type": "string",
          "description": "The message type for this message. MSH-9.1."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Message, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7_v2_store_id}/messages/{message_id}`. Assigned by the server."
        },
        "patientIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:PatientId"
          },
          "description": "All patient IDs listed in the PID-2, PID-3, and PID-4 segments of this message."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schematizedData": {
          "$ref": "#/types/google-native:healthcare%2Fv1:SchematizedData",
          "description": "The parsed version of the raw message data schematized according to this store's schemas and type definitions."
        },
        "sendFacility": {
          "type": "string",
          "description": "The hospital that this message came from. MSH-4."
        },
        "sendTime": {
          "type": "string",
          "description": "The datetime the sending application sent this message. MSH-7."
        }
      },
      "requiredInputs": [
        "datasetId",
        "hl7V2StoreId"
      ]
    },
    "google-native:healthcare/v1:UserDataMapping": {
      "description": "Creates a new User data mapping in the parent consent store.",
      "properties": {
        "archiveTime": {
          "type": "string",
          "description": "Indicates the time when this mapping was archived."
        },
        "archived": {
          "type": "boolean",
          "description": "Indicates whether this mapping is archived."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataId": {
          "type": "string",
          "description": "A unique identifier for the mapped resource."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the User data mapping, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/userDataMappings/{user_data_mapping_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:AttributeResponse"
          },
          "description": "Attributes of the resource. Only explicitly set attributes are displayed here. Attribute definitions with defaults set implicitly apply to these User data mappings. Attributes listed here must be single valued, that is, exactly one value is specified for the field \"values\" in each Attribute."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "type": "object",
      "required": [
        "archiveTime",
        "archived",
        "consentStoreId",
        "dataId",
        "datasetId",
        "location",
        "name",
        "project",
        "resourceAttributes",
        "userId"
      ],
      "inputProperties": {
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataId": {
          "type": "string",
          "description": "A unique identifier for the mapped resource."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the User data mapping, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/userDataMappings/{user_data_mapping_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1:Attribute"
          },
          "description": "Attributes of the resource. Only explicitly set attributes are displayed here. Attribute definitions with defaults set implicitly apply to these User data mappings. Attributes listed here must be single valued, that is, exactly one value is specified for the field \"values\" in each Attribute."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "requiredInputs": [
        "consentStoreId",
        "dataId",
        "datasetId",
        "userId"
      ]
    },
    "google-native:healthcare/v1beta1:Annotation": {
      "description": "Creates a new Annotation record. It is valid to create Annotation objects for the same source more than once since a unique ID is assigned to each record by this service.",
      "properties": {
        "annotationSource": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AnnotationSourceResponse",
          "description": "Details of the source."
        },
        "annotationStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional information for this annotation record, such as annotator and verifier information or study campaign."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "imageAnnotation": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageAnnotationResponse",
          "description": "Annotations for images. For example, bounding polygons."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceAnnotation": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ResourceAnnotationResponse",
          "description": "Annotations for resource. For example, classification tags."
        },
        "textAnnotation": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SensitiveTextAnnotationResponse",
          "description": "Annotations for sensitive texts. For example, a range that describes the location of sensitive text."
        }
      },
      "type": "object",
      "required": [
        "annotationSource",
        "annotationStoreId",
        "customData",
        "datasetId",
        "imageAnnotation",
        "location",
        "name",
        "project",
        "resourceAnnotation",
        "textAnnotation"
      ],
      "inputProperties": {
        "annotationSource": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AnnotationSource",
          "description": "Details of the source."
        },
        "annotationStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customData": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional information for this annotation record, such as annotator and verifier information or study campaign."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "imageAnnotation": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageAnnotation",
          "description": "Annotations for images. For example, bounding polygons."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceAnnotation": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ResourceAnnotation",
          "description": "Annotations for resource. For example, classification tags."
        },
        "textAnnotation": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SensitiveTextAnnotation",
          "description": "Annotations for sensitive texts. For example, a range that describes the location of sensitive text."
        }
      },
      "requiredInputs": [
        "annotationStoreId",
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:AnnotationStore": {
      "description": "Creates a new Annotation store within the parent dataset.",
      "properties": {
        "annotationStoreId": {
          "type": "string",
          "description": "The ID of the Annotation store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize Annotation stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Annotation store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "labels",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "annotationStoreId": {
          "type": "string",
          "description": "The ID of the Annotation store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize Annotation stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Annotation store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:AttributeDefinition": {
      "description": "Creates a new Attribute definition in the parent consent store.",
      "properties": {
        "allowedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Possible values for the attribute. The number of allowed values must not exceed 500. An empty list is invalid. The list can only be expanded after creation."
        },
        "attributeDefinitionId": {
          "type": "string",
          "description": "Required. The ID of the Attribute definition to create. The string must match the following regex: `_a-zA-Z{0,255}` and must not be a reserved keyword within the Common Expression Language as listed on https://github.com/google/cel-spec/blob/master/doc/langdef.md.",
          "replaceOnChanges": true
        },
        "category": {
          "type": "string",
          "description": "The category of the attribute. The value of this field cannot be changed after creation."
        },
        "consentDefaultValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Default values of the attribute in Consents. If no default values are specified, it defaults to an empty value."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataMappingDefaultValue": {
          "type": "string",
          "description": "Optional. Default value of the attribute in User data mappings. If no default value is specified, it defaults to an empty value. This field is only applicable to attributes of the category `RESOURCE`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of the attribute."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Attribute definition, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/attributeDefinitions/{attribute_definition_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "allowedValues",
        "attributeDefinitionId",
        "category",
        "consentDefaultValues",
        "consentStoreId",
        "dataMappingDefaultValue",
        "datasetId",
        "description",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "allowedValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Possible values for the attribute. The number of allowed values must not exceed 500. An empty list is invalid. The list can only be expanded after creation."
        },
        "attributeDefinitionId": {
          "type": "string",
          "description": "Required. The ID of the Attribute definition to create. The string must match the following regex: `_a-zA-Z{0,255}` and must not be a reserved keyword within the Common Expression Language as listed on https://github.com/google/cel-spec/blob/master/doc/langdef.md.",
          "replaceOnChanges": true
        },
        "category": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:AttributeDefinitionCategory",
          "description": "The category of the attribute. The value of this field cannot be changed after creation."
        },
        "consentDefaultValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Default values of the attribute in Consents. If no default values are specified, it defaults to an empty value."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataMappingDefaultValue": {
          "type": "string",
          "description": "Optional. Default value of the attribute in User data mappings. If no default value is specified, it defaults to an empty value. This field is only applicable to attributes of the category `RESOURCE`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of the attribute."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Attribute definition, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/attributeDefinitions/{attribute_definition_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "allowedValues",
        "attributeDefinitionId",
        "category",
        "consentStoreId",
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:Consent": {
      "description": "Creates a new Consent in the parent consent store.",
      "properties": {
        "consentArtifact": {
          "type": "string",
          "description": "The resource name of the Consent artifact that contains proof of the end user's consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "expireTime": {
          "type": "string",
          "description": "Timestamp in UTC of when this Consent is considered expired."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize Consent resources. Metadata keys must: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - begin with a letter - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes Metadata values must be: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes No more than 64 metadata entries can be associated with a given consent."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consents/{consent_id}`. Cannot be changed after creation."
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1ConsentPolicyResponse"
          },
          "description": "Optional. Represents a user's consent in terms of the resources that can be accessed and under what conditions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp that the revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "The revision ID of the Consent. The format is an 8-character hexadecimal string. Refer to a specific revision of a Consent by appending `@{revision_id}` to the Consent's resource name."
        },
        "state": {
          "type": "string",
          "description": "Indicates the current state of this Consent."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The time to live for this Consent from when it is created."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "type": "object",
      "required": [
        "consentArtifact",
        "consentStoreId",
        "datasetId",
        "expireTime",
        "location",
        "metadata",
        "name",
        "policies",
        "project",
        "revisionCreateTime",
        "revisionId",
        "state",
        "ttl",
        "userId"
      ],
      "inputProperties": {
        "consentArtifact": {
          "type": "string",
          "description": "The resource name of the Consent artifact that contains proof of the end user's consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "expireTime": {
          "type": "string",
          "description": "Timestamp in UTC of when this Consent is considered expired."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize Consent resources. Metadata keys must: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - begin with a letter - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes Metadata values must be: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes No more than 64 metadata entries can be associated with a given consent."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consents/{consent_id}`. Cannot be changed after creation."
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1ConsentPolicy"
          },
          "description": "Optional. Represents a user's consent in terms of the resources that can be accessed and under what conditions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ConsentState",
          "description": "Indicates the current state of this Consent."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The time to live for this Consent from when it is created."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "requiredInputs": [
        "consentArtifact",
        "consentStoreId",
        "datasetId",
        "state",
        "userId"
      ]
    },
    "google-native:healthcare/v1beta1:ConsentArtifact": {
      "description": "Creates a new Consent artifact in the parent consent store.",
      "properties": {
        "consentContentScreenshots": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageResponse"
          },
          "description": "Optional. Screenshots, PDFs, or other binary information documenting the user's consent."
        },
        "consentContentVersion": {
          "type": "string",
          "description": "Optional. An string indicating the version of the consent information shown to the user."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "guardianSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SignatureResponse",
          "description": "Optional. A signature from a guardian."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata associated with the Consent artifact. For example, the consent locale or user agent version."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Consent artifact, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        },
        "userSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SignatureResponse",
          "description": "Optional. User's signature."
        },
        "witnessSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SignatureResponse",
          "description": "Optional. A signature from a witness."
        }
      },
      "type": "object",
      "required": [
        "consentContentScreenshots",
        "consentContentVersion",
        "consentStoreId",
        "datasetId",
        "guardianSignature",
        "location",
        "metadata",
        "name",
        "project",
        "userId",
        "userSignature",
        "witnessSignature"
      ],
      "inputProperties": {
        "consentContentScreenshots": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Image"
          },
          "description": "Optional. Screenshots, PDFs, or other binary information documenting the user's consent."
        },
        "consentContentVersion": {
          "type": "string",
          "description": "Optional. An string indicating the version of the consent information shown to the user."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "guardianSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:Signature",
          "description": "Optional. A signature from a guardian."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata associated with the Consent artifact. For example, the consent locale or user agent version."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Consent artifact, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        },
        "userSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:Signature",
          "description": "Optional. User's signature."
        },
        "witnessSignature": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:Signature",
          "description": "Optional. A signature from a witness."
        }
      },
      "requiredInputs": [
        "consentStoreId",
        "datasetId",
        "userId"
      ]
    },
    "google-native:healthcare/v1beta1:ConsentStore": {
      "description": "Creates a new consent store in the parent dataset. Attempting to create a consent store with the same ID as an existing store fails with an ALREADY_EXISTS error.",
      "properties": {
        "consentStoreId": {
          "type": "string",
          "description": "Required. The ID of the consent store to create. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`. Cannot be changed after creation.",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultConsentTtl": {
          "type": "string",
          "description": "Optional. Default time to live for Consents created in this store. Must be at least 24 hours. Updating this field will not affect the expiration time of existing consents."
        },
        "enableConsentCreateOnUpdate": {
          "type": "boolean",
          "description": "Optional. If `true`, UpdateConsent creates the Consent if it does not already exist. If unspecified, defaults to `false`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize consent stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}. Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}. No more than 64 labels can be associated with a given store. For more information: https://cloud.google.com/healthcare/docs/how-tos/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the consent store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "consentStoreId",
        "datasetId",
        "defaultConsentTtl",
        "enableConsentCreateOnUpdate",
        "labels",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "consentStoreId": {
          "type": "string",
          "description": "Required. The ID of the consent store to create. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`. Cannot be changed after creation.",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultConsentTtl": {
          "type": "string",
          "description": "Optional. Default time to live for Consents created in this store. Must be at least 24 hours. Updating this field will not affect the expiration time of existing consents."
        },
        "enableConsentCreateOnUpdate": {
          "type": "boolean",
          "description": "Optional. If `true`, UpdateConsent creates the Consent if it does not already exist. If unspecified, defaults to `false`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-supplied key-value pairs used to organize consent stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}. Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}. No more than 64 labels can be associated with a given store. For more information: https://cloud.google.com/healthcare/docs/how-tos/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the consent store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}`. Cannot be changed after creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "consentStoreId",
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:Dataset": {
      "description": "Creates a new health dataset. Results are returned through the Operation interface which returns either an `Operation.response` which contains a Dataset or `Operation.error`. The metadata field type is OperationMetadata.",
      "properties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the dataset, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeZone": {
          "type": "string",
          "description": "The default timezone used by this dataset. Must be a either a valid IANA time zone name such as \"America/New_York\" or empty, which defaults to UTC. This is used for parsing times in resources, such as HL7 messages, where no explicit timezone is specified."
        }
      },
      "type": "object",
      "required": [
        "location",
        "name",
        "project",
        "timeZone"
      ],
      "inputProperties": {
        "datasetId": {
          "type": "string",
          "description": "The ID of the dataset that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the dataset, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeZone": {
          "type": "string",
          "description": "The default timezone used by this dataset. Must be a either a valid IANA time zone name such as \"America/New_York\" or empty, which defaults to UTC. This is used for parsing times in resources, such as HL7 messages, where no explicit timezone is specified."
        }
      }
    },
    "google-native:healthcare/v1beta1:DatasetAnnotationStoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetAnnotationStoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetAnnotationStoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "annotationStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "annotationStoreId",
        "auditConfigs",
        "bindings",
        "datasetId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "annotationStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "annotationStoreId",
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetConsentStoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetConsentStoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetConsentStoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "consentStoreId",
        "datasetId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "consentStoreId",
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetDicomStoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetDicomStoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetDicomStoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dicomStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "dicomStoreId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dicomStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId",
        "dicomStoreId"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetFhirStoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetFhirStoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetFhirStoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "fhirStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "etag",
        "fhirStoreId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "fhirStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId",
        "fhirStoreId"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetHl7V2StoreIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetHl7V2StoreIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetHl7V2StoreIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hl7V2StoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "etag",
        "hl7V2StoreId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hl7V2StoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId",
        "hl7V2StoreId"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:healthcare/v1beta1:DatasetIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "datasetId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:DicomStore": {
      "description": "Creates a new DICOM store within the parent dataset.",
      "properties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dicomStoreId": {
          "type": "string",
          "description": "The ID of the DICOM store that is being created. Any string value up to 256 characters in length."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize DICOM stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the DICOM store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/dicomStores/{dicom_store_id}`."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfigResponse",
          "description": "Notification destination for new DICOM instances. Supplied by the client."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "streamConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DicomStreamConfigResponse"
          },
          "description": "Optional. A list of streaming configs used to configure the destination of streaming exports for every DICOM instance insertion in this DICOM store. After a new config is added to `stream_configs`, DICOM instance insertions are streamed to the new destination. When a config is removed from `stream_configs`, the server stops streaming to that destination. Each config must contain a unique destination."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "labels",
        "location",
        "name",
        "notificationConfig",
        "project",
        "streamConfigs"
      ],
      "inputProperties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dicomStoreId": {
          "type": "string",
          "description": "The ID of the DICOM store that is being created. Any string value up to 256 characters in length."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize DICOM stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the DICOM store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/dicomStores/{dicom_store_id}`."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfig",
          "description": "Notification destination for new DICOM instances. Supplied by the client."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "streamConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DicomStreamConfig"
          },
          "description": "Optional. A list of streaming configs used to configure the destination of streaming exports for every DICOM instance insertion in this DICOM store. After a new config is added to `stream_configs`, DICOM instance insertions are streamed to the new destination. When a config is removed from `stream_configs`, the server stops streaming to that destination. Each config must contain a unique destination."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:FhirStore": {
      "description": "Creates a new FHIR store within the parent dataset.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "complexDataTypeReferenceParsing": {
          "type": "string",
          "description": "Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources."
        },
        "consentConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ConsentConfigResponse",
          "description": "Optional. Specifies whether this store has consent enforcement. Not available for DSTU2 FHIR version due to absence of Consent resources."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultSearchHandlingStrict": {
          "type": "boolean",
          "description": "If true, overrides the default search behavior for this FHIR store to `handling=strict` which returns an error for unrecognized search parameters. If false, uses the FHIR specification default `handling=lenient` which ignores unrecognized search parameters. The handling can always be changed from the default on an individual API call by setting the HTTP header `Prefer: handling=strict` or `Prefer: handling=lenient`."
        },
        "disableReferentialIntegrity": {
          "type": "boolean",
          "description": "Immutable. Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API enforces referential integrity and fails the requests that result in inconsistent state in the FHIR store. When this field is set to true, the API skips referential integrity checks. Consequently, operations that rely on references, such as GetPatientEverything, do not return all the results if broken references exist."
        },
        "disableResourceVersioning": {
          "type": "boolean",
          "description": "Immutable. Whether to disable resource versioning for this FHIR store. This field can not be changed after the creation of FHIR store. If set to false, which is the default behavior, all write operations cause historical versions to be recorded automatically. The historical versions can be fetched through the history APIs, but cannot be updated. If set to true, no historical versions are kept. The server sends errors for attempts to read the historical versions."
        },
        "enableUpdateCreate": {
          "type": "boolean",
          "description": "Whether this FHIR store has the [updateCreate capability](https://www.hl7.org/fhir/capabilitystatement-definitions.html#CapabilityStatement.rest.resource.updateCreate). This determines if the client can use an Update operation to create a new resource with a client-specified ID. If false, all IDs are server-assigned through the Create operation and attempts to update a non-existent resource return errors. It is strongly advised not to include or encode any sensitive data such as patient identifiers in client-specified resource IDs. Those IDs are part of the FHIR resource path recorded in Cloud audit logs and Pub/Sub notifications. Those IDs can also be contained in reference fields within other resources."
        },
        "fhirStoreId": {
          "type": "string",
          "description": "The ID of the FHIR store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize FHIR stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the FHIR store, of the form `projects/{project_id}/datasets/{dataset_id}/fhirStores/{fhir_store_id}`."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfigResponse",
          "description": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\".",
          "deprecationMessage": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\"."
        },
        "notificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirNotificationConfigResponse"
          },
          "description": "Specifies where and whether to send notifications upon changes to a Fhir store."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "searchConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SearchConfigResponse",
          "description": "Configuration for how FHIR resources can be searched."
        },
        "streamConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:StreamConfigResponse"
          },
          "description": "A list of streaming configs that configure the destinations of streaming export for every resource mutation in this FHIR store. Each store is allowed to have up to 10 streaming configs. After a new config is added, the next resource mutation is streamed to the new location in addition to the existing ones. When a location is removed from the list, the server stops streaming to that location. Before adding a new config, you must add the required [`bigquery.dataEditor`](https://cloud.google.com/bigquery/docs/access-control#bigquery.dataEditor) role to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/iam/docs/service-accounts). Some lag (typically on the order of dozens of seconds) is expected before the results show up in the streaming destination."
        },
        "validationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ValidationConfigResponse",
          "description": "Configuration for how to validate incoming FHIR resources against configured profiles."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The FHIR specification version that this FHIR store supports natively. This field is immutable after store creation. Requests are rejected if they contain FHIR resources of a different version. Version is required for every FHIR store."
        }
      },
      "type": "object",
      "required": [
        "complexDataTypeReferenceParsing",
        "consentConfig",
        "datasetId",
        "defaultSearchHandlingStrict",
        "disableReferentialIntegrity",
        "disableResourceVersioning",
        "enableUpdateCreate",
        "labels",
        "location",
        "name",
        "notificationConfig",
        "notificationConfigs",
        "project",
        "searchConfig",
        "streamConfigs",
        "validationConfig",
        "version"
      ],
      "inputProperties": {
        "complexDataTypeReferenceParsing": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirStoreComplexDataTypeReferenceParsing",
          "description": "Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources."
        },
        "consentConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ConsentConfig",
          "description": "Optional. Specifies whether this store has consent enforcement. Not available for DSTU2 FHIR version due to absence of Consent resources."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "defaultSearchHandlingStrict": {
          "type": "boolean",
          "description": "If true, overrides the default search behavior for this FHIR store to `handling=strict` which returns an error for unrecognized search parameters. If false, uses the FHIR specification default `handling=lenient` which ignores unrecognized search parameters. The handling can always be changed from the default on an individual API call by setting the HTTP header `Prefer: handling=strict` or `Prefer: handling=lenient`."
        },
        "disableReferentialIntegrity": {
          "type": "boolean",
          "description": "Immutable. Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API enforces referential integrity and fails the requests that result in inconsistent state in the FHIR store. When this field is set to true, the API skips referential integrity checks. Consequently, operations that rely on references, such as GetPatientEverything, do not return all the results if broken references exist."
        },
        "disableResourceVersioning": {
          "type": "boolean",
          "description": "Immutable. Whether to disable resource versioning for this FHIR store. This field can not be changed after the creation of FHIR store. If set to false, which is the default behavior, all write operations cause historical versions to be recorded automatically. The historical versions can be fetched through the history APIs, but cannot be updated. If set to true, no historical versions are kept. The server sends errors for attempts to read the historical versions."
        },
        "enableUpdateCreate": {
          "type": "boolean",
          "description": "Whether this FHIR store has the [updateCreate capability](https://www.hl7.org/fhir/capabilitystatement-definitions.html#CapabilityStatement.rest.resource.updateCreate). This determines if the client can use an Update operation to create a new resource with a client-specified ID. If false, all IDs are server-assigned through the Create operation and attempts to update a non-existent resource return errors. It is strongly advised not to include or encode any sensitive data such as patient identifiers in client-specified resource IDs. Those IDs are part of the FHIR resource path recorded in Cloud audit logs and Pub/Sub notifications. Those IDs can also be contained in reference fields within other resources."
        },
        "fhirStoreId": {
          "type": "string",
          "description": "The ID of the FHIR store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize FHIR stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfig",
          "description": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\".",
          "deprecationMessage": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\"."
        },
        "notificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirNotificationConfig"
          },
          "description": "Specifies where and whether to send notifications upon changes to a Fhir store."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "searchConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SearchConfig",
          "description": "Configuration for how FHIR resources can be searched."
        },
        "streamConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:StreamConfig"
          },
          "description": "A list of streaming configs that configure the destinations of streaming export for every resource mutation in this FHIR store. Each store is allowed to have up to 10 streaming configs. After a new config is added, the next resource mutation is streamed to the new location in addition to the existing ones. When a location is removed from the list, the server stops streaming to that location. Before adding a new config, you must add the required [`bigquery.dataEditor`](https://cloud.google.com/bigquery/docs/access-control#bigquery.dataEditor) role to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/iam/docs/service-accounts). Some lag (typically on the order of dozens of seconds) is expected before the results show up in the streaming destination."
        },
        "validationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ValidationConfig",
          "description": "Configuration for how to validate incoming FHIR resources against configured profiles."
        },
        "version": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirStoreVersion",
          "description": "Immutable. The FHIR specification version that this FHIR store supports natively. This field is immutable after store creation. Requests are rejected if they contain FHIR resources of a different version. Version is required for every FHIR store."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:Hl7V2Store": {
      "description": "Creates a new HL7v2 store within the parent dataset.",
      "properties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hl7V2StoreId": {
          "type": "string",
          "description": "The ID of the HL7v2 store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the HL7v2 store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7v2_store_id}`."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfigResponse",
          "description": "The notification destination all messages (both Ingest & Create) are published on. Only the message name is sent as part of the notification. If this is unset, no notifications are sent. Supplied by the client."
        },
        "notificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Hl7V2NotificationConfigResponse"
          },
          "description": "A list of notification configs. Each configuration uses a filter to determine whether to publish a message (both Ingest & Create) on the corresponding notification destination. Only the message name is sent as part of the notification. Supplied by the client."
        },
        "parserConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ParserConfigResponse",
          "description": "The configuration for the parser. It determines how the server parses the messages."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rejectDuplicateMessage": {
          "type": "boolean",
          "description": "Determines whether to reject duplicate messages. A duplicate message is a message with the same raw bytes as a message that has already been ingested/created in this HL7v2 store. The default value is false, meaning that the store accepts the duplicate messages and it also returns the same ACK message in the IngestMessageResponse as has been returned previously. Note that only one resource is created in the store. When this field is set to true, CreateMessage/IngestMessage requests with a duplicate message will be rejected by the store, and IngestMessageErrorDetail returns a NACK message upon rejection."
        }
      },
      "type": "object",
      "required": [
        "datasetId",
        "labels",
        "location",
        "name",
        "notificationConfig",
        "notificationConfigs",
        "parserConfig",
        "project",
        "rejectDuplicateMessage"
      ],
      "inputProperties": {
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hl7V2StoreId": {
          "type": "string",
          "description": "The ID of the HL7v2 store that is being created. The string must match the following regex: `[\\p{L}\\p{N}_\\-\\.]{1,256}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the HL7v2 store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7v2_store_id}`."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfig",
          "description": "The notification destination all messages (both Ingest & Create) are published on. Only the message name is sent as part of the notification. If this is unset, no notifications are sent. Supplied by the client."
        },
        "notificationConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Hl7V2NotificationConfig"
          },
          "description": "A list of notification configs. Each configuration uses a filter to determine whether to publish a message (both Ingest & Create) on the corresponding notification destination. Only the message name is sent as part of the notification. Supplied by the client."
        },
        "parserConfig": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ParserConfig",
          "description": "The configuration for the parser. It determines how the server parses the messages."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rejectDuplicateMessage": {
          "type": "boolean",
          "description": "Determines whether to reject duplicate messages. A duplicate message is a message with the same raw bytes as a message that has already been ingested/created in this HL7v2 store. The default value is false, meaning that the store accepts the duplicate messages and it also returns the same ACK message in the IngestMessageResponse as has been returned previously. Note that only one resource is created in the store. When this field is set to true, CreateMessage/IngestMessage requests with a duplicate message will be rejected by the store, and IngestMessageErrorDetail returns a NACK message upon rejection."
        }
      },
      "requiredInputs": [
        "datasetId"
      ]
    },
    "google-native:healthcare/v1beta1:Message": {
      "description": "Parses and stores an HL7v2 message. This method triggers an asynchronous notification to any Pub/Sub topic configured in Hl7V2Store.Hl7V2NotificationConfig, if the filtering matches the message. If an MLLP adapter is configured to listen to a Pub/Sub topic, the adapter transmits the message when a notification is received.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The datetime when the message was created. Set by the server."
        },
        "data": {
          "type": "string",
          "description": "Raw message bytes."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hl7V2StoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messageType": {
          "type": "string",
          "description": "The message type for this message. MSH-9.1."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Message, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7_v2_store_id}/messages/{message_id}`. Assigned by the server."
        },
        "parsedData": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:ParsedDataResponse",
          "description": "The parsed version of the raw message data."
        },
        "patientIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:PatientIdResponse"
          },
          "description": "All patient IDs listed in the PID-2, PID-3, and PID-4 segments of this message."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schematizedData": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchematizedDataResponse",
          "description": "The parsed version of the raw message data schematized according to this store's schemas and type definitions."
        },
        "sendFacility": {
          "type": "string",
          "description": "The hospital that this message came from. MSH-4."
        },
        "sendTime": {
          "type": "string",
          "description": "The datetime the sending application sent this message. MSH-7."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "data",
        "datasetId",
        "hl7V2StoreId",
        "labels",
        "location",
        "messageType",
        "name",
        "parsedData",
        "patientIds",
        "project",
        "schematizedData",
        "sendFacility",
        "sendTime"
      ],
      "inputProperties": {
        "data": {
          "type": "string",
          "description": "Raw message bytes."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hl7V2StoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "messageType": {
          "type": "string",
          "description": "The message type for this message. MSH-9.1."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the Message, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7_v2_store_id}/messages/{message_id}`. Assigned by the server."
        },
        "patientIds": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:PatientId"
          },
          "description": "All patient IDs listed in the PID-2, PID-3, and PID-4 segments of this message."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schematizedData": {
          "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchematizedData",
          "description": "The parsed version of the raw message data schematized according to this store's schemas and type definitions."
        },
        "sendFacility": {
          "type": "string",
          "description": "The hospital that this message came from. MSH-4."
        },
        "sendTime": {
          "type": "string",
          "description": "The datetime the sending application sent this message. MSH-7."
        }
      },
      "requiredInputs": [
        "datasetId",
        "hl7V2StoreId"
      ]
    },
    "google-native:healthcare/v1beta1:UserDataMapping": {
      "description": "Creates a new User data mapping in the parent consent store.",
      "properties": {
        "archiveTime": {
          "type": "string",
          "description": "Indicates the time when this mapping was archived."
        },
        "archived": {
          "type": "boolean",
          "description": "Indicates whether this mapping is archived."
        },
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataId": {
          "type": "string",
          "description": "A unique identifier for the mapped resource."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the User data mapping, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/userDataMappings/{user_data_mapping_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AttributeResponse"
          },
          "description": "Attributes of the resource. Only explicitly set attributes are displayed here. Attribute definitions with defaults set implicitly apply to these User data mappings. Attributes listed here must be single valued, that is, exactly one value is specified for the field \"values\" in each Attribute."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "type": "object",
      "required": [
        "archiveTime",
        "archived",
        "consentStoreId",
        "dataId",
        "datasetId",
        "location",
        "name",
        "project",
        "resourceAttributes",
        "userId"
      ],
      "inputProperties": {
        "consentStoreId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "dataId": {
          "type": "string",
          "description": "A unique identifier for the mapped resource."
        },
        "datasetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the User data mapping, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/userDataMappings/{user_data_mapping_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceAttributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:Attribute"
          },
          "description": "Attributes of the resource. Only explicitly set attributes are displayed here. Attribute definitions with defaults set implicitly apply to these User data mappings. Attributes listed here must be single valued, that is, exactly one value is specified for the field \"values\" in each Attribute."
        },
        "userId": {
          "type": "string",
          "description": "User's UUID provided by the client."
        }
      },
      "requiredInputs": [
        "consentStoreId",
        "dataId",
        "datasetId",
        "userId"
      ]
    },
    "google-native:iam/v1:Key": {
      "description": "Creates a ServiceAccountKey.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": "The key status."
        },
        "keyAlgorithm": {
          "type": "string",
          "description": "Specifies the algorithm (and possibly key size) for the key."
        },
        "keyOrigin": {
          "type": "string",
          "description": "The key origin."
        },
        "keyType": {
          "type": "string",
          "description": "The key type."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the service account key in the following format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}`."
        },
        "privateKeyData": {
          "type": "string",
          "description": "The private key data. Only provided in `CreateServiceAccountKey` responses. Make sure to keep the private key data secure because it allows for the assertion of the service account identity. When base64 decoded, the private key data can be used to authenticate with Google API client libraries and with gcloud auth activate-service-account."
        },
        "privateKeyType": {
          "type": "string",
          "description": "The output format for the private key. Only provided in `CreateServiceAccountKey` responses, not in `GetServiceAccountKey` or `ListServiceAccountKey` responses. Google never exposes system-managed private keys, and never retains user-managed private keys."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicKeyData": {
          "type": "string",
          "description": "The public key data. Only provided in `GetServiceAccountKey` responses."
        },
        "serviceAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "validAfterTime": {
          "type": "string",
          "description": "The key can be used after this timestamp."
        },
        "validBeforeTime": {
          "type": "string",
          "description": "The key can be used before this timestamp. For system-managed key pairs, this timestamp is the end time for the private key signing operation. The public key could still be used for verification for a few hours after this time."
        }
      },
      "type": "object",
      "required": [
        "disabled",
        "keyAlgorithm",
        "keyOrigin",
        "keyType",
        "name",
        "privateKeyData",
        "privateKeyType",
        "project",
        "publicKeyData",
        "serviceAccountId",
        "validAfterTime",
        "validBeforeTime"
      ],
      "inputProperties": {
        "keyAlgorithm": {
          "$ref": "#/types/google-native:iam%2Fv1:KeyKeyAlgorithm",
          "description": "Which type of key and algorithm to use for the key. The default is currently a 2K RSA key. However this may change in the future."
        },
        "privateKeyType": {
          "$ref": "#/types/google-native:iam%2Fv1:KeyPrivateKeyType",
          "description": "The output format of the private key. The default value is `TYPE_GOOGLE_CREDENTIALS_FILE`, which is the Google Credentials File format."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccountId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "serviceAccountId"
      ]
    },
    "google-native:iam/v1:OrganizationRole": {
      "description": "Creates a new custom Role.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "The current deleted state of the role. This field is read only. It will be ignored in calls to CreateRole and UpdateRole."
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description for the role."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write."
        },
        "includedPermissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the permissions this role grants when bound in an IAM policy."
        },
        "name": {
          "type": "string",
          "description": "The name of the role. When `Role` is used in `CreateRole`, the role name must not be set. When `Role` is used in output and other input such as `UpdateRole`, the role name is the complete path. For example, `roles/logging.viewer` for predefined roles, `organizations/{ORGANIZATION_ID}/roles/my-role` for organization-level custom roles, and `projects/{PROJECT_ID}/roles/my-role` for project-level custom roles."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "stage": {
          "type": "string",
          "description": "The current launch stage of the role. If the `ALPHA` launch stage has been selected for a role, the `stage` field will not be included in the returned definition for the role."
        },
        "title": {
          "type": "string",
          "description": "Optional. A human-readable title for the role. Typically this is limited to 100 UTF-8 bytes."
        }
      },
      "type": "object",
      "required": [
        "deleted",
        "description",
        "etag",
        "includedPermissions",
        "name",
        "organizationId",
        "stage",
        "title"
      ],
      "inputProperties": {
        "deleted": {
          "type": "boolean",
          "description": "The current deleted state of the role. This field is read only. It will be ignored in calls to CreateRole and UpdateRole."
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description for the role."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write."
        },
        "includedPermissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the permissions this role grants when bound in an IAM policy."
        },
        "name": {
          "type": "string",
          "description": "The name of the role. When `Role` is used in `CreateRole`, the role name must not be set. When `Role` is used in output and other input such as `UpdateRole`, the role name is the complete path. For example, `roles/logging.viewer` for predefined roles, `organizations/{ORGANIZATION_ID}/roles/my-role` for organization-level custom roles, and `projects/{PROJECT_ID}/roles/my-role` for project-level custom roles."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "roleId": {
          "type": "string",
          "description": "The role ID to use for this role. A role ID may contain alphanumeric characters, underscores (`_`), and periods (`.`). It must contain a minimum of 3 characters and a maximum of 64 characters."
        },
        "stage": {
          "$ref": "#/types/google-native:iam%2Fv1:OrganizationRoleStage",
          "description": "The current launch stage of the role. If the `ALPHA` launch stage has been selected for a role, the `stage` field will not be included in the returned definition for the role."
        },
        "title": {
          "type": "string",
          "description": "Optional. A human-readable title for the role. Typically this is limited to 100 UTF-8 bytes."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:iam/v1:Provider": {
      "description": "Creates a new WorkloadIdentityPoolProvider in a WorkloadIdentityPool. You cannot reuse the name of a deleted provider until 30 days after deletion.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attributeCondition": {
          "type": "string",
          "description": "[A Common Expression Language](https://opensource.google/projects/cel) expression, in plain text, to restrict what otherwise valid authentication credentials issued by the provider should not be accepted. The expression must output a boolean representing whether to allow the federation. The following keywords may be referenced in the expressions: * `assertion`: JSON representing the authentication credential issued by the provider. * `google`: The Google attributes mapped from the assertion in the `attribute_mappings`. * `attribute`: The custom attributes mapped from the assertion in the `attribute_mappings`. The maximum length of the attribute condition expression is 4096 characters. If unspecified, all valid authentication credential are accepted. The following example shows how to only allow credentials with a mapped `google.groups` value of `admins`: ``` \"'admins' in google.groups\" ```"
        },
        "attributeMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": " Maps attributes from authentication credentials issued by an external identity provider to Google Cloud attributes, such as `subject` and `segment`. Each key must be a string specifying the Google Cloud IAM attribute to map to. The following keys are supported: * `google.subject`: The principal IAM is authenticating. You can reference this value in IAM bindings. This is also the subject that appears in Cloud Logging logs. Cannot exceed 127 bytes. * `google.groups`: Groups the external identity belongs to. You can grant groups access to resources using an IAM `principalSet` binding; access applies to all members of the group. You can also provide custom attributes by specifying `attribute.{custom_attribute}`, where `{custom_attribute}` is the name of the custom attribute to be mapped. You can define a maximum of 50 custom attributes. The maximum length of a mapped attribute key is 100 characters, and the key may only contain the characters [a-z0-9_]. You can reference these attributes in IAM policies to define fine-grained access for a workload to Google Cloud resources. For example: * `google.subject`: `principal://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/subject/{value}` * `google.groups`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/group/{value}` * `attribute.{custom_attribute}`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/attribute.{custom_attribute}/{value}` Each value must be a [Common Expression Language] (https://opensource.google/projects/cel) function that maps an identity provider credential to the normalized attribute specified by the corresponding map key. You can use the `assertion` keyword in the expression to access a JSON representation of the authentication credential issued by the provider. The maximum length of an attribute mapping expression is 2048 characters. When evaluated, the total size of all mapped attributes must not exceed 8KB. For AWS providers, if no attribute mapping is defined, the following default mapping applies: ``` { \"google.subject\":\"assertion.arn\", \"attribute.aws_role\": \"assertion.arn.contains('assumed-role')\" \" ? assertion.arn.extract('{account_arn}assumed-role/')\" \" + 'assumed-role/'\" \" + assertion.arn.extract('assumed-role/{role_name}/')\" \" : assertion.arn\", } ``` If any custom attribute mappings are defined, they must include a mapping to the `google.subject` attribute. For OIDC providers, you must supply a custom mapping, which must include the `google.subject` attribute. For example, the following maps the `sub` claim of the incoming credential to the `subject` attribute on a Google token: ``` {\"google.subject\": \"assertion.sub\"} ```"
        },
        "aws": {
          "$ref": "#/types/google-native:iam%2Fv1:AwsResponse",
          "description": "An Amazon Web Services identity provider."
        },
        "description": {
          "type": "string",
          "description": "A description for the provider. Cannot exceed 256 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether the provider is disabled. You cannot use a disabled provider to exchange tokens. However, existing tokens still grant access."
        },
        "displayName": {
          "type": "string",
          "description": "A display name for the provider. Cannot exceed 32 characters."
        },
        "expireTime": {
          "type": "string",
          "description": "Time after which the workload identity pool provider will be permanently purged and cannot be recovered."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the provider."
        },
        "oidc": {
          "$ref": "#/types/google-native:iam%2Fv1:OidcResponse",
          "description": "An OpenId Connect 1.0 identity provider."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "saml": {
          "$ref": "#/types/google-native:iam%2Fv1:SamlResponse",
          "description": "An SAML 2.0 identity provider."
        },
        "state": {
          "type": "string",
          "description": "The state of the provider."
        },
        "workloadIdentityPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workloadIdentityPoolProviderId": {
          "type": "string",
          "description": "Required. The ID for the provider, which becomes the final component of the resource name. This value must be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix `gcp-` is reserved for use by Google, and may not be specified.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "attributeCondition",
        "attributeMapping",
        "aws",
        "description",
        "disabled",
        "displayName",
        "expireTime",
        "location",
        "name",
        "oidc",
        "project",
        "saml",
        "state",
        "workloadIdentityPoolId",
        "workloadIdentityPoolProviderId"
      ],
      "inputProperties": {
        "attributeCondition": {
          "type": "string",
          "description": "[A Common Expression Language](https://opensource.google/projects/cel) expression, in plain text, to restrict what otherwise valid authentication credentials issued by the provider should not be accepted. The expression must output a boolean representing whether to allow the federation. The following keywords may be referenced in the expressions: * `assertion`: JSON representing the authentication credential issued by the provider. * `google`: The Google attributes mapped from the assertion in the `attribute_mappings`. * `attribute`: The custom attributes mapped from the assertion in the `attribute_mappings`. The maximum length of the attribute condition expression is 4096 characters. If unspecified, all valid authentication credential are accepted. The following example shows how to only allow credentials with a mapped `google.groups` value of `admins`: ``` \"'admins' in google.groups\" ```"
        },
        "attributeMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": " Maps attributes from authentication credentials issued by an external identity provider to Google Cloud attributes, such as `subject` and `segment`. Each key must be a string specifying the Google Cloud IAM attribute to map to. The following keys are supported: * `google.subject`: The principal IAM is authenticating. You can reference this value in IAM bindings. This is also the subject that appears in Cloud Logging logs. Cannot exceed 127 bytes. * `google.groups`: Groups the external identity belongs to. You can grant groups access to resources using an IAM `principalSet` binding; access applies to all members of the group. You can also provide custom attributes by specifying `attribute.{custom_attribute}`, where `{custom_attribute}` is the name of the custom attribute to be mapped. You can define a maximum of 50 custom attributes. The maximum length of a mapped attribute key is 100 characters, and the key may only contain the characters [a-z0-9_]. You can reference these attributes in IAM policies to define fine-grained access for a workload to Google Cloud resources. For example: * `google.subject`: `principal://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/subject/{value}` * `google.groups`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/group/{value}` * `attribute.{custom_attribute}`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/attribute.{custom_attribute}/{value}` Each value must be a [Common Expression Language] (https://opensource.google/projects/cel) function that maps an identity provider credential to the normalized attribute specified by the corresponding map key. You can use the `assertion` keyword in the expression to access a JSON representation of the authentication credential issued by the provider. The maximum length of an attribute mapping expression is 2048 characters. When evaluated, the total size of all mapped attributes must not exceed 8KB. For AWS providers, if no attribute mapping is defined, the following default mapping applies: ``` { \"google.subject\":\"assertion.arn\", \"attribute.aws_role\": \"assertion.arn.contains('assumed-role')\" \" ? assertion.arn.extract('{account_arn}assumed-role/')\" \" + 'assumed-role/'\" \" + assertion.arn.extract('assumed-role/{role_name}/')\" \" : assertion.arn\", } ``` If any custom attribute mappings are defined, they must include a mapping to the `google.subject` attribute. For OIDC providers, you must supply a custom mapping, which must include the `google.subject` attribute. For example, the following maps the `sub` claim of the incoming credential to the `subject` attribute on a Google token: ``` {\"google.subject\": \"assertion.sub\"} ```"
        },
        "aws": {
          "$ref": "#/types/google-native:iam%2Fv1:Aws",
          "description": "An Amazon Web Services identity provider."
        },
        "description": {
          "type": "string",
          "description": "A description for the provider. Cannot exceed 256 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether the provider is disabled. You cannot use a disabled provider to exchange tokens. However, existing tokens still grant access."
        },
        "displayName": {
          "type": "string",
          "description": "A display name for the provider. Cannot exceed 32 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "oidc": {
          "$ref": "#/types/google-native:iam%2Fv1:Oidc",
          "description": "An OpenId Connect 1.0 identity provider."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "saml": {
          "$ref": "#/types/google-native:iam%2Fv1:Saml",
          "description": "An SAML 2.0 identity provider."
        },
        "workloadIdentityPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workloadIdentityPoolProviderId": {
          "type": "string",
          "description": "Required. The ID for the provider, which becomes the final component of the resource name. This value must be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix `gcp-` is reserved for use by Google, and may not be specified.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workloadIdentityPoolId",
        "workloadIdentityPoolProviderId"
      ]
    },
    "google-native:iam/v1:Role": {
      "description": "Creates a new custom Role.",
      "properties": {
        "deleted": {
          "type": "boolean",
          "description": "The current deleted state of the role. This field is read only. It will be ignored in calls to CreateRole and UpdateRole."
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description for the role."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write."
        },
        "includedPermissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the permissions this role grants when bound in an IAM policy."
        },
        "name": {
          "type": "string",
          "description": "The name of the role. When `Role` is used in `CreateRole`, the role name must not be set. When `Role` is used in output and other input such as `UpdateRole`, the role name is the complete path. For example, `roles/logging.viewer` for predefined roles, `organizations/{ORGANIZATION_ID}/roles/my-role` for organization-level custom roles, and `projects/{PROJECT_ID}/roles/my-role` for project-level custom roles."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "stage": {
          "type": "string",
          "description": "The current launch stage of the role. If the `ALPHA` launch stage has been selected for a role, the `stage` field will not be included in the returned definition for the role."
        },
        "title": {
          "type": "string",
          "description": "Optional. A human-readable title for the role. Typically this is limited to 100 UTF-8 bytes."
        }
      },
      "type": "object",
      "required": [
        "deleted",
        "description",
        "etag",
        "includedPermissions",
        "name",
        "project",
        "stage",
        "title"
      ],
      "inputProperties": {
        "deleted": {
          "type": "boolean",
          "description": "The current deleted state of the role. This field is read only. It will be ignored in calls to CreateRole and UpdateRole."
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description for the role."
        },
        "etag": {
          "type": "string",
          "description": "Used to perform a consistent read-modify-write."
        },
        "includedPermissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the permissions this role grants when bound in an IAM policy."
        },
        "name": {
          "type": "string",
          "description": "The name of the role. When `Role` is used in `CreateRole`, the role name must not be set. When `Role` is used in output and other input such as `UpdateRole`, the role name is the complete path. For example, `roles/logging.viewer` for predefined roles, `organizations/{ORGANIZATION_ID}/roles/my-role` for organization-level custom roles, and `projects/{PROJECT_ID}/roles/my-role` for project-level custom roles."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "roleId": {
          "type": "string",
          "description": "The role ID to use for this role. A role ID may contain alphanumeric characters, underscores (`_`), and periods (`.`). It must contain a minimum of 3 characters and a maximum of 64 characters."
        },
        "stage": {
          "$ref": "#/types/google-native:iam%2Fv1:RoleStage",
          "description": "The current launch stage of the role. If the `ALPHA` launch stage has been selected for a role, the `stage` field will not be included in the returned definition for the role."
        },
        "title": {
          "type": "string",
          "description": "Optional. A human-readable title for the role. Typically this is limited to 100 UTF-8 bytes."
        }
      }
    },
    "google-native:iam/v1:ServiceAccount": {
      "description": "Creates a ServiceAccount.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Optional. A user-specified, human-readable description of the service account. The maximum length is 256 UTF-8 bytes."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether the service account is disabled."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-specified, human-readable name for the service account. The maximum length is 100 UTF-8 bytes."
        },
        "email": {
          "type": "string",
          "description": "The email address of the service account."
        },
        "etag": {
          "type": "string",
          "description": "Deprecated. Do not use.",
          "deprecationMessage": "Deprecated. Do not use."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the service account. Use one of the following formats: * `projects/{PROJECT_ID}/serviceAccounts/{EMAIL_ADDRESS}` * `projects/{PROJECT_ID}/serviceAccounts/{UNIQUE_ID}` As an alternative, you can use the `-` wildcard character instead of the project ID: * `projects/-/serviceAccounts/{EMAIL_ADDRESS}` * `projects/-/serviceAccounts/{UNIQUE_ID}` When possible, avoid using the `-` wildcard character, because it can cause response messages to contain misleading error codes. For example, if you try to access the service account `projects/-/serviceAccounts/fake@example.com`, which does not exist, the response contains an HTTP `403 Forbidden` error instead of a `404 Not Found` error."
        },
        "oauth2ClientId": {
          "type": "string",
          "description": "The OAuth 2.0 client ID for the service account."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uniqueId": {
          "type": "string",
          "description": "The unique, stable numeric ID for the service account. Each service account retains its unique ID even if you delete the service account. For example, if you delete a service account, then create a new service account with the same name, the new service account has a different unique ID than the deleted service account."
        }
      },
      "type": "object",
      "required": [
        "description",
        "disabled",
        "displayName",
        "email",
        "etag",
        "name",
        "oauth2ClientId",
        "project",
        "uniqueId"
      ],
      "inputProperties": {
        "accountId": {
          "type": "string",
          "description": "The account id that is used to generate the service account email address and a stable unique id. It is unique within a project, must be 6-30 characters long, and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])` to comply with RFC1035."
        },
        "description": {
          "type": "string",
          "description": "Optional. A user-specified, human-readable description of the service account. The maximum length is 256 UTF-8 bytes."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. A user-specified, human-readable name for the service account. The maximum length is 100 UTF-8 bytes."
        },
        "etag": {
          "type": "string",
          "description": "Deprecated. Do not use.",
          "deprecationMessage": "Deprecated. Do not use."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the service account. Use one of the following formats: * `projects/{PROJECT_ID}/serviceAccounts/{EMAIL_ADDRESS}` * `projects/{PROJECT_ID}/serviceAccounts/{UNIQUE_ID}` As an alternative, you can use the `-` wildcard character instead of the project ID: * `projects/-/serviceAccounts/{EMAIL_ADDRESS}` * `projects/-/serviceAccounts/{UNIQUE_ID}` When possible, avoid using the `-` wildcard character, because it can cause response messages to contain misleading error codes. For example, if you try to access the service account `projects/-/serviceAccounts/fake@example.com`, which does not exist, the response contains an HTTP `403 Forbidden` error instead of a `404 Not Found` error."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "accountId"
      ]
    },
    "google-native:iam/v1:ServiceAccountIamBinding": {
      "description": "Sets the IAM policy that is attached to a ServiceAccount. Use this method to grant or revoke access to the service account. For example, you could grant a principal the ability to impersonate the service account. This method does not enable the service account to access other resources. To grant roles to a service account on a resource, follow these steps: 1. Call the resource's `getIamPolicy` method to get its current IAM policy. 2. Edit the policy so that it binds the service account to an IAM role for the resource. 3. Call the resource's `setIamPolicy` method to update its IAM policy. For detailed instructions, see [Manage access to project, folders, and organizations](https://cloud.google.com/iam/help/service-accounts/granting-access-to-service-accounts) or [Manage access to other resources](https://cloud.google.com/iam/help/access/manage-other-resources).",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:iam/v1:ServiceAccountIamMember": {
      "description": "Sets the IAM policy that is attached to a ServiceAccount. Use this method to grant or revoke access to the service account. For example, you could grant a principal the ability to impersonate the service account. This method does not enable the service account to access other resources. To grant roles to a service account on a resource, follow these steps: 1. Call the resource's `getIamPolicy` method to get its current IAM policy. 2. Edit the policy so that it binds the service account to an IAM role for the resource. 3. Call the resource's `setIamPolicy` method to update its IAM policy. For detailed instructions, see [Manage access to project, folders, and organizations](https://cloud.google.com/iam/help/service-accounts/granting-access-to-service-accounts) or [Manage access to other resources](https://cloud.google.com/iam/help/access/manage-other-resources).",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:iam/v1:ServiceAccountIamPolicy": {
      "description": "Sets the IAM policy that is attached to a ServiceAccount. Use this method to grant or revoke access to the service account. For example, you could grant a principal the ability to impersonate the service account. This method does not enable the service account to access other resources. To grant roles to a service account on a resource, follow these steps: 1. Call the resource's `getIamPolicy` method to get its current IAM policy. 2. Edit the policy so that it binds the service account to an IAM role for the resource. 3. Call the resource's `setIamPolicy` method to update its IAM policy. For detailed instructions, see [Manage access to project, folders, and organizations](https://cloud.google.com/iam/help/service-accounts/granting-access-to-service-accounts) or [Manage access to other resources](https://cloud.google.com/iam/help/access/manage-other-resources).\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "serviceAccountId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceAccountId"
      ]
    },
    "google-native:iam/v1:WorkforcePool": {
      "description": "Creates a new WorkforcePool. You cannot reuse the name of a deleted pool until 30 days after deletion.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accessRestrictions": {
          "$ref": "#/types/google-native:iam%2Fv1:AccessRestrictionsResponse",
          "description": "Optional. Configure access restrictions on the workforce pool users. This is an optional field. If specified web sign-in can be restricted to given set of services or programmatic sign-in can be disabled for pool users."
        },
        "description": {
          "type": "string",
          "description": "A user-specified description of the pool. Cannot exceed 256 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Disables the workforce pool. You cannot use a disabled pool to exchange tokens, or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again."
        },
        "displayName": {
          "type": "string",
          "description": "A user-specified display name of the pool in Google Cloud Console. Cannot exceed 32 characters."
        },
        "expireTime": {
          "type": "string",
          "description": "Time after which the workforce pool will be permanently purged and cannot be recovered."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the pool. Format: `locations/{location}/workforcePools/{workforce_pool_id}`"
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the parent. Format: `organizations/{org-id}`."
        },
        "sessionDuration": {
          "type": "string",
          "description": "Duration that the Google Cloud access tokens, console sign-in sessions, and `gcloud` sign-in sessions from this pool are valid. Must be greater than 15 minutes (900s) and less than 12 hours (43200s). If `session_duration` is not configured, minted credentials have a default duration of one hour (3600s). For SAML providers, the lifetime of the token is the minimum of the `session_duration` and the `SessionNotOnOrAfter` claim in the SAML assertion."
        },
        "state": {
          "type": "string",
          "description": "The state of the pool."
        },
        "workforcePoolId": {
          "type": "string",
          "description": "The ID to use for the pool, which becomes the final component of the resource name. The IDs must be a globally unique string of 6 to 63 lowercase letters, digits, or hyphens. It must start with a letter, and cannot have a trailing hyphen. The prefix `gcp-` is reserved for use by Google, and may not be specified."
        }
      },
      "type": "object",
      "required": [
        "accessRestrictions",
        "description",
        "disabled",
        "displayName",
        "expireTime",
        "location",
        "name",
        "parent",
        "sessionDuration",
        "state"
      ],
      "inputProperties": {
        "accessRestrictions": {
          "$ref": "#/types/google-native:iam%2Fv1:AccessRestrictions",
          "description": "Optional. Configure access restrictions on the workforce pool users. This is an optional field. If specified web sign-in can be restricted to given set of services or programmatic sign-in can be disabled for pool users."
        },
        "description": {
          "type": "string",
          "description": "A user-specified description of the pool. Cannot exceed 256 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Disables the workforce pool. You cannot use a disabled pool to exchange tokens, or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again."
        },
        "displayName": {
          "type": "string",
          "description": "A user-specified display name of the pool in Google Cloud Console. Cannot exceed 32 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "parent": {
          "type": "string",
          "description": "Immutable. The resource name of the parent. Format: `organizations/{org-id}`."
        },
        "sessionDuration": {
          "type": "string",
          "description": "Duration that the Google Cloud access tokens, console sign-in sessions, and `gcloud` sign-in sessions from this pool are valid. Must be greater than 15 minutes (900s) and less than 12 hours (43200s). If `session_duration` is not configured, minted credentials have a default duration of one hour (3600s). For SAML providers, the lifetime of the token is the minimum of the `session_duration` and the `SessionNotOnOrAfter` claim in the SAML assertion."
        },
        "workforcePoolId": {
          "type": "string",
          "description": "The ID to use for the pool, which becomes the final component of the resource name. The IDs must be a globally unique string of 6 to 63 lowercase letters, digits, or hyphens. It must start with a letter, and cannot have a trailing hyphen. The prefix `gcp-` is reserved for use by Google, and may not be specified."
        }
      }
    },
    "google-native:iam/v1:WorkforcePoolIamBinding": {
      "description": "Sets IAM policies on a WorkforcePool.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:iam/v1:WorkforcePoolIamMember": {
      "description": "Sets IAM policies on a WorkforcePool.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:iam/v1:WorkforcePoolIamPolicy": {
      "description": "Sets IAM policies on a WorkforcePool.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workforcePoolId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "version",
        "workforcePoolId"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iam%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workforcePoolId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workforcePoolId"
      ]
    },
    "google-native:iam/v1:WorkforcePoolKey": {
      "description": "Creates a new WorkforcePoolProviderKey in a WorkforcePoolProvider.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "The time after which the key will be permanently deleted and cannot be recovered. Note that the key may get purged before this time if the total limit of keys per provider is exceeded."
        },
        "keyData": {
          "$ref": "#/types/google-native:iam%2Fv1:KeyDataResponse",
          "description": "Immutable. Public half of the asymmetric key."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the key."
        },
        "providerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the key."
        },
        "use": {
          "type": "string",
          "description": "The purpose of the key."
        },
        "workforcePoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workforcePoolProviderKeyId": {
          "type": "string",
          "description": "Required. The ID to use for the key, which becomes the final component of the resource name. This value must be 4-32 characters, and may contain the characters [a-z0-9-].",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "expireTime",
        "keyData",
        "location",
        "name",
        "providerId",
        "state",
        "use",
        "workforcePoolId",
        "workforcePoolProviderKeyId"
      ],
      "inputProperties": {
        "keyData": {
          "$ref": "#/types/google-native:iam%2Fv1:KeyData",
          "description": "Immutable. Public half of the asymmetric key."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "providerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "use": {
          "$ref": "#/types/google-native:iam%2Fv1:WorkforcePoolKeyUse",
          "description": "The purpose of the key."
        },
        "workforcePoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workforcePoolProviderKeyId": {
          "type": "string",
          "description": "Required. The ID to use for the key, which becomes the final component of the resource name. This value must be 4-32 characters, and may contain the characters [a-z0-9-].",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "providerId",
        "use",
        "workforcePoolId",
        "workforcePoolProviderKeyId"
      ]
    },
    "google-native:iam/v1:WorkforcePoolProvider": {
      "description": "Creates a new WorkforcePoolProvider in a WorkforcePool. You cannot reuse the name of a deleted provider until 30 days after deletion.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "attributeCondition": {
          "type": "string",
          "description": "A [Common Expression Language](https://opensource.google/projects/cel) expression, in plain text, to restrict what otherwise valid authentication credentials issued by the provider should not be accepted. The expression must output a boolean representing whether to allow the federation. The following keywords may be referenced in the expressions: * `assertion`: JSON representing the authentication credential issued by the provider. * `google`: The Google attributes mapped from the assertion in the `attribute_mappings`. `google.profile_photo` and `google.display_name` are not supported. * `attribute`: The custom attributes mapped from the assertion in the `attribute_mappings`. The maximum length of the attribute condition expression is 4096 characters. If unspecified, all valid authentication credentials will be accepted. The following example shows how to only allow credentials with a mapped `google.groups` value of `admins`: ``` \"'admins' in google.groups\" ```"
        },
        "attributeMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Maps attributes from the authentication credentials issued by an external identity provider to Google Cloud attributes, such as `subject` and `segment`. Each key must be a string specifying the Google Cloud IAM attribute to map to. The following keys are supported: * `google.subject`: The principal IAM is authenticating. You can reference this value in IAM bindings. This is also the subject that appears in Cloud Logging logs. This is a required field and the mapped subject cannot exceed 127 bytes. * `google.groups`: Groups the authenticating user belongs to. You can grant groups access to resources using an IAM `principalSet` binding; access applies to all members of the group. * `google.display_name`: The name of the authenticated user. This is an optional field and the mapped display name cannot exceed 100 bytes. If not set, `google.subject` will be displayed instead. This attribute cannot be referenced in IAM bindings. * `google.profile_photo`: The URL that specifies the authenticated user's thumbnail photo. This is an optional field. When set, the image will be visible as the user's profile picture. If not set, a generic user icon will be displayed instead. This attribute cannot be referenced in IAM bindings. You can also provide custom attributes by specifying `attribute.{custom_attribute}`, where {custom_attribute} is the name of the custom attribute to be mapped. You can define a maximum of 50 custom attributes. The maximum length of a mapped attribute key is 100 characters, and the key may only contain the characters [a-z0-9_]. You can reference these attributes in IAM policies to define fine-grained access for a workforce pool to Google Cloud resources. For example: * `google.subject`: `principal://iam.googleapis.com/locations/global/workforcePools/{pool}/subject/{value}` * `google.groups`: `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool}/group/{value}` * `attribute.{custom_attribute}`: `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool}/attribute.{custom_attribute}/{value}` Each value must be a [Common Expression Language] (https://opensource.google/projects/cel) function that maps an identity provider credential to the normalized attribute specified by the corresponding map key. You can use the `assertion` keyword in the expression to access a JSON representation of the authentication credential issued by the provider. The maximum length of an attribute mapping expression is 2048 characters. When evaluated, the total size of all mapped attributes must not exceed 4KB. For OIDC providers, you must supply a custom mapping that includes the `google.subject` attribute. For example, the following maps the `sub` claim of the incoming credential to the `subject` attribute on a Google token: ``` {\"google.subject\": \"assertion.sub\"} ```"
        },
        "description": {
          "type": "string",
          "description": "A user-specified description of the provider. Cannot exceed 256 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Disables the workforce pool provider. You cannot use a disabled provider to exchange tokens. However, existing tokens still grant access."
        },
        "displayName": {
          "type": "string",
          "description": "A user-specified display name for the provider. Cannot exceed 32 characters."
        },
        "expireTime": {
          "type": "string",
          "description": "Time after which the workload pool provider will be permanently purged and cannot be recovered."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the provider. Format: `locations/{location}/workforcePools/{workforce_pool_id}/providers/{provider_id}`"
        },
        "oidc": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcResponse",
          "description": "An OpenId Connect 1.0 identity provider configuration."
        },
        "saml": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderSamlResponse",
          "description": "A SAML identity provider configuration."
        },
        "state": {
          "type": "string",
          "description": "The state of the provider."
        },
        "workforcePoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workforcePoolProviderId": {
          "type": "string",
          "description": "Required. The ID for the provider, which becomes the final component of the resource name. This value must be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix `gcp-` is reserved for use by Google, and may not be specified.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "attributeCondition",
        "attributeMapping",
        "description",
        "disabled",
        "displayName",
        "expireTime",
        "location",
        "name",
        "oidc",
        "saml",
        "state",
        "workforcePoolId",
        "workforcePoolProviderId"
      ],
      "inputProperties": {
        "attributeCondition": {
          "type": "string",
          "description": "A [Common Expression Language](https://opensource.google/projects/cel) expression, in plain text, to restrict what otherwise valid authentication credentials issued by the provider should not be accepted. The expression must output a boolean representing whether to allow the federation. The following keywords may be referenced in the expressions: * `assertion`: JSON representing the authentication credential issued by the provider. * `google`: The Google attributes mapped from the assertion in the `attribute_mappings`. `google.profile_photo` and `google.display_name` are not supported. * `attribute`: The custom attributes mapped from the assertion in the `attribute_mappings`. The maximum length of the attribute condition expression is 4096 characters. If unspecified, all valid authentication credentials will be accepted. The following example shows how to only allow credentials with a mapped `google.groups` value of `admins`: ``` \"'admins' in google.groups\" ```"
        },
        "attributeMapping": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Maps attributes from the authentication credentials issued by an external identity provider to Google Cloud attributes, such as `subject` and `segment`. Each key must be a string specifying the Google Cloud IAM attribute to map to. The following keys are supported: * `google.subject`: The principal IAM is authenticating. You can reference this value in IAM bindings. This is also the subject that appears in Cloud Logging logs. This is a required field and the mapped subject cannot exceed 127 bytes. * `google.groups`: Groups the authenticating user belongs to. You can grant groups access to resources using an IAM `principalSet` binding; access applies to all members of the group. * `google.display_name`: The name of the authenticated user. This is an optional field and the mapped display name cannot exceed 100 bytes. If not set, `google.subject` will be displayed instead. This attribute cannot be referenced in IAM bindings. * `google.profile_photo`: The URL that specifies the authenticated user's thumbnail photo. This is an optional field. When set, the image will be visible as the user's profile picture. If not set, a generic user icon will be displayed instead. This attribute cannot be referenced in IAM bindings. You can also provide custom attributes by specifying `attribute.{custom_attribute}`, where {custom_attribute} is the name of the custom attribute to be mapped. You can define a maximum of 50 custom attributes. The maximum length of a mapped attribute key is 100 characters, and the key may only contain the characters [a-z0-9_]. You can reference these attributes in IAM policies to define fine-grained access for a workforce pool to Google Cloud resources. For example: * `google.subject`: `principal://iam.googleapis.com/locations/global/workforcePools/{pool}/subject/{value}` * `google.groups`: `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool}/group/{value}` * `attribute.{custom_attribute}`: `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool}/attribute.{custom_attribute}/{value}` Each value must be a [Common Expression Language] (https://opensource.google/projects/cel) function that maps an identity provider credential to the normalized attribute specified by the corresponding map key. You can use the `assertion` keyword in the expression to access a JSON representation of the authentication credential issued by the provider. The maximum length of an attribute mapping expression is 2048 characters. When evaluated, the total size of all mapped attributes must not exceed 4KB. For OIDC providers, you must supply a custom mapping that includes the `google.subject` attribute. For example, the following maps the `sub` claim of the incoming credential to the `subject` attribute on a Google token: ``` {\"google.subject\": \"assertion.sub\"} ```"
        },
        "description": {
          "type": "string",
          "description": "A user-specified description of the provider. Cannot exceed 256 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Disables the workforce pool provider. You cannot use a disabled provider to exchange tokens. However, existing tokens still grant access."
        },
        "displayName": {
          "type": "string",
          "description": "A user-specified display name for the provider. Cannot exceed 32 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "oidc": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidc",
          "description": "An OpenId Connect 1.0 identity provider configuration."
        },
        "saml": {
          "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderSaml",
          "description": "A SAML identity provider configuration."
        },
        "workforcePoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workforcePoolProviderId": {
          "type": "string",
          "description": "Required. The ID for the provider, which becomes the final component of the resource name. This value must be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix `gcp-` is reserved for use by Google, and may not be specified.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "attributeMapping",
        "workforcePoolId",
        "workforcePoolProviderId"
      ]
    },
    "google-native:iam/v1:WorkloadIdentityPool": {
      "description": "Creates a new WorkloadIdentityPool. You cannot reuse the name of a deleted pool until 30 days after deletion.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A description of the pool. Cannot exceed 256 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether the pool is disabled. You cannot use a disabled pool to exchange tokens, or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again."
        },
        "displayName": {
          "type": "string",
          "description": "A display name for the pool. Cannot exceed 32 characters."
        },
        "expireTime": {
          "type": "string",
          "description": "Time after which the workload identity pool will be permanently purged and cannot be recovered."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the pool."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the pool."
        },
        "workloadIdentityPoolId": {
          "type": "string",
          "description": "Required. The ID to use for the pool, which becomes the final component of the resource name. This value should be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix `gcp-` is reserved for use by Google, and may not be specified.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "description",
        "disabled",
        "displayName",
        "expireTime",
        "location",
        "name",
        "project",
        "state",
        "workloadIdentityPoolId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of the pool. Cannot exceed 256 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether the pool is disabled. You cannot use a disabled pool to exchange tokens, or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again."
        },
        "displayName": {
          "type": "string",
          "description": "A display name for the pool. Cannot exceed 32 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workloadIdentityPoolId": {
          "type": "string",
          "description": "Required. The ID to use for the pool, which becomes the final component of the resource name. This value should be 4-32 characters, and may contain the characters [a-z0-9-]. The prefix `gcp-` is reserved for use by Google, and may not be specified.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workloadIdentityPoolId"
      ]
    },
    "google-native:iam/v1:WorkloadIdentityPoolKey": {
      "description": "Create a new WorkloadIdentityPoolProviderKey in a WorkloadIdentityPoolProvider.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "Time after which the key will be permanently purged and cannot be recovered. Note that the key may get purged before this timestamp if the total limit of keys per provider is crossed."
        },
        "keyData": {
          "$ref": "#/types/google-native:iam%2Fv1:KeyDataResponse",
          "description": "Immutable. Public half of the asymmetric key."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the key."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "providerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the key."
        },
        "use": {
          "type": "string",
          "description": "The purpose of the key."
        },
        "workloadIdentityPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workloadIdentityPoolProviderKeyId": {
          "type": "string",
          "description": "Required. The ID to use for the key, which becomes the final component of the resource name. This value should be 4-32 characters, and may contain the characters [a-z0-9-].",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "expireTime",
        "keyData",
        "location",
        "name",
        "project",
        "providerId",
        "state",
        "use",
        "workloadIdentityPoolId",
        "workloadIdentityPoolProviderKeyId"
      ],
      "inputProperties": {
        "keyData": {
          "$ref": "#/types/google-native:iam%2Fv1:KeyData",
          "description": "Immutable. Public half of the asymmetric key."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "providerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "use": {
          "$ref": "#/types/google-native:iam%2Fv1:WorkloadIdentityPoolKeyUse",
          "description": "The purpose of the key."
        },
        "workloadIdentityPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workloadIdentityPoolProviderKeyId": {
          "type": "string",
          "description": "Required. The ID to use for the key, which becomes the final component of the resource name. This value should be 4-32 characters, and may contain the characters [a-z0-9-].",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "providerId",
        "use",
        "workloadIdentityPoolId",
        "workloadIdentityPoolProviderKeyId"
      ]
    },
    "google-native:iap/v1:Brand": {
      "description": "Constructs a new OAuth brand for the project if one does not exist. The created brand is \"internal only\", meaning that OAuth clients created under it only accept requests from users who belong to the same Google Workspace organization as the project. The brand is created in an un-reviewed status. NOTE: The \"internal only\" status can be manually changed in the Google Cloud Console. Requires that a brand does not already exist for the project, and that the specified support email is owned by the caller.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "applicationTitle": {
          "type": "string",
          "description": "Application name displayed on OAuth consent screen."
        },
        "name": {
          "type": "string",
          "description": "Identifier of the brand. NOTE: GCP project number achieves the same brand identification purpose as only one brand per project can be created."
        },
        "orgInternalOnly": {
          "type": "boolean",
          "description": "Whether the brand is only intended for usage inside the G Suite organization only."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "supportEmail": {
          "type": "string",
          "description": "Support email displayed on the OAuth consent screen."
        }
      },
      "type": "object",
      "required": [
        "applicationTitle",
        "name",
        "orgInternalOnly",
        "project",
        "supportEmail"
      ],
      "inputProperties": {
        "applicationTitle": {
          "type": "string",
          "description": "Application name displayed on OAuth consent screen."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "supportEmail": {
          "type": "string",
          "description": "Support email displayed on the OAuth consent screen."
        }
      }
    },
    "google-native:iap/v1:DestGroup": {
      "description": "Creates a new TunnelDestGroup.",
      "properties": {
        "cidrs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unordered list. List of CIDRs that this group applies to."
        },
        "fqdns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unordered list. List of FQDNs that this group applies to."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Identifier for the TunnelDestGroup. Must be unique within the project and contain only lower case letters (a-z) and dashes (-)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tunnelDestGroupId": {
          "type": "string",
          "description": "Required. The ID to use for the TunnelDestGroup, which becomes the final component of the resource name. This value must be 4-63 characters, and valid characters are `[a-z]-`.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "cidrs",
        "fqdns",
        "location",
        "name",
        "project",
        "tunnelDestGroupId"
      ],
      "inputProperties": {
        "cidrs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unordered list. List of CIDRs that this group applies to."
        },
        "fqdns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Unordered list. List of FQDNs that this group applies to."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Identifier for the TunnelDestGroup. Must be unique within the project and contain only lower case letters (a-z) and dashes (-)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tunnelDestGroupId": {
          "type": "string",
          "description": "Required. The ID to use for the TunnelDestGroup, which becomes the final component of the resource name. This value must be 4-63 characters, and valid characters are `[a-z]-`.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "tunnelDestGroupId"
      ]
    },
    "google-native:iap/v1:IdentityAwareProxyClient": {
      "description": "Creates an Identity Aware Proxy (IAP) OAuth client. The client is owned by IAP. Requires that the brand for the project exists and that it is set for internal-only use.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "brandId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Human-friendly name given to the OAuth client."
        },
        "name": {
          "type": "string",
          "description": "Unique identifier of the OAuth client."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secret": {
          "type": "string",
          "description": "Client secret of the OAuth client."
        }
      },
      "type": "object",
      "required": [
        "brandId",
        "displayName",
        "name",
        "project",
        "secret"
      ],
      "inputProperties": {
        "brandId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "Human-friendly name given to the OAuth client."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "brandId"
      ]
    },
    "google-native:iap/v1:V1IamBinding": {
      "description": "Sets the access control policy for an Identity-Aware Proxy protected resource. Replaces any existing policy. More information about managing access via IAP can be found at: https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:iap/v1:V1IamMember": {
      "description": "Sets the access control policy for an Identity-Aware Proxy protected resource. Replaces any existing policy. More information about managing access via IAP can be found at: https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:iap/v1:V1IamPolicy": {
      "description": "Sets the access control policy for an Identity-Aware Proxy protected resource. Replaces any existing policy. More information about managing access via IAP can be found at: https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iap%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "v1Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "v1Id",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iap%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "v1Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "v1Id"
      ]
    },
    "google-native:iap/v1beta1:V1beta1IamBinding": {
      "description": "Sets the access control policy for an Identity-Aware Proxy protected resource. Replaces any existing policy. More information about managing access via IAP can be found at: https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:iap/v1beta1:V1beta1IamMember": {
      "description": "Sets the access control policy for an Identity-Aware Proxy protected resource. Replaces any existing policy. More information about managing access via IAP can be found at: https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:iap/v1beta1:V1beta1IamPolicy": {
      "description": "Sets the access control policy for an Identity-Aware Proxy protected resource. Replaces any existing policy. More information about managing access via IAP can be found at: https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iap%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "v1beta1Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "v1beta1Id",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:iap%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "v1beta1Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "v1beta1Id"
      ]
    },
    "google-native:identitytoolkit/v2:DefaultSupportedIdpConfig": {
      "description": "Create a default supported Idp configuration for an Identity Toolkit project.",
      "properties": {
        "appleSignInConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2AppleSignInConfigResponse",
          "description": "Additional config for Apple-based projects."
        },
        "clientId": {
          "type": "string",
          "description": "OAuth client ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "OAuth client secret."
        },
        "enabled": {
          "type": "boolean",
          "description": "True if allows the user to sign in with the provider."
        },
        "idpId": {
          "type": "string",
          "description": "The id of the Idp to create a config for. Call ListDefaultSupportedIdps for list of all default supported Idps."
        },
        "name": {
          "type": "string",
          "description": "The name of the DefaultSupportedIdpConfig resource, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "appleSignInConfig",
        "clientId",
        "clientSecret",
        "enabled",
        "name",
        "project",
        "tenantId"
      ],
      "inputProperties": {
        "appleSignInConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2AppleSignInConfig",
          "description": "Additional config for Apple-based projects."
        },
        "clientId": {
          "type": "string",
          "description": "OAuth client ID."
        },
        "clientSecret": {
          "type": "string",
          "description": "OAuth client secret."
        },
        "enabled": {
          "type": "boolean",
          "description": "True if allows the user to sign in with the provider."
        },
        "idpId": {
          "type": "string",
          "description": "The id of the Idp to create a config for. Call ListDefaultSupportedIdps for list of all default supported Idps."
        },
        "name": {
          "type": "string",
          "description": "The name of the DefaultSupportedIdpConfig resource, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "tenantId"
      ]
    },
    "google-native:identitytoolkit/v2:InboundSamlConfig": {
      "description": "Create an inbound SAML configuration for an Identity Toolkit project.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The config's display name set by developers."
        },
        "enabled": {
          "type": "boolean",
          "description": "True if allows the user to sign in with the provider."
        },
        "idpConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2IdpConfigResponse",
          "description": "The SAML IdP (Identity Provider) configuration when the project acts as the relying party."
        },
        "inboundSamlConfigId": {
          "type": "string",
          "description": "The id to use for this config."
        },
        "name": {
          "type": "string",
          "description": "The name of the InboundSamlConfig resource, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'. Ignored during create requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2SpConfigResponse",
          "description": "The SAML SP (Service Provider) configuration when the project acts as the relying party to receive and accept an authentication assertion issued by a SAML identity provider."
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "enabled",
        "idpConfig",
        "name",
        "project",
        "spConfig",
        "tenantId"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The config's display name set by developers."
        },
        "enabled": {
          "type": "boolean",
          "description": "True if allows the user to sign in with the provider."
        },
        "idpConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2IdpConfig",
          "description": "The SAML IdP (Identity Provider) configuration when the project acts as the relying party."
        },
        "inboundSamlConfigId": {
          "type": "string",
          "description": "The id to use for this config."
        },
        "name": {
          "type": "string",
          "description": "The name of the InboundSamlConfig resource, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'. Ignored during create requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2SpConfig",
          "description": "The SAML SP (Service Provider) configuration when the project acts as the relying party to receive and accept an authentication assertion issued by a SAML identity provider."
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "tenantId"
      ]
    },
    "google-native:identitytoolkit/v2:OauthIdpConfig": {
      "description": "Create an Oidc Idp configuration for an Identity Toolkit project.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The client id of an OAuth client."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client secret of the OAuth client, to enable OIDC code flow."
        },
        "displayName": {
          "type": "string",
          "description": "The config's display name set by developers."
        },
        "enabled": {
          "type": "boolean",
          "description": "True if allows the user to sign in with the provider."
        },
        "issuer": {
          "type": "string",
          "description": "For OIDC Idps, the issuer identifier."
        },
        "name": {
          "type": "string",
          "description": "The name of the OAuthIdpConfig resource, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'. Ignored during create requests."
        },
        "oauthIdpConfigId": {
          "type": "string",
          "description": "The id to use for this config."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responseType": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2OAuthResponseTypeResponse",
          "description": "The response type to request for in the OAuth authorization flow. You can set either `id_token` or `code` to true, but not both. Setting both types to be simultaneously true (`{code: true, id_token: true}`) is not yet supported."
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "displayName",
        "enabled",
        "issuer",
        "name",
        "project",
        "responseType",
        "tenantId"
      ],
      "inputProperties": {
        "clientId": {
          "type": "string",
          "description": "The client id of an OAuth client."
        },
        "clientSecret": {
          "type": "string",
          "description": "The client secret of the OAuth client, to enable OIDC code flow."
        },
        "displayName": {
          "type": "string",
          "description": "The config's display name set by developers."
        },
        "enabled": {
          "type": "boolean",
          "description": "True if allows the user to sign in with the provider."
        },
        "issuer": {
          "type": "string",
          "description": "For OIDC Idps, the issuer identifier."
        },
        "name": {
          "type": "string",
          "description": "The name of the OAuthIdpConfig resource, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'. Ignored during create requests."
        },
        "oauthIdpConfigId": {
          "type": "string",
          "description": "The id to use for this config."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "responseType": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2OAuthResponseType",
          "description": "The response type to request for in the OAuth authorization flow. You can set either `id_token` or `code` to true, but not both. Setting both types to be simultaneously true (`{code: true, id_token: true}`) is not yet supported."
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "tenantId"
      ]
    },
    "google-native:identitytoolkit/v2:Tenant": {
      "description": "Create a tenant. Requires write permission on the Agent project.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "allowPasswordSignup": {
          "type": "boolean",
          "description": "Whether to allow email/password user authentication."
        },
        "autodeleteAnonymousUsers": {
          "type": "boolean",
          "description": "Whether anonymous users will be auto-deleted after a period of 30 days."
        },
        "client": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2ClientPermissionConfigResponse",
          "description": "Options related to how clients making requests on behalf of a project should be configured."
        },
        "disableAuth": {
          "type": "boolean",
          "description": "Whether authentication is disabled for the tenant. If true, the users under the disabled tenant are not allowed to sign-in. Admins of the disabled tenant are not able to manage its users."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the tenant."
        },
        "emailPrivacyConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfigResponse",
          "description": "Configuration for settings related to email privacy and public visibility."
        },
        "enableAnonymousUser": {
          "type": "boolean",
          "description": "Whether to enable anonymous user authentication."
        },
        "enableEmailLinkSignin": {
          "type": "boolean",
          "description": "Whether to enable email link user authentication."
        },
        "hashConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2HashConfigResponse",
          "description": "Hash config information of a tenant for display on Pantheon. This can only be displayed on Pantheon to avoid the sensitive information to get accidentally leaked. Only returned in GetTenant response to restrict reading of this information. Requires firebaseauth.configs.getHashConfig permission on the agent project for returning this field."
        },
        "inheritance": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2InheritanceResponse",
          "description": "Specify the settings that the tenant could inherit."
        },
        "mfaConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfigResponse",
          "description": "The tenant-level configuration of MFA options."
        },
        "monitoring": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2MonitoringConfigResponse",
          "description": "Configuration related to monitoring project activity."
        },
        "name": {
          "type": "string",
          "description": "Resource name of a tenant. For example: \"projects/{project-id}/tenants/{tenant-id}\""
        },
        "passwordPolicyConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfigResponse",
          "description": "The tenant-level password policy config"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RecaptchaConfigResponse",
          "description": "The tenant-level reCAPTCHA config."
        },
        "smsRegionConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2SmsRegionConfigResponse",
          "description": "Configures which regions are enabled for SMS verification code sending."
        },
        "testPhoneNumbers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of pairs that can be used for MFA. The phone number should be in E.164 format (https://www.itu.int/rec/T-REC-E.164/) and a maximum of 10 pairs can be added (error will be thrown once exceeded)."
        }
      },
      "type": "object",
      "required": [
        "allowPasswordSignup",
        "autodeleteAnonymousUsers",
        "client",
        "disableAuth",
        "displayName",
        "emailPrivacyConfig",
        "enableAnonymousUser",
        "enableEmailLinkSignin",
        "hashConfig",
        "inheritance",
        "mfaConfig",
        "monitoring",
        "name",
        "passwordPolicyConfig",
        "project",
        "recaptchaConfig",
        "smsRegionConfig",
        "testPhoneNumbers"
      ],
      "inputProperties": {
        "allowPasswordSignup": {
          "type": "boolean",
          "description": "Whether to allow email/password user authentication."
        },
        "autodeleteAnonymousUsers": {
          "type": "boolean",
          "description": "Whether anonymous users will be auto-deleted after a period of 30 days."
        },
        "client": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2ClientPermissionConfig",
          "description": "Options related to how clients making requests on behalf of a project should be configured."
        },
        "disableAuth": {
          "type": "boolean",
          "description": "Whether authentication is disabled for the tenant. If true, the users under the disabled tenant are not allowed to sign-in. Admins of the disabled tenant are not able to manage its users."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of the tenant."
        },
        "emailPrivacyConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfig",
          "description": "Configuration for settings related to email privacy and public visibility."
        },
        "enableAnonymousUser": {
          "type": "boolean",
          "description": "Whether to enable anonymous user authentication."
        },
        "enableEmailLinkSignin": {
          "type": "boolean",
          "description": "Whether to enable email link user authentication."
        },
        "inheritance": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2Inheritance",
          "description": "Specify the settings that the tenant could inherit."
        },
        "mfaConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfig",
          "description": "The tenant-level configuration of MFA options."
        },
        "monitoring": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2MonitoringConfig",
          "description": "Configuration related to monitoring project activity."
        },
        "passwordPolicyConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfig",
          "description": "The tenant-level password policy config"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recaptchaConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RecaptchaConfig",
          "description": "The tenant-level reCAPTCHA config."
        },
        "smsRegionConfig": {
          "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2SmsRegionConfig",
          "description": "Configures which regions are enabled for SMS verification code sending."
        },
        "testPhoneNumbers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of pairs that can be used for MFA. The phone number should be in E.164 format (https://www.itu.int/rec/T-REC-E.164/) and a maximum of 10 pairs can be added (error will be thrown once exceeded)."
        }
      }
    },
    "google-native:identitytoolkit/v2:TenantIamBinding": {
      "description": "Sets the access control policy for a resource. If the policy exists, it is replaced. Caller must have the right Google IAM permission on the resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:identitytoolkit/v2:TenantIamMember": {
      "description": "Sets the access control policy for a resource. If the policy exists, it is replaced. Caller must have the right Google IAM permission on the resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:identitytoolkit/v2:TenantIamPolicy": {
      "description": "Sets the access control policy for a resource. If the policy exists, it is replaced. Caller must have the right Google IAM permission on the resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "tenantId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "tenantId"
      ]
    },
    "google-native:ids/v1:Endpoint": {
      "description": "Creates a new Endpoint in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The create time timestamp."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the endpoint"
        },
        "endpointForwardingRule": {
          "type": "string",
          "description": "The fully qualified URL of the endpoint's ILB Forwarding Rule."
        },
        "endpointId": {
          "type": "string",
          "description": "Required. The endpoint identifier. This will be part of the endpoint's resource name. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. Values that do not match this pattern will trigger an INVALID_ARGUMENT error.",
          "replaceOnChanges": true
        },
        "endpointIp": {
          "type": "string",
          "description": "The IP address of the IDS Endpoint's ILB."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the endpoint."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the endpoint."
        },
        "network": {
          "type": "string",
          "description": "The fully qualified URL of the network to which the IDS Endpoint is attached."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "severity": {
          "type": "string",
          "description": "Lowest threat severity that this endpoint will alert on."
        },
        "state": {
          "type": "string",
          "description": "Current state of the endpoint."
        },
        "threatExceptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of threat IDs to be excepted from generating alerts."
        },
        "trafficLogs": {
          "type": "boolean",
          "description": "Whether the endpoint should report traffic logs in addition to threat logs."
        },
        "updateTime": {
          "type": "string",
          "description": "The update time timestamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "endpointForwardingRule",
        "endpointId",
        "endpointIp",
        "labels",
        "location",
        "name",
        "network",
        "project",
        "severity",
        "state",
        "threatExceptions",
        "trafficLogs",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-provided description of the endpoint"
        },
        "endpointId": {
          "type": "string",
          "description": "Required. The endpoint identifier. This will be part of the endpoint's resource name. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. Values that do not match this pattern will trigger an INVALID_ARGUMENT error.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the endpoint."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "The fully qualified URL of the network to which the IDS Endpoint is attached."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "severity": {
          "$ref": "#/types/google-native:ids%2Fv1:EndpointSeverity",
          "description": "Lowest threat severity that this endpoint will alert on."
        },
        "threatExceptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of threat IDs to be excepted from generating alerts."
        },
        "trafficLogs": {
          "type": "boolean",
          "description": "Whether the endpoint should report traffic logs in addition to threat logs."
        }
      },
      "requiredInputs": [
        "endpointId",
        "network",
        "severity"
      ]
    },
    "google-native:ids/v1:EndpointIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:ids/v1:EndpointIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:ids/v1:EndpointIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ids%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ids%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "endpointId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "endpointId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ids%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ids%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "endpointId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "endpointId"
      ]
    },
    "google-native:integrations/v1alpha:AuthConfig": {
      "description": "Creates an auth config record. Fetch corresponding credentials for specific auth types, e.g. access token for OAuth 2.0, JWT token for JWT. Encrypt the auth config with Cloud KMS and store the encrypted credentials in Spanner. Returns the encrypted auth config.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "certificateId": {
          "type": "string",
          "description": "Certificate id for client certificate"
        },
        "clientCertificateEncryptedPrivateKey": {
          "type": "string",
          "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines. For example, -----BEGIN CERTIFICATE----- MIICTTCCAbagAwIBAgIJAPT0tSKNxan/MA0GCSqGSIb3DQEBCwUAMCoxFzAVBgNV BAoTDkdvb2dsZSBURVNUSU5HMQ8wDQYDVQQDEwZ0ZXN0Q0EwHhcNMTUwMTAxMDAw MDAwWhcNMjUwMTAxMDAwMDAwWjAuMRcwFQYDVQQKEw5Hb29nbGUgVEVTVElORzET MBEGA1UEAwwKam9lQGJhbmFuYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA vDYFgMgxi5W488d9J7UpCInl0NXmZQpJDEHE4hvkaRlH7pnC71H0DLt0/3zATRP1 JzY2+eqBmbGl4/sgZKYv8UrLnNyQNUTsNx1iZAfPUflf5FwgVsai8BM0pUciq1NB xD429VFcrGZNucvFLh72RuRFIKH8WUpiK/iZNFkWhZ0CAwEAAaN3MHUwDgYDVR0P AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB Af8EAjAAMBkGA1UdDgQSBBCVgnFBCWgL/iwCqnGrhTPQMBsGA1UdIwQUMBKAEKey Um2o4k2WiEVA0ldQvNYwDQYJKoZIhvcNAQELBQADgYEAYK986R4E3L1v+Q6esBtW JrUwA9UmJRSQr0N5w3o9XzarU37/bkjOP0Fw0k/A6Vv1n3vlciYfBFaBIam1qRHr 5dMsYf4CZS6w50r7hyzqyrwDoyNxkLnd2PdcHT/sym1QmflsjEs7pejtnohO6N2H wQW6M0H7Zt8claGRla4fKkg= -----END CERTIFICATE-----"
        },
        "clientCertificatePassphrase": {
          "type": "string",
          "description": "'passphrase' should be left unset if private key is not encrypted. Note that 'passphrase' is not the password for web server, but an extra layer of security to protected private key."
        },
        "clientCertificateSslCertificate": {
          "type": "string",
          "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines. For example, -----BEGIN CERTIFICATE----- MIICTTCCAbagAwIBAgIJAPT0tSKNxan/MA0GCSqGSIb3DQEBCwUAMCoxFzAVBgNV BAoTDkdvb2dsZSBURVNUSU5HMQ8wDQYDVQQDEwZ0ZXN0Q0EwHhcNMTUwMTAxMDAw MDAwWhcNMjUwMTAxMDAwMDAwWjAuMRcwFQYDVQQKEw5Hb29nbGUgVEVTVElORzET MBEGA1UEAwwKam9lQGJhbmFuYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA vDYFgMgxi5W488d9J7UpCInl0NXmZQpJDEHE4hvkaRlH7pnC71H0DLt0/3zATRP1 JzY2+eqBmbGl4/sgZKYv8UrLnNyQNUTsNx1iZAfPUflf5FwgVsai8BM0pUciq1NB xD429VFcrGZNucvFLh72RuRFIKH8WUpiK/iZNFkWhZ0CAwEAAaN3MHUwDgYDVR0P AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB Af8EAjAAMBkGA1UdDgQSBBCVgnFBCWgL/iwCqnGrhTPQMBsGA1UdIwQUMBKAEKey Um2o4k2WiEVA0ldQvNYwDQYJKoZIhvcNAQELBQADgYEAYK986R4E3L1v+Q6esBtW JrUwA9UmJRSQr0N5w3o9XzarU37/bkjOP0Fw0k/A6Vv1n3vlciYfBFaBIam1qRHr 5dMsYf4CZS6w50r7hyzqyrwDoyNxkLnd2PdcHT/sym1QmflsjEs7pejtnohO6N2H wQW6M0H7Zt8claGRla4fKkg= -----END CERTIFICATE-----"
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the auth config is created."
        },
        "creatorEmail": {
          "type": "string",
          "description": "The creator's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "credentialType": {
          "type": "string",
          "description": "Credential type of the encrypted credential."
        },
        "decryptedCredential": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCredentialResponse",
          "description": "Raw auth credentials."
        },
        "description": {
          "type": "string",
          "description": "A description of the auth config."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the auth config."
        },
        "encryptedCredential": {
          "type": "string",
          "description": "Auth credential encrypted by Cloud KMS. Can be decrypted as Credential with proper KMS key."
        },
        "expiryNotificationDuration": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User can define the time to receive notification after which the auth config becomes invalid. Support up to 30 days. Support granularity in hours."
        },
        "lastModifierEmail": {
          "type": "string",
          "description": "The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the SFDC instance projects/{project}/locations/{location}/authConfigs/{authConfig}."
        },
        "overrideValidTime": {
          "type": "string",
          "description": "User provided expiry time to override. For the example of Salesforce, username/password credentials can be valid for 6 months depending on the instance settings."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reason": {
          "type": "string",
          "description": "The reason / details of the current status."
        },
        "state": {
          "type": "string",
          "description": "The status of the auth config."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the auth config is modified."
        },
        "validTime": {
          "type": "string",
          "description": "The time until the auth config is valid. Empty or max value is considered the auth config won't expire."
        },
        "visibility": {
          "type": "string",
          "description": "The visibility of the auth config."
        }
      },
      "type": "object",
      "required": [
        "certificateId",
        "createTime",
        "creatorEmail",
        "credentialType",
        "decryptedCredential",
        "description",
        "displayName",
        "encryptedCredential",
        "expiryNotificationDuration",
        "lastModifierEmail",
        "location",
        "name",
        "overrideValidTime",
        "productId",
        "project",
        "reason",
        "state",
        "updateTime",
        "validTime",
        "visibility"
      ],
      "inputProperties": {
        "certificateId": {
          "type": "string",
          "description": "Certificate id for client certificate"
        },
        "clientCertificateEncryptedPrivateKey": {
          "type": "string",
          "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines. For example, -----BEGIN CERTIFICATE----- MIICTTCCAbagAwIBAgIJAPT0tSKNxan/MA0GCSqGSIb3DQEBCwUAMCoxFzAVBgNV BAoTDkdvb2dsZSBURVNUSU5HMQ8wDQYDVQQDEwZ0ZXN0Q0EwHhcNMTUwMTAxMDAw MDAwWhcNMjUwMTAxMDAwMDAwWjAuMRcwFQYDVQQKEw5Hb29nbGUgVEVTVElORzET MBEGA1UEAwwKam9lQGJhbmFuYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA vDYFgMgxi5W488d9J7UpCInl0NXmZQpJDEHE4hvkaRlH7pnC71H0DLt0/3zATRP1 JzY2+eqBmbGl4/sgZKYv8UrLnNyQNUTsNx1iZAfPUflf5FwgVsai8BM0pUciq1NB xD429VFcrGZNucvFLh72RuRFIKH8WUpiK/iZNFkWhZ0CAwEAAaN3MHUwDgYDVR0P AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB Af8EAjAAMBkGA1UdDgQSBBCVgnFBCWgL/iwCqnGrhTPQMBsGA1UdIwQUMBKAEKey Um2o4k2WiEVA0ldQvNYwDQYJKoZIhvcNAQELBQADgYEAYK986R4E3L1v+Q6esBtW JrUwA9UmJRSQr0N5w3o9XzarU37/bkjOP0Fw0k/A6Vv1n3vlciYfBFaBIam1qRHr 5dMsYf4CZS6w50r7hyzqyrwDoyNxkLnd2PdcHT/sym1QmflsjEs7pejtnohO6N2H wQW6M0H7Zt8claGRla4fKkg= -----END CERTIFICATE-----"
        },
        "clientCertificatePassphrase": {
          "type": "string",
          "description": "'passphrase' should be left unset if private key is not encrypted. Note that 'passphrase' is not the password for web server, but an extra layer of security to protected private key."
        },
        "clientCertificateSslCertificate": {
          "type": "string",
          "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines. For example, -----BEGIN CERTIFICATE----- MIICTTCCAbagAwIBAgIJAPT0tSKNxan/MA0GCSqGSIb3DQEBCwUAMCoxFzAVBgNV BAoTDkdvb2dsZSBURVNUSU5HMQ8wDQYDVQQDEwZ0ZXN0Q0EwHhcNMTUwMTAxMDAw MDAwWhcNMjUwMTAxMDAwMDAwWjAuMRcwFQYDVQQKEw5Hb29nbGUgVEVTVElORzET MBEGA1UEAwwKam9lQGJhbmFuYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA vDYFgMgxi5W488d9J7UpCInl0NXmZQpJDEHE4hvkaRlH7pnC71H0DLt0/3zATRP1 JzY2+eqBmbGl4/sgZKYv8UrLnNyQNUTsNx1iZAfPUflf5FwgVsai8BM0pUciq1NB xD429VFcrGZNucvFLh72RuRFIKH8WUpiK/iZNFkWhZ0CAwEAAaN3MHUwDgYDVR0P AQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMB Af8EAjAAMBkGA1UdDgQSBBCVgnFBCWgL/iwCqnGrhTPQMBsGA1UdIwQUMBKAEKey Um2o4k2WiEVA0ldQvNYwDQYJKoZIhvcNAQELBQADgYEAYK986R4E3L1v+Q6esBtW JrUwA9UmJRSQr0N5w3o9XzarU37/bkjOP0Fw0k/A6Vv1n3vlciYfBFaBIam1qRHr 5dMsYf4CZS6w50r7hyzqyrwDoyNxkLnd2PdcHT/sym1QmflsjEs7pejtnohO6N2H wQW6M0H7Zt8claGRla4fKkg= -----END CERTIFICATE-----"
        },
        "creatorEmail": {
          "type": "string",
          "description": "The creator's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "credentialType": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:AuthConfigCredentialType",
          "description": "Credential type of the encrypted credential."
        },
        "decryptedCredential": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCredential",
          "description": "Raw auth credentials."
        },
        "description": {
          "type": "string",
          "description": "A description of the auth config."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the auth config."
        },
        "encryptedCredential": {
          "type": "string",
          "description": "Auth credential encrypted by Cloud KMS. Can be decrypted as Credential with proper KMS key."
        },
        "expiryNotificationDuration": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User can define the time to receive notification after which the auth config becomes invalid. Support up to 30 days. Support granularity in hours."
        },
        "lastModifierEmail": {
          "type": "string",
          "description": "The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the SFDC instance projects/{project}/locations/{location}/authConfigs/{authConfig}."
        },
        "overrideValidTime": {
          "type": "string",
          "description": "User provided expiry time to override. For the example of Salesforce, username/password credentials can be valid for 6 months depending on the instance settings."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reason": {
          "type": "string",
          "description": "The reason / details of the current status."
        },
        "state": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:AuthConfigState",
          "description": "The status of the auth config."
        },
        "validTime": {
          "type": "string",
          "description": "The time until the auth config is valid. Empty or max value is considered the auth config won't expire."
        },
        "visibility": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:AuthConfigVisibility",
          "description": "The visibility of the auth config."
        }
      },
      "requiredInputs": [
        "displayName",
        "productId"
      ]
    },
    "google-native:integrations/v1alpha:Certificate": {
      "description": "Creates a new certificate. The certificate will be registered to the trawler service and will be encrypted using cloud KMS and stored in Spanner Returns the certificate.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "certificateStatus": {
          "type": "string",
          "description": "Status of the certificate"
        },
        "credentialId": {
          "type": "string",
          "description": "Immutable. Credential id that will be used to register with trawler INTERNAL_ONLY"
        },
        "description": {
          "type": "string",
          "description": "Description of the certificate"
        },
        "displayName": {
          "type": "string",
          "description": "Name of the certificate"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Auto generated primary key"
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawCertificate": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaClientCertificateResponse",
          "description": "Input only. Raw client certificate which would be registered with trawler"
        },
        "requestorId": {
          "type": "string",
          "description": "Immutable. Requestor ID to be used to register certificate with trawler"
        },
        "validEndTime": {
          "type": "string",
          "description": "The timestamp after which certificate will expire"
        },
        "validStartTime": {
          "type": "string",
          "description": "The timestamp after which certificate will be valid"
        }
      },
      "type": "object",
      "required": [
        "certificateStatus",
        "credentialId",
        "description",
        "displayName",
        "location",
        "name",
        "productId",
        "project",
        "rawCertificate",
        "requestorId",
        "validEndTime",
        "validStartTime"
      ],
      "inputProperties": {
        "certificateStatus": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:CertificateCertificateStatus",
          "description": "Status of the certificate"
        },
        "credentialId": {
          "type": "string",
          "description": "Immutable. Credential id that will be used to register with trawler INTERNAL_ONLY"
        },
        "description": {
          "type": "string",
          "description": "Description of the certificate"
        },
        "displayName": {
          "type": "string",
          "description": "Name of the certificate"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rawCertificate": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaClientCertificate",
          "description": "Input only. Raw client certificate which would be registered with trawler"
        },
        "requestorId": {
          "type": "string",
          "description": "Immutable. Requestor ID to be used to register certificate with trawler"
        }
      },
      "requiredInputs": [
        "displayName",
        "productId"
      ]
    },
    "google-native:integrations/v1alpha:SfdcChannel": {
      "description": "Creates an sfdc channel record. Store the sfdc channel in Spanner. Returns the sfdc channel.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "channelTopic": {
          "type": "string",
          "description": "The Channel topic defined by salesforce once an channel is opened"
        },
        "createTime": {
          "type": "string",
          "description": "Time when the channel is created"
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when the channel was deleted. Empty if not deleted."
        },
        "description": {
          "type": "string",
          "description": "The description for this channel"
        },
        "displayName": {
          "type": "string",
          "description": "Client level unique name/alias to easily reference a channel."
        },
        "isActive": {
          "type": "boolean",
          "description": "Indicated if a channel has any active integrations referencing it. Set to false when the channel is created, and set to true if there is any integration published with the channel configured in it."
        },
        "lastReplayId": {
          "type": "string",
          "description": "Last sfdc messsage replay id for channel"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the SFDC channel projects/{project}/locations/{location}/sfdcInstances/{sfdc_instance}/sfdcChannels/{sfdc_channel}."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sfdcInstanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the channel was last updated"
        }
      },
      "type": "object",
      "required": [
        "channelTopic",
        "createTime",
        "deleteTime",
        "description",
        "displayName",
        "isActive",
        "lastReplayId",
        "location",
        "name",
        "productId",
        "project",
        "sfdcInstanceId",
        "updateTime"
      ],
      "inputProperties": {
        "channelTopic": {
          "type": "string",
          "description": "The Channel topic defined by salesforce once an channel is opened"
        },
        "description": {
          "type": "string",
          "description": "The description for this channel"
        },
        "displayName": {
          "type": "string",
          "description": "Client level unique name/alias to easily reference a channel."
        },
        "isActive": {
          "type": "boolean",
          "description": "Indicated if a channel has any active integrations referencing it. Set to false when the channel is created, and set to true if there is any integration published with the channel configured in it."
        },
        "lastReplayId": {
          "type": "string",
          "description": "Last sfdc messsage replay id for channel"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the SFDC channel projects/{project}/locations/{location}/sfdcInstances/{sfdc_instance}/sfdcChannels/{sfdc_channel}."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sfdcInstanceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "productId",
        "sfdcInstanceId"
      ]
    },
    "google-native:integrations/v1alpha:SfdcInstance": {
      "description": "Creates an sfdc instance record. Store the sfdc instance in Spanner. Returns the sfdc instance.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authConfigId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of AuthConfigs that can be tried to open the channel to SFDC"
        },
        "createTime": {
          "type": "string",
          "description": "Time when the instance is created"
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when the instance was deleted. Empty if not deleted."
        },
        "description": {
          "type": "string",
          "description": "A description of the sfdc instance."
        },
        "displayName": {
          "type": "string",
          "description": "User selected unique name/alias to easily reference an instance."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the SFDC instance projects/{project}/locations/{location}/sfdcInstances/{sfdcInstance}."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAuthority": {
          "type": "string",
          "description": "URL used for API calls after authentication (the login authority is configured within the referenced AuthConfig)."
        },
        "sfdcOrgId": {
          "type": "string",
          "description": "The SFDC Org Id. This is defined in salesforce."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the instance was last updated"
        }
      },
      "type": "object",
      "required": [
        "authConfigId",
        "createTime",
        "deleteTime",
        "description",
        "displayName",
        "location",
        "name",
        "productId",
        "project",
        "serviceAuthority",
        "sfdcOrgId",
        "updateTime"
      ],
      "inputProperties": {
        "authConfigId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of AuthConfigs that can be tried to open the channel to SFDC"
        },
        "description": {
          "type": "string",
          "description": "A description of the sfdc instance."
        },
        "displayName": {
          "type": "string",
          "description": "User selected unique name/alias to easily reference an instance."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name of the SFDC instance projects/{project}/locations/{location}/sfdcInstances/{sfdcInstance}."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAuthority": {
          "type": "string",
          "description": "URL used for API calls after authentication (the login authority is configured within the referenced AuthConfig)."
        },
        "sfdcOrgId": {
          "type": "string",
          "description": "The SFDC Org Id. This is defined in salesforce."
        }
      },
      "requiredInputs": [
        "productId"
      ]
    },
    "google-native:integrations/v1alpha:TemplatesVersion": {
      "description": "Creates an IntegrationTemplateVersion.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "databasePersistencePolicy": {
          "type": "string",
          "description": "Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index."
        },
        "description": {
          "type": "string",
          "description": "Optional. The templateversion description. Permitted format is alphanumeric with underscores and no spaces."
        },
        "errorCatcherConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaErrorCatcherConfigResponse"
          },
          "description": "Optional. Error Catch Task configuration for the IntegrationTemplateVersion. It's optional."
        },
        "integrationtemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lastModifierEmail": {
          "type": "string",
          "description": "Optional. The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Auto-generated primary key. Format: projects/{project}/locations/{location}/products/{product}/integrationtemplates/{integrationtemplate}/versions/{version}"
        },
        "parentIntegrationVersionId": {
          "type": "string",
          "description": "Optional. ID of the IntegrationVersion that was used to create this IntegrationTemplateVersion"
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotNumber": {
          "type": "string",
          "description": "An increasing sequence that is set when a new snapshot is created."
        },
        "status": {
          "type": "string",
          "description": "Optional. Generated by eventbus. User should not set it as an input."
        },
        "taskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigResponse"
          },
          "description": "Optional. Task configuration for the IntegrationTemplateVersion. It's optional, but the IntegrationTemplateVersion doesn't do anything without task_configs."
        },
        "teardown": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTeardownResponse",
          "description": "Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to \"finally\" in code."
        },
        "templateParameters": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParametersResponse",
          "description": "Optional. Parameters that are expected to be passed to the IntegrationTemplateVersion when an event is triggered. This consists of all the parameters that are expected in the IntegrationTemplateVersion execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter."
        },
        "triggerConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigResponse"
          },
          "description": "Optional. Trigger configurations."
        },
        "updateTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "userLabel": {
          "type": "string",
          "description": "Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "databasePersistencePolicy",
        "description",
        "errorCatcherConfigs",
        "integrationtemplateId",
        "lastModifierEmail",
        "location",
        "name",
        "parentIntegrationVersionId",
        "productId",
        "project",
        "snapshotNumber",
        "status",
        "taskConfigs",
        "teardown",
        "templateParameters",
        "triggerConfigs",
        "updateTime",
        "userLabel"
      ],
      "inputProperties": {
        "databasePersistencePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:TemplatesVersionDatabasePersistencePolicy",
          "description": "Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index."
        },
        "description": {
          "type": "string",
          "description": "Optional. The templateversion description. Permitted format is alphanumeric with underscores and no spaces."
        },
        "errorCatcherConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaErrorCatcherConfig"
          },
          "description": "Optional. Error Catch Task configuration for the IntegrationTemplateVersion. It's optional."
        },
        "integrationtemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lastModifierEmail": {
          "type": "string",
          "description": "Optional. The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "parentIntegrationVersionId": {
          "type": "string",
          "description": "Optional. ID of the IntegrationVersion that was used to create this IntegrationTemplateVersion"
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "taskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfig"
          },
          "description": "Optional. Task configuration for the IntegrationTemplateVersion. It's optional, but the IntegrationTemplateVersion doesn't do anything without task_configs."
        },
        "teardown": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTeardown",
          "description": "Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to \"finally\" in code."
        },
        "templateParameters": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameters",
          "description": "Optional. Parameters that are expected to be passed to the IntegrationTemplateVersion when an event is triggered. This consists of all the parameters that are expected in the IntegrationTemplateVersion execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter."
        },
        "triggerConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfig"
          },
          "description": "Optional. Trigger configurations."
        },
        "userLabel": {
          "type": "string",
          "description": "Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created."
        }
      },
      "requiredInputs": [
        "integrationtemplateId",
        "productId"
      ]
    },
    "google-native:integrations/v1alpha:TestCase": {
      "description": "Creates a new test case\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "creatorEmail": {
          "type": "string",
          "description": "Optional. The creator's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "databasePersistencePolicy": {
          "type": "string",
          "description": "Optional. Various policies for how to persist the test execution info including execution info, execution export info, execution metadata index and execution param index.."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the test case."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of test case."
        },
        "integrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lastModifierEmail": {
          "type": "string",
          "description": "The last modifer's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lockHolderEmail": {
          "type": "string",
          "description": "Optional. The edit lock holder's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "name": {
          "type": "string",
          "description": "Auto-generated primary key."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "testCaseId": {
          "type": "string",
          "description": "Required. Required",
          "replaceOnChanges": true
        },
        "testInputParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterResponse"
          },
          "description": "Optional. Parameters that are expected to be passed to the test case when the test case is triggered. This gives the user the ability to provide default values. This should include all the output variables of the trigger as input variables."
        },
        "testTaskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTestTaskConfigResponse"
          },
          "description": "Optional. However, the test case doesn't mock or assert anything without test_task_configs."
        },
        "triggerId": {
          "type": "string",
          "description": "This defines the trigger ID in workflow which is considered to be executed as starting point of the test case"
        },
        "updateTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workflowId": {
          "type": "string",
          "description": "ID of the workflow with which this test case is associated"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "creatorEmail",
        "databasePersistencePolicy",
        "description",
        "displayName",
        "integrationId",
        "lastModifierEmail",
        "location",
        "lockHolderEmail",
        "name",
        "project",
        "testCaseId",
        "testInputParameters",
        "testTaskConfigs",
        "triggerId",
        "updateTime",
        "versionId",
        "workflowId"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "creatorEmail": {
          "type": "string",
          "description": "Optional. The creator's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "databasePersistencePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:TestCaseDatabasePersistencePolicy",
          "description": "Optional. Various policies for how to persist the test execution info including execution info, execution export info, execution metadata index and execution param index.."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the test case."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of test case."
        },
        "integrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lastModifierEmail": {
          "type": "string",
          "description": "The last modifer's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lockHolderEmail": {
          "type": "string",
          "description": "Optional. The edit lock holder's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "testCaseId": {
          "type": "string",
          "description": "Required. Required",
          "replaceOnChanges": true
        },
        "testInputParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameter"
          },
          "description": "Optional. Parameters that are expected to be passed to the test case when the test case is triggered. This gives the user the ability to provide default values. This should include all the output variables of the trigger as input variables."
        },
        "testTaskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTestTaskConfig"
          },
          "description": "Optional. However, the test case doesn't mock or assert anything without test_task_configs."
        },
        "triggerId": {
          "type": "string",
          "description": "This defines the trigger ID in workflow which is considered to be executed as starting point of the test case"
        },
        "updateTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "versionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workflowId": {
          "type": "string",
          "description": "ID of the workflow with which this test case is associated"
        }
      },
      "requiredInputs": [
        "displayName",
        "integrationId",
        "testCaseId",
        "triggerId",
        "versionId"
      ]
    },
    "google-native:integrations/v1alpha:Version": {
      "description": "Create a integration with a draft version in the specified project.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "cloudLoggingDetails": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCloudLoggingDetailsResponse",
          "description": "Optional. Cloud Logging details for the integration version"
        },
        "createSampleIntegrations": {
          "type": "boolean",
          "description": "Optional. Optional. Indicates if sample workflow should be created."
        },
        "createTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "databasePersistencePolicy": {
          "type": "string",
          "description": "Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index."
        },
        "description": {
          "type": "string",
          "description": "Optional. The integration description."
        },
        "errorCatcherConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaErrorCatcherConfigResponse"
          },
          "description": "Optional. Error Catch Task configuration for the integration. It's optional."
        },
        "integrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "integrationParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterResponse"
          },
          "description": "Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter."
        },
        "integrationParametersInternal": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParametersResponse",
          "description": "Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter."
        },
        "lastModifierEmail": {
          "type": "string",
          "description": "Optional. The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lockHolder": {
          "type": "string",
          "description": "Optional. The edit lock holder's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "name": {
          "type": "string",
          "description": "Auto-generated primary key."
        },
        "newIntegration": {
          "type": "boolean",
          "description": "Set this flag to true, if draft version is to be created for a brand new integration. False, if the request is for an existing integration. For backward compatibility reasons, even if this flag is set to `false` and no existing integration is found, a new draft integration will still be created."
        },
        "origin": {
          "type": "string",
          "description": "Optional. The origin that indicates where this integration is coming from."
        },
        "parentTemplateId": {
          "type": "string",
          "description": "Optional. The id of the template which was used to create this integration_version."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runAsServiceAccount": {
          "type": "string",
          "description": "Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task."
        },
        "snapshotNumber": {
          "type": "string",
          "description": "Optional. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use \"HEAD\" tag to identify the head."
        },
        "state": {
          "type": "string",
          "description": "User should not set it as an input."
        },
        "status": {
          "type": "string",
          "description": "Generated by eventbus. User should not set it as an input."
        },
        "taskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTaskConfigResponse"
          },
          "description": "Optional. Task configuration for the integration. It's optional, but the integration doesn't do anything without task_configs."
        },
        "taskConfigsInternal": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigResponse"
          },
          "description": "Optional. Task configuration for the integration. It's optional, but the integration doesn't do anything without task_configs."
        },
        "teardown": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTeardownResponse",
          "description": "Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to \"finally\" in code."
        },
        "triggerConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTriggerConfigResponse"
          },
          "description": "Optional. Trigger configurations."
        },
        "triggerConfigsInternal": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigResponse"
          },
          "description": "Optional. Trigger configurations."
        },
        "updateTime": {
          "type": "string",
          "description": "Auto-generated."
        },
        "userLabel": {
          "type": "string",
          "description": "Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created."
        }
      },
      "type": "object",
      "required": [
        "cloudLoggingDetails",
        "createTime",
        "databasePersistencePolicy",
        "description",
        "errorCatcherConfigs",
        "integrationId",
        "integrationParameters",
        "integrationParametersInternal",
        "lastModifierEmail",
        "location",
        "lockHolder",
        "name",
        "origin",
        "parentTemplateId",
        "productId",
        "project",
        "runAsServiceAccount",
        "snapshotNumber",
        "state",
        "status",
        "taskConfigs",
        "taskConfigsInternal",
        "teardown",
        "triggerConfigs",
        "triggerConfigsInternal",
        "updateTime",
        "userLabel"
      ],
      "inputProperties": {
        "cloudLoggingDetails": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCloudLoggingDetails",
          "description": "Optional. Cloud Logging details for the integration version"
        },
        "createSampleIntegrations": {
          "type": "boolean",
          "description": "Optional. Optional. Indicates if sample workflow should be created."
        },
        "databasePersistencePolicy": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:VersionDatabasePersistencePolicy",
          "description": "Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index."
        },
        "description": {
          "type": "string",
          "description": "Optional. The integration description."
        },
        "errorCatcherConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaErrorCatcherConfig"
          },
          "description": "Optional. Error Catch Task configuration for the integration. It's optional."
        },
        "integrationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "integrationParameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameter"
          },
          "description": "Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter."
        },
        "integrationParametersInternal": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParameters",
          "description": "Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter."
        },
        "lastModifierEmail": {
          "type": "string",
          "description": "Optional. The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lockHolder": {
          "type": "string",
          "description": "Optional. The edit lock holder's email address. Generated based on the End User Credentials/LOAS role of the user making the call."
        },
        "newIntegration": {
          "type": "boolean",
          "description": "Set this flag to true, if draft version is to be created for a brand new integration. False, if the request is for an existing integration. For backward compatibility reasons, even if this flag is set to `false` and no existing integration is found, a new draft integration will still be created."
        },
        "origin": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:VersionOrigin",
          "description": "Optional. The origin that indicates where this integration is coming from."
        },
        "parentTemplateId": {
          "type": "string",
          "description": "Optional. The id of the template which was used to create this integration_version."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runAsServiceAccount": {
          "type": "string",
          "description": "Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task."
        },
        "snapshotNumber": {
          "type": "string",
          "description": "Optional. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use \"HEAD\" tag to identify the head."
        },
        "taskConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTaskConfig"
          },
          "description": "Optional. Task configuration for the integration. It's optional, but the integration doesn't do anything without task_configs."
        },
        "taskConfigsInternal": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfig"
          },
          "description": "Optional. Task configuration for the integration. It's optional, but the integration doesn't do anything without task_configs."
        },
        "teardown": {
          "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTeardown",
          "description": "Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to \"finally\" in code."
        },
        "triggerConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTriggerConfig"
          },
          "description": "Optional. Trigger configurations."
        },
        "triggerConfigsInternal": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfig"
          },
          "description": "Optional. Trigger configurations."
        },
        "userLabel": {
          "type": "string",
          "description": "Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created."
        }
      },
      "requiredInputs": [
        "integrationId",
        "productId"
      ]
    },
    "google-native:jobs/v3:Company": {
      "description": "Creates a new company entity.",
      "properties": {
        "careerSiteUri": {
          "type": "string",
          "description": "Optional. The URI to employer's career site or careers page on the employer's web site, for example, \"https://careers.google.com\"."
        },
        "derivedInfo": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompanyDerivedInfoResponse",
          "description": "Derived details about the company."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the company, for example, \"Google LLC\"."
        },
        "eeoText": {
          "type": "string",
          "description": "Optional. Equal Employment Opportunity legal disclaimer text to be associated with all jobs, and typically to be displayed in all roles. The maximum number of allowed characters is 500."
        },
        "externalId": {
          "type": "string",
          "description": "Client side company identifier, used to uniquely identify the company. The maximum number of allowed characters is 255."
        },
        "headquartersAddress": {
          "type": "string",
          "description": "Optional. The street address of the company's main headquarters, which may be different from the job location. The service attempts to geolocate the provided address, and populates a more specific location wherever possible in DerivedInfo.headquarters_location."
        },
        "hiringAgency": {
          "type": "boolean",
          "description": "Optional. Set to true if it is the hiring agency that post jobs for other employers. Defaults to false if not provided."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. A URI that hosts the employer's company logo."
        },
        "keywordSearchableJobCustomAttributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword search. Jobs with `string_values` under these specified field keys are returned if any of the values matches the search keyword. Custom field values with parenthesis, brackets and special symbols won't be properly searchable, and those keyword queries need to be surrounded by quotes.",
          "deprecationMessage": "Optional. This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword search. Jobs with `string_values` under these specified field keys are returned if any of the values matches the search keyword. Custom field values with parenthesis, brackets and special symbols won't be properly searchable, and those keyword queries need to be surrounded by quotes."
        },
        "name": {
          "type": "string",
          "description": "Required during company update. The resource name for a company. This is generated by the service when a company is created. The format is \"projects/{project_id}/companies/{company_id}\", for example, \"projects/api-test-project/companies/foo\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "size": {
          "type": "string",
          "description": "Optional. The employer's company size."
        },
        "suspended": {
          "type": "boolean",
          "description": "Indicates whether a company is flagged to be suspended from public availability by the service when job content appears suspicious, abusive, or spammy."
        },
        "websiteUri": {
          "type": "string",
          "description": "Optional. The URI representing the company's primary web site or home page, for example, \"https://www.google.com\". The maximum number of allowed characters is 255."
        }
      },
      "type": "object",
      "required": [
        "careerSiteUri",
        "derivedInfo",
        "displayName",
        "eeoText",
        "externalId",
        "headquartersAddress",
        "hiringAgency",
        "imageUri",
        "keywordSearchableJobCustomAttributes",
        "name",
        "project",
        "size",
        "suspended",
        "websiteUri"
      ],
      "inputProperties": {
        "careerSiteUri": {
          "type": "string",
          "description": "Optional. The URI to employer's career site or careers page on the employer's web site, for example, \"https://careers.google.com\"."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the company, for example, \"Google LLC\"."
        },
        "eeoText": {
          "type": "string",
          "description": "Optional. Equal Employment Opportunity legal disclaimer text to be associated with all jobs, and typically to be displayed in all roles. The maximum number of allowed characters is 500."
        },
        "externalId": {
          "type": "string",
          "description": "Client side company identifier, used to uniquely identify the company. The maximum number of allowed characters is 255."
        },
        "headquartersAddress": {
          "type": "string",
          "description": "Optional. The street address of the company's main headquarters, which may be different from the job location. The service attempts to geolocate the provided address, and populates a more specific location wherever possible in DerivedInfo.headquarters_location."
        },
        "hiringAgency": {
          "type": "boolean",
          "description": "Optional. Set to true if it is the hiring agency that post jobs for other employers. Defaults to false if not provided."
        },
        "imageUri": {
          "type": "string",
          "description": "Optional. A URI that hosts the employer's company logo."
        },
        "keywordSearchableJobCustomAttributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword search. Jobs with `string_values` under these specified field keys are returned if any of the values matches the search keyword. Custom field values with parenthesis, brackets and special symbols won't be properly searchable, and those keyword queries need to be surrounded by quotes.",
          "deprecationMessage": "Optional. This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword search. Jobs with `string_values` under these specified field keys are returned if any of the values matches the search keyword. Custom field values with parenthesis, brackets and special symbols won't be properly searchable, and those keyword queries need to be surrounded by quotes."
        },
        "name": {
          "type": "string",
          "description": "Required during company update. The resource name for a company. This is generated by the service when a company is created. The format is \"projects/{project_id}/companies/{company_id}\", for example, \"projects/api-test-project/companies/foo\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "size": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompanySize",
          "description": "Optional. The employer's company size."
        },
        "websiteUri": {
          "type": "string",
          "description": "Optional. The URI representing the company's primary web site or home page, for example, \"https://www.google.com\". The maximum number of allowed characters is 255."
        }
      },
      "requiredInputs": [
        "displayName",
        "externalId"
      ]
    },
    "google-native:jobs/v3:Job": {
      "description": "Creates a new job. Typically, the job becomes searchable within 10 seconds, but it may take up to 5 minutes.",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional but strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. 'ReqA' becomes 'ReqA-1', 'ReqA-2', etc.) as multiple jobs with the same company_name, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses \"1600 Amphitheatre Parkway, Mountain View, CA, USA\" and \"London, UK\" may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500."
        },
        "applicationInfo": {
          "$ref": "#/types/google-native:jobs%2Fv3:ApplicationInfoResponse",
          "description": "At least one field within ApplicationInfo must be specified. Job application information."
        },
        "companyDisplayName": {
          "type": "string",
          "description": "Display name of the company listing the job."
        },
        "companyName": {
          "type": "string",
          "description": "The resource name of the company listing the job, such as \"projects/api-test-project/companies/foo\"."
        },
        "compensationInfo": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompensationInfoResponse",
          "description": "Optional. Job compensation information."
        },
        "customAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB."
        },
        "degreeTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The desired education degrees for the job, such as Bachelors, Masters."
        },
        "department": {
          "type": "string",
          "description": "Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255."
        },
        "derivedInfo": {
          "$ref": "#/types/google-native:jobs%2Fv3:JobDerivedInfoResponse",
          "description": "Derived details about the job posting."
        },
        "description": {
          "type": "string",
          "description": "The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000."
        },
        "employmentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The employment type(s) of a job, for example, full time or part time."
        },
        "incentives": {
          "type": "string",
          "description": "Optional. A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000."
        },
        "jobBenefits": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The benefits included with the job."
        },
        "jobEndTime": {
          "type": "string",
          "description": "Optional. The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored."
        },
        "jobLevel": {
          "type": "string",
          "description": "Optional. The experience level associated with the job, such as \"Entry Level\"."
        },
        "jobStartTime": {
          "type": "string",
          "description": "Optional. The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as \"en-US\" or \"sr-Latn\". For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=\"external\" target=\"_blank\" }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to 'en_US'."
        },
        "name": {
          "type": "string",
          "description": "Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is \"projects/{project_id}/jobs/{job_id}\", for example, \"projects/api-test-project/jobs/1234\". Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique."
        },
        "postingCreateTime": {
          "type": "string",
          "description": "The timestamp when this job posting was created."
        },
        "postingExpireTime": {
          "type": "string",
          "description": "Optional but strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can't be deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company_name, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not provided at the time of job creation or is invalid, the job posting expires after 30 days from the job's creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job's last update time. Otherwise the expiration date isn't updated."
        },
        "postingPublishTime": {
          "type": "string",
          "description": "Optional. The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored."
        },
        "postingRegion": {
          "type": "string",
          "description": "Optional. The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn't specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended."
        },
        "postingUpdateTime": {
          "type": "string",
          "description": "The timestamp when this job posting was last updated."
        },
        "processingOptions": {
          "$ref": "#/types/google-native:jobs%2Fv3:ProcessingOptionsResponse",
          "description": "Optional. Options for job processing."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotionValue": {
          "type": "integer",
          "description": "Optional. A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue >0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0."
        },
        "qualifications": {
          "type": "string",
          "description": "Optional. A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000."
        },
        "requisitionId": {
          "type": "string",
          "description": "The requisition ID, also referred to as the posting ID, assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255."
        },
        "responsibilities": {
          "type": "string",
          "description": "Optional. A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000."
        },
        "title": {
          "type": "string",
          "description": "The title of the job, such as \"Software Engineer\" The maximum number of allowed characters is 500."
        },
        "visibility": {
          "type": "string",
          "description": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
          "deprecationMessage": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified."
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "applicationInfo",
        "companyDisplayName",
        "companyName",
        "compensationInfo",
        "customAttributes",
        "degreeTypes",
        "department",
        "derivedInfo",
        "description",
        "employmentTypes",
        "incentives",
        "jobBenefits",
        "jobEndTime",
        "jobLevel",
        "jobStartTime",
        "languageCode",
        "name",
        "postingCreateTime",
        "postingExpireTime",
        "postingPublishTime",
        "postingRegion",
        "postingUpdateTime",
        "processingOptions",
        "project",
        "promotionValue",
        "qualifications",
        "requisitionId",
        "responsibilities",
        "title",
        "visibility"
      ],
      "inputProperties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional but strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. 'ReqA' becomes 'ReqA-1', 'ReqA-2', etc.) as multiple jobs with the same company_name, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses \"1600 Amphitheatre Parkway, Mountain View, CA, USA\" and \"London, UK\" may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500."
        },
        "applicationInfo": {
          "$ref": "#/types/google-native:jobs%2Fv3:ApplicationInfo",
          "description": "At least one field within ApplicationInfo must be specified. Job application information."
        },
        "companyName": {
          "type": "string",
          "description": "The resource name of the company listing the job, such as \"projects/api-test-project/companies/foo\"."
        },
        "compensationInfo": {
          "$ref": "#/types/google-native:jobs%2Fv3:CompensationInfo",
          "description": "Optional. Job compensation information."
        },
        "customAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB."
        },
        "degreeTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv3:JobDegreeTypesItem"
          },
          "description": "Optional. The desired education degrees for the job, such as Bachelors, Masters."
        },
        "department": {
          "type": "string",
          "description": "Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255."
        },
        "description": {
          "type": "string",
          "description": "The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000."
        },
        "employmentTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv3:JobEmploymentTypesItem"
          },
          "description": "Optional. The employment type(s) of a job, for example, full time or part time."
        },
        "incentives": {
          "type": "string",
          "description": "Optional. A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000."
        },
        "jobBenefits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv3:JobJobBenefitsItem"
          },
          "description": "Optional. The benefits included with the job."
        },
        "jobEndTime": {
          "type": "string",
          "description": "Optional. The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored."
        },
        "jobLevel": {
          "$ref": "#/types/google-native:jobs%2Fv3:JobJobLevel",
          "description": "Optional. The experience level associated with the job, such as \"Entry Level\"."
        },
        "jobStartTime": {
          "type": "string",
          "description": "Optional. The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as \"en-US\" or \"sr-Latn\". For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=\"external\" target=\"_blank\" }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to 'en_US'."
        },
        "name": {
          "type": "string",
          "description": "Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is \"projects/{project_id}/jobs/{job_id}\", for example, \"projects/api-test-project/jobs/1234\". Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique."
        },
        "postingExpireTime": {
          "type": "string",
          "description": "Optional but strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can't be deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company_name, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not provided at the time of job creation or is invalid, the job posting expires after 30 days from the job's creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job's last update time. Otherwise the expiration date isn't updated."
        },
        "postingPublishTime": {
          "type": "string",
          "description": "Optional. The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored."
        },
        "postingRegion": {
          "$ref": "#/types/google-native:jobs%2Fv3:JobPostingRegion",
          "description": "Optional. The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn't specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended."
        },
        "processingOptions": {
          "$ref": "#/types/google-native:jobs%2Fv3:ProcessingOptions",
          "description": "Optional. Options for job processing."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotionValue": {
          "type": "integer",
          "description": "Optional. A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue >0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0."
        },
        "qualifications": {
          "type": "string",
          "description": "Optional. A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000."
        },
        "requisitionId": {
          "type": "string",
          "description": "The requisition ID, also referred to as the posting ID, assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255."
        },
        "responsibilities": {
          "type": "string",
          "description": "Optional. A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000."
        },
        "title": {
          "type": "string",
          "description": "The title of the job, such as \"Software Engineer\" The maximum number of allowed characters is 500."
        },
        "visibility": {
          "$ref": "#/types/google-native:jobs%2Fv3:JobVisibility",
          "description": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
          "deprecationMessage": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified."
        }
      },
      "requiredInputs": [
        "applicationInfo",
        "companyName",
        "description",
        "requisitionId",
        "title"
      ]
    },
    "google-native:jobs/v4:Company": {
      "description": "Creates a new company entity.",
      "properties": {
        "careerSiteUri": {
          "type": "string",
          "description": "The URI to employer's career site or careers page on the employer's web site, for example, \"https://careers.google.com\"."
        },
        "derivedInfo": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompanyDerivedInfoResponse",
          "description": "Derived details about the company."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the company, for example, \"Google LLC\"."
        },
        "eeoText": {
          "type": "string",
          "description": "Equal Employment Opportunity legal disclaimer text to be associated with all jobs, and typically to be displayed in all roles. The maximum number of allowed characters is 500."
        },
        "externalId": {
          "type": "string",
          "description": "Client side company identifier, used to uniquely identify the company. The maximum number of allowed characters is 255."
        },
        "headquartersAddress": {
          "type": "string",
          "description": "The street address of the company's main headquarters, which may be different from the job location. The service attempts to geolocate the provided address, and populates a more specific location wherever possible in DerivedInfo.headquarters_location."
        },
        "hiringAgency": {
          "type": "boolean",
          "description": "Set to true if it is the hiring agency that post jobs for other employers. Defaults to false if not provided."
        },
        "imageUri": {
          "type": "string",
          "description": "A URI that hosts the employer's company logo."
        },
        "keywordSearchableJobCustomAttributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword searches. Jobs with `string_values` under these specified field keys are returned if any of the values match the search keyword. Custom field values with parenthesis, brackets and special symbols are not searchable as-is, and those keyword queries must be surrounded by quotes.",
          "deprecationMessage": "This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword searches. Jobs with `string_values` under these specified field keys are returned if any of the values match the search keyword. Custom field values with parenthesis, brackets and special symbols are not searchable as-is, and those keyword queries must be surrounded by quotes."
        },
        "name": {
          "type": "string",
          "description": "Required during company update. The resource name for a company. This is generated by the service when a company is created. The format is \"projects/{project_id}/tenants/{tenant_id}/companies/{company_id}\", for example, \"projects/foo/tenants/bar/companies/baz\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "size": {
          "type": "string",
          "description": "The employer's company size."
        },
        "suspended": {
          "type": "boolean",
          "description": "Indicates whether a company is flagged to be suspended from public availability by the service when job content appears suspicious, abusive, or spammy."
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "websiteUri": {
          "type": "string",
          "description": "The URI representing the company's primary web site or home page, for example, \"https://www.google.com\". The maximum number of allowed characters is 255."
        }
      },
      "type": "object",
      "required": [
        "careerSiteUri",
        "derivedInfo",
        "displayName",
        "eeoText",
        "externalId",
        "headquartersAddress",
        "hiringAgency",
        "imageUri",
        "keywordSearchableJobCustomAttributes",
        "name",
        "project",
        "size",
        "suspended",
        "tenantId",
        "websiteUri"
      ],
      "inputProperties": {
        "careerSiteUri": {
          "type": "string",
          "description": "The URI to employer's career site or careers page on the employer's web site, for example, \"https://careers.google.com\"."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the company, for example, \"Google LLC\"."
        },
        "eeoText": {
          "type": "string",
          "description": "Equal Employment Opportunity legal disclaimer text to be associated with all jobs, and typically to be displayed in all roles. The maximum number of allowed characters is 500."
        },
        "externalId": {
          "type": "string",
          "description": "Client side company identifier, used to uniquely identify the company. The maximum number of allowed characters is 255."
        },
        "headquartersAddress": {
          "type": "string",
          "description": "The street address of the company's main headquarters, which may be different from the job location. The service attempts to geolocate the provided address, and populates a more specific location wherever possible in DerivedInfo.headquarters_location."
        },
        "hiringAgency": {
          "type": "boolean",
          "description": "Set to true if it is the hiring agency that post jobs for other employers. Defaults to false if not provided."
        },
        "imageUri": {
          "type": "string",
          "description": "A URI that hosts the employer's company logo."
        },
        "keywordSearchableJobCustomAttributes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword searches. Jobs with `string_values` under these specified field keys are returned if any of the values match the search keyword. Custom field values with parenthesis, brackets and special symbols are not searchable as-is, and those keyword queries must be surrounded by quotes.",
          "deprecationMessage": "This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword searches. Jobs with `string_values` under these specified field keys are returned if any of the values match the search keyword. Custom field values with parenthesis, brackets and special symbols are not searchable as-is, and those keyword queries must be surrounded by quotes."
        },
        "name": {
          "type": "string",
          "description": "Required during company update. The resource name for a company. This is generated by the service when a company is created. The format is \"projects/{project_id}/tenants/{tenant_id}/companies/{company_id}\", for example, \"projects/foo/tenants/bar/companies/baz\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "size": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompanySize",
          "description": "The employer's company size."
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "websiteUri": {
          "type": "string",
          "description": "The URI representing the company's primary web site or home page, for example, \"https://www.google.com\". The maximum number of allowed characters is 255."
        }
      },
      "requiredInputs": [
        "displayName",
        "externalId",
        "tenantId"
      ]
    },
    "google-native:jobs/v4:Job": {
      "description": "Creates a new job. Typically, the job becomes searchable within 10 seconds, but it may take up to 5 minutes.",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. 'ReqA' becomes 'ReqA-1', 'ReqA-2', and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses \"1600 Amphitheatre Parkway, Mountain View, CA, USA\" and \"London, UK\" may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500."
        },
        "applicationInfo": {
          "$ref": "#/types/google-native:jobs%2Fv4:ApplicationInfoResponse",
          "description": "Job application information."
        },
        "company": {
          "type": "string",
          "description": "The resource name of the company listing the job. The format is \"projects/{project_id}/tenants/{tenant_id}/companies/{company_id}\". For example, \"projects/foo/tenants/bar/companies/baz\"."
        },
        "companyDisplayName": {
          "type": "string",
          "description": "Display name of the company listing the job."
        },
        "compensationInfo": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompensationInfoResponse",
          "description": "Job compensation information (a.k.a. \"pay rate\") i.e., the compensation that will paid to the employee."
        },
        "customAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: `a-zA-Z*`. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB."
        },
        "degreeTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The desired education degrees for the job, such as Bachelors, Masters."
        },
        "department": {
          "type": "string",
          "description": "The department or functional area within the company with the open position. The maximum number of allowed characters is 255."
        },
        "derivedInfo": {
          "$ref": "#/types/google-native:jobs%2Fv4:JobDerivedInfoResponse",
          "description": "Derived details about the job posting."
        },
        "description": {
          "type": "string",
          "description": "The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000."
        },
        "employmentTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The employment type(s) of a job, for example, full time or part time."
        },
        "incentives": {
          "type": "string",
          "description": "A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000."
        },
        "jobBenefits": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The benefits included with the job."
        },
        "jobEndTime": {
          "type": "string",
          "description": "The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored."
        },
        "jobLevel": {
          "type": "string",
          "description": "The experience level associated with the job, such as \"Entry Level\"."
        },
        "jobStartTime": {
          "type": "string",
          "description": "The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as \"en-US\" or \"sr-Latn\". For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=\"external\" target=\"_blank\" }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to 'en_US'."
        },
        "name": {
          "type": "string",
          "description": "Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is \"projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}\". For example, \"projects/foo/tenants/bar/jobs/baz\". Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique."
        },
        "postingCreateTime": {
          "type": "string",
          "description": "The timestamp when this job posting was created."
        },
        "postingExpireTime": {
          "type": "string",
          "description": "Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can't be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn't exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn't provided at the time of job creation or is invalid, the job posting expires after 30 days from the job's creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn't provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job's last update time. Otherwise the expiration date isn't updated."
        },
        "postingPublishTime": {
          "type": "string",
          "description": "The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored."
        },
        "postingRegion": {
          "type": "string",
          "description": "The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn't specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended."
        },
        "postingUpdateTime": {
          "type": "string",
          "description": "The timestamp when this job posting was last updated."
        },
        "processingOptions": {
          "$ref": "#/types/google-native:jobs%2Fv4:ProcessingOptionsResponse",
          "description": "Options for job processing."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotionValue": {
          "type": "integer",
          "description": "A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue >0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0."
        },
        "qualifications": {
          "type": "string",
          "description": "A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000."
        },
        "requisitionId": {
          "type": "string",
          "description": "The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn't allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255."
        },
        "responsibilities": {
          "type": "string",
          "description": "A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000."
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "title": {
          "type": "string",
          "description": "The title of the job, such as \"Software Engineer\" The maximum number of allowed characters is 500."
        },
        "visibility": {
          "type": "string",
          "description": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
          "deprecationMessage": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified."
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "applicationInfo",
        "company",
        "companyDisplayName",
        "compensationInfo",
        "customAttributes",
        "degreeTypes",
        "department",
        "derivedInfo",
        "description",
        "employmentTypes",
        "incentives",
        "jobBenefits",
        "jobEndTime",
        "jobLevel",
        "jobStartTime",
        "languageCode",
        "name",
        "postingCreateTime",
        "postingExpireTime",
        "postingPublishTime",
        "postingRegion",
        "postingUpdateTime",
        "processingOptions",
        "project",
        "promotionValue",
        "qualifications",
        "requisitionId",
        "responsibilities",
        "tenantId",
        "title",
        "visibility"
      ],
      "inputProperties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. 'ReqA' becomes 'ReqA-1', 'ReqA-2', and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses \"1600 Amphitheatre Parkway, Mountain View, CA, USA\" and \"London, UK\" may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500."
        },
        "applicationInfo": {
          "$ref": "#/types/google-native:jobs%2Fv4:ApplicationInfo",
          "description": "Job application information."
        },
        "company": {
          "type": "string",
          "description": "The resource name of the company listing the job. The format is \"projects/{project_id}/tenants/{tenant_id}/companies/{company_id}\". For example, \"projects/foo/tenants/bar/companies/baz\"."
        },
        "compensationInfo": {
          "$ref": "#/types/google-native:jobs%2Fv4:CompensationInfo",
          "description": "Job compensation information (a.k.a. \"pay rate\") i.e., the compensation that will paid to the employee."
        },
        "customAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: `a-zA-Z*`. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB."
        },
        "degreeTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv4:JobDegreeTypesItem"
          },
          "description": "The desired education degrees for the job, such as Bachelors, Masters."
        },
        "department": {
          "type": "string",
          "description": "The department or functional area within the company with the open position. The maximum number of allowed characters is 255."
        },
        "description": {
          "type": "string",
          "description": "The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000."
        },
        "employmentTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv4:JobEmploymentTypesItem"
          },
          "description": "The employment type(s) of a job, for example, full time or part time."
        },
        "incentives": {
          "type": "string",
          "description": "A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000."
        },
        "jobBenefits": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:jobs%2Fv4:JobJobBenefitsItem"
          },
          "description": "The benefits included with the job."
        },
        "jobEndTime": {
          "type": "string",
          "description": "The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored."
        },
        "jobLevel": {
          "$ref": "#/types/google-native:jobs%2Fv4:JobJobLevel",
          "description": "The experience level associated with the job, such as \"Entry Level\"."
        },
        "jobStartTime": {
          "type": "string",
          "description": "The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored."
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as \"en-US\" or \"sr-Latn\". For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=\"external\" target=\"_blank\" }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to 'en_US'."
        },
        "name": {
          "type": "string",
          "description": "Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is \"projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}\". For example, \"projects/foo/tenants/bar/jobs/baz\". Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique."
        },
        "postingExpireTime": {
          "type": "string",
          "description": "Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can't be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn't exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn't provided at the time of job creation or is invalid, the job posting expires after 30 days from the job's creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn't provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job's last update time. Otherwise the expiration date isn't updated."
        },
        "postingPublishTime": {
          "type": "string",
          "description": "The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored."
        },
        "postingRegion": {
          "$ref": "#/types/google-native:jobs%2Fv4:JobPostingRegion",
          "description": "The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn't specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended."
        },
        "processingOptions": {
          "$ref": "#/types/google-native:jobs%2Fv4:ProcessingOptions",
          "description": "Options for job processing."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotionValue": {
          "type": "integer",
          "description": "A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue >0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0."
        },
        "qualifications": {
          "type": "string",
          "description": "A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000."
        },
        "requisitionId": {
          "type": "string",
          "description": "The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn't allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255."
        },
        "responsibilities": {
          "type": "string",
          "description": "A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000."
        },
        "tenantId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "title": {
          "type": "string",
          "description": "The title of the job, such as \"Software Engineer\" The maximum number of allowed characters is 500."
        },
        "visibility": {
          "$ref": "#/types/google-native:jobs%2Fv4:JobVisibility",
          "description": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
          "deprecationMessage": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified."
        }
      },
      "requiredInputs": [
        "company",
        "description",
        "requisitionId",
        "tenantId",
        "title"
      ]
    },
    "google-native:jobs/v4:Tenant": {
      "description": "Creates a new tenant entity.",
      "properties": {
        "externalId": {
          "type": "string",
          "description": "Client side tenant identifier, used to uniquely identify the tenant. The maximum number of allowed characters is 255."
        },
        "name": {
          "type": "string",
          "description": "Required during tenant update. The resource name for a tenant. This is generated by the service when a tenant is created. The format is \"projects/{project_id}/tenants/{tenant_id}\", for example, \"projects/foo/tenants/bar\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "externalId",
        "name",
        "project"
      ],
      "inputProperties": {
        "externalId": {
          "type": "string",
          "description": "Client side tenant identifier, used to uniquely identify the tenant. The maximum number of allowed characters is 255."
        },
        "name": {
          "type": "string",
          "description": "Required during tenant update. The resource name for a tenant. This is generated by the service when a tenant is created. The format is \"projects/{project_id}/tenants/{tenant_id}\", for example, \"projects/foo/tenants/bar\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "externalId"
      ]
    },
    "google-native:logging/v2:BillingAccountBucket": {
      "description": "Creates a log bucket that can be used to store log entries. After a bucket has been created, the bucket's location cannot be changed.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "analyticsEnabled": {
          "type": "boolean",
          "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bucketId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-bucket\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        },
        "cmekSettings": {
          "$ref": "#/types/google-native:logging%2Fv2:CmekSettingsResponse",
          "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the bucket. This is not set for any of the default buckets."
        },
        "description": {
          "type": "string",
          "description": "Describes this bucket."
        },
        "indexConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:IndexConfigResponse"
          },
          "description": "A list of indexed fields and related configuration data."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The bucket lifecycle state."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the bucket.For example:projects/my-project/locations/global/buckets/my-bucketFor a list of supported locations, see Supported Regions (https://cloud.google.com/logging/docs/region-support)For the location of global it is unspecified where log entries are actually stored.After a bucket has been created, the location cannot be changed."
        },
        "restrictedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)"
        },
        "retentionDays": {
          "type": "integer",
          "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the bucket."
        }
      },
      "type": "object",
      "required": [
        "analyticsEnabled",
        "billingAccountId",
        "bucketId",
        "cmekSettings",
        "createTime",
        "description",
        "indexConfigs",
        "lifecycleState",
        "location",
        "locked",
        "name",
        "restrictedFields",
        "retentionDays",
        "updateTime"
      ],
      "inputProperties": {
        "analyticsEnabled": {
          "type": "boolean",
          "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bucketId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-bucket\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        },
        "cmekSettings": {
          "$ref": "#/types/google-native:logging%2Fv2:CmekSettings",
          "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
        },
        "description": {
          "type": "string",
          "description": "Describes this bucket."
        },
        "indexConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:IndexConfig"
          },
          "description": "A list of indexed fields and related configuration data."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty."
        },
        "restrictedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)"
        },
        "retentionDays": {
          "type": "integer",
          "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used."
        }
      },
      "requiredInputs": [
        "billingAccountId",
        "bucketId"
      ]
    },
    "google-native:logging/v2:BillingAccountBucketLink": {
      "description": "Asynchronously creates a linked dataset in BigQuery which makes it possible to use BigQuery to read the logs stored in the log bucket. A log bucket may currently only contain one link.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryDatasetResponse",
          "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the link."
        },
        "description": {
          "type": "string",
          "description": "Describes this link.The maximum length of the description is 8000 characters."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The resource lifecycle state."
        },
        "linkId": {
          "type": "string",
          "description": "Required. The ID to use for the link. The link_id can have up to 100 characters. A valid link_id must only have alphanumeric characters and underscores within it.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link"
        }
      },
      "type": "object",
      "required": [
        "bigqueryDataset",
        "billingAccountId",
        "bucketId",
        "createTime",
        "description",
        "lifecycleState",
        "linkId",
        "location",
        "name"
      ],
      "inputProperties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryDataset",
          "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Describes this link.The maximum length of the description is 8000 characters."
        },
        "linkId": {
          "type": "string",
          "description": "Required. The ID to use for the link. The link_id can have up to 100 characters. A valid link_id must only have alphanumeric characters and underscores within it.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link"
        }
      },
      "requiredInputs": [
        "billingAccountId",
        "bucketId",
        "linkId"
      ]
    },
    "google-native:logging/v2:BillingAccountBucketView": {
      "description": "Creates a view over log entries in a log bucket. A bucket may contain a maximum of 30 views.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the view."
        },
        "description": {
          "type": "string",
          "description": "Describes this view."
        },
        "filter": {
          "type": "string",
          "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view"
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the view."
        },
        "viewId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-view\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "billingAccountId",
        "bucketId",
        "createTime",
        "description",
        "filter",
        "location",
        "name",
        "updateTime",
        "viewId"
      ],
      "inputProperties": {
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Describes this view."
        },
        "filter": {
          "type": "string",
          "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view"
        },
        "viewId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-view\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "billingAccountId",
        "bucketId",
        "viewId"
      ]
    },
    "google-native:logging/v2:BillingAccountExclusion": {
      "description": "Creates a new exclusion in the _Default sink in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
      "properties": {
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions."
        }
      },
      "type": "object",
      "required": [
        "billingAccountId",
        "createTime",
        "description",
        "disabled",
        "filter",
        "name",
        "updateTime"
      ],
      "inputProperties": {
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        }
      },
      "requiredInputs": [
        "billingAccountId",
        "filter"
      ]
    },
    "google-native:logging/v2:BillingAccountSink": {
      "description": "Creates a sink that exports specified log entries to a destination. The export begins upon ingress, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
      "properties": {
        "bigqueryOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptionsResponse",
          "description": "Optional. Options that affect sinks exporting data to BigQuery."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the sink.This field may not be present for older sinks."
        },
        "customWriterIdentity": {
          "type": "string",
          "description": "Optional. A service account provided by the caller that will be used to write the log entries. The format must be serviceAccount:some@email. This field can only be specified if you are routing logs to a destination outside this sink's project. If not specified, a Logging service account will automatically be generated."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters."
        },
        "destination": {
          "type": "string",
          "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs)."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries."
        },
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LogExclusionResponse"
          },
          "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR"
        },
        "includeChildren": {
          "type": "boolean",
          "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance"
        },
        "name": {
          "type": "string",
          "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "outputVersionFormat": {
          "type": "string",
          "description": "Deprecated. This field is unused.",
          "deprecationMessage": "Deprecated. This field is unused."
        },
        "uniqueWriterIdentity": {
          "type": "boolean",
          "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Cloud Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a service agent (https://cloud.google.com/iam/docs/service-account-types#service-agents) used by the sinks with the same parent. For more information, see writer_identity in LogSink."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the sink.This field may not be present for older sinks."
        },
        "writerIdentity": {
          "type": "string",
          "description": "An IAM identity—a service account or group—under which Cloud Logging writes the exported log entries to the sink's destination. This field is either set by specifying custom_writer_identity or set automatically by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.Sinks that have a destination that is a log bucket in the same project as the sink cannot have a writer_identity and no additional permissions are required."
        }
      },
      "type": "object",
      "required": [
        "bigqueryOptions",
        "billingAccountId",
        "createTime",
        "description",
        "destination",
        "disabled",
        "exclusions",
        "filter",
        "includeChildren",
        "name",
        "outputVersionFormat",
        "updateTime",
        "writerIdentity"
      ],
      "inputProperties": {
        "bigqueryOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptions",
          "description": "Optional. Options that affect sinks exporting data to BigQuery."
        },
        "billingAccountId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customWriterIdentity": {
          "type": "string",
          "description": "Optional. A service account provided by the caller that will be used to write the log entries. The format must be serviceAccount:some@email. This field can only be specified if you are routing logs to a destination outside this sink's project. If not specified, a Logging service account will automatically be generated."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters."
        },
        "destination": {
          "type": "string",
          "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs)."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries."
        },
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LogExclusion"
          },
          "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR"
        },
        "includeChildren": {
          "type": "boolean",
          "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance"
        },
        "name": {
          "type": "string",
          "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "outputVersionFormat": {
          "$ref": "#/types/google-native:logging%2Fv2:BillingAccountSinkOutputVersionFormat",
          "description": "Deprecated. This field is unused.",
          "deprecationMessage": "Deprecated. This field is unused."
        },
        "uniqueWriterIdentity": {
          "type": "boolean",
          "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Cloud Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a service agent (https://cloud.google.com/iam/docs/service-account-types#service-agents) used by the sinks with the same parent. For more information, see writer_identity in LogSink."
        }
      },
      "requiredInputs": [
        "billingAccountId",
        "destination"
      ]
    },
    "google-native:logging/v2:Bucket": {
      "description": "Creates a log bucket that can be used to store log entries. After a bucket has been created, the bucket's location cannot be changed.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "analyticsEnabled": {
          "type": "boolean",
          "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled."
        },
        "bucketId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-bucket\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        },
        "cmekSettings": {
          "$ref": "#/types/google-native:logging%2Fv2:CmekSettingsResponse",
          "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the bucket. This is not set for any of the default buckets."
        },
        "description": {
          "type": "string",
          "description": "Describes this bucket."
        },
        "indexConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:IndexConfigResponse"
          },
          "description": "A list of indexed fields and related configuration data."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The bucket lifecycle state."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the bucket.For example:projects/my-project/locations/global/buckets/my-bucketFor a list of supported locations, see Supported Regions (https://cloud.google.com/logging/docs/region-support)For the location of global it is unspecified where log entries are actually stored.After a bucket has been created, the location cannot be changed."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restrictedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)"
        },
        "retentionDays": {
          "type": "integer",
          "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the bucket."
        }
      },
      "type": "object",
      "required": [
        "analyticsEnabled",
        "bucketId",
        "cmekSettings",
        "createTime",
        "description",
        "indexConfigs",
        "lifecycleState",
        "location",
        "locked",
        "name",
        "project",
        "restrictedFields",
        "retentionDays",
        "updateTime"
      ],
      "inputProperties": {
        "analyticsEnabled": {
          "type": "boolean",
          "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled."
        },
        "bucketId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-bucket\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        },
        "cmekSettings": {
          "$ref": "#/types/google-native:logging%2Fv2:CmekSettings",
          "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
        },
        "description": {
          "type": "string",
          "description": "Describes this bucket."
        },
        "indexConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:IndexConfig"
          },
          "description": "A list of indexed fields and related configuration data."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restrictedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)"
        },
        "retentionDays": {
          "type": "integer",
          "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used."
        }
      },
      "requiredInputs": [
        "bucketId"
      ]
    },
    "google-native:logging/v2:BucketView": {
      "description": "Creates a view over log entries in a log bucket. A bucket may contain a maximum of 30 views.",
      "properties": {
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the view."
        },
        "description": {
          "type": "string",
          "description": "Describes this view."
        },
        "filter": {
          "type": "string",
          "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the view."
        },
        "viewId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-view\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bucketId",
        "createTime",
        "description",
        "filter",
        "location",
        "name",
        "project",
        "updateTime",
        "viewId"
      ],
      "inputProperties": {
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Describes this view."
        },
        "filter": {
          "type": "string",
          "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "viewId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-view\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "bucketId",
        "viewId"
      ]
    },
    "google-native:logging/v2:Exclusion": {
      "description": "Creates a new exclusion in the _Default sink in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "disabled",
        "filter",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "filter"
      ]
    },
    "google-native:logging/v2:FolderBucket": {
      "description": "Creates a log bucket that can be used to store log entries. After a bucket has been created, the bucket's location cannot be changed.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "analyticsEnabled": {
          "type": "boolean",
          "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled."
        },
        "bucketId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-bucket\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        },
        "cmekSettings": {
          "$ref": "#/types/google-native:logging%2Fv2:CmekSettingsResponse",
          "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the bucket. This is not set for any of the default buckets."
        },
        "description": {
          "type": "string",
          "description": "Describes this bucket."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "indexConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:IndexConfigResponse"
          },
          "description": "A list of indexed fields and related configuration data."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The bucket lifecycle state."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the bucket.For example:projects/my-project/locations/global/buckets/my-bucketFor a list of supported locations, see Supported Regions (https://cloud.google.com/logging/docs/region-support)For the location of global it is unspecified where log entries are actually stored.After a bucket has been created, the location cannot be changed."
        },
        "restrictedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)"
        },
        "retentionDays": {
          "type": "integer",
          "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the bucket."
        }
      },
      "type": "object",
      "required": [
        "analyticsEnabled",
        "bucketId",
        "cmekSettings",
        "createTime",
        "description",
        "folderId",
        "indexConfigs",
        "lifecycleState",
        "location",
        "locked",
        "name",
        "restrictedFields",
        "retentionDays",
        "updateTime"
      ],
      "inputProperties": {
        "analyticsEnabled": {
          "type": "boolean",
          "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled."
        },
        "bucketId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-bucket\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        },
        "cmekSettings": {
          "$ref": "#/types/google-native:logging%2Fv2:CmekSettings",
          "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
        },
        "description": {
          "type": "string",
          "description": "Describes this bucket."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "indexConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:IndexConfig"
          },
          "description": "A list of indexed fields and related configuration data."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty."
        },
        "restrictedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)"
        },
        "retentionDays": {
          "type": "integer",
          "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used."
        }
      },
      "requiredInputs": [
        "bucketId",
        "folderId"
      ]
    },
    "google-native:logging/v2:FolderBucketLink": {
      "description": "Asynchronously creates a linked dataset in BigQuery which makes it possible to use BigQuery to read the logs stored in the log bucket. A log bucket may currently only contain one link.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryDatasetResponse",
          "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the link."
        },
        "description": {
          "type": "string",
          "description": "Describes this link.The maximum length of the description is 8000 characters."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lifecycleState": {
          "type": "string",
          "description": "The resource lifecycle state."
        },
        "linkId": {
          "type": "string",
          "description": "Required. The ID to use for the link. The link_id can have up to 100 characters. A valid link_id must only have alphanumeric characters and underscores within it.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link"
        }
      },
      "type": "object",
      "required": [
        "bigqueryDataset",
        "bucketId",
        "createTime",
        "description",
        "folderId",
        "lifecycleState",
        "linkId",
        "location",
        "name"
      ],
      "inputProperties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryDataset",
          "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Describes this link.The maximum length of the description is 8000 characters."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "linkId": {
          "type": "string",
          "description": "Required. The ID to use for the link. The link_id can have up to 100 characters. A valid link_id must only have alphanumeric characters and underscores within it.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link"
        }
      },
      "requiredInputs": [
        "bucketId",
        "folderId",
        "linkId"
      ]
    },
    "google-native:logging/v2:FolderBucketView": {
      "description": "Creates a view over log entries in a log bucket. A bucket may contain a maximum of 30 views.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the view."
        },
        "description": {
          "type": "string",
          "description": "Describes this view."
        },
        "filter": {
          "type": "string",
          "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")"
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view"
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the view."
        },
        "viewId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-view\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bucketId",
        "createTime",
        "description",
        "filter",
        "folderId",
        "location",
        "name",
        "updateTime",
        "viewId"
      ],
      "inputProperties": {
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Describes this view."
        },
        "filter": {
          "type": "string",
          "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")"
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view"
        },
        "viewId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-view\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "bucketId",
        "folderId",
        "viewId"
      ]
    },
    "google-native:logging/v2:FolderExclusion": {
      "description": "Creates a new exclusion in the _Default sink in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "disabled",
        "filter",
        "folderId",
        "name",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        }
      },
      "requiredInputs": [
        "filter",
        "folderId"
      ]
    },
    "google-native:logging/v2:FolderSink": {
      "description": "Creates a sink that exports specified log entries to a destination. The export begins upon ingress, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
      "properties": {
        "bigqueryOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptionsResponse",
          "description": "Optional. Options that affect sinks exporting data to BigQuery."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the sink.This field may not be present for older sinks."
        },
        "customWriterIdentity": {
          "type": "string",
          "description": "Optional. A service account provided by the caller that will be used to write the log entries. The format must be serviceAccount:some@email. This field can only be specified if you are routing logs to a destination outside this sink's project. If not specified, a Logging service account will automatically be generated."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters."
        },
        "destination": {
          "type": "string",
          "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs)."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries."
        },
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LogExclusionResponse"
          },
          "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR"
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "includeChildren": {
          "type": "boolean",
          "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance"
        },
        "name": {
          "type": "string",
          "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "outputVersionFormat": {
          "type": "string",
          "description": "Deprecated. This field is unused.",
          "deprecationMessage": "Deprecated. This field is unused."
        },
        "uniqueWriterIdentity": {
          "type": "boolean",
          "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Cloud Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a service agent (https://cloud.google.com/iam/docs/service-account-types#service-agents) used by the sinks with the same parent. For more information, see writer_identity in LogSink."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the sink.This field may not be present for older sinks."
        },
        "writerIdentity": {
          "type": "string",
          "description": "An IAM identity—a service account or group—under which Cloud Logging writes the exported log entries to the sink's destination. This field is either set by specifying custom_writer_identity or set automatically by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.Sinks that have a destination that is a log bucket in the same project as the sink cannot have a writer_identity and no additional permissions are required."
        }
      },
      "type": "object",
      "required": [
        "bigqueryOptions",
        "createTime",
        "description",
        "destination",
        "disabled",
        "exclusions",
        "filter",
        "folderId",
        "includeChildren",
        "name",
        "outputVersionFormat",
        "updateTime",
        "writerIdentity"
      ],
      "inputProperties": {
        "bigqueryOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptions",
          "description": "Optional. Options that affect sinks exporting data to BigQuery."
        },
        "customWriterIdentity": {
          "type": "string",
          "description": "Optional. A service account provided by the caller that will be used to write the log entries. The format must be serviceAccount:some@email. This field can only be specified if you are routing logs to a destination outside this sink's project. If not specified, a Logging service account will automatically be generated."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters."
        },
        "destination": {
          "type": "string",
          "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs)."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries."
        },
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LogExclusion"
          },
          "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR"
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "includeChildren": {
          "type": "boolean",
          "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance"
        },
        "name": {
          "type": "string",
          "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "outputVersionFormat": {
          "$ref": "#/types/google-native:logging%2Fv2:FolderSinkOutputVersionFormat",
          "description": "Deprecated. This field is unused.",
          "deprecationMessage": "Deprecated. This field is unused."
        },
        "uniqueWriterIdentity": {
          "type": "boolean",
          "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Cloud Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a service agent (https://cloud.google.com/iam/docs/service-account-types#service-agents) used by the sinks with the same parent. For more information, see writer_identity in LogSink."
        }
      },
      "requiredInputs": [
        "destination",
        "folderId"
      ]
    },
    "google-native:logging/v2:Link": {
      "description": "Asynchronously creates a linked dataset in BigQuery which makes it possible to use BigQuery to read the logs stored in the log bucket. A log bucket may currently only contain one link.",
      "properties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryDatasetResponse",
          "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the link."
        },
        "description": {
          "type": "string",
          "description": "Describes this link.The maximum length of the description is 8000 characters."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The resource lifecycle state."
        },
        "linkId": {
          "type": "string",
          "description": "Required. The ID to use for the link. The link_id can have up to 100 characters. A valid link_id must only have alphanumeric characters and underscores within it.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bigqueryDataset",
        "bucketId",
        "createTime",
        "description",
        "lifecycleState",
        "linkId",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryDataset",
          "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Describes this link.The maximum length of the description is 8000 characters."
        },
        "linkId": {
          "type": "string",
          "description": "Required. The ID to use for the link. The link_id can have up to 100 characters. A valid link_id must only have alphanumeric characters and underscores within it.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "bucketId",
        "linkId"
      ]
    },
    "google-native:logging/v2:Metric": {
      "description": "Creates a logs-based metric.",
      "properties": {
        "bucketName": {
          "type": "string",
          "description": "Optional. The resource name of the Log Bucket that owns the Log Metric. Only Log Buckets in projects are supported. The bucket has to be in the same project as the metric.For example:projects/my-project/locations/global/buckets/my-bucketIf empty, then the Log Metric is considered a non-Bucket Log Metric."
        },
        "bucketOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BucketOptionsResponse",
          "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the metric.This field may not be present for older metrics."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this metric, which is used in documentation. The maximum length of the description is 8000 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this metric is disabled and it does not generate any points."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced_filters) which is used to match log entries. Example: \"resource.type=gae_app AND severity>=ERROR\" The maximum length of the filter is 20000 characters."
        },
        "labelExtractors": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map from a label key string to an extractor expression which is used to extract data from a log entry field and assign as the label value. Each label key specified in the LabelDescriptor must have an associated extractor expression in this map. The syntax of the extractor expression is the same as for the value_extractor field.The extracted value is converted to the type defined in the label descriptor. If either the extraction or the type conversion fails, the label will have a default value. The default value for a string label is an empty string, for an integer label its 0, and for a boolean label its false.Note that there are upper bounds on the maximum number of labels and the number of active time series that are allowed in a project."
        },
        "metricDescriptor": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptorResponse",
          "description": "Optional. The metric descriptor associated with the logs-based metric. If unspecified, it uses a default metric descriptor with a DELTA metric kind, INT64 value type, with no labels and a unit of \"1\". Such a metric counts the number of log entries matching the filter expression.The name, type, and description fields in the metric_descriptor are output only, and is constructed using the name and description field in the LogMetric.To create a logs-based metric that records a distribution of log values, a DELTA metric kind with a DISTRIBUTION value type must be used along with a value_extractor expression in the LogMetric.Each label in the metric descriptor must have a matching label name as the key and an extractor expression as the value in the label_extractors map.The metric_kind and value_type fields in the metric_descriptor cannot be updated once initially configured. New labels can be added in the metric_descriptor, but existing labels cannot be modified except for their description."
        },
        "name": {
          "type": "string",
          "description": "The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.This field is the [METRIC_ID] part of a metric resource name in the format \"projects/PROJECT_ID/metrics/METRIC_ID\". Example: If the resource name of a metric is \"projects/my-project/metrics/nginx%2Frequests\", this field's value is \"nginx/requests\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the metric.This field may not be present for older metrics."
        },
        "valueExtractor": {
          "type": "string",
          "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The arguments are: field: The name of the log entry field from which the value is to be extracted. regex: A regular expression using the Google RE2 syntax (https://github.com/google/re2/wiki/Syntax) with a single capture group to extract data from the specified log entry field. The value of the field is converted to a string before applying the regex. It is an error to specify a regex that does not include exactly one capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")"
        },
        "version": {
          "type": "string",
          "description": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.",
          "deprecationMessage": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed."
        }
      },
      "type": "object",
      "required": [
        "bucketName",
        "bucketOptions",
        "createTime",
        "description",
        "disabled",
        "filter",
        "labelExtractors",
        "metricDescriptor",
        "name",
        "project",
        "updateTime",
        "valueExtractor",
        "version"
      ],
      "inputProperties": {
        "bucketName": {
          "type": "string",
          "description": "Optional. The resource name of the Log Bucket that owns the Log Metric. Only Log Buckets in projects are supported. The bucket has to be in the same project as the metric.For example:projects/my-project/locations/global/buckets/my-bucketIf empty, then the Log Metric is considered a non-Bucket Log Metric."
        },
        "bucketOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BucketOptions",
          "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this metric, which is used in documentation. The maximum length of the description is 8000 characters."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this metric is disabled and it does not generate any points."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced_filters) which is used to match log entries. Example: \"resource.type=gae_app AND severity>=ERROR\" The maximum length of the filter is 20000 characters."
        },
        "labelExtractors": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. A map from a label key string to an extractor expression which is used to extract data from a log entry field and assign as the label value. Each label key specified in the LabelDescriptor must have an associated extractor expression in this map. The syntax of the extractor expression is the same as for the value_extractor field.The extracted value is converted to the type defined in the label descriptor. If either the extraction or the type conversion fails, the label will have a default value. The default value for a string label is an empty string, for an integer label its 0, and for a boolean label its false.Note that there are upper bounds on the maximum number of labels and the number of active time series that are allowed in a project."
        },
        "metricDescriptor": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptor",
          "description": "Optional. The metric descriptor associated with the logs-based metric. If unspecified, it uses a default metric descriptor with a DELTA metric kind, INT64 value type, with no labels and a unit of \"1\". Such a metric counts the number of log entries matching the filter expression.The name, type, and description fields in the metric_descriptor are output only, and is constructed using the name and description field in the LogMetric.To create a logs-based metric that records a distribution of log values, a DELTA metric kind with a DISTRIBUTION value type must be used along with a value_extractor expression in the LogMetric.Each label in the metric descriptor must have a matching label name as the key and an extractor expression as the value in the label_extractors map.The metric_kind and value_type fields in the metric_descriptor cannot be updated once initially configured. New labels can be added in the metric_descriptor, but existing labels cannot be modified except for their description."
        },
        "name": {
          "type": "string",
          "description": "The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.This field is the [METRIC_ID] part of a metric resource name in the format \"projects/PROJECT_ID/metrics/METRIC_ID\". Example: If the resource name of a metric is \"projects/my-project/metrics/nginx%2Frequests\", this field's value is \"nginx/requests\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "valueExtractor": {
          "type": "string",
          "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The arguments are: field: The name of the log entry field from which the value is to be extracted. regex: A regular expression using the Google RE2 syntax (https://github.com/google/re2/wiki/Syntax) with a single capture group to extract data from the specified log entry field. The value of the field is converted to a string before applying the regex. It is an error to specify a regex that does not include exactly one capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")"
        },
        "version": {
          "$ref": "#/types/google-native:logging%2Fv2:MetricVersion",
          "description": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.",
          "deprecationMessage": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed."
        }
      },
      "requiredInputs": [
        "filter"
      ]
    },
    "google-native:logging/v2:OrganizationBucket": {
      "description": "Creates a log bucket that can be used to store log entries. After a bucket has been created, the bucket's location cannot be changed.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "analyticsEnabled": {
          "type": "boolean",
          "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled."
        },
        "bucketId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-bucket\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        },
        "cmekSettings": {
          "$ref": "#/types/google-native:logging%2Fv2:CmekSettingsResponse",
          "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the bucket. This is not set for any of the default buckets."
        },
        "description": {
          "type": "string",
          "description": "Describes this bucket."
        },
        "indexConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:IndexConfigResponse"
          },
          "description": "A list of indexed fields and related configuration data."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The bucket lifecycle state."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the bucket.For example:projects/my-project/locations/global/buckets/my-bucketFor a list of supported locations, see Supported Regions (https://cloud.google.com/logging/docs/region-support)For the location of global it is unspecified where log entries are actually stored.After a bucket has been created, the location cannot be changed."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restrictedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)"
        },
        "retentionDays": {
          "type": "integer",
          "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the bucket."
        }
      },
      "type": "object",
      "required": [
        "analyticsEnabled",
        "bucketId",
        "cmekSettings",
        "createTime",
        "description",
        "indexConfigs",
        "lifecycleState",
        "location",
        "locked",
        "name",
        "organizationId",
        "restrictedFields",
        "retentionDays",
        "updateTime"
      ],
      "inputProperties": {
        "analyticsEnabled": {
          "type": "boolean",
          "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled."
        },
        "bucketId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-bucket\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        },
        "cmekSettings": {
          "$ref": "#/types/google-native:logging%2Fv2:CmekSettings",
          "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
        },
        "description": {
          "type": "string",
          "description": "Describes this bucket."
        },
        "indexConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:IndexConfig"
          },
          "description": "A list of indexed fields and related configuration data."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "locked": {
          "type": "boolean",
          "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "restrictedFields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)"
        },
        "retentionDays": {
          "type": "integer",
          "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used."
        }
      },
      "requiredInputs": [
        "bucketId",
        "organizationId"
      ]
    },
    "google-native:logging/v2:OrganizationBucketLink": {
      "description": "Asynchronously creates a linked dataset in BigQuery which makes it possible to use BigQuery to read the logs stored in the log bucket. A log bucket may currently only contain one link.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryDatasetResponse",
          "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the link."
        },
        "description": {
          "type": "string",
          "description": "Describes this link.The maximum length of the description is 8000 characters."
        },
        "lifecycleState": {
          "type": "string",
          "description": "The resource lifecycle state."
        },
        "linkId": {
          "type": "string",
          "description": "Required. The ID to use for the link. The link_id can have up to 100 characters. A valid link_id must only have alphanumeric characters and underscores within it.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bigqueryDataset",
        "bucketId",
        "createTime",
        "description",
        "lifecycleState",
        "linkId",
        "location",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "bigqueryDataset": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryDataset",
          "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
        },
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Describes this link.The maximum length of the description is 8000 characters."
        },
        "linkId": {
          "type": "string",
          "description": "Required. The ID to use for the link. The link_id can have up to 100 characters. A valid link_id must only have alphanumeric characters and underscores within it.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "bucketId",
        "linkId",
        "organizationId"
      ]
    },
    "google-native:logging/v2:OrganizationBucketView": {
      "description": "Creates a view over log entries in a log bucket. A bucket may contain a maximum of 30 views.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the view."
        },
        "description": {
          "type": "string",
          "description": "Describes this view."
        },
        "filter": {
          "type": "string",
          "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the view."
        },
        "viewId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-view\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bucketId",
        "createTime",
        "description",
        "filter",
        "location",
        "name",
        "organizationId",
        "updateTime",
        "viewId"
      ],
      "inputProperties": {
        "bucketId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Describes this view."
        },
        "filter": {
          "type": "string",
          "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "viewId": {
          "type": "string",
          "description": "Required. A client-assigned identifier such as \"my-view\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "bucketId",
        "organizationId",
        "viewId"
      ]
    },
    "google-native:logging/v2:OrganizationExclusion": {
      "description": "Creates a new exclusion in the _Default sink in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "disabled",
        "filter",
        "name",
        "organizationId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A description of this exclusion."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field."
        },
        "filter": {
          "type": "string",
          "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity<ERROR sample(insertId, 0.99)"
        },
        "name": {
          "type": "string",
          "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "filter",
        "organizationId"
      ]
    },
    "google-native:logging/v2:OrganizationSink": {
      "description": "Creates a sink that exports specified log entries to a destination. The export begins upon ingress, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
      "properties": {
        "bigqueryOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptionsResponse",
          "description": "Optional. Options that affect sinks exporting data to BigQuery."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the sink.This field may not be present for older sinks."
        },
        "customWriterIdentity": {
          "type": "string",
          "description": "Optional. A service account provided by the caller that will be used to write the log entries. The format must be serviceAccount:some@email. This field can only be specified if you are routing logs to a destination outside this sink's project. If not specified, a Logging service account will automatically be generated."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters."
        },
        "destination": {
          "type": "string",
          "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs)."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries."
        },
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LogExclusionResponse"
          },
          "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR"
        },
        "includeChildren": {
          "type": "boolean",
          "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance"
        },
        "name": {
          "type": "string",
          "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "outputVersionFormat": {
          "type": "string",
          "description": "Deprecated. This field is unused.",
          "deprecationMessage": "Deprecated. This field is unused."
        },
        "uniqueWriterIdentity": {
          "type": "boolean",
          "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Cloud Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a service agent (https://cloud.google.com/iam/docs/service-account-types#service-agents) used by the sinks with the same parent. For more information, see writer_identity in LogSink."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the sink.This field may not be present for older sinks."
        },
        "writerIdentity": {
          "type": "string",
          "description": "An IAM identity—a service account or group—under which Cloud Logging writes the exported log entries to the sink's destination. This field is either set by specifying custom_writer_identity or set automatically by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.Sinks that have a destination that is a log bucket in the same project as the sink cannot have a writer_identity and no additional permissions are required."
        }
      },
      "type": "object",
      "required": [
        "bigqueryOptions",
        "createTime",
        "description",
        "destination",
        "disabled",
        "exclusions",
        "filter",
        "includeChildren",
        "name",
        "organizationId",
        "outputVersionFormat",
        "updateTime",
        "writerIdentity"
      ],
      "inputProperties": {
        "bigqueryOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptions",
          "description": "Optional. Options that affect sinks exporting data to BigQuery."
        },
        "customWriterIdentity": {
          "type": "string",
          "description": "Optional. A service account provided by the caller that will be used to write the log entries. The format must be serviceAccount:some@email. This field can only be specified if you are routing logs to a destination outside this sink's project. If not specified, a Logging service account will automatically be generated."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters."
        },
        "destination": {
          "type": "string",
          "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs)."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries."
        },
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LogExclusion"
          },
          "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR"
        },
        "includeChildren": {
          "type": "boolean",
          "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance"
        },
        "name": {
          "type": "string",
          "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "outputVersionFormat": {
          "$ref": "#/types/google-native:logging%2Fv2:OrganizationSinkOutputVersionFormat",
          "description": "Deprecated. This field is unused.",
          "deprecationMessage": "Deprecated. This field is unused."
        },
        "uniqueWriterIdentity": {
          "type": "boolean",
          "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Cloud Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a service agent (https://cloud.google.com/iam/docs/service-account-types#service-agents) used by the sinks with the same parent. For more information, see writer_identity in LogSink."
        }
      },
      "requiredInputs": [
        "destination",
        "organizationId"
      ]
    },
    "google-native:logging/v2:Sink": {
      "description": "Creates a sink that exports specified log entries to a destination. The export begins upon ingress, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.",
      "properties": {
        "bigqueryOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptionsResponse",
          "description": "Optional. Options that affect sinks exporting data to BigQuery."
        },
        "createTime": {
          "type": "string",
          "description": "The creation timestamp of the sink.This field may not be present for older sinks."
        },
        "customWriterIdentity": {
          "type": "string",
          "description": "Optional. A service account provided by the caller that will be used to write the log entries. The format must be serviceAccount:some@email. This field can only be specified if you are routing logs to a destination outside this sink's project. If not specified, a Logging service account will automatically be generated."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters."
        },
        "destination": {
          "type": "string",
          "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs)."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries."
        },
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LogExclusionResponse"
          },
          "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR"
        },
        "includeChildren": {
          "type": "boolean",
          "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance"
        },
        "name": {
          "type": "string",
          "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "outputVersionFormat": {
          "type": "string",
          "description": "Deprecated. This field is unused.",
          "deprecationMessage": "Deprecated. This field is unused."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uniqueWriterIdentity": {
          "type": "boolean",
          "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Cloud Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a service agent (https://cloud.google.com/iam/docs/service-account-types#service-agents) used by the sinks with the same parent. For more information, see writer_identity in LogSink."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the sink.This field may not be present for older sinks."
        },
        "writerIdentity": {
          "type": "string",
          "description": "An IAM identity—a service account or group—under which Cloud Logging writes the exported log entries to the sink's destination. This field is either set by specifying custom_writer_identity or set automatically by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.Sinks that have a destination that is a log bucket in the same project as the sink cannot have a writer_identity and no additional permissions are required."
        }
      },
      "type": "object",
      "required": [
        "bigqueryOptions",
        "createTime",
        "description",
        "destination",
        "disabled",
        "exclusions",
        "filter",
        "includeChildren",
        "name",
        "outputVersionFormat",
        "project",
        "updateTime",
        "writerIdentity"
      ],
      "inputProperties": {
        "bigqueryOptions": {
          "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptions",
          "description": "Optional. Options that affect sinks exporting data to BigQuery."
        },
        "customWriterIdentity": {
          "type": "string",
          "description": "Optional. A service account provided by the caller that will be used to write the log entries. The format must be serviceAccount:some@email. This field can only be specified if you are routing logs to a destination outside this sink's project. If not specified, a Logging service account will automatically be generated."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters."
        },
        "destination": {
          "type": "string",
          "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs)."
        },
        "disabled": {
          "type": "boolean",
          "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries."
        },
        "exclusions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:logging%2Fv2:LogExclusion"
          },
          "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity>=ERROR"
        },
        "includeChildren": {
          "type": "boolean",
          "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance"
        },
        "name": {
          "type": "string",
          "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric."
        },
        "outputVersionFormat": {
          "$ref": "#/types/google-native:logging%2Fv2:SinkOutputVersionFormat",
          "description": "Deprecated. This field is unused.",
          "deprecationMessage": "Deprecated. This field is unused."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uniqueWriterIdentity": {
          "type": "boolean",
          "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Cloud Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a service agent (https://cloud.google.com/iam/docs/service-account-types#service-agents) used by the sinks with the same parent. For more information, see writer_identity in LogSink."
        }
      },
      "requiredInputs": [
        "destination"
      ]
    },
    "google-native:looker/v1:Instance": {
      "description": "Creates a new Instance in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "adminSettings": {
          "$ref": "#/types/google-native:looker%2Fv1:AdminSettingsResponse",
          "description": "Looker Instance Admin settings."
        },
        "consumerNetwork": {
          "type": "string",
          "description": "Network name in the consumer project. Format: `projects/{project}/global/networks/{network}`. Note that the consumer network may be in a different GCP project than the consumer project that is hosting the Looker Instance."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the Looker instance provisioning was first requested."
        },
        "customDomain": {
          "$ref": "#/types/google-native:looker%2Fv1:CustomDomainResponse"
        },
        "denyMaintenancePeriod": {
          "$ref": "#/types/google-native:looker%2Fv1:DenyMaintenancePeriodResponse",
          "description": "Maintenance denial period for this instance."
        },
        "egressPublicIp": {
          "type": "string",
          "description": "Public Egress IP (IPv4)."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:looker%2Fv1:EncryptionConfigResponse",
          "description": "Encryption configuration (CMEK). Only set if CMEK has been enabled on the instance."
        },
        "ingressPrivateIp": {
          "type": "string",
          "description": "Private Ingress IP (IPv4)."
        },
        "ingressPublicIp": {
          "type": "string",
          "description": "Public Ingress IP (IPv4)."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The unique instance identifier. Must contain only lowercase letters, numbers, or hyphens, with the first character a letter and the last a letter or a number. 63 characters maximum.",
          "replaceOnChanges": true
        },
        "lastDenyMaintenancePeriod": {
          "$ref": "#/types/google-native:looker%2Fv1:DenyMaintenancePeriodResponse",
          "description": "Last computed maintenance denial period for this instance."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lookerUri": {
          "type": "string",
          "description": "Looker instance URI which can be used to access the Looker Instance UI."
        },
        "lookerVersion": {
          "type": "string",
          "description": "The Looker version that the instance is using."
        },
        "maintenanceSchedule": {
          "$ref": "#/types/google-native:looker%2Fv1:MaintenanceScheduleResponse",
          "description": "Maintenance schedule for this instance."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:looker%2Fv1:MaintenanceWindowResponse",
          "description": "Maintenance window for this instance."
        },
        "name": {
          "type": "string",
          "description": "Format: `projects/{project}/locations/{location}/instances/{instance}`."
        },
        "oauthConfig": {
          "$ref": "#/types/google-native:looker%2Fv1:OAuthConfigResponse",
          "description": "Looker instance OAuth login settings."
        },
        "platformEdition": {
          "type": "string",
          "description": "Platform edition."
        },
        "privateIpEnabled": {
          "type": "boolean",
          "description": "Whether private IP is enabled on the Looker instance."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicIpEnabled": {
          "type": "boolean",
          "description": "Whether public IP is enabled on the Looker instance."
        },
        "reservedRange": {
          "type": "string",
          "description": "Name of a reserved IP address range within the Instance.consumer_network, to be used for private services access connection. May or may not be specified in a create request."
        },
        "state": {
          "type": "string",
          "description": "The state of the instance."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the Looker instance was last updated."
        },
        "userMetadata": {
          "$ref": "#/types/google-native:looker%2Fv1:UserMetadataResponse",
          "description": "User metadata."
        }
      },
      "type": "object",
      "required": [
        "adminSettings",
        "consumerNetwork",
        "createTime",
        "customDomain",
        "denyMaintenancePeriod",
        "egressPublicIp",
        "encryptionConfig",
        "ingressPrivateIp",
        "ingressPublicIp",
        "instanceId",
        "lastDenyMaintenancePeriod",
        "location",
        "lookerUri",
        "lookerVersion",
        "maintenanceSchedule",
        "maintenanceWindow",
        "name",
        "oauthConfig",
        "platformEdition",
        "privateIpEnabled",
        "project",
        "publicIpEnabled",
        "reservedRange",
        "state",
        "updateTime",
        "userMetadata"
      ],
      "inputProperties": {
        "adminSettings": {
          "$ref": "#/types/google-native:looker%2Fv1:AdminSettings",
          "description": "Looker Instance Admin settings."
        },
        "consumerNetwork": {
          "type": "string",
          "description": "Network name in the consumer project. Format: `projects/{project}/global/networks/{network}`. Note that the consumer network may be in a different GCP project than the consumer project that is hosting the Looker Instance."
        },
        "customDomain": {
          "$ref": "#/types/google-native:looker%2Fv1:CustomDomain"
        },
        "denyMaintenancePeriod": {
          "$ref": "#/types/google-native:looker%2Fv1:DenyMaintenancePeriod",
          "description": "Maintenance denial period for this instance."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:looker%2Fv1:EncryptionConfig",
          "description": "Encryption configuration (CMEK). Only set if CMEK has been enabled on the instance."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The unique instance identifier. Must contain only lowercase letters, numbers, or hyphens, with the first character a letter and the last a letter or a number. 63 characters maximum.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceSchedule": {
          "$ref": "#/types/google-native:looker%2Fv1:MaintenanceSchedule",
          "description": "Maintenance schedule for this instance."
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:looker%2Fv1:MaintenanceWindow",
          "description": "Maintenance window for this instance."
        },
        "oauthConfig": {
          "$ref": "#/types/google-native:looker%2Fv1:OAuthConfig",
          "description": "Looker instance OAuth login settings."
        },
        "platformEdition": {
          "$ref": "#/types/google-native:looker%2Fv1:InstancePlatformEdition",
          "description": "Platform edition."
        },
        "privateIpEnabled": {
          "type": "boolean",
          "description": "Whether private IP is enabled on the Looker instance."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publicIpEnabled": {
          "type": "boolean",
          "description": "Whether public IP is enabled on the Looker instance."
        },
        "reservedRange": {
          "type": "string",
          "description": "Name of a reserved IP address range within the Instance.consumer_network, to be used for private services access connection. May or may not be specified in a create request."
        },
        "userMetadata": {
          "$ref": "#/types/google-native:looker%2Fv1:UserMetadata",
          "description": "User metadata."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:looker/v1:InstanceBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:looker/v1:InstanceBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:looker/v1:InstanceBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "backupId",
        "bindings",
        "etag",
        "instanceId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "instanceId"
      ]
    },
    "google-native:looker/v1:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:looker/v1:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:looker/v1:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "instanceId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:looker%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:managedidentities/v1:Backup": {
      "description": "Creates a Backup for a domain.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. Backup Id, unique name to identify the backups with the following restrictions: * Must be lowercase letters, numbers, and hyphens * Must start with a letter. * Must contain between 1-63 characters. * Must end with a number or a letter. * Must be unique within the domain.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time the backups was created."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the Backup in the form of `projects/{project_id}/locations/global/domains/{domain_name}/backups/{name}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this backup, if available."
        },
        "type": {
          "type": "string",
          "description": "Indicates whether it’s an on-demand backup or scheduled."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "createTime",
        "domainId",
        "labels",
        "name",
        "project",
        "state",
        "statusMessage",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. Backup Id, unique name to identify the backups with the following restrictions: * Must be lowercase letters, numbers, and hyphens * Must start with a letter. * Must contain between 1-63 characters. * Must end with a number or a letter. * Must be unique within the domain.",
          "replaceOnChanges": true
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backupId",
        "domainId"
      ]
    },
    "google-native:managedidentities/v1:Domain": {
      "description": "Creates a Microsoft AD domain.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "admin": {
          "type": "string",
          "description": "Optional. The name of delegated administrator account used to perform Active Directory operations. If not specified, `setupadmin` will be used."
        },
        "auditLogsEnabled": {
          "type": "boolean",
          "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled."
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) the domain instance is connected to. Networks can be added using UpdateDomain. The domain is only available on networks listed in `authorized_networks`. If CIDR subnets overlap between networks, domain creation will fail."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "domainName": {
          "type": "string",
          "description": "Required. The fully qualified domain name. e.g. mydomain.myorganization.com, with the following restrictions: * Must contain only lowercase letters, numbers, periods and hyphens. * Must start with a letter. * Must contain between 2-64 characters. * Must end with a number or a letter. * Must not start with period. * First segment length (mydomain for example above) shouldn't exceed 15 chars. * The last segment cannot be fully numeric. * Must be unique within the customer project.",
          "replaceOnChanges": true
        },
        "fqdn": {
          "type": "string",
          "description": "The fully-qualified domain name of the exposed domain used by clients to connect to the service. Similar to what would be chosen for an Active Directory set up on an internal network."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels that can contain user-provided metadata."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the domain using the form: `projects/{project_id}/locations/global/domains/{domain_name}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRange": {
          "type": "string",
          "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks]."
        },
        "state": {
          "type": "string",
          "description": "The current state of this domain."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this domain, if available."
        },
        "trusts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1:TrustResponse"
          },
          "description": "The current trusts associated with the domain."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time."
        }
      },
      "type": "object",
      "required": [
        "admin",
        "auditLogsEnabled",
        "authorizedNetworks",
        "createTime",
        "domainName",
        "fqdn",
        "labels",
        "locations",
        "name",
        "project",
        "reservedIpRange",
        "state",
        "statusMessage",
        "trusts",
        "updateTime"
      ],
      "inputProperties": {
        "admin": {
          "type": "string",
          "description": "Optional. The name of delegated administrator account used to perform Active Directory operations. If not specified, `setupadmin` will be used."
        },
        "auditLogsEnabled": {
          "type": "boolean",
          "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled."
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) the domain instance is connected to. Networks can be added using UpdateDomain. The domain is only available on networks listed in `authorized_networks`. If CIDR subnets overlap between networks, domain creation will fail."
        },
        "domainName": {
          "type": "string",
          "description": "Required. The fully qualified domain name. e.g. mydomain.myorganization.com, with the following restrictions: * Must contain only lowercase letters, numbers, periods and hyphens. * Must start with a letter. * Must contain between 2-64 characters. * Must end with a number or a letter. * Must not start with period. * First segment length (mydomain for example above) shouldn't exceed 15 chars. * The last segment cannot be fully numeric. * Must be unique within the customer project.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels that can contain user-provided metadata."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the domain using the form: `projects/{project_id}/locations/global/domains/{domain_name}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRange": {
          "type": "string",
          "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks]."
        }
      },
      "requiredInputs": [
        "domainName",
        "locations",
        "name",
        "reservedIpRange"
      ]
    },
    "google-native:managedidentities/v1:DomainBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1:DomainBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1:DomainBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "bindings",
        "domainId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "domainId"
      ]
    },
    "google-native:managedidentities/v1:DomainIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1:DomainIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1:DomainIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "domainId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "domainId"
      ]
    },
    "google-native:managedidentities/v1:Peering": {
      "description": "Creates a Peering for Managed AD instance.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "domainResource": {
          "type": "string",
          "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the peering in this scope including projects and location using the form: `projects/{project_id}/locations/global/peerings/{peering_id}`."
        },
        "peeringId": {
          "type": "string",
          "description": "Required. Peering Id, unique name to identify peering. It should follow the regex format \"^(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)$\"",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of this Peering."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this peering, if available."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time."
        }
      },
      "type": "object",
      "required": [
        "authorizedNetwork",
        "createTime",
        "domainResource",
        "labels",
        "name",
        "peeringId",
        "project",
        "state",
        "statusMessage",
        "updateTime"
      ],
      "inputProperties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail."
        },
        "domainResource": {
          "type": "string",
          "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user-provided metadata."
        },
        "peeringId": {
          "type": "string",
          "description": "Required. Peering Id, unique name to identify peering. It should follow the regex format \"^(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)$\"",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "authorizedNetwork",
        "domainResource",
        "peeringId"
      ]
    },
    "google-native:managedidentities/v1:PeeringIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1:PeeringIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1:PeeringIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "peeringId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "peeringId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "peeringId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "peeringId"
      ]
    },
    "google-native:managedidentities/v1alpha1:Backup": {
      "description": "Creates a Backup for a domain.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. Backup Id, unique name to identify the backups with the following restrictions: * Must be lowercase letters, numbers, and hyphens * Must start with a letter. * Must contain between 1-63 characters. * Must end with a number or a letter. * Must be unique within the domain.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time the backups was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A short description of the backup."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the Backup in the form of projects/{project_id}/locations/global/domains/{domain_name}/backups/{name}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this backup, if available."
        },
        "type": {
          "type": "string",
          "description": "Indicates whether it’s an on-demand backup or scheduled."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "createTime",
        "description",
        "domainId",
        "labels",
        "name",
        "project",
        "state",
        "statusMessage",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. Backup Id, unique name to identify the backups with the following restrictions: * Must be lowercase letters, numbers, and hyphens * Must start with a letter. * Must contain between 1-63 characters. * Must end with a number or a letter. * Must be unique within the domain.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A short description of the backup."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backupId",
        "domainId"
      ]
    },
    "google-native:managedidentities/v1alpha1:Domain": {
      "description": "Creates a Microsoft AD Domain in a given project. Operation\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "auditLogsEnabled": {
          "type": "boolean",
          "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled."
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Network can be added using UpdateDomain later. Domain is only available on network part of authorized_networks. Caller needs to make sure that CIDR subnets do not overlap between networks, else domain creation will fail."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created. Synthetic field is populated automatically by CCFE. go/ccfe-synthetic-field-user-guide"
        },
        "domainName": {
          "type": "string",
          "description": "The fully qualified domain name. e.g. mydomain.myorganization.com, with the following restrictions: * Must contain only lowercase letters, numbers, periods and hyphens. * Must start with a letter. * Must contain between 2-64 characters. * Must end with a number or a letter. * Must not start with period. * Must be unique within the project. * First segment length (mydomain form example above) shouldn't exceed 15 chars. * The last segment cannot be fully numeric."
        },
        "fqdn": {
          "type": "string",
          "description": "Fully-qualified domain name of the exposed domain used by clients to connect to the service. Similar to what would be chosen for an Active Directory that is set up on an internal network."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata"
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block."
        },
        "managedIdentitiesAdminName": {
          "type": "string",
          "description": "Optional. Name of customer-visible admin used to perform Active Directory operations. If not specified `setupadmin` would be used."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the domain in this scope including projects and location using the form: `projects/{project_id}/locations/global/domains/{domain_name}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRange": {
          "type": "string",
          "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks]."
        },
        "state": {
          "type": "string",
          "description": "The current state of this domain."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this domain, if available."
        },
        "trusts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:TrustResponse"
          },
          "description": "The current trusts associated with the domain."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time. Synthetic field is populated automatically by CCFE."
        }
      },
      "type": "object",
      "required": [
        "auditLogsEnabled",
        "authorizedNetworks",
        "createTime",
        "fqdn",
        "labels",
        "locations",
        "managedIdentitiesAdminName",
        "name",
        "project",
        "reservedIpRange",
        "state",
        "statusMessage",
        "trusts",
        "updateTime"
      ],
      "inputProperties": {
        "auditLogsEnabled": {
          "type": "boolean",
          "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled."
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Network can be added using UpdateDomain later. Domain is only available on network part of authorized_networks. Caller needs to make sure that CIDR subnets do not overlap between networks, else domain creation will fail."
        },
        "domainName": {
          "type": "string",
          "description": "The fully qualified domain name. e.g. mydomain.myorganization.com, with the following restrictions: * Must contain only lowercase letters, numbers, periods and hyphens. * Must start with a letter. * Must contain between 2-64 characters. * Must end with a number or a letter. * Must not start with period. * Must be unique within the project. * First segment length (mydomain form example above) shouldn't exceed 15 chars. * The last segment cannot be fully numeric."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata"
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block."
        },
        "managedIdentitiesAdminName": {
          "type": "string",
          "description": "Optional. Name of customer-visible admin used to perform Active Directory operations. If not specified `setupadmin` would be used."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRange": {
          "type": "string",
          "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks]."
        }
      },
      "requiredInputs": [
        "locations",
        "reservedIpRange"
      ]
    },
    "google-native:managedidentities/v1alpha1:DomainBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1alpha1:DomainBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1alpha1:DomainBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "bindings",
        "domainId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "domainId"
      ]
    },
    "google-native:managedidentities/v1alpha1:DomainIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1alpha1:DomainIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1alpha1:DomainIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "domainId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "domainId"
      ]
    },
    "google-native:managedidentities/v1alpha1:Peering": {
      "description": "Creates a Peering for Managed AD instance.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "domainResource": {
          "type": "string",
          "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the peering in this scope including projects and location using the form: `projects/{project_id}/locations/global/peerings/{peering_id}`."
        },
        "peeringId": {
          "type": "string",
          "description": "Required. Peering Id, unique name to identify peering.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of this Peering."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this peering, if available."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time."
        }
      },
      "type": "object",
      "required": [
        "authorizedNetwork",
        "createTime",
        "domainResource",
        "labels",
        "name",
        "peeringId",
        "project",
        "state",
        "statusMessage",
        "updateTime"
      ],
      "inputProperties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail."
        },
        "domainResource": {
          "type": "string",
          "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "peeringId": {
          "type": "string",
          "description": "Required. Peering Id, unique name to identify peering.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "authorizedNetwork",
        "domainResource",
        "peeringId"
      ]
    },
    "google-native:managedidentities/v1alpha1:PeeringIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1alpha1:PeeringIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1alpha1:PeeringIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "peeringId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "peeringId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "peeringId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "peeringId"
      ]
    },
    "google-native:managedidentities/v1beta1:Backup": {
      "description": "Creates a Backup for a domain.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. Backup Id, unique name to identify the backups with the following restrictions: * Must be lowercase letters, numbers, and hyphens * Must start with a letter. * Must contain between 1-63 characters. * Must end with a number or a letter. * Must be unique within the domain.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time the backups was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A short description of the backup."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the Backup in the form of projects/{project_id}/locations/global/domains/{domain_name}/backups/{name}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this backup, if available."
        },
        "type": {
          "type": "string",
          "description": "Indicates whether it’s an on-demand backup or scheduled."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "createTime",
        "description",
        "domainId",
        "labels",
        "name",
        "project",
        "state",
        "statusMessage",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. Backup Id, unique name to identify the backups with the following restrictions: * Must be lowercase letters, numbers, and hyphens * Must start with a letter. * Must contain between 1-63 characters. * Must end with a number or a letter. * Must be unique within the domain.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A short description of the backup."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backupId",
        "domainId"
      ]
    },
    "google-native:managedidentities/v1beta1:Domain": {
      "description": "Creates a Microsoft AD domain.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "admin": {
          "type": "string",
          "description": "Optional. The name of delegated administrator account used to perform Active Directory operations. If not specified, `setupadmin` will be used."
        },
        "auditLogsEnabled": {
          "type": "boolean",
          "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled."
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) the domain instance is connected to. Networks can be added using UpdateDomain. The domain is only available on networks listed in `authorized_networks`. If CIDR subnets overlap between networks, domain creation will fail."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "domainName": {
          "type": "string",
          "description": "Required. A domain name, e.g. mydomain.myorg.com, with the following restrictions: * Must contain only lowercase letters, numbers, periods and hyphens. * Must start with a letter. * Must contain between 2-64 characters. * Must end with a number or a letter. * Must not start with period. * First segment length (mydomain form example above) shouldn't exceed 15 chars. * The last segment cannot be fully numeric. * Must be unique within the customer project.",
          "replaceOnChanges": true
        },
        "fqdn": {
          "type": "string",
          "description": "The fully-qualified domain name of the exposed domain used by clients to connect to the service. Similar to what would be chosen for an Active Directory set up on an internal network."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels that can contain user-provided metadata."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block."
        },
        "name": {
          "type": "string",
          "description": "The unique name of the domain using the form: `projects/{project_id}/locations/global/domains/{domain_name}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRange": {
          "type": "string",
          "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks]."
        },
        "state": {
          "type": "string",
          "description": "The current state of this domain."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this domain, if available."
        },
        "trusts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1beta1:TrustResponse"
          },
          "description": "The current trusts associated with the domain."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time."
        }
      },
      "type": "object",
      "required": [
        "admin",
        "auditLogsEnabled",
        "authorizedNetworks",
        "createTime",
        "domainName",
        "fqdn",
        "labels",
        "locations",
        "name",
        "project",
        "reservedIpRange",
        "state",
        "statusMessage",
        "trusts",
        "updateTime"
      ],
      "inputProperties": {
        "admin": {
          "type": "string",
          "description": "Optional. The name of delegated administrator account used to perform Active Directory operations. If not specified, `setupadmin` will be used."
        },
        "auditLogsEnabled": {
          "type": "boolean",
          "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled."
        },
        "authorizedNetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) the domain instance is connected to. Networks can be added using UpdateDomain. The domain is only available on networks listed in `authorized_networks`. If CIDR subnets overlap between networks, domain creation will fail."
        },
        "domainName": {
          "type": "string",
          "description": "Required. A domain name, e.g. mydomain.myorg.com, with the following restrictions: * Must contain only lowercase letters, numbers, periods and hyphens. * Must start with a letter. * Must contain between 2-64 characters. * Must end with a number or a letter. * Must not start with period. * First segment length (mydomain form example above) shouldn't exceed 15 chars. * The last segment cannot be fully numeric. * Must be unique within the customer project.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels that can contain user-provided metadata."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRange": {
          "type": "string",
          "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks]."
        }
      },
      "requiredInputs": [
        "domainName",
        "locations",
        "reservedIpRange"
      ]
    },
    "google-native:managedidentities/v1beta1:DomainBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1beta1:DomainBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1beta1:DomainBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "bindings",
        "domainId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "domainId"
      ]
    },
    "google-native:managedidentities/v1beta1:DomainIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1beta1:DomainIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1beta1:DomainIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "domainId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "domainId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "domainId"
      ]
    },
    "google-native:managedidentities/v1beta1:Peering": {
      "description": "Creates a Peering for Managed AD instance.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "domainResource": {
          "type": "string",
          "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the peering in this scope including projects and location using the form: `projects/{project_id}/locations/global/peerings/{peering_id}`."
        },
        "peeringId": {
          "type": "string",
          "description": "Required. Peering Id, unique name to identify peering.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of this Peering."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this peering, if available."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time."
        }
      },
      "type": "object",
      "required": [
        "authorizedNetwork",
        "createTime",
        "domainResource",
        "labels",
        "name",
        "peeringId",
        "project",
        "state",
        "statusMessage",
        "updateTime"
      ],
      "inputProperties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail."
        },
        "domainResource": {
          "type": "string",
          "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels to represent user provided metadata."
        },
        "peeringId": {
          "type": "string",
          "description": "Required. Peering Id, unique name to identify peering.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "authorizedNetwork",
        "domainResource",
        "peeringId"
      ]
    },
    "google-native:managedidentities/v1beta1:PeeringIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1beta1:PeeringIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:managedidentities/v1beta1:PeeringIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "peeringId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "peeringId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:managedidentities%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "peeringId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "peeringId"
      ]
    },
    "google-native:memcache/v1:Instance": {
      "description": "Creates a new Instance in a given location.",
      "properties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full name of the Google Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. If left unspecified, the `default` network will be used."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "discoveryEndpoint": {
          "type": "string",
          "description": "Endpoint for the Discovery API."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name for the instance, which is only used for display purposes. Cannot be more than 80 characters."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The logical name of the Memcached instance in the user project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the user project / location. If any of the above are not met, the API raises an invalid argument error.",
          "replaceOnChanges": true
        },
        "instanceMessages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1:InstanceMessageResponse"
          },
          "description": "List of messages that describe the current state of the Memcached instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:memcache%2Fv1:GoogleCloudMemcacheV1MaintenancePolicyResponse",
          "description": "The maintenance policy for the instance. If not provided, the maintenance event will be performed based on Memorystore internal rollout schedule."
        },
        "maintenanceSchedule": {
          "$ref": "#/types/google-native:memcache%2Fv1:MaintenanceScheduleResponse",
          "description": "Published maintenance schedule."
        },
        "memcacheFullVersion": {
          "type": "string",
          "description": "The full version of memcached server running on this instance. System automatically determines the full memcached version for an instance based on the input MemcacheVersion. The full version format will be \"memcached-1.5.16\"."
        },
        "memcacheNodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1:NodeResponse"
          },
          "description": "List of Memcached nodes. Refer to Node message for more details."
        },
        "memcacheVersion": {
          "type": "string",
          "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Memcached instances are managed and addressed at the regional level so `location_id` here refers to a Google Cloud region; however, users may choose which zones Memcached nodes should be provisioned in within an instance. Refer to zones field for more details."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:memcache%2Fv1:NodeConfigResponse",
          "description": "Configuration for Memcached nodes."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Number of nodes in the Memcached instance."
        },
        "parameters": {
          "$ref": "#/types/google-native:memcache%2Fv1:MemcacheParametersResponse",
          "description": "User defined parameters to apply to the memcached process on each node."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRangeId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Contains the id of allocated IP address ranges associated with the private service access connection for example, \"test-default\" associated with IP range 10.0.0.0/29."
        },
        "state": {
          "type": "string",
          "description": "The state of this Memcached instance."
        },
        "updateTime": {
          "type": "string",
          "description": "The time the instance was updated."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Zones in which Memcached nodes should be provisioned. Memcached nodes will be equally distributed across these zones. If not provided, the service will by default create nodes in all zones in the region for the instance."
        }
      },
      "type": "object",
      "required": [
        "authorizedNetwork",
        "createTime",
        "discoveryEndpoint",
        "displayName",
        "instanceId",
        "instanceMessages",
        "labels",
        "location",
        "maintenancePolicy",
        "maintenanceSchedule",
        "memcacheFullVersion",
        "memcacheNodes",
        "memcacheVersion",
        "name",
        "nodeConfig",
        "nodeCount",
        "parameters",
        "project",
        "reservedIpRangeId",
        "state",
        "updateTime",
        "zones"
      ],
      "inputProperties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full name of the Google Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. If left unspecified, the `default` network will be used."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name for the instance, which is only used for display purposes. Cannot be more than 80 characters."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The logical name of the Memcached instance in the user project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the user project / location. If any of the above are not met, the API raises an invalid argument error.",
          "replaceOnChanges": true
        },
        "instanceMessages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1:InstanceMessage"
          },
          "description": "List of messages that describe the current state of the Memcached instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:memcache%2Fv1:GoogleCloudMemcacheV1MaintenancePolicy",
          "description": "The maintenance policy for the instance. If not provided, the maintenance event will be performed based on Memorystore internal rollout schedule."
        },
        "memcacheVersion": {
          "$ref": "#/types/google-native:memcache%2Fv1:InstanceMemcacheVersion",
          "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Memcached instances are managed and addressed at the regional level so `location_id` here refers to a Google Cloud region; however, users may choose which zones Memcached nodes should be provisioned in within an instance. Refer to zones field for more details."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:memcache%2Fv1:NodeConfig",
          "description": "Configuration for Memcached nodes."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Number of nodes in the Memcached instance."
        },
        "parameters": {
          "$ref": "#/types/google-native:memcache%2Fv1:MemcacheParameters",
          "description": "User defined parameters to apply to the memcached process on each node."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRangeId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Contains the id of allocated IP address ranges associated with the private service access connection for example, \"test-default\" associated with IP range 10.0.0.0/29."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Zones in which Memcached nodes should be provisioned. Memcached nodes will be equally distributed across these zones. If not provided, the service will by default create nodes in all zones in the region for the instance."
        }
      },
      "requiredInputs": [
        "instanceId",
        "nodeConfig",
        "nodeCount"
      ]
    },
    "google-native:memcache/v1beta2:Instance": {
      "description": "Creates a new Instance in a given location.",
      "properties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "discoveryEndpoint": {
          "type": "string",
          "description": "Endpoint for the Discovery API."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name for the instance, which is only used for display purposes. Cannot be more than 80 characters."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The logical name of the Memcached instance in the user project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the user project / location. If any of the above are not met, the API raises an invalid argument error.",
          "replaceOnChanges": true
        },
        "instanceMessages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:InstanceMessageResponse"
          },
          "description": "List of messages that describe the current state of the Memcached instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:GoogleCloudMemcacheV1beta2MaintenancePolicyResponse",
          "description": "The maintenance policy for the instance. If not provided, the maintenance event will be performed based on Memorystore internal rollout schedule."
        },
        "maintenanceSchedule": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:MaintenanceScheduleResponse",
          "description": "Published maintenance schedule."
        },
        "memcacheFullVersion": {
          "type": "string",
          "description": "The full version of memcached server running on this instance. System automatically determines the full memcached version for an instance based on the input MemcacheVersion. The full version format will be \"memcached-1.5.16\"."
        },
        "memcacheNodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:NodeResponse"
          },
          "description": "List of Memcached nodes. Refer to Node message for more details."
        },
        "memcacheVersion": {
          "type": "string",
          "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Memcached instances are managed and addressed at the regional level so `location_id` here refers to a Google Cloud region; however, users may choose which zones Memcached nodes should be provisioned in within an instance. Refer to zones field for more details."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:NodeConfigResponse",
          "description": "Configuration for Memcached nodes."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Number of nodes in the Memcached instance."
        },
        "parameters": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:MemcacheParametersResponse",
          "description": "User defined parameters to apply to the memcached process on each node."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRangeId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Contains the id of allocated IP address ranges associated with the private service access connection for example, \"test-default\" associated with IP range 10.0.0.0/29."
        },
        "state": {
          "type": "string",
          "description": "The state of this Memcached instance."
        },
        "updateAvailable": {
          "type": "boolean",
          "description": "Returns true if there is an update waiting to be applied"
        },
        "updateTime": {
          "type": "string",
          "description": "The time the instance was updated."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Zones in which Memcached nodes should be provisioned. Memcached nodes will be equally distributed across these zones. If not provided, the service will by default create nodes in all zones in the region for the instance."
        }
      },
      "type": "object",
      "required": [
        "authorizedNetwork",
        "createTime",
        "discoveryEndpoint",
        "displayName",
        "instanceId",
        "instanceMessages",
        "labels",
        "location",
        "maintenancePolicy",
        "maintenanceSchedule",
        "memcacheFullVersion",
        "memcacheNodes",
        "memcacheVersion",
        "name",
        "nodeConfig",
        "nodeCount",
        "parameters",
        "project",
        "reservedIpRangeId",
        "state",
        "updateAvailable",
        "updateTime",
        "zones"
      ],
      "inputProperties": {
        "authorizedNetwork": {
          "type": "string",
          "description": "The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used."
        },
        "displayName": {
          "type": "string",
          "description": "User provided name for the instance, which is only used for display purposes. Cannot be more than 80 characters."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The logical name of the Memcached instance in the user project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the user project / location. If any of the above are not met, the API raises an invalid argument error.",
          "replaceOnChanges": true
        },
        "instanceMessages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:InstanceMessage"
          },
          "description": "List of messages that describe the current state of the Memcached instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:GoogleCloudMemcacheV1beta2MaintenancePolicy",
          "description": "The maintenance policy for the instance. If not provided, the maintenance event will be performed based on Memorystore internal rollout schedule."
        },
        "memcacheVersion": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:InstanceMemcacheVersion",
          "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Memcached instances are managed and addressed at the regional level so `location_id` here refers to a Google Cloud region; however, users may choose which zones Memcached nodes should be provisioned in within an instance. Refer to zones field for more details."
        },
        "nodeConfig": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:NodeConfig",
          "description": "Configuration for Memcached nodes."
        },
        "nodeCount": {
          "type": "integer",
          "description": "Number of nodes in the Memcached instance."
        },
        "parameters": {
          "$ref": "#/types/google-native:memcache%2Fv1beta2:MemcacheParameters",
          "description": "User defined parameters to apply to the memcached process on each node."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservedIpRangeId": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Contains the id of allocated IP address ranges associated with the private service access connection for example, \"test-default\" associated with IP range 10.0.0.0/29."
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Zones in which Memcached nodes should be provisioned. Memcached nodes will be equally distributed across these zones. If not provided, the service will by default create nodes in all zones in the region for the instance."
        }
      },
      "requiredInputs": [
        "instanceId",
        "nodeConfig",
        "nodeCount"
      ]
    },
    "google-native:metastore/v1:Backup": {
      "description": "Creates a new backup in a given project and location.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID of the backup, which is used as the final component of the backup's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time when the backup was started."
        },
        "description": {
          "type": "string",
          "description": "The description of the backup."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the backup finished creating."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "restoringServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Services that are restoring from the backup."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceRevision": {
          "$ref": "#/types/google-native:metastore%2Fv1:ServiceResponse",
          "description": "The revision of the service at the time of backup."
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "createTime",
        "description",
        "endTime",
        "location",
        "name",
        "project",
        "restoringServices",
        "serviceId",
        "serviceRevision",
        "state"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID of the backup, which is used as the final component of the backup's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the backup."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backupId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1:Federation": {
      "description": "Creates a metastore federation in a project and location.",
      "properties": {
        "backendMetastores": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore federation was created."
        },
        "endpointUri": {
          "type": "string",
          "description": "The federation endpoint."
        },
        "federationId": {
          "type": "string",
          "description": "Required. The ID of the metastore federation, which is used as the final component of the metastore federation's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore federation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "state": {
          "type": "string",
          "description": "The current state of the federation."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore federation, if available."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore federation."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore federation was last updated."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version."
        }
      },
      "type": "object",
      "required": [
        "backendMetastores",
        "createTime",
        "endpointUri",
        "federationId",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "stateMessage",
        "uid",
        "updateTime",
        "version"
      ],
      "inputProperties": {
        "backendMetastores": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number."
        },
        "federationId": {
          "type": "string",
          "description": "Required. The ID of the metastore federation, which is used as the final component of the metastore federation's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore federation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version."
        }
      },
      "requiredInputs": [
        "federationId"
      ]
    },
    "google-native:metastore/v1:FederationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1:FederationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1:FederationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "federationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "federationId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "federationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "federationId"
      ]
    },
    "google-native:metastore/v1:MetadataImport": {
      "description": "Creates a new MetadataImport in a given project and location.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the metadata import was started."
        },
        "databaseDump": {
          "$ref": "#/types/google-native:metastore%2Fv1:DatabaseDumpResponse",
          "description": "Immutable. A database dump from a pre-existing metastore's database."
        },
        "description": {
          "type": "string",
          "description": "The description of the metadata import."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the metadata import finished."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataImportId": {
          "type": "string",
          "description": "Required. The ID of the metadata import, which is used as the final component of the metadata import's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the metadata import."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metadata import was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "databaseDump",
        "description",
        "endTime",
        "location",
        "metadataImportId",
        "name",
        "project",
        "serviceId",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "databaseDump": {
          "$ref": "#/types/google-native:metastore%2Fv1:DatabaseDump",
          "description": "Immutable. A database dump from a pre-existing metastore's database."
        },
        "description": {
          "type": "string",
          "description": "The description of the metadata import."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataImportId": {
          "type": "string",
          "description": "Required. The ID of the metadata import, which is used as the final component of the metadata import's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "metadataImportId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1:Service": {
      "description": "Creates a metastore service in a project and location.",
      "properties": {
        "artifactGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore service was created."
        },
        "databaseType": {
          "type": "string",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:EncryptionConfigResponse",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:HiveMetastoreConfigResponse",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1:MaintenanceWindowResponse",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1:MetadataIntegrationResponse",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "metadataManagementActivity": {
          "$ref": "#/types/google-native:metastore%2Fv1:MetadataManagementActivityResponse",
          "description": "The metadata management activities of the metastore service."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:NetworkConfigResponse",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseChannel": {
          "type": "string",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:ScalingConfigResponse",
          "description": "Scaling configuration of the metastore service."
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The ID of the metastore service, which is used as the final component of the metastore service's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the metastore service."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore service, if available."
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:TelemetryConfigResponse",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "type": "string",
          "description": "The tier of the service."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore service."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore service was last updated."
        }
      },
      "type": "object",
      "required": [
        "artifactGcsUri",
        "createTime",
        "databaseType",
        "encryptionConfig",
        "endpointUri",
        "hiveMetastoreConfig",
        "labels",
        "location",
        "maintenanceWindow",
        "metadataIntegration",
        "metadataManagementActivity",
        "name",
        "network",
        "networkConfig",
        "port",
        "project",
        "releaseChannel",
        "scalingConfig",
        "serviceId",
        "state",
        "stateMessage",
        "telemetryConfig",
        "tier",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "databaseType": {
          "$ref": "#/types/google-native:metastore%2Fv1:ServiceDatabaseType",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:EncryptionConfig",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:HiveMetastoreConfig",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1:MaintenanceWindow",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1:MetadataIntegration",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:NetworkConfig",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseChannel": {
          "$ref": "#/types/google-native:metastore%2Fv1:ServiceReleaseChannel",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:ScalingConfig",
          "description": "Scaling configuration of the metastore service."
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The ID of the metastore service, which is used as the final component of the metastore service's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1:TelemetryConfig",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "$ref": "#/types/google-native:metastore%2Fv1:ServiceTier",
          "description": "The tier of the service."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:metastore/v1:ServiceBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1:ServiceBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1:ServiceBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "backupId",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1:ServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1:ServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1:ServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:metastore/v1alpha:Backup": {
      "description": "Creates a new backup in a given project and location.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID of the backup, which is used as the final component of the backup's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time when the backup was started."
        },
        "description": {
          "type": "string",
          "description": "The description of the backup."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the backup finished creating."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "restoringServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Services that are restoring from the backup."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceRevision": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ServiceResponse",
          "description": "The revision of the service at the time of backup."
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "createTime",
        "description",
        "endTime",
        "location",
        "name",
        "project",
        "restoringServices",
        "serviceId",
        "serviceRevision",
        "state"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID of the backup, which is used as the final component of the backup's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the backup."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backupId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1alpha:Federation": {
      "description": "Creates a metastore federation in a project and location.",
      "properties": {
        "backendMetastores": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore federation was created."
        },
        "endpointUri": {
          "type": "string",
          "description": "The federation endpoint."
        },
        "federationId": {
          "type": "string",
          "description": "Required. The ID of the metastore federation, which is used as the final component of the metastore federation's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore federation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "state": {
          "type": "string",
          "description": "The current state of the federation."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore federation, if available."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore federation."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore federation was last updated."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version."
        }
      },
      "type": "object",
      "required": [
        "backendMetastores",
        "createTime",
        "endpointUri",
        "federationId",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "stateMessage",
        "uid",
        "updateTime",
        "version"
      ],
      "inputProperties": {
        "backendMetastores": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number."
        },
        "federationId": {
          "type": "string",
          "description": "Required. The ID of the metastore federation, which is used as the final component of the metastore federation's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore federation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version."
        }
      },
      "requiredInputs": [
        "federationId"
      ]
    },
    "google-native:metastore/v1alpha:FederationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:FederationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:FederationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "federationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "federationId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "federationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "federationId"
      ]
    },
    "google-native:metastore/v1alpha:MetadataImport": {
      "description": "Creates a new MetadataImport in a given project and location.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the metadata import was started."
        },
        "databaseDump": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:DatabaseDumpResponse",
          "description": "Immutable. A database dump from a pre-existing metastore's database."
        },
        "description": {
          "type": "string",
          "description": "The description of the metadata import."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the metadata import finished."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataImportId": {
          "type": "string",
          "description": "Required. The ID of the metadata import, which is used as the final component of the metadata import's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the metadata import."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metadata import was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "databaseDump",
        "description",
        "endTime",
        "location",
        "metadataImportId",
        "name",
        "project",
        "serviceId",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "databaseDump": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:DatabaseDump",
          "description": "Immutable. A database dump from a pre-existing metastore's database."
        },
        "description": {
          "type": "string",
          "description": "The description of the metadata import."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataImportId": {
          "type": "string",
          "description": "Required. The ID of the metadata import, which is used as the final component of the metadata import's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "metadataImportId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1alpha:Service": {
      "description": "Creates a metastore service in a project and location.",
      "properties": {
        "artifactGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore service was created."
        },
        "databaseType": {
          "type": "string",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:EncryptionConfigResponse",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:HiveMetastoreConfigResponse",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MaintenanceWindowResponse",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MetadataIntegrationResponse",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "metadataManagementActivity": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MetadataManagementActivityResponse",
          "description": "The metadata management activities of the metastore service."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:NetworkConfigResponse",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseChannel": {
          "type": "string",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ScalingConfigResponse",
          "description": "Scaling configuration of the metastore service."
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The ID of the metastore service, which is used as the final component of the metastore service's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the metastore service."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore service, if available."
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:TelemetryConfigResponse",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "type": "string",
          "description": "The tier of the service."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore service."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore service was last updated."
        }
      },
      "type": "object",
      "required": [
        "artifactGcsUri",
        "createTime",
        "databaseType",
        "encryptionConfig",
        "endpointUri",
        "hiveMetastoreConfig",
        "labels",
        "location",
        "maintenanceWindow",
        "metadataIntegration",
        "metadataManagementActivity",
        "name",
        "network",
        "networkConfig",
        "port",
        "project",
        "releaseChannel",
        "scalingConfig",
        "serviceId",
        "state",
        "stateMessage",
        "telemetryConfig",
        "tier",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "databaseType": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ServiceDatabaseType",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:EncryptionConfig",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:HiveMetastoreConfig",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MaintenanceWindow",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:MetadataIntegration",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:NetworkConfig",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseChannel": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ServiceReleaseChannel",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ScalingConfig",
          "description": "Scaling configuration of the metastore service."
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The ID of the metastore service, which is used as the final component of the metastore service's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:TelemetryConfig",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "$ref": "#/types/google-native:metastore%2Fv1alpha:ServiceTier",
          "description": "The tier of the service."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:metastore/v1alpha:ServiceBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:ServiceBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:ServiceBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "backupId",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1alpha:ServiceDatabaseIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:ServiceDatabaseIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:ServiceDatabaseIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "databaseId",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "databaseId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1alpha:ServiceDatabaseTableIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:ServiceDatabaseTableIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:ServiceDatabaseTableIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "databaseId",
        "etag",
        "location",
        "project",
        "serviceId",
        "tableId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "databaseId",
        "serviceId",
        "tableId"
      ]
    },
    "google-native:metastore/v1alpha:ServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:ServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1alpha:ServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:metastore/v1beta:Backup": {
      "description": "Creates a new backup in a given project and location.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID of the backup, which is used as the final component of the backup's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time when the backup was started."
        },
        "description": {
          "type": "string",
          "description": "The description of the backup."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the backup finished creating."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "restoringServices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Services that are restoring from the backup."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceRevision": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ServiceResponse",
          "description": "The revision of the service at the time of backup."
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "createTime",
        "description",
        "endTime",
        "location",
        "name",
        "project",
        "restoringServices",
        "serviceId",
        "serviceRevision",
        "state"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. The ID of the backup, which is used as the final component of the backup's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the backup."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "backupId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1beta:Federation": {
      "description": "Creates a metastore federation in a project and location.",
      "properties": {
        "backendMetastores": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore federation was created."
        },
        "endpointUri": {
          "type": "string",
          "description": "The federation endpoint."
        },
        "federationId": {
          "type": "string",
          "description": "Required. The ID of the metastore federation, which is used as the final component of the metastore federation's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore federation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "state": {
          "type": "string",
          "description": "The current state of the federation."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore federation, if available."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore federation."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore federation was last updated."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version."
        }
      },
      "type": "object",
      "required": [
        "backendMetastores",
        "createTime",
        "endpointUri",
        "federationId",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "stateMessage",
        "uid",
        "updateTime",
        "version"
      ],
      "inputProperties": {
        "backendMetastores": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number."
        },
        "federationId": {
          "type": "string",
          "description": "Required. The ID of the metastore federation, which is used as the final component of the metastore federation's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore federation."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "version": {
          "type": "string",
          "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version."
        }
      },
      "requiredInputs": [
        "federationId"
      ]
    },
    "google-native:metastore/v1beta:FederationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:FederationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:FederationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "federationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "federationId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "federationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "federationId"
      ]
    },
    "google-native:metastore/v1beta:MetadataImport": {
      "description": "Creates a new MetadataImport in a given project and location.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the metadata import was started."
        },
        "databaseDump": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:DatabaseDumpResponse",
          "description": "Immutable. A database dump from a pre-existing metastore's database."
        },
        "description": {
          "type": "string",
          "description": "The description of the metadata import."
        },
        "endTime": {
          "type": "string",
          "description": "The time when the metadata import finished."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataImportId": {
          "type": "string",
          "description": "Required. The ID of the metadata import, which is used as the final component of the metadata import's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the metadata import."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metadata import was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "databaseDump",
        "description",
        "endTime",
        "location",
        "metadataImportId",
        "name",
        "project",
        "serviceId",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "databaseDump": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:DatabaseDump",
          "description": "Immutable. A database dump from a pre-existing metastore's database."
        },
        "description": {
          "type": "string",
          "description": "The description of the metadata import."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadataImportId": {
          "type": "string",
          "description": "Required. The ID of the metadata import, which is used as the final component of the metadata import's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "metadataImportId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1beta:Service": {
      "description": "Creates a metastore service in a project and location.",
      "properties": {
        "artifactGcsUri": {
          "type": "string",
          "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the metastore service was created."
        },
        "databaseType": {
          "type": "string",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:EncryptionConfigResponse",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "endpointUri": {
          "type": "string",
          "description": "The URI of the endpoint used to access the metastore service."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:HiveMetastoreConfigResponse",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MaintenanceWindowResponse",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MetadataIntegrationResponse",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "metadataManagementActivity": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MetadataManagementActivityResponse",
          "description": "The metadata management activities of the metastore service."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:NetworkConfigResponse",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseChannel": {
          "type": "string",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ScalingConfigResponse",
          "description": "Scaling configuration of the metastore service."
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The ID of the metastore service, which is used as the final component of the metastore service's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current state of the metastore service."
        },
        "stateMessage": {
          "type": "string",
          "description": "Additional information about the current state of the metastore service, if available."
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:TelemetryConfigResponse",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "type": "string",
          "description": "The tier of the service."
        },
        "uid": {
          "type": "string",
          "description": "The globally unique resource identifier of the metastore service."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the metastore service was last updated."
        }
      },
      "type": "object",
      "required": [
        "artifactGcsUri",
        "createTime",
        "databaseType",
        "encryptionConfig",
        "endpointUri",
        "hiveMetastoreConfig",
        "labels",
        "location",
        "maintenanceWindow",
        "metadataIntegration",
        "metadataManagementActivity",
        "name",
        "network",
        "networkConfig",
        "port",
        "project",
        "releaseChannel",
        "scalingConfig",
        "serviceId",
        "state",
        "stateMessage",
        "telemetryConfig",
        "tier",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "databaseType": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ServiceDatabaseType",
          "description": "Immutable. The database type that the Metastore service stores its data."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:EncryptionConfig",
          "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
        },
        "hiveMetastoreConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:HiveMetastoreConfig",
          "description": "Configuration information specific to running Hive metastore software as the metastore service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels for the metastore service."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenanceWindow": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MaintenanceWindow",
          "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
        },
        "metadataIntegration": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:MetadataIntegration",
          "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}."
        },
        "network": {
          "type": "string",
          "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:NetworkConfig",
          "description": "The configuration specifying the network settings for the Dataproc Metastore service."
        },
        "port": {
          "type": "integer",
          "description": "The TCP port at which the metastore service is reached. Default: 9083."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "releaseChannel": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ServiceReleaseChannel",
          "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported."
        },
        "scalingConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ScalingConfig",
          "description": "Scaling configuration of the metastore service."
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The ID of the metastore service, which is used as the final component of the metastore service's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
          "replaceOnChanges": true
        },
        "telemetryConfig": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:TelemetryConfig",
          "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
        },
        "tier": {
          "$ref": "#/types/google-native:metastore%2Fv1beta:ServiceTier",
          "description": "The tier of the service."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:metastore/v1beta:ServiceBackupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:ServiceBackupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:ServiceBackupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "backupId",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1beta:ServiceDatabaseIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:ServiceDatabaseIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:ServiceDatabaseIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "databaseId",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "databaseId",
        "serviceId"
      ]
    },
    "google-native:metastore/v1beta:ServiceDatabaseTableIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:ServiceDatabaseTableIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:ServiceDatabaseTableIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "databaseId",
        "etag",
        "location",
        "project",
        "serviceId",
        "tableId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tableId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "databaseId",
        "serviceId",
        "tableId"
      ]
    },
    "google-native:metastore/v1beta:ServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:ServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a Google service account. For example, my-other-app@appspot.gserviceaccount.com. serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: An identifier for a Kubernetes service account (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, my-project.svc.id.goog[my-namespace/my-kubernetes-sa]. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of members, or principals. For example, roles/viewer, roles/editor, or roles/owner."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:metastore/v1beta:ServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:Binding"
          },
          "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used:paths: \"bindings, etag\""
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:migrationcenter/v1:Group": {
      "description": "Creates a new group in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the group was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the group."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-friendly display name."
        },
        "groupId": {
          "type": "string",
          "description": "Required. User specified ID for the group. It will become the last component of the group name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the group."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the group was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "groupId",
        "labels",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. The description of the group."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-friendly display name."
        },
        "groupId": {
          "type": "string",
          "description": "Required. User specified ID for the group. It will become the last component of the group name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "groupId"
      ]
    },
    "google-native:migrationcenter/v1:ImportDataFile": {
      "description": "Creates an import data file.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the file was created."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "format": {
          "type": "string",
          "description": "The payload format."
        },
        "importDataFileId": {
          "type": "string",
          "description": "Required. The ID of the new data file.",
          "replaceOnChanges": true
        },
        "importJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the file."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The state of the import data file."
        },
        "uploadFileInfo": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:UploadFileInfoResponse",
          "description": "Information about a file that is uploaded to a storage service."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "format",
        "importDataFileId",
        "importJobId",
        "location",
        "name",
        "project",
        "state",
        "uploadFileInfo"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "format": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ImportDataFileFormat",
          "description": "The payload format."
        },
        "importDataFileId": {
          "type": "string",
          "description": "Required. The ID of the new data file.",
          "replaceOnChanges": true
        },
        "importJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "uploadFileInfo": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:UploadFileInfo",
          "description": "Information about a file that is uploaded to a storage service."
        }
      },
      "requiredInputs": [
        "format",
        "importDataFileId",
        "importJobId"
      ]
    },
    "google-native:migrationcenter/v1:ImportJob": {
      "description": "Creates an import job.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "assetSource": {
          "type": "string",
          "description": "Reference to a source."
        },
        "completeTime": {
          "type": "string",
          "description": "The timestamp when the import job was completed."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the import job was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-friendly display name. Maximum length is 256 characters."
        },
        "executionReport": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ExecutionReportResponse",
          "description": "The report with the results of running the import job."
        },
        "importJobId": {
          "type": "string",
          "description": "Required. ID of the import job.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full name of the import job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The state of the import job."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the import job was last updated."
        },
        "validationReport": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ValidationReportResponse",
          "description": "The report with the validation results of the import job."
        }
      },
      "type": "object",
      "required": [
        "assetSource",
        "completeTime",
        "createTime",
        "displayName",
        "executionReport",
        "importJobId",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "updateTime",
        "validationReport"
      ],
      "inputProperties": {
        "assetSource": {
          "type": "string",
          "description": "Reference to a source."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-friendly display name. Maximum length is 256 characters."
        },
        "importJobId": {
          "type": "string",
          "description": "Required. ID of the import job.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "assetSource",
        "importJobId"
      ]
    },
    "google-native:migrationcenter/v1:PreferenceSet": {
      "description": "Creates a new preference set in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the preference set was created."
        },
        "description": {
          "type": "string",
          "description": "A description of the preference set."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the preference set."
        },
        "preferenceSetId": {
          "type": "string",
          "description": "Required. User specified ID for the preference set. It will become the last component of the preference set name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the preference set was last updated."
        },
        "virtualMachinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VirtualMachinePreferencesResponse",
          "description": "A set of preferences that applies to all virtual machines in the context."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "location",
        "name",
        "preferenceSetId",
        "project",
        "updateTime",
        "virtualMachinePreferences"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of the preference set."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "preferenceSetId": {
          "type": "string",
          "description": "Required. User specified ID for the preference set. It will become the last component of the preference set name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "virtualMachinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:VirtualMachinePreferences",
          "description": "A set of preferences that applies to all virtual machines in the context."
        }
      },
      "requiredInputs": [
        "preferenceSetId"
      ]
    },
    "google-native:migrationcenter/v1:Report": {
      "description": "Creates a report.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation timestamp."
        },
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportId": {
          "type": "string",
          "description": "Required. User specified id for the report. It will become the last component of the report name. The id must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The id must match the regular expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "Report creation state."
        },
        "summary": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryResponse",
          "description": "Summary view of the Report."
        },
        "type": {
          "type": "string",
          "description": "Report type."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "location",
        "name",
        "project",
        "reportConfigId",
        "reportId",
        "state",
        "summary",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportId": {
          "type": "string",
          "description": "Required. User specified id for the report. It will become the last component of the report name. The id must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The id must match the regular expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportState",
          "description": "Report creation state."
        },
        "type": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportType",
          "description": "Report type."
        }
      },
      "requiredInputs": [
        "reportConfigId",
        "reportId"
      ]
    },
    "google-native:migrationcenter/v1:ReportConfig": {
      "description": "Creates a report configuration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "groupPreferencesetAssignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportConfigGroupPreferenceSetAssignmentResponse"
          },
          "description": "Collection of combinations of groups and preference sets."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportConfigId": {
          "type": "string",
          "description": "Required. User specified ID for the report config. It will become the last component of the report config name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "groupPreferencesetAssignments",
        "location",
        "name",
        "project",
        "reportConfigId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "groupPreferencesetAssignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportConfigGroupPreferenceSetAssignment"
          },
          "description": "Collection of combinations of groups and preference sets."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportConfigId": {
          "type": "string",
          "description": "Required. User specified ID for the report config. It will become the last component of the report config name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "groupPreferencesetAssignments",
        "reportConfigId"
      ]
    },
    "google-native:migrationcenter/v1:Source": {
      "description": "Creates a new source in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the source was created."
        },
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name."
        },
        "errorFrameCount": {
          "type": "integer",
          "description": "The number of frames that were reported by the source and contained errors."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managed": {
          "type": "boolean",
          "description": "If `true`, the source is managed by other service(s)."
        },
        "name": {
          "type": "string",
          "description": "The full name of the source."
        },
        "pendingFrameCount": {
          "type": "integer",
          "description": "Number of frames that are still being processed."
        },
        "priority": {
          "type": "integer",
          "description": "The information confidence of the source. The higher the value, the higher the confidence."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "description": "Required. User specified ID for the source. It will become the last component of the source name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the source."
        },
        "type": {
          "type": "string",
          "description": "Data source type."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the source was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "errorFrameCount",
        "location",
        "managed",
        "name",
        "pendingFrameCount",
        "priority",
        "project",
        "sourceId",
        "state",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managed": {
          "type": "boolean",
          "description": "If `true`, the source is managed by other service(s)."
        },
        "priority": {
          "type": "integer",
          "description": "The information confidence of the source. The higher the value, the higher the confidence."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "description": "Required. User specified ID for the source. It will become the last component of the source name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1:SourceType",
          "description": "Data source type."
        }
      },
      "requiredInputs": [
        "sourceId"
      ]
    },
    "google-native:migrationcenter/v1alpha1:Group": {
      "description": "Creates a new group in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the group was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description of the group."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-friendly display name."
        },
        "groupId": {
          "type": "string",
          "description": "Required. User specified ID for the group. It will become the last component of the group name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the group."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the group was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "groupId",
        "labels",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. The description of the group."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-friendly display name."
        },
        "groupId": {
          "type": "string",
          "description": "Required. User specified ID for the group. It will become the last component of the group name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "groupId"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ImportDataFile": {
      "description": "Creates an import data file.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the file was created."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. User-friendly display name. Maximum length is 256 characters."
        },
        "format": {
          "type": "string",
          "description": "The payload format."
        },
        "importDataFileId": {
          "type": "string",
          "description": "Required. The ID of the new data file.",
          "replaceOnChanges": true
        },
        "importJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the file."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The state of the import data file."
        },
        "uploadFileInfo": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:UploadFileInfoResponse",
          "description": "Information about a file that is uploaded to a storage service."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "format",
        "importDataFileId",
        "importJobId",
        "location",
        "name",
        "project",
        "state",
        "uploadFileInfo"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Optional. User-friendly display name. Maximum length is 256 characters."
        },
        "format": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ImportDataFileFormat",
          "description": "The payload format."
        },
        "importDataFileId": {
          "type": "string",
          "description": "Required. The ID of the new data file.",
          "replaceOnChanges": true
        },
        "importJobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "uploadFileInfo": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:UploadFileInfo",
          "description": "Information about a file that is uploaded to a storage service."
        }
      },
      "requiredInputs": [
        "format",
        "importDataFileId",
        "importJobId"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ImportJob": {
      "description": "Creates an import job.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "assetSource": {
          "type": "string",
          "description": "Reference to a source."
        },
        "completeTime": {
          "type": "string",
          "description": "The timestamp when the import job was completed."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the import job was created."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "executionReport": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ExecutionReportResponse",
          "description": "The report with the results of running the import job."
        },
        "gcsPayload": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:GCSPayloadInfoResponse",
          "description": "The payload is in Google Cloud Storage."
        },
        "importJobId": {
          "type": "string",
          "description": "Required. ID of the import job.",
          "replaceOnChanges": true
        },
        "inlinePayload": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:InlinePayloadInfoResponse",
          "description": "The payload is included in the request, mainly used for small import jobs."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full name of the import job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The state of the import job."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the import job was last updated."
        },
        "validationReport": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ValidationReportResponse",
          "description": "The report with the validation results of the import job."
        }
      },
      "type": "object",
      "required": [
        "assetSource",
        "completeTime",
        "createTime",
        "displayName",
        "executionReport",
        "gcsPayload",
        "importJobId",
        "inlinePayload",
        "labels",
        "location",
        "name",
        "project",
        "state",
        "updateTime",
        "validationReport"
      ],
      "inputProperties": {
        "assetSource": {
          "type": "string",
          "description": "Reference to a source."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "gcsPayload": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:GCSPayloadInfo",
          "description": "The payload is in Google Cloud Storage."
        },
        "importJobId": {
          "type": "string",
          "description": "Required. ID of the import job.",
          "replaceOnChanges": true
        },
        "inlinePayload": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:InlinePayloadInfo",
          "description": "The payload is included in the request, mainly used for small import jobs."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "assetSource",
        "importJobId"
      ]
    },
    "google-native:migrationcenter/v1alpha1:PreferenceSet": {
      "description": "Creates a new preference set in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the preference set was created."
        },
        "description": {
          "type": "string",
          "description": "A description of the preference set."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the preference set."
        },
        "preferenceSetId": {
          "type": "string"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the preference set was last updated."
        },
        "virtualMachinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesResponse",
          "description": "A set of preferences that applies to all virtual machines in the context."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "location",
        "name",
        "project",
        "updateTime",
        "virtualMachinePreferences"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of the preference set."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "preferenceSetId": {
          "type": "string"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "virtualMachinePreferences": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferences",
          "description": "A set of preferences that applies to all virtual machines in the context."
        }
      }
    },
    "google-native:migrationcenter/v1alpha1:Report": {
      "description": "Creates a report.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation timestamp."
        },
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportId": {
          "type": "string",
          "description": "Required. User specified id for the report. It will become the last component of the report name. The id must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The id must match the regular expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "Report creation state."
        },
        "summary": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryResponse",
          "description": "Summary view of the Report."
        },
        "type": {
          "type": "string",
          "description": "Report type."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update timestamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "location",
        "name",
        "project",
        "reportConfigId",
        "reportId",
        "state",
        "summary",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportId": {
          "type": "string",
          "description": "Required. User specified id for the report. It will become the last component of the report name. The id must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The id must match the regular expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportState",
          "description": "Report creation state."
        },
        "type": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportType",
          "description": "Report type."
        }
      },
      "requiredInputs": [
        "reportConfigId",
        "reportId"
      ]
    },
    "google-native:migrationcenter/v1alpha1:ReportConfig": {
      "description": "Creates a report configuration.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "groupPreferencesetAssignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportConfigGroupPreferenceSetAssignmentResponse"
          },
          "description": "Collection of combinations of groups and preference sets."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportConfigId": {
          "type": "string",
          "description": "Required. User specified ID for the report config. It will become the last component of the report config name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "groupPreferencesetAssignments",
        "location",
        "name",
        "project",
        "reportConfigId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name. Maximum length is 63 characters."
        },
        "groupPreferencesetAssignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportConfigGroupPreferenceSetAssignment"
          },
          "description": "Collection of combinations of groups and preference sets."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reportConfigId": {
          "type": "string",
          "description": "Required. User specified ID for the report config. It will become the last component of the report config name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: [a-z]([a-z0-9-]{0,61}[a-z0-9])?.",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "groupPreferencesetAssignments",
        "reportConfigId"
      ]
    },
    "google-native:migrationcenter/v1alpha1:Source": {
      "description": "Creates a new source in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the source was created."
        },
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name."
        },
        "errorFrameCount": {
          "type": "integer",
          "description": "The number of frames that were reported by the source and contained errors."
        },
        "isManaged": {
          "type": "boolean",
          "description": "If `true`, the source is managed by other service(s)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The full name of the source."
        },
        "pendingFrameCount": {
          "type": "integer",
          "description": "Number of frames that are still being processed."
        },
        "priority": {
          "type": "integer",
          "description": "The information confidence of the source. The higher the value, the higher the confidence."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "description": "Required. User specified ID for the source. It will become the last component of the source name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the source."
        },
        "type": {
          "type": "string",
          "description": "Data source type."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the source was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "errorFrameCount",
        "isManaged",
        "location",
        "name",
        "pendingFrameCount",
        "priority",
        "project",
        "sourceId",
        "state",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Free-text description."
        },
        "displayName": {
          "type": "string",
          "description": "User-friendly display name."
        },
        "isManaged": {
          "type": "boolean",
          "description": "If `true`, the source is managed by other service(s)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "priority": {
          "type": "integer",
          "description": "The information confidence of the source. The higher the value, the higher the confidence."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "description": "Required. User specified ID for the source. It will become the last component of the source name. The ID must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. The ID must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`.",
          "replaceOnChanges": true
        },
        "type": {
          "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:SourceType",
          "description": "Data source type."
        }
      },
      "requiredInputs": [
        "sourceId"
      ]
    },
    "google-native:ml/v1:Job": {
      "description": "Creates a training or a batch prediction job.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "When the job was created."
        },
        "endTime": {
          "type": "string",
          "description": "When the job processing was completed."
        },
        "errorMessage": {
          "type": "string",
          "description": "The details of a failure or a cancellation."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a job from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform job updates in order to avoid race conditions: An `etag` is returned in the response to `GetJob`, and systems are expected to put that etag in the request to `UpdateJob` to ensure that their change will be applied to the same version of the job."
        },
        "jobId": {
          "type": "string",
          "description": "The user-specified id of the job."
        },
        "jobPosition": {
          "type": "string",
          "description": "It's only effect when the job is in QUEUED state. If it's positive, it indicates the job's position in the job scheduler. It's 0 when the job is already scheduled."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. One or more labels that you can add, to organize your jobs. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels."
        },
        "predictionInput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__PredictionInputResponse",
          "description": "Input parameters to create a prediction job."
        },
        "predictionOutput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__PredictionOutputResponse",
          "description": "The current prediction job result."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "When the job processing was started."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of a job."
        },
        "trainingInput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__TrainingInputResponse",
          "description": "Input parameters to create a training job."
        },
        "trainingOutput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__TrainingOutputResponse",
          "description": "The current training job result."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "endTime",
        "errorMessage",
        "etag",
        "jobId",
        "jobPosition",
        "labels",
        "predictionInput",
        "predictionOutput",
        "project",
        "startTime",
        "state",
        "trainingInput",
        "trainingOutput"
      ],
      "inputProperties": {
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a job from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform job updates in order to avoid race conditions: An `etag` is returned in the response to `GetJob`, and systems are expected to put that etag in the request to `UpdateJob` to ensure that their change will be applied to the same version of the job."
        },
        "jobId": {
          "type": "string",
          "description": "The user-specified id of the job."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. One or more labels that you can add, to organize your jobs. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels."
        },
        "predictionInput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__PredictionInput",
          "description": "Input parameters to create a prediction job."
        },
        "predictionOutput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__PredictionOutput",
          "description": "The current prediction job result."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingInput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__TrainingInput",
          "description": "Input parameters to create a training job."
        },
        "trainingOutput": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__TrainingOutput",
          "description": "The current training job result."
        }
      },
      "requiredInputs": [
        "jobId"
      ]
    },
    "google-native:ml/v1:JobIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:ml/v1:JobIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:ml/v1:JobIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "jobId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "jobId"
      ]
    },
    "google-native:ml/v1:Model": {
      "description": "Creates a model which will later contain one or more versions. You must add at least one version before you can request predictions from the model. Add versions by calling projects.models.versions.create.",
      "properties": {
        "defaultVersion": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__VersionResponse",
          "description": "The default version of the model. This version will be used to handle prediction requests that do not specify a version. You can change the default version by calling projects.models.versions.setDefault."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description specified for the model when it was created."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetModel`, and systems are expected to put that etag in the request to `UpdateModel` to ensure that their change will be applied to the model as intended."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. One or more labels that you can add, to organize your models. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models."
        },
        "name": {
          "type": "string",
          "description": "The name specified for the model when it was created. The model name must be unique within the project it is created in."
        },
        "onlinePredictionConsoleLogging": {
          "type": "boolean",
          "description": "Optional. If true, online prediction nodes send `stderr` and `stdout` streams to Cloud Logging. These can be more verbose than the standard access logs (see `onlinePredictionLogging`) and can incur higher cost. However, they are helpful for debugging. Note that [logs may incur a cost](/stackdriver/pricing), especially if your project receives prediction requests at a high QPS. Estimate your costs before enabling this option. Default is false."
        },
        "onlinePredictionLogging": {
          "type": "boolean",
          "description": "Optional. If true, online prediction access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each request. Note that [logs may incur a cost](/stackdriver/pricing), especially if your project receives prediction requests at a high queries per second rate (QPS). Estimate your costs before enabling this option. Default is false."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of regions where the model is going to be deployed. Only one region per model is supported. Defaults to 'us-central1' if nothing is set. See the available regions for AI Platform services. Note: * No matter where a model is deployed, it can always be accessed by users from anywhere, both for online and batch prediction. * The region for a batch prediction job is set by the region field when submitting the batch prediction job and does not take its value from this field."
        }
      },
      "type": "object",
      "required": [
        "defaultVersion",
        "description",
        "etag",
        "labels",
        "name",
        "onlinePredictionConsoleLogging",
        "onlinePredictionLogging",
        "project",
        "regions"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. The description specified for the model when it was created."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetModel`, and systems are expected to put that etag in the request to `UpdateModel` to ensure that their change will be applied to the model as intended."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. One or more labels that you can add, to organize your models. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models."
        },
        "name": {
          "type": "string",
          "description": "The name specified for the model when it was created. The model name must be unique within the project it is created in."
        },
        "onlinePredictionConsoleLogging": {
          "type": "boolean",
          "description": "Optional. If true, online prediction nodes send `stderr` and `stdout` streams to Cloud Logging. These can be more verbose than the standard access logs (see `onlinePredictionLogging`) and can incur higher cost. However, they are helpful for debugging. Note that [logs may incur a cost](/stackdriver/pricing), especially if your project receives prediction requests at a high QPS. Estimate your costs before enabling this option. Default is false."
        },
        "onlinePredictionLogging": {
          "type": "boolean",
          "description": "Optional. If true, online prediction access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each request. Note that [logs may incur a cost](/stackdriver/pricing), especially if your project receives prediction requests at a high queries per second rate (QPS). Estimate your costs before enabling this option. Default is false."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The list of regions where the model is going to be deployed. Only one region per model is supported. Defaults to 'us-central1' if nothing is set. See the available regions for AI Platform services. Note: * No matter where a model is deployed, it can always be accessed by users from anywhere, both for online and batch prediction. * The region for a batch prediction job is set by the region field when submitting the batch prediction job and does not take its value from this field."
        }
      }
    },
    "google-native:ml/v1:ModelIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:ml/v1:ModelIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:ml/v1:ModelIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "modelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "modelId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "modelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "modelId"
      ]
    },
    "google-native:ml/v1:Study": {
      "description": "Creates a study.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time at which the study was created."
        },
        "inactiveReason": {
          "type": "string",
          "description": "A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of a study."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The detailed state of a study."
        },
        "studyConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__StudyConfigResponse",
          "description": "Configuration of the study."
        },
        "studyId": {
          "type": "string",
          "description": "Required. The ID to use for the study, which will become the final component of the study's resource name.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "inactiveReason",
        "location",
        "name",
        "project",
        "state",
        "studyConfig",
        "studyId"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "studyConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__StudyConfig",
          "description": "Configuration of the study."
        },
        "studyId": {
          "type": "string",
          "description": "Required. The ID to use for the study, which will become the final component of the study's resource name.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "studyConfig",
        "studyId"
      ]
    },
    "google-native:ml/v1:Trial": {
      "description": "Adds a user provided trial to a study.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The identifier of the client that originally requested this trial."
        },
        "endTime": {
          "type": "string",
          "description": "Time at which the trial's status changed to COMPLETED."
        },
        "finalMeasurement": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__MeasurementResponse",
          "description": "The final measurement containing the objective value."
        },
        "infeasibleReason": {
          "type": "string",
          "description": "A human readable string describing why the trial is infeasible. This should only be set if trial_infeasible is true."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "measurements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__MeasurementResponse"
          },
          "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_time). These are used for early stopping computations."
        },
        "name": {
          "type": "string",
          "description": "Name of the trial assigned by the service."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_Trial_ParameterResponse"
          },
          "description": "The parameters of the trial."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "Time at which the trial was started."
        },
        "state": {
          "type": "string",
          "description": "The detailed state of a trial."
        },
        "studyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trialInfeasible": {
          "type": "boolean",
          "description": "If true, the parameters in this trial are not attempted again."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "endTime",
        "finalMeasurement",
        "infeasibleReason",
        "location",
        "measurements",
        "name",
        "parameters",
        "project",
        "startTime",
        "state",
        "studyId",
        "trialInfeasible"
      ],
      "inputProperties": {
        "finalMeasurement": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__Measurement",
          "description": "The final measurement containing the objective value."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "measurements": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__Measurement"
          },
          "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_time). These are used for early stopping computations."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_Trial_Parameter"
          },
          "description": "The parameters of the trial."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:ml%2Fv1:TrialState",
          "description": "The detailed state of a trial."
        },
        "studyId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "studyId"
      ]
    },
    "google-native:ml/v1:Version": {
      "description": "Creates a new version of a model from a trained TensorFlow model. If the version created in the cloud by this call is the first deployed version of the specified model, it will be made the default version of the model. When you add a version to a model that already has one or more versions, the default version does not automatically change. If you want a new version to be the default, you must call projects.models.versions.setDefault.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AcceleratorConfigResponse",
          "description": "Optional. Accelerator config for using GPUs for online prediction (beta). Only specify this field if you have specified a Compute Engine (N1) machine type in the `machineType` field. Learn more about [using GPUs for online prediction](/ml-engine/docs/machine-types-online-prediction#gpus)."
        },
        "autoScaling": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AutoScalingResponse",
          "description": "Automatically scale the number of nodes used to serve the model in response to increases and decreases in traffic. Care should be taken to ramp up traffic according to the model's ability to scale or you will start seeing increases in latency and 429 response codes."
        },
        "container": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ContainerSpecResponse",
          "description": "Optional. Specifies a custom container to use for serving predictions. If you specify this field, then `machineType` is required. If you specify this field, then `deploymentUri` is optional. If you specify this field, then you must not specify `runtimeVersion`, `packageUris`, `framework`, `pythonVersion`, or `predictionClass`."
        },
        "createTime": {
          "type": "string",
          "description": "The time the version was created."
        },
        "deploymentUri": {
          "type": "string",
          "description": "The Cloud Storage URI of a directory containing trained model artifacts to be used to create the model version. See the [guide to deploying models](/ai-platform/prediction/docs/deploying-models) for more information. The total number of files under this directory must not exceed 1000. During projects.models.versions.create, AI Platform Prediction copies all files from the specified directory to a location managed by the service. From then on, AI Platform Prediction uses these copies of the model artifacts to serve predictions, not the original files in Cloud Storage, so this location is useful only as a historical record. If you specify container, then this field is optional. Otherwise, it is required. Learn [how to use this field with a custom container](/ai-platform/prediction/docs/custom-container-requirements#artifacts)."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description specified for the version when it was created."
        },
        "errorMessage": {
          "type": "string",
          "description": "The details of a failure or a cancellation."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetVersion`, and systems are expected to put that etag in the request to `UpdateVersion` to ensure that their change will be applied to the model as intended."
        },
        "explanationConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ExplanationConfigResponse",
          "description": "Optional. Configures explainability features on the model's version. Some explanation features require additional metadata to be loaded as part of the model payload."
        },
        "framework": {
          "type": "string",
          "description": "Optional. The machine learning framework AI Platform uses to train this version of the model. Valid values are `TENSORFLOW`, `SCIKIT_LEARN`, `XGBOOST`. If you do not specify a framework, AI Platform will analyze files in the deployment_uri to determine a framework. If you choose `SCIKIT_LEARN` or `XGBOOST`, you must also set the runtime version of the model to 1.4 or greater. Do **not** specify a framework if you're deploying a [custom prediction routine](/ai-platform/prediction/docs/custom-prediction-routines) or if you're using a [custom container](/ai-platform/prediction/docs/use-custom-container)."
        },
        "isDefault": {
          "type": "boolean",
          "description": "If true, this version will be used to handle prediction requests that do not specify a version. You can change the default version by calling projects.methods.versions.setDefault."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. One or more labels that you can add, to organize your model versions. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models."
        },
        "lastMigrationModelId": {
          "type": "string",
          "description": "The [AI Platform (Unified) `Model`](https://cloud.google.com/ai-platform-unified/docs/reference/rest/v1beta1/projects.locations.models) ID for the last [model migration](https://cloud.google.com/ai-platform-unified/docs/start/migrating-to-ai-platform-unified)."
        },
        "lastMigrationTime": {
          "type": "string",
          "description": "The last time this version was successfully [migrated to AI Platform (Unified)](https://cloud.google.com/ai-platform-unified/docs/start/migrating-to-ai-platform-unified)."
        },
        "lastUseTime": {
          "type": "string",
          "description": "The time the version was last used for prediction."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The type of machine on which to serve the model. Currently only applies to online prediction service. To learn about valid values for this field, read [Choosing a machine type for online prediction](/ai-platform/prediction/docs/machine-types-online-prediction). If this field is not specified and you are using a [regional endpoint](/ai-platform/prediction/docs/regional-endpoints), then the machine type defaults to `n1-standard-2`. If this field is not specified and you are using the global endpoint (`ml.googleapis.com`), then the machine type defaults to `mls1-c1-m2`."
        },
        "manualScaling": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ManualScalingResponse",
          "description": "Manually select the number of nodes to use for serving the model. You should generally use `auto_scaling` with an appropriate `min_nodes` instead, but this option is available if you want more predictable billing. Beware that latency and error rates will increase if the traffic exceeds that capability of the system to serve it based on the selected number of nodes."
        },
        "modelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name specified for the version when it was created. The version name must be unique within the model it is created in."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage paths (`gs://…`) of packages for [custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines) or [scikit-learn pipelines with custom code](/ml-engine/docs/scikit/exporting-for-prediction#custom-pipeline-code). For a custom prediction routine, one of these packages must contain your Predictor class (see [`predictionClass`](#Version.FIELDS.prediction_class)). Additionally, include any dependencies used by your Predictor or scikit-learn pipeline uses that are not already included in your selected [runtime version](/ml-engine/docs/tensorflow/runtime-version-list). If you specify this field, you must also set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater."
        },
        "predictionClass": {
          "type": "string",
          "description": "Optional. The fully qualified name (module_name.class_name) of a class that implements the Predictor interface described in this reference field. The module containing this class should be included in a package provided to the [`packageUris` field](#Version.FIELDS.package_uris). Specify this field if and only if you are deploying a [custom prediction routine (beta)](/ml-engine/docs/tensorflow/custom-prediction-routines). If you specify this field, you must set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater and you must set `machineType` to a [legacy (MLS1) machine type](/ml-engine/docs/machine-types-online-prediction). The following code sample provides the Predictor interface: class Predictor(object): \"\"\"Interface for constructing custom predictors.\"\"\" def predict(self, instances, **kwargs): \"\"\"Performs custom prediction. Instances are the decoded values from the request. They have already been deserialized from JSON. Args: instances: A list of prediction input instances. **kwargs: A dictionary of keyword args provided as additional fields on the predict request body. Returns: A list of outputs containing the prediction results. This list must be JSON serializable. \"\"\" raise NotImplementedError() @classmethod def from_path(cls, model_dir): \"\"\"Creates an instance of Predictor using the given path. Loading of the predictor should be done in this method. Args: model_dir: The local directory that contains the exported model file along with any additional files uploaded when creating the version resource. Returns: An instance implementing this Predictor class. \"\"\" raise NotImplementedError() Learn more about [the Predictor interface and custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pythonVersion": {
          "type": "string",
          "description": "The version of Python used in prediction. The following Python versions are available: * Python '3.7' is available when `runtime_version` is set to '1.15' or later. * Python '3.5' is available when `runtime_version` is set to a version from '1.4' to '1.14'. * Python '2.7' is available when `runtime_version` is set to '1.15' or earlier. Read more about the Python versions available for [each runtime version](/ml-engine/docs/runtime-version-list)."
        },
        "requestLoggingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__RequestLoggingConfigResponse",
          "description": "Optional. *Only* specify this field in a projects.models.versions.patch request. Specifying it in a projects.models.versions.create request has no effect. Configures the request-response pair logging on predictions from this Version."
        },
        "routes": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__RouteMapResponse",
          "description": "Optional. Specifies paths on a custom container's HTTP server where AI Platform Prediction sends certain requests. If you specify this field, then you must also specify the `container` field. If you specify the `container` field and do not specify this field, it defaults to the following: ```json { \"predict\": \"/v1/models/MODEL/versions/VERSION:predict\", \"health\": \"/v1/models/MODEL/versions/VERSION\" } ``` See RouteMap for more details about these default values."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The AI Platform runtime version to use for this deployment. For more information, see the [runtime version list](/ml-engine/docs/runtime-version-list) and [how to manage runtime versions](/ml-engine/docs/versioning)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Specifies the service account for resource access control. If you specify this field, then you must also specify either the `containerSpec` or the `predictionClass` field. Learn more about [using a custom service account](/ai-platform/prediction/docs/custom-service-account)."
        },
        "state": {
          "type": "string",
          "description": "The state of a version."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "autoScaling",
        "container",
        "createTime",
        "deploymentUri",
        "description",
        "errorMessage",
        "etag",
        "explanationConfig",
        "framework",
        "isDefault",
        "labels",
        "lastMigrationModelId",
        "lastMigrationTime",
        "lastUseTime",
        "machineType",
        "manualScaling",
        "modelId",
        "name",
        "packageUris",
        "predictionClass",
        "project",
        "pythonVersion",
        "requestLoggingConfig",
        "routes",
        "runtimeVersion",
        "serviceAccount",
        "state"
      ],
      "inputProperties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AcceleratorConfig",
          "description": "Optional. Accelerator config for using GPUs for online prediction (beta). Only specify this field if you have specified a Compute Engine (N1) machine type in the `machineType` field. Learn more about [using GPUs for online prediction](/ml-engine/docs/machine-types-online-prediction#gpus)."
        },
        "autoScaling": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AutoScaling",
          "description": "Automatically scale the number of nodes used to serve the model in response to increases and decreases in traffic. Care should be taken to ramp up traffic according to the model's ability to scale or you will start seeing increases in latency and 429 response codes."
        },
        "container": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ContainerSpec",
          "description": "Optional. Specifies a custom container to use for serving predictions. If you specify this field, then `machineType` is required. If you specify this field, then `deploymentUri` is optional. If you specify this field, then you must not specify `runtimeVersion`, `packageUris`, `framework`, `pythonVersion`, or `predictionClass`."
        },
        "deploymentUri": {
          "type": "string",
          "description": "The Cloud Storage URI of a directory containing trained model artifacts to be used to create the model version. See the [guide to deploying models](/ai-platform/prediction/docs/deploying-models) for more information. The total number of files under this directory must not exceed 1000. During projects.models.versions.create, AI Platform Prediction copies all files from the specified directory to a location managed by the service. From then on, AI Platform Prediction uses these copies of the model artifacts to serve predictions, not the original files in Cloud Storage, so this location is useful only as a historical record. If you specify container, then this field is optional. Otherwise, it is required. Learn [how to use this field with a custom container](/ai-platform/prediction/docs/custom-container-requirements#artifacts)."
        },
        "description": {
          "type": "string",
          "description": "Optional. The description specified for the version when it was created."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetVersion`, and systems are expected to put that etag in the request to `UpdateVersion` to ensure that their change will be applied to the model as intended."
        },
        "explanationConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ExplanationConfig",
          "description": "Optional. Configures explainability features on the model's version. Some explanation features require additional metadata to be loaded as part of the model payload."
        },
        "framework": {
          "$ref": "#/types/google-native:ml%2Fv1:VersionFramework",
          "description": "Optional. The machine learning framework AI Platform uses to train this version of the model. Valid values are `TENSORFLOW`, `SCIKIT_LEARN`, `XGBOOST`. If you do not specify a framework, AI Platform will analyze files in the deployment_uri to determine a framework. If you choose `SCIKIT_LEARN` or `XGBOOST`, you must also set the runtime version of the model to 1.4 or greater. Do **not** specify a framework if you're deploying a [custom prediction routine](/ai-platform/prediction/docs/custom-prediction-routines) or if you're using a [custom container](/ai-platform/prediction/docs/use-custom-container)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. One or more labels that you can add, to organize your model versions. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models."
        },
        "machineType": {
          "type": "string",
          "description": "Optional. The type of machine on which to serve the model. Currently only applies to online prediction service. To learn about valid values for this field, read [Choosing a machine type for online prediction](/ai-platform/prediction/docs/machine-types-online-prediction). If this field is not specified and you are using a [regional endpoint](/ai-platform/prediction/docs/regional-endpoints), then the machine type defaults to `n1-standard-2`. If this field is not specified and you are using the global endpoint (`ml.googleapis.com`), then the machine type defaults to `mls1-c1-m2`."
        },
        "manualScaling": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ManualScaling",
          "description": "Manually select the number of nodes to use for serving the model. You should generally use `auto_scaling` with an appropriate `min_nodes` instead, but this option is available if you want more predictable billing. Beware that latency and error rates will increase if the traffic exceeds that capability of the system to serve it based on the selected number of nodes."
        },
        "modelId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name specified for the version when it was created. The version name must be unique within the model it is created in."
        },
        "packageUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Cloud Storage paths (`gs://…`) of packages for [custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines) or [scikit-learn pipelines with custom code](/ml-engine/docs/scikit/exporting-for-prediction#custom-pipeline-code). For a custom prediction routine, one of these packages must contain your Predictor class (see [`predictionClass`](#Version.FIELDS.prediction_class)). Additionally, include any dependencies used by your Predictor or scikit-learn pipeline uses that are not already included in your selected [runtime version](/ml-engine/docs/tensorflow/runtime-version-list). If you specify this field, you must also set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater."
        },
        "predictionClass": {
          "type": "string",
          "description": "Optional. The fully qualified name (module_name.class_name) of a class that implements the Predictor interface described in this reference field. The module containing this class should be included in a package provided to the [`packageUris` field](#Version.FIELDS.package_uris). Specify this field if and only if you are deploying a [custom prediction routine (beta)](/ml-engine/docs/tensorflow/custom-prediction-routines). If you specify this field, you must set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater and you must set `machineType` to a [legacy (MLS1) machine type](/ml-engine/docs/machine-types-online-prediction). The following code sample provides the Predictor interface: class Predictor(object): \"\"\"Interface for constructing custom predictors.\"\"\" def predict(self, instances, **kwargs): \"\"\"Performs custom prediction. Instances are the decoded values from the request. They have already been deserialized from JSON. Args: instances: A list of prediction input instances. **kwargs: A dictionary of keyword args provided as additional fields on the predict request body. Returns: A list of outputs containing the prediction results. This list must be JSON serializable. \"\"\" raise NotImplementedError() @classmethod def from_path(cls, model_dir): \"\"\"Creates an instance of Predictor using the given path. Loading of the predictor should be done in this method. Args: model_dir: The local directory that contains the exported model file along with any additional files uploaded when creating the version resource. Returns: An instance implementing this Predictor class. \"\"\" raise NotImplementedError() Learn more about [the Predictor interface and custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pythonVersion": {
          "type": "string",
          "description": "The version of Python used in prediction. The following Python versions are available: * Python '3.7' is available when `runtime_version` is set to '1.15' or later. * Python '3.5' is available when `runtime_version` is set to a version from '1.4' to '1.14'. * Python '2.7' is available when `runtime_version` is set to '1.15' or earlier. Read more about the Python versions available for [each runtime version](/ml-engine/docs/runtime-version-list)."
        },
        "requestLoggingConfig": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__RequestLoggingConfig",
          "description": "Optional. *Only* specify this field in a projects.models.versions.patch request. Specifying it in a projects.models.versions.create request has no effect. Configures the request-response pair logging on predictions from this Version."
        },
        "routes": {
          "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__RouteMap",
          "description": "Optional. Specifies paths on a custom container's HTTP server where AI Platform Prediction sends certain requests. If you specify this field, then you must also specify the `container` field. If you specify the `container` field and do not specify this field, it defaults to the following: ```json { \"predict\": \"/v1/models/MODEL/versions/VERSION:predict\", \"health\": \"/v1/models/MODEL/versions/VERSION\" } ``` See RouteMap for more details about these default values."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The AI Platform runtime version to use for this deployment. For more information, see the [runtime version list](/ml-engine/docs/runtime-version-list) and [how to manage runtime versions](/ml-engine/docs/versioning)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Optional. Specifies the service account for resource access control. If you specify this field, then you must also specify either the `containerSpec` or the `predictionClass` field. Learn more about [using a custom service account](/ai-platform/prediction/docs/custom-service-account)."
        }
      },
      "requiredInputs": [
        "modelId",
        "pythonVersion",
        "runtimeVersion"
      ]
    },
    "google-native:monitoring/v1:Dashboard": {
      "description": "Creates a new custom dashboard. For examples on how you can use this API to create dashboards, see Managing dashboards by API (https://cloud.google.com/monitoring/dashboards/api-dashboard). This method requires the monitoring.dashboards.create permission on the specified project. For more information about permissions, see Cloud Identity and Access Management (https://cloud.google.com/iam).",
      "properties": {
        "columnLayout": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ColumnLayoutResponse",
          "description": "The content is divided into equally spaced columns and the widgets are arranged vertically."
        },
        "dashboardFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:DashboardFilterResponse"
          },
          "description": "Filters to reduce the amount of data charted based on the filter criteria."
        },
        "displayName": {
          "type": "string",
          "description": "The mutable, human-readable name."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. An etag is returned in the response to GetDashboard, and users are expected to put that etag in the request to UpdateDashboard to ensure that their change will be applied to the same version of the Dashboard configuration. The field should not be passed during dashboard creation."
        },
        "gridLayout": {
          "$ref": "#/types/google-native:monitoring%2Fv1:GridLayoutResponse",
          "description": "Content is arranged with a basic layout that re-flows a simple list of informational elements like widgets or tiles."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels applied to the dashboard"
        },
        "mosaicLayout": {
          "$ref": "#/types/google-native:monitoring%2Fv1:MosaicLayoutResponse",
          "description": "The content is arranged as a grid of tiles, with each content widget occupying one or more grid blocks."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the dashboard."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rowLayout": {
          "$ref": "#/types/google-native:monitoring%2Fv1:RowLayoutResponse",
          "description": "The content is divided into equally spaced rows and the widgets are arranged horizontally."
        }
      },
      "type": "object",
      "required": [
        "columnLayout",
        "dashboardFilters",
        "displayName",
        "etag",
        "gridLayout",
        "labels",
        "mosaicLayout",
        "name",
        "project",
        "rowLayout"
      ],
      "inputProperties": {
        "columnLayout": {
          "$ref": "#/types/google-native:monitoring%2Fv1:ColumnLayout",
          "description": "The content is divided into equally spaced columns and the widgets are arranged vertically."
        },
        "dashboardFilters": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv1:DashboardFilter"
          },
          "description": "Filters to reduce the amount of data charted based on the filter criteria."
        },
        "displayName": {
          "type": "string",
          "description": "The mutable, human-readable name."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. An etag is returned in the response to GetDashboard, and users are expected to put that etag in the request to UpdateDashboard to ensure that their change will be applied to the same version of the Dashboard configuration. The field should not be passed during dashboard creation."
        },
        "gridLayout": {
          "$ref": "#/types/google-native:monitoring%2Fv1:GridLayout",
          "description": "Content is arranged with a basic layout that re-flows a simple list of informational elements like widgets or tiles."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels applied to the dashboard"
        },
        "mosaicLayout": {
          "$ref": "#/types/google-native:monitoring%2Fv1:MosaicLayout",
          "description": "The content is arranged as a grid of tiles, with each content widget occupying one or more grid blocks."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the dashboard."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rowLayout": {
          "$ref": "#/types/google-native:monitoring%2Fv1:RowLayout",
          "description": "The content is divided into equally spaced rows and the widgets are arranged horizontally."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:monitoring/v3:AlertPolicy": {
      "description": "Creates a new alerting policy.Design your application to single-thread API calls that modify the state of alerting policies in a single project. This includes calls to CreateAlertPolicy, DeleteAlertPolicy and UpdateAlertPolicy.",
      "properties": {
        "alertStrategy": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AlertStrategyResponse",
          "description": "Control over how this alert policy's notification channels are notified."
        },
        "combiner": {
          "type": "string",
          "description": "How to combine the results of multiple conditions to determine if an incident should be opened. If condition_time_series_query_language is present, this must be COMBINE_UNSPECIFIED."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:ConditionResponse"
          },
          "description": "A list of conditions for the policy. The conditions are combined by AND or OR according to the combiner field. If the combined conditions evaluate to true, then an incident is created. A policy can have from one to six conditions. If condition_time_series_query_language is present, it must be the only condition. If condition_monitoring_query_language is present, it must be the only condition."
        },
        "creationRecord": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecordResponse",
          "description": "A read-only record of the creation of the alerting policy. If provided in a call to create or update, this field will be ignored."
        },
        "displayName": {
          "type": "string",
          "description": "A short name or phrase used to identify the policy in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple policies in the same project. The name is limited to 512 Unicode characters.The convention for the display_name of a PrometheusQueryLanguageCondition is \"{rule group name}/{alert name}\", where the {rule group name} and {alert name} should be taken from the corresponding Prometheus configuration file. This convention is not enforced. In any case the display_name is not a unique key of the AlertPolicy."
        },
        "documentation": {
          "$ref": "#/types/google-native:monitoring%2Fv3:DocumentationResponse",
          "description": "Documentation that is included with notifications and incidents related to this policy. Best practice is for the documentation to include information to help responders understand, mitigate, escalate, and correct the underlying problems detected by the alerting policy. Notification channels that have limited capacity might not show this documentation."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not the policy is enabled. On write, the default interpretation if unset is that the policy is enabled. On read, clients should not make any assumption about the state if it has not been populated. The field should always be populated on List and Get operations, unless a field projection has been specified that strips it out."
        },
        "mutationRecord": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecordResponse",
          "description": "A read-only record of the most recent change to the alerting policy. If provided in a call to create or update, this field will be ignored."
        },
        "name": {
          "type": "string",
          "description": "Required if the policy exists. The resource name for this policy. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] [ALERT_POLICY_ID] is assigned by Cloud Monitoring when the policy is created. When calling the alertPolicies.create method, do not include the name field in the alerting policy passed as part of the request."
        },
        "notificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifies the notification channels to which notifications should be sent when incidents are opened or closed or when new violations occur on an already opened incident. Each element of this array corresponds to the name field in each of the NotificationChannel objects that are returned from the ListNotificationChannels method. The format of the entries in this field is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "severity": {
          "type": "string",
          "description": "Optional. The severity of an alert policy indicates how important alerts generated by that policy are. The severity level, if specified, will be displayed on the Incident detail page and in notifications."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key/value data to be used for organizing and identifying the AlertPolicy objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter.Note that Prometheus {alert name} is a valid Prometheus label names (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels), whereas Prometheus {rule group} is an unrestricted UTF-8 string. This means that they cannot be stored as-is in user labels, because they may contain characters that are not allowed in user-label values."
        },
        "validity": {
          "$ref": "#/types/google-native:monitoring%2Fv3:StatusResponse",
          "description": "Read-only description of how the alert policy is invalid. This field is only set when the alert policy is invalid. An invalid alert policy will not generate incidents."
        }
      },
      "type": "object",
      "required": [
        "alertStrategy",
        "combiner",
        "conditions",
        "creationRecord",
        "displayName",
        "documentation",
        "enabled",
        "mutationRecord",
        "name",
        "notificationChannels",
        "project",
        "severity",
        "userLabels",
        "validity"
      ],
      "inputProperties": {
        "alertStrategy": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AlertStrategy",
          "description": "Control over how this alert policy's notification channels are notified."
        },
        "combiner": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AlertPolicyCombiner",
          "description": "How to combine the results of multiple conditions to determine if an incident should be opened. If condition_time_series_query_language is present, this must be COMBINE_UNSPECIFIED."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:Condition"
          },
          "description": "A list of conditions for the policy. The conditions are combined by AND or OR according to the combiner field. If the combined conditions evaluate to true, then an incident is created. A policy can have from one to six conditions. If condition_time_series_query_language is present, it must be the only condition. If condition_monitoring_query_language is present, it must be the only condition."
        },
        "creationRecord": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecord",
          "description": "A read-only record of the creation of the alerting policy. If provided in a call to create or update, this field will be ignored."
        },
        "displayName": {
          "type": "string",
          "description": "A short name or phrase used to identify the policy in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple policies in the same project. The name is limited to 512 Unicode characters.The convention for the display_name of a PrometheusQueryLanguageCondition is \"{rule group name}/{alert name}\", where the {rule group name} and {alert name} should be taken from the corresponding Prometheus configuration file. This convention is not enforced. In any case the display_name is not a unique key of the AlertPolicy."
        },
        "documentation": {
          "$ref": "#/types/google-native:monitoring%2Fv3:Documentation",
          "description": "Documentation that is included with notifications and incidents related to this policy. Best practice is for the documentation to include information to help responders understand, mitigate, escalate, and correct the underlying problems detected by the alerting policy. Notification channels that have limited capacity might not show this documentation."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not the policy is enabled. On write, the default interpretation if unset is that the policy is enabled. On read, clients should not make any assumption about the state if it has not been populated. The field should always be populated on List and Get operations, unless a field projection has been specified that strips it out."
        },
        "mutationRecord": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecord",
          "description": "A read-only record of the most recent change to the alerting policy. If provided in a call to create or update, this field will be ignored."
        },
        "name": {
          "type": "string",
          "description": "Required if the policy exists. The resource name for this policy. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] [ALERT_POLICY_ID] is assigned by Cloud Monitoring when the policy is created. When calling the alertPolicies.create method, do not include the name field in the alerting policy passed as part of the request."
        },
        "notificationChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifies the notification channels to which notifications should be sent when incidents are opened or closed or when new violations occur on an already opened incident. Each element of this array corresponds to the name field in each of the NotificationChannel objects that are returned from the ListNotificationChannels method. The format of the entries in this field is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] "
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "severity": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AlertPolicySeverity",
          "description": "Optional. The severity of an alert policy indicates how important alerts generated by that policy are. The severity level, if specified, will be displayed on the Incident detail page and in notifications."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key/value data to be used for organizing and identifying the AlertPolicy objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter.Note that Prometheus {alert name} is a valid Prometheus label names (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels), whereas Prometheus {rule group} is an unrestricted UTF-8 string. This means that they cannot be stored as-is in user labels, because they may contain characters that are not allowed in user-label values."
        },
        "validity": {
          "$ref": "#/types/google-native:monitoring%2Fv3:Status",
          "description": "Read-only description of how the alert policy is invalid. This field is only set when the alert policy is invalid. An invalid alert policy will not generate incidents."
        }
      }
    },
    "google-native:monitoring/v3:Group": {
      "description": "Creates a new group.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "A user-assigned name for this group, used only for display purposes."
        },
        "filter": {
          "type": "string",
          "description": "The filter used to determine which monitored resources belong to this group."
        },
        "isCluster": {
          "type": "boolean",
          "description": "If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters."
        },
        "name": {
          "type": "string",
          "description": "The name of this group. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique [GROUP_ID] that is generated automatically."
        },
        "parentName": {
          "type": "string",
          "description": "The name of the group's parent, if it has one. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] For groups with no parent, parent_name is the empty string, \"\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "filter",
        "isCluster",
        "name",
        "parentName",
        "project"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "A user-assigned name for this group, used only for display purposes."
        },
        "filter": {
          "type": "string",
          "description": "The filter used to determine which monitored resources belong to this group."
        },
        "isCluster": {
          "type": "boolean",
          "description": "If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters."
        },
        "parentName": {
          "type": "string",
          "description": "The name of the group's parent, if it has one. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] For groups with no parent, parent_name is the empty string, \"\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:monitoring/v3:MetricDescriptor": {
      "description": "Creates a new metric descriptor. The creation is executed asynchronously. User-created metric descriptors define custom metrics (https://cloud.google.com/monitoring/custom-metrics). The metric descriptor is updated if it already exists, except that metric labels are never removed.",
      "properties": {
        "description": {
          "type": "string",
          "description": "A detailed description of the metric, which can be used in documentation."
        },
        "displayName": {
          "type": "string",
          "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:LabelDescriptorResponse"
          },
          "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed."
        },
        "launchStage": {
          "type": "string",
          "description": "Optional. The launch stage of the metric definition."
        },
        "metadata": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricDescriptorMetadataResponse",
          "description": "Optional. Metadata which can be used to guide usage of the metric."
        },
        "metricKind": {
          "type": "string",
          "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported."
        },
        "monitoredResourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the metric descriptor."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name custom.googleapis.com or external.googleapis.com. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\" "
        },
        "unit": {
          "type": "string",
          "description": "The units in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the representation of the stored metric values.Different systems might scale the values to be more easily displayed (so a value of 0.02kBy might be displayed as 20By, and a value of 3523kBy might be displayed as 3.5MBy). However, if the unit is kBy, then the value of the metric is always in thousands of bytes, no matter how it might be displayed.If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an INT64 CUMULATIVE metric whose unit is s{CPU} (or equivalently 1s{CPU} or just s). If the job uses 12,005 CPU-seconds, then the value is written as 12005.Alternatively, if you want a custom metric to record data in a more granular way, you can create a DOUBLE CUMULATIVE metric whose unit is ks{CPU}, and then write the value 12.005 (which is 12005/1000), or use Kis{CPU} and write 11.723 (which is 12005/1024).The supported units are a subset of The Unified Code for Units of Measure (https://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT) bit bit By byte s second min minute h hour d day 1 dimensionlessPrefixes (PREFIX) k kilo (10^3) M mega (10^6) G giga (10^9) T tera (10^12) P peta (10^15) E exa (10^18) Z zetta (10^21) Y yotta (10^24) m milli (10^-3) u micro (10^-6) n nano (10^-9) p pico (10^-12) f femto (10^-15) a atto (10^-18) z zepto (10^-21) y yocto (10^-24) Ki kibi (2^10) Mi mebi (2^20) Gi gibi (2^30) Ti tebi (2^40) Pi pebi (2^50)GrammarThe grammar also includes these connectors: / division or ratio (as an infix operator). For examples, kBy/{email} or MiBy/10ms (although you should almost never have /s in a metric unit; rates should always be computed at query time from the underlying cumulative or delta value). . multiplication or composition (as an infix operator). For examples, GBy.d or k{watt}.h.The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: Annotation is just a comment if it follows a UNIT. If the annotation is used alone, then the unit is equivalent to 1. For examples, {request}/s == 1/s, By{transmitted}/s == By/s. NAME is a sequence of non-blank printable ASCII characters not containing { or }. 1 represents a unitary dimensionless unit (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in 1/s. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as 1/d or {new-users}/d (and a metric value 5 would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as 1000/d or k1/d or k{page_views}/d (and a metric value of 5.3 would mean \"5300 page views per day\"). % represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value 3 means \"3 percent\"). 10^2.% indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value 0.03 means \"3 percent\")."
        },
        "valueType": {
          "type": "string",
          "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported."
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "labels",
        "launchStage",
        "metadata",
        "metricKind",
        "monitoredResourceTypes",
        "name",
        "project",
        "type",
        "unit",
        "valueType"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A detailed description of the metric, which can be used in documentation."
        },
        "displayName": {
          "type": "string",
          "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota."
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:LabelDescriptor"
          },
          "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed."
        },
        "launchStage": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricDescriptorLaunchStage",
          "description": "Optional. The launch stage of the metric definition."
        },
        "metadata": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricDescriptorMetadata",
          "description": "Optional. Metadata which can be used to guide usage of the metric."
        },
        "metricKind": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricDescriptorMetricKind",
          "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported."
        },
        "monitoredResourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the metric descriptor."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name custom.googleapis.com or external.googleapis.com. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\" "
        },
        "unit": {
          "type": "string",
          "description": "The units in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the representation of the stored metric values.Different systems might scale the values to be more easily displayed (so a value of 0.02kBy might be displayed as 20By, and a value of 3523kBy might be displayed as 3.5MBy). However, if the unit is kBy, then the value of the metric is always in thousands of bytes, no matter how it might be displayed.If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an INT64 CUMULATIVE metric whose unit is s{CPU} (or equivalently 1s{CPU} or just s). If the job uses 12,005 CPU-seconds, then the value is written as 12005.Alternatively, if you want a custom metric to record data in a more granular way, you can create a DOUBLE CUMULATIVE metric whose unit is ks{CPU}, and then write the value 12.005 (which is 12005/1000), or use Kis{CPU} and write 11.723 (which is 12005/1024).The supported units are a subset of The Unified Code for Units of Measure (https://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT) bit bit By byte s second min minute h hour d day 1 dimensionlessPrefixes (PREFIX) k kilo (10^3) M mega (10^6) G giga (10^9) T tera (10^12) P peta (10^15) E exa (10^18) Z zetta (10^21) Y yotta (10^24) m milli (10^-3) u micro (10^-6) n nano (10^-9) p pico (10^-12) f femto (10^-15) a atto (10^-18) z zepto (10^-21) y yocto (10^-24) Ki kibi (2^10) Mi mebi (2^20) Gi gibi (2^30) Ti tebi (2^40) Pi pebi (2^50)GrammarThe grammar also includes these connectors: / division or ratio (as an infix operator). For examples, kBy/{email} or MiBy/10ms (although you should almost never have /s in a metric unit; rates should always be computed at query time from the underlying cumulative or delta value). . multiplication or composition (as an infix operator). For examples, GBy.d or k{watt}.h.The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: Annotation is just a comment if it follows a UNIT. If the annotation is used alone, then the unit is equivalent to 1. For examples, {request}/s == 1/s, By{transmitted}/s == By/s. NAME is a sequence of non-blank printable ASCII characters not containing { or }. 1 represents a unitary dimensionless unit (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in 1/s. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as 1/d or {new-users}/d (and a metric value 5 would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as 1000/d or k1/d or k{page_views}/d (and a metric value of 5.3 would mean \"5300 page views per day\"). % represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value 3 means \"3 percent\"). 10^2.% indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value 0.03 means \"3 percent\")."
        },
        "valueType": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MetricDescriptorValueType",
          "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported."
        }
      }
    },
    "google-native:monitoring/v3:NotificationChannel": {
      "description": "Creates a new notification channel, representing a single notification endpoint such as an email address, SMS number, or PagerDuty service.Design your application to single-thread API calls that modify the state of notification channels in a single project. This includes calls to CreateNotificationChannel, DeleteNotificationChannel and UpdateNotificationChannel.",
      "properties": {
        "creationRecord": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecordResponse",
          "description": "Record of the creation of this channel."
        },
        "description": {
          "type": "string",
          "description": "An optional human-readable description of this notification channel. This description may provide additional details, beyond the display name, for the channel. This may not exceed 1024 Unicode characters."
        },
        "displayName": {
          "type": "string",
          "description": "An optional human-readable name for this notification channel. It is recommended that you specify a non-empty and unique name in order to make it easier to identify the channels in your project, though this is not enforced. The display name is limited to 512 Unicode characters."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether notifications are forwarded to the described channel. This makes it possible to disable delivery of notifications to a particular channel without removing the channel from all alerting policies that reference the channel. This is a more convenient approach when the change is temporary and you want to receive notifications from the same set of alerting policies on the channel at some point in the future."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configuration fields that define the channel and its behavior. The permissible and required labels are specified in the NotificationChannelDescriptor.labels of the NotificationChannelDescriptor corresponding to the type field."
        },
        "mutationRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecordResponse"
          },
          "description": "Records of the modification of this channel."
        },
        "name": {
          "type": "string",
          "description": "The full REST resource name for this channel. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] The [CHANNEL_ID] is automatically assigned by the server on creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The type of the notification channel. This field matches the value of the NotificationChannelDescriptor.type field."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key/value data that does not need to conform to the corresponding NotificationChannelDescriptor's schema, unlike the labels field. This field is intended to be used for organizing and identifying the NotificationChannel objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter."
        },
        "verificationStatus": {
          "type": "string",
          "description": "Indicates whether this channel has been verified or not. On a ListNotificationChannels or GetNotificationChannel operation, this field is expected to be populated.If the value is UNVERIFIED, then it indicates that the channel is non-functioning (it both requires verification and lacks verification); otherwise, it is assumed that the channel works.If the channel is neither VERIFIED nor UNVERIFIED, it implies that the channel is of a type that does not require verification or that this specific channel has been exempted from verification because it was created prior to verification being required for channels of this type.This field cannot be modified using a standard UpdateNotificationChannel operation. To change the value of this field, you must call VerifyNotificationChannel."
        }
      },
      "type": "object",
      "required": [
        "creationRecord",
        "description",
        "displayName",
        "enabled",
        "labels",
        "mutationRecords",
        "name",
        "project",
        "type",
        "userLabels",
        "verificationStatus"
      ],
      "inputProperties": {
        "creationRecord": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecord",
          "description": "Record of the creation of this channel."
        },
        "description": {
          "type": "string",
          "description": "An optional human-readable description of this notification channel. This description may provide additional details, beyond the display name, for the channel. This may not exceed 1024 Unicode characters."
        },
        "displayName": {
          "type": "string",
          "description": "An optional human-readable name for this notification channel. It is recommended that you specify a non-empty and unique name in order to make it easier to identify the channels in your project, though this is not enforced. The display name is limited to 512 Unicode characters."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether notifications are forwarded to the described channel. This makes it possible to disable delivery of notifications to a particular channel without removing the channel from all alerting policies that reference the channel. This is a more convenient approach when the change is temporary and you want to receive notifications from the same set of alerting policies on the channel at some point in the future."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Configuration fields that define the channel and its behavior. The permissible and required labels are specified in the NotificationChannelDescriptor.labels of the NotificationChannelDescriptor corresponding to the type field."
        },
        "mutationRecords": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecord"
          },
          "description": "Records of the modification of this channel."
        },
        "name": {
          "type": "string",
          "description": "The full REST resource name for this channel. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] The [CHANNEL_ID] is automatically assigned by the server on creation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The type of the notification channel. This field matches the value of the NotificationChannelDescriptor.type field."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key/value data that does not need to conform to the corresponding NotificationChannelDescriptor's schema, unlike the labels field. This field is intended to be used for organizing and identifying the NotificationChannel objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter."
        },
        "verificationStatus": {
          "$ref": "#/types/google-native:monitoring%2Fv3:NotificationChannelVerificationStatus",
          "description": "Indicates whether this channel has been verified or not. On a ListNotificationChannels or GetNotificationChannel operation, this field is expected to be populated.If the value is UNVERIFIED, then it indicates that the channel is non-functioning (it both requires verification and lacks verification); otherwise, it is assumed that the channel works.If the channel is neither VERIFIED nor UNVERIFIED, it implies that the channel is of a type that does not require verification or that this specific channel has been exempted from verification because it was created prior to verification being required for channels of this type.This field cannot be modified using a standard UpdateNotificationChannel operation. To change the value of this field, you must call VerifyNotificationChannel."
        }
      }
    },
    "google-native:monitoring/v3:Service": {
      "description": "Create a Service.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "appEngine": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AppEngineResponse",
          "description": "Type used for App Engine services."
        },
        "basicService": {
          "$ref": "#/types/google-native:monitoring%2Fv3:BasicServiceResponse",
          "description": "Message that contains the service type and service labels of this service if it is a basic service. Documentation and examples here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli)."
        },
        "cloudEndpoints": {
          "$ref": "#/types/google-native:monitoring%2Fv3:CloudEndpointsResponse",
          "description": "Type used for Cloud Endpoints services."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:monitoring%2Fv3:CloudRunResponse",
          "description": "Type used for Cloud Run services."
        },
        "clusterIstio": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ClusterIstioResponse",
          "description": "Type used for Istio services that live in a Kubernetes cluster."
        },
        "custom": {
          "$ref": "#/types/google-native:monitoring%2Fv3:CustomResponse",
          "description": "Custom service type."
        },
        "displayName": {
          "type": "string",
          "description": "Name used for UI elements listing this Service."
        },
        "gkeNamespace": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GkeNamespaceResponse",
          "description": "Type used for GKE Namespaces."
        },
        "gkeService": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GkeServiceResponse",
          "description": "Type used for GKE Services (the Kubernetes concept of a service)."
        },
        "gkeWorkload": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GkeWorkloadResponse",
          "description": "Type used for GKE Workloads."
        },
        "istioCanonicalService": {
          "$ref": "#/types/google-native:monitoring%2Fv3:IstioCanonicalServiceResponse",
          "description": "Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)"
        },
        "meshIstio": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MeshIstioResponse",
          "description": "Type used for Istio services scoped to an Istio mesh."
        },
        "name": {
          "type": "string",
          "description": "Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] "
        },
        "serviceId": {
          "type": "string",
          "description": "Optional. The Service id to use for this Service. If omitted, an id will be generated instead. Must match the pattern [a-z0-9\\-]+"
        },
        "telemetry": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TelemetryResponse",
          "description": "Configuration for how to query telemetry on a Service."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels which have been used to annotate the service. Label keys must start with a letter. Label keys and values may contain lowercase letters, numbers, underscores, and dashes. Label keys and values have a maximum length of 63 characters, and must be less than 128 bytes in size. Up to 64 label entries may be stored. For labels which do not have a semantic value, the empty string may be supplied for the label value."
        },
        "v3Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v3Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "appEngine",
        "basicService",
        "cloudEndpoints",
        "cloudRun",
        "clusterIstio",
        "custom",
        "displayName",
        "gkeNamespace",
        "gkeService",
        "gkeWorkload",
        "istioCanonicalService",
        "meshIstio",
        "name",
        "telemetry",
        "userLabels",
        "v3Id",
        "v3Id1"
      ],
      "inputProperties": {
        "appEngine": {
          "$ref": "#/types/google-native:monitoring%2Fv3:AppEngine",
          "description": "Type used for App Engine services."
        },
        "basicService": {
          "$ref": "#/types/google-native:monitoring%2Fv3:BasicService",
          "description": "Message that contains the service type and service labels of this service if it is a basic service. Documentation and examples here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli)."
        },
        "cloudEndpoints": {
          "$ref": "#/types/google-native:monitoring%2Fv3:CloudEndpoints",
          "description": "Type used for Cloud Endpoints services."
        },
        "cloudRun": {
          "$ref": "#/types/google-native:monitoring%2Fv3:CloudRun",
          "description": "Type used for Cloud Run services."
        },
        "clusterIstio": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ClusterIstio",
          "description": "Type used for Istio services that live in a Kubernetes cluster."
        },
        "custom": {
          "$ref": "#/types/google-native:monitoring%2Fv3:Custom",
          "description": "Custom service type."
        },
        "displayName": {
          "type": "string",
          "description": "Name used for UI elements listing this Service."
        },
        "gkeNamespace": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GkeNamespace",
          "description": "Type used for GKE Namespaces."
        },
        "gkeService": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GkeService",
          "description": "Type used for GKE Services (the Kubernetes concept of a service)."
        },
        "gkeWorkload": {
          "$ref": "#/types/google-native:monitoring%2Fv3:GkeWorkload",
          "description": "Type used for GKE Workloads."
        },
        "istioCanonicalService": {
          "$ref": "#/types/google-native:monitoring%2Fv3:IstioCanonicalService",
          "description": "Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)"
        },
        "meshIstio": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MeshIstio",
          "description": "Type used for Istio services scoped to an Istio mesh."
        },
        "name": {
          "type": "string",
          "description": "Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] "
        },
        "serviceId": {
          "type": "string",
          "description": "Optional. The Service id to use for this Service. If omitted, an id will be generated instead. Must match the pattern [a-z0-9\\-]+"
        },
        "telemetry": {
          "$ref": "#/types/google-native:monitoring%2Fv3:Telemetry",
          "description": "Configuration for how to query telemetry on a Service."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels which have been used to annotate the service. Label keys must start with a letter. Label keys and values may contain lowercase letters, numbers, underscores, and dashes. Label keys and values have a maximum length of 63 characters, and must be less than 128 bytes in size. Up to 64 label entries may be stored. For labels which do not have a semantic value, the empty string may be supplied for the label value."
        },
        "v3Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v3Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "v3Id",
        "v3Id1"
      ]
    },
    "google-native:monitoring/v3:ServiceLevelObjective": {
      "description": "Create a ServiceLevelObjective for the given Service.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "calendarPeriod": {
          "type": "string",
          "description": "A calendar period, semantically \"since the start of the current \". At this time, only DAY, WEEK, FORTNIGHT, and MONTH are supported."
        },
        "displayName": {
          "type": "string",
          "description": "Name used for UI elements listing this SLO."
        },
        "goal": {
          "type": "number",
          "description": "The fraction of service that must be good in order for this objective to be met. 0 < goal <= 0.999."
        },
        "name": {
          "type": "string",
          "description": "Resource name for this ServiceLevelObjective. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME] "
        },
        "rollingPeriod": {
          "type": "string",
          "description": "A rolling time period, semantically \"in the past \". Must be an integer multiple of 1 day no larger than 30 days."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceLevelIndicator": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ServiceLevelIndicatorResponse",
          "description": "The definition of good service, used to measure and calculate the quality of the Service's performance with respect to a single aspect of service quality."
        },
        "serviceLevelObjectiveId": {
          "type": "string",
          "description": "Optional. The ServiceLevelObjective id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. Must match the pattern ^[a-zA-Z0-9-_:.]+$"
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels which have been used to annotate the service-level objective. Label keys must start with a letter. Label keys and values may contain lowercase letters, numbers, underscores, and dashes. Label keys and values have a maximum length of 63 characters, and must be less than 128 bytes in size. Up to 64 label entries may be stored. For labels which do not have a semantic value, the empty string may be supplied for the label value."
        },
        "v3Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v3Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "calendarPeriod",
        "displayName",
        "goal",
        "name",
        "rollingPeriod",
        "serviceId",
        "serviceLevelIndicator",
        "userLabels",
        "v3Id",
        "v3Id1"
      ],
      "inputProperties": {
        "calendarPeriod": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ServiceLevelObjectiveCalendarPeriod",
          "description": "A calendar period, semantically \"since the start of the current \". At this time, only DAY, WEEK, FORTNIGHT, and MONTH are supported."
        },
        "displayName": {
          "type": "string",
          "description": "Name used for UI elements listing this SLO."
        },
        "goal": {
          "type": "number",
          "description": "The fraction of service that must be good in order for this objective to be met. 0 < goal <= 0.999."
        },
        "name": {
          "type": "string",
          "description": "Resource name for this ServiceLevelObjective. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME] "
        },
        "rollingPeriod": {
          "type": "string",
          "description": "A rolling time period, semantically \"in the past \". Must be an integer multiple of 1 day no larger than 30 days."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceLevelIndicator": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ServiceLevelIndicator",
          "description": "The definition of good service, used to measure and calculate the quality of the Service's performance with respect to a single aspect of service quality."
        },
        "serviceLevelObjectiveId": {
          "type": "string",
          "description": "Optional. The ServiceLevelObjective id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. Must match the pattern ^[a-zA-Z0-9-_:.]+$"
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels which have been used to annotate the service-level objective. Label keys must start with a letter. Label keys and values may contain lowercase letters, numbers, underscores, and dashes. Label keys and values have a maximum length of 63 characters, and must be less than 128 bytes in size. Up to 64 label entries may be stored. For labels which do not have a semantic value, the empty string may be supplied for the label value."
        },
        "v3Id": {
          "type": "string",
          "replaceOnChanges": true
        },
        "v3Id1": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "serviceId",
        "v3Id",
        "v3Id1"
      ]
    },
    "google-native:monitoring/v3:Snooze": {
      "description": "Creates a Snooze that will prevent alerts, which match the provided criteria, from being opened. The Snooze applies for a specific time interval.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "criteria": {
          "$ref": "#/types/google-native:monitoring%2Fv3:CriteriaResponse",
          "description": "This defines the criteria for applying the Snooze. See Criteria for more information."
        },
        "displayName": {
          "type": "string",
          "description": "A display name for the Snooze. This can be, at most, 512 unicode characters."
        },
        "interval": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TimeIntervalResponse",
          "description": "The Snooze will be active from interval.start_time through interval.end_time. interval.start_time cannot be in the past. There is a 15 second clock skew to account for the time it takes for a request to reach the API from the UI."
        },
        "name": {
          "type": "string",
          "description": "The name of the Snooze. The format is: projects/[PROJECT_ID_OR_NUMBER]/snoozes/[SNOOZE_ID] The ID of the Snooze will be generated by the system."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "criteria",
        "displayName",
        "interval",
        "name",
        "project"
      ],
      "inputProperties": {
        "criteria": {
          "$ref": "#/types/google-native:monitoring%2Fv3:Criteria",
          "description": "This defines the criteria for applying the Snooze. See Criteria for more information."
        },
        "displayName": {
          "type": "string",
          "description": "A display name for the Snooze. This can be, at most, 512 unicode characters."
        },
        "interval": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TimeInterval",
          "description": "The Snooze will be active from interval.start_time through interval.end_time. interval.start_time cannot be in the past. There is a 15 second clock skew to account for the time it takes for a request to reach the API from the UI."
        },
        "name": {
          "type": "string",
          "description": "The name of the Snooze. The format is: projects/[PROJECT_ID_OR_NUMBER]/snoozes/[SNOOZE_ID] The ID of the Snooze will be generated by the system."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "criteria",
        "displayName",
        "interval"
      ]
    },
    "google-native:monitoring/v3:UptimeCheckConfig": {
      "description": "Creates a new Uptime check configuration.",
      "properties": {
        "checkerType": {
          "type": "string",
          "description": "The type of checkers to use to execute the Uptime check."
        },
        "contentMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:ContentMatcherResponse"
          },
          "description": "The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check."
        },
        "displayName": {
          "type": "string",
          "description": "A human-friendly name for the Uptime check configuration. The display name should be unique within a Cloud Monitoring Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required."
        },
        "httpCheck": {
          "$ref": "#/types/google-native:monitoring%2Fv3:HttpCheckResponse",
          "description": "Contains information needed to make an HTTP or HTTPS check."
        },
        "internalCheckers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:InternalCheckerResponse"
          },
          "description": "The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig."
        },
        "isInternal": {
          "type": "boolean",
          "description": "If this is true, then checks are made only from the 'internal_checkers'. If it is false, then checks are made only from the 'selected_regions'. It is an error to provide 'selected_regions' when is_internal is true, or to provide 'internal_checkers' when is_internal is false."
        },
        "monitoredResource": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MonitoredResourceResponse",
          "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are valid for this field: uptime_url, gce_instance, gae_app, aws_ec2_instance, aws_elb_load_balancer k8s_service servicedirectory_service cloud_run_revision"
        },
        "name": {
          "type": "string",
          "description": "Identifier. A unique resource name for this Uptime check configuration. The format is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] [PROJECT_ID_OR_NUMBER] is the Workspace host project associated with the Uptime check.This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response."
        },
        "period": {
          "type": "string",
          "description": "How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceGroup": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ResourceGroupResponse",
          "description": "The group resource associated with the configuration."
        },
        "selectedRegions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions."
        },
        "syntheticMonitor": {
          "$ref": "#/types/google-native:monitoring%2Fv3:SyntheticMonitorTargetResponse",
          "description": "Specifies a Synthetic Monitor to invoke."
        },
        "tcpCheck": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TcpCheckResponse",
          "description": "Contains information needed to make a TCP check."
        },
        "timeout": {
          "type": "string",
          "description": "The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key/value data to be used for organizing and identifying the UptimeCheckConfig objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter."
        }
      },
      "type": "object",
      "required": [
        "checkerType",
        "contentMatchers",
        "displayName",
        "httpCheck",
        "internalCheckers",
        "isInternal",
        "monitoredResource",
        "name",
        "period",
        "project",
        "resourceGroup",
        "selectedRegions",
        "syntheticMonitor",
        "tcpCheck",
        "timeout",
        "userLabels"
      ],
      "inputProperties": {
        "checkerType": {
          "$ref": "#/types/google-native:monitoring%2Fv3:UptimeCheckConfigCheckerType",
          "description": "The type of checkers to use to execute the Uptime check."
        },
        "contentMatchers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:ContentMatcher"
          },
          "description": "The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check."
        },
        "displayName": {
          "type": "string",
          "description": "A human-friendly name for the Uptime check configuration. The display name should be unique within a Cloud Monitoring Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required."
        },
        "httpCheck": {
          "$ref": "#/types/google-native:monitoring%2Fv3:HttpCheck",
          "description": "Contains information needed to make an HTTP or HTTPS check."
        },
        "internalCheckers": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:InternalChecker"
          },
          "description": "The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig."
        },
        "isInternal": {
          "type": "boolean",
          "description": "If this is true, then checks are made only from the 'internal_checkers'. If it is false, then checks are made only from the 'selected_regions'. It is an error to provide 'selected_regions' when is_internal is true, or to provide 'internal_checkers' when is_internal is false."
        },
        "monitoredResource": {
          "$ref": "#/types/google-native:monitoring%2Fv3:MonitoredResource",
          "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are valid for this field: uptime_url, gce_instance, gae_app, aws_ec2_instance, aws_elb_load_balancer k8s_service servicedirectory_service cloud_run_revision"
        },
        "name": {
          "type": "string",
          "description": "Identifier. A unique resource name for this Uptime check configuration. The format is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] [PROJECT_ID_OR_NUMBER] is the Workspace host project associated with the Uptime check.This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response."
        },
        "period": {
          "type": "string",
          "description": "How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceGroup": {
          "$ref": "#/types/google-native:monitoring%2Fv3:ResourceGroup",
          "description": "The group resource associated with the configuration."
        },
        "selectedRegions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:monitoring%2Fv3:UptimeCheckConfigSelectedRegionsItem"
          },
          "description": "The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions."
        },
        "syntheticMonitor": {
          "$ref": "#/types/google-native:monitoring%2Fv3:SyntheticMonitorTarget",
          "description": "Specifies a Synthetic Monitor to invoke."
        },
        "tcpCheck": {
          "$ref": "#/types/google-native:monitoring%2Fv3:TcpCheck",
          "description": "Contains information needed to make a TCP check."
        },
        "timeout": {
          "type": "string",
          "description": "The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required."
        },
        "userLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-supplied key/value data to be used for organizing and identifying the UptimeCheckConfig objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter."
        }
      }
    },
    "google-native:networkconnectivity/v1:Hub": {
      "description": "Creates a new Network Connectivity Center hub in the specified project.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the hub was created."
        },
        "description": {
          "type": "string",
          "description": "An optional description of the hub."
        },
        "hubId": {
          "type": "string",
          "description": "Required. A unique identifier for the hub.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional labels in key-value pair format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the hub. Hub names must be unique. They use the following form: `projects/{project_number}/locations/global/hubs/{hub_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server knows to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check to see whether the original operation was received. If it was, the server ignores the second request. This behavior prevents clients from mistakenly creating duplicate commitments. The request ID must be a valid UUID, with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routeTables": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The route tables that belong to this hub. They use the following form: `projects/{project_number}/locations/global/hubs/{hub_id}/routeTables/{route_table_id}` This field is read-only. Network Connectivity Center automatically populates it based on the route tables nested under the hub."
        },
        "routingVpcs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:RoutingVPCResponse"
          },
          "description": "The VPC networks associated with this hub's spokes. This field is read-only. Network Connectivity Center automatically populates it based on the set of spokes attached to the hub."
        },
        "spokeSummary": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:SpokeSummaryResponse",
          "description": "A summary of the spokes associated with a hub. The summary includes a count of spokes according to type and according to state. If any spokes are inactive, the summary also lists the reasons they are inactive, including a count for each reason."
        },
        "state": {
          "type": "string",
          "description": "The current lifecycle state of this hub."
        },
        "uniqueId": {
          "type": "string",
          "description": "The Google-generated UUID for the hub. This value is unique across all hub resources. If a hub is deleted and another with the same name is created, the new hub is assigned a different unique_id."
        },
        "updateTime": {
          "type": "string",
          "description": "The time the hub was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "hubId",
        "labels",
        "name",
        "project",
        "routeTables",
        "routingVpcs",
        "spokeSummary",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of the hub."
        },
        "hubId": {
          "type": "string",
          "description": "Required. A unique identifier for the hub.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional labels in key-value pair format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the hub. Hub names must be unique. They use the following form: `projects/{project_number}/locations/global/hubs/{hub_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server knows to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check to see whether the original operation was received. If it was, the server ignores the second request. This behavior prevents clients from mistakenly creating duplicate commitments. The request ID must be a valid UUID, with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routingVpcs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:RoutingVPC"
          },
          "description": "The VPC networks associated with this hub's spokes. This field is read-only. Network Connectivity Center automatically populates it based on the set of spokes attached to the hub."
        }
      },
      "requiredInputs": [
        "hubId"
      ]
    },
    "google-native:networkconnectivity/v1:HubGroupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:HubGroupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:HubGroupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "groupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hubId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "groupId",
        "hubId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "groupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hubId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "groupId",
        "hubId"
      ]
    },
    "google-native:networkconnectivity/v1:HubIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:HubIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:HubIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hubId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "hubId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hubId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "hubId"
      ]
    },
    "google-native:networkconnectivity/v1:InternalRange": {
      "description": "Creates a new internal range in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the internal range was created."
        },
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "internalRangeId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/internalRanges/foo') See https://google.aip.dev/122#resource-id-segments Unique per location."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP range that this internal range defines."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of an internal range. Format: projects/{project}/locations/{location}/internalRanges/{internal_range} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "network": {
          "type": "string",
          "description": "The URL or resource ID of the network in which to reserve the internal range. The network cannot be deleted if there are any reserved internal ranges referring to it. Legacy networks are not supported. This can only be specified for a global internal address. Example: - URL: /compute/v1/projects/{project}/global/networks/{resourceId} - ID: network123"
        },
        "overlaps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Types of resources that are allowed to overlap with the current internal range."
        },
        "peering": {
          "type": "string",
          "description": "The type of peering set for this internal range."
        },
        "prefixLength": {
          "type": "integer",
          "description": "An alternate to ip_cidr_range. Can be set when trying to create a reservation that automatically finds a free range of the given size. If both ip_cidr_range and prefix_length are set, there is an error if the range sizes do not match. Can also be used during updates to change the range size."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "targetCidrRange": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Can be set to narrow down or pick a different address space while searching for a free range. If not set, defaults to the \"10.0.0.0/8\" address space. This can be used to search in other rfc-1918 address spaces like \"172.16.0.0/12\" and \"192.168.0.0/16\" or non-rfc-1918 address spaces used in the VPC."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the internal range was updated."
        },
        "usage": {
          "type": "string",
          "description": "The type of usage set for this InternalRange."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of resources that refer to this internal range. Resources that use the internal range for their range allocation are referred to as users of the range. Other resources mark themselves as users while doing so by creating a reference to this internal range. Having a user, based on this reference, prevents deletion of the internal range referred to. Can be empty."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "ipCidrRange",
        "labels",
        "location",
        "name",
        "network",
        "overlaps",
        "peering",
        "prefixLength",
        "project",
        "targetCidrRange",
        "updateTime",
        "usage",
        "users"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "Time when the internal range was created."
        },
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "internalRangeId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/internalRanges/foo') See https://google.aip.dev/122#resource-id-segments Unique per location."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The IP range that this internal range defines."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of an internal range. Format: projects/{project}/locations/{location}/internalRanges/{internal_range} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "network": {
          "type": "string",
          "description": "The URL or resource ID of the network in which to reserve the internal range. The network cannot be deleted if there are any reserved internal ranges referring to it. Legacy networks are not supported. This can only be specified for a global internal address. Example: - URL: /compute/v1/projects/{project}/global/networks/{resourceId} - ID: network123"
        },
        "overlaps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:InternalRangeOverlapsItem"
          },
          "description": "Optional. Types of resources that are allowed to overlap with the current internal range."
        },
        "peering": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:InternalRangePeering",
          "description": "The type of peering set for this internal range."
        },
        "prefixLength": {
          "type": "integer",
          "description": "An alternate to ip_cidr_range. Can be set when trying to create a reservation that automatically finds a free range of the given size. If both ip_cidr_range and prefix_length are set, there is an error if the range sizes do not match. Can also be used during updates to change the range size."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "targetCidrRange": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Can be set to narrow down or pick a different address space while searching for a free range. If not set, defaults to the \"10.0.0.0/8\" address space. This can be used to search in other rfc-1918 address spaces like \"172.16.0.0/12\" and \"192.168.0.0/16\" or non-rfc-1918 address spaces used in the VPC."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the internal range was updated."
        },
        "usage": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:InternalRangeUsage",
          "description": "The type of usage set for this InternalRange."
        }
      }
    },
    "google-native:networkconnectivity/v1:PolicyBasedRoute": {
      "description": "Creates a new policy-based route in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the policy-based route was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. An optional description of this resource. Provide this field when you create the resource."
        },
        "filter": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:FilterResponse",
          "description": "The filter to match L4 traffic."
        },
        "interconnectAttachment": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:InterconnectAttachmentResponse",
          "description": "Optional. The interconnect attachments that this policy-based route applies to."
        },
        "kind": {
          "type": "string",
          "description": "Type of this resource. Always networkconnectivity#policyBasedRoute for policy-based Route resources."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "name": {
          "type": "string",
          "description": "Immutable. A unique name of the resource in the form of `projects/{project_number}/locations/global/PolicyBasedRoutes/{policy_based_route_id}`"
        },
        "network": {
          "type": "string",
          "description": "Fully-qualified URL of the network that this route applies to, for example: projects/my-project/global/networks/my-network."
        },
        "nextHopIlbIp": {
          "type": "string",
          "description": "Optional. The IP address of a global-access-enabled L4 ILB that is the next hop for matching packets. For this version, only nextHopIlbIp is supported."
        },
        "nextHopOtherRoutes": {
          "type": "string",
          "description": "Optional. Other routes that will be referenced to determine the next hop of the packet."
        },
        "policyBasedRouteId": {
          "type": "string",
          "description": "Required. Unique id for the policy-based route to create.",
          "replaceOnChanges": true
        },
        "priority": {
          "type": "integer",
          "description": "Optional. The priority of this policy-based route. Priority is used to break ties in cases where there are more than one matching policy-based routes found. In cases where multiple policy-based routes are matched, the one with the lowest-numbered priority value wins. The default value is 1000. The priority value must be from 1 to 65535, inclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the policy-based route was updated."
        },
        "virtualMachine": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:VirtualMachineResponse",
          "description": "Optional. VM instances to which this policy-based route applies to."
        },
        "warnings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:WarningsResponse"
          },
          "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "filter",
        "interconnectAttachment",
        "kind",
        "labels",
        "name",
        "network",
        "nextHopIlbIp",
        "nextHopOtherRoutes",
        "policyBasedRouteId",
        "priority",
        "project",
        "selfLink",
        "updateTime",
        "virtualMachine",
        "warnings"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. An optional description of this resource. Provide this field when you create the resource."
        },
        "filter": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:Filter",
          "description": "The filter to match L4 traffic."
        },
        "interconnectAttachment": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:InterconnectAttachment",
          "description": "Optional. The interconnect attachments that this policy-based route applies to."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "name": {
          "type": "string",
          "description": "Immutable. A unique name of the resource in the form of `projects/{project_number}/locations/global/PolicyBasedRoutes/{policy_based_route_id}`"
        },
        "network": {
          "type": "string",
          "description": "Fully-qualified URL of the network that this route applies to, for example: projects/my-project/global/networks/my-network."
        },
        "nextHopIlbIp": {
          "type": "string",
          "description": "Optional. The IP address of a global-access-enabled L4 ILB that is the next hop for matching packets. For this version, only nextHopIlbIp is supported."
        },
        "nextHopOtherRoutes": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:PolicyBasedRouteNextHopOtherRoutes",
          "description": "Optional. Other routes that will be referenced to determine the next hop of the packet."
        },
        "policyBasedRouteId": {
          "type": "string",
          "description": "Required. Unique id for the policy-based route to create.",
          "replaceOnChanges": true
        },
        "priority": {
          "type": "integer",
          "description": "Optional. The priority of this policy-based route. Priority is used to break ties in cases where there are more than one matching policy-based routes found. In cases where multiple policy-based routes are matched, the one with the lowest-numbered priority value wins. The default value is 1000. The priority value must be from 1 to 65535, inclusive."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "virtualMachine": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:VirtualMachine",
          "description": "Optional. VM instances to which this policy-based route applies to."
        }
      },
      "requiredInputs": [
        "filter",
        "network",
        "policyBasedRouteId"
      ]
    },
    "google-native:networkconnectivity/v1:PolicyBasedRouteIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:PolicyBasedRouteIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:PolicyBasedRouteIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "policyBasedRouteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "policyBasedRouteId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "policyBasedRouteId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "policyBasedRouteId"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceClassIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceClassIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceClassIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceClassId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceClassId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceClassId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceClassId"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceConnectionMap": {
      "description": "Creates a new ServiceConnectionMap in a given project and location.",
      "properties": {
        "consumerPscConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:ConsumerPscConfigResponse"
          },
          "description": "The PSC configurations on consumer side."
        },
        "consumerPscConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:ConsumerPscConnectionResponse"
          },
          "description": "PSC connection details on consumer side."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the ServiceConnectionMap was created."
        },
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "infrastructure": {
          "type": "string",
          "description": "The infrastructure used for connections between consumers/producers."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a ServiceConnectionMap. Format: projects/{project}/locations/{location}/serviceConnectionMaps/{service_connection_map} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "producerPscConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:ProducerPscConfigResponse"
          },
          "description": "The PSC configurations on producer side."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceClass": {
          "type": "string",
          "description": "The service class identifier this ServiceConnectionMap is for. The user of ServiceConnectionMap create API needs to have networkconnecitivty.serviceclasses.use iam permission for the service class."
        },
        "serviceClassUri": {
          "type": "string",
          "description": "The service class uri this ServiceConnectionMap is for."
        },
        "serviceConnectionMapId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/serviceConnectionMaps/foo') See https://google.aip.dev/122#resource-id-segments Unique per location. If one is not provided, one will be generated."
        },
        "token": {
          "type": "string",
          "description": "The token provided by the consumer. This token authenticates that the consumer can create a connecton within the specified project and network."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the ServiceConnectionMap was updated."
        }
      },
      "type": "object",
      "required": [
        "consumerPscConfigs",
        "consumerPscConnections",
        "createTime",
        "description",
        "etag",
        "infrastructure",
        "labels",
        "location",
        "name",
        "producerPscConfigs",
        "project",
        "serviceClass",
        "serviceClassUri",
        "token",
        "updateTime"
      ],
      "inputProperties": {
        "consumerPscConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:ConsumerPscConfig"
          },
          "description": "The PSC configurations on consumer side."
        },
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a ServiceConnectionMap. Format: projects/{project}/locations/{location}/serviceConnectionMaps/{service_connection_map} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "producerPscConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:ProducerPscConfig"
          },
          "description": "The PSC configurations on producer side."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceClass": {
          "type": "string",
          "description": "The service class identifier this ServiceConnectionMap is for. The user of ServiceConnectionMap create API needs to have networkconnecitivty.serviceclasses.use iam permission for the service class."
        },
        "serviceConnectionMapId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/serviceConnectionMaps/foo') See https://google.aip.dev/122#resource-id-segments Unique per location. If one is not provided, one will be generated."
        },
        "token": {
          "type": "string",
          "description": "The token provided by the consumer. This token authenticates that the consumer can create a connecton within the specified project and network."
        }
      }
    },
    "google-native:networkconnectivity/v1:ServiceConnectionMapIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceConnectionMapIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceConnectionMapIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConnectionMapId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceConnectionMapId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConnectionMapId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceConnectionMapId"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceConnectionPolicy": {
      "description": "Creates a new ServiceConnectionPolicy in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the ServiceConnectionMap was created."
        },
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "infrastructure": {
          "type": "string",
          "description": "The type of underlying resources used to create the connection."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a ServiceConnectionPolicy. Format: projects/{project}/locations/{location}/serviceConnectionPolicies/{service_connection_policy} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "network": {
          "type": "string",
          "description": "The resource path of the consumer network. Example: - projects/{projectNumOrId}/global/networks/{resourceId}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConfig": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:PscConfigResponse",
          "description": "Configuration used for Private Service Connect connections. Used when Infrastructure is PSC."
        },
        "pscConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:PscConnectionResponse"
          },
          "description": "[Output only] Information about each Private Service Connect connection."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceClass": {
          "type": "string",
          "description": "The service class identifier for which this ServiceConnectionPolicy is for. The service class identifier is a unique, symbolic representation of a ServiceClass. It is provided by the Service Producer. Google services have a prefix of gcp. For example, gcp-cloud-sql. 3rd party services do not. For example, test-service-a3dfcx."
        },
        "serviceConnectionPolicyId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/serviceConnectionPolicies/foo') See https://google.aip.dev/122#resource-id-segments Unique per location."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the ServiceConnectionMap was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "infrastructure",
        "labels",
        "location",
        "name",
        "network",
        "project",
        "pscConfig",
        "pscConnections",
        "serviceClass",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a ServiceConnectionPolicy. Format: projects/{project}/locations/{location}/serviceConnectionPolicies/{service_connection_policy} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "network": {
          "type": "string",
          "description": "The resource path of the consumer network. Example: - projects/{projectNumOrId}/global/networks/{resourceId}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConfig": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:PscConfig",
          "description": "Configuration used for Private Service Connect connections. Used when Infrastructure is PSC."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceClass": {
          "type": "string",
          "description": "The service class identifier for which this ServiceConnectionPolicy is for. The service class identifier is a unique, symbolic representation of a ServiceClass. It is provided by the Service Producer. Google services have a prefix of gcp. For example, gcp-cloud-sql. 3rd party services do not. For example, test-service-a3dfcx."
        },
        "serviceConnectionPolicyId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/serviceConnectionPolicies/foo') See https://google.aip.dev/122#resource-id-segments Unique per location."
        }
      }
    },
    "google-native:networkconnectivity/v1:ServiceConnectionPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceConnectionPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceConnectionPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConnectionPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceConnectionPolicyId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceConnectionPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceConnectionPolicyId"
      ]
    },
    "google-native:networkconnectivity/v1:ServiceConnectionToken": {
      "description": "Creates a new ServiceConnectionToken in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the ServiceConnectionToken was created."
        },
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "expireTime": {
          "type": "string",
          "description": "The time to which this token is valid."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a ServiceConnectionToken. Format: projects/{project}/locations/{location}/ServiceConnectionTokens/{service_connection_token} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "network": {
          "type": "string",
          "description": "The resource path of the network associated with this token. Example: projects/{projectNumOrId}/global/networks/{resourceId}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceConnectionTokenId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/ServiceConnectionTokens/foo') See https://google.aip.dev/122#resource-id-segments Unique per location. If one is not provided, one will be generated."
        },
        "token": {
          "type": "string",
          "description": "The token generated by Automation."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the ServiceConnectionToken was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "expireTime",
        "labels",
        "location",
        "name",
        "network",
        "project",
        "token",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "etag": {
          "type": "string",
          "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a ServiceConnectionToken. Format: projects/{project}/locations/{location}/ServiceConnectionTokens/{service_connection_token} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "network": {
          "type": "string",
          "description": "The resource path of the network associated with this token. Example: projects/{projectNumOrId}/global/networks/{resourceId}."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceConnectionTokenId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/ServiceConnectionTokens/foo') See https://google.aip.dev/122#resource-id-segments Unique per location. If one is not provided, one will be generated."
        }
      }
    },
    "google-native:networkconnectivity/v1:Spoke": {
      "description": "Creates a Network Connectivity Center spoke.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the spoke was created."
        },
        "description": {
          "type": "string",
          "description": "An optional description of the spoke."
        },
        "group": {
          "type": "string",
          "description": "Optional. The name of the group that this spoke is associated with."
        },
        "hub": {
          "type": "string",
          "description": "Immutable. The name of the hub that this spoke is attached to."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional labels in key-value pair format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements)."
        },
        "linkedInterconnectAttachments": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedInterconnectAttachmentsResponse",
          "description": "VLAN attachments that are associated with the spoke."
        },
        "linkedRouterApplianceInstances": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedRouterApplianceInstancesResponse",
          "description": "Router appliance instances that are associated with the spoke."
        },
        "linkedVpcNetwork": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedVpcNetworkResponse",
          "description": "Optional. VPC network that is associated with the spoke."
        },
        "linkedVpnTunnels": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedVpnTunnelsResponse",
          "description": "VPN tunnels that are associated with the spoke."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the spoke. Spoke names must be unique. They use the following form: `projects/{project_number}/locations/{region}/spokes/{spoke_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reasons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:StateReasonResponse"
          },
          "description": "The reasons for current state of the spoke. Only present when the spoke is in the `INACTIVE` state."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server knows to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check to see whether the original operation was received. If it was, the server ignores the second request. This behavior prevents clients from mistakenly creating duplicate commitments. The request ID must be a valid UUID, with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "spokeId": {
          "type": "string",
          "description": "Required. Unique id for the spoke to create.",
          "replaceOnChanges": true
        },
        "spokeType": {
          "type": "string",
          "description": "The type of resource associated with the spoke."
        },
        "state": {
          "type": "string",
          "description": "The current lifecycle state of this spoke."
        },
        "uniqueId": {
          "type": "string",
          "description": "The Google-generated UUID for the spoke. This value is unique across all spoke resources. If a spoke is deleted and another with the same name is created, the new spoke is assigned a different `unique_id`."
        },
        "updateTime": {
          "type": "string",
          "description": "The time the spoke was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "group",
        "hub",
        "labels",
        "linkedInterconnectAttachments",
        "linkedRouterApplianceInstances",
        "linkedVpcNetwork",
        "linkedVpnTunnels",
        "location",
        "name",
        "project",
        "reasons",
        "spokeId",
        "spokeType",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of the spoke."
        },
        "group": {
          "type": "string",
          "description": "Optional. The name of the group that this spoke is associated with."
        },
        "hub": {
          "type": "string",
          "description": "Immutable. The name of the hub that this spoke is attached to."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional labels in key-value pair format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements)."
        },
        "linkedInterconnectAttachments": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedInterconnectAttachments",
          "description": "VLAN attachments that are associated with the spoke."
        },
        "linkedRouterApplianceInstances": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedRouterApplianceInstances",
          "description": "Router appliance instances that are associated with the spoke."
        },
        "linkedVpcNetwork": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedVpcNetwork",
          "description": "Optional. VPC network that is associated with the spoke."
        },
        "linkedVpnTunnels": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedVpnTunnels",
          "description": "VPN tunnels that are associated with the spoke."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the spoke. Spoke names must be unique. They use the following form: `projects/{project_number}/locations/{region}/spokes/{spoke_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server knows to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check to see whether the original operation was received. If it was, the server ignores the second request. This behavior prevents clients from mistakenly creating duplicate commitments. The request ID must be a valid UUID, with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "spokeId": {
          "type": "string",
          "description": "Required. Unique id for the spoke to create.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "spokeId"
      ]
    },
    "google-native:networkconnectivity/v1:SpokeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:SpokeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1:SpokeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spokeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "spokeId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spokeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "spokeId"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:Hub": {
      "description": "Creates a new Network Connectivity Center hub in the specified project.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the Hub was created."
        },
        "description": {
          "type": "string",
          "description": "Short description of the hub resource."
        },
        "hubId": {
          "type": "string",
          "description": "Optional. Unique id for the Hub to create."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a Hub resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "spokes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the URIs of all attached spokes. This field is deprecated and will not be included in future API versions. Call ListSpokes on each region instead.",
          "deprecationMessage": "Output only. A list of the URIs of all attached spokes. This field is deprecated and will not be included in future API versions. Call ListSpokes on each region instead."
        },
        "state": {
          "type": "string",
          "description": "The current lifecycle state of this Hub."
        },
        "uniqueId": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Hub resources. If a Hub resource is deleted and another with the same name is created, it gets a different unique_id."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the Hub was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "labels",
        "name",
        "project",
        "spokes",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "Time when the Hub was created."
        },
        "description": {
          "type": "string",
          "description": "Short description of the hub resource."
        },
        "hubId": {
          "type": "string",
          "description": "Optional. Unique id for the Hub to create."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a Hub resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the Hub was updated."
        }
      }
    },
    "google-native:networkconnectivity/v1alpha1:HubIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:HubIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:HubIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hubId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "hubId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hubId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "hubId"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:InternalRange": {
      "description": "Creates a new internal range in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the internal range was created."
        },
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "internalRangeId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/internalRanges/foo') See https://google.aip.dev/122#resource-id-segments Unique per location."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "IP range that this internal range defines."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of an internal range. Format: projects/{project}/locations/{location}/internalRanges/{internal_range} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "network": {
          "type": "string",
          "description": "The URL or resource ID of the network in which to reserve the internal range. The network cannot be deleted if there are any reserved internal ranges referring to it. Legacy networks are not supported. This can only be specified for a global internal address. Example: - URL: /compute/v1/projects/{project}/global/networks/{resourceId} - ID: network123"
        },
        "overlaps": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Types of resources that are allowed to overlap with the current internal range."
        },
        "peering": {
          "type": "string",
          "description": "The type of peering set for this internal range."
        },
        "prefixLength": {
          "type": "integer",
          "description": "An alternative to ip_cidr_range. Can be set when trying to create a reservation that automatically finds a free range of the given size. If both ip_cidr_range and prefix_length are set, there is an error if the range sizes do not match. Can also be used during updates to change the range size."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "targetCidrRange": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Can be set to narrow down or pick a different address space while searching for a free range. If not set, defaults to the \"10.0.0.0/8\" address space. This can be used to search in other rfc-1918 address spaces like \"172.16.0.0/12\" and \"192.168.0.0/16\" or non-rfc-1918 address spaces used in the VPC."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the internal range was updated."
        },
        "usage": {
          "type": "string",
          "description": "The type of usage set for this internal range."
        },
        "users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of resources that refer to this internal range. Resources that use the internal range for their range allocation are referred to as users of the range. Other resources mark themselves as users while doing so by creating a reference to this internal range. Having a user, based on this reference, prevents deletion of the internal range that is referred to. Can be empty."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "ipCidrRange",
        "labels",
        "location",
        "name",
        "network",
        "overlaps",
        "peering",
        "prefixLength",
        "project",
        "targetCidrRange",
        "updateTime",
        "usage",
        "users"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "Time when the internal range was created."
        },
        "description": {
          "type": "string",
          "description": "A description of this resource."
        },
        "internalRangeId": {
          "type": "string",
          "description": "Optional. Resource ID (i.e. 'foo' in '[...]/projects/p/locations/l/internalRanges/foo') See https://google.aip.dev/122#resource-id-segments Unique per location."
        },
        "ipCidrRange": {
          "type": "string",
          "description": "IP range that this internal range defines."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of an internal range. Format: projects/{project}/locations/{location}/internalRanges/{internal_range} See: https://google.aip.dev/122#fields-representing-resource-names"
        },
        "network": {
          "type": "string",
          "description": "The URL or resource ID of the network in which to reserve the internal range. The network cannot be deleted if there are any reserved internal ranges referring to it. Legacy networks are not supported. This can only be specified for a global internal address. Example: - URL: /compute/v1/projects/{project}/global/networks/{resourceId} - ID: network123"
        },
        "overlaps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:InternalRangeOverlapsItem"
          },
          "description": "Optional. Types of resources that are allowed to overlap with the current internal range."
        },
        "peering": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:InternalRangePeering",
          "description": "The type of peering set for this internal range."
        },
        "prefixLength": {
          "type": "integer",
          "description": "An alternative to ip_cidr_range. Can be set when trying to create a reservation that automatically finds a free range of the given size. If both ip_cidr_range and prefix_length are set, there is an error if the range sizes do not match. Can also be used during updates to change the range size."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "targetCidrRange": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Can be set to narrow down or pick a different address space while searching for a free range. If not set, defaults to the \"10.0.0.0/8\" address space. This can be used to search in other rfc-1918 address spaces like \"172.16.0.0/12\" and \"192.168.0.0/16\" or non-rfc-1918 address spaces used in the VPC."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the internal range was updated."
        },
        "usage": {
          "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:InternalRangeUsage",
          "description": "The type of usage set for this internal range."
        }
      }
    },
    "google-native:networkconnectivity/v1alpha1:InternalRangeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:InternalRangeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:InternalRangeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "internalRangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "internalRangeId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "internalRangeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "internalRangeId"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:Spoke": {
      "description": "Creates a Network Connectivity Center spoke.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time when the Spoke was created."
        },
        "description": {
          "type": "string",
          "description": "Short description of the spoke resource"
        },
        "hub": {
          "type": "string",
          "description": "The resource URL of the hub resource that the spoke is attached to"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "linkedInterconnectAttachments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URIs of linked interconnect attachment resources"
        },
        "linkedRouterApplianceInstances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:RouterApplianceInstanceResponse"
          },
          "description": "The URIs of linked Router appliance resources"
        },
        "linkedVpnTunnels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URIs of linked VPN tunnel resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a Spoke resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "spokeId": {
          "type": "string",
          "description": "Optional. Unique id for the Spoke to create."
        },
        "state": {
          "type": "string",
          "description": "The current lifecycle state of this Hub."
        },
        "uniqueId": {
          "type": "string",
          "description": "Google-generated UUID for this resource. This is unique across all Spoke resources. If a Spoke resource is deleted and another with the same name is created, it gets a different unique_id."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the Spoke was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "hub",
        "labels",
        "linkedInterconnectAttachments",
        "linkedRouterApplianceInstances",
        "linkedVpnTunnels",
        "location",
        "name",
        "project",
        "state",
        "uniqueId",
        "updateTime"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "The time when the Spoke was created."
        },
        "description": {
          "type": "string",
          "description": "Short description of the spoke resource"
        },
        "hub": {
          "type": "string",
          "description": "The resource URL of the hub resource that the spoke is attached to"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-defined labels."
        },
        "linkedInterconnectAttachments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URIs of linked interconnect attachment resources"
        },
        "linkedRouterApplianceInstances": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:RouterApplianceInstance"
          },
          "description": "The URIs of linked Router appliance resources"
        },
        "linkedVpnTunnels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The URIs of linked VPN tunnel resources"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of a Spoke resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "spokeId": {
          "type": "string",
          "description": "Optional. Unique id for the Spoke to create."
        },
        "updateTime": {
          "type": "string",
          "description": "The time when the Spoke was updated."
        }
      }
    },
    "google-native:networkconnectivity/v1alpha1:SpokeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:SpokeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkconnectivity/v1alpha1:SpokeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spokeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "spokeId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spokeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "spokeId"
      ]
    },
    "google-native:networkmanagement/v1:ConnectivityTest": {
      "description": "Creates a new Connectivity Test. After you create a test, the reachability analysis is performed as part of the long running operation, which completes when the analysis completes. If the endpoint specifications in `ConnectivityTest` are invalid (for example, containing non-existent resources in the network, or you don't have read permissions to the network configurations of listed projects), then the reachability result returns a value of `UNKNOWN`. If the endpoint specifications in `ConnectivityTest` are incomplete, the reachability result returns a value of AMBIGUOUS. For more information, see the Connectivity Test documentation.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the test was created."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the Connectivity Test. Maximum of 512 characters."
        },
        "destination": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:EndpointResponse",
          "description": "Destination specification of the Connectivity Test. You can use a combination of destination IP address, Compute Engine VM instance, or VPC network to uniquely identify the destination location. Even if the destination IP address is not unique, the source IP location is unique. Usually, the analysis can infer the destination endpoint from route information. If the destination you specify is a VM instance and the instance has multiple network interfaces, then you must also specify either a destination IP address or VPC network to identify the destination interface. A reachability analysis proceeds even if the destination location is ambiguous. However, the result can include endpoints that you don't intend to test."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of a Connectivity Test."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource using the form: `projects/{project_id}/locations/global/connectivityTests/{test_id}`"
        },
        "probingDetails": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:ProbingDetailsResponse",
          "description": "The probing details of this test from the latest run, present for applicable tests only. The details are updated when creating a new test, updating an existing test, or triggering a one-time rerun of an existing test."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "IP Protocol of the test. When not provided, \"TCP\" is assumed."
        },
        "reachabilityDetails": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:ReachabilityDetailsResponse",
          "description": "The reachability details of this test from the latest run. The details are updated when creating a new test, updating an existing test, or triggering a one-time rerun of an existing test."
        },
        "relatedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other projects that may be relevant for reachability analysis. This is applicable to scenarios where a test can cross project boundaries."
        },
        "source": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:EndpointResponse",
          "description": "Source specification of the Connectivity Test. You can use a combination of source IP address, virtual machine (VM) instance, or Compute Engine network to uniquely identify the source location. Examples: If the source IP address is an internal IP address within a Google Cloud Virtual Private Cloud (VPC) network, then you must also specify the VPC network. Otherwise, specify the VM instance, which already contains its internal IP address and VPC network information. If the source of the test is within an on-premises network, then you must provide the destination VPC network. If the source endpoint is a Compute Engine VM instance with multiple network interfaces, the instance itself is not sufficient to identify the endpoint. So, you must also specify the source IP address or VPC network. A reachability analysis proceeds even if the source location is ambiguous. However, the test result may include endpoints that you don't intend to test."
        },
        "testId": {
          "type": "string",
          "description": "Required. The logical name of the Connectivity Test in your project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the customer project",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The time the test's configuration was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "destination",
        "displayName",
        "labels",
        "name",
        "probingDetails",
        "project",
        "protocol",
        "reachabilityDetails",
        "relatedProjects",
        "source",
        "testId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The user-supplied description of the Connectivity Test. Maximum of 512 characters."
        },
        "destination": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:Endpoint",
          "description": "Destination specification of the Connectivity Test. You can use a combination of destination IP address, Compute Engine VM instance, or VPC network to uniquely identify the destination location. Even if the destination IP address is not unique, the source IP location is unique. Usually, the analysis can infer the destination endpoint from route information. If the destination you specify is a VM instance and the instance has multiple network interfaces, then you must also specify either a destination IP address or VPC network to identify the destination interface. A reachability analysis proceeds even if the destination location is ambiguous. However, the result can include endpoints that you don't intend to test."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource using the form: `projects/{project_id}/locations/global/connectivityTests/{test_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "IP Protocol of the test. When not provided, \"TCP\" is assumed."
        },
        "relatedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other projects that may be relevant for reachability analysis. This is applicable to scenarios where a test can cross project boundaries."
        },
        "source": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1:Endpoint",
          "description": "Source specification of the Connectivity Test. You can use a combination of source IP address, virtual machine (VM) instance, or Compute Engine network to uniquely identify the source location. Examples: If the source IP address is an internal IP address within a Google Cloud Virtual Private Cloud (VPC) network, then you must also specify the VPC network. Otherwise, specify the VM instance, which already contains its internal IP address and VPC network information. If the source of the test is within an on-premises network, then you must provide the destination VPC network. If the source endpoint is a Compute Engine VM instance with multiple network interfaces, the instance itself is not sufficient to identify the endpoint. So, you must also specify the source IP address or VPC network. A reachability analysis proceeds even if the source location is ambiguous. However, the test result may include endpoints that you don't intend to test."
        },
        "testId": {
          "type": "string",
          "description": "Required. The logical name of the Connectivity Test in your project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the customer project",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destination",
        "name",
        "source",
        "testId"
      ]
    },
    "google-native:networkmanagement/v1:ConnectivityTestIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkmanagement/v1:ConnectivityTestIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkmanagement/v1:ConnectivityTestIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectivityTestId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectivityTestId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectivityTestId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectivityTestId"
      ]
    },
    "google-native:networkmanagement/v1beta1:ConnectivityTest": {
      "description": "Creates a new Connectivity Test. After you create a test, the reachability analysis is performed as part of the long running operation, which completes when the analysis completes. If the endpoint specifications in `ConnectivityTest` are invalid (for example, containing non-existent resources in the network, or you don't have read permissions to the network configurations of listed projects), then the reachability result returns a value of `UNKNOWN`. If the endpoint specifications in `ConnectivityTest` are incomplete, the reachability result returns a value of AMBIGUOUS. For more information, see the Connectivity Test documentation.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the test was created."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the Connectivity Test. Maximum of 512 characters."
        },
        "destination": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EndpointResponse",
          "description": "Destination specification of the Connectivity Test. You can use a combination of destination IP address, Compute Engine VM instance, or VPC network to uniquely identify the destination location. Even if the destination IP address is not unique, the source IP location is unique. Usually, the analysis can infer the destination endpoint from route information. If the destination you specify is a VM instance and the instance has multiple network interfaces, then you must also specify either a destination IP address or VPC network to identify the destination interface. A reachability analysis proceeds even if the destination location is ambiguous. However, the result can include endpoints that you don't intend to test."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of a Connectivity Test."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource using the form: `projects/{project_id}/locations/global/connectivityTests/{test}`"
        },
        "probingDetails": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:ProbingDetailsResponse",
          "description": "The probing details of this test from the latest run, present for applicable tests only. The details are updated when creating a new test, updating an existing test, or triggering a one-time rerun of an existing test."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "IP Protocol of the test. When not provided, \"TCP\" is assumed."
        },
        "reachabilityDetails": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:ReachabilityDetailsResponse",
          "description": "The reachability details of this test from the latest run. The details are updated when creating a new test, updating an existing test, or triggering a one-time rerun of an existing test."
        },
        "relatedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other projects that may be relevant for reachability analysis. This is applicable to scenarios where a test can cross project boundaries."
        },
        "source": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EndpointResponse",
          "description": "Source specification of the Connectivity Test. You can use a combination of source IP address, virtual machine (VM) instance, or Compute Engine network to uniquely identify the source location. Examples: If the source IP address is an internal IP address within a Google Cloud Virtual Private Cloud (VPC) network, then you must also specify the VPC network. Otherwise, specify the VM instance, which already contains its internal IP address and VPC network information. If the source of the test is within an on-premises network, then you must provide the destination VPC network. If the source endpoint is a Compute Engine VM instance with multiple network interfaces, the instance itself is not sufficient to identify the endpoint. So, you must also specify the source IP address or VPC network. A reachability analysis proceeds even if the source location is ambiguous. However, the test result may include endpoints that you don't intend to test."
        },
        "testId": {
          "type": "string",
          "description": "Required. The logical name of the Connectivity Test in your project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the customer project",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The time the test's configuration was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "destination",
        "displayName",
        "labels",
        "name",
        "probingDetails",
        "project",
        "protocol",
        "reachabilityDetails",
        "relatedProjects",
        "source",
        "testId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The user-supplied description of the Connectivity Test. Maximum of 512 characters."
        },
        "destination": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:Endpoint",
          "description": "Destination specification of the Connectivity Test. You can use a combination of destination IP address, Compute Engine VM instance, or VPC network to uniquely identify the destination location. Even if the destination IP address is not unique, the source IP location is unique. Usually, the analysis can infer the destination endpoint from route information. If the destination you specify is a VM instance and the instance has multiple network interfaces, then you must also specify either a destination IP address or VPC network to identify the destination interface. A reachability analysis proceeds even if the destination location is ambiguous. However, the result can include endpoints that you don't intend to test."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource using the form: `projects/{project_id}/locations/global/connectivityTests/{test}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "IP Protocol of the test. When not provided, \"TCP\" is assumed."
        },
        "relatedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Other projects that may be relevant for reachability analysis. This is applicable to scenarios where a test can cross project boundaries."
        },
        "source": {
          "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:Endpoint",
          "description": "Source specification of the Connectivity Test. You can use a combination of source IP address, virtual machine (VM) instance, or Compute Engine network to uniquely identify the source location. Examples: If the source IP address is an internal IP address within a Google Cloud Virtual Private Cloud (VPC) network, then you must also specify the VPC network. Otherwise, specify the VM instance, which already contains its internal IP address and VPC network information. If the source of the test is within an on-premises network, then you must provide the destination VPC network. If the source endpoint is a Compute Engine VM instance with multiple network interfaces, the instance itself is not sufficient to identify the endpoint. So, you must also specify the source IP address or VPC network. A reachability analysis proceeds even if the source location is ambiguous. However, the test result may include endpoints that you don't intend to test."
        },
        "testId": {
          "type": "string",
          "description": "Required. The logical name of the Connectivity Test in your project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the customer project",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destination",
        "name",
        "source",
        "testId"
      ]
    },
    "google-native:networkmanagement/v1beta1:ConnectivityTestIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkmanagement/v1beta1:ConnectivityTestIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkmanagement/v1beta1:ConnectivityTestIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectivityTestId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "connectivityTestId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "connectivityTestId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "connectivityTestId"
      ]
    },
    "google-native:networksecurity/v1:AddressGroup": {
      "description": "Creates a new address group in a given project and location.",
      "properties": {
        "addressGroupId": {
          "type": "string",
          "description": "Required. Short name of the AddressGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "capacity": {
          "type": "integer",
          "description": "Capacity of the Address Group"
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of items."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AddressGroup resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "type": {
          "type": "string",
          "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\"."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "addressGroupId",
        "capacity",
        "createTime",
        "description",
        "items",
        "labels",
        "location",
        "name",
        "project",
        "selfLink",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "addressGroupId": {
          "type": "string",
          "description": "Required. Short name of the AddressGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "capacity": {
          "type": "integer",
          "description": "Capacity of the Address Group"
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of items."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AddressGroup resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:AddressGroupType",
          "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\"."
        }
      },
      "requiredInputs": [
        "addressGroupId",
        "capacity",
        "type"
      ]
    },
    "google-native:networksecurity/v1:AddressGroupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1:AddressGroupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1:AddressGroupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "addressGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "addressGroupId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "addressGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "addressGroupId"
      ]
    },
    "google-native:networksecurity/v1:AuthorizationPolicy": {
      "description": "Creates a new AuthorizationPolicy in a given project and location.",
      "properties": {
        "action": {
          "type": "string",
          "description": "The action to take when a rule match is found. Possible values are \"ALLOW\" or \"DENY\"."
        },
        "authorizationPolicyId": {
          "type": "string",
          "description": "Required. Short name of the AuthorizationPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AuthorizationPolicy resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AuthorizationPolicy resource. It matches pattern `projects/{project}/locations/{location}/authorizationPolicies/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:RuleResponse"
          },
          "description": "Optional. List of rules to match. Note that at least one of the rules must match in order for the action specified in the 'action' field to be taken. A rule is a match if there is a matching source and destination. If left blank, the action specified in the `action` field will be applied on every request."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "action",
        "authorizationPolicyId",
        "createTime",
        "description",
        "labels",
        "location",
        "name",
        "project",
        "rules",
        "updateTime"
      ],
      "inputProperties": {
        "action": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:AuthorizationPolicyAction",
          "description": "The action to take when a rule match is found. Possible values are \"ALLOW\" or \"DENY\"."
        },
        "authorizationPolicyId": {
          "type": "string",
          "description": "Required. Short name of the AuthorizationPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AuthorizationPolicy resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AuthorizationPolicy resource. It matches pattern `projects/{project}/locations/{location}/authorizationPolicies/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:Rule"
          },
          "description": "Optional. List of rules to match. Note that at least one of the rules must match in order for the action specified in the 'action' field to be taken. A rule is a match if there is a matching source and destination. If left blank, the action specified in the `action` field will be applied on every request."
        }
      },
      "requiredInputs": [
        "action",
        "authorizationPolicyId"
      ]
    },
    "google-native:networksecurity/v1:AuthorizationPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1:AuthorizationPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1:AuthorizationPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "authorizationPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "authorizationPolicyId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "authorizationPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "authorizationPolicyId"
      ]
    },
    "google-native:networksecurity/v1:ClientTlsPolicy": {
      "description": "Creates a new ClientTlsPolicy in a given project and location.",
      "properties": {
        "clientCertificate": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1CertificateProviderResponse",
          "description": "Optional. Defines a mechanism to provision client identity (public and private keys) for peer to peer authentication. The presence of this dictates mTLS."
        },
        "clientTlsPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ClientTlsPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"client_mtls_policy\".",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ClientTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/clientTlsPolicies/{client_tls_policy}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverValidationCa": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:ValidationCAResponse"
          },
          "description": "Optional. Defines the mechanism to obtain the Certificate Authority certificate to validate the server certificate. If empty, client does not validate the server certificate."
        },
        "sni": {
          "type": "string",
          "description": "Optional. Server Name Indication string to present to the server during TLS handshake. E.g: \"secure.example.com\"."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "clientCertificate",
        "clientTlsPolicyId",
        "createTime",
        "description",
        "labels",
        "location",
        "name",
        "project",
        "serverValidationCa",
        "sni",
        "updateTime"
      ],
      "inputProperties": {
        "clientCertificate": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1CertificateProvider",
          "description": "Optional. Defines a mechanism to provision client identity (public and private keys) for peer to peer authentication. The presence of this dictates mTLS."
        },
        "clientTlsPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ClientTlsPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"client_mtls_policy\".",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ClientTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/clientTlsPolicies/{client_tls_policy}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverValidationCa": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:ValidationCA"
          },
          "description": "Optional. Defines the mechanism to obtain the Certificate Authority certificate to validate the server certificate. If empty, client does not validate the server certificate."
        },
        "sni": {
          "type": "string",
          "description": "Optional. Server Name Indication string to present to the server during TLS handshake. E.g: \"secure.example.com\"."
        }
      },
      "requiredInputs": [
        "clientTlsPolicyId"
      ]
    },
    "google-native:networksecurity/v1:ClientTlsPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1:ClientTlsPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1:ClientTlsPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientTlsPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "clientTlsPolicyId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientTlsPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clientTlsPolicyId"
      ]
    },
    "google-native:networksecurity/v1:GatewaySecurityPolicy": {
      "description": "Creates a new GatewaySecurityPolicy in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "gatewaySecurityPolicyId": {
          "type": "string",
          "description": "Required. Short name of the GatewaySecurityPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"gateway_security_policy1\".",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy} gateway_security_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tlsInspectionPolicy": {
          "type": "string",
          "description": "Optional. Name of a TLS Inspection Policy resource that defines how TLS inspection will be performed for any rule(s) which enables it."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gatewaySecurityPolicyId",
        "location",
        "name",
        "project",
        "tlsInspectionPolicy",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "gatewaySecurityPolicyId": {
          "type": "string",
          "description": "Required. Short name of the GatewaySecurityPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"gateway_security_policy1\".",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy} gateway_security_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tlsInspectionPolicy": {
          "type": "string",
          "description": "Optional. Name of a TLS Inspection Policy resource that defines how TLS inspection will be performed for any rule(s) which enables it."
        }
      },
      "requiredInputs": [
        "gatewaySecurityPolicyId"
      ]
    },
    "google-native:networksecurity/v1:OrganizationAddressGroup": {
      "description": "Creates a new address group in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "addressGroupId": {
          "type": "string",
          "description": "Required. Short name of the AddressGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "capacity": {
          "type": "integer",
          "description": "Capacity of the Address Group"
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of items."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AddressGroup resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "type": {
          "type": "string",
          "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\"."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "addressGroupId",
        "capacity",
        "createTime",
        "description",
        "items",
        "labels",
        "location",
        "name",
        "organizationId",
        "selfLink",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "addressGroupId": {
          "type": "string",
          "description": "Required. Short name of the AddressGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "capacity": {
          "type": "integer",
          "description": "Capacity of the Address Group"
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of items."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AddressGroup resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:OrganizationAddressGroupType",
          "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\"."
        }
      },
      "requiredInputs": [
        "addressGroupId",
        "capacity",
        "name",
        "organizationId",
        "type"
      ]
    },
    "google-native:networksecurity/v1:Rule": {
      "description": "Creates a new GatewaySecurityPolicy in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "applicationMatcher": {
          "type": "string",
          "description": "Optional. CEL expression for matching on L7/application level criteria."
        },
        "basicProfile": {
          "type": "string",
          "description": "Profile which tells what the primitive action should be."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the rule was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether the rule is enforced."
        },
        "gatewaySecurityPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "gatewaySecurityPolicyRuleId": {
          "type": "string",
          "description": "The ID to use for the rule, which will become the final component of the rule's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the resource. ame is the full resource name so projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy}/rules/{rule} rule should match the pattern: (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the rule. Lower number corresponds to higher precedence."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionMatcher": {
          "type": "string",
          "description": "CEL expression for matching on session criteria."
        },
        "tlsInspectionEnabled": {
          "type": "boolean",
          "description": "Optional. Flag to enable TLS inspection of traffic matching on , can only be true if the parent GatewaySecurityPolicy references a TLSInspectionConfig."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the rule was updated."
        }
      },
      "type": "object",
      "required": [
        "applicationMatcher",
        "basicProfile",
        "createTime",
        "description",
        "enabled",
        "gatewaySecurityPolicyId",
        "location",
        "name",
        "priority",
        "project",
        "sessionMatcher",
        "tlsInspectionEnabled",
        "updateTime"
      ],
      "inputProperties": {
        "applicationMatcher": {
          "type": "string",
          "description": "Optional. CEL expression for matching on L7/application level criteria."
        },
        "basicProfile": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:RuleBasicProfile",
          "description": "Profile which tells what the primitive action should be."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether the rule is enforced."
        },
        "gatewaySecurityPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "gatewaySecurityPolicyRuleId": {
          "type": "string",
          "description": "The ID to use for the rule, which will become the final component of the rule's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the resource. ame is the full resource name so projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy}/rules/{rule} rule should match the pattern: (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the rule. Lower number corresponds to higher precedence."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionMatcher": {
          "type": "string",
          "description": "CEL expression for matching on session criteria."
        },
        "tlsInspectionEnabled": {
          "type": "boolean",
          "description": "Optional. Flag to enable TLS inspection of traffic matching on , can only be true if the parent GatewaySecurityPolicy references a TLSInspectionConfig."
        }
      },
      "requiredInputs": [
        "basicProfile",
        "enabled",
        "gatewaySecurityPolicyId",
        "name",
        "priority",
        "sessionMatcher"
      ]
    },
    "google-native:networksecurity/v1:ServerTlsPolicy": {
      "description": "Creates a new ServerTlsPolicy in a given project and location.",
      "properties": {
        "allowOpen": {
          "type": "boolean",
          "description": "This field applies only for Traffic Director policies. It is must be set to false for external HTTPS load balancer policies. Determines if server allows plaintext connections. If set to true, server allows plain text connections. By default, it is set to false. This setting is not exclusive of other encryption modes. For example, if `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections. See documentation of other encryption modes to confirm compatibility. Consider using it if you wish to upgrade in place your deployment to TLS while having mixed TLS and non-TLS traffic reaching port :80."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of label tags associated with the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mtlsPolicy": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:MTLSPolicyResponse",
          "description": "This field is required if the policy is used with external HTTPS load balancers. This field can be empty for Traffic Director. Defines a mechanism to provision peer validation certificates for peer to peer authentication (Mutual TLS - mTLS). If not specified, client certificate will not be requested. The connection is treated as TLS and not mTLS. If `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections."
        },
        "name": {
          "type": "string",
          "description": "Name of the ServerTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/serverTlsPolicies/{server_tls_policy}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverCertificate": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1CertificateProviderResponse",
          "description": "Optional if policy is to be used with Traffic Director. For external HTTPS load balancer must be empty. Defines a mechanism to provision server identity (public and private keys). Cannot be combined with `allow_open` as a permissive mode that allows both plain text and TLS is not supported."
        },
        "serverTlsPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ServerTlsPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"server_mtls_policy\".",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "allowOpen",
        "createTime",
        "description",
        "labels",
        "location",
        "mtlsPolicy",
        "name",
        "project",
        "serverCertificate",
        "serverTlsPolicyId",
        "updateTime"
      ],
      "inputProperties": {
        "allowOpen": {
          "type": "boolean",
          "description": "This field applies only for Traffic Director policies. It is must be set to false for external HTTPS load balancer policies. Determines if server allows plaintext connections. If set to true, server allows plain text connections. By default, it is set to false. This setting is not exclusive of other encryption modes. For example, if `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections. See documentation of other encryption modes to confirm compatibility. Consider using it if you wish to upgrade in place your deployment to TLS while having mixed TLS and non-TLS traffic reaching port :80."
        },
        "description": {
          "type": "string",
          "description": "Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of label tags associated with the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mtlsPolicy": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:MTLSPolicy",
          "description": "This field is required if the policy is used with external HTTPS load balancers. This field can be empty for Traffic Director. Defines a mechanism to provision peer validation certificates for peer to peer authentication (Mutual TLS - mTLS). If not specified, client certificate will not be requested. The connection is treated as TLS and not mTLS. If `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections."
        },
        "name": {
          "type": "string",
          "description": "Name of the ServerTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/serverTlsPolicies/{server_tls_policy}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverCertificate": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1CertificateProvider",
          "description": "Optional if policy is to be used with Traffic Director. For external HTTPS load balancer must be empty. Defines a mechanism to provision server identity (public and private keys). Cannot be combined with `allow_open` as a permissive mode that allows both plain text and TLS is not supported."
        },
        "serverTlsPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ServerTlsPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"server_mtls_policy\".",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "serverTlsPolicyId"
      ]
    },
    "google-native:networksecurity/v1:ServerTlsPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1:ServerTlsPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1:ServerTlsPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverTlsPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serverTlsPolicyId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverTlsPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serverTlsPolicyId"
      ]
    },
    "google-native:networksecurity/v1:TlsInspectionPolicy": {
      "description": "Creates a new TlsInspectionPolicy in a given project and location.",
      "properties": {
        "caPool": {
          "type": "string",
          "description": "A CA pool resource used to issue interception certificates. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\"."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "customTlsFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of custom TLS cipher suites selected. This field is valid only if the selected tls_feature_profile is CUSTOM. The compute.SslPoliciesService.ListAvailableFeatures method returns the set of features that can be specified in this list. Note that Secure Web Proxy does not yet honor this field."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "excludePublicCaSet": {
          "type": "boolean",
          "description": "Optional. If FALSE (the default), use our default set of public CAs in addition to any CAs specified in trust_config. These public CAs are currently based on the Mozilla Root Program and are subject to change over time. If TRUE, do not accept our default set of public CAs. Only CAs specified in trust_config will be accepted. This defaults to FALSE (use public CAs in addition to trust_config) for backwards compatibility, but trusting public root CAs is *not recommended* unless the traffic in question is outbound to public web servers. When possible, prefer setting this to \"false\" and explicitly specifying trusted CAs and certificates in a TrustConfig. Note that Secure Web Proxy does not yet honor this field."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "minTlsVersion": {
          "type": "string",
          "description": "Optional. Minimum TLS version that the firewall should use when negotiating connections with both clients and servers. If this is not set, then the default value is to allow the broadest set of clients and servers (TLS 1.0 or higher). Setting this to more restrictive values may improve security, but may also prevent the firewall from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/tlsInspectionPolicies/{tls_inspection_policy} tls_inspection_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tlsFeatureProfile": {
          "type": "string",
          "description": "Optional. The selected Profile. If this is not set, then the default value is to allow the broadest set of clients and servers (\"PROFILE_COMPATIBLE\"). Setting this to more restrictive values may improve security, but may also prevent the TLS inspection proxy from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field."
        },
        "tlsInspectionPolicyId": {
          "type": "string",
          "description": "Required. Short name of the TlsInspectionPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"tls_inspection_policy1\".",
          "replaceOnChanges": true
        },
        "trustConfig": {
          "type": "string",
          "description": "Optional. A TrustConfig resource used when making a connection to the TLS server. This is a relative resource path following the form \"projects/{project}/locations/{location}/trustConfigs/{trust_config}\". This is necessary to intercept TLS connections to servers with certificates signed by a private CA or self-signed certificates. Note that Secure Web Proxy does not yet honor this field."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "caPool",
        "createTime",
        "customTlsFeatures",
        "description",
        "excludePublicCaSet",
        "location",
        "minTlsVersion",
        "name",
        "project",
        "tlsFeatureProfile",
        "tlsInspectionPolicyId",
        "trustConfig",
        "updateTime"
      ],
      "inputProperties": {
        "caPool": {
          "type": "string",
          "description": "A CA pool resource used to issue interception certificates. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\"."
        },
        "customTlsFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of custom TLS cipher suites selected. This field is valid only if the selected tls_feature_profile is CUSTOM. The compute.SslPoliciesService.ListAvailableFeatures method returns the set of features that can be specified in this list. Note that Secure Web Proxy does not yet honor this field."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "excludePublicCaSet": {
          "type": "boolean",
          "description": "Optional. If FALSE (the default), use our default set of public CAs in addition to any CAs specified in trust_config. These public CAs are currently based on the Mozilla Root Program and are subject to change over time. If TRUE, do not accept our default set of public CAs. Only CAs specified in trust_config will be accepted. This defaults to FALSE (use public CAs in addition to trust_config) for backwards compatibility, but trusting public root CAs is *not recommended* unless the traffic in question is outbound to public web servers. When possible, prefer setting this to \"false\" and explicitly specifying trusted CAs and certificates in a TrustConfig. Note that Secure Web Proxy does not yet honor this field."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "minTlsVersion": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:TlsInspectionPolicyMinTlsVersion",
          "description": "Optional. Minimum TLS version that the firewall should use when negotiating connections with both clients and servers. If this is not set, then the default value is to allow the broadest set of clients and servers (TLS 1.0 or higher). Setting this to more restrictive values may improve security, but may also prevent the firewall from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/tlsInspectionPolicies/{tls_inspection_policy} tls_inspection_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tlsFeatureProfile": {
          "$ref": "#/types/google-native:networksecurity%2Fv1:TlsInspectionPolicyTlsFeatureProfile",
          "description": "Optional. The selected Profile. If this is not set, then the default value is to allow the broadest set of clients and servers (\"PROFILE_COMPATIBLE\"). Setting this to more restrictive values may improve security, but may also prevent the TLS inspection proxy from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field."
        },
        "tlsInspectionPolicyId": {
          "type": "string",
          "description": "Required. Short name of the TlsInspectionPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"tls_inspection_policy1\".",
          "replaceOnChanges": true
        },
        "trustConfig": {
          "type": "string",
          "description": "Optional. A TrustConfig resource used when making a connection to the TLS server. This is a relative resource path following the form \"projects/{project}/locations/{location}/trustConfigs/{trust_config}\". This is necessary to intercept TLS connections to servers with certificates signed by a private CA or self-signed certificates. Note that Secure Web Proxy does not yet honor this field."
        }
      },
      "requiredInputs": [
        "caPool",
        "tlsInspectionPolicyId"
      ]
    },
    "google-native:networksecurity/v1:UrlList": {
      "description": "Creates a new UrlList in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the security policy was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource provided by the user. Name is of the form projects/{project}/locations/{location}/urlLists/{url_list} url_list should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the security policy was updated."
        },
        "urlListId": {
          "type": "string",
          "description": "Required. Short name of the UrlList resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"url_list\".",
          "replaceOnChanges": true
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "FQDNs and URLs."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "name",
        "project",
        "updateTime",
        "urlListId",
        "values"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource provided by the user. Name is of the form projects/{project}/locations/{location}/urlLists/{url_list} url_list should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "urlListId": {
          "type": "string",
          "description": "Required. Short name of the UrlList resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"url_list\".",
          "replaceOnChanges": true
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "FQDNs and URLs."
        }
      },
      "requiredInputs": [
        "urlListId",
        "values"
      ]
    },
    "google-native:networksecurity/v1beta1:AddressGroup": {
      "description": "Creates a new address group in a given project and location.",
      "properties": {
        "addressGroupId": {
          "type": "string",
          "description": "Required. Short name of the AddressGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "capacity": {
          "type": "integer",
          "description": "Capacity of the Address Group"
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of items."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AddressGroup resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "type": {
          "type": "string",
          "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\"."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "addressGroupId",
        "capacity",
        "createTime",
        "description",
        "items",
        "labels",
        "location",
        "name",
        "project",
        "selfLink",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "addressGroupId": {
          "type": "string",
          "description": "Required. Short name of the AddressGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "capacity": {
          "type": "integer",
          "description": "Capacity of the Address Group"
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of items."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AddressGroup resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:AddressGroupType",
          "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\"."
        }
      },
      "requiredInputs": [
        "addressGroupId",
        "capacity",
        "type"
      ]
    },
    "google-native:networksecurity/v1beta1:AddressGroupIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:AddressGroupIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:AddressGroupIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "addressGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "addressGroupId",
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "addressGroupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "addressGroupId"
      ]
    },
    "google-native:networksecurity/v1beta1:AuthorizationPolicy": {
      "description": "Creates a new AuthorizationPolicy in a given project and location.",
      "properties": {
        "action": {
          "type": "string",
          "description": "The action to take when a rule match is found. Possible values are \"ALLOW\" or \"DENY\"."
        },
        "authorizationPolicyId": {
          "type": "string",
          "description": "Required. Short name of the AuthorizationPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AuthorizationPolicy resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AuthorizationPolicy resource. It matches pattern `projects/{project}/locations/{location}/authorizationPolicies/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:RuleResponse"
          },
          "description": "Optional. List of rules to match. Note that at least one of the rules must match in order for the action specified in the 'action' field to be taken. A rule is a match if there is a matching source and destination. If left blank, the action specified in the `action` field will be applied on every request."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "action",
        "authorizationPolicyId",
        "createTime",
        "description",
        "labels",
        "location",
        "name",
        "project",
        "rules",
        "updateTime"
      ],
      "inputProperties": {
        "action": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:AuthorizationPolicyAction",
          "description": "The action to take when a rule match is found. Possible values are \"ALLOW\" or \"DENY\"."
        },
        "authorizationPolicyId": {
          "type": "string",
          "description": "Required. Short name of the AuthorizationPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AuthorizationPolicy resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AuthorizationPolicy resource. It matches pattern `projects/{project}/locations/{location}/authorizationPolicies/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:Rule"
          },
          "description": "Optional. List of rules to match. Note that at least one of the rules must match in order for the action specified in the 'action' field to be taken. A rule is a match if there is a matching source and destination. If left blank, the action specified in the `action` field will be applied on every request."
        }
      },
      "requiredInputs": [
        "action",
        "authorizationPolicyId"
      ]
    },
    "google-native:networksecurity/v1beta1:AuthorizationPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:AuthorizationPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:AuthorizationPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "authorizationPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "authorizationPolicyId",
        "bindings",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "authorizationPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "authorizationPolicyId"
      ]
    },
    "google-native:networksecurity/v1beta1:ClientTlsPolicy": {
      "description": "Creates a new ClientTlsPolicy in a given project and location.",
      "properties": {
        "clientCertificate": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1CertificateProviderResponse",
          "description": "Optional. Defines a mechanism to provision client identity (public and private keys) for peer to peer authentication. The presence of this dictates mTLS."
        },
        "clientTlsPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ClientTlsPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"client_mtls_policy\".",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ClientTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/clientTlsPolicies/{client_tls_policy}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverValidationCa": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ValidationCAResponse"
          },
          "description": "Optional. Defines the mechanism to obtain the Certificate Authority certificate to validate the server certificate. If empty, client does not validate the server certificate."
        },
        "sni": {
          "type": "string",
          "description": "Optional. Server Name Indication string to present to the server during TLS handshake. E.g: \"secure.example.com\"."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "clientCertificate",
        "clientTlsPolicyId",
        "createTime",
        "description",
        "labels",
        "location",
        "name",
        "project",
        "serverValidationCa",
        "sni",
        "updateTime"
      ],
      "inputProperties": {
        "clientCertificate": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1CertificateProvider",
          "description": "Optional. Defines a mechanism to provision client identity (public and private keys) for peer to peer authentication. The presence of this dictates mTLS."
        },
        "clientTlsPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ClientTlsPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"client_mtls_policy\".",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ClientTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/clientTlsPolicies/{client_tls_policy}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverValidationCa": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ValidationCA"
          },
          "description": "Optional. Defines the mechanism to obtain the Certificate Authority certificate to validate the server certificate. If empty, client does not validate the server certificate."
        },
        "sni": {
          "type": "string",
          "description": "Optional. Server Name Indication string to present to the server during TLS handshake. E.g: \"secure.example.com\"."
        }
      },
      "requiredInputs": [
        "clientTlsPolicyId"
      ]
    },
    "google-native:networksecurity/v1beta1:ClientTlsPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:ClientTlsPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:ClientTlsPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientTlsPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "clientTlsPolicyId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clientTlsPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clientTlsPolicyId"
      ]
    },
    "google-native:networksecurity/v1beta1:FirewallEndpoint": {
      "description": "Creates a new FirewallEndpoint in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "associatedNetworks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of networks that are associated with this endpoint in the local zone. This is a projection of the FirewallEndpointAssociations pointing at this endpoint. A network will only appear in this list after traffic routing is fully configured. Format: projects/{project}/global/networks/{name}."
        },
        "billingProjectId": {
          "type": "string",
          "description": "Optional. Project to bill on endpoint uptime usage."
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the firewall endpoint. Max length 2048 characters."
        },
        "firewallEndpointId": {
          "type": "string",
          "description": "Required. Id of the requesting object. If auto-generating Id server-side, remove this field and firewall_endpoint_id from the method_signature of Create RPC.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Whether reconciling is in progress, recommended per https://google.aip.dev/128."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "Current state of the endpoint."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "associatedNetworks",
        "billingProjectId",
        "createTime",
        "description",
        "firewallEndpointId",
        "labels",
        "location",
        "name",
        "organizationId",
        "reconciling",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "billingProjectId": {
          "type": "string",
          "description": "Optional. Project to bill on endpoint uptime usage."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the firewall endpoint. Max length 2048 characters."
        },
        "firewallEndpointId": {
          "type": "string",
          "description": "Required. Id of the requesting object. If auto-generating Id server-side, remove this field and firewall_endpoint_id from the method_signature of Create RPC.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "firewallEndpointId",
        "organizationId"
      ]
    },
    "google-native:networksecurity/v1beta1:FirewallEndpointAssociation": {
      "description": "Creates a new FirewallEndpointAssociation in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Create time stamp"
        },
        "firewallEndpoint": {
          "type": "string",
          "description": "The URL of the FirewallEndpoint that is being associated."
        },
        "firewallEndpointAssociationId": {
          "type": "string",
          "description": "Optional. Id of the requesting object. If auto-generating Id server-side, remove this field and firewall_endpoint_association_id from the method_signature of Create RPC."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource"
        },
        "network": {
          "type": "string",
          "description": "The URL of the network that is being associated."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Whether reconciling is in progress, recommended per https://google.aip.dev/128."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "Current state of the association."
        },
        "tlsInspectionPolicy": {
          "type": "string",
          "description": "Optional. The URL of the TlsInspectionPolicy that is being associated."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "firewallEndpoint",
        "labels",
        "location",
        "name",
        "network",
        "project",
        "reconciling",
        "state",
        "tlsInspectionPolicy",
        "updateTime"
      ],
      "inputProperties": {
        "firewallEndpoint": {
          "type": "string",
          "description": "The URL of the FirewallEndpoint that is being associated."
        },
        "firewallEndpointAssociationId": {
          "type": "string",
          "description": "Optional. Id of the requesting object. If auto-generating Id server-side, remove this field and firewall_endpoint_association_id from the method_signature of Create RPC."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "The URL of the network that is being associated."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "tlsInspectionPolicy": {
          "type": "string",
          "description": "Optional. The URL of the TlsInspectionPolicy that is being associated."
        }
      },
      "requiredInputs": [
        "firewallEndpoint",
        "network"
      ]
    },
    "google-native:networksecurity/v1beta1:GatewaySecurityPolicy": {
      "description": "Creates a new GatewaySecurityPolicy in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "gatewaySecurityPolicyId": {
          "type": "string",
          "description": "Required. Short name of the GatewaySecurityPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"gateway_security_policy1\".",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy} gateway_security_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tlsInspectionPolicy": {
          "type": "string",
          "description": "Optional. Name of a TLS Inspection Policy resource that defines how TLS inspection will be performed for any rule(s) which enables it."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gatewaySecurityPolicyId",
        "location",
        "name",
        "project",
        "tlsInspectionPolicy",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "gatewaySecurityPolicyId": {
          "type": "string",
          "description": "Required. Short name of the GatewaySecurityPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"gateway_security_policy1\".",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy} gateway_security_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tlsInspectionPolicy": {
          "type": "string",
          "description": "Optional. Name of a TLS Inspection Policy resource that defines how TLS inspection will be performed for any rule(s) which enables it."
        }
      },
      "requiredInputs": [
        "gatewaySecurityPolicyId"
      ]
    },
    "google-native:networksecurity/v1beta1:OrganizationAddressGroup": {
      "description": "Creates a new address group in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "addressGroupId": {
          "type": "string",
          "description": "Required. Short name of the AddressGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "capacity": {
          "type": "integer",
          "description": "Capacity of the Address Group"
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of items."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AddressGroup resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined fully-qualified URL for this resource."
        },
        "type": {
          "type": "string",
          "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\"."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "addressGroupId",
        "capacity",
        "createTime",
        "description",
        "items",
        "labels",
        "location",
        "name",
        "organizationId",
        "selfLink",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "addressGroupId": {
          "type": "string",
          "description": "Required. Short name of the AddressGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"authz_policy\".",
          "replaceOnChanges": true
        },
        "capacity": {
          "type": "integer",
          "description": "Capacity of the Address Group"
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of items."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the AddressGroup resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:OrganizationAddressGroupType",
          "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\"."
        }
      },
      "requiredInputs": [
        "addressGroupId",
        "capacity",
        "name",
        "organizationId",
        "type"
      ]
    },
    "google-native:networksecurity/v1beta1:Rule": {
      "description": "Creates a new GatewaySecurityPolicy in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "applicationMatcher": {
          "type": "string",
          "description": "Optional. CEL expression for matching on L7/application level criteria."
        },
        "basicProfile": {
          "type": "string",
          "description": "Profile which tells what the primitive action should be."
        },
        "createTime": {
          "type": "string",
          "description": "Time when the rule was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether the rule is enforced."
        },
        "gatewaySecurityPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "gatewaySecurityPolicyRuleId": {
          "type": "string",
          "description": "The ID to use for the rule, which will become the final component of the rule's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the resource. ame is the full resource name so projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy}/rules/{rule} rule should match the pattern: (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the rule. Lower number corresponds to higher precedence."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionMatcher": {
          "type": "string",
          "description": "CEL expression for matching on session criteria."
        },
        "tlsInspectionEnabled": {
          "type": "boolean",
          "description": "Optional. Flag to enable TLS inspection of traffic matching on , can only be true if the parent GatewaySecurityPolicy references a TLSInspectionConfig."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the rule was updated."
        }
      },
      "type": "object",
      "required": [
        "applicationMatcher",
        "basicProfile",
        "createTime",
        "description",
        "enabled",
        "gatewaySecurityPolicyId",
        "location",
        "name",
        "priority",
        "project",
        "sessionMatcher",
        "tlsInspectionEnabled",
        "updateTime"
      ],
      "inputProperties": {
        "applicationMatcher": {
          "type": "string",
          "description": "Optional. CEL expression for matching on L7/application level criteria."
        },
        "basicProfile": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:RuleBasicProfile",
          "description": "Profile which tells what the primitive action should be."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether the rule is enforced."
        },
        "gatewaySecurityPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "gatewaySecurityPolicyRuleId": {
          "type": "string",
          "description": "The ID to use for the rule, which will become the final component of the rule's resource name. This value should be 4-63 characters, and valid characters are /a-z-/."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the resource. ame is the full resource name so projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy}/rules/{rule} rule should match the pattern: (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the rule. Lower number corresponds to higher precedence."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sessionMatcher": {
          "type": "string",
          "description": "CEL expression for matching on session criteria."
        },
        "tlsInspectionEnabled": {
          "type": "boolean",
          "description": "Optional. Flag to enable TLS inspection of traffic matching on , can only be true if the parent GatewaySecurityPolicy references a TLSInspectionConfig."
        }
      },
      "requiredInputs": [
        "basicProfile",
        "enabled",
        "gatewaySecurityPolicyId",
        "name",
        "priority",
        "sessionMatcher"
      ]
    },
    "google-native:networksecurity/v1beta1:SecurityProfile": {
      "description": "Creates a new SecurityProfile in a given organization and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Resource creation timestamp."
        },
        "description": {
          "type": "string",
          "description": "Optional. An optional description of the profile. Max length 512 characters."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Identifier. Name of the SecurityProfile resource. It matches pattern `projects|organizations/*/locations/{location}/securityProfiles/{security_profile}`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securityProfileId": {
          "type": "string",
          "description": "Required. Short name of the SecurityProfile resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"security_profile1\".",
          "replaceOnChanges": true
        },
        "threatPreventionProfile": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ThreatPreventionProfileResponse",
          "description": "The threat prevention configuration for the SecurityProfile."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The single ProfileType that the SecurityProfile resource configures."
        },
        "updateTime": {
          "type": "string",
          "description": "Last resource update timestamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "organizationId",
        "securityProfileId",
        "threatPreventionProfile",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. An optional description of the profile. Max length 512 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Identifier. Name of the SecurityProfile resource. It matches pattern `projects|organizations/*/locations/{location}/securityProfiles/{security_profile}`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securityProfileId": {
          "type": "string",
          "description": "Required. Short name of the SecurityProfile resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"security_profile1\".",
          "replaceOnChanges": true
        },
        "threatPreventionProfile": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ThreatPreventionProfile",
          "description": "The threat prevention configuration for the SecurityProfile."
        },
        "type": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:SecurityProfileType",
          "description": "Immutable. The single ProfileType that the SecurityProfile resource configures."
        }
      },
      "requiredInputs": [
        "organizationId",
        "securityProfileId"
      ]
    },
    "google-native:networksecurity/v1beta1:SecurityProfileGroup": {
      "description": "Creates a new SecurityProfileGroup in a given organization and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Resource creation timestamp."
        },
        "description": {
          "type": "string",
          "description": "Optional. An optional description of the profile group. Max length 2048 characters."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Identifier. Name of the SecurityProfileGroup resource. It matches pattern `projects|organizations/*/locations/{location}/securityProfileGroups/{security_profile_group}`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securityProfileGroupId": {
          "type": "string",
          "description": "Required. Short name of the SecurityProfileGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"security_profile_group1\".",
          "replaceOnChanges": true
        },
        "threatPreventionProfile": {
          "type": "string",
          "description": "Optional. Reference to a SecurityProfile with the threat prevention configuration for the SecurityProfileGroup."
        },
        "updateTime": {
          "type": "string",
          "description": "Last resource update timestamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "labels",
        "location",
        "name",
        "organizationId",
        "securityProfileGroupId",
        "threatPreventionProfile",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. An optional description of the profile group. Max length 2048 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Identifier. Name of the SecurityProfileGroup resource. It matches pattern `projects|organizations/*/locations/{location}/securityProfileGroups/{security_profile_group}`."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "securityProfileGroupId": {
          "type": "string",
          "description": "Required. Short name of the SecurityProfileGroup resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"security_profile_group1\".",
          "replaceOnChanges": true
        },
        "threatPreventionProfile": {
          "type": "string",
          "description": "Optional. Reference to a SecurityProfile with the threat prevention configuration for the SecurityProfileGroup."
        }
      },
      "requiredInputs": [
        "organizationId",
        "securityProfileGroupId"
      ]
    },
    "google-native:networksecurity/v1beta1:ServerTlsPolicy": {
      "description": "Creates a new ServerTlsPolicy in a given project and location.",
      "properties": {
        "allowOpen": {
          "type": "boolean",
          "description": "This field applies only for Traffic Director policies. It is must be set to false for external HTTPS load balancer policies. Determines if server allows plaintext connections. If set to true, server allows plain text connections. By default, it is set to false. This setting is not exclusive of other encryption modes. For example, if `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections. See documentation of other encryption modes to confirm compatibility. Consider using it if you wish to upgrade in place your deployment to TLS while having mixed TLS and non-TLS traffic reaching port :80."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of label tags associated with the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mtlsPolicy": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:MTLSPolicyResponse",
          "description": "This field is required if the policy is used with external HTTPS load balancers. This field can be empty for Traffic Director. Defines a mechanism to provision peer validation certificates for peer to peer authentication (Mutual TLS - mTLS). If not specified, client certificate will not be requested. The connection is treated as TLS and not mTLS. If `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections."
        },
        "name": {
          "type": "string",
          "description": "Name of the ServerTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/serverTlsPolicies/{server_tls_policy}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverCertificate": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1CertificateProviderResponse",
          "description": "Optional if policy is to be used with Traffic Director. For external HTTPS load balancer must be empty. Defines a mechanism to provision server identity (public and private keys). Cannot be combined with `allow_open` as a permissive mode that allows both plain text and TLS is not supported."
        },
        "serverTlsPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ServerTlsPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"server_mtls_policy\".",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "allowOpen",
        "createTime",
        "description",
        "labels",
        "location",
        "mtlsPolicy",
        "name",
        "project",
        "serverCertificate",
        "serverTlsPolicyId",
        "updateTime"
      ],
      "inputProperties": {
        "allowOpen": {
          "type": "boolean",
          "description": "This field applies only for Traffic Director policies. It is must be set to false for external HTTPS load balancer policies. Determines if server allows plaintext connections. If set to true, server allows plain text connections. By default, it is set to false. This setting is not exclusive of other encryption modes. For example, if `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections. See documentation of other encryption modes to confirm compatibility. Consider using it if you wish to upgrade in place your deployment to TLS while having mixed TLS and non-TLS traffic reaching port :80."
        },
        "description": {
          "type": "string",
          "description": "Free-text description of the resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Set of label tags associated with the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mtlsPolicy": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:MTLSPolicy",
          "description": "This field is required if the policy is used with external HTTPS load balancers. This field can be empty for Traffic Director. Defines a mechanism to provision peer validation certificates for peer to peer authentication (Mutual TLS - mTLS). If not specified, client certificate will not be requested. The connection is treated as TLS and not mTLS. If `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections."
        },
        "name": {
          "type": "string",
          "description": "Name of the ServerTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/serverTlsPolicies/{server_tls_policy}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverCertificate": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1CertificateProvider",
          "description": "Optional if policy is to be used with Traffic Director. For external HTTPS load balancer must be empty. Defines a mechanism to provision server identity (public and private keys). Cannot be combined with `allow_open` as a permissive mode that allows both plain text and TLS is not supported."
        },
        "serverTlsPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ServerTlsPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"server_mtls_policy\".",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "serverTlsPolicyId"
      ]
    },
    "google-native:networksecurity/v1beta1:ServerTlsPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:ServerTlsPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networksecurity/v1beta1:ServerTlsPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverTlsPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serverTlsPolicyId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverTlsPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serverTlsPolicyId"
      ]
    },
    "google-native:networksecurity/v1beta1:TlsInspectionPolicy": {
      "description": "Creates a new TlsInspectionPolicy in a given project and location.",
      "properties": {
        "caPool": {
          "type": "string",
          "description": "A CA pool resource used to issue interception certificates. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\"."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "customTlsFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of custom TLS cipher suites selected. This field is valid only if the selected tls_feature_profile is CUSTOM. The compute.SslPoliciesService.ListAvailableFeatures method returns the set of features that can be specified in this list. Note that Secure Web Proxy does not yet honor this field."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "excludePublicCaSet": {
          "type": "boolean",
          "description": "Optional. If FALSE (the default), use our default set of public CAs in addition to any CAs specified in trust_config. These public CAs are currently based on the Mozilla Root Program and are subject to change over time. If TRUE, do not accept our default set of public CAs. Only CAs specified in trust_config will be accepted. This defaults to FALSE (use public CAs in addition to trust_config) for backwards compatibility, but trusting public root CAs is *not recommended* unless the traffic in question is outbound to public web servers. When possible, prefer setting this to \"false\" and explicitly specifying trusted CAs and certificates in a TrustConfig. Note that Secure Web Proxy does not yet honor this field."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "minTlsVersion": {
          "type": "string",
          "description": "Optional. Minimum TLS version that the firewall should use when negotiating connections with both clients and servers. If this is not set, then the default value is to allow the broadest set of clients and servers (TLS 1.0 or higher). Setting this to more restrictive values may improve security, but may also prevent the firewall from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/tlsInspectionPolicies/{tls_inspection_policy} tls_inspection_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tlsFeatureProfile": {
          "type": "string",
          "description": "Optional. The selected Profile. If this is not set, then the default value is to allow the broadest set of clients and servers (\"PROFILE_COMPATIBLE\"). Setting this to more restrictive values may improve security, but may also prevent the TLS inspection proxy from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field."
        },
        "tlsInspectionPolicyId": {
          "type": "string",
          "description": "Required. Short name of the TlsInspectionPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"tls_inspection_policy1\".",
          "replaceOnChanges": true
        },
        "trustConfig": {
          "type": "string",
          "description": "Optional. A TrustConfig resource used when making a connection to the TLS server. This is a relative resource path following the form \"projects/{project}/locations/{location}/trustConfigs/{trust_config}\". This is necessary to intercept TLS connections to servers with certificates signed by a private CA or self-signed certificates. Note that Secure Web Proxy does not yet honor this field."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "caPool",
        "createTime",
        "customTlsFeatures",
        "description",
        "excludePublicCaSet",
        "location",
        "minTlsVersion",
        "name",
        "project",
        "tlsFeatureProfile",
        "tlsInspectionPolicyId",
        "trustConfig",
        "updateTime"
      ],
      "inputProperties": {
        "caPool": {
          "type": "string",
          "description": "A CA pool resource used to issue interception certificates. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\"."
        },
        "customTlsFeatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of custom TLS cipher suites selected. This field is valid only if the selected tls_feature_profile is CUSTOM. The compute.SslPoliciesService.ListAvailableFeatures method returns the set of features that can be specified in this list. Note that Secure Web Proxy does not yet honor this field."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "excludePublicCaSet": {
          "type": "boolean",
          "description": "Optional. If FALSE (the default), use our default set of public CAs in addition to any CAs specified in trust_config. These public CAs are currently based on the Mozilla Root Program and are subject to change over time. If TRUE, do not accept our default set of public CAs. Only CAs specified in trust_config will be accepted. This defaults to FALSE (use public CAs in addition to trust_config) for backwards compatibility, but trusting public root CAs is *not recommended* unless the traffic in question is outbound to public web servers. When possible, prefer setting this to \"false\" and explicitly specifying trusted CAs and certificates in a TrustConfig. Note that Secure Web Proxy does not yet honor this field."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "minTlsVersion": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:TlsInspectionPolicyMinTlsVersion",
          "description": "Optional. Minimum TLS version that the firewall should use when negotiating connections with both clients and servers. If this is not set, then the default value is to allow the broadest set of clients and servers (TLS 1.0 or higher). Setting this to more restrictive values may improve security, but may also prevent the firewall from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field."
        },
        "name": {
          "type": "string",
          "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/tlsInspectionPolicies/{tls_inspection_policy} tls_inspection_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tlsFeatureProfile": {
          "$ref": "#/types/google-native:networksecurity%2Fv1beta1:TlsInspectionPolicyTlsFeatureProfile",
          "description": "Optional. The selected Profile. If this is not set, then the default value is to allow the broadest set of clients and servers (\"PROFILE_COMPATIBLE\"). Setting this to more restrictive values may improve security, but may also prevent the TLS inspection proxy from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field."
        },
        "tlsInspectionPolicyId": {
          "type": "string",
          "description": "Required. Short name of the TlsInspectionPolicy resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"tls_inspection_policy1\".",
          "replaceOnChanges": true
        },
        "trustConfig": {
          "type": "string",
          "description": "Optional. A TrustConfig resource used when making a connection to the TLS server. This is a relative resource path following the form \"projects/{project}/locations/{location}/trustConfigs/{trust_config}\". This is necessary to intercept TLS connections to servers with certificates signed by a private CA or self-signed certificates. Note that Secure Web Proxy does not yet honor this field."
        }
      },
      "requiredInputs": [
        "caPool",
        "tlsInspectionPolicyId"
      ]
    },
    "google-native:networksecurity/v1beta1:UrlList": {
      "description": "Creates a new UrlList in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time when the security policy was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource provided by the user. Name is of the form projects/{project}/locations/{location}/urlLists/{url_list} url_list should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "Time when the security policy was updated."
        },
        "urlListId": {
          "type": "string",
          "description": "Required. Short name of the UrlList resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"url_list\".",
          "replaceOnChanges": true
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "FQDNs and URLs."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "name",
        "project",
        "updateTime",
        "urlListId",
        "values"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Free-text description of the resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the resource provided by the user. Name is of the form projects/{project}/locations/{location}/urlLists/{url_list} url_list should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "urlListId": {
          "type": "string",
          "description": "Required. Short name of the UrlList resource to be created. This value should be 1-63 characters long, containing only letters, numbers, hyphens, and underscores, and should not start with a number. E.g. \"url_list\".",
          "replaceOnChanges": true
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "FQDNs and URLs."
        }
      },
      "requiredInputs": [
        "urlListId",
        "values"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheKeysetIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheKeysetIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheKeysetIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "edgeCacheKeysetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "edgeCacheKeysetId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "edgeCacheKeysetId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "edgeCacheKeysetId"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheOriginIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheOriginIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheOriginIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "edgeCacheOriginId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "edgeCacheOriginId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "edgeCacheOriginId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "edgeCacheOriginId"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:EdgeCacheServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "edgeCacheServiceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "edgeCacheServiceId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "edgeCacheServiceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "edgeCacheServiceId"
      ]
    },
    "google-native:networkservices/v1:EndpointPolicy": {
      "description": "Creates a new EndpointPolicy in a given project and location.",
      "properties": {
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. This field specifies the URL of AuthorizationPolicy resource that applies authorization policies to the inbound traffic at the matched endpoints. Refer to Authorization. If this field is not specified, authorization is disabled(no authz checks) for this endpoint."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a ClientTlsPolicy resource. ClientTlsPolicy can be set to specify the authentication for traffic from the proxy to the actual endpoints. More specifically, it is applied to the outgoing traffic from the proxy to the endpoint. This is typically used for sidecar model where the proxy identifies itself as endpoint to the control plane, with the connection between sidecar and endpoint requiring authentication. If this field is not set, authentication is disabled(open). Applicable only when EndpointPolicyType is SIDECAR_PROXY."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "endpointMatcher": {
          "$ref": "#/types/google-native:networkservices%2Fv1:EndpointMatcherResponse",
          "description": "A matcher that selects endpoints to which the policies should be applied."
        },
        "endpointPolicyId": {
          "type": "string",
          "description": "Required. Short name of the EndpointPolicy resource to be created. E.g. \"CustomECS\".",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the EndpointPolicy resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the EndpointPolicy resource. It matches pattern `projects/{project}/locations/global/endpointPolicies/{endpoint_policy}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to ServerTlsPolicy resource. ServerTlsPolicy is used to determine the authentication policy to be applied to terminate the inbound traffic at the identified backends. If this field is not set, authentication is disabled(open) for this endpoint."
        },
        "trafficPortSelector": {
          "$ref": "#/types/google-native:networkservices%2Fv1:TrafficPortSelectorResponse",
          "description": "Optional. Port selector for the (matched) endpoints. If no port selector is provided, the matched config is applied to all ports."
        },
        "type": {
          "type": "string",
          "description": "The type of endpoint policy. This is primarily used to validate the configuration."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "authorizationPolicy",
        "clientTlsPolicy",
        "createTime",
        "description",
        "endpointMatcher",
        "endpointPolicyId",
        "labels",
        "location",
        "name",
        "project",
        "serverTlsPolicy",
        "trafficPortSelector",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. This field specifies the URL of AuthorizationPolicy resource that applies authorization policies to the inbound traffic at the matched endpoints. Refer to Authorization. If this field is not specified, authorization is disabled(no authz checks) for this endpoint."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a ClientTlsPolicy resource. ClientTlsPolicy can be set to specify the authentication for traffic from the proxy to the actual endpoints. More specifically, it is applied to the outgoing traffic from the proxy to the endpoint. This is typically used for sidecar model where the proxy identifies itself as endpoint to the control plane, with the connection between sidecar and endpoint requiring authentication. If this field is not set, authentication is disabled(open). Applicable only when EndpointPolicyType is SIDECAR_PROXY."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "endpointMatcher": {
          "$ref": "#/types/google-native:networkservices%2Fv1:EndpointMatcher",
          "description": "A matcher that selects endpoints to which the policies should be applied."
        },
        "endpointPolicyId": {
          "type": "string",
          "description": "Required. Short name of the EndpointPolicy resource to be created. E.g. \"CustomECS\".",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the EndpointPolicy resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the EndpointPolicy resource. It matches pattern `projects/{project}/locations/global/endpointPolicies/{endpoint_policy}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to ServerTlsPolicy resource. ServerTlsPolicy is used to determine the authentication policy to be applied to terminate the inbound traffic at the identified backends. If this field is not set, authentication is disabled(open) for this endpoint."
        },
        "trafficPortSelector": {
          "$ref": "#/types/google-native:networkservices%2Fv1:TrafficPortSelector",
          "description": "Optional. Port selector for the (matched) endpoints. If no port selector is provided, the matched config is applied to all ports."
        },
        "type": {
          "$ref": "#/types/google-native:networkservices%2Fv1:EndpointPolicyType",
          "description": "The type of endpoint policy. This is primarily used to validate the configuration."
        }
      },
      "requiredInputs": [
        "endpointMatcher",
        "endpointPolicyId",
        "type"
      ]
    },
    "google-native:networkservices/v1:EndpointPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:EndpointPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:EndpointPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "endpointPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "endpointPolicyId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "endpointPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "endpointPolicyId"
      ]
    },
    "google-native:networkservices/v1:Gateway": {
      "description": "Creates a new Gateway in a given project and location.",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Zero or one IPv4 or IPv6 address on which the Gateway will receive the traffic. When no address is provided, an IP from the subnetwork is allocated This field only applies to gateways of type 'SECURE_WEB_GATEWAY'. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6."
        },
        "certificateUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A fully-qualified Certificates URL reference. The proxy presents a Certificate (selected based on SNI) when establishing a TLS connection. This feature only applies to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gatewayId": {
          "type": "string",
          "description": "Required. Short name of the Gateway resource to be created.",
          "replaceOnChanges": true
        },
        "gatewaySecurityPolicy": {
          "type": "string",
          "description": "Optional. A fully-qualified GatewaySecurityPolicy URL reference. Defines how a server should apply security policy to inbound (VM to Proxy) initiated connections. For example: `projects/*/locations/*/gatewaySecurityPolicies/swg-policy`. This policy is specific to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the Gateway resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Gateway resource. It matches pattern `projects/*/locations/*/gateways/`."
        },
        "network": {
          "type": "string",
          "description": "Optional. The relative resource name identifying the VPC network that is using this configuration. For example: `projects/*/global/networks/network-1`. Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "One or more port numbers (1-65535), on which the Gateway will receive traffic. The proxy binds to the specified ports. Gateways of type 'SECURE_WEB_GATEWAY' are limited to 1 port. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6 and support multiple ports."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Optional. Scope determines how configuration across multiple Gateway instances are merged. The configuration for multiple Gateway instances with the same scope will be merged as presented as a single coniguration to the proxy/load balancer. Max length 64 characters. Scope should start with a letter and can only have letters, numbers, hyphens."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A fully-qualified ServerTLSPolicy URL reference. Specifies how TLS traffic is terminated. If empty, TLS termination is disabled."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. The relative resource name identifying the subnetwork in which this SWG is allocated. For example: `projects/*/regions/us-central1/subnetworks/network-1` Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY\"."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "certificateUrls",
        "createTime",
        "description",
        "gatewayId",
        "gatewaySecurityPolicy",
        "labels",
        "location",
        "name",
        "network",
        "ports",
        "project",
        "scope",
        "selfLink",
        "serverTlsPolicy",
        "subnetwork",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Zero or one IPv4 or IPv6 address on which the Gateway will receive the traffic. When no address is provided, an IP from the subnetwork is allocated This field only applies to gateways of type 'SECURE_WEB_GATEWAY'. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6."
        },
        "certificateUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A fully-qualified Certificates URL reference. The proxy presents a Certificate (selected based on SNI) when establishing a TLS connection. This feature only applies to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gatewayId": {
          "type": "string",
          "description": "Required. Short name of the Gateway resource to be created.",
          "replaceOnChanges": true
        },
        "gatewaySecurityPolicy": {
          "type": "string",
          "description": "Optional. A fully-qualified GatewaySecurityPolicy URL reference. Defines how a server should apply security policy to inbound (VM to Proxy) initiated connections. For example: `projects/*/locations/*/gatewaySecurityPolicies/swg-policy`. This policy is specific to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the Gateway resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Gateway resource. It matches pattern `projects/*/locations/*/gateways/`."
        },
        "network": {
          "type": "string",
          "description": "Optional. The relative resource name identifying the VPC network that is using this configuration. For example: `projects/*/global/networks/network-1`. Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "One or more port numbers (1-65535), on which the Gateway will receive traffic. The proxy binds to the specified ports. Gateways of type 'SECURE_WEB_GATEWAY' are limited to 1 port. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6 and support multiple ports."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Optional. Scope determines how configuration across multiple Gateway instances are merged. The configuration for multiple Gateway instances with the same scope will be merged as presented as a single coniguration to the proxy/load balancer. Max length 64 characters. Scope should start with a letter and can only have letters, numbers, hyphens."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A fully-qualified ServerTLSPolicy URL reference. Specifies how TLS traffic is terminated. If empty, TLS termination is disabled."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. The relative resource name identifying the subnetwork in which this SWG is allocated. For example: `projects/*/regions/us-central1/subnetworks/network-1` Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY\"."
        },
        "type": {
          "$ref": "#/types/google-native:networkservices%2Fv1:GatewayType",
          "description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned."
        }
      },
      "requiredInputs": [
        "gatewayId",
        "ports"
      ]
    },
    "google-native:networkservices/v1:GatewayIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:GatewayIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:GatewayIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "gatewayId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "gatewayId"
      ]
    },
    "google-native:networkservices/v1:GrpcRoute": {
      "description": "Creates a new GrpcRoute in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "grpcRouteId": {
          "type": "string",
          "description": "Required. Short name of the GrpcRoute resource to be created.",
          "replaceOnChanges": true
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Service hostnames with an optional port for which this route describes traffic. Format: [:] Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same route, it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`. If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. \"xds:///service:123\"), otherwise they must supply the URI without a port (i.e. \"xds:///service\")."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the GrpcRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/`"
        },
        "name": {
          "type": "string",
          "description": "Name of the GrpcRoute resource. It matches pattern `projects/*/locations/global/grpcRoutes/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRouteRuleResponse"
          },
          "description": "A list of detailed rules defining how to route traffic. Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gateways",
        "grpcRouteId",
        "hostnames",
        "labels",
        "location",
        "meshes",
        "name",
        "project",
        "rules",
        "selfLink",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "grpcRouteId": {
          "type": "string",
          "description": "Required. Short name of the GrpcRoute resource to be created.",
          "replaceOnChanges": true
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Service hostnames with an optional port for which this route describes traffic. Format: [:] Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same route, it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`. If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. \"xds:///service:123\"), otherwise they must supply the URI without a port (i.e. \"xds:///service\")."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the GrpcRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/`"
        },
        "name": {
          "type": "string",
          "description": "Name of the GrpcRoute resource. It matches pattern `projects/*/locations/global/grpcRoutes/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRouteRule"
          },
          "description": "A list of detailed rules defining how to route traffic. Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied."
        }
      },
      "requiredInputs": [
        "grpcRouteId",
        "hostnames",
        "rules"
      ]
    },
    "google-native:networkservices/v1:HttpRoute": {
      "description": "Creates a new HttpRoute in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this HttpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Hostnames define a set of hosts that should match against the HTTP host header to select a HttpRoute to process the request. Hostname is the fully qualified domain name of a network host, as defined by RFC 1123 with the exception that: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateways must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same Mesh (or Gateways under the same scope), it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`."
        },
        "httpRouteId": {
          "type": "string",
          "description": "Required. Short name of the HttpRoute resource to be created.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the HttpRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this HttpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the HttpRoute resource. It matches pattern `projects/*/locations/global/httpRoutes/http_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRouteRuleResponse"
          },
          "description": "Rules that define how traffic is routed and handled. Rules will be matched sequentially based on the RouteMatch specified for the rule."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gateways",
        "hostnames",
        "httpRouteId",
        "labels",
        "location",
        "meshes",
        "name",
        "project",
        "rules",
        "selfLink",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this HttpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Hostnames define a set of hosts that should match against the HTTP host header to select a HttpRoute to process the request. Hostname is the fully qualified domain name of a network host, as defined by RFC 1123 with the exception that: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateways must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same Mesh (or Gateways under the same scope), it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`."
        },
        "httpRouteId": {
          "type": "string",
          "description": "Required. Short name of the HttpRoute resource to be created.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the HttpRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this HttpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the HttpRoute resource. It matches pattern `projects/*/locations/global/httpRoutes/http_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRouteRule"
          },
          "description": "Rules that define how traffic is routed and handled. Rules will be matched sequentially based on the RouteMatch specified for the rule."
        }
      },
      "requiredInputs": [
        "hostnames",
        "httpRouteId",
        "rules"
      ]
    },
    "google-native:networkservices/v1:Mesh": {
      "description": "Creates a new Mesh in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "interceptionPort": {
          "type": "integer",
          "description": "Optional. If set to a valid TCP port (1-65535), instructs the SIDECAR proxy to listen on the specified port of localhost (127.0.0.1) address. The SIDECAR proxy will expect all traffic to be redirected to this port regardless of its actual ip:port destination. If unset, a port '15001' is used as the interception port. This is applicable only for sidecar proxy deployments."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the Mesh resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshId": {
          "type": "string",
          "description": "Required. Short name of the Mesh resource to be created.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Mesh resource. It matches pattern `projects/*/locations/global/meshes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "interceptionPort",
        "labels",
        "location",
        "meshId",
        "name",
        "project",
        "selfLink",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "interceptionPort": {
          "type": "integer",
          "description": "Optional. If set to a valid TCP port (1-65535), instructs the SIDECAR proxy to listen on the specified port of localhost (127.0.0.1) address. The SIDECAR proxy will expect all traffic to be redirected to this port regardless of its actual ip:port destination. If unset, a port '15001' is used as the interception port. This is applicable only for sidecar proxy deployments."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the Mesh resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshId": {
          "type": "string",
          "description": "Required. Short name of the Mesh resource to be created.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Mesh resource. It matches pattern `projects/*/locations/global/meshes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "meshId"
      ]
    },
    "google-native:networkservices/v1:MeshIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:MeshIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:MeshIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "meshId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "meshId"
      ]
    },
    "google-native:networkservices/v1:ServiceBinding": {
      "description": "Creates a new ServiceBinding in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the ServiceBinding resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ServiceBinding resource. It matches pattern `projects/*/locations/global/serviceBindings/service_binding_name`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "service": {
          "type": "string",
          "description": "The full Service Directory Service name of the format projects/*/locations/*/namespaces/*/services/*"
        },
        "serviceBindingId": {
          "type": "string",
          "description": "Required. Short name of the ServiceBinding resource to be created.",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "description": "The unique identifier of the Service Directory Service against which the Service Binding resource is validated. This is populated when the Service Binding resource is used in another resource (like Backend Service). This is of the UUID4 format."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "labels",
        "location",
        "name",
        "project",
        "service",
        "serviceBindingId",
        "serviceId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the ServiceBinding resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ServiceBinding resource. It matches pattern `projects/*/locations/global/serviceBindings/service_binding_name`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "service": {
          "type": "string",
          "description": "The full Service Directory Service name of the format projects/*/locations/*/namespaces/*/services/*"
        },
        "serviceBindingId": {
          "type": "string",
          "description": "Required. Short name of the ServiceBinding resource to be created.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "service",
        "serviceBindingId"
      ]
    },
    "google-native:networkservices/v1:ServiceBindingIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:ServiceBindingIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1:ServiceBindingIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceBindingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceBindingId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceBindingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceBindingId"
      ]
    },
    "google-native:networkservices/v1:TcpRoute": {
      "description": "Creates a new TcpRoute in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this TcpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the TcpRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this TcpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the TcpRoute resource. It matches pattern `projects/*/locations/global/tcpRoutes/tcp_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteRuleResponse"
          },
          "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "tcpRouteId": {
          "type": "string",
          "description": "Required. Short name of the TcpRoute resource to be created.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gateways",
        "labels",
        "location",
        "meshes",
        "name",
        "project",
        "rules",
        "selfLink",
        "tcpRouteId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this TcpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the TcpRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this TcpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the TcpRoute resource. It matches pattern `projects/*/locations/global/tcpRoutes/tcp_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteRule"
          },
          "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match."
        },
        "tcpRouteId": {
          "type": "string",
          "description": "Required. Short name of the TcpRoute resource to be created.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "rules",
        "tcpRouteId"
      ]
    },
    "google-native:networkservices/v1:TlsRoute": {
      "description": "Creates a new TlsRoute in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this TlsRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the TlsRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this TlsRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the TlsRoute resource. It matches pattern `projects/*/locations/global/tlsRoutes/tls_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteRuleResponse"
          },
          "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "tlsRouteId": {
          "type": "string",
          "description": "Required. Short name of the TlsRoute resource to be created.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gateways",
        "labels",
        "location",
        "meshes",
        "name",
        "project",
        "rules",
        "selfLink",
        "tlsRouteId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this TlsRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the TlsRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this TlsRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the TlsRoute resource. It matches pattern `projects/*/locations/global/tlsRoutes/tls_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteRule"
          },
          "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match."
        },
        "tlsRouteId": {
          "type": "string",
          "description": "Required. Short name of the TlsRoute resource to be created.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "rules",
        "tlsRouteId"
      ]
    },
    "google-native:networkservices/v1beta1:EndpointPolicy": {
      "description": "Creates a new EndpointPolicy in a given project and location.",
      "properties": {
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. This field specifies the URL of AuthorizationPolicy resource that applies authorization policies to the inbound traffic at the matched endpoints. Refer to Authorization. If this field is not specified, authorization is disabled(no authz checks) for this endpoint."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a ClientTlsPolicy resource. ClientTlsPolicy can be set to specify the authentication for traffic from the proxy to the actual endpoints. More specifically, it is applied to the outgoing traffic from the proxy to the endpoint. This is typically used for sidecar model where the proxy identifies itself as endpoint to the control plane, with the connection between sidecar and endpoint requiring authentication. If this field is not set, authentication is disabled(open). Applicable only when EndpointPolicyType is SIDECAR_PROXY."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "endpointMatcher": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:EndpointMatcherResponse",
          "description": "A matcher that selects endpoints to which the policies should be applied."
        },
        "endpointPolicyId": {
          "type": "string",
          "description": "Required. Short name of the EndpointPolicy resource to be created. E.g. \"CustomECS\".",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the EndpointPolicy resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the EndpointPolicy resource. It matches pattern `projects/{project}/locations/global/endpointPolicies/{endpoint_policy}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to ServerTlsPolicy resource. ServerTlsPolicy is used to determine the authentication policy to be applied to terminate the inbound traffic at the identified backends. If this field is not set, authentication is disabled(open) for this endpoint."
        },
        "trafficPortSelector": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:TrafficPortSelectorResponse",
          "description": "Optional. Port selector for the (matched) endpoints. If no port selector is provided, the matched config is applied to all ports."
        },
        "type": {
          "type": "string",
          "description": "The type of endpoint policy. This is primarily used to validate the configuration."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "authorizationPolicy",
        "clientTlsPolicy",
        "createTime",
        "description",
        "endpointMatcher",
        "endpointPolicyId",
        "labels",
        "location",
        "name",
        "project",
        "serverTlsPolicy",
        "trafficPortSelector",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "authorizationPolicy": {
          "type": "string",
          "description": "Optional. This field specifies the URL of AuthorizationPolicy resource that applies authorization policies to the inbound traffic at the matched endpoints. Refer to Authorization. If this field is not specified, authorization is disabled(no authz checks) for this endpoint."
        },
        "clientTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to a ClientTlsPolicy resource. ClientTlsPolicy can be set to specify the authentication for traffic from the proxy to the actual endpoints. More specifically, it is applied to the outgoing traffic from the proxy to the endpoint. This is typically used for sidecar model where the proxy identifies itself as endpoint to the control plane, with the connection between sidecar and endpoint requiring authentication. If this field is not set, authentication is disabled(open). Applicable only when EndpointPolicyType is SIDECAR_PROXY."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "endpointMatcher": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:EndpointMatcher",
          "description": "A matcher that selects endpoints to which the policies should be applied."
        },
        "endpointPolicyId": {
          "type": "string",
          "description": "Required. Short name of the EndpointPolicy resource to be created. E.g. \"CustomECS\".",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the EndpointPolicy resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the EndpointPolicy resource. It matches pattern `projects/{project}/locations/global/endpointPolicies/{endpoint_policy}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A URL referring to ServerTlsPolicy resource. ServerTlsPolicy is used to determine the authentication policy to be applied to terminate the inbound traffic at the identified backends. If this field is not set, authentication is disabled(open) for this endpoint."
        },
        "trafficPortSelector": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:TrafficPortSelector",
          "description": "Optional. Port selector for the (matched) endpoints. If no port selector is provided, the matched config is applied to all ports."
        },
        "type": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:EndpointPolicyType",
          "description": "The type of endpoint policy. This is primarily used to validate the configuration."
        }
      },
      "requiredInputs": [
        "endpointMatcher",
        "endpointPolicyId",
        "type"
      ]
    },
    "google-native:networkservices/v1beta1:EndpointPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:EndpointPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:EndpointPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "endpointPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "endpointPolicyId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "endpointPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "endpointPolicyId"
      ]
    },
    "google-native:networkservices/v1beta1:Gateway": {
      "description": "Creates a new Gateway in a given project and location.",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Zero or one IPv4 or IPv6 address on which the Gateway will receive the traffic. When no address is provided, an IP from the subnetwork is allocated This field only applies to gateways of type 'SECURE_WEB_GATEWAY'. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6."
        },
        "certificateUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A fully-qualified Certificates URL reference. The proxy presents a Certificate (selected based on SNI) when establishing a TLS connection. This feature only applies to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gatewayId": {
          "type": "string",
          "description": "Required. Short name of the Gateway resource to be created.",
          "replaceOnChanges": true
        },
        "gatewaySecurityPolicy": {
          "type": "string",
          "description": "Optional. A fully-qualified GatewaySecurityPolicy URL reference. Defines how a server should apply security policy to inbound (VM to Proxy) initiated connections. For example: `projects/*/locations/*/gatewaySecurityPolicies/swg-policy`. This policy is specific to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the Gateway resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Gateway resource. It matches pattern `projects/*/locations/*/gateways/`."
        },
        "network": {
          "type": "string",
          "description": "Optional. The relative resource name identifying the VPC network that is using this configuration. For example: `projects/*/global/networks/network-1`. Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "One or more port numbers (1-65535), on which the Gateway will receive traffic. The proxy binds to the specified ports. Gateways of type 'SECURE_WEB_GATEWAY' are limited to 1 port. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6 and support multiple ports."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Optional. Scope determines how configuration across multiple Gateway instances are merged. The configuration for multiple Gateway instances with the same scope will be merged as presented as a single coniguration to the proxy/load balancer. Max length 64 characters. Scope should start with a letter and can only have letters, numbers, hyphens."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A fully-qualified ServerTLSPolicy URL reference. Specifies how TLS traffic is terminated. If empty, TLS termination is disabled."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. The relative resource name identifying the subnetwork in which this SWG is allocated. For example: `projects/*/regions/us-central1/subnetworks/network-1` Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY\"."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "addresses",
        "certificateUrls",
        "createTime",
        "description",
        "gatewayId",
        "gatewaySecurityPolicy",
        "labels",
        "location",
        "name",
        "network",
        "ports",
        "project",
        "scope",
        "selfLink",
        "serverTlsPolicy",
        "subnetwork",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Zero or one IPv4 or IPv6 address on which the Gateway will receive the traffic. When no address is provided, an IP from the subnetwork is allocated This field only applies to gateways of type 'SECURE_WEB_GATEWAY'. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6."
        },
        "certificateUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A fully-qualified Certificates URL reference. The proxy presents a Certificate (selected based on SNI) when establishing a TLS connection. This feature only applies to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gatewayId": {
          "type": "string",
          "description": "Required. Short name of the Gateway resource to be created.",
          "replaceOnChanges": true
        },
        "gatewaySecurityPolicy": {
          "type": "string",
          "description": "Optional. A fully-qualified GatewaySecurityPolicy URL reference. Defines how a server should apply security policy to inbound (VM to Proxy) initiated connections. For example: `projects/*/locations/*/gatewaySecurityPolicies/swg-policy`. This policy is specific to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the Gateway resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Gateway resource. It matches pattern `projects/*/locations/*/gateways/`."
        },
        "network": {
          "type": "string",
          "description": "Optional. The relative resource name identifying the VPC network that is using this configuration. For example: `projects/*/global/networks/network-1`. Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY'."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "One or more port numbers (1-65535), on which the Gateway will receive traffic. The proxy binds to the specified ports. Gateways of type 'SECURE_WEB_GATEWAY' are limited to 1 port. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6 and support multiple ports."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scope": {
          "type": "string",
          "description": "Optional. Scope determines how configuration across multiple Gateway instances are merged. The configuration for multiple Gateway instances with the same scope will be merged as presented as a single coniguration to the proxy/load balancer. Max length 64 characters. Scope should start with a letter and can only have letters, numbers, hyphens."
        },
        "serverTlsPolicy": {
          "type": "string",
          "description": "Optional. A fully-qualified ServerTLSPolicy URL reference. Specifies how TLS traffic is terminated. If empty, TLS termination is disabled."
        },
        "subnetwork": {
          "type": "string",
          "description": "Optional. The relative resource name identifying the subnetwork in which this SWG is allocated. For example: `projects/*/regions/us-central1/subnetworks/network-1` Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY\"."
        },
        "type": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:GatewayType",
          "description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned."
        }
      },
      "requiredInputs": [
        "gatewayId",
        "ports"
      ]
    },
    "google-native:networkservices/v1beta1:GatewayIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:GatewayIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:GatewayIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "gatewayId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "gatewayId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "gatewayId"
      ]
    },
    "google-native:networkservices/v1beta1:GrpcRoute": {
      "description": "Creates a new GrpcRoute in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "grpcRouteId": {
          "type": "string",
          "description": "Required. Short name of the GrpcRoute resource to be created.",
          "replaceOnChanges": true
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Service hostnames with an optional port for which this route describes traffic. Format: [:] Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same route, it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`. If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. \"xds:///service:123\"), otherwise they must supply the URI without a port (i.e. \"xds:///service\")."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the GrpcRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/`"
        },
        "name": {
          "type": "string",
          "description": "Name of the GrpcRoute resource. It matches pattern `projects/*/locations/global/grpcRoutes/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRouteRuleResponse"
          },
          "description": "A list of detailed rules defining how to route traffic. Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gateways",
        "grpcRouteId",
        "hostnames",
        "labels",
        "location",
        "meshes",
        "name",
        "project",
        "rules",
        "selfLink",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "grpcRouteId": {
          "type": "string",
          "description": "Required. Short name of the GrpcRoute resource to be created.",
          "replaceOnChanges": true
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Service hostnames with an optional port for which this route describes traffic. Format: [:] Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same route, it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`. If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. \"xds:///service:123\"), otherwise they must supply the URI without a port (i.e. \"xds:///service\")."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the GrpcRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/`"
        },
        "name": {
          "type": "string",
          "description": "Name of the GrpcRoute resource. It matches pattern `projects/*/locations/global/grpcRoutes/`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRouteRule"
          },
          "description": "A list of detailed rules defining how to route traffic. Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied."
        }
      },
      "requiredInputs": [
        "grpcRouteId",
        "hostnames",
        "rules"
      ]
    },
    "google-native:networkservices/v1beta1:HttpRoute": {
      "description": "Creates a new HttpRoute in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this HttpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Hostnames define a set of hosts that should match against the HTTP host header to select a HttpRoute to process the request. Hostname is the fully qualified domain name of a network host, as defined by RFC 1123 with the exception that: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateways must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same Mesh (or Gateways under the same scope), it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`."
        },
        "httpRouteId": {
          "type": "string",
          "description": "Required. Short name of the HttpRoute resource to be created.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the HttpRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this HttpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the HttpRoute resource. It matches pattern `projects/*/locations/global/httpRoutes/http_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRouteRuleResponse"
          },
          "description": "Rules that define how traffic is routed and handled. Rules will be matched sequentially based on the RouteMatch specified for the rule."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gateways",
        "hostnames",
        "httpRouteId",
        "labels",
        "location",
        "meshes",
        "name",
        "project",
        "rules",
        "selfLink",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this HttpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "hostnames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Hostnames define a set of hosts that should match against the HTTP host header to select a HttpRoute to process the request. Hostname is the fully qualified domain name of a network host, as defined by RFC 1123 with the exception that: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateways must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same Mesh (or Gateways under the same scope), it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`."
        },
        "httpRouteId": {
          "type": "string",
          "description": "Required. Short name of the HttpRoute resource to be created.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the HttpRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this HttpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the HttpRoute resource. It matches pattern `projects/*/locations/global/httpRoutes/http_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRouteRule"
          },
          "description": "Rules that define how traffic is routed and handled. Rules will be matched sequentially based on the RouteMatch specified for the rule."
        }
      },
      "requiredInputs": [
        "hostnames",
        "httpRouteId",
        "rules"
      ]
    },
    "google-native:networkservices/v1beta1:LbRouteExtension": {
      "description": "Creates a new `LbRouteExtension` resource in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of the resource."
        },
        "extensionChains": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainResponse"
          },
          "description": "A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource."
        },
        "forwardingRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of references to the forwarding rules to which this service extension is attached to. At least one forwarding rule is required. There can be only one `LbRouteExtension` resource per forwarding rule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of labels associated with the `LbRouteExtension` resource. The format must comply with [the following requirements](/compute/docs/labeling-resources#requirements)."
        },
        "lbRouteExtensionId": {
          "type": "string",
          "description": "Required. User-provided ID of the `LbRouteExtension` resource to be created.",
          "replaceOnChanges": true
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the `LbRouteExtension` resource in the following format: `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "extensionChains",
        "forwardingRules",
        "labels",
        "lbRouteExtensionId",
        "loadBalancingScheme",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of the resource."
        },
        "extensionChains": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChain"
          },
          "description": "A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource."
        },
        "forwardingRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of references to the forwarding rules to which this service extension is attached to. At least one forwarding rule is required. There can be only one `LbRouteExtension` resource per forwarding rule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of labels associated with the `LbRouteExtension` resource. The format must comply with [the following requirements](/compute/docs/labeling-resources#requirements)."
        },
        "lbRouteExtensionId": {
          "type": "string",
          "description": "Required. User-provided ID of the `LbRouteExtension` resource to be created.",
          "replaceOnChanges": true
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:LbRouteExtensionLoadBalancingScheme",
          "description": "All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the `LbRouteExtension` resource in the following format: `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "extensionChains",
        "forwardingRules",
        "lbRouteExtensionId",
        "loadBalancingScheme"
      ]
    },
    "google-native:networkservices/v1beta1:LbTrafficExtension": {
      "description": "Creates a new `LbTrafficExtension` resource in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of the resource."
        },
        "extensionChains": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainResponse"
          },
          "description": "A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource."
        },
        "forwardingRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of references to the forwarding rules to which this service extension is attached to. At least one forwarding rule is required. There can be only one `LBTrafficExtension` resource per forwarding rule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of labels associated with the `LbTrafficExtension` resource. The format must comply with [the following requirements](/compute/docs/labeling-resources#requirements)."
        },
        "lbTrafficExtensionId": {
          "type": "string",
          "description": "Required. User-provided ID of the `LbTrafficExtension` resource to be created.",
          "replaceOnChanges": true
        },
        "loadBalancingScheme": {
          "type": "string",
          "description": "All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the `LbTrafficExtension` resource in the following format: `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "extensionChains",
        "forwardingRules",
        "labels",
        "lbTrafficExtensionId",
        "loadBalancingScheme",
        "location",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of the resource."
        },
        "extensionChains": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChain"
          },
          "description": "A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource."
        },
        "forwardingRules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of references to the forwarding rules to which this service extension is attached to. At least one forwarding rule is required. There can be only one `LBTrafficExtension` resource per forwarding rule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of labels associated with the `LbTrafficExtension` resource. The format must comply with [the following requirements](/compute/docs/labeling-resources#requirements)."
        },
        "lbTrafficExtensionId": {
          "type": "string",
          "description": "Required. User-provided ID of the `LbTrafficExtension` resource to be created.",
          "replaceOnChanges": true
        },
        "loadBalancingScheme": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:LbTrafficExtensionLoadBalancingScheme",
          "description": "All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the `LbTrafficExtension` resource in the following format: `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "extensionChains",
        "forwardingRules",
        "lbTrafficExtensionId",
        "loadBalancingScheme"
      ]
    },
    "google-native:networkservices/v1beta1:Mesh": {
      "description": "Creates a new Mesh in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "interceptionPort": {
          "type": "integer",
          "description": "Optional. If set to a valid TCP port (1-65535), instructs the SIDECAR proxy to listen on the specified port of localhost (127.0.0.1) address. The SIDECAR proxy will expect all traffic to be redirected to this port regardless of its actual ip:port destination. If unset, a port '15001' is used as the interception port. This is applicable only for sidecar proxy deployments."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the Mesh resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshId": {
          "type": "string",
          "description": "Required. Short name of the Mesh resource to be created.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Mesh resource. It matches pattern `projects/*/locations/global/meshes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "interceptionPort",
        "labels",
        "location",
        "meshId",
        "name",
        "project",
        "selfLink",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "interceptionPort": {
          "type": "integer",
          "description": "Optional. If set to a valid TCP port (1-65535), instructs the SIDECAR proxy to listen on the specified port of localhost (127.0.0.1) address. The SIDECAR proxy will expect all traffic to be redirected to this port regardless of its actual ip:port destination. If unset, a port '15001' is used as the interception port. This is applicable only for sidecar proxy deployments."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the Mesh resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshId": {
          "type": "string",
          "description": "Required. Short name of the Mesh resource to be created.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the Mesh resource. It matches pattern `projects/*/locations/global/meshes/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "meshId"
      ]
    },
    "google-native:networkservices/v1beta1:MeshIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:MeshIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:MeshIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "meshId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "meshId"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceBinding": {
      "description": "Creates a new ServiceBinding in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the ServiceBinding resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ServiceBinding resource. It matches pattern `projects/*/locations/global/serviceBindings/service_binding_name`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "service": {
          "type": "string",
          "description": "The full Service Directory Service name of the format projects/*/locations/*/namespaces/*/services/*"
        },
        "serviceBindingId": {
          "type": "string",
          "description": "Required. Short name of the ServiceBinding resource to be created.",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "description": "The unique identifier of the Service Directory Service against which the Service Binding resource is validated. This is populated when the Service Binding resource is used in another resource (like Backend Service). This is of the UUID4 format."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "labels",
        "location",
        "name",
        "project",
        "service",
        "serviceBindingId",
        "serviceId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the ServiceBinding resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ServiceBinding resource. It matches pattern `projects/*/locations/global/serviceBindings/service_binding_name`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "service": {
          "type": "string",
          "description": "The full Service Directory Service name of the format projects/*/locations/*/namespaces/*/services/*"
        },
        "serviceBindingId": {
          "type": "string",
          "description": "Required. Short name of the ServiceBinding resource to be created.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "service",
        "serviceBindingId"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceBindingIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceBindingIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceBindingIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceBindingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceBindingId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceBindingId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceBindingId"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicy": {
      "description": "Creates a new ServiceLbPolicy in a given project and location.",
      "properties": {
        "autoCapacityDrain": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:ServiceLbPolicyAutoCapacityDrainResponse",
          "description": "Optional. Configuration to automatically move traffic away for unhealthy IG/NEG for the associated Backend Service."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when this resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "failoverConfig": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:ServiceLbPolicyFailoverConfigResponse",
          "description": "Optional. Configuration related to health based failover."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the ServiceLbPolicy resource."
        },
        "loadBalancingAlgorithm": {
          "type": "string",
          "description": "Optional. The type of load balancing algorithm to be used. The default behavior is WATERFALL_BY_REGION."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ServiceLbPolicy resource. It matches pattern `projects/{project}/locations/{location}/serviceLbPolicies/{service_lb_policy_name}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceLbPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ServiceLbPolicy resource to be created. E.g. for resource name `projects/{project}/locations/{location}/serviceLbPolicies/{service_lb_policy_name}`. the id is value of {service_lb_policy_name}",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when this resource was last updated."
        }
      },
      "type": "object",
      "required": [
        "autoCapacityDrain",
        "createTime",
        "description",
        "failoverConfig",
        "labels",
        "loadBalancingAlgorithm",
        "location",
        "name",
        "project",
        "serviceLbPolicyId",
        "updateTime"
      ],
      "inputProperties": {
        "autoCapacityDrain": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:ServiceLbPolicyAutoCapacityDrain",
          "description": "Optional. Configuration to automatically move traffic away for unhealthy IG/NEG for the associated Backend Service."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "failoverConfig": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:ServiceLbPolicyFailoverConfig",
          "description": "Optional. Configuration related to health based failover."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the ServiceLbPolicy resource."
        },
        "loadBalancingAlgorithm": {
          "$ref": "#/types/google-native:networkservices%2Fv1beta1:ServiceLbPolicyLoadBalancingAlgorithm",
          "description": "Optional. The type of load balancing algorithm to be used. The default behavior is WATERFALL_BY_REGION."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the ServiceLbPolicy resource. It matches pattern `projects/{project}/locations/{location}/serviceLbPolicies/{service_lb_policy_name}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceLbPolicyId": {
          "type": "string",
          "description": "Required. Short name of the ServiceLbPolicy resource to be created. E.g. for resource name `projects/{project}/locations/{location}/serviceLbPolicies/{service_lb_policy_name}`. the id is value of {service_lb_policy_name}",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "serviceLbPolicyId"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:networkservices/v1beta1:ServiceLbPolicyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceLbPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceLbPolicyId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceLbPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceLbPolicyId"
      ]
    },
    "google-native:networkservices/v1beta1:TcpRoute": {
      "description": "Creates a new TcpRoute in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this TcpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the TcpRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this TcpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the TcpRoute resource. It matches pattern `projects/*/locations/global/tcpRoutes/tcp_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteRuleResponse"
          },
          "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "tcpRouteId": {
          "type": "string",
          "description": "Required. Short name of the TcpRoute resource to be created.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gateways",
        "labels",
        "location",
        "meshes",
        "name",
        "project",
        "rules",
        "selfLink",
        "tcpRouteId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this TcpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the TcpRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this TcpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the TcpRoute resource. It matches pattern `projects/*/locations/global/tcpRoutes/tcp_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteRule"
          },
          "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match."
        },
        "tcpRouteId": {
          "type": "string",
          "description": "Required. Short name of the TcpRoute resource to be created.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "rules",
        "tcpRouteId"
      ]
    },
    "google-native:networkservices/v1beta1:TlsRoute": {
      "description": "Creates a new TlsRoute in a given project and location.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the resource was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this TlsRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the TlsRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this TlsRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the TlsRoute resource. It matches pattern `projects/*/locations/global/tlsRoutes/tls_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteRuleResponse"
          },
          "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match."
        },
        "selfLink": {
          "type": "string",
          "description": "Server-defined URL of this resource"
        },
        "tlsRouteId": {
          "type": "string",
          "description": "Required. Short name of the TlsRoute resource to be created.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "gateways",
        "labels",
        "location",
        "meshes",
        "name",
        "project",
        "rules",
        "selfLink",
        "tlsRouteId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. A free-text description of the resource. Max length 1024 characters."
        },
        "gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Gateways defines a list of gateways this TlsRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Set of label tags associated with the TlsRoute resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "meshes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Meshes defines a list of meshes this TlsRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR"
        },
        "name": {
          "type": "string",
          "description": "Name of the TlsRoute resource. It matches pattern `projects/*/locations/global/tlsRoutes/tls_route_name>`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteRule"
          },
          "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match."
        },
        "tlsRouteId": {
          "type": "string",
          "description": "Required. Short name of the TlsRoute resource to be created.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "rules",
        "tlsRouteId"
      ]
    },
    "google-native:notebooks/v1:Environment": {
      "description": "Creates a new Environment.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "containerImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImageResponse",
          "description": "Use a container image to start the notebook instance."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this environment was created."
        },
        "description": {
          "type": "string",
          "description": "A brief description of this environment."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of this environment for the UI."
        },
        "environmentId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this environment. The `environment_id` must be 1 to 63 characters long and contain only lowercase letters, numeric characters, and dashes. The first character must be a lowercase letter and the last character cannot be a dash.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of this environment. Format: `projects/{project_id}/locations/{location}/environments/{environment_id}`"
        },
        "postStartupScript": {
          "type": "string",
          "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path. Example: `\"gs://path-to-file/file-name\"`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "vmImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VmImageResponse",
          "description": "Use a Compute Engine VM image to start the notebook instance."
        }
      },
      "type": "object",
      "required": [
        "containerImage",
        "createTime",
        "description",
        "displayName",
        "environmentId",
        "location",
        "name",
        "postStartupScript",
        "project",
        "vmImage"
      ],
      "inputProperties": {
        "containerImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImage",
          "description": "Use a container image to start the notebook instance."
        },
        "description": {
          "type": "string",
          "description": "A brief description of this environment."
        },
        "displayName": {
          "type": "string",
          "description": "Display name of this environment for the UI."
        },
        "environmentId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this environment. The `environment_id` must be 1 to 63 characters long and contain only lowercase letters, numeric characters, and dashes. The first character must be a lowercase letter and the last character cannot be a dash.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "postStartupScript": {
          "type": "string",
          "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path. Example: `\"gs://path-to-file/file-name\"`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "vmImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VmImage",
          "description": "Use a Compute Engine VM image to start the notebook instance."
        }
      },
      "requiredInputs": [
        "environmentId"
      ]
    },
    "google-native:notebooks/v1:Execution": {
      "description": "Creates a new Execution in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time the Execution was instantiated."
        },
        "description": {
          "type": "string",
          "description": "A brief description of this execution."
        },
        "displayName": {
          "type": "string",
          "description": "Name used for UI purposes. Name can only contain alphanumeric characters and underscores '_'."
        },
        "executionId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this execution.",
          "replaceOnChanges": true
        },
        "executionTemplate": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplateResponse",
          "description": "execute metadata including name, hardware spec, region, labels, etc."
        },
        "jobUri": {
          "type": "string",
          "description": "The URI of the external job used to execute the notebook."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the execute. Format: `projects/{project_id}/locations/{location}/executions/{execution_id}`"
        },
        "outputNotebookFile": {
          "type": "string",
          "description": "Output notebook file generated by this execution"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the underlying AI Platform job."
        },
        "updateTime": {
          "type": "string",
          "description": "Time the Execution was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "executionId",
        "executionTemplate",
        "jobUri",
        "location",
        "name",
        "outputNotebookFile",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A brief description of this execution."
        },
        "executionId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this execution.",
          "replaceOnChanges": true
        },
        "executionTemplate": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplate",
          "description": "execute metadata including name, hardware spec, region, labels, etc."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "outputNotebookFile": {
          "type": "string",
          "description": "Output notebook file generated by this execution"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "executionId"
      ]
    },
    "google-native:notebooks/v1:Instance": {
      "description": "Creates a new Instance in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:AcceleratorConfigResponse",
          "description": "The hardware accelerator used on this instance. If you use accelerators, make sure that your configuration has [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list)."
        },
        "bootDiskSizeGb": {
          "type": "string",
          "description": "Input only. The size of the boot disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). The minimum recommended value is 100 GB. If not specified, this defaults to 100."
        },
        "bootDiskType": {
          "type": "string",
          "description": "Input only. The type of the boot disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`)."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Optional. Flag to enable ip forwarding or not, default false/off. https://cloud.google.com/vpc/docs/using-routes#canipforward"
        },
        "containerImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImageResponse",
          "description": "Use a container image to start the notebook instance."
        },
        "createTime": {
          "type": "string",
          "description": "Instance creation time."
        },
        "creator": {
          "type": "string",
          "description": "Email address of entity that sent original CreateInstance request."
        },
        "customGpuDriverPath": {
          "type": "string",
          "description": "Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "Input only. The size of the data disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). You can choose the size of the data disk based on how big your notebooks and data are. If not specified, this defaults to 100."
        },
        "dataDiskType": {
          "type": "string",
          "description": "Input only. The type of the data disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`)."
        },
        "diskEncryption": {
          "type": "string",
          "description": "Input only. Disk encryption method used on the boot and data disks, defaults to GMEK."
        },
        "disks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:DiskResponse"
          },
          "description": "Attached disks to notebook instance."
        },
        "installGpuDriver": {
          "type": "boolean",
          "description": "Whether the end user authorizes Google Cloud to install GPU driver on this instance. If this field is empty or set to false, the GPU driver won't be installed. Only applicable to instances with GPUs."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this instance.",
          "replaceOnChanges": true
        },
        "instanceMigrationEligibility": {
          "$ref": "#/types/google-native:notebooks%2Fv1:InstanceMigrationEligibilityResponse",
          "description": "Checks how feasible a migration from UmN to WbI is."
        },
        "instanceOwners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Input only. The owner of this instance after creation. Format: `alias@example.com` Currently supports one owner only. If not specified, all of the service account users of your VM instance's service account can use the instance."
        },
        "kmsKey": {
          "type": "string",
          "description": "Input only. The KMS key used to encrypt the disks, only applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}` Learn more about [using your own encryption keys](/kms/docs/quickstart)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineType": {
          "type": "string",
          "description": "The [Compute Engine machine type](https://cloud.google.com/compute/docs/machine-types) of this instance."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to this instance. For example, to specify a Cloud Storage bucket for automatic backup, you can use the `gcs-data-bucket` metadata tag. Format: `\"--metadata=gcs-data-bucket=``BUCKET''\"`."
        },
        "migrated": {
          "type": "boolean",
          "description": "Bool indicating whether this notebook has been migrated to a Workbench Instance"
        },
        "name": {
          "type": "string",
          "description": "The name of this notebook instance. Format: `projects/{project_id}/locations/{location}/instances/{instance_id}`"
        },
        "network": {
          "type": "string",
          "description": "The name of the VPC that this instance is in. Format: `projects/{project_id}/global/networks/{network_id}`"
        },
        "nicType": {
          "type": "string",
          "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "noProxyAccess": {
          "type": "boolean",
          "description": "If true, the notebook instance will not register with the proxy."
        },
        "noPublicIp": {
          "type": "boolean",
          "description": "If true, no external IP will be assigned to this instance."
        },
        "noRemoveDataDisk": {
          "type": "boolean",
          "description": "Input only. If true, the data disk will not be auto deleted when deleting the instance."
        },
        "postStartupScript": {
          "type": "string",
          "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path (`gs://path-to-file/file-name`)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyUri": {
          "type": "string",
          "description": "The proxy endpoint that is used to access the Jupyter notebook."
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ReservationAffinityResponse",
          "description": "Optional. The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this notebook instance."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account on this instance, giving access to other Google Cloud services. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The URIs of service account scopes to be included in Compute Engine instances. If not specified, the following [scopes](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam) are defined: - https://www.googleapis.com/auth/cloud-platform - https://www.googleapis.com/auth/userinfo.email If not using default scopes, you need at least: https://www.googleapis.com/auth/compute"
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ShieldedInstanceConfigResponse",
          "description": "Optional. Shielded VM configuration. [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm)."
        },
        "state": {
          "type": "string",
          "description": "The state of this instance."
        },
        "subnet": {
          "type": "string",
          "description": "The name of the subnet that this instance is in. Format: `projects/{project_id}/regions/{region}/subnetworks/{subnetwork_id}`"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine tags to add to runtime (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "updateTime": {
          "type": "string",
          "description": "Instance update time."
        },
        "upgradeHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:UpgradeHistoryEntryResponse"
          },
          "description": "The upgrade history of this instance."
        },
        "vmImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VmImageResponse",
          "description": "Use a Compute Engine VM image to start the notebook instance."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "bootDiskSizeGb",
        "bootDiskType",
        "canIpForward",
        "containerImage",
        "createTime",
        "creator",
        "customGpuDriverPath",
        "dataDiskSizeGb",
        "dataDiskType",
        "diskEncryption",
        "disks",
        "installGpuDriver",
        "instanceId",
        "instanceMigrationEligibility",
        "instanceOwners",
        "kmsKey",
        "labels",
        "location",
        "machineType",
        "metadata",
        "migrated",
        "name",
        "network",
        "nicType",
        "noProxyAccess",
        "noPublicIp",
        "noRemoveDataDisk",
        "postStartupScript",
        "project",
        "proxyUri",
        "reservationAffinity",
        "serviceAccount",
        "serviceAccountScopes",
        "shieldedInstanceConfig",
        "state",
        "subnet",
        "tags",
        "updateTime",
        "upgradeHistory",
        "vmImage"
      ],
      "inputProperties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:AcceleratorConfig",
          "description": "The hardware accelerator used on this instance. If you use accelerators, make sure that your configuration has [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list)."
        },
        "bootDiskSizeGb": {
          "type": "string",
          "description": "Input only. The size of the boot disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). The minimum recommended value is 100 GB. If not specified, this defaults to 100."
        },
        "bootDiskType": {
          "$ref": "#/types/google-native:notebooks%2Fv1:InstanceBootDiskType",
          "description": "Input only. The type of the boot disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`)."
        },
        "canIpForward": {
          "type": "boolean",
          "description": "Optional. Flag to enable ip forwarding or not, default false/off. https://cloud.google.com/vpc/docs/using-routes#canipforward"
        },
        "containerImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImage",
          "description": "Use a container image to start the notebook instance."
        },
        "customGpuDriverPath": {
          "type": "string",
          "description": "Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers."
        },
        "dataDiskSizeGb": {
          "type": "string",
          "description": "Input only. The size of the data disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). You can choose the size of the data disk based on how big your notebooks and data are. If not specified, this defaults to 100."
        },
        "dataDiskType": {
          "$ref": "#/types/google-native:notebooks%2Fv1:InstanceDataDiskType",
          "description": "Input only. The type of the data disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`)."
        },
        "diskEncryption": {
          "$ref": "#/types/google-native:notebooks%2Fv1:InstanceDiskEncryption",
          "description": "Input only. Disk encryption method used on the boot and data disks, defaults to GMEK."
        },
        "installGpuDriver": {
          "type": "boolean",
          "description": "Whether the end user authorizes Google Cloud to install GPU driver on this instance. If this field is empty or set to false, the GPU driver won't be installed. Only applicable to instances with GPUs."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this instance.",
          "replaceOnChanges": true
        },
        "instanceOwners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Input only. The owner of this instance after creation. Format: `alias@example.com` Currently supports one owner only. If not specified, all of the service account users of your VM instance's service account can use the instance."
        },
        "kmsKey": {
          "type": "string",
          "description": "Input only. The KMS key used to encrypt the disks, only applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}` Learn more about [using your own encryption keys](/kms/docs/quickstart)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels to apply to this instance. These can be later modified by the setLabels method."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineType": {
          "type": "string",
          "description": "The [Compute Engine machine type](https://cloud.google.com/compute/docs/machine-types) of this instance."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to this instance. For example, to specify a Cloud Storage bucket for automatic backup, you can use the `gcs-data-bucket` metadata tag. Format: `\"--metadata=gcs-data-bucket=``BUCKET''\"`."
        },
        "network": {
          "type": "string",
          "description": "The name of the VPC that this instance is in. Format: `projects/{project_id}/global/networks/{network_id}`"
        },
        "nicType": {
          "$ref": "#/types/google-native:notebooks%2Fv1:InstanceNicType",
          "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet."
        },
        "noProxyAccess": {
          "type": "boolean",
          "description": "If true, the notebook instance will not register with the proxy."
        },
        "noPublicIp": {
          "type": "boolean",
          "description": "If true, no external IP will be assigned to this instance."
        },
        "noRemoveDataDisk": {
          "type": "boolean",
          "description": "Input only. If true, the data disk will not be auto deleted when deleting the instance."
        },
        "postStartupScript": {
          "type": "string",
          "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path (`gs://path-to-file/file-name`)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationAffinity": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ReservationAffinity",
          "description": "Optional. The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this notebook instance."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account on this instance, giving access to other Google Cloud services. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used."
        },
        "serviceAccountScopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The URIs of service account scopes to be included in Compute Engine instances. If not specified, the following [scopes](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam) are defined: - https://www.googleapis.com/auth/cloud-platform - https://www.googleapis.com/auth/userinfo.email If not using default scopes, you need at least: https://www.googleapis.com/auth/compute"
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ShieldedInstanceConfig",
          "description": "Optional. Shielded VM configuration. [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm)."
        },
        "subnet": {
          "type": "string",
          "description": "The name of the subnet that this instance is in. Format: `projects/{project_id}/regions/{region}/subnetworks/{subnetwork_id}`"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The Compute Engine tags to add to runtime (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags))."
        },
        "upgradeHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:UpgradeHistoryEntry"
          },
          "description": "The upgrade history of this instance."
        },
        "vmImage": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VmImage",
          "description": "Use a Compute Engine VM image to start the notebook instance."
        }
      },
      "requiredInputs": [
        "instanceId",
        "machineType"
      ]
    },
    "google-native:notebooks/v1:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:notebooks/v1:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:notebooks/v1:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "instanceId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:notebooks/v1:Runtime": {
      "description": "Creates a new Runtime in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accessConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeAccessConfigResponse",
          "description": "The config settings for accessing runtime."
        },
        "createTime": {
          "type": "string",
          "description": "Runtime creation time."
        },
        "healthState": {
          "type": "string",
          "description": "Runtime health_state."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this Managed Notebook or Runtime. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metrics": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeMetricsResponse",
          "description": "Contains Runtime daemon metrics such as Service status and JupyterLab stats."
        },
        "migrated": {
          "type": "boolean",
          "description": "Bool indicating whether this notebook has been migrated to a Workbench Instance"
        },
        "name": {
          "type": "string",
          "description": "The resource name of the runtime. Format: `projects/{project}/locations/{location}/runtimes/{runtimeId}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "runtimeId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this Runtime.",
          "replaceOnChanges": true
        },
        "runtimeMigrationEligibility": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeMigrationEligibilityResponse",
          "description": "Checks how feasible a migration from GmN to WbI is."
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeSoftwareConfigResponse",
          "description": "The config settings for software inside the runtime."
        },
        "state": {
          "type": "string",
          "description": "Runtime state."
        },
        "updateTime": {
          "type": "string",
          "description": "Runtime update time."
        },
        "virtualMachine": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VirtualMachineResponse",
          "description": "Use a Compute Engine VM image to start the managed notebook instance."
        }
      },
      "type": "object",
      "required": [
        "accessConfig",
        "createTime",
        "healthState",
        "labels",
        "location",
        "metrics",
        "migrated",
        "name",
        "project",
        "runtimeId",
        "runtimeMigrationEligibility",
        "softwareConfig",
        "state",
        "updateTime",
        "virtualMachine"
      ],
      "inputProperties": {
        "accessConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeAccessConfig",
          "description": "The config settings for accessing runtime."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. The labels to associate with this Managed Notebook or Runtime. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "runtimeId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this Runtime.",
          "replaceOnChanges": true
        },
        "softwareConfig": {
          "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeSoftwareConfig",
          "description": "The config settings for software inside the runtime."
        },
        "virtualMachine": {
          "$ref": "#/types/google-native:notebooks%2Fv1:VirtualMachine",
          "description": "Use a Compute Engine VM image to start the managed notebook instance."
        }
      },
      "requiredInputs": [
        "runtimeId"
      ]
    },
    "google-native:notebooks/v1:RuntimeIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:notebooks/v1:RuntimeIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:notebooks/v1:RuntimeIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtimeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "project",
        "runtimeId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtimeId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "runtimeId"
      ]
    },
    "google-native:notebooks/v1:Schedule": {
      "description": "Creates a new Scheduled Notebook in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time the schedule was created."
        },
        "cronSchedule": {
          "type": "string",
          "description": "Cron-tab formatted schedule by which the job will execute. Format: minute, hour, day of month, month, day of week, e.g. `0 0 * * WED` = every Wednesday More examples: https://crontab.guru/examples.html"
        },
        "description": {
          "type": "string",
          "description": "A brief description of this environment."
        },
        "displayName": {
          "type": "string",
          "description": "Display name used for UI purposes. Name can only contain alphanumeric characters, hyphens `-`, and underscores `_`."
        },
        "executionTemplate": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplateResponse",
          "description": "Notebook Execution Template corresponding to this schedule."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of this schedule. Format: `projects/{project_id}/locations/{location}/schedules/{schedule_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recentExecutions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionResponse"
          },
          "description": "The most recent execution names triggered from this schedule and their corresponding states."
        },
        "scheduleId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this schedule.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string"
        },
        "timeZone": {
          "type": "string",
          "description": "Timezone on which the cron_schedule. The value of this field must be a time zone name from the tz database. TZ Database: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT)."
        },
        "updateTime": {
          "type": "string",
          "description": "Time the schedule was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "cronSchedule",
        "description",
        "displayName",
        "executionTemplate",
        "location",
        "name",
        "project",
        "recentExecutions",
        "scheduleId",
        "state",
        "timeZone",
        "updateTime"
      ],
      "inputProperties": {
        "cronSchedule": {
          "type": "string",
          "description": "Cron-tab formatted schedule by which the job will execute. Format: minute, hour, day of month, month, day of week, e.g. `0 0 * * WED` = every Wednesday More examples: https://crontab.guru/examples.html"
        },
        "description": {
          "type": "string",
          "description": "A brief description of this environment."
        },
        "executionTemplate": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplate",
          "description": "Notebook Execution Template corresponding to this schedule."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scheduleId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this schedule.",
          "replaceOnChanges": true
        },
        "state": {
          "$ref": "#/types/google-native:notebooks%2Fv1:ScheduleState"
        },
        "timeZone": {
          "type": "string",
          "description": "Timezone on which the cron_schedule. The value of this field must be a time zone name from the tz database. TZ Database: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT)."
        }
      },
      "requiredInputs": [
        "scheduleId"
      ]
    },
    "google-native:notebooks/v2:Instance": {
      "description": "Creates a new Instance in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Instance creation time."
        },
        "creator": {
          "type": "string",
          "description": "Email address of entity that sent original CreateInstance request."
        },
        "disableProxyAccess": {
          "type": "boolean",
          "description": "Optional. If true, the notebook instance will not register with the proxy."
        },
        "gceSetup": {
          "$ref": "#/types/google-native:notebooks%2Fv2:GceSetupResponse",
          "description": "Optional. Compute Engine setup for the notebook. Uses notebook-defined fields."
        },
        "healthInfo": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional information about instance health. Example: healthInfo\": { \"docker_proxy_agent_status\": \"1\", \"docker_status\": \"1\", \"jupyterlab_api_status\": \"-1\", \"jupyterlab_status\": \"-1\", \"updated\": \"2020-10-18 09:40:03.573409\" }"
        },
        "healthState": {
          "type": "string",
          "description": "Instance health_state."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this instance.",
          "replaceOnChanges": true
        },
        "instanceOwners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Input only. The owner of this instance after creation. Format: `alias@example.com` Currently supports one owner only. If not specified, all of the service account users of your VM instance's service account can use the instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels to apply to this instance. These can be later modified by the UpdateInstance method."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of this notebook instance. Format: `projects/{project_id}/locations/{location}/instances/{instance_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "proxyUri": {
          "type": "string",
          "description": "The proxy endpoint that is used to access the Jupyter notebook."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. Idempotent request UUID."
        },
        "state": {
          "type": "string",
          "description": "The state of this instance."
        },
        "updateTime": {
          "type": "string",
          "description": "Instance update time."
        },
        "upgradeHistory": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:UpgradeHistoryEntryResponse"
          },
          "description": "The upgrade history of this instance."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "creator",
        "disableProxyAccess",
        "gceSetup",
        "healthInfo",
        "healthState",
        "instanceId",
        "instanceOwners",
        "labels",
        "location",
        "name",
        "project",
        "proxyUri",
        "state",
        "updateTime",
        "upgradeHistory"
      ],
      "inputProperties": {
        "disableProxyAccess": {
          "type": "boolean",
          "description": "Optional. If true, the notebook instance will not register with the proxy."
        },
        "gceSetup": {
          "$ref": "#/types/google-native:notebooks%2Fv2:GceSetup",
          "description": "Optional. Compute Engine setup for the notebook. Uses notebook-defined fields."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. User-defined unique ID of this instance.",
          "replaceOnChanges": true
        },
        "instanceOwners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Input only. The owner of this instance after creation. Format: `alias@example.com` Currently supports one owner only. If not specified, all of the service account users of your VM instance's service account can use the instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels to apply to this instance. These can be later modified by the UpdateInstance method."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. Idempotent request UUID."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:notebooks/v2:InstanceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:notebooks/v2:InstanceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:notebooks/v2:InstanceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "instanceId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:notebooks%2Fv2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:orgpolicy/v2:CustomConstraint": {
      "description": "Creates a custom constraint. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the organization does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ALREADY_EXISTS` if the constraint already exists on the given organization.",
      "properties": {
        "actionType": {
          "type": "string",
          "description": "Allow or deny type."
        },
        "condition": {
          "type": "string",
          "description": "Org policy condition/expression. For example: `resource.instanceName.matches(\"[production|test]_.*_(\\d)+\")` or, `resource.management.auto_upgrade == true` The max length of the condition is 1000 characters."
        },
        "description": {
          "type": "string",
          "description": "Detailed information about this custom policy constraint. The max length of the description is 2000 characters."
        },
        "displayName": {
          "type": "string",
          "description": "One line display name for the UI. The max length of the display_name is 200 characters."
        },
        "methodTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All the operations being applied for this constraint."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example: `organizations/123/customConstraints/custom.createOnlyE2TypeVms` The max length is 70 characters and the minimum length is 1. Note that the prefix `organizations/{organization_id}/customConstraints/` is not counted."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The resource instance type on which this policy applies. Format will be of the form : `/` Example: * `compute.googleapis.com/Instance`."
        },
        "updateTime": {
          "type": "string",
          "description": "The last time this custom constraint was updated. This represents the last time that the `CreateCustomConstraint` or `UpdateCustomConstraint` RPC was called"
        }
      },
      "type": "object",
      "required": [
        "actionType",
        "condition",
        "description",
        "displayName",
        "methodTypes",
        "name",
        "organizationId",
        "resourceTypes",
        "updateTime"
      ],
      "inputProperties": {
        "actionType": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:CustomConstraintActionType",
          "description": "Allow or deny type."
        },
        "condition": {
          "type": "string",
          "description": "Org policy condition/expression. For example: `resource.instanceName.matches(\"[production|test]_.*_(\\d)+\")` or, `resource.management.auto_upgrade == true` The max length of the condition is 1000 characters."
        },
        "description": {
          "type": "string",
          "description": "Detailed information about this custom policy constraint. The max length of the description is 2000 characters."
        },
        "displayName": {
          "type": "string",
          "description": "One line display name for the UI. The max length of the display_name is 200 characters."
        },
        "methodTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:CustomConstraintMethodTypesItem"
          },
          "description": "All the operations being applied for this constraint."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example: `organizations/123/customConstraints/custom.createOnlyE2TypeVms` The max length is 70 characters and the minimum length is 1. Note that the prefix `organizations/{organization_id}/customConstraints/` is not counted."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The resource instance type on which this policy applies. Format will be of the form : `/` Example: * `compute.googleapis.com/Instance`."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:orgpolicy/v2:FolderPolicy": {
      "description": "Creates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ALREADY_EXISTS` if the policy already exists on the given Google Cloud resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "alternate": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpecResponse",
          "description": "Deprecated.",
          "deprecationMessage": "Deprecated."
        },
        "dryRunSpec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
          "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number."
        },
        "spec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
          "description": "Basic information about the Organization Policy."
        }
      },
      "type": "object",
      "required": [
        "alternate",
        "dryRunSpec",
        "folderId",
        "name",
        "spec"
      ],
      "inputProperties": {
        "alternate": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpec",
          "description": "Deprecated.",
          "deprecationMessage": "Deprecated."
        },
        "dryRunSpec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpec",
          "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number."
        },
        "spec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpec",
          "description": "Basic information about the Organization Policy."
        }
      },
      "requiredInputs": [
        "folderId"
      ]
    },
    "google-native:orgpolicy/v2:OrganizationPolicy": {
      "description": "Creates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ALREADY_EXISTS` if the policy already exists on the given Google Cloud resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "alternate": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpecResponse",
          "description": "Deprecated.",
          "deprecationMessage": "Deprecated."
        },
        "dryRunSpec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
          "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
          "description": "Basic information about the Organization Policy."
        }
      },
      "type": "object",
      "required": [
        "alternate",
        "dryRunSpec",
        "name",
        "organizationId",
        "spec"
      ],
      "inputProperties": {
        "alternate": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpec",
          "description": "Deprecated.",
          "deprecationMessage": "Deprecated."
        },
        "dryRunSpec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpec",
          "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpec",
          "description": "Basic information about the Organization Policy."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:orgpolicy/v2:Policy": {
      "description": "Creates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ALREADY_EXISTS` if the policy already exists on the given Google Cloud resource.",
      "properties": {
        "alternate": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpecResponse",
          "description": "Deprecated.",
          "deprecationMessage": "Deprecated."
        },
        "dryRunSpec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
          "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
          "description": "Basic information about the Organization Policy."
        }
      },
      "type": "object",
      "required": [
        "alternate",
        "dryRunSpec",
        "name",
        "project",
        "spec"
      ],
      "inputProperties": {
        "alternate": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpec",
          "description": "Deprecated.",
          "deprecationMessage": "Deprecated."
        },
        "dryRunSpec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpec",
          "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spec": {
          "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpec",
          "description": "Basic information about the Organization Policy."
        }
      }
    },
    "google-native:osconfig/v1:OsPolicyAssignment": {
      "description": "Create an OS policy assignment. This method also creates the first revision of the OS policy assignment. This method returns a long running operation (LRO) that contains the rollout details. The rollout can be cancelled by cancelling the LRO. For more information, see [Method: projects.locations.osPolicyAssignments.operations.cancel](https://cloud.google.com/compute/docs/osconfig/rest/v1/projects.locations.osPolicyAssignments.operations/cancel).",
      "properties": {
        "baseline": {
          "type": "boolean",
          "description": "Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field."
        },
        "deleted": {
          "type": "boolean",
          "description": "Indicates that this revision deletes the OS policy assignment."
        },
        "description": {
          "type": "string",
          "description": "OS policy assignment description. Length of the description is limited to 1024 characters."
        },
        "etag": {
          "type": "string",
          "description": "The etag for this OS policy assignment. If this is provided on update, it must match the server's etag."
        },
        "instanceFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentInstanceFilterResponse",
          "description": "Filter to select VMs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment."
        },
        "osPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResponse"
          },
          "description": "List of OS policies to be applied to the VMs."
        },
        "osPolicyAssignmentId": {
          "type": "string",
          "description": "Required. The logical name of the OS policy assignment in the project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING"
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp that the revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment"
        },
        "rollout": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentRolloutResponse",
          "description": "Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted."
        },
        "rolloutState": {
          "type": "string",
          "description": "OS policy assignment rollout state"
        },
        "uid": {
          "type": "string",
          "description": "Server generated unique id for the OS policy assignment resource."
        }
      },
      "type": "object",
      "required": [
        "baseline",
        "deleted",
        "description",
        "etag",
        "instanceFilter",
        "location",
        "name",
        "osPolicies",
        "osPolicyAssignmentId",
        "project",
        "reconciling",
        "revisionCreateTime",
        "revisionId",
        "rollout",
        "rolloutState",
        "uid"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "OS policy assignment description. Length of the description is limited to 1024 characters."
        },
        "etag": {
          "type": "string",
          "description": "The etag for this OS policy assignment. If this is provided on update, it must match the server's etag."
        },
        "instanceFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentInstanceFilter",
          "description": "Filter to select VMs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment."
        },
        "osPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicy"
          },
          "description": "List of OS policies to be applied to the VMs."
        },
        "osPolicyAssignmentId": {
          "type": "string",
          "description": "Required. The logical name of the OS policy assignment in the project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rollout": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentRollout",
          "description": "Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted."
        }
      },
      "requiredInputs": [
        "instanceFilter",
        "osPolicies",
        "osPolicyAssignmentId",
        "rollout"
      ]
    },
    "google-native:osconfig/v1:PatchDeployment": {
      "description": "Create an OS Config patch deployment.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time the patch deployment was created. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the patch deployment. Length of the description is limited to 1024 characters."
        },
        "duration": {
          "type": "string",
          "description": "Optional. Duration of the patch. After the duration ends, the patch times out."
        },
        "instanceFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1:PatchInstanceFilterResponse",
          "description": "VM instances to patch."
        },
        "lastExecuteTime": {
          "type": "string",
          "description": "The last time a patch job was started by this deployment. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "name": {
          "type": "string",
          "description": "Unique name for the patch deployment resource in a project. The patch deployment name is in the form: `projects/{project_id}/patchDeployments/{patch_deployment_id}`. This field is ignored when you create a new patch deployment."
        },
        "oneTimeSchedule": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OneTimeScheduleResponse",
          "description": "Schedule a one-time execution."
        },
        "patchConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1:PatchConfigResponse",
          "description": "Optional. Patch configuration that is applied."
        },
        "patchDeploymentId": {
          "type": "string",
          "description": "Required. A name for the patch deployment in the project. When creating a name the following rules apply: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recurringSchedule": {
          "$ref": "#/types/google-native:osconfig%2Fv1:RecurringScheduleResponse",
          "description": "Schedule recurring executions."
        },
        "rollout": {
          "$ref": "#/types/google-native:osconfig%2Fv1:PatchRolloutResponse",
          "description": "Optional. Rollout strategy of the patch job."
        },
        "state": {
          "type": "string",
          "description": "Current state of the patch deployment."
        },
        "updateTime": {
          "type": "string",
          "description": "Time the patch deployment was last updated. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "duration",
        "instanceFilter",
        "lastExecuteTime",
        "name",
        "oneTimeSchedule",
        "patchConfig",
        "patchDeploymentId",
        "project",
        "recurringSchedule",
        "rollout",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the patch deployment. Length of the description is limited to 1024 characters."
        },
        "duration": {
          "type": "string",
          "description": "Optional. Duration of the patch. After the duration ends, the patch times out."
        },
        "instanceFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1:PatchInstanceFilter",
          "description": "VM instances to patch."
        },
        "name": {
          "type": "string",
          "description": "Unique name for the patch deployment resource in a project. The patch deployment name is in the form: `projects/{project_id}/patchDeployments/{patch_deployment_id}`. This field is ignored when you create a new patch deployment."
        },
        "oneTimeSchedule": {
          "$ref": "#/types/google-native:osconfig%2Fv1:OneTimeSchedule",
          "description": "Schedule a one-time execution."
        },
        "patchConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1:PatchConfig",
          "description": "Optional. Patch configuration that is applied."
        },
        "patchDeploymentId": {
          "type": "string",
          "description": "Required. A name for the patch deployment in the project. When creating a name the following rules apply: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recurringSchedule": {
          "$ref": "#/types/google-native:osconfig%2Fv1:RecurringSchedule",
          "description": "Schedule recurring executions."
        },
        "rollout": {
          "$ref": "#/types/google-native:osconfig%2Fv1:PatchRollout",
          "description": "Optional. Rollout strategy of the patch job."
        }
      },
      "requiredInputs": [
        "instanceFilter",
        "oneTimeSchedule",
        "patchDeploymentId",
        "recurringSchedule"
      ]
    },
    "google-native:osconfig/v1alpha:OsPolicyAssignment": {
      "description": "Create an OS policy assignment. This method also creates the first revision of the OS policy assignment. This method returns a long running operation (LRO) that contains the rollout details. The rollout can be cancelled by cancelling the LRO. For more information, see [Method: projects.locations.osPolicyAssignments.operations.cancel](https://cloud.google.com/compute/docs/osconfig/rest/v1alpha/projects.locations.osPolicyAssignments.operations/cancel).",
      "properties": {
        "baseline": {
          "type": "boolean",
          "description": "Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field."
        },
        "deleted": {
          "type": "boolean",
          "description": "Indicates that this revision deletes the OS policy assignment."
        },
        "description": {
          "type": "string",
          "description": "OS policy assignment description. Length of the description is limited to 1024 characters."
        },
        "etag": {
          "type": "string",
          "description": "The etag for this OS policy assignment. If this is provided on update, it must match the server's etag."
        },
        "instanceFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentInstanceFilterResponse",
          "description": "Filter to select VMs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment."
        },
        "osPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResponse"
          },
          "description": "List of OS policies to be applied to the VMs."
        },
        "osPolicyAssignmentId": {
          "type": "string",
          "description": "Required. The logical name of the OS policy assignment in the project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING"
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp that the revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment"
        },
        "rollout": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentRolloutResponse",
          "description": "Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted."
        },
        "rolloutState": {
          "type": "string",
          "description": "OS policy assignment rollout state"
        },
        "uid": {
          "type": "string",
          "description": "Server generated unique id for the OS policy assignment resource."
        }
      },
      "type": "object",
      "required": [
        "baseline",
        "deleted",
        "description",
        "etag",
        "instanceFilter",
        "location",
        "name",
        "osPolicies",
        "osPolicyAssignmentId",
        "project",
        "reconciling",
        "revisionCreateTime",
        "revisionId",
        "rollout",
        "rolloutState",
        "uid"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "OS policy assignment description. Length of the description is limited to 1024 characters."
        },
        "etag": {
          "type": "string",
          "description": "The etag for this OS policy assignment. If this is provided on update, it must match the server's etag."
        },
        "instanceFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentInstanceFilter",
          "description": "Filter to select VMs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment."
        },
        "osPolicies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicy"
          },
          "description": "List of OS policies to be applied to the VMs."
        },
        "osPolicyAssignmentId": {
          "type": "string",
          "description": "Required. The logical name of the OS policy assignment in the project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rollout": {
          "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentRollout",
          "description": "Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted."
        }
      },
      "requiredInputs": [
        "instanceFilter",
        "osPolicies",
        "osPolicyAssignmentId",
        "rollout"
      ]
    },
    "google-native:osconfig/v1beta:GuestPolicy": {
      "description": "Create an OS Config guest policy.",
      "properties": {
        "assignment": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:AssignmentResponse",
          "description": "Specifies the VM instances that are assigned to this policy. This allows you to target sets or groups of VM instances by different parameters such as labels, names, OS, or zones. If left empty, all VM instances underneath this policy are targeted. At the same level in the resource hierarchy (that is within a project), the service prevents the creation of multiple policies that conflict with each other. For more information, see how the service [handles assignment conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts)."
        },
        "createTime": {
          "type": "string",
          "description": "Time this guest policy was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the guest policy. Length of the description is limited to 1024 characters."
        },
        "etag": {
          "type": "string",
          "description": "The etag for this guest policy. If this is provided on update, it must match the server's etag."
        },
        "guestPolicyId": {
          "type": "string",
          "description": "Required. The logical name of the guest policy in the project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this project using one of the following forms: `projects/{project_number}/guestPolicies/{guest_policy_id}`."
        },
        "packageRepositories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:PackageRepositoryResponse"
          },
          "description": "A list of package repositories to configure on the VM instance. This is done before any other configs are applied so they can use these repos. Package repositories are only configured if the corresponding package manager(s) are available."
        },
        "packages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:PackageResponse"
          },
          "description": "The software packages to be managed by this policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recipes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeResponse"
          },
          "description": "A list of Recipes to install on the VM instance."
        },
        "updateTime": {
          "type": "string",
          "description": "Last time this guest policy was updated."
        }
      },
      "type": "object",
      "required": [
        "assignment",
        "createTime",
        "description",
        "etag",
        "guestPolicyId",
        "name",
        "packageRepositories",
        "packages",
        "project",
        "recipes",
        "updateTime"
      ],
      "inputProperties": {
        "assignment": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:Assignment",
          "description": "Specifies the VM instances that are assigned to this policy. This allows you to target sets or groups of VM instances by different parameters such as labels, names, OS, or zones. If left empty, all VM instances underneath this policy are targeted. At the same level in the resource hierarchy (that is within a project), the service prevents the creation of multiple policies that conflict with each other. For more information, see how the service [handles assignment conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts)."
        },
        "description": {
          "type": "string",
          "description": "Description of the guest policy. Length of the description is limited to 1024 characters."
        },
        "etag": {
          "type": "string",
          "description": "The etag for this guest policy. If this is provided on update, it must match the server's etag."
        },
        "guestPolicyId": {
          "type": "string",
          "description": "Required. The logical name of the guest policy in the project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this project using one of the following forms: `projects/{project_number}/guestPolicies/{guest_policy_id}`."
        },
        "packageRepositories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:PackageRepository"
          },
          "description": "A list of package repositories to configure on the VM instance. This is done before any other configs are applied so they can use these repos. Package repositories are only configured if the corresponding package manager(s) are available."
        },
        "packages": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:Package"
          },
          "description": "The software packages to be managed by this policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recipes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipe"
          },
          "description": "A list of Recipes to install on the VM instance."
        }
      },
      "requiredInputs": [
        "assignment",
        "guestPolicyId"
      ]
    },
    "google-native:osconfig/v1beta:PatchDeployment": {
      "description": "Create an OS Config patch deployment.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Time the patch deployment was created. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "description": {
          "type": "string",
          "description": "Optional. Description of the patch deployment. Length of the description is limited to 1024 characters."
        },
        "duration": {
          "type": "string",
          "description": "Optional. Duration of the patch. After the duration ends, the patch times out."
        },
        "instanceFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchInstanceFilterResponse",
          "description": "VM instances to patch."
        },
        "lastExecuteTime": {
          "type": "string",
          "description": "The last time a patch job was started by this deployment. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        },
        "name": {
          "type": "string",
          "description": "Unique name for the patch deployment resource in a project. The patch deployment name is in the form: `projects/{project_id}/patchDeployments/{patch_deployment_id}`. This field is ignored when you create a new patch deployment."
        },
        "oneTimeSchedule": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:OneTimeScheduleResponse",
          "description": "Schedule a one-time execution."
        },
        "patchConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchConfigResponse",
          "description": "Optional. Patch configuration that is applied."
        },
        "patchDeploymentId": {
          "type": "string",
          "description": "Required. A name for the patch deployment in the project. When creating a name the following rules apply: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recurringSchedule": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:RecurringScheduleResponse",
          "description": "Schedule recurring executions."
        },
        "rollout": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchRolloutResponse",
          "description": "Optional. Rollout strategy of the patch job."
        },
        "state": {
          "type": "string",
          "description": "Current state of the patch deployment."
        },
        "updateTime": {
          "type": "string",
          "description": "Time the patch deployment was last updated. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "duration",
        "instanceFilter",
        "lastExecuteTime",
        "name",
        "oneTimeSchedule",
        "patchConfig",
        "patchDeploymentId",
        "project",
        "recurringSchedule",
        "rollout",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. Description of the patch deployment. Length of the description is limited to 1024 characters."
        },
        "duration": {
          "type": "string",
          "description": "Optional. Duration of the patch. After the duration ends, the patch times out."
        },
        "instanceFilter": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchInstanceFilter",
          "description": "VM instances to patch."
        },
        "name": {
          "type": "string",
          "description": "Unique name for the patch deployment resource in a project. The patch deployment name is in the form: `projects/{project_id}/patchDeployments/{patch_deployment_id}`. This field is ignored when you create a new patch deployment."
        },
        "oneTimeSchedule": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:OneTimeSchedule",
          "description": "Schedule a one-time execution."
        },
        "patchConfig": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchConfig",
          "description": "Optional. Patch configuration that is applied."
        },
        "patchDeploymentId": {
          "type": "string",
          "description": "Required. A name for the patch deployment in the project. When creating a name the following rules apply: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the project.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recurringSchedule": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:RecurringSchedule",
          "description": "Schedule recurring executions."
        },
        "rollout": {
          "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchRollout",
          "description": "Optional. Rollout strategy of the patch job."
        }
      },
      "requiredInputs": [
        "instanceFilter",
        "oneTimeSchedule",
        "patchDeploymentId",
        "recurringSchedule"
      ]
    },
    "google-native:oslogin/v1:SshPublicKey": {
      "description": "Create an SSH public key\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "expirationTimeUsec": {
          "type": "string",
          "description": "An expiration time in microseconds since epoch."
        },
        "fingerprint": {
          "type": "string",
          "description": "The SHA-256 fingerprint of the SSH public key."
        },
        "key": {
          "type": "string",
          "description": "Public key text in SSH format, defined by RFC4253 section 6.6."
        },
        "name": {
          "type": "string",
          "description": "The canonical resource name."
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "expirationTimeUsec",
        "fingerprint",
        "key",
        "name",
        "userId"
      ],
      "inputProperties": {
        "expirationTimeUsec": {
          "type": "string",
          "description": "An expiration time in microseconds since epoch."
        },
        "key": {
          "type": "string",
          "description": "Public key text in SSH format, defined by RFC4253 section 6.6."
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "userId"
      ]
    },
    "google-native:oslogin/v1alpha:SshPublicKey": {
      "description": "Create an SSH public key\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "expirationTimeUsec": {
          "type": "string",
          "description": "An expiration time in microseconds since epoch."
        },
        "fingerprint": {
          "type": "string",
          "description": "The SHA-256 fingerprint of the SSH public key."
        },
        "key": {
          "type": "string",
          "description": "Public key text in SSH format, defined by RFC4253 section 6.6."
        },
        "name": {
          "type": "string",
          "description": "The canonical resource name."
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "expirationTimeUsec",
        "fingerprint",
        "key",
        "name",
        "userId"
      ],
      "inputProperties": {
        "expirationTimeUsec": {
          "type": "string",
          "description": "An expiration time in microseconds since epoch."
        },
        "key": {
          "type": "string",
          "description": "Public key text in SSH format, defined by RFC4253 section 6.6."
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "userId"
      ]
    },
    "google-native:oslogin/v1beta:SshPublicKey": {
      "description": "Create an SSH public key\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "expirationTimeUsec": {
          "type": "string",
          "description": "An expiration time in microseconds since epoch."
        },
        "fingerprint": {
          "type": "string",
          "description": "The SHA-256 fingerprint of the SSH public key."
        },
        "key": {
          "type": "string",
          "description": "Public key text in SSH format, defined by RFC4253 section 6.6."
        },
        "name": {
          "type": "string",
          "description": "The canonical resource name."
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "expirationTimeUsec",
        "fingerprint",
        "key",
        "name",
        "userId"
      ],
      "inputProperties": {
        "expirationTimeUsec": {
          "type": "string",
          "description": "An expiration time in microseconds since epoch."
        },
        "key": {
          "type": "string",
          "description": "Public key text in SSH format, defined by RFC4253 section 6.6."
        },
        "userId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "userId"
      ]
    },
    "google-native:policysimulator/v1:FolderReplay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "folderId",
        "location",
        "name",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "folderId"
      ]
    },
    "google-native:policysimulator/v1:OrganizationReplay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "location",
        "name",
        "organizationId",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "organizationId"
      ]
    },
    "google-native:policysimulator/v1:Replay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "location",
        "name",
        "project",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config"
      ]
    },
    "google-native:policysimulator/v1alpha:FolderReplay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "folderId",
        "location",
        "name",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "folderId"
      ]
    },
    "google-native:policysimulator/v1alpha:OrganizationReplay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "location",
        "name",
        "organizationId",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "organizationId"
      ]
    },
    "google-native:policysimulator/v1alpha:Replay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "location",
        "name",
        "project",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config"
      ]
    },
    "google-native:policysimulator/v1beta1:FolderReplay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "folderId",
        "location",
        "name",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "folderId"
      ]
    },
    "google-native:policysimulator/v1beta1:OrganizationReplay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "location",
        "name",
        "organizationId",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "organizationId"
      ]
    },
    "google-native:policysimulator/v1beta1:Replay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "location",
        "name",
        "project",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config"
      ]
    },
    "google-native:policysimulator/v1beta:FolderReplay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "folderId",
        "location",
        "name",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "folderId"
      ]
    },
    "google-native:policysimulator/v1beta:OrganizationReplay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "location",
        "name",
        "organizationId",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "organizationId"
      ]
    },
    "google-native:policysimulator/v1beta:Replay": {
      "description": "Creates and starts a Replay using the given ReplayConfig.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfigResponse",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resultsSummary": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayResultsSummaryResponse",
          "description": "Summary statistics about the replayed log entries."
        },
        "state": {
          "type": "string",
          "description": "The current state of the `Replay`."
        }
      },
      "type": "object",
      "required": [
        "config",
        "location",
        "name",
        "project",
        "resultsSummary",
        "state"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfig",
          "description": "The configuration used for the `Replay`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config"
      ]
    },
    "google-native:privateca/v1:CaPool": {
      "description": "Create a CaPool.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "caPoolId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "issuancePolicy": {
          "$ref": "#/types/google-native:privateca%2Fv1:IssuancePolicyResponse",
          "description": "Optional. The IssuancePolicy to control how Certificates will be issued from this CaPool."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels with user-defined metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for this CaPool in the format `projects/*/locations/*/caPools/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publishingOptions": {
          "$ref": "#/types/google-native:privateca%2Fv1:PublishingOptionsResponse",
          "description": "Optional. The PublishingOptions to follow when issuing Certificates from any CertificateAuthority in this CaPool."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "tier": {
          "type": "string",
          "description": "Immutable. The Tier of this CaPool."
        }
      },
      "type": "object",
      "required": [
        "caPoolId",
        "issuancePolicy",
        "labels",
        "location",
        "name",
        "project",
        "publishingOptions",
        "tier"
      ],
      "inputProperties": {
        "caPoolId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "issuancePolicy": {
          "$ref": "#/types/google-native:privateca%2Fv1:IssuancePolicy",
          "description": "Optional. The IssuancePolicy to control how Certificates will be issued from this CaPool."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels with user-defined metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "publishingOptions": {
          "$ref": "#/types/google-native:privateca%2Fv1:PublishingOptions",
          "description": "Optional. The PublishingOptions to follow when issuing Certificates from any CertificateAuthority in this CaPool."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "tier": {
          "$ref": "#/types/google-native:privateca%2Fv1:CaPoolTier",
          "description": "Immutable. The Tier of this CaPool."
        }
      },
      "requiredInputs": [
        "caPoolId",
        "tier"
      ]
    },
    "google-native:privateca/v1:CaPoolCertificateAuthorityCertificateRevocationListIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1:CaPoolCertificateAuthorityCertificateRevocationListIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1:CaPoolCertificateAuthorityCertificateRevocationListIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "caPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateAuthorityId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRevocationListId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "caPoolId",
        "certificateAuthorityId",
        "certificateRevocationListId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "caPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateAuthorityId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRevocationListId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "caPoolId",
        "certificateAuthorityId",
        "certificateRevocationListId"
      ]
    },
    "google-native:privateca/v1:CaPoolIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1:CaPoolIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1:CaPoolIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "caPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "caPoolId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "caPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "caPoolId"
      ]
    },
    "google-native:privateca/v1:Certificate": {
      "description": "Create a new Certificate in a given Project, Location from a particular CaPool.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "caPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateDescription": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateDescriptionResponse",
          "description": "A structured description of the issued X.509 certificate."
        },
        "certificateId": {
          "type": "string",
          "description": "Optional. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`. This field is required when using a CertificateAuthority in the Enterprise CertificateAuthority.Tier, but is optional and its value is ignored otherwise."
        },
        "certificateTemplate": {
          "type": "string",
          "description": "Immutable. The resource name for a CertificateTemplate used to issue this certificate, in the format `projects/*/locations/*/certificateTemplates/*`. If this is specified, the caller must have the necessary permission to use this template. If this is omitted, no template will be used. This template must be in the same location as the Certificate."
        },
        "config": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateConfigResponse",
          "description": "Immutable. A description of the certificate and key that does not require X.509 or ASN.1."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this Certificate was created."
        },
        "issuerCertificateAuthority": {
          "type": "string",
          "description": "The resource name of the issuing CertificateAuthority in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`."
        },
        "issuingCertificateAuthorityId": {
          "type": "string",
          "description": "Optional. The resource ID of the CertificateAuthority that should issue the certificate. This optional field will ignore the load-balancing scheme of the Pool and directly issue the certificate from the CA with the specified ID, contained in the same CaPool referenced by `parent`. Per-CA quota rules apply. If left empty, a CertificateAuthority will be chosen from the CaPool by the service. For example, to issue a Certificate from a Certificate Authority with resource name \"projects/my-project/locations/us-central1/caPools/my-pool/certificateAuthorities/my-ca\", you can set the parent to \"projects/my-project/locations/us-central1/caPools/my-pool\" and the issuing_certificate_authority_id to \"my-ca\"."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels with user-defined metadata."
        },
        "lifetime": {
          "type": "string",
          "description": "Immutable. The desired lifetime of a certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate. Note that the lifetime may be truncated if it would extend past the life of any certificate authority in the issuing chain."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for this Certificate in the format `projects/*/locations/*/caPools/*/certificates/*`."
        },
        "pemCertificate": {
          "type": "string",
          "description": "The pem-encoded, signed X.509 certificate."
        },
        "pemCertificateChain": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The chain that may be used to verify the X.509 certificate. Expected to be in issuer-to-root order according to RFC 5246."
        },
        "pemCsr": {
          "type": "string",
          "description": "Immutable. A pem-encoded X.509 certificate signing request (CSR)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "revocationDetails": {
          "$ref": "#/types/google-native:privateca%2Fv1:RevocationDetailsResponse",
          "description": "Details regarding the revocation of this Certificate. This Certificate is considered revoked if and only if this field is present."
        },
        "subjectMode": {
          "type": "string",
          "description": "Immutable. Specifies how the Certificate's identity fields are to be decided. If this is omitted, the `DEFAULT` subject mode will be used."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which this Certificate was updated."
        }
      },
      "type": "object",
      "required": [
        "caPoolId",
        "certificateDescription",
        "certificateTemplate",
        "config",
        "createTime",
        "issuerCertificateAuthority",
        "labels",
        "lifetime",
        "location",
        "name",
        "pemCertificate",
        "pemCertificateChain",
        "pemCsr",
        "project",
        "revocationDetails",
        "subjectMode",
        "updateTime"
      ],
      "inputProperties": {
        "caPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateId": {
          "type": "string",
          "description": "Optional. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`. This field is required when using a CertificateAuthority in the Enterprise CertificateAuthority.Tier, but is optional and its value is ignored otherwise."
        },
        "certificateTemplate": {
          "type": "string",
          "description": "Immutable. The resource name for a CertificateTemplate used to issue this certificate, in the format `projects/*/locations/*/certificateTemplates/*`. If this is specified, the caller must have the necessary permission to use this template. If this is omitted, no template will be used. This template must be in the same location as the Certificate."
        },
        "config": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateConfig",
          "description": "Immutable. A description of the certificate and key that does not require X.509 or ASN.1."
        },
        "issuingCertificateAuthorityId": {
          "type": "string",
          "description": "Optional. The resource ID of the CertificateAuthority that should issue the certificate. This optional field will ignore the load-balancing scheme of the Pool and directly issue the certificate from the CA with the specified ID, contained in the same CaPool referenced by `parent`. Per-CA quota rules apply. If left empty, a CertificateAuthority will be chosen from the CaPool by the service. For example, to issue a Certificate from a Certificate Authority with resource name \"projects/my-project/locations/us-central1/caPools/my-pool/certificateAuthorities/my-ca\", you can set the parent to \"projects/my-project/locations/us-central1/caPools/my-pool\" and the issuing_certificate_authority_id to \"my-ca\"."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels with user-defined metadata."
        },
        "lifetime": {
          "type": "string",
          "description": "Immutable. The desired lifetime of a certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate. Note that the lifetime may be truncated if it would extend past the life of any certificate authority in the issuing chain."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pemCsr": {
          "type": "string",
          "description": "Immutable. A pem-encoded X.509 certificate signing request (CSR)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "subjectMode": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateSubjectMode",
          "description": "Immutable. Specifies how the Certificate's identity fields are to be decided. If this is omitted, the `DEFAULT` subject mode will be used."
        }
      },
      "requiredInputs": [
        "caPoolId",
        "lifetime"
      ]
    },
    "google-native:privateca/v1:CertificateAuthority": {
      "description": "Create a new CertificateAuthority in a given Project and Location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accessUrls": {
          "$ref": "#/types/google-native:privateca%2Fv1:AccessUrlsResponse",
          "description": "URLs for accessing content published by this CA, such as the CA certificate and CRLs."
        },
        "caCertificateDescriptions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:CertificateDescriptionResponse"
          },
          "description": "A structured description of this CertificateAuthority's CA certificate and its issuers. Ordered as self-to-root."
        },
        "caPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateAuthorityId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "config": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateConfigResponse",
          "description": "Immutable. The config used to create a self-signed X.509 certificate or CSR."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this CertificateAuthority was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which this CertificateAuthority was soft deleted, if it is in the DELETED state."
        },
        "expireTime": {
          "type": "string",
          "description": "The time at which this CertificateAuthority will be permanently purged, if it is in the DELETED state."
        },
        "gcsBucket": {
          "type": "string",
          "description": "Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created."
        },
        "keySpec": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyVersionSpecResponse",
          "description": "Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels with user-defined metadata."
        },
        "lifetime": {
          "type": "string",
          "description": "Immutable. The desired lifetime of the CA certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name for this CertificateAuthority in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`."
        },
        "pemCaCertificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "This CertificateAuthority's certificate chain, including the current CertificateAuthority's certificate. Ordered such that the root issuer is the final element (consistent with RFC 5246). For a self-signed CA, this will only list the current CertificateAuthority's certificate."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The State for this CertificateAuthority."
        },
        "subordinateConfig": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubordinateConfigResponse",
          "description": "Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate."
        },
        "tier": {
          "type": "string",
          "description": "The CaPool.Tier of the CaPool that includes this CertificateAuthority."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The Type of this CertificateAuthority."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which this CertificateAuthority was last updated."
        }
      },
      "type": "object",
      "required": [
        "accessUrls",
        "caCertificateDescriptions",
        "caPoolId",
        "certificateAuthorityId",
        "config",
        "createTime",
        "deleteTime",
        "expireTime",
        "gcsBucket",
        "keySpec",
        "labels",
        "lifetime",
        "location",
        "name",
        "pemCaCertificates",
        "project",
        "state",
        "subordinateConfig",
        "tier",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "caPoolId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateAuthorityId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "config": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateConfig",
          "description": "Immutable. The config used to create a self-signed X.509 certificate or CSR."
        },
        "gcsBucket": {
          "type": "string",
          "description": "Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created."
        },
        "keySpec": {
          "$ref": "#/types/google-native:privateca%2Fv1:KeyVersionSpec",
          "description": "Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels with user-defined metadata."
        },
        "lifetime": {
          "type": "string",
          "description": "Immutable. The desired lifetime of the CA certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "subordinateConfig": {
          "$ref": "#/types/google-native:privateca%2Fv1:SubordinateConfig",
          "description": "Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate."
        },
        "type": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateAuthorityType",
          "description": "Immutable. The Type of this CertificateAuthority."
        }
      },
      "requiredInputs": [
        "caPoolId",
        "certificateAuthorityId",
        "config",
        "keySpec",
        "lifetime",
        "type"
      ]
    },
    "google-native:privateca/v1:CertificateTemplate": {
      "description": "Create a new CertificateTemplate in a given Project and Location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "certificateTemplateId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time at which this CertificateTemplate was created."
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of scenarios this template is intended for."
        },
        "identityConstraints": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateIdentityConstraintsResponse",
          "description": "Optional. Describes constraints on identities that may be appear in Certificates issued using this template. If this is omitted, then this template will not add restrictions on a certificate's identity."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels with user-defined metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maximumLifetime": {
          "type": "string",
          "description": "Optional. The maximum lifetime allowed for issued Certificates that use this template. If the issuing CaPool's IssuancePolicy specifies a maximum_lifetime the minimum of the two durations will be the maximum lifetime for issued Certificates. Note that if the issuing CertificateAuthority expires before a Certificate's requested maximum_lifetime, the effective lifetime will be explicitly truncated to match it."
        },
        "name": {
          "type": "string",
          "description": "The resource name for this CertificateTemplate in the format `projects/*/locations/*/certificateTemplates/*`."
        },
        "passthroughExtensions": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateExtensionConstraintsResponse",
          "description": "Optional. Describes the set of X.509 extensions that may appear in a Certificate issued using this CertificateTemplate. If a certificate request sets extensions that don't appear in the passthrough_extensions, those extensions will be dropped. If the issuing CaPool's IssuancePolicy defines baseline_values that don't appear here, the certificate issuance request will fail. If this is omitted, then this template will not add restrictions on a certificate's X.509 extensions. These constraints do not apply to X.509 extensions set in this CertificateTemplate's predefined_values."
        },
        "predefinedValues": {
          "$ref": "#/types/google-native:privateca%2Fv1:X509ParametersResponse",
          "description": "Optional. A set of X.509 values that will be applied to all issued certificates that use this template. If the certificate request includes conflicting values for the same properties, they will be overwritten by the values defined here. If the issuing CaPool's IssuancePolicy defines conflicting baseline_values for the same properties, the certificate issuance request will fail."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which this CertificateTemplate was updated."
        }
      },
      "type": "object",
      "required": [
        "certificateTemplateId",
        "createTime",
        "description",
        "identityConstraints",
        "labels",
        "location",
        "maximumLifetime",
        "name",
        "passthroughExtensions",
        "predefinedValues",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "certificateTemplateId": {
          "type": "string",
          "description": "Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "Optional. A human-readable description of scenarios this template is intended for."
        },
        "identityConstraints": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateIdentityConstraints",
          "description": "Optional. Describes constraints on identities that may be appear in Certificates issued using this template. If this is omitted, then this template will not add restrictions on a certificate's identity."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Labels with user-defined metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maximumLifetime": {
          "type": "string",
          "description": "Optional. The maximum lifetime allowed for issued Certificates that use this template. If the issuing CaPool's IssuancePolicy specifies a maximum_lifetime the minimum of the two durations will be the maximum lifetime for issued Certificates. Note that if the issuing CertificateAuthority expires before a Certificate's requested maximum_lifetime, the effective lifetime will be explicitly truncated to match it."
        },
        "passthroughExtensions": {
          "$ref": "#/types/google-native:privateca%2Fv1:CertificateExtensionConstraints",
          "description": "Optional. Describes the set of X.509 extensions that may appear in a Certificate issued using this CertificateTemplate. If a certificate request sets extensions that don't appear in the passthrough_extensions, those extensions will be dropped. If the issuing CaPool's IssuancePolicy defines baseline_values that don't appear here, the certificate issuance request will fail. If this is omitted, then this template will not add restrictions on a certificate's X.509 extensions. These constraints do not apply to X.509 extensions set in this CertificateTemplate's predefined_values."
        },
        "predefinedValues": {
          "$ref": "#/types/google-native:privateca%2Fv1:X509Parameters",
          "description": "Optional. A set of X.509 values that will be applied to all issued certificates that use this template. If the certificate request includes conflicting values for the same properties, they will be overwritten by the values defined here. If the issuing CaPool's IssuancePolicy defines conflicting baseline_values for the same properties, the certificate issuance request will fail."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "certificateTemplateId"
      ]
    },
    "google-native:privateca/v1:CertificateTemplateIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1:CertificateTemplateIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1:CertificateTemplateIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "certificateTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "certificateTemplateId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "certificateTemplateId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "certificateTemplateId"
      ]
    },
    "google-native:privateca/v1beta1:CertificateAuthorityCertificateRevocationListIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1beta1:CertificateAuthorityCertificateRevocationListIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1beta1:CertificateAuthorityCertificateRevocationListIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "certificateAuthorityId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRevocationListId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "certificateAuthorityId",
        "certificateRevocationListId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "certificateAuthorityId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "certificateRevocationListId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "certificateAuthorityId",
        "certificateRevocationListId"
      ]
    },
    "google-native:privateca/v1beta1:CertificateAuthorityIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1beta1:CertificateAuthorityIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1beta1:CertificateAuthorityIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "certificateAuthorityId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "certificateAuthorityId",
        "etag",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "certificateAuthorityId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "certificateAuthorityId"
      ]
    },
    "google-native:privateca/v1beta1:ReusableConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1beta1:ReusableConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:privateca/v1beta1:ReusableConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reusableConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "reusableConfigId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:privateca%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reusableConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "reusableConfigId"
      ]
    },
    "google-native:pubsub/v1:Schema": {
      "description": "Creates a schema.",
      "properties": {
        "definition": {
          "type": "string",
          "description": "The definition of the schema. This should contain a string representing the full definition of the schema that is a valid schema definition of the type specified in `type`."
        },
        "name": {
          "type": "string",
          "description": "Name of the schema. Format is `projects/{project}/schemas/{schema}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp that the revision was created."
        },
        "revisionId": {
          "type": "string",
          "description": "Immutable. The revision ID of the schema."
        },
        "schemaId": {
          "type": "string",
          "description": "The ID to use for the schema, which will become the final component of the schema's resource name. See https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names for resource name constraints."
        },
        "type": {
          "type": "string",
          "description": "The type of the schema definition."
        }
      },
      "type": "object",
      "required": [
        "definition",
        "name",
        "project",
        "revisionCreateTime",
        "revisionId",
        "type"
      ],
      "inputProperties": {
        "definition": {
          "type": "string",
          "description": "The definition of the schema. This should contain a string representing the full definition of the schema that is a valid schema definition of the type specified in `type`."
        },
        "name": {
          "type": "string",
          "description": "Name of the schema. Format is `projects/{project}/schemas/{schema}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "description": "The ID to use for the schema, which will become the final component of the schema's resource name. See https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names for resource name constraints."
        },
        "type": {
          "$ref": "#/types/google-native:pubsub%2Fv1:SchemaType",
          "description": "The type of the schema definition."
        }
      }
    },
    "google-native:pubsub/v1:SchemaIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1:SchemaIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1:SchemaIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "schemaId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schemaId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "schemaId"
      ]
    },
    "google-native:pubsub/v1:Snapshot": {
      "description": "Creates a snapshot from the requested subscription. Snapshots are used in [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns `ALREADY_EXISTS`. If the requested subscription doesn't exist, returns `NOT_FOUND`. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then `FAILED_PRECONDITION` is returned. See also the `Snapshot.expire_time` field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the [resource name format] (https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "expireTime": {
          "type": "string",
          "description": "Optional. The snapshot is guaranteed to exist up until this time. A newly-created snapshot expires no later than 7 days from the time of its creation. Its exact lifetime is determined at creation by the existing backlog in the source subscription. Specifically, the lifetime of the snapshot is `7 days - (age of oldest unacked message in the subscription)`. For example, consider a subscription whose oldest unacked message is 3 days old. If a snapshot is created from this subscription, the snapshot -- which will always capture this 3-day-old backlog as long as the snapshot exists -- will expire in 4 days. The service will refuse to create a snapshot that would expire in less than 1 hour after creation."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. See [Creating and managing labels] (https://cloud.google.com/pubsub/docs/labels)."
        },
        "name": {
          "type": "string",
          "description": "Optional. The name of the snapshot."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "Optional. The name of the topic from which this snapshot is retaining messages."
        }
      },
      "type": "object",
      "required": [
        "expireTime",
        "labels",
        "name",
        "project",
        "snapshotId",
        "topic"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. See [Creating and managing labels](https://cloud.google.com/pubsub/docs/labels)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subscription": {
          "type": "string",
          "description": "The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the `CreateSnapshot` request; as well as: (b) Any messages published to the subscription's topic following the successful completion of the CreateSnapshot request. Format is `projects/{project}/subscriptions/{sub}`."
        }
      },
      "requiredInputs": [
        "snapshotId",
        "subscription"
      ]
    },
    "google-native:pubsub/v1:SnapshotIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1:SnapshotIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1:SnapshotIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "snapshotId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "snapshotId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "snapshotId"
      ]
    },
    "google-native:pubsub/v1:Subscription": {
      "description": "Creates a subscription to a given topic. See the [resource name rules] (https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). If the subscription already exists, returns `ALREADY_EXISTS`. If the corresponding topic doesn't exist, returns `NOT_FOUND`. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the [resource name format] (https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names). The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.",
      "properties": {
        "ackDeadlineSeconds": {
          "type": "integer",
          "description": "Optional. The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be _outstanding_. During that time period, the message will not be redelivered (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using non-streaming pull or send the `ack_id` in a `StreamingModifyAckDeadlineRequest` if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used. For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message."
        },
        "bigqueryConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:BigQueryConfigResponse",
          "description": "Optional. If delivery to BigQuery is used with this subscription, this field is used to configure it."
        },
        "cloudStorageConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:CloudStorageConfigResponse",
          "description": "Optional. If delivery to Google Cloud Storage is used with this subscription, this field is used to configure it."
        },
        "deadLetterPolicy": {
          "$ref": "#/types/google-native:pubsub%2Fv1:DeadLetterPolicyResponse",
          "description": "Optional. A policy that specifies the conditions for dead lettering messages in this subscription. If dead_letter_policy is not set, dead lettering is disabled. The Pub/Sub service account associated with this subscriptions's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Acknowledge() messages on this subscription."
        },
        "detached": {
          "type": "boolean",
          "description": "Optional. Indicates whether the subscription is detached from its topic. Detached subscriptions don't receive messages from their topic and don't retain any backlog. `Pull` and `StreamingPull` requests will return FAILED_PRECONDITION. If the subscription is a push subscription, pushes to the endpoint will not be made."
        },
        "enableExactlyOnceDelivery": {
          "type": "boolean",
          "description": "Optional. If true, Pub/Sub provides the following guarantees for the delivery of a message with a given value of `message_id` on this subscription: * The message sent to a subscriber is guaranteed not to be resent before the message's acknowledgement deadline expires. * An acknowledged message will not be resent to a subscriber. Note that subscribers may still receive multiple copies of a message when `enable_exactly_once_delivery` is true if the message was published multiple times by a publisher client. These copies are considered distinct by Pub/Sub and have distinct `message_id` values."
        },
        "enableMessageOrdering": {
          "type": "boolean",
          "description": "Optional. If true, messages published with the same `ordering_key` in `PubsubMessage` will be delivered to the subscribers in the order in which they are received by the Pub/Sub system. Otherwise, they may be delivered in any order."
        },
        "expirationPolicy": {
          "$ref": "#/types/google-native:pubsub%2Fv1:ExpirationPolicyResponse",
          "description": "Optional. A policy that specifies the conditions for this subscription's expiration. A subscription is considered active as long as any connected subscriber is successfully consuming messages from the subscription or is issuing operations on the subscription. If `expiration_policy` is not set, a *default policy* with `ttl` of 31 days will be used. The minimum allowed value for `expiration_policy.ttl` is 1 day. If `expiration_policy` is set, but `expiration_policy.ttl` is not set, the subscription never expires."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An expression written in the Pub/Sub [filter language](https://cloud.google.com/pubsub/docs/filtering). If non-empty, then only `PubsubMessage`s whose `attributes` field matches the filter are delivered on this subscription. If empty, then no messages are filtered out."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. See [Creating and managing labels](https://cloud.google.com/pubsub/docs/labels)."
        },
        "messageRetentionDuration": {
          "type": "string",
          "description": "Optional. How long to retain unacknowledged messages in the subscription's backlog, from the moment a message is published. If `retain_acked_messages` is true, then this also configures the retention of acknowledged messages, and thus configures how far back in time a `Seek` can be done. Defaults to 7 days. Cannot be more than 7 days or less than 10 minutes."
        },
        "name": {
          "type": "string",
          "description": "The name of the subscription. It must have the format `\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pushConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:PushConfigResponse",
          "description": "Optional. If push delivery is used with this subscription, this field is used to configure it."
        },
        "retainAckedMessages": {
          "type": "boolean",
          "description": "Optional. Indicates whether to retain acknowledged messages. If true, then messages are not expunged from the subscription's backlog, even if they are acknowledged, until they fall out of the `message_retention_duration` window. This must be true if you would like to [`Seek` to a timestamp] (https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) in the past to replay previously-acknowledged messages."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:pubsub%2Fv1:RetryPolicyResponse",
          "description": "Optional. A policy that specifies how Pub/Sub retries message delivery for this subscription. If not set, the default retry policy is applied. This generally implies that messages will be retried as soon as possible for healthy subscribers. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message."
        },
        "state": {
          "type": "string",
          "description": "An output-only field indicating whether or not the subscription can receive messages."
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`. The value of this field will be `_deleted-topic_` if the topic has been deleted."
        },
        "topicMessageRetentionDuration": {
          "type": "string",
          "description": "Indicates the minimum duration for which a message is retained after it is published to the subscription's topic. If this field is set, messages published to the subscription's topic in the last `topic_message_retention_duration` are always available to subscribers. See the `message_retention_duration` field in `Topic`. This field is set only in responses from the server; it is ignored if it is set in any requests."
        }
      },
      "type": "object",
      "required": [
        "ackDeadlineSeconds",
        "bigqueryConfig",
        "cloudStorageConfig",
        "deadLetterPolicy",
        "detached",
        "enableExactlyOnceDelivery",
        "enableMessageOrdering",
        "expirationPolicy",
        "filter",
        "labels",
        "messageRetentionDuration",
        "name",
        "project",
        "pushConfig",
        "retainAckedMessages",
        "retryPolicy",
        "state",
        "subscriptionId",
        "topic",
        "topicMessageRetentionDuration"
      ],
      "inputProperties": {
        "ackDeadlineSeconds": {
          "type": "integer",
          "description": "Optional. The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be _outstanding_. During that time period, the message will not be redelivered (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using non-streaming pull or send the `ack_id` in a `StreamingModifyAckDeadlineRequest` if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used. For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message."
        },
        "bigqueryConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:BigQueryConfig",
          "description": "Optional. If delivery to BigQuery is used with this subscription, this field is used to configure it."
        },
        "cloudStorageConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:CloudStorageConfig",
          "description": "Optional. If delivery to Google Cloud Storage is used with this subscription, this field is used to configure it."
        },
        "deadLetterPolicy": {
          "$ref": "#/types/google-native:pubsub%2Fv1:DeadLetterPolicy",
          "description": "Optional. A policy that specifies the conditions for dead lettering messages in this subscription. If dead_letter_policy is not set, dead lettering is disabled. The Pub/Sub service account associated with this subscriptions's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Acknowledge() messages on this subscription."
        },
        "detached": {
          "type": "boolean",
          "description": "Optional. Indicates whether the subscription is detached from its topic. Detached subscriptions don't receive messages from their topic and don't retain any backlog. `Pull` and `StreamingPull` requests will return FAILED_PRECONDITION. If the subscription is a push subscription, pushes to the endpoint will not be made."
        },
        "enableExactlyOnceDelivery": {
          "type": "boolean",
          "description": "Optional. If true, Pub/Sub provides the following guarantees for the delivery of a message with a given value of `message_id` on this subscription: * The message sent to a subscriber is guaranteed not to be resent before the message's acknowledgement deadline expires. * An acknowledged message will not be resent to a subscriber. Note that subscribers may still receive multiple copies of a message when `enable_exactly_once_delivery` is true if the message was published multiple times by a publisher client. These copies are considered distinct by Pub/Sub and have distinct `message_id` values."
        },
        "enableMessageOrdering": {
          "type": "boolean",
          "description": "Optional. If true, messages published with the same `ordering_key` in `PubsubMessage` will be delivered to the subscribers in the order in which they are received by the Pub/Sub system. Otherwise, they may be delivered in any order."
        },
        "expirationPolicy": {
          "$ref": "#/types/google-native:pubsub%2Fv1:ExpirationPolicy",
          "description": "Optional. A policy that specifies the conditions for this subscription's expiration. A subscription is considered active as long as any connected subscriber is successfully consuming messages from the subscription or is issuing operations on the subscription. If `expiration_policy` is not set, a *default policy* with `ttl` of 31 days will be used. The minimum allowed value for `expiration_policy.ttl` is 1 day. If `expiration_policy` is set, but `expiration_policy.ttl` is not set, the subscription never expires."
        },
        "filter": {
          "type": "string",
          "description": "Optional. An expression written in the Pub/Sub [filter language](https://cloud.google.com/pubsub/docs/filtering). If non-empty, then only `PubsubMessage`s whose `attributes` field matches the filter are delivered on this subscription. If empty, then no messages are filtered out."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. See [Creating and managing labels](https://cloud.google.com/pubsub/docs/labels)."
        },
        "messageRetentionDuration": {
          "type": "string",
          "description": "Optional. How long to retain unacknowledged messages in the subscription's backlog, from the moment a message is published. If `retain_acked_messages` is true, then this also configures the retention of acknowledged messages, and thus configures how far back in time a `Seek` can be done. Defaults to 7 days. Cannot be more than 7 days or less than 10 minutes."
        },
        "name": {
          "type": "string",
          "description": "The name of the subscription. It must have the format `\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pushConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1:PushConfig",
          "description": "Optional. If push delivery is used with this subscription, this field is used to configure it."
        },
        "retainAckedMessages": {
          "type": "boolean",
          "description": "Optional. Indicates whether to retain acknowledged messages. If true, then messages are not expunged from the subscription's backlog, even if they are acknowledged, until they fall out of the `message_retention_duration` window. This must be true if you would like to [`Seek` to a timestamp] (https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) in the past to replay previously-acknowledged messages."
        },
        "retryPolicy": {
          "$ref": "#/types/google-native:pubsub%2Fv1:RetryPolicy",
          "description": "Optional. A policy that specifies how Pub/Sub retries message delivery for this subscription. If not set, the default retry policy is applied. This generally implies that messages will be retried as soon as possible for healthy subscribers. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message."
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`. The value of this field will be `_deleted-topic_` if the topic has been deleted."
        }
      },
      "requiredInputs": [
        "subscriptionId",
        "topic"
      ]
    },
    "google-native:pubsub/v1:SubscriptionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1:SubscriptionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1:SubscriptionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "subscriptionId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "subscriptionId"
      ]
    },
    "google-native:pubsub/v1:Topic": {
      "description": "Creates the given topic with the given name. See the [resource name rules] (https://cloud.google.com/pubsub/docs/pubsub-basics#resource_names).",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. The resource name of the Cloud KMS CryptoKey to be used to protect access to messages published on this topic. The expected format is `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. See [Creating and managing labels] (https://cloud.google.com/pubsub/docs/labels)."
        },
        "messageRetentionDuration": {
          "type": "string",
          "description": "Optional. Indicates the minimum duration to retain a message after it is published to the topic. If this field is set, messages published to the topic in the last `message_retention_duration` are always available to subscribers. For instance, it allows any attached subscription to [seek to a timestamp](https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) that is up to `message_retention_duration` in the past. If this field is not set, message retention is controlled by settings on individual subscriptions. Cannot be more than 31 days or less than 10 minutes."
        },
        "messageStoragePolicy": {
          "$ref": "#/types/google-native:pubsub%2Fv1:MessageStoragePolicyResponse",
          "description": "Optional. Policy constraining the set of Google Cloud Platform regions where messages published to the topic may be stored. If not present, then no constraints are in effect."
        },
        "name": {
          "type": "string",
          "description": "The name of the topic. It must have the format `\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Optional. Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests."
        },
        "schemaSettings": {
          "$ref": "#/types/google-native:pubsub%2Fv1:SchemaSettingsResponse",
          "description": "Optional. Settings for validating messages published against a schema."
        },
        "topicId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "kmsKeyName",
        "labels",
        "messageRetentionDuration",
        "messageStoragePolicy",
        "name",
        "project",
        "satisfiesPzs",
        "schemaSettings",
        "topicId"
      ],
      "inputProperties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Optional. The resource name of the Cloud KMS CryptoKey to be used to protect access to messages published on this topic. The expected format is `projects/*/locations/*/keyRings/*/cryptoKeys/*`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. See [Creating and managing labels] (https://cloud.google.com/pubsub/docs/labels)."
        },
        "messageRetentionDuration": {
          "type": "string",
          "description": "Optional. Indicates the minimum duration to retain a message after it is published to the topic. If this field is set, messages published to the topic in the last `message_retention_duration` are always available to subscribers. For instance, it allows any attached subscription to [seek to a timestamp](https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) that is up to `message_retention_duration` in the past. If this field is not set, message retention is controlled by settings on individual subscriptions. Cannot be more than 31 days or less than 10 minutes."
        },
        "messageStoragePolicy": {
          "$ref": "#/types/google-native:pubsub%2Fv1:MessageStoragePolicy",
          "description": "Optional. Policy constraining the set of Google Cloud Platform regions where messages published to the topic may be stored. If not present, then no constraints are in effect."
        },
        "name": {
          "type": "string",
          "description": "The name of the topic. It must have the format `\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Optional. Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests."
        },
        "schemaSettings": {
          "$ref": "#/types/google-native:pubsub%2Fv1:SchemaSettings",
          "description": "Optional. Settings for validating messages published against a schema."
        },
        "topicId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "topicId"
      ]
    },
    "google-native:pubsub/v1:TopicIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1:TopicIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1:TopicIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topicId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "topicId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topicId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "topicId"
      ]
    },
    "google-native:pubsub/v1beta1a:Subscription": {
      "description": "Creates a subscription on a given topic for a given subscriber. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic.",
      "properties": {
        "ackDeadlineSeconds": {
          "type": "integer",
          "description": "For either push or pull delivery, the value is the maximum time after a subscriber receives a message before the subscriber should acknowledge or Nack the message. If the Ack deadline for a message passes without an Ack or a Nack, the Pub/Sub system will eventually redeliver the message. If a subscriber acknowledges after the deadline, the Pub/Sub system may accept the Ack, but it is possible that the message has been already delivered again. Multiple Acks to the message are allowed and will succeed. For push delivery, this value is used to set the request timeout for the call to the push endpoint. For pull delivery, this value is used as the initial value for the Ack deadline. It may be overridden for each message using its corresponding ack_id with ModifyAckDeadline. While a message is outstanding (i.e. it has been delivered to a pull subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub system will not deliver that message to another pull subscriber (on a best-effort basis)."
        },
        "name": {
          "type": "string",
          "description": "Name of the subscription."
        },
        "pushConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1beta1a:PushConfigResponse",
          "description": "If push delivery is used with this subscription, this field is used to configure it."
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic from which this subscription is receiving messages."
        }
      },
      "type": "object",
      "required": [
        "ackDeadlineSeconds",
        "name",
        "pushConfig",
        "topic"
      ],
      "inputProperties": {
        "ackDeadlineSeconds": {
          "type": "integer",
          "description": "For either push or pull delivery, the value is the maximum time after a subscriber receives a message before the subscriber should acknowledge or Nack the message. If the Ack deadline for a message passes without an Ack or a Nack, the Pub/Sub system will eventually redeliver the message. If a subscriber acknowledges after the deadline, the Pub/Sub system may accept the Ack, but it is possible that the message has been already delivered again. Multiple Acks to the message are allowed and will succeed. For push delivery, this value is used to set the request timeout for the call to the push endpoint. For pull delivery, this value is used as the initial value for the Ack deadline. It may be overridden for each message using its corresponding ack_id with ModifyAckDeadline. While a message is outstanding (i.e. it has been delivered to a pull subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub system will not deliver that message to another pull subscriber (on a best-effort basis)."
        },
        "name": {
          "type": "string",
          "description": "Name of the subscription."
        },
        "pushConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1beta1a:PushConfig",
          "description": "If push delivery is used with this subscription, this field is used to configure it."
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic from which this subscription is receiving messages."
        }
      }
    },
    "google-native:pubsub/v1beta1a:Topic": {
      "description": "Creates the given topic with the given name.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the topic."
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "Name of the topic."
        }
      }
    },
    "google-native:pubsub/v1beta2:Subscription": {
      "description": "Creates a subscription to a given topic. If the subscription already exists, returns `ALREADY_EXISTS`. If the corresponding topic doesn't exist, returns `NOT_FOUND`. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic. Note that for REST API requests, you must specify a name.",
      "properties": {
        "ackDeadlineSeconds": {
          "type": "integer",
          "description": "This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used."
        },
        "name": {
          "type": "string",
          "description": "The name of the subscription. It must have the format `\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pushConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1beta2:PushConfigResponse",
          "description": "If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods."
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted."
        }
      },
      "type": "object",
      "required": [
        "ackDeadlineSeconds",
        "name",
        "project",
        "pushConfig",
        "subscriptionId",
        "topic"
      ],
      "inputProperties": {
        "ackDeadlineSeconds": {
          "type": "integer",
          "description": "This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used."
        },
        "name": {
          "type": "string",
          "description": "The name of the subscription. It must have the format `\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pushConfig": {
          "$ref": "#/types/google-native:pubsub%2Fv1beta2:PushConfig",
          "description": "If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods."
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted."
        }
      },
      "requiredInputs": [
        "subscriptionId"
      ]
    },
    "google-native:pubsub/v1beta2:SubscriptionIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1beta2:SubscriptionIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1beta2:SubscriptionIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "subscriptionId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1beta2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subscriptionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "subscriptionId"
      ]
    },
    "google-native:pubsub/v1beta2:Topic": {
      "description": "Creates the given topic with the given name.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the topic. It must have the format `\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topicId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "name",
        "project",
        "topicId"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "The name of the topic. It must have the format `\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topicId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "topicId"
      ]
    },
    "google-native:pubsub/v1beta2:TopicIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1beta2:TopicIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:pubsub/v1beta2:TopicIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1beta2:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topicId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "project",
        "topicId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:pubsub%2Fv1beta2:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "topicId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "topicId"
      ]
    },
    "google-native:pubsublite/v1:Reservation": {
      "description": "Creates a new reservation.",
      "properties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the reservation. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationId": {
          "type": "string",
          "description": "Required. The ID to use for the reservation, which will become the final component of the reservation's name. This value is structured like: `my-reservation-name`.",
          "replaceOnChanges": true
        },
        "throughputCapacity": {
          "type": "string",
          "description": "The reserved throughput capacity. Every unit of throughput capacity is equivalent to 1 MiB/s of published messages or 2 MiB/s of subscribed messages. Any topics which are declared as using capacity from a Reservation will consume resources from this reservation instead of being charged individually."
        }
      },
      "type": "object",
      "required": [
        "location",
        "name",
        "project",
        "reservationId",
        "throughputCapacity"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the reservation. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationId": {
          "type": "string",
          "description": "Required. The ID to use for the reservation, which will become the final component of the reservation's name. This value is structured like: `my-reservation-name`.",
          "replaceOnChanges": true
        },
        "throughputCapacity": {
          "type": "string",
          "description": "The reserved throughput capacity. Every unit of throughput capacity is equivalent to 1 MiB/s of published messages or 2 MiB/s of subscribed messages. Any topics which are declared as using capacity from a Reservation will consume resources from this reservation instead of being charged individually."
        }
      },
      "requiredInputs": [
        "reservationId"
      ]
    },
    "google-native:pubsublite/v1:Subscription": {
      "description": "Creates a new subscription.",
      "properties": {
        "deliveryConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:DeliveryConfigResponse",
          "description": "The settings for this subscription's message delivery."
        },
        "exportConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:ExportConfigResponse",
          "description": "If present, messages are automatically written from the Pub/Sub Lite topic associated with this subscription to a destination."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the subscription. Structured like: projects/{project_number}/locations/{location}/subscriptions/{subscription_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "skipBacklog": {
          "type": "boolean",
          "description": "If true, the newly created subscription will only receive messages published after the subscription was created. Otherwise, the entire message backlog will be received on the subscription. Defaults to false."
        },
        "subscriptionId": {
          "type": "string",
          "description": "Required. The ID to use for the subscription, which will become the final component of the subscription's name. This value is structured like: `my-sub-name`.",
          "replaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic this subscription is attached to. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}"
        }
      },
      "type": "object",
      "required": [
        "deliveryConfig",
        "exportConfig",
        "location",
        "name",
        "project",
        "subscriptionId",
        "topic"
      ],
      "inputProperties": {
        "deliveryConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:DeliveryConfig",
          "description": "The settings for this subscription's message delivery."
        },
        "exportConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:ExportConfig",
          "description": "If present, messages are automatically written from the Pub/Sub Lite topic associated with this subscription to a destination."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the subscription. Structured like: projects/{project_number}/locations/{location}/subscriptions/{subscription_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "skipBacklog": {
          "type": "boolean",
          "description": "If true, the newly created subscription will only receive messages published after the subscription was created. Otherwise, the entire message backlog will be received on the subscription. Defaults to false."
        },
        "subscriptionId": {
          "type": "string",
          "description": "Required. The ID to use for the subscription, which will become the final component of the subscription's name. This value is structured like: `my-sub-name`.",
          "replaceOnChanges": true
        },
        "topic": {
          "type": "string",
          "description": "The name of the topic this subscription is attached to. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}"
        }
      },
      "requiredInputs": [
        "subscriptionId"
      ]
    },
    "google-native:pubsublite/v1:Topic": {
      "description": "Creates a new topic.",
      "properties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the topic. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}"
        },
        "partitionConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:PartitionConfigResponse",
          "description": "The settings for this topic's partitions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:ReservationConfigResponse",
          "description": "The settings for this topic's Reservation usage."
        },
        "retentionConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:RetentionConfigResponse",
          "description": "The settings for this topic's message retention."
        },
        "topicId": {
          "type": "string",
          "description": "Required. The ID to use for the topic, which will become the final component of the topic's name. This value is structured like: `my-topic-name`.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "location",
        "name",
        "partitionConfig",
        "project",
        "reservationConfig",
        "retentionConfig",
        "topicId"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the topic. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}"
        },
        "partitionConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:PartitionConfig",
          "description": "The settings for this topic's partitions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reservationConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:ReservationConfig",
          "description": "The settings for this topic's Reservation usage."
        },
        "retentionConfig": {
          "$ref": "#/types/google-native:pubsublite%2Fv1:RetentionConfig",
          "description": "The settings for this topic's message retention."
        },
        "topicId": {
          "type": "string",
          "description": "Required. The ID to use for the topic, which will become the final component of the topic's name. This value is structured like: `my-topic-name`.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "topicId"
      ]
    },
    "google-native:rapidmigrationassessment/v1:Annotation": {
      "description": "Creates an Annotation\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Create time stamp."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests."
        },
        "type": {
          "type": "string",
          "description": "Type of an annotation."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "labels",
        "location",
        "name",
        "project",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests."
        },
        "type": {
          "$ref": "#/types/google-native:rapidmigrationassessment%2Fv1:AnnotationType",
          "description": "Type of an annotation."
        }
      }
    },
    "google-native:rapidmigrationassessment/v1:Collector": {
      "description": "Create a Collector to manage the on-prem appliance which collects information about Customer assets.",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "Store cloud storage bucket name (which is a guid) created with this Collector."
        },
        "clientVersion": {
          "type": "string",
          "description": "Client version."
        },
        "collectionDays": {
          "type": "integer",
          "description": "How many days to collect data."
        },
        "collectorId": {
          "type": "string",
          "description": "Required. Id of the requesting object.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Create time stamp."
        },
        "description": {
          "type": "string",
          "description": "User specified description of the Collector."
        },
        "displayName": {
          "type": "string",
          "description": "User specified name of the Collector."
        },
        "eulaUri": {
          "type": "string",
          "description": "Uri for EULA (End User License Agreement) from customer."
        },
        "expectedAssetCount": {
          "type": "string",
          "description": "User specified expected asset count."
        },
        "guestOsScan": {
          "$ref": "#/types/google-native:rapidmigrationassessment%2Fv1:GuestOsScanResponse",
          "description": "Reference to MC Source Guest Os Scan."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service Account email used to ingest data to this Collector."
        },
        "state": {
          "type": "string",
          "description": "State of the Collector."
        },
        "updateTime": {
          "type": "string",
          "description": "Update time stamp."
        },
        "vsphereScan": {
          "$ref": "#/types/google-native:rapidmigrationassessment%2Fv1:VSphereScanResponse",
          "description": "Reference to MC Source vsphere_scan."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "clientVersion",
        "collectionDays",
        "collectorId",
        "createTime",
        "description",
        "displayName",
        "eulaUri",
        "expectedAssetCount",
        "guestOsScan",
        "labels",
        "location",
        "name",
        "project",
        "serviceAccount",
        "state",
        "updateTime",
        "vsphereScan"
      ],
      "inputProperties": {
        "collectionDays": {
          "type": "integer",
          "description": "How many days to collect data."
        },
        "collectorId": {
          "type": "string",
          "description": "Required. Id of the requesting object.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "User specified description of the Collector."
        },
        "displayName": {
          "type": "string",
          "description": "User specified name of the Collector."
        },
        "eulaUri": {
          "type": "string",
          "description": "Uri for EULA (End User License Agreement) from customer."
        },
        "expectedAssetCount": {
          "type": "string",
          "description": "User specified expected asset count."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests."
        },
        "serviceAccount": {
          "type": "string",
          "description": "Service Account email used to ingest data to this Collector."
        }
      },
      "requiredInputs": [
        "collectorId"
      ]
    },
    "google-native:recaptchaenterprise/v1:Firewallpolicy": {
      "description": "Creates a new FirewallPolicy, specifying conditions at which reCAPTCHA Enterprise actions can be executed. A project may have a maximum of 1000 policies.",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionResponse"
          },
          "description": "Optional. The actions that the caller should take regarding user access. There should be at most one terminal action. A terminal action is any action that forces a response, such as `AllowAction`, `BlockAction` or `SubstituteAction`. Zero or more non-terminal actions such as `SetHeader` might be specified. A single policy can contain up to 16 actions."
        },
        "condition": {
          "type": "string",
          "description": "Optional. A CEL (Common Expression Language) conditional expression that specifies if this policy applies to an incoming user request. If this condition evaluates to true and the requested path matched the path pattern, the associated actions should be executed by the caller. The condition string is checked for CEL syntax correctness on creation. For more information, see the [CEL spec](https://github.com/google/cel-spec) and its [language definition](https://github.com/google/cel-spec/blob/master/doc/langdef.md). A condition has a max length of 500 characters."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of what this policy aims to achieve, for convenience purposes. The description can at most include 256 UTF-8 characters."
        },
        "name": {
          "type": "string",
          "description": "Identifier. The resource name for the FirewallPolicy in the format `projects/{project}/firewallpolicies/{firewallpolicy}`."
        },
        "path": {
          "type": "string",
          "description": "Optional. The path for which this policy applies, specified as a glob pattern. For more information on glob, see the [manual page](https://man7.org/linux/man-pages/man7/glob.7.html). A path has a max length of 200 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "actions",
        "condition",
        "description",
        "name",
        "path",
        "project"
      ],
      "inputProperties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallAction"
          },
          "description": "Optional. The actions that the caller should take regarding user access. There should be at most one terminal action. A terminal action is any action that forces a response, such as `AllowAction`, `BlockAction` or `SubstituteAction`. Zero or more non-terminal actions such as `SetHeader` might be specified. A single policy can contain up to 16 actions."
        },
        "condition": {
          "type": "string",
          "description": "Optional. A CEL (Common Expression Language) conditional expression that specifies if this policy applies to an incoming user request. If this condition evaluates to true and the requested path matched the path pattern, the associated actions should be executed by the caller. The condition string is checked for CEL syntax correctness on creation. For more information, see the [CEL spec](https://github.com/google/cel-spec) and its [language definition](https://github.com/google/cel-spec/blob/master/doc/langdef.md). A condition has a max length of 500 characters."
        },
        "description": {
          "type": "string",
          "description": "Optional. A description of what this policy aims to achieve, for convenience purposes. The description can at most include 256 UTF-8 characters."
        },
        "name": {
          "type": "string",
          "description": "Identifier. The resource name for the FirewallPolicy in the format `projects/{project}/firewallpolicies/{firewallpolicy}`."
        },
        "path": {
          "type": "string",
          "description": "Optional. The path for which this policy applies, specified as a glob pattern. For more information on glob, see the [manual page](https://man7.org/linux/man-pages/man7/glob.7.html). A path has a max length of 200 characters."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:recaptchaenterprise/v1:Key": {
      "description": "Creates a new reCAPTCHA Enterprise key.",
      "properties": {
        "androidSettings": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1AndroidKeySettingsResponse",
          "description": "Settings for keys that can be used by Android apps."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp corresponding to the creation of this key."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of this key. Modifiable by user."
        },
        "iosSettings": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1IOSKeySettingsResponse",
          "description": "Settings for keys that can be used by iOS apps."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. See [Creating and managing labels] (https://cloud.google.com/recaptcha-enterprise/docs/labels)."
        },
        "name": {
          "type": "string",
          "description": "Identifier. The resource name for the Key in the format `projects/{project}/keys/{key}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "testingOptions": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1TestingOptionsResponse",
          "description": "Optional. Options for user acceptance testing."
        },
        "wafSettings": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WafSettingsResponse",
          "description": "Optional. Settings for WAF"
        },
        "webSettings": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WebKeySettingsResponse",
          "description": "Settings for keys that can be used by websites."
        }
      },
      "type": "object",
      "required": [
        "androidSettings",
        "createTime",
        "displayName",
        "iosSettings",
        "labels",
        "name",
        "project",
        "testingOptions",
        "wafSettings",
        "webSettings"
      ],
      "inputProperties": {
        "androidSettings": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1AndroidKeySettings",
          "description": "Settings for keys that can be used by Android apps."
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name of this key. Modifiable by user."
        },
        "iosSettings": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1IOSKeySettings",
          "description": "Settings for keys that can be used by iOS apps."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. See [Creating and managing labels] (https://cloud.google.com/recaptcha-enterprise/docs/labels)."
        },
        "name": {
          "type": "string",
          "description": "Identifier. The resource name for the Key in the format `projects/{project}/keys/{key}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "testingOptions": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1TestingOptions",
          "description": "Optional. Options for user acceptance testing."
        },
        "wafSettings": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WafSettings",
          "description": "Optional. Settings for WAF"
        },
        "webSettings": {
          "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WebKeySettings",
          "description": "Settings for keys that can be used by websites."
        }
      },
      "requiredInputs": [
        "displayName"
      ]
    },
    "google-native:recommendationengine/v1beta1:CatalogItem": {
      "description": "Creates a catalog item.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "categoryHierarchies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1CatalogItemCategoryHierarchyResponse"
          },
          "description": "Catalog item categories. This field is repeated for supporting one catalog item belonging to several parallel category hierarchies. For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categoryHierarchies\": [ { \"categories\": [\"Shoes & Accessories\", \"Shoes\"]}, { \"categories\": [\"Sports & Fitness\", \"Athletic Clothing\", \"Shoes\"] } ]"
        },
        "description": {
          "type": "string",
          "description": "Optional. Catalog item description. UTF-8 encoded string with a length limit of 5 KiB."
        },
        "itemAttributes": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1FeatureMapResponse",
          "description": "Optional. Highly encouraged. Extra catalog item attributes to be included in the recommendation model. For example, for retail products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the item attributes here."
        },
        "itemGroupId": {
          "type": "string",
          "description": "Optional. Variant group identifier for prediction results. UTF-8 encoded string with a length limit of 128 bytes. This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id)."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. Deprecated. The model automatically detects the text language. Your catalog can include text in different languages, but duplicating catalog items to provide text in multiple languages can result in degraded model performance.",
          "deprecationMessage": "Optional. Deprecated. The model automatically detects the text language. Your catalog can include text in different languages, but duplicating catalog items to provide text in multiple languages can result in degraded model performance."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "productMetadata": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemResponse",
          "description": "Optional. Metadata specific to retail products."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Filtering tags associated with the catalog item. Each tag should be a UTF-8 encoded string with a length limit of 1 KiB. This tag can be used for filtering recommendation results by passing the tag as part of the predict request filter."
        },
        "title": {
          "type": "string",
          "description": "Catalog item title. UTF-8 encoded string with a length limit of 1 KiB."
        }
      },
      "type": "object",
      "required": [
        "catalogId",
        "categoryHierarchies",
        "description",
        "itemAttributes",
        "itemGroupId",
        "languageCode",
        "location",
        "productMetadata",
        "project",
        "tags",
        "title"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "categoryHierarchies": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1CatalogItemCategoryHierarchy"
          },
          "description": "Catalog item categories. This field is repeated for supporting one catalog item belonging to several parallel category hierarchies. For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categoryHierarchies\": [ { \"categories\": [\"Shoes & Accessories\", \"Shoes\"]}, { \"categories\": [\"Sports & Fitness\", \"Athletic Clothing\", \"Shoes\"] } ]"
        },
        "description": {
          "type": "string",
          "description": "Optional. Catalog item description. UTF-8 encoded string with a length limit of 5 KiB."
        },
        "id": {
          "type": "string",
          "description": "Catalog item identifier. UTF-8 encoded string with a length limit of 128 bytes. This id must be unique among all catalog items within the same catalog. It should also be used when logging user events in order for the user events to be joined with the Catalog."
        },
        "itemAttributes": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1FeatureMap",
          "description": "Optional. Highly encouraged. Extra catalog item attributes to be included in the recommendation model. For example, for retail products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the item attributes here."
        },
        "itemGroupId": {
          "type": "string",
          "description": "Optional. Variant group identifier for prediction results. UTF-8 encoded string with a length limit of 128 bytes. This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id)."
        },
        "languageCode": {
          "type": "string",
          "description": "Optional. Deprecated. The model automatically detects the text language. Your catalog can include text in different languages, but duplicating catalog items to provide text in multiple languages can result in degraded model performance.",
          "deprecationMessage": "Optional. Deprecated. The model automatically detects the text language. Your catalog can include text in different languages, but duplicating catalog items to provide text in multiple languages can result in degraded model performance."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "productMetadata": {
          "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItem",
          "description": "Optional. Metadata specific to retail products."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Filtering tags associated with the catalog item. Each tag should be a UTF-8 encoded string with a length limit of 1 KiB. This tag can be used for filtering recommendation results by passing the tag as part of the predict request filter."
        },
        "title": {
          "type": "string",
          "description": "Catalog item title. UTF-8 encoded string with a length limit of 1 KiB."
        }
      },
      "requiredInputs": [
        "catalogId",
        "categoryHierarchies",
        "id",
        "title"
      ]
    },
    "google-native:redis/v1:Cluster": {
      "description": "Creates a Redis cluster based on the specified properties. The creation is executed asynchronously and callers may check the returned operation to track its progress. Once the operation is completed the Redis cluster will be fully functional. The completed longrunning.Operation will contain the new cluster object in the response field. The returned operation is automatically deleted after a few hours, so there is no need to call DeleteOperation.",
      "properties": {
        "authorizationMode": {
          "type": "string",
          "description": "Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. The logical name of the Redis cluster in the customer project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp associated with the cluster creation request."
        },
        "discoveryEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:DiscoveryEndpointResponse"
          },
          "description": "Endpoints created on each given network, for Redis clients to connect to the cluster. Currently only one discovery endpoint is supported."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:PscConfigResponse"
          },
          "description": "Each PscConfig configures the consumer network where IPs will be designated to the cluster for client access through Private Service Connect Automation. Currently, only one PscConfig is supported."
        },
        "pscConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:PscConnectionResponse"
          },
          "description": "PSC connections for discovery of the cluster topology and accessing the cluster."
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. The number of replica nodes per shard."
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "shardCount": {
          "type": "integer",
          "description": "Number of shards for the Redis cluster."
        },
        "sizeGb": {
          "type": "integer",
          "description": "Redis memory size in GB for the entire cluster."
        },
        "state": {
          "type": "string",
          "description": "The current state of this cluster. Can be CREATING, READY, UPDATING, DELETING and SUSPENDED"
        },
        "stateInfo": {
          "$ref": "#/types/google-native:redis%2Fv1:StateInfoResponse",
          "description": "Additional information about the current state of the cluster."
        },
        "transitEncryptionMode": {
          "type": "string",
          "description": "Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster."
        },
        "uid": {
          "type": "string",
          "description": "System assigned, unique identifier for the cluster."
        }
      },
      "type": "object",
      "required": [
        "authorizationMode",
        "clusterId",
        "createTime",
        "discoveryEndpoints",
        "location",
        "name",
        "project",
        "pscConfigs",
        "pscConnections",
        "replicaCount",
        "shardCount",
        "sizeGb",
        "state",
        "stateInfo",
        "transitEncryptionMode",
        "uid"
      ],
      "inputProperties": {
        "authorizationMode": {
          "$ref": "#/types/google-native:redis%2Fv1:ClusterAuthorizationMode",
          "description": "Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. The logical name of the Redis cluster in the customer project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:PscConfig"
          },
          "description": "Each PscConfig configures the consumer network where IPs will be designated to the cluster for client access through Private Service Connect Automation. Currently, only one PscConfig is supported."
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. The number of replica nodes per shard."
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "shardCount": {
          "type": "integer",
          "description": "Number of shards for the Redis cluster."
        },
        "transitEncryptionMode": {
          "$ref": "#/types/google-native:redis%2Fv1:ClusterTransitEncryptionMode",
          "description": "Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster."
        }
      },
      "requiredInputs": [
        "clusterId",
        "pscConfigs",
        "shardCount"
      ]
    },
    "google-native:redis/v1:Instance": {
      "description": "Creates a Redis instance based on the specified tier and memory size. By default, the instance is accessible from the project's [default network](https://cloud.google.com/vpc/docs/vpc). The creation is executed asynchronously and callers may check the returned operation to track its progress. Once the operation is completed the Redis instance will be fully functional. Completed longrunning.Operation will contain the new instance object in the response field. The returned operation is automatically deleted after a few hours, so there is no need to call DeleteOperation.",
      "properties": {
        "alternativeLocationId": {
          "type": "string",
          "description": "Optional. If specified, at least one node will be provisioned in this zone in addition to the zone specified in location_id. Only applicable to standard tier. If provided, it must be a different zone from the one provided in [location_id]. Additional nodes beyond the first 2 will be placed in zones selected by the service."
        },
        "authEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether OSS Redis AUTH is enabled for the instance. If set to \"true\" AUTH is enabled on the instance. Default value is \"false\" meaning AUTH is disabled."
        },
        "authorizedNetwork": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used."
        },
        "availableMaintenanceVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The available maintenance versions that an instance could update to."
        },
        "connectMode": {
          "type": "string",
          "description": "Optional. The network connect mode of the Redis instance. If not provided, the connect mode defaults to DIRECT_PEERING."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "currentLocationId": {
          "type": "string",
          "description": "The current zone where the Redis primary node is located. In basic tier, this will always be the same as [location_id]. In standard tier, this can be the zone of any node in the instance."
        },
        "customerManagedKey": {
          "type": "string",
          "description": "Optional. The KMS key reference that the customer provides when trying to create the instance."
        },
        "displayName": {
          "type": "string",
          "description": "An arbitrary and optional user-provided name for the instance."
        },
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the exposed Redis endpoint used by clients to connect to the service."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The logical name of the Redis instance in the customer project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:redis%2Fv1:MaintenancePolicyResponse",
          "description": "Optional. The maintenance policy for the instance. If not provided, maintenance events can be performed at any time."
        },
        "maintenanceSchedule": {
          "$ref": "#/types/google-native:redis%2Fv1:MaintenanceScheduleResponse",
          "description": "Date and time of upcoming maintenance events which have been scheduled."
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "Optional. The self service update maintenance version. The version is date based such as \"20210712_00_00\"."
        },
        "memorySizeGb": {
          "type": "integer",
          "description": "Redis memory size in GiB."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Redis instances are managed and addressed at regional level so location_id here refers to a GCP region; however, users may choose which specific zone (or collection of zones for cross-zone instances) an instance should be provisioned in. Refer to location_id and alternative_location_id fields for more details."
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:NodeInfoResponse"
          },
          "description": "Info per node."
        },
        "persistenceConfig": {
          "$ref": "#/types/google-native:redis%2Fv1:PersistenceConfigResponse",
          "description": "Optional. Persistence configuration parameters"
        },
        "persistenceIamIdentity": {
          "type": "string",
          "description": "Cloud IAM identity used by import / export operations to transfer data to/from Cloud Storage. Format is \"serviceAccount:\". The value may change over time for a given instance so should be checked before each import/export operation."
        },
        "port": {
          "type": "integer",
          "description": "The port number of the exposed Redis endpoint."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readEndpoint": {
          "type": "string",
          "description": "Hostname or IP address of the exposed readonly Redis endpoint. Standard tier only. Targets all healthy replica nodes in instance. Replication is asynchronous and replica nodes will exhibit some lag behind the primary. Write requests must target 'host'."
        },
        "readEndpointPort": {
          "type": "integer",
          "description": "The port number of the exposed readonly redis endpoint. Standard tier only. Write requests should target 'port'."
        },
        "readReplicasMode": {
          "type": "string",
          "description": "Optional. Read replicas mode for the instance. Defaults to READ_REPLICAS_DISABLED."
        },
        "redisConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Redis configuration parameters, according to http://redis.io/topics/config. Currently, the only supported parameters are: Redis version 3.2 and newer: * maxmemory-policy * notify-keyspace-events Redis version 4.0 and newer: * activedefrag * lfu-decay-time * lfu-log-factor * maxmemory-gb Redis version 5.0 and newer: * stream-node-max-bytes * stream-node-max-entries"
        },
        "redisVersion": {
          "type": "string",
          "description": "Optional. The version of Redis software. If not provided, latest supported version will be used. Currently, the supported values are: * `REDIS_3_2` for Redis 3.2 compatibility * `REDIS_4_0` for Redis 4.0 compatibility (default) * `REDIS_5_0` for Redis 5.0 compatibility * `REDIS_6_X` for Redis 6.x compatibility"
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. The number of replica nodes. The valid range for the Standard Tier with read replicas enabled is [1-5] and defaults to 2. If read replicas are not enabled for a Standard Tier instance, the only valid value is 1 and the default is 1. The valid value for basic tier is 0 and the default is also 0."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional. For DIRECT_PEERING mode, the CIDR range of internal addresses that are reserved for this instance. Range must be unique and non-overlapping with existing subnets in an authorized network. For PRIVATE_SERVICE_ACCESS mode, the name of one allocated IP address ranges associated with this private service access connection. If not provided, the service will choose an unused /29 block, for example, 10.0.0.0/29 or 192.168.0.0/29. For READ_REPLICAS_ENABLED the default block size is /28."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Optional. Output only. Reserved for future use. Zone Separation compliance state of the instance. Field name and documentation is obfuscated according to go/zs-resource-status."
        },
        "secondaryIpRange": {
          "type": "string",
          "description": "Optional. Additional IP range for node placement. Required when enabling read replicas on an existing instance. For DIRECT_PEERING mode value must be a CIDR range of size /28, or \"auto\". For PRIVATE_SERVICE_ACCESS mode value must be the name of an allocated address range associated with the private service access connection, or \"auto\"."
        },
        "serverCaCerts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:TlsCertificateResponse"
          },
          "description": "List of server CA certificates for the instance."
        },
        "state": {
          "type": "string",
          "description": "The current state of this instance."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this instance, if available."
        },
        "suspensionReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. reasons that causes instance in \"SUSPENDED\" state."
        },
        "tier": {
          "type": "string",
          "description": "The service tier of the instance."
        },
        "transitEncryptionMode": {
          "type": "string",
          "description": "Optional. The TLS mode of the Redis instance. If not provided, TLS is disabled for the instance."
        }
      },
      "type": "object",
      "required": [
        "alternativeLocationId",
        "authEnabled",
        "authorizedNetwork",
        "availableMaintenanceVersions",
        "connectMode",
        "createTime",
        "currentLocationId",
        "customerManagedKey",
        "displayName",
        "host",
        "instanceId",
        "labels",
        "location",
        "maintenancePolicy",
        "maintenanceSchedule",
        "maintenanceVersion",
        "memorySizeGb",
        "name",
        "nodes",
        "persistenceConfig",
        "persistenceIamIdentity",
        "port",
        "project",
        "readEndpoint",
        "readEndpointPort",
        "readReplicasMode",
        "redisConfigs",
        "redisVersion",
        "replicaCount",
        "reservedIpRange",
        "satisfiesPzs",
        "secondaryIpRange",
        "serverCaCerts",
        "state",
        "statusMessage",
        "suspensionReasons",
        "tier",
        "transitEncryptionMode"
      ],
      "inputProperties": {
        "alternativeLocationId": {
          "type": "string",
          "description": "Optional. If specified, at least one node will be provisioned in this zone in addition to the zone specified in location_id. Only applicable to standard tier. If provided, it must be a different zone from the one provided in [location_id]. Additional nodes beyond the first 2 will be placed in zones selected by the service."
        },
        "authEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether OSS Redis AUTH is enabled for the instance. If set to \"true\" AUTH is enabled on the instance. Default value is \"false\" meaning AUTH is disabled."
        },
        "authorizedNetwork": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used."
        },
        "availableMaintenanceVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The available maintenance versions that an instance could update to."
        },
        "connectMode": {
          "$ref": "#/types/google-native:redis%2Fv1:InstanceConnectMode",
          "description": "Optional. The network connect mode of the Redis instance. If not provided, the connect mode defaults to DIRECT_PEERING."
        },
        "customerManagedKey": {
          "type": "string",
          "description": "Optional. The KMS key reference that the customer provides when trying to create the instance."
        },
        "displayName": {
          "type": "string",
          "description": "An arbitrary and optional user-provided name for the instance."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The logical name of the Redis instance in the customer project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata"
        },
        "location": {
          "type": "string",
          "description": "Optional. The zone where the instance will be provisioned. If not provided, the service will choose a zone from the specified region for the instance. For standard tier, additional nodes will be added across multiple zones for protection against zonal failures. If specified, at least one node will be provisioned in this zone."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:redis%2Fv1:MaintenancePolicy",
          "description": "Optional. The maintenance policy for the instance. If not provided, maintenance events can be performed at any time."
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "Optional. The self service update maintenance version. The version is date based such as \"20210712_00_00\"."
        },
        "memorySizeGb": {
          "type": "integer",
          "description": "Redis memory size in GiB."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Redis instances are managed and addressed at regional level so location_id here refers to a GCP region; however, users may choose which specific zone (or collection of zones for cross-zone instances) an instance should be provisioned in. Refer to location_id and alternative_location_id fields for more details."
        },
        "persistenceConfig": {
          "$ref": "#/types/google-native:redis%2Fv1:PersistenceConfig",
          "description": "Optional. Persistence configuration parameters"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readReplicasMode": {
          "$ref": "#/types/google-native:redis%2Fv1:InstanceReadReplicasMode",
          "description": "Optional. Read replicas mode for the instance. Defaults to READ_REPLICAS_DISABLED."
        },
        "redisConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Redis configuration parameters, according to http://redis.io/topics/config. Currently, the only supported parameters are: Redis version 3.2 and newer: * maxmemory-policy * notify-keyspace-events Redis version 4.0 and newer: * activedefrag * lfu-decay-time * lfu-log-factor * maxmemory-gb Redis version 5.0 and newer: * stream-node-max-bytes * stream-node-max-entries"
        },
        "redisVersion": {
          "type": "string",
          "description": "Optional. The version of Redis software. If not provided, latest supported version will be used. Currently, the supported values are: * `REDIS_3_2` for Redis 3.2 compatibility * `REDIS_4_0` for Redis 4.0 compatibility (default) * `REDIS_5_0` for Redis 5.0 compatibility * `REDIS_6_X` for Redis 6.x compatibility"
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. The number of replica nodes. The valid range for the Standard Tier with read replicas enabled is [1-5] and defaults to 2. If read replicas are not enabled for a Standard Tier instance, the only valid value is 1 and the default is 1. The valid value for basic tier is 0 and the default is also 0."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional. For DIRECT_PEERING mode, the CIDR range of internal addresses that are reserved for this instance. Range must be unique and non-overlapping with existing subnets in an authorized network. For PRIVATE_SERVICE_ACCESS mode, the name of one allocated IP address ranges associated with this private service access connection. If not provided, the service will choose an unused /29 block, for example, 10.0.0.0/29 or 192.168.0.0/29. For READ_REPLICAS_ENABLED the default block size is /28."
        },
        "secondaryIpRange": {
          "type": "string",
          "description": "Optional. Additional IP range for node placement. Required when enabling read replicas on an existing instance. For DIRECT_PEERING mode value must be a CIDR range of size /28, or \"auto\". For PRIVATE_SERVICE_ACCESS mode value must be the name of an allocated address range associated with the private service access connection, or \"auto\"."
        },
        "suspensionReasons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1:InstanceSuspensionReasonsItem"
          },
          "description": "Optional. reasons that causes instance in \"SUSPENDED\" state."
        },
        "tier": {
          "$ref": "#/types/google-native:redis%2Fv1:InstanceTier",
          "description": "The service tier of the instance."
        },
        "transitEncryptionMode": {
          "$ref": "#/types/google-native:redis%2Fv1:InstanceTransitEncryptionMode",
          "description": "Optional. The TLS mode of the Redis instance. If not provided, TLS is disabled for the instance."
        }
      },
      "requiredInputs": [
        "instanceId",
        "memorySizeGb",
        "tier"
      ]
    },
    "google-native:redis/v1beta1:Cluster": {
      "description": "Creates a Redis cluster based on the specified properties. The creation is executed asynchronously and callers may check the returned operation to track its progress. Once the operation is completed the Redis cluster will be fully functional. The completed longrunning.Operation will contain the new cluster object in the response field. The returned operation is automatically deleted after a few hours, so there is no need to call DeleteOperation.",
      "properties": {
        "authorizationMode": {
          "type": "string",
          "description": "Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. The logical name of the Redis cluster in the customer project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp associated with the cluster creation request."
        },
        "discoveryEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:DiscoveryEndpointResponse"
          },
          "description": "Endpoints created on each given network, for Redis clients to connect to the cluster. Currently only one discovery endpoint is supported."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:PscConfigResponse"
          },
          "description": "Each PscConfig configures the consumer network where IPs will be designated to the cluster for client access through Private Service Connect Automation. Currently, only one PscConfig is supported."
        },
        "pscConnections": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:PscConnectionResponse"
          },
          "description": "PSC connections for discovery of the cluster topology and accessing the cluster."
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. The number of replica nodes per shard."
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "shardCount": {
          "type": "integer",
          "description": "Number of shards for the Redis cluster."
        },
        "sizeGb": {
          "type": "integer",
          "description": "Redis memory size in GB for the entire cluster."
        },
        "state": {
          "type": "string",
          "description": "The current state of this cluster. Can be CREATING, READY, UPDATING, DELETING and SUSPENDED"
        },
        "stateInfo": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:StateInfoResponse",
          "description": "Additional information about the current state of the cluster."
        },
        "transitEncryptionMode": {
          "type": "string",
          "description": "Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster."
        },
        "uid": {
          "type": "string",
          "description": "System assigned, unique identifier for the cluster."
        }
      },
      "type": "object",
      "required": [
        "authorizationMode",
        "clusterId",
        "createTime",
        "discoveryEndpoints",
        "location",
        "name",
        "project",
        "pscConfigs",
        "pscConnections",
        "replicaCount",
        "shardCount",
        "sizeGb",
        "state",
        "stateInfo",
        "transitEncryptionMode",
        "uid"
      ],
      "inputProperties": {
        "authorizationMode": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:ClusterAuthorizationMode",
          "description": "Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster."
        },
        "clusterId": {
          "type": "string",
          "description": "Required. The logical name of the Redis cluster in the customer project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:PscConfig"
          },
          "description": "Each PscConfig configures the consumer network where IPs will be designated to the cluster for client access through Private Service Connect Automation. Currently, only one PscConfig is supported."
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. The number of replica nodes per shard."
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "shardCount": {
          "type": "integer",
          "description": "Number of shards for the Redis cluster."
        },
        "transitEncryptionMode": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:ClusterTransitEncryptionMode",
          "description": "Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster."
        }
      },
      "requiredInputs": [
        "clusterId",
        "pscConfigs",
        "shardCount"
      ]
    },
    "google-native:redis/v1beta1:Instance": {
      "description": "Creates a Redis instance based on the specified tier and memory size. By default, the instance is accessible from the project's [default network](https://cloud.google.com/vpc/docs/vpc). The creation is executed asynchronously and callers may check the returned operation to track its progress. Once the operation is completed the Redis instance will be fully functional. The completed longrunning.Operation will contain the new instance object in the response field. The returned operation is automatically deleted after a few hours, so there is no need to call DeleteOperation.",
      "properties": {
        "alternativeLocationId": {
          "type": "string",
          "description": "Optional. If specified, at least one node will be provisioned in this zone in addition to the zone specified in location_id. Only applicable to standard tier. If provided, it must be a different zone from the one provided in [location_id]. Additional nodes beyond the first 2 will be placed in zones selected by the service."
        },
        "authEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether OSS Redis AUTH is enabled for the instance. If set to \"true\" AUTH is enabled on the instance. Default value is \"false\" meaning AUTH is disabled."
        },
        "authorizedNetwork": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used."
        },
        "availableMaintenanceVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The available maintenance versions that an instance could update to."
        },
        "connectMode": {
          "type": "string",
          "description": "Optional. The network connect mode of the Redis instance. If not provided, the connect mode defaults to DIRECT_PEERING."
        },
        "createTime": {
          "type": "string",
          "description": "The time the instance was created."
        },
        "currentLocationId": {
          "type": "string",
          "description": "The current zone where the Redis primary node is located. In basic tier, this will always be the same as [location_id]. In standard tier, this can be the zone of any node in the instance."
        },
        "customerManagedKey": {
          "type": "string",
          "description": "Optional. The KMS key reference that the customer provides when trying to create the instance."
        },
        "displayName": {
          "type": "string",
          "description": "An arbitrary and optional user-provided name for the instance."
        },
        "host": {
          "type": "string",
          "description": "Hostname or IP address of the exposed Redis endpoint used by clients to connect to the service."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The logical name of the Redis instance in the customer project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:MaintenancePolicyResponse",
          "description": "Optional. The maintenance policy for the instance. If not provided, maintenance events can be performed at any time."
        },
        "maintenanceSchedule": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:MaintenanceScheduleResponse",
          "description": "Date and time of upcoming maintenance events which have been scheduled."
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "Optional. The self service update maintenance version. The version is date based such as \"20210712_00_00\"."
        },
        "memorySizeGb": {
          "type": "integer",
          "description": "Redis memory size in GiB."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Redis instances are managed and addressed at regional level so location_id here refers to a GCP region; however, users may choose which specific zone (or collection of zones for cross-zone instances) an instance should be provisioned in. Refer to location_id and alternative_location_id fields for more details."
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:NodeInfoResponse"
          },
          "description": "Info per node."
        },
        "persistenceConfig": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:PersistenceConfigResponse",
          "description": "Optional. Persistence configuration parameters"
        },
        "persistenceIamIdentity": {
          "type": "string",
          "description": "Cloud IAM identity used by import / export operations to transfer data to/from Cloud Storage. Format is \"serviceAccount:\". The value may change over time for a given instance so should be checked before each import/export operation."
        },
        "port": {
          "type": "integer",
          "description": "The port number of the exposed Redis endpoint."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readEndpoint": {
          "type": "string",
          "description": "Hostname or IP address of the exposed readonly Redis endpoint. Standard tier only. Targets all healthy replica nodes in instance. Replication is asynchronous and replica nodes will exhibit some lag behind the primary. Write requests must target 'host'."
        },
        "readEndpointPort": {
          "type": "integer",
          "description": "The port number of the exposed readonly redis endpoint. Standard tier only. Write requests should target 'port'."
        },
        "readReplicasMode": {
          "type": "string",
          "description": "Optional. Read replicas mode for the instance. Defaults to READ_REPLICAS_DISABLED."
        },
        "redisConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Redis configuration parameters, according to http://redis.io/topics/config. Currently, the only supported parameters are: Redis version 3.2 and newer: * maxmemory-policy * notify-keyspace-events Redis version 4.0 and newer: * activedefrag * lfu-decay-time * lfu-log-factor * maxmemory-gb Redis version 5.0 and newer: * stream-node-max-bytes * stream-node-max-entries"
        },
        "redisVersion": {
          "type": "string",
          "description": "Optional. The version of Redis software. If not provided, latest supported version will be used. Currently, the supported values are: * `REDIS_3_2` for Redis 3.2 compatibility * `REDIS_4_0` for Redis 4.0 compatibility (default) * `REDIS_5_0` for Redis 5.0 compatibility * `REDIS_6_X` for Redis 6.x compatibility"
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. The number of replica nodes. The valid range for the Standard Tier with read replicas enabled is [1-5] and defaults to 2. If read replicas are not enabled for a Standard Tier instance, the only valid value is 1 and the default is 1. The valid value for basic tier is 0 and the default is also 0."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional. For DIRECT_PEERING mode, the CIDR range of internal addresses that are reserved for this instance. Range must be unique and non-overlapping with existing subnets in an authorized network. For PRIVATE_SERVICE_ACCESS mode, the name of one allocated IP address ranges associated with this private service access connection. If not provided, the service will choose an unused /29 block, for example, 10.0.0.0/29 or 192.168.0.0/29. For READ_REPLICAS_ENABLED the default block size is /28."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Optional. Output only. Reserved for future use. Zone Separation compliance state of the instance. Field name and documentation is obfuscated according to go/zs-resource-status."
        },
        "secondaryIpRange": {
          "type": "string",
          "description": "Optional. Additional IP range for node placement. Required when enabling read replicas on an existing instance. For DIRECT_PEERING mode value must be a CIDR range of size /28, or \"auto\". For PRIVATE_SERVICE_ACCESS mode value must be the name of an allocated address range associated with the private service access connection, or \"auto\"."
        },
        "serverCaCerts": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:TlsCertificateResponse"
          },
          "description": "List of server CA certificates for the instance."
        },
        "state": {
          "type": "string",
          "description": "The current state of this instance."
        },
        "statusMessage": {
          "type": "string",
          "description": "Additional information about the current status of this instance, if available."
        },
        "suspensionReasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. reasons that causes instance in \"SUSPENDED\" state."
        },
        "tier": {
          "type": "string",
          "description": "The service tier of the instance."
        },
        "transitEncryptionMode": {
          "type": "string",
          "description": "Optional. The TLS mode of the Redis instance. If not provided, TLS is disabled for the instance."
        }
      },
      "type": "object",
      "required": [
        "alternativeLocationId",
        "authEnabled",
        "authorizedNetwork",
        "availableMaintenanceVersions",
        "connectMode",
        "createTime",
        "currentLocationId",
        "customerManagedKey",
        "displayName",
        "host",
        "instanceId",
        "labels",
        "location",
        "maintenancePolicy",
        "maintenanceSchedule",
        "maintenanceVersion",
        "memorySizeGb",
        "name",
        "nodes",
        "persistenceConfig",
        "persistenceIamIdentity",
        "port",
        "project",
        "readEndpoint",
        "readEndpointPort",
        "readReplicasMode",
        "redisConfigs",
        "redisVersion",
        "replicaCount",
        "reservedIpRange",
        "satisfiesPzs",
        "secondaryIpRange",
        "serverCaCerts",
        "state",
        "statusMessage",
        "suspensionReasons",
        "tier",
        "transitEncryptionMode"
      ],
      "inputProperties": {
        "alternativeLocationId": {
          "type": "string",
          "description": "Optional. If specified, at least one node will be provisioned in this zone in addition to the zone specified in location_id. Only applicable to standard tier. If provided, it must be a different zone from the one provided in [location_id]. Additional nodes beyond the first 2 will be placed in zones selected by the service."
        },
        "authEnabled": {
          "type": "boolean",
          "description": "Optional. Indicates whether OSS Redis AUTH is enabled for the instance. If set to \"true\" AUTH is enabled on the instance. Default value is \"false\" meaning AUTH is disabled."
        },
        "authorizedNetwork": {
          "type": "string",
          "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used."
        },
        "availableMaintenanceVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. The available maintenance versions that an instance could update to."
        },
        "connectMode": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:InstanceConnectMode",
          "description": "Optional. The network connect mode of the Redis instance. If not provided, the connect mode defaults to DIRECT_PEERING."
        },
        "customerManagedKey": {
          "type": "string",
          "description": "Optional. The KMS key reference that the customer provides when trying to create the instance."
        },
        "displayName": {
          "type": "string",
          "description": "An arbitrary and optional user-provided name for the instance."
        },
        "instanceId": {
          "type": "string",
          "description": "Required. The logical name of the Redis instance in the customer project with the following restrictions: * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-40 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user provided metadata"
        },
        "location": {
          "type": "string",
          "description": "Optional. The zone where the instance will be provisioned. If not provided, the service will choose a zone from the specified region for the instance. For standard tier, additional nodes will be added across multiple zones for protection against zonal failures. If specified, at least one node will be provisioned in this zone."
        },
        "maintenancePolicy": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:MaintenancePolicy",
          "description": "Optional. The maintenance policy for the instance. If not provided, maintenance events can be performed at any time."
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "Optional. The self service update maintenance version. The version is date based such as \"20210712_00_00\"."
        },
        "memorySizeGb": {
          "type": "integer",
          "description": "Redis memory size in GiB."
        },
        "name": {
          "type": "string",
          "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Redis instances are managed and addressed at regional level so location_id here refers to a GCP region; however, users may choose which specific zone (or collection of zones for cross-zone instances) an instance should be provisioned in. Refer to location_id and alternative_location_id fields for more details."
        },
        "persistenceConfig": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:PersistenceConfig",
          "description": "Optional. Persistence configuration parameters"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readReplicasMode": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:InstanceReadReplicasMode",
          "description": "Optional. Read replicas mode for the instance. Defaults to READ_REPLICAS_DISABLED."
        },
        "redisConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Redis configuration parameters, according to http://redis.io/topics/config. Currently, the only supported parameters are: Redis version 3.2 and newer: * maxmemory-policy * notify-keyspace-events Redis version 4.0 and newer: * activedefrag * lfu-decay-time * lfu-log-factor * maxmemory-gb Redis version 5.0 and newer: * stream-node-max-bytes * stream-node-max-entries"
        },
        "redisVersion": {
          "type": "string",
          "description": "Optional. The version of Redis software. If not provided, latest supported version will be used. Currently, the supported values are: * `REDIS_3_2` for Redis 3.2 compatibility * `REDIS_4_0` for Redis 4.0 compatibility (default) * `REDIS_5_0` for Redis 5.0 compatibility * `REDIS_6_X` for Redis 6.x compatibility"
        },
        "replicaCount": {
          "type": "integer",
          "description": "Optional. The number of replica nodes. The valid range for the Standard Tier with read replicas enabled is [1-5] and defaults to 2. If read replicas are not enabled for a Standard Tier instance, the only valid value is 1 and the default is 1. The valid value for basic tier is 0 and the default is also 0."
        },
        "reservedIpRange": {
          "type": "string",
          "description": "Optional. For DIRECT_PEERING mode, the CIDR range of internal addresses that are reserved for this instance. Range must be unique and non-overlapping with existing subnets in an authorized network. For PRIVATE_SERVICE_ACCESS mode, the name of one allocated IP address ranges associated with this private service access connection. If not provided, the service will choose an unused /29 block, for example, 10.0.0.0/29 or 192.168.0.0/29. For READ_REPLICAS_ENABLED the default block size is /28."
        },
        "secondaryIpRange": {
          "type": "string",
          "description": "Optional. Additional IP range for node placement. Required when enabling read replicas on an existing instance. For DIRECT_PEERING mode value must be a CIDR range of size /28, or \"auto\". For PRIVATE_SERVICE_ACCESS mode value must be the name of an allocated address range associated with the private service access connection, or \"auto\"."
        },
        "suspensionReasons": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:InstanceSuspensionReasonsItem"
          },
          "description": "Optional. reasons that causes instance in \"SUSPENDED\" state."
        },
        "tier": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:InstanceTier",
          "description": "The service tier of the instance."
        },
        "transitEncryptionMode": {
          "$ref": "#/types/google-native:redis%2Fv1beta1:InstanceTransitEncryptionMode",
          "description": "Optional. The TLS mode of the Redis instance. If not provided, TLS is disabled for the instance."
        }
      },
      "requiredInputs": [
        "instanceId",
        "memorySizeGb",
        "tier"
      ]
    },
    "google-native:remotebuildexecution/v1alpha:Instance": {
      "description": "Creates a new instance in the specified region. Returns a long running operation which contains an instance on completion. While the long running operation is in progress, any call to `GetInstance` returns an instance in state `CREATING`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "featurePolicy": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyResponse",
          "description": "The policy to define whether or not RBE features can be used or how they can be used."
        },
        "location": {
          "type": "string",
          "description": "The location is a GCP region. Currently only `us-central1` is supported."
        },
        "loggingEnabled": {
          "type": "boolean",
          "description": "Whether stack driver logging is enabled for the instance."
        },
        "name": {
          "type": "string",
          "description": "Instance resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. Name should not be populated when creating an instance since it is provided in the `instance_id` field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the instance."
        }
      },
      "type": "object",
      "required": [
        "featurePolicy",
        "location",
        "loggingEnabled",
        "name",
        "project",
        "state"
      ],
      "inputProperties": {
        "featurePolicy": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicy",
          "description": "The policy to define whether or not RBE features can be used or how they can be used."
        },
        "instanceId": {
          "type": "string",
          "description": "ID of the created instance. A valid `instance_id` must: be 6-50 characters long, contain only lowercase letters, digits, hyphens and underscores, start with a lowercase letter, and end with a lowercase letter or a digit."
        },
        "location": {
          "type": "string",
          "description": "The location is a GCP region. Currently only `us-central1` is supported."
        },
        "parent": {
          "type": "string",
          "description": "Resource name of the project containing the instance. Format: `projects/[PROJECT_ID]`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:remotebuildexecution/v1alpha:WorkerPool": {
      "description": "Creates a new worker pool with a specified size and configuration. Returns a long running operation which contains a worker pool on completion. While the long running operation is in progress, any call to `GetWorkerPool` returns a worker pool in state `CREATING`.",
      "properties": {
        "autoscale": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAutoscaleResponse",
          "description": "The autoscale policy to apply on a pool."
        },
        "channel": {
          "type": "string",
          "description": "Channel specifies the release channel of the pool."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "WorkerPool resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`. name should not be populated when creating a worker pool since it is provided in the `poolId` field."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the worker pool."
        },
        "workerConfig": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfigResponse",
          "description": "Specifies the properties, such as machine type and disk size, used for creating workers in a worker pool."
        },
        "workerCount": {
          "type": "string",
          "description": "The desired number of workers in the worker pool. Must be a value between 0 and 15000."
        }
      },
      "type": "object",
      "required": [
        "autoscale",
        "channel",
        "instanceId",
        "name",
        "project",
        "state",
        "workerConfig",
        "workerCount"
      ],
      "inputProperties": {
        "autoscale": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAutoscale",
          "description": "The autoscale policy to apply on a pool."
        },
        "channel": {
          "type": "string",
          "description": "Channel specifies the release channel of the pool."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "WorkerPool resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`. name should not be populated when creating a worker pool since it is provided in the `poolId` field."
        },
        "parent": {
          "type": "string",
          "description": "Resource name of the instance in which to create the new worker pool. Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`."
        },
        "poolId": {
          "type": "string",
          "description": "ID of the created worker pool. A valid pool ID must: be 6-50 characters long, contain only lowercase letters, digits, hyphens and underscores, start with a lowercase letter, and end with a lowercase letter or a digit."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workerConfig": {
          "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
          "description": "Specifies the properties, such as machine type and disk size, used for creating workers in a worker pool."
        },
        "workerCount": {
          "type": "string",
          "description": "The desired number of workers in the worker pool. Must be a value between 0 and 15000."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:retail/v2:Control": {
      "description": "Creates a Control. If the Control to create already exists, an ALREADY_EXISTS error is returned.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "associatedServingConfigIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of serving config ids that are associated with this control in the same Catalog. Note the association is managed via the ServingConfig, this is an output only denormalized view."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "controlId": {
          "type": "string",
          "description": "Required. The ID to use for the Control, which will become the final component of the Control's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rule": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleResponse",
          "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
        },
        "searchSolutionUseCase": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control."
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH."
        }
      },
      "type": "object",
      "required": [
        "associatedServingConfigIds",
        "catalogId",
        "controlId",
        "displayName",
        "location",
        "name",
        "project",
        "rule",
        "searchSolutionUseCase",
        "solutionTypes"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "controlId": {
          "type": "string",
          "description": "Required. The ID to use for the Control, which will become the final component of the Control's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rule": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2Rule",
          "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
        },
        "searchSolutionUseCase": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:ControlSearchSolutionUseCaseItem"
          },
          "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control."
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:ControlSolutionTypesItem"
          },
          "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH."
        }
      },
      "requiredInputs": [
        "catalogId",
        "controlId",
        "displayName",
        "solutionTypes"
      ]
    },
    "google-native:retail/v2:Model": {
      "description": "Creates a new model.",
      "properties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp the Recommendation Model was created at."
        },
        "dataState": {
          "type": "string",
          "description": "The state of data requirements for this model: `DATA_OK` and `DATA_ERROR`. Recommendation model cannot be trained if the data is in `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even if serving state is `ACTIVE`: models were trained successfully before, but cannot be refreshed because model no longer has sufficient data for training."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters."
        },
        "dryRun": {
          "type": "boolean",
          "description": "Optional. Whether to run a dry run to validate the request (without actually creating the model)."
        },
        "filteringOption": {
          "type": "string",
          "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model."
        },
        "lastTuneTime": {
          "type": "string",
          "description": "The timestamp when the latest successful tune finished."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelFeaturesConfig": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ModelModelFeaturesConfigResponse",
          "description": "Optional. Additional model features config."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40."
        },
        "optimizationObjective": {
          "type": "string",
          "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr` `frequently-bought-together` => `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "periodicTuningState": {
          "type": "string",
          "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "servingConfigLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ModelServingConfigListResponse"
          },
          "description": "The list of valid serving configs associated with the PageOptimizationConfig."
        },
        "servingState": {
          "type": "string",
          "description": "The serving state of the model: `ACTIVE`, `NOT_ACTIVE`."
        },
        "trainingState": {
          "type": "string",
          "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before."
        },
        "tuningOperation": {
          "type": "string",
          "description": "The tune operation associated with the model. Can be used to determine if there is an ongoing tune for this recommendation. Empty field implies no tune is goig on."
        },
        "type": {
          "type": "string",
          "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp the Recommendation Model was last updated. E.g. if a Recommendation Model was paused - this would be the time the pause was initiated."
        }
      },
      "type": "object",
      "required": [
        "catalogId",
        "createTime",
        "dataState",
        "displayName",
        "filteringOption",
        "lastTuneTime",
        "location",
        "modelFeaturesConfig",
        "name",
        "optimizationObjective",
        "periodicTuningState",
        "project",
        "servingConfigLists",
        "servingState",
        "trainingState",
        "tuningOperation",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters."
        },
        "dryRun": {
          "type": "boolean",
          "description": "Optional. Whether to run a dry run to validate the request (without actually creating the model)."
        },
        "filteringOption": {
          "$ref": "#/types/google-native:retail%2Fv2:ModelFilteringOption",
          "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelFeaturesConfig": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ModelModelFeaturesConfig",
          "description": "Optional. Additional model features config."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40."
        },
        "optimizationObjective": {
          "type": "string",
          "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr` `frequently-bought-together` => `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "periodicTuningState": {
          "$ref": "#/types/google-native:retail%2Fv2:ModelPeriodicTuningState",
          "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingState": {
          "$ref": "#/types/google-native:retail%2Fv2:ModelTrainingState",
          "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before."
        },
        "type": {
          "type": "string",
          "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        }
      },
      "requiredInputs": [
        "catalogId",
        "displayName",
        "type"
      ]
    },
    "google-native:retail/v2:Product": {
      "description": "Creates a Product.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2AudienceResponse",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "type": "string",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ColorInfoResponse",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2FulfillmentInfoResponse"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ImageResponse"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "localInventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2LocalInventoryResponse"
          },
          "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PriceInfoResponse",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "productId": {
          "type": "string",
          "description": "Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PromotionResponse"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RatingResponse",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        },
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ProductResponse"
          },
          "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "audience",
        "availability",
        "availableQuantity",
        "availableTime",
        "branchId",
        "brands",
        "catalogId",
        "categories",
        "collectionMemberIds",
        "colorInfo",
        "conditions",
        "description",
        "expireTime",
        "fulfillmentInfo",
        "gtin",
        "images",
        "languageCode",
        "localInventories",
        "location",
        "materials",
        "name",
        "patterns",
        "priceInfo",
        "primaryProductId",
        "productId",
        "project",
        "promotions",
        "publishTime",
        "rating",
        "retrievableFields",
        "sizes",
        "tags",
        "title",
        "ttl",
        "type",
        "uri",
        "variants"
      ],
      "inputProperties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2Audience",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "$ref": "#/types/google-native:retail%2Fv2:ProductAvailability",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ColorInfo",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2FulfillmentInfo"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "id": {
          "type": "string",
          "description": "Immutable. Product identifier, which is the final component of name. For example, this field is \"id_1\", if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org property [Product.sku](https://schema.org/sku)."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2Image"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PriceInfo",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "productId": {
          "type": "string",
          "description": "Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2Promotion"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2Rating",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "$ref": "#/types/google-native:retail%2Fv2:ProductType",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        }
      },
      "requiredInputs": [
        "branchId",
        "catalogId",
        "productId",
        "title"
      ]
    },
    "google-native:retail/v2:ServingConfig": {
      "description": "Creates a ServingConfig. A maximum of 100 ServingConfigs are allowed in a Catalog, otherwise a FAILED_PRECONDITION error is returned.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "boostControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "diversityLevel": {
          "type": "string",
          "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "diversityType": {
          "type": "string",
          "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY."
        },
        "doNotAssociateControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "dynamicFacetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2SearchRequestDynamicFacetSpecResponse",
          "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "enableCategoryFilterLevel": {
          "type": "string",
          "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "facetControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "filterControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "ignoreControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`"
        },
        "onewaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "personalizationSpec": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2SearchRequestPersonalizationSpecResponse",
          "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
        },
        "priceRerankingLevel": {
          "type": "string",
          "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redirectControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "replacementControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "servingConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the ServingConfig, which will become the final component of the ServingConfig's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution."
        },
        "twowaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        }
      },
      "type": "object",
      "required": [
        "boostControlIds",
        "catalogId",
        "displayName",
        "diversityLevel",
        "diversityType",
        "doNotAssociateControlIds",
        "dynamicFacetSpec",
        "enableCategoryFilterLevel",
        "facetControlIds",
        "filterControlIds",
        "ignoreControlIds",
        "location",
        "modelId",
        "name",
        "onewaySynonymsControlIds",
        "personalizationSpec",
        "priceRerankingLevel",
        "project",
        "redirectControlIds",
        "replacementControlIds",
        "servingConfigId",
        "solutionTypes",
        "twowaySynonymsControlIds"
      ],
      "inputProperties": {
        "boostControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "diversityLevel": {
          "type": "string",
          "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "diversityType": {
          "$ref": "#/types/google-native:retail%2Fv2:ServingConfigDiversityType",
          "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY."
        },
        "doNotAssociateControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "dynamicFacetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2SearchRequestDynamicFacetSpec",
          "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "enableCategoryFilterLevel": {
          "type": "string",
          "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "facetControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "filterControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "ignoreControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`"
        },
        "onewaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "personalizationSpec": {
          "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2SearchRequestPersonalizationSpec",
          "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
        },
        "priceRerankingLevel": {
          "type": "string",
          "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redirectControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "replacementControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "servingConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the ServingConfig, which will become the final component of the ServingConfig's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2:ServingConfigSolutionTypesItem"
          },
          "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution."
        },
        "twowaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        }
      },
      "requiredInputs": [
        "catalogId",
        "displayName",
        "servingConfigId",
        "solutionTypes"
      ]
    },
    "google-native:retail/v2alpha:Control": {
      "description": "Creates a Control. If the Control to create already exists, an ALREADY_EXISTS error is returned.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "associatedServingConfigIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of serving config ids that are associated with this control in the same Catalog. Note the association is managed via the ServingConfig, this is an output only denormalized view."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "controlId": {
          "type": "string",
          "description": "Required. The ID to use for the Control, which will become the final component of the Control's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown."
        },
        "facetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpecResponse",
          "description": "A facet specification to perform faceted search. Note that this field is deprecated and will throw NOT_IMPLEMENTED if used for creating a control."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rule": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleResponse",
          "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
        },
        "searchSolutionUseCase": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control."
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH."
        }
      },
      "type": "object",
      "required": [
        "associatedServingConfigIds",
        "catalogId",
        "controlId",
        "displayName",
        "facetSpec",
        "location",
        "name",
        "project",
        "rule",
        "searchSolutionUseCase",
        "solutionTypes"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "controlId": {
          "type": "string",
          "description": "Required. The ID to use for the Control, which will become the final component of the Control's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown."
        },
        "facetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpec",
          "description": "A facet specification to perform faceted search. Note that this field is deprecated and will throw NOT_IMPLEMENTED if used for creating a control."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rule": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRule",
          "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
        },
        "searchSolutionUseCase": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:ControlSearchSolutionUseCaseItem"
          },
          "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control."
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:ControlSolutionTypesItem"
          },
          "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH."
        }
      },
      "requiredInputs": [
        "catalogId",
        "controlId",
        "displayName",
        "solutionTypes"
      ]
    },
    "google-native:retail/v2alpha:Model": {
      "description": "Creates a new model.",
      "properties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp the Recommendation Model was created at."
        },
        "dataState": {
          "type": "string",
          "description": "The state of data requirements for this model: `DATA_OK` and `DATA_ERROR`. Recommendation model cannot be trained if the data is in `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even if serving state is `ACTIVE`: models were trained successfully before, but cannot be refreshed because model no longer has sufficient data for training."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters."
        },
        "dryRun": {
          "type": "boolean",
          "description": "Optional. Whether to run a dry run to validate the request (without actually creating the model)."
        },
        "filteringOption": {
          "type": "string",
          "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model."
        },
        "lastTuneTime": {
          "type": "string",
          "description": "The timestamp when the latest successful tune finished."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelFeaturesConfig": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelModelFeaturesConfigResponse",
          "description": "Optional. Additional model features config."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40."
        },
        "optimizationObjective": {
          "type": "string",
          "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr` `frequently-bought-together` => `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "pageOptimizationConfig": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigResponse",
          "description": "Optional. The page optimization config."
        },
        "periodicTuningState": {
          "type": "string",
          "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "servingConfigLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelServingConfigListResponse"
          },
          "description": "The list of valid serving configs associated with the PageOptimizationConfig."
        },
        "servingState": {
          "type": "string",
          "description": "The serving state of the model: `ACTIVE`, `NOT_ACTIVE`."
        },
        "trainingState": {
          "type": "string",
          "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before."
        },
        "tuningOperation": {
          "type": "string",
          "description": "The tune operation associated with the model. Can be used to determine if there is an ongoing tune for this recommendation. Empty field implies no tune is goig on."
        },
        "type": {
          "type": "string",
          "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp the Recommendation Model was last updated. E.g. if a Recommendation Model was paused - this would be the time the pause was initiated."
        }
      },
      "type": "object",
      "required": [
        "catalogId",
        "createTime",
        "dataState",
        "displayName",
        "filteringOption",
        "lastTuneTime",
        "location",
        "modelFeaturesConfig",
        "name",
        "optimizationObjective",
        "pageOptimizationConfig",
        "periodicTuningState",
        "project",
        "servingConfigLists",
        "servingState",
        "trainingState",
        "tuningOperation",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters."
        },
        "dryRun": {
          "type": "boolean",
          "description": "Optional. Whether to run a dry run to validate the request (without actually creating the model)."
        },
        "filteringOption": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:ModelFilteringOption",
          "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelFeaturesConfig": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelModelFeaturesConfig",
          "description": "Optional. Additional model features config."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40."
        },
        "optimizationObjective": {
          "type": "string",
          "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr` `frequently-bought-together` => `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "pageOptimizationConfig": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfig",
          "description": "Optional. The page optimization config."
        },
        "periodicTuningState": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:ModelPeriodicTuningState",
          "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingState": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:ModelTrainingState",
          "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before."
        },
        "type": {
          "type": "string",
          "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        }
      },
      "requiredInputs": [
        "catalogId",
        "displayName",
        "type"
      ]
    },
    "google-native:retail/v2alpha:Product": {
      "description": "Creates a Product.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaAudienceResponse",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "type": "string",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaColorInfoResponse",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaFulfillmentInfoResponse"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaImageResponse"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "localInventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaLocalInventoryResponse"
          },
          "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPriceInfoResponse",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "productId": {
          "type": "string",
          "description": "Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPromotionResponse"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRatingResponse",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        },
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaProductResponse"
          },
          "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "audience",
        "availability",
        "availableQuantity",
        "availableTime",
        "branchId",
        "brands",
        "catalogId",
        "categories",
        "collectionMemberIds",
        "colorInfo",
        "conditions",
        "description",
        "expireTime",
        "fulfillmentInfo",
        "gtin",
        "images",
        "languageCode",
        "localInventories",
        "location",
        "materials",
        "name",
        "patterns",
        "priceInfo",
        "primaryProductId",
        "productId",
        "project",
        "promotions",
        "publishTime",
        "rating",
        "retrievableFields",
        "sizes",
        "tags",
        "title",
        "ttl",
        "type",
        "uri",
        "variants"
      ],
      "inputProperties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaAudience",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:ProductAvailability",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaColorInfo",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaFulfillmentInfo"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "id": {
          "type": "string",
          "description": "Immutable. Product identifier, which is the final component of name. For example, this field is \"id_1\", if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org property [Product.sku](https://schema.org/sku)."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaImage"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPriceInfo",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "productId": {
          "type": "string",
          "description": "Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPromotion"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRating",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:ProductType",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        }
      },
      "requiredInputs": [
        "branchId",
        "catalogId",
        "productId",
        "title"
      ]
    },
    "google-native:retail/v2alpha:ServingConfig": {
      "description": "Creates a ServingConfig. A maximum of 100 ServingConfigs are allowed in a Catalog, otherwise a FAILED_PRECONDITION error is returned.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "boostControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "diversityLevel": {
          "type": "string",
          "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "diversityType": {
          "type": "string",
          "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY."
        },
        "doNotAssociateControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "dynamicFacetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpecResponse",
          "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "enableCategoryFilterLevel": {
          "type": "string",
          "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "facetControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "filterControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "ignoreControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`"
        },
        "onewaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "personalizationSpec": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestPersonalizationSpecResponse",
          "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
        },
        "priceRerankingLevel": {
          "type": "string",
          "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redirectControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "replacementControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "servingConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the ServingConfig, which will become the final component of the ServingConfig's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution."
        },
        "twowaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        }
      },
      "type": "object",
      "required": [
        "boostControlIds",
        "catalogId",
        "displayName",
        "diversityLevel",
        "diversityType",
        "doNotAssociateControlIds",
        "dynamicFacetSpec",
        "enableCategoryFilterLevel",
        "facetControlIds",
        "filterControlIds",
        "ignoreControlIds",
        "location",
        "modelId",
        "name",
        "onewaySynonymsControlIds",
        "personalizationSpec",
        "priceRerankingLevel",
        "project",
        "redirectControlIds",
        "replacementControlIds",
        "servingConfigId",
        "solutionTypes",
        "twowaySynonymsControlIds"
      ],
      "inputProperties": {
        "boostControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "diversityLevel": {
          "type": "string",
          "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "diversityType": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:ServingConfigDiversityType",
          "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY."
        },
        "doNotAssociateControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "dynamicFacetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpec",
          "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "enableCategoryFilterLevel": {
          "type": "string",
          "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "facetControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "filterControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "ignoreControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`"
        },
        "onewaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "personalizationSpec": {
          "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestPersonalizationSpec",
          "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
        },
        "priceRerankingLevel": {
          "type": "string",
          "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redirectControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "replacementControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "servingConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the ServingConfig, which will become the final component of the ServingConfig's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:ServingConfigSolutionTypesItem"
          },
          "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution."
        },
        "twowaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        }
      },
      "requiredInputs": [
        "catalogId",
        "displayName",
        "servingConfigId",
        "solutionTypes"
      ]
    },
    "google-native:retail/v2beta:Control": {
      "description": "Creates a Control. If the Control to create already exists, an ALREADY_EXISTS error is returned.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "associatedServingConfigIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of serving config ids that are associated with this control in the same Catalog. Note the association is managed via the ServingConfig, this is an output only denormalized view."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "controlId": {
          "type": "string",
          "description": "Required. The ID to use for the Control, which will become the final component of the Control's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown."
        },
        "facetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestFacetSpecResponse",
          "description": "A facet specification to perform faceted search. Note that this field is deprecated and will throw NOT_IMPLEMENTED if used for creating a control."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rule": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleResponse",
          "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
        },
        "searchSolutionUseCase": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control."
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH."
        }
      },
      "type": "object",
      "required": [
        "associatedServingConfigIds",
        "catalogId",
        "controlId",
        "displayName",
        "facetSpec",
        "location",
        "name",
        "project",
        "rule",
        "searchSolutionUseCase",
        "solutionTypes"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "controlId": {
          "type": "string",
          "description": "Required. The ID to use for the Control, which will become the final component of the Control's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown."
        },
        "facetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestFacetSpec",
          "description": "A facet specification to perform faceted search. Note that this field is deprecated and will throw NOT_IMPLEMENTED if used for creating a control."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "rule": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRule",
          "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
        },
        "searchSolutionUseCase": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:ControlSearchSolutionUseCaseItem"
          },
          "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control."
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:ControlSolutionTypesItem"
          },
          "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH."
        }
      },
      "requiredInputs": [
        "catalogId",
        "controlId",
        "displayName",
        "solutionTypes"
      ]
    },
    "google-native:retail/v2beta:Model": {
      "description": "Creates a new model.",
      "properties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Timestamp the Recommendation Model was created at."
        },
        "dataState": {
          "type": "string",
          "description": "The state of data requirements for this model: `DATA_OK` and `DATA_ERROR`. Recommendation model cannot be trained if the data is in `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even if serving state is `ACTIVE`: models were trained successfully before, but cannot be refreshed because model no longer has sufficient data for training."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters."
        },
        "dryRun": {
          "type": "boolean",
          "description": "Optional. Whether to run a dry run to validate the request (without actually creating the model)."
        },
        "filteringOption": {
          "type": "string",
          "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model."
        },
        "lastTuneTime": {
          "type": "string",
          "description": "The timestamp when the latest successful tune finished."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelFeaturesConfig": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaModelModelFeaturesConfigResponse",
          "description": "Optional. Additional model features config."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40."
        },
        "optimizationObjective": {
          "type": "string",
          "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr` `frequently-bought-together` => `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "periodicTuningState": {
          "type": "string",
          "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "servingConfigLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaModelServingConfigListResponse"
          },
          "description": "The list of valid serving configs associated with the PageOptimizationConfig."
        },
        "servingState": {
          "type": "string",
          "description": "The serving state of the model: `ACTIVE`, `NOT_ACTIVE`."
        },
        "trainingState": {
          "type": "string",
          "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before."
        },
        "tuningOperation": {
          "type": "string",
          "description": "The tune operation associated with the model. Can be used to determine if there is an ongoing tune for this recommendation. Empty field implies no tune is goig on."
        },
        "type": {
          "type": "string",
          "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp the Recommendation Model was last updated. E.g. if a Recommendation Model was paused - this would be the time the pause was initiated."
        }
      },
      "type": "object",
      "required": [
        "catalogId",
        "createTime",
        "dataState",
        "displayName",
        "filteringOption",
        "lastTuneTime",
        "location",
        "modelFeaturesConfig",
        "name",
        "optimizationObjective",
        "periodicTuningState",
        "project",
        "servingConfigLists",
        "servingState",
        "trainingState",
        "tuningOperation",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters."
        },
        "dryRun": {
          "type": "boolean",
          "description": "Optional. Whether to run a dry run to validate the request (without actually creating the model)."
        },
        "filteringOption": {
          "$ref": "#/types/google-native:retail%2Fv2beta:ModelFilteringOption",
          "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelFeaturesConfig": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaModelModelFeaturesConfig",
          "description": "Optional. Additional model features config."
        },
        "name": {
          "type": "string",
          "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40."
        },
        "optimizationObjective": {
          "type": "string",
          "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` => `ctr` `others-you-may-like` => `ctr` `frequently-bought-together` => `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        },
        "periodicTuningState": {
          "$ref": "#/types/google-native:retail%2Fv2beta:ModelPeriodicTuningState",
          "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "trainingState": {
          "$ref": "#/types/google-native:retail%2Fv2beta:ModelTrainingState",
          "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before."
        },
        "type": {
          "type": "string",
          "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs."
        }
      },
      "requiredInputs": [
        "catalogId",
        "displayName",
        "type"
      ]
    },
    "google-native:retail/v2beta:Product": {
      "description": "Creates a Product.",
      "properties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaAudienceResponse",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "type": "string",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaColorInfoResponse",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaFulfillmentInfoResponse"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaImageResponse"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "localInventories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaLocalInventoryResponse"
          },
          "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPriceInfoResponse",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "productId": {
          "type": "string",
          "description": "Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPromotionResponse"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRatingResponse",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "type": "string",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        },
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaProductResponse"
          },
          "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests."
        }
      },
      "type": "object",
      "required": [
        "attributes",
        "audience",
        "availability",
        "availableQuantity",
        "availableTime",
        "branchId",
        "brands",
        "catalogId",
        "categories",
        "collectionMemberIds",
        "colorInfo",
        "conditions",
        "description",
        "expireTime",
        "fulfillmentInfo",
        "gtin",
        "images",
        "languageCode",
        "localInventories",
        "location",
        "materials",
        "name",
        "patterns",
        "priceInfo",
        "primaryProductId",
        "productId",
        "project",
        "promotions",
        "publishTime",
        "rating",
        "retrievableFields",
        "sizes",
        "tags",
        "title",
        "ttl",
        "type",
        "uri",
        "variants"
      ],
      "inputProperties": {
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed."
        },
        "audience": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaAudience",
          "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
        },
        "availability": {
          "$ref": "#/types/google-native:retail%2Fv2beta:ProductAvailability",
          "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability)."
        },
        "availableQuantity": {
          "type": "integer",
          "description": "The available quantity of the item."
        },
        "availableTime": {
          "type": "string",
          "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT."
        },
        "branchId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "brands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand)."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '>' sign to separate different hierarchies. If '>' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes & Accessories\" -> \"Shoes\"] and [\"Sports & Fitness\" -> \"Athletic Clothing\" -> \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes & Accessories > Shoes\", \"Sports & Fitness > Athletic Clothing > Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436"
        },
        "collectionMemberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return."
        },
        "colorInfo": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaColorInfo",
          "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
        },
        "conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition)."
        },
        "description": {
          "type": "string",
          "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description)."
        },
        "expireTime": {
          "type": "string",
          "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499)."
        },
        "fulfillmentInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaFulfillmentInfo"
          },
          "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "gtin": {
          "type": "string",
          "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned."
        },
        "id": {
          "type": "string",
          "description": "Immutable. Product identifier, which is the final component of name. For example, this field is \"id_1\", if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org property [Product.sku](https://schema.org/sku)."
        },
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaImage"
          },
          "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material)."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`."
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern)."
        },
        "priceInfo": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPriceInfo",
          "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
        },
        "primaryProductId": {
          "type": "string",
          "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID)."
        },
        "productId": {
          "type": "string",
          "description": "Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "promotions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPromotion"
          },
          "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set."
        },
        "publishTime": {
          "type": "string",
          "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation."
        },
        "rating": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRating",
          "description": "The rating of this product."
        },
        "retrievableFields": {
          "type": "string",
          "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
          "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead."
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size)."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473)."
        },
        "title": {
          "type": "string",
          "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name)."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts."
        },
        "type": {
          "$ref": "#/types/google-native:retail%2Fv2beta:ProductType",
          "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset."
        },
        "uri": {
          "type": "string",
          "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url)."
        }
      },
      "requiredInputs": [
        "branchId",
        "catalogId",
        "productId",
        "title"
      ]
    },
    "google-native:retail/v2beta:ServingConfig": {
      "description": "Creates a ServingConfig. A maximum of 100 ServingConfigs are allowed in a Catalog, otherwise a FAILED_PRECONDITION error is returned.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "boostControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "diversityLevel": {
          "type": "string",
          "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "diversityType": {
          "type": "string",
          "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY."
        },
        "doNotAssociateControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "dynamicFacetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestDynamicFacetSpecResponse",
          "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "enableCategoryFilterLevel": {
          "type": "string",
          "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "facetControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "filterControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "ignoreControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`"
        },
        "onewaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "personalizationSpec": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestPersonalizationSpecResponse",
          "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
        },
        "priceRerankingLevel": {
          "type": "string",
          "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redirectControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "replacementControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "servingConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the ServingConfig, which will become the final component of the ServingConfig's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution."
        },
        "twowaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        }
      },
      "type": "object",
      "required": [
        "boostControlIds",
        "catalogId",
        "displayName",
        "diversityLevel",
        "diversityType",
        "doNotAssociateControlIds",
        "dynamicFacetSpec",
        "enableCategoryFilterLevel",
        "facetControlIds",
        "filterControlIds",
        "ignoreControlIds",
        "location",
        "modelId",
        "name",
        "onewaySynonymsControlIds",
        "personalizationSpec",
        "priceRerankingLevel",
        "project",
        "redirectControlIds",
        "replacementControlIds",
        "servingConfigId",
        "solutionTypes",
        "twowaySynonymsControlIds"
      ],
      "inputProperties": {
        "boostControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "catalogId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "displayName": {
          "type": "string",
          "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned."
        },
        "diversityLevel": {
          "type": "string",
          "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "diversityType": {
          "$ref": "#/types/google-native:retail%2Fv2beta:ServingConfigDiversityType",
          "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY."
        },
        "doNotAssociateControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "dynamicFacetSpec": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestDynamicFacetSpec",
          "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "enableCategoryFilterLevel": {
          "type": "string",
          "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "facetControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "filterControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "ignoreControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "modelId": {
          "type": "string",
          "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "name": {
          "type": "string",
          "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`"
        },
        "onewaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "personalizationSpec": {
          "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestPersonalizationSpec",
          "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
        },
        "priceRerankingLevel": {
          "type": "string",
          "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "redirectControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "replacementControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        },
        "servingConfigId": {
          "type": "string",
          "description": "Required. The ID to use for the ServingConfig, which will become the final component of the ServingConfig's resource name. This value should be 4-63 characters, and valid characters are /a-z-_/.",
          "replaceOnChanges": true
        },
        "solutionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:retail%2Fv2beta:ServingConfigSolutionTypesItem"
          },
          "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution."
        },
        "twowaySynonymsControlIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
        }
      },
      "requiredInputs": [
        "catalogId",
        "displayName",
        "servingConfigId",
        "solutionTypes"
      ]
    },
    "google-native:run/v1:DomainMapping": {
      "description": "Create a new domain mapping.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiVersion": {
          "type": "string",
          "description": "The API version for this call such as \"domains.cloudrun.com/v1\"."
        },
        "dryRun": {
          "type": "string",
          "description": "Indicates that the server should validate the request and populate default values without persisting the request. Supported values: `all`"
        },
        "kind": {
          "type": "string",
          "description": "The kind of resource, in this case \"DomainMapping\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "#/types/google-native:run%2Fv1:ObjectMetaResponse",
          "description": "Metadata associated with this BuildTemplate."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:DomainMappingSpecResponse",
          "description": "The spec for this DomainMapping."
        },
        "status": {
          "$ref": "#/types/google-native:run%2Fv1:DomainMappingStatusResponse",
          "description": "The current status of the DomainMapping."
        }
      },
      "type": "object",
      "required": [
        "apiVersion",
        "kind",
        "location",
        "metadata",
        "project",
        "spec",
        "status"
      ],
      "inputProperties": {
        "apiVersion": {
          "type": "string",
          "description": "The API version for this call such as \"domains.cloudrun.com/v1\"."
        },
        "dryRun": {
          "type": "string",
          "description": "Indicates that the server should validate the request and populate default values without persisting the request. Supported values: `all`"
        },
        "kind": {
          "type": "string",
          "description": "The kind of resource, in this case \"DomainMapping\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "#/types/google-native:run%2Fv1:ObjectMeta",
          "description": "Metadata associated with this BuildTemplate."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:DomainMappingSpec",
          "description": "The spec for this DomainMapping."
        }
      }
    },
    "google-native:run/v1:JobIamBinding": {
      "description": "Sets the IAM Access control policy for the specified job. Overwrites any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:run/v1:JobIamMember": {
      "description": "Sets the IAM Access control policy for the specified job. Overwrites any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:run/v1:JobIamPolicy": {
      "description": "Sets the IAM Access control policy for the specified job. Overwrites any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "jobId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "jobId"
      ]
    },
    "google-native:run/v1:Service": {
      "description": "Creates a new Service. Service creation will trigger a new deployment. Use GetService, and check service.status to determine if the Service is ready.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "apiVersion": {
          "type": "string",
          "description": "The API version for this call. It must be \"serving.knative.dev/v1\"."
        },
        "dryRun": {
          "type": "string",
          "description": "Indicates that the server should validate the request and populate default values without persisting the request. Supported values: `all`"
        },
        "kind": {
          "type": "string",
          "description": "The kind of resource. It must be \"Service\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "#/types/google-native:run%2Fv1:ObjectMetaResponse",
          "description": "Metadata associated with this Service, including name, namespace, labels, and annotations. In Cloud Run, annotations with 'run.googleapis.com/' and 'autoscaling.knative.dev' are restricted, and the accepted annotations will be different depending on the resource type. The following Cloud Run-specific annotations are accepted in Service.metadata.annotations. * `run.googleapis.com/binary-authorization-breakglass` * `run.googleapis.com/binary-authorization` * `run.googleapis.com/client-name` * `run.googleapis.com/custom-audiences` * `run.googleapis.com/description` * `run.googleapis.com/disable-default-url` * `run.googleapis.com/gc-traffic-tags` * `run.googleapis.com/ingress` * `run.googleapis.com/ingress` sets the ingress settings for the Service. See [the ingress settings documentation](/run/docs/securing/ingress) for details on configuring ingress settings. * `run.googleapis.com/ingress-status` is output-only and contains the currently active ingress settings for the Service. `run.googleapis.com/ingress-status` may differ from `run.googleapis.com/ingress` while the system is processing a change to `run.googleapis.com/ingress` or if the system failed to process a change to `run.googleapis.com/ingress`. When the system has processed all changes successfully `run.googleapis.com/ingress-status` and `run.googleapis.com/ingress` are equal."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:ServiceSpecResponse",
          "description": "Holds the desired state of the Service (from the client)."
        },
        "status": {
          "$ref": "#/types/google-native:run%2Fv1:ServiceStatusResponse",
          "description": "Communicates the system-controlled state of the Service."
        }
      },
      "type": "object",
      "required": [
        "apiVersion",
        "kind",
        "location",
        "metadata",
        "project",
        "spec",
        "status"
      ],
      "inputProperties": {
        "apiVersion": {
          "type": "string",
          "description": "The API version for this call. It must be \"serving.knative.dev/v1\"."
        },
        "dryRun": {
          "type": "string",
          "description": "Indicates that the server should validate the request and populate default values without persisting the request. Supported values: `all`"
        },
        "kind": {
          "type": "string",
          "description": "The kind of resource. It must be \"Service\"."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "$ref": "#/types/google-native:run%2Fv1:ObjectMeta",
          "description": "Metadata associated with this Service, including name, namespace, labels, and annotations. In Cloud Run, annotations with 'run.googleapis.com/' and 'autoscaling.knative.dev' are restricted, and the accepted annotations will be different depending on the resource type. The following Cloud Run-specific annotations are accepted in Service.metadata.annotations. * `run.googleapis.com/binary-authorization-breakglass` * `run.googleapis.com/binary-authorization` * `run.googleapis.com/client-name` * `run.googleapis.com/custom-audiences` * `run.googleapis.com/description` * `run.googleapis.com/disable-default-url` * `run.googleapis.com/gc-traffic-tags` * `run.googleapis.com/ingress` * `run.googleapis.com/ingress` sets the ingress settings for the Service. See [the ingress settings documentation](/run/docs/securing/ingress) for details on configuring ingress settings. * `run.googleapis.com/ingress-status` is output-only and contains the currently active ingress settings for the Service. `run.googleapis.com/ingress-status` may differ from `run.googleapis.com/ingress` while the system is processing a change to `run.googleapis.com/ingress` or if the system failed to process a change to `run.googleapis.com/ingress`. When the system has processed all changes successfully `run.googleapis.com/ingress-status` and `run.googleapis.com/ingress` are equal."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "spec": {
          "$ref": "#/types/google-native:run%2Fv1:ServiceSpec",
          "description": "Holds the desired state of the Service (from the client)."
        }
      }
    },
    "google-native:run/v1:ServiceIamBinding": {
      "description": "Sets the IAM Access control policy for the specified Service. Overwrites any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:run/v1:ServiceIamMember": {
      "description": "Sets the IAM Access control policy for the specified Service. Overwrites any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:run/v1:ServiceIamPolicy": {
      "description": "Sets the IAM Access control policy for the specified Service. Overwrites any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:run/v2:Job": {
      "description": "Creates a Job.",
      "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. Cloud 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 on new resources. All system annotations in v1 now have a corresponding field in v2 Job. This field follows Kubernetes annotations' namespacing, limits, and rules."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2BinaryAuthorizationResponse",
          "description": "Settings for the Binary Authorization feature."
        },
        "client": {
          "type": "string",
          "description": "Arbitrary identifier for the API client."
        },
        "clientVersion": {
          "type": "string",
          "description": "Arbitrary version identifier for the API client."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ConditionResponse"
          },
          "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in `reconciling` for additional information on reconciliation process in Cloud Run."
        },
        "createTime": {
          "type": "string",
          "description": "The creation time."
        },
        "creator": {
          "type": "string",
          "description": "Email address of the authenticated creator."
        },
        "deleteTime": {
          "type": "string",
          "description": "The deletion time."
        },
        "etag": {
          "type": "string",
          "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates."
        },
        "executionCount": {
          "type": "integer",
          "description": "Number of executions created for this job."
        },
        "expireTime": {
          "type": "string",
          "description": "For a deleted resource, the time after which it will be permamently deleted."
        },
        "generation": {
          "type": "string",
          "description": "A number that monotonically increases every time the user modifies the desired state."
        },
        "jobId": {
          "type": "string",
          "description": "Required. The unique identifier for the Job. The name of the job becomes {parent}/jobs/{job_id}.",
          "replaceOnChanges": true
        },
        "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 Job."
        },
        "lastModifier": {
          "type": "string",
          "description": "Email address of the last authenticated modifier."
        },
        "latestCreatedExecution": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ExecutionReferenceResponse",
          "description": "Name of the last created execution."
        },
        "launchStage": {
          "type": "string",
          "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features. For example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The fully qualified name of this Job. Format: projects/{project}/locations/{location}/jobs/{job}"
        },
        "observedGeneration": {
          "type": "string",
          "description": "The generation of this Job. See comments in `reconciling` for additional information on reconciliation process in Cloud Run."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Returns true if the Job is currently being acted upon by the system to bring it into the desired state. When a new Job is created, or an existing one is updated, Cloud Run will asynchronously perform all necessary steps to bring the Job to the desired state. This process is called reconciliation. While reconciliation is in process, `observed_generation` and `latest_succeeded_execution`, will have transient values that might mismatch the intended state: Once reconciliation is over (and this field is false), there are two possible outcomes: reconciliation succeeded and the state matches the Job, or there was an error, and reconciliation failed. This state can be found in `terminal_condition.state`. If reconciliation succeeded, the following fields will match: `observed_generation` and `generation`, `latest_succeeded_execution` and `latest_created_execution`. If reconciliation failed, `observed_generation` and `latest_succeeded_execution` will have the state of the last succeeded execution or empty for newly created Job. Additional information on the failure can be found in `terminal_condition` and `conditions`."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "template": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ExecutionTemplateResponse",
          "description": "The template used to create executions for this Job."
        },
        "terminalCondition": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ConditionResponse",
          "description": "The Condition of this Job, containing its readiness status, and detailed error information in case it did not reach the desired state."
        },
        "uid": {
          "type": "string",
          "description": "Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "The last-modified time."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "binaryAuthorization",
        "client",
        "clientVersion",
        "conditions",
        "createTime",
        "creator",
        "deleteTime",
        "etag",
        "executionCount",
        "expireTime",
        "generation",
        "jobId",
        "labels",
        "lastModifier",
        "latestCreatedExecution",
        "launchStage",
        "location",
        "name",
        "observedGeneration",
        "project",
        "reconciling",
        "satisfiesPzs",
        "template",
        "terminalCondition",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "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. Cloud 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 on new resources. All system annotations in v1 now have a corresponding field in v2 Job. This field follows Kubernetes annotations' namespacing, limits, and rules."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2BinaryAuthorization",
          "description": "Settings for the Binary Authorization feature."
        },
        "client": {
          "type": "string",
          "description": "Arbitrary identifier for the API client."
        },
        "clientVersion": {
          "type": "string",
          "description": "Arbitrary version identifier for the API client."
        },
        "jobId": {
          "type": "string",
          "description": "Required. The unique identifier for the Job. The name of the job becomes {parent}/jobs/{job_id}.",
          "replaceOnChanges": true
        },
        "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 Job."
        },
        "launchStage": {
          "$ref": "#/types/google-native:run%2Fv2:JobLaunchStage",
          "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features. For example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The fully qualified name of this Job. Format: projects/{project}/locations/{location}/jobs/{job}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "template": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ExecutionTemplate",
          "description": "The template used to create executions for this Job."
        }
      },
      "requiredInputs": [
        "jobId",
        "template"
      ]
    },
    "google-native:run/v2:JobIamBinding": {
      "description": "Sets the IAM Access control policy for the specified Job. Overwrites any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:run/v2:JobIamMember": {
      "description": "Sets the IAM Access control policy for the specified Job. Overwrites any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:run/v2:JobIamPolicy": {
      "description": "Sets the IAM Access control policy for the specified Job. Overwrites any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "jobId",
        "location",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "jobId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "jobId"
      ]
    },
    "google-native:run/v2:Service": {
      "description": "Creates a new Service in a given project and location.",
      "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. Cloud 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 in new resources. All system annotations in v1 now have a corresponding field in v2 Service. This field follows Kubernetes annotations' namespacing, limits, and rules."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2BinaryAuthorizationResponse",
          "description": "Settings for the Binary Authorization feature."
        },
        "client": {
          "type": "string",
          "description": "Arbitrary identifier for the API client."
        },
        "clientVersion": {
          "type": "string",
          "description": "Arbitrary version identifier for the API client."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ConditionResponse"
          },
          "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in `reconciling` for additional information on reconciliation process in Cloud Run."
        },
        "createTime": {
          "type": "string",
          "description": "The creation time."
        },
        "creator": {
          "type": "string",
          "description": "Email address of the authenticated creator."
        },
        "customAudiences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see https://cloud.google.com/run/docs/configuring/custom-audiences."
        },
        "deleteTime": {
          "type": "string",
          "description": "The deletion time."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the Service. This field currently has a 512-character limit."
        },
        "etag": {
          "type": "string",
          "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates."
        },
        "expireTime": {
          "type": "string",
          "description": "For a deleted resource, the time after which it will be permamently deleted."
        },
        "generation": {
          "type": "string",
          "description": "A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a `string` instead of an `integer`."
        },
        "ingress": {
          "type": "string",
          "description": "Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active."
        },
        "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 Service."
        },
        "lastModifier": {
          "type": "string",
          "description": "Email address of the last authenticated modifier."
        },
        "latestCreatedRevision": {
          "type": "string",
          "description": "Name of the last created revision. See comments in `reconciling` for additional information on reconciliation process in Cloud Run."
        },
        "latestReadyRevision": {
          "type": "string",
          "description": "Name of the latest revision that is serving traffic. See comments in `reconciling` for additional information on reconciliation process in Cloud Run."
        },
        "launchStage": {
          "type": "string",
          "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features. For example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The fully qualified name of this Service. In CreateServiceRequest, this field is ignored, and instead composed from CreateServiceRequest.parent and CreateServiceRequest.service_id. Format: projects/{project}/locations/{location}/services/{service_id}"
        },
        "observedGeneration": {
          "type": "string",
          "description": "The generation of this Service currently serving traffic. See comments in `reconciling` for additional information on reconciliation process in Cloud Run. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a `string` instead of an `integer`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Returns true if the Service is currently being acted upon by the system to bring it into the desired state. When a new Service is created, or an existing one is updated, Cloud Run will asynchronously perform all necessary steps to bring the Service to the desired serving state. This process is called reconciliation. While reconciliation is in process, `observed_generation`, `latest_ready_revison`, `traffic_statuses`, and `uri` will have transient values that might mismatch the intended state: Once reconciliation is over (and this field is false), there are two possible outcomes: reconciliation succeeded and the serving state matches the Service, or there was an error, and reconciliation failed. This state can be found in `terminal_condition.state`. If reconciliation succeeded, the following fields will match: `traffic` and `traffic_statuses`, `observed_generation` and `generation`, `latest_ready_revision` and `latest_created_revision`. If reconciliation failed, `traffic_statuses`, `observed_generation`, and `latest_ready_revision` will have the state of the last serving revision, or empty for newly created Services. Additional information on the failure can be found in `terminal_condition` and `conditions`."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "scaling": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ServiceScalingResponse",
          "description": "Optional. Specifies service-level scaling settings"
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The unique identifier for the Service. It must begin with letter, and cannot end with hyphen; must contain fewer than 50 characters. The name of the service becomes {parent}/services/{service_id}.",
          "replaceOnChanges": true
        },
        "template": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2RevisionTemplateResponse",
          "description": "The template used to create revisions for this Service."
        },
        "terminalCondition": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ConditionResponse",
          "description": "The Condition of this Service, containing its readiness status, and detailed error information in case it did not reach a serving state. See comments in `reconciling` for additional information on reconciliation process in Cloud Run."
        },
        "traffic": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TrafficTargetResponse"
          },
          "description": "Specifies how to distribute traffic over a collection of Revisions belonging to the Service. If traffic is empty or not provided, defaults to 100% traffic to the latest `Ready` Revision."
        },
        "trafficStatuses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TrafficTargetStatusResponse"
          },
          "description": "Detailed status information for corresponding traffic targets. See comments in `reconciling` for additional information on reconciliation process in Cloud Run."
        },
        "uid": {
          "type": "string",
          "description": "Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted."
        },
        "updateTime": {
          "type": "string",
          "description": "The last-modified time."
        },
        "uri": {
          "type": "string",
          "description": "The main URI in which this Service is serving traffic."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "binaryAuthorization",
        "client",
        "clientVersion",
        "conditions",
        "createTime",
        "creator",
        "customAudiences",
        "deleteTime",
        "description",
        "etag",
        "expireTime",
        "generation",
        "ingress",
        "labels",
        "lastModifier",
        "latestCreatedRevision",
        "latestReadyRevision",
        "launchStage",
        "location",
        "name",
        "observedGeneration",
        "project",
        "reconciling",
        "satisfiesPzs",
        "scaling",
        "serviceId",
        "template",
        "terminalCondition",
        "traffic",
        "trafficStatuses",
        "uid",
        "updateTime",
        "uri"
      ],
      "inputProperties": {
        "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. Cloud 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 in new resources. All system annotations in v1 now have a corresponding field in v2 Service. This field follows Kubernetes annotations' namespacing, limits, and rules."
        },
        "binaryAuthorization": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2BinaryAuthorization",
          "description": "Settings for the Binary Authorization feature."
        },
        "client": {
          "type": "string",
          "description": "Arbitrary identifier for the API client."
        },
        "clientVersion": {
          "type": "string",
          "description": "Arbitrary version identifier for the API client."
        },
        "customAudiences": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see https://cloud.google.com/run/docs/configuring/custom-audiences."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the Service. This field currently has a 512-character limit."
        },
        "ingress": {
          "$ref": "#/types/google-native:run%2Fv2:ServiceIngress",
          "description": "Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active."
        },
        "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 Service."
        },
        "launchStage": {
          "$ref": "#/types/google-native:run%2Fv2:ServiceLaunchStage",
          "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features. For example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The fully qualified name of this Service. In CreateServiceRequest, this field is ignored, and instead composed from CreateServiceRequest.parent and CreateServiceRequest.service_id. Format: projects/{project}/locations/{location}/services/{service_id}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "scaling": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ServiceScaling",
          "description": "Optional. Specifies service-level scaling settings"
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The unique identifier for the Service. It must begin with letter, and cannot end with hyphen; must contain fewer than 50 characters. The name of the service becomes {parent}/services/{service_id}.",
          "replaceOnChanges": true
        },
        "template": {
          "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2RevisionTemplate",
          "description": "The template used to create revisions for this Service."
        },
        "traffic": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TrafficTarget"
          },
          "description": "Specifies how to distribute traffic over a collection of Revisions belonging to the Service. If traffic is empty or not provided, defaults to 100% traffic to the latest `Ready` Revision."
        }
      },
      "requiredInputs": [
        "serviceId",
        "template"
      ]
    },
    "google-native:run/v2:ServiceIamBinding": {
      "description": "Sets the IAM Access control policy for the specified Service. Overwrites any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:run/v2:ServiceIamMember": {
      "description": "Sets the IAM Access control policy for the specified Service. Overwrites any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:run/v2:ServiceIamPolicy": {
      "description": "Sets the IAM Access control policy for the specified Service. Overwrites any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:runtimeconfig/v1beta1:Config": {
      "description": "Creates a new RuntimeConfig resource. The configuration name must be unique within project.",
      "properties": {
        "description": {
          "type": "string",
          "description": "An optional description of the RuntimeConfig object."
        },
        "name": {
          "type": "string",
          "description": "The resource name of a runtime config. The name must have the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME] The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an arbitrary name that matches the `[0-9A-Za-z](?:[_.A-Za-z0-9-]{0,62}[_.A-Za-z0-9])?` regular expression. The length of `[CONFIG_NAME]` must be less than 64 characters. You pick the RuntimeConfig resource name, but the server will validate that the name adheres to this format. After you create the resource, you cannot change the resource's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional but recommended unique `request_id`. If the server receives two `create()` requests with the same `request_id`, then the second request will be ignored and the first resource created and stored in the backend is returned. Empty `request_id` fields are ignored. It is responsibility of the client to ensure uniqueness of the `request_id` strings. `request_id` strings are limited to 64 characters."
        }
      },
      "type": "object",
      "required": [
        "description",
        "name",
        "project"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "An optional description of the RuntimeConfig object."
        },
        "name": {
          "type": "string",
          "description": "The resource name of a runtime config. The name must have the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME] The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an arbitrary name that matches the `[0-9A-Za-z](?:[_.A-Za-z0-9-]{0,62}[_.A-Za-z0-9])?` regular expression. The length of `[CONFIG_NAME]` must be less than 64 characters. You pick the RuntimeConfig resource name, but the server will validate that the name adheres to this format. After you create the resource, you cannot change the resource's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional but recommended unique `request_id`. If the server receives two `create()` requests with the same `request_id`, then the second request will be ignored and the first resource created and stored in the backend is returned. Empty `request_id` fields are ignored. It is responsibility of the client to ensure uniqueness of the `request_id` strings. `request_id` strings are limited to 64 characters."
        }
      }
    },
    "google-native:runtimeconfig/v1beta1:ConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:runtimeconfig/v1beta1:ConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:runtimeconfig/v1beta1:ConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "configId",
        "etag",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "configId"
      ]
    },
    "google-native:runtimeconfig/v1beta1:Variable": {
      "description": "Creates a variable within the given configuration. You cannot create a variable with a name that is a prefix of an existing variable name, or a name that has an existing variable name as a prefix. To learn more about creating a variable, read the [Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables) documentation.",
      "properties": {
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the variable resource, in the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME] The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a valid RuntimeConfig resource and `[VARIABLE_NAME]` follows Unix file system file path naming. The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and dashes. Slashes are used as path element separators and are not part of the `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one non-slash character. Multiple slashes are coalesced into single slash character. Each path segment should match [0-9A-Za-z](?:[_.A-Za-z0-9-]{0,62}[_.A-Za-z0-9])? regular expression. The length of a `[VARIABLE_NAME]` must be less than 256 characters. Once you create a variable, you cannot change the variable name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional but recommended unique `request_id`. If the server receives two `create()` requests with the same `request_id`, then the second request will be ignored and the first resource created and stored in the backend is returned. Empty `request_id` fields are ignored. It is responsibility of the client to ensure uniqueness of the `request_id` strings. `request_id` strings are limited to 64 characters."
        },
        "state": {
          "type": "string",
          "description": "The current state of the variable. The variable state indicates the outcome of the `variables().watch` call and is visible through the `get` and `list` calls."
        },
        "text": {
          "type": "string",
          "description": "The string value of the variable. The length of the value must be less than 4096 bytes. Empty values are also accepted. For example, `text: \"my text value\"`. The string must be valid UTF-8."
        },
        "updateTime": {
          "type": "string",
          "description": "The time of the last variable update. Timestamp will be UTC timestamp."
        },
        "value": {
          "type": "string",
          "description": "The binary value of the variable. The length of the value must be less than 4096 bytes. Empty values are also accepted. The value must be base64 encoded, and must comply with IETF RFC4648 (https://www.ietf.org/rfc/rfc4648.txt). Only one of `value` or `text` can be set."
        }
      },
      "type": "object",
      "required": [
        "configId",
        "name",
        "project",
        "state",
        "text",
        "updateTime",
        "value"
      ],
      "inputProperties": {
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the variable resource, in the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME] The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a valid RuntimeConfig resource and `[VARIABLE_NAME]` follows Unix file system file path naming. The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and dashes. Slashes are used as path element separators and are not part of the `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one non-slash character. Multiple slashes are coalesced into single slash character. Each path segment should match [0-9A-Za-z](?:[_.A-Za-z0-9-]{0,62}[_.A-Za-z0-9])? regular expression. The length of a `[VARIABLE_NAME]` must be less than 256 characters. Once you create a variable, you cannot change the variable name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional but recommended unique `request_id`. If the server receives two `create()` requests with the same `request_id`, then the second request will be ignored and the first resource created and stored in the backend is returned. Empty `request_id` fields are ignored. It is responsibility of the client to ensure uniqueness of the `request_id` strings. `request_id` strings are limited to 64 characters."
        },
        "text": {
          "type": "string",
          "description": "The string value of the variable. The length of the value must be less than 4096 bytes. Empty values are also accepted. For example, `text: \"my text value\"`. The string must be valid UTF-8."
        },
        "value": {
          "type": "string",
          "description": "The binary value of the variable. The length of the value must be less than 4096 bytes. Empty values are also accepted. The value must be base64 encoded, and must comply with IETF RFC4648 (https://www.ietf.org/rfc/rfc4648.txt). Only one of `value` or `text` can be set."
        }
      },
      "requiredInputs": [
        "configId"
      ]
    },
    "google-native:runtimeconfig/v1beta1:Waiter": {
      "description": "Creates a Waiter resource. This operation returns a long-running Operation resource which can be polled for completion. However, a waiter with the given name will exist (and can be retrieved) prior to the operation completing. If the operation fails, the failed Waiter resource will still exist and must be deleted prior to subsequent creation attempts.",
      "properties": {
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The instant at which this Waiter resource was created. Adding the value of `timeout` to this instant yields the timeout deadline for the waiter."
        },
        "done": {
          "type": "boolean",
          "description": "If the value is `false`, it means the waiter is still waiting for one of its conditions to be met. If true, the waiter has finished. If the waiter finished due to a timeout or failure, `error` will be set."
        },
        "error": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:StatusResponse",
          "description": "If the waiter ended due to a failure or timeout, this value will be set."
        },
        "failure": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:EndConditionResponse",
          "description": "[Optional] The failure condition of this waiter. If this condition is met, `done` will be set to `true` and the `error` code will be set to `ABORTED`. The failure condition takes precedence over the success condition. If both conditions are met, a failure will be indicated. This value is optional; if no failure condition is set, the only failure scenario will be a timeout."
        },
        "name": {
          "type": "string",
          "description": "The name of the Waiter resource, in the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME] The `[PROJECT_ID]` must be a valid Google Cloud project ID, the `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the `[WAITER_NAME]` must match RFC 1035 segment specification, and the length of `[WAITER_NAME]` must be less than 64 bytes. After you create a Waiter resource, you cannot change the resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional but recommended unique `request_id`. If the server receives two `create()` requests with the same `request_id`, then the second request will be ignored and the first resource created and stored in the backend is returned. Empty `request_id` fields are ignored. It is responsibility of the client to ensure uniqueness of the `request_id` strings. `request_id` strings are limited to 64 characters."
        },
        "success": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:EndConditionResponse",
          "description": "[Required] The success condition. If this condition is met, `done` will be set to `true` and the `error` value will remain unset. The failure condition takes precedence over the success condition. If both conditions are met, a failure will be indicated."
        },
        "timeout": {
          "type": "string",
          "description": "[Required] Specifies the timeout of the waiter in seconds, beginning from the instant that `waiters().create` method is called. If this time elapses before the success or failure conditions are met, the waiter fails and sets the `error` code to `DEADLINE_EXCEEDED`."
        }
      },
      "type": "object",
      "required": [
        "configId",
        "createTime",
        "done",
        "error",
        "failure",
        "name",
        "project",
        "success",
        "timeout"
      ],
      "inputProperties": {
        "configId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "failure": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:EndCondition",
          "description": "[Optional] The failure condition of this waiter. If this condition is met, `done` will be set to `true` and the `error` code will be set to `ABORTED`. The failure condition takes precedence over the success condition. If both conditions are met, a failure will be indicated. This value is optional; if no failure condition is set, the only failure scenario will be a timeout."
        },
        "name": {
          "type": "string",
          "description": "The name of the Waiter resource, in the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME] The `[PROJECT_ID]` must be a valid Google Cloud project ID, the `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the `[WAITER_NAME]` must match RFC 1035 segment specification, and the length of `[WAITER_NAME]` must be less than 64 bytes. After you create a Waiter resource, you cannot change the resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "An optional but recommended unique `request_id`. If the server receives two `create()` requests with the same `request_id`, then the second request will be ignored and the first resource created and stored in the backend is returned. Empty `request_id` fields are ignored. It is responsibility of the client to ensure uniqueness of the `request_id` strings. `request_id` strings are limited to 64 characters."
        },
        "success": {
          "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:EndCondition",
          "description": "[Required] The success condition. If this condition is met, `done` will be set to `true` and the `error` value will remain unset. The failure condition takes precedence over the success condition. If both conditions are met, a failure will be indicated."
        },
        "timeout": {
          "type": "string",
          "description": "[Required] Specifies the timeout of the waiter in seconds, beginning from the instant that `waiters().create` method is called. If this time elapses before the success or failure conditions are met, the waiter fails and sets the `error` code to `DEADLINE_EXCEEDED`."
        }
      },
      "requiredInputs": [
        "configId"
      ]
    },
    "google-native:secretmanager/v1:Secret": {
      "description": "Creates a new Secret containing no SecretVersions.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom metadata about the secret. Annotations are distinct from various forms of labels. Annotations exist to allow client tools to store their own state information without requiring a database. Annotation keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, begin and end with an alphanumeric character ([a-z0-9A-Z]), and may have dashes (-), underscores (_), dots (.), and alphanumerics in between these symbols. The total size of annotation keys and values must be less than 16KiB."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the Secret was created."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Etag of the currently stored Secret."
        },
        "expireTime": {
          "type": "string",
          "description": "Optional. Timestamp in UTC when the Secret is scheduled to expire. This is always provided on output, regardless of what was sent on input."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels assigned to this Secret. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `\\p{Ll}\\p{Lo}{0,62}` Label values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}` No more than 64 labels can be assigned to a given resource."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Secret in the format `projects/*/secrets/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replication": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:ReplicationResponse",
          "description": "Immutable. The replication policy of the secret data attached to the Secret. The replication policy cannot be changed after the Secret has been created."
        },
        "rotation": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:RotationResponse",
          "description": "Optional. Rotation policy attached to the Secret. May be excluded if there is no rotation policy."
        },
        "secretId": {
          "type": "string",
          "description": "Required. This must be unique within the project. A secret ID is a string with a maximum length of 255 characters and can contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and underscore (`_`) characters.",
          "replaceOnChanges": true
        },
        "topics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:TopicResponse"
          },
          "description": "Optional. A list of up to 10 Pub/Sub topics to which messages are published when control plane operations are called on the secret or its versions."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL for the Secret."
        },
        "versionAliases": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping from version alias to version name. A version alias is a string with a maximum length of 63 characters and can contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and underscore ('_') characters. An alias string must start with a letter and cannot be the string 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. Version-Alias pairs will be viewable via GetSecret and modifiable via UpdateSecret. At launch Access by Allias will only be supported on GetSecretVersion and AccessSecretVersion."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "createTime",
        "etag",
        "expireTime",
        "labels",
        "name",
        "project",
        "replication",
        "rotation",
        "secretId",
        "topics",
        "ttl",
        "versionAliases"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Custom metadata about the secret. Annotations are distinct from various forms of labels. Annotations exist to allow client tools to store their own state information without requiring a database. Annotation keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, begin and end with an alphanumeric character ([a-z0-9A-Z]), and may have dashes (-), underscores (_), dots (.), and alphanumerics in between these symbols. The total size of annotation keys and values must be less than 16KiB."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Etag of the currently stored Secret."
        },
        "expireTime": {
          "type": "string",
          "description": "Optional. Timestamp in UTC when the Secret is scheduled to expire. This is always provided on output, regardless of what was sent on input."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels assigned to this Secret. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `\\p{Ll}\\p{Lo}{0,62}` Label values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}` No more than 64 labels can be assigned to a given resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replication": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:Replication",
          "description": "Immutable. The replication policy of the secret data attached to the Secret. The replication policy cannot be changed after the Secret has been created."
        },
        "rotation": {
          "$ref": "#/types/google-native:secretmanager%2Fv1:Rotation",
          "description": "Optional. Rotation policy attached to the Secret. May be excluded if there is no rotation policy."
        },
        "secretId": {
          "type": "string",
          "description": "Required. This must be unique within the project. A secret ID is a string with a maximum length of 255 characters and can contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and underscore (`_`) characters.",
          "replaceOnChanges": true
        },
        "topics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:Topic"
          },
          "description": "Optional. A list of up to 10 Pub/Sub topics to which messages are published when control plane operations are called on the secret or its versions."
        },
        "ttl": {
          "type": "string",
          "description": "Input only. The TTL for the Secret."
        },
        "versionAliases": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Mapping from version alias to version name. A version alias is a string with a maximum length of 63 characters and can contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and underscore ('_') characters. An alias string must start with a letter and cannot be the string 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. Version-Alias pairs will be viewable via GetSecret and modifiable via UpdateSecret. At launch Access by Allias will only be supported on GetSecretVersion and AccessSecretVersion."
        }
      },
      "requiredInputs": [
        "replication",
        "secretId"
      ]
    },
    "google-native:secretmanager/v1:SecretIamBinding": {
      "description": "Sets the access control policy on the specified secret. Replaces any existing policy. Permissions on SecretVersions are enforced according to the policy set on the associated Secret.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:secretmanager/v1:SecretIamMember": {
      "description": "Sets the access control policy on the specified secret. Replaces any existing policy. Permissions on SecretVersions are enforced according to the policy set on the associated Secret.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:secretmanager/v1:SecretIamPolicy": {
      "description": "Sets the access control policy on the specified secret. Replaces any existing policy. Permissions on SecretVersions are enforced according to the policy set on the associated Secret.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secretId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "secretId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secretId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "secretId"
      ]
    },
    "google-native:secretmanager/v1beta1:Secret": {
      "description": "Creates a new Secret containing no SecretVersions.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time at which the Secret was created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels assigned to this Secret. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `\\p{Ll}\\p{Lo}{0,62}` Label values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}` No more than 64 labels can be assigned to a given resource."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the Secret in the format `projects/*/secrets/*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replication": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:ReplicationResponse",
          "description": "Immutable. The replication policy of the secret data attached to the Secret. The replication policy cannot be changed after the Secret has been created."
        },
        "secretId": {
          "type": "string",
          "description": "Required. This must be unique within the project. A secret ID is a string with a maximum length of 255 characters and can contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and underscore (`_`) characters.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "labels",
        "name",
        "project",
        "replication",
        "secretId"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels assigned to this Secret. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `\\p{Ll}\\p{Lo}{0,62}` Label values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}` No more than 64 labels can be assigned to a given resource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replication": {
          "$ref": "#/types/google-native:secretmanager%2Fv1beta1:Replication",
          "description": "Immutable. The replication policy of the secret data attached to the Secret. The replication policy cannot be changed after the Secret has been created."
        },
        "secretId": {
          "type": "string",
          "description": "Required. This must be unique within the project. A secret ID is a string with a maximum length of 255 characters and can contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and underscore (`_`) characters.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "replication",
        "secretId"
      ]
    },
    "google-native:secretmanager/v1beta1:SecretIamBinding": {
      "description": "Sets the access control policy on the specified secret. Replaces any existing policy. Permissions on SecretVersions are enforced according to the policy set on the associated Secret.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:secretmanager/v1beta1:SecretIamMember": {
      "description": "Sets the access control policy on the specified secret. Replaces any existing policy. Permissions on SecretVersions are enforced according to the policy set on the associated Secret.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:secretmanager/v1beta1:SecretIamPolicy": {
      "description": "Sets the access control policy on the specified secret. Replaces any existing policy. Permissions on SecretVersions are enforced according to the policy set on the associated Secret.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secretId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "secretId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "secretId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "secretId"
      ]
    },
    "google-native:securitycenter/v1:FolderBigQueryExport": {
      "description": "Creates a BigQuery export.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigQueryExportId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation."
        },
        "dataset": {
          "type": "string",
          "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_)."
        },
        "description": {
          "type": "string",
          "description": "The description of the export (max of 1024 characters)."
        },
        "filter": {
          "type": "string",
          "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mostRecentEditor": {
          "type": "string",
          "description": "Email address of the user who last edited the BigQuery export. This field is set by the server and will be ignored if provided on export creation or update."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests."
        },
        "principal": {
          "type": "string",
          "description": "The service account that needs permission to create table and upload data to the BigQuery dataset."
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update."
        }
      },
      "type": "object",
      "required": [
        "bigQueryExportId",
        "createTime",
        "dataset",
        "description",
        "filter",
        "folderId",
        "mostRecentEditor",
        "name",
        "principal",
        "updateTime"
      ],
      "inputProperties": {
        "bigQueryExportId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "dataset": {
          "type": "string",
          "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_)."
        },
        "description": {
          "type": "string",
          "description": "The description of the export (max of 1024 characters)."
        },
        "filter": {
          "type": "string",
          "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests."
        }
      },
      "requiredInputs": [
        "bigQueryExportId",
        "folderId"
      ]
    },
    "google-native:securitycenter/v1:FolderNotificationConfig": {
      "description": "Creates a notification config.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must be between 1 and 128 characters and contain alphanumeric characters, underscores, or hyphens only.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the notification config (max of 1024 characters)."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\"."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\"."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that needs \"pubsub.topics.publish\" permission to publish to the Pub/Sub topic."
        },
        "streamingConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfigResponse",
          "description": "The config for triggering streaming-based notifications."
        }
      },
      "type": "object",
      "required": [
        "configId",
        "description",
        "folderId",
        "name",
        "pubsubTopic",
        "serviceAccount",
        "streamingConfig"
      ],
      "inputProperties": {
        "configId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must be between 1 and 128 characters and contain alphanumeric characters, underscores, or hyphens only.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the notification config (max of 1024 characters)."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\"."
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\"."
        },
        "streamingConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfig",
          "description": "The config for triggering streaming-based notifications."
        }
      },
      "requiredInputs": [
        "configId",
        "folderId"
      ]
    },
    "google-native:securitycenter/v1:FolderSecurityHealthAnalyticsSettingCustomModule": {
      "description": "Creates a resident SecurityHealthAnalyticsCustomModule at the scope of the given CRM parent, and also creates inherited SecurityHealthAnalyticsCustomModules for all CRM descendants of the given parent. These modules are enabled by default.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "ancestorModule": {
          "type": "string",
          "description": "If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited."
        },
        "customConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfigResponse",
          "description": "The user specified custom configuration for the module."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only."
        },
        "enablementState": {
          "type": "string",
          "description": "The enablement state of the custom module."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "lastEditor": {
          "type": "string",
          "description": "The editor that last updated the custom module."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which the custom module was last updated."
        }
      },
      "type": "object",
      "required": [
        "ancestorModule",
        "customConfig",
        "displayName",
        "enablementState",
        "folderId",
        "lastEditor",
        "name",
        "updateTime"
      ],
      "inputProperties": {
        "customConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfig",
          "description": "The user specified custom configuration for the module."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only."
        },
        "enablementState": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:FolderSecurityHealthAnalyticsSettingCustomModuleEnablementState",
          "description": "The enablement state of the custom module."
        },
        "folderId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits."
        }
      },
      "requiredInputs": [
        "folderId"
      ]
    },
    "google-native:securitycenter/v1:MuteConfig": {
      "description": "Creates a mute config.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation."
        },
        "description": {
          "type": "string",
          "description": "A description of the mute config."
        },
        "displayName": {
          "type": "string",
          "description": "The human readable name to be displayed for the mute config."
        },
        "filter": {
          "type": "string",
          "description": "An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`"
        },
        "mostRecentEditor": {
          "type": "string",
          "description": "Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update."
        },
        "muteConfigId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "This field will be ignored if provided on config creation. Format \"organizations/{organization}/muteConfigs/{mute_config}\" \"folders/{folder}/muteConfigs/{mute_config}\" \"projects/{project}/muteConfigs/{mute_config}\" \"organizations/{organization}/locations/global/muteConfigs/{mute_config}\" \"folders/{folder}/locations/global/muteConfigs/{mute_config}\" \"projects/{project}/locations/global/muteConfigs/{mute_config}\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "filter",
        "mostRecentEditor",
        "muteConfigId",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of the mute config."
        },
        "displayName": {
          "type": "string",
          "description": "The human readable name to be displayed for the mute config."
        },
        "filter": {
          "type": "string",
          "description": "An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`"
        },
        "muteConfigId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "This field will be ignored if provided on config creation. Format \"organizations/{organization}/muteConfigs/{mute_config}\" \"folders/{folder}/muteConfigs/{mute_config}\" \"projects/{project}/muteConfigs/{mute_config}\" \"organizations/{organization}/locations/global/muteConfigs/{mute_config}\" \"folders/{folder}/locations/global/muteConfigs/{mute_config}\" \"projects/{project}/locations/global/muteConfigs/{mute_config}\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "filter",
        "muteConfigId"
      ]
    },
    "google-native:securitycenter/v1:NotificationConfig": {
      "description": "Creates a notification config.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must be between 1 and 128 characters and contain alphanumeric characters, underscores, or hyphens only.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the notification config (max of 1024 characters)."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\"."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that needs \"pubsub.topics.publish\" permission to publish to the Pub/Sub topic."
        },
        "streamingConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfigResponse",
          "description": "The config for triggering streaming-based notifications."
        }
      },
      "type": "object",
      "required": [
        "configId",
        "description",
        "name",
        "project",
        "pubsubTopic",
        "serviceAccount",
        "streamingConfig"
      ],
      "inputProperties": {
        "configId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must be between 1 and 128 characters and contain alphanumeric characters, underscores, or hyphens only.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the notification config (max of 1024 characters)."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\"."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\"."
        },
        "streamingConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfig",
          "description": "The config for triggering streaming-based notifications."
        }
      },
      "requiredInputs": [
        "configId"
      ]
    },
    "google-native:securitycenter/v1:OrganizationBigQueryExport": {
      "description": "Creates a BigQuery export.",
      "properties": {
        "bigQueryExportId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation."
        },
        "dataset": {
          "type": "string",
          "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_)."
        },
        "description": {
          "type": "string",
          "description": "The description of the export (max of 1024 characters)."
        },
        "filter": {
          "type": "string",
          "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes."
        },
        "mostRecentEditor": {
          "type": "string",
          "description": "Email address of the user who last edited the BigQuery export. This field is set by the server and will be ignored if provided on export creation or update."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "principal": {
          "type": "string",
          "description": "The service account that needs permission to create table and upload data to the BigQuery dataset."
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update."
        }
      },
      "type": "object",
      "required": [
        "bigQueryExportId",
        "createTime",
        "dataset",
        "description",
        "filter",
        "mostRecentEditor",
        "name",
        "organizationId",
        "principal",
        "updateTime"
      ],
      "inputProperties": {
        "bigQueryExportId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "dataset": {
          "type": "string",
          "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_)."
        },
        "description": {
          "type": "string",
          "description": "The description of the export (max of 1024 characters)."
        },
        "filter": {
          "type": "string",
          "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "bigQueryExportId",
        "organizationId"
      ]
    },
    "google-native:securitycenter/v1:OrganizationEventThreatDetectionSettingCustomModule": {
      "description": "Creates an Event Threat Detection custom module.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "config": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Config for the module. For the resident module, its config value is defined at this level. For the inherited module, its config value is inherited from the ancestor module."
        },
        "description": {
          "type": "string",
          "description": "The description for the module."
        },
        "displayName": {
          "type": "string",
          "description": "The human readable name to be displayed for the module."
        },
        "enablementState": {
          "type": "string",
          "description": "The state of enablement for the module at the given level of the hierarchy."
        },
        "lastEditor": {
          "type": "string",
          "description": "The editor the module was last updated by."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Event Threat Detection custom module. Its format is: * \"organizations/{organization}/eventThreatDetectionSettings/customModules/{module}\". * \"folders/{folder}/eventThreatDetectionSettings/customModules/{module}\". * \"projects/{project}/eventThreatDetectionSettings/customModules/{module}\"."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "Type for the module. e.g. CONFIGURABLE_BAD_IP."
        },
        "updateTime": {
          "type": "string",
          "description": "The time the module was last updated."
        }
      },
      "type": "object",
      "required": [
        "config",
        "description",
        "displayName",
        "enablementState",
        "lastEditor",
        "name",
        "organizationId",
        "type",
        "updateTime"
      ],
      "inputProperties": {
        "config": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Config for the module. For the resident module, its config value is defined at this level. For the inherited module, its config value is inherited from the ancestor module."
        },
        "description": {
          "type": "string",
          "description": "The description for the module."
        },
        "displayName": {
          "type": "string",
          "description": "The human readable name to be displayed for the module."
        },
        "enablementState": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:OrganizationEventThreatDetectionSettingCustomModuleEnablementState",
          "description": "The state of enablement for the module at the given level of the hierarchy."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the Event Threat Detection custom module. Its format is: * \"organizations/{organization}/eventThreatDetectionSettings/customModules/{module}\". * \"folders/{folder}/eventThreatDetectionSettings/customModules/{module}\". * \"projects/{project}/eventThreatDetectionSettings/customModules/{module}\"."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "Type for the module. e.g. CONFIGURABLE_BAD_IP."
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:securitycenter/v1:OrganizationMuteConfig": {
      "description": "Creates a mute config.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation."
        },
        "description": {
          "type": "string",
          "description": "A description of the mute config."
        },
        "displayName": {
          "type": "string",
          "description": "The human readable name to be displayed for the mute config."
        },
        "filter": {
          "type": "string",
          "description": "An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`"
        },
        "mostRecentEditor": {
          "type": "string",
          "description": "Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update."
        },
        "muteConfigId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "This field will be ignored if provided on config creation. Format \"organizations/{organization}/muteConfigs/{mute_config}\" \"folders/{folder}/muteConfigs/{mute_config}\" \"projects/{project}/muteConfigs/{mute_config}\" \"organizations/{organization}/locations/global/muteConfigs/{mute_config}\" \"folders/{folder}/locations/global/muteConfigs/{mute_config}\" \"projects/{project}/locations/global/muteConfigs/{mute_config}\""
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "filter",
        "mostRecentEditor",
        "muteConfigId",
        "name",
        "organizationId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description of the mute config."
        },
        "displayName": {
          "type": "string",
          "description": "The human readable name to be displayed for the mute config."
        },
        "filter": {
          "type": "string",
          "description": "An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`"
        },
        "muteConfigId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "This field will be ignored if provided on config creation. Format \"organizations/{organization}/muteConfigs/{mute_config}\" \"folders/{folder}/muteConfigs/{mute_config}\" \"projects/{project}/muteConfigs/{mute_config}\" \"organizations/{organization}/locations/global/muteConfigs/{mute_config}\" \"folders/{folder}/locations/global/muteConfigs/{mute_config}\" \"projects/{project}/locations/global/muteConfigs/{mute_config}\""
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "filter",
        "muteConfigId",
        "organizationId"
      ]
    },
    "google-native:securitycenter/v1:OrganizationNotificationConfig": {
      "description": "Creates a notification config.",
      "properties": {
        "configId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must be between 1 and 128 characters and contain alphanumeric characters, underscores, or hyphens only.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the notification config (max of 1024 characters)."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\"."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\"."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account that needs \"pubsub.topics.publish\" permission to publish to the Pub/Sub topic."
        },
        "streamingConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfigResponse",
          "description": "The config for triggering streaming-based notifications."
        }
      },
      "type": "object",
      "required": [
        "configId",
        "description",
        "name",
        "organizationId",
        "pubsubTopic",
        "serviceAccount",
        "streamingConfig"
      ],
      "inputProperties": {
        "configId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must be between 1 and 128 characters and contain alphanumeric characters, underscores, or hyphens only.",
          "replaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "The description of the notification config (max of 1024 characters)."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\"."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubTopic": {
          "type": "string",
          "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\"."
        },
        "streamingConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfig",
          "description": "The config for triggering streaming-based notifications."
        }
      },
      "requiredInputs": [
        "configId",
        "organizationId"
      ]
    },
    "google-native:securitycenter/v1:OrganizationSecurityHealthAnalyticsSettingCustomModule": {
      "description": "Creates a resident SecurityHealthAnalyticsCustomModule at the scope of the given CRM parent, and also creates inherited SecurityHealthAnalyticsCustomModules for all CRM descendants of the given parent. These modules are enabled by default.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "ancestorModule": {
          "type": "string",
          "description": "If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited."
        },
        "customConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfigResponse",
          "description": "The user specified custom configuration for the module."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only."
        },
        "enablementState": {
          "type": "string",
          "description": "The enablement state of the custom module."
        },
        "lastEditor": {
          "type": "string",
          "description": "The editor that last updated the custom module."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which the custom module was last updated."
        }
      },
      "type": "object",
      "required": [
        "ancestorModule",
        "customConfig",
        "displayName",
        "enablementState",
        "lastEditor",
        "name",
        "organizationId",
        "updateTime"
      ],
      "inputProperties": {
        "customConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfig",
          "description": "The user specified custom configuration for the module."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only."
        },
        "enablementState": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:OrganizationSecurityHealthAnalyticsSettingCustomModuleEnablementState",
          "description": "The enablement state of the custom module."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:securitycenter/v1:OrganizationSourceIamBinding": {
      "description": "Sets the access control policy on the specified Source.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:securitycenter/v1:OrganizationSourceIamMember": {
      "description": "Sets the access control policy on the specified Source.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:securitycenter/v1:OrganizationSourceIamPolicy": {
      "description": "Sets the access control policy on the specified Source.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "sourceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId",
        "sourceId"
      ]
    },
    "google-native:securitycenter/v1:ProjectBigQueryExport": {
      "description": "Creates a BigQuery export.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bigQueryExportId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation."
        },
        "dataset": {
          "type": "string",
          "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_)."
        },
        "description": {
          "type": "string",
          "description": "The description of the export (max of 1024 characters)."
        },
        "filter": {
          "type": "string",
          "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes."
        },
        "mostRecentEditor": {
          "type": "string",
          "description": "Email address of the user who last edited the BigQuery export. This field is set by the server and will be ignored if provided on export creation or update."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests."
        },
        "principal": {
          "type": "string",
          "description": "The service account that needs permission to create table and upload data to the BigQuery dataset."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update."
        }
      },
      "type": "object",
      "required": [
        "bigQueryExportId",
        "createTime",
        "dataset",
        "description",
        "filter",
        "mostRecentEditor",
        "name",
        "principal",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "bigQueryExportId": {
          "type": "string",
          "description": "Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.",
          "replaceOnChanges": true
        },
        "dataset": {
          "type": "string",
          "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_)."
        },
        "description": {
          "type": "string",
          "description": "The description of the export (max of 1024 characters)."
        },
        "filter": {
          "type": "string",
          "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "bigQueryExportId"
      ]
    },
    "google-native:securitycenter/v1:ProjectSecurityHealthAnalyticsSettingCustomModule": {
      "description": "Creates a resident SecurityHealthAnalyticsCustomModule at the scope of the given CRM parent, and also creates inherited SecurityHealthAnalyticsCustomModules for all CRM descendants of the given parent. These modules are enabled by default.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "ancestorModule": {
          "type": "string",
          "description": "If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited."
        },
        "customConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfigResponse",
          "description": "The user specified custom configuration for the module."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only."
        },
        "enablementState": {
          "type": "string",
          "description": "The enablement state of the custom module."
        },
        "lastEditor": {
          "type": "string",
          "description": "The editor that last updated the custom module."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which the custom module was last updated."
        }
      },
      "type": "object",
      "required": [
        "ancestorModule",
        "customConfig",
        "displayName",
        "enablementState",
        "lastEditor",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "customConfig": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfig",
          "description": "The user specified custom configuration for the module."
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only."
        },
        "enablementState": {
          "$ref": "#/types/google-native:securitycenter%2Fv1:ProjectSecurityHealthAnalyticsSettingCustomModuleEnablementState",
          "description": "The enablement state of the custom module."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:securitycenter/v1:Source": {
      "description": "Creates a source.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "canonicalName": {
          "type": "string",
          "description": "The canonical name of the finding source. It's either \"organizations/{organization_id}/sources/{source_id}\", \"folders/{folder_id}/sources/{source_id}\", or \"projects/{project_number}/sources/{source_id}\", depending on the closest CRM ancestor of the resource associated with the finding."
        },
        "description": {
          "type": "string",
          "description": "The description of the source (max of 1024 characters). Example: \"Web Security Scanner is a web security scanner for common vulnerabilities in App Engine applications. It can automatically scan and detect four common vulnerabilities, including cross-site-scripting (XSS), Flash injection, mixed content (HTTP in HTTPS), and outdated or insecure libraries.\""
        },
        "displayName": {
          "type": "string",
          "description": "The source's display name. A source's display name must be unique amongst its siblings, for example, two sources with the same parent can't share the same display name. The display name must have a length between 1 and 64 characters (inclusive)."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this source. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/sources/{source_id}\""
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "canonicalName",
        "description",
        "displayName",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "canonicalName": {
          "type": "string",
          "description": "The canonical name of the finding source. It's either \"organizations/{organization_id}/sources/{source_id}\", \"folders/{folder_id}/sources/{source_id}\", or \"projects/{project_number}/sources/{source_id}\", depending on the closest CRM ancestor of the resource associated with the finding."
        },
        "description": {
          "type": "string",
          "description": "The description of the source (max of 1024 characters). Example: \"Web Security Scanner is a web security scanner for common vulnerabilities in App Engine applications. It can automatically scan and detect four common vulnerabilities, including cross-site-scripting (XSS), Flash injection, mixed content (HTTP in HTTPS), and outdated or insecure libraries.\""
        },
        "displayName": {
          "type": "string",
          "description": "The source's display name. A source's display name must be unique amongst its siblings, for example, two sources with the same parent can't share the same display name. The display name must have a length between 1 and 64 characters (inclusive)."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this source. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/sources/{source_id}\""
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:securitycenter/v1beta1:OrganizationSourceIamBinding": {
      "description": "Sets the access control policy on the specified Source.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:securitycenter/v1beta1:OrganizationSourceIamMember": {
      "description": "Sets the access control policy on the specified Source.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:securitycenter/v1beta1:OrganizationSourceIamPolicy": {
      "description": "Sets the access control policy on the specified Source.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1beta1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "organizationId",
        "sourceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1beta1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:securitycenter%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "organizationId",
        "sourceId"
      ]
    },
    "google-native:securitycenter/v1beta1:Source": {
      "description": "Creates a source.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "description": {
          "type": "string",
          "description": "The description of the source (max of 1024 characters). Example: \"Web Security Scanner is a web security scanner for common vulnerabilities in App Engine applications. It can automatically scan and detect four common vulnerabilities, including cross-site-scripting (XSS), Flash injection, mixed content (HTTP in HTTPS), and outdated/insecure libraries.\""
        },
        "displayName": {
          "type": "string",
          "description": "The source's display name. A source's display name must be unique amongst its siblings, for example, two sources with the same parent can't share the same display name. The display name must have a length between 1 and 64 characters (inclusive)."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this source. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/sources/{source_id}\""
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The description of the source (max of 1024 characters). Example: \"Web Security Scanner is a web security scanner for common vulnerabilities in App Engine applications. It can automatically scan and detect four common vulnerabilities, including cross-site-scripting (XSS), Flash injection, mixed content (HTTP in HTTPS), and outdated/insecure libraries.\""
        },
        "displayName": {
          "type": "string",
          "description": "The source's display name. A source's display name must be unique amongst its siblings, for example, two sources with the same parent can't share the same display name. The display name must have a length between 1 and 64 characters (inclusive)."
        },
        "name": {
          "type": "string",
          "description": "The relative resource name of this source. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/sources/{source_id}\""
        },
        "organizationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "organizationId"
      ]
    },
    "google-native:servicedirectory/v1:Endpoint": {
      "description": "Creates an endpoint, and returns the new endpoint.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "endpointId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`."
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "Immutable. The Google Compute Engine network (VPC) of the endpoint in the format `projects//locations/global/networks/*`. The project must be specified by project number (project id is rejected). Incorrectly formatted networks are rejected, we also check to make sure that you have the servicedirectory.networks.attach permission on the project specified."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Service Directory rejects values outside of `[0, 65535]`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "The globally unique identifier of the endpoint in the UUID4 format."
        }
      },
      "type": "object",
      "required": [
        "address",
        "annotations",
        "endpointId",
        "location",
        "name",
        "namespaceId",
        "network",
        "port",
        "project",
        "serviceId",
        "uid"
      ],
      "inputProperties": {
        "address": {
          "type": "string",
          "description": "Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "endpointId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`."
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "Immutable. The Google Compute Engine network (VPC) of the endpoint in the format `projects//locations/global/networks/*`. The project must be specified by project number (project id is rejected). Incorrectly formatted networks are rejected, we also check to make sure that you have the servicedirectory.networks.attach permission on the project specified."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Service Directory rejects values outside of `[0, 65535]`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "endpointId",
        "namespaceId",
        "serviceId"
      ]
    },
    "google-native:servicedirectory/v1:Namespace": {
      "description": "Creates a namespace, and returns the new namespace.",
      "properties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels associated with this namespace. No more than 64 user labels can be associated with a given resource. Label keys and values can be no longer than 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the namespace in the format `projects/*/locations/*/namespaces/*`."
        },
        "namespaceId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "The globally unique identifier of the namespace in the UUID4 format."
        }
      },
      "type": "object",
      "required": [
        "labels",
        "location",
        "name",
        "namespaceId",
        "project",
        "uid"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels associated with this namespace. No more than 64 user labels can be associated with a given resource. Label keys and values can be no longer than 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the namespace in the format `projects/*/locations/*/namespaces/*`."
        },
        "namespaceId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "namespaceId"
      ]
    },
    "google-native:servicedirectory/v1:NamespaceIamBinding": {
      "description": "Sets the IAM Policy for a resource (namespace or service only).",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1:NamespaceIamMember": {
      "description": "Sets the IAM Policy for a resource (namespace or service only).",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1:NamespaceIamPolicy": {
      "description": "Sets the IAM Policy for a resource (namespace or service only).\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "namespaceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "namespaceId"
      ]
    },
    "google-native:servicedirectory/v1:NamespaceServiceIamBinding": {
      "description": "Sets the IAM Policy for a resource (namespace or service only).",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1:NamespaceServiceIamMember": {
      "description": "Sets the IAM Policy for a resource (namespace or service only).",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1:NamespaceServiceIamPolicy": {
      "description": "Sets the IAM Policy for a resource (namespace or service only).\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "namespaceId",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "namespaceId",
        "serviceId"
      ]
    },
    "google-native:servicedirectory/v1:Service": {
      "description": "Creates a service, and returns the new service.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1:EndpointResponse"
          },
          "description": "Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`."
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "The globally unique identifier of the service in the UUID4 format."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "endpoints",
        "location",
        "name",
        "namespaceId",
        "project",
        "serviceId",
        "uid"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`."
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "namespaceId",
        "serviceId"
      ]
    },
    "google-native:servicedirectory/v1beta1:Endpoint": {
      "description": "Creates an endpoint, and returns the new endpoint.",
      "properties": {
        "address": {
          "type": "string",
          "description": "Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the endpoint was created."
        },
        "endpointId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`."
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "Immutable. The Google Compute Engine network (VPC) of the endpoint in the format `projects//locations/global/networks/*`. The project must be specified by project number (project id is rejected). Incorrectly formatted networks are rejected, but no other validation is performed on this field (ex. network or project existence, reachability, or permissions)."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Service Directory rejects values outside of `[0, 65535]`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "A globally unique identifier (in UUID4 format) for this endpoint."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the endpoint was last updated."
        }
      },
      "type": "object",
      "required": [
        "address",
        "createTime",
        "endpointId",
        "location",
        "metadata",
        "name",
        "namespaceId",
        "network",
        "port",
        "project",
        "serviceId",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "address": {
          "type": "string",
          "description": "Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters."
        },
        "endpointId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`."
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "Immutable. The Google Compute Engine network (VPC) of the endpoint in the format `projects//locations/global/networks/*`. The project must be specified by project number (project id is rejected). Incorrectly formatted networks are rejected, but no other validation is performed on this field (ex. network or project existence, reachability, or permissions)."
        },
        "port": {
          "type": "integer",
          "description": "Optional. Service Directory rejects values outside of `[0, 65535]`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "endpointId",
        "namespaceId",
        "serviceId"
      ]
    },
    "google-native:servicedirectory/v1beta1:Namespace": {
      "description": "Creates a namespace, and returns the new namespace.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the namespace was created."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels associated with this namespace. No more than 64 user labels can be associated with a given resource. Label keys and values can be no longer than 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the namespace in the format `projects/*/locations/*/namespaces/*`."
        },
        "namespaceId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "A globally unique identifier (in UUID4 format) for this namespace."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the namespace was last updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "labels",
        "location",
        "name",
        "namespaceId",
        "project",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Resource labels associated with this namespace. No more than 64 user labels can be associated with a given resource. Label keys and values can be no longer than 63 characters."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the namespace in the format `projects/*/locations/*/namespaces/*`."
        },
        "namespaceId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "namespaceId"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceIamBinding": {
      "description": "Sets the IAM Policy for a resource",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceIamMember": {
      "description": "Sets the IAM Policy for a resource",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceIamPolicy": {
      "description": "Sets the IAM Policy for a resource\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "namespaceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "namespaceId"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceServiceIamBinding": {
      "description": "Sets the IAM Policy for a resource",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceServiceIamMember": {
      "description": "Sets the IAM Policy for a resource",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceServiceIamPolicy": {
      "description": "Sets the IAM Policy for a resource\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "namespaceId",
        "project",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "namespaceId",
        "serviceId"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceWorkloadIamBinding": {
      "description": "Sets the IAM Policy for a resource",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceWorkloadIamMember": {
      "description": "Sets the IAM Policy for a resource",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:servicedirectory/v1beta1:NamespaceWorkloadIamPolicy": {
      "description": "Sets the IAM Policy for a resource\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workloadId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "location",
        "namespaceId",
        "project",
        "version",
        "workloadId"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workloadId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "namespaceId",
        "workloadId"
      ]
    },
    "google-native:servicedirectory/v1beta1:Service": {
      "description": "Creates a service, and returns the new service.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp when the service was created."
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:EndpointResponse"
          },
          "description": "Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`."
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        },
        "uid": {
          "type": "string",
          "description": "A globally unique identifier (in UUID4 format) for this service."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp when the service was last updated. Note: endpoints being created/deleted/updated within the service are not considered service updates for the purpose of this timestamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "endpoints",
        "location",
        "metadata",
        "name",
        "namespaceId",
        "project",
        "serviceId",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`."
        },
        "namespaceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceId": {
          "type": "string",
          "description": "Required. The Resource ID must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "namespaceId",
        "serviceId"
      ]
    },
    "google-native:servicemanagement/v1:Config": {
      "description": "Creates a new service configuration (version) for a managed service. This method only stores the service configuration. To roll out the service configuration to backend systems please call CreateServiceRollout. Only the 100 most recent service configurations and ones referenced by existing rollouts are kept for each service. The rest will be deleted eventually.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "apis": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:ApiResponse"
          },
          "description": "A list of API interfaces exported by this service. Only the `name` field of the google.protobuf.Api needs to be provided by the configuration author, as the remaining fields will be derived from the IDL during the normalization process. It is an error to specify an API interface here which cannot be resolved against the associated IDL files."
        },
        "authentication": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:AuthenticationResponse",
          "description": "Auth configuration."
        },
        "backend": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:BackendResponse",
          "description": "API backend configuration."
        },
        "billing": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:BillingResponse",
          "description": "Billing configuration."
        },
        "configVersion": {
          "type": "integer",
          "description": "Obsolete. Do not use. This field has no semantic meaning. The service config compiler always sets this field to `3`."
        },
        "context": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:ContextResponse",
          "description": "Context configuration."
        },
        "control": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:ControlResponse",
          "description": "Configuration for the service control plane."
        },
        "customError": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CustomErrorResponse",
          "description": "Custom error configuration."
        },
        "documentation": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:DocumentationResponse",
          "description": "Additional API documentation."
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:EndpointResponse"
          },
          "description": "Configuration for network endpoints. If this is empty, then an endpoint with the same name as the service is automatically generated to service all defined APIs."
        },
        "enums": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:EnumResponse"
          },
          "description": "A list of all enum types included in this API service. Enums referenced directly or indirectly by the `apis` are automatically included. Enums which are not referenced but shall be included should be listed here by name by the configuration author. Example: enums: - name: google.someapi.v1.SomeEnum"
        },
        "http": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:HttpResponse",
          "description": "HTTP configuration."
        },
        "logging": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:LoggingResponse",
          "description": "Logging configuration."
        },
        "logs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LogDescriptorResponse"
          },
          "description": "Defines the logs used by this service."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptorResponse"
          },
          "description": "Defines the metrics used by this service."
        },
        "monitoredResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoredResourceDescriptorResponse"
          },
          "description": "Defines the monitored resources used by this service. This is required by the Service.monitoring and Service.logging configurations."
        },
        "monitoring": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoringResponse",
          "description": "Monitoring configuration."
        },
        "name": {
          "type": "string",
          "description": "The service name, which is a DNS-like logical identifier for the service, such as `calendar.googleapis.com`. The service name typically goes through DNS verification to make sure the owner of the service also owns the DNS name."
        },
        "producerProjectId": {
          "type": "string",
          "description": "The Google project that owns this service."
        },
        "publishing": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:PublishingResponse",
          "description": "Settings for [Google Cloud Client libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) generated from APIs defined as protocol buffers."
        },
        "quota": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:QuotaResponse",
          "description": "Quota configuration."
        },
        "serviceName": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceInfo": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SourceInfoResponse",
          "description": "The source information for this configuration if available."
        },
        "systemParameters": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SystemParametersResponse",
          "description": "System parameter configuration."
        },
        "systemTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:TypeResponse"
          },
          "description": "A list of all proto message types included in this API service. It serves similar purpose as [google.api.Service.types], except that these types are not needed by user-defined APIs. Therefore, they will not show up in the generated discovery doc. This field should only be used to define system APIs in ESF."
        },
        "title": {
          "type": "string",
          "description": "The product title for this service, it is the name displayed in Google Cloud Console."
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:TypeResponse"
          },
          "description": "A list of all proto message types included in this API service. Types referenced directly or indirectly by the `apis` are automatically included. Messages which are not referenced but shall be included, such as types used by the `google.protobuf.Any` type, should be listed here by name by the configuration author. Example: types: - name: google.protobuf.Int32"
        },
        "usage": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:UsageResponse",
          "description": "Configuration controlling usage of this service."
        }
      },
      "type": "object",
      "required": [
        "apis",
        "authentication",
        "backend",
        "billing",
        "configVersion",
        "context",
        "control",
        "customError",
        "documentation",
        "endpoints",
        "enums",
        "http",
        "logging",
        "logs",
        "metrics",
        "monitoredResources",
        "monitoring",
        "name",
        "producerProjectId",
        "publishing",
        "quota",
        "serviceName",
        "sourceInfo",
        "systemParameters",
        "systemTypes",
        "title",
        "types",
        "usage"
      ],
      "inputProperties": {
        "apis": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Api"
          },
          "description": "A list of API interfaces exported by this service. Only the `name` field of the google.protobuf.Api needs to be provided by the configuration author, as the remaining fields will be derived from the IDL during the normalization process. It is an error to specify an API interface here which cannot be resolved against the associated IDL files."
        },
        "authentication": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Authentication",
          "description": "Auth configuration."
        },
        "backend": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Backend",
          "description": "API backend configuration."
        },
        "billing": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Billing",
          "description": "Billing configuration."
        },
        "configVersion": {
          "type": "integer",
          "description": "Obsolete. Do not use. This field has no semantic meaning. The service config compiler always sets this field to `3`."
        },
        "context": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Context",
          "description": "Context configuration."
        },
        "control": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Control",
          "description": "Configuration for the service control plane."
        },
        "customError": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:CustomError",
          "description": "Custom error configuration."
        },
        "documentation": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Documentation",
          "description": "Additional API documentation."
        },
        "endpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Endpoint"
          },
          "description": "Configuration for network endpoints. If this is empty, then an endpoint with the same name as the service is automatically generated to service all defined APIs."
        },
        "enums": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Enum"
          },
          "description": "A list of all enum types included in this API service. Enums referenced directly or indirectly by the `apis` are automatically included. Enums which are not referenced but shall be included should be listed here by name by the configuration author. Example: enums: - name: google.someapi.v1.SomeEnum"
        },
        "http": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Http",
          "description": "HTTP configuration."
        },
        "id": {
          "type": "string",
          "description": "A unique ID for a specific instance of this message, typically assigned by the client for tracking purpose. Must be no longer than 63 characters and only lower case letters, digits, '.', '_' and '-' are allowed. If empty, the server may choose to generate one instead."
        },
        "logging": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Logging",
          "description": "Logging configuration."
        },
        "logs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LogDescriptor"
          },
          "description": "Defines the logs used by this service."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptor"
          },
          "description": "Defines the metrics used by this service."
        },
        "monitoredResources": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoredResourceDescriptor"
          },
          "description": "Defines the monitored resources used by this service. This is required by the Service.monitoring and Service.logging configurations."
        },
        "monitoring": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Monitoring",
          "description": "Monitoring configuration."
        },
        "name": {
          "type": "string",
          "description": "The service name, which is a DNS-like logical identifier for the service, such as `calendar.googleapis.com`. The service name typically goes through DNS verification to make sure the owner of the service also owns the DNS name."
        },
        "producerProjectId": {
          "type": "string",
          "description": "The Google project that owns this service."
        },
        "publishing": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Publishing",
          "description": "Settings for [Google Cloud Client libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) generated from APIs defined as protocol buffers."
        },
        "quota": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Quota",
          "description": "Quota configuration."
        },
        "serviceName": {
          "type": "string",
          "replaceOnChanges": true
        },
        "systemParameters": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:SystemParameters",
          "description": "System parameter configuration."
        },
        "systemTypes": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Type"
          },
          "description": "A list of all proto message types included in this API service. It serves similar purpose as [google.api.Service.types], except that these types are not needed by user-defined APIs. Therefore, they will not show up in the generated discovery doc. This field should only be used to define system APIs in ESF."
        },
        "title": {
          "type": "string",
          "description": "The product title for this service, it is the name displayed in Google Cloud Console."
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Type"
          },
          "description": "A list of all proto message types included in this API service. Types referenced directly or indirectly by the `apis` are automatically included. Messages which are not referenced but shall be included, such as types used by the `google.protobuf.Any` type, should be listed here by name by the configuration author. Example: types: - name: google.protobuf.Int32"
        },
        "usage": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:Usage",
          "description": "Configuration controlling usage of this service."
        }
      },
      "requiredInputs": [
        "serviceName"
      ]
    },
    "google-native:servicemanagement/v1:Rollout": {
      "description": "Creates a new service configuration rollout. Based on rollout, the Google Service Management will roll out the service configurations to different backend services. For example, the logging configuration will be pushed to Google Cloud Logging. Please note that any previous pending and running Rollouts and associated Operations will be automatically cancelled so that the latest Rollout will not be blocked by previous Rollouts. Only the 100 most recent (in any state) and the last 10 successful (if not already part of the set of 100 most recent) rollouts are kept for each service. The rest will be deleted eventually. Operation\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of the rollout. Readonly."
        },
        "createdBy": {
          "type": "string",
          "description": "The user who created the Rollout. Readonly."
        },
        "deleteServiceStrategy": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:DeleteServiceStrategyResponse",
          "description": "The strategy associated with a rollout to delete a `ManagedService`. Readonly."
        },
        "rolloutId": {
          "type": "string",
          "description": "Optional. Unique identifier of this Rollout. Must be no longer than 63 characters and only lower case letters, digits, '.', '_' and '-' are allowed. If not specified by client, the server will generate one. The generated id will have the form of , where \"date\" is the create date in ISO 8601 format. \"revision number\" is a monotonically increasing positive number that is reset every day for each service. An example of the generated rollout_id is '2016-02-16r1'"
        },
        "serviceName": {
          "type": "string",
          "replaceOnChanges": true
        },
        "status": {
          "type": "string",
          "description": "The status of this rollout. Readonly. In case of a failed rollout, the system will automatically rollback to the current Rollout version. Readonly."
        },
        "trafficPercentStrategy": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:TrafficPercentStrategyResponse",
          "description": "Google Service Control selects service configurations based on traffic percentage."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "createdBy",
        "deleteServiceStrategy",
        "rolloutId",
        "serviceName",
        "status",
        "trafficPercentStrategy"
      ],
      "inputProperties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of the rollout. Readonly."
        },
        "createdBy": {
          "type": "string",
          "description": "The user who created the Rollout. Readonly."
        },
        "deleteServiceStrategy": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:DeleteServiceStrategy",
          "description": "The strategy associated with a rollout to delete a `ManagedService`. Readonly."
        },
        "rolloutId": {
          "type": "string",
          "description": "Optional. Unique identifier of this Rollout. Must be no longer than 63 characters and only lower case letters, digits, '.', '_' and '-' are allowed. If not specified by client, the server will generate one. The generated id will have the form of , where \"date\" is the create date in ISO 8601 format. \"revision number\" is a monotonically increasing positive number that is reset every day for each service. An example of the generated rollout_id is '2016-02-16r1'"
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the service associated with this Rollout."
        },
        "trafficPercentStrategy": {
          "$ref": "#/types/google-native:servicemanagement%2Fv1:TrafficPercentStrategy",
          "description": "Google Service Control selects service configurations based on traffic percentage."
        }
      },
      "requiredInputs": [
        "serviceName"
      ]
    },
    "google-native:servicemanagement/v1:Service": {
      "description": "Creates a new managed service. A managed service is immutable, and is subject to mandatory 30-day data retention. You cannot move a service or recreate it within 30 days after deletion. One producer project can own no more than 500 services. For security and reliability purposes, a production service should be hosted in a dedicated producer project. Operation\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "producerProjectId": {
          "type": "string",
          "description": "ID of the project that produces and owns this service."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the service. See the [overview](https://cloud.google.com/service-infrastructure/docs/overview) for naming requirements."
        }
      },
      "type": "object",
      "required": [
        "producerProjectId",
        "serviceName"
      ],
      "inputProperties": {
        "producerProjectId": {
          "type": "string",
          "description": "ID of the project that produces and owns this service."
        },
        "serviceName": {
          "type": "string",
          "description": "The name of the service. See the [overview](https://cloud.google.com/service-infrastructure/docs/overview) for naming requirements."
        }
      }
    },
    "google-native:servicemanagement/v1:ServiceConsumerIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:servicemanagement/v1:ServiceConsumerIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:servicemanagement/v1:ServiceConsumerIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "consumerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "consumerId",
        "etag",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "consumerId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "consumerId",
        "serviceId"
      ]
    },
    "google-native:servicemanagement/v1:ServiceIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:servicemanagement/v1:ServiceIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:servicemanagement/v1:ServiceIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "serviceId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "serviceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "serviceId"
      ]
    },
    "google-native:sourcerepo/v1:Repo": {
      "description": "Creates a repo in the given project with the given name. If the named repository already exists, `CreateRepo` returns `ALREADY_EXISTS`.",
      "properties": {
        "mirrorConfig": {
          "$ref": "#/types/google-native:sourcerepo%2Fv1:MirrorConfigResponse",
          "description": "How this repository mirrors a repository managed by another service. Read-only field."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the repository, of the form `projects//repos/`. The repo name may contain slashes. eg, `projects/myproject/repos/name/with/slash`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "How this repository publishes a change in the repository through Cloud Pub/Sub. Keyed by the topic names."
        },
        "size": {
          "type": "string",
          "description": "The disk usage of the repo, in bytes. Read-only field. Size is only returned by GetRepo."
        },
        "url": {
          "type": "string",
          "description": "URL to clone the repository from Google Cloud Source Repositories. Read-only field."
        }
      },
      "type": "object",
      "required": [
        "mirrorConfig",
        "name",
        "project",
        "pubsubConfigs",
        "size",
        "url"
      ],
      "inputProperties": {
        "mirrorConfig": {
          "$ref": "#/types/google-native:sourcerepo%2Fv1:MirrorConfig",
          "description": "How this repository mirrors a repository managed by another service. Read-only field."
        },
        "name": {
          "type": "string",
          "description": "Resource name of the repository, of the form `projects//repos/`. The repo name may contain slashes. eg, `projects/myproject/repos/name/with/slash`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pubsubConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "How this repository publishes a change in the repository through Cloud Pub/Sub. Keyed by the topic names."
        },
        "size": {
          "type": "string",
          "description": "The disk usage of the repo, in bytes. Read-only field. Size is only returned by GetRepo."
        },
        "url": {
          "type": "string",
          "description": "URL to clone the repository from Google Cloud Source Repositories. Read-only field."
        }
      }
    },
    "google-native:sourcerepo/v1:RepoIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:sourcerepo/v1:RepoIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:sourcerepo/v1:RepoIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sourcerepo%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sourcerepo%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repoId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "project",
        "repoId",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sourcerepo%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sourcerepo%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "repoId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "repoId"
      ]
    },
    "google-native:spanner/v1:Backup": {
      "description": "Starts creating a new Cloud Spanner Backup. The returned backup long-running operation will have a name of the format `projects//instances//backups//operations/` and can be used to track creation of the backup. The metadata field type is CreateBackupMetadata. The response field type is Backup, if successful. Cancelling the returned operation will stop the creation and delete the backup. There can be only one pending backup creation per database. Backup creation of different databases can run concurrently.",
      "properties": {
        "backupId": {
          "type": "string",
          "description": "Required. The id of the backup to be created. The `backup_id` appended to `parent` forms the full backup name of the form `projects//instances//backups/`.",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The time the CreateBackup request is received. If the request does not specify `version_time`, the `version_time` of the backup will be equivalent to the `create_time`."
        },
        "database": {
          "type": "string",
          "description": "Required for the CreateBackup operation. Name of the database from which this backup was created. This needs to be in the same instance as the backup. Values are of the form `projects//instances//databases/`."
        },
        "databaseDialect": {
          "type": "string",
          "description": "The database dialect information for the backup."
        },
        "encryptionConfigEncryptionType": {
          "type": "string",
          "description": "Required. The encryption type of the backup.",
          "replaceOnChanges": true
        },
        "encryptionConfigKmsKeyName": {
          "type": "string",
          "description": "Optional. The Cloud KMS key that will be used to protect the backup. This field should be set only when encryption_type is `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form `projects//locations//keyRings//cryptoKeys/`."
        },
        "encryptionInfo": {
          "$ref": "#/types/google-native:spanner%2Fv1:EncryptionInfoResponse",
          "description": "The encryption information for the backup."
        },
        "expireTime": {
          "type": "string",
          "description": "Required for the CreateBackup operation. The expiration time of the backup, with microseconds granularity that must be at least 6 hours and at most 366 days from the time the CreateBackup request is processed. Once the `expire_time` has passed, the backup is eligible to be automatically deleted by Cloud Spanner to free the resources used by the backup."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "maxExpireTime": {
          "type": "string",
          "description": "The max allowed expiration time of the backup, with microseconds granularity. A backup's expiration time can be configured in multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or copying an existing backup, the expiration time specified must be less than `Backup.max_expire_time`."
        },
        "name": {
          "type": "string",
          "description": "Output only for the CreateBackup operation. Required for the UpdateBackup operation. A globally unique identifier for the backup which cannot be changed. Values are of the form `projects//instances//backups/a-z*[a-z0-9]` The final segment of the name must be between 2 and 60 characters in length. The backup is stored in the location(s) specified in the instance configuration of the instance containing the backup, identified by the prefix of the backup name of the form `projects//instances/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "referencingBackups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the destination backups being created by copying this source backup. The backup names are of the form `projects//instances//backups/`. Referencing backups may exist in different instances. The existence of any referencing backup prevents the backup from being deleted. When the copy operation is done (either successfully completed or cancelled or the destination backup is deleted), the reference to the backup is removed."
        },
        "referencingDatabases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the restored databases that reference the backup. The database names are of the form `projects//instances//databases/`. Referencing databases may exist in different instances. The existence of any referencing database prevents the backup from being deleted. When a restored database from the backup enters the `READY` state, the reference to the backup is removed."
        },
        "sizeBytes": {
          "type": "string",
          "description": "Size of the backup in bytes."
        },
        "state": {
          "type": "string",
          "description": "The current state of the backup."
        },
        "versionTime": {
          "type": "string",
          "description": "The backup will contain an externally consistent copy of the database at the timestamp specified by `version_time`. If `version_time` is not specified, the system will set `version_time` to the `create_time` of the backup."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "createTime",
        "database",
        "databaseDialect",
        "encryptionConfigEncryptionType",
        "encryptionInfo",
        "expireTime",
        "instanceId",
        "maxExpireTime",
        "name",
        "project",
        "referencingBackups",
        "referencingDatabases",
        "sizeBytes",
        "state",
        "versionTime"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "description": "Required. The id of the backup to be created. The `backup_id` appended to `parent` forms the full backup name of the form `projects//instances//backups/`.",
          "replaceOnChanges": true
        },
        "database": {
          "type": "string",
          "description": "Required for the CreateBackup operation. Name of the database from which this backup was created. This needs to be in the same instance as the backup. Values are of the form `projects//instances//databases/`."
        },
        "encryptionConfigEncryptionType": {
          "type": "string",
          "description": "Required. The encryption type of the backup.",
          "replaceOnChanges": true
        },
        "encryptionConfigKmsKeyName": {
          "type": "string",
          "description": "Optional. The Cloud KMS key that will be used to protect the backup. This field should be set only when encryption_type is `CUSTOMER_MANAGED_ENCRYPTION`. Values are of the form `projects//locations//keyRings//cryptoKeys/`."
        },
        "expireTime": {
          "type": "string",
          "description": "Required for the CreateBackup operation. The expiration time of the backup, with microseconds granularity that must be at least 6 hours and at most 366 days from the time the CreateBackup request is processed. Once the `expire_time` has passed, the backup is eligible to be automatically deleted by Cloud Spanner to free the resources used by the backup."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Output only for the CreateBackup operation. Required for the UpdateBackup operation. A globally unique identifier for the backup which cannot be changed. Values are of the form `projects//instances//backups/a-z*[a-z0-9]` The final segment of the name must be between 2 and 60 characters in length. The backup is stored in the location(s) specified in the instance configuration of the instance containing the backup, identified by the prefix of the backup name of the form `projects//instances/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "versionTime": {
          "type": "string",
          "description": "The backup will contain an externally consistent copy of the database at the timestamp specified by `version_time`. If `version_time` is not specified, the system will set `version_time` to the `create_time` of the backup."
        }
      },
      "requiredInputs": [
        "backupId",
        "encryptionConfigEncryptionType",
        "instanceId"
      ]
    },
    "google-native:spanner/v1:Database": {
      "description": "Creates a new Cloud Spanner database and starts to prepare it for serving. The returned long-running operation will have a name of the format `/operations/` and can be used to track preparation of the database. The metadata field type is CreateDatabaseMetadata. The response field type is Database, if successful.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "If exists, the time at which the database creation started."
        },
        "databaseDialect": {
          "type": "string",
          "description": "The dialect of the Cloud Spanner Database."
        },
        "defaultLeader": {
          "type": "string",
          "description": "The read-write region which contains the database's leader replicas. This is the same as the value of default_leader database option set using DatabaseAdmin.CreateDatabase or DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty."
        },
        "earliestVersionTime": {
          "type": "string",
          "description": "Earliest timestamp at which older versions of the data can be read. This value is continuously updated by Cloud Spanner and becomes stale the moment it is queried. If you are using this value to recover data, make sure to account for the time from the moment when the value is queried to the moment when you initiate the recovery."
        },
        "enableDropProtection": {
          "type": "boolean",
          "description": "Whether drop protection is enabled for this database. Defaults to false, if not set. For more details, please see how to [prevent accidental database deletion](https://cloud.google.com/spanner/docs/prevent-database-deletion)."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:spanner%2Fv1:EncryptionConfigResponse",
          "description": "For databases that are using customer managed encryption, this field contains the encryption configuration for the database. For databases that are using Google default or other types of encryption, this field is empty."
        },
        "encryptionInfo": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:EncryptionInfoResponse"
          },
          "description": "For databases that are using customer managed encryption, this field contains the encryption information for the database, such as all Cloud KMS key versions that are in use. The `encryption_status' field inside of each `EncryptionInfo` is not populated. For databases that are using Google default or other types of encryption, this field is empty. This field is propagated lazily from the backend. There might be a delay from when a key version is being used and when it appears in this field."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the database. Values are of the form `projects//instances//databases/`, where `` is as specified in the `CREATE DATABASE` statement. This name can be passed to other API methods to identify the database."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "If true, the database is being updated. If false, there are no ongoing update operations for the database."
        },
        "restoreInfo": {
          "$ref": "#/types/google-native:spanner%2Fv1:RestoreInfoResponse",
          "description": "Applicable only for restored databases. Contains information about the restore source."
        },
        "state": {
          "type": "string",
          "description": "The current database state."
        },
        "versionRetentionPeriod": {
          "type": "string",
          "description": "The period in which Cloud Spanner retains all versions of data for the database. This is the same as the value of version_retention_period database option set using UpdateDatabaseDdl. Defaults to 1 hour, if not set."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "databaseDialect",
        "defaultLeader",
        "earliestVersionTime",
        "enableDropProtection",
        "encryptionConfig",
        "encryptionInfo",
        "instanceId",
        "name",
        "project",
        "reconciling",
        "restoreInfo",
        "state",
        "versionRetentionPeriod"
      ],
      "inputProperties": {
        "createStatement": {
          "type": "string",
          "description": "A `CREATE DATABASE` statement, which specifies the ID of the new database. The database ID must conform to the regular expression `a-z*[a-z0-9]` and be between 2 and 30 characters in length. If the database ID is a reserved word or if it contains a hyphen, the database ID must be enclosed in backticks (`` ` ``)."
        },
        "databaseDialect": {
          "$ref": "#/types/google-native:spanner%2Fv1:DatabaseDatabaseDialect",
          "description": "Optional. The dialect of the Cloud Spanner Database."
        },
        "encryptionConfig": {
          "$ref": "#/types/google-native:spanner%2Fv1:EncryptionConfig",
          "description": "Optional. The encryption configuration for the database. If this field is not specified, Cloud Spanner will encrypt/decrypt all data at rest using Google default encryption."
        },
        "extraStatements": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. A list of DDL statements to run inside the newly created database. Statements can create tables, indexes, etc. These statements execute atomically with the creation of the database: if there is an error in any statement, the database is not created."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protoDescriptors": {
          "type": "string",
          "description": "Optional. Proto descriptors used by CREATE/ALTER PROTO BUNDLE statements in 'extra_statements' above. Contains a protobuf-serialized [google.protobuf.FileDescriptorSet](https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/descriptor.proto). To generate it, [install](https://grpc.io/docs/protoc-installation/) and run `protoc` with --include_imports and --descriptor_set_out. For example, to generate for moon/shot/app.proto, run \"\"\" $protoc --proto_path=/app_path --proto_path=/lib_path \\ --include_imports \\ --descriptor_set_out=descriptors.data \\ moon/shot/app.proto \"\"\" For more details, see protobuffer [self description](https://developers.google.com/protocol-buffers/docs/techniques#self-description)."
        }
      },
      "requiredInputs": [
        "createStatement",
        "instanceId"
      ]
    },
    "google-native:spanner/v1:Instance": {
      "description": "Creates an instance and begins preparing it to begin serving. The returned long-running operation can be used to track the progress of preparing the new instance. The instance name is assigned by the caller. If the named instance already exists, `CreateInstance` returns `ALREADY_EXISTS`. Immediately upon completion of this request: * The instance is readable via the API, with all requested attributes but no allocated resources. Its state is `CREATING`. Until completion of the returned operation: * Cancelling the operation renders the instance immediately unreadable via the API. * The instance can be deleted. * All other attempts to modify the instance are rejected. Upon completion of the returned operation: * Billing for all successfully-allocated resources begins (some types may have lower than the requested levels). * Databases can be created in the instance. * The instance's allocated resource levels are readable via the API. * The instance's state becomes `READY`. The returned long-running operation will have a name of the format `/operations/` and can be used to track creation of the instance. The metadata field type is CreateInstanceMetadata. The response field type is Instance, if successful.",
      "properties": {
        "autoscalingConfig": {
          "$ref": "#/types/google-native:spanner%2Fv1:AutoscalingConfigResponse",
          "description": "Optional. The autoscaling configuration. Autoscaling is enabled if this field is set. When autoscaling is enabled, node_count and processing_units are treated as OUTPUT_ONLY fields and reflect the current compute capacity allocated to the instance."
        },
        "config": {
          "type": "string",
          "description": "The name of the instance's configuration. Values are of the form `projects//instanceConfigs/`. See also InstanceConfig and ListInstanceConfigs."
        },
        "createTime": {
          "type": "string",
          "description": "The time at which the instance was created."
        },
        "displayName": {
          "type": "string",
          "description": "The descriptive name for this instance as it appears in UIs. Must be unique per project and between 4 and 30 characters in length."
        },
        "endpointUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated. This field is not populated.",
          "deprecationMessage": "Deprecated. This field is not populated."
        },
        "freeInstanceMetadata": {
          "$ref": "#/types/google-native:spanner%2Fv1:FreeInstanceMetadataResponse",
          "description": "Free instance metadata. Only populated for free instances."
        },
        "instanceType": {
          "type": "string",
          "description": "The `InstanceType` of the current instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. And so you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + \"_\" + value would prove problematic if we were to allow \"_\" in a future release."
        },
        "name": {
          "type": "string",
          "description": "A unique identifier for the instance, which cannot be changed after the instance is created. Values are of the form `projects//instances/a-z*[a-z0-9]`. The final segment of the name must be between 2 and 64 characters in length."
        },
        "nodeCount": {
          "type": "integer",
          "description": "The number of nodes allocated to this instance. At most one of either node_count or processing_units should be present in the message. Users can set the node_count field to specify the target number of nodes allocated to the instance. This may be zero in API responses for instances that are not yet in state `READY`. See [the documentation](https://cloud.google.com/spanner/docs/compute-capacity) for more information about nodes and processing units."
        },
        "processingUnits": {
          "type": "integer",
          "description": "The number of processing units allocated to this instance. At most one of processing_units or node_count should be present in the message. Users can set the processing_units field to specify the target number of processing units allocated to the instance. This may be zero in API responses for instances that are not yet in state `READY`. See [the documentation](https://cloud.google.com/spanner/docs/compute-capacity) for more information about nodes and processing units."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The current instance state. For CreateInstance, the state must be either omitted or set to `CREATING`. For UpdateInstance, the state must be either omitted or set to `READY`."
        },
        "updateTime": {
          "type": "string",
          "description": "The time at which the instance was most recently updated."
        }
      },
      "type": "object",
      "required": [
        "autoscalingConfig",
        "config",
        "createTime",
        "displayName",
        "endpointUris",
        "freeInstanceMetadata",
        "instanceType",
        "labels",
        "name",
        "nodeCount",
        "processingUnits",
        "project",
        "state",
        "updateTime"
      ],
      "inputProperties": {
        "autoscalingConfig": {
          "$ref": "#/types/google-native:spanner%2Fv1:AutoscalingConfig",
          "description": "Optional. The autoscaling configuration. Autoscaling is enabled if this field is set. When autoscaling is enabled, node_count and processing_units are treated as OUTPUT_ONLY fields and reflect the current compute capacity allocated to the instance."
        },
        "config": {
          "type": "string",
          "description": "The name of the instance's configuration. Values are of the form `projects//instanceConfigs/`. See also InstanceConfig and ListInstanceConfigs."
        },
        "displayName": {
          "type": "string",
          "description": "The descriptive name for this instance as it appears in UIs. Must be unique per project and between 4 and 30 characters in length."
        },
        "endpointUris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated. This field is not populated.",
          "deprecationMessage": "Deprecated. This field is not populated."
        },
        "freeInstanceMetadata": {
          "$ref": "#/types/google-native:spanner%2Fv1:FreeInstanceMetadata",
          "description": "Free instance metadata. Only populated for free instances."
        },
        "instanceId": {
          "type": "string",
          "description": "The ID of the instance to create. Valid identifiers are of the form `a-z*[a-z0-9]` and must be between 2 and 64 characters in length."
        },
        "instanceType": {
          "$ref": "#/types/google-native:spanner%2Fv1:InstanceInstanceType",
          "description": "The `InstanceType` of the current instance."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. And so you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + \"_\" + value would prove problematic if we were to allow \"_\" in a future release."
        },
        "name": {
          "type": "string",
          "description": "A unique identifier for the instance, which cannot be changed after the instance is created. Values are of the form `projects//instances/a-z*[a-z0-9]`. The final segment of the name must be between 2 and 64 characters in length."
        },
        "nodeCount": {
          "type": "integer",
          "description": "The number of nodes allocated to this instance. At most one of either node_count or processing_units should be present in the message. Users can set the node_count field to specify the target number of nodes allocated to the instance. This may be zero in API responses for instances that are not yet in state `READY`. See [the documentation](https://cloud.google.com/spanner/docs/compute-capacity) for more information about nodes and processing units."
        },
        "processingUnits": {
          "type": "integer",
          "description": "The number of processing units allocated to this instance. At most one of processing_units or node_count should be present in the message. Users can set the processing_units field to specify the target number of processing units allocated to the instance. This may be zero in API responses for instances that are not yet in state `READY`. See [the documentation](https://cloud.google.com/spanner/docs/compute-capacity) for more information about nodes and processing units."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "config",
        "displayName",
        "instanceId"
      ]
    },
    "google-native:spanner/v1:InstanceBackupIamBinding": {
      "description": "Sets the access control policy on a database or backup resource. Replaces any existing policy. Authorization requires `spanner.databases.setIamPolicy` permission on resource. For backups, authorization requires `spanner.backups.setIamPolicy` permission on resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:spanner/v1:InstanceBackupIamMember": {
      "description": "Sets the access control policy on a database or backup resource. Replaces any existing policy. Authorization requires `spanner.databases.setIamPolicy` permission on resource. For backups, authorization requires `spanner.backups.setIamPolicy` permission on resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:spanner/v1:InstanceBackupIamPolicy": {
      "description": "Sets the access control policy on a database or backup resource. Replaces any existing policy. Authorization requires `spanner.databases.setIamPolicy` permission on resource. For backups, authorization requires `spanner.backups.setIamPolicy` permission on resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "backupId",
        "bindings",
        "etag",
        "instanceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "backupId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "backupId",
        "instanceId"
      ]
    },
    "google-native:spanner/v1:InstanceConfig": {
      "description": "Creates an instance config and begins preparing it to be used. The returned long-running operation can be used to track the progress of preparing the new instance config. The instance config name is assigned by the caller. If the named instance config already exists, `CreateInstanceConfig` returns `ALREADY_EXISTS`. Immediately after the request returns: * The instance config is readable via the API, with all requested attributes. The instance config's reconciling field is set to true. Its state is `CREATING`. While the operation is pending: * Cancelling the operation renders the instance config immediately unreadable via the API. * Except for deleting the creating resource, all other attempts to modify the instance config are rejected. Upon completion of the returned operation: * Instances can be created using the instance configuration. * The instance config's reconciling field becomes false. Its state becomes `READY`. The returned long-running operation will have a name of the format `/operations/` and can be used to track creation of the instance config. The metadata field type is CreateInstanceConfigMetadata. The response field type is InstanceConfig, if successful. Authorization requires `spanner.instanceConfigs.create` permission on the resource parent.",
      "properties": {
        "baseConfig": {
          "type": "string",
          "description": "Base configuration name, e.g. projects//instanceConfigs/nam3, based on which this configuration is created. Only set for user managed configurations. `base_config` must refer to a configuration of type GOOGLE_MANAGED in the same project as this configuration."
        },
        "configType": {
          "type": "string",
          "description": "Whether this instance config is a Google or User Managed Configuration."
        },
        "displayName": {
          "type": "string",
          "description": "The name of this instance configuration as it appears in UIs."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a instance config from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform instance config updates in order to avoid race conditions: An etag is returned in the response which contains instance configs, and systems are expected to put that etag in the request to update instance config to ensure that their change will be applied to the same version of the instance config. If no etag is provided in the call to update instance config, then the existing instance config is overwritten blindly."
        },
        "freeInstanceAvailability": {
          "type": "string",
          "description": "Describes whether free instances are available to be created in this instance config."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. Therefore, you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + \"_\" + value would prove problematic if we were to allow \"_\" in a future release."
        },
        "leaderOptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed values of the \"default_leader\" schema option for databases in instances that use this instance configuration."
        },
        "name": {
          "type": "string",
          "description": "A unique identifier for the instance configuration. Values are of the form `projects//instanceConfigs/a-z*`."
        },
        "optionalReplicas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:ReplicaInfoResponse"
          },
          "description": "The available optional replicas to choose from for user managed configurations. Populated for Google managed configurations."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "If true, the instance config is being created or updated. If false, there are no ongoing operations for the instance config."
        },
        "replicas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:ReplicaInfoResponse"
          },
          "description": "The geographic placement of nodes in this instance configuration and their replication properties."
        },
        "state": {
          "type": "string",
          "description": "The current instance config state. Applicable only for USER_MANAGED configs."
        }
      },
      "type": "object",
      "required": [
        "baseConfig",
        "configType",
        "displayName",
        "etag",
        "freeInstanceAvailability",
        "labels",
        "leaderOptions",
        "name",
        "optionalReplicas",
        "project",
        "reconciling",
        "replicas",
        "state"
      ],
      "inputProperties": {
        "baseConfig": {
          "type": "string",
          "description": "Base configuration name, e.g. projects//instanceConfigs/nam3, based on which this configuration is created. Only set for user managed configurations. `base_config` must refer to a configuration of type GOOGLE_MANAGED in the same project as this configuration."
        },
        "displayName": {
          "type": "string",
          "description": "The name of this instance configuration as it appears in UIs."
        },
        "etag": {
          "type": "string",
          "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a instance config from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform instance config updates in order to avoid race conditions: An etag is returned in the response which contains instance configs, and systems are expected to put that etag in the request to update instance config to ensure that their change will be applied to the same version of the instance config. If no etag is provided in the call to update instance config, then the existing instance config is overwritten blindly."
        },
        "instanceConfigId": {
          "type": "string",
          "description": "The ID of the instance config to create. Valid identifiers are of the form `custom-[-a-z0-9]*[a-z0-9]` and must be between 2 and 64 characters in length. The `custom-` prefix is required to avoid name conflicts with Google managed configurations."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. Therefore, you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + \"_\" + value would prove problematic if we were to allow \"_\" in a future release."
        },
        "leaderOptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed values of the \"default_leader\" schema option for databases in instances that use this instance configuration."
        },
        "name": {
          "type": "string",
          "description": "A unique identifier for the instance configuration. Values are of the form `projects//instanceConfigs/a-z*`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "replicas": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:ReplicaInfo"
          },
          "description": "The geographic placement of nodes in this instance configuration and their replication properties."
        },
        "validateOnly": {
          "type": "boolean",
          "description": "An option to validate, but not actually execute, a request, and provide the same response."
        }
      },
      "requiredInputs": [
        "instanceConfigId"
      ]
    },
    "google-native:spanner/v1:InstanceDatabaseIamBinding": {
      "description": "Sets the access control policy on a database or backup resource. Replaces any existing policy. Authorization requires `spanner.databases.setIamPolicy` permission on resource. For backups, authorization requires `spanner.backups.setIamPolicy` permission on resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:spanner/v1:InstanceDatabaseIamMember": {
      "description": "Sets the access control policy on a database or backup resource. Replaces any existing policy. Authorization requires `spanner.databases.setIamPolicy` permission on resource. For backups, authorization requires `spanner.backups.setIamPolicy` permission on resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:spanner/v1:InstanceDatabaseIamPolicy": {
      "description": "Sets the access control policy on a database or backup resource. Replaces any existing policy. Authorization requires `spanner.databases.setIamPolicy` permission on resource. For backups, authorization requires `spanner.backups.setIamPolicy` permission on resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "databaseId",
        "etag",
        "instanceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "databaseId",
        "instanceId"
      ]
    },
    "google-native:spanner/v1:InstanceIamBinding": {
      "description": "Sets the access control policy on an instance resource. Replaces any existing policy. Authorization requires `spanner.instances.setIamPolicy` on resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:spanner/v1:InstanceIamMember": {
      "description": "Sets the access control policy on an instance resource. Replaces any existing policy. Authorization requires `spanner.instances.setIamPolicy` on resource.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:spanner/v1:InstanceIamPolicy": {
      "description": "Sets the access control policy on an instance resource. Replaces any existing policy. Authorization requires `spanner.instances.setIamPolicy` on resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "etag",
        "instanceId",
        "project",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:spanner%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "instanceId"
      ]
    },
    "google-native:spanner/v1:Session": {
      "description": "Creates a new session. A session can be used to perform transactions that read and/or modify data in a Cloud Spanner database. Sessions are meant to be reused for many consecutive transactions. Sessions can only execute one transaction at a time. To execute multiple concurrent read-write/write-only transactions, create multiple sessions. Note that standalone reads and queries use a transaction internally, and count toward the one transaction limit. Active sessions use additional server resources, so it is a good idea to delete idle and unneeded sessions. Aside from explicit deletes, Cloud Spanner may delete sessions for which no operations are sent for more than an hour. If a session is deleted, requests to it return `NOT_FOUND`. Idle sessions can be kept alive by sending a trivial SQL query periodically, e.g., `\"SELECT 1\"`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "approximateLastUseTime": {
          "type": "string",
          "description": "The approximate timestamp when the session is last used. It is typically earlier than the actual last use time."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp when the session is created."
        },
        "creatorRole": {
          "type": "string",
          "description": "The database role which created this session."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels for the session. * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. * No more than 64 labels can be associated with a given session. See https://goo.gl/xmQnxf for more information on and examples of labels."
        },
        "name": {
          "type": "string",
          "description": "The name of the session. This is always system-assigned."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "approximateLastUseTime",
        "createTime",
        "creatorRole",
        "databaseId",
        "instanceId",
        "labels",
        "name",
        "project"
      ],
      "inputProperties": {
        "creatorRole": {
          "type": "string",
          "description": "The database role which created this session."
        },
        "databaseId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "instanceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels for the session. * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. * No more than 64 labels can be associated with a given session. See https://goo.gl/xmQnxf for more information on and examples of labels."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "databaseId",
        "instanceId"
      ]
    },
    "google-native:speech/v1:CustomClass": {
      "description": "Create a custom class.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Allows users to store small amounts of arbitrary data. Both the key and the value must be 63 characters or less each. At most 100 annotations. This field is not used."
        },
        "customClassId": {
          "type": "string",
          "description": "If this custom class is a resource, the custom_class_id is the resource id of the CustomClass. Case sensitive."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which this resource was requested for deletion. This field is not used."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable, human-readable name for the CustomClass. Must be 63 characters or less. This field is not used."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields. This may be sent on update, undelete, and delete requests to ensure the client has an up-to-date value before proceeding. This field is not used."
        },
        "expireTime": {
          "type": "string",
          "description": "The time at which this resource will be purged. This field is not used."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:speech%2Fv1:ClassItemResponse"
          },
          "description": "A collection of class items."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The [KMS key name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) with which the content of the ClassItem is encrypted. The expected format is `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`."
        },
        "kmsKeyVersionName": {
          "type": "string",
          "description": "The [KMS key version name](https://cloud.google.com/kms/docs/resource-hierarchy#key_versions) with which content of the ClassItem is encrypted. The expected format is `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the custom class."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Whether or not this CustomClass is in the process of being updated. This field is not used."
        },
        "state": {
          "type": "string",
          "description": "The CustomClass lifecycle state. This field is not used."
        },
        "uid": {
          "type": "string",
          "description": "System-assigned unique identifier for the CustomClass. This field is not used."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "customClassId",
        "deleteTime",
        "displayName",
        "etag",
        "expireTime",
        "items",
        "kmsKeyName",
        "kmsKeyVersionName",
        "location",
        "name",
        "project",
        "reconciling",
        "state",
        "uid"
      ],
      "inputProperties": {
        "customClassId": {
          "type": "string",
          "description": "The ID to use for the custom class, which will become the final component of the custom class' resource name. This value should restrict to letters, numbers, and hyphens, with the first character a letter, the last a letter or a number, and be 4-63 characters."
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:speech%2Fv1:ClassItem"
          },
          "description": "A collection of class items."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the custom class."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "customClassId"
      ]
    },
    "google-native:speech/v1:PhraseSet": {
      "description": "Create a set of phrase hints. Each item in the set can be a single word or a multi-word phrase. The items in the PhraseSet are favored by the recognition model when you send a call that includes the PhraseSet.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Allows users to store small amounts of arbitrary data. Both the key and the value must be 63 characters or less each. At most 100 annotations. This field is not used."
        },
        "boost": {
          "type": "number",
          "description": "Hint Boost. Positive value will increase the probability that a specific phrase will be recognized over other similar sounding phrases. The higher the boost, the higher the chance of false positive recognition as well. Negative boost values would correspond to anti-biasing. Anti-biasing is not enabled, so negative boost will simply be ignored. Though `boost` can accept a wide range of positive values, most use cases are best served with values between 0 (exclusive) and 20. We recommend using a binary search approach to finding the optimal value for your use case as well as adding phrases both with and without boost to your requests."
        },
        "deleteTime": {
          "type": "string",
          "description": "The time at which this resource was requested for deletion. This field is not used."
        },
        "displayName": {
          "type": "string",
          "description": "User-settable, human-readable name for the PhraseSet. Must be 63 characters or less. This field is not used."
        },
        "etag": {
          "type": "string",
          "description": "This checksum is computed by the server based on the value of other fields. This may be sent on update, undelete, and delete requests to ensure the client has an up-to-date value before proceeding. This field is not used."
        },
        "expireTime": {
          "type": "string",
          "description": "The time at which this resource will be purged. This field is not used."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "The [KMS key name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) with which the content of the PhraseSet is encrypted. The expected format is `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`."
        },
        "kmsKeyVersionName": {
          "type": "string",
          "description": "The [KMS key version name](https://cloud.google.com/kms/docs/resource-hierarchy#key_versions) with which content of the PhraseSet is encrypted. The expected format is `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the phrase set."
        },
        "phrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:speech%2Fv1:PhraseResponse"
          },
          "description": "A list of word and phrases."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Whether or not this PhraseSet is in the process of being updated. This field is not used."
        },
        "state": {
          "type": "string",
          "description": "The CustomClass lifecycle state. This field is not used."
        },
        "uid": {
          "type": "string",
          "description": "System-assigned unique identifier for the PhraseSet. This field is not used."
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "boost",
        "deleteTime",
        "displayName",
        "etag",
        "expireTime",
        "kmsKeyName",
        "kmsKeyVersionName",
        "location",
        "name",
        "phrases",
        "project",
        "reconciling",
        "state",
        "uid"
      ],
      "inputProperties": {
        "boost": {
          "type": "number",
          "description": "Hint Boost. Positive value will increase the probability that a specific phrase will be recognized over other similar sounding phrases. The higher the boost, the higher the chance of false positive recognition as well. Negative boost values would correspond to anti-biasing. Anti-biasing is not enabled, so negative boost will simply be ignored. Though `boost` can accept a wide range of positive values, most use cases are best served with values between 0 (exclusive) and 20. We recommend using a binary search approach to finding the optimal value for your use case as well as adding phrases both with and without boost to your requests."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the phrase set."
        },
        "phraseSetId": {
          "type": "string",
          "description": "The ID to use for the phrase set, which will become the final component of the phrase set's resource name. This value should restrict to letters, numbers, and hyphens, with the first character a letter, the last a letter or a number, and be 4-63 characters."
        },
        "phrases": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:speech%2Fv1:Phrase"
          },
          "description": "A list of word and phrases."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "phraseSetId"
      ]
    },
    "google-native:sqladmin/v1:BackupRun": {
      "description": "Creates a new backup run on demand.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupKind": {
          "type": "string",
          "description": "Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT."
        },
        "description": {
          "type": "string",
          "description": "The description of this run, only applicable to on-demand backups."
        },
        "diskEncryptionConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionConfigurationResponse",
          "description": "Encryption configuration specific to a backup."
        },
        "diskEncryptionStatus": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionStatusResponse",
          "description": "Encryption status specific to a backup."
        },
        "endTime": {
          "type": "string",
          "description": "The time the backup operation completed in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "enqueuedTime": {
          "type": "string",
          "description": "The time the run was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "error": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:OperationErrorResponse",
          "description": "Information about why the backup operation failed. This is only present if the run has the FAILED status."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#backupRun`."
        },
        "location": {
          "type": "string",
          "description": "Location of the backups."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "startTime": {
          "type": "string",
          "description": "The time the backup operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "status": {
          "type": "string",
          "description": "The status of this run."
        },
        "timeZone": {
          "type": "string",
          "description": "Backup time zone to prevent restores to an instance with a different time zone. Now relevant only for SQL Server."
        },
        "type": {
          "type": "string",
          "description": "The type of this run; can be either \"AUTOMATED\" or \"ON_DEMAND\" or \"FINAL\". This field defaults to \"ON_DEMAND\" and is ignored, when specified for insert requests."
        },
        "windowStartTime": {
          "type": "string",
          "description": "The start time of the backup window during which this the backup was attempted in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        }
      },
      "type": "object",
      "required": [
        "backupKind",
        "description",
        "diskEncryptionConfiguration",
        "diskEncryptionStatus",
        "endTime",
        "enqueuedTime",
        "error",
        "instance",
        "kind",
        "location",
        "project",
        "selfLink",
        "startTime",
        "status",
        "timeZone",
        "type",
        "windowStartTime"
      ],
      "inputProperties": {
        "backupKind": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:BackupRunBackupKind",
          "description": "Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT."
        },
        "description": {
          "type": "string",
          "description": "The description of this run, only applicable to on-demand backups."
        },
        "diskEncryptionConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionConfiguration",
          "description": "Encryption configuration specific to a backup."
        },
        "diskEncryptionStatus": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionStatus",
          "description": "Encryption status specific to a backup."
        },
        "endTime": {
          "type": "string",
          "description": "The time the backup operation completed in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "enqueuedTime": {
          "type": "string",
          "description": "The time the run was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "error": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:OperationError",
          "description": "Information about why the backup operation failed. This is only present if the run has the FAILED status."
        },
        "id": {
          "type": "string",
          "description": "The identifier for this backup run. Unique only for a specific Cloud SQL instance."
        },
        "instance": {
          "type": "string",
          "description": "Name of the database instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#backupRun`."
        },
        "location": {
          "type": "string",
          "description": "Location of the backups."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "startTime": {
          "type": "string",
          "description": "The time the backup operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "timeZone": {
          "type": "string",
          "description": "Backup time zone to prevent restores to an instance with a different time zone. Now relevant only for SQL Server."
        },
        "type": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:BackupRunType",
          "description": "The type of this run; can be either \"AUTOMATED\" or \"ON_DEMAND\" or \"FINAL\". This field defaults to \"ON_DEMAND\" and is ignored, when specified for insert requests."
        },
        "windowStartTime": {
          "type": "string",
          "description": "The start time of the backup window during which this the backup was attempted in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        }
      },
      "requiredInputs": [
        "instance"
      ]
    },
    "google-native:sqladmin/v1:Database": {
      "description": "Inserts a resource containing information about a database inside a Cloud SQL instance. **Note:** You can't modify the default character set and collation.",
      "properties": {
        "charset": {
          "type": "string",
          "description": "The Cloud SQL charset value."
        },
        "collation": {
          "type": "string",
          "description": "The Cloud SQL collation value."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#database`."
        },
        "name": {
          "type": "string",
          "description": "The name of the database in the Cloud SQL instance. This does not include the project ID or instance name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sqlserverDatabaseDetails": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlServerDatabaseDetailsResponse"
        }
      },
      "type": "object",
      "required": [
        "charset",
        "collation",
        "etag",
        "instance",
        "kind",
        "name",
        "project",
        "selfLink",
        "sqlserverDatabaseDetails"
      ],
      "inputProperties": {
        "charset": {
          "type": "string",
          "description": "The Cloud SQL charset value."
        },
        "collation": {
          "type": "string",
          "description": "The Cloud SQL collation value."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API."
        },
        "instance": {
          "type": "string",
          "description": "The name of the Cloud SQL instance. This does not include the project ID."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#database`."
        },
        "name": {
          "type": "string",
          "description": "The name of the database in the Cloud SQL instance. This does not include the project ID or instance name."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sqlserverDatabaseDetails": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlServerDatabaseDetails"
        }
      },
      "requiredInputs": [
        "instance"
      ]
    },
    "google-native:sqladmin/v1:Instance": {
      "description": "Creates a new Cloud SQL instance.",
      "properties": {
        "availableMaintenanceVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List all maintenance versions applicable on the instance"
        },
        "backendType": {
          "type": "string",
          "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type."
        },
        "connectionName": {
          "type": "string",
          "description": "Connection name of the Cloud SQL instance used in connection strings."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "currentDiskSize": {
          "type": "string",
          "description": "The current disk usage of the instance in bytes. This property has been deprecated. Use the \"cloudsql.googleapis.com/database/disk/bytes_used\" metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details."
        },
        "databaseInstalledVersion": {
          "type": "string",
          "description": "Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`."
        },
        "databaseVersion": {
          "type": "string",
          "description": "The database engine type and version. The `databaseVersion` field cannot be changed after instance creation."
        },
        "diskEncryptionConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionConfigurationResponse",
          "description": "Disk encryption configuration specific to an instance."
        },
        "diskEncryptionStatus": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionStatusResponse",
          "description": "Disk encryption status specific to an instance."
        },
        "dnsName": {
          "type": "string",
          "description": "The dns name of the instance."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead."
        },
        "failoverReplica": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceFailoverReplicaResponse",
          "description": "The name and status of the failover replica."
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance."
        },
        "instanceType": {
          "type": "string",
          "description": "The instance type."
        },
        "ipAddresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:IpMappingResponse"
          },
          "description": "The assigned IP addresses for the instance."
        },
        "ipv6Address": {
          "type": "string",
          "description": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.",
          "deprecationMessage": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#instance`."
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "The current software version on the instance."
        },
        "masterInstanceName": {
          "type": "string",
          "description": "The name of the instance which will act as primary in the replication setup."
        },
        "maxDiskSize": {
          "type": "string",
          "description": "The maximum disk size of the instance in bytes."
        },
        "name": {
          "type": "string",
          "description": "Name of the Cloud SQL instance. This does not include the project ID."
        },
        "onPremisesConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:OnPremisesConfigurationResponse",
          "description": "Configuration specific to on-premises instances."
        },
        "outOfDiskReport": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlOutOfDiskReportResponse",
          "description": "This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
        },
        "primaryDnsName": {
          "type": "string",
          "description": "DEPRECATED: please use write_endpoint instead.",
          "deprecationMessage": "Output only. DEPRECATED: please use write_endpoint instead."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscServiceAttachmentLink": {
          "type": "string",
          "description": "The link to service attachment of PSC instance."
        },
        "region": {
          "type": "string",
          "description": "The geographical region. Can be: * `us-central` (`FIRST_GEN` instances only) * `us-central1` (`SECOND_GEN` instances only) * `asia-east1` or `europe-west1`. Defaults to `us-central` or `us-central1` depending on the instance type. The region cannot be changed after instance creation."
        },
        "replicaConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:ReplicaConfigurationResponse",
          "description": "Configuration specific to failover replicas and read replicas."
        },
        "replicaNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The replicas of the instance."
        },
        "rootPassword": {
          "type": "string",
          "description": "Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "The status indicating if instance satisfiesPzs. Reserved for future use."
        },
        "scheduledMaintenance": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlScheduledMaintenanceResponse",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        },
        "secondaryGceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "serverCaCert": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SslCertResponse",
          "description": "SSL configuration."
        },
        "serviceAccountEmailAddress": {
          "type": "string",
          "description": "The service account email address assigned to the instance.\\This property is read-only."
        },
        "settings": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsResponse",
          "description": "The user settings."
        },
        "sqlNetworkArchitecture": {
          "type": "string"
        },
        "state": {
          "type": "string",
          "description": "The current serving state of the Cloud SQL instance."
        },
        "suspensionReason": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If the instance state is SUSPENDED, the reason for the suspension."
        },
        "writeEndpoint": {
          "type": "string",
          "description": "The dns name of the primary instance in a replication group."
        }
      },
      "type": "object",
      "required": [
        "availableMaintenanceVersions",
        "backendType",
        "connectionName",
        "createTime",
        "currentDiskSize",
        "databaseInstalledVersion",
        "databaseVersion",
        "diskEncryptionConfiguration",
        "diskEncryptionStatus",
        "dnsName",
        "etag",
        "failoverReplica",
        "gceZone",
        "instanceType",
        "ipAddresses",
        "ipv6Address",
        "kind",
        "maintenanceVersion",
        "masterInstanceName",
        "maxDiskSize",
        "name",
        "onPremisesConfiguration",
        "outOfDiskReport",
        "primaryDnsName",
        "project",
        "pscServiceAttachmentLink",
        "region",
        "replicaConfiguration",
        "replicaNames",
        "rootPassword",
        "satisfiesPzs",
        "scheduledMaintenance",
        "secondaryGceZone",
        "selfLink",
        "serverCaCert",
        "serviceAccountEmailAddress",
        "settings",
        "sqlNetworkArchitecture",
        "state",
        "suspensionReason",
        "writeEndpoint"
      ],
      "inputProperties": {
        "backendType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceBackendType",
          "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type."
        },
        "connectionName": {
          "type": "string",
          "description": "Connection name of the Cloud SQL instance used in connection strings."
        },
        "currentDiskSize": {
          "type": "string",
          "description": "The current disk usage of the instance in bytes. This property has been deprecated. Use the \"cloudsql.googleapis.com/database/disk/bytes_used\" metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details."
        },
        "databaseVersion": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceDatabaseVersion",
          "description": "The database engine type and version. The `databaseVersion` field cannot be changed after instance creation."
        },
        "diskEncryptionConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionConfiguration",
          "description": "Disk encryption configuration specific to an instance."
        },
        "diskEncryptionStatus": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionStatus",
          "description": "Disk encryption status specific to an instance."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead."
        },
        "failoverReplica": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceFailoverReplica",
          "description": "The name and status of the failover replica."
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance."
        },
        "instanceType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceInstanceType",
          "description": "The instance type."
        },
        "ipAddresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:IpMapping"
          },
          "description": "The assigned IP addresses for the instance."
        },
        "ipv6Address": {
          "type": "string",
          "description": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.",
          "deprecationMessage": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#instance`."
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "The current software version on the instance."
        },
        "masterInstanceName": {
          "type": "string",
          "description": "The name of the instance which will act as primary in the replication setup."
        },
        "maxDiskSize": {
          "type": "string",
          "description": "The maximum disk size of the instance in bytes."
        },
        "name": {
          "type": "string",
          "description": "Name of the Cloud SQL instance. This does not include the project ID."
        },
        "onPremisesConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:OnPremisesConfiguration",
          "description": "Configuration specific to on-premises instances."
        },
        "outOfDiskReport": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlOutOfDiskReport",
          "description": "This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
        },
        "project": {
          "type": "string",
          "description": "The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable."
        },
        "region": {
          "type": "string",
          "description": "The geographical region. Can be: * `us-central` (`FIRST_GEN` instances only) * `us-central1` (`SECOND_GEN` instances only) * `asia-east1` or `europe-west1`. Defaults to `us-central` or `us-central1` depending on the instance type. The region cannot be changed after instance creation."
        },
        "replicaConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:ReplicaConfiguration",
          "description": "Configuration specific to failover replicas and read replicas."
        },
        "replicaNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The replicas of the instance."
        },
        "rootPassword": {
          "type": "string",
          "description": "Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "The status indicating if instance satisfiesPzs. Reserved for future use."
        },
        "scheduledMaintenance": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlScheduledMaintenance",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        },
        "secondaryGceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "serverCaCert": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SslCert",
          "description": "SSL configuration."
        },
        "serviceAccountEmailAddress": {
          "type": "string",
          "description": "The service account email address assigned to the instance.\\This property is read-only."
        },
        "settings": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:Settings",
          "description": "The user settings."
        },
        "sqlNetworkArchitecture": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceSqlNetworkArchitecture"
        },
        "state": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceState",
          "description": "The current serving state of the Cloud SQL instance."
        },
        "suspensionReason": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceSuspensionReasonItem"
          },
          "description": "If the instance state is SUSPENDED, the reason for the suspension."
        }
      }
    },
    "google-native:sqladmin/v1:SslCert": {
      "description": "Creates an SSL certificate and returns it along with the private key and server certificate authority. The new certificate will not be usable until the instance is restarted.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "cert": {
          "type": "string",
          "description": "PEM representation."
        },
        "certSerialNumber": {
          "type": "string",
          "description": "Serial number, as extracted from the certificate."
        },
        "commonName": {
          "type": "string",
          "description": "User supplied name. Constrained to [a-zA-Z.-_ ]+."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`"
        },
        "expirationTime": {
          "type": "string",
          "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#sslCert`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "Sha1 Fingerprint."
        }
      },
      "type": "object",
      "required": [
        "cert",
        "certSerialNumber",
        "commonName",
        "createTime",
        "expirationTime",
        "instance",
        "kind",
        "project",
        "selfLink",
        "sha1Fingerprint"
      ],
      "inputProperties": {
        "commonName": {
          "type": "string",
          "description": "User supplied name. Must be a distinct name from the other certificates for this instance."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instance"
      ]
    },
    "google-native:sqladmin/v1:User": {
      "description": "Creates a new user in a Cloud SQL instance.",
      "properties": {
        "dualPasswordType": {
          "type": "string",
          "description": "Dual password status for the user."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API."
        },
        "host": {
          "type": "string",
          "description": "Optional. The host from which the user can connect. For `insert` operations, host defaults to an empty string. For `update` operations, host is specified as part of the request URL. The host name cannot be updated after insertion. For a MySQL instance, it's required; for a PostgreSQL or SQL Server instance, it's optional."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#user`."
        },
        "name": {
          "type": "string",
          "description": "The name of the user in the Cloud SQL instance. Can be omitted for `update` because it is already specified in the URL."
        },
        "password": {
          "type": "string",
          "description": "The password for the user."
        },
        "passwordPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:UserPasswordValidationPolicyResponse",
          "description": "User level password validation policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sqlserverUserDetails": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlServerUserDetailsResponse"
        },
        "type": {
          "type": "string",
          "description": "The user type. It determines the method to authenticate the user during login. The default is the database's built-in user type."
        }
      },
      "type": "object",
      "required": [
        "dualPasswordType",
        "etag",
        "host",
        "instance",
        "kind",
        "name",
        "password",
        "passwordPolicy",
        "project",
        "sqlserverUserDetails",
        "type"
      ],
      "inputProperties": {
        "dualPasswordType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:UserDualPasswordType",
          "description": "Dual password status for the user."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API."
        },
        "host": {
          "type": "string",
          "description": "Optional. The host from which the user can connect. For `insert` operations, host defaults to an empty string. For `update` operations, host is specified as part of the request URL. The host name cannot be updated after insertion. For a MySQL instance, it's required; for a PostgreSQL or SQL Server instance, it's optional."
        },
        "instance": {
          "type": "string",
          "description": "The name of the Cloud SQL instance. This does not include the project ID. Can be omitted for `update` because it is already specified on the URL."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#user`."
        },
        "name": {
          "type": "string",
          "description": "The name of the user in the Cloud SQL instance. Can be omitted for `update` because it is already specified in the URL."
        },
        "password": {
          "type": "string",
          "description": "The password for the user."
        },
        "passwordPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:UserPasswordValidationPolicy",
          "description": "User level password validation policy."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable. Can be omitted for `update` because it is already specified on the URL."
        },
        "sqlserverUserDetails": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:SqlServerUserDetails"
        },
        "type": {
          "$ref": "#/types/google-native:sqladmin%2Fv1:UserType",
          "description": "The user type. It determines the method to authenticate the user during login. The default is the database's built-in user type."
        }
      },
      "requiredInputs": [
        "instance"
      ]
    },
    "google-native:sqladmin/v1beta4:BackupRun": {
      "description": "Creates a new backup run on demand.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "backupKind": {
          "type": "string",
          "description": "Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT."
        },
        "description": {
          "type": "string",
          "description": "The description of this run, only applicable to on-demand backups."
        },
        "diskEncryptionConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionConfigurationResponse",
          "description": "Encryption configuration specific to a backup."
        },
        "diskEncryptionStatus": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionStatusResponse",
          "description": "Encryption status specific to a backup."
        },
        "endTime": {
          "type": "string",
          "description": "The time the backup operation completed in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "enqueuedTime": {
          "type": "string",
          "description": "The time the run was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "error": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:OperationErrorResponse",
          "description": "Information about why the backup operation failed. This is only present if the run has the FAILED status."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#backupRun`."
        },
        "location": {
          "type": "string",
          "description": "Location of the backups."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "startTime": {
          "type": "string",
          "description": "The time the backup operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "status": {
          "type": "string",
          "description": "The status of this run."
        },
        "timeZone": {
          "type": "string",
          "description": "Backup time zone to prevent restores to an instance with a different time zone. Now relevant only for SQL Server."
        },
        "type": {
          "type": "string",
          "description": "The type of this run; can be either \"AUTOMATED\" or \"ON_DEMAND\" or \"FINAL\". This field defaults to \"ON_DEMAND\" and is ignored, when specified for insert requests."
        },
        "windowStartTime": {
          "type": "string",
          "description": "The start time of the backup window during which this the backup was attempted in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        }
      },
      "type": "object",
      "required": [
        "backupKind",
        "description",
        "diskEncryptionConfiguration",
        "diskEncryptionStatus",
        "endTime",
        "enqueuedTime",
        "error",
        "instance",
        "kind",
        "location",
        "project",
        "selfLink",
        "startTime",
        "status",
        "timeZone",
        "type",
        "windowStartTime"
      ],
      "inputProperties": {
        "backupKind": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:BackupRunBackupKind",
          "description": "Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT."
        },
        "description": {
          "type": "string",
          "description": "The description of this run, only applicable to on-demand backups."
        },
        "diskEncryptionConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionConfiguration",
          "description": "Encryption configuration specific to a backup."
        },
        "diskEncryptionStatus": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionStatus",
          "description": "Encryption status specific to a backup."
        },
        "endTime": {
          "type": "string",
          "description": "The time the backup operation completed in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "enqueuedTime": {
          "type": "string",
          "description": "The time the run was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "error": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:OperationError",
          "description": "Information about why the backup operation failed. This is only present if the run has the FAILED status."
        },
        "id": {
          "type": "string",
          "description": "The identifier for this backup run. Unique only for a specific Cloud SQL instance."
        },
        "instance": {
          "type": "string",
          "description": "Name of the database instance."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#backupRun`."
        },
        "location": {
          "type": "string",
          "description": "Location of the backups."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "startTime": {
          "type": "string",
          "description": "The time the backup operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "timeZone": {
          "type": "string",
          "description": "Backup time zone to prevent restores to an instance with a different time zone. Now relevant only for SQL Server."
        },
        "type": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:BackupRunType",
          "description": "The type of this run; can be either \"AUTOMATED\" or \"ON_DEMAND\" or \"FINAL\". This field defaults to \"ON_DEMAND\" and is ignored, when specified for insert requests."
        },
        "windowStartTime": {
          "type": "string",
          "description": "The start time of the backup window during which this the backup was attempted in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        }
      },
      "requiredInputs": [
        "instance"
      ]
    },
    "google-native:sqladmin/v1beta4:Database": {
      "description": "Inserts a resource containing information about a database inside a Cloud SQL instance. **Note:** You can't modify the default character set and collation.",
      "properties": {
        "charset": {
          "type": "string",
          "description": "The Cloud SQL charset value."
        },
        "collation": {
          "type": "string",
          "description": "The Cloud SQL collation value."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#database`."
        },
        "name": {
          "type": "string",
          "description": "The name of the database in the Cloud SQL instance. This does not include the project ID or instance name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sqlserverDatabaseDetails": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlServerDatabaseDetailsResponse"
        }
      },
      "type": "object",
      "required": [
        "charset",
        "collation",
        "etag",
        "instance",
        "kind",
        "name",
        "project",
        "selfLink",
        "sqlserverDatabaseDetails"
      ],
      "inputProperties": {
        "charset": {
          "type": "string",
          "description": "The Cloud SQL charset value."
        },
        "collation": {
          "type": "string",
          "description": "The Cloud SQL collation value."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API."
        },
        "instance": {
          "type": "string",
          "description": "The name of the Cloud SQL instance. This does not include the project ID."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#database`."
        },
        "name": {
          "type": "string",
          "description": "The name of the database in the Cloud SQL instance. This does not include the project ID or instance name."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sqlserverDatabaseDetails": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlServerDatabaseDetails"
        }
      },
      "requiredInputs": [
        "instance"
      ]
    },
    "google-native:sqladmin/v1beta4:Instance": {
      "description": "Creates a new Cloud SQL instance.",
      "properties": {
        "availableMaintenanceVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List all maintenance versions applicable on the instance"
        },
        "backendType": {
          "type": "string",
          "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type."
        },
        "connectionName": {
          "type": "string",
          "description": "Connection name of the Cloud SQL instance used in connection strings."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "currentDiskSize": {
          "type": "string",
          "description": "The current disk usage of the instance in bytes. This property has been deprecated. Use the \"cloudsql.googleapis.com/database/disk/bytes_used\" metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details."
        },
        "databaseInstalledVersion": {
          "type": "string",
          "description": "Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`."
        },
        "databaseVersion": {
          "type": "string",
          "description": "The database engine type and version. The `databaseVersion` field cannot be changed after instance creation."
        },
        "diskEncryptionConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionConfigurationResponse",
          "description": "Disk encryption configuration specific to an instance."
        },
        "diskEncryptionStatus": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionStatusResponse",
          "description": "Disk encryption status specific to an instance."
        },
        "dnsName": {
          "type": "string",
          "description": "The dns name of the instance."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead."
        },
        "failoverReplica": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceFailoverReplicaResponse",
          "description": "The name and status of the failover replica."
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance."
        },
        "instanceType": {
          "type": "string",
          "description": "The instance type."
        },
        "ipAddresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:IpMappingResponse"
          },
          "description": "The assigned IP addresses for the instance."
        },
        "ipv6Address": {
          "type": "string",
          "description": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.",
          "deprecationMessage": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#instance`."
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "The current software version on the instance."
        },
        "masterInstanceName": {
          "type": "string",
          "description": "The name of the instance which will act as primary in the replication setup."
        },
        "maxDiskSize": {
          "type": "string",
          "description": "The maximum disk size of the instance in bytes."
        },
        "name": {
          "type": "string",
          "description": "Name of the Cloud SQL instance. This does not include the project ID."
        },
        "onPremisesConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:OnPremisesConfigurationResponse",
          "description": "Configuration specific to on-premises instances."
        },
        "outOfDiskReport": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlOutOfDiskReportResponse",
          "description": "This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
        },
        "primaryDnsName": {
          "type": "string",
          "description": "DEPRECATED: please use write_endpoint instead.",
          "deprecationMessage": "Output only. DEPRECATED: please use write_endpoint instead."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "pscServiceAttachmentLink": {
          "type": "string",
          "description": "The link to service attachment of PSC instance."
        },
        "region": {
          "type": "string",
          "description": "The geographical region. Can be: * `us-central` (`FIRST_GEN` instances only) * `us-central1` (`SECOND_GEN` instances only) * `asia-east1` or `europe-west1`. Defaults to `us-central` or `us-central1` depending on the instance type. The region cannot be changed after instance creation."
        },
        "replicaConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:ReplicaConfigurationResponse",
          "description": "Configuration specific to failover replicas and read replicas."
        },
        "replicaNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The replicas of the instance."
        },
        "rootPassword": {
          "type": "string",
          "description": "Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "The status indicating if instance satisfiesPzs. Reserved for future use."
        },
        "scheduledMaintenance": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlScheduledMaintenanceResponse",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        },
        "secondaryGceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "serverCaCert": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SslCertResponse",
          "description": "SSL configuration."
        },
        "serviceAccountEmailAddress": {
          "type": "string",
          "description": "The service account email address assigned to the instance. \\This property is read-only."
        },
        "settings": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsResponse",
          "description": "The user settings."
        },
        "sqlNetworkArchitecture": {
          "type": "string",
          "description": "The SQL network architecture for the instance."
        },
        "state": {
          "type": "string",
          "description": "The current serving state of the Cloud SQL instance."
        },
        "suspensionReason": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If the instance state is SUSPENDED, the reason for the suspension."
        },
        "writeEndpoint": {
          "type": "string",
          "description": "The dns name of the primary instance in a replication group."
        }
      },
      "type": "object",
      "required": [
        "availableMaintenanceVersions",
        "backendType",
        "connectionName",
        "createTime",
        "currentDiskSize",
        "databaseInstalledVersion",
        "databaseVersion",
        "diskEncryptionConfiguration",
        "diskEncryptionStatus",
        "dnsName",
        "etag",
        "failoverReplica",
        "gceZone",
        "instanceType",
        "ipAddresses",
        "ipv6Address",
        "kind",
        "maintenanceVersion",
        "masterInstanceName",
        "maxDiskSize",
        "name",
        "onPremisesConfiguration",
        "outOfDiskReport",
        "primaryDnsName",
        "project",
        "pscServiceAttachmentLink",
        "region",
        "replicaConfiguration",
        "replicaNames",
        "rootPassword",
        "satisfiesPzs",
        "scheduledMaintenance",
        "secondaryGceZone",
        "selfLink",
        "serverCaCert",
        "serviceAccountEmailAddress",
        "settings",
        "sqlNetworkArchitecture",
        "state",
        "suspensionReason",
        "writeEndpoint"
      ],
      "inputProperties": {
        "backendType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceBackendType",
          "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type."
        },
        "connectionName": {
          "type": "string",
          "description": "Connection name of the Cloud SQL instance used in connection strings."
        },
        "currentDiskSize": {
          "type": "string",
          "description": "The current disk usage of the instance in bytes. This property has been deprecated. Use the \"cloudsql.googleapis.com/database/disk/bytes_used\" metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details."
        },
        "databaseVersion": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceDatabaseVersion",
          "description": "The database engine type and version. The `databaseVersion` field cannot be changed after instance creation."
        },
        "diskEncryptionConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionConfiguration",
          "description": "Disk encryption configuration specific to an instance."
        },
        "diskEncryptionStatus": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionStatus",
          "description": "Disk encryption status specific to an instance."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead."
        },
        "failoverReplica": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceFailoverReplica",
          "description": "The name and status of the failover replica."
        },
        "gceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance."
        },
        "instanceType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceInstanceType",
          "description": "The instance type."
        },
        "ipAddresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:IpMapping"
          },
          "description": "The assigned IP addresses for the instance."
        },
        "ipv6Address": {
          "type": "string",
          "description": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.",
          "deprecationMessage": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#instance`."
        },
        "maintenanceVersion": {
          "type": "string",
          "description": "The current software version on the instance."
        },
        "masterInstanceName": {
          "type": "string",
          "description": "The name of the instance which will act as primary in the replication setup."
        },
        "maxDiskSize": {
          "type": "string",
          "description": "The maximum disk size of the instance in bytes."
        },
        "name": {
          "type": "string",
          "description": "Name of the Cloud SQL instance. This does not include the project ID."
        },
        "onPremisesConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:OnPremisesConfiguration",
          "description": "Configuration specific to on-premises instances."
        },
        "outOfDiskReport": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlOutOfDiskReport",
          "description": "This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
        },
        "project": {
          "type": "string",
          "description": "The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable."
        },
        "region": {
          "type": "string",
          "description": "The geographical region. Can be: * `us-central` (`FIRST_GEN` instances only) * `us-central1` (`SECOND_GEN` instances only) * `asia-east1` or `europe-west1`. Defaults to `us-central` or `us-central1` depending on the instance type. The region cannot be changed after instance creation."
        },
        "replicaConfiguration": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:ReplicaConfiguration",
          "description": "Configuration specific to failover replicas and read replicas."
        },
        "replicaNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The replicas of the instance."
        },
        "rootPassword": {
          "type": "string",
          "description": "Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances."
        },
        "satisfiesPzs": {
          "type": "boolean",
          "description": "The status indicating if instance satisfiesPzs. Reserved for future use."
        },
        "scheduledMaintenance": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlScheduledMaintenance",
          "description": "The start time of any upcoming scheduled maintenance for this instance."
        },
        "secondaryGceZone": {
          "type": "string",
          "description": "The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "serverCaCert": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SslCert",
          "description": "SSL configuration."
        },
        "serviceAccountEmailAddress": {
          "type": "string",
          "description": "The service account email address assigned to the instance. \\This property is read-only."
        },
        "settings": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:Settings",
          "description": "The user settings."
        },
        "sqlNetworkArchitecture": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceSqlNetworkArchitecture",
          "description": "The SQL network architecture for the instance."
        },
        "state": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceState",
          "description": "The current serving state of the Cloud SQL instance."
        },
        "suspensionReason": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceSuspensionReasonItem"
          },
          "description": "If the instance state is SUSPENDED, the reason for the suspension."
        }
      }
    },
    "google-native:sqladmin/v1beta4:SslCert": {
      "description": "Creates an SSL certificate and returns it along with the private key and server certificate authority. The new certificate will not be usable until the instance is restarted.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "cert": {
          "type": "string",
          "description": "PEM representation."
        },
        "certSerialNumber": {
          "type": "string",
          "description": "Serial number, as extracted from the certificate."
        },
        "commonName": {
          "type": "string",
          "description": "User supplied name. Constrained to [a-zA-Z.-_ ]+."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "expirationTime": {
          "type": "string",
          "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#sslCert`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this resource."
        },
        "sha1Fingerprint": {
          "type": "string",
          "description": "Sha1 Fingerprint."
        }
      },
      "type": "object",
      "required": [
        "cert",
        "certSerialNumber",
        "commonName",
        "createTime",
        "expirationTime",
        "instance",
        "kind",
        "project",
        "selfLink",
        "sha1Fingerprint"
      ],
      "inputProperties": {
        "commonName": {
          "type": "string",
          "description": "User supplied name. Must be a distinct name from the other certificates for this instance."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "instance"
      ]
    },
    "google-native:sqladmin/v1beta4:User": {
      "description": "Creates a new user in a Cloud SQL instance.",
      "properties": {
        "dualPasswordType": {
          "type": "string",
          "description": "Dual password status for the user."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API."
        },
        "host": {
          "type": "string",
          "description": "Optional. The host from which the user can connect. For `insert` operations, host defaults to an empty string. For `update` operations, host is specified as part of the request URL. The host name cannot be updated after insertion. For a MySQL instance, it's required; for a PostgreSQL or SQL Server instance, it's optional."
        },
        "instance": {
          "type": "string",
          "replaceOnChanges": true
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#user`."
        },
        "name": {
          "type": "string",
          "description": "The name of the user in the Cloud SQL instance. Can be omitted for `update` because it is already specified in the URL."
        },
        "password": {
          "type": "string",
          "description": "The password for the user."
        },
        "passwordPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:UserPasswordValidationPolicyResponse",
          "description": "User level password validation policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sqlserverUserDetails": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlServerUserDetailsResponse"
        },
        "type": {
          "type": "string",
          "description": "The user type. It determines the method to authenticate the user during login. The default is the database's built-in user type."
        }
      },
      "type": "object",
      "required": [
        "dualPasswordType",
        "etag",
        "host",
        "instance",
        "kind",
        "name",
        "password",
        "passwordPolicy",
        "project",
        "sqlserverUserDetails",
        "type"
      ],
      "inputProperties": {
        "dualPasswordType": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:UserDualPasswordType",
          "description": "Dual password status for the user."
        },
        "etag": {
          "type": "string",
          "description": "This field is deprecated and will be removed from a future version of the API.",
          "deprecationMessage": "This field is deprecated and will be removed from a future version of the API."
        },
        "host": {
          "type": "string",
          "description": "Optional. The host from which the user can connect. For `insert` operations, host defaults to an empty string. For `update` operations, host is specified as part of the request URL. The host name cannot be updated after insertion. For a MySQL instance, it's required; for a PostgreSQL or SQL Server instance, it's optional."
        },
        "instance": {
          "type": "string",
          "description": "The name of the Cloud SQL instance. This does not include the project ID. Can be omitted for *update* because it is already specified on the URL."
        },
        "kind": {
          "type": "string",
          "description": "This is always `sql#user`."
        },
        "name": {
          "type": "string",
          "description": "The name of the user in the Cloud SQL instance. Can be omitted for `update` because it is already specified in the URL."
        },
        "password": {
          "type": "string",
          "description": "The password for the user."
        },
        "passwordPolicy": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:UserPasswordValidationPolicy",
          "description": "User level password validation policy."
        },
        "project": {
          "type": "string",
          "description": "The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable. Can be omitted for *update* because it is already specified on the URL."
        },
        "sqlserverUserDetails": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlServerUserDetails"
        },
        "type": {
          "$ref": "#/types/google-native:sqladmin%2Fv1beta4:UserType",
          "description": "The user type. It determines the method to authenticate the user during login. The default is the database's built-in user type."
        }
      },
      "requiredInputs": [
        "instance"
      ]
    },
    "google-native:storage/v1:Bucket": {
      "description": "Creates a new bucket.",
      "properties": {
        "acl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketAccessControlResponse"
          },
          "description": "Access controls on the bucket."
        },
        "autoclass": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketAutoclassResponse",
          "description": "The bucket's Autoclass configuration."
        },
        "billing": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketBillingResponse",
          "description": "The bucket's billing configuration."
        },
        "cors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketCorsItemResponse"
          },
          "description": "The bucket's Cross-Origin Resource Sharing (CORS) configuration."
        },
        "customPlacementConfig": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketCustomPlacementConfigResponse",
          "description": "The bucket's custom placement configuration for Custom Dual Regions."
        },
        "defaultEventBasedHold": {
          "type": "boolean",
          "description": "The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold's release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed."
        },
        "defaultObjectAcl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlResponse"
          },
          "description": "Default access controls to apply to new objects when no ACL is provided."
        },
        "enableObjectRetention": {
          "type": "boolean",
          "description": "When set to true, object retention is enabled for this bucket."
        },
        "encryption": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketEncryptionResponse",
          "description": "Encryption configuration for a bucket."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the bucket."
        },
        "iamConfiguration": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketIamConfigurationResponse",
          "description": "The bucket's IAM configuration."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For buckets, this is always storage#bucket."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided labels, in key/value pairs."
        },
        "lifecycle": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycleResponse",
          "description": "The bucket's lifecycle configuration. See lifecycle management for more information."
        },
        "location": {
          "type": "string",
          "description": "The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer's guide for the authoritative list."
        },
        "locationType": {
          "type": "string",
          "description": "The type of the bucket location."
        },
        "logging": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketLoggingResponse",
          "description": "The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs."
        },
        "metageneration": {
          "type": "string",
          "description": "The metadata generation of this bucket."
        },
        "name": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "objectRetention": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketObjectRetentionResponse",
          "description": "The bucket's object retention config."
        },
        "owner": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketOwnerResponse",
          "description": "The owner of the bucket. This is always the project team's owner group."
        },
        "predefinedAcl": {
          "type": "string",
          "description": "Apply a predefined set of access controls to this bucket."
        },
        "predefinedDefaultObjectAcl": {
          "type": "string",
          "description": "Apply a predefined set of default object access controls to this bucket."
        },
        "project": {
          "type": "string",
          "description": "A valid API project identifier.",
          "replaceOnChanges": true
        },
        "projectNumber": {
          "type": "string",
          "description": "The project number of the project the bucket belongs to."
        },
        "projection": {
          "type": "string",
          "description": "Set of properties to return. Defaults to noAcl, unless the bucket resource specifies acl or defaultObjectAcl properties, when it defaults to full."
        },
        "retentionPolicy": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketRetentionPolicyResponse",
          "description": "The bucket's retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error."
        },
        "rpo": {
          "type": "string",
          "description": "The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket."
        },
        "satisfiesPZS": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this bucket."
        },
        "softDeletePolicy": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketSoftDeletePolicyResponse",
          "description": "The bucket's soft delete policy, which defines the period of time that soft-deleted objects will be retained, and cannot be permanently deleted."
        },
        "storageClass": {
          "type": "string",
          "description": "The bucket's default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes."
        },
        "timeCreated": {
          "type": "string",
          "description": "The creation time of the bucket in RFC 3339 format."
        },
        "updated": {
          "type": "string",
          "description": "The modification time of the bucket in RFC 3339 format."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request."
        },
        "versioning": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketVersioningResponse",
          "description": "The bucket's versioning configuration."
        },
        "website": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketWebsiteResponse",
          "description": "The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information."
        }
      },
      "type": "object",
      "required": [
        "acl",
        "autoclass",
        "billing",
        "cors",
        "customPlacementConfig",
        "defaultEventBasedHold",
        "defaultObjectAcl",
        "encryption",
        "etag",
        "iamConfiguration",
        "kind",
        "labels",
        "lifecycle",
        "location",
        "locationType",
        "logging",
        "metageneration",
        "name",
        "objectRetention",
        "owner",
        "project",
        "projectNumber",
        "retentionPolicy",
        "rpo",
        "satisfiesPZS",
        "selfLink",
        "softDeletePolicy",
        "storageClass",
        "timeCreated",
        "updated",
        "versioning",
        "website"
      ],
      "inputProperties": {
        "acl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketAccessControl"
          },
          "description": "Access controls on the bucket."
        },
        "autoclass": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketAutoclass",
          "description": "The bucket's Autoclass configuration."
        },
        "billing": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketBilling",
          "description": "The bucket's billing configuration."
        },
        "cors": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketCorsItem"
          },
          "description": "The bucket's Cross-Origin Resource Sharing (CORS) configuration."
        },
        "customPlacementConfig": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketCustomPlacementConfig",
          "description": "The bucket's custom placement configuration for Custom Dual Regions."
        },
        "defaultEventBasedHold": {
          "type": "boolean",
          "description": "The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold's release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed."
        },
        "defaultObjectAcl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControl"
          },
          "description": "Default access controls to apply to new objects when no ACL is provided."
        },
        "enableObjectRetention": {
          "type": "boolean",
          "description": "When set to true, object retention is enabled for this bucket."
        },
        "encryption": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketEncryption",
          "description": "Encryption configuration for a bucket."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the bucket."
        },
        "iamConfiguration": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketIamConfiguration",
          "description": "The bucket's IAM configuration."
        },
        "id": {
          "type": "string",
          "description": "The ID of the bucket. For buckets, the id and name properties are the same."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For buckets, this is always storage#bucket."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided labels, in key/value pairs."
        },
        "lifecycle": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycle",
          "description": "The bucket's lifecycle configuration. See lifecycle management for more information."
        },
        "location": {
          "type": "string",
          "description": "The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer's guide for the authoritative list."
        },
        "locationType": {
          "type": "string",
          "description": "The type of the bucket location."
        },
        "logging": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketLogging",
          "description": "The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs."
        },
        "metageneration": {
          "type": "string",
          "description": "The metadata generation of this bucket."
        },
        "name": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "objectRetention": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketObjectRetention",
          "description": "The bucket's object retention config."
        },
        "owner": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketOwner",
          "description": "The owner of the bucket. This is always the project team's owner group."
        },
        "predefinedAcl": {
          "type": "string",
          "description": "Apply a predefined set of access controls to this bucket."
        },
        "predefinedDefaultObjectAcl": {
          "type": "string",
          "description": "Apply a predefined set of default object access controls to this bucket."
        },
        "project": {
          "type": "string",
          "description": "A valid API project identifier.",
          "replaceOnChanges": true
        },
        "projectNumber": {
          "type": "string",
          "description": "The project number of the project the bucket belongs to."
        },
        "projection": {
          "type": "string",
          "description": "Set of properties to return. Defaults to noAcl, unless the bucket resource specifies acl or defaultObjectAcl properties, when it defaults to full."
        },
        "retentionPolicy": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketRetentionPolicy",
          "description": "The bucket's retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error."
        },
        "rpo": {
          "type": "string",
          "description": "The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket."
        },
        "satisfiesPZS": {
          "type": "boolean",
          "description": "Reserved for future use."
        },
        "selfLink": {
          "type": "string",
          "description": "The URI of this bucket."
        },
        "softDeletePolicy": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketSoftDeletePolicy",
          "description": "The bucket's soft delete policy, which defines the period of time that soft-deleted objects will be retained, and cannot be permanently deleted."
        },
        "storageClass": {
          "type": "string",
          "description": "The bucket's default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes."
        },
        "timeCreated": {
          "type": "string",
          "description": "The creation time of the bucket in RFC 3339 format."
        },
        "updated": {
          "type": "string",
          "description": "The modification time of the bucket in RFC 3339 format."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request."
        },
        "versioning": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketVersioning",
          "description": "The bucket's versioning configuration."
        },
        "website": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketWebsite",
          "description": "The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information."
        }
      }
    },
    "google-native:storage/v1:BucketAccessControl": {
      "description": "Creates a new ACL entry on the specified bucket.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketAccessControlProjectTeamResponse",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "domain",
        "email",
        "entity",
        "entityId",
        "etag",
        "kind",
        "projectTeam",
        "role",
        "selfLink"
      ],
      "inputProperties": {
        "bucket": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "id": {
          "type": "string",
          "description": "The ID of the access-control entry."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketAccessControlProjectTeam",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "requiredInputs": [
        "bucket"
      ]
    },
    "google-native:storage/v1:BucketIamBinding": {
      "description": "Updates an IAM policy for the specified bucket.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:storage/v1:BucketIamMember": {
      "description": "Updates an IAM policy for the specified bucket.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:storage/v1:BucketIamPolicy": {
      "description": "Updates an IAM policy for the specified bucket.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketIamPolicyBindingsItemResponse"
          },
          "description": "An association between a role, which comes with a set of permissions, and members who may assume that role."
        },
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1  Entity tag for the policy."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input."
        },
        "resourceId": {
          "type": "string",
          "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        },
        "version": {
          "type": "integer",
          "description": "The IAM policy format version."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "bucket",
        "etag",
        "kind",
        "resourceId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketIamPolicyBindingsItem"
          },
          "description": "An association between a role, which comes with a set of permissions, and members who may assume that role."
        },
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1  Entity tag for the policy."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input."
        },
        "resourceId": {
          "type": "string",
          "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        },
        "version": {
          "type": "integer",
          "description": "The IAM policy format version."
        }
      },
      "requiredInputs": [
        "bucket"
      ]
    },
    "google-native:storage/v1:BucketObject": {
      "description": "Stores a new object and metadata.",
      "properties": {
        "acl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlResponse"
          },
          "description": "Access controls on the object."
        },
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "cacheControl": {
          "type": "string",
          "description": "Cache-Control directive for the object data. If omitted, and the object is accessible to all anonymous users, the default will be public, max-age=3600."
        },
        "componentCount": {
          "type": "integer",
          "description": "Number of underlying components that make up this object. Components are accumulated by compose operations."
        },
        "contentDisposition": {
          "type": "string",
          "description": "Content-Disposition of the object data."
        },
        "contentEncoding": {
          "type": "string",
          "description": "If set, sets the contentEncoding property of the final object to this value. Setting this parameter is equivalent to setting the contentEncoding metadata property. This can be useful when uploading an object with uploadType=media to indicate the encoding of the content being uploaded."
        },
        "contentLanguage": {
          "type": "string",
          "description": "Content-Language of the object data."
        },
        "contentType": {
          "type": "string",
          "description": "Content-Type of the object data. If an object is stored without a Content-Type, it is served as application/octet-stream."
        },
        "crc32c": {
          "type": "string",
          "description": "CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64 in big-endian byte order. For more information about using the CRC32c checksum, see Hashes and ETags: Best Practices."
        },
        "customTime": {
          "type": "string",
          "description": "A timestamp in RFC 3339 format specified by the user for an object."
        },
        "customerEncryption": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketObjectCustomerEncryptionResponse",
          "description": "Metadata of customer-supplied encryption key, if the object is encrypted by such a key."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the object."
        },
        "eventBasedHold": {
          "type": "boolean",
          "description": "Whether an object is under event-based hold. Event-based hold is a way to retain objects until an event occurs, which is signified by the hold's release (i.e. this value is set to false). After being released (set to false), such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is the loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false."
        },
        "generation": {
          "type": "string",
          "description": "The content generation of this object. Used for object versioning."
        },
        "hardDeleteTime": {
          "type": "string",
          "description": "This is the time (in the future) when the soft-deleted object will no longer be restorable. It is equal to the soft delete time plus the current soft delete retention duration of the bucket."
        },
        "ifGenerationMatch": {
          "type": "string",
          "description": "Makes the operation conditional on whether the object's current generation matches the given value. Setting to 0 makes the operation succeed only if there are no live versions of the object."
        },
        "ifGenerationNotMatch": {
          "type": "string",
          "description": "Makes the operation conditional on whether the object's current generation does not match the given value. If no live object exists, the precondition fails. Setting to 0 makes the operation succeed only if there is a live version of the object."
        },
        "ifMetagenerationMatch": {
          "type": "string",
          "description": "Makes the operation conditional on whether the object's current metageneration matches the given value."
        },
        "ifMetagenerationNotMatch": {
          "type": "string",
          "description": "Makes the operation conditional on whether the object's current metageneration does not match the given value."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For objects, this is always storage#object."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Resource name of the Cloud KMS key, of the form projects/my-project/locations/global/keyRings/my-kr/cryptoKeys/my-key, that will be used to encrypt the object. Overrides the object metadata's kms_key_name value, if any."
        },
        "md5Hash": {
          "type": "string",
          "description": "MD5 hash of the data; encoded using base64. For more information about using the MD5 hash, see Hashes and ETags: Best Practices."
        },
        "mediaLink": {
          "type": "string",
          "description": "Media download link."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided metadata, in key/value pairs."
        },
        "metageneration": {
          "type": "string",
          "description": "The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object."
        },
        "name": {
          "type": "string",
          "description": "Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any. For information about how to URL encode object names to be path safe, see [Encoding URI Path Parts](https://cloud.google.com/storage/docs/request-endpoints#encoding)."
        },
        "owner": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketObjectOwnerResponse",
          "description": "The owner of the object. This will always be the uploader of the object."
        },
        "predefinedAcl": {
          "type": "string",
          "description": "Apply a predefined set of access controls to this object."
        },
        "projection": {
          "type": "string",
          "description": "Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl property, when it defaults to full."
        },
        "retention": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketObjectRetentionResponse",
          "description": "A collection of object level retention parameters."
        },
        "retentionExpirationTime": {
          "type": "string",
          "description": "A server-determined value that specifies the earliest time that the object's retention period expires. This value is in RFC 3339 format. Note 1: This field is not provided for objects with an active event-based hold, since retention expiration is unknown until the hold is removed. Note 2: This value can be provided even when temporary hold is set (so that the user can reason about policy without having to first unset the temporary hold)."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this object."
        },
        "size": {
          "type": "string",
          "description": "Content-Length of the data in bytes."
        },
        "softDeleteTime": {
          "type": "string",
          "description": "The time at which the object became soft-deleted in RFC 3339 format."
        },
        "storageClass": {
          "type": "string",
          "description": "Storage class of the object."
        },
        "temporaryHold": {
          "type": "boolean",
          "description": "Whether an object is under temporary hold. While this flag is set to true, the object is protected against deletion and overwrites. A common use case of this flag is regulatory investigations where objects need to be retained while the investigation is ongoing. Note that unlike event-based hold, temporary hold does not impact retention expiration time of an object."
        },
        "timeCreated": {
          "type": "string",
          "description": "The creation time of the object in RFC 3339 format."
        },
        "timeDeleted": {
          "type": "string",
          "description": "The time at which the object became noncurrent in RFC 3339 format. Will be returned if and only if this version of the object has been deleted."
        },
        "timeStorageClassUpdated": {
          "type": "string",
          "description": "The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated."
        },
        "updated": {
          "type": "string",
          "description": "The modification time of the object metadata in RFC 3339 format. Set initially to object creation time and then updated whenever any metadata of the object changes. This includes changes made by a requester, such as modifying custom metadata, as well as changes made by Cloud Storage on behalf of a requester, such as changing the storage class based on an Object Lifecycle Configuration."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "type": "object",
      "required": [
        "acl",
        "bucket",
        "cacheControl",
        "componentCount",
        "contentDisposition",
        "contentEncoding",
        "contentLanguage",
        "contentType",
        "crc32c",
        "customTime",
        "customerEncryption",
        "etag",
        "eventBasedHold",
        "generation",
        "hardDeleteTime",
        "kind",
        "kmsKeyName",
        "md5Hash",
        "mediaLink",
        "metadata",
        "metageneration",
        "name",
        "owner",
        "retention",
        "retentionExpirationTime",
        "selfLink",
        "size",
        "softDeleteTime",
        "storageClass",
        "temporaryHold",
        "timeCreated",
        "timeDeleted",
        "timeStorageClassUpdated",
        "updated"
      ],
      "inputProperties": {
        "acl": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControl"
          },
          "description": "Access controls on the object."
        },
        "bucket": {
          "type": "string",
          "description": "The name of the bucket containing this object."
        },
        "cacheControl": {
          "type": "string",
          "description": "Cache-Control directive for the object data. If omitted, and the object is accessible to all anonymous users, the default will be public, max-age=3600."
        },
        "componentCount": {
          "type": "integer",
          "description": "Number of underlying components that make up this object. Components are accumulated by compose operations."
        },
        "contentDisposition": {
          "type": "string",
          "description": "Content-Disposition of the object data."
        },
        "contentEncoding": {
          "type": "string",
          "description": "Content-Encoding of the object data."
        },
        "contentLanguage": {
          "type": "string",
          "description": "Content-Language of the object data."
        },
        "contentType": {
          "type": "string",
          "description": "Content-Type of the object data. If an object is stored without a Content-Type, it is served as application/octet-stream."
        },
        "crc32c": {
          "type": "string",
          "description": "CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64 in big-endian byte order. For more information about using the CRC32c checksum, see Hashes and ETags: Best Practices."
        },
        "customTime": {
          "type": "string",
          "description": "A timestamp in RFC 3339 format specified by the user for an object."
        },
        "customerEncryption": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketObjectCustomerEncryption",
          "description": "Metadata of customer-supplied encryption key, if the object is encrypted by such a key."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the object."
        },
        "eventBasedHold": {
          "type": "boolean",
          "description": "Whether an object is under event-based hold. Event-based hold is a way to retain objects until an event occurs, which is signified by the hold's release (i.e. this value is set to false). After being released (set to false), such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is the loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false."
        },
        "generation": {
          "type": "string",
          "description": "The content generation of this object. Used for object versioning."
        },
        "hardDeleteTime": {
          "type": "string",
          "description": "This is the time (in the future) when the soft-deleted object will no longer be restorable. It is equal to the soft delete time plus the current soft delete retention duration of the bucket."
        },
        "id": {
          "type": "string",
          "description": "The ID of the object, including the bucket name, object name, and generation number."
        },
        "ifGenerationMatch": {
          "type": "string",
          "description": "Makes the operation conditional on whether the object's current generation matches the given value. Setting to 0 makes the operation succeed only if there are no live versions of the object."
        },
        "ifGenerationNotMatch": {
          "type": "string",
          "description": "Makes the operation conditional on whether the object's current generation does not match the given value. If no live object exists, the precondition fails. Setting to 0 makes the operation succeed only if there is a live version of the object."
        },
        "ifMetagenerationMatch": {
          "type": "string",
          "description": "Makes the operation conditional on whether the object's current metageneration matches the given value."
        },
        "ifMetagenerationNotMatch": {
          "type": "string",
          "description": "Makes the operation conditional on whether the object's current metageneration does not match the given value."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For objects, this is always storage#object."
        },
        "kmsKeyName": {
          "type": "string",
          "description": "Not currently supported. Specifying the parameter causes the request to fail with status code 400 - Bad Request."
        },
        "md5Hash": {
          "type": "string",
          "description": "MD5 hash of the data; encoded using base64. For more information about using the MD5 hash, see Hashes and ETags: Best Practices."
        },
        "mediaLink": {
          "type": "string",
          "description": "Media download link."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "User-provided metadata, in key/value pairs."
        },
        "metageneration": {
          "type": "string",
          "description": "The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object."
        },
        "name": {
          "type": "string",
          "description": "The name of the object. Required if not specified by URL parameter."
        },
        "owner": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketObjectOwner",
          "description": "The owner of the object. This will always be the uploader of the object."
        },
        "predefinedAcl": {
          "type": "string",
          "description": "Apply a predefined set of access controls to this object."
        },
        "projection": {
          "type": "string",
          "description": "Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl property, when it defaults to full."
        },
        "retention": {
          "$ref": "#/types/google-native:storage%2Fv1:BucketObjectRetention",
          "description": "A collection of object level retention parameters."
        },
        "retentionExpirationTime": {
          "type": "string",
          "description": "A server-determined value that specifies the earliest time that the object's retention period expires. This value is in RFC 3339 format. Note 1: This field is not provided for objects with an active event-based hold, since retention expiration is unknown until the hold is removed. Note 2: This value can be provided even when temporary hold is set (so that the user can reason about policy without having to first unset the temporary hold)."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this object."
        },
        "size": {
          "type": "string",
          "description": "Content-Length of the data in bytes."
        },
        "softDeleteTime": {
          "type": "string",
          "description": "The time at which the object became soft-deleted in RFC 3339 format."
        },
        "source": {
          "$ref": "pulumi.json#/Asset"
        },
        "storageClass": {
          "type": "string",
          "description": "Storage class of the object."
        },
        "temporaryHold": {
          "type": "boolean",
          "description": "Whether an object is under temporary hold. While this flag is set to true, the object is protected against deletion and overwrites. A common use case of this flag is regulatory investigations where objects need to be retained while the investigation is ongoing. Note that unlike event-based hold, temporary hold does not impact retention expiration time of an object."
        },
        "timeCreated": {
          "type": "string",
          "description": "The creation time of the object in RFC 3339 format."
        },
        "timeDeleted": {
          "type": "string",
          "description": "The time at which the object became noncurrent in RFC 3339 format. Will be returned if and only if this version of the object has been deleted."
        },
        "timeStorageClassUpdated": {
          "type": "string",
          "description": "The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated."
        },
        "updated": {
          "type": "string",
          "description": "The modification time of the object metadata in RFC 3339 format. Set initially to object creation time and then updated whenever any metadata of the object changes. This includes changes made by a requester, such as modifying custom metadata, as well as changes made by Cloud Storage on behalf of a requester, such as changing the storage class based on an Object Lifecycle Configuration."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "requiredInputs": [
        "bucket"
      ]
    },
    "google-native:storage/v1:DefaultObjectAccessControl": {
      "description": "Creates a new default object ACL entry on the specified bucket.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "generation": {
          "type": "string",
          "description": "The content generation of the object, if applied to an object."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For object access control entries, this is always storage#objectAccessControl."
        },
        "object": {
          "type": "string",
          "description": "The name of the object, if applied to an object."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:DefaultObjectAccessControlProjectTeamResponse",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "domain",
        "email",
        "entity",
        "entityId",
        "etag",
        "generation",
        "kind",
        "object",
        "projectTeam",
        "role",
        "selfLink"
      ],
      "inputProperties": {
        "bucket": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "generation": {
          "type": "string",
          "description": "The content generation of the object, if applied to an object."
        },
        "id": {
          "type": "string",
          "description": "The ID of the access-control entry."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For object access control entries, this is always storage#objectAccessControl."
        },
        "object": {
          "type": "string",
          "description": "The name of the object, if applied to an object."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:DefaultObjectAccessControlProjectTeam",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "requiredInputs": [
        "bucket"
      ]
    },
    "google-native:storage/v1:HmacKey": {
      "description": "Creates a new HMAC key for the specified service account.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "accessId": {
          "type": "string",
          "description": "The ID of the HMAC Key."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the HMAC key."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For HMAC Key metadata, this is always storage#hmacKeyMetadata."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this resource."
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Email address of the service account.",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The state of the key. Can be one of ACTIVE, INACTIVE, or DELETED."
        },
        "timeCreated": {
          "type": "string",
          "description": "The creation time of the HMAC key in RFC 3339 format."
        },
        "updated": {
          "type": "string",
          "description": "The last modification time of the HMAC key metadata in RFC 3339 format."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request."
        }
      },
      "type": "object",
      "required": [
        "accessId",
        "etag",
        "kind",
        "project",
        "selfLink",
        "serviceAccountEmail",
        "state",
        "timeCreated",
        "updated"
      ],
      "inputProperties": {
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccountEmail": {
          "type": "string",
          "description": "Email address of the service account.",
          "replaceOnChanges": true
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request."
        }
      },
      "requiredInputs": [
        "serviceAccountEmail"
      ]
    },
    "google-native:storage/v1:ManagedFolder": {
      "description": "Creates a new managed folder.",
      "properties": {
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "The creation time of the managed folder in RFC 3339 format."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For managed folders, this is always storage#managedFolder."
        },
        "metageneration": {
          "type": "string",
          "description": "The version of the metadata for this managed folder. Used for preconditions and for detecting changes in metadata."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed folder. Required if not specified by URL parameter."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this managed folder."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time of the managed folder metadata in RFC 3339 format."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "createTime",
        "kind",
        "metageneration",
        "name",
        "selfLink",
        "updateTime"
      ],
      "inputProperties": {
        "bucket": {
          "type": "string",
          "description": "The name of the bucket containing this managed folder."
        },
        "createTime": {
          "type": "string",
          "description": "The creation time of the managed folder in RFC 3339 format."
        },
        "id": {
          "type": "string",
          "description": "The ID of the managed folder, including the bucket name and managed folder name."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For managed folders, this is always storage#managedFolder."
        },
        "metageneration": {
          "type": "string",
          "description": "The version of the metadata for this managed folder. Used for preconditions and for detecting changes in metadata."
        },
        "name": {
          "type": "string",
          "description": "The name of the managed folder. Required if not specified by URL parameter."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this managed folder."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update time of the managed folder metadata in RFC 3339 format."
        }
      },
      "requiredInputs": [
        "bucket"
      ]
    },
    "google-native:storage/v1:ManagedFolderIamBinding": {
      "description": "Updates an IAM policy for the specified managed folder.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:storage/v1:ManagedFolderIamMember": {
      "description": "Updates an IAM policy for the specified managed folder.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:storage/v1:ManagedFolderIamPolicy": {
      "description": "Updates an IAM policy for the specified managed folder.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:ManagedFolderIamPolicyBindingsItemResponse"
          },
          "description": "An association between a role, which comes with a set of permissions, and members who may assume that role."
        },
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1  Entity tag for the policy."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input."
        },
        "managedFolder": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceId": {
          "type": "string",
          "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        },
        "version": {
          "type": "integer",
          "description": "The IAM policy format version."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "bucket",
        "etag",
        "kind",
        "managedFolder",
        "resourceId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:ManagedFolderIamPolicyBindingsItem"
          },
          "description": "An association between a role, which comes with a set of permissions, and members who may assume that role."
        },
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1  Entity tag for the policy."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input."
        },
        "managedFolder": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceId": {
          "type": "string",
          "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        },
        "version": {
          "type": "integer",
          "description": "The IAM policy format version."
        }
      },
      "requiredInputs": [
        "bucket",
        "managedFolder"
      ]
    },
    "google-native:storage/v1:Notification": {
      "description": "Creates a notification subscription for a given bucket.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "An optional list of additional attributes to attach to each Cloud PubSub message published for this notification subscription."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for this subscription notification."
        },
        "eventTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If present, only send notifications about listed event types. If empty, sent notifications for all event types."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For notifications, this is always storage#notification."
        },
        "objectNamePrefix": {
          "type": "string",
          "description": "If present, only apply this notification configuration to object names that begin with this prefix."
        },
        "payloadFormat": {
          "type": "string",
          "description": "The desired content of the Payload."
        },
        "selfLink": {
          "type": "string",
          "description": "The canonical URL of this notification."
        },
        "topic": {
          "type": "string",
          "description": "The Cloud PubSub topic to which this subscription publishes. Formatted as: '//pubsub.googleapis.com/projects/{project-identifier}/topics/{my-topic}'"
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "customAttributes",
        "etag",
        "eventTypes",
        "kind",
        "objectNamePrefix",
        "payloadFormat",
        "selfLink",
        "topic"
      ],
      "inputProperties": {
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "customAttributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "An optional list of additional attributes to attach to each Cloud PubSub message published for this notification subscription."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for this subscription notification."
        },
        "eventTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If present, only send notifications about listed event types. If empty, sent notifications for all event types."
        },
        "id": {
          "type": "string",
          "description": "The ID of the notification."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For notifications, this is always storage#notification."
        },
        "objectNamePrefix": {
          "type": "string",
          "description": "If present, only apply this notification configuration to object names that begin with this prefix."
        },
        "payloadFormat": {
          "type": "string",
          "description": "The desired content of the Payload."
        },
        "selfLink": {
          "type": "string",
          "description": "The canonical URL of this notification."
        },
        "topic": {
          "type": "string",
          "description": "The Cloud PubSub topic to which this subscription publishes. Formatted as: '//pubsub.googleapis.com/projects/{project-identifier}/topics/{my-topic}'"
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "requiredInputs": [
        "bucket"
      ]
    },
    "google-native:storage/v1:ObjectAccessControl": {
      "description": "Creates a new ACL entry on the specified object.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "generation": {
          "type": "string",
          "description": "If present, selects a specific revision of this object (as opposed to the latest version, the default)."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For object access control entries, this is always storage#objectAccessControl."
        },
        "object": {
          "type": "string",
          "replaceOnChanges": true
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlProjectTeamResponse",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "domain",
        "email",
        "entity",
        "entityId",
        "etag",
        "generation",
        "kind",
        "object",
        "projectTeam",
        "role",
        "selfLink"
      ],
      "inputProperties": {
        "bucket": {
          "type": "string",
          "description": "The name of the bucket."
        },
        "domain": {
          "type": "string",
          "description": "The domain associated with the entity, if any."
        },
        "email": {
          "type": "string",
          "description": "The email address associated with the entity, if any."
        },
        "entity": {
          "type": "string",
          "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com."
        },
        "entityId": {
          "type": "string",
          "description": "The ID for the entity, if any."
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1 Entity tag for the access-control entry."
        },
        "generation": {
          "type": "string",
          "description": "The content generation of the object, if applied to an object."
        },
        "id": {
          "type": "string",
          "description": "The ID of the access-control entry."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For object access control entries, this is always storage#objectAccessControl."
        },
        "object": {
          "type": "string",
          "description": "The name of the object, if applied to an object."
        },
        "projectTeam": {
          "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlProjectTeam",
          "description": "The project team associated with the entity, if any."
        },
        "role": {
          "type": "string",
          "description": "The access permission for the entity."
        },
        "selfLink": {
          "type": "string",
          "description": "The link to this access-control entry."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        }
      },
      "requiredInputs": [
        "bucket",
        "object"
      ]
    },
    "google-native:storage/v1:ObjectIamBinding": {
      "description": "Updates an IAM policy for the specified object.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:storage/v1:ObjectIamMember": {
      "description": "Updates an IAM policy for the specified object.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:  \n- allUsers — A special identifier that represents anyone on the internet; with or without a Google account.  \n- allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.  \n- user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.  \n- serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .  \n- group:emailid — An email address that represents a Google group. For example, group:admins@example.com.  \n- domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.  \n- projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project  \n- projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project  \n- projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.\nThe new IAM roles are:  \n- roles/storage.admin — Full control of Google Cloud Storage resources.  \n- roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.  \n- roles/storage.objectCreator — Access to create objects in Google Cloud Storage.  \n- roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:  \n- roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.  \n- roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.  \n- roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.  \n- roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.  \n- roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:storage/v1:ObjectIamPolicy": {
      "description": "Updates an IAM policy for the specified object.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:ObjectIamPolicyBindingsItemResponse"
          },
          "description": "An association between a role, which comes with a set of permissions, and members who may assume that role."
        },
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1  Entity tag for the policy."
        },
        "generation": {
          "type": "string",
          "description": "If present, selects a specific revision of this object (as opposed to the latest version, the default)."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input."
        },
        "object": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceId": {
          "type": "string",
          "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        },
        "version": {
          "type": "integer",
          "description": "The IAM policy format version."
        }
      },
      "type": "object",
      "required": [
        "bindings",
        "bucket",
        "etag",
        "kind",
        "object",
        "resourceId",
        "version"
      ],
      "inputProperties": {
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:storage%2Fv1:ObjectIamPolicyBindingsItem"
          },
          "description": "An association between a role, which comes with a set of permissions, and members who may assume that role."
        },
        "bucket": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "HTTP 1.1  Entity tag for the policy."
        },
        "generation": {
          "type": "string",
          "description": "If present, selects a specific revision of this object (as opposed to the latest version, the default)."
        },
        "kind": {
          "type": "string",
          "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input."
        },
        "object": {
          "type": "string",
          "replaceOnChanges": true
        },
        "resourceId": {
          "type": "string",
          "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input."
        },
        "userProject": {
          "type": "string",
          "description": "The project to be billed for this request. Required for Requester Pays buckets."
        },
        "version": {
          "type": "integer",
          "description": "The IAM policy format version."
        }
      },
      "requiredInputs": [
        "bucket",
        "object"
      ]
    },
    "google-native:storagetransfer/v1:AgentPool": {
      "description": "Creates an agent pool resource.",
      "properties": {
        "agentPoolId": {
          "type": "string",
          "description": "Required. The ID of the agent pool to create. The `agent_pool_id` must meet the following requirements: * Length of 128 characters or less. * Not start with the string `goog`. * Start with a lowercase ASCII character, followed by: * Zero or more: lowercase Latin alphabet characters, numerals, hyphens (`-`), periods (`.`), underscores (`_`), or tildes (`~`). * One or more numerals or lowercase ASCII characters. As expressed by the regular expression: `^(?!goog)[a-z]([a-z0-9-._~]*[a-z0-9])?$`.",
          "replaceOnChanges": true
        },
        "bandwidthLimit": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:BandwidthLimitResponse",
          "description": "Specifies the bandwidth limit details. If this field is unspecified, the default value is set as 'No Limit'."
        },
        "displayName": {
          "type": "string",
          "description": "Specifies the client-specified AgentPool description."
        },
        "name": {
          "type": "string",
          "description": "Specifies a unique string that identifies the agent pool. Format: `projects/{project_id}/agentPools/{agent_pool_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "Specifies the state of the AgentPool."
        }
      },
      "type": "object",
      "required": [
        "agentPoolId",
        "bandwidthLimit",
        "displayName",
        "name",
        "project",
        "state"
      ],
      "inputProperties": {
        "agentPoolId": {
          "type": "string",
          "description": "Required. The ID of the agent pool to create. The `agent_pool_id` must meet the following requirements: * Length of 128 characters or less. * Not start with the string `goog`. * Start with a lowercase ASCII character, followed by: * Zero or more: lowercase Latin alphabet characters, numerals, hyphens (`-`), periods (`.`), underscores (`_`), or tildes (`~`). * One or more numerals or lowercase ASCII characters. As expressed by the regular expression: `^(?!goog)[a-z]([a-z0-9-._~]*[a-z0-9])?$`.",
          "replaceOnChanges": true
        },
        "bandwidthLimit": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:BandwidthLimit",
          "description": "Specifies the bandwidth limit details. If this field is unspecified, the default value is set as 'No Limit'."
        },
        "displayName": {
          "type": "string",
          "description": "Specifies the client-specified AgentPool description."
        },
        "name": {
          "type": "string",
          "description": "Specifies a unique string that identifies the agent pool. Format: `projects/{project_id}/agentPools/{agent_pool_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "agentPoolId"
      ]
    },
    "google-native:storagetransfer/v1:TransferJob": {
      "description": "Creates a transfer job that runs periodically.",
      "properties": {
        "creationTime": {
          "type": "string",
          "description": "The time that the transfer job was created."
        },
        "deletionTime": {
          "type": "string",
          "description": "The time that the transfer job was deleted."
        },
        "description": {
          "type": "string",
          "description": "A description provided by the user for the job. Its max length is 1024 bytes when Unicode-encoded."
        },
        "eventStream": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:EventStreamResponse",
          "description": "Specifies the event stream for the transfer job for event-driven transfers. When EventStream is specified, the Schedule fields are ignored."
        },
        "lastModificationTime": {
          "type": "string",
          "description": "The time that the transfer job was last modified."
        },
        "latestOperationName": {
          "type": "string",
          "description": "The name of the most recently started TransferOperation of this JobConfig. Present if a TransferOperation has been created for this JobConfig."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:LoggingConfigResponse",
          "description": "Logging configuration."
        },
        "name": {
          "type": "string",
          "description": "A unique name (within the transfer project) assigned when the job is created. If this field is empty in a CreateTransferJobRequest, Storage Transfer Service assigns a unique name. Otherwise, the specified name is used as the unique name for this job. If the specified name is in use by a job, the creation request fails with an ALREADY_EXISTS error. This name must start with `\"transferJobs/\"` prefix and end with a letter or a number, and should be no more than 128 characters. For transfers involving PosixFilesystem, this name must start with `transferJobs/OPI` specifically. For all other transfer types, this name must not start with `transferJobs/OPI`. Non-PosixFilesystem example: `\"transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$\"` PosixFilesystem example: `\"transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$\"` Applications must not rely on the enforcement of naming requirements involving OPI. Invalid job names fail with an INVALID_ARGUMENT error."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:NotificationConfigResponse",
          "description": "Notification configuration. This is not supported for transfers involving PosixFilesystem."
        },
        "project": {
          "type": "string",
          "description": "The ID of the Google Cloud project that owns the job."
        },
        "schedule": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:ScheduleResponse",
          "description": "Specifies schedule for the transfer job. This is an optional field. When the field is not set, the job never executes a transfer, unless you invoke RunTransferJob or update the job to have a non-empty schedule."
        },
        "status": {
          "type": "string",
          "description": "Status of the job. This value MUST be specified for `CreateTransferJobRequests`. **Note:** The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation."
        },
        "transferSpec": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferSpecResponse",
          "description": "Transfer specification."
        }
      },
      "type": "object",
      "required": [
        "creationTime",
        "deletionTime",
        "description",
        "eventStream",
        "lastModificationTime",
        "latestOperationName",
        "loggingConfig",
        "name",
        "notificationConfig",
        "project",
        "schedule",
        "status",
        "transferSpec"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A description provided by the user for the job. Its max length is 1024 bytes when Unicode-encoded."
        },
        "eventStream": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:EventStream",
          "description": "Specifies the event stream for the transfer job for event-driven transfers. When EventStream is specified, the Schedule fields are ignored."
        },
        "latestOperationName": {
          "type": "string",
          "description": "The name of the most recently started TransferOperation of this JobConfig. Present if a TransferOperation has been created for this JobConfig."
        },
        "loggingConfig": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:LoggingConfig",
          "description": "Logging configuration."
        },
        "name": {
          "type": "string",
          "description": "A unique name (within the transfer project) assigned when the job is created. If this field is empty in a CreateTransferJobRequest, Storage Transfer Service assigns a unique name. Otherwise, the specified name is used as the unique name for this job. If the specified name is in use by a job, the creation request fails with an ALREADY_EXISTS error. This name must start with `\"transferJobs/\"` prefix and end with a letter or a number, and should be no more than 128 characters. For transfers involving PosixFilesystem, this name must start with `transferJobs/OPI` specifically. For all other transfer types, this name must not start with `transferJobs/OPI`. Non-PosixFilesystem example: `\"transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$\"` PosixFilesystem example: `\"transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$\"` Applications must not rely on the enforcement of naming requirements involving OPI. Invalid job names fail with an INVALID_ARGUMENT error."
        },
        "notificationConfig": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:NotificationConfig",
          "description": "Notification configuration. This is not supported for transfers involving PosixFilesystem."
        },
        "project": {
          "type": "string",
          "description": "The ID of the Google Cloud project that owns the job."
        },
        "schedule": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:Schedule",
          "description": "Specifies schedule for the transfer job. This is an optional field. When the field is not set, the job never executes a transfer, unless you invoke RunTransferJob or update the job to have a non-empty schedule."
        },
        "status": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferJobStatus",
          "description": "Status of the job. This value MUST be specified for `CreateTransferJobRequests`. **Note:** The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation."
        },
        "transferSpec": {
          "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferSpec",
          "description": "Transfer specification."
        }
      }
    },
    "google-native:testing/v1:DeviceSession": {
      "description": "POST /v1/projects/{project_id}/deviceSessions\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "activeStartTime": {
          "type": "string",
          "description": "The timestamp that the session first became ACTIVE."
        },
        "androidDevice": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidDeviceResponse",
          "description": "The requested device"
        },
        "createTime": {
          "type": "string",
          "description": "The time that the Session was created."
        },
        "displayName": {
          "type": "string",
          "description": "The title of the DeviceSession to be presented in the UI."
        },
        "expireTime": {
          "type": "string",
          "description": "Optional. If the device is still in use at this time, any connections will be ended and the SessionState will transition from ACTIVE to FINISHED."
        },
        "inactivityTimeout": {
          "type": "string",
          "description": "The interval of time that this device must be interacted with before it transitions from ACTIVE to TIMEOUT_INACTIVITY."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the DeviceSession, e.g. \"projects/{project_id}/deviceSessions/{session_id}\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "Current state of the DeviceSession."
        },
        "stateHistories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:SessionStateEventResponse"
          },
          "description": "The historical state transitions of the session_state message including the current session state."
        },
        "ttl": {
          "type": "string",
          "description": "Optional. The amount of time that a device will be initially allocated for. This can eventually be extended with the UpdateDeviceSession RPC. Default: 30 minutes."
        }
      },
      "type": "object",
      "required": [
        "activeStartTime",
        "androidDevice",
        "createTime",
        "displayName",
        "expireTime",
        "inactivityTimeout",
        "name",
        "project",
        "state",
        "stateHistories",
        "ttl"
      ],
      "inputProperties": {
        "androidDevice": {
          "$ref": "#/types/google-native:testing%2Fv1:AndroidDevice",
          "description": "The requested device"
        },
        "expireTime": {
          "type": "string",
          "description": "Optional. If the device is still in use at this time, any connections will be ended and the SessionState will transition from ACTIVE to FINISHED."
        },
        "name": {
          "type": "string",
          "description": "Optional. Name of the DeviceSession, e.g. \"projects/{project_id}/deviceSessions/{session_id}\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "ttl": {
          "type": "string",
          "description": "Optional. The amount of time that a device will be initially allocated for. This can eventually be extended with the UpdateDeviceSession RPC. Default: 30 minutes."
        }
      },
      "requiredInputs": [
        "androidDevice"
      ]
    },
    "google-native:testing/v1:TestMatrix": {
      "description": "Creates and runs a matrix of tests according to the given specifications. Unsupported environments will be returned in the state UNSUPPORTED. A test matrix is limited to use at most 2000 devices in parallel. The returned matrix will not yet contain the executions that will be created for this matrix. Execution creation happens later on and will require a call to GetTestMatrix. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the request is malformed or if the matrix tries to use too many simultaneous devices.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "clientInfo": {
          "$ref": "#/types/google-native:testing%2Fv1:ClientInfoResponse",
          "description": "Information about the client which invoked the test."
        },
        "environmentMatrix": {
          "$ref": "#/types/google-native:testing%2Fv1:EnvironmentMatrixResponse",
          "description": "The devices the tests are being executed on."
        },
        "failFast": {
          "type": "boolean",
          "description": "If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation."
        },
        "flakyTestAttempts": {
          "type": "integer",
          "description": "The number of times a TestExecution should be re-attempted if one or more of its test cases fail for any reason. The maximum number of reruns allowed is 10. Default is 0, which implies no reruns."
        },
        "invalidMatrixDetails": {
          "type": "string",
          "description": "Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state."
        },
        "outcomeSummary": {
          "type": "string",
          "description": "Output Only. The overall outcome of the test. Only set when the test matrix state is FINISHED."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A string id used to detect duplicated requests. Ids are automatically scoped to a project, so users should ensure the ID is unique per-project. A UUID is recommended. Optional, but strongly recommended."
        },
        "resultStorage": {
          "$ref": "#/types/google-native:testing%2Fv1:ResultStorageResponse",
          "description": "Where the results for the matrix are written."
        },
        "state": {
          "type": "string",
          "description": "Indicates the current progress of the test matrix."
        },
        "testExecutions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:testing%2Fv1:TestExecutionResponse"
          },
          "description": "The list of test executions that the service creates for this matrix."
        },
        "testMatrixId": {
          "type": "string",
          "description": "Unique id set by the service."
        },
        "testSpecification": {
          "$ref": "#/types/google-native:testing%2Fv1:TestSpecificationResponse",
          "description": "How to run the test."
        },
        "timestamp": {
          "type": "string",
          "description": "The time this test matrix was initially created."
        }
      },
      "type": "object",
      "required": [
        "clientInfo",
        "environmentMatrix",
        "failFast",
        "flakyTestAttempts",
        "invalidMatrixDetails",
        "outcomeSummary",
        "project",
        "resultStorage",
        "state",
        "testExecutions",
        "testMatrixId",
        "testSpecification",
        "timestamp"
      ],
      "inputProperties": {
        "clientInfo": {
          "$ref": "#/types/google-native:testing%2Fv1:ClientInfo",
          "description": "Information about the client which invoked the test."
        },
        "environmentMatrix": {
          "$ref": "#/types/google-native:testing%2Fv1:EnvironmentMatrix",
          "description": "The devices the tests are being executed on."
        },
        "failFast": {
          "type": "boolean",
          "description": "If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation."
        },
        "flakyTestAttempts": {
          "type": "integer",
          "description": "The number of times a TestExecution should be re-attempted if one or more of its test cases fail for any reason. The maximum number of reruns allowed is 10. Default is 0, which implies no reruns."
        },
        "project": {
          "type": "string",
          "description": "The cloud project that owns the test matrix."
        },
        "requestId": {
          "type": "string",
          "description": "A string id used to detect duplicated requests. Ids are automatically scoped to a project, so users should ensure the ID is unique per-project. A UUID is recommended. Optional, but strongly recommended."
        },
        "resultStorage": {
          "$ref": "#/types/google-native:testing%2Fv1:ResultStorage",
          "description": "Where the results for the matrix are written."
        },
        "testSpecification": {
          "$ref": "#/types/google-native:testing%2Fv1:TestSpecification",
          "description": "How to run the test."
        }
      },
      "requiredInputs": [
        "environmentMatrix",
        "resultStorage",
        "testSpecification"
      ]
    },
    "google-native:toolresults/v1beta3:Execution": {
      "description": "Creates an Execution. The returned Execution will have the id set. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the containing History does not exist\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "completionTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
          "description": "The time when the Execution status transitioned to COMPLETE. This value will be set automatically when state transitions to COMPLETE. - In response: set if the execution state is COMPLETE. - In create/update request: never set"
        },
        "creationTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
          "description": "The time when the Execution was created. This value will be set automatically when CreateExecution is called. - In response: always set - In create/update request: never set"
        },
        "dimensionDefinitions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:MatrixDimensionDefinitionResponse"
          },
          "description": "The dimensions along which different steps in this execution may vary. This must remain fixed over the life of the execution. Returns INVALID_ARGUMENT if this field is set in an update request. Returns INVALID_ARGUMENT if the same name occurs in more than one dimension_definition. Returns INVALID_ARGUMENT if the size of the list is over 100. - In response: present if set by create - In create request: optional - In update request: never set"
        },
        "executionId": {
          "type": "string",
          "description": "A unique identifier within a History for this Execution. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create/update request: never set"
        },
        "historyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "outcome": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:OutcomeResponse",
          "description": "Classify the result, for example into SUCCESS or FAILURE - In response: present if set by create/update request - In create/update request: optional"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique request ID for server to detect duplicated requests. For example, a UUID. Optional, but strongly recommended."
        },
        "specification": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:SpecificationResponse",
          "description": "Lightweight information about execution request. - In response: present if set by create - In create: optional - In update: optional"
        },
        "state": {
          "type": "string",
          "description": "The initial state is IN_PROGRESS. The only legal state transitions is from IN_PROGRESS to COMPLETE. A PRECONDITION_FAILED will be returned if an invalid transition is requested. The state can only be set to COMPLETE once. A FAILED_PRECONDITION will be returned if the state is set to COMPLETE multiple times. If the state is set to COMPLETE, all the in-progress steps within the execution will be set as COMPLETE. If the outcome of the step is not set, the outcome will be set to INCONCLUSIVE. - In response always set - In create/update request: optional"
        },
        "testExecutionMatrixId": {
          "type": "string",
          "description": "TestExecution Matrix ID that the TestExecutionService uses. - In response: present if set by create - In create: optional - In update: never set"
        }
      },
      "type": "object",
      "required": [
        "completionTime",
        "creationTime",
        "dimensionDefinitions",
        "executionId",
        "historyId",
        "outcome",
        "project",
        "specification",
        "state",
        "testExecutionMatrixId"
      ],
      "inputProperties": {
        "completionTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Timestamp",
          "description": "The time when the Execution status transitioned to COMPLETE. This value will be set automatically when state transitions to COMPLETE. - In response: set if the execution state is COMPLETE. - In create/update request: never set"
        },
        "creationTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Timestamp",
          "description": "The time when the Execution was created. This value will be set automatically when CreateExecution is called. - In response: always set - In create/update request: never set"
        },
        "dimensionDefinitions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:MatrixDimensionDefinition"
          },
          "description": "The dimensions along which different steps in this execution may vary. This must remain fixed over the life of the execution. Returns INVALID_ARGUMENT if this field is set in an update request. Returns INVALID_ARGUMENT if the same name occurs in more than one dimension_definition. Returns INVALID_ARGUMENT if the size of the list is over 100. - In response: present if set by create - In create request: optional - In update request: never set"
        },
        "executionId": {
          "type": "string",
          "description": "A unique identifier within a History for this Execution. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create/update request: never set"
        },
        "historyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "outcome": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Outcome",
          "description": "Classify the result, for example into SUCCESS or FAILURE - In response: present if set by create/update request - In create/update request: optional"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique request ID for server to detect duplicated requests. For example, a UUID. Optional, but strongly recommended."
        },
        "specification": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Specification",
          "description": "Lightweight information about execution request. - In response: present if set by create - In create: optional - In update: optional"
        },
        "state": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ExecutionState",
          "description": "The initial state is IN_PROGRESS. The only legal state transitions is from IN_PROGRESS to COMPLETE. A PRECONDITION_FAILED will be returned if an invalid transition is requested. The state can only be set to COMPLETE once. A FAILED_PRECONDITION will be returned if the state is set to COMPLETE multiple times. If the state is set to COMPLETE, all the in-progress steps within the execution will be set as COMPLETE. If the outcome of the step is not set, the outcome will be set to INCONCLUSIVE. - In response always set - In create/update request: optional"
        },
        "testExecutionMatrixId": {
          "type": "string",
          "description": "TestExecution Matrix ID that the TestExecutionService uses. - In response: present if set by create - In create: optional - In update: never set"
        }
      },
      "requiredInputs": [
        "historyId"
      ]
    },
    "google-native:toolresults/v1beta3:History": {
      "description": "Creates a History. The returned History will have the id set. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the containing project does not exist\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "A short human-readable (plain text) name to display in the UI. Maximum of 100 characters. - In response: present if set during create. - In create request: optional"
        },
        "historyId": {
          "type": "string",
          "description": "A unique identifier within a project for this History. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create request: never set"
        },
        "name": {
          "type": "string",
          "description": "A name to uniquely identify a history within a project. Maximum of 200 characters. - In response always set - In create request: always set"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique request ID for server to detect duplicated requests. For example, a UUID. Optional, but strongly recommended."
        },
        "testPlatform": {
          "type": "string",
          "description": "The platform of the test history. - In response: always set. Returns the platform of the last execution if unknown."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "historyId",
        "name",
        "project",
        "testPlatform"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "A short human-readable (plain text) name to display in the UI. Maximum of 100 characters. - In response: present if set during create. - In create request: optional"
        },
        "historyId": {
          "type": "string",
          "description": "A unique identifier within a project for this History. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create request: never set"
        },
        "name": {
          "type": "string",
          "description": "A name to uniquely identify a history within a project. Maximum of 200 characters. - In response always set - In create request: always set"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique request ID for server to detect duplicated requests. For example, a UUID. Optional, but strongly recommended."
        },
        "testPlatform": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:HistoryTestPlatform",
          "description": "The platform of the test history. - In response: always set. Returns the platform of the last execution if unknown."
        }
      }
    },
    "google-native:toolresults/v1beta3:PerfSampleSeries": {
      "description": "Creates a PerfSampleSeries. May return any of the following error code(s): - ALREADY_EXISTS - PerfMetricSummary already exists for the given Step - NOT_FOUND - The containing Step does not exist\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "basicPerfSampleSeries": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:BasicPerfSampleSeriesResponse",
          "description": "Basic series represented by a line chart"
        },
        "executionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "historyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sampleSeriesId": {
          "type": "string",
          "description": "A sample series id "
        },
        "stepId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "basicPerfSampleSeries",
        "executionId",
        "historyId",
        "project",
        "sampleSeriesId",
        "stepId"
      ],
      "inputProperties": {
        "basicPerfSampleSeries": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:BasicPerfSampleSeries",
          "description": "Basic series represented by a line chart"
        },
        "executionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "historyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "stepId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "executionId",
        "historyId",
        "stepId"
      ]
    },
    "google-native:toolresults/v1beta3:Step": {
      "description": "Creates a Step. The returned Step will have the id set. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the request is malformed - FAILED_PRECONDITION - if the step is too large (more than 10Mib) - NOT_FOUND - if the containing Execution does not exist\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "completionTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
          "description": "The time when the step status was set to complete. This value will be set automatically when state transitions to COMPLETE. - In response: set if the execution state is COMPLETE. - In create/update request: never set"
        },
        "creationTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
          "description": "The time when the step was created. - In response: always set - In create/update request: never set"
        },
        "description": {
          "type": "string",
          "description": "A description of this tool For example: mvn clean package -D skipTests=true - In response: present if set by create/update request - In create/update request: optional"
        },
        "deviceUsageDuration": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
          "description": "How much the device resource is used to perform the test. This is the device usage used for billing purpose, which is different from the run_duration, for example, infrastructure failure won't be charged for device usage. PRECONDITION_FAILED will be returned if one attempts to set a device_usage on a step which already has this field set. - In response: present if previously set. - In create request: optional - In update request: optional"
        },
        "dimensionValue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:StepDimensionValueEntryResponse"
          },
          "description": "If the execution containing this step has any dimension_definition set, then this field allows the child to specify the values of the dimensions. The keys must exactly match the dimension_definition of the execution. For example, if the execution has `dimension_definition = ['attempt', 'device']` then a step must define values for those dimensions, eg. `dimension_value = ['attempt': '1', 'device': 'Nexus 6']` If a step does not participate in one dimension of the matrix, the value for that dimension should be empty string. For example, if one of the tests is executed by a runner which does not support retries, the step could have `dimension_value = ['attempt': '', 'device': 'Nexus 6']` If the step does not participate in any dimensions of the matrix, it may leave dimension_value unset. A PRECONDITION_FAILED will be returned if any of the keys do not exist in the dimension_definition of the execution. A PRECONDITION_FAILED will be returned if another step in this execution already has the same name and dimension_value, but differs on other data fields, for example, step field is different. A PRECONDITION_FAILED will be returned if dimension_value is set, and there is a dimension_definition in the execution which is not specified as one of the keys. - In response: present if set by create - In create request: optional - In update request: never set"
        },
        "executionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hasImages": {
          "type": "boolean",
          "description": "Whether any of the outputs of this step are images whose thumbnails can be fetched with ListThumbnails. - In response: always set - In create/update request: never set"
        },
        "historyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:StepLabelsEntryResponse"
          },
          "description": "Arbitrary user-supplied key/value pairs that are associated with the step. Users are responsible for managing the key namespace such that keys don't accidentally collide. An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or if the length of any of the keys or values exceeds 100 characters. - In response: always set - In create request: optional - In update request: optional; any new key/value pair will be added to the map, and any new value for an existing key will update that key's value"
        },
        "multiStep": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:MultiStepResponse",
          "description": "Details when multiple steps are run with the same configuration as a group. These details can be used identify which group this step is part of. It also identifies the groups 'primary step' which indexes all the group members. - In response: present if previously set. - In create request: optional, set iff this step was performed more than once. - In update request: optional"
        },
        "name": {
          "type": "string",
          "description": "A short human-readable name to display in the UI. Maximum of 100 characters. For example: Clean build A PRECONDITION_FAILED will be returned upon creating a new step if it shares its name and dimension_value with an existing step. If two steps represent a similar action, but have different dimension values, they should share the same name. For instance, if the same set of tests is run on two different platforms, the two steps should have the same name. - In response: always set - In create request: always set - In update request: never set"
        },
        "outcome": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:OutcomeResponse",
          "description": "Classification of the result, for example into SUCCESS or FAILURE - In response: present if set by create/update request - In create/update request: optional"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique request ID for server to detect duplicated requests. For example, a UUID. Optional, but strongly recommended."
        },
        "runDuration": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
          "description": "How long it took for this step to run. If unset, this is set to the difference between creation_time and completion_time when the step is set to the COMPLETE state. In some cases, it is appropriate to set this value separately: For instance, if a step is created, but the operation it represents is queued for a few minutes before it executes, it would be appropriate not to include the time spent queued in its run_duration. PRECONDITION_FAILED will be returned if one attempts to set a run_duration on a step which already has this field set. - In response: present if previously set; always present on COMPLETE step - In create request: optional - In update request: optional"
        },
        "state": {
          "type": "string",
          "description": "The initial state is IN_PROGRESS. The only legal state transitions are * IN_PROGRESS -> COMPLETE A PRECONDITION_FAILED will be returned if an invalid transition is requested. It is valid to create Step with a state set to COMPLETE. The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be returned if the state is set to COMPLETE multiple times. - In response: always set - In create/update request: optional"
        },
        "stepId": {
          "type": "string",
          "description": "A unique identifier within a Execution for this Step. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response: always set - In create/update request: never set"
        },
        "testExecutionStep": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestExecutionStepResponse",
          "description": "An execution of a test runner."
        },
        "toolExecutionStep": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExecutionStepResponse",
          "description": "An execution of a tool (used for steps we don't explicitly support)."
        }
      },
      "type": "object",
      "required": [
        "completionTime",
        "creationTime",
        "description",
        "deviceUsageDuration",
        "dimensionValue",
        "executionId",
        "hasImages",
        "historyId",
        "labels",
        "multiStep",
        "name",
        "outcome",
        "project",
        "runDuration",
        "state",
        "stepId",
        "testExecutionStep",
        "toolExecutionStep"
      ],
      "inputProperties": {
        "completionTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Timestamp",
          "description": "The time when the step status was set to complete. This value will be set automatically when state transitions to COMPLETE. - In response: set if the execution state is COMPLETE. - In create/update request: never set"
        },
        "creationTime": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Timestamp",
          "description": "The time when the step was created. - In response: always set - In create/update request: never set"
        },
        "description": {
          "type": "string",
          "description": "A description of this tool For example: mvn clean package -D skipTests=true - In response: present if set by create/update request - In create/update request: optional"
        },
        "deviceUsageDuration": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Duration",
          "description": "How much the device resource is used to perform the test. This is the device usage used for billing purpose, which is different from the run_duration, for example, infrastructure failure won't be charged for device usage. PRECONDITION_FAILED will be returned if one attempts to set a device_usage on a step which already has this field set. - In response: present if previously set. - In create request: optional - In update request: optional"
        },
        "dimensionValue": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:StepDimensionValueEntry"
          },
          "description": "If the execution containing this step has any dimension_definition set, then this field allows the child to specify the values of the dimensions. The keys must exactly match the dimension_definition of the execution. For example, if the execution has `dimension_definition = ['attempt', 'device']` then a step must define values for those dimensions, eg. `dimension_value = ['attempt': '1', 'device': 'Nexus 6']` If a step does not participate in one dimension of the matrix, the value for that dimension should be empty string. For example, if one of the tests is executed by a runner which does not support retries, the step could have `dimension_value = ['attempt': '', 'device': 'Nexus 6']` If the step does not participate in any dimensions of the matrix, it may leave dimension_value unset. A PRECONDITION_FAILED will be returned if any of the keys do not exist in the dimension_definition of the execution. A PRECONDITION_FAILED will be returned if another step in this execution already has the same name and dimension_value, but differs on other data fields, for example, step field is different. A PRECONDITION_FAILED will be returned if dimension_value is set, and there is a dimension_definition in the execution which is not specified as one of the keys. - In response: present if set by create - In create request: optional - In update request: never set"
        },
        "executionId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "hasImages": {
          "type": "boolean",
          "description": "Whether any of the outputs of this step are images whose thumbnails can be fetched with ListThumbnails. - In response: always set - In create/update request: never set"
        },
        "historyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:StepLabelsEntry"
          },
          "description": "Arbitrary user-supplied key/value pairs that are associated with the step. Users are responsible for managing the key namespace such that keys don't accidentally collide. An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or if the length of any of the keys or values exceeds 100 characters. - In response: always set - In create request: optional - In update request: optional; any new key/value pair will be added to the map, and any new value for an existing key will update that key's value"
        },
        "multiStep": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:MultiStep",
          "description": "Details when multiple steps are run with the same configuration as a group. These details can be used identify which group this step is part of. It also identifies the groups 'primary step' which indexes all the group members. - In response: present if previously set. - In create request: optional, set iff this step was performed more than once. - In update request: optional"
        },
        "name": {
          "type": "string",
          "description": "A short human-readable name to display in the UI. Maximum of 100 characters. For example: Clean build A PRECONDITION_FAILED will be returned upon creating a new step if it shares its name and dimension_value with an existing step. If two steps represent a similar action, but have different dimension values, they should share the same name. For instance, if the same set of tests is run on two different platforms, the two steps should have the same name. - In response: always set - In create request: always set - In update request: never set"
        },
        "outcome": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Outcome",
          "description": "Classification of the result, for example into SUCCESS or FAILURE - In response: present if set by create/update request - In create/update request: optional"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A unique request ID for server to detect duplicated requests. For example, a UUID. Optional, but strongly recommended."
        },
        "runDuration": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:Duration",
          "description": "How long it took for this step to run. If unset, this is set to the difference between creation_time and completion_time when the step is set to the COMPLETE state. In some cases, it is appropriate to set this value separately: For instance, if a step is created, but the operation it represents is queued for a few minutes before it executes, it would be appropriate not to include the time spent queued in its run_duration. PRECONDITION_FAILED will be returned if one attempts to set a run_duration on a step which already has this field set. - In response: present if previously set; always present on COMPLETE step - In create request: optional - In update request: optional"
        },
        "state": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:StepState",
          "description": "The initial state is IN_PROGRESS. The only legal state transitions are * IN_PROGRESS -> COMPLETE A PRECONDITION_FAILED will be returned if an invalid transition is requested. It is valid to create Step with a state set to COMPLETE. The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be returned if the state is set to COMPLETE multiple times. - In response: always set - In create/update request: optional"
        },
        "stepId": {
          "type": "string",
          "description": "A unique identifier within a Execution for this Step. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response: always set - In create/update request: never set"
        },
        "testExecutionStep": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestExecutionStep",
          "description": "An execution of a test runner."
        },
        "toolExecutionStep": {
          "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExecutionStep",
          "description": "An execution of a tool (used for steps we don't explicitly support)."
        }
      },
      "requiredInputs": [
        "executionId",
        "historyId"
      ]
    },
    "google-native:tpu/v1:Node": {
      "description": "Creates a node.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "The type of hardware accelerators associated with this node."
        },
        "apiVersion": {
          "type": "string",
          "description": "The API version that created this Node."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the node was created."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "type": "string",
          "description": "The health status of the TPU node."
        },
        "healthDescription": {
          "type": "string",
          "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy."
        },
        "ipAddress": {
          "type": "string",
          "description": "DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances.",
          "deprecationMessage": "Output only. DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the TPU"
        },
        "network": {
          "type": "string",
          "description": "The name of a network they wish to peer the TPU node to. It must be a preexisting Compute Engine network inside of the project on which this API has been activated. If none is provided, \"default\" will be used."
        },
        "networkEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv1:NetworkEndpointResponse"
          },
          "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that Tensorflow clients of the node reach out to the 0th entry in this map first."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name."
        },
        "port": {
          "type": "string",
          "description": "DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances.",
          "deprecationMessage": "Output only. DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv1:SchedulingConfigResponse",
          "description": "The scheduling options for this node."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account used to run the tensor flow services within the node. To share resources, including Google Cloud Storage data, with the Tensorflow job running in the Node, this account must have permissions to that data."
        },
        "state": {
          "type": "string",
          "description": "The current state for the TPU Node."
        },
        "symptoms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv1:SymptomResponse"
          },
          "description": "The Symptoms that have occurred to the TPU Node."
        },
        "tensorflowVersion": {
          "type": "string",
          "description": "The version of Tensorflow running in the Node."
        },
        "useServiceNetworking": {
          "type": "boolean",
          "description": "Whether the VPC peering for the node is set up through Service Networking API. The VPC Peering should be set up before provisioning the node. If this field is set, cidr_block field should not be specified. If the network, that you want to peer the TPU Node to, is Shared VPC networks, the node must be created with this this field enabled."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "apiVersion",
        "cidrBlock",
        "createTime",
        "description",
        "health",
        "healthDescription",
        "ipAddress",
        "labels",
        "location",
        "name",
        "network",
        "networkEndpoints",
        "port",
        "project",
        "schedulingConfig",
        "serviceAccount",
        "state",
        "symptoms",
        "tensorflowVersion",
        "useServiceNetworking"
      ],
      "inputProperties": {
        "acceleratorType": {
          "type": "string",
          "description": "The type of hardware accelerators associated with this node."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "$ref": "#/types/google-native:tpu%2Fv1:NodeHealth",
          "description": "The health status of the TPU node."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "The name of a network they wish to peer the TPU node to. It must be a preexisting Compute Engine network inside of the project on which this API has been activated. If none is provided, \"default\" will be used."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv1:SchedulingConfig",
          "description": "The scheduling options for this node."
        },
        "tensorflowVersion": {
          "type": "string",
          "description": "The version of Tensorflow running in the Node."
        },
        "useServiceNetworking": {
          "type": "boolean",
          "description": "Whether the VPC peering for the node is set up through Service Networking API. The VPC Peering should be set up before provisioning the node. If this field is set, cidr_block field should not be specified. If the network, that you want to peer the TPU Node to, is Shared VPC networks, the node must be created with this this field enabled."
        }
      },
      "requiredInputs": [
        "acceleratorType",
        "tensorflowVersion"
      ]
    },
    "google-native:tpu/v1alpha1:Node": {
      "description": "Creates a node.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "acceleratorType": {
          "type": "string",
          "description": "The type of hardware accelerators associated with this node."
        },
        "apiVersion": {
          "type": "string",
          "description": "The API version that created this Node."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the node was created."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "type": "string",
          "description": "The health status of the TPU node."
        },
        "healthDescription": {
          "type": "string",
          "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy."
        },
        "ipAddress": {
          "type": "string",
          "description": "DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances.",
          "deprecationMessage": "Output only. DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the TPU"
        },
        "network": {
          "type": "string",
          "description": "The name of a network they wish to peer the TPU node to. It must be a preexisting Compute Engine network inside of the project on which this API has been activated. If none is provided, \"default\" will be used."
        },
        "networkEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv1alpha1:NetworkEndpointResponse"
          },
          "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that Tensorflow clients of the node reach out to the 0th entry in this map first."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name."
        },
        "port": {
          "type": "string",
          "description": "DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances.",
          "deprecationMessage": "Output only. DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv1alpha1:SchedulingConfigResponse",
          "description": "The scheduling options for this node."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account used to run the tensor flow services within the node. To share resources, including Google Cloud Storage data, with the Tensorflow job running in the Node, this account must have permissions to that data."
        },
        "state": {
          "type": "string",
          "description": "The current state for the TPU Node."
        },
        "symptoms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv1alpha1:SymptomResponse"
          },
          "description": "The Symptoms that have occurred to the TPU Node."
        },
        "tensorflowVersion": {
          "type": "string",
          "description": "The version of Tensorflow running in the Node."
        },
        "useServiceNetworking": {
          "type": "boolean",
          "description": "Whether the VPC peering for the node is set up through Service Networking API. The VPC Peering should be set up before provisioning the node. If this field is set, cidr_block field should not be specified. If the network, that you want to peer the TPU Node to, is Shared VPC networks, the node must be created with this this field enabled."
        }
      },
      "type": "object",
      "required": [
        "acceleratorType",
        "apiVersion",
        "cidrBlock",
        "createTime",
        "description",
        "health",
        "healthDescription",
        "ipAddress",
        "labels",
        "location",
        "name",
        "network",
        "networkEndpoints",
        "port",
        "project",
        "schedulingConfig",
        "serviceAccount",
        "state",
        "symptoms",
        "tensorflowVersion",
        "useServiceNetworking"
      ],
      "inputProperties": {
        "acceleratorType": {
          "type": "string",
          "description": "The type of hardware accelerators associated with this node."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "$ref": "#/types/google-native:tpu%2Fv1alpha1:NodeHealth",
          "description": "The health status of the TPU node."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "network": {
          "type": "string",
          "description": "The name of a network they wish to peer the TPU node to. It must be a preexisting Compute Engine network inside of the project on which this API has been activated. If none is provided, \"default\" will be used."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv1alpha1:SchedulingConfig",
          "description": "The scheduling options for this node."
        },
        "tensorflowVersion": {
          "type": "string",
          "description": "The version of Tensorflow running in the Node."
        },
        "useServiceNetworking": {
          "type": "boolean",
          "description": "Whether the VPC peering for the node is set up through Service Networking API. The VPC Peering should be set up before provisioning the node. If this field is set, cidr_block field should not be specified. If the network, that you want to peer the TPU Node to, is Shared VPC networks, the node must be created with this this field enabled."
        }
      },
      "requiredInputs": [
        "acceleratorType",
        "tensorflowVersion"
      ]
    },
    "google-native:tpu/v2:Node": {
      "description": "Creates a node.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:AcceleratorConfigResponse",
          "description": "The AccleratorConfig for the TPU Node."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Optional. The type of hardware accelerators associated with this node."
        },
        "apiVersion": {
          "type": "string",
          "description": "The API version that created this Node."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the node was created."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2:AttachedDiskResponse"
          },
          "description": "The additional data disks for the Node."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "type": "string",
          "description": "The health status of the TPU node."
        },
        "healthDescription": {
          "type": "string",
          "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script"
        },
        "multisliceNode": {
          "type": "boolean",
          "description": "Whether the Node belongs to a Multislice group."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the TPU."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:NetworkConfigResponse",
          "description": "Network configurations for the TPU node."
        },
        "networkEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2:NetworkEndpointResponse"
          },
          "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuedResource": {
          "type": "string",
          "description": "The qualified name of the QueuedResource that requested this Node."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version running in the Node."
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:SchedulingConfigResponse",
          "description": "The scheduling options for this node."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:tpu%2Fv2:ServiceAccountResponse",
          "description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:ShieldedInstanceConfigResponse",
          "description": "Shielded Instance options."
        },
        "state": {
          "type": "string",
          "description": "The current state for the TPU Node."
        },
        "symptoms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2:SymptomResponse"
          },
          "description": "The Symptoms that have occurred to the TPU Node."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "acceleratorType",
        "apiVersion",
        "cidrBlock",
        "createTime",
        "dataDisks",
        "description",
        "health",
        "healthDescription",
        "labels",
        "location",
        "metadata",
        "multisliceNode",
        "name",
        "networkConfig",
        "networkEndpoints",
        "project",
        "queuedResource",
        "runtimeVersion",
        "schedulingConfig",
        "serviceAccount",
        "shieldedInstanceConfig",
        "state",
        "symptoms",
        "tags"
      ],
      "inputProperties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:AcceleratorConfig",
          "description": "The AccleratorConfig for the TPU Node."
        },
        "acceleratorType": {
          "type": "string",
          "description": "Optional. The type of hardware accelerators associated with this node."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2:AttachedDisk"
          },
          "description": "The additional data disks for the Node."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "$ref": "#/types/google-native:tpu%2Fv2:NodeHealth",
          "description": "The health status of the TPU node."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script"
        },
        "networkConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:NetworkConfig",
          "description": "Network configurations for the TPU node."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version running in the Node."
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:SchedulingConfig",
          "description": "The scheduling options for this node."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:tpu%2Fv2:ServiceAccount",
          "description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2:ShieldedInstanceConfig",
          "description": "Shielded Instance options."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls."
        }
      },
      "requiredInputs": [
        "runtimeVersion"
      ]
    },
    "google-native:tpu/v2alpha1:Node": {
      "description": "Creates a node.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:AcceleratorConfigResponse",
          "description": "The AccleratorConfig for the TPU Node."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The type of hardware accelerators associated with this node."
        },
        "apiVersion": {
          "type": "string",
          "description": "The API version that created this Node."
        },
        "autocheckpointEnabled": {
          "type": "boolean",
          "description": "Optional. Whether Autocheckpoint is enabled."
        },
        "bootDiskConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:BootDiskConfigResponse",
          "description": "Optional. Boot disk configuration."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the node was created."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:AttachedDiskResponse"
          },
          "description": "The additional data disks for the Node."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "type": "string",
          "description": "The health status of the TPU node."
        },
        "healthDescription": {
          "type": "string",
          "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script"
        },
        "multisliceNode": {
          "type": "boolean",
          "description": "Whether the Node belongs to a Multislice group."
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the TPU."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:NetworkConfigResponse",
          "description": "Network configurations for the TPU node."
        },
        "networkEndpoints": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:NetworkEndpointResponse"
          },
          "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuedResource": {
          "type": "string",
          "description": "The qualified name of the QueuedResource that requested this Node."
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version running in the Node."
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:SchedulingConfigResponse",
          "description": "The scheduling options for this node."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ServiceAccountResponse",
          "description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ShieldedInstanceConfigResponse",
          "description": "Shielded Instance options."
        },
        "state": {
          "type": "string",
          "description": "The current state for the TPU Node."
        },
        "symptoms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:SymptomResponse"
          },
          "description": "The Symptoms that have occurred to the TPU Node."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls."
        }
      },
      "type": "object",
      "required": [
        "acceleratorConfig",
        "acceleratorType",
        "apiVersion",
        "autocheckpointEnabled",
        "bootDiskConfig",
        "cidrBlock",
        "createTime",
        "dataDisks",
        "description",
        "health",
        "healthDescription",
        "labels",
        "location",
        "metadata",
        "multisliceNode",
        "name",
        "networkConfig",
        "networkEndpoints",
        "project",
        "queuedResource",
        "runtimeVersion",
        "schedulingConfig",
        "serviceAccount",
        "shieldedInstanceConfig",
        "state",
        "symptoms",
        "tags"
      ],
      "inputProperties": {
        "acceleratorConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:AcceleratorConfig",
          "description": "The AccleratorConfig for the TPU Node."
        },
        "acceleratorType": {
          "type": "string",
          "description": "The type of hardware accelerators associated with this node."
        },
        "autocheckpointEnabled": {
          "type": "boolean",
          "description": "Optional. Whether Autocheckpoint is enabled."
        },
        "bootDiskConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:BootDiskConfig",
          "description": "Optional. Boot disk configuration."
        },
        "cidrBlock": {
          "type": "string",
          "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block."
        },
        "dataDisks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:AttachedDisk"
          },
          "description": "The additional data disks for the Node."
        },
        "description": {
          "type": "string",
          "description": "The user-supplied description of the TPU. Maximum of 512 characters."
        },
        "health": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:NodeHealth",
          "description": "The health status of the TPU node."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels to represent user-provided metadata."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script"
        },
        "networkConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:NetworkConfig",
          "description": "Network configurations for the TPU node."
        },
        "nodeId": {
          "type": "string",
          "description": "The unqualified resource name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The runtime version running in the Node."
        },
        "schedulingConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:SchedulingConfig",
          "description": "The scheduling options for this node."
        },
        "serviceAccount": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ServiceAccount",
          "description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
        },
        "shieldedInstanceConfig": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:ShieldedInstanceConfig",
          "description": "Shielded Instance options."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls."
        }
      },
      "requiredInputs": [
        "runtimeVersion"
      ]
    },
    "google-native:tpu/v2alpha1:QueuedResource": {
      "description": "Creates a QueuedResource TPU instance.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "bestEffort": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:BestEffortResponse",
          "description": "The BestEffort tier."
        },
        "createTime": {
          "type": "string",
          "description": "The time when the QueuedResource was created."
        },
        "guaranteed": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:GuaranteedResponse",
          "description": "The Guaranteed tier."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Immutable. The name of the QueuedResource."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuedResourceId": {
          "type": "string",
          "description": "The unqualified resource name. Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format."
        },
        "queueingPolicy": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:QueueingPolicyResponse",
          "description": "The queueing policy of the QueuedRequest."
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "reservationName": {
          "type": "string",
          "description": "Name of the reservation in which the resource should be provisioned. Format: projects/{project}/locations/{zone}/reservations/{reservation}"
        },
        "spot": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:SpotResponse",
          "description": "Optional. The Spot tier."
        },
        "state": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:QueuedResourceStateResponse",
          "description": "State of the QueuedResource request."
        },
        "tpu": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:TpuResponse",
          "description": "Defines a TPU resource."
        }
      },
      "type": "object",
      "required": [
        "bestEffort",
        "createTime",
        "guaranteed",
        "location",
        "name",
        "project",
        "queueingPolicy",
        "reservationName",
        "spot",
        "state",
        "tpu"
      ],
      "inputProperties": {
        "bestEffort": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:BestEffort",
          "description": "The BestEffort tier."
        },
        "guaranteed": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:Guaranteed",
          "description": "The Guaranteed tier."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "queuedResourceId": {
          "type": "string",
          "description": "The unqualified resource name. Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format."
        },
        "queueingPolicy": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:QueueingPolicy",
          "description": "The queueing policy of the QueuedRequest."
        },
        "requestId": {
          "type": "string",
          "description": "Idempotent request UUID."
        },
        "reservationName": {
          "type": "string",
          "description": "Name of the reservation in which the resource should be provisioned. Format: projects/{project}/locations/{zone}/reservations/{reservation}"
        },
        "spot": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:Spot",
          "description": "Optional. The Spot tier."
        },
        "tpu": {
          "$ref": "#/types/google-native:tpu%2Fv2alpha1:Tpu",
          "description": "Defines a TPU resource."
        }
      }
    },
    "google-native:transcoder/v1:Job": {
      "description": "Creates a job in the specified region.",
      "properties": {
        "batchModePriority": {
          "type": "integer",
          "description": "The processing priority of a batch job. This field can only be set for batch mode jobs. The default value is 0. This value cannot be negative. Higher values correspond to higher priorities for the job."
        },
        "config": {
          "$ref": "#/types/google-native:transcoder%2Fv1:JobConfigResponse",
          "description": "The configuration for this job."
        },
        "createTime": {
          "type": "string",
          "description": "The time the job was created."
        },
        "endTime": {
          "type": "string",
          "description": "The time the transcoding finished."
        },
        "error": {
          "$ref": "#/types/google-native:transcoder%2Fv1:StatusResponse",
          "description": "An error object that describes the reason for the failure. This property is always present when ProcessingState is `FAILED`."
        },
        "inputUri": {
          "type": "string",
          "description": "Input only. Specify the `input_uri` to populate empty `uri` fields in each element of `Job.config.inputs` or `JobTemplate.config.inputs` when using template. URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`). See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this job. You can use these to organize and group your jobs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mode": {
          "type": "string",
          "description": "The processing mode of the job. The default is `PROCESSING_MODE_INTERACTIVE`."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the job. Format: `projects/{project_number}/locations/{location}/jobs/{job}`"
        },
        "optimization": {
          "type": "string",
          "description": "Optional. The optimization strategy of the job. The default is `AUTODETECT`."
        },
        "outputUri": {
          "type": "string",
          "description": "Input only. Specify the `output_uri` to populate an empty `Job.config.output.uri` or `JobTemplate.config.output.uri` when using template. URI for the output file(s). For example, `gs://my-bucket/outputs/`. See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "startTime": {
          "type": "string",
          "description": "The time the transcoding started."
        },
        "state": {
          "type": "string",
          "description": "The current state of the job."
        },
        "templateId": {
          "type": "string",
          "description": "Input only. Specify the `template_id` to use for populating `Job.config`. The default is `preset/web-hd`, which is the only supported preset. User defined JobTemplate: `{job_template_id}`"
        },
        "ttlAfterCompletionDays": {
          "type": "integer",
          "description": "Job time to live value in days, which will be effective after job completion. Job should be deleted automatically after the given TTL. Enter a value between 1 and 90. The default is 30."
        }
      },
      "type": "object",
      "required": [
        "batchModePriority",
        "config",
        "createTime",
        "endTime",
        "error",
        "inputUri",
        "labels",
        "location",
        "mode",
        "name",
        "optimization",
        "outputUri",
        "project",
        "startTime",
        "state",
        "templateId",
        "ttlAfterCompletionDays"
      ],
      "inputProperties": {
        "batchModePriority": {
          "type": "integer",
          "description": "The processing priority of a batch job. This field can only be set for batch mode jobs. The default value is 0. This value cannot be negative. Higher values correspond to higher priorities for the job."
        },
        "config": {
          "$ref": "#/types/google-native:transcoder%2Fv1:JobConfig",
          "description": "The configuration for this job."
        },
        "inputUri": {
          "type": "string",
          "description": "Input only. Specify the `input_uri` to populate empty `uri` fields in each element of `Job.config.inputs` or `JobTemplate.config.inputs` when using template. URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`). See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this job. You can use these to organize and group your jobs."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "mode": {
          "$ref": "#/types/google-native:transcoder%2Fv1:JobMode",
          "description": "The processing mode of the job. The default is `PROCESSING_MODE_INTERACTIVE`."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the job. Format: `projects/{project_number}/locations/{location}/jobs/{job}`"
        },
        "optimization": {
          "$ref": "#/types/google-native:transcoder%2Fv1:JobOptimization",
          "description": "Optional. The optimization strategy of the job. The default is `AUTODETECT`."
        },
        "outputUri": {
          "type": "string",
          "description": "Input only. Specify the `output_uri` to populate an empty `Job.config.output.uri` or `JobTemplate.config.output.uri` when using template. URI for the output file(s). For example, `gs://my-bucket/outputs/`. See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats)."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "templateId": {
          "type": "string",
          "description": "Input only. Specify the `template_id` to use for populating `Job.config`. The default is `preset/web-hd`, which is the only supported preset. User defined JobTemplate: `{job_template_id}`"
        },
        "ttlAfterCompletionDays": {
          "type": "integer",
          "description": "Job time to live value in days, which will be effective after job completion. Job should be deleted automatically after the given TTL. Enter a value between 1 and 90. The default is 30."
        }
      }
    },
    "google-native:transcoder/v1:JobTemplate": {
      "description": "Creates a job template in the specified region.",
      "properties": {
        "config": {
          "$ref": "#/types/google-native:transcoder%2Fv1:JobConfigResponse",
          "description": "The configuration for this template."
        },
        "jobTemplateId": {
          "type": "string",
          "description": "Required. The ID to use for the job template, which will become the final component of the job template's resource name. This value should be 4-63 characters, and valid characters must match the regular expression `a-zA-Z*`.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this job template. You can use these to organize and group your job templates."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the job template. Format: `projects/{project_number}/locations/{location}/jobTemplates/{job_template}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "config",
        "jobTemplateId",
        "labels",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "config": {
          "$ref": "#/types/google-native:transcoder%2Fv1:JobConfig",
          "description": "The configuration for this template."
        },
        "jobTemplateId": {
          "type": "string",
          "description": "Required. The ID to use for the job template, which will become the final component of the job template's resource name. This value should be 4-63 characters, and valid characters must match the regular expression `a-zA-Z*`.",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels associated with this job template. You can use these to organize and group your job templates."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the job template. Format: `projects/{project_number}/locations/{location}/jobTemplates/{job_template}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "jobTemplateId"
      ]
    },
    "google-native:translate/v3:Dataset": {
      "description": "Creates a Dataset.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when this dataset was created."
        },
        "displayName": {
          "type": "string",
          "description": "The name of the dataset to show in the interface. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores (_), and ASCII digits 0-9."
        },
        "exampleCount": {
          "type": "integer",
          "description": "The number of examples in the dataset."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the dataset, in form of `projects/{project-number-or-id}/locations/{location_id}/datasets/{dataset_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code of the source language."
        },
        "targetLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code of the target language."
        },
        "testExampleCount": {
          "type": "integer",
          "description": "Number of test examples (sentence pairs)."
        },
        "trainExampleCount": {
          "type": "integer",
          "description": "Number of training examples (sentence pairs)."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this dataset was last updated."
        },
        "validateExampleCount": {
          "type": "integer",
          "description": "Number of validation examples (sentence pairs)."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "exampleCount",
        "location",
        "name",
        "project",
        "sourceLanguageCode",
        "targetLanguageCode",
        "testExampleCount",
        "trainExampleCount",
        "updateTime",
        "validateExampleCount"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The name of the dataset to show in the interface. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores (_), and ASCII digits 0-9."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the dataset, in form of `projects/{project-number-or-id}/locations/{location_id}/datasets/{dataset_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code of the source language."
        },
        "targetLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code of the target language."
        }
      }
    },
    "google-native:translate/v3:Glossary": {
      "description": "Creates a glossary and returns the long-running operation. Returns NOT_FOUND, if the project doesn't exist.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Optional. The display name of the glossary."
        },
        "endTime": {
          "type": "string",
          "description": "When the glossary creation was finished."
        },
        "entryCount": {
          "type": "integer",
          "description": "The number of entries defined in the glossary."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryInputConfigResponse",
          "description": "Provides examples to build the glossary from. Total glossary must not exceed 10M Unicode codepoints."
        },
        "languageCodesSet": {
          "$ref": "#/types/google-native:translate%2Fv3:LanguageCodesSetResponse",
          "description": "Used with equivalent term set glossaries."
        },
        "languagePair": {
          "$ref": "#/types/google-native:translate%2Fv3:LanguageCodePairResponse",
          "description": "Used with unidirectional glossaries."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the glossary. Glossary names have the form `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "submitTime": {
          "type": "string",
          "description": "When CreateGlossary was called."
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "endTime",
        "entryCount",
        "inputConfig",
        "languageCodesSet",
        "languagePair",
        "location",
        "name",
        "project",
        "submitTime"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "Optional. The display name of the glossary."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryInputConfig",
          "description": "Provides examples to build the glossary from. Total glossary must not exceed 10M Unicode codepoints."
        },
        "languageCodesSet": {
          "$ref": "#/types/google-native:translate%2Fv3:LanguageCodesSet",
          "description": "Used with equivalent term set glossaries."
        },
        "languagePair": {
          "$ref": "#/types/google-native:translate%2Fv3:LanguageCodePair",
          "description": "Used with unidirectional glossaries."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the glossary. Glossary names have the form `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "inputConfig"
      ]
    },
    "google-native:translate/v3:GlossaryEntry": {
      "description": "Creates a glossary entry.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Describes the glossary entry."
        },
        "glossaryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the entry. Format: \"projects/*/locations/*/glossaries/*/glossaryEntries/*\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "termsPair": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermsPairResponse",
          "description": "Used for an unidirectional glossary."
        },
        "termsSet": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermsSetResponse",
          "description": "Used for an equivalent term sets glossary."
        }
      },
      "type": "object",
      "required": [
        "description",
        "glossaryId",
        "location",
        "name",
        "project",
        "termsPair",
        "termsSet"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Describes the glossary entry."
        },
        "glossaryId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the entry. Format: \"projects/*/locations/*/glossaries/*/glossaryEntries/*\""
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "termsPair": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermsPair",
          "description": "Used for an unidirectional glossary."
        },
        "termsSet": {
          "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermsSet",
          "description": "Used for an equivalent term sets glossary."
        }
      },
      "requiredInputs": [
        "glossaryId"
      ]
    },
    "google-native:translate/v3:Model": {
      "description": "Creates a Model.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Timestamp when the model resource was created, which is also when the training started."
        },
        "dataset": {
          "type": "string",
          "description": "The dataset from which the model is trained, in form of `projects/{project-number-or-id}/locations/{location_id}/datasets/{dataset_id}`"
        },
        "displayName": {
          "type": "string",
          "description": "The name of the model to show in the interface. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores (_), and ASCII digits 0-9."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the model, in form of `projects/{project-number-or-id}/locations/{location_id}/models/{model_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code of the source language."
        },
        "targetLanguageCode": {
          "type": "string",
          "description": "The BCP-47 language code of the target language."
        },
        "testExampleCount": {
          "type": "integer",
          "description": "Number of examples (sentence pairs) used to test the model."
        },
        "trainExampleCount": {
          "type": "integer",
          "description": "Number of examples (sentence pairs) used to train the model."
        },
        "updateTime": {
          "type": "string",
          "description": "Timestamp when this model was last updated."
        },
        "validateExampleCount": {
          "type": "integer",
          "description": "Number of examples (sentence pairs) used to validate the model."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "dataset",
        "displayName",
        "location",
        "name",
        "project",
        "sourceLanguageCode",
        "targetLanguageCode",
        "testExampleCount",
        "trainExampleCount",
        "updateTime",
        "validateExampleCount"
      ],
      "inputProperties": {
        "dataset": {
          "type": "string",
          "description": "The dataset from which the model is trained, in form of `projects/{project-number-or-id}/locations/{location_id}/datasets/{dataset_id}`"
        },
        "displayName": {
          "type": "string",
          "description": "The name of the model to show in the interface. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores (_), and ASCII digits 0-9."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the model, in form of `projects/{project-number-or-id}/locations/{location_id}/models/{model_id}`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:translate/v3beta1:Glossary": {
      "description": "Creates a glossary and returns the long-running operation. Returns NOT_FOUND, if the project doesn't exist.",
      "properties": {
        "endTime": {
          "type": "string",
          "description": "When the glossary creation was finished."
        },
        "entryCount": {
          "type": "integer",
          "description": "The number of entries defined in the glossary."
        },
        "inputConfig": {
          "$ref": "#/types/google-native:translate%2Fv3beta1:GlossaryInputConfigResponse",
          "description": "Provides examples to build the glossary from. Total glossary must not exceed 10M Unicode codepoints."
        },
        "languageCodesSet": {
          "$ref": "#/types/google-native:translate%2Fv3beta1:LanguageCodesSetResponse",
          "description": "Used with equivalent term set glossaries."
        },
        "languagePair": {
          "$ref": "#/types/google-native:translate%2Fv3beta1:LanguageCodePairResponse",
          "description": "Used with unidirectional glossaries."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the glossary. Glossary names have the form `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "submitTime": {
          "type": "string",
          "description": "When CreateGlossary was called."
        }
      },
      "type": "object",
      "required": [
        "endTime",
        "entryCount",
        "inputConfig",
        "languageCodesSet",
        "languagePair",
        "location",
        "name",
        "project",
        "submitTime"
      ],
      "inputProperties": {
        "inputConfig": {
          "$ref": "#/types/google-native:translate%2Fv3beta1:GlossaryInputConfig",
          "description": "Provides examples to build the glossary from. Total glossary must not exceed 10M Unicode codepoints."
        },
        "languageCodesSet": {
          "$ref": "#/types/google-native:translate%2Fv3beta1:LanguageCodesSet",
          "description": "Used with equivalent term set glossaries."
        },
        "languagePair": {
          "$ref": "#/types/google-native:translate%2Fv3beta1:LanguageCodePair",
          "description": "Used with unidirectional glossaries."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the glossary. Glossary names have the form `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "inputConfig"
      ]
    },
    "google-native:vision/v1:Product": {
      "description": "Creates and returns a new product resource. Possible errors: * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096 characters. * Returns INVALID_ARGUMENT if description is longer than 4096 characters. * Returns INVALID_ARGUMENT if product_category is missing or invalid.",
      "properties": {
        "description": {
          "type": "string",
          "description": "User-provided metadata to be stored with this product. Must be at most 4096 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The user-provided name for this Product. Must not be empty. Must be at most 4096 characters long."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the product. Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. This field is ignored when creating a product."
        },
        "productCategory": {
          "type": "string",
          "description": "Immutable. The category for the product identified by the reference image. This should be one of \"homegoods-v2\", \"apparel-v2\", \"toys-v2\", \"packagedgoods-v1\" or \"general-v1\". The legacy categories \"homegoods\", \"apparel\", and \"toys\" are still supported, but these should not be used for new products."
        },
        "productId": {
          "type": "string",
          "description": "A user-supplied resource id for this Product. If set, the server will attempt to use this value as the resource id. If it is already in use, an error is returned with code ALREADY_EXISTS. Must be at most 128 characters long. It cannot contain the character `/`."
        },
        "productLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vision%2Fv1:KeyValueResponse"
          },
          "description": "Key-value pairs that can be attached to a product. At query time, constraints can be specified based on the product_labels. Note that integer values can be provided as strings, e.g. \"1199\". Only strings with integer values can match a range-based restriction which is to be supported soon. Multiple values can be assigned to the same key. One product may have up to 500 product_labels. Notice that the total number of distinct product_labels over all products in one ProductSet cannot exceed 1M, otherwise the product search pipeline will refuse to work for that ProductSet."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "description",
        "displayName",
        "location",
        "name",
        "productCategory",
        "productLabels",
        "project"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-provided metadata to be stored with this product. Must be at most 4096 characters long."
        },
        "displayName": {
          "type": "string",
          "description": "The user-provided name for this Product. Must not be empty. Must be at most 4096 characters long."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the product. Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. This field is ignored when creating a product."
        },
        "productCategory": {
          "type": "string",
          "description": "Immutable. The category for the product identified by the reference image. This should be one of \"homegoods-v2\", \"apparel-v2\", \"toys-v2\", \"packagedgoods-v1\" or \"general-v1\". The legacy categories \"homegoods\", \"apparel\", and \"toys\" are still supported, but these should not be used for new products."
        },
        "productId": {
          "type": "string",
          "description": "A user-supplied resource id for this Product. If set, the server will attempt to use this value as the resource id. If it is already in use, an error is returned with code ALREADY_EXISTS. Must be at most 128 characters long. It cannot contain the character `/`."
        },
        "productLabels": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vision%2Fv1:KeyValue"
          },
          "description": "Key-value pairs that can be attached to a product. At query time, constraints can be specified based on the product_labels. Note that integer values can be provided as strings, e.g. \"1199\". Only strings with integer values can match a range-based restriction which is to be supported soon. Multiple values can be assigned to the same key. One product may have up to 500 product_labels. Notice that the total number of distinct product_labels over all products in one ProductSet cannot exceed 1M, otherwise the product search pipeline will refuse to work for that ProductSet."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:vision/v1:ProductSet": {
      "description": "Creates and returns a new ProductSet resource. Possible errors: * Returns INVALID_ARGUMENT if display_name is missing, or is longer than 4096 characters.",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The user-provided name for this ProductSet. Must not be empty. Must be at most 4096 characters long."
        },
        "indexError": {
          "$ref": "#/types/google-native:vision%2Fv1:StatusResponse",
          "description": "If there was an error with indexing the product set, the field is populated. This field is ignored when creating a ProductSet."
        },
        "indexTime": {
          "type": "string",
          "description": "The time at which this ProductSet was last indexed. Query results will reflect all updates before this time. If this ProductSet has never been indexed, this timestamp is the default value \"1970-01-01T00:00:00Z\". This field is ignored when creating a ProductSet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ProductSet. Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`. This field is ignored when creating a ProductSet."
        },
        "productSetId": {
          "type": "string",
          "description": "A user-supplied resource id for this ProductSet. If set, the server will attempt to use this value as the resource id. If it is already in use, an error is returned with code ALREADY_EXISTS. Must be at most 128 characters long. It cannot contain the character `/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "displayName",
        "indexError",
        "indexTime",
        "location",
        "name",
        "project"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The user-provided name for this ProductSet. Must not be empty. Must be at most 4096 characters long."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ProductSet. Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`. This field is ignored when creating a ProductSet."
        },
        "productSetId": {
          "type": "string",
          "description": "A user-supplied resource id for this ProductSet. If set, the server will attempt to use this value as the resource id. If it is already in use, an error is returned with code ALREADY_EXISTS. Must be at most 128 characters long. It cannot contain the character `/`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "google-native:vision/v1:ReferenceImage": {
      "description": "Creates and returns a new ReferenceImage resource. The `bounding_poly` field is optional. If `bounding_poly` is not specified, the system will try to detect regions of interest in the image that are compatible with the product_category on the parent product. If it is specified, detection is ALWAYS skipped. The system converts polygons into non-rotated rectangles. Note that the pipeline will resize the image if the image resolution is too large to process (above 50MP). Possible errors: * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096 characters. * Returns INVALID_ARGUMENT if the product does not exist. * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing compatible with the parent product's product_category is detected. * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons.",
      "properties": {
        "boundingPolys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vision%2Fv1:BoundingPolyResponse"
          },
          "description": "Optional. Bounding polygons around the areas of interest in the reference image. If this field is empty, the system will try to detect regions of interest. At most 10 bounding polygons will be used. The provided shape is converted into a non-rotated rectangle. Once converted, the small edge of the rectangle must be greater than or equal to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5 is not)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the reference image. Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. This field is ignored when creating a reference image."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "referenceImageId": {
          "type": "string",
          "description": "A user-supplied resource id for the ReferenceImage to be added. If set, the server will attempt to use this value as the resource id. If it is already in use, an error is returned with code ALREADY_EXISTS. Must be at most 128 characters long. It cannot contain the character `/`."
        },
        "uri": {
          "type": "string",
          "description": "The Google Cloud Storage URI of the reference image. The URI must start with `gs://`."
        }
      },
      "type": "object",
      "required": [
        "boundingPolys",
        "location",
        "name",
        "productId",
        "project",
        "uri"
      ],
      "inputProperties": {
        "boundingPolys": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vision%2Fv1:BoundingPoly"
          },
          "description": "Optional. Bounding polygons around the areas of interest in the reference image. If this field is empty, the system will try to detect regions of interest. At most 10 bounding polygons will be used. The provided shape is converted into a non-rotated rectangle. Once converted, the small edge of the rectangle must be greater than or equal to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5 is not)."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the reference image. Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. This field is ignored when creating a reference image."
        },
        "productId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "referenceImageId": {
          "type": "string",
          "description": "A user-supplied resource id for the ReferenceImage to be added. If set, the server will attempt to use this value as the resource id. If it is already in use, an error is returned with code ALREADY_EXISTS. Must be at most 128 characters long. It cannot contain the character `/`."
        },
        "uri": {
          "type": "string",
          "description": "The Google Cloud Storage URI of the reference image. The URI must start with `gs://`."
        }
      },
      "requiredInputs": [
        "productId",
        "uri"
      ]
    },
    "google-native:vmmigration/v1:CloneJob": {
      "description": "Initiates a Clone of a specific migrating VM.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "cloneJobId": {
          "type": "string",
          "description": "Required. The clone job identifier.",
          "replaceOnChanges": true
        },
        "computeEngineDisksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDetailsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDetailsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "createTime": {
          "type": "string",
          "description": "The time the clone job was created (as an API call, not when it was actually created in the target)."
        },
        "endTime": {
          "type": "string",
          "description": "The time the clone job was ended."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details for the errors that led to the Clone Job's state."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the clone."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the clone job."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last updated."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:CloneStepResponse"
          },
          "description": "The clone steps list representing its progress."
        }
      },
      "type": "object",
      "required": [
        "cloneJobId",
        "computeEngineDisksTargetDetails",
        "computeEngineTargetDetails",
        "createTime",
        "endTime",
        "error",
        "location",
        "migratingVmId",
        "name",
        "project",
        "sourceId",
        "state",
        "stateTime",
        "steps"
      ],
      "inputProperties": {
        "cloneJobId": {
          "type": "string",
          "description": "Required. The clone job identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "cloneJobId",
        "migratingVmId",
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1:CutoverJob": {
      "description": "Initiates a Cutover of a specific migrating VM. The returned LRO is completed when the cutover job resource is created and the job is initiated.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "computeEngineDisksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDetailsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDetailsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "createTime": {
          "type": "string",
          "description": "The time the cutover job was created (as an API call, not when it was actually created in the target)."
        },
        "cutoverJobId": {
          "type": "string",
          "description": "Required. The cutover job identifier.",
          "replaceOnChanges": true
        },
        "endTime": {
          "type": "string",
          "description": "The time the cutover job had finished."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details for the errors that led to the Cutover Job's state."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the cutover job."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The current progress in percentage of the cutover job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the cutover job."
        },
        "stateMessage": {
          "type": "string",
          "description": "A message providing possible extra details about the current state."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last updated."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:CutoverStepResponse"
          },
          "description": "The cutover steps list representing its progress."
        }
      },
      "type": "object",
      "required": [
        "computeEngineDisksTargetDetails",
        "computeEngineTargetDetails",
        "createTime",
        "cutoverJobId",
        "endTime",
        "error",
        "location",
        "migratingVmId",
        "name",
        "progressPercent",
        "project",
        "sourceId",
        "state",
        "stateMessage",
        "stateTime",
        "steps"
      ],
      "inputProperties": {
        "cutoverJobId": {
          "type": "string",
          "description": "Required. The cutover job identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "cutoverJobId",
        "migratingVmId",
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1:DatacenterConnector": {
      "description": "Creates a new DatacenterConnector in a given Source.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "applianceInfrastructureVersion": {
          "type": "string",
          "description": "Appliance OVA version. This is the OVA which is manually installed by the user and contains the infrastructure for the automatically updatable components on the appliance."
        },
        "applianceSoftwareVersion": {
          "type": "string",
          "description": "Appliance last installed update bundle version. This is the version of the automatically updatable components on the appliance."
        },
        "availableVersions": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AvailableUpdatesResponse",
          "description": "The available versions for updating this appliance."
        },
        "bucket": {
          "type": "string",
          "description": "The communication channel between the datacenter connector and Google Cloud."
        },
        "createTime": {
          "type": "string",
          "description": "The time the connector was created (as an API call, not when it was actually installed)."
        },
        "datacenterConnectorId": {
          "type": "string",
          "description": "Required. The datacenterConnector identifier.",
          "replaceOnChanges": true
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details on the state of the Datacenter Connector in case of an error."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The connector's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "description": "Immutable. A unique key for this connector. This key is internal to the OVA connector and is supplied with its creation during the registration process and can not be modified."
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to use in the connector when communicating with the cloud."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the DatacenterConnector, as determined by the health checks."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last set."
        },
        "updateTime": {
          "type": "string",
          "description": "The last time the connector was updated with an API call."
        },
        "upgradeStatus": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:UpgradeStatusResponse",
          "description": "The status of the current / last upgradeAppliance operation."
        },
        "version": {
          "type": "string",
          "description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified."
        }
      },
      "type": "object",
      "required": [
        "applianceInfrastructureVersion",
        "applianceSoftwareVersion",
        "availableVersions",
        "bucket",
        "createTime",
        "datacenterConnectorId",
        "error",
        "location",
        "name",
        "project",
        "registrationId",
        "serviceAccount",
        "sourceId",
        "state",
        "stateTime",
        "updateTime",
        "upgradeStatus",
        "version"
      ],
      "inputProperties": {
        "datacenterConnectorId": {
          "type": "string",
          "description": "Required. The datacenterConnector identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "description": "Immutable. A unique key for this connector. This key is internal to the OVA connector and is supplied with its creation during the registration process and can not be modified."
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to use in the connector when communicating with the cloud."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "string",
          "description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified."
        }
      },
      "requiredInputs": [
        "datacenterConnectorId",
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1:Group": {
      "description": "Creates a new Group in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The create time timestamp."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the group."
        },
        "displayName": {
          "type": "string",
          "description": "Display name is a user defined name for this group which can be updated."
        },
        "groupId": {
          "type": "string",
          "description": "Required. The group identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationTargetType": {
          "type": "string",
          "description": "Immutable. The target type of this group."
        },
        "name": {
          "type": "string",
          "description": "The Group name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The update time timestamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "groupId",
        "location",
        "migrationTargetType",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-provided description of the group."
        },
        "displayName": {
          "type": "string",
          "description": "Display name is a user defined name for this group which can be updated."
        },
        "groupId": {
          "type": "string",
          "description": "Required. The group identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationTargetType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:GroupMigrationTargetType",
          "description": "Immutable. The target type of this group."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "groupId"
      ]
    },
    "google-native:vmmigration/v1:MigratingVm": {
      "description": "Creates a new MigratingVm in a given Source.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "awsSourceVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AwsSourceVmDetailsResponse",
          "description": "Details of the VM from an AWS source."
        },
        "azureSourceVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AzureSourceVmDetailsResponse",
          "description": "Details of the VM from an Azure source."
        },
        "computeEngineDisksTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDefaultsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDefaultsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "createTime": {
          "type": "string",
          "description": "The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source)."
        },
        "currentSyncInfo": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicationCycleResponse",
          "description": "Details of the current running replication cycle."
        },
        "cutoverForecast": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:CutoverForecastResponse",
          "description": "Provides details of future CutoverJobs of a MigratingVm. Set to empty when cutover forecast is unavailable."
        },
        "description": {
          "type": "string",
          "description": "The description attached to the migrating VM by the user."
        },
        "displayName": {
          "type": "string",
          "description": "The display name attached to the MigratingVm by the user."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details on the state of the Migrating VM in case of an error in replication."
        },
        "group": {
          "type": "string",
          "description": "The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the migrating VM."
        },
        "lastReplicationCycle": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicationCycleResponse",
          "description": "Details of the last replication cycle. This will be updated whenever a replication cycle is finished and is not to be confused with last_sync which is only updated on successful replication cycles."
        },
        "lastSync": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicationSyncResponse",
          "description": "The most updated snapshot created time in the source that finished replication."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "description": "Required. The migratingVm identifier.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The identifier of the MigratingVm."
        },
        "policy": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:SchedulePolicyResponse",
          "description": "The replication schedule policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recentCloneJobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:CloneJobResponse"
          },
          "description": "The recent clone jobs performed on the migrating VM. This field holds the vm's last completed clone job and the vm's running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request."
        },
        "recentCutoverJobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:CutoverJobResponse"
          },
          "description": "The recent cutover jobs performed on the migrating VM. This field holds the vm's last completed cutover job and the vm's running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request."
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceVmId": {
          "type": "string",
          "description": "The unique ID of the VM in the source. The VM's name in vSphere can be changed, so this is not the VM's name but rather its moRef id. This id is of the form vm-."
        },
        "state": {
          "type": "string",
          "description": "State of the MigratingVm."
        },
        "stateTime": {
          "type": "string",
          "description": "The last time the migrating VM state was updated."
        },
        "updateTime": {
          "type": "string",
          "description": "The last time the migrating VM resource was updated."
        },
        "vmwareSourceVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareSourceVmDetailsResponse",
          "description": "Details of the VM from a Vmware source."
        }
      },
      "type": "object",
      "required": [
        "awsSourceVmDetails",
        "azureSourceVmDetails",
        "computeEngineDisksTargetDefaults",
        "computeEngineTargetDefaults",
        "createTime",
        "currentSyncInfo",
        "cutoverForecast",
        "description",
        "displayName",
        "error",
        "group",
        "labels",
        "lastReplicationCycle",
        "lastSync",
        "location",
        "migratingVmId",
        "name",
        "policy",
        "project",
        "recentCloneJobs",
        "recentCutoverJobs",
        "sourceId",
        "sourceVmId",
        "state",
        "stateTime",
        "updateTime",
        "vmwareSourceVmDetails"
      ],
      "inputProperties": {
        "computeEngineDisksTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDefaults",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDefaults",
          "description": "Details of the target VM in Compute Engine."
        },
        "description": {
          "type": "string",
          "description": "The description attached to the migrating VM by the user."
        },
        "displayName": {
          "type": "string",
          "description": "The display name attached to the MigratingVm by the user."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the migrating VM."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "description": "Required. The migratingVm identifier.",
          "replaceOnChanges": true
        },
        "policy": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:SchedulePolicy",
          "description": "The replication schedule policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceVmId": {
          "type": "string",
          "description": "The unique ID of the VM in the source. The VM's name in vSphere can be changed, so this is not the VM's name but rather its moRef id. This id is of the form vm-."
        }
      },
      "requiredInputs": [
        "migratingVmId",
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1:Source": {
      "description": "Creates a new Source in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "aws": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AwsSourceDetailsResponse",
          "description": "AWS type source details."
        },
        "azure": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AzureSourceDetailsResponse",
          "description": "Azure type source details."
        },
        "createTime": {
          "type": "string",
          "description": "The create time timestamp."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the source."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:EncryptionResponse",
          "description": "Optional. Immutable. The encryption details of the source data stored by the service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the source."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The Source name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "description": "Required. The source identifier.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The update time timestamp."
        },
        "vmware": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareSourceDetailsResponse",
          "description": "Vmware type source details."
        }
      },
      "type": "object",
      "required": [
        "aws",
        "azure",
        "createTime",
        "description",
        "encryption",
        "labels",
        "location",
        "name",
        "project",
        "sourceId",
        "updateTime",
        "vmware"
      ],
      "inputProperties": {
        "aws": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AwsSourceDetails",
          "description": "AWS type source details."
        },
        "azure": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:AzureSourceDetails",
          "description": "Azure type source details."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the source."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:Encryption",
          "description": "Optional. Immutable. The encryption details of the source data stored by the service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the source."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "description": "Required. The source identifier.",
          "replaceOnChanges": true
        },
        "vmware": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareSourceDetails",
          "description": "Vmware type source details."
        }
      },
      "requiredInputs": [
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1:TargetProject": {
      "description": "Creates a new TargetProject in a given project. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time this target project resource was created (not related to when the Compute Engine project it points to was created)."
        },
        "description": {
          "type": "string",
          "description": "The target project's description."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the target project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "targetProjectId": {
          "type": "string",
          "description": "Required. The target_project identifier.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last time the target project resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "name",
        "project",
        "targetProjectId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The target project's description."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "description": "The target project ID (number) or project name."
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "targetProjectId": {
          "type": "string",
          "description": "Required. The target_project identifier.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "targetProjectId"
      ]
    },
    "google-native:vmmigration/v1:UtilizationReport": {
      "description": "Creates a new UtilizationReport.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the report was created (this refers to the time of the request, not the time the report creation completed)."
        },
        "displayName": {
          "type": "string",
          "description": "The report display name, as assigned by the user."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
          "description": "Provides details on the state of the report in case of an error."
        },
        "frameEndTime": {
          "type": "string",
          "description": "The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the \"frame_end_time\" value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The report unique name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "Current state of the report."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last set."
        },
        "timeFrame": {
          "type": "string",
          "description": "Time frame of the report."
        },
        "utilizationReportId": {
          "type": "string",
          "description": "Required. The ID to use for the report, which will become the final component of the reports's resource name. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen.",
          "replaceOnChanges": true
        },
        "vmCount": {
          "type": "integer",
          "description": "Total number of VMs included in the report."
        },
        "vms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:VmUtilizationInfoResponse"
          },
          "description": "List of utilization information per VM. When sent as part of the request, the \"vm_id\" field is used in order to specify which VMs to include in the report. In that case all other fields are ignored."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "error",
        "frameEndTime",
        "location",
        "name",
        "project",
        "sourceId",
        "state",
        "stateTime",
        "timeFrame",
        "utilizationReportId",
        "vmCount",
        "vms"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The report display name, as assigned by the user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeFrame": {
          "$ref": "#/types/google-native:vmmigration%2Fv1:UtilizationReportTimeFrame",
          "description": "Time frame of the report."
        },
        "utilizationReportId": {
          "type": "string",
          "description": "Required. The ID to use for the report, which will become the final component of the reports's resource name. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen.",
          "replaceOnChanges": true
        },
        "vms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:VmUtilizationInfo"
          },
          "description": "List of utilization information per VM. When sent as part of the request, the \"vm_id\" field is used in order to specify which VMs to include in the report. In that case all other fields are ignored."
        }
      },
      "requiredInputs": [
        "sourceId",
        "utilizationReportId"
      ]
    },
    "google-native:vmmigration/v1alpha1:CloneJob": {
      "description": "Initiates a Clone of a specific migrating VM.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "cloneJobId": {
          "type": "string",
          "description": "Required. The clone job identifier.",
          "replaceOnChanges": true
        },
        "computeEngineDisksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDetailsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDetailsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "computeEngineVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
          "deprecationMessage": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead."
        },
        "createTime": {
          "type": "string",
          "description": "The time the clone job was created (as an API call, not when it was actually created in the target)."
        },
        "endTime": {
          "type": "string",
          "description": "The time the clone job was ended."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details for the errors that led to the Clone Job's state."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the clone."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the clone job."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last updated."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CloneStepResponse"
          },
          "description": "The clone steps list representing its progress."
        },
        "targetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM to create as the target of this clone job. Deprecated: Use compute_engine_target_details instead.",
          "deprecationMessage": "Output only. Details of the VM to create as the target of this clone job. Deprecated: Use compute_engine_target_details instead."
        }
      },
      "type": "object",
      "required": [
        "cloneJobId",
        "computeEngineDisksTargetDetails",
        "computeEngineTargetDetails",
        "computeEngineVmDetails",
        "createTime",
        "endTime",
        "error",
        "location",
        "migratingVmId",
        "name",
        "project",
        "sourceId",
        "state",
        "stateTime",
        "steps",
        "targetDetails"
      ],
      "inputProperties": {
        "cloneJobId": {
          "type": "string",
          "description": "Required. The clone job identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "cloneJobId",
        "migratingVmId",
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1alpha1:CutoverJob": {
      "description": "Initiates a Cutover of a specific migrating VM. The returned LRO is completed when the cutover job resource is created and the job is initiated.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "computeEngineDisksTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDetailsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDetailsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "computeEngineVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
          "deprecationMessage": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead."
        },
        "createTime": {
          "type": "string",
          "description": "The time the cutover job was created (as an API call, not when it was actually created in the target)."
        },
        "cutoverJobId": {
          "type": "string",
          "description": "Required. The cutover job identifier.",
          "replaceOnChanges": true
        },
        "endTime": {
          "type": "string",
          "description": "The time the cutover job had finished."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details for the errors that led to the Cutover Job's state."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the cutover job."
        },
        "progress": {
          "type": "integer",
          "description": "The current progress in percentage of the cutover job."
        },
        "progressPercent": {
          "type": "integer",
          "description": "The current progress in percentage of the cutover job."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the cutover job."
        },
        "stateMessage": {
          "type": "string",
          "description": "A message providing possible extra details about the current state."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last updated."
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CutoverStepResponse"
          },
          "description": "The cutover steps list representing its progress."
        },
        "targetDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead.",
          "deprecationMessage": "Output only. Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead."
        }
      },
      "type": "object",
      "required": [
        "computeEngineDisksTargetDetails",
        "computeEngineTargetDetails",
        "computeEngineVmDetails",
        "createTime",
        "cutoverJobId",
        "endTime",
        "error",
        "location",
        "migratingVmId",
        "name",
        "progress",
        "progressPercent",
        "project",
        "sourceId",
        "state",
        "stateMessage",
        "stateTime",
        "steps",
        "targetDetails"
      ],
      "inputProperties": {
        "cutoverJobId": {
          "type": "string",
          "description": "Required. The cutover job identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "cutoverJobId",
        "migratingVmId",
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1alpha1:DatacenterConnector": {
      "description": "Creates a new DatacenterConnector in a given Source.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "applianceInfrastructureVersion": {
          "type": "string",
          "description": "Appliance OVA version. This is the OVA which is manually installed by the user and contains the infrastructure for the automatically updatable components on the appliance."
        },
        "applianceSoftwareVersion": {
          "type": "string",
          "description": "Appliance last installed update bundle version. This is the version of the automatically updatable components on the appliance."
        },
        "availableVersions": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AvailableUpdatesResponse",
          "description": "The available versions for updating this appliance."
        },
        "bucket": {
          "type": "string",
          "description": "The communication channel between the datacenter connector and Google Cloud."
        },
        "createTime": {
          "type": "string",
          "description": "The time the connector was created (as an API call, not when it was actually installed)."
        },
        "datacenterConnectorId": {
          "type": "string",
          "description": "Required. The datacenterConnector identifier.",
          "replaceOnChanges": true
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details on the state of the Datacenter Connector in case of an error."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The connector's name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "description": "Immutable. A unique key for this connector. This key is internal to the OVA connector and is supplied with its creation during the registration process and can not be modified."
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to use in the connector when communicating with the cloud."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the DatacenterConnector, as determined by the health checks."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last set."
        },
        "updateTime": {
          "type": "string",
          "description": "The last time the connector was updated with an API call."
        },
        "upgradeStatus": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:UpgradeStatusResponse",
          "description": "The status of the current / last upgradeAppliance operation."
        },
        "version": {
          "type": "string",
          "description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified."
        }
      },
      "type": "object",
      "required": [
        "applianceInfrastructureVersion",
        "applianceSoftwareVersion",
        "availableVersions",
        "bucket",
        "createTime",
        "datacenterConnectorId",
        "error",
        "location",
        "name",
        "project",
        "registrationId",
        "serviceAccount",
        "sourceId",
        "state",
        "stateTime",
        "updateTime",
        "upgradeStatus",
        "version"
      ],
      "inputProperties": {
        "datacenterConnectorId": {
          "type": "string",
          "description": "Required. The datacenterConnector identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "registrationId": {
          "type": "string",
          "description": "Immutable. A unique key for this connector. This key is internal to the OVA connector and is supplied with its creation during the registration process and can not be modified."
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account to use in the connector when communicating with the cloud."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "string",
          "description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified."
        }
      },
      "requiredInputs": [
        "datacenterConnectorId",
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1alpha1:Group": {
      "description": "Creates a new Group in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The create time timestamp."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the group."
        },
        "displayName": {
          "type": "string",
          "description": "Display name is a user defined name for this group which can be updated."
        },
        "groupId": {
          "type": "string",
          "description": "Required. The group identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationTargetType": {
          "type": "string",
          "description": "Immutable. The target type of this group."
        },
        "name": {
          "type": "string",
          "description": "The Group name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "updateTime": {
          "type": "string",
          "description": "The update time timestamp."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "displayName",
        "groupId",
        "location",
        "migrationTargetType",
        "name",
        "project",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-provided description of the group."
        },
        "displayName": {
          "type": "string",
          "description": "Display name is a user defined name for this group which can be updated."
        },
        "groupId": {
          "type": "string",
          "description": "Required. The group identifier.",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migrationTargetType": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:GroupMigrationTargetType",
          "description": "Immutable. The target type of this group."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "groupId"
      ]
    },
    "google-native:vmmigration/v1alpha1:MigratingVm": {
      "description": "Creates a new MigratingVm in a given Source.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "awsSourceVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AwsSourceVmDetailsResponse",
          "description": "Details of the VM from an AWS source."
        },
        "azureSourceVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AzureSourceVmDetailsResponse",
          "description": "Details of the VM from an Azure source."
        },
        "computeEngineDisksTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDefaultsResponse",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDefaultsResponse",
          "description": "Details of the target VM in Compute Engine."
        },
        "computeEngineVmDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_defaults instead.",
          "deprecationMessage": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_defaults instead."
        },
        "createTime": {
          "type": "string",
          "description": "The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source)."
        },
        "currentSyncInfo": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicationCycleResponse",
          "description": "Details of the current running replication cycle."
        },
        "cutoverForecast": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CutoverForecastResponse",
          "description": "Provides details of future CutoverJobs of a MigratingVm. Set to empty when cutover forecast is unavailable."
        },
        "description": {
          "type": "string",
          "description": "The description attached to the migrating VM by the user."
        },
        "displayName": {
          "type": "string",
          "description": "The display name attached to the MigratingVm by the user."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details on the state of the Migrating VM in case of an error in replication."
        },
        "group": {
          "type": "string",
          "description": "The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the migrating VM."
        },
        "lastReplicationCycle": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicationCycleResponse",
          "description": "Details of the last replication cycle. This will be updated whenever a replication cycle is finished and is not to be confused with last_sync which is only updated on successful replication cycles."
        },
        "lastSync": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicationSyncResponse",
          "description": "The most updated snapshot created time in the source that finished replication."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "description": "Required. The migratingVm identifier.",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The identifier of the MigratingVm."
        },
        "policy": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:SchedulePolicyResponse",
          "description": "The replication schedule policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "recentCloneJobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CloneJobResponse"
          },
          "description": "The recent clone jobs performed on the migrating VM. This field holds the vm's last completed clone job and the vm's running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request."
        },
        "recentCutoverJobs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CutoverJobResponse"
          },
          "description": "The recent cutover jobs performed on the migrating VM. This field holds the vm's last completed cutover job and the vm's running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request."
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceVmId": {
          "type": "string",
          "description": "The unique ID of the VM in the source. The VM's name in vSphere can be changed, so this is not the VM's name but rather its moRef id. This id is of the form vm-."
        },
        "state": {
          "type": "string",
          "description": "State of the MigratingVm."
        },
        "stateTime": {
          "type": "string",
          "description": "The last time the migrating VM state was updated."
        },
        "targetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
          "description": "The default configuration of the target VM that will be created in Google Cloud as a result of the migration. Deprecated: Use compute_engine_target_defaults instead.",
          "deprecationMessage": "The default configuration of the target VM that will be created in Google Cloud as a result of the migration. Deprecated: Use compute_engine_target_defaults instead."
        },
        "updateTime": {
          "type": "string",
          "description": "The last time the migrating VM resource was updated."
        },
        "vmwareSourceVmDetails": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareSourceVmDetailsResponse",
          "description": "Details of the VM from a Vmware source."
        }
      },
      "type": "object",
      "required": [
        "awsSourceVmDetails",
        "azureSourceVmDetails",
        "computeEngineDisksTargetDefaults",
        "computeEngineTargetDefaults",
        "computeEngineVmDefaults",
        "createTime",
        "currentSyncInfo",
        "cutoverForecast",
        "description",
        "displayName",
        "error",
        "group",
        "labels",
        "lastReplicationCycle",
        "lastSync",
        "location",
        "migratingVmId",
        "name",
        "policy",
        "project",
        "recentCloneJobs",
        "recentCutoverJobs",
        "sourceId",
        "sourceVmId",
        "state",
        "stateTime",
        "targetDefaults",
        "updateTime",
        "vmwareSourceVmDetails"
      ],
      "inputProperties": {
        "computeEngineDisksTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDefaults",
          "description": "Details of the target Persistent Disks in Compute Engine."
        },
        "computeEngineTargetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDefaults",
          "description": "Details of the target VM in Compute Engine."
        },
        "computeEngineVmDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetails",
          "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_defaults instead.",
          "deprecationMessage": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_defaults instead."
        },
        "description": {
          "type": "string",
          "description": "The description attached to the migrating VM by the user."
        },
        "displayName": {
          "type": "string",
          "description": "The display name attached to the MigratingVm by the user."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the migrating VM."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "migratingVmId": {
          "type": "string",
          "description": "Required. The migratingVm identifier.",
          "replaceOnChanges": true
        },
        "policy": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:SchedulePolicy",
          "description": "The replication schedule policy."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "sourceVmId": {
          "type": "string",
          "description": "The unique ID of the VM in the source. The VM's name in vSphere can be changed, so this is not the VM's name but rather its moRef id. This id is of the form vm-."
        },
        "targetDefaults": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetails",
          "description": "The default configuration of the target VM that will be created in Google Cloud as a result of the migration. Deprecated: Use compute_engine_target_defaults instead.",
          "deprecationMessage": "The default configuration of the target VM that will be created in Google Cloud as a result of the migration. Deprecated: Use compute_engine_target_defaults instead."
        }
      },
      "requiredInputs": [
        "migratingVmId",
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1alpha1:Source": {
      "description": "Creates a new Source in a given project and location.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "aws": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AwsSourceDetailsResponse",
          "description": "AWS type source details."
        },
        "azure": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AzureSourceDetailsResponse",
          "description": "Azure type source details."
        },
        "createTime": {
          "type": "string",
          "description": "The create time timestamp."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the source."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:EncryptionResponse",
          "description": "Optional. Immutable. The encryption details of the source data stored by the service."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details on the state of the Source in case of an error."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the source."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The Source name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "description": "Required. The source identifier.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The update time timestamp."
        },
        "vmware": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareSourceDetailsResponse",
          "description": "Vmware type source details."
        }
      },
      "type": "object",
      "required": [
        "aws",
        "azure",
        "createTime",
        "description",
        "encryption",
        "error",
        "labels",
        "location",
        "name",
        "project",
        "sourceId",
        "updateTime",
        "vmware"
      ],
      "inputProperties": {
        "aws": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AwsSourceDetails",
          "description": "AWS type source details."
        },
        "azure": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AzureSourceDetails",
          "description": "Azure type source details."
        },
        "description": {
          "type": "string",
          "description": "User-provided description of the source."
        },
        "encryption": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:Encryption",
          "description": "Optional. Immutable. The encryption details of the source data stored by the service."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of the source."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "description": "Required. The source identifier.",
          "replaceOnChanges": true
        },
        "vmware": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareSourceDetails",
          "description": "Vmware type source details."
        }
      },
      "requiredInputs": [
        "sourceId"
      ]
    },
    "google-native:vmmigration/v1alpha1:TargetProject": {
      "description": "Creates a new TargetProject in a given project. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time this target project resource was created (not related to when the Compute Engine project it points to was created)."
        },
        "description": {
          "type": "string",
          "description": "The target project's description."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The name of the target project."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "targetProjectId": {
          "type": "string",
          "description": "Required. The target_project identifier.",
          "replaceOnChanges": true
        },
        "updateTime": {
          "type": "string",
          "description": "The last time the target project resource was updated."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "name",
        "project",
        "targetProjectId",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "The target project's description."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "description": "The target project ID (number) or project name."
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "targetProjectId": {
          "type": "string",
          "description": "Required. The target_project identifier.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "targetProjectId"
      ]
    },
    "google-native:vmmigration/v1alpha1:UtilizationReport": {
      "description": "Creates a new UtilizationReport.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The time the report was created (this refers to the time of the request, not the time the report creation completed)."
        },
        "displayName": {
          "type": "string",
          "description": "The report display name, as assigned by the user."
        },
        "error": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
          "description": "Provides details on the state of the report in case of an error."
        },
        "frameEndTime": {
          "type": "string",
          "description": "The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the \"frame_end_time\" value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The report unique name."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "Current state of the report."
        },
        "stateTime": {
          "type": "string",
          "description": "The time the state was last set."
        },
        "timeFrame": {
          "type": "string",
          "description": "Time frame of the report."
        },
        "utilizationReportId": {
          "type": "string",
          "description": "Required. The ID to use for the report, which will become the final component of the reports's resource name. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen.",
          "replaceOnChanges": true
        },
        "vmCount": {
          "type": "integer",
          "description": "Total number of VMs included in the report."
        },
        "vms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmUtilizationInfoResponse"
          },
          "description": "List of utilization information per VM. When sent as part of the request, the \"vm_id\" field is used in order to specify which VMs to include in the report. In that case all other fields are ignored."
        },
        "vmsCount": {
          "type": "integer",
          "description": "Total number of VMs included in the report."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "displayName",
        "error",
        "frameEndTime",
        "location",
        "name",
        "project",
        "sourceId",
        "state",
        "stateTime",
        "timeFrame",
        "utilizationReportId",
        "vmCount",
        "vms",
        "vmsCount"
      ],
      "inputProperties": {
        "displayName": {
          "type": "string",
          "description": "The report display name, as assigned by the user."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "timeFrame": {
          "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:UtilizationReportTimeFrame",
          "description": "Time frame of the report."
        },
        "utilizationReportId": {
          "type": "string",
          "description": "Required. The ID to use for the report, which will become the final component of the reports's resource name. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen.",
          "replaceOnChanges": true
        },
        "vms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmUtilizationInfo"
          },
          "description": "List of utilization information per VM. When sent as part of the request, the \"vm_id\" field is used in order to specify which VMs to include in the report. In that case all other fields are ignored."
        }
      },
      "requiredInputs": [
        "sourceId",
        "utilizationReportId"
      ]
    },
    "google-native:vmwareengine/v1:Cluster": {
      "description": "Creates a new cluster in a given private cloud. Creating a new cluster provides additional nodes for use in the parent private cloud and requires sufficient [node quota](https://cloud.google.com/vmware-engine/quotas).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the new `Cluster`. This identifier must be unique among clusters within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "management": {
          "type": "boolean",
          "description": "True if the cluster is a management cluster; false otherwise. There can only be one management cluster in a private cloud and it has to be the first one."
        },
        "name": {
          "type": "string",
          "description": "The resource name of this cluster. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`"
        },
        "nodeTypeConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of cluster node types in this cluster, where the key is canonical identifier of the node type (corresponds to the `NodeType`)."
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "State of the resource."
        },
        "stretchedClusterConfig": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:StretchedClusterConfigResponse",
          "description": "Optional. Configuration of a stretched cluster. Required for clusters that belong to a STRETCHED private cloud."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "createTime",
        "location",
        "management",
        "name",
        "nodeTypeConfigs",
        "privateCloudId",
        "project",
        "state",
        "stretchedClusterConfig",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the new `Cluster`. This identifier must be unique among clusters within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "nodeTypeConfigs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The map of cluster node types in this cluster, where the key is canonical identifier of the node type (corresponds to the `NodeType`)."
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "stretchedClusterConfig": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:StretchedClusterConfig",
          "description": "Optional. Configuration of a stretched cluster. Required for clusters that belong to a STRETCHED private cloud."
        }
      },
      "requiredInputs": [
        "clusterId",
        "nodeTypeConfigs",
        "privateCloudId"
      ]
    },
    "google-native:vmwareengine/v1:ExternalAccessRule": {
      "description": "Creates a new external access rule in a given network policy.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "action": {
          "type": "string",
          "description": "The action that the external access rule performs."
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "description": {
          "type": "string",
          "description": "User-provided description for this external access rule."
        },
        "destinationIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:IpRangeResponse"
          },
          "description": "If destination ranges are specified, the external access rule applies only to the traffic that has a destination IP address in these ranges. The specified IP addresses must have reserved external IP addresses in the scope of the parent network policy. To match all external IP addresses in the scope of the parent network policy, specify `0.0.0.0/0`. To match a specific external IP address, specify it using the `IpRange.external_address` property."
        },
        "destinationPorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of destination ports to which the external access rule applies. This field is only applicable for the UDP or TCP protocol. Each entry must be either an integer or a range. For example: `[\"22\"]`, `[\"80\",\"443\"]`, or `[\"12345-12349\"]`. To match all destination ports, specify `[\"0-65535\"]`."
        },
        "externalAccessRuleId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `ExternalAccessRule` to be created. This identifier must be unique among `ExternalAccessRule` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which the external access rule applies. This value can be one of the following three protocol strings (not case-sensitive): `tcp`, `udp`, or `icmp`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of this external access rule. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`"
        },
        "networkPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "priority": {
          "type": "integer",
          "description": "External access rule priority, which determines the external access rule to use when multiple rules apply. If multiple rules have the same priority, their ordering is non-deterministic. If specific ordering is required, assign unique priorities to enforce such ordering. The external access rule priority is an integer from 100 to 4096, both inclusive. Lower integers indicate higher precedence. For example, a rule with priority `100` has higher precedence than a rule with priority `101`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:IpRangeResponse"
          },
          "description": "If source ranges are specified, the external access rule applies only to traffic that has a source IP address in these ranges. These ranges can either be expressed in the CIDR format or as an IP address. As only inbound rules are supported, `ExternalAddress` resources cannot be the source IP addresses of an external access rule. To match all source addresses, specify `0.0.0.0/0`."
        },
        "sourcePorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of source ports to which the external access rule applies. This field is only applicable for the UDP or TCP protocol. Each entry must be either an integer or a range. For example: `[\"22\"]`, `[\"80\",\"443\"]`, or `[\"12345-12349\"]`. To match all source ports, specify `[\"0-65535\"]`."
        },
        "state": {
          "type": "string",
          "description": "The state of the resource."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        }
      },
      "type": "object",
      "required": [
        "action",
        "createTime",
        "description",
        "destinationIpRanges",
        "destinationPorts",
        "externalAccessRuleId",
        "ipProtocol",
        "location",
        "name",
        "networkPolicyId",
        "priority",
        "project",
        "sourceIpRanges",
        "sourcePorts",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "action": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:ExternalAccessRuleAction",
          "description": "The action that the external access rule performs."
        },
        "description": {
          "type": "string",
          "description": "User-provided description for this external access rule."
        },
        "destinationIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:IpRange"
          },
          "description": "If destination ranges are specified, the external access rule applies only to the traffic that has a destination IP address in these ranges. The specified IP addresses must have reserved external IP addresses in the scope of the parent network policy. To match all external IP addresses in the scope of the parent network policy, specify `0.0.0.0/0`. To match a specific external IP address, specify it using the `IpRange.external_address` property."
        },
        "destinationPorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of destination ports to which the external access rule applies. This field is only applicable for the UDP or TCP protocol. Each entry must be either an integer or a range. For example: `[\"22\"]`, `[\"80\",\"443\"]`, or `[\"12345-12349\"]`. To match all destination ports, specify `[\"0-65535\"]`."
        },
        "externalAccessRuleId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `ExternalAccessRule` to be created. This identifier must be unique among `ExternalAccessRule` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "ipProtocol": {
          "type": "string",
          "description": "The IP protocol to which the external access rule applies. This value can be one of the following three protocol strings (not case-sensitive): `tcp`, `udp`, or `icmp`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "networkPolicyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "priority": {
          "type": "integer",
          "description": "External access rule priority, which determines the external access rule to use when multiple rules apply. If multiple rules have the same priority, their ordering is non-deterministic. If specific ordering is required, assign unique priorities to enforce such ordering. The external access rule priority is an integer from 100 to 4096, both inclusive. Lower integers indicate higher precedence. For example, a rule with priority `100` has higher precedence than a rule with priority `101`."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceIpRanges": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:IpRange"
          },
          "description": "If source ranges are specified, the external access rule applies only to traffic that has a source IP address in these ranges. These ranges can either be expressed in the CIDR format or as an IP address. As only inbound rules are supported, `ExternalAddress` resources cannot be the source IP addresses of an external access rule. To match all source addresses, specify `0.0.0.0/0`."
        },
        "sourcePorts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of source ports to which the external access rule applies. This field is only applicable for the UDP or TCP protocol. Each entry must be either an integer or a range. For example: `[\"22\"]`, `[\"80\",\"443\"]`, or `[\"12345-12349\"]`. To match all source ports, specify `[\"0-65535\"]`."
        }
      },
      "requiredInputs": [
        "externalAccessRuleId",
        "networkPolicyId"
      ]
    },
    "google-native:vmwareengine/v1:ExternalAddress": {
      "description": "Creates a new `ExternalAddress` resource in a given private cloud. The network policy that corresponds to the private cloud must have the external IP address network service enabled (`NetworkPolicy.external_ip`).\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "description": {
          "type": "string",
          "description": "User-provided description for this resource."
        },
        "externalAddressId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `ExternalAddress` to be created. This identifier must be unique among `ExternalAddress` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "externalIp": {
          "type": "string",
          "description": "The external IP address of a workload VM."
        },
        "internalIp": {
          "type": "string",
          "description": "The internal IP address of a workload VM."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of this external IP address. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`"
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The state of the resource."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "externalAddressId",
        "externalIp",
        "internalIp",
        "location",
        "name",
        "privateCloudId",
        "project",
        "state",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-provided description for this resource."
        },
        "externalAddressId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `ExternalAddress` to be created. This identifier must be unique among `ExternalAddress` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "internalIp": {
          "type": "string",
          "description": "The internal IP address of a workload VM."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "externalAddressId",
        "privateCloudId"
      ]
    },
    "google-native:vmwareengine/v1:HcxActivationKey": {
      "description": "Creates a new HCX activation key in a given private cloud.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "activationKey": {
          "type": "string",
          "description": "HCX activation key."
        },
        "createTime": {
          "type": "string",
          "description": "Creation time of HCX activation key."
        },
        "hcxActivationKeyId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `HcxActivationKey` to be created. This identifier must be unique among `HcxActivationKey` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of this HcxActivationKey. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1/privateClouds/my-cloud/hcxActivationKeys/my-key`"
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "State of HCX activation key."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        }
      },
      "type": "object",
      "required": [
        "activationKey",
        "createTime",
        "hcxActivationKeyId",
        "location",
        "name",
        "privateCloudId",
        "project",
        "state",
        "uid"
      ],
      "inputProperties": {
        "hcxActivationKeyId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `HcxActivationKey` to be created. This identifier must be unique among `HcxActivationKey` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        }
      },
      "requiredInputs": [
        "hcxActivationKeyId",
        "privateCloudId"
      ]
    },
    "google-native:vmwareengine/v1:LoggingServer": {
      "description": "Create a new logging server for a given private cloud.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "hostname": {
          "type": "string",
          "description": "Fully-qualified domain name (FQDN) or IP Address of the logging server."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "loggingServerId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `LoggingServer` to be created. This identifier must be unique among `LoggingServer` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of this logging server. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`"
        },
        "port": {
          "type": "integer",
          "description": "Port number at which the logging server receives logs."
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "Protocol used by vCenter to send logs to a logging server."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceType": {
          "type": "string",
          "description": "The type of component that produces logs that will be forwarded to this logging server."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "hostname",
        "location",
        "loggingServerId",
        "name",
        "port",
        "privateCloudId",
        "project",
        "protocol",
        "sourceType",
        "uid",
        "updateTime"
      ],
      "inputProperties": {
        "hostname": {
          "type": "string",
          "description": "Fully-qualified domain name (FQDN) or IP Address of the logging server."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "loggingServerId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `LoggingServer` to be created. This identifier must be unique among `LoggingServer` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "port": {
          "type": "integer",
          "description": "Port number at which the logging server receives logs."
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "protocol": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:LoggingServerProtocol",
          "description": "Protocol used by vCenter to send logs to a logging server."
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "sourceType": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:LoggingServerSourceType",
          "description": "The type of component that produces logs that will be forwarded to this logging server."
        }
      },
      "requiredInputs": [
        "hostname",
        "loggingServerId",
        "port",
        "privateCloudId",
        "protocol",
        "sourceType"
      ]
    },
    "google-native:vmwareengine/v1:ManagementDnsZoneBinding": {
      "description": "Creates a new `ManagementDnsZoneBinding` resource in a private cloud. This RPC creates the DNS binding and the resource that represents the DNS binding of the consumer VPC network to the management DNS zone. A management DNS zone is the Cloud DNS cross-project binding zone that VMware Engine creates for each private cloud. It contains FQDNs and corresponding IP addresses for the private cloud's ESXi hosts and management VM appliances like vCenter and NSX Manager.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "description": {
          "type": "string",
          "description": "User-provided description for this resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementDnsZoneBindingId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `ManagementDnsZoneBinding` resource to be created. This identifier must be unique among `ManagementDnsZoneBinding` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of this binding. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`"
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "The state of the resource."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "Network to bind is a VMware Engine network. Specify the name in the following form for VMware engine network: `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`. `{project}` can either be a project number or a project ID."
        },
        "vpcNetwork": {
          "type": "string",
          "description": "Network to bind is a standard consumer VPC. Specify the name in the following form for consumer VPC network: `projects/{project}/global/networks/{network_id}`. `{project}` can either be a project number or a project ID."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "managementDnsZoneBindingId",
        "name",
        "privateCloudId",
        "project",
        "state",
        "uid",
        "updateTime",
        "vmwareEngineNetwork",
        "vpcNetwork"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-provided description for this resource."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementDnsZoneBindingId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the `ManagementDnsZoneBinding` resource to be created. This identifier must be unique among `ManagementDnsZoneBinding` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "Network to bind is a VMware Engine network. Specify the name in the following form for VMware engine network: `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`. `{project}` can either be a project number or a project ID."
        },
        "vpcNetwork": {
          "type": "string",
          "description": "Network to bind is a standard consumer VPC. Specify the name in the following form for consumer VPC network: `projects/{project}/global/networks/{network_id}`. `{project}` can either be a project number or a project ID."
        }
      },
      "requiredInputs": [
        "managementDnsZoneBindingId",
        "privateCloudId"
      ]
    },
    "google-native:vmwareengine/v1:NetworkPeering": {
      "description": "Creates a new network peering between the peer network and VMware Engine network provided in a `NetworkPeering` resource.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description for this network peering."
        },
        "exchangeSubnetRoutes": {
          "type": "boolean",
          "description": "Optional. True if full mesh connectivity is created and managed automatically between peered networks; false otherwise. Currently this field is always true because Google Compute Engine automatically creates and manages subnetwork routes between two VPC networks when peering state is 'ACTIVE'."
        },
        "exportCustomRoutes": {
          "type": "boolean",
          "description": "Optional. True if custom routes are exported to the peered network; false otherwise. The default value is true."
        },
        "exportCustomRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Optional. True if all subnet routes with a public IP address range are exported; false otherwise. The default value is true. IPv4 special-use ranges (https://en.wikipedia.org/wiki/IPv4#Special_addresses) are always exported to peers and are not controlled by this field."
        },
        "importCustomRoutes": {
          "type": "boolean",
          "description": "Optional. True if custom routes are imported from the peered network; false otherwise. The default value is true."
        },
        "importCustomRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Optional. True if all subnet routes with public IP address range are imported; false otherwise. The default value is true. IPv4 special-use ranges (https://en.wikipedia.org/wiki/IPv4#Special_addresses) are always imported to peers and are not controlled by this field."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the network peering. Resource names are scheme-less URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/global/networkPeerings/my-peering`"
        },
        "networkPeeringId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the new `NetworkPeering`. This identifier must be unique among `NetworkPeering` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "peerMtu": {
          "type": "integer",
          "description": "Optional. Maximum transmission unit (MTU) in bytes. The default value is `1500`. If a value of `0` is provided for this field, VMware Engine uses the default value instead."
        },
        "peerNetwork": {
          "type": "string",
          "description": "The relative resource name of the network to peer with a standard VMware Engine network. The provided network can be a consumer VPC network or another standard VMware Engine network. If the `peer_network_type` is VMWARE_ENGINE_NETWORK, specify the name in the form: `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`. Otherwise specify the name in the form: `projects/{project}/global/networks/{network_id}`, where `{project}` can either be a project number or a project ID."
        },
        "peerNetworkType": {
          "type": "string",
          "description": "The type of the network to peer with the VMware Engine network."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "State of the network peering. This field has a value of 'ACTIVE' when there's a matching configuration in the peer network. New values may be added to this enum when appropriate."
        },
        "stateDetails": {
          "type": "string",
          "description": "Output Only. Details about the current state of the network peering."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "The relative resource name of the VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}` can either be a project number or a project ID."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "exchangeSubnetRoutes",
        "exportCustomRoutes",
        "exportCustomRoutesWithPublicIp",
        "importCustomRoutes",
        "importCustomRoutesWithPublicIp",
        "name",
        "networkPeeringId",
        "peerMtu",
        "peerNetwork",
        "peerNetworkType",
        "project",
        "state",
        "stateDetails",
        "uid",
        "updateTime",
        "vmwareEngineNetwork"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description for this network peering."
        },
        "exchangeSubnetRoutes": {
          "type": "boolean",
          "description": "Optional. True if full mesh connectivity is created and managed automatically between peered networks; false otherwise. Currently this field is always true because Google Compute Engine automatically creates and manages subnetwork routes between two VPC networks when peering state is 'ACTIVE'."
        },
        "exportCustomRoutes": {
          "type": "boolean",
          "description": "Optional. True if custom routes are exported to the peered network; false otherwise. The default value is true."
        },
        "exportCustomRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Optional. True if all subnet routes with a public IP address range are exported; false otherwise. The default value is true. IPv4 special-use ranges (https://en.wikipedia.org/wiki/IPv4#Special_addresses) are always exported to peers and are not controlled by this field."
        },
        "importCustomRoutes": {
          "type": "boolean",
          "description": "Optional. True if custom routes are imported from the peered network; false otherwise. The default value is true."
        },
        "importCustomRoutesWithPublicIp": {
          "type": "boolean",
          "description": "Optional. True if all subnet routes with public IP address range are imported; false otherwise. The default value is true. IPv4 special-use ranges (https://en.wikipedia.org/wiki/IPv4#Special_addresses) are always imported to peers and are not controlled by this field."
        },
        "networkPeeringId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the new `NetworkPeering`. This identifier must be unique among `NetworkPeering` resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "peerMtu": {
          "type": "integer",
          "description": "Optional. Maximum transmission unit (MTU) in bytes. The default value is `1500`. If a value of `0` is provided for this field, VMware Engine uses the default value instead."
        },
        "peerNetwork": {
          "type": "string",
          "description": "The relative resource name of the network to peer with a standard VMware Engine network. The provided network can be a consumer VPC network or another standard VMware Engine network. If the `peer_network_type` is VMWARE_ENGINE_NETWORK, specify the name in the form: `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`. Otherwise specify the name in the form: `projects/{project}/global/networks/{network_id}`, where `{project}` can either be a project number or a project ID."
        },
        "peerNetworkType": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkPeeringPeerNetworkType",
          "description": "The type of the network to peer with the VMware Engine network."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "The relative resource name of the VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}` can either be a project number or a project ID."
        }
      },
      "requiredInputs": [
        "networkPeeringId",
        "peerNetwork",
        "peerNetworkType",
        "vmwareEngineNetwork"
      ]
    },
    "google-native:vmwareengine/v1:NetworkPolicy": {
      "description": "Creates a new network policy in a given VMware Engine network of a project and location (region). A new network policy cannot be created if another network policy already exists in the same scope.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description for this network policy."
        },
        "edgeServicesCidr": {
          "type": "string",
          "description": "IP address range in CIDR notation used to create internet access and external IP access. An RFC 1918 CIDR block, with a \"/26\" prefix, is required. The range cannot overlap with any prefixes either in the consumer VPC network or in use by the private clouds attached to that VPC network."
        },
        "externalIp": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkServiceResponse",
          "description": "Network service that allows External IP addresses to be assigned to VMware workloads. This service can only be enabled when `internet_access` is also enabled."
        },
        "internetAccess": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkServiceResponse",
          "description": "Network service that allows VMware workloads to access the internet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of this network policy. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`"
        },
        "networkPolicyId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the network policy to be created. This identifier must be unique within parent `projects/{my-project}/locations/{us-central1}/networkPolicies` and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "Optional. The relative resource name of the VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}` can either be a project number or a project ID."
        },
        "vmwareEngineNetworkCanonical": {
          "type": "string",
          "description": "The canonical name of the VMware Engine network in the form: `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "edgeServicesCidr",
        "externalIp",
        "internetAccess",
        "location",
        "name",
        "networkPolicyId",
        "project",
        "uid",
        "updateTime",
        "vmwareEngineNetwork",
        "vmwareEngineNetworkCanonical"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description for this network policy."
        },
        "edgeServicesCidr": {
          "type": "string",
          "description": "IP address range in CIDR notation used to create internet access and external IP access. An RFC 1918 CIDR block, with a \"/26\" prefix, is required. The range cannot overlap with any prefixes either in the consumer VPC network or in use by the private clouds attached to that VPC network."
        },
        "externalIp": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkService",
          "description": "Network service that allows External IP addresses to be assigned to VMware workloads. This service can only be enabled when `internet_access` is also enabled."
        },
        "internetAccess": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkService",
          "description": "Network service that allows VMware workloads to access the internet."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "networkPolicyId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the network policy to be created. This identifier must be unique within parent `projects/{my-project}/locations/{us-central1}/networkPolicies` and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "Optional. The relative resource name of the VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}` can either be a project number or a project ID."
        }
      },
      "requiredInputs": [
        "edgeServicesCidr",
        "networkPolicyId"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloud": {
      "description": "Creates a new `PrivateCloud` resource in a given project and location. Private clouds of type `STANDARD` and `TIME_LIMITED` are zonal resources, `STRETCHED` private clouds are regional. Creating a private cloud also creates a [management cluster](https://cloud.google.com/vmware-engine/docs/concepts-vmware-components) for that private cloud.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when the resource was scheduled for deletion."
        },
        "description": {
          "type": "string",
          "description": "User-provided description for this private cloud."
        },
        "expireTime": {
          "type": "string",
          "description": "Time when the resource will be irreversibly deleted."
        },
        "hcx": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:HcxResponse",
          "description": "HCX appliance."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementCluster": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:ManagementClusterResponse",
          "description": "Input only. The management cluster for this private cloud. This field is required during creation of the private cloud to provide details for the default cluster. The following fields can't be changed after private cloud creation: `ManagementCluster.clusterId`, `ManagementCluster.nodeTypeId`."
        },
        "name": {
          "type": "string",
          "description": "The resource name of this private cloud. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`"
        },
        "networkConfig": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkConfigResponse",
          "description": "Network configuration of the private cloud."
        },
        "nsx": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:NsxResponse",
          "description": "NSX appliance."
        },
        "privateCloudId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the private cloud to be created. This identifier must be unique among each `PrivateCloud` within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "State of the resource. New values may be added to this enum when appropriate."
        },
        "type": {
          "type": "string",
          "description": "Optional. Type of the private cloud. Defaults to STANDARD."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        },
        "vcenter": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:VcenterResponse",
          "description": "Vcenter appliance."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "deleteTime",
        "description",
        "expireTime",
        "hcx",
        "location",
        "managementCluster",
        "name",
        "networkConfig",
        "nsx",
        "privateCloudId",
        "project",
        "state",
        "type",
        "uid",
        "updateTime",
        "vcenter"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-provided description for this private cloud."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "managementCluster": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:ManagementCluster",
          "description": "Input only. The management cluster for this private cloud. This field is required during creation of the private cloud to provide details for the default cluster. The following fields can't be changed after private cloud creation: `ManagementCluster.clusterId`, `ManagementCluster.nodeTypeId`."
        },
        "networkConfig": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkConfig",
          "description": "Network configuration of the private cloud."
        },
        "privateCloudId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the private cloud to be created. This identifier must be unique among each `PrivateCloud` within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:PrivateCloudType",
          "description": "Optional. Type of the private cloud. Defaults to STANDARD."
        }
      },
      "requiredInputs": [
        "managementCluster",
        "networkConfig",
        "privateCloudId"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudClusterIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudClusterIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudClusterIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "clusterId",
        "etag",
        "location",
        "privateCloudId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "clusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "clusterId",
        "privateCloudId"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudHcxActivationKeyIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudHcxActivationKeyIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudHcxActivationKeyIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hcxActivationKeyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "hcxActivationKeyId",
        "location",
        "privateCloudId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "hcxActivationKeyId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "hcxActivationKeyId",
        "privateCloudId"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:vmwareengine/v1:PrivateCloudIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "privateCloudId",
        "project",
        "version"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateCloudId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        }
      },
      "requiredInputs": [
        "privateCloudId"
      ]
    },
    "google-native:vmwareengine/v1:PrivateConnection": {
      "description": "Creates a new private connection that can be used for accessing private Clouds.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "description": {
          "type": "string",
          "description": "Optional. User-provided description for this private connection."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the private connection. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1/privateConnections/my-connection`"
        },
        "peeringId": {
          "type": "string",
          "description": "VPC network peering id between given network VPC and VMwareEngineNetwork."
        },
        "peeringState": {
          "type": "string",
          "description": "Peering state between service network and VMware Engine network."
        },
        "privateConnectionId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the new private connection. This identifier must be unique among private connection resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routingMode": {
          "type": "string",
          "description": "Optional. Routing Mode. Default value is set to GLOBAL. For type = PRIVATE_SERVICE_ACCESS, this field can be set to GLOBAL or REGIONAL, for other types only GLOBAL is supported."
        },
        "serviceNetwork": {
          "type": "string",
          "description": "Service network to create private connection. Specify the name in the following form: `projects/{project}/global/networks/{network_id}` For type = PRIVATE_SERVICE_ACCESS, this field represents servicenetworking VPC, e.g. projects/project-tp/global/networks/servicenetworking. For type = NETAPP_CLOUD_VOLUME, this field represents NetApp service VPC, e.g. projects/project-tp/global/networks/netapp-tenant-vpc. For type = DELL_POWERSCALE, this field represent Dell service VPC, e.g. projects/project-tp/global/networks/dell-tenant-vpc. For type= THIRD_PARTY_SERVICE, this field could represent a consumer VPC or any other producer VPC to which the VMware Engine Network needs to be connected, e.g. projects/project/global/networks/vpc."
        },
        "state": {
          "type": "string",
          "description": "State of the private connection."
        },
        "type": {
          "type": "string",
          "description": "Private connection type."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "The relative resource name of Legacy VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}`, `{location}` will be same as specified in private connection resource name and `{vmware_engine_network_id}` will be in the form of `{location}`-default e.g. projects/project/locations/us-central1/vmwareEngineNetworks/us-central1-default."
        },
        "vmwareEngineNetworkCanonical": {
          "type": "string",
          "description": "The canonical name of the VMware Engine network in the form: `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "location",
        "name",
        "peeringId",
        "peeringState",
        "privateConnectionId",
        "project",
        "routingMode",
        "serviceNetwork",
        "state",
        "type",
        "uid",
        "updateTime",
        "vmwareEngineNetwork",
        "vmwareEngineNetworkCanonical"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Optional. User-provided description for this private connection."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "privateConnectionId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the new private connection. This identifier must be unique among private connection resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "routingMode": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:PrivateConnectionRoutingMode",
          "description": "Optional. Routing Mode. Default value is set to GLOBAL. For type = PRIVATE_SERVICE_ACCESS, this field can be set to GLOBAL or REGIONAL, for other types only GLOBAL is supported."
        },
        "serviceNetwork": {
          "type": "string",
          "description": "Service network to create private connection. Specify the name in the following form: `projects/{project}/global/networks/{network_id}` For type = PRIVATE_SERVICE_ACCESS, this field represents servicenetworking VPC, e.g. projects/project-tp/global/networks/servicenetworking. For type = NETAPP_CLOUD_VOLUME, this field represents NetApp service VPC, e.g. projects/project-tp/global/networks/netapp-tenant-vpc. For type = DELL_POWERSCALE, this field represent Dell service VPC, e.g. projects/project-tp/global/networks/dell-tenant-vpc. For type= THIRD_PARTY_SERVICE, this field could represent a consumer VPC or any other producer VPC to which the VMware Engine Network needs to be connected, e.g. projects/project/global/networks/vpc."
        },
        "type": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:PrivateConnectionType",
          "description": "Private connection type."
        },
        "vmwareEngineNetwork": {
          "type": "string",
          "description": "The relative resource name of Legacy VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}`, `{location}` will be same as specified in private connection resource name and `{vmware_engine_network_id}` will be in the form of `{location}`-default e.g. projects/project/locations/us-central1/vmwareEngineNetworks/us-central1-default."
        }
      },
      "requiredInputs": [
        "privateConnectionId",
        "serviceNetwork",
        "type",
        "vmwareEngineNetwork"
      ]
    },
    "google-native:vmwareengine/v1:VmwareEngineNetwork": {
      "description": "Creates a new VMware Engine network that can be used by a private cloud.\nAuto-naming is currently not supported for this resource.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "Creation time of this resource."
        },
        "description": {
          "type": "string",
          "description": "User-provided description for this VMware Engine network."
        },
        "etag": {
          "type": "string",
          "description": "Checksum that may be sent on update and delete requests to ensure that the user-provided value is up to date before the server processes a request. The server computes checksums based on the value of other fields in the request."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the VMware Engine network. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/global/vmwareEngineNetworks/my-network`"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "state": {
          "type": "string",
          "description": "State of the VMware Engine network."
        },
        "type": {
          "type": "string",
          "description": "VMware Engine network type."
        },
        "uid": {
          "type": "string",
          "description": "System-generated unique identifier for the resource."
        },
        "updateTime": {
          "type": "string",
          "description": "Last update time of this resource."
        },
        "vmwareEngineNetworkId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the new VMware Engine network. This identifier must be unique among VMware Engine network resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * For networks of type LEGACY, adheres to the format: `{region-id}-default`. Replace `{region-id}` with the region where you want to create the VMware Engine network. For example, \"us-central1-default\". * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        },
        "vpcNetworks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:VpcNetworkResponse"
          },
          "description": "VMware Engine service VPC networks that provide connectivity from a private cloud to customer projects, the internet, and other Google Cloud services."
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "etag",
        "location",
        "name",
        "project",
        "state",
        "type",
        "uid",
        "updateTime",
        "vmwareEngineNetworkId",
        "vpcNetworks"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "User-provided description for this VMware Engine network."
        },
        "etag": {
          "type": "string",
          "description": "Checksum that may be sent on update and delete requests to ensure that the user-provided value is up to date before the server processes a request. The server computes checksums based on the value of other fields in the request."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server guarantees that a request doesn't result in creation of duplicate commitments for at least 60 minutes. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "type": {
          "$ref": "#/types/google-native:vmwareengine%2Fv1:VmwareEngineNetworkType",
          "description": "VMware Engine network type."
        },
        "vmwareEngineNetworkId": {
          "type": "string",
          "description": "Required. The user-provided identifier of the new VMware Engine network. This identifier must be unique among VMware Engine network resources within the parent and becomes the final token in the name URI. The identifier must meet the following requirements: * For networks of type LEGACY, adheres to the format: `{region-id}-default`. Replace `{region-id}` with the region where you want to create the VMware Engine network. For example, \"us-central1-default\". * Only contains 1-63 alphanumeric characters and hyphens * Begins with an alphabetical character * Ends with a non-hyphen character * Not formatted as a UUID * Complies with [RFC 1034](https://datatracker.ietf.org/doc/html/rfc1034) (section 3.5)",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "type",
        "vmwareEngineNetworkId"
      ]
    },
    "google-native:vpcaccess/v1:Connector": {
      "description": "Creates a Serverless VPC Access connector, returns an operation.",
      "properties": {
        "connectedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of projects using the connector."
        },
        "connectorId": {
          "type": "string",
          "description": "Required. The ID to use for this connector.",
          "replaceOnChanges": true
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of VM Instance underlying connector. Default is e2-micro"
        },
        "maxInstances": {
          "type": "integer",
          "description": "Maximum value of instances in autoscaling group underlying the connector."
        },
        "maxThroughput": {
          "type": "integer",
          "description": "Maximum throughput of the connector in Mbps. Default is 300, max is 1000. If both max-throughput and max-instances are provided, max-instances takes precedence over max-throughput."
        },
        "minInstances": {
          "type": "integer",
          "description": "Minimum value of instances in autoscaling group underlying the connector."
        },
        "minThroughput": {
          "type": "integer",
          "description": "Minimum throughput of the connector in Mbps. Default and min is 200. If both min-throughput and min-instances are provided, min-instances takes precedence over min-throughput."
        },
        "name": {
          "type": "string",
          "description": "The resource name in the format `projects/*/locations/*/connectors/*`."
        },
        "network": {
          "type": "string",
          "description": "Name of a VPC network."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the VPC access connector."
        },
        "subnet": {
          "$ref": "#/types/google-native:vpcaccess%2Fv1:SubnetResponse",
          "description": "The subnet in which to house the VPC Access Connector."
        }
      },
      "type": "object",
      "required": [
        "connectedProjects",
        "connectorId",
        "ipCidrRange",
        "location",
        "machineType",
        "maxInstances",
        "maxThroughput",
        "minInstances",
        "minThroughput",
        "name",
        "network",
        "project",
        "state",
        "subnet"
      ],
      "inputProperties": {
        "connectorId": {
          "type": "string",
          "description": "Required. The ID to use for this connector.",
          "replaceOnChanges": true
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of VM Instance underlying connector. Default is e2-micro"
        },
        "maxInstances": {
          "type": "integer",
          "description": "Maximum value of instances in autoscaling group underlying the connector."
        },
        "maxThroughput": {
          "type": "integer",
          "description": "Maximum throughput of the connector in Mbps. Default is 300, max is 1000. If both max-throughput and max-instances are provided, max-instances takes precedence over max-throughput."
        },
        "minInstances": {
          "type": "integer",
          "description": "Minimum value of instances in autoscaling group underlying the connector."
        },
        "minThroughput": {
          "type": "integer",
          "description": "Minimum throughput of the connector in Mbps. Default and min is 200. If both min-throughput and min-instances are provided, min-instances takes precedence over min-throughput."
        },
        "name": {
          "type": "string",
          "description": "The resource name in the format `projects/*/locations/*/connectors/*`."
        },
        "network": {
          "type": "string",
          "description": "Name of a VPC network."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subnet": {
          "$ref": "#/types/google-native:vpcaccess%2Fv1:Subnet",
          "description": "The subnet in which to house the VPC Access Connector."
        }
      },
      "requiredInputs": [
        "connectorId"
      ]
    },
    "google-native:vpcaccess/v1beta1:Connector": {
      "description": "Creates a Serverless VPC Access connector, returns an operation.",
      "properties": {
        "connectedProjects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of projects using the connector."
        },
        "connectorId": {
          "type": "string",
          "description": "Required. The ID to use for this connector.",
          "replaceOnChanges": true
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of VM Instance underlying connector. Default is e2-micro"
        },
        "maxInstances": {
          "type": "integer",
          "description": "Maximum value of instances in autoscaling group underlying the connector."
        },
        "maxThroughput": {
          "type": "integer",
          "description": "Maximum throughput of the connector in Mbps. Default is 300, max is 1000. If both max-throughput and max-instances are provided, max-instances takes precedence over max-throughput."
        },
        "minInstances": {
          "type": "integer",
          "description": "Minimum value of instances in autoscaling group underlying the connector."
        },
        "minThroughput": {
          "type": "integer",
          "description": "Minimum throughput of the connector in Mbps. Default and min is 200. If both min-throughput and min-instances are provided, min-instances takes precedence over min-throughput."
        },
        "name": {
          "type": "string",
          "description": "The resource name in the format `projects/*/locations/*/connectors/*`."
        },
        "network": {
          "type": "string",
          "description": "Name of a VPC network."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "State of the VPC access connector."
        },
        "subnet": {
          "$ref": "#/types/google-native:vpcaccess%2Fv1beta1:SubnetResponse",
          "description": "The subnet in which to house the VPC Access Connector."
        }
      },
      "type": "object",
      "required": [
        "connectedProjects",
        "connectorId",
        "ipCidrRange",
        "location",
        "machineType",
        "maxInstances",
        "maxThroughput",
        "minInstances",
        "minThroughput",
        "name",
        "network",
        "project",
        "state",
        "subnet"
      ],
      "inputProperties": {
        "connectorId": {
          "type": "string",
          "description": "Required. The ID to use for this connector.",
          "replaceOnChanges": true
        },
        "ipCidrRange": {
          "type": "string",
          "description": "The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "machineType": {
          "type": "string",
          "description": "Machine type of VM Instance underlying connector. Default is e2-micro"
        },
        "maxInstances": {
          "type": "integer",
          "description": "Maximum value of instances in autoscaling group underlying the connector."
        },
        "maxThroughput": {
          "type": "integer",
          "description": "Maximum throughput of the connector in Mbps. Default is 300, max is 1000. If both max-throughput and max-instances are provided, max-instances takes precedence over max-throughput."
        },
        "minInstances": {
          "type": "integer",
          "description": "Minimum value of instances in autoscaling group underlying the connector."
        },
        "minThroughput": {
          "type": "integer",
          "description": "Minimum throughput of the connector in Mbps. Default and min is 200. If both min-throughput and min-instances are provided, min-instances takes precedence over min-throughput."
        },
        "name": {
          "type": "string",
          "description": "The resource name in the format `projects/*/locations/*/connectors/*`."
        },
        "network": {
          "type": "string",
          "description": "Name of a VPC network."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subnet": {
          "$ref": "#/types/google-native:vpcaccess%2Fv1beta1:Subnet",
          "description": "The subnet in which to house the VPC Access Connector."
        }
      },
      "requiredInputs": [
        "connectorId"
      ]
    },
    "google-native:websecurityscanner/v1:ScanConfig": {
      "description": "Creates a new ScanConfig.",
      "properties": {
        "authentication": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:AuthenticationResponse",
          "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
        },
        "blacklistPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls"
        },
        "displayName": {
          "type": "string",
          "description": "The user provided display name of the ScanConfig."
        },
        "exportToSecurityCommandCenter": {
          "type": "string",
          "description": "Controls export of scan configurations and results to Security Command Center."
        },
        "ignoreHttpStatusErrors": {
          "type": "boolean",
          "description": "Whether to keep scanning even if most requests return HTTP error codes."
        },
        "managedScan": {
          "type": "boolean",
          "description": "Whether the scan config is managed by Web Security Scanner, output only."
        },
        "maxQps": {
          "type": "integer",
          "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "riskLevel": {
          "type": "string",
          "description": "The risk level selected for the scan"
        },
        "schedule": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:ScheduleResponse",
          "description": "The schedule of the ScanConfig."
        },
        "startingUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The starting URLs from which the scanner finds site pages."
        },
        "staticIpScan": {
          "type": "boolean",
          "description": "Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses."
        },
        "userAgent": {
          "type": "string",
          "description": "The user agent used during scanning."
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "blacklistPatterns",
        "displayName",
        "exportToSecurityCommandCenter",
        "ignoreHttpStatusErrors",
        "managedScan",
        "maxQps",
        "name",
        "project",
        "riskLevel",
        "schedule",
        "startingUrls",
        "staticIpScan",
        "userAgent"
      ],
      "inputProperties": {
        "authentication": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:Authentication",
          "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
        },
        "blacklistPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls"
        },
        "displayName": {
          "type": "string",
          "description": "The user provided display name of the ScanConfig."
        },
        "exportToSecurityCommandCenter": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:ScanConfigExportToSecurityCommandCenter",
          "description": "Controls export of scan configurations and results to Security Command Center."
        },
        "ignoreHttpStatusErrors": {
          "type": "boolean",
          "description": "Whether to keep scanning even if most requests return HTTP error codes."
        },
        "managedScan": {
          "type": "boolean",
          "description": "Whether the scan config is managed by Web Security Scanner, output only."
        },
        "maxQps": {
          "type": "integer",
          "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "riskLevel": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:ScanConfigRiskLevel",
          "description": "The risk level selected for the scan"
        },
        "schedule": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:Schedule",
          "description": "The schedule of the ScanConfig."
        },
        "startingUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The starting URLs from which the scanner finds site pages."
        },
        "staticIpScan": {
          "type": "boolean",
          "description": "Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses."
        },
        "userAgent": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1:ScanConfigUserAgent",
          "description": "The user agent used during scanning."
        }
      },
      "requiredInputs": [
        "displayName",
        "startingUrls"
      ]
    },
    "google-native:websecurityscanner/v1alpha:ScanConfig": {
      "description": "Creates a new ScanConfig.",
      "properties": {
        "authentication": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:AuthenticationResponse",
          "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
        },
        "blacklistPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls"
        },
        "displayName": {
          "type": "string",
          "description": "The user provided display name of the ScanConfig."
        },
        "latestRun": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScanRunResponse",
          "description": "Latest ScanRun if available."
        },
        "maxQps": {
          "type": "integer",
          "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schedule": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScheduleResponse",
          "description": "The schedule of the ScanConfig."
        },
        "startingUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The starting URLs from which the scanner finds site pages."
        },
        "targetPlatforms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default."
        },
        "userAgent": {
          "type": "string",
          "description": "The user agent used during scanning."
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "blacklistPatterns",
        "displayName",
        "latestRun",
        "maxQps",
        "name",
        "project",
        "schedule",
        "startingUrls",
        "targetPlatforms",
        "userAgent"
      ],
      "inputProperties": {
        "authentication": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:Authentication",
          "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
        },
        "blacklistPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls"
        },
        "displayName": {
          "type": "string",
          "description": "The user provided display name of the ScanConfig."
        },
        "latestRun": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScanRun",
          "description": "Latest ScanRun if available."
        },
        "maxQps": {
          "type": "integer",
          "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "schedule": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:Schedule",
          "description": "The schedule of the ScanConfig."
        },
        "startingUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The starting URLs from which the scanner finds site pages."
        },
        "targetPlatforms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScanConfigTargetPlatformsItem"
          },
          "description": "Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default."
        },
        "userAgent": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScanConfigUserAgent",
          "description": "The user agent used during scanning."
        }
      },
      "requiredInputs": [
        "displayName",
        "startingUrls"
      ]
    },
    "google-native:websecurityscanner/v1beta:ScanConfig": {
      "description": "Creates a new ScanConfig.",
      "properties": {
        "authentication": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:AuthenticationResponse",
          "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
        },
        "blacklistPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls"
        },
        "displayName": {
          "type": "string",
          "description": "The user provided display name of the ScanConfig."
        },
        "exportToSecurityCommandCenter": {
          "type": "string",
          "description": "Controls export of scan configurations and results to Security Command Center."
        },
        "ignoreHttpStatusErrors": {
          "type": "boolean",
          "description": "Whether to keep scanning even if most requests return HTTP error codes."
        },
        "latestRun": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunResponse",
          "description": "Latest ScanRun if available."
        },
        "managedScan": {
          "type": "boolean",
          "description": "Whether the scan config is managed by Web Security Scanner, output only."
        },
        "maxQps": {
          "type": "integer",
          "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "riskLevel": {
          "type": "string",
          "description": "The risk level selected for the scan"
        },
        "schedule": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScheduleResponse",
          "description": "The schedule of the ScanConfig."
        },
        "startingUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The starting URLs from which the scanner finds site pages."
        },
        "staticIpScan": {
          "type": "boolean",
          "description": "Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses."
        },
        "targetPlatforms": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default."
        },
        "userAgent": {
          "type": "string",
          "description": "The user agent used during scanning."
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "blacklistPatterns",
        "displayName",
        "exportToSecurityCommandCenter",
        "ignoreHttpStatusErrors",
        "latestRun",
        "managedScan",
        "maxQps",
        "name",
        "project",
        "riskLevel",
        "schedule",
        "startingUrls",
        "staticIpScan",
        "targetPlatforms",
        "userAgent"
      ],
      "inputProperties": {
        "authentication": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:Authentication",
          "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
        },
        "blacklistPatterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls"
        },
        "displayName": {
          "type": "string",
          "description": "The user provided display name of the ScanConfig."
        },
        "exportToSecurityCommandCenter": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanConfigExportToSecurityCommandCenter",
          "description": "Controls export of scan configurations and results to Security Command Center."
        },
        "ignoreHttpStatusErrors": {
          "type": "boolean",
          "description": "Whether to keep scanning even if most requests return HTTP error codes."
        },
        "latestRun": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRun",
          "description": "Latest ScanRun if available."
        },
        "managedScan": {
          "type": "boolean",
          "description": "Whether the scan config is managed by Web Security Scanner, output only."
        },
        "maxQps": {
          "type": "integer",
          "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error."
        },
        "name": {
          "type": "string",
          "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "riskLevel": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanConfigRiskLevel",
          "description": "The risk level selected for the scan"
        },
        "schedule": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:Schedule",
          "description": "The schedule of the ScanConfig."
        },
        "startingUrls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The starting URLs from which the scanner finds site pages."
        },
        "staticIpScan": {
          "type": "boolean",
          "description": "Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses."
        },
        "targetPlatforms": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanConfigTargetPlatformsItem"
          },
          "description": "Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default."
        },
        "userAgent": {
          "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanConfigUserAgent",
          "description": "The user agent used during scanning."
        }
      },
      "requiredInputs": [
        "displayName",
        "startingUrls"
      ]
    },
    "google-native:workflowexecutions/v1:Execution": {
      "description": "Creates a new execution using the latest revision of the given workflow.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "argument": {
          "type": "string",
          "description": "Input parameters of the execution represented as a JSON string. The size limit is 32KB. *Note*: If you are using the REST API directly to run your workflow, you must escape any JSON string value of `argument`. Example: `'{\"argument\":\"{\\\"firstName\\\":\\\"FIRST\\\",\\\"lastName\\\":\\\"LAST\\\"}\"}'`"
        },
        "callLogLevel": {
          "type": "string",
          "description": "The call logging level associated to this execution."
        },
        "duration": {
          "type": "string",
          "description": "Measures the duration of the execution."
        },
        "endTime": {
          "type": "string",
          "description": "Marks the end of execution, successful or not."
        },
        "error": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1:ErrorResponse",
          "description": "The error which caused the execution to finish prematurely. The value is only present if the execution's state is `FAILED` or `CANCELLED`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this execution. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores, and dashes. Label keys must start with a letter. International characters are allowed. By default, labels are inherited from the workflow but are overridden by any labels associated with the execution."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the execution. Format: projects/{project}/locations/{location}/workflows/{workflow}/executions/{execution}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "result": {
          "type": "string",
          "description": "Output of the execution represented as a JSON string. The value can only be present if the execution's state is `SUCCEEDED`."
        },
        "startTime": {
          "type": "string",
          "description": "Marks the beginning of execution."
        },
        "state": {
          "type": "string",
          "description": "Current state of the execution."
        },
        "stateError": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1:StateErrorResponse",
          "description": "Error regarding the state of the Execution resource. For example, this field will have error details if the execution data is unavailable due to revoked KMS key permissions."
        },
        "status": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1:StatusResponse",
          "description": "Status tracks the current steps and progress data of this execution."
        },
        "workflowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workflowRevisionId": {
          "type": "string",
          "description": "Revision of the workflow this execution is using."
        }
      },
      "type": "object",
      "required": [
        "argument",
        "callLogLevel",
        "duration",
        "endTime",
        "error",
        "labels",
        "location",
        "name",
        "project",
        "result",
        "startTime",
        "state",
        "stateError",
        "status",
        "workflowId",
        "workflowRevisionId"
      ],
      "inputProperties": {
        "argument": {
          "type": "string",
          "description": "Input parameters of the execution represented as a JSON string. The size limit is 32KB. *Note*: If you are using the REST API directly to run your workflow, you must escape any JSON string value of `argument`. Example: `'{\"argument\":\"{\\\"firstName\\\":\\\"FIRST\\\",\\\"lastName\\\":\\\"LAST\\\"}\"}'`"
        },
        "callLogLevel": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1:ExecutionCallLogLevel",
          "description": "The call logging level associated to this execution."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this execution. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores, and dashes. Label keys must start with a letter. International characters are allowed. By default, labels are inherited from the workflow but are overridden by any labels associated with the execution."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workflowId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workflowId"
      ]
    },
    "google-native:workflowexecutions/v1beta:Execution": {
      "description": "Creates a new execution using the latest revision of the given workflow.\nAuto-naming is currently not supported for this resource.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "argument": {
          "type": "string",
          "description": "Input parameters of the execution represented as a JSON string. The size limit is 32KB. *Note*: If you are using the REST API directly to run your workflow, you must escape any JSON string value of `argument`. Example: `'{\"argument\":\"{\\\"firstName\\\":\\\"FIRST\\\",\\\"lastName\\\":\\\"LAST\\\"}\"}'`"
        },
        "callLogLevel": {
          "type": "string",
          "description": "The call logging level associated to this execution."
        },
        "endTime": {
          "type": "string",
          "description": "Marks the end of execution, successful or not."
        },
        "error": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:ErrorResponse",
          "description": "The error which caused the execution to finish prematurely. The value is only present if the execution's state is `FAILED` or `CANCELLED`."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the execution. Format: projects/{project}/locations/{location}/workflows/{workflow}/executions/{execution}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "result": {
          "type": "string",
          "description": "Output of the execution represented as a JSON string. The value can only be present if the execution's state is `SUCCEEDED`."
        },
        "startTime": {
          "type": "string",
          "description": "Marks the beginning of execution."
        },
        "state": {
          "type": "string",
          "description": "Current state of the execution."
        },
        "status": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:StatusResponse",
          "description": "Status tracks the current steps and progress data of this execution."
        },
        "workflowId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workflowRevisionId": {
          "type": "string",
          "description": "Revision of the workflow this execution is using."
        }
      },
      "type": "object",
      "required": [
        "argument",
        "callLogLevel",
        "endTime",
        "error",
        "location",
        "name",
        "project",
        "result",
        "startTime",
        "state",
        "status",
        "workflowId",
        "workflowRevisionId"
      ],
      "inputProperties": {
        "argument": {
          "type": "string",
          "description": "Input parameters of the execution represented as a JSON string. The size limit is 32KB. *Note*: If you are using the REST API directly to run your workflow, you must escape any JSON string value of `argument`. Example: `'{\"argument\":\"{\\\"firstName\\\":\\\"FIRST\\\",\\\"lastName\\\":\\\"LAST\\\"}\"}'`"
        },
        "callLogLevel": {
          "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:ExecutionCallLogLevel",
          "description": "The call logging level associated to this execution."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workflowId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workflowId"
      ]
    },
    "google-native:workflows/v1:Workflow": {
      "description": "Creates a new workflow. If a workflow with the specified name already exists in the specified project and location, the long running operation returns a ALREADY_EXISTS error.",
      "properties": {
        "callLogLevel": {
          "type": "string",
          "description": "Optional. Describes the level of platform logging to apply to calls and call responses during executions of this workflow. If both the workflow and the execution specify a logging level, the execution level takes precedence."
        },
        "createTime": {
          "type": "string",
          "description": "The timestamp for when the workflow was created. This is a workflow-wide field and is not tied to a specific revision."
        },
        "cryptoKeyName": {
          "type": "string",
          "description": "Optional. The resource name of a KMS crypto key used to encrypt or decrypt the data associated with the workflow. Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. If not provided, data associated with the workflow will not be CMEK-encrypted."
        },
        "description": {
          "type": "string",
          "description": "Description of the workflow provided by the user. Must be at most 1000 Unicode characters long. This is a workflow-wide field and is not tied to a specific revision."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this workflow. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores, and dashes. Label keys must start with a letter. International characters are allowed. This is a workflow-wide field and is not tied to a specific revision."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the workflow. Format: projects/{project}/locations/{location}/workflows/{workflow}. This is a workflow-wide field and is not tied to a specific revision."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp for the latest revision of the workflow's creation."
        },
        "revisionId": {
          "type": "string",
          "description": "The revision of the workflow. A new revision of a workflow is created as a result of updating the following properties of a workflow: - Service account - Workflow code to be executed The format is \"000001-a4d\", where the first six characters define the zero-padded revision ordinal number. They are followed by a hyphen and three hexadecimal random characters."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account associated with the latest workflow version. This service account represents the identity of the workflow and determines what permissions the workflow has. Format: projects/{project}/serviceAccounts/{account} or {account} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. The `{account}` value can be the `email` address or the `unique_id` of the service account. If not provided, workflow will use the project's default service account. Modifying this field for an existing workflow results in a new workflow revision."
        },
        "sourceContents": {
          "type": "string",
          "description": "Workflow code to be executed. The size limit is 128KB."
        },
        "state": {
          "type": "string",
          "description": "State of the workflow deployment."
        },
        "stateError": {
          "$ref": "#/types/google-native:workflows%2Fv1:StateErrorResponse",
          "description": "Error regarding the state of the workflow. For example, this field will have error details if the execution data is unavailable due to revoked KMS key permissions."
        },
        "updateTime": {
          "type": "string",
          "description": "The timestamp for when the workflow was last updated. This is a workflow-wide field and is not tied to a specific revision."
        },
        "userEnvVars": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined environment variables associated with this workflow revision. This map has a maximum length of 20. Each string can take up to 40KiB. Keys cannot be empty strings and cannot start with “GOOGLE” or “WORKFLOWS\"."
        },
        "workflowId": {
          "type": "string",
          "description": "Required. The ID of the workflow to be created. It has to fulfill the following requirements: * Must contain only letters, numbers, underscores and hyphens. * Must start with a letter. * Must be between 1-64 characters. * Must end with a number or a letter. * Must be unique within the customer project and location.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "callLogLevel",
        "createTime",
        "cryptoKeyName",
        "description",
        "labels",
        "location",
        "name",
        "project",
        "revisionCreateTime",
        "revisionId",
        "serviceAccount",
        "sourceContents",
        "state",
        "stateError",
        "updateTime",
        "userEnvVars",
        "workflowId"
      ],
      "inputProperties": {
        "callLogLevel": {
          "$ref": "#/types/google-native:workflows%2Fv1:WorkflowCallLogLevel",
          "description": "Optional. Describes the level of platform logging to apply to calls and call responses during executions of this workflow. If both the workflow and the execution specify a logging level, the execution level takes precedence."
        },
        "cryptoKeyName": {
          "type": "string",
          "description": "Optional. The resource name of a KMS crypto key used to encrypt or decrypt the data associated with the workflow. Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. If not provided, data associated with the workflow will not be CMEK-encrypted."
        },
        "description": {
          "type": "string",
          "description": "Description of the workflow provided by the user. Must be at most 1000 Unicode characters long. This is a workflow-wide field and is not tied to a specific revision."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this workflow. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores, and dashes. Label keys must start with a letter. International characters are allowed. This is a workflow-wide field and is not tied to a specific revision."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the workflow. Format: projects/{project}/locations/{location}/workflows/{workflow}. This is a workflow-wide field and is not tied to a specific revision."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account associated with the latest workflow version. This service account represents the identity of the workflow and determines what permissions the workflow has. Format: projects/{project}/serviceAccounts/{account} or {account} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. The `{account}` value can be the `email` address or the `unique_id` of the service account. If not provided, workflow will use the project's default service account. Modifying this field for an existing workflow results in a new workflow revision."
        },
        "sourceContents": {
          "type": "string",
          "description": "Workflow code to be executed. The size limit is 128KB."
        },
        "userEnvVars": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User-defined environment variables associated with this workflow revision. This map has a maximum length of 20. Each string can take up to 40KiB. Keys cannot be empty strings and cannot start with “GOOGLE” or “WORKFLOWS\"."
        },
        "workflowId": {
          "type": "string",
          "description": "Required. The ID of the workflow to be created. It has to fulfill the following requirements: * Must contain only letters, numbers, underscores and hyphens. * Must start with a letter. * Must be between 1-64 characters. * Must end with a number or a letter. * Must be unique within the customer project and location.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workflowId"
      ]
    },
    "google-native:workflows/v1beta:Workflow": {
      "description": "Creates a new workflow. If a workflow with the specified name already exists in the specified project and location, the long running operation will return ALREADY_EXISTS error.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "The timestamp of when the workflow was created."
        },
        "description": {
          "type": "string",
          "description": "Description of the workflow provided by the user. Must be at most 1000 unicode characters long."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this workflow. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores and dashes. Label keys must start with a letter. International characters are allowed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the workflow. Format: projects/{project}/locations/{location}/workflows/{workflow}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "revisionCreateTime": {
          "type": "string",
          "description": "The timestamp that the latest revision of the workflow was created."
        },
        "revisionId": {
          "type": "string",
          "description": "The revision of the workflow. A new revision of a workflow is created as a result of updating the following properties of a workflow: - Service account - Workflow code to be executed The format is \"000001-a4d\", where the first 6 characters define the zero-padded revision ordinal number. They are followed by a hyphen and 3 hexadecimal random characters."
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account associated with the latest workflow version. This service account represents the identity of the workflow and determines what permissions the workflow has. Format: projects/{project}/serviceAccounts/{account} or {account} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. The `{account}` value can be the `email` address or the `unique_id` of the service account. If not provided, workflow will use the project's default service account. Modifying this field for an existing workflow results in a new workflow revision."
        },
        "sourceContents": {
          "type": "string",
          "description": "Workflow code to be executed. The size limit is 128KB."
        },
        "state": {
          "type": "string",
          "description": "State of the workflow deployment."
        },
        "updateTime": {
          "type": "string",
          "description": "The last update timestamp of the workflow."
        },
        "workflowId": {
          "type": "string",
          "description": "Required. The ID of the workflow to be created. It has to fulfill the following requirements: * Must contain only letters, numbers, underscores and hyphens. * Must start with a letter. * Must be between 1-64 characters. * Must end with a number or a letter. * Must be unique within the customer project and location.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "description",
        "labels",
        "location",
        "name",
        "project",
        "revisionCreateTime",
        "revisionId",
        "serviceAccount",
        "sourceContents",
        "state",
        "updateTime",
        "workflowId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the workflow provided by the user. Must be at most 1000 unicode characters long."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels associated with this workflow. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores and dashes. Label keys must start with a letter. International characters are allowed."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The resource name of the workflow. Format: projects/{project}/locations/{location}/workflows/{workflow}"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "serviceAccount": {
          "type": "string",
          "description": "The service account associated with the latest workflow version. This service account represents the identity of the workflow and determines what permissions the workflow has. Format: projects/{project}/serviceAccounts/{account} or {account} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. The `{account}` value can be the `email` address or the `unique_id` of the service account. If not provided, workflow will use the project's default service account. Modifying this field for an existing workflow results in a new workflow revision."
        },
        "sourceContents": {
          "type": "string",
          "description": "Workflow code to be executed. The size limit is 128KB."
        },
        "workflowId": {
          "type": "string",
          "description": "Required. The ID of the workflow to be created. It has to fulfill the following requirements: * Must contain only letters, numbers, underscores and hyphens. * Must start with a letter. * Must be between 1-64 characters. * Must end with a number or a letter. * Must be unique within the customer project and location.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workflowId"
      ]
    },
    "google-native:workloadmanager/v1:Evaluation": {
      "description": "Creates a new Evaluation in a given project and location.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "createTime": {
          "type": "string",
          "description": "[Output only] Create time stamp"
        },
        "customRulesBucket": {
          "type": "string",
          "description": "The Cloud Storage bucket name for custom rules."
        },
        "description": {
          "type": "string",
          "description": "Description of the Evaluation"
        },
        "evaluationId": {
          "type": "string",
          "description": "Required. Id of the requesting object",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource names have the form 'projects/{project_id}/locations/{location_id}/evaluations/{evaluation_id}'"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceFilter": {
          "$ref": "#/types/google-native:workloadmanager%2Fv1:ResourceFilterResponse",
          "description": "annotations as key value pairs"
        },
        "resourceStatus": {
          "$ref": "#/types/google-native:workloadmanager%2Fv1:ResourceStatusResponse",
          "description": "[Output only] The updated rule ids if exist."
        },
        "ruleNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "the name of the rule"
        },
        "ruleVersions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Output only] The updated rule ids if exist."
        },
        "schedule": {
          "type": "string",
          "description": "crontab format schedule for scheduled evaluation, currently only support the following schedule: \"0 */1 * * *\", \"0 */6 * * *\", \"0 */12 * * *\", \"0 0 */1 * *\", \"0 0 */7 * *\","
        },
        "updateTime": {
          "type": "string",
          "description": "[Output only] Update time stamp"
        }
      },
      "type": "object",
      "required": [
        "createTime",
        "customRulesBucket",
        "description",
        "evaluationId",
        "labels",
        "location",
        "name",
        "project",
        "resourceFilter",
        "resourceStatus",
        "ruleNames",
        "ruleVersions",
        "schedule",
        "updateTime"
      ],
      "inputProperties": {
        "customRulesBucket": {
          "type": "string",
          "description": "The Cloud Storage bucket name for custom rules."
        },
        "description": {
          "type": "string",
          "description": "Description of the Evaluation"
        },
        "evaluationId": {
          "type": "string",
          "description": "Required. Id of the requesting object",
          "replaceOnChanges": true
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels as key value pairs"
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "name of resource names have the form 'projects/{project_id}/locations/{location_id}/evaluations/{evaluation_id}'"
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "requestId": {
          "type": "string",
          "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000)."
        },
        "resourceFilter": {
          "$ref": "#/types/google-native:workloadmanager%2Fv1:ResourceFilter",
          "description": "annotations as key value pairs"
        },
        "ruleNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "the name of the rule"
        },
        "schedule": {
          "type": "string",
          "description": "crontab format schedule for scheduled evaluation, currently only support the following schedule: \"0 */1 * * *\", \"0 */6 * * *\", \"0 */12 * * *\", \"0 0 */1 * *\", \"0 0 */7 * *\","
        }
      },
      "requiredInputs": [
        "evaluationId"
      ]
    },
    "google-native:workstations/v1:Workstation": {
      "description": "Creates a new workstation.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "createTime": {
          "type": "string",
          "description": "Time when this workstation was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when this workstation was soft-deleted."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Environment variables passed to the workstation container's entrypoint."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "host": {
          "type": "string",
          "description": "Host to which clients can send HTTPS traffic that will be received by the workstation. Authorized traffic will be received to the workstation as HTTP on port 80. To send traffic to a different port, clients may prefix the host with the destination port in the format `{port}-{host}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Indicates whether this workstation is currently being updated to match its intended state."
        },
        "startTime": {
          "type": "string",
          "description": "Time when this workstation was most recently successfully started, regardless of the workstation's initial state."
        },
        "state": {
          "type": "string",
          "description": "Current state of the workstation."
        },
        "uid": {
          "type": "string",
          "description": "A system-assigned unique identifier for this workstation."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when this workstation was most recently updated."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationId": {
          "type": "string",
          "description": "Required. ID to use for the workstation.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "createTime",
        "deleteTime",
        "displayName",
        "env",
        "etag",
        "host",
        "labels",
        "location",
        "name",
        "project",
        "reconciling",
        "startTime",
        "state",
        "uid",
        "updateTime",
        "workstationClusterId",
        "workstationConfigId",
        "workstationId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Environment variables passed to the workstation container's entrypoint."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationId": {
          "type": "string",
          "description": "Required. ID to use for the workstation.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId",
        "workstationConfigId",
        "workstationId"
      ]
    },
    "google-native:workstations/v1:WorkstationCluster": {
      "description": "Creates a new workstation cluster.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:StatusResponse"
          },
          "description": "Status conditions describing the workstation cluster's current state."
        },
        "controlPlaneIp": {
          "type": "string",
          "description": "The private IP address of the control plane for this workstation cluster. Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address."
        },
        "createTime": {
          "type": "string",
          "description": "Time when this workstation cluster was created."
        },
        "degraded": {
          "type": "boolean",
          "description": "Whether this workstation cluster is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in conditions."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when this workstation cluster was soft-deleted."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation cluster."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation cluster and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation cluster."
        },
        "network": {
          "type": "string",
          "description": "Immutable. Name of the Compute Engine network in which instances associated with this workstation cluster will be created."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1:PrivateClusterConfigResponse",
          "description": "Optional. Configuration for private workstation cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Indicates whether this workstation cluster is currently being updated to match its intended state."
        },
        "subnetwork": {
          "type": "string",
          "description": "Immutable. Name of the Compute Engine subnetwork in which instances associated with this workstation cluster will be created. Must be part of the subnetwork specified for this workstation cluster."
        },
        "uid": {
          "type": "string",
          "description": "A system-assigned unique identifier for this workstation cluster."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when this workstation cluster was most recently updated."
        },
        "workstationClusterId": {
          "type": "string",
          "description": "Required. ID to use for the workstation cluster.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "conditions",
        "controlPlaneIp",
        "createTime",
        "degraded",
        "deleteTime",
        "displayName",
        "etag",
        "labels",
        "location",
        "name",
        "network",
        "privateClusterConfig",
        "project",
        "reconciling",
        "subnetwork",
        "uid",
        "updateTime",
        "workstationClusterId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation cluster."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation cluster and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation cluster."
        },
        "network": {
          "type": "string",
          "description": "Immutable. Name of the Compute Engine network in which instances associated with this workstation cluster will be created."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1:PrivateClusterConfig",
          "description": "Optional. Configuration for private workstation cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subnetwork": {
          "type": "string",
          "description": "Immutable. Name of the Compute Engine subnetwork in which instances associated with this workstation cluster will be created. Must be part of the subnetwork specified for this workstation cluster."
        },
        "workstationClusterId": {
          "type": "string",
          "description": "Required. ID to use for the workstation cluster.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId"
      ]
    },
    "google-native:workstations/v1:WorkstationClusterWorkstationConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:workstations/v1:WorkstationClusterWorkstationConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:workstations/v1:WorkstationClusterWorkstationConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "workstationClusterId",
        "workstationConfigId"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId",
        "workstationConfigId"
      ]
    },
    "google-native:workstations/v1:WorkstationClusterWorkstationConfigWorkstationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:workstations/v1:WorkstationClusterWorkstationConfigWorkstationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:workstations/v1:WorkstationClusterWorkstationConfigWorkstationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "workstationClusterId",
        "workstationConfigId",
        "workstationId"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId",
        "workstationConfigId",
        "workstationId"
      ]
    },
    "google-native:workstations/v1:WorkstationConfig": {
      "description": "Creates a new workstation configuration.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:StatusResponse"
          },
          "description": "Status conditions describing the current resource state."
        },
        "container": {
          "$ref": "#/types/google-native:workstations%2Fv1:ContainerResponse",
          "description": "Optional. Container that runs upon startup for each workstation using this workstation configuration."
        },
        "createTime": {
          "type": "string",
          "description": "Time when this workstation configuration was created."
        },
        "degraded": {
          "type": "boolean",
          "description": "Whether this resource is degraded, in which case it may require user action to restore full functionality. See also the conditions field."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when this workstation configuration was soft-deleted."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation configuration."
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:workstations%2Fv1:CustomerEncryptionKeyResponse",
          "description": "Immutable. Encrypts resources of this workstation configuration using a customer-managed encryption key (CMEK). If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk might be lost. If the encryption key is revoked, the workstation session automatically stops within 7 hours. Immutable after the workstation configuration is created."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "host": {
          "$ref": "#/types/google-native:workstations%2Fv1:HostResponse",
          "description": "Optional. Runtime host for the workstation."
        },
        "idleTimeout": {
          "type": "string",
          "description": "Optional. Number of seconds to wait before automatically stopping a workstation after it last received user traffic. A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration should never time out due to idleness. Provide [duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) terminated by `s` for seconds—for example, `\"7200s\"` (2 hours). The default is `\"1200s\"` (20 minutes)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation configuration and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation configuration."
        },
        "persistentDirectories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:PersistentDirectoryResponse"
          },
          "description": "Optional. Directories to persist across workstation sessions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readinessChecks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:ReadinessCheckResponse"
          },
          "description": "Optional. Readiness checks to perform when starting a workstation using this workstation configuration. Mark a workstation as running only after all specified readiness checks return 200 status codes."
        },
        "reconciling": {
          "type": "boolean",
          "description": "Indicates whether this workstation configuration is currently being updated to match its intended state."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Immutable. Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, `['us-central1-a', 'us-central1-f']`. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created."
        },
        "runningTimeout": {
          "type": "string",
          "description": "Optional. Number of seconds that a workstation can run until it is automatically shut down. We recommend that workstations be shut down daily to reduce costs and so that security updates can be applied upon restart. The idle_timeout and running_timeout fields are independent of each other. Note that the running_timeout field shuts down VMs after the specified time, regardless of whether or not the VMs are idle. Provide duration terminated by `s` for seconds—for example, `\"54000s\"` (15 hours). Defaults to `\"43200s\"` (12 hours). A value of `\"0s\"` indicates that workstations using this configuration should never time out. If encryption_key is set, it must be greater than `\"0s\"` and less than `\"86400s\"` (24 hours). Warning: A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration have no maximum running time. This is strongly discouraged because you incur costs and will not pick up security updates."
        },
        "uid": {
          "type": "string",
          "description": "A system-assigned unique identifier for this workstation configuration."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when this workstation configuration was most recently updated."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "description": "Required. ID to use for the workstation configuration.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "conditions",
        "container",
        "createTime",
        "degraded",
        "deleteTime",
        "displayName",
        "encryptionKey",
        "etag",
        "host",
        "idleTimeout",
        "labels",
        "location",
        "name",
        "persistentDirectories",
        "project",
        "readinessChecks",
        "reconciling",
        "replicaZones",
        "runningTimeout",
        "uid",
        "updateTime",
        "workstationClusterId",
        "workstationConfigId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "container": {
          "$ref": "#/types/google-native:workstations%2Fv1:Container",
          "description": "Optional. Container that runs upon startup for each workstation using this workstation configuration."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation configuration."
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:workstations%2Fv1:CustomerEncryptionKey",
          "description": "Immutable. Encrypts resources of this workstation configuration using a customer-managed encryption key (CMEK). If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk might be lost. If the encryption key is revoked, the workstation session automatically stops within 7 hours. Immutable after the workstation configuration is created."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "host": {
          "$ref": "#/types/google-native:workstations%2Fv1:Host",
          "description": "Optional. Runtime host for the workstation."
        },
        "idleTimeout": {
          "type": "string",
          "description": "Optional. Number of seconds to wait before automatically stopping a workstation after it last received user traffic. A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration should never time out due to idleness. Provide [duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) terminated by `s` for seconds—for example, `\"7200s\"` (2 hours). The default is `\"1200s\"` (20 minutes)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation configuration and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation configuration."
        },
        "persistentDirectories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:PersistentDirectory"
          },
          "description": "Optional. Directories to persist across workstation sessions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readinessChecks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1:ReadinessCheck"
          },
          "description": "Optional. Readiness checks to perform when starting a workstation using this workstation configuration. Mark a workstation as running only after all specified readiness checks return 200 status codes."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Immutable. Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, `['us-central1-a', 'us-central1-f']`. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created."
        },
        "runningTimeout": {
          "type": "string",
          "description": "Optional. Number of seconds that a workstation can run until it is automatically shut down. We recommend that workstations be shut down daily to reduce costs and so that security updates can be applied upon restart. The idle_timeout and running_timeout fields are independent of each other. Note that the running_timeout field shuts down VMs after the specified time, regardless of whether or not the VMs are idle. Provide duration terminated by `s` for seconds—for example, `\"54000s\"` (15 hours). Defaults to `\"43200s\"` (12 hours). A value of `\"0s\"` indicates that workstations using this configuration should never time out. If encryption_key is set, it must be greater than `\"0s\"` and less than `\"86400s\"` (24 hours). Warning: A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration have no maximum running time. This is strongly discouraged because you incur costs and will not pick up security updates."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "description": "Required. ID to use for the workstation configuration.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId",
        "workstationConfigId"
      ]
    },
    "google-native:workstations/v1beta:Workstation": {
      "description": "Creates a new workstation.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "createTime": {
          "type": "string",
          "description": "Time when this workstation was created."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when this workstation was soft-deleted."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Environment variables passed to the workstation container's entrypoint."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "host": {
          "type": "string",
          "description": "Host to which clients can send HTTPS traffic that will be received by the workstation. Authorized traffic will be received to the workstation as HTTP on port 80. To send traffic to a different port, clients may prefix the host with the destination port in the format `{port}-{host}`."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Indicates whether this workstation is currently being updated to match its intended state."
        },
        "startTime": {
          "type": "string",
          "description": "Time when this workstation was most recently successfully started, regardless of the workstation's initial state."
        },
        "state": {
          "type": "string",
          "description": "Current state of the workstation."
        },
        "uid": {
          "type": "string",
          "description": "A system-assigned unique identifier for this workstation."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when this workstation was most recently updated."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationId": {
          "type": "string",
          "description": "Required. ID to use for the workstation.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "createTime",
        "deleteTime",
        "displayName",
        "env",
        "etag",
        "host",
        "labels",
        "location",
        "name",
        "project",
        "reconciling",
        "startTime",
        "state",
        "uid",
        "updateTime",
        "workstationClusterId",
        "workstationConfigId",
        "workstationId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Environment variables passed to the workstation container's entrypoint."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationId": {
          "type": "string",
          "description": "Required. ID to use for the workstation.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId",
        "workstationConfigId",
        "workstationId"
      ]
    },
    "google-native:workstations/v1beta:WorkstationCluster": {
      "description": "Creates a new workstation cluster.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:StatusResponse"
          },
          "description": "Status conditions describing the workstation cluster's current state."
        },
        "controlPlaneIp": {
          "type": "string",
          "description": "The private IP address of the control plane for this workstation cluster. Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address."
        },
        "createTime": {
          "type": "string",
          "description": "Time when this workstation cluster was created."
        },
        "degraded": {
          "type": "boolean",
          "description": "Whether this workstation cluster is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in conditions."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when this workstation cluster was soft-deleted."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation cluster."
        },
        "domainConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:DomainConfigResponse",
          "description": "Optional. Configuration options for a custom domain."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation cluster and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation cluster."
        },
        "network": {
          "type": "string",
          "description": "Immutable. Name of the Compute Engine network in which instances associated with this workstation cluster will be created."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:PrivateClusterConfigResponse",
          "description": "Optional. Configuration for private workstation cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "reconciling": {
          "type": "boolean",
          "description": "Indicates whether this workstation cluster is currently being updated to match its intended state."
        },
        "subnetwork": {
          "type": "string",
          "description": "Immutable. Name of the Compute Engine subnetwork in which instances associated with this workstation cluster will be created. Must be part of the subnetwork specified for this workstation cluster."
        },
        "uid": {
          "type": "string",
          "description": "A system-assigned unique identifier for this workstation cluster."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when this workstation cluster was most recently updated."
        },
        "workstationClusterId": {
          "type": "string",
          "description": "Required. ID to use for the workstation cluster.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "conditions",
        "controlPlaneIp",
        "createTime",
        "degraded",
        "deleteTime",
        "displayName",
        "domainConfig",
        "etag",
        "labels",
        "location",
        "name",
        "network",
        "privateClusterConfig",
        "project",
        "reconciling",
        "subnetwork",
        "uid",
        "updateTime",
        "workstationClusterId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation cluster."
        },
        "domainConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:DomainConfig",
          "description": "Optional. Configuration options for a custom domain."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation cluster and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation cluster."
        },
        "network": {
          "type": "string",
          "description": "Immutable. Name of the Compute Engine network in which instances associated with this workstation cluster will be created."
        },
        "privateClusterConfig": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:PrivateClusterConfig",
          "description": "Optional. Configuration for private workstation cluster."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "subnetwork": {
          "type": "string",
          "description": "Immutable. Name of the Compute Engine subnetwork in which instances associated with this workstation cluster will be created. Must be part of the subnetwork specified for this workstation cluster."
        },
        "workstationClusterId": {
          "type": "string",
          "description": "Required. ID to use for the workstation cluster.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId"
      ]
    },
    "google-native:workstations/v1beta:WorkstationClusterWorkstationConfigIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:workstations/v1beta:WorkstationClusterWorkstationConfigIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:workstations/v1beta:WorkstationClusterWorkstationConfigIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "workstationClusterId",
        "workstationConfigId"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId",
        "workstationConfigId"
      ]
    },
    "google-native:workstations/v1beta:WorkstationClusterWorkstationConfigWorkstationIamBinding": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "members",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identities that will be granted the privilege in role. Each entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied. Only one `IamBinding` can be used per role."
        }
      },
      "requiredInputs": [
        "members",
        "name",
        "role"
      ]
    },
    "google-native:workstations/v1beta:WorkstationClusterWorkstationConfigWorkstationIamMember": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
      "properties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding. See https://cloud.google.com/iam/docs/conditions-overview for additional details."
        },
        "etag": {
          "type": "string",
          "description": "The etag of the resource's IAM policy."
        },
        "member": {
          "type": "string",
          "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "project": {
          "type": "string",
          "description": "The project in which the resource belongs. If it is not provided, a default will be supplied."
        },
        "role": {
          "type": "string",
          "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
        }
      },
      "type": "object",
      "required": [
        "etag",
        "member",
        "name",
        "project",
        "role"
      ],
      "inputProperties": {
        "condition": {
          "$ref": "#/types/google-native:iam%2Fv1:Condition",
          "description": "An IAM Condition for a given binding."
        },
        "member": {
          "type": "string",
          "description": "Identity that will be granted the privilege in role. The entry can have one of the following values:\n\n * user:{emailid}: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.\n * serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.\n * group:{emailid}: An email address that represents a Google group. For example, admins@example.com.\n * domain:{domain}: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com."
        },
        "name": {
          "type": "string",
          "description": "The name of the resource to manage IAM policies for."
        },
        "role": {
          "type": "string",
          "description": "The role that should be applied."
        }
      },
      "requiredInputs": [
        "member",
        "name",
        "role"
      ]
    },
    "google-native:workstations/v1beta:WorkstationClusterWorkstationConfigWorkstationIamPolicy": {
      "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.\nNote - this resource's API doesn't support deletion. When deleted, the resource will persist\non Google Cloud even though it will be deleted from Pulumi state.",
      "properties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:AuditConfigResponse"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:BindingResponse"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "auditConfigs",
        "bindings",
        "etag",
        "location",
        "project",
        "version",
        "workstationClusterId",
        "workstationConfigId",
        "workstationId"
      ],
      "inputProperties": {
        "auditConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:AuditConfig"
          },
          "description": "Specifies cloud audit logging configuration for this policy."
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:Binding"
          },
          "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`."
        },
        "etag": {
          "type": "string",
          "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "updateMask": {
          "type": "string",
          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`"
        },
        "version": {
          "type": "integer",
          "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationId": {
          "type": "string",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId",
        "workstationConfigId",
        "workstationId"
      ]
    },
    "google-native:workstations/v1beta:WorkstationConfig": {
      "description": "Creates a new workstation configuration.",
      "properties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:StatusResponse"
          },
          "description": "Status conditions describing the current resource state."
        },
        "container": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:ContainerResponse",
          "description": "Optional. Container that runs upon startup for each workstation using this workstation configuration."
        },
        "createTime": {
          "type": "string",
          "description": "Time when this workstation configuration was created."
        },
        "degraded": {
          "type": "boolean",
          "description": "Whether this resource is degraded, in which case it may require user action to restore full functionality. See also the conditions field."
        },
        "deleteTime": {
          "type": "string",
          "description": "Time when this workstation configuration was soft-deleted."
        },
        "disableTcpConnections": {
          "type": "boolean",
          "description": "Optional. Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation configuration."
        },
        "enableAuditAgent": {
          "type": "boolean",
          "description": "Optional. Whether to enable Linux `auditd` logging on the workstation. When enabled, a service account must also be specified that has `logging.buckets.write` permission on the project. Operating system audit logging is distinct from [Cloud Audit Logs](https://cloud.google.com/workstations/docs/audit-logging)."
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:CustomerEncryptionKeyResponse",
          "description": "Immutable. Encrypts resources of this workstation configuration using a customer-managed encryption key (CMEK). If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk might be lost. If the encryption key is revoked, the workstation session automatically stops within 7 hours. Immutable after the workstation configuration is created."
        },
        "ephemeralDirectories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:EphemeralDirectoryResponse"
          },
          "description": "Optional. Ephemeral directories which won't persist across workstation sessions."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "host": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:HostResponse",
          "description": "Optional. Runtime host for the workstation."
        },
        "idleTimeout": {
          "type": "string",
          "description": "Optional. Number of seconds to wait before automatically stopping a workstation after it last received user traffic. A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration should never time out due to idleness. Provide [duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) terminated by `s` for seconds—for example, `\"7200s\"` (2 hours). The default is `\"1200s\"` (20 minutes)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation configuration and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation configuration."
        },
        "persistentDirectories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:PersistentDirectoryResponse"
          },
          "description": "Optional. Directories to persist across workstation sessions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readinessChecks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:ReadinessCheckResponse"
          },
          "description": "Optional. Readiness checks to perform when starting a workstation using this workstation configuration. Mark a workstation as running only after all specified readiness checks return 200 status codes."
        },
        "reconciling": {
          "type": "boolean",
          "description": "Indicates whether this workstation configuration is currently being updated to match its intended state."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Immutable. Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, `['us-central1-a', 'us-central1-f']`. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created."
        },
        "runningTimeout": {
          "type": "string",
          "description": "Optional. Number of seconds that a workstation can run until it is automatically shut down. We recommend that workstations be shut down daily to reduce costs and so that security updates can be applied upon restart. The idle_timeout and running_timeout fields are independent of each other. Note that the running_timeout field shuts down VMs after the specified time, regardless of whether or not the VMs are idle. Provide duration terminated by `s` for seconds—for example, `\"54000s\"` (15 hours). Defaults to `\"43200s\"` (12 hours). A value of `\"0s\"` indicates that workstations using this configuration should never time out. If encryption_key is set, it must be greater than `\"0s\"` and less than `\"86400s\"` (24 hours). Warning: A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration have no maximum running time. This is strongly discouraged because you incur costs and will not pick up security updates."
        },
        "uid": {
          "type": "string",
          "description": "A system-assigned unique identifier for this workstation configuration."
        },
        "updateTime": {
          "type": "string",
          "description": "Time when this workstation configuration was most recently updated."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "description": "Required. ID to use for the workstation configuration.",
          "replaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "annotations",
        "conditions",
        "container",
        "createTime",
        "degraded",
        "deleteTime",
        "disableTcpConnections",
        "displayName",
        "enableAuditAgent",
        "encryptionKey",
        "ephemeralDirectories",
        "etag",
        "host",
        "idleTimeout",
        "labels",
        "location",
        "name",
        "persistentDirectories",
        "project",
        "readinessChecks",
        "reconciling",
        "replicaZones",
        "runningTimeout",
        "uid",
        "updateTime",
        "workstationClusterId",
        "workstationConfigId"
      ],
      "inputProperties": {
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. Client-specified annotations."
        },
        "container": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:Container",
          "description": "Optional. Container that runs upon startup for each workstation using this workstation configuration."
        },
        "disableTcpConnections": {
          "type": "boolean",
          "description": "Optional. Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss."
        },
        "displayName": {
          "type": "string",
          "description": "Optional. Human-readable name for this workstation configuration."
        },
        "enableAuditAgent": {
          "type": "boolean",
          "description": "Optional. Whether to enable Linux `auditd` logging on the workstation. When enabled, a service account must also be specified that has `logging.buckets.write` permission on the project. Operating system audit logging is distinct from [Cloud Audit Logs](https://cloud.google.com/workstations/docs/audit-logging)."
        },
        "encryptionKey": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:CustomerEncryptionKey",
          "description": "Immutable. Encrypts resources of this workstation configuration using a customer-managed encryption key (CMEK). If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk might be lost. If the encryption key is revoked, the workstation session automatically stops within 7 hours. Immutable after the workstation configuration is created."
        },
        "ephemeralDirectories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:EphemeralDirectory"
          },
          "description": "Optional. Ephemeral directories which won't persist across workstation sessions."
        },
        "etag": {
          "type": "string",
          "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding."
        },
        "host": {
          "$ref": "#/types/google-native:workstations%2Fv1beta:Host",
          "description": "Optional. Runtime host for the workstation."
        },
        "idleTimeout": {
          "type": "string",
          "description": "Optional. Number of seconds to wait before automatically stopping a workstation after it last received user traffic. A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration should never time out due to idleness. Provide [duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) terminated by `s` for seconds—for example, `\"7200s\"` (2 hours). The default is `\"1200s\"` (20 minutes)."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation configuration and that are also propagated to the underlying Compute Engine resources."
        },
        "location": {
          "type": "string",
          "replaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Full name of this workstation configuration."
        },
        "persistentDirectories": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:PersistentDirectory"
          },
          "description": "Optional. Directories to persist across workstation sessions."
        },
        "project": {
          "type": "string",
          "replaceOnChanges": true
        },
        "readinessChecks": {
          "type": "array",
          "items": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:ReadinessCheck"
          },
          "description": "Optional. Readiness checks to perform when starting a workstation using this workstation configuration. Mark a workstation as running only after all specified readiness checks return 200 status codes."
        },
        "replicaZones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. Immutable. Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, `['us-central1-a', 'us-central1-f']`. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created."
        },
        "runningTimeout": {
          "type": "string",
          "description": "Optional. Number of seconds that a workstation can run until it is automatically shut down. We recommend that workstations be shut down daily to reduce costs and so that security updates can be applied upon restart. The idle_timeout and running_timeout fields are independent of each other. Note that the running_timeout field shuts down VMs after the specified time, regardless of whether or not the VMs are idle. Provide duration terminated by `s` for seconds—for example, `\"54000s\"` (15 hours). Defaults to `\"43200s\"` (12 hours). A value of `\"0s\"` indicates that workstations using this configuration should never time out. If encryption_key is set, it must be greater than `\"0s\"` and less than `\"86400s\"` (24 hours). Warning: A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration have no maximum running time. This is strongly discouraged because you incur costs and will not pick up security updates."
        },
        "workstationClusterId": {
          "type": "string",
          "replaceOnChanges": true
        },
        "workstationConfigId": {
          "type": "string",
          "description": "Required. ID to use for the workstation configuration.",
          "replaceOnChanges": true
        }
      },
      "requiredInputs": [
        "workstationClusterId",
        "workstationConfigId"
      ]
    }
  },
  "functions": {
    "google-native:accesscontextmanager/v1:getAccessLevel": {
      "description": "Gets an access level based on the resource name.",
      "inputs": {
        "properties": {
          "accessLevelFormat": {
            "type": "string"
          },
          "accessLevelId": {
            "type": "string"
          },
          "accessPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessLevelId",
          "accessPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "basic": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:BasicLevelResponse",
            "description": "A `BasicLevel` composed of `Conditions`."
          },
          "custom": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:CustomLevelResponse",
            "description": "A `CustomLevel` written in the Common Expression Language."
          },
          "description": {
            "description": "Description of the `AccessLevel` and its use. Does not affect behavior.",
            "type": "string"
          },
          "name": {
            "description": "Resource name for the `AccessLevel`. Format: `accessPolicies/{access_policy}/accessLevels/{access_level}`. The `access_level` component must begin with a letter, followed by alphanumeric characters or `_`. Its maximum length is 50 characters. After you create an `AccessLevel`, you cannot change its `name`.",
            "type": "string"
          },
          "title": {
            "description": "Human readable title. Must be unique within the Policy.",
            "type": "string"
          }
        },
        "required": [
          "basic",
          "custom",
          "description",
          "name",
          "title"
        ],
        "type": "object"
      }
    },
    "google-native:accesscontextmanager/v1:getAccessPolicy": {
      "description": "Returns an access policy based on the name.",
      "inputs": {
        "properties": {
          "accessPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "etag": {
            "description": "An opaque identifier for the current version of the `AccessPolicy`. This will always be a strongly validated etag, meaning that two Access Polices will be identical if and only if their etags are identical. Clients should not expect this to be in any specific format.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the `AccessPolicy`. Format: `accessPolicies/{access_policy}`",
            "type": "string"
          },
          "parent": {
            "description": "The parent of this `AccessPolicy` in the Cloud Resource Hierarchy. Currently immutable once created. Format: `organizations/{organization_id}`",
            "type": "string"
          },
          "scopes": {
            "description": "The scopes of the AccessPolicy. Scopes define which resources a policy can restrict and where its resources can be referenced. For example, policy A with `scopes=[\"folders/123\"]` has the following behavior: - ServicePerimeter can only restrict projects within `folders/123`. - ServicePerimeter within policy A can only reference access levels defined within policy A. - Only one policy can include a given scope; thus, attempting to create a second policy which includes `folders/123` will result in an error. If no scopes are provided, then any resource within the organization can be restricted. Scopes cannot be modified after a policy is created. Policies can only have a single scope. Format: list of `folders/{folder_number}` or `projects/{project_number}`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "description": "Human readable title. Does not affect behavior.",
            "type": "string"
          }
        },
        "required": [
          "etag",
          "name",
          "parent",
          "scopes",
          "title"
        ],
        "type": "object"
      }
    },
    "google-native:accesscontextmanager/v1:getAccessPolicyIamPolicy": {
      "description": "Gets the IAM policy for the specified Access Context Manager access policy.",
      "inputs": {
        "properties": {
          "accessPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:accesscontextmanager%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:accesscontextmanager%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:accesscontextmanager/v1:getAuthorizedOrgsDesc": {
      "description": "Gets an authorized orgs desc based on the resource name.",
      "inputs": {
        "properties": {
          "accessPolicyId": {
            "type": "string"
          },
          "authorizedOrgsDescId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessPolicyId",
          "authorizedOrgsDescId"
        ]
      },
      "outputs": {
        "properties": {
          "assetType": {
            "description": "The asset type of this authorized orgs desc. Valid values are `ASSET_TYPE_DEVICE`, and `ASSET_TYPE_CREDENTIAL_STRENGTH`.",
            "type": "string"
          },
          "authorizationDirection": {
            "description": "The direction of the authorization relationship between this organization and the organizations listed in the `orgs` field. The valid values for this field include the following: `AUTHORIZATION_DIRECTION_FROM`: Allows this organization to evaluate traffic in the organizations listed in the `orgs` field. `AUTHORIZATION_DIRECTION_TO`: Allows the organizations listed in the `orgs` field to evaluate the traffic in this organization. For the authorization relationship to take effect, all of the organizations must authorize and specify the appropriate relationship direction. For example, if organization A authorized organization B and C to evaluate its traffic, by specifying `AUTHORIZATION_DIRECTION_TO` as the authorization direction, organizations B and C must specify `AUTHORIZATION_DIRECTION_FROM` as the authorization direction in their `AuthorizedOrgsDesc` resource.",
            "type": "string"
          },
          "authorizationType": {
            "description": "A granular control type for authorization levels. Valid value is `AUTHORIZATION_TYPE_TRUST`.",
            "type": "string"
          },
          "name": {
            "description": "Resource name for the `AuthorizedOrgsDesc`. Format: `accessPolicies/{access_policy}/authorizedOrgsDescs/{authorized_orgs_desc}`. The `authorized_orgs_desc` component must begin with a letter, followed by alphanumeric characters or `_`. After you create an `AuthorizedOrgsDesc`, you cannot change its `name`.",
            "type": "string"
          },
          "orgs": {
            "description": "The list of organization ids in this AuthorizedOrgsDesc. Format: `organizations/` Example: `organizations/123456`",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "assetType",
          "authorizationDirection",
          "authorizationType",
          "name",
          "orgs"
        ],
        "type": "object"
      }
    },
    "google-native:accesscontextmanager/v1:getGcpUserAccessBinding": {
      "description": "Gets the GcpUserAccessBinding with the given name.",
      "inputs": {
        "properties": {
          "gcpUserAccessBindingId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gcpUserAccessBindingId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "accessLevels": {
            "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\"",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dryRunAccessLevels": {
            "description": "Optional. Dry run access level that will be evaluated but will not be enforced. The access denial based on dry run policy will be logged. Only one access level is supported, not multiple. This list must have exactly one element. Example: \"accessPolicies/9522/accessLevels/device_trusted\"",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "groupKey": {
            "description": "Immutable. Google Group id whose members are subject to this binding's restrictions. See \"id\" in the [G Suite Directory API's Groups resource] (https://developers.google.com/admin-sdk/directory/v1/reference/groups#resource). If a group's email address/alias is changed, this resource will continue to point at the changed group. This field does not accept group email addresses or aliases. Example: \"01d520gv4vjcrht\"",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Assigned by the server during creation. The last segment has an arbitrary length and has only URI unreserved characters (as defined by [RFC 3986 Section 2.3](https://tools.ietf.org/html/rfc3986#section-2.3)). Should not be specified by the client during creation. Example: \"organizations/256/gcpUserAccessBindings/b3-BhcX_Ud5N\"",
            "type": "string"
          }
        },
        "required": [
          "accessLevels",
          "dryRunAccessLevels",
          "groupKey",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:accesscontextmanager/v1:getServicePerimeter": {
      "description": "Gets a service perimeter based on the resource name.",
      "inputs": {
        "properties": {
          "accessPolicyId": {
            "type": "string"
          },
          "servicePerimeterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessPolicyId",
          "servicePerimeterId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Description of the `ServicePerimeter` and its use. Does not affect behavior.",
            "type": "string"
          },
          "name": {
            "description": "Resource name for the `ServicePerimeter`. Format: `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`. The `service_perimeter` component must begin with a letter, followed by alphanumeric characters or `_`. After you create a `ServicePerimeter`, you cannot change its `name`.",
            "type": "string"
          },
          "perimeterType": {
            "description": "Perimeter type indicator. A single project or VPC network is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, the restricted service list as well as access level lists must be empty.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ServicePerimeterConfigResponse",
            "description": "Proposed (or dry run) ServicePerimeter configuration. This configuration allows to specify and test ServicePerimeter configuration without enforcing actual access restrictions. Only allowed to be set when the \"use_explicit_dry_run_spec\" flag is set."
          },
          "status": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1:ServicePerimeterConfigResponse",
            "description": "Current ServicePerimeter configuration. Specifies sets of resources, restricted services and access levels that determine perimeter content and boundaries."
          },
          "title": {
            "description": "Human readable title. Must be unique within the Policy.",
            "type": "string"
          },
          "useExplicitDryRunSpec": {
            "description": "Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists for all Service Perimeters, and that spec is identical to the status for those Service Perimeters. When this flag is set, it inhibits the generation of the implicit spec, thereby allowing the user to explicitly provide a configuration (\"spec\") to use in a dry-run version of the Service Perimeter. This allows the user to test changes to the enforced config (\"status\") without actually enforcing them. This testing is done through analyzing the differences between currently enforced and suggested restrictions. use_explicit_dry_run_spec must bet set to True if any of the fields in the spec are set to non-default values.",
            "type": "boolean"
          }
        },
        "required": [
          "description",
          "name",
          "perimeterType",
          "spec",
          "status",
          "title",
          "useExplicitDryRunSpec"
        ],
        "type": "object"
      }
    },
    "google-native:accesscontextmanager/v1beta:getAccessLevel": {
      "description": "Get an Access Level by resource name.",
      "inputs": {
        "properties": {
          "accessLevelFormat": {
            "type": "string"
          },
          "accessLevelId": {
            "type": "string"
          },
          "accessPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessLevelId",
          "accessPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "basic": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:BasicLevelResponse",
            "description": "A `BasicLevel` composed of `Conditions`."
          },
          "custom": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:CustomLevelResponse",
            "description": "A `CustomLevel` written in the Common Expression Language."
          },
          "description": {
            "description": "Description of the `AccessLevel` and its use. Does not affect behavior.",
            "type": "string"
          },
          "name": {
            "description": "Resource name for the `AccessLevel`. Format: `accessPolicies/{access_policy}/accessLevels/{access_level}`. The `access_level` component must begin with a letter, followed by alphanumeric characters or `_`. Its maximum length is 50 characters. After you create an `AccessLevel`, you cannot change its `name`.",
            "type": "string"
          },
          "title": {
            "description": "Human readable title. Must be unique within the Policy.",
            "type": "string"
          }
        },
        "required": [
          "basic",
          "custom",
          "description",
          "name",
          "title"
        ],
        "type": "object"
      }
    },
    "google-native:accesscontextmanager/v1beta:getAccessPolicy": {
      "description": "Get an AccessPolicy by name.",
      "inputs": {
        "properties": {
          "accessPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Resource name of the `AccessPolicy`. Format: `accessPolicies/{policy_id}`",
            "type": "string"
          },
          "parent": {
            "description": "The parent of this `AccessPolicy` in the Cloud Resource Hierarchy. Currently immutable once created. Format: `organizations/{organization_id}`",
            "type": "string"
          },
          "title": {
            "description": "Human readable title. Does not affect behavior.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "parent",
          "title"
        ],
        "type": "object"
      }
    },
    "google-native:accesscontextmanager/v1beta:getServicePerimeter": {
      "description": "Get a Service Perimeter by resource name.",
      "inputs": {
        "properties": {
          "accessPolicyId": {
            "type": "string"
          },
          "servicePerimeterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessPolicyId",
          "servicePerimeterId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Description of the `ServicePerimeter` and its use. Does not affect behavior.",
            "type": "string"
          },
          "name": {
            "description": "Resource name for the `ServicePerimeter`. Format: `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`. The `service_perimeter` component must begin with a letter, followed by alphanumeric characters or `_`. After you create a `ServicePerimeter`, you cannot change its `name`.",
            "type": "string"
          },
          "perimeterType": {
            "description": "Perimeter type indicator. A single project is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, restricted/unrestricted service lists as well as access lists must be empty.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:accesscontextmanager%2Fv1beta:ServicePerimeterConfigResponse",
            "description": "Current ServicePerimeter configuration. Specifies sets of resources, restricted/unrestricted services and access levels that determine perimeter content and boundaries."
          },
          "title": {
            "description": "Human readable title. Must be unique within the Policy.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "name",
          "perimeterType",
          "status",
          "title"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getArtifact": {
      "description": "Retrieves a specific Artifact.",
      "inputs": {
        "properties": {
          "artifactId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "artifactId",
          "location",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Artifact was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Artifact",
            "type": "string"
          },
          "displayName": {
            "description": "User provided display name of the Artifact. May be up to 128 Unicode characters.",
            "type": "string"
          },
          "etag": {
            "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Artifacts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Artifact (System labels are excluded).",
            "type": "object"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Properties of the Artifact. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the Artifact.",
            "type": "string"
          },
          "schemaTitle": {
            "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "schemaVersion": {
            "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "state": {
            "description": "The state of this Artifact. This is a property of the Artifact, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines), and the system does not prescribe or check the validity of state transitions.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Artifact was last updated.",
            "type": "string"
          },
          "uri": {
            "description": "The uniform resource identifier of the artifact file. May be empty if there is no actual artifact file.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "metadata",
          "name",
          "schemaTitle",
          "schemaVersion",
          "state",
          "updateTime",
          "uri"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getBatchPredictionJob": {
      "description": "Gets a BatchPredictionJob",
      "inputs": {
        "properties": {
          "batchPredictionJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "batchPredictionJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "completionStats": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CompletionStatsResponse",
            "description": "Statistics on completed and failed prediction instances."
          },
          "createTime": {
            "description": "Time when the BatchPredictionJob was created.",
            "type": "string"
          },
          "dedicatedResources": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchDedicatedResourcesResponse",
            "description": "The config of resources used by the Model during the batch prediction. If the Model supports DEDICATED_RESOURCES this config may be provided (and the job will use these resources), if the Model doesn't support AUTOMATIC_RESOURCES, this config must be provided."
          },
          "disableContainerLogging": {
            "description": "For custom-trained Models and AutoML Tabular Models, the container of the DeployedModel instances will send `stderr` and `stdout` streams to Cloud Logging by default. Please note that the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can disable container logging by setting this flag to true.",
            "type": "boolean"
          },
          "displayName": {
            "description": "The user-defined name of this BatchPredictionJob.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key options for a BatchPredictionJob. If this is set, then all resources created by the BatchPredictionJob will be encrypted with the provided encryption key."
          },
          "endTime": {
            "description": "Time when the BatchPredictionJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
            "description": "Only populated when the job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
          },
          "explanationSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ExplanationSpecResponse",
            "description": "Explanation configuration for this BatchPredictionJob. Can be specified only if generate_explanation is set to `true`. This value overrides the value of Model.explanation_spec. All fields of explanation_spec are optional in the request. If a field of the explanation_spec object is not populated, the corresponding field of the Model.explanation_spec object is inherited."
          },
          "generateExplanation": {
            "description": "Generate explanation with the batch prediction results. When set to `true`, the batch prediction output changes based on the `predictions_format` field of the BatchPredictionJob.output_config object: * `bigquery`: output includes a column named `explanation`. The value is a struct that conforms to the Explanation object. * `jsonl`: The JSON objects on each line include an additional entry keyed `explanation`. The value of the entry is a JSON object that conforms to the Explanation object. * `csv`: Generating explanations for CSV format is not supported. If this field is set to true, either the Model.explanation_spec or explanation_spec must be populated.",
            "type": "boolean"
          },
          "inputConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobInputConfigResponse",
            "description": "Input configuration of the instances on which predictions are performed. The schema of any single instance may be specified via the Model's PredictSchemata's instance_schema_uri."
          },
          "instanceConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobInstanceConfigResponse",
            "description": "Configuration for how to convert batch prediction input instances to the prediction instances that are sent to the Model."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize BatchPredictionJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "manualBatchTuningParameters": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ManualBatchTuningParametersResponse",
            "description": "Immutable. Parameters configuring the batch behavior. Currently only applicable when dedicated_resources are used (in other cases Vertex AI does the tuning itself)."
          },
          "model": {
            "description": "The name of the Model resource that produces the predictions via this job, must share the same ancestor Location. Starting this job has no impact on any existing deployments of the Model and their resources. Exactly one of model and unmanaged_container_model must be set. The model resource name may contain version id or version alias to specify the version. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` if no version is specified, the default version will be deployed. The model resource could also be a publisher model. Example: `publishers/{publisher}/models/{model}` or `projects/{project}/locations/{location}/publishers/{publisher}/models/{model}`",
            "type": "string"
          },
          "modelParameters": {
            "$ref": "pulumi.json#/Any",
            "description": "The parameters that govern the predictions. The schema of the parameters may be specified via the Model's PredictSchemata's parameters_schema_uri."
          },
          "modelVersionId": {
            "description": "The version ID of the Model that produces the predictions via this job.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the BatchPredictionJob.",
            "type": "string"
          },
          "outputConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobOutputConfigResponse",
            "description": "The Configuration specifying where output predictions should be written. The schema of any single prediction may be specified as a concatenation of Model's PredictSchemata's instance_schema_uri and prediction_schema_uri."
          },
          "outputInfo": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1BatchPredictionJobOutputInfoResponse",
            "description": "Information further describing the output of this job."
          },
          "partialFailures": {
            "description": "Partial failures encountered. For example, single files that can't be read. This field never exceeds 20 entries. Status details fields contain standard Google Cloud error details.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse"
            },
            "type": "array"
          },
          "resourcesConsumed": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ResourcesConsumedResponse",
            "description": "Information about resources that had been consumed by this job. Provided in real time at best effort basis, as well as a final value once the job completes. Note: This field currently may be not populated for batch predictions that use AutoML Models."
          },
          "serviceAccount": {
            "description": "The service account that the DeployedModel's container runs as. If not specified, a system generated one will be used, which has minimal permissions and the custom container, if used, may not have enough permission to access other Google Cloud resources. Users deploying the Model must have the `iam.serviceAccounts.actAs` permission on this service account.",
            "type": "string"
          },
          "startTime": {
            "description": "Time when the BatchPredictionJob for the first time entered the `JOB_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "unmanagedContainerModel": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1UnmanagedContainerModelResponse",
            "description": "Contains model information necessary to perform batch prediction without requiring uploading to model registry. Exactly one of model and unmanaged_container_model must be set."
          },
          "updateTime": {
            "description": "Time when the BatchPredictionJob was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "completionStats",
          "createTime",
          "dedicatedResources",
          "disableContainerLogging",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "explanationSpec",
          "generateExplanation",
          "inputConfig",
          "instanceConfig",
          "labels",
          "manualBatchTuningParameters",
          "model",
          "modelParameters",
          "modelVersionId",
          "name",
          "outputConfig",
          "outputInfo",
          "partialFailures",
          "resourcesConsumed",
          "serviceAccount",
          "startTime",
          "state",
          "unmanagedContainerModel",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getContext": {
      "description": "Retrieves a specific Context.",
      "inputs": {
        "properties": {
          "contextId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contextId",
          "location",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Context was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Context",
            "type": "string"
          },
          "displayName": {
            "description": "User provided display name of the Context. May be up to 128 Unicode characters.",
            "type": "string"
          },
          "etag": {
            "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Contexts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Context (System labels are excluded).",
            "type": "object"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Properties of the Context. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The resource name of the Context.",
            "type": "string"
          },
          "parentContexts": {
            "description": "A list of resource names of Contexts that are parents of this Context. A Context may have at most 10 parent_contexts.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "schemaTitle": {
            "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "schemaVersion": {
            "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Context was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "metadata",
          "name",
          "parentContexts",
          "schemaTitle",
          "schemaVersion",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getCustomJob": {
      "description": "Gets a CustomJob.",
      "inputs": {
        "properties": {
          "customJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the CustomJob was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the CustomJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key options for a CustomJob. If this is set, then all resources created by the CustomJob will be encrypted with the provided encryption key."
          },
          "endTime": {
            "description": "Time when the CustomJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
            "description": "Only populated when job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
          },
          "jobSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpecResponse",
            "description": "Job spec."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize CustomJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of a CustomJob.",
            "type": "string"
          },
          "startTime": {
            "description": "Time when the CustomJob for the first time entered the `JOB_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the CustomJob was most recently updated.",
            "type": "string"
          },
          "webAccessUris": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if job_spec.enable_web_access is `true`. The keys are names of each node in the training job; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell.",
            "type": "object"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "jobSpec",
          "labels",
          "name",
          "startTime",
          "state",
          "updateTime",
          "webAccessUris"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getDataLabelingJob": {
      "description": "Gets a DataLabelingJob.",
      "inputs": {
        "properties": {
          "dataLabelingJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataLabelingJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "activeLearningConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ActiveLearningConfigResponse",
            "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally via several iterations. For every iteration, it will select a batch of data based on the sampling strategy."
          },
          "annotationLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to assign to annotations generated by this DataLabelingJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "createTime": {
            "description": "Timestamp when this DataLabelingJob was created.",
            "type": "string"
          },
          "currentSpend": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleTypeMoneyResponse",
            "description": "Estimated cost(in US dollars) that the DataLabelingJob has incurred to date."
          },
          "datasets": {
            "description": "Dataset resource names. Right now we only support labeling from a single Dataset. Format: `projects/{project}/locations/{location}/datasets/{dataset}`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The user-defined name of the DataLabelingJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a DataLabelingJob.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a DataLabelingJob. If set, this DataLabelingJob will be secured by this key. Note: Annotations created in the DataLabelingJob are associated with the EncryptionSpec of the Dataset they are exported to."
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
            "description": "DataLabelingJob errors. It is only populated when job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
          },
          "inputs": {
            "$ref": "pulumi.json#/Any",
            "description": "Input config parameters for the DataLabelingJob."
          },
          "inputsSchemaUri": {
            "description": "Points to a YAML file stored on Google Cloud Storage describing the config for a specific type of DataLabelingJob. The schema files that can be used here are found in the https://storage.googleapis.com/google-cloud-aiplatform bucket in the /schema/datalabelingjob/inputs/ folder.",
            "type": "string"
          },
          "instructionUri": {
            "description": "The Google Cloud Storage location of the instruction pdf. This pdf is shared with labelers, and provides detailed description on how to label DataItems in Datasets.",
            "type": "string"
          },
          "labelerCount": {
            "description": "Number of labelers to work on each DataItem.",
            "type": "integer"
          },
          "labelingProgress": {
            "description": "Current labeling job progress percentage scaled in interval [0, 100], indicating the percentage of DataItems that has been finished.",
            "type": "integer"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your DataLabelingJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each DataLabelingJob: * \"aiplatform.googleapis.com/schema\": output only, its value is the inputs_schema's title.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the DataLabelingJob.",
            "type": "string"
          },
          "specialistPools": {
            "description": "The SpecialistPools' resource names associated with this job.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this DataLabelingJob was updated most recently.",
            "type": "string"
          }
        },
        "required": [
          "activeLearningConfig",
          "annotationLabels",
          "createTime",
          "currentSpend",
          "datasets",
          "displayName",
          "encryptionSpec",
          "error",
          "inputs",
          "inputsSchemaUri",
          "instructionUri",
          "labelerCount",
          "labelingProgress",
          "labels",
          "name",
          "specialistPools",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getDataset": {
      "description": "Gets a Dataset.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Dataset was created.",
            "type": "string"
          },
          "dataItemCount": {
            "description": "The number of DataItems in this Dataset. Only apply for non-structured Dataset.",
            "type": "string"
          },
          "description": {
            "description": "The description of the Dataset.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-defined name of the Dataset. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a Dataset. If set, this Dataset and all sub-resources of this Dataset will be secured by this key."
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Datasets. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each Dataset: * \"aiplatform.googleapis.com/dataset_metadata_schema\": output only, its value is the metadata_schema's title.",
            "type": "object"
          },
          "metadata": {
            "$ref": "pulumi.json#/Any",
            "description": "Additional information about the Dataset."
          },
          "metadataArtifact": {
            "description": "The resource name of the Artifact that was created in MetadataStore when creating the Dataset. The Artifact resource name pattern is `projects/{project}/locations/{location}/metadataStores/{metadata_store}/artifacts/{artifact}`.",
            "type": "string"
          },
          "metadataSchemaUri": {
            "description": "Points to a YAML file stored on Google Cloud Storage describing additional information about the Dataset. The schema is defined as an OpenAPI 3.0.2 Schema Object. The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/metadata/.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Dataset.",
            "type": "string"
          },
          "savedQueries": {
            "description": "All SavedQueries belong to the Dataset will be returned in List/Get Dataset response. The annotation_specs field will not be populated except for UI cases which will only use annotation_spec_count. In CreateDataset request, a SavedQuery is created together if this field is set, up to one SavedQuery can be set in CreateDatasetRequest. The SavedQuery should not contain any AnnotationSpec.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SavedQueryResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Timestamp when this Dataset was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataItemCount",
          "description",
          "displayName",
          "encryptionSpec",
          "etag",
          "labels",
          "metadata",
          "metadataArtifact",
          "metadataSchemaUri",
          "name",
          "savedQueries",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getDatasetVersion": {
      "description": "Gets a Dataset version.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "datasetVersionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "datasetVersionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigQueryDatasetName": {
            "description": "Name of the associated BigQuery dataset.",
            "type": "string"
          },
          "createTime": {
            "description": "Timestamp when this DatasetVersion was created.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the DatasetVersion.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this DatasetVersion was last updated.",
            "type": "string"
          }
        },
        "required": [
          "bigQueryDatasetName",
          "createTime",
          "etag",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getDeploymentResourcePool": {
      "description": "Get a DeploymentResourcePool.",
      "inputs": {
        "properties": {
          "deploymentResourcePoolId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deploymentResourcePoolId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this DeploymentResourcePool was created.",
            "type": "string"
          },
          "dedicatedResources": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DedicatedResourcesResponse",
            "description": "The underlying DedicatedResources that the DeploymentResourcePool uses."
          },
          "name": {
            "description": "Immutable. The resource name of the DeploymentResourcePool. Format: `projects/{project}/locations/{location}/deploymentResourcePools/{deployment_resource_pool}`",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dedicatedResources",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getEndpoint": {
      "description": "Gets an Endpoint.",
      "inputs": {
        "properties": {
          "endpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Endpoint was created.",
            "type": "string"
          },
          "deployedModels": {
            "description": "The models deployed in this Endpoint. To add or remove DeployedModels use EndpointService.DeployModel and EndpointService.UndeployModel respectively.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedModelResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "The description of the Endpoint.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "enablePrivateServiceConnect": {
            "deprecationMessage": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
            "description": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
            "type": "boolean"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key."
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "modelDeploymentMonitoringJob": {
            "description": "Resource name of the Model Monitoring job associated with this Endpoint if monitoring is enabled by JobService.CreateModelDeploymentMonitoringJob. Format: `projects/{project}/locations/{location}/modelDeploymentMonitoringJobs/{model_deployment_monitoring_job}`",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Endpoint.",
            "type": "string"
          },
          "network": {
            "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name.",
            "type": "string"
          },
          "predictRequestResponseLoggingConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PredictRequestResponseLoggingConfigResponse",
            "description": "Configures the request-response logging for online prediction."
          },
          "trafficSplit": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map from a DeployedModel's ID to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel. If a DeployedModel's ID is not listed in this map, then it receives no traffic. The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment.",
            "type": "object"
          },
          "updateTime": {
            "description": "Timestamp when this Endpoint was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deployedModels",
          "description",
          "displayName",
          "enablePrivateServiceConnect",
          "encryptionSpec",
          "etag",
          "labels",
          "modelDeploymentMonitoringJob",
          "name",
          "network",
          "predictRequestResponseLoggingConfig",
          "trafficSplit",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getEntityType": {
      "description": "Gets details of a single EntityType.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this EntityType was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the EntityType.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your EntityTypes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one EntityType (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreMonitoringConfigResponse",
            "description": "Optional. The default monitoring configuration for all Features with value type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 under this EntityType. If this is populated with [FeaturestoreMonitoringConfig.monitoring_interval] specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring is disabled."
          },
          "name": {
            "description": "Immutable. Name of the EntityType. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` The last part entity_type is assigned by the client. The entity_type can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z and underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given a featurestore.",
            "type": "string"
          },
          "offlineStorageTtlDays": {
            "description": "Optional. Config for data retention policy in offline storage. TTL in days for feature values that will be stored in offline storage. The Feature Store offline storage periodically removes obsolete feature values older than `offline_storage_ttl_days` since the feature generation time. If unset (or explicitly set to 0), default to 4000 days TTL.",
            "type": "integer"
          },
          "updateTime": {
            "description": "Timestamp when this EntityType was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "labels",
          "monitoringConfig",
          "name",
          "offlineStorageTtlDays",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getExecution": {
      "description": "Retrieves a specific Execution.",
      "inputs": {
        "properties": {
          "executionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "executionId",
          "location",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Execution was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Execution",
            "type": "string"
          },
          "displayName": {
            "description": "User provided display name of the Execution. May be up to 128 Unicode characters.",
            "type": "string"
          },
          "etag": {
            "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Executions. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Execution (System labels are excluded).",
            "type": "object"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Properties of the Execution. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the Execution.",
            "type": "string"
          },
          "schemaTitle": {
            "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "schemaVersion": {
            "description": "The version of the schema in `schema_title` to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "state": {
            "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Execution was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "metadata",
          "name",
          "schemaTitle",
          "schemaVersion",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getExperiment": {
      "description": "Gets a TensorboardExperiment.",
      "inputs": {
        "properties": {
          "experimentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tensorboardId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "experimentId",
          "location",
          "tensorboardId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this TensorboardExperiment was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of this TensorboardExperiment.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of this TensorboardExperiment.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your TensorboardExperiment. Label keys and values cannot be longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `aiplatform.googleapis.com/` and are immutable. The following system labels exist for each Dataset: * `aiplatform.googleapis.com/dataset_metadata_schema`: output only. Its value is the metadata_schema's title.",
            "type": "object"
          },
          "name": {
            "description": "Name of the TensorboardExperiment. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}`",
            "type": "string"
          },
          "source": {
            "description": "Immutable. Source of the TensorboardExperiment. Example: a custom training job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this TensorboardExperiment was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "name",
          "source",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getFeatureGroup": {
      "description": "Gets details of a single FeatureGroup.",
      "inputs": {
        "properties": {
          "featureGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigQuery": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureGroupBigQueryResponse",
            "description": "Indicates that features for this group come from BigQuery Table/View. By default treats the source as a sparse time series source, which is required to have an entity_id and a feature_timestamp column in the source."
          },
          "createTime": {
            "description": "Timestamp when this FeatureGroup was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the FeatureGroup.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your FeatureGroup. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureGroup(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the FeatureGroup. Format: `projects/{project}/locations/{location}/featureGroups/{featureGroup}`",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this FeatureGroup was last updated.",
            "type": "string"
          }
        },
        "required": [
          "bigQuery",
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getFeatureGroupFeature": {
      "description": "Gets details of a single Feature.",
      "inputs": {
        "properties": {
          "featureGroupId": {
            "type": "string"
          },
          "featureId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureGroupId",
          "featureId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Feature.",
            "type": "string"
          },
          "disableMonitoring": {
            "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType.",
            "type": "boolean"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "monitoringStatsAnomalies": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). The list of historical stats and anomalies with specified objectives.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureMonitoringStatsAnomalyResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type.",
            "type": "string"
          },
          "updateTime": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was most recently updated.",
            "type": "string"
          },
          "valueType": {
            "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value.",
            "type": "string"
          },
          "versionColumnName": {
            "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "disableMonitoring",
          "etag",
          "labels",
          "monitoringStatsAnomalies",
          "name",
          "updateTime",
          "valueType",
          "versionColumnName"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getFeatureOnlineStore": {
      "description": "Gets details of a single FeatureOnlineStore.",
      "inputs": {
        "properties": {
          "featureOnlineStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureOnlineStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigtable": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureOnlineStoreBigtableResponse",
            "description": "Contains settings for the Cloud Bigtable instance that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore."
          },
          "createTime": {
            "description": "Timestamp when this FeatureOnlineStore was created.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your FeatureOnlineStore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the FeatureOnlineStore. Format: `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}`",
            "type": "string"
          },
          "state": {
            "description": "State of the featureOnlineStore.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this FeatureOnlineStore was last updated.",
            "type": "string"
          }
        },
        "required": [
          "bigtable",
          "createTime",
          "etag",
          "labels",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getFeatureStoreFeature": {
      "description": "Gets details of a single Feature.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "featureId": {
            "type": "string"
          },
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "featureId",
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Feature.",
            "type": "string"
          },
          "disableMonitoring": {
            "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType.",
            "type": "boolean"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "monitoringStatsAnomalies": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). The list of historical stats and anomalies with specified objectives.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureMonitoringStatsAnomalyResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type.",
            "type": "string"
          },
          "updateTime": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was most recently updated.",
            "type": "string"
          },
          "valueType": {
            "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value.",
            "type": "string"
          },
          "versionColumnName": {
            "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "disableMonitoring",
          "etag",
          "labels",
          "monitoringStatsAnomalies",
          "name",
          "updateTime",
          "valueType",
          "versionColumnName"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getFeatureView": {
      "description": "Gets details of a single FeatureView.",
      "inputs": {
        "properties": {
          "featureOnlineStoreId": {
            "type": "string"
          },
          "featureViewId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureOnlineStoreId",
          "featureViewId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigQuerySource": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewBigQuerySourceResponse",
            "description": "Optional. Configures how data is supposed to be extracted from a BigQuery source to be loaded onto the FeatureOnlineStore."
          },
          "createTime": {
            "description": "Timestamp when this FeatureView was created.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "featureRegistrySource": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceResponse",
            "description": "Optional. Configures the features from a Feature Registry source that need to be loaded onto the FeatureOnlineStore."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your FeatureViews. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the FeatureView. Format: `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}`",
            "type": "string"
          },
          "syncConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeatureViewSyncConfigResponse",
            "description": "Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving."
          },
          "updateTime": {
            "description": "Timestamp when this FeatureView was last updated.",
            "type": "string"
          }
        },
        "required": [
          "bigQuerySource",
          "createTime",
          "etag",
          "featureRegistrySource",
          "labels",
          "name",
          "syncConfig",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getFeaturestore": {
      "description": "Gets details of a single Featurestore.",
      "inputs": {
        "properties": {
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Featurestore was created.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Optional. Customer-managed encryption key spec for data storage. If set, both of the online and offline data storage will be secured by this key."
          },
          "etag": {
            "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your Featurestore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Featurestore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Featurestore. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}`",
            "type": "string"
          },
          "onlineServingConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigResponse",
            "description": "Optional. Config for online storage resources. The field should not co-exist with the field of `OnlineStoreReplicationConfig`. If both of it and OnlineStoreReplicationConfig are unset, the feature store will not have an online store and cannot be used for online serving."
          },
          "onlineStorageTtlDays": {
            "description": "Optional. TTL in days for feature values that will be stored in online serving storage. The Feature Store online storage periodically removes obsolete feature values older than `online_storage_ttl_days` since the feature generation time. Note that `online_storage_ttl_days` should be less than or equal to `offline_storage_ttl_days` for each EntityType under a featurestore. If not set, default to 4000 days",
            "type": "integer"
          },
          "state": {
            "description": "State of the featurestore.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Featurestore was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "encryptionSpec",
          "etag",
          "labels",
          "name",
          "onlineServingConfig",
          "onlineStorageTtlDays",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getFeaturestoreEntityTypeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getFeaturestoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getHyperparameterTuningJob": {
      "description": "Gets a HyperparameterTuningJob",
      "inputs": {
        "properties": {
          "hyperparameterTuningJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hyperparameterTuningJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the HyperparameterTuningJob was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key."
          },
          "endTime": {
            "description": "Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
            "description": "Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize HyperparameterTuningJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "maxFailedTrialCount": {
            "description": "The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails.",
            "type": "integer"
          },
          "maxTrialCount": {
            "description": "The desired total number of Trials.",
            "type": "integer"
          },
          "name": {
            "description": "Resource name of the HyperparameterTuningJob.",
            "type": "string"
          },
          "parallelTrialCount": {
            "description": "The desired number of Trials to run in parallel.",
            "type": "integer"
          },
          "startTime": {
            "description": "Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "studySpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecResponse",
            "description": "Study configuration of the HyperparameterTuningJob."
          },
          "trialJobSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CustomJobSpecResponse",
            "description": "The spec of a trial job. The same spec applies to the CustomJobs created in all the trials."
          },
          "trials": {
            "description": "Trials of the HyperparameterTuningJob.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TrialResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Time when the HyperparameterTuningJob was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "labels",
          "maxFailedTrialCount",
          "maxTrialCount",
          "name",
          "parallelTrialCount",
          "startTime",
          "state",
          "studySpec",
          "trialJobSpec",
          "trials",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getIndex": {
      "description": "Gets an Index.",
      "inputs": {
        "properties": {
          "indexId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "indexId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Index was created.",
            "type": "string"
          },
          "deployedIndexes": {
            "description": "The pointers to DeployedIndexes created from this Index. An Index can be only deleted if all its DeployedIndexes had been undeployed first.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedIndexRefResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "The description of the Index.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Immutable. Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key."
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "indexStats": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1IndexStatsResponse",
            "description": "Stats of the index resource."
          },
          "indexUpdateMethod": {
            "description": "Immutable. The update method to use with this Index. If not set, BATCH_UPDATE will be used by default.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Indexes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "metadata": {
            "$ref": "pulumi.json#/Any",
            "description": "An additional information about the Index; the schema of the metadata can be found in metadata_schema."
          },
          "metadataSchemaUri": {
            "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Index, that is specific to it. Unset if the Index does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Index.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Index was most recently updated. This also includes any update to the contents of the Index. Note that Operations working on this Index may have their Operations.metadata.generic_metadata.update_time a little after the value of this timestamp, yet that does not mean their results are not already reflected in the Index. Result of any successfully completed Operation on the Index is reflected in it.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deployedIndexes",
          "description",
          "displayName",
          "encryptionSpec",
          "etag",
          "indexStats",
          "indexUpdateMethod",
          "labels",
          "metadata",
          "metadataSchemaUri",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getIndexEndpoint": {
      "description": "Gets an IndexEndpoint.",
      "inputs": {
        "properties": {
          "indexEndpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "indexEndpointId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this IndexEndpoint was created.",
            "type": "string"
          },
          "deployedIndexes": {
            "description": "The indexes deployed in this endpoint.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1DeployedIndexResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "The description of the IndexEndpoint.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the IndexEndpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "enablePrivateServiceConnect": {
            "deprecationMessage": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
            "description": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
            "type": "boolean"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Immutable. Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key."
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your IndexEndpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the IndexEndpoint.",
            "type": "string"
          },
          "network": {
            "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the IndexEndpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. network and private_service_connect_config are mutually exclusive. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in '12345', and {network} is network name.",
            "type": "string"
          },
          "privateServiceConnectConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PrivateServiceConnectConfigResponse",
            "description": "Optional. Configuration for private service connect. network and private_service_connect_config are mutually exclusive."
          },
          "publicEndpointDomainName": {
            "description": "If public_endpoint_enabled is true, this field will be populated with the domain name to use for this index endpoint.",
            "type": "string"
          },
          "publicEndpointEnabled": {
            "description": "Optional. If true, the deployed index will be accessible through public endpoint.",
            "type": "boolean"
          },
          "updateTime": {
            "description": "Timestamp when this IndexEndpoint was last updated. This timestamp is not updated when the endpoint's DeployedIndexes are updated, e.g. due to updates of the original Indexes they are the deployments of.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deployedIndexes",
          "description",
          "displayName",
          "enablePrivateServiceConnect",
          "encryptionSpec",
          "etag",
          "labels",
          "name",
          "network",
          "privateServiceConnectConfig",
          "publicEndpointDomainName",
          "publicEndpointEnabled",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getMetadataSchema": {
      "description": "Retrieves a specific MetadataSchema.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "metadataSchemaId": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "metadataSchemaId",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this MetadataSchema was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Metadata Schema",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the MetadataSchema.",
            "type": "string"
          },
          "schema": {
            "description": "The raw YAML string representation of the MetadataSchema. The combination of [MetadataSchema.version] and the schema name given by `title` in [MetadataSchema.schema] must be unique within a MetadataStore. The schema is defined as an OpenAPI 3.0.2 [MetadataSchema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)",
            "type": "string"
          },
          "schemaType": {
            "description": "The type of the MetadataSchema. This is a property that identifies which metadata types will use the MetadataSchema.",
            "type": "string"
          },
          "schemaVersion": {
            "description": "The version of the MetadataSchema. The version's format must match the following regular expression: `^[0-9]+.+.+$`, which would allow to order/compare different versions. Example: 1.0.0, 1.0.1, etc.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "schema",
          "schemaType",
          "schemaVersion"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getMetadataStore": {
      "description": "Retrieves a specific MetadataStore.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this MetadataStore was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the MetadataStore.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a Metadata Store. If set, this Metadata Store and all sub-resources of this Metadata Store are secured using this key."
          },
          "name": {
            "description": "The resource name of the MetadataStore instance.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MetadataStoreMetadataStoreStateResponse",
            "description": "State information of the MetadataStore."
          },
          "updateTime": {
            "description": "Timestamp when this MetadataStore was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "encryptionSpec",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getModelDeploymentMonitoringJob": {
      "description": "Gets a ModelDeploymentMonitoringJob.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "modelDeploymentMonitoringJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "modelDeploymentMonitoringJobId"
        ]
      },
      "outputs": {
        "properties": {
          "analysisInstanceSchemaUri": {
            "description": "YAML schema file uri describing the format of a single instance that you want Tensorflow Data Validation (TFDV) to analyze. If this field is empty, all the feature data types are inferred from predict_instance_schema_uri, meaning that TFDV will use the data in the exact format(data type) as prediction request/response. If there are any data type differences between predict instance and TFDV instance, this field can be used to override the schema. For models trained with Vertex AI, this field must be set as all the fields in predict instance formatted as string.",
            "type": "string"
          },
          "bigqueryTables": {
            "description": "The created bigquery tables for the job under customer project. Customer could do their own query \u0026 analysis. There could be 4 log tables in maximum: 1. Training data logging predict request/response 2. Serving data logging predict request/response",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringBigQueryTableResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp when this ModelDeploymentMonitoringJob was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-defined name of the ModelDeploymentMonitoringJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a ModelDeploymentMonitoringJob.",
            "type": "string"
          },
          "enableMonitoringPipelineLogs": {
            "description": "If true, the scheduled monitoring pipeline logs are sent to Google Cloud Logging, including pipeline status and anomalies detected. Please note the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging#pricing).",
            "type": "boolean"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a ModelDeploymentMonitoringJob. If set, this ModelDeploymentMonitoringJob and all sub-resources of this ModelDeploymentMonitoringJob will be secured by this key."
          },
          "endpoint": {
            "description": "Endpoint resource name. Format: `projects/{project}/locations/{location}/endpoints/{endpoint}`",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
            "description": "Only populated when the job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your ModelDeploymentMonitoringJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "latestMonitoringPipelineMetadata": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringJobLatestMonitoringPipelineMetadataResponse",
            "description": "Latest triggered monitoring pipeline metadata."
          },
          "logTtl": {
            "description": "The TTL of BigQuery tables in user projects which stores logs. A day is the basic unit of the TTL and we take the ceil of TTL/86400(a day). e.g. { second: 3600} indicates ttl = 1 day.",
            "type": "string"
          },
          "loggingSamplingStrategy": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1SamplingStrategyResponse",
            "description": "Sample Strategy for logging."
          },
          "modelDeploymentMonitoringObjectiveConfigs": {
            "description": "The config for monitoring objectives. This is a per DeployedModel config. Each DeployedModel needs to be configured separately.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringObjectiveConfigResponse"
            },
            "type": "array"
          },
          "modelDeploymentMonitoringScheduleConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelDeploymentMonitoringScheduleConfigResponse",
            "description": "Schedule config for running the monitoring job."
          },
          "modelMonitoringAlertConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelMonitoringAlertConfigResponse",
            "description": "Alert config for model monitoring."
          },
          "name": {
            "description": "Resource name of a ModelDeploymentMonitoringJob.",
            "type": "string"
          },
          "nextScheduleTime": {
            "description": "Timestamp when this monitoring pipeline will be scheduled to run for the next round.",
            "type": "string"
          },
          "predictInstanceSchemaUri": {
            "description": "YAML schema file uri describing the format of a single instance, which are given to format this Endpoint's prediction (and explanation). If not set, we will generate predict schema from collected predict requests.",
            "type": "string"
          },
          "samplePredictInstance": {
            "$ref": "pulumi.json#/Any",
            "description": "Sample Predict instance, same format as PredictRequest.instances, this can be set as a replacement of ModelDeploymentMonitoringJob.predict_instance_schema_uri. If not set, we will generate predict schema from collected predict requests."
          },
          "scheduleState": {
            "description": "Schedule state when the monitoring job is in Running state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the monitoring job. When the job is still creating, the state will be 'PENDING'. Once the job is successfully created, the state will be 'RUNNING'. Pause the job, the state will be 'PAUSED'. Resume the job, the state will return to 'RUNNING'.",
            "type": "string"
          },
          "statsAnomaliesBaseDirectory": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1GcsDestinationResponse",
            "description": "Stats anomalies base folder path."
          },
          "updateTime": {
            "description": "Timestamp when this ModelDeploymentMonitoringJob was updated most recently.",
            "type": "string"
          }
        },
        "required": [
          "analysisInstanceSchemaUri",
          "bigqueryTables",
          "createTime",
          "displayName",
          "enableMonitoringPipelineLogs",
          "encryptionSpec",
          "endpoint",
          "error",
          "labels",
          "latestMonitoringPipelineMetadata",
          "logTtl",
          "loggingSamplingStrategy",
          "modelDeploymentMonitoringObjectiveConfigs",
          "modelDeploymentMonitoringScheduleConfig",
          "modelMonitoringAlertConfig",
          "name",
          "nextScheduleTime",
          "predictInstanceSchemaUri",
          "samplePredictInstance",
          "scheduleState",
          "state",
          "statsAnomaliesBaseDirectory",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getNasJob": {
      "description": "Gets a NasJob",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "nasJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "nasJobId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the NasJob was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the NasJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "enableRestrictedImageTraining": {
            "description": "Optional. Enable a separation of Custom model training and restricted image training for tenant project.",
            "type": "boolean"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key options for a NasJob. If this is set, then all resources created by the NasJob will be encrypted with the provided encryption key."
          },
          "endTime": {
            "description": "Time when the NasJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
            "description": "Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize NasJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the NasJob.",
            "type": "string"
          },
          "nasJobOutput": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobOutputResponse",
            "description": "Output of the NasJob."
          },
          "nasJobSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NasJobSpecResponse",
            "description": "The specification of a NasJob."
          },
          "startTime": {
            "description": "Time when the NasJob for the first time entered the `JOB_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the NasJob was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "enableRestrictedImageTraining",
          "encryptionSpec",
          "endTime",
          "error",
          "labels",
          "name",
          "nasJobOutput",
          "nasJobSpec",
          "startTime",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getNotebookRuntimeTemplate": {
      "description": "Gets a NotebookRuntimeTemplate.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "notebookRuntimeTemplateId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "notebookRuntimeTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this NotebookRuntimeTemplate was created.",
            "type": "string"
          },
          "dataPersistentDiskSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PersistentDiskSpecResponse",
            "description": "Optional. The specification of persistent disk attached to the runtime as data disk storage."
          },
          "description": {
            "description": "The description of the NotebookRuntimeTemplate.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the NotebookRuntimeTemplate. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "eucConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NotebookEucConfigResponse",
            "description": "EUC configuration of the NotebookRuntimeTemplate."
          },
          "idleShutdownConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NotebookIdleShutdownConfigResponse",
            "description": "The idle shutdown configuration of NotebookRuntimeTemplate. This config will only be set when idle shutdown is enabled."
          },
          "isDefault": {
            "description": "The default template to use if not specified.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize the NotebookRuntimeTemplates. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "machineSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MachineSpecResponse",
            "description": "Optional. Immutable. The specification of a single machine for the template."
          },
          "name": {
            "description": "The resource name of the NotebookRuntimeTemplate.",
            "type": "string"
          },
          "networkSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1NetworkSpecResponse",
            "description": "Optional. Network spec."
          },
          "notebookRuntimeType": {
            "description": "Optional. Immutable. The type of the notebook runtime template.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account that the runtime workload runs as. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this NotebookRuntimeTemplate was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataPersistentDiskSpec",
          "description",
          "displayName",
          "etag",
          "eucConfig",
          "idleShutdownConfig",
          "isDefault",
          "labels",
          "machineSpec",
          "name",
          "networkSpec",
          "notebookRuntimeType",
          "serviceAccount",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getNotebookRuntimeTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "notebookRuntimeTemplateId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "notebookRuntimeTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getPipelineJob": {
      "description": "Gets a PipelineJob.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "pipelineJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "pipelineJobId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Pipeline creation time.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
          },
          "endTime": {
            "description": "Pipeline end time.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
            "description": "The error that occurred during pipeline execution. Only populated when the pipeline's state is FAILED or CANCELLED."
          },
          "jobDetail": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobDetailResponse",
            "description": "The details of pipeline run. Not available in the list view."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the PipelineJob.",
            "type": "string"
          },
          "network": {
            "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network.",
            "type": "string"
          },
          "pipelineSpec": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The spec of the pipeline.",
            "type": "object"
          },
          "reservedIpRanges": {
            "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range'].",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "runtimeConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineJobRuntimeConfigResponse",
            "description": "Runtime config of the pipeline."
          },
          "scheduleName": {
            "description": "The schedule resource name. Only returned if the Pipeline is created by Schedule API.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account.",
            "type": "string"
          },
          "startTime": {
            "description": "Pipeline start time.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "templateMetadata": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1PipelineTemplateMetadataResponse",
            "description": "Pipeline template metadata. Will fill up fields if PipelineJob.template_uri is from supported template registry."
          },
          "templateUri": {
            "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry \u0026 Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this PipelineJob was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "jobDetail",
          "labels",
          "name",
          "network",
          "pipelineSpec",
          "reservedIpRanges",
          "runtimeConfig",
          "scheduleName",
          "serviceAccount",
          "startTime",
          "state",
          "templateMetadata",
          "templateUri",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getRun": {
      "description": "Gets a TensorboardRun.",
      "inputs": {
        "properties": {
          "experimentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "runId": {
            "type": "string"
          },
          "tensorboardId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "experimentId",
          "location",
          "runId",
          "tensorboardId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this TensorboardRun was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of this TensorboardRun.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of this TensorboardRun. This value must be unique among all TensorboardRuns belonging to the same parent TensorboardExperiment.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your TensorboardRuns. This field will be used to filter and visualize Runs in the Tensorboard UI. For example, a Vertex AI training job can set a label aiplatform.googleapis.com/training_job_id=xxxxx to all the runs created within that job. An end user can set a label experiment_id=xxxxx for all the runs produced in a Jupyter notebook. These runs can be grouped by a label value and visualized together in the Tensorboard UI. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one TensorboardRun (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the TensorboardRun. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}/runs/{run}`",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this TensorboardRun was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getSchedule": {
      "description": "Gets a Schedule.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scheduleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scheduleId"
        ]
      },
      "outputs": {
        "properties": {
          "allowQueueing": {
            "description": "Optional. Whether new scheduled runs can be queued when max_concurrent_runs limit is reached. If set to true, new runs will be queued instead of skipped. Default to false.",
            "type": "boolean"
          },
          "catchUp": {
            "description": "Whether to backfill missed runs when the schedule is resumed from PAUSED state. If set to true, all missed runs will be scheduled. New runs will be scheduled after the backfill is complete. Default to false.",
            "type": "boolean"
          },
          "createPipelineJobRequest": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1CreatePipelineJobRequestResponse",
            "description": "Request for PipelineService.CreatePipelineJob. CreatePipelineJobRequest.parent field is required (format: projects/{project}/locations/{location})."
          },
          "createTime": {
            "description": "Timestamp when this Schedule was created.",
            "type": "string"
          },
          "cron": {
            "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\".",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of the Schedule. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "endTime": {
            "description": "Optional. Timestamp after which no new runs can be scheduled. If specified, The schedule will be completed when either end_time is reached or when scheduled_run_count \u003e= max_run_count. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified.",
            "type": "string"
          },
          "lastPauseTime": {
            "description": "Timestamp when this Schedule was last paused. Unset if never paused.",
            "type": "string"
          },
          "lastResumeTime": {
            "description": "Timestamp when this Schedule was last resumed. Unset if never resumed from pause.",
            "type": "string"
          },
          "lastScheduledRunResponse": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ScheduleRunResponseResponse",
            "description": "Response of the last scheduled run. This is the response for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable). Unset if no run has been scheduled yet."
          },
          "maxConcurrentRunCount": {
            "description": "Maximum number of runs that can be started concurrently for this Schedule. This is the limit for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable).",
            "type": "string"
          },
          "maxRunCount": {
            "description": "Optional. Maximum run count of the schedule. If specified, The schedule will be completed when either started_run_count \u003e= max_run_count or when end_time is reached. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the Schedule.",
            "type": "string"
          },
          "nextRunTime": {
            "description": "Timestamp when this Schedule should schedule the next run. Having a next_run_time in the past means the runs are being started behind schedule.",
            "type": "string"
          },
          "startTime": {
            "description": "Optional. Timestamp after which the first run can be scheduled. Default to Schedule create time if not specified.",
            "type": "string"
          },
          "startedRunCount": {
            "description": "The number of runs started by this schedule.",
            "type": "string"
          },
          "state": {
            "description": "The state of this Schedule.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Schedule was updated.",
            "type": "string"
          }
        },
        "required": [
          "allowQueueing",
          "catchUp",
          "createPipelineJobRequest",
          "createTime",
          "cron",
          "displayName",
          "endTime",
          "lastPauseTime",
          "lastResumeTime",
          "lastScheduledRunResponse",
          "maxConcurrentRunCount",
          "maxRunCount",
          "name",
          "nextRunTime",
          "startTime",
          "startedRunCount",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getSpecialistPool": {
      "description": "Gets a SpecialistPool.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "specialistPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "specialistPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The user-defined name of the SpecialistPool. The name can be up to 128 characters long and can consist of any UTF-8 characters. This field should be unique on project-level.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the SpecialistPool.",
            "type": "string"
          },
          "pendingDataLabelingJobs": {
            "description": "The resource name of the pending data labeling jobs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "specialistManagerEmails": {
            "description": "The email addresses of the managers in the SpecialistPool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "specialistManagersCount": {
            "description": "The number of managers in this SpecialistPool.",
            "type": "integer"
          },
          "specialistWorkerEmails": {
            "description": "The email addresses of workers in the SpecialistPool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "displayName",
          "name",
          "pendingDataLabelingJobs",
          "specialistManagerEmails",
          "specialistManagersCount",
          "specialistWorkerEmails"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getStudy": {
      "description": "Gets a Study by name.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "studyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "studyId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time at which the study was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Describes the Study, default value is empty string.",
            "type": "string"
          },
          "inactiveReason": {
            "description": "A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED.",
            "type": "string"
          },
          "name": {
            "description": "The name of a study. The study's globally unique identifier. Format: `projects/{project}/locations/{location}/studies/{study}`",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of a Study.",
            "type": "string"
          },
          "studySpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1StudySpecResponse",
            "description": "Configuration of the Study."
          }
        },
        "required": [
          "createTime",
          "displayName",
          "inactiveReason",
          "name",
          "state",
          "studySpec"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getTensorboard": {
      "description": "Gets a Tensorboard.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tensorboardId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tensorboardId"
        ]
      },
      "outputs": {
        "properties": {
          "blobStoragePathPrefix": {
            "description": "Consumer project Cloud Storage path prefix used to store blob data, which can either be a bucket or directory. Does not end with a '/'.",
            "type": "string"
          },
          "createTime": {
            "description": "Timestamp when this Tensorboard was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of this Tensorboard.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of this Tensorboard.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a Tensorboard. If set, this Tensorboard and all sub-resources of this Tensorboard will be secured by this key."
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "isDefault": {
            "description": "Used to indicate if the TensorBoard instance is the default one. Each project \u0026 region can have at most one default TensorBoard instance. Creation of a default TensorBoard instance and updating an existing TensorBoard instance to be default will mark all other TensorBoard instances (if any) as non default.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Tensorboards. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Tensorboard (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Tensorboard. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`",
            "type": "string"
          },
          "runCount": {
            "description": "The number of Runs stored in this Tensorboard.",
            "type": "integer"
          },
          "updateTime": {
            "description": "Timestamp when this Tensorboard was last updated.",
            "type": "string"
          }
        },
        "required": [
          "blobStoragePathPrefix",
          "createTime",
          "description",
          "displayName",
          "encryptionSpec",
          "etag",
          "isDefault",
          "labels",
          "name",
          "runCount",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getTimeSeries": {
      "description": "Gets a TensorboardTimeSeries.",
      "inputs": {
        "properties": {
          "experimentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "runId": {
            "type": "string"
          },
          "tensorboardId": {
            "type": "string"
          },
          "timeSeriesId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "experimentId",
          "location",
          "runId",
          "tensorboardId",
          "timeSeriesId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this TensorboardTimeSeries was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of this TensorboardTimeSeries.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of this TensorboardTimeSeries. This value should be unique among all TensorboardTimeSeries resources belonging to the same TensorboardRun resource (parent resource).",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TensorboardTimeSeriesMetadataResponse",
            "description": "Scalar, Tensor, or Blob metadata for this TensorboardTimeSeries."
          },
          "name": {
            "description": "Name of the TensorboardTimeSeries.",
            "type": "string"
          },
          "pluginData": {
            "description": "Data of the current plugin, with the size limited to 65KB.",
            "type": "string"
          },
          "pluginName": {
            "description": "Immutable. Name of the plugin this time series pertain to. Such as Scalar, Tensor, Blob",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this TensorboardTimeSeries was last updated.",
            "type": "string"
          },
          "valueType": {
            "description": "Immutable. Type of TensorboardTimeSeries value.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "metadata",
          "name",
          "pluginData",
          "pluginName",
          "updateTime",
          "valueType"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getTrainingPipeline": {
      "description": "Gets a TrainingPipeline.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "trainingPipelineId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "trainingPipelineId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the TrainingPipeline was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-defined name of this TrainingPipeline.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a TrainingPipeline. If set, this TrainingPipeline will be secured by this key. Note: Model trained by this TrainingPipeline is also secured by this key if model_to_upload is not set separately."
          },
          "endTime": {
            "description": "Time when the TrainingPipeline entered any of the following states: `PIPELINE_STATE_SUCCEEDED`, `PIPELINE_STATE_FAILED`, `PIPELINE_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleRpcStatusResponse",
            "description": "Only populated when the pipeline's state is `PIPELINE_STATE_FAILED` or `PIPELINE_STATE_CANCELLED`."
          },
          "inputDataConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1InputDataConfigResponse",
            "description": "Specifies Vertex AI owned input data that may be used for training the Model. The TrainingPipeline's training_task_definition should make clear whether this config is used and if there are any special requirements on how it should be filled. If nothing about this config is mentioned in the training_task_definition, then it should be assumed that the TrainingPipeline does not depend on this configuration."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize TrainingPipelines. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "modelId": {
            "description": "Optional. The ID to use for the uploaded Model, which will become the final component of the model resource name. This value may be up to 63 characters, and valid characters are `[a-z0-9_-]`. The first character cannot be a number or hyphen.",
            "type": "string"
          },
          "modelToUpload": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1ModelResponse",
            "description": "Describes the Model that may be uploaded (via ModelService.UploadModel) by this TrainingPipeline. The TrainingPipeline's training_task_definition should make clear whether this Model description should be populated, and if there are any special requirements regarding how it should be filled. If nothing is mentioned in the training_task_definition, then it should be assumed that this field should not be filled and the training task either uploads the Model without a need of this information, or that training task does not support uploading a Model as part of the pipeline. When the Pipeline's state becomes `PIPELINE_STATE_SUCCEEDED` and the trained Model had been uploaded into Vertex AI, then the model_to_upload's resource name is populated. The Model is always uploaded into the Project and Location in which this pipeline is."
          },
          "name": {
            "description": "Resource name of the TrainingPipeline.",
            "type": "string"
          },
          "parentModel": {
            "description": "Optional. When specify this field, the `model_to_upload` will not be uploaded as a new model, instead, it will become a new version of this `parent_model`.",
            "type": "string"
          },
          "startTime": {
            "description": "Time when the TrainingPipeline for the first time entered the `PIPELINE_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the pipeline.",
            "type": "string"
          },
          "trainingTaskDefinition": {
            "description": "A Google Cloud Storage path to the YAML file that defines the training task which is responsible for producing the model artifact, and may also include additional auxiliary work. The definition files that can be used here are found in gs://google-cloud-aiplatform/schema/trainingjob/definition/. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access.",
            "type": "string"
          },
          "trainingTaskInputs": {
            "$ref": "pulumi.json#/Any",
            "description": "The training task's parameter(s), as specified in the training_task_definition's `inputs`."
          },
          "trainingTaskMetadata": {
            "$ref": "pulumi.json#/Any",
            "description": "The metadata information as specified in the training_task_definition's `metadata`. This metadata is an auxiliary runtime and final information about the training task. While the pipeline is running this information is populated only at a best effort basis. Only present if the pipeline's training_task_definition contains `metadata` object."
          },
          "updateTime": {
            "description": "Time when the TrainingPipeline was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "inputDataConfig",
          "labels",
          "modelId",
          "modelToUpload",
          "name",
          "parentModel",
          "startTime",
          "state",
          "trainingTaskDefinition",
          "trainingTaskInputs",
          "trainingTaskMetadata",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1:getTrial": {
      "description": "Gets a Trial.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "studyId": {
            "type": "string"
          },
          "trialId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "studyId",
          "trialId"
        ]
      },
      "outputs": {
        "properties": {
          "clientId": {
            "description": "The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial.",
            "type": "string"
          },
          "customJob": {
            "description": "The CustomJob name linked to the Trial. It's set for a HyperparameterTuningJob's Trial.",
            "type": "string"
          },
          "endTime": {
            "description": "Time when the Trial's status changed to `SUCCEEDED` or `INFEASIBLE`.",
            "type": "string"
          },
          "finalMeasurement": {
            "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MeasurementResponse",
            "description": "The final measurement containing the objective value."
          },
          "infeasibleReason": {
            "description": "A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`.",
            "type": "string"
          },
          "measurements": {
            "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1MeasurementResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Resource name of the Trial assigned by the service.",
            "type": "string"
          },
          "parameters": {
            "description": "The parameters of the Trial.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1:GoogleCloudAiplatformV1TrialParameterResponse"
            },
            "type": "array"
          },
          "startTime": {
            "description": "Time when the Trial was started.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the Trial.",
            "type": "string"
          },
          "webAccessUris": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job's trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell.",
            "type": "object"
          }
        },
        "required": [
          "clientId",
          "customJob",
          "endTime",
          "finalMeasurement",
          "infeasibleReason",
          "measurements",
          "name",
          "parameters",
          "startTime",
          "state",
          "webAccessUris"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getArtifact": {
      "description": "Retrieves a specific Artifact.",
      "inputs": {
        "properties": {
          "artifactId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "artifactId",
          "location",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Artifact was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Artifact",
            "type": "string"
          },
          "displayName": {
            "description": "User provided display name of the Artifact. May be up to 128 Unicode characters.",
            "type": "string"
          },
          "etag": {
            "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Artifacts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Artifact (System labels are excluded).",
            "type": "object"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Properties of the Artifact. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the Artifact.",
            "type": "string"
          },
          "schemaTitle": {
            "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "schemaVersion": {
            "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "state": {
            "description": "The state of this Artifact. This is a property of the Artifact, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines), and the system does not prescribe or check the validity of state transitions.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Artifact was last updated.",
            "type": "string"
          },
          "uri": {
            "description": "The uniform resource identifier of the artifact file. May be empty if there is no actual artifact file.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "metadata",
          "name",
          "schemaTitle",
          "schemaVersion",
          "state",
          "updateTime",
          "uri"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getBatchPredictionJob": {
      "description": "Gets a BatchPredictionJob",
      "inputs": {
        "properties": {
          "batchPredictionJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "batchPredictionJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "completionStats": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CompletionStatsResponse",
            "description": "Statistics on completed and failed prediction instances."
          },
          "createTime": {
            "description": "Time when the BatchPredictionJob was created.",
            "type": "string"
          },
          "dedicatedResources": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchDedicatedResourcesResponse",
            "description": "The config of resources used by the Model during the batch prediction. If the Model supports DEDICATED_RESOURCES this config may be provided (and the job will use these resources), if the Model doesn't support AUTOMATIC_RESOURCES, this config must be provided."
          },
          "disableContainerLogging": {
            "description": "For custom-trained Models and AutoML Tabular Models, the container of the DeployedModel instances will send `stderr` and `stdout` streams to Cloud Logging by default. Please note that the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can disable container logging by setting this flag to true.",
            "type": "boolean"
          },
          "displayName": {
            "description": "The user-defined name of this BatchPredictionJob.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key options for a BatchPredictionJob. If this is set, then all resources created by the BatchPredictionJob will be encrypted with the provided encryption key."
          },
          "endTime": {
            "description": "Time when the BatchPredictionJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "Only populated when the job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
          },
          "explanationSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ExplanationSpecResponse",
            "description": "Explanation configuration for this BatchPredictionJob. Can be specified only if generate_explanation is set to `true`. This value overrides the value of Model.explanation_spec. All fields of explanation_spec are optional in the request. If a field of the explanation_spec object is not populated, the corresponding field of the Model.explanation_spec object is inherited."
          },
          "generateExplanation": {
            "description": "Generate explanation with the batch prediction results. When set to `true`, the batch prediction output changes based on the `predictions_format` field of the BatchPredictionJob.output_config object: * `bigquery`: output includes a column named `explanation`. The value is a struct that conforms to the Explanation object. * `jsonl`: The JSON objects on each line include an additional entry keyed `explanation`. The value of the entry is a JSON object that conforms to the Explanation object. * `csv`: Generating explanations for CSV format is not supported. If this field is set to true, either the Model.explanation_spec or explanation_spec must be populated.",
            "type": "boolean"
          },
          "inputConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInputConfigResponse",
            "description": "Input configuration of the instances on which predictions are performed. The schema of any single instance may be specified via the Model's PredictSchemata's instance_schema_uri."
          },
          "instanceConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobInstanceConfigResponse",
            "description": "Configuration for how to convert batch prediction input instances to the prediction instances that are sent to the Model."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize BatchPredictionJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "manualBatchTuningParameters": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ManualBatchTuningParametersResponse",
            "description": "Immutable. Parameters configuring the batch behavior. Currently only applicable when dedicated_resources are used (in other cases Vertex AI does the tuning itself)."
          },
          "model": {
            "description": "The name of the Model resource that produces the predictions via this job, must share the same ancestor Location. Starting this job has no impact on any existing deployments of the Model and their resources. Exactly one of model and unmanaged_container_model must be set. The model resource name may contain version id or version alias to specify the version. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` if no version is specified, the default version will be deployed. The model resource could also be a publisher model. Example: `publishers/{publisher}/models/{model}` or `projects/{project}/locations/{location}/publishers/{publisher}/models/{model}`",
            "type": "string"
          },
          "modelMonitoringConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringConfigResponse",
            "description": "Model monitoring config will be used for analysis model behaviors, based on the input and output to the batch prediction job, as well as the provided training dataset."
          },
          "modelMonitoringStatsAnomalies": {
            "description": "Get batch prediction job monitoring statistics.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringStatsAnomaliesResponse"
            },
            "type": "array"
          },
          "modelMonitoringStatus": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "The running status of the model monitoring pipeline."
          },
          "modelParameters": {
            "$ref": "pulumi.json#/Any",
            "description": "The parameters that govern the predictions. The schema of the parameters may be specified via the Model's PredictSchemata's parameters_schema_uri."
          },
          "modelVersionId": {
            "description": "The version ID of the Model that produces the predictions via this job.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the BatchPredictionJob.",
            "type": "string"
          },
          "outputConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobOutputConfigResponse",
            "description": "The Configuration specifying where output predictions should be written. The schema of any single prediction may be specified as a concatenation of Model's PredictSchemata's instance_schema_uri and prediction_schema_uri."
          },
          "outputInfo": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1BatchPredictionJobOutputInfoResponse",
            "description": "Information further describing the output of this job."
          },
          "partialFailures": {
            "description": "Partial failures encountered. For example, single files that can't be read. This field never exceeds 20 entries. Status details fields contain standard Google Cloud error details.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse"
            },
            "type": "array"
          },
          "resourcesConsumed": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourcesConsumedResponse",
            "description": "Information about resources that had been consumed by this job. Provided in real time at best effort basis, as well as a final value once the job completes. Note: This field currently may be not populated for batch predictions that use AutoML Models."
          },
          "serviceAccount": {
            "description": "The service account that the DeployedModel's container runs as. If not specified, a system generated one will be used, which has minimal permissions and the custom container, if used, may not have enough permission to access other Google Cloud resources. Users deploying the Model must have the `iam.serviceAccounts.actAs` permission on this service account.",
            "type": "string"
          },
          "startTime": {
            "description": "Time when the BatchPredictionJob for the first time entered the `JOB_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "unmanagedContainerModel": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1UnmanagedContainerModelResponse",
            "description": "Contains model information necessary to perform batch prediction without requiring uploading to model registry. Exactly one of model and unmanaged_container_model must be set."
          },
          "updateTime": {
            "description": "Time when the BatchPredictionJob was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "completionStats",
          "createTime",
          "dedicatedResources",
          "disableContainerLogging",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "explanationSpec",
          "generateExplanation",
          "inputConfig",
          "instanceConfig",
          "labels",
          "manualBatchTuningParameters",
          "model",
          "modelMonitoringConfig",
          "modelMonitoringStatsAnomalies",
          "modelMonitoringStatus",
          "modelParameters",
          "modelVersionId",
          "name",
          "outputConfig",
          "outputInfo",
          "partialFailures",
          "resourcesConsumed",
          "serviceAccount",
          "startTime",
          "state",
          "unmanagedContainerModel",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getContext": {
      "description": "Retrieves a specific Context.",
      "inputs": {
        "properties": {
          "contextId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contextId",
          "location",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Context was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Context",
            "type": "string"
          },
          "displayName": {
            "description": "User provided display name of the Context. May be up to 128 Unicode characters.",
            "type": "string"
          },
          "etag": {
            "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Contexts. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Context (System labels are excluded).",
            "type": "object"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Properties of the Context. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The resource name of the Context.",
            "type": "string"
          },
          "parentContexts": {
            "description": "A list of resource names of Contexts that are parents of this Context. A Context may have at most 10 parent_contexts.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "schemaTitle": {
            "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "schemaVersion": {
            "description": "The version of the schema in schema_name to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Context was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "metadata",
          "name",
          "parentContexts",
          "schemaTitle",
          "schemaVersion",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getCustomJob": {
      "description": "Gets a CustomJob.",
      "inputs": {
        "properties": {
          "customJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the CustomJob was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the CustomJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key options for a CustomJob. If this is set, then all resources created by the CustomJob will be encrypted with the provided encryption key."
          },
          "endTime": {
            "description": "Time when the CustomJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "Only populated when job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
          },
          "jobSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpecResponse",
            "description": "Job spec."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize CustomJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of a CustomJob.",
            "type": "string"
          },
          "startTime": {
            "description": "Time when the CustomJob for the first time entered the `JOB_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the CustomJob was most recently updated.",
            "type": "string"
          },
          "webAccessUris": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if job_spec.enable_web_access is `true`. The keys are names of each node in the training job; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell.",
            "type": "object"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "jobSpec",
          "labels",
          "name",
          "startTime",
          "state",
          "updateTime",
          "webAccessUris"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getDataLabelingJob": {
      "description": "Gets a DataLabelingJob.",
      "inputs": {
        "properties": {
          "dataLabelingJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataLabelingJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "activeLearningConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ActiveLearningConfigResponse",
            "description": "Parameters that configure the active learning pipeline. Active learning will label the data incrementally via several iterations. For every iteration, it will select a batch of data based on the sampling strategy."
          },
          "annotationLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to assign to annotations generated by this DataLabelingJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "createTime": {
            "description": "Timestamp when this DataLabelingJob was created.",
            "type": "string"
          },
          "currentSpend": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleTypeMoneyResponse",
            "description": "Estimated cost(in US dollars) that the DataLabelingJob has incurred to date."
          },
          "datasets": {
            "description": "Dataset resource names. Right now we only support labeling from a single Dataset. Format: `projects/{project}/locations/{location}/datasets/{dataset}`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The user-defined name of the DataLabelingJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a DataLabelingJob.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a DataLabelingJob. If set, this DataLabelingJob will be secured by this key. Note: Annotations created in the DataLabelingJob are associated with the EncryptionSpec of the Dataset they are exported to."
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "DataLabelingJob errors. It is only populated when job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
          },
          "inputs": {
            "$ref": "pulumi.json#/Any",
            "description": "Input config parameters for the DataLabelingJob."
          },
          "inputsSchemaUri": {
            "description": "Points to a YAML file stored on Google Cloud Storage describing the config for a specific type of DataLabelingJob. The schema files that can be used here are found in the https://storage.googleapis.com/google-cloud-aiplatform bucket in the /schema/datalabelingjob/inputs/ folder.",
            "type": "string"
          },
          "instructionUri": {
            "description": "The Google Cloud Storage location of the instruction pdf. This pdf is shared with labelers, and provides detailed description on how to label DataItems in Datasets.",
            "type": "string"
          },
          "labelerCount": {
            "description": "Number of labelers to work on each DataItem.",
            "type": "integer"
          },
          "labelingProgress": {
            "description": "Current labeling job progress percentage scaled in interval [0, 100], indicating the percentage of DataItems that has been finished.",
            "type": "integer"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your DataLabelingJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each DataLabelingJob: * \"aiplatform.googleapis.com/schema\": output only, its value is the inputs_schema's title.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the DataLabelingJob.",
            "type": "string"
          },
          "specialistPools": {
            "description": "The SpecialistPools' resource names associated with this job.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this DataLabelingJob was updated most recently.",
            "type": "string"
          }
        },
        "required": [
          "activeLearningConfig",
          "annotationLabels",
          "createTime",
          "currentSpend",
          "datasets",
          "displayName",
          "encryptionSpec",
          "error",
          "inputs",
          "inputsSchemaUri",
          "instructionUri",
          "labelerCount",
          "labelingProgress",
          "labels",
          "name",
          "specialistPools",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getDataset": {
      "description": "Gets a Dataset.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Dataset was created.",
            "type": "string"
          },
          "dataItemCount": {
            "description": "The number of DataItems in this Dataset. Only apply for non-structured Dataset.",
            "type": "string"
          },
          "description": {
            "description": "The description of the Dataset.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-defined name of the Dataset. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a Dataset. If set, this Dataset and all sub-resources of this Dataset will be secured by this key."
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Datasets. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable. Following system labels exist for each Dataset: * \"aiplatform.googleapis.com/dataset_metadata_schema\": output only, its value is the metadata_schema's title.",
            "type": "object"
          },
          "metadata": {
            "$ref": "pulumi.json#/Any",
            "description": "Additional information about the Dataset."
          },
          "metadataArtifact": {
            "description": "The resource name of the Artifact that was created in MetadataStore when creating the Dataset. The Artifact resource name pattern is `projects/{project}/locations/{location}/metadataStores/{metadata_store}/artifacts/{artifact}`.",
            "type": "string"
          },
          "metadataSchemaUri": {
            "description": "Points to a YAML file stored on Google Cloud Storage describing additional information about the Dataset. The schema is defined as an OpenAPI 3.0.2 Schema Object. The schema files that can be used here are found in gs://google-cloud-aiplatform/schema/dataset/metadata/.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Dataset.",
            "type": "string"
          },
          "savedQueries": {
            "description": "All SavedQueries belong to the Dataset will be returned in List/Get Dataset response. The annotation_specs field will not be populated except for UI cases which will only use annotation_spec_count. In CreateDataset request, a SavedQuery is created together if this field is set, up to one SavedQuery can be set in CreateDatasetRequest. The SavedQuery should not contain any AnnotationSpec.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SavedQueryResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Timestamp when this Dataset was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataItemCount",
          "description",
          "displayName",
          "encryptionSpec",
          "etag",
          "labels",
          "metadata",
          "metadataArtifact",
          "metadataSchemaUri",
          "name",
          "savedQueries",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getDatasetVersion": {
      "description": "Gets a Dataset version.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "datasetVersionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "datasetVersionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigQueryDatasetName": {
            "description": "Name of the associated BigQuery dataset.",
            "type": "string"
          },
          "createTime": {
            "description": "Timestamp when this DatasetVersion was created.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the DatasetVersion.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this DatasetVersion was last updated.",
            "type": "string"
          }
        },
        "required": [
          "bigQueryDatasetName",
          "createTime",
          "etag",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getDeploymentResourcePool": {
      "description": "Get a DeploymentResourcePool.",
      "inputs": {
        "properties": {
          "deploymentResourcePoolId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deploymentResourcePoolId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this DeploymentResourcePool was created.",
            "type": "string"
          },
          "dedicatedResources": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DedicatedResourcesResponse",
            "description": "The underlying DedicatedResources that the DeploymentResourcePool uses."
          },
          "name": {
            "description": "Immutable. The resource name of the DeploymentResourcePool. Format: `projects/{project}/locations/{location}/deploymentResourcePools/{deployment_resource_pool}`",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dedicatedResources",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getEndpoint": {
      "description": "Gets an Endpoint.",
      "inputs": {
        "properties": {
          "endpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Endpoint was created.",
            "type": "string"
          },
          "deployedModels": {
            "description": "The models deployed in this Endpoint. To add or remove DeployedModels use EndpointService.DeployModel and EndpointService.UndeployModel respectively.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedModelResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "The description of the Endpoint.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the Endpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "enablePrivateServiceConnect": {
            "deprecationMessage": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
            "description": "Deprecated: If true, expose the Endpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
            "type": "boolean"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for an Endpoint. If set, this Endpoint and all sub-resources of this Endpoint will be secured by this key."
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Endpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "modelDeploymentMonitoringJob": {
            "description": "Resource name of the Model Monitoring job associated with this Endpoint if monitoring is enabled by JobService.CreateModelDeploymentMonitoringJob. Format: `projects/{project}/locations/{location}/modelDeploymentMonitoringJobs/{model_deployment_monitoring_job}`",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Endpoint.",
            "type": "string"
          },
          "network": {
            "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com//compute/docs/networks-and-firewalls#networks) to which the Endpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. Only one of the fields, network or enable_private_service_connect, can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is network name.",
            "type": "string"
          },
          "predictRequestResponseLoggingConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PredictRequestResponseLoggingConfigResponse",
            "description": "Configures the request-response logging for online prediction."
          },
          "trafficSplit": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map from a DeployedModel's ID to the percentage of this Endpoint's traffic that should be forwarded to that DeployedModel. If a DeployedModel's ID is not listed in this map, then it receives no traffic. The traffic percentage values must add up to 100, or map must be empty if the Endpoint is to not accept any traffic at a moment.",
            "type": "object"
          },
          "updateTime": {
            "description": "Timestamp when this Endpoint was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deployedModels",
          "description",
          "displayName",
          "enablePrivateServiceConnect",
          "encryptionSpec",
          "etag",
          "labels",
          "modelDeploymentMonitoringJob",
          "name",
          "network",
          "predictRequestResponseLoggingConfig",
          "trafficSplit",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getEndpointIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "endpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getEntityType": {
      "description": "Gets details of a single EntityType.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this EntityType was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the EntityType.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your EntityTypes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one EntityType (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigResponse",
            "description": "Optional. The default monitoring configuration for all Features with value type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 under this EntityType. If this is populated with [FeaturestoreMonitoringConfig.monitoring_interval] specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring is disabled."
          },
          "name": {
            "description": "Immutable. Name of the EntityType. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` The last part entity_type is assigned by the client. The entity_type can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z and underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given a featurestore.",
            "type": "string"
          },
          "offlineStorageTtlDays": {
            "description": "Optional. Config for data retention policy in offline storage. TTL in days for feature values that will be stored in offline storage. The Feature Store offline storage periodically removes obsolete feature values older than `offline_storage_ttl_days` since the feature generation time. If unset (or explicitly set to 0), default to 4000 days TTL.",
            "type": "integer"
          },
          "updateTime": {
            "description": "Timestamp when this EntityType was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "labels",
          "monitoringConfig",
          "name",
          "offlineStorageTtlDays",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getExecution": {
      "description": "Retrieves a specific Execution.",
      "inputs": {
        "properties": {
          "executionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "executionId",
          "location",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Execution was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Execution",
            "type": "string"
          },
          "displayName": {
            "description": "User provided display name of the Execution. May be up to 128 Unicode characters.",
            "type": "string"
          },
          "etag": {
            "description": "An eTag used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Executions. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Execution (System labels are excluded).",
            "type": "object"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Properties of the Execution. Top level metadata keys' heading and trailing spaces will be trimmed. The size of this field should not exceed 200KB.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the Execution.",
            "type": "string"
          },
          "schemaTitle": {
            "description": "The title of the schema describing the metadata. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "schemaVersion": {
            "description": "The version of the schema in `schema_title` to use. Schema title and version is expected to be registered in earlier Create Schema calls. And both are used together as unique identifiers to identify schemas within the local metadata store.",
            "type": "string"
          },
          "state": {
            "description": "The state of this Execution. This is a property of the Execution, and does not imply or capture any ongoing process. This property is managed by clients (such as Vertex AI Pipelines) and the system does not prescribe or check the validity of state transitions.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Execution was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "metadata",
          "name",
          "schemaTitle",
          "schemaVersion",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getExperiment": {
      "description": "Gets a TensorboardExperiment.",
      "inputs": {
        "properties": {
          "experimentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tensorboardId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "experimentId",
          "location",
          "tensorboardId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this TensorboardExperiment was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of this TensorboardExperiment.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of this TensorboardExperiment.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your TensorboardExperiment. Label keys and values cannot be longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Dataset (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `aiplatform.googleapis.com/` and are immutable. The following system labels exist for each Dataset: * `aiplatform.googleapis.com/dataset_metadata_schema`: output only. Its value is the metadata_schema's title.",
            "type": "object"
          },
          "name": {
            "description": "Name of the TensorboardExperiment. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}`",
            "type": "string"
          },
          "source": {
            "description": "Immutable. Source of the TensorboardExperiment. Example: a custom training job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this TensorboardExperiment was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "name",
          "source",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getFeatureGroup": {
      "description": "Gets details of a single FeatureGroup.",
      "inputs": {
        "properties": {
          "featureGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigQuery": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureGroupBigQueryResponse",
            "description": "Indicates that features for this group come from BigQuery Table/View. By default treats the source as a sparse time series source, which is required to have an entity_id and a feature_timestamp column in the source."
          },
          "createTime": {
            "description": "Timestamp when this FeatureGroup was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the FeatureGroup.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your FeatureGroup. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureGroup(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the FeatureGroup. Format: `projects/{project}/locations/{location}/featureGroups/{featureGroup}`",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this FeatureGroup was last updated.",
            "type": "string"
          }
        },
        "required": [
          "bigQuery",
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getFeatureGroupFeature": {
      "description": "Gets details of a single Feature.",
      "inputs": {
        "properties": {
          "featureGroupId": {
            "type": "string"
          },
          "featureId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureGroupId",
          "featureId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Feature.",
            "type": "string"
          },
          "disableMonitoring": {
            "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType.",
            "type": "boolean"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigResponse",
            "deprecationMessage": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to.",
            "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to."
          },
          "monitoringStats": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). A list of historical SnapshotAnalysis stats requested by user, sorted by FeatureStatsAnomaly.start_time descending.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomalyResponse"
            },
            "type": "array"
          },
          "monitoringStatsAnomalies": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). The list of historical stats and anomalies with specified objectives.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureMonitoringStatsAnomalyResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type.",
            "type": "string"
          },
          "updateTime": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was most recently updated.",
            "type": "string"
          },
          "valueType": {
            "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value.",
            "type": "string"
          },
          "versionColumnName": {
            "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "disableMonitoring",
          "etag",
          "labels",
          "monitoringConfig",
          "monitoringStats",
          "monitoringStatsAnomalies",
          "name",
          "updateTime",
          "valueType",
          "versionColumnName"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getFeatureOnlineStore": {
      "description": "Gets details of a single FeatureOnlineStore.",
      "inputs": {
        "properties": {
          "featureOnlineStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureOnlineStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigtable": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreBigtableResponse",
            "description": "Contains settings for the Cloud Bigtable instance that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore."
          },
          "createTime": {
            "description": "Timestamp when this FeatureOnlineStore was created.",
            "type": "string"
          },
          "dedicatedServingEndpoint": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreDedicatedServingEndpointResponse",
            "description": "Optional. The dedicated serving endpoint for this FeatureOnlineStore, which is different from common Vertex service endpoint."
          },
          "embeddingManagement": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreEmbeddingManagementResponse",
            "description": "Optional. The settings for embedding management in FeatureOnlineStore."
          },
          "etag": {
            "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your FeatureOnlineStore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the FeatureOnlineStore. Format: `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}`",
            "type": "string"
          },
          "optimized": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureOnlineStoreOptimizedResponse",
            "description": "Contains settings for the Optimized store that will be created to serve featureValues for all FeatureViews under this FeatureOnlineStore. When choose Optimized storage type, need to set PrivateServiceConnectConfig.enable_private_service_connect to use private endpoint. Otherwise will use public endpoint by default."
          },
          "state": {
            "description": "State of the featureOnlineStore.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this FeatureOnlineStore was last updated.",
            "type": "string"
          }
        },
        "required": [
          "bigtable",
          "createTime",
          "dedicatedServingEndpoint",
          "embeddingManagement",
          "etag",
          "labels",
          "name",
          "optimized",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getFeatureStoreFeature": {
      "description": "Gets details of a single Feature.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "featureId": {
            "type": "string"
          },
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "featureId",
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Feature.",
            "type": "string"
          },
          "disableMonitoring": {
            "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If set to true, all types of data monitoring are disabled despite the config on EntityType.",
            "type": "boolean"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your Features. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Feature (System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreMonitoringConfigResponse",
            "deprecationMessage": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to.",
            "description": "Optional. Only applicable for Vertex AI Feature Store (Legacy). Deprecated: The custom monitoring configuration for this Feature, if not set, use the monitoring_config defined for the EntityType this Feature belongs to. Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can enable monitoring. If this is populated with FeaturestoreMonitoringConfig.disabled = true, snapshot analysis monitoring is disabled; if FeaturestoreMonitoringConfig.monitoring_interval specified, snapshot analysis monitoring is enabled. Otherwise, snapshot analysis monitoring config is same as the EntityType's this Feature belongs to."
          },
          "monitoringStats": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). A list of historical SnapshotAnalysis stats requested by user, sorted by FeatureStatsAnomaly.start_time descending.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureStatsAnomalyResponse"
            },
            "type": "array"
          },
          "monitoringStatsAnomalies": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). The list of historical stats and anomalies with specified objectives.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureMonitoringStatsAnomalyResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Name of the Feature. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` The last part feature is assigned by the client. The feature can be up to 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting with a letter. The value will be unique given an entity type.",
            "type": "string"
          },
          "updateTime": {
            "description": "Only applicable for Vertex AI Feature Store (Legacy). Timestamp when this EntityType was most recently updated.",
            "type": "string"
          },
          "valueType": {
            "description": "Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of Feature value.",
            "type": "string"
          },
          "versionColumnName": {
            "description": "Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/View columnn hosting data for this version. If no value is provided, will use feature_id.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "disableMonitoring",
          "etag",
          "labels",
          "monitoringConfig",
          "monitoringStats",
          "monitoringStatsAnomalies",
          "name",
          "updateTime",
          "valueType",
          "versionColumnName"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getFeatureView": {
      "description": "Gets details of a single FeatureView.",
      "inputs": {
        "properties": {
          "featureOnlineStoreId": {
            "type": "string"
          },
          "featureViewId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureOnlineStoreId",
          "featureViewId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigQuerySource": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewBigQuerySourceResponse",
            "description": "Optional. Configures how data is supposed to be extracted from a BigQuery source to be loaded onto the FeatureOnlineStore."
          },
          "createTime": {
            "description": "Timestamp when this FeatureView was created.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "featureRegistrySource": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewFeatureRegistrySourceResponse",
            "description": "Optional. Configures the features from a Feature Registry source that need to be loaded onto the FeatureOnlineStore."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your FeatureViews. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one FeatureOnlineStore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the FeatureView. Format: `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}`",
            "type": "string"
          },
          "syncConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewSyncConfigResponse",
            "description": "Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving."
          },
          "updateTime": {
            "description": "Timestamp when this FeatureView was last updated.",
            "type": "string"
          },
          "vectorSearchConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeatureViewVectorSearchConfigResponse",
            "description": "Optional. Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving."
          }
        },
        "required": [
          "bigQuerySource",
          "createTime",
          "etag",
          "featureRegistrySource",
          "labels",
          "name",
          "syncConfig",
          "updateTime",
          "vectorSearchConfig"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getFeaturestore": {
      "description": "Gets details of a single Featurestore.",
      "inputs": {
        "properties": {
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Featurestore was created.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Optional. Customer-managed encryption key spec for data storage. If set, both of the online and offline data storage will be secured by this key."
          },
          "etag": {
            "description": "Optional. Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize your Featurestore. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information on and examples of labels. No more than 64 user labels can be associated with one Featurestore(System labels are excluded).\" System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Featurestore. Format: `projects/{project}/locations/{location}/featurestores/{featurestore}`",
            "type": "string"
          },
          "onlineServingConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1FeaturestoreOnlineServingConfigResponse",
            "description": "Optional. Config for online storage resources. The field should not co-exist with the field of `OnlineStoreReplicationConfig`. If both of it and OnlineStoreReplicationConfig are unset, the feature store will not have an online store and cannot be used for online serving."
          },
          "onlineStorageTtlDays": {
            "description": "Optional. TTL in days for feature values that will be stored in online serving storage. The Feature Store online storage periodically removes obsolete feature values older than `online_storage_ttl_days` since the feature generation time. Note that `online_storage_ttl_days` should be less than or equal to `offline_storage_ttl_days` for each EntityType under a featurestore. If not set, default to 4000 days",
            "type": "integer"
          },
          "state": {
            "description": "State of the featurestore.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Featurestore was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "encryptionSpec",
          "etag",
          "labels",
          "name",
          "onlineServingConfig",
          "onlineStorageTtlDays",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getFeaturestoreEntityTypeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getFeaturestoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "featurestoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featurestoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getHyperparameterTuningJob": {
      "description": "Gets a HyperparameterTuningJob",
      "inputs": {
        "properties": {
          "hyperparameterTuningJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hyperparameterTuningJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the HyperparameterTuningJob was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key."
          },
          "endTime": {
            "description": "Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize HyperparameterTuningJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "maxFailedTrialCount": {
            "description": "The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails.",
            "type": "integer"
          },
          "maxTrialCount": {
            "description": "The desired total number of Trials.",
            "type": "integer"
          },
          "name": {
            "description": "Resource name of the HyperparameterTuningJob.",
            "type": "string"
          },
          "parallelTrialCount": {
            "description": "The desired number of Trials to run in parallel.",
            "type": "integer"
          },
          "startTime": {
            "description": "Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "studySpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecResponse",
            "description": "Study configuration of the HyperparameterTuningJob."
          },
          "trialJobSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CustomJobSpecResponse",
            "description": "The spec of a trial job. The same spec applies to the CustomJobs created in all the trials."
          },
          "trials": {
            "description": "Trials of the HyperparameterTuningJob.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TrialResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Time when the HyperparameterTuningJob was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "labels",
          "maxFailedTrialCount",
          "maxTrialCount",
          "name",
          "parallelTrialCount",
          "startTime",
          "state",
          "studySpec",
          "trialJobSpec",
          "trials",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getIndex": {
      "description": "Gets an Index.",
      "inputs": {
        "properties": {
          "indexId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "indexId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this Index was created.",
            "type": "string"
          },
          "deployedIndexes": {
            "description": "The pointers to DeployedIndexes created from this Index. An Index can be only deleted if all its DeployedIndexes had been undeployed first.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedIndexRefResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "The description of the Index.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Immutable. Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key."
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "indexStats": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1IndexStatsResponse",
            "description": "Stats of the index resource."
          },
          "indexUpdateMethod": {
            "description": "Immutable. The update method to use with this Index. If not set, BATCH_UPDATE will be used by default.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Indexes. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "metadata": {
            "$ref": "pulumi.json#/Any",
            "description": "An additional information about the Index; the schema of the metadata can be found in metadata_schema."
          },
          "metadataSchemaUri": {
            "description": "Immutable. Points to a YAML file stored on Google Cloud Storage describing additional information about the Index, that is specific to it. Unset if the Index does not have any additional information. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Index.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Index was most recently updated. This also includes any update to the contents of the Index. Note that Operations working on this Index may have their Operations.metadata.generic_metadata.update_time a little after the value of this timestamp, yet that does not mean their results are not already reflected in the Index. Result of any successfully completed Operation on the Index is reflected in it.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deployedIndexes",
          "description",
          "displayName",
          "encryptionSpec",
          "etag",
          "indexStats",
          "indexUpdateMethod",
          "labels",
          "metadata",
          "metadataSchemaUri",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getIndexEndpoint": {
      "description": "Gets an IndexEndpoint.",
      "inputs": {
        "properties": {
          "indexEndpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "indexEndpointId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this IndexEndpoint was created.",
            "type": "string"
          },
          "deployedIndexes": {
            "description": "The indexes deployed in this endpoint.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1DeployedIndexResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "The description of the IndexEndpoint.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the IndexEndpoint. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "enablePrivateServiceConnect": {
            "deprecationMessage": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
            "description": "Optional. Deprecated: If true, expose the IndexEndpoint via private service connect. Only one of the fields, network or enable_private_service_connect, can be set.",
            "type": "boolean"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Immutable. Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key."
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your IndexEndpoints. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the IndexEndpoint.",
            "type": "string"
          },
          "network": {
            "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the IndexEndpoint should be peered. Private services access must already be configured for the network. If left unspecified, the Endpoint is not peered with any network. network and private_service_connect_config are mutually exclusive. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert): `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in '12345', and {network} is network name.",
            "type": "string"
          },
          "privateServiceConnectConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PrivateServiceConnectConfigResponse",
            "description": "Optional. Configuration for private service connect. network and private_service_connect_config are mutually exclusive."
          },
          "publicEndpointDomainName": {
            "description": "If public_endpoint_enabled is true, this field will be populated with the domain name to use for this index endpoint.",
            "type": "string"
          },
          "publicEndpointEnabled": {
            "description": "Optional. If true, the deployed index will be accessible through public endpoint.",
            "type": "boolean"
          },
          "updateTime": {
            "description": "Timestamp when this IndexEndpoint was last updated. This timestamp is not updated when the endpoint's DeployedIndexes are updated, e.g. due to updates of the original Indexes they are the deployments of.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deployedIndexes",
          "description",
          "displayName",
          "enablePrivateServiceConnect",
          "encryptionSpec",
          "etag",
          "labels",
          "name",
          "network",
          "privateServiceConnectConfig",
          "publicEndpointDomainName",
          "publicEndpointEnabled",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getMetadataSchema": {
      "description": "Retrieves a specific MetadataSchema.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "metadataSchemaId": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "metadataSchemaId",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this MetadataSchema was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Metadata Schema",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the MetadataSchema.",
            "type": "string"
          },
          "schema": {
            "description": "The raw YAML string representation of the MetadataSchema. The combination of [MetadataSchema.version] and the schema name given by `title` in [MetadataSchema.schema] must be unique within a MetadataStore. The schema is defined as an OpenAPI 3.0.2 [MetadataSchema Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)",
            "type": "string"
          },
          "schemaType": {
            "description": "The type of the MetadataSchema. This is a property that identifies which metadata types will use the MetadataSchema.",
            "type": "string"
          },
          "schemaVersion": {
            "description": "The version of the MetadataSchema. The version's format must match the following regular expression: `^[0-9]+.+.+$`, which would allow to order/compare different versions. Example: 1.0.0, 1.0.1, etc.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "schema",
          "schemaType",
          "schemaVersion"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getMetadataStore": {
      "description": "Retrieves a specific MetadataStore.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "metadataStoreId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "metadataStoreId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this MetadataStore was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the MetadataStore.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a Metadata Store. If set, this Metadata Store and all sub-resources of this Metadata Store are secured using this key."
          },
          "name": {
            "description": "The resource name of the MetadataStore instance.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MetadataStoreMetadataStoreStateResponse",
            "description": "State information of the MetadataStore."
          },
          "updateTime": {
            "description": "Timestamp when this MetadataStore was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "encryptionSpec",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getModelDeploymentMonitoringJob": {
      "description": "Gets a ModelDeploymentMonitoringJob.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "modelDeploymentMonitoringJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "modelDeploymentMonitoringJobId"
        ]
      },
      "outputs": {
        "properties": {
          "analysisInstanceSchemaUri": {
            "description": "YAML schema file uri describing the format of a single instance that you want Tensorflow Data Validation (TFDV) to analyze. If this field is empty, all the feature data types are inferred from predict_instance_schema_uri, meaning that TFDV will use the data in the exact format(data type) as prediction request/response. If there are any data type differences between predict instance and TFDV instance, this field can be used to override the schema. For models trained with Vertex AI, this field must be set as all the fields in predict instance formatted as string.",
            "type": "string"
          },
          "bigqueryTables": {
            "description": "The created bigquery tables for the job under customer project. Customer could do their own query \u0026 analysis. There could be 4 log tables in maximum: 1. Training data logging predict request/response 2. Serving data logging predict request/response",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringBigQueryTableResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp when this ModelDeploymentMonitoringJob was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-defined name of the ModelDeploymentMonitoringJob. The name can be up to 128 characters long and can consist of any UTF-8 characters. Display name of a ModelDeploymentMonitoringJob.",
            "type": "string"
          },
          "enableMonitoringPipelineLogs": {
            "description": "If true, the scheduled monitoring pipeline logs are sent to Google Cloud Logging, including pipeline status and anomalies detected. Please note the logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.google.com/logging#pricing).",
            "type": "boolean"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a ModelDeploymentMonitoringJob. If set, this ModelDeploymentMonitoringJob and all sub-resources of this ModelDeploymentMonitoringJob will be secured by this key."
          },
          "endpoint": {
            "description": "Endpoint resource name. Format: `projects/{project}/locations/{location}/endpoints/{endpoint}`",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "Only populated when the job's state is `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your ModelDeploymentMonitoringJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "latestMonitoringPipelineMetadata": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringJobLatestMonitoringPipelineMetadataResponse",
            "description": "Latest triggered monitoring pipeline metadata."
          },
          "logTtl": {
            "description": "The TTL of BigQuery tables in user projects which stores logs. A day is the basic unit of the TTL and we take the ceil of TTL/86400(a day). e.g. { second: 3600} indicates ttl = 1 day.",
            "type": "string"
          },
          "loggingSamplingStrategy": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1SamplingStrategyResponse",
            "description": "Sample Strategy for logging."
          },
          "modelDeploymentMonitoringObjectiveConfigs": {
            "description": "The config for monitoring objectives. This is a per DeployedModel config. Each DeployedModel needs to be configured separately.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringObjectiveConfigResponse"
            },
            "type": "array"
          },
          "modelDeploymentMonitoringScheduleConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelDeploymentMonitoringScheduleConfigResponse",
            "description": "Schedule config for running the monitoring job."
          },
          "modelMonitoringAlertConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelMonitoringAlertConfigResponse",
            "description": "Alert config for model monitoring."
          },
          "name": {
            "description": "Resource name of a ModelDeploymentMonitoringJob.",
            "type": "string"
          },
          "nextScheduleTime": {
            "description": "Timestamp when this monitoring pipeline will be scheduled to run for the next round.",
            "type": "string"
          },
          "predictInstanceSchemaUri": {
            "description": "YAML schema file uri describing the format of a single instance, which are given to format this Endpoint's prediction (and explanation). If not set, we will generate predict schema from collected predict requests.",
            "type": "string"
          },
          "samplePredictInstance": {
            "$ref": "pulumi.json#/Any",
            "description": "Sample Predict instance, same format as PredictRequest.instances, this can be set as a replacement of ModelDeploymentMonitoringJob.predict_instance_schema_uri. If not set, we will generate predict schema from collected predict requests."
          },
          "scheduleState": {
            "description": "Schedule state when the monitoring job is in Running state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the monitoring job. When the job is still creating, the state will be 'PENDING'. Once the job is successfully created, the state will be 'RUNNING'. Pause the job, the state will be 'PAUSED'. Resume the job, the state will return to 'RUNNING'.",
            "type": "string"
          },
          "statsAnomaliesBaseDirectory": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1GcsDestinationResponse",
            "description": "Stats anomalies base folder path."
          },
          "updateTime": {
            "description": "Timestamp when this ModelDeploymentMonitoringJob was updated most recently.",
            "type": "string"
          }
        },
        "required": [
          "analysisInstanceSchemaUri",
          "bigqueryTables",
          "createTime",
          "displayName",
          "enableMonitoringPipelineLogs",
          "encryptionSpec",
          "endpoint",
          "error",
          "labels",
          "latestMonitoringPipelineMetadata",
          "logTtl",
          "loggingSamplingStrategy",
          "modelDeploymentMonitoringObjectiveConfigs",
          "modelDeploymentMonitoringScheduleConfig",
          "modelMonitoringAlertConfig",
          "name",
          "nextScheduleTime",
          "predictInstanceSchemaUri",
          "samplePredictInstance",
          "scheduleState",
          "state",
          "statsAnomaliesBaseDirectory",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getModelIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "modelId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "modelId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getNasJob": {
      "description": "Gets a NasJob",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "nasJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "nasJobId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the NasJob was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the NasJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "enableRestrictedImageTraining": {
            "description": "Optional. Enable a separation of Custom model training and restricted image training for tenant project.",
            "type": "boolean"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key options for a NasJob. If this is set, then all resources created by the NasJob will be encrypted with the provided encryption key."
          },
          "endTime": {
            "description": "Time when the NasJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize NasJobs. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the NasJob.",
            "type": "string"
          },
          "nasJobOutput": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobOutputResponse",
            "description": "Output of the NasJob."
          },
          "nasJobSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NasJobSpecResponse",
            "description": "The specification of a NasJob."
          },
          "startTime": {
            "description": "Time when the NasJob for the first time entered the `JOB_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the NasJob was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "enableRestrictedImageTraining",
          "encryptionSpec",
          "endTime",
          "error",
          "labels",
          "name",
          "nasJobOutput",
          "nasJobSpec",
          "startTime",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getNotebookRuntimeTemplate": {
      "description": "Gets a NotebookRuntimeTemplate.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "notebookRuntimeTemplateId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "notebookRuntimeTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this NotebookRuntimeTemplate was created.",
            "type": "string"
          },
          "dataPersistentDiskSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PersistentDiskSpecResponse",
            "description": "Optional. The specification of persistent disk attached to the runtime as data disk storage."
          },
          "description": {
            "description": "The description of the NotebookRuntimeTemplate.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the NotebookRuntimeTemplate. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "eucConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NotebookEucConfigResponse",
            "description": "EUC configuration of the NotebookRuntimeTemplate."
          },
          "idleShutdownConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NotebookIdleShutdownConfigResponse",
            "description": "The idle shutdown configuration of NotebookRuntimeTemplate. This config will only be set when idle shutdown is enabled."
          },
          "isDefault": {
            "description": "The default template to use if not specified.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize the NotebookRuntimeTemplates. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "machineSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MachineSpecResponse",
            "description": "Optional. Immutable. The specification of a single machine for the template."
          },
          "name": {
            "description": "The resource name of the NotebookRuntimeTemplate.",
            "type": "string"
          },
          "networkSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1NetworkSpecResponse",
            "description": "Optional. Network spec."
          },
          "notebookRuntimeType": {
            "description": "Optional. Immutable. The type of the notebook runtime template.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account that the runtime workload runs as. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this NotebookRuntimeTemplate was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataPersistentDiskSpec",
          "description",
          "displayName",
          "etag",
          "eucConfig",
          "idleShutdownConfig",
          "isDefault",
          "labels",
          "machineSpec",
          "name",
          "networkSpec",
          "notebookRuntimeType",
          "serviceAccount",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getNotebookRuntimeTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "notebookRuntimeTemplateId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "notebookRuntimeTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getPersistentResource": {
      "description": "Gets a PersistentResource.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "persistentResourceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "persistentResourceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the PersistentResource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. The display name of the PersistentResource. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Optional. Customer-managed encryption key spec for a PersistentResource. If set, this PersistentResource and all sub-resources of this PersistentResource will be secured by this key."
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "Only populated when persistent resource's state is `STOPPING` or `ERROR`."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels with user-defined metadata to organize PersistentResource. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. Resource name of a PersistentResource.",
            "type": "string"
          },
          "network": {
            "description": "Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to peered with Vertex AI to host the persistent resources. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the resources aren't peered with any network.",
            "type": "string"
          },
          "reservedIpRanges": {
            "description": "Optional. A list of names for the reserved IP ranges under the VPC network that can be used for this persistent resource. If set, we will deploy the persistent resource within the provided IP ranges. Otherwise, the persistent resource is deployed to any IP ranges under the provided VPC network. Example: ['vertex-ai-ip-range'].",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourcePools": {
            "description": "The spec of the pools of different resources.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourcePoolResponse"
            },
            "type": "array"
          },
          "resourceRuntime": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourceRuntimeResponse",
            "description": "Runtime information of the Persistent Resource."
          },
          "resourceRuntimeSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ResourceRuntimeSpecResponse",
            "description": "Optional. Persistent Resource runtime spec. For example, used for Ray cluster configuration."
          },
          "startTime": {
            "description": "Time when the PersistentResource for the first time entered the `RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of a Study.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the PersistentResource was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "error",
          "labels",
          "name",
          "network",
          "reservedIpRanges",
          "resourcePools",
          "resourceRuntime",
          "resourceRuntimeSpec",
          "startTime",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getPipelineJob": {
      "description": "Gets a PipelineJob.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "pipelineJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "pipelineJobId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Pipeline creation time.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the Pipeline. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a pipelineJob. If set, this PipelineJob and all of its sub-resources will be secured by this key."
          },
          "endTime": {
            "description": "Pipeline end time.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "The error that occurred during pipeline execution. Only populated when the pipeline's state is FAILED or CANCELLED."
          },
          "jobDetail": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobDetailResponse",
            "description": "The details of pipeline run. Not available in the list view."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize PipelineJob. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels. Note there is some reserved label key for Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value will get overrided.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the PipelineJob.",
            "type": "string"
          },
          "network": {
            "description": "The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Pipeline Job's workload should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. Pipeline job will apply the network configuration to the Google Cloud resources being launched, if applied, such as Vertex AI Training or Dataflow job. If left unspecified, the workload is not peered with any network.",
            "type": "string"
          },
          "pipelineSpec": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The spec of the pipeline.",
            "type": "object"
          },
          "reservedIpRanges": {
            "description": "A list of names for the reserved ip ranges under the VPC network that can be used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job's workload within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range'].",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "runtimeConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineJobRuntimeConfigResponse",
            "description": "Runtime config of the pipeline."
          },
          "scheduleName": {
            "description": "The schedule resource name. Only returned if the Pipeline is created by Schedule API.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account that the pipeline workload runs as. If not specified, the Compute Engine default service account in the project will be used. See https://cloud.google.com/compute/docs/access/service-accounts#default_service_account Users starting the pipeline must have the `iam.serviceAccounts.actAs` permission on this service account.",
            "type": "string"
          },
          "startTime": {
            "description": "Pipeline start time.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the job.",
            "type": "string"
          },
          "templateMetadata": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1PipelineTemplateMetadataResponse",
            "description": "Pipeline template metadata. Will fill up fields if PipelineJob.template_uri is from supported template registry."
          },
          "templateUri": {
            "description": "A template uri from where the PipelineJob.pipeline_spec, if empty, will be downloaded. Currently, only uri from Vertex Template Registry \u0026 Gallery is supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/create-pipeline-template.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this PipelineJob was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "jobDetail",
          "labels",
          "name",
          "network",
          "pipelineSpec",
          "reservedIpRanges",
          "runtimeConfig",
          "scheduleName",
          "serviceAccount",
          "startTime",
          "state",
          "templateMetadata",
          "templateUri",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getRun": {
      "description": "Gets a TensorboardRun.",
      "inputs": {
        "properties": {
          "experimentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "runId": {
            "type": "string"
          },
          "tensorboardId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "experimentId",
          "location",
          "runId",
          "tensorboardId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this TensorboardRun was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of this TensorboardRun.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of this TensorboardRun. This value must be unique among all TensorboardRuns belonging to the same parent TensorboardExperiment.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your TensorboardRuns. This field will be used to filter and visualize Runs in the Tensorboard UI. For example, a Vertex AI training job can set a label aiplatform.googleapis.com/training_job_id=xxxxx to all the runs created within that job. An end user can set a label experiment_id=xxxxx for all the runs produced in a Jupyter notebook. These runs can be grouped by a label value and visualized together in the Tensorboard UI. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one TensorboardRun (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the TensorboardRun. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}/runs/{run}`",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this TensorboardRun was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getSchedule": {
      "description": "Gets a Schedule.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scheduleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scheduleId"
        ]
      },
      "outputs": {
        "properties": {
          "allowQueueing": {
            "description": "Optional. Whether new scheduled runs can be queued when max_concurrent_runs limit is reached. If set to true, new runs will be queued instead of skipped. Default to false.",
            "type": "boolean"
          },
          "catchUp": {
            "description": "Whether to backfill missed runs when the schedule is resumed from PAUSED state. If set to true, all missed runs will be scheduled. New runs will be scheduled after the backfill is complete. Default to false.",
            "type": "boolean"
          },
          "createPipelineJobRequest": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1CreatePipelineJobRequestResponse",
            "description": "Request for PipelineService.CreatePipelineJob. CreatePipelineJobRequest.parent field is required (format: projects/{project}/locations/{location})."
          },
          "createTime": {
            "description": "Timestamp when this Schedule was created.",
            "type": "string"
          },
          "cron": {
            "description": "Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs. To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: \"CRON_TZ=${IANA_TIME_ZONE}\" or \"TZ=${IANA_TIME_ZONE}\". The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone database. For example, \"CRON_TZ=America/New_York 1 * * * *\", or \"TZ=America/New_York 1 * * * *\".",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of the Schedule. The name can be up to 128 characters long and can consist of any UTF-8 characters.",
            "type": "string"
          },
          "endTime": {
            "description": "Optional. Timestamp after which no new runs can be scheduled. If specified, The schedule will be completed when either end_time is reached or when scheduled_run_count \u003e= max_run_count. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified.",
            "type": "string"
          },
          "lastPauseTime": {
            "description": "Timestamp when this Schedule was last paused. Unset if never paused.",
            "type": "string"
          },
          "lastResumeTime": {
            "description": "Timestamp when this Schedule was last resumed. Unset if never resumed from pause.",
            "type": "string"
          },
          "lastScheduledRunResponse": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ScheduleRunResponseResponse",
            "description": "Response of the last scheduled run. This is the response for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable). Unset if no run has been scheduled yet."
          },
          "maxConcurrentRunCount": {
            "description": "Maximum number of runs that can be started concurrently for this Schedule. This is the limit for starting the scheduled requests and not the execution of the operations/jobs created by the requests (if applicable).",
            "type": "string"
          },
          "maxRunCount": {
            "description": "Optional. Maximum run count of the schedule. If specified, The schedule will be completed when either started_run_count \u003e= max_run_count or when end_time is reached. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the Schedule.",
            "type": "string"
          },
          "nextRunTime": {
            "description": "Timestamp when this Schedule should schedule the next run. Having a next_run_time in the past means the runs are being started behind schedule.",
            "type": "string"
          },
          "startTime": {
            "description": "Optional. Timestamp after which the first run can be scheduled. Default to Schedule create time if not specified.",
            "type": "string"
          },
          "startedRunCount": {
            "description": "The number of runs started by this schedule.",
            "type": "string"
          },
          "state": {
            "description": "The state of this Schedule.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this Schedule was updated.",
            "type": "string"
          }
        },
        "required": [
          "allowQueueing",
          "catchUp",
          "createPipelineJobRequest",
          "createTime",
          "cron",
          "displayName",
          "endTime",
          "lastPauseTime",
          "lastResumeTime",
          "lastScheduledRunResponse",
          "maxConcurrentRunCount",
          "maxRunCount",
          "name",
          "nextRunTime",
          "startTime",
          "startedRunCount",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getSpecialistPool": {
      "description": "Gets a SpecialistPool.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "specialistPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "specialistPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The user-defined name of the SpecialistPool. The name can be up to 128 characters long and can consist of any UTF-8 characters. This field should be unique on project-level.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the SpecialistPool.",
            "type": "string"
          },
          "pendingDataLabelingJobs": {
            "description": "The resource name of the pending data labeling jobs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "specialistManagerEmails": {
            "description": "The email addresses of the managers in the SpecialistPool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "specialistManagersCount": {
            "description": "The number of managers in this SpecialistPool.",
            "type": "integer"
          },
          "specialistWorkerEmails": {
            "description": "The email addresses of workers in the SpecialistPool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "displayName",
          "name",
          "pendingDataLabelingJobs",
          "specialistManagerEmails",
          "specialistManagersCount",
          "specialistWorkerEmails"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getStudy": {
      "description": "Gets a Study by name.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "studyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "studyId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time at which the study was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Describes the Study, default value is empty string.",
            "type": "string"
          },
          "inactiveReason": {
            "description": "A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED.",
            "type": "string"
          },
          "name": {
            "description": "The name of a study. The study's globally unique identifier. Format: `projects/{project}/locations/{location}/studies/{study}`",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of a Study.",
            "type": "string"
          },
          "studySpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1StudySpecResponse",
            "description": "Configuration of the Study."
          }
        },
        "required": [
          "createTime",
          "displayName",
          "inactiveReason",
          "name",
          "state",
          "studySpec"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getTensorboard": {
      "description": "Gets a Tensorboard.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tensorboardId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tensorboardId"
        ]
      },
      "outputs": {
        "properties": {
          "blobStoragePathPrefix": {
            "description": "Consumer project Cloud Storage path prefix used to store blob data, which can either be a bucket or directory. Does not end with a '/'.",
            "type": "string"
          },
          "createTime": {
            "description": "Timestamp when this Tensorboard was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of this Tensorboard.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of this Tensorboard.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a Tensorboard. If set, this Tensorboard and all sub-resources of this Tensorboard will be secured by this key."
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "isDefault": {
            "description": "Used to indicate if the TensorBoard instance is the default one. Each project \u0026 region can have at most one default TensorBoard instance. Creation of a default TensorBoard instance and updating an existing TensorBoard instance to be default will mark all other TensorBoard instances (if any) as non default.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize your Tensorboards. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one Tensorboard (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"aiplatform.googleapis.com/\" and are immutable.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Tensorboard. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`",
            "type": "string"
          },
          "runCount": {
            "description": "The number of Runs stored in this Tensorboard.",
            "type": "integer"
          },
          "updateTime": {
            "description": "Timestamp when this Tensorboard was last updated.",
            "type": "string"
          }
        },
        "required": [
          "blobStoragePathPrefix",
          "createTime",
          "description",
          "displayName",
          "encryptionSpec",
          "etag",
          "isDefault",
          "labels",
          "name",
          "runCount",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getTimeSeries": {
      "description": "Gets a TensorboardTimeSeries.",
      "inputs": {
        "properties": {
          "experimentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "runId": {
            "type": "string"
          },
          "tensorboardId": {
            "type": "string"
          },
          "timeSeriesId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "experimentId",
          "location",
          "runId",
          "tensorboardId",
          "timeSeriesId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this TensorboardTimeSeries was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of this TensorboardTimeSeries.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name of this TensorboardTimeSeries. This value should be unique among all TensorboardTimeSeries resources belonging to the same TensorboardRun resource (parent resource).",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write updates. If not set, a blind \"overwrite\" update happens.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TensorboardTimeSeriesMetadataResponse",
            "description": "Scalar, Tensor, or Blob metadata for this TensorboardTimeSeries."
          },
          "name": {
            "description": "Name of the TensorboardTimeSeries.",
            "type": "string"
          },
          "pluginData": {
            "description": "Data of the current plugin, with the size limited to 65KB.",
            "type": "string"
          },
          "pluginName": {
            "description": "Immutable. Name of the plugin this time series pertain to. Such as Scalar, Tensor, Blob",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when this TensorboardTimeSeries was last updated.",
            "type": "string"
          },
          "valueType": {
            "description": "Immutable. Type of TensorboardTimeSeries value.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "etag",
          "metadata",
          "name",
          "pluginData",
          "pluginName",
          "updateTime",
          "valueType"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getTrainingPipeline": {
      "description": "Gets a TrainingPipeline.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "trainingPipelineId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "trainingPipelineId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the TrainingPipeline was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-defined name of this TrainingPipeline.",
            "type": "string"
          },
          "encryptionSpec": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1EncryptionSpecResponse",
            "description": "Customer-managed encryption key spec for a TrainingPipeline. If set, this TrainingPipeline will be secured by this key. Note: Model trained by this TrainingPipeline is also secured by this key if model_to_upload is not set separately."
          },
          "endTime": {
            "description": "Time when the TrainingPipeline entered any of the following states: `PIPELINE_STATE_SUCCEEDED`, `PIPELINE_STATE_FAILED`, `PIPELINE_STATE_CANCELLED`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleRpcStatusResponse",
            "description": "Only populated when the pipeline's state is `PIPELINE_STATE_FAILED` or `PIPELINE_STATE_CANCELLED`."
          },
          "inputDataConfig": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1InputDataConfigResponse",
            "description": "Specifies Vertex AI owned input data that may be used for training the Model. The TrainingPipeline's training_task_definition should make clear whether this config is used and if there are any special requirements on how it should be filled. If nothing about this config is mentioned in the training_task_definition, then it should be assumed that the TrainingPipeline does not depend on this configuration."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels with user-defined metadata to organize TrainingPipelines. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. See https://goo.gl/xmQnxf for more information and examples of labels.",
            "type": "object"
          },
          "modelId": {
            "description": "Optional. The ID to use for the uploaded Model, which will become the final component of the model resource name. This value may be up to 63 characters, and valid characters are `[a-z0-9_-]`. The first character cannot be a number or hyphen.",
            "type": "string"
          },
          "modelToUpload": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1ModelResponse",
            "description": "Describes the Model that may be uploaded (via ModelService.UploadModel) by this TrainingPipeline. The TrainingPipeline's training_task_definition should make clear whether this Model description should be populated, and if there are any special requirements regarding how it should be filled. If nothing is mentioned in the training_task_definition, then it should be assumed that this field should not be filled and the training task either uploads the Model without a need of this information, or that training task does not support uploading a Model as part of the pipeline. When the Pipeline's state becomes `PIPELINE_STATE_SUCCEEDED` and the trained Model had been uploaded into Vertex AI, then the model_to_upload's resource name is populated. The Model is always uploaded into the Project and Location in which this pipeline is."
          },
          "name": {
            "description": "Resource name of the TrainingPipeline.",
            "type": "string"
          },
          "parentModel": {
            "description": "Optional. When specify this field, the `model_to_upload` will not be uploaded as a new model, instead, it will become a new version of this `parent_model`.",
            "type": "string"
          },
          "startTime": {
            "description": "Time when the TrainingPipeline for the first time entered the `PIPELINE_STATE_RUNNING` state.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the pipeline.",
            "type": "string"
          },
          "trainingTaskDefinition": {
            "description": "A Google Cloud Storage path to the YAML file that defines the training task which is responsible for producing the model artifact, and may also include additional auxiliary work. The definition files that can be used here are found in gs://google-cloud-aiplatform/schema/trainingjob/definition/. Note: The URI given on output will be immutable and probably different, including the URI scheme, than the one given on input. The output URI will point to a location where the user only has a read access.",
            "type": "string"
          },
          "trainingTaskInputs": {
            "$ref": "pulumi.json#/Any",
            "description": "The training task's parameter(s), as specified in the training_task_definition's `inputs`."
          },
          "trainingTaskMetadata": {
            "$ref": "pulumi.json#/Any",
            "description": "The metadata information as specified in the training_task_definition's `metadata`. This metadata is an auxiliary runtime and final information about the training task. While the pipeline is running this information is populated only at a best effort basis. Only present if the pipeline's training_task_definition contains `metadata` object."
          },
          "updateTime": {
            "description": "Time when the TrainingPipeline was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionSpec",
          "endTime",
          "error",
          "inputDataConfig",
          "labels",
          "modelId",
          "modelToUpload",
          "name",
          "parentModel",
          "startTime",
          "state",
          "trainingTaskDefinition",
          "trainingTaskInputs",
          "trainingTaskMetadata",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:aiplatform/v1beta1:getTrial": {
      "description": "Gets a Trial.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "studyId": {
            "type": "string"
          },
          "trialId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "studyId",
          "trialId"
        ]
      },
      "outputs": {
        "properties": {
          "clientId": {
            "description": "The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial.",
            "type": "string"
          },
          "customJob": {
            "description": "The CustomJob name linked to the Trial. It's set for a HyperparameterTuningJob's Trial.",
            "type": "string"
          },
          "endTime": {
            "description": "Time when the Trial's status changed to `SUCCEEDED` or `INFEASIBLE`.",
            "type": "string"
          },
          "finalMeasurement": {
            "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MeasurementResponse",
            "description": "The final measurement containing the objective value."
          },
          "infeasibleReason": {
            "description": "A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`.",
            "type": "string"
          },
          "measurements": {
            "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1MeasurementResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Resource name of the Trial assigned by the service.",
            "type": "string"
          },
          "parameters": {
            "description": "The parameters of the Trial.",
            "items": {
              "$ref": "#/types/google-native:aiplatform%2Fv1beta1:GoogleCloudAiplatformV1beta1TrialParameterResponse"
            },
            "type": "array"
          },
          "startTime": {
            "description": "Time when the Trial was started.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of the Trial.",
            "type": "string"
          },
          "webAccessUris": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job's trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node's interactive shell.",
            "type": "object"
          }
        },
        "required": [
          "clientId",
          "customJob",
          "endTime",
          "finalMeasurement",
          "infeasibleReason",
          "measurements",
          "name",
          "parameters",
          "startTime",
          "state",
          "webAccessUris"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1:getBackup": {
      "description": "Gets details of a single Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "clusterName": {
            "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id}).",
            "type": "string"
          },
          "clusterUid": {
            "description": "The system-generated UID of the cluster which was used to create this resource.",
            "type": "string"
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseVersion": {
            "description": "The database engine major version of the cluster this backup was created from. Any restored cluster created from this backup will have the same database version.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the backup.",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Backup.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfigResponse",
            "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
          },
          "encryptionInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionInfoResponse",
            "description": "The encryption information for the backup."
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "expiryQuantity": {
            "$ref": "#/types/google-native:alloydb%2Fv1:QuantityBasedExpiryResponse",
            "description": "The QuantityBasedExpiry of the backup, specified by the backup's retention policy. Once the expiry quantity is over retention, the backup is eligible to be garbage collected."
          },
          "expiryTime": {
            "description": "The time at which after the backup is eligible to be garbage collected. It is the duration specified by the backup's retention policy, added to the backup's create_time.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "name": {
            "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id} where the cluster and backup ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the backup resource name is the name of the parent resource: * projects/{project}/locations/{region}",
            "type": "string"
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation), if true, indicates that the service is actively updating the resource. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "sizeBytes": {
            "description": "The size of the backup in bytes.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          },
          "type": {
            "description": "The backup type, which suggests the trigger for the backup.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "clusterName",
          "clusterUid",
          "createTime",
          "databaseVersion",
          "deleteTime",
          "description",
          "displayName",
          "encryptionConfig",
          "encryptionInfo",
          "etag",
          "expiryQuantity",
          "expiryTime",
          "labels",
          "name",
          "reconciling",
          "sizeBytes",
          "state",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1:getCluster": {
      "description": "Gets details of a single Cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "automatedBackupPolicy": {
            "$ref": "#/types/google-native:alloydb%2Fv1:AutomatedBackupPolicyResponse",
            "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
          },
          "backupSource": {
            "$ref": "#/types/google-native:alloydb%2Fv1:BackupSourceResponse",
            "description": "Cluster created from backup."
          },
          "clusterType": {
            "description": "The type of the cluster. This is an output-only field and it's populated at the Cluster creation time or the Cluster promotion time. The cluster type is determined by which RPC was used to create the cluster (i.e. `CreateCluster` vs. `CreateSecondaryCluster`",
            "type": "string"
          },
          "continuousBackupConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:ContinuousBackupConfigResponse",
            "description": "Optional. Continuous backup configuration for this cluster."
          },
          "continuousBackupInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1:ContinuousBackupInfoResponse",
            "description": "Continuous backup properties for this cluster."
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseVersion": {
            "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Cluster.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionConfigResponse",
            "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
          },
          "encryptionInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1:EncryptionInfoResponse",
            "description": "The encryption information for the cluster."
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "initialUser": {
            "$ref": "#/types/google-native:alloydb%2Fv1:UserPasswordResponse",
            "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "migrationSource": {
            "$ref": "#/types/google-native:alloydb%2Fv1:MigrationSourceResponse",
            "description": "Cluster created via DMS migration."
          },
          "name": {
            "description": "The name of the cluster resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id} where the cluster ID segment should satisfy the regex expression `[a-z0-9-]+`. For more details see https://google.aip.dev/122. The prefix of the cluster resource name is the name of the parent resource: * projects/{project}/locations/{region}",
            "type": "string"
          },
          "network": {
            "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
            "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:NetworkConfigResponse"
          },
          "primaryConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:PrimaryConfigResponse",
            "description": "Cross Region replication config specific to PRIMARY cluster."
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Cluster does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "secondaryConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:SecondaryConfigResponse",
            "description": "Cross Region replication config specific to SECONDARY cluster."
          },
          "sslConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:SslConfigResponse",
            "description": "SSL configuration for this AlloyDB cluster."
          },
          "state": {
            "description": "The current serving state of the cluster.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "automatedBackupPolicy",
          "backupSource",
          "clusterType",
          "continuousBackupConfig",
          "continuousBackupInfo",
          "createTime",
          "databaseVersion",
          "deleteTime",
          "displayName",
          "encryptionConfig",
          "encryptionInfo",
          "etag",
          "initialUser",
          "labels",
          "migrationSource",
          "name",
          "network",
          "networkConfig",
          "primaryConfig",
          "reconciling",
          "secondaryConfig",
          "sslConfig",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "availabilityType": {
            "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones).",
            "type": "string"
          },
          "clientConnectionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:ClientConnectionConfigResponse",
            "description": "Optional. Client connection specific configurations"
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseFlags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value.",
            "type": "object"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Instance.",
            "type": "string"
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "gceZone": {
            "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity.",
            "type": "string"
          },
          "instanceType": {
            "description": "The type of the instance. Specified at creation time.",
            "type": "string"
          },
          "ipAddress": {
            "description": "The IP address for the Instance. This is the connection endpoint for an end-user application.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "machineConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:MachineConfigResponse",
            "description": "Configurations for the machines that host the underlying database engine."
          },
          "name": {
            "description": "The name of the instance resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id} where the cluster and instance ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the instance resource name is the name of the parent resource: * projects/{project}/locations/{region}/clusters/{cluster_id}",
            "type": "string"
          },
          "nodes": {
            "description": "List of available read-only VMs in this instance, including the standby for a PRIMARY instance.",
            "items": {
              "$ref": "#/types/google-native:alloydb%2Fv1:NodeResponse"
            },
            "type": "array"
          },
          "queryInsightsConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:QueryInsightsInstanceConfigResponse",
            "description": "Configuration for query insights."
          },
          "readPoolConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1:ReadPoolConfigResponse",
            "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Instance does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "state": {
            "description": "The current serving state of the instance.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          },
          "writableNode": {
            "$ref": "#/types/google-native:alloydb%2Fv1:NodeResponse",
            "description": "This is set for the read-write VM of the PRIMARY instance only."
          }
        },
        "required": [
          "annotations",
          "availabilityType",
          "clientConnectionConfig",
          "createTime",
          "databaseFlags",
          "deleteTime",
          "displayName",
          "etag",
          "gceZone",
          "instanceType",
          "ipAddress",
          "labels",
          "machineConfig",
          "name",
          "nodes",
          "queryInsightsConfig",
          "readPoolConfig",
          "reconciling",
          "state",
          "uid",
          "updateTime",
          "writableNode"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1:getUser": {
      "description": "Gets details of a single User.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "databaseRoles": {
            "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource in the form of projects/{project}/locations/{location}/cluster/{cluster}/users/{user}.",
            "type": "string"
          },
          "password": {
            "description": "Input only. Password for the user.",
            "type": "string"
          },
          "userType": {
            "description": "Optional. Type of this user.",
            "type": "string"
          }
        },
        "required": [
          "databaseRoles",
          "name",
          "password",
          "userType"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1alpha:getBackup": {
      "description": "Gets details of a single Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "clusterName": {
            "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id}).",
            "type": "string"
          },
          "clusterUid": {
            "description": "The system-generated UID of the cluster which was used to create this resource.",
            "type": "string"
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseVersion": {
            "description": "The database engine major version of the cluster this backup was created from. Any restored cluster created from this backup will have the same database version.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the backup.",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Backup.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfigResponse",
            "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
          },
          "encryptionInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionInfoResponse",
            "description": "The encryption information for the backup."
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "expiryQuantity": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:QuantityBasedExpiryResponse",
            "description": "The QuantityBasedExpiry of the backup, specified by the backup's retention policy. Once the expiry quantity is over retention, the backup is eligible to be garbage collected."
          },
          "expiryTime": {
            "description": "The time at which after the backup is eligible to be garbage collected. It is the duration specified by the backup's retention policy, added to the backup's create_time.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "name": {
            "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id} where the cluster and backup ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the backup resource name is the name of the parent resource: * projects/{project}/locations/{region}",
            "type": "string"
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation), if true, indicates that the service is actively updating the resource. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "sizeBytes": {
            "description": "The size of the backup in bytes.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          },
          "type": {
            "description": "The backup type, which suggests the trigger for the backup.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "clusterName",
          "clusterUid",
          "createTime",
          "databaseVersion",
          "deleteTime",
          "description",
          "displayName",
          "encryptionConfig",
          "encryptionInfo",
          "etag",
          "expiryQuantity",
          "expiryTime",
          "labels",
          "name",
          "reconciling",
          "satisfiesPzs",
          "sizeBytes",
          "state",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1alpha:getCluster": {
      "description": "Gets details of a single Cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "automatedBackupPolicy": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:AutomatedBackupPolicyResponse",
            "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
          },
          "backupSource": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:BackupSourceResponse",
            "description": "Cluster created from backup."
          },
          "clusterType": {
            "description": "The type of the cluster. This is an output-only field and it's populated at the Cluster creation time or the Cluster promotion time. The cluster type is determined by which RPC was used to create the cluster (i.e. `CreateCluster` vs. `CreateSecondaryCluster`",
            "type": "string"
          },
          "continuousBackupConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:ContinuousBackupConfigResponse",
            "description": "Optional. Continuous backup configuration for this cluster."
          },
          "continuousBackupInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:ContinuousBackupInfoResponse",
            "description": "Continuous backup properties for this cluster."
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseVersion": {
            "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Cluster.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionConfigResponse",
            "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
          },
          "encryptionInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:EncryptionInfoResponse",
            "description": "The encryption information for the cluster."
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "initialUser": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:UserPasswordResponse",
            "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "migrationSource": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:MigrationSourceResponse",
            "description": "Cluster created via DMS migration."
          },
          "name": {
            "description": "The name of the cluster resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id} where the cluster ID segment should satisfy the regex expression `[a-z0-9-]+`. For more details see https://google.aip.dev/122. The prefix of the cluster resource name is the name of the parent resource: * projects/{project}/locations/{region}",
            "type": "string"
          },
          "network": {
            "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
            "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:NetworkConfigResponse"
          },
          "primaryConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:PrimaryConfigResponse",
            "description": "Cross Region replication config specific to PRIMARY cluster."
          },
          "pscConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:PscConfigResponse",
            "description": "Optional. The configuration for Private Service Connect (PSC) for the cluster."
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Cluster does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "secondaryConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:SecondaryConfigResponse",
            "description": "Cross Region replication config specific to SECONDARY cluster."
          },
          "sslConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:SslConfigResponse",
            "description": "SSL configuration for this AlloyDB cluster."
          },
          "state": {
            "description": "The current serving state of the cluster.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "automatedBackupPolicy",
          "backupSource",
          "clusterType",
          "continuousBackupConfig",
          "continuousBackupInfo",
          "createTime",
          "databaseVersion",
          "deleteTime",
          "displayName",
          "encryptionConfig",
          "encryptionInfo",
          "etag",
          "initialUser",
          "labels",
          "migrationSource",
          "name",
          "network",
          "networkConfig",
          "primaryConfig",
          "pscConfig",
          "reconciling",
          "satisfiesPzs",
          "secondaryConfig",
          "sslConfig",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1alpha:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "availabilityType": {
            "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones).",
            "type": "string"
          },
          "clientConnectionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:ClientConnectionConfigResponse",
            "description": "Optional. Client connection specific configurations"
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseFlags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value.",
            "type": "object"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Instance.",
            "type": "string"
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "gceZone": {
            "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity.",
            "type": "string"
          },
          "instanceType": {
            "description": "The type of the instance. Specified at creation time.",
            "type": "string"
          },
          "ipAddress": {
            "description": "The IP address for the Instance. This is the connection endpoint for an end-user application.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "machineConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:MachineConfigResponse",
            "description": "Configurations for the machines that host the underlying database engine."
          },
          "name": {
            "description": "The name of the instance resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id} where the cluster and instance ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the instance resource name is the name of the parent resource: * projects/{project}/locations/{region}/clusters/{cluster_id}",
            "type": "string"
          },
          "nodes": {
            "description": "List of available read-only VMs in this instance, including the standby for a PRIMARY instance.",
            "items": {
              "$ref": "#/types/google-native:alloydb%2Fv1alpha:NodeResponse"
            },
            "type": "array"
          },
          "queryInsightsConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:QueryInsightsInstanceConfigResponse",
            "description": "Configuration for query insights."
          },
          "readPoolConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:ReadPoolConfigResponse",
            "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Instance does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "state": {
            "description": "The current serving state of the instance.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updatePolicy": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:UpdatePolicyResponse",
            "description": "Update policy that will be applied during instance update. This field is not persisted when you update the instance. To use a non-default update policy, you must specify explicitly specify the value in each update request."
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          },
          "writableNode": {
            "$ref": "#/types/google-native:alloydb%2Fv1alpha:NodeResponse",
            "description": "This is set for the read-write VM of the PRIMARY instance only."
          }
        },
        "required": [
          "annotations",
          "availabilityType",
          "clientConnectionConfig",
          "createTime",
          "databaseFlags",
          "deleteTime",
          "displayName",
          "etag",
          "gceZone",
          "instanceType",
          "ipAddress",
          "labels",
          "machineConfig",
          "name",
          "nodes",
          "queryInsightsConfig",
          "readPoolConfig",
          "reconciling",
          "satisfiesPzs",
          "state",
          "uid",
          "updatePolicy",
          "updateTime",
          "writableNode"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1alpha:getUser": {
      "description": "Gets details of a single User.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "databaseRoles": {
            "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource in the form of projects/{project}/locations/{location}/cluster/{cluster}/users/{user}.",
            "type": "string"
          },
          "password": {
            "description": "Input only. Password for the user.",
            "type": "string"
          },
          "userType": {
            "description": "Optional. Type of this user.",
            "type": "string"
          }
        },
        "required": [
          "databaseRoles",
          "name",
          "password",
          "userType"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1beta:getBackup": {
      "description": "Gets details of a single Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "clusterName": {
            "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id}).",
            "type": "string"
          },
          "clusterUid": {
            "description": "The system-generated UID of the cluster which was used to create this resource.",
            "type": "string"
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseVersion": {
            "description": "The database engine major version of the cluster this backup was created from. Any restored cluster created from this backup will have the same database version.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the backup.",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Backup.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfigResponse",
            "description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
          },
          "encryptionInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionInfoResponse",
            "description": "The encryption information for the backup."
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "expiryQuantity": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:QuantityBasedExpiryResponse",
            "description": "The QuantityBasedExpiry of the backup, specified by the backup's retention policy. Once the expiry quantity is over retention, the backup is eligible to be garbage collected."
          },
          "expiryTime": {
            "description": "The time at which after the backup is eligible to be garbage collected. It is the duration specified by the backup's retention policy, added to the backup's create_time.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "name": {
            "description": "The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id} where the cluster and backup ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the backup resource name is the name of the parent resource: * projects/{project}/locations/{region}",
            "type": "string"
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation), if true, indicates that the service is actively updating the resource. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "sizeBytes": {
            "description": "The size of the backup in bytes.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          },
          "type": {
            "description": "The backup type, which suggests the trigger for the backup.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "clusterName",
          "clusterUid",
          "createTime",
          "databaseVersion",
          "deleteTime",
          "description",
          "displayName",
          "encryptionConfig",
          "encryptionInfo",
          "etag",
          "expiryQuantity",
          "expiryTime",
          "labels",
          "name",
          "reconciling",
          "sizeBytes",
          "state",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1beta:getCluster": {
      "description": "Gets details of a single Cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "automatedBackupPolicy": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:AutomatedBackupPolicyResponse",
            "description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
          },
          "backupSource": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:BackupSourceResponse",
            "description": "Cluster created from backup."
          },
          "clusterType": {
            "description": "The type of the cluster. This is an output-only field and it's populated at the Cluster creation time or the Cluster promotion time. The cluster type is determined by which RPC was used to create the cluster (i.e. `CreateCluster` vs. `CreateSecondaryCluster`",
            "type": "string"
          },
          "continuousBackupConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:ContinuousBackupConfigResponse",
            "description": "Optional. Continuous backup configuration for this cluster."
          },
          "continuousBackupInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:ContinuousBackupInfoResponse",
            "description": "Continuous backup properties for this cluster."
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseVersion": {
            "description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Cluster.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionConfigResponse",
            "description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
          },
          "encryptionInfo": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:EncryptionInfoResponse",
            "description": "The encryption information for the cluster."
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "initialUser": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:UserPasswordResponse",
            "description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "migrationSource": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:MigrationSourceResponse",
            "description": "Cluster created via DMS migration."
          },
          "name": {
            "description": "The name of the cluster resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id} where the cluster ID segment should satisfy the regex expression `[a-z0-9-]+`. For more details see https://google.aip.dev/122. The prefix of the cluster resource name is the name of the parent resource: * projects/{project}/locations/{region}",
            "type": "string"
          },
          "network": {
            "deprecationMessage": "Required. 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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
            "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. It is specified in the form: \"projects/{project}/global/networks/{network_id}\". This is required to create a cluster. Deprecated, use network_config.network instead.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:NetworkConfigResponse"
          },
          "primaryConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:PrimaryConfigResponse",
            "description": "Cross Region replication config specific to PRIMARY cluster."
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Cluster does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "secondaryConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:SecondaryConfigResponse",
            "description": "Cross Region replication config specific to SECONDARY cluster."
          },
          "sslConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:SslConfigResponse",
            "description": "SSL configuration for this AlloyDB cluster."
          },
          "state": {
            "description": "The current serving state of the cluster.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "automatedBackupPolicy",
          "backupSource",
          "clusterType",
          "continuousBackupConfig",
          "continuousBackupInfo",
          "createTime",
          "databaseVersion",
          "deleteTime",
          "displayName",
          "encryptionConfig",
          "encryptionInfo",
          "etag",
          "initialUser",
          "labels",
          "migrationSource",
          "name",
          "network",
          "networkConfig",
          "primaryConfig",
          "reconciling",
          "secondaryConfig",
          "sslConfig",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1beta:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
            "type": "object"
          },
          "availabilityType": {
            "description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones).",
            "type": "string"
          },
          "clientConnectionConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:ClientConnectionConfigResponse",
            "description": "Optional. Client connection specific configurations"
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "databaseFlags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Database flags. Set at instance level. * They are copied from primary instance on read instance creation. * Read instances can set new or override existing flags that are relevant for reads, e.g. for enabling columnar cache on a read instance. Flags set on read instance may or may not be present on primary. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value.",
            "type": "object"
          },
          "deleteTime": {
            "description": "Delete time stamp",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable and human-readable display name for the Instance.",
            "type": "string"
          },
          "etag": {
            "description": "For Resource freshness validation (https://google.aip.dev/154)",
            "type": "string"
          },
          "gceZone": {
            "description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity.",
            "type": "string"
          },
          "instanceType": {
            "description": "The type of the instance. Specified at creation time.",
            "type": "string"
          },
          "ipAddress": {
            "description": "The IP address for the Instance. This is the connection endpoint for an end-user application.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "machineConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:MachineConfigResponse",
            "description": "Configurations for the machines that host the underlying database engine."
          },
          "name": {
            "description": "The name of the instance resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id} where the cluster and instance ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the instance resource name is the name of the parent resource: * projects/{project}/locations/{region}/clusters/{cluster_id}",
            "type": "string"
          },
          "nodes": {
            "description": "List of available read-only VMs in this instance, including the standby for a PRIMARY instance.",
            "items": {
              "$ref": "#/types/google-native:alloydb%2Fv1beta:NodeResponse"
            },
            "type": "array"
          },
          "queryInsightsConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:QueryInsightsInstanceConfigResponse",
            "description": "Configuration for query insights."
          },
          "readPoolConfig": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:ReadPoolConfigResponse",
            "description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
          },
          "reconciling": {
            "description": "Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Instance does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance.",
            "type": "boolean"
          },
          "state": {
            "description": "The current serving state of the instance.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
            "type": "string"
          },
          "updatePolicy": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:UpdatePolicyResponse",
            "description": "Update policy that will be applied during instance update. This field is not persisted when you update the instance. To use a non-default update policy, you must specify explicitly specify the value in each update request."
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          },
          "writableNode": {
            "$ref": "#/types/google-native:alloydb%2Fv1beta:NodeResponse",
            "description": "This is set for the read-write VM of the PRIMARY instance only."
          }
        },
        "required": [
          "annotations",
          "availabilityType",
          "clientConnectionConfig",
          "createTime",
          "databaseFlags",
          "deleteTime",
          "displayName",
          "etag",
          "gceZone",
          "instanceType",
          "ipAddress",
          "labels",
          "machineConfig",
          "name",
          "nodes",
          "queryInsightsConfig",
          "readPoolConfig",
          "reconciling",
          "state",
          "uid",
          "updatePolicy",
          "updateTime",
          "writableNode"
        ],
        "type": "object"
      }
    },
    "google-native:alloydb/v1beta:getUser": {
      "description": "Gets details of a single User.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "databaseRoles": {
            "description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource in the form of projects/{project}/locations/{location}/cluster/{cluster}/users/{user}.",
            "type": "string"
          },
          "password": {
            "description": "Input only. Password for the user.",
            "type": "string"
          },
          "userType": {
            "description": "Optional. Type of this user.",
            "type": "string"
          }
        },
        "required": [
          "databaseRoles",
          "name",
          "password",
          "userType"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1:getDataExchange": {
      "description": "Gets the details of a data exchange.",
      "inputs": {
        "properties": {
          "dataExchangeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataExchangeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Optional. Description of the data exchange. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable display name of the data exchange. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (\u0026) and must not start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
            "type": "string"
          },
          "documentation": {
            "description": "Optional. Documentation describing the data exchange.",
            "type": "string"
          },
          "icon": {
            "description": "Optional. Base64 encoded image representing the data exchange. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the content of the fields are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire.",
            "type": "string"
          },
          "listingCount": {
            "description": "Number of listings contained in the data exchange.",
            "type": "integer"
          },
          "name": {
            "description": "The resource name of the data exchange. e.g. `projects/myproject/locations/US/dataExchanges/123`.",
            "type": "string"
          },
          "primaryContact": {
            "description": "Optional. Email or URL of the primary point of contact of the data exchange. Max Length: 1000 bytes.",
            "type": "string"
          },
          "sharingEnvironmentConfig": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:SharingEnvironmentConfigResponse",
            "description": "Optional. Configurable data sharing environment option for a data exchange."
          }
        },
        "required": [
          "description",
          "displayName",
          "documentation",
          "icon",
          "listingCount",
          "name",
          "primaryContact",
          "sharingEnvironmentConfig"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1:getDataExchangeIamPolicy": {
      "description": "Gets the IAM policy.",
      "inputs": {
        "properties": {
          "dataExchangeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataExchangeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1:getDataExchangeListingIamPolicy": {
      "description": "Gets the IAM policy.",
      "inputs": {
        "properties": {
          "dataExchangeId": {
            "type": "string"
          },
          "listingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataExchangeId",
          "listingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1:getListing": {
      "description": "Gets the details of a listing.",
      "inputs": {
        "properties": {
          "dataExchangeId": {
            "type": "string"
          },
          "listingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataExchangeId",
          "listingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryDataset": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:BigQueryDatasetSourceResponse",
            "description": "Shared dataset i.e. BigQuery dataset source."
          },
          "categories": {
            "description": "Optional. Categories of the listing. Up to two categories are allowed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataProvider": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:DataProviderResponse",
            "description": "Optional. Details of the data provider who owns the source data."
          },
          "description": {
            "description": "Optional. Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (\u0026) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
            "type": "string"
          },
          "documentation": {
            "description": "Optional. Documentation describing the listing.",
            "type": "string"
          },
          "icon": {
            "description": "Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the contents of the field are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`",
            "type": "string"
          },
          "primaryContact": {
            "description": "Optional. Email or URL of the primary point of contact of the listing. Max Length: 1000 bytes.",
            "type": "string"
          },
          "publisher": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:PublisherResponse",
            "description": "Optional. Details of the publisher who owns the listing and who can share the source data."
          },
          "requestAccess": {
            "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes.",
            "type": "string"
          },
          "restrictedExportConfig": {
            "$ref": "#/types/google-native:analyticshub%2Fv1:RestrictedExportConfigResponse",
            "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
          },
          "state": {
            "description": "Current state of the listing.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryDataset",
          "categories",
          "dataProvider",
          "description",
          "displayName",
          "documentation",
          "icon",
          "name",
          "primaryContact",
          "publisher",
          "requestAccess",
          "restrictedExportConfig",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1:getSubscriptionIamPolicy": {
      "description": "Gets the IAM policy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1beta1:getDataExchange": {
      "description": "Gets the details of a data exchange.",
      "inputs": {
        "properties": {
          "dataExchangeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataExchangeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Optional. Description of the data exchange. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable display name of the data exchange. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (\u0026) and must not start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
            "type": "string"
          },
          "documentation": {
            "description": "Optional. Documentation describing the data exchange.",
            "type": "string"
          },
          "icon": {
            "description": "Optional. Base64 encoded image representing the data exchange. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the content of the fields are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire.",
            "type": "string"
          },
          "listingCount": {
            "description": "Number of listings contained in the data exchange.",
            "type": "integer"
          },
          "name": {
            "description": "The resource name of the data exchange. e.g. `projects/myproject/locations/US/dataExchanges/123`.",
            "type": "string"
          },
          "primaryContact": {
            "description": "Optional. Email or URL of the primary point of contact of the data exchange. Max Length: 1000 bytes.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "displayName",
          "documentation",
          "icon",
          "listingCount",
          "name",
          "primaryContact"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1beta1:getDataExchangeIamPolicy": {
      "description": "Gets the IAM policy.",
      "inputs": {
        "properties": {
          "dataExchangeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataExchangeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1beta1:getDataExchangeListingIamPolicy": {
      "description": "Gets the IAM policy.",
      "inputs": {
        "properties": {
          "dataExchangeId": {
            "type": "string"
          },
          "listingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataExchangeId",
          "listingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:analyticshub%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:analyticshub/v1beta1:getListing": {
      "description": "Gets the details of a listing.",
      "inputs": {
        "properties": {
          "dataExchangeId": {
            "type": "string"
          },
          "listingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataExchangeId",
          "listingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryDataset": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:BigQueryDatasetSourceResponse",
            "description": "Shared dataset i.e. BigQuery dataset source."
          },
          "categories": {
            "description": "Optional. Categories of the listing. Up to two categories are allowed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataProvider": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:DataProviderResponse",
            "description": "Optional. Details of the data provider who owns the source data."
          },
          "description": {
            "description": "Optional. Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (\u0026) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
            "type": "string"
          },
          "documentation": {
            "description": "Optional. Documentation describing the listing.",
            "type": "string"
          },
          "icon": {
            "description": "Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the contents of the field are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`",
            "type": "string"
          },
          "primaryContact": {
            "description": "Optional. Email or URL of the primary point of contact of the listing. Max Length: 1000 bytes.",
            "type": "string"
          },
          "publisher": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:PublisherResponse",
            "description": "Optional. Details of the publisher who owns the listing and who can share the source data."
          },
          "requestAccess": {
            "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes.",
            "type": "string"
          },
          "restrictedExportConfig": {
            "$ref": "#/types/google-native:analyticshub%2Fv1beta1:RestrictedExportConfigResponse",
            "description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
          },
          "state": {
            "description": "Current state of the listing.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryDataset",
          "categories",
          "dataProvider",
          "description",
          "displayName",
          "documentation",
          "icon",
          "name",
          "primaryContact",
          "publisher",
          "requestAccess",
          "restrictedExportConfig",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1:getApi": {
      "description": "Gets details of a single Api.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "managedService": {
            "description": "Optional. Immutable. The name of a Google Managed Service ( https://cloud.google.com/service-infrastructure/docs/glossary#managed). If not specified, a new Service will automatically be created in the same project as this API.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the API. Format: projects/{project}/locations/global/apis/{api}",
            "type": "string"
          },
          "state": {
            "description": "State of the API.",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "labels",
          "managedService",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1:getApiConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "configId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "configId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1:getApiIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1:getConfig": {
      "description": "Gets details of a single ApiConfig.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "configId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "configId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name.",
            "type": "string"
          },
          "gatewayServiceAccount": {
            "description": "Immutable. The Google Cloud IAM Service Account that Gateways serving this config should use to authenticate to other services. This may either be the Service Account's email (`{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`) or its full resource name (`projects/{PROJECT}/accounts/{UNIQUE_ID}`). This is most often used when the service is a GCP resource such as a Cloud Run Service or an IAP-secured service.",
            "type": "string"
          },
          "grpcServices": {
            "description": "Optional. gRPC service definition files. If specified, openapi_documents must not be included.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigGrpcServiceDefinitionResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "managedServiceConfigs": {
            "description": "Optional. Service Configuration files. At least one must be included when using gRPC service definitions. See https://cloud.google.com/endpoints/docs/grpc/grpc-service-config#service_configuration_overview for the expected file contents. If multiple files are specified, the files are merged with the following rules: * All singular scalar fields are merged using \"last one wins\" semantics in the order of the files uploaded. * Repeated fields are concatenated. * Singular embedded messages are merged using these rules for nested fields.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigFileResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Resource name of the API Config. Format: projects/{project}/locations/global/apis/{api}/configs/{api_config}",
            "type": "string"
          },
          "openapiDocuments": {
            "description": "Optional. OpenAPI specification documents. If specified, grpc_services and managed_service_configs must not be included.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayApiConfigOpenApiDocumentResponse"
            },
            "type": "array"
          },
          "serviceConfigId": {
            "description": "The ID of the associated Service Config ( https://cloud.google.com/service-infrastructure/docs/glossary#config).",
            "type": "string"
          },
          "state": {
            "description": "State of the API Config.",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "gatewayServiceAccount",
          "grpcServices",
          "labels",
          "managedServiceConfigs",
          "name",
          "openapiDocuments",
          "serviceConfigId",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1:getGateway": {
      "description": "Gets details of a single Gateway.",
      "inputs": {
        "properties": {
          "gatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "apiConfig": {
            "description": "Resource name of the API Config for this Gateway. Format: projects/{project}/locations/global/apis/{api}/configs/{apiConfig}",
            "type": "string"
          },
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "defaultHostname": {
            "description": "The default API Gateway host name of the form `{gateway_id}-{hash}.{region_code}.gateway.dev`.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Gateway. Format: projects/{project}/locations/{location}/gateways/{gateway}",
            "type": "string"
          },
          "state": {
            "description": "The current state of the Gateway.",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "apiConfig",
          "createTime",
          "defaultHostname",
          "displayName",
          "labels",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1:getGatewayIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "gatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayAuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1:ApigatewayBindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1beta:getApi": {
      "description": "Gets details of a single Api.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "managedService": {
            "description": "Optional. Immutable. The name of a Google Managed Service ( https://cloud.google.com/service-infrastructure/docs/glossary#managed). If not specified, a new Service will automatically be created in the same project as this API.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the API. Format: projects/{project}/locations/global/apis/{api}",
            "type": "string"
          },
          "state": {
            "description": "State of the API.",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "labels",
          "managedService",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1beta:getApiConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "configId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "configId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1beta:getApiIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1beta:getConfig": {
      "description": "Gets details of a single ApiConfig.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "configId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "configId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name.",
            "type": "string"
          },
          "gatewayConfig": {
            "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayGatewayConfigResponse",
            "description": "Immutable. Gateway specific configuration."
          },
          "gatewayServiceAccount": {
            "description": "Immutable. The Google Cloud IAM Service Account that Gateways serving this config should use to authenticate to other services. This may either be the Service Account's email (`{ACCOUNT_ID}@{PROJECT}.iam.gserviceaccount.com`) or its full resource name (`projects/{PROJECT}/accounts/{UNIQUE_ID}`). This is most often used when the service is a GCP resource such as a Cloud Run Service or an IAP-secured service.",
            "type": "string"
          },
          "grpcServices": {
            "description": "Optional. gRPC service definition files. If specified, openapi_documents must not be included.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigGrpcServiceDefinitionResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "managedServiceConfigs": {
            "description": "Optional. Service Configuration files. At least one must be included when using gRPC service definitions. See https://cloud.google.com/endpoints/docs/grpc/grpc-service-config#service_configuration_overview for the expected file contents. If multiple files are specified, the files are merged with the following rules: * All singular scalar fields are merged using \"last one wins\" semantics in the order of the files uploaded. * Repeated fields are concatenated. * Singular embedded messages are merged using these rules for nested fields.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigFileResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Resource name of the API Config. Format: projects/{project}/locations/global/apis/{api}/configs/{api_config}",
            "type": "string"
          },
          "openapiDocuments": {
            "description": "Optional. OpenAPI specification documents. If specified, grpc_services and managed_service_configs must not be included.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayApiConfigOpenApiDocumentResponse"
            },
            "type": "array"
          },
          "serviceConfigId": {
            "description": "The ID of the associated Service Config ( https://cloud.google.com/service-infrastructure/docs/glossary#config).",
            "type": "string"
          },
          "state": {
            "description": "State of the API Config.",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "gatewayConfig",
          "gatewayServiceAccount",
          "grpcServices",
          "labels",
          "managedServiceConfigs",
          "name",
          "openapiDocuments",
          "serviceConfigId",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1beta:getGateway": {
      "description": "Gets details of a single Gateway.",
      "inputs": {
        "properties": {
          "gatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "apiConfig": {
            "description": "Resource name of the API Config for this Gateway. Format: projects/{project}/locations/global/apis/{api}/configs/{apiConfig}",
            "type": "string"
          },
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "defaultHostname": {
            "description": "The default API Gateway host name of the form `{gateway_id}-{hash}.{region_code}.gateway.dev`.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Gateway. Format: projects/{project}/locations/{location}/gateways/{gateway}",
            "type": "string"
          },
          "state": {
            "description": "The current state of the Gateway.",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "apiConfig",
          "createTime",
          "defaultHostname",
          "displayName",
          "labels",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigateway/v1beta:getGatewayIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "gatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayAuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigateway%2Fv1beta:ApigatewayBindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getAlias": {
      "description": "Gets an alias.",
      "inputs": {
        "properties": {
          "aliasId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "keystoreId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "aliasId",
          "environmentId",
          "keystoreId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "alias": {
            "description": "Resource ID for this alias. Values must match the regular expression `[^/]{1,255}`.",
            "type": "string"
          },
          "certsInfo": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CertificateResponse",
            "description": "Chain of certificates under this alias."
          },
          "type": {
            "description": "Type of alias.",
            "type": "string"
          }
        },
        "required": [
          "alias",
          "certsInfo",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getApi": {
      "description": "Gets an API proxy including a list of existing revisions.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "apiProxyType": {
            "description": "The type of the API proxy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User labels applied to this API Proxy.",
            "type": "object"
          },
          "latestRevisionId": {
            "description": "The id of the most recently created revision for this api proxy.",
            "type": "string"
          },
          "metaData": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1EntityMetadataResponse",
            "description": "Metadata describing the API proxy."
          },
          "name": {
            "description": "Name of the API proxy.",
            "type": "string"
          },
          "readOnly": {
            "description": "Whether this proxy is read-only. A read-only proxy cannot have new revisions created through calls to CreateApiProxyRevision. A proxy is read-only if it was generated by an archive.",
            "type": "boolean"
          },
          "revision": {
            "description": "List of revisions defined for the API proxy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "apiProxyType",
          "labels",
          "latestRevisionId",
          "metaData",
          "name",
          "readOnly",
          "revision"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getApiProduct": {
      "description": "Gets configuration details for an API product. The API product name required in the request URL is the internal name of the product, not the display name. While they may be the same, it depends on whether the API product was created via the UI or the API. View the list of API products to verify the internal name.",
      "inputs": {
        "properties": {
          "apiproductId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiproductId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "apiResources": {
            "description": "Comma-separated list of API resources to be bundled in the API product. By default, the resource paths are mapped from the `proxy.pathsuffix` variable. The proxy path suffix is defined as the URI fragment following the ProxyEndpoint base path. For example, if the `apiResources` element is defined to be `/forecastrss` and the base path defined for the API proxy is `/weather`, then only requests to `/weather/forecastrss` are permitted by the API product. You can select a specific path, or you can select all subpaths with the following wildcard: - `/**`: Indicates that all sub-URIs are included. - `/*` : Indicates that only URIs one level down are included. By default, / supports the same resources as /** as well as the base path defined by the API proxy. For example, if the base path of the API proxy is `/v1/weatherapikey`, then the API product supports requests to `/v1/weatherapikey` and to any sub-URIs, such as `/v1/weatherapikey/forecastrss`, `/v1/weatherapikey/region/CA`, and so on. For more information, see Managing API products.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "approvalType": {
            "description": "Flag that specifies how API keys are approved to access the APIs defined by the API product. If set to `manual`, the consumer key is generated and returned in \"pending\" state. In this case, the API keys won't work until they have been explicitly approved. If set to `auto`, the consumer key is generated and returned in \"approved\" state and can be used immediately. **Note:** Typically, `auto` is used to provide access to free or trial API products that provide limited quota or capabilities.",
            "type": "string"
          },
          "attributes": {
            "description": "Array of attributes that may be used to extend the default API product profile with customer-specific metadata. You can specify a maximum of 18 attributes. Use this property to specify the access level of the API product as either `public`, `private`, or `internal`. Only products marked `public` are available to developers in the Apigee developer portal. For example, you can set a product to `internal` while it is in development and then change access to `public` when it is ready to release on the portal. API products marked as `private` do not appear on the portal, but can be accessed by external developers.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Response only. Creation time of this environment as milliseconds since epoch.",
            "type": "string"
          },
          "description": {
            "description": "Description of the API product. Include key information about the API product that is not captured by other fields.",
            "type": "string"
          },
          "displayName": {
            "description": "Name displayed in the UI or developer portal to developers registering for API access.",
            "type": "string"
          },
          "environments": {
            "description": "Comma-separated list of environment names to which the API product is bound. Requests to environments that are not listed are rejected. By specifying one or more environments, you can bind the resources listed in the API product to a specific environment, preventing developers from accessing those resources through API proxies deployed in another environment. This setting is used, for example, to prevent resources associated with API proxies in `prod` from being accessed by API proxies deployed in `test`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "graphqlOperationGroup": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GraphQLOperationGroupResponse",
            "description": "Configuration used to group Apigee proxies or remote services with graphQL operation name, graphQL operation type and quotas. This grouping allows us to precisely set quota for a particular combination of graphQL name and operation type for a particular proxy request. If graphQL name is not set, this would imply quota will be applied on all graphQL requests matching the operation type."
          },
          "grpcOperationGroup": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1GrpcOperationGroupResponse",
            "description": "Optional. Configuration used to group Apigee proxies with gRPC services and method names. This grouping allows us to set quota for a particular proxy with the gRPC service name and method. If a method name is not set, this implies quota and authorization are applied to all gRPC methods implemented by that proxy for that particular gRPC service."
          },
          "lastModifiedAt": {
            "description": "Response only. Modified time of this environment as milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "Internal name of the API product. Characters you can use in the name are restricted to: `A-Z0-9._\\-$ %`. **Note:** The internal name cannot be edited when updating the API product.",
            "type": "string"
          },
          "operationGroup": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1OperationGroupResponse",
            "description": "Configuration used to group Apigee proxies or remote services with resources, method types, and quotas. The resource refers to the resource URI (excluding the base path). With this grouping, the API product creator is able to fine-tune and give precise control over which REST methods have access to specific resources and how many calls can be made (using the `quota` setting). **Note:** The `api_resources` setting cannot be specified for both the API product and operation group; otherwise the call will fail."
          },
          "proxies": {
            "description": "Comma-separated list of API proxy names to which this API product is bound. By specifying API proxies, you can associate resources in the API product with specific API proxies, preventing developers from accessing those resources through other API proxies. Apigee rejects requests to API proxies that are not listed. **Note:** The API proxy names must already exist in the specified environment as they will be validated upon creation.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "quota": {
            "description": "Number of request messages permitted per app by this API product for the specified `quotaInterval` and `quotaTimeUnit`. For example, a `quota` of 50, for a `quotaInterval` of 12 and a `quotaTimeUnit` of hours means 50 requests are allowed every 12 hours.",
            "type": "string"
          },
          "quotaCounterScope": {
            "description": "Scope of the quota decides how the quota counter gets applied and evaluate for quota violation. If the Scope is set as PROXY, then all the operations defined for the APIproduct that are associated with the same proxy will share the same quota counter set at the APIproduct level, making it a global counter at a proxy level. If the Scope is set as OPERATION, then each operations get the counter set at the API product dedicated, making it a local counter. Note that, the QuotaCounterScope applies only when an operation does not have dedicated quota set for itself.",
            "type": "string"
          },
          "quotaInterval": {
            "description": "Time interval over which the number of request messages is calculated.",
            "type": "string"
          },
          "quotaTimeUnit": {
            "description": "Time unit defined for the `quotaInterval`. Valid values include `minute`, `hour`, `day`, or `month`.",
            "type": "string"
          },
          "scopes": {
            "description": "Comma-separated list of OAuth scopes that are validated at runtime. Apigee validates that the scopes in any access token presented match the scopes defined in the OAuth policy associated with the API product.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "apiResources",
          "approvalType",
          "attributes",
          "createdAt",
          "description",
          "displayName",
          "environments",
          "graphqlOperationGroup",
          "grpcOperationGroup",
          "lastModifiedAt",
          "name",
          "operationGroup",
          "proxies",
          "quota",
          "quotaCounterScope",
          "quotaInterval",
          "quotaTimeUnit",
          "scopes"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getApicategory": {
      "description": "Gets an API category.",
      "inputs": {
        "properties": {
          "apicategoryId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "siteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apicategoryId",
          "organizationId",
          "siteId"
        ]
      },
      "outputs": {
        "properties": {
          "data": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ApiCategoryResponse",
            "description": "The API category resource."
          },
          "errorCode": {
            "description": "Unique error code for the request, if any.",
            "type": "string"
          },
          "message": {
            "description": "Description of the operation.",
            "type": "string"
          },
          "requestId": {
            "description": "Unique ID of the request.",
            "type": "string"
          },
          "status": {
            "description": "Status of the operation.",
            "type": "string"
          }
        },
        "required": [
          "data",
          "errorCode",
          "message",
          "requestId",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getAppGroupApp": {
      "description": "Returns the details for an AppGroup app.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "appgroupId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "appgroupId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "apiProducts": {
            "description": "List of API products associated with the AppGroup app.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "appGroup": {
            "description": "Immutable. Name of the parent AppGroup whose resource name format is of syntax (organizations/*/appgroups/*).",
            "type": "string"
          },
          "appId": {
            "description": "Immutable. ID of the AppGroup app.",
            "type": "string"
          },
          "attributes": {
            "description": "List of attributes for the AppGroup app.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
            },
            "type": "array"
          },
          "callbackUrl": {
            "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to AppGroup apps.",
            "type": "string"
          },
          "createdAt": {
            "description": "Time the AppGroup app was created in milliseconds since epoch.",
            "type": "string"
          },
          "credentials": {
            "description": "Set of credentials for the AppGroup app consisting of the consumer key/secret pairs associated with the API products.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CredentialResponse"
            },
            "type": "array"
          },
          "keyExpiresIn": {
            "description": "Immutable. Expiration time, in seconds, for the consumer key that is generated for the AppGroup app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "Time the AppGroup app was modified in milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Name of the AppGroup app whose resource name format is of syntax (organizations/*/appgroups/*/apps/*).",
            "type": "string"
          },
          "scopes": {
            "description": "Scopes to apply to the AppGroup app. The specified scopes must already exist for the API product that you associate with the AppGroup app.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "description": "Status of the App. Valid values include `approved` or `revoked`.",
            "type": "string"
          }
        },
        "required": [
          "apiProducts",
          "appGroup",
          "appId",
          "attributes",
          "callbackUrl",
          "createdAt",
          "credentials",
          "keyExpiresIn",
          "lastModifiedAt",
          "name",
          "scopes",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getAppGroupAppKey": {
      "description": "Gets details for a consumer key for a AppGroup app, including the key and secret value, associated API products, and other information.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "appgroupId": {
            "type": "string"
          },
          "keyId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "appgroupId",
          "keyId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "apiProducts": {
            "description": "List of API products and its status for which the credential can be used. **Note**: Use UpdateAppGroupAppKeyApiProductRequest API to make the association after the consumer key and secret are created.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1APIProductAssociationResponse"
            },
            "type": "array"
          },
          "attributes": {
            "description": "List of attributes associated with the credential.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
            },
            "type": "array"
          },
          "consumerKey": {
            "description": "Immutable. Consumer key.",
            "type": "string"
          },
          "consumerSecret": {
            "description": "Secret key.",
            "type": "string"
          },
          "expiresAt": {
            "description": "Time the AppGroup app expires in milliseconds since epoch.",
            "type": "string"
          },
          "expiresInSeconds": {
            "description": "Immutable. Expiration time, in seconds, for the consumer key. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
            "type": "string"
          },
          "issuedAt": {
            "description": "Time the AppGroup app was created in milliseconds since epoch.",
            "type": "string"
          },
          "scopes": {
            "description": "Scopes to apply to the app. The specified scope names must already be defined for the API product that you associate with the app.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "description": "Status of the credential. Valid values include `approved` or `revoked`.",
            "type": "string"
          }
        },
        "required": [
          "apiProducts",
          "attributes",
          "consumerKey",
          "consumerSecret",
          "expiresAt",
          "expiresInSeconds",
          "issuedAt",
          "scopes",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getAppgroup": {
      "description": "Returns the AppGroup details for the provided AppGroup name in the request URI.",
      "inputs": {
        "properties": {
          "appgroupId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appgroupId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "appGroupId": {
            "description": "Internal identifier that cannot be edited",
            "type": "string"
          },
          "attributes": {
            "description": "A list of attributes",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
            },
            "type": "array"
          },
          "channelId": {
            "description": "channel identifier identifies the owner maintaing this grouping.",
            "type": "string"
          },
          "channelUri": {
            "description": "A reference to the associated storefront/marketplace.",
            "type": "string"
          },
          "createdAt": {
            "description": "Created time as milliseconds since epoch.",
            "type": "string"
          },
          "displayName": {
            "description": "app group name displayed in the UI",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "Modified time as milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Name of the AppGroup. Characters you can use in the name are restricted to: A-Z0-9._\\-$ %.",
            "type": "string"
          },
          "organization": {
            "description": "Immutable. the org the app group is created",
            "type": "string"
          },
          "status": {
            "description": "Valid values are `active` or `inactive`. Note that the status of the AppGroup should be updated via UpdateAppGroupRequest by setting the action as `active` or `inactive`.",
            "type": "string"
          }
        },
        "required": [
          "appGroupId",
          "attributes",
          "channelId",
          "channelUri",
          "createdAt",
          "displayName",
          "lastModifiedAt",
          "name",
          "organization",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getArchiveDeployment": {
      "description": "Gets the specified ArchiveDeployment.",
      "inputs": {
        "properties": {
          "archiveDeploymentId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "archiveDeploymentId",
          "environmentId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createdAt": {
            "description": "The time at which the Archive Deployment was created in milliseconds since the epoch.",
            "type": "string"
          },
          "gcsUri": {
            "description": "Input only. The Google Cloud Storage signed URL returned from GenerateUploadUrl and used to upload the Archive zip file.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize ArchiveDeployments. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Archive Deployment in the following format: `organizations/{org}/environments/{env}/archiveDeployments/{id}`.",
            "type": "string"
          },
          "operation": {
            "description": "A reference to the LRO that created this Archive Deployment in the following format: `organizations/{org}/operations/{id}`",
            "type": "string"
          },
          "updatedAt": {
            "description": "The time at which the Archive Deployment was updated in milliseconds since the epoch.",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "gcsUri",
          "labels",
          "name",
          "operation",
          "updatedAt"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getCanaryEvaluation": {
      "description": "Gets a CanaryEvaluation for an organization.",
      "inputs": {
        "properties": {
          "canaryevaluationId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "canaryevaluationId",
          "instanceId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "control": {
            "description": "The stable version that is serving requests.",
            "type": "string"
          },
          "createTime": {
            "description": "Create time of the canary evaluation.",
            "type": "string"
          },
          "endTime": {
            "description": "End time for the evaluation's analysis.",
            "type": "string"
          },
          "metricLabels": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CanaryEvaluationMetricLabelsResponse",
            "description": "Labels used to filter the metrics used for a canary evaluation."
          },
          "name": {
            "description": "Name of the canary evalution.",
            "type": "string"
          },
          "startTime": {
            "description": "Start time for the canary evaluation's analysis.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the canary evaluation.",
            "type": "string"
          },
          "treatment": {
            "description": "The newer version that is serving requests.",
            "type": "string"
          },
          "verdict": {
            "description": "The resulting verdict of the canary evaluations: NONE, PASS, or FAIL.",
            "type": "string"
          }
        },
        "required": [
          "control",
          "createTime",
          "endTime",
          "metricLabels",
          "name",
          "startTime",
          "state",
          "treatment",
          "verdict"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getDataCollector": {
      "description": "Gets a data collector.",
      "inputs": {
        "properties": {
          "datacollectorId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datacollectorId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createdAt": {
            "description": "The time at which the data collector was created in milliseconds since the epoch.",
            "type": "string"
          },
          "description": {
            "description": "A description of the data collector.",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "The time at which the Data Collector was last updated in milliseconds since the epoch.",
            "type": "string"
          },
          "name": {
            "description": "ID of the data collector. Must begin with `dc_`.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of data this data collector will collect.",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "description",
          "lastModifiedAt",
          "name",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getDatastore": {
      "description": "Get a Datastore",
      "inputs": {
        "properties": {
          "datastoreId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datastoreId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Datastore create time, in milliseconds since the epoch of 1970-01-01T00:00:00Z",
            "type": "string"
          },
          "datastoreConfig": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1DatastoreConfigResponse",
            "description": "Datastore Configurations."
          },
          "displayName": {
            "description": "Display name in UI",
            "type": "string"
          },
          "lastUpdateTime": {
            "description": "Datastore last update time, in milliseconds since the epoch of 1970-01-01T00:00:00Z",
            "type": "string"
          },
          "org": {
            "description": "Organization that the datastore belongs to",
            "type": "string"
          },
          "self": {
            "description": "Resource link of Datastore. Example: `/organizations/{org}/analytics/datastores/{uuid}`",
            "type": "string"
          },
          "targetType": {
            "description": "Destination storage type. Supported types `gcs` or `bigquery`.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "datastoreConfig",
          "displayName",
          "lastUpdateTime",
          "org",
          "self",
          "targetType"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getDebugSession": {
      "description": "Retrieves a debug session.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "debugsessionId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "revisionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "debugsessionId",
          "environmentId",
          "organizationId",
          "revisionId"
        ]
      },
      "outputs": {
        "properties": {
          "count": {
            "description": "Optional. The number of request to be traced. Min = 1, Max = 15, Default = 10.",
            "type": "integer"
          },
          "createTime": {
            "description": "The first transaction creation timestamp, recorded by UAP.",
            "type": "string"
          },
          "filter": {
            "description": "Optional. A conditional statement which is evaluated against the request message to determine if it should be traced. Syntax matches that of on API Proxy bundle flow Condition.",
            "type": "string"
          },
          "name": {
            "description": "A unique ID for this DebugSession.",
            "type": "string"
          },
          "timeout": {
            "description": "Optional. The time in seconds after which this DebugSession should end. This value will override the value in query param, if both are provided.",
            "type": "string"
          },
          "tracesize": {
            "description": "Optional. The maximum number of bytes captured from the response payload. Min = 0, Max = 5120, Default = 5120.",
            "type": "integer"
          },
          "validity": {
            "description": "Optional. The length of time, in seconds, that this debug session is valid, starting from when it's received in the control plane. Min = 1, Max = 15, Default = 10.",
            "type": "integer"
          }
        },
        "required": [
          "count",
          "createTime",
          "filter",
          "name",
          "timeout",
          "tracesize",
          "validity"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getDeveloper": {
      "description": "Returns the developer details, including the developer's name, email address, apps, and other information. **Note**: The response includes only the first 100 developer apps.",
      "inputs": {
        "properties": {
          "action": {
            "type": "string"
          },
          "developerId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "developerId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "accessType": {
            "description": "Access type.",
            "type": "string"
          },
          "appFamily": {
            "description": "Developer app family.",
            "type": "string"
          },
          "apps": {
            "description": "List of apps associated with the developer.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "attributes": {
            "description": "Optional. Developer attributes (name/value pairs). The custom attribute limit is 18.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
            },
            "type": "array"
          },
          "companies": {
            "description": "List of companies associated with the developer.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Time at which the developer was created in milliseconds since epoch.",
            "type": "string"
          },
          "developerId": {
            "description": "ID of the developer. **Note**: IDs are generated internally by Apigee and are not guaranteed to stay the same over time.",
            "type": "string"
          },
          "email": {
            "description": "Email address of the developer. This value is used to uniquely identify the developer in Apigee hybrid. Note that the email address has to be in lowercase only.",
            "type": "string"
          },
          "firstName": {
            "description": "First name of the developer.",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "Time at which the developer was last modified in milliseconds since epoch.",
            "type": "string"
          },
          "lastName": {
            "description": "Last name of the developer.",
            "type": "string"
          },
          "organizationName": {
            "description": "Name of the Apigee organization in which the developer resides.",
            "type": "string"
          },
          "status": {
            "description": "Status of the developer. Valid values are `active` and `inactive`.",
            "type": "string"
          },
          "userName": {
            "description": "User name of the developer. Not used by Apigee hybrid.",
            "type": "string"
          }
        },
        "required": [
          "accessType",
          "appFamily",
          "apps",
          "attributes",
          "companies",
          "createdAt",
          "developerId",
          "email",
          "firstName",
          "lastModifiedAt",
          "lastName",
          "organizationName",
          "status",
          "userName"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getDeveloperApp": {
      "description": "Returns the details for a developer app.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "developerId": {
            "type": "string"
          },
          "entity": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "query": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "developerId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "apiProducts": {
            "description": "List of API products associated with the developer app.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "appFamily": {
            "description": "Developer app family.",
            "type": "string"
          },
          "appId": {
            "description": "ID of the developer app.",
            "type": "string"
          },
          "attributes": {
            "description": "List of attributes for the developer app.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
            },
            "type": "array"
          },
          "callbackUrl": {
            "description": "Callback URL used by OAuth 2.0 authorization servers to communicate authorization codes back to developer apps.",
            "type": "string"
          },
          "createdAt": {
            "description": "Time the developer app was created in milliseconds since epoch.",
            "type": "string"
          },
          "credentials": {
            "description": "Set of credentials for the developer app consisting of the consumer key/secret pairs associated with the API products.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CredentialResponse"
            },
            "type": "array"
          },
          "developerId": {
            "description": "ID of the developer.",
            "type": "string"
          },
          "keyExpiresIn": {
            "description": "Expiration time, in milliseconds, for the consumer key that is generated for the developer app. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "Time the developer app was modified in milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "Name of the developer app.",
            "type": "string"
          },
          "scopes": {
            "description": "Scopes to apply to the developer app. The specified scopes must already exist for the API product that you associate with the developer app.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "description": "Status of the credential. Valid values include `approved` or `revoked`.",
            "type": "string"
          }
        },
        "required": [
          "apiProducts",
          "appFamily",
          "appId",
          "attributes",
          "callbackUrl",
          "createdAt",
          "credentials",
          "developerId",
          "keyExpiresIn",
          "lastModifiedAt",
          "name",
          "scopes",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getDeveloperAppKey": {
      "description": "Gets details for a consumer key for a developer app, including the key and secret value, associated API products, and other information.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "developerId": {
            "type": "string"
          },
          "keyId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "developerId",
          "keyId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "apiProducts": {
            "description": "List of API products for which the credential can be used. **Note**: Do not specify the list of API products when creating a consumer key and secret for a developer app. Instead, use the UpdateDeveloperAppKey API to make the association after the consumer key and secret are created.",
            "items": {
              "$ref": "pulumi.json#/Any"
            },
            "type": "array"
          },
          "attributes": {
            "description": "List of attributes associated with the credential.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AttributeResponse"
            },
            "type": "array"
          },
          "consumerKey": {
            "description": "Consumer key.",
            "type": "string"
          },
          "consumerSecret": {
            "description": "Secret key.",
            "type": "string"
          },
          "expiresAt": {
            "description": "Time the developer app expires in milliseconds since epoch.",
            "type": "string"
          },
          "expiresInSeconds": {
            "description": "Input only. Expiration time, in seconds, for the consumer key. If not set or left to the default value of `-1`, the API key never expires. The expiration time can't be updated after it is set.",
            "type": "string"
          },
          "issuedAt": {
            "description": "Time the developer app was created in milliseconds since epoch.",
            "type": "string"
          },
          "scopes": {
            "description": "Scopes to apply to the app. The specified scope names must already be defined for the API product that you associate with the app.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "description": "Status of the credential. Valid values include `approved` or `revoked`.",
            "type": "string"
          }
        },
        "required": [
          "apiProducts",
          "attributes",
          "consumerKey",
          "consumerSecret",
          "expiresAt",
          "expiresInSeconds",
          "issuedAt",
          "scopes",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getEndpointAttachment": {
      "description": "Gets the endpoint attachment.",
      "inputs": {
        "properties": {
          "endpointAttachmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointAttachmentId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "connectionState": {
            "description": "State of the endpoint attachment connection to the service attachment.",
            "type": "string"
          },
          "host": {
            "description": "Host that can be used in either the HTTP target endpoint directly or as the host in target server.",
            "type": "string"
          },
          "location": {
            "description": "Location of the endpoint attachment.",
            "type": "string"
          },
          "name": {
            "description": "Name of the endpoint attachment. Use the following structure in your request: `organizations/{org}/endpointAttachments/{endpoint_attachment}`",
            "type": "string"
          },
          "serviceAttachment": {
            "description": "Format: projects/*/regions/*/serviceAttachments/*",
            "type": "string"
          },
          "state": {
            "description": "State of the endpoint attachment. Values other than `ACTIVE` mean the resource is not ready to use.",
            "type": "string"
          }
        },
        "required": [
          "connectionState",
          "host",
          "location",
          "name",
          "serviceAttachment",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getEntry": {
      "description": "Get the key value entry value for a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "entryId": {
            "type": "string"
          },
          "keyvaluemapId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "entryId",
          "keyvaluemapId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Resource URI that can be used to identify the scope of the key value map entries.",
            "type": "string"
          },
          "value": {
            "description": "Data or payload that is being retrieved and associated with the unique key.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getEnvgroup": {
      "description": "Gets an environment group.",
      "inputs": {
        "properties": {
          "envgroupId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "envgroupId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createdAt": {
            "description": "The time at which the environment group was created as milliseconds since epoch.",
            "type": "string"
          },
          "hostnames": {
            "description": "Host names for this environment group.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "lastModifiedAt": {
            "description": "The time at which the environment group was last updated as milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "ID of the environment group.",
            "type": "string"
          },
          "state": {
            "description": "State of the environment group. Values other than ACTIVE means the resource is not ready to use.",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "hostnames",
          "lastModifiedAt",
          "name",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getEnvgroupAttachment": {
      "description": "Gets an environment group attachment.",
      "inputs": {
        "properties": {
          "attachmentId": {
            "type": "string"
          },
          "envgroupId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attachmentId",
          "envgroupId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createdAt": {
            "description": "The time at which the environment group attachment was created as milliseconds since epoch.",
            "type": "string"
          },
          "environment": {
            "description": "ID of the attached environment.",
            "type": "string"
          },
          "environmentGroupId": {
            "description": "ID of the environment group.",
            "type": "string"
          },
          "name": {
            "description": "ID of the environment group attachment.",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "environment",
          "environmentGroupId",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getEnvironment": {
      "description": "Gets environment details.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "apiProxyType": {
            "description": "Optional. API Proxy type supported by the environment. The type can be set when creating the Environment and cannot be changed.",
            "type": "string"
          },
          "createdAt": {
            "description": "Creation time of this environment as milliseconds since epoch.",
            "type": "string"
          },
          "deploymentType": {
            "description": "Optional. Deployment type supported by the environment. The deployment type can be set when creating the environment and cannot be changed. When you enable archive deployment, you will be **prevented from performing** a [subset of actions](/apigee/docs/api-platform/local-development/overview#prevented-actions) within the environment, including: * Managing the deployment of API proxy or shared flow revisions * Creating, updating, or deleting resource files * Creating, updating, or deleting target servers",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the environment.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name for this environment.",
            "type": "string"
          },
          "forwardProxyUri": {
            "description": "Optional. Url of the forward proxy to be applied to the runtime instances in this environment. Must be in the format of {scheme}://{hostname}:{port}. Note that scheme must be one of \"http\" or \"https\", and port must be supplied.",
            "type": "string"
          },
          "hasAttachedFlowHooks": {
            "type": "boolean"
          },
          "lastModifiedAt": {
            "description": "Last modification time of this environment as milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "Name of the environment. Values must match the regular expression `^[.\\\\p{Alnum}-_]{1,255}$`",
            "type": "string"
          },
          "nodeConfig": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1NodeConfigResponse",
            "description": "Optional. NodeConfig of the environment."
          },
          "properties": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1PropertiesResponse",
            "description": "Optional. Key-value pairs that may be used for customizing the environment."
          },
          "state": {
            "description": "State of the environment. Values other than ACTIVE means the resource is not ready to use.",
            "type": "string"
          },
          "type": {
            "description": "Optional. EnvironmentType selected for the environment.",
            "type": "string"
          }
        },
        "required": [
          "apiProxyType",
          "createdAt",
          "deploymentType",
          "description",
          "displayName",
          "forwardProxyUri",
          "hasAttachedFlowHooks",
          "lastModifiedAt",
          "name",
          "nodeConfig",
          "properties",
          "state",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getEnvironmentEntry": {
      "description": "Get the key value entry value for a key value map scoped to an organization, environment, or API proxy. **Note**: Supported for Apigee hybrid 1.8.x and higher.",
      "inputs": {
        "properties": {
          "entryId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "keyvaluemapId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryId",
          "environmentId",
          "keyvaluemapId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Resource URI that can be used to identify the scope of the key value map entries.",
            "type": "string"
          },
          "value": {
            "description": "Data or payload that is being retrieved and associated with the unique key.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getExport": {
      "description": "Gets the details and status of an analytics export job. If the export job is still in progress, its `state` is set to \"running\". After the export job has completed successfully, its `state` is set to \"completed\". If the export job fails, its `state` is set to `failed`.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "exportId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "exportId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "created": {
            "description": "Time the export job was created.",
            "type": "string"
          },
          "datastoreName": {
            "description": "Name of the datastore that is the destination of the export job [datastore]",
            "type": "string"
          },
          "description": {
            "description": "Description of the export job.",
            "type": "string"
          },
          "error": {
            "description": "Error is set when export fails",
            "type": "string"
          },
          "executionTime": {
            "description": "Execution time for this export job. If the job is still in progress, it will be set to the amount of time that has elapsed since`created`, in seconds. Else, it will set to (`updated` - `created`), in seconds.",
            "type": "string"
          },
          "name": {
            "description": "Display name of the export job.",
            "type": "string"
          },
          "self": {
            "description": "Self link of the export job. A URI that can be used to retrieve the status of an export job. Example: `/organizations/myorg/environments/myenv/analytics/exports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`",
            "type": "string"
          },
          "state": {
            "description": "Status of the export job. Valid values include `enqueued`, `running`, `completed`, and `failed`.",
            "type": "string"
          },
          "updated": {
            "description": "Time the export job was last updated.",
            "type": "string"
          }
        },
        "required": [
          "created",
          "datastoreName",
          "description",
          "error",
          "executionTime",
          "name",
          "self",
          "state",
          "updated"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getHostQuery": {
      "description": "Get status of a query submitted at host level. If the query is still in progress, the `state` is set to \"running\" After the query has completed successfully, `state` is set to \"completed\"",
      "inputs": {
        "properties": {
          "hostQueryId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hostQueryId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "created": {
            "description": "Creation time of the query.",
            "type": "string"
          },
          "envgroupHostname": {
            "description": "Hostname is available only when query is executed at host level.",
            "type": "string"
          },
          "error": {
            "description": "Error is set when query fails.",
            "type": "string"
          },
          "executionTime": {
            "description": "ExecutionTime is available only after the query is completed.",
            "type": "string"
          },
          "name": {
            "description": "Asynchronous Query Name.",
            "type": "string"
          },
          "queryParams": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QueryMetadataResponse",
            "description": "Contains information like metrics, dimenstions etc of the AsyncQuery."
          },
          "reportDefinitionId": {
            "description": "Asynchronous Report ID.",
            "type": "string"
          },
          "result": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AsyncQueryResultResponse",
            "description": "Result is available only after the query is completed."
          },
          "resultFileSize": {
            "description": "ResultFileSize is available only after the query is completed.",
            "type": "string"
          },
          "resultRows": {
            "description": "ResultRows is available only after the query is completed.",
            "type": "string"
          },
          "self": {
            "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostQueries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`",
            "type": "string"
          },
          "state": {
            "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"failed\".",
            "type": "string"
          },
          "updated": {
            "description": "Last updated timestamp for the query.",
            "type": "string"
          }
        },
        "required": [
          "created",
          "envgroupHostname",
          "error",
          "executionTime",
          "name",
          "queryParams",
          "reportDefinitionId",
          "result",
          "resultFileSize",
          "resultRows",
          "self",
          "state",
          "updated"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getHostSecurityReport": {
      "description": "Get status of a query submitted at host level. If the query is still in progress, the `state` is set to \"running\" After the query has completed successfully, `state` is set to \"completed\"",
      "inputs": {
        "properties": {
          "hostSecurityReportId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hostSecurityReportId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "created": {
            "description": "Creation time of the query.",
            "type": "string"
          },
          "displayName": {
            "description": "Display Name specified by the user.",
            "type": "string"
          },
          "envgroupHostname": {
            "description": "Hostname is available only when query is executed at host level.",
            "type": "string"
          },
          "error": {
            "description": "Error is set when query fails.",
            "type": "string"
          },
          "executionTime": {
            "description": "ExecutionTime is available only after the query is completed.",
            "type": "string"
          },
          "queryParams": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportMetadataResponse",
            "description": "Contains information like metrics, dimenstions etc of the Security Report."
          },
          "reportDefinitionId": {
            "description": "Report Definition ID.",
            "type": "string"
          },
          "result": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportResultMetadataResponse",
            "description": "Result is available only after the query is completed."
          },
          "resultFileSize": {
            "description": "ResultFileSize is available only after the query is completed.",
            "type": "string"
          },
          "resultRows": {
            "description": "ResultRows is available only after the query is completed.",
            "type": "string"
          },
          "self": {
            "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/securityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostSecurityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`",
            "type": "string"
          },
          "state": {
            "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"expired\" and \"failed\".",
            "type": "string"
          },
          "updated": {
            "description": "Last updated timestamp for the query.",
            "type": "string"
          }
        },
        "required": [
          "created",
          "displayName",
          "envgroupHostname",
          "error",
          "executionTime",
          "queryParams",
          "reportDefinitionId",
          "result",
          "resultFileSize",
          "resultRows",
          "self",
          "state",
          "updated"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getInstance": {
      "description": "Gets the details for an Apigee runtime instance. **Note:** Not supported for Apigee hybrid.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "consumerAcceptList": {
            "description": "Optional. Customer accept list represents the list of projects (id/number) on customer side that can privately connect to the service attachment. It is an optional field which the customers can provide during the instance creation. By default, the customer project associated with the Apigee organization will be included to the list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Time the instance was created in milliseconds since epoch.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the instance.",
            "type": "string"
          },
          "diskEncryptionKeyName": {
            "description": "Customer Managed Encryption Key (CMEK) used for disk and volume encryption. Required for Apigee paid subscriptions only. Use the following format: `projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)`",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name for the instance.",
            "type": "string"
          },
          "host": {
            "description": "Internal hostname or IP address of the Apigee endpoint used by clients to connect to the service.",
            "type": "string"
          },
          "ipRange": {
            "description": "Optional. Comma-separated list of CIDR blocks of length 22 and/or 28 used to create the Apigee instance. Providing CIDR ranges is optional. You can provide just /22 or /28 or both (or neither). Ranges you provide should be freely available as part of a larger named range you have allocated to the Service Networking peering. If this parameter is not provided, Apigee automatically requests an available /22 and /28 CIDR block from Service Networking. Use the /22 CIDR block for configuring your firewall needs to allow traffic from Apigee. Input formats: `a.b.c.d/22` or `e.f.g.h/28` or `a.b.c.d/22,e.f.g.h/28`",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "Time the instance was last modified in milliseconds since epoch.",
            "type": "string"
          },
          "location": {
            "description": "Compute Engine location where the instance resides.",
            "type": "string"
          },
          "name": {
            "description": "Resource ID of the instance. Values must match the regular expression `^a-z{0,30}[a-z\\d]$`.",
            "type": "string"
          },
          "peeringCidrRange": {
            "description": "Optional. Size of the CIDR block range that will be reserved by the instance. PAID organizations support `SLASH_16` to `SLASH_20` and defaults to `SLASH_16`. Evaluation organizations support only `SLASH_23`.",
            "type": "string"
          },
          "port": {
            "description": "Port number of the exposed Apigee endpoint.",
            "type": "string"
          },
          "runtimeVersion": {
            "description": "Version of the runtime system running in the instance. The runtime system is the set of components that serve the API Proxy traffic in your Environments.",
            "type": "string"
          },
          "serviceAttachment": {
            "description": "Resource name of the service attachment created for the instance in the format: `projects/*/regions/*/serviceAttachments/*` Apigee customers can privately forward traffic to this service attachment using the PSC endpoints.",
            "type": "string"
          },
          "state": {
            "description": "State of the instance. Values other than `ACTIVE` means the resource is not ready to use.",
            "type": "string"
          }
        },
        "required": [
          "consumerAcceptList",
          "createdAt",
          "description",
          "diskEncryptionKeyName",
          "displayName",
          "host",
          "ipRange",
          "lastModifiedAt",
          "location",
          "name",
          "peeringCidrRange",
          "port",
          "runtimeVersion",
          "serviceAttachment",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getInstanceAttachment": {
      "description": "Gets an attachment. **Note:** Not supported for Apigee hybrid.",
      "inputs": {
        "properties": {
          "attachmentId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attachmentId",
          "instanceId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createdAt": {
            "description": "Time the attachment was created in milliseconds since epoch.",
            "type": "string"
          },
          "environment": {
            "description": "ID of the attached environment.",
            "type": "string"
          },
          "name": {
            "description": "ID of the attachment.",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "environment",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getKeystore": {
      "description": "Gets a keystore or truststore.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "keystoreId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "keystoreId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "aliases": {
            "description": "Aliases in this keystore.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Resource ID for this keystore. Values must match the regular expression `[\\w[:space:].-]{1,255}`.",
            "type": "string"
          }
        },
        "required": [
          "aliases",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getNatAddress": {
      "description": "Gets the details of a NAT address. **Note:** Not supported for Apigee hybrid.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "natAddressId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "natAddressId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "ipAddress": {
            "description": "The static IPV4 address.",
            "type": "string"
          },
          "name": {
            "description": "Resource ID of the NAT address.",
            "type": "string"
          },
          "state": {
            "description": "State of the nat address.",
            "type": "string"
          }
        },
        "required": [
          "ipAddress",
          "name",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getOrganization": {
      "description": "Gets the profile for an Apigee organization. See [Understanding organizations](https://cloud.google.com/apigee/docs/api-platform/fundamentals/organization-structure).",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "addonsConfig": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AddonsConfigResponse",
            "description": "Addon configurations of the Apigee organization."
          },
          "analyticsRegion": {
            "deprecationMessage": "Required. DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).",
            "description": "DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).",
            "type": "string"
          },
          "apiConsumerDataEncryptionKeyName": {
            "description": "Cloud KMS key name used for encrypting API consumer data. Required for US/EU regions when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION` or the region is not US/EU, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`",
            "type": "string"
          },
          "apiConsumerDataLocation": {
            "description": "This field is needed only for customers with control plane in US or EU. Apigee stores some control plane data only in single region. This field determines which single region Apigee should use. For example: \"us-west1\" when control plane is in US or \"europe-west2\" when control plane is in EU.",
            "type": "string"
          },
          "apigeeProjectId": {
            "description": "Apigee Project ID associated with the organization. Use this project to allowlist Apigee in the Service Attachment when using private service connect with Apigee.",
            "type": "string"
          },
          "attributes": {
            "description": "Not used by Apigee.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "authorizedNetwork": {
            "description": "Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when [RuntimeType](#RuntimeType) is set to `CLOUD`. The value must be set before the creation of a runtime instance and can be updated only when there are no runtime instances. For example: `default`. Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork` **Note:** Not supported for Apigee hybrid.",
            "type": "string"
          },
          "billingType": {
            "description": "Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing).",
            "type": "string"
          },
          "caCertificate": {
            "description": "Base64-encoded public certificate for the root CA of the Apigee organization. Valid only when [RuntimeType](#RuntimeType) is `CLOUD`.",
            "type": "string"
          },
          "controlPlaneEncryptionKeyName": {
            "description": "Cloud KMS key name used for encrypting control plane data that is stored in a multi region. Required when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION`, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`",
            "type": "string"
          },
          "createdAt": {
            "description": "Time that the Apigee organization was created in milliseconds since epoch.",
            "type": "string"
          },
          "customerName": {
            "description": "Not used by Apigee.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Apigee organization.",
            "type": "string"
          },
          "disableVpcPeering": {
            "description": "Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Valid only when RuntimeType is set to CLOUD. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid.",
            "type": "boolean"
          },
          "displayName": {
            "description": "Display name for the Apigee organization. Unused, but reserved for future use.",
            "type": "string"
          },
          "environments": {
            "description": "List of environments in the Apigee organization.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "expiresAt": {
            "description": "Time that the Apigee organization is scheduled for deletion.",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "Time that the Apigee organization was last modified in milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "Name of the Apigee organization.",
            "type": "string"
          },
          "portalDisabled": {
            "description": "Configuration for the Portals settings.",
            "type": "boolean"
          },
          "project": {
            "description": "Project ID associated with the Apigee organization.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1PropertiesResponse",
            "description": "Properties defined in the Apigee organization profile."
          },
          "runtimeDatabaseEncryptionKeyName": {
            "description": "Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances. Update is not allowed after the organization is created. Required when [RuntimeType](#RuntimeType) is `CLOUD`. If not specified when [RuntimeType](#RuntimeType) is `TRIAL`, a Google-Managed encryption key will be used. For example: \"projects/foo/locations/us/keyRings/bar/cryptoKeys/baz\". **Note:** Not supported for Apigee hybrid.",
            "type": "string"
          },
          "runtimeType": {
            "description": "Runtime type of the Apigee organization based on the Apigee subscription purchased.",
            "type": "string"
          },
          "state": {
            "description": "State of the organization. Values other than ACTIVE means the resource is not ready to use.",
            "type": "string"
          },
          "subscriptionPlan": {
            "description": "Subscription plan that the customer has purchased. Output only.",
            "type": "string"
          },
          "subscriptionType": {
            "deprecationMessage": "Output only. DEPRECATED: This will eventually be replaced by BillingType. Subscription type of the Apigee organization. Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased). See [Apigee pricing](https://cloud.google.com/apigee/pricing/).",
            "description": "DEPRECATED: This will eventually be replaced by BillingType. Subscription type of the Apigee organization. Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased). See [Apigee pricing](https://cloud.google.com/apigee/pricing/).",
            "type": "string"
          },
          "type": {
            "description": "Not used by Apigee.",
            "type": "string"
          }
        },
        "required": [
          "addonsConfig",
          "analyticsRegion",
          "apiConsumerDataEncryptionKeyName",
          "apiConsumerDataLocation",
          "apigeeProjectId",
          "attributes",
          "authorizedNetwork",
          "billingType",
          "caCertificate",
          "controlPlaneEncryptionKeyName",
          "createdAt",
          "customerName",
          "description",
          "disableVpcPeering",
          "displayName",
          "environments",
          "expiresAt",
          "lastModifiedAt",
          "name",
          "portalDisabled",
          "project",
          "properties",
          "runtimeDatabaseEncryptionKeyName",
          "runtimeType",
          "state",
          "subscriptionPlan",
          "subscriptionType",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getOrganizationEnvironmentIamPolicy": {
      "description": "Gets the IAM policy on an environment. For more information, see [Manage users, roles, and permissions using the API](https://cloud.google.com/apigee/docs/api-platform/system-administration/manage-users-roles). You must have the `apigee.environments.getIamPolicy` permission to call this API.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getOverride": {
      "description": "Gets a trace configuration override.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "overrideId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "organizationId",
          "overrideId"
        ]
      },
      "outputs": {
        "properties": {
          "apiProxy": {
            "description": "ID of the API proxy that will have its trace configuration overridden.",
            "type": "string"
          },
          "name": {
            "description": "ID of the trace configuration override specified as a system-generated UUID.",
            "type": "string"
          },
          "samplingConfig": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TraceSamplingConfigResponse",
            "description": "Trace configuration to override."
          }
        },
        "required": [
          "apiProxy",
          "name",
          "samplingConfig"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getQuery": {
      "description": "Get query status If the query is still in progress, the `state` is set to \"running\" After the query has completed successfully, `state` is set to \"completed\"",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "queryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "organizationId",
          "queryId"
        ]
      },
      "outputs": {
        "properties": {
          "created": {
            "description": "Creation time of the query.",
            "type": "string"
          },
          "envgroupHostname": {
            "description": "Hostname is available only when query is executed at host level.",
            "type": "string"
          },
          "error": {
            "description": "Error is set when query fails.",
            "type": "string"
          },
          "executionTime": {
            "description": "ExecutionTime is available only after the query is completed.",
            "type": "string"
          },
          "name": {
            "description": "Asynchronous Query Name.",
            "type": "string"
          },
          "queryParams": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1QueryMetadataResponse",
            "description": "Contains information like metrics, dimenstions etc of the AsyncQuery."
          },
          "reportDefinitionId": {
            "description": "Asynchronous Report ID.",
            "type": "string"
          },
          "result": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1AsyncQueryResultResponse",
            "description": "Result is available only after the query is completed."
          },
          "resultFileSize": {
            "description": "ResultFileSize is available only after the query is completed.",
            "type": "string"
          },
          "resultRows": {
            "description": "ResultRows is available only after the query is completed.",
            "type": "string"
          },
          "self": {
            "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostQueries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`",
            "type": "string"
          },
          "state": {
            "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"failed\".",
            "type": "string"
          },
          "updated": {
            "description": "Last updated timestamp for the query.",
            "type": "string"
          }
        },
        "required": [
          "created",
          "envgroupHostname",
          "error",
          "executionTime",
          "name",
          "queryParams",
          "reportDefinitionId",
          "result",
          "resultFileSize",
          "resultRows",
          "self",
          "state",
          "updated"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getRatePlan": {
      "description": "Gets the details of a rate plan.",
      "inputs": {
        "properties": {
          "apiproductId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "rateplanId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiproductId",
          "organizationId",
          "rateplanId"
        ]
      },
      "outputs": {
        "properties": {
          "apiproduct": {
            "description": "Name of the API product that the rate plan is associated with.",
            "type": "string"
          },
          "billingPeriod": {
            "description": "Frequency at which the customer will be billed.",
            "type": "string"
          },
          "consumptionPricingRates": {
            "description": "API call volume ranges and the fees charged when the total number of API calls is within a given range. The method used to calculate the final fee depends on the selected pricing model. For example, if the pricing model is `STAIRSTEP` and the ranges are defined as follows: ``` { \"start\": 1, \"end\": 100, \"fee\": 75 }, { \"start\": 101, \"end\": 200, \"fee\": 100 }, } ``` Then the following fees would be charged based on the total number of API calls (assuming the currency selected is `USD`): * 1 call costs $75 * 50 calls cost $75 * 150 calls cost $100 The number of API calls cannot exceed 200.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1RateRangeResponse"
            },
            "type": "array"
          },
          "consumptionPricingType": {
            "description": "Pricing model used for consumption-based charges.",
            "type": "string"
          },
          "createdAt": {
            "description": "Time that the rate plan was created in milliseconds since epoch.",
            "type": "string"
          },
          "currencyCode": {
            "description": "Currency to be used for billing. Consists of a three-letter code as defined by the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard.",
            "type": "string"
          },
          "description": {
            "description": "Description of the rate plan.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name of the rate plan.",
            "type": "string"
          },
          "endTime": {
            "description": "Time when the rate plan will expire in milliseconds since epoch. Set to 0 or `null` to indicate that the rate plan should never expire.",
            "type": "string"
          },
          "fixedFeeFrequency": {
            "description": "Frequency at which the fixed fee is charged.",
            "type": "integer"
          },
          "fixedRecurringFee": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeMoneyResponse",
            "description": "Fixed amount that is charged at a defined interval and billed in advance of use of the API product. The fee will be prorated for the first billing period."
          },
          "lastModifiedAt": {
            "description": "Time the rate plan was last modified in milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "Name of the rate plan.",
            "type": "string"
          },
          "paymentFundingModel": {
            "deprecationMessage": "DEPRECATED: This field is no longer supported and will eventually be removed when Apigee Hybrid 1.5/1.6 is no longer supported. Instead, use the `billingType` field inside `DeveloperMonetizationConfig` resource. Flag that specifies the billing account type, prepaid or postpaid.",
            "description": "DEPRECATED: This field is no longer supported and will eventually be removed when Apigee Hybrid 1.5/1.6 is no longer supported. Instead, use the `billingType` field inside `DeveloperMonetizationConfig` resource. Flag that specifies the billing account type, prepaid or postpaid.",
            "type": "string"
          },
          "revenueShareRates": {
            "description": "Details of the revenue sharing model.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1RevenueShareRangeResponse"
            },
            "type": "array"
          },
          "revenueShareType": {
            "description": "Method used to calculate the revenue that is shared with developers.",
            "type": "string"
          },
          "setupFee": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleTypeMoneyResponse",
            "description": "Initial, one-time fee paid when purchasing the API product."
          },
          "startTime": {
            "description": "Time when the rate plan becomes active in milliseconds since epoch.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the rate plan (draft or published).",
            "type": "string"
          }
        },
        "required": [
          "apiproduct",
          "billingPeriod",
          "consumptionPricingRates",
          "consumptionPricingType",
          "createdAt",
          "currencyCode",
          "description",
          "displayName",
          "endTime",
          "fixedFeeFrequency",
          "fixedRecurringFee",
          "lastModifiedAt",
          "name",
          "paymentFundingModel",
          "revenueShareRates",
          "revenueShareType",
          "setupFee",
          "startTime",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getReference": {
      "description": "Gets a Reference resource.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "referenceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "organizationId",
          "referenceId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Optional. A human-readable description of this reference.",
            "type": "string"
          },
          "name": {
            "description": "The resource id of this reference. Values must match the regular expression [\\w\\s\\-.]+.",
            "type": "string"
          },
          "refers": {
            "description": "The id of the resource to which this reference refers. Must be the id of a resource that exists in the parent environment and is of the given resource_type.",
            "type": "string"
          },
          "resourceType": {
            "description": "The type of resource referred to by this reference. Valid values are 'KeyStore' or 'TrustStore'.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "name",
          "refers",
          "resourceType"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getReport": {
      "description": "Retrieve a custom report definition.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "reportId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "reportId"
        ]
      },
      "outputs": {
        "properties": {
          "chartType": {
            "description": "This field contains the chart type for the report",
            "type": "string"
          },
          "comments": {
            "description": "Legacy field: not used. This field contains a list of comments associated with custom report",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Unix time when the app was created json key: createdAt",
            "type": "string"
          },
          "dimensions": {
            "description": "This contains the list of dimensions for the report",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "This is the display name for the report",
            "type": "string"
          },
          "environment": {
            "description": "Environment name",
            "type": "string"
          },
          "filter": {
            "description": "This field contains the filter expression",
            "type": "string"
          },
          "fromTime": {
            "description": "Legacy field: not used. Contains the from time for the report",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "Modified time of this entity as milliseconds since epoch. json key: lastModifiedAt",
            "type": "string"
          },
          "lastViewedAt": {
            "description": "Last viewed time of this entity as milliseconds since epoch",
            "type": "string"
          },
          "limit": {
            "description": "Legacy field: not used This field contains the limit for the result retrieved",
            "type": "string"
          },
          "metrics": {
            "description": "This contains the list of metrics",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1CustomReportMetricResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Unique identifier for the report T his is a legacy field used to encode custom report unique id",
            "type": "string"
          },
          "offset": {
            "description": "Legacy field: not used. This field contains the offset for the data",
            "type": "string"
          },
          "organization": {
            "description": "Organization name",
            "type": "string"
          },
          "properties": {
            "description": "This field contains report properties such as ui metadata etc.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ReportPropertyResponse"
            },
            "type": "array"
          },
          "sortByCols": {
            "description": "Legacy field: not used much. Contains the list of sort by columns",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sortOrder": {
            "description": "Legacy field: not used much. Contains the sort order for the sort columns",
            "type": "string"
          },
          "tags": {
            "description": "Legacy field: not used. This field contains a list of tags associated with custom report",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "timeUnit": {
            "description": "This field contains the time unit of aggregation for the report",
            "type": "string"
          },
          "toTime": {
            "description": "Legacy field: not used. Contains the end time for the report",
            "type": "string"
          },
          "topk": {
            "description": "Legacy field: not used. This field contains the top k parameter value for restricting the result",
            "type": "string"
          }
        },
        "required": [
          "chartType",
          "comments",
          "createdAt",
          "dimensions",
          "displayName",
          "environment",
          "filter",
          "fromTime",
          "lastModifiedAt",
          "lastViewedAt",
          "limit",
          "metrics",
          "name",
          "offset",
          "organization",
          "properties",
          "sortByCols",
          "sortOrder",
          "tags",
          "timeUnit",
          "toTime",
          "topk"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getResourcefile": {
      "description": "Gets the contents of a resource file. For more information about resource files, see [Resource files](https://cloud.google.com/apigee/docs/api-platform/develop/resource-files).",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "name",
          "organizationId",
          "type"
        ]
      },
      "outputs": {
        "properties": {
          "contentType": {
            "description": "The HTTP Content-Type header value specifying the content type of the body.",
            "type": "string"
          },
          "data": {
            "description": "The HTTP request/response body as raw binary.",
            "type": "string"
          },
          "extensions": {
            "description": "Application specific response metadata. Must be set in the first response for streaming APIs.",
            "items": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "contentType",
          "data",
          "extensions"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getSecurityAction": {
      "description": "Get a SecurityAction by name.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "securityActionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "organizationId",
          "securityActionId"
        ]
      },
      "outputs": {
        "properties": {
          "allow": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionAllowResponse",
            "description": "Allow a request through if it matches this SecurityAction."
          },
          "conditionConfig": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionConditionConfigResponse",
            "description": "A valid SecurityAction must contain at least one condition."
          },
          "createTime": {
            "description": "The create time for this SecurityAction.",
            "type": "string"
          },
          "deny": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionDenyResponse",
            "description": "Deny a request through if it matches this SecurityAction."
          },
          "description": {
            "description": "Optional. An optional user provided description of the SecurityAction.",
            "type": "string"
          },
          "expireTime": {
            "description": "The expiration for this SecurityAction.",
            "type": "string"
          },
          "flag": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityActionFlagResponse",
            "description": "Flag a request through if it matches this SecurityAction."
          },
          "name": {
            "description": "Immutable. This field is ignored during creation as per AIP-133. Please set the `security_action_id` field in the CreateSecurityActionRequest when creating a new SecurityAction. Format: organizations/{org}/environments/{env}/securityActions/{security_action}",
            "type": "string"
          },
          "state": {
            "description": "Only an ENABLED SecurityAction is enforced. An ENABLED SecurityAction past its expiration time will not be enforced.",
            "type": "string"
          },
          "ttl": {
            "description": "Input only. The TTL for this SecurityAction.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time for this SecurityAction. This reflects when this SecurityAction changed states.",
            "type": "string"
          }
        },
        "required": [
          "allow",
          "conditionConfig",
          "createTime",
          "deny",
          "description",
          "expireTime",
          "flag",
          "name",
          "state",
          "ttl",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getSecurityProfile": {
      "description": "GetSecurityProfile gets the specified security profile. Returns NOT_FOUND if security profile is not present for the specified organization.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "securityProfileId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "securityProfileId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Description of the security profile.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name of the security profile.",
            "type": "string"
          },
          "environments": {
            "description": "List of environments attached to security profile.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityProfileEnvironmentResponse"
            },
            "type": "array"
          },
          "maxScore": {
            "description": "Maximum security score that can be generated by this profile.",
            "type": "integer"
          },
          "minScore": {
            "description": "Minimum security score that can be generated by this profile.",
            "type": "integer"
          },
          "name": {
            "description": "Immutable. Name of the security profile resource. Format: organizations/{org}/securityProfiles/{profile}",
            "type": "string"
          },
          "profileConfig": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1ProfileConfigResponse",
            "description": "Customized profile configuration that computes the security score."
          },
          "revisionCreateTime": {
            "description": "The time when revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "Revision ID of the security profile.",
            "type": "string"
          },
          "revisionPublishTime": {
            "description": "The time when revision was published. Once published, the security profile revision cannot be updated further and can be attached to environments.",
            "type": "string"
          },
          "revisionUpdateTime": {
            "description": "The time when revision was updated.",
            "type": "string"
          },
          "scoringConfigs": {
            "description": "List of profile scoring configs in this revision.",
            "items": {
              "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityProfileScoringConfigResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "description",
          "displayName",
          "environments",
          "maxScore",
          "minScore",
          "name",
          "profileConfig",
          "revisionCreateTime",
          "revisionId",
          "revisionPublishTime",
          "revisionUpdateTime",
          "scoringConfigs"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getSecurityReport": {
      "description": "Get security report status If the query is still in progress, the `state` is set to \"running\" After the query has completed successfully, `state` is set to \"completed\"",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "securityReportId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "organizationId",
          "securityReportId"
        ]
      },
      "outputs": {
        "properties": {
          "created": {
            "description": "Creation time of the query.",
            "type": "string"
          },
          "displayName": {
            "description": "Display Name specified by the user.",
            "type": "string"
          },
          "envgroupHostname": {
            "description": "Hostname is available only when query is executed at host level.",
            "type": "string"
          },
          "error": {
            "description": "Error is set when query fails.",
            "type": "string"
          },
          "executionTime": {
            "description": "ExecutionTime is available only after the query is completed.",
            "type": "string"
          },
          "queryParams": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportMetadataResponse",
            "description": "Contains information like metrics, dimenstions etc of the Security Report."
          },
          "reportDefinitionId": {
            "description": "Report Definition ID.",
            "type": "string"
          },
          "result": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1SecurityReportResultMetadataResponse",
            "description": "Result is available only after the query is completed."
          },
          "resultFileSize": {
            "description": "ResultFileSize is available only after the query is completed.",
            "type": "string"
          },
          "resultRows": {
            "description": "ResultRows is available only after the query is completed.",
            "type": "string"
          },
          "self": {
            "description": "Self link of the query. Example: `/organizations/myorg/environments/myenv/securityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd` or following format if query is running at host level: `/organizations/myorg/hostSecurityReports/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd`",
            "type": "string"
          },
          "state": {
            "description": "Query state could be \"enqueued\", \"running\", \"completed\", \"expired\" and \"failed\".",
            "type": "string"
          },
          "updated": {
            "description": "Last updated timestamp for the query.",
            "type": "string"
          }
        },
        "required": [
          "created",
          "displayName",
          "envgroupHostname",
          "error",
          "executionTime",
          "queryParams",
          "reportDefinitionId",
          "result",
          "resultFileSize",
          "resultRows",
          "self",
          "state",
          "updated"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getSharedflow": {
      "description": "Gets a shared flow by name, including a list of its revisions.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "sharedflowId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "sharedflowId"
        ]
      },
      "outputs": {
        "properties": {
          "latestRevisionId": {
            "description": "The id of the most recently created revision for this shared flow.",
            "type": "string"
          },
          "metaData": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1EntityMetadataResponse",
            "description": "Metadata describing the shared flow."
          },
          "name": {
            "description": "The ID of the shared flow.",
            "type": "string"
          },
          "revision": {
            "description": "A list of revisions of this shared flow.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "latestRevisionId",
          "metaData",
          "name",
          "revision"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getSubscription": {
      "description": "Gets details for an API product subscription.",
      "inputs": {
        "properties": {
          "developerId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "developerId",
          "organizationId",
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "apiproduct": {
            "description": "Name of the API product for which the developer is purchasing a subscription.",
            "type": "string"
          },
          "createdAt": {
            "description": "Time when the API product subscription was created in milliseconds since epoch.",
            "type": "string"
          },
          "endTime": {
            "description": "Time when the API product subscription ends in milliseconds since epoch.",
            "type": "string"
          },
          "lastModifiedAt": {
            "description": "Time when the API product subscription was last modified in milliseconds since epoch.",
            "type": "string"
          },
          "name": {
            "description": "Name of the API product subscription.",
            "type": "string"
          },
          "startTime": {
            "description": "Time when the API product subscription starts in milliseconds since epoch.",
            "type": "string"
          }
        },
        "required": [
          "apiproduct",
          "createdAt",
          "endTime",
          "lastModifiedAt",
          "name",
          "startTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigee/v1:getTargetServer": {
      "description": "Gets a TargetServer resource.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "targetserverId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "organizationId",
          "targetserverId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Optional. A human-readable description of this TargetServer.",
            "type": "string"
          },
          "host": {
            "description": "The host name this target connects to. Value must be a valid hostname as described by RFC-1123.",
            "type": "string"
          },
          "isEnabled": {
            "description": "Optional. Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource id of this target server. Values must match the regular expression ",
            "type": "string"
          },
          "port": {
            "description": "The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.",
            "type": "integer"
          },
          "protocol": {
            "description": "Immutable. The protocol used by this TargetServer.",
            "type": "string"
          },
          "sSLInfo": {
            "$ref": "#/types/google-native:apigee%2Fv1:GoogleCloudApigeeV1TlsInfoResponse",
            "description": "Optional. Specifies TLS configuration info for this TargetServer. The JSON name is `sSLInfo` for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration."
          }
        },
        "required": [
          "description",
          "host",
          "isEnabled",
          "name",
          "port",
          "protocol",
          "sSLInfo"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getApi": {
      "description": "Returns a specified API.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.",
            "type": "object"
          },
          "availability": {
            "description": "A user-definable description of the availability of this service. Format: free-form, but we expect single words that describe availability, e.g., \"NONE\", \"TESTING\", \"PREVIEW\", \"GENERAL\", \"DEPRECATED\", \"SHUTDOWN\".",
            "type": "string"
          },
          "createTime": {
            "description": "Creation timestamp.",
            "type": "string"
          },
          "description": {
            "description": "A detailed description.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-meaningful name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores, and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed.",
            "type": "object"
          },
          "name": {
            "description": "Resource name.",
            "type": "string"
          },
          "recommendedDeployment": {
            "description": "The recommended deployment of the API. Format: `projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}`",
            "type": "string"
          },
          "recommendedVersion": {
            "description": "The recommended version of the API. Format: `projects/{project}/locations/{location}/apis/{api}/versions/{version}`",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "availability",
          "createTime",
          "description",
          "displayName",
          "labels",
          "name",
          "recommendedDeployment",
          "recommendedVersion",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getApiArtifactIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "artifactId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "artifactId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getApiDeploymentIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "deploymentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "deploymentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getApiIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getApiVersionArtifactIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "artifactId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "artifactId",
          "location",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getApiVersionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getApiVersionSpecArtifactIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "artifactId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "specId": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "artifactId",
          "location",
          "specId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getApiVersionSpecIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "specId": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location",
          "specId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getArtifact": {
      "description": "Returns a specified artifact.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "artifactId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "specId": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "artifactId",
          "location",
          "specId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.",
            "type": "object"
          },
          "contents": {
            "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents.",
            "type": "string"
          },
          "createTime": {
            "description": "Creation timestamp.",
            "type": "string"
          },
          "hash": {
            "description": "A SHA-256 hash of the artifact's contents. If the artifact is gzipped, this is the hash of the uncompressed artifact.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed.",
            "type": "object"
          },
          "mimeType": {
            "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\").",
            "type": "string"
          },
          "name": {
            "description": "Resource name.",
            "type": "string"
          },
          "sizeBytes": {
            "description": "The size of the artifact in bytes. If the artifact is gzipped, this is the size of the uncompressed artifact.",
            "type": "integer"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "contents",
          "createTime",
          "hash",
          "labels",
          "mimeType",
          "name",
          "sizeBytes",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getArtifactIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "artifactId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "artifactId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getDeployment": {
      "description": "Returns a specified deployment.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "deploymentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "deploymentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "accessGuidance": {
            "description": "Text briefly describing how to access the endpoint. Changes to this value will not affect the revision.",
            "type": "string"
          },
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.",
            "type": "object"
          },
          "apiSpecRevision": {
            "description": "The full resource name (including revision ID) of the spec of the API being served by the deployment. Changes to this value will update the revision. Format: `projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec@revision}`",
            "type": "string"
          },
          "createTime": {
            "description": "Creation timestamp; when the deployment resource was created.",
            "type": "string"
          },
          "description": {
            "description": "A detailed description.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-meaningful name.",
            "type": "string"
          },
          "endpointUri": {
            "description": "The address where the deployment is serving. Changes to this value will update the revision.",
            "type": "string"
          },
          "externalChannelUri": {
            "description": "The address of the external channel of the API (e.g., the Developer Portal). Changes to this value will not affect the revision.",
            "type": "string"
          },
          "intendedAudience": {
            "description": "Text briefly identifying the intended audience of the API. Changes to this value will not affect the revision.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed.",
            "type": "object"
          },
          "name": {
            "description": "Resource name.",
            "type": "string"
          },
          "revisionCreateTime": {
            "description": "Revision creation timestamp; when the represented revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "Immutable. The revision ID of the deployment. A new revision is committed whenever the deployment contents are changed. The format is an 8-character hexadecimal string.",
            "type": "string"
          },
          "revisionUpdateTime": {
            "description": "Last update timestamp: when the represented revision was last modified.",
            "type": "string"
          }
        },
        "required": [
          "accessGuidance",
          "annotations",
          "apiSpecRevision",
          "createTime",
          "description",
          "displayName",
          "endpointUri",
          "externalChannelUri",
          "intendedAudience",
          "labels",
          "name",
          "revisionCreateTime",
          "revisionId",
          "revisionUpdateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getDeploymentArtifact": {
      "description": "Returns a specified artifact.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "artifactId": {
            "type": "string"
          },
          "deploymentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "artifactId",
          "deploymentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.",
            "type": "object"
          },
          "contents": {
            "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents.",
            "type": "string"
          },
          "createTime": {
            "description": "Creation timestamp.",
            "type": "string"
          },
          "hash": {
            "description": "A SHA-256 hash of the artifact's contents. If the artifact is gzipped, this is the hash of the uncompressed artifact.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed.",
            "type": "object"
          },
          "mimeType": {
            "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\").",
            "type": "string"
          },
          "name": {
            "description": "Resource name.",
            "type": "string"
          },
          "sizeBytes": {
            "description": "The size of the artifact in bytes. If the artifact is gzipped, this is the size of the uncompressed artifact.",
            "type": "integer"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "contents",
          "createTime",
          "hash",
          "labels",
          "mimeType",
          "name",
          "sizeBytes",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getDocumentIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "build": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:BuildResponse",
            "description": "Build info of the Instance if it's in `ACTIVE` state."
          },
          "config": {
            "$ref": "#/types/google-native:apigeeregistry%2Fv1:ConfigResponse",
            "description": "Config of the Instance."
          },
          "createTime": {
            "description": "Creation timestamp.",
            "type": "string"
          },
          "name": {
            "description": "Format: `projects/*/locations/*/instance`. Currently only `locations/global` is supported.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the Instance.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Extra information of Instance.State if the state is `FAILED`.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "build",
          "config",
          "createTime",
          "name",
          "state",
          "stateMessage",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getRuntimeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:apigeeregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getSpec": {
      "description": "Returns a specified spec.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "specId": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location",
          "specId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.",
            "type": "object"
          },
          "contents": {
            "description": "Input only. The contents of the spec. Provided by API callers when specs are created or updated. To access the contents of a spec, use GetApiSpecContents.",
            "type": "string"
          },
          "createTime": {
            "description": "Creation timestamp; when the spec resource was created.",
            "type": "string"
          },
          "description": {
            "description": "A detailed description.",
            "type": "string"
          },
          "filename": {
            "description": "A possibly-hierarchical name used to refer to the spec from other specs.",
            "type": "string"
          },
          "hash": {
            "description": "A SHA-256 hash of the spec's contents. If the spec is gzipped, this is the hash of the uncompressed spec.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed.",
            "type": "object"
          },
          "mimeType": {
            "description": "A style (format) descriptor for this spec that is specified as a [Media Type](https://en.wikipedia.org/wiki/Media_type). Possible values include `application/vnd.apigee.proto`, `application/vnd.apigee.openapi`, and `application/vnd.apigee.graphql`, with possible suffixes representing compression types. These hypothetical names are defined in the vendor tree defined in RFC6838 (https://tools.ietf.org/html/rfc6838) and are not final. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\").",
            "type": "string"
          },
          "name": {
            "description": "Resource name.",
            "type": "string"
          },
          "revisionCreateTime": {
            "description": "Revision creation timestamp; when the represented revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "Immutable. The revision ID of the spec. A new revision is committed whenever the spec contents are changed. The format is an 8-character hexadecimal string.",
            "type": "string"
          },
          "revisionUpdateTime": {
            "description": "Last update timestamp: when the represented revision was last modified.",
            "type": "string"
          },
          "sizeBytes": {
            "description": "The size of the spec file in bytes. If the spec is gzipped, this is the size of the uncompressed spec.",
            "type": "integer"
          },
          "sourceUri": {
            "description": "The original source URI of the spec (if one exists). This is an external location that can be used for reference purposes but which may not be authoritative since this external resource may change after the spec is retrieved.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "contents",
          "createTime",
          "description",
          "filename",
          "hash",
          "labels",
          "mimeType",
          "name",
          "revisionCreateTime",
          "revisionId",
          "revisionUpdateTime",
          "sizeBytes",
          "sourceUri"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getVersion": {
      "description": "Returns a specified version.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "location",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.",
            "type": "object"
          },
          "createTime": {
            "description": "Creation timestamp.",
            "type": "string"
          },
          "description": {
            "description": "A detailed description.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-meaningful name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with `apigeeregistry.googleapis.com/` and cannot be changed.",
            "type": "object"
          },
          "name": {
            "description": "Resource name.",
            "type": "string"
          },
          "primarySpec": {
            "description": "The primary spec for this version. Format: projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}",
            "type": "string"
          },
          "state": {
            "description": "A user-definable description of the lifecycle phase of this API version. Format: free-form, but we expect single words that describe API maturity, e.g., \"CONCEPT\", \"DESIGN\", \"DEVELOPMENT\", \"STAGING\", \"PRODUCTION\", \"DEPRECATED\", \"RETIRED\".",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "description",
          "displayName",
          "labels",
          "name",
          "primarySpec",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apigeeregistry/v1:getVersionArtifact": {
      "description": "Returns a specified artifact.",
      "inputs": {
        "properties": {
          "apiId": {
            "type": "string"
          },
          "artifactId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "apiId",
          "artifactId",
          "location",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.",
            "type": "object"
          },
          "contents": {
            "description": "Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents.",
            "type": "string"
          },
          "createTime": {
            "description": "Creation timestamp.",
            "type": "string"
          },
          "hash": {
            "description": "A SHA-256 hash of the artifact's contents. If the artifact is gzipped, this is the hash of the uncompressed artifact.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with \"registry.googleapis.com/\" and cannot be changed.",
            "type": "object"
          },
          "mimeType": {
            "description": "A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible \"schema\" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with \"+gzip\").",
            "type": "string"
          },
          "name": {
            "description": "Resource name.",
            "type": "string"
          },
          "sizeBytes": {
            "description": "The size of the artifact in bytes. If the artifact is gzipped, this is the size of the uncompressed artifact.",
            "type": "integer"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "contents",
          "createTime",
          "hash",
          "labels",
          "mimeType",
          "name",
          "sizeBytes",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:apikeys/v2:getKey": {
      "description": "Gets the metadata for an API key. The key string of the API key isn't included in the response. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
      "inputs": {
        "properties": {
          "keyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "keyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations is an unstructured key-value map stored with a policy that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects.",
            "type": "object"
          },
          "createTime": {
            "description": "A timestamp identifying the time this key was originally created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "A timestamp when this key was deleted. If the resource is not deleted, this must be empty.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable display name of this key that you can modify. The maximum length is 63 characters.",
            "type": "string"
          },
          "etag": {
            "description": "A checksum computed by the server based on the current value of the Key resource. This may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. See https://google.aip.dev/154.",
            "type": "string"
          },
          "keyString": {
            "description": "An encrypted and signed value held by this key. This field can be accessed only through the `GetKeyString` method.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the key. The `name` has the form: `projects//locations/global/keys/`. For example: `projects/123456867718/locations/global/keys/b7ff1f9f-8275-410a-94dd-3855ee9b5dd2` NOTE: Key is a global resource; hence the only supported value for location is `global`.",
            "type": "string"
          },
          "restrictions": {
            "$ref": "#/types/google-native:apikeys%2Fv2:V2RestrictionsResponse",
            "description": "Key restrictions."
          },
          "uid": {
            "description": "Unique id in UUID4 format.",
            "type": "string"
          },
          "updateTime": {
            "description": "A timestamp identifying the time this key was last updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "deleteTime",
          "displayName",
          "etag",
          "keyString",
          "name",
          "restrictions",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1:getApp": {
      "description": "Gets information about an application.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "includeExtraData": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId"
        ]
      },
      "outputs": {
        "properties": {
          "authDomain": {
            "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
            "type": "string"
          },
          "codeBucket": {
            "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.",
            "type": "string"
          },
          "databaseType": {
            "description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application.",
            "type": "string"
          },
          "defaultBucket": {
            "description": "Google Cloud Storage bucket that can be used by this application to store content.",
            "type": "string"
          },
          "defaultCookieExpiration": {
            "description": "Cookie expiration policy for this application.",
            "type": "string"
          },
          "defaultHostname": {
            "description": "Hostname used to reach this application, as resolved by App Engine.",
            "type": "string"
          },
          "dispatchRules": {
            "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1:UrlDispatchRuleResponse"
            },
            "type": "array"
          },
          "featureSettings": {
            "$ref": "#/types/google-native:appengine%2Fv1:FeatureSettingsResponse",
            "description": "The feature specific settings to be used in the application."
          },
          "gcrDomain": {
            "description": "The Google Container Registry domain used for storing managed build docker images for this application.",
            "type": "string"
          },
          "generatedCustomerMetadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetApplicationRequest",
            "type": "object"
          },
          "iap": {
            "$ref": "#/types/google-native:appengine%2Fv1:IdentityAwareProxyResponse"
          },
          "location": {
            "description": "Location from which this application runs. Application instances run out of the data centers in the specified location, which is also where all of the application's end user content is stored.Defaults to us-central.View the list of supported locations (https://cloud.google.com/appengine/docs/locations).",
            "type": "string"
          },
          "name": {
            "description": "Full path to the Application resource in the API. Example: apps/myapp.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account associated with the application. This is the app-level default identity. If no identity provided during create version, Admin API will fallback to this one.",
            "type": "string"
          },
          "servingStatus": {
            "description": "Serving status of this application.",
            "type": "string"
          }
        },
        "required": [
          "authDomain",
          "codeBucket",
          "databaseType",
          "defaultBucket",
          "defaultCookieExpiration",
          "defaultHostname",
          "dispatchRules",
          "featureSettings",
          "gcrDomain",
          "generatedCustomerMetadata",
          "iap",
          "location",
          "name",
          "serviceAccount",
          "servingStatus"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1:getAuthorizedCertificate": {
      "description": "Gets the specified SSL certificate.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "authorizedCertificateId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "authorizedCertificateId"
        ]
      },
      "outputs": {
        "properties": {
          "certificateRawData": {
            "$ref": "#/types/google-native:appengine%2Fv1:CertificateRawDataResponse",
            "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
          },
          "displayName": {
            "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.",
            "type": "string"
          },
          "domainMappingsCount": {
            "description": "Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.",
            "type": "integer"
          },
          "domainNames": {
            "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "expireTime": {
            "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.",
            "type": "string"
          },
          "managedCertificate": {
            "$ref": "#/types/google-native:appengine%2Fv1:ManagedCertificateResponse",
            "description": "Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty."
          },
          "name": {
            "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.",
            "type": "string"
          },
          "visibleDomainMappings": {
            "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "certificateRawData",
          "displayName",
          "domainMappingsCount",
          "domainNames",
          "expireTime",
          "managedCertificate",
          "name",
          "visibleDomainMappings"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1:getDomainMapping": {
      "description": "Gets the specified domain mapping.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "domainMappingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "domainMappingId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.",
            "type": "string"
          },
          "resourceRecords": {
            "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1:ResourceRecordResponse"
            },
            "type": "array"
          },
          "sslSettings": {
            "$ref": "#/types/google-native:appengine%2Fv1:SslSettingsResponse",
            "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
          }
        },
        "required": [
          "name",
          "resourceRecords",
          "sslSettings"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1:getIngressRule": {
      "description": "Gets the specified firewall rule.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "ingressRuleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "ingressRuleId"
        ]
      },
      "outputs": {
        "properties": {
          "action": {
            "description": "The action to take on matched requests.",
            "type": "string"
          },
          "description": {
            "description": "An optional string description of this rule. This field has a maximum length of 400 characters.",
            "type": "string"
          },
          "priority": {
            "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.",
            "type": "integer"
          },
          "sourceRange": {
            "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.",
            "type": "string"
          }
        },
        "required": [
          "action",
          "description",
          "priority",
          "sourceRange"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1:getVersion": {
      "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "serviceId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "apiConfig": {
            "$ref": "#/types/google-native:appengine%2Fv1:ApiConfigHandlerResponse",
            "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/endpoints).Only returned in GET requests if view=FULL is set."
          },
          "appEngineApis": {
            "description": "Allows App Engine second generation runtimes to access the legacy bundled services.",
            "type": "boolean"
          },
          "automaticScaling": {
            "$ref": "#/types/google-native:appengine%2Fv1:AutomaticScalingResponse",
            "description": "Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic."
          },
          "basicScaling": {
            "$ref": "#/types/google-native:appengine%2Fv1:BasicScalingResponse",
            "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity."
          },
          "betaSettings": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata settings that are supplied to this version to enable beta runtime features.",
            "type": "object"
          },
          "buildEnvVariables": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables available to the build environment.Only returned in GET requests if view=FULL is set.",
            "type": "object"
          },
          "createTime": {
            "description": "Time that this version was created.",
            "type": "string"
          },
          "createdBy": {
            "description": "Email address of the user who created this version.",
            "type": "string"
          },
          "defaultExpiration": {
            "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.",
            "type": "string"
          },
          "deployment": {
            "$ref": "#/types/google-native:appengine%2Fv1:DeploymentResponse",
            "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
          },
          "diskUsageBytes": {
            "description": "Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk.",
            "type": "string"
          },
          "endpointsApiService": {
            "$ref": "#/types/google-native:appengine%2Fv1:EndpointsApiServiceResponse",
            "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app."
          },
          "entrypoint": {
            "$ref": "#/types/google-native:appengine%2Fv1:EntrypointResponse",
            "description": "The entrypoint for the application."
          },
          "env": {
            "description": "App Engine execution environment for this version.Defaults to standard.",
            "type": "string"
          },
          "envVariables": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.",
            "type": "object"
          },
          "errorHandlers": {
            "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1:ErrorHandlerResponse"
            },
            "type": "array"
          },
          "flexibleRuntimeSettings": {
            "$ref": "#/types/google-native:appengine%2Fv1:FlexibleRuntimeSettingsResponse",
            "description": "Settings for App Engine flexible runtimes."
          },
          "generatedCustomerMetadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetVersionRequest",
            "type": "object"
          },
          "handlers": {
            "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1:UrlMapResponse"
            },
            "type": "array"
          },
          "healthCheck": {
            "$ref": "#/types/google-native:appengine%2Fv1:HealthCheckResponse",
            "description": "Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment."
          },
          "inboundServices": {
            "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "instanceClass": {
            "description": "Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.",
            "type": "string"
          },
          "libraries": {
            "description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1:LibraryResponse"
            },
            "type": "array"
          },
          "livenessCheck": {
            "$ref": "#/types/google-native:appengine%2Fv1:LivenessCheckResponse",
            "description": "Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instances"
          },
          "manualScaling": {
            "$ref": "#/types/google-native:appengine%2Fv1:ManualScalingResponse",
            "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as \"backends\"."
          },
          "name": {
            "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.",
            "type": "string"
          },
          "network": {
            "$ref": "#/types/google-native:appengine%2Fv1:NetworkResponse",
            "description": "Extra network settings. Only applicable in the App Engine flexible environment."
          },
          "nobuildFilesRegex": {
            "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.",
            "type": "string"
          },
          "readinessCheck": {
            "$ref": "#/types/google-native:appengine%2Fv1:ReadinessCheckResponse",
            "description": "Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation."
          },
          "resources": {
            "$ref": "#/types/google-native:appengine%2Fv1:ResourcesResponse",
            "description": "Machine resources for this version. Only applicable in the App Engine flexible environment."
          },
          "runtime": {
            "description": "Desired runtime. Example: python27.",
            "type": "string"
          },
          "runtimeApiVersion": {
            "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref",
            "type": "string"
          },
          "runtimeChannel": {
            "description": "The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.",
            "type": "string"
          },
          "runtimeMainExecutablePath": {
            "description": "The path or name of the app's main executable.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.",
            "type": "string"
          },
          "servingStatus": {
            "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.",
            "type": "string"
          },
          "threadsafe": {
            "description": "Whether multiple requests can be dispatched to this version at once.",
            "type": "boolean"
          },
          "versionUrl": {
            "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"",
            "type": "string"
          },
          "vm": {
            "description": "Whether to deploy this version in a container on a virtual machine.",
            "type": "boolean"
          },
          "vpcAccessConnector": {
            "$ref": "#/types/google-native:appengine%2Fv1:VpcAccessConnectorResponse",
            "description": "Enables VPC connectivity for standard apps."
          },
          "zones": {
            "deprecationMessage": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
            "description": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "apiConfig",
          "appEngineApis",
          "automaticScaling",
          "basicScaling",
          "betaSettings",
          "buildEnvVariables",
          "createTime",
          "createdBy",
          "defaultExpiration",
          "deployment",
          "diskUsageBytes",
          "endpointsApiService",
          "entrypoint",
          "env",
          "envVariables",
          "errorHandlers",
          "flexibleRuntimeSettings",
          "generatedCustomerMetadata",
          "handlers",
          "healthCheck",
          "inboundServices",
          "instanceClass",
          "libraries",
          "livenessCheck",
          "manualScaling",
          "name",
          "network",
          "nobuildFilesRegex",
          "readinessCheck",
          "resources",
          "runtime",
          "runtimeApiVersion",
          "runtimeChannel",
          "runtimeMainExecutablePath",
          "serviceAccount",
          "servingStatus",
          "threadsafe",
          "versionUrl",
          "vm",
          "vpcAccessConnector",
          "zones"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1alpha:getAuthorizedCertificate": {
      "description": "Gets the specified SSL certificate.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "authorizedCertificateId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "authorizedCertificateId"
        ]
      },
      "outputs": {
        "properties": {
          "certificateRawData": {
            "$ref": "#/types/google-native:appengine%2Fv1alpha:CertificateRawDataResponse",
            "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
          },
          "displayName": {
            "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.",
            "type": "string"
          },
          "domainMappingsCount": {
            "description": "Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.",
            "type": "integer"
          },
          "domainNames": {
            "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "expireTime": {
            "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.",
            "type": "string"
          },
          "managedCertificate": {
            "$ref": "#/types/google-native:appengine%2Fv1alpha:ManagedCertificateResponse",
            "description": "Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty."
          },
          "name": {
            "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.",
            "type": "string"
          },
          "visibleDomainMappings": {
            "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "certificateRawData",
          "displayName",
          "domainMappingsCount",
          "domainNames",
          "expireTime",
          "managedCertificate",
          "name",
          "visibleDomainMappings"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1alpha:getDomainMapping": {
      "description": "Gets the specified domain mapping.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "domainMappingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "domainMappingId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.",
            "type": "string"
          },
          "resourceRecords": {
            "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1alpha:ResourceRecordResponse"
            },
            "type": "array"
          },
          "sslSettings": {
            "$ref": "#/types/google-native:appengine%2Fv1alpha:SslSettingsResponse",
            "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
          }
        },
        "required": [
          "name",
          "resourceRecords",
          "sslSettings"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1beta:getApp": {
      "description": "Gets information about an application.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "includeExtraData": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId"
        ]
      },
      "outputs": {
        "properties": {
          "authDomain": {
            "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.",
            "type": "string"
          },
          "codeBucket": {
            "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.",
            "type": "string"
          },
          "databaseType": {
            "description": "The type of the Cloud Firestore or Cloud Datastore database associated with this application.",
            "type": "string"
          },
          "defaultBucket": {
            "description": "Google Cloud Storage bucket that can be used by this application to store content.",
            "type": "string"
          },
          "defaultCookieExpiration": {
            "description": "Cookie expiration policy for this application.",
            "type": "string"
          },
          "defaultHostname": {
            "description": "Hostname used to reach this application, as resolved by App Engine.",
            "type": "string"
          },
          "dispatchRules": {
            "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1beta:UrlDispatchRuleResponse"
            },
            "type": "array"
          },
          "featureSettings": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:FeatureSettingsResponse",
            "description": "The feature specific settings to be used in the application."
          },
          "gcrDomain": {
            "description": "The Google Container Registry domain used for storing managed build docker images for this application.",
            "type": "string"
          },
          "generatedCustomerMetadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetApplicationRequest",
            "type": "object"
          },
          "iap": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:IdentityAwareProxyResponse"
          },
          "location": {
            "description": "Location from which this application runs. Application instances run out of the data centers in the specified location, which is also where all of the application's end user content is stored.Defaults to us-central.View the list of supported locations (https://cloud.google.com/appengine/docs/locations).",
            "type": "string"
          },
          "name": {
            "description": "Full path to the Application resource in the API. Example: apps/myapp.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account associated with the application. This is the app-level default identity. If no identity provided during create version, Admin API will fallback to this one.",
            "type": "string"
          },
          "servingStatus": {
            "description": "Serving status of this application.",
            "type": "string"
          }
        },
        "required": [
          "authDomain",
          "codeBucket",
          "databaseType",
          "defaultBucket",
          "defaultCookieExpiration",
          "defaultHostname",
          "dispatchRules",
          "featureSettings",
          "gcrDomain",
          "generatedCustomerMetadata",
          "iap",
          "location",
          "name",
          "serviceAccount",
          "servingStatus"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1beta:getAuthorizedCertificate": {
      "description": "Gets the specified SSL certificate.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "authorizedCertificateId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "authorizedCertificateId"
        ]
      },
      "outputs": {
        "properties": {
          "certificateRawData": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:CertificateRawDataResponse",
            "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority."
          },
          "displayName": {
            "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.",
            "type": "string"
          },
          "domainMappingsCount": {
            "description": "Aggregate count of the domain mappings with this certificate mapped. This count includes domain mappings on applications for which the user does not have VIEWER permissions.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.",
            "type": "integer"
          },
          "domainNames": {
            "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "expireTime": {
            "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.",
            "type": "string"
          },
          "managedCertificate": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:ManagedCertificateResponse",
            "description": "Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty."
          },
          "name": {
            "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.",
            "type": "string"
          },
          "visibleDomainMappings": {
            "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "certificateRawData",
          "displayName",
          "domainMappingsCount",
          "domainNames",
          "expireTime",
          "managedCertificate",
          "name",
          "visibleDomainMappings"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1beta:getDomainMapping": {
      "description": "Gets the specified domain mapping.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "domainMappingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "domainMappingId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.",
            "type": "string"
          },
          "resourceRecords": {
            "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1beta:ResourceRecordResponse"
            },
            "type": "array"
          },
          "sslSettings": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:SslSettingsResponse",
            "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL."
          }
        },
        "required": [
          "name",
          "resourceRecords",
          "sslSettings"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1beta:getIngressRule": {
      "description": "Gets the specified firewall rule.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "ingressRuleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "ingressRuleId"
        ]
      },
      "outputs": {
        "properties": {
          "action": {
            "description": "The action to take on matched requests.",
            "type": "string"
          },
          "description": {
            "description": "An optional string description of this rule. This field has a maximum length of 400 characters.",
            "type": "string"
          },
          "priority": {
            "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.",
            "type": "integer"
          },
          "sourceRange": {
            "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. Truncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.",
            "type": "string"
          }
        },
        "required": [
          "action",
          "description",
          "priority",
          "sourceRange"
        ],
        "type": "object"
      }
    },
    "google-native:appengine/v1beta:getVersion": {
      "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "includeExtraData": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "serviceId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "apiConfig": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:ApiConfigHandlerResponse",
            "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/endpoints).Only returned in GET requests if view=FULL is set."
          },
          "appEngineApis": {
            "description": "Allows App Engine second generation runtimes to access the legacy bundled services.",
            "type": "boolean"
          },
          "automaticScaling": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:AutomaticScalingResponse",
            "description": "Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic."
          },
          "basicScaling": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:BasicScalingResponse",
            "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity."
          },
          "betaSettings": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata settings that are supplied to this version to enable beta runtime features.",
            "type": "object"
          },
          "buildEnvVariables": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables available to the build environment.Only returned in GET requests if view=FULL is set.",
            "type": "object"
          },
          "createTime": {
            "description": "Time that this version was created.",
            "type": "string"
          },
          "createdBy": {
            "description": "Email address of the user who created this version.",
            "type": "string"
          },
          "defaultExpiration": {
            "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.",
            "type": "string"
          },
          "deployment": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:DeploymentResponse",
            "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set."
          },
          "diskUsageBytes": {
            "description": "Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk.",
            "type": "string"
          },
          "endpointsApiService": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:EndpointsApiServiceResponse",
            "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app."
          },
          "entrypoint": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:EntrypointResponse",
            "description": "The entrypoint for the application."
          },
          "env": {
            "description": "App Engine execution environment for this version.Defaults to standard.",
            "type": "string"
          },
          "envVariables": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.",
            "type": "object"
          },
          "errorHandlers": {
            "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1beta:ErrorHandlerResponse"
            },
            "type": "array"
          },
          "flexibleRuntimeSettings": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:FlexibleRuntimeSettingsResponse",
            "description": "Settings for App Engine flexible runtimes."
          },
          "generatedCustomerMetadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional Google Generated Customer Metadata, this field won't be provided by default and can be requested by setting the IncludeExtraData field in GetVersionRequest",
            "type": "object"
          },
          "handlers": {
            "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1beta:UrlMapResponse"
            },
            "type": "array"
          },
          "healthCheck": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:HealthCheckResponse",
            "description": "Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment."
          },
          "inboundServices": {
            "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "instanceClass": {
            "description": "Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.",
            "type": "string"
          },
          "libraries": {
            "description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.",
            "items": {
              "$ref": "#/types/google-native:appengine%2Fv1beta:LibraryResponse"
            },
            "type": "array"
          },
          "livenessCheck": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:LivenessCheckResponse",
            "description": "Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instances"
          },
          "manualScaling": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:ManualScalingResponse",
            "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as \"backends\"."
          },
          "name": {
            "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.",
            "type": "string"
          },
          "network": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:NetworkResponse",
            "description": "Extra network settings. Only applicable in the App Engine flexible environment."
          },
          "nobuildFilesRegex": {
            "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.",
            "type": "string"
          },
          "readinessCheck": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:ReadinessCheckResponse",
            "description": "Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation."
          },
          "resources": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:ResourcesResponse",
            "description": "Machine resources for this version. Only applicable in the App Engine flexible environment."
          },
          "runtime": {
            "description": "Desired runtime. Example: python27.",
            "type": "string"
          },
          "runtimeApiVersion": {
            "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref",
            "type": "string"
          },
          "runtimeChannel": {
            "description": "The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.",
            "type": "string"
          },
          "runtimeMainExecutablePath": {
            "description": "The path or name of the app's main executable.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.",
            "type": "string"
          },
          "servingStatus": {
            "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.",
            "type": "string"
          },
          "threadsafe": {
            "description": "Whether multiple requests can be dispatched to this version at once.",
            "type": "boolean"
          },
          "versionUrl": {
            "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"",
            "type": "string"
          },
          "vm": {
            "description": "Whether to deploy this version in a container on a virtual machine.",
            "type": "boolean"
          },
          "vpcAccessConnector": {
            "$ref": "#/types/google-native:appengine%2Fv1beta:VpcAccessConnectorResponse",
            "description": "Enables VPC connectivity for standard apps."
          },
          "zones": {
            "deprecationMessage": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
            "description": "The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "apiConfig",
          "appEngineApis",
          "automaticScaling",
          "basicScaling",
          "betaSettings",
          "buildEnvVariables",
          "createTime",
          "createdBy",
          "defaultExpiration",
          "deployment",
          "diskUsageBytes",
          "endpointsApiService",
          "entrypoint",
          "env",
          "envVariables",
          "errorHandlers",
          "flexibleRuntimeSettings",
          "generatedCustomerMetadata",
          "handlers",
          "healthCheck",
          "inboundServices",
          "instanceClass",
          "libraries",
          "livenessCheck",
          "manualScaling",
          "name",
          "network",
          "nobuildFilesRegex",
          "readinessCheck",
          "resources",
          "runtime",
          "runtimeApiVersion",
          "runtimeChannel",
          "runtimeMainExecutablePath",
          "serviceAccount",
          "servingStatus",
          "threadsafe",
          "versionUrl",
          "vm",
          "vpcAccessConnector",
          "zones"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1:getRepository": {
      "description": "Gets a repository.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "cleanupPolicies": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Cleanup policies for this repository. Cleanup policies indicate when certain package versions can be automatically deleted. Map keys are policy IDs supplied by users during policy creation. They must unique within a repository and be under 128 characters in length.",
            "type": "object"
          },
          "cleanupPolicyDryRun": {
            "description": "Optional. If true, the cleanup pipeline is prevented from deleting versions in this repository.",
            "type": "boolean"
          },
          "createTime": {
            "description": "The time when the repository was created.",
            "type": "string"
          },
          "description": {
            "description": "The user-provided description of the repository.",
            "type": "string"
          },
          "dockerConfig": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1:DockerRepositoryConfigResponse",
            "description": "Docker repository config contains repository level configuration for the repositories of docker type."
          },
          "format": {
            "description": "Optional. The format of packages that are stored in the repository.",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes.",
            "type": "object"
          },
          "mavenConfig": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1:MavenRepositoryConfigResponse",
            "description": "Maven repository config contains repository level configuration for the repositories of maven type."
          },
          "mode": {
            "description": "Optional. The mode of the repository.",
            "type": "string"
          },
          "name": {
            "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`.",
            "type": "string"
          },
          "remoteRepositoryConfig": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1:RemoteRepositoryConfigResponse",
            "description": "Configuration specific for a Remote Repository."
          },
          "satisfiesPzs": {
            "description": "If set, the repository satisfies physical zone separation.",
            "type": "boolean"
          },
          "sizeBytes": {
            "description": "The size, in bytes, of all artifact storage in this repository. Repositories that are generally available or in public preview use this to calculate storage costs.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the repository was last updated.",
            "type": "string"
          },
          "virtualRepositoryConfig": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1:VirtualRepositoryConfigResponse",
            "description": "Configuration specific for a Virtual Repository."
          }
        },
        "required": [
          "cleanupPolicies",
          "cleanupPolicyDryRun",
          "createTime",
          "description",
          "dockerConfig",
          "format",
          "kmsKeyName",
          "labels",
          "mavenConfig",
          "mode",
          "name",
          "remoteRepositoryConfig",
          "satisfiesPzs",
          "sizeBytes",
          "updateTime",
          "virtualRepositoryConfig"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1:getRepositoryIamPolicy": {
      "description": "Gets the IAM policy for a given resource.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:artifactregistry%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1:getTag": {
      "description": "Gets a tag.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "packageId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          },
          "tagId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "packageId",
          "repositoryId",
          "tagId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded.",
            "type": "string"
          },
          "version": {
            "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1beta1:getRepository": {
      "description": "Gets a repository.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the repository was created.",
            "type": "string"
          },
          "description": {
            "description": "The user-provided description of the repository.",
            "type": "string"
          },
          "format": {
            "description": "Optional. The format of packages that are stored in the repository.",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes.",
            "type": "object"
          },
          "name": {
            "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "If set, the repository satisfies physical zone separation.",
            "type": "boolean"
          },
          "sizeBytes": {
            "description": "The size, in bytes, of all artifact storage in this repository. Repositories that are generally available or in public preview use this to calculate storage costs.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the repository was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "format",
          "kmsKeyName",
          "labels",
          "name",
          "satisfiesPzs",
          "sizeBytes",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1beta1:getRepositoryIamPolicy": {
      "description": "Gets the IAM policy for a given resource.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:artifactregistry%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1beta1:getTag": {
      "description": "Gets a tag.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "packageId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          },
          "tagId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "packageId",
          "repositoryId",
          "tagId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded.",
            "type": "string"
          },
          "version": {
            "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1beta2:getRepository": {
      "description": "Gets a repository.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the repository was created.",
            "type": "string"
          },
          "description": {
            "description": "The user-provided description of the repository.",
            "type": "string"
          },
          "format": {
            "description": "Optional. The format of packages that are stored in the repository.",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "The Cloud KMS resource name of the customer managed encryption key that's used to encrypt the contents of the Repository. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. This value may not be changed after the Repository has been created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels with user-defined metadata. This field may contain up to 64 entries. Label keys and values may be no longer than 63 characters. Label keys must begin with a lowercase letter and may only contain lowercase letters, numeric characters, underscores, and dashes.",
            "type": "object"
          },
          "mavenConfig": {
            "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:MavenRepositoryConfigResponse",
            "description": "Maven repository config contains repository level configuration for the repositories of maven type."
          },
          "name": {
            "description": "The name of the repository, for example: `projects/p1/locations/us-central1/repositories/repo1`.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "If set, the repository satisfies physical zone separation.",
            "type": "boolean"
          },
          "sizeBytes": {
            "description": "The size, in bytes, of all artifact storage in this repository. Repositories that are generally available or in public preview use this to calculate storage costs.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the repository was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "format",
          "kmsKeyName",
          "labels",
          "mavenConfig",
          "name",
          "satisfiesPzs",
          "sizeBytes",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1beta2:getRepositoryIamPolicy": {
      "description": "Gets the IAM policy for a given resource.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:artifactregistry%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:artifactregistry/v1beta2:getTag": {
      "description": "Gets a tag.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "packageId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          },
          "tagId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "packageId",
          "repositoryId",
          "tagId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "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. The tag part can only have characters in [a-zA-Z0-9\\-._~:@], anything else must be URL encoded.",
            "type": "string"
          },
          "version": {
            "description": "The name of the version the tag refers to, for example: \"projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/sha256:5243811\" If the package or version ID parts contain slashes, the slashes are escaped.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:assuredworkloads/v1:getWorkload": {
      "description": "Gets Assured Workload associated with a CRM Node",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "workloadId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "workloadId"
        ]
      },
      "outputs": {
        "properties": {
          "billingAccount": {
            "description": "Optional. The billing account used for the resources which are direct children of workload. This billing account is initially associated with the resources created as part of Workload creation. After the initial creation of these resources, the customer can change the assigned billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF`.",
            "type": "string"
          },
          "complianceRegime": {
            "description": "Immutable. Compliance Regime associated with this workload.",
            "type": "string"
          },
          "complianceStatus": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadComplianceStatusResponse",
            "description": "Count of active Violations in the Workload."
          },
          "compliantButDisallowedServices": {
            "description": "Urls for services which are compliant for this Assured Workload, but which are currently disallowed by the ResourceUsageRestriction org policy. Invoke RestrictAllowedResources endpoint to allow your project developers to use these services in their environment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Immutable. The Workload creation timestamp.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-assigned display name of the Workload. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, and spaces. Example: My Workload",
            "type": "string"
          },
          "ekmProvisioningResponse": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadEkmProvisioningResponseResponse",
            "description": "Represents the Ekm Provisioning State of the given workload."
          },
          "enableSovereignControls": {
            "description": "Optional. Indicates the sovereignty status of the given workload. Currently meant to be used by Europe/Canada customers.",
            "type": "boolean"
          },
          "etag": {
            "description": "Optional. ETag of the workload, it is calculated on the basis of the Workload contents. It will be used in Update \u0026 Delete operations.",
            "type": "string"
          },
          "kajEnrollmentState": {
            "description": "Represents the KAJ enrollment state of the given workload.",
            "type": "string"
          },
          "kmsSettings": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadKMSSettingsResponse",
            "deprecationMessage": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.",
            "description": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels applied to the workload.",
            "type": "object"
          },
          "name": {
            "description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only.",
            "type": "string"
          },
          "partner": {
            "description": "Optional. Partner regime associated with this workload.",
            "type": "string"
          },
          "partnerPermissions": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadPartnerPermissionsResponse",
            "description": "Optional. Permissions granted to the AW Partner SA account for the customer workload"
          },
          "provisionedResourcesParent": {
            "description": "Input only. The parent resource for the resources managed by this Assured Workload. May be either empty or a folder resource which is a child of the Workload parent. If not specified all resources are created under the parent organization. Format: folders/{folder_id}",
            "type": "string"
          },
          "resourceMonitoringEnabled": {
            "description": "Indicates whether resource monitoring is enabled for workload or not. It is true when Resource feed is subscribed to AWM topic and AWM Service Agent Role is binded to AW Service Account for resource Assured workload.",
            "type": "boolean"
          },
          "resourceSettings": {
            "description": "Input only. Resource properties that are used to customize workload resources. These properties (such as custom project id) will be used to create workload resources if possible. This field is optional.",
            "items": {
              "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadResourceSettingsResponse"
            },
            "type": "array"
          },
          "resources": {
            "description": "The resources associated with this workload. These resources will be created when creating the workload. If any of the projects already exist, the workload creation will fail. Always read only.",
            "items": {
              "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadResourceInfoResponse"
            },
            "type": "array"
          },
          "saaEnrollmentResponse": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1:GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponseResponse",
            "description": "Represents the SAA enrollment response of the given workload. SAA enrollment response is queried during GetWorkload call. In failure cases, user friendly error message is shown in SAA details page."
          },
          "violationNotificationsEnabled": {
            "description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored. This will always be true while creating the workload.",
            "type": "boolean"
          }
        },
        "required": [
          "billingAccount",
          "complianceRegime",
          "complianceStatus",
          "compliantButDisallowedServices",
          "createTime",
          "displayName",
          "ekmProvisioningResponse",
          "enableSovereignControls",
          "etag",
          "kajEnrollmentState",
          "kmsSettings",
          "labels",
          "name",
          "partner",
          "partnerPermissions",
          "provisionedResourcesParent",
          "resourceMonitoringEnabled",
          "resourceSettings",
          "resources",
          "saaEnrollmentResponse",
          "violationNotificationsEnabled"
        ],
        "type": "object"
      }
    },
    "google-native:assuredworkloads/v1beta1:getWorkload": {
      "description": "Gets Assured Workload associated with a CRM Node",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "workloadId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "workloadId"
        ]
      },
      "outputs": {
        "properties": {
          "billingAccount": {
            "description": "Optional. The billing account used for the resources which are direct children of workload. This billing account is initially associated with the resources created as part of Workload creation. After the initial creation of these resources, the customer can change the assigned billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF`.",
            "type": "string"
          },
          "cjisSettings": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettingsResponse",
            "description": "Input only. Immutable. Settings specific to resources needed for CJIS."
          },
          "complianceRegime": {
            "description": "Immutable. Compliance Regime associated with this workload.",
            "type": "string"
          },
          "complianceStatus": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadComplianceStatusResponse",
            "description": "Count of active Violations in the Workload."
          },
          "compliantButDisallowedServices": {
            "description": "Urls for services which are compliant for this Assured Workload, but which are currently disallowed by the ResourceUsageRestriction org policy. Invoke RestrictAllowedResources endpoint to allow your project developers to use these services in their environment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Immutable. The Workload creation timestamp.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-assigned display name of the Workload. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, and spaces. Example: My Workload",
            "type": "string"
          },
          "ekmProvisioningResponse": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadEkmProvisioningResponseResponse",
            "description": "Represents the Ekm Provisioning State of the given workload."
          },
          "enableSovereignControls": {
            "description": "Optional. Indicates the sovereignty status of the given workload. Currently meant to be used by Europe/Canada customers.",
            "type": "boolean"
          },
          "etag": {
            "description": "Optional. ETag of the workload, it is calculated on the basis of the Workload contents. It will be used in Update \u0026 Delete operations.",
            "type": "string"
          },
          "fedrampHighSettings": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettingsResponse",
            "description": "Input only. Immutable. Settings specific to resources needed for FedRAMP High."
          },
          "fedrampModerateSettings": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettingsResponse",
            "description": "Input only. Immutable. Settings specific to resources needed for FedRAMP Moderate."
          },
          "il4Settings": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadIL4SettingsResponse",
            "description": "Input only. Immutable. Settings specific to resources needed for IL4."
          },
          "kajEnrollmentState": {
            "description": "Represents the KAJ enrollment state of the given workload.",
            "type": "string"
          },
          "kmsSettings": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettingsResponse",
            "deprecationMessage": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field.",
            "description": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels applied to the workload.",
            "type": "object"
          },
          "name": {
            "description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only.",
            "type": "string"
          },
          "partner": {
            "description": "Optional. Partner regime associated with this workload.",
            "type": "string"
          },
          "partnerPermissions": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissionsResponse",
            "description": "Optional. Permissions granted to the AW Partner SA account for the customer workload"
          },
          "provisionedResourcesParent": {
            "description": "Input only. The parent resource for the resources managed by this Assured Workload. May be either empty or a folder resource which is a child of the Workload parent. If not specified all resources are created under the parent organization. Format: folders/{folder_id}",
            "type": "string"
          },
          "resourceMonitoringEnabled": {
            "description": "Indicates whether resource monitoring is enabled for workload or not. It is true when Resource feed is subscribed to AWM topic and AWM Service Agent Role is binded to AW Service Account for resource Assured workload.",
            "type": "boolean"
          },
          "resourceSettings": {
            "description": "Input only. Resource properties that are used to customize workload resources. These properties (such as custom project id) will be used to create workload resources if possible. This field is optional.",
            "items": {
              "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettingsResponse"
            },
            "type": "array"
          },
          "resources": {
            "description": "The resources associated with this workload. These resources will be created when creating the workload. If any of the projects already exist, the workload creation will fail. Always read only.",
            "items": {
              "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfoResponse"
            },
            "type": "array"
          },
          "saaEnrollmentResponse": {
            "$ref": "#/types/google-native:assuredworkloads%2Fv1beta1:GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponseResponse",
            "description": "Represents the SAA enrollment response of the given workload. SAA enrollment response is queried during GetWorkload call. In failure cases, user friendly error message is shown in SAA details page."
          },
          "violationNotificationsEnabled": {
            "description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored. This will always be true while creating the workload.",
            "type": "boolean"
          }
        },
        "required": [
          "billingAccount",
          "cjisSettings",
          "complianceRegime",
          "complianceStatus",
          "compliantButDisallowedServices",
          "createTime",
          "displayName",
          "ekmProvisioningResponse",
          "enableSovereignControls",
          "etag",
          "fedrampHighSettings",
          "fedrampModerateSettings",
          "il4Settings",
          "kajEnrollmentState",
          "kmsSettings",
          "labels",
          "name",
          "partner",
          "partnerPermissions",
          "provisionedResourcesParent",
          "resourceMonitoringEnabled",
          "resourceSettings",
          "resources",
          "saaEnrollmentResponse",
          "violationNotificationsEnabled"
        ],
        "type": "object"
      }
    },
    "google-native:authorization:getClientConfig": {
      "description": "Use this function to access the current configuration of the native Google provider.",
      "outputs": {
        "description": "Configuration values returned by getClientConfig.",
        "properties": {
          "project": {
            "description": "Project of the current user.",
            "type": "string"
          },
          "region": {
            "description": "Google Cloud region",
            "type": "string"
          },
          "zone": {
            "description": "Google Cloud zone",
            "type": "string"
          }
        },
        "required": [
          "project",
          "region"
        ],
        "type": "object"
      }
    },
    "google-native:authorization:getClientToken": {
      "description": "Use this function to get an Google authentication token for the current login context.",
      "outputs": {
        "description": "Configuration values returned by getClientToken.",
        "properties": {
          "accessToken": {
            "description": "The OAuth2 access token used by the client to authenticate against the Google Cloud API.",
            "secret": true,
            "type": "string"
          },
          "expiry": {
            "description": "Expiry is the optional expiration time of the access token. If zero, TokenSource implementations will reuse the same token forever and RefreshToken or equivalent mechanisms for that TokenSource will not be used.",
            "type": "string"
          },
          "refreshToken": {
            "description": "RefreshToken is a token that's used by the application (as opposed to the user) to refresh the access token if it expires.",
            "secret": true,
            "type": "string"
          },
          "tokenType": {
            "description": "The type of auth token. Possible types are \"Bearer\", \"MAC\", \"Basic\".",
            "type": "string"
          }
        },
        "required": [
          "accessToken",
          "tokenType"
        ],
        "type": "object"
      }
    },
    "google-native:backupdr/v1:getManagementServer": {
      "description": "Gets details of a single ManagementServer.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "managementServerId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "managementServerId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the instance was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The description of the ManagementServer instance (2048 characters or less).",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Server specified ETag for the ManagementServer resource to prevent simultaneous updates from overwiting each other.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata. Labels currently defined: 1. migrate_from_go= If set to true, the MS is created in migration ready mode.",
            "type": "object"
          },
          "managementUri": {
            "$ref": "#/types/google-native:backupdr%2Fv1:ManagementURIResponse",
            "description": "The hostname or ip address of the exposed AGM endpoints, used by clients to connect to AGM/RD graphical user interface and APIs."
          },
          "name": {
            "description": "The resource name.",
            "type": "string"
          },
          "networks": {
            "description": "VPC networks to which the ManagementServer instance is connected. For this version, only a single network is supported.",
            "items": {
              "$ref": "#/types/google-native:backupdr%2Fv1:NetworkConfigResponse"
            },
            "type": "array"
          },
          "oauth2ClientId": {
            "description": "The OAuth 2.0 client id is required to make API calls to the BackupDR instance API of this ManagementServer. This is the value that should be provided in the ‘aud’ field of the OIDC ID Token (see openid specification https://openid.net/specs/openid-connect-core-1_0.html#IDToken).",
            "type": "string"
          },
          "state": {
            "description": "The ManagementServer state.",
            "type": "string"
          },
          "type": {
            "description": "The type of the ManagementServer resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the instance was updated.",
            "type": "string"
          },
          "workforceIdentityBasedManagementUri": {
            "$ref": "#/types/google-native:backupdr%2Fv1:WorkforceIdentityBasedManagementURIResponse",
            "description": "The hostnames of the exposed AGM endpoints for both types of user i.e. 1p and 3p, used to connect AGM/RM UI."
          },
          "workforceIdentityBasedOauth2ClientId": {
            "$ref": "#/types/google-native:backupdr%2Fv1:WorkforceIdentityBasedOAuth2ClientIDResponse",
            "description": "The OAuth client IDs for both types of user i.e. 1p and 3p."
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "labels",
          "managementUri",
          "name",
          "networks",
          "oauth2ClientId",
          "state",
          "type",
          "updateTime",
          "workforceIdentityBasedManagementUri",
          "workforceIdentityBasedOauth2ClientId"
        ],
        "type": "object"
      }
    },
    "google-native:backupdr/v1:getManagementServerIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "managementServerId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "managementServerId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:backupdr%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:backupdr%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:baremetalsolution/v2:getNfsShare": {
      "description": "Get details of a single NFS share.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "nfsShareId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "nfsShareId"
        ]
      },
      "outputs": {
        "properties": {
          "allowedClients": {
            "description": "List of allowed access points.",
            "items": {
              "$ref": "#/types/google-native:baremetalsolution%2Fv2:AllowedClientResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of the NFS share.",
            "type": "string"
          },
          "nfsShareId": {
            "description": "An identifier for the NFS share, generated by the backend. This field will be deprecated in the future, use `id` instead.",
            "type": "string"
          },
          "pod": {
            "description": "Immutable. Pod name. Pod is an independent part of infrastructure. NFSShare can only be connected to the assets (networks, instances) allocated in the same pod.",
            "type": "string"
          },
          "requestedSizeGib": {
            "description": "The requested size, in GiB.",
            "type": "string"
          },
          "state": {
            "description": "The state of the NFS share.",
            "type": "string"
          },
          "storageType": {
            "description": "Immutable. The storage type of the underlying volume.",
            "type": "string"
          },
          "volume": {
            "description": "The underlying volume of the share. Created automatically during provisioning.",
            "type": "string"
          }
        },
        "required": [
          "allowedClients",
          "labels",
          "name",
          "nfsShareId",
          "pod",
          "requestedSizeGib",
          "state",
          "storageType",
          "volume"
        ],
        "type": "object"
      }
    },
    "google-native:baremetalsolution/v2:getProvisioningConfig": {
      "description": "Get ProvisioningConfig by name.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "provisioningConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "provisioningConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "cloudConsoleUri": {
            "description": "URI to Cloud Console UI view of this provisioning config.",
            "type": "string"
          },
          "customId": {
            "description": "Optional. The user-defined identifier of the provisioning config.",
            "type": "string"
          },
          "email": {
            "deprecationMessage": "Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.",
            "description": "Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.",
            "type": "string"
          },
          "handoverServiceAccount": {
            "description": "A service account to enable customers to access instance credentials upon handover.",
            "type": "string"
          },
          "instances": {
            "description": "Instances to be created.",
            "items": {
              "$ref": "#/types/google-native:baremetalsolution%2Fv2:InstanceConfigResponse"
            },
            "type": "array"
          },
          "location": {
            "description": "Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period.",
            "type": "string"
          },
          "name": {
            "description": "The system-generated name of the provisioning config. This follows the UUID format.",
            "type": "string"
          },
          "networks": {
            "description": "Networks to be created.",
            "items": {
              "$ref": "#/types/google-native:baremetalsolution%2Fv2:NetworkConfigResponse"
            },
            "type": "array"
          },
          "pod": {
            "description": "Optional. Pod name. Pod is an independent part of infrastructure. Instance can be connected to the assets (networks, volumes, nfsshares) allocated in the same pod only.",
            "type": "string"
          },
          "state": {
            "description": "State of ProvisioningConfig.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Optional status messages associated with the FAILED state.",
            "type": "string"
          },
          "ticketId": {
            "description": "A generated ticket id to track provisioning request.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          },
          "volumes": {
            "description": "Volumes to be created.",
            "items": {
              "$ref": "#/types/google-native:baremetalsolution%2Fv2:VolumeConfigResponse"
            },
            "type": "array"
          },
          "vpcScEnabled": {
            "description": "If true, VPC SC is enabled for the cluster.",
            "type": "boolean"
          }
        },
        "required": [
          "cloudConsoleUri",
          "customId",
          "email",
          "handoverServiceAccount",
          "instances",
          "location",
          "name",
          "networks",
          "pod",
          "state",
          "statusMessage",
          "ticketId",
          "updateTime",
          "volumes",
          "vpcScEnabled"
        ],
        "type": "object"
      }
    },
    "google-native:baremetalsolution/v2:getSnapshot": {
      "description": "Returns the specified snapshot resource. Returns INVALID_ARGUMENT if called for a non-boot volume.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "snapshotId": {
            "type": "string"
          },
          "volumeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "snapshotId",
          "volumeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time of the snapshot.",
            "type": "string"
          },
          "description": {
            "description": "The description of the snapshot.",
            "type": "string"
          },
          "name": {
            "description": "The name of the snapshot.",
            "type": "string"
          },
          "storageVolume": {
            "description": "The name of the volume which this snapshot belongs to.",
            "type": "string"
          },
          "type": {
            "description": "The type of the snapshot which indicates whether it was scheduled or manual/ad-hoc.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "storageVolume",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:batch/v1:getJob": {
      "description": "Get a Job specified by its resource name.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "allocationPolicy": {
            "$ref": "#/types/google-native:batch%2Fv1:AllocationPolicyResponse",
            "description": "Compute resource allocation for all TaskGroups in the Job."
          },
          "createTime": {
            "description": "When the Job was created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for the Job. Labels could be user provided or system generated. For example, \"labels\": { \"department\": \"finance\", \"environment\": \"test\" } You can assign up to 64 labels. [Google Compute Engine label restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) apply. Label names that start with \"goog-\" or \"google-\" are reserved.",
            "type": "object"
          },
          "logsPolicy": {
            "$ref": "#/types/google-native:batch%2Fv1:LogsPolicyResponse",
            "description": "Log preservation policy for the Job."
          },
          "name": {
            "description": "Job name. For example: \"projects/123456/locations/us-central1/jobs/job01\".",
            "type": "string"
          },
          "notifications": {
            "description": "Notification configurations.",
            "items": {
              "$ref": "#/types/google-native:batch%2Fv1:JobNotificationResponse"
            },
            "type": "array"
          },
          "priority": {
            "description": "Priority of the Job. The valid value range is [0, 100). Default value is 0. Higher value indicates higher priority. A job with higher priority value is more likely to run earlier if all other requirements are satisfied.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:batch%2Fv1:JobStatusResponse",
            "description": "Job status. It is read only for users."
          },
          "taskGroups": {
            "description": "TaskGroups in the Job. Only one TaskGroup is supported now.",
            "items": {
              "$ref": "#/types/google-native:batch%2Fv1:TaskGroupResponse"
            },
            "type": "array"
          },
          "uid": {
            "description": "A system generated unique ID (in UUID4 format) for the Job.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last time the Job was updated.",
            "type": "string"
          }
        },
        "required": [
          "allocationPolicy",
          "createTime",
          "labels",
          "logsPolicy",
          "name",
          "notifications",
          "priority",
          "status",
          "taskGroups",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getAppConnection": {
      "description": "Gets details of a single AppConnection.",
      "inputs": {
        "properties": {
          "appConnectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appConnectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "applicationEndpoint": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionApplicationEndpointResponse",
            "description": "Address of the remote application endpoint for the BeyondCorp AppConnection."
          },
          "connectors": {
            "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this AppConnection.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary user-provided name for the AppConnection. Cannot exceed 64 characters.",
            "type": "string"
          },
          "gateway": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectionsV1AppConnectionGatewayResponse",
            "description": "Optional. Gateway used by the AppConnection."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique resource name of the AppConnection. The name is ignored when creating a AppConnection.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the AppConnection.",
            "type": "string"
          },
          "type": {
            "description": "The type of network connectivity used by the AppConnection.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the instance generated by the system.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          }
        },
        "required": [
          "applicationEndpoint",
          "connectors",
          "createTime",
          "displayName",
          "gateway",
          "labels",
          "name",
          "state",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getAppConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "appConnectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appConnectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getAppConnector": {
      "description": "Gets details of a single AppConnector.",
      "inputs": {
        "properties": {
          "appConnectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appConnectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary user-provided name for the AppConnector. Cannot exceed 64 characters.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique resource name of the AppConnector. The name is ignored when creating a AppConnector.",
            "type": "string"
          },
          "principalInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1AppConnectorPrincipalInfoResponse",
            "description": "Principal information about the Identity of the AppConnector."
          },
          "resourceInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleCloudBeyondcorpAppconnectorsV1ResourceInfoResponse",
            "description": "Optional. Resource info of the connector."
          },
          "state": {
            "description": "The current state of the AppConnector.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the instance generated by the system.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "labels",
          "name",
          "principalInfo",
          "resourceInfo",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getAppConnectorIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "appConnectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appConnectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getAppGateway": {
      "description": "Gets details of a single AppGateway.",
      "inputs": {
        "properties": {
          "appGatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appGatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "allocatedConnections": {
            "description": "A list of connections allocated for the Gateway",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:AllocatedConnectionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary user-provided name for the AppGateway. Cannot exceed 64 characters.",
            "type": "string"
          },
          "hostType": {
            "description": "The type of hosting used by the AppGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique resource name of the AppGateway. The name is ignored when creating an AppGateway.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the AppGateway.",
            "type": "string"
          },
          "type": {
            "description": "The type of network connectivity used by the AppGateway.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the instance generated by the system.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          },
          "uri": {
            "description": "Server-defined URI for this resource.",
            "type": "string"
          }
        },
        "required": [
          "allocatedConnections",
          "createTime",
          "displayName",
          "hostType",
          "labels",
          "name",
          "state",
          "type",
          "uid",
          "updateTime",
          "uri"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getAppGatewayIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "appGatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appGatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getClientConnectorServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clientConnectorServiceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clientConnectorServiceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getClientGatewayIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clientGatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clientGatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getOrganizationPartnerTenantBrowserDlpRuleIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "browserDlpRuleId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "browserDlpRuleId",
          "organizationId",
          "partnerTenantId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getOrganizationPartnerTenantIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "partnerTenantId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1:getOrganizationPartnerTenantProxyConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          },
          "proxyConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "partnerTenantId",
          "proxyConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getAppConnection": {
      "description": "Gets details of a single AppConnection.",
      "inputs": {
        "properties": {
          "appConnectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appConnectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "applicationEndpoint": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionApplicationEndpointResponse",
            "description": "Address of the remote application endpoint for the BeyondCorp AppConnection."
          },
          "connectors": {
            "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this AppConnection.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary user-provided name for the AppConnection. Cannot exceed 64 characters.",
            "type": "string"
          },
          "gateway": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectionsV1alphaAppConnectionGatewayResponse",
            "description": "Optional. Gateway used by the AppConnection."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique resource name of the AppConnection. The name is ignored when creating a AppConnection.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the AppConnection.",
            "type": "string"
          },
          "type": {
            "description": "The type of network connectivity used by the AppConnection.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the instance generated by the system.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          }
        },
        "required": [
          "applicationEndpoint",
          "connectors",
          "createTime",
          "displayName",
          "gateway",
          "labels",
          "name",
          "state",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getAppConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "appConnectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appConnectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getAppConnector": {
      "description": "Gets details of a single AppConnector.",
      "inputs": {
        "properties": {
          "appConnectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appConnectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary user-provided name for the AppConnector. Cannot exceed 64 characters.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique resource name of the AppConnector. The name is ignored when creating a AppConnector.",
            "type": "string"
          },
          "principalInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaAppConnectorPrincipalInfoResponse",
            "description": "Principal information about the Identity of the AppConnector."
          },
          "resourceInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpAppconnectorsV1alphaResourceInfoResponse",
            "description": "Optional. Resource info of the connector."
          },
          "state": {
            "description": "The current state of the AppConnector.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the instance generated by the system.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "labels",
          "name",
          "principalInfo",
          "resourceInfo",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getAppConnectorIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "appConnectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appConnectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getAppGateway": {
      "description": "Gets details of a single AppGateway.",
      "inputs": {
        "properties": {
          "appGatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appGatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "allocatedConnections": {
            "description": "A list of connections allocated for the Gateway",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:AllocatedConnectionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary user-provided name for the AppGateway. Cannot exceed 64 characters.",
            "type": "string"
          },
          "hostType": {
            "description": "The type of hosting used by the AppGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique resource name of the AppGateway. The name is ignored when creating an AppGateway.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the AppGateway.",
            "type": "string"
          },
          "type": {
            "description": "The type of network connectivity used by the AppGateway.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the instance generated by the system.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          },
          "uri": {
            "description": "Server-defined URI for this resource.",
            "type": "string"
          }
        },
        "required": [
          "allocatedConnections",
          "createTime",
          "displayName",
          "hostType",
          "labels",
          "name",
          "state",
          "type",
          "uid",
          "updateTime",
          "uri"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getAppGatewayIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "appGatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appGatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getApplicationDomainIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "applicationDomainId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "applicationDomainId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getApplicationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "applicationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "applicationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getBrowserDlpRule": {
      "description": "Gets details of a single BrowserDlpRule.",
      "inputs": {
        "properties": {
          "browserDlpRuleId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "browserDlpRuleId",
          "organizationId",
          "partnerTenantId"
        ]
      },
      "outputs": {
        "properties": {
          "group": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaGroupResponse",
            "description": "The group to which this Rule should be applied to."
          },
          "name": {
            "description": "Unique resource name. The name is ignored when creating BrowserDlpRule.",
            "type": "string"
          },
          "ruleSetting": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRuleSettingResponse",
            "description": "The policy settings to apply."
          }
        },
        "required": [
          "group",
          "name",
          "ruleSetting"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getClientConnectorServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clientConnectorServiceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clientConnectorServiceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getClientGatewayIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clientGatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clientGatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getConnection": {
      "description": "Gets details of a single Connection.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "applicationEndpoint": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ApplicationEndpointResponse",
            "description": "Address of the remote application endpoint for the BeyondCorp Connection."
          },
          "connectors": {
            "description": "Optional. List of [google.cloud.beyondcorp.v1main.Connector.name] that are authorised to be associated with this Connection.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary user-provided name for the connection. Cannot exceed 64 characters.",
            "type": "string"
          },
          "gateway": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GatewayResponse",
            "description": "Optional. Gateway used by the connection."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique resource name of the connection. The name is ignored when creating a connection.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the connection.",
            "type": "string"
          },
          "type": {
            "description": "The type of network connectivity used by the connection.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the instance generated by the system.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          }
        },
        "required": [
          "applicationEndpoint",
          "connectors",
          "createTime",
          "displayName",
          "gateway",
          "labels",
          "name",
          "state",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getConnector": {
      "description": "Gets details of a single Connector.",
      "inputs": {
        "properties": {
          "connectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary user-provided name for the connector. Cannot exceed 64 characters.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique resource name of the connector. The name is ignored when creating a connector.",
            "type": "string"
          },
          "principalInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:PrincipalInfoResponse",
            "description": "Principal information about the Identity of the connector."
          },
          "resourceInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:ResourceInfoResponse",
            "description": "Optional. Resource info of the connector."
          },
          "state": {
            "description": "The current state of the connector.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the instance generated by the system.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "labels",
          "name",
          "principalInfo",
          "resourceInfo",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getConnectorIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getNetConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "netConnectionId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "netConnectionId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getOrganizationPartnerTenantBrowserDlpRuleIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "browserDlpRuleId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "browserDlpRuleId",
          "organizationId",
          "partnerTenantId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getOrganizationPartnerTenantIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "partnerTenantId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getOrganizationPartnerTenantProxyConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          },
          "proxyConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "partnerTenantId",
          "proxyConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getPartnerTenant": {
      "description": "Gets details of a single PartnerTenant.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "partnerTenantId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary caller-provided name for the PartnerTenant. Cannot exceed 64 characters.",
            "type": "string"
          },
          "group": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaGroupResponse",
            "description": "Optional. Group information for the users enabled to use the partnerTenant. If the group information is not provided then the partnerTenant will be enabled for all users."
          },
          "name": {
            "description": "Unique resource name of the PartnerTenant. The name is ignored when creating PartnerTenant.",
            "type": "string"
          },
          "partnerMetadata": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaPartnerMetadataResponse",
            "description": "Optional. Metadata provided by the Partner associated with PartnerTenant."
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "group",
          "name",
          "partnerMetadata",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getProxyConfig": {
      "description": "Gets details of a single ProxyConfig.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "partnerTenantId": {
            "type": "string"
          },
          "proxyConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "partnerTenantId",
          "proxyConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the resource was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. An arbitrary caller-provided name for the ProxyConfig. Cannot exceed 64 characters.",
            "type": "string"
          },
          "encryptionInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaEncryptionInfoResponse",
            "description": "Optional. Information to encrypt JWT for the proxy server."
          },
          "name": {
            "description": "ProxyConfig resource name.",
            "type": "string"
          },
          "proxyUri": {
            "description": "The URI of the proxy server.",
            "type": "string"
          },
          "routingInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaRoutingInfoResponse",
            "description": "Routing info to direct traffic to the proxy server."
          },
          "transportInfo": {
            "$ref": "#/types/google-native:beyondcorp%2Fv1alpha:GoogleCloudBeyondcorpPartnerservicesV1alphaTransportInfoResponse",
            "description": "Transport layer information to verify for the proxy server."
          },
          "updateTime": {
            "description": "Timestamp when the resource was last modified.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "encryptionInfo",
          "name",
          "proxyUri",
          "routingInfo",
          "transportInfo",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:beyondcorp/v1alpha:getSubscription": {
      "description": "Gets details of a single Subscription.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "autoRenewEnabled": {
            "description": "Represents that, if subscription will renew or end when the term ends.",
            "type": "boolean"
          },
          "createTime": {
            "description": "Create time of the subscription.",
            "type": "string"
          },
          "endTime": {
            "description": "End time of the subscription.",
            "type": "string"
          },
          "name": {
            "description": "Unique resource name of the Subscription. The name is ignored when creating a subscription.",
            "type": "string"
          },
          "seatCount": {
            "description": "Optional. Number of seats in the subscription.",
            "type": "string"
          },
          "sku": {
            "description": "SKU of subscription.",
            "type": "string"
          },
          "startTime": {
            "description": "Start time of the subscription.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the subscription.",
            "type": "string"
          },
          "type": {
            "description": "Type of subscription.",
            "type": "string"
          }
        },
        "required": [
          "autoRenewEnabled",
          "createTime",
          "endTime",
          "name",
          "seatCount",
          "sku",
          "startTime",
          "state",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:biglake/v1:getCatalog": {
      "description": "Gets the catalog specified by the resource name.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time of the catalog.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The deletion time of the catalog. Only set after the catalog is deleted.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time when this catalog is considered expired. Only set after the catalog is deleted.",
            "type": "string"
          },
          "name": {
            "description": "The resource name. Format: projects/{project_id_or_number}/locations/{location_id}/catalogs/{catalog_id}",
            "type": "string"
          },
          "updateTime": {
            "description": "The last modification time of the catalog.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "expireTime",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:biglake/v1:getDatabase": {
      "description": "Gets the database specified by the resource name.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "databaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "databaseId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time of the database.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The deletion time of the database. Only set after the database is deleted.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time when this database is considered expired. Only set after the database is deleted.",
            "type": "string"
          },
          "hiveOptions": {
            "$ref": "#/types/google-native:biglake%2Fv1:HiveDatabaseOptionsResponse",
            "description": "Options of a Hive database."
          },
          "name": {
            "description": "The resource name. Format: projects/{project_id_or_number}/locations/{location_id}/catalogs/{catalog_id}/databases/{database_id}",
            "type": "string"
          },
          "type": {
            "description": "The database type.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last modification time of the database.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "expireTime",
          "hiveOptions",
          "name",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:biglake/v1:getTable": {
      "description": "Gets the table specified by the resource name.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "databaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tableId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "databaseId",
          "location",
          "tableId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time of the table.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The deletion time of the table. Only set after the table is deleted.",
            "type": "string"
          },
          "etag": {
            "description": "The checksum of a table object computed by the server based on the value of other fields. It may be sent on update requests to ensure the client has an up-to-date value before proceeding. It is only checked for update table operations.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time when this table is considered expired. Only set after the table is deleted.",
            "type": "string"
          },
          "hiveOptions": {
            "$ref": "#/types/google-native:biglake%2Fv1:HiveTableOptionsResponse",
            "description": "Options of a Hive table."
          },
          "name": {
            "description": "The resource name. Format: projects/{project_id_or_number}/locations/{location_id}/catalogs/{catalog_id}/databases/{database_id}/tables/{table_id}",
            "type": "string"
          },
          "type": {
            "description": "The table type.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last modification time of the table.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "etag",
          "expireTime",
          "hiveOptions",
          "name",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:bigquery/v2:getDataset": {
      "description": "Returns the dataset specified by datasetID.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "datasetView": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId"
        ]
      },
      "outputs": {
        "properties": {
          "access": {
            "description": "[Optional] An array of objects that define dataset access for one or more entities. You can set this property when inserting or updating a dataset in order to control who is allowed to access the data. If unspecified at dataset creation time, BigQuery adds default dataset access for the following entities: access.specialGroup: projectReaders; access.role: READER; access.specialGroup: projectWriters; access.role: WRITER; access.specialGroup: projectOwners; access.role: OWNER; access.userByEmail: [dataset creator email]; access.role: OWNER;",
            "items": {
              "$ref": "#/types/google-native:bigquery%2Fv2:DatasetAccessItemResponse"
            },
            "type": "array"
          },
          "creationTime": {
            "description": "The time when this dataset was created, in milliseconds since the epoch.",
            "type": "string"
          },
          "datasetReference": {
            "$ref": "#/types/google-native:bigquery%2Fv2:DatasetReferenceResponse",
            "description": "[Required] A reference that identifies the dataset."
          },
          "defaultCollation": {
            "description": "The default collation of the dataset.",
            "type": "string"
          },
          "defaultEncryptionConfiguration": {
            "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfigurationResponse"
          },
          "defaultPartitionExpirationMs": {
            "description": "[Optional] The default partition expiration for all partitioned tables in the dataset, in milliseconds. Once this property is set, all newly-created partitioned tables in the dataset will have an expirationMs property in the timePartitioning settings set to this value, and changing the value will only affect new tables, not existing ones. The storage in a partition will have an expiration time of its partition time plus this value. Setting this property overrides the use of defaultTableExpirationMs for partitioned tables: only one of defaultTableExpirationMs and defaultPartitionExpirationMs will be used for any new partitioned table. If you provide an explicit timePartitioning.expirationMs when creating or updating a partitioned table, that value takes precedence over the default partition expiration time indicated by this property.",
            "type": "string"
          },
          "defaultRoundingMode": {
            "description": "The default rounding mode of the dataset.",
            "type": "string"
          },
          "defaultTableExpirationMs": {
            "description": "[Optional] The default lifetime of all tables in the dataset, in milliseconds. The minimum value is 3600000 milliseconds (one hour). Once this property is set, all newly-created tables in the dataset will have an expirationTime property set to the creation time plus the value in this property, and changing the value will only affect new tables, not existing ones. When the expirationTime for a given table is reached, that table will be deleted automatically. If a table's expirationTime is modified or removed before the table expires, or if you provide an explicit expirationTime when creating a table, that value takes precedence over the default expiration time indicated by this property.",
            "type": "string"
          },
          "description": {
            "description": "[Optional] A user-friendly description of the dataset.",
            "type": "string"
          },
          "etag": {
            "description": "A hash of the resource.",
            "type": "string"
          },
          "externalDatasetReference": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ExternalDatasetReferenceResponse",
            "description": "[Optional] Information about the external metadata storage where the dataset is defined. Filled out when the dataset type is EXTERNAL."
          },
          "friendlyName": {
            "description": "[Optional] A descriptive name for the dataset.",
            "type": "string"
          },
          "isCaseInsensitive": {
            "description": "[Optional] Indicates if table names are case insensitive in the dataset.",
            "type": "boolean"
          },
          "kind": {
            "description": "The resource type.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels associated with this dataset. You can use these to organize and group your datasets. You can set this property when inserting or updating a dataset. See Creating and Updating Dataset Labels for more information.",
            "type": "object"
          },
          "lastModifiedTime": {
            "description": "The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.",
            "type": "string"
          },
          "location": {
            "description": "The geographic location where the dataset should reside. The default value is US. See details at https://cloud.google.com/bigquery/docs/locations.",
            "type": "string"
          },
          "maxTimeTravelHours": {
            "description": "[Optional] Number of hours for the max time travel for all tables in the dataset.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "A URL that can be used to access the resource again. You can use this URL in Get or Update requests to the resource.",
            "type": "string"
          },
          "storageBillingModel": {
            "description": "[Optional] Storage billing model to be used for all tables in the dataset. Can be set to PHYSICAL. Default is LOGICAL.",
            "type": "string"
          },
          "tags": {
            "description": "[Optional]The tags associated with this dataset. Tag keys are globally unique.",
            "items": {
              "$ref": "#/types/google-native:bigquery%2Fv2:DatasetTagsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "access",
          "creationTime",
          "datasetReference",
          "defaultCollation",
          "defaultEncryptionConfiguration",
          "defaultPartitionExpirationMs",
          "defaultRoundingMode",
          "defaultTableExpirationMs",
          "description",
          "etag",
          "externalDatasetReference",
          "friendlyName",
          "isCaseInsensitive",
          "kind",
          "labels",
          "lastModifiedTime",
          "location",
          "maxTimeTravelHours",
          "satisfiesPzs",
          "selfLink",
          "storageBillingModel",
          "tags"
        ],
        "type": "object"
      }
    },
    "google-native:bigquery/v2:getJob": {
      "description": "Returns information about a specific job. Job information is available for a six month period after creation. Requires that you're the person who ran the job, or have the Is Owner project role.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId"
        ]
      },
      "outputs": {
        "properties": {
          "configuration": {
            "$ref": "#/types/google-native:bigquery%2Fv2:JobConfigurationResponse",
            "description": "[Required] Describes the job configuration."
          },
          "etag": {
            "description": "A hash of this resource.",
            "type": "string"
          },
          "jobCreationReason": {
            "$ref": "pulumi.json#/Any",
            "description": "If set, it provides the reason why a Job was created. If not set, it should be treated as the default: REQUESTED. This feature is not yet available. Jobs will always be created."
          },
          "jobReference": {
            "$ref": "#/types/google-native:bigquery%2Fv2:JobReferenceResponse",
            "description": "[Optional] Reference describing the unique-per-user name of the job."
          },
          "kind": {
            "description": "The type of the resource.",
            "type": "string"
          },
          "selfLink": {
            "description": "A URL that can be used to access this resource again.",
            "type": "string"
          },
          "statistics": {
            "$ref": "#/types/google-native:bigquery%2Fv2:JobStatisticsResponse",
            "description": "Information about the job, including starting time and ending time of the job."
          },
          "status": {
            "$ref": "#/types/google-native:bigquery%2Fv2:JobStatusResponse",
            "description": "The status of this job. Examine this value when polling an asynchronous job to see if the job is complete."
          },
          "userEmail": {
            "description": "Email address of the user who ran the job.",
            "type": "string"
          }
        },
        "required": [
          "configuration",
          "etag",
          "jobCreationReason",
          "jobReference",
          "kind",
          "selfLink",
          "statistics",
          "status",
          "userEmail"
        ],
        "type": "object"
      }
    },
    "google-native:bigquery/v2:getRoutine": {
      "description": "Gets the specified routine resource by routine ID.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          },
          "routineId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "routineId"
        ]
      },
      "outputs": {
        "properties": {
          "arguments": {
            "description": "Optional.",
            "items": {
              "$ref": "#/types/google-native:bigquery%2Fv2:ArgumentResponse"
            },
            "type": "array"
          },
          "creationTime": {
            "description": "The time when this routine was created, in milliseconds since the epoch.",
            "type": "string"
          },
          "dataGovernanceType": {
            "description": "Optional. If set to `DATA_MASKING`, the function is validated and made available as a masking function. For more information, see [Create custom masking routines](https://cloud.google.com/bigquery/docs/user-defined-functions#custom-mask).",
            "type": "string"
          },
          "definitionBody": {
            "description": "The body of the routine. For functions, this is the expression in the AS clause. If language=SQL, it is the substring inside (but excluding) the parentheses. For example, for the function created with the following statement: `CREATE FUNCTION JoinLines(x string, y string) as (concat(x, \"\\n\", y))` The definition_body is `concat(x, \"\\n\", y)` (\\n is not replaced with linebreak). If language=JAVASCRIPT, it is the evaluated string in the AS clause. For example, for the function created with the following statement: `CREATE FUNCTION f() RETURNS STRING LANGUAGE js AS 'return \"\\n\";\\n'` The definition_body is `return \"\\n\";\\n` Note that both \\n are replaced with linebreaks.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The description of the routine, if defined.",
            "type": "string"
          },
          "determinismLevel": {
            "description": "Optional. The determinism level of the JavaScript UDF, if defined.",
            "type": "string"
          },
          "etag": {
            "description": "A hash of this resource.",
            "type": "string"
          },
          "importedLibraries": {
            "description": "Optional. If language = \"JAVASCRIPT\", this field stores the path of the imported JAVASCRIPT libraries.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "language": {
            "description": "Optional. Defaults to \"SQL\" if remote_function_options field is absent, not set otherwise.",
            "type": "string"
          },
          "lastModifiedTime": {
            "description": "The time when this routine was last modified, in milliseconds since the epoch.",
            "type": "string"
          },
          "remoteFunctionOptions": {
            "$ref": "#/types/google-native:bigquery%2Fv2:RemoteFunctionOptionsResponse",
            "description": "Optional. Remote function specific options."
          },
          "returnTableType": {
            "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlTableTypeResponse",
            "description": "Optional. Can be set only if routine_type = \"TABLE_VALUED_FUNCTION\". If absent, the return table type is inferred from definition_body at query time in each query that references this routine. If present, then the columns in the evaluated table result will be cast to match the column types specified in return table type, at query time."
          },
          "returnType": {
            "$ref": "#/types/google-native:bigquery%2Fv2:StandardSqlDataTypeResponse",
            "description": "Optional if language = \"SQL\"; required otherwise. Cannot be set if routine_type = \"TABLE_VALUED_FUNCTION\". If absent, the return type is inferred from definition_body at query time in each query that references this routine. If present, then the evaluated result will be cast to the specified returned type at query time. For example, for the functions created with the following statements: * `CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);` * `CREATE FUNCTION Increment(x FLOAT64) AS (Add(x, 1));` * `CREATE FUNCTION Decrement(x FLOAT64) RETURNS FLOAT64 AS (Add(x, -1));` The return_type is `{type_kind: \"FLOAT64\"}` for `Add` and `Decrement`, and is absent for `Increment` (inferred as FLOAT64 at query time). Suppose the function `Add` is replaced by `CREATE OR REPLACE FUNCTION Add(x INT64, y INT64) AS (x + y);` Then the inferred return type of `Increment` is automatically changed to INT64 at query time, while the return type of `Decrement` remains FLOAT64."
          },
          "routineReference": {
            "$ref": "#/types/google-native:bigquery%2Fv2:RoutineReferenceResponse",
            "description": "Reference describing the ID of this routine."
          },
          "routineType": {
            "description": "The type of routine.",
            "type": "string"
          },
          "securityMode": {
            "description": "Optional. The security mode of the routine, if defined. If not defined, the security mode is automatically determined from the routine's configuration.",
            "type": "string"
          },
          "sparkOptions": {
            "$ref": "#/types/google-native:bigquery%2Fv2:SparkOptionsResponse",
            "description": "Optional. Spark specific options."
          },
          "strictMode": {
            "description": "Optional. Can be set for procedures only. If true (default), the definition body will be validated in the creation and the updates of the procedure. For procedures with an argument of ANY TYPE, the definition body validtion is not supported at creation/update time, and thus this field must be set to false explicitly.",
            "type": "boolean"
          }
        },
        "required": [
          "arguments",
          "creationTime",
          "dataGovernanceType",
          "definitionBody",
          "description",
          "determinismLevel",
          "etag",
          "importedLibraries",
          "language",
          "lastModifiedTime",
          "remoteFunctionOptions",
          "returnTableType",
          "returnType",
          "routineReference",
          "routineType",
          "securityMode",
          "sparkOptions",
          "strictMode"
        ],
        "type": "object"
      }
    },
    "google-native:bigquery/v2:getTable": {
      "description": "Gets the specified table resource by table ID. This method does not return the data in the table, it only returns the table resource, which describes the structure of this table.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "selectedFields": {
            "type": "string"
          },
          "tableId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "tableId"
        ]
      },
      "outputs": {
        "properties": {
          "biglakeConfiguration": {
            "$ref": "#/types/google-native:bigquery%2Fv2:BigLakeConfigurationResponse",
            "description": "[Optional] Specifies the configuration of a BigLake managed table."
          },
          "cloneDefinition": {
            "$ref": "#/types/google-native:bigquery%2Fv2:CloneDefinitionResponse",
            "description": "Clone definition."
          },
          "clustering": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ClusteringResponse",
            "description": "[Beta] Clustering specification for the table. Must be specified with partitioning, data in the table will be first partitioned and subsequently clustered."
          },
          "creationTime": {
            "description": "The time when this table was created, in milliseconds since the epoch.",
            "type": "string"
          },
          "defaultCollation": {
            "description": "The default collation of the table.",
            "type": "string"
          },
          "defaultRoundingMode": {
            "description": "The default rounding mode of the table.",
            "type": "string"
          },
          "description": {
            "description": "[Optional] A user-friendly description of this table.",
            "type": "string"
          },
          "encryptionConfiguration": {
            "$ref": "#/types/google-native:bigquery%2Fv2:EncryptionConfigurationResponse",
            "description": "Custom encryption configuration (e.g., Cloud KMS keys)."
          },
          "etag": {
            "description": "A hash of the table metadata. Used to ensure there were no concurrent modifications to the resource when attempting an update. Not guaranteed to change when the table contents or the fields numRows, numBytes, numLongTermBytes or lastModifiedTime change.",
            "type": "string"
          },
          "expirationTime": {
            "description": "[Optional] The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed. The defaultTableExpirationMs property of the encapsulating dataset can be used to set a default expirationTime on newly created tables.",
            "type": "string"
          },
          "externalDataConfiguration": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ExternalDataConfigurationResponse",
            "description": "[Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table."
          },
          "friendlyName": {
            "description": "[Optional] A descriptive name for this table.",
            "type": "string"
          },
          "kind": {
            "description": "The type of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and each label in the list must have a different key.",
            "type": "object"
          },
          "lastModifiedTime": {
            "description": "The time when this table was last modified, in milliseconds since the epoch.",
            "type": "string"
          },
          "location": {
            "description": "The geographic location where the table resides. This value is inherited from the dataset.",
            "type": "string"
          },
          "materializedView": {
            "$ref": "#/types/google-native:bigquery%2Fv2:MaterializedViewDefinitionResponse",
            "description": "[Optional] Materialized view definition."
          },
          "maxStaleness": {
            "description": "[Optional] Max staleness of data that could be returned when table or materialized view is queried (formatted as Google SQL Interval type).",
            "type": "string"
          },
          "model": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ModelDefinitionResponse",
            "description": "[Output-only, Beta] Present iff this table represents a ML model. Describes the training information for the model, and it is required to run 'PREDICT' queries."
          },
          "numActiveLogicalBytes": {
            "description": "Number of logical bytes that are less than 90 days old.",
            "type": "string"
          },
          "numActivePhysicalBytes": {
            "description": "Number of physical bytes less than 90 days old. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
            "type": "string"
          },
          "numBytes": {
            "description": "The size of this table in bytes, excluding any data in the streaming buffer.",
            "type": "string"
          },
          "numLongTermBytes": {
            "description": "The number of bytes in the table that are considered \"long-term storage\".",
            "type": "string"
          },
          "numLongTermLogicalBytes": {
            "description": "Number of logical bytes that are more than 90 days old.",
            "type": "string"
          },
          "numLongTermPhysicalBytes": {
            "description": "Number of physical bytes more than 90 days old. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
            "type": "string"
          },
          "numPartitions": {
            "description": "The number of partitions present in the table or materialized view. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
            "type": "string"
          },
          "numPhysicalBytes": {
            "description": "[TrustedTester] The physical size of this table in bytes, excluding any data in the streaming buffer. This includes compression and storage used for time travel.",
            "type": "string"
          },
          "numRows": {
            "description": "The number of rows of data in this table, excluding any data in the streaming buffer.",
            "type": "string"
          },
          "numTimeTravelPhysicalBytes": {
            "description": "Number of physical bytes used by time travel storage (deleted or changed data). This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
            "type": "string"
          },
          "numTotalLogicalBytes": {
            "description": "Total number of logical bytes in the table or materialized view.",
            "type": "string"
          },
          "numTotalPhysicalBytes": {
            "description": "The physical size of this table in bytes. This also includes storage used for time travel. This data is not kept in real time, and might be delayed by a few seconds to a few minutes.",
            "type": "string"
          },
          "rangePartitioning": {
            "$ref": "#/types/google-native:bigquery%2Fv2:RangePartitioningResponse",
            "description": "[TrustedTester] Range partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
          },
          "requirePartitionFilter": {
            "description": "[Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.",
            "type": "boolean"
          },
          "resourceTags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "[Optional] The tags associated with this table. Tag keys are globally unique. See additional information on [tags](https://cloud.google.com/iam/docs/tags-access-control#definitions). An object containing a list of \"key\": value pairs. The key is the namespaced friendly name of the tag key, e.g. \"12345/environment\" where 12345 is parent id. The value is the friendly short name of the tag value, e.g. \"production\".",
            "type": "object"
          },
          "schema": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableSchemaResponse",
            "description": "[Optional] Describes the schema of this table."
          },
          "selfLink": {
            "description": "A URL that can be used to access this resource again.",
            "type": "string"
          },
          "snapshotDefinition": {
            "$ref": "#/types/google-native:bigquery%2Fv2:SnapshotDefinitionResponse",
            "description": "Snapshot definition."
          },
          "streamingBuffer": {
            "$ref": "#/types/google-native:bigquery%2Fv2:StreamingbufferResponse",
            "description": "Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer."
          },
          "tableConstraints": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableConstraintsResponse",
            "description": "[Optional] The table constraints on the table."
          },
          "tableReference": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TableReferenceResponse",
            "description": "[Required] Reference describing the ID of this table."
          },
          "timePartitioning": {
            "$ref": "#/types/google-native:bigquery%2Fv2:TimePartitioningResponse",
            "description": "Time-based partitioning specification for this table. Only one of timePartitioning and rangePartitioning should be specified."
          },
          "type": {
            "description": "Describes the table type. The following values are supported: TABLE: A normal BigQuery table. VIEW: A virtual table defined by a SQL query. SNAPSHOT: An immutable, read-only table that is a copy of another table. [TrustedTester] MATERIALIZED_VIEW: SQL query whose result is persisted. EXTERNAL: A table that references data stored in an external storage system, such as Google Cloud Storage. The default value is TABLE.",
            "type": "string"
          },
          "view": {
            "$ref": "#/types/google-native:bigquery%2Fv2:ViewDefinitionResponse",
            "description": "[Optional] The view definition."
          }
        },
        "required": [
          "biglakeConfiguration",
          "cloneDefinition",
          "clustering",
          "creationTime",
          "defaultCollation",
          "defaultRoundingMode",
          "description",
          "encryptionConfiguration",
          "etag",
          "expirationTime",
          "externalDataConfiguration",
          "friendlyName",
          "kind",
          "labels",
          "lastModifiedTime",
          "location",
          "materializedView",
          "maxStaleness",
          "model",
          "numActiveLogicalBytes",
          "numActivePhysicalBytes",
          "numBytes",
          "numLongTermBytes",
          "numLongTermLogicalBytes",
          "numLongTermPhysicalBytes",
          "numPartitions",
          "numPhysicalBytes",
          "numRows",
          "numTimeTravelPhysicalBytes",
          "numTotalLogicalBytes",
          "numTotalPhysicalBytes",
          "rangePartitioning",
          "requirePartitionFilter",
          "resourceTags",
          "schema",
          "selfLink",
          "snapshotDefinition",
          "streamingBuffer",
          "tableConstraints",
          "tableReference",
          "timePartitioning",
          "type",
          "view"
        ],
        "type": "object"
      }
    },
    "google-native:bigquery/v2:getTableIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tableId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "tableId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:bigquery%2Fv2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:bigquery%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:bigqueryconnection/v1beta1:getConnection": {
      "description": "Returns specified connection.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "cloudSql": {
            "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:CloudSqlPropertiesResponse",
            "description": "Cloud SQL properties."
          },
          "creationTime": {
            "description": "The creation timestamp of the connection.",
            "type": "string"
          },
          "description": {
            "description": "User provided description.",
            "type": "string"
          },
          "friendlyName": {
            "description": "User provided display name for the connection.",
            "type": "string"
          },
          "hasCredential": {
            "description": "True, if credential is configured for this connection.",
            "type": "boolean"
          },
          "lastModifiedTime": {
            "description": "The last update timestamp of the connection.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the connection in the form of: `projects/{project_id}/locations/{location_id}/connections/{connection_id}`",
            "type": "string"
          }
        },
        "required": [
          "cloudSql",
          "creationTime",
          "description",
          "friendlyName",
          "hasCredential",
          "lastModifiedTime",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:bigqueryconnection/v1beta1:getConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:bigqueryconnection%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:bigquerydatapolicy/v1:getDataPolicy": {
      "description": "Gets the data policy specified by its resource name.",
      "inputs": {
        "properties": {
          "dataPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "dataMaskingPolicy": {
            "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:DataMaskingPolicyResponse",
            "description": "The data masking policy that specifies the data masking rule to use."
          },
          "dataPolicyId": {
            "description": "User-assigned (human readable) ID of the data policy that needs to be unique within a project. Used as {data_policy_id} in part of the resource name.",
            "type": "string"
          },
          "dataPolicyType": {
            "description": "Type of data policy.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of this data policy, in the format of `projects/{project_number}/locations/{location_id}/dataPolicies/{data_policy_id}`.",
            "type": "string"
          },
          "policyTag": {
            "description": "Policy tag resource name, in the format of `projects/{project_number}/locations/{location_id}/taxonomies/{taxonomy_id}/policyTags/{policyTag_id}`.",
            "type": "string"
          }
        },
        "required": [
          "dataMaskingPolicy",
          "dataPolicyId",
          "dataPolicyType",
          "name",
          "policyTag"
        ],
        "type": "object"
      }
    },
    "google-native:bigquerydatapolicy/v1:getDataPolicyIamPolicy": {
      "description": "Gets the IAM policy for the specified data policy.",
      "inputs": {
        "properties": {
          "dataPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:bigquerydatapolicy%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:bigquerydatatransfer/v1:getTransferConfig": {
      "description": "Returns information about a data transfer config.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "transferConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "transferConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "dataRefreshWindowDays": {
            "description": "The number of days to look back to automatically refresh the data. For example, if `data_refresh_window_days = 10`, then every day BigQuery reingests data for [today-10, today-1], rather than ingesting data for just [today-1]. Only valid if the data source supports the feature. Set the value to 0 to use the default value.",
            "type": "integer"
          },
          "dataSourceId": {
            "description": "Data source ID. This cannot be changed once data transfer is created. The full list of available data source IDs can be returned through an API call: https://cloud.google.com/bigquery-transfer/docs/reference/datatransfer/rest/v1/projects.locations.dataSources/list",
            "type": "string"
          },
          "datasetRegion": {
            "description": "Region in which BigQuery dataset is located.",
            "type": "string"
          },
          "destinationDatasetId": {
            "description": "The BigQuery target dataset id.",
            "type": "string"
          },
          "disabled": {
            "description": "Is this config disabled. When set to true, no runs are scheduled for a given transfer.",
            "type": "boolean"
          },
          "displayName": {
            "description": "User specified display name for the data transfer.",
            "type": "string"
          },
          "emailPreferences": {
            "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:EmailPreferencesResponse",
            "description": "Email notifications will be sent according to these preferences to the email address of the user who owns this transfer config."
          },
          "encryptionConfiguration": {
            "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:EncryptionConfigurationResponse",
            "description": "The encryption configuration part. Currently, it is only used for the optional KMS key name. The BigQuery service account of your project must be granted permissions to use the key. Read methods will return the key name applied in effect. Write methods will apply the key if it is present, or otherwise try to apply project default keys if it is absent."
          },
          "name": {
            "description": "The resource name of the transfer config. Transfer config names have the form either `projects/{project_id}/locations/{region}/transferConfigs/{config_id}` or `projects/{project_id}/transferConfigs/{config_id}`, where `config_id` is usually a UUID, even though it is not guaranteed or required. The name is ignored when creating a transfer config.",
            "type": "string"
          },
          "nextRunTime": {
            "description": "Next time when data transfer will run.",
            "type": "string"
          },
          "notificationPubsubTopic": {
            "description": "Pub/Sub topic where notifications will be sent after transfer runs associated with this transfer config finish. The format for specifying a pubsub topic is: `projects/{project}/topics/{topic}`",
            "type": "string"
          },
          "ownerInfo": {
            "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:UserInfoResponse",
            "description": "Information about the user whose credentials are used to transfer data. Populated only for `transferConfigs.get` requests. In case the user information is not available, this field will not be populated."
          },
          "params": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Parameters specific to each data source. For more information see the bq tab in the 'Setting up a data transfer' section for each data source. For example the parameters for Cloud Storage transfers are listed here: https://cloud.google.com/bigquery-transfer/docs/cloud-storage-transfer#bq",
            "type": "object"
          },
          "schedule": {
            "description": "Data transfer schedule. If the data source does not support a custom schedule, this should be empty. If it is empty, the default value for the data source will be used. The specified times are in UTC. Examples of valid format: `1st,3rd monday of month 15:30`, `every wed,fri of jan,jun 13:15`, and `first sunday of quarter 00:00`. See more explanation about the format here: https://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format NOTE: The minimum interval time between recurring transfers depends on the data source; refer to the documentation for your data source.",
            "type": "string"
          },
          "scheduleOptions": {
            "$ref": "#/types/google-native:bigquerydatatransfer%2Fv1:ScheduleOptionsResponse",
            "description": "Options customizing the data transfer schedule."
          },
          "state": {
            "description": "State of the most recently updated transfer run.",
            "type": "string"
          },
          "updateTime": {
            "description": "Data transfer modification time. Ignored by server on input.",
            "type": "string"
          },
          "userId": {
            "deprecationMessage": "Deprecated. Unique ID of the user on whose behalf transfer is done.",
            "description": "Deprecated. Unique ID of the user on whose behalf transfer is done.",
            "type": "string"
          }
        },
        "required": [
          "dataRefreshWindowDays",
          "dataSourceId",
          "datasetRegion",
          "destinationDatasetId",
          "disabled",
          "displayName",
          "emailPreferences",
          "encryptionConfiguration",
          "name",
          "nextRunTime",
          "notificationPubsubTopic",
          "ownerInfo",
          "params",
          "schedule",
          "scheduleOptions",
          "state",
          "updateTime",
          "userId"
        ],
        "type": "object"
      }
    },
    "google-native:bigqueryreservation/v1:getCapacityCommitment": {
      "description": "Returns information about the capacity commitment.",
      "inputs": {
        "properties": {
          "capacityCommitmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "capacityCommitmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "commitmentEndTime": {
            "description": "The end of the current commitment period. It is applicable only for ACTIVE capacity commitments.",
            "type": "string"
          },
          "commitmentStartTime": {
            "description": "The start of the current commitment period. It is applicable only for ACTIVE capacity commitments.",
            "type": "string"
          },
          "edition": {
            "description": "Edition of the capacity commitment.",
            "type": "string"
          },
          "failureStatus": {
            "$ref": "#/types/google-native:bigqueryreservation%2Fv1:StatusResponse",
            "description": "For FAILED commitment plan, provides the reason of failure."
          },
          "isFlatRate": {
            "description": "If true, the commitment is a flat-rate commitment, otherwise, it's an edition commitment.",
            "type": "boolean"
          },
          "multiRegionAuxiliary": {
            "description": "Applicable only for commitments located within one of the BigQuery multi-regions (US or EU). If set to true, this commitment is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this commitment is placed in the organization's default region. NOTE: this is a preview feature. Project must be allow-listed in order to set this field.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the capacity commitment, e.g., `projects/myproject/locations/US/capacityCommitments/123` The commitment_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters.",
            "type": "string"
          },
          "plan": {
            "description": "Capacity commitment commitment plan.",
            "type": "string"
          },
          "renewalPlan": {
            "description": "The plan this capacity commitment is converted to after commitment_end_time passes. Once the plan is changed, committed period is extended according to commitment plan. Only applicable for ANNUAL and TRIAL commitments.",
            "type": "string"
          },
          "slotCount": {
            "description": "Number of slots in this commitment.",
            "type": "string"
          },
          "state": {
            "description": "State of the commitment.",
            "type": "string"
          }
        },
        "required": [
          "commitmentEndTime",
          "commitmentStartTime",
          "edition",
          "failureStatus",
          "isFlatRate",
          "multiRegionAuxiliary",
          "name",
          "plan",
          "renewalPlan",
          "slotCount",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:bigqueryreservation/v1:getReservation": {
      "description": "Returns information about the reservation.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "reservationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "reservationId"
        ]
      },
      "outputs": {
        "properties": {
          "autoscale": {
            "$ref": "#/types/google-native:bigqueryreservation%2Fv1:AutoscaleResponse",
            "description": "The configuration parameters for the auto scaling feature."
          },
          "concurrency": {
            "description": "Job concurrency target which sets a soft upper bound on the number of jobs that can run concurrently in this reservation. This is a soft target due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency target will be automatically computed by the system. NOTE: this field is exposed as `target_job_concurrency` in the Information Schema, DDL and BQ CLI.",
            "type": "string"
          },
          "creationTime": {
            "description": "Creation time of the reservation.",
            "type": "string"
          },
          "edition": {
            "description": "Edition of the reservation.",
            "type": "string"
          },
          "ignoreIdleSlots": {
            "description": "If false, any query or pipeline job using this reservation will use idle slots from other reservations within the same admin project. If true, a query or pipeline job using this reservation will execute with the slot capacity specified in the slot_capacity field at most.",
            "type": "boolean"
          },
          "multiRegionAuxiliary": {
            "description": "Applicable only for reservations located within one of the BigQuery multi-regions (US or EU). If set to true, this reservation is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this reservation is placed in the organization's default region. NOTE: this is a preview feature. Project must be allow-listed in order to set this field.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the reservation, e.g., `projects/*/locations/*/reservations/team1-prod`. The reservation_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters.",
            "type": "string"
          },
          "slotCapacity": {
            "description": "Baseline slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. Queries using this reservation might use more slots during runtime if ignore_idle_slots is set to false, or autoscaling is enabled. If edition is EDITION_UNSPECIFIED and total slot_capacity of the reservation and its siblings exceeds the total slot_count of all capacity commitments, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`. If edition is any value but EDITION_UNSPECIFIED, then the above requirement is not needed. The total slot_capacity of the reservation and its siblings may exceed the total slot_count of capacity commitments. In that case, the exceeding slots will be charged with the autoscale SKU. You can increase the number of baseline slots in a reservation every few minutes. If you want to decrease your baseline slots, you are limited to once an hour if you have recently changed your baseline slot capacity and your baseline slots exceed your committed slots. Otherwise, you can decrease your baseline slots every few minutes.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of the reservation.",
            "type": "string"
          }
        },
        "required": [
          "autoscale",
          "concurrency",
          "creationTime",
          "edition",
          "ignoreIdleSlots",
          "multiRegionAuxiliary",
          "name",
          "slotCapacity",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:bigqueryreservation/v1beta1:getCapacityCommitment": {
      "description": "Returns information about the capacity commitment.",
      "inputs": {
        "properties": {
          "capacityCommitmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "capacityCommitmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "commitmentEndTime": {
            "description": "The end of the current commitment period. It is applicable only for ACTIVE capacity commitments.",
            "type": "string"
          },
          "commitmentStartTime": {
            "description": "The start of the current commitment period. It is applicable only for ACTIVE capacity commitments.",
            "type": "string"
          },
          "failureStatus": {
            "$ref": "#/types/google-native:bigqueryreservation%2Fv1beta1:StatusResponse",
            "description": "For FAILED commitment plan, provides the reason of failure."
          },
          "multiRegionAuxiliary": {
            "description": "Applicable only for commitments located within one of the BigQuery multi-regions (US or EU). If set to true, this commitment is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this commitment is placed in the organization's default region.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the capacity commitment, e.g., `projects/myproject/locations/US/capacityCommitments/123` The commitment_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters.",
            "type": "string"
          },
          "plan": {
            "description": "Capacity commitment commitment plan.",
            "type": "string"
          },
          "renewalPlan": {
            "description": "The plan this capacity commitment is converted to after commitment_end_time passes. Once the plan is changed, committed period is extended according to commitment plan. Only applicable for ANNUAL commitments.",
            "type": "string"
          },
          "slotCount": {
            "description": "Number of slots in this commitment.",
            "type": "string"
          },
          "state": {
            "description": "State of the commitment.",
            "type": "string"
          }
        },
        "required": [
          "commitmentEndTime",
          "commitmentStartTime",
          "failureStatus",
          "multiRegionAuxiliary",
          "name",
          "plan",
          "renewalPlan",
          "slotCount",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:bigqueryreservation/v1beta1:getReservation": {
      "description": "Returns information about the reservation.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "reservationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "reservationId"
        ]
      },
      "outputs": {
        "properties": {
          "concurrency": {
            "description": "Maximum number of queries that are allowed to run concurrently in this reservation. This is a soft limit due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency will be automatically set based on the reservation size.",
            "type": "string"
          },
          "creationTime": {
            "description": "Creation time of the reservation.",
            "type": "string"
          },
          "ignoreIdleSlots": {
            "description": "If false, any query or pipeline job using this reservation will use idle slots from other reservations within the same admin project. If true, a query or pipeline job using this reservation will execute with the slot capacity specified in the slot_capacity field at most.",
            "type": "boolean"
          },
          "multiRegionAuxiliary": {
            "description": "Applicable only for reservations located within one of the BigQuery multi-regions (US or EU). If set to true, this reservation is placed in the organization's secondary region which is designated for disaster recovery purposes. If false, this reservation is placed in the organization's default region.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the reservation, e.g., `projects/*/locations/*/reservations/team1-prod`. The reservation_id must only contain lower case alphanumeric characters or dashes. It must start with a letter and must not end with a dash. Its maximum length is 64 characters.",
            "type": "string"
          },
          "slotCapacity": {
            "description": "Minimum slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. Queries using this reservation might use more slots during runtime if ignore_idle_slots is set to false. If the new reservation's slot capacity exceeds the project's slot capacity or if total slot capacity of the new reservation and its siblings exceeds the project's slot capacity, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`. NOTE: for reservations in US or EU multi-regions, slot capacity constraints are checked separately for default and auxiliary regions. See multi_region_auxiliary flag for more details.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of the reservation.",
            "type": "string"
          }
        },
        "required": [
          "concurrency",
          "creationTime",
          "ignoreIdleSlots",
          "multiRegionAuxiliary",
          "name",
          "slotCapacity",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:bigtableadmin/v2:getAppProfile": {
      "description": "Gets information about an app profile.",
      "inputs": {
        "properties": {
          "appProfileId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appProfileId",
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Long form description of the use case for this AppProfile.",
            "type": "string"
          },
          "etag": {
            "description": "Strongly validated etag for optimistic concurrency control. Preserve the value returned from `GetAppProfile` when calling `UpdateAppProfile` to fail the request if there has been a modification in the mean time. The `update_mask` of the request need not include `etag` for this protection to apply. See [Wikipedia](https://en.wikipedia.org/wiki/HTTP_ETag) and [RFC 7232](https://tools.ietf.org/html/rfc7232#section-2.3) for more details.",
            "type": "string"
          },
          "multiClusterRoutingUseAny": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:MultiClusterRoutingUseAnyResponse",
            "description": "Use a multi-cluster routing policy."
          },
          "name": {
            "description": "The unique name of the app profile. Values are of the form `projects/{project}/instances/{instance}/appProfiles/_a-zA-Z0-9*`.",
            "type": "string"
          },
          "priority": {
            "description": "This field has been deprecated in favor of `standard_isolation.priority`. If you set this field, `standard_isolation.priority` will be set instead. The priority of requests sent using this app profile.",
            "type": "string"
          },
          "singleClusterRouting": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:SingleClusterRoutingResponse",
            "description": "Use a single-cluster routing policy."
          },
          "standardIsolation": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:StandardIsolationResponse",
            "description": "The standard options used for isolating this app profile's traffic from other use cases."
          }
        },
        "required": [
          "description",
          "etag",
          "multiClusterRoutingUseAny",
          "name",
          "priority",
          "singleClusterRouting",
          "standardIsolation"
        ],
        "type": "object"
      }
    },
    "google-native:bigtableadmin/v2:getBackup": {
      "description": "Gets metadata on a pending or completed Cloud Bigtable Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "clusterId",
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "encryptionInfo": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:EncryptionInfoResponse",
            "description": "The encryption information for the backup."
          },
          "endTime": {
            "description": "`end_time` is the time that the backup was finished. The row data in the backup will be no newer than this timestamp.",
            "type": "string"
          },
          "expireTime": {
            "description": "The expiration time of the backup, with microseconds granularity that must be at least 6 hours and at most 90 days from the time the request is received. Once the `expire_time` has passed, Cloud Bigtable will delete the backup and free the resources used by the backup.",
            "type": "string"
          },
          "name": {
            "description": "A globally unique identifier for the backup which cannot be changed. Values are of the form `projects/{project}/instances/{instance}/clusters/{cluster}/ backups/_a-zA-Z0-9*` The final segment of the name must be between 1 and 50 characters in length. The backup is stored in the cluster identified by the prefix of the backup name of the form `projects/{project}/instances/{instance}/clusters/{cluster}`.",
            "type": "string"
          },
          "sizeBytes": {
            "description": "Size of the backup in bytes.",
            "type": "string"
          },
          "sourceBackup": {
            "description": "Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//backups/.",
            "type": "string"
          },
          "sourceTable": {
            "description": "Immutable. Name of the table from which this backup was created. This needs to be in the same instance as the backup. Values are of the form `projects/{project}/instances/{instance}/tables/{source_table}`.",
            "type": "string"
          },
          "startTime": {
            "description": "`start_time` is the time that the backup was started (i.e. approximately the time the CreateBackup request is received). The row data in this backup will be no older than this timestamp.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          }
        },
        "required": [
          "encryptionInfo",
          "endTime",
          "expireTime",
          "name",
          "sizeBytes",
          "sourceBackup",
          "sourceTable",
          "startTime",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:bigtableadmin/v2:getCluster": {
      "description": "Gets information about a cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "clusterConfig": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:ClusterConfigResponse",
            "description": "Configuration for this cluster."
          },
          "defaultStorageType": {
            "description": "Immutable. The type of storage used by this cluster to serve its parent instance's tables, unless explicitly overridden.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:EncryptionConfigResponse",
            "description": "Immutable. The encryption configuration for CMEK-protected clusters."
          },
          "location": {
            "description": "Immutable. The location where this cluster's nodes and storage reside. For best performance, clients should be located as close as possible to this cluster. Currently only zones are supported, so values should be of the form `projects/{project}/locations/{zone}`.",
            "type": "string"
          },
          "name": {
            "description": "The unique name of the cluster. Values are of the form `projects/{project}/instances/{instance}/clusters/a-z*`.",
            "type": "string"
          },
          "serveNodes": {
            "description": "The number of nodes in the cluster. If no value is set, Cloud Bigtable automatically allocates nodes based on your data footprint and optimized for 50% storage utilization.",
            "type": "integer"
          },
          "state": {
            "description": "The current state of the cluster.",
            "type": "string"
          }
        },
        "required": [
          "clusterConfig",
          "defaultStorageType",
          "encryptionConfig",
          "location",
          "name",
          "serveNodes",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:bigtableadmin/v2:getInstance": {
      "description": "Gets information about an instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "A commit timestamp representing when this Instance was created. For instances created before this field was added (August 2021), this value is `seconds: 0, nanos: 1`.",
            "type": "string"
          },
          "displayName": {
            "description": "The descriptive name for this instance as it appears in UIs. Can be changed at any time, but should be kept globally unique to avoid confusion.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. They can be used to filter resources and aggregate metrics. * Label keys must be between 1 and 63 characters long and must conform to the regular expression: `\\p{Ll}\\p{Lo}{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}`. * No more than 64 labels can be associated with a given resource. * Keys and values must both be under 128 bytes.",
            "type": "object"
          },
          "name": {
            "description": "The unique name of the instance. Values are of the form `projects/{project}/instances/a-z+[a-z0-9]`.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "state": {
            "description": "The current state of the instance.",
            "type": "string"
          },
          "type": {
            "description": "The type of the instance. Defaults to `PRODUCTION`.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "labels",
          "name",
          "satisfiesPzs",
          "state",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:bigtableadmin/v2:getInstanceClusterBackupIamPolicy": {
      "description": "Gets the access control policy for a Table or Backup resource. Returns an empty policy if the resource exists but does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "clusterId",
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:bigtableadmin%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:bigtableadmin/v2:getInstanceIamPolicy": {
      "description": "Gets the access control policy for an instance resource. Returns an empty policy if an instance exists but does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:bigtableadmin%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:bigtableadmin/v2:getInstanceTableIamPolicy": {
      "description": "Gets the access control policy for a Table or Backup resource. Returns an empty policy if the resource exists but does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tableId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "tableId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:bigtableadmin%2Fv2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:bigtableadmin%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:bigtableadmin/v2:getTable": {
      "description": "Gets metadata information about the specified table.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tableId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "tableId"
        ]
      },
      "outputs": {
        "properties": {
          "changeStreamConfig": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:ChangeStreamConfigResponse",
            "description": "If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."
          },
          "clusterStates": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map from cluster ID to per-cluster table state. If it could not be determined whether or not the table has data in a particular cluster (for example, if its zone is unavailable), then there will be an entry for the cluster with UNKNOWN `replication_status`. Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`",
            "type": "object"
          },
          "columnFamilies": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`",
            "type": "object"
          },
          "deletionProtection": {
            "description": "Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.",
            "type": "boolean"
          },
          "granularity": {
            "description": "Immutable. The granularity (i.e. `MILLIS`) at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.",
            "type": "string"
          },
          "name": {
            "description": "The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`",
            "type": "string"
          },
          "restoreInfo": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:RestoreInfoResponse",
            "description": "If this table was restored from another data source (e.g. a backup), this field will be populated with information about the restore."
          },
          "stats": {
            "$ref": "#/types/google-native:bigtableadmin%2Fv2:TableStatsResponse",
            "description": "Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above."
          }
        },
        "required": [
          "changeStreamConfig",
          "clusterStates",
          "columnFamilies",
          "deletionProtection",
          "granularity",
          "name",
          "restoreInfo",
          "stats"
        ],
        "type": "object"
      }
    },
    "google-native:billingbudgets/v1:getBudget": {
      "description": "Returns a budget. WARNING: There are some fields exposed on the Google Cloud Console that aren't available on this API. When reading from the API, you will not see these fields in the return value, though they may have been set in the Cloud Console.",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "budgetId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId",
          "budgetId"
        ]
      },
      "outputs": {
        "properties": {
          "amount": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1BudgetAmountResponse",
            "description": "Budgeted amount."
          },
          "budgetFilter": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1FilterResponse",
            "description": "Optional. Filters that define which resources are used to compute the actual spend against the budget amount, such as projects, services, and the budget's time period, as well as other filters."
          },
          "displayName": {
            "description": "User data for display name in UI. The name must be less than or equal to 60 characters.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Etag to validate that the object is unchanged for a read-modify-write operation. An empty etag causes an update to overwrite other changes.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the budget. The resource name implies the scope of a budget. Values are of the form `billingAccounts/{billingAccountId}/budgets/{budgetId}`.",
            "type": "string"
          },
          "notificationsRule": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1NotificationsRuleResponse",
            "description": "Optional. Rules to apply to notifications sent based on budget spend and thresholds."
          },
          "ownershipScope": {
            "type": "string"
          },
          "thresholdRules": {
            "description": "Optional. Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. Optional for `pubsubTopic` notifications. Required if using email notifications.",
            "items": {
              "$ref": "#/types/google-native:billingbudgets%2Fv1:GoogleCloudBillingBudgetsV1ThresholdRuleResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "amount",
          "budgetFilter",
          "displayName",
          "etag",
          "name",
          "notificationsRule",
          "ownershipScope",
          "thresholdRules"
        ],
        "type": "object"
      }
    },
    "google-native:billingbudgets/v1beta1:getBudget": {
      "description": "Returns a budget. WARNING: There are some fields exposed on the Google Cloud Console that aren't available on this API. When reading from the API, you will not see these fields in the return value, though they may have been set in the Cloud Console.",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "budgetId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId",
          "budgetId"
        ]
      },
      "outputs": {
        "properties": {
          "allUpdatesRule": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1AllUpdatesRuleResponse",
            "description": "Optional. Rules to apply to notifications sent based on budget spend and thresholds."
          },
          "amount": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1BudgetAmountResponse",
            "description": "Budgeted amount."
          },
          "budgetFilter": {
            "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1FilterResponse",
            "description": "Optional. Filters that define which resources are used to compute the actual spend against the budget amount, such as projects, services, and the budget's time period, as well as other filters."
          },
          "displayName": {
            "description": "User data for display name in UI. Validation: \u003c= 60 chars.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Etag to validate that the object is unchanged for a read-modify-write operation. An empty etag will cause an update to overwrite other changes.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the budget. The resource name implies the scope of a budget. Values are of the form `billingAccounts/{billingAccountId}/budgets/{budgetId}`.",
            "type": "string"
          },
          "ownershipScope": {
            "type": "string"
          },
          "thresholdRules": {
            "description": "Optional. Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. Optional for `pubsubTopic` notifications. Required if using email notifications.",
            "items": {
              "$ref": "#/types/google-native:billingbudgets%2Fv1beta1:GoogleCloudBillingBudgetsV1beta1ThresholdRuleResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "allUpdatesRule",
          "amount",
          "budgetFilter",
          "displayName",
          "etag",
          "name",
          "ownershipScope",
          "thresholdRules"
        ],
        "type": "object"
      }
    },
    "google-native:binaryauthorization/v1:getAttestor": {
      "description": "Gets an attestor. Returns `NOT_FOUND` if the attestor does not exist.",
      "inputs": {
        "properties": {
          "attestorId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attestorId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Optional. A descriptive comment. This field may be updated. The field may be displayed in chooser dialogs.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. A checksum, returned by the server, that can be sent on update requests to ensure the attestor has an up-to-date value before attempting to update it. See https://google.aip.dev/154.",
            "type": "string"
          },
          "name": {
            "description": "The resource name, in the format: `projects/*/attestors/*`. This field may not be updated.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the attestor was last updated.",
            "type": "string"
          },
          "userOwnedGrafeasNote": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:UserOwnedGrafeasNoteResponse",
            "description": "This specifies how an attestation will be read, and how it will be used during policy enforcement."
          }
        },
        "required": [
          "description",
          "etag",
          "name",
          "updateTime",
          "userOwnedGrafeasNote"
        ],
        "type": "object"
      }
    },
    "google-native:binaryauthorization/v1:getAttestorIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "attestorId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attestorId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:binaryauthorization%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:binaryauthorization/v1:getPolicy": {
      "description": "Gets a platform policy. Returns `NOT_FOUND` if the policy doesn't exist.",
      "inputs": {
        "properties": {
          "platformId": {
            "type": "string"
          },
          "policyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "platformId",
          "policyId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Optional. A description comment about the policy.",
            "type": "string"
          },
          "gkePolicy": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1:GkePolicyResponse",
            "description": "Optional. GKE platform-specific policy."
          },
          "name": {
            "description": "The relative resource name of the Binary Authorization platform policy, in the form of `projects/*/platforms/*/policies/*`.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the policy was last updated.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "gkePolicy",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:binaryauthorization/v1:getPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:binaryauthorization%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:binaryauthorization/v1beta1:getAttestor": {
      "description": "Gets an attestor. Returns NOT_FOUND if the attestor does not exist.",
      "inputs": {
        "properties": {
          "attestorId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attestorId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Optional. A descriptive comment. This field may be updated. The field may be displayed in chooser dialogs.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. A checksum, returned by the server, that can be sent on update requests to ensure the attestor has an up-to-date value before attempting to update it. See https://google.aip.dev/154.",
            "type": "string"
          },
          "name": {
            "description": "The resource name, in the format: `projects/*/attestors/*`. This field may not be updated.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the attestor was last updated.",
            "type": "string"
          },
          "userOwnedDrydockNote": {
            "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:UserOwnedDrydockNoteResponse",
            "description": "A Drydock ATTESTATION_AUTHORITY Note, created by the user."
          }
        },
        "required": [
          "description",
          "etag",
          "name",
          "updateTime",
          "userOwnedDrydockNote"
        ],
        "type": "object"
      }
    },
    "google-native:binaryauthorization/v1beta1:getAttestorIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "attestorId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attestorId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:binaryauthorization/v1beta1:getPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:binaryauthorization%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:blockchainnodeengine/v1:getBlockchainNode": {
      "description": "Gets details of a single blockchain node.",
      "inputs": {
        "properties": {
          "blockchainNodeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "blockchainNodeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "blockchainType": {
            "description": "Immutable. The blockchain type of the node.",
            "type": "string"
          },
          "connectionInfo": {
            "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:ConnectionInfoResponse",
            "description": "The connection information used to interact with a blockchain node."
          },
          "createTime": {
            "description": "The timestamp at which the blockchain node was first created.",
            "type": "string"
          },
          "ethereumDetails": {
            "$ref": "#/types/google-native:blockchainnodeengine%2Fv1:EthereumDetailsResponse",
            "description": "Ethereum-specific blockchain node details."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-provided key-value pairs.",
            "type": "object"
          },
          "name": {
            "description": "The fully qualified name of the blockchain node. e.g. `projects/my-project/locations/us-central1/blockchainNodes/my-node`.",
            "type": "string"
          },
          "privateServiceConnectEnabled": {
            "description": "Optional. When true, the node is only accessible via Private Service Connect; no public endpoints are exposed. Otherwise, the node is only accessible via public endpoints. See https://cloud.google.com/vpc/docs/private-service-connect.",
            "type": "boolean"
          },
          "state": {
            "description": "A status representing the state of the node.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp at which the blockchain node was last updated.",
            "type": "string"
          }
        },
        "required": [
          "blockchainType",
          "connectionInfo",
          "createTime",
          "ethereumDetails",
          "labels",
          "name",
          "privateServiceConnectEnabled",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:certificatemanager/v1:getCertificate": {
      "description": "Gets details of a single Certificate.",
      "inputs": {
        "properties": {
          "certificateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of a Certificate.",
            "type": "string"
          },
          "description": {
            "description": "One or more paragraphs of text description of a certificate.",
            "type": "string"
          },
          "expireTime": {
            "description": "The expiry timestamp of a Certificate.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with a Certificate.",
            "type": "object"
          },
          "managed": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:ManagedCertificateResponse",
            "description": "If set, contains configuration and state of a managed certificate."
          },
          "name": {
            "description": "A user-defined name of the certificate. Certificate names must be unique globally and match pattern `projects/*/locations/*/certificates/*`.",
            "type": "string"
          },
          "pemCertificate": {
            "description": "The PEM-encoded certificate chain.",
            "type": "string"
          },
          "sanDnsnames": {
            "description": "The list of Subject Alternative Names of dnsName type defined in the certificate (see RFC 5280 4.2.1.6). Managed certificates that haven't been provisioned yet have this field populated with a value of the managed.domains field.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "scope": {
            "description": "Immutable. The scope of the certificate.",
            "type": "string"
          },
          "selfManaged": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:SelfManagedCertificateResponse",
            "description": "If set, defines data of a self-managed certificate."
          },
          "updateTime": {
            "description": "The last update timestamp of a Certificate.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "expireTime",
          "labels",
          "managed",
          "name",
          "pemCertificate",
          "sanDnsnames",
          "scope",
          "selfManaged",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:certificatemanager/v1:getCertificateIssuanceConfig": {
      "description": "Gets details of a single CertificateIssuanceConfig.",
      "inputs": {
        "properties": {
          "certificateIssuanceConfigId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateIssuanceConfigId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "certificateAuthorityConfig": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:CertificateAuthorityConfigResponse",
            "description": "The CA that issues the workload certificate. It includes the CA address, type, authentication to CA service, etc."
          },
          "createTime": {
            "description": "The creation timestamp of a CertificateIssuanceConfig.",
            "type": "string"
          },
          "description": {
            "description": "One or more paragraphs of text description of a CertificateIssuanceConfig.",
            "type": "string"
          },
          "keyAlgorithm": {
            "description": "The key algorithm to use when generating the private key.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with a CertificateIssuanceConfig.",
            "type": "object"
          },
          "lifetime": {
            "description": "Workload certificate lifetime requested.",
            "type": "string"
          },
          "name": {
            "description": "A user-defined name of the certificate issuance config. CertificateIssuanceConfig names must be unique globally and match pattern `projects/*/locations/*/certificateIssuanceConfigs/*`.",
            "type": "string"
          },
          "rotationWindowPercentage": {
            "description": "Specifies the percentage of elapsed time of the certificate lifetime to wait before renewing the certificate. Must be a number between 1-99, inclusive.",
            "type": "integer"
          },
          "updateTime": {
            "description": "The last update timestamp of a CertificateIssuanceConfig.",
            "type": "string"
          }
        },
        "required": [
          "certificateAuthorityConfig",
          "createTime",
          "description",
          "keyAlgorithm",
          "labels",
          "lifetime",
          "name",
          "rotationWindowPercentage",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:certificatemanager/v1:getCertificateMap": {
      "description": "Gets details of a single CertificateMap.",
      "inputs": {
        "properties": {
          "certificateMapId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateMapId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of a Certificate Map.",
            "type": "string"
          },
          "description": {
            "description": "One or more paragraphs of text description of a certificate map.",
            "type": "string"
          },
          "gclbTargets": {
            "description": "A list of GCLB targets that use this Certificate Map. A Target Proxy is only present on this list if it's attached to a Forwarding Rule.",
            "items": {
              "$ref": "#/types/google-native:certificatemanager%2Fv1:GclbTargetResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with a Certificate Map.",
            "type": "object"
          },
          "name": {
            "description": "A user-defined name of the Certificate Map. Certificate Map names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*`.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update timestamp of a Certificate Map.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gclbTargets",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:certificatemanager/v1:getCertificateMapEntry": {
      "description": "Gets details of a single CertificateMapEntry.",
      "inputs": {
        "properties": {
          "certificateMapEntryId": {
            "type": "string"
          },
          "certificateMapId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateMapEntryId",
          "certificateMapId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "certificates": {
            "description": "A set of Certificates defines for the given `hostname`. There can be defined up to four certificates in each Certificate Map Entry. Each certificate must match pattern `projects/*/locations/*/certificates/*`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The creation timestamp of a Certificate Map Entry.",
            "type": "string"
          },
          "description": {
            "description": "One or more paragraphs of text description of a certificate map entry.",
            "type": "string"
          },
          "hostname": {
            "description": "A Hostname (FQDN, e.g. `example.com`) or a wildcard hostname expression (`*.example.com`) for a set of hostnames with common suffix. Used as Server Name Indication (SNI) for selecting a proper certificate.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with a Certificate Map Entry.",
            "type": "object"
          },
          "matcher": {
            "description": "A predefined matcher for particular cases, other than SNI selection.",
            "type": "string"
          },
          "name": {
            "description": "A user-defined name of the Certificate Map Entry. Certificate Map Entry names must be unique globally and match pattern `projects/*/locations/*/certificateMaps/*/certificateMapEntries/*`.",
            "type": "string"
          },
          "state": {
            "description": "A serving state of this Certificate Map Entry.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update timestamp of a Certificate Map Entry.",
            "type": "string"
          }
        },
        "required": [
          "certificates",
          "createTime",
          "description",
          "hostname",
          "labels",
          "matcher",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:certificatemanager/v1:getDnsAuthorization": {
      "description": "Gets details of a single DnsAuthorization.",
      "inputs": {
        "properties": {
          "dnsAuthorizationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dnsAuthorizationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of a DnsAuthorization.",
            "type": "string"
          },
          "description": {
            "description": "One or more paragraphs of text description of a DnsAuthorization.",
            "type": "string"
          },
          "dnsResourceRecord": {
            "$ref": "#/types/google-native:certificatemanager%2Fv1:DnsResourceRecordResponse",
            "description": "DNS Resource Record that needs to be added to DNS configuration."
          },
          "domain": {
            "description": "Immutable. A domain that is being authorized. A DnsAuthorization resource covers a single domain and its wildcard, e.g. authorization for `example.com` can be used to issue certificates for `example.com` and `*.example.com`.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with a DnsAuthorization.",
            "type": "object"
          },
          "name": {
            "description": "A user-defined name of the dns authorization. DnsAuthorization names must be unique globally and match pattern `projects/*/locations/*/dnsAuthorizations/*`.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of a DnsAuthorization.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "dnsResourceRecord",
          "domain",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:certificatemanager/v1:getTrustConfig": {
      "description": "Gets details of a single TrustConfig.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "trustConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "trustConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of a TrustConfig.",
            "type": "string"
          },
          "description": {
            "description": "One or more paragraphs of text description of a TrustConfig.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with a TrustConfig.",
            "type": "object"
          },
          "name": {
            "description": "A user-defined name of the trust config. TrustConfig names must be unique globally and match pattern `projects/*/locations/*/trustConfigs/*`.",
            "type": "string"
          },
          "trustStores": {
            "description": "Set of trust stores to perform validation against. This field is supported when TrustConfig is configured with Load Balancers, currently not supported for SPIFFE certificate validation. Only one TrustStore specified is currently allowed.",
            "items": {
              "$ref": "#/types/google-native:certificatemanager%2Fv1:TrustStoreResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update timestamp of a TrustConfig.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "trustStores",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudasset/v1:getFeed": {
      "description": "Gets details about an asset feed.",
      "inputs": {
        "properties": {
          "feedId": {
            "type": "string"
          },
          "v1Id": {
            "type": "string"
          },
          "v1Id1": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "feedId",
          "v1Id",
          "v1Id1"
        ]
      },
      "outputs": {
        "properties": {
          "assetNames": {
            "description": "A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "assetTypes": {
            "description": "A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `\"compute.googleapis.com/Disk\"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "condition": {
            "$ref": "#/types/google-native:cloudasset%2Fv1:ExprResponse",
            "description": "A condition which determines whether an asset update should be published. If specified, an asset will be returned only when the expression evaluates to true. When set, `expression` field in the `Expr` must be a valid [CEL expression] (https://github.com/google/cel-spec) on a TemporalAsset with name `temporal_asset`. Example: a Feed with expression (\"temporal_asset.deleted == true\") will only publish Asset deletions. Other fields of `Expr` are optional. See our [user guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes-with-condition) for detailed instructions."
          },
          "contentType": {
            "description": "Asset content type. If not specified, no content but the asset name and type will be returned.",
            "type": "string"
          },
          "feedOutputConfig": {
            "$ref": "#/types/google-native:cloudasset%2Fv1:FeedOutputConfigResponse",
            "description": "Feed output configuration defining where the asset updates are published to."
          },
          "name": {
            "description": "The format will be projects/{project_number}/feeds/{client-assigned_feed_identifier} or folders/{folder_number}/feeds/{client-assigned_feed_identifier} or organizations/{organization_number}/feeds/{client-assigned_feed_identifier} The client-assigned feed identifier must be unique within the parent project/folder/organization.",
            "type": "string"
          },
          "relationshipTypes": {
            "description": "A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "assetNames",
          "assetTypes",
          "condition",
          "contentType",
          "feedOutputConfig",
          "name",
          "relationshipTypes"
        ],
        "type": "object"
      }
    },
    "google-native:cloudasset/v1:getSavedQuery": {
      "description": "Gets details about a saved query.",
      "inputs": {
        "properties": {
          "savedQueryId": {
            "type": "string"
          },
          "v1Id": {
            "type": "string"
          },
          "v1Id1": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "savedQueryId",
          "v1Id",
          "v1Id1"
        ]
      },
      "outputs": {
        "properties": {
          "content": {
            "$ref": "#/types/google-native:cloudasset%2Fv1:QueryContentResponse",
            "description": "The query content."
          },
          "createTime": {
            "description": "The create time of this saved query.",
            "type": "string"
          },
          "creator": {
            "description": "The account's email address who has created this saved query.",
            "type": "string"
          },
          "description": {
            "description": "The description of this saved query. This value should be fewer than 255 characters.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels applied on the resource. This value should not contain more than 10 entries. The key and value of each entry must be non-empty and fewer than 64 characters.",
            "type": "object"
          },
          "lastUpdateTime": {
            "description": "The last update time of this saved query.",
            "type": "string"
          },
          "lastUpdater": {
            "description": "The account's email address who has updated this saved query most recently.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the saved query. The format must be: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id",
            "type": "string"
          }
        },
        "required": [
          "content",
          "createTime",
          "creator",
          "description",
          "labels",
          "lastUpdateTime",
          "lastUpdater",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbilling/v1:getBillingAccount": {
      "description": "Gets information about a billing account. The current authenticated user must be a [viewer of the billing account](https://cloud.google.com/billing/docs/how-to/billing-access).",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The display name given to the billing account, such as `My Billing Account`. This name is displayed in the Google Cloud Console.",
            "type": "string"
          },
          "masterBillingAccount": {
            "description": "If this account is a [subaccount](https://cloud.google.com/billing/docs/concepts), then this will be the resource name of the parent billing account that it is being resold through. Otherwise this will be empty.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF` would be the resource name for billing account `012345-567890-ABCDEF`.",
            "type": "string"
          },
          "open": {
            "description": "True if the billing account is open, and will therefore be charged for any usage on associated projects. False if the billing account is closed, and therefore projects associated with it will be unable to use paid services.",
            "type": "boolean"
          },
          "parent": {
            "description": "The billing account's parent resource identifier. Use the `MoveBillingAccount` method to update the account's parent resource if it is a organization. Format: - organizations/{organization_id}, for example: organizations/12345678 - billingAccounts/{billing_account_id}, for example: `billingAccounts/012345-567890-ABCDEF`",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "masterBillingAccount",
          "name",
          "open",
          "parent"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbilling/v1:getBillingAccountIamPolicy": {
      "description": "Gets the access control policy for a billing account. The caller must have the `billing.accounts.getIamPolicy` permission on the account, which is often given to billing account [viewers](https://cloud.google.com/billing/docs/how-to/billing-access).",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudbilling%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudbilling%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1:getBitbucketServerConfig": {
      "description": "Retrieve a `BitbucketServerConfig`. This API is experimental.",
      "inputs": {
        "properties": {
          "bitbucketServerConfigId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bitbucketServerConfigId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "apiKey": {
            "description": "Immutable. API Key that will be attached to webhook. Once this field has been set, it cannot be changed. If you need to change it, please create another BitbucketServerConfig.",
            "type": "string"
          },
          "connectedRepositories": {
            "description": "Connected Bitbucket Server repositories for this config.",
            "items": {
              "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerRepositoryIdResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Time when the config was created.",
            "type": "string"
          },
          "hostUri": {
            "description": "Immutable. The URI of the Bitbucket Server host. Once this field has been set, it cannot be changed. If you need to change it, please create another BitbucketServerConfig.",
            "type": "string"
          },
          "name": {
            "description": "The resource name for the config.",
            "type": "string"
          },
          "peeredNetwork": {
            "description": "Optional. The network to be used when reaching out to the Bitbucket Server instance. The VPC network must be enabled for private service connection. This should be set if the Bitbucket Server instance is hosted on-premises and not reachable by public internet. If this field is left empty, no network peering will occur and calls to the Bitbucket Server instance will be made over the public internet. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number or id and {network} is the name of a VPC network in the project.",
            "type": "string"
          },
          "peeredNetworkIpRange": {
            "description": "Immutable. 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 29 bit prefix size. `/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. The field only has an effect if peered_network is set.",
            "type": "string"
          },
          "secrets": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerSecretsResponse",
            "description": "Secret Manager secrets needed by the config."
          },
          "sslCa": {
            "description": "Optional. SSL certificate to use for requests to Bitbucket Server. The format should be PEM format but the extension can be one of .pem, .cer, or .crt.",
            "type": "string"
          },
          "username": {
            "description": "Username of the account Cloud Build will use on Bitbucket Server.",
            "type": "string"
          },
          "webhookKey": {
            "description": "UUID included in webhook requests. The UUID is used to look up the corresponding config.",
            "type": "string"
          }
        },
        "required": [
          "apiKey",
          "connectedRepositories",
          "createTime",
          "hostUri",
          "name",
          "peeredNetwork",
          "peeredNetworkIpRange",
          "secrets",
          "sslCa",
          "username",
          "webhookKey"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1:getBuild": {
      "description": "Returns information about a previously requested build. The `Build` that is returned includes its status (such as `SUCCESS`, `FAILURE`, or `WORKING`), and timing information.",
      "inputs": {
        "properties": {
          "buildId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "buildId",
          "id",
          "location",
          "projectId"
        ]
      },
      "outputs": {
        "properties": {
          "approval": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildApprovalResponse",
            "description": "Describes this build's approval configuration, status, and result."
          },
          "artifacts": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:ArtifactsResponse",
            "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps."
          },
          "availableSecrets": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:SecretsResponse",
            "description": "Secrets and secret environment variables."
          },
          "buildTriggerId": {
            "description": "The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.",
            "type": "string"
          },
          "createTime": {
            "description": "Time at which the request to create the build was received.",
            "type": "string"
          },
          "failureInfo": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:FailureInfoResponse",
            "description": "Contains information about the build when status=FAILURE."
          },
          "finishTime": {
            "description": "Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build's execution.",
            "type": "string"
          },
          "images": {
            "description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the `Build` resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "logUrl": {
            "description": "URL to logs for this build in Google Cloud Console.",
            "type": "string"
          },
          "logsBucket": {
            "description": "Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.",
            "type": "string"
          },
          "name": {
            "description": "The 'Build' name with format: `projects/{project}/locations/{location}/builds/{build}`, where {build} is a unique identifier generated by the service.",
            "type": "string"
          },
          "options": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildOptionsResponse",
            "description": "Special options for this build."
          },
          "project": {
            "description": "ID of the project.",
            "type": "string"
          },
          "queueTtl": {
            "description": "TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time.",
            "type": "string"
          },
          "results": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:ResultsResponse",
            "description": "Results of the build."
          },
          "secrets": {
            "description": "Secrets to decrypt using Cloud Key Management Service. Note: Secret Manager is the recommended technique for managing sensitive data with Cloud Build. Use `available_secrets` to configure builds to access secrets from Secret Manager. For instructions, see: https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets",
            "items": {
              "$ref": "#/types/google-native:cloudbuild%2Fv1:SecretResponse"
            },
            "type": "array"
          },
          "serviceAccount": {
            "description": "IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. ",
            "type": "string"
          },
          "source": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:SourceResponse",
            "description": "The location of the source files to build."
          },
          "sourceProvenance": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:SourceProvenanceResponse",
            "description": "A permanent fixed identifier for source."
          },
          "startTime": {
            "description": "Time at which execution of the build was started.",
            "type": "string"
          },
          "status": {
            "description": "Status of the build.",
            "type": "string"
          },
          "statusDetail": {
            "description": "Customer-readable message about the current status.",
            "type": "string"
          },
          "steps": {
            "description": "The operations to be performed on the workspace.",
            "items": {
              "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildStepResponse"
            },
            "type": "array"
          },
          "substitutions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Substitutions data for `Build` resource.",
            "type": "object"
          },
          "tags": {
            "description": "Tags for annotation of a `Build`. These are not docker tags.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "timeout": {
            "description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`. `timeout` starts ticking from `startTime`. Default time is 60 minutes.",
            "type": "string"
          },
          "timing": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all artifacts including docker images and non docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included.",
            "type": "object"
          },
          "warnings": {
            "description": "Non-fatal problems encountered during the execution of the build.",
            "items": {
              "$ref": "#/types/google-native:cloudbuild%2Fv1:WarningResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "approval",
          "artifacts",
          "availableSecrets",
          "buildTriggerId",
          "createTime",
          "failureInfo",
          "finishTime",
          "images",
          "logUrl",
          "logsBucket",
          "name",
          "options",
          "project",
          "queueTtl",
          "results",
          "secrets",
          "serviceAccount",
          "source",
          "sourceProvenance",
          "startTime",
          "status",
          "statusDetail",
          "steps",
          "substitutions",
          "tags",
          "timeout",
          "timing",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1:getGitLabConfig": {
      "description": "Retrieves a `GitLabConfig`. This API is experimental",
      "inputs": {
        "properties": {
          "gitLabConfigId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gitLabConfigId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "connectedRepositories": {
            "description": "Connected GitLab.com or GitLabEnterprise repositories for this config.",
            "items": {
              "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabRepositoryIdResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Time when the config was created.",
            "type": "string"
          },
          "enterpriseConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabEnterpriseConfigResponse",
            "description": "Optional. GitLabEnterprise config."
          },
          "name": {
            "description": "The resource name for the config.",
            "type": "string"
          },
          "secrets": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabSecretsResponse",
            "description": "Secret Manager secrets needed by the config."
          },
          "username": {
            "description": "Username of the GitLab.com or GitLab Enterprise account Cloud Build will use.",
            "type": "string"
          },
          "webhookKey": {
            "description": "UUID included in webhook requests. The UUID is used to look up the corresponding config.",
            "type": "string"
          }
        },
        "required": [
          "connectedRepositories",
          "createTime",
          "enterpriseConfig",
          "name",
          "secrets",
          "username",
          "webhookKey"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1:getGithubEnterpriseConfig": {
      "description": "Retrieve a GitHubEnterpriseConfig.",
      "inputs": {
        "properties": {
          "configId": {
            "type": "string"
          },
          "githubEnterpriseConfigId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "githubEnterpriseConfigId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "appId": {
            "description": "The GitHub app id of the Cloud Build app on the GitHub Enterprise server.",
            "type": "string"
          },
          "createTime": {
            "description": "Time when the installation was associated with the project.",
            "type": "string"
          },
          "displayName": {
            "description": "Name to display for this config.",
            "type": "string"
          },
          "hostUrl": {
            "description": "The URL of the github enterprise host the configuration is for.",
            "type": "string"
          },
          "name": {
            "description": "Optional. The full resource name for the GitHubEnterpriseConfig For example: \"projects/{$project_id}/locations/{$location_id}/githubEnterpriseConfigs/{$config_id}\"",
            "type": "string"
          },
          "peeredNetwork": {
            "description": "Optional. The network to be used when reaching out to the GitHub Enterprise server. The VPC network must be enabled for private service connection. This should be set if the GitHub Enterprise server is hosted on-premises and not reachable by public internet. If this field is left empty, no network peering will occur and calls to the GitHub Enterprise server will be made over the public internet. Must be in the format `projects/{project}/global/networks/{network}`, where {project} is a project number or id and {network} is the name of a VPC network in the project.",
            "type": "string"
          },
          "secrets": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitHubEnterpriseSecretsResponse",
            "description": "Names of secrets in Secret Manager."
          },
          "sslCa": {
            "description": "Optional. SSL certificate to use for requests to GitHub Enterprise.",
            "type": "string"
          },
          "webhookKey": {
            "description": "The key that should be attached to webhook calls to the ReceiveWebhook endpoint.",
            "type": "string"
          }
        },
        "required": [
          "appId",
          "createTime",
          "displayName",
          "hostUrl",
          "name",
          "peeredNetwork",
          "secrets",
          "sslCa",
          "webhookKey"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1:getTrigger": {
      "description": "Returns information about a `BuildTrigger`.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "triggerId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "projectId",
          "triggerId"
        ]
      },
      "outputs": {
        "properties": {
          "approvalConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:ApprovalConfigResponse",
            "description": "Configuration for manual approval to start a build invocation of this BuildTrigger."
          },
          "autodetect": {
            "description": "Autodetect build configuration. The following precedence is used (case insensitive): 1. cloudbuild.yaml 2. cloudbuild.yml 3. cloudbuild.json 4. Dockerfile Currently only available for GitHub App Triggers.",
            "type": "boolean"
          },
          "bitbucketServerTriggerConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BitbucketServerTriggerConfigResponse",
            "description": "BitbucketServerTriggerConfig describes the configuration of a trigger that creates a build whenever a Bitbucket Server event is received."
          },
          "build": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:BuildResponse",
            "description": "Contents of the build template."
          },
          "createTime": {
            "description": "Time when the trigger was created.",
            "type": "string"
          },
          "description": {
            "description": "Human-readable description of this trigger.",
            "type": "string"
          },
          "disabled": {
            "description": "If true, the trigger will never automatically execute a build.",
            "type": "boolean"
          },
          "eventType": {
            "description": "EventType allows the user to explicitly set the type of event to which this BuildTrigger should respond. This field will be validated against the rest of the configuration if it is set.",
            "type": "string"
          },
          "filename": {
            "description": "Path, from the source root, to the build configuration file (i.e. cloudbuild.yaml).",
            "type": "string"
          },
          "filter": {
            "description": "A Common Expression Language string.",
            "type": "string"
          },
          "gitFileSource": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitFileSourceResponse",
            "description": "The file source describing the local or remote Build template."
          },
          "github": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitHubEventsConfigResponse",
            "description": "GitHubEventsConfig describes the configuration of a trigger that creates a build whenever a GitHub event is received. Mutually exclusive with `trigger_template`."
          },
          "gitlabEnterpriseEventsConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitLabEventsConfigResponse",
            "description": "GitLabEnterpriseEventsConfig describes the configuration of a trigger that creates a build whenever a GitLab Enterprise event is received."
          },
          "ignoredFiles": {
            "description": "ignored_files and included_files are file glob matches using https://golang.org/pkg/path/filepath/#Match extended with support for \"**\". If ignored_files and changed files are both empty, then they are not used to determine whether or not to trigger a build. If ignored_files is not empty, then we ignore any files that match any of the ignored_file globs. If the change has no files that are outside of the ignored_files globs, then we do not trigger a build.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "includeBuildLogs": {
            "description": "If set to INCLUDE_BUILD_LOGS_WITH_STATUS, log url will be shown on GitHub page when build status is final. Setting this field to INCLUDE_BUILD_LOGS_WITH_STATUS for non GitHub triggers results in INVALID_ARGUMENT error.",
            "type": "string"
          },
          "includedFiles": {
            "description": "If any of the files altered in the commit pass the ignored_files filter and included_files is empty, then as far as this filter is concerned, we should trigger the build. If any of the files altered in the commit pass the ignored_files filter and included_files is not empty, then we make sure that at least one of those files matches a included_files glob. If not, then we do not trigger a build.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "User-assigned name of the trigger. Must be unique within the project. Trigger names must meet the following requirements: + They must contain only alphanumeric characters and dashes. + They can be 1-64 characters long. + They must begin and end with an alphanumeric character.",
            "type": "string"
          },
          "pubsubConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:PubsubConfigResponse",
            "description": "PubsubConfig describes the configuration of a trigger that creates a build whenever a Pub/Sub message is published."
          },
          "repositoryEventConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:RepositoryEventConfigResponse",
            "description": "The configuration of a trigger that creates a build whenever an event from Repo API is received."
          },
          "resourceName": {
            "description": "The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account used for all user-controlled operations including UpdateBuildTrigger, RunBuildTrigger, CreateBuild, and CancelBuild. If no service account is set, then the standard Cloud Build service account ([PROJECT_NUM]@system.gserviceaccount.com) will be used instead. Format: `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT_ID_OR_EMAIL}`",
            "type": "string"
          },
          "sourceToBuild": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:GitRepoSourceResponse",
            "description": "The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers."
          },
          "substitutions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.",
            "type": "object"
          },
          "tags": {
            "description": "Tags for annotation of a `BuildTrigger`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "triggerTemplate": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:RepoSourceResponse",
            "description": "Template describing the types of source changes to trigger a build. Branch and tag names in trigger templates are interpreted as regular expressions. Any branch or tag change that matches that regular expression will trigger a build. Mutually exclusive with `github`."
          },
          "webhookConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:WebhookConfigResponse",
            "description": "WebhookConfig describes the configuration of a trigger that creates a build whenever a webhook is sent to a trigger's webhook URL."
          }
        },
        "required": [
          "approvalConfig",
          "autodetect",
          "bitbucketServerTriggerConfig",
          "build",
          "createTime",
          "description",
          "disabled",
          "eventType",
          "filename",
          "filter",
          "gitFileSource",
          "github",
          "gitlabEnterpriseEventsConfig",
          "ignoredFiles",
          "includeBuildLogs",
          "includedFiles",
          "name",
          "pubsubConfig",
          "repositoryEventConfig",
          "resourceName",
          "serviceAccount",
          "sourceToBuild",
          "substitutions",
          "tags",
          "triggerTemplate",
          "webhookConfig"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1:getWorkerPool": {
      "description": "Returns details of a `WorkerPool`.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workerPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workerPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User specified annotations. See https://google.aip.dev/128#annotations for more details such as format and size limitations.",
            "type": "object"
          },
          "createTime": {
            "description": "Time at which the request to create the `WorkerPool` was received.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time at which the request to delete the `WorkerPool` was received.",
            "type": "string"
          },
          "displayName": {
            "description": "A user-specified, human-readable name for the `WorkerPool`. If provided, this value must be 1-63 characters.",
            "type": "string"
          },
          "etag": {
            "description": "Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the `WorkerPool`, with format `projects/{project}/locations/{location}/workerPools/{worker_pool}`. The value of `{worker_pool}` is provided by `worker_pool_id` in `CreateWorkerPool` request and the value of `{location}` is determined by the endpoint accessed.",
            "type": "string"
          },
          "privatePoolV1Config": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1:PrivatePoolV1ConfigResponse",
            "description": "Legacy Private Pool configuration."
          },
          "state": {
            "description": "`WorkerPool` state.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the `WorkerPool`.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time at which the request to update the `WorkerPool` was received.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "deleteTime",
          "displayName",
          "etag",
          "name",
          "privatePoolV1Config",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1alpha1:getWorkerPool": {
      "description": "Returns information about a `WorkerPool`.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "workerPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "workerPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time at which the request to create the `WorkerPool` was received.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time at which the request to delete the `WorkerPool` was received.",
            "type": "string"
          },
          "name": {
            "description": "User-defined name of the `WorkerPool`.",
            "type": "string"
          },
          "project": {
            "description": "The project ID of the GCP project for which the `WorkerPool` is created.",
            "type": "string"
          },
          "regions": {
            "description": "List of regions to create the `WorkerPool`. Regions can't be empty. If Cloud Build adds a new GCP region in the future, the existing `WorkerPool` will not be enabled in the new region automatically; you must add the new region to the `regions` field to enable the `WorkerPool` in that region.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceAccountEmail": {
            "description": "The service account used to manage the `WorkerPool`. The service account must have the Compute Instance Admin (Beta) permission at the project level.",
            "type": "string"
          },
          "status": {
            "description": "WorkerPool Status.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time at which the request to update the `WorkerPool` was received.",
            "type": "string"
          },
          "workerConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1alpha1:WorkerConfigResponse",
            "description": "Configuration to be used for a creating workers in the `WorkerPool`."
          },
          "workerCount": {
            "description": "Total number of workers to be created across all requested regions.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "name",
          "project",
          "regions",
          "serviceAccountEmail",
          "status",
          "updateTime",
          "workerConfig",
          "workerCount"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1alpha2:getWorkerPool": {
      "description": "Returns details of a `WorkerPool`.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "workerPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "workerPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time at which the request to create the `WorkerPool` was received.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time at which the request to delete the `WorkerPool` was received.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the `WorkerPool`. Format of the name is `projects/{project_id}/workerPools/{worker_pool_id}`, where the value of {worker_pool_id} is provided in the CreateWorkerPool request.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1alpha2:NetworkConfigResponse",
            "description": "Network configuration for the `WorkerPool`."
          },
          "region": {
            "description": "Immutable. The region where the `WorkerPool` runs. Only \"us-central1\" is currently supported. Note that `region` cannot be changed once the `WorkerPool` is created.",
            "type": "string"
          },
          "state": {
            "description": "WorkerPool state.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time at which the request to update the `WorkerPool` was received.",
            "type": "string"
          },
          "workerConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1alpha2:WorkerConfigResponse",
            "description": "Worker configuration for the `WorkerPool`."
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "name",
          "networkConfig",
          "region",
          "state",
          "updateTime",
          "workerConfig"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v1beta1:getWorkerPool": {
      "description": "Returns details of a `WorkerPool`.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workerPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workerPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User specified annotations. See https://google.aip.dev/128#annotations for more details such as format and size limitations.",
            "type": "object"
          },
          "createTime": {
            "description": "Time at which the request to create the `WorkerPool` was received.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time at which the request to delete the `WorkerPool` was received.",
            "type": "string"
          },
          "displayName": {
            "description": "A user-specified, human-readable name for the `WorkerPool`. If provided, this value must be 1-63 characters.",
            "type": "string"
          },
          "etag": {
            "description": "Checksum computed by the server. May be sent on update and delete requests to ensure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the `WorkerPool`, with format `projects/{project}/locations/{location}/workerPools/{worker_pool}`. The value of `{worker_pool}` is provided by `worker_pool_id` in `CreateWorkerPool` request and the value of `{location}` is determined by the endpoint accessed.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1beta1:NetworkConfigResponse",
            "description": "Network configuration for the `WorkerPool`."
          },
          "state": {
            "description": "`WorkerPool` state.",
            "type": "string"
          },
          "uid": {
            "description": "A unique identifier for the `WorkerPool`.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time at which the request to update the `WorkerPool` was received.",
            "type": "string"
          },
          "workerConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv1beta1:WorkerConfigResponse",
            "description": "Worker configuration for the `WorkerPool`."
          }
        },
        "required": [
          "annotations",
          "createTime",
          "deleteTime",
          "displayName",
          "etag",
          "name",
          "networkConfig",
          "state",
          "uid",
          "updateTime",
          "workerConfig"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v2:getConnection": {
      "description": "Gets details of a single connection.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Allows clients to store small amounts of arbitrary data.",
            "type": "object"
          },
          "createTime": {
            "description": "Server assigned timestamp for when the connection was created.",
            "type": "string"
          },
          "disabled": {
            "description": "If disabled is set to true, functionality is disabled for this connection. Repository based API methods and webhooks processing for repositories in this connection will be disabled.",
            "type": "boolean"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "githubConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:GitHubConfigResponse",
            "description": "Configuration for connections to github.com."
          },
          "githubEnterpriseConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2GitHubEnterpriseConfigResponse",
            "description": "Configuration for connections to an instance of GitHub Enterprise."
          },
          "gitlabConfig": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:GoogleDevtoolsCloudbuildV2GitLabConfigResponse",
            "description": "Configuration for connections to gitlab.com or an instance of GitLab Enterprise."
          },
          "installationState": {
            "$ref": "#/types/google-native:cloudbuild%2Fv2:InstallationStateResponse",
            "description": "Installation state of the Connection."
          },
          "name": {
            "description": "Immutable. The resource name of the connection, in the format `projects/{project}/locations/{location}/connections/{connection_id}`.",
            "type": "string"
          },
          "reconciling": {
            "description": "Set to true when the connection is being set up or updated in the background.",
            "type": "boolean"
          },
          "updateTime": {
            "description": "Server assigned timestamp for when the connection was updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "disabled",
          "etag",
          "githubConfig",
          "githubEnterpriseConfig",
          "gitlabConfig",
          "installationState",
          "name",
          "reconciling",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v2:getConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudbuild%2Fv2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudbuild%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudbuild/v2:getRepository": {
      "description": "Gets details of a single repository.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Allows clients to store small amounts of arbitrary data.",
            "type": "object"
          },
          "createTime": {
            "description": "Server assigned timestamp for when the connection was created.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Resource name of the repository, in the format `projects/*/locations/*/connections/*/repositories/*`.",
            "type": "string"
          },
          "remoteUri": {
            "description": "Git Clone HTTPS URI.",
            "type": "string"
          },
          "updateTime": {
            "description": "Server assigned timestamp for when the connection was updated.",
            "type": "string"
          },
          "webhookId": {
            "description": "External ID of the webhook created for the repository.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "etag",
          "name",
          "remoteUri",
          "updateTime",
          "webhookId"
        ],
        "type": "object"
      }
    },
    "google-native:cloudchannel/v1:getChannelPartnerLink": {
      "description": "Returns the requested ChannelPartnerLink resource. You must be a distributor to call this method. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: ChannelPartnerLink resource not found because of an invalid channel partner link name. Return value: The ChannelPartnerLink resource.",
      "inputs": {
        "properties": {
          "accountId": {
            "type": "string"
          },
          "channelPartnerLinkId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accountId",
          "channelPartnerLinkId"
        ]
      },
      "outputs": {
        "properties": {
          "channelPartnerCloudIdentityInfo": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1CloudIdentityInfoResponse",
            "description": "Cloud Identity info of the channel partner (IR)."
          },
          "createTime": {
            "description": "Timestamp of when the channel partner link is created.",
            "type": "string"
          },
          "inviteLinkUri": {
            "description": "URI of the web page where partner accepts the link invitation.",
            "type": "string"
          },
          "linkState": {
            "description": "State of the channel partner link.",
            "type": "string"
          },
          "name": {
            "description": "Resource name for the channel partner link, in the format accounts/{account_id}/channelPartnerLinks/{id}.",
            "type": "string"
          },
          "publicId": {
            "description": "Public identifier that a customer must use to generate a transfer token to move to this distributor-reseller combination.",
            "type": "string"
          },
          "resellerCloudIdentityId": {
            "description": "Cloud Identity ID of the linked reseller.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp of when the channel partner link is updated.",
            "type": "string"
          }
        },
        "required": [
          "channelPartnerCloudIdentityInfo",
          "createTime",
          "inviteLinkUri",
          "linkState",
          "name",
          "publicId",
          "resellerCloudIdentityId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudchannel/v1:getChannelPartnerRepricingConfig": {
      "description": "Gets information about how a Distributor modifies their bill before sending it to a ChannelPartner. Possible Error Codes: * PERMISSION_DENIED: If the account making the request and the account being queried are different. * NOT_FOUND: The ChannelPartnerRepricingConfig was not found. * INTERNAL: Any non-user error related to technical issues in the backend. In this case, contact Cloud Channel support. Return Value: If successful, the ChannelPartnerRepricingConfig resource, otherwise returns an error.",
      "inputs": {
        "properties": {
          "accountId": {
            "type": "string"
          },
          "channelPartnerLinkId": {
            "type": "string"
          },
          "channelPartnerRepricingConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accountId",
          "channelPartnerLinkId",
          "channelPartnerRepricingConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Resource name of the ChannelPartnerRepricingConfig. Format: accounts/{account_id}/channelPartnerLinks/{channel_partner_id}/channelPartnerRepricingConfigs/{id}.",
            "type": "string"
          },
          "repricingConfig": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigResponse",
            "description": "The configuration for bill modifications made by a reseller before sending it to ChannelPartner."
          },
          "updateTime": {
            "description": "Timestamp of an update to the repricing rule. If `update_time` is after RepricingConfig.effective_invoice_month then it indicates this was set mid-month.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "repricingConfig",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudchannel/v1:getCustomer": {
      "description": "Returns the requested Customer resource. Possible error codes: * PERMISSION_DENIED: The reseller account making the request is different from the reseller account in the API request. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer resource doesn't exist. Usually the result of an invalid name parameter. Return value: The Customer resource.",
      "inputs": {
        "properties": {
          "accountId": {
            "type": "string"
          },
          "channelPartnerLinkId": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accountId",
          "channelPartnerLinkId",
          "customerId"
        ]
      },
      "outputs": {
        "properties": {
          "alternateEmail": {
            "description": "Secondary contact email. You need to provide an alternate email to create different domains if a primary contact email already exists. Users will receive a notification with credentials when you create an admin.google.com account. Secondary emails are also recovery email addresses. Alternate emails are optional when you create Team customers.",
            "type": "string"
          },
          "channelPartnerId": {
            "description": "Cloud Identity ID of the customer's channel partner. Populated only if a channel partner exists for this customer.",
            "type": "string"
          },
          "cloudIdentityId": {
            "description": "The customer's Cloud Identity ID if the customer has a Cloud Identity resource.",
            "type": "string"
          },
          "cloudIdentityInfo": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1CloudIdentityInfoResponse",
            "description": "Cloud Identity information for the customer. Populated only if a Cloud Identity account exists for this customer."
          },
          "correlationId": {
            "description": "Optional. External CRM ID for the customer. Populated only if a CRM ID exists for this customer.",
            "type": "string"
          },
          "createTime": {
            "description": "Time when the customer was created.",
            "type": "string"
          },
          "domain": {
            "description": "The customer's primary domain. Must match the primary contact email's domain.",
            "type": "string"
          },
          "languageCode": {
            "description": "Optional. The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the customer. Format: accounts/{account_id}/customers/{customer_id}",
            "type": "string"
          },
          "orgDisplayName": {
            "description": "Name of the organization that the customer entity represents.",
            "type": "string"
          },
          "orgPostalAddress": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleTypePostalAddressResponse",
            "description": "The organization address for the customer. To enforce US laws and embargoes, we require a region, postal code, and address lines. You must provide valid addresses for every customer. To set the customer's language, use the Customer-level language code."
          },
          "primaryContactInfo": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ContactInfoResponse",
            "description": "Primary contact info."
          },
          "updateTime": {
            "description": "Time when the customer was updated.",
            "type": "string"
          }
        },
        "required": [
          "alternateEmail",
          "channelPartnerId",
          "cloudIdentityId",
          "cloudIdentityInfo",
          "correlationId",
          "createTime",
          "domain",
          "languageCode",
          "name",
          "orgDisplayName",
          "orgPostalAddress",
          "primaryContactInfo",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudchannel/v1:getCustomerRepricingConfig": {
      "description": "Gets information about how a Reseller modifies their bill before sending it to a Customer. Possible Error Codes: * PERMISSION_DENIED: If the account making the request and the account being queried are different. * NOT_FOUND: The CustomerRepricingConfig was not found. * INTERNAL: Any non-user error related to technical issues in the backend. In this case, contact Cloud Channel support. Return Value: If successful, the CustomerRepricingConfig resource, otherwise returns an error.",
      "inputs": {
        "properties": {
          "accountId": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "customerRepricingConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accountId",
          "customerId",
          "customerRepricingConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Resource name of the CustomerRepricingConfig. Format: accounts/{account_id}/customers/{customer_id}/customerRepricingConfigs/{id}.",
            "type": "string"
          },
          "repricingConfig": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1RepricingConfigResponse",
            "description": "The configuration for bill modifications made by a reseller before sending it to customers."
          },
          "updateTime": {
            "description": "Timestamp of an update to the repricing rule. If `update_time` is after RepricingConfig.effective_invoice_month then it indicates this was set mid-month.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "repricingConfig",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudchannel/v1:getEntitlement": {
      "description": "Returns the requested Entitlement resource. Possible error codes: * PERMISSION_DENIED: The customer doesn't belong to the reseller. * INVALID_ARGUMENT: Required request parameters are missing or invalid. * NOT_FOUND: The customer entitlement was not found. Return value: The requested Entitlement resource.",
      "inputs": {
        "properties": {
          "accountId": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "entitlementId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accountId",
          "customerId",
          "entitlementId"
        ]
      },
      "outputs": {
        "properties": {
          "associationInfo": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1AssociationInfoResponse",
            "description": "Association information to other entitlements."
          },
          "billingAccount": {
            "description": "Optional. The billing account resource name that is used to pay for this entitlement.",
            "type": "string"
          },
          "commitmentSettings": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1CommitmentSettingsResponse",
            "description": "Commitment settings for a commitment-based Offer. Required for commitment based offers."
          },
          "createTime": {
            "description": "The time at which the entitlement is created.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of an entitlement in the form: accounts/{account_id}/customers/{customer_id}/entitlements/{entitlement_id}.",
            "type": "string"
          },
          "offer": {
            "description": "The offer resource name for which the entitlement is to be created. Takes the form: accounts/{account_id}/offers/{offer_id}.",
            "type": "string"
          },
          "parameters": {
            "description": "Extended entitlement parameters. When creating an entitlement, valid parameter names and values are defined in the Offer.parameter_definitions. For Google Workspace, the following Parameters may be accepted as input: - max_units: The maximum assignable units for a flexible offer OR - num_units: The total commitment for commitment-based offers The response may additionally include the following output-only Parameters: - assigned_units: The number of licenses assigned to users. For Google Cloud billing subaccounts, the following Parameter may be accepted as input: - display_name: The display name of the billing subaccount.",
            "items": {
              "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ParameterResponse"
            },
            "type": "array"
          },
          "provisionedService": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1ProvisionedServiceResponse",
            "description": "Service provisioning details for the entitlement."
          },
          "provisioningState": {
            "description": "Current provisioning state of the entitlement.",
            "type": "string"
          },
          "purchaseOrderId": {
            "description": "Optional. This purchase order (PO) information is for resellers to use for their company tracking usage. If a purchaseOrderId value is given, it appears in the API responses and shows up in the invoice. The property accepts up to 80 plain text characters. This is only supported for Google Workspace entitlements.",
            "type": "string"
          },
          "suspensionReasons": {
            "description": "Enumerable of all current suspension reasons for an entitlement.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "trialSettings": {
            "$ref": "#/types/google-native:cloudchannel%2Fv1:GoogleCloudChannelV1TrialSettingsResponse",
            "description": "Settings for trial offers."
          },
          "updateTime": {
            "description": "The time at which the entitlement is updated.",
            "type": "string"
          }
        },
        "required": [
          "associationInfo",
          "billingAccount",
          "commitmentSettings",
          "createTime",
          "name",
          "offer",
          "parameters",
          "provisionedService",
          "provisioningState",
          "purchaseOrderId",
          "suspensionReasons",
          "trialSettings",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:clouddeploy/v1:getAutomation": {
      "description": "Gets details of a single Automation.",
      "inputs": {
        "properties": {
          "automationId": {
            "type": "string"
          },
          "deliveryPipelineId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "automationId",
          "deliveryPipelineId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. Annotations must meet the following constraints: * Annotations are key/value pairs. * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (`/`). * The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. * The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots(`.`), not longer than 253 characters in total, followed by a slash (`/`). See https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set for more details.",
            "type": "object"
          },
          "createTime": {
            "description": "Time at which the automation was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the `Automation`. Max length is 255 characters.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. The weak etag of the `Automation` resource. This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be \u003c= 63 characters.",
            "type": "object"
          },
          "name": {
            "description": "Name of the `Automation`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}/automations/{automation}`.",
            "type": "string"
          },
          "rules": {
            "description": "List of Automation rules associated with the Automation resource. Must have at least one rule and limited to 250 rules per Delivery Pipeline. Note: the order of the rules here is not the same as the order of execution.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationRuleResponse"
            },
            "type": "array"
          },
          "selector": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AutomationResourceSelectorResponse",
            "description": "Selected resources to which the automation will be applied."
          },
          "serviceAccount": {
            "description": "Email address of the user-managed IAM service account that creates Cloud Deploy release and rollout resources.",
            "type": "string"
          },
          "suspended": {
            "description": "Optional. When Suspended, automation is deactivated from execution.",
            "type": "boolean"
          },
          "uid": {
            "description": "Unique identifier of the `Automation`.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time at which the automation was updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "rules",
          "selector",
          "serviceAccount",
          "suspended",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:clouddeploy/v1:getDeliveryPipeline": {
      "description": "Gets details of a single DeliveryPipeline.",
      "inputs": {
        "properties": {
          "deliveryPipelineId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deliveryPipelineId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy.",
            "type": "object"
          },
          "condition": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:PipelineConditionResponse",
            "description": "Information around the state of the Delivery Pipeline."
          },
          "createTime": {
            "description": "Time at which the pipeline was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the `DeliveryPipeline`. Max length is 255 characters.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be \u003c= 128 bytes.",
            "type": "object"
          },
          "name": {
            "description": "Optional. Name of the `DeliveryPipeline`. Format is `projects/{project}/locations/{location}/deliveryPipelines/a-z{0,62}`.",
            "type": "string"
          },
          "serialPipeline": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:SerialPipelineResponse",
            "description": "SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`."
          },
          "suspended": {
            "description": "When suspended, no new releases or rollouts can be created, but in-progress ones will complete.",
            "type": "boolean"
          },
          "uid": {
            "description": "Unique identifier of the `DeliveryPipeline`.",
            "type": "string"
          },
          "updateTime": {
            "description": "Most recent time at which the pipeline was updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "condition",
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "serialPipeline",
          "suspended",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:clouddeploy/v1:getDeliveryPipelineIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "deliveryPipelineId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deliveryPipelineId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:clouddeploy/v1:getRelease": {
      "description": "Gets details of a single Release.",
      "inputs": {
        "properties": {
          "deliveryPipelineId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "releaseId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deliveryPipelineId",
          "location",
          "releaseId"
        ]
      },
      "outputs": {
        "properties": {
          "abandoned": {
            "description": "Indicates whether this is an abandoned release.",
            "type": "boolean"
          },
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations.",
            "type": "object"
          },
          "buildArtifacts": {
            "description": "List of artifacts to pass through to Skaffold command.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:BuildArtifactResponse"
            },
            "type": "array"
          },
          "condition": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:ReleaseConditionResponse",
            "description": "Information around the state of the Release."
          },
          "createTime": {
            "description": "Time at which the `Release` was created.",
            "type": "string"
          },
          "deliveryPipelineSnapshot": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:DeliveryPipelineResponse",
            "description": "Snapshot of the parent pipeline taken at release creation time."
          },
          "deployParameters": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The deploy parameters to use for all targets in this release.",
            "type": "object"
          },
          "description": {
            "description": "Description of the `Release`. Max length is 255 characters.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be \u003c= 128 bytes.",
            "type": "object"
          },
          "name": {
            "description": "Optional. Name of the `Release`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/a-z{0,62}`.",
            "type": "string"
          },
          "renderEndTime": {
            "description": "Time at which the render completed.",
            "type": "string"
          },
          "renderStartTime": {
            "description": "Time at which the render began.",
            "type": "string"
          },
          "renderState": {
            "description": "Current state of the render operation.",
            "type": "string"
          },
          "skaffoldConfigPath": {
            "description": "Filepath of the Skaffold config inside of the config URI.",
            "type": "string"
          },
          "skaffoldConfigUri": {
            "description": "Cloud Storage URI of tar.gz archive containing Skaffold configuration.",
            "type": "string"
          },
          "skaffoldVersion": {
            "description": "The Skaffold version to use when operating on this release, such as \"1.20.0\". Not all versions are valid; Cloud Deploy supports a specific set of versions. If unset, the most recent supported Skaffold version will be used.",
            "type": "string"
          },
          "targetArtifacts": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map from target ID to the target artifacts created during the render operation.",
            "type": "object"
          },
          "targetRenders": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map from target ID to details of the render operation for that target.",
            "type": "object"
          },
          "targetSnapshots": {
            "description": "Snapshot of the targets taken at release creation time.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:TargetResponse"
            },
            "type": "array"
          },
          "uid": {
            "description": "Unique identifier of the `Release`.",
            "type": "string"
          }
        },
        "required": [
          "abandoned",
          "annotations",
          "buildArtifacts",
          "condition",
          "createTime",
          "deliveryPipelineSnapshot",
          "deployParameters",
          "description",
          "etag",
          "labels",
          "name",
          "renderEndTime",
          "renderStartTime",
          "renderState",
          "skaffoldConfigPath",
          "skaffoldConfigUri",
          "skaffoldVersion",
          "targetArtifacts",
          "targetRenders",
          "targetSnapshots",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:clouddeploy/v1:getRollout": {
      "description": "Gets details of a single Rollout.",
      "inputs": {
        "properties": {
          "deliveryPipelineId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "releaseId": {
            "type": "string"
          },
          "rolloutId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deliveryPipelineId",
          "location",
          "releaseId",
          "rolloutId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations.",
            "type": "object"
          },
          "approvalState": {
            "description": "Approval state of the `Rollout`.",
            "type": "string"
          },
          "approveTime": {
            "description": "Time at which the `Rollout` was approved.",
            "type": "string"
          },
          "controllerRollout": {
            "description": "Name of the `ControllerRollout`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/a-z{0,62}`.",
            "type": "string"
          },
          "createTime": {
            "description": "Time at which the `Rollout` was created.",
            "type": "string"
          },
          "deployEndTime": {
            "description": "Time at which the `Rollout` finished deploying.",
            "type": "string"
          },
          "deployFailureCause": {
            "description": "The reason this rollout failed. This will always be unspecified while the rollout is in progress.",
            "type": "string"
          },
          "deployStartTime": {
            "description": "Time at which the `Rollout` started deploying.",
            "type": "string"
          },
          "deployingBuild": {
            "description": "The resource name of the Cloud Build `Build` object that is used to deploy the Rollout. Format is `projects/{project}/locations/{location}/builds/{build}`.",
            "type": "string"
          },
          "description": {
            "description": "Description of the `Rollout` for user purposes. Max length is 255 characters.",
            "type": "string"
          },
          "enqueueTime": {
            "description": "Time at which the `Rollout` was enqueued.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "failureReason": {
            "description": "Additional information about the rollout failure, if available.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be \u003c= 128 bytes.",
            "type": "object"
          },
          "metadata": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:MetadataResponse",
            "description": "Metadata contains information about the rollout."
          },
          "name": {
            "description": "Optional. Name of the `Rollout`. Format is `projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/releases/{release}/rollouts/a-z{0,62}`.",
            "type": "string"
          },
          "phases": {
            "description": "The phases that represent the workflows of this `Rollout`.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:PhaseResponse"
            },
            "type": "array"
          },
          "rollbackOfRollout": {
            "description": "Name of the `Rollout` that is rolled back by this `Rollout`. Empty if this `Rollout` wasn't created as a rollback.",
            "type": "string"
          },
          "rolledBackByRollouts": {
            "description": "Names of `Rollouts` that rolled back this `Rollout`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "Current state of the `Rollout`.",
            "type": "string"
          },
          "targetId": {
            "description": "The ID of Target to which this `Rollout` is deploying.",
            "type": "string"
          },
          "uid": {
            "description": "Unique identifier of the `Rollout`.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "approvalState",
          "approveTime",
          "controllerRollout",
          "createTime",
          "deployEndTime",
          "deployFailureCause",
          "deployStartTime",
          "deployingBuild",
          "description",
          "enqueueTime",
          "etag",
          "failureReason",
          "labels",
          "metadata",
          "name",
          "phases",
          "rollbackOfRollout",
          "rolledBackByRollouts",
          "state",
          "targetId",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:clouddeploy/v1:getTarget": {
      "description": "Gets details of a single Target.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "targetId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "targetId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User annotations. These attributes can only be set and used by the user, and not by Cloud Deploy. See https://google.aip.dev/128#annotations for more details such as format and size limitations.",
            "type": "object"
          },
          "anthosCluster": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:AnthosClusterResponse",
            "description": "Optional. Information specifying an Anthos Cluster."
          },
          "createTime": {
            "description": "Time at which the `Target` was created.",
            "type": "string"
          },
          "deployParameters": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The deploy parameters to use for this target.",
            "type": "object"
          },
          "description": {
            "description": "Optional. Description of the `Target`. Max length is 255 characters.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "executionConfigs": {
            "description": "Configurations for all execution that relates to this `Target`. Each `ExecutionEnvironmentUsage` value may only be used in a single configuration; using the same value multiple times is an error. When one or more configurations are specified, they must include the `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values. When no configurations are specified, execution will use the default specified in `DefaultPool`.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:ExecutionConfigResponse"
            },
            "type": "array"
          },
          "gke": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:GkeClusterResponse",
            "description": "Optional. Information specifying a GKE Cluster."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels are attributes that can be set and used by both the user and by Cloud Deploy. Labels must meet the following constraints: * Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. * All characters must use UTF-8 encoding, and international characters are allowed. * Keys must start with a lowercase letter or international character. * Each resource is limited to a maximum of 64 labels. Both keys and values are additionally constrained to be \u003c= 128 bytes.",
            "type": "object"
          },
          "multiTarget": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:MultiTargetResponse",
            "description": "Optional. Information specifying a multiTarget."
          },
          "name": {
            "description": "Optional. Name of the `Target`. Format is `projects/{project}/locations/{location}/targets/a-z{0,62}`.",
            "type": "string"
          },
          "requireApproval": {
            "description": "Optional. Whether or not the `Target` requires approval.",
            "type": "boolean"
          },
          "run": {
            "$ref": "#/types/google-native:clouddeploy%2Fv1:CloudRunLocationResponse",
            "description": "Optional. Information specifying a Cloud Run deployment target."
          },
          "targetId": {
            "description": "Resource id of the `Target`.",
            "type": "string"
          },
          "uid": {
            "description": "Unique identifier of the `Target`.",
            "type": "string"
          },
          "updateTime": {
            "description": "Most recent time at which the `Target` was updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "anthosCluster",
          "createTime",
          "deployParameters",
          "description",
          "etag",
          "executionConfigs",
          "gke",
          "labels",
          "multiTarget",
          "name",
          "requireApproval",
          "run",
          "targetId",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:clouddeploy/v1:getTargetIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "targetId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "targetId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:clouddeploy%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudfunctions/v1:getFunction": {
      "description": "Returns a function with the given name from the requested project.",
      "inputs": {
        "properties": {
          "functionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "functionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "availableMemoryMb": {
            "description": "The amount of memory in MB available for a function. Defaults to 256MB.",
            "type": "integer"
          },
          "buildEnvironmentVariables": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Build environment variables that shall be available during build time.",
            "type": "object"
          },
          "buildId": {
            "description": "The Cloud Build ID of the latest successful deployment of the function.",
            "type": "string"
          },
          "buildName": {
            "description": "The Cloud Build Name of the function deployment. `projects//locations//builds/`.",
            "type": "string"
          },
          "buildWorkerPool": {
            "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the 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. If the project id is not the same as the function, then the Cloud Functions Service Agent (`service-@gcf-admin-robot.iam.gserviceaccount.com`) must be granted the role Cloud Build Custom Workers Builder (`roles/cloudbuild.customworkers.builder`) in the project.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of a function.",
            "type": "string"
          },
          "dockerRegistry": {
            "description": "Docker Registry to use for this deployment. If `docker_repository` field is specified, this field will be automatically set as `ARTIFACT_REGISTRY`. If unspecified, it currently defaults to `CONTAINER_REGISTRY`. This field may be overridden by the backend for eligible deployments.",
            "type": "string"
          },
          "dockerRepository": {
            "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key. If specified, deployments will use Artifact Registry. If unspecified and the deployment is eligible to use Artifact Registry, GCF will create and use a repository named 'gcf-artifacts' for every deployed region. This is the repository to which the function docker image will be pushed after it is built by Cloud Build. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'.",
            "type": "string"
          },
          "entryPoint": {
            "description": "The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix (ID of the function), if not specified.",
            "type": "string"
          },
          "environmentVariables": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables that shall be available during function execution.",
            "type": "object"
          },
          "eventTrigger": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:EventTriggerResponse",
            "description": "A source that fires events in response to a condition in another service."
          },
          "httpsTrigger": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:HttpsTriggerResponse",
            "description": "An HTTPS endpoint type of source that can be triggered via URL."
          },
          "ingressSettings": {
            "description": "The ingress settings for the function, controlling what traffic can reach it.",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`. If specified, you must also provide an artifact registry repository using the `docker_repository` field that was created with the same KMS crypto key. The following service accounts need to be granted the role 'Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter)' on the Key/KeyRing/Project/Organization (least access preferred). 1. Google Cloud Functions service account (service-{project_number}@gcf-admin-robot.iam.gserviceaccount.com) - Required to protect the function's image. 2. Google Storage service account (service-{project_number}@gs-project-accounts.iam.gserviceaccount.com) - Required to protect the function's source code. If this service account does not exist, deploying a function without a KMS key or retrieving the service agent name provisions it. For more information, see https://cloud.google.com/storage/docs/projects#service-agents and https://cloud.google.com/storage/docs/getting-service-agent#gsutil. Google Cloud Functions delegates access to service agents to protect function resources in internal projects that are not accessible by the end user.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels associated with this Cloud Function.",
            "type": "object"
          },
          "maxInstances": {
            "description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details.",
            "type": "integer"
          },
          "minInstances": {
            "description": "A lower bound for the number function instances that may coexist at a given time.",
            "type": "integer"
          },
          "name": {
            "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
            "type": "string"
          },
          "network": {
            "deprecationMessage": "Deprecated: use vpc_connector",
            "description": "Deprecated: use vpc_connector",
            "type": "string"
          },
          "runtime": {
            "description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime).",
            "type": "string"
          },
          "secretEnvironmentVariables": {
            "description": "Secret environment variables configuration.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv1:SecretEnvVarResponse"
            },
            "type": "array"
          },
          "secretVolumes": {
            "description": "Secret volumes configuration.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv1:SecretVolumeResponse"
            },
            "type": "array"
          },
          "serviceAccountEmail": {
            "description": "The email of the function's service account. If empty, defaults to `{project_id}@appspot.gserviceaccount.com`.",
            "type": "string"
          },
          "sourceArchiveUrl": {
            "description": "The Google Cloud Storage URL, starting with `gs://`, pointing to the zip archive which contains the function.",
            "type": "string"
          },
          "sourceRepository": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv1:SourceRepositoryResponse",
            "description": "**Beta Feature** The source repository where a function is hosted."
          },
          "sourceToken": {
            "description": "Input only. An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments.",
            "type": "string"
          },
          "sourceUploadUrl": {
            "description": "The Google Cloud Storage signed URL used for source uploading, generated by calling [google.cloud.functions.v1.GenerateUploadUrl]. The signature is validated on write methods (Create, Update) The signature is stripped from the Function object on read methods (Get, List)",
            "type": "string"
          },
          "status": {
            "description": "Status of the function deployment.",
            "type": "string"
          },
          "timeout": {
            "description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of a Cloud Function.",
            "type": "string"
          },
          "versionId": {
            "description": "The version identifier of the Cloud Function. Each deployment attempt results in a new version of a function being created.",
            "type": "string"
          },
          "vpcConnector": {
            "description": "The VPC Network Connector that this cloud function can connect to. It can be either the fully-qualified URI, or the short name of the network connector resource. The format of this field is `projects/*/locations/*/connectors/*` This field is mutually exclusive with `network` field and will eventually replace it. See [the VPC documentation](https://cloud.google.com/compute/docs/vpc) for more information on connecting Cloud projects.",
            "type": "string"
          },
          "vpcConnectorEgressSettings": {
            "description": "The egress settings for the connector, controlling what traffic is diverted through it.",
            "type": "string"
          }
        },
        "required": [
          "availableMemoryMb",
          "buildEnvironmentVariables",
          "buildId",
          "buildName",
          "buildWorkerPool",
          "description",
          "dockerRegistry",
          "dockerRepository",
          "entryPoint",
          "environmentVariables",
          "eventTrigger",
          "httpsTrigger",
          "ingressSettings",
          "kmsKeyName",
          "labels",
          "maxInstances",
          "minInstances",
          "name",
          "network",
          "runtime",
          "secretEnvironmentVariables",
          "secretVolumes",
          "serviceAccountEmail",
          "sourceArchiveUrl",
          "sourceRepository",
          "sourceToken",
          "sourceUploadUrl",
          "status",
          "timeout",
          "updateTime",
          "versionId",
          "vpcConnector",
          "vpcConnectorEgressSettings"
        ],
        "type": "object"
      }
    },
    "google-native:cloudfunctions/v1:getFunctionIamPolicy": {
      "description": "Gets the IAM access control policy for a function. Returns an empty policy if the function exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "functionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "functionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudfunctions/v2:getFunction": {
      "description": "Returns a function with the given name from the requested project.",
      "inputs": {
        "properties": {
          "functionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "functionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "buildConfig": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:BuildConfigResponse",
            "description": "Describes the Build step of the function that builds a container from the given source."
          },
          "description": {
            "description": "User-provided description of a function.",
            "type": "string"
          },
          "environment": {
            "description": "Describe whether the function is 1st Gen or 2nd Gen.",
            "type": "string"
          },
          "eventTrigger": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:EventTriggerResponse",
            "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
          },
          "kmsKeyName": {
            "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels associated with this Cloud Function.",
            "type": "object"
          },
          "name": {
            "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "serviceConfig": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2:ServiceConfigResponse",
            "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
          },
          "state": {
            "description": "State of the function.",
            "type": "string"
          },
          "stateMessages": {
            "description": "State Messages for this Cloud Function.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2:GoogleCloudFunctionsV2StateMessageResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update timestamp of a Cloud Function.",
            "type": "string"
          },
          "url": {
            "description": "The deployed url for the function.",
            "type": "string"
          }
        },
        "required": [
          "buildConfig",
          "description",
          "environment",
          "eventTrigger",
          "kmsKeyName",
          "labels",
          "name",
          "satisfiesPzs",
          "serviceConfig",
          "state",
          "stateMessages",
          "updateTime",
          "url"
        ],
        "type": "object"
      }
    },
    "google-native:cloudfunctions/v2:getFunctionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "functionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "functionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudfunctions/v2alpha:getFunction": {
      "description": "Returns a function with the given name from the requested project.",
      "inputs": {
        "properties": {
          "functionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "functionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "buildConfig": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:BuildConfigResponse",
            "description": "Describes the Build step of the function that builds a container from the given source."
          },
          "description": {
            "description": "User-provided description of a function.",
            "type": "string"
          },
          "environment": {
            "description": "Describe whether the function is 1st Gen or 2nd Gen.",
            "type": "string"
          },
          "eventTrigger": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:EventTriggerResponse",
            "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
          },
          "kmsKeyName": {
            "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels associated with this Cloud Function.",
            "type": "object"
          },
          "name": {
            "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "serviceConfig": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:ServiceConfigResponse",
            "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
          },
          "state": {
            "description": "State of the function.",
            "type": "string"
          },
          "stateMessages": {
            "description": "State Messages for this Cloud Function.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:GoogleCloudFunctionsV2alphaStateMessageResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update timestamp of a Cloud Function.",
            "type": "string"
          },
          "url": {
            "description": "The deployed url for the function.",
            "type": "string"
          }
        },
        "required": [
          "buildConfig",
          "description",
          "environment",
          "eventTrigger",
          "kmsKeyName",
          "labels",
          "name",
          "satisfiesPzs",
          "serviceConfig",
          "state",
          "stateMessages",
          "updateTime",
          "url"
        ],
        "type": "object"
      }
    },
    "google-native:cloudfunctions/v2alpha:getFunctionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "functionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "functionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudfunctions/v2beta:getFunction": {
      "description": "Returns a function with the given name from the requested project.",
      "inputs": {
        "properties": {
          "functionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "functionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "buildConfig": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:BuildConfigResponse",
            "description": "Describes the Build step of the function that builds a container from the given source."
          },
          "description": {
            "description": "User-provided description of a function.",
            "type": "string"
          },
          "environment": {
            "description": "Describe whether the function is 1st Gen or 2nd Gen.",
            "type": "string"
          },
          "eventTrigger": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:EventTriggerResponse",
            "description": "An Eventarc trigger managed by Google Cloud Functions that fires events in response to a condition in another service."
          },
          "kmsKeyName": {
            "description": "[Preview] Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels associated with this Cloud Function.",
            "type": "object"
          },
          "name": {
            "description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "serviceConfig": {
            "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:ServiceConfigResponse",
            "description": "Describes the Service being deployed. Currently deploys services to Cloud Run (fully managed)."
          },
          "state": {
            "description": "State of the function.",
            "type": "string"
          },
          "stateMessages": {
            "description": "State Messages for this Cloud Function.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:GoogleCloudFunctionsV2betaStateMessageResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update timestamp of a Cloud Function.",
            "type": "string"
          },
          "url": {
            "description": "The deployed url for the function.",
            "type": "string"
          }
        },
        "required": [
          "buildConfig",
          "description",
          "environment",
          "eventTrigger",
          "kmsKeyName",
          "labels",
          "name",
          "satisfiesPzs",
          "serviceConfig",
          "state",
          "stateMessages",
          "updateTime",
          "url"
        ],
        "type": "object"
      }
    },
    "google-native:cloudfunctions/v2beta:getFunctionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "functionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "functionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudfunctions%2Fv2beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1:getDevice": {
      "description": "Retrieves the specified device.",
      "inputs": {
        "properties": {
          "customer": {
            "type": "string"
          },
          "deviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deviceId"
        ]
      },
      "outputs": {
        "properties": {
          "androidSpecificAttributes": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:GoogleAppsCloudidentityDevicesV1AndroidAttributesResponse",
            "description": "Attributes specific to Android devices."
          },
          "assetTag": {
            "description": "Asset tag of the device.",
            "type": "string"
          },
          "basebandVersion": {
            "description": "Baseband version of the device.",
            "type": "string"
          },
          "bootloaderVersion": {
            "description": "Device bootloader version. Example: 0.6.7.",
            "type": "string"
          },
          "brand": {
            "description": "Device brand. Example: Samsung.",
            "type": "string"
          },
          "buildNumber": {
            "description": "Build number of the device.",
            "type": "string"
          },
          "compromisedState": {
            "description": "Represents whether the Device is compromised.",
            "type": "string"
          },
          "createTime": {
            "description": "When the Company-Owned device was imported. This field is empty for BYOD devices.",
            "type": "string"
          },
          "deviceId": {
            "description": "Unique identifier for the device.",
            "type": "string"
          },
          "deviceType": {
            "description": "Type of device.",
            "type": "string"
          },
          "enabledDeveloperOptions": {
            "description": "Whether developer options is enabled on device.",
            "type": "boolean"
          },
          "enabledUsbDebugging": {
            "description": "Whether USB debugging is enabled on device.",
            "type": "boolean"
          },
          "encryptionState": {
            "description": "Device encryption state.",
            "type": "string"
          },
          "hostname": {
            "description": "Host name of the device.",
            "type": "string"
          },
          "imei": {
            "description": "IMEI number of device if GSM device; empty otherwise.",
            "type": "string"
          },
          "kernelVersion": {
            "description": "Kernel version of the device.",
            "type": "string"
          },
          "lastSyncTime": {
            "description": "Most recent time when device synced with this service.",
            "type": "string"
          },
          "managementState": {
            "description": "Management state of the device",
            "type": "string"
          },
          "manufacturer": {
            "description": "Device manufacturer. Example: Motorola.",
            "type": "string"
          },
          "meid": {
            "description": "MEID number of device if CDMA device; empty otherwise.",
            "type": "string"
          },
          "model": {
            "description": "Model name of device. Example: Pixel 3.",
            "type": "string"
          },
          "name": {
            "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique id assigned to the Device.",
            "type": "string"
          },
          "networkOperator": {
            "description": "Mobile or network operator of device, if available.",
            "type": "string"
          },
          "osVersion": {
            "description": "OS version of the device. Example: Android 8.1.0.",
            "type": "string"
          },
          "otherAccounts": {
            "description": "Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account's domain has only one account. Examples: \"com.example\", \"xyz.com\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ownerType": {
            "description": "Whether the device is owned by the company or an individual",
            "type": "string"
          },
          "releaseVersion": {
            "description": "OS release version. Example: 6.0.",
            "type": "string"
          },
          "securityPatchTime": {
            "description": "OS security patch update time on device.",
            "type": "string"
          },
          "serialNumber": {
            "description": "Serial Number of device. Example: HT82V1A01076.",
            "type": "string"
          },
          "wifiMacAddresses": {
            "description": "WiFi MAC addresses of device.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "androidSpecificAttributes",
          "assetTag",
          "basebandVersion",
          "bootloaderVersion",
          "brand",
          "buildNumber",
          "compromisedState",
          "createTime",
          "deviceId",
          "deviceType",
          "enabledDeveloperOptions",
          "enabledUsbDebugging",
          "encryptionState",
          "hostname",
          "imei",
          "kernelVersion",
          "lastSyncTime",
          "managementState",
          "manufacturer",
          "meid",
          "model",
          "name",
          "networkOperator",
          "osVersion",
          "otherAccounts",
          "ownerType",
          "releaseVersion",
          "securityPatchTime",
          "serialNumber",
          "wifiMacAddresses"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1:getGroup": {
      "description": "Retrieves a `Group`.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId"
        ]
      },
      "outputs": {
        "properties": {
          "additionalGroupKeys": {
            "description": "Additional group keys associated with the Group.",
            "items": {
              "$ref": "#/types/google-native:cloudidentity%2Fv1:EntityKeyResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The time when the `Group` was created.",
            "type": "string"
          },
          "description": {
            "description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the `Group`.",
            "type": "string"
          },
          "dynamicGroupMetadata": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:DynamicGroupMetadataResponse",
            "description": "Optional. Dynamic group metadata like queries and status."
          },
          "groupKey": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:EntityKeyResponse",
            "description": "The `EntityKey` of the `Group`."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value.",
            "type": "object"
          },
          "name": {
            "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group}`.",
            "type": "string"
          },
          "parent": {
            "description": "Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the `Group` was last updated.",
            "type": "string"
          }
        },
        "required": [
          "additionalGroupKeys",
          "createTime",
          "description",
          "displayName",
          "dynamicGroupMetadata",
          "groupKey",
          "labels",
          "name",
          "parent",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1:getInboundSamlSsoProfile": {
      "description": "Gets an InboundSamlSsoProfile.",
      "inputs": {
        "properties": {
          "inboundSamlSsoProfileId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "inboundSamlSsoProfileId"
        ]
      },
      "outputs": {
        "properties": {
          "customer": {
            "description": "Immutable. The customer. For example: `customers/C0123abc`.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable name of the SAML SSO profile.",
            "type": "string"
          },
          "idpConfig": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlIdpConfigResponse",
            "description": "SAML identity provider configuration."
          },
          "name": {
            "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.",
            "type": "string"
          },
          "spConfig": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlSpConfigResponse",
            "description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
          }
        },
        "required": [
          "customer",
          "displayName",
          "idpConfig",
          "name",
          "spConfig"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1:getInboundSsoAssignment": {
      "description": "Gets an InboundSsoAssignment.",
      "inputs": {
        "properties": {
          "inboundSsoAssignmentId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "inboundSsoAssignmentId"
        ]
      },
      "outputs": {
        "properties": {
          "customer": {
            "description": "Immutable. The customer. For example: `customers/C0123abc`.",
            "type": "string"
          },
          "name": {
            "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.",
            "type": "string"
          },
          "rank": {
            "description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set.",
            "type": "integer"
          },
          "samlSsoInfo": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:SamlSsoInfoResponse",
            "description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
          },
          "signInBehavior": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:SignInBehaviorResponse",
            "description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration."
          },
          "ssoMode": {
            "description": "Inbound SSO behavior.",
            "type": "string"
          },
          "targetGroup": {
            "description": "Immutable. Must be of the form `groups/{group}`.",
            "type": "string"
          },
          "targetOrgUnit": {
            "description": "Immutable. Must be of the form `orgUnits/{org_unit}`.",
            "type": "string"
          }
        },
        "required": [
          "customer",
          "name",
          "rank",
          "samlSsoInfo",
          "signInBehavior",
          "ssoMode",
          "targetGroup",
          "targetOrgUnit"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1:getMembership": {
      "description": "Retrieves a `Membership`.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the `Membership` was created.",
            "type": "string"
          },
          "deliverySetting": {
            "description": "Delivery setting associated with the membership.",
            "type": "string"
          },
          "name": {
            "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group}/memberships/{membership}`.",
            "type": "string"
          },
          "preferredMemberKey": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1:EntityKeyResponse",
            "description": "Immutable. The `EntityKey` of the member."
          },
          "roles": {
            "description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`.",
            "items": {
              "$ref": "#/types/google-native:cloudidentity%2Fv1:MembershipRoleResponse"
            },
            "type": "array"
          },
          "type": {
            "description": "The type of the membership.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the `Membership` was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deliverySetting",
          "name",
          "preferredMemberKey",
          "roles",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1beta1:getDevice": {
      "description": "Retrieves the specified device.",
      "inputs": {
        "properties": {
          "customer": {
            "type": "string"
          },
          "deviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deviceId"
        ]
      },
      "outputs": {
        "properties": {
          "androidSpecificAttributes": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:AndroidAttributesResponse",
            "description": "Attributes specific to Android devices."
          },
          "assetTag": {
            "description": "Asset tag of the device.",
            "type": "string"
          },
          "basebandVersion": {
            "description": "Baseband version of the device.",
            "type": "string"
          },
          "bootloaderVersion": {
            "description": "Device bootloader version. Example: 0.6.7.",
            "type": "string"
          },
          "brand": {
            "description": "Device brand. Example: Samsung.",
            "type": "string"
          },
          "buildNumber": {
            "description": "Build number of the device.",
            "type": "string"
          },
          "clientTypes": {
            "description": "List of the clients the device is reporting to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "compromisedState": {
            "description": "Represents whether the Device is compromised.",
            "type": "string"
          },
          "createTime": {
            "description": "When the Company-Owned device was imported. This field is empty for BYOD devices.",
            "type": "string"
          },
          "deviceId": {
            "description": "Unique identifier for the device.",
            "type": "string"
          },
          "deviceType": {
            "description": "Type of device.",
            "type": "string"
          },
          "enabledDeveloperOptions": {
            "description": "Whether developer options is enabled on device.",
            "type": "boolean"
          },
          "enabledUsbDebugging": {
            "description": "Whether USB debugging is enabled on device.",
            "type": "boolean"
          },
          "encryptionState": {
            "description": "Device encryption state.",
            "type": "string"
          },
          "endpointVerificationSpecificAttributes": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EndpointVerificationSpecificAttributesResponse",
            "description": "Attributes specific to Endpoint Verification devices."
          },
          "hostname": {
            "description": "Host name of the device.",
            "type": "string"
          },
          "imei": {
            "description": "IMEI number of device if GSM device; empty otherwise.",
            "type": "string"
          },
          "kernelVersion": {
            "description": "Kernel version of the device.",
            "type": "string"
          },
          "lastSyncTime": {
            "description": "Most recent time when device synced with this service.",
            "type": "string"
          },
          "managementState": {
            "description": "Management state of the device",
            "type": "string"
          },
          "manufacturer": {
            "description": "Device manufacturer. Example: Motorola.",
            "type": "string"
          },
          "meid": {
            "description": "MEID number of device if CDMA device; empty otherwise.",
            "type": "string"
          },
          "model": {
            "description": "Model name of device. Example: Pixel 3.",
            "type": "string"
          },
          "name": {
            "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique id assigned to the Device.",
            "type": "string"
          },
          "networkOperator": {
            "description": "Mobile or network operator of device, if available.",
            "type": "string"
          },
          "osVersion": {
            "description": "OS version of the device. Example: Android 8.1.0.",
            "type": "string"
          },
          "otherAccounts": {
            "description": "Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account's domain has only one account. Examples: \"com.example\", \"xyz.com\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ownerType": {
            "description": "Whether the device is owned by the company or an individual",
            "type": "string"
          },
          "releaseVersion": {
            "description": "OS release version. Example: 6.0.",
            "type": "string"
          },
          "securityPatchTime": {
            "description": "OS security patch update time on device.",
            "type": "string"
          },
          "serialNumber": {
            "description": "Serial Number of device. Example: HT82V1A01076.",
            "type": "string"
          },
          "wifiMacAddresses": {
            "description": "WiFi MAC addresses of device.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "androidSpecificAttributes",
          "assetTag",
          "basebandVersion",
          "bootloaderVersion",
          "brand",
          "buildNumber",
          "clientTypes",
          "compromisedState",
          "createTime",
          "deviceId",
          "deviceType",
          "enabledDeveloperOptions",
          "enabledUsbDebugging",
          "encryptionState",
          "endpointVerificationSpecificAttributes",
          "hostname",
          "imei",
          "kernelVersion",
          "lastSyncTime",
          "managementState",
          "manufacturer",
          "meid",
          "model",
          "name",
          "networkOperator",
          "osVersion",
          "otherAccounts",
          "ownerType",
          "releaseVersion",
          "securityPatchTime",
          "serialNumber",
          "wifiMacAddresses"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1beta1:getGroup": {
      "description": "Retrieves a `Group`.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId"
        ]
      },
      "outputs": {
        "properties": {
          "additionalGroupKeys": {
            "description": "Additional group keys associated with the Group.",
            "items": {
              "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKeyResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The time when the `Group` was created.",
            "type": "string"
          },
          "description": {
            "description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the `Group`.",
            "type": "string"
          },
          "dynamicGroupMetadata": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:DynamicGroupMetadataResponse",
            "description": "Optional. Dynamic group metadata like queries and status."
          },
          "groupKey": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKeyResponse",
            "description": "The `EntityKey` of the `Group`."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value.",
            "type": "object"
          },
          "name": {
            "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group_id}`.",
            "type": "string"
          },
          "parent": {
            "description": "Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)",
            "type": "string"
          },
          "posixGroups": {
            "description": "Optional. The POSIX groups associated with the `Group`.",
            "items": {
              "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:PosixGroupResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The time when the `Group` was last updated.",
            "type": "string"
          }
        },
        "required": [
          "additionalGroupKeys",
          "createTime",
          "description",
          "displayName",
          "dynamicGroupMetadata",
          "groupKey",
          "labels",
          "name",
          "parent",
          "posixGroups",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1beta1:getInboundSamlSsoProfile": {
      "description": "Gets an InboundSamlSsoProfile.",
      "inputs": {
        "properties": {
          "inboundSamlSsoProfileId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "inboundSamlSsoProfileId"
        ]
      },
      "outputs": {
        "properties": {
          "customer": {
            "description": "Immutable. The customer. For example: `customers/C0123abc`.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable name of the SAML SSO profile.",
            "type": "string"
          },
          "idpConfig": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlIdpConfigResponse",
            "description": "SAML identity provider configuration."
          },
          "name": {
            "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.",
            "type": "string"
          },
          "spConfig": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlSpConfigResponse",
            "description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
          }
        },
        "required": [
          "customer",
          "displayName",
          "idpConfig",
          "name",
          "spConfig"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1beta1:getInboundSsoAssignment": {
      "description": "Gets an InboundSsoAssignment.",
      "inputs": {
        "properties": {
          "inboundSsoAssignmentId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "inboundSsoAssignmentId"
        ]
      },
      "outputs": {
        "properties": {
          "customer": {
            "description": "Immutable. The customer. For example: `customers/C0123abc`.",
            "type": "string"
          },
          "name": {
            "description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.",
            "type": "string"
          },
          "rank": {
            "description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set.",
            "type": "integer"
          },
          "samlSsoInfo": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SamlSsoInfoResponse",
            "description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
          },
          "signInBehavior": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:SignInBehaviorResponse",
            "description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration."
          },
          "ssoMode": {
            "description": "Inbound SSO behavior.",
            "type": "string"
          },
          "targetGroup": {
            "description": "Immutable. Must be of the form `groups/{group}`.",
            "type": "string"
          },
          "targetOrgUnit": {
            "description": "Immutable. Must be of the form `orgUnits/{org_unit}`.",
            "type": "string"
          }
        },
        "required": [
          "customer",
          "name",
          "rank",
          "samlSsoInfo",
          "signInBehavior",
          "ssoMode",
          "targetGroup",
          "targetOrgUnit"
        ],
        "type": "object"
      }
    },
    "google-native:cloudidentity/v1beta1:getMembership": {
      "description": "Retrieves a `Membership`.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the `Membership` was created.",
            "type": "string"
          },
          "deliverySetting": {
            "description": "Delivery setting associated with the membership.",
            "type": "string"
          },
          "memberKey": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKeyResponse",
            "description": "Immutable. The `EntityKey` of the member. Either `member_key` or `preferred_member_key` must be set when calling MembershipsService.CreateMembership but not both; both shall be set when returned."
          },
          "name": {
            "description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group_id}/memberships/{membership_id}`.",
            "type": "string"
          },
          "preferredMemberKey": {
            "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:EntityKeyResponse",
            "description": "Immutable. The `EntityKey` of the member. Either `member_key` or `preferred_member_key` must be set when calling MembershipsService.CreateMembership but not both; both shall be set when returned."
          },
          "roles": {
            "description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`.",
            "items": {
              "$ref": "#/types/google-native:cloudidentity%2Fv1beta1:MembershipRoleResponse"
            },
            "type": "array"
          },
          "type": {
            "description": "The type of the membership.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the `Membership` was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deliverySetting",
          "memberKey",
          "name",
          "preferredMemberKey",
          "roles",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudiot/v1:getDevice": {
      "description": "Gets details about a device.",
      "inputs": {
        "properties": {
          "deviceId": {
            "type": "string"
          },
          "fieldMask": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "registryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deviceId",
          "location",
          "registryId"
        ]
      },
      "outputs": {
        "properties": {
          "blocked": {
            "description": "If a device is blocked, connections or requests from this device will fail. Can be used to temporarily prevent the device from connecting if, for example, the sensor is generating bad data and needs maintenance.",
            "type": "boolean"
          },
          "config": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceConfigResponse",
            "description": "The most recent device configuration, which is eventually sent from Cloud IoT Core to the device. If not present on creation, the configuration will be initialized with an empty payload and version value of `1`. To update this field after creation, use the `DeviceManager.ModifyCloudToDeviceConfig` method."
          },
          "credentials": {
            "description": "The credentials used to authenticate this device. To allow credential rotation without interruption, multiple device credentials can be bound to this device. No more than 3 credentials can be bound to a single device at a time. When new credentials are added to a device, they are verified against the registry credentials. For details, see the description of the `DeviceRegistry.credentials` field.",
            "items": {
              "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceCredentialResponse"
            },
            "type": "array"
          },
          "gatewayConfig": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:GatewayConfigResponse",
            "description": "Gateway-related configuration and state."
          },
          "lastConfigAckTime": {
            "description": "[Output only] The last time a cloud-to-device config version acknowledgment was received from the device. This field is only for configurations sent through MQTT.",
            "type": "string"
          },
          "lastConfigSendTime": {
            "description": "[Output only] The last time a cloud-to-device config version was sent to the device.",
            "type": "string"
          },
          "lastErrorStatus": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:StatusResponse",
            "description": "[Output only] The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this field. If no errors have occurred, this field has an empty message and the status code 0 == OK. Otherwise, this field is expected to have a status code other than OK."
          },
          "lastErrorTime": {
            "description": "[Output only] The time the most recent error occurred, such as a failure to publish to Cloud Pub/Sub. This field is the timestamp of 'last_error_status'.",
            "type": "string"
          },
          "lastEventTime": {
            "description": "[Output only] The last time a telemetry event was received. Timestamps are periodically collected and written to storage; they may be stale by a few minutes.",
            "type": "string"
          },
          "lastHeartbeatTime": {
            "description": "[Output only] The last time an MQTT `PINGREQ` was received. This field applies only to devices connecting through MQTT. MQTT clients usually only send `PINGREQ` messages if the connection is idle, and no other messages have been sent. Timestamps are periodically collected and written to storage; they may be stale by a few minutes.",
            "type": "string"
          },
          "lastStateTime": {
            "description": "[Output only] The last time a state event was received. Timestamps are periodically collected and written to storage; they may be stale by a few minutes.",
            "type": "string"
          },
          "logLevel": {
            "description": "**Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.",
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The metadata key-value pairs assigned to the device. This metadata is not interpreted or indexed by Cloud IoT Core. It can be used to add contextual information for the device. Keys must conform to the regular expression a-zA-Z+ and be less than 128 bytes in length. Values are free-form strings. Each value must be less than or equal to 32 KB in size. The total size of all keys and values must be less than 256 KB, and the maximum number of key-value pairs is 500.",
            "type": "object"
          },
          "name": {
            "description": "The resource path name. For example, `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`. When `name` is populated as a response from the service, it always ends in the device numeric ID.",
            "type": "string"
          },
          "numId": {
            "description": "[Output only] A server-defined unique numeric ID for the device. This is a more compact way to identify devices, and it is globally unique.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:DeviceStateResponse",
            "description": "[Output only] The state most recently received from the device. If no state has been reported, this field is not present."
          }
        },
        "required": [
          "blocked",
          "config",
          "credentials",
          "gatewayConfig",
          "lastConfigAckTime",
          "lastConfigSendTime",
          "lastErrorStatus",
          "lastErrorTime",
          "lastEventTime",
          "lastHeartbeatTime",
          "lastStateTime",
          "logLevel",
          "metadata",
          "name",
          "numId",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:cloudiot/v1:getRegistry": {
      "description": "Gets a device registry configuration.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "registryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "registryId"
        ]
      },
      "outputs": {
        "properties": {
          "credentials": {
            "description": "The credentials used to verify the device credentials. No more than 10 credentials can be bound to a single registry at a time. The verification process occurs at the time of device creation or update. If this field is empty, no verification is performed. Otherwise, the credentials of a newly created device or added credentials of an updated device should be signed with one of these registry credentials. Note, however, that existing devices will never be affected by modifications to this list of credentials: after a device has been successfully created in a registry, it should be able to connect even if its registry credentials are revoked, deleted, or modified.",
            "items": {
              "$ref": "#/types/google-native:cloudiot%2Fv1:RegistryCredentialResponse"
            },
            "type": "array"
          },
          "eventNotificationConfigs": {
            "description": "The configuration for notification of telemetry events received from the device. All telemetry events that were successfully published by the device and acknowledged by Cloud IoT Core are guaranteed to be delivered to Cloud Pub/Sub. If multiple configurations match a message, only the first matching configuration is used. If you try to publish a device telemetry event using MQTT without specifying a Cloud Pub/Sub topic for the device's registry, the connection closes automatically. If you try to do so using an HTTP connection, an error is returned. Up to 10 configurations may be provided.",
            "items": {
              "$ref": "#/types/google-native:cloudiot%2Fv1:EventNotificationConfigResponse"
            },
            "type": "array"
          },
          "httpConfig": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:HttpConfigResponse",
            "description": "The DeviceService (HTTP) configuration for this device registry."
          },
          "logLevel": {
            "description": "**Beta Feature** The default logging verbosity for activity from devices in this registry. The verbosity level can be overridden by Device.log_level.",
            "type": "string"
          },
          "mqttConfig": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:MqttConfigResponse",
            "description": "The MQTT configuration for this device registry."
          },
          "name": {
            "description": "The resource path name. For example, `projects/example-project/locations/us-central1/registries/my-registry`.",
            "type": "string"
          },
          "stateNotificationConfig": {
            "$ref": "#/types/google-native:cloudiot%2Fv1:StateNotificationConfigResponse",
            "description": "The configuration for notification of new states received from the device. State updates are guaranteed to be stored in the state history, but notifications to Cloud Pub/Sub are not guaranteed. For example, if permissions are misconfigured or the specified topic doesn't exist, no notification will be published but the state will still be stored in Cloud IoT Core."
          }
        },
        "required": [
          "credentials",
          "eventNotificationConfigs",
          "httpConfig",
          "logLevel",
          "mqttConfig",
          "name",
          "stateNotificationConfig"
        ],
        "type": "object"
      }
    },
    "google-native:cloudiot/v1:getRegistryGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "registryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId",
          "location",
          "registryId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudiot%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudiot/v1:getRegistryIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "registryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "registryId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudiot%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getCryptoKey": {
      "description": "Returns metadata for a given CryptoKey, as well as its primary CryptoKeyVersion.",
      "inputs": {
        "properties": {
          "cryptoKeyId": {
            "type": "string"
          },
          "keyRingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "cryptoKeyId",
          "keyRingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which this CryptoKey was created.",
            "type": "string"
          },
          "cryptoKeyBackend": {
            "description": "Immutable. The resource name of the backend environment where the key material for all CryptoKeyVersions associated with this CryptoKey reside and where all related cryptographic operations are performed. Only applicable if CryptoKeyVersions have a ProtectionLevel of EXTERNAL_VPC, with the resource name in the format `projects/*/locations/*/ekmConnections/*`. Note, this list is non-exhaustive and may apply to additional ProtectionLevels in the future.",
            "type": "string"
          },
          "destroyScheduledDuration": {
            "description": "Immutable. The period of time that versions of this key spend in the DESTROY_SCHEDULED state before transitioning to DESTROYED. If not specified at creation time, the default duration is 24 hours.",
            "type": "string"
          },
          "importOnly": {
            "description": "Immutable. Whether this key may contain imported versions only.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels with user-defined metadata. For more information, see [Labeling Keys](https://cloud.google.com/kms/docs/labeling-keys).",
            "type": "object"
          },
          "name": {
            "description": "The resource name for this CryptoKey in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
            "type": "string"
          },
          "nextRotationTime": {
            "description": "At next_rotation_time, the Key Management Service will automatically: 1. Create a new version of this CryptoKey. 2. Mark the new version as primary. Key rotations performed manually via CreateCryptoKeyVersion and UpdateCryptoKeyPrimaryVersion do not affect next_rotation_time. Keys with purpose ENCRYPT_DECRYPT support automatic rotation. For other keys, this field must be omitted.",
            "type": "string"
          },
          "primary": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyVersionResponse",
            "description": "A copy of the \"primary\" CryptoKeyVersion that will be used by Encrypt when this CryptoKey is given in EncryptRequest.name. The CryptoKey's primary version can be updated via UpdateCryptoKeyPrimaryVersion. Keys with purpose ENCRYPT_DECRYPT may have a primary. For other keys, this field will be omitted."
          },
          "purpose": {
            "description": "Immutable. The immutable purpose of this CryptoKey.",
            "type": "string"
          },
          "rotationPeriod": {
            "description": "next_rotation_time will be advanced by this period when the service automatically rotates a key. Must be at least 24 hours and at most 876,000 hours. If rotation_period is set, next_rotation_time must also be set. Keys with purpose ENCRYPT_DECRYPT support automatic rotation. For other keys, this field must be omitted.",
            "type": "string"
          },
          "versionTemplate": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:CryptoKeyVersionTemplateResponse",
            "description": "A template describing settings for new CryptoKeyVersion instances. The properties of new CryptoKeyVersion instances created by either CreateCryptoKeyVersion or auto-rotation are controlled by this template."
          }
        },
        "required": [
          "createTime",
          "cryptoKeyBackend",
          "destroyScheduledDuration",
          "importOnly",
          "labels",
          "name",
          "nextRotationTime",
          "primary",
          "purpose",
          "rotationPeriod",
          "versionTemplate"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getCryptoKeyVersion": {
      "description": "Returns metadata for a given CryptoKeyVersion.",
      "inputs": {
        "properties": {
          "cryptoKeyId": {
            "type": "string"
          },
          "cryptoKeyVersionId": {
            "type": "string"
          },
          "keyRingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "cryptoKeyId",
          "cryptoKeyVersionId",
          "keyRingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "algorithm": {
            "description": "The CryptoKeyVersionAlgorithm that this CryptoKeyVersion supports.",
            "type": "string"
          },
          "attestation": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:KeyOperationAttestationResponse",
            "description": "Statement that was generated and signed by the HSM at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google. Only provided for key versions with protection_level HSM."
          },
          "createTime": {
            "description": "The time at which this CryptoKeyVersion was created.",
            "type": "string"
          },
          "destroyEventTime": {
            "description": "The time this CryptoKeyVersion's key material was destroyed. Only present if state is DESTROYED.",
            "type": "string"
          },
          "destroyTime": {
            "description": "The time this CryptoKeyVersion's key material is scheduled for destruction. Only present if state is DESTROY_SCHEDULED.",
            "type": "string"
          },
          "externalDestructionFailureReason": {
            "description": "The root cause of the most recent external destruction failure. Only present if state is EXTERNAL_DESTRUCTION_FAILED.",
            "type": "string"
          },
          "externalProtectionLevelOptions": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:ExternalProtectionLevelOptionsResponse",
            "description": "ExternalProtectionLevelOptions stores a group of additional fields for configuring a CryptoKeyVersion that are specific to the EXTERNAL protection level and EXTERNAL_VPC protection levels."
          },
          "generateTime": {
            "description": "The time this CryptoKeyVersion's key material was generated.",
            "type": "string"
          },
          "generationFailureReason": {
            "description": "The root cause of the most recent generation failure. Only present if state is GENERATION_FAILED.",
            "type": "string"
          },
          "importFailureReason": {
            "description": "The root cause of the most recent import failure. Only present if state is IMPORT_FAILED.",
            "type": "string"
          },
          "importJob": {
            "description": "The name of the ImportJob used in the most recent import of this CryptoKeyVersion. Only present if the underlying key material was imported.",
            "type": "string"
          },
          "importTime": {
            "description": "The time at which this CryptoKeyVersion's key material was most recently imported.",
            "type": "string"
          },
          "name": {
            "description": "The resource name for this CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.",
            "type": "string"
          },
          "protectionLevel": {
            "description": "The ProtectionLevel describing how crypto operations are performed with this CryptoKeyVersion.",
            "type": "string"
          },
          "reimportEligible": {
            "description": "Whether or not this key version is eligible for reimport, by being specified as a target in ImportCryptoKeyVersionRequest.crypto_key_version.",
            "type": "boolean"
          },
          "state": {
            "description": "The current state of the CryptoKeyVersion.",
            "type": "string"
          }
        },
        "required": [
          "algorithm",
          "attestation",
          "createTime",
          "destroyEventTime",
          "destroyTime",
          "externalDestructionFailureReason",
          "externalProtectionLevelOptions",
          "generateTime",
          "generationFailureReason",
          "importFailureReason",
          "importJob",
          "importTime",
          "name",
          "protectionLevel",
          "reimportEligible",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getEkmConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getEkmConnection": {
      "description": "Returns metadata for a given EkmConnection.",
      "inputs": {
        "properties": {
          "ekmConnectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "ekmConnectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which the EkmConnection was created.",
            "type": "string"
          },
          "cryptoSpacePath": {
            "description": "Optional. Identifies the EKM Crypto Space that this EkmConnection maps to. Note: This field is required if KeyManagementMode is CLOUD_KMS.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Etag of the currently stored EkmConnection.",
            "type": "string"
          },
          "keyManagementMode": {
            "description": "Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL.",
            "type": "string"
          },
          "name": {
            "description": "The resource name for the EkmConnection in the format `projects/*/locations/*/ekmConnections/*`.",
            "type": "string"
          },
          "serviceResolvers": {
            "description": "A list of ServiceResolvers where the EKM can be reached. There should be one ServiceResolver per EKM replica. Currently, only a single ServiceResolver is supported.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:ServiceResolverResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "cryptoSpacePath",
          "etag",
          "keyManagementMode",
          "name",
          "serviceResolvers"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getEkmConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "ekmConnectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "ekmConnectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getImportJob": {
      "description": "Returns metadata for a given ImportJob.",
      "inputs": {
        "properties": {
          "importJobId": {
            "type": "string"
          },
          "keyRingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "importJobId",
          "keyRingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "attestation": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:KeyOperationAttestationResponse",
            "description": "Statement that was generated and signed by the key creator (for example, an HSM) at key creation time. Use this statement to verify attributes of the key as stored on the HSM, independently of Google. Only present if the chosen ImportMethod is one with a protection level of HSM."
          },
          "createTime": {
            "description": "The time at which this ImportJob was created.",
            "type": "string"
          },
          "expireEventTime": {
            "description": "The time this ImportJob expired. Only present if state is EXPIRED.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time at which this ImportJob is scheduled for expiration and can no longer be used to import key material.",
            "type": "string"
          },
          "generateTime": {
            "description": "The time this ImportJob's key material was generated.",
            "type": "string"
          },
          "importMethod": {
            "description": "Immutable. The wrapping method to be used for incoming key material.",
            "type": "string"
          },
          "name": {
            "description": "The resource name for this ImportJob in the format `projects/*/locations/*/keyRings/*/importJobs/*`.",
            "type": "string"
          },
          "protectionLevel": {
            "description": "Immutable. The protection level of the ImportJob. This must match the protection_level of the version_template on the CryptoKey you attempt to import into.",
            "type": "string"
          },
          "publicKey": {
            "$ref": "#/types/google-native:cloudkms%2Fv1:WrappingPublicKeyResponse",
            "description": "The public key with which to wrap key material prior to import. Only returned if state is ACTIVE."
          },
          "state": {
            "description": "The current state of the ImportJob, indicating if it can be used.",
            "type": "string"
          }
        },
        "required": [
          "attestation",
          "createTime",
          "expireEventTime",
          "expireTime",
          "generateTime",
          "importMethod",
          "name",
          "protectionLevel",
          "publicKey",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getKeyRing": {
      "description": "Returns metadata for a given KeyRing.",
      "inputs": {
        "properties": {
          "keyRingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "keyRingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which this KeyRing was created.",
            "type": "string"
          },
          "name": {
            "description": "The resource name for the KeyRing in the format `projects/*/locations/*/keyRings/*`.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getKeyRingCryptoKeyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "cryptoKeyId": {
            "type": "string"
          },
          "keyRingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "cryptoKeyId",
          "keyRingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getKeyRingIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "keyRingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "keyRingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudkms/v1:getKeyRingImportJobIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "importJobId": {
            "type": "string"
          },
          "keyRingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "importJobId",
          "keyRingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudkms%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v1:getLien": {
      "description": "Retrieve a Lien by `name`. Callers of this method will require permission on the `parent` resource. For example, a Lien with a `parent` of `projects/1234` requires permission `resourcemanager.projects.get`",
      "inputs": {
        "properties": {
          "lienId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lienId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time of this Lien.",
            "type": "string"
          },
          "name": {
            "description": "A system-generated unique identifier for this Lien. Example: `liens/1234abcd`",
            "type": "string"
          },
          "origin": {
            "description": "A stable, user-visible/meaningful string identifying the origin of the Lien, intended to be inspected programmatically. Maximum length of 200 characters. Example: 'compute.googleapis.com'",
            "type": "string"
          },
          "parent": {
            "description": "A reference to the resource this Lien is attached to. The server will validate the parent against those for which Liens are supported. Example: `projects/1234`",
            "type": "string"
          },
          "reason": {
            "description": "Concise user-visible strings indicating why an action cannot be performed on a resource. Maximum length of 200 characters. Example: 'Holds production API key'",
            "type": "string"
          },
          "restrictions": {
            "description": "The types of operations which should be blocked as a result of this Lien. Each value should correspond to an IAM permission. The server will validate the permissions against those for which Liens are supported. An empty list is meaningless and will be rejected. Example: ['resourcemanager.projects.delete']",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "name",
          "origin",
          "parent",
          "reason",
          "restrictions"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v1:getOrganizationIamPolicy": {
      "description": "Gets the access control policy for an Organization resource. May be empty if no such policy or resource exists. The `resource` field should be the organization's resource name, e.g. \"organizations/123\". Authorization requires the Google IAM permission `resourcemanager.organizations.getIamPolicy` on the specified organization",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v1:getProject": {
      "description": "Retrieves the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time. Read-only.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z{0,62}. Label values must be between 0 and 63 characters long and must conform to the regular expression [a-z0-9_-]{0,63}. A label value can be empty. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: \"environment\" : \"dev\" Read-write.",
            "type": "object"
          },
          "lifecycleState": {
            "description": "The Project lifecycle state. Read-only.",
            "type": "string"
          },
          "name": {
            "description": "The optional user-assigned display name of the Project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project` Read-write.",
            "type": "string"
          },
          "parent": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:ResourceIdResponse",
            "description": "An optional reference to a parent Resource. Supported parent types include \"organization\" and \"folder\". Once set, the parent cannot be cleared. The `parent` can be set on creation or using the `UpdateProject` method; the end user must have the `resourcemanager.projects.create` permission on the parent."
          },
          "projectId": {
            "description": "The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123` Read-only after creation.",
            "type": "string"
          },
          "projectNumber": {
            "description": "The number uniquely identifying the project. Example: `415104041262` Read-only.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "labels",
          "lifecycleState",
          "name",
          "parent",
          "projectId",
          "projectNumber"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v1:getProjectIamPolicy": {
      "description": "Returns the IAM access control policy for the specified Project. Permission is denied if the policy or the resource does not exist. Authorization requires the Google IAM permission `resourcemanager.projects.getIamPolicy` on the project. For additional information about `resource` (e.g. my-project-id) structure and identification, see [Resource Names](https://cloud.google.com/apis/design/resource_names).",
      "inputs": {
        "properties": {
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v1beta1:getOrganizationIamPolicy": {
      "description": "Gets the access control policy for an Organization resource. May be empty if no such policy or resource exists. The `resource` field should be the organization's resource name, e.g. \"organizations/123\".",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v1beta1:getProject": {
      "description": "Retrieves the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time. Read-only.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z{0,62}. Label values must be between 0 and 63 characters long and must conform to the regular expression [a-z0-9_-]{0,63}. A label value can be empty. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: `\"environment\" : \"dev\"` Read-write.",
            "type": "object"
          },
          "lifecycleState": {
            "description": "The Project lifecycle state. Read-only.",
            "type": "string"
          },
          "name": {
            "description": "The optional user-assigned display name of the Project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project` Read-write.",
            "type": "string"
          },
          "parent": {
            "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:ResourceIdResponse",
            "description": "An optional reference to a parent Resource. Supported parent types include \"organization\" and \"folder\". Once set, the parent cannot be cleared. The `parent` can be set on creation or using the `UpdateProject` method; the end user must have the `resourcemanager.projects.create` permission on the parent. Read-write."
          },
          "projectId": {
            "description": "The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123` Read-only after creation.",
            "type": "string"
          },
          "projectNumber": {
            "description": "The number uniquely identifying the project. Example: `415104041262` Read-only.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "labels",
          "lifecycleState",
          "name",
          "parent",
          "projectId",
          "projectNumber"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v1beta1:getProjectIamPolicy": {
      "description": "Returns the IAM access control policy for the specified Project. Permission is denied if the policy or the resource does not exist. For additional information about resource structure and identification, see [Resource Names](/apis/design/resource_names).",
      "inputs": {
        "properties": {
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v2:getFolder": {
      "description": "Retrieves a Folder identified by the supplied resource name. Valid Folder resource names have the format `folders/{folder_id}` (for example, `folders/1234`). The caller must have `resourcemanager.folders.get` permission on the identified folder.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the Folder was created. Assigned by the server.",
            "type": "string"
          },
          "displayName": {
            "description": "The folder's display name. A folder's display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "The lifecycle state of the folder. Updates to the lifecycle_state must be performed via DeleteFolder and UndeleteFolder.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Folder. Its format is `folders/{folder_id}`, for example: \"folders/1234\".",
            "type": "string"
          },
          "parent": {
            "description": "The Folder's parent's resource name. Updates to the folder's parent must be performed via MoveFolder.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "lifecycleState",
          "name",
          "parent"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v2:getFolderIamPolicy": {
      "description": "Gets the access control policy for a Folder. The returned policy may be empty if no such policy or resource exists. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.getIamPolicy` permission on the identified folder.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v2beta1:getFolder": {
      "description": "Retrieves a Folder identified by the supplied resource name. Valid Folder resource names have the format `folders/{folder_id}` (for example, `folders/1234`). The caller must have `resourcemanager.folders.get` permission on the identified folder.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the Folder was created. Assigned by the server.",
            "type": "string"
          },
          "displayName": {
            "description": "The folder's display name. A folder's display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "The lifecycle state of the folder. Updates to the lifecycle_state must be performed via DeleteFolder and UndeleteFolder.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Folder. Its format is `folders/{folder_id}`, for example: \"folders/1234\".",
            "type": "string"
          },
          "parent": {
            "description": "The Folder's parent's resource name. Updates to the folder's parent must be performed via MoveFolder.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "lifecycleState",
          "name",
          "parent"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v2beta1:getFolderIamPolicy": {
      "description": "Gets the access control policy for a Folder. The returned policy may be empty if no such policy or resource exists. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.getIamPolicy` permission on the identified folder.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv2beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getFolder": {
      "description": "Retrieves a folder identified by the supplied resource name. Valid folder resource names have the format `folders/{folder_id}` (for example, `folders/1234`). The caller must have `resourcemanager.folders.get` permission on the identified folder.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the folder was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Timestamp when the folder was requested to be deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "The folder's display name. A folder's display name must be unique amongst its siblings. For example, no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`.",
            "type": "string"
          },
          "etag": {
            "description": "A checksum computed by the server based on the current value of the folder resource. This may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the folder. Its format is `folders/{folder_id}`, for example: \"folders/1234\".",
            "type": "string"
          },
          "parent": {
            "description": "The folder's parent's resource name. Updates to the folder's parent must be performed using MoveFolder.",
            "type": "string"
          },
          "state": {
            "description": "The lifecycle state of the folder. Updates to the state must be performed using DeleteFolder and UndeleteFolder.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp when the folder was last modified.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "displayName",
          "etag",
          "name",
          "parent",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getFolderIamPolicy": {
      "description": "Gets the access control policy for a folder. The returned policy may be empty if no such policy or resource exists. The `resource` field should be the folder's resource name, for example: \"folders/1234\". The caller must have `resourcemanager.folders.getIamPolicy` permission on the identified folder.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getLien": {
      "description": "Retrieve a Lien by `name`. Callers of this method will require permission on the `parent` resource. For example, a Lien with a `parent` of `projects/1234` requires permission `resourcemanager.projects.get`",
      "inputs": {
        "properties": {
          "lienId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lienId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time of this Lien.",
            "type": "string"
          },
          "name": {
            "description": "A system-generated unique identifier for this Lien. Example: `liens/1234abcd`",
            "type": "string"
          },
          "origin": {
            "description": "A stable, user-visible/meaningful string identifying the origin of the Lien, intended to be inspected programmatically. Maximum length of 200 characters. Example: 'compute.googleapis.com'",
            "type": "string"
          },
          "parent": {
            "description": "A reference to the resource this Lien is attached to. The server will validate the parent against those for which Liens are supported. Example: `projects/1234`",
            "type": "string"
          },
          "reason": {
            "description": "Concise user-visible strings indicating why an action cannot be performed on a resource. Maximum length of 200 characters. Example: 'Holds production API key'",
            "type": "string"
          },
          "restrictions": {
            "description": "The types of operations which should be blocked as a result of this Lien. Each value should correspond to an IAM permission. The server will validate the permissions against those for which Liens are supported. An empty list is meaningless and will be rejected. Example: ['resourcemanager.projects.delete']",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "name",
          "origin",
          "parent",
          "reason",
          "restrictions"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getOrganizationIamPolicy": {
      "description": "Gets the access control policy for an organization resource. The policy may be empty if no such policy or resource exists. The `resource` field should be the organization's resource name, for example: \"organizations/123\". Authorization requires the IAM permission `resourcemanager.organizations.getIamPolicy` on the specified organization.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getProject": {
      "description": "Retrieves the project identified by the specified `name` (for example, `projects/415104041262`). The caller must have `resourcemanager.projects.get` permission for this project.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The time at which this resource was requested for deletion.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. A user-assigned display name of the project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project`",
            "type": "string"
          },
          "etag": {
            "description": "A checksum computed by the server based on the current value of the Project resource. This may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels associated with this project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?. No more than 64 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: `\"myBusinessDimension\" : \"businessValue\"`",
            "type": "object"
          },
          "name": {
            "description": "The unique resource name of the project. It is an int64 generated number prefixed by \"projects/\". Example: `projects/415104041262`",
            "type": "string"
          },
          "parent": {
            "description": "Optional. A reference to a parent Resource. eg., `organizations/123` or `folders/876`.",
            "type": "string"
          },
          "projectId": {
            "description": "Immutable. The unique, user-assigned id of the project. It must be 6 to 30 lowercase ASCII letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123`",
            "type": "string"
          },
          "state": {
            "description": "The project lifecycle state.",
            "type": "string"
          },
          "updateTime": {
            "description": "The most recent time this resource was modified.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "displayName",
          "etag",
          "labels",
          "name",
          "parent",
          "projectId",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getProjectIamPolicy": {
      "description": "Returns the IAM access control policy for the specified project, in the format `projects/{ProjectIdOrNumber}` e.g. projects/123. Permission is denied if the policy or the resource do not exist.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getTagKey": {
      "description": "Retrieves a TagKey. This method will return `PERMISSION_DENIED` if the key does not exist or the user does not have permission to view it.",
      "inputs": {
        "properties": {
          "tagKeyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "tagKeyId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User-assigned description of the TagKey. Must not exceed 256 characters. Read-write.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Entity tag which users can pass to prevent race conditions. This field is always set in server responses. See UpdateTagKeyRequest for details.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name for a TagKey. Must be in the format `tagKeys/{tag_key_id}`, where `tag_key_id` is the generated numeric id for the TagKey.",
            "type": "string"
          },
          "namespacedName": {
            "description": "Immutable. Namespaced name of the TagKey.",
            "type": "string"
          },
          "parent": {
            "description": "Immutable. The resource name of the TagKey's parent. A TagKey can be parented by an Organization or a Project. For a TagKey parented by an Organization, its parent must be in the form `organizations/{org_id}`. For a TagKey parented by a Project, its parent can be in the form `projects/{project_id}` or `projects/{project_number}`.",
            "type": "string"
          },
          "purpose": {
            "description": "Optional. A purpose denotes that this Tag is intended for use in policies of a specific policy engine, and will involve that policy engine in management operations involving this Tag. A purpose does not grant a policy engine exclusive rights to the Tag, and it may be referenced by other policy engines. A purpose cannot be changed once set.",
            "type": "string"
          },
          "purposeData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Purpose data corresponds to the policy system that the tag is intended for. See documentation for `Purpose` for formatting of this field. Purpose data cannot be changed once set.",
            "type": "object"
          },
          "shortName": {
            "description": "Immutable. The user friendly name for a TagKey. The short name should be unique for TagKeys within the same tag namespace. The short name must be 1-63 characters, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "name",
          "namespacedName",
          "parent",
          "purpose",
          "purposeData",
          "shortName",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getTagKeyIamPolicy": {
      "description": "Gets the access control policy for a TagKey. The returned policy may be empty if no such policy or resource exists. The `resource` field should be the TagKey's resource name. For example, \"tagKeys/1234\". The caller must have `cloudresourcemanager.googleapis.com/tagKeys.getIamPolicy` permission on the specified TagKey.",
      "inputs": {
        "properties": {
          "tagKeyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "tagKeyId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getTagValue": {
      "description": "Retrieves a TagValue. This method will return `PERMISSION_DENIED` if the value does not exist or the user does not have permission to view it.",
      "inputs": {
        "properties": {
          "tagValueId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "tagValueId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User-assigned description of the TagValue. Must not exceed 256 characters. Read-write.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Entity tag which users can pass to prevent race conditions. This field is always set in server responses. See UpdateTagValueRequest for details.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Resource name for TagValue in the format `tagValues/456`.",
            "type": "string"
          },
          "namespacedName": {
            "description": "The namespaced name of the TagValue. Can be in the form `{organization_id}/{tag_key_short_name}/{tag_value_short_name}` or `{project_id}/{tag_key_short_name}/{tag_value_short_name}` or `{project_number}/{tag_key_short_name}/{tag_value_short_name}`.",
            "type": "string"
          },
          "parent": {
            "description": "Immutable. The resource name of the new TagValue's parent TagKey. Must be of the form `tagKeys/{tag_key_id}`.",
            "type": "string"
          },
          "shortName": {
            "description": "Immutable. User-assigned short name for TagValue. The short name should be unique for TagValues within the same parent TagKey. The short name must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "name",
          "namespacedName",
          "parent",
          "shortName",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudresourcemanager/v3:getTagValueIamPolicy": {
      "description": "Gets the access control policy for a TagValue. The returned policy may be empty if no such policy or resource exists. The `resource` field should be the TagValue's resource name. For example: `tagValues/1234`. The caller must have the `cloudresourcemanager.googleapis.com/tagValues.getIamPolicy` permission on the identified TagValue to get the access control policy.",
      "inputs": {
        "properties": {
          "tagValueId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "tagValueId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudresourcemanager%2Fv3:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudscheduler/v1:getJob": {
      "description": "Gets a job.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineHttpTarget": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1:AppEngineHttpTargetResponse",
            "description": "App Engine HTTP target."
          },
          "attemptDeadline": {
            "description": "The deadline for job attempts. If the request handler does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in execution logs. Cloud Scheduler will retry the job according to the RetryConfig. The default and the allowed values depend on the type of target: * For HTTP targets, the default is 3 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine HTTP targets, 0 indicates that the request has the default deadline. The default deadline depends on the scaling type of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. * For Pub/Sub targets, this field is ignored.",
            "type": "string"
          },
          "description": {
            "description": "Optionally caller-specified in CreateJob or UpdateJob. A human-readable description for the job. This string must not contain more than 500 characters.",
            "type": "string"
          },
          "httpTarget": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1:HttpTargetResponse",
            "description": "HTTP target."
          },
          "lastAttemptTime": {
            "description": "The time the last job attempt started.",
            "type": "string"
          },
          "name": {
            "description": "Optionally caller-specified in CreateJob, after which it becomes output only. The job name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the job's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters.",
            "type": "string"
          },
          "pubsubTarget": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1:PubsubTargetResponse",
            "description": "Pub/Sub target."
          },
          "retryConfig": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1:RetryConfigResponse",
            "description": "Settings that determine the retry behavior."
          },
          "schedule": {
            "description": "Required, except when used with UpdateJob. Describes the schedule on which the job will be executed. The schedule can be either of the following types: * [Crontab](https://en.wikipedia.org/wiki/Cron#Overview) * English-like [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules) As a general rule, execution `n + 1` of a job will not begin until execution `n` has finished. Cloud Scheduler will never allow two simultaneously outstanding executions. For example, this implies that if the `n+1`th execution is scheduled to run at 16:00 but the `n`th execution takes until 16:15, the `n+1`th execution will not start until `16:15`. A scheduled start time will be delayed if the previous execution has not ended when its scheduled time occurs. If retry_count \u003e 0 and a job attempt fails, the job will be tried a total of retry_count times, with exponential backoff, until the next scheduled start time. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure.",
            "type": "string"
          },
          "scheduleTime": {
            "description": "The next time the job is scheduled. Note that this may be a retry of a previously failed attempt or the next execution time according to the schedule.",
            "type": "string"
          },
          "state": {
            "description": "State of the job.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1:StatusResponse",
            "description": "The response from the target for the last attempted execution."
          },
          "timeZone": {
            "description": "Specifies the time zone to be used in interpreting schedule. The value of this field must be a time zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database). Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT).",
            "type": "string"
          },
          "userUpdateTime": {
            "description": "The creation time of the job.",
            "type": "string"
          }
        },
        "required": [
          "appEngineHttpTarget",
          "attemptDeadline",
          "description",
          "httpTarget",
          "lastAttemptTime",
          "name",
          "pubsubTarget",
          "retryConfig",
          "schedule",
          "scheduleTime",
          "state",
          "status",
          "timeZone",
          "userUpdateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudscheduler/v1beta1:getJob": {
      "description": "Gets a job.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineHttpTarget": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:AppEngineHttpTargetResponse",
            "description": "App Engine HTTP target."
          },
          "attemptDeadline": {
            "description": "The deadline for job attempts. If the request handler does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. The failed attempt can be viewed in execution logs. Cloud Scheduler will retry the job according to the RetryConfig. The default and the allowed values depend on the type of target: * For HTTP targets, the default is 3 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine HTTP targets, 0 indicates that the request has the default deadline. The default deadline depends on the scaling type of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. * For Pub/Sub targets, this field is ignored.",
            "type": "string"
          },
          "description": {
            "description": "Optionally caller-specified in CreateJob or UpdateJob. A human-readable description for the job. This string must not contain more than 500 characters.",
            "type": "string"
          },
          "httpTarget": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:HttpTargetResponse",
            "description": "HTTP target."
          },
          "lastAttemptTime": {
            "description": "The time the last job attempt started.",
            "type": "string"
          },
          "legacyAppEngineCron": {
            "description": "Immutable. This field is used to manage the legacy App Engine Cron jobs using the Cloud Scheduler API. If the field is set to true, the job will be considered a legacy job. Note that App Engine Cron jobs have fewer features than Cloud Scheduler jobs, e.g., are only limited to App Engine targets.",
            "type": "boolean"
          },
          "name": {
            "description": "Optionally caller-specified in CreateJob, after which it becomes output only. The job name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/jobs/JOB_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the job's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `JOB_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters.",
            "type": "string"
          },
          "pubsubTarget": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:PubsubTargetResponse",
            "description": "Pub/Sub target."
          },
          "retryConfig": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:RetryConfigResponse",
            "description": "Settings that determine the retry behavior."
          },
          "schedule": {
            "description": "Required, except when used with UpdateJob. Describes the schedule on which the job will be executed. The schedule can be either of the following types: * [Crontab](https://en.wikipedia.org/wiki/Cron#Overview) * English-like [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules) As a general rule, execution `n + 1` of a job will not begin until execution `n` has finished. Cloud Scheduler will never allow two simultaneously outstanding executions. For example, this implies that if the `n+1`th execution is scheduled to run at 16:00 but the `n`th execution takes until 16:15, the `n+1`th execution will not start until `16:15`. A scheduled start time will be delayed if the previous execution has not ended when its scheduled time occurs. If retry_count \u003e 0 and a job attempt fails, the job will be tried a total of retry_count times, with exponential backoff, until the next scheduled start time. If retry_count is 0, a job attempt will not be retried if it fails. Instead the Cloud Scheduler system will wait for the next scheduled execution time. Setting retry_count to 0 does not prevent failed jobs from running according to schedule after the failure.",
            "type": "string"
          },
          "scheduleTime": {
            "description": "The next time the job is scheduled. Note that this may be a retry of a previously failed attempt or the next execution time according to the schedule.",
            "type": "string"
          },
          "state": {
            "description": "State of the job.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:cloudscheduler%2Fv1beta1:StatusResponse",
            "description": "The response from the target for the last attempted execution."
          },
          "timeZone": {
            "description": "Specifies the time zone to be used in interpreting schedule. The value of this field must be a time zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database). Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT).",
            "type": "string"
          },
          "userUpdateTime": {
            "description": "The creation time of the job.",
            "type": "string"
          }
        },
        "required": [
          "appEngineHttpTarget",
          "attemptDeadline",
          "description",
          "httpTarget",
          "lastAttemptTime",
          "legacyAppEngineCron",
          "name",
          "pubsubTarget",
          "retryConfig",
          "schedule",
          "scheduleTime",
          "state",
          "status",
          "timeZone",
          "userUpdateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudsearch/v1:getDataSource": {
      "description": "Gets a datasource. **Note:** This API requires an admin account to execute.",
      "inputs": {
        "properties": {
          "datasourceId": {
            "type": "string"
          },
          "debugOptionsEnableDebugging": {
            "type": "boolean"
          }
        },
        "type": "object",
        "required": [
          "datasourceId"
        ]
      },
      "outputs": {
        "properties": {
          "disableModifications": {
            "description": "If true, sets the datasource to read-only mode. In read-only mode, the Indexing API rejects any requests to index or delete items in this source. Enabling read-only mode does not stop the processing of previously accepted data.",
            "type": "boolean"
          },
          "disableServing": {
            "description": "Disable serving any search or assist results.",
            "type": "boolean"
          },
          "displayName": {
            "description": "Display name of the datasource The maximum length is 300 characters.",
            "type": "string"
          },
          "indexingServiceAccounts": {
            "description": "List of service accounts that have indexing access.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "itemsVisibility": {
            "description": "This field restricts visibility to items at the datasource level. Items within the datasource are restricted to the union of users and groups included in this field. Note that, this does not ensure access to a specific item, as users need to have ACL permissions on the contained items. This ensures a high level access on the entire datasource, and that the individual items are not shared outside this visibility.",
            "items": {
              "$ref": "#/types/google-native:cloudsearch%2Fv1:GSuitePrincipalResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the datasource resource. Format: datasources/{source_id}. The name is ignored when creating a datasource.",
            "type": "string"
          },
          "operationIds": {
            "description": "IDs of the Long Running Operations (LROs) currently running for this schema.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "returnThumbnailUrls": {
            "description": "Can a user request to get thumbnail URI for Items indexed in this data source.",
            "type": "boolean"
          },
          "shortName": {
            "description": "A short name or alias for the source. This value will be used to match the 'source' operator. For example, if the short name is *\u003cvalue\u003e* then queries like *source:\u003cvalue\u003e* will only return results for this source. The value must be unique across all datasources. The value must only contain alphanumeric characters (a-zA-Z0-9). The value cannot start with 'google' and cannot be one of the following: mail, gmail, docs, drive, groups, sites, calendar, hangouts, gplus, keep, people, teams. Its maximum length is 32 characters.",
            "type": "string"
          }
        },
        "required": [
          "disableModifications",
          "disableServing",
          "displayName",
          "indexingServiceAccounts",
          "itemsVisibility",
          "name",
          "operationIds",
          "returnThumbnailUrls",
          "shortName"
        ],
        "type": "object"
      }
    },
    "google-native:cloudsearch/v1:getSearchApplication": {
      "description": "Gets the specified search application. **Note:** This API requires an admin account to execute.",
      "inputs": {
        "properties": {
          "debugOptionsEnableDebugging": {
            "type": "boolean"
          },
          "searchapplicationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "searchapplicationId"
        ]
      },
      "outputs": {
        "properties": {
          "dataSourceRestrictions": {
            "description": "Retrictions applied to the configurations. The maximum number of elements is 10.",
            "items": {
              "$ref": "#/types/google-native:cloudsearch%2Fv1:DataSourceRestrictionResponse"
            },
            "type": "array"
          },
          "defaultFacetOptions": {
            "description": "The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above.",
            "items": {
              "$ref": "#/types/google-native:cloudsearch%2Fv1:FacetOptionsResponse"
            },
            "type": "array"
          },
          "defaultSortOptions": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:SortOptionsResponse",
            "description": "The default options for sorting the search results"
          },
          "displayName": {
            "description": "Display name of the Search Application. The maximum length is 300 characters.",
            "type": "string"
          },
          "enableAuditLog": {
            "description": "Indicates whether audit logging is on/off for requests made for the search application in query APIs.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the Search Application. Format: searchapplications/{application_id}.",
            "type": "string"
          },
          "operationIds": {
            "description": "IDs of the Long Running Operations (LROs) currently running for this schema. Output only field.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "queryInterpretationConfig": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:QueryInterpretationConfigResponse",
            "description": "The default options for query interpretation"
          },
          "returnResultThumbnailUrls": {
            "description": "With each result we should return the URI for its thumbnail (when applicable)",
            "type": "boolean"
          },
          "scoringConfig": {
            "$ref": "#/types/google-native:cloudsearch%2Fv1:ScoringConfigResponse",
            "description": "Configuration for ranking results."
          },
          "sourceConfig": {
            "description": "Configuration for a sources specified in data_source_restrictions.",
            "items": {
              "$ref": "#/types/google-native:cloudsearch%2Fv1:SourceConfigResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "dataSourceRestrictions",
          "defaultFacetOptions",
          "defaultSortOptions",
          "displayName",
          "enableAuditLog",
          "name",
          "operationIds",
          "queryInterpretationConfig",
          "returnResultThumbnailUrls",
          "scoringConfig",
          "sourceConfig"
        ],
        "type": "object"
      }
    },
    "google-native:cloudsupport/v2:getCase": {
      "description": "Retrieve a case. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/16033687\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$case\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().get( name=\"projects/some-project/cases/43595344\", ) print(request.execute()) ```",
      "inputs": {
        "properties": {
          "caseId": {
            "type": "string"
          },
          "v2Id": {
            "type": "string"
          },
          "v2Id1": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "caseId",
          "v2Id",
          "v2Id1"
        ]
      },
      "outputs": {
        "properties": {
          "classification": {
            "$ref": "#/types/google-native:cloudsupport%2Fv2:CaseClassificationResponse",
            "description": "The issue classification applicable to this case."
          },
          "contactEmail": {
            "description": "A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user's email address directly from their EUCs.",
            "type": "string"
          },
          "createTime": {
            "description": "The time this case was created.",
            "type": "string"
          },
          "creator": {
            "$ref": "#/types/google-native:cloudsupport%2Fv2:ActorResponse",
            "description": "The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support."
          },
          "description": {
            "description": "A broad description of the issue.",
            "type": "string"
          },
          "displayName": {
            "description": "The short summary of the issue reported in this case.",
            "type": "string"
          },
          "escalated": {
            "description": "Whether the case is currently escalated.",
            "type": "boolean"
          },
          "languageCode": {
            "description": "The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `\"en\"`, `\"zh-CN\"`, `\"zh-TW\"`, `\"ja\"`, `\"ko\"`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours",
            "type": "string"
          },
          "name": {
            "description": "The resource name for the case.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of this case.",
            "type": "string"
          },
          "state": {
            "description": "The current status of the support case.",
            "type": "string"
          },
          "subscriberEmailAddresses": {
            "description": "The email addresses to receive updates on this case.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "testCase": {
            "description": "Whether this case was created for internal API testing and should not be acted on by the support team.",
            "type": "boolean"
          },
          "timeZone": {
            "description": "The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time this case was last updated.",
            "type": "string"
          }
        },
        "required": [
          "classification",
          "contactEmail",
          "createTime",
          "creator",
          "description",
          "displayName",
          "escalated",
          "languageCode",
          "name",
          "priority",
          "state",
          "subscriberEmailAddresses",
          "testCase",
          "timeZone",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudsupport/v2beta:getCase": {
      "description": "Retrieve a case. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/16033687\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$case\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().get( name=\"projects/some-project/cases/43595344\", ) print(request.execute()) ```",
      "inputs": {
        "properties": {
          "caseId": {
            "type": "string"
          },
          "v2betaId1": {
            "type": "string"
          },
          "v2betumId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "caseId",
          "v2betaId1",
          "v2betumId"
        ]
      },
      "outputs": {
        "properties": {
          "classification": {
            "$ref": "#/types/google-native:cloudsupport%2Fv2beta:CaseClassificationResponse",
            "description": "The issue classification applicable to this case."
          },
          "contactEmail": {
            "description": "A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user's email address directly from their EUCs.",
            "type": "string"
          },
          "createTime": {
            "description": "The time this case was created.",
            "type": "string"
          },
          "creator": {
            "$ref": "#/types/google-native:cloudsupport%2Fv2beta:ActorResponse",
            "description": "The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support."
          },
          "description": {
            "description": "A broad description of the issue.",
            "type": "string"
          },
          "displayName": {
            "description": "The short summary of the issue reported in this case.",
            "type": "string"
          },
          "escalated": {
            "description": "Whether the case is currently escalated.",
            "type": "boolean"
          },
          "languageCode": {
            "description": "The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `\"en\"`, `\"zh-CN\"`, `\"zh-TW\"`, `\"ja\"`, `\"ko\"`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours",
            "type": "string"
          },
          "name": {
            "description": "The resource name for the case.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of this case.",
            "type": "string"
          },
          "severity": {
            "description": "REMOVED. The severity of this case. Use priority instead.",
            "type": "string"
          },
          "state": {
            "description": "The current status of the support case.",
            "type": "string"
          },
          "subscriberEmailAddresses": {
            "description": "The email addresses to receive updates on this case.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "testCase": {
            "description": "Whether this case was created for internal API testing and should not be acted on by the support team.",
            "type": "boolean"
          },
          "timeZone": {
            "description": "The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time this case was last updated.",
            "type": "string"
          }
        },
        "required": [
          "classification",
          "contactEmail",
          "createTime",
          "creator",
          "description",
          "displayName",
          "escalated",
          "languageCode",
          "name",
          "priority",
          "severity",
          "state",
          "subscriberEmailAddresses",
          "testCase",
          "timeZone",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2:getQueue": {
      "description": "Gets a queue.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineRoutingOverride": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineRoutingResponse",
            "description": "Overrides for task-level app_engine_routing. These settings apply only to App Engine tasks in this queue. Http tasks are not affected. If set, `app_engine_routing_override` is used for all App Engine tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
          },
          "httpTarget": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:HttpTargetResponse",
            "description": "Modifies HTTP target for HTTP tasks."
          },
          "name": {
            "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters.",
            "type": "string"
          },
          "purgeTime": {
            "description": "The last time this queue was purged. All tasks that were created before this time were purged. A queue can be purged using PurgeQueue, the [App Engine Task Queue SDK, or the Cloud Console](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue). Purge time will be truncated to the nearest microsecond. Purge time will be unset if the queue has never been purged.",
            "type": "string"
          },
          "rateLimits": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:RateLimitsResponse",
            "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts. However they control task attempts in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc). The queue's actual dispatch rate is the result of: * Number of tasks in the queue * User-specified throttling: rate_limits, retry_config, and the queue's state. * System throttling due to `429` (Too Many Requests) or `503` (Service Unavailable) responses from the worker, high error rates, or to smooth sudden large traffic spikes."
          },
          "retryConfig": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:RetryConfigResponse",
            "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
          },
          "stackdriverLoggingConfig": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:StackdriverLoggingConfigResponse",
            "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/). If this field is unset, then no logs are written."
          },
          "state": {
            "description": "The state of the queue. `state` can only be changed by calling PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https://cloud.google.com/appengine/docs/python/config/queueref). UpdateQueue cannot be used to change `state`.",
            "type": "string"
          }
        },
        "required": [
          "appEngineRoutingOverride",
          "httpTarget",
          "name",
          "purgeTime",
          "rateLimits",
          "retryConfig",
          "stackdriverLoggingConfig",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2:getQueueIamPolicy": {
      "description": "Gets the access control policy for a Queue. Returns an empty policy if the resource exists and does not have a policy set. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.getIamPolicy`",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudtasks%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2:getTask": {
      "description": "Gets a task.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          },
          "responseView": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId",
          "taskId"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineHttpRequest": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:AppEngineHttpRequestResponse",
            "description": "HTTP request that is sent to the App Engine app handler. An App Engine task is a task that has AppEngineHttpRequest set."
          },
          "createTime": {
            "description": "The time that the task was created. `create_time` will be truncated to the nearest second.",
            "type": "string"
          },
          "dispatchCount": {
            "description": "The number of attempts dispatched. This count includes attempts which have been dispatched but haven't received a response.",
            "type": "integer"
          },
          "dispatchDeadline": {
            "description": "The deadline for requests sent to the worker. If the worker does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry the task according to the RetryConfig. Note that when the request is cancelled, Cloud Tasks will stop listening for the response, but whether the worker stops processing depends on the worker. For example, if the worker is stuck, it may not react to cancelled requests. The default and maximum values depend on the type of request: * For HTTP tasks, the default is 10 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine tasks, 0 indicates that the request has the default deadline. The default deadline depends on the [scaling type](https://cloud.google.com/appengine/docs/standard/go/how-instances-are-managed#instance_scaling) of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. Regardless of the task's `dispatch_deadline`, the app handler will not run for longer than than the service's timeout. We recommend setting the `dispatch_deadline` to at most a few seconds more than the app handler's timeout. For more information see [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-handlers#timeouts). The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `dispatch_deadline` will be truncated to the nearest millisecond. The deadline is an approximate deadline.",
            "type": "string"
          },
          "firstAttempt": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:AttemptResponse",
            "description": "The status of the task's first attempt. Only dispatch_time will be set. The other Attempt information is not retained by Cloud Tasks."
          },
          "httpRequest": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:HttpRequestResponse",
            "description": "HTTP request that is sent to the worker. An HTTP task is a task that has HttpRequest set."
          },
          "lastAttempt": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2:AttemptResponse",
            "description": "The status of the task's last attempt."
          },
          "name": {
            "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters.",
            "type": "string"
          },
          "responseCount": {
            "description": "The number of attempts which have received a response.",
            "type": "integer"
          },
          "scheduleTime": {
            "description": "The time when the task is scheduled to be attempted or retried. `schedule_time` will be truncated to the nearest microsecond.",
            "type": "string"
          },
          "view": {
            "description": "The view specifies which subset of the Task has been returned.",
            "type": "string"
          }
        },
        "required": [
          "appEngineHttpRequest",
          "createTime",
          "dispatchCount",
          "dispatchDeadline",
          "firstAttempt",
          "httpRequest",
          "lastAttempt",
          "name",
          "responseCount",
          "scheduleTime",
          "view"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2beta2:getQueue": {
      "description": "Gets a queue.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineHttpTarget": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineHttpTargetResponse",
            "description": "App Engine HTTP target. An App Engine queue is a queue that has an AppEngineHttpTarget."
          },
          "httpTarget": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HttpTargetResponse",
            "description": "An http_target is used to override the target values for HTTP tasks."
          },
          "name": {
            "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters.",
            "type": "string"
          },
          "pullTarget": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:PullTargetResponse",
            "description": "Pull target. A pull queue is a queue that has a PullTarget."
          },
          "purgeTime": {
            "description": "The last time this queue was purged. All tasks that were created before this time were purged. A queue can be purged using PurgeQueue, the [App Engine Task Queue SDK, or the Cloud Console](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue). Purge time will be truncated to the nearest microsecond. Purge time will be unset if the queue has never been purged.",
            "type": "string"
          },
          "rateLimits": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:RateLimitsResponse",
            "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts however they control how tasks are attempted in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc)."
          },
          "retryConfig": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:RetryConfigResponse",
            "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
          },
          "state": {
            "description": "The state of the queue. `state` can only be changed by called PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https://cloud.google.com/appengine/docs/python/config/queueref). UpdateQueue cannot be used to change `state`.",
            "type": "string"
          },
          "stats": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:QueueStatsResponse",
            "description": "The realtime, informational statistics for a queue. In order to receive the statistics the caller should include this field in the FieldMask."
          },
          "taskTtl": {
            "description": "The maximum amount of time that a task will be retained in this queue. Queues created by Cloud Tasks have a default `task_ttl` of 31 days. After a task has lived for `task_ttl`, the task will be deleted regardless of whether it was dispatched or not. The `task_ttl` for queues created via queue.yaml/xml is equal to the maximum duration because there is a [storage quota](https://cloud.google.com/appengine/quotas#Task_Queue) for these queues. To view the maximum valid duration, see the documentation for Duration.",
            "type": "string"
          },
          "tombstoneTtl": {
            "description": "The task tombstone time to live (TTL). After a task is deleted or completed, the task's tombstone is retained for the length of time specified by `tombstone_ttl`. The tombstone is used by task de-duplication; another task with the same name can't be created until the tombstone has expired. For more information about task de-duplication, see the documentation for CreateTaskRequest. Queues created by Cloud Tasks have a default `tombstone_ttl` of 1 hour.",
            "type": "string"
          }
        },
        "required": [
          "appEngineHttpTarget",
          "httpTarget",
          "name",
          "pullTarget",
          "purgeTime",
          "rateLimits",
          "retryConfig",
          "state",
          "stats",
          "taskTtl",
          "tombstoneTtl"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2beta2:getQueueIamPolicy": {
      "description": "Gets the access control policy for a Queue. Returns an empty policy if the resource exists and does not have a policy set. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.getIamPolicy`",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2beta2:getTask": {
      "description": "Gets a task.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          },
          "responseView": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId",
          "taskId"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineHttpRequest": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:AppEngineHttpRequestResponse",
            "description": "App Engine HTTP request that is sent to the task's target. Can be set only if app_engine_http_target is set on the queue. An App Engine task is a task that has AppEngineHttpRequest set."
          },
          "createTime": {
            "description": "The time that the task was created. `create_time` will be truncated to the nearest second.",
            "type": "string"
          },
          "httpRequest": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:HttpRequestResponse",
            "description": "HTTP request that is sent to the task's target. An HTTP task is a task that has HttpRequest set."
          },
          "name": {
            "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters.",
            "type": "string"
          },
          "pullMessage": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:PullMessageResponse",
            "description": "LeaseTasks to process the task. Can be set only if pull_target is set on the queue. A pull task is a task that has PullMessage set."
          },
          "scheduleTime": {
            "description": "The time when the task is scheduled to be attempted. For App Engine queues, this is when the task will be attempted or retried. For pull queues, this is the time when the task is available to be leased; if a task is currently leased, this is the time when the current lease expires, that is, the time that the task was leased plus the lease_duration. `schedule_time` will be truncated to the nearest microsecond.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta2:TaskStatusResponse",
            "description": "The task status."
          },
          "view": {
            "description": "The view specifies which subset of the Task has been returned.",
            "type": "string"
          }
        },
        "required": [
          "appEngineHttpRequest",
          "createTime",
          "httpRequest",
          "name",
          "pullMessage",
          "scheduleTime",
          "status",
          "view"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2beta3:getQueue": {
      "description": "Gets a queue.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineHttpQueue": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineHttpQueueResponse",
            "description": "AppEngineHttpQueue settings apply only to App Engine tasks in this queue. Http tasks are not affected by this proto."
          },
          "httpTarget": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HttpTargetResponse",
            "description": "Modifies HTTP target for HTTP tasks."
          },
          "name": {
            "description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters.",
            "type": "string"
          },
          "purgeTime": {
            "description": "The last time this queue was purged. All tasks that were created before this time were purged. A queue can be purged using PurgeQueue, the [App Engine Task Queue SDK, or the Cloud Console](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue). Purge time will be truncated to the nearest microsecond. Purge time will be unset if the queue has never been purged.",
            "type": "string"
          },
          "rateLimits": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:RateLimitsResponse",
            "description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts. However they control task attempts in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc). The queue's actual dispatch rate is the result of: * Number of tasks in the queue * User-specified throttling: rate_limits, retry_config, and the queue's state. * System throttling due to `429` (Too Many Requests) or `503` (Service Unavailable) responses from the worker, high error rates, or to smooth sudden large traffic spikes."
          },
          "retryConfig": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:RetryConfigResponse",
            "description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
          },
          "stackdriverLoggingConfig": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:StackdriverLoggingConfigResponse",
            "description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/). If this field is unset, then no logs are written."
          },
          "state": {
            "description": "The state of the queue. `state` can only be changed by called PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https://cloud.google.com/appengine/docs/python/config/queueref). UpdateQueue cannot be used to change `state`.",
            "type": "string"
          },
          "stats": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:QueueStatsResponse",
            "description": "The realtime, informational statistics for a queue. In order to receive the statistics the caller should include this field in the FieldMask."
          },
          "taskTtl": {
            "description": "The maximum amount of time that a task will be retained in this queue. After a task has lived for `task_ttl`, the task will be deleted regardless of whether it was dispatched or not. The minimum value is 10 days. The maximum value is 10 years. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). Queues created by Cloud Tasks have a default `task_ttl` of 31 days. . Queues created by queue.yaml/xml have a fixed `task_ttl` of the maximum duration, because there is a [storage quota](https://cloud.google.com/appengine/quotas#Task_Queue) for these queues.",
            "type": "string"
          },
          "tombstoneTtl": {
            "description": "The task tombstone time to live (TTL). After a task is deleted or executed, the task's tombstone is retained for the length of time specified by `tombstone_ttl`. The tombstone is used by task de-duplication; another task with the same name can't be created until the tombstone has expired. For more information about task de-duplication, see the documentation for CreateTaskRequest. The minimum value is 1 hour. The maximum value is 9 days. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). Queues created by Cloud Tasks have a default `tombstone_ttl` of 1 hour.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of a queue (push or pull). `Queue.type` is an immutable property of the queue that is set at the queue creation time. When left unspecified, the default value of `PUSH` is selected.",
            "type": "string"
          }
        },
        "required": [
          "appEngineHttpQueue",
          "httpTarget",
          "name",
          "purgeTime",
          "rateLimits",
          "retryConfig",
          "stackdriverLoggingConfig",
          "state",
          "stats",
          "taskTtl",
          "tombstoneTtl",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2beta3:getQueueIamPolicy": {
      "description": "Gets the access control policy for a Queue. Returns an empty policy if the resource exists and does not have a policy set. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.getIamPolicy`",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtasks/v2beta3:getTask": {
      "description": "Gets a task.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queueId": {
            "type": "string"
          },
          "responseView": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queueId",
          "taskId"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineHttpRequest": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AppEngineHttpRequestResponse",
            "description": "HTTP request that is sent to the App Engine app handler. An App Engine task is a task that has AppEngineHttpRequest set."
          },
          "createTime": {
            "description": "The time that the task was created. `create_time` will be truncated to the nearest second.",
            "type": "string"
          },
          "dispatchCount": {
            "description": "The number of attempts dispatched. This count includes attempts which have been dispatched but haven't received a response.",
            "type": "integer"
          },
          "dispatchDeadline": {
            "description": "The deadline for requests sent to the worker. If the worker does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry the task according to the RetryConfig. Note that when the request is cancelled, Cloud Tasks will stop listening for the response, but whether the worker stops processing depends on the worker. For example, if the worker is stuck, it may not react to cancelled requests. The default and maximum values depend on the type of request: * For HTTP tasks, the default is 10 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine tasks, 0 indicates that the request has the default deadline. The default deadline depends on the [scaling type](https://cloud.google.com/appengine/docs/standard/go/how-instances-are-managed#instance_scaling) of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. Regardless of the task's `dispatch_deadline`, the app handler will not run for longer than than the service's timeout. We recommend setting the `dispatch_deadline` to at most a few seconds more than the app handler's timeout. For more information see [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-handlers#timeouts). The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `dispatch_deadline` will be truncated to the nearest millisecond. The deadline is an approximate deadline.",
            "type": "string"
          },
          "firstAttempt": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AttemptResponse",
            "description": "The status of the task's first attempt. Only dispatch_time will be set. The other Attempt information is not retained by Cloud Tasks."
          },
          "httpRequest": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:HttpRequestResponse",
            "description": "HTTP request that is sent to the task's target. An HTTP task is a task that has HttpRequest set."
          },
          "lastAttempt": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:AttemptResponse",
            "description": "The status of the task's last attempt."
          },
          "name": {
            "description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters.",
            "type": "string"
          },
          "pullMessage": {
            "$ref": "#/types/google-native:cloudtasks%2Fv2beta3:PullMessageResponse",
            "description": "Pull Message contained in a task in a PULL queue type. This payload type cannot be explicitly set through Cloud Tasks API. Its purpose, currently is to provide backward compatibility with App Engine Task Queue [pull](https://cloud.google.com/appengine/docs/standard/java/taskqueue/pull/) queues to provide a way to inspect contents of pull tasks through the CloudTasks.GetTask."
          },
          "responseCount": {
            "description": "The number of attempts which have received a response.",
            "type": "integer"
          },
          "scheduleTime": {
            "description": "The time when the task is scheduled to be attempted. For App Engine queues, this is when the task will be attempted or retried. `schedule_time` will be truncated to the nearest microsecond.",
            "type": "string"
          },
          "view": {
            "description": "The view specifies which subset of the Task has been returned.",
            "type": "string"
          }
        },
        "required": [
          "appEngineHttpRequest",
          "createTime",
          "dispatchCount",
          "dispatchDeadline",
          "firstAttempt",
          "httpRequest",
          "lastAttempt",
          "name",
          "pullMessage",
          "responseCount",
          "scheduleTime",
          "view"
        ],
        "type": "object"
      }
    },
    "google-native:cloudtrace/v2beta1:getTraceSink": {
      "description": "Get a trace sink by name under the parent resource (GCP project).",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "traceSinkId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "traceSinkId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "The canonical sink resource name, unique within the project. Must be of the form: projects/[PROJECT_NUMBER]/traceSinks/[SINK_ID]. E.g.: `\"projects/12345/traceSinks/my-project-trace-sink\"`. Sink identifiers are limited to 256 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.",
            "type": "string"
          },
          "outputConfig": {
            "$ref": "#/types/google-native:cloudtrace%2Fv2beta1:OutputConfigResponse",
            "description": "The export destination."
          },
          "writerIdentity": {
            "description": "A service account name for exporting the data. This field is set by sinks.create and sinks.update. The service account will need to be granted write access to the destination specified in the output configuration, see [Granting access for a resource](/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). To create tables and to write data, this account needs the `dataEditor` role. Read more about roles in the [BigQuery documentation](https://cloud.google.com/bigquery/docs/access-control). E.g.: \"service-00000001@00000002.iam.gserviceaccount.com\"",
            "type": "string"
          }
        },
        "required": [
          "name",
          "outputConfig",
          "writerIdentity"
        ],
        "type": "object"
      }
    },
    "google-native:composer/v1:getEnvironment": {
      "description": "Get an existing environment.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:composer%2Fv1:EnvironmentConfigResponse",
            "description": "Configuration parameters for this environment."
          },
          "createTime": {
            "description": "The time at which this environment was created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be \u003c= 128 bytes in size.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the environment, in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\" EnvironmentId must start with a lowercase letter followed by up to 63 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "state": {
            "description": "The current state of the environment.",
            "type": "string"
          },
          "storageConfig": {
            "$ref": "#/types/google-native:composer%2Fv1:StorageConfigResponse",
            "description": "Optional. Storage configuration for this environment."
          },
          "updateTime": {
            "description": "The time at which this environment was last modified.",
            "type": "string"
          },
          "uuid": {
            "description": "The UUID (Universally Unique IDentifier) associated with this environment. This value is generated when the environment is created.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "createTime",
          "labels",
          "name",
          "satisfiesPzs",
          "state",
          "storageConfig",
          "updateTime",
          "uuid"
        ],
        "type": "object"
      }
    },
    "google-native:composer/v1beta1:getEnvironment": {
      "description": "Get an existing environment.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:composer%2Fv1beta1:EnvironmentConfigResponse",
            "description": "Configuration parameters for this environment."
          },
          "createTime": {
            "description": "The time at which this environment was created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be \u003c= 128 bytes in size.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the environment, in the form: \"projects/{projectId}/locations/{locationId}/environments/{environmentId}\" EnvironmentId must start with a lowercase letter followed by up to 63 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "state": {
            "description": "The current state of the environment.",
            "type": "string"
          },
          "storageConfig": {
            "$ref": "#/types/google-native:composer%2Fv1beta1:StorageConfigResponse",
            "description": "Optional. Storage configuration for this environment."
          },
          "updateTime": {
            "description": "The time at which this environment was last modified.",
            "type": "string"
          },
          "uuid": {
            "description": "The UUID (Universally Unique IDentifier) associated with this environment. This value is generated when the environment is created.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "createTime",
          "labels",
          "name",
          "satisfiesPzs",
          "state",
          "storageConfig",
          "updateTime",
          "uuid"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getAddress": {
      "description": "Returns the specified address resource.",
      "inputs": {
        "properties": {
          "address": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "address",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "address": {
            "description": "The static IP address represented by this resource.",
            "type": "string"
          },
          "addressType": {
            "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "ipv6EndpointType": {
            "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#address for addresses.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
            "type": "string"
          },
          "prefixLength": {
            "description": "The prefix length if the resource represents an IP range.",
            "type": "integer"
          },
          "purpose": {
            "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "status": {
            "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
            "type": "string"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose.",
            "type": "string"
          },
          "users": {
            "description": "The URLs of the resources that are using this address.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "address",
          "addressType",
          "creationTimestamp",
          "description",
          "ipVersion",
          "ipv6EndpointType",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "networkTier",
          "prefixLength",
          "purpose",
          "region",
          "selfLink",
          "selfLinkWithId",
          "status",
          "subnetwork",
          "users"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getAutoscaler": {
      "description": "Returns the specified autoscaler resource.",
      "inputs": {
        "properties": {
          "autoscaler": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscaler",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyResponse",
            "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#autoscaler for autoscalers.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "recommendedSize": {
            "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction.",
            "type": "integer"
          },
          "region": {
            "description": "URL of the region where the instance group resides (for autoscalers living in regional scope).",
            "type": "string"
          },
          "scalingScheduleStatus": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Status information of existing scaling schedules.",
            "type": "object"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "status": {
            "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future.",
            "type": "string"
          },
          "statusDetails": {
            "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AutoscalerStatusDetailsResponse"
            },
            "type": "array"
          },
          "target": {
            "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "recommendedSize",
          "region",
          "scalingScheduleStatus",
          "selfLink",
          "selfLinkWithId",
          "status",
          "statusDetails",
          "target",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getBackendBucket": {
      "description": "Returns the specified BackendBucket resource.",
      "inputs": {
        "properties": {
          "backendBucket": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendBucket"
        ]
      },
      "outputs": {
        "properties": {
          "bucketName": {
            "description": "Cloud Storage bucket name.",
            "type": "string"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendBucketCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendBucket."
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customResponseHeaders": {
            "description": "Headers that the Application Load Balancer should add to proxied responses.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend bucket.",
            "type": "string"
          },
          "enableCdn": {
            "description": "If true, enable Cloud CDN for this BackendBucket.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          }
        },
        "required": [
          "bucketName",
          "cdnPolicy",
          "compressionMode",
          "creationTimestamp",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCdn",
          "kind",
          "name",
          "selfLink",
          "selfLinkWithId"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getBackendBucketIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getBackendService": {
      "description": "Returns the specified BackendService resource.",
      "inputs": {
        "properties": {
          "backendService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendService"
        ]
      },
      "outputs": {
        "properties": {
          "affinityCookieTtlSec": {
            "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "integer"
          },
          "backends": {
            "description": "The list of backends that serve this BackendService.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BackendResponse"
            },
            "type": "array"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
          },
          "circuitBreakers": {
            "$ref": "#/types/google-native:compute%2Falpha:CircuitBreakersResponse"
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "connectionDraining": {
            "$ref": "#/types/google-native:compute%2Falpha:ConnectionDrainingResponse"
          },
          "connectionTrackingPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceConnectionTrackingPolicyResponse",
            "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
          },
          "consistentHash": {
            "$ref": "#/types/google-native:compute%2Falpha:ConsistentHashLoadBalancerSettingsResponse",
            "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customRequestHeaders": {
            "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "customResponseHeaders": {
            "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend service.",
            "type": "string"
          },
          "enableCDN": {
            "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
            "type": "boolean"
          },
          "failoverPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceFailoverPolicyResponse",
            "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "iap": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIAPResponse",
            "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
          },
          "ipAddressSelectionPolicy": {
            "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#backendService for backend services.",
            "type": "string"
          },
          "loadBalancingScheme": {
            "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
            "type": "string"
          },
          "localityLbPolicies": {
            "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
            },
            "type": "array"
          },
          "localityLbPolicy": {
            "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLogConfigResponse",
            "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
          },
          "maxStreamDuration": {
            "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
            "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
          },
          "metadatas": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL.",
            "type": "string"
          },
          "outlierDetection": {
            "$ref": "#/types/google-native:compute%2Falpha:OutlierDetectionResponse",
            "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
          },
          "port": {
            "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "type": "integer"
          },
          "portName": {
            "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
            "type": "string"
          },
          "protocol": {
            "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this backend service.",
            "type": "string"
          },
          "securitySettings": {
            "$ref": "#/types/google-native:compute%2Falpha:SecuritySettingsResponse",
            "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serviceBindings": {
            "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceLbPolicy": {
            "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global.",
            "type": "string"
          },
          "sessionAffinity": {
            "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
            "type": "string"
          },
          "subsetting": {
            "$ref": "#/types/google-native:compute%2Falpha:SubsettingResponse"
          },
          "timeoutSec": {
            "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration.",
            "type": "integer"
          },
          "usedBy": {
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BackendServiceUsedByResponse"
            },
            "type": "array"
          },
          "vpcNetworkScope": {
            "description": "The network scope of the backends that can be added to the backend service. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A backend service with the VPC scope set to GLOBAL_VPC_NETWORK is only allowed to have backends in global VPC networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the backend service is only allowed to have backends in regional networks in the same scope as the backend service. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
            "type": "string"
          }
        },
        "required": [
          "affinityCookieTtlSec",
          "backends",
          "cdnPolicy",
          "circuitBreakers",
          "compressionMode",
          "connectionDraining",
          "connectionTrackingPolicy",
          "consistentHash",
          "creationTimestamp",
          "customRequestHeaders",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCDN",
          "failoverPolicy",
          "fingerprint",
          "healthChecks",
          "iap",
          "ipAddressSelectionPolicy",
          "kind",
          "loadBalancingScheme",
          "localityLbPolicies",
          "localityLbPolicy",
          "logConfig",
          "maxStreamDuration",
          "metadatas",
          "name",
          "network",
          "outlierDetection",
          "port",
          "portName",
          "protocol",
          "region",
          "securityPolicy",
          "securitySettings",
          "selfLink",
          "selfLinkWithId",
          "serviceBindings",
          "serviceLbPolicy",
          "sessionAffinity",
          "subsetting",
          "timeoutSec",
          "usedBy",
          "vpcNetworkScope"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getBackendServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getDisk": {
      "description": "Returns the specified persistent disk.",
      "inputs": {
        "properties": {
          "disk": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "disk",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "accessMode": {
            "description": "The access mode of the disk. - READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. - READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. - READ_ONLY_MANY: The AccessMode means the disk can be attached to multiple instances in RO mode. The AccessMode is only valid for Hyperdisk disk types.",
            "type": "string"
          },
          "architecture": {
            "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "asyncPrimaryDisk": {
            "$ref": "#/types/google-native:compute%2Falpha:DiskAsyncReplicationResponse",
            "description": "Disk asynchronously replicated into this disk."
          },
          "asyncSecondaryDisks": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A list of disks this disk is asynchronously replicated to.",
            "type": "object"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
          },
          "enableConfidentialCompute": {
            "description": "Whether this disk is using confidential compute mode.",
            "type": "boolean"
          },
          "eraseWindowsVssSignature": {
            "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature.",
            "type": "boolean"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "interface": {
            "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
            "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#disk for disks.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastAttachTimestamp": {
            "description": "Last attach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastDetachTimestamp": {
            "description": "Last detach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this disk.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of publicly visible licenses. Reserved for Google's use.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "locked": {
            "description": "The field indicates if the disk is created from a locked source image. Attachment of a disk created from a locked source image will cause the following operations to become irreversibly prohibited: - R/W or R/O disk attachment to any other instance - Disk detachment. And the disk can only be deleted when the instance is deleted - Creation of images or snapshots - Disk cloning Furthermore, the instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Further attachment of secondary disks. - Detachment of any disks - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true for locked disks - Attach a locked disk with --auto-delete parameter set to false ",
            "type": "boolean"
          },
          "multiWriter": {
            "description": "Indicates whether or not the disk can be read/write attached to more than one instance.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "options": {
            "description": "Internal use only.",
            "type": "string"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Falpha:DiskParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "physicalBlockSizeBytes": {
            "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project.",
            "type": "string"
          },
          "provisionedIops": {
            "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.",
            "type": "string"
          },
          "provisionedThroughput": {
            "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "replicaZones": {
            "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this disk for automatic snapshot creations.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:DiskResourceStatusResponse",
            "description": "Status information for the disk resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "sizeGb": {
            "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicy": {
            "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicyId": {
            "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used.",
            "type": "string"
          },
          "sourceImage": {
            "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
            "type": "string"
          },
          "sourceInstantSnapshot": {
            "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot ",
            "type": "string"
          },
          "sourceInstantSnapshotId": {
            "description": "The unique ID of the instant snapshot used to create this disk. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact version of the instant snapshot that was used.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
            "type": "string"
          },
          "sourceStorageObject": {
            "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead.",
            "type": "string"
          },
          "status": {
            "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. ",
            "type": "string"
          },
          "storagePool": {
            "description": "The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /storagePools/storagePool - projects/project/zones/zone/storagePools/storagePool - zones/zone/storagePools/storagePool ",
            "type": "string"
          },
          "storageType": {
            "deprecationMessage": "[Deprecated] Storage type of the persistent disk.",
            "description": "[Deprecated] Storage type of the persistent disk.",
            "type": "string"
          },
          "type": {
            "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types.",
            "type": "string"
          },
          "userLicenses": {
            "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch ",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "users": {
            "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "zone": {
            "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "accessMode",
          "architecture",
          "asyncPrimaryDisk",
          "asyncSecondaryDisks",
          "creationTimestamp",
          "description",
          "diskEncryptionKey",
          "enableConfidentialCompute",
          "eraseWindowsVssSignature",
          "guestOsFeatures",
          "interface",
          "kind",
          "labelFingerprint",
          "labels",
          "lastAttachTimestamp",
          "lastDetachTimestamp",
          "licenseCodes",
          "licenses",
          "locationHint",
          "locked",
          "multiWriter",
          "name",
          "options",
          "params",
          "physicalBlockSizeBytes",
          "provisionedIops",
          "provisionedThroughput",
          "region",
          "replicaZones",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "sizeGb",
          "sourceConsistencyGroupPolicy",
          "sourceConsistencyGroupPolicyId",
          "sourceDisk",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceInstantSnapshot",
          "sourceInstantSnapshotId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceStorageObject",
          "status",
          "storagePool",
          "storageType",
          "type",
          "userLicenses",
          "users",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getDiskIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getExternalVpnGateway": {
      "description": "Returns the specified externalVpnGateway. Get a list of available externalVpnGateways by making a list() request.",
      "inputs": {
        "properties": {
          "externalVpnGateway": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "externalVpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "interfaces": {
            "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:ExternalVpnGatewayInterfaceResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#externalVpnGateway for externalVpnGateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this ExternalVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an ExternalVpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "redundancyType": {
            "description": "Indicates the user-supplied redundancy type of this external VPN gateway.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "interfaces",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "redundancyType",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getFirewall": {
      "description": "Returns the specified firewall.",
      "inputs": {
        "properties": {
          "firewall": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewall"
        ]
      },
      "outputs": {
        "properties": {
          "allowed": {
            "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:FirewallAllowedItemResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "denied": {
            "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:FirewallDeniedItemResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "destinationRanges": {
            "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "direction": {
            "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields.",
            "type": "string"
          },
          "disabled": {
            "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled.",
            "type": "boolean"
          },
          "enableLogging": {
            "deprecationMessage": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging.",
            "description": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#firewall for firewall rules.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:FirewallLogConfigResponse",
            "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default ",
            "type": "string"
          },
          "priority": {
            "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`.",
            "type": "integer"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "sourceRanges": {
            "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sourceServiceAccounts": {
            "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sourceTags": {
            "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetServiceAccounts": {
            "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetTags": {
            "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "allowed",
          "creationTimestamp",
          "denied",
          "description",
          "destinationRanges",
          "direction",
          "disabled",
          "enableLogging",
          "kind",
          "logConfig",
          "name",
          "network",
          "priority",
          "selfLink",
          "selfLinkWithId",
          "sourceRanges",
          "sourceServiceAccounts",
          "sourceTags",
          "targetServiceAccounts",
          "targetTags"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getFirewallPolicy": {
      "description": "Returns the specified firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "vpcNetworkScope": {
            "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName",
          "vpcNetworkScope"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getForwardingRule": {
      "description": "Returns the specified ForwardingRule resource.",
      "inputs": {
        "properties": {
          "forwardingRule": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "forwardingRule",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "allPorts": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. ",
            "type": "boolean"
          },
          "allowGlobalAccess": {
            "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
            "type": "boolean"
          },
          "allowPscGlobalAccess": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region.",
            "type": "boolean"
          },
          "allowPscPacketInjection": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field.",
            "type": "boolean"
          },
          "backendService": {
            "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
            "type": "string"
          },
          "baseForwardingRule": {
            "description": "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.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "ipAddress": {
            "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number.",
            "type": "string"
          },
          "ipCollection": {
            "description": "Resource reference of a PublicDelegatedPrefix. The PDP must be a sub-PDP in EXTERNAL_IPV6_FORWARDING_RULE_CREATION mode. Use one of the following formats to specify a sub-PDP when creating an IPv6 NetLB forwarding rule using BYOIP: Full resource URL, as in https://www.googleapis.com/compute/v1/projects/project_id/regions/region /publicDelegatedPrefixes/sub-pdp-name Partial URL, as in: - projects/project_id/regions/region/publicDelegatedPrefixes/sub-pdp-name - regions/region/publicDelegatedPrefixes/sub-pdp-name ",
            "type": "string"
          },
          "ipProtocol": {
            "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "isMirroringCollector": {
            "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "loadBalancingScheme": {
            "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
            "type": "string"
          },
          "metadataFilters": {
            "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:MetadataFilterResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter.",
            "type": "string"
          },
          "network": {
            "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
            "type": "string"
          },
          "noAutomateDnsZone": {
            "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. Once set, this field is not mutable.",
            "type": "boolean"
          },
          "portRange": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?",
            "type": "string"
          },
          "ports": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pscConnectionId": {
            "description": "The PSC connection id of the PSC Forwarding Rule.",
            "type": "string"
          },
          "pscConnectionStatus": {
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serviceDirectoryRegistrations": {
            "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleServiceDirectoryRegistrationResponse"
            },
            "type": "array"
          },
          "serviceLabel": {
            "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
            "type": "string"
          },
          "serviceName": {
            "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
            "type": "string"
          },
          "sourceIpRanges": {
            "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subnetwork": {
            "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
            "type": "string"
          },
          "target": {
            "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. ",
            "type": "string"
          }
        },
        "required": [
          "allPorts",
          "allowGlobalAccess",
          "allowPscGlobalAccess",
          "allowPscPacketInjection",
          "backendService",
          "baseForwardingRule",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipAddress",
          "ipCollection",
          "ipProtocol",
          "ipVersion",
          "isMirroringCollector",
          "kind",
          "labelFingerprint",
          "labels",
          "loadBalancingScheme",
          "metadataFilters",
          "name",
          "network",
          "networkTier",
          "noAutomateDnsZone",
          "portRange",
          "ports",
          "pscConnectionId",
          "pscConnectionStatus",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serviceDirectoryRegistrations",
          "serviceLabel",
          "serviceName",
          "sourceIpRanges",
          "subnetwork",
          "target"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getFutureReservation": {
      "description": "Retrieves information about the specified future reservation.",
      "inputs": {
        "properties": {
          "futureReservation": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "futureReservation",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoCreatedReservationsDeleteTime": {
            "description": "Future timestamp when the FR auto-created reservations will be deleted by GCE. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\"\u003eRFC3339 value.",
            "type": "string"
          },
          "autoCreatedReservationsDuration": {
            "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
            "description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by GCE. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
          },
          "autoDeleteAutoCreatedReservations": {
            "description": "Setting for enabling or disabling automatic deletion for auto-created reservation. If set to true, auto-created reservations will be deleted at Future Reservation's end time (default) or at user's defined timestamp if any of the [auto_created_reservations_delete_time, auto_created_reservations_duration] values is specified. For keeping auto-created reservation indefinitely, this value should be set to false.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this future reservation in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the future reservation.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#futureReservation for future reservations.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "namePrefix": {
            "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-####.",
            "type": "string"
          },
          "planningStatus": {
            "description": "Planning state before being submitted for evaluation",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shareSettings": {
            "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsResponse",
            "description": "List of Projects/Folders to share with."
          },
          "specificSkuProperties": {
            "$ref": "#/types/google-native:compute%2Falpha:FutureReservationSpecificSKUPropertiesResponse",
            "description": "Future Reservation configuration to indicate instance properties and total count."
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Falpha:FutureReservationStatusResponse",
            "description": "[Output only] Status of the Future Reservation"
          },
          "timeWindow": {
            "$ref": "#/types/google-native:compute%2Falpha:FutureReservationTimeWindowResponse",
            "description": "Time window for this Future Reservation."
          },
          "zone": {
            "description": "URL of the Zone where this future reservation resides.",
            "type": "string"
          }
        },
        "required": [
          "autoCreatedReservationsDeleteTime",
          "autoCreatedReservationsDuration",
          "autoDeleteAutoCreatedReservations",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "namePrefix",
          "planningStatus",
          "selfLink",
          "selfLinkWithId",
          "shareSettings",
          "specificSkuProperties",
          "status",
          "timeWindow",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getGlobalAddress": {
      "description": "Returns the specified address resource.",
      "inputs": {
        "properties": {
          "address": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "address"
        ]
      },
      "outputs": {
        "properties": {
          "address": {
            "description": "The static IP address represented by this resource.",
            "type": "string"
          },
          "addressType": {
            "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "ipv6EndpointType": {
            "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#address for addresses.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
            "type": "string"
          },
          "prefixLength": {
            "description": "The prefix length if the resource represents an IP range.",
            "type": "integer"
          },
          "purpose": {
            "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "status": {
            "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
            "type": "string"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose.",
            "type": "string"
          },
          "users": {
            "description": "The URLs of the resources that are using this address.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "address",
          "addressType",
          "creationTimestamp",
          "description",
          "ipVersion",
          "ipv6EndpointType",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "networkTier",
          "prefixLength",
          "purpose",
          "region",
          "selfLink",
          "selfLinkWithId",
          "status",
          "subnetwork",
          "users"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getGlobalForwardingRule": {
      "description": "Returns the specified GlobalForwardingRule resource. Gets a list of available forwarding rules by making a list() request.",
      "inputs": {
        "properties": {
          "forwardingRule": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "forwardingRule"
        ]
      },
      "outputs": {
        "properties": {
          "allPorts": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. ",
            "type": "boolean"
          },
          "allowGlobalAccess": {
            "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
            "type": "boolean"
          },
          "allowPscGlobalAccess": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region.",
            "type": "boolean"
          },
          "allowPscPacketInjection": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field.",
            "type": "boolean"
          },
          "backendService": {
            "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
            "type": "string"
          },
          "baseForwardingRule": {
            "description": "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.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "ipAddress": {
            "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number.",
            "type": "string"
          },
          "ipCollection": {
            "description": "Resource reference of a PublicDelegatedPrefix. The PDP must be a sub-PDP in EXTERNAL_IPV6_FORWARDING_RULE_CREATION mode. Use one of the following formats to specify a sub-PDP when creating an IPv6 NetLB forwarding rule using BYOIP: Full resource URL, as in https://www.googleapis.com/compute/v1/projects/project_id/regions/region /publicDelegatedPrefixes/sub-pdp-name Partial URL, as in: - projects/project_id/regions/region/publicDelegatedPrefixes/sub-pdp-name - regions/region/publicDelegatedPrefixes/sub-pdp-name ",
            "type": "string"
          },
          "ipProtocol": {
            "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "isMirroringCollector": {
            "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "loadBalancingScheme": {
            "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
            "type": "string"
          },
          "metadataFilters": {
            "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:MetadataFilterResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter.",
            "type": "string"
          },
          "network": {
            "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
            "type": "string"
          },
          "noAutomateDnsZone": {
            "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. Once set, this field is not mutable.",
            "type": "boolean"
          },
          "portRange": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?",
            "type": "string"
          },
          "ports": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pscConnectionId": {
            "description": "The PSC connection id of the PSC Forwarding Rule.",
            "type": "string"
          },
          "pscConnectionStatus": {
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serviceDirectoryRegistrations": {
            "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:ForwardingRuleServiceDirectoryRegistrationResponse"
            },
            "type": "array"
          },
          "serviceLabel": {
            "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
            "type": "string"
          },
          "serviceName": {
            "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
            "type": "string"
          },
          "sourceIpRanges": {
            "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subnetwork": {
            "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
            "type": "string"
          },
          "target": {
            "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. ",
            "type": "string"
          }
        },
        "required": [
          "allPorts",
          "allowGlobalAccess",
          "allowPscGlobalAccess",
          "allowPscPacketInjection",
          "backendService",
          "baseForwardingRule",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipAddress",
          "ipCollection",
          "ipProtocol",
          "ipVersion",
          "isMirroringCollector",
          "kind",
          "labelFingerprint",
          "labels",
          "loadBalancingScheme",
          "metadataFilters",
          "name",
          "network",
          "networkTier",
          "noAutomateDnsZone",
          "portRange",
          "ports",
          "pscConnectionId",
          "pscConnectionStatus",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serviceDirectoryRegistrations",
          "serviceLabel",
          "serviceName",
          "sourceIpRanges",
          "subnetwork",
          "target"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getGlobalNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "clientPortMappingMode": {
            "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional.",
            "type": "string"
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
            "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
            "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serverlessDeployment": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeploymentResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "type": {
            "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "clientPortMappingMode",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "loadBalancer",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serverlessDeployment",
          "size",
          "subnetwork",
          "type",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getGlobalPublicDelegatedPrefix": {
      "description": "Returns the specified global PublicDelegatedPrefix resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicDelegatedPrefix": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicDelegatedPrefix"
        ]
      },
      "outputs": {
        "properties": {
          "allocatablePrefixLength": {
            "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.",
            "type": "integer"
          },
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The IP address range, in CIDR format, represented by this public delegated prefix.",
            "type": "string"
          },
          "isLiveMigration": {
            "description": "If true, the prefix will be live migrated.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes.",
            "type": "string"
          },
          "mode": {
            "description": "The public delegated prefix mode for IPv6 only.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parentPrefix": {
            "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix.",
            "type": "string"
          },
          "publicDelegatedSubPrefixs": {
            "description": "The list of sub public delegated prefixes that exist for this public delegated prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL with id for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. ",
            "type": "string"
          }
        },
        "required": [
          "allocatablePrefixLength",
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipCidrRange",
          "isLiveMigration",
          "kind",
          "mode",
          "name",
          "parentPrefix",
          "publicDelegatedSubPrefixs",
          "region",
          "selfLink",
          "selfLinkWithId",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getHealthCheck": {
      "description": "Returns the specified HealthCheck resource.",
      "inputs": {
        "properties": {
          "healthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in 3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:GRPCHealthCheckResponse"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "http2HealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheckResponse"
          },
          "httpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheckResponse"
          },
          "httpsHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheckResponse"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:HealthCheckLogConfigResponse",
            "description": "Configure logging on this health check."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash.",
            "type": "string"
          },
          "region": {
            "description": "Region where the health check resides. Not applicable to global health checks.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "sourceRegions": {
            "description": "The list of cloud regions from which health checks are performed. If any regions are specified, then exactly 3 regions should be specified. The region names must be valid names of GCP regions. This can only be set for global health check. If this list is non-empty, then there are restrictions on what other health check fields are supported and what other resources can use this health check: - SSL, HTTP2, and GRPC protocols are not supported. - The TCP request field is not supported. - The proxyHeader field for HTTP, HTTPS, and TCP is not supported. - The checkIntervalSec field must be at least 30. - The health check cannot be used with BackendService nor with managed instance group auto-healing. ",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:SSLHealthCheckResponse"
          },
          "tcpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:TCPHealthCheckResponse"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "type": {
            "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
            "type": "string"
          },
          "udpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:UDPHealthCheckResponse"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "grpcHealthCheck",
          "healthyThreshold",
          "http2HealthCheck",
          "httpHealthCheck",
          "httpsHealthCheck",
          "kind",
          "logConfig",
          "name",
          "region",
          "selfLink",
          "selfLinkWithId",
          "sourceRegions",
          "sslHealthCheck",
          "tcpHealthCheck",
          "timeoutSec",
          "type",
          "udpHealthCheck",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getHttpHealthCheck": {
      "description": "Returns the specified HttpHealthCheck resource.",
      "inputs": {
        "properties": {
          "httpHealthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "httpHealthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "host": {
            "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "port": {
            "description": "The TCP port number for the HTTP health check request. The default value is 80.",
            "type": "integer"
          },
          "requestPath": {
            "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "healthyThreshold",
          "host",
          "kind",
          "name",
          "port",
          "requestPath",
          "selfLink",
          "selfLinkWithId",
          "timeoutSec",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getHttpsHealthCheck": {
      "description": "Returns the specified HttpsHealthCheck resource.",
      "inputs": {
        "properties": {
          "httpsHealthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "httpsHealthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "host": {
            "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "port": {
            "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
            "type": "integer"
          },
          "requestPath": {
            "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
            "type": "integer"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "healthyThreshold",
          "host",
          "kind",
          "name",
          "port",
          "requestPath",
          "selfLink",
          "selfLinkWithId",
          "timeoutSec",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getImage": {
      "description": "Returns the specified image.",
      "inputs": {
        "properties": {
          "image": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "image"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the image. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "archiveSizeBytes": {
            "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "deprecated": {
            "$ref": "#/types/google-native:compute%2Falpha:DeprecationStatusResponse",
            "description": "The deprecation status associated with this image."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the image when restored onto a persistent disk (in GB).",
            "type": "string"
          },
          "enableConfidentialCompute": {
            "description": "Whether this image is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk.",
            "type": "boolean"
          },
          "family": {
            "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.",
            "type": "string"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "imageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
          },
          "kind": {
            "description": "Type of the resource. Always compute#image for images.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an image.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this image.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "Any applicable license URI.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locked": {
            "description": "A flag for marketplace VM disk created from the image, which is designed for marketplace VM disk to prevent the proprietary data on the disk from being accessed unwantedly. The flag will be inherited by the disk created from the image. The disk with locked flag set to true will be prohibited from performing the operations below: - R/W or R/O disk attach - Disk detach, if disk is created via create-on-create - Create images - Create snapshots - Create disk clone (create disk from the current disk) The image with the locked field set to true will be prohibited from performing the operations below: - Create images from the current image - Update the locked field for the current image The instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Secondary disk attach - Create instant snapshot - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true ",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "rawDisk": {
            "$ref": "#/types/google-native:compute%2Falpha:ImageRawDiskResponse",
            "description": "The parameters of the raw disk image."
          },
          "rolloutOverride": {
            "$ref": "#/types/google-native:compute%2Falpha:RolloutPolicyResponse",
            "description": "A rollout policy to apply to this image. When specified, the rollout policy overrides per-zone references to the image via the associated image family. The rollout policy restricts the zones where this image is accessible when using a zonal image family reference. When the rollout policy does not include the user specified zone, or if the zone is rolled out, this image is accessible. The rollout policy for this image is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "shieldedInstanceInitialState": {
            "$ref": "#/types/google-native:compute%2Falpha:InitialStateConfigResponse",
            "description": "Set the secure boot keys of shielded instance."
          },
          "sourceDisk": {
            "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceDiskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "sourceImage": {
            "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name.",
            "type": "string"
          },
          "sourceType": {
            "description": "The type of the image used to create this disk. The default and only valid value is RAW.",
            "type": "string"
          },
          "status": {
            "description": "The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
            "type": "string"
          },
          "storageLocations": {
            "description": "Cloud Storage bucket storage location of the image (regional or multi-regional).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "userLicenses": {
            "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch ",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "architecture",
          "archiveSizeBytes",
          "creationTimestamp",
          "deprecated",
          "description",
          "diskSizeGb",
          "enableConfidentialCompute",
          "family",
          "guestOsFeatures",
          "imageEncryptionKey",
          "kind",
          "labelFingerprint",
          "labels",
          "licenseCodes",
          "licenses",
          "locked",
          "name",
          "rawDisk",
          "rolloutOverride",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "shieldedInstanceInitialState",
          "sourceDisk",
          "sourceDiskEncryptionKey",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceType",
          "status",
          "storageLocations",
          "userLicenses"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getImageIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstance": {
      "description": "Returns the specified Instance resource.",
      "inputs": {
        "properties": {
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "advancedMachineFeatures": {
            "$ref": "#/types/google-native:compute%2Falpha:AdvancedMachineFeaturesResponse",
            "description": "Controls for advanced machine-related behavior features."
          },
          "canIpForward": {
            "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding .",
            "type": "boolean"
          },
          "confidentialInstanceConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:ConfidentialInstanceConfigResponse"
          },
          "cpuPlatform": {
            "description": "The CPU platform used by this instance.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "deletionProtection": {
            "description": "Whether the resource should be protected against deletion.",
            "type": "boolean"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "disks": {
            "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AttachedDiskResponse"
            },
            "type": "array"
          },
          "displayDevice": {
            "$ref": "#/types/google-native:compute%2Falpha:DisplayDeviceResponse",
            "description": "Enables display device for the instance."
          },
          "eraseWindowsVssSignature": {
            "description": "Specifies whether the disks restored from source snapshots or source machine image should erase Windows specific VSS signature.",
            "type": "boolean"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the instance's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update the instance. You must always provide an up-to-date fingerprint hash in order to update the instance. To see the latest fingerprint, make get() request to the instance.",
            "type": "string"
          },
          "guestAccelerators": {
            "description": "A list of the type and count of accelerator cards attached to the instance.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfigResponse"
            },
            "type": "array"
          },
          "hostname": {
            "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS.",
            "type": "string"
          },
          "instanceEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
          },
          "keyRevocationActionType": {
            "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#instance for instances.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for this request, which is essentially a hash of the label's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the instance.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastStartTimestamp": {
            "description": "Last start timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastStopTimestamp": {
            "description": "Last stop timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastSuspendedTimestamp": {
            "description": "Last suspended timestamp in RFC3339 text format.",
            "type": "string"
          },
          "machineType": {
            "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:compute%2Falpha:MetadataResponse",
            "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
          },
          "minCpuPlatform": {
            "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\".",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "networkInterfaces": {
            "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:NetworkInterfaceResponse"
            },
            "type": "array"
          },
          "networkPerformanceConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkPerformanceConfigResponse"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "partnerMetadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Partner Metadata assigned to the instance. A map from a subdomain (namespace) to entries map.",
            "type": "object"
          },
          "postKeyRevocationActionType": {
            "description": "PostKeyRevocationActionType of the instance.",
            "type": "string"
          },
          "preservedStateSizeGb": {
            "description": "Total amount of preserved state for SUSPENDED instances. Read-only in the api.",
            "type": "string"
          },
          "privateIpv6GoogleAccess": {
            "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default.",
            "type": "string"
          },
          "reservationAffinity": {
            "$ref": "#/types/google-native:compute%2Falpha:ReservationAffinityResponse",
            "description": "Specifies the reservations that this instance can consume from."
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourceStatusResponse",
            "description": "Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "scheduling": {
            "$ref": "#/types/google-native:compute%2Falpha:SchedulingResponse",
            "description": "Sets the scheduling options for this instance."
          },
          "secureTags": {
            "description": "[Input Only] Secure tags to apply to this instance. These can be later modified by the update method. Maximum number of secure tags allowed is 50.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serviceAccounts": {
            "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:ServiceAccountResponse"
            },
            "type": "array"
          },
          "serviceIntegrationSpecs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Mapping of user-defined keys to specifications for service integrations. Currently only a single key-value pair is supported.",
            "type": "object"
          },
          "shieldedInstanceConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:ShieldedInstanceConfigResponse"
          },
          "shieldedInstanceIntegrityPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:ShieldedInstanceIntegrityPolicyResponse"
          },
          "shieldedVmConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:ShieldedVmConfigResponse",
            "description": "Deprecating, please use shielded_instance_config."
          },
          "shieldedVmIntegrityPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:ShieldedVmIntegrityPolicyResponse",
            "description": "Deprecating, please use shielded_instance_integrity_policy."
          },
          "sourceMachineImage": {
            "description": "Source machine image",
            "type": "string"
          },
          "sourceMachineImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Source machine image encryption key when creating an instance from a machine image."
          },
          "startRestricted": {
            "description": "Whether a VM has been restricted for start because Compute Engine has detected suspicious activity.",
            "type": "boolean"
          },
          "status": {
            "description": "The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING, and TERMINATED. For more information about the status of the instance, see Instance life cycle.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          },
          "tags": {
            "$ref": "#/types/google-native:compute%2Falpha:TagsResponse",
            "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
          },
          "upcomingMaintenance": {
            "$ref": "#/types/google-native:compute%2Falpha:UpcomingMaintenanceResponse",
            "description": "Specifies upcoming maintenance for the instance."
          },
          "zone": {
            "description": "URL of the zone where the instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "advancedMachineFeatures",
          "canIpForward",
          "confidentialInstanceConfig",
          "cpuPlatform",
          "creationTimestamp",
          "deletionProtection",
          "description",
          "disks",
          "displayDevice",
          "eraseWindowsVssSignature",
          "fingerprint",
          "guestAccelerators",
          "hostname",
          "instanceEncryptionKey",
          "keyRevocationActionType",
          "kind",
          "labelFingerprint",
          "labels",
          "lastStartTimestamp",
          "lastStopTimestamp",
          "lastSuspendedTimestamp",
          "machineType",
          "metadata",
          "minCpuPlatform",
          "name",
          "networkInterfaces",
          "networkPerformanceConfig",
          "params",
          "partnerMetadata",
          "postKeyRevocationActionType",
          "preservedStateSizeGb",
          "privateIpv6GoogleAccess",
          "reservationAffinity",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "scheduling",
          "secureTags",
          "selfLink",
          "selfLinkWithId",
          "serviceAccounts",
          "serviceIntegrationSpecs",
          "shieldedInstanceConfig",
          "shieldedInstanceIntegrityPolicy",
          "shieldedVmConfig",
          "shieldedVmIntegrityPolicy",
          "sourceMachineImage",
          "sourceMachineImageEncryptionKey",
          "startRestricted",
          "status",
          "statusMessage",
          "tags",
          "upcomingMaintenance",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstanceGroup": {
      "description": "Returns the specified zonal instance group. Get a list of available zonal instance groups by making a list() request. For managed instance groups, use the instanceGroupManagers or regionInstanceGroupManagers methods instead.",
      "inputs": {
        "properties": {
          "instanceGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance group in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroup for instance groups.",
            "type": "string"
          },
          "name": {
            "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. ",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:NamedPortResponse"
            },
            "type": "array"
          },
          "network": {
            "description": "The URL of the network to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0).",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the instance group is located (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance group. The server generates this URL.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "size": {
            "description": "The total number of instances in the instance group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0).",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "namedPorts",
          "network",
          "region",
          "selfLink",
          "selfLinkWithId",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstanceGroupManager": {
      "description": "Returns all of the details about the specified managed instance group.",
      "inputs": {
        "properties": {
          "instanceGroupManager": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroupManager",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "allInstancesConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAllInstancesConfigResponse",
            "description": "Specifies configuration that overrides the instance template configuration for the group."
          },
          "autoHealingPolicies": {
            "description": "The autohealing policy for this managed instance group. You can specify only one value.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicyResponse"
            },
            "type": "array"
          },
          "baseInstanceName": {
            "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this managed instance group in RFC3339 text format.",
            "type": "string"
          },
          "currentActions": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerActionsSummaryResponse",
            "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "distributionPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicyResponse",
            "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
          },
          "failoverAction": {
            "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager.",
            "type": "string"
          },
          "instanceFlexibilityPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceFlexibilityPolicyResponse",
            "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
          },
          "instanceGroup": {
            "description": "The URL of the Instance Group resource.",
            "type": "string"
          },
          "instanceLifecyclePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicyResponse",
            "description": "The repair policy for this managed instance group."
          },
          "instanceTemplate": {
            "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups.",
            "type": "string"
          },
          "listManagedInstancesResults": {
            "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
            "type": "string"
          },
          "name": {
            "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:NamedPortResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "The URL of the region where the managed instance group resides (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this managed instance group. The server defines this URL.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used.",
            "type": "string"
          },
          "standbyPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStandbyPolicyResponse",
            "description": "Standby policy for stopped and suspended instances."
          },
          "statefulPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:StatefulPolicyResponse",
            "description": "Stateful configuration for this Instanced Group Manager"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStatusResponse",
            "description": "The status of this managed instance group."
          },
          "targetPools": {
            "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetSize": {
            "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number.",
            "type": "integer"
          },
          "targetSizeUnit": {
            "description": "The unit of measure for the target size.",
            "type": "string"
          },
          "targetStoppedSize": {
            "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. ",
            "type": "integer"
          },
          "targetSuspendedSize": {
            "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. ",
            "type": "integer"
          },
          "updatePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyResponse",
            "description": "The update policy for this managed instance group."
          },
          "versions": {
            "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerVersionResponse"
            },
            "type": "array"
          },
          "zone": {
            "description": "The URL of a zone where the managed instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "allInstancesConfig",
          "autoHealingPolicies",
          "baseInstanceName",
          "creationTimestamp",
          "currentActions",
          "description",
          "distributionPolicy",
          "failoverAction",
          "fingerprint",
          "instanceFlexibilityPolicy",
          "instanceGroup",
          "instanceLifecyclePolicy",
          "instanceTemplate",
          "kind",
          "listManagedInstancesResults",
          "name",
          "namedPorts",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serviceAccount",
          "standbyPolicy",
          "statefulPolicy",
          "status",
          "targetPools",
          "targetSize",
          "targetSizeUnit",
          "targetStoppedSize",
          "targetSuspendedSize",
          "updatePolicy",
          "versions",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstanceGroupManagerResizeRequest": {
      "description": "Returns all of the details about the specified resize request.",
      "inputs": {
        "properties": {
          "instanceGroupManager": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "resizeRequest": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroupManager",
          "resizeRequest",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "count": {
            "description": "The count of instances to create as part of this resize request.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this resize request in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroupManagerResizeRequest for resize requests.",
            "type": "string"
          },
          "name": {
            "description": "The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "queuingPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:QueuingPolicyResponse",
            "description": "When set, defines queing parameters for the requested deferred capacity. When unset, the request starts provisioning immediately, or fails if immediate provisioning is not possible."
          },
          "requestedRunDuration": {
            "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
            "description": "Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted."
          },
          "resizeBy": {
            "description": "The number of instances to be created by this resize request. The group's target size will be increased by this number.",
            "type": "integer"
          },
          "selfLink": {
            "description": "The URL for this resize request. The server defines this URL.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "state": {
            "description": "[Output only] Current state of the request.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerResizeRequestStatusResponse",
            "description": "[Output only] Status of the request."
          },
          "zone": {
            "description": "The URL of a zone where the resize request is located. Populated only for zonal resize requests.",
            "type": "string"
          }
        },
        "required": [
          "count",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "queuingPolicy",
          "requestedRunDuration",
          "resizeBy",
          "selfLink",
          "selfLinkWithId",
          "state",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstanceTemplate": {
      "description": "Returns the specified instance template.",
      "inputs": {
        "properties": {
          "instanceTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceTemplate"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance template in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceTemplate for instance templates.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesResponse",
            "description": "The instance properties for this instance template."
          },
          "region": {
            "description": "URL of the region where the instance template resides. Only applicable for regional resources.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance template. The server defines this URL.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "sourceInstance": {
            "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceParams": {
            "$ref": "#/types/google-native:compute%2Falpha:SourceInstanceParamsResponse",
            "description": "The source instance params to use to create this instance template."
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "properties",
          "region",
          "selfLink",
          "selfLinkWithId",
          "sourceInstance",
          "sourceInstanceParams"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstanceTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstantSnapshot": {
      "description": "Returns the specified InstantSnapshot resource in the specified zone.",
      "inputs": {
        "properties": {
          "instantSnapshot": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instantSnapshot",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the instant snapshot. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the source disk, specified in GB.",
            "type": "string"
          },
          "guestFlush": {
            "description": "Whether to attempt an application consistent instant snapshot by informing the OS to prepare for the snapshot process.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#instantSnapshot for InstantSnapshot resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this InstantSnapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a InstantSnapshot.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:InstantSnapshotResourceStatusResponse",
            "description": "Status information for the instant snapshot resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this InstantSnapshot. This value may be used to determine whether the InstantSnapshot was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "status": {
            "description": "The status of the instantSnapshot. This can be CREATING, DELETING, FAILED, or READY.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "architecture",
          "creationTimestamp",
          "description",
          "diskSizeGb",
          "guestFlush",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "region",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "sourceDisk",
          "sourceDiskId",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInstantSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInterconnect": {
      "description": "Returns the specified Interconnect. Get a list of available Interconnects by making a list() request.",
      "inputs": {
        "properties": {
          "interconnect": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "interconnect"
        ]
      },
      "outputs": {
        "properties": {
          "adminEnabled": {
            "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true.",
            "type": "boolean"
          },
          "availableFeatures": {
            "description": "[Output only] List of features available for this Interconnect connection, which can take one of the following values: - MACSEC If present then the Interconnect connection is provisioned on MACsec capable hardware ports. If not present then the Interconnect connection is provisioned on non-MACsec capable ports and MACsec isn't supported and enabling MACsec fails.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "circuitInfos": {
            "description": "A list of CircuitInfo objects, that describe the individual circuits in this LAG.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:InterconnectCircuitInfoResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customerName": {
            "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expectedOutages": {
            "description": "A list of outages expected for this Interconnect.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:InterconnectOutageNotificationResponse"
            },
            "type": "array"
          },
          "googleIpAddress": {
            "description": "IP address configured on the Google side of the Interconnect link. This can be used only for ping tests.",
            "type": "string"
          },
          "googleReferenceId": {
            "description": "Google reference ID to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
            "type": "string"
          },
          "interconnectAttachments": {
            "description": "A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "interconnectType": {
            "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#interconnect for interconnects.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Interconnect.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "linkType": {
            "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
            "type": "string"
          },
          "location": {
            "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned.",
            "type": "string"
          },
          "macsec": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectMacsecResponse",
            "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
          },
          "macsecEnabled": {
            "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nocContactEmail": {
            "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation.",
            "type": "string"
          },
          "operationalStatus": {
            "description": "The current status of this Interconnect's functionality, which can take one of the following values: - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. ",
            "type": "string"
          },
          "peerIpAddress": {
            "description": "IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests.",
            "type": "string"
          },
          "provisionedLinkCount": {
            "description": "Number of links actually provisioned in this interconnect.",
            "type": "integer"
          },
          "remoteLocation": {
            "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to.",
            "type": "string"
          },
          "requestedFeatures": {
            "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "requestedLinkCount": {
            "description": "Target number of physical links in the link bundle, as requested by the customer.",
            "type": "integer"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "state": {
            "description": "The current state of Interconnect functionality, which can take one of the following values: - ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. - UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. - UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. ",
            "type": "string"
          }
        },
        "required": [
          "adminEnabled",
          "availableFeatures",
          "circuitInfos",
          "creationTimestamp",
          "customerName",
          "description",
          "expectedOutages",
          "googleIpAddress",
          "googleReferenceId",
          "interconnectAttachments",
          "interconnectType",
          "kind",
          "labelFingerprint",
          "labels",
          "linkType",
          "location",
          "macsec",
          "macsecEnabled",
          "name",
          "nocContactEmail",
          "operationalStatus",
          "peerIpAddress",
          "provisionedLinkCount",
          "remoteLocation",
          "requestedFeatures",
          "requestedLinkCount",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInterconnectAttachment": {
      "description": "Returns the specified interconnect attachment.",
      "inputs": {
        "properties": {
          "interconnectAttachment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "interconnectAttachment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "adminEnabled": {
            "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER.",
            "type": "boolean"
          },
          "bandwidth": {
            "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s ",
            "type": "string"
          },
          "candidateIpv6Subnets": {
            "description": "This field is not available.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "candidateSubnets": {
            "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cloudRouterIpAddress": {
            "description": "IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
            "type": "string"
          },
          "cloudRouterIpv6Address": {
            "description": "IPv6 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
            "type": "string"
          },
          "cloudRouterIpv6InterfaceId": {
            "description": "This field is not available.",
            "type": "string"
          },
          "configurationConstraints": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentConfigurationConstraintsResponse",
            "description": "Constraints for this attachment, if any. The attachment does not work if these constraints are not met."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customerRouterIpAddress": {
            "description": "IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
            "type": "string"
          },
          "customerRouterIpv6Address": {
            "description": "IPv6 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
            "type": "string"
          },
          "customerRouterIpv6InterfaceId": {
            "description": "This field is not available.",
            "type": "string"
          },
          "dataplaneVersion": {
            "description": "Dataplane version for this InterconnectAttachment. This field is only present for Dataplane version 2 and higher. Absence of this field in the API output indicates that the Dataplane is version 1.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "edgeAvailabilityDomain": {
            "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
            "type": "string"
          },
          "encryption": {
            "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. ",
            "type": "string"
          },
          "googleReferenceId": {
            "deprecationMessage": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
            "description": "Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
            "type": "string"
          },
          "interconnect": {
            "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through.",
            "type": "string"
          },
          "ipsecInternalAddresses": {
            "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "mtu": {
            "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440.",
            "type": "integer"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "operationalStatus": {
            "description": "The current status of whether or not this interconnect attachment is functional, which can take one of the following values: - OS_ACTIVE: The attachment has been turned up and is ready to use. - OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. ",
            "type": "string"
          },
          "pairingKey": {
            "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\"",
            "type": "string"
          },
          "partnerAsn": {
            "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
            "type": "string"
          },
          "partnerMetadata": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentPartnerMetadataResponse",
            "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
          },
          "privateInterconnectInfo": {
            "$ref": "#/types/google-native:compute%2Falpha:InterconnectAttachmentPrivateInfoResponse",
            "description": "Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
          },
          "region": {
            "description": "URL of the region where the regional interconnect attachment resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "remoteService": {
            "description": "If the attachment is on a Cross-Cloud Interconnect connection, this field contains the interconnect's remote location service provider. Example values: \"Amazon Web Services\" \"Microsoft Azure\". The field is set only for attachments on Cross-Cloud Interconnect connections. Its value is copied from the InterconnectRemoteLocation remoteService field.",
            "type": "string"
          },
          "router": {
            "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network \u0026 region within which the Cloud Router is configured.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations.",
            "type": "string"
          },
          "state": {
            "description": "The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: - ACTIVE: The attachment has been turned up and is ready to use. - UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. - PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. - DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted. ",
            "type": "string"
          },
          "subnetLength": {
            "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. ",
            "type": "integer"
          },
          "type": {
            "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. ",
            "type": "string"
          },
          "vlanTag8021q": {
            "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time.",
            "type": "integer"
          }
        },
        "required": [
          "adminEnabled",
          "bandwidth",
          "candidateIpv6Subnets",
          "candidateSubnets",
          "cloudRouterIpAddress",
          "cloudRouterIpv6Address",
          "cloudRouterIpv6InterfaceId",
          "configurationConstraints",
          "creationTimestamp",
          "customerRouterIpAddress",
          "customerRouterIpv6Address",
          "customerRouterIpv6InterfaceId",
          "dataplaneVersion",
          "description",
          "edgeAvailabilityDomain",
          "encryption",
          "googleReferenceId",
          "interconnect",
          "ipsecInternalAddresses",
          "kind",
          "labelFingerprint",
          "labels",
          "mtu",
          "name",
          "operationalStatus",
          "pairingKey",
          "partnerAsn",
          "partnerMetadata",
          "privateInterconnectInfo",
          "region",
          "remoteService",
          "router",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "stackType",
          "state",
          "subnetLength",
          "type",
          "vlanTag8021q"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInterconnectAttachmentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getInterconnectIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getLicense": {
      "description": "Returns the specified License resource. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "inputs": {
        "properties": {
          "license": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "license"
        ]
      },
      "outputs": {
        "properties": {
          "chargesUseFee": {
            "deprecationMessage": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee.",
            "description": "Deprecated. This field no longer reflects whether a license charges a usage fee.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#license for licenses.",
            "type": "string"
          },
          "licenseCode": {
            "description": "The unique code used to attach this license to images, snapshots, and disks.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035.",
            "type": "string"
          },
          "resourceRequirements": {
            "$ref": "#/types/google-native:compute%2Falpha:LicenseResourceRequirementsResponse"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "transferable": {
            "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk.",
            "type": "boolean"
          }
        },
        "required": [
          "chargesUseFee",
          "creationTimestamp",
          "description",
          "kind",
          "licenseCode",
          "name",
          "resourceRequirements",
          "selfLink",
          "selfLinkWithId",
          "transferable"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getLicenseCodeIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getLicenseIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getMachineImage": {
      "description": "Returns the specified machine image.",
      "inputs": {
        "properties": {
          "machineImage": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "machineImage"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this machine image in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "guestFlush": {
            "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process.",
            "type": "boolean"
          },
          "instanceProperties": {
            "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesResponse",
            "description": "Properties of source instance"
          },
          "kind": {
            "description": "The resource type, which is always compute#machineImage for machine image.",
            "type": "string"
          },
          "machineImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "savedDisks": {
            "description": "An array of Machine Image specific properties for disks attached to the source instance",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SavedDiskResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "The URL for this machine image. The server defines this URL.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "sourceDiskEncryptionKeys": {
            "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SourceDiskEncryptionKeyResponse"
            },
            "type": "array"
          },
          "sourceInstance": {
            "description": "The source instance used to create the machine image. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceProperties": {
            "$ref": "#/types/google-native:compute%2Falpha:SourceInstancePropertiesResponse",
            "description": "DEPRECATED: Please use instance_properties instead for source instance related properties. New properties will not be added to this field."
          },
          "status": {
            "description": "The status of the machine image. One of the following values: INVALID, CREATING, READY, DELETING, and UPLOADING.",
            "type": "string"
          },
          "storageLocations": {
            "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "totalStorageBytes": {
            "description": "Total size of the storage used by the machine image.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "guestFlush",
          "instanceProperties",
          "kind",
          "machineImageEncryptionKey",
          "name",
          "satisfiesPzs",
          "savedDisks",
          "selfLink",
          "selfLinkWithId",
          "sourceDiskEncryptionKeys",
          "sourceInstance",
          "sourceInstanceProperties",
          "status",
          "storageLocations",
          "totalStorageBytes"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getMachineImageIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNetwork": {
      "description": "Returns the specified network.",
      "inputs": {
        "properties": {
          "network": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "network"
        ]
      },
      "outputs": {
        "properties": {
          "autoCreateSubnetworks": {
            "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "enableUlaInternalIpv6": {
            "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. .",
            "type": "boolean"
          },
          "firewallPolicy": {
            "description": "URL of the firewall policy the network is associated with.",
            "type": "string"
          },
          "gatewayIPv4": {
            "description": "The gateway address for default routing out of the network, selected by Google Cloud.",
            "type": "string"
          },
          "internalIpv6Range": {
            "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. .",
            "type": "string"
          },
          "ipv4Range": {
            "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
            "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#network for networks.",
            "type": "string"
          },
          "mtu": {
            "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460.",
            "type": "integer"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "networkFirewallPolicyEnforcementOrder": {
            "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified.",
            "type": "string"
          },
          "peerings": {
            "description": "A list of network peerings for the resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:NetworkPeeringResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the regional network resides. This field is not applicable to global network. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "routingConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkRoutingConfigResponse",
            "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "subnetworks": {
            "description": "Server-defined fully-qualified URLs for all subnetworks in this VPC network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "autoCreateSubnetworks",
          "creationTimestamp",
          "description",
          "enableUlaInternalIpv6",
          "firewallPolicy",
          "gatewayIPv4",
          "internalIpv6Range",
          "ipv4Range",
          "kind",
          "mtu",
          "name",
          "networkFirewallPolicyEnforcementOrder",
          "peerings",
          "region",
          "routingConfig",
          "selfLink",
          "selfLinkWithId",
          "subnetworks"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNetworkAttachment": {
      "description": "Returns the specified NetworkAttachment resource in the given scope.",
      "inputs": {
        "properties": {
          "networkAttachment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkAttachment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "connectionEndpoints": {
            "description": "An array of connections for all the producers connected to this network attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:NetworkAttachmentConnectedEndpointResponse"
            },
            "type": "array"
          },
          "connectionPreference": {
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. An up-to-date fingerprint must be provided in order to patch.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network which the Network Attachment belongs to. Practically it is inferred by fetching the network of the first subnetwork associated. Because it is required that all the subnetworks must be from the same network, it is assured that the Network Attachment belongs to the same network as all the subnetworks.",
            "type": "string"
          },
          "producerAcceptLists": {
            "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "producerRejectLists": {
            "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the network attachment resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "subnetworks": {
            "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "connectionEndpoints",
          "connectionPreference",
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "network",
          "producerAcceptLists",
          "producerRejectLists",
          "region",
          "selfLink",
          "selfLinkWithId",
          "subnetworks"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNetworkAttachmentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNetworkEdgeSecurityService": {
      "description": "Gets a specified NetworkEdgeSecurityService.",
      "inputs": {
        "properties": {
          "networkEdgeSecurityService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEdgeSecurityService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a NetworkEdgeSecurityService. An up-to-date fingerprint must be provided in order to update the NetworkEdgeSecurityService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a NetworkEdgeSecurityService.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#networkEdgeSecurityService for NetworkEdgeSecurityServices",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the resource resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the network edge security service associated with this network edge security service.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "region",
          "securityPolicy",
          "selfLink",
          "selfLinkWithId"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "clientPortMappingMode": {
            "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional.",
            "type": "string"
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
            "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
            "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serverlessDeployment": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeploymentResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "type": {
            "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "clientPortMappingMode",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "loadBalancer",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serverlessDeployment",
          "size",
          "subnetwork",
          "type",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNetworkFirewallPolicy": {
      "description": "Returns the specified network firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "vpcNetworkScope": {
            "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName",
          "vpcNetworkScope"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNetworkFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNodeGroup": {
      "description": "Returns the specified NodeGroup. Get a list of available NodeGroups by making a list() request. Note: the \"nodes\" field should not be used. Use nodeGroups.listNodes instead.",
      "inputs": {
        "properties": {
          "nodeGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "nodeGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:NodeGroupAutoscalingPolicyResponse",
            "description": "Specifies how autoscaling should behave."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          },
          "kind": {
            "description": "The type of the resource. Always compute#nodeGroup for node group.",
            "type": "string"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate.",
            "type": "string"
          },
          "maintenanceInterval": {
            "description": "Specifies the frequency of planned maintenance events. The accepted values are: `AS_NEEDED` and `RECURRENT`.",
            "type": "string"
          },
          "maintenancePolicy": {
            "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies.",
            "type": "string"
          },
          "maintenanceWindow": {
            "$ref": "#/types/google-native:compute%2Falpha:NodeGroupMaintenanceWindowResponse"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nodeTemplate": {
            "description": "URL of the node template to create the node group from.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shareSettings": {
            "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsResponse",
            "description": "Share-settings for the node group"
          },
          "size": {
            "description": "The total number of nodes in the node group.",
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "zone": {
            "description": "The name of the zone where the node group resides, such as us-central1-a.",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "locationHint",
          "maintenanceInterval",
          "maintenancePolicy",
          "maintenanceWindow",
          "name",
          "nodeTemplate",
          "selfLink",
          "selfLinkWithId",
          "shareSettings",
          "size",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNodeGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNodeTemplate": {
      "description": "Returns the specified node template.",
      "inputs": {
        "properties": {
          "nodeTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "nodeTemplate",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "accelerators": {
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AcceleratorConfigResponse"
            },
            "type": "array"
          },
          "cpuOvercommitType": {
            "description": "CPU overcommit.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "disks": {
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:LocalDiskResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "The type of the resource. Always compute#nodeTemplate for node templates.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nodeAffinityLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to use for node affinity, which will be used in instance scheduling.",
            "type": "object"
          },
          "nodeType": {
            "description": "The node type to use for nodes group that are created from this template.",
            "type": "string"
          },
          "nodeTypeFlexibility": {
            "$ref": "#/types/google-native:compute%2Falpha:NodeTemplateNodeTypeFlexibilityResponse",
            "description": "Do not use. Instead, use the node_type property."
          },
          "region": {
            "description": "The name of the region where the node template resides, such as us-central1.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serverBinding": {
            "$ref": "#/types/google-native:compute%2Falpha:ServerBindingResponse",
            "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
          },
          "status": {
            "description": "The status of the node template. One of the following values: CREATING, READY, and DELETING.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          }
        },
        "required": [
          "accelerators",
          "cpuOvercommitType",
          "creationTimestamp",
          "description",
          "disks",
          "kind",
          "name",
          "nodeAffinityLabels",
          "nodeType",
          "nodeTypeFlexibility",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serverBinding",
          "status",
          "statusMessage"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getNodeTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getOrganizationSecurityPolicy": {
      "description": "List all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "securityPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "securityPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "adaptiveProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigResponse"
          },
          "advancedOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigResponse"
          },
          "associations": {
            "description": "A list of associations that belong to this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociationResponse"
            },
            "type": "array"
          },
          "cloudArmorConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfigResponse"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "ddosProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfigResponse"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the security policy.",
            "type": "string"
          },
          "recaptchaOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfigResponse"
          },
          "region": {
            "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "type": {
            "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
            "type": "string"
          },
          "userDefinedFields": {
            "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\"",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedFieldResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "adaptiveProtectionConfig",
          "advancedOptionsConfig",
          "associations",
          "cloudArmorConfig",
          "creationTimestamp",
          "ddosProtectionConfig",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "parent",
          "recaptchaOptionsConfig",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "type",
          "userDefinedFields"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getPacketMirroring": {
      "description": "Returns the specified PacketMirroring resource.",
      "inputs": {
        "properties": {
          "packetMirroring": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "packetMirroring",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "collectorIlb": {
            "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringForwardingRuleInfoResponse",
            "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enable": {
            "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE.",
            "type": "string"
          },
          "filter": {
            "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringFilterResponse",
            "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
          },
          "kind": {
            "description": "Type of the resource. Always compute#packetMirroring for packet mirrorings.",
            "type": "string"
          },
          "mirroredResources": {
            "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringMirroredResourceInfoResponse",
            "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "$ref": "#/types/google-native:compute%2Falpha:PacketMirroringNetworkInfoResponse",
            "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
          },
          "priority": {
            "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
            "type": "integer"
          },
          "region": {
            "description": "URI of the region where the packetMirroring resides.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          }
        },
        "required": [
          "collectorIlb",
          "creationTimestamp",
          "description",
          "enable",
          "filter",
          "kind",
          "mirroredResources",
          "name",
          "network",
          "priority",
          "region",
          "selfLink",
          "selfLinkWithId"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getPublicAdvertisedPrefix": {
      "description": "Returns the specified PublicAdvertisedPrefix resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicAdvertisedPrefix": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicAdvertisedPrefix"
        ]
      },
      "outputs": {
        "properties": {
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "dnsVerificationIp": {
            "description": "The address to be used for reverse DNS verification.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicAdvertisedPrefix. An up-to-date fingerprint must be provided in order to update the PublicAdvertisedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicAdvertisedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The address range, in CIDR format, represented by this public advertised prefix.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicAdvertisedPrefix for public advertised prefixes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pdpScope": {
            "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. ",
            "type": "string"
          },
          "publicDelegatedPrefixs": {
            "description": "The list of public delegated prefixes that exist for this public advertised prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:PublicAdvertisedPrefixPublicDelegatedPrefixResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL with id for the resource.",
            "type": "string"
          },
          "sharedSecret": {
            "description": "The shared secret to be used for reverse DNS verification.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. ",
            "type": "string"
          }
        },
        "required": [
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "dnsVerificationIp",
          "fingerprint",
          "ipCidrRange",
          "kind",
          "name",
          "pdpScope",
          "publicDelegatedPrefixs",
          "selfLink",
          "selfLinkWithId",
          "sharedSecret",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getPublicDelegatedPrefix": {
      "description": "Returns the specified PublicDelegatedPrefix resource in the given region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicDelegatedPrefix": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicDelegatedPrefix",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "allocatablePrefixLength": {
            "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.",
            "type": "integer"
          },
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The IP address range, in CIDR format, represented by this public delegated prefix.",
            "type": "string"
          },
          "isLiveMigration": {
            "description": "If true, the prefix will be live migrated.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes.",
            "type": "string"
          },
          "mode": {
            "description": "The public delegated prefix mode for IPv6 only.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parentPrefix": {
            "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix.",
            "type": "string"
          },
          "publicDelegatedSubPrefixs": {
            "description": "The list of sub public delegated prefixes that exist for this public delegated prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL with id for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. ",
            "type": "string"
          }
        },
        "required": [
          "allocatablePrefixLength",
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipCidrRange",
          "isLiveMigration",
          "kind",
          "mode",
          "name",
          "parentPrefix",
          "publicDelegatedSubPrefixs",
          "region",
          "selfLink",
          "selfLinkWithId",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionAutoscaler": {
      "description": "Returns the specified autoscaler.",
      "inputs": {
        "properties": {
          "autoscaler": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscaler",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:AutoscalingPolicyResponse",
            "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#autoscaler for autoscalers.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "recommendedSize": {
            "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction.",
            "type": "integer"
          },
          "region": {
            "description": "URL of the region where the instance group resides (for autoscalers living in regional scope).",
            "type": "string"
          },
          "scalingScheduleStatus": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Status information of existing scaling schedules.",
            "type": "object"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "status": {
            "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future.",
            "type": "string"
          },
          "statusDetails": {
            "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AutoscalerStatusDetailsResponse"
            },
            "type": "array"
          },
          "target": {
            "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "recommendedSize",
          "region",
          "scalingScheduleStatus",
          "selfLink",
          "selfLinkWithId",
          "status",
          "statusDetails",
          "target",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionBackendService": {
      "description": "Returns the specified regional BackendService resource.",
      "inputs": {
        "properties": {
          "backendService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "affinityCookieTtlSec": {
            "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "integer"
          },
          "backends": {
            "description": "The list of backends that serve this BackendService.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BackendResponse"
            },
            "type": "array"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
          },
          "circuitBreakers": {
            "$ref": "#/types/google-native:compute%2Falpha:CircuitBreakersResponse"
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "connectionDraining": {
            "$ref": "#/types/google-native:compute%2Falpha:ConnectionDrainingResponse"
          },
          "connectionTrackingPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceConnectionTrackingPolicyResponse",
            "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
          },
          "consistentHash": {
            "$ref": "#/types/google-native:compute%2Falpha:ConsistentHashLoadBalancerSettingsResponse",
            "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customRequestHeaders": {
            "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "customResponseHeaders": {
            "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend service.",
            "type": "string"
          },
          "enableCDN": {
            "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
            "type": "boolean"
          },
          "failoverPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceFailoverPolicyResponse",
            "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "iap": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceIAPResponse",
            "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
          },
          "ipAddressSelectionPolicy": {
            "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#backendService for backend services.",
            "type": "string"
          },
          "loadBalancingScheme": {
            "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
            "type": "string"
          },
          "localityLbPolicies": {
            "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
            },
            "type": "array"
          },
          "localityLbPolicy": {
            "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:BackendServiceLogConfigResponse",
            "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
          },
          "maxStreamDuration": {
            "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
            "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
          },
          "metadatas": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL.",
            "type": "string"
          },
          "outlierDetection": {
            "$ref": "#/types/google-native:compute%2Falpha:OutlierDetectionResponse",
            "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
          },
          "port": {
            "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "type": "integer"
          },
          "portName": {
            "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
            "type": "string"
          },
          "protocol": {
            "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this backend service.",
            "type": "string"
          },
          "securitySettings": {
            "$ref": "#/types/google-native:compute%2Falpha:SecuritySettingsResponse",
            "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serviceBindings": {
            "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceLbPolicy": {
            "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global.",
            "type": "string"
          },
          "sessionAffinity": {
            "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
            "type": "string"
          },
          "subsetting": {
            "$ref": "#/types/google-native:compute%2Falpha:SubsettingResponse"
          },
          "timeoutSec": {
            "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration.",
            "type": "integer"
          },
          "usedBy": {
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BackendServiceUsedByResponse"
            },
            "type": "array"
          },
          "vpcNetworkScope": {
            "description": "The network scope of the backends that can be added to the backend service. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A backend service with the VPC scope set to GLOBAL_VPC_NETWORK is only allowed to have backends in global VPC networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the backend service is only allowed to have backends in regional networks in the same scope as the backend service. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
            "type": "string"
          }
        },
        "required": [
          "affinityCookieTtlSec",
          "backends",
          "cdnPolicy",
          "circuitBreakers",
          "compressionMode",
          "connectionDraining",
          "connectionTrackingPolicy",
          "consistentHash",
          "creationTimestamp",
          "customRequestHeaders",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCDN",
          "failoverPolicy",
          "fingerprint",
          "healthChecks",
          "iap",
          "ipAddressSelectionPolicy",
          "kind",
          "loadBalancingScheme",
          "localityLbPolicies",
          "localityLbPolicy",
          "logConfig",
          "maxStreamDuration",
          "metadatas",
          "name",
          "network",
          "outlierDetection",
          "port",
          "portName",
          "protocol",
          "region",
          "securityPolicy",
          "securitySettings",
          "selfLink",
          "selfLinkWithId",
          "serviceBindings",
          "serviceLbPolicy",
          "sessionAffinity",
          "subsetting",
          "timeoutSec",
          "usedBy",
          "vpcNetworkScope"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionBackendServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionCommitment": {
      "description": "Returns the specified commitment resource.",
      "inputs": {
        "properties": {
          "commitment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "commitment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "autoRenew": {
            "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment.",
            "type": "boolean"
          },
          "category": {
            "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "endTimestamp": {
            "description": "Commitment end time in RFC3339 text format.",
            "type": "string"
          },
          "existingReservations": {
            "description": "Specifies the already existing reservations to attach to the Commitment. This field is optional, and it can be a full or partial URL. For example, the following are valid URLs to an reservation: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /reservations/reservation - projects/project/zones/zone/reservations/reservation ",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#commitment for commitments.",
            "type": "string"
          },
          "licenseResource": {
            "$ref": "#/types/google-native:compute%2Falpha:LicenseResourceCommitmentResponse",
            "description": "The license specification required as part of a license commitment."
          },
          "mergeSourceCommitments": {
            "description": "List of source commitments to be merged into a new commitment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "plan": {
            "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where this commitment may be used.",
            "type": "string"
          },
          "reservations": {
            "description": "List of create-on-create reseravtions for this commitment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:ReservationResponse"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:CommitmentResourceStatusResponse",
            "description": "Status information for Commitment resource."
          },
          "resources": {
            "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:ResourceCommitmentResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "splitSourceCommitment": {
            "description": "Source commitment to be split into a new commitment.",
            "type": "string"
          },
          "startTimestamp": {
            "description": "Commitment start time in RFC3339 text format.",
            "type": "string"
          },
          "status": {
            "description": "Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          },
          "type": {
            "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines.",
            "type": "string"
          }
        },
        "required": [
          "autoRenew",
          "category",
          "creationTimestamp",
          "description",
          "endTimestamp",
          "existingReservations",
          "kind",
          "licenseResource",
          "mergeSourceCommitments",
          "name",
          "plan",
          "region",
          "reservations",
          "resourceStatus",
          "resources",
          "selfLink",
          "selfLinkWithId",
          "splitSourceCommitment",
          "startTimestamp",
          "status",
          "statusMessage",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionDisk": {
      "description": "Returns a specified regional persistent disk.",
      "inputs": {
        "properties": {
          "disk": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "disk",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "accessMode": {
            "description": "The access mode of the disk. - READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. - READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. - READ_ONLY_MANY: The AccessMode means the disk can be attached to multiple instances in RO mode. The AccessMode is only valid for Hyperdisk disk types.",
            "type": "string"
          },
          "architecture": {
            "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "asyncPrimaryDisk": {
            "$ref": "#/types/google-native:compute%2Falpha:DiskAsyncReplicationResponse",
            "description": "Disk asynchronously replicated into this disk."
          },
          "asyncSecondaryDisks": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A list of disks this disk is asynchronously replicated to.",
            "type": "object"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
          },
          "enableConfidentialCompute": {
            "description": "Whether this disk is using confidential compute mode.",
            "type": "boolean"
          },
          "eraseWindowsVssSignature": {
            "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature.",
            "type": "boolean"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "interface": {
            "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
            "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#disk for disks.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastAttachTimestamp": {
            "description": "Last attach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastDetachTimestamp": {
            "description": "Last detach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this disk.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of publicly visible licenses. Reserved for Google's use.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "locked": {
            "description": "The field indicates if the disk is created from a locked source image. Attachment of a disk created from a locked source image will cause the following operations to become irreversibly prohibited: - R/W or R/O disk attachment to any other instance - Disk detachment. And the disk can only be deleted when the instance is deleted - Creation of images or snapshots - Disk cloning Furthermore, the instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Further attachment of secondary disks. - Detachment of any disks - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true for locked disks - Attach a locked disk with --auto-delete parameter set to false ",
            "type": "boolean"
          },
          "multiWriter": {
            "description": "Indicates whether or not the disk can be read/write attached to more than one instance.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "options": {
            "description": "Internal use only.",
            "type": "string"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Falpha:DiskParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "physicalBlockSizeBytes": {
            "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project.",
            "type": "string"
          },
          "provisionedIops": {
            "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.",
            "type": "string"
          },
          "provisionedThroughput": {
            "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "replicaZones": {
            "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this disk for automatic snapshot creations.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:DiskResourceStatusResponse",
            "description": "Status information for the disk resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "sizeGb": {
            "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicy": {
            "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicyId": {
            "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used.",
            "type": "string"
          },
          "sourceImage": {
            "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
            "type": "string"
          },
          "sourceInstantSnapshot": {
            "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot ",
            "type": "string"
          },
          "sourceInstantSnapshotId": {
            "description": "The unique ID of the instant snapshot used to create this disk. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact version of the instant snapshot that was used.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
            "type": "string"
          },
          "sourceStorageObject": {
            "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead.",
            "type": "string"
          },
          "status": {
            "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. ",
            "type": "string"
          },
          "storagePool": {
            "description": "The storage pool in which the new disk is created. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /storagePools/storagePool - projects/project/zones/zone/storagePools/storagePool - zones/zone/storagePools/storagePool ",
            "type": "string"
          },
          "storageType": {
            "deprecationMessage": "[Deprecated] Storage type of the persistent disk.",
            "description": "[Deprecated] Storage type of the persistent disk.",
            "type": "string"
          },
          "type": {
            "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types.",
            "type": "string"
          },
          "userLicenses": {
            "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch ",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "users": {
            "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "zone": {
            "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "accessMode",
          "architecture",
          "asyncPrimaryDisk",
          "asyncSecondaryDisks",
          "creationTimestamp",
          "description",
          "diskEncryptionKey",
          "enableConfidentialCompute",
          "eraseWindowsVssSignature",
          "guestOsFeatures",
          "interface",
          "kind",
          "labelFingerprint",
          "labels",
          "lastAttachTimestamp",
          "lastDetachTimestamp",
          "licenseCodes",
          "licenses",
          "locationHint",
          "locked",
          "multiWriter",
          "name",
          "options",
          "params",
          "physicalBlockSizeBytes",
          "provisionedIops",
          "provisionedThroughput",
          "region",
          "replicaZones",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "sizeGb",
          "sourceConsistencyGroupPolicy",
          "sourceConsistencyGroupPolicyId",
          "sourceDisk",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceInstantSnapshot",
          "sourceInstantSnapshotId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceStorageObject",
          "status",
          "storagePool",
          "storageType",
          "type",
          "userLicenses",
          "users",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionDiskIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionHealthCheck": {
      "description": "Returns the specified HealthCheck resource.",
      "inputs": {
        "properties": {
          "healthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheck",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in 3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:GRPCHealthCheckResponse"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "http2HealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:HTTP2HealthCheckResponse"
          },
          "httpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:HTTPHealthCheckResponse"
          },
          "httpsHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:HTTPSHealthCheckResponse"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:HealthCheckLogConfigResponse",
            "description": "Configure logging on this health check."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash.",
            "type": "string"
          },
          "region": {
            "description": "Region where the health check resides. Not applicable to global health checks.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "sourceRegions": {
            "description": "The list of cloud regions from which health checks are performed. If any regions are specified, then exactly 3 regions should be specified. The region names must be valid names of GCP regions. This can only be set for global health check. If this list is non-empty, then there are restrictions on what other health check fields are supported and what other resources can use this health check: - SSL, HTTP2, and GRPC protocols are not supported. - The TCP request field is not supported. - The proxyHeader field for HTTP, HTTPS, and TCP is not supported. - The checkIntervalSec field must be at least 30. - The health check cannot be used with BackendService nor with managed instance group auto-healing. ",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:SSLHealthCheckResponse"
          },
          "tcpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:TCPHealthCheckResponse"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "type": {
            "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
            "type": "string"
          },
          "udpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Falpha:UDPHealthCheckResponse"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "grpcHealthCheck",
          "healthyThreshold",
          "http2HealthCheck",
          "httpHealthCheck",
          "httpsHealthCheck",
          "kind",
          "logConfig",
          "name",
          "region",
          "selfLink",
          "selfLinkWithId",
          "sourceRegions",
          "sslHealthCheck",
          "tcpHealthCheck",
          "timeoutSec",
          "type",
          "udpHealthCheck",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionHealthCheckService": {
      "description": "Returns the specified regional HealthCheckService resource.",
      "inputs": {
        "properties": {
          "healthCheckService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheckService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a HealthCheckService. An up-to-date fingerprint must be provided in order to patch/update the HealthCheckService; Otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the HealthCheckService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "healthStatusAggregationPolicy": {
            "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService.",
            "type": "string"
          },
          "healthStatusAggregationStrategy": {
            "deprecationMessage": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
            "description": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#healthCheckServicefor health check services.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "networkEndpointGroups": {
            "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "notificationEndpoints": {
            "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the health check service resides. This field is not applicable to global health check services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL with id for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "healthChecks",
          "healthStatusAggregationPolicy",
          "healthStatusAggregationStrategy",
          "kind",
          "name",
          "networkEndpointGroups",
          "notificationEndpoints",
          "region",
          "selfLink",
          "selfLinkWithId"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionInstanceGroupManager": {
      "description": "Returns all of the details about the specified managed instance group.",
      "inputs": {
        "properties": {
          "instanceGroupManager": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroupManager",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "allInstancesConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAllInstancesConfigResponse",
            "description": "Specifies configuration that overrides the instance template configuration for the group."
          },
          "autoHealingPolicies": {
            "description": "The autohealing policy for this managed instance group. You can specify only one value.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerAutoHealingPolicyResponse"
            },
            "type": "array"
          },
          "baseInstanceName": {
            "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this managed instance group in RFC3339 text format.",
            "type": "string"
          },
          "currentActions": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerActionsSummaryResponse",
            "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "distributionPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:DistributionPolicyResponse",
            "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
          },
          "failoverAction": {
            "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager.",
            "type": "string"
          },
          "instanceFlexibilityPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceFlexibilityPolicyResponse",
            "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
          },
          "instanceGroup": {
            "description": "The URL of the Instance Group resource.",
            "type": "string"
          },
          "instanceLifecyclePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerInstanceLifecyclePolicyResponse",
            "description": "The repair policy for this managed instance group."
          },
          "instanceTemplate": {
            "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups.",
            "type": "string"
          },
          "listManagedInstancesResults": {
            "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
            "type": "string"
          },
          "name": {
            "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:NamedPortResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "The URL of the region where the managed instance group resides (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this managed instance group. The server defines this URL.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used.",
            "type": "string"
          },
          "standbyPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStandbyPolicyResponse",
            "description": "Standby policy for stopped and suspended instances."
          },
          "statefulPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:StatefulPolicyResponse",
            "description": "Stateful configuration for this Instanced Group Manager"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerStatusResponse",
            "description": "The status of this managed instance group."
          },
          "targetPools": {
            "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetSize": {
            "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number.",
            "type": "integer"
          },
          "targetSizeUnit": {
            "description": "The unit of measure for the target size.",
            "type": "string"
          },
          "targetStoppedSize": {
            "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. ",
            "type": "integer"
          },
          "targetSuspendedSize": {
            "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. ",
            "type": "integer"
          },
          "updatePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerUpdatePolicyResponse",
            "description": "The update policy for this managed instance group."
          },
          "versions": {
            "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:InstanceGroupManagerVersionResponse"
            },
            "type": "array"
          },
          "zone": {
            "description": "The URL of a zone where the managed instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "allInstancesConfig",
          "autoHealingPolicies",
          "baseInstanceName",
          "creationTimestamp",
          "currentActions",
          "description",
          "distributionPolicy",
          "failoverAction",
          "fingerprint",
          "instanceFlexibilityPolicy",
          "instanceGroup",
          "instanceLifecyclePolicy",
          "instanceTemplate",
          "kind",
          "listManagedInstancesResults",
          "name",
          "namedPorts",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serviceAccount",
          "standbyPolicy",
          "statefulPolicy",
          "status",
          "targetPools",
          "targetSize",
          "targetSizeUnit",
          "targetStoppedSize",
          "targetSuspendedSize",
          "updatePolicy",
          "versions",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionInstanceTemplate": {
      "description": "Returns the specified instance template.",
      "inputs": {
        "properties": {
          "instanceTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceTemplate",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance template in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceTemplate for instance templates.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/types/google-native:compute%2Falpha:InstancePropertiesResponse",
            "description": "The instance properties for this instance template."
          },
          "region": {
            "description": "URL of the region where the instance template resides. Only applicable for regional resources.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance template. The server defines this URL.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "sourceInstance": {
            "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceParams": {
            "$ref": "#/types/google-native:compute%2Falpha:SourceInstanceParamsResponse",
            "description": "The source instance params to use to create this instance template."
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "properties",
          "region",
          "selfLink",
          "selfLinkWithId",
          "sourceInstance",
          "sourceInstanceParams"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionInstantSnapshot": {
      "description": "Returns the specified InstantSnapshot resource in the specified region.",
      "inputs": {
        "properties": {
          "instantSnapshot": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instantSnapshot",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the instant snapshot. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the source disk, specified in GB.",
            "type": "string"
          },
          "guestFlush": {
            "description": "Whether to attempt an application consistent instant snapshot by informing the OS to prepare for the snapshot process.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#instantSnapshot for InstantSnapshot resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this InstantSnapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a InstantSnapshot.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:InstantSnapshotResourceStatusResponse",
            "description": "Status information for the instant snapshot resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this InstantSnapshot. This value may be used to determine whether the InstantSnapshot was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "status": {
            "description": "The status of the instantSnapshot. This can be CREATING, DELETING, FAILED, or READY.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "architecture",
          "creationTimestamp",
          "description",
          "diskSizeGb",
          "guestFlush",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "region",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "sourceDisk",
          "sourceDiskId",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionInstantSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "clientPortMappingMode": {
            "description": "Only valid when networkEndpointType is \"GCE_VM_IP_PORT\" and the NEG is regional.",
            "type": "string"
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
            "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
            "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serverlessDeployment": {
            "$ref": "#/types/google-native:compute%2Falpha:NetworkEndpointGroupServerlessDeploymentResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "type": {
            "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "clientPortMappingMode",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "loadBalancer",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serverlessDeployment",
          "size",
          "subnetwork",
          "type",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionNetworkFirewallPolicy": {
      "description": "Returns the specified network firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "vpcNetworkScope": {
            "description": "The scope of networks allowed to be associated with the firewall policy. This field can be either GLOBAL_VPC_NETWORK or REGIONAL_VPC_NETWORK. A firewall policy with the VPC scope set to GLOBAL_VPC_NETWORK is allowed to be attached only to global networks. When the VPC scope is set to REGIONAL_VPC_NETWORK the firewall policy is allowed to be attached only to regional networks in the same scope as the firewall policy. Note: if not specified then GLOBAL_VPC_NETWORK will be used.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName",
          "vpcNetworkScope"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionNetworkFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionNotificationEndpoint": {
      "description": "Returns the specified NotificationEndpoint resource in the given region.",
      "inputs": {
        "properties": {
          "notificationEndpoint": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "notificationEndpoint",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcSettings": {
            "$ref": "#/types/google-native:compute%2Falpha:NotificationEndpointGrpcSettingsResponse",
            "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
          },
          "kind": {
            "description": "Type of the resource. Always compute#notificationEndpoint for notification endpoints.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the notification endpoint resides. This field applies only to the regional resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "grpcSettings",
          "kind",
          "name",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionSecurityPolicy": {
      "description": "List all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "securityPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "securityPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "adaptiveProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigResponse"
          },
          "advancedOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigResponse"
          },
          "associations": {
            "description": "A list of associations that belong to this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociationResponse"
            },
            "type": "array"
          },
          "cloudArmorConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfigResponse"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "ddosProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfigResponse"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the security policy.",
            "type": "string"
          },
          "recaptchaOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfigResponse"
          },
          "region": {
            "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "type": {
            "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
            "type": "string"
          },
          "userDefinedFields": {
            "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\"",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedFieldResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "adaptiveProtectionConfig",
          "advancedOptionsConfig",
          "associations",
          "cloudArmorConfig",
          "creationTimestamp",
          "ddosProtectionConfig",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "parent",
          "recaptchaOptionsConfig",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "type",
          "userDefinedFields"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionSnapshot": {
      "description": "Returns the specified Snapshot resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "snapshot": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "snapshot"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the snapshot. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "autoCreated": {
            "description": "Set to true if snapshots are automatically created by applying resource policy on the target disk.",
            "type": "boolean"
          },
          "chainName": {
            "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value.",
            "type": "string"
          },
          "creationSizeBytes": {
            "description": "Size in bytes of the snapshot at creation time.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the source disk, specified in GB.",
            "type": "string"
          },
          "downloadBytes": {
            "description": "Number of bytes downloaded to restore a snapshot to a disk.",
            "type": "string"
          },
          "enableConfidentialCompute": {
            "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk.",
            "type": "boolean"
          },
          "guestFlush": {
            "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process.",
            "type": "boolean"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#snapshot for Snapshot resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a snapshot.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
            "type": "object"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this snapshot.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "maxRetentionDays": {
            "description": "Number of days the snapshot should be retained before being deleted automatically.",
            "type": "integer"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the snapshot resides. Only applicable for regional snapshots.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "snapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
          },
          "snapshotType": {
            "description": "Indicates the type of the snapshot.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this snapshot.",
            "type": "string"
          },
          "sourceDiskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
          },
          "sourceDiskForRecoveryCheckpoint": {
            "description": "The source disk whose recovery checkpoint will be used to create this snapshot.",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "sourceInstantSnapshot": {
            "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot ",
            "type": "string"
          },
          "sourceInstantSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
          },
          "sourceInstantSnapshotId": {
            "description": "The unique ID of the instant snapshot used to create this snapshot. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact instant snapshot that was used.",
            "type": "string"
          },
          "sourceSnapshotSchedulePolicy": {
            "description": "URL of the resource policy which created this scheduled snapshot.",
            "type": "string"
          },
          "sourceSnapshotSchedulePolicyId": {
            "description": "ID of the resource policy which created this scheduled snapshot.",
            "type": "string"
          },
          "status": {
            "description": "The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
            "type": "string"
          },
          "storageBytes": {
            "description": "A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
            "type": "string"
          },
          "storageBytesStatus": {
            "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
            "type": "string"
          },
          "storageLocations": {
            "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "userLicenses": {
            "description": "A list of user provided licenses represented by a list of URLs to the license resource.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "architecture",
          "autoCreated",
          "chainName",
          "creationSizeBytes",
          "creationTimestamp",
          "description",
          "diskSizeGb",
          "downloadBytes",
          "enableConfidentialCompute",
          "guestFlush",
          "guestOsFeatures",
          "kind",
          "labelFingerprint",
          "labels",
          "licenseCodes",
          "licenses",
          "locationHint",
          "maxRetentionDays",
          "name",
          "region",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "snapshotEncryptionKey",
          "snapshotType",
          "sourceDisk",
          "sourceDiskEncryptionKey",
          "sourceDiskForRecoveryCheckpoint",
          "sourceDiskId",
          "sourceInstantSnapshot",
          "sourceInstantSnapshotEncryptionKey",
          "sourceInstantSnapshotId",
          "sourceSnapshotSchedulePolicy",
          "sourceSnapshotSchedulePolicyId",
          "status",
          "storageBytes",
          "storageBytesStatus",
          "storageLocations",
          "userLicenses"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionSslCertificate": {
      "description": "Returns the specified SslCertificate resource in the specified region. Get a list of available SSL certificates by making a list() request.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "sslCertificate": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "sslCertificate"
        ]
      },
      "outputs": {
        "properties": {
          "certificate": {
            "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expireTime": {
            "description": "Expire time of the certificate. RFC3339",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#sslCertificate for SSL certificates.",
            "type": "string"
          },
          "managed": {
            "$ref": "#/types/google-native:compute%2Falpha:SslCertificateManagedSslCertificateResponse",
            "description": "Configuration and status of a managed SSL certificate."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "privateKey": {
            "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate.",
            "type": "string"
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "selfManaged": {
            "$ref": "#/types/google-native:compute%2Falpha:SslCertificateSelfManagedSslCertificateResponse",
            "description": "Configuration and status of a self-managed SSL certificate."
          },
          "subjectAlternativeNames": {
            "description": "Domains associated with the certificate via Subject Alternative Name.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "creationTimestamp",
          "description",
          "expireTime",
          "kind",
          "managed",
          "name",
          "privateKey",
          "region",
          "selfLink",
          "selfLinkWithId",
          "selfManaged",
          "subjectAlternativeNames",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionSslPolicy": {
      "description": "Lists all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "sslPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "sslPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customFeatures": {
            "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enabledFeatures": {
            "description": "The list of features enabled in the SSL policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
            "type": "string"
          },
          "minTlsVersion": {
            "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "profile": {
            "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "tlsSettings": {
            "$ref": "#/types/google-native:compute%2Falpha:ServerTlsSettingsResponse",
            "description": "Security settings for the proxy. This field is only applicable to a global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED."
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RegionSslPolicyWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "customFeatures",
          "description",
          "enabledFeatures",
          "fingerprint",
          "kind",
          "minTlsVersion",
          "name",
          "profile",
          "region",
          "selfLink",
          "selfLinkWithId",
          "tlsSettings",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionTargetHttpProxy": {
      "description": "Returns the specified TargetHttpProxy resource in the specified region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetHttpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetHttpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy.",
            "type": "string"
          },
          "httpFilters": {
            "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpFilters",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "region",
          "selfLink",
          "selfLinkWithId",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionTargetHttpsProxy": {
      "description": "Returns the specified TargetHttpsProxy resource in the specified region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetHttpsProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetHttpsProxy"
        ]
      },
      "outputs": {
        "properties": {
          "authentication": {
            "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead.",
            "description": "[Deprecated] Use serverTlsPolicy instead.",
            "type": "string"
          },
          "authorization": {
            "deprecationMessage": "[Deprecated] Use authorizationPolicy instead.",
            "description": "[Deprecated] Use authorizationPolicy instead.",
            "type": "string"
          },
          "authorizationPolicy": {
            "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact.",
            "type": "string"
          },
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy.",
            "type": "string"
          },
          "httpFilters": {
            "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "quicOverride": {
            "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured.",
            "type": "string"
          },
          "urlMap": {
            "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map ",
            "type": "string"
          }
        },
        "required": [
          "authentication",
          "authorization",
          "authorizationPolicy",
          "certificateMap",
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpFilters",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "quicOverride",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serverTlsPolicy",
          "sslCertificates",
          "sslPolicy",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionTargetTcpProxy": {
      "description": "Returns the specified TargetTcpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetTcpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetTcpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyBind",
          "proxyHeader",
          "region",
          "selfLink",
          "service"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRegionUrlMap": {
      "description": "Returns the specified UrlMap resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "urlMap": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "urlMap"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultCustomErrorResponsePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyResponse",
            "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
          },
          "defaultRouteAction": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpRouteActionResponse",
            "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
          },
          "defaultService": {
            "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.",
            "type": "string"
          },
          "defaultUrlRedirect": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectActionResponse",
            "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap.",
            "type": "string"
          },
          "headerAction": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderActionResponse",
            "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
          },
          "hostRules": {
            "description": "The list of host rules to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:HostRuleResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#urlMaps for url maps.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pathMatchers": {
            "description": "The list of named PathMatchers to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:PathMatcherResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "tests": {
            "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:UrlMapTestResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "defaultCustomErrorResponsePolicy",
          "defaultRouteAction",
          "defaultService",
          "defaultUrlRedirect",
          "description",
          "fingerprint",
          "headerAction",
          "hostRules",
          "kind",
          "name",
          "pathMatchers",
          "region",
          "selfLink",
          "tests"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getReservation": {
      "description": "Retrieves information about the specified reservation.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "reservation": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "reservation",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "aggregateReservation": {
            "$ref": "#/types/google-native:compute%2Falpha:AllocationAggregateReservationResponse",
            "description": "Reservation for aggregated resources, providing shape flexibility."
          },
          "commitment": {
            "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "deleteAfterDuration": {
            "$ref": "#/types/google-native:compute%2Falpha:DurationResponse",
            "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
          },
          "deleteAtTime": {
            "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#reservations for reservations.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "resourcePolicies": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation.",
            "type": "object"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:AllocationResourceStatusResponse",
            "description": "Status information for Reservation resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shareSettings": {
            "$ref": "#/types/google-native:compute%2Falpha:ShareSettingsResponse",
            "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
          },
          "specificReservation": {
            "$ref": "#/types/google-native:compute%2Falpha:AllocationSpecificSKUReservationResponse",
            "description": "Reservation for instances with specific machine shapes."
          },
          "specificReservationRequired": {
            "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation.",
            "type": "boolean"
          },
          "status": {
            "description": "The status of the reservation.",
            "type": "string"
          },
          "zone": {
            "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment.",
            "type": "string"
          }
        },
        "required": [
          "aggregateReservation",
          "commitment",
          "creationTimestamp",
          "deleteAfterDuration",
          "deleteAtTime",
          "description",
          "kind",
          "name",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "shareSettings",
          "specificReservation",
          "specificReservationRequired",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getReservationIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getResourcePolicy": {
      "description": "Retrieves all information of the specified resource policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resourcePolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resourcePolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "diskConsistencyGroupPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyDiskConsistencyGroupPolicyResponse",
            "description": "Resource policy for disk consistency groups."
          },
          "groupPlacementPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyGroupPlacementPolicyResponse",
            "description": "Resource policy for instances for placement configuration."
          },
          "instanceSchedulePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyInstanceSchedulePolicyResponse",
            "description": "Resource policy for scheduling instance operations."
          },
          "kind": {
            "description": "Type of the resource. Always compute#resource_policies for resource policies.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyResourceStatusResponse",
            "description": "The system status of the resource policy."
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "snapshotSchedulePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicySnapshotSchedulePolicyResponse",
            "description": "Resource policy for persistent disks for creating snapshots."
          },
          "status": {
            "description": "The status of resource policy creation.",
            "type": "string"
          },
          "vmMaintenancePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:ResourcePolicyVmMaintenancePolicyResponse",
            "description": "Resource policy applicable to VMs for infrastructure maintenance."
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "diskConsistencyGroupPolicy",
          "groupPlacementPolicy",
          "instanceSchedulePolicy",
          "kind",
          "name",
          "region",
          "resourceStatus",
          "selfLink",
          "selfLinkWithId",
          "snapshotSchedulePolicy",
          "status",
          "vmMaintenancePolicy"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getResourcePolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRoute": {
      "description": "Returns the specified Route resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "route": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "route"
        ]
      },
      "outputs": {
        "properties": {
          "allowConflictingSubnetworks": {
            "description": "Whether this route can conflict with existing subnetworks. Setting this to true allows this route to conflict with subnetworks that have already been configured on the corresponding network.",
            "type": "boolean"
          },
          "asPaths": {
            "description": "AS path.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RouteAsPathResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "destRange": {
            "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format.",
            "type": "string"
          },
          "ilbRouteBehaviorOnUnhealthy": {
            "description": "ILB route behavior when ILB is deemed unhealthy based on user specified threshold on the Backend Service of the internal load balancing.",
            "type": "string"
          },
          "kind": {
            "description": "Type of this resource. Always compute#routes for Route resources.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "Fully-qualified URL of the network that this route applies to.",
            "type": "string"
          },
          "nextHopGateway": {
            "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway",
            "type": "string"
          },
          "nextHopHub": {
            "description": "The full resource name of the Network Connectivity Center hub that will handle matching packets.",
            "type": "string"
          },
          "nextHopIlb": {
            "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule ",
            "type": "string"
          },
          "nextHopInstance": {
            "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/",
            "type": "string"
          },
          "nextHopInterRegionCost": {
            "description": "[Output only] Internal fixed region-to-region cost that Google Cloud calculates based on factors such as network performance, distance, and available bandwidth between regions.",
            "type": "integer"
          },
          "nextHopInterconnectAttachment": {
            "description": "The URL to an InterconnectAttachment which is the next hop for the route. This field will only be populated for the dynamic routes generated by Cloud Router with a linked interconnectAttachment.",
            "type": "string"
          },
          "nextHopIp": {
            "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address.",
            "type": "string"
          },
          "nextHopMed": {
            "description": "Multi-Exit Discriminator, a BGP route metric that indicates the desirability of a particular route in a network.",
            "type": "integer"
          },
          "nextHopNetwork": {
            "description": "The URL of the local network if it should handle matching packets.",
            "type": "string"
          },
          "nextHopOrigin": {
            "description": "Indicates the origin of the route. Can be IGP (Interior Gateway Protocol), EGP (Exterior Gateway Protocol), or INCOMPLETE.",
            "type": "string"
          },
          "nextHopPeering": {
            "description": "The network peering name that should handle matching packets, which should conform to RFC1035.",
            "type": "string"
          },
          "nextHopVpnTunnel": {
            "description": "The URL to a VpnTunnel that should handle matching packets.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive.",
            "type": "integer"
          },
          "routeStatus": {
            "description": "[Output only] The status of the route.",
            "type": "string"
          },
          "routeType": {
            "description": "The type of this route, which can be one of the following values: - 'TRANSIT' for a transit route that this router learned from another Cloud Router and will readvertise to one of its BGP peers - 'SUBNET' for a route from a subnet of the VPC - 'BGP' for a route learned from a BGP peer of this router - 'STATIC' for a static route",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "tags": {
            "description": "A list of instance tags to which this route applies.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RouteWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "allowConflictingSubnetworks",
          "asPaths",
          "creationTimestamp",
          "description",
          "destRange",
          "ilbRouteBehaviorOnUnhealthy",
          "kind",
          "name",
          "network",
          "nextHopGateway",
          "nextHopHub",
          "nextHopIlb",
          "nextHopInstance",
          "nextHopInterRegionCost",
          "nextHopInterconnectAttachment",
          "nextHopIp",
          "nextHopMed",
          "nextHopNetwork",
          "nextHopOrigin",
          "nextHopPeering",
          "nextHopVpnTunnel",
          "priority",
          "routeStatus",
          "routeType",
          "selfLink",
          "selfLinkWithId",
          "tags",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getRouter": {
      "description": "Returns the specified Router resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "router": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "router"
        ]
      },
      "outputs": {
        "properties": {
          "bgp": {
            "$ref": "#/types/google-native:compute%2Falpha:RouterBgpResponse",
            "description": "BGP information specific to this router."
          },
          "bgpPeers": {
            "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RouterBgpPeerResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "encryptedInterconnectRouter": {
            "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments).",
            "type": "boolean"
          },
          "interfaces": {
            "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RouterInterfaceResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of resource. Always compute#router for routers.",
            "type": "string"
          },
          "md5AuthenticationKeys": {
            "description": "Keys used for MD5 authentication.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RouterMd5AuthenticationKeyResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nats": {
            "description": "A list of NAT services created in this router.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RouterNatResponse"
            },
            "type": "array"
          },
          "network": {
            "description": "URI of the network to which this router belongs.",
            "type": "string"
          },
          "region": {
            "description": "URI of the region where the router resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          }
        },
        "required": [
          "bgp",
          "bgpPeers",
          "creationTimestamp",
          "description",
          "encryptedInterconnectRouter",
          "interfaces",
          "kind",
          "md5AuthenticationKeys",
          "name",
          "nats",
          "network",
          "region",
          "selfLink",
          "selfLinkWithId"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getSecurityPolicy": {
      "description": "List all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "securityPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "securityPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "adaptiveProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdaptiveProtectionConfigResponse"
          },
          "advancedOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAdvancedOptionsConfigResponse"
          },
          "associations": {
            "description": "A list of associations that belong to this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyAssociationResponse"
            },
            "type": "array"
          },
          "cloudArmorConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyCloudArmorConfigResponse"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "ddosProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyDdosProtectionConfigResponse"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the security policy.",
            "type": "string"
          },
          "recaptchaOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRecaptchaOptionsConfigResponse"
          },
          "region": {
            "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "type": {
            "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
            "type": "string"
          },
          "userDefinedFields": {
            "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\"",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SecurityPolicyUserDefinedFieldResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "adaptiveProtectionConfig",
          "advancedOptionsConfig",
          "associations",
          "cloudArmorConfig",
          "creationTimestamp",
          "ddosProtectionConfig",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "parent",
          "recaptchaOptionsConfig",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "type",
          "userDefinedFields"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getServiceAttachment": {
      "description": "Returns the specified ServiceAttachment resource in the given scope.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "serviceAttachment": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "serviceAttachment"
        ]
      },
      "outputs": {
        "properties": {
          "connectedEndpoints": {
            "description": "An array of connections for all the consumers connected to this service attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentConnectedEndpointResponse"
            },
            "type": "array"
          },
          "connectionPreference": {
            "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules.",
            "type": "string"
          },
          "consumerAcceptLists": {
            "description": "Projects that are allowed to connect to this service attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentConsumerProjectLimitResponse"
            },
            "type": "array"
          },
          "consumerRejectLists": {
            "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "domainNames": {
            "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enableProxyProtocol": {
            "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers.",
            "type": "boolean"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ServiceAttachment. An up-to-date fingerprint must be provided in order to patch/update the ServiceAttachment; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the ServiceAttachment.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#serviceAttachment for service attachments.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "natSubnets": {
            "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "producerForwardingRule": {
            "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment.",
            "type": "string"
          },
          "propagatedConnectionLimit": {
            "description": "The number of VPCs to which this endpoint is allowed to be propagated per accept list resource (project or network). For ACCEPT_AUTOMATIC service attachment, this limit is default to per project.",
            "type": "integer"
          },
          "pscServiceAttachmentId": {
            "$ref": "#/types/google-native:compute%2Falpha:Uint128Response",
            "description": "An 128-bit global unique ID of the PSC service attachment."
          },
          "reconcileConnections": {
            "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the service attachment resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "targetService": {
            "description": "The URL of a service serving the endpoint identified by this service attachment.",
            "type": "string"
          },
          "tunnelingConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:ServiceAttachmentTunnelingConfigResponse",
            "description": "When a tunneling config is set on this service attachment it will encapsulate traffic between consumer and producer. When tunneling is enabled: - nat_subnets must be unset - enable_proxy_protocol must be false - producer_forwarding_rule must be a L4 ILB. - "
          }
        },
        "required": [
          "connectedEndpoints",
          "connectionPreference",
          "consumerAcceptLists",
          "consumerRejectLists",
          "creationTimestamp",
          "description",
          "domainNames",
          "enableProxyProtocol",
          "fingerprint",
          "kind",
          "name",
          "natSubnets",
          "producerForwardingRule",
          "propagatedConnectionLimit",
          "pscServiceAttachmentId",
          "reconcileConnections",
          "region",
          "selfLink",
          "targetService",
          "tunnelingConfig"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getServiceAttachmentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getSnapshot": {
      "description": "Returns the specified Snapshot resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "snapshot": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "snapshot"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the snapshot. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "autoCreated": {
            "description": "Set to true if snapshots are automatically created by applying resource policy on the target disk.",
            "type": "boolean"
          },
          "chainName": {
            "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value.",
            "type": "string"
          },
          "creationSizeBytes": {
            "description": "Size in bytes of the snapshot at creation time.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the source disk, specified in GB.",
            "type": "string"
          },
          "downloadBytes": {
            "description": "Number of bytes downloaded to restore a snapshot to a disk.",
            "type": "string"
          },
          "enableConfidentialCompute": {
            "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk.",
            "type": "boolean"
          },
          "guestFlush": {
            "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process.",
            "type": "boolean"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#snapshot for Snapshot resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a snapshot.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
            "type": "object"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this snapshot.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "maxRetentionDays": {
            "description": "Number of days the snapshot should be retained before being deleted automatically.",
            "type": "integer"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the snapshot resides. Only applicable for regional snapshots.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "snapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
          },
          "snapshotType": {
            "description": "Indicates the type of the snapshot.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this snapshot.",
            "type": "string"
          },
          "sourceDiskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
          },
          "sourceDiskForRecoveryCheckpoint": {
            "description": "The source disk whose recovery checkpoint will be used to create this snapshot.",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "sourceInstantSnapshot": {
            "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot ",
            "type": "string"
          },
          "sourceInstantSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomerEncryptionKeyResponse",
            "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
          },
          "sourceInstantSnapshotId": {
            "description": "The unique ID of the instant snapshot used to create this snapshot. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact instant snapshot that was used.",
            "type": "string"
          },
          "sourceSnapshotSchedulePolicy": {
            "description": "URL of the resource policy which created this scheduled snapshot.",
            "type": "string"
          },
          "sourceSnapshotSchedulePolicyId": {
            "description": "ID of the resource policy which created this scheduled snapshot.",
            "type": "string"
          },
          "status": {
            "description": "The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
            "type": "string"
          },
          "storageBytes": {
            "description": "A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
            "type": "string"
          },
          "storageBytesStatus": {
            "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
            "type": "string"
          },
          "storageLocations": {
            "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "userLicenses": {
            "description": "A list of user provided licenses represented by a list of URLs to the license resource.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "architecture",
          "autoCreated",
          "chainName",
          "creationSizeBytes",
          "creationTimestamp",
          "description",
          "diskSizeGb",
          "downloadBytes",
          "enableConfidentialCompute",
          "guestFlush",
          "guestOsFeatures",
          "kind",
          "labelFingerprint",
          "labels",
          "licenseCodes",
          "licenses",
          "locationHint",
          "maxRetentionDays",
          "name",
          "region",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "snapshotEncryptionKey",
          "snapshotType",
          "sourceDisk",
          "sourceDiskEncryptionKey",
          "sourceDiskForRecoveryCheckpoint",
          "sourceDiskId",
          "sourceInstantSnapshot",
          "sourceInstantSnapshotEncryptionKey",
          "sourceInstantSnapshotId",
          "sourceSnapshotSchedulePolicy",
          "sourceSnapshotSchedulePolicyId",
          "status",
          "storageBytes",
          "storageBytesStatus",
          "storageLocations",
          "userLicenses"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getSslCertificate": {
      "description": "Returns the specified SslCertificate resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "sslCertificate": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sslCertificate"
        ]
      },
      "outputs": {
        "properties": {
          "certificate": {
            "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expireTime": {
            "description": "Expire time of the certificate. RFC3339",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#sslCertificate for SSL certificates.",
            "type": "string"
          },
          "managed": {
            "$ref": "#/types/google-native:compute%2Falpha:SslCertificateManagedSslCertificateResponse",
            "description": "Configuration and status of a managed SSL certificate."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "privateKey": {
            "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate.",
            "type": "string"
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "selfManaged": {
            "$ref": "#/types/google-native:compute%2Falpha:SslCertificateSelfManagedSslCertificateResponse",
            "description": "Configuration and status of a self-managed SSL certificate."
          },
          "subjectAlternativeNames": {
            "description": "Domains associated with the certificate via Subject Alternative Name.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "creationTimestamp",
          "description",
          "expireTime",
          "kind",
          "managed",
          "name",
          "privateKey",
          "region",
          "selfLink",
          "selfLinkWithId",
          "selfManaged",
          "subjectAlternativeNames",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getSslPolicy": {
      "description": "Lists all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "sslPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sslPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customFeatures": {
            "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enabledFeatures": {
            "description": "The list of features enabled in the SSL policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
            "type": "string"
          },
          "minTlsVersion": {
            "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "profile": {
            "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "tlsSettings": {
            "$ref": "#/types/google-native:compute%2Falpha:ServerTlsSettingsResponse",
            "description": "Security settings for the proxy. This field is only applicable to a global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED."
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SslPolicyWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "customFeatures",
          "description",
          "enabledFeatures",
          "fingerprint",
          "kind",
          "minTlsVersion",
          "name",
          "profile",
          "region",
          "selfLink",
          "selfLinkWithId",
          "tlsSettings",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getStoragePool": {
      "description": "Returns a specified storage pool. Gets a list of available storage pools by making a list() request.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "storagePool": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "storagePool",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "capacityProvisioningType": {
            "description": "Provisioning type of the byte capacity of the pool.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#storagePool for storage pools.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this storage pool, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a storage pool.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this storage pool. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "performanceProvisioningType": {
            "description": "Provisioning type of the performance-related parameters of the pool, such as throughput and IOPS.",
            "type": "string"
          },
          "provisionedIops": {
            "description": "Provsioned IOPS of the storage pool.",
            "type": "string"
          },
          "provisionedThroughput": {
            "description": "Provisioned throughput of the storage pool. Only relevant if the storage pool type is hyperdisk-balanced or hyperdisk-throughput.",
            "type": "string"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Falpha:StoragePoolResourceStatusResponse",
            "description": "Status information for the storage pool resource."
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "sizeGb": {
            "description": "Size, in GiB, of the storage pool.",
            "type": "string"
          },
          "state": {
            "description": "The status of storage pool creation. - CREATING: Storage pool is provisioning. storagePool. - FAILED: Storage pool creation failed. - READY: Storage pool is ready for use. - DELETING: Storage pool is deleting. ",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Falpha:StoragePoolResourceStatusResponse",
            "description": "Status information for the storage pool resource."
          },
          "storagePoolType": {
            "description": "Type of the storage pool.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the storage pool resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "capacityProvisioningType",
          "creationTimestamp",
          "description",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "performanceProvisioningType",
          "provisionedIops",
          "provisionedThroughput",
          "resourceStatus",
          "selfLink",
          "selfLinkWithId",
          "sizeGb",
          "state",
          "status",
          "storagePoolType",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getStoragePoolIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getSubnetwork": {
      "description": "Returns the specified subnetwork.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "subnetwork": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "subnetwork"
        ]
      },
      "outputs": {
        "properties": {
          "aggregationInterval": {
            "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Sets the aggregation interval for collecting flow logs. Increasing the interval time reduces the amount of generated flow logs for long-lasting connections. Default is an interval of 5 seconds per connection. Valid values: INTERVAL_5_SEC, INTERVAL_30_SEC, INTERVAL_1_MIN, INTERVAL_5_MIN, INTERVAL_10_MIN, INTERVAL_15_MIN.",
            "type": "string"
          },
          "allowSubnetCidrRoutesOverlap": {
            "description": "Whether this subnetwork's ranges can conflict with existing static routes. Setting this to true allows this subnetwork's primary and secondary ranges to overlap with (and contain) static routes that have already been configured on the corresponding network. For example if a static route has range 10.1.0.0/16, a subnet range 10.0.0.0/8 could only be created if allow_conflicting_routes=true. Overlapping is only allowed on subnetwork operations; routes whose ranges conflict with this subnetwork's ranges won't be allowed unless route.allow_conflicting_subnetworks is set to true. Typically packets destined to IPs within the subnetwork (which may contain private/sensitive data) are prevented from leaving the virtual network. Setting this field to true will disable this feature. The default value is false and applies to all existing subnetworks and automatically created subnetworks. This field cannot be set to true at resource creation time.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time.",
            "type": "string"
          },
          "enableFlowLogs": {
            "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
            "type": "boolean"
          },
          "enableL2": {
            "description": "Enables Layer2 communication on the subnetwork.",
            "type": "boolean"
          },
          "enablePrivateV6Access": {
            "deprecationMessage": "Deprecated in favor of enable in PrivateIpv6GoogleAccess. Whether the VMs in this subnet can directly access Google services via internal IPv6 addresses. This field can be both set at resource creation time and updated using patch.",
            "description": "Deprecated in favor of enable in PrivateIpv6GoogleAccess. Whether the VMs in this subnet can directly access Google services via internal IPv6 addresses. This field can be both set at resource creation time and updated using patch.",
            "type": "boolean"
          },
          "externalIpv6Prefix": {
            "description": "The external IPv6 address range that is owned by this subnetwork.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a Subnetwork.",
            "type": "string"
          },
          "flowSampling": {
            "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 unless otherwise specified by the org policy, which means half of all collected logs are reported.",
            "type": "number"
          },
          "gatewayAddress": {
            "description": "The gateway address for default routes to reach destination addresses outside this subnetwork.",
            "type": "string"
          },
          "internalIpv6Prefix": {
            "description": "The internal IPv6 address range that is assigned to this subnetwork.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange.",
            "type": "string"
          },
          "ipv6AccessType": {
            "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack.",
            "type": "string"
          },
          "ipv6CidrRange": {
            "description": "This field is for internal use.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#subnetwork for Subnetwork resources.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Falpha:SubnetworkLogConfigResponse",
            "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
          },
          "metadata": {
            "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Configures whether metadata fields should be added to the reported VPC flow logs. Options are INCLUDE_ALL_METADATA, EXCLUDE_ALL_METADATA, and CUSTOM_METADATA. Default is EXCLUDE_ALL_METADATA.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time.",
            "type": "string"
          },
          "privateIpGoogleAccess": {
            "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess.",
            "type": "boolean"
          },
          "privateIpv6GoogleAccess": {
            "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch.",
            "type": "string"
          },
          "purpose": {
            "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time.",
            "type": "string"
          },
          "reservedInternalRange": {
            "description": "The URL of the reserved internal range.",
            "type": "string"
          },
          "role": {
            "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request.",
            "type": "string"
          },
          "secondaryIpRanges": {
            "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:SubnetworkSecondaryRangeResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch.",
            "type": "string"
          },
          "state": {
            "description": "The state of the subnetwork, which can be one of the following values: READY: Subnetwork is created and ready to use DRAINING: only applicable to subnetworks that have the purpose set to INTERNAL_HTTPS_LOAD_BALANCER and indicates that connections to the load balancer are being drained. A subnetwork that is draining cannot be used or modified until it reaches a status of READY",
            "type": "string"
          },
          "vlans": {
            "description": "A repeated field indicating the VLAN IDs supported on this subnetwork. During Subnet creation, specifying vlan is valid only if enable_l2 is true. During Subnet Update, specifying vlan is allowed only for l2 enabled subnets. Restricted to only one VLAN.",
            "items": {
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "aggregationInterval",
          "allowSubnetCidrRoutesOverlap",
          "creationTimestamp",
          "description",
          "enableFlowLogs",
          "enableL2",
          "enablePrivateV6Access",
          "externalIpv6Prefix",
          "fingerprint",
          "flowSampling",
          "gatewayAddress",
          "internalIpv6Prefix",
          "ipCidrRange",
          "ipv6AccessType",
          "ipv6CidrRange",
          "kind",
          "logConfig",
          "metadata",
          "name",
          "network",
          "privateIpGoogleAccess",
          "privateIpv6GoogleAccess",
          "purpose",
          "region",
          "reservedInternalRange",
          "role",
          "secondaryIpRanges",
          "selfLink",
          "selfLinkWithId",
          "stackType",
          "state",
          "vlans"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getSubnetworkIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getTargetGrpcProxy": {
      "description": "Returns the specified TargetGrpcProxy resource in the given scope.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetGrpcProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetGrpcProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetGrpcProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetGrpcProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetGrpcProxy.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetGrpcProxy for target grpc proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL with id for the resource.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC.",
            "type": "string"
          },
          "validateForProxyless": {
            "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to",
            "type": "boolean"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "selfLink",
          "selfLinkWithId",
          "urlMap",
          "validateForProxyless"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getTargetHttpProxy": {
      "description": "Returns the specified TargetHttpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetHttpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetHttpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy.",
            "type": "string"
          },
          "httpFilters": {
            "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpFilters",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "region",
          "selfLink",
          "selfLinkWithId",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getTargetHttpsProxy": {
      "description": "Returns the specified TargetHttpsProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetHttpsProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetHttpsProxy"
        ]
      },
      "outputs": {
        "properties": {
          "authentication": {
            "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead.",
            "description": "[Deprecated] Use serverTlsPolicy instead.",
            "type": "string"
          },
          "authorization": {
            "deprecationMessage": "[Deprecated] Use authorizationPolicy instead.",
            "description": "[Deprecated] Use authorizationPolicy instead.",
            "type": "string"
          },
          "authorizationPolicy": {
            "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact.",
            "type": "string"
          },
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy.",
            "type": "string"
          },
          "httpFilters": {
            "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "quicOverride": {
            "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured.",
            "type": "string"
          },
          "urlMap": {
            "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map ",
            "type": "string"
          }
        },
        "required": [
          "authentication",
          "authorization",
          "authorizationPolicy",
          "certificateMap",
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpFilters",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "quicOverride",
          "region",
          "selfLink",
          "selfLinkWithId",
          "serverTlsPolicy",
          "sslCertificates",
          "sslPolicy",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getTargetInstance": {
      "description": "Returns the specified TargetInstance resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetInstance": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetInstance",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "instance": {
            "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance ",
            "type": "string"
          },
          "kind": {
            "description": "The type of the resource. Always compute#targetInstance for target instances.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "natPolicy": {
            "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this target instance.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the target instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "instance",
          "kind",
          "name",
          "natPolicy",
          "network",
          "securityPolicy",
          "selfLink",
          "selfLinkWithId",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getTargetPool": {
      "description": "Returns the specified target pool.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetPool": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetPool"
        ]
      },
      "outputs": {
        "properties": {
          "backupPool": {
            "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "failoverRatio": {
            "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
            "type": "number"
          },
          "healthChecks": {
            "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "instances": {
            "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetPool for target pools.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the target pool resides.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this target pool.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "sessionAffinity": {
            "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
            "type": "string"
          }
        },
        "required": [
          "backupPool",
          "creationTimestamp",
          "description",
          "failoverRatio",
          "healthChecks",
          "instances",
          "kind",
          "name",
          "region",
          "securityPolicy",
          "selfLink",
          "selfLinkWithId",
          "sessionAffinity"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getTargetSslProxy": {
      "description": "Returns the specified TargetSslProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetSslProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetSslProxy"
        ]
      },
      "outputs": {
        "properties": {
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetSslProxy for target SSL proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured.",
            "type": "string"
          }
        },
        "required": [
          "certificateMap",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyHeader",
          "selfLink",
          "service",
          "sslCertificates",
          "sslPolicy"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getTargetTcpProxy": {
      "description": "Returns the specified TargetTcpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetTcpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetTcpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyBind",
          "proxyHeader",
          "region",
          "selfLink",
          "service"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getTargetVpnGateway": {
      "description": "Returns the specified target VPN gateway.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetVpnGateway": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetVpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "forwardingRules": {
            "description": "A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated with a VPN gateway.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a TargetVpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the target VPN gateway resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the VPN gateway, which can be one of the following: CREATING, READY, FAILED, or DELETING.",
            "type": "string"
          },
          "tunnels": {
            "description": "A list of URLs to VpnTunnel resources. VpnTunnels are created using the compute.vpntunnels.insert method and associated with a VPN gateway.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "forwardingRules",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "region",
          "selfLink",
          "status",
          "tunnels"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getUrlMap": {
      "description": "Returns the specified UrlMap resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "urlMap": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "urlMap"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultCustomErrorResponsePolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:CustomErrorResponsePolicyResponse",
            "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
          },
          "defaultRouteAction": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpRouteActionResponse",
            "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
          },
          "defaultService": {
            "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.",
            "type": "string"
          },
          "defaultUrlRedirect": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpRedirectActionResponse",
            "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap.",
            "type": "string"
          },
          "headerAction": {
            "$ref": "#/types/google-native:compute%2Falpha:HttpHeaderActionResponse",
            "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
          },
          "hostRules": {
            "description": "The list of host rules to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:HostRuleResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#urlMaps for url maps.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pathMatchers": {
            "description": "The list of named PathMatchers to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:PathMatcherResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "tests": {
            "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:UrlMapTestResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "defaultCustomErrorResponsePolicy",
          "defaultRouteAction",
          "defaultService",
          "defaultUrlRedirect",
          "description",
          "fingerprint",
          "headerAction",
          "hostRules",
          "kind",
          "name",
          "pathMatchers",
          "region",
          "selfLink",
          "tests"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getVpnGateway": {
      "description": "Returns the specified VPN gateway.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "vpnGateway": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "vpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "gatewayIpVersion": {
            "description": "The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used.",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#vpnGateway for VPN gateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this VpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the VPN gateway resides.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used.",
            "type": "string"
          },
          "vpnInterfaces": {
            "description": "The list of VPN interfaces associated with this VPN gateway.",
            "items": {
              "$ref": "#/types/google-native:compute%2Falpha:VpnGatewayVpnGatewayInterfaceResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "gatewayIpVersion",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "region",
          "selfLink",
          "stackType",
          "vpnInterfaces"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getVpnTunnel": {
      "description": "Returns the specified VpnTunnel resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "vpnTunnel": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "vpnTunnel"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "detailedStatus": {
            "description": "Detailed status message for the VPN tunnel.",
            "type": "string"
          },
          "ikeVersion": {
            "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#vpnTunnel for VPN tunnels.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnTunnel.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "localTrafficSelector": {
            "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "peerExternalGateway": {
            "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway.",
            "type": "string"
          },
          "peerExternalGatewayInterface": {
            "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type.",
            "type": "integer"
          },
          "peerGcpGateway": {
            "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway.",
            "type": "string"
          },
          "peerIp": {
            "description": "IP address of the peer VPN gateway. Only IPv4 is supported.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the VPN tunnel resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "remoteTrafficSelector": {
            "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "router": {
            "description": "URL of the router resource to be used for dynamic routing.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sharedSecret": {
            "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway.",
            "type": "string"
          },
          "sharedSecretHash": {
            "description": "Hash of the shared secret.",
            "type": "string"
          },
          "status": {
            "description": "The status of the VPN tunnel, which can be one of the following: - PROVISIONING: Resource is being allocated for the VPN tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all VPN-related configs from the user. Network, TargetVpnGateway, VpnTunnel, ForwardingRule, and Route resources are needed to setup the VPN tunnel. - FIRST_HANDSHAKE: Successful first handshake with the peer VPN. - ESTABLISHED: Secure session is successfully established with the peer VPN. - NETWORK_ERROR: Deprecated, replaced by NO_INCOMING_PACKETS - AUTHORIZATION_ERROR: Auth error (for example, bad shared secret). - NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING: Resources are being deallocated for the VPN tunnel. - FAILED: Tunnel creation has failed and the tunnel is not ready to be used. - NO_INCOMING_PACKETS: No incoming packets from peer. - REJECTED: Tunnel configuration was rejected, can be result of being denied access. - ALLOCATING_RESOURCES: Cloud VPN is in the process of allocating all required resources. - STOPPED: Tunnel is stopped due to its Forwarding Rules being deleted for Classic VPN tunnels or the project is in frozen state. - PEER_IDENTITY_MISMATCH: Peer identity does not match peer IP, probably behind NAT. - TS_NARROWING_NOT_ALLOWED: Traffic selector narrowing not allowed for an HA-VPN tunnel. ",
            "type": "string"
          },
          "targetVpnGateway": {
            "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created.",
            "type": "string"
          },
          "vpnGateway": {
            "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created.",
            "type": "string"
          },
          "vpnGatewayInterface": {
            "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`.",
            "type": "integer"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "detailedStatus",
          "ikeVersion",
          "kind",
          "labelFingerprint",
          "labels",
          "localTrafficSelector",
          "name",
          "peerExternalGateway",
          "peerExternalGatewayInterface",
          "peerGcpGateway",
          "peerIp",
          "region",
          "remoteTrafficSelector",
          "router",
          "selfLink",
          "sharedSecret",
          "sharedSecretHash",
          "status",
          "targetVpnGateway",
          "vpnGateway",
          "vpnGatewayInterface"
        ],
        "type": "object"
      }
    },
    "google-native:compute/alpha:getZoneQueuedResource": {
      "description": "Returns the specified QueuedResource resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "queuedResource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "queuedResource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "bulkInsertInstanceResource": {
            "$ref": "#/types/google-native:compute%2Falpha:BulkInsertInstanceResourceResponse",
            "description": "Specification of VM instances to create."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#queuedResource for QueuedResources.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "queuingPolicy": {
            "$ref": "#/types/google-native:compute%2Falpha:QueuingPolicyResponse",
            "description": "Queuing parameters for the requested capacity."
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "state": {
            "description": "[Output only] High-level status of the request.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Falpha:QueuedResourceStatusResponse",
            "description": "[Output only] Result of queuing and provisioning based on deferred capacity."
          },
          "zone": {
            "description": "URL of the zone where the resource resides. Only applicable for zonal resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "bulkInsertInstanceResource",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "queuingPolicy",
          "selfLink",
          "selfLinkWithId",
          "state",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getAddress": {
      "description": "Returns the specified address resource.",
      "inputs": {
        "properties": {
          "address": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "address",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "address": {
            "description": "The static IP address represented by this resource.",
            "type": "string"
          },
          "addressType": {
            "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "ipv6EndpointType": {
            "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#address for addresses.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
            "type": "string"
          },
          "prefixLength": {
            "description": "The prefix length if the resource represents an IP range.",
            "type": "integer"
          },
          "purpose": {
            "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
            "type": "string"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose.",
            "type": "string"
          },
          "users": {
            "description": "The URLs of the resources that are using this address.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "address",
          "addressType",
          "creationTimestamp",
          "description",
          "ipVersion",
          "ipv6EndpointType",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "networkTier",
          "prefixLength",
          "purpose",
          "region",
          "selfLink",
          "status",
          "subnetwork",
          "users"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getAutoscaler": {
      "description": "Returns the specified autoscaler resource.",
      "inputs": {
        "properties": {
          "autoscaler": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscaler",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyResponse",
            "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#autoscaler for autoscalers.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "recommendedSize": {
            "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction.",
            "type": "integer"
          },
          "region": {
            "description": "URL of the region where the instance group resides (for autoscalers living in regional scope).",
            "type": "string"
          },
          "scalingScheduleStatus": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Status information of existing scaling schedules.",
            "type": "object"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future.",
            "type": "string"
          },
          "statusDetails": {
            "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AutoscalerStatusDetailsResponse"
            },
            "type": "array"
          },
          "target": {
            "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "recommendedSize",
          "region",
          "scalingScheduleStatus",
          "selfLink",
          "status",
          "statusDetails",
          "target",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getBackendBucket": {
      "description": "Returns the specified BackendBucket resource.",
      "inputs": {
        "properties": {
          "backendBucket": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendBucket"
        ]
      },
      "outputs": {
        "properties": {
          "bucketName": {
            "description": "Cloud Storage bucket name.",
            "type": "string"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendBucketCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendBucket."
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customResponseHeaders": {
            "description": "Headers that the Application Load Balancer should add to proxied responses.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend bucket.",
            "type": "string"
          },
          "enableCdn": {
            "description": "If true, enable Cloud CDN for this BackendBucket.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "bucketName",
          "cdnPolicy",
          "compressionMode",
          "creationTimestamp",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCdn",
          "kind",
          "name",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getBackendBucketIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getBackendService": {
      "description": "Returns the specified BackendService resource.",
      "inputs": {
        "properties": {
          "backendService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendService"
        ]
      },
      "outputs": {
        "properties": {
          "affinityCookieTtlSec": {
            "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "integer"
          },
          "backends": {
            "description": "The list of backends that serve this BackendService.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BackendResponse"
            },
            "type": "array"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
          },
          "circuitBreakers": {
            "$ref": "#/types/google-native:compute%2Fbeta:CircuitBreakersResponse"
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "connectionDraining": {
            "$ref": "#/types/google-native:compute%2Fbeta:ConnectionDrainingResponse"
          },
          "connectionTrackingPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceConnectionTrackingPolicyResponse",
            "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
          },
          "consistentHash": {
            "$ref": "#/types/google-native:compute%2Fbeta:ConsistentHashLoadBalancerSettingsResponse",
            "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customRequestHeaders": {
            "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "customResponseHeaders": {
            "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend service.",
            "type": "string"
          },
          "enableCDN": {
            "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
            "type": "boolean"
          },
          "failoverPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceFailoverPolicyResponse",
            "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "iap": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceIAPResponse",
            "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
          },
          "ipAddressSelectionPolicy": {
            "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#backendService for backend services.",
            "type": "string"
          },
          "loadBalancingScheme": {
            "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
            "type": "string"
          },
          "localityLbPolicies": {
            "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
            },
            "type": "array"
          },
          "localityLbPolicy": {
            "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLogConfigResponse",
            "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
          },
          "maxStreamDuration": {
            "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
            "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
          },
          "metadatas": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL.",
            "type": "string"
          },
          "outlierDetection": {
            "$ref": "#/types/google-native:compute%2Fbeta:OutlierDetectionResponse",
            "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
          },
          "port": {
            "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "type": "integer"
          },
          "portName": {
            "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
            "type": "string"
          },
          "protocol": {
            "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this backend service.",
            "type": "string"
          },
          "securitySettings": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecuritySettingsResponse",
            "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serviceBindings": {
            "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceLbPolicy": {
            "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global.",
            "type": "string"
          },
          "sessionAffinity": {
            "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
            "type": "string"
          },
          "subsetting": {
            "$ref": "#/types/google-native:compute%2Fbeta:SubsettingResponse"
          },
          "timeoutSec": {
            "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration.",
            "type": "integer"
          },
          "usedBy": {
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceUsedByResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "affinityCookieTtlSec",
          "backends",
          "cdnPolicy",
          "circuitBreakers",
          "compressionMode",
          "connectionDraining",
          "connectionTrackingPolicy",
          "consistentHash",
          "creationTimestamp",
          "customRequestHeaders",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCDN",
          "failoverPolicy",
          "fingerprint",
          "healthChecks",
          "iap",
          "ipAddressSelectionPolicy",
          "kind",
          "loadBalancingScheme",
          "localityLbPolicies",
          "localityLbPolicy",
          "logConfig",
          "maxStreamDuration",
          "metadatas",
          "name",
          "network",
          "outlierDetection",
          "port",
          "portName",
          "protocol",
          "region",
          "securityPolicy",
          "securitySettings",
          "selfLink",
          "serviceBindings",
          "serviceLbPolicy",
          "sessionAffinity",
          "subsetting",
          "timeoutSec",
          "usedBy"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getBackendServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getDisk": {
      "description": "Returns the specified persistent disk.",
      "inputs": {
        "properties": {
          "disk": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "disk",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "asyncPrimaryDisk": {
            "$ref": "#/types/google-native:compute%2Fbeta:DiskAsyncReplicationResponse",
            "description": "Disk asynchronously replicated into this disk."
          },
          "asyncSecondaryDisks": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A list of disks this disk is asynchronously replicated to.",
            "type": "object"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
          },
          "enableConfidentialCompute": {
            "description": "Whether this disk is using confidential compute mode.",
            "type": "boolean"
          },
          "eraseWindowsVssSignature": {
            "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature.",
            "type": "boolean"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "interface": {
            "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
            "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#disk for disks.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastAttachTimestamp": {
            "description": "Last attach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastDetachTimestamp": {
            "description": "Last detach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this disk.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of publicly visible licenses. Reserved for Google's use.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "locked": {
            "description": "The field indicates if the disk is created from a locked source image. Attachment of a disk created from a locked source image will cause the following operations to become irreversibly prohibited: - R/W or R/O disk attachment to any other instance - Disk detachment. And the disk can only be deleted when the instance is deleted - Creation of images or snapshots - Disk cloning Furthermore, the instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Further attachment of secondary disks. - Detachment of any disks - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true for locked disks - Attach a locked disk with --auto-delete parameter set to false ",
            "type": "boolean"
          },
          "multiWriter": {
            "description": "Indicates whether or not the disk can be read/write attached to more than one instance.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "options": {
            "description": "Internal use only.",
            "type": "string"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Fbeta:DiskParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "physicalBlockSizeBytes": {
            "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project.",
            "type": "string"
          },
          "provisionedIops": {
            "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.",
            "type": "string"
          },
          "provisionedThroughput": {
            "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "replicaZones": {
            "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this disk for automatic snapshot creations.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fbeta:DiskResourceStatusResponse",
            "description": "Status information for the disk resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "sizeGb": {
            "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicy": {
            "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicyId": {
            "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used.",
            "type": "string"
          },
          "sourceImage": {
            "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
            "type": "string"
          },
          "sourceInstantSnapshot": {
            "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot ",
            "type": "string"
          },
          "sourceInstantSnapshotId": {
            "description": "The unique ID of the instant snapshot used to create this disk. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact version of the instant snapshot that was used.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
            "type": "string"
          },
          "sourceStorageObject": {
            "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead.",
            "type": "string"
          },
          "status": {
            "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. ",
            "type": "string"
          },
          "storageType": {
            "deprecationMessage": "[Deprecated] Storage type of the persistent disk.",
            "description": "[Deprecated] Storage type of the persistent disk.",
            "type": "string"
          },
          "type": {
            "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types.",
            "type": "string"
          },
          "userLicenses": {
            "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch ",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "users": {
            "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "zone": {
            "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "architecture",
          "asyncPrimaryDisk",
          "asyncSecondaryDisks",
          "creationTimestamp",
          "description",
          "diskEncryptionKey",
          "enableConfidentialCompute",
          "eraseWindowsVssSignature",
          "guestOsFeatures",
          "interface",
          "kind",
          "labelFingerprint",
          "labels",
          "lastAttachTimestamp",
          "lastDetachTimestamp",
          "licenseCodes",
          "licenses",
          "locationHint",
          "locked",
          "multiWriter",
          "name",
          "options",
          "params",
          "physicalBlockSizeBytes",
          "provisionedIops",
          "provisionedThroughput",
          "region",
          "replicaZones",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "sizeGb",
          "sourceConsistencyGroupPolicy",
          "sourceConsistencyGroupPolicyId",
          "sourceDisk",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceInstantSnapshot",
          "sourceInstantSnapshotId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceStorageObject",
          "status",
          "storageType",
          "type",
          "userLicenses",
          "users",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getDiskIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getExternalVpnGateway": {
      "description": "Returns the specified externalVpnGateway. Get a list of available externalVpnGateways by making a list() request.",
      "inputs": {
        "properties": {
          "externalVpnGateway": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "externalVpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "interfaces": {
            "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:ExternalVpnGatewayInterfaceResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#externalVpnGateway for externalVpnGateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this ExternalVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an ExternalVpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "redundancyType": {
            "description": "Indicates the user-supplied redundancy type of this external VPN gateway.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "interfaces",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "redundancyType",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getFirewall": {
      "description": "Returns the specified firewall.",
      "inputs": {
        "properties": {
          "firewall": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewall"
        ]
      },
      "outputs": {
        "properties": {
          "allowed": {
            "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:FirewallAllowedItemResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "denied": {
            "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:FirewallDeniedItemResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "destinationRanges": {
            "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "direction": {
            "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields.",
            "type": "string"
          },
          "disabled": {
            "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled.",
            "type": "boolean"
          },
          "enableLogging": {
            "deprecationMessage": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging.",
            "description": "Deprecated in favor of enable in LogConfig. This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported t Cloud Logging.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#firewall for firewall rules.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:FirewallLogConfigResponse",
            "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default ",
            "type": "string"
          },
          "priority": {
            "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`.",
            "type": "integer"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sourceRanges": {
            "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sourceServiceAccounts": {
            "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sourceTags": {
            "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetServiceAccounts": {
            "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetTags": {
            "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "allowed",
          "creationTimestamp",
          "denied",
          "description",
          "destinationRanges",
          "direction",
          "disabled",
          "enableLogging",
          "kind",
          "logConfig",
          "name",
          "network",
          "priority",
          "selfLink",
          "sourceRanges",
          "sourceServiceAccounts",
          "sourceTags",
          "targetServiceAccounts",
          "targetTags"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getFirewallPolicy": {
      "description": "Returns the specified firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getForwardingRule": {
      "description": "Returns the specified ForwardingRule resource.",
      "inputs": {
        "properties": {
          "forwardingRule": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "forwardingRule",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "allPorts": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. ",
            "type": "boolean"
          },
          "allowGlobalAccess": {
            "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
            "type": "boolean"
          },
          "allowPscGlobalAccess": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region.",
            "type": "boolean"
          },
          "allowPscPacketInjection": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field.",
            "type": "boolean"
          },
          "backendService": {
            "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
            "type": "string"
          },
          "baseForwardingRule": {
            "description": "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.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "ipAddress": {
            "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number.",
            "type": "string"
          },
          "ipProtocol": {
            "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "isMirroringCollector": {
            "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "loadBalancingScheme": {
            "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
            "type": "string"
          },
          "metadataFilters": {
            "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilterResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter.",
            "type": "string"
          },
          "network": {
            "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
            "type": "string"
          },
          "noAutomateDnsZone": {
            "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. Once set, this field is not mutable.",
            "type": "boolean"
          },
          "portRange": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?",
            "type": "string"
          },
          "ports": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pscConnectionId": {
            "description": "The PSC connection id of the PSC Forwarding Rule.",
            "type": "string"
          },
          "pscConnectionStatus": {
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serviceDirectoryRegistrations": {
            "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleServiceDirectoryRegistrationResponse"
            },
            "type": "array"
          },
          "serviceLabel": {
            "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
            "type": "string"
          },
          "serviceName": {
            "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
            "type": "string"
          },
          "sourceIpRanges": {
            "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subnetwork": {
            "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
            "type": "string"
          },
          "target": {
            "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. ",
            "type": "string"
          }
        },
        "required": [
          "allPorts",
          "allowGlobalAccess",
          "allowPscGlobalAccess",
          "allowPscPacketInjection",
          "backendService",
          "baseForwardingRule",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipAddress",
          "ipProtocol",
          "ipVersion",
          "isMirroringCollector",
          "kind",
          "labelFingerprint",
          "labels",
          "loadBalancingScheme",
          "metadataFilters",
          "name",
          "network",
          "networkTier",
          "noAutomateDnsZone",
          "portRange",
          "ports",
          "pscConnectionId",
          "pscConnectionStatus",
          "region",
          "selfLink",
          "serviceDirectoryRegistrations",
          "serviceLabel",
          "serviceName",
          "sourceIpRanges",
          "subnetwork",
          "target"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getFutureReservation": {
      "description": "Retrieves information about the specified future reservation.",
      "inputs": {
        "properties": {
          "futureReservation": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "futureReservation",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoCreatedReservationsDeleteTime": {
            "description": "Future timestamp when the FR auto-created reservations will be deleted by GCE. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\"\u003eRFC3339 value.",
            "type": "string"
          },
          "autoCreatedReservationsDuration": {
            "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
            "description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by GCE. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
          },
          "autoDeleteAutoCreatedReservations": {
            "description": "Setting for enabling or disabling automatic deletion for auto-created reservation. If set to true, auto-created reservations will be deleted at Future Reservation's end time (default) or at user's defined timestamp if any of the [auto_created_reservations_delete_time, auto_created_reservations_duration] values is specified. For keeping auto-created reservation indefinitely, this value should be set to false.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this future reservation in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the future reservation.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#futureReservation for future reservations.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "namePrefix": {
            "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-####.",
            "type": "string"
          },
          "planningStatus": {
            "description": "Planning state before being submitted for evaluation",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shareSettings": {
            "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsResponse",
            "description": "List of Projects/Folders to share with."
          },
          "specificSkuProperties": {
            "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationSpecificSKUPropertiesResponse",
            "description": "Future Reservation configuration to indicate instance properties and total count."
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationStatusResponse",
            "description": "[Output only] Status of the Future Reservation"
          },
          "timeWindow": {
            "$ref": "#/types/google-native:compute%2Fbeta:FutureReservationTimeWindowResponse",
            "description": "Time window for this Future Reservation."
          },
          "zone": {
            "description": "URL of the Zone where this future reservation resides.",
            "type": "string"
          }
        },
        "required": [
          "autoCreatedReservationsDeleteTime",
          "autoCreatedReservationsDuration",
          "autoDeleteAutoCreatedReservations",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "namePrefix",
          "planningStatus",
          "selfLink",
          "selfLinkWithId",
          "shareSettings",
          "specificSkuProperties",
          "status",
          "timeWindow",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getGlobalAddress": {
      "description": "Returns the specified address resource.",
      "inputs": {
        "properties": {
          "address": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "address"
        ]
      },
      "outputs": {
        "properties": {
          "address": {
            "description": "The static IP address represented by this resource.",
            "type": "string"
          },
          "addressType": {
            "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "ipv6EndpointType": {
            "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#address for addresses.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
            "type": "string"
          },
          "prefixLength": {
            "description": "The prefix length if the resource represents an IP range.",
            "type": "integer"
          },
          "purpose": {
            "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
            "type": "string"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose.",
            "type": "string"
          },
          "users": {
            "description": "The URLs of the resources that are using this address.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "address",
          "addressType",
          "creationTimestamp",
          "description",
          "ipVersion",
          "ipv6EndpointType",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "networkTier",
          "prefixLength",
          "purpose",
          "region",
          "selfLink",
          "status",
          "subnetwork",
          "users"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getGlobalForwardingRule": {
      "description": "Returns the specified GlobalForwardingRule resource. Gets a list of available forwarding rules by making a list() request.",
      "inputs": {
        "properties": {
          "forwardingRule": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "forwardingRule"
        ]
      },
      "outputs": {
        "properties": {
          "allPorts": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. ",
            "type": "boolean"
          },
          "allowGlobalAccess": {
            "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
            "type": "boolean"
          },
          "allowPscGlobalAccess": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region.",
            "type": "boolean"
          },
          "allowPscPacketInjection": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the producer is allowed to inject packets into the consumer's network. If set to true, the target service attachment must have tunneling enabled and TunnelingConfig.RoutingMode set to PACKET_INJECTION Non-PSC forwarding rules should not use this field.",
            "type": "boolean"
          },
          "backendService": {
            "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
            "type": "string"
          },
          "baseForwardingRule": {
            "description": "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.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "ipAddress": {
            "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number.",
            "type": "string"
          },
          "ipProtocol": {
            "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "isMirroringCollector": {
            "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "loadBalancingScheme": {
            "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
            "type": "string"
          },
          "metadataFilters": {
            "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:MetadataFilterResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter.",
            "type": "string"
          },
          "network": {
            "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
            "type": "string"
          },
          "noAutomateDnsZone": {
            "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. Once set, this field is not mutable.",
            "type": "boolean"
          },
          "portRange": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?",
            "type": "string"
          },
          "ports": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pscConnectionId": {
            "description": "The PSC connection id of the PSC Forwarding Rule.",
            "type": "string"
          },
          "pscConnectionStatus": {
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serviceDirectoryRegistrations": {
            "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:ForwardingRuleServiceDirectoryRegistrationResponse"
            },
            "type": "array"
          },
          "serviceLabel": {
            "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
            "type": "string"
          },
          "serviceName": {
            "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
            "type": "string"
          },
          "sourceIpRanges": {
            "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subnetwork": {
            "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
            "type": "string"
          },
          "target": {
            "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. ",
            "type": "string"
          }
        },
        "required": [
          "allPorts",
          "allowGlobalAccess",
          "allowPscGlobalAccess",
          "allowPscPacketInjection",
          "backendService",
          "baseForwardingRule",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipAddress",
          "ipProtocol",
          "ipVersion",
          "isMirroringCollector",
          "kind",
          "labelFingerprint",
          "labels",
          "loadBalancingScheme",
          "metadataFilters",
          "name",
          "network",
          "networkTier",
          "noAutomateDnsZone",
          "portRange",
          "ports",
          "pscConnectionId",
          "pscConnectionStatus",
          "region",
          "selfLink",
          "serviceDirectoryRegistrations",
          "serviceLabel",
          "serviceName",
          "sourceIpRanges",
          "subnetwork",
          "target"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getGlobalNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
            "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
            "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverlessDeployment": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeploymentResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "loadBalancer",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "serverlessDeployment",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getGlobalPublicDelegatedPrefix": {
      "description": "Returns the specified global PublicDelegatedPrefix resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicDelegatedPrefix": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicDelegatedPrefix"
        ]
      },
      "outputs": {
        "properties": {
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The IP address range, in CIDR format, represented by this public delegated prefix.",
            "type": "string"
          },
          "isLiveMigration": {
            "description": "If true, the prefix will be live migrated.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parentPrefix": {
            "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix.",
            "type": "string"
          },
          "publicDelegatedSubPrefixs": {
            "description": "The list of sub public delegated prefixes that exist for this public delegated prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. ",
            "type": "string"
          }
        },
        "required": [
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipCidrRange",
          "isLiveMigration",
          "kind",
          "name",
          "parentPrefix",
          "publicDelegatedSubPrefixs",
          "region",
          "selfLink",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getHealthCheck": {
      "description": "Returns the specified HealthCheck resource.",
      "inputs": {
        "properties": {
          "healthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in 3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:GRPCHealthCheckResponse"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "http2HealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:HTTP2HealthCheckResponse"
          },
          "httpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:HTTPHealthCheckResponse"
          },
          "httpsHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:HTTPSHealthCheckResponse"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:HealthCheckLogConfigResponse",
            "description": "Configure logging on this health check."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash.",
            "type": "string"
          },
          "region": {
            "description": "Region where the health check resides. Not applicable to global health checks.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sslHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:SSLHealthCheckResponse"
          },
          "tcpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:TCPHealthCheckResponse"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "type": {
            "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
            "type": "string"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "grpcHealthCheck",
          "healthyThreshold",
          "http2HealthCheck",
          "httpHealthCheck",
          "httpsHealthCheck",
          "kind",
          "logConfig",
          "name",
          "region",
          "selfLink",
          "sslHealthCheck",
          "tcpHealthCheck",
          "timeoutSec",
          "type",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getHttpHealthCheck": {
      "description": "Returns the specified HttpHealthCheck resource.",
      "inputs": {
        "properties": {
          "httpHealthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "httpHealthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "host": {
            "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "port": {
            "description": "The TCP port number for the HTTP health check request. The default value is 80.",
            "type": "integer"
          },
          "requestPath": {
            "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "healthyThreshold",
          "host",
          "kind",
          "name",
          "port",
          "requestPath",
          "selfLink",
          "timeoutSec",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getHttpsHealthCheck": {
      "description": "Returns the specified HttpsHealthCheck resource.",
      "inputs": {
        "properties": {
          "httpsHealthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "httpsHealthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "host": {
            "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "port": {
            "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
            "type": "integer"
          },
          "requestPath": {
            "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
            "type": "integer"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "healthyThreshold",
          "host",
          "kind",
          "name",
          "port",
          "requestPath",
          "selfLink",
          "timeoutSec",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getImage": {
      "description": "Returns the specified image.",
      "inputs": {
        "properties": {
          "image": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "image"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the image. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "archiveSizeBytes": {
            "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "deprecated": {
            "$ref": "#/types/google-native:compute%2Fbeta:DeprecationStatusResponse",
            "description": "The deprecation status associated with this image."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the image when restored onto a persistent disk (in GB).",
            "type": "string"
          },
          "enableConfidentialCompute": {
            "description": "Whether this image is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk.",
            "type": "boolean"
          },
          "family": {
            "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.",
            "type": "string"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "imageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
          },
          "kind": {
            "description": "Type of the resource. Always compute#image for images.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an image.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this image.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "Any applicable license URI.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locked": {
            "description": "A flag for marketplace VM disk created from the image, which is designed for marketplace VM disk to prevent the proprietary data on the disk from being accessed unwantedly. The flag will be inherited by the disk created from the image. The disk with locked flag set to true will be prohibited from performing the operations below: - R/W or R/O disk attach - Disk detach, if disk is created via create-on-create - Create images - Create snapshots - Create disk clone (create disk from the current disk) The image with the locked field set to true will be prohibited from performing the operations below: - Create images from the current image - Update the locked field for the current image The instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Secondary disk attach - Create instant snapshot - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true ",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "rawDisk": {
            "$ref": "#/types/google-native:compute%2Fbeta:ImageRawDiskResponse",
            "description": "The parameters of the raw disk image."
          },
          "rolloutOverride": {
            "$ref": "#/types/google-native:compute%2Fbeta:RolloutPolicyResponse",
            "description": "A rollout policy to apply to this image. When specified, the rollout policy overrides per-zone references to the image via the associated image family. The rollout policy restricts the zones where this image is accessible when using a zonal image family reference. When the rollout policy does not include the user specified zone, or if the zone is rolled out, this image is accessible. The rollout policy for this image is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "shieldedInstanceInitialState": {
            "$ref": "#/types/google-native:compute%2Fbeta:InitialStateConfigResponse",
            "description": "Set the secure boot keys of shielded instance."
          },
          "sourceDisk": {
            "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceDiskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "sourceImage": {
            "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name.",
            "type": "string"
          },
          "sourceType": {
            "description": "The type of the image used to create this disk. The default and only valid value is RAW.",
            "type": "string"
          },
          "status": {
            "description": "The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
            "type": "string"
          },
          "storageLocations": {
            "description": "Cloud Storage bucket storage location of the image (regional or multi-regional).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "userLicenses": {
            "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch ",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "architecture",
          "archiveSizeBytes",
          "creationTimestamp",
          "deprecated",
          "description",
          "diskSizeGb",
          "enableConfidentialCompute",
          "family",
          "guestOsFeatures",
          "imageEncryptionKey",
          "kind",
          "labelFingerprint",
          "labels",
          "licenseCodes",
          "licenses",
          "locked",
          "name",
          "rawDisk",
          "rolloutOverride",
          "satisfiesPzs",
          "selfLink",
          "shieldedInstanceInitialState",
          "sourceDisk",
          "sourceDiskEncryptionKey",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceType",
          "status",
          "storageLocations",
          "userLicenses"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getImageIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstance": {
      "description": "Returns the specified Instance resource.",
      "inputs": {
        "properties": {
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "advancedMachineFeatures": {
            "$ref": "#/types/google-native:compute%2Fbeta:AdvancedMachineFeaturesResponse",
            "description": "Controls for advanced machine-related behavior features."
          },
          "canIpForward": {
            "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding .",
            "type": "boolean"
          },
          "confidentialInstanceConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:ConfidentialInstanceConfigResponse"
          },
          "cpuPlatform": {
            "description": "The CPU platform used by this instance.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "deletionProtection": {
            "description": "Whether the resource should be protected against deletion.",
            "type": "boolean"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "disks": {
            "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AttachedDiskResponse"
            },
            "type": "array"
          },
          "displayDevice": {
            "$ref": "#/types/google-native:compute%2Fbeta:DisplayDeviceResponse",
            "description": "Enables display device for the instance."
          },
          "eraseWindowsVssSignature": {
            "description": "Specifies whether the disks restored from source snapshots or source machine image should erase Windows specific VSS signature.",
            "type": "boolean"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the instance's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update the instance. You must always provide an up-to-date fingerprint hash in order to update the instance. To see the latest fingerprint, make get() request to the instance.",
            "type": "string"
          },
          "guestAccelerators": {
            "description": "A list of the type and count of accelerator cards attached to the instance.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfigResponse"
            },
            "type": "array"
          },
          "hostname": {
            "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS.",
            "type": "string"
          },
          "instanceEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
          },
          "keyRevocationActionType": {
            "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#instance for instances.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for this request, which is essentially a hash of the label's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the instance.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastStartTimestamp": {
            "description": "Last start timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastStopTimestamp": {
            "description": "Last stop timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastSuspendedTimestamp": {
            "description": "Last suspended timestamp in RFC3339 text format.",
            "type": "string"
          },
          "machineType": {
            "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:compute%2Fbeta:MetadataResponse",
            "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
          },
          "minCpuPlatform": {
            "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\".",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "networkInterfaces": {
            "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:NetworkInterfaceResponse"
            },
            "type": "array"
          },
          "networkPerformanceConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkPerformanceConfigResponse"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "postKeyRevocationActionType": {
            "description": "PostKeyRevocationActionType of the instance.",
            "type": "string"
          },
          "privateIpv6GoogleAccess": {
            "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default.",
            "type": "string"
          },
          "reservationAffinity": {
            "$ref": "#/types/google-native:compute%2Fbeta:ReservationAffinityResponse",
            "description": "Specifies the reservations that this instance can consume from."
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourceStatusResponse",
            "description": "Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "scheduling": {
            "$ref": "#/types/google-native:compute%2Fbeta:SchedulingResponse",
            "description": "Sets the scheduling options for this instance."
          },
          "selfLink": {
            "description": "Server-defined URL for this resource.",
            "type": "string"
          },
          "serviceAccounts": {
            "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:ServiceAccountResponse"
            },
            "type": "array"
          },
          "shieldedInstanceConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:ShieldedInstanceConfigResponse"
          },
          "shieldedInstanceIntegrityPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:ShieldedInstanceIntegrityPolicyResponse"
          },
          "shieldedVmConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:ShieldedVmConfigResponse",
            "description": "Deprecating, please use shielded_instance_config."
          },
          "shieldedVmIntegrityPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:ShieldedVmIntegrityPolicyResponse",
            "description": "Deprecating, please use shielded_instance_integrity_policy."
          },
          "sourceMachineImage": {
            "description": "Source machine image",
            "type": "string"
          },
          "sourceMachineImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "Source machine image encryption key when creating an instance from a machine image."
          },
          "startRestricted": {
            "description": "Whether a VM has been restricted for start because Compute Engine has detected suspicious activity.",
            "type": "boolean"
          },
          "status": {
            "description": "The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING, and TERMINATED. For more information about the status of the instance, see Instance life cycle.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          },
          "tags": {
            "$ref": "#/types/google-native:compute%2Fbeta:TagsResponse",
            "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
          },
          "zone": {
            "description": "URL of the zone where the instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "advancedMachineFeatures",
          "canIpForward",
          "confidentialInstanceConfig",
          "cpuPlatform",
          "creationTimestamp",
          "deletionProtection",
          "description",
          "disks",
          "displayDevice",
          "eraseWindowsVssSignature",
          "fingerprint",
          "guestAccelerators",
          "hostname",
          "instanceEncryptionKey",
          "keyRevocationActionType",
          "kind",
          "labelFingerprint",
          "labels",
          "lastStartTimestamp",
          "lastStopTimestamp",
          "lastSuspendedTimestamp",
          "machineType",
          "metadata",
          "minCpuPlatform",
          "name",
          "networkInterfaces",
          "networkPerformanceConfig",
          "params",
          "postKeyRevocationActionType",
          "privateIpv6GoogleAccess",
          "reservationAffinity",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "scheduling",
          "selfLink",
          "serviceAccounts",
          "shieldedInstanceConfig",
          "shieldedInstanceIntegrityPolicy",
          "shieldedVmConfig",
          "shieldedVmIntegrityPolicy",
          "sourceMachineImage",
          "sourceMachineImageEncryptionKey",
          "startRestricted",
          "status",
          "statusMessage",
          "tags",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstanceGroup": {
      "description": "Returns the specified zonal instance group. Get a list of available zonal instance groups by making a list() request. For managed instance groups, use the instanceGroupManagers or regionInstanceGroupManagers methods instead.",
      "inputs": {
        "properties": {
          "instanceGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance group in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroup for instance groups.",
            "type": "string"
          },
          "name": {
            "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. ",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:NamedPortResponse"
            },
            "type": "array"
          },
          "network": {
            "description": "The URL of the network to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0).",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the instance group is located (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance group. The server generates this URL.",
            "type": "string"
          },
          "size": {
            "description": "The total number of instances in the instance group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0).",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "namedPorts",
          "network",
          "region",
          "selfLink",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstanceGroupManager": {
      "description": "Returns all of the details about the specified managed instance group.",
      "inputs": {
        "properties": {
          "instanceGroupManager": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroupManager",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "allInstancesConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAllInstancesConfigResponse",
            "description": "Specifies configuration that overrides the instance template configuration for the group."
          },
          "autoHealingPolicies": {
            "description": "The autohealing policy for this managed instance group. You can specify only one value.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAutoHealingPolicyResponse"
            },
            "type": "array"
          },
          "baseInstanceName": {
            "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this managed instance group in RFC3339 text format.",
            "type": "string"
          },
          "currentActions": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerActionsSummaryResponse",
            "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "distributionPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicyResponse",
            "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
          },
          "failoverAction": {
            "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager.",
            "type": "string"
          },
          "instanceFlexibilityPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceFlexibilityPolicyResponse",
            "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
          },
          "instanceGroup": {
            "description": "The URL of the Instance Group resource.",
            "type": "string"
          },
          "instanceLifecyclePolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceLifecyclePolicyResponse",
            "description": "The repair policy for this managed instance group."
          },
          "instanceTemplate": {
            "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups.",
            "type": "string"
          },
          "listManagedInstancesResults": {
            "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
            "type": "string"
          },
          "name": {
            "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:NamedPortResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "The URL of the region where the managed instance group resides (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this managed instance group. The server defines this URL.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used.",
            "type": "string"
          },
          "standbyPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStandbyPolicyResponse",
            "description": "Standby policy for stopped and suspended instances."
          },
          "statefulPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:StatefulPolicyResponse",
            "description": "Stateful configuration for this Instanced Group Manager"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStatusResponse",
            "description": "The status of this managed instance group."
          },
          "targetPools": {
            "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetSize": {
            "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number.",
            "type": "integer"
          },
          "targetStoppedSize": {
            "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. ",
            "type": "integer"
          },
          "targetSuspendedSize": {
            "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. ",
            "type": "integer"
          },
          "updatePolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyResponse",
            "description": "The update policy for this managed instance group."
          },
          "versions": {
            "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerVersionResponse"
            },
            "type": "array"
          },
          "zone": {
            "description": "The URL of a zone where the managed instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "allInstancesConfig",
          "autoHealingPolicies",
          "baseInstanceName",
          "creationTimestamp",
          "currentActions",
          "description",
          "distributionPolicy",
          "failoverAction",
          "fingerprint",
          "instanceFlexibilityPolicy",
          "instanceGroup",
          "instanceLifecyclePolicy",
          "instanceTemplate",
          "kind",
          "listManagedInstancesResults",
          "name",
          "namedPorts",
          "region",
          "selfLink",
          "serviceAccount",
          "standbyPolicy",
          "statefulPolicy",
          "status",
          "targetPools",
          "targetSize",
          "targetStoppedSize",
          "targetSuspendedSize",
          "updatePolicy",
          "versions",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstanceGroupManagerResizeRequest": {
      "description": "Returns all of the details about the specified resize request.",
      "inputs": {
        "properties": {
          "instanceGroupManager": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "resizeRequest": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroupManager",
          "resizeRequest",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "count": {
            "description": "The count of instances to create as part of this resize request.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this resize request in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroupManagerResizeRequest for resize requests.",
            "type": "string"
          },
          "name": {
            "description": "The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "requestedRunDuration": {
            "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
            "description": "Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted."
          },
          "resizeBy": {
            "description": "The number of instances to be created by this resize request. The group's target size will be increased by this number.",
            "type": "integer"
          },
          "selfLink": {
            "description": "The URL for this resize request. The server defines this URL.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "state": {
            "description": "[Output only] Current state of the request.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerResizeRequestStatusResponse",
            "description": "[Output only] Status of the request."
          },
          "zone": {
            "description": "The URL of a zone where the resize request is located. Populated only for zonal resize requests.",
            "type": "string"
          }
        },
        "required": [
          "count",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "requestedRunDuration",
          "resizeBy",
          "selfLink",
          "selfLinkWithId",
          "state",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstanceTemplate": {
      "description": "Returns the specified instance template.",
      "inputs": {
        "properties": {
          "instanceTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceTemplate"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance template in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceTemplate for instance templates.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesResponse",
            "description": "The instance properties for this instance template."
          },
          "region": {
            "description": "URL of the region where the instance template resides. Only applicable for regional resources.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance template. The server defines this URL.",
            "type": "string"
          },
          "sourceInstance": {
            "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceParams": {
            "$ref": "#/types/google-native:compute%2Fbeta:SourceInstanceParamsResponse",
            "description": "The source instance params to use to create this instance template."
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "properties",
          "region",
          "selfLink",
          "sourceInstance",
          "sourceInstanceParams"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstanceTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstantSnapshot": {
      "description": "Returns the specified InstantSnapshot resource in the specified zone.",
      "inputs": {
        "properties": {
          "instantSnapshot": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instantSnapshot",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the instant snapshot. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the source disk, specified in GB.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#instantSnapshot for InstantSnapshot resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this InstantSnapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a InstantSnapshot.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstantSnapshotResourceStatusResponse",
            "description": "Status information for the instant snapshot resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this InstantSnapshot. This value may be used to determine whether the InstantSnapshot was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "status": {
            "description": "The status of the instantSnapshot. This can be CREATING, DELETING, FAILED, or READY.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "architecture",
          "creationTimestamp",
          "description",
          "diskSizeGb",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "region",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "sourceDisk",
          "sourceDiskId",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInstantSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInterconnect": {
      "description": "Returns the specified Interconnect. Get a list of available Interconnects by making a list() request.",
      "inputs": {
        "properties": {
          "interconnect": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "interconnect"
        ]
      },
      "outputs": {
        "properties": {
          "adminEnabled": {
            "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true.",
            "type": "boolean"
          },
          "availableFeatures": {
            "description": "[Output only] List of features available for this Interconnect connection, which can take one of the following values: - MACSEC If present then the Interconnect connection is provisioned on MACsec capable hardware ports. If not present then the Interconnect connection is provisioned on non-MACsec capable ports and MACsec isn't supported and enabling MACsec fails.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "circuitInfos": {
            "description": "A list of CircuitInfo objects, that describe the individual circuits in this LAG.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:InterconnectCircuitInfoResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customerName": {
            "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expectedOutages": {
            "description": "A list of outages expected for this Interconnect.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:InterconnectOutageNotificationResponse"
            },
            "type": "array"
          },
          "googleIpAddress": {
            "description": "IP address configured on the Google side of the Interconnect link. This can be used only for ping tests.",
            "type": "string"
          },
          "googleReferenceId": {
            "description": "Google reference ID to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
            "type": "string"
          },
          "interconnectAttachments": {
            "description": "A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "interconnectType": {
            "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#interconnect for interconnects.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Interconnect.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "linkType": {
            "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
            "type": "string"
          },
          "location": {
            "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned.",
            "type": "string"
          },
          "macsec": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectMacsecResponse",
            "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
          },
          "macsecEnabled": {
            "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nocContactEmail": {
            "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation.",
            "type": "string"
          },
          "operationalStatus": {
            "description": "The current status of this Interconnect's functionality, which can take one of the following values: - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. ",
            "type": "string"
          },
          "peerIpAddress": {
            "description": "IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests.",
            "type": "string"
          },
          "provisionedLinkCount": {
            "description": "Number of links actually provisioned in this interconnect.",
            "type": "integer"
          },
          "remoteLocation": {
            "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to.",
            "type": "string"
          },
          "requestedFeatures": {
            "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "requestedLinkCount": {
            "description": "Target number of physical links in the link bundle, as requested by the customer.",
            "type": "integer"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "state": {
            "description": "The current state of Interconnect functionality, which can take one of the following values: - ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. - UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. - UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. ",
            "type": "string"
          }
        },
        "required": [
          "adminEnabled",
          "availableFeatures",
          "circuitInfos",
          "creationTimestamp",
          "customerName",
          "description",
          "expectedOutages",
          "googleIpAddress",
          "googleReferenceId",
          "interconnectAttachments",
          "interconnectType",
          "kind",
          "labelFingerprint",
          "labels",
          "linkType",
          "location",
          "macsec",
          "macsecEnabled",
          "name",
          "nocContactEmail",
          "operationalStatus",
          "peerIpAddress",
          "provisionedLinkCount",
          "remoteLocation",
          "requestedFeatures",
          "requestedLinkCount",
          "satisfiesPzs",
          "selfLink",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getInterconnectAttachment": {
      "description": "Returns the specified interconnect attachment.",
      "inputs": {
        "properties": {
          "interconnectAttachment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "interconnectAttachment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "adminEnabled": {
            "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER.",
            "type": "boolean"
          },
          "bandwidth": {
            "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s ",
            "type": "string"
          },
          "candidateIpv6Subnets": {
            "description": "This field is not available.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "candidateSubnets": {
            "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cloudRouterIpAddress": {
            "description": "IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
            "type": "string"
          },
          "cloudRouterIpv6Address": {
            "description": "IPv6 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
            "type": "string"
          },
          "cloudRouterIpv6InterfaceId": {
            "description": "This field is not available.",
            "type": "string"
          },
          "configurationConstraints": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentConfigurationConstraintsResponse",
            "description": "Constraints for this attachment, if any. The attachment does not work if these constraints are not met."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customerRouterIpAddress": {
            "description": "IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
            "type": "string"
          },
          "customerRouterIpv6Address": {
            "description": "IPv6 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
            "type": "string"
          },
          "customerRouterIpv6InterfaceId": {
            "description": "This field is not available.",
            "type": "string"
          },
          "dataplaneVersion": {
            "description": "Dataplane version for this InterconnectAttachment. This field is only present for Dataplane version 2 and higher. Absence of this field in the API output indicates that the Dataplane is version 1.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "edgeAvailabilityDomain": {
            "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
            "type": "string"
          },
          "encryption": {
            "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. ",
            "type": "string"
          },
          "googleReferenceId": {
            "deprecationMessage": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
            "description": "Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
            "type": "string"
          },
          "interconnect": {
            "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through.",
            "type": "string"
          },
          "ipsecInternalAddresses": {
            "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "mtu": {
            "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440.",
            "type": "integer"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "operationalStatus": {
            "description": "The current status of whether or not this interconnect attachment is functional, which can take one of the following values: - OS_ACTIVE: The attachment has been turned up and is ready to use. - OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. ",
            "type": "string"
          },
          "pairingKey": {
            "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\"",
            "type": "string"
          },
          "partnerAsn": {
            "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
            "type": "string"
          },
          "partnerMetadata": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentPartnerMetadataResponse",
            "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
          },
          "privateInterconnectInfo": {
            "$ref": "#/types/google-native:compute%2Fbeta:InterconnectAttachmentPrivateInfoResponse",
            "description": "Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
          },
          "region": {
            "description": "URL of the region where the regional interconnect attachment resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "remoteService": {
            "description": "If the attachment is on a Cross-Cloud Interconnect connection, this field contains the interconnect's remote location service provider. Example values: \"Amazon Web Services\" \"Microsoft Azure\". The field is set only for attachments on Cross-Cloud Interconnect connections. Its value is copied from the InterconnectRemoteLocation remoteService field.",
            "type": "string"
          },
          "router": {
            "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network \u0026 region within which the Cloud Router is configured.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations.",
            "type": "string"
          },
          "state": {
            "description": "The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: - ACTIVE: The attachment has been turned up and is ready to use. - UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. - PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. - DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted. ",
            "type": "string"
          },
          "subnetLength": {
            "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. ",
            "type": "integer"
          },
          "type": {
            "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. ",
            "type": "string"
          },
          "vlanTag8021q": {
            "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time.",
            "type": "integer"
          }
        },
        "required": [
          "adminEnabled",
          "bandwidth",
          "candidateIpv6Subnets",
          "candidateSubnets",
          "cloudRouterIpAddress",
          "cloudRouterIpv6Address",
          "cloudRouterIpv6InterfaceId",
          "configurationConstraints",
          "creationTimestamp",
          "customerRouterIpAddress",
          "customerRouterIpv6Address",
          "customerRouterIpv6InterfaceId",
          "dataplaneVersion",
          "description",
          "edgeAvailabilityDomain",
          "encryption",
          "googleReferenceId",
          "interconnect",
          "ipsecInternalAddresses",
          "kind",
          "labelFingerprint",
          "labels",
          "mtu",
          "name",
          "operationalStatus",
          "pairingKey",
          "partnerAsn",
          "partnerMetadata",
          "privateInterconnectInfo",
          "region",
          "remoteService",
          "router",
          "satisfiesPzs",
          "selfLink",
          "stackType",
          "state",
          "subnetLength",
          "type",
          "vlanTag8021q"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getLicense": {
      "description": "Returns the specified License resource. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "inputs": {
        "properties": {
          "license": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "license"
        ]
      },
      "outputs": {
        "properties": {
          "chargesUseFee": {
            "deprecationMessage": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee.",
            "description": "Deprecated. This field no longer reflects whether a license charges a usage fee.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#license for licenses.",
            "type": "string"
          },
          "licenseCode": {
            "description": "The unique code used to attach this license to images, snapshots, and disks.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035.",
            "type": "string"
          },
          "resourceRequirements": {
            "$ref": "#/types/google-native:compute%2Fbeta:LicenseResourceRequirementsResponse"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "transferable": {
            "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk.",
            "type": "boolean"
          }
        },
        "required": [
          "chargesUseFee",
          "creationTimestamp",
          "description",
          "kind",
          "licenseCode",
          "name",
          "resourceRequirements",
          "selfLink",
          "transferable"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getLicenseIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getMachineImage": {
      "description": "Returns the specified machine image.",
      "inputs": {
        "properties": {
          "machineImage": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "machineImage"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this machine image in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "guestFlush": {
            "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process.",
            "type": "boolean"
          },
          "instanceProperties": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesResponse",
            "description": "Properties of source instance"
          },
          "kind": {
            "description": "The resource type, which is always compute#machineImage for machine image.",
            "type": "string"
          },
          "machineImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "savedDisks": {
            "description": "An array of Machine Image specific properties for disks attached to the source instance",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SavedDiskResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "The URL for this machine image. The server defines this URL.",
            "type": "string"
          },
          "sourceDiskEncryptionKeys": {
            "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SourceDiskEncryptionKeyResponse"
            },
            "type": "array"
          },
          "sourceInstance": {
            "description": "The source instance used to create the machine image. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceProperties": {
            "$ref": "#/types/google-native:compute%2Fbeta:SourceInstancePropertiesResponse",
            "description": "DEPRECATED: Please use instance_properties instead for source instance related properties. New properties will not be added to this field."
          },
          "status": {
            "description": "The status of the machine image. One of the following values: INVALID, CREATING, READY, DELETING, and UPLOADING.",
            "type": "string"
          },
          "storageLocations": {
            "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "totalStorageBytes": {
            "description": "Total size of the storage used by the machine image.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "guestFlush",
          "instanceProperties",
          "kind",
          "machineImageEncryptionKey",
          "name",
          "satisfiesPzs",
          "savedDisks",
          "selfLink",
          "sourceDiskEncryptionKeys",
          "sourceInstance",
          "sourceInstanceProperties",
          "status",
          "storageLocations",
          "totalStorageBytes"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getMachineImageIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNetwork": {
      "description": "Returns the specified network.",
      "inputs": {
        "properties": {
          "network": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "network"
        ]
      },
      "outputs": {
        "properties": {
          "autoCreateSubnetworks": {
            "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "enableUlaInternalIpv6": {
            "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. .",
            "type": "boolean"
          },
          "firewallPolicy": {
            "description": "URL of the firewall policy the network is associated with.",
            "type": "string"
          },
          "gatewayIPv4": {
            "description": "The gateway address for default routing out of the network, selected by Google Cloud.",
            "type": "string"
          },
          "internalIpv6Range": {
            "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. .",
            "type": "string"
          },
          "ipv4Range": {
            "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
            "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#network for networks.",
            "type": "string"
          },
          "mtu": {
            "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460.",
            "type": "integer"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "networkFirewallPolicyEnforcementOrder": {
            "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified.",
            "type": "string"
          },
          "peerings": {
            "description": "A list of network peerings for the resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:NetworkPeeringResponse"
            },
            "type": "array"
          },
          "routingConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkRoutingConfigResponse",
            "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "subnetworks": {
            "description": "Server-defined fully-qualified URLs for all subnetworks in this VPC network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "autoCreateSubnetworks",
          "creationTimestamp",
          "description",
          "enableUlaInternalIpv6",
          "firewallPolicy",
          "gatewayIPv4",
          "internalIpv6Range",
          "ipv4Range",
          "kind",
          "mtu",
          "name",
          "networkFirewallPolicyEnforcementOrder",
          "peerings",
          "routingConfig",
          "selfLink",
          "selfLinkWithId",
          "subnetworks"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNetworkAttachment": {
      "description": "Returns the specified NetworkAttachment resource in the given scope.",
      "inputs": {
        "properties": {
          "networkAttachment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkAttachment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "connectionEndpoints": {
            "description": "An array of connections for all the producers connected to this network attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:NetworkAttachmentConnectedEndpointResponse"
            },
            "type": "array"
          },
          "connectionPreference": {
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. An up-to-date fingerprint must be provided in order to patch.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network which the Network Attachment belongs to. Practically it is inferred by fetching the network of the first subnetwork associated. Because it is required that all the subnetworks must be from the same network, it is assured that the Network Attachment belongs to the same network as all the subnetworks.",
            "type": "string"
          },
          "producerAcceptLists": {
            "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "producerRejectLists": {
            "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the network attachment resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "subnetworks": {
            "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "connectionEndpoints",
          "connectionPreference",
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "network",
          "producerAcceptLists",
          "producerRejectLists",
          "region",
          "selfLink",
          "selfLinkWithId",
          "subnetworks"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNetworkAttachmentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNetworkEdgeSecurityService": {
      "description": "Gets a specified NetworkEdgeSecurityService.",
      "inputs": {
        "properties": {
          "networkEdgeSecurityService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEdgeSecurityService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a NetworkEdgeSecurityService. An up-to-date fingerprint must be provided in order to update the NetworkEdgeSecurityService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a NetworkEdgeSecurityService.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#networkEdgeSecurityService for NetworkEdgeSecurityServices",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the resource resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the network edge security service associated with this network edge security service.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "region",
          "securityPolicy",
          "selfLink",
          "selfLinkWithId"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
            "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
            "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverlessDeployment": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeploymentResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "loadBalancer",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "serverlessDeployment",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNetworkFirewallPolicy": {
      "description": "Returns the specified network firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNetworkFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNodeGroup": {
      "description": "Returns the specified NodeGroup. Get a list of available NodeGroups by making a list() request. Note: the \"nodes\" field should not be used. Use nodeGroups.listNodes instead.",
      "inputs": {
        "properties": {
          "nodeGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "nodeGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupAutoscalingPolicyResponse",
            "description": "Specifies how autoscaling should behave."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          },
          "kind": {
            "description": "The type of the resource. Always compute#nodeGroup for node group.",
            "type": "string"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate.",
            "type": "string"
          },
          "maintenanceInterval": {
            "description": "Specifies the frequency of planned maintenance events. The accepted values are: `AS_NEEDED` and `RECURRENT`.",
            "type": "string"
          },
          "maintenancePolicy": {
            "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies.",
            "type": "string"
          },
          "maintenanceWindow": {
            "$ref": "#/types/google-native:compute%2Fbeta:NodeGroupMaintenanceWindowResponse"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nodeTemplate": {
            "description": "URL of the node template to create the node group from.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "shareSettings": {
            "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsResponse",
            "description": "Share-settings for the node group"
          },
          "size": {
            "description": "The total number of nodes in the node group.",
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "zone": {
            "description": "The name of the zone where the node group resides, such as us-central1-a.",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "locationHint",
          "maintenanceInterval",
          "maintenancePolicy",
          "maintenanceWindow",
          "name",
          "nodeTemplate",
          "selfLink",
          "shareSettings",
          "size",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNodeGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNodeTemplate": {
      "description": "Returns the specified node template.",
      "inputs": {
        "properties": {
          "nodeTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "nodeTemplate",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "accelerators": {
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AcceleratorConfigResponse"
            },
            "type": "array"
          },
          "cpuOvercommitType": {
            "description": "CPU overcommit.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "disks": {
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:LocalDiskResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "The type of the resource. Always compute#nodeTemplate for node templates.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nodeAffinityLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to use for node affinity, which will be used in instance scheduling.",
            "type": "object"
          },
          "nodeType": {
            "description": "The node type to use for nodes group that are created from this template.",
            "type": "string"
          },
          "nodeTypeFlexibility": {
            "$ref": "#/types/google-native:compute%2Fbeta:NodeTemplateNodeTypeFlexibilityResponse",
            "description": "Do not use. Instead, use the node_type property."
          },
          "region": {
            "description": "The name of the region where the node template resides, such as us-central1.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverBinding": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServerBindingResponse",
            "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
          },
          "status": {
            "description": "The status of the node template. One of the following values: CREATING, READY, and DELETING.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          }
        },
        "required": [
          "accelerators",
          "cpuOvercommitType",
          "creationTimestamp",
          "description",
          "disks",
          "kind",
          "name",
          "nodeAffinityLabels",
          "nodeType",
          "nodeTypeFlexibility",
          "region",
          "selfLink",
          "serverBinding",
          "status",
          "statusMessage"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getNodeTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getOrganizationSecurityPolicy": {
      "description": "List all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "securityPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "securityPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "adaptiveProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigResponse"
          },
          "advancedOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigResponse"
          },
          "associations": {
            "description": "A list of associations that belong to this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "ddosProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfigResponse"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the security policy.",
            "type": "string"
          },
          "recaptchaOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfigResponse"
          },
          "region": {
            "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "type": {
            "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
            "type": "string"
          },
          "userDefinedFields": {
            "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\"",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedFieldResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "adaptiveProtectionConfig",
          "advancedOptionsConfig",
          "associations",
          "creationTimestamp",
          "ddosProtectionConfig",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "parent",
          "recaptchaOptionsConfig",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "type",
          "userDefinedFields"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getPacketMirroring": {
      "description": "Returns the specified PacketMirroring resource.",
      "inputs": {
        "properties": {
          "packetMirroring": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "packetMirroring",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "collectorIlb": {
            "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringForwardingRuleInfoResponse",
            "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enable": {
            "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE.",
            "type": "string"
          },
          "filter": {
            "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringFilterResponse",
            "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
          },
          "kind": {
            "description": "Type of the resource. Always compute#packetMirroring for packet mirrorings.",
            "type": "string"
          },
          "mirroredResources": {
            "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringMirroredResourceInfoResponse",
            "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "$ref": "#/types/google-native:compute%2Fbeta:PacketMirroringNetworkInfoResponse",
            "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
          },
          "priority": {
            "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
            "type": "integer"
          },
          "region": {
            "description": "URI of the region where the packetMirroring resides.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "collectorIlb",
          "creationTimestamp",
          "description",
          "enable",
          "filter",
          "kind",
          "mirroredResources",
          "name",
          "network",
          "priority",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getPublicAdvertisedPrefix": {
      "description": "Returns the specified PublicAdvertisedPrefix resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicAdvertisedPrefix": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicAdvertisedPrefix"
        ]
      },
      "outputs": {
        "properties": {
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "dnsVerificationIp": {
            "description": "The address to be used for reverse DNS verification.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicAdvertisedPrefix. An up-to-date fingerprint must be provided in order to update the PublicAdvertisedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicAdvertisedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The address range, in CIDR format, represented by this public advertised prefix.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicAdvertisedPrefix for public advertised prefixes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pdpScope": {
            "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. ",
            "type": "string"
          },
          "publicDelegatedPrefixs": {
            "description": "The list of public delegated prefixes that exist for this public advertised prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:PublicAdvertisedPrefixPublicDelegatedPrefixResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sharedSecret": {
            "description": "The shared secret to be used for reverse DNS verification.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. ",
            "type": "string"
          }
        },
        "required": [
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "dnsVerificationIp",
          "fingerprint",
          "ipCidrRange",
          "kind",
          "name",
          "pdpScope",
          "publicDelegatedPrefixs",
          "selfLink",
          "sharedSecret",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getPublicDelegatedPrefix": {
      "description": "Returns the specified PublicDelegatedPrefix resource in the given region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicDelegatedPrefix": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicDelegatedPrefix",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The IP address range, in CIDR format, represented by this public delegated prefix.",
            "type": "string"
          },
          "isLiveMigration": {
            "description": "If true, the prefix will be live migrated.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parentPrefix": {
            "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix.",
            "type": "string"
          },
          "publicDelegatedSubPrefixs": {
            "description": "The list of sub public delegated prefixes that exist for this public delegated prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. ",
            "type": "string"
          }
        },
        "required": [
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipCidrRange",
          "isLiveMigration",
          "kind",
          "name",
          "parentPrefix",
          "publicDelegatedSubPrefixs",
          "region",
          "selfLink",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionAutoscaler": {
      "description": "Returns the specified autoscaler.",
      "inputs": {
        "properties": {
          "autoscaler": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscaler",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:AutoscalingPolicyResponse",
            "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#autoscaler for autoscalers.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "recommendedSize": {
            "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction.",
            "type": "integer"
          },
          "region": {
            "description": "URL of the region where the instance group resides (for autoscalers living in regional scope).",
            "type": "string"
          },
          "scalingScheduleStatus": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Status information of existing scaling schedules.",
            "type": "object"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future.",
            "type": "string"
          },
          "statusDetails": {
            "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AutoscalerStatusDetailsResponse"
            },
            "type": "array"
          },
          "target": {
            "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "recommendedSize",
          "region",
          "scalingScheduleStatus",
          "selfLink",
          "status",
          "statusDetails",
          "target",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionBackendService": {
      "description": "Returns the specified regional BackendService resource.",
      "inputs": {
        "properties": {
          "backendService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "affinityCookieTtlSec": {
            "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "integer"
          },
          "backends": {
            "description": "The list of backends that serve this BackendService.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BackendResponse"
            },
            "type": "array"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
          },
          "circuitBreakers": {
            "$ref": "#/types/google-native:compute%2Fbeta:CircuitBreakersResponse"
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "connectionDraining": {
            "$ref": "#/types/google-native:compute%2Fbeta:ConnectionDrainingResponse"
          },
          "connectionTrackingPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceConnectionTrackingPolicyResponse",
            "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
          },
          "consistentHash": {
            "$ref": "#/types/google-native:compute%2Fbeta:ConsistentHashLoadBalancerSettingsResponse",
            "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customRequestHeaders": {
            "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "customResponseHeaders": {
            "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend service.",
            "type": "string"
          },
          "enableCDN": {
            "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
            "type": "boolean"
          },
          "failoverPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceFailoverPolicyResponse",
            "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "iap": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceIAPResponse",
            "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
          },
          "ipAddressSelectionPolicy": {
            "description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#backendService for backend services.",
            "type": "string"
          },
          "loadBalancingScheme": {
            "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
            "type": "string"
          },
          "localityLbPolicies": {
            "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
            },
            "type": "array"
          },
          "localityLbPolicy": {
            "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceLogConfigResponse",
            "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
          },
          "maxStreamDuration": {
            "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
            "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
          },
          "metadatas": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL.",
            "type": "string"
          },
          "outlierDetection": {
            "$ref": "#/types/google-native:compute%2Fbeta:OutlierDetectionResponse",
            "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
          },
          "port": {
            "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "type": "integer"
          },
          "portName": {
            "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
            "type": "string"
          },
          "protocol": {
            "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this backend service.",
            "type": "string"
          },
          "securitySettings": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecuritySettingsResponse",
            "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serviceBindings": {
            "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceLbPolicy": {
            "description": "URL to networkservices.ServiceLbPolicy resource. Can only be set if load balancing scheme is EXTERNAL, EXTERNAL_MANAGED, INTERNAL_MANAGED or INTERNAL_SELF_MANAGED and the scope is global.",
            "type": "string"
          },
          "sessionAffinity": {
            "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
            "type": "string"
          },
          "subsetting": {
            "$ref": "#/types/google-native:compute%2Fbeta:SubsettingResponse"
          },
          "timeoutSec": {
            "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration.",
            "type": "integer"
          },
          "usedBy": {
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BackendServiceUsedByResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "affinityCookieTtlSec",
          "backends",
          "cdnPolicy",
          "circuitBreakers",
          "compressionMode",
          "connectionDraining",
          "connectionTrackingPolicy",
          "consistentHash",
          "creationTimestamp",
          "customRequestHeaders",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCDN",
          "failoverPolicy",
          "fingerprint",
          "healthChecks",
          "iap",
          "ipAddressSelectionPolicy",
          "kind",
          "loadBalancingScheme",
          "localityLbPolicies",
          "localityLbPolicy",
          "logConfig",
          "maxStreamDuration",
          "metadatas",
          "name",
          "network",
          "outlierDetection",
          "port",
          "portName",
          "protocol",
          "region",
          "securityPolicy",
          "securitySettings",
          "selfLink",
          "serviceBindings",
          "serviceLbPolicy",
          "sessionAffinity",
          "subsetting",
          "timeoutSec",
          "usedBy"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionBackendServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionCommitment": {
      "description": "Returns the specified commitment resource.",
      "inputs": {
        "properties": {
          "commitment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "commitment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "autoRenew": {
            "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment.",
            "type": "boolean"
          },
          "category": {
            "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "endTimestamp": {
            "description": "Commitment end time in RFC3339 text format.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#commitment for commitments.",
            "type": "string"
          },
          "licenseResource": {
            "$ref": "#/types/google-native:compute%2Fbeta:LicenseResourceCommitmentResponse",
            "description": "The license specification required as part of a license commitment."
          },
          "mergeSourceCommitments": {
            "description": "List of source commitments to be merged into a new commitment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "plan": {
            "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where this commitment may be used.",
            "type": "string"
          },
          "reservations": {
            "description": "List of create-on-create reseravtions for this commitment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:ReservationResponse"
            },
            "type": "array"
          },
          "resources": {
            "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:ResourceCommitmentResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "splitSourceCommitment": {
            "description": "Source commitment to be split into a new commitment.",
            "type": "string"
          },
          "startTimestamp": {
            "description": "Commitment start time in RFC3339 text format.",
            "type": "string"
          },
          "status": {
            "description": "Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          },
          "type": {
            "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines.",
            "type": "string"
          }
        },
        "required": [
          "autoRenew",
          "category",
          "creationTimestamp",
          "description",
          "endTimestamp",
          "kind",
          "licenseResource",
          "mergeSourceCommitments",
          "name",
          "plan",
          "region",
          "reservations",
          "resources",
          "selfLink",
          "splitSourceCommitment",
          "startTimestamp",
          "status",
          "statusMessage",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionDisk": {
      "description": "Returns a specified regional persistent disk.",
      "inputs": {
        "properties": {
          "disk": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "disk",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "asyncPrimaryDisk": {
            "$ref": "#/types/google-native:compute%2Fbeta:DiskAsyncReplicationResponse",
            "description": "Disk asynchronously replicated into this disk."
          },
          "asyncSecondaryDisks": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A list of disks this disk is asynchronously replicated to.",
            "type": "object"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
          },
          "enableConfidentialCompute": {
            "description": "Whether this disk is using confidential compute mode.",
            "type": "boolean"
          },
          "eraseWindowsVssSignature": {
            "description": "Specifies whether the disk restored from a source snapshot should erase Windows specific VSS signature.",
            "type": "boolean"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "interface": {
            "deprecationMessage": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
            "description": "[Deprecated] Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#disk for disks.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastAttachTimestamp": {
            "description": "Last attach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastDetachTimestamp": {
            "description": "Last detach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this disk.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of publicly visible licenses. Reserved for Google's use.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "locked": {
            "description": "The field indicates if the disk is created from a locked source image. Attachment of a disk created from a locked source image will cause the following operations to become irreversibly prohibited: - R/W or R/O disk attachment to any other instance - Disk detachment. And the disk can only be deleted when the instance is deleted - Creation of images or snapshots - Disk cloning Furthermore, the instance with at least one disk with locked flag set to true will be prohibited from performing the operations below: - Further attachment of secondary disks. - Detachment of any disks - Create machine images - Create instance template - Delete the instance with --keep-disk parameter set to true for locked disks - Attach a locked disk with --auto-delete parameter set to false ",
            "type": "boolean"
          },
          "multiWriter": {
            "description": "Indicates whether or not the disk can be read/write attached to more than one instance.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "options": {
            "description": "Internal use only.",
            "type": "string"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Fbeta:DiskParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "physicalBlockSizeBytes": {
            "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project.",
            "type": "string"
          },
          "provisionedIops": {
            "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.",
            "type": "string"
          },
          "provisionedThroughput": {
            "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "replicaZones": {
            "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this disk for automatic snapshot creations.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fbeta:DiskResourceStatusResponse",
            "description": "Status information for the disk resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "sizeGb": {
            "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicy": {
            "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicyId": {
            "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used.",
            "type": "string"
          },
          "sourceImage": {
            "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
            "type": "string"
          },
          "sourceInstantSnapshot": {
            "description": "The source instant snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot ",
            "type": "string"
          },
          "sourceInstantSnapshotId": {
            "description": "The unique ID of the instant snapshot used to create this disk. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact version of the instant snapshot that was used.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
            "type": "string"
          },
          "sourceStorageObject": {
            "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead.",
            "type": "string"
          },
          "status": {
            "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. ",
            "type": "string"
          },
          "storageType": {
            "deprecationMessage": "[Deprecated] Storage type of the persistent disk.",
            "description": "[Deprecated] Storage type of the persistent disk.",
            "type": "string"
          },
          "type": {
            "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types.",
            "type": "string"
          },
          "userLicenses": {
            "description": "A list of publicly visible user-licenses. Unlike regular licenses, user provided licenses can be modified after the disk is created. This includes a list of URLs to the license resource. For example, to provide a debian license: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/licenses/debian-9-stretch ",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "users": {
            "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "zone": {
            "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "architecture",
          "asyncPrimaryDisk",
          "asyncSecondaryDisks",
          "creationTimestamp",
          "description",
          "diskEncryptionKey",
          "enableConfidentialCompute",
          "eraseWindowsVssSignature",
          "guestOsFeatures",
          "interface",
          "kind",
          "labelFingerprint",
          "labels",
          "lastAttachTimestamp",
          "lastDetachTimestamp",
          "licenseCodes",
          "licenses",
          "locationHint",
          "locked",
          "multiWriter",
          "name",
          "options",
          "params",
          "physicalBlockSizeBytes",
          "provisionedIops",
          "provisionedThroughput",
          "region",
          "replicaZones",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "sizeGb",
          "sourceConsistencyGroupPolicy",
          "sourceConsistencyGroupPolicyId",
          "sourceDisk",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceInstantSnapshot",
          "sourceInstantSnapshotId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceStorageObject",
          "status",
          "storageType",
          "type",
          "userLicenses",
          "users",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionDiskIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionHealthCheck": {
      "description": "Returns the specified HealthCheck resource.",
      "inputs": {
        "properties": {
          "healthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheck",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in 3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:GRPCHealthCheckResponse"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "http2HealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:HTTP2HealthCheckResponse"
          },
          "httpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:HTTPHealthCheckResponse"
          },
          "httpsHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:HTTPSHealthCheckResponse"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:HealthCheckLogConfigResponse",
            "description": "Configure logging on this health check."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash.",
            "type": "string"
          },
          "region": {
            "description": "Region where the health check resides. Not applicable to global health checks.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sslHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:SSLHealthCheckResponse"
          },
          "tcpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fbeta:TCPHealthCheckResponse"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "type": {
            "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
            "type": "string"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "grpcHealthCheck",
          "healthyThreshold",
          "http2HealthCheck",
          "httpHealthCheck",
          "httpsHealthCheck",
          "kind",
          "logConfig",
          "name",
          "region",
          "selfLink",
          "sslHealthCheck",
          "tcpHealthCheck",
          "timeoutSec",
          "type",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionHealthCheckService": {
      "description": "Returns the specified regional HealthCheckService resource.",
      "inputs": {
        "properties": {
          "healthCheckService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheckService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a HealthCheckService. An up-to-date fingerprint must be provided in order to patch/update the HealthCheckService; Otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the HealthCheckService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "healthStatusAggregationPolicy": {
            "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService.",
            "type": "string"
          },
          "healthStatusAggregationStrategy": {
            "deprecationMessage": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
            "description": "This field is deprecated. Use health_status_aggregation_policy instead. Policy for how the results from multiple health checks for the same endpoint are aggregated. - NO_AGGREGATION. An EndpointHealth message is returned for each backend in the health check service. - AND. If any backend's health check reports UNHEALTHY, then UNHEALTHY is the HealthState of the entire health check service. If all backend's are healthy, the HealthState of the health check service is HEALTHY. .",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#healthCheckServicefor health check services.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "networkEndpointGroups": {
            "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "notificationEndpoints": {
            "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the health check service resides. This field is not applicable to global health check services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "healthChecks",
          "healthStatusAggregationPolicy",
          "healthStatusAggregationStrategy",
          "kind",
          "name",
          "networkEndpointGroups",
          "notificationEndpoints",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionInstanceGroupManager": {
      "description": "Returns all of the details about the specified managed instance group.",
      "inputs": {
        "properties": {
          "instanceGroupManager": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroupManager",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "allInstancesConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAllInstancesConfigResponse",
            "description": "Specifies configuration that overrides the instance template configuration for the group."
          },
          "autoHealingPolicies": {
            "description": "The autohealing policy for this managed instance group. You can specify only one value.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerAutoHealingPolicyResponse"
            },
            "type": "array"
          },
          "baseInstanceName": {
            "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this managed instance group in RFC3339 text format.",
            "type": "string"
          },
          "currentActions": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerActionsSummaryResponse",
            "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "distributionPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:DistributionPolicyResponse",
            "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
          },
          "failoverAction": {
            "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager.",
            "type": "string"
          },
          "instanceFlexibilityPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceFlexibilityPolicyResponse",
            "description": "Instance flexibility allowing MIG to create VMs from multiple types of machines. Instance flexibility configuration on MIG overrides instance template configuration."
          },
          "instanceGroup": {
            "description": "The URL of the Instance Group resource.",
            "type": "string"
          },
          "instanceLifecyclePolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerInstanceLifecyclePolicyResponse",
            "description": "The repair policy for this managed instance group."
          },
          "instanceTemplate": {
            "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups.",
            "type": "string"
          },
          "listManagedInstancesResults": {
            "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
            "type": "string"
          },
          "name": {
            "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:NamedPortResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "The URL of the region where the managed instance group resides (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this managed instance group. The server defines this URL.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used.",
            "type": "string"
          },
          "standbyPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStandbyPolicyResponse",
            "description": "Standby policy for stopped and suspended instances."
          },
          "statefulPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:StatefulPolicyResponse",
            "description": "Stateful configuration for this Instanced Group Manager"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerStatusResponse",
            "description": "The status of this managed instance group."
          },
          "targetPools": {
            "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetSize": {
            "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number.",
            "type": "integer"
          },
          "targetStoppedSize": {
            "description": "The target number of stopped instances for this managed instance group. This number changes when you: - Stop instance using the stopInstances method or start instances using the startInstances method. - Manually change the targetStoppedSize using the update method. ",
            "type": "integer"
          },
          "targetSuspendedSize": {
            "description": "The target number of suspended instances for this managed instance group. This number changes when you: - Suspend instance using the suspendInstances method or resume instances using the resumeInstances method. - Manually change the targetSuspendedSize using the update method. ",
            "type": "integer"
          },
          "updatePolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerUpdatePolicyResponse",
            "description": "The update policy for this managed instance group."
          },
          "versions": {
            "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:InstanceGroupManagerVersionResponse"
            },
            "type": "array"
          },
          "zone": {
            "description": "The URL of a zone where the managed instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "allInstancesConfig",
          "autoHealingPolicies",
          "baseInstanceName",
          "creationTimestamp",
          "currentActions",
          "description",
          "distributionPolicy",
          "failoverAction",
          "fingerprint",
          "instanceFlexibilityPolicy",
          "instanceGroup",
          "instanceLifecyclePolicy",
          "instanceTemplate",
          "kind",
          "listManagedInstancesResults",
          "name",
          "namedPorts",
          "region",
          "selfLink",
          "serviceAccount",
          "standbyPolicy",
          "statefulPolicy",
          "status",
          "targetPools",
          "targetSize",
          "targetStoppedSize",
          "targetSuspendedSize",
          "updatePolicy",
          "versions",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionInstanceTemplate": {
      "description": "Returns the specified instance template.",
      "inputs": {
        "properties": {
          "instanceTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceTemplate",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance template in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceTemplate for instance templates.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstancePropertiesResponse",
            "description": "The instance properties for this instance template."
          },
          "region": {
            "description": "URL of the region where the instance template resides. Only applicable for regional resources.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance template. The server defines this URL.",
            "type": "string"
          },
          "sourceInstance": {
            "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceParams": {
            "$ref": "#/types/google-native:compute%2Fbeta:SourceInstanceParamsResponse",
            "description": "The source instance params to use to create this instance template."
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "properties",
          "region",
          "selfLink",
          "sourceInstance",
          "sourceInstanceParams"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionInstantSnapshot": {
      "description": "Returns the specified InstantSnapshot resource in the specified region.",
      "inputs": {
        "properties": {
          "instantSnapshot": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instantSnapshot",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the instant snapshot. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the source disk, specified in GB.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#instantSnapshot for InstantSnapshot resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this InstantSnapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a InstantSnapshot.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this InstantSnapshot. These can be later modified by the setLabels method. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fbeta:InstantSnapshotResourceStatusResponse",
            "description": "Status information for the instant snapshot resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "URL of the source disk used to create this instant snapshot. Note that the source disk must be in the same zone/region as the instant snapshot to be created. This can be a full or valid partial URL. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this InstantSnapshot. This value may be used to determine whether the InstantSnapshot was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "status": {
            "description": "The status of the instantSnapshot. This can be CREATING, DELETING, FAILED, or READY.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instant snapshot resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "architecture",
          "creationTimestamp",
          "description",
          "diskSizeGb",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "region",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "selfLinkWithId",
          "sourceDisk",
          "sourceDiskId",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionInstantSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupLbNetworkEndpointGroupResponse",
            "deprecationMessage": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated.",
            "description": "This field is only valid when the network endpoint group is used for load balancing. [Deprecated] This field is deprecated."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverlessDeployment": {
            "$ref": "#/types/google-native:compute%2Fbeta:NetworkEndpointGroupServerlessDeploymentResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine, cloudFunction or serverlessDeployment may be set."
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "loadBalancer",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "serverlessDeployment",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionNetworkFirewallPolicy": {
      "description": "Returns the specified network firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionNetworkFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionNotificationEndpoint": {
      "description": "Returns the specified NotificationEndpoint resource in the given region.",
      "inputs": {
        "properties": {
          "notificationEndpoint": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "notificationEndpoint",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcSettings": {
            "$ref": "#/types/google-native:compute%2Fbeta:NotificationEndpointGrpcSettingsResponse",
            "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
          },
          "kind": {
            "description": "Type of the resource. Always compute#notificationEndpoint for notification endpoints.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the notification endpoint resides. This field applies only to the regional resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "grpcSettings",
          "kind",
          "name",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionSecurityPolicy": {
      "description": "List all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "securityPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "securityPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "adaptiveProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigResponse"
          },
          "advancedOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigResponse"
          },
          "associations": {
            "description": "A list of associations that belong to this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "ddosProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfigResponse"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the security policy.",
            "type": "string"
          },
          "recaptchaOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfigResponse"
          },
          "region": {
            "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "type": {
            "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
            "type": "string"
          },
          "userDefinedFields": {
            "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\"",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedFieldResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "adaptiveProtectionConfig",
          "advancedOptionsConfig",
          "associations",
          "creationTimestamp",
          "ddosProtectionConfig",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "parent",
          "recaptchaOptionsConfig",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "type",
          "userDefinedFields"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionSslCertificate": {
      "description": "Returns the specified SslCertificate resource in the specified region. Get a list of available SSL certificates by making a list() request.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "sslCertificate": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "sslCertificate"
        ]
      },
      "outputs": {
        "properties": {
          "certificate": {
            "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expireTime": {
            "description": "Expire time of the certificate. RFC3339",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#sslCertificate for SSL certificates.",
            "type": "string"
          },
          "managed": {
            "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateManagedSslCertificateResponse",
            "description": "Configuration and status of a managed SSL certificate."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "privateKey": {
            "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate.",
            "type": "string"
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "selfManaged": {
            "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateSelfManagedSslCertificateResponse",
            "description": "Configuration and status of a self-managed SSL certificate."
          },
          "subjectAlternativeNames": {
            "description": "Domains associated with the certificate via Subject Alternative Name.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "creationTimestamp",
          "description",
          "expireTime",
          "kind",
          "managed",
          "name",
          "privateKey",
          "region",
          "selfLink",
          "selfManaged",
          "subjectAlternativeNames",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionSslPolicy": {
      "description": "Lists all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "sslPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "sslPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customFeatures": {
            "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enabledFeatures": {
            "description": "The list of features enabled in the SSL policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
            "type": "string"
          },
          "minTlsVersion": {
            "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "profile": {
            "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RegionSslPolicyWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "customFeatures",
          "description",
          "enabledFeatures",
          "fingerprint",
          "kind",
          "minTlsVersion",
          "name",
          "profile",
          "region",
          "selfLink",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionTargetHttpProxy": {
      "description": "Returns the specified TargetHttpProxy resource in the specified region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetHttpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetHttpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy.",
            "type": "string"
          },
          "httpFilters": {
            "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpFilters",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "region",
          "selfLink",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionTargetHttpsProxy": {
      "description": "Returns the specified TargetHttpsProxy resource in the specified region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetHttpsProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetHttpsProxy"
        ]
      },
      "outputs": {
        "properties": {
          "authentication": {
            "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead.",
            "description": "[Deprecated] Use serverTlsPolicy instead.",
            "type": "string"
          },
          "authorization": {
            "deprecationMessage": "[Deprecated] Use authorizationPolicy instead.",
            "description": "[Deprecated] Use authorizationPolicy instead.",
            "type": "string"
          },
          "authorizationPolicy": {
            "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact.",
            "type": "string"
          },
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy.",
            "type": "string"
          },
          "httpFilters": {
            "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "quicOverride": {
            "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured.",
            "type": "string"
          },
          "urlMap": {
            "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map ",
            "type": "string"
          }
        },
        "required": [
          "authentication",
          "authorization",
          "authorizationPolicy",
          "certificateMap",
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpFilters",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "quicOverride",
          "region",
          "selfLink",
          "serverTlsPolicy",
          "sslCertificates",
          "sslPolicy",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionTargetTcpProxy": {
      "description": "Returns the specified TargetTcpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetTcpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetTcpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyBind",
          "proxyHeader",
          "region",
          "selfLink",
          "service"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRegionUrlMap": {
      "description": "Returns the specified UrlMap resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "urlMap": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "urlMap"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultCustomErrorResponsePolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyResponse",
            "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
          },
          "defaultRouteAction": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteActionResponse",
            "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
          },
          "defaultService": {
            "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.",
            "type": "string"
          },
          "defaultUrlRedirect": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectActionResponse",
            "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap.",
            "type": "string"
          },
          "headerAction": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderActionResponse",
            "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
          },
          "hostRules": {
            "description": "The list of host rules to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:HostRuleResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#urlMaps for url maps.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pathMatchers": {
            "description": "The list of named PathMatchers to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:PathMatcherResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "tests": {
            "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:UrlMapTestResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "defaultCustomErrorResponsePolicy",
          "defaultRouteAction",
          "defaultService",
          "defaultUrlRedirect",
          "description",
          "fingerprint",
          "headerAction",
          "hostRules",
          "kind",
          "name",
          "pathMatchers",
          "region",
          "selfLink",
          "tests"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getReservation": {
      "description": "Retrieves information about the specified reservation.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "reservation": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "reservation",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "aggregateReservation": {
            "$ref": "#/types/google-native:compute%2Fbeta:AllocationAggregateReservationResponse",
            "description": "Reservation for aggregated resources, providing shape flexibility."
          },
          "commitment": {
            "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "deleteAfterDuration": {
            "$ref": "#/types/google-native:compute%2Fbeta:DurationResponse",
            "description": "Duration time relative to reservation creation when GCE will automatically delete this resource."
          },
          "deleteAtTime": {
            "description": "Absolute time in future when the reservation will be auto-deleted by GCE. Timestamp is represented in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#reservations for reservations.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "resourcePolicies": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation.",
            "type": "object"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fbeta:AllocationResourceStatusResponse",
            "description": "Status information for Reservation resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "shareSettings": {
            "$ref": "#/types/google-native:compute%2Fbeta:ShareSettingsResponse",
            "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
          },
          "specificReservation": {
            "$ref": "#/types/google-native:compute%2Fbeta:AllocationSpecificSKUReservationResponse",
            "description": "Reservation for instances with specific machine shapes."
          },
          "specificReservationRequired": {
            "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation.",
            "type": "boolean"
          },
          "status": {
            "description": "The status of the reservation.",
            "type": "string"
          },
          "zone": {
            "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment.",
            "type": "string"
          }
        },
        "required": [
          "aggregateReservation",
          "commitment",
          "creationTimestamp",
          "deleteAfterDuration",
          "deleteAtTime",
          "description",
          "kind",
          "name",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "shareSettings",
          "specificReservation",
          "specificReservationRequired",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getReservationIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getResourcePolicy": {
      "description": "Retrieves all information of the specified resource policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resourcePolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resourcePolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "diskConsistencyGroupPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyDiskConsistencyGroupPolicyResponse",
            "description": "Resource policy for disk consistency groups."
          },
          "groupPlacementPolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyGroupPlacementPolicyResponse",
            "description": "Resource policy for instances for placement configuration."
          },
          "instanceSchedulePolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyInstanceSchedulePolicyResponse",
            "description": "Resource policy for scheduling instance operations."
          },
          "kind": {
            "description": "Type of the resource. Always compute#resource_policies for resource policies.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicyResourceStatusResponse",
            "description": "The system status of the resource policy."
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "snapshotSchedulePolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:ResourcePolicySnapshotSchedulePolicyResponse",
            "description": "Resource policy for persistent disks for creating snapshots."
          },
          "status": {
            "description": "The status of resource policy creation.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "diskConsistencyGroupPolicy",
          "groupPlacementPolicy",
          "instanceSchedulePolicy",
          "kind",
          "name",
          "region",
          "resourceStatus",
          "selfLink",
          "snapshotSchedulePolicy",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getResourcePolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRoute": {
      "description": "Returns the specified Route resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "route": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "route"
        ]
      },
      "outputs": {
        "properties": {
          "asPaths": {
            "description": "AS path.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RouteAsPathResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "destRange": {
            "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format.",
            "type": "string"
          },
          "kind": {
            "description": "Type of this resource. Always compute#routes for Route resources.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "Fully-qualified URL of the network that this route applies to.",
            "type": "string"
          },
          "nextHopGateway": {
            "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway",
            "type": "string"
          },
          "nextHopHub": {
            "description": "The full resource name of the Network Connectivity Center hub that will handle matching packets.",
            "type": "string"
          },
          "nextHopIlb": {
            "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule ",
            "type": "string"
          },
          "nextHopInstance": {
            "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/",
            "type": "string"
          },
          "nextHopInterconnectAttachment": {
            "description": "The URL to an InterconnectAttachment which is the next hop for the route. This field will only be populated for the dynamic routes generated by Cloud Router with a linked interconnectAttachment.",
            "type": "string"
          },
          "nextHopIp": {
            "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address.",
            "type": "string"
          },
          "nextHopNetwork": {
            "description": "The URL of the local network if it should handle matching packets.",
            "type": "string"
          },
          "nextHopPeering": {
            "description": "The network peering name that should handle matching packets, which should conform to RFC1035.",
            "type": "string"
          },
          "nextHopVpnTunnel": {
            "description": "The URL to a VpnTunnel that should handle matching packets.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive.",
            "type": "integer"
          },
          "routeStatus": {
            "description": "[Output only] The status of the route.",
            "type": "string"
          },
          "routeType": {
            "description": "The type of this route, which can be one of the following values: - 'TRANSIT' for a transit route that this router learned from another Cloud Router and will readvertise to one of its BGP peers - 'SUBNET' for a route from a subnet of the VPC - 'BGP' for a route learned from a BGP peer of this router - 'STATIC' for a static route",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "tags": {
            "description": "A list of instance tags to which this route applies.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RouteWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "asPaths",
          "creationTimestamp",
          "description",
          "destRange",
          "kind",
          "name",
          "network",
          "nextHopGateway",
          "nextHopHub",
          "nextHopIlb",
          "nextHopInstance",
          "nextHopInterconnectAttachment",
          "nextHopIp",
          "nextHopNetwork",
          "nextHopPeering",
          "nextHopVpnTunnel",
          "priority",
          "routeStatus",
          "routeType",
          "selfLink",
          "tags",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getRouter": {
      "description": "Returns the specified Router resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "router": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "router"
        ]
      },
      "outputs": {
        "properties": {
          "bgp": {
            "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpResponse",
            "description": "BGP information specific to this router."
          },
          "bgpPeers": {
            "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RouterBgpPeerResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "encryptedInterconnectRouter": {
            "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments).",
            "type": "boolean"
          },
          "interfaces": {
            "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RouterInterfaceResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of resource. Always compute#router for routers.",
            "type": "string"
          },
          "md5AuthenticationKeys": {
            "description": "Keys used for MD5 authentication.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RouterMd5AuthenticationKeyResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nats": {
            "description": "A list of NAT services created in this router.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RouterNatResponse"
            },
            "type": "array"
          },
          "network": {
            "description": "URI of the network to which this router belongs.",
            "type": "string"
          },
          "region": {
            "description": "URI of the region where the router resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "bgp",
          "bgpPeers",
          "creationTimestamp",
          "description",
          "encryptedInterconnectRouter",
          "interfaces",
          "kind",
          "md5AuthenticationKeys",
          "name",
          "nats",
          "network",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getSecurityPolicy": {
      "description": "List all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "securityPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "securityPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "adaptiveProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdaptiveProtectionConfigResponse"
          },
          "advancedOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAdvancedOptionsConfigResponse"
          },
          "associations": {
            "description": "A list of associations that belong to this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "ddosProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyDdosProtectionConfigResponse"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "User-provided name of the Organization security plicy. The name should be unique in the organization in which the security policy is created. This should only be used when SecurityPolicyType is FIREWALL. The name must be 1-63 characters long, and comply with https://www.ietf.org/rfc/rfc1035.txt. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the security policy.",
            "type": "string"
          },
          "recaptchaOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRecaptchaOptionsConfigResponse"
          },
          "region": {
            "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all security policy rule tuples. A security policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "type": {
            "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
            "type": "string"
          },
          "userDefinedFields": {
            "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\"",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SecurityPolicyUserDefinedFieldResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "adaptiveProtectionConfig",
          "advancedOptionsConfig",
          "associations",
          "creationTimestamp",
          "ddosProtectionConfig",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "parent",
          "recaptchaOptionsConfig",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "type",
          "userDefinedFields"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getServiceAttachment": {
      "description": "Returns the specified ServiceAttachment resource in the given scope.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "serviceAttachment": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "serviceAttachment"
        ]
      },
      "outputs": {
        "properties": {
          "connectedEndpoints": {
            "description": "An array of connections for all the consumers connected to this service attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentConnectedEndpointResponse"
            },
            "type": "array"
          },
          "connectionPreference": {
            "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules.",
            "type": "string"
          },
          "consumerAcceptLists": {
            "description": "Projects that are allowed to connect to this service attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentConsumerProjectLimitResponse"
            },
            "type": "array"
          },
          "consumerRejectLists": {
            "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "domainNames": {
            "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enableProxyProtocol": {
            "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers.",
            "type": "boolean"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ServiceAttachment. An up-to-date fingerprint must be provided in order to patch/update the ServiceAttachment; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the ServiceAttachment.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#serviceAttachment for service attachments.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "natSubnets": {
            "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "producerForwardingRule": {
            "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment.",
            "type": "string"
          },
          "pscServiceAttachmentId": {
            "$ref": "#/types/google-native:compute%2Fbeta:Uint128Response",
            "description": "An 128-bit global unique ID of the PSC service attachment."
          },
          "reconcileConnections": {
            "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the service attachment resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "targetService": {
            "description": "The URL of a service serving the endpoint identified by this service attachment.",
            "type": "string"
          },
          "tunnelingConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:ServiceAttachmentTunnelingConfigResponse",
            "description": "When a tunneling config is set on this service attachment it will encapsulate traffic between consumer and producer. When tunneling is enabled: - nat_subnets must be unset - enable_proxy_protocol must be false - producer_forwarding_rule must be a L4 ILB. - "
          }
        },
        "required": [
          "connectedEndpoints",
          "connectionPreference",
          "consumerAcceptLists",
          "consumerRejectLists",
          "creationTimestamp",
          "description",
          "domainNames",
          "enableProxyProtocol",
          "fingerprint",
          "kind",
          "name",
          "natSubnets",
          "producerForwardingRule",
          "pscServiceAttachmentId",
          "reconcileConnections",
          "region",
          "selfLink",
          "targetService",
          "tunnelingConfig"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getServiceAttachmentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getSnapshot": {
      "description": "Returns the specified Snapshot resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "snapshot": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "snapshot"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the snapshot. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "autoCreated": {
            "description": "Set to true if snapshots are automatically created by applying resource policy on the target disk.",
            "type": "boolean"
          },
          "chainName": {
            "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value.",
            "type": "string"
          },
          "creationSizeBytes": {
            "description": "Size in bytes of the snapshot at creation time.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the source disk, specified in GB.",
            "type": "string"
          },
          "downloadBytes": {
            "description": "Number of bytes downloaded to restore a snapshot to a disk.",
            "type": "string"
          },
          "enableConfidentialCompute": {
            "description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk.",
            "type": "boolean"
          },
          "guestFlush": {
            "description": "[Input Only] Whether to attempt an application consistent snapshot by informing the OS to prepare for the snapshot process.",
            "type": "boolean"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#snapshot for Snapshot resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a snapshot.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
            "type": "object"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this snapshot.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "snapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
          },
          "snapshotType": {
            "description": "Indicates the type of the snapshot.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this snapshot.",
            "type": "string"
          },
          "sourceDiskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
          },
          "sourceDiskForRecoveryCheckpoint": {
            "description": "The source disk whose recovery checkpoint will be used to create this snapshot.",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "sourceInstantSnapshot": {
            "description": "The source instant snapshot used to create this snapshot. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instantSnapshots/instantSnapshot - projects/project/zones/zone/instantSnapshots/instantSnapshot - zones/zone/instantSnapshots/instantSnapshot ",
            "type": "string"
          },
          "sourceInstantSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomerEncryptionKeyResponse",
            "description": "Customer provided encryption key when creating Snapshot from Instant Snapshot."
          },
          "sourceInstantSnapshotId": {
            "description": "The unique ID of the instant snapshot used to create this snapshot. This value identifies the exact instant snapshot that was used to create this persistent disk. For example, if you created the persistent disk from an instant snapshot that was later deleted and recreated under the same name, the source instant snapshot ID would identify the exact instant snapshot that was used.",
            "type": "string"
          },
          "sourceSnapshotSchedulePolicy": {
            "description": "URL of the resource policy which created this scheduled snapshot.",
            "type": "string"
          },
          "sourceSnapshotSchedulePolicyId": {
            "description": "ID of the resource policy which created this scheduled snapshot.",
            "type": "string"
          },
          "status": {
            "description": "The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
            "type": "string"
          },
          "storageBytes": {
            "description": "A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
            "type": "string"
          },
          "storageBytesStatus": {
            "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
            "type": "string"
          },
          "storageLocations": {
            "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "userLicenses": {
            "description": "A list of user provided licenses represented by a list of URLs to the license resource.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "architecture",
          "autoCreated",
          "chainName",
          "creationSizeBytes",
          "creationTimestamp",
          "description",
          "diskSizeGb",
          "downloadBytes",
          "enableConfidentialCompute",
          "guestFlush",
          "guestOsFeatures",
          "kind",
          "labelFingerprint",
          "labels",
          "licenseCodes",
          "licenses",
          "locationHint",
          "name",
          "satisfiesPzs",
          "selfLink",
          "snapshotEncryptionKey",
          "snapshotType",
          "sourceDisk",
          "sourceDiskEncryptionKey",
          "sourceDiskForRecoveryCheckpoint",
          "sourceDiskId",
          "sourceInstantSnapshot",
          "sourceInstantSnapshotEncryptionKey",
          "sourceInstantSnapshotId",
          "sourceSnapshotSchedulePolicy",
          "sourceSnapshotSchedulePolicyId",
          "status",
          "storageBytes",
          "storageBytesStatus",
          "storageLocations",
          "userLicenses"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getSslCertificate": {
      "description": "Returns the specified SslCertificate resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "sslCertificate": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sslCertificate"
        ]
      },
      "outputs": {
        "properties": {
          "certificate": {
            "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expireTime": {
            "description": "Expire time of the certificate. RFC3339",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#sslCertificate for SSL certificates.",
            "type": "string"
          },
          "managed": {
            "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateManagedSslCertificateResponse",
            "description": "Configuration and status of a managed SSL certificate."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "privateKey": {
            "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate.",
            "type": "string"
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "selfManaged": {
            "$ref": "#/types/google-native:compute%2Fbeta:SslCertificateSelfManagedSslCertificateResponse",
            "description": "Configuration and status of a self-managed SSL certificate."
          },
          "subjectAlternativeNames": {
            "description": "Domains associated with the certificate via Subject Alternative Name.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "creationTimestamp",
          "description",
          "expireTime",
          "kind",
          "managed",
          "name",
          "privateKey",
          "region",
          "selfLink",
          "selfManaged",
          "subjectAlternativeNames",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getSslPolicy": {
      "description": "Lists all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "sslPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sslPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customFeatures": {
            "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enabledFeatures": {
            "description": "The list of features enabled in the SSL policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
            "type": "string"
          },
          "minTlsVersion": {
            "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "profile": {
            "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SslPolicyWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "customFeatures",
          "description",
          "enabledFeatures",
          "fingerprint",
          "kind",
          "minTlsVersion",
          "name",
          "profile",
          "region",
          "selfLink",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getSubnetwork": {
      "description": "Returns the specified subnetwork.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "subnetwork": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "subnetwork"
        ]
      },
      "outputs": {
        "properties": {
          "allowSubnetCidrRoutesOverlap": {
            "description": "Whether this subnetwork's ranges can conflict with existing static routes. Setting this to true allows this subnetwork's primary and secondary ranges to overlap with (and contain) static routes that have already been configured on the corresponding network. For example if a static route has range 10.1.0.0/16, a subnet range 10.0.0.0/8 could only be created if allow_conflicting_routes=true. Overlapping is only allowed on subnetwork operations; routes whose ranges conflict with this subnetwork's ranges won't be allowed unless route.allow_conflicting_subnetworks is set to true. Typically packets destined to IPs within the subnetwork (which may contain private/sensitive data) are prevented from leaving the virtual network. Setting this field to true will disable this feature. The default value is false and applies to all existing subnetworks and automatically created subnetworks. This field cannot be set to true at resource creation time.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time.",
            "type": "string"
          },
          "enableFlowLogs": {
            "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
            "type": "boolean"
          },
          "externalIpv6Prefix": {
            "description": "The external IPv6 address range that is owned by this subnetwork.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a Subnetwork.",
            "type": "string"
          },
          "gatewayAddress": {
            "description": "The gateway address for default routes to reach destination addresses outside this subnetwork.",
            "type": "string"
          },
          "internalIpv6Prefix": {
            "description": "The internal IPv6 address range that is assigned to this subnetwork.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange.",
            "type": "string"
          },
          "ipv6AccessType": {
            "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack.",
            "type": "string"
          },
          "ipv6CidrRange": {
            "description": "This field is for internal use.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#subnetwork for Subnetwork resources.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkLogConfigResponse",
            "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time.",
            "type": "string"
          },
          "privateIpGoogleAccess": {
            "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess.",
            "type": "boolean"
          },
          "privateIpv6GoogleAccess": {
            "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch.",
            "type": "string"
          },
          "purpose": {
            "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time.",
            "type": "string"
          },
          "reservedInternalRange": {
            "description": "The URL of the reserved internal range.",
            "type": "string"
          },
          "role": {
            "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request.",
            "type": "string"
          },
          "secondaryIpRanges": {
            "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:SubnetworkSecondaryRangeResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch.",
            "type": "string"
          },
          "state": {
            "description": "The state of the subnetwork, which can be one of the following values: READY: Subnetwork is created and ready to use DRAINING: only applicable to subnetworks that have the purpose set to INTERNAL_HTTPS_LOAD_BALANCER and indicates that connections to the load balancer are being drained. A subnetwork that is draining cannot be used or modified until it reaches a status of READY",
            "type": "string"
          }
        },
        "required": [
          "allowSubnetCidrRoutesOverlap",
          "creationTimestamp",
          "description",
          "enableFlowLogs",
          "externalIpv6Prefix",
          "fingerprint",
          "gatewayAddress",
          "internalIpv6Prefix",
          "ipCidrRange",
          "ipv6AccessType",
          "ipv6CidrRange",
          "kind",
          "logConfig",
          "name",
          "network",
          "privateIpGoogleAccess",
          "privateIpv6GoogleAccess",
          "purpose",
          "region",
          "reservedInternalRange",
          "role",
          "secondaryIpRanges",
          "selfLink",
          "stackType",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getSubnetworkIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getTargetGrpcProxy": {
      "description": "Returns the specified TargetGrpcProxy resource in the given scope.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetGrpcProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetGrpcProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetGrpcProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetGrpcProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetGrpcProxy.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetGrpcProxy for target grpc proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL with id for the resource.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC.",
            "type": "string"
          },
          "validateForProxyless": {
            "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to",
            "type": "boolean"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "selfLink",
          "selfLinkWithId",
          "urlMap",
          "validateForProxyless"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getTargetHttpProxy": {
      "description": "Returns the specified TargetHttpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetHttpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetHttpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy.",
            "type": "string"
          },
          "httpFilters": {
            "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/v1alpha1/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpFilters",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "region",
          "selfLink",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getTargetHttpsProxy": {
      "description": "Returns the specified TargetHttpsProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetHttpsProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetHttpsProxy"
        ]
      },
      "outputs": {
        "properties": {
          "authentication": {
            "deprecationMessage": "[Deprecated] Use serverTlsPolicy instead.",
            "description": "[Deprecated] Use serverTlsPolicy instead.",
            "type": "string"
          },
          "authorization": {
            "deprecationMessage": "[Deprecated] Use authorizationPolicy instead.",
            "description": "[Deprecated] Use authorizationPolicy instead.",
            "type": "string"
          },
          "authorizationPolicy": {
            "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact.",
            "type": "string"
          },
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy.",
            "type": "string"
          },
          "httpFilters": {
            "description": "URLs to networkservices.HttpFilter resources enabled for xDS clients using this configuration. For example, https://networkservices.googleapis.com/beta/projects/project/locations/ locationhttpFilters/httpFilter Only filters that handle outbound connection and stream events may be specified. These filters work in conjunction with a default set of HTTP filters that may already be configured by Traffic Director. Traffic Director will determine the final location of these filters within xDS configuration based on the name of the HTTP filter. If Traffic Director positions multiple filters at the same location, those filters will be in the same order as specified in this list. httpFilters only applies for loadbalancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED. See ForwardingRule for more details.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "quicOverride": {
            "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured.",
            "type": "string"
          },
          "urlMap": {
            "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map ",
            "type": "string"
          }
        },
        "required": [
          "authentication",
          "authorization",
          "authorizationPolicy",
          "certificateMap",
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpFilters",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "quicOverride",
          "region",
          "selfLink",
          "serverTlsPolicy",
          "sslCertificates",
          "sslPolicy",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getTargetInstance": {
      "description": "Returns the specified TargetInstance resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetInstance": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetInstance",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "instance": {
            "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance ",
            "type": "string"
          },
          "kind": {
            "description": "The type of the resource. Always compute#targetInstance for target instances.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "natPolicy": {
            "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this target instance.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the target instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "instance",
          "kind",
          "name",
          "natPolicy",
          "network",
          "securityPolicy",
          "selfLink",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getTargetPool": {
      "description": "Returns the specified target pool.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetPool": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetPool"
        ]
      },
      "outputs": {
        "properties": {
          "backupPool": {
            "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "failoverRatio": {
            "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
            "type": "number"
          },
          "healthChecks": {
            "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "instances": {
            "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetPool for target pools.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the target pool resides.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this target pool.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sessionAffinity": {
            "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
            "type": "string"
          }
        },
        "required": [
          "backupPool",
          "creationTimestamp",
          "description",
          "failoverRatio",
          "healthChecks",
          "instances",
          "kind",
          "name",
          "region",
          "securityPolicy",
          "selfLink",
          "sessionAffinity"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getTargetSslProxy": {
      "description": "Returns the specified TargetSslProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetSslProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetSslProxy"
        ]
      },
      "outputs": {
        "properties": {
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetSslProxy for target SSL proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured.",
            "type": "string"
          }
        },
        "required": [
          "certificateMap",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyHeader",
          "selfLink",
          "service",
          "sslCertificates",
          "sslPolicy"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getTargetTcpProxy": {
      "description": "Returns the specified TargetTcpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetTcpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetTcpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyBind",
          "proxyHeader",
          "region",
          "selfLink",
          "service"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getTargetVpnGateway": {
      "description": "Returns the specified target VPN gateway.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetVpnGateway": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetVpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "forwardingRules": {
            "description": "A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated with a VPN gateway.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a TargetVpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the target VPN gateway resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the VPN gateway, which can be one of the following: CREATING, READY, FAILED, or DELETING.",
            "type": "string"
          },
          "tunnels": {
            "description": "A list of URLs to VpnTunnel resources. VpnTunnels are created using the compute.vpntunnels.insert method and associated with a VPN gateway.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "forwardingRules",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "region",
          "selfLink",
          "status",
          "tunnels"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getUrlMap": {
      "description": "Returns the specified UrlMap resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "urlMap": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "urlMap"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultCustomErrorResponsePolicy": {
            "$ref": "#/types/google-native:compute%2Fbeta:CustomErrorResponsePolicyResponse",
            "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendServiceor BackendBucket responds with an error. This policy takes effect at the load balancer level and applies only when no policy has been defined for the error code at lower levels like PathMatcher, RouteRule and PathRule within this UrlMap. For example, consider a UrlMap with the following configuration: - defaultCustomErrorResponsePolicy containing policies for responding to 5xx and 4xx errors - A PathMatcher configured for *.example.com has defaultCustomErrorResponsePolicy for 4xx. If a request for http://www.example.com/ encounters a 404, the policy in pathMatcher.defaultCustomErrorResponsePolicy will be enforced. When the request for http://www.example.com/ encounters a 502, the policy in UrlMap.defaultCustomErrorResponsePolicy will be enforced. When a request that does not match any host in *.example.com such as http://www.myotherexample.com/, encounters a 404, UrlMap.defaultCustomErrorResponsePolicy takes effect. When used in conjunction with 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. defaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers."
          },
          "defaultRouteAction": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpRouteActionResponse",
            "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
          },
          "defaultService": {
            "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.",
            "type": "string"
          },
          "defaultUrlRedirect": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpRedirectActionResponse",
            "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap.",
            "type": "string"
          },
          "headerAction": {
            "$ref": "#/types/google-native:compute%2Fbeta:HttpHeaderActionResponse",
            "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
          },
          "hostRules": {
            "description": "The list of host rules to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:HostRuleResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#urlMaps for url maps.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pathMatchers": {
            "description": "The list of named PathMatchers to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:PathMatcherResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "tests": {
            "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:UrlMapTestResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "defaultCustomErrorResponsePolicy",
          "defaultRouteAction",
          "defaultService",
          "defaultUrlRedirect",
          "description",
          "fingerprint",
          "headerAction",
          "hostRules",
          "kind",
          "name",
          "pathMatchers",
          "region",
          "selfLink",
          "tests"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getVpnGateway": {
      "description": "Returns the specified VPN gateway.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "vpnGateway": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "vpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "gatewayIpVersion": {
            "description": "The IP family of the gateway IPs for the HA-VPN gateway interfaces. If not specified, IPV4 will be used.",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#vpnGateway for VPN gateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this VpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the VPN gateway resides.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used.",
            "type": "string"
          },
          "vpnInterfaces": {
            "description": "The list of VPN interfaces associated with this VPN gateway.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fbeta:VpnGatewayVpnGatewayInterfaceResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "gatewayIpVersion",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "region",
          "selfLink",
          "stackType",
          "vpnInterfaces"
        ],
        "type": "object"
      }
    },
    "google-native:compute/beta:getVpnTunnel": {
      "description": "Returns the specified VpnTunnel resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "vpnTunnel": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "vpnTunnel"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "detailedStatus": {
            "description": "Detailed status message for the VPN tunnel.",
            "type": "string"
          },
          "ikeVersion": {
            "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#vpnTunnel for VPN tunnels.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnTunnel.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "localTrafficSelector": {
            "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "peerExternalGateway": {
            "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway.",
            "type": "string"
          },
          "peerExternalGatewayInterface": {
            "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type.",
            "type": "integer"
          },
          "peerGcpGateway": {
            "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway.",
            "type": "string"
          },
          "peerIp": {
            "description": "IP address of the peer VPN gateway. Only IPv4 is supported.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the VPN tunnel resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "remoteTrafficSelector": {
            "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "router": {
            "description": "URL of the router resource to be used for dynamic routing.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sharedSecret": {
            "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway.",
            "type": "string"
          },
          "sharedSecretHash": {
            "description": "Hash of the shared secret.",
            "type": "string"
          },
          "status": {
            "description": "The status of the VPN tunnel, which can be one of the following: - PROVISIONING: Resource is being allocated for the VPN tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all VPN-related configs from the user. Network, TargetVpnGateway, VpnTunnel, ForwardingRule, and Route resources are needed to setup the VPN tunnel. - FIRST_HANDSHAKE: Successful first handshake with the peer VPN. - ESTABLISHED: Secure session is successfully established with the peer VPN. - NETWORK_ERROR: Deprecated, replaced by NO_INCOMING_PACKETS - AUTHORIZATION_ERROR: Auth error (for example, bad shared secret). - NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING: Resources are being deallocated for the VPN tunnel. - FAILED: Tunnel creation has failed and the tunnel is not ready to be used. - NO_INCOMING_PACKETS: No incoming packets from peer. - REJECTED: Tunnel configuration was rejected, can be result of being denied access. - ALLOCATING_RESOURCES: Cloud VPN is in the process of allocating all required resources. - STOPPED: Tunnel is stopped due to its Forwarding Rules being deleted for Classic VPN tunnels or the project is in frozen state. - PEER_IDENTITY_MISMATCH: Peer identity does not match peer IP, probably behind NAT. - TS_NARROWING_NOT_ALLOWED: Traffic selector narrowing not allowed for an HA-VPN tunnel. ",
            "type": "string"
          },
          "targetVpnGateway": {
            "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created.",
            "type": "string"
          },
          "vpnGateway": {
            "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created.",
            "type": "string"
          },
          "vpnGatewayInterface": {
            "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`.",
            "type": "integer"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "detailedStatus",
          "ikeVersion",
          "kind",
          "labelFingerprint",
          "labels",
          "localTrafficSelector",
          "name",
          "peerExternalGateway",
          "peerExternalGatewayInterface",
          "peerGcpGateway",
          "peerIp",
          "region",
          "remoteTrafficSelector",
          "router",
          "selfLink",
          "sharedSecret",
          "sharedSecretHash",
          "status",
          "targetVpnGateway",
          "vpnGateway",
          "vpnGatewayInterface"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getAddress": {
      "description": "Returns the specified address resource.",
      "inputs": {
        "properties": {
          "address": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "address",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "address": {
            "description": "The static IP address represented by this resource.",
            "type": "string"
          },
          "addressType": {
            "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "ipv6EndpointType": {
            "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#address for addresses.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
            "type": "string"
          },
          "prefixLength": {
            "description": "The prefix length if the resource represents an IP range.",
            "type": "integer"
          },
          "purpose": {
            "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
            "type": "string"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose.",
            "type": "string"
          },
          "users": {
            "description": "The URLs of the resources that are using this address.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "address",
          "addressType",
          "creationTimestamp",
          "description",
          "ipVersion",
          "ipv6EndpointType",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "networkTier",
          "prefixLength",
          "purpose",
          "region",
          "selfLink",
          "status",
          "subnetwork",
          "users"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getAutoscaler": {
      "description": "Returns the specified autoscaler resource.",
      "inputs": {
        "properties": {
          "autoscaler": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscaler",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyResponse",
            "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#autoscaler for autoscalers.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "recommendedSize": {
            "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction.",
            "type": "integer"
          },
          "region": {
            "description": "URL of the region where the instance group resides (for autoscalers living in regional scope).",
            "type": "string"
          },
          "scalingScheduleStatus": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Status information of existing scaling schedules.",
            "type": "object"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future.",
            "type": "string"
          },
          "statusDetails": {
            "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AutoscalerStatusDetailsResponse"
            },
            "type": "array"
          },
          "target": {
            "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "recommendedSize",
          "region",
          "scalingScheduleStatus",
          "selfLink",
          "status",
          "statusDetails",
          "target",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getBackendBucket": {
      "description": "Returns the specified BackendBucket resource.",
      "inputs": {
        "properties": {
          "backendBucket": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendBucket"
        ]
      },
      "outputs": {
        "properties": {
          "bucketName": {
            "description": "Cloud Storage bucket name.",
            "type": "string"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendBucketCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendBucket."
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customResponseHeaders": {
            "description": "Headers that the Application Load Balancer should add to proxied responses.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend bucket.",
            "type": "string"
          },
          "enableCdn": {
            "description": "If true, enable Cloud CDN for this BackendBucket.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "bucketName",
          "cdnPolicy",
          "compressionMode",
          "creationTimestamp",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCdn",
          "kind",
          "name",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getBackendBucketIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getBackendService": {
      "description": "Returns the specified BackendService resource.",
      "inputs": {
        "properties": {
          "backendService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendService"
        ]
      },
      "outputs": {
        "properties": {
          "affinityCookieTtlSec": {
            "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "integer"
          },
          "backends": {
            "description": "The list of backends that serve this BackendService.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BackendResponse"
            },
            "type": "array"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
          },
          "circuitBreakers": {
            "$ref": "#/types/google-native:compute%2Fv1:CircuitBreakersResponse"
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "connectionDraining": {
            "$ref": "#/types/google-native:compute%2Fv1:ConnectionDrainingResponse"
          },
          "connectionTrackingPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceConnectionTrackingPolicyResponse",
            "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
          },
          "consistentHash": {
            "$ref": "#/types/google-native:compute%2Fv1:ConsistentHashLoadBalancerSettingsResponse",
            "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customRequestHeaders": {
            "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "customResponseHeaders": {
            "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend service.",
            "type": "string"
          },
          "enableCDN": {
            "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
            "type": "boolean"
          },
          "failoverPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceFailoverPolicyResponse",
            "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "iap": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceIAPResponse",
            "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
          },
          "kind": {
            "description": "Type of resource. Always compute#backendService for backend services.",
            "type": "string"
          },
          "loadBalancingScheme": {
            "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
            "type": "string"
          },
          "localityLbPolicies": {
            "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
            },
            "type": "array"
          },
          "localityLbPolicy": {
            "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLogConfigResponse",
            "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
          },
          "maxStreamDuration": {
            "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
            "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
          },
          "metadatas": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL.",
            "type": "string"
          },
          "outlierDetection": {
            "$ref": "#/types/google-native:compute%2Fv1:OutlierDetectionResponse",
            "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
          },
          "port": {
            "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "type": "integer"
          },
          "portName": {
            "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
            "type": "string"
          },
          "protocol": {
            "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this backend service.",
            "type": "string"
          },
          "securitySettings": {
            "$ref": "#/types/google-native:compute%2Fv1:SecuritySettingsResponse",
            "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serviceBindings": {
            "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sessionAffinity": {
            "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
            "type": "string"
          },
          "subsetting": {
            "$ref": "#/types/google-native:compute%2Fv1:SubsettingResponse"
          },
          "timeoutSec": {
            "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration.",
            "type": "integer"
          },
          "usedBy": {
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BackendServiceUsedByResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "affinityCookieTtlSec",
          "backends",
          "cdnPolicy",
          "circuitBreakers",
          "compressionMode",
          "connectionDraining",
          "connectionTrackingPolicy",
          "consistentHash",
          "creationTimestamp",
          "customRequestHeaders",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCDN",
          "failoverPolicy",
          "fingerprint",
          "healthChecks",
          "iap",
          "kind",
          "loadBalancingScheme",
          "localityLbPolicies",
          "localityLbPolicy",
          "logConfig",
          "maxStreamDuration",
          "metadatas",
          "name",
          "network",
          "outlierDetection",
          "port",
          "portName",
          "protocol",
          "region",
          "securityPolicy",
          "securitySettings",
          "selfLink",
          "serviceBindings",
          "sessionAffinity",
          "subsetting",
          "timeoutSec",
          "usedBy"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getBackendServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getDisk": {
      "description": "Returns the specified persistent disk.",
      "inputs": {
        "properties": {
          "disk": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "disk",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "asyncPrimaryDisk": {
            "$ref": "#/types/google-native:compute%2Fv1:DiskAsyncReplicationResponse",
            "description": "Disk asynchronously replicated into this disk."
          },
          "asyncSecondaryDisks": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A list of disks this disk is asynchronously replicated to.",
            "type": "object"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#disk for disks.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastAttachTimestamp": {
            "description": "Last attach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastDetachTimestamp": {
            "description": "Last detach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this disk.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of publicly visible licenses. Reserved for Google's use.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "options": {
            "description": "Internal use only.",
            "type": "string"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Fv1:DiskParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "physicalBlockSizeBytes": {
            "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project.",
            "type": "string"
          },
          "provisionedIops": {
            "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.",
            "type": "string"
          },
          "provisionedThroughput": {
            "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "replicaZones": {
            "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this disk for automatic snapshot creations.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fv1:DiskResourceStatusResponse",
            "description": "Status information for the disk resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "sizeGb": {
            "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicy": {
            "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicyId": {
            "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used.",
            "type": "string"
          },
          "sourceImage": {
            "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
            "type": "string"
          },
          "sourceStorageObject": {
            "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead.",
            "type": "string"
          },
          "status": {
            "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. ",
            "type": "string"
          },
          "type": {
            "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types.",
            "type": "string"
          },
          "users": {
            "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "zone": {
            "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "architecture",
          "asyncPrimaryDisk",
          "asyncSecondaryDisks",
          "creationTimestamp",
          "description",
          "diskEncryptionKey",
          "guestOsFeatures",
          "kind",
          "labelFingerprint",
          "labels",
          "lastAttachTimestamp",
          "lastDetachTimestamp",
          "licenseCodes",
          "licenses",
          "locationHint",
          "name",
          "options",
          "params",
          "physicalBlockSizeBytes",
          "provisionedIops",
          "provisionedThroughput",
          "region",
          "replicaZones",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "sizeGb",
          "sourceConsistencyGroupPolicy",
          "sourceConsistencyGroupPolicyId",
          "sourceDisk",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceStorageObject",
          "status",
          "type",
          "users",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getDiskIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getExternalVpnGateway": {
      "description": "Returns the specified externalVpnGateway. Get a list of available externalVpnGateways by making a list() request.",
      "inputs": {
        "properties": {
          "externalVpnGateway": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "externalVpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "interfaces": {
            "description": "A list of interfaces for this external VPN gateway. If your peer-side gateway is an on-premises gateway and non-AWS cloud providers' gateway, at most two interfaces can be provided for an external VPN gateway. If your peer side is an AWS virtual private gateway, four interfaces should be provided for an external VPN gateway.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:ExternalVpnGatewayInterfaceResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#externalVpnGateway for externalVpnGateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this ExternalVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an ExternalVpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "redundancyType": {
            "description": "Indicates the user-supplied redundancy type of this external VPN gateway.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "interfaces",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "redundancyType",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getFirewall": {
      "description": "Returns the specified firewall.",
      "inputs": {
        "properties": {
          "firewall": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewall"
        ]
      },
      "outputs": {
        "properties": {
          "allowed": {
            "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:FirewallAllowedItemResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "denied": {
            "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:FirewallDeniedItemResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "destinationRanges": {
            "description": "If destination ranges are specified, the firewall rule applies only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Both IPv4 and IPv6 are supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "direction": {
            "description": "Direction of traffic to which this firewall applies, either `INGRESS` or `EGRESS`. The default is `INGRESS`. For `EGRESS` traffic, you cannot specify the sourceTags fields.",
            "type": "string"
          },
          "disabled": {
            "description": "Denotes whether the firewall rule is disabled. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#firewall for firewall rules.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:FirewallLogConfigResponse",
            "description": "This field denotes the logging options for a particular firewall rule. If logging is enabled, logs will be exported to Cloud Logging."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used: global/networks/default If you choose to specify this field, you can specify the network as a full or partial URL. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network - projects/myproject/global/networks/my-network - global/networks/default ",
            "type": "string"
          },
          "priority": {
            "description": "Priority for this rule. This is an integer between `0` and `65535`, both inclusive. The default value is `1000`. Relative priorities determine which rule takes effect if multiple rules apply. Lower values indicate higher priority. For example, a rule with priority `0` has higher precedence than a rule with priority `1`. DENY rules take precedence over ALLOW rules if they have equal priority. Note that VPC networks have implied rules with a priority of `65535`. To avoid conflicts with the implied rules, use a priority number less than `65535`.",
            "type": "integer"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sourceRanges": {
            "description": "If source ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both fields are set, the rule applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the rule to apply. Both IPv4 and IPv6 are supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sourceServiceAccounts": {
            "description": "If source service accounts are specified, the firewall rules apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall applies to traffic that has a source IP address within the sourceRanges OR a source IP that belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both fields for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sourceTags": {
            "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both fields are set, the firewall applies to traffic that has a source IP address within sourceRanges OR a source IP from a resource with a matching tag listed in the sourceTags field. The connection does not need to match both fields for the firewall to apply.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetServiceAccounts": {
            "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetTags": {
            "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "allowed",
          "creationTimestamp",
          "denied",
          "description",
          "destinationRanges",
          "direction",
          "disabled",
          "kind",
          "logConfig",
          "name",
          "network",
          "priority",
          "selfLink",
          "sourceRanges",
          "sourceServiceAccounts",
          "sourceTags",
          "targetServiceAccounts",
          "targetTags"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getFirewallPolicy": {
      "description": "Returns the specified firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getForwardingRule": {
      "description": "Returns the specified ForwardingRule resource.",
      "inputs": {
        "properties": {
          "forwardingRule": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "forwardingRule",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "allPorts": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. ",
            "type": "boolean"
          },
          "allowGlobalAccess": {
            "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
            "type": "boolean"
          },
          "allowPscGlobalAccess": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region.",
            "type": "boolean"
          },
          "backendService": {
            "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
            "type": "string"
          },
          "baseForwardingRule": {
            "description": "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.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "ipAddress": {
            "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number.",
            "type": "string"
          },
          "ipProtocol": {
            "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "isMirroringCollector": {
            "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "loadBalancingScheme": {
            "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
            "type": "string"
          },
          "metadataFilters": {
            "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:MetadataFilterResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter.",
            "type": "string"
          },
          "network": {
            "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
            "type": "string"
          },
          "noAutomateDnsZone": {
            "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. Once set, this field is not mutable.",
            "type": "boolean"
          },
          "portRange": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?",
            "type": "string"
          },
          "ports": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pscConnectionId": {
            "description": "The PSC connection id of the PSC Forwarding Rule.",
            "type": "string"
          },
          "pscConnectionStatus": {
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serviceDirectoryRegistrations": {
            "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleServiceDirectoryRegistrationResponse"
            },
            "type": "array"
          },
          "serviceLabel": {
            "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
            "type": "string"
          },
          "serviceName": {
            "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
            "type": "string"
          },
          "sourceIpRanges": {
            "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subnetwork": {
            "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
            "type": "string"
          },
          "target": {
            "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. ",
            "type": "string"
          }
        },
        "required": [
          "allPorts",
          "allowGlobalAccess",
          "allowPscGlobalAccess",
          "backendService",
          "baseForwardingRule",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipAddress",
          "ipProtocol",
          "ipVersion",
          "isMirroringCollector",
          "kind",
          "labelFingerprint",
          "labels",
          "loadBalancingScheme",
          "metadataFilters",
          "name",
          "network",
          "networkTier",
          "noAutomateDnsZone",
          "portRange",
          "ports",
          "pscConnectionId",
          "pscConnectionStatus",
          "region",
          "selfLink",
          "serviceDirectoryRegistrations",
          "serviceLabel",
          "serviceName",
          "sourceIpRanges",
          "subnetwork",
          "target"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getGlobalAddress": {
      "description": "Returns the specified address resource.",
      "inputs": {
        "properties": {
          "address": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "address"
        ]
      },
      "outputs": {
        "properties": {
          "address": {
            "description": "The static IP address represented by this resource.",
            "type": "string"
          },
          "addressType": {
            "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP version that will be used by this address. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "ipv6EndpointType": {
            "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#address for addresses.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Address.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with the VPC_PEERING purpose.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this address and can only take the following values: PREMIUM or STANDARD. Internal IP addresses are always Premium Tier; global external IP addresses are always Premium Tier; regional external IP addresses can be either Standard or Premium Tier. If this field is not specified, it is assumed to be PREMIUM.",
            "type": "string"
          },
          "prefixLength": {
            "description": "The prefix length if the resource represents an IP range.",
            "type": "integer"
          },
          "purpose": {
            "description": "The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, load balancers, and similar resources. - DNS_RESOLVER for a DNS resolver address in a subnetwork for a Cloud DNS inbound forwarder IP addresses (regional internal IP address in a subnet of a VPC network) - VPC_PEERING for global internal IP addresses used for private services access allocated ranges. - NAT_AUTO for the regional external IP addresses used by Cloud NAT when allocating addresses using automatic NAT IP address allocation. - IPSEC_INTERCONNECT for addresses created from a private IP range that are reserved for a VLAN attachment in an *HA VPN over Cloud Interconnect* configuration. These addresses are regional resources. - `SHARED_LOADBALANCER_VIP` for an internal IP address that is assigned to multiple internal forwarding rules. - `PRIVATE_SERVICE_CONNECT` for a private network address that is used to configure Private Service Connect. Only global internal addresses can use this purpose. ",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where a regional address resides. For regional addresses, you must specify the region as a path parameter in the HTTP request URL. *This field is not applicable to global addresses.*",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
            "type": "string"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with a GCE_ENDPOINT or DNS_RESOLVER purpose.",
            "type": "string"
          },
          "users": {
            "description": "The URLs of the resources that are using this address.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "address",
          "addressType",
          "creationTimestamp",
          "description",
          "ipVersion",
          "ipv6EndpointType",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "networkTier",
          "prefixLength",
          "purpose",
          "region",
          "selfLink",
          "status",
          "subnetwork",
          "users"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getGlobalForwardingRule": {
      "description": "Returns the specified GlobalForwardingRule resource. Gets a list of available forwarding rules by making a list() request.",
      "inputs": {
        "properties": {
          "forwardingRule": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "forwardingRule"
        ]
      },
      "outputs": {
        "properties": {
          "allPorts": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The allPorts field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, SCTP, or L3_DEFAULT. - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal and external protocol forwarding. - Set this field to true to allow packets addressed to any port or packets lacking destination port information (for example, UDP fragments after the first fragment) to be forwarded to the backends configured with this forwarding rule. The L3_DEFAULT protocol requires allPorts be set to true. ",
            "type": "boolean"
          },
          "allowGlobalAccess": {
            "description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
            "type": "boolean"
          },
          "allowPscGlobalAccess": {
            "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region.",
            "type": "boolean"
          },
          "backendService": {
            "description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
            "type": "string"
          },
          "baseForwardingRule": {
            "description": "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.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "ipAddress": {
            "description": "IP address for which this forwarding rule accepts traffic. When a client sends traffic to this IP address, the forwarding rule directs the traffic to the referenced target or backendService. While creating a forwarding rule, specifying an IPAddress is required under the following circumstances: - When the target is set to targetGrpcProxy and validateForProxyless is set to true, the IPAddress should be set to 0.0.0.0. - When the target is a Private Service Connect Google APIs bundle, you must specify an IPAddress. Otherwise, you can optionally specify an IP address that references an existing static (reserved) IP address resource. When omitted, Google Cloud assigns an ephemeral IP address. Use one of the following formats to specify an IP address while creating a forwarding rule: * IP address number, as in `100.1.2.3` * IPv6 address range, as in `2600:1234::/96` * Full resource URL, as in https://www.googleapis.com/compute/v1/projects/ project_id/regions/region/addresses/address-name * Partial URL or by name, as in: - projects/project_id/regions/region/addresses/address-name - regions/region/addresses/address-name - global/addresses/address-name - address-name The forwarding rule's target or backendService, and in most cases, also the loadBalancingScheme, determine the type of IP address that you can use. For detailed information, see [IP address specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). When reading an IPAddress, the API always returns the IP address number.",
            "type": "string"
          },
          "ipProtocol": {
            "description": "The IP protocol to which this rule applies. For protocol forwarding, valid options are TCP, UDP, ESP, AH, SCTP, ICMP and L3_DEFAULT. The valid IP protocols are different for different load balancing products as described in [Load balancing features](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).",
            "type": "string"
          },
          "ipVersion": {
            "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6.",
            "type": "string"
          },
          "isMirroringCollector": {
            "description": "Indicates whether or not this load balancer can be used as a collector for packet mirroring. To prevent mirroring loops, instances behind this load balancer will not have their traffic mirrored even if a PacketMirroring rule applies to them. This can only be set to true for load balancers that have their loadBalancingScheme set to INTERNAL.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "loadBalancingScheme": {
            "description": "Specifies the forwarding rule type. For more information about forwarding rules, refer to Forwarding rule concepts.",
            "type": "string"
          },
          "metadataFilters": {
            "description": "Opaque filter criteria used by load balancer to restrict routing configuration to a limited set of xDS compliant clients. In their xDS requests to load balancer, xDS clients present node metadata. When there is a match, the relevant configuration is made available to those proxies. Otherwise, all the resources (e.g. TargetHttpProxy, UrlMap) referenced by the ForwardingRule are not visible to those proxies. For each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels provided in the metadata. If multiple metadataFilters are specified, all of them need to be satisfied in order to be considered a match. metadataFilters specified here will be applifed before those specified in the UrlMap that this ForwardingRule references. metadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:MetadataFilterResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For Private Service Connect forwarding rules that forward traffic to Google APIs, the forwarding rule name must be a 1-20 characters string with lowercase letters and numbers and must start with a letter.",
            "type": "string"
          },
          "network": {
            "description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
            "type": "string"
          },
          "networkTier": {
            "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM, STANDARD. For regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM. If this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
            "type": "string"
          },
          "noAutomateDnsZone": {
            "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. Once set, this field is not mutable.",
            "type": "boolean"
          },
          "portRange": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The portRange field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: external passthrough Network Load Balancers, internal and external proxy Network Load Balancers, internal and external Application Load Balancers, external protocol forwarding, and Classic VPN. - Some products have restrictions on what ports can be used. See port specifications for details. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair, and cannot have overlapping portRanges. @pattern: \\\\d+(?:-\\\\d+)?",
            "type": "string"
          },
          "ports": {
            "description": "The ports, portRange, and allPorts fields are mutually exclusive. Only packets addressed to ports in the specified range will be forwarded to the backends configured with this forwarding rule. The ports field has the following limitations: - It requires that the forwarding rule IPProtocol be TCP, UDP, or SCTP, and - It's applicable only to the following products: internal passthrough Network Load Balancers, backend service-based external passthrough Network Load Balancers, and internal protocol forwarding. - You can specify a list of up to five ports by number, separated by commas. The ports can be contiguous or discontiguous. For external forwarding rules, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. For internal forwarding rules within the same VPC network, two or more forwarding rules cannot use the same [IPAddress, IPProtocol] pair if they share at least one port number. @pattern: \\\\d+(?:-\\\\d+)?",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pscConnectionId": {
            "description": "The PSC connection id of the PSC Forwarding Rule.",
            "type": "string"
          },
          "pscConnectionStatus": {
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serviceDirectoryRegistrations": {
            "description": "Service Directory resources to register this forwarding rule with. Currently, only supports a single Service Directory resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:ForwardingRuleServiceDirectoryRegistrationResponse"
            },
            "type": "array"
          },
          "serviceLabel": {
            "description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
            "type": "string"
          },
          "serviceName": {
            "description": "The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
            "type": "string"
          },
          "sourceIpRanges": {
            "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 source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subnetwork": {
            "description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
            "type": "string"
          },
          "target": {
            "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. - For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). - For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. - For Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment. The target is not mutable once set as a service attachment. ",
            "type": "string"
          }
        },
        "required": [
          "allPorts",
          "allowGlobalAccess",
          "allowPscGlobalAccess",
          "backendService",
          "baseForwardingRule",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipAddress",
          "ipProtocol",
          "ipVersion",
          "isMirroringCollector",
          "kind",
          "labelFingerprint",
          "labels",
          "loadBalancingScheme",
          "metadataFilters",
          "name",
          "network",
          "networkTier",
          "noAutomateDnsZone",
          "portRange",
          "ports",
          "pscConnectionId",
          "pscConnectionStatus",
          "region",
          "selfLink",
          "serviceDirectoryRegistrations",
          "serviceLabel",
          "serviceName",
          "sourceIpRanges",
          "subnetwork",
          "target"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getGlobalNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getGlobalPublicDelegatedPrefix": {
      "description": "Returns the specified global PublicDelegatedPrefix resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicDelegatedPrefix": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicDelegatedPrefix"
        ]
      },
      "outputs": {
        "properties": {
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The IP address range, in CIDR format, represented by this public delegated prefix.",
            "type": "string"
          },
          "isLiveMigration": {
            "description": "If true, the prefix will be live migrated.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parentPrefix": {
            "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix.",
            "type": "string"
          },
          "publicDelegatedSubPrefixs": {
            "description": "The list of sub public delegated prefixes that exist for this public delegated prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. ",
            "type": "string"
          }
        },
        "required": [
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipCidrRange",
          "isLiveMigration",
          "kind",
          "name",
          "parentPrefix",
          "publicDelegatedSubPrefixs",
          "region",
          "selfLink",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getHealthCheck": {
      "description": "Returns the specified HealthCheck resource.",
      "inputs": {
        "properties": {
          "healthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in 3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:GRPCHealthCheckResponse"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "http2HealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:HTTP2HealthCheckResponse"
          },
          "httpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:HTTPHealthCheckResponse"
          },
          "httpsHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:HTTPSHealthCheckResponse"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:HealthCheckLogConfigResponse",
            "description": "Configure logging on this health check."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash.",
            "type": "string"
          },
          "region": {
            "description": "Region where the health check resides. Not applicable to global health checks.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sslHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:SSLHealthCheckResponse"
          },
          "tcpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:TCPHealthCheckResponse"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "type": {
            "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
            "type": "string"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "grpcHealthCheck",
          "healthyThreshold",
          "http2HealthCheck",
          "httpHealthCheck",
          "httpsHealthCheck",
          "kind",
          "logConfig",
          "name",
          "region",
          "selfLink",
          "sslHealthCheck",
          "tcpHealthCheck",
          "timeoutSec",
          "type",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getHttpHealthCheck": {
      "description": "Returns the specified HttpHealthCheck resource.",
      "inputs": {
        "properties": {
          "httpHealthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "httpHealthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "host": {
            "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "port": {
            "description": "The TCP port number for the HTTP health check request. The default value is 80.",
            "type": "integer"
          },
          "requestPath": {
            "description": "The request path of the HTTP health check request. The default value is /. This field does not support query parameters. Must comply with RFC3986.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "healthyThreshold",
          "host",
          "kind",
          "name",
          "port",
          "requestPath",
          "selfLink",
          "timeoutSec",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getHttpsHealthCheck": {
      "description": "Returns the specified HttpsHealthCheck resource.",
      "inputs": {
        "properties": {
          "httpsHealthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "httpsHealthCheck"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "host": {
            "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "port": {
            "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
            "type": "integer"
          },
          "requestPath": {
            "description": "The request path of the HTTPS health check request. The default value is \"/\". Must comply with RFC3986.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
            "type": "integer"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "healthyThreshold",
          "host",
          "kind",
          "name",
          "port",
          "requestPath",
          "selfLink",
          "timeoutSec",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getImage": {
      "description": "Returns the specified image.",
      "inputs": {
        "properties": {
          "image": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "image"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the image. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "archiveSizeBytes": {
            "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "deprecated": {
            "$ref": "#/types/google-native:compute%2Fv1:DeprecationStatusResponse",
            "description": "The deprecation status associated with this image."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the image when restored onto a persistent disk (in GB).",
            "type": "string"
          },
          "family": {
            "description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.",
            "type": "string"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. To see a list of available options, see the guestOSfeatures[].type parameter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "imageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "Encrypts the image using a customer-supplied encryption key. After you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image). Customer-supplied encryption keys do not protect access to metadata of the disk. If you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
          },
          "kind": {
            "description": "Type of the resource. Always compute#image for images.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an image.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this image.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "Any applicable license URI.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "rawDisk": {
            "$ref": "#/types/google-native:compute%2Fv1:ImageRawDiskResponse",
            "description": "The parameters of the raw disk image."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "shieldedInstanceInitialState": {
            "$ref": "#/types/google-native:compute%2Fv1:InitialStateConfigResponse",
            "description": "Set the secure boot keys of shielded instance."
          },
          "sourceDisk": {
            "description": "URL of the source disk used to create this image. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - projects/project/zones/zone/disks/disk - zones/zone/disks/disk In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceDiskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "sourceImage": {
            "description": "URL of the source image used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ images/image_name - projects/project_id/global/images/image_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "URL of the source snapshot used to create this image. The following are valid formats for the URL: - https://www.googleapis.com/compute/v1/projects/project_id/global/ snapshots/snapshot_name - projects/project_id/global/snapshots/snapshot_name In order to create an image, you must provide the full or partial URL of one of the following: - The rawDisk.source URL - The sourceDisk URL - The sourceImage URL - The sourceSnapshot URL ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name.",
            "type": "string"
          },
          "sourceType": {
            "description": "The type of the image used to create this disk. The default and only valid value is RAW.",
            "type": "string"
          },
          "status": {
            "description": "The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
            "type": "string"
          },
          "storageLocations": {
            "description": "Cloud Storage bucket storage location of the image (regional or multi-regional).",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "architecture",
          "archiveSizeBytes",
          "creationTimestamp",
          "deprecated",
          "description",
          "diskSizeGb",
          "family",
          "guestOsFeatures",
          "imageEncryptionKey",
          "kind",
          "labelFingerprint",
          "labels",
          "licenseCodes",
          "licenses",
          "name",
          "rawDisk",
          "satisfiesPzs",
          "selfLink",
          "shieldedInstanceInitialState",
          "sourceDisk",
          "sourceDiskEncryptionKey",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceType",
          "status",
          "storageLocations"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getImageIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getInstance": {
      "description": "Returns the specified Instance resource.",
      "inputs": {
        "properties": {
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "advancedMachineFeatures": {
            "$ref": "#/types/google-native:compute%2Fv1:AdvancedMachineFeaturesResponse",
            "description": "Controls for advanced machine-related behavior features."
          },
          "canIpForward": {
            "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding .",
            "type": "boolean"
          },
          "confidentialInstanceConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:ConfidentialInstanceConfigResponse"
          },
          "cpuPlatform": {
            "description": "The CPU platform used by this instance.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "deletionProtection": {
            "description": "Whether the resource should be protected against deletion.",
            "type": "boolean"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "disks": {
            "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AttachedDiskResponse"
            },
            "type": "array"
          },
          "displayDevice": {
            "$ref": "#/types/google-native:compute%2Fv1:DisplayDeviceResponse",
            "description": "Enables display device for the instance."
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the instance's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update the instance. You must always provide an up-to-date fingerprint hash in order to update the instance. To see the latest fingerprint, make get() request to the instance.",
            "type": "string"
          },
          "guestAccelerators": {
            "description": "A list of the type and count of accelerator cards attached to the instance.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfigResponse"
            },
            "type": "array"
          },
          "hostname": {
            "description": "Specifies the hostname of the instance. The specified hostname must be RFC1035 compliant. If hostname is not specified, the default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal when using zonal DNS.",
            "type": "string"
          },
          "instanceEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "Encrypts suspended data for an instance with a customer-managed encryption key. If you are creating a new instance, this field will encrypt the local SSD and in-memory contents of the instance during the suspend operation. If you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key during the suspend operation."
          },
          "keyRevocationActionType": {
            "description": "KeyRevocationActionType of the instance. Supported options are \"STOP\" and \"NONE\". The default value is \"NONE\" if it is not specified.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#instance for instances.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for this request, which is essentially a hash of the label's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the instance.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastStartTimestamp": {
            "description": "Last start timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastStopTimestamp": {
            "description": "Last stop timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastSuspendedTimestamp": {
            "description": "Last suspended timestamp in RFC3339 text format.",
            "type": "string"
          },
          "machineType": {
            "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type: zones/us-central1-f/machineTypes/n1-standard-1 To create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example: zones/us-central1-f/machineTypes/custom-4-5120 For a full list of restrictions, read the Specifications for custom machine types.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:compute%2Fv1:MetadataResponse",
            "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
          },
          "minCpuPlatform": {
            "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\".",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "networkInterfaces": {
            "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:NetworkInterfaceResponse"
            },
            "type": "array"
          },
          "networkPerformanceConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkPerformanceConfigResponse"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "privateIpv6GoogleAccess": {
            "description": "The private IPv6 google access type for the VM. If not specified, use INHERIT_FROM_SUBNETWORK as default.",
            "type": "string"
          },
          "reservationAffinity": {
            "$ref": "#/types/google-native:compute%2Fv1:ReservationAffinityResponse",
            "description": "Specifies the reservations that this instance can consume from."
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourceStatusResponse",
            "description": "Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "scheduling": {
            "$ref": "#/types/google-native:compute%2Fv1:SchedulingResponse",
            "description": "Sets the scheduling options for this instance."
          },
          "selfLink": {
            "description": "Server-defined URL for this resource.",
            "type": "string"
          },
          "serviceAccounts": {
            "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported. Service accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:ServiceAccountResponse"
            },
            "type": "array"
          },
          "shieldedInstanceConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:ShieldedInstanceConfigResponse"
          },
          "shieldedInstanceIntegrityPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:ShieldedInstanceIntegrityPolicyResponse"
          },
          "sourceMachineImage": {
            "description": "Source machine image",
            "type": "string"
          },
          "sourceMachineImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "Source machine image encryption key when creating an instance from a machine image."
          },
          "startRestricted": {
            "description": "Whether a VM has been restricted for start because Compute Engine has detected suspicious activity.",
            "type": "boolean"
          },
          "status": {
            "description": "The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING, and TERMINATED. For more information about the status of the instance, see Instance life cycle.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          },
          "tags": {
            "$ref": "#/types/google-native:compute%2Fv1:TagsResponse",
            "description": "Tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035. Multiple tags can be specified via the 'tags.items' field."
          },
          "zone": {
            "description": "URL of the zone where the instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "advancedMachineFeatures",
          "canIpForward",
          "confidentialInstanceConfig",
          "cpuPlatform",
          "creationTimestamp",
          "deletionProtection",
          "description",
          "disks",
          "displayDevice",
          "fingerprint",
          "guestAccelerators",
          "hostname",
          "instanceEncryptionKey",
          "keyRevocationActionType",
          "kind",
          "labelFingerprint",
          "labels",
          "lastStartTimestamp",
          "lastStopTimestamp",
          "lastSuspendedTimestamp",
          "machineType",
          "metadata",
          "minCpuPlatform",
          "name",
          "networkInterfaces",
          "networkPerformanceConfig",
          "params",
          "privateIpv6GoogleAccess",
          "reservationAffinity",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "scheduling",
          "selfLink",
          "serviceAccounts",
          "shieldedInstanceConfig",
          "shieldedInstanceIntegrityPolicy",
          "sourceMachineImage",
          "sourceMachineImageEncryptionKey",
          "startRestricted",
          "status",
          "statusMessage",
          "tags",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getInstanceGroup": {
      "description": "Returns the specified zonal instance group. Get a list of available zonal instance groups by making a list() request. For managed instance groups, use the instanceGroupManagers or regionInstanceGroupManagers methods instead.",
      "inputs": {
        "properties": {
          "instanceGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance group in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroup for instance groups.",
            "type": "string"
          },
          "name": {
            "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": " Assigns a name to a port number. For example: {name: \"http\", port: 80} This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"app1\", port: 8080}, {name: \"app1\", port: 8081}, {name: \"app2\", port: 8082}] Named ports apply to all instances in this instance group. ",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:NamedPortResponse"
            },
            "type": "array"
          },
          "network": {
            "description": "The URL of the network to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0).",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the instance group is located (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance group. The server generates this URL.",
            "type": "string"
          },
          "size": {
            "description": "The total number of instances in the instance group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "The URL of the subnetwork to which all instances in the instance group belong. If your instance has multiple network interfaces, then the network and subnetwork fields only refer to the network and subnet used by your primary interface (nic0).",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "namedPorts",
          "network",
          "region",
          "selfLink",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getInstanceGroupManager": {
      "description": "Returns all of the details about the specified managed instance group.",
      "inputs": {
        "properties": {
          "instanceGroupManager": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroupManager",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoHealingPolicies": {
            "description": "The autohealing policy for this managed instance group. You can specify only one value.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerAutoHealingPolicyResponse"
            },
            "type": "array"
          },
          "baseInstanceName": {
            "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this managed instance group in RFC3339 text format.",
            "type": "string"
          },
          "currentActions": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerActionsSummaryResponse",
            "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "distributionPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicyResponse",
            "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager.",
            "type": "string"
          },
          "instanceGroup": {
            "description": "The URL of the Instance Group resource.",
            "type": "string"
          },
          "instanceLifecyclePolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerInstanceLifecyclePolicyResponse",
            "description": "The repair policy for this managed instance group."
          },
          "instanceTemplate": {
            "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups.",
            "type": "string"
          },
          "listManagedInstancesResults": {
            "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
            "type": "string"
          },
          "name": {
            "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:NamedPortResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "The URL of the region where the managed instance group resides (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this managed instance group. The server defines this URL.",
            "type": "string"
          },
          "statefulPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:StatefulPolicyResponse",
            "description": "Stateful configuration for this Instanced Group Manager"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerStatusResponse",
            "description": "The status of this managed instance group."
          },
          "targetPools": {
            "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetSize": {
            "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number.",
            "type": "integer"
          },
          "updatePolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyResponse",
            "description": "The update policy for this managed instance group."
          },
          "versions": {
            "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerVersionResponse"
            },
            "type": "array"
          },
          "zone": {
            "description": "The URL of a zone where the managed instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "autoHealingPolicies",
          "baseInstanceName",
          "creationTimestamp",
          "currentActions",
          "description",
          "distributionPolicy",
          "fingerprint",
          "instanceGroup",
          "instanceLifecyclePolicy",
          "instanceTemplate",
          "kind",
          "listManagedInstancesResults",
          "name",
          "namedPorts",
          "region",
          "selfLink",
          "statefulPolicy",
          "status",
          "targetPools",
          "targetSize",
          "updatePolicy",
          "versions",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getInstanceTemplate": {
      "description": "Returns the specified instance template.",
      "inputs": {
        "properties": {
          "instanceTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceTemplate"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance template in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceTemplate for instance templates.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/types/google-native:compute%2Fv1:InstancePropertiesResponse",
            "description": "The instance properties for this instance template."
          },
          "region": {
            "description": "URL of the region where the instance template resides. Only applicable for regional resources.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance template. The server defines this URL.",
            "type": "string"
          },
          "sourceInstance": {
            "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceParams": {
            "$ref": "#/types/google-native:compute%2Fv1:SourceInstanceParamsResponse",
            "description": "The source instance params to use to create this instance template."
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "properties",
          "region",
          "selfLink",
          "sourceInstance",
          "sourceInstanceParams"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getInstanceTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getInterconnect": {
      "description": "Returns the specified Interconnect. Get a list of available Interconnects by making a list() request.",
      "inputs": {
        "properties": {
          "interconnect": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "interconnect"
        ]
      },
      "outputs": {
        "properties": {
          "adminEnabled": {
            "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true.",
            "type": "boolean"
          },
          "availableFeatures": {
            "description": "[Output only] List of features available for this Interconnect connection, which can take one of the following values: - MACSEC If present then the Interconnect connection is provisioned on MACsec capable hardware ports. If not present then the Interconnect connection is provisioned on non-MACsec capable ports and MACsec isn't supported and enabling MACsec fails.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "circuitInfos": {
            "description": "A list of CircuitInfo objects, that describe the individual circuits in this LAG.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:InterconnectCircuitInfoResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customerName": {
            "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expectedOutages": {
            "description": "A list of outages expected for this Interconnect.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:InterconnectOutageNotificationResponse"
            },
            "type": "array"
          },
          "googleIpAddress": {
            "description": "IP address configured on the Google side of the Interconnect link. This can be used only for ping tests.",
            "type": "string"
          },
          "googleReferenceId": {
            "description": "Google reference ID to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
            "type": "string"
          },
          "interconnectAttachments": {
            "description": "A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "interconnectType": {
            "description": "Type of interconnect, which can take one of the following values: - PARTNER: A partner-managed interconnection shared between customers though a partner. - DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#interconnect for interconnects.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an Interconnect.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "linkType": {
            "description": "Type of link requested, which can take one of the following values: - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
            "type": "string"
          },
          "location": {
            "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned.",
            "type": "string"
          },
          "macsec": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectMacsecResponse",
            "description": "Configuration that enables Media Access Control security (MACsec) on the Cloud Interconnect connection between Google and your on-premises router."
          },
          "macsecEnabled": {
            "description": "Enable or disable MACsec on this Interconnect connection. MACsec enablement fails if the MACsec object is not specified.",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nocContactEmail": {
            "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Cloud Monitoring logs alerting and Cloud Notifications. This field is required for users who sign up for Cloud Interconnect using workforce identity federation.",
            "type": "string"
          },
          "operationalStatus": {
            "description": "The current status of this Interconnect's functionality, which can take one of the following values: - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. ",
            "type": "string"
          },
          "peerIpAddress": {
            "description": "IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests.",
            "type": "string"
          },
          "provisionedLinkCount": {
            "description": "Number of links actually provisioned in this interconnect.",
            "type": "integer"
          },
          "remoteLocation": {
            "description": "Indicates that this is a Cross-Cloud Interconnect. This field specifies the location outside of Google's network that the interconnect is connected to.",
            "type": "string"
          },
          "requestedFeatures": {
            "description": "Optional. List of features requested for this Interconnect connection, which can take one of the following values: - MACSEC If specified then the connection is created on MACsec capable hardware ports. If not specified, the default value is false, which allocates non-MACsec capable ports first if available. This parameter can be provided only with Interconnect INSERT. It isn't valid for Interconnect PATCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "requestedLinkCount": {
            "description": "Target number of physical links in the link bundle, as requested by the customer.",
            "type": "integer"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "state": {
            "description": "The current state of Interconnect functionality, which can take one of the following values: - ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. - UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. - UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect. ",
            "type": "string"
          }
        },
        "required": [
          "adminEnabled",
          "availableFeatures",
          "circuitInfos",
          "creationTimestamp",
          "customerName",
          "description",
          "expectedOutages",
          "googleIpAddress",
          "googleReferenceId",
          "interconnectAttachments",
          "interconnectType",
          "kind",
          "labelFingerprint",
          "labels",
          "linkType",
          "location",
          "macsec",
          "macsecEnabled",
          "name",
          "nocContactEmail",
          "operationalStatus",
          "peerIpAddress",
          "provisionedLinkCount",
          "remoteLocation",
          "requestedFeatures",
          "requestedLinkCount",
          "satisfiesPzs",
          "selfLink",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getInterconnectAttachment": {
      "description": "Returns the specified interconnect attachment.",
      "inputs": {
        "properties": {
          "interconnectAttachment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "interconnectAttachment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "adminEnabled": {
            "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER.",
            "type": "boolean"
          },
          "bandwidth": {
            "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: - BPS_50M: 50 Mbit/s - BPS_100M: 100 Mbit/s - BPS_200M: 200 Mbit/s - BPS_300M: 300 Mbit/s - BPS_400M: 400 Mbit/s - BPS_500M: 500 Mbit/s - BPS_1G: 1 Gbit/s - BPS_2G: 2 Gbit/s - BPS_5G: 5 Gbit/s - BPS_10G: 10 Gbit/s - BPS_20G: 20 Gbit/s - BPS_50G: 50 Gbit/s ",
            "type": "string"
          },
          "candidateIpv6Subnets": {
            "description": "This field is not available.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "candidateSubnets": {
            "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google's edge. If not supplied, Google will randomly select an unused /29 from all of link-local space.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cloudRouterIpAddress": {
            "description": "IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
            "type": "string"
          },
          "cloudRouterIpv6Address": {
            "description": "IPv6 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
            "type": "string"
          },
          "cloudRouterIpv6InterfaceId": {
            "description": "This field is not available.",
            "type": "string"
          },
          "configurationConstraints": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentConfigurationConstraintsResponse",
            "description": "Constraints for this attachment, if any. The attachment does not work if these constraints are not met."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customerRouterIpAddress": {
            "description": "IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
            "type": "string"
          },
          "customerRouterIpv6Address": {
            "description": "IPv6 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
            "type": "string"
          },
          "customerRouterIpv6InterfaceId": {
            "description": "This field is not available.",
            "type": "string"
          },
          "dataplaneVersion": {
            "description": "Dataplane version for this InterconnectAttachment. This field is only present for Dataplane version 2 and higher. Absence of this field in the API output indicates that the Dataplane is version 1.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "edgeAvailabilityDomain": {
            "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: - AVAILABILITY_DOMAIN_ANY - AVAILABILITY_DOMAIN_1 - AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
            "type": "string"
          },
          "encryption": {
            "description": "Indicates the user-supplied encryption option of this VLAN attachment (interconnectAttachment). Can only be specified at attachment creation for PARTNER or DEDICATED attachments. Possible values are: - NONE - This is the default value, which means that the VLAN attachment carries unencrypted traffic. VMs are able to send traffic to, or receive traffic from, such a VLAN attachment. - IPSEC - The VLAN attachment carries only encrypted traffic that is encrypted by an IPsec device, such as an HA VPN gateway or third-party IPsec VPN. VMs cannot directly send traffic to, or receive traffic from, such a VLAN attachment. To use *HA VPN over Cloud Interconnect*, the VLAN attachment must be created with this option. ",
            "type": "string"
          },
          "googleReferenceId": {
            "deprecationMessage": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
            "description": "Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues. [Deprecated] This field is not used.",
            "type": "string"
          },
          "interconnect": {
            "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through.",
            "type": "string"
          },
          "ipsecInternalAddresses": {
            "description": "A list of URLs of addresses that have been reserved for the VLAN attachment. Used only for the VLAN attachment that has the encryption option as IPSEC. The addresses must be regional internal IP address ranges. When creating an HA VPN gateway over the VLAN attachment, if the attachment is configured to use a regional internal IP address, then the VPN gateway's IP address is allocated from the IP address range specified here. For example, if the HA VPN gateway's interface 0 is paired to this VLAN attachment, then a regional internal IP address for the VPN gateway interface 0 will be allocated from the IP address specified for this VLAN attachment. If this field is not specified when creating the VLAN attachment, then later on when creating an HA VPN gateway on this VLAN attachment, the HA VPN gateway's IP address is allocated from the regional external IP address pool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "mtu": {
            "description": "Maximum Transmission Unit (MTU), in bytes, of packets passing through this interconnect attachment. Only 1440 and 1500 are allowed. If not specified, the value will default to 1440.",
            "type": "integer"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "operationalStatus": {
            "description": "The current status of whether or not this interconnect attachment is functional, which can take one of the following values: - OS_ACTIVE: The attachment has been turned up and is ready to use. - OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. ",
            "type": "string"
          },
          "pairingKey": {
            "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. The opaque identifier of a PARTNER attachment used to initiate provisioning with a selected partner. Of the form \"XXXXX/region/domain\"",
            "type": "string"
          },
          "partnerAsn": {
            "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
            "type": "string"
          },
          "partnerMetadata": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentPartnerMetadataResponse",
            "description": "Informational metadata about Partner attachments from Partners to display to customers. Output only for PARTNER type, mutable for PARTNER_PROVIDER, not available for DEDICATED."
          },
          "privateInterconnectInfo": {
            "$ref": "#/types/google-native:compute%2Fv1:InterconnectAttachmentPrivateInfoResponse",
            "description": "Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
          },
          "region": {
            "description": "URL of the region where the regional interconnect attachment resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "remoteService": {
            "description": "If the attachment is on a Cross-Cloud Interconnect connection, this field contains the interconnect's remote location service provider. Example values: \"Amazon Web Services\" \"Microsoft Azure\". The field is set only for attachments on Cross-Cloud Interconnect connections. Its value is copied from the InterconnectRemoteLocation remoteService field.",
            "type": "string"
          },
          "router": {
            "description": "URL of the Cloud Router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network \u0026 region within which the Cloud Router is configured.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for this interconnect attachment to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used. This field can be both set at interconnect attachments creation and update interconnect attachment operations.",
            "type": "string"
          },
          "state": {
            "description": "The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: - ACTIVE: The attachment has been turned up and is ready to use. - UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. - PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. - DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted. ",
            "type": "string"
          },
          "subnetLength": {
            "description": "Length of the IPv4 subnet mask. Allowed values: - 29 (default) - 30 The default value is 29, except for Cross-Cloud Interconnect connections that use an InterconnectRemoteLocation with a constraints.subnetLengthRange.min equal to 30. For example, connections that use an Azure remote location fall into this category. In these cases, the default value is 30, and requesting 29 returns an error. Where both 29 and 30 are allowed, 29 is preferred, because it gives Google Cloud Support more debugging visibility. ",
            "type": "integer"
          },
          "type": {
            "description": "The type of interconnect attachment this is, which can take one of the following values: - DEDICATED: an attachment to a Dedicated Interconnect. - PARTNER: an attachment to a Partner Interconnect, created by the customer. - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner. ",
            "type": "string"
          },
          "vlanTag8021q": {
            "description": "The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4093. Only specified at creation time.",
            "type": "integer"
          }
        },
        "required": [
          "adminEnabled",
          "bandwidth",
          "candidateIpv6Subnets",
          "candidateSubnets",
          "cloudRouterIpAddress",
          "cloudRouterIpv6Address",
          "cloudRouterIpv6InterfaceId",
          "configurationConstraints",
          "creationTimestamp",
          "customerRouterIpAddress",
          "customerRouterIpv6Address",
          "customerRouterIpv6InterfaceId",
          "dataplaneVersion",
          "description",
          "edgeAvailabilityDomain",
          "encryption",
          "googleReferenceId",
          "interconnect",
          "ipsecInternalAddresses",
          "kind",
          "labelFingerprint",
          "labels",
          "mtu",
          "name",
          "operationalStatus",
          "pairingKey",
          "partnerAsn",
          "partnerMetadata",
          "privateInterconnectInfo",
          "region",
          "remoteService",
          "router",
          "satisfiesPzs",
          "selfLink",
          "stackType",
          "state",
          "subnetLength",
          "type",
          "vlanTag8021q"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getLicense": {
      "description": "Returns the specified License resource. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "inputs": {
        "properties": {
          "license": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "license"
        ]
      },
      "outputs": {
        "properties": {
          "chargesUseFee": {
            "deprecationMessage": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee.",
            "description": "Deprecated. This field no longer reflects whether a license charges a usage fee.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#license for licenses.",
            "type": "string"
          },
          "licenseCode": {
            "description": "The unique code used to attach this license to images, snapshots, and disks.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long and comply with RFC1035.",
            "type": "string"
          },
          "resourceRequirements": {
            "$ref": "#/types/google-native:compute%2Fv1:LicenseResourceRequirementsResponse"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "transferable": {
            "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk.",
            "type": "boolean"
          }
        },
        "required": [
          "chargesUseFee",
          "creationTimestamp",
          "description",
          "kind",
          "licenseCode",
          "name",
          "resourceRequirements",
          "selfLink",
          "transferable"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getLicenseIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists. *Caution* This resource is intended for use only by third-party partners who are creating Cloud Marketplace images. ",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getMachineImage": {
      "description": "Returns the specified machine image.",
      "inputs": {
        "properties": {
          "machineImage": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "machineImage"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this machine image in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "guestFlush": {
            "description": "[Input Only] Whether to attempt an application consistent machine image by informing the OS to prepare for the snapshot process.",
            "type": "boolean"
          },
          "instanceProperties": {
            "$ref": "#/types/google-native:compute%2Fv1:InstancePropertiesResponse",
            "description": "Properties of source instance"
          },
          "kind": {
            "description": "The resource type, which is always compute#machineImage for machine image.",
            "type": "string"
          },
          "machineImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request. Customer-supplied encryption keys do not protect access to metadata of the machine image. If you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "savedDisks": {
            "description": "An array of Machine Image specific properties for disks attached to the source instance",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:SavedDiskResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "The URL for this machine image. The server defines this URL.",
            "type": "string"
          },
          "sourceDiskEncryptionKeys": {
            "description": "[Input Only] The customer-supplied encryption key of the disks attached to the source instance. Required if the source disk is protected by a customer-supplied encryption key.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:SourceDiskEncryptionKeyResponse"
            },
            "type": "array"
          },
          "sourceInstance": {
            "description": "The source instance used to create the machine image. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceProperties": {
            "$ref": "#/types/google-native:compute%2Fv1:SourceInstancePropertiesResponse",
            "description": "DEPRECATED: Please use instance_properties instead for source instance related properties. New properties will not be added to this field."
          },
          "status": {
            "description": "The status of the machine image. One of the following values: INVALID, CREATING, READY, DELETING, and UPLOADING.",
            "type": "string"
          },
          "storageLocations": {
            "description": "The regional or multi-regional Cloud Storage bucket location where the machine image is stored.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "totalStorageBytes": {
            "description": "Total size of the storage used by the machine image.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "guestFlush",
          "instanceProperties",
          "kind",
          "machineImageEncryptionKey",
          "name",
          "satisfiesPzs",
          "savedDisks",
          "selfLink",
          "sourceDiskEncryptionKeys",
          "sourceInstance",
          "sourceInstanceProperties",
          "status",
          "storageLocations",
          "totalStorageBytes"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getMachineImageIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNetwork": {
      "description": "Returns the specified network.",
      "inputs": {
        "properties": {
          "network": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "network"
        ]
      },
      "outputs": {
        "properties": {
          "autoCreateSubnetworks": {
            "description": "Must be set to create a VPC network. If not set, a legacy network is created. When set to true, the VPC network is created in auto mode. When set to false, the VPC network is created in custom mode. An auto mode VPC network starts with one subnet per region. Each subnet has a predetermined range as described in Auto mode VPC network IP ranges. For custom mode VPC networks, you can add subnets using the subnetworks insert method.",
            "type": "boolean"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "enableUlaInternalIpv6": {
            "description": "Enable ULA internal ipv6 on this network. Enabling this feature will assign a /48 from google defined ULA prefix fd20::/20. .",
            "type": "boolean"
          },
          "firewallPolicy": {
            "description": "URL of the firewall policy the network is associated with.",
            "type": "string"
          },
          "gatewayIPv4": {
            "description": "The gateway address for default routing out of the network, selected by Google Cloud.",
            "type": "string"
          },
          "internalIpv6Range": {
            "description": "When enabling ula internal ipv6, caller optionally can specify the /48 range they want from the google defined ULA prefix fd20::/20. The input must be a valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will fail if the speficied /48 is already in used by another resource. If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field. .",
            "type": "string"
          },
          "ipv4Range": {
            "deprecationMessage": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
            "description": "Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#network for networks.",
            "type": "string"
          },
          "mtu": {
            "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1300 and the maximum value is 8896. The suggested value is 1500, which is the default MTU used on the Internet, or 8896 if you want to use Jumbo frames. If unspecified, the value defaults to 1460.",
            "type": "integer"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "networkFirewallPolicyEnforcementOrder": {
            "description": "The network firewall policy enforcement order. Can be either AFTER_CLASSIC_FIREWALL or BEFORE_CLASSIC_FIREWALL. Defaults to AFTER_CLASSIC_FIREWALL if the field is not specified.",
            "type": "string"
          },
          "peerings": {
            "description": "A list of network peerings for the resource.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:NetworkPeeringResponse"
            },
            "type": "array"
          },
          "routingConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkRoutingConfigResponse",
            "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "subnetworks": {
            "description": "Server-defined fully-qualified URLs for all subnetworks in this VPC network.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "autoCreateSubnetworks",
          "creationTimestamp",
          "description",
          "enableUlaInternalIpv6",
          "firewallPolicy",
          "gatewayIPv4",
          "internalIpv6Range",
          "ipv4Range",
          "kind",
          "mtu",
          "name",
          "networkFirewallPolicyEnforcementOrder",
          "peerings",
          "routingConfig",
          "selfLink",
          "selfLinkWithId",
          "subnetworks"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNetworkAttachment": {
      "description": "Returns the specified NetworkAttachment resource in the given scope.",
      "inputs": {
        "properties": {
          "networkAttachment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkAttachment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "connectionEndpoints": {
            "description": "An array of connections for all the producers connected to this network attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:NetworkAttachmentConnectedEndpointResponse"
            },
            "type": "array"
          },
          "connectionPreference": {
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. An up-to-date fingerprint must be provided in order to patch.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network which the Network Attachment belongs to. Practically it is inferred by fetching the network of the first subnetwork associated. Because it is required that all the subnetworks must be from the same network, it is assured that the Network Attachment belongs to the same network as all the subnetworks.",
            "type": "string"
          },
          "producerAcceptLists": {
            "description": "Projects that are allowed to connect to this network attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "producerRejectLists": {
            "description": "Projects that are not allowed to connect to this network attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the network attachment resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource's resource id.",
            "type": "string"
          },
          "subnetworks": {
            "description": "An array of URLs where each entry is the URL of a subnet provided by the service consumer to use for endpoints in the producers that connect to this network attachment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "connectionEndpoints",
          "connectionPreference",
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "network",
          "producerAcceptLists",
          "producerRejectLists",
          "region",
          "selfLink",
          "selfLinkWithId",
          "subnetworks"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNetworkAttachmentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNetworkEdgeSecurityService": {
      "description": "Gets a specified NetworkEdgeSecurityService.",
      "inputs": {
        "properties": {
          "networkEdgeSecurityService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEdgeSecurityService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a NetworkEdgeSecurityService. An up-to-date fingerprint must be provided in order to update the NetworkEdgeSecurityService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a NetworkEdgeSecurityService.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#networkEdgeSecurityService for NetworkEdgeSecurityServices",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the resource resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the network edge security service associated with this network edge security service.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "region",
          "securityPolicy",
          "selfLink",
          "selfLinkWithId"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNetworkFirewallPolicy": {
      "description": "Returns the specified network firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNetworkFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNodeGroup": {
      "description": "Returns the specified NodeGroup. Get a list of available NodeGroups by making a list() request. Note: the \"nodes\" field should not be used. Use nodeGroups.listNodes instead.",
      "inputs": {
        "properties": {
          "nodeGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "nodeGroup",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:NodeGroupAutoscalingPolicyResponse",
            "description": "Specifies how autoscaling should behave."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "type": "string"
          },
          "kind": {
            "description": "The type of the resource. Always compute#nodeGroup for node group.",
            "type": "string"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the Node close to other resources. This field is for use by internal tools that use the public API. The location hint here on the NodeGroup overrides any location_hint present in the NodeTemplate.",
            "type": "string"
          },
          "maintenancePolicy": {
            "description": "Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT. For more information, see Maintenance policies.",
            "type": "string"
          },
          "maintenanceWindow": {
            "$ref": "#/types/google-native:compute%2Fv1:NodeGroupMaintenanceWindowResponse"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nodeTemplate": {
            "description": "URL of the node template to create the node group from.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "shareSettings": {
            "$ref": "#/types/google-native:compute%2Fv1:ShareSettingsResponse",
            "description": "Share-settings for the node group"
          },
          "size": {
            "description": "The total number of nodes in the node group.",
            "type": "integer"
          },
          "status": {
            "type": "string"
          },
          "zone": {
            "description": "The name of the zone where the node group resides, such as us-central1-a.",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "locationHint",
          "maintenancePolicy",
          "maintenanceWindow",
          "name",
          "nodeTemplate",
          "selfLink",
          "shareSettings",
          "size",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNodeGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNodeTemplate": {
      "description": "Returns the specified node template.",
      "inputs": {
        "properties": {
          "nodeTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "nodeTemplate",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "accelerators": {
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AcceleratorConfigResponse"
            },
            "type": "array"
          },
          "cpuOvercommitType": {
            "description": "CPU overcommit.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "disks": {
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:LocalDiskResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "The type of the resource. Always compute#nodeTemplate for node templates.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nodeAffinityLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to use for node affinity, which will be used in instance scheduling.",
            "type": "object"
          },
          "nodeType": {
            "description": "The node type to use for nodes group that are created from this template.",
            "type": "string"
          },
          "nodeTypeFlexibility": {
            "$ref": "#/types/google-native:compute%2Fv1:NodeTemplateNodeTypeFlexibilityResponse",
            "description": "Do not use. Instead, use the node_type property."
          },
          "region": {
            "description": "The name of the region where the node template resides, such as us-central1.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverBinding": {
            "$ref": "#/types/google-native:compute%2Fv1:ServerBindingResponse",
            "description": "Sets the binding properties for the physical server. Valid values include: - *[Default]* RESTART_NODE_ON_ANY_SERVER: Restarts VMs on any available physical server - RESTART_NODE_ON_MINIMAL_SERVER: Restarts VMs on the same physical server whenever possible See Sole-tenant node options for more information."
          },
          "status": {
            "description": "The status of the node template. One of the following values: CREATING, READY, and DELETING.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          }
        },
        "required": [
          "accelerators",
          "cpuOvercommitType",
          "creationTimestamp",
          "description",
          "disks",
          "kind",
          "name",
          "nodeAffinityLabels",
          "nodeType",
          "nodeTypeFlexibility",
          "region",
          "selfLink",
          "serverBinding",
          "status",
          "statusMessage"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getNodeTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getPacketMirroring": {
      "description": "Returns the specified PacketMirroring resource.",
      "inputs": {
        "properties": {
          "packetMirroring": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "packetMirroring",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "collectorIlb": {
            "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringForwardingRuleInfoResponse",
            "description": "The Forwarding Rule resource of type loadBalancingScheme=INTERNAL that will be used as collector for mirrored traffic. The specified forwarding rule must have isMirroringCollector set to true."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enable": {
            "description": "Indicates whether or not this packet mirroring takes effect. If set to FALSE, this packet mirroring policy will not be enforced on the network. The default is TRUE.",
            "type": "string"
          },
          "filter": {
            "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringFilterResponse",
            "description": "Filter for mirrored traffic. If unspecified, all traffic is mirrored."
          },
          "kind": {
            "description": "Type of the resource. Always compute#packetMirroring for packet mirrorings.",
            "type": "string"
          },
          "mirroredResources": {
            "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringMirroredResourceInfoResponse",
            "description": "PacketMirroring mirroredResourceInfos. MirroredResourceInfo specifies a set of mirrored VM instances, subnetworks and/or tags for which traffic from/to all VM instances will be mirrored."
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "$ref": "#/types/google-native:compute%2Fv1:PacketMirroringNetworkInfoResponse",
            "description": "Specifies the mirrored VPC network. Only packets in this network will be mirrored. All mirrored VMs should have a NIC in the given network. All mirrored subnetworks should belong to the given network."
          },
          "priority": {
            "description": "The priority of applying this configuration. Priority is used to break ties in cases where there is more than one matching rule. In the case of two rules that apply for a given Instance, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
            "type": "integer"
          },
          "region": {
            "description": "URI of the region where the packetMirroring resides.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "collectorIlb",
          "creationTimestamp",
          "description",
          "enable",
          "filter",
          "kind",
          "mirroredResources",
          "name",
          "network",
          "priority",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getPublicAdvertisedPrefix": {
      "description": "Returns the specified PublicAdvertisedPrefix resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicAdvertisedPrefix": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicAdvertisedPrefix"
        ]
      },
      "outputs": {
        "properties": {
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "dnsVerificationIp": {
            "description": "The address to be used for reverse DNS verification.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicAdvertisedPrefix. An up-to-date fingerprint must be provided in order to update the PublicAdvertisedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicAdvertisedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The address range, in CIDR format, represented by this public advertised prefix.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicAdvertisedPrefix for public advertised prefixes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pdpScope": {
            "description": "Specifies how child public delegated prefix will be scoped. It could be one of following values: - `REGIONAL`: The public delegated prefix is regional only. The provisioning will take a few minutes. - `GLOBAL`: The public delegated prefix is global only. The provisioning will take ~4 weeks. - `GLOBAL_AND_REGIONAL` [output only]: The public delegated prefixes is BYOIP V1 legacy prefix. This is output only value and no longer supported in BYOIP V2. ",
            "type": "string"
          },
          "publicDelegatedPrefixs": {
            "description": "The list of public delegated prefixes that exist for this public advertised prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:PublicAdvertisedPrefixPublicDelegatedPrefixResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sharedSecret": {
            "description": "The shared secret to be used for reverse DNS verification.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public advertised prefix. Possible values include: - `INITIAL`: RPKI validation is complete. - `PTR_CONFIGURED`: User has configured the PTR. - `VALIDATED`: Reverse DNS lookup is successful. - `REVERSE_DNS_LOOKUP_FAILED`: Reverse DNS lookup failed. - `PREFIX_CONFIGURATION_IN_PROGRESS`: The prefix is being configured. - `PREFIX_CONFIGURATION_COMPLETE`: The prefix is fully configured. - `PREFIX_REMOVAL_IN_PROGRESS`: The prefix is being removed. ",
            "type": "string"
          }
        },
        "required": [
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "dnsVerificationIp",
          "fingerprint",
          "ipCidrRange",
          "kind",
          "name",
          "pdpScope",
          "publicDelegatedPrefixs",
          "selfLink",
          "sharedSecret",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getPublicDelegatedPrefix": {
      "description": "Returns the specified PublicDelegatedPrefix resource in the given region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "publicDelegatedPrefix": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "publicDelegatedPrefix",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "byoipApiVersion": {
            "description": "The version of BYOIP API.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a new PublicDelegatedPrefix. An up-to-date fingerprint must be provided in order to update the PublicDelegatedPrefix, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a PublicDelegatedPrefix.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The IP address range, in CIDR format, represented by this public delegated prefix.",
            "type": "string"
          },
          "isLiveMigration": {
            "description": "If true, the prefix will be live migrated.",
            "type": "boolean"
          },
          "kind": {
            "description": "Type of the resource. Always compute#publicDelegatedPrefix for public delegated prefixes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "parentPrefix": {
            "description": "The URL of parent prefix. Either PublicAdvertisedPrefix or PublicDelegatedPrefix.",
            "type": "string"
          },
          "publicDelegatedSubPrefixs": {
            "description": "The list of sub public delegated prefixes that exist for this public delegated prefix.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:PublicDelegatedPrefixPublicDelegatedSubPrefixResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the public delegated prefix resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the public delegated prefix, which can be one of following values: - `INITIALIZING` The public delegated prefix is being initialized and addresses cannot be created yet. - `READY_TO_ANNOUNCE` The public delegated prefix is a live migration prefix and is active. - `ANNOUNCED` The public delegated prefix is active. - `DELETING` The public delegated prefix is being deprovsioned. ",
            "type": "string"
          }
        },
        "required": [
          "byoipApiVersion",
          "creationTimestamp",
          "description",
          "fingerprint",
          "ipCidrRange",
          "isLiveMigration",
          "kind",
          "name",
          "parentPrefix",
          "publicDelegatedSubPrefixs",
          "region",
          "selfLink",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionAutoscaler": {
      "description": "Returns the specified autoscaler.",
      "inputs": {
        "properties": {
          "autoscaler": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscaler",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:AutoscalingPolicyResponse",
            "description": "The configuration parameters for the autoscaling algorithm. You can define one or more signals for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization. If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#autoscaler for autoscalers.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "recommendedSize": {
            "description": "Target recommended MIG size (number of instances) computed by autoscaler. Autoscaler calculates the recommended MIG size even when the autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to an existing managed instance group or autoscaler did not generate its prediction.",
            "type": "integer"
          },
          "region": {
            "description": "URL of the region where the instance group resides (for autoscalers living in regional scope).",
            "type": "string"
          },
          "scalingScheduleStatus": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Status information of existing scaling schedules.",
            "type": "object"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the autoscaler configuration. Current set of possible values: - PENDING: Autoscaler backend hasn't read new/updated configuration. - DELETING: Configuration is being deleted. - ACTIVE: Configuration is acknowledged to be effective. Some warnings might be present in the statusDetails field. - ERROR: Configuration has errors. Actionable for users. Details are present in the statusDetails field. New values might be added in the future.",
            "type": "string"
          },
          "statusDetails": {
            "description": "Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AutoscalerStatusDetailsResponse"
            },
            "type": "array"
          },
          "target": {
            "description": "URL of the managed instance group that this autoscaler will scale. This field is required when creating an autoscaler.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
            "type": "string"
          }
        },
        "required": [
          "autoscalingPolicy",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "recommendedSize",
          "region",
          "scalingScheduleStatus",
          "selfLink",
          "status",
          "statusDetails",
          "target",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionBackendService": {
      "description": "Returns the specified regional BackendService resource.",
      "inputs": {
        "properties": {
          "backendService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backendService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "affinityCookieTtlSec": {
            "description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "integer"
          },
          "backends": {
            "description": "The list of backends that serve this BackendService.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BackendResponse"
            },
            "type": "array"
          },
          "cdnPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceCdnPolicyResponse",
            "description": "Cloud CDN configuration for this BackendService. Only available for specified load balancer types."
          },
          "circuitBreakers": {
            "$ref": "#/types/google-native:compute%2Fv1:CircuitBreakersResponse"
          },
          "compressionMode": {
            "description": "Compress text responses using Brotli or gzip compression, based on the client's Accept-Encoding header.",
            "type": "string"
          },
          "connectionDraining": {
            "$ref": "#/types/google-native:compute%2Fv1:ConnectionDrainingResponse"
          },
          "connectionTrackingPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceConnectionTrackingPolicyResponse",
            "description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
          },
          "consistentHash": {
            "$ref": "#/types/google-native:compute%2Fv1:ConsistentHashLoadBalancerSettingsResponse",
            "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH. This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED. "
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customRequestHeaders": {
            "description": "Headers that the load balancer adds to proxied requests. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "customResponseHeaders": {
            "description": "Headers that the load balancer adds to proxied responses. See [Creating custom headers](https://cloud.google.com/load-balancing/docs/custom-headers).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "edgeSecurityPolicy": {
            "description": "The resource URL for the edge security policy associated with this backend service.",
            "type": "string"
          },
          "enableCDN": {
            "description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
            "type": "boolean"
          },
          "failoverPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceFailoverPolicyResponse",
            "description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "iap": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceIAPResponse",
            "description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
          },
          "kind": {
            "description": "Type of resource. Always compute#backendService for backend services.",
            "type": "string"
          },
          "loadBalancingScheme": {
            "description": "Specifies the load balancer type. A backend service created for one type of load balancer cannot be used with another. For more information, refer to Choosing a load balancer.",
            "type": "string"
          },
          "localityLbPolicies": {
            "description": "A list of locality load-balancing policies to be used in order of preference. When you use localityLbPolicies, you must set at least one value for either the localityLbPolicies[].policy or the localityLbPolicies[].customPolicy field. localityLbPolicies overrides any value set in the localityLbPolicy field. For an example of how to use this field, see Define a list of preferred policies. Caution: This field and its children are intended for use in a service mesh that includes gRPC clients only. Envoy proxies can't use backend services that have this configuration.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLocalityLoadBalancingPolicyConfigResponse"
            },
            "type": "array"
          },
          "localityLbPolicy": {
            "description": "The load balancing algorithm used within the scope of the locality. The possible values are: - ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. - LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. - RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. - RANDOM: The load balancer selects a random healthy host. - ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. - MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, see https://ai.google/research/pubs/pub44824 This field is applicable to either: - A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. - A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED, INTERNAL_MANAGED, or EXTERNAL_MANAGED. If sessionAffinity is not NONE, and this field is not set to MAGLEV or RING_HASH, session affinity settings will not take effect. Only ROUND_ROBIN and RING_HASH are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:BackendServiceLogConfigResponse",
            "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
          },
          "maxStreamDuration": {
            "$ref": "#/types/google-native:compute%2Fv1:DurationResponse",
            "description": "Specifies the default maximum duration (timeout) for streams to this service. Duration is computed from the beginning of the stream until the response has been completely processed, including all retries. A stream that does not complete in this duration is closed. If not specified, there will be no timeout limit, i.e. the maximum duration is infinite. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. This field is only allowed when the loadBalancingScheme of the backend service is INTERNAL_SELF_MANAGED."
          },
          "metadatas": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Deployment metadata associated with the resource to be set by a GKE hub controller and read by the backend RCTH",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this backend service belongs. This field can only be specified when the load balancing scheme is set to INTERNAL.",
            "type": "string"
          },
          "outlierDetection": {
            "$ref": "#/types/google-native:compute%2Fv1:OutlierDetectionResponse",
            "description": "Settings controlling the ejection of unhealthy backend endpoints from the load balancing pool of each individual proxy instance that processes the traffic for the given backend service. If not set, this feature is considered disabled. Results of the outlier detection algorithm (ejection of endpoints from the load balancing pool and returning them back to the pool) are executed independently by each proxy instance of the load balancer. In most cases, more than one proxy instance handles the traffic received by a backend service. Thus, it is possible that an unhealthy endpoint is detected and ejected by only some of the proxies, and while this happens, other proxies may continue to send requests to the same unhealthy endpoint until they detect and eject the unhealthy endpoint. Applicable backend endpoints can be: - VM instances in an Instance Group - Endpoints in a Zonal NEG (GCE_VM_IP, GCE_VM_IP_PORT) - Endpoints in a Hybrid Connectivity NEG (NON_GCP_PRIVATE_IP_PORT) - Serverless NEGs, that resolve to Cloud Run, App Engine, or Cloud Functions Services - Private Service Connect NEGs, that resolve to Google-managed regional API endpoints or managed services published using Private Service Connect Applicable backend service types can be: - A global backend service with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL_MANAGED. - A regional backend service with the serviceProtocol set to HTTP, HTTPS, or HTTP2, and loadBalancingScheme set to INTERNAL_MANAGED or EXTERNAL_MANAGED. Not supported for Serverless NEGs. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true."
          },
          "port": {
            "deprecationMessage": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
            "type": "integer"
          },
          "portName": {
            "description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
            "type": "string"
          },
          "protocol": {
            "description": "The protocol this BackendService uses to communicate with backends. Possible values are HTTP, HTTPS, HTTP2, TCP, SSL, UDP or GRPC. depending on the chosen load balancer or Traffic Director configuration. Refer to the documentation for the load balancers or for Traffic Director for more information. Must be set to GRPC when the backend service is referenced by a URL map that is bound to target gRPC proxy.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this backend service.",
            "type": "string"
          },
          "securitySettings": {
            "$ref": "#/types/google-native:compute%2Fv1:SecuritySettingsResponse",
            "description": "This field specifies the security settings that apply to this backend service. This field is applicable to a global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serviceBindings": {
            "description": "URLs of networkservices.ServiceBinding resources. Can only be set if load balancing scheme is INTERNAL_SELF_MANAGED. If set, lists of backends and health checks must be both empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sessionAffinity": {
            "description": "Type of session affinity to use. The default is NONE. Only NONE and HEADER_FIELD are supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. For more details, see: [Session Affinity](https://cloud.google.com/load-balancing/docs/backend-service#session_affinity).",
            "type": "string"
          },
          "subsetting": {
            "$ref": "#/types/google-native:compute%2Fv1:SubsettingResponse"
          },
          "timeoutSec": {
            "description": "The backend service timeout has a different meaning depending on the type of load balancer. For more information see, Backend service settings. The default is 30 seconds. The full range of timeout values allowed goes from 1 through 2,147,483,647 seconds. This value can be overridden in the PathMatcher configuration of the UrlMap that references this backend service. Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true. Instead, use maxStreamDuration.",
            "type": "integer"
          },
          "usedBy": {
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BackendServiceUsedByResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "affinityCookieTtlSec",
          "backends",
          "cdnPolicy",
          "circuitBreakers",
          "compressionMode",
          "connectionDraining",
          "connectionTrackingPolicy",
          "consistentHash",
          "creationTimestamp",
          "customRequestHeaders",
          "customResponseHeaders",
          "description",
          "edgeSecurityPolicy",
          "enableCDN",
          "failoverPolicy",
          "fingerprint",
          "healthChecks",
          "iap",
          "kind",
          "loadBalancingScheme",
          "localityLbPolicies",
          "localityLbPolicy",
          "logConfig",
          "maxStreamDuration",
          "metadatas",
          "name",
          "network",
          "outlierDetection",
          "port",
          "portName",
          "protocol",
          "region",
          "securityPolicy",
          "securitySettings",
          "selfLink",
          "serviceBindings",
          "sessionAffinity",
          "subsetting",
          "timeoutSec",
          "usedBy"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionBackendServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionCommitment": {
      "description": "Returns the specified commitment resource.",
      "inputs": {
        "properties": {
          "commitment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "commitment",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "autoRenew": {
            "description": "Specifies whether to enable automatic renewal for the commitment. The default value is false if not specified. The field can be updated until the day of the commitment expiration at 12:00am PST. If the field is set to true, the commitment will be automatically renewed for either one or three years according to the terms of the existing commitment.",
            "type": "boolean"
          },
          "category": {
            "description": "The category of the commitment. Category MACHINE specifies commitments composed of machine resources such as VCPU or MEMORY, listed in resources. Category LICENSE specifies commitments composed of software licenses, listed in licenseResources. Note that only MACHINE commitments should have a Type specified.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "endTimestamp": {
            "description": "Commitment end time in RFC3339 text format.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#commitment for commitments.",
            "type": "string"
          },
          "licenseResource": {
            "$ref": "#/types/google-native:compute%2Fv1:LicenseResourceCommitmentResponse",
            "description": "The license specification required as part of a license commitment."
          },
          "mergeSourceCommitments": {
            "description": "List of source commitments to be merged into a new commitment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "plan": {
            "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where this commitment may be used.",
            "type": "string"
          },
          "reservations": {
            "description": "List of create-on-create reseravtions for this commitment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:ReservationResponse"
            },
            "type": "array"
          },
          "resources": {
            "description": "A list of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:ResourceCommitmentResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "splitSourceCommitment": {
            "description": "Source commitment to be split into a new commitment.",
            "type": "string"
          },
          "startTimestamp": {
            "description": "Commitment start time in RFC3339 text format.",
            "type": "string"
          },
          "status": {
            "description": "Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
            "type": "string"
          },
          "statusMessage": {
            "description": "An optional, human-readable explanation of the status.",
            "type": "string"
          },
          "type": {
            "description": "The type of commitment, which affects the discount rate and the eligible resources. Type MEMORY_OPTIMIZED specifies a commitment that will only apply to memory optimized machines. Type ACCELERATOR_OPTIMIZED specifies a commitment that will only apply to accelerator optimized machines.",
            "type": "string"
          }
        },
        "required": [
          "autoRenew",
          "category",
          "creationTimestamp",
          "description",
          "endTimestamp",
          "kind",
          "licenseResource",
          "mergeSourceCommitments",
          "name",
          "plan",
          "region",
          "reservations",
          "resources",
          "selfLink",
          "splitSourceCommitment",
          "startTimestamp",
          "status",
          "statusMessage",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionDisk": {
      "description": "Returns a specified regional persistent disk.",
      "inputs": {
        "properties": {
          "disk": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "disk",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the disk. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "asyncPrimaryDisk": {
            "$ref": "#/types/google-native:compute%2Fv1:DiskAsyncReplicationResponse",
            "description": "Disk asynchronously replicated into this disk."
          },
          "asyncSecondaryDisks": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A list of disks this disk is asynchronously replicated to.",
            "type": "object"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#disk for disks.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a disk.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "lastAttachTimestamp": {
            "description": "Last attach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "lastDetachTimestamp": {
            "description": "Last detach timestamp in RFC3339 text format.",
            "type": "string"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this disk.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of publicly visible licenses. Reserved for Google's use.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the disk close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "options": {
            "description": "Internal use only.",
            "type": "string"
          },
          "params": {
            "$ref": "#/types/google-native:compute%2Fv1:DiskParamsResponse",
            "description": "Input only. [Input Only] Additional params passed with the request, but not persisted as part of resource payload."
          },
          "physicalBlockSizeBytes": {
            "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. The currently supported size is 4096, other sizes may be added in the future. If an unsupported value is requested, the error message will list the supported values for the caller's project.",
            "type": "string"
          },
          "provisionedIops": {
            "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. Values must be between 10,000 and 120,000. For more details, see the Extreme persistent disk documentation.",
            "type": "string"
          },
          "provisionedThroughput": {
            "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle. Values must be between 1 and 7,124.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "replicaZones": {
            "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourcePolicies": {
            "description": "Resource policies applied to this disk for automatic snapshot creations.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fv1:DiskResourceStatusResponse",
            "description": "Status information for the disk resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "sizeGb": {
            "description": "Size, in GB, of the persistent disk. You can specify this field when creating a persistent disk using the sourceImage, sourceSnapshot, or sourceDisk parameter, or specify it alone to create an empty persistent disk. If you specify this field along with a source, the value of sizeGb must not be less than the size of the source. Acceptable values are greater than 0.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicy": {
            "description": "URL of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceConsistencyGroupPolicyId": {
            "description": "ID of the DiskConsistencyGroupPolicy for a secondary disk that was created using a consistency group.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /disks/disk - https://www.googleapis.com/compute/v1/projects/project/regions/region /disks/disk - projects/project/zones/zone/disks/disk - projects/project/regions/region/disks/disk - zones/zone/disks/disk - regions/region/disks/disk ",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The unique ID of the disk used to create this disk. This value identifies the exact disk that was used to create this persistent disk. For example, if you created the persistent disk from a disk that was later deleted and recreated under the same name, the source disk ID would identify the exact version of the disk that was used.",
            "type": "string"
          },
          "sourceImage": {
            "description": "The source image used to create this disk. If the source image is deleted, this field will not be set. To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-9 to use the latest Debian 9 image: projects/debian-cloud/global/images/family/debian-9 Alternatively, use a specific version of a public operating system image: projects/debian-cloud/global/images/debian-9-stretch-vYYYYMMDD To create a disk with a custom image that you created, specify the image name in the following format: global/images/my-custom-image You can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name: global/images/family/my-image-family ",
            "type": "string"
          },
          "sourceImageEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
          },
          "sourceImageId": {
            "description": "The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
            "type": "string"
          },
          "sourceSnapshot": {
            "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project /global/snapshots/snapshot - projects/project/global/snapshots/snapshot - global/snapshots/snapshot ",
            "type": "string"
          },
          "sourceSnapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
          },
          "sourceSnapshotId": {
            "description": "The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
            "type": "string"
          },
          "sourceStorageObject": {
            "description": "The full Google Cloud Storage URI where the disk image is stored. This file must be a gzip-compressed tarball whose name ends in .tar.gz or virtual machine disk whose name ends in vmdk. Valid URIs may start with gs:// or https://storage.googleapis.com/. This flag is not optimized for creating multiple disks from a source storage object. To create many disks from a source storage object, use gcloud compute images import instead.",
            "type": "string"
          },
          "status": {
            "description": "The status of disk creation. - CREATING: Disk is provisioning. - RESTORING: Source data is being copied into the disk. - FAILED: Disk creation failed. - READY: Disk is ready for use. - DELETING: Disk is deleting. ",
            "type": "string"
          },
          "type": {
            "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project /zones/zone/diskTypes/pd-ssd . See Persistent disk types.",
            "type": "string"
          },
          "users": {
            "description": "Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "zone": {
            "description": "URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "architecture",
          "asyncPrimaryDisk",
          "asyncSecondaryDisks",
          "creationTimestamp",
          "description",
          "diskEncryptionKey",
          "guestOsFeatures",
          "kind",
          "labelFingerprint",
          "labels",
          "lastAttachTimestamp",
          "lastDetachTimestamp",
          "licenseCodes",
          "licenses",
          "locationHint",
          "name",
          "options",
          "params",
          "physicalBlockSizeBytes",
          "provisionedIops",
          "provisionedThroughput",
          "region",
          "replicaZones",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "sizeGb",
          "sourceConsistencyGroupPolicy",
          "sourceConsistencyGroupPolicyId",
          "sourceDisk",
          "sourceDiskId",
          "sourceImage",
          "sourceImageEncryptionKey",
          "sourceImageId",
          "sourceSnapshot",
          "sourceSnapshotEncryptionKey",
          "sourceSnapshotId",
          "sourceStorageObject",
          "status",
          "type",
          "users",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionDiskIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionHealthCheck": {
      "description": "Returns the specified HealthCheck resource.",
      "inputs": {
        "properties": {
          "healthCheck": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheck",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "checkIntervalSec": {
            "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
            "type": "integer"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in 3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:GRPCHealthCheckResponse"
          },
          "healthyThreshold": {
            "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
            "type": "integer"
          },
          "http2HealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:HTTP2HealthCheckResponse"
          },
          "httpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:HTTPHealthCheckResponse"
          },
          "httpsHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:HTTPSHealthCheckResponse"
          },
          "kind": {
            "description": "Type of the resource.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:HealthCheckLogConfigResponse",
            "description": "Configure logging on this health check."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. For example, a name that is 1-63 characters long, matches the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`, and otherwise complies with RFC1035. This regular expression describes a name where the first character is a lowercase letter, and all following characters are a dash, lowercase letter, or digit, except the last character, which isn't a dash.",
            "type": "string"
          },
          "region": {
            "description": "Region where the health check resides. Not applicable to global health checks.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sslHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:SSLHealthCheckResponse"
          },
          "tcpHealthCheck": {
            "$ref": "#/types/google-native:compute%2Fv1:TCPHealthCheckResponse"
          },
          "timeoutSec": {
            "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
            "type": "integer"
          },
          "type": {
            "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP, HTTPS, HTTP2 or GRPC. Exactly one of the protocol-specific health check fields must be specified, which must match type field.",
            "type": "string"
          },
          "unhealthyThreshold": {
            "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
            "type": "integer"
          }
        },
        "required": [
          "checkIntervalSec",
          "creationTimestamp",
          "description",
          "grpcHealthCheck",
          "healthyThreshold",
          "http2HealthCheck",
          "httpHealthCheck",
          "httpsHealthCheck",
          "kind",
          "logConfig",
          "name",
          "region",
          "selfLink",
          "sslHealthCheck",
          "tcpHealthCheck",
          "timeoutSec",
          "type",
          "unhealthyThreshold"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionHealthCheckService": {
      "description": "Returns the specified regional HealthCheckService resource.",
      "inputs": {
        "properties": {
          "healthCheckService": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "healthCheckService",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a HealthCheckService. An up-to-date fingerprint must be provided in order to patch/update the HealthCheckService; Otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the HealthCheckService.",
            "type": "string"
          },
          "healthChecks": {
            "description": "A list of URLs to the HealthCheck resources. Must have at least one HealthCheck, and not more than 10 for regional HealthCheckService, and not more than 1 for global HealthCheckService. HealthCheck resources must have portSpecification=USE_SERVING_PORT or portSpecification=USE_FIXED_PORT. For regional HealthCheckService, the HealthCheck must be regional and in the same region. For global HealthCheckService, HealthCheck must be global. Mix of regional and global HealthChecks is not supported. Multiple regional HealthChecks must belong to the same region. Regional HealthChecks must belong to the same region as zones of NetworkEndpointGroups. For global HealthCheckService using global INTERNET_IP_PORT NetworkEndpointGroups, the global HealthChecks must specify sourceRegions, and HealthChecks that specify sourceRegions can only be used with global INTERNET_IP_PORT NetworkEndpointGroups.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "healthStatusAggregationPolicy": {
            "description": "Optional. Policy for how the results from multiple health checks for the same endpoint are aggregated. Defaults to NO_AGGREGATION if unspecified. - NO_AGGREGATION. An EndpointHealth message is returned for each pair in the health check service. - AND. If any health check of an endpoint reports UNHEALTHY, then UNHEALTHY is the HealthState of the endpoint. If all health checks report HEALTHY, the HealthState of the endpoint is HEALTHY. . This is only allowed with regional HealthCheckService.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#healthCheckServicefor health check services.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "networkEndpointGroups": {
            "description": "A list of URLs to the NetworkEndpointGroup resources. Must not have more than 100. For regional HealthCheckService, NEGs must be in zones in the region of the HealthCheckService. For global HealthCheckServices, the NetworkEndpointGroups must be global INTERNET_IP_PORT.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "notificationEndpoints": {
            "description": "A list of URLs to the NotificationEndpoint resources. Must not have more than 10. A list of endpoints for receiving notifications of change in health status. For regional HealthCheckService, NotificationEndpoint must be regional and in the same region. For global HealthCheckService, NotificationEndpoint must be global.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the health check service resides. This field is not applicable to global health check services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "healthChecks",
          "healthStatusAggregationPolicy",
          "kind",
          "name",
          "networkEndpointGroups",
          "notificationEndpoints",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionInstanceGroupManager": {
      "description": "Returns all of the details about the specified managed instance group.",
      "inputs": {
        "properties": {
          "instanceGroupManager": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceGroupManager",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "autoHealingPolicies": {
            "description": "The autohealing policy for this managed instance group. You can specify only one value.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerAutoHealingPolicyResponse"
            },
            "type": "array"
          },
          "baseInstanceName": {
            "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "The creation timestamp for this managed instance group in RFC3339 text format.",
            "type": "string"
          },
          "currentActions": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerActionsSummaryResponse",
            "description": "The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
          },
          "description": {
            "description": "An optional description of this resource.",
            "type": "string"
          },
          "distributionPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:DistributionPolicyResponse",
            "description": "Policy specifying the intended distribution of managed instances across zones in a regional managed instance group."
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. This field may be used in optimistic locking. It will be ignored when inserting an InstanceGroupManager. An up-to-date fingerprint must be provided in order to update the InstanceGroupManager, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an InstanceGroupManager.",
            "type": "string"
          },
          "instanceGroup": {
            "description": "The URL of the Instance Group resource.",
            "type": "string"
          },
          "instanceLifecyclePolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerInstanceLifecyclePolicyResponse",
            "description": "The repair policy for this managed instance group."
          },
          "instanceTemplate": {
            "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group. The templates for existing instances in the group do not change unless you run recreateInstances, run applyUpdatesToInstances, or set the group's updatePolicy.type to PROACTIVE.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceGroupManager for managed instance groups.",
            "type": "string"
          },
          "listManagedInstancesResults": {
            "description": "Pagination behavior of the listManagedInstances API method for this managed instance group.",
            "type": "string"
          },
          "name": {
            "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
            "type": "string"
          },
          "namedPorts": {
            "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:NamedPortResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "The URL of the region where the managed instance group resides (for regional resources).",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this managed instance group. The server defines this URL.",
            "type": "string"
          },
          "statefulPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:StatefulPolicyResponse",
            "description": "Stateful configuration for this Instanced Group Manager"
          },
          "status": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerStatusResponse",
            "description": "The status of this managed instance group."
          },
          "targetPools": {
            "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetSize": {
            "description": "The target number of running instances for this managed instance group. You can reduce this number by using the instanceGroupManager deleteInstances or abandonInstances methods. Resizing the group also changes this number.",
            "type": "integer"
          },
          "updatePolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerUpdatePolicyResponse",
            "description": "The update policy for this managed instance group."
          },
          "versions": {
            "description": "Specifies the instance templates used by this managed instance group to create instances. Each version is defined by an instanceTemplate and a name. Every version can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:InstanceGroupManagerVersionResponse"
            },
            "type": "array"
          },
          "zone": {
            "description": "The URL of a zone where the managed instance group is located (for zonal resources).",
            "type": "string"
          }
        },
        "required": [
          "autoHealingPolicies",
          "baseInstanceName",
          "creationTimestamp",
          "currentActions",
          "description",
          "distributionPolicy",
          "fingerprint",
          "instanceGroup",
          "instanceLifecyclePolicy",
          "instanceTemplate",
          "kind",
          "listManagedInstancesResults",
          "name",
          "namedPorts",
          "region",
          "selfLink",
          "statefulPolicy",
          "status",
          "targetPools",
          "targetSize",
          "updatePolicy",
          "versions",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionInstanceTemplate": {
      "description": "Returns the specified instance template.",
      "inputs": {
        "properties": {
          "instanceTemplate": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceTemplate",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "The creation timestamp for this instance template in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "The resource type, which is always compute#instanceTemplate for instance templates.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/types/google-native:compute%2Fv1:InstancePropertiesResponse",
            "description": "The instance properties for this instance template."
          },
          "region": {
            "description": "URL of the region where the instance template resides. Only applicable for regional resources.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URL for this instance template. The server defines this URL.",
            "type": "string"
          },
          "sourceInstance": {
            "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance ",
            "type": "string"
          },
          "sourceInstanceParams": {
            "$ref": "#/types/google-native:compute%2Fv1:SourceInstanceParamsResponse",
            "description": "The source instance params to use to create this instance template."
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "properties",
          "region",
          "selfLink",
          "sourceInstance",
          "sourceInstanceParams"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionNetworkEndpointGroup": {
      "description": "Returns the specified network endpoint group.",
      "inputs": {
        "properties": {
          "networkEndpointGroup": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkEndpointGroup",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata defined as annotations on the network endpoint group.",
            "type": "object"
          },
          "appEngine": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupAppEngineResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudFunction": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudFunctionResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupCloudRunResponse",
            "description": "Only valid when networkEndpointType is \"SERVERLESS\". Only one of cloudRun, appEngine or cloudFunction may be set."
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultPort": {
            "description": "The default port used if the port number is not specified in the network endpoint.",
            "type": "integer"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
            "type": "string"
          },
          "networkEndpointType": {
            "description": "Type of network endpoints in this network endpoint group. Can be one of GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT, INTERNET_IP_PORT, SERVERLESS, PRIVATE_SERVICE_CONNECT.",
            "type": "string"
          },
          "pscData": {
            "$ref": "#/types/google-native:compute%2Fv1:NetworkEndpointGroupPscDataResponse"
          },
          "pscTargetService": {
            "description": "The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. An example value is: \"asia-northeast3-cloudkms.googleapis.com\"",
            "type": "string"
          },
          "region": {
            "description": "The URL of the region where the network endpoint group is located.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "size": {
            "description": "[Output only] Number of network endpoints in the network endpoint group.",
            "type": "integer"
          },
          "subnetwork": {
            "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
            "type": "string"
          },
          "zone": {
            "description": "The URL of the zone where the network endpoint group is located.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "appEngine",
          "cloudFunction",
          "cloudRun",
          "creationTimestamp",
          "defaultPort",
          "description",
          "kind",
          "name",
          "network",
          "networkEndpointType",
          "pscData",
          "pscTargetService",
          "region",
          "selfLink",
          "size",
          "subnetwork",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionNetworkFirewallPolicy": {
      "description": "Returns the specified network firewall policy.",
      "inputs": {
        "properties": {
          "firewallPolicy": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallPolicy",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "associations": {
            "description": "A list of associations that belong to this firewall policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyAssociationResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "displayName": {
            "deprecationMessage": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "description": "Deprecated, please use short name instead. User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the firewall policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#firewallPolicyfor firewall policies",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. For Organization Firewall Policies it's a [Output Only] numeric ID allocated by Google Cloud which uniquely identifies the Organization Firewall Policy.",
            "type": "string"
          },
          "parent": {
            "description": "The parent of the firewall policy. This field is not applicable to network firewall policies.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional firewall policy resides. This field is not applicable to global firewall policies. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "ruleTupleCount": {
            "description": "Total count of all firewall policy rule tuples. A firewall policy can not exceed a set number of tuples.",
            "type": "integer"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a firewall policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:FirewallPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL for this resource with the resource id.",
            "type": "string"
          },
          "shortName": {
            "description": "User-provided name of the Organization firewall policy. The name should be unique in the organization in which the firewall policy is created. This field is not applicable to network firewall policies. This name must be set on creation and cannot be changed. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          }
        },
        "required": [
          "associations",
          "creationTimestamp",
          "description",
          "displayName",
          "fingerprint",
          "kind",
          "name",
          "parent",
          "region",
          "ruleTupleCount",
          "rules",
          "selfLink",
          "selfLinkWithId",
          "shortName"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionNetworkFirewallPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionNotificationEndpoint": {
      "description": "Returns the specified NotificationEndpoint resource in the given region.",
      "inputs": {
        "properties": {
          "notificationEndpoint": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "notificationEndpoint",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "grpcSettings": {
            "$ref": "#/types/google-native:compute%2Fv1:NotificationEndpointGrpcSettingsResponse",
            "description": "Settings of the gRPC notification endpoint including the endpoint URL and the retry duration."
          },
          "kind": {
            "description": "Type of the resource. Always compute#notificationEndpoint for notification endpoints.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the notification endpoint resides. This field applies only to the regional resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "grpcSettings",
          "kind",
          "name",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionSecurityPolicy": {
      "description": "List all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "securityPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "securityPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "adaptiveProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigResponse"
          },
          "advancedOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfigResponse"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "ddosProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyDdosProtectionConfigResponse"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "recaptchaOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRecaptchaOptionsConfigResponse"
          },
          "region": {
            "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies.",
            "type": "string"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "type": {
            "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
            "type": "string"
          },
          "userDefinedFields": {
            "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\"",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyUserDefinedFieldResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "adaptiveProtectionConfig",
          "advancedOptionsConfig",
          "creationTimestamp",
          "ddosProtectionConfig",
          "description",
          "fingerprint",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "recaptchaOptionsConfig",
          "region",
          "rules",
          "selfLink",
          "type",
          "userDefinedFields"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionSslCertificate": {
      "description": "Returns the specified SslCertificate resource in the specified region. Get a list of available SSL certificates by making a list() request.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "sslCertificate": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "sslCertificate"
        ]
      },
      "outputs": {
        "properties": {
          "certificate": {
            "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expireTime": {
            "description": "Expire time of the certificate. RFC3339",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#sslCertificate for SSL certificates.",
            "type": "string"
          },
          "managed": {
            "$ref": "#/types/google-native:compute%2Fv1:SslCertificateManagedSslCertificateResponse",
            "description": "Configuration and status of a managed SSL certificate."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "privateKey": {
            "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate.",
            "type": "string"
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "selfManaged": {
            "$ref": "#/types/google-native:compute%2Fv1:SslCertificateSelfManagedSslCertificateResponse",
            "description": "Configuration and status of a self-managed SSL certificate."
          },
          "subjectAlternativeNames": {
            "description": "Domains associated with the certificate via Subject Alternative Name.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "creationTimestamp",
          "description",
          "expireTime",
          "kind",
          "managed",
          "name",
          "privateKey",
          "region",
          "selfLink",
          "selfManaged",
          "subjectAlternativeNames",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionSslPolicy": {
      "description": "Lists all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "sslPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "sslPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customFeatures": {
            "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enabledFeatures": {
            "description": "The list of features enabled in the SSL policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
            "type": "string"
          },
          "minTlsVersion": {
            "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "profile": {
            "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RegionSslPolicyWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "customFeatures",
          "description",
          "enabledFeatures",
          "fingerprint",
          "kind",
          "minTlsVersion",
          "name",
          "profile",
          "region",
          "selfLink",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionTargetHttpProxy": {
      "description": "Returns the specified TargetHttpProxy resource in the specified region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetHttpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetHttpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy.",
            "type": "string"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "region",
          "selfLink",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionTargetHttpsProxy": {
      "description": "Returns the specified TargetHttpsProxy resource in the specified region.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetHttpsProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetHttpsProxy"
        ]
      },
      "outputs": {
        "properties": {
          "authorizationPolicy": {
            "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact.",
            "type": "string"
          },
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy.",
            "type": "string"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "quicOverride": {
            "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured.",
            "type": "string"
          },
          "urlMap": {
            "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map ",
            "type": "string"
          }
        },
        "required": [
          "authorizationPolicy",
          "certificateMap",
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "quicOverride",
          "region",
          "selfLink",
          "serverTlsPolicy",
          "sslCertificates",
          "sslPolicy",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionTargetTcpProxy": {
      "description": "Returns the specified TargetTcpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetTcpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetTcpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyBind",
          "proxyHeader",
          "region",
          "selfLink",
          "service"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRegionUrlMap": {
      "description": "Returns the specified UrlMap resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "urlMap": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "urlMap"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultRouteAction": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpRouteActionResponse",
            "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
          },
          "defaultService": {
            "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.",
            "type": "string"
          },
          "defaultUrlRedirect": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectActionResponse",
            "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap.",
            "type": "string"
          },
          "headerAction": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderActionResponse",
            "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
          },
          "hostRules": {
            "description": "The list of host rules to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:HostRuleResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#urlMaps for url maps.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pathMatchers": {
            "description": "The list of named PathMatchers to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:PathMatcherResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "tests": {
            "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:UrlMapTestResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "defaultRouteAction",
          "defaultService",
          "defaultUrlRedirect",
          "description",
          "fingerprint",
          "headerAction",
          "hostRules",
          "kind",
          "name",
          "pathMatchers",
          "region",
          "selfLink",
          "tests"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getReservation": {
      "description": "Retrieves information about the specified reservation.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "reservation": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "reservation",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "commitment": {
            "description": "Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#reservations for reservations.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "resourcePolicies": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource policies to be added to this reservation. The key is defined by user, and the value is resource policy url. This is to define placement policy with reservation.",
            "type": "object"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fv1:AllocationResourceStatusResponse",
            "description": "Status information for Reservation resource."
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "shareSettings": {
            "$ref": "#/types/google-native:compute%2Fv1:ShareSettingsResponse",
            "description": "Specify share-settings to create a shared reservation. This property is optional. For more information about the syntax and options for this field and its subfields, see the guide for creating a shared reservation."
          },
          "specificReservation": {
            "$ref": "#/types/google-native:compute%2Fv1:AllocationSpecificSKUReservationResponse",
            "description": "Reservation for instances with specific machine shapes."
          },
          "specificReservationRequired": {
            "description": "Indicates whether the reservation can be consumed by VMs with affinity for \"any\" reservation. If the field is set, then only VMs that target the reservation by name can consume from this reservation.",
            "type": "boolean"
          },
          "status": {
            "description": "The status of the reservation.",
            "type": "string"
          },
          "zone": {
            "description": "Zone in which the reservation resides. A zone must be provided if the reservation is created within a commitment.",
            "type": "string"
          }
        },
        "required": [
          "commitment",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "resourcePolicies",
          "resourceStatus",
          "satisfiesPzs",
          "selfLink",
          "shareSettings",
          "specificReservation",
          "specificReservationRequired",
          "status",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getReservationIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getResourcePolicy": {
      "description": "Retrieves all information of the specified resource policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resourcePolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resourcePolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "diskConsistencyGroupPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyDiskConsistencyGroupPolicyResponse",
            "description": "Resource policy for disk consistency groups."
          },
          "groupPlacementPolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyGroupPlacementPolicyResponse",
            "description": "Resource policy for instances for placement configuration."
          },
          "instanceSchedulePolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyInstanceSchedulePolicyResponse",
            "description": "Resource policy for scheduling instance operations."
          },
          "kind": {
            "description": "Type of the resource. Always compute#resource_policies for resource policies.",
            "type": "string"
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicyResourceStatusResponse",
            "description": "The system status of the resource policy."
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "snapshotSchedulePolicy": {
            "$ref": "#/types/google-native:compute%2Fv1:ResourcePolicySnapshotSchedulePolicyResponse",
            "description": "Resource policy for persistent disks for creating snapshots."
          },
          "status": {
            "description": "The status of resource policy creation.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "diskConsistencyGroupPolicy",
          "groupPlacementPolicy",
          "instanceSchedulePolicy",
          "kind",
          "name",
          "region",
          "resourceStatus",
          "selfLink",
          "snapshotSchedulePolicy",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getResourcePolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRoute": {
      "description": "Returns the specified Route resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "route": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "route"
        ]
      },
      "outputs": {
        "properties": {
          "asPaths": {
            "description": "AS path.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RouteAsPathResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "destRange": {
            "description": "The destination range of outgoing packets that this route applies to. Both IPv4 and IPv6 are supported. Must specify an IPv4 range (e.g. 192.0.2.0/24) or an IPv6 range in RFC 4291 format (e.g. 2001:db8::/32). IPv6 range will be displayed using RFC 5952 compressed format.",
            "type": "string"
          },
          "kind": {
            "description": "Type of this resource. Always compute#routes for Route resources.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. The first character must be a lowercase letter, and all following characters (except for the last character) must be a dash, lowercase letter, or digit. The last character must be a lowercase letter or digit.",
            "type": "string"
          },
          "network": {
            "description": "Fully-qualified URL of the network that this route applies to.",
            "type": "string"
          },
          "nextHopGateway": {
            "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/ project/global/gateways/default-internet-gateway",
            "type": "string"
          },
          "nextHopHub": {
            "description": "The full resource name of the Network Connectivity Center hub that will handle matching packets.",
            "type": "string"
          },
          "nextHopIlb": {
            "description": "The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets or the IP address of the forwarding Rule. For example, the following are all valid URLs: - 10.128.0.56 - https://www.googleapis.com/compute/v1/projects/project/regions/region /forwardingRules/forwardingRule - regions/region/forwardingRules/forwardingRule ",
            "type": "string"
          },
          "nextHopInstance": {
            "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/",
            "type": "string"
          },
          "nextHopIp": {
            "description": "The network IP address of an instance that should handle matching packets. Both IPv6 address and IPv4 addresses are supported. Must specify an IPv4 address in dot-decimal notation (e.g. 192.0.2.99) or an IPv6 address in RFC 4291 format (e.g. 2001:db8::2d9:51:0:0 or 2001:db8:0:0:2d9:51:0:0). IPv6 addresses will be displayed using RFC 5952 compressed format (e.g. 2001:db8::2d9:51:0:0). Should never be an IPv4-mapped IPv6 address.",
            "type": "string"
          },
          "nextHopNetwork": {
            "description": "The URL of the local network if it should handle matching packets.",
            "type": "string"
          },
          "nextHopPeering": {
            "description": "The network peering name that should handle matching packets, which should conform to RFC1035.",
            "type": "string"
          },
          "nextHopVpnTunnel": {
            "description": "The URL to a VpnTunnel that should handle matching packets.",
            "type": "string"
          },
          "priority": {
            "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In cases where multiple routes have equal prefix length, the one with the lowest-numbered priority value wins. The default value is `1000`. The priority value must be from `0` to `65535`, inclusive.",
            "type": "integer"
          },
          "routeStatus": {
            "description": "[Output only] The status of the route.",
            "type": "string"
          },
          "routeType": {
            "description": "The type of this route, which can be one of the following values: - 'TRANSIT' for a transit route that this router learned from another Cloud Router and will readvertise to one of its BGP peers - 'SUBNET' for a route from a subnet of the VPC - 'BGP' for a route learned from a BGP peer of this router - 'STATIC' for a static route",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "tags": {
            "description": "A list of instance tags to which this route applies.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RouteWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "asPaths",
          "creationTimestamp",
          "description",
          "destRange",
          "kind",
          "name",
          "network",
          "nextHopGateway",
          "nextHopHub",
          "nextHopIlb",
          "nextHopInstance",
          "nextHopIp",
          "nextHopNetwork",
          "nextHopPeering",
          "nextHopVpnTunnel",
          "priority",
          "routeStatus",
          "routeType",
          "selfLink",
          "tags",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getRouter": {
      "description": "Returns the specified Router resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "router": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "router"
        ]
      },
      "outputs": {
        "properties": {
          "bgp": {
            "$ref": "#/types/google-native:compute%2Fv1:RouterBgpResponse",
            "description": "BGP information specific to this router."
          },
          "bgpPeers": {
            "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RouterBgpPeerResponse"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "encryptedInterconnectRouter": {
            "description": "Indicates if a router is dedicated for use with encrypted VLAN attachments (interconnectAttachments).",
            "type": "boolean"
          },
          "interfaces": {
            "description": "Router interfaces. To create a BGP peer that uses a router interface, the interface must have one of the following fields specified: - linkedVpnTunnel - linkedInterconnectAttachment - subnetwork You can create a router interface without any of these fields specified. However, you cannot create a BGP peer that uses that interface.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RouterInterfaceResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of resource. Always compute#router for routers.",
            "type": "string"
          },
          "md5AuthenticationKeys": {
            "description": "Keys used for MD5 authentication.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RouterMd5AuthenticationKeyResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "nats": {
            "description": "A list of NAT services created in this router.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RouterNatResponse"
            },
            "type": "array"
          },
          "network": {
            "description": "URI of the network to which this router belongs.",
            "type": "string"
          },
          "region": {
            "description": "URI of the region where the router resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          }
        },
        "required": [
          "bgp",
          "bgpPeers",
          "creationTimestamp",
          "description",
          "encryptedInterconnectRouter",
          "interfaces",
          "kind",
          "md5AuthenticationKeys",
          "name",
          "nats",
          "network",
          "region",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getSecurityPolicy": {
      "description": "List all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "securityPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "securityPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "adaptiveProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdaptiveProtectionConfigResponse"
          },
          "advancedOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyAdvancedOptionsConfigResponse"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "ddosProtectionConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyDdosProtectionConfigResponse"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this security policy, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. To see the latest fingerprint, make get() request to the security policy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "recaptchaOptionsConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRecaptchaOptionsConfigResponse"
          },
          "region": {
            "description": "URL of the region where the regional security policy resides. This field is not applicable to global security policies.",
            "type": "string"
          },
          "rules": {
            "description": "A list of rules that belong to this policy. There must always be a default rule which is a rule with priority 2147483647 and match all condition (for the match condition this means match \"*\" for srcIpRanges and for the networkMatch condition every field must be either match \"*\" or not set). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "type": {
            "description": "The type indicates the intended use of the security policy. - CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers. - CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache. - CLOUD_ARMOR_INTERNAL_SERVICE: Cloud Armor internal service policies can be configured to filter HTTP requests targeting services managed by Traffic Director in a service mesh. They filter requests before the request is served from the application. - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time.",
            "type": "string"
          },
          "userDefinedFields": {
            "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. Rules may then specify matching values for these fields. Example: userDefinedFields: - name: \"ipv4_fragment_offset\" base: IPV4 offset: 6 size: 2 mask: \"0x1fff\"",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:SecurityPolicyUserDefinedFieldResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "adaptiveProtectionConfig",
          "advancedOptionsConfig",
          "creationTimestamp",
          "ddosProtectionConfig",
          "description",
          "fingerprint",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "recaptchaOptionsConfig",
          "region",
          "rules",
          "selfLink",
          "type",
          "userDefinedFields"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getServiceAttachment": {
      "description": "Returns the specified ServiceAttachment resource in the given scope.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "serviceAttachment": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "serviceAttachment"
        ]
      },
      "outputs": {
        "properties": {
          "connectedEndpoints": {
            "description": "An array of connections for all the consumers connected to this service attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:ServiceAttachmentConnectedEndpointResponse"
            },
            "type": "array"
          },
          "connectionPreference": {
            "description": "The connection preference of service attachment. The value can be set to ACCEPT_AUTOMATIC. An ACCEPT_AUTOMATIC service attachment is one that always accepts the connection from consumer forwarding rules.",
            "type": "string"
          },
          "consumerAcceptLists": {
            "description": "Projects that are allowed to connect to this service attachment.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:ServiceAttachmentConsumerProjectLimitResponse"
            },
            "type": "array"
          },
          "consumerRejectLists": {
            "description": "Projects that are not allowed to connect to this service attachment. The project can be specified using its id or number.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "domainNames": {
            "description": "If specified, the domain name will be used during the integration between the PSC connected endpoints and the Cloud DNS. For example, this is a valid domain name: \"p.mycompany.com.\". Current max number of domain names supported is 1.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enableProxyProtocol": {
            "description": "If true, enable the proxy protocol which is for supplying client TCP/IP address data in TCP connections that traverse proxies on their way to destination servers.",
            "type": "boolean"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ServiceAttachment. An up-to-date fingerprint must be provided in order to patch/update the ServiceAttachment; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the ServiceAttachment.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#serviceAttachment for service attachments.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "natSubnets": {
            "description": "An array of URLs where each entry is the URL of a subnet provided by the service producer to use for NAT in this service attachment.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "producerForwardingRule": {
            "description": "The URL of a forwarding rule with loadBalancingScheme INTERNAL* that is serving the endpoint identified by this service attachment.",
            "type": "string"
          },
          "pscServiceAttachmentId": {
            "$ref": "#/types/google-native:compute%2Fv1:Uint128Response",
            "description": "An 128-bit global unique ID of the PSC service attachment."
          },
          "reconcileConnections": {
            "description": "This flag determines whether a consumer accept/reject list change can reconcile the statuses of existing ACCEPTED or REJECTED PSC endpoints. - If false, connection policy update will only affect existing PENDING PSC endpoints. Existing ACCEPTED/REJECTED endpoints will remain untouched regardless how the connection policy is modified . - If true, update will affect both PENDING and ACCEPTED/REJECTED PSC endpoints. For example, an ACCEPTED PSC endpoint will be moved to REJECTED if its project is added to the reject list. For newly created service attachment, this boolean defaults to false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the service attachment resides. This field applies only to the region resource. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "targetService": {
            "description": "The URL of a service serving the endpoint identified by this service attachment.",
            "type": "string"
          }
        },
        "required": [
          "connectedEndpoints",
          "connectionPreference",
          "consumerAcceptLists",
          "consumerRejectLists",
          "creationTimestamp",
          "description",
          "domainNames",
          "enableProxyProtocol",
          "fingerprint",
          "kind",
          "name",
          "natSubnets",
          "producerForwardingRule",
          "pscServiceAttachmentId",
          "reconcileConnections",
          "region",
          "selfLink",
          "targetService"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getServiceAttachmentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getSnapshot": {
      "description": "Returns the specified Snapshot resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "snapshot": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "snapshot"
        ]
      },
      "outputs": {
        "properties": {
          "architecture": {
            "description": "The architecture of the snapshot. Valid values are ARM64 or X86_64.",
            "type": "string"
          },
          "autoCreated": {
            "description": "Set to true if snapshots are automatically created by applying resource policy on the target disk.",
            "type": "boolean"
          },
          "chainName": {
            "description": "Creates the new snapshot in the snapshot chain labeled with the specified name. The chain name must be 1-63 characters long and comply with RFC1035. This is an uncommon option only for advanced service owners who needs to create separate snapshot chains, for example, for chargeback tracking. When you describe your snapshot resource, this field is visible only if it has a non-empty value.",
            "type": "string"
          },
          "creationSizeBytes": {
            "description": "Size in bytes of the snapshot at creation time.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "diskSizeGb": {
            "description": "Size of the source disk, specified in GB.",
            "type": "string"
          },
          "downloadBytes": {
            "description": "Number of bytes downloaded to restore a snapshot to a disk.",
            "type": "string"
          },
          "guestOsFeatures": {
            "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:GuestOsFeatureResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#snapshot for Snapshot resources.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a snapshot.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
            "type": "object"
          },
          "licenseCodes": {
            "description": "Integer license codes indicating which licenses are attached to this snapshot.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "licenses": {
            "description": "A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locationHint": {
            "description": "An opaque location hint used to place the snapshot close to other resources. This field is for use by internal tools that use the public API.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "snapshotEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "Encrypts the snapshot using a customer-supplied encryption key. After you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request. Customer-supplied encryption keys do not protect access to metadata of the snapshot. If you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
          },
          "snapshotType": {
            "description": "Indicates the type of the snapshot.",
            "type": "string"
          },
          "sourceDisk": {
            "description": "The source disk used to create this snapshot.",
            "type": "string"
          },
          "sourceDiskEncryptionKey": {
            "$ref": "#/types/google-native:compute%2Fv1:CustomerEncryptionKeyResponse",
            "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
          },
          "sourceDiskForRecoveryCheckpoint": {
            "description": "The source disk whose recovery checkpoint will be used to create this snapshot.",
            "type": "string"
          },
          "sourceDiskId": {
            "description": "The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.",
            "type": "string"
          },
          "sourceSnapshotSchedulePolicy": {
            "description": "URL of the resource policy which created this scheduled snapshot.",
            "type": "string"
          },
          "sourceSnapshotSchedulePolicyId": {
            "description": "ID of the resource policy which created this scheduled snapshot.",
            "type": "string"
          },
          "status": {
            "description": "The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
            "type": "string"
          },
          "storageBytes": {
            "description": "A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
            "type": "string"
          },
          "storageBytesStatus": {
            "description": "An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
            "type": "string"
          },
          "storageLocations": {
            "description": "Cloud Storage bucket storage location of the snapshot (regional or multi-regional).",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "architecture",
          "autoCreated",
          "chainName",
          "creationSizeBytes",
          "creationTimestamp",
          "description",
          "diskSizeGb",
          "downloadBytes",
          "guestOsFeatures",
          "kind",
          "labelFingerprint",
          "labels",
          "licenseCodes",
          "licenses",
          "locationHint",
          "name",
          "satisfiesPzs",
          "selfLink",
          "snapshotEncryptionKey",
          "snapshotType",
          "sourceDisk",
          "sourceDiskEncryptionKey",
          "sourceDiskForRecoveryCheckpoint",
          "sourceDiskId",
          "sourceSnapshotSchedulePolicy",
          "sourceSnapshotSchedulePolicyId",
          "status",
          "storageBytes",
          "storageBytesStatus",
          "storageLocations"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getSslCertificate": {
      "description": "Returns the specified SslCertificate resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "sslCertificate": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sslCertificate"
        ]
      },
      "outputs": {
        "properties": {
          "certificate": {
            "description": "A value read into memory from a certificate file. The certificate file must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "expireTime": {
            "description": "Expire time of the certificate. RFC3339",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#sslCertificate for SSL certificates.",
            "type": "string"
          },
          "managed": {
            "$ref": "#/types/google-native:compute%2Fv1:SslCertificateManagedSslCertificateResponse",
            "description": "Configuration and status of a managed SSL certificate."
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "privateKey": {
            "description": "A value read into memory from a write-only private key file. The private key file must be in PEM format. For security, only insert requests include this field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate.",
            "type": "string"
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "selfManaged": {
            "$ref": "#/types/google-native:compute%2Fv1:SslCertificateSelfManagedSslCertificateResponse",
            "description": "Configuration and status of a self-managed SSL certificate."
          },
          "subjectAlternativeNames": {
            "description": "Domains associated with the certificate via Subject Alternative Name.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "creationTimestamp",
          "description",
          "expireTime",
          "kind",
          "managed",
          "name",
          "privateKey",
          "region",
          "selfLink",
          "selfManaged",
          "subjectAlternativeNames",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getSslPolicy": {
      "description": "Lists all of the ordered rules present in a single specified policy.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "sslPolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sslPolicy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "customFeatures": {
            "description": "A list of features enabled when the selected profile is CUSTOM. The method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "enabledFeatures": {
            "description": "The list of features enabled in the SSL policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve an SslPolicy.",
            "type": "string"
          },
          "kind": {
            "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
            "type": "string"
          },
          "minTlsVersion": {
            "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "profile": {
            "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional SSL policy resides. This field is not applicable to global SSL policies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:SslPolicyWarningsItemResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "customFeatures",
          "description",
          "enabledFeatures",
          "fingerprint",
          "kind",
          "minTlsVersion",
          "name",
          "profile",
          "region",
          "selfLink",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getSubnetwork": {
      "description": "Returns the specified subnetwork.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "subnetwork": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "subnetwork"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time.",
            "type": "string"
          },
          "enableFlowLogs": {
            "description": "Whether to enable flow logging for this subnetwork. If this field is not explicitly set, it will not appear in get listings. If not set the default behavior is determined by the org policy, if there is no org policy specified, then it will default to disabled. This field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
            "type": "boolean"
          },
          "externalIpv6Prefix": {
            "description": "The external IPv6 address range that is owned by this subnetwork.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a Subnetwork.",
            "type": "string"
          },
          "gatewayAddress": {
            "description": "The gateway address for default routes to reach destination addresses outside this subnetwork.",
            "type": "string"
          },
          "internalIpv6Prefix": {
            "description": "The internal IPv6 address range that is assigned to this subnetwork.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 100.64.0.0/10. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field is set at resource creation time. The range can be any range listed in the Valid ranges list. The range can be expanded after creation using expandIpCidrRange.",
            "type": "string"
          },
          "ipv6AccessType": {
            "description": "The access type of IPv6 address this subnet holds. It's immutable and can only be specified during creation or the first time the subnet is updated into IPV4_IPV6 dual stack.",
            "type": "string"
          },
          "ipv6CidrRange": {
            "description": "This field is for internal use.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#subnetwork for Subnetwork resources.",
            "type": "string"
          },
          "logConfig": {
            "$ref": "#/types/google-native:compute%2Fv1:SubnetworkLogConfigResponse",
            "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Cloud Logging."
          },
          "name": {
            "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. This field can be set only at resource creation time.",
            "type": "string"
          },
          "privateIpGoogleAccess": {
            "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess.",
            "type": "boolean"
          },
          "privateIpv6GoogleAccess": {
            "description": "This field is for internal use. This field can be both set at resource creation time and updated using patch.",
            "type": "string"
          },
          "purpose": {
            "description": "The purpose of the resource. This field can be either PRIVATE, REGIONAL_MANAGED_PROXY, PRIVATE_SERVICE_CONNECT, or INTERNAL_HTTPS_LOAD_BALANCER. PRIVATE is the default purpose for user-created subnets or subnets that are automatically created in auto mode networks. A subnet with purpose set to REGIONAL_MANAGED_PROXY is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnet with purpose set to PRIVATE_SERVICE_CONNECT is used to publish services using Private Service Connect. A subnet with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a proxy-only subnet that can be used only by regional internal HTTP(S) load balancers. Note that REGIONAL_MANAGED_PROXY is the preferred setting for all regional Envoy load balancers. If unspecified, the subnet purpose defaults to PRIVATE. The enableFlowLogs field isn't supported if the subnet purpose field is set to REGIONAL_MANAGED_PROXY.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time.",
            "type": "string"
          },
          "role": {
            "description": "The role of subnetwork. Currently, this field is only used when purpose = REGIONAL_MANAGED_PROXY. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Envoy-based load balancers in a region. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request.",
            "type": "string"
          },
          "secondaryIpRanges": {
            "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:SubnetworkSecondaryRangeResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for the subnet. If set to IPV4_ONLY, new VMs in the subnet are assigned IPv4 addresses only. If set to IPV4_IPV6, new VMs in the subnet can be assigned both IPv4 and IPv6 addresses. If not specified, IPV4_ONLY is used. This field can be both set at resource creation time and updated using patch.",
            "type": "string"
          },
          "state": {
            "description": "The state of the subnetwork, which can be one of the following values: READY: Subnetwork is created and ready to use DRAINING: only applicable to subnetworks that have the purpose set to INTERNAL_HTTPS_LOAD_BALANCER and indicates that connections to the load balancer are being drained. A subnetwork that is draining cannot be used or modified until it reaches a status of READY",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "enableFlowLogs",
          "externalIpv6Prefix",
          "fingerprint",
          "gatewayAddress",
          "internalIpv6Prefix",
          "ipCidrRange",
          "ipv6AccessType",
          "ipv6CidrRange",
          "kind",
          "logConfig",
          "name",
          "network",
          "privateIpGoogleAccess",
          "privateIpv6GoogleAccess",
          "purpose",
          "region",
          "role",
          "secondaryIpRanges",
          "selfLink",
          "stackType",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getSubnetworkIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "This is deprecated and has no effect. Do not use.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getTargetGrpcProxy": {
      "description": "Returns the specified TargetGrpcProxy resource in the given scope.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetGrpcProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetGrpcProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetGrpcProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetGrpcProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetGrpcProxy.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetGrpcProxy for target grpc proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "selfLinkWithId": {
            "description": "Server-defined URL with id for the resource.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService. The protocol field in the BackendService must be set to GRPC.",
            "type": "string"
          },
          "validateForProxyless": {
            "description": "If true, indicates that the BackendServices referenced by the urlMap may be accessed by gRPC applications without using a sidecar proxy. This will enable configuration checks on urlMap and its referenced BackendServices to not allow unsupported features. A gRPC application must use \"xds:///\" scheme in the target URI of the service it is connecting to. If false, indicates that the BackendServices referenced by the urlMap will be accessed by gRPC applications via a sidecar proxy. In this case, a gRPC application must not use \"xds:///\" scheme in the target URI of the service it is connecting to",
            "type": "boolean"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "kind",
          "name",
          "selfLink",
          "selfLinkWithId",
          "urlMap",
          "validateForProxyless"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getTargetHttpProxy": {
      "description": "Returns the specified TargetHttpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetHttpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetHttpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpProxy. An up-to-date fingerprint must be provided in order to patch/update the TargetHttpProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpProxy.",
            "type": "string"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "region": {
            "description": "URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "urlMap": {
            "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "region",
          "selfLink",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getTargetHttpsProxy": {
      "description": "Returns the specified TargetHttpsProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetHttpsProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetHttpsProxy"
        ]
      },
      "outputs": {
        "properties": {
          "authorizationPolicy": {
            "description": "Optional. A URL referring to a networksecurity.AuthorizationPolicy resource that describes how the proxy should authorize inbound traffic. If left blank, access will not be restricted by an authorization policy. Refer to the AuthorizationPolicy resource for additional details. authorizationPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED. Note: This field currently has no impact.",
            "type": "string"
          },
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a TargetHttpsProxy. An up-to-date fingerprint must be provided in order to patch the TargetHttpsProxy; otherwise, the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve the TargetHttpsProxy.",
            "type": "string"
          },
          "httpKeepAliveTimeoutSec": {
            "description": "Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). If an HTTP keep-alive is not specified, a default value (610 seconds) will be used. For global external Application Load Balancers, the minimum allowed value is 5 seconds and the maximum allowed value is 1200 seconds. For classic Application Load Balancers, this option is not supported.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "quicOverride": {
            "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This setting determines whether the load balancer attempts to negotiate QUIC with clients. You can specify NONE, ENABLE, or DISABLE. - When quic-override is set to NONE, Google manages whether QUIC is used. - When quic-override is set to ENABLE, the load balancer uses QUIC when possible. - When quic-override is set to DISABLE, the load balancer doesn't use QUIC. - If the quic-override flag is not specified, NONE is implied. ",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A URL referring to a networksecurity.ServerTlsPolicy resource that describes how the proxy should authenticate inbound traffic. serverTlsPolicy only applies to a global TargetHttpsProxy attached to globalForwardingRules with the loadBalancingScheme set to INTERNAL_SELF_MANAGED or EXTERNAL or EXTERNAL_MANAGED. For details which ServerTlsPolicy resources are accepted with INTERNAL_SELF_MANAGED and which with EXTERNAL, EXTERNAL_MANAGED loadBalancingScheme consult ServerTlsPolicy documentation. If left blank, communications are not encrypted.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource has no SSL policy configured.",
            "type": "string"
          },
          "urlMap": {
            "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: - https://www.googleapis.compute/v1/projects/project/global/urlMaps/ url-map - projects/project/global/urlMaps/url-map - global/urlMaps/url-map ",
            "type": "string"
          }
        },
        "required": [
          "authorizationPolicy",
          "certificateMap",
          "creationTimestamp",
          "description",
          "fingerprint",
          "httpKeepAliveTimeoutSec",
          "kind",
          "name",
          "proxyBind",
          "quicOverride",
          "region",
          "selfLink",
          "serverTlsPolicy",
          "sslCertificates",
          "sslPolicy",
          "urlMap"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getTargetInstance": {
      "description": "Returns the specified TargetInstance resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetInstance": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetInstance",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "instance": {
            "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /instances/instance - projects/project/zones/zone/instances/instance - zones/zone/instances/instance ",
            "type": "string"
          },
          "kind": {
            "description": "The type of the resource. Always compute#targetInstance for target instances.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "natPolicy": {
            "description": "Must have a value of NO_NAT. Protocol forwarding delivers packets while preserving the destination IP address of the forwarding rule referencing the target instance.",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network this target instance uses to forward traffic. If not specified, the traffic will be forwarded to the network that the default network interface belongs to.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this target instance.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "zone": {
            "description": "URL of the zone where the target instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "instance",
          "kind",
          "name",
          "natPolicy",
          "network",
          "securityPolicy",
          "selfLink",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getTargetPool": {
      "description": "Returns the specified target pool.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetPool": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetPool"
        ]
      },
      "outputs": {
        "properties": {
          "backupPool": {
            "description": "The server-defined URL for the resource. This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1]. backupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "failoverRatio": {
            "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1]. If set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool. In case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
            "type": "number"
          },
          "healthChecks": {
            "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. Only legacy HttpHealthChecks are supported. Only one health check may be specified.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "instances": {
            "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetPool for target pools.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the target pool resides.",
            "type": "string"
          },
          "securityPolicy": {
            "description": "The resource URL for the security policy associated with this target pool.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sessionAffinity": {
            "description": "Session affinity option, must be one of the following values: NONE: Connections from the same client IP may go to any instance in the pool. CLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy. CLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
            "type": "string"
          }
        },
        "required": [
          "backupPool",
          "creationTimestamp",
          "description",
          "failoverRatio",
          "healthChecks",
          "instances",
          "kind",
          "name",
          "region",
          "securityPolicy",
          "selfLink",
          "sessionAffinity"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getTargetSslProxy": {
      "description": "Returns the specified TargetSslProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetSslProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetSslProxy"
        ]
      },
      "outputs": {
        "properties": {
          "certificateMap": {
            "description": "URL of a certificate map that identifies a certificate map associated with the given target proxy. This field can only be set for global target proxies. If set, sslCertificates will be ignored. Accepted format is //certificatemanager.googleapis.com/projects/{project }/locations/{location}/certificateMaps/{resourceName}.",
            "type": "string"
          },
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetSslProxy for target SSL proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          },
          "sslCertificates": {
            "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. At least one SSL certificate must be specified. Currently, you may specify up to 15 SSL certificates. sslCertificates do not apply when the load balancing scheme is set to INTERNAL_SELF_MANAGED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sslPolicy": {
            "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured.",
            "type": "string"
          }
        },
        "required": [
          "certificateMap",
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyHeader",
          "selfLink",
          "service",
          "sslCertificates",
          "sslPolicy"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getTargetTcpProxy": {
      "description": "Returns the specified TargetTcpProxy resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "targetTcpProxy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "targetTcpProxy"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "proxyBind": {
            "description": "This field only applies when the forwarding rule that references this target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED. When this field is set to true, Envoy proxies set up inbound traffic interception and bind to the IP address and port specified in the forwarding rule. This is generally useful when using Traffic Director to configure Envoy as a gateway or middle proxy (in other words, not a sidecar proxy). The Envoy proxy listens for inbound requests and handles requests when it receives them. The default is false.",
            "type": "boolean"
          },
          "proxyHeader": {
            "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the regional TCP proxy resides. This field is not applicable to global TCP proxy.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "service": {
            "description": "URL to the BackendService resource.",
            "type": "string"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "name",
          "proxyBind",
          "proxyHeader",
          "region",
          "selfLink",
          "service"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getTargetVpnGateway": {
      "description": "Returns the specified target VPN gateway.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "targetVpnGateway": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "targetVpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "forwardingRules": {
            "description": "A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated with a VPN gateway.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a TargetVpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the target VPN gateway resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "The status of the VPN gateway, which can be one of the following: CREATING, READY, FAILED, or DELETING.",
            "type": "string"
          },
          "tunnels": {
            "description": "A list of URLs to VpnTunnel resources. VpnTunnels are created using the compute.vpntunnels.insert method and associated with a VPN gateway.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "forwardingRules",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "region",
          "selfLink",
          "status",
          "tunnels"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getUrlMap": {
      "description": "Returns the specified UrlMap resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "urlMap": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "urlMap"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "defaultRouteAction": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpRouteActionResponse",
            "description": "defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions, such as URL rewrites and header transformations, before forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices. Only one of defaultRouteAction or defaultUrlRedirect must be set. URL maps for classic Application Load Balancers only support the urlRewrite action within defaultRouteAction. defaultRouteAction has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true."
          },
          "defaultService": {
            "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is also specified, advanced routing actions, such as URL rewrites, take effect before sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified. Only one of defaultService, defaultUrlRedirect , or defaultRouteAction.weightedBackendService must be set. defaultService has no effect when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.",
            "type": "string"
          },
          "defaultUrlRedirect": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpRedirectActionResponse",
            "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set. Not supported when the URL map is bound to a target gRPC proxy."
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field is ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a UrlMap.",
            "type": "string"
          },
          "headerAction": {
            "$ref": "#/types/google-native:compute%2Fv1:HttpHeaderActionResponse",
            "description": "Specifies changes to request and response headers that need to take effect for the selected backendService. The headerAction specified here take effect after headerAction specified under pathMatcher. headerAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true."
          },
          "hostRules": {
            "description": "The list of host rules to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:HostRuleResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Type of the resource. Always compute#urlMaps for url maps.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "pathMatchers": {
            "description": "The list of named PathMatchers to use against the URL.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:PathMatcherResponse"
            },
            "type": "array"
          },
          "region": {
            "description": "URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "tests": {
            "description": "The list of expected URL mapping tests. Request to update the UrlMap succeeds only if all test cases pass. You can specify a maximum of 100 tests per UrlMap. Not supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:UrlMapTestResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "defaultRouteAction",
          "defaultService",
          "defaultUrlRedirect",
          "description",
          "fingerprint",
          "headerAction",
          "hostRules",
          "kind",
          "name",
          "pathMatchers",
          "region",
          "selfLink",
          "tests"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getVpnGateway": {
      "description": "Returns the specified VPN gateway.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "vpnGateway": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "vpnGateway"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "kind": {
            "description": "Type of resource. Always compute#vpnGateway for VPN gateways.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this VpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnGateway.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "network": {
            "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the VPN gateway resides.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "stackType": {
            "description": "The stack type for this VPN gateway to identify the IP protocols that are enabled. Possible values are: IPV4_ONLY, IPV4_IPV6. If not specified, IPV4_ONLY will be used.",
            "type": "string"
          },
          "vpnInterfaces": {
            "description": "The list of VPN interfaces associated with this VPN gateway.",
            "items": {
              "$ref": "#/types/google-native:compute%2Fv1:VpnGatewayVpnGatewayInterfaceResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "kind",
          "labelFingerprint",
          "labels",
          "name",
          "network",
          "region",
          "selfLink",
          "stackType",
          "vpnInterfaces"
        ],
        "type": "object"
      }
    },
    "google-native:compute/v1:getVpnTunnel": {
      "description": "Returns the specified VpnTunnel resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "vpnTunnel": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "region",
          "vpnTunnel"
        ]
      },
      "outputs": {
        "properties": {
          "creationTimestamp": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of this resource. Provide this property when you create the resource.",
            "type": "string"
          },
          "detailedStatus": {
            "description": "Detailed status message for the VPN tunnel.",
            "type": "string"
          },
          "ikeVersion": {
            "description": "IKE protocol version to use when establishing the VPN tunnel with the peer VPN gateway. Acceptable IKE versions are 1 or 2. The default version is 2.",
            "type": "integer"
          },
          "kind": {
            "description": "Type of resource. Always compute#vpnTunnel for VPN tunnels.",
            "type": "string"
          },
          "labelFingerprint": {
            "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a VpnTunnel.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this resource. These can only be added or modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
            "type": "object"
          },
          "localTrafficSelector": {
            "description": "Local traffic selector to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges must be disjoint. Only IPv4 is supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "peerExternalGateway": {
            "description": "URL of the peer side external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field is exclusive with the field peerGcpGateway.",
            "type": "string"
          },
          "peerExternalGatewayInterface": {
            "description": "The interface ID of the external VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. Possible values are: `0`, `1`, `2`, `3`. The number of IDs in use depends on the external VPN gateway redundancy type.",
            "type": "integer"
          },
          "peerGcpGateway": {
            "description": "URL of the peer side HA VPN gateway to which this VPN tunnel is connected. Provided by the client when the VPN tunnel is created. This field can be used when creating highly available VPN from VPC network to VPC network, the field is exclusive with the field peerExternalGateway. If provided, the VPN tunnel will automatically use the same vpnGatewayInterface ID in the peer Google Cloud VPN gateway.",
            "type": "string"
          },
          "peerIp": {
            "description": "IP address of the peer VPN gateway. Only IPv4 is supported.",
            "type": "string"
          },
          "region": {
            "description": "URL of the region where the VPN tunnel resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
            "type": "string"
          },
          "remoteTrafficSelector": {
            "description": "Remote traffic selectors to use when establishing the VPN tunnel with the peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "router": {
            "description": "URL of the router resource to be used for dynamic routing.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL for the resource.",
            "type": "string"
          },
          "sharedSecret": {
            "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway.",
            "type": "string"
          },
          "sharedSecretHash": {
            "description": "Hash of the shared secret.",
            "type": "string"
          },
          "status": {
            "description": "The status of the VPN tunnel, which can be one of the following: - PROVISIONING: Resource is being allocated for the VPN tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all VPN-related configs from the user. Network, TargetVpnGateway, VpnTunnel, ForwardingRule, and Route resources are needed to setup the VPN tunnel. - FIRST_HANDSHAKE: Successful first handshake with the peer VPN. - ESTABLISHED: Secure session is successfully established with the peer VPN. - NETWORK_ERROR: Deprecated, replaced by NO_INCOMING_PACKETS - AUTHORIZATION_ERROR: Auth error (for example, bad shared secret). - NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING: Resources are being deallocated for the VPN tunnel. - FAILED: Tunnel creation has failed and the tunnel is not ready to be used. - NO_INCOMING_PACKETS: No incoming packets from peer. - REJECTED: Tunnel configuration was rejected, can be result of being denied access. - ALLOCATING_RESOURCES: Cloud VPN is in the process of allocating all required resources. - STOPPED: Tunnel is stopped due to its Forwarding Rules being deleted for Classic VPN tunnels or the project is in frozen state. - PEER_IDENTITY_MISMATCH: Peer identity does not match peer IP, probably behind NAT. - TS_NARROWING_NOT_ALLOWED: Traffic selector narrowing not allowed for an HA-VPN tunnel. ",
            "type": "string"
          },
          "targetVpnGateway": {
            "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created.",
            "type": "string"
          },
          "vpnGateway": {
            "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created. This must be used (instead of target_vpn_gateway) if a High Availability VPN gateway resource is created.",
            "type": "string"
          },
          "vpnGatewayInterface": {
            "description": "The interface ID of the VPN gateway with which this VPN tunnel is associated. Possible values are: `0`, `1`.",
            "type": "integer"
          }
        },
        "required": [
          "creationTimestamp",
          "description",
          "detailedStatus",
          "ikeVersion",
          "kind",
          "labelFingerprint",
          "labels",
          "localTrafficSelector",
          "name",
          "peerExternalGateway",
          "peerExternalGatewayInterface",
          "peerGcpGateway",
          "peerIp",
          "region",
          "remoteTrafficSelector",
          "router",
          "selfLink",
          "sharedSecret",
          "sharedSecretHash",
          "status",
          "targetVpnGateway",
          "vpnGateway",
          "vpnGatewayInterface"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v1:getConnection": {
      "description": "Gets details of a single Connection.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "authConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:AuthConfigResponse",
            "description": "Optional. Configuration for establishing the connection's authentication with an external system."
          },
          "configVariables": {
            "description": "Optional. Configuration for configuring the connection with an external system.",
            "items": {
              "$ref": "#/types/google-native:connectors%2Fv1:ConfigVariableResponse"
            },
            "type": "array"
          },
          "connectionRevision": {
            "description": "Connection revision. This field is only updated when the connection is created or updated by User.",
            "type": "string"
          },
          "connectorVersion": {
            "description": "Connector version on which the connection is created. The format is: projects/*/locations/*/providers/*/connectors/*/versions/* Only global location is supported for ConnectorVersion resource.",
            "type": "string"
          },
          "connectorVersionInfraConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConnectorVersionInfraConfigResponse",
            "description": "Infra configs supported by Connector Version."
          },
          "connectorVersionLaunchStage": {
            "description": "Flag to mark the version indicating the launch stage.",
            "type": "string"
          },
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the resource.",
            "type": "string"
          },
          "destinationConfigs": {
            "description": "Optional. Configuration of the Connector's destination. Only accepted for Connectors that accepts user defined destination(s).",
            "items": {
              "$ref": "#/types/google-native:connectors%2Fv1:DestinationConfigResponse"
            },
            "type": "array"
          },
          "envoyImageLocation": {
            "description": "GCR location where the envoy image is stored. formatted like: gcr.io/{bucketName}/{imageName}",
            "type": "string"
          },
          "eventingConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:EventingConfigResponse",
            "description": "Optional. Eventing config of a connection"
          },
          "eventingEnablementType": {
            "description": "Optional. Eventing enablement type. Will be nil if eventing is not enabled.",
            "type": "string"
          },
          "eventingRuntimeData": {
            "$ref": "#/types/google-native:connectors%2Fv1:EventingRuntimeDataResponse",
            "description": "Eventing Runtime Data."
          },
          "imageLocation": {
            "description": "GCR location where the runtime image is stored. formatted like: gcr.io/{bucketName}/{imageName}",
            "type": "string"
          },
          "isTrustedTester": {
            "description": "Is trusted tester program enabled for the project.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "lockConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:LockConfigResponse",
            "description": "Optional. Configuration that indicates whether or not the Connection can be edited."
          },
          "logConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConnectorsLogConfigResponse",
            "description": "Optional. Log configuration for the connection."
          },
          "name": {
            "description": "Resource name of the Connection. Format: projects/{project}/locations/{location}/connections/{connection}",
            "type": "string"
          },
          "nodeConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:NodeConfigResponse",
            "description": "Optional. Node configuration for the connection."
          },
          "serviceAccount": {
            "description": "Optional. Service account needed for runtime plane to access Google Cloud resources.",
            "type": "string"
          },
          "serviceDirectory": {
            "description": "The name of the Service Directory service name. Used for Private Harpoon to resolve the ILB address. e.g. \"projects/cloud-connectors-e2e-testing/locations/us-central1/namespaces/istio-system/services/istio-ingressgateway-connectors\"",
            "type": "string"
          },
          "sslConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:SslConfigResponse",
            "description": "Optional. Ssl config of a connection"
          },
          "status": {
            "$ref": "#/types/google-native:connectors%2Fv1:ConnectionStatusResponse",
            "description": "Current status of the connection."
          },
          "subscriptionType": {
            "description": "This subscription type enum states the subscription type of the project.",
            "type": "string"
          },
          "suspended": {
            "description": "Optional. Suspended indicates if a user has suspended a connection or not.",
            "type": "boolean"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "authConfig",
          "configVariables",
          "connectionRevision",
          "connectorVersion",
          "connectorVersionInfraConfig",
          "connectorVersionLaunchStage",
          "createTime",
          "description",
          "destinationConfigs",
          "envoyImageLocation",
          "eventingConfig",
          "eventingEnablementType",
          "eventingRuntimeData",
          "imageLocation",
          "isTrustedTester",
          "labels",
          "lockConfig",
          "logConfig",
          "name",
          "nodeConfig",
          "serviceAccount",
          "serviceDirectory",
          "sslConfig",
          "status",
          "subscriptionType",
          "suspended",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v1:getConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:connectors%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:connectors%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v1:getCustomConnector": {
      "description": "Gets details of a single CustomConnector.",
      "inputs": {
        "properties": {
          "customConnectorId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customConnectorId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "customConnectorType": {
            "description": "Type of the custom connector.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "launchStage": {
            "description": "Launch stage.",
            "type": "string"
          },
          "logo": {
            "description": "Optional. Logo of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Identifier. Resource name of the CustomConnector. Format: projects/{project}/locations/{location}/customConnectors/{connector}",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "customConnectorType",
          "description",
          "displayName",
          "labels",
          "launchStage",
          "logo",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v1:getCustomConnectorVersion": {
      "description": "Gets details of a single CustomConnectorVersion.",
      "inputs": {
        "properties": {
          "customConnectorId": {
            "type": "string"
          },
          "customConnectorVersionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customConnectorId",
          "customConnectorVersionId"
        ]
      },
      "outputs": {
        "properties": {
          "authConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:AuthConfigResponse",
            "description": "Configuration for establishing the authentication to the connector destination."
          },
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "destinationConfig": {
            "$ref": "#/types/google-native:connectors%2Fv1:DestinationConfigResponse",
            "description": "Configuration of the customConnector's destination."
          },
          "enableBackendDestinationConfig": {
            "description": "Optional. Whether to enable backend destination config. This is the backend server that the connector connects to.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "name": {
            "description": "Identifier. Resource name of the Version. Format: projects/{project}/locations/{location}/customConnectors/{custom_connector}/customConnectorVersions/{custom_connector_version}",
            "type": "string"
          },
          "specLocation": {
            "description": "Optional. Location of the custom connector spec.",
            "type": "string"
          },
          "type": {
            "description": "Type of the customConnector.",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "authConfig",
          "createTime",
          "destinationConfig",
          "enableBackendDestinationConfig",
          "labels",
          "name",
          "specLocation",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v1:getEndpointAttachment": {
      "description": "Gets details of a single EndpointAttachment.",
      "inputs": {
        "properties": {
          "endpointAttachmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointAttachmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the resource.",
            "type": "string"
          },
          "endpointIp": {
            "description": "The Private Service Connect connection endpoint ip",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Endpoint Attachment. Format: projects/{project}/locations/{location}/endpointAttachments/{endpoint_attachment}",
            "type": "string"
          },
          "serviceAttachment": {
            "description": "The path of the service attachment",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "endpointIp",
          "labels",
          "name",
          "serviceAttachment",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v1:getEventSubscription": {
      "description": "Gets details of a single EventSubscription.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "eventSubscriptionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "eventSubscriptionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "destinations": {
            "$ref": "#/types/google-native:connectors%2Fv1:EventSubscriptionDestinationResponse",
            "description": "Optional. The destination to hit when we receive an event"
          },
          "eventTypeId": {
            "description": "Optional. Event type id of the event of current EventSubscription.",
            "type": "string"
          },
          "jms": {
            "$ref": "#/types/google-native:connectors%2Fv1:JMSResponse",
            "description": "Optional. JMS is the source for the event listener."
          },
          "name": {
            "description": "Resource name of the EventSubscription. Format: projects/{project}/locations/{location}/connections/{connection}/eventSubscriptions/{event_subscription}",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:connectors%2Fv1:EventSubscriptionStatusResponse",
            "description": "Optional. Status indicates the status of the event subscription resource"
          },
          "subscriber": {
            "description": "Optional. name of the Subscriber for the current EventSubscription.",
            "type": "string"
          },
          "subscriberLink": {
            "description": "Optional. Link for Subscriber of the current EventSubscription.",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "destinations",
          "eventTypeId",
          "jms",
          "name",
          "status",
          "subscriber",
          "subscriberLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v1:getManagedZone": {
      "description": "Gets details of a single ManagedZone.",
      "inputs": {
        "properties": {
          "managedZone": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "managedZone"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Created time.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the resource.",
            "type": "string"
          },
          "dns": {
            "description": "DNS Name of the resource",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Managed Zone. Format: projects/{project}/locations/global/managedZones/{managed_zone}",
            "type": "string"
          },
          "targetProject": {
            "description": "The name of the Target Project",
            "type": "string"
          },
          "targetVpc": {
            "description": "The name of the Target Project VPC Network",
            "type": "string"
          },
          "updateTime": {
            "description": "Updated time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "dns",
          "labels",
          "name",
          "targetProject",
          "targetVpc",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v1:getProviderIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "providerId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:connectors%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:connectors%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:connectors/v2:getEntity": {
      "description": "Gets a single entity row matching the entity type and entity id specified in the request.",
      "inputs": {
        "properties": {
          "connectionId": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "entityTypeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionId",
          "entityId",
          "entityTypeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "fields": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Fields of the entity. The key is name of the field and the value contains the applicable `google.protobuf.Value` entry for this field.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Entity. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}/entities/{id}",
            "type": "string"
          }
        },
        "required": [
          "fields",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:contactcenteraiplatform/v1alpha1:getContactCenter": {
      "description": "Gets details of a single ContactCenter.",
      "inputs": {
        "properties": {
          "contactCenterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contactCenterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "adminUser": {
            "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:AdminUserResponse",
            "description": "Optional. Info about the first admin user, such as given name and family name."
          },
          "ccaipManagedUsers": {
            "description": "Optional. Whether to enable users to be created in the CCAIP-instance concurrently to having users in Cloud identity",
            "type": "boolean"
          },
          "createTime": {
            "description": "[Output only] Create time stamp",
            "type": "string"
          },
          "customerDomainPrefix": {
            "description": "Immutable. At least 2 and max 16 char long, must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt).",
            "type": "string"
          },
          "displayName": {
            "description": "A user friendly name for the ContactCenter.",
            "type": "string"
          },
          "instanceConfig": {
            "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:InstanceConfigResponse",
            "description": "The configuration of this instance, it is currently immutable once created."
          },
          "kmsKey": {
            "description": "Immutable. The KMS key name to encrypt the user input (`ContactCenter`).",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "name": {
            "description": "name of resource",
            "type": "string"
          },
          "samlParams": {
            "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:SAMLParamsResponse",
            "description": "Optional. Params that sets up Google as IdP."
          },
          "state": {
            "description": "The state of this contact center.",
            "type": "string"
          },
          "updateTime": {
            "description": "[Output only] Update time stamp",
            "type": "string"
          },
          "uris": {
            "$ref": "#/types/google-native:contactcenteraiplatform%2Fv1alpha1:URIsResponse",
            "description": "URIs to access the deployed ContactCenters."
          },
          "userEmail": {
            "description": "Optional. Email address of the first admin user.",
            "type": "string"
          }
        },
        "required": [
          "adminUser",
          "ccaipManagedUsers",
          "createTime",
          "customerDomainPrefix",
          "displayName",
          "instanceConfig",
          "kmsKey",
          "labels",
          "name",
          "samlParams",
          "state",
          "updateTime",
          "uris",
          "userEmail"
        ],
        "type": "object"
      }
    },
    "google-native:contactcenterinsights/v1:getAnalysis": {
      "description": "Gets an analysis.",
      "inputs": {
        "properties": {
          "analysisId": {
            "type": "string"
          },
          "conversationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "analysisId",
          "conversationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "analysisResult": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnalysisResultResponse",
            "description": "The result of the analysis, which is populated when the analysis finishes."
          },
          "annotatorSelector": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnnotatorSelectorResponse",
            "description": "To select the annotators to run and the phrase matchers to use (if any). If not specified, all annotators will be run."
          },
          "createTime": {
            "description": "The time at which the analysis was created, which occurs when the long-running operation completes.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the analysis. Format: projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis}",
            "type": "string"
          },
          "requestTime": {
            "description": "The time at which the analysis was requested.",
            "type": "string"
          }
        },
        "required": [
          "analysisResult",
          "annotatorSelector",
          "createTime",
          "name",
          "requestTime"
        ],
        "type": "object"
      }
    },
    "google-native:contactcenterinsights/v1:getConversation": {
      "description": "Gets a conversation.",
      "inputs": {
        "properties": {
          "conversationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "agentId": {
            "description": "An opaque, user-specified string representing the human agent who handled the conversation.",
            "type": "string"
          },
          "callMetadata": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationCallMetadataResponse",
            "description": "Call-specific metadata."
          },
          "createTime": {
            "description": "The time at which the conversation was created.",
            "type": "string"
          },
          "dataSource": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationDataSourceResponse",
            "description": "The source of the audio and transcription for the conversation."
          },
          "dialogflowIntents": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "All the matched Dialogflow intents in the call. The key corresponds to a Dialogflow intent, format: projects/{project}/agent/{agent}/intents/{intent}",
            "type": "object"
          },
          "duration": {
            "description": "The duration of the conversation.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time at which this conversation should expire. After this time, the conversation data and any associated analyses will be deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map for the user to specify any custom fields. A maximum of 20 labels per conversation is allowed, with a maximum of 256 characters per entry.",
            "type": "object"
          },
          "languageCode": {
            "description": "A user-specified language code for the conversation.",
            "type": "string"
          },
          "latestAnalysis": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1AnalysisResponse",
            "description": "The conversation's latest analysis, if one exists."
          },
          "latestSummary": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationSummarizationSuggestionDataResponse",
            "description": "Latest summary of the conversation."
          },
          "medium": {
            "description": "Immutable. The conversation medium, if unspecified will default to PHONE_CALL.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the conversation. Format: projects/{project}/locations/{location}/conversations/{conversation}",
            "type": "string"
          },
          "obfuscatedUserId": {
            "description": "Obfuscated user ID which the customer sent to us.",
            "type": "string"
          },
          "runtimeAnnotations": {
            "description": "The annotations that were generated during the customer and agent interaction.",
            "items": {
              "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1RuntimeAnnotationResponse"
            },
            "type": "array"
          },
          "startTime": {
            "description": "The time at which the conversation started.",
            "type": "string"
          },
          "transcript": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1ConversationTranscriptResponse",
            "description": "The conversation transcript."
          },
          "ttl": {
            "description": "Input only. The TTL for this resource. If specified, then this TTL will be used to calculate the expire time.",
            "type": "string"
          },
          "turnCount": {
            "description": "The number of turns in the conversation.",
            "type": "integer"
          },
          "updateTime": {
            "description": "The most recent time at which the conversation was updated.",
            "type": "string"
          }
        },
        "required": [
          "agentId",
          "callMetadata",
          "createTime",
          "dataSource",
          "dialogflowIntents",
          "duration",
          "expireTime",
          "labels",
          "languageCode",
          "latestAnalysis",
          "latestSummary",
          "medium",
          "name",
          "obfuscatedUserId",
          "runtimeAnnotations",
          "startTime",
          "transcript",
          "ttl",
          "turnCount",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:contactcenterinsights/v1:getIssueModel": {
      "description": "Gets an issue model.",
      "inputs": {
        "properties": {
          "issueModelId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "issueModelId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which this issue model was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The representative name for the issue model.",
            "type": "string"
          },
          "inputDataConfig": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueModelInputDataConfigResponse",
            "description": "Configs for the input data that used to create the issue model."
          },
          "issueCount": {
            "description": "Number of issues in this issue model.",
            "type": "string"
          },
          "languageCode": {
            "description": "Language of the model.",
            "type": "string"
          },
          "modelType": {
            "description": "Type of the model.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the issue model. Format: projects/{project}/locations/{location}/issueModels/{issue_model}",
            "type": "string"
          },
          "state": {
            "description": "State of the model.",
            "type": "string"
          },
          "trainingStats": {
            "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1IssueModelLabelStatsResponse",
            "description": "Immutable. The issue model's label statistics on its training data."
          },
          "updateTime": {
            "description": "The most recent time at which the issue model was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "inputDataConfig",
          "issueCount",
          "languageCode",
          "modelType",
          "name",
          "state",
          "trainingStats",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:contactcenterinsights/v1:getPhraseMatcher": {
      "description": "Gets a phrase matcher.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "phraseMatcherId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "phraseMatcherId"
        ]
      },
      "outputs": {
        "properties": {
          "activationUpdateTime": {
            "description": "The most recent time at which the activation status was updated.",
            "type": "string"
          },
          "active": {
            "description": "Applies the phrase matcher only when it is active.",
            "type": "boolean"
          },
          "displayName": {
            "description": "The human-readable name of the phrase matcher.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the phrase matcher. Format: projects/{project}/locations/{location}/phraseMatchers/{phrase_matcher}",
            "type": "string"
          },
          "phraseMatchRuleGroups": {
            "description": "A list of phase match rule groups that are included in this matcher.",
            "items": {
              "$ref": "#/types/google-native:contactcenterinsights%2Fv1:GoogleCloudContactcenterinsightsV1PhraseMatchRuleGroupResponse"
            },
            "type": "array"
          },
          "revisionCreateTime": {
            "description": "The timestamp of when the revision was created. It is also the create time when a new matcher is added.",
            "type": "string"
          },
          "revisionId": {
            "description": "Immutable. The revision ID of the phrase matcher. A new revision is committed whenever the matcher is changed, except when it is activated or deactivated. A server generated random ID will be used. Example: locations/global/phraseMatchers/my-first-matcher@1234567",
            "type": "string"
          },
          "roleMatch": {
            "description": "The role whose utterances the phrase matcher should be matched against. If the role is ROLE_UNSPECIFIED it will be matched against any utterances in the transcript.",
            "type": "string"
          },
          "type": {
            "description": "The type of this phrase matcher.",
            "type": "string"
          },
          "updateTime": {
            "description": "The most recent time at which the phrase matcher was updated.",
            "type": "string"
          },
          "versionTag": {
            "description": "The customized version tag to use for the phrase matcher. If not specified, it will default to `revision_id`.",
            "type": "string"
          }
        },
        "required": [
          "activationUpdateTime",
          "active",
          "displayName",
          "name",
          "phraseMatchRuleGroups",
          "revisionCreateTime",
          "revisionId",
          "roleMatch",
          "type",
          "updateTime",
          "versionTag"
        ],
        "type": "object"
      }
    },
    "google-native:contactcenterinsights/v1:getView": {
      "description": "Gets a view.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "viewId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "viewId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which this view was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable display name of the view.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the view. Format: projects/{project}/locations/{location}/views/{view}",
            "type": "string"
          },
          "updateTime": {
            "description": "The most recent time at which the view was updated.",
            "type": "string"
          },
          "value": {
            "description": "String with specific view properties, must be non-empty.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "name",
          "updateTime",
          "value"
        ],
        "type": "object"
      }
    },
    "google-native:container/v1:Cluster/getKubeconfig": {
      "description": "Generate a kubeconfig for cluster authentication.\n\nThe kubeconfig generated is automatically stringified for ease of use with the pulumi/kubernetes provider.\nThe kubeconfig uses the new `gke-gcloud-auth-plugin` authentication plugin as recommended by Google.\n\nSee for more details:\n- https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke",
      "inputs": {
        "properties": {
          "__self__": {
            "$ref": "#/resources/google-native:container%2Fv1:Cluster"
          }
        },
        "type": "object",
        "required": [
          "__self__"
        ]
      },
      "outputs": {
        "properties": {
          "kubeconfig": {
            "type": "string"
          }
        },
        "required": [
          "kubeconfig"
        ],
        "type": "object"
      }
    },
    "google-native:container/v1:getCluster": {
      "description": "Gets the details of a specific cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "addonsConfig": {
            "$ref": "#/types/google-native:container%2Fv1:AddonsConfigResponse",
            "description": "Configurations for the various addons available to run in the cluster."
          },
          "authenticatorGroupsConfig": {
            "$ref": "#/types/google-native:container%2Fv1:AuthenticatorGroupsConfigResponse",
            "description": "Configuration controlling RBAC group membership information."
          },
          "autopilot": {
            "$ref": "#/types/google-native:container%2Fv1:AutopilotResponse",
            "description": "Autopilot configuration for the cluster."
          },
          "autoscaling": {
            "$ref": "#/types/google-native:container%2Fv1:ClusterAutoscalingResponse",
            "description": "Cluster-level autoscaling configuration."
          },
          "binaryAuthorization": {
            "$ref": "#/types/google-native:container%2Fv1:BinaryAuthorizationResponse",
            "description": "Configuration for Binary Authorization."
          },
          "clusterIpv4Cidr": {
            "description": "The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.",
            "type": "string"
          },
          "conditions": {
            "description": "Which conditions caused the current cluster state.",
            "items": {
              "$ref": "#/types/google-native:container%2Fv1:StatusConditionResponse"
            },
            "type": "array"
          },
          "confidentialNodes": {
            "$ref": "#/types/google-native:container%2Fv1:ConfidentialNodesResponse",
            "description": "Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled."
          },
          "costManagementConfig": {
            "$ref": "#/types/google-native:container%2Fv1:CostManagementConfigResponse",
            "description": "Configuration for the fine-grained cost management feature."
          },
          "createTime": {
            "description": "[Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          },
          "currentMasterVersion": {
            "description": "[Output only] The current software version of the master endpoint.",
            "type": "string"
          },
          "currentNodeCount": {
            "deprecationMessage": "[Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.",
            "description": "[Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.",
            "type": "integer"
          },
          "currentNodeVersion": {
            "description": "[Output only] Deprecated, use [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they're in the process of being upgraded, this reflects the minimum version of all nodes.",
            "type": "string"
          },
          "databaseEncryption": {
            "$ref": "#/types/google-native:container%2Fv1:DatabaseEncryptionResponse",
            "description": "Configuration of etcd encryption."
          },
          "defaultMaxPodsConstraint": {
            "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraintResponse",
            "description": "The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support."
          },
          "description": {
            "description": "An optional description of this cluster.",
            "type": "string"
          },
          "enableK8sBetaApis": {
            "$ref": "#/types/google-native:container%2Fv1:K8sBetaAPIConfigResponse",
            "description": "Beta APIs Config"
          },
          "enableKubernetesAlpha": {
            "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.",
            "type": "boolean"
          },
          "enableTpu": {
            "description": "Enable the ability to use Cloud TPUs in this cluster.",
            "type": "boolean"
          },
          "endpoint": {
            "description": "[Output only] The IP address of this cluster's master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.",
            "type": "string"
          },
          "enterpriseConfig": {
            "$ref": "#/types/google-native:container%2Fv1:EnterpriseConfigResponse",
            "description": "GKE Enterprise Configuration."
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "expireTime": {
            "description": "[Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          },
          "fleet": {
            "$ref": "#/types/google-native:container%2Fv1:FleetResponse",
            "description": "Fleet information for the cluster."
          },
          "identityServiceConfig": {
            "$ref": "#/types/google-native:container%2Fv1:IdentityServiceConfigResponse",
            "description": "Configuration for Identity Service component."
          },
          "initialClusterVersion": {
            "description": "The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"\",\"-\": picks the default Kubernetes version",
            "type": "string"
          },
          "initialNodeCount": {
            "deprecationMessage": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.",
            "description": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.",
            "type": "integer"
          },
          "instanceGroupUrls": {
            "deprecationMessage": "Deprecated. Use node_pools.instance_group_urls.",
            "description": "Deprecated. Use node_pools.instance_group_urls.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ipAllocationPolicy": {
            "$ref": "#/types/google-native:container%2Fv1:IPAllocationPolicyResponse",
            "description": "Configuration for cluster IP allocation."
          },
          "labelFingerprint": {
            "description": "The fingerprint of the set of labels for this cluster.",
            "type": "string"
          },
          "legacyAbac": {
            "$ref": "#/types/google-native:container%2Fv1:LegacyAbacResponse",
            "description": "Configuration for the legacy ABAC authorization mode."
          },
          "location": {
            "description": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.",
            "type": "string"
          },
          "locations": {
            "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "loggingConfig": {
            "$ref": "#/types/google-native:container%2Fv1:LoggingConfigResponse",
            "description": "Logging configuration for the cluster."
          },
          "loggingService": {
            "description": "The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.",
            "type": "string"
          },
          "maintenancePolicy": {
            "$ref": "#/types/google-native:container%2Fv1:MaintenancePolicyResponse",
            "description": "Configure the maintenance policy for this cluster."
          },
          "masterAuth": {
            "$ref": "#/types/google-native:container%2Fv1:MasterAuthResponse",
            "description": "The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to \"admin\", a random password will be generated, and a client certificate will be issued."
          },
          "masterAuthorizedNetworksConfig": {
            "$ref": "#/types/google-native:container%2Fv1:MasterAuthorizedNetworksConfigResponse",
            "description": "The configuration options for master authorized networks feature."
          },
          "meshCertificates": {
            "$ref": "#/types/google-native:container%2Fv1:MeshCertificatesResponse",
            "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:container%2Fv1:MonitoringConfigResponse",
            "description": "Monitoring configuration for the cluster."
          },
          "monitoringService": {
            "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.",
            "type": "string"
          },
          "name": {
            "description": "The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter.",
            "type": "string"
          },
          "network": {
            "description": "The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:container%2Fv1:NetworkConfigResponse",
            "description": "Configuration for cluster networking."
          },
          "networkPolicy": {
            "$ref": "#/types/google-native:container%2Fv1:NetworkPolicyResponse",
            "description": "Configuration options for the NetworkPolicy feature."
          },
          "nodeConfig": {
            "$ref": "#/types/google-native:container%2Fv1:NodeConfigResponse",
            "deprecationMessage": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.",
            "description": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead."
          },
          "nodeIpv4CidrSize": {
            "description": "[Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode.",
            "type": "integer"
          },
          "nodePoolAutoConfig": {
            "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoConfigResponse",
            "description": "Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
          },
          "nodePoolDefaults": {
            "$ref": "#/types/google-native:container%2Fv1:NodePoolDefaultsResponse",
            "description": "Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object."
          },
          "nodePools": {
            "description": "The node pools associated with this cluster. This field should not be set if \"node_config\" or \"initial_node_count\" are specified.",
            "items": {
              "$ref": "#/types/google-native:container%2Fv1:NodePoolResponse"
            },
            "type": "array"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:container%2Fv1:NotificationConfigResponse",
            "description": "Notification configuration of the cluster."
          },
          "parentProductConfig": {
            "$ref": "#/types/google-native:container%2Fv1:ParentProductConfigResponse",
            "description": "The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster."
          },
          "privateClusterConfig": {
            "$ref": "#/types/google-native:container%2Fv1:PrivateClusterConfigResponse",
            "description": "Configuration for private cluster."
          },
          "releaseChannel": {
            "$ref": "#/types/google-native:container%2Fv1:ReleaseChannelResponse",
            "description": "Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version."
          },
          "resourceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for the cluster to use to annotate any related Google Compute Engine resources.",
            "type": "object"
          },
          "resourceUsageExportConfig": {
            "$ref": "#/types/google-native:container%2Fv1:ResourceUsageExportConfigResponse",
            "description": "Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified."
          },
          "securityPostureConfig": {
            "$ref": "#/types/google-native:container%2Fv1:SecurityPostureConfigResponse",
            "description": "Enable/Disable Security Posture API features for the cluster."
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "servicesIpv4Cidr": {
            "description": "[Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.",
            "type": "string"
          },
          "shieldedNodes": {
            "$ref": "#/types/google-native:container%2Fv1:ShieldedNodesResponse",
            "description": "Shielded Nodes configuration."
          },
          "status": {
            "description": "[Output only] The current status of this cluster.",
            "type": "string"
          },
          "statusMessage": {
            "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.",
            "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.",
            "type": "string"
          },
          "subnetwork": {
            "description": "The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected.",
            "type": "string"
          },
          "tpuIpv4CidrBlock": {
            "description": "[Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`).",
            "type": "string"
          },
          "verticalPodAutoscaling": {
            "$ref": "#/types/google-native:container%2Fv1:VerticalPodAutoscalingResponse",
            "description": "Cluster-level Vertical Pod Autoscaling configuration."
          },
          "workloadIdentityConfig": {
            "$ref": "#/types/google-native:container%2Fv1:WorkloadIdentityConfigResponse",
            "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies."
          },
          "zone": {
            "deprecationMessage": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.",
            "description": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.",
            "type": "string"
          }
        },
        "required": [
          "addonsConfig",
          "authenticatorGroupsConfig",
          "autopilot",
          "autoscaling",
          "binaryAuthorization",
          "clusterIpv4Cidr",
          "conditions",
          "confidentialNodes",
          "costManagementConfig",
          "createTime",
          "currentMasterVersion",
          "currentNodeCount",
          "currentNodeVersion",
          "databaseEncryption",
          "defaultMaxPodsConstraint",
          "description",
          "enableK8sBetaApis",
          "enableKubernetesAlpha",
          "enableTpu",
          "endpoint",
          "enterpriseConfig",
          "etag",
          "expireTime",
          "fleet",
          "identityServiceConfig",
          "initialClusterVersion",
          "initialNodeCount",
          "instanceGroupUrls",
          "ipAllocationPolicy",
          "labelFingerprint",
          "legacyAbac",
          "location",
          "locations",
          "loggingConfig",
          "loggingService",
          "maintenancePolicy",
          "masterAuth",
          "masterAuthorizedNetworksConfig",
          "meshCertificates",
          "monitoringConfig",
          "monitoringService",
          "name",
          "network",
          "networkConfig",
          "networkPolicy",
          "nodeConfig",
          "nodeIpv4CidrSize",
          "nodePoolAutoConfig",
          "nodePoolDefaults",
          "nodePools",
          "notificationConfig",
          "parentProductConfig",
          "privateClusterConfig",
          "releaseChannel",
          "resourceLabels",
          "resourceUsageExportConfig",
          "securityPostureConfig",
          "selfLink",
          "servicesIpv4Cidr",
          "shieldedNodes",
          "status",
          "statusMessage",
          "subnetwork",
          "tpuIpv4CidrBlock",
          "verticalPodAutoscaling",
          "workloadIdentityConfig",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:container/v1:getNodePool": {
      "description": "Retrieves the requested node pool.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "nodePoolId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location",
          "nodePoolId"
        ]
      },
      "outputs": {
        "properties": {
          "autoscaling": {
            "$ref": "#/types/google-native:container%2Fv1:NodePoolAutoscalingResponse",
            "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
          },
          "bestEffortProvisioning": {
            "$ref": "#/types/google-native:container%2Fv1:BestEffortProvisioningResponse",
            "description": "Enable best effort provisioning for nodes"
          },
          "conditions": {
            "description": "Which conditions caused the current node pool state.",
            "items": {
              "$ref": "#/types/google-native:container%2Fv1:StatusConditionResponse"
            },
            "type": "array"
          },
          "config": {
            "$ref": "#/types/google-native:container%2Fv1:NodeConfigResponse",
            "description": "The node configuration of the pool."
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "initialNodeCount": {
            "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota.",
            "type": "integer"
          },
          "instanceGroupUrls": {
            "description": "[Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locations": {
            "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "management": {
            "$ref": "#/types/google-native:container%2Fv1:NodeManagementResponse",
            "description": "NodeManagement configuration for this NodePool."
          },
          "maxPodsConstraint": {
            "$ref": "#/types/google-native:container%2Fv1:MaxPodsConstraintResponse",
            "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
          },
          "name": {
            "description": "The name of the node pool.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:container%2Fv1:NodeNetworkConfigResponse",
            "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
          },
          "placementPolicy": {
            "$ref": "#/types/google-native:container%2Fv1:PlacementPolicyResponse",
            "description": "Specifies the node placement policy."
          },
          "podIpv4CidrSize": {
            "description": "[Output only] The pod CIDR block size per node in this node pool.",
            "type": "integer"
          },
          "queuedProvisioning": {
            "$ref": "#/types/google-native:container%2Fv1:QueuedProvisioningResponse",
            "description": "Specifies the configuration of queued provisioning."
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "[Output only] The status of the nodes in this pool instance.",
            "type": "string"
          },
          "statusMessage": {
            "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.",
            "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.",
            "type": "string"
          },
          "updateInfo": {
            "$ref": "#/types/google-native:container%2Fv1:UpdateInfoResponse",
            "description": "[Output only] Update info contains relevant information during a node pool update."
          },
          "upgradeSettings": {
            "$ref": "#/types/google-native:container%2Fv1:UpgradeSettingsResponse",
            "description": "Upgrade settings control disruption and speed of the upgrade."
          },
          "version": {
            "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version).",
            "type": "string"
          }
        },
        "required": [
          "autoscaling",
          "bestEffortProvisioning",
          "conditions",
          "config",
          "etag",
          "initialNodeCount",
          "instanceGroupUrls",
          "locations",
          "management",
          "maxPodsConstraint",
          "name",
          "networkConfig",
          "placementPolicy",
          "podIpv4CidrSize",
          "queuedProvisioning",
          "selfLink",
          "status",
          "statusMessage",
          "updateInfo",
          "upgradeSettings",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:container/v1:getServerConfig": {
      "description": "Returns configuration info about the Google Kubernetes Engine service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "channels": {
            "description": "List of release channel configurations.",
            "items": {
              "$ref": "#/types/google-native:container%2Fv1:ReleaseChannelConfigResponse"
            },
            "type": "array"
          },
          "defaultClusterVersion": {
            "description": "Version of Kubernetes the service deploys by default.",
            "type": "string"
          },
          "defaultImageType": {
            "description": "Default image type.",
            "type": "string"
          },
          "validImageTypes": {
            "description": "List of valid image types.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validMasterVersions": {
            "description": "List of valid master versions, in descending order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validNodeVersions": {
            "description": "List of valid node upgrade target versions, in descending order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "channels",
          "defaultClusterVersion",
          "defaultImageType",
          "validImageTypes",
          "validMasterVersions",
          "validNodeVersions"
        ],
        "type": "object"
      }
    },
    "google-native:container/v1beta1:Cluster/getKubeconfig": {
      "description": "Generate a kubeconfig for cluster authentication.\n\nThe kubeconfig generated is automatically stringified for ease of use with the pulumi/kubernetes provider.\nThe kubeconfig uses the new `gke-gcloud-auth-plugin` authentication plugin as recommended by Google.\n\nSee for more details:\n- https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke",
      "inputs": {
        "properties": {
          "__self__": {
            "$ref": "#/resources/google-native:container%2Fv1beta1:Cluster"
          }
        },
        "type": "object",
        "required": [
          "__self__"
        ]
      },
      "outputs": {
        "properties": {
          "kubeconfig": {
            "type": "string"
          }
        },
        "required": [
          "kubeconfig"
        ],
        "type": "object"
      }
    },
    "google-native:container/v1beta1:getCluster": {
      "description": "Gets the details for a specific cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location",
          "projectId",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "addonsConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AddonsConfigResponse",
            "description": "Configurations for the various addons available to run in the cluster."
          },
          "authenticatorGroupsConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AuthenticatorGroupsConfigResponse",
            "description": "Configuration controlling RBAC group membership information."
          },
          "autopilot": {
            "$ref": "#/types/google-native:container%2Fv1beta1:AutopilotResponse",
            "description": "Autopilot configuration for the cluster."
          },
          "autoscaling": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ClusterAutoscalingResponse",
            "description": "Cluster-level autoscaling configuration."
          },
          "binaryAuthorization": {
            "$ref": "#/types/google-native:container%2Fv1beta1:BinaryAuthorizationResponse",
            "description": "Configuration for Binary Authorization."
          },
          "clusterIpv4Cidr": {
            "description": "The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.",
            "type": "string"
          },
          "clusterTelemetry": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ClusterTelemetryResponse",
            "description": "Telemetry integration for the cluster."
          },
          "conditions": {
            "description": "Which conditions caused the current cluster state.",
            "items": {
              "$ref": "#/types/google-native:container%2Fv1beta1:StatusConditionResponse"
            },
            "type": "array"
          },
          "confidentialNodes": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ConfidentialNodesResponse",
            "description": "Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled."
          },
          "costManagementConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:CostManagementConfigResponse",
            "description": "Configuration for the fine-grained cost management feature."
          },
          "createTime": {
            "description": "[Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          },
          "currentMasterVersion": {
            "description": "[Output only] The current software version of the master endpoint.",
            "type": "string"
          },
          "currentNodeCount": {
            "deprecationMessage": "[Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.",
            "description": "[Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.",
            "type": "integer"
          },
          "currentNodeVersion": {
            "description": "[Output only] Deprecated, use [NodePool.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they're in the process of being upgraded, this reflects the minimum version of all nodes.",
            "type": "string"
          },
          "databaseEncryption": {
            "$ref": "#/types/google-native:container%2Fv1beta1:DatabaseEncryptionResponse",
            "description": "Configuration of etcd encryption."
          },
          "defaultMaxPodsConstraint": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraintResponse",
            "description": "The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support."
          },
          "description": {
            "description": "An optional description of this cluster.",
            "type": "string"
          },
          "enableK8sBetaApis": {
            "$ref": "#/types/google-native:container%2Fv1beta1:K8sBetaAPIConfigResponse",
            "description": "Kubernetes open source beta apis enabled on the cluster. Only beta apis."
          },
          "enableKubernetesAlpha": {
            "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1beta1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.",
            "type": "boolean"
          },
          "enableTpu": {
            "deprecationMessage": "Enable the ability to use Cloud TPUs in this cluster. This field is deprecated, use tpu_config.enabled instead.",
            "description": "Enable the ability to use Cloud TPUs in this cluster. This field is deprecated, use tpu_config.enabled instead.",
            "type": "boolean"
          },
          "endpoint": {
            "description": "[Output only] The IP address of this cluster's master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.",
            "type": "string"
          },
          "enterpriseConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:EnterpriseConfigResponse",
            "description": "GKE Enterprise Configuration."
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "expireTime": {
            "description": "[Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          },
          "fleet": {
            "$ref": "#/types/google-native:container%2Fv1beta1:FleetResponse",
            "description": "Fleet information for the cluster."
          },
          "identityServiceConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:IdentityServiceConfigResponse",
            "description": "Configuration for Identity Service component."
          },
          "initialClusterVersion": {
            "description": "The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - \"latest\": picks the highest valid Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes version - \"\",\"-\": picks the default Kubernetes version",
            "type": "string"
          },
          "initialNodeCount": {
            "deprecationMessage": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.",
            "description": "The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"node_config\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.",
            "type": "integer"
          },
          "instanceGroupUrls": {
            "deprecationMessage": "Deprecated. Use node_pools.instance_group_urls.",
            "description": "Deprecated. Use node_pools.instance_group_urls.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ipAllocationPolicy": {
            "$ref": "#/types/google-native:container%2Fv1beta1:IPAllocationPolicyResponse",
            "description": "Configuration for cluster IP allocation."
          },
          "labelFingerprint": {
            "description": "The fingerprint of the set of labels for this cluster.",
            "type": "string"
          },
          "legacyAbac": {
            "$ref": "#/types/google-native:container%2Fv1beta1:LegacyAbacResponse",
            "description": "Configuration for the legacy ABAC authorization mode."
          },
          "location": {
            "description": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.",
            "type": "string"
          },
          "locations": {
            "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster's nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "loggingConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:LoggingConfigResponse",
            "description": "Logging configuration for the cluster."
          },
          "loggingService": {
            "description": "The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.",
            "type": "string"
          },
          "maintenancePolicy": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MaintenancePolicyResponse",
            "description": "Configure the maintenance policy for this cluster."
          },
          "master": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MasterResponse",
            "description": "Configuration for master components."
          },
          "masterAuth": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MasterAuthResponse",
            "description": "The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to \"admin\", a random password will be generated, and a client certificate will be issued."
          },
          "masterAuthorizedNetworksConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MasterAuthorizedNetworksConfigResponse",
            "description": "The configuration options for master authorized networks feature."
          },
          "masterIpv4CidrBlock": {
            "deprecationMessage": "The IP prefix in CIDR notation to use for the hosted master network. This prefix will be used for assigning private IP addresses to the master or set of masters, as well as the ILB VIP. This field is deprecated, use private_cluster_config.master_ipv4_cidr_block instead.",
            "description": "The IP prefix in CIDR notation to use for the hosted master network. This prefix will be used for assigning private IP addresses to the master or set of masters, as well as the ILB VIP. This field is deprecated, use private_cluster_config.master_ipv4_cidr_block instead.",
            "type": "string"
          },
          "meshCertificates": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MeshCertificatesResponse",
            "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MonitoringConfigResponse",
            "description": "Monitoring configuration for the cluster."
          },
          "monitoringService": {
            "description": "The monitoring service the cluster should use to write metrics. Currently available options: * \"monitoring.googleapis.com/kubernetes\" - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.",
            "type": "string"
          },
          "name": {
            "description": "The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter.",
            "type": "string"
          },
          "network": {
            "description": "The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used. On output this shows the network ID instead of the name.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NetworkConfigResponse",
            "description": "Configuration for cluster networking."
          },
          "networkPolicy": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NetworkPolicyResponse",
            "description": "Configuration options for the NetworkPolicy feature."
          },
          "nodeConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfigResponse",
            "deprecationMessage": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.",
            "description": "Parameters used in creating the cluster's nodes. For requests, this field should only be used in lieu of a \"node_pool\" object, since this configuration (along with the \"initial_node_count\") will be used to create a \"NodePool\" object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead."
          },
          "nodeIpv4CidrSize": {
            "description": "[Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode.",
            "type": "integer"
          },
          "nodePoolAutoConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoConfigResponse",
            "description": "Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters."
          },
          "nodePoolDefaults": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolDefaultsResponse",
            "description": "Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object."
          },
          "nodePools": {
            "description": "The node pools associated with this cluster. This field should not be set if \"node_config\" or \"initial_node_count\" are specified.",
            "items": {
              "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolResponse"
            },
            "type": "array"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NotificationConfigResponse",
            "description": "Notification configuration of the cluster."
          },
          "parentProductConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ParentProductConfigResponse",
            "description": "The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster."
          },
          "podSecurityPolicyConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:PodSecurityPolicyConfigResponse",
            "description": "Configuration for the PodSecurityPolicy feature."
          },
          "privateCluster": {
            "deprecationMessage": "If this is a private cluster setup. Private clusters are clusters that, by default have no external IP addresses on the nodes and where nodes and the master communicate over private IP addresses. This field is deprecated, use private_cluster_config.enable_private_nodes instead.",
            "description": "If this is a private cluster setup. Private clusters are clusters that, by default have no external IP addresses on the nodes and where nodes and the master communicate over private IP addresses. This field is deprecated, use private_cluster_config.enable_private_nodes instead.",
            "type": "boolean"
          },
          "privateClusterConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:PrivateClusterConfigResponse",
            "description": "Configuration for private cluster."
          },
          "protectConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ProtectConfigResponse",
            "deprecationMessage": "Deprecated: Use SecurityPostureConfig instead. Enable/Disable Protect API features for the cluster.",
            "description": "Deprecated: Use SecurityPostureConfig instead. Enable/Disable Protect API features for the cluster."
          },
          "releaseChannel": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ReleaseChannelResponse",
            "description": "Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version."
          },
          "resourceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for the cluster to use to annotate any related Google Compute Engine resources.",
            "type": "object"
          },
          "resourceUsageExportConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ResourceUsageExportConfigResponse",
            "description": "Configuration for exporting resource usages. Resource usage export is disabled when this config unspecified."
          },
          "securityPostureConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:SecurityPostureConfigResponse",
            "description": "Enable/Disable Security Posture API features for the cluster."
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "servicesIpv4Cidr": {
            "description": "[Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.",
            "type": "string"
          },
          "shieldedNodes": {
            "$ref": "#/types/google-native:container%2Fv1beta1:ShieldedNodesResponse",
            "description": "Shielded Nodes configuration."
          },
          "status": {
            "description": "[Output only] The current status of this cluster.",
            "type": "string"
          },
          "statusMessage": {
            "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.",
            "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.",
            "type": "string"
          },
          "subnetwork": {
            "description": "The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected. On output this shows the subnetwork ID instead of the name.",
            "type": "string"
          },
          "tpuConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:TpuConfigResponse",
            "description": "Configuration for Cloud TPU support;"
          },
          "tpuIpv4CidrBlock": {
            "description": "[Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`).",
            "type": "string"
          },
          "verticalPodAutoscaling": {
            "$ref": "#/types/google-native:container%2Fv1beta1:VerticalPodAutoscalingResponse",
            "description": "Cluster-level Vertical Pod Autoscaling configuration."
          },
          "workloadAltsConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadALTSConfigResponse",
            "description": "Configuration for direct-path (via ALTS) with workload identity."
          },
          "workloadCertificates": {
            "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadCertificatesResponse",
            "description": "Configuration for issuance of mTLS keys and certificates to Kubernetes pods."
          },
          "workloadIdentityConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:WorkloadIdentityConfigResponse",
            "description": "Configuration for the use of Kubernetes Service Accounts in GCP IAM policies."
          },
          "zone": {
            "deprecationMessage": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.",
            "description": "[Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.",
            "type": "string"
          }
        },
        "required": [
          "addonsConfig",
          "authenticatorGroupsConfig",
          "autopilot",
          "autoscaling",
          "binaryAuthorization",
          "clusterIpv4Cidr",
          "clusterTelemetry",
          "conditions",
          "confidentialNodes",
          "costManagementConfig",
          "createTime",
          "currentMasterVersion",
          "currentNodeCount",
          "currentNodeVersion",
          "databaseEncryption",
          "defaultMaxPodsConstraint",
          "description",
          "enableK8sBetaApis",
          "enableKubernetesAlpha",
          "enableTpu",
          "endpoint",
          "enterpriseConfig",
          "etag",
          "expireTime",
          "fleet",
          "identityServiceConfig",
          "initialClusterVersion",
          "initialNodeCount",
          "instanceGroupUrls",
          "ipAllocationPolicy",
          "labelFingerprint",
          "legacyAbac",
          "location",
          "locations",
          "loggingConfig",
          "loggingService",
          "maintenancePolicy",
          "master",
          "masterAuth",
          "masterAuthorizedNetworksConfig",
          "masterIpv4CidrBlock",
          "meshCertificates",
          "monitoringConfig",
          "monitoringService",
          "name",
          "network",
          "networkConfig",
          "networkPolicy",
          "nodeConfig",
          "nodeIpv4CidrSize",
          "nodePoolAutoConfig",
          "nodePoolDefaults",
          "nodePools",
          "notificationConfig",
          "parentProductConfig",
          "podSecurityPolicyConfig",
          "privateCluster",
          "privateClusterConfig",
          "protectConfig",
          "releaseChannel",
          "resourceLabels",
          "resourceUsageExportConfig",
          "securityPostureConfig",
          "selfLink",
          "servicesIpv4Cidr",
          "shieldedNodes",
          "status",
          "statusMessage",
          "subnetwork",
          "tpuConfig",
          "tpuIpv4CidrBlock",
          "verticalPodAutoscaling",
          "workloadAltsConfig",
          "workloadCertificates",
          "workloadIdentityConfig",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:container/v1beta1:getNodePool": {
      "description": "Retrieves the requested node pool.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "nodePoolId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location",
          "nodePoolId",
          "projectId",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "autoscaling": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodePoolAutoscalingResponse",
            "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present."
          },
          "bestEffortProvisioning": {
            "$ref": "#/types/google-native:container%2Fv1beta1:BestEffortProvisioningResponse",
            "description": "Enable best effort provisioning for nodes"
          },
          "conditions": {
            "description": "Which conditions caused the current node pool state.",
            "items": {
              "$ref": "#/types/google-native:container%2Fv1beta1:StatusConditionResponse"
            },
            "type": "array"
          },
          "config": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeConfigResponse",
            "description": "The node configuration of the pool."
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "initialNodeCount": {
            "description": "The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota.",
            "type": "integer"
          },
          "instanceGroupUrls": {
            "description": "[Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "locations": {
            "description": "The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool's nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "management": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeManagementResponse",
            "description": "NodeManagement configuration for this NodePool."
          },
          "maxPodsConstraint": {
            "$ref": "#/types/google-native:container%2Fv1beta1:MaxPodsConstraintResponse",
            "description": "The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool."
          },
          "name": {
            "description": "The name of the node pool.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:container%2Fv1beta1:NodeNetworkConfigResponse",
            "description": "Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults."
          },
          "placementPolicy": {
            "$ref": "#/types/google-native:container%2Fv1beta1:PlacementPolicyResponse",
            "description": "Specifies the node placement policy."
          },
          "podIpv4CidrSize": {
            "description": "[Output only] The pod CIDR block size per node in this node pool.",
            "type": "integer"
          },
          "queuedProvisioning": {
            "$ref": "#/types/google-native:container%2Fv1beta1:QueuedProvisioningResponse",
            "description": "Specifies the configuration of queued provisioning."
          },
          "selfLink": {
            "description": "[Output only] Server-defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "description": "[Output only] The status of the nodes in this pool instance.",
            "type": "string"
          },
          "statusMessage": {
            "deprecationMessage": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.",
            "description": "[Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.",
            "type": "string"
          },
          "updateInfo": {
            "$ref": "#/types/google-native:container%2Fv1beta1:UpdateInfoResponse",
            "description": "[Output only] Update info contains relevant information during a node pool update."
          },
          "upgradeSettings": {
            "$ref": "#/types/google-native:container%2Fv1beta1:UpgradeSettingsResponse",
            "description": "Upgrade settings control disruption and speed of the upgrade."
          },
          "version": {
            "description": "The version of Kubernetes running on this NodePool's nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version).",
            "type": "string"
          }
        },
        "required": [
          "autoscaling",
          "bestEffortProvisioning",
          "conditions",
          "config",
          "etag",
          "initialNodeCount",
          "instanceGroupUrls",
          "locations",
          "management",
          "maxPodsConstraint",
          "name",
          "networkConfig",
          "placementPolicy",
          "podIpv4CidrSize",
          "queuedProvisioning",
          "selfLink",
          "status",
          "statusMessage",
          "updateInfo",
          "upgradeSettings",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:container/v1beta1:getServerConfig": {
      "description": "Returns configuration info about the Google Kubernetes Engine service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "projectId",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "channels": {
            "description": "List of release channel configurations.",
            "items": {
              "$ref": "#/types/google-native:container%2Fv1beta1:ReleaseChannelConfigResponse"
            },
            "type": "array"
          },
          "defaultClusterVersion": {
            "description": "Version of Kubernetes the service deploys by default.",
            "type": "string"
          },
          "defaultImageType": {
            "description": "Default image type.",
            "type": "string"
          },
          "validImageTypes": {
            "description": "List of valid image types.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validMasterVersions": {
            "description": "List of valid master versions, in descending order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validNodeVersions": {
            "description": "List of valid node upgrade target versions, in descending order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "windowsVersionMaps": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Maps of Kubernetes version and supported Windows server versions.",
            "type": "object"
          }
        },
        "required": [
          "channels",
          "defaultClusterVersion",
          "defaultImageType",
          "validImageTypes",
          "validMasterVersions",
          "validNodeVersions",
          "windowsVersionMaps"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1:getNote": {
      "description": "Gets the specified note.",
      "inputs": {
        "properties": {
          "noteId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "noteId"
        ]
      },
      "outputs": {
        "properties": {
          "attestation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:AttestationNoteResponse",
            "description": "A note describing an attestation role."
          },
          "build": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildNoteResponse",
            "description": "A note describing build provenance for a verifiable build."
          },
          "compliance": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ComplianceNoteResponse",
            "description": "A note describing a compliance check."
          },
          "createTime": {
            "description": "The time this note was created. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "deployment": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DeploymentNoteResponse",
            "description": "A note describing something that can be deployed."
          },
          "discovery": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryNoteResponse",
            "description": "A note describing the initial analysis of a resource."
          },
          "dsseAttestation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DSSEAttestationNoteResponse",
            "description": "A note describing a dsse attestation note."
          },
          "expirationTime": {
            "description": "Time of expiration for this note. Empty if note does not expire.",
            "type": "string"
          },
          "image": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ImageNoteResponse",
            "description": "A note describing a base image."
          },
          "kind": {
            "description": "The type of analysis. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "longDescription": {
            "description": "A detailed description of this note.",
            "type": "string"
          },
          "name": {
            "description": "The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
            "type": "string"
          },
          "package": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageNoteResponse",
            "description": "A note describing a package hosted by various package managers."
          },
          "relatedNoteNames": {
            "description": "Other notes related to this note.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "relatedUrl": {
            "description": "URLs associated with this note.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1:RelatedUrlResponse"
            },
            "type": "array"
          },
          "sbomReference": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMReferenceNoteResponse",
            "description": "A note describing an SBOM reference."
          },
          "shortDescription": {
            "description": "A one sentence description of this note.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time this note was last updated. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "upgrade": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeNoteResponse",
            "description": "A note describing available package upgrades."
          },
          "vulnerability": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityNoteResponse",
            "description": "A note describing a package vulnerability."
          },
          "vulnerabilityAssessment": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityAssessmentNoteResponse",
            "description": "A note describing a vulnerability assessment."
          }
        },
        "required": [
          "attestation",
          "build",
          "compliance",
          "createTime",
          "deployment",
          "discovery",
          "dsseAttestation",
          "expirationTime",
          "image",
          "kind",
          "longDescription",
          "name",
          "package",
          "relatedNoteNames",
          "relatedUrl",
          "sbomReference",
          "shortDescription",
          "updateTime",
          "upgrade",
          "vulnerability",
          "vulnerabilityAssessment"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1:getNoteIamPolicy": {
      "description": "Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "inputs": {
        "properties": {
          "noteId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "noteId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1:getOccurrence": {
      "description": "Gets the specified occurrence.",
      "inputs": {
        "properties": {
          "occurrenceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "occurrenceId"
        ]
      },
      "outputs": {
        "properties": {
          "attestation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:AttestationOccurrenceResponse",
            "description": "Describes an attestation of an artifact."
          },
          "build": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:BuildOccurrenceResponse",
            "description": "Describes a verifiable build."
          },
          "compliance": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ComplianceOccurrenceResponse",
            "description": "Describes a compliance violation on a linked resource."
          },
          "createTime": {
            "description": "The time this occurrence was created.",
            "type": "string"
          },
          "deployment": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DeploymentOccurrenceResponse",
            "description": "Describes the deployment of an artifact on a runtime."
          },
          "discovery": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DiscoveryOccurrenceResponse",
            "description": "Describes when a resource was discovered."
          },
          "dsseAttestation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:DSSEAttestationOccurrenceResponse",
            "description": "Describes an attestation of an artifact using dsse."
          },
          "envelope": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:EnvelopeResponse",
            "description": "https://github.com/secure-systems-lab/dsse"
          },
          "image": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:ImageOccurrenceResponse",
            "description": "Describes how this resource derives from the basis in the associated note."
          },
          "kind": {
            "description": "This explicitly denotes which of the occurrence details are specified. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "name": {
            "description": "The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
            "type": "string"
          },
          "noteName": {
            "description": "Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "package": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:PackageOccurrenceResponse",
            "description": "Describes the installation of a package on the linked resource."
          },
          "remediation": {
            "description": "A description of actions that can be taken to remedy the note.",
            "type": "string"
          },
          "resourceUri": {
            "description": "Immutable. A URI that represents the resource for which the occurrence applies. For example, `https://gcr.io/project/image@sha256:123abc` for a Docker image.",
            "type": "string"
          },
          "sbomReference": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:SBOMReferenceOccurrenceResponse",
            "description": "Describes a specific SBOM reference occurrences."
          },
          "updateTime": {
            "description": "The time this occurrence was last updated.",
            "type": "string"
          },
          "upgrade": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:UpgradeOccurrenceResponse",
            "description": "Describes an available package upgrade on the linked resource."
          },
          "vulnerability": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1:VulnerabilityOccurrenceResponse",
            "description": "Describes a security vulnerability."
          }
        },
        "required": [
          "attestation",
          "build",
          "compliance",
          "createTime",
          "deployment",
          "discovery",
          "dsseAttestation",
          "envelope",
          "image",
          "kind",
          "name",
          "noteName",
          "package",
          "remediation",
          "resourceUri",
          "sbomReference",
          "updateTime",
          "upgrade",
          "vulnerability"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1:getOccurrenceIamPolicy": {
      "description": "Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "inputs": {
        "properties": {
          "occurrenceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "occurrenceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1alpha1:getNote": {
      "description": "Returns the requested `Note`.",
      "inputs": {
        "properties": {
          "noteId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "noteId"
        ]
      },
      "outputs": {
        "properties": {
          "attestationAuthority": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AttestationAuthorityResponse",
            "description": "A note describing an attestation role."
          },
          "baseImage": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BasisResponse",
            "description": "A note describing a base image."
          },
          "buildType": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildTypeResponse",
            "description": "Build provenance type for a verifiable build."
          },
          "compliance": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ComplianceNoteResponse",
            "description": "A note describing a compliance check."
          },
          "createTime": {
            "description": "The time this note was created. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "deployable": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DeployableResponse",
            "description": "A note describing something that can be deployed."
          },
          "discovery": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DiscoveryResponse",
            "description": "A note describing a provider/analysis type."
          },
          "dsseAttestation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DSSEAttestationNoteResponse",
            "description": "A note describing a dsse attestation note."
          },
          "expirationTime": {
            "description": "Time of expiration for this note, null if note does not expire.",
            "type": "string"
          },
          "kind": {
            "description": "This explicitly denotes which kind of note is specified. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "longDescription": {
            "description": "A detailed description of this `Note`.",
            "type": "string"
          },
          "name": {
            "description": "The name of the note in the form \"projects/{provider_project_id}/notes/{NOTE_ID}\"",
            "type": "string"
          },
          "package": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageResponse",
            "description": "A note describing a package hosted by various package managers."
          },
          "relatedUrl": {
            "description": "URLs associated with this note",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelatedUrlResponse"
            },
            "type": "array"
          },
          "sbom": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DocumentNoteResponse",
            "description": "A note describing a software bill of materials."
          },
          "sbomReference": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SBOMReferenceNoteResponse",
            "description": "A note describing a reference to an SBOM."
          },
          "shortDescription": {
            "description": "A one sentence description of this `Note`.",
            "type": "string"
          },
          "spdxFile": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileNoteResponse",
            "description": "A note describing an SPDX File."
          },
          "spdxPackage": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageInfoNoteResponse",
            "description": "A note describing an SPDX Package."
          },
          "spdxRelationship": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelationshipNoteResponse",
            "description": "A note describing a relationship between SPDX elements."
          },
          "updateTime": {
            "description": "The time this note was last updated. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "upgrade": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeNoteResponse",
            "description": "A note describing an upgrade."
          },
          "vulnerabilityAssessment": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityAssessmentNoteResponse",
            "description": "A note describing a vulnerability assessment."
          },
          "vulnerabilityType": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityTypeResponse",
            "description": "A package vulnerability type of note."
          }
        },
        "required": [
          "attestationAuthority",
          "baseImage",
          "buildType",
          "compliance",
          "createTime",
          "deployable",
          "discovery",
          "dsseAttestation",
          "expirationTime",
          "kind",
          "longDescription",
          "name",
          "package",
          "relatedUrl",
          "sbom",
          "sbomReference",
          "shortDescription",
          "spdxFile",
          "spdxPackage",
          "spdxRelationship",
          "updateTime",
          "upgrade",
          "vulnerabilityAssessment",
          "vulnerabilityType"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1alpha1:getNoteIamPolicy": {
      "description": "Gets the access control policy for a note or an `Occurrence` resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. Attempting to call this method on a resource without the required permission will result in a `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has list permission on the project, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and projects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
      "inputs": {
        "properties": {
          "noteId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "noteId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1alpha1:getOccurrence": {
      "description": "Returns the requested `Occurrence`.",
      "inputs": {
        "properties": {
          "occurrenceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "occurrenceId"
        ]
      },
      "outputs": {
        "properties": {
          "attestation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:AttestationResponse",
            "description": "Describes an attestation of an artifact."
          },
          "buildDetails": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BuildDetailsResponse",
            "description": "Build details for a verifiable build."
          },
          "compliance": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ComplianceOccurrenceResponse",
            "description": "Describes whether or not a resource passes compliance checks."
          },
          "createTime": {
            "description": "The time this `Occurrence` was created.",
            "type": "string"
          },
          "deployment": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DeploymentResponse",
            "description": "Describes the deployment of an artifact on a runtime."
          },
          "derivedImage": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DerivedResponse",
            "description": "Describes how this resource derives from the basis in the associated note."
          },
          "discovered": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DiscoveredResponse",
            "description": "Describes the initial scan status for this resource."
          },
          "dsseAttestation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DSSEAttestationOccurrenceResponse",
            "description": "This represents a DSSE attestation occurrence"
          },
          "envelope": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:EnvelopeResponse",
            "description": "https://github.com/secure-systems-lab/dsse"
          },
          "installation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:InstallationResponse",
            "description": "Describes the installation of a package on the linked resource."
          },
          "kind": {
            "description": "This explicitly denotes which of the `Occurrence` details are specified. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "name": {
            "description": "The name of the `Occurrence` in the form \"projects/{project_id}/occurrences/{OCCURRENCE_ID}\"",
            "type": "string"
          },
          "noteName": {
            "description": "An analysis note associated with this image, in the form \"providers/{provider_id}/notes/{NOTE_ID}\" This field can be used as a filter in list requests.",
            "type": "string"
          },
          "remediation": {
            "description": "A description of actions that can be taken to remedy the `Note`",
            "type": "string"
          },
          "resource": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:ResourceResponse",
            "description": " The resource for which the `Occurrence` applies."
          },
          "resourceUrl": {
            "description": "The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests.",
            "type": "string"
          },
          "sbom": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:DocumentOccurrenceResponse",
            "description": "Describes a specific software bill of materials document."
          },
          "sbomReference": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:SBOMReferenceOccurrenceResponse",
            "description": "This represents an SBOM reference occurrence"
          },
          "spdxFile": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:FileOccurrenceResponse",
            "description": "Describes a specific SPDX File."
          },
          "spdxPackage": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:PackageInfoOccurrenceResponse",
            "description": "Describes a specific SPDX Package."
          },
          "spdxRelationship": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:RelationshipOccurrenceResponse",
            "description": "Describes a specific relationship between SPDX elements."
          },
          "updateTime": {
            "description": "The time this `Occurrence` was last updated.",
            "type": "string"
          },
          "upgrade": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:UpgradeOccurrenceResponse",
            "description": "Describes an upgrade."
          },
          "vulnerabilityDetails": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:VulnerabilityDetailsResponse",
            "description": "Details of a security vulnerability note."
          }
        },
        "required": [
          "attestation",
          "buildDetails",
          "compliance",
          "createTime",
          "deployment",
          "derivedImage",
          "discovered",
          "dsseAttestation",
          "envelope",
          "installation",
          "kind",
          "name",
          "noteName",
          "remediation",
          "resource",
          "resourceUrl",
          "sbom",
          "sbomReference",
          "spdxFile",
          "spdxPackage",
          "spdxRelationship",
          "updateTime",
          "upgrade",
          "vulnerabilityDetails"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1alpha1:getOccurrenceIamPolicy": {
      "description": "Gets the access control policy for a note or an `Occurrence` resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. Attempting to call this method on a resource without the required permission will result in a `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has list permission on the project, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and projects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
      "inputs": {
        "properties": {
          "occurrenceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "occurrenceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1alpha1:getProviderNoteIamPolicy": {
      "description": "Gets the access control policy for a note or an `Occurrence` resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. Attempting to call this method on a resource without the required permission will result in a `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has list permission on the project, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and projects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
      "inputs": {
        "properties": {
          "noteId": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "noteId",
          "providerId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1beta1:getNote": {
      "description": "Gets the specified note.",
      "inputs": {
        "properties": {
          "noteId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "noteId"
        ]
      },
      "outputs": {
        "properties": {
          "attestationAuthority": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:AuthorityResponse",
            "description": "A note describing an attestation role."
          },
          "baseImage": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BasisResponse",
            "description": "A note describing a base image."
          },
          "build": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BuildResponse",
            "description": "A note describing build provenance for a verifiable build."
          },
          "createTime": {
            "description": "The time this note was created. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "deployable": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DeployableResponse",
            "description": "A note describing something that can be deployed."
          },
          "discovery": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DiscoveryResponse",
            "description": "A note describing the initial analysis of a resource."
          },
          "expirationTime": {
            "description": "Time of expiration for this note. Empty if note does not expire.",
            "type": "string"
          },
          "intoto": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:InTotoResponse",
            "description": "A note describing an in-toto link."
          },
          "kind": {
            "description": "The type of analysis. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "longDescription": {
            "description": "A detailed description of this note.",
            "type": "string"
          },
          "name": {
            "description": "The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
            "type": "string"
          },
          "package": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageResponse",
            "description": "A note describing a package hosted by various package managers."
          },
          "relatedNoteNames": {
            "description": "Other notes related to this note.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "relatedUrl": {
            "description": "URLs associated with this note.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelatedUrlResponse"
            },
            "type": "array"
          },
          "sbom": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DocumentNoteResponse",
            "description": "A note describing a software bill of materials."
          },
          "sbomReference": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMReferenceNoteResponse",
            "description": "A note describing an SBOM reference."
          },
          "shortDescription": {
            "description": "A one sentence description of this note.",
            "type": "string"
          },
          "spdxFile": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FileNoteResponse",
            "description": "A note describing an SPDX File."
          },
          "spdxPackage": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageInfoNoteResponse",
            "description": "A note describing an SPDX Package."
          },
          "spdxRelationship": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelationshipNoteResponse",
            "description": "A note describing an SPDX File."
          },
          "updateTime": {
            "description": "The time this note was last updated. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "vulnerability": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityResponse",
            "description": "A note describing a package vulnerability."
          },
          "vulnerabilityAssessment": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:VulnerabilityAssessmentNoteResponse",
            "description": "A note describing a vulnerability assessment."
          }
        },
        "required": [
          "attestationAuthority",
          "baseImage",
          "build",
          "createTime",
          "deployable",
          "discovery",
          "expirationTime",
          "intoto",
          "kind",
          "longDescription",
          "name",
          "package",
          "relatedNoteNames",
          "relatedUrl",
          "sbom",
          "sbomReference",
          "shortDescription",
          "spdxFile",
          "spdxPackage",
          "spdxRelationship",
          "updateTime",
          "vulnerability",
          "vulnerabilityAssessment"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1beta1:getNoteIamPolicy": {
      "description": "Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "inputs": {
        "properties": {
          "noteId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "noteId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1beta1:getOccurrence": {
      "description": "Gets the specified occurrence.",
      "inputs": {
        "properties": {
          "occurrenceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "occurrenceId"
        ]
      },
      "outputs": {
        "properties": {
          "attestation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DetailsResponse",
            "description": "Describes an attestation of an artifact."
          },
          "build": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1BuildDetailsResponse",
            "description": "Describes a verifiable build."
          },
          "createTime": {
            "description": "The time this occurrence was created.",
            "type": "string"
          },
          "deployment": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1DeploymentDetailsResponse",
            "description": "Describes the deployment of an artifact on a runtime."
          },
          "derivedImage": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1ImageDetailsResponse",
            "description": "Describes how this resource derives from the basis in the associated note."
          },
          "discovered": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1DiscoveryDetailsResponse",
            "description": "Describes when a resource was discovered."
          },
          "envelope": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:EnvelopeResponse",
            "description": "https://github.com/secure-systems-lab/dsse"
          },
          "installation": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1PackageDetailsResponse",
            "description": "Describes the installation of a package on the linked resource."
          },
          "intoto": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1IntotoDetailsResponse",
            "description": "Describes a specific in-toto link."
          },
          "kind": {
            "description": "This explicitly denotes which of the occurrence details are specified. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "name": {
            "description": "The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
            "type": "string"
          },
          "noteName": {
            "description": "Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests.",
            "type": "string"
          },
          "remediation": {
            "description": "A description of actions that can be taken to remedy the note.",
            "type": "string"
          },
          "resource": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:ResourceResponse",
            "description": "Immutable. The resource for which the occurrence applies."
          },
          "sbom": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:DocumentOccurrenceResponse",
            "description": "Describes a specific software bill of materials document."
          },
          "sbomReference": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:SBOMReferenceOccurrenceResponse",
            "description": "Describes a specific SBOM reference occurrences."
          },
          "spdxFile": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:FileOccurrenceResponse",
            "description": "Describes a specific SPDX File."
          },
          "spdxPackage": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:PackageInfoOccurrenceResponse",
            "description": "Describes a specific SPDX Package."
          },
          "spdxRelationship": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:RelationshipOccurrenceResponse",
            "description": "Describes a specific SPDX Relationship."
          },
          "updateTime": {
            "description": "The time this occurrence was last updated.",
            "type": "string"
          },
          "vulnerability": {
            "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:GrafeasV1beta1VulnerabilityDetailsResponse",
            "description": "Describes a security vulnerability."
          }
        },
        "required": [
          "attestation",
          "build",
          "createTime",
          "deployment",
          "derivedImage",
          "discovered",
          "envelope",
          "installation",
          "intoto",
          "kind",
          "name",
          "noteName",
          "remediation",
          "resource",
          "sbom",
          "sbomReference",
          "spdxFile",
          "spdxPackage",
          "spdxRelationship",
          "updateTime",
          "vulnerability"
        ],
        "type": "object"
      }
    },
    "google-native:containeranalysis/v1beta1:getOccurrenceIamPolicy": {
      "description": "Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
      "inputs": {
        "properties": {
          "occurrenceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "occurrenceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:containeranalysis%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:contentwarehouse/v1:getDocument": {
      "description": "Gets a document. Returns NOT_FOUND if the document does not exist.",
      "inputs": {
        "properties": {
          "documentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "documentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "cloudAiDocument": {
            "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudDocumentaiV1DocumentResponse",
            "description": "Document AI format to save the structured content, including OCR."
          },
          "contentCategory": {
            "description": "Indicates the category (image, audio, video etc.) of the original content.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the document is created.",
            "type": "string"
          },
          "creator": {
            "description": "The user who creates the document.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name of the document given by the user. This name will be displayed in the UI. Customer can populate this field with the name of the document. This differs from the 'title' field as 'title' is optional and stores the top heading in the document.",
            "type": "string"
          },
          "displayUri": {
            "description": "Uri to display the document, for example, in the UI.",
            "type": "string"
          },
          "dispositionTime": {
            "description": "If linked to a Collection with RetentionPolicy, the date when the document becomes mutable.",
            "type": "string"
          },
          "documentSchemaName": {
            "description": "The Document schema name. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.",
            "type": "string"
          },
          "inlineRawDocument": {
            "description": "Raw document content.",
            "type": "string"
          },
          "legalHold": {
            "description": "Indicates if the document has a legal hold on it.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the document. Format: projects/{project_number}/locations/{location}/documents/{document_id}. The name is ignored when creating a document.",
            "type": "string"
          },
          "plainText": {
            "description": "Other document format, such as PPTX, XLXS",
            "type": "string"
          },
          "properties": {
            "description": "List of values that are user supplied metadata.",
            "items": {
              "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyResponse"
            },
            "type": "array"
          },
          "rawDocumentFileType": {
            "description": "This is used when DocAI was not used to load the document and parsing/ extracting is needed for the inline_raw_document. For example, if inline_raw_document is the byte representation of a PDF file, then this should be set to: RAW_DOCUMENT_FILE_TYPE_PDF.",
            "type": "string"
          },
          "rawDocumentPath": {
            "description": "Raw document file in Cloud Storage path.",
            "type": "string"
          },
          "referenceId": {
            "description": "The reference ID set by customers. Must be unique per project and location.",
            "type": "string"
          },
          "textExtractionDisabled": {
            "description": "If true, text extraction will not be performed.",
            "type": "boolean"
          },
          "textExtractionEnabled": {
            "description": "If true, text extraction will be performed.",
            "type": "boolean"
          },
          "title": {
            "description": "Title that describes the document. This can be the top heading or text that describes the document.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the document is last updated.",
            "type": "string"
          },
          "updater": {
            "description": "The user who lastly updates the document.",
            "type": "string"
          }
        },
        "required": [
          "cloudAiDocument",
          "contentCategory",
          "createTime",
          "creator",
          "displayName",
          "displayUri",
          "dispositionTime",
          "documentSchemaName",
          "inlineRawDocument",
          "legalHold",
          "name",
          "plainText",
          "properties",
          "rawDocumentFileType",
          "rawDocumentPath",
          "referenceId",
          "textExtractionDisabled",
          "textExtractionEnabled",
          "title",
          "updateTime",
          "updater"
        ],
        "type": "object"
      }
    },
    "google-native:contentwarehouse/v1:getDocumentSchema": {
      "description": "Gets a document schema. Returns NOT_FOUND if the document schema does not exist.",
      "inputs": {
        "properties": {
          "documentSchemaId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "documentSchemaId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the document schema is created.",
            "type": "string"
          },
          "description": {
            "description": "Schema description.",
            "type": "string"
          },
          "displayName": {
            "description": "Name of the schema given by the user. Must be unique per project.",
            "type": "string"
          },
          "documentIsFolder": {
            "description": "Document Type, true refers the document is a folder, otherwise it is a typical document.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the document schema. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}. The name is ignored when creating a document schema.",
            "type": "string"
          },
          "propertyDefinitions": {
            "description": "Document details.",
            "items": {
              "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1PropertyDefinitionResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The time when the document schema is last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "documentIsFolder",
          "name",
          "propertyDefinitions",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:contentwarehouse/v1:getRuleSet": {
      "description": "Gets a ruleset. Returns NOT_FOUND if the ruleset does not exist.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "ruleSetId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "ruleSetId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Short description of the rule-set.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the rule set. Managed internally. Format: projects/{project_number}/locations/{location}/ruleSet/{rule_set_id}. The name is ignored when creating a rule set.",
            "type": "string"
          },
          "rules": {
            "description": "List of rules given by the customer.",
            "items": {
              "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1RuleResponse"
            },
            "type": "array"
          },
          "source": {
            "description": "Source of the rules i.e., customer name.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "name",
          "rules",
          "source"
        ],
        "type": "object"
      }
    },
    "google-native:contentwarehouse/v1:getSynonymSet": {
      "description": "Gets a SynonymSet for a particular context. Throws a NOT_FOUND exception if the Synonymset does not exist",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "synonymSetId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "synonymSetId"
        ]
      },
      "outputs": {
        "properties": {
          "context": {
            "description": "This is a freeform field. Example contexts can be \"sales,\" \"engineering,\" \"real estate,\" \"accounting,\" etc. The context can be supplied during search requests.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the SynonymSet This is mandatory for google.api.resource. Format: projects/{project_number}/locations/{location}/synonymSets/{context}.",
            "type": "string"
          },
          "synonyms": {
            "description": "List of Synonyms for the context.",
            "items": {
              "$ref": "#/types/google-native:contentwarehouse%2Fv1:GoogleCloudContentwarehouseV1SynonymSetSynonymResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "context",
          "name",
          "synonyms"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getEntry": {
      "description": "Gets an entry.",
      "inputs": {
        "properties": {
          "entryGroupId": {
            "type": "string"
          },
          "entryId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryGroupId",
          "entryId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryDateShardedSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BigQueryDateShardedSpecResponse",
            "description": "Specification for a group of BigQuery tables with the `[prefix]YYYYMMDD` name pattern. For more information, see [Introduction to partitioned tables] (https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding)."
          },
          "bigqueryTableSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BigQueryTableSpecResponse",
            "description": "Specification that applies to a BigQuery table. Valid only for entries with the `TABLE` type."
          },
          "businessContext": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1BusinessContextResponse",
            "description": "Business Context of the entry. Not supported for BigQuery datasets"
          },
          "cloudBigtableSystemSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1CloudBigtableSystemSpecResponse",
            "description": "Specification that applies to Cloud Bigtable system. Only settable when `integrated_system` is equal to `CLOUD_BIGTABLE`"
          },
          "dataSource": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataSourceResponse",
            "description": "Physical location of the entry."
          },
          "dataSourceConnectionSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DataSourceConnectionSpecResponse",
            "description": "Specification that applies to a data source connection. Valid only for entries with the `DATA_SOURCE_CONNECTION` type."
          },
          "databaseTableSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatabaseTableSpecResponse",
            "description": "Specification that applies to a table resource. Valid only for entries with the `TABLE` or `EXPLORE` type."
          },
          "datasetSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1DatasetSpecResponse",
            "description": "Specification that applies to a dataset."
          },
          "description": {
            "description": "Entry description that can consist of several sentences or paragraphs that describe entry contents. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). The maximum size is 2000 bytes when encoded in UTF-8. Default value is an empty string.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name of an entry. The maximum size is 500 bytes when encoded in UTF-8. Default value is an empty string.",
            "type": "string"
          },
          "filesetSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1FilesetSpecResponse",
            "description": "Specification that applies to a fileset resource. Valid only for entries with the `FILESET` type."
          },
          "fullyQualifiedName": {
            "description": "[Fully Qualified Name (FQN)](https://cloud.google.com//data-catalog/docs/fully-qualified-names) of the resource. Set automatically for entries representing resources from synced systems. Settable only during creation, and read-only later. Can be used for search and lookup of the entries. ",
            "type": "string"
          },
          "gcsFilesetSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1GcsFilesetSpecResponse",
            "description": "Specification that applies to a Cloud Storage fileset. Valid only for entries with the `FILESET` type."
          },
          "integratedSystem": {
            "description": "Indicates the entry's source system that Data Catalog integrates with, such as BigQuery, Pub/Sub, or Dataproc Metastore.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Cloud labels attached to the entry. In Data Catalog, you can create and modify labels attached only to custom entries. Synced entries have unmodifiable labels that come from the source system.",
            "type": "object"
          },
          "linkedResource": {
            "description": "The resource this metadata entry refers to. For Google Cloud Platform resources, `linked_resource` is the [Full Resource Name] (https://cloud.google.com/apis/design/resource_names#full_resource_name). For example, the `linked_resource` for a table resource from BigQuery is: `//bigquery.googleapis.com/projects/{PROJECT_ID}/datasets/{DATASET_ID}/tables/{TABLE_ID}` Output only when the entry is one of the types in the `EntryType` enum. For entries with a `user_specified_type`, this field is optional and defaults to an empty string. The resource string must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), periods (.), colons (:), slashes (/), dashes (-), and hashes (#). The maximum size is 200 bytes when encoded in UTF-8.",
            "type": "string"
          },
          "lookerSystemSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1LookerSystemSpecResponse",
            "description": "Specification that applies to Looker sysstem. Only settable when `user_specified_system` is equal to `LOOKER`"
          },
          "modelSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ModelSpecResponse",
            "description": "Model specification."
          },
          "name": {
            "description": "The resource name of an entry in URL format. Note: The entry itself and its child resources might not be stored in the location specified in its name.",
            "type": "string"
          },
          "personalDetails": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1PersonalDetailsResponse",
            "description": "Additional information related to the entry. Private to the current user."
          },
          "routineSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1RoutineSpecResponse",
            "description": "Specification that applies to a user-defined function or procedure. Valid only for entries with the `ROUTINE` type."
          },
          "schema": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SchemaResponse",
            "description": "Schema of the entry. An entry might not have any schema attached to it."
          },
          "serviceSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1ServiceSpecResponse",
            "description": "Specification that applies to a Service resource."
          },
          "sourceSystemTimestamps": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SystemTimestampsResponse",
            "description": "Timestamps from the underlying resource, not from the Data Catalog entry. Output only when the entry has a system listed in the `IntegratedSystem` enum. For entries with `user_specified_system`, this field is optional and defaults to an empty timestamp."
          },
          "sqlDatabaseSystemSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SqlDatabaseSystemSpecResponse",
            "description": "Specification that applies to a relational database system. Only settable when `user_specified_system` is equal to `SQL_DATABASE`"
          },
          "type": {
            "description": "The type of the entry. For details, see [`EntryType`](#entrytype).",
            "type": "string"
          },
          "usageSignal": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1UsageSignalResponse",
            "description": "Resource usage statistics."
          },
          "userSpecifiedSystem": {
            "description": "Indicates the entry's source system that Data Catalog doesn't automatically integrate with. The `user_specified_system` string has the following limitations: * Is case insensitive. * Must begin with a letter or underscore. * Can only contain letters, numbers, and underscores. * Must be at least 1 character and at most 64 characters long.",
            "type": "string"
          },
          "userSpecifiedType": {
            "description": "Custom entry type that doesn't match any of the values allowed for input and listed in the `EntryType` enum. When creating an entry, first check the type values in the enum. If there are no appropriate types for the new entry, provide a custom value, for example, `my_special_type`. The `user_specified_type` string has the following limitations: * Is case insensitive. * Must begin with a letter or underscore. * Can only contain letters, numbers, and underscores. * Must be at least 1 character and at most 64 characters long.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryDateShardedSpec",
          "bigqueryTableSpec",
          "businessContext",
          "cloudBigtableSystemSpec",
          "dataSource",
          "dataSourceConnectionSpec",
          "databaseTableSpec",
          "datasetSpec",
          "description",
          "displayName",
          "filesetSpec",
          "fullyQualifiedName",
          "gcsFilesetSpec",
          "integratedSystem",
          "labels",
          "linkedResource",
          "lookerSystemSpec",
          "modelSpec",
          "name",
          "personalDetails",
          "routineSpec",
          "schema",
          "serviceSpec",
          "sourceSystemTimestamps",
          "sqlDatabaseSystemSpec",
          "type",
          "usageSignal",
          "userSpecifiedSystem",
          "userSpecifiedType"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getEntryGroup": {
      "description": "Gets an entry group.",
      "inputs": {
        "properties": {
          "entryGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "dataCatalogTimestamps": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SystemTimestampsResponse",
            "description": "Timestamps of the entry group. Default value is empty."
          },
          "description": {
            "description": "Entry group description. Can consist of several sentences or paragraphs that describe the entry group contents. Default value is an empty string.",
            "type": "string"
          },
          "displayName": {
            "description": "A short name to identify the entry group, for example, \"analytics data - jan 2011\". Default value is an empty string.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the entry group in URL format. Note: The entry group itself and its child resources might not be stored in the location specified in its name.",
            "type": "string"
          }
        },
        "required": [
          "dataCatalogTimestamps",
          "description",
          "displayName",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getEntryGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. May return: * A`NOT_FOUND` error if the resource doesn't exist or you don't have the permission to view it. * An empty policy if the resource exists but doesn't have a set policy. Supported resources are: - Tag templates - Entry groups Note: This method doesn't get policies from Google Cloud Platform resources ingested into Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag templates. - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.",
      "inputs": {
        "properties": {
          "entryGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datacatalog%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getPolicyTag": {
      "description": "Gets a policy tag.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "policyTagId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taxonomyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "policyTagId",
          "taxonomyId"
        ]
      },
      "outputs": {
        "properties": {
          "childPolicyTags": {
            "description": "Resource names of child policy tags of this policy tag.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Description of this policy tag. If not set, defaults to empty. The description must contain only Unicode characters, tabs, newlines, carriage returns and page breaks, and be at most 2000 bytes long when encoded in UTF-8.",
            "type": "string"
          },
          "displayName": {
            "description": "User-defined name of this policy tag. The name can't start or end with spaces and must be unique within the parent taxonomy, contain only Unicode letters, numbers, underscores, dashes and spaces, and be at most 200 bytes long when encoded in UTF-8.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of this policy tag in the URL format. The policy tag manager generates unique taxonomy IDs and policy tag IDs.",
            "type": "string"
          },
          "parentPolicyTag": {
            "description": "Resource name of this policy tag's parent policy tag. If empty, this is a top level tag. If not set, defaults to an empty string. For example, for the \"LatLong\" policy tag in the example above, this field contains the resource name of the \"Geolocation\" policy tag, and, for \"Geolocation\", this field is empty.",
            "type": "string"
          }
        },
        "required": [
          "childPolicyTags",
          "description",
          "displayName",
          "name",
          "parentPolicyTag"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getTagTemplate": {
      "description": "Gets a tag template.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tagTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tagTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "Display name for this template. Defaults to an empty string. The name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), and can't start or end with spaces. The maximum length is 200 characters.",
            "type": "string"
          },
          "fields": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of tag template field IDs to the settings for the field. This map is an exhaustive list of the allowed fields. The map must contain at least one field and at most 500 fields. The keys to this map are tag template field IDs. The IDs have the following limitations: * Can contain uppercase and lowercase letters, numbers (0-9) and underscores (_). * Must be at least 1 character and at most 64 characters long. * Must start with a letter or underscore.",
            "type": "object"
          },
          "isPubliclyReadable": {
            "description": "Indicates whether tags created with this template are public. Public tags do not require tag template access to appear in ListTags API response. Additionally, you can search for a public tag by value with a simple search query in addition to using a ``tag:`` predicate.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the tag template in URL format. Note: The tag template itself and its child resources might not be stored in the location specified in its name.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "fields",
          "isPubliclyReadable",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getTagTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. May return: * A`NOT_FOUND` error if the resource doesn't exist or you don't have the permission to view it. * An empty policy if the resource exists but doesn't have a set policy. Supported resources are: - Tag templates - Entry groups Note: This method doesn't get policies from Google Cloud Platform resources ingested into Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag templates. - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tagTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tagTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datacatalog%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getTaxonomy": {
      "description": "Gets a taxonomy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taxonomyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "taxonomyId"
        ]
      },
      "outputs": {
        "properties": {
          "activatedPolicyTypes": {
            "description": "Optional. A list of policy types that are activated for this taxonomy. If not set, defaults to an empty list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Optional. Description of this taxonomy. If not set, defaults to empty. The description must contain only Unicode characters, tabs, newlines, carriage returns, and page breaks, and be at most 2000 bytes long when encoded in UTF-8.",
            "type": "string"
          },
          "displayName": {
            "description": "User-defined name of this taxonomy. The name can't start or end with spaces, must contain only Unicode letters, numbers, underscores, dashes, and spaces, and be at most 200 bytes long when encoded in UTF-8. The taxonomy display name must be unique within an organization.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of this taxonomy in URL format. Note: Policy tag manager generates unique taxonomy IDs.",
            "type": "string"
          },
          "policyTagCount": {
            "description": "Number of policy tags in this taxonomy.",
            "type": "integer"
          },
          "service": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1TaxonomyServiceResponse",
            "description": "Identity of the service which owns the Taxonomy. This field is only populated when the taxonomy is created by a Google Cloud service. Currently only 'DATAPLEX' is supported."
          },
          "taxonomyTimestamps": {
            "$ref": "#/types/google-native:datacatalog%2Fv1:GoogleCloudDatacatalogV1SystemTimestampsResponse",
            "description": "Creation and modification timestamps of this taxonomy."
          }
        },
        "required": [
          "activatedPolicyTypes",
          "description",
          "displayName",
          "name",
          "policyTagCount",
          "service",
          "taxonomyTimestamps"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getTaxonomyIamPolicy": {
      "description": "Gets the IAM policy for a policy tag or a taxonomy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taxonomyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "taxonomyId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datacatalog%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1:getTaxonomyPolicyTagIamPolicy": {
      "description": "Gets the IAM policy for a policy tag or a taxonomy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "policyTagId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taxonomyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "policyTagId",
          "taxonomyId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datacatalog%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getEntry": {
      "description": "Gets an entry.",
      "inputs": {
        "properties": {
          "entryGroupId": {
            "type": "string"
          },
          "entryId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryGroupId",
          "entryId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryDateShardedSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1BigQueryDateShardedSpecResponse",
            "description": "Specification for a group of BigQuery tables with name pattern `[prefix]YYYYMMDD`. Context: https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding."
          },
          "bigqueryTableSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1BigQueryTableSpecResponse",
            "description": "Specification that applies to a BigQuery table. This is only valid on entries of type `TABLE`."
          },
          "description": {
            "description": "Entry description, which can consist of several sentences or paragraphs that describe entry contents. Default value is an empty string.",
            "type": "string"
          },
          "displayName": {
            "description": "Display information such as title and description. A short name to identify the entry, for example, \"Analytics Data - Jan 2011\". Default value is an empty string.",
            "type": "string"
          },
          "gcsFilesetSpec": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1GcsFilesetSpecResponse",
            "description": "Specification that applies to a Cloud Storage fileset. This is only valid on entries of type FILESET."
          },
          "integratedSystem": {
            "description": "This field indicates the entry's source system that Data Catalog integrates with, such as BigQuery or Pub/Sub.",
            "type": "string"
          },
          "linkedResource": {
            "description": "The resource this metadata entry refers to. For Google Cloud Platform resources, `linked_resource` is the [full name of the resource](https://cloud.google.com/apis/design/resource_names#full_resource_name). For example, the `linked_resource` for a table resource from BigQuery is: * //bigquery.googleapis.com/projects/projectId/datasets/datasetId/tables/tableId Output only when Entry is of type in the EntryType enum. For entries with user_specified_type, this field is optional and defaults to an empty string.",
            "type": "string"
          },
          "name": {
            "description": "The Data Catalog resource name of the entry in URL format. Example: * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id}/entries/{entry_id} Note that this Entry and its child resources may not actually be stored in the location in this name.",
            "type": "string"
          },
          "schema": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SchemaResponse",
            "description": "Schema of the entry. An entry might not have any schema attached to it."
          },
          "sourceSystemTimestamps": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SystemTimestampsResponse",
            "description": "Timestamps about the underlying resource, not about this Data Catalog entry. Output only when Entry is of type in the EntryType enum. For entries with user_specified_type, this field is optional and defaults to an empty timestamp."
          },
          "type": {
            "description": "The type of the entry. Only used for Entries with types in the EntryType enum.",
            "type": "string"
          },
          "usageSignal": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1UsageSignalResponse",
            "description": "Statistics on the usage level of the resource."
          },
          "userSpecifiedSystem": {
            "description": "This field indicates the entry's source system that Data Catalog does not integrate with. `user_specified_system` strings must begin with a letter or underscore and can only contain letters, numbers, and underscores; are case insensitive; must be at least 1 character and at most 64 characters long.",
            "type": "string"
          },
          "userSpecifiedType": {
            "description": "Entry type if it does not fit any of the input-allowed values listed in `EntryType` enum above. When creating an entry, users should check the enum values first, if nothing matches the entry to be created, then provide a custom value, for example \"my_special_type\". `user_specified_type` strings must begin with a letter or underscore and can only contain letters, numbers, and underscores; are case insensitive; must be at least 1 character and at most 64 characters long. Currently, only FILESET enum value is allowed. All other entries created through Data Catalog must use `user_specified_type`.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryDateShardedSpec",
          "bigqueryTableSpec",
          "description",
          "displayName",
          "gcsFilesetSpec",
          "integratedSystem",
          "linkedResource",
          "name",
          "schema",
          "sourceSystemTimestamps",
          "type",
          "usageSignal",
          "userSpecifiedSystem",
          "userSpecifiedType"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getEntryGroup": {
      "description": "Gets an EntryGroup.",
      "inputs": {
        "properties": {
          "entryGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "readMask": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "dataCatalogTimestamps": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SystemTimestampsResponse",
            "description": "Timestamps about this EntryGroup. Default value is empty timestamps."
          },
          "description": {
            "description": "Entry group description, which can consist of several sentences or paragraphs that describe entry group contents. Default value is an empty string.",
            "type": "string"
          },
          "displayName": {
            "description": "A short name to identify the entry group, for example, \"analytics data - jan 2011\". Default value is an empty string.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the entry group in URL format. Example: * projects/{project_id}/locations/{location}/entryGroups/{entry_group_id} Note that this EntryGroup and its child resources may not actually be stored in the location in this name.",
            "type": "string"
          }
        },
        "required": [
          "dataCatalogTimestamps",
          "description",
          "displayName",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getEntryGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. A `NOT_FOUND` error is returned if the resource does not exist. An empty policy is returned if the resource exists but does not have a policy set on it. Supported resources are: - Tag templates. - Entries. - Entry groups. Note, this method cannot be used to manage policies for BigQuery, Pub/Sub and any external Google Cloud Platform resources synced to Data Catalog. Callers must have following Google IAM permission - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag templates. - `datacatalog.entries.getIamPolicy` to get policies on entries. - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.",
      "inputs": {
        "properties": {
          "entryGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datacatalog%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getPolicyTag": {
      "description": "Gets a policy tag.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "policyTagId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taxonomyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "policyTagId",
          "taxonomyId"
        ]
      },
      "outputs": {
        "properties": {
          "childPolicyTags": {
            "description": "Resource names of child policy tags of this policy tag.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Description of this policy tag. It must: contain only unicode characters, tabs, newlines, carriage returns and page breaks; and be at most 2000 bytes long when encoded in UTF-8. If not set, defaults to an empty description. If not set, defaults to an empty description.",
            "type": "string"
          },
          "displayName": {
            "description": "User defined name of this policy tag. It must: be unique within the parent taxonomy; contain only unicode letters, numbers, underscores, dashes and spaces; not start or end with spaces; and be at most 200 bytes long when encoded in UTF-8.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of this policy tag, whose format is: \"projects/{project_number}/locations/{location_id}/taxonomies/{taxonomy_id}/policyTags/{id}\".",
            "type": "string"
          },
          "parentPolicyTag": {
            "description": "Resource name of this policy tag's parent policy tag (e.g. for the \"LatLong\" policy tag in the example above, this field contains the resource name of the \"Geolocation\" policy tag). If empty, it means this policy tag is a top level policy tag (e.g. this field is empty for the \"Geolocation\" policy tag in the example above). If not set, defaults to an empty string.",
            "type": "string"
          }
        },
        "required": [
          "childPolicyTags",
          "description",
          "displayName",
          "name",
          "parentPolicyTag"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getTagTemplate": {
      "description": "Gets a tag template.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tagTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tagTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The display name for this template. Defaults to an empty string.",
            "type": "string"
          },
          "fields": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of tag template field IDs to the settings for the field. This map is an exhaustive list of the allowed fields. This map must contain at least one field and at most 500 fields. The keys to this map are tag template field IDs. Field IDs can contain letters (both uppercase and lowercase), numbers (0-9) and underscores (_). Field IDs must be at least 1 character long and at most 64 characters long. Field IDs must start with a letter or underscore.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the tag template in URL format. Example: * projects/{project_id}/locations/{location}/tagTemplates/{tag_template_id} Note that this TagTemplate and its child resources may not actually be stored in the location in this name.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "fields",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getTagTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. A `NOT_FOUND` error is returned if the resource does not exist. An empty policy is returned if the resource exists but does not have a policy set on it. Supported resources are: - Tag templates. - Entries. - Entry groups. Note, this method cannot be used to manage policies for BigQuery, Pub/Sub and any external Google Cloud Platform resources synced to Data Catalog. Callers must have following Google IAM permission - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag templates. - `datacatalog.entries.getIamPolicy` to get policies on entries. - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tagTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tagTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datacatalog%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getTaxonomy": {
      "description": "Gets a taxonomy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taxonomyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "taxonomyId"
        ]
      },
      "outputs": {
        "properties": {
          "activatedPolicyTypes": {
            "description": "Optional. A list of policy types that are activated for this taxonomy. If not set, defaults to an empty list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Optional. Description of this taxonomy. It must: contain only unicode characters, tabs, newlines, carriage returns and page breaks; and be at most 2000 bytes long when encoded in UTF-8. If not set, defaults to an empty description.",
            "type": "string"
          },
          "displayName": {
            "description": "User defined name of this taxonomy. It must: contain only unicode letters, numbers, underscores, dashes and spaces; not start or end with spaces; and be at most 200 bytes long when encoded in UTF-8. The taxonomy display name must be unique within an organization.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of this taxonomy, whose format is: \"projects/{project_number}/locations/{location_id}/taxonomies/{id}\".",
            "type": "string"
          },
          "policyTagCount": {
            "description": "Number of policy tags contained in this taxonomy.",
            "type": "integer"
          },
          "service": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1TaxonomyServiceResponse",
            "description": "Identity of the service which owns the Taxonomy. This field is only populated when the taxonomy is created by a Google Cloud service. Currently only 'DATAPLEX' is supported."
          },
          "taxonomyTimestamps": {
            "$ref": "#/types/google-native:datacatalog%2Fv1beta1:GoogleCloudDatacatalogV1beta1SystemTimestampsResponse",
            "description": "Timestamps about this taxonomy. Only create_time and update_time are used."
          }
        },
        "required": [
          "activatedPolicyTypes",
          "description",
          "displayName",
          "name",
          "policyTagCount",
          "service",
          "taxonomyTimestamps"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getTaxonomyIamPolicy": {
      "description": "Gets the IAM policy for a taxonomy or a policy tag.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taxonomyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "taxonomyId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datacatalog%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datacatalog/v1beta1:getTaxonomyPolicyTagIamPolicy": {
      "description": "Gets the IAM policy for a taxonomy or a policy tag.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "policyTagId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taxonomyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "policyTagId",
          "taxonomyId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datacatalog%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataflow/v1b3:getJob": {
      "description": "Gets the state of the specified Cloud Dataflow job. To get the state of a job, we recommend using `projects.locations.jobs.get` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.get` is not recommended, as you can only get the state of jobs that are running in `us-central1`.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "clientRequestId": {
            "description": "The client's unique identifier of the job, re-used across retried attempts. If this field is set, the service will ensure its uniqueness. The request to create a job will fail if the service has knowledge of a previously submitted job with the same client's ID and job name. The caller may use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the job was initially created. Immutable and set by the Cloud Dataflow service.",
            "type": "string"
          },
          "createdFromSnapshotId": {
            "description": "If this is specified, the job's initial state is populated from the given snapshot.",
            "type": "string"
          },
          "currentState": {
            "description": "The current state of the job. Jobs are created in the `JOB_STATE_STOPPED` state unless otherwise specified. A job in the `JOB_STATE_RUNNING` state may asynchronously enter a terminal state. After a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Cloud Dataflow service; callers cannot mutate it.",
            "type": "string"
          },
          "currentStateTime": {
            "description": "The timestamp associated with the current state.",
            "type": "string"
          },
          "environment": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:EnvironmentResponse",
            "description": "The environment for the job."
          },
          "executionInfo": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:JobExecutionInfoResponse",
            "deprecationMessage": "Deprecated.",
            "description": "Deprecated."
          },
          "jobMetadata": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:JobMetadataResponse",
            "description": "This field is populated by the Dataflow service to support filtering jobs by the metadata values provided here. Populated for ListJobs and all GetJob views SUMMARY and higher."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62} * Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} * Both keys and values are additionally constrained to be \u003c= 128 bytes in size.",
            "type": "object"
          },
          "location": {
            "description": "The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains this job.",
            "type": "string"
          },
          "name": {
            "description": "The user-specified Cloud Dataflow job name. Only one Job with a given name can exist in a project within one region at any given time. Jobs in different regions can have the same name. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt returns the existing Job. The name must match the regular expression `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?`",
            "type": "string"
          },
          "pipelineDescription": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:PipelineDescriptionResponse",
            "description": "Preliminary field: The format of this data may change at any time. A description of the user pipeline and stages through which it is executed. Created by Cloud Dataflow service. Only retrieved with JOB_VIEW_DESCRIPTION or JOB_VIEW_ALL."
          },
          "project": {
            "description": "The ID of the Cloud Platform project that the job belongs to.",
            "type": "string"
          },
          "replaceJobId": {
            "description": "If this job is an update of an existing job, this field is the job ID of the job it replaced. When sending a `CreateJobRequest`, you can update a job by specifying it here. The job named here is stopped, and its intermediate state is transferred to this job.",
            "type": "string"
          },
          "replacedByJobId": {
            "description": "If another job is an update of this job (and thus, this job is in `JOB_STATE_UPDATED`), this field contains the ID of that job.",
            "type": "string"
          },
          "requestedState": {
            "description": "The job's requested state. Applies to `UpdateJob` requests. Set `requested_state` with `UpdateJob` requests to switch between the states `JOB_STATE_STOPPED` and `JOB_STATE_RUNNING`. You can also use `UpdateJob` requests to change a job's state from `JOB_STATE_RUNNING` to `JOB_STATE_CANCELLED`, `JOB_STATE_DONE`, or `JOB_STATE_DRAINED`. These states irrevocably terminate the job if it hasn't already reached a terminal state. This field has no effect on `CreateJob` requests.",
            "type": "string"
          },
          "runtimeUpdatableParams": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:RuntimeUpdatableParamsResponse",
            "description": "This field may ONLY be modified at runtime using the projects.jobs.update method to adjust job behavior. This field has no effect when specified at job creation."
          },
          "satisfiesPzi": {
            "description": "Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests.",
            "type": "boolean"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests.",
            "type": "boolean"
          },
          "stageStates": {
            "description": "This field may be mutated by the Cloud Dataflow service; callers cannot mutate it.",
            "items": {
              "$ref": "#/types/google-native:dataflow%2Fv1b3:ExecutionStageStateResponse"
            },
            "type": "array"
          },
          "startTime": {
            "description": "The timestamp when the job was started (transitioned to JOB_STATE_PENDING). Flexible resource scheduling jobs are started with some delay after job creation, so start_time is unset before start and is updated when the job is started by the Cloud Dataflow service. For other jobs, start_time always equals to create_time and is immutable and set by the Cloud Dataflow service.",
            "type": "string"
          },
          "steps": {
            "description": "Exactly one of step or steps_location should be specified. The top-level steps that constitute the entire job. Only retrieved with JOB_VIEW_ALL.",
            "items": {
              "$ref": "#/types/google-native:dataflow%2Fv1b3:StepResponse"
            },
            "type": "array"
          },
          "stepsLocation": {
            "description": "The Cloud Storage location where the steps are stored.",
            "type": "string"
          },
          "tempFiles": {
            "description": "A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transformNameMapping": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.",
            "type": "object"
          },
          "type": {
            "description": "The type of Cloud Dataflow job.",
            "type": "string"
          }
        },
        "required": [
          "clientRequestId",
          "createTime",
          "createdFromSnapshotId",
          "currentState",
          "currentStateTime",
          "environment",
          "executionInfo",
          "jobMetadata",
          "labels",
          "location",
          "name",
          "pipelineDescription",
          "project",
          "replaceJobId",
          "replacedByJobId",
          "requestedState",
          "runtimeUpdatableParams",
          "satisfiesPzi",
          "satisfiesPzs",
          "stageStates",
          "startTime",
          "steps",
          "stepsLocation",
          "tempFiles",
          "transformNameMapping",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:dataflow/v1b3:getTemplate": {
      "description": "Get the template associated with a template.",
      "inputs": {
        "properties": {
          "gcsPath": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gcsPath",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "metadata": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:TemplateMetadataResponse",
            "description": "The template metadata describing the template name, available parameters, etc."
          },
          "runtimeMetadata": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:RuntimeMetadataResponse",
            "description": "Describes the runtime metadata with SDKInfo and available parameters."
          },
          "status": {
            "$ref": "#/types/google-native:dataflow%2Fv1b3:StatusResponse",
            "description": "The status of the get template request. Any problems with the request will be indicated in the error_details."
          },
          "templateType": {
            "description": "Template Type.",
            "type": "string"
          }
        },
        "required": [
          "metadata",
          "runtimeMetadata",
          "status",
          "templateType"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getCollectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "collectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:dataform%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getCompilationResult": {
      "description": "Fetches a single CompilationResult.",
      "inputs": {
        "properties": {
          "compilationResultId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "compilationResultId",
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "codeCompilationConfig": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:CodeCompilationConfigResponse",
            "description": "Immutable. If set, fields of `code_compilation_config` override the default compilation settings that are specified in dataform.json."
          },
          "compilationErrors": {
            "description": "Errors encountered during project compilation.",
            "items": {
              "$ref": "#/types/google-native:dataform%2Fv1beta1:CompilationErrorResponse"
            },
            "type": "array"
          },
          "dataformCoreVersion": {
            "description": "The version of `@dataform/core` that was used for compilation.",
            "type": "string"
          },
          "gitCommitish": {
            "description": "Immutable. Git commit/tag/branch name at which the repository should be compiled. Must exist in the remote repository. Examples: - a commit SHA: `12ade345` - a tag: `tag1` - a branch name: `branch1`",
            "type": "string"
          },
          "name": {
            "description": "The compilation result's name.",
            "type": "string"
          },
          "releaseConfig": {
            "description": "Immutable. The name of the release config to compile. The release config's 'current_compilation_result' field will be updated to this compilation result. Must be in the format `projects/*/locations/*/repositories/*/releaseConfigs/*`.",
            "type": "string"
          },
          "resolvedGitCommitSha": {
            "description": "The fully resolved Git commit SHA of the code that was compiled. Not set for compilation results whose source is a workspace.",
            "type": "string"
          },
          "workspace": {
            "description": "Immutable. The name of the workspace to compile. Must be in the format `projects/*/locations/*/repositories/*/workspaces/*`.",
            "type": "string"
          }
        },
        "required": [
          "codeCompilationConfig",
          "compilationErrors",
          "dataformCoreVersion",
          "gitCommitish",
          "name",
          "releaseConfig",
          "resolvedGitCommitSha",
          "workspace"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getReleaseConfig": {
      "description": "Fetches a single ReleaseConfig.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "releaseConfigId": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "releaseConfigId",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "codeCompilationConfig": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:CodeCompilationConfigResponse",
            "description": "Optional. If set, fields of `code_compilation_config` override the default compilation settings that are specified in dataform.json."
          },
          "cronSchedule": {
            "description": "Optional. Optional schedule (in cron format) for automatic creation of compilation results.",
            "type": "string"
          },
          "gitCommitish": {
            "description": "Git commit/tag/branch name at which the repository should be compiled. Must exist in the remote repository. Examples: - a commit SHA: `12ade345` - a tag: `tag1` - a branch name: `branch1`",
            "type": "string"
          },
          "name": {
            "description": "The release config's name.",
            "type": "string"
          },
          "recentScheduledReleaseRecords": {
            "description": "Records of the 10 most recent scheduled release attempts, ordered in in descending order of `release_time`. Updated whenever automatic creation of a compilation result is triggered by cron_schedule.",
            "items": {
              "$ref": "#/types/google-native:dataform%2Fv1beta1:ScheduledReleaseRecordResponse"
            },
            "type": "array"
          },
          "releaseCompilationResult": {
            "description": "Optional. The name of the currently released compilation result for this release config. This value is updated when a compilation result is created from this release config, or when this resource is updated by API call (perhaps to roll back to an earlier release). The compilation result must have been created using this release config. Must be in the format `projects/*/locations/*/repositories/*/compilationResults/*`.",
            "type": "string"
          },
          "timeZone": {
            "description": "Optional. Specifies the time zone to be used when interpreting cron_schedule. Must be a time zone name from the time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). If left unspecified, the default is UTC.",
            "type": "string"
          }
        },
        "required": [
          "codeCompilationConfig",
          "cronSchedule",
          "gitCommitish",
          "name",
          "recentScheduledReleaseRecords",
          "releaseCompilationResult",
          "timeZone"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getRepository": {
      "description": "Fetches a single Repository.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "Optional. The repository's user-friendly name.",
            "type": "string"
          },
          "gitRemoteSettings": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:GitRemoteSettingsResponse",
            "description": "Optional. If set, configures this repository to be linked to a Git remote."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Repository user labels.",
            "type": "object"
          },
          "name": {
            "description": "The repository's name.",
            "type": "string"
          },
          "npmrcEnvironmentVariablesSecretVersion": {
            "description": "Optional. The name of the Secret Manager secret version to be used to interpolate variables into the .npmrc file for package installation operations. Must be in the format `projects/*/secrets/*/versions/*`. The file itself must be in a JSON format.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "Optional. The service account to run workflow invocations under.",
            "type": "string"
          },
          "setAuthenticatedUserAdmin": {
            "description": "Optional. Input only. If set to true, the authenticated user will be granted the roles/dataform.admin role on the created repository. To modify access to the created repository later apply setIamPolicy from https://cloud.google.com/dataform/reference/rest#rest-resource:-v1beta1.projects.locations.repositories",
            "type": "boolean"
          },
          "workspaceCompilationOverrides": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:WorkspaceCompilationOverridesResponse",
            "description": "Optional. If set, fields of `workspace_compilation_overrides` override the default compilation settings that are specified in dataform.json when creating workspace-scoped compilation results. See documentation for `WorkspaceCompilationOverrides` for more information."
          }
        },
        "required": [
          "displayName",
          "gitRemoteSettings",
          "labels",
          "name",
          "npmrcEnvironmentVariablesSecretVersion",
          "serviceAccount",
          "setAuthenticatedUserAdmin",
          "workspaceCompilationOverrides"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getRepositoryIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:dataform%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getRepositoryWorkspaceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          },
          "workspaceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId",
          "workspaceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:dataform%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getWorkflowConfig": {
      "description": "Fetches a single WorkflowConfig.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          },
          "workflowConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId",
          "workflowConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "cronSchedule": {
            "description": "Optional. Optional schedule (in cron format) for automatic execution of this workflow config.",
            "type": "string"
          },
          "invocationConfig": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:InvocationConfigResponse",
            "description": "Optional. If left unset, a default InvocationConfig will be used."
          },
          "name": {
            "description": "The workflow config's name.",
            "type": "string"
          },
          "recentScheduledExecutionRecords": {
            "description": "Records of the 10 most recent scheduled execution attempts, ordered in in descending order of `execution_time`. Updated whenever automatic creation of a workflow invocation is triggered by cron_schedule.",
            "items": {
              "$ref": "#/types/google-native:dataform%2Fv1beta1:ScheduledExecutionRecordResponse"
            },
            "type": "array"
          },
          "releaseConfig": {
            "description": "The name of the release config whose release_compilation_result should be executed. Must be in the format `projects/*/locations/*/repositories/*/releaseConfigs/*`.",
            "type": "string"
          },
          "timeZone": {
            "description": "Optional. Specifies the time zone to be used when interpreting cron_schedule. Must be a time zone name from the time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). If left unspecified, the default is UTC.",
            "type": "string"
          }
        },
        "required": [
          "cronSchedule",
          "invocationConfig",
          "name",
          "recentScheduledExecutionRecords",
          "releaseConfig",
          "timeZone"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getWorkflowInvocation": {
      "description": "Fetches a single WorkflowInvocation.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          },
          "workflowInvocationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId",
          "workflowInvocationId"
        ]
      },
      "outputs": {
        "properties": {
          "compilationResult": {
            "description": "Immutable. The name of the compilation result to use for this invocation. Must be in the format `projects/*/locations/*/repositories/*/compilationResults/*`.",
            "type": "string"
          },
          "invocationConfig": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:InvocationConfigResponse",
            "description": "Immutable. If left unset, a default InvocationConfig will be used."
          },
          "invocationTiming": {
            "$ref": "#/types/google-native:dataform%2Fv1beta1:IntervalResponse",
            "description": "This workflow invocation's timing details."
          },
          "name": {
            "description": "The workflow invocation's name.",
            "type": "string"
          },
          "resolvedCompilationResult": {
            "description": "The resolved compilation result that was used to create this invocation. Will be in the format `projects/*/locations/*/repositories/*/compilationResults/*`.",
            "type": "string"
          },
          "state": {
            "description": "This workflow invocation's current state.",
            "type": "string"
          },
          "workflowConfig": {
            "description": "Immutable. The name of the workflow config to invoke. Must be in the format `projects/*/locations/*/repositories/*/workflowConfigs/*`.",
            "type": "string"
          }
        },
        "required": [
          "compilationResult",
          "invocationConfig",
          "invocationTiming",
          "name",
          "resolvedCompilationResult",
          "state",
          "workflowConfig"
        ],
        "type": "object"
      }
    },
    "google-native:dataform/v1beta1:getWorkspace": {
      "description": "Fetches a single Workspace.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "repositoryId": {
            "type": "string"
          },
          "workspaceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "repositoryId",
          "workspaceId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "The workspace's name.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:datafusion/v1:getInstance": {
      "description": "Gets details of a single Data Fusion instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "accelerators": {
            "description": "List of accelerators enabled for this CDF instance.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1:AcceleratorResponse"
            },
            "type": "array"
          },
          "apiEndpoint": {
            "description": "Endpoint on which the REST APIs is accessible.",
            "type": "string"
          },
          "availableVersion": {
            "description": "Available versions that the instance can be upgraded to using UpdateInstanceRequest.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1:VersionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "cryptoKeyConfig": {
            "$ref": "#/types/google-native:datafusion%2Fv1:CryptoKeyConfigResponse",
            "description": "The crypto key configuration. This field is used by the Customer-Managed Encryption Keys (CMEK) feature."
          },
          "dataprocServiceAccount": {
            "description": "User-managed service account to set on Dataproc when Cloud Data Fusion creates Dataproc to run data processing pipelines. This allows users to have fine-grained access control on Dataproc's accesses to cloud resources.",
            "type": "string"
          },
          "description": {
            "description": "A description of this instance.",
            "type": "string"
          },
          "disabledReason": {
            "description": "If the instance state is DISABLED, the reason for disabling the instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "Display name for an instance.",
            "type": "string"
          },
          "enableRbac": {
            "description": "Option to enable granular role-based access control.",
            "type": "boolean"
          },
          "enableStackdriverLogging": {
            "description": "Option to enable Stackdriver Logging.",
            "type": "boolean"
          },
          "enableStackdriverMonitoring": {
            "description": "Option to enable Stackdriver Monitoring.",
            "type": "boolean"
          },
          "enableZoneSeparation": {
            "description": "Option to enable granular zone separation.",
            "type": "boolean"
          },
          "eventPublishConfig": {
            "$ref": "#/types/google-native:datafusion%2Fv1:EventPublishConfigResponse",
            "description": "Option to enable and pass metadata for event publishing."
          },
          "gcsBucket": {
            "description": "Cloud Storage bucket generated by Data Fusion in the customer project.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for instance to use to annotate any related underlying resources such as Compute Engine VMs. The character '=' is not allowed to be used within the labels.",
            "type": "object"
          },
          "name": {
            "description": "The name of this instance is in the form of projects/{project}/locations/{location}/instances/{instance}.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:datafusion%2Fv1:NetworkConfigResponse",
            "description": "Network configuration options. These are required when a private Data Fusion instance is to be created."
          },
          "options": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of additional options used to configure the behavior of Data Fusion instance.",
            "type": "object"
          },
          "p4ServiceAccount": {
            "description": "P4 service account for the customer project.",
            "type": "string"
          },
          "patchRevision": {
            "description": "Optional. Current patch revision of the Data Fusion.",
            "type": "string"
          },
          "privateInstance": {
            "description": "Specifies whether the Data Fusion instance should be private. If set to true, all Data Fusion nodes will have private IP addresses and will not be able to access the public internet.",
            "type": "boolean"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "serviceAccount": {
            "deprecationMessage": "Output only. Deprecated. Use tenant_project_id instead to extract the tenant project ID.",
            "description": "Deprecated. Use tenant_project_id instead to extract the tenant project ID.",
            "type": "string"
          },
          "serviceEndpoint": {
            "description": "Endpoint on which the Data Fusion UI is accessible.",
            "type": "string"
          },
          "state": {
            "description": "The current state of this Data Fusion instance.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Additional information about the current state of this Data Fusion instance if available.",
            "type": "string"
          },
          "tenantProjectId": {
            "description": "The name of the tenant project.",
            "type": "string"
          },
          "type": {
            "description": "Instance type.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time the instance was last updated.",
            "type": "string"
          },
          "version": {
            "description": "Current version of the Data Fusion. Only specifiable in Update.",
            "type": "string"
          },
          "workforceIdentityServiceEndpoint": {
            "description": "Endpoint on which the Data Fusion UI is accessible to third-party users",
            "type": "string"
          },
          "zone": {
            "description": "Name of the zone in which the Data Fusion instance will be created. Only DEVELOPER instances use this field.",
            "type": "string"
          }
        },
        "required": [
          "accelerators",
          "apiEndpoint",
          "availableVersion",
          "createTime",
          "cryptoKeyConfig",
          "dataprocServiceAccount",
          "description",
          "disabledReason",
          "displayName",
          "enableRbac",
          "enableStackdriverLogging",
          "enableStackdriverMonitoring",
          "enableZoneSeparation",
          "eventPublishConfig",
          "gcsBucket",
          "labels",
          "name",
          "networkConfig",
          "options",
          "p4ServiceAccount",
          "patchRevision",
          "privateInstance",
          "satisfiesPzs",
          "serviceAccount",
          "serviceEndpoint",
          "state",
          "stateMessage",
          "tenantProjectId",
          "type",
          "updateTime",
          "version",
          "workforceIdentityServiceEndpoint",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:datafusion/v1:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datafusion/v1beta1:getInstance": {
      "description": "Gets details of a single Data Fusion instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "accelerators": {
            "description": "List of accelerators enabled for this CDF instance.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1beta1:AcceleratorResponse"
            },
            "type": "array"
          },
          "apiEndpoint": {
            "description": "Endpoint on which the REST APIs is accessible.",
            "type": "string"
          },
          "availableVersion": {
            "description": "Available versions that the instance can be upgraded to using UpdateInstanceRequest.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1beta1:VersionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "cryptoKeyConfig": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:CryptoKeyConfigResponse",
            "description": "The crypto key configuration. This field is used by the Customer-Managed Encryption Keys (CMEK) feature."
          },
          "dataprocServiceAccount": {
            "description": "User-managed service account to set on Dataproc when Cloud Data Fusion creates Dataproc to run data processing pipelines. This allows users to have fine-grained access control on Dataproc's accesses to cloud resources.",
            "type": "string"
          },
          "description": {
            "description": "A description of this instance.",
            "type": "string"
          },
          "disabledReason": {
            "description": "If the instance state is DISABLED, the reason for disabling the instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "Display name for an instance.",
            "type": "string"
          },
          "enableRbac": {
            "description": "Option to enable granular role-based access control.",
            "type": "boolean"
          },
          "enableStackdriverLogging": {
            "description": "Option to enable Stackdriver Logging.",
            "type": "boolean"
          },
          "enableStackdriverMonitoring": {
            "description": "Option to enable Stackdriver Monitoring.",
            "type": "boolean"
          },
          "enableZoneSeparation": {
            "description": "Option to enable zone separation.",
            "type": "boolean"
          },
          "eventPublishConfig": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:EventPublishConfigResponse",
            "description": "Option to enable and pass metadata for event publishing."
          },
          "gcsBucket": {
            "description": "Cloud Storage bucket generated by Data Fusion in the customer project.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for instance to use to annotate any related underlying resources such as Compute Engine VMs. The character '=' is not allowed to be used within the labels.",
            "type": "object"
          },
          "name": {
            "description": "The name of this instance is in the form of projects/{project}/locations/{location}/instances/{instance}.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:datafusion%2Fv1beta1:NetworkConfigResponse",
            "description": "Network configuration options. These are required when a private Data Fusion instance is to be created."
          },
          "options": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of additional options used to configure the behavior of Data Fusion instance.",
            "type": "object"
          },
          "p4ServiceAccount": {
            "description": "P4 service account for the customer project.",
            "type": "string"
          },
          "patchRevision": {
            "description": "Optional. Current patch revision of the Data Fusion.",
            "type": "string"
          },
          "privateInstance": {
            "description": "Specifies whether the Data Fusion instance should be private. If set to true, all Data Fusion nodes will have private IP addresses and will not be able to access the public internet.",
            "type": "boolean"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "serviceAccount": {
            "deprecationMessage": "Output only. Deprecated. Use tenant_project_id instead to extract the tenant project ID.",
            "description": "Deprecated. Use tenant_project_id instead to extract the tenant project ID.",
            "type": "string"
          },
          "serviceEndpoint": {
            "description": "Endpoint on which the Data Fusion UI is accessible.",
            "type": "string"
          },
          "state": {
            "description": "The current state of this Data Fusion instance.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Additional information about the current state of this Data Fusion instance if available.",
            "type": "string"
          },
          "tenantProjectId": {
            "description": "The name of the tenant project.",
            "type": "string"
          },
          "type": {
            "description": "Instance type.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time the instance was last updated.",
            "type": "string"
          },
          "version": {
            "description": "Current version of Data Fusion.",
            "type": "string"
          },
          "workforceIdentityServiceEndpoint": {
            "description": "Endpoint on which the Data Fusion UI is accessible to third-party users.",
            "type": "string"
          },
          "zone": {
            "description": "Name of the zone in which the Data Fusion instance will be created. Only DEVELOPER instances use this field.",
            "type": "string"
          }
        },
        "required": [
          "accelerators",
          "apiEndpoint",
          "availableVersion",
          "createTime",
          "cryptoKeyConfig",
          "dataprocServiceAccount",
          "description",
          "disabledReason",
          "displayName",
          "enableRbac",
          "enableStackdriverLogging",
          "enableStackdriverMonitoring",
          "enableZoneSeparation",
          "eventPublishConfig",
          "gcsBucket",
          "labels",
          "name",
          "networkConfig",
          "options",
          "p4ServiceAccount",
          "patchRevision",
          "privateInstance",
          "satisfiesPzs",
          "serviceAccount",
          "serviceEndpoint",
          "state",
          "stateMessage",
          "tenantProjectId",
          "type",
          "updateTime",
          "version",
          "workforceIdentityServiceEndpoint",
          "zone"
        ],
        "type": "object"
      }
    },
    "google-native:datafusion/v1beta1:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datafusion/v1beta1:getInstanceNamespaceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location",
          "namespaceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datafusion%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datalabeling/v1beta1:getAnnotationSpecSet": {
      "description": "Gets an annotation spec set by resource name.",
      "inputs": {
        "properties": {
          "annotationSpecSetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "annotationSpecSetId"
        ]
      },
      "outputs": {
        "properties": {
          "annotationSpecs": {
            "description": "The array of AnnotationSpecs that you define when you create the AnnotationSpecSet. These are the possible labels for the labeling task.",
            "items": {
              "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1AnnotationSpecResponse"
            },
            "type": "array"
          },
          "blockingResources": {
            "description": "The names of any related resources that are blocking changes to the annotation spec set.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Optional. User-provided description of the annotation specification set. The description can be up to 10,000 characters long.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name for AnnotationSpecSet that you define when you create it. Maximum of 64 characters.",
            "type": "string"
          },
          "name": {
            "description": "The AnnotationSpecSet resource name in the following format: \"projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}\"",
            "type": "string"
          }
        },
        "required": [
          "annotationSpecs",
          "blockingResources",
          "description",
          "displayName",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:datalabeling/v1beta1:getDataset": {
      "description": "Gets dataset by resource name.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId"
        ]
      },
      "outputs": {
        "properties": {
          "blockingResources": {
            "description": "The names of any related resources that are blocking changes to the dataset.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Time the dataset is created.",
            "type": "string"
          },
          "dataItemCount": {
            "description": "The number of data items in the dataset.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User-provided description of the annotation specification set. The description can be up to 10000 characters long.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the dataset. Maximum of 64 characters.",
            "type": "string"
          },
          "inputConfigs": {
            "description": "This is populated with the original input configs where ImportData is called. It is available only after the clients import data to this dataset.",
            "items": {
              "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1InputConfigResponse"
            },
            "type": "array"
          },
          "lastMigrateTime": {
            "description": "Last time that the Dataset is migrated to AI Platform V2. If any of the AnnotatedDataset is migrated, the last_migration_time in Dataset is also updated.",
            "type": "string"
          },
          "name": {
            "description": "Dataset resource name, format is: projects/{project_id}/datasets/{dataset_id}",
            "type": "string"
          }
        },
        "required": [
          "blockingResources",
          "createTime",
          "dataItemCount",
          "description",
          "displayName",
          "inputConfigs",
          "lastMigrateTime",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:datalabeling/v1beta1:getEvaluationJob": {
      "description": "Gets an evaluation job by resource name.",
      "inputs": {
        "properties": {
          "evaluationJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "evaluationJobId"
        ]
      },
      "outputs": {
        "properties": {
          "annotationSpecSet": {
            "description": "Name of the AnnotationSpecSet describing all the labels that your machine learning model outputs. You must create this resource before you create an evaluation job and provide its name in the following format: \"projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}\"",
            "type": "string"
          },
          "attempts": {
            "description": "Every time the evaluation job runs and an error occurs, the failed attempt is appended to this array.",
            "items": {
              "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1AttemptResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp of when this evaluation job was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the job. The description can be up to 25,000 characters long.",
            "type": "string"
          },
          "evaluationJobConfig": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1EvaluationJobConfigResponse",
            "description": "Configuration details for the evaluation job."
          },
          "labelMissingGroundTruth": {
            "description": "Whether you want Data Labeling Service to provide ground truth labels for prediction input. If you want the service to assign human labelers to annotate your data, set this to `true`. If you want to provide your own ground truth labels in the evaluation job's BigQuery table, set this to `false`.",
            "type": "boolean"
          },
          "modelVersion": {
            "description": "The [AI Platform Prediction model version](/ml-engine/docs/prediction-overview) to be evaluated. Prediction input and output is sampled from this model version. When creating an evaluation job, specify the model version in the following format: \"projects/{project_id}/models/{model_name}/versions/{version_name}\" There can only be one evaluation job per model version.",
            "type": "string"
          },
          "name": {
            "description": "After you create a job, Data Labeling Service assigns a name to the job with the following format: \"projects/{project_id}/evaluationJobs/ {evaluation_job_id}\"",
            "type": "string"
          },
          "schedule": {
            "description": "Describes the interval at which the job runs. This interval must be at least 1 day, and it is rounded to the nearest day. For example, if you specify a 50-hour interval, the job runs every 2 days. You can provide the schedule in [crontab format](/scheduler/docs/configuring/cron-job-schedules) or in an [English-like format](/appengine/docs/standard/python/config/cronref#schedule_format). Regardless of what you specify, the job will run at 10:00 AM UTC. Only the interval from this schedule is used, not the specific time of day.",
            "type": "string"
          },
          "state": {
            "description": "Describes the current state of the job.",
            "type": "string"
          }
        },
        "required": [
          "annotationSpecSet",
          "attempts",
          "createTime",
          "description",
          "evaluationJobConfig",
          "labelMissingGroundTruth",
          "modelVersion",
          "name",
          "schedule",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:datalabeling/v1beta1:getFeedbackMessage": {
      "description": "Get a FeedbackMessage object.",
      "inputs": {
        "properties": {
          "annotatedDatasetId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "feedbackMessageId": {
            "type": "string"
          },
          "feedbackThreadId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "annotatedDatasetId",
          "datasetId",
          "feedbackMessageId",
          "feedbackThreadId"
        ]
      },
      "outputs": {
        "properties": {
          "body": {
            "description": "String content of the feedback. Maximum of 10000 characters.",
            "type": "string"
          },
          "createTime": {
            "description": "Create time.",
            "type": "string"
          },
          "image": {
            "description": "The image storing this feedback if the feedback is an image representing operator's comments.",
            "type": "string"
          },
          "name": {
            "description": "Name of the feedback message in a feedback thread. Format: 'project/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}/feedbackMessage/{feedback_message_id}'",
            "type": "string"
          },
          "operatorFeedbackMetadata": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1OperatorFeedbackMetadataResponse"
          },
          "requesterFeedbackMetadata": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1RequesterFeedbackMetadataResponse"
          }
        },
        "required": [
          "body",
          "createTime",
          "image",
          "name",
          "operatorFeedbackMetadata",
          "requesterFeedbackMetadata"
        ],
        "type": "object"
      }
    },
    "google-native:datalabeling/v1beta1:getInstruction": {
      "description": "Gets an instruction by resource name.",
      "inputs": {
        "properties": {
          "instructionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instructionId"
        ]
      },
      "outputs": {
        "properties": {
          "blockingResources": {
            "description": "The names of any related resources that are blocking changes to the instruction.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Creation time of instruction.",
            "type": "string"
          },
          "csvInstruction": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1CsvInstructionResponse",
            "deprecationMessage": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file, such as for classification task. The CSV file should have exact two columns, in the following format: * The first column is labeled data, such as an image reference, text. * The second column is comma separated labels associated with data.",
            "description": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file, such as for classification task. The CSV file should have exact two columns, in the following format: * The first column is labeled data, such as an image reference, text. * The second column is comma separated labels associated with data."
          },
          "dataType": {
            "description": "The data type of this instruction.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User-provided description of the instruction. The description can be up to 10000 characters long.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the instruction. Maximum of 64 characters.",
            "type": "string"
          },
          "name": {
            "description": "Instruction resource name, format: projects/{project_id}/instructions/{instruction_id}",
            "type": "string"
          },
          "pdfInstruction": {
            "$ref": "#/types/google-native:datalabeling%2Fv1beta1:GoogleCloudDatalabelingV1beta1PdfInstructionResponse",
            "description": "Instruction from a PDF document. The PDF should be in a Cloud Storage bucket."
          },
          "updateTime": {
            "description": "Last update time of instruction.",
            "type": "string"
          }
        },
        "required": [
          "blockingResources",
          "createTime",
          "csvInstruction",
          "dataType",
          "description",
          "displayName",
          "name",
          "pdfInstruction",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datalineage/v1:getLineageEvent": {
      "description": "Gets details of a specified lineage event.",
      "inputs": {
        "properties": {
          "lineageEventId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "processId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "runId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lineageEventId",
          "location",
          "processId",
          "runId"
        ]
      },
      "outputs": {
        "properties": {
          "endTime": {
            "description": "Optional. The end of the transformation which resulted in this lineage event. For streaming scenarios, it should be the end of the period from which the lineage is being reported.",
            "type": "string"
          },
          "links": {
            "description": "Optional. List of source-target pairs. Can't contain more than 100 tuples.",
            "items": {
              "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1EventLinkResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. The resource name of the lineage event. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}/lineageEvents/{lineage_event}`. Can be specified or auto-assigned. {lineage_event} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`",
            "type": "string"
          },
          "startTime": {
            "description": "The beginning of the transformation which resulted in this lineage event. For streaming scenarios, it should be the beginning of the period from which the lineage is being reported.",
            "type": "string"
          }
        },
        "required": [
          "endTime",
          "links",
          "name",
          "startTime"
        ],
        "type": "object"
      }
    },
    "google-native:datalineage/v1:getProcess": {
      "description": "Gets the details of the specified process.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "processId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "processId"
        ]
      },
      "outputs": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The attributes of the process. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the process). Up to 100 attributes are allowed.",
            "type": "object"
          },
          "displayName": {
            "description": "Optional. A human-readable name you can set to display in a user interface. Must be not longer than 200 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:\u0026.`",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the lineage process. Format: `projects/{project}/locations/{location}/processes/{process}`. Can be specified or auto-assigned. {process} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`",
            "type": "string"
          },
          "origin": {
            "$ref": "#/types/google-native:datalineage%2Fv1:GoogleCloudDatacatalogLineageV1OriginResponse",
            "description": "Optional. The origin of this process and its runs and lineage events."
          }
        },
        "required": [
          "attributes",
          "displayName",
          "name",
          "origin"
        ],
        "type": "object"
      }
    },
    "google-native:datalineage/v1:getRun": {
      "description": "Gets the details of the specified run.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "processId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "runId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "processId",
          "runId"
        ]
      },
      "outputs": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed.",
            "type": "object"
          },
          "displayName": {
            "description": "Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:\u0026.`",
            "type": "string"
          },
          "endTime": {
            "description": "Optional. The timestamp of the end of the run.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`",
            "type": "string"
          },
          "startTime": {
            "description": "The timestamp of the start of the run.",
            "type": "string"
          },
          "state": {
            "description": "The state of the run.",
            "type": "string"
          }
        },
        "required": [
          "attributes",
          "displayName",
          "endTime",
          "name",
          "startTime",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getConnectionProfile": {
      "description": "Gets details of a single connection profile.",
      "inputs": {
        "properties": {
          "connectionProfileId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionProfileId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "alloydb": {
            "$ref": "#/types/google-native:datamigration%2Fv1:AlloyDbConnectionProfileResponse",
            "description": "An AlloyDB cluster connection profile."
          },
          "cloudsql": {
            "$ref": "#/types/google-native:datamigration%2Fv1:CloudSqlConnectionProfileResponse",
            "description": "A CloudSQL database connection profile."
          },
          "createTime": {
            "description": "The timestamp when the resource was created. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\".",
            "type": "string"
          },
          "displayName": {
            "description": "The connection profile display name.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:datamigration%2Fv1:StatusResponse",
            "description": "The error details in case of state FAILED."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`.",
            "type": "object"
          },
          "mysql": {
            "$ref": "#/types/google-native:datamigration%2Fv1:MySqlConnectionProfileResponse",
            "description": "A MySQL database connection profile."
          },
          "name": {
            "description": "The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}.",
            "type": "string"
          },
          "oracle": {
            "$ref": "#/types/google-native:datamigration%2Fv1:OracleConnectionProfileResponse",
            "description": "An Oracle database connection profile."
          },
          "postgresql": {
            "$ref": "#/types/google-native:datamigration%2Fv1:PostgreSqlConnectionProfileResponse",
            "description": "A PostgreSQL database connection profile."
          },
          "provider": {
            "description": "The database provider.",
            "type": "string"
          },
          "state": {
            "description": "The current connection profile state (e.g. DRAFT, READY, or FAILED).",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was last updated. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\".",
            "type": "string"
          }
        },
        "required": [
          "alloydb",
          "cloudsql",
          "createTime",
          "displayName",
          "error",
          "labels",
          "mysql",
          "name",
          "oracle",
          "postgresql",
          "provider",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getConnectionProfileIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectionProfileId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionProfileId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getConversionWorkspace": {
      "description": "Gets details of a single conversion workspace.",
      "inputs": {
        "properties": {
          "conversionWorkspaceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversionWorkspaceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the workspace resource was created.",
            "type": "string"
          },
          "destination": {
            "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseEngineInfoResponse",
            "description": "The destination engine details."
          },
          "displayName": {
            "description": "Optional. The display name for the workspace.",
            "type": "string"
          },
          "globalSettings": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. A generic list of settings for the workspace. The settings are database pair dependant and can indicate default behavior for the mapping rules engine or turn on or off specific features. Such examples can be: convert_foreign_key_to_interleave=true, skip_triggers=false, ignore_non_table_synonyms=true",
            "type": "object"
          },
          "hasUncommittedChanges": {
            "description": "Whether the workspace has uncommitted changes (changes which were made after the workspace was committed).",
            "type": "boolean"
          },
          "latestCommitId": {
            "description": "The latest commit ID.",
            "type": "string"
          },
          "latestCommitTime": {
            "description": "The timestamp when the workspace was committed.",
            "type": "string"
          },
          "name": {
            "description": "Full name of the workspace resource, in the form of: projects/{project}/locations/{location}/conversionWorkspaces/{conversion_workspace}.",
            "type": "string"
          },
          "source": {
            "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseEngineInfoResponse",
            "description": "The source engine details."
          },
          "updateTime": {
            "description": "The timestamp when the workspace resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "destination",
          "displayName",
          "globalSettings",
          "hasUncommittedChanges",
          "latestCommitId",
          "latestCommitTime",
          "name",
          "source",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getConversionWorkspaceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "conversionWorkspaceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversionWorkspaceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getMappingRule": {
      "description": "Gets the details of a mapping rule.",
      "inputs": {
        "properties": {
          "conversionWorkspaceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "mappingRuleId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversionWorkspaceId",
          "location",
          "mappingRuleId"
        ]
      },
      "outputs": {
        "properties": {
          "conditionalColumnSetValue": {
            "$ref": "#/types/google-native:datamigration%2Fv1:ConditionalColumnSetValueResponse",
            "description": "Optional. Rule to specify how the data contained in a column should be transformed (such as trimmed, rounded, etc) provided that the data meets certain criteria."
          },
          "convertRowidColumn": {
            "$ref": "#/types/google-native:datamigration%2Fv1:ConvertRowIdToColumnResponse",
            "description": "Optional. Rule to specify how multiple tables should be converted with an additional rowid column."
          },
          "displayName": {
            "description": "Optional. A human readable name",
            "type": "string"
          },
          "entityMove": {
            "$ref": "#/types/google-native:datamigration%2Fv1:EntityMoveResponse",
            "description": "Optional. Rule to specify how multiple entities should be relocated into a different schema."
          },
          "filter": {
            "$ref": "#/types/google-native:datamigration%2Fv1:MappingRuleFilterResponse",
            "description": "The rule filter"
          },
          "filterTableColumns": {
            "$ref": "#/types/google-native:datamigration%2Fv1:FilterTableColumnsResponse",
            "description": "Optional. Rule to specify the list of columns to include or exclude from a table."
          },
          "multiColumnDataTypeChange": {
            "$ref": "#/types/google-native:datamigration%2Fv1:MultiColumnDatatypeChangeResponse",
            "description": "Optional. Rule to specify how multiple columns should be converted to a different data type."
          },
          "multiEntityRename": {
            "$ref": "#/types/google-native:datamigration%2Fv1:MultiEntityRenameResponse",
            "description": "Optional. Rule to specify how multiple entities should be renamed."
          },
          "name": {
            "description": "Full name of the mapping rule resource, in the form of: projects/{project}/locations/{location}/conversionWorkspaces/{set}/mappingRule/{rule}.",
            "type": "string"
          },
          "revisionCreateTime": {
            "description": "The timestamp that the revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "The revision ID of the mapping rule. A new revision is committed whenever the mapping rule is changed in any way. The format is an 8-character hexadecimal string.",
            "type": "string"
          },
          "ruleOrder": {
            "description": "The order in which the rule is applied. Lower order rules are applied before higher value rules so they may end up being overridden.",
            "type": "string"
          },
          "ruleScope": {
            "description": "The rule scope",
            "type": "string"
          },
          "setTablePrimaryKey": {
            "$ref": "#/types/google-native:datamigration%2Fv1:SetTablePrimaryKeyResponse",
            "description": "Optional. Rule to specify the primary key for a table"
          },
          "singleColumnChange": {
            "$ref": "#/types/google-native:datamigration%2Fv1:SingleColumnChangeResponse",
            "description": "Optional. Rule to specify how a single column is converted."
          },
          "singleEntityRename": {
            "$ref": "#/types/google-native:datamigration%2Fv1:SingleEntityRenameResponse",
            "description": "Optional. Rule to specify how a single entity should be renamed."
          },
          "singlePackageChange": {
            "$ref": "#/types/google-native:datamigration%2Fv1:SinglePackageChangeResponse",
            "description": "Optional. Rule to specify how a single package is converted."
          },
          "sourceSqlChange": {
            "$ref": "#/types/google-native:datamigration%2Fv1:SourceSqlChangeResponse",
            "description": "Optional. Rule to change the sql code for an entity, for example, function, procedure."
          },
          "state": {
            "description": "Optional. The mapping rule state",
            "type": "string"
          }
        },
        "required": [
          "conditionalColumnSetValue",
          "convertRowidColumn",
          "displayName",
          "entityMove",
          "filter",
          "filterTableColumns",
          "multiColumnDataTypeChange",
          "multiEntityRename",
          "name",
          "revisionCreateTime",
          "revisionId",
          "ruleOrder",
          "ruleScope",
          "setTablePrimaryKey",
          "singleColumnChange",
          "singleEntityRename",
          "singlePackageChange",
          "sourceSqlChange",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getMigrationJob": {
      "description": "Gets details of a single migration job.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "migrationJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "migrationJobId"
        ]
      },
      "outputs": {
        "properties": {
          "cmekKeyName": {
            "description": "The CMEK (customer-managed encryption key) fully qualified key name used for the migration job. This field supports all migration jobs types except for: * Mysql to Mysql (use the cmek field in the cloudsql connection profile instead). * PostrgeSQL to PostgreSQL (use the cmek field in the cloudsql connection profile instead). * PostgreSQL to AlloyDB (use the kms_key_name field in the alloydb connection profile instead). Each Cloud CMEK key has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]",
            "type": "string"
          },
          "conversionWorkspace": {
            "$ref": "#/types/google-native:datamigration%2Fv1:ConversionWorkspaceInfoResponse",
            "description": "The conversion workspace used by the migration."
          },
          "createTime": {
            "description": "The timestamp when the migration job resource was created. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\".",
            "type": "string"
          },
          "destination": {
            "description": "The resource name (URI) of the destination connection profile.",
            "type": "string"
          },
          "destinationDatabase": {
            "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseTypeResponse",
            "description": "The database engine type and provider of the destination."
          },
          "displayName": {
            "description": "The migration job display name.",
            "type": "string"
          },
          "dumpFlags": {
            "$ref": "#/types/google-native:datamigration%2Fv1:DumpFlagsResponse",
            "description": "The initial dump flags. This field and the \"dump_path\" field are mutually exclusive."
          },
          "dumpPath": {
            "description": "The path to the dump file in Google Cloud Storage, in the format: (gs://[BUCKET_NAME]/[OBJECT_NAME]). This field and the \"dump_flags\" field are mutually exclusive.",
            "type": "string"
          },
          "duration": {
            "description": "The duration of the migration job (in seconds). A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".",
            "type": "string"
          },
          "endTime": {
            "description": "If the migration job is completed, the time when it was completed.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:datamigration%2Fv1:StatusResponse",
            "description": "The error details in case of state FAILED."
          },
          "filter": {
            "description": "This field can be used to select the entities to migrate as part of the migration job. It uses AIP-160 notation to select a subset of the entities configured on the associated conversion-workspace. This field should not be set on migration-jobs that are not associated with a conversion workspace.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for migration job to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`.",
            "type": "object"
          },
          "name": {
            "description": "The name (URI) of this migration job resource, in the form of: projects/{project}/locations/{location}/migrationJobs/{migrationJob}.",
            "type": "string"
          },
          "performanceConfig": {
            "$ref": "#/types/google-native:datamigration%2Fv1:PerformanceConfigResponse",
            "description": "Optional. Data dump parallelism settings used by the migration. Currently applicable only for MySQL to Cloud SQL for MySQL migrations only."
          },
          "phase": {
            "description": "The current migration job phase.",
            "type": "string"
          },
          "reverseSshConnectivity": {
            "$ref": "#/types/google-native:datamigration%2Fv1:ReverseSshConnectivityResponse",
            "description": "The details needed to communicate to the source over Reverse SSH tunnel connectivity."
          },
          "source": {
            "description": "The resource name (URI) of the source connection profile.",
            "type": "string"
          },
          "sourceDatabase": {
            "$ref": "#/types/google-native:datamigration%2Fv1:DatabaseTypeResponse",
            "description": "The database engine type and provider of the source."
          },
          "state": {
            "description": "The current migration job state.",
            "type": "string"
          },
          "staticIpConnectivity": {
            "$ref": "#/types/google-native:datamigration%2Fv1:StaticIpConnectivityResponse",
            "description": "static ip connectivity data (default, no additional details needed)."
          },
          "type": {
            "description": "The migration job type.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the migration job resource was last updated. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\".",
            "type": "string"
          },
          "vpcPeeringConnectivity": {
            "$ref": "#/types/google-native:datamigration%2Fv1:VpcPeeringConnectivityResponse",
            "description": "The details of the VPC network that the source database is located in."
          }
        },
        "required": [
          "cmekKeyName",
          "conversionWorkspace",
          "createTime",
          "destination",
          "destinationDatabase",
          "displayName",
          "dumpFlags",
          "dumpPath",
          "duration",
          "endTime",
          "error",
          "filter",
          "labels",
          "name",
          "performanceConfig",
          "phase",
          "reverseSshConnectivity",
          "source",
          "sourceDatabase",
          "state",
          "staticIpConnectivity",
          "type",
          "updateTime",
          "vpcPeeringConnectivity"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getMigrationJobIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "migrationJobId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "migrationJobId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getPrivateConnection": {
      "description": "Gets details of a single private connection.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "privateConnectionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateConnectionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time of the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "The private connection display name.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:datamigration%2Fv1:StatusResponse",
            "description": "The error details in case of state FAILED."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for private connections to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`.",
            "type": "object"
          },
          "name": {
            "description": "The name of the resource.",
            "type": "string"
          },
          "state": {
            "description": "The state of the private connection.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update time of the resource.",
            "type": "string"
          },
          "vpcPeeringConfig": {
            "$ref": "#/types/google-native:datamigration%2Fv1:VpcPeeringConfigResponse",
            "description": "VPC peering configuration."
          }
        },
        "required": [
          "createTime",
          "displayName",
          "error",
          "labels",
          "name",
          "state",
          "updateTime",
          "vpcPeeringConfig"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1:getPrivateConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "privateConnectionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateConnectionId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1beta1:getConnectionProfile": {
      "description": "Gets details of a single connection profile.",
      "inputs": {
        "properties": {
          "connectionProfileId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionProfileId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "cloudsql": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:CloudSqlConnectionProfileResponse",
            "description": "A CloudSQL database connection profile."
          },
          "createTime": {
            "description": "The timestamp when the resource was created. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\".",
            "type": "string"
          },
          "displayName": {
            "description": "The connection profile display name.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:StatusResponse",
            "description": "The error details in case of state FAILED."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for connection profile to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`.",
            "type": "object"
          },
          "mysql": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:MySqlConnectionProfileResponse",
            "description": "A MySQL database connection profile."
          },
          "name": {
            "description": "The name of this connection profile resource in the form of projects/{project}/locations/{location}/connectionProfiles/{connectionProfile}.",
            "type": "string"
          },
          "provider": {
            "description": "The database provider.",
            "type": "string"
          },
          "state": {
            "description": "The current connection profile state (e.g. DRAFT, READY, or FAILED).",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was last updated. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\".",
            "type": "string"
          }
        },
        "required": [
          "cloudsql",
          "createTime",
          "displayName",
          "error",
          "labels",
          "mysql",
          "name",
          "provider",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1beta1:getConnectionProfileIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectionProfileId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionProfileId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1beta1:getMigrationJob": {
      "description": "Gets details of a single migration job.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "migrationJobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "migrationJobId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the migration job resource was created. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\".",
            "type": "string"
          },
          "destination": {
            "description": "The resource name (URI) of the destination connection profile.",
            "type": "string"
          },
          "destinationDatabase": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:DatabaseTypeResponse",
            "description": "The database engine type and provider of the destination."
          },
          "displayName": {
            "description": "The migration job display name.",
            "type": "string"
          },
          "dumpPath": {
            "description": "The path to the dump file in Google Cloud Storage, in the format: (gs://[BUCKET_NAME]/[OBJECT_NAME]).",
            "type": "string"
          },
          "duration": {
            "description": "The duration of the migration job (in seconds). A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".",
            "type": "string"
          },
          "endTime": {
            "description": "If the migration job is completed, the time when it was completed.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:StatusResponse",
            "description": "The error details in case of state FAILED."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The resource labels for migration job to use to annotate any related underlying resources such as Compute Engine VMs. An object containing a list of \"key\": \"value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`.",
            "type": "object"
          },
          "name": {
            "description": "The name (URI) of this migration job resource, in the form of: projects/{project}/locations/{location}/migrationJobs/{migrationJob}.",
            "type": "string"
          },
          "phase": {
            "description": "The current migration job phase.",
            "type": "string"
          },
          "reverseSshConnectivity": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:ReverseSshConnectivityResponse",
            "description": "The details needed to communicate to the source over Reverse SSH tunnel connectivity."
          },
          "source": {
            "description": "The resource name (URI) of the source connection profile.",
            "type": "string"
          },
          "sourceDatabase": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:DatabaseTypeResponse",
            "description": "The database engine type and provider of the source."
          },
          "state": {
            "description": "The current migration job state.",
            "type": "string"
          },
          "staticIpConnectivity": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:StaticIpConnectivityResponse",
            "description": "static ip connectivity data (default, no additional details needed)."
          },
          "type": {
            "description": "The migration job type.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the migration job resource was last updated. A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. Example: \"2014-10-02T15:01:23.045123456Z\".",
            "type": "string"
          },
          "vpcPeeringConnectivity": {
            "$ref": "#/types/google-native:datamigration%2Fv1beta1:VpcPeeringConnectivityResponse",
            "description": "The details of the VPC network that the source database is located in."
          }
        },
        "required": [
          "createTime",
          "destination",
          "destinationDatabase",
          "displayName",
          "dumpPath",
          "duration",
          "endTime",
          "error",
          "labels",
          "name",
          "phase",
          "reverseSshConnectivity",
          "source",
          "sourceDatabase",
          "state",
          "staticIpConnectivity",
          "type",
          "updateTime",
          "vpcPeeringConnectivity"
        ],
        "type": "object"
      }
    },
    "google-native:datamigration/v1beta1:getMigrationJobIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "migrationJobId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "migrationJobId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:datamigration%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datapipelines/v1:getPipeline": {
      "description": "Looks up a single pipeline. Returns a \"NOT_FOUND\" error if no such pipeline exists. Returns a \"FORBIDDEN\" error if the caller doesn't have permission to access it.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "pipelineId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "pipelineId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Immutable. The timestamp when the pipeline was initially created. Set by the Data Pipelines service.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the pipeline. It can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), and underscores (_).",
            "type": "string"
          },
          "jobCount": {
            "description": "Number of jobs.",
            "type": "integer"
          },
          "lastUpdateTime": {
            "description": "Immutable. The timestamp when the pipeline was last modified. Set by the Data Pipelines service.",
            "type": "string"
          },
          "name": {
            "description": "The pipeline name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/pipelines/PIPELINE_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), and periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects). * `LOCATION_ID` is the canonical ID for the pipeline's location. The list of available locations can be obtained by calling `google.cloud.location.Locations.ListLocations`. Note that the Data Pipelines service is not available in all regions. It depends on Cloud Scheduler, an App Engine application, so it's only available in [App Engine regions](https://cloud.google.com/about/locations#region). * `PIPELINE_ID` is the ID of the pipeline. Must be unique for the selected project and location.",
            "type": "string"
          },
          "pipelineSources": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Immutable. The sources of the pipeline (for example, Dataplex). The keys and values are set by the corresponding sources during pipeline creation.",
            "type": "object"
          },
          "scheduleInfo": {
            "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1ScheduleSpecResponse",
            "description": "Internal scheduling information for a pipeline. If this information is provided, periodic jobs will be created per the schedule. If not, users are responsible for creating jobs externally."
          },
          "schedulerServiceAccountEmail": {
            "description": "Optional. A service account email to be used with the Cloud Scheduler job. If not specified, the default compute engine service account will be used.",
            "type": "string"
          },
          "state": {
            "description": "The state of the pipeline. When the pipeline is created, the state is set to 'PIPELINE_STATE_ACTIVE' by default. State changes can be requested by setting the state to stopping, paused, or resuming. State cannot be changed through UpdatePipeline requests.",
            "type": "string"
          },
          "type": {
            "description": "The type of the pipeline. This field affects the scheduling of the pipeline and the type of metrics to show for the pipeline.",
            "type": "string"
          },
          "workload": {
            "$ref": "#/types/google-native:datapipelines%2Fv1:GoogleCloudDatapipelinesV1WorkloadResponse",
            "description": "Workload information for creating new jobs."
          }
        },
        "required": [
          "createTime",
          "displayName",
          "jobCount",
          "lastUpdateTime",
          "name",
          "pipelineSources",
          "scheduleInfo",
          "schedulerServiceAccountEmail",
          "state",
          "type",
          "workload"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getAspectTypeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "aspectTypeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "aspectTypeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getAsset": {
      "description": "Retrieves an asset resource.",
      "inputs": {
        "properties": {
          "assetId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "assetId",
          "lakeId",
          "location",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the asset was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the asset.",
            "type": "string"
          },
          "discoverySpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoverySpecResponse",
            "description": "Optional. Specification of the discovery feature applied to data referenced by this asset. When this spec is left unset, the asset will use the spec set on the parent zone."
          },
          "discoveryStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetDiscoveryStatusResponse",
            "description": "Status of the discovery feature applied to data referenced by this asset."
          },
          "displayName": {
            "description": "Optional. User friendly display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User defined labels for the asset.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the asset, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/assets/{asset_id}.",
            "type": "string"
          },
          "resourceSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetResourceSpecResponse",
            "description": "Specification of the resource that is referenced by this asset."
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetResourceStatusResponse",
            "description": "Status of the resource referenced by this asset."
          },
          "securityStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetSecurityStatusResponse",
            "description": "Status of the security policy applied to resource referenced by this asset."
          },
          "state": {
            "description": "Current state of the asset.",
            "type": "string"
          },
          "uid": {
            "description": "System generated globally unique ID for the asset. This ID will be different if the asset is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the asset was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "discoverySpec",
          "discoveryStatus",
          "displayName",
          "labels",
          "name",
          "resourceSpec",
          "resourceStatus",
          "securityStatus",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getAttribute": {
      "description": "Retrieves a Data Attribute resource.",
      "inputs": {
        "properties": {
          "attributeId": {
            "type": "string"
          },
          "dataTaxonomyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attributeId",
          "dataTaxonomyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "attributeCount": {
            "description": "The number of child attributes present for this attribute.",
            "type": "integer"
          },
          "createTime": {
            "description": "The time when the DataAttribute was created.",
            "type": "string"
          },
          "dataAccessSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataAccessSpecResponse",
            "description": "Optional. Specified when applied to data stored on the resource (eg: rows, columns in BigQuery Tables)."
          },
          "description": {
            "description": "Optional. Description of the DataAttribute.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User friendly display name.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined labels for the DataAttribute.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the dataAttribute, of the form: projects/{project_number}/locations/{location_id}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}.",
            "type": "string"
          },
          "parentId": {
            "description": "Optional. The ID of the parent DataAttribute resource, should belong to the same data taxonomy. Circular dependency in parent chain is not valid. Maximum depth of the hierarchy allowed is 4. a -\u003e b -\u003e c -\u003e d -\u003e e, depth = 4",
            "type": "string"
          },
          "resourceAccessSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ResourceAccessSpecResponse",
            "description": "Optional. Specified when applied to a resource (eg: Cloud Storage bucket, BigQuery dataset, BigQuery table)."
          },
          "uid": {
            "description": "System generated globally unique ID for the DataAttribute. This ID will be different if the DataAttribute is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the DataAttribute was last updated.",
            "type": "string"
          }
        },
        "required": [
          "attributeCount",
          "createTime",
          "dataAccessSpec",
          "description",
          "displayName",
          "etag",
          "labels",
          "name",
          "parentId",
          "resourceAccessSpec",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getContent": {
      "description": "Get a content resource.",
      "inputs": {
        "properties": {
          "contentId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contentId",
          "lakeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Content creation time.",
            "type": "string"
          },
          "dataText": {
            "description": "Content data in string format.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the content.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User defined labels for the content.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the content, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}",
            "type": "string"
          },
          "notebook": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentNotebookResponse",
            "description": "Notebook related configurations."
          },
          "path": {
            "description": "The path for the Content file, represented as directory structure. Unique within a lake. Limited to alphanumerics, hyphens, underscores, dots and slashes.",
            "type": "string"
          },
          "sqlScript": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentSqlScriptResponse",
            "description": "Sql Script related configurations."
          },
          "uid": {
            "description": "System generated globally unique ID for the content. This ID will be different if the content is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the content was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataText",
          "description",
          "labels",
          "name",
          "notebook",
          "path",
          "sqlScript",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getContentitem": {
      "description": "Get a content resource.",
      "inputs": {
        "properties": {
          "contentitemId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contentitemId",
          "lakeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Content creation time.",
            "type": "string"
          },
          "dataText": {
            "description": "Content data in string format.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the content.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User defined labels for the content.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the content, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id}",
            "type": "string"
          },
          "notebook": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentNotebookResponse",
            "description": "Notebook related configurations."
          },
          "path": {
            "description": "The path for the Content file, represented as directory structure. Unique within a lake. Limited to alphanumerics, hyphens, underscores, dots and slashes.",
            "type": "string"
          },
          "sqlScript": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ContentSqlScriptResponse",
            "description": "Sql Script related configurations."
          },
          "uid": {
            "description": "System generated globally unique ID for the content. This ID will be different if the content is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the content was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataText",
          "description",
          "labels",
          "name",
          "notebook",
          "path",
          "sqlScript",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getDataAttributeBinding": {
      "description": "Retrieves a DataAttributeBinding resource.",
      "inputs": {
        "properties": {
          "dataAttributeBindingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataAttributeBindingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "attributes": {
            "description": "Optional. List of attributes to be associated with the resource, provided in the form: projects/{project}/locations/{location}/dataTaxonomies/{dataTaxonomy}/attributes/{data_attribute_id}",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The time when the DataAttributeBinding was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the DataAttributeBinding.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User friendly display name.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Etags must be used when calling the DeleteDataAttributeBinding and the UpdateDataAttributeBinding method.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined labels for the DataAttributeBinding.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the Data Attribute Binding, of the form: projects/{project_number}/locations/{location}/dataAttributeBindings/{data_attribute_binding_id}",
            "type": "string"
          },
          "paths": {
            "description": "Optional. The list of paths for items within the associated resource (eg. columns and partitions within a table) along with attribute bindings.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataAttributeBindingPathResponse"
            },
            "type": "array"
          },
          "resource": {
            "description": "Optional. Immutable. The resource name of the resource that is associated to attributes. Presently, only entity resource is supported in the form: projects/{project}/locations/{location}/lakes/{lake}/zones/{zone}/entities/{entity_id} Must belong in the same project and region as the attribute binding, and there can only exist one active binding for a resource.",
            "type": "string"
          },
          "uid": {
            "description": "System generated globally unique ID for the DataAttributeBinding. This ID will be different if the DataAttributeBinding is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the DataAttributeBinding was last updated.",
            "type": "string"
          }
        },
        "required": [
          "attributes",
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "name",
          "paths",
          "resource",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getDataAttributeBindingIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "dataAttributeBindingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataAttributeBindingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getDataScan": {
      "description": "Gets a DataScan resource.",
      "inputs": {
        "properties": {
          "dataScanId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataScanId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the scan was created.",
            "type": "string"
          },
          "data": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataSourceResponse",
            "description": "The data source for DataScan."
          },
          "dataProfileResult": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileResultResponse",
            "description": "The result of the data profile scan."
          },
          "dataProfileSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataProfileSpecResponse",
            "description": "DataProfileScan related setting."
          },
          "dataQualityResult": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualityResultResponse",
            "description": "The result of the data quality scan."
          },
          "dataQualitySpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataQualitySpecResponse",
            "description": "DataQualityScan related setting."
          },
          "description": {
            "description": "Optional. Description of the scan. Must be between 1-1024 characters.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User friendly display name. Must be between 1-256 characters.",
            "type": "string"
          },
          "executionSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataScanExecutionSpecResponse",
            "description": "Optional. DataScan execution settings.If not specified, the fields in it will use their default values."
          },
          "executionStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1DataScanExecutionStatusResponse",
            "description": "Status of the data scan execution."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined labels for the scan.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the scan, of the form: projects/{project}/locations/{location_id}/dataScans/{datascan_id}, where project refers to a project_id or project_number and location_id refers to a GCP region.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the DataScan.",
            "type": "string"
          },
          "type": {
            "description": "The type of DataScan.",
            "type": "string"
          },
          "uid": {
            "description": "System generated globally unique ID for the scan. This ID will be different if the scan is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the scan was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "data",
          "dataProfileResult",
          "dataProfileSpec",
          "dataQualityResult",
          "dataQualitySpec",
          "description",
          "displayName",
          "executionSpec",
          "executionStatus",
          "labels",
          "name",
          "state",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getDataScanIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "dataScanId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataScanId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getDataTaxonomy": {
      "description": "Retrieves a DataTaxonomy resource.",
      "inputs": {
        "properties": {
          "dataTaxonomyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataTaxonomyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "attributeCount": {
            "description": "The number of attributes in the DataTaxonomy.",
            "type": "integer"
          },
          "classCount": {
            "description": "The number of classes in the DataTaxonomy.",
            "type": "integer"
          },
          "createTime": {
            "description": "The time when the DataTaxonomy was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the DataTaxonomy.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User friendly display name.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined labels for the DataTaxonomy.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the DataTaxonomy, of the form: projects/{project_number}/locations/{location_id}/dataTaxonomies/{data_taxonomy_id}.",
            "type": "string"
          },
          "uid": {
            "description": "System generated globally unique ID for the dataTaxonomy. This ID will be different if the DataTaxonomy is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the DataTaxonomy was last updated.",
            "type": "string"
          }
        },
        "required": [
          "attributeCount",
          "classCount",
          "createTime",
          "description",
          "displayName",
          "etag",
          "labels",
          "name",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getDataTaxonomyAttributeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "attributeId": {
            "type": "string"
          },
          "dataTaxonomyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attributeId",
          "dataTaxonomyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getDataTaxonomyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "dataTaxonomyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dataTaxonomyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getEntity": {
      "description": "Get a metadata entity.",
      "inputs": {
        "properties": {
          "entityId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityId",
          "lakeId",
          "location",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "access": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageAccessResponse",
            "description": "Identifies the access mechanism to the entity. Not user settable."
          },
          "asset": {
            "description": "Immutable. The ID of the asset associated with the storage location containing the entity data. The entity must be with in the same zone with the asset.",
            "type": "string"
          },
          "catalogEntry": {
            "description": "The name of the associated Data Catalog entry.",
            "type": "string"
          },
          "compatibility": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EntityCompatibilityStatusResponse",
            "description": "Metadata stores that the entity is compatible with."
          },
          "createTime": {
            "description": "The time when the entity was created.",
            "type": "string"
          },
          "dataPath": {
            "description": "Immutable. The storage path of the entity data. For Cloud Storage data, this is the fully-qualified path to the entity, such as gs://bucket/path/to/data. For BigQuery data, this is the name of the table resource, such as projects/project_id/datasets/dataset_id/tables/table_id.",
            "type": "string"
          },
          "dataPathPattern": {
            "description": "Optional. The set of items within the data path constituting the data in the entity, represented as a glob path. Example: gs://bucket/path/to/data/**/*.csv.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User friendly longer description text. Must be shorter than or equal to 1024 characters.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Display name must be shorter than or equal to 256 characters.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. The etag associated with the entity, which can be retrieved with a GetEntity request. Required for update and delete requests.",
            "type": "string"
          },
          "format": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1StorageFormatResponse",
            "description": "Identifies the storage format of the entity data. It does not apply to entities with data stored in BigQuery."
          },
          "name": {
            "description": "The resource name of the entity, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{id}.",
            "type": "string"
          },
          "schema": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1SchemaResponse",
            "description": "The description of the data structure and layout. The schema is not included in list responses. It is only included in SCHEMA and FULL entity views of a GetEntity response."
          },
          "system": {
            "description": "Immutable. Identifies the storage system of the entity data.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of entity.",
            "type": "string"
          },
          "uid": {
            "description": "System generated unique ID for the Entity. This ID will be different if the Entity is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the entity was last updated.",
            "type": "string"
          }
        },
        "required": [
          "access",
          "asset",
          "catalogEntry",
          "compatibility",
          "createTime",
          "dataPath",
          "dataPathPattern",
          "description",
          "displayName",
          "etag",
          "format",
          "name",
          "schema",
          "system",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getEntryGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "entryGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getEntryTypeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "entryTypeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entryTypeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getEnvironment": {
      "description": "Get environment resource.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "lakeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Environment creation time.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the environment.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User friendly display name.",
            "type": "string"
          },
          "endpoints": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentEndpointsResponse",
            "description": "URI Endpoints to access sessions associated with the Environment."
          },
          "infrastructureSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentInfrastructureSpecResponse",
            "description": "Infrastructure specification for the Environment."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User defined labels for the environment.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the environment, of the form: projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}",
            "type": "string"
          },
          "sessionSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentSessionSpecResponse",
            "description": "Optional. Configuration for sessions created for this environment."
          },
          "sessionStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1EnvironmentSessionStatusResponse",
            "description": "Status of sessions created for this environment."
          },
          "state": {
            "description": "Current state of the environment.",
            "type": "string"
          },
          "uid": {
            "description": "System generated globally unique ID for the environment. This ID will be different if the environment is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the environment was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "endpoints",
          "infrastructureSpec",
          "labels",
          "name",
          "sessionSpec",
          "sessionStatus",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getGovernanceRuleIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "governanceRuleId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "governanceRuleId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getLake": {
      "description": "Retrieves a lake resource.",
      "inputs": {
        "properties": {
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lakeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "assetStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetStatusResponse",
            "description": "Aggregated status of the underlying assets of the lake."
          },
          "createTime": {
            "description": "The time when the lake was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the lake.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User friendly display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined labels for the lake.",
            "type": "object"
          },
          "metastore": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1LakeMetastoreResponse",
            "description": "Optional. Settings to manage lake and Dataproc Metastore service instance association."
          },
          "metastoreStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1LakeMetastoreStatusResponse",
            "description": "Metastore status of the lake."
          },
          "name": {
            "description": "The relative resource name of the lake, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "Service account associated with this lake. This service account must be authorized to access or operate on resources managed by the lake.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the lake.",
            "type": "string"
          },
          "uid": {
            "description": "System generated globally unique ID for the lake. This ID will be different if the lake is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the lake was last updated.",
            "type": "string"
          }
        },
        "required": [
          "assetStatus",
          "createTime",
          "description",
          "displayName",
          "labels",
          "metastore",
          "metastoreStatus",
          "name",
          "serviceAccount",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getLakeAssetIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "assetId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "assetId",
          "lakeId",
          "location",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getLakeContentIamPolicy": {
      "description": "Gets the access control policy for a contentitem resource. A NOT_FOUND error is returned if the resource does not exist. An empty policy is returned if the resource exists but does not have a policy set on it.Caller must have Google IAM dataplex.content.getIamPolicy permission on the resource.",
      "inputs": {
        "properties": {
          "contentId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contentId",
          "lakeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getLakeContentitemIamPolicy": {
      "description": "Gets the access control policy for a contentitem resource. A NOT_FOUND error is returned if the resource does not exist. An empty policy is returned if the resource exists but does not have a policy set on it.Caller must have Google IAM dataplex.content.getIamPolicy permission on the resource.",
      "inputs": {
        "properties": {
          "contentitemId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contentitemId",
          "lakeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getLakeEnvironmentIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "lakeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getLakeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lakeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getLakeTaskIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lakeId",
          "location",
          "taskId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getLakeZoneIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lakeId",
          "location",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataplex%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getPartition": {
      "description": "Get a metadata partition of an entity.",
      "inputs": {
        "properties": {
          "entityId": {
            "type": "string"
          },
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "partitionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityId",
          "lakeId",
          "location",
          "partitionId",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "etag": {
            "description": "Optional. The etag for this partition.",
            "type": "string"
          },
          "location": {
            "description": "Immutable. The location of the entity data within the partition, for example, gs://bucket/path/to/entity/key1=value1/key2=value2. Or projects//datasets//tables/",
            "type": "string"
          },
          "name": {
            "description": "Partition values used in the HTTP URL must be double encoded. For example, url_encode(url_encode(value)) can be used to encode \"US:CA/CA#Sunnyvale so that the request URL ends with \"/partitions/US%253ACA/CA%2523Sunnyvale\". The name field in the response retains the encoded format.",
            "type": "string"
          },
          "values": {
            "description": "Immutable. The set of values representing the partition, which correspond to the partition schema defined in the parent entity.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "etag",
          "location",
          "name",
          "values"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getTask": {
      "description": "Get task resource.",
      "inputs": {
        "properties": {
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lakeId",
          "location",
          "taskId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the task was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the task.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User friendly display name.",
            "type": "string"
          },
          "executionSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskExecutionSpecResponse",
            "description": "Spec related to how a task is executed."
          },
          "executionStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskExecutionStatusResponse",
            "description": "Status of the latest task executions."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined labels for the task.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the task, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/ tasks/{task_id}.",
            "type": "string"
          },
          "notebook": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskNotebookTaskConfigResponse",
            "description": "Config related to running scheduled Notebooks."
          },
          "spark": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskSparkTaskConfigResponse",
            "description": "Config related to running custom Spark tasks."
          },
          "state": {
            "description": "Current state of the task.",
            "type": "string"
          },
          "triggerSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1TaskTriggerSpecResponse",
            "description": "Spec related to how often and when a task should be triggered."
          },
          "uid": {
            "description": "System generated globally unique ID for the task. This ID will be different if the task is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the task was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "executionSpec",
          "executionStatus",
          "labels",
          "name",
          "notebook",
          "spark",
          "state",
          "triggerSpec",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataplex/v1:getZone": {
      "description": "Retrieves a zone resource.",
      "inputs": {
        "properties": {
          "lakeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lakeId",
          "location",
          "zone"
        ]
      },
      "outputs": {
        "properties": {
          "assetStatus": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1AssetStatusResponse",
            "description": "Aggregated status of the underlying assets of the zone."
          },
          "createTime": {
            "description": "The time when the zone was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the zone.",
            "type": "string"
          },
          "discoverySpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneDiscoverySpecResponse",
            "description": "Optional. Specification of the discovery feature applied to data in this zone."
          },
          "displayName": {
            "description": "Optional. User friendly display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User defined labels for the zone.",
            "type": "object"
          },
          "name": {
            "description": "The relative resource name of the zone, of the form: projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}.",
            "type": "string"
          },
          "resourceSpec": {
            "$ref": "#/types/google-native:dataplex%2Fv1:GoogleCloudDataplexV1ZoneResourceSpecResponse",
            "description": "Specification of the resources that are referenced by the assets within this zone."
          },
          "state": {
            "description": "Current state of the zone.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of the zone.",
            "type": "string"
          },
          "uid": {
            "description": "System generated globally unique ID for the zone. This ID will be different if the zone is deleted and re-created with the same name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the zone was last updated.",
            "type": "string"
          }
        },
        "required": [
          "assetStatus",
          "createTime",
          "description",
          "discoverySpec",
          "displayName",
          "labels",
          "name",
          "resourceSpec",
          "state",
          "type",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getAutoscalingPolicy": {
      "description": "Retrieves autoscaling policy.",
      "inputs": {
        "properties": {
          "autoscalingPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscalingPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "basicAlgorithm": {
            "$ref": "#/types/google-native:dataproc%2Fv1:BasicAutoscalingAlgorithmResponse"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this autoscaling policy. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with an autoscaling policy.",
            "type": "object"
          },
          "name": {
            "description": "The \"resource name\" of the autoscaling policy, as described in https://cloud.google.com/apis/design/resource_names. For projects.regions.autoscalingPolicies, the resource name of the policy has the following format: projects/{project_id}/regions/{region}/autoscalingPolicies/{policy_id} For projects.locations.autoscalingPolicies, the resource name of the policy has the following format: projects/{project_id}/locations/{location}/autoscalingPolicies/{policy_id}",
            "type": "string"
          },
          "secondaryWorkerConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupAutoscalingPolicyConfigResponse",
            "description": "Optional. Describes how the autoscaler will operate for secondary workers."
          },
          "workerConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupAutoscalingPolicyConfigResponse",
            "description": "Describes how the autoscaler will operate for primary workers."
          }
        },
        "required": [
          "basicAlgorithm",
          "labels",
          "name",
          "secondaryWorkerConfig",
          "workerConfig"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getAutoscalingPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "autoscalingPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscalingPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getBatch": {
      "description": "Gets the batch workload resource representation.",
      "inputs": {
        "properties": {
          "batchId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "batchId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the batch was created.",
            "type": "string"
          },
          "creator": {
            "description": "The email address of the user who created the batch.",
            "type": "string"
          },
          "environmentConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfigResponse",
            "description": "Optional. Environment configuration for the batch execution."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this batch. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a batch.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the batch.",
            "type": "string"
          },
          "operation": {
            "description": "The resource name of the operation associated with this batch.",
            "type": "string"
          },
          "pysparkBatch": {
            "$ref": "#/types/google-native:dataproc%2Fv1:PySparkBatchResponse",
            "description": "Optional. PySpark batch config."
          },
          "runtimeConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfigResponse",
            "description": "Optional. Runtime configuration for the batch execution."
          },
          "runtimeInfo": {
            "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeInfoResponse",
            "description": "Runtime information about batch execution."
          },
          "sparkBatch": {
            "$ref": "#/types/google-native:dataproc%2Fv1:SparkBatchResponse",
            "description": "Optional. Spark batch config."
          },
          "sparkRBatch": {
            "$ref": "#/types/google-native:dataproc%2Fv1:SparkRBatchResponse",
            "description": "Optional. SparkR batch config."
          },
          "sparkSqlBatch": {
            "$ref": "#/types/google-native:dataproc%2Fv1:SparkSqlBatchResponse",
            "description": "Optional. SparkSql batch config."
          },
          "state": {
            "description": "The state of the batch.",
            "type": "string"
          },
          "stateHistory": {
            "description": "Historical state information for the batch.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:StateHistoryResponse"
            },
            "type": "array"
          },
          "stateMessage": {
            "description": "Batch state details, such as a failure description if the state is FAILED.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time when the batch entered a current state.",
            "type": "string"
          },
          "uuid": {
            "description": "A batch UUID (Unique Universal Identifier). The service generates this value when it creates the batch.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "creator",
          "environmentConfig",
          "labels",
          "name",
          "operation",
          "pysparkBatch",
          "runtimeConfig",
          "runtimeInfo",
          "sparkBatch",
          "sparkRBatch",
          "sparkSqlBatch",
          "state",
          "stateHistory",
          "stateMessage",
          "stateTime",
          "uuid"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getCluster": {
      "description": "Gets the resource representation for a cluster in a project.",
      "inputs": {
        "properties": {
          "clusterName": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterName",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "clusterName": {
            "description": "The cluster name, which must be unique within a project. The name must start with a lowercase letter, and can contain up to 51 lowercase letters, numbers, and hyphens. It cannot end with a hyphen. The name of a deleted cluster can be reused.",
            "type": "string"
          },
          "clusterUuid": {
            "description": "A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.",
            "type": "string"
          },
          "config": {
            "$ref": "#/types/google-native:dataproc%2Fv1:ClusterConfigResponse",
            "description": "Optional. The cluster config for a cluster of Compute Engine Instances. Note that Dataproc may set default values, and values may change when clusters are updated.Exactly one of ClusterConfig or VirtualClusterConfig must be specified."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.",
            "type": "object"
          },
          "metrics": {
            "$ref": "#/types/google-native:dataproc%2Fv1:ClusterMetricsResponse",
            "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release."
          },
          "project": {
            "description": "The Google Cloud Platform project ID that the cluster belongs to.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:dataproc%2Fv1:ClusterStatusResponse",
            "description": "Cluster status."
          },
          "statusHistory": {
            "description": "The previous cluster status.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:ClusterStatusResponse"
            },
            "type": "array"
          },
          "virtualClusterConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:VirtualClusterConfigResponse",
            "description": "Optional. The virtual cluster config is used when creating a Dataproc cluster that does not directly control the underlying compute resources, for example, when creating a Dataproc-on-GKE cluster (https://cloud.google.com/dataproc/docs/guides/dpgke/dataproc-gke-overview). Dataproc may set default values, and values may change when clusters are updated. Exactly one of config or virtual_cluster_config must be specified."
          }
        },
        "required": [
          "clusterName",
          "clusterUuid",
          "config",
          "labels",
          "metrics",
          "project",
          "status",
          "statusHistory",
          "virtualClusterConfig"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getJob": {
      "description": "Gets the resource representation for a job in a project.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "done": {
            "description": "Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.",
            "type": "boolean"
          },
          "driverControlFilesUri": {
            "description": "If present, the location of miscellaneous control files which can be used as part of job setup and handling. If not present, control files might be placed in the same location as driver_output_uri.",
            "type": "string"
          },
          "driverOutputResourceUri": {
            "description": "A URI pointing to the location of the stdout of the job's driver program.",
            "type": "string"
          },
          "driverSchedulingConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:DriverSchedulingConfigResponse",
            "description": "Optional. Driver scheduling configuration."
          },
          "flinkJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:FlinkJobResponse",
            "description": "Optional. Job is a Flink job."
          },
          "hadoopJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:HadoopJobResponse",
            "description": "Optional. Job is a Hadoop job."
          },
          "hiveJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:HiveJobResponse",
            "description": "Optional. Job is a Hive job."
          },
          "jobUuid": {
            "description": "A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that might be reused over time.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.",
            "type": "object"
          },
          "pigJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:PigJobResponse",
            "description": "Optional. Job is a Pig job."
          },
          "placement": {
            "$ref": "#/types/google-native:dataproc%2Fv1:JobPlacementResponse",
            "description": "Job information, including how, when, and where to run the job."
          },
          "prestoJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:PrestoJobResponse",
            "description": "Optional. Job is a Presto job."
          },
          "pysparkJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:PySparkJobResponse",
            "description": "Optional. Job is a PySpark job."
          },
          "reference": {
            "$ref": "#/types/google-native:dataproc%2Fv1:JobReferenceResponse",
            "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id."
          },
          "scheduling": {
            "$ref": "#/types/google-native:dataproc%2Fv1:JobSchedulingResponse",
            "description": "Optional. Job scheduling configuration."
          },
          "sparkJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:SparkJobResponse",
            "description": "Optional. Job is a Spark job."
          },
          "sparkRJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:SparkRJobResponse",
            "description": "Optional. Job is a SparkR job."
          },
          "sparkSqlJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:SparkSqlJobResponse",
            "description": "Optional. Job is a SparkSql job."
          },
          "status": {
            "$ref": "#/types/google-native:dataproc%2Fv1:JobStatusResponse",
            "description": "The job status. Additional application-specific status information might be contained in the type_job and yarn_applications fields."
          },
          "statusHistory": {
            "description": "The previous job status.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:JobStatusResponse"
            },
            "type": "array"
          },
          "trinoJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1:TrinoJobResponse",
            "description": "Optional. Job is a Trino job."
          },
          "yarnApplications": {
            "description": "The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It might be changed before final release.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:YarnApplicationResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "done",
          "driverControlFilesUri",
          "driverOutputResourceUri",
          "driverSchedulingConfig",
          "flinkJob",
          "hadoopJob",
          "hiveJob",
          "jobUuid",
          "labels",
          "pigJob",
          "placement",
          "prestoJob",
          "pysparkJob",
          "reference",
          "scheduling",
          "sparkJob",
          "sparkRJob",
          "sparkSqlJob",
          "status",
          "statusHistory",
          "trinoJob",
          "yarnApplications"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getNodeGroup": {
      "description": "Gets the resource representation for a node group in a cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "nodeGroupId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "nodeGroupId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Node group labels. Label keys must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty. If specified, they must consist of from 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). The node group must have no more than 32 labelsn.",
            "type": "object"
          },
          "name": {
            "description": "The Node group resource name (https://aip.dev/122).",
            "type": "string"
          },
          "nodeGroupConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:InstanceGroupConfigResponse",
            "description": "Optional. The node group instance group configuration."
          },
          "roles": {
            "description": "Node group roles.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "labels",
          "name",
          "nodeGroupConfig",
          "roles"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getRegionAutoscalingPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "autoscalingPolicyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscalingPolicyId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getRegionClusterIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getRegionJobIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getRegionOperationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "operationId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "operationId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getRegionWorkflowTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          },
          "workflowTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "regionId",
          "workflowTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getSession": {
      "description": "Gets the resource representation for an interactive session.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "sessionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the session was created.",
            "type": "string"
          },
          "creator": {
            "description": "The email address of the user who created the session.",
            "type": "string"
          },
          "environmentConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfigResponse",
            "description": "Optional. Environment configuration for the session execution."
          },
          "jupyterSession": {
            "$ref": "#/types/google-native:dataproc%2Fv1:JupyterConfigResponse",
            "description": "Optional. Jupyter session config."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with the session. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a session.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the session.",
            "type": "string"
          },
          "runtimeConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfigResponse",
            "description": "Optional. Runtime configuration for the session execution."
          },
          "runtimeInfo": {
            "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeInfoResponse",
            "description": "Runtime information about session execution."
          },
          "sessionTemplate": {
            "description": "Optional. The session template used by the session.Only resource names, including project ID and location, are valid.Example: * https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/sessionTemplates/[template_id] * projects/[project_id]/locations/[dataproc_region]/sessionTemplates/[template_id]The template must be in the same project and Dataproc region as the session.",
            "type": "string"
          },
          "state": {
            "description": "A state of the session.",
            "type": "string"
          },
          "stateHistory": {
            "description": "Historical state information for the session.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:SessionStateHistoryResponse"
            },
            "type": "array"
          },
          "stateMessage": {
            "description": "Session state details, such as the failure description if the state is FAILED.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time when the session entered the current state.",
            "type": "string"
          },
          "user": {
            "description": "Optional. The email address of the user who owns the session.",
            "type": "string"
          },
          "uuid": {
            "description": "A session UUID (Unique Universal Identifier). The service generates this value when it creates the session.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "creator",
          "environmentConfig",
          "jupyterSession",
          "labels",
          "name",
          "runtimeConfig",
          "runtimeInfo",
          "sessionTemplate",
          "state",
          "stateHistory",
          "stateMessage",
          "stateTime",
          "user",
          "uuid"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getSessionTemplate": {
      "description": "Gets the resource representation for a session template.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "sessionTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the template was created.",
            "type": "string"
          },
          "creator": {
            "description": "The email address of the user who created the template.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Brief description of the template.",
            "type": "string"
          },
          "environmentConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:EnvironmentConfigResponse",
            "description": "Optional. Environment configuration for session execution."
          },
          "jupyterSession": {
            "$ref": "#/types/google-native:dataproc%2Fv1:JupyterConfigResponse",
            "description": "Optional. Jupyter session config."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels to associate with sessions created using this template. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values can be empty, but, if present, must contain 1 to 63 characters and conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a session.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the session template.",
            "type": "string"
          },
          "runtimeConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:RuntimeConfigResponse",
            "description": "Optional. Runtime configuration for session execution."
          },
          "updateTime": {
            "description": "The time the template was last updated.",
            "type": "string"
          },
          "uuid": {
            "description": "A session template UUID (Unique Universal Identifier). The service generates this value when it creates the session template.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "creator",
          "description",
          "environmentConfig",
          "jupyterSession",
          "labels",
          "name",
          "runtimeConfig",
          "updateTime",
          "uuid"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getWorkflowTemplate": {
      "description": "Retrieves the latest workflow template.Can retrieve previously instantiated template by specifying optional version parameter.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "version": {
            "type": "integer"
          },
          "workflowTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workflowTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time template was created.",
            "type": "string"
          },
          "dagTimeout": {
            "description": "Optional. Timeout duration for the DAG of jobs, expressed in seconds (see JSON representation of duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). The timeout duration must be from 10 minutes (\"600s\") to 24 hours (\"86400s\"). The timer begins when the first job is submitted. If the workflow is running at the end of the timeout period, any remaining jobs are cancelled, the workflow is ended, and if the workflow was running on a managed cluster, the cluster is deleted.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1:GoogleCloudDataprocV1WorkflowTemplateEncryptionConfigResponse",
            "description": "Optional. Encryption settings for the encrypting customer core content."
          },
          "jobs": {
            "description": "The Directed Acyclic Graph of Jobs to submit.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:OrderedJobResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this template. These labels will be propagated to all jobs and clusters created by the workflow instance.Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).No more than 32 labels can be associated with a template.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the workflow template, as described in https://cloud.google.com/apis/design/resource_names. For projects.regions.workflowTemplates, the resource name of the template has the following format: projects/{project_id}/regions/{region}/workflowTemplates/{template_id} For projects.locations.workflowTemplates, the resource name of the template has the following format: projects/{project_id}/locations/{location}/workflowTemplates/{template_id}",
            "type": "string"
          },
          "parameters": {
            "description": "Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:TemplateParameterResponse"
            },
            "type": "array"
          },
          "placement": {
            "$ref": "#/types/google-native:dataproc%2Fv1:WorkflowTemplatePlacementResponse",
            "description": "WorkflowTemplate scheduling information."
          },
          "updateTime": {
            "description": "The time template was last updated.",
            "type": "string"
          },
          "version": {
            "description": "Optional. Used to perform a consistent read-modify-write.This field should be left blank for a CreateWorkflowTemplate request. It is required for an UpdateWorkflowTemplate request, and must match the current server version. A typical update template flow would fetch the current template with a GetWorkflowTemplate request, which will return the current template with the version field filled in with the current server version. The user updates other fields in the template, then returns it as part of the UpdateWorkflowTemplate request.",
            "type": "integer"
          }
        },
        "required": [
          "createTime",
          "dagTimeout",
          "encryptionConfig",
          "jobs",
          "labels",
          "name",
          "parameters",
          "placement",
          "updateTime",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1:getWorkflowTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workflowTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workflowTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getAutoscalingPolicy": {
      "description": "Retrieves autoscaling policy.",
      "inputs": {
        "properties": {
          "autoscalingPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscalingPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "basicAlgorithm": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:BasicAutoscalingAlgorithmResponse"
          },
          "name": {
            "description": "The \"resource name\" of the autoscaling policy, as described in https://cloud.google.com/apis/design/resource_names. For projects.regions.autoscalingPolicies, the resource name of the policy has the following format: projects/{project_id}/regions/{region}/autoscalingPolicies/{policy_id} For projects.locations.autoscalingPolicies, the resource name of the policy has the following format: projects/{project_id}/locations/{location}/autoscalingPolicies/{policy_id}",
            "type": "string"
          },
          "secondaryWorkerConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupAutoscalingPolicyConfigResponse",
            "description": "Optional. Describes how the autoscaler will operate for secondary workers."
          },
          "workerConfig": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:InstanceGroupAutoscalingPolicyConfigResponse",
            "description": "Describes how the autoscaler will operate for primary workers."
          }
        },
        "required": [
          "basicAlgorithm",
          "name",
          "secondaryWorkerConfig",
          "workerConfig"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getAutoscalingPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "autoscalingPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscalingPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getCluster": {
      "description": "Gets the resource representation for a cluster in a project.",
      "inputs": {
        "properties": {
          "clusterName": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterName",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "clusterName": {
            "description": "The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.",
            "type": "string"
          },
          "clusterUuid": {
            "description": "A cluster UUID (Unique Universal Identifier). Dataproc generates this value when it creates the cluster.",
            "type": "string"
          },
          "config": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterConfigResponse",
            "description": "The cluster config. Note that Dataproc may set default values, and values may change when clusters are updated."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.",
            "type": "object"
          },
          "metrics": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterMetricsResponse",
            "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release."
          },
          "project": {
            "description": "The Google Cloud Platform project ID that the cluster belongs to.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterStatusResponse",
            "description": "Cluster status."
          },
          "statusHistory": {
            "description": "The previous cluster status.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:ClusterStatusResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "clusterName",
          "clusterUuid",
          "config",
          "labels",
          "metrics",
          "project",
          "status",
          "statusHistory"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getJob": {
      "description": "Gets the resource representation for a job in a project.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "region"
        ]
      },
      "outputs": {
        "properties": {
          "done": {
            "description": "Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.",
            "type": "boolean"
          },
          "driverControlFilesUri": {
            "description": "If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.",
            "type": "string"
          },
          "driverOutputResourceUri": {
            "description": "A URI pointing to the location of the stdout of the job's driver program.",
            "type": "string"
          },
          "hadoopJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:HadoopJobResponse",
            "description": "Optional. Job is a Hadoop job."
          },
          "hiveJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:HiveJobResponse",
            "description": "Optional. Job is a Hive job."
          },
          "jobUuid": {
            "description": "A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.",
            "type": "object"
          },
          "pigJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:PigJobResponse",
            "description": "Optional. Job is a Pig job."
          },
          "placement": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobPlacementResponse",
            "description": "Job information, including how, when, and where to run the job."
          },
          "prestoJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:PrestoJobResponse",
            "description": "Optional. Job is a Presto job."
          },
          "pysparkJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:PySparkJobResponse",
            "description": "Optional. Job is a PySpark job."
          },
          "reference": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobReferenceResponse",
            "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id."
          },
          "scheduling": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobSchedulingResponse",
            "description": "Optional. Job scheduling configuration."
          },
          "sparkJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkJobResponse",
            "description": "Optional. Job is a Spark job."
          },
          "sparkRJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkRJobResponse",
            "description": "Optional. Job is a SparkR job."
          },
          "sparkSqlJob": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:SparkSqlJobResponse",
            "description": "Optional. Job is a SparkSql job."
          },
          "status": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobStatusResponse",
            "description": "The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields."
          },
          "statusHistory": {
            "description": "The previous job status.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:JobStatusResponse"
            },
            "type": "array"
          },
          "submittedBy": {
            "description": "The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.",
            "type": "string"
          },
          "yarnApplications": {
            "description": "The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:YarnApplicationResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "done",
          "driverControlFilesUri",
          "driverOutputResourceUri",
          "hadoopJob",
          "hiveJob",
          "jobUuid",
          "labels",
          "pigJob",
          "placement",
          "prestoJob",
          "pysparkJob",
          "reference",
          "scheduling",
          "sparkJob",
          "sparkRJob",
          "sparkSqlJob",
          "status",
          "statusHistory",
          "submittedBy",
          "yarnApplications"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getRegionAutoscalingPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "autoscalingPolicyId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "autoscalingPolicyId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getRegionClusterIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getRegionJobIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getRegionOperationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "operationId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "operationId",
          "regionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getRegionWorkflowTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "regionId": {
            "type": "string"
          },
          "workflowTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "regionId",
          "workflowTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getWorkflowTemplate": {
      "description": "Retrieves the latest workflow template.Can retrieve previously instantiated template by specifying optional version parameter.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "version": {
            "type": "integer"
          },
          "workflowTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workflowTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time template was created.",
            "type": "string"
          },
          "dagTimeout": {
            "description": "Optional. Timeout duration for the DAG of jobs, expressed in seconds (see JSON representation of duration (https://developers.google.com/protocol-buffers/docs/proto3#json)). The timeout duration must be from 10 minutes (\"600s\") to 24 hours (\"86400s\"). The timer begins when the first job is submitted. If the workflow is running at the end of the timeout period, any remaining jobs are cancelled, the workflow is ended, and if the workflow was running on a managed cluster, the cluster is deleted.",
            "type": "string"
          },
          "jobs": {
            "description": "The Directed Acyclic Graph of Jobs to submit.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:OrderedJobResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this template. These labels will be propagated to all jobs and clusters created by the workflow instance.Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt).No more than 32 labels can be associated with a template.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the workflow template, as described in https://cloud.google.com/apis/design/resource_names. For projects.regions.workflowTemplates, the resource name of the template has the following format: projects/{project_id}/regions/{region}/workflowTemplates/{template_id} For projects.locations.workflowTemplates, the resource name of the template has the following format: projects/{project_id}/locations/{location}/workflowTemplates/{template_id}",
            "type": "string"
          },
          "parameters": {
            "description": "Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:TemplateParameterResponse"
            },
            "type": "array"
          },
          "placement": {
            "$ref": "#/types/google-native:dataproc%2Fv1beta2:WorkflowTemplatePlacementResponse",
            "description": "WorkflowTemplate scheduling information."
          },
          "updateTime": {
            "description": "The time template was last updated.",
            "type": "string"
          },
          "version": {
            "description": "Optional. Used to perform a consistent read-modify-write.This field should be left blank for a CreateWorkflowTemplate request. It is required for an UpdateWorkflowTemplate request, and must match the current server version. A typical update template flow would fetch the current template with a GetWorkflowTemplate request, which will return the current template with the version field filled in with the current server version. The user updates other fields in the template, then returns it as part of the UpdateWorkflowTemplate request.",
            "type": "integer"
          }
        },
        "required": [
          "createTime",
          "dagTimeout",
          "jobs",
          "labels",
          "name",
          "parameters",
          "placement",
          "updateTime",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dataproc/v1beta2:getWorkflowTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "workflowTemplateId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workflowTemplateId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.",
            "items": {
              "$ref": "#/types/google-native:dataproc%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:datastore/v1:getIndex": {
      "description": "Gets an index.",
      "inputs": {
        "properties": {
          "indexId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "indexId"
        ]
      },
      "outputs": {
        "properties": {
          "ancestor": {
            "description": "The index's ancestor mode. Must not be ANCESTOR_MODE_UNSPECIFIED.",
            "type": "string"
          },
          "indexId": {
            "description": "The resource ID of the index.",
            "type": "string"
          },
          "kind": {
            "description": "The entity kind to which this index applies.",
            "type": "string"
          },
          "project": {
            "description": "Project ID.",
            "type": "string"
          },
          "properties": {
            "description": "An ordered sequence of property names and their index attributes. Requires: * A maximum of 100 properties.",
            "items": {
              "$ref": "#/types/google-native:datastore%2Fv1:GoogleDatastoreAdminV1IndexedPropertyResponse"
            },
            "type": "array"
          },
          "state": {
            "description": "The state of the index.",
            "type": "string"
          }
        },
        "required": [
          "ancestor",
          "indexId",
          "kind",
          "project",
          "properties",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:datastream/v1:getConnectionProfile": {
      "description": "Use this method to get details about a connection profile.",
      "inputs": {
        "properties": {
          "connectionProfileId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionProfileId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryProfile": {
            "$ref": "#/types/google-native:datastream%2Fv1:BigQueryProfileResponse",
            "description": "BigQuery Connection Profile configuration."
          },
          "createTime": {
            "description": "The create time of the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name.",
            "type": "string"
          },
          "forwardSshConnectivity": {
            "$ref": "#/types/google-native:datastream%2Fv1:ForwardSshTunnelConnectivityResponse",
            "description": "Forward SSH tunnel connectivity."
          },
          "gcsProfile": {
            "$ref": "#/types/google-native:datastream%2Fv1:GcsProfileResponse",
            "description": "Cloud Storage ConnectionProfile configuration."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.",
            "type": "object"
          },
          "mysqlProfile": {
            "$ref": "#/types/google-native:datastream%2Fv1:MysqlProfileResponse",
            "description": "MySQL ConnectionProfile configuration."
          },
          "name": {
            "description": "The resource's name.",
            "type": "string"
          },
          "oracleProfile": {
            "$ref": "#/types/google-native:datastream%2Fv1:OracleProfileResponse",
            "description": "Oracle ConnectionProfile configuration."
          },
          "postgresqlProfile": {
            "$ref": "#/types/google-native:datastream%2Fv1:PostgresqlProfileResponse",
            "description": "PostgreSQL Connection Profile configuration."
          },
          "privateConnectivity": {
            "$ref": "#/types/google-native:datastream%2Fv1:PrivateConnectivityResponse",
            "description": "Private connectivity."
          },
          "staticServiceIpConnectivity": {
            "$ref": "#/types/google-native:datastream%2Fv1:StaticServiceIpConnectivityResponse",
            "description": "Static Service IP connectivity."
          },
          "updateTime": {
            "description": "The update time of the resource.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryProfile",
          "createTime",
          "displayName",
          "forwardSshConnectivity",
          "gcsProfile",
          "labels",
          "mysqlProfile",
          "name",
          "oracleProfile",
          "postgresqlProfile",
          "privateConnectivity",
          "staticServiceIpConnectivity",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datastream/v1:getPrivateConnection": {
      "description": "Use this method to get details about a private connectivity configuration.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "privateConnectionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateConnectionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time of the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:datastream%2Fv1:ErrorResponse",
            "description": "In case of error, the details of the error in a user-friendly format."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.",
            "type": "object"
          },
          "name": {
            "description": "The resource's name.",
            "type": "string"
          },
          "state": {
            "description": "The state of the Private Connection.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time of the resource.",
            "type": "string"
          },
          "vpcPeeringConfig": {
            "$ref": "#/types/google-native:datastream%2Fv1:VpcPeeringConfigResponse",
            "description": "VPC Peering Config."
          }
        },
        "required": [
          "createTime",
          "displayName",
          "error",
          "labels",
          "name",
          "state",
          "updateTime",
          "vpcPeeringConfig"
        ],
        "type": "object"
      }
    },
    "google-native:datastream/v1:getRoute": {
      "description": "Use this method to get details about a route.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "privateConnectionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "routeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateConnectionId",
          "routeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time of the resource.",
            "type": "string"
          },
          "destinationAddress": {
            "description": "Destination address for connection",
            "type": "string"
          },
          "destinationPort": {
            "description": "Destination port for connection",
            "type": "integer"
          },
          "displayName": {
            "description": "Display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.",
            "type": "object"
          },
          "name": {
            "description": "The resource's name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time of the resource.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "destinationAddress",
          "destinationPort",
          "displayName",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datastream/v1:getStream": {
      "description": "Use this method to get details about a stream.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "streamId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "streamId"
        ]
      },
      "outputs": {
        "properties": {
          "backfillAll": {
            "$ref": "#/types/google-native:datastream%2Fv1:BackfillAllStrategyResponse",
            "description": "Automatically backfill objects included in the stream source configuration. Specific objects can be excluded."
          },
          "backfillNone": {
            "$ref": "#/types/google-native:datastream%2Fv1:BackfillNoneStrategyResponse",
            "description": "Do not automatically backfill any objects."
          },
          "createTime": {
            "description": "The creation time of the stream.",
            "type": "string"
          },
          "customerManagedEncryptionKey": {
            "description": "Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS.",
            "type": "string"
          },
          "destinationConfig": {
            "$ref": "#/types/google-native:datastream%2Fv1:DestinationConfigResponse",
            "description": "Destination connection profile configuration."
          },
          "displayName": {
            "description": "Display name.",
            "type": "string"
          },
          "errors": {
            "description": "Errors on the Stream.",
            "items": {
              "$ref": "#/types/google-native:datastream%2Fv1:ErrorResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.",
            "type": "object"
          },
          "lastRecoveryTime": {
            "description": "If the stream was recovered, the time of the last recovery. Note: This field is currently experimental.",
            "type": "string"
          },
          "name": {
            "description": "The stream's name.",
            "type": "string"
          },
          "sourceConfig": {
            "$ref": "#/types/google-native:datastream%2Fv1:SourceConfigResponse",
            "description": "Source connection profile configuration."
          },
          "state": {
            "description": "The state of the stream.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update time of the stream.",
            "type": "string"
          }
        },
        "required": [
          "backfillAll",
          "backfillNone",
          "createTime",
          "customerManagedEncryptionKey",
          "destinationConfig",
          "displayName",
          "errors",
          "labels",
          "lastRecoveryTime",
          "name",
          "sourceConfig",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datastream/v1alpha1:getConnectionProfile": {
      "description": "Use this method to get details about a connection profile.",
      "inputs": {
        "properties": {
          "connectionProfileId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectionProfileId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time of the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name.",
            "type": "string"
          },
          "forwardSshConnectivity": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:ForwardSshTunnelConnectivityResponse",
            "description": "Forward SSH tunnel connectivity."
          },
          "gcsProfile": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:GcsProfileResponse",
            "description": "Cloud Storage ConnectionProfile configuration."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.",
            "type": "object"
          },
          "mysqlProfile": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:MysqlProfileResponse",
            "description": "MySQL ConnectionProfile configuration."
          },
          "name": {
            "description": "The resource's name.",
            "type": "string"
          },
          "noConnectivity": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:NoConnectivitySettingsResponse",
            "description": "No connectivity option chosen."
          },
          "oracleProfile": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:OracleProfileResponse",
            "description": "Oracle ConnectionProfile configuration."
          },
          "privateConnectivity": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:PrivateConnectivityResponse",
            "description": "Private connectivity."
          },
          "staticServiceIpConnectivity": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:StaticServiceIpConnectivityResponse",
            "description": "Static Service IP connectivity."
          },
          "updateTime": {
            "description": "The update time of the resource.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "forwardSshConnectivity",
          "gcsProfile",
          "labels",
          "mysqlProfile",
          "name",
          "noConnectivity",
          "oracleProfile",
          "privateConnectivity",
          "staticServiceIpConnectivity",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datastream/v1alpha1:getPrivateConnection": {
      "description": "Use this method to get details about a private connectivity configuration.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "privateConnectionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateConnectionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time of the resource.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:ErrorResponse",
            "description": "In case of error, the details of the error in a user-friendly format."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.",
            "type": "object"
          },
          "name": {
            "description": "The resource's name.",
            "type": "string"
          },
          "state": {
            "description": "The state of the Private Connection.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time of the resource.",
            "type": "string"
          },
          "vpcPeeringConfig": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:VpcPeeringConfigResponse",
            "description": "VPC Peering Config"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "error",
          "labels",
          "name",
          "state",
          "updateTime",
          "vpcPeeringConfig"
        ],
        "type": "object"
      }
    },
    "google-native:datastream/v1alpha1:getRoute": {
      "description": "Use this method to get details about a route.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "privateConnectionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "routeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateConnectionId",
          "routeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time of the resource.",
            "type": "string"
          },
          "destinationAddress": {
            "description": "Destination address for connection",
            "type": "string"
          },
          "destinationPort": {
            "description": "Destination port for connection",
            "type": "integer"
          },
          "displayName": {
            "description": "Display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.",
            "type": "object"
          },
          "name": {
            "description": "The resource's name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time of the resource.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "destinationAddress",
          "destinationPort",
          "displayName",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:datastream/v1alpha1:getStream": {
      "description": "Use this method to get details about a stream.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "streamId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "streamId"
        ]
      },
      "outputs": {
        "properties": {
          "backfillAll": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:BackfillAllStrategyResponse",
            "description": "Automatically backfill objects included in the stream source configuration. Specific objects can be excluded."
          },
          "backfillNone": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:BackfillNoneStrategyResponse",
            "description": "Do not automatically backfill any objects."
          },
          "createTime": {
            "description": "The creation time of the stream.",
            "type": "string"
          },
          "customerManagedEncryptionKey": {
            "description": "Immutable. A reference to a KMS encryption key. If provided, it will be used to encrypt the data. If left blank, data will be encrypted using an internal Stream-specific encryption key provisioned through KMS.",
            "type": "string"
          },
          "destinationConfig": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:DestinationConfigResponse",
            "description": "Destination connection profile configuration."
          },
          "displayName": {
            "description": "Display name.",
            "type": "string"
          },
          "errors": {
            "description": "Errors on the Stream.",
            "items": {
              "$ref": "#/types/google-native:datastream%2Fv1alpha1:ErrorResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.",
            "type": "object"
          },
          "name": {
            "description": "The stream's name.",
            "type": "string"
          },
          "sourceConfig": {
            "$ref": "#/types/google-native:datastream%2Fv1alpha1:SourceConfigResponse",
            "description": "Source connection profile configuration."
          },
          "state": {
            "description": "The state of the stream.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update time of the stream.",
            "type": "string"
          }
        },
        "required": [
          "backfillAll",
          "backfillNone",
          "createTime",
          "customerManagedEncryptionKey",
          "destinationConfig",
          "displayName",
          "errors",
          "labels",
          "name",
          "sourceConfig",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/alpha:getCompositeType": {
      "description": "Gets information about a specific composite type.",
      "inputs": {
        "properties": {
          "compositeType": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "compositeType"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "insertTime": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "labels": {
            "description": "Map of labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Falpha:CompositeTypeLabelEntryResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the composite type, must follow the expression: `[a-z]([-a-z0-9_.]{0,61}[a-z0-9])?`.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationResponse",
            "description": "The Operation that most recently ran, or is currently running, on this composite type."
          },
          "selfLink": {
            "description": "Server defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "templateContents": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:TemplateContentsResponse",
            "description": "Files for the template type."
          }
        },
        "required": [
          "description",
          "insertTime",
          "labels",
          "name",
          "operation",
          "selfLink",
          "status",
          "templateContents"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/alpha:getDeployment": {
      "description": "Gets information about a specific deployment.",
      "inputs": {
        "properties": {
          "deployment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deployment"
        ]
      },
      "outputs": {
        "properties": {
          "credential": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:CredentialResponse",
            "description": "User provided default credential for the deployment."
          },
          "description": {
            "description": "An optional user-provided description of the deployment.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Provides a fingerprint to use in requests to modify a deployment, such as `update()`, `stop()`, and `cancelPreview()` requests. A fingerprint is a randomly generated value that must be provided with `update()`, `stop()`, and `cancelPreview()` requests to perform optimistic locking. This ensures optimistic concurrency so that only one request happens at a time. The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a `get()` request to a deployment.",
            "type": "string"
          },
          "insertTime": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "labels": {
            "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Falpha:DeploymentLabelEntryResponse"
            },
            "type": "array"
          },
          "manifest": {
            "description": "URL of the manifest representing the last manifest that was successfully deployed. If no manifest has been successfully deployed, this field will be absent.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationResponse",
            "description": "The Operation that most recently ran, or is currently running, on this deployment."
          },
          "outputs": {
            "description": "List of outputs from the last manifest that deployed successfully.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Falpha:DeploymentOutputEntryResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server defined URL for the resource.",
            "type": "string"
          },
          "target": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:TargetConfigurationResponse",
            "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
          },
          "update": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:DeploymentUpdateResponse",
            "description": "If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here."
          },
          "updateTime": {
            "description": "Update timestamp in RFC3339 text format.",
            "type": "string"
          }
        },
        "required": [
          "credential",
          "description",
          "fingerprint",
          "insertTime",
          "labels",
          "manifest",
          "name",
          "operation",
          "outputs",
          "selfLink",
          "target",
          "update",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/alpha:getDeploymentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Falpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Falpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/alpha:getTypeProvider": {
      "description": "Gets information about a specific type provider.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "typeProvider": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "typeProvider"
        ]
      },
      "outputs": {
        "properties": {
          "collectionOverrides": {
            "description": "Allows resource handling overrides for specific collections",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Falpha:CollectionOverrideResponse"
            },
            "type": "array"
          },
          "credential": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:CredentialResponse",
            "description": "Credential used when interacting with this type."
          },
          "customCertificateAuthorityRoots": {
            "description": "List of up to 2 custom certificate authority roots to use for TLS authentication when making calls on behalf of this type provider. If set, TLS authentication will exclusively use these roots instead of relying on publicly trusted certificate authorities when validating TLS certificate authenticity. The certificates must be in base64-encoded PEM format. The maximum size of each certificate must not exceed 10KB.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "descriptorUrl": {
            "description": "Descriptor Url for the this type provider.",
            "type": "string"
          },
          "insertTime": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "labels": {
            "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Falpha:TypeProviderLabelEntryResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:OperationResponse",
            "description": "The Operation that most recently ran, or is currently running, on this type provider."
          },
          "options": {
            "$ref": "#/types/google-native:deploymentmanager%2Falpha:OptionsResponse",
            "description": "Options to apply when handling any resources in this service."
          },
          "selfLink": {
            "description": "Self link for the type provider.",
            "type": "string"
          }
        },
        "required": [
          "collectionOverrides",
          "credential",
          "customCertificateAuthorityRoots",
          "description",
          "descriptorUrl",
          "insertTime",
          "labels",
          "name",
          "operation",
          "options",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/v2:getDeployment": {
      "description": "Gets information about a specific deployment.",
      "inputs": {
        "properties": {
          "deployment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deployment"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "An optional user-provided description of the deployment.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Provides a fingerprint to use in requests to modify a deployment, such as `update()`, `stop()`, and `cancelPreview()` requests. A fingerprint is a randomly generated value that must be provided with `update()`, `stop()`, and `cancelPreview()` requests to perform optimistic locking. This ensures optimistic concurrency so that only one request happens at a time. The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a `get()` request to a deployment.",
            "type": "string"
          },
          "insertTime": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "labels": {
            "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2:DeploymentLabelEntryResponse"
            },
            "type": "array"
          },
          "manifest": {
            "description": "URL of the manifest representing the last manifest that was successfully deployed. If no manifest has been successfully deployed, this field will be absent.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:OperationResponse",
            "description": "The Operation that most recently ran, or is currently running, on this deployment."
          },
          "selfLink": {
            "description": "Server defined URL for the resource.",
            "type": "string"
          },
          "target": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:TargetConfigurationResponse",
            "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
          },
          "update": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2:DeploymentUpdateResponse",
            "description": "If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here."
          },
          "updateTime": {
            "description": "Update timestamp in RFC3339 text format.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "fingerprint",
          "insertTime",
          "labels",
          "manifest",
          "name",
          "operation",
          "selfLink",
          "target",
          "update",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/v2:getDeploymentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/v2beta:getCompositeType": {
      "description": "Gets information about a specific composite type.",
      "inputs": {
        "properties": {
          "compositeType": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "compositeType"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "insertTime": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "labels": {
            "description": "Map of labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:CompositeTypeLabelEntryResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the composite type, must follow the expression: `[a-z]([-a-z0-9_.]{0,61}[a-z0-9])?`.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationResponse",
            "description": "The Operation that most recently ran, or is currently running, on this composite type."
          },
          "selfLink": {
            "description": "Server defined URL for the resource.",
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "templateContents": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TemplateContentsResponse",
            "description": "Files for the template type."
          }
        },
        "required": [
          "description",
          "insertTime",
          "labels",
          "name",
          "operation",
          "selfLink",
          "status",
          "templateContents"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/v2beta:getDeployment": {
      "description": "Gets information about a specific deployment.",
      "inputs": {
        "properties": {
          "deployment": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deployment"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "An optional user-provided description of the deployment.",
            "type": "string"
          },
          "fingerprint": {
            "description": "Provides a fingerprint to use in requests to modify a deployment, such as `update()`, `stop()`, and `cancelPreview()` requests. A fingerprint is a randomly generated value that must be provided with `update()`, `stop()`, and `cancelPreview()` requests to perform optimistic locking. This ensures optimistic concurrency so that only one request happens at a time. The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a `get()` request to a deployment.",
            "type": "string"
          },
          "insertTime": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "labels": {
            "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:DeploymentLabelEntryResponse"
            },
            "type": "array"
          },
          "manifest": {
            "description": "URL of the manifest representing the last manifest that was successfully deployed. If no manifest has been successfully deployed, this field will be absent.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationResponse",
            "description": "The Operation that most recently ran, or is currently running, on this deployment."
          },
          "selfLink": {
            "description": "Server defined URL for the resource.",
            "type": "string"
          },
          "target": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TargetConfigurationResponse",
            "description": "[Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates."
          },
          "update": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:DeploymentUpdateResponse",
            "description": "If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here."
          },
          "updateTime": {
            "description": "Update timestamp in RFC3339 text format.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "fingerprint",
          "insertTime",
          "labels",
          "manifest",
          "name",
          "operation",
          "selfLink",
          "target",
          "update",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/v2beta:getDeploymentIamPolicy": {
      "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:deploymentmanager/v2beta:getTypeProvider": {
      "description": "Gets information about a specific type provider.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "typeProvider": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "typeProvider"
        ]
      },
      "outputs": {
        "properties": {
          "collectionOverrides": {
            "description": "Allows resource handling overrides for specific collections",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:CollectionOverrideResponse"
            },
            "type": "array"
          },
          "credential": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:CredentialResponse",
            "description": "Credential used when interacting with this type."
          },
          "customCertificateAuthorityRoots": {
            "description": "List of up to 2 custom certificate authority roots to use for TLS authentication when making calls on behalf of this type provider. If set, TLS authentication will exclusively use these roots instead of relying on publicly trusted certificate authorities when validating TLS certificate authenticity. The certificates must be in base64-encoded PEM format. The maximum size of each certificate must not exceed 10KB.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "An optional textual description of the resource; provided by the client when the resource is created.",
            "type": "string"
          },
          "descriptorUrl": {
            "description": "Descriptor Url for the this type provider.",
            "type": "string"
          },
          "insertTime": {
            "description": "Creation timestamp in RFC3339 text format.",
            "type": "string"
          },
          "labels": {
            "description": "Map of One Platform labels; provided by the client when the resource is created or updated. Specifically: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?` Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`",
            "items": {
              "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:TypeProviderLabelEntryResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OperationResponse",
            "description": "The Operation that most recently ran, or is currently running, on this type provider."
          },
          "options": {
            "$ref": "#/types/google-native:deploymentmanager%2Fv2beta:OptionsResponse",
            "description": "Options to apply when handling any resources in this service."
          },
          "selfLink": {
            "description": "Self link for the type provider.",
            "type": "string"
          }
        },
        "required": [
          "collectionOverrides",
          "credential",
          "customCertificateAuthorityRoots",
          "description",
          "descriptorUrl",
          "insertTime",
          "labels",
          "name",
          "operation",
          "options",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getContext": {
      "description": "Retrieves the specified context.",
      "inputs": {
        "properties": {
          "contextId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contextId",
          "environmentId",
          "location",
          "sessionId",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "lifespanCount": {
            "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.",
            "type": "integer"
          },
          "name": {
            "description": "The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`",
            "type": "string"
          },
          "parameters": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
            "type": "object"
          }
        },
        "required": [
          "lifespanCount",
          "name",
          "parameters"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getConversation": {
      "description": "Retrieves the specific conversation.",
      "inputs": {
        "properties": {
          "conversationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "conversationProfile": {
            "description": "The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`.",
            "type": "string"
          },
          "conversationStage": {
            "description": "The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.",
            "type": "string"
          },
          "endTime": {
            "description": "The time the conversation was finished.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "The current state of the Conversation.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of this conversation. Format: `projects//locations//conversations/`.",
            "type": "string"
          },
          "phoneNumber": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ConversationPhoneNumberResponse",
            "description": "It will not be empty if the conversation is to be connected over telephony."
          },
          "startTime": {
            "description": "The time the conversation was started.",
            "type": "string"
          }
        },
        "required": [
          "conversationProfile",
          "conversationStage",
          "endTime",
          "lifecycleState",
          "name",
          "phoneNumber",
          "startTime"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getConversationDataset": {
      "description": "Retrieves the specified conversation dataset.",
      "inputs": {
        "properties": {
          "conversationDatasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationDatasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "conversationCount": {
            "description": "The number of conversations this conversation dataset contains.",
            "type": "string"
          },
          "conversationInfo": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ConversationInfoResponse",
            "description": "Metadata set during conversation data import."
          },
          "createTime": {
            "description": "Creation time of this dataset.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The description of the dataset. Maximum of 10000 bytes.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the dataset. Maximum of 64 bytes.",
            "type": "string"
          },
          "inputConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2InputConfigResponse",
            "description": "Input configurations set during conversation data import."
          },
          "name": {
            "description": "ConversationDataset resource name. Format: `projects//locations//conversationDatasets/`",
            "type": "string"
          }
        },
        "required": [
          "conversationCount",
          "conversationInfo",
          "createTime",
          "description",
          "displayName",
          "inputConfig",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getConversationModel": {
      "description": "Gets conversation model.",
      "inputs": {
        "properties": {
          "conversationModelId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationModelId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "articleSuggestionModelMetadata": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ArticleSuggestionModelMetadataResponse",
            "description": "Metadata for article suggestion models."
          },
          "createTime": {
            "description": "Creation time of this model.",
            "type": "string"
          },
          "datasets": {
            "description": "Datasets used to create model.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2InputDatasetResponse"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The display name of the model. At most 64 bytes long.",
            "type": "string"
          },
          "languageCode": {
            "description": "Language code for the conversation model. If not specified, the language is en-US. Language at ConversationModel should be set for all non en-us languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\".",
            "type": "string"
          },
          "name": {
            "description": "ConversationModel resource name. Format: `projects//conversationModels/`",
            "type": "string"
          },
          "smartReplyModelMetadata": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SmartReplyModelMetadataResponse",
            "description": "Metadata for smart reply models."
          },
          "state": {
            "description": "State of the model. A model can only serve prediction requests after it gets deployed.",
            "type": "string"
          }
        },
        "required": [
          "articleSuggestionModelMetadata",
          "createTime",
          "datasets",
          "displayName",
          "languageCode",
          "name",
          "smartReplyModelMetadata",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getConversationProfile": {
      "description": "Retrieves the specified conversation profile.",
      "inputs": {
        "properties": {
          "conversationProfileId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationProfileId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "automatedAgentConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2AutomatedAgentConfigResponse",
            "description": "Configuration for an automated agent to use with this profile."
          },
          "createTime": {
            "description": "Create time of the conversation profile.",
            "type": "string"
          },
          "displayName": {
            "description": "Human readable name for this profile. Max length 1024 bytes.",
            "type": "string"
          },
          "humanAgentAssistantConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentAssistantConfigResponse",
            "description": "Configuration for agent assistance to use with this profile."
          },
          "humanAgentHandoffConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2HumanAgentHandoffConfigResponse",
            "description": "Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access."
          },
          "languageCode": {
            "description": "Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\".",
            "type": "string"
          },
          "loggingConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2LoggingConfigResponse",
            "description": "Configuration for logging conversation lifecycle events."
          },
          "name": {
            "description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.",
            "type": "string"
          },
          "newMessageEventNotificationConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfigResponse",
            "description": "Configuration for publishing new message events. Event will be sent in format of ConversationEvent"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2NotificationConfigResponse",
            "description": "Configuration for publishing conversation lifecycle events."
          },
          "securitySettings": {
            "description": "Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.",
            "type": "string"
          },
          "sttConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SpeechToTextConfigResponse",
            "description": "Settings for speech transcription."
          },
          "timeZone": {
            "description": "The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.",
            "type": "string"
          },
          "ttsConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SynthesizeSpeechConfigResponse",
            "description": "Configuration for Text-to-Speech synthesization. Used by Phone Gateway to specify synthesization options. If agent defines synthesization options as well, agent settings overrides the option here."
          },
          "updateTime": {
            "description": "Update time of the conversation profile.",
            "type": "string"
          }
        },
        "required": [
          "automatedAgentConfig",
          "createTime",
          "displayName",
          "humanAgentAssistantConfig",
          "humanAgentHandoffConfig",
          "languageCode",
          "loggingConfig",
          "name",
          "newMessageEventNotificationConfig",
          "notificationConfig",
          "securitySettings",
          "sttConfig",
          "timeZone",
          "ttsConfig",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getDocument": {
      "description": "Retrieves the specified document.",
      "inputs": {
        "properties": {
          "documentId": {
            "type": "string"
          },
          "knowledgeBaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "documentId",
          "knowledgeBaseId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "contentUri": {
            "description": "The URI where the file content is located. For documents stored in Google Cloud Storage, these URIs must have the form `gs:///`. NOTE: External URLs must correspond to public webpages, i.e., they must be indexed by Google Search. In particular, URLs for showing documents in Google Cloud Storage (i.e. the URL in your browser) are not supported. Instead use the `gs://` format URI described above.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the document. The name must be 1024 bytes or less; otherwise, the creation request fails.",
            "type": "string"
          },
          "enableAutoReload": {
            "description": "Optional. If true, we try to automatically reload the document every day (at a time picked by the system). If false or unspecified, we don't try to automatically reload the document. Currently you can only enable automatic reload for documents sourced from a public url, see `source` field for the source types. Reload status can be tracked in `latest_reload_status`. If a reload fails, we will keep the document unchanged. If a reload fails with internal errors, the system will try to reload the document on the next day. If a reload fails with non-retriable errors (e.g. PERMISSION_DENIED), the system will not try to reload the document anymore. You need to manually reload the document successfully by calling `ReloadDocument` and clear the errors.",
            "type": "boolean"
          },
          "knowledgeTypes": {
            "description": "The knowledge type of document content.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "latestReloadStatus": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2DocumentReloadStatusResponse",
            "description": "The time and status of the latest reload. This reload may have been triggered automatically or manually and may not have succeeded."
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Metadata for the document. The metadata supports arbitrary key-value pairs. Suggested use cases include storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a `key` or a `value` of the metadata is 1024 bytes.",
            "type": "object"
          },
          "mimeType": {
            "description": "The MIME type of this document.",
            "type": "string"
          },
          "name": {
            "description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`.",
            "type": "string"
          },
          "rawContent": {
            "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the document.",
            "type": "string"
          }
        },
        "required": [
          "contentUri",
          "displayName",
          "enableAutoReload",
          "knowledgeTypes",
          "latestReloadStatus",
          "metadata",
          "mimeType",
          "name",
          "rawContent",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getEntityType": {
      "description": "Retrieves the specified entity type.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "autoExpansionMode": {
            "description": "Optional. Indicates whether the entity type can be automatically expanded.",
            "type": "string"
          },
          "displayName": {
            "description": "The name of the entity type.",
            "type": "string"
          },
          "enableFuzzyExtraction": {
            "description": "Optional. Enables fuzzy entity extraction during classification.",
            "type": "boolean"
          },
          "entities": {
            "description": "Optional. The collection of entity entries associated with the entity type.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EntityTypeEntityResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Indicates the kind of entity type.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Format: `projects//agent/entityTypes/`.",
            "type": "string"
          }
        },
        "required": [
          "autoExpansionMode",
          "displayName",
          "enableFuzzyExtraction",
          "entities",
          "kind",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getEnvironment": {
      "description": "Retrieves the specified agent environment.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "agentVersion": {
            "description": "Optional. The agent version loaded into this environment. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
            "type": "string"
          },
          "description": {
            "description": "Optional. The developer-provided description for this environment. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "fulfillment": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2FulfillmentResponse",
            "description": "Optional. The fulfillment settings to use for this environment."
          },
          "name": {
            "description": "The unique identifier of this agent environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/` The environment ID for the default environment is `-`.",
            "type": "string"
          },
          "state": {
            "description": "The state of this environment. This field is read-only, i.e., it cannot be set by create and update methods.",
            "type": "string"
          },
          "textToSpeechSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2TextToSpeechSettingsResponse",
            "description": "Optional. Text to speech settings for this environment."
          },
          "updateTime": {
            "description": "The last update time of this environment. This field is read-only, i.e., it cannot be set by create and update methods.",
            "type": "string"
          }
        },
        "required": [
          "agentVersion",
          "description",
          "fulfillment",
          "name",
          "state",
          "textToSpeechSettings",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getEvaluation": {
      "description": "Gets an evaluation of conversation model.",
      "inputs": {
        "properties": {
          "conversationModelId": {
            "type": "string"
          },
          "evaluationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationModelId",
          "evaluationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this model.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. The display name of the model evaluation. At most 64 bytes long.",
            "type": "string"
          },
          "evaluationConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EvaluationConfigResponse",
            "description": "Optional. The configuration of the evaluation task."
          },
          "name": {
            "description": "The resource name of the evaluation. Format: `projects//conversationModels//evaluations/`",
            "type": "string"
          },
          "rawHumanEvalTemplateCsv": {
            "description": "Human eval template in csv format. It tooks real-world conversations provided through input dataset, generates example suggestions for customer to verify quality of the model. For Smart Reply, the generated csv file contains columns of Context, (Suggestions,Q1,Q2)*3, Actual reply. Context contains at most 10 latest messages in the conversation prior to the current suggestion. Q1: \"Would you send it as the next message of agent?\" Evaluated based on whether the suggest is appropriate to be sent by agent in current context. Q2: \"Does the suggestion move the conversation closer to resolution?\" Evaluated based on whether the suggestion provide solutions, or answers customer's question or collect information from customer to resolve the customer's issue. Actual reply column contains the actual agent reply sent in the context.",
            "type": "string"
          },
          "smartReplyMetrics": {
            "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2SmartReplyMetricsResponse",
            "description": "Only available when model is for smart reply."
          }
        },
        "required": [
          "createTime",
          "displayName",
          "evaluationConfig",
          "name",
          "rawHumanEvalTemplateCsv",
          "smartReplyMetrics"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getIntent": {
      "description": "Retrieves the specified intent.",
      "inputs": {
        "properties": {
          "intentId": {
            "type": "string"
          },
          "intentView": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "intentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "action": {
            "description": "Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces.",
            "type": "string"
          },
          "defaultResponsePlatforms": {
            "description": "Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The name of this intent.",
            "type": "string"
          },
          "endInteraction": {
            "description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false.",
            "type": "boolean"
          },
          "events": {
            "description": "Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "followupIntentInfo": {
            "description": "Read-only. Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentFollowupIntentInfoResponse"
            },
            "type": "array"
          },
          "inputContextNames": {
            "description": "Optional. The list of context names required for this intent to be triggered. Format: `projects//agent/sessions/-/contexts/`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "isFallback": {
            "description": "Optional. Indicates whether this is a fallback intent.",
            "type": "boolean"
          },
          "liveAgentHandoff": {
            "description": "Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false.",
            "type": "boolean"
          },
          "messages": {
            "description": "Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentMessageResponse"
            },
            "type": "array"
          },
          "mlDisabled": {
            "description": "Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off.",
            "type": "boolean"
          },
          "name": {
            "description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Format: `projects//agent/intents/`.",
            "type": "string"
          },
          "outputContexts": {
            "description": "Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2ContextResponse"
            },
            "type": "array"
          },
          "parameters": {
            "description": "Optional. The collection of parameters associated with the intent.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentParameterResponse"
            },
            "type": "array"
          },
          "parentFollowupIntentName": {
            "description": "Read-only after creation. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`.",
            "type": "string"
          },
          "priority": {
            "description": "Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.",
            "type": "integer"
          },
          "resetContexts": {
            "description": "Optional. Indicates whether to delete all contexts in the current session when this intent is matched.",
            "type": "boolean"
          },
          "rootFollowupIntentName": {
            "description": "Read-only. The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. We populate this field only in the output. Format: `projects//agent/intents/`.",
            "type": "string"
          },
          "trainingPhrases": {
            "description": "Optional. The collection of examples that the agent is trained on.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2IntentTrainingPhraseResponse"
            },
            "type": "array"
          },
          "webhookState": {
            "description": "Optional. Indicates whether webhooks are enabled for the intent.",
            "type": "string"
          }
        },
        "required": [
          "action",
          "defaultResponsePlatforms",
          "displayName",
          "endInteraction",
          "events",
          "followupIntentInfo",
          "inputContextNames",
          "isFallback",
          "liveAgentHandoff",
          "messages",
          "mlDisabled",
          "name",
          "outputContexts",
          "parameters",
          "parentFollowupIntentName",
          "priority",
          "resetContexts",
          "rootFollowupIntentName",
          "trainingPhrases",
          "webhookState"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getKnowledgeBase": {
      "description": "Retrieves the specified knowledge base.",
      "inputs": {
        "properties": {
          "knowledgeBaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "knowledgeBaseId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The display name of the knowledge base. The name must be 1024 bytes or less; otherwise, the creation request fails.",
            "type": "string"
          },
          "languageCode": {
            "description": "Language which represents the KnowledgeBase. When the KnowledgeBase is created/updated, expect this to be present for non en-us languages. When unspecified, the default language code en-us applies.",
            "type": "string"
          },
          "name": {
            "description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "languageCode",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getParticipant": {
      "description": "Retrieves a conversation participant.",
      "inputs": {
        "properties": {
          "conversationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "participantId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationId",
          "location",
          "participantId"
        ]
      },
      "outputs": {
        "properties": {
          "documentsMetadataFilters": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their Document.metadata. Multiple values for a metadata key should be concatenated by comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values will be ``` documents_metadata_filters { key: \"market\" value: \"US,CA\" } documents_metadata_filters { key: \"user\" value: \"agent\" } ```",
            "type": "object"
          },
          "name": {
            "description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.",
            "type": "string"
          },
          "obfuscatedExternalUserId": {
            "description": "Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow returns an error if you try to add a user id for a non-END_USER participant. Dialogflow uses this user id for billing and measurement purposes. For example, Dialogflow determines whether a user in one conversation returned in a later conversation. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be \u003c= 256 characters.",
            "type": "string"
          },
          "role": {
            "description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.",
            "type": "string"
          },
          "sipRecordingMediaLabel": {
            "description": "Optional. Label applied to streams representing this participant in SIPREC XML metadata and SDP. This is used to assign transcriptions from that media stream to this participant. This field can be updated.",
            "type": "string"
          }
        },
        "required": [
          "documentsMetadataFilters",
          "name",
          "obfuscatedExternalUserId",
          "role",
          "sipRecordingMediaLabel"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getSessionEntityType": {
      "description": "Retrieves the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "environmentId",
          "location",
          "sessionId",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "entities": {
            "description": "The collection of entities associated with this session entity type.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2:GoogleCloudDialogflowV2EntityTypeEntityResponse"
            },
            "type": "array"
          },
          "entityOverrideMode": {
            "description": "Indicates whether the additional data should override or supplement the custom entity type definition.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of this session entity type. Format: `projects//agent/sessions//entityTypes/`, or `projects//agent/environments//users//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.",
            "type": "string"
          }
        },
        "required": [
          "entities",
          "entityOverrideMode",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2:getVersion": {
      "description": "Retrieves the specified agent version.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time of this version. This field is read-only, i.e., it cannot be set by create and update methods.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The developer-provided description of this version.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of this agent version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
            "type": "string"
          },
          "status": {
            "description": "The status of this version. This field is read-only and cannot be set by create and update methods.",
            "type": "string"
          },
          "versionNumber": {
            "description": "The sequential number of this version. This field is read-only which means it cannot be set by create and update methods.",
            "type": "integer"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "status",
          "versionNumber"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getContext": {
      "description": "Retrieves the specified context.",
      "inputs": {
        "properties": {
          "contextId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contextId",
          "environmentId",
          "location",
          "sessionId",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "lifespanCount": {
            "description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.",
            "type": "integer"
          },
          "name": {
            "description": "The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`",
            "type": "string"
          },
          "parameters": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
            "type": "object"
          }
        },
        "required": [
          "lifespanCount",
          "name",
          "parameters"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getConversation": {
      "description": "Retrieves the specific conversation.",
      "inputs": {
        "properties": {
          "conversationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "conversationProfile": {
            "description": "The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`.",
            "type": "string"
          },
          "conversationStage": {
            "description": "The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.",
            "type": "string"
          },
          "endTime": {
            "description": "The time the conversation was finished.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "The current state of the Conversation.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of this conversation. Format: `projects//locations//conversations/`.",
            "type": "string"
          },
          "phoneNumber": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1ConversationPhoneNumberResponse",
            "description": "Required if the conversation is to be connected over telephony."
          },
          "startTime": {
            "description": "The time the conversation was started.",
            "type": "string"
          }
        },
        "required": [
          "conversationProfile",
          "conversationStage",
          "endTime",
          "lifecycleState",
          "name",
          "phoneNumber",
          "startTime"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getConversationProfile": {
      "description": "Retrieves the specified conversation profile.",
      "inputs": {
        "properties": {
          "conversationProfileId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationProfileId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "automatedAgentConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1AutomatedAgentConfigResponse",
            "description": "Configuration for an automated agent to use with this profile."
          },
          "createTime": {
            "description": "Create time of the conversation profile.",
            "type": "string"
          },
          "displayName": {
            "description": "Human readable name for this profile. Max length 1024 bytes.",
            "type": "string"
          },
          "humanAgentAssistantConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigResponse",
            "description": "Configuration for agent assistance to use with this profile."
          },
          "humanAgentHandoffConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigResponse",
            "description": "Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access."
          },
          "languageCode": {
            "description": "Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-us languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\".",
            "type": "string"
          },
          "loggingConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1LoggingConfigResponse",
            "description": "Configuration for logging conversation lifecycle events."
          },
          "name": {
            "description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.",
            "type": "string"
          },
          "newMessageEventNotificationConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfigResponse",
            "description": "Configuration for publishing new message events. Event will be sent in format of ConversationEvent"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1NotificationConfigResponse",
            "description": "Configuration for publishing conversation lifecycle events."
          },
          "securitySettings": {
            "description": "Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.",
            "type": "string"
          },
          "sttConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SpeechToTextConfigResponse",
            "description": "Settings for speech transcription."
          },
          "timeZone": {
            "description": "The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.",
            "type": "string"
          },
          "ttsConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1SynthesizeSpeechConfigResponse",
            "description": "Configuration for Text-to-Speech synthesization. Used by Phone Gateway to specify synthesization options. If agent defines synthesization options as well, agent settings overrides the option here."
          },
          "updateTime": {
            "description": "Update time of the conversation profile.",
            "type": "string"
          }
        },
        "required": [
          "automatedAgentConfig",
          "createTime",
          "displayName",
          "humanAgentAssistantConfig",
          "humanAgentHandoffConfig",
          "languageCode",
          "loggingConfig",
          "name",
          "newMessageEventNotificationConfig",
          "notificationConfig",
          "securitySettings",
          "sttConfig",
          "timeZone",
          "ttsConfig",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getDocument": {
      "description": "Retrieves the specified document. Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
      "inputs": {
        "properties": {
          "documentId": {
            "type": "string"
          },
          "knowledgeBaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "documentId",
          "knowledgeBaseId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "content": {
            "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types. Note: This field is in the process of being deprecated, please use raw_content instead.",
            "type": "string"
          },
          "contentUri": {
            "description": "The URI where the file content is located. For documents stored in Google Cloud Storage, these URIs must have the form `gs:///`. NOTE: External URLs must correspond to public webpages, i.e., they must be indexed by Google Search. In particular, URLs for showing documents in Google Cloud Storage (i.e. the URL in your browser) are not supported. Instead use the `gs://` format URI described above.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the document. The name must be 1024 bytes or less; otherwise, the creation request fails.",
            "type": "string"
          },
          "enableAutoReload": {
            "description": "Optional. If true, we try to automatically reload the document every day (at a time picked by the system). If false or unspecified, we don't try to automatically reload the document. Currently you can only enable automatic reload for documents sourced from a public url, see `source` field for the source types. Reload status can be tracked in `latest_reload_status`. If a reload fails, we will keep the document unchanged. If a reload fails with internal errors, the system will try to reload the document on the next day. If a reload fails with non-retriable errors (e.g. PERMISSION_DENIED), the system will not try to reload the document anymore. You need to manually reload the document successfully by calling `ReloadDocument` and clear the errors.",
            "type": "boolean"
          },
          "knowledgeTypes": {
            "description": "The knowledge type of document content.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "latestReloadStatus": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1DocumentReloadStatusResponse",
            "description": "The time and status of the latest reload. This reload may have been triggered automatically or manually and may not have succeeded."
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Metadata for the document. The metadata supports arbitrary key-value pairs. Suggested use cases include storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a `key` or a `value` of the metadata is 1024 bytes.",
            "type": "object"
          },
          "mimeType": {
            "description": "The MIME type of this document.",
            "type": "string"
          },
          "name": {
            "description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`.",
            "type": "string"
          },
          "rawContent": {
            "description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the document.",
            "type": "string"
          }
        },
        "required": [
          "content",
          "contentUri",
          "displayName",
          "enableAutoReload",
          "knowledgeTypes",
          "latestReloadStatus",
          "metadata",
          "mimeType",
          "name",
          "rawContent",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getEntityType": {
      "description": "Retrieves the specified entity type.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "autoExpansionMode": {
            "description": "Optional. Indicates whether the entity type can be automatically expanded.",
            "type": "string"
          },
          "displayName": {
            "description": "The name of the entity type.",
            "type": "string"
          },
          "enableFuzzyExtraction": {
            "description": "Optional. Enables fuzzy entity extraction during classification.",
            "type": "boolean"
          },
          "entities": {
            "description": "Optional. The collection of entity entries associated with the entity type.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1EntityTypeEntityResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Indicates the kind of entity type.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
            "type": "string"
          }
        },
        "required": [
          "autoExpansionMode",
          "displayName",
          "enableFuzzyExtraction",
          "entities",
          "kind",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getEnvironment": {
      "description": "Retrieves the specified agent environment.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "agentVersion": {
            "description": "Optional. The agent version loaded into this environment. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
            "type": "string"
          },
          "description": {
            "description": "Optional. The developer-provided description for this environment. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "fulfillment": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1FulfillmentResponse",
            "description": "Optional. The fulfillment settings to use for this environment."
          },
          "name": {
            "description": "The unique identifier of this agent environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
            "type": "string"
          },
          "state": {
            "description": "The state of this environment. This field is read-only, i.e., it cannot be set by create and update methods.",
            "type": "string"
          },
          "textToSpeechSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1TextToSpeechSettingsResponse",
            "description": "Optional. Text to speech settings for this environment."
          },
          "updateTime": {
            "description": "The last update time of this environment. This field is read-only, i.e., it cannot be set by create and update methods.",
            "type": "string"
          }
        },
        "required": [
          "agentVersion",
          "description",
          "fulfillment",
          "name",
          "state",
          "textToSpeechSettings",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getIntent": {
      "description": "Retrieves the specified intent.",
      "inputs": {
        "properties": {
          "intentId": {
            "type": "string"
          },
          "intentView": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "intentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "action": {
            "description": "Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces.",
            "type": "string"
          },
          "defaultResponsePlatforms": {
            "description": "Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The name of this intent.",
            "type": "string"
          },
          "endInteraction": {
            "description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false.",
            "type": "boolean"
          },
          "events": {
            "description": "Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "followupIntentInfo": {
            "description": "Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentFollowupIntentInfoResponse"
            },
            "type": "array"
          },
          "inputContextNames": {
            "description": "Optional. The list of context names required for this intent to be triggered. Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//agent/sessions/-/contexts/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "isFallback": {
            "description": "Optional. Indicates whether this is a fallback intent.",
            "type": "boolean"
          },
          "liveAgentHandoff": {
            "description": "Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false.",
            "type": "boolean"
          },
          "messages": {
            "description": "Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentMessageResponse"
            },
            "type": "array"
          },
          "mlDisabled": {
            "description": "Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off.",
            "type": "boolean"
          },
          "mlEnabled": {
            "deprecationMessage": "Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false.",
            "description": "Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false.",
            "type": "boolean"
          },
          "name": {
            "description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`",
            "type": "string"
          },
          "outputContexts": {
            "description": "Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1ContextResponse"
            },
            "type": "array"
          },
          "parameters": {
            "description": "Optional. The collection of parameters associated with the intent.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentParameterResponse"
            },
            "type": "array"
          },
          "parentFollowupIntentName": {
            "description": "Optional. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`.",
            "type": "string"
          },
          "priority": {
            "description": "Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.",
            "type": "integer"
          },
          "resetContexts": {
            "description": "Optional. Indicates whether to delete all contexts in the current session when this intent is matched.",
            "type": "boolean"
          },
          "rootFollowupIntentName": {
            "description": "The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. Format: `projects//agent/intents/`.",
            "type": "string"
          },
          "trainingPhrases": {
            "description": "Optional. The collection of examples that the agent is trained on.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1IntentTrainingPhraseResponse"
            },
            "type": "array"
          },
          "webhookState": {
            "description": "Optional. Indicates whether webhooks are enabled for the intent.",
            "type": "string"
          }
        },
        "required": [
          "action",
          "defaultResponsePlatforms",
          "displayName",
          "endInteraction",
          "events",
          "followupIntentInfo",
          "inputContextNames",
          "isFallback",
          "liveAgentHandoff",
          "messages",
          "mlDisabled",
          "mlEnabled",
          "name",
          "outputContexts",
          "parameters",
          "parentFollowupIntentName",
          "priority",
          "resetContexts",
          "rootFollowupIntentName",
          "trainingPhrases",
          "webhookState"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getKnowledgeBase": {
      "description": "Retrieves the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
      "inputs": {
        "properties": {
          "knowledgeBaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "knowledgeBaseId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The display name of the knowledge base. The name must be 1024 bytes or less; otherwise, the creation request fails.",
            "type": "string"
          },
          "languageCode": {
            "description": "Language which represents the KnowledgeBase. When the KnowledgeBase is created/updated, this is populated for all non en-us languages. If not populated, the default language en-us applies.",
            "type": "string"
          },
          "name": {
            "description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "languageCode",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getParticipant": {
      "description": "Retrieves a conversation participant.",
      "inputs": {
        "properties": {
          "conversationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "participantId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "conversationId",
          "location",
          "participantId"
        ]
      },
      "outputs": {
        "properties": {
          "documentsMetadataFilters": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their Document.metadata. Multiple values for a metadata key should be concatenated by comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values will be ``` documents_metadata_filters { key: \"market\" value: \"US,CA\" } documents_metadata_filters { key: \"user\" value: \"agent\" } ```",
            "type": "object"
          },
          "name": {
            "description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.",
            "type": "string"
          },
          "obfuscatedExternalUserId": {
            "description": "Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for billing and measurement. If a user with the same obfuscated_external_user_id is created in a later conversation, Dialogflow will know it's the same user. Dialogflow also uses this user id for Agent Assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be \u003c= 256 characters.",
            "type": "string"
          },
          "role": {
            "description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.",
            "type": "string"
          }
        },
        "required": [
          "documentsMetadataFilters",
          "name",
          "obfuscatedExternalUserId",
          "role"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getSessionEntityType": {
      "description": "Retrieves the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
      "inputs": {
        "properties": {
          "entityTypeId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "entityTypeId",
          "environmentId",
          "location",
          "sessionId",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "entities": {
            "description": "The collection of entities associated with this session entity type.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv2beta1:GoogleCloudDialogflowV2beta1EntityTypeEntityResponse"
            },
            "type": "array"
          },
          "entityOverrideMode": {
            "description": "Indicates whether the additional data should override or supplement the custom entity type definition.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.",
            "type": "string"
          }
        },
        "required": [
          "entities",
          "entityOverrideMode",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v2beta1:getVersion": {
      "description": "Retrieves the specified agent version.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time of this version. This field is read-only, i.e., it cannot be set by create and update methods.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The developer-provided description of this version.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of this agent version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
            "type": "string"
          },
          "status": {
            "description": "The status of this version. This field is read-only and cannot be set by create and update methods.",
            "type": "string"
          },
          "versionNumber": {
            "description": "The sequential number of this version. This field is read-only which means it cannot be set by create and update methods.",
            "type": "integer"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "status",
          "versionNumber"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getAgent": {
      "description": "Retrieves the specified agent.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "advancedSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
            "description": "Hierarchical advanced settings for this agent. The settings exposed at the lower level overrides the settings exposed at the higher level."
          },
          "answerFeedbackSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentAnswerFeedbackSettingsResponse",
            "description": "Optional. Answer feedback collection settings."
          },
          "avatarUri": {
            "description": "The URI of the agent's avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration.",
            "type": "string"
          },
          "defaultLanguageCode": {
            "description": "Immutable. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the Agents.UpdateAgent method.",
            "type": "string"
          },
          "description": {
            "description": "The description of the agent. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the agent, unique within the location.",
            "type": "string"
          },
          "enableSpellCorrection": {
            "description": "Indicates if automatic spell correction is enabled in detect intent requests.",
            "type": "boolean"
          },
          "enableStackdriverLogging": {
            "description": "Indicates if stackdriver logging is enabled for the agent. Please use agent.advanced_settings instead.",
            "type": "boolean"
          },
          "genAppBuilderSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentGenAppBuilderSettingsResponse",
            "description": "Gen App Builder-related agent-level settings."
          },
          "gitIntegrationSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AgentGitIntegrationSettingsResponse",
            "description": "Git integration settings for this agent."
          },
          "locked": {
            "description": "Indicates whether the agent is locked for changes. If the agent is locked, modifications to the agent will be rejected except for RestoreAgent.",
            "type": "boolean"
          },
          "name": {
            "description": "The unique identifier of the agent. Required for the Agents.UpdateAgent method. Agents.CreateAgent populates the name automatically. Format: `projects//locations//agents/`.",
            "type": "string"
          },
          "securitySettings": {
            "description": "Name of the SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.",
            "type": "string"
          },
          "speechToTextSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SpeechToTextSettingsResponse",
            "description": "Speech recognition related settings."
          },
          "startFlow": {
            "description": "Immutable. Name of the start flow in this agent. A start flow will be automatically created when the agent is created, and can only be deleted by deleting the agent. Format: `projects//locations//agents//flows/`.",
            "type": "string"
          },
          "supportedLanguageCodes": {
            "description": "The list of all languages supported by the agent (except for the `default_language_code`).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "textToSpeechSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TextToSpeechSettingsResponse",
            "description": "Settings on instructing the speech synthesizer on how to generate the output audio content."
          },
          "timeZone": {
            "description": "The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.",
            "type": "string"
          }
        },
        "required": [
          "advancedSettings",
          "answerFeedbackSettings",
          "avatarUri",
          "defaultLanguageCode",
          "description",
          "displayName",
          "enableSpellCorrection",
          "enableStackdriverLogging",
          "genAppBuilderSettings",
          "gitIntegrationSettings",
          "locked",
          "name",
          "securitySettings",
          "speechToTextSettings",
          "startFlow",
          "supportedLanguageCodes",
          "textToSpeechSettings",
          "timeZone"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getEntityType": {
      "description": "Retrieves the specified entity type.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "entityTypeId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "entityTypeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "autoExpansionMode": {
            "description": "Indicates whether the entity type can be automatically expanded.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the entity type, unique within the agent.",
            "type": "string"
          },
          "enableFuzzyExtraction": {
            "description": "Enables fuzzy entity extraction during classification.",
            "type": "boolean"
          },
          "entities": {
            "description": "The collection of entity entries associated with the entity type.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeEntityResponse"
            },
            "type": "array"
          },
          "excludedPhrases": {
            "description": "Collection of exceptional words and phrases that shouldn't be matched. For example, if you have a size entity type with entry `giant`(an adjective), you might consider adding `giants`(a noun) as an exclusion. If the kind of entity type is `KIND_MAP`, then the phrases specified by entities and excluded phrases should be mutually exclusive.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeExcludedPhraseResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Indicates the kind of entity type.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType. Format: `projects//locations//agents//entityTypes/`.",
            "type": "string"
          },
          "redact": {
            "description": "Indicates whether parameters of the entity type should be redacted in log. If redaction is enabled, page parameters and intent parameters referring to the entity type will be replaced by parameter name when logging.",
            "type": "boolean"
          }
        },
        "required": [
          "autoExpansionMode",
          "displayName",
          "enableFuzzyExtraction",
          "entities",
          "excludedPhrases",
          "kind",
          "name",
          "redact"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getEnvironment": {
      "description": "Retrieves the specified Environment.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "environmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "The human-readable description of the environment. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the environment (unique in an agent). Limit of 64 characters.",
            "type": "string"
          },
          "name": {
            "description": "The name of the environment. Format: `projects//locations//agents//environments/`.",
            "type": "string"
          },
          "testCasesConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentTestCasesConfigResponse",
            "description": "The test cases config for continuous tests of this environment."
          },
          "updateTime": {
            "description": "Update time of this environment.",
            "type": "string"
          },
          "versionConfigs": {
            "description": "A list of configurations for flow versions. You should include version configs for all flows that are reachable from `Start Flow` in the agent. Otherwise, an error will be returned.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentVersionConfigResponse"
            },
            "type": "array"
          },
          "webhookConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EnvironmentWebhookConfigResponse",
            "description": "The webhook configuration for this environment."
          }
        },
        "required": [
          "description",
          "displayName",
          "name",
          "testCasesConfig",
          "updateTime",
          "versionConfigs",
          "webhookConfig"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getExperiment": {
      "description": "Retrieves the specified Experiment.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "experimentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "environmentId",
          "experimentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this experiment.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentDefinitionResponse",
            "description": "The definition of the experiment."
          },
          "description": {
            "description": "The human-readable description of the experiment.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the experiment (unique in an environment). Limit of 64 characters.",
            "type": "string"
          },
          "endTime": {
            "description": "End time of this experiment.",
            "type": "string"
          },
          "experimentLength": {
            "description": "Maximum number of days to run the experiment/rollout. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.",
            "type": "string"
          },
          "lastUpdateTime": {
            "description": "Last update time of this experiment.",
            "type": "string"
          },
          "name": {
            "description": "The name of the experiment. Format: projects//locations//agents//environments//experiments/..",
            "type": "string"
          },
          "result": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ExperimentResultResponse",
            "description": "Inference result of the experiment."
          },
          "rolloutConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3RolloutConfigResponse",
            "description": "The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow."
          },
          "rolloutFailureReason": {
            "description": "The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.",
            "type": "string"
          },
          "rolloutState": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3RolloutStateResponse",
            "description": "State of the auto rollout process."
          },
          "startTime": {
            "description": "Start time of this experiment.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the experiment. Transition triggered by Experiments.StartExperiment: DRAFT-\u003eRUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-\u003eDONE or RUNNING-\u003eDONE.",
            "type": "string"
          },
          "variantsHistory": {
            "description": "The history of updates to the experiment variants.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3VariantsHistoryResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "definition",
          "description",
          "displayName",
          "endTime",
          "experimentLength",
          "lastUpdateTime",
          "name",
          "result",
          "rolloutConfig",
          "rolloutFailureReason",
          "rolloutState",
          "startTime",
          "state",
          "variantsHistory"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getFlow": {
      "description": "Retrieves the specified flow.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "flowId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "advancedSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
            "description": "Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level."
          },
          "description": {
            "description": "The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the flow.",
            "type": "string"
          },
          "eventHandlers": {
            "description": "A flow's event handlers serve two purposes: * They are responsible for handling events (e.g. no match, webhook errors) in the flow. * They are inherited by every page's event handlers, which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow. Unlike transition_routes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandlerResponse"
            },
            "type": "array"
          },
          "knowledgeConnectorSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettingsResponse",
            "description": "Optional. Knowledge connector configuration."
          },
          "name": {
            "description": "The unique identifier of the flow. Format: `projects//locations//agents//flows/`.",
            "type": "string"
          },
          "nluSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3NluSettingsResponse",
            "description": "NLU related settings of the flow."
          },
          "transitionRouteGroups": {
            "description": "A flow's transition route group serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition route groups. Transition route groups defined in the page have higher priority than those defined in the flow. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transitionRoutes": {
            "description": "A flow's transition routes serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition routes and can support use cases such as the user saying \"help\" or \"can I talk to a human?\", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow. TransitionRoutes are evalauted in the following order: * TransitionRoutes with intent specified. * TransitionRoutes with only condition specified. TransitionRoutes with intent specified are inherited by pages in the flow.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRouteResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "advancedSettings",
          "description",
          "displayName",
          "eventHandlers",
          "knowledgeConnectorSettings",
          "name",
          "nluSettings",
          "transitionRouteGroups",
          "transitionRoutes"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getIntent": {
      "description": "Retrieves the specified intent.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "intentId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "intentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the intent, unique within the agent.",
            "type": "string"
          },
          "isFallback": {
            "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys.contextual\" means the intent is a contextual intent.",
            "type": "object"
          },
          "name": {
            "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`.",
            "type": "string"
          },
          "parameters": {
            "description": "The collection of parameters associated with the intent.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentParameterResponse"
            },
            "type": "array"
          },
          "priority": {
            "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.",
            "type": "integer"
          },
          "trainingPhrases": {
            "description": "The collection of training phrases the agent is trained on to identify the intent.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3IntentTrainingPhraseResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "description",
          "displayName",
          "isFallback",
          "labels",
          "name",
          "parameters",
          "priority",
          "trainingPhrases"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getPage": {
      "description": "Retrieves the specified page.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "pageId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "flowId",
          "location",
          "pageId"
        ]
      },
      "outputs": {
        "properties": {
          "advancedSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3AdvancedSettingsResponse",
            "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
          },
          "displayName": {
            "description": "The human-readable name of the page, unique within the flow.",
            "type": "string"
          },
          "entryFulfillment": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FulfillmentResponse",
            "description": "The fulfillment to call when the session is entering the page."
          },
          "eventHandlers": {
            "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EventHandlerResponse"
            },
            "type": "array"
          },
          "form": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3FormResponse",
            "description": "The form associated with the page, used for collecting parameters relevant to the page."
          },
          "knowledgeConnectorSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3KnowledgeConnectorSettingsResponse",
            "description": "Optional. Knowledge connector configuration."
          },
          "name": {
            "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`.",
            "type": "string"
          },
          "transitionRouteGroups": {
            "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -\u003e page's transition route group -\u003e flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transitionRoutes": {
            "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRouteResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "advancedSettings",
          "displayName",
          "entryFulfillment",
          "eventHandlers",
          "form",
          "knowledgeConnectorSettings",
          "name",
          "transitionRouteGroups",
          "transitionRoutes"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getSecuritySetting": {
      "description": "Retrieves the specified SecuritySettings. The returned settings may be stale by up to 1 minute.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "securitySettingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "securitySettingId"
        ]
      },
      "outputs": {
        "properties": {
          "audioExportSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SecuritySettingsAudioExportSettingsResponse",
            "description": "Controls audio export settings for post-conversation analytics when ingesting audio to conversations via Participants.AnalyzeContent or Participants.StreamingAnalyzeContent. If retention_strategy is set to REMOVE_AFTER_CONVERSATION or audio_export_settings.gcs_bucket is empty, audio export is disabled. If audio export is enabled, audio is recorded and saved to audio_export_settings.gcs_bucket, subject to retention policy of audio_export_settings.gcs_bucket. This setting won't effect audio input for implicit sessions via Sessions.DetectIntent or Sessions.StreamingDetectIntent."
          },
          "deidentifyTemplate": {
            "description": "[DLP](https://cloud.google.com/dlp/docs) deidentify template name. Use this template to define de-identification configuration for the content. The `DLP De-identify Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, Dialogflow replaces sensitive info with `[redacted]` text. The template name will have one of the following formats: `projects//locations//deidentifyTemplates/` OR `organizations//locations//deidentifyTemplates/` Note: `deidentify_template` must be located in the same region as the `SecuritySettings`.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the security settings, unique within the location.",
            "type": "string"
          },
          "insightsExportSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3SecuritySettingsInsightsExportSettingsResponse",
            "description": "Controls conversation exporting settings to Insights after conversation is completed. If retention_strategy is set to REMOVE_AFTER_CONVERSATION, Insights export is disabled no matter what you configure here."
          },
          "inspectTemplate": {
            "description": "[DLP](https://cloud.google.com/dlp/docs) inspect template name. Use this template to define inspect base settings. The `DLP Inspect Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, we use the default DLP inspect config. The template name will have one of the following formats: `projects//locations//inspectTemplates/` OR `organizations//locations//inspectTemplates/` Note: `inspect_template` must be located in the same region as the `SecuritySettings`.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the settings. Required for the SecuritySettingsService.UpdateSecuritySettings method. SecuritySettingsService.CreateSecuritySettings populates the name automatically. Format: `projects//locations//securitySettings/`.",
            "type": "string"
          },
          "purgeDataTypes": {
            "description": "List of types of data to remove when retention settings triggers purge.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "redactionScope": {
            "description": "Defines the data for which Dialogflow applies redaction. Dialogflow does not redact data that it does not have access to – for example, Cloud logging.",
            "type": "string"
          },
          "redactionStrategy": {
            "description": "Strategy that defines how we do redaction.",
            "type": "string"
          },
          "retentionStrategy": {
            "description": "Specifies the retention behavior defined by SecuritySettings.RetentionStrategy.",
            "type": "string"
          },
          "retentionWindowDays": {
            "description": "Retains the data for the specified number of days. User must set a value lower than Dialogflow's default 365d TTL (30 days for Agent Assist traffic), higher value will be ignored and use default. Setting a value higher than that has no effect. A missing value or setting to 0 also means we use default TTL.",
            "type": "integer"
          }
        },
        "required": [
          "audioExportSettings",
          "deidentifyTemplate",
          "displayName",
          "insightsExportSettings",
          "inspectTemplate",
          "name",
          "purgeDataTypes",
          "redactionScope",
          "redactionStrategy",
          "retentionStrategy",
          "retentionWindowDays"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getSessionEntityType": {
      "description": "Retrieves the specified session entity type.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "entityTypeId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "entityTypeId",
          "environmentId",
          "location",
          "sessionId"
        ]
      },
      "outputs": {
        "properties": {
          "entities": {
            "description": "The collection of entities to override or supplement the custom entity type.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3EntityTypeEntityResponse"
            },
            "type": "array"
          },
          "entityOverrideMode": {
            "description": "Indicates whether the additional data should override or supplement the custom entity type definition.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of the session entity type. Format: `projects//locations//agents//sessions//entityTypes/` or `projects//locations//agents//environments//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment.",
            "type": "string"
          }
        },
        "required": [
          "entities",
          "entityOverrideMode",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getTestCase": {
      "description": "Gets a test case.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "testCaseId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "location",
          "testCaseId"
        ]
      },
      "outputs": {
        "properties": {
          "creationTime": {
            "description": "When the test was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the test case, unique within the agent. Limit of 200 characters.",
            "type": "string"
          },
          "lastTestResult": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TestCaseResultResponse",
            "description": "The latest test result."
          },
          "name": {
            "description": "The unique identifier of the test case. TestCases.CreateTestCase will populate the name automatically. Otherwise use format: `projects//locations//agents/ /testCases/`.",
            "type": "string"
          },
          "notes": {
            "description": "Additional freeform notes about the test case. Limit of 400 characters.",
            "type": "string"
          },
          "tags": {
            "description": "Tags are short descriptions that users may apply to test cases for organizational and filtering purposes. Each tag should start with \"#\" and has a limit of 30 characters.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "testCaseConversationTurns": {
            "description": "The conversation turns uttered when the test case was created, in chronological order. These include the canonical set of agent utterances that should occur when the agent is working properly.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3ConversationTurnResponse"
            },
            "type": "array"
          },
          "testConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TestConfigResponse",
            "description": "Config for the test case."
          }
        },
        "required": [
          "creationTime",
          "displayName",
          "lastTestResult",
          "name",
          "notes",
          "tags",
          "testCaseConversationTurns",
          "testConfig"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getTransitionRouteGroup": {
      "description": "Retrieves the specified TransitionRouteGroup.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "transitionRouteGroupId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "flowId",
          "location",
          "transitionRouteGroupId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The human-readable name of the transition route group, unique within the flow. The display name can be no longer than 30 characters.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of the transition route group. TransitionRouteGroups.CreateTransitionRouteGroup populates the name automatically. Format: `projects//locations//agents//flows//transitionRouteGroups/` .",
            "type": "string"
          },
          "transitionRoutes": {
            "description": "Transition routes associated with the TransitionRouteGroup.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3TransitionRouteResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "displayName",
          "name",
          "transitionRoutes"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getVersion": {
      "description": "Retrieves the specified Version.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "flowId",
          "location",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Create time of the version.",
            "type": "string"
          },
          "description": {
            "description": "The description of the version. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the version. Limit of 64 characters.",
            "type": "string"
          },
          "name": {
            "description": "Format: projects//locations//agents//flows//versions/. Version ID is a self-increasing number generated by Dialogflow upon version creation.",
            "type": "string"
          },
          "nluSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3NluSettingsResponse",
            "description": "The NLU settings of the flow at version creation."
          },
          "state": {
            "description": "The state of this version. This field is read-only and cannot be set by create and update methods.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "name",
          "nluSettings",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3:getWebhook": {
      "description": "Retrieves the specified webhook.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "webhookId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "location",
          "webhookId"
        ]
      },
      "outputs": {
        "properties": {
          "disabled": {
            "description": "Indicates whether the webhook is disabled.",
            "type": "boolean"
          },
          "displayName": {
            "description": "The human-readable name of the webhook, unique within the agent.",
            "type": "string"
          },
          "genericWebService": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookGenericWebServiceResponse",
            "description": "Configuration for a generic web service."
          },
          "name": {
            "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`.",
            "type": "string"
          },
          "serviceDirectory": {
            "$ref": "#/types/google-native:dialogflow%2Fv3:GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfigResponse",
            "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
          },
          "timeout": {
            "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds.",
            "type": "string"
          }
        },
        "required": [
          "disabled",
          "displayName",
          "genericWebService",
          "name",
          "serviceDirectory",
          "timeout"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getAgent": {
      "description": "Retrieves the specified agent.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "advancedSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
            "description": "Hierarchical advanced settings for this agent. The settings exposed at the lower level overrides the settings exposed at the higher level."
          },
          "answerFeedbackSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentAnswerFeedbackSettingsResponse",
            "description": "Optional. Answer feedback collection settings."
          },
          "avatarUri": {
            "description": "The URI of the agent's avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration.",
            "type": "string"
          },
          "defaultLanguageCode": {
            "description": "Immutable. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the Agents.UpdateAgent method.",
            "type": "string"
          },
          "description": {
            "description": "The description of the agent. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the agent, unique within the location.",
            "type": "string"
          },
          "enableSpellCorrection": {
            "description": "Indicates if automatic spell correction is enabled in detect intent requests.",
            "type": "boolean"
          },
          "enableStackdriverLogging": {
            "description": "Indicates if stackdriver logging is enabled for the agent. Please use agent.advanced_settings instead.",
            "type": "boolean"
          },
          "genAppBuilderSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentGenAppBuilderSettingsResponse",
            "description": "Gen App Builder-related agent-level settings."
          },
          "gitIntegrationSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AgentGitIntegrationSettingsResponse",
            "description": "Git integration settings for this agent."
          },
          "locked": {
            "description": "Indicates whether the agent is locked for changes. If the agent is locked, modifications to the agent will be rejected except for RestoreAgent.",
            "type": "boolean"
          },
          "name": {
            "description": "The unique identifier of the agent. Required for the Agents.UpdateAgent method. Agents.CreateAgent populates the name automatically. Format: `projects//locations//agents/`.",
            "type": "string"
          },
          "securitySettings": {
            "description": "Name of the SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.",
            "type": "string"
          },
          "speechToTextSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SpeechToTextSettingsResponse",
            "description": "Speech recognition related settings."
          },
          "startFlow": {
            "description": "Immutable. Name of the start flow in this agent. A start flow will be automatically created when the agent is created, and can only be deleted by deleting the agent. Format: `projects//locations//agents//flows/`.",
            "type": "string"
          },
          "supportedLanguageCodes": {
            "description": "The list of all languages supported by the agent (except for the `default_language_code`).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "textToSpeechSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TextToSpeechSettingsResponse",
            "description": "Settings on instructing the speech synthesizer on how to generate the output audio content."
          },
          "timeZone": {
            "description": "The time zone of the agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.",
            "type": "string"
          }
        },
        "required": [
          "advancedSettings",
          "answerFeedbackSettings",
          "avatarUri",
          "defaultLanguageCode",
          "description",
          "displayName",
          "enableSpellCorrection",
          "enableStackdriverLogging",
          "genAppBuilderSettings",
          "gitIntegrationSettings",
          "locked",
          "name",
          "securitySettings",
          "speechToTextSettings",
          "startFlow",
          "supportedLanguageCodes",
          "textToSpeechSettings",
          "timeZone"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getEntityType": {
      "description": "Retrieves the specified entity type.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "entityTypeId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "entityTypeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "autoExpansionMode": {
            "description": "Indicates whether the entity type can be automatically expanded.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the entity type, unique within the agent.",
            "type": "string"
          },
          "enableFuzzyExtraction": {
            "description": "Enables fuzzy entity extraction during classification.",
            "type": "boolean"
          },
          "entities": {
            "description": "The collection of entity entries associated with the entity type.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeEntityResponse"
            },
            "type": "array"
          },
          "excludedPhrases": {
            "description": "Collection of exceptional words and phrases that shouldn't be matched. For example, if you have a size entity type with entry `giant`(an adjective), you might consider adding `giants`(a noun) as an exclusion. If the kind of entity type is `KIND_MAP`, then the phrases specified by entities and excluded phrases should be mutually exclusive.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeExcludedPhraseResponse"
            },
            "type": "array"
          },
          "kind": {
            "description": "Indicates the kind of entity type.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType. Format: `projects//locations//agents//entityTypes/`.",
            "type": "string"
          },
          "redact": {
            "description": "Indicates whether parameters of the entity type should be redacted in log. If redaction is enabled, page parameters and intent parameters referring to the entity type will be replaced by parameter name during logging.",
            "type": "boolean"
          }
        },
        "required": [
          "autoExpansionMode",
          "displayName",
          "enableFuzzyExtraction",
          "entities",
          "excludedPhrases",
          "kind",
          "name",
          "redact"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getEnvironment": {
      "description": "Retrieves the specified Environment.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "environmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "The human-readable description of the environment. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the environment (unique in an agent). Limit of 64 characters.",
            "type": "string"
          },
          "name": {
            "description": "The name of the environment. Format: `projects//locations//agents//environments/`.",
            "type": "string"
          },
          "testCasesConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfigResponse",
            "description": "The test cases config for continuous tests of this environment."
          },
          "updateTime": {
            "description": "Update time of this environment.",
            "type": "string"
          },
          "versionConfigs": {
            "description": "A list of configurations for flow versions. You should include version configs for all flows that are reachable from `Start Flow` in the agent. Otherwise, an error will be returned.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfigResponse"
            },
            "type": "array"
          },
          "webhookConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfigResponse",
            "description": "The webhook configuration for this environment."
          }
        },
        "required": [
          "description",
          "displayName",
          "name",
          "testCasesConfig",
          "updateTime",
          "versionConfigs",
          "webhookConfig"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getExperiment": {
      "description": "Retrieves the specified Experiment.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "experimentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "environmentId",
          "experimentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this experiment.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentDefinitionResponse",
            "description": "The definition of the experiment."
          },
          "description": {
            "description": "The human-readable description of the experiment.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the experiment (unique in an environment). Limit of 64 characters.",
            "type": "string"
          },
          "endTime": {
            "description": "End time of this experiment.",
            "type": "string"
          },
          "experimentLength": {
            "description": "Maximum number of days to run the experiment. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.",
            "type": "string"
          },
          "lastUpdateTime": {
            "description": "Last update time of this experiment.",
            "type": "string"
          },
          "name": {
            "description": "The name of the experiment. Format: projects//locations//agents//environments//experiments/..",
            "type": "string"
          },
          "result": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ExperimentResultResponse",
            "description": "Inference result of the experiment."
          },
          "rolloutConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1RolloutConfigResponse",
            "description": "The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow."
          },
          "rolloutFailureReason": {
            "description": "The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.",
            "type": "string"
          },
          "rolloutState": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1RolloutStateResponse",
            "description": "State of the auto rollout process."
          },
          "startTime": {
            "description": "Start time of this experiment.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the experiment. Transition triggered by Experiments.StartExperiment: DRAFT-\u003eRUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-\u003eDONE or RUNNING-\u003eDONE.",
            "type": "string"
          },
          "variantsHistory": {
            "description": "The history of updates to the experiment variants.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1VariantsHistoryResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "definition",
          "description",
          "displayName",
          "endTime",
          "experimentLength",
          "lastUpdateTime",
          "name",
          "result",
          "rolloutConfig",
          "rolloutFailureReason",
          "rolloutState",
          "startTime",
          "state",
          "variantsHistory"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getFlow": {
      "description": "Retrieves the specified flow.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "flowId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "advancedSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
            "description": "Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level."
          },
          "description": {
            "description": "The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the flow.",
            "type": "string"
          },
          "eventHandlers": {
            "description": "A flow's event handlers serve two purposes: * They are responsible for handling events (e.g. no match, webhook errors) in the flow. * They are inherited by every page's event handlers, which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow. Unlike transition_routes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandlerResponse"
            },
            "type": "array"
          },
          "knowledgeConnectorSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettingsResponse",
            "description": "Optional. Knowledge connector configuration."
          },
          "name": {
            "description": "The unique identifier of the flow. Format: `projects//locations//agents//flows/`.",
            "type": "string"
          },
          "nluSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsResponse",
            "description": "NLU related settings of the flow."
          },
          "transitionRouteGroups": {
            "description": "A flow's transition route group serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition route groups. Transition route groups defined in the page have higher priority than those defined in the flow. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transitionRoutes": {
            "description": "A flow's transition routes serve two purposes: * They are responsible for matching the user's first utterances in the flow. * They are inherited by every page's transition routes and can support use cases such as the user saying \"help\" or \"can I talk to a human?\", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow. TransitionRoutes are evalauted in the following order: * TransitionRoutes with intent specified. * TransitionRoutes with only condition specified. TransitionRoutes with intent specified are inherited by pages in the flow.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRouteResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "advancedSettings",
          "description",
          "displayName",
          "eventHandlers",
          "knowledgeConnectorSettings",
          "name",
          "nluSettings",
          "transitionRouteGroups",
          "transitionRoutes"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getIntent": {
      "description": "Retrieves the specified intent.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "intentId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "intentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the intent, unique within the agent.",
            "type": "string"
          },
          "isFallback": {
            "description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys-contextual\" means the intent is a contextual intent.",
            "type": "object"
          },
          "name": {
            "description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`.",
            "type": "string"
          },
          "parameters": {
            "description": "The collection of parameters associated with the intent.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentParameterResponse"
            },
            "type": "array"
          },
          "priority": {
            "description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.",
            "type": "integer"
          },
          "trainingPhrases": {
            "description": "The collection of training phrases the agent is trained on to identify the intent.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1IntentTrainingPhraseResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "description",
          "displayName",
          "isFallback",
          "labels",
          "name",
          "parameters",
          "priority",
          "trainingPhrases"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getPage": {
      "description": "Retrieves the specified page.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "pageId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "flowId",
          "location",
          "pageId"
        ]
      },
      "outputs": {
        "properties": {
          "advancedSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1AdvancedSettingsResponse",
            "description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
          },
          "displayName": {
            "description": "The human-readable name of the page, unique within the flow.",
            "type": "string"
          },
          "entryFulfillment": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FulfillmentResponse",
            "description": "The fulfillment to call when the session is entering the page."
          },
          "eventHandlers": {
            "description": "Handlers associated with the page to handle events such as webhook errors, no match or no input.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EventHandlerResponse"
            },
            "type": "array"
          },
          "form": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1FormResponse",
            "description": "The form associated with the page, used for collecting parameters relevant to the page."
          },
          "knowledgeConnectorSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettingsResponse",
            "description": "Optional. Knowledge connector configuration."
          },
          "name": {
            "description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`.",
            "type": "string"
          },
          "transitionRouteGroups": {
            "description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -\u003e page's transition route group -\u003e flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transitionRoutes": {
            "description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRouteResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "advancedSettings",
          "displayName",
          "entryFulfillment",
          "eventHandlers",
          "form",
          "knowledgeConnectorSettings",
          "name",
          "transitionRouteGroups",
          "transitionRoutes"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getSecuritySetting": {
      "description": "Retrieves the specified SecuritySettings. The returned settings may be stale by up to 1 minute.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "securitySettingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "securitySettingId"
        ]
      },
      "outputs": {
        "properties": {
          "audioExportSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsAudioExportSettingsResponse",
            "description": "Controls audio export settings for post-conversation analytics when ingesting audio to conversations via Participants.AnalyzeContent or Participants.StreamingAnalyzeContent. If retention_strategy is set to REMOVE_AFTER_CONVERSATION or audio_export_settings.gcs_bucket is empty, audio export is disabled. If audio export is enabled, audio is recorded and saved to audio_export_settings.gcs_bucket, subject to retention policy of audio_export_settings.gcs_bucket. This setting won't effect audio input for implicit sessions via Sessions.DetectIntent or Sessions.StreamingDetectIntent."
          },
          "deidentifyTemplate": {
            "description": "[DLP](https://cloud.google.com/dlp/docs) deidentify template name. Use this template to define de-identification configuration for the content. The `DLP De-identify Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, Dialogflow replaces sensitive info with `[redacted]` text. The template name will have one of the following formats: `projects//locations//deidentifyTemplates/` OR `organizations//locations//deidentifyTemplates/` Note: `deidentify_template` must be located in the same region as the `SecuritySettings`.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the security settings, unique within the location.",
            "type": "string"
          },
          "insightsExportSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1SecuritySettingsInsightsExportSettingsResponse",
            "description": "Controls conversation exporting settings to Insights after conversation is completed. If retention_strategy is set to REMOVE_AFTER_CONVERSATION, Insights export is disabled no matter what you configure here."
          },
          "inspectTemplate": {
            "description": "[DLP](https://cloud.google.com/dlp/docs) inspect template name. Use this template to define inspect base settings. The `DLP Inspect Templates Reader` role is needed on the Dialogflow service identity service account (has the form `service-PROJECT_NUMBER@gcp-sa-dialogflow.iam.gserviceaccount.com`) for your agent's project. If empty, we use the default DLP inspect config. The template name will have one of the following formats: `projects//locations//inspectTemplates/` OR `organizations//locations//inspectTemplates/` Note: `inspect_template` must be located in the same region as the `SecuritySettings`.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the settings. Required for the SecuritySettingsService.UpdateSecuritySettings method. SecuritySettingsService.CreateSecuritySettings populates the name automatically. Format: `projects//locations//securitySettings/`.",
            "type": "string"
          },
          "purgeDataTypes": {
            "description": "List of types of data to remove when retention settings triggers purge.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "redactionScope": {
            "description": "Defines the data for which Dialogflow applies redaction. Dialogflow does not redact data that it does not have access to – for example, Cloud logging.",
            "type": "string"
          },
          "redactionStrategy": {
            "description": "Strategy that defines how we do redaction.",
            "type": "string"
          },
          "retentionStrategy": {
            "description": "Specifies the retention behavior defined by SecuritySettings.RetentionStrategy.",
            "type": "string"
          },
          "retentionWindowDays": {
            "description": "Retains data in interaction logging for the specified number of days. This does not apply to Cloud logging, which is owned by the user - not Dialogflow. User must set a value lower than Dialogflow's default 365d TTL (30 days for Agent Assist traffic), higher value will be ignored and use default. Setting a value higher than that has no effect. A missing value or setting to 0 also means we use default TTL.",
            "type": "integer"
          }
        },
        "required": [
          "audioExportSettings",
          "deidentifyTemplate",
          "displayName",
          "insightsExportSettings",
          "inspectTemplate",
          "name",
          "purgeDataTypes",
          "redactionScope",
          "redactionStrategy",
          "retentionStrategy",
          "retentionWindowDays"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getSessionEntityType": {
      "description": "Retrieves the specified session entity type.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "entityTypeId": {
            "type": "string"
          },
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "entityTypeId",
          "environmentId",
          "location",
          "sessionId"
        ]
      },
      "outputs": {
        "properties": {
          "entities": {
            "description": "The collection of entities to override or supplement the custom entity type.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1EntityTypeEntityResponse"
            },
            "type": "array"
          },
          "entityOverrideMode": {
            "description": "Indicates whether the additional data should override or supplement the custom entity type definition.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of the session entity type. Format: `projects//locations//agents//sessions//entityTypes/` or `projects//locations//agents//environments//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment.",
            "type": "string"
          }
        },
        "required": [
          "entities",
          "entityOverrideMode",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getTestCase": {
      "description": "Gets a test case.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "testCaseId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "location",
          "testCaseId"
        ]
      },
      "outputs": {
        "properties": {
          "creationTime": {
            "description": "When the test was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the test case, unique within the agent. Limit of 200 characters.",
            "type": "string"
          },
          "lastTestResult": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TestCaseResultResponse",
            "description": "The latest test result."
          },
          "name": {
            "description": "The unique identifier of the test case. TestCases.CreateTestCase will populate the name automatically. Otherwise use format: `projects//locations//agents/ /testCases/`.",
            "type": "string"
          },
          "notes": {
            "description": "Additional freeform notes about the test case. Limit of 400 characters.",
            "type": "string"
          },
          "tags": {
            "description": "Tags are short descriptions that users may apply to test cases for organizational and filtering purposes. Each tag should start with \"#\" and has a limit of 30 characters.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "testCaseConversationTurns": {
            "description": "The conversation turns uttered when the test case was created, in chronological order. These include the canonical set of agent utterances that should occur when the agent is working properly.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1ConversationTurnResponse"
            },
            "type": "array"
          },
          "testConfig": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TestConfigResponse",
            "description": "Config for the test case."
          }
        },
        "required": [
          "creationTime",
          "displayName",
          "lastTestResult",
          "name",
          "notes",
          "tags",
          "testCaseConversationTurns",
          "testConfig"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getTransitionRouteGroup": {
      "description": "Retrieves the specified TransitionRouteGroup.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "transitionRouteGroupId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "flowId",
          "location",
          "transitionRouteGroupId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The human-readable name of the transition route group, unique within the flow. The display name can be no longer than 30 characters.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier of the transition route group. TransitionRouteGroups.CreateTransitionRouteGroup populates the name automatically. Format: `projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups.",
            "type": "string"
          },
          "transitionRoutes": {
            "description": "Transition routes associated with the TransitionRouteGroup.",
            "items": {
              "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1TransitionRouteResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "displayName",
          "name",
          "transitionRoutes"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getVersion": {
      "description": "Retrieves the specified Version.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "flowId",
          "location",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Create time of the version.",
            "type": "string"
          },
          "description": {
            "description": "The description of the version. The maximum length is 500 characters. If exceeded, the request is rejected.",
            "type": "string"
          },
          "displayName": {
            "description": "The human-readable name of the version. Limit of 64 characters.",
            "type": "string"
          },
          "name": {
            "description": "Format: projects//locations//agents//flows//versions/. Version ID is a self-increasing number generated by Dialogflow upon version creation.",
            "type": "string"
          },
          "nluSettings": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1NluSettingsResponse",
            "description": "The NLU settings of the flow at version creation."
          },
          "state": {
            "description": "The state of this version. This field is read-only and cannot be set by create and update methods.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "name",
          "nluSettings",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:dialogflow/v3beta1:getWebhook": {
      "description": "Retrieves the specified webhook.",
      "inputs": {
        "properties": {
          "agentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "webhookId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentId",
          "location",
          "webhookId"
        ]
      },
      "outputs": {
        "properties": {
          "disabled": {
            "description": "Indicates whether the webhook is disabled.",
            "type": "boolean"
          },
          "displayName": {
            "description": "The human-readable name of the webhook, unique within the agent.",
            "type": "string"
          },
          "genericWebService": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceResponse",
            "description": "Configuration for a generic web service."
          },
          "name": {
            "description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`.",
            "type": "string"
          },
          "serviceDirectory": {
            "$ref": "#/types/google-native:dialogflow%2Fv3beta1:GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfigResponse",
            "description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
          },
          "timeout": {
            "description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds.",
            "type": "string"
          }
        },
        "required": [
          "disabled",
          "displayName",
          "genericWebService",
          "name",
          "serviceDirectory",
          "timeout"
        ],
        "type": "object"
      }
    },
    "google-native:discoveryengine/v1alpha:getConversation": {
      "description": "Gets a Conversation.",
      "inputs": {
        "properties": {
          "collectionId": {
            "type": "string"
          },
          "conversationId": {
            "type": "string"
          },
          "dataStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionId",
          "conversationId",
          "dataStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "endTime": {
            "description": "The time the conversation finished.",
            "type": "string"
          },
          "messages": {
            "description": "Conversation messages.",
            "items": {
              "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaConversationMessageResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Fully qualified name `project/*/locations/global/collections/{collection}/dataStore/*/conversations/*`",
            "type": "string"
          },
          "startTime": {
            "description": "The time the conversation started.",
            "type": "string"
          },
          "state": {
            "description": "The state of the Conversation.",
            "type": "string"
          },
          "userPseudoId": {
            "description": "A unique identifier for tracking users.",
            "type": "string"
          }
        },
        "required": [
          "endTime",
          "messages",
          "name",
          "startTime",
          "state",
          "userPseudoId"
        ],
        "type": "object"
      }
    },
    "google-native:discoveryengine/v1alpha:getDataStore": {
      "description": "Gets a DataStore.",
      "inputs": {
        "properties": {
          "collectionId": {
            "type": "string"
          },
          "dataStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionId",
          "dataStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "contentConfig": {
            "description": "Immutable. The content config of the data store. If this field is unset, the server behavior defaults to ContentConfig.NO_CONTENT.",
            "type": "string"
          },
          "createTime": {
            "description": "Timestamp the DataStore was created at.",
            "type": "string"
          },
          "defaultSchemaId": {
            "description": "The id of the default Schema asscociated to this data store.",
            "type": "string"
          },
          "displayName": {
            "description": "The data store display name. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
            "type": "string"
          },
          "industryVertical": {
            "description": "Immutable. The industry vertical that the data store registers.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The full resource name of the data store. Format: `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.",
            "type": "string"
          },
          "solutionTypes": {
            "description": "The solutions that the data store enrolls. Available solutions for each industry_vertical: * `MEDIA`: `SOLUTION_TYPE_RECOMMENDATION` and `SOLUTION_TYPE_SEARCH`. * `SITE_SEARCH`: `SOLUTION_TYPE_SEARCH` is automatically enrolled. Other solutions cannot be enrolled.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "contentConfig",
          "createTime",
          "defaultSchemaId",
          "displayName",
          "industryVertical",
          "name",
          "solutionTypes"
        ],
        "type": "object"
      }
    },
    "google-native:discoveryengine/v1alpha:getDocument": {
      "description": "Gets a Document.",
      "inputs": {
        "properties": {
          "branchId": {
            "type": "string"
          },
          "collectionId": {
            "type": "string"
          },
          "dataStoreId": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "branchId",
          "collectionId",
          "dataStoreId",
          "documentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "content": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaDocumentContentResponse",
            "description": "The unstructured data linked to this document. Content must be set if this document is under a `CONTENT_REQUIRED` data store."
          },
          "derivedStructData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "This field is OUTPUT_ONLY. It contains derived data that are not in the original input document.",
            "type": "object"
          },
          "jsonData": {
            "description": "The JSON string representation of the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The full resource name of the document. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.",
            "type": "string"
          },
          "parentDocumentId": {
            "description": "The identifier of the parent document. Currently supports at most two level document hierarchy. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters.",
            "type": "string"
          },
          "schemaId": {
            "description": "The identifier of the schema located in the same data store.",
            "type": "string"
          },
          "structData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The structured JSON data for the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown.",
            "type": "object"
          }
        },
        "required": [
          "content",
          "derivedStructData",
          "jsonData",
          "name",
          "parentDocumentId",
          "schemaId",
          "structData"
        ],
        "type": "object"
      }
    },
    "google-native:discoveryengine/v1alpha:getEngine": {
      "description": "Gets a Engine.",
      "inputs": {
        "properties": {
          "collectionId": {
            "type": "string"
          },
          "engineId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionId",
          "engineId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "chatEngineConfig": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineConfigResponse",
            "description": "Configurations for the Chat Engine. Only applicable if solution_type is SOLUTION_TYPE_CHAT."
          },
          "chatEngineMetadata": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineChatEngineMetadataResponse",
            "description": "Additional information of the Chat Engine. Only applicable if solution_type is SOLUTION_TYPE_CHAT."
          },
          "commonConfig": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineCommonConfigResponse",
            "description": "Common config spec that specifies the metadata of the engine."
          },
          "createTime": {
            "description": "Timestamp the Recommendation Engine was created at.",
            "type": "string"
          },
          "dataStoreIds": {
            "description": "The data stores associated with this engine. For SOLUTION_TYPE_SEARCH and SOLUTION_TYPE_RECOMMENDATION type of engines, they can only associate with at most one data store. If solution_type is SOLUTION_TYPE_CHAT, multiple DataStores in the same Collection can be associated here. Note that when used in CreateEngineRequest, one DataStore id must be provided as the system will use it for necessary intializations.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The display name of the engine. Should be human readable. UTF-8 encoded string with limit of 1024 characters.",
            "type": "string"
          },
          "industryVertical": {
            "description": "The industry vertical that the engine registers. The restriction of the Engine industry vertical is based on DataStore: If unspecified, default to `GENERIC`. Vertical on Engine has to match vertical of the DataStore liniked to the engine.",
            "type": "string"
          },
          "mediaRecommendationEngineConfig": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineMediaRecommendationEngineConfigResponse",
            "description": "Configurations for the Media Engine. Only applicable on the data stores with solution_type SOLUTION_TYPE_RECOMMENDATION and IndustryVertical.MEDIA vertical."
          },
          "name": {
            "description": "Immutable. The fully qualified resource name of the engine. This field must be a UTF-8 encoded string with a length limit of 1024 characters. Format: `projects/{project_number}/locations/{location}/collections/{collection}/engines/{engine}` engine should be 1-63 characters, and valid characters are /a-z0-9*/. Otherwise, an INVALID_ARGUMENT error is returned.",
            "type": "string"
          },
          "recommendationMetadata": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineRecommendationMetadataResponse",
            "description": "Additional information of a recommendation engine. Only applicable if solution_type is SOLUTION_TYPE_RECOMMENDATION."
          },
          "searchEngineConfig": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineSearchEngineConfigResponse",
            "description": "Configurations for the Search Engine. Only applicable if solution_type is SOLUTION_TYPE_SEARCH."
          },
          "similarDocumentsConfig": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaEngineSimilarDocumentsEngineConfigResponse",
            "description": "Additional config specs for a `similar-items` engine."
          },
          "solutionType": {
            "description": "The solutions of the engine.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp the Recommendation Engine was last updated.",
            "type": "string"
          }
        },
        "required": [
          "chatEngineConfig",
          "chatEngineMetadata",
          "commonConfig",
          "createTime",
          "dataStoreIds",
          "displayName",
          "industryVertical",
          "mediaRecommendationEngineConfig",
          "name",
          "recommendationMetadata",
          "searchEngineConfig",
          "similarDocumentsConfig",
          "solutionType",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:discoveryengine/v1alpha:getSchema": {
      "description": "Gets a Schema.",
      "inputs": {
        "properties": {
          "collectionId": {
            "type": "string"
          },
          "dataStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "schemaId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionId",
          "dataStoreId",
          "location",
          "schemaId"
        ]
      },
      "outputs": {
        "properties": {
          "fieldConfigs": {
            "description": "Configurations for fields of the schema.",
            "items": {
              "$ref": "#/types/google-native:discoveryengine%2Fv1alpha:GoogleCloudDiscoveryengineV1alphaFieldConfigResponse"
            },
            "type": "array"
          },
          "jsonSchema": {
            "description": "The JSON representation of the schema.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The full resource name of the schema, in the format of `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.",
            "type": "string"
          },
          "structSchema": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The structured representation of the schema.",
            "type": "object"
          }
        },
        "required": [
          "fieldConfigs",
          "jsonSchema",
          "name",
          "structSchema"
        ],
        "type": "object"
      }
    },
    "google-native:discoveryengine/v1beta:getConversation": {
      "description": "Gets a Conversation.",
      "inputs": {
        "properties": {
          "collectionId": {
            "type": "string"
          },
          "conversationId": {
            "type": "string"
          },
          "dataStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionId",
          "conversationId",
          "dataStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "endTime": {
            "description": "The time the conversation finished.",
            "type": "string"
          },
          "messages": {
            "description": "Conversation messages.",
            "items": {
              "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaConversationMessageResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Fully qualified name `project/*/locations/global/collections/{collection}/dataStore/*/conversations/*`",
            "type": "string"
          },
          "startTime": {
            "description": "The time the conversation started.",
            "type": "string"
          },
          "state": {
            "description": "The state of the Conversation.",
            "type": "string"
          },
          "userPseudoId": {
            "description": "A unique identifier for tracking users.",
            "type": "string"
          }
        },
        "required": [
          "endTime",
          "messages",
          "name",
          "startTime",
          "state",
          "userPseudoId"
        ],
        "type": "object"
      }
    },
    "google-native:discoveryengine/v1beta:getDocument": {
      "description": "Gets a Document.",
      "inputs": {
        "properties": {
          "branchId": {
            "type": "string"
          },
          "collectionId": {
            "type": "string"
          },
          "dataStoreId": {
            "type": "string"
          },
          "documentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "branchId",
          "collectionId",
          "dataStoreId",
          "documentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "content": {
            "$ref": "#/types/google-native:discoveryengine%2Fv1beta:GoogleCloudDiscoveryengineV1betaDocumentContentResponse",
            "description": "The unstructured data linked to this document. Content must be set if this document is under a `CONTENT_REQUIRED` data store."
          },
          "derivedStructData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "This field is OUTPUT_ONLY. It contains derived data that are not in the original input document.",
            "type": "object"
          },
          "jsonData": {
            "description": "The JSON string representation of the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The full resource name of the document. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.",
            "type": "string"
          },
          "parentDocumentId": {
            "description": "The identifier of the parent document. Currently supports at most two level document hierarchy. Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters.",
            "type": "string"
          },
          "schemaId": {
            "description": "The identifier of the schema located in the same data store.",
            "type": "string"
          },
          "structData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The structured JSON data for the document. It should conform to the registered Schema or an `INVALID_ARGUMENT` error is thrown.",
            "type": "object"
          }
        },
        "required": [
          "content",
          "derivedStructData",
          "jsonData",
          "name",
          "parentDocumentId",
          "schemaId",
          "structData"
        ],
        "type": "object"
      }
    },
    "google-native:discoveryengine/v1beta:getSchema": {
      "description": "Gets a Schema.",
      "inputs": {
        "properties": {
          "collectionId": {
            "type": "string"
          },
          "dataStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "schemaId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionId",
          "dataStoreId",
          "location",
          "schemaId"
        ]
      },
      "outputs": {
        "properties": {
          "jsonSchema": {
            "description": "The JSON representation of the schema.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The full resource name of the schema, in the format of `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters.",
            "type": "string"
          },
          "structSchema": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The structured representation of the schema.",
            "type": "object"
          }
        },
        "required": [
          "jsonSchema",
          "name",
          "structSchema"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getDeidentifyTemplate": {
      "description": "Gets a DeidentifyTemplate. See https://cloud.google.com/dlp/docs/creating-templates-deid to learn more.",
      "inputs": {
        "properties": {
          "deidentifyTemplateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deidentifyTemplateId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of an inspectTemplate.",
            "type": "string"
          },
          "deidentifyConfig": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyConfigResponse",
            "description": "The core content of the template."
          },
          "description": {
            "description": "Short description (max 256 chars).",
            "type": "string"
          },
          "displayName": {
            "description": "Display name (max 256 chars).",
            "type": "string"
          },
          "name": {
            "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of an inspectTemplate.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deidentifyConfig",
          "description",
          "displayName",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getDiscoveryConfig": {
      "description": "Gets a discovery configuration.",
      "inputs": {
        "properties": {
          "discoveryConfigId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "discoveryConfigId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "actions": {
            "description": "Actions to execute at the completion of scanning.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DataProfileActionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The creation timestamp of a DiscoveryConfig.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name (max 100 chars)",
            "type": "string"
          },
          "errors": {
            "description": "A stream of errors encountered when the config was activated. Repeated errors may result in the config automatically being paused. Output only field. Will return the last 100 errors. Whenever the config is modified this list will be cleared.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
            },
            "type": "array"
          },
          "inspectTemplates": {
            "description": "Detection logic for profile generation. Not all template features are used by Discovery. FindingLimits, include_quote and exclude_info_types have no impact on Discovery. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including \"global\"). Each region is scanned using the applicable template. If no region-specific template is specified, but a \"global\" template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region's data will not be scanned. For more information, see https://cloud.google.com/dlp/docs/data-profiles#data-residency.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "lastRunTime": {
            "description": "The timestamp of the last time this config was executed.",
            "type": "string"
          },
          "name": {
            "description": "Unique resource name for the DiscoveryConfig, assigned by the service when the DiscoveryConfig is created, for example `projects/dlp-test-project/locations/global/discoveryConfigs/53234423`.",
            "type": "string"
          },
          "orgConfig": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OrgConfigResponse",
            "description": "Only set when the parent is an org."
          },
          "status": {
            "description": "A status for this configuration.",
            "type": "string"
          },
          "targets": {
            "description": "Target to match against for determining what to scan and how frequently.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTargetResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update timestamp of a DiscoveryConfig.",
            "type": "string"
          }
        },
        "required": [
          "actions",
          "createTime",
          "displayName",
          "errors",
          "inspectTemplates",
          "lastRunTime",
          "name",
          "orgConfig",
          "status",
          "targets",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getDlpJob": {
      "description": "Gets the latest state of a long-running DlpJob. See https://cloud.google.com/dlp/docs/inspecting-storage and https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
      "inputs": {
        "properties": {
          "dlpJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dlpJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "actionDetails": {
            "description": "Events that should occur after the job has completed.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ActionDetailsResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Time when the job was created.",
            "type": "string"
          },
          "endTime": {
            "description": "Time when the job finished.",
            "type": "string"
          },
          "errors": {
            "description": "A stream of errors encountered running the job.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
            },
            "type": "array"
          },
          "inspectDetails": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectDataSourceDetailsResponse",
            "description": "Results from inspecting a data source."
          },
          "jobTriggerName": {
            "description": "If created by a job trigger, the resource name of the trigger that instantiated the job.",
            "type": "string"
          },
          "lastModified": {
            "description": "Time when the job was last modified by the system.",
            "type": "string"
          },
          "name": {
            "description": "The server-assigned name.",
            "type": "string"
          },
          "riskDetails": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2AnalyzeDataSourceRiskDetailsResponse",
            "description": "Results from analyzing risk of a data source."
          },
          "startTime": {
            "description": "Time when the job started.",
            "type": "string"
          },
          "state": {
            "description": "State of a job.",
            "type": "string"
          },
          "type": {
            "description": "The type of job.",
            "type": "string"
          }
        },
        "required": [
          "actionDetails",
          "createTime",
          "endTime",
          "errors",
          "inspectDetails",
          "jobTriggerName",
          "lastModified",
          "name",
          "riskDetails",
          "startTime",
          "state",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getInspectTemplate": {
      "description": "Gets an InspectTemplate. See https://cloud.google.com/dlp/docs/creating-templates to learn more.",
      "inputs": {
        "properties": {
          "inspectTemplateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "inspectTemplateId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of an inspectTemplate.",
            "type": "string"
          },
          "description": {
            "description": "Short description (max 256 chars).",
            "type": "string"
          },
          "displayName": {
            "description": "Display name (max 256 chars).",
            "type": "string"
          },
          "inspectConfig": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfigResponse",
            "description": "The core content of the template. Configuration of the scanning process."
          },
          "name": {
            "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`;",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of an inspectTemplate.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "inspectConfig",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getJobTrigger": {
      "description": "Gets a job trigger. See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
      "inputs": {
        "properties": {
          "jobTriggerId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobTriggerId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of a triggeredJob.",
            "type": "string"
          },
          "description": {
            "description": "User provided description (max 256 chars)",
            "type": "string"
          },
          "displayName": {
            "description": "Display name (max 100 chars)",
            "type": "string"
          },
          "errors": {
            "description": "A stream of errors encountered when the trigger was activated. Repeated errors may result in the JobTrigger automatically being paused. Will return the last 100 errors. Whenever the JobTrigger is modified this list will be cleared.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
            },
            "type": "array"
          },
          "inspectJob": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectJobConfigResponse",
            "description": "For inspect jobs, a snapshot of the configuration."
          },
          "lastRunTime": {
            "description": "The timestamp of the last time this trigger executed.",
            "type": "string"
          },
          "name": {
            "description": "Unique resource name for the triggeredJob, assigned by the service when the triggeredJob is created, for example `projects/dlp-test-project/jobTriggers/53234423`.",
            "type": "string"
          },
          "status": {
            "description": "A status for this trigger.",
            "type": "string"
          },
          "triggers": {
            "description": "A list of triggers which will be OR'ed together. Only one in the list needs to trigger for a job to be started. The list may contain only a single Schedule trigger and must have at least one object.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TriggerResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update timestamp of a triggeredJob.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "errors",
          "inspectJob",
          "lastRunTime",
          "name",
          "status",
          "triggers",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getOrganizationDiscoveryConfig": {
      "description": "Gets a discovery configuration.",
      "inputs": {
        "properties": {
          "discoveryConfigId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "discoveryConfigId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "actions": {
            "description": "Actions to execute at the completion of scanning.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DataProfileActionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The creation timestamp of a DiscoveryConfig.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name (max 100 chars)",
            "type": "string"
          },
          "errors": {
            "description": "A stream of errors encountered when the config was activated. Repeated errors may result in the config automatically being paused. Output only field. Will return the last 100 errors. Whenever the config is modified this list will be cleared.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
            },
            "type": "array"
          },
          "inspectTemplates": {
            "description": "Detection logic for profile generation. Not all template features are used by Discovery. FindingLimits, include_quote and exclude_info_types have no impact on Discovery. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including \"global\"). Each region is scanned using the applicable template. If no region-specific template is specified, but a \"global\" template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region's data will not be scanned. For more information, see https://cloud.google.com/dlp/docs/data-profiles#data-residency.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "lastRunTime": {
            "description": "The timestamp of the last time this config was executed.",
            "type": "string"
          },
          "name": {
            "description": "Unique resource name for the DiscoveryConfig, assigned by the service when the DiscoveryConfig is created, for example `projects/dlp-test-project/locations/global/discoveryConfigs/53234423`.",
            "type": "string"
          },
          "orgConfig": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2OrgConfigResponse",
            "description": "Only set when the parent is an org."
          },
          "status": {
            "description": "A status for this configuration.",
            "type": "string"
          },
          "targets": {
            "description": "Target to match against for determining what to scan and how frequently.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DiscoveryTargetResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update timestamp of a DiscoveryConfig.",
            "type": "string"
          }
        },
        "required": [
          "actions",
          "createTime",
          "displayName",
          "errors",
          "inspectTemplates",
          "lastRunTime",
          "name",
          "orgConfig",
          "status",
          "targets",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getOrganizationInspectTemplate": {
      "description": "Gets an InspectTemplate. See https://cloud.google.com/dlp/docs/creating-templates to learn more.",
      "inputs": {
        "properties": {
          "inspectTemplateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "inspectTemplateId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of an inspectTemplate.",
            "type": "string"
          },
          "description": {
            "description": "Short description (max 256 chars).",
            "type": "string"
          },
          "displayName": {
            "description": "Display name (max 256 chars).",
            "type": "string"
          },
          "inspectConfig": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectConfigResponse",
            "description": "The core content of the template. Configuration of the scanning process."
          },
          "name": {
            "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`;",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of an inspectTemplate.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "inspectConfig",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getOrganizationJobTrigger": {
      "description": "Gets a job trigger. See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
      "inputs": {
        "properties": {
          "jobTriggerId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobTriggerId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of a triggeredJob.",
            "type": "string"
          },
          "description": {
            "description": "User provided description (max 256 chars)",
            "type": "string"
          },
          "displayName": {
            "description": "Display name (max 100 chars)",
            "type": "string"
          },
          "errors": {
            "description": "A stream of errors encountered when the trigger was activated. Repeated errors may result in the JobTrigger automatically being paused. Will return the last 100 errors. Whenever the JobTrigger is modified this list will be cleared.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2ErrorResponse"
            },
            "type": "array"
          },
          "inspectJob": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2InspectJobConfigResponse",
            "description": "For inspect jobs, a snapshot of the configuration."
          },
          "lastRunTime": {
            "description": "The timestamp of the last time this trigger executed.",
            "type": "string"
          },
          "name": {
            "description": "Unique resource name for the triggeredJob, assigned by the service when the triggeredJob is created, for example `projects/dlp-test-project/jobTriggers/53234423`.",
            "type": "string"
          },
          "status": {
            "description": "A status for this trigger.",
            "type": "string"
          },
          "triggers": {
            "description": "A list of triggers which will be OR'ed together. Only one in the list needs to trigger for a job to be started. The list may contain only a single Schedule trigger and must have at least one object.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2TriggerResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update timestamp of a triggeredJob.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "errors",
          "inspectJob",
          "lastRunTime",
          "name",
          "status",
          "triggers",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getOrganizationsDeidentifyTemplate": {
      "description": "Gets a DeidentifyTemplate. See https://cloud.google.com/dlp/docs/creating-templates-deid to learn more.",
      "inputs": {
        "properties": {
          "deidentifyTemplateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deidentifyTemplateId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of an inspectTemplate.",
            "type": "string"
          },
          "deidentifyConfig": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2DeidentifyConfigResponse",
            "description": "The core content of the template."
          },
          "description": {
            "description": "Short description (max 256 chars).",
            "type": "string"
          },
          "displayName": {
            "description": "Display name (max 256 chars).",
            "type": "string"
          },
          "name": {
            "description": "The template name. The template will have one of the following formats: `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of an inspectTemplate.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deidentifyConfig",
          "description",
          "displayName",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:dlp/v2:getStoredInfoType": {
      "description": "Gets a stored infoType. See https://cloud.google.com/dlp/docs/creating-stored-infotypes to learn more.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "storedInfoTypeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "storedInfoTypeId"
        ]
      },
      "outputs": {
        "properties": {
          "currentVersion": {
            "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredInfoTypeVersionResponse",
            "description": "Current version of the stored info type."
          },
          "name": {
            "description": "Resource name.",
            "type": "string"
          },
          "pendingVersions": {
            "description": "Pending versions of the stored info type. Empty if no versions are pending.",
            "items": {
              "$ref": "#/types/google-native:dlp%2Fv2:GooglePrivacyDlpV2StoredInfoTypeVersionResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "currentVersion",
          "name",
          "pendingVersions"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1:getChange": {
      "description": "Fetches the representation of an existing Change.",
      "inputs": {
        "properties": {
          "changeId": {
            "type": "string"
          },
          "clientOperationId": {
            "type": "string"
          },
          "managedZone": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "changeId",
          "managedZone"
        ]
      },
      "outputs": {
        "properties": {
          "additions": {
            "description": "Which ResourceRecordSets to add?",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1:ResourceRecordSetResponse"
            },
            "type": "array"
          },
          "deletions": {
            "description": "Which ResourceRecordSets to remove? Must match existing data exactly.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1:ResourceRecordSetResponse"
            },
            "type": "array"
          },
          "isServing": {
            "description": "If the DNS queries for the zone will be served.",
            "type": "boolean"
          },
          "kind": {
            "type": "string"
          },
          "startTime": {
            "description": "The time that this operation was started by the server (output only). This is in RFC3339 text format.",
            "type": "string"
          },
          "status": {
            "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
            "type": "string"
          }
        },
        "required": [
          "additions",
          "deletions",
          "isServing",
          "kind",
          "startTime",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1:getManagedZone": {
      "description": "Fetches the representation of an existing ManagedZone.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "managedZone": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "managedZone"
        ]
      },
      "outputs": {
        "properties": {
          "cloudLoggingConfig": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneCloudLoggingConfigResponse"
          },
          "creationTime": {
            "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only.",
            "type": "string"
          },
          "description": {
            "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function.",
            "type": "string"
          },
          "dnsName": {
            "description": "The DNS name of this managed zone, for instance \"example.com.\".",
            "type": "string"
          },
          "dnssecConfig": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneDnsSecConfigResponse",
            "description": "DNSSEC configuration."
          },
          "forwardingConfig": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneForwardingConfigResponse",
            "description": "The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to."
          },
          "kind": {
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User labels.",
            "type": "object"
          },
          "name": {
            "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.",
            "type": "string"
          },
          "nameServerSet": {
            "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users leave this field unset. If you need to use this field, contact your account team.",
            "type": "string"
          },
          "nameServers": {
            "description": "Delegate your managed_zone to these virtual name servers; defined by the server (output only)",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "peeringConfig": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePeeringConfigResponse",
            "description": "The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with."
          },
          "privateVisibilityConfig": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZonePrivateVisibilityConfigResponse",
            "description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
          },
          "reverseLookupConfig": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneReverseLookupConfigResponse",
            "description": "The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS resolves reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config."
          },
          "serviceDirectoryConfig": {
            "$ref": "#/types/google-native:dns%2Fv1:ManagedZoneServiceDirectoryConfigResponse",
            "description": "This field links to the associated service directory namespace. Do not set this field for public zones or forwarding zones."
          },
          "visibility": {
            "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.",
            "type": "string"
          }
        },
        "required": [
          "cloudLoggingConfig",
          "creationTime",
          "description",
          "dnsName",
          "dnssecConfig",
          "forwardingConfig",
          "kind",
          "labels",
          "name",
          "nameServerSet",
          "nameServers",
          "peeringConfig",
          "privateVisibilityConfig",
          "reverseLookupConfig",
          "serviceDirectoryConfig",
          "visibility"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1:getManagedZoneIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "managedZone": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "managedZone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1:getPolicy": {
      "description": "Fetches the representation of an existing Policy.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "policy": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "policy"
        ]
      },
      "outputs": {
        "properties": {
          "alternativeNameServerConfig": {
            "$ref": "#/types/google-native:dns%2Fv1:PolicyAlternativeNameServerConfigResponse",
            "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
          },
          "description": {
            "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the policy's function.",
            "type": "string"
          },
          "enableInboundForwarding": {
            "description": "Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.",
            "type": "boolean"
          },
          "enableLogging": {
            "description": "Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.",
            "type": "boolean"
          },
          "kind": {
            "type": "string"
          },
          "name": {
            "description": "User-assigned name for this policy.",
            "type": "string"
          },
          "networks": {
            "description": "List of network names specifying networks to which this policy is applied.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1:PolicyNetworkResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "alternativeNameServerConfig",
          "description",
          "enableInboundForwarding",
          "enableLogging",
          "kind",
          "name",
          "networks"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1:getResourceRecordSet": {
      "description": "Fetches the representation of an existing ResourceRecordSet.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "managedZone": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "managedZone",
          "name",
          "type"
        ]
      },
      "outputs": {
        "properties": {
          "kind": {
            "type": "string"
          },
          "name": {
            "description": "For example, www.example.com.",
            "type": "string"
          },
          "routingPolicy": {
            "$ref": "#/types/google-native:dns%2Fv1:RRSetRoutingPolicyResponse",
            "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
          },
          "rrdatas": {
            "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "signatureRrdatas": {
            "description": "As defined in RFC 4034 (section 3.2).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ttl": {
            "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers.",
            "type": "integer"
          },
          "type": {
            "description": "The identifier of a supported record type. See the list of Supported DNS record types.",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "name",
          "routingPolicy",
          "rrdatas",
          "signatureRrdatas",
          "ttl",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1:getResponsePolicy": {
      "description": "Fetches the representation of an existing Response Policy.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "responsePolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "responsePolicy"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "User-provided description for this Response Policy.",
            "type": "string"
          },
          "gkeClusters": {
            "description": "The list of Google Kubernetes Engine clusters to which this response policy is applied.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1:ResponsePolicyGKEClusterResponse"
            },
            "type": "array"
          },
          "kind": {
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User labels.",
            "type": "object"
          },
          "networks": {
            "description": "List of network names specifying networks to which this policy is applied.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1:ResponsePolicyNetworkResponse"
            },
            "type": "array"
          },
          "responsePolicyName": {
            "description": "User assigned name for this Response Policy.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "gkeClusters",
          "kind",
          "labels",
          "networks",
          "responsePolicyName"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1:getResponsePolicyRule": {
      "description": "Fetches the representation of an existing Response Policy Rule.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "responsePolicy": {
            "type": "string"
          },
          "responsePolicyRule": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "responsePolicy",
          "responsePolicyRule"
        ]
      },
      "outputs": {
        "properties": {
          "behavior": {
            "description": "Answer this query with a behavior rather than DNS data.",
            "type": "string"
          },
          "dnsName": {
            "description": "The DNS name (wildcard or exact) to apply this rule to. Must be unique within the Response Policy Rule.",
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "localData": {
            "$ref": "#/types/google-native:dns%2Fv1:ResponsePolicyRuleLocalDataResponse",
            "description": "Answer this query directly with DNS data. These ResourceRecordSets override any other DNS behavior for the matched name; in particular they override private zones, the public internet, and GCP internal DNS. No SOA nor NS types are allowed."
          },
          "ruleName": {
            "description": "An identifier for this rule. Must be unique with the ResponsePolicy.",
            "type": "string"
          }
        },
        "required": [
          "behavior",
          "dnsName",
          "kind",
          "localData",
          "ruleName"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1beta2:getChange": {
      "description": "Fetches the representation of an existing Change.",
      "inputs": {
        "properties": {
          "changeId": {
            "type": "string"
          },
          "clientOperationId": {
            "type": "string"
          },
          "managedZone": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "changeId",
          "managedZone"
        ]
      },
      "outputs": {
        "properties": {
          "additions": {
            "description": "Which ResourceRecordSets to add?",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1beta2:ResourceRecordSetResponse"
            },
            "type": "array"
          },
          "deletions": {
            "description": "Which ResourceRecordSets to remove? Must match existing data exactly.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1beta2:ResourceRecordSetResponse"
            },
            "type": "array"
          },
          "isServing": {
            "description": "If the DNS queries for the zone will be served.",
            "type": "boolean"
          },
          "kind": {
            "type": "string"
          },
          "startTime": {
            "description": "The time that this operation was started by the server (output only). This is in RFC3339 text format.",
            "type": "string"
          },
          "status": {
            "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
            "type": "string"
          }
        },
        "required": [
          "additions",
          "deletions",
          "isServing",
          "kind",
          "startTime",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1beta2:getManagedZone": {
      "description": "Fetches the representation of an existing ManagedZone.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "managedZone": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "managedZone"
        ]
      },
      "outputs": {
        "properties": {
          "cloudLoggingConfig": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneCloudLoggingConfigResponse"
          },
          "creationTime": {
            "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only.",
            "type": "string"
          },
          "description": {
            "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function.",
            "type": "string"
          },
          "dnsName": {
            "description": "The DNS name of this managed zone, for instance \"example.com.\".",
            "type": "string"
          },
          "dnssecConfig": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneDnsSecConfigResponse",
            "description": "DNSSEC configuration."
          },
          "forwardingConfig": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneForwardingConfigResponse",
            "description": "The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to."
          },
          "kind": {
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User labels.",
            "type": "object"
          },
          "name": {
            "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.",
            "type": "string"
          },
          "nameServerSet": {
            "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users leave this field unset. If you need to use this field, contact your account team.",
            "type": "string"
          },
          "nameServers": {
            "description": "Delegate your managed_zone to these virtual name servers; defined by the server (output only)",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "peeringConfig": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePeeringConfigResponse",
            "description": "The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with."
          },
          "privateVisibilityConfig": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZonePrivateVisibilityConfigResponse",
            "description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
          },
          "reverseLookupConfig": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneReverseLookupConfigResponse",
            "description": "The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS resolves reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config."
          },
          "serviceDirectoryConfig": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ManagedZoneServiceDirectoryConfigResponse",
            "description": "This field links to the associated service directory namespace. Do not set this field for public zones or forwarding zones."
          },
          "visibility": {
            "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.",
            "type": "string"
          }
        },
        "required": [
          "cloudLoggingConfig",
          "creationTime",
          "description",
          "dnsName",
          "dnssecConfig",
          "forwardingConfig",
          "kind",
          "labels",
          "name",
          "nameServerSet",
          "nameServers",
          "peeringConfig",
          "privateVisibilityConfig",
          "reverseLookupConfig",
          "serviceDirectoryConfig",
          "visibility"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1beta2:getManagedZoneIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "managedZone": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "managedZone"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1beta2:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1beta2:getPolicy": {
      "description": "Fetches the representation of an existing Policy.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "policy": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "policy"
        ]
      },
      "outputs": {
        "properties": {
          "alternativeNameServerConfig": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyAlternativeNameServerConfigResponse",
            "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
          },
          "description": {
            "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the policy's function.",
            "type": "string"
          },
          "enableInboundForwarding": {
            "description": "Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.",
            "type": "boolean"
          },
          "enableLogging": {
            "description": "Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.",
            "type": "boolean"
          },
          "kind": {
            "type": "string"
          },
          "name": {
            "description": "User-assigned name for this policy.",
            "type": "string"
          },
          "networks": {
            "description": "List of network names specifying networks to which this policy is applied.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1beta2:PolicyNetworkResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "alternativeNameServerConfig",
          "description",
          "enableInboundForwarding",
          "enableLogging",
          "kind",
          "name",
          "networks"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1beta2:getResourceRecordSet": {
      "description": "Fetches the representation of an existing ResourceRecordSet.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "managedZone": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "managedZone",
          "name",
          "type"
        ]
      },
      "outputs": {
        "properties": {
          "kind": {
            "type": "string"
          },
          "name": {
            "description": "For example, www.example.com.",
            "type": "string"
          },
          "routingPolicy": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:RRSetRoutingPolicyResponse",
            "description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid ResourceRecordSet contains only rrdata (for static resolution) or a routing_policy (for dynamic resolution)."
          },
          "rrdatas": {
            "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "signatureRrdatas": {
            "description": "As defined in RFC 4034 (section 3.2).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ttl": {
            "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers.",
            "type": "integer"
          },
          "type": {
            "description": "The identifier of a supported record type. See the list of Supported DNS record types.",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "name",
          "routingPolicy",
          "rrdatas",
          "signatureRrdatas",
          "ttl",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1beta2:getResponsePolicy": {
      "description": "Fetches the representation of an existing Response Policy.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "responsePolicy": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "responsePolicy"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "User-provided description for this Response Policy.",
            "type": "string"
          },
          "gkeClusters": {
            "description": "The list of Google Kubernetes Engine clusters to which this response policy is applied.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyGKEClusterResponse"
            },
            "type": "array"
          },
          "kind": {
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User labels.",
            "type": "object"
          },
          "networks": {
            "description": "List of network names specifying networks to which this policy is applied.",
            "items": {
              "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyNetworkResponse"
            },
            "type": "array"
          },
          "responsePolicyName": {
            "description": "User assigned name for this Response Policy.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "gkeClusters",
          "kind",
          "labels",
          "networks",
          "responsePolicyName"
        ],
        "type": "object"
      }
    },
    "google-native:dns/v1beta2:getResponsePolicyRule": {
      "description": "Fetches the representation of an existing Response Policy Rule.",
      "inputs": {
        "properties": {
          "clientOperationId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "responsePolicy": {
            "type": "string"
          },
          "responsePolicyRule": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "responsePolicy",
          "responsePolicyRule"
        ]
      },
      "outputs": {
        "properties": {
          "behavior": {
            "description": "Answer this query with a behavior rather than DNS data.",
            "type": "string"
          },
          "dnsName": {
            "description": "The DNS name (wildcard or exact) to apply this rule to. Must be unique within the Response Policy Rule.",
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "localData": {
            "$ref": "#/types/google-native:dns%2Fv1beta2:ResponsePolicyRuleLocalDataResponse",
            "description": "Answer this query directly with DNS data. These ResourceRecordSets override any other DNS behavior for the matched name; in particular they override private zones, the public internet, and GCP internal DNS. No SOA nor NS types are allowed."
          },
          "ruleName": {
            "description": "An identifier for this rule. Must be unique with the ResponsePolicy.",
            "type": "string"
          }
        },
        "required": [
          "behavior",
          "dnsName",
          "kind",
          "localData",
          "ruleName"
        ],
        "type": "object"
      }
    },
    "google-native:documentai/v1:getProcessor": {
      "description": "Gets a processor detail.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "processorId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "processorId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the processor was created.",
            "type": "string"
          },
          "defaultProcessorVersion": {
            "description": "The default processor version.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the processor.",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "The [KMS key](https://cloud.google.com/security-key-management) used for encryption and decryption in CMEK scenarios.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the processor. Format: `projects/{project}/locations/{location}/processors/{processor}`",
            "type": "string"
          },
          "processEndpoint": {
            "description": "Immutable. The http endpoint that can be called to invoke processing.",
            "type": "string"
          },
          "processorVersionAliases": {
            "description": "The processor version aliases.",
            "items": {
              "$ref": "#/types/google-native:documentai%2Fv1:GoogleCloudDocumentaiV1ProcessorVersionAliasResponse"
            },
            "type": "array"
          },
          "state": {
            "description": "The state of the processor.",
            "type": "string"
          },
          "type": {
            "description": "The processor type, such as: `OCR_PROCESSOR`, `INVOICE_PROCESSOR`. To get a list of processor types, see FetchProcessorTypes.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "defaultProcessorVersion",
          "displayName",
          "kmsKeyName",
          "name",
          "processEndpoint",
          "processorVersionAliases",
          "state",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:documentai/v1beta3:getProcessor": {
      "description": "Gets a processor detail.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "processorId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "processorId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the processor was created.",
            "type": "string"
          },
          "defaultProcessorVersion": {
            "description": "The default processor version.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the processor.",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "The [KMS key](https://cloud.google.com/security-key-management) used for encryption and decryption in CMEK scenarios.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the processor. Format: `projects/{project}/locations/{location}/processors/{processor}`",
            "type": "string"
          },
          "processEndpoint": {
            "description": "Immutable. The http endpoint that can be called to invoke processing.",
            "type": "string"
          },
          "processorVersionAliases": {
            "description": "The processor version aliases.",
            "items": {
              "$ref": "#/types/google-native:documentai%2Fv1beta3:GoogleCloudDocumentaiV1beta3ProcessorVersionAliasResponse"
            },
            "type": "array"
          },
          "state": {
            "description": "The state of the processor.",
            "type": "string"
          },
          "type": {
            "description": "The processor type, such as: `OCR_PROCESSOR`, `INVOICE_PROCESSOR`. To get a list of processor types, see FetchProcessorTypes.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "defaultProcessorVersion",
          "displayName",
          "kmsKeyName",
          "name",
          "processEndpoint",
          "processorVersionAliases",
          "state",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:domains/v1:getRegistration": {
      "description": "Gets the details of a `Registration` resource.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "registrationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "registrationId"
        ]
      },
      "outputs": {
        "properties": {
          "contactSettings": {
            "$ref": "#/types/google-native:domains%2Fv1:ContactSettingsResponse",
            "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
          },
          "createTime": {
            "description": "The creation timestamp of the `Registration` resource.",
            "type": "string"
          },
          "dnsSettings": {
            "$ref": "#/types/google-native:domains%2Fv1:DnsSettingsResponse",
            "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
          },
          "domainName": {
            "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format.",
            "type": "string"
          },
          "expireTime": {
            "description": "The expiration timestamp of the `Registration`.",
            "type": "string"
          },
          "issues": {
            "description": "The set of issues with the `Registration` that require attention.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with the `Registration`.",
            "type": "object"
          },
          "managementSettings": {
            "$ref": "#/types/google-native:domains%2Fv1:ManagementSettingsResponse",
            "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
          },
          "name": {
            "description": "Name of the `Registration` resource, in the format `projects/*/locations/*/registrations/`.",
            "type": "string"
          },
          "pendingContactSettings": {
            "$ref": "#/types/google-native:domains%2Fv1:ContactSettingsResponse",
            "description": "Pending contact settings for the `Registration`. Updates to the `contact_settings` field that change its `registrant_contact` or `privacy` fields require email confirmation by the `registrant_contact` before taking effect. This field is set only if there are pending updates to the `contact_settings` that have not been confirmed. To confirm the changes, the `registrant_contact` must follow the instructions in the email they receive."
          },
          "registerFailureReason": {
            "description": "The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state.",
            "type": "string"
          },
          "state": {
            "description": "The state of the `Registration`",
            "type": "string"
          },
          "supportedPrivacy": {
            "description": "Set of options for the `contact_settings.privacy` field that this `Registration` supports.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transferFailureReason": {
            "deprecationMessage": "Output only. Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
            "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
            "type": "string"
          }
        },
        "required": [
          "contactSettings",
          "createTime",
          "dnsSettings",
          "domainName",
          "expireTime",
          "issues",
          "labels",
          "managementSettings",
          "name",
          "pendingContactSettings",
          "registerFailureReason",
          "state",
          "supportedPrivacy",
          "transferFailureReason"
        ],
        "type": "object"
      }
    },
    "google-native:domains/v1:getRegistrationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "registrationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "registrationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:domains%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:domains%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:domains/v1alpha2:getRegistration": {
      "description": "Gets the details of a `Registration` resource.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "registrationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "registrationId"
        ]
      },
      "outputs": {
        "properties": {
          "contactSettings": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactSettingsResponse",
            "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
          },
          "createTime": {
            "description": "The creation timestamp of the `Registration` resource.",
            "type": "string"
          },
          "dnsSettings": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:DnsSettingsResponse",
            "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
          },
          "domainName": {
            "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format.",
            "type": "string"
          },
          "expireTime": {
            "description": "The expiration timestamp of the `Registration`.",
            "type": "string"
          },
          "issues": {
            "description": "The set of issues with the `Registration` that require attention.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with the `Registration`.",
            "type": "object"
          },
          "managementSettings": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:ManagementSettingsResponse",
            "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
          },
          "name": {
            "description": "Name of the `Registration` resource, in the format `projects/*/locations/*/registrations/`.",
            "type": "string"
          },
          "pendingContactSettings": {
            "$ref": "#/types/google-native:domains%2Fv1alpha2:ContactSettingsResponse",
            "description": "Pending contact settings for the `Registration`. Updates to the `contact_settings` field that change its `registrant_contact` or `privacy` fields require email confirmation by the `registrant_contact` before taking effect. This field is set only if there are pending updates to the `contact_settings` that have not been confirmed. To confirm the changes, the `registrant_contact` must follow the instructions in the email they receive."
          },
          "registerFailureReason": {
            "description": "The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state.",
            "type": "string"
          },
          "state": {
            "description": "The state of the `Registration`",
            "type": "string"
          },
          "supportedPrivacy": {
            "description": "Set of options for the `contact_settings.privacy` field that this `Registration` supports.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transferFailureReason": {
            "deprecationMessage": "Output only. Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
            "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
            "type": "string"
          }
        },
        "required": [
          "contactSettings",
          "createTime",
          "dnsSettings",
          "domainName",
          "expireTime",
          "issues",
          "labels",
          "managementSettings",
          "name",
          "pendingContactSettings",
          "registerFailureReason",
          "state",
          "supportedPrivacy",
          "transferFailureReason"
        ],
        "type": "object"
      }
    },
    "google-native:domains/v1alpha2:getRegistrationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "registrationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "registrationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:domains%2Fv1alpha2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:domains%2Fv1alpha2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:domains/v1beta1:getRegistration": {
      "description": "Gets the details of a `Registration` resource.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "registrationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "registrationId"
        ]
      },
      "outputs": {
        "properties": {
          "contactSettings": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:ContactSettingsResponse",
            "description": "Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
          },
          "createTime": {
            "description": "The creation timestamp of the `Registration` resource.",
            "type": "string"
          },
          "dnsSettings": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:DnsSettingsResponse",
            "description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
          },
          "domainName": {
            "description": "Immutable. The domain name. Unicode domain names must be expressed in Punycode format.",
            "type": "string"
          },
          "expireTime": {
            "description": "The expiration timestamp of the `Registration`.",
            "type": "string"
          },
          "issues": {
            "description": "The set of issues with the `Registration` that require attention.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of labels associated with the `Registration`.",
            "type": "object"
          },
          "managementSettings": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:ManagementSettingsResponse",
            "description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
          },
          "name": {
            "description": "Name of the `Registration` resource, in the format `projects/*/locations/*/registrations/`.",
            "type": "string"
          },
          "pendingContactSettings": {
            "$ref": "#/types/google-native:domains%2Fv1beta1:ContactSettingsResponse",
            "description": "Pending contact settings for the `Registration`. Updates to the `contact_settings` field that change its `registrant_contact` or `privacy` fields require email confirmation by the `registrant_contact` before taking effect. This field is set only if there are pending updates to the `contact_settings` that have not been confirmed. To confirm the changes, the `registrant_contact` must follow the instructions in the email they receive."
          },
          "registerFailureReason": {
            "description": "The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state.",
            "type": "string"
          },
          "state": {
            "description": "The state of the `Registration`",
            "type": "string"
          },
          "supportedPrivacy": {
            "description": "Set of options for the `contact_settings.privacy` field that this `Registration` supports.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transferFailureReason": {
            "deprecationMessage": "Output only. Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
            "description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
            "type": "string"
          }
        },
        "required": [
          "contactSettings",
          "createTime",
          "dnsSettings",
          "domainName",
          "expireTime",
          "issues",
          "labels",
          "managementSettings",
          "name",
          "pendingContactSettings",
          "registerFailureReason",
          "state",
          "supportedPrivacy",
          "transferFailureReason"
        ],
        "type": "object"
      }
    },
    "google-native:domains/v1beta1:getRegistrationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "registrationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "registrationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:domains%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:domains%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:essentialcontacts/v1:getContact": {
      "description": "Gets a single contact.",
      "inputs": {
        "properties": {
          "contactId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contactId"
        ]
      },
      "outputs": {
        "properties": {
          "email": {
            "description": "The email address to send notifications to. The email address does not need to be a Google Account.",
            "type": "string"
          },
          "languageTag": {
            "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages.",
            "type": "string"
          },
          "name": {
            "description": "The identifier for the contact. Format: {resource_type}/{resource_id}/contacts/{contact_id}",
            "type": "string"
          },
          "notificationCategorySubscriptions": {
            "description": "The categories of notifications that the contact will receive communications for.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validateTime": {
            "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago.",
            "type": "string"
          },
          "validationState": {
            "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource.",
            "type": "string"
          }
        },
        "required": [
          "email",
          "languageTag",
          "name",
          "notificationCategorySubscriptions",
          "validateTime",
          "validationState"
        ],
        "type": "object"
      }
    },
    "google-native:essentialcontacts/v1:getFolderContact": {
      "description": "Gets a single contact.",
      "inputs": {
        "properties": {
          "contactId": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contactId",
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "email": {
            "description": "The email address to send notifications to. The email address does not need to be a Google Account.",
            "type": "string"
          },
          "languageTag": {
            "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages.",
            "type": "string"
          },
          "name": {
            "description": "The identifier for the contact. Format: {resource_type}/{resource_id}/contacts/{contact_id}",
            "type": "string"
          },
          "notificationCategorySubscriptions": {
            "description": "The categories of notifications that the contact will receive communications for.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validateTime": {
            "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago.",
            "type": "string"
          },
          "validationState": {
            "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource.",
            "type": "string"
          }
        },
        "required": [
          "email",
          "languageTag",
          "name",
          "notificationCategorySubscriptions",
          "validateTime",
          "validationState"
        ],
        "type": "object"
      }
    },
    "google-native:essentialcontacts/v1:getOrganizationContact": {
      "description": "Gets a single contact.",
      "inputs": {
        "properties": {
          "contactId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "contactId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "email": {
            "description": "The email address to send notifications to. The email address does not need to be a Google Account.",
            "type": "string"
          },
          "languageTag": {
            "description": "The preferred language for notifications, as a ISO 639-1 language code. See [Supported languages](https://cloud.google.com/resource-manager/docs/managing-notification-contacts#supported-languages) for a list of supported languages.",
            "type": "string"
          },
          "name": {
            "description": "The identifier for the contact. Format: {resource_type}/{resource_id}/contacts/{contact_id}",
            "type": "string"
          },
          "notificationCategorySubscriptions": {
            "description": "The categories of notifications that the contact will receive communications for.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validateTime": {
            "description": "The last time the validation_state was updated, either manually or automatically. A contact is considered stale if its validation state was updated more than 1 year ago.",
            "type": "string"
          },
          "validationState": {
            "description": "The validity of the contact. A contact is considered valid if it is the correct recipient for notifications for a particular resource.",
            "type": "string"
          }
        },
        "required": [
          "email",
          "languageTag",
          "name",
          "notificationCategorySubscriptions",
          "validateTime",
          "validationState"
        ],
        "type": "object"
      }
    },
    "google-native:eventarc/v1:getChannel": {
      "description": "Get a single Channel.",
      "inputs": {
        "properties": {
          "channelId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "channelId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "activationToken": {
            "description": "The activation token for the channel. The token must be used by the provider to register the channel for publishing.",
            "type": "string"
          },
          "createTime": {
            "description": "The creation time.",
            "type": "string"
          },
          "cryptoKeyName": {
            "description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt their event data. It must match the pattern `projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the channel. Must be unique within the location on the project and must be in `projects/{project}/locations/{location}/channels/{channel_id}` format.",
            "type": "string"
          },
          "provider": {
            "description": "The name of the event provider (e.g. Eventarc SaaS partner) associated with the channel. This provider will be granted permissions to publish events to the channel. Format: `projects/{project}/locations/{location}/providers/{provider_id}`.",
            "type": "string"
          },
          "pubsubTopic": {
            "description": "The name of the Pub/Sub topic created and managed by Eventarc system as a transport for the event delivery. Format: `projects/{project}/topics/{topic_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The state of a Channel.",
            "type": "string"
          },
          "uid": {
            "description": "Server assigned unique identifier for the channel. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last-modified time.",
            "type": "string"
          }
        },
        "required": [
          "activationToken",
          "createTime",
          "cryptoKeyName",
          "name",
          "provider",
          "pubsubTopic",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:eventarc/v1:getChannelConnection": {
      "description": "Get a single ChannelConnection.",
      "inputs": {
        "properties": {
          "channelConnectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "channelConnectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "activationToken": {
            "description": "Input only. Activation token for the channel. The token will be used during the creation of ChannelConnection to bind the channel with the provider project. This field will not be stored in the provider resource.",
            "type": "string"
          },
          "channel": {
            "description": "The name of the connected subscriber Channel. This is a weak reference to avoid cross project and cross accounts references. This must be in `projects/{project}/location/{location}/channels/{channel_id}` format.",
            "type": "string"
          },
          "createTime": {
            "description": "The creation time.",
            "type": "string"
          },
          "name": {
            "description": "The name of the connection.",
            "type": "string"
          },
          "uid": {
            "description": "Server assigned ID of the resource. The server guarantees uniqueness and immutability until deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last-modified time.",
            "type": "string"
          }
        },
        "required": [
          "activationToken",
          "channel",
          "createTime",
          "name",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:eventarc/v1:getChannelConnectionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "channelConnectionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "channelConnectionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:eventarc/v1:getChannelIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "channelId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "channelId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:eventarc/v1:getTrigger": {
      "description": "Get a single trigger.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "triggerId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "triggerId"
        ]
      },
      "outputs": {
        "properties": {
          "channel": {
            "description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners.",
            "type": "string"
          },
          "conditions": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The reason(s) why a trigger is in FAILED state.",
            "type": "object"
          },
          "createTime": {
            "description": "The creation time.",
            "type": "string"
          },
          "destination": {
            "$ref": "#/types/google-native:eventarc%2Fv1:DestinationResponse",
            "description": "Destination specifies where the events should be sent to."
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and might be sent only on create requests to ensure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "eventDataContentType": {
            "description": "Optional. EventDataContentType specifies the type of payload in MIME format that is expected from the CloudEvent data field. This is set to `application/json` if the value is not defined.",
            "type": "string"
          },
          "eventFilters": {
            "description": "Unordered list. The list of filters that applies to event attributes. Only events that match all the provided filters are sent to the destination.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1:EventFilterResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User labels attached to the triggers that can be used to group resources.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the trigger. Must be unique within the location of the project and must be in `projects/{project}/locations/{location}/triggers/{trigger}` format.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "Optional. The IAM service account email associated with the trigger. The service account represents the identity of the trigger. The `iam.serviceAccounts.actAs` permission must be granted on the service account to allow a principal to impersonate the service account. For more information, see the [Roles and permissions](/eventarc/docs/all-roles-permissions) page specific to the trigger destination.",
            "type": "string"
          },
          "transport": {
            "$ref": "#/types/google-native:eventarc%2Fv1:TransportResponse",
            "description": "Optional. To deliver messages, Eventarc might use other Google Cloud products as a transport intermediary. This field contains a reference to that transport intermediary. This information can be used for debugging purposes."
          },
          "uid": {
            "description": "Server-assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last-modified time.",
            "type": "string"
          }
        },
        "required": [
          "channel",
          "conditions",
          "createTime",
          "destination",
          "etag",
          "eventDataContentType",
          "eventFilters",
          "labels",
          "name",
          "serviceAccount",
          "transport",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:eventarc/v1:getTriggerIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "triggerId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "triggerId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:eventarc/v1beta1:getTrigger": {
      "description": "Get a single trigger.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "triggerId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "triggerId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation time.",
            "type": "string"
          },
          "destination": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:DestinationResponse",
            "description": "Destination specifies where the events should be sent to."
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent only on create requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User labels attached to the triggers that can be used to group resources.",
            "type": "object"
          },
          "matchingCriteria": {
            "description": "Unordered list. The criteria by which events are filtered. Only events that match with this criteria will be sent to the destination.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1beta1:MatchingCriteriaResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "The resource name of the trigger. Must be unique within the location on the project and must in `projects/{project}/locations/{location}/triggers/{trigger}` format.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "Optional. The IAM service account email associated with the trigger. The service account represents the identity of the trigger. The principal who calls this API must have `iam.serviceAccounts.actAs` permission in the service account. See https://cloud.google.com/iam/docs/understanding-service-accounts?hl=en#sa_common for more information. For Cloud Run destinations, this service account is used to generate identity tokens when invoking the service. See https://cloud.google.com/run/docs/triggering/pubsub-push#create-service-account for information on how to invoke authenticated Cloud Run services. In order to create Audit Log triggers, the service account should also have 'eventarc.events.receiveAuditLogV1Written' permission.",
            "type": "string"
          },
          "transport": {
            "$ref": "#/types/google-native:eventarc%2Fv1beta1:TransportResponse",
            "description": "In order to deliver messages, Eventarc may use other Google Cloud products as transport intermediary. This field contains a reference to that transport intermediary. This information can be used for debugging purposes."
          },
          "updateTime": {
            "description": "The last-modified time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "destination",
          "etag",
          "labels",
          "matchingCriteria",
          "name",
          "serviceAccount",
          "transport",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:eventarc/v1beta1:getTriggerIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "triggerId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "triggerId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:eventarc%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:file/v1:getBackup": {
      "description": "Gets the details of a specific backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "capacityGb": {
            "description": "Capacity of the source file share when the backup was created.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the backup was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of the backup with 2048 characters or less. Requests with longer descriptions will be rejected.",
            "type": "string"
          },
          "downloadBytes": {
            "description": "Amount of bytes that will be downloaded if the backup is restored. This may be different than storage bytes, since sequential backups of the same disk will share storage.",
            "type": "string"
          },
          "kmsKey": {
            "description": "Immutable. KMS key name used for data encryption.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the backup, in the format `projects/{project_number}/locations/{location_id}/backups/{backup_id}`.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "sourceFileShare": {
            "description": "Name of the file share in the source Filestore instance that the backup is created from.",
            "type": "string"
          },
          "sourceInstance": {
            "description": "The resource name of the source Filestore instance, in the format `projects/{project_number}/locations/{location_id}/instances/{instance_id}`, used to create this backup.",
            "type": "string"
          },
          "sourceInstanceTier": {
            "description": "The service tier of the source Filestore instance that this backup is created from.",
            "type": "string"
          },
          "state": {
            "description": "The backup state.",
            "type": "string"
          },
          "storageBytes": {
            "description": "The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion.",
            "type": "string"
          }
        },
        "required": [
          "capacityGb",
          "createTime",
          "description",
          "downloadBytes",
          "kmsKey",
          "labels",
          "name",
          "satisfiesPzs",
          "sourceFileShare",
          "sourceInstance",
          "sourceInstanceTier",
          "state",
          "storageBytes"
        ],
        "type": "object"
      }
    },
    "google-native:file/v1:getInstance": {
      "description": "Gets the details of a specific instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the instance was created.",
            "type": "string"
          },
          "description": {
            "description": "The description of the instance (2048 characters or less).",
            "type": "string"
          },
          "etag": {
            "description": "Server-specified ETag for the instance resource to prevent simultaneous updates from overwriting each other.",
            "type": "string"
          },
          "fileShares": {
            "description": "File system shares on the instance. For this version, only a single file share is supported.",
            "items": {
              "$ref": "#/types/google-native:file%2Fv1:FileShareConfigResponse"
            },
            "type": "array"
          },
          "kmsKeyName": {
            "description": "KMS key name used for data encryption.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the instance, in the format `projects/{project}/locations/{location}/instances/{instance}`.",
            "type": "string"
          },
          "networks": {
            "description": "VPC networks to which the instance is connected. For this version, only a single network is supported.",
            "items": {
              "$ref": "#/types/google-native:file%2Fv1:NetworkConfigResponse"
            },
            "type": "array"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "state": {
            "description": "The instance state.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the instance state, if available.",
            "type": "string"
          },
          "suspensionReasons": {
            "description": "Field indicates all the reasons the instance is in \"SUSPENDED\" state.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tier": {
            "description": "The service tier of the instance.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "fileShares",
          "kmsKeyName",
          "labels",
          "name",
          "networks",
          "satisfiesPzs",
          "state",
          "statusMessage",
          "suspensionReasons",
          "tier"
        ],
        "type": "object"
      }
    },
    "google-native:file/v1:getSnapshot": {
      "description": "Gets the details of a specific snapshot.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "snapshotId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location",
          "snapshotId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the snapshot was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected.",
            "type": "string"
          },
          "filesystemUsedBytes": {
            "description": "The amount of bytes needed to allocate a full copy of the snapshot content",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the snapshot, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The snapshot state.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "filesystemUsedBytes",
          "labels",
          "name",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:file/v1beta1:getBackup": {
      "description": "Gets the details of a specific backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "capacityGb": {
            "description": "Capacity of the source file share when the backup was created.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the backup was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of the backup with 2048 characters or less. Requests with longer descriptions will be rejected.",
            "type": "string"
          },
          "downloadBytes": {
            "description": "Amount of bytes that will be downloaded if the backup is restored",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "Immutable. KMS key name used for data encryption.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the backup, in the format `projects/{project_id}/locations/{location_id}/backups/{backup_id}`.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "sourceFileShare": {
            "description": "Name of the file share in the source Filestore instance that the backup is created from.",
            "type": "string"
          },
          "sourceInstance": {
            "description": "The resource name of the source Filestore instance, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}`, used to create this backup.",
            "type": "string"
          },
          "sourceInstanceTier": {
            "description": "The service tier of the source Filestore instance that this backup is created from.",
            "type": "string"
          },
          "state": {
            "description": "The backup state.",
            "type": "string"
          },
          "storageBytes": {
            "description": "The size of the storage used by the backup. As backups share storage, this number is expected to change with backup creation/deletion.",
            "type": "string"
          }
        },
        "required": [
          "capacityGb",
          "createTime",
          "description",
          "downloadBytes",
          "kmsKeyName",
          "labels",
          "name",
          "satisfiesPzs",
          "sourceFileShare",
          "sourceInstance",
          "sourceInstanceTier",
          "state",
          "storageBytes"
        ],
        "type": "object"
      }
    },
    "google-native:file/v1beta1:getInstance": {
      "description": "Gets the details of a specific instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "capacityGb": {
            "description": "The storage capacity of the instance in gigabytes (GB = 1024^3 bytes). This capacity can be increased up to `max_capacity_gb` GB in multipliers of `capacity_step_size_gb` GB.",
            "type": "string"
          },
          "capacityStepSizeGb": {
            "description": "The increase/decrease capacity step size.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the instance was created.",
            "type": "string"
          },
          "description": {
            "description": "The description of the instance (2048 characters or less).",
            "type": "string"
          },
          "directoryServices": {
            "$ref": "#/types/google-native:file%2Fv1beta1:DirectoryServicesConfigResponse",
            "description": "Directory Services configuration for Kerberos-based authentication. Should only be set if protocol is \"NFS_V4_1\"."
          },
          "etag": {
            "description": "Server-specified ETag for the instance resource to prevent simultaneous updates from overwriting each other.",
            "type": "string"
          },
          "fileShares": {
            "description": "File system shares on the instance. For this version, only a single file share is supported.",
            "items": {
              "$ref": "#/types/google-native:file%2Fv1beta1:FileShareConfigResponse"
            },
            "type": "array"
          },
          "kmsKeyName": {
            "description": "KMS key name used for data encryption.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "maxCapacityGb": {
            "description": "The max capacity of the instance.",
            "type": "string"
          },
          "maxShareCount": {
            "description": "The max number of shares allowed.",
            "type": "string"
          },
          "multiShareEnabled": {
            "description": "Indicates whether this instance uses a multi-share configuration with which it can have more than one file-share or none at all. File-shares are added, updated and removed through the separate file-share APIs.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the instance, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}`.",
            "type": "string"
          },
          "networks": {
            "description": "VPC networks to which the instance is connected. For this version, only a single network is supported.",
            "items": {
              "$ref": "#/types/google-native:file%2Fv1beta1:NetworkConfigResponse"
            },
            "type": "array"
          },
          "protocol": {
            "description": "Immutable. The protocol indicates the access protocol for all shares in the instance. This field is immutable and it cannot be changed after the instance has been created. Default value: `NFS_V3`.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "state": {
            "description": "The instance state.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the instance state, if available.",
            "type": "string"
          },
          "suspensionReasons": {
            "description": "Field indicates all the reasons the instance is in \"SUSPENDED\" state.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tier": {
            "description": "The service tier of the instance.",
            "type": "string"
          }
        },
        "required": [
          "capacityGb",
          "capacityStepSizeGb",
          "createTime",
          "description",
          "directoryServices",
          "etag",
          "fileShares",
          "kmsKeyName",
          "labels",
          "maxCapacityGb",
          "maxShareCount",
          "multiShareEnabled",
          "name",
          "networks",
          "protocol",
          "satisfiesPzs",
          "state",
          "statusMessage",
          "suspensionReasons",
          "tier"
        ],
        "type": "object"
      }
    },
    "google-native:file/v1beta1:getShare": {
      "description": "Gets the details of a specific share.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "shareId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location",
          "shareId"
        ]
      },
      "outputs": {
        "properties": {
          "backup": {
            "description": "Immutable. Full name of the Cloud Filestore Backup resource that this Share is restored from, in the format of projects/{project_id}/locations/{location_id}/backups/{backup_id}. Empty, if the Share is created from scratch and not restored from a backup.",
            "type": "string"
          },
          "capacityGb": {
            "description": "File share capacity in gigabytes (GB). Filestore defines 1 GB as 1024^3 bytes. Must be greater than 0.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the share was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of the share with 2048 characters or less. Requests with longer descriptions will be rejected.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "mountName": {
            "description": "The mount name of the share. Must be 63 characters or less and consist of uppercase or lowercase letters, numbers, and underscores.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the share, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}/shares/{share_id}`.",
            "type": "string"
          },
          "nfsExportOptions": {
            "description": "Nfs Export Options. There is a limit of 10 export options per file share.",
            "items": {
              "$ref": "#/types/google-native:file%2Fv1beta1:NfsExportOptionsResponse"
            },
            "type": "array"
          },
          "state": {
            "description": "The share state.",
            "type": "string"
          }
        },
        "required": [
          "backup",
          "capacityGb",
          "createTime",
          "description",
          "labels",
          "mountName",
          "name",
          "nfsExportOptions",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:file/v1beta1:getSnapshot": {
      "description": "Gets the details of a specific snapshot.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "snapshotId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location",
          "snapshotId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the snapshot was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected.",
            "type": "string"
          },
          "filesystemUsedBytes": {
            "description": "The amount of bytes needed to allocate a full copy of the snapshot content",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the snapshot, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The snapshot state.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "filesystemUsedBytes",
          "labels",
          "name",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:firebase/v1beta1:getAndroidApp": {
      "description": "Gets the specified AndroidApp.",
      "inputs": {
        "properties": {
          "androidAppId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "androidAppId"
        ]
      },
      "outputs": {
        "properties": {
          "apiKeyId": {
            "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `AndroidApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.androidApps/getConfig). If `api_key_id` is not set in requests to [`androidApps.Create`](../../rest/v1beta1/projects.androidApps/create), then Firebase automatically associates an `api_key_id` with the `AndroidApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `AndroidApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys.",
            "type": "string"
          },
          "appId": {
            "description": "Immutable. The globally unique, Firebase-assigned identifier for the `AndroidApp`. This identifier should be treated as an opaque token, as the data format is not specified.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-assigned display name for the `AndroidApp`.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated.",
            "type": "string"
          },
          "expireTime": {
            "description": "Timestamp of when the App will be considered expired and cannot be undeleted. This value is only provided if the App is in the `DELETED` state.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the AndroidApp, in the format: projects/ PROJECT_IDENTIFIER/androidApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.androidApps#AndroidApp.FIELDS.app_id)).",
            "type": "string"
          },
          "packageName": {
            "description": "Immutable. The canonical package name of the Android app as would appear in the Google Play Developer Console.",
            "type": "string"
          },
          "project": {
            "description": "Immutable. A user-assigned unique identifier of the parent FirebaseProject for the `AndroidApp`.",
            "type": "string"
          },
          "sha1Hashes": {
            "description": "The SHA1 certificate hashes for the AndroidApp.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sha256Hashes": {
            "description": "The SHA256 certificate hashes for the AndroidApp.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The lifecycle state of the App.",
            "type": "string"
          }
        },
        "required": [
          "apiKeyId",
          "appId",
          "displayName",
          "etag",
          "expireTime",
          "name",
          "packageName",
          "project",
          "sha1Hashes",
          "sha256Hashes",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:firebase/v1beta1:getIosApp": {
      "description": "Gets the specified IosApp.",
      "inputs": {
        "properties": {
          "iosAppId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "iosAppId"
        ]
      },
      "outputs": {
        "properties": {
          "apiKeyId": {
            "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `IosApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.iosApps/getConfig). If `api_key_id` is not set in requests to [`iosApps.Create`](../../rest/v1beta1/projects.iosApps/create), then Firebase automatically associates an `api_key_id` with the `IosApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `IosApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys.",
            "type": "string"
          },
          "appId": {
            "description": "Immutable. The globally unique, Firebase-assigned identifier for the `IosApp`. This identifier should be treated as an opaque token, as the data format is not specified.",
            "type": "string"
          },
          "appStoreId": {
            "description": "The automatically generated Apple ID assigned to the iOS app by Apple in the iOS App Store.",
            "type": "string"
          },
          "bundleId": {
            "description": "Immutable. The canonical bundle ID of the iOS app as it would appear in the iOS AppStore.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-assigned display name for the `IosApp`.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated.",
            "type": "string"
          },
          "expireTime": {
            "description": "Timestamp of when the App will be considered expired and cannot be undeleted. This value is only provided if the App is in the `DELETED` state.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the IosApp, in the format: projects/PROJECT_IDENTIFIER /iosApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.iosApps#IosApp.FIELDS.app_id)).",
            "type": "string"
          },
          "project": {
            "description": "Immutable. A user-assigned unique identifier of the parent FirebaseProject for the `IosApp`.",
            "type": "string"
          },
          "state": {
            "description": "The lifecycle state of the App.",
            "type": "string"
          },
          "teamId": {
            "description": "The Apple Developer Team ID associated with the App in the App Store.",
            "type": "string"
          }
        },
        "required": [
          "apiKeyId",
          "appId",
          "appStoreId",
          "bundleId",
          "displayName",
          "etag",
          "expireTime",
          "name",
          "project",
          "state",
          "teamId"
        ],
        "type": "object"
      }
    },
    "google-native:firebase/v1beta1:getWebApp": {
      "description": "Gets the specified WebApp.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "webAppId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "webAppId"
        ]
      },
      "outputs": {
        "properties": {
          "apiKeyId": {
            "description": "The globally unique, Google-assigned identifier (UID) for the Firebase API key associated with the `WebApp`. Be aware that this value is the UID of the API key, _not_ the [`keyString`](https://cloud.google.com/api-keys/docs/reference/rest/v2/projects.locations.keys#Key.FIELDS.key_string) of the API key. The `keyString` is the value that can be found in the App's [configuration artifact](../../rest/v1beta1/projects.webApps/getConfig). If `api_key_id` is not set in requests to [`webApps.Create`](../../rest/v1beta1/projects.webApps/create), then Firebase automatically associates an `api_key_id` with the `WebApp`. This auto-associated key may be an existing valid key or, if no valid key exists, a new one will be provisioned. In patch requests, `api_key_id` cannot be set to an empty value, and the new UID must have no restrictions or only have restrictions that are valid for the associated `WebApp`. We recommend using the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) to manage API keys.",
            "type": "string"
          },
          "appId": {
            "description": "Immutable. The globally unique, Firebase-assigned identifier for the `WebApp`. This identifier should be treated as an opaque token, as the data format is not specified.",
            "type": "string"
          },
          "appUrls": {
            "description": "The URLs where the `WebApp` is hosted.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The user-assigned display name for the `WebApp`.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and it may be sent with update requests to ensure the client has an up-to-date value before proceeding. Learn more about `etag` in Google's [AIP-154 standard](https://google.aip.dev/154#declarative-friendly-resources). This etag is strongly validated.",
            "type": "string"
          },
          "expireTime": {
            "description": "Timestamp of when the App will be considered expired and cannot be undeleted. This value is only provided if the App is in the `DELETED` state.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the WebApp, in the format: projects/PROJECT_IDENTIFIER /webApps/APP_ID * PROJECT_IDENTIFIER: the parent Project's [`ProjectNumber`](../projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](../projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510). Note that the value for PROJECT_IDENTIFIER in any response body will be the `ProjectId`. * APP_ID: the globally unique, Firebase-assigned identifier for the App (see [`appId`](../projects.webApps#WebApp.FIELDS.app_id)).",
            "type": "string"
          },
          "project": {
            "description": "Immutable. A user-assigned unique identifier of the parent FirebaseProject for the `WebApp`.",
            "type": "string"
          },
          "state": {
            "description": "The lifecycle state of the App.",
            "type": "string"
          },
          "webId": {
            "description": "Immutable. A unique, Firebase-assigned identifier for the `WebApp`. This identifier is only used to populate the `namespace` value for the `WebApp`. For most use cases, use `appId` to identify or reference the App. The `webId` value is only unique within a `FirebaseProject` and its associated Apps.",
            "type": "string"
          }
        },
        "required": [
          "apiKeyId",
          "appId",
          "appUrls",
          "displayName",
          "etag",
          "expireTime",
          "name",
          "project",
          "state",
          "webId"
        ],
        "type": "object"
      }
    },
    "google-native:firebaseappcheck/v1:getDebugToken": {
      "description": "Gets the specified DebugToken. For security reasons, the `token` field is never populated in the response.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "debugTokenId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "debugTokenId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "A human readable display name used to identify this debug token.",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of the debug token, in the format: ``` projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```",
            "type": "string"
          },
          "token": {
            "description": "Input only. Immutable. The secret token itself. Must be provided during creation, and must be a UUID4, case insensitive. This field is immutable once set, and cannot be provided during an UpdateDebugToken request. You can, however, delete this debug token using DeleteDebugToken to revoke it. For security reasons, this field will never be populated in any response.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "name",
          "token"
        ],
        "type": "object"
      }
    },
    "google-native:firebaseappcheck/v1beta:getDebugToken": {
      "description": "Gets the specified DebugToken. For security reasons, the `token` field is never populated in the response.",
      "inputs": {
        "properties": {
          "appId": {
            "type": "string"
          },
          "debugTokenId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "appId",
          "debugTokenId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "A human readable display name used to identify this debug token.",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of the debug token, in the format: ``` projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```",
            "type": "string"
          },
          "token": {
            "description": "Input only. Immutable. The secret token itself. Must be provided during creation, and must be a UUID4, case insensitive. This field is immutable once set, and cannot be provided during an UpdateDebugToken request. You can, however, delete this debug token using DeleteDebugToken to revoke it. For security reasons, this field will never be populated in any response.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "name",
          "token"
        ],
        "type": "object"
      }
    },
    "google-native:firebaseappdistribution/v1:getGroup": {
      "description": "Get a group.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The display name of the group.",
            "type": "string"
          },
          "inviteLinkCount": {
            "description": "The number of invite links for this group.",
            "type": "integer"
          },
          "name": {
            "description": "The name of the group resource. Format: `projects/{project_number}/groups/{group_alias}`",
            "type": "string"
          },
          "releaseCount": {
            "description": "The number of releases this group is permitted to access.",
            "type": "integer"
          },
          "testerCount": {
            "description": "The number of testers who are members of this group.",
            "type": "integer"
          }
        },
        "required": [
          "displayName",
          "inviteLinkCount",
          "name",
          "releaseCount",
          "testerCount"
        ],
        "type": "object"
      }
    },
    "google-native:firebasedatabase/v1beta:getInstance": {
      "description": "Gets the DatabaseInstance identified by the specified resource name.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "databaseUrl": {
            "description": "Output Only. The globally unique hostname of the database.",
            "type": "string"
          },
          "name": {
            "description": "The fully qualified resource name of the database instance, in the form: `projects/{project-number}/locations/{location-id}/instances/{database-id}`.",
            "type": "string"
          },
          "project": {
            "description": "The resource name of the project this instance belongs to. For example: `projects/{project-number}`.",
            "type": "string"
          },
          "state": {
            "description": "The database's lifecycle state. Read-only.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The database instance type. On creation only USER_DATABASE is allowed, which is also the default when omitted.",
            "type": "string"
          }
        },
        "required": [
          "databaseUrl",
          "name",
          "project",
          "state",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:firebasehosting/v1beta1:getChannel": {
      "description": "Retrieves information for the specified channel of the specified site.",
      "inputs": {
        "properties": {
          "channelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "siteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "channelId",
          "siteId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which the channel was created.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time at which the channel will be automatically deleted. If null, the channel will not be automatically deleted. This field is present in the output whether it's set directly or via the `ttl` field.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Text labels used for extra metadata and/or filtering.",
            "type": "object"
          },
          "name": {
            "description": "The fully-qualified resource name for the channel, in the format: sites/ SITE_ID/channels/CHANNEL_ID",
            "type": "string"
          },
          "release": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ReleaseResponse",
            "description": "The current release for the channel, if any."
          },
          "retainedReleaseCount": {
            "description": "The number of previous releases to retain on the channel for rollback or other purposes. Must be a number between 1-100. Defaults to 10 for new channels.",
            "type": "integer"
          },
          "ttl": {
            "description": "Input only. A time-to-live for this channel. Sets `expire_time` to the provided duration past the time of the request.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which the channel was last updated.",
            "type": "string"
          },
          "url": {
            "description": "The URL at which the content of this channel's current release can be viewed. This URL is a Firebase-provided subdomain of `web.app`. The content of this channel's current release can also be viewed at the Firebase-provided subdomain of `firebaseapp.com`. If this channel is the `live` channel for the Hosting site, then the content of this channel's current release can also be viewed at any connected custom domains.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "expireTime",
          "labels",
          "name",
          "release",
          "retainedReleaseCount",
          "ttl",
          "updateTime",
          "url"
        ],
        "type": "object"
      }
    },
    "google-native:firebasehosting/v1beta1:getCustomDomain": {
      "description": "Gets the specified `CustomDomain`.",
      "inputs": {
        "properties": {
          "customDomainId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "siteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customDomainId",
          "siteId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations you can add to leave both human- and machine-readable metadata about your `CustomDomain`.",
            "type": "object"
          },
          "cert": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:CertificateResponse",
            "description": "The SSL certificate Hosting has for this custom domain's domain name. For new custom domains, this often represents Hosting's intent to create a certificate, rather than an actual cert. Check the `state` field for more."
          },
          "certPreference": {
            "description": "A field that lets you specify which SSL certificate type Hosting creates for your domain name. Spark plan custom domains only have access to the `GROUPED` cert type, while Blaze plan domains can select any option.",
            "type": "string"
          },
          "createTime": {
            "description": "The custom domain's create time.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The time the `CustomDomain` was deleted; null for custom domains that haven't been deleted. Deleted custom domains persist for approximately 30 days, after which time Hosting removes them completely. To restore a deleted custom domain, make an `UndeleteCustomDomain` request.",
            "type": "string"
          },
          "etag": {
            "description": "A string that represents the current state of the `CustomDomain` and allows you to confirm its initial state in requests that would modify it. Use the tag to ensure consistency when making `UpdateCustomDomain`, `DeleteCustomDomain`, and `UndeleteCustomDomain` requests.",
            "type": "string"
          },
          "expireTime": {
            "description": "The minimum time before a soft-deleted `CustomDomain` is completely removed from Hosting; null for custom domains that haven't been deleted.",
            "type": "string"
          },
          "hostState": {
            "description": "The `HostState` of the domain name this `CustomDomain` refers to.",
            "type": "string"
          },
          "issues": {
            "description": "A set of errors Hosting systems encountered when trying to establish Hosting's ability to serve secure content for your domain name. Resolve these issues to ensure your `CustomDomain` behaves properly.",
            "items": {
              "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:StatusResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels used for extra metadata and/or filtering.",
            "type": "object"
          },
          "name": {
            "description": "The fully-qualified name of the `CustomDomain`.",
            "type": "string"
          },
          "ownershipState": {
            "description": "The `OwnershipState` of the domain name this `CustomDomain` refers to.",
            "type": "string"
          },
          "reconciling": {
            "description": "A field that, if true, indicates that Hosting's systems are attmepting to make the custom domain's state match your preferred state. This is most frequently `true` when initially provisioning a `CustomDomain` after a `CreateCustomDomain` request or when creating a new SSL certificate to match an updated `cert_preference` after an `UpdateCustomDomain` request.",
            "type": "boolean"
          },
          "redirectTarget": {
            "description": "A domain name that this `CustomDomain` should direct traffic towards. If specified, Hosting will respond to requests against this custom domain with an HTTP 301 code, and route traffic to the specified `redirect_target` instead.",
            "type": "string"
          },
          "requiredDnsUpdates": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DnsUpdatesResponse",
            "description": "A set of updates you should make to the domain name's DNS records to let Hosting serve secure content on its behalf."
          },
          "updateTime": {
            "description": "The last time the `CustomDomain` was updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "cert",
          "certPreference",
          "createTime",
          "deleteTime",
          "etag",
          "expireTime",
          "hostState",
          "issues",
          "labels",
          "name",
          "ownershipState",
          "reconciling",
          "redirectTarget",
          "requiredDnsUpdates",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:firebasehosting/v1beta1:getDomain": {
      "description": "Gets a domain mapping on the specified site.",
      "inputs": {
        "properties": {
          "domainId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "siteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "domainId",
          "siteId"
        ]
      },
      "outputs": {
        "properties": {
          "domainName": {
            "description": "The domain name of the association.",
            "type": "string"
          },
          "domainRedirect": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DomainRedirectResponse",
            "description": "If set, the domain should redirect with the provided parameters."
          },
          "provisioning": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:DomainProvisioningResponse",
            "description": "Information about the provisioning of certificates and the health of the DNS resolution for the domain."
          },
          "site": {
            "description": "The site name of the association.",
            "type": "string"
          },
          "status": {
            "description": "Additional status of the domain association.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which the domain was last updated.",
            "type": "string"
          }
        },
        "required": [
          "domainName",
          "domainRedirect",
          "provisioning",
          "site",
          "status",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:firebasehosting/v1beta1:getRelease": {
      "description": "Gets the specified release for a site or channel. When used to get a release for a site, this can get releases for both the default `live` channel and any active preview channels for the specified site.",
      "inputs": {
        "properties": {
          "channelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "releaseId": {
            "type": "string"
          },
          "siteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "channelId",
          "releaseId",
          "siteId"
        ]
      },
      "outputs": {
        "properties": {
          "message": {
            "description": "The deploy description when the release was created. The value can be up to 512 characters.",
            "type": "string"
          },
          "name": {
            "description": "The unique identifier for the release, in either of the following formats: - sites/SITE_ID/releases/RELEASE_ID - sites/SITE_ID/channels/CHANNEL_ID/releases/RELEASE_ID This name is provided in the response body when you call [`releases.create`](sites.releases/create) or [`channels.releases.create`](sites.channels.releases/create).",
            "type": "string"
          },
          "releaseTime": {
            "description": "The time at which the version is set to be public.",
            "type": "string"
          },
          "releaseUser": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
            "description": "Identifies the user who created the release."
          },
          "type": {
            "description": "Explains the reason for the release. Specify a value for this field only when creating a `SITE_DISABLE` type release.",
            "type": "string"
          },
          "version": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:VersionResponse",
            "description": "The configuration and content that was released."
          }
        },
        "required": [
          "message",
          "name",
          "releaseTime",
          "releaseUser",
          "type",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:firebasehosting/v1beta1:getSite": {
      "description": "Gets the specified Hosting Site.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "siteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "siteId"
        ]
      },
      "outputs": {
        "properties": {
          "appId": {
            "description": "Optional. The [ID of a Web App](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.webApps#WebApp.FIELDS.app_id) associated with the Hosting site.",
            "type": "string"
          },
          "defaultUrl": {
            "description": "The default URL for the Hosting site.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-specified labels for the Hosting site.",
            "type": "object"
          },
          "name": {
            "description": "The fully-qualified resource name of the Hosting site, in the format: projects/PROJECT_IDENTIFIER/sites/SITE_ID PROJECT_IDENTIFIER: the Firebase project's [`ProjectNumber`](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects#FirebaseProject.FIELDS.project_number) ***(recommended)*** or its [`ProjectId`](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects#FirebaseProject.FIELDS.project_id). Learn more about using project identifiers in Google's [AIP 2510 standard](https://google.aip.dev/cloud/2510).",
            "type": "string"
          },
          "type": {
            "description": "The type of Hosting site. Every Firebase project has a `DEFAULT_SITE`, which is created when Hosting is provisioned for the project. All additional sites are `USER_SITE`.",
            "type": "string"
          }
        },
        "required": [
          "appId",
          "defaultUrl",
          "labels",
          "name",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:firebasehosting/v1beta1:getVersion": {
      "description": "Get the specified version that has been created for the specified site. This can include versions that were created for the default `live` channel or for any active preview channels for the specified site.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "siteId": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "siteId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ServingConfigResponse",
            "description": "The configuration for the behavior of the site. This configuration exists in the [`firebase.json`](https://firebase.google.com/docs/cli/#the_firebasejson_file) file."
          },
          "createTime": {
            "description": "The time at which the version was created.",
            "type": "string"
          },
          "createUser": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
            "description": "Identifies the user who created the version."
          },
          "deleteTime": {
            "description": "The time at which the version was `DELETED`.",
            "type": "string"
          },
          "deleteUser": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
            "description": "Identifies the user who `DELETED` the version."
          },
          "fileCount": {
            "description": "The total number of files associated with the version. This value is calculated after a version is `FINALIZED`.",
            "type": "string"
          },
          "finalizeTime": {
            "description": "The time at which the version was `FINALIZED`.",
            "type": "string"
          },
          "finalizeUser": {
            "$ref": "#/types/google-native:firebasehosting%2Fv1beta1:ActingUserResponse",
            "description": "Identifies the user who `FINALIZED` the version."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels used for extra metadata and/or filtering.",
            "type": "object"
          },
          "name": {
            "description": "The fully-qualified resource name for the version, in the format: sites/ SITE_ID/versions/VERSION_ID This name is provided in the response body when you call [`CreateVersion`](sites.versions/create).",
            "type": "string"
          },
          "status": {
            "description": "The deploy status of the version. For a successful deploy, call [`CreateVersion`](sites.versions/create) to make a new version (`CREATED` status), [upload all desired files](sites.versions/populateFiles) to the version, then [update](sites.versions/patch) the version to the `FINALIZED` status. Note that if you leave the version in the `CREATED` state for more than 12 hours, the system will automatically mark the version as `ABANDONED`. You can also change the status of a version to `DELETED` by calling [`DeleteVersion`](sites.versions/delete).",
            "type": "string"
          },
          "versionBytes": {
            "description": "The total stored bytesize of the version. This value is calculated after a version is `FINALIZED`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "createTime",
          "createUser",
          "deleteTime",
          "deleteUser",
          "fileCount",
          "finalizeTime",
          "finalizeUser",
          "labels",
          "name",
          "status",
          "versionBytes"
        ],
        "type": "object"
      }
    },
    "google-native:firebaseml/v1beta2:getModel": {
      "description": "Gets a model resource.",
      "inputs": {
        "properties": {
          "modelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "modelId"
        ]
      },
      "outputs": {
        "properties": {
          "activeOperations": {
            "description": "Lists operation ids associated with this model whose status is NOT done.",
            "items": {
              "$ref": "#/types/google-native:firebaseml%2Fv1beta2:OperationResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Timestamp when this model was created in Firebase ML.",
            "type": "string"
          },
          "displayName": {
            "description": "The name of the model to create. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores(_) and ASCII digits 0-9. It must start with a letter.",
            "type": "string"
          },
          "etag": {
            "description": "See RFC7232 https://tools.ietf.org/html/rfc7232#section-2.3",
            "type": "string"
          },
          "modelHash": {
            "description": "The model_hash will change if a new file is available for download.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Model. Model names have the form `projects/{project_id}/models/{model_id}` The name is ignored when creating a model.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:firebaseml%2Fv1beta2:ModelStateResponse",
            "description": "State common to all model types. Includes publishing and validation information."
          },
          "tags": {
            "description": "User defined tags which can be used to group/filter models during listing",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tfliteModel": {
            "$ref": "#/types/google-native:firebaseml%2Fv1beta2:TfLiteModelResponse",
            "description": "A TFLite Model"
          },
          "updateTime": {
            "description": "Timestamp when this model was updated in Firebase ML.",
            "type": "string"
          }
        },
        "required": [
          "activeOperations",
          "createTime",
          "displayName",
          "etag",
          "modelHash",
          "name",
          "state",
          "tags",
          "tfliteModel",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:firebaserules/v1:getRelease": {
      "description": "Get a `Release` by name.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "releaseId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "releaseId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time the release was created.",
            "type": "string"
          },
          "name": {
            "description": "Format: `projects/{project_id}/releases/{release_id}`",
            "type": "string"
          },
          "rulesetName": {
            "description": "Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must exist for the `Release` to be created.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time the release was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "name",
          "rulesetName",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:firebaserules/v1:getRuleset": {
      "description": "Get a `Ruleset` by name including the full `Source` contents.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "rulesetId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "rulesetId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time the `Ruleset` was created.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:firebaserules%2Fv1:MetadataResponse",
            "description": "The metadata for this ruleset."
          },
          "name": {
            "description": "Name of the `Ruleset`. The ruleset_id is auto generated by the service. Format: `projects/{project_id}/rulesets/{ruleset_id}`",
            "type": "string"
          },
          "source": {
            "$ref": "#/types/google-native:firebaserules%2Fv1:SourceResponse",
            "description": "`Source` for the `Ruleset`."
          }
        },
        "required": [
          "createTime",
          "metadata",
          "name",
          "source"
        ],
        "type": "object"
      }
    },
    "google-native:firestore/v1:getBackupSchedule": {
      "description": "Gets information about a backup schedule.",
      "inputs": {
        "properties": {
          "backupScheduleId": {
            "type": "string"
          },
          "databaseId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupScheduleId",
          "databaseId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp at which this backup schedule was created and effective since. No backups will be created for this schedule before this time.",
            "type": "string"
          },
          "dailyRecurrence": {
            "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1DailyRecurrenceResponse",
            "description": "For a schedule that runs daily at a specified time."
          },
          "name": {
            "description": "The unique backup schedule identifier across all locations and databases for the given project. This will be auto-assigned. Format is `projects/{project}/databases/{database}/backupSchedules/{backup_schedule}`",
            "type": "string"
          },
          "retention": {
            "description": "At what relative time in the future, compared to its creation time, the backup should be deleted, e.g. keep backups for 7 days.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp at which this backup schedule was most recently updated. When a backup schedule is first created, this is the same as create_time.",
            "type": "string"
          },
          "weeklyRecurrence": {
            "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1WeeklyRecurrenceResponse",
            "description": "For a schedule that runs weekly on a specific day and time."
          }
        },
        "required": [
          "createTime",
          "dailyRecurrence",
          "name",
          "retention",
          "updateTime",
          "weeklyRecurrence"
        ],
        "type": "object"
      }
    },
    "google-native:firestore/v1:getDatabase": {
      "description": "Gets information about a database.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId"
        ]
      },
      "outputs": {
        "properties": {
          "appEngineIntegrationMode": {
            "description": "The App Engine integration mode to use for this database.",
            "type": "string"
          },
          "concurrencyMode": {
            "description": "The concurrency control mode to use for this database.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp at which this database was created. Databases created before 2016 do not populate create_time.",
            "type": "string"
          },
          "deleteProtectionState": {
            "description": "State of delete protection for the database.",
            "type": "string"
          },
          "earliestVersionTime": {
            "description": "The earliest timestamp at which older versions of the data can be read from the database. See [version_retention_period] above; this field is populated with `now - version_retention_period`. This value is continuously updated, and becomes stale the moment it is queried. If you are using this value to recover data, make sure to account for the time from the moment when the value is queried to the moment when you initiate the recovery.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "keyPrefix": {
            "description": "The key_prefix for this database. This key_prefix is used, in combination with the project id (\"~\") to construct the application id that is returned from the Cloud Datastore APIs in Google App Engine first generation runtimes. This value may be empty in which case the appid to use for URL-encoded keys is the project_id (eg: foo instead of v~foo).",
            "type": "string"
          },
          "location": {
            "description": "The location of the database. Available locations are listed at https://cloud.google.com/firestore/docs/locations.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the Database. Format: `projects/{project}/databases/{database}`",
            "type": "string"
          },
          "pointInTimeRecoveryEnablement": {
            "description": "Whether to enable the PITR feature on this database.",
            "type": "string"
          },
          "type": {
            "description": "The type of the database. See https://cloud.google.com/datastore/docs/firestore-or-datastore for information about how to choose.",
            "type": "string"
          },
          "uid": {
            "description": "The system-generated UUID4 for this Database.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp at which this database was most recently updated. Note this only includes updates to the database resource and not data contained by the database.",
            "type": "string"
          },
          "versionRetentionPeriod": {
            "description": "The period during which past versions of data are retained in the database. Any read or query can specify a `read_time` within this window, and will read the state of the database at that time. If the PITR feature is enabled, the retention period is 7 days. Otherwise, the retention period is 1 hour.",
            "type": "string"
          }
        },
        "required": [
          "appEngineIntegrationMode",
          "concurrencyMode",
          "createTime",
          "deleteProtectionState",
          "earliestVersionTime",
          "etag",
          "keyPrefix",
          "location",
          "name",
          "pointInTimeRecoveryEnablement",
          "type",
          "uid",
          "updateTime",
          "versionRetentionPeriod"
        ],
        "type": "object"
      }
    },
    "google-native:firestore/v1:getIndex": {
      "description": "Gets a composite index.",
      "inputs": {
        "properties": {
          "collectionGroupId": {
            "type": "string"
          },
          "databaseId": {
            "type": "string"
          },
          "indexId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionGroupId",
          "databaseId",
          "indexId"
        ]
      },
      "outputs": {
        "properties": {
          "apiScope": {
            "description": "The API scope supported by this index.",
            "type": "string"
          },
          "fields": {
            "description": "The fields supported by this index. For composite indexes, this requires a minimum of 2 and a maximum of 100 fields. The last field entry is always for the field path `__name__`. If, on creation, `__name__` was not specified as the last field, it will be added automatically with the same direction as that of the last field defined. If the final field in a composite index is not directional, the `__name__` will be ordered ASCENDING (unless explicitly specified). For single field indexes, this will always be exactly one entry with a field path equal to the field path of the associated field.",
            "items": {
              "$ref": "#/types/google-native:firestore%2Fv1:GoogleFirestoreAdminV1IndexFieldResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "A server defined name for this index. The form of this name for composite indexes will be: `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{composite_index_id}` For single field indexes, this field will be empty.",
            "type": "string"
          },
          "queryScope": {
            "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection id. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection id as this index.",
            "type": "string"
          },
          "state": {
            "description": "The serving state of the index.",
            "type": "string"
          }
        },
        "required": [
          "apiScope",
          "fields",
          "name",
          "queryScope",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:firestore/v1beta1:getIndex": {
      "description": "Gets an index.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "indexId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "indexId"
        ]
      },
      "outputs": {
        "properties": {
          "collectionId": {
            "description": "The collection ID to which this index applies. Required.",
            "type": "string"
          },
          "fields": {
            "description": "The fields to index.",
            "items": {
              "$ref": "#/types/google-native:firestore%2Fv1beta1:GoogleFirestoreAdminV1beta1IndexFieldResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "The resource name of the index. Output only.",
            "type": "string"
          },
          "state": {
            "description": "The state of the index. Output only.",
            "type": "string"
          }
        },
        "required": [
          "collectionId",
          "fields",
          "name",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:firestore/v1beta2:getIndex": {
      "description": "Gets a composite index.",
      "inputs": {
        "properties": {
          "collectionGroupId": {
            "type": "string"
          },
          "databaseId": {
            "type": "string"
          },
          "indexId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectionGroupId",
          "databaseId",
          "indexId"
        ]
      },
      "outputs": {
        "properties": {
          "fields": {
            "description": "The fields supported by this index. For composite indexes, this is always 2 or more fields. The last field entry is always for the field path `__name__`. If, on creation, `__name__` was not specified as the last field, it will be added automatically with the same direction as that of the last field defined. If the final field in a composite index is not directional, the `__name__` will be ordered ASCENDING (unless explicitly specified). For single field indexes, this will always be exactly one entry with a field path equal to the field path of the associated field.",
            "items": {
              "$ref": "#/types/google-native:firestore%2Fv1beta2:GoogleFirestoreAdminV1beta2IndexFieldResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "A server defined name for this index. The form of this name for composite indexes will be: `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{composite_index_id}` For single field indexes, this field will be empty.",
            "type": "string"
          },
          "queryScope": {
            "description": "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection id. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection id as this index.",
            "type": "string"
          },
          "state": {
            "description": "The serving state of the index.",
            "type": "string"
          }
        },
        "required": [
          "fields",
          "name",
          "queryScope",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:gameservices/v1:getGameServerDeploymentIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "gameServerDeploymentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gameServerDeploymentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gameservices%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gameservices%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.",
            "items": {
              "$ref": "#/types/google-native:gameservices%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gameservices/v1beta:getGameServerDeploymentIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "gameServerDeploymentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gameServerDeploymentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gameservices%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gameservices%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "rules": {
            "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.",
            "items": {
              "$ref": "#/types/google-native:gameservices%2Fv1beta:RuleResponse"
            },
            "type": "array"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "rules",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:genomics/v1alpha2:getPipeline": {
      "description": "Retrieves a pipeline based on ID. Caller must have READ permission to the project.",
      "inputs": {
        "properties": {
          "pipelineId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "pipelineId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "User-specified description.",
            "type": "string"
          },
          "docker": {
            "$ref": "#/types/google-native:genomics%2Fv1alpha2:DockerExecutorResponse",
            "description": "Specifies the docker run information."
          },
          "inputParameters": {
            "description": "Input parameters of the pipeline.",
            "items": {
              "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineParameterResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "A user specified pipeline name that does not have to be unique. This name can be used for filtering Pipelines in ListPipelines.",
            "type": "string"
          },
          "outputParameters": {
            "description": "Output parameters of the pipeline.",
            "items": {
              "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineParameterResponse"
            },
            "type": "array"
          },
          "pipelineId": {
            "description": "Unique pipeline id that is generated by the service when CreatePipeline is called. Cannot be specified in the Pipeline used in the CreatePipelineRequest, and will be populated in the response to CreatePipeline and all subsequent Get and List calls. Indicates that the service has registered this pipeline.",
            "type": "string"
          },
          "project": {
            "description": "The project in which to create the pipeline. The caller must have WRITE access.",
            "type": "string"
          },
          "resources": {
            "$ref": "#/types/google-native:genomics%2Fv1alpha2:PipelineResourcesResponse",
            "description": "Specifies resource requirements for the pipeline run. Required fields: * minimumCpuCores * minimumRamGb"
          }
        },
        "required": [
          "description",
          "docker",
          "inputParameters",
          "name",
          "outputParameters",
          "pipelineId",
          "project",
          "resources"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getBackup": {
      "description": "Retrieve the details of a single Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "backupPlanId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "backupPlanId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "allNamespaces": {
            "description": "If True, all namespaces were included in the Backup.",
            "type": "boolean"
          },
          "clusterMetadata": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:ClusterMetadataResponse",
            "description": "Information about the GKE cluster from which this Backup was created."
          },
          "completeTime": {
            "description": "Completion time of the Backup",
            "type": "string"
          },
          "configBackupSizeBytes": {
            "description": "The size of the config backup in bytes.",
            "type": "string"
          },
          "containsSecrets": {
            "description": "Whether or not the Backup contains Kubernetes Secrets. Controlled by the parent BackupPlan's include_secrets value.",
            "type": "boolean"
          },
          "containsVolumeData": {
            "description": "Whether or not the Backup contains volume data. Controlled by the parent BackupPlan's include_volume_data value.",
            "type": "boolean"
          },
          "createTime": {
            "description": "The timestamp when this Backup resource was created.",
            "type": "string"
          },
          "deleteLockDays": {
            "description": "Optional. Minimum age for this Backup (in days). If this field is set to a non-zero value, the Backup will be \"locked\" against deletion (either manual or automatic deletion) for the number of days provided (measured from the creation time of the Backup). MUST be an integer value between 0-90 (inclusive). Defaults to parent BackupPlan's backup_delete_lock_days setting and may only be increased (either at creation time or in a subsequent update).",
            "type": "integer"
          },
          "deleteLockExpireTime": {
            "description": "The time at which an existing delete lock will expire for this backup (calculated from create_time + delete_lock_days).",
            "type": "string"
          },
          "description": {
            "description": "Optional. User specified descriptive string for this Backup.",
            "type": "string"
          },
          "encryptionKey": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:EncryptionKeyResponse",
            "description": "The customer managed encryption key that was used to encrypt the Backup's artifacts. Inherited from the parent BackupPlan's encryption_key value."
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a backup from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform backup updates in order to avoid race conditions: An `etag` is returned in the response to `GetBackup`, and systems are expected to put that etag in the request to `UpdateBackup` or `DeleteBackup` to ensure that their change will be applied to the same version of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. A set of custom labels supplied by user.",
            "type": "object"
          },
          "manual": {
            "description": "This flag indicates whether this Backup resource was created manually by a user or via a schedule in the BackupPlan. A value of True means that the Backup was created manually.",
            "type": "boolean"
          },
          "name": {
            "description": "The fully qualified name of the Backup. `projects/*/locations/*/backupPlans/*/backups/*`",
            "type": "string"
          },
          "podCount": {
            "description": "The total number of Kubernetes Pods contained in the Backup.",
            "type": "integer"
          },
          "resourceCount": {
            "description": "The total number of Kubernetes resources included in the Backup.",
            "type": "integer"
          },
          "retainDays": {
            "description": "Optional. The age (in days) after which this Backup will be automatically deleted. Must be an integer value \u003e= 0: - If 0, no automatic deletion will occur for this Backup. - If not 0, this must be \u003e= delete_lock_days and \u003c= 365. Once a Backup is created, this value may only be increased. Defaults to the parent BackupPlan's backup_retain_days value.",
            "type": "integer"
          },
          "retainExpireTime": {
            "description": "The time at which this Backup will be automatically deleted (calculated from create_time + retain_days).",
            "type": "string"
          },
          "selectedApplications": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacedNamesResponse",
            "description": "If set, the list of ProtectedApplications whose resources were included in the Backup."
          },
          "selectedNamespaces": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:NamespacesResponse",
            "description": "If set, the list of namespaces that were included in the Backup."
          },
          "sizeBytes": {
            "description": "The total size of the Backup in bytes = config backup size + sum(volume backup sizes)",
            "type": "string"
          },
          "state": {
            "description": "Current state of the Backup",
            "type": "string"
          },
          "stateReason": {
            "description": "Human-readable description of why the backup is in the current `state`.",
            "type": "string"
          },
          "uid": {
            "description": "Server generated global unique identifier of [UUID4](https://en.wikipedia.org/wiki/Universally_unique_identifier)",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when this Backup resource was last updated.",
            "type": "string"
          },
          "volumeCount": {
            "description": "The total number of volume backups contained in the Backup.",
            "type": "integer"
          }
        },
        "required": [
          "allNamespaces",
          "clusterMetadata",
          "completeTime",
          "configBackupSizeBytes",
          "containsSecrets",
          "containsVolumeData",
          "createTime",
          "deleteLockDays",
          "deleteLockExpireTime",
          "description",
          "encryptionKey",
          "etag",
          "labels",
          "manual",
          "name",
          "podCount",
          "resourceCount",
          "retainDays",
          "retainExpireTime",
          "selectedApplications",
          "selectedNamespaces",
          "sizeBytes",
          "state",
          "stateReason",
          "uid",
          "updateTime",
          "volumeCount"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getBackupPlan": {
      "description": "Retrieve the details of a single BackupPlan.",
      "inputs": {
        "properties": {
          "backupPlanId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupPlanId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "backupConfig": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:BackupConfigResponse",
            "description": "Optional. Defines the configuration of Backups created via this BackupPlan."
          },
          "backupSchedule": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:ScheduleResponse",
            "description": "Optional. Defines a schedule for automatic Backup creation via this BackupPlan."
          },
          "cluster": {
            "description": "Immutable. The source cluster from which Backups will be created via this BackupPlan. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*`",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when this BackupPlan resource was created.",
            "type": "string"
          },
          "deactivated": {
            "description": "Optional. This flag indicates whether this BackupPlan has been deactivated. Setting this field to True locks the BackupPlan such that no further updates will be allowed (except deletes), including the deactivated field itself. It also prevents any new Backups from being created via this BackupPlan (including scheduled Backups). Default: False",
            "type": "boolean"
          },
          "description": {
            "description": "Optional. User specified descriptive string for this BackupPlan.",
            "type": "string"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a backup plan from overwriting each other. It is strongly suggested that systems make use of the 'etag' in the read-modify-write cycle to perform BackupPlan updates in order to avoid race conditions: An `etag` is returned in the response to `GetBackupPlan`, and systems are expected to put that etag in the request to `UpdateBackupPlan` or `DeleteBackupPlan` to ensure that their change will be applied to the same version of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. A set of custom labels supplied by user.",
            "type": "object"
          },
          "name": {
            "description": "The full name of the BackupPlan resource. Format: `projects/*/locations/*/backupPlans/*`",
            "type": "string"
          },
          "protectedPodCount": {
            "description": "The number of Kubernetes Pods backed up in the last successful Backup created via this BackupPlan.",
            "type": "integer"
          },
          "retentionPolicy": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:RetentionPolicyResponse",
            "description": "Optional. RetentionPolicy governs lifecycle of Backups created under this plan."
          },
          "state": {
            "description": "State of the BackupPlan. This State field reflects the various stages a BackupPlan can be in during the Create operation. It will be set to \"DEACTIVATED\" if the BackupPlan is deactivated on an Update",
            "type": "string"
          },
          "stateReason": {
            "description": "Human-readable description of why BackupPlan is in the current `state`",
            "type": "string"
          },
          "uid": {
            "description": "Server generated global unique identifier of [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when this BackupPlan resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "backupConfig",
          "backupSchedule",
          "cluster",
          "createTime",
          "deactivated",
          "description",
          "etag",
          "labels",
          "name",
          "protectedPodCount",
          "retentionPolicy",
          "state",
          "stateReason",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getBackupPlanBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "backupPlanId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "backupPlanId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getBackupPlanBackupVolumeBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "backupPlanId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "volumeBackupId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "backupPlanId",
          "location",
          "volumeBackupId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getBackupPlanIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupPlanId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupPlanId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getRestore": {
      "description": "Retrieves the details of a single Restore.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "restoreId": {
            "type": "string"
          },
          "restorePlanId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "restoreId",
          "restorePlanId"
        ]
      },
      "outputs": {
        "properties": {
          "backup": {
            "description": "Immutable. A reference to the Backup used as the source from which this Restore will restore. Note that this Backup must be a sub-resource of the RestorePlan's backup_plan. Format: `projects/*/locations/*/backupPlans/*/backups/*`.",
            "type": "string"
          },
          "cluster": {
            "description": "The target cluster into which this Restore will restore data. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*` Inherited from parent RestorePlan's cluster value.",
            "type": "string"
          },
          "completeTime": {
            "description": "Timestamp of when the restore operation completed.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when this Restore resource was created.",
            "type": "string"
          },
          "description": {
            "description": "User specified descriptive string for this Restore.",
            "type": "string"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a restore from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform restore updates in order to avoid race conditions: An `etag` is returned in the response to `GetRestore`, and systems are expected to put that etag in the request to `UpdateRestore` or `DeleteRestore` to ensure that their change will be applied to the same version of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A set of custom labels supplied by user.",
            "type": "object"
          },
          "name": {
            "description": "The full name of the Restore resource. Format: `projects/*/locations/*/restorePlans/*/restores/*`",
            "type": "string"
          },
          "resourcesExcludedCount": {
            "description": "Number of resources excluded during the restore execution.",
            "type": "integer"
          },
          "resourcesFailedCount": {
            "description": "Number of resources that failed to be restored during the restore execution.",
            "type": "integer"
          },
          "resourcesRestoredCount": {
            "description": "Number of resources restored during the restore execution.",
            "type": "integer"
          },
          "restoreConfig": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:RestoreConfigResponse",
            "description": "Configuration of the Restore. Inherited from parent RestorePlan's restore_config."
          },
          "state": {
            "description": "The current state of the Restore.",
            "type": "string"
          },
          "stateReason": {
            "description": "Human-readable description of why the Restore is in its current state.",
            "type": "string"
          },
          "uid": {
            "description": "Server generated global unique identifier of [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when this Restore resource was last updated.",
            "type": "string"
          },
          "volumesRestoredCount": {
            "description": "Number of volumes restored during the restore execution.",
            "type": "integer"
          }
        },
        "required": [
          "backup",
          "cluster",
          "completeTime",
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "resourcesExcludedCount",
          "resourcesFailedCount",
          "resourcesRestoredCount",
          "restoreConfig",
          "state",
          "stateReason",
          "uid",
          "updateTime",
          "volumesRestoredCount"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getRestorePlan": {
      "description": "Retrieve the details of a single RestorePlan.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "restorePlanId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "restorePlanId"
        ]
      },
      "outputs": {
        "properties": {
          "backupPlan": {
            "description": "Immutable. A reference to the BackupPlan from which Backups may be used as the source for Restores created via this RestorePlan. Format: `projects/*/locations/*/backupPlans/*`.",
            "type": "string"
          },
          "cluster": {
            "description": "Immutable. The target cluster into which Restores created via this RestorePlan will restore data. NOTE: the cluster's region must be the same as the RestorePlan. Valid formats: - `projects/*/locations/*/clusters/*` - `projects/*/zones/*/clusters/*`",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when this RestorePlan resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User specified descriptive string for this RestorePlan.",
            "type": "string"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a restore from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform restore updates in order to avoid race conditions: An `etag` is returned in the response to `GetRestorePlan`, and systems are expected to put that etag in the request to `UpdateRestorePlan` or `DeleteRestorePlan` to ensure that their change will be applied to the same version of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. A set of custom labels supplied by user.",
            "type": "object"
          },
          "name": {
            "description": "The full name of the RestorePlan resource. Format: `projects/*/locations/*/restorePlans/*`.",
            "type": "string"
          },
          "restoreConfig": {
            "$ref": "#/types/google-native:gkebackup%2Fv1:RestoreConfigResponse",
            "description": "Configuration of Restores created via this RestorePlan."
          },
          "state": {
            "description": "State of the RestorePlan. This State field reflects the various stages a RestorePlan can be in during the Create operation.",
            "type": "string"
          },
          "stateReason": {
            "description": "Human-readable description of why RestorePlan is in the current `state`",
            "type": "string"
          },
          "uid": {
            "description": "Server generated global unique identifier of [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when this RestorePlan resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "backupPlan",
          "cluster",
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "restoreConfig",
          "state",
          "stateReason",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getRestorePlanIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "restorePlanId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "restorePlanId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getRestorePlanRestoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "restoreId": {
            "type": "string"
          },
          "restorePlanId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "restoreId",
          "restorePlanId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkebackup/v1:getRestorePlanRestoreVolumeRestoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "restoreId": {
            "type": "string"
          },
          "restorePlanId": {
            "type": "string"
          },
          "volumeRestoreId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "restoreId",
          "restorePlanId",
          "volumeRestoreId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkebackup%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getBinding": {
      "description": "Returns the details of a MembershipBinding.",
      "inputs": {
        "properties": {
          "bindingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bindingId",
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the membership binding was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the membership binding was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this MembershipBinding.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`",
            "type": "string"
          },
          "scope": {
            "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1:MembershipBindingLifecycleStateResponse",
            "description": "State of the membership binding resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all membershipbinding resources. If a membershipbinding resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the membership binding was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "scope",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getFeature": {
      "description": "Gets details of a single Feature.",
      "inputs": {
        "properties": {
          "featureId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the Feature resource was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the Feature resource was deleted.",
            "type": "string"
          },
          "fleetDefaultMemberConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1:CommonFleetDefaultMemberConfigSpecResponse",
            "description": "Optional. Feature configuration applicable to all memberships of the fleet."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this Feature.",
            "type": "object"
          },
          "membershipSpecs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.",
            "type": "object"
          },
          "membershipStates": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature's project number.",
            "type": "object"
          },
          "name": {
            "description": "The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`.",
            "type": "string"
          },
          "resourceState": {
            "$ref": "#/types/google-native:gkehub%2Fv1:FeatureResourceStateResponse",
            "description": "State of the Feature resource itself."
          },
          "scopeSpecs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.",
            "type": "object"
          },
          "scopeStates": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Scope-specific Feature status. If this Feature does report any per-Scope status, this field may be unused. The keys indicate which Scope the state is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project.",
            "type": "object"
          },
          "spec": {
            "$ref": "#/types/google-native:gkehub%2Fv1:CommonFeatureSpecResponse",
            "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1:CommonFeatureStateResponse",
            "description": "The Hub-wide Feature state."
          },
          "updateTime": {
            "description": "When the Feature resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "fleetDefaultMemberConfig",
          "labels",
          "membershipSpecs",
          "membershipStates",
          "name",
          "resourceState",
          "scopeSpecs",
          "scopeStates",
          "spec",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getFeatureIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "featureId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getFleet": {
      "description": "Returns the details of a fleet.",
      "inputs": {
        "properties": {
          "fleetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "fleetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the Fleet was created.",
            "type": "string"
          },
          "defaultClusterConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1:DefaultClusterConfigResponse",
            "description": "Optional. The default cluster configurations to apply across the fleet."
          },
          "deleteTime": {
            "description": "When the Fleet was deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Fleet.",
            "type": "object"
          },
          "name": {
            "description": "The full, unique resource name of this fleet in the format of `projects/{project}/locations/{location}/fleets/{fleet}`. Each Google Cloud project can have at most one fleet resource, named \"default\".",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1:FleetLifecycleStateResponse",
            "description": "State of the namespace resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all Fleet resources. If a Fleet resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the Fleet was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "defaultClusterConfig",
          "deleteTime",
          "displayName",
          "labels",
          "name",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getMembership": {
      "description": "Gets the details of a Membership.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "authority": {
            "$ref": "#/types/google-native:gkehub%2Fv1:AuthorityResponse",
            "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
          },
          "createTime": {
            "description": "When the Membership was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the Membership was deleted.",
            "type": "string"
          },
          "description": {
            "description": "Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*` This field is present for legacy purposes.",
            "type": "string"
          },
          "endpoint": {
            "$ref": "#/types/google-native:gkehub%2Fv1:MembershipEndpointResponse",
            "description": "Optional. Endpoint information to reach this member."
          },
          "externalId": {
            "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this membership.",
            "type": "object"
          },
          "lastConnectionTime": {
            "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset.",
            "type": "string"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1:MonitoringConfigResponse",
            "description": "Optional. The monitoring config information for this membership."
          },
          "name": {
            "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1:MembershipStateResponse",
            "description": "State of the Membership resource."
          },
          "uniqueId": {
            "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the Membership was last updated.",
            "type": "string"
          }
        },
        "required": [
          "authority",
          "createTime",
          "deleteTime",
          "description",
          "endpoint",
          "externalId",
          "labels",
          "lastConnectionTime",
          "monitoringConfig",
          "name",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getMembershipIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getNamespace": {
      "description": "Returns the details of a fleet namespace.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the namespace was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the namespace was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Namespace.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`",
            "type": "string"
          },
          "namespaceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant.",
            "type": "object"
          },
          "scope": {
            "description": "Scope associated with the namespace",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1:NamespaceLifecycleStateResponse",
            "description": "State of the namespace resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all namespace resources. If a namespace resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the namespace was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "namespaceLabels",
          "scope",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getRbacrolebinding": {
      "description": "Returns the details of a Scope RBACRoleBinding.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "rbacrolebindingId": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "rbacrolebindingId",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the rbacrolebinding was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the rbacrolebinding was deleted.",
            "type": "string"
          },
          "group": {
            "description": "group is the group, as seen by the kubernetes cluster.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this RBACRolebinding.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`",
            "type": "string"
          },
          "role": {
            "$ref": "#/types/google-native:gkehub%2Fv1:RoleResponse",
            "description": "Role to bind to the principal"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1:RBACRoleBindingLifecycleStateResponse",
            "description": "State of the rbacrolebinding resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the rbacrolebinding was last updated.",
            "type": "string"
          },
          "user": {
            "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\"",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "group",
          "labels",
          "name",
          "role",
          "state",
          "uid",
          "updateTime",
          "user"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getScope": {
      "description": "Returns the details of a Scope.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the scope was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the scope was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Scope.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`",
            "type": "string"
          },
          "namespaceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant.",
            "type": "object"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1:ScopeLifecycleStateResponse",
            "description": "State of the scope resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all scope resources. If a scope resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the scope was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "namespaceLabels",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1:getScopeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha2:getMembership": {
      "description": "Gets the details of a Membership.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "authority": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:AuthorityResponse",
            "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
          },
          "createTime": {
            "description": "When the Membership was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the Membership was deleted.",
            "type": "string"
          },
          "description": {
            "description": "Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*` This field is present for legacy purposes.",
            "type": "string"
          },
          "endpoint": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MembershipEndpointResponse",
            "description": "Optional. Endpoint information to reach this member."
          },
          "externalId": {
            "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. For GKE clusters, external_id is managed by the Hub API and updates will be ignored. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object.",
            "type": "string"
          },
          "infrastructureType": {
            "description": "Optional. The infrastructure type this Membership is running on.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this membership.",
            "type": "object"
          },
          "lastConnectionTime": {
            "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset.",
            "type": "string"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MonitoringConfigResponse",
            "description": "Optional. The monitoring config information for this membership."
          },
          "name": {
            "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha2:MembershipStateResponse",
            "description": "State of the Membership resource."
          },
          "uniqueId": {
            "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the Membership was last updated.",
            "type": "string"
          }
        },
        "required": [
          "authority",
          "createTime",
          "deleteTime",
          "description",
          "endpoint",
          "externalId",
          "infrastructureType",
          "labels",
          "lastConnectionTime",
          "monitoringConfig",
          "name",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha2:getMembershipIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1alpha2:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1alpha2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getBinding": {
      "description": "Returns the details of a MembershipBinding.",
      "inputs": {
        "properties": {
          "bindingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bindingId",
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the membership binding was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the membership binding was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this MembershipBinding.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`",
            "type": "string"
          },
          "scope": {
            "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipBindingLifecycleStateResponse",
            "description": "State of the membership binding resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all membershipbinding resources. If a membershipbinding resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the membership binding was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "scope",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getFeature": {
      "description": "Gets details of a single Feature.",
      "inputs": {
        "properties": {
          "featureId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the Feature resource was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the Feature resource was deleted.",
            "type": "string"
          },
          "fleetDefaultMemberConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:CommonFleetDefaultMemberConfigSpecResponse",
            "description": "Optional. Feature configuration applicable to all memberships of the fleet."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this Feature.",
            "type": "object"
          },
          "membershipSpecs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.",
            "type": "object"
          },
          "membershipStates": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature's project number.",
            "type": "object"
          },
          "name": {
            "description": "The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`.",
            "type": "string"
          },
          "resourceState": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:FeatureResourceStateResponse",
            "description": "State of the Feature resource itself."
          },
          "scopeSpecs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.",
            "type": "object"
          },
          "scopeStates": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Scope-specific Feature status. If this Feature does report any per-Scope status, this field may be unused. The keys indicate which Scope the state is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project.",
            "type": "object"
          },
          "spec": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:CommonFeatureSpecResponse",
            "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:CommonFeatureStateResponse",
            "description": "The Hub-wide Feature state."
          },
          "updateTime": {
            "description": "When the Feature resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "fleetDefaultMemberConfig",
          "labels",
          "membershipSpecs",
          "membershipStates",
          "name",
          "resourceState",
          "scopeSpecs",
          "scopeStates",
          "spec",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getFeatureIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "featureId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getFleet": {
      "description": "Returns the details of a fleet.",
      "inputs": {
        "properties": {
          "fleetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "fleetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the Fleet was created.",
            "type": "string"
          },
          "defaultClusterConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:DefaultClusterConfigResponse",
            "description": "Optional. The default cluster configurations to apply across the fleet."
          },
          "deleteTime": {
            "description": "When the Fleet was deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Fleet.",
            "type": "object"
          },
          "name": {
            "description": "The full, unique resource name of this fleet in the format of `projects/{project}/locations/{location}/fleets/{fleet}`. Each Google Cloud project can have at most one fleet resource, named \"default\".",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:FleetLifecycleStateResponse",
            "description": "State of the namespace resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all Fleet resources. If a Fleet resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the Fleet was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "defaultClusterConfig",
          "deleteTime",
          "displayName",
          "labels",
          "name",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getMembership": {
      "description": "Gets the details of a Membership.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "authority": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuthorityResponse",
            "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
          },
          "createTime": {
            "description": "When the Membership was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the Membership was deleted.",
            "type": "string"
          },
          "description": {
            "description": "Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*` This field is present for legacy purposes.",
            "type": "string"
          },
          "endpoint": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipEndpointResponse",
            "description": "Optional. Endpoint information to reach this member."
          },
          "externalId": {
            "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this membership.",
            "type": "object"
          },
          "lastConnectionTime": {
            "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset.",
            "type": "string"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:MonitoringConfigResponse",
            "description": "Optional. The monitoring config information for this membership."
          },
          "name": {
            "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:MembershipStateResponse",
            "description": "State of the Membership resource."
          },
          "uniqueId": {
            "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the Membership was last updated.",
            "type": "string"
          }
        },
        "required": [
          "authority",
          "createTime",
          "deleteTime",
          "description",
          "endpoint",
          "externalId",
          "labels",
          "lastConnectionTime",
          "monitoringConfig",
          "name",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getMembershipIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getMembershipRbacRoleBinding": {
      "description": "Returns the details of a Membership RBACRoleBinding.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "rbacrolebindingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId",
          "rbacrolebindingId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the rbacrolebinding was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the rbacrolebinding was deleted.",
            "type": "string"
          },
          "group": {
            "description": "group is the group, as seen by the kubernetes cluster.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this RBACRolebinding.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`",
            "type": "string"
          },
          "role": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:RoleResponse",
            "description": "Role to bind to the principal"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:RBACRoleBindingLifecycleStateResponse",
            "description": "State of the rbacrolebinding resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the rbacrolebinding was last updated.",
            "type": "string"
          },
          "user": {
            "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\"",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "group",
          "labels",
          "name",
          "role",
          "state",
          "uid",
          "updateTime",
          "user"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getNamespace": {
      "description": "Returns the details of a fleet namespace.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the namespace was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the namespace was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Namespace.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`",
            "type": "string"
          },
          "namespaceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant.",
            "type": "object"
          },
          "scope": {
            "description": "Scope associated with the namespace",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:NamespaceLifecycleStateResponse",
            "description": "State of the namespace resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all namespace resources. If a namespace resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the namespace was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "namespaceLabels",
          "scope",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getScope": {
      "description": "Returns the details of a Scope.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the scope was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the scope was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Scope.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`",
            "type": "string"
          },
          "namespaceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant.",
            "type": "object"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:ScopeLifecycleStateResponse",
            "description": "State of the scope resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all scope resources. If a scope resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the scope was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "namespaceLabels",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getScopeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1alpha:getScopeRbacRoleBinding": {
      "description": "Returns the details of a Scope RBACRoleBinding.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "rbacrolebindingId": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "rbacrolebindingId",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the rbacrolebinding was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the rbacrolebinding was deleted.",
            "type": "string"
          },
          "group": {
            "description": "group is the group, as seen by the kubernetes cluster.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this RBACRolebinding.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`",
            "type": "string"
          },
          "role": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:RoleResponse",
            "description": "Role to bind to the principal"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1alpha:RBACRoleBindingLifecycleStateResponse",
            "description": "State of the rbacrolebinding resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the rbacrolebinding was last updated.",
            "type": "string"
          },
          "user": {
            "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\"",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "group",
          "labels",
          "name",
          "role",
          "state",
          "uid",
          "updateTime",
          "user"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta1:getMembership": {
      "description": "Gets the details of a Membership.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "authority": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:AuthorityResponse",
            "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
          },
          "createTime": {
            "description": "When the Membership was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the Membership was deleted.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*`",
            "type": "string"
          },
          "endpoint": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:MembershipEndpointResponse",
            "description": "Optional. Endpoint information to reach this member."
          },
          "externalId": {
            "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. For GKE clusters, external_id is managed by the Hub API and updates will be ignored. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object.",
            "type": "string"
          },
          "infrastructureType": {
            "description": "Optional. The infrastructure type this Membership is running on.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. GCP labels for this membership.",
            "type": "object"
          },
          "lastConnectionTime": {
            "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset.",
            "type": "string"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:MonitoringConfigResponse",
            "description": "Optional. The monitoring config information for this membership."
          },
          "name": {
            "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta1:MembershipStateResponse",
            "description": "State of the Membership resource."
          },
          "uniqueId": {
            "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the Membership was last updated.",
            "type": "string"
          }
        },
        "required": [
          "authority",
          "createTime",
          "deleteTime",
          "description",
          "endpoint",
          "externalId",
          "infrastructureType",
          "labels",
          "lastConnectionTime",
          "monitoringConfig",
          "name",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta1:getMembershipIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getBinding": {
      "description": "Returns the details of a MembershipBinding.",
      "inputs": {
        "properties": {
          "bindingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bindingId",
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the membership binding was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the membership binding was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this MembershipBinding.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the membershipbinding itself `projects/{project}/locations/{location}/memberships/{membership}/bindings/{membershipbinding}`",
            "type": "string"
          },
          "scope": {
            "description": "A Scope resource name in the format `projects/*/locations/*/scopes/*`.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:MembershipBindingLifecycleStateResponse",
            "description": "State of the membership binding resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all membershipbinding resources. If a membershipbinding resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the membership binding was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "scope",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getFeature": {
      "description": "Gets details of a single Feature.",
      "inputs": {
        "properties": {
          "featureId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the Feature resource was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the Feature resource was deleted.",
            "type": "string"
          },
          "fleetDefaultMemberConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:CommonFleetDefaultMemberConfigSpecResponse",
            "description": "Optional. Feature configuration applicable to all memberships of the fleet."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels for this Feature.",
            "type": "object"
          },
          "membershipSpecs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.",
            "type": "object"
          },
          "membershipStates": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: `projects/{p}/locations/{l}/memberships/{m}` Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature's project number.",
            "type": "object"
          },
          "name": {
            "description": "The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`.",
            "type": "string"
          },
          "resourceState": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:FeatureResourceStateResponse",
            "description": "State of the Feature resource itself."
          },
          "scopeSpecs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Scope-specific configuration for this Feature. If this Feature does not support any per-Scope configuration, this field may be unused. The keys indicate which Scope the configuration is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Scope is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.",
            "type": "object"
          },
          "scopeStates": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Scope-specific Feature status. If this Feature does report any per-Scope status, this field may be unused. The keys indicate which Scope the state is for, in the form: `projects/{p}/locations/global/scopes/{s}` Where {p} is the project, {s} is a valid Scope in this project. {p} WILL match the Feature's project.",
            "type": "object"
          },
          "spec": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:CommonFeatureSpecResponse",
            "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused."
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:CommonFeatureStateResponse",
            "description": "The Hub-wide Feature state."
          },
          "updateTime": {
            "description": "When the Feature resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "fleetDefaultMemberConfig",
          "labels",
          "membershipSpecs",
          "membershipStates",
          "name",
          "resourceState",
          "scopeSpecs",
          "scopeStates",
          "spec",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getFeatureIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "featureId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "featureId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getFleet": {
      "description": "Returns the details of a fleet.",
      "inputs": {
        "properties": {
          "fleetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "fleetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the Fleet was created.",
            "type": "string"
          },
          "defaultClusterConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:DefaultClusterConfigResponse",
            "description": "Optional. The default cluster configurations to apply across the fleet."
          },
          "deleteTime": {
            "description": "When the Fleet was deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. A user-assigned display name of the Fleet. When present, it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `Production Fleet`",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Fleet.",
            "type": "object"
          },
          "name": {
            "description": "The full, unique resource name of this fleet in the format of `projects/{project}/locations/{location}/fleets/{fleet}`. Each Google Cloud project can have at most one fleet resource, named \"default\".",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:FleetLifecycleStateResponse",
            "description": "State of the namespace resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all Fleet resources. If a Fleet resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the Fleet was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "defaultClusterConfig",
          "deleteTime",
          "displayName",
          "labels",
          "name",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getMembership": {
      "description": "Gets the details of a Membership.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "authority": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:AuthorityResponse",
            "description": "Optional. How to identify workloads from this Membership. See the documentation on Workload Identity for more details: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity"
          },
          "createTime": {
            "description": "When the Membership was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the Membership was deleted.",
            "type": "string"
          },
          "description": {
            "description": "Description of this membership, limited to 63 characters. Must match the regex: `a-zA-Z0-9*` This field is present for legacy purposes.",
            "type": "string"
          },
          "endpoint": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:MembershipEndpointResponse",
            "description": "Optional. Endpoint information to reach this member."
          },
          "externalId": {
            "description": "Optional. An externally-generated and managed ID for this Membership. This ID may be modified after creation, but this is not recommended. The ID must match the regex: `a-zA-Z0-9*` If this Membership represents a Kubernetes cluster, this value should be set to the UID of the `kube-system` namespace object.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this membership.",
            "type": "object"
          },
          "lastConnectionTime": {
            "description": "For clusters using Connect, the timestamp of the most recent connection established with Google Cloud. This time is updated every several minutes, not continuously. For clusters that do not use GKE Connect, or that have never connected successfully, this field will be unset.",
            "type": "string"
          },
          "monitoringConfig": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:MonitoringConfigResponse",
            "description": "Optional. The monitoring config information for this membership."
          },
          "name": {
            "description": "The full, unique name of this Membership resource in the format `projects/*/locations/*/memberships/{membership_id}`, set during creation. `membership_id` must be a valid RFC 1123 compliant DNS label: 1. At most 63 characters in length 2. It must consist of lower case alphanumeric characters or `-` 3. It must start and end with an alphanumeric character Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`, with a maximum length of 63 characters.",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:MembershipStateResponse",
            "description": "State of the Membership resource."
          },
          "uniqueId": {
            "description": "Google-generated UUID for this resource. This is unique across all Membership resources. If a Membership resource is deleted and another resource with the same name is created, it gets a different unique_id.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the Membership was last updated.",
            "type": "string"
          }
        },
        "required": [
          "authority",
          "createTime",
          "deleteTime",
          "description",
          "endpoint",
          "externalId",
          "labels",
          "lastConnectionTime",
          "monitoringConfig",
          "name",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getMembershipIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getMembershipRbacRoleBinding": {
      "description": "Returns the details of a Membership RBACRoleBinding.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "membershipId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "rbacrolebindingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "membershipId",
          "rbacrolebindingId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the rbacrolebinding was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the rbacrolebinding was deleted.",
            "type": "string"
          },
          "group": {
            "description": "group is the group, as seen by the kubernetes cluster.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this RBACRolebinding.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`",
            "type": "string"
          },
          "role": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:RoleResponse",
            "description": "Role to bind to the principal"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:RBACRoleBindingLifecycleStateResponse",
            "description": "State of the rbacrolebinding resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the rbacrolebinding was last updated.",
            "type": "string"
          },
          "user": {
            "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\"",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "group",
          "labels",
          "name",
          "role",
          "state",
          "uid",
          "updateTime",
          "user"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getNamespace": {
      "description": "Returns the details of a fleet namespace.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the namespace was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the namespace was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Namespace.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the namespace `projects/{project}/locations/{location}/namespaces/{namespace}`",
            "type": "string"
          },
          "namespaceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Namespace-level cluster namespace labels. These labels are applied to the related namespace of the member clusters bound to the parent Scope. Scope-level labels (`namespace_labels` in the Fleet Scope resource) take precedence over Namespace-level labels if they share a key. Keys and values must be Kubernetes-conformant.",
            "type": "object"
          },
          "scope": {
            "description": "Scope associated with the namespace",
            "type": "string"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:NamespaceLifecycleStateResponse",
            "description": "State of the namespace resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all namespace resources. If a namespace resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the namespace was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "namespaceLabels",
          "scope",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getScope": {
      "description": "Returns the details of a Scope.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the scope was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the scope was deleted.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this Scope.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the scope `projects/{project}/locations/{location}/scopes/{scope}`",
            "type": "string"
          },
          "namespaceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Scope-level cluster namespace labels. For the member clusters bound to the Scope, these labels are applied to each namespace under the Scope. Scope-level labels take precedence over Namespace-level labels (`namespace_labels` in the Fleet Namespace resource) if they share a key. Keys and values must be Kubernetes-conformant.",
            "type": "object"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:ScopeLifecycleStateResponse",
            "description": "State of the scope resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all scope resources. If a scope resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the scope was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "labels",
          "name",
          "namespaceLabels",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getScopeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkehub%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkehub/v1beta:getScopeRbacRoleBinding": {
      "description": "Returns the details of a Scope RBACRoleBinding.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "rbacrolebindingId": {
            "type": "string"
          },
          "scopeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "rbacrolebindingId",
          "scopeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the rbacrolebinding was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "When the rbacrolebinding was deleted.",
            "type": "string"
          },
          "group": {
            "description": "group is the group, as seen by the kubernetes cluster.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels for this RBACRolebinding.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for the rbacrolebinding `projects/{project}/locations/{location}/scopes/{scope}/rbacrolebindings/{rbacrolebinding}` or `projects/{project}/locations/{location}/memberships/{membership}/rbacrolebindings/{rbacrolebinding}`",
            "type": "string"
          },
          "role": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:RoleResponse",
            "description": "Role to bind to the principal"
          },
          "state": {
            "$ref": "#/types/google-native:gkehub%2Fv1beta:RBACRoleBindingLifecycleStateResponse",
            "description": "State of the rbacrolebinding resource."
          },
          "uid": {
            "description": "Google-generated UUID for this resource. This is unique across all rbacrolebinding resources. If a rbacrolebinding resource is deleted and another resource with the same name is created, it gets a different uid.",
            "type": "string"
          },
          "updateTime": {
            "description": "When the rbacrolebinding was last updated.",
            "type": "string"
          },
          "user": {
            "description": "user is the name of the user as seen by the kubernetes cluster, example \"alice\" or \"alice@domain.tld\"",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "group",
          "labels",
          "name",
          "role",
          "state",
          "uid",
          "updateTime",
          "user"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getBareMetalAdminCluster": {
      "description": "Gets details of a single bare metal admin cluster.",
      "inputs": {
        "properties": {
          "bareMetalAdminClusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bareMetalAdminClusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations on the bare metal admin cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.",
            "type": "object"
          },
          "bareMetalVersion": {
            "description": "The Anthos clusters on bare metal version for the bare metal admin cluster.",
            "type": "string"
          },
          "binaryAuthorization": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BinaryAuthorizationResponse",
            "description": "Binary Authorization related configurations."
          },
          "clusterOperations": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminClusterOperationsConfigResponse",
            "description": "Cluster operations configuration."
          },
          "controlPlane": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminControlPlaneConfigResponse",
            "description": "Control plane configuration."
          },
          "createTime": {
            "description": "The time at which this bare metal admin cluster was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The time at which this bare metal admin cluster was deleted. If the resource is not deleted, this must be empty",
            "type": "string"
          },
          "description": {
            "description": "A human readable description of this bare metal admin cluster.",
            "type": "string"
          },
          "endpoint": {
            "description": "The IP address name of bare metal admin cluster's API server.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control.",
            "type": "string"
          },
          "fleet": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:FleetResponse",
            "description": "Fleet configuration for the cluster."
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminLoadBalancerConfigResponse",
            "description": "Load balancer configuration."
          },
          "localName": {
            "description": "The object name of the bare metal cluster custom resource. This field is used to support conflicting names when enrolling existing clusters to the API. When used as a part of cluster enrollment, this field will differ from the ID in the resource name. For new clusters, this field will match the user provided cluster name and be visible in the last component of the resource name. It is not modifiable. All users should use this name to access their cluster using gkectl or kubectl and should expect to see the local name when viewing admin cluster controller logs.",
            "type": "string"
          },
          "maintenanceConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminMaintenanceConfigResponse",
            "description": "Maintenance configuration."
          },
          "maintenanceStatus": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminMaintenanceStatusResponse",
            "description": "MaintenanceStatus representing state of maintenance."
          },
          "name": {
            "description": "Immutable. The bare metal admin cluster resource name.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminNetworkConfigResponse",
            "description": "Network configuration."
          },
          "nodeAccessConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminNodeAccessConfigResponse",
            "description": "Node access related configurations."
          },
          "nodeConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminWorkloadNodeConfigResponse",
            "description": "Workload node configuration."
          },
          "osEnvironmentConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminOsEnvironmentConfigResponse",
            "description": "OS environment related configurations."
          },
          "proxy": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminProxyConfigResponse",
            "description": "Proxy configuration."
          },
          "reconciling": {
            "description": "If set, there are currently changes in flight to the bare metal Admin Cluster.",
            "type": "boolean"
          },
          "securityConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminSecurityConfigResponse",
            "description": "Security related configuration."
          },
          "state": {
            "description": "The current state of the bare metal admin cluster.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
            "description": "ResourceStatus representing detailed cluster status."
          },
          "storage": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalAdminStorageConfigResponse",
            "description": "Storage configuration."
          },
          "uid": {
            "description": "The unique identifier of the bare metal admin cluster.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which this bare metal admin cluster was last updated.",
            "type": "string"
          },
          "validationCheck": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ValidationCheckResponse",
            "description": "ValidationCheck representing the result of the preflight check."
          }
        },
        "required": [
          "annotations",
          "bareMetalVersion",
          "binaryAuthorization",
          "clusterOperations",
          "controlPlane",
          "createTime",
          "deleteTime",
          "description",
          "endpoint",
          "etag",
          "fleet",
          "loadBalancer",
          "localName",
          "maintenanceConfig",
          "maintenanceStatus",
          "name",
          "networkConfig",
          "nodeAccessConfig",
          "nodeConfig",
          "osEnvironmentConfig",
          "proxy",
          "reconciling",
          "securityConfig",
          "state",
          "status",
          "storage",
          "uid",
          "updateTime",
          "validationCheck"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getBareMetalAdminClusterIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "bareMetalAdminClusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bareMetalAdminClusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getBareMetalCluster": {
      "description": "Gets details of a single bare metal Cluster.",
      "inputs": {
        "properties": {
          "bareMetalClusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bareMetalClusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "adminClusterMembership": {
            "description": "The admin cluster this bare metal user cluster belongs to. This is the full resource name of the admin cluster's fleet membership.",
            "type": "string"
          },
          "adminClusterName": {
            "description": "The resource name of the bare metal admin cluster managing this user cluster.",
            "type": "string"
          },
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations on the bare metal user cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.",
            "type": "object"
          },
          "bareMetalVersion": {
            "description": "The Anthos clusters on bare metal version for your user cluster.",
            "type": "string"
          },
          "binaryAuthorization": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BinaryAuthorizationResponse",
            "description": "Binary Authorization related configurations."
          },
          "clusterOperations": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalClusterOperationsConfigResponse",
            "description": "Cluster operations configuration."
          },
          "controlPlane": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalControlPlaneConfigResponse",
            "description": "Control plane configuration."
          },
          "createTime": {
            "description": "The time when the bare metal user cluster was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The time when the bare metal user cluster was deleted. If the resource is not deleted, this must be empty",
            "type": "string"
          },
          "description": {
            "description": "A human readable description of this bare metal user cluster.",
            "type": "string"
          },
          "endpoint": {
            "description": "The IP address of the bare metal user cluster's API server.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control.",
            "type": "string"
          },
          "fleet": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:FleetResponse",
            "description": "Fleet configuration for the cluster."
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalLoadBalancerConfigResponse",
            "description": "Load balancer configuration."
          },
          "localName": {
            "description": "The object name of the bare metal user cluster custom resource on the associated admin cluster. This field is used to support conflicting names when enrolling existing clusters to the API. When used as a part of cluster enrollment, this field will differ from the name in the resource name. For new clusters, this field will match the user provided cluster name and be visible in the last component of the resource name. It is not modifiable. When the local name and cluster name differ, the local name is used in the admin cluster controller logs. You use the cluster name when accessing the cluster using bmctl and kubectl.",
            "type": "string"
          },
          "maintenanceConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMaintenanceConfigResponse",
            "description": "Maintenance configuration."
          },
          "maintenanceStatus": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalMaintenanceStatusResponse",
            "description": "Status of on-going maintenance tasks."
          },
          "name": {
            "description": "Immutable. The bare metal user cluster resource name.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNetworkConfigResponse",
            "description": "Network configuration."
          },
          "nodeAccessConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodeAccessConfigResponse",
            "description": "Node access related configurations."
          },
          "nodeConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalWorkloadNodeConfigResponse",
            "description": "Workload node configuration."
          },
          "osEnvironmentConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalOsEnvironmentConfigResponse",
            "description": "OS environment related configurations."
          },
          "proxy": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalProxyConfigResponse",
            "description": "Proxy configuration."
          },
          "reconciling": {
            "description": "If set, there are currently changes in flight to the bare metal user cluster.",
            "type": "boolean"
          },
          "securityConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalSecurityConfigResponse",
            "description": "Security related setting configuration."
          },
          "state": {
            "description": "The current state of the bare metal user cluster.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
            "description": "Detailed cluster status."
          },
          "storage": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalStorageConfigResponse",
            "description": "Storage configuration."
          },
          "uid": {
            "description": "The unique identifier of the bare metal user cluster.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the bare metal user cluster was last updated.",
            "type": "string"
          },
          "upgradePolicy": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalClusterUpgradePolicyResponse",
            "description": "The cluster upgrade policy."
          },
          "validationCheck": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ValidationCheckResponse",
            "description": "The result of the preflight check."
          }
        },
        "required": [
          "adminClusterMembership",
          "adminClusterName",
          "annotations",
          "bareMetalVersion",
          "binaryAuthorization",
          "clusterOperations",
          "controlPlane",
          "createTime",
          "deleteTime",
          "description",
          "endpoint",
          "etag",
          "fleet",
          "loadBalancer",
          "localName",
          "maintenanceConfig",
          "maintenanceStatus",
          "name",
          "networkConfig",
          "nodeAccessConfig",
          "nodeConfig",
          "osEnvironmentConfig",
          "proxy",
          "reconciling",
          "securityConfig",
          "state",
          "status",
          "storage",
          "uid",
          "updateTime",
          "upgradePolicy",
          "validationCheck"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getBareMetalClusterBareMetalNodePoolIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "bareMetalClusterId": {
            "type": "string"
          },
          "bareMetalNodePoolId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bareMetalClusterId",
          "bareMetalNodePoolId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getBareMetalClusterIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "bareMetalClusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bareMetalClusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getBareMetalNodePool": {
      "description": "Gets details of a single bare metal node pool.",
      "inputs": {
        "properties": {
          "bareMetalClusterId": {
            "type": "string"
          },
          "bareMetalNodePoolId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bareMetalClusterId",
          "bareMetalNodePoolId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations on the bare metal node pool. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.",
            "type": "object"
          },
          "createTime": {
            "description": "The time at which this bare metal node pool was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The time at which this bare metal node pool was deleted. If the resource is not deleted, this must be empty",
            "type": "string"
          },
          "displayName": {
            "description": "The display name for the bare metal node pool.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The bare metal node pool resource name.",
            "type": "string"
          },
          "nodePoolConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolConfigResponse",
            "description": "Node pool configuration."
          },
          "reconciling": {
            "description": "If set, there are currently changes in flight to the bare metal node pool.",
            "type": "boolean"
          },
          "state": {
            "description": "The current state of the bare metal node pool.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
            "description": "ResourceStatus representing the detailed node pool status."
          },
          "uid": {
            "description": "The unique identifier of the bare metal node pool.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which this bare metal node pool was last updated.",
            "type": "string"
          },
          "upgradePolicy": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:BareMetalNodePoolUpgradePolicyResponse",
            "description": "The worker node pool upgrade policy."
          }
        },
        "required": [
          "annotations",
          "createTime",
          "deleteTime",
          "displayName",
          "etag",
          "name",
          "nodePoolConfig",
          "reconciling",
          "state",
          "status",
          "uid",
          "updateTime",
          "upgradePolicy"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getVmwareAdminClusterIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "vmwareAdminClusterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "vmwareAdminClusterId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getVmwareCluster": {
      "description": "Gets details of a single VMware Cluster.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          },
          "vmwareClusterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "vmwareClusterId"
        ]
      },
      "outputs": {
        "properties": {
          "adminClusterMembership": {
            "description": "The admin cluster this VMware user cluster belongs to. This is the full resource name of the admin cluster's fleet membership. In the future, references to other resource types might be allowed if admin clusters are modeled as their own resources.",
            "type": "string"
          },
          "adminClusterName": {
            "description": "The resource name of the VMware admin cluster hosting this user cluster.",
            "type": "string"
          },
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations on the VMware user cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.",
            "type": "object"
          },
          "antiAffinityGroups": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAAGConfigResponse",
            "description": "AAGConfig specifies whether to spread VMware user cluster nodes across at least three physical hosts in the datacenter."
          },
          "authorization": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:AuthorizationResponse",
            "description": "RBAC policy that will be applied and managed by the Anthos On-Prem API."
          },
          "autoRepairConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareAutoRepairConfigResponse",
            "description": "Configuration for auto repairing."
          },
          "controlPlaneNode": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareControlPlaneNodeConfigResponse",
            "description": "VMware user cluster control plane nodes must have either 1 or 3 replicas."
          },
          "createTime": {
            "description": "The time at which VMware user cluster was created.",
            "type": "string"
          },
          "dataplaneV2": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareDataplaneV2ConfigResponse",
            "description": "VmwareDataplaneV2Config specifies configuration for Dataplane V2."
          },
          "deleteTime": {
            "description": "The time at which VMware user cluster was deleted.",
            "type": "string"
          },
          "description": {
            "description": "A human readable description of this VMware user cluster.",
            "type": "string"
          },
          "disableBundledIngress": {
            "description": "Disable bundled ingress.",
            "type": "boolean"
          },
          "enableControlPlaneV2": {
            "description": "Enable control plane V2. Default to false.",
            "type": "boolean"
          },
          "endpoint": {
            "description": "The DNS name of VMware user cluster's API server.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control.",
            "type": "string"
          },
          "fleet": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:FleetResponse",
            "description": "Fleet configuration for the cluster."
          },
          "loadBalancer": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareLoadBalancerConfigResponse",
            "description": "Load balancer configuration."
          },
          "localName": {
            "description": "The object name of the VMware OnPremUserCluster custom resource on the associated admin cluster. This field is used to support conflicting names when enrolling existing clusters to the API. When used as a part of cluster enrollment, this field will differ from the ID in the resource name. For new clusters, this field will match the user provided cluster name and be visible in the last component of the resource name. It is not modifiable. All users should use this name to access their cluster using gkectl or kubectl and should expect to see the local name when viewing admin cluster controller logs.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The VMware user cluster resource name.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNetworkConfigResponse",
            "description": "The VMware user cluster network configuration."
          },
          "onPremVersion": {
            "description": "The Anthos clusters on the VMware version for your user cluster.",
            "type": "string"
          },
          "reconciling": {
            "description": "If set, there are currently changes in flight to the VMware user cluster.",
            "type": "boolean"
          },
          "state": {
            "description": "The current state of VMware user cluster.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
            "description": "ResourceStatus representing detailed cluster state."
          },
          "storage": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareStorageConfigResponse",
            "description": "Storage configuration."
          },
          "uid": {
            "description": "The unique identifier of the VMware user cluster.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which VMware user cluster was last updated.",
            "type": "string"
          },
          "upgradePolicy": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareClusterUpgradePolicyResponse",
            "description": "Specifies upgrade policy for the cluster."
          },
          "validationCheck": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ValidationCheckResponse",
            "description": "ValidationCheck represents the result of the preflight check job."
          },
          "vcenter": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareVCenterConfigResponse",
            "description": "VmwareVCenterConfig specifies vCenter config for the user cluster. If unspecified, it is inherited from the admin cluster."
          },
          "vmTrackingEnabled": {
            "description": "Enable VM tracking.",
            "type": "boolean"
          }
        },
        "required": [
          "adminClusterMembership",
          "adminClusterName",
          "annotations",
          "antiAffinityGroups",
          "authorization",
          "autoRepairConfig",
          "controlPlaneNode",
          "createTime",
          "dataplaneV2",
          "deleteTime",
          "description",
          "disableBundledIngress",
          "enableControlPlaneV2",
          "endpoint",
          "etag",
          "fleet",
          "loadBalancer",
          "localName",
          "name",
          "networkConfig",
          "onPremVersion",
          "reconciling",
          "state",
          "status",
          "storage",
          "uid",
          "updateTime",
          "upgradePolicy",
          "validationCheck",
          "vcenter",
          "vmTrackingEnabled"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getVmwareClusterIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "vmwareClusterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "vmwareClusterId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getVmwareClusterVmwareNodePoolIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "vmwareClusterId": {
            "type": "string"
          },
          "vmwareNodePoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "vmwareClusterId",
          "vmwareNodePoolId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:gkeonprem%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:gkeonprem/v1:getVmwareNodePool": {
      "description": "Gets details of a single VMware node pool.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          },
          "vmwareClusterId": {
            "type": "string"
          },
          "vmwareNodePoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "vmwareClusterId",
          "vmwareNodePoolId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Annotations on the node pool. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.",
            "type": "object"
          },
          "config": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNodeConfigResponse",
            "description": "The node configuration of the node pool."
          },
          "createTime": {
            "description": "The time at which this node pool was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The time at which this node pool was deleted. If the resource is not deleted, this must be empty",
            "type": "string"
          },
          "displayName": {
            "description": "The display name for the node pool.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of this node pool.",
            "type": "string"
          },
          "nodePoolAutoscaling": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:VmwareNodePoolAutoscalingConfigResponse",
            "description": "Node pool autoscaling config for the node pool."
          },
          "onPremVersion": {
            "description": "Anthos version for the node pool. Defaults to the user cluster version.",
            "type": "string"
          },
          "reconciling": {
            "description": "If set, there are currently changes in flight to the node pool.",
            "type": "boolean"
          },
          "state": {
            "description": "The current state of the node pool.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:gkeonprem%2Fv1:ResourceStatusResponse",
            "description": "ResourceStatus representing the detailed VMware node pool state."
          },
          "uid": {
            "description": "The unique identifier of the node pool.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which this node pool was last updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "config",
          "createTime",
          "deleteTime",
          "displayName",
          "etag",
          "name",
          "nodePoolAutoscaling",
          "onPremVersion",
          "reconciling",
          "state",
          "status",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getAttributeDefinition": {
      "description": "Gets the specified Attribute definition.",
      "inputs": {
        "properties": {
          "attributeDefinitionId": {
            "type": "string"
          },
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attributeDefinitionId",
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "allowedValues": {
            "description": "Possible values for the attribute. The number of allowed values must not exceed 500. An empty list is invalid. The list can only be expanded after creation.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "category": {
            "description": "The category of the attribute. The value of this field cannot be changed after creation.",
            "type": "string"
          },
          "consentDefaultValues": {
            "description": "Optional. Default values of the attribute in Consents. If no default values are specified, it defaults to an empty value.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataMappingDefaultValue": {
            "description": "Optional. Default value of the attribute in User data mappings. If no default value is specified, it defaults to an empty value. This field is only applicable to attributes of the category `RESOURCE`.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of the attribute.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the Attribute definition, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/attributeDefinitions/{attribute_definition_id}`. Cannot be changed after creation.",
            "type": "string"
          }
        },
        "required": [
          "allowedValues",
          "category",
          "consentDefaultValues",
          "dataMappingDefaultValue",
          "description",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getConsent": {
      "description": "Gets the specified revision of a Consent, or the latest revision if `revision_id` is not specified in the resource name.",
      "inputs": {
        "properties": {
          "consentId": {
            "type": "string"
          },
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentId",
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "consentArtifact": {
            "description": "The resource name of the Consent artifact that contains proof of the end user's consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`.",
            "type": "string"
          },
          "expireTime": {
            "description": "Timestamp in UTC of when this Consent is considered expired.",
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-supplied key-value pairs used to organize Consent resources. Metadata keys must: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - begin with a letter - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes Metadata values must be: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes No more than 64 metadata entries can be associated with a given consent.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consents/{consent_id}`. Cannot be changed after creation.",
            "type": "string"
          },
          "policies": {
            "description": "Optional. Represents a user's consent in terms of the resources that can be accessed and under what conditions.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1ConsentPolicyResponse"
            },
            "type": "array"
          },
          "revisionCreateTime": {
            "description": "The timestamp that the revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "The revision ID of the Consent. The format is an 8-character hexadecimal string. Refer to a specific revision of a Consent by appending `@{revision_id}` to the Consent's resource name.",
            "type": "string"
          },
          "state": {
            "description": "Indicates the current state of this Consent.",
            "type": "string"
          },
          "ttl": {
            "description": "Input only. The time to live for this Consent from when it is created.",
            "type": "string"
          },
          "userId": {
            "description": "User's UUID provided by the client.",
            "type": "string"
          }
        },
        "required": [
          "consentArtifact",
          "expireTime",
          "metadata",
          "name",
          "policies",
          "revisionCreateTime",
          "revisionId",
          "state",
          "ttl",
          "userId"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getConsentArtifact": {
      "description": "Gets the specified Consent artifact.",
      "inputs": {
        "properties": {
          "consentArtifactId": {
            "type": "string"
          },
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentArtifactId",
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "consentContentScreenshots": {
            "description": "Optional. Screenshots, PDFs, or other binary information documenting the user's consent.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:ImageResponse"
            },
            "type": "array"
          },
          "consentContentVersion": {
            "description": "Optional. An string indicating the version of the consent information shown to the user.",
            "type": "string"
          },
          "guardianSignature": {
            "$ref": "#/types/google-native:healthcare%2Fv1:SignatureResponse",
            "description": "Optional. A signature from a guardian."
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Metadata associated with the Consent artifact. For example, the consent locale or user agent version.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Consent artifact, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`. Cannot be changed after creation.",
            "type": "string"
          },
          "userId": {
            "description": "User's UUID provided by the client.",
            "type": "string"
          },
          "userSignature": {
            "$ref": "#/types/google-native:healthcare%2Fv1:SignatureResponse",
            "description": "Optional. User's signature."
          },
          "witnessSignature": {
            "$ref": "#/types/google-native:healthcare%2Fv1:SignatureResponse",
            "description": "Optional. A signature from a witness."
          }
        },
        "required": [
          "consentContentScreenshots",
          "consentContentVersion",
          "guardianSignature",
          "metadata",
          "name",
          "userId",
          "userSignature",
          "witnessSignature"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getConsentStore": {
      "description": "Gets the specified consent store.",
      "inputs": {
        "properties": {
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "defaultConsentTtl": {
            "description": "Optional. Default time to live for Consents created in this store. Must be at least 24 hours. Updating this field will not affect the expiration time of existing consents.",
            "type": "string"
          },
          "enableConsentCreateOnUpdate": {
            "description": "Optional. If `true`, UpdateConsent creates the Consent if it does not already exist. If unspecified, defaults to `false`.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-supplied key-value pairs used to organize consent stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}. Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}. No more than 64 labels can be associated with a given store. For more information: https://cloud.google.com/healthcare/docs/how-tos/labeling-resources",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the consent store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}`. Cannot be changed after creation.",
            "type": "string"
          }
        },
        "required": [
          "defaultConsentTtl",
          "enableConsentCreateOnUpdate",
          "labels",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getDataset": {
      "description": "Gets any metadata associated with a dataset.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Resource name of the dataset, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`.",
            "type": "string"
          },
          "timeZone": {
            "description": "The default timezone used by this dataset. Must be a either a valid IANA time zone name such as \"America/New_York\" or empty, which defaults to UTC. This is used for parsing times in resources, such as HL7 messages, where no explicit timezone is specified.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "timeZone"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getDatasetConsentStoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getDatasetDicomStoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "dicomStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "dicomStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getDatasetFhirStoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "fhirStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "fhirStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getDatasetHl7V2StoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "hl7V2StoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "hl7V2StoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getDatasetIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getDicomStore": {
      "description": "Gets the specified DICOM store.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "dicomStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "dicomStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize DICOM stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the DICOM store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/dicomStores/{dicom_store_id}`.",
            "type": "string"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1:NotificationConfigResponse",
            "description": "Notification destination for new DICOM instances. Supplied by the client."
          },
          "streamConfigs": {
            "description": "Optional. A list of streaming configs used to configure the destination of streaming exports for every DICOM instance insertion in this DICOM store. After a new config is added to `stream_configs`, DICOM instance insertions are streamed to the new destination. When a config is removed from `stream_configs`, the server stops streaming to that destination. Each config must contain a unique destination.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:GoogleCloudHealthcareV1DicomStreamConfigResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "labels",
          "name",
          "notificationConfig",
          "streamConfigs"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getFhir": {
      "description": "Gets the contents of a FHIR resource. Implements the FHIR standard read interaction ([DSTU2](http://hl7.org/implement/standards/fhir/DSTU2/http.html#read), [STU3](http://hl7.org/implement/standards/fhir/STU3/http.html#read), [R4](http://hl7.org/implement/standards/fhir/R4/http.html#read)). Also supports the FHIR standard conditional read interaction ([DSTU2](http://hl7.org/implement/standards/fhir/DSTU2/http.html#cread), [STU3](http://hl7.org/implement/standards/fhir/STU3/http.html#cread), [R4](http://hl7.org/implement/standards/fhir/R4/http.html#cread)) specified by supplying an `If-Modified-Since` header with a date/time value or an `If-None-Match` header with an ETag value. On success, the response body contains a JSON-encoded representation of the resource. Errors generated by the FHIR store contain a JSON-encoded `OperationOutcome` resource describing the reason for the error. If the request cannot be mapped to a valid API method on a FHIR store, a generic GCP error might be returned instead. For samples that show how to call `read`, see [Getting a FHIR resource](https://cloud.google.com/healthcare/docs/how-tos/fhir-resources#getting_a_fhir_resource).",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "fhirId": {
            "type": "string"
          },
          "fhirId1": {
            "type": "string"
          },
          "fhirStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "fhirId",
          "fhirId1",
          "fhirStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "contentType": {
            "description": "The HTTP Content-Type header value specifying the content type of the body.",
            "type": "string"
          },
          "data": {
            "description": "The HTTP request/response body as raw binary.",
            "type": "string"
          },
          "extensions": {
            "description": "Application specific response metadata. Must be set in the first response for streaming APIs.",
            "items": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "contentType",
          "data",
          "extensions"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getFhirStore": {
      "description": "Gets the configuration of the specified FHIR store.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "fhirStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "fhirStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "complexDataTypeReferenceParsing": {
            "description": "Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources.",
            "type": "string"
          },
          "defaultSearchHandlingStrict": {
            "description": "If true, overrides the default search behavior for this FHIR store to `handling=strict` which returns an error for unrecognized search parameters. If false, uses the FHIR specification default `handling=lenient` which ignores unrecognized search parameters. The handling can always be changed from the default on an individual API call by setting the HTTP header `Prefer: handling=strict` or `Prefer: handling=lenient`.",
            "type": "boolean"
          },
          "disableReferentialIntegrity": {
            "description": "Immutable. Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API enforces referential integrity and fails the requests that result in inconsistent state in the FHIR store. When this field is set to true, the API skips referential integrity checks. Consequently, operations that rely on references, such as GetPatientEverything, do not return all the results if broken references exist.",
            "type": "boolean"
          },
          "disableResourceVersioning": {
            "description": "Immutable. Whether to disable resource versioning for this FHIR store. This field can not be changed after the creation of FHIR store. If set to false, which is the default behavior, all write operations cause historical versions to be recorded automatically. The historical versions can be fetched through the history APIs, but cannot be updated. If set to true, no historical versions are kept. The server sends errors for attempts to read the historical versions.",
            "type": "boolean"
          },
          "enableUpdateCreate": {
            "description": "Whether this FHIR store has the [updateCreate capability](https://www.hl7.org/fhir/capabilitystatement-definitions.html#CapabilityStatement.rest.resource.updateCreate). This determines if the client can use an Update operation to create a new resource with a client-specified ID. If false, all IDs are server-assigned through the Create operation and attempts to update a non-existent resource return errors. It is strongly advised not to include or encode any sensitive data such as patient identifiers in client-specified resource IDs. Those IDs are part of the FHIR resource path recorded in Cloud audit logs and Pub/Sub notifications. Those IDs can also be contained in reference fields within other resources.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize FHIR stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the FHIR store, of the form `projects/{project_id}/datasets/{dataset_id}/fhirStores/{fhir_store_id}`.",
            "type": "string"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1:NotificationConfigResponse",
            "deprecationMessage": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\".",
            "description": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\"."
          },
          "notificationConfigs": {
            "description": "Specifies where and whether to send notifications upon changes to a FHIR store.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:FhirNotificationConfigResponse"
            },
            "type": "array"
          },
          "streamConfigs": {
            "description": "A list of streaming configs that configure the destinations of streaming export for every resource mutation in this FHIR store. Each store is allowed to have up to 10 streaming configs. After a new config is added, the next resource mutation is streamed to the new location in addition to the existing ones. When a location is removed from the list, the server stops streaming to that location. Before adding a new config, you must add the required [`bigquery.dataEditor`](https://cloud.google.com/bigquery/docs/access-control#bigquery.dataEditor) role to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/iam/docs/service-accounts). Some lag (typically on the order of dozens of seconds) is expected before the results show up in the streaming destination.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:StreamConfigResponse"
            },
            "type": "array"
          },
          "validationConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1:ValidationConfigResponse",
            "description": "Configuration for how to validate incoming FHIR resources against configured profiles."
          },
          "version": {
            "description": "Immutable. The FHIR specification version that this FHIR store supports natively. This field is immutable after store creation. Requests are rejected if they contain FHIR resources of a different version. Version is required for every FHIR store.",
            "type": "string"
          }
        },
        "required": [
          "complexDataTypeReferenceParsing",
          "defaultSearchHandlingStrict",
          "disableReferentialIntegrity",
          "disableResourceVersioning",
          "enableUpdateCreate",
          "labels",
          "name",
          "notificationConfig",
          "notificationConfigs",
          "streamConfigs",
          "validationConfig",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getHl7V2Store": {
      "description": "Gets the specified HL7v2 store.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "hl7V2StoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "hl7V2StoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the HL7v2 store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7v2_store_id}`.",
            "type": "string"
          },
          "notificationConfigs": {
            "description": "A list of notification configs. Each configuration uses a filter to determine whether to publish a message (both Ingest \u0026 Create) on the corresponding notification destination. Only the message name is sent as part of the notification. Supplied by the client.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:Hl7V2NotificationConfigResponse"
            },
            "type": "array"
          },
          "parserConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1:ParserConfigResponse",
            "description": "The configuration for the parser. It determines how the server parses the messages."
          },
          "rejectDuplicateMessage": {
            "description": "Determines whether to reject duplicate messages. A duplicate message is a message with the same raw bytes as a message that has already been ingested/created in this HL7v2 store. The default value is false, meaning that the store accepts the duplicate messages and it also returns the same ACK message in the IngestMessageResponse as has been returned previously. Note that only one resource is created in the store. When this field is set to true, CreateMessage/IngestMessage requests with a duplicate message will be rejected by the store, and IngestMessageErrorDetail returns a NACK message upon rejection.",
            "type": "boolean"
          }
        },
        "required": [
          "labels",
          "name",
          "notificationConfigs",
          "parserConfig",
          "rejectDuplicateMessage"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getMessage": {
      "description": "Gets an HL7v2 message.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "hl7V2StoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "messageId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "hl7V2StoreId",
          "location",
          "messageId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The datetime when the message was created. Set by the server.",
            "type": "string"
          },
          "data": {
            "description": "Raw message bytes.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "messageType": {
            "description": "The message type for this message. MSH-9.1.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the Message, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7_v2_store_id}/messages/{message_id}`. Assigned by the server.",
            "type": "string"
          },
          "parsedData": {
            "$ref": "#/types/google-native:healthcare%2Fv1:ParsedDataResponse",
            "description": "The parsed version of the raw message data."
          },
          "patientIds": {
            "description": "All patient IDs listed in the PID-2, PID-3, and PID-4 segments of this message.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:PatientIdResponse"
            },
            "type": "array"
          },
          "schematizedData": {
            "$ref": "#/types/google-native:healthcare%2Fv1:SchematizedDataResponse",
            "description": "The parsed version of the raw message data schematized according to this store's schemas and type definitions."
          },
          "sendFacility": {
            "description": "The hospital that this message came from. MSH-4.",
            "type": "string"
          },
          "sendTime": {
            "description": "The datetime the sending application sent this message. MSH-7.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "data",
          "labels",
          "messageType",
          "name",
          "parsedData",
          "patientIds",
          "schematizedData",
          "sendFacility",
          "sendTime"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1:getUserDataMapping": {
      "description": "Gets the specified User data mapping.",
      "inputs": {
        "properties": {
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "userDataMappingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentStoreId",
          "datasetId",
          "location",
          "userDataMappingId"
        ]
      },
      "outputs": {
        "properties": {
          "archiveTime": {
            "description": "Indicates the time when this mapping was archived.",
            "type": "string"
          },
          "archived": {
            "description": "Indicates whether this mapping is archived.",
            "type": "boolean"
          },
          "dataId": {
            "description": "A unique identifier for the mapped resource.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the User data mapping, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/userDataMappings/{user_data_mapping_id}`.",
            "type": "string"
          },
          "resourceAttributes": {
            "description": "Attributes of the resource. Only explicitly set attributes are displayed here. Attribute definitions with defaults set implicitly apply to these User data mappings. Attributes listed here must be single valued, that is, exactly one value is specified for the field \"values\" in each Attribute.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1:AttributeResponse"
            },
            "type": "array"
          },
          "userId": {
            "description": "User's UUID provided by the client.",
            "type": "string"
          }
        },
        "required": [
          "archiveTime",
          "archived",
          "dataId",
          "name",
          "resourceAttributes",
          "userId"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getAnnotation": {
      "description": "Gets an Annotation.",
      "inputs": {
        "properties": {
          "annotationId": {
            "type": "string"
          },
          "annotationStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "annotationId",
          "annotationStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotationSource": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:AnnotationSourceResponse",
            "description": "Details of the source."
          },
          "customData": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional information for this annotation record, such as annotator and verifier information or study campaign.",
            "type": "object"
          },
          "imageAnnotation": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageAnnotationResponse",
            "description": "Annotations for images. For example, bounding polygons."
          },
          "name": {
            "description": "Resource name of the Annotation, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}/annotations/{annotation_id}`.",
            "type": "string"
          },
          "resourceAnnotation": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:ResourceAnnotationResponse",
            "description": "Annotations for resource. For example, classification tags."
          },
          "textAnnotation": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SensitiveTextAnnotationResponse",
            "description": "Annotations for sensitive texts. For example, a range that describes the location of sensitive text."
          }
        },
        "required": [
          "annotationSource",
          "customData",
          "imageAnnotation",
          "name",
          "resourceAnnotation",
          "textAnnotation"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getAnnotationStore": {
      "description": "Gets the specified Annotation store or returns NOT_FOUND if it does not exist.",
      "inputs": {
        "properties": {
          "annotationStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "annotationStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-supplied key-value pairs used to organize Annotation stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Annotation store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/annotationStores/{annotation_store_id}`.",
            "type": "string"
          }
        },
        "required": [
          "labels",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getAttributeDefinition": {
      "description": "Gets the specified Attribute definition.",
      "inputs": {
        "properties": {
          "attributeDefinitionId": {
            "type": "string"
          },
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "attributeDefinitionId",
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "allowedValues": {
            "description": "Possible values for the attribute. The number of allowed values must not exceed 500. An empty list is invalid. The list can only be expanded after creation.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "category": {
            "description": "The category of the attribute. The value of this field cannot be changed after creation.",
            "type": "string"
          },
          "consentDefaultValues": {
            "description": "Optional. Default values of the attribute in Consents. If no default values are specified, it defaults to an empty value.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataMappingDefaultValue": {
            "description": "Optional. Default value of the attribute in User data mappings. If no default value is specified, it defaults to an empty value. This field is only applicable to attributes of the category `RESOURCE`.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of the attribute.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the Attribute definition, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/attributeDefinitions/{attribute_definition_id}`. Cannot be changed after creation.",
            "type": "string"
          }
        },
        "required": [
          "allowedValues",
          "category",
          "consentDefaultValues",
          "dataMappingDefaultValue",
          "description",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getConsent": {
      "description": "Gets the specified revision of a Consent, or the latest revision if `revision_id` is not specified in the resource name.",
      "inputs": {
        "properties": {
          "consentId": {
            "type": "string"
          },
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentId",
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "consentArtifact": {
            "description": "The resource name of the Consent artifact that contains proof of the end user's consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`.",
            "type": "string"
          },
          "expireTime": {
            "description": "Timestamp in UTC of when this Consent is considered expired.",
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-supplied key-value pairs used to organize Consent resources. Metadata keys must: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - begin with a letter - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes Metadata values must be: - be between 1 and 63 characters long - have a UTF-8 encoding of maximum 128 bytes - consist of up to 63 characters including lowercase letters, numeric characters, underscores, and dashes No more than 64 metadata entries can be associated with a given consent.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Consent, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consents/{consent_id}`. Cannot be changed after creation.",
            "type": "string"
          },
          "policies": {
            "description": "Optional. Represents a user's consent in terms of the resources that can be accessed and under what conditions.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1ConsentPolicyResponse"
            },
            "type": "array"
          },
          "revisionCreateTime": {
            "description": "The timestamp that the revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "The revision ID of the Consent. The format is an 8-character hexadecimal string. Refer to a specific revision of a Consent by appending `@{revision_id}` to the Consent's resource name.",
            "type": "string"
          },
          "state": {
            "description": "Indicates the current state of this Consent.",
            "type": "string"
          },
          "ttl": {
            "description": "Input only. The time to live for this Consent from when it is created.",
            "type": "string"
          },
          "userId": {
            "description": "User's UUID provided by the client.",
            "type": "string"
          }
        },
        "required": [
          "consentArtifact",
          "expireTime",
          "metadata",
          "name",
          "policies",
          "revisionCreateTime",
          "revisionId",
          "state",
          "ttl",
          "userId"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getConsentArtifact": {
      "description": "Gets the specified Consent artifact.",
      "inputs": {
        "properties": {
          "consentArtifactId": {
            "type": "string"
          },
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentArtifactId",
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "consentContentScreenshots": {
            "description": "Optional. Screenshots, PDFs, or other binary information documenting the user's consent.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:ImageResponse"
            },
            "type": "array"
          },
          "consentContentVersion": {
            "description": "Optional. An string indicating the version of the consent information shown to the user.",
            "type": "string"
          },
          "guardianSignature": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SignatureResponse",
            "description": "Optional. A signature from a guardian."
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Metadata associated with the Consent artifact. For example, the consent locale or user agent version.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the Consent artifact, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/consentArtifacts/{consent_artifact_id}`. Cannot be changed after creation.",
            "type": "string"
          },
          "userId": {
            "description": "User's UUID provided by the client.",
            "type": "string"
          },
          "userSignature": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SignatureResponse",
            "description": "Optional. User's signature."
          },
          "witnessSignature": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SignatureResponse",
            "description": "Optional. A signature from a witness."
          }
        },
        "required": [
          "consentContentScreenshots",
          "consentContentVersion",
          "guardianSignature",
          "metadata",
          "name",
          "userId",
          "userSignature",
          "witnessSignature"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getConsentStore": {
      "description": "Gets the specified consent store.",
      "inputs": {
        "properties": {
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "defaultConsentTtl": {
            "description": "Optional. Default time to live for Consents created in this store. Must be at least 24 hours. Updating this field will not affect the expiration time of existing consents.",
            "type": "string"
          },
          "enableConsentCreateOnUpdate": {
            "description": "Optional. If `true`, UpdateConsent creates the Consent if it does not already exist. If unspecified, defaults to `false`.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-supplied key-value pairs used to organize consent stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62}. Label values must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}. No more than 64 labels can be associated with a given store. For more information: https://cloud.google.com/healthcare/docs/how-tos/labeling-resources",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the consent store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}`. Cannot be changed after creation.",
            "type": "string"
          }
        },
        "required": [
          "defaultConsentTtl",
          "enableConsentCreateOnUpdate",
          "labels",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getDataset": {
      "description": "Gets any metadata associated with a dataset.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Resource name of the dataset, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}`.",
            "type": "string"
          },
          "timeZone": {
            "description": "The default timezone used by this dataset. Must be a either a valid IANA time zone name such as \"America/New_York\" or empty, which defaults to UTC. This is used for parsing times in resources, such as HL7 messages, where no explicit timezone is specified.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "timeZone"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getDatasetAnnotationStoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "annotationStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "annotationStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getDatasetConsentStoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentStoreId",
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getDatasetDicomStoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "dicomStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "dicomStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getDatasetFhirStoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "fhirStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "fhirStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getDatasetHl7V2StoreIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "hl7V2StoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "hl7V2StoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getDatasetIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getDicomStore": {
      "description": "Gets the specified DICOM store.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "dicomStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "dicomStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize DICOM stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the DICOM store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/dicomStores/{dicom_store_id}`.",
            "type": "string"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfigResponse",
            "description": "Notification destination for new DICOM instances. Supplied by the client."
          },
          "streamConfigs": {
            "description": "Optional. A list of streaming configs used to configure the destination of streaming exports for every DICOM instance insertion in this DICOM store. After a new config is added to `stream_configs`, DICOM instance insertions are streamed to the new destination. When a config is removed from `stream_configs`, the server stops streaming to that destination. Each config must contain a unique destination.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:GoogleCloudHealthcareV1beta1DicomStreamConfigResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "labels",
          "name",
          "notificationConfig",
          "streamConfigs"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getFhir": {
      "description": "Gets the contents of a FHIR resource. Implements the FHIR standard read interaction ([DSTU2](https://hl7.org/implement/standards/fhir/DSTU2/http.html#read), [STU3](https://hl7.org/implement/standards/fhir/STU3/http.html#read), [R4](https://hl7.org/implement/standards/fhir/R4/http.html#read)). Also supports the FHIR standard conditional read interaction ([DSTU2](https://hl7.org/implement/standards/fhir/DSTU2/http.html#cread), [STU3](https://hl7.org/implement/standards/fhir/STU3/http.html#cread), [R4](https://hl7.org/implement/standards/fhir/R4/http.html#cread)) specified by supplying an `If-Modified-Since` header with a date/time value or an `If-None-Match` header with an ETag value. On success, the response body contains a JSON-encoded representation of the resource. Errors generated by the FHIR store contain a JSON-encoded `OperationOutcome` resource describing the reason for the error. If the request cannot be mapped to a valid API method on a FHIR store, a generic GCP error might be returned instead. For samples that show how to call `read`, see [Getting a FHIR resource](https://cloud.google.com/healthcare/docs/how-tos/fhir-resources#getting_a_fhir_resource).",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "fhirId": {
            "type": "string"
          },
          "fhirId1": {
            "type": "string"
          },
          "fhirStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "fhirId",
          "fhirId1",
          "fhirStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "contentType": {
            "description": "The HTTP Content-Type header value specifying the content type of the body.",
            "type": "string"
          },
          "data": {
            "description": "The HTTP request/response body as raw binary.",
            "type": "string"
          },
          "extensions": {
            "description": "Application specific response metadata. Must be set in the first response for streaming APIs.",
            "items": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "contentType",
          "data",
          "extensions"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getFhirStore": {
      "description": "Gets the configuration of the specified FHIR store.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "fhirStoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "fhirStoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "complexDataTypeReferenceParsing": {
            "description": "Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources.",
            "type": "string"
          },
          "consentConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:ConsentConfigResponse",
            "description": "Optional. Specifies whether this store has consent enforcement. Not available for DSTU2 FHIR version due to absence of Consent resources."
          },
          "defaultSearchHandlingStrict": {
            "description": "If true, overrides the default search behavior for this FHIR store to `handling=strict` which returns an error for unrecognized search parameters. If false, uses the FHIR specification default `handling=lenient` which ignores unrecognized search parameters. The handling can always be changed from the default on an individual API call by setting the HTTP header `Prefer: handling=strict` or `Prefer: handling=lenient`.",
            "type": "boolean"
          },
          "disableReferentialIntegrity": {
            "description": "Immutable. Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API enforces referential integrity and fails the requests that result in inconsistent state in the FHIR store. When this field is set to true, the API skips referential integrity checks. Consequently, operations that rely on references, such as GetPatientEverything, do not return all the results if broken references exist.",
            "type": "boolean"
          },
          "disableResourceVersioning": {
            "description": "Immutable. Whether to disable resource versioning for this FHIR store. This field can not be changed after the creation of FHIR store. If set to false, which is the default behavior, all write operations cause historical versions to be recorded automatically. The historical versions can be fetched through the history APIs, but cannot be updated. If set to true, no historical versions are kept. The server sends errors for attempts to read the historical versions.",
            "type": "boolean"
          },
          "enableUpdateCreate": {
            "description": "Whether this FHIR store has the [updateCreate capability](https://www.hl7.org/fhir/capabilitystatement-definitions.html#CapabilityStatement.rest.resource.updateCreate). This determines if the client can use an Update operation to create a new resource with a client-specified ID. If false, all IDs are server-assigned through the Create operation and attempts to update a non-existent resource return errors. It is strongly advised not to include or encode any sensitive data such as patient identifiers in client-specified resource IDs. Those IDs are part of the FHIR resource path recorded in Cloud audit logs and Pub/Sub notifications. Those IDs can also be contained in reference fields within other resources.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize FHIR stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the FHIR store, of the form `projects/{project_id}/datasets/{dataset_id}/fhirStores/{fhir_store_id}`.",
            "type": "string"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfigResponse",
            "deprecationMessage": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\".",
            "description": "Deprecated. Use `notification_configs` instead. If non-empty, publish all resource modifications of this FHIR store to this destination. The Pub/Sub message attributes contain a map with a string describing the action that has triggered the notification. For example, \"action\":\"CreateResource\"."
          },
          "notificationConfigs": {
            "description": "Specifies where and whether to send notifications upon changes to a Fhir store.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:FhirNotificationConfigResponse"
            },
            "type": "array"
          },
          "searchConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SearchConfigResponse",
            "description": "Configuration for how FHIR resources can be searched."
          },
          "streamConfigs": {
            "description": "A list of streaming configs that configure the destinations of streaming export for every resource mutation in this FHIR store. Each store is allowed to have up to 10 streaming configs. After a new config is added, the next resource mutation is streamed to the new location in addition to the existing ones. When a location is removed from the list, the server stops streaming to that location. Before adding a new config, you must add the required [`bigquery.dataEditor`](https://cloud.google.com/bigquery/docs/access-control#bigquery.dataEditor) role to your project's **Cloud Healthcare Service Agent** [service account](https://cloud.google.com/iam/docs/service-accounts). Some lag (typically on the order of dozens of seconds) is expected before the results show up in the streaming destination.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:StreamConfigResponse"
            },
            "type": "array"
          },
          "validationConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:ValidationConfigResponse",
            "description": "Configuration for how to validate incoming FHIR resources against configured profiles."
          },
          "version": {
            "description": "Immutable. The FHIR specification version that this FHIR store supports natively. This field is immutable after store creation. Requests are rejected if they contain FHIR resources of a different version. Version is required for every FHIR store.",
            "type": "string"
          }
        },
        "required": [
          "complexDataTypeReferenceParsing",
          "consentConfig",
          "defaultSearchHandlingStrict",
          "disableReferentialIntegrity",
          "disableResourceVersioning",
          "enableUpdateCreate",
          "labels",
          "name",
          "notificationConfig",
          "notificationConfigs",
          "searchConfig",
          "streamConfigs",
          "validationConfig",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getHl7V2Store": {
      "description": "Gets the specified HL7v2 store.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "hl7V2StoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "hl7V2StoreId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "name": {
            "description": "Resource name of the HL7v2 store, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7v2_store_id}`.",
            "type": "string"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:NotificationConfigResponse",
            "description": "The notification destination all messages (both Ingest \u0026 Create) are published on. Only the message name is sent as part of the notification. If this is unset, no notifications are sent. Supplied by the client."
          },
          "notificationConfigs": {
            "description": "A list of notification configs. Each configuration uses a filter to determine whether to publish a message (both Ingest \u0026 Create) on the corresponding notification destination. Only the message name is sent as part of the notification. Supplied by the client.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:Hl7V2NotificationConfigResponse"
            },
            "type": "array"
          },
          "parserConfig": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:ParserConfigResponse",
            "description": "The configuration for the parser. It determines how the server parses the messages."
          },
          "rejectDuplicateMessage": {
            "description": "Determines whether to reject duplicate messages. A duplicate message is a message with the same raw bytes as a message that has already been ingested/created in this HL7v2 store. The default value is false, meaning that the store accepts the duplicate messages and it also returns the same ACK message in the IngestMessageResponse as has been returned previously. Note that only one resource is created in the store. When this field is set to true, CreateMessage/IngestMessage requests with a duplicate message will be rejected by the store, and IngestMessageErrorDetail returns a NACK message upon rejection.",
            "type": "boolean"
          }
        },
        "required": [
          "labels",
          "name",
          "notificationConfig",
          "notificationConfigs",
          "parserConfig",
          "rejectDuplicateMessage"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getMessage": {
      "description": "Gets an HL7v2 message.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "hl7V2StoreId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "messageId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "hl7V2StoreId",
          "location",
          "messageId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The datetime when the message was created. Set by the server.",
            "type": "string"
          },
          "data": {
            "description": "Raw message bytes.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key-value pairs used to organize HL7v2 stores. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: \\p{Ll}\\p{Lo}{0,62} Label values are optional, must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63} No more than 64 labels can be associated with a given store.",
            "type": "object"
          },
          "messageType": {
            "description": "The message type for this message. MSH-9.1.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the Message, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/hl7V2Stores/{hl7_v2_store_id}/messages/{message_id}`. Assigned by the server.",
            "type": "string"
          },
          "parsedData": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:ParsedDataResponse",
            "description": "The parsed version of the raw message data."
          },
          "patientIds": {
            "description": "All patient IDs listed in the PID-2, PID-3, and PID-4 segments of this message.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:PatientIdResponse"
            },
            "type": "array"
          },
          "schematizedData": {
            "$ref": "#/types/google-native:healthcare%2Fv1beta1:SchematizedDataResponse",
            "description": "The parsed version of the raw message data schematized according to this store's schemas and type definitions."
          },
          "sendFacility": {
            "description": "The hospital that this message came from. MSH-4.",
            "type": "string"
          },
          "sendTime": {
            "description": "The datetime the sending application sent this message. MSH-7.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "data",
          "labels",
          "messageType",
          "name",
          "parsedData",
          "patientIds",
          "schematizedData",
          "sendFacility",
          "sendTime"
        ],
        "type": "object"
      }
    },
    "google-native:healthcare/v1beta1:getUserDataMapping": {
      "description": "Gets the specified User data mapping.",
      "inputs": {
        "properties": {
          "consentStoreId": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "userDataMappingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consentStoreId",
          "datasetId",
          "location",
          "userDataMappingId"
        ]
      },
      "outputs": {
        "properties": {
          "archiveTime": {
            "description": "Indicates the time when this mapping was archived.",
            "type": "string"
          },
          "archived": {
            "description": "Indicates whether this mapping is archived.",
            "type": "boolean"
          },
          "dataId": {
            "description": "A unique identifier for the mapped resource.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the User data mapping, of the form `projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/consentStores/{consent_store_id}/userDataMappings/{user_data_mapping_id}`.",
            "type": "string"
          },
          "resourceAttributes": {
            "description": "Attributes of the resource. Only explicitly set attributes are displayed here. Attribute definitions with defaults set implicitly apply to these User data mappings. Attributes listed here must be single valued, that is, exactly one value is specified for the field \"values\" in each Attribute.",
            "items": {
              "$ref": "#/types/google-native:healthcare%2Fv1beta1:AttributeResponse"
            },
            "type": "array"
          },
          "userId": {
            "description": "User's UUID provided by the client.",
            "type": "string"
          }
        },
        "required": [
          "archiveTime",
          "archived",
          "dataId",
          "name",
          "resourceAttributes",
          "userId"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getKey": {
      "description": "Gets a ServiceAccountKey.",
      "inputs": {
        "properties": {
          "keyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "publicKeyType": {
            "type": "string"
          },
          "serviceAccountId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "keyId",
          "serviceAccountId"
        ]
      },
      "outputs": {
        "properties": {
          "disabled": {
            "description": "The key status.",
            "type": "boolean"
          },
          "keyAlgorithm": {
            "description": "Specifies the algorithm (and possibly key size) for the key.",
            "type": "string"
          },
          "keyOrigin": {
            "description": "The key origin.",
            "type": "string"
          },
          "keyType": {
            "description": "The key type.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the service account key in the following format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}`.",
            "type": "string"
          },
          "privateKeyData": {
            "description": "The private key data. Only provided in `CreateServiceAccountKey` responses. Make sure to keep the private key data secure because it allows for the assertion of the service account identity. When base64 decoded, the private key data can be used to authenticate with Google API client libraries and with gcloud auth activate-service-account.",
            "type": "string"
          },
          "privateKeyType": {
            "description": "The output format for the private key. Only provided in `CreateServiceAccountKey` responses, not in `GetServiceAccountKey` or `ListServiceAccountKey` responses. Google never exposes system-managed private keys, and never retains user-managed private keys.",
            "type": "string"
          },
          "publicKeyData": {
            "description": "The public key data. Only provided in `GetServiceAccountKey` responses.",
            "type": "string"
          },
          "validAfterTime": {
            "description": "The key can be used after this timestamp.",
            "type": "string"
          },
          "validBeforeTime": {
            "description": "The key can be used before this timestamp. For system-managed key pairs, this timestamp is the end time for the private key signing operation. The public key could still be used for verification for a few hours after this time.",
            "type": "string"
          }
        },
        "required": [
          "disabled",
          "keyAlgorithm",
          "keyOrigin",
          "keyType",
          "name",
          "privateKeyData",
          "privateKeyType",
          "publicKeyData",
          "validAfterTime",
          "validBeforeTime"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getOrganizationRole": {
      "description": "Gets the definition of a Role.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "roleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "roleId"
        ]
      },
      "outputs": {
        "properties": {
          "deleted": {
            "description": "The current deleted state of the role. This field is read only. It will be ignored in calls to CreateRole and UpdateRole.",
            "type": "boolean"
          },
          "description": {
            "description": "Optional. A human-readable description for the role.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write.",
            "type": "string"
          },
          "includedPermissions": {
            "description": "The names of the permissions this role grants when bound in an IAM policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the role. When `Role` is used in `CreateRole`, the role name must not be set. When `Role` is used in output and other input such as `UpdateRole`, the role name is the complete path. For example, `roles/logging.viewer` for predefined roles, `organizations/{ORGANIZATION_ID}/roles/my-role` for organization-level custom roles, and `projects/{PROJECT_ID}/roles/my-role` for project-level custom roles.",
            "type": "string"
          },
          "stage": {
            "description": "The current launch stage of the role. If the `ALPHA` launch stage has been selected for a role, the `stage` field will not be included in the returned definition for the role.",
            "type": "string"
          },
          "title": {
            "description": "Optional. A human-readable title for the role. Typically this is limited to 100 UTF-8 bytes.",
            "type": "string"
          }
        },
        "required": [
          "deleted",
          "description",
          "etag",
          "includedPermissions",
          "name",
          "stage",
          "title"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getProvider": {
      "description": "Gets an individual WorkloadIdentityPoolProvider.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          },
          "workloadIdentityPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "providerId",
          "workloadIdentityPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "attributeCondition": {
            "description": "[A Common Expression Language](https://opensource.google/projects/cel) expression, in plain text, to restrict what otherwise valid authentication credentials issued by the provider should not be accepted. The expression must output a boolean representing whether to allow the federation. The following keywords may be referenced in the expressions: * `assertion`: JSON representing the authentication credential issued by the provider. * `google`: The Google attributes mapped from the assertion in the `attribute_mappings`. * `attribute`: The custom attributes mapped from the assertion in the `attribute_mappings`. The maximum length of the attribute condition expression is 4096 characters. If unspecified, all valid authentication credential are accepted. The following example shows how to only allow credentials with a mapped `google.groups` value of `admins`: ``` \"'admins' in google.groups\" ```",
            "type": "string"
          },
          "attributeMapping": {
            "additionalProperties": {
              "type": "string"
            },
            "description": " Maps attributes from authentication credentials issued by an external identity provider to Google Cloud attributes, such as `subject` and `segment`. Each key must be a string specifying the Google Cloud IAM attribute to map to. The following keys are supported: * `google.subject`: The principal IAM is authenticating. You can reference this value in IAM bindings. This is also the subject that appears in Cloud Logging logs. Cannot exceed 127 bytes. * `google.groups`: Groups the external identity belongs to. You can grant groups access to resources using an IAM `principalSet` binding; access applies to all members of the group. You can also provide custom attributes by specifying `attribute.{custom_attribute}`, where `{custom_attribute}` is the name of the custom attribute to be mapped. You can define a maximum of 50 custom attributes. The maximum length of a mapped attribute key is 100 characters, and the key may only contain the characters [a-z0-9_]. You can reference these attributes in IAM policies to define fine-grained access for a workload to Google Cloud resources. For example: * `google.subject`: `principal://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/subject/{value}` * `google.groups`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/group/{value}` * `attribute.{custom_attribute}`: `principalSet://iam.googleapis.com/projects/{project}/locations/{location}/workloadIdentityPools/{pool}/attribute.{custom_attribute}/{value}` Each value must be a [Common Expression Language] (https://opensource.google/projects/cel) function that maps an identity provider credential to the normalized attribute specified by the corresponding map key. You can use the `assertion` keyword in the expression to access a JSON representation of the authentication credential issued by the provider. The maximum length of an attribute mapping expression is 2048 characters. When evaluated, the total size of all mapped attributes must not exceed 8KB. For AWS providers, if no attribute mapping is defined, the following default mapping applies: ``` { \"google.subject\":\"assertion.arn\", \"attribute.aws_role\": \"assertion.arn.contains('assumed-role')\" \" ? assertion.arn.extract('{account_arn}assumed-role/')\" \" + 'assumed-role/'\" \" + assertion.arn.extract('assumed-role/{role_name}/')\" \" : assertion.arn\", } ``` If any custom attribute mappings are defined, they must include a mapping to the `google.subject` attribute. For OIDC providers, you must supply a custom mapping, which must include the `google.subject` attribute. For example, the following maps the `sub` claim of the incoming credential to the `subject` attribute on a Google token: ``` {\"google.subject\": \"assertion.sub\"} ```",
            "type": "object"
          },
          "aws": {
            "$ref": "#/types/google-native:iam%2Fv1:AwsResponse",
            "description": "An Amazon Web Services identity provider."
          },
          "description": {
            "description": "A description for the provider. Cannot exceed 256 characters.",
            "type": "string"
          },
          "disabled": {
            "description": "Whether the provider is disabled. You cannot use a disabled provider to exchange tokens. However, existing tokens still grant access.",
            "type": "boolean"
          },
          "displayName": {
            "description": "A display name for the provider. Cannot exceed 32 characters.",
            "type": "string"
          },
          "expireTime": {
            "description": "Time after which the workload identity pool provider will be permanently purged and cannot be recovered.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the provider.",
            "type": "string"
          },
          "oidc": {
            "$ref": "#/types/google-native:iam%2Fv1:OidcResponse",
            "description": "An OpenId Connect 1.0 identity provider."
          },
          "saml": {
            "$ref": "#/types/google-native:iam%2Fv1:SamlResponse",
            "description": "An SAML 2.0 identity provider."
          },
          "state": {
            "description": "The state of the provider.",
            "type": "string"
          }
        },
        "required": [
          "attributeCondition",
          "attributeMapping",
          "aws",
          "description",
          "disabled",
          "displayName",
          "expireTime",
          "name",
          "oidc",
          "saml",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getRole": {
      "description": "Gets the definition of a Role.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "roleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "roleId"
        ]
      },
      "outputs": {
        "properties": {
          "deleted": {
            "description": "The current deleted state of the role. This field is read only. It will be ignored in calls to CreateRole and UpdateRole.",
            "type": "boolean"
          },
          "description": {
            "description": "Optional. A human-readable description for the role.",
            "type": "string"
          },
          "etag": {
            "description": "Used to perform a consistent read-modify-write.",
            "type": "string"
          },
          "includedPermissions": {
            "description": "The names of the permissions this role grants when bound in an IAM policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the role. When `Role` is used in `CreateRole`, the role name must not be set. When `Role` is used in output and other input such as `UpdateRole`, the role name is the complete path. For example, `roles/logging.viewer` for predefined roles, `organizations/{ORGANIZATION_ID}/roles/my-role` for organization-level custom roles, and `projects/{PROJECT_ID}/roles/my-role` for project-level custom roles.",
            "type": "string"
          },
          "stage": {
            "description": "The current launch stage of the role. If the `ALPHA` launch stage has been selected for a role, the `stage` field will not be included in the returned definition for the role.",
            "type": "string"
          },
          "title": {
            "description": "Optional. A human-readable title for the role. Typically this is limited to 100 UTF-8 bytes.",
            "type": "string"
          }
        },
        "required": [
          "deleted",
          "description",
          "etag",
          "includedPermissions",
          "name",
          "stage",
          "title"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getServiceAccount": {
      "description": "Gets a ServiceAccount.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "serviceAccountId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "serviceAccountId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Optional. A user-specified, human-readable description of the service account. The maximum length is 256 UTF-8 bytes.",
            "type": "string"
          },
          "disabled": {
            "description": "Whether the service account is disabled.",
            "type": "boolean"
          },
          "displayName": {
            "description": "Optional. A user-specified, human-readable name for the service account. The maximum length is 100 UTF-8 bytes.",
            "type": "string"
          },
          "email": {
            "description": "The email address of the service account.",
            "type": "string"
          },
          "etag": {
            "deprecationMessage": "Deprecated. Do not use.",
            "description": "Deprecated. Do not use.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the service account. Use one of the following formats: * `projects/{PROJECT_ID}/serviceAccounts/{EMAIL_ADDRESS}` * `projects/{PROJECT_ID}/serviceAccounts/{UNIQUE_ID}` As an alternative, you can use the `-` wildcard character instead of the project ID: * `projects/-/serviceAccounts/{EMAIL_ADDRESS}` * `projects/-/serviceAccounts/{UNIQUE_ID}` When possible, avoid using the `-` wildcard character, because it can cause response messages to contain misleading error codes. For example, if you try to access the service account `projects/-/serviceAccounts/fake@example.com`, which does not exist, the response contains an HTTP `403 Forbidden` error instead of a `404 Not Found` error.",
            "type": "string"
          },
          "oauth2ClientId": {
            "description": "The OAuth 2.0 client ID for the service account.",
            "type": "string"
          },
          "project": {
            "description": "The ID of the project that owns the service account.",
            "type": "string"
          },
          "uniqueId": {
            "description": "The unique, stable numeric ID for the service account. Each service account retains its unique ID even if you delete the service account. For example, if you delete a service account, then create a new service account with the same name, the new service account has a different unique ID than the deleted service account.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "disabled",
          "displayName",
          "email",
          "etag",
          "name",
          "oauth2ClientId",
          "project",
          "uniqueId"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getServiceAccountIamPolicy": {
      "description": "Gets the IAM policy that is attached to a ServiceAccount. This IAM policy specifies which principals have access to the service account. This method does not tell you whether the service account has been granted any roles on other resources. To check whether a service account has role grants on a resource, use the `getIamPolicy` method for that resource. For example, to view the role grants for a project, call the Resource Manager API's [`projects.getIamPolicy`](https://cloud.google.com/resource-manager/reference/rest/v1/projects/getIamPolicy) method.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceAccountId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "serviceAccountId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:iam%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:iam%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getWorkforcePool": {
      "description": "Gets an individual WorkforcePool.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "workforcePoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workforcePoolId"
        ]
      },
      "outputs": {
        "properties": {
          "accessRestrictions": {
            "$ref": "#/types/google-native:iam%2Fv1:AccessRestrictionsResponse",
            "description": "Optional. Configure access restrictions on the workforce pool users. This is an optional field. If specified web sign-in can be restricted to given set of services or programmatic sign-in can be disabled for pool users."
          },
          "description": {
            "description": "A user-specified description of the pool. Cannot exceed 256 characters.",
            "type": "string"
          },
          "disabled": {
            "description": "Disables the workforce pool. You cannot use a disabled pool to exchange tokens, or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again.",
            "type": "boolean"
          },
          "displayName": {
            "description": "A user-specified display name of the pool in Google Cloud Console. Cannot exceed 32 characters.",
            "type": "string"
          },
          "expireTime": {
            "description": "Time after which the workforce pool will be permanently purged and cannot be recovered.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the pool. Format: `locations/{location}/workforcePools/{workforce_pool_id}`",
            "type": "string"
          },
          "parent": {
            "description": "Immutable. The resource name of the parent. Format: `organizations/{org-id}`.",
            "type": "string"
          },
          "sessionDuration": {
            "description": "Duration that the Google Cloud access tokens, console sign-in sessions, and `gcloud` sign-in sessions from this pool are valid. Must be greater than 15 minutes (900s) and less than 12 hours (43200s). If `session_duration` is not configured, minted credentials have a default duration of one hour (3600s). For SAML providers, the lifetime of the token is the minimum of the `session_duration` and the `SessionNotOnOrAfter` claim in the SAML assertion.",
            "type": "string"
          },
          "state": {
            "description": "The state of the pool.",
            "type": "string"
          }
        },
        "required": [
          "accessRestrictions",
          "description",
          "disabled",
          "displayName",
          "expireTime",
          "name",
          "parent",
          "sessionDuration",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getWorkforcePoolIamPolicy": {
      "description": "Gets IAM policies on a WorkforcePool.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "workforcePoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workforcePoolId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:iam%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:iam%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getWorkforcePoolKey": {
      "description": "Gets a WorkforcePoolProviderKey.",
      "inputs": {
        "properties": {
          "keyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          },
          "workforcePoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "keyId",
          "location",
          "providerId",
          "workforcePoolId"
        ]
      },
      "outputs": {
        "properties": {
          "expireTime": {
            "description": "The time after which the key will be permanently deleted and cannot be recovered. Note that the key may get purged before this time if the total limit of keys per provider is exceeded.",
            "type": "string"
          },
          "keyData": {
            "$ref": "#/types/google-native:iam%2Fv1:KeyDataResponse",
            "description": "Immutable. Public half of the asymmetric key."
          },
          "name": {
            "description": "The resource name of the key.",
            "type": "string"
          },
          "state": {
            "description": "The state of the key.",
            "type": "string"
          },
          "use": {
            "description": "The purpose of the key.",
            "type": "string"
          }
        },
        "required": [
          "expireTime",
          "keyData",
          "name",
          "state",
          "use"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getWorkforcePoolProvider": {
      "description": "Gets an individual WorkforcePoolProvider.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          },
          "workforcePoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "providerId",
          "workforcePoolId"
        ]
      },
      "outputs": {
        "properties": {
          "attributeCondition": {
            "description": "A [Common Expression Language](https://opensource.google/projects/cel) expression, in plain text, to restrict what otherwise valid authentication credentials issued by the provider should not be accepted. The expression must output a boolean representing whether to allow the federation. The following keywords may be referenced in the expressions: * `assertion`: JSON representing the authentication credential issued by the provider. * `google`: The Google attributes mapped from the assertion in the `attribute_mappings`. `google.profile_photo` and `google.display_name` are not supported. * `attribute`: The custom attributes mapped from the assertion in the `attribute_mappings`. The maximum length of the attribute condition expression is 4096 characters. If unspecified, all valid authentication credentials will be accepted. The following example shows how to only allow credentials with a mapped `google.groups` value of `admins`: ``` \"'admins' in google.groups\" ```",
            "type": "string"
          },
          "attributeMapping": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Maps attributes from the authentication credentials issued by an external identity provider to Google Cloud attributes, such as `subject` and `segment`. Each key must be a string specifying the Google Cloud IAM attribute to map to. The following keys are supported: * `google.subject`: The principal IAM is authenticating. You can reference this value in IAM bindings. This is also the subject that appears in Cloud Logging logs. This is a required field and the mapped subject cannot exceed 127 bytes. * `google.groups`: Groups the authenticating user belongs to. You can grant groups access to resources using an IAM `principalSet` binding; access applies to all members of the group. * `google.display_name`: The name of the authenticated user. This is an optional field and the mapped display name cannot exceed 100 bytes. If not set, `google.subject` will be displayed instead. This attribute cannot be referenced in IAM bindings. * `google.profile_photo`: The URL that specifies the authenticated user's thumbnail photo. This is an optional field. When set, the image will be visible as the user's profile picture. If not set, a generic user icon will be displayed instead. This attribute cannot be referenced in IAM bindings. You can also provide custom attributes by specifying `attribute.{custom_attribute}`, where {custom_attribute} is the name of the custom attribute to be mapped. You can define a maximum of 50 custom attributes. The maximum length of a mapped attribute key is 100 characters, and the key may only contain the characters [a-z0-9_]. You can reference these attributes in IAM policies to define fine-grained access for a workforce pool to Google Cloud resources. For example: * `google.subject`: `principal://iam.googleapis.com/locations/global/workforcePools/{pool}/subject/{value}` * `google.groups`: `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool}/group/{value}` * `attribute.{custom_attribute}`: `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool}/attribute.{custom_attribute}/{value}` Each value must be a [Common Expression Language] (https://opensource.google/projects/cel) function that maps an identity provider credential to the normalized attribute specified by the corresponding map key. You can use the `assertion` keyword in the expression to access a JSON representation of the authentication credential issued by the provider. The maximum length of an attribute mapping expression is 2048 characters. When evaluated, the total size of all mapped attributes must not exceed 4KB. For OIDC providers, you must supply a custom mapping that includes the `google.subject` attribute. For example, the following maps the `sub` claim of the incoming credential to the `subject` attribute on a Google token: ``` {\"google.subject\": \"assertion.sub\"} ```",
            "type": "object"
          },
          "description": {
            "description": "A user-specified description of the provider. Cannot exceed 256 characters.",
            "type": "string"
          },
          "disabled": {
            "description": "Disables the workforce pool provider. You cannot use a disabled provider to exchange tokens. However, existing tokens still grant access.",
            "type": "boolean"
          },
          "displayName": {
            "description": "A user-specified display name for the provider. Cannot exceed 32 characters.",
            "type": "string"
          },
          "expireTime": {
            "description": "Time after which the workload pool provider will be permanently purged and cannot be recovered.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the provider. Format: `locations/{location}/workforcePools/{workforce_pool_id}/providers/{provider_id}`",
            "type": "string"
          },
          "oidc": {
            "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderOidcResponse",
            "description": "An OpenId Connect 1.0 identity provider configuration."
          },
          "saml": {
            "$ref": "#/types/google-native:iam%2Fv1:GoogleIamAdminV1WorkforcePoolProviderSamlResponse",
            "description": "A SAML identity provider configuration."
          },
          "state": {
            "description": "The state of the provider.",
            "type": "string"
          }
        },
        "required": [
          "attributeCondition",
          "attributeMapping",
          "description",
          "disabled",
          "displayName",
          "expireTime",
          "name",
          "oidc",
          "saml",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getWorkloadIdentityPool": {
      "description": "Gets an individual WorkloadIdentityPool.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workloadIdentityPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workloadIdentityPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "A description of the pool. Cannot exceed 256 characters.",
            "type": "string"
          },
          "disabled": {
            "description": "Whether the pool is disabled. You cannot use a disabled pool to exchange tokens, or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again.",
            "type": "boolean"
          },
          "displayName": {
            "description": "A display name for the pool. Cannot exceed 32 characters.",
            "type": "string"
          },
          "expireTime": {
            "description": "Time after which the workload identity pool will be permanently purged and cannot be recovered.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the pool.",
            "type": "string"
          },
          "state": {
            "description": "The state of the pool.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "disabled",
          "displayName",
          "expireTime",
          "name",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:iam/v1:getWorkloadIdentityPoolKey": {
      "description": "Gets an individual WorkloadIdentityPoolProviderKey.",
      "inputs": {
        "properties": {
          "keyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          },
          "workloadIdentityPoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "keyId",
          "location",
          "providerId",
          "workloadIdentityPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "expireTime": {
            "description": "Time after which the key will be permanently purged and cannot be recovered. Note that the key may get purged before this timestamp if the total limit of keys per provider is crossed.",
            "type": "string"
          },
          "keyData": {
            "$ref": "#/types/google-native:iam%2Fv1:KeyDataResponse",
            "description": "Immutable. Public half of the asymmetric key."
          },
          "name": {
            "description": "The resource name of the key.",
            "type": "string"
          },
          "state": {
            "description": "The state of the key.",
            "type": "string"
          },
          "use": {
            "description": "The purpose of the key.",
            "type": "string"
          }
        },
        "required": [
          "expireTime",
          "keyData",
          "name",
          "state",
          "use"
        ],
        "type": "object"
      }
    },
    "google-native:iap/v1:getBrand": {
      "description": "Retrieves the OAuth brand of the project.",
      "inputs": {
        "properties": {
          "brandId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "brandId"
        ]
      },
      "outputs": {
        "properties": {
          "applicationTitle": {
            "description": "Application name displayed on OAuth consent screen.",
            "type": "string"
          },
          "name": {
            "description": "Identifier of the brand. NOTE: GCP project number achieves the same brand identification purpose as only one brand per project can be created.",
            "type": "string"
          },
          "orgInternalOnly": {
            "description": "Whether the brand is only intended for usage inside the G Suite organization only.",
            "type": "boolean"
          },
          "supportEmail": {
            "description": "Support email displayed on the OAuth consent screen.",
            "type": "string"
          }
        },
        "required": [
          "applicationTitle",
          "name",
          "orgInternalOnly",
          "supportEmail"
        ],
        "type": "object"
      }
    },
    "google-native:iap/v1:getDestGroup": {
      "description": "Retrieves an existing TunnelDestGroup.",
      "inputs": {
        "properties": {
          "destGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "destGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "cidrs": {
            "description": "Unordered list. List of CIDRs that this group applies to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fqdns": {
            "description": "Unordered list. List of FQDNs that this group applies to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Identifier for the TunnelDestGroup. Must be unique within the project and contain only lower case letters (a-z) and dashes (-).",
            "type": "string"
          }
        },
        "required": [
          "cidrs",
          "fqdns",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:iap/v1:getIdentityAwareProxyClient": {
      "description": "Retrieves an Identity Aware Proxy (IAP) OAuth client. Requires that the client is owned by IAP.",
      "inputs": {
        "properties": {
          "brandId": {
            "type": "string"
          },
          "identityAwareProxyClientId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "brandId",
          "identityAwareProxyClientId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "Human-friendly name given to the OAuth client.",
            "type": "string"
          },
          "name": {
            "description": "Unique identifier of the OAuth client.",
            "type": "string"
          },
          "secret": {
            "description": "Client secret of the OAuth client.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "name",
          "secret"
        ],
        "type": "object"
      }
    },
    "google-native:iap/v1:getV1IamPolicy": {
      "description": "Gets the access control policy for an Identity-Aware Proxy protected resource. More information about managing access via IAP can be found at: https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api",
      "inputs": {
        "properties": {
          "v1Id": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "v1Id"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:iap%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:iap/v1beta1:getV1beta1IamPolicy": {
      "description": "Gets the access control policy for an Identity-Aware Proxy protected resource. More information about managing access via IAP can be found at: https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api",
      "inputs": {
        "properties": {
          "v1beta1Id": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "v1beta1Id"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:iap%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:identitytoolkit/v2:getDefaultSupportedIdpConfig": {
      "description": "Retrieve a default supported Idp configuration for an Identity Toolkit project.",
      "inputs": {
        "properties": {
          "defaultSupportedIdpConfigId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "defaultSupportedIdpConfigId",
          "tenantId"
        ]
      },
      "outputs": {
        "properties": {
          "appleSignInConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2AppleSignInConfigResponse",
            "description": "Additional config for Apple-based projects."
          },
          "clientId": {
            "description": "OAuth client ID.",
            "type": "string"
          },
          "clientSecret": {
            "description": "OAuth client secret.",
            "type": "string"
          },
          "enabled": {
            "description": "True if allows the user to sign in with the provider.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the DefaultSupportedIdpConfig resource, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\"",
            "type": "string"
          }
        },
        "required": [
          "appleSignInConfig",
          "clientId",
          "clientSecret",
          "enabled",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:identitytoolkit/v2:getInboundSamlConfig": {
      "description": "Retrieve an inbound SAML configuration for an Identity Toolkit project.",
      "inputs": {
        "properties": {
          "inboundSamlConfigId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "inboundSamlConfigId",
          "tenantId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The config's display name set by developers.",
            "type": "string"
          },
          "enabled": {
            "description": "True if allows the user to sign in with the provider.",
            "type": "boolean"
          },
          "idpConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2IdpConfigResponse",
            "description": "The SAML IdP (Identity Provider) configuration when the project acts as the relying party."
          },
          "name": {
            "description": "The name of the InboundSamlConfig resource, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'. Ignored during create requests.",
            "type": "string"
          },
          "spConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2SpConfigResponse",
            "description": "The SAML SP (Service Provider) configuration when the project acts as the relying party to receive and accept an authentication assertion issued by a SAML identity provider."
          }
        },
        "required": [
          "displayName",
          "enabled",
          "idpConfig",
          "name",
          "spConfig"
        ],
        "type": "object"
      }
    },
    "google-native:identitytoolkit/v2:getOauthIdpConfig": {
      "description": "Retrieve an Oidc Idp configuration for an Identity Toolkit project.",
      "inputs": {
        "properties": {
          "oauthIdpConfigId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "oauthIdpConfigId",
          "tenantId"
        ]
      },
      "outputs": {
        "properties": {
          "clientId": {
            "description": "The client id of an OAuth client.",
            "type": "string"
          },
          "clientSecret": {
            "description": "The client secret of the OAuth client, to enable OIDC code flow.",
            "type": "string"
          },
          "displayName": {
            "description": "The config's display name set by developers.",
            "type": "string"
          },
          "enabled": {
            "description": "True if allows the user to sign in with the provider.",
            "type": "boolean"
          },
          "issuer": {
            "description": "For OIDC Idps, the issuer identifier.",
            "type": "string"
          },
          "name": {
            "description": "The name of the OAuthIdpConfig resource, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'. Ignored during create requests.",
            "type": "string"
          },
          "responseType": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2OAuthResponseTypeResponse",
            "description": "The response type to request for in the OAuth authorization flow. You can set either `id_token` or `code` to true, but not both. Setting both types to be simultaneously true (`{code: true, id_token: true}`) is not yet supported."
          }
        },
        "required": [
          "clientId",
          "clientSecret",
          "displayName",
          "enabled",
          "issuer",
          "name",
          "responseType"
        ],
        "type": "object"
      }
    },
    "google-native:identitytoolkit/v2:getTenant": {
      "description": "Get a tenant. Requires read permission on the Tenant resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "tenantId"
        ]
      },
      "outputs": {
        "properties": {
          "allowPasswordSignup": {
            "description": "Whether to allow email/password user authentication.",
            "type": "boolean"
          },
          "autodeleteAnonymousUsers": {
            "description": "Whether anonymous users will be auto-deleted after a period of 30 days.",
            "type": "boolean"
          },
          "client": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2ClientPermissionConfigResponse",
            "description": "Options related to how clients making requests on behalf of a project should be configured."
          },
          "disableAuth": {
            "description": "Whether authentication is disabled for the tenant. If true, the users under the disabled tenant are not allowed to sign-in. Admins of the disabled tenant are not able to manage its users.",
            "type": "boolean"
          },
          "displayName": {
            "description": "Display name of the tenant.",
            "type": "string"
          },
          "emailPrivacyConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfigResponse",
            "description": "Configuration for settings related to email privacy and public visibility."
          },
          "enableAnonymousUser": {
            "description": "Whether to enable anonymous user authentication.",
            "type": "boolean"
          },
          "enableEmailLinkSignin": {
            "description": "Whether to enable email link user authentication.",
            "type": "boolean"
          },
          "hashConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2HashConfigResponse",
            "description": "Hash config information of a tenant for display on Pantheon. This can only be displayed on Pantheon to avoid the sensitive information to get accidentally leaked. Only returned in GetTenant response to restrict reading of this information. Requires firebaseauth.configs.getHashConfig permission on the agent project for returning this field."
          },
          "inheritance": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2InheritanceResponse",
            "description": "Specify the settings that the tenant could inherit."
          },
          "mfaConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfigResponse",
            "description": "The tenant-level configuration of MFA options."
          },
          "monitoring": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2MonitoringConfigResponse",
            "description": "Configuration related to monitoring project activity."
          },
          "name": {
            "description": "Resource name of a tenant. For example: \"projects/{project-id}/tenants/{tenant-id}\"",
            "type": "string"
          },
          "passwordPolicyConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfigResponse",
            "description": "The tenant-level password policy config"
          },
          "recaptchaConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2RecaptchaConfigResponse",
            "description": "The tenant-level reCAPTCHA config."
          },
          "smsRegionConfig": {
            "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleCloudIdentitytoolkitAdminV2SmsRegionConfigResponse",
            "description": "Configures which regions are enabled for SMS verification code sending."
          },
          "testPhoneNumbers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of pairs that can be used for MFA. The phone number should be in E.164 format (https://www.itu.int/rec/T-REC-E.164/) and a maximum of 10 pairs can be added (error will be thrown once exceeded).",
            "type": "object"
          }
        },
        "required": [
          "allowPasswordSignup",
          "autodeleteAnonymousUsers",
          "client",
          "disableAuth",
          "displayName",
          "emailPrivacyConfig",
          "enableAnonymousUser",
          "enableEmailLinkSignin",
          "hashConfig",
          "inheritance",
          "mfaConfig",
          "monitoring",
          "name",
          "passwordPolicyConfig",
          "recaptchaConfig",
          "smsRegionConfig",
          "testPhoneNumbers"
        ],
        "type": "object"
      }
    },
    "google-native:identitytoolkit/v2:getTenantIamPolicy": {
      "description": "Gets the access control policy for a resource. An error is returned if the resource does not exist. An empty policy is returned if the resource exists but does not have a policy set on it. Caller must have the right Google IAM permission on the resource.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "tenantId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:identitytoolkit%2Fv2:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:ids/v1:getEndpoint": {
      "description": "Gets details of a single Endpoint.",
      "inputs": {
        "properties": {
          "endpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time timestamp.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the endpoint",
            "type": "string"
          },
          "endpointForwardingRule": {
            "description": "The fully qualified URL of the endpoint's ILB Forwarding Rule.",
            "type": "string"
          },
          "endpointIp": {
            "description": "The IP address of the IDS Endpoint's ILB.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels of the endpoint.",
            "type": "object"
          },
          "name": {
            "description": "The name of the endpoint.",
            "type": "string"
          },
          "network": {
            "description": "The fully qualified URL of the network to which the IDS Endpoint is attached.",
            "type": "string"
          },
          "severity": {
            "description": "Lowest threat severity that this endpoint will alert on.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the endpoint.",
            "type": "string"
          },
          "threatExceptions": {
            "description": "List of threat IDs to be excepted from generating alerts.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "trafficLogs": {
            "description": "Whether the endpoint should report traffic logs in addition to threat logs.",
            "type": "boolean"
          },
          "updateTime": {
            "description": "The update time timestamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "endpointForwardingRule",
          "endpointIp",
          "labels",
          "name",
          "network",
          "severity",
          "state",
          "threatExceptions",
          "trafficLogs",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:ids/v1:getEndpointIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "endpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:ids%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:ids%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:integrations/v1alpha:getAuthConfig": {
      "description": "Gets a complete auth config. If the auth config doesn't exist, Code.NOT_FOUND exception will be thrown. Returns the decrypted auth config.",
      "inputs": {
        "properties": {
          "authConfigId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "authConfigId",
          "location",
          "productId"
        ]
      },
      "outputs": {
        "properties": {
          "certificateId": {
            "description": "Certificate id for client certificate",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the auth config is created.",
            "type": "string"
          },
          "creatorEmail": {
            "description": "The creator's email address. Generated based on the End User Credentials/LOAS role of the user making the call.",
            "type": "string"
          },
          "credentialType": {
            "description": "Credential type of the encrypted credential.",
            "type": "string"
          },
          "decryptedCredential": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCredentialResponse",
            "description": "Raw auth credentials."
          },
          "description": {
            "description": "A description of the auth config.",
            "type": "string"
          },
          "displayName": {
            "description": "The name of the auth config.",
            "type": "string"
          },
          "encryptedCredential": {
            "description": "Auth credential encrypted by Cloud KMS. Can be decrypted as Credential with proper KMS key.",
            "type": "string"
          },
          "expiryNotificationDuration": {
            "description": "User can define the time to receive notification after which the auth config becomes invalid. Support up to 30 days. Support granularity in hours.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "lastModifierEmail": {
            "description": "The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the SFDC instance projects/{project}/locations/{location}/authConfigs/{authConfig}.",
            "type": "string"
          },
          "overrideValidTime": {
            "description": "User provided expiry time to override. For the example of Salesforce, username/password credentials can be valid for 6 months depending on the instance settings.",
            "type": "string"
          },
          "reason": {
            "description": "The reason / details of the current status.",
            "type": "string"
          },
          "state": {
            "description": "The status of the auth config.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the auth config is modified.",
            "type": "string"
          },
          "validTime": {
            "description": "The time until the auth config is valid. Empty or max value is considered the auth config won't expire.",
            "type": "string"
          },
          "visibility": {
            "description": "The visibility of the auth config.",
            "type": "string"
          }
        },
        "required": [
          "certificateId",
          "createTime",
          "creatorEmail",
          "credentialType",
          "decryptedCredential",
          "description",
          "displayName",
          "encryptedCredential",
          "expiryNotificationDuration",
          "lastModifierEmail",
          "name",
          "overrideValidTime",
          "reason",
          "state",
          "updateTime",
          "validTime",
          "visibility"
        ],
        "type": "object"
      }
    },
    "google-native:integrations/v1alpha:getCertificate": {
      "description": "Get a certificates in the specified project.",
      "inputs": {
        "properties": {
          "certificateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateId",
          "location",
          "productId"
        ]
      },
      "outputs": {
        "properties": {
          "certificateStatus": {
            "description": "Status of the certificate",
            "type": "string"
          },
          "credentialId": {
            "description": "Immutable. Credential id that will be used to register with trawler INTERNAL_ONLY",
            "type": "string"
          },
          "description": {
            "description": "Description of the certificate",
            "type": "string"
          },
          "displayName": {
            "description": "Name of the certificate",
            "type": "string"
          },
          "name": {
            "description": "Auto generated primary key",
            "type": "string"
          },
          "rawCertificate": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaClientCertificateResponse",
            "description": "Input only. Raw client certificate which would be registered with trawler"
          },
          "requestorId": {
            "description": "Immutable. Requestor ID to be used to register certificate with trawler",
            "type": "string"
          },
          "validEndTime": {
            "description": "The timestamp after which certificate will expire",
            "type": "string"
          },
          "validStartTime": {
            "description": "The timestamp after which certificate will be valid",
            "type": "string"
          }
        },
        "required": [
          "certificateStatus",
          "credentialId",
          "description",
          "displayName",
          "name",
          "rawCertificate",
          "requestorId",
          "validEndTime",
          "validStartTime"
        ],
        "type": "object"
      }
    },
    "google-native:integrations/v1alpha:getSfdcChannel": {
      "description": "Gets an sfdc channel. If the channel doesn't exist, Code.NOT_FOUND exception will be thrown.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sfdcChannelId": {
            "type": "string"
          },
          "sfdcInstanceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "productId",
          "sfdcChannelId",
          "sfdcInstanceId"
        ]
      },
      "outputs": {
        "properties": {
          "channelTopic": {
            "description": "The Channel topic defined by salesforce once an channel is opened",
            "type": "string"
          },
          "createTime": {
            "description": "Time when the channel is created",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time when the channel was deleted. Empty if not deleted.",
            "type": "string"
          },
          "description": {
            "description": "The description for this channel",
            "type": "string"
          },
          "displayName": {
            "description": "Client level unique name/alias to easily reference a channel.",
            "type": "string"
          },
          "isActive": {
            "description": "Indicated if a channel has any active integrations referencing it. Set to false when the channel is created, and set to true if there is any integration published with the channel configured in it.",
            "type": "boolean"
          },
          "lastReplayId": {
            "description": "Last sfdc messsage replay id for channel",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the SFDC channel projects/{project}/locations/{location}/sfdcInstances/{sfdc_instance}/sfdcChannels/{sfdc_channel}.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the channel was last updated",
            "type": "string"
          }
        },
        "required": [
          "channelTopic",
          "createTime",
          "deleteTime",
          "description",
          "displayName",
          "isActive",
          "lastReplayId",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:integrations/v1alpha:getSfdcInstance": {
      "description": "Gets an sfdc instance. If the instance doesn't exist, Code.NOT_FOUND exception will be thrown.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sfdcInstanceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "productId",
          "sfdcInstanceId"
        ]
      },
      "outputs": {
        "properties": {
          "authConfigId": {
            "description": "A list of AuthConfigs that can be tried to open the channel to SFDC",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Time when the instance is created",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time when the instance was deleted. Empty if not deleted.",
            "type": "string"
          },
          "description": {
            "description": "A description of the sfdc instance.",
            "type": "string"
          },
          "displayName": {
            "description": "User selected unique name/alias to easily reference an instance.",
            "type": "string"
          },
          "name": {
            "description": "Resource name of the SFDC instance projects/{project}/locations/{location}/sfdcInstances/{sfdcInstance}.",
            "type": "string"
          },
          "serviceAuthority": {
            "description": "URL used for API calls after authentication (the login authority is configured within the referenced AuthConfig).",
            "type": "string"
          },
          "sfdcOrgId": {
            "description": "The SFDC Org Id. This is defined in salesforce.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the instance was last updated",
            "type": "string"
          }
        },
        "required": [
          "authConfigId",
          "createTime",
          "deleteTime",
          "description",
          "displayName",
          "name",
          "serviceAuthority",
          "sfdcOrgId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:integrations/v1alpha:getTemplatesVersion": {
      "description": "Returns an IntegrationTemplateVersion in the specified project.",
      "inputs": {
        "properties": {
          "integrationtemplateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "integrationtemplateId",
          "location",
          "productId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Auto-generated.",
            "type": "string"
          },
          "databasePersistencePolicy": {
            "description": "Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The templateversion description. Permitted format is alphanumeric with underscores and no spaces.",
            "type": "string"
          },
          "errorCatcherConfigs": {
            "description": "Optional. Error Catch Task configuration for the IntegrationTemplateVersion. It's optional.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaErrorCatcherConfigResponse"
            },
            "type": "array"
          },
          "lastModifierEmail": {
            "description": "Optional. The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call.",
            "type": "string"
          },
          "name": {
            "description": "Auto-generated primary key. Format: projects/{project}/locations/{location}/products/{product}/integrationtemplates/{integrationtemplate}/versions/{version}",
            "type": "string"
          },
          "parentIntegrationVersionId": {
            "description": "Optional. ID of the IntegrationVersion that was used to create this IntegrationTemplateVersion",
            "type": "string"
          },
          "snapshotNumber": {
            "description": "An increasing sequence that is set when a new snapshot is created.",
            "type": "string"
          },
          "status": {
            "description": "Optional. Generated by eventbus. User should not set it as an input.",
            "type": "string"
          },
          "taskConfigs": {
            "description": "Optional. Task configuration for the IntegrationTemplateVersion. It's optional, but the IntegrationTemplateVersion doesn't do anything without task_configs.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigResponse"
            },
            "type": "array"
          },
          "teardown": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTeardownResponse",
            "description": "Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to \"finally\" in code."
          },
          "templateParameters": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParametersResponse",
            "description": "Optional. Parameters that are expected to be passed to the IntegrationTemplateVersion when an event is triggered. This consists of all the parameters that are expected in the IntegrationTemplateVersion execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter."
          },
          "triggerConfigs": {
            "description": "Optional. Trigger configurations.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Auto-generated.",
            "type": "string"
          },
          "userLabel": {
            "description": "Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "databasePersistencePolicy",
          "description",
          "errorCatcherConfigs",
          "lastModifierEmail",
          "name",
          "parentIntegrationVersionId",
          "snapshotNumber",
          "status",
          "taskConfigs",
          "teardown",
          "templateParameters",
          "triggerConfigs",
          "updateTime",
          "userLabel"
        ],
        "type": "object"
      }
    },
    "google-native:integrations/v1alpha:getTestCase": {
      "description": "Get a test case",
      "inputs": {
        "properties": {
          "integrationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "testCaseId": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "integrationId",
          "location",
          "testCaseId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Auto-generated.",
            "type": "string"
          },
          "creatorEmail": {
            "description": "Optional. The creator's email address. Generated based on the End User Credentials/LOAS role of the user making the call.",
            "type": "string"
          },
          "databasePersistencePolicy": {
            "description": "Optional. Various policies for how to persist the test execution info including execution info, execution export info, execution metadata index and execution param index..",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the test case.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of test case.",
            "type": "string"
          },
          "lastModifierEmail": {
            "description": "The last modifer's email address. Generated based on the End User Credentials/LOAS role of the user making the call.",
            "type": "string"
          },
          "lockHolderEmail": {
            "description": "Optional. The edit lock holder's email address. Generated based on the End User Credentials/LOAS role of the user making the call.",
            "type": "string"
          },
          "name": {
            "description": "Auto-generated primary key.",
            "type": "string"
          },
          "testInputParameters": {
            "description": "Optional. Parameters that are expected to be passed to the test case when the test case is triggered. This gives the user the ability to provide default values. This should include all the output variables of the trigger as input variables.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterResponse"
            },
            "type": "array"
          },
          "testTaskConfigs": {
            "description": "Optional. However, the test case doesn't mock or assert anything without test_task_configs.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTestTaskConfigResponse"
            },
            "type": "array"
          },
          "triggerId": {
            "description": "This defines the trigger ID in workflow which is considered to be executed as starting point of the test case",
            "type": "string"
          },
          "updateTime": {
            "description": "Auto-generated.",
            "type": "string"
          },
          "workflowId": {
            "description": "ID of the workflow with which this test case is associated",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "creatorEmail",
          "databasePersistencePolicy",
          "description",
          "displayName",
          "lastModifierEmail",
          "lockHolderEmail",
          "name",
          "testInputParameters",
          "testTaskConfigs",
          "triggerId",
          "updateTime",
          "workflowId"
        ],
        "type": "object"
      }
    },
    "google-native:integrations/v1alpha:getVersion": {
      "description": "Get a integration in the specified project.",
      "inputs": {
        "properties": {
          "integrationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "integrationId",
          "location",
          "productId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "cloudLoggingDetails": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaCloudLoggingDetailsResponse",
            "description": "Optional. Cloud Logging details for the integration version"
          },
          "createTime": {
            "description": "Auto-generated.",
            "type": "string"
          },
          "databasePersistencePolicy": {
            "description": "Optional. Flag to disable database persistence for execution data, including event execution info, execution export info, execution metadata index and execution param index.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The integration description.",
            "type": "string"
          },
          "errorCatcherConfigs": {
            "description": "Optional. Error Catch Task configuration for the integration. It's optional.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaErrorCatcherConfigResponse"
            },
            "type": "array"
          },
          "integrationParameters": {
            "description": "Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaIntegrationParameterResponse"
            },
            "type": "array"
          },
          "integrationParametersInternal": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoWorkflowParametersResponse",
            "description": "Optional. Parameters that are expected to be passed to the integration when an event is triggered. This consists of all the parameters that are expected in the integration execution. This gives the user the ability to provide default values, add information like PII and also provide data types of each parameter."
          },
          "lastModifierEmail": {
            "description": "Optional. The last modifier's email address. Generated based on the End User Credentials/LOAS role of the user making the call.",
            "type": "string"
          },
          "lockHolder": {
            "description": "Optional. The edit lock holder's email address. Generated based on the End User Credentials/LOAS role of the user making the call.",
            "type": "string"
          },
          "name": {
            "description": "Auto-generated primary key.",
            "type": "string"
          },
          "origin": {
            "description": "Optional. The origin that indicates where this integration is coming from.",
            "type": "string"
          },
          "parentTemplateId": {
            "description": "Optional. The id of the template which was used to create this integration_version.",
            "type": "string"
          },
          "runAsServiceAccount": {
            "description": "Optional. The run-as service account email, if set and auth config is not configured, that will be used to generate auth token to be used in Connector task, Rest caller task and Cloud function task.",
            "type": "string"
          },
          "snapshotNumber": {
            "description": "Optional. An increasing sequence that is set when a new snapshot is created. The last created snapshot can be identified by [workflow_name, org_id latest(snapshot_number)]. However, last created snapshot need not be same as the HEAD. So users should always use \"HEAD\" tag to identify the head.",
            "type": "string"
          },
          "state": {
            "description": "User should not set it as an input.",
            "type": "string"
          },
          "status": {
            "description": "Generated by eventbus. User should not set it as an input.",
            "type": "string"
          },
          "taskConfigs": {
            "description": "Optional. Task configuration for the integration. It's optional, but the integration doesn't do anything without task_configs.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTaskConfigResponse"
            },
            "type": "array"
          },
          "taskConfigsInternal": {
            "description": "Optional. Task configuration for the integration. It's optional, but the integration doesn't do anything without task_configs.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTaskConfigResponse"
            },
            "type": "array"
          },
          "teardown": {
            "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmEventbusProtoTeardownResponse",
            "description": "Optional. Contains a graph of tasks that will be executed before putting the event in a terminal state (SUCCEEDED/FAILED/FATAL), regardless of success or failure, similar to \"finally\" in code."
          },
          "triggerConfigs": {
            "description": "Optional. Trigger configurations.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:GoogleCloudIntegrationsV1alphaTriggerConfigResponse"
            },
            "type": "array"
          },
          "triggerConfigsInternal": {
            "description": "Optional. Trigger configurations.",
            "items": {
              "$ref": "#/types/google-native:integrations%2Fv1alpha:EnterpriseCrmFrontendsEventbusProtoTriggerConfigResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Auto-generated.",
            "type": "string"
          },
          "userLabel": {
            "description": "Optional. A user-defined label that annotates an integration version. Typically, this is only set when the integration version is created.",
            "type": "string"
          }
        },
        "required": [
          "cloudLoggingDetails",
          "createTime",
          "databasePersistencePolicy",
          "description",
          "errorCatcherConfigs",
          "integrationParameters",
          "integrationParametersInternal",
          "lastModifierEmail",
          "lockHolder",
          "name",
          "origin",
          "parentTemplateId",
          "runAsServiceAccount",
          "snapshotNumber",
          "state",
          "status",
          "taskConfigs",
          "taskConfigsInternal",
          "teardown",
          "triggerConfigs",
          "triggerConfigsInternal",
          "updateTime",
          "userLabel"
        ],
        "type": "object"
      }
    },
    "google-native:jobs/v3:getCompany": {
      "description": "Retrieves specified company.",
      "inputs": {
        "properties": {
          "companyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "companyId"
        ]
      },
      "outputs": {
        "properties": {
          "careerSiteUri": {
            "description": "Optional. The URI to employer's career site or careers page on the employer's web site, for example, \"https://careers.google.com\".",
            "type": "string"
          },
          "derivedInfo": {
            "$ref": "#/types/google-native:jobs%2Fv3:CompanyDerivedInfoResponse",
            "description": "Derived details about the company."
          },
          "displayName": {
            "description": "The display name of the company, for example, \"Google LLC\".",
            "type": "string"
          },
          "eeoText": {
            "description": "Optional. Equal Employment Opportunity legal disclaimer text to be associated with all jobs, and typically to be displayed in all roles. The maximum number of allowed characters is 500.",
            "type": "string"
          },
          "externalId": {
            "description": "Client side company identifier, used to uniquely identify the company. The maximum number of allowed characters is 255.",
            "type": "string"
          },
          "headquartersAddress": {
            "description": "Optional. The street address of the company's main headquarters, which may be different from the job location. The service attempts to geolocate the provided address, and populates a more specific location wherever possible in DerivedInfo.headquarters_location.",
            "type": "string"
          },
          "hiringAgency": {
            "description": "Optional. Set to true if it is the hiring agency that post jobs for other employers. Defaults to false if not provided.",
            "type": "boolean"
          },
          "imageUri": {
            "description": "Optional. A URI that hosts the employer's company logo.",
            "type": "string"
          },
          "keywordSearchableJobCustomAttributes": {
            "deprecationMessage": "Optional. This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword search. Jobs with `string_values` under these specified field keys are returned if any of the values matches the search keyword. Custom field values with parenthesis, brackets and special symbols won't be properly searchable, and those keyword queries need to be surrounded by quotes.",
            "description": "Optional. This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword search. Jobs with `string_values` under these specified field keys are returned if any of the values matches the search keyword. Custom field values with parenthesis, brackets and special symbols won't be properly searchable, and those keyword queries need to be surrounded by quotes.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Required during company update. The resource name for a company. This is generated by the service when a company is created. The format is \"projects/{project_id}/companies/{company_id}\", for example, \"projects/api-test-project/companies/foo\".",
            "type": "string"
          },
          "size": {
            "description": "Optional. The employer's company size.",
            "type": "string"
          },
          "suspended": {
            "description": "Indicates whether a company is flagged to be suspended from public availability by the service when job content appears suspicious, abusive, or spammy.",
            "type": "boolean"
          },
          "websiteUri": {
            "description": "Optional. The URI representing the company's primary web site or home page, for example, \"https://www.google.com\". The maximum number of allowed characters is 255.",
            "type": "string"
          }
        },
        "required": [
          "careerSiteUri",
          "derivedInfo",
          "displayName",
          "eeoText",
          "externalId",
          "headquartersAddress",
          "hiringAgency",
          "imageUri",
          "keywordSearchableJobCustomAttributes",
          "name",
          "size",
          "suspended",
          "websiteUri"
        ],
        "type": "object"
      }
    },
    "google-native:jobs/v3:getJob": {
      "description": "Retrieves the specified job, whose status is OPEN or recently EXPIRED within the last 90 days.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId"
        ]
      },
      "outputs": {
        "properties": {
          "addresses": {
            "description": "Optional but strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. 'ReqA' becomes 'ReqA-1', 'ReqA-2', etc.) as multiple jobs with the same company_name, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses \"1600 Amphitheatre Parkway, Mountain View, CA, USA\" and \"London, UK\" may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "applicationInfo": {
            "$ref": "#/types/google-native:jobs%2Fv3:ApplicationInfoResponse",
            "description": "At least one field within ApplicationInfo must be specified. Job application information."
          },
          "companyDisplayName": {
            "description": "Display name of the company listing the job.",
            "type": "string"
          },
          "companyName": {
            "description": "The resource name of the company listing the job, such as \"projects/api-test-project/companies/foo\".",
            "type": "string"
          },
          "compensationInfo": {
            "$ref": "#/types/google-native:jobs%2Fv3:CompensationInfoResponse",
            "description": "Optional. Job compensation information."
          },
          "customAttributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: a-zA-Z*. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.",
            "type": "object"
          },
          "degreeTypes": {
            "description": "Optional. The desired education degrees for the job, such as Bachelors, Masters.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "department": {
            "description": "Optional. The department or functional area within the company with the open position. The maximum number of allowed characters is 255.",
            "type": "string"
          },
          "derivedInfo": {
            "$ref": "#/types/google-native:jobs%2Fv3:JobDerivedInfoResponse",
            "description": "Derived details about the job posting."
          },
          "description": {
            "description": "The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.",
            "type": "string"
          },
          "employmentTypes": {
            "description": "Optional. The employment type(s) of a job, for example, full time or part time.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "incentives": {
            "description": "Optional. A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.",
            "type": "string"
          },
          "jobBenefits": {
            "description": "Optional. The benefits included with the job.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "jobEndTime": {
            "description": "Optional. The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.",
            "type": "string"
          },
          "jobLevel": {
            "description": "Optional. The experience level associated with the job, such as \"Entry Level\".",
            "type": "string"
          },
          "jobStartTime": {
            "description": "Optional. The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.",
            "type": "string"
          },
          "languageCode": {
            "description": "Optional. The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as \"en-US\" or \"sr-Latn\". For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=\"external\" target=\"_blank\" }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to 'en_US'.",
            "type": "string"
          },
          "name": {
            "description": "Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is \"projects/{project_id}/jobs/{job_id}\", for example, \"projects/api-test-project/jobs/1234\". Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.",
            "type": "string"
          },
          "postingCreateTime": {
            "description": "The timestamp when this job posting was created.",
            "type": "string"
          },
          "postingExpireTime": {
            "description": "Optional but strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can't be deleted or listed by the DeleteJob and ListJobs APIs, but it can be retrieved with the GetJob API or updated with the UpdateJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company_name, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum of open jobs count over the past week, otherwise jobs with earlier expire time are cleaned first. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. Timestamp before the instant request is made is considered valid, the job will be treated as expired immediately. If this value is not provided at the time of job creation or is invalid, the job posting expires after 30 days from the job's creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value is not provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include expiry_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job's last update time. Otherwise the expiration date isn't updated.",
            "type": "string"
          },
          "postingPublishTime": {
            "description": "Optional. The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.",
            "type": "string"
          },
          "postingRegion": {
            "description": "Optional. The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn't specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.",
            "type": "string"
          },
          "postingUpdateTime": {
            "description": "The timestamp when this job posting was last updated.",
            "type": "string"
          },
          "processingOptions": {
            "$ref": "#/types/google-native:jobs%2Fv3:ProcessingOptionsResponse",
            "description": "Optional. Options for job processing."
          },
          "promotionValue": {
            "description": "Optional. A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue \u003e0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.",
            "type": "integer"
          },
          "qualifications": {
            "description": "Optional. A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.",
            "type": "string"
          },
          "requisitionId": {
            "description": "The requisition ID, also referred to as the posting ID, assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job is not allowed to be created if there is another job with the same [company_name], language_code and requisition_id. The maximum number of allowed characters is 255.",
            "type": "string"
          },
          "responsibilities": {
            "description": "Optional. A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.",
            "type": "string"
          },
          "title": {
            "description": "The title of the job, such as \"Software Engineer\" The maximum number of allowed characters is 500.",
            "type": "string"
          },
          "visibility": {
            "deprecationMessage": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
            "description": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
            "type": "string"
          }
        },
        "required": [
          "addresses",
          "applicationInfo",
          "companyDisplayName",
          "companyName",
          "compensationInfo",
          "customAttributes",
          "degreeTypes",
          "department",
          "derivedInfo",
          "description",
          "employmentTypes",
          "incentives",
          "jobBenefits",
          "jobEndTime",
          "jobLevel",
          "jobStartTime",
          "languageCode",
          "name",
          "postingCreateTime",
          "postingExpireTime",
          "postingPublishTime",
          "postingRegion",
          "postingUpdateTime",
          "processingOptions",
          "promotionValue",
          "qualifications",
          "requisitionId",
          "responsibilities",
          "title",
          "visibility"
        ],
        "type": "object"
      }
    },
    "google-native:jobs/v4:getCompany": {
      "description": "Retrieves specified company.",
      "inputs": {
        "properties": {
          "companyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "companyId",
          "tenantId"
        ]
      },
      "outputs": {
        "properties": {
          "careerSiteUri": {
            "description": "The URI to employer's career site or careers page on the employer's web site, for example, \"https://careers.google.com\".",
            "type": "string"
          },
          "derivedInfo": {
            "$ref": "#/types/google-native:jobs%2Fv4:CompanyDerivedInfoResponse",
            "description": "Derived details about the company."
          },
          "displayName": {
            "description": "The display name of the company, for example, \"Google LLC\".",
            "type": "string"
          },
          "eeoText": {
            "description": "Equal Employment Opportunity legal disclaimer text to be associated with all jobs, and typically to be displayed in all roles. The maximum number of allowed characters is 500.",
            "type": "string"
          },
          "externalId": {
            "description": "Client side company identifier, used to uniquely identify the company. The maximum number of allowed characters is 255.",
            "type": "string"
          },
          "headquartersAddress": {
            "description": "The street address of the company's main headquarters, which may be different from the job location. The service attempts to geolocate the provided address, and populates a more specific location wherever possible in DerivedInfo.headquarters_location.",
            "type": "string"
          },
          "hiringAgency": {
            "description": "Set to true if it is the hiring agency that post jobs for other employers. Defaults to false if not provided.",
            "type": "boolean"
          },
          "imageUri": {
            "description": "A URI that hosts the employer's company logo.",
            "type": "string"
          },
          "keywordSearchableJobCustomAttributes": {
            "deprecationMessage": "This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword searches. Jobs with `string_values` under these specified field keys are returned if any of the values match the search keyword. Custom field values with parenthesis, brackets and special symbols are not searchable as-is, and those keyword queries must be surrounded by quotes.",
            "description": "This field is deprecated. Please set the searchability of the custom attribute in the Job.custom_attributes going forward. A list of keys of filterable Job.custom_attributes, whose corresponding `string_values` are used in keyword searches. Jobs with `string_values` under these specified field keys are returned if any of the values match the search keyword. Custom field values with parenthesis, brackets and special symbols are not searchable as-is, and those keyword queries must be surrounded by quotes.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Required during company update. The resource name for a company. This is generated by the service when a company is created. The format is \"projects/{project_id}/tenants/{tenant_id}/companies/{company_id}\", for example, \"projects/foo/tenants/bar/companies/baz\".",
            "type": "string"
          },
          "size": {
            "description": "The employer's company size.",
            "type": "string"
          },
          "suspended": {
            "description": "Indicates whether a company is flagged to be suspended from public availability by the service when job content appears suspicious, abusive, or spammy.",
            "type": "boolean"
          },
          "websiteUri": {
            "description": "The URI representing the company's primary web site or home page, for example, \"https://www.google.com\". The maximum number of allowed characters is 255.",
            "type": "string"
          }
        },
        "required": [
          "careerSiteUri",
          "derivedInfo",
          "displayName",
          "eeoText",
          "externalId",
          "headquartersAddress",
          "hiringAgency",
          "imageUri",
          "keywordSearchableJobCustomAttributes",
          "name",
          "size",
          "suspended",
          "websiteUri"
        ],
        "type": "object"
      }
    },
    "google-native:jobs/v4:getJob": {
      "description": "Retrieves the specified job, whose status is OPEN or recently EXPIRED within the last 90 days.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "tenantId"
        ]
      },
      "outputs": {
        "properties": {
          "addresses": {
            "description": "Strongly recommended for the best service experience. Location(s) where the employer is looking to hire for this job posting. Specifying the full street address(es) of the hiring location enables better API results, especially job searches by commute time. At most 50 locations are allowed for best search performance. If a job has more locations, it is suggested to split it into multiple jobs with unique requisition_ids (e.g. 'ReqA' becomes 'ReqA-1', 'ReqA-2', and so on.) as multiple jobs with the same company, language_code and requisition_id are not allowed. If the original requisition_id must be preserved, a custom field should be used for storage. It is also suggested to group the locations that close to each other in the same job for better search experience. Jobs with multiple addresses must have their addresses with the same LocationType to allow location filtering to work properly. (For example, a Job with addresses \"1600 Amphitheatre Parkway, Mountain View, CA, USA\" and \"London, UK\" may not have location filters applied correctly at search time since the first is a LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a job needs to have multiple addresses, it is suggested to split it into multiple jobs with same LocationTypes. The maximum number of allowed characters is 500.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "applicationInfo": {
            "$ref": "#/types/google-native:jobs%2Fv4:ApplicationInfoResponse",
            "description": "Job application information."
          },
          "company": {
            "description": "The resource name of the company listing the job. The format is \"projects/{project_id}/tenants/{tenant_id}/companies/{company_id}\". For example, \"projects/foo/tenants/bar/companies/baz\".",
            "type": "string"
          },
          "companyDisplayName": {
            "description": "Display name of the company listing the job.",
            "type": "string"
          },
          "compensationInfo": {
            "$ref": "#/types/google-native:jobs%2Fv4:CompensationInfoResponse",
            "description": "Job compensation information (a.k.a. \"pay rate\") i.e., the compensation that will paid to the employee."
          },
          "customAttributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of fields to hold both filterable and non-filterable custom job attributes that are not covered by the provided structured fields. The keys of the map are strings up to 64 bytes and must match the pattern: `a-zA-Z*`. For example, key0LikeThis or KEY_1_LIKE_THIS. At most 100 filterable and at most 100 unfilterable keys are supported. For filterable `string_values`, across all keys at most 200 values are allowed, with each string no more than 255 characters. For unfilterable `string_values`, the maximum total size of `string_values` across all keys is 50KB.",
            "type": "object"
          },
          "degreeTypes": {
            "description": "The desired education degrees for the job, such as Bachelors, Masters.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "department": {
            "description": "The department or functional area within the company with the open position. The maximum number of allowed characters is 255.",
            "type": "string"
          },
          "derivedInfo": {
            "$ref": "#/types/google-native:jobs%2Fv4:JobDerivedInfoResponse",
            "description": "Derived details about the job posting."
          },
          "description": {
            "description": "The description of the job, which typically includes a multi-paragraph description of the company and related information. Separate fields are provided on the job object for responsibilities, qualifications, and other job characteristics. Use of these separate job fields is recommended. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 100,000.",
            "type": "string"
          },
          "employmentTypes": {
            "description": "The employment type(s) of a job, for example, full time or part time.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "incentives": {
            "description": "A description of bonus, commission, and other compensation incentives associated with the job not including salary or pay. The maximum number of allowed characters is 10,000.",
            "type": "string"
          },
          "jobBenefits": {
            "description": "The benefits included with the job.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "jobEndTime": {
            "description": "The end timestamp of the job. Typically this field is used for contracting engagements. Invalid timestamps are ignored.",
            "type": "string"
          },
          "jobLevel": {
            "description": "The experience level associated with the job, such as \"Entry Level\".",
            "type": "string"
          },
          "jobStartTime": {
            "description": "The start timestamp of the job in UTC time zone. Typically this field is used for contracting engagements. Invalid timestamps are ignored.",
            "type": "string"
          },
          "languageCode": {
            "description": "The language of the posting. This field is distinct from any requirements for fluency that are associated with the job. Language codes must be in BCP-47 format, such as \"en-US\" or \"sr-Latn\". For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){: class=\"external\" target=\"_blank\" }. If this field is unspecified and Job.description is present, detected language code based on Job.description is assigned, otherwise defaults to 'en_US'.",
            "type": "string"
          },
          "name": {
            "description": "Required during job update. The resource name for the job. This is generated by the service when a job is created. The format is \"projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}\". For example, \"projects/foo/tenants/bar/jobs/baz\". Use of this field in job queries and API calls is preferred over the use of requisition_id since this value is unique.",
            "type": "string"
          },
          "postingCreateTime": {
            "description": "The timestamp when this job posting was created.",
            "type": "string"
          },
          "postingExpireTime": {
            "description": "Strongly recommended for the best service experience. The expiration timestamp of the job. After this timestamp, the job is marked as expired, and it no longer appears in search results. The expired job can't be listed by the ListJobs API, but it can be retrieved with the GetJob API or updated with the UpdateJob API or deleted with the DeleteJob API. An expired job can be updated and opened again by using a future expiration timestamp. Updating an expired job fails if there is another existing open job with same company, language_code and requisition_id. The expired jobs are retained in our system for 90 days. However, the overall expired job count cannot exceed 3 times the maximum number of open jobs over previous 7 days. If this threshold is exceeded, expired jobs are cleaned out in order of earliest expire time. Expired jobs are no longer accessible after they are cleaned out. Invalid timestamps are ignored, and treated as expire time not provided. If the timestamp is before the instant request is made, the job is treated as expired immediately on creation. This kind of job can not be updated. And when creating a job with past timestamp, the posting_publish_time must be set before posting_expire_time. The purpose of this feature is to allow other objects, such as Application, to refer a job that didn't exist in the system prior to becoming expired. If you want to modify a job that was expired on creation, delete it and create a new one. If this value isn't provided at the time of job creation or is invalid, the job posting expires after 30 days from the job's creation time. For example, if the job was created on 2017/01/01 13:00AM UTC with an unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC. If this value isn't provided on job update, it depends on the field masks set by UpdateJobRequest.update_mask. If the field masks include job_end_time, or the masks are empty meaning that every field is updated, the job posting expires after 30 days from the job's last update time. Otherwise the expiration date isn't updated.",
            "type": "string"
          },
          "postingPublishTime": {
            "description": "The timestamp this job posting was most recently published. The default value is the time the request arrives at the server. Invalid timestamps are ignored.",
            "type": "string"
          },
          "postingRegion": {
            "description": "The job PostingRegion (for example, state, country) throughout which the job is available. If this field is set, a LocationFilter in a search query within the job region finds this job posting if an exact location match isn't specified. If this field is set to PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job Job.addresses to the same location level as this field is strongly recommended.",
            "type": "string"
          },
          "postingUpdateTime": {
            "description": "The timestamp when this job posting was last updated.",
            "type": "string"
          },
          "processingOptions": {
            "$ref": "#/types/google-native:jobs%2Fv4:ProcessingOptionsResponse",
            "description": "Options for job processing."
          },
          "promotionValue": {
            "description": "A promotion value of the job, as determined by the client. The value determines the sort order of the jobs returned when searching for jobs using the featured jobs search call, with higher promotional values being returned first and ties being resolved by relevance sort. Only the jobs with a promotionValue \u003e0 are returned in a FEATURED_JOB_SEARCH. Default value is 0, and negative values are treated as 0.",
            "type": "integer"
          },
          "qualifications": {
            "description": "A description of the qualifications required to perform the job. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.",
            "type": "string"
          },
          "requisitionId": {
            "description": "The requisition ID, also referred to as the posting ID, is assigned by the client to identify a job. This field is intended to be used by clients for client identification and tracking of postings. A job isn't allowed to be created if there is another job with the same company, language_code and requisition_id. The maximum number of allowed characters is 255.",
            "type": "string"
          },
          "responsibilities": {
            "description": "A description of job responsibilities. The use of this field is recommended as an alternative to using the more general description field. This field accepts and sanitizes HTML input, and also accepts bold, italic, ordered list, and unordered list markup tags. The maximum number of allowed characters is 10,000.",
            "type": "string"
          },
          "title": {
            "description": "The title of the job, such as \"Software Engineer\" The maximum number of allowed characters is 500.",
            "type": "string"
          },
          "visibility": {
            "deprecationMessage": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
            "description": "Deprecated. The job is only visible to the owner. The visibility of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.",
            "type": "string"
          }
        },
        "required": [
          "addresses",
          "applicationInfo",
          "company",
          "companyDisplayName",
          "compensationInfo",
          "customAttributes",
          "degreeTypes",
          "department",
          "derivedInfo",
          "description",
          "employmentTypes",
          "incentives",
          "jobBenefits",
          "jobEndTime",
          "jobLevel",
          "jobStartTime",
          "languageCode",
          "name",
          "postingCreateTime",
          "postingExpireTime",
          "postingPublishTime",
          "postingRegion",
          "postingUpdateTime",
          "processingOptions",
          "promotionValue",
          "qualifications",
          "requisitionId",
          "responsibilities",
          "title",
          "visibility"
        ],
        "type": "object"
      }
    },
    "google-native:jobs/v4:getTenant": {
      "description": "Retrieves specified tenant.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "tenantId"
        ]
      },
      "outputs": {
        "properties": {
          "externalId": {
            "description": "Client side tenant identifier, used to uniquely identify the tenant. The maximum number of allowed characters is 255.",
            "type": "string"
          },
          "name": {
            "description": "Required during tenant update. The resource name for a tenant. This is generated by the service when a tenant is created. The format is \"projects/{project_id}/tenants/{tenant_id}\", for example, \"projects/foo/tenants/bar\".",
            "type": "string"
          }
        },
        "required": [
          "externalId",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getBillingAccountBucket": {
      "description": "Gets a log bucket.",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "bucketId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId",
          "bucketId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "analyticsEnabled": {
            "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled.",
            "type": "boolean"
          },
          "cmekSettings": {
            "$ref": "#/types/google-native:logging%2Fv2:CmekSettingsResponse",
            "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
          },
          "createTime": {
            "description": "The creation timestamp of the bucket. This is not set for any of the default buckets.",
            "type": "string"
          },
          "description": {
            "description": "Describes this bucket.",
            "type": "string"
          },
          "indexConfigs": {
            "description": "A list of indexed fields and related configuration data.",
            "items": {
              "$ref": "#/types/google-native:logging%2Fv2:IndexConfigResponse"
            },
            "type": "array"
          },
          "lifecycleState": {
            "description": "The bucket lifecycle state.",
            "type": "string"
          },
          "locked": {
            "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the bucket.For example:projects/my-project/locations/global/buckets/my-bucketFor a list of supported locations, see Supported Regions (https://cloud.google.com/logging/docs/region-support)For the location of global it is unspecified where log entries are actually stored.After a bucket has been created, the location cannot be changed.",
            "type": "string"
          },
          "restrictedFields": {
            "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "retentionDays": {
            "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.",
            "type": "integer"
          },
          "updateTime": {
            "description": "The last update timestamp of the bucket.",
            "type": "string"
          }
        },
        "required": [
          "analyticsEnabled",
          "cmekSettings",
          "createTime",
          "description",
          "indexConfigs",
          "lifecycleState",
          "locked",
          "name",
          "restrictedFields",
          "retentionDays",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getBillingAccountBucketLink": {
      "description": "Gets a link.",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "bucketId": {
            "type": "string"
          },
          "linkId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId",
          "bucketId",
          "linkId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryDataset": {
            "$ref": "#/types/google-native:logging%2Fv2:BigQueryDatasetResponse",
            "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
          },
          "createTime": {
            "description": "The creation timestamp of the link.",
            "type": "string"
          },
          "description": {
            "description": "Describes this link.The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "The resource lifecycle state.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link",
            "type": "string"
          }
        },
        "required": [
          "bigqueryDataset",
          "createTime",
          "description",
          "lifecycleState",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getBillingAccountBucketView": {
      "description": "Gets a view on a log bucket.",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "bucketId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "viewId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId",
          "bucketId",
          "location",
          "viewId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of the view.",
            "type": "string"
          },
          "description": {
            "description": "Describes this view.",
            "type": "string"
          },
          "filter": {
            "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the view.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "filter",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getBillingAccountExclusion": {
      "description": "Gets the description of an exclusion in the _Default sink.",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "exclusionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId",
          "exclusionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this exclusion.",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.",
            "type": "boolean"
          },
          "filter": {
            "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity\u003cERROR sample(insertId, 0.99)",
            "type": "string"
          },
          "name": {
            "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "disabled",
          "filter",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getBillingAccountSink": {
      "description": "Gets a sink.",
      "inputs": {
        "properties": {
          "billingAccountId": {
            "type": "string"
          },
          "sinkId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "billingAccountId",
          "sinkId"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryOptions": {
            "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptionsResponse",
            "description": "Optional. Options that affect sinks exporting data to BigQuery."
          },
          "createTime": {
            "description": "The creation timestamp of the sink.This field may not be present for older sinks.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "destination": {
            "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries.",
            "type": "boolean"
          },
          "exclusions": {
            "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported.",
            "items": {
              "$ref": "#/types/google-native:logging%2Fv2:LogExclusionResponse"
            },
            "type": "array"
          },
          "filter": {
            "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity\u003e=ERROR",
            "type": "string"
          },
          "includeChildren": {
            "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance",
            "type": "boolean"
          },
          "name": {
            "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.",
            "type": "string"
          },
          "outputVersionFormat": {
            "deprecationMessage": "Deprecated. This field is unused.",
            "description": "Deprecated. This field is unused.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the sink.This field may not be present for older sinks.",
            "type": "string"
          },
          "writerIdentity": {
            "description": "An IAM identity—a service account or group—under which Cloud Logging writes the exported log entries to the sink's destination. This field is either set by specifying custom_writer_identity or set automatically by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.Sinks that have a destination that is a log bucket in the same project as the sink cannot have a writer_identity and no additional permissions are required.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryOptions",
          "createTime",
          "description",
          "destination",
          "disabled",
          "exclusions",
          "filter",
          "includeChildren",
          "name",
          "outputVersionFormat",
          "updateTime",
          "writerIdentity"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getBucket": {
      "description": "Gets a log bucket.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "analyticsEnabled": {
            "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled.",
            "type": "boolean"
          },
          "cmekSettings": {
            "$ref": "#/types/google-native:logging%2Fv2:CmekSettingsResponse",
            "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
          },
          "createTime": {
            "description": "The creation timestamp of the bucket. This is not set for any of the default buckets.",
            "type": "string"
          },
          "description": {
            "description": "Describes this bucket.",
            "type": "string"
          },
          "indexConfigs": {
            "description": "A list of indexed fields and related configuration data.",
            "items": {
              "$ref": "#/types/google-native:logging%2Fv2:IndexConfigResponse"
            },
            "type": "array"
          },
          "lifecycleState": {
            "description": "The bucket lifecycle state.",
            "type": "string"
          },
          "locked": {
            "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the bucket.For example:projects/my-project/locations/global/buckets/my-bucketFor a list of supported locations, see Supported Regions (https://cloud.google.com/logging/docs/region-support)For the location of global it is unspecified where log entries are actually stored.After a bucket has been created, the location cannot be changed.",
            "type": "string"
          },
          "restrictedFields": {
            "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "retentionDays": {
            "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.",
            "type": "integer"
          },
          "updateTime": {
            "description": "The last update timestamp of the bucket.",
            "type": "string"
          }
        },
        "required": [
          "analyticsEnabled",
          "cmekSettings",
          "createTime",
          "description",
          "indexConfigs",
          "lifecycleState",
          "locked",
          "name",
          "restrictedFields",
          "retentionDays",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getBucketView": {
      "description": "Gets a view on a log bucket.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "viewId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "location",
          "viewId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of the view.",
            "type": "string"
          },
          "description": {
            "description": "Describes this view.",
            "type": "string"
          },
          "filter": {
            "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the view.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "filter",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getExclusion": {
      "description": "Gets the description of an exclusion in the _Default sink.",
      "inputs": {
        "properties": {
          "exclusionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "exclusionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this exclusion.",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.",
            "type": "boolean"
          },
          "filter": {
            "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity\u003cERROR sample(insertId, 0.99)",
            "type": "string"
          },
          "name": {
            "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "disabled",
          "filter",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getFolderBucket": {
      "description": "Gets a log bucket.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "folderId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "analyticsEnabled": {
            "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled.",
            "type": "boolean"
          },
          "cmekSettings": {
            "$ref": "#/types/google-native:logging%2Fv2:CmekSettingsResponse",
            "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
          },
          "createTime": {
            "description": "The creation timestamp of the bucket. This is not set for any of the default buckets.",
            "type": "string"
          },
          "description": {
            "description": "Describes this bucket.",
            "type": "string"
          },
          "indexConfigs": {
            "description": "A list of indexed fields and related configuration data.",
            "items": {
              "$ref": "#/types/google-native:logging%2Fv2:IndexConfigResponse"
            },
            "type": "array"
          },
          "lifecycleState": {
            "description": "The bucket lifecycle state.",
            "type": "string"
          },
          "locked": {
            "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the bucket.For example:projects/my-project/locations/global/buckets/my-bucketFor a list of supported locations, see Supported Regions (https://cloud.google.com/logging/docs/region-support)For the location of global it is unspecified where log entries are actually stored.After a bucket has been created, the location cannot be changed.",
            "type": "string"
          },
          "restrictedFields": {
            "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "retentionDays": {
            "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.",
            "type": "integer"
          },
          "updateTime": {
            "description": "The last update timestamp of the bucket.",
            "type": "string"
          }
        },
        "required": [
          "analyticsEnabled",
          "cmekSettings",
          "createTime",
          "description",
          "indexConfigs",
          "lifecycleState",
          "locked",
          "name",
          "restrictedFields",
          "retentionDays",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getFolderBucketLink": {
      "description": "Gets a link.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          },
          "linkId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "folderId",
          "linkId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryDataset": {
            "$ref": "#/types/google-native:logging%2Fv2:BigQueryDatasetResponse",
            "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
          },
          "createTime": {
            "description": "The creation timestamp of the link.",
            "type": "string"
          },
          "description": {
            "description": "Describes this link.The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "The resource lifecycle state.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link",
            "type": "string"
          }
        },
        "required": [
          "bigqueryDataset",
          "createTime",
          "description",
          "lifecycleState",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getFolderBucketView": {
      "description": "Gets a view on a log bucket.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "viewId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "folderId",
          "location",
          "viewId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of the view.",
            "type": "string"
          },
          "description": {
            "description": "Describes this view.",
            "type": "string"
          },
          "filter": {
            "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the view.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "filter",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getFolderExclusion": {
      "description": "Gets the description of an exclusion in the _Default sink.",
      "inputs": {
        "properties": {
          "exclusionId": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "exclusionId",
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this exclusion.",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.",
            "type": "boolean"
          },
          "filter": {
            "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity\u003cERROR sample(insertId, 0.99)",
            "type": "string"
          },
          "name": {
            "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "disabled",
          "filter",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getFolderSink": {
      "description": "Gets a sink.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          },
          "sinkId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId",
          "sinkId"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryOptions": {
            "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptionsResponse",
            "description": "Optional. Options that affect sinks exporting data to BigQuery."
          },
          "createTime": {
            "description": "The creation timestamp of the sink.This field may not be present for older sinks.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "destination": {
            "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries.",
            "type": "boolean"
          },
          "exclusions": {
            "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported.",
            "items": {
              "$ref": "#/types/google-native:logging%2Fv2:LogExclusionResponse"
            },
            "type": "array"
          },
          "filter": {
            "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity\u003e=ERROR",
            "type": "string"
          },
          "includeChildren": {
            "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance",
            "type": "boolean"
          },
          "name": {
            "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.",
            "type": "string"
          },
          "outputVersionFormat": {
            "deprecationMessage": "Deprecated. This field is unused.",
            "description": "Deprecated. This field is unused.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the sink.This field may not be present for older sinks.",
            "type": "string"
          },
          "writerIdentity": {
            "description": "An IAM identity—a service account or group—under which Cloud Logging writes the exported log entries to the sink's destination. This field is either set by specifying custom_writer_identity or set automatically by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.Sinks that have a destination that is a log bucket in the same project as the sink cannot have a writer_identity and no additional permissions are required.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryOptions",
          "createTime",
          "description",
          "destination",
          "disabled",
          "exclusions",
          "filter",
          "includeChildren",
          "name",
          "outputVersionFormat",
          "updateTime",
          "writerIdentity"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getLink": {
      "description": "Gets a link.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "linkId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "linkId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryDataset": {
            "$ref": "#/types/google-native:logging%2Fv2:BigQueryDatasetResponse",
            "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
          },
          "createTime": {
            "description": "The creation timestamp of the link.",
            "type": "string"
          },
          "description": {
            "description": "Describes this link.The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "The resource lifecycle state.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link",
            "type": "string"
          }
        },
        "required": [
          "bigqueryDataset",
          "createTime",
          "description",
          "lifecycleState",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getMetric": {
      "description": "Gets a logs-based metric.",
      "inputs": {
        "properties": {
          "metricId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "metricId"
        ]
      },
      "outputs": {
        "properties": {
          "bucketName": {
            "description": "Optional. The resource name of the Log Bucket that owns the Log Metric. Only Log Buckets in projects are supported. The bucket has to be in the same project as the metric.For example:projects/my-project/locations/global/buckets/my-bucketIf empty, then the Log Metric is considered a non-Bucket Log Metric.",
            "type": "string"
          },
          "bucketOptions": {
            "$ref": "#/types/google-native:logging%2Fv2:BucketOptionsResponse",
            "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values."
          },
          "createTime": {
            "description": "The creation timestamp of the metric.This field may not be present for older metrics.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this metric, which is used in documentation. The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to True, then this metric is disabled and it does not generate any points.",
            "type": "boolean"
          },
          "filter": {
            "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced_filters) which is used to match log entries. Example: \"resource.type=gae_app AND severity\u003e=ERROR\" The maximum length of the filter is 20000 characters.",
            "type": "string"
          },
          "labelExtractors": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. A map from a label key string to an extractor expression which is used to extract data from a log entry field and assign as the label value. Each label key specified in the LabelDescriptor must have an associated extractor expression in this map. The syntax of the extractor expression is the same as for the value_extractor field.The extracted value is converted to the type defined in the label descriptor. If either the extraction or the type conversion fails, the label will have a default value. The default value for a string label is an empty string, for an integer label its 0, and for a boolean label its false.Note that there are upper bounds on the maximum number of labels and the number of active time series that are allowed in a project.",
            "type": "object"
          },
          "metricDescriptor": {
            "$ref": "#/types/google-native:logging%2Fv2:MetricDescriptorResponse",
            "description": "Optional. The metric descriptor associated with the logs-based metric. If unspecified, it uses a default metric descriptor with a DELTA metric kind, INT64 value type, with no labels and a unit of \"1\". Such a metric counts the number of log entries matching the filter expression.The name, type, and description fields in the metric_descriptor are output only, and is constructed using the name and description field in the LogMetric.To create a logs-based metric that records a distribution of log values, a DELTA metric kind with a DISTRIBUTION value type must be used along with a value_extractor expression in the LogMetric.Each label in the metric descriptor must have a matching label name as the key and an extractor expression as the value in the label_extractors map.The metric_kind and value_type fields in the metric_descriptor cannot be updated once initially configured. New labels can be added in the metric_descriptor, but existing labels cannot be modified except for their description."
          },
          "name": {
            "description": "The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.This field is the [METRIC_ID] part of a metric resource name in the format \"projects/PROJECT_ID/metrics/METRIC_ID\". Example: If the resource name of a metric is \"projects/my-project/metrics/nginx%2Frequests\", this field's value is \"nginx/requests\".",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the metric.This field may not be present for older metrics.",
            "type": "string"
          },
          "valueExtractor": {
            "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The arguments are: field: The name of the log entry field from which the value is to be extracted. regex: A regular expression using the Google RE2 syntax (https://github.com/google/re2/wiki/Syntax) with a single capture group to extract data from the specified log entry field. The value of the field is converted to a string before applying the regex. It is an error to specify a regex that does not include exactly one capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")",
            "type": "string"
          },
          "version": {
            "deprecationMessage": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.",
            "description": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.",
            "type": "string"
          }
        },
        "required": [
          "bucketName",
          "bucketOptions",
          "createTime",
          "description",
          "disabled",
          "filter",
          "labelExtractors",
          "metricDescriptor",
          "name",
          "updateTime",
          "valueExtractor",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getOrganizationBucket": {
      "description": "Gets a log bucket.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "analyticsEnabled": {
            "description": "Whether log analytics is enabled for this bucket.Once enabled, log analytics features cannot be disabled.",
            "type": "boolean"
          },
          "cmekSettings": {
            "$ref": "#/types/google-native:logging%2Fv2:CmekSettingsResponse",
            "description": "The CMEK settings of the log bucket. If present, new log entries written to this log bucket are encrypted using the CMEK key provided in this configuration. If a log bucket has CMEK settings, the CMEK settings cannot be disabled later by updating the log bucket. Changing the KMS key is allowed."
          },
          "createTime": {
            "description": "The creation timestamp of the bucket. This is not set for any of the default buckets.",
            "type": "string"
          },
          "description": {
            "description": "Describes this bucket.",
            "type": "string"
          },
          "indexConfigs": {
            "description": "A list of indexed fields and related configuration data.",
            "items": {
              "$ref": "#/types/google-native:logging%2Fv2:IndexConfigResponse"
            },
            "type": "array"
          },
          "lifecycleState": {
            "description": "The bucket lifecycle state.",
            "type": "string"
          },
          "locked": {
            "description": "Whether the bucket is locked.The retention period on a locked bucket cannot be changed. Locked buckets may only be deleted if they are empty.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the bucket.For example:projects/my-project/locations/global/buckets/my-bucketFor a list of supported locations, see Supported Regions (https://cloud.google.com/logging/docs/region-support)For the location of global it is unspecified where log entries are actually stored.After a bucket has been created, the location cannot be changed.",
            "type": "string"
          },
          "restrictedFields": {
            "description": "Log entry field paths that are denied access in this bucket.The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation.Restricting a repeated field will restrict all values. Adding a parent will block all child fields. (e.g. foo.bar will block foo.bar.baz)",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "retentionDays": {
            "description": "Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.",
            "type": "integer"
          },
          "updateTime": {
            "description": "The last update timestamp of the bucket.",
            "type": "string"
          }
        },
        "required": [
          "analyticsEnabled",
          "cmekSettings",
          "createTime",
          "description",
          "indexConfigs",
          "lifecycleState",
          "locked",
          "name",
          "restrictedFields",
          "retentionDays",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getOrganizationBucketLink": {
      "description": "Gets a link.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "linkId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "linkId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryDataset": {
            "$ref": "#/types/google-native:logging%2Fv2:BigQueryDatasetResponse",
            "description": "The information of a BigQuery Dataset. When a link is created, a BigQuery dataset is created along with it, in the same project as the LogBucket it's linked to. This dataset will also have BigQuery Views corresponding to the LogViews in the bucket."
          },
          "createTime": {
            "description": "The creation timestamp of the link.",
            "type": "string"
          },
          "description": {
            "description": "Describes this link.The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "The resource lifecycle state.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the link. The name can have up to 100 characters. A valid link id (at the end of the link name) must only have alphanumeric characters and underscores within it. \"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" \"folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]\" For example:`projects/my-project/locations/global/buckets/my-bucket/links/my_link",
            "type": "string"
          }
        },
        "required": [
          "bigqueryDataset",
          "createTime",
          "description",
          "lifecycleState",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getOrganizationBucketView": {
      "description": "Gets a view on a log bucket.",
      "inputs": {
        "properties": {
          "bucketId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "viewId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucketId",
          "location",
          "organizationId",
          "viewId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of the view.",
            "type": "string"
          },
          "description": {
            "description": "Describes this view.",
            "type": "string"
          },
          "filter": {
            "description": "Filter that restricts which log entries in a bucket are visible in this view.Filters are restricted to be a logical AND of ==/!= of any of the following: originating project/folder/organization/billing account. resource type log idFor example:SOURCE(\"projects/myproject\") AND resource.type = \"gce_instance\" AND LOG_ID(\"stdout\")",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the view.For example:projects/my-project/locations/global/buckets/my-bucket/views/my-view",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the view.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "filter",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getOrganizationExclusion": {
      "description": "Gets the description of an exclusion in the _Default sink.",
      "inputs": {
        "properties": {
          "exclusionId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "exclusionId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The creation timestamp of the exclusion.This field may not be present for older exclusions.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this exclusion.",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.",
            "type": "boolean"
          },
          "filter": {
            "description": "An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries.For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:resource.type=gcs_bucket severity\u003cERROR sample(insertId, 0.99)",
            "type": "string"
          },
          "name": {
            "description": "A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the exclusion.This field may not be present for older exclusions.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "disabled",
          "filter",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getOrganizationSink": {
      "description": "Gets a sink.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "sinkId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "sinkId"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryOptions": {
            "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptionsResponse",
            "description": "Optional. Options that affect sinks exporting data to BigQuery."
          },
          "createTime": {
            "description": "The creation timestamp of the sink.This field may not be present for older sinks.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "destination": {
            "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries.",
            "type": "boolean"
          },
          "exclusions": {
            "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported.",
            "items": {
              "$ref": "#/types/google-native:logging%2Fv2:LogExclusionResponse"
            },
            "type": "array"
          },
          "filter": {
            "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity\u003e=ERROR",
            "type": "string"
          },
          "includeChildren": {
            "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance",
            "type": "boolean"
          },
          "name": {
            "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.",
            "type": "string"
          },
          "outputVersionFormat": {
            "deprecationMessage": "Deprecated. This field is unused.",
            "description": "Deprecated. This field is unused.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the sink.This field may not be present for older sinks.",
            "type": "string"
          },
          "writerIdentity": {
            "description": "An IAM identity—a service account or group—under which Cloud Logging writes the exported log entries to the sink's destination. This field is either set by specifying custom_writer_identity or set automatically by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.Sinks that have a destination that is a log bucket in the same project as the sink cannot have a writer_identity and no additional permissions are required.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryOptions",
          "createTime",
          "description",
          "destination",
          "disabled",
          "exclusions",
          "filter",
          "includeChildren",
          "name",
          "outputVersionFormat",
          "updateTime",
          "writerIdentity"
        ],
        "type": "object"
      }
    },
    "google-native:logging/v2:getSink": {
      "description": "Gets a sink.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "sinkId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sinkId"
        ]
      },
      "outputs": {
        "properties": {
          "bigqueryOptions": {
            "$ref": "#/types/google-native:logging%2Fv2:BigQueryOptionsResponse",
            "description": "Optional. Options that affect sinks exporting data to BigQuery."
          },
          "createTime": {
            "description": "The creation timestamp of the sink.This field may not be present for older sinks.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of this sink.The maximum length of the description is 8000 characters.",
            "type": "string"
          },
          "destination": {
            "description": "The export destination: \"storage.googleapis.com/[GCS_BUCKET]\" \"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\" \"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]\" \"logging.googleapis.com/projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]\" The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).",
            "type": "string"
          },
          "disabled": {
            "description": "Optional. If set to true, then this sink is disabled and it does not export any log entries.",
            "type": "boolean"
          },
          "exclusions": {
            "description": "Optional. Log entries that match any of these exclusion filters will not be exported.If a log entry is matched by both filter and one of exclusion_filters it will not be exported.",
            "items": {
              "$ref": "#/types/google-native:logging%2Fv2:LogExclusionResponse"
            },
            "type": "array"
          },
          "filter": {
            "description": "Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter.For example:logName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity\u003e=ERROR",
            "type": "string"
          },
          "includeChildren": {
            "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then log entries from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression.For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent.To only export entries from certain child projects, filter on the project part of the log name:logName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND resource.type=gce_instance",
            "type": "boolean"
          },
          "name": {
            "description": "The client-assigned sink identifier, unique within the project.For example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.",
            "type": "string"
          },
          "outputVersionFormat": {
            "deprecationMessage": "Deprecated. This field is unused.",
            "description": "Deprecated. This field is unused.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the sink.This field may not be present for older sinks.",
            "type": "string"
          },
          "writerIdentity": {
            "description": "An IAM identity—a service account or group—under which Cloud Logging writes the exported log entries to the sink's destination. This field is either set by specifying custom_writer_identity or set automatically by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.Sinks that have a destination that is a log bucket in the same project as the sink cannot have a writer_identity and no additional permissions are required.",
            "type": "string"
          }
        },
        "required": [
          "bigqueryOptions",
          "createTime",
          "description",
          "destination",
          "disabled",
          "exclusions",
          "filter",
          "includeChildren",
          "name",
          "outputVersionFormat",
          "updateTime",
          "writerIdentity"
        ],
        "type": "object"
      }
    },
    "google-native:looker/v1:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "adminSettings": {
            "$ref": "#/types/google-native:looker%2Fv1:AdminSettingsResponse",
            "description": "Looker Instance Admin settings."
          },
          "consumerNetwork": {
            "description": "Network name in the consumer project. Format: `projects/{project}/global/networks/{network}`. Note that the consumer network may be in a different GCP project than the consumer project that is hosting the Looker Instance.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the Looker instance provisioning was first requested.",
            "type": "string"
          },
          "customDomain": {
            "$ref": "#/types/google-native:looker%2Fv1:CustomDomainResponse"
          },
          "denyMaintenancePeriod": {
            "$ref": "#/types/google-native:looker%2Fv1:DenyMaintenancePeriodResponse",
            "description": "Maintenance denial period for this instance."
          },
          "egressPublicIp": {
            "description": "Public Egress IP (IPv4).",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:looker%2Fv1:EncryptionConfigResponse",
            "description": "Encryption configuration (CMEK). Only set if CMEK has been enabled on the instance."
          },
          "ingressPrivateIp": {
            "description": "Private Ingress IP (IPv4).",
            "type": "string"
          },
          "ingressPublicIp": {
            "description": "Public Ingress IP (IPv4).",
            "type": "string"
          },
          "lastDenyMaintenancePeriod": {
            "$ref": "#/types/google-native:looker%2Fv1:DenyMaintenancePeriodResponse",
            "description": "Last computed maintenance denial period for this instance."
          },
          "lookerUri": {
            "description": "Looker instance URI which can be used to access the Looker Instance UI.",
            "type": "string"
          },
          "lookerVersion": {
            "description": "The Looker version that the instance is using.",
            "type": "string"
          },
          "maintenanceSchedule": {
            "$ref": "#/types/google-native:looker%2Fv1:MaintenanceScheduleResponse",
            "description": "Maintenance schedule for this instance."
          },
          "maintenanceWindow": {
            "$ref": "#/types/google-native:looker%2Fv1:MaintenanceWindowResponse",
            "description": "Maintenance window for this instance."
          },
          "name": {
            "description": "Format: `projects/{project}/locations/{location}/instances/{instance}`.",
            "type": "string"
          },
          "oauthConfig": {
            "$ref": "#/types/google-native:looker%2Fv1:OAuthConfigResponse",
            "description": "Looker instance OAuth login settings."
          },
          "platformEdition": {
            "description": "Platform edition.",
            "type": "string"
          },
          "privateIpEnabled": {
            "description": "Whether private IP is enabled on the Looker instance.",
            "type": "boolean"
          },
          "publicIpEnabled": {
            "description": "Whether public IP is enabled on the Looker instance.",
            "type": "boolean"
          },
          "reservedRange": {
            "description": "Name of a reserved IP address range within the Instance.consumer_network, to be used for private services access connection. May or may not be specified in a create request.",
            "type": "string"
          },
          "state": {
            "description": "The state of the instance.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the Looker instance was last updated.",
            "type": "string"
          },
          "userMetadata": {
            "$ref": "#/types/google-native:looker%2Fv1:UserMetadataResponse",
            "description": "User metadata."
          }
        },
        "required": [
          "adminSettings",
          "consumerNetwork",
          "createTime",
          "customDomain",
          "denyMaintenancePeriod",
          "egressPublicIp",
          "encryptionConfig",
          "ingressPrivateIp",
          "ingressPublicIp",
          "lastDenyMaintenancePeriod",
          "lookerUri",
          "lookerVersion",
          "maintenanceSchedule",
          "maintenanceWindow",
          "name",
          "oauthConfig",
          "platformEdition",
          "privateIpEnabled",
          "publicIpEnabled",
          "reservedRange",
          "state",
          "updateTime",
          "userMetadata"
        ],
        "type": "object"
      }
    },
    "google-native:looker/v1:getInstanceBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:looker%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:looker%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:looker/v1:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:looker%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:looker%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1:getBackup": {
      "description": "Gets details of a single Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "domainId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the backups was created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "The unique name of the Backup in the form of `projects/{project_id}/locations/global/domains/{domain_name}/backups/{name}`",
            "type": "string"
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this backup, if available.",
            "type": "string"
          },
          "type": {
            "description": "Indicates whether it’s an on-demand backup or scheduled.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "labels",
          "name",
          "state",
          "statusMessage",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1:getDomain": {
      "description": "Gets information about a domain.",
      "inputs": {
        "properties": {
          "domainId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "admin": {
            "description": "Optional. The name of delegated administrator account used to perform Active Directory operations. If not specified, `setupadmin` will be used.",
            "type": "string"
          },
          "auditLogsEnabled": {
            "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled.",
            "type": "boolean"
          },
          "authorizedNetworks": {
            "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) the domain instance is connected to. Networks can be added using UpdateDomain. The domain is only available on networks listed in `authorized_networks`. If CIDR subnets overlap between networks, domain creation will fail.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "fqdn": {
            "description": "The fully-qualified domain name of the exposed domain used by clients to connect to the service. Similar to what would be chosen for an Active Directory set up on an internal network.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels that can contain user-provided metadata.",
            "type": "object"
          },
          "locations": {
            "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The unique name of the domain using the form: `projects/{project_id}/locations/global/domains/{domain_name}`.",
            "type": "string"
          },
          "reservedIpRange": {
            "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks].",
            "type": "string"
          },
          "state": {
            "description": "The current state of this domain.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this domain, if available.",
            "type": "string"
          },
          "trusts": {
            "description": "The current trusts associated with the domain.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1:TrustResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update time.",
            "type": "string"
          }
        },
        "required": [
          "admin",
          "auditLogsEnabled",
          "authorizedNetworks",
          "createTime",
          "fqdn",
          "labels",
          "locations",
          "name",
          "reservedIpRange",
          "state",
          "statusMessage",
          "trusts",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1:getDomainBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "domainId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1:getDomainIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "domainId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1:getPeering": {
      "description": "Gets details of a single Peering.",
      "inputs": {
        "properties": {
          "peeringId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "peeringId"
        ]
      },
      "outputs": {
        "properties": {
          "authorizedNetwork": {
            "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "domainResource": {
            "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user-provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique name of the peering in this scope including projects and location using the form: `projects/{project_id}/locations/global/peerings/{peering_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The current state of this Peering.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this peering, if available.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time.",
            "type": "string"
          }
        },
        "required": [
          "authorizedNetwork",
          "createTime",
          "domainResource",
          "labels",
          "name",
          "state",
          "statusMessage",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1:getPeeringIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "peeringId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "peeringId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1alpha1:getBackup": {
      "description": "Gets details of a single Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "domainId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the backups was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A short description of the backup.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "The unique name of the Backup in the form of projects/{project_id}/locations/global/domains/{domain_name}/backups/{name}",
            "type": "string"
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this backup, if available.",
            "type": "string"
          },
          "type": {
            "description": "Indicates whether it’s an on-demand backup or scheduled.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "labels",
          "name",
          "state",
          "statusMessage",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1alpha1:getDomain": {
      "description": "Gets details of a single Domain.",
      "inputs": {
        "properties": {
          "domainId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "auditLogsEnabled": {
            "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled.",
            "type": "boolean"
          },
          "authorizedNetworks": {
            "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Network can be added using UpdateDomain later. Domain is only available on network part of authorized_networks. Caller needs to make sure that CIDR subnets do not overlap between networks, else domain creation will fail.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The time the instance was created. Synthetic field is populated automatically by CCFE. go/ccfe-synthetic-field-user-guide",
            "type": "string"
          },
          "fqdn": {
            "description": "Fully-qualified domain name of the exposed domain used by clients to connect to the service. Similar to what would be chosen for an Active Directory that is set up on an internal network.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata",
            "type": "object"
          },
          "locations": {
            "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "managedIdentitiesAdminName": {
            "description": "Optional. Name of customer-visible admin used to perform Active Directory operations. If not specified `setupadmin` would be used.",
            "type": "string"
          },
          "name": {
            "description": "Unique name of the domain in this scope including projects and location using the form: `projects/{project_id}/locations/global/domains/{domain_name}`.",
            "type": "string"
          },
          "reservedIpRange": {
            "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks].",
            "type": "string"
          },
          "state": {
            "description": "The current state of this domain.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this domain, if available.",
            "type": "string"
          },
          "trusts": {
            "description": "The current trusts associated with the domain.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:TrustResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Last update time. Synthetic field is populated automatically by CCFE.",
            "type": "string"
          }
        },
        "required": [
          "auditLogsEnabled",
          "authorizedNetworks",
          "createTime",
          "fqdn",
          "labels",
          "locations",
          "managedIdentitiesAdminName",
          "name",
          "reservedIpRange",
          "state",
          "statusMessage",
          "trusts",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1alpha1:getDomainBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "domainId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1alpha1:getDomainIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "domainId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1alpha1:getPeering": {
      "description": "Gets details of a single Peering.",
      "inputs": {
        "properties": {
          "peeringId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "peeringId"
        ]
      },
      "outputs": {
        "properties": {
          "authorizedNetwork": {
            "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "domainResource": {
            "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique name of the peering in this scope including projects and location using the form: `projects/{project_id}/locations/global/peerings/{peering_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The current state of this Peering.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this peering, if available.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time.",
            "type": "string"
          }
        },
        "required": [
          "authorizedNetwork",
          "createTime",
          "domainResource",
          "labels",
          "name",
          "state",
          "statusMessage",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1alpha1:getPeeringIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "peeringId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "peeringId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1beta1:getBackup": {
      "description": "Gets details of a single Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "domainId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the backups was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A short description of the backup.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "The unique name of the Backup in the form of projects/{project_id}/locations/global/domains/{domain_name}/backups/{name}",
            "type": "string"
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this backup, if available.",
            "type": "string"
          },
          "type": {
            "description": "Indicates whether it’s an on-demand backup or scheduled.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "labels",
          "name",
          "state",
          "statusMessage",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1beta1:getDomain": {
      "description": "Gets information about a domain.",
      "inputs": {
        "properties": {
          "domainId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "admin": {
            "description": "Optional. The name of delegated administrator account used to perform Active Directory operations. If not specified, `setupadmin` will be used.",
            "type": "string"
          },
          "auditLogsEnabled": {
            "description": "Optional. Configuration for audit logs. True if audit logs are enabled, else false. Default is audit logs disabled.",
            "type": "boolean"
          },
          "authorizedNetworks": {
            "description": "Optional. The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) the domain instance is connected to. Networks can be added using UpdateDomain. The domain is only available on networks listed in `authorized_networks`. If CIDR subnets overlap between networks, domain creation will fail.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "fqdn": {
            "description": "The fully-qualified domain name of the exposed domain used by clients to connect to the service. Similar to what would be chosen for an Active Directory set up on an internal network.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels that can contain user-provided metadata.",
            "type": "object"
          },
          "locations": {
            "description": "Locations where domain needs to be provisioned. regions e.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The unique name of the domain using the form: `projects/{project_id}/locations/global/domains/{domain_name}`.",
            "type": "string"
          },
          "reservedIpRange": {
            "description": "The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. Ranges must be unique and non-overlapping with existing subnets in [Domain].[authorized_networks].",
            "type": "string"
          },
          "state": {
            "description": "The current state of this domain.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this domain, if available.",
            "type": "string"
          },
          "trusts": {
            "description": "The current trusts associated with the domain.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1beta1:TrustResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last update time.",
            "type": "string"
          }
        },
        "required": [
          "admin",
          "auditLogsEnabled",
          "authorizedNetworks",
          "createTime",
          "fqdn",
          "labels",
          "locations",
          "name",
          "reservedIpRange",
          "state",
          "statusMessage",
          "trusts",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1beta1:getDomainBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "domainId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1beta1:getDomainIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "domainId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "domainId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1beta1:getPeering": {
      "description": "Gets details of a single Peering.",
      "inputs": {
        "properties": {
          "peeringId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "peeringId"
        ]
      },
      "outputs": {
        "properties": {
          "authorizedNetwork": {
            "description": "The full names of the Google Compute Engine [networks](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. Caller needs to make sure that CIDR subnets do not overlap between networks, else peering creation will fail.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "domainResource": {
            "description": "Full domain resource path for the Managed AD Domain involved in peering. The resource path should be in the form: `projects/{project_id}/locations/global/domains/{domain_name}`",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels to represent user provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique name of the peering in this scope including projects and location using the form: `projects/{project_id}/locations/global/peerings/{peering_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The current state of this Peering.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this peering, if available.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time.",
            "type": "string"
          }
        },
        "required": [
          "authorizedNetwork",
          "createTime",
          "domainResource",
          "labels",
          "name",
          "state",
          "statusMessage",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:managedidentities/v1beta1:getPeeringIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "peeringId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "peeringId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:managedidentities%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:memcache/v1:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "authorizedNetwork": {
            "description": "The full name of the Google Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the instance is connected. If left unspecified, the `default` network will be used.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "discoveryEndpoint": {
            "description": "Endpoint for the Discovery API.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name for the instance, which is only used for display purposes. Cannot be more than 80 characters.",
            "type": "string"
          },
          "instanceMessages": {
            "description": "List of messages that describe the current state of the Memcached instance.",
            "items": {
              "$ref": "#/types/google-native:memcache%2Fv1:InstanceMessageResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "maintenancePolicy": {
            "$ref": "#/types/google-native:memcache%2Fv1:GoogleCloudMemcacheV1MaintenancePolicyResponse",
            "description": "The maintenance policy for the instance. If not provided, the maintenance event will be performed based on Memorystore internal rollout schedule."
          },
          "maintenanceSchedule": {
            "$ref": "#/types/google-native:memcache%2Fv1:MaintenanceScheduleResponse",
            "description": "Published maintenance schedule."
          },
          "memcacheFullVersion": {
            "description": "The full version of memcached server running on this instance. System automatically determines the full memcached version for an instance based on the input MemcacheVersion. The full version format will be \"memcached-1.5.16\".",
            "type": "string"
          },
          "memcacheNodes": {
            "description": "List of Memcached nodes. Refer to Node message for more details.",
            "items": {
              "$ref": "#/types/google-native:memcache%2Fv1:NodeResponse"
            },
            "type": "array"
          },
          "memcacheVersion": {
            "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version.",
            "type": "string"
          },
          "name": {
            "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Memcached instances are managed and addressed at the regional level so `location_id` here refers to a Google Cloud region; however, users may choose which zones Memcached nodes should be provisioned in within an instance. Refer to zones field for more details.",
            "type": "string"
          },
          "nodeConfig": {
            "$ref": "#/types/google-native:memcache%2Fv1:NodeConfigResponse",
            "description": "Configuration for Memcached nodes."
          },
          "nodeCount": {
            "description": "Number of nodes in the Memcached instance.",
            "type": "integer"
          },
          "parameters": {
            "$ref": "#/types/google-native:memcache%2Fv1:MemcacheParametersResponse",
            "description": "User defined parameters to apply to the memcached process on each node."
          },
          "reservedIpRangeId": {
            "description": "Optional. Contains the id of allocated IP address ranges associated with the private service access connection for example, \"test-default\" associated with IP range 10.0.0.0/29.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The state of this Memcached instance.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time the instance was updated.",
            "type": "string"
          },
          "zones": {
            "description": "Zones in which Memcached nodes should be provisioned. Memcached nodes will be equally distributed across these zones. If not provided, the service will by default create nodes in all zones in the region for the instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "authorizedNetwork",
          "createTime",
          "discoveryEndpoint",
          "displayName",
          "instanceMessages",
          "labels",
          "maintenancePolicy",
          "maintenanceSchedule",
          "memcacheFullVersion",
          "memcacheNodes",
          "memcacheVersion",
          "name",
          "nodeConfig",
          "nodeCount",
          "parameters",
          "reservedIpRangeId",
          "state",
          "updateTime",
          "zones"
        ],
        "type": "object"
      }
    },
    "google-native:memcache/v1beta2:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "authorizedNetwork": {
            "description": "The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "discoveryEndpoint": {
            "description": "Endpoint for the Discovery API.",
            "type": "string"
          },
          "displayName": {
            "description": "User provided name for the instance, which is only used for display purposes. Cannot be more than 80 characters.",
            "type": "string"
          },
          "instanceMessages": {
            "description": "List of messages that describe the current state of the Memcached instance.",
            "items": {
              "$ref": "#/types/google-native:memcache%2Fv1beta2:InstanceMessageResponse"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
            "type": "object"
          },
          "maintenancePolicy": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:GoogleCloudMemcacheV1beta2MaintenancePolicyResponse",
            "description": "The maintenance policy for the instance. If not provided, the maintenance event will be performed based on Memorystore internal rollout schedule."
          },
          "maintenanceSchedule": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:MaintenanceScheduleResponse",
            "description": "Published maintenance schedule."
          },
          "memcacheFullVersion": {
            "description": "The full version of memcached server running on this instance. System automatically determines the full memcached version for an instance based on the input MemcacheVersion. The full version format will be \"memcached-1.5.16\".",
            "type": "string"
          },
          "memcacheNodes": {
            "description": "List of Memcached nodes. Refer to Node message for more details.",
            "items": {
              "$ref": "#/types/google-native:memcache%2Fv1beta2:NodeResponse"
            },
            "type": "array"
          },
          "memcacheVersion": {
            "description": "The major version of Memcached software. If not provided, latest supported version will be used. Currently the latest supported major version is `MEMCACHE_1_5`. The minor version will be automatically determined by our system based on the latest supported minor version.",
            "type": "string"
          },
          "name": {
            "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Memcached instances are managed and addressed at the regional level so `location_id` here refers to a Google Cloud region; however, users may choose which zones Memcached nodes should be provisioned in within an instance. Refer to zones field for more details.",
            "type": "string"
          },
          "nodeConfig": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:NodeConfigResponse",
            "description": "Configuration for Memcached nodes."
          },
          "nodeCount": {
            "description": "Number of nodes in the Memcached instance.",
            "type": "integer"
          },
          "parameters": {
            "$ref": "#/types/google-native:memcache%2Fv1beta2:MemcacheParametersResponse",
            "description": "User defined parameters to apply to the memcached process on each node."
          },
          "reservedIpRangeId": {
            "description": "Optional. Contains the id of allocated IP address ranges associated with the private service access connection for example, \"test-default\" associated with IP range 10.0.0.0/29.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The state of this Memcached instance.",
            "type": "string"
          },
          "updateAvailable": {
            "description": "Returns true if there is an update waiting to be applied",
            "type": "boolean"
          },
          "updateTime": {
            "description": "The time the instance was updated.",
            "type": "string"
          },
          "zones": {
            "description": "Zones in which Memcached nodes should be provisioned. Memcached nodes will be equally distributed across these zones. If not provided, the service will by default create nodes in all zones in the region for the instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "authorizedNetwork",
          "createTime",
          "discoveryEndpoint",
          "displayName",
          "instanceMessages",
          "labels",
          "maintenancePolicy",
          "maintenanceSchedule",
          "memcacheFullVersion",
          "memcacheNodes",
          "memcacheVersion",
          "name",
          "nodeConfig",
          "nodeCount",
          "parameters",
          "reservedIpRangeId",
          "state",
          "updateAvailable",
          "updateTime",
          "zones"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1:getBackup": {
      "description": "Gets details of a single backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the backup was started.",
            "type": "string"
          },
          "description": {
            "description": "The description of the backup.",
            "type": "string"
          },
          "endTime": {
            "description": "The time when the backup finished creating.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}",
            "type": "string"
          },
          "restoringServices": {
            "description": "Services that are restoring from the backup.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceRevision": {
            "$ref": "#/types/google-native:metastore%2Fv1:ServiceResponse",
            "description": "The revision of the service at the time of backup."
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "endTime",
          "name",
          "restoringServices",
          "serviceRevision",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1:getFederation": {
      "description": "Gets the details of a single federation.",
      "inputs": {
        "properties": {
          "federationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "federationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "backendMetastores": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number.",
            "type": "object"
          },
          "createTime": {
            "description": "The time when the metastore federation was created.",
            "type": "string"
          },
          "endpointUri": {
            "description": "The federation endpoint.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels for the metastore federation.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the federation.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Additional information about the current state of the metastore federation, if available.",
            "type": "string"
          },
          "uid": {
            "description": "The globally unique resource identifier of the metastore federation.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metastore federation was last updated.",
            "type": "string"
          },
          "version": {
            "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version.",
            "type": "string"
          }
        },
        "required": [
          "backendMetastores",
          "createTime",
          "endpointUri",
          "labels",
          "name",
          "state",
          "stateMessage",
          "uid",
          "updateTime",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1:getFederationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "federationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "federationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1:getMetadataImport": {
      "description": "Gets details of a single import.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "metadataImportId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "metadataImportId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the metadata import was started.",
            "type": "string"
          },
          "databaseDump": {
            "$ref": "#/types/google-native:metastore%2Fv1:DatabaseDumpResponse",
            "description": "Immutable. A database dump from a pre-existing metastore's database."
          },
          "description": {
            "description": "The description of the metadata import.",
            "type": "string"
          },
          "endTime": {
            "description": "The time when the metadata import finished.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the metadata import.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metadata import was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "databaseDump",
          "description",
          "endTime",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1:getService": {
      "description": "Gets the details of a single service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "artifactGcsUri": {
            "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the metastore service was created.",
            "type": "string"
          },
          "databaseType": {
            "description": "Immutable. The database type that the Metastore service stores its data.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1:EncryptionConfigResponse",
            "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
          },
          "endpointUri": {
            "description": "The URI of the endpoint used to access the metastore service.",
            "type": "string"
          },
          "hiveMetastoreConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1:HiveMetastoreConfigResponse",
            "description": "Configuration information specific to running Hive metastore software as the metastore service."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels for the metastore service.",
            "type": "object"
          },
          "maintenanceWindow": {
            "$ref": "#/types/google-native:metastore%2Fv1:MaintenanceWindowResponse",
            "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
          },
          "metadataIntegration": {
            "$ref": "#/types/google-native:metastore%2Fv1:MetadataIntegrationResponse",
            "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
          },
          "metadataManagementActivity": {
            "$ref": "#/types/google-native:metastore%2Fv1:MetadataManagementActivityResponse",
            "description": "The metadata management activities of the metastore service."
          },
          "name": {
            "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}.",
            "type": "string"
          },
          "network": {
            "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1:NetworkConfigResponse",
            "description": "The configuration specifying the network settings for the Dataproc Metastore service."
          },
          "port": {
            "description": "The TCP port at which the metastore service is reached. Default: 9083.",
            "type": "integer"
          },
          "releaseChannel": {
            "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE.",
            "type": "string"
          },
          "scalingConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1:ScalingConfigResponse",
            "description": "Scaling configuration of the metastore service."
          },
          "state": {
            "description": "The current state of the metastore service.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Additional information about the current state of the metastore service, if available.",
            "type": "string"
          },
          "telemetryConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1:TelemetryConfigResponse",
            "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
          },
          "tier": {
            "description": "The tier of the service.",
            "type": "string"
          },
          "uid": {
            "description": "The globally unique resource identifier of the metastore service.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metastore service was last updated.",
            "type": "string"
          }
        },
        "required": [
          "artifactGcsUri",
          "createTime",
          "databaseType",
          "encryptionConfig",
          "endpointUri",
          "hiveMetastoreConfig",
          "labels",
          "maintenanceWindow",
          "metadataIntegration",
          "metadataManagementActivity",
          "name",
          "network",
          "networkConfig",
          "port",
          "releaseChannel",
          "scalingConfig",
          "state",
          "stateMessage",
          "telemetryConfig",
          "tier",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1:getServiceBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1:getServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getBackup": {
      "description": "Gets details of a single backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the backup was started.",
            "type": "string"
          },
          "description": {
            "description": "The description of the backup.",
            "type": "string"
          },
          "endTime": {
            "description": "The time when the backup finished creating.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}",
            "type": "string"
          },
          "restoringServices": {
            "description": "Services that are restoring from the backup.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceRevision": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:ServiceResponse",
            "description": "The revision of the service at the time of backup."
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "endTime",
          "name",
          "restoringServices",
          "serviceRevision",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getFederation": {
      "description": "Gets the details of a single federation.",
      "inputs": {
        "properties": {
          "federationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "federationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "backendMetastores": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number.",
            "type": "object"
          },
          "createTime": {
            "description": "The time when the metastore federation was created.",
            "type": "string"
          },
          "endpointUri": {
            "description": "The federation endpoint.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels for the metastore federation.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the federation.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Additional information about the current state of the metastore federation, if available.",
            "type": "string"
          },
          "uid": {
            "description": "The globally unique resource identifier of the metastore federation.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metastore federation was last updated.",
            "type": "string"
          },
          "version": {
            "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version.",
            "type": "string"
          }
        },
        "required": [
          "backendMetastores",
          "createTime",
          "endpointUri",
          "labels",
          "name",
          "state",
          "stateMessage",
          "uid",
          "updateTime",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getFederationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "federationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "federationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getMetadataImport": {
      "description": "Gets details of a single import.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "metadataImportId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "metadataImportId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the metadata import was started.",
            "type": "string"
          },
          "databaseDump": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:DatabaseDumpResponse",
            "description": "Immutable. A database dump from a pre-existing metastore's database."
          },
          "description": {
            "description": "The description of the metadata import.",
            "type": "string"
          },
          "endTime": {
            "description": "The time when the metadata import finished.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the metadata import.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metadata import was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "databaseDump",
          "description",
          "endTime",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getService": {
      "description": "Gets the details of a single service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "artifactGcsUri": {
            "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the metastore service was created.",
            "type": "string"
          },
          "databaseType": {
            "description": "Immutable. The database type that the Metastore service stores its data.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:EncryptionConfigResponse",
            "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
          },
          "endpointUri": {
            "description": "The URI of the endpoint used to access the metastore service.",
            "type": "string"
          },
          "hiveMetastoreConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:HiveMetastoreConfigResponse",
            "description": "Configuration information specific to running Hive metastore software as the metastore service."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels for the metastore service.",
            "type": "object"
          },
          "maintenanceWindow": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:MaintenanceWindowResponse",
            "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
          },
          "metadataIntegration": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:MetadataIntegrationResponse",
            "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
          },
          "metadataManagementActivity": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:MetadataManagementActivityResponse",
            "description": "The metadata management activities of the metastore service."
          },
          "name": {
            "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}.",
            "type": "string"
          },
          "network": {
            "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:NetworkConfigResponse",
            "description": "The configuration specifying the network settings for the Dataproc Metastore service."
          },
          "port": {
            "description": "The TCP port at which the metastore service is reached. Default: 9083.",
            "type": "integer"
          },
          "releaseChannel": {
            "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE.",
            "type": "string"
          },
          "scalingConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:ScalingConfigResponse",
            "description": "Scaling configuration of the metastore service."
          },
          "state": {
            "description": "The current state of the metastore service.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Additional information about the current state of the metastore service, if available.",
            "type": "string"
          },
          "telemetryConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1alpha:TelemetryConfigResponse",
            "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
          },
          "tier": {
            "description": "The tier of the service.",
            "type": "string"
          },
          "uid": {
            "description": "The globally unique resource identifier of the metastore service.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metastore service was last updated.",
            "type": "string"
          }
        },
        "required": [
          "artifactGcsUri",
          "createTime",
          "databaseType",
          "encryptionConfig",
          "endpointUri",
          "hiveMetastoreConfig",
          "labels",
          "maintenanceWindow",
          "metadataIntegration",
          "metadataManagementActivity",
          "name",
          "network",
          "networkConfig",
          "port",
          "releaseChannel",
          "scalingConfig",
          "state",
          "stateMessage",
          "telemetryConfig",
          "tier",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getServiceBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getServiceDatabaseIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getServiceDatabaseTableIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          },
          "tableId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "location",
          "serviceId",
          "tableId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1alpha:getServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1alpha:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getBackup": {
      "description": "Gets details of a single backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the backup was started.",
            "type": "string"
          },
          "description": {
            "description": "The description of the backup.",
            "type": "string"
          },
          "endTime": {
            "description": "The time when the backup finished creating.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}",
            "type": "string"
          },
          "restoringServices": {
            "description": "Services that are restoring from the backup.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "serviceRevision": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:ServiceResponse",
            "description": "The revision of the service at the time of backup."
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "endTime",
          "name",
          "restoringServices",
          "serviceRevision",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getFederation": {
      "description": "Gets the details of a single federation.",
      "inputs": {
        "properties": {
          "federationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "federationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "backendMetastores": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map from BackendMetastore rank to BackendMetastores from which the federation service serves metadata at query time. The map key represents the order in which BackendMetastores should be evaluated to resolve database names at query time and should be greater than or equal to zero. A BackendMetastore with a lower number will be evaluated before a BackendMetastore with a higher number.",
            "type": "object"
          },
          "createTime": {
            "description": "The time when the metastore federation was created.",
            "type": "string"
          },
          "endpointUri": {
            "description": "The federation endpoint.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels for the metastore federation.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The relative resource name of the federation, of the form: projects/{project_number}/locations/{location_id}/federations/{federation_id}`.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the federation.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Additional information about the current state of the metastore federation, if available.",
            "type": "string"
          },
          "uid": {
            "description": "The globally unique resource identifier of the metastore federation.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metastore federation was last updated.",
            "type": "string"
          },
          "version": {
            "description": "Immutable. The Apache Hive metastore version of the federation. All backend metastore versions must be compatible with the federation version.",
            "type": "string"
          }
        },
        "required": [
          "backendMetastores",
          "createTime",
          "endpointUri",
          "labels",
          "name",
          "state",
          "stateMessage",
          "uid",
          "updateTime",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getFederationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "federationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "federationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getMetadataImport": {
      "description": "Gets details of a single import.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "metadataImportId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "metadataImportId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the metadata import was started.",
            "type": "string"
          },
          "databaseDump": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:DatabaseDumpResponse",
            "description": "Immutable. A database dump from a pre-existing metastore's database."
          },
          "description": {
            "description": "The description of the metadata import.",
            "type": "string"
          },
          "endTime": {
            "description": "The time when the metadata import finished.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The relative resource name of the metadata import, of the form:projects/{project_number}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the metadata import.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metadata import was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "databaseDump",
          "description",
          "endTime",
          "name",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getService": {
      "description": "Gets the details of a single service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "artifactGcsUri": {
            "description": "A Cloud Storage URI (starting with gs://) that specifies where artifacts related to the metastore service are stored.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the metastore service was created.",
            "type": "string"
          },
          "databaseType": {
            "description": "Immutable. The database type that the Metastore service stores its data.",
            "type": "string"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:EncryptionConfigResponse",
            "description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
          },
          "endpointUri": {
            "description": "The URI of the endpoint used to access the metastore service.",
            "type": "string"
          },
          "hiveMetastoreConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:HiveMetastoreConfigResponse",
            "description": "Configuration information specific to running Hive metastore software as the metastore service."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels for the metastore service.",
            "type": "object"
          },
          "maintenanceWindow": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:MaintenanceWindowResponse",
            "description": "The one hour maintenance window of the metastore service. This specifies when the service can be restarted for maintenance purposes in UTC time. Maintenance window is not needed for services with the SPANNER database type."
          },
          "metadataIntegration": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:MetadataIntegrationResponse",
            "description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
          },
          "metadataManagementActivity": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:MetadataManagementActivityResponse",
            "description": "The metadata management activities of the metastore service."
          },
          "name": {
            "description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}.",
            "type": "string"
          },
          "network": {
            "description": "Immutable. The relative resource name of the VPC network on which the instance can be accessed. It is specified in the following form:projects/{project_number}/global/networks/{network_id}.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:NetworkConfigResponse",
            "description": "The configuration specifying the network settings for the Dataproc Metastore service."
          },
          "port": {
            "description": "The TCP port at which the metastore service is reached. Default: 9083.",
            "type": "integer"
          },
          "releaseChannel": {
            "description": "Immutable. The release channel of the service. If unspecified, defaults to STABLE.",
            "type": "string"
          },
          "scalingConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:ScalingConfigResponse",
            "description": "Scaling configuration of the metastore service."
          },
          "state": {
            "description": "The current state of the metastore service.",
            "type": "string"
          },
          "stateMessage": {
            "description": "Additional information about the current state of the metastore service, if available.",
            "type": "string"
          },
          "telemetryConfig": {
            "$ref": "#/types/google-native:metastore%2Fv1beta:TelemetryConfigResponse",
            "description": "The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON."
          },
          "tier": {
            "description": "The tier of the service.",
            "type": "string"
          },
          "uid": {
            "description": "The globally unique resource identifier of the metastore service.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the metastore service was last updated.",
            "type": "string"
          }
        },
        "required": [
          "artifactGcsUri",
          "createTime",
          "databaseType",
          "encryptionConfig",
          "endpointUri",
          "hiveMetastoreConfig",
          "labels",
          "maintenanceWindow",
          "metadataIntegration",
          "metadataManagementActivity",
          "name",
          "network",
          "networkConfig",
          "port",
          "releaseChannel",
          "scalingConfig",
          "state",
          "stateMessage",
          "telemetryConfig",
          "tier",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getServiceBackupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getServiceDatabaseIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getServiceDatabaseTableIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          },
          "tableId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "location",
          "serviceId",
          "tableId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:metastore/v1beta:getServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of members, or principals, with a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one principal.The bindings in a Policy can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the bindings grant 50 different roles to user:alice@example.com, and not to any other principal, then you can add another 1,450 principals to the bindings in the Policy.",
            "items": {
              "$ref": "#/types/google-native:metastore%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1:getGroup": {
      "description": "Gets the details of a group.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the group was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The description of the group.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User-friendly display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "The name of the group.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the group was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1:getImportDataFile": {
      "description": "Gets an import data file.",
      "inputs": {
        "properties": {
          "importDataFileId": {
            "type": "string"
          },
          "importJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "importDataFileId",
          "importJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the file was created.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name. Maximum length is 63 characters.",
            "type": "string"
          },
          "format": {
            "description": "The payload format.",
            "type": "string"
          },
          "name": {
            "description": "The name of the file.",
            "type": "string"
          },
          "state": {
            "description": "The state of the import data file.",
            "type": "string"
          },
          "uploadFileInfo": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:UploadFileInfoResponse",
            "description": "Information about a file that is uploaded to a storage service."
          }
        },
        "required": [
          "createTime",
          "displayName",
          "format",
          "name",
          "state",
          "uploadFileInfo"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1:getImportJob": {
      "description": "Gets the details of an import job.",
      "inputs": {
        "properties": {
          "importJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "importJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "assetSource": {
            "description": "Reference to a source.",
            "type": "string"
          },
          "completeTime": {
            "description": "The timestamp when the import job was completed.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the import job was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User-friendly display name. Maximum length is 256 characters.",
            "type": "string"
          },
          "executionReport": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ExecutionReportResponse",
            "description": "The report with the results of running the import job."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "The full name of the import job.",
            "type": "string"
          },
          "state": {
            "description": "The state of the import job.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the import job was last updated.",
            "type": "string"
          },
          "validationReport": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ValidationReportResponse",
            "description": "The report with the validation results of the import job."
          }
        },
        "required": [
          "assetSource",
          "completeTime",
          "createTime",
          "displayName",
          "executionReport",
          "labels",
          "name",
          "state",
          "updateTime",
          "validationReport"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1:getPreferenceSet": {
      "description": "Gets the details of a preference set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "preferenceSetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "preferenceSetId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the preference set was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of the preference set.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name. Maximum length is 63 characters.",
            "type": "string"
          },
          "name": {
            "description": "Name of the preference set.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the preference set was last updated.",
            "type": "string"
          },
          "virtualMachinePreferences": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:VirtualMachinePreferencesResponse",
            "description": "A set of preferences that applies to all virtual machines in the context."
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "name",
          "updateTime",
          "virtualMachinePreferences"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1:getReport": {
      "description": "Gets details of a single Report.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "reportConfigId": {
            "type": "string"
          },
          "reportId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "reportConfigId",
          "reportId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation timestamp.",
            "type": "string"
          },
          "description": {
            "description": "Free-text description.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name. Maximum length is 63 characters.",
            "type": "string"
          },
          "name": {
            "description": "Name of resource.",
            "type": "string"
          },
          "state": {
            "description": "Report creation state.",
            "type": "string"
          },
          "summary": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportSummaryResponse",
            "description": "Summary view of the Report."
          },
          "type": {
            "description": "Report type.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "name",
          "state",
          "summary",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1:getReportConfig": {
      "description": "Gets details of a single ReportConfig.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "reportConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "reportConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Free-text description.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name. Maximum length is 63 characters.",
            "type": "string"
          },
          "groupPreferencesetAssignments": {
            "description": "Collection of combinations of groups and preference sets.",
            "items": {
              "$ref": "#/types/google-native:migrationcenter%2Fv1:ReportConfigGroupPreferenceSetAssignmentResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "groupPreferencesetAssignments",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1:getSource": {
      "description": "Gets the details of a source.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the source was created.",
            "type": "string"
          },
          "description": {
            "description": "Free-text description.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name.",
            "type": "string"
          },
          "errorFrameCount": {
            "description": "The number of frames that were reported by the source and contained errors.",
            "type": "integer"
          },
          "managed": {
            "description": "If `true`, the source is managed by other service(s).",
            "type": "boolean"
          },
          "name": {
            "description": "The full name of the source.",
            "type": "string"
          },
          "pendingFrameCount": {
            "description": "Number of frames that are still being processed.",
            "type": "integer"
          },
          "priority": {
            "description": "The information confidence of the source. The higher the value, the higher the confidence.",
            "type": "integer"
          },
          "state": {
            "description": "The state of the source.",
            "type": "string"
          },
          "type": {
            "description": "Data source type.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the source was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "errorFrameCount",
          "managed",
          "name",
          "pendingFrameCount",
          "priority",
          "state",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1alpha1:getGroup": {
      "description": "Gets the details of a group.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the group was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. The description of the group.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User-friendly display name.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "The name of the group.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the group was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "labels",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1alpha1:getImportDataFile": {
      "description": "Gets an import data file.",
      "inputs": {
        "properties": {
          "importDataFileId": {
            "type": "string"
          },
          "importJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "importDataFileId",
          "importJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the file was created.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. User-friendly display name. Maximum length is 256 characters.",
            "type": "string"
          },
          "format": {
            "description": "The payload format.",
            "type": "string"
          },
          "name": {
            "description": "The name of the file.",
            "type": "string"
          },
          "state": {
            "description": "The state of the import data file.",
            "type": "string"
          },
          "uploadFileInfo": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:UploadFileInfoResponse",
            "description": "Information about a file that is uploaded to a storage service."
          }
        },
        "required": [
          "createTime",
          "displayName",
          "format",
          "name",
          "state",
          "uploadFileInfo"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1alpha1:getImportJob": {
      "description": "Gets the details of an import job.",
      "inputs": {
        "properties": {
          "importJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "importJobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "assetSource": {
            "description": "Reference to a source.",
            "type": "string"
          },
          "completeTime": {
            "description": "The timestamp when the import job was completed.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the import job was created.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name. Maximum length is 63 characters.",
            "type": "string"
          },
          "executionReport": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ExecutionReportResponse",
            "description": "The report with the results of running the import job."
          },
          "gcsPayload": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:GCSPayloadInfoResponse",
            "description": "The payload is in Google Cloud Storage."
          },
          "inlinePayload": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:InlinePayloadInfoResponse",
            "description": "The payload is included in the request, mainly used for small import jobs."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "The full name of the import job.",
            "type": "string"
          },
          "state": {
            "description": "The state of the import job.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the import job was last updated.",
            "type": "string"
          },
          "validationReport": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ValidationReportResponse",
            "description": "The report with the validation results of the import job."
          }
        },
        "required": [
          "assetSource",
          "completeTime",
          "createTime",
          "displayName",
          "executionReport",
          "gcsPayload",
          "inlinePayload",
          "labels",
          "name",
          "state",
          "updateTime",
          "validationReport"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1alpha1:getPreferenceSet": {
      "description": "Gets the details of a preference set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "preferenceSetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "preferenceSetId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the preference set was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of the preference set.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name. Maximum length is 63 characters.",
            "type": "string"
          },
          "name": {
            "description": "Name of the preference set.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the preference set was last updated.",
            "type": "string"
          },
          "virtualMachinePreferences": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:VirtualMachinePreferencesResponse",
            "description": "A set of preferences that applies to all virtual machines in the context."
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "name",
          "updateTime",
          "virtualMachinePreferences"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1alpha1:getReport": {
      "description": "Gets details of a single Report.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "reportConfigId": {
            "type": "string"
          },
          "reportId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "reportConfigId",
          "reportId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation timestamp.",
            "type": "string"
          },
          "description": {
            "description": "Free-text description.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name. Maximum length is 63 characters.",
            "type": "string"
          },
          "name": {
            "description": "Name of resource.",
            "type": "string"
          },
          "state": {
            "description": "Report creation state.",
            "type": "string"
          },
          "summary": {
            "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportSummaryResponse",
            "description": "Summary view of the Report."
          },
          "type": {
            "description": "Report type.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "name",
          "state",
          "summary",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1alpha1:getReportConfig": {
      "description": "Gets details of a single ReportConfig.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "reportConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "reportConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Free-text description.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name. Maximum length is 63 characters.",
            "type": "string"
          },
          "groupPreferencesetAssignments": {
            "description": "Collection of combinations of groups and preference sets.",
            "items": {
              "$ref": "#/types/google-native:migrationcenter%2Fv1alpha1:ReportConfigGroupPreferenceSetAssignmentResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "groupPreferencesetAssignments",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:migrationcenter/v1alpha1:getSource": {
      "description": "Gets the details of a source.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the source was created.",
            "type": "string"
          },
          "description": {
            "description": "Free-text description.",
            "type": "string"
          },
          "displayName": {
            "description": "User-friendly display name.",
            "type": "string"
          },
          "errorFrameCount": {
            "description": "The number of frames that were reported by the source and contained errors.",
            "type": "integer"
          },
          "isManaged": {
            "description": "If `true`, the source is managed by other service(s).",
            "type": "boolean"
          },
          "name": {
            "description": "The full name of the source.",
            "type": "string"
          },
          "pendingFrameCount": {
            "description": "Number of frames that are still being processed.",
            "type": "integer"
          },
          "priority": {
            "description": "The information confidence of the source. The higher the value, the higher the confidence.",
            "type": "integer"
          },
          "state": {
            "description": "The state of the source.",
            "type": "string"
          },
          "type": {
            "description": "Data source type.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the source was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "errorFrameCount",
          "isManaged",
          "name",
          "pendingFrameCount",
          "priority",
          "state",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:ml/v1:getJob": {
      "description": "Describes a job.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "When the job was created.",
            "type": "string"
          },
          "endTime": {
            "description": "When the job processing was completed.",
            "type": "string"
          },
          "errorMessage": {
            "description": "The details of a failure or a cancellation.",
            "type": "string"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a job from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform job updates in order to avoid race conditions: An `etag` is returned in the response to `GetJob`, and systems are expected to put that etag in the request to `UpdateJob` to ensure that their change will be applied to the same version of the job.",
            "type": "string"
          },
          "jobId": {
            "description": "The user-specified id of the job.",
            "type": "string"
          },
          "jobPosition": {
            "description": "It's only effect when the job is in QUEUED state. If it's positive, it indicates the job's position in the job scheduler. It's 0 when the job is already scheduled.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. One or more labels that you can add, to organize your jobs. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels.",
            "type": "object"
          },
          "predictionInput": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__PredictionInputResponse",
            "description": "Input parameters to create a prediction job."
          },
          "predictionOutput": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__PredictionOutputResponse",
            "description": "The current prediction job result."
          },
          "startTime": {
            "description": "When the job processing was started.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of a job.",
            "type": "string"
          },
          "trainingInput": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__TrainingInputResponse",
            "description": "Input parameters to create a training job."
          },
          "trainingOutput": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__TrainingOutputResponse",
            "description": "The current training job result."
          }
        },
        "required": [
          "createTime",
          "endTime",
          "errorMessage",
          "etag",
          "jobId",
          "jobPosition",
          "labels",
          "predictionInput",
          "predictionOutput",
          "startTime",
          "state",
          "trainingInput",
          "trainingOutput"
        ],
        "type": "object"
      }
    },
    "google-native:ml/v1:getJobIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:ml/v1:getModel": {
      "description": "Gets information about a model, including its name, the description (if set), and the default version (if at least one version of the model has been deployed).",
      "inputs": {
        "properties": {
          "modelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "modelId"
        ]
      },
      "outputs": {
        "properties": {
          "defaultVersion": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__VersionResponse",
            "description": "The default version of the model. This version will be used to handle prediction requests that do not specify a version. You can change the default version by calling projects.models.versions.setDefault."
          },
          "description": {
            "description": "Optional. The description specified for the model when it was created.",
            "type": "string"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetModel`, and systems are expected to put that etag in the request to `UpdateModel` to ensure that their change will be applied to the model as intended.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. One or more labels that you can add, to organize your models. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models.",
            "type": "object"
          },
          "name": {
            "description": "The name specified for the model when it was created. The model name must be unique within the project it is created in.",
            "type": "string"
          },
          "onlinePredictionConsoleLogging": {
            "description": "Optional. If true, online prediction nodes send `stderr` and `stdout` streams to Cloud Logging. These can be more verbose than the standard access logs (see `onlinePredictionLogging`) and can incur higher cost. However, they are helpful for debugging. Note that [logs may incur a cost](/stackdriver/pricing), especially if your project receives prediction requests at a high QPS. Estimate your costs before enabling this option. Default is false.",
            "type": "boolean"
          },
          "onlinePredictionLogging": {
            "description": "Optional. If true, online prediction access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each request. Note that [logs may incur a cost](/stackdriver/pricing), especially if your project receives prediction requests at a high queries per second rate (QPS). Estimate your costs before enabling this option. Default is false.",
            "type": "boolean"
          },
          "regions": {
            "description": "Optional. The list of regions where the model is going to be deployed. Only one region per model is supported. Defaults to 'us-central1' if nothing is set. See the available regions for AI Platform services. Note: * No matter where a model is deployed, it can always be accessed by users from anywhere, both for online and batch prediction. * The region for a batch prediction job is set by the region field when submitting the batch prediction job and does not take its value from this field.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "defaultVersion",
          "description",
          "etag",
          "labels",
          "name",
          "onlinePredictionConsoleLogging",
          "onlinePredictionLogging",
          "regions"
        ],
        "type": "object"
      }
    },
    "google-native:ml/v1:getModelIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "modelId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "modelId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:ml%2Fv1:GoogleIamV1__BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:ml/v1:getStudy": {
      "description": "Gets a study.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "studyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "studyId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time at which the study was created.",
            "type": "string"
          },
          "inactiveReason": {
            "description": "A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED.",
            "type": "string"
          },
          "name": {
            "description": "The name of a study.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of a study.",
            "type": "string"
          },
          "studyConfig": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__StudyConfigResponse",
            "description": "Configuration of the study."
          }
        },
        "required": [
          "createTime",
          "inactiveReason",
          "name",
          "state",
          "studyConfig"
        ],
        "type": "object"
      }
    },
    "google-native:ml/v1:getTrial": {
      "description": "Gets a trial.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "studyId": {
            "type": "string"
          },
          "trialId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "studyId",
          "trialId"
        ]
      },
      "outputs": {
        "properties": {
          "clientId": {
            "description": "The identifier of the client that originally requested this trial.",
            "type": "string"
          },
          "endTime": {
            "description": "Time at which the trial's status changed to COMPLETED.",
            "type": "string"
          },
          "finalMeasurement": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__MeasurementResponse",
            "description": "The final measurement containing the objective value."
          },
          "infeasibleReason": {
            "description": "A human readable string describing why the trial is infeasible. This should only be set if trial_infeasible is true.",
            "type": "string"
          },
          "measurements": {
            "description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_time). These are used for early stopping computations.",
            "items": {
              "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__MeasurementResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the trial assigned by the service.",
            "type": "string"
          },
          "parameters": {
            "description": "The parameters of the trial.",
            "items": {
              "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1_Trial_ParameterResponse"
            },
            "type": "array"
          },
          "startTime": {
            "description": "Time at which the trial was started.",
            "type": "string"
          },
          "state": {
            "description": "The detailed state of a trial.",
            "type": "string"
          },
          "trialInfeasible": {
            "description": "If true, the parameters in this trial are not attempted again.",
            "type": "boolean"
          }
        },
        "required": [
          "clientId",
          "endTime",
          "finalMeasurement",
          "infeasibleReason",
          "measurements",
          "name",
          "parameters",
          "startTime",
          "state",
          "trialInfeasible"
        ],
        "type": "object"
      }
    },
    "google-native:ml/v1:getVersion": {
      "description": "Gets information about a model version. Models can have multiple versions. You can call projects.models.versions.list to get the same information that this method returns for all of the versions of a model.",
      "inputs": {
        "properties": {
          "modelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "versionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "modelId",
          "versionId"
        ]
      },
      "outputs": {
        "properties": {
          "acceleratorConfig": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AcceleratorConfigResponse",
            "description": "Optional. Accelerator config for using GPUs for online prediction (beta). Only specify this field if you have specified a Compute Engine (N1) machine type in the `machineType` field. Learn more about [using GPUs for online prediction](/ml-engine/docs/machine-types-online-prediction#gpus)."
          },
          "autoScaling": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__AutoScalingResponse",
            "description": "Automatically scale the number of nodes used to serve the model in response to increases and decreases in traffic. Care should be taken to ramp up traffic according to the model's ability to scale or you will start seeing increases in latency and 429 response codes."
          },
          "container": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ContainerSpecResponse",
            "description": "Optional. Specifies a custom container to use for serving predictions. If you specify this field, then `machineType` is required. If you specify this field, then `deploymentUri` is optional. If you specify this field, then you must not specify `runtimeVersion`, `packageUris`, `framework`, `pythonVersion`, or `predictionClass`."
          },
          "createTime": {
            "description": "The time the version was created.",
            "type": "string"
          },
          "deploymentUri": {
            "description": "The Cloud Storage URI of a directory containing trained model artifacts to be used to create the model version. See the [guide to deploying models](/ai-platform/prediction/docs/deploying-models) for more information. The total number of files under this directory must not exceed 1000. During projects.models.versions.create, AI Platform Prediction copies all files from the specified directory to a location managed by the service. From then on, AI Platform Prediction uses these copies of the model artifacts to serve predictions, not the original files in Cloud Storage, so this location is useful only as a historical record. If you specify container, then this field is optional. Otherwise, it is required. Learn [how to use this field with a custom container](/ai-platform/prediction/docs/custom-container-requirements#artifacts).",
            "type": "string"
          },
          "description": {
            "description": "Optional. The description specified for the version when it was created.",
            "type": "string"
          },
          "errorMessage": {
            "description": "The details of a failure or a cancellation.",
            "type": "string"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetVersion`, and systems are expected to put that etag in the request to `UpdateVersion` to ensure that their change will be applied to the model as intended.",
            "type": "string"
          },
          "explanationConfig": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ExplanationConfigResponse",
            "description": "Optional. Configures explainability features on the model's version. Some explanation features require additional metadata to be loaded as part of the model payload."
          },
          "framework": {
            "description": "Optional. The machine learning framework AI Platform uses to train this version of the model. Valid values are `TENSORFLOW`, `SCIKIT_LEARN`, `XGBOOST`. If you do not specify a framework, AI Platform will analyze files in the deployment_uri to determine a framework. If you choose `SCIKIT_LEARN` or `XGBOOST`, you must also set the runtime version of the model to 1.4 or greater. Do **not** specify a framework if you're deploying a [custom prediction routine](/ai-platform/prediction/docs/custom-prediction-routines) or if you're using a [custom container](/ai-platform/prediction/docs/use-custom-container).",
            "type": "string"
          },
          "isDefault": {
            "description": "If true, this version will be used to handle prediction requests that do not specify a version. You can change the default version by calling projects.methods.versions.setDefault.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. One or more labels that you can add, to organize your model versions. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models.",
            "type": "object"
          },
          "lastMigrationModelId": {
            "description": "The [AI Platform (Unified) `Model`](https://cloud.google.com/ai-platform-unified/docs/reference/rest/v1beta1/projects.locations.models) ID for the last [model migration](https://cloud.google.com/ai-platform-unified/docs/start/migrating-to-ai-platform-unified).",
            "type": "string"
          },
          "lastMigrationTime": {
            "description": "The last time this version was successfully [migrated to AI Platform (Unified)](https://cloud.google.com/ai-platform-unified/docs/start/migrating-to-ai-platform-unified).",
            "type": "string"
          },
          "lastUseTime": {
            "description": "The time the version was last used for prediction.",
            "type": "string"
          },
          "machineType": {
            "description": "Optional. The type of machine on which to serve the model. Currently only applies to online prediction service. To learn about valid values for this field, read [Choosing a machine type for online prediction](/ai-platform/prediction/docs/machine-types-online-prediction). If this field is not specified and you are using a [regional endpoint](/ai-platform/prediction/docs/regional-endpoints), then the machine type defaults to `n1-standard-2`. If this field is not specified and you are using the global endpoint (`ml.googleapis.com`), then the machine type defaults to `mls1-c1-m2`.",
            "type": "string"
          },
          "manualScaling": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__ManualScalingResponse",
            "description": "Manually select the number of nodes to use for serving the model. You should generally use `auto_scaling` with an appropriate `min_nodes` instead, but this option is available if you want more predictable billing. Beware that latency and error rates will increase if the traffic exceeds that capability of the system to serve it based on the selected number of nodes."
          },
          "name": {
            "description": "The name specified for the version when it was created. The version name must be unique within the model it is created in.",
            "type": "string"
          },
          "packageUris": {
            "description": "Optional. Cloud Storage paths (`gs://…`) of packages for [custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines) or [scikit-learn pipelines with custom code](/ml-engine/docs/scikit/exporting-for-prediction#custom-pipeline-code). For a custom prediction routine, one of these packages must contain your Predictor class (see [`predictionClass`](#Version.FIELDS.prediction_class)). Additionally, include any dependencies used by your Predictor or scikit-learn pipeline uses that are not already included in your selected [runtime version](/ml-engine/docs/tensorflow/runtime-version-list). If you specify this field, you must also set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "predictionClass": {
            "description": "Optional. The fully qualified name (module_name.class_name) of a class that implements the Predictor interface described in this reference field. The module containing this class should be included in a package provided to the [`packageUris` field](#Version.FIELDS.package_uris). Specify this field if and only if you are deploying a [custom prediction routine (beta)](/ml-engine/docs/tensorflow/custom-prediction-routines). If you specify this field, you must set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater and you must set `machineType` to a [legacy (MLS1) machine type](/ml-engine/docs/machine-types-online-prediction). The following code sample provides the Predictor interface: class Predictor(object): \"\"\"Interface for constructing custom predictors.\"\"\" def predict(self, instances, **kwargs): \"\"\"Performs custom prediction. Instances are the decoded values from the request. They have already been deserialized from JSON. Args: instances: A list of prediction input instances. **kwargs: A dictionary of keyword args provided as additional fields on the predict request body. Returns: A list of outputs containing the prediction results. This list must be JSON serializable. \"\"\" raise NotImplementedError() @classmethod def from_path(cls, model_dir): \"\"\"Creates an instance of Predictor using the given path. Loading of the predictor should be done in this method. Args: model_dir: The local directory that contains the exported model file along with any additional files uploaded when creating the version resource. Returns: An instance implementing this Predictor class. \"\"\" raise NotImplementedError() Learn more about [the Predictor interface and custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines).",
            "type": "string"
          },
          "pythonVersion": {
            "description": "The version of Python used in prediction. The following Python versions are available: * Python '3.7' is available when `runtime_version` is set to '1.15' or later. * Python '3.5' is available when `runtime_version` is set to a version from '1.4' to '1.14'. * Python '2.7' is available when `runtime_version` is set to '1.15' or earlier. Read more about the Python versions available for [each runtime version](/ml-engine/docs/runtime-version-list).",
            "type": "string"
          },
          "requestLoggingConfig": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__RequestLoggingConfigResponse",
            "description": "Optional. *Only* specify this field in a projects.models.versions.patch request. Specifying it in a projects.models.versions.create request has no effect. Configures the request-response pair logging on predictions from this Version."
          },
          "routes": {
            "$ref": "#/types/google-native:ml%2Fv1:GoogleCloudMlV1__RouteMapResponse",
            "description": "Optional. Specifies paths on a custom container's HTTP server where AI Platform Prediction sends certain requests. If you specify this field, then you must also specify the `container` field. If you specify the `container` field and do not specify this field, it defaults to the following: ```json { \"predict\": \"/v1/models/MODEL/versions/VERSION:predict\", \"health\": \"/v1/models/MODEL/versions/VERSION\" } ``` See RouteMap for more details about these default values."
          },
          "runtimeVersion": {
            "description": "The AI Platform runtime version to use for this deployment. For more information, see the [runtime version list](/ml-engine/docs/runtime-version-list) and [how to manage runtime versions](/ml-engine/docs/versioning).",
            "type": "string"
          },
          "serviceAccount": {
            "description": "Optional. Specifies the service account for resource access control. If you specify this field, then you must also specify either the `containerSpec` or the `predictionClass` field. Learn more about [using a custom service account](/ai-platform/prediction/docs/custom-service-account).",
            "type": "string"
          },
          "state": {
            "description": "The state of a version.",
            "type": "string"
          }
        },
        "required": [
          "acceleratorConfig",
          "autoScaling",
          "container",
          "createTime",
          "deploymentUri",
          "description",
          "errorMessage",
          "etag",
          "explanationConfig",
          "framework",
          "isDefault",
          "labels",
          "lastMigrationModelId",
          "lastMigrationTime",
          "lastUseTime",
          "machineType",
          "manualScaling",
          "name",
          "packageUris",
          "predictionClass",
          "pythonVersion",
          "requestLoggingConfig",
          "routes",
          "runtimeVersion",
          "serviceAccount",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v1:getDashboard": {
      "description": "Fetches a specific dashboard.This method requires the monitoring.dashboards.get permission on the specified dashboard. For more information, see Cloud Identity and Access Management (https://cloud.google.com/iam).",
      "inputs": {
        "properties": {
          "dashboardId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "dashboardId"
        ]
      },
      "outputs": {
        "properties": {
          "columnLayout": {
            "$ref": "#/types/google-native:monitoring%2Fv1:ColumnLayoutResponse",
            "description": "The content is divided into equally spaced columns and the widgets are arranged vertically."
          },
          "dashboardFilters": {
            "description": "Filters to reduce the amount of data charted based on the filter criteria.",
            "items": {
              "$ref": "#/types/google-native:monitoring%2Fv1:DashboardFilterResponse"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The mutable, human-readable name.",
            "type": "string"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. An etag is returned in the response to GetDashboard, and users are expected to put that etag in the request to UpdateDashboard to ensure that their change will be applied to the same version of the Dashboard configuration. The field should not be passed during dashboard creation.",
            "type": "string"
          },
          "gridLayout": {
            "$ref": "#/types/google-native:monitoring%2Fv1:GridLayoutResponse",
            "description": "Content is arranged with a basic layout that re-flows a simple list of informational elements like widgets or tiles."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels applied to the dashboard",
            "type": "object"
          },
          "mosaicLayout": {
            "$ref": "#/types/google-native:monitoring%2Fv1:MosaicLayoutResponse",
            "description": "The content is arranged as a grid of tiles, with each content widget occupying one or more grid blocks."
          },
          "name": {
            "description": "Immutable. The resource name of the dashboard.",
            "type": "string"
          },
          "rowLayout": {
            "$ref": "#/types/google-native:monitoring%2Fv1:RowLayoutResponse",
            "description": "The content is divided into equally spaced rows and the widgets are arranged horizontally."
          }
        },
        "required": [
          "columnLayout",
          "dashboardFilters",
          "displayName",
          "etag",
          "gridLayout",
          "labels",
          "mosaicLayout",
          "name",
          "rowLayout"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v3:getAlertPolicy": {
      "description": "Gets a single alerting policy.",
      "inputs": {
        "properties": {
          "alertPolicyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "alertPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "alertStrategy": {
            "$ref": "#/types/google-native:monitoring%2Fv3:AlertStrategyResponse",
            "description": "Control over how this alert policy's notification channels are notified."
          },
          "combiner": {
            "description": "How to combine the results of multiple conditions to determine if an incident should be opened. If condition_time_series_query_language is present, this must be COMBINE_UNSPECIFIED.",
            "type": "string"
          },
          "conditions": {
            "description": "A list of conditions for the policy. The conditions are combined by AND or OR according to the combiner field. If the combined conditions evaluate to true, then an incident is created. A policy can have from one to six conditions. If condition_time_series_query_language is present, it must be the only condition. If condition_monitoring_query_language is present, it must be the only condition.",
            "items": {
              "$ref": "#/types/google-native:monitoring%2Fv3:ConditionResponse"
            },
            "type": "array"
          },
          "creationRecord": {
            "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecordResponse",
            "description": "A read-only record of the creation of the alerting policy. If provided in a call to create or update, this field will be ignored."
          },
          "displayName": {
            "description": "A short name or phrase used to identify the policy in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple policies in the same project. The name is limited to 512 Unicode characters.The convention for the display_name of a PrometheusQueryLanguageCondition is \"{rule group name}/{alert name}\", where the {rule group name} and {alert name} should be taken from the corresponding Prometheus configuration file. This convention is not enforced. In any case the display_name is not a unique key of the AlertPolicy.",
            "type": "string"
          },
          "documentation": {
            "$ref": "#/types/google-native:monitoring%2Fv3:DocumentationResponse",
            "description": "Documentation that is included with notifications and incidents related to this policy. Best practice is for the documentation to include information to help responders understand, mitigate, escalate, and correct the underlying problems detected by the alerting policy. Notification channels that have limited capacity might not show this documentation."
          },
          "enabled": {
            "description": "Whether or not the policy is enabled. On write, the default interpretation if unset is that the policy is enabled. On read, clients should not make any assumption about the state if it has not been populated. The field should always be populated on List and Get operations, unless a field projection has been specified that strips it out.",
            "type": "boolean"
          },
          "mutationRecord": {
            "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecordResponse",
            "description": "A read-only record of the most recent change to the alerting policy. If provided in a call to create or update, this field will be ignored."
          },
          "name": {
            "description": "Required if the policy exists. The resource name for this policy. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] [ALERT_POLICY_ID] is assigned by Cloud Monitoring when the policy is created. When calling the alertPolicies.create method, do not include the name field in the alerting policy passed as part of the request.",
            "type": "string"
          },
          "notificationChannels": {
            "description": "Identifies the notification channels to which notifications should be sent when incidents are opened or closed or when new violations occur on an already opened incident. Each element of this array corresponds to the name field in each of the NotificationChannel objects that are returned from the ListNotificationChannels method. The format of the entries in this field is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] ",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "severity": {
            "description": "Optional. The severity of an alert policy indicates how important alerts generated by that policy are. The severity level, if specified, will be displayed on the Incident detail page and in notifications.",
            "type": "string"
          },
          "userLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key/value data to be used for organizing and identifying the AlertPolicy objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter.Note that Prometheus {alert name} is a valid Prometheus label names (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels), whereas Prometheus {rule group} is an unrestricted UTF-8 string. This means that they cannot be stored as-is in user labels, because they may contain characters that are not allowed in user-label values.",
            "type": "object"
          },
          "validity": {
            "$ref": "#/types/google-native:monitoring%2Fv3:StatusResponse",
            "description": "Read-only description of how the alert policy is invalid. This field is only set when the alert policy is invalid. An invalid alert policy will not generate incidents."
          }
        },
        "required": [
          "alertStrategy",
          "combiner",
          "conditions",
          "creationRecord",
          "displayName",
          "documentation",
          "enabled",
          "mutationRecord",
          "name",
          "notificationChannels",
          "severity",
          "userLabels",
          "validity"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v3:getGroup": {
      "description": "Gets a single group.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "A user-assigned name for this group, used only for display purposes.",
            "type": "string"
          },
          "filter": {
            "description": "The filter used to determine which monitored resources belong to this group.",
            "type": "string"
          },
          "isCluster": {
            "description": "If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.",
            "type": "boolean"
          },
          "name": {
            "description": "The name of this group. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique [GROUP_ID] that is generated automatically.",
            "type": "string"
          },
          "parentName": {
            "description": "The name of the group's parent, if it has one. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] For groups with no parent, parent_name is the empty string, \"\".",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "filter",
          "isCluster",
          "name",
          "parentName"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v3:getMetricDescriptor": {
      "description": "Gets a single metric descriptor.",
      "inputs": {
        "properties": {
          "metricDescriptorId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "metricDescriptorId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "A detailed description of the metric, which can be used in documentation.",
            "type": "string"
          },
          "displayName": {
            "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota.",
            "type": "string"
          },
          "labels": {
            "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.",
            "items": {
              "$ref": "#/types/google-native:monitoring%2Fv3:LabelDescriptorResponse"
            },
            "type": "array"
          },
          "launchStage": {
            "description": "Optional. The launch stage of the metric definition.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:monitoring%2Fv3:MetricDescriptorMetadataResponse",
            "description": "Optional. Metadata which can be used to guide usage of the metric."
          },
          "metricKind": {
            "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.",
            "type": "string"
          },
          "monitoredResourceTypes": {
            "description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The resource name of the metric descriptor.",
            "type": "string"
          },
          "type": {
            "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name custom.googleapis.com or external.googleapis.com. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\" ",
            "type": "string"
          },
          "unit": {
            "description": "The units in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the representation of the stored metric values.Different systems might scale the values to be more easily displayed (so a value of 0.02kBy might be displayed as 20By, and a value of 3523kBy might be displayed as 3.5MBy). However, if the unit is kBy, then the value of the metric is always in thousands of bytes, no matter how it might be displayed.If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an INT64 CUMULATIVE metric whose unit is s{CPU} (or equivalently 1s{CPU} or just s). If the job uses 12,005 CPU-seconds, then the value is written as 12005.Alternatively, if you want a custom metric to record data in a more granular way, you can create a DOUBLE CUMULATIVE metric whose unit is ks{CPU}, and then write the value 12.005 (which is 12005/1000), or use Kis{CPU} and write 11.723 (which is 12005/1024).The supported units are a subset of The Unified Code for Units of Measure (https://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT) bit bit By byte s second min minute h hour d day 1 dimensionlessPrefixes (PREFIX) k kilo (10^3) M mega (10^6) G giga (10^9) T tera (10^12) P peta (10^15) E exa (10^18) Z zetta (10^21) Y yotta (10^24) m milli (10^-3) u micro (10^-6) n nano (10^-9) p pico (10^-12) f femto (10^-15) a atto (10^-18) z zepto (10^-21) y yocto (10^-24) Ki kibi (2^10) Mi mebi (2^20) Gi gibi (2^30) Ti tebi (2^40) Pi pebi (2^50)GrammarThe grammar also includes these connectors: / division or ratio (as an infix operator). For examples, kBy/{email} or MiBy/10ms (although you should almost never have /s in a metric unit; rates should always be computed at query time from the underlying cumulative or delta value). . multiplication or composition (as an infix operator). For examples, GBy.d or k{watt}.h.The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: Annotation is just a comment if it follows a UNIT. If the annotation is used alone, then the unit is equivalent to 1. For examples, {request}/s == 1/s, By{transmitted}/s == By/s. NAME is a sequence of non-blank printable ASCII characters not containing { or }. 1 represents a unitary dimensionless unit (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in 1/s. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as 1/d or {new-users}/d (and a metric value 5 would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as 1000/d or k1/d or k{page_views}/d (and a metric value of 5.3 would mean \"5300 page views per day\"). % represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value 3 means \"3 percent\"). 10^2.% indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value 0.03 means \"3 percent\").",
            "type": "string"
          },
          "valueType": {
            "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "displayName",
          "labels",
          "launchStage",
          "metadata",
          "metricKind",
          "monitoredResourceTypes",
          "name",
          "type",
          "unit",
          "valueType"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v3:getNotificationChannel": {
      "description": "Gets a single notification channel. The channel includes the relevant configuration details with which the channel was created. However, the response may truncate or omit passwords, API keys, or other private key matter and thus the response may not be 100% identical to the information that was supplied in the call to the create method.",
      "inputs": {
        "properties": {
          "notificationChannelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "notificationChannelId"
        ]
      },
      "outputs": {
        "properties": {
          "creationRecord": {
            "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecordResponse",
            "description": "Record of the creation of this channel."
          },
          "description": {
            "description": "An optional human-readable description of this notification channel. This description may provide additional details, beyond the display name, for the channel. This may not exceed 1024 Unicode characters.",
            "type": "string"
          },
          "displayName": {
            "description": "An optional human-readable name for this notification channel. It is recommended that you specify a non-empty and unique name in order to make it easier to identify the channels in your project, though this is not enforced. The display name is limited to 512 Unicode characters.",
            "type": "string"
          },
          "enabled": {
            "description": "Whether notifications are forwarded to the described channel. This makes it possible to disable delivery of notifications to a particular channel without removing the channel from all alerting policies that reference the channel. This is a more convenient approach when the change is temporary and you want to receive notifications from the same set of alerting policies on the channel at some point in the future.",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Configuration fields that define the channel and its behavior. The permissible and required labels are specified in the NotificationChannelDescriptor.labels of the NotificationChannelDescriptor corresponding to the type field.",
            "type": "object"
          },
          "mutationRecords": {
            "description": "Records of the modification of this channel.",
            "items": {
              "$ref": "#/types/google-native:monitoring%2Fv3:MutationRecordResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "The full REST resource name for this channel. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] The [CHANNEL_ID] is automatically assigned by the server on creation.",
            "type": "string"
          },
          "type": {
            "description": "The type of the notification channel. This field matches the value of the NotificationChannelDescriptor.type field.",
            "type": "string"
          },
          "userLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key/value data that does not need to conform to the corresponding NotificationChannelDescriptor's schema, unlike the labels field. This field is intended to be used for organizing and identifying the NotificationChannel objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter.",
            "type": "object"
          },
          "verificationStatus": {
            "description": "Indicates whether this channel has been verified or not. On a ListNotificationChannels or GetNotificationChannel operation, this field is expected to be populated.If the value is UNVERIFIED, then it indicates that the channel is non-functioning (it both requires verification and lacks verification); otherwise, it is assumed that the channel works.If the channel is neither VERIFIED nor UNVERIFIED, it implies that the channel is of a type that does not require verification or that this specific channel has been exempted from verification because it was created prior to verification being required for channels of this type.This field cannot be modified using a standard UpdateNotificationChannel operation. To change the value of this field, you must call VerifyNotificationChannel.",
            "type": "string"
          }
        },
        "required": [
          "creationRecord",
          "description",
          "displayName",
          "enabled",
          "labels",
          "mutationRecords",
          "name",
          "type",
          "userLabels",
          "verificationStatus"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v3:getService": {
      "description": "Get the named Service.",
      "inputs": {
        "properties": {
          "serviceId": {
            "type": "string"
          },
          "v3Id": {
            "type": "string"
          },
          "v3Id1": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "serviceId",
          "v3Id",
          "v3Id1"
        ]
      },
      "outputs": {
        "properties": {
          "appEngine": {
            "$ref": "#/types/google-native:monitoring%2Fv3:AppEngineResponse",
            "description": "Type used for App Engine services."
          },
          "basicService": {
            "$ref": "#/types/google-native:monitoring%2Fv3:BasicServiceResponse",
            "description": "Message that contains the service type and service labels of this service if it is a basic service. Documentation and examples here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli)."
          },
          "cloudEndpoints": {
            "$ref": "#/types/google-native:monitoring%2Fv3:CloudEndpointsResponse",
            "description": "Type used for Cloud Endpoints services."
          },
          "cloudRun": {
            "$ref": "#/types/google-native:monitoring%2Fv3:CloudRunResponse",
            "description": "Type used for Cloud Run services."
          },
          "clusterIstio": {
            "$ref": "#/types/google-native:monitoring%2Fv3:ClusterIstioResponse",
            "description": "Type used for Istio services that live in a Kubernetes cluster."
          },
          "custom": {
            "$ref": "#/types/google-native:monitoring%2Fv3:CustomResponse",
            "description": "Custom service type."
          },
          "displayName": {
            "description": "Name used for UI elements listing this Service.",
            "type": "string"
          },
          "gkeNamespace": {
            "$ref": "#/types/google-native:monitoring%2Fv3:GkeNamespaceResponse",
            "description": "Type used for GKE Namespaces."
          },
          "gkeService": {
            "$ref": "#/types/google-native:monitoring%2Fv3:GkeServiceResponse",
            "description": "Type used for GKE Services (the Kubernetes concept of a service)."
          },
          "gkeWorkload": {
            "$ref": "#/types/google-native:monitoring%2Fv3:GkeWorkloadResponse",
            "description": "Type used for GKE Workloads."
          },
          "istioCanonicalService": {
            "$ref": "#/types/google-native:monitoring%2Fv3:IstioCanonicalServiceResponse",
            "description": "Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)"
          },
          "meshIstio": {
            "$ref": "#/types/google-native:monitoring%2Fv3:MeshIstioResponse",
            "description": "Type used for Istio services scoped to an Istio mesh."
          },
          "name": {
            "description": "Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] ",
            "type": "string"
          },
          "telemetry": {
            "$ref": "#/types/google-native:monitoring%2Fv3:TelemetryResponse",
            "description": "Configuration for how to query telemetry on a Service."
          },
          "userLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels which have been used to annotate the service. Label keys must start with a letter. Label keys and values may contain lowercase letters, numbers, underscores, and dashes. Label keys and values have a maximum length of 63 characters, and must be less than 128 bytes in size. Up to 64 label entries may be stored. For labels which do not have a semantic value, the empty string may be supplied for the label value.",
            "type": "object"
          }
        },
        "required": [
          "appEngine",
          "basicService",
          "cloudEndpoints",
          "cloudRun",
          "clusterIstio",
          "custom",
          "displayName",
          "gkeNamespace",
          "gkeService",
          "gkeWorkload",
          "istioCanonicalService",
          "meshIstio",
          "name",
          "telemetry",
          "userLabels"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v3:getServiceLevelObjective": {
      "description": "Get a ServiceLevelObjective by name.",
      "inputs": {
        "properties": {
          "serviceId": {
            "type": "string"
          },
          "serviceLevelObjectiveId": {
            "type": "string"
          },
          "v3Id": {
            "type": "string"
          },
          "v3Id1": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "serviceId",
          "serviceLevelObjectiveId",
          "v3Id",
          "v3Id1"
        ]
      },
      "outputs": {
        "properties": {
          "calendarPeriod": {
            "description": "A calendar period, semantically \"since the start of the current \". At this time, only DAY, WEEK, FORTNIGHT, and MONTH are supported.",
            "type": "string"
          },
          "displayName": {
            "description": "Name used for UI elements listing this SLO.",
            "type": "string"
          },
          "goal": {
            "description": "The fraction of service that must be good in order for this objective to be met. 0 \u003c goal \u003c= 0.999.",
            "type": "number"
          },
          "name": {
            "description": "Resource name for this ServiceLevelObjective. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME] ",
            "type": "string"
          },
          "rollingPeriod": {
            "description": "A rolling time period, semantically \"in the past \". Must be an integer multiple of 1 day no larger than 30 days.",
            "type": "string"
          },
          "serviceLevelIndicator": {
            "$ref": "#/types/google-native:monitoring%2Fv3:ServiceLevelIndicatorResponse",
            "description": "The definition of good service, used to measure and calculate the quality of the Service's performance with respect to a single aspect of service quality."
          },
          "userLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels which have been used to annotate the service-level objective. Label keys must start with a letter. Label keys and values may contain lowercase letters, numbers, underscores, and dashes. Label keys and values have a maximum length of 63 characters, and must be less than 128 bytes in size. Up to 64 label entries may be stored. For labels which do not have a semantic value, the empty string may be supplied for the label value.",
            "type": "object"
          }
        },
        "required": [
          "calendarPeriod",
          "displayName",
          "goal",
          "name",
          "rollingPeriod",
          "serviceLevelIndicator",
          "userLabels"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v3:getSnooze": {
      "description": "Retrieves a Snooze by name.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "snoozeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "snoozeId"
        ]
      },
      "outputs": {
        "properties": {
          "criteria": {
            "$ref": "#/types/google-native:monitoring%2Fv3:CriteriaResponse",
            "description": "This defines the criteria for applying the Snooze. See Criteria for more information."
          },
          "displayName": {
            "description": "A display name for the Snooze. This can be, at most, 512 unicode characters.",
            "type": "string"
          },
          "interval": {
            "$ref": "#/types/google-native:monitoring%2Fv3:TimeIntervalResponse",
            "description": "The Snooze will be active from interval.start_time through interval.end_time. interval.start_time cannot be in the past. There is a 15 second clock skew to account for the time it takes for a request to reach the API from the UI."
          },
          "name": {
            "description": "The name of the Snooze. The format is: projects/[PROJECT_ID_OR_NUMBER]/snoozes/[SNOOZE_ID] The ID of the Snooze will be generated by the system.",
            "type": "string"
          }
        },
        "required": [
          "criteria",
          "displayName",
          "interval",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:monitoring/v3:getUptimeCheckConfig": {
      "description": "Gets a single Uptime check configuration.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "uptimeCheckConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "uptimeCheckConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "checkerType": {
            "description": "The type of checkers to use to execute the Uptime check.",
            "type": "string"
          },
          "contentMatchers": {
            "description": "The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check.",
            "items": {
              "$ref": "#/types/google-native:monitoring%2Fv3:ContentMatcherResponse"
            },
            "type": "array"
          },
          "displayName": {
            "description": "A human-friendly name for the Uptime check configuration. The display name should be unique within a Cloud Monitoring Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required.",
            "type": "string"
          },
          "httpCheck": {
            "$ref": "#/types/google-native:monitoring%2Fv3:HttpCheckResponse",
            "description": "Contains information needed to make an HTTP or HTTPS check."
          },
          "internalCheckers": {
            "description": "The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig.",
            "items": {
              "$ref": "#/types/google-native:monitoring%2Fv3:InternalCheckerResponse"
            },
            "type": "array"
          },
          "isInternal": {
            "description": "If this is true, then checks are made only from the 'internal_checkers'. If it is false, then checks are made only from the 'selected_regions'. It is an error to provide 'selected_regions' when is_internal is true, or to provide 'internal_checkers' when is_internal is false.",
            "type": "boolean"
          },
          "monitoredResource": {
            "$ref": "#/types/google-native:monitoring%2Fv3:MonitoredResourceResponse",
            "description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are valid for this field: uptime_url, gce_instance, gae_app, aws_ec2_instance, aws_elb_load_balancer k8s_service servicedirectory_service cloud_run_revision"
          },
          "name": {
            "description": "Identifier. A unique resource name for this Uptime check configuration. The format is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] [PROJECT_ID_OR_NUMBER] is the Workspace host project associated with the Uptime check.This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.",
            "type": "string"
          },
          "period": {
            "description": "How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s.",
            "type": "string"
          },
          "resourceGroup": {
            "$ref": "#/types/google-native:monitoring%2Fv3:ResourceGroupResponse",
            "description": "The group resource associated with the configuration."
          },
          "selectedRegions": {
            "description": "The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "syntheticMonitor": {
            "$ref": "#/types/google-native:monitoring%2Fv3:SyntheticMonitorTargetResponse",
            "description": "Specifies a Synthetic Monitor to invoke."
          },
          "tcpCheck": {
            "$ref": "#/types/google-native:monitoring%2Fv3:TcpCheckResponse",
            "description": "Contains information needed to make a TCP check."
          },
          "timeout": {
            "description": "The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.",
            "type": "string"
          },
          "userLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-supplied key/value data to be used for organizing and identifying the UptimeCheckConfig objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter.",
            "type": "object"
          }
        },
        "required": [
          "checkerType",
          "contentMatchers",
          "displayName",
          "httpCheck",
          "internalCheckers",
          "isInternal",
          "monitoredResource",
          "name",
          "period",
          "resourceGroup",
          "selectedRegions",
          "syntheticMonitor",
          "tcpCheck",
          "timeout",
          "userLabels"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getHub": {
      "description": "Gets details about a Network Connectivity Center hub.",
      "inputs": {
        "properties": {
          "hubId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hubId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the hub was created.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of the hub.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional labels in key-value pair format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements).",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of the hub. Hub names must be unique. They use the following form: `projects/{project_number}/locations/global/hubs/{hub_id}`",
            "type": "string"
          },
          "routeTables": {
            "description": "The route tables that belong to this hub. They use the following form: `projects/{project_number}/locations/global/hubs/{hub_id}/routeTables/{route_table_id}` This field is read-only. Network Connectivity Center automatically populates it based on the route tables nested under the hub.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "routingVpcs": {
            "description": "The VPC networks associated with this hub's spokes. This field is read-only. Network Connectivity Center automatically populates it based on the set of spokes attached to the hub.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:RoutingVPCResponse"
            },
            "type": "array"
          },
          "spokeSummary": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:SpokeSummaryResponse",
            "description": "A summary of the spokes associated with a hub. The summary includes a count of spokes according to type and according to state. If any spokes are inactive, the summary also lists the reasons they are inactive, including a count for each reason."
          },
          "state": {
            "description": "The current lifecycle state of this hub.",
            "type": "string"
          },
          "uniqueId": {
            "description": "The Google-generated UUID for the hub. This value is unique across all hub resources. If a hub is deleted and another with the same name is created, the new hub is assigned a different unique_id.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time the hub was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "labels",
          "name",
          "routeTables",
          "routingVpcs",
          "spokeSummary",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getHubGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "hubId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId",
          "hubId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getHubIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "hubId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hubId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getInternalRange": {
      "description": "Gets details of a single internal range.",
      "inputs": {
        "properties": {
          "internalRangeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "internalRangeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the internal range was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of this resource.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "The IP range that this internal range defines.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of an internal range. Format: projects/{project}/locations/{location}/internalRanges/{internal_range} See: https://google.aip.dev/122#fields-representing-resource-names",
            "type": "string"
          },
          "network": {
            "description": "The URL or resource ID of the network in which to reserve the internal range. The network cannot be deleted if there are any reserved internal ranges referring to it. Legacy networks are not supported. This can only be specified for a global internal address. Example: - URL: /compute/v1/projects/{project}/global/networks/{resourceId} - ID: network123",
            "type": "string"
          },
          "overlaps": {
            "description": "Optional. Types of resources that are allowed to overlap with the current internal range.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "peering": {
            "description": "The type of peering set for this internal range.",
            "type": "string"
          },
          "prefixLength": {
            "description": "An alternate to ip_cidr_range. Can be set when trying to create a reservation that automatically finds a free range of the given size. If both ip_cidr_range and prefix_length are set, there is an error if the range sizes do not match. Can also be used during updates to change the range size.",
            "type": "integer"
          },
          "targetCidrRange": {
            "description": "Optional. Can be set to narrow down or pick a different address space while searching for a free range. If not set, defaults to the \"10.0.0.0/8\" address space. This can be used to search in other rfc-1918 address spaces like \"172.16.0.0/12\" and \"192.168.0.0/16\" or non-rfc-1918 address spaces used in the VPC.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Time when the internal range was updated.",
            "type": "string"
          },
          "usage": {
            "description": "The type of usage set for this InternalRange.",
            "type": "string"
          },
          "users": {
            "description": "The list of resources that refer to this internal range. Resources that use the internal range for their range allocation are referred to as users of the range. Other resources mark themselves as users while doing so by creating a reference to this internal range. Having a user, based on this reference, prevents deletion of the internal range referred to. Can be empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "description",
          "ipCidrRange",
          "labels",
          "name",
          "network",
          "overlaps",
          "peering",
          "prefixLength",
          "targetCidrRange",
          "updateTime",
          "usage",
          "users"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getPolicyBasedRoute": {
      "description": "Gets details of a single policy-based route.",
      "inputs": {
        "properties": {
          "policyBasedRouteId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "policyBasedRouteId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the policy-based route was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. An optional description of this resource. Provide this field when you create the resource.",
            "type": "string"
          },
          "filter": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:FilterResponse",
            "description": "The filter to match L4 traffic."
          },
          "interconnectAttachment": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:InterconnectAttachmentResponse",
            "description": "Optional. The interconnect attachments that this policy-based route applies to."
          },
          "kind": {
            "description": "Type of this resource. Always networkconnectivity#policyBasedRoute for policy-based Route resources.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. A unique name of the resource in the form of `projects/{project_number}/locations/global/PolicyBasedRoutes/{policy_based_route_id}`",
            "type": "string"
          },
          "network": {
            "description": "Fully-qualified URL of the network that this route applies to, for example: projects/my-project/global/networks/my-network.",
            "type": "string"
          },
          "nextHopIlbIp": {
            "description": "Optional. The IP address of a global-access-enabled L4 ILB that is the next hop for matching packets. For this version, only nextHopIlbIp is supported.",
            "type": "string"
          },
          "nextHopOtherRoutes": {
            "description": "Optional. Other routes that will be referenced to determine the next hop of the packet.",
            "type": "string"
          },
          "priority": {
            "description": "Optional. The priority of this policy-based route. Priority is used to break ties in cases where there are more than one matching policy-based routes found. In cases where multiple policy-based routes are matched, the one with the lowest-numbered priority value wins. The default value is 1000. The priority value must be from 1 to 65535, inclusive.",
            "type": "integer"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the policy-based route was updated.",
            "type": "string"
          },
          "virtualMachine": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:VirtualMachineResponse",
            "description": "Optional. VM instances to which this policy-based route applies to."
          },
          "warnings": {
            "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:WarningsResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "description",
          "filter",
          "interconnectAttachment",
          "kind",
          "labels",
          "name",
          "network",
          "nextHopIlbIp",
          "nextHopOtherRoutes",
          "priority",
          "selfLink",
          "updateTime",
          "virtualMachine",
          "warnings"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getPolicyBasedRouteIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "policyBasedRouteId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "policyBasedRouteId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getServiceClassIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceClassId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceClassId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getServiceConnectionMap": {
      "description": "Gets details of a single ServiceConnectionMap.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceConnectionMapId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceConnectionMapId"
        ]
      },
      "outputs": {
        "properties": {
          "consumerPscConfigs": {
            "description": "The PSC configurations on consumer side.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:ConsumerPscConfigResponse"
            },
            "type": "array"
          },
          "consumerPscConnections": {
            "description": "PSC connection details on consumer side.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:ConsumerPscConnectionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "Time when the ServiceConnectionMap was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of this resource.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "infrastructure": {
            "description": "The infrastructure used for connections between consumers/producers.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of a ServiceConnectionMap. Format: projects/{project}/locations/{location}/serviceConnectionMaps/{service_connection_map} See: https://google.aip.dev/122#fields-representing-resource-names",
            "type": "string"
          },
          "producerPscConfigs": {
            "description": "The PSC configurations on producer side.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:ProducerPscConfigResponse"
            },
            "type": "array"
          },
          "serviceClass": {
            "description": "The service class identifier this ServiceConnectionMap is for. The user of ServiceConnectionMap create API needs to have networkconnecitivty.serviceclasses.use iam permission for the service class.",
            "type": "string"
          },
          "serviceClassUri": {
            "description": "The service class uri this ServiceConnectionMap is for.",
            "type": "string"
          },
          "token": {
            "description": "The token provided by the consumer. This token authenticates that the consumer can create a connecton within the specified project and network.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the ServiceConnectionMap was updated.",
            "type": "string"
          }
        },
        "required": [
          "consumerPscConfigs",
          "consumerPscConnections",
          "createTime",
          "description",
          "etag",
          "infrastructure",
          "labels",
          "name",
          "producerPscConfigs",
          "serviceClass",
          "serviceClassUri",
          "token",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getServiceConnectionMapIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceConnectionMapId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceConnectionMapId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getServiceConnectionPolicy": {
      "description": "Gets details of a single ServiceConnectionPolicy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceConnectionPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceConnectionPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the ServiceConnectionMap was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of this resource.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "infrastructure": {
            "description": "The type of underlying resources used to create the connection.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of a ServiceConnectionPolicy. Format: projects/{project}/locations/{location}/serviceConnectionPolicies/{service_connection_policy} See: https://google.aip.dev/122#fields-representing-resource-names",
            "type": "string"
          },
          "network": {
            "description": "The resource path of the consumer network. Example: - projects/{projectNumOrId}/global/networks/{resourceId}.",
            "type": "string"
          },
          "pscConfig": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:PscConfigResponse",
            "description": "Configuration used for Private Service Connect connections. Used when Infrastructure is PSC."
          },
          "pscConnections": {
            "description": "[Output only] Information about each Private Service Connect connection.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:PscConnectionResponse"
            },
            "type": "array"
          },
          "serviceClass": {
            "description": "The service class identifier for which this ServiceConnectionPolicy is for. The service class identifier is a unique, symbolic representation of a ServiceClass. It is provided by the Service Producer. Google services have a prefix of gcp. For example, gcp-cloud-sql. 3rd party services do not. For example, test-service-a3dfcx.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the ServiceConnectionMap was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "infrastructure",
          "labels",
          "name",
          "network",
          "pscConfig",
          "pscConnections",
          "serviceClass",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getServiceConnectionPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceConnectionPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceConnectionPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getServiceConnectionToken": {
      "description": "Gets details of a single ServiceConnectionToken.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceConnectionTokenId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceConnectionTokenId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the ServiceConnectionToken was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of this resource.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. The etag is computed by the server, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time to which this token is valid.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of a ServiceConnectionToken. Format: projects/{project}/locations/{location}/ServiceConnectionTokens/{service_connection_token} See: https://google.aip.dev/122#fields-representing-resource-names",
            "type": "string"
          },
          "network": {
            "description": "The resource path of the network associated with this token. Example: projects/{projectNumOrId}/global/networks/{resourceId}.",
            "type": "string"
          },
          "token": {
            "description": "The token generated by Automation.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the ServiceConnectionToken was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "expireTime",
          "labels",
          "name",
          "network",
          "token",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getSpoke": {
      "description": "Gets details about a Network Connectivity Center spoke.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "spokeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "spokeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the spoke was created.",
            "type": "string"
          },
          "description": {
            "description": "An optional description of the spoke.",
            "type": "string"
          },
          "group": {
            "description": "Optional. The name of the group that this spoke is associated with.",
            "type": "string"
          },
          "hub": {
            "description": "Immutable. The name of the hub that this spoke is attached to.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional labels in key-value pair format. For more information about labels, see [Requirements for labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements).",
            "type": "object"
          },
          "linkedInterconnectAttachments": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedInterconnectAttachmentsResponse",
            "description": "VLAN attachments that are associated with the spoke."
          },
          "linkedRouterApplianceInstances": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedRouterApplianceInstancesResponse",
            "description": "Router appliance instances that are associated with the spoke."
          },
          "linkedVpcNetwork": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedVpcNetworkResponse",
            "description": "Optional. VPC network that is associated with the spoke."
          },
          "linkedVpnTunnels": {
            "$ref": "#/types/google-native:networkconnectivity%2Fv1:LinkedVpnTunnelsResponse",
            "description": "VPN tunnels that are associated with the spoke."
          },
          "name": {
            "description": "Immutable. The name of the spoke. Spoke names must be unique. They use the following form: `projects/{project_number}/locations/{region}/spokes/{spoke_id}`",
            "type": "string"
          },
          "reasons": {
            "description": "The reasons for current state of the spoke. Only present when the spoke is in the `INACTIVE` state.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:StateReasonResponse"
            },
            "type": "array"
          },
          "spokeType": {
            "description": "The type of resource associated with the spoke.",
            "type": "string"
          },
          "state": {
            "description": "The current lifecycle state of this spoke.",
            "type": "string"
          },
          "uniqueId": {
            "description": "The Google-generated UUID for the spoke. This value is unique across all spoke resources. If a spoke is deleted and another with the same name is created, the new spoke is assigned a different `unique_id`.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time the spoke was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "group",
          "hub",
          "labels",
          "linkedInterconnectAttachments",
          "linkedRouterApplianceInstances",
          "linkedVpcNetwork",
          "linkedVpnTunnels",
          "name",
          "reasons",
          "spokeType",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1:getSpokeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "spokeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "spokeId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1alpha1:getHub": {
      "description": "Gets details about a Network Connectivity Center hub.",
      "inputs": {
        "properties": {
          "hubId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hubId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the Hub was created.",
            "type": "string"
          },
          "description": {
            "description": "Short description of the hub resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of a Hub resource.",
            "type": "string"
          },
          "spokes": {
            "deprecationMessage": "Output only. A list of the URIs of all attached spokes. This field is deprecated and will not be included in future API versions. Call ListSpokes on each region instead.",
            "description": "A list of the URIs of all attached spokes. This field is deprecated and will not be included in future API versions. Call ListSpokes on each region instead.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The current lifecycle state of this Hub.",
            "type": "string"
          },
          "uniqueId": {
            "description": "Google-generated UUID for this resource. This is unique across all Hub resources. If a Hub resource is deleted and another with the same name is created, it gets a different unique_id.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the Hub was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "labels",
          "name",
          "spokes",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1alpha1:getHubIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "hubId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hubId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1alpha1:getInternalRange": {
      "description": "Gets details of a single internal range.",
      "inputs": {
        "properties": {
          "internalRangeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "internalRangeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the internal range was created.",
            "type": "string"
          },
          "description": {
            "description": "A description of this resource.",
            "type": "string"
          },
          "ipCidrRange": {
            "description": "IP range that this internal range defines.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of an internal range. Format: projects/{project}/locations/{location}/internalRanges/{internal_range} See: https://google.aip.dev/122#fields-representing-resource-names",
            "type": "string"
          },
          "network": {
            "description": "The URL or resource ID of the network in which to reserve the internal range. The network cannot be deleted if there are any reserved internal ranges referring to it. Legacy networks are not supported. This can only be specified for a global internal address. Example: - URL: /compute/v1/projects/{project}/global/networks/{resourceId} - ID: network123",
            "type": "string"
          },
          "overlaps": {
            "description": "Optional. Types of resources that are allowed to overlap with the current internal range.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "peering": {
            "description": "The type of peering set for this internal range.",
            "type": "string"
          },
          "prefixLength": {
            "description": "An alternative to ip_cidr_range. Can be set when trying to create a reservation that automatically finds a free range of the given size. If both ip_cidr_range and prefix_length are set, there is an error if the range sizes do not match. Can also be used during updates to change the range size.",
            "type": "integer"
          },
          "targetCidrRange": {
            "description": "Optional. Can be set to narrow down or pick a different address space while searching for a free range. If not set, defaults to the \"10.0.0.0/8\" address space. This can be used to search in other rfc-1918 address spaces like \"172.16.0.0/12\" and \"192.168.0.0/16\" or non-rfc-1918 address spaces used in the VPC.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Time when the internal range was updated.",
            "type": "string"
          },
          "usage": {
            "description": "The type of usage set for this internal range.",
            "type": "string"
          },
          "users": {
            "description": "The list of resources that refer to this internal range. Resources that use the internal range for their range allocation are referred to as users of the range. Other resources mark themselves as users while doing so by creating a reference to this internal range. Having a user, based on this reference, prevents deletion of the internal range that is referred to. Can be empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "description",
          "ipCidrRange",
          "labels",
          "name",
          "network",
          "overlaps",
          "peering",
          "prefixLength",
          "targetCidrRange",
          "updateTime",
          "usage",
          "users"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1alpha1:getInternalRangeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "internalRangeId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "internalRangeId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1alpha1:getSpoke": {
      "description": "Gets details about a Network Connectivity Center spoke.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "spokeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "spokeId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time when the Spoke was created.",
            "type": "string"
          },
          "description": {
            "description": "Short description of the spoke resource",
            "type": "string"
          },
          "hub": {
            "description": "The resource URL of the hub resource that the spoke is attached to",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-defined labels.",
            "type": "object"
          },
          "linkedInterconnectAttachments": {
            "description": "The URIs of linked interconnect attachment resources",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "linkedRouterApplianceInstances": {
            "description": "The URIs of linked Router appliance resources",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:RouterApplianceInstanceResponse"
            },
            "type": "array"
          },
          "linkedVpnTunnels": {
            "description": "The URIs of linked VPN tunnel resources",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. The name of a Spoke resource.",
            "type": "string"
          },
          "state": {
            "description": "The current lifecycle state of this Hub.",
            "type": "string"
          },
          "uniqueId": {
            "description": "Google-generated UUID for this resource. This is unique across all Spoke resources. If a Spoke resource is deleted and another with the same name is created, it gets a different unique_id.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time when the Spoke was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "hub",
          "labels",
          "linkedInterconnectAttachments",
          "linkedRouterApplianceInstances",
          "linkedVpnTunnels",
          "name",
          "state",
          "uniqueId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkconnectivity/v1alpha1:getSpokeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "spokeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "spokeId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkconnectivity%2Fv1alpha1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkmanagement/v1:getConnectivityTest": {
      "description": "Gets the details of a specific Connectivity Test.",
      "inputs": {
        "properties": {
          "connectivityTestId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectivityTestId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the test was created.",
            "type": "string"
          },
          "description": {
            "description": "The user-supplied description of the Connectivity Test. Maximum of 512 characters.",
            "type": "string"
          },
          "destination": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:EndpointResponse",
            "description": "Destination specification of the Connectivity Test. You can use a combination of destination IP address, Compute Engine VM instance, or VPC network to uniquely identify the destination location. Even if the destination IP address is not unique, the source IP location is unique. Usually, the analysis can infer the destination endpoint from route information. If the destination you specify is a VM instance and the instance has multiple network interfaces, then you must also specify either a destination IP address or VPC network to identify the destination interface. A reachability analysis proceeds even if the destination location is ambiguous. However, the result can include endpoints that you don't intend to test."
          },
          "displayName": {
            "description": "The display name of a Connectivity Test.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user-provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique name of the resource using the form: `projects/{project_id}/locations/global/connectivityTests/{test_id}`",
            "type": "string"
          },
          "probingDetails": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:ProbingDetailsResponse",
            "description": "The probing details of this test from the latest run, present for applicable tests only. The details are updated when creating a new test, updating an existing test, or triggering a one-time rerun of an existing test."
          },
          "protocol": {
            "description": "IP Protocol of the test. When not provided, \"TCP\" is assumed.",
            "type": "string"
          },
          "reachabilityDetails": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:ReachabilityDetailsResponse",
            "description": "The reachability details of this test from the latest run. The details are updated when creating a new test, updating an existing test, or triggering a one-time rerun of an existing test."
          },
          "relatedProjects": {
            "description": "Other projects that may be relevant for reachability analysis. This is applicable to scenarios where a test can cross project boundaries.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "source": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1:EndpointResponse",
            "description": "Source specification of the Connectivity Test. You can use a combination of source IP address, virtual machine (VM) instance, or Compute Engine network to uniquely identify the source location. Examples: If the source IP address is an internal IP address within a Google Cloud Virtual Private Cloud (VPC) network, then you must also specify the VPC network. Otherwise, specify the VM instance, which already contains its internal IP address and VPC network information. If the source of the test is within an on-premises network, then you must provide the destination VPC network. If the source endpoint is a Compute Engine VM instance with multiple network interfaces, the instance itself is not sufficient to identify the endpoint. So, you must also specify the source IP address or VPC network. A reachability analysis proceeds even if the source location is ambiguous. However, the test result may include endpoints that you don't intend to test."
          },
          "updateTime": {
            "description": "The time the test's configuration was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "destination",
          "displayName",
          "labels",
          "name",
          "probingDetails",
          "protocol",
          "reachabilityDetails",
          "relatedProjects",
          "source",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkmanagement/v1:getConnectivityTestIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectivityTestId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectivityTestId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkmanagement%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkmanagement%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkmanagement/v1beta1:getConnectivityTest": {
      "description": "Gets the details of a specific Connectivity Test.",
      "inputs": {
        "properties": {
          "connectivityTestId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectivityTestId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the test was created.",
            "type": "string"
          },
          "description": {
            "description": "The user-supplied description of the Connectivity Test. Maximum of 512 characters.",
            "type": "string"
          },
          "destination": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EndpointResponse",
            "description": "Destination specification of the Connectivity Test. You can use a combination of destination IP address, Compute Engine VM instance, or VPC network to uniquely identify the destination location. Even if the destination IP address is not unique, the source IP location is unique. Usually, the analysis can infer the destination endpoint from route information. If the destination you specify is a VM instance and the instance has multiple network interfaces, then you must also specify either a destination IP address or VPC network to identify the destination interface. A reachability analysis proceeds even if the destination location is ambiguous. However, the result can include endpoints that you don't intend to test."
          },
          "displayName": {
            "description": "The display name of a Connectivity Test.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user-provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Unique name of the resource using the form: `projects/{project_id}/locations/global/connectivityTests/{test}`",
            "type": "string"
          },
          "probingDetails": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:ProbingDetailsResponse",
            "description": "The probing details of this test from the latest run, present for applicable tests only. The details are updated when creating a new test, updating an existing test, or triggering a one-time rerun of an existing test."
          },
          "protocol": {
            "description": "IP Protocol of the test. When not provided, \"TCP\" is assumed.",
            "type": "string"
          },
          "reachabilityDetails": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:ReachabilityDetailsResponse",
            "description": "The reachability details of this test from the latest run. The details are updated when creating a new test, updating an existing test, or triggering a one-time rerun of an existing test."
          },
          "relatedProjects": {
            "description": "Other projects that may be relevant for reachability analysis. This is applicable to scenarios where a test can cross project boundaries.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "source": {
            "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:EndpointResponse",
            "description": "Source specification of the Connectivity Test. You can use a combination of source IP address, virtual machine (VM) instance, or Compute Engine network to uniquely identify the source location. Examples: If the source IP address is an internal IP address within a Google Cloud Virtual Private Cloud (VPC) network, then you must also specify the VPC network. Otherwise, specify the VM instance, which already contains its internal IP address and VPC network information. If the source of the test is within an on-premises network, then you must provide the destination VPC network. If the source endpoint is a Compute Engine VM instance with multiple network interfaces, the instance itself is not sufficient to identify the endpoint. So, you must also specify the source IP address or VPC network. A reachability analysis proceeds even if the source location is ambiguous. However, the test result may include endpoints that you don't intend to test."
          },
          "updateTime": {
            "description": "The time the test's configuration was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "destination",
          "displayName",
          "labels",
          "name",
          "probingDetails",
          "protocol",
          "reachabilityDetails",
          "relatedProjects",
          "source",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkmanagement/v1beta1:getConnectivityTestIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "connectivityTestId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectivityTestId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkmanagement%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getAddressGroup": {
      "description": "Gets details of a single address group.",
      "inputs": {
        "properties": {
          "addressGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "addressGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "capacity": {
            "description": "Capacity of the Address Group",
            "type": "integer"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "items": {
            "description": "Optional. List of items.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the AddressGroup resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "type": {
            "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\".",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "capacity",
          "createTime",
          "description",
          "items",
          "labels",
          "name",
          "selfLink",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getAddressGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "addressGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "addressGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getAuthorizationPolicy": {
      "description": "Gets details of a single AuthorizationPolicy.",
      "inputs": {
        "properties": {
          "authorizationPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "authorizationPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "action": {
            "description": "The action to take when a rule match is found. Possible values are \"ALLOW\" or \"DENY\".",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the AuthorizationPolicy resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the AuthorizationPolicy resource. It matches pattern `projects/{project}/locations/{location}/authorizationPolicies/`.",
            "type": "string"
          },
          "rules": {
            "description": "Optional. List of rules to match. Note that at least one of the rules must match in order for the action specified in the 'action' field to be taken. A rule is a match if there is a matching source and destination. If left blank, the action specified in the `action` field will be applied on every request.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:RuleResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "action",
          "createTime",
          "description",
          "labels",
          "name",
          "rules",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getAuthorizationPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "authorizationPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "authorizationPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getClientTlsPolicy": {
      "description": "Gets details of a single ClientTlsPolicy.",
      "inputs": {
        "properties": {
          "clientTlsPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clientTlsPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "clientCertificate": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1CertificateProviderResponse",
            "description": "Optional. Defines a mechanism to provision client identity (public and private keys) for peer to peer authentication. The presence of this dictates mTLS."
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the ClientTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/clientTlsPolicies/{client_tls_policy}`",
            "type": "string"
          },
          "serverValidationCa": {
            "description": "Optional. Defines the mechanism to obtain the Certificate Authority certificate to validate the server certificate. If empty, client does not validate the server certificate.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:ValidationCAResponse"
            },
            "type": "array"
          },
          "sni": {
            "description": "Optional. Server Name Indication string to present to the server during TLS handshake. E.g: \"secure.example.com\".",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "clientCertificate",
          "createTime",
          "description",
          "labels",
          "name",
          "serverValidationCa",
          "sni",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getClientTlsPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clientTlsPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clientTlsPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getGatewaySecurityPolicy": {
      "description": "Gets details of a single GatewaySecurityPolicy.",
      "inputs": {
        "properties": {
          "gatewaySecurityPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewaySecurityPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy} gateway_security_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$).",
            "type": "string"
          },
          "tlsInspectionPolicy": {
            "description": "Optional. Name of a TLS Inspection Policy resource that defines how TLS inspection will be performed for any rule(s) which enables it.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "tlsInspectionPolicy",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getOrganizationAddressGroup": {
      "description": "Gets details of a single address group.",
      "inputs": {
        "properties": {
          "addressGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "addressGroupId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "capacity": {
            "description": "Capacity of the Address Group",
            "type": "integer"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "items": {
            "description": "Optional. List of items.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the AddressGroup resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "type": {
            "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\".",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "capacity",
          "createTime",
          "description",
          "items",
          "labels",
          "name",
          "selfLink",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getRule": {
      "description": "Gets details of a single GatewaySecurityPolicyRule.",
      "inputs": {
        "properties": {
          "gatewaySecurityPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "ruleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewaySecurityPolicyId",
          "location",
          "ruleId"
        ]
      },
      "outputs": {
        "properties": {
          "applicationMatcher": {
            "description": "Optional. CEL expression for matching on L7/application level criteria.",
            "type": "string"
          },
          "basicProfile": {
            "description": "Profile which tells what the primitive action should be.",
            "type": "string"
          },
          "createTime": {
            "description": "Time when the rule was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "enabled": {
            "description": "Whether the rule is enforced.",
            "type": "boolean"
          },
          "name": {
            "description": "Immutable. Name of the resource. ame is the full resource name so projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy}/rules/{rule} rule should match the pattern: (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$).",
            "type": "string"
          },
          "priority": {
            "description": "Priority of the rule. Lower number corresponds to higher precedence.",
            "type": "integer"
          },
          "sessionMatcher": {
            "description": "CEL expression for matching on session criteria.",
            "type": "string"
          },
          "tlsInspectionEnabled": {
            "description": "Optional. Flag to enable TLS inspection of traffic matching on , can only be true if the parent GatewaySecurityPolicy references a TLSInspectionConfig.",
            "type": "boolean"
          },
          "updateTime": {
            "description": "Time when the rule was updated.",
            "type": "string"
          }
        },
        "required": [
          "applicationMatcher",
          "basicProfile",
          "createTime",
          "description",
          "enabled",
          "name",
          "priority",
          "sessionMatcher",
          "tlsInspectionEnabled",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getServerTlsPolicy": {
      "description": "Gets details of a single ServerTlsPolicy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serverTlsPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serverTlsPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "allowOpen": {
            "description": "This field applies only for Traffic Director policies. It is must be set to false for external HTTPS load balancer policies. Determines if server allows plaintext connections. If set to true, server allows plain text connections. By default, it is set to false. This setting is not exclusive of other encryption modes. For example, if `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections. See documentation of other encryption modes to confirm compatibility. Consider using it if you wish to upgrade in place your deployment to TLS while having mixed TLS and non-TLS traffic reaching port :80.",
            "type": "boolean"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Free-text description of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of label tags associated with the resource.",
            "type": "object"
          },
          "mtlsPolicy": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:MTLSPolicyResponse",
            "description": "This field is required if the policy is used with external HTTPS load balancers. This field can be empty for Traffic Director. Defines a mechanism to provision peer validation certificates for peer to peer authentication (Mutual TLS - mTLS). If not specified, client certificate will not be requested. The connection is treated as TLS and not mTLS. If `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections."
          },
          "name": {
            "description": "Name of the ServerTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/serverTlsPolicies/{server_tls_policy}`",
            "type": "string"
          },
          "serverCertificate": {
            "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleCloudNetworksecurityV1CertificateProviderResponse",
            "description": "Optional if policy is to be used with Traffic Director. For external HTTPS load balancer must be empty. Defines a mechanism to provision server identity (public and private keys). Cannot be combined with `allow_open` as a permissive mode that allows both plain text and TLS is not supported."
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "allowOpen",
          "createTime",
          "description",
          "labels",
          "mtlsPolicy",
          "name",
          "serverCertificate",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getServerTlsPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serverTlsPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serverTlsPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getTlsInspectionPolicy": {
      "description": "Gets details of a single TlsInspectionPolicy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tlsInspectionPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tlsInspectionPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "caPool": {
            "description": "A CA pool resource used to issue interception certificates. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\".",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "customTlsFeatures": {
            "description": "Optional. List of custom TLS cipher suites selected. This field is valid only if the selected tls_feature_profile is CUSTOM. The compute.SslPoliciesService.ListAvailableFeatures method returns the set of features that can be specified in this list. Note that Secure Web Proxy does not yet honor this field.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "excludePublicCaSet": {
            "description": "Optional. If FALSE (the default), use our default set of public CAs in addition to any CAs specified in trust_config. These public CAs are currently based on the Mozilla Root Program and are subject to change over time. If TRUE, do not accept our default set of public CAs. Only CAs specified in trust_config will be accepted. This defaults to FALSE (use public CAs in addition to trust_config) for backwards compatibility, but trusting public root CAs is *not recommended* unless the traffic in question is outbound to public web servers. When possible, prefer setting this to \"false\" and explicitly specifying trusted CAs and certificates in a TrustConfig. Note that Secure Web Proxy does not yet honor this field.",
            "type": "boolean"
          },
          "minTlsVersion": {
            "description": "Optional. Minimum TLS version that the firewall should use when negotiating connections with both clients and servers. If this is not set, then the default value is to allow the broadest set of clients and servers (TLS 1.0 or higher). Setting this to more restrictive values may improve security, but may also prevent the firewall from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/tlsInspectionPolicies/{tls_inspection_policy} tls_inspection_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$).",
            "type": "string"
          },
          "tlsFeatureProfile": {
            "description": "Optional. The selected Profile. If this is not set, then the default value is to allow the broadest set of clients and servers (\"PROFILE_COMPATIBLE\"). Setting this to more restrictive values may improve security, but may also prevent the TLS inspection proxy from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field.",
            "type": "string"
          },
          "trustConfig": {
            "description": "Optional. A TrustConfig resource used when making a connection to the TLS server. This is a relative resource path following the form \"projects/{project}/locations/{location}/trustConfigs/{trust_config}\". This is necessary to intercept TLS connections to servers with certificates signed by a private CA or self-signed certificates. Note that Secure Web Proxy does not yet honor this field.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "caPool",
          "createTime",
          "customTlsFeatures",
          "description",
          "excludePublicCaSet",
          "minTlsVersion",
          "name",
          "tlsFeatureProfile",
          "trustConfig",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1:getUrlList": {
      "description": "Gets details of a single UrlList.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "urlListId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "urlListId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the security policy was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource provided by the user. Name is of the form projects/{project}/locations/{location}/urlLists/{url_list} url_list should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$).",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the security policy was updated.",
            "type": "string"
          },
          "values": {
            "description": "FQDNs and URLs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "updateTime",
          "values"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getAddressGroup": {
      "description": "Gets details of a single address group.",
      "inputs": {
        "properties": {
          "addressGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "addressGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "capacity": {
            "description": "Capacity of the Address Group",
            "type": "integer"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "items": {
            "description": "Optional. List of items.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the AddressGroup resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "type": {
            "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\".",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "capacity",
          "createTime",
          "description",
          "items",
          "labels",
          "name",
          "selfLink",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getAddressGroupIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "addressGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "addressGroupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getAuthorizationPolicy": {
      "description": "Gets details of a single AuthorizationPolicy.",
      "inputs": {
        "properties": {
          "authorizationPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "authorizationPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "action": {
            "description": "The action to take when a rule match is found. Possible values are \"ALLOW\" or \"DENY\".",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the AuthorizationPolicy resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the AuthorizationPolicy resource. It matches pattern `projects/{project}/locations/{location}/authorizationPolicies/`.",
            "type": "string"
          },
          "rules": {
            "description": "Optional. List of rules to match. Note that at least one of the rules must match in order for the action specified in the 'action' field to be taken. A rule is a match if there is a matching source and destination. If left blank, the action specified in the `action` field will be applied on every request.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:RuleResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "action",
          "createTime",
          "description",
          "labels",
          "name",
          "rules",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getAuthorizationPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "authorizationPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "authorizationPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getClientTlsPolicy": {
      "description": "Gets details of a single ClientTlsPolicy.",
      "inputs": {
        "properties": {
          "clientTlsPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clientTlsPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "clientCertificate": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1CertificateProviderResponse",
            "description": "Optional. Defines a mechanism to provision client identity (public and private keys) for peer to peer authentication. The presence of this dictates mTLS."
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the ClientTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/clientTlsPolicies/{client_tls_policy}`",
            "type": "string"
          },
          "serverValidationCa": {
            "description": "Optional. Defines the mechanism to obtain the Certificate Authority certificate to validate the server certificate. If empty, client does not validate the server certificate.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ValidationCAResponse"
            },
            "type": "array"
          },
          "sni": {
            "description": "Optional. Server Name Indication string to present to the server during TLS handshake. E.g: \"secure.example.com\".",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "clientCertificate",
          "createTime",
          "description",
          "labels",
          "name",
          "serverValidationCa",
          "sni",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getClientTlsPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clientTlsPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clientTlsPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getFirewallEndpoint": {
      "description": "Gets details of a single Endpoint.",
      "inputs": {
        "properties": {
          "firewallEndpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallEndpointId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "associatedNetworks": {
            "description": "List of networks that are associated with this endpoint in the local zone. This is a projection of the FirewallEndpointAssociations pointing at this endpoint. A network will only appear in this list after traffic routing is fully configured. Format: projects/{project}/global/networks/{name}.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "billingProjectId": {
            "description": "Optional. Project to bill on endpoint uptime usage.",
            "type": "string"
          },
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the firewall endpoint. Max length 2048 characters.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels as key value pairs",
            "type": "object"
          },
          "name": {
            "description": "name of resource",
            "type": "string"
          },
          "reconciling": {
            "description": "Whether reconciling is in progress, recommended per https://google.aip.dev/128.",
            "type": "boolean"
          },
          "state": {
            "description": "Current state of the endpoint.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "associatedNetworks",
          "billingProjectId",
          "createTime",
          "description",
          "labels",
          "name",
          "reconciling",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getFirewallEndpointAssociation": {
      "description": "Gets details of a single FirewallEndpointAssociation.",
      "inputs": {
        "properties": {
          "firewallEndpointAssociationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallEndpointAssociationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Create time stamp",
            "type": "string"
          },
          "firewallEndpoint": {
            "description": "The URL of the FirewallEndpoint that is being associated.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels as key value pairs",
            "type": "object"
          },
          "name": {
            "description": "name of resource",
            "type": "string"
          },
          "network": {
            "description": "The URL of the network that is being associated.",
            "type": "string"
          },
          "reconciling": {
            "description": "Whether reconciling is in progress, recommended per https://google.aip.dev/128.",
            "type": "boolean"
          },
          "state": {
            "description": "Current state of the association.",
            "type": "string"
          },
          "tlsInspectionPolicy": {
            "description": "Optional. The URL of the TlsInspectionPolicy that is being associated.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "firewallEndpoint",
          "labels",
          "name",
          "network",
          "reconciling",
          "state",
          "tlsInspectionPolicy",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getGatewaySecurityPolicy": {
      "description": "Gets details of a single GatewaySecurityPolicy.",
      "inputs": {
        "properties": {
          "gatewaySecurityPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewaySecurityPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy} gateway_security_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$).",
            "type": "string"
          },
          "tlsInspectionPolicy": {
            "description": "Optional. Name of a TLS Inspection Policy resource that defines how TLS inspection will be performed for any rule(s) which enables it.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "tlsInspectionPolicy",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getOrganizationAddressGroup": {
      "description": "Gets details of a single address group.",
      "inputs": {
        "properties": {
          "addressGroupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "addressGroupId",
          "location",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "capacity": {
            "description": "Capacity of the Address Group",
            "type": "integer"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "items": {
            "description": "Optional. List of items.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the AddressGroup resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the AddressGroup resource. It matches pattern `projects/*/locations/{location}/addressGroups/`.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined fully-qualified URL for this resource.",
            "type": "string"
          },
          "type": {
            "description": "The type of the Address Group. Possible values are \"IPv4\" or \"IPV6\".",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "capacity",
          "createTime",
          "description",
          "items",
          "labels",
          "name",
          "selfLink",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getRule": {
      "description": "Gets details of a single GatewaySecurityPolicyRule.",
      "inputs": {
        "properties": {
          "gatewaySecurityPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "ruleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewaySecurityPolicyId",
          "location",
          "ruleId"
        ]
      },
      "outputs": {
        "properties": {
          "applicationMatcher": {
            "description": "Optional. CEL expression for matching on L7/application level criteria.",
            "type": "string"
          },
          "basicProfile": {
            "description": "Profile which tells what the primitive action should be.",
            "type": "string"
          },
          "createTime": {
            "description": "Time when the rule was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "enabled": {
            "description": "Whether the rule is enforced.",
            "type": "boolean"
          },
          "name": {
            "description": "Immutable. Name of the resource. ame is the full resource name so projects/{project}/locations/{location}/gatewaySecurityPolicies/{gateway_security_policy}/rules/{rule} rule should match the pattern: (^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$).",
            "type": "string"
          },
          "priority": {
            "description": "Priority of the rule. Lower number corresponds to higher precedence.",
            "type": "integer"
          },
          "sessionMatcher": {
            "description": "CEL expression for matching on session criteria.",
            "type": "string"
          },
          "tlsInspectionEnabled": {
            "description": "Optional. Flag to enable TLS inspection of traffic matching on , can only be true if the parent GatewaySecurityPolicy references a TLSInspectionConfig.",
            "type": "boolean"
          },
          "updateTime": {
            "description": "Time when the rule was updated.",
            "type": "string"
          }
        },
        "required": [
          "applicationMatcher",
          "basicProfile",
          "createTime",
          "description",
          "enabled",
          "name",
          "priority",
          "sessionMatcher",
          "tlsInspectionEnabled",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getSecurityProfile": {
      "description": "Gets details of a single SecurityProfile.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "securityProfileId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "securityProfileId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Resource creation timestamp.",
            "type": "string"
          },
          "description": {
            "description": "Optional. An optional description of the profile. Max length 512 characters.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. Identifier. Name of the SecurityProfile resource. It matches pattern `projects|organizations/*/locations/{location}/securityProfiles/{security_profile}`.",
            "type": "string"
          },
          "threatPreventionProfile": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:ThreatPreventionProfileResponse",
            "description": "The threat prevention configuration for the SecurityProfile."
          },
          "type": {
            "description": "Immutable. The single ProfileType that the SecurityProfile resource configures.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last resource update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "threatPreventionProfile",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getSecurityProfileGroup": {
      "description": "Gets details of a single SecurityProfileGroup.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "securityProfileGroupId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "securityProfileGroupId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Resource creation timestamp.",
            "type": "string"
          },
          "description": {
            "description": "Optional. An optional description of the profile group. Max length 2048 characters.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. Identifier. Name of the SecurityProfileGroup resource. It matches pattern `projects|organizations/*/locations/{location}/securityProfileGroups/{security_profile_group}`.",
            "type": "string"
          },
          "threatPreventionProfile": {
            "description": "Optional. Reference to a SecurityProfile with the threat prevention configuration for the SecurityProfileGroup.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last resource update timestamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "labels",
          "name",
          "threatPreventionProfile",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getServerTlsPolicy": {
      "description": "Gets details of a single ServerTlsPolicy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serverTlsPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serverTlsPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "allowOpen": {
            "description": "This field applies only for Traffic Director policies. It is must be set to false for external HTTPS load balancer policies. Determines if server allows plaintext connections. If set to true, server allows plain text connections. By default, it is set to false. This setting is not exclusive of other encryption modes. For example, if `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections. See documentation of other encryption modes to confirm compatibility. Consider using it if you wish to upgrade in place your deployment to TLS while having mixed TLS and non-TLS traffic reaching port :80.",
            "type": "boolean"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Free-text description of the resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Set of label tags associated with the resource.",
            "type": "object"
          },
          "mtlsPolicy": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:MTLSPolicyResponse",
            "description": "This field is required if the policy is used with external HTTPS load balancers. This field can be empty for Traffic Director. Defines a mechanism to provision peer validation certificates for peer to peer authentication (Mutual TLS - mTLS). If not specified, client certificate will not be requested. The connection is treated as TLS and not mTLS. If `allow_open` and `mtls_policy` are set, server allows both plain text and mTLS connections."
          },
          "name": {
            "description": "Name of the ServerTlsPolicy resource. It matches the pattern `projects/*/locations/{location}/serverTlsPolicies/{server_tls_policy}`",
            "type": "string"
          },
          "serverCertificate": {
            "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleCloudNetworksecurityV1beta1CertificateProviderResponse",
            "description": "Optional if policy is to be used with Traffic Director. For external HTTPS load balancer must be empty. Defines a mechanism to provision server identity (public and private keys). Cannot be combined with `allow_open` as a permissive mode that allows both plain text and TLS is not supported."
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "allowOpen",
          "createTime",
          "description",
          "labels",
          "mtlsPolicy",
          "name",
          "serverCertificate",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getServerTlsPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serverTlsPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serverTlsPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networksecurity%2Fv1beta1:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getTlsInspectionPolicy": {
      "description": "Gets details of a single TlsInspectionPolicy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tlsInspectionPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tlsInspectionPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "caPool": {
            "description": "A CA pool resource used to issue interception certificates. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\".",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "customTlsFeatures": {
            "description": "Optional. List of custom TLS cipher suites selected. This field is valid only if the selected tls_feature_profile is CUSTOM. The compute.SslPoliciesService.ListAvailableFeatures method returns the set of features that can be specified in this list. Note that Secure Web Proxy does not yet honor this field.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "excludePublicCaSet": {
            "description": "Optional. If FALSE (the default), use our default set of public CAs in addition to any CAs specified in trust_config. These public CAs are currently based on the Mozilla Root Program and are subject to change over time. If TRUE, do not accept our default set of public CAs. Only CAs specified in trust_config will be accepted. This defaults to FALSE (use public CAs in addition to trust_config) for backwards compatibility, but trusting public root CAs is *not recommended* unless the traffic in question is outbound to public web servers. When possible, prefer setting this to \"false\" and explicitly specifying trusted CAs and certificates in a TrustConfig. Note that Secure Web Proxy does not yet honor this field.",
            "type": "boolean"
          },
          "minTlsVersion": {
            "description": "Optional. Minimum TLS version that the firewall should use when negotiating connections with both clients and servers. If this is not set, then the default value is to allow the broadest set of clients and servers (TLS 1.0 or higher). Setting this to more restrictive values may improve security, but may also prevent the firewall from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource. Name is of the form projects/{project}/locations/{location}/tlsInspectionPolicies/{tls_inspection_policy} tls_inspection_policy should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$).",
            "type": "string"
          },
          "tlsFeatureProfile": {
            "description": "Optional. The selected Profile. If this is not set, then the default value is to allow the broadest set of clients and servers (\"PROFILE_COMPATIBLE\"). Setting this to more restrictive values may improve security, but may also prevent the TLS inspection proxy from connecting to some clients or servers. Note that Secure Web Proxy does not yet honor this field.",
            "type": "string"
          },
          "trustConfig": {
            "description": "Optional. A TrustConfig resource used when making a connection to the TLS server. This is a relative resource path following the form \"projects/{project}/locations/{location}/trustConfigs/{trust_config}\". This is necessary to intercept TLS connections to servers with certificates signed by a private CA or self-signed certificates. Note that Secure Web Proxy does not yet honor this field.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "caPool",
          "createTime",
          "customTlsFeatures",
          "description",
          "excludePublicCaSet",
          "minTlsVersion",
          "name",
          "tlsFeatureProfile",
          "trustConfig",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networksecurity/v1beta1:getUrlList": {
      "description": "Gets details of a single UrlList.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "urlListId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "urlListId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time when the security policy was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Free-text description of the resource.",
            "type": "string"
          },
          "name": {
            "description": "Name of the resource provided by the user. Name is of the form projects/{project}/locations/{location}/urlLists/{url_list} url_list should match the pattern:(^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$).",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when the security policy was updated.",
            "type": "string"
          },
          "values": {
            "description": "FQDNs and URLs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "updateTime",
          "values"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getEdgeCacheKeysetIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "edgeCacheKeysetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "edgeCacheKeysetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getEdgeCacheOriginIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "edgeCacheOriginId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "edgeCacheOriginId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getEdgeCacheServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "edgeCacheServiceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "edgeCacheServiceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getEndpointPolicy": {
      "description": "Gets details of a single EndpointPolicy.",
      "inputs": {
        "properties": {
          "endpointPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "authorizationPolicy": {
            "description": "Optional. This field specifies the URL of AuthorizationPolicy resource that applies authorization policies to the inbound traffic at the matched endpoints. Refer to Authorization. If this field is not specified, authorization is disabled(no authz checks) for this endpoint.",
            "type": "string"
          },
          "clientTlsPolicy": {
            "description": "Optional. A URL referring to a ClientTlsPolicy resource. ClientTlsPolicy can be set to specify the authentication for traffic from the proxy to the actual endpoints. More specifically, it is applied to the outgoing traffic from the proxy to the endpoint. This is typically used for sidecar model where the proxy identifies itself as endpoint to the control plane, with the connection between sidecar and endpoint requiring authentication. If this field is not set, authentication is disabled(open). Applicable only when EndpointPolicyType is SIDECAR_PROXY.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "endpointMatcher": {
            "$ref": "#/types/google-native:networkservices%2Fv1:EndpointMatcherResponse",
            "description": "A matcher that selects endpoints to which the policies should be applied."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the EndpointPolicy resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the EndpointPolicy resource. It matches pattern `projects/{project}/locations/global/endpointPolicies/{endpoint_policy}`.",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A URL referring to ServerTlsPolicy resource. ServerTlsPolicy is used to determine the authentication policy to be applied to terminate the inbound traffic at the identified backends. If this field is not set, authentication is disabled(open) for this endpoint.",
            "type": "string"
          },
          "trafficPortSelector": {
            "$ref": "#/types/google-native:networkservices%2Fv1:TrafficPortSelectorResponse",
            "description": "Optional. Port selector for the (matched) endpoints. If no port selector is provided, the matched config is applied to all ports."
          },
          "type": {
            "description": "The type of endpoint policy. This is primarily used to validate the configuration.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "authorizationPolicy",
          "clientTlsPolicy",
          "createTime",
          "description",
          "endpointMatcher",
          "labels",
          "name",
          "serverTlsPolicy",
          "trafficPortSelector",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getEndpointPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "endpointPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getGateway": {
      "description": "Gets details of a single Gateway.",
      "inputs": {
        "properties": {
          "gatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "addresses": {
            "description": "Optional. Zero or one IPv4 or IPv6 address on which the Gateway will receive the traffic. When no address is provided, an IP from the subnetwork is allocated This field only applies to gateways of type 'SECURE_WEB_GATEWAY'. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "certificateUrls": {
            "description": "Optional. A fully-qualified Certificates URL reference. The proxy presents a Certificate (selected based on SNI) when establishing a TLS connection. This feature only applies to gateways of type 'SECURE_WEB_GATEWAY'.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gatewaySecurityPolicy": {
            "description": "Optional. A fully-qualified GatewaySecurityPolicy URL reference. Defines how a server should apply security policy to inbound (VM to Proxy) initiated connections. For example: `projects/*/locations/*/gatewaySecurityPolicies/swg-policy`. This policy is specific to gateways of type 'SECURE_WEB_GATEWAY'.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the Gateway resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Gateway resource. It matches pattern `projects/*/locations/*/gateways/`.",
            "type": "string"
          },
          "network": {
            "description": "Optional. The relative resource name identifying the VPC network that is using this configuration. For example: `projects/*/global/networks/network-1`. Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY'.",
            "type": "string"
          },
          "ports": {
            "description": "One or more port numbers (1-65535), on which the Gateway will receive traffic. The proxy binds to the specified ports. Gateways of type 'SECURE_WEB_GATEWAY' are limited to 1 port. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6 and support multiple ports.",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "scope": {
            "description": "Optional. Scope determines how configuration across multiple Gateway instances are merged. The configuration for multiple Gateway instances with the same scope will be merged as presented as a single coniguration to the proxy/load balancer. Max length 64 characters. Scope should start with a letter and can only have letters, numbers, hyphens.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A fully-qualified ServerTLSPolicy URL reference. Specifies how TLS traffic is terminated. If empty, TLS termination is disabled.",
            "type": "string"
          },
          "subnetwork": {
            "description": "Optional. The relative resource name identifying the subnetwork in which this SWG is allocated. For example: `projects/*/regions/us-central1/subnetworks/network-1` Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY\".",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "addresses",
          "certificateUrls",
          "createTime",
          "description",
          "gatewaySecurityPolicy",
          "labels",
          "name",
          "network",
          "ports",
          "scope",
          "selfLink",
          "serverTlsPolicy",
          "subnetwork",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getGatewayIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "gatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getGrpcRoute": {
      "description": "Gets details of a single GrpcRoute.",
      "inputs": {
        "properties": {
          "grpcRouteId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "grpcRouteId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gateways": {
            "description": "Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "hostnames": {
            "description": "Service hostnames with an optional port for which this route describes traffic. Format: [:] Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same route, it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`. If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. \"xds:///service:123\"), otherwise they must supply the URI without a port (i.e. \"xds:///service\").",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the GrpcRoute resource.",
            "type": "object"
          },
          "meshes": {
            "description": "Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the GrpcRoute resource. It matches pattern `projects/*/locations/global/grpcRoutes/`",
            "type": "string"
          },
          "rules": {
            "description": "A list of detailed rules defining how to route traffic. Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:GrpcRouteRouteRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gateways",
          "hostnames",
          "labels",
          "meshes",
          "name",
          "rules",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getHttpRoute": {
      "description": "Gets details of a single HttpRoute.",
      "inputs": {
        "properties": {
          "httpRouteId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "httpRouteId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gateways": {
            "description": "Optional. Gateways defines a list of gateways this HttpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "hostnames": {
            "description": "Hostnames define a set of hosts that should match against the HTTP host header to select a HttpRoute to process the request. Hostname is the fully qualified domain name of a network host, as defined by RFC 1123 with the exception that: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateways must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same Mesh (or Gateways under the same scope), it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the HttpRoute resource.",
            "type": "object"
          },
          "meshes": {
            "description": "Optional. Meshes defines a list of meshes this HttpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the HttpRoute resource. It matches pattern `projects/*/locations/global/httpRoutes/http_route_name\u003e`.",
            "type": "string"
          },
          "rules": {
            "description": "Rules that define how traffic is routed and handled. Rules will be matched sequentially based on the RouteMatch specified for the rule.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:HttpRouteRouteRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gateways",
          "hostnames",
          "labels",
          "meshes",
          "name",
          "rules",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getMesh": {
      "description": "Gets details of a single Mesh.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "meshId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "meshId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "interceptionPort": {
            "description": "Optional. If set to a valid TCP port (1-65535), instructs the SIDECAR proxy to listen on the specified port of localhost (127.0.0.1) address. The SIDECAR proxy will expect all traffic to be redirected to this port regardless of its actual ip:port destination. If unset, a port '15001' is used as the interception port. This is applicable only for sidecar proxy deployments.",
            "type": "integer"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the Mesh resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Mesh resource. It matches pattern `projects/*/locations/global/meshes/`.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "interceptionPort",
          "labels",
          "name",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getMeshIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "meshId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "meshId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getServiceBinding": {
      "description": "Gets details of a single ServiceBinding.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceBindingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceBindingId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the ServiceBinding resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the ServiceBinding resource. It matches pattern `projects/*/locations/global/serviceBindings/service_binding_name`.",
            "type": "string"
          },
          "service": {
            "description": "The full Service Directory Service name of the format projects/*/locations/*/namespaces/*/services/*",
            "type": "string"
          },
          "serviceId": {
            "description": "The unique identifier of the Service Directory Service against which the Service Binding resource is validated. This is populated when the Service Binding resource is used in another resource (like Backend Service). This is of the UUID4 format.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "labels",
          "name",
          "service",
          "serviceId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getServiceBindingIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceBindingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceBindingId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getTcpRoute": {
      "description": "Gets details of a single TcpRoute.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tcpRouteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tcpRouteId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gateways": {
            "description": "Optional. Gateways defines a list of gateways this TcpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the TcpRoute resource.",
            "type": "object"
          },
          "meshes": {
            "description": "Optional. Meshes defines a list of meshes this TcpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the TcpRoute resource. It matches pattern `projects/*/locations/global/tcpRoutes/tcp_route_name\u003e`.",
            "type": "string"
          },
          "rules": {
            "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:TcpRouteRouteRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gateways",
          "labels",
          "meshes",
          "name",
          "rules",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1:getTlsRoute": {
      "description": "Gets details of a single TlsRoute.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tlsRouteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tlsRouteId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gateways": {
            "description": "Optional. Gateways defines a list of gateways this TlsRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the TlsRoute resource.",
            "type": "object"
          },
          "meshes": {
            "description": "Optional. Meshes defines a list of meshes this TlsRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the TlsRoute resource. It matches pattern `projects/*/locations/global/tlsRoutes/tls_route_name\u003e`.",
            "type": "string"
          },
          "rules": {
            "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1:TlsRouteRouteRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gateways",
          "labels",
          "meshes",
          "name",
          "rules",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getEndpointPolicy": {
      "description": "Gets details of a single EndpointPolicy.",
      "inputs": {
        "properties": {
          "endpointPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "authorizationPolicy": {
            "description": "Optional. This field specifies the URL of AuthorizationPolicy resource that applies authorization policies to the inbound traffic at the matched endpoints. Refer to Authorization. If this field is not specified, authorization is disabled(no authz checks) for this endpoint.",
            "type": "string"
          },
          "clientTlsPolicy": {
            "description": "Optional. A URL referring to a ClientTlsPolicy resource. ClientTlsPolicy can be set to specify the authentication for traffic from the proxy to the actual endpoints. More specifically, it is applied to the outgoing traffic from the proxy to the endpoint. This is typically used for sidecar model where the proxy identifies itself as endpoint to the control plane, with the connection between sidecar and endpoint requiring authentication. If this field is not set, authentication is disabled(open). Applicable only when EndpointPolicyType is SIDECAR_PROXY.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "endpointMatcher": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:EndpointMatcherResponse",
            "description": "A matcher that selects endpoints to which the policies should be applied."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the EndpointPolicy resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the EndpointPolicy resource. It matches pattern `projects/{project}/locations/global/endpointPolicies/{endpoint_policy}`.",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A URL referring to ServerTlsPolicy resource. ServerTlsPolicy is used to determine the authentication policy to be applied to terminate the inbound traffic at the identified backends. If this field is not set, authentication is disabled(open) for this endpoint.",
            "type": "string"
          },
          "trafficPortSelector": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:TrafficPortSelectorResponse",
            "description": "Optional. Port selector for the (matched) endpoints. If no port selector is provided, the matched config is applied to all ports."
          },
          "type": {
            "description": "The type of endpoint policy. This is primarily used to validate the configuration.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "authorizationPolicy",
          "clientTlsPolicy",
          "createTime",
          "description",
          "endpointMatcher",
          "labels",
          "name",
          "serverTlsPolicy",
          "trafficPortSelector",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getEndpointPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "endpointPolicyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointPolicyId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getGateway": {
      "description": "Gets details of a single Gateway.",
      "inputs": {
        "properties": {
          "gatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "addresses": {
            "description": "Optional. Zero or one IPv4 or IPv6 address on which the Gateway will receive the traffic. When no address is provided, an IP from the subnetwork is allocated This field only applies to gateways of type 'SECURE_WEB_GATEWAY'. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "certificateUrls": {
            "description": "Optional. A fully-qualified Certificates URL reference. The proxy presents a Certificate (selected based on SNI) when establishing a TLS connection. This feature only applies to gateways of type 'SECURE_WEB_GATEWAY'.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gatewaySecurityPolicy": {
            "description": "Optional. A fully-qualified GatewaySecurityPolicy URL reference. Defines how a server should apply security policy to inbound (VM to Proxy) initiated connections. For example: `projects/*/locations/*/gatewaySecurityPolicies/swg-policy`. This policy is specific to gateways of type 'SECURE_WEB_GATEWAY'.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the Gateway resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Gateway resource. It matches pattern `projects/*/locations/*/gateways/`.",
            "type": "string"
          },
          "network": {
            "description": "Optional. The relative resource name identifying the VPC network that is using this configuration. For example: `projects/*/global/networks/network-1`. Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY'.",
            "type": "string"
          },
          "ports": {
            "description": "One or more port numbers (1-65535), on which the Gateway will receive traffic. The proxy binds to the specified ports. Gateways of type 'SECURE_WEB_GATEWAY' are limited to 1 port. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6 and support multiple ports.",
            "items": {
              "type": "integer"
            },
            "type": "array"
          },
          "scope": {
            "description": "Optional. Scope determines how configuration across multiple Gateway instances are merged. The configuration for multiple Gateway instances with the same scope will be merged as presented as a single coniguration to the proxy/load balancer. Max length 64 characters. Scope should start with a letter and can only have letters, numbers, hyphens.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "serverTlsPolicy": {
            "description": "Optional. A fully-qualified ServerTLSPolicy URL reference. Specifies how TLS traffic is terminated. If empty, TLS termination is disabled.",
            "type": "string"
          },
          "subnetwork": {
            "description": "Optional. The relative resource name identifying the subnetwork in which this SWG is allocated. For example: `projects/*/regions/us-central1/subnetworks/network-1` Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY\".",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "addresses",
          "certificateUrls",
          "createTime",
          "description",
          "gatewaySecurityPolicy",
          "labels",
          "name",
          "network",
          "ports",
          "scope",
          "selfLink",
          "serverTlsPolicy",
          "subnetwork",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getGatewayIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "gatewayId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "gatewayId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getGrpcRoute": {
      "description": "Gets details of a single GrpcRoute.",
      "inputs": {
        "properties": {
          "grpcRouteId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "grpcRouteId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gateways": {
            "description": "Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "hostnames": {
            "description": "Service hostnames with an optional port for which this route describes traffic. Format: [:] Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same route, it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`. If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. \"xds:///service:123\"), otherwise they must supply the URI without a port (i.e. \"xds:///service\").",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the GrpcRoute resource.",
            "type": "object"
          },
          "meshes": {
            "description": "Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the GrpcRoute resource. It matches pattern `projects/*/locations/global/grpcRoutes/`",
            "type": "string"
          },
          "rules": {
            "description": "A list of detailed rules defining how to route traffic. Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:GrpcRouteRouteRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gateways",
          "hostnames",
          "labels",
          "meshes",
          "name",
          "rules",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getHttpRoute": {
      "description": "Gets details of a single HttpRoute.",
      "inputs": {
        "properties": {
          "httpRouteId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "httpRouteId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gateways": {
            "description": "Optional. Gateways defines a list of gateways this HttpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "hostnames": {
            "description": "Hostnames define a set of hosts that should match against the HTTP host header to select a HttpRoute to process the request. Hostname is the fully qualified domain name of a network host, as defined by RFC 1123 with the exception that: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateways must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same Mesh (or Gateways under the same scope), it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the HttpRoute resource.",
            "type": "object"
          },
          "meshes": {
            "description": "Optional. Meshes defines a list of meshes this HttpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the HttpRoute resource. It matches pattern `projects/*/locations/global/httpRoutes/http_route_name\u003e`.",
            "type": "string"
          },
          "rules": {
            "description": "Rules that define how traffic is routed and handled. Rules will be matched sequentially based on the RouteMatch specified for the rule.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:HttpRouteRouteRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gateways",
          "hostnames",
          "labels",
          "meshes",
          "name",
          "rules",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getLbRouteExtension": {
      "description": "Gets details of the specified `LbRouteExtension` resource.",
      "inputs": {
        "properties": {
          "lbRouteExtensionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lbRouteExtensionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A human-readable description of the resource.",
            "type": "string"
          },
          "extensionChains": {
            "description": "A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainResponse"
            },
            "type": "array"
          },
          "forwardingRules": {
            "description": "A list of references to the forwarding rules to which this service extension is attached to. At least one forwarding rule is required. There can be only one `LbRouteExtension` resource per forwarding rule.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of labels associated with the `LbRouteExtension` resource. The format must comply with [the following requirements](/compute/docs/labeling-resources#requirements).",
            "type": "object"
          },
          "loadBalancingScheme": {
            "description": "All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service).",
            "type": "string"
          },
          "name": {
            "description": "Name of the `LbRouteExtension` resource in the following format: `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "extensionChains",
          "forwardingRules",
          "labels",
          "loadBalancingScheme",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getLbTrafficExtension": {
      "description": "Gets details of the specified `LbTrafficExtension` resource.",
      "inputs": {
        "properties": {
          "lbTrafficExtensionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "lbTrafficExtensionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A human-readable description of the resource.",
            "type": "string"
          },
          "extensionChains": {
            "description": "A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:ExtensionChainResponse"
            },
            "type": "array"
          },
          "forwardingRules": {
            "description": "A list of references to the forwarding rules to which this service extension is attached to. At least one forwarding rule is required. There can be only one `LBTrafficExtension` resource per forwarding rule.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of labels associated with the `LbTrafficExtension` resource. The format must comply with [the following requirements](/compute/docs/labeling-resources#requirements).",
            "type": "object"
          },
          "loadBalancingScheme": {
            "description": "All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Choosing a load balancer](https://cloud.google.com/load-balancing/docs/backend-service).",
            "type": "string"
          },
          "name": {
            "description": "Name of the `LbTrafficExtension` resource in the following format: `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "extensionChains",
          "forwardingRules",
          "labels",
          "loadBalancingScheme",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getMesh": {
      "description": "Gets details of a single Mesh.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "meshId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "meshId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "interceptionPort": {
            "description": "Optional. If set to a valid TCP port (1-65535), instructs the SIDECAR proxy to listen on the specified port of localhost (127.0.0.1) address. The SIDECAR proxy will expect all traffic to be redirected to this port regardless of its actual ip:port destination. If unset, a port '15001' is used as the interception port. This is applicable only for sidecar proxy deployments.",
            "type": "integer"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the Mesh resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the Mesh resource. It matches pattern `projects/*/locations/global/meshes/`.",
            "type": "string"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "interceptionPort",
          "labels",
          "name",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getMeshIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "meshId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "meshId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getServiceBinding": {
      "description": "Gets details of a single ServiceBinding.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceBindingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceBindingId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the ServiceBinding resource.",
            "type": "object"
          },
          "name": {
            "description": "Name of the ServiceBinding resource. It matches pattern `projects/*/locations/global/serviceBindings/service_binding_name`.",
            "type": "string"
          },
          "service": {
            "description": "The full Service Directory Service name of the format projects/*/locations/*/namespaces/*/services/*",
            "type": "string"
          },
          "serviceId": {
            "description": "The unique identifier of the Service Directory Service against which the Service Binding resource is validated. This is populated when the Service Binding resource is used in another resource (like Backend Service). This is of the UUID4 format.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "labels",
          "name",
          "service",
          "serviceId",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getServiceBindingIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceBindingId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceBindingId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getServiceLbPolicy": {
      "description": "Gets details of a single ServiceLbPolicy.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceLbPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceLbPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "autoCapacityDrain": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ServiceLbPolicyAutoCapacityDrainResponse",
            "description": "Optional. Configuration to automatically move traffic away for unhealthy IG/NEG for the associated Backend Service."
          },
          "createTime": {
            "description": "The timestamp when this resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "failoverConfig": {
            "$ref": "#/types/google-native:networkservices%2Fv1beta1:ServiceLbPolicyFailoverConfigResponse",
            "description": "Optional. Configuration related to health based failover."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the ServiceLbPolicy resource.",
            "type": "object"
          },
          "loadBalancingAlgorithm": {
            "description": "Optional. The type of load balancing algorithm to be used. The default behavior is WATERFALL_BY_REGION.",
            "type": "string"
          },
          "name": {
            "description": "Name of the ServiceLbPolicy resource. It matches pattern `projects/{project}/locations/{location}/serviceLbPolicies/{service_lb_policy_name}`.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when this resource was last updated.",
            "type": "string"
          }
        },
        "required": [
          "autoCapacityDrain",
          "createTime",
          "description",
          "failoverConfig",
          "labels",
          "loadBalancingAlgorithm",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getServiceLbPolicyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceLbPolicyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceLbPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getTcpRoute": {
      "description": "Gets details of a single TcpRoute.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tcpRouteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tcpRouteId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gateways": {
            "description": "Optional. Gateways defines a list of gateways this TcpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the TcpRoute resource.",
            "type": "object"
          },
          "meshes": {
            "description": "Optional. Meshes defines a list of meshes this TcpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the TcpRoute resource. It matches pattern `projects/*/locations/global/tcpRoutes/tcp_route_name\u003e`.",
            "type": "string"
          },
          "rules": {
            "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:TcpRouteRouteRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gateways",
          "labels",
          "meshes",
          "name",
          "rules",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:networkservices/v1beta1:getTlsRoute": {
      "description": "Gets details of a single TlsRoute.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "tlsRouteId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "tlsRouteId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the resource was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A free-text description of the resource. Max length 1024 characters.",
            "type": "string"
          },
          "gateways": {
            "description": "Optional. Gateways defines a list of gateways this TlsRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Set of label tags associated with the TlsRoute resource.",
            "type": "object"
          },
          "meshes": {
            "description": "Optional. Meshes defines a list of meshes this TlsRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Name of the TlsRoute resource. It matches pattern `projects/*/locations/global/tlsRoutes/tls_route_name\u003e`.",
            "type": "string"
          },
          "rules": {
            "description": "Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match.",
            "items": {
              "$ref": "#/types/google-native:networkservices%2Fv1beta1:TlsRouteRouteRuleResponse"
            },
            "type": "array"
          },
          "selfLink": {
            "description": "Server-defined URL of this resource",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "gateways",
          "labels",
          "meshes",
          "name",
          "rules",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v1:getEnvironment": {
      "description": "Gets details of a single Environment.",
      "inputs": {
        "properties": {
          "environmentId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "environmentId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "containerImage": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImageResponse",
            "description": "Use a container image to start the notebook instance."
          },
          "createTime": {
            "description": "The time at which this environment was created.",
            "type": "string"
          },
          "description": {
            "description": "A brief description of this environment.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name of this environment for the UI.",
            "type": "string"
          },
          "name": {
            "description": "Name of this environment. Format: `projects/{project_id}/locations/{location}/environments/{environment_id}`",
            "type": "string"
          },
          "postStartupScript": {
            "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path. Example: `\"gs://path-to-file/file-name\"`",
            "type": "string"
          },
          "vmImage": {
            "$ref": "#/types/google-native:notebooks%2Fv1:VmImageResponse",
            "description": "Use a Compute Engine VM image to start the notebook instance."
          }
        },
        "required": [
          "containerImage",
          "createTime",
          "description",
          "displayName",
          "name",
          "postStartupScript",
          "vmImage"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v1:getExecution": {
      "description": "Gets details of executions",
      "inputs": {
        "properties": {
          "executionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "executionId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time the Execution was instantiated.",
            "type": "string"
          },
          "description": {
            "description": "A brief description of this execution.",
            "type": "string"
          },
          "displayName": {
            "description": "Name used for UI purposes. Name can only contain alphanumeric characters and underscores '_'.",
            "type": "string"
          },
          "executionTemplate": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplateResponse",
            "description": "execute metadata including name, hardware spec, region, labels, etc."
          },
          "jobUri": {
            "description": "The URI of the external job used to execute the notebook.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the execute. Format: `projects/{project_id}/locations/{location}/executions/{execution_id}`",
            "type": "string"
          },
          "outputNotebookFile": {
            "description": "Output notebook file generated by this execution",
            "type": "string"
          },
          "state": {
            "description": "State of the underlying AI Platform job.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time the Execution was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "executionTemplate",
          "jobUri",
          "name",
          "outputNotebookFile",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v1:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "acceleratorConfig": {
            "$ref": "#/types/google-native:notebooks%2Fv1:AcceleratorConfigResponse",
            "description": "The hardware accelerator used on this instance. If you use accelerators, make sure that your configuration has [enough vCPUs and memory to support the `machine_type` you have selected](https://cloud.google.com/compute/docs/gpus/#gpus-list)."
          },
          "bootDiskSizeGb": {
            "description": "Input only. The size of the boot disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). The minimum recommended value is 100 GB. If not specified, this defaults to 100.",
            "type": "string"
          },
          "bootDiskType": {
            "description": "Input only. The type of the boot disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`).",
            "type": "string"
          },
          "canIpForward": {
            "description": "Optional. Flag to enable ip forwarding or not, default false/off. https://cloud.google.com/vpc/docs/using-routes#canipforward",
            "type": "boolean"
          },
          "containerImage": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ContainerImageResponse",
            "description": "Use a container image to start the notebook instance."
          },
          "createTime": {
            "description": "Instance creation time.",
            "type": "string"
          },
          "creator": {
            "description": "Email address of entity that sent original CreateInstance request.",
            "type": "string"
          },
          "customGpuDriverPath": {
            "description": "Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we'll automatically choose from official GPU drivers.",
            "type": "string"
          },
          "dataDiskSizeGb": {
            "description": "Input only. The size of the data disk in GB attached to this instance, up to a maximum of 64000 GB (64 TB). You can choose the size of the data disk based on how big your notebooks and data are. If not specified, this defaults to 100.",
            "type": "string"
          },
          "dataDiskType": {
            "description": "Input only. The type of the data disk attached to this instance, defaults to standard persistent disk (`PD_STANDARD`).",
            "type": "string"
          },
          "diskEncryption": {
            "description": "Input only. Disk encryption method used on the boot and data disks, defaults to GMEK.",
            "type": "string"
          },
          "disks": {
            "description": "Attached disks to notebook instance.",
            "items": {
              "$ref": "#/types/google-native:notebooks%2Fv1:DiskResponse"
            },
            "type": "array"
          },
          "installGpuDriver": {
            "description": "Whether the end user authorizes Google Cloud to install GPU driver on this instance. If this field is empty or set to false, the GPU driver won't be installed. Only applicable to instances with GPUs.",
            "type": "boolean"
          },
          "instanceMigrationEligibility": {
            "$ref": "#/types/google-native:notebooks%2Fv1:InstanceMigrationEligibilityResponse",
            "description": "Checks how feasible a migration from UmN to WbI is."
          },
          "instanceOwners": {
            "description": "Input only. The owner of this instance after creation. Format: `alias@example.com` Currently supports one owner only. If not specified, all of the service account users of your VM instance's service account can use the instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kmsKey": {
            "description": "Input only. The KMS key used to encrypt the disks, only applicable if disk_encryption is CMEK. Format: `projects/{project_id}/locations/{location}/keyRings/{key_ring_id}/cryptoKeys/{key_id}` Learn more about [using your own encryption keys](/kms/docs/quickstart).",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
            "type": "object"
          },
          "machineType": {
            "description": "The [Compute Engine machine type](https://cloud.google.com/compute/docs/machine-types) of this instance.",
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom metadata to apply to this instance. For example, to specify a Cloud Storage bucket for automatic backup, you can use the `gcs-data-bucket` metadata tag. Format: `\"--metadata=gcs-data-bucket=``BUCKET''\"`.",
            "type": "object"
          },
          "migrated": {
            "description": "Bool indicating whether this notebook has been migrated to a Workbench Instance",
            "type": "boolean"
          },
          "name": {
            "description": "The name of this notebook instance. Format: `projects/{project_id}/locations/{location}/instances/{instance_id}`",
            "type": "string"
          },
          "network": {
            "description": "The name of the VPC that this instance is in. Format: `projects/{project_id}/global/networks/{network_id}`",
            "type": "string"
          },
          "nicType": {
            "description": "Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.",
            "type": "string"
          },
          "noProxyAccess": {
            "description": "If true, the notebook instance will not register with the proxy.",
            "type": "boolean"
          },
          "noPublicIp": {
            "description": "If true, no external IP will be assigned to this instance.",
            "type": "boolean"
          },
          "noRemoveDataDisk": {
            "description": "Input only. If true, the data disk will not be auto deleted when deleting the instance.",
            "type": "boolean"
          },
          "postStartupScript": {
            "description": "Path to a Bash script that automatically runs after a notebook instance fully boots up. The path must be a URL or Cloud Storage path (`gs://path-to-file/file-name`).",
            "type": "string"
          },
          "proxyUri": {
            "description": "The proxy endpoint that is used to access the Jupyter notebook.",
            "type": "string"
          },
          "reservationAffinity": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ReservationAffinityResponse",
            "description": "Optional. The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this notebook instance."
          },
          "serviceAccount": {
            "description": "The service account on this instance, giving access to other Google Cloud services. You can use any service account within the same project, but you must have the service account user permission to use the instance. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.",
            "type": "string"
          },
          "serviceAccountScopes": {
            "description": "Optional. The URIs of service account scopes to be included in Compute Engine instances. If not specified, the following [scopes](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam) are defined: - https://www.googleapis.com/auth/cloud-platform - https://www.googleapis.com/auth/userinfo.email If not using default scopes, you need at least: https://www.googleapis.com/auth/compute",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "shieldedInstanceConfig": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ShieldedInstanceConfigResponse",
            "description": "Optional. Shielded VM configuration. [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm)."
          },
          "state": {
            "description": "The state of this instance.",
            "type": "string"
          },
          "subnet": {
            "description": "The name of the subnet that this instance is in. Format: `projects/{project_id}/regions/{region}/subnetworks/{subnetwork_id}`",
            "type": "string"
          },
          "tags": {
            "description": "Optional. The Compute Engine tags to add to runtime (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Instance update time.",
            "type": "string"
          },
          "upgradeHistory": {
            "description": "The upgrade history of this instance.",
            "items": {
              "$ref": "#/types/google-native:notebooks%2Fv1:UpgradeHistoryEntryResponse"
            },
            "type": "array"
          },
          "vmImage": {
            "$ref": "#/types/google-native:notebooks%2Fv1:VmImageResponse",
            "description": "Use a Compute Engine VM image to start the notebook instance."
          }
        },
        "required": [
          "acceleratorConfig",
          "bootDiskSizeGb",
          "bootDiskType",
          "canIpForward",
          "containerImage",
          "createTime",
          "creator",
          "customGpuDriverPath",
          "dataDiskSizeGb",
          "dataDiskType",
          "diskEncryption",
          "disks",
          "installGpuDriver",
          "instanceMigrationEligibility",
          "instanceOwners",
          "kmsKey",
          "labels",
          "machineType",
          "metadata",
          "migrated",
          "name",
          "network",
          "nicType",
          "noProxyAccess",
          "noPublicIp",
          "noRemoveDataDisk",
          "postStartupScript",
          "proxyUri",
          "reservationAffinity",
          "serviceAccount",
          "serviceAccountScopes",
          "shieldedInstanceConfig",
          "state",
          "subnet",
          "tags",
          "updateTime",
          "upgradeHistory",
          "vmImage"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v1:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:notebooks%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v1:getRuntime": {
      "description": "Gets details of a single Runtime. The location must be a regional endpoint rather than zonal.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "runtimeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "runtimeId"
        ]
      },
      "outputs": {
        "properties": {
          "accessConfig": {
            "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeAccessConfigResponse",
            "description": "The config settings for accessing runtime."
          },
          "createTime": {
            "description": "Runtime creation time.",
            "type": "string"
          },
          "healthState": {
            "description": "Runtime health_state.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. The labels to associate with this Managed Notebook or Runtime. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.",
            "type": "object"
          },
          "metrics": {
            "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeMetricsResponse",
            "description": "Contains Runtime daemon metrics such as Service status and JupyterLab stats."
          },
          "migrated": {
            "description": "Bool indicating whether this notebook has been migrated to a Workbench Instance",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the runtime. Format: `projects/{project}/locations/{location}/runtimes/{runtimeId}`",
            "type": "string"
          },
          "runtimeMigrationEligibility": {
            "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeMigrationEligibilityResponse",
            "description": "Checks how feasible a migration from GmN to WbI is."
          },
          "softwareConfig": {
            "$ref": "#/types/google-native:notebooks%2Fv1:RuntimeSoftwareConfigResponse",
            "description": "The config settings for software inside the runtime."
          },
          "state": {
            "description": "Runtime state.",
            "type": "string"
          },
          "updateTime": {
            "description": "Runtime update time.",
            "type": "string"
          },
          "virtualMachine": {
            "$ref": "#/types/google-native:notebooks%2Fv1:VirtualMachineResponse",
            "description": "Use a Compute Engine VM image to start the managed notebook instance."
          }
        },
        "required": [
          "accessConfig",
          "createTime",
          "healthState",
          "labels",
          "metrics",
          "migrated",
          "name",
          "runtimeMigrationEligibility",
          "softwareConfig",
          "state",
          "updateTime",
          "virtualMachine"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v1:getRuntimeIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "runtimeId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "runtimeId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:notebooks%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v1:getSchedule": {
      "description": "Gets details of schedule",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "scheduleId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "scheduleId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time the schedule was created.",
            "type": "string"
          },
          "cronSchedule": {
            "description": "Cron-tab formatted schedule by which the job will execute. Format: minute, hour, day of month, month, day of week, e.g. `0 0 * * WED` = every Wednesday More examples: https://crontab.guru/examples.html",
            "type": "string"
          },
          "description": {
            "description": "A brief description of this environment.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name used for UI purposes. Name can only contain alphanumeric characters, hyphens `-`, and underscores `_`.",
            "type": "string"
          },
          "executionTemplate": {
            "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionTemplateResponse",
            "description": "Notebook Execution Template corresponding to this schedule."
          },
          "name": {
            "description": "The name of this schedule. Format: `projects/{project_id}/locations/{location}/schedules/{schedule_id}`",
            "type": "string"
          },
          "recentExecutions": {
            "description": "The most recent execution names triggered from this schedule and their corresponding states.",
            "items": {
              "$ref": "#/types/google-native:notebooks%2Fv1:ExecutionResponse"
            },
            "type": "array"
          },
          "state": {
            "type": "string"
          },
          "timeZone": {
            "description": "Timezone on which the cron_schedule. The value of this field must be a time zone name from the tz database. TZ Database: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string \"utc\". If a time zone is not specified, the default will be in UTC (also known as GMT).",
            "type": "string"
          },
          "updateTime": {
            "description": "Time the schedule was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "cronSchedule",
          "description",
          "displayName",
          "executionTemplate",
          "name",
          "recentExecutions",
          "state",
          "timeZone",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v2:getInstance": {
      "description": "Gets details of a single Instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Instance creation time.",
            "type": "string"
          },
          "creator": {
            "description": "Email address of entity that sent original CreateInstance request.",
            "type": "string"
          },
          "disableProxyAccess": {
            "description": "Optional. If true, the notebook instance will not register with the proxy.",
            "type": "boolean"
          },
          "gceSetup": {
            "$ref": "#/types/google-native:notebooks%2Fv2:GceSetupResponse",
            "description": "Optional. Compute Engine setup for the notebook. Uses notebook-defined fields."
          },
          "healthInfo": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional information about instance health. Example: healthInfo\": { \"docker_proxy_agent_status\": \"1\", \"docker_status\": \"1\", \"jupyterlab_api_status\": \"-1\", \"jupyterlab_status\": \"-1\", \"updated\": \"2020-10-18 09:40:03.573409\" }",
            "type": "object"
          },
          "healthState": {
            "description": "Instance health_state.",
            "type": "string"
          },
          "instanceOwners": {
            "description": "Optional. Input only. The owner of this instance after creation. Format: `alias@example.com` Currently supports one owner only. If not specified, all of the service account users of your VM instance's service account can use the instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels to apply to this instance. These can be later modified by the UpdateInstance method.",
            "type": "object"
          },
          "name": {
            "description": "The name of this notebook instance. Format: `projects/{project_id}/locations/{location}/instances/{instance_id}`",
            "type": "string"
          },
          "proxyUri": {
            "description": "The proxy endpoint that is used to access the Jupyter notebook.",
            "type": "string"
          },
          "state": {
            "description": "The state of this instance.",
            "type": "string"
          },
          "updateTime": {
            "description": "Instance update time.",
            "type": "string"
          },
          "upgradeHistory": {
            "description": "The upgrade history of this instance.",
            "items": {
              "$ref": "#/types/google-native:notebooks%2Fv2:UpgradeHistoryEntryResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "creator",
          "disableProxyAccess",
          "gceSetup",
          "healthInfo",
          "healthState",
          "instanceOwners",
          "labels",
          "name",
          "proxyUri",
          "state",
          "updateTime",
          "upgradeHistory"
        ],
        "type": "object"
      }
    },
    "google-native:notebooks/v2:getInstanceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:notebooks%2Fv2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:orgpolicy/v2:getCustomConstraint": {
      "description": "Gets a custom constraint. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the custom constraint does not exist.",
      "inputs": {
        "properties": {
          "customConstraintId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customConstraintId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "actionType": {
            "description": "Allow or deny type.",
            "type": "string"
          },
          "condition": {
            "description": "Org policy condition/expression. For example: `resource.instanceName.matches(\"[production|test]_.*_(\\d)+\")` or, `resource.management.auto_upgrade == true` The max length of the condition is 1000 characters.",
            "type": "string"
          },
          "description": {
            "description": "Detailed information about this custom policy constraint. The max length of the description is 2000 characters.",
            "type": "string"
          },
          "displayName": {
            "description": "One line display name for the UI. The max length of the display_name is 200 characters.",
            "type": "string"
          },
          "methodTypes": {
            "description": "All the operations being applied for this constraint.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example: `organizations/123/customConstraints/custom.createOnlyE2TypeVms` The max length is 70 characters and the minimum length is 1. Note that the prefix `organizations/{organization_id}/customConstraints/` is not counted.",
            "type": "string"
          },
          "resourceTypes": {
            "description": "Immutable. The resource instance type on which this policy applies. Format will be of the form : `/` Example: * `compute.googleapis.com/Instance`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "The last time this custom constraint was updated. This represents the last time that the `CreateCustomConstraint` or `UpdateCustomConstraint` RPC was called",
            "type": "string"
          }
        },
        "required": [
          "actionType",
          "condition",
          "description",
          "displayName",
          "methodTypes",
          "name",
          "resourceTypes",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:orgpolicy/v2:getFolderPolicy": {
      "description": "Gets a policy on a resource. If no policy is set on the resource, `NOT_FOUND` is returned. The `etag` value can be used with `UpdatePolicy()` to update a policy during read-modify-write.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          },
          "policyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId",
          "policyId"
        ]
      },
      "outputs": {
        "properties": {
          "alternate": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpecResponse",
            "deprecationMessage": "Deprecated.",
            "description": "Deprecated."
          },
          "dryRunSpec": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
            "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
          },
          "name": {
            "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
            "description": "Basic information about the Organization Policy."
          }
        },
        "required": [
          "alternate",
          "dryRunSpec",
          "name",
          "spec"
        ],
        "type": "object"
      }
    },
    "google-native:orgpolicy/v2:getOrganizationPolicy": {
      "description": "Gets a policy on a resource. If no policy is set on the resource, `NOT_FOUND` is returned. The `etag` value can be used with `UpdatePolicy()` to update a policy during read-modify-write.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "policyId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "policyId"
        ]
      },
      "outputs": {
        "properties": {
          "alternate": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpecResponse",
            "deprecationMessage": "Deprecated.",
            "description": "Deprecated."
          },
          "dryRunSpec": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
            "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
          },
          "name": {
            "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
            "description": "Basic information about the Organization Policy."
          }
        },
        "required": [
          "alternate",
          "dryRunSpec",
          "name",
          "spec"
        ],
        "type": "object"
      }
    },
    "google-native:orgpolicy/v2:getPolicy": {
      "description": "Gets a policy on a resource. If no policy is set on the resource, `NOT_FOUND` is returned. The `etag` value can be used with `UpdatePolicy()` to update a policy during read-modify-write.",
      "inputs": {
        "properties": {
          "policyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "policyId"
        ]
      },
      "outputs": {
        "properties": {
          "alternate": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2AlternatePolicySpecResponse",
            "deprecationMessage": "Deprecated.",
            "description": "Deprecated."
          },
          "dryRunSpec": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
            "description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
          },
          "name": {
            "description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number.",
            "type": "string"
          },
          "spec": {
            "$ref": "#/types/google-native:orgpolicy%2Fv2:GoogleCloudOrgpolicyV2PolicySpecResponse",
            "description": "Basic information about the Organization Policy."
          }
        },
        "required": [
          "alternate",
          "dryRunSpec",
          "name",
          "spec"
        ],
        "type": "object"
      }
    },
    "google-native:osconfig/v1:getOsPolicyAssignment": {
      "description": "Retrieve an existing OS policy assignment. This method always returns the latest revision. In order to retrieve a previous revision of the assignment, also provide the revision ID in the `name` parameter.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "osPolicyAssignmentId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "osPolicyAssignmentId"
        ]
      },
      "outputs": {
        "properties": {
          "baseline": {
            "description": "Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field.",
            "type": "boolean"
          },
          "deleted": {
            "description": "Indicates that this revision deletes the OS policy assignment.",
            "type": "boolean"
          },
          "description": {
            "description": "OS policy assignment description. Length of the description is limited to 1024 characters.",
            "type": "string"
          },
          "etag": {
            "description": "The etag for this OS policy assignment. If this is provided on update, it must match the server's etag.",
            "type": "string"
          },
          "instanceFilter": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentInstanceFilterResponse",
            "description": "Filter to select VMs."
          },
          "name": {
            "description": "Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment.",
            "type": "string"
          },
          "osPolicies": {
            "description": "List of OS policies to be applied to the VMs.",
            "items": {
              "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyResponse"
            },
            "type": "array"
          },
          "reconciling": {
            "description": "Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING",
            "type": "boolean"
          },
          "revisionCreateTime": {
            "description": "The timestamp that the revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment",
            "type": "string"
          },
          "rollout": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OSPolicyAssignmentRolloutResponse",
            "description": "Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted."
          },
          "rolloutState": {
            "description": "OS policy assignment rollout state",
            "type": "string"
          },
          "uid": {
            "description": "Server generated unique id for the OS policy assignment resource.",
            "type": "string"
          }
        },
        "required": [
          "baseline",
          "deleted",
          "description",
          "etag",
          "instanceFilter",
          "name",
          "osPolicies",
          "reconciling",
          "revisionCreateTime",
          "revisionId",
          "rollout",
          "rolloutState",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:osconfig/v1:getPatchDeployment": {
      "description": "Get an OS Config patch deployment.",
      "inputs": {
        "properties": {
          "patchDeploymentId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "patchDeploymentId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time the patch deployment was created. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the patch deployment. Length of the description is limited to 1024 characters.",
            "type": "string"
          },
          "duration": {
            "description": "Optional. Duration of the patch. After the duration ends, the patch times out.",
            "type": "string"
          },
          "instanceFilter": {
            "$ref": "#/types/google-native:osconfig%2Fv1:PatchInstanceFilterResponse",
            "description": "VM instances to patch."
          },
          "lastExecuteTime": {
            "description": "The last time a patch job was started by this deployment. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          },
          "name": {
            "description": "Unique name for the patch deployment resource in a project. The patch deployment name is in the form: `projects/{project_id}/patchDeployments/{patch_deployment_id}`. This field is ignored when you create a new patch deployment.",
            "type": "string"
          },
          "oneTimeSchedule": {
            "$ref": "#/types/google-native:osconfig%2Fv1:OneTimeScheduleResponse",
            "description": "Schedule a one-time execution."
          },
          "patchConfig": {
            "$ref": "#/types/google-native:osconfig%2Fv1:PatchConfigResponse",
            "description": "Optional. Patch configuration that is applied."
          },
          "recurringSchedule": {
            "$ref": "#/types/google-native:osconfig%2Fv1:RecurringScheduleResponse",
            "description": "Schedule recurring executions."
          },
          "rollout": {
            "$ref": "#/types/google-native:osconfig%2Fv1:PatchRolloutResponse",
            "description": "Optional. Rollout strategy of the patch job."
          },
          "state": {
            "description": "Current state of the patch deployment.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time the patch deployment was last updated. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "duration",
          "instanceFilter",
          "lastExecuteTime",
          "name",
          "oneTimeSchedule",
          "patchConfig",
          "recurringSchedule",
          "rollout",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:osconfig/v1alpha:getOsPolicyAssignment": {
      "description": "Retrieve an existing OS policy assignment. This method always returns the latest revision. In order to retrieve a previous revision of the assignment, also provide the revision ID in the `name` parameter.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "osPolicyAssignmentId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "osPolicyAssignmentId"
        ]
      },
      "outputs": {
        "properties": {
          "baseline": {
            "description": "Indicates that this revision has been successfully rolled out in this zone and new VMs will be assigned OS policies from this revision. For a given OS policy assignment, there is only one revision with a value of `true` for this field.",
            "type": "boolean"
          },
          "deleted": {
            "description": "Indicates that this revision deletes the OS policy assignment.",
            "type": "boolean"
          },
          "description": {
            "description": "OS policy assignment description. Length of the description is limited to 1024 characters.",
            "type": "string"
          },
          "etag": {
            "description": "The etag for this OS policy assignment. If this is provided on update, it must match the server's etag.",
            "type": "string"
          },
          "instanceFilter": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentInstanceFilterResponse",
            "description": "Filter to select VMs."
          },
          "name": {
            "description": "Resource name. Format: `projects/{project_number}/locations/{location}/osPolicyAssignments/{os_policy_assignment_id}` This field is ignored when you create an OS policy assignment.",
            "type": "string"
          },
          "osPolicies": {
            "description": "List of OS policies to be applied to the VMs.",
            "items": {
              "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyResponse"
            },
            "type": "array"
          },
          "reconciling": {
            "description": "Indicates that reconciliation is in progress for the revision. This value is `true` when the `rollout_state` is one of: * IN_PROGRESS * CANCELLING",
            "type": "boolean"
          },
          "revisionCreateTime": {
            "description": "The timestamp that the revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "The assignment revision ID A new revision is committed whenever a rollout is triggered for a OS policy assignment",
            "type": "string"
          },
          "rollout": {
            "$ref": "#/types/google-native:osconfig%2Fv1alpha:OSPolicyAssignmentRolloutResponse",
            "description": "Rollout to deploy the OS policy assignment. A rollout is triggered in the following situations: 1) OSPolicyAssignment is created. 2) OSPolicyAssignment is updated and the update contains changes to one of the following fields: - instance_filter - os_policies 3) OSPolicyAssignment is deleted."
          },
          "rolloutState": {
            "description": "OS policy assignment rollout state",
            "type": "string"
          },
          "uid": {
            "description": "Server generated unique id for the OS policy assignment resource.",
            "type": "string"
          }
        },
        "required": [
          "baseline",
          "deleted",
          "description",
          "etag",
          "instanceFilter",
          "name",
          "osPolicies",
          "reconciling",
          "revisionCreateTime",
          "revisionId",
          "rollout",
          "rolloutState",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:osconfig/v1beta:getGuestPolicy": {
      "description": "Get an OS Config guest policy.",
      "inputs": {
        "properties": {
          "guestPolicyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "guestPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "assignment": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:AssignmentResponse",
            "description": "Specifies the VM instances that are assigned to this policy. This allows you to target sets or groups of VM instances by different parameters such as labels, names, OS, or zones. If left empty, all VM instances underneath this policy are targeted. At the same level in the resource hierarchy (that is within a project), the service prevents the creation of multiple policies that conflict with each other. For more information, see how the service [handles assignment conflicts](/compute/docs/os-config-management/create-guest-policy#handle-conflicts)."
          },
          "createTime": {
            "description": "Time this guest policy was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the guest policy. Length of the description is limited to 1024 characters.",
            "type": "string"
          },
          "etag": {
            "description": "The etag for this guest policy. If this is provided on update, it must match the server's etag.",
            "type": "string"
          },
          "name": {
            "description": "Unique name of the resource in this project using one of the following forms: `projects/{project_number}/guestPolicies/{guest_policy_id}`.",
            "type": "string"
          },
          "packageRepositories": {
            "description": "A list of package repositories to configure on the VM instance. This is done before any other configs are applied so they can use these repos. Package repositories are only configured if the corresponding package manager(s) are available.",
            "items": {
              "$ref": "#/types/google-native:osconfig%2Fv1beta:PackageRepositoryResponse"
            },
            "type": "array"
          },
          "packages": {
            "description": "The software packages to be managed by this policy.",
            "items": {
              "$ref": "#/types/google-native:osconfig%2Fv1beta:PackageResponse"
            },
            "type": "array"
          },
          "recipes": {
            "description": "A list of Recipes to install on the VM instance.",
            "items": {
              "$ref": "#/types/google-native:osconfig%2Fv1beta:SoftwareRecipeResponse"
            },
            "type": "array"
          },
          "updateTime": {
            "description": "Last time this guest policy was updated.",
            "type": "string"
          }
        },
        "required": [
          "assignment",
          "createTime",
          "description",
          "etag",
          "name",
          "packageRepositories",
          "packages",
          "recipes",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:osconfig/v1beta:getPatchDeployment": {
      "description": "Get an OS Config patch deployment.",
      "inputs": {
        "properties": {
          "patchDeploymentId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "patchDeploymentId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Time the patch deployment was created. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          },
          "description": {
            "description": "Optional. Description of the patch deployment. Length of the description is limited to 1024 characters.",
            "type": "string"
          },
          "duration": {
            "description": "Optional. Duration of the patch. After the duration ends, the patch times out.",
            "type": "string"
          },
          "instanceFilter": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchInstanceFilterResponse",
            "description": "VM instances to patch."
          },
          "lastExecuteTime": {
            "description": "The last time a patch job was started by this deployment. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          },
          "name": {
            "description": "Unique name for the patch deployment resource in a project. The patch deployment name is in the form: `projects/{project_id}/patchDeployments/{patch_deployment_id}`. This field is ignored when you create a new patch deployment.",
            "type": "string"
          },
          "oneTimeSchedule": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:OneTimeScheduleResponse",
            "description": "Schedule a one-time execution."
          },
          "patchConfig": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchConfigResponse",
            "description": "Optional. Patch configuration that is applied."
          },
          "recurringSchedule": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:RecurringScheduleResponse",
            "description": "Schedule recurring executions."
          },
          "rollout": {
            "$ref": "#/types/google-native:osconfig%2Fv1beta:PatchRolloutResponse",
            "description": "Optional. Rollout strategy of the patch job."
          },
          "state": {
            "description": "Current state of the patch deployment.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time the patch deployment was last updated. Timestamp is in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "duration",
          "instanceFilter",
          "lastExecuteTime",
          "name",
          "oneTimeSchedule",
          "patchConfig",
          "recurringSchedule",
          "rollout",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:oslogin/v1:getSshPublicKey": {
      "description": "Retrieves an SSH public key.",
      "inputs": {
        "properties": {
          "sshPublicKeyId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sshPublicKeyId",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "expirationTimeUsec": {
            "description": "An expiration time in microseconds since epoch.",
            "type": "string"
          },
          "fingerprint": {
            "description": "The SHA-256 fingerprint of the SSH public key.",
            "type": "string"
          },
          "key": {
            "description": "Public key text in SSH format, defined by RFC4253 section 6.6.",
            "type": "string"
          },
          "name": {
            "description": "The canonical resource name.",
            "type": "string"
          }
        },
        "required": [
          "expirationTimeUsec",
          "fingerprint",
          "key",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:oslogin/v1alpha:getSshPublicKey": {
      "description": "Retrieves an SSH public key.",
      "inputs": {
        "properties": {
          "sshPublicKeyId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sshPublicKeyId",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "expirationTimeUsec": {
            "description": "An expiration time in microseconds since epoch.",
            "type": "string"
          },
          "fingerprint": {
            "description": "The SHA-256 fingerprint of the SSH public key.",
            "type": "string"
          },
          "key": {
            "description": "Public key text in SSH format, defined by RFC4253 section 6.6.",
            "type": "string"
          },
          "name": {
            "description": "The canonical resource name.",
            "type": "string"
          }
        },
        "required": [
          "expirationTimeUsec",
          "fingerprint",
          "key",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:oslogin/v1beta:getSshPublicKey": {
      "description": "Retrieves an SSH public key.",
      "inputs": {
        "properties": {
          "sshPublicKeyId": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "sshPublicKeyId",
          "userId"
        ]
      },
      "outputs": {
        "properties": {
          "expirationTimeUsec": {
            "description": "An expiration time in microseconds since epoch.",
            "type": "string"
          },
          "fingerprint": {
            "description": "The SHA-256 fingerprint of the SSH public key.",
            "type": "string"
          },
          "key": {
            "description": "Public key text in SSH format, defined by RFC4253 section 6.6.",
            "type": "string"
          },
          "name": {
            "description": "The canonical resource name.",
            "type": "string"
          }
        },
        "required": [
          "expirationTimeUsec",
          "fingerprint",
          "key",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1:getFolderReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId",
          "location",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1:getOrganizationReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1:getReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1:GoogleCloudPolicysimulatorV1ReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1alpha:getFolderReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId",
          "location",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1alpha:getOrganizationReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1alpha:getReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1alpha:GoogleCloudPolicysimulatorV1alphaReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1beta1:getFolderReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId",
          "location",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1beta1:getOrganizationReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1beta1:getReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta1:GoogleCloudPolicysimulatorV1beta1ReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1beta:getFolderReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId",
          "location",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1beta:getOrganizationReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "organizationId",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:policysimulator/v1beta:getReplay": {
      "description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "replayId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "replayId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayConfigResponse",
            "description": "The configuration used for the `Replay`."
          },
          "name": {
            "description": "The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
            "type": "string"
          },
          "resultsSummary": {
            "$ref": "#/types/google-native:policysimulator%2Fv1beta:GoogleCloudPolicysimulatorV1betaReplayResultsSummaryResponse",
            "description": "Summary statistics about the replayed log entries."
          },
          "state": {
            "description": "The current state of the `Replay`.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "name",
          "resultsSummary",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1:getCaPool": {
      "description": "Returns a CaPool.",
      "inputs": {
        "properties": {
          "caPoolId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "caPoolId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "issuancePolicy": {
            "$ref": "#/types/google-native:privateca%2Fv1:IssuancePolicyResponse",
            "description": "Optional. The IssuancePolicy to control how Certificates will be issued from this CaPool."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels with user-defined metadata.",
            "type": "object"
          },
          "name": {
            "description": "The resource name for this CaPool in the format `projects/*/locations/*/caPools/*`.",
            "type": "string"
          },
          "publishingOptions": {
            "$ref": "#/types/google-native:privateca%2Fv1:PublishingOptionsResponse",
            "description": "Optional. The PublishingOptions to follow when issuing Certificates from any CertificateAuthority in this CaPool."
          },
          "tier": {
            "description": "Immutable. The Tier of this CaPool.",
            "type": "string"
          }
        },
        "required": [
          "issuancePolicy",
          "labels",
          "name",
          "publishingOptions",
          "tier"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1:getCaPoolCertificateAuthorityCertificateRevocationListIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "caPoolId": {
            "type": "string"
          },
          "certificateAuthorityId": {
            "type": "string"
          },
          "certificateRevocationListId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "caPoolId",
          "certificateAuthorityId",
          "certificateRevocationListId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1:getCaPoolIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "caPoolId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "caPoolId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1:getCertificate": {
      "description": "Returns a Certificate.",
      "inputs": {
        "properties": {
          "caPoolId": {
            "type": "string"
          },
          "certificateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "caPoolId",
          "certificateId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "certificateDescription": {
            "$ref": "#/types/google-native:privateca%2Fv1:CertificateDescriptionResponse",
            "description": "A structured description of the issued X.509 certificate."
          },
          "certificateTemplate": {
            "description": "Immutable. The resource name for a CertificateTemplate used to issue this certificate, in the format `projects/*/locations/*/certificateTemplates/*`. If this is specified, the caller must have the necessary permission to use this template. If this is omitted, no template will be used. This template must be in the same location as the Certificate.",
            "type": "string"
          },
          "config": {
            "$ref": "#/types/google-native:privateca%2Fv1:CertificateConfigResponse",
            "description": "Immutable. A description of the certificate and key that does not require X.509 or ASN.1."
          },
          "createTime": {
            "description": "The time at which this Certificate was created.",
            "type": "string"
          },
          "issuerCertificateAuthority": {
            "description": "The resource name of the issuing CertificateAuthority in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels with user-defined metadata.",
            "type": "object"
          },
          "lifetime": {
            "description": "Immutable. The desired lifetime of a certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate. Note that the lifetime may be truncated if it would extend past the life of any certificate authority in the issuing chain.",
            "type": "string"
          },
          "name": {
            "description": "The resource name for this Certificate in the format `projects/*/locations/*/caPools/*/certificates/*`.",
            "type": "string"
          },
          "pemCertificate": {
            "description": "The pem-encoded, signed X.509 certificate.",
            "type": "string"
          },
          "pemCertificateChain": {
            "description": "The chain that may be used to verify the X.509 certificate. Expected to be in issuer-to-root order according to RFC 5246.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pemCsr": {
            "description": "Immutable. A pem-encoded X.509 certificate signing request (CSR).",
            "type": "string"
          },
          "revocationDetails": {
            "$ref": "#/types/google-native:privateca%2Fv1:RevocationDetailsResponse",
            "description": "Details regarding the revocation of this Certificate. This Certificate is considered revoked if and only if this field is present."
          },
          "subjectMode": {
            "description": "Immutable. Specifies how the Certificate's identity fields are to be decided. If this is omitted, the `DEFAULT` subject mode will be used.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which this Certificate was updated.",
            "type": "string"
          }
        },
        "required": [
          "certificateDescription",
          "certificateTemplate",
          "config",
          "createTime",
          "issuerCertificateAuthority",
          "labels",
          "lifetime",
          "name",
          "pemCertificate",
          "pemCertificateChain",
          "pemCsr",
          "revocationDetails",
          "subjectMode",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1:getCertificateAuthority": {
      "description": "Returns a CertificateAuthority.",
      "inputs": {
        "properties": {
          "caPoolId": {
            "type": "string"
          },
          "certificateAuthorityId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "caPoolId",
          "certificateAuthorityId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "accessUrls": {
            "$ref": "#/types/google-native:privateca%2Fv1:AccessUrlsResponse",
            "description": "URLs for accessing content published by this CA, such as the CA certificate and CRLs."
          },
          "caCertificateDescriptions": {
            "description": "A structured description of this CertificateAuthority's CA certificate and its issuers. Ordered as self-to-root.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1:CertificateDescriptionResponse"
            },
            "type": "array"
          },
          "config": {
            "$ref": "#/types/google-native:privateca%2Fv1:CertificateConfigResponse",
            "description": "Immutable. The config used to create a self-signed X.509 certificate or CSR."
          },
          "createTime": {
            "description": "The time at which this CertificateAuthority was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The time at which this CertificateAuthority was soft deleted, if it is in the DELETED state.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time at which this CertificateAuthority will be permanently purged, if it is in the DELETED state.",
            "type": "string"
          },
          "gcsBucket": {
            "description": "Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created.",
            "type": "string"
          },
          "keySpec": {
            "$ref": "#/types/google-native:privateca%2Fv1:KeyVersionSpecResponse",
            "description": "Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels with user-defined metadata.",
            "type": "object"
          },
          "lifetime": {
            "description": "Immutable. The desired lifetime of the CA certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate.",
            "type": "string"
          },
          "name": {
            "description": "The resource name for this CertificateAuthority in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.",
            "type": "string"
          },
          "pemCaCertificates": {
            "description": "This CertificateAuthority's certificate chain, including the current CertificateAuthority's certificate. Ordered such that the root issuer is the final element (consistent with RFC 5246). For a self-signed CA, this will only list the current CertificateAuthority's certificate.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The State for this CertificateAuthority.",
            "type": "string"
          },
          "subordinateConfig": {
            "$ref": "#/types/google-native:privateca%2Fv1:SubordinateConfigResponse",
            "description": "Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate."
          },
          "tier": {
            "description": "The CaPool.Tier of the CaPool that includes this CertificateAuthority.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The Type of this CertificateAuthority.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which this CertificateAuthority was last updated.",
            "type": "string"
          }
        },
        "required": [
          "accessUrls",
          "caCertificateDescriptions",
          "config",
          "createTime",
          "deleteTime",
          "expireTime",
          "gcsBucket",
          "keySpec",
          "labels",
          "lifetime",
          "name",
          "pemCaCertificates",
          "state",
          "subordinateConfig",
          "tier",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1:getCertificateTemplate": {
      "description": "Returns a CertificateTemplate.",
      "inputs": {
        "properties": {
          "certificateTemplateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateTemplateId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which this CertificateTemplate was created.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A human-readable description of scenarios this template is intended for.",
            "type": "string"
          },
          "identityConstraints": {
            "$ref": "#/types/google-native:privateca%2Fv1:CertificateIdentityConstraintsResponse",
            "description": "Optional. Describes constraints on identities that may be appear in Certificates issued using this template. If this is omitted, then this template will not add restrictions on a certificate's identity."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Labels with user-defined metadata.",
            "type": "object"
          },
          "maximumLifetime": {
            "description": "Optional. The maximum lifetime allowed for issued Certificates that use this template. If the issuing CaPool's IssuancePolicy specifies a maximum_lifetime the minimum of the two durations will be the maximum lifetime for issued Certificates. Note that if the issuing CertificateAuthority expires before a Certificate's requested maximum_lifetime, the effective lifetime will be explicitly truncated to match it.",
            "type": "string"
          },
          "name": {
            "description": "The resource name for this CertificateTemplate in the format `projects/*/locations/*/certificateTemplates/*`.",
            "type": "string"
          },
          "passthroughExtensions": {
            "$ref": "#/types/google-native:privateca%2Fv1:CertificateExtensionConstraintsResponse",
            "description": "Optional. Describes the set of X.509 extensions that may appear in a Certificate issued using this CertificateTemplate. If a certificate request sets extensions that don't appear in the passthrough_extensions, those extensions will be dropped. If the issuing CaPool's IssuancePolicy defines baseline_values that don't appear here, the certificate issuance request will fail. If this is omitted, then this template will not add restrictions on a certificate's X.509 extensions. These constraints do not apply to X.509 extensions set in this CertificateTemplate's predefined_values."
          },
          "predefinedValues": {
            "$ref": "#/types/google-native:privateca%2Fv1:X509ParametersResponse",
            "description": "Optional. A set of X.509 values that will be applied to all issued certificates that use this template. If the certificate request includes conflicting values for the same properties, they will be overwritten by the values defined here. If the issuing CaPool's IssuancePolicy defines conflicting baseline_values for the same properties, the certificate issuance request will fail."
          },
          "updateTime": {
            "description": "The time at which this CertificateTemplate was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "identityConstraints",
          "labels",
          "maximumLifetime",
          "name",
          "passthroughExtensions",
          "predefinedValues",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1:getCertificateTemplateIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "certificateTemplateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateTemplateId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1beta1:getCertificateAuthorityCertificateRevocationListIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "certificateAuthorityId": {
            "type": "string"
          },
          "certificateRevocationListId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateAuthorityId",
          "certificateRevocationListId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1beta1:getCertificateAuthorityIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "certificateAuthorityId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "certificateAuthorityId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:privateca/v1beta1:getReusableConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "reusableConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "reusableConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:privateca%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1:getSchema": {
      "description": "Gets a schema.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "schemaId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "schemaId"
        ]
      },
      "outputs": {
        "properties": {
          "definition": {
            "description": "The definition of the schema. This should contain a string representing the full definition of the schema that is a valid schema definition of the type specified in `type`.",
            "type": "string"
          },
          "name": {
            "description": "Name of the schema. Format is `projects/{project}/schemas/{schema}`.",
            "type": "string"
          },
          "revisionCreateTime": {
            "description": "The timestamp that the revision was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "Immutable. The revision ID of the schema.",
            "type": "string"
          },
          "type": {
            "description": "The type of the schema definition.",
            "type": "string"
          }
        },
        "required": [
          "definition",
          "name",
          "revisionCreateTime",
          "revisionId",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1:getSchemaIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "schemaId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "schemaId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:pubsub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1:getSnapshot": {
      "description": "Gets the configuration details of a snapshot. Snapshots are used in [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "snapshotId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "snapshotId"
        ]
      },
      "outputs": {
        "properties": {
          "expireTime": {
            "description": "Optional. The snapshot is guaranteed to exist up until this time. A newly-created snapshot expires no later than 7 days from the time of its creation. Its exact lifetime is determined at creation by the existing backlog in the source subscription. Specifically, the lifetime of the snapshot is `7 days - (age of oldest unacked message in the subscription)`. For example, consider a subscription whose oldest unacked message is 3 days old. If a snapshot is created from this subscription, the snapshot -- which will always capture this 3-day-old backlog as long as the snapshot exists -- will expire in 4 days. The service will refuse to create a snapshot that would expire in less than 1 hour after creation.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. See [Creating and managing labels] (https://cloud.google.com/pubsub/docs/labels).",
            "type": "object"
          },
          "name": {
            "description": "Optional. The name of the snapshot.",
            "type": "string"
          },
          "topic": {
            "description": "Optional. The name of the topic from which this snapshot is retaining messages.",
            "type": "string"
          }
        },
        "required": [
          "expireTime",
          "labels",
          "name",
          "topic"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1:getSnapshotIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "snapshotId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "snapshotId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:pubsub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1:getSubscription": {
      "description": "Gets the configuration details of a subscription.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "ackDeadlineSeconds": {
            "description": "Optional. The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be _outstanding_. During that time period, the message will not be redelivered (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using non-streaming pull or send the `ack_id` in a `StreamingModifyAckDeadlineRequest` if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used. For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.",
            "type": "integer"
          },
          "bigqueryConfig": {
            "$ref": "#/types/google-native:pubsub%2Fv1:BigQueryConfigResponse",
            "description": "Optional. If delivery to BigQuery is used with this subscription, this field is used to configure it."
          },
          "cloudStorageConfig": {
            "$ref": "#/types/google-native:pubsub%2Fv1:CloudStorageConfigResponse",
            "description": "Optional. If delivery to Google Cloud Storage is used with this subscription, this field is used to configure it."
          },
          "deadLetterPolicy": {
            "$ref": "#/types/google-native:pubsub%2Fv1:DeadLetterPolicyResponse",
            "description": "Optional. A policy that specifies the conditions for dead lettering messages in this subscription. If dead_letter_policy is not set, dead lettering is disabled. The Pub/Sub service account associated with this subscriptions's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Acknowledge() messages on this subscription."
          },
          "detached": {
            "description": "Optional. Indicates whether the subscription is detached from its topic. Detached subscriptions don't receive messages from their topic and don't retain any backlog. `Pull` and `StreamingPull` requests will return FAILED_PRECONDITION. If the subscription is a push subscription, pushes to the endpoint will not be made.",
            "type": "boolean"
          },
          "enableExactlyOnceDelivery": {
            "description": "Optional. If true, Pub/Sub provides the following guarantees for the delivery of a message with a given value of `message_id` on this subscription: * The message sent to a subscriber is guaranteed not to be resent before the message's acknowledgement deadline expires. * An acknowledged message will not be resent to a subscriber. Note that subscribers may still receive multiple copies of a message when `enable_exactly_once_delivery` is true if the message was published multiple times by a publisher client. These copies are considered distinct by Pub/Sub and have distinct `message_id` values.",
            "type": "boolean"
          },
          "enableMessageOrdering": {
            "description": "Optional. If true, messages published with the same `ordering_key` in `PubsubMessage` will be delivered to the subscribers in the order in which they are received by the Pub/Sub system. Otherwise, they may be delivered in any order.",
            "type": "boolean"
          },
          "expirationPolicy": {
            "$ref": "#/types/google-native:pubsub%2Fv1:ExpirationPolicyResponse",
            "description": "Optional. A policy that specifies the conditions for this subscription's expiration. A subscription is considered active as long as any connected subscriber is successfully consuming messages from the subscription or is issuing operations on the subscription. If `expiration_policy` is not set, a *default policy* with `ttl` of 31 days will be used. The minimum allowed value for `expiration_policy.ttl` is 1 day. If `expiration_policy` is set, but `expiration_policy.ttl` is not set, the subscription never expires."
          },
          "filter": {
            "description": "Optional. An expression written in the Pub/Sub [filter language](https://cloud.google.com/pubsub/docs/filtering). If non-empty, then only `PubsubMessage`s whose `attributes` field matches the filter are delivered on this subscription. If empty, then no messages are filtered out.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. See [Creating and managing labels](https://cloud.google.com/pubsub/docs/labels).",
            "type": "object"
          },
          "messageRetentionDuration": {
            "description": "Optional. How long to retain unacknowledged messages in the subscription's backlog, from the moment a message is published. If `retain_acked_messages` is true, then this also configures the retention of acknowledged messages, and thus configures how far back in time a `Seek` can be done. Defaults to 7 days. Cannot be more than 7 days or less than 10 minutes.",
            "type": "string"
          },
          "name": {
            "description": "The name of the subscription. It must have the format `\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`.",
            "type": "string"
          },
          "pushConfig": {
            "$ref": "#/types/google-native:pubsub%2Fv1:PushConfigResponse",
            "description": "Optional. If push delivery is used with this subscription, this field is used to configure it."
          },
          "retainAckedMessages": {
            "description": "Optional. Indicates whether to retain acknowledged messages. If true, then messages are not expunged from the subscription's backlog, even if they are acknowledged, until they fall out of the `message_retention_duration` window. This must be true if you would like to [`Seek` to a timestamp] (https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) in the past to replay previously-acknowledged messages.",
            "type": "boolean"
          },
          "retryPolicy": {
            "$ref": "#/types/google-native:pubsub%2Fv1:RetryPolicyResponse",
            "description": "Optional. A policy that specifies how Pub/Sub retries message delivery for this subscription. If not set, the default retry policy is applied. This generally implies that messages will be retried as soon as possible for healthy subscribers. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message."
          },
          "state": {
            "description": "An output-only field indicating whether or not the subscription can receive messages.",
            "type": "string"
          },
          "topic": {
            "description": "The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`. The value of this field will be `_deleted-topic_` if the topic has been deleted.",
            "type": "string"
          },
          "topicMessageRetentionDuration": {
            "description": "Indicates the minimum duration for which a message is retained after it is published to the subscription's topic. If this field is set, messages published to the subscription's topic in the last `topic_message_retention_duration` are always available to subscribers. See the `message_retention_duration` field in `Topic`. This field is set only in responses from the server; it is ignored if it is set in any requests.",
            "type": "string"
          }
        },
        "required": [
          "ackDeadlineSeconds",
          "bigqueryConfig",
          "cloudStorageConfig",
          "deadLetterPolicy",
          "detached",
          "enableExactlyOnceDelivery",
          "enableMessageOrdering",
          "expirationPolicy",
          "filter",
          "labels",
          "messageRetentionDuration",
          "name",
          "pushConfig",
          "retainAckedMessages",
          "retryPolicy",
          "state",
          "topic",
          "topicMessageRetentionDuration"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1:getSubscriptionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:pubsub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1:getTopic": {
      "description": "Gets the configuration of a topic.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "topicId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "topicId"
        ]
      },
      "outputs": {
        "properties": {
          "kmsKeyName": {
            "description": "Optional. The resource name of the Cloud KMS CryptoKey to be used to protect access to messages published on this topic. The expected format is `projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. See [Creating and managing labels] (https://cloud.google.com/pubsub/docs/labels).",
            "type": "object"
          },
          "messageRetentionDuration": {
            "description": "Optional. Indicates the minimum duration to retain a message after it is published to the topic. If this field is set, messages published to the topic in the last `message_retention_duration` are always available to subscribers. For instance, it allows any attached subscription to [seek to a timestamp](https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) that is up to `message_retention_duration` in the past. If this field is not set, message retention is controlled by settings on individual subscriptions. Cannot be more than 31 days or less than 10 minutes.",
            "type": "string"
          },
          "messageStoragePolicy": {
            "$ref": "#/types/google-native:pubsub%2Fv1:MessageStoragePolicyResponse",
            "description": "Optional. Policy constraining the set of Google Cloud Platform regions where messages published to the topic may be stored. If not present, then no constraints are in effect."
          },
          "name": {
            "description": "The name of the topic. It must have the format `\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Optional. Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests.",
            "type": "boolean"
          },
          "schemaSettings": {
            "$ref": "#/types/google-native:pubsub%2Fv1:SchemaSettingsResponse",
            "description": "Optional. Settings for validating messages published against a schema."
          }
        },
        "required": [
          "kmsKeyName",
          "labels",
          "messageRetentionDuration",
          "messageStoragePolicy",
          "name",
          "satisfiesPzs",
          "schemaSettings"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1:getTopicIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "topicId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "topicId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:pubsub%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1beta1a:getSubscription": {
      "description": "Gets the configuration details of a subscription.",
      "inputs": {
        "properties": {
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "ackDeadlineSeconds": {
            "description": "For either push or pull delivery, the value is the maximum time after a subscriber receives a message before the subscriber should acknowledge or Nack the message. If the Ack deadline for a message passes without an Ack or a Nack, the Pub/Sub system will eventually redeliver the message. If a subscriber acknowledges after the deadline, the Pub/Sub system may accept the Ack, but it is possible that the message has been already delivered again. Multiple Acks to the message are allowed and will succeed. For push delivery, this value is used to set the request timeout for the call to the push endpoint. For pull delivery, this value is used as the initial value for the Ack deadline. It may be overridden for each message using its corresponding ack_id with ModifyAckDeadline. While a message is outstanding (i.e. it has been delivered to a pull subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub system will not deliver that message to another pull subscriber (on a best-effort basis).",
            "type": "integer"
          },
          "name": {
            "description": "Name of the subscription.",
            "type": "string"
          },
          "pushConfig": {
            "$ref": "#/types/google-native:pubsub%2Fv1beta1a:PushConfigResponse",
            "description": "If push delivery is used with this subscription, this field is used to configure it."
          },
          "topic": {
            "description": "The name of the topic from which this subscription is receiving messages.",
            "type": "string"
          }
        },
        "required": [
          "ackDeadlineSeconds",
          "name",
          "pushConfig",
          "topic"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1beta1a:getTopic": {
      "description": "Gets the configuration of a topic. Since the topic only has the name attribute, this method is only useful to check the existence of a topic. If other attributes are added in the future, they will be returned here.",
      "inputs": {
        "properties": {
          "topicId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "topicId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "Name of the topic.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1beta2:getSubscription": {
      "description": "Gets the configuration details of a subscription.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "ackDeadlineSeconds": {
            "description": "This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.",
            "type": "integer"
          },
          "name": {
            "description": "The name of the subscription. It must have the format `\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`.",
            "type": "string"
          },
          "pushConfig": {
            "$ref": "#/types/google-native:pubsub%2Fv1beta2:PushConfigResponse",
            "description": "If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods."
          },
          "topic": {
            "description": "The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.",
            "type": "string"
          }
        },
        "required": [
          "ackDeadlineSeconds",
          "name",
          "pushConfig",
          "topic"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1beta2:getSubscriptionIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:pubsub%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1beta2:getTopic": {
      "description": "Gets the configuration of a topic.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "topicId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "topicId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "The name of the topic. It must have the format `\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `\"goog\"`.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:pubsub/v1beta2:getTopicIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "topicId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "topicId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:pubsub%2Fv1beta2:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:pubsublite/v1:getReservation": {
      "description": "Returns the reservation configuration.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "reservationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "reservationId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "The name of the reservation. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}",
            "type": "string"
          },
          "throughputCapacity": {
            "description": "The reserved throughput capacity. Every unit of throughput capacity is equivalent to 1 MiB/s of published messages or 2 MiB/s of subscribed messages. Any topics which are declared as using capacity from a Reservation will consume resources from this reservation instead of being charged individually.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "throughputCapacity"
        ],
        "type": "object"
      }
    },
    "google-native:pubsublite/v1:getSubscription": {
      "description": "Returns the subscription configuration.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "subscriptionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "subscriptionId"
        ]
      },
      "outputs": {
        "properties": {
          "deliveryConfig": {
            "$ref": "#/types/google-native:pubsublite%2Fv1:DeliveryConfigResponse",
            "description": "The settings for this subscription's message delivery."
          },
          "exportConfig": {
            "$ref": "#/types/google-native:pubsublite%2Fv1:ExportConfigResponse",
            "description": "If present, messages are automatically written from the Pub/Sub Lite topic associated with this subscription to a destination."
          },
          "name": {
            "description": "The name of the subscription. Structured like: projects/{project_number}/locations/{location}/subscriptions/{subscription_id}",
            "type": "string"
          },
          "topic": {
            "description": "The name of the topic this subscription is attached to. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}",
            "type": "string"
          }
        },
        "required": [
          "deliveryConfig",
          "exportConfig",
          "name",
          "topic"
        ],
        "type": "object"
      }
    },
    "google-native:pubsublite/v1:getTopic": {
      "description": "Returns the topic configuration.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "topicId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "topicId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "The name of the topic. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}",
            "type": "string"
          },
          "partitionConfig": {
            "$ref": "#/types/google-native:pubsublite%2Fv1:PartitionConfigResponse",
            "description": "The settings for this topic's partitions."
          },
          "reservationConfig": {
            "$ref": "#/types/google-native:pubsublite%2Fv1:ReservationConfigResponse",
            "description": "The settings for this topic's Reservation usage."
          },
          "retentionConfig": {
            "$ref": "#/types/google-native:pubsublite%2Fv1:RetentionConfigResponse",
            "description": "The settings for this topic's message retention."
          }
        },
        "required": [
          "name",
          "partitionConfig",
          "reservationConfig",
          "retentionConfig"
        ],
        "type": "object"
      }
    },
    "google-native:rapidmigrationassessment/v1:getAnnotation": {
      "description": "Gets details of a single Annotation.",
      "inputs": {
        "properties": {
          "annotationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "annotationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Create time stamp.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "name of resource.",
            "type": "string"
          },
          "type": {
            "description": "Type of an annotation.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "labels",
          "name",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:rapidmigrationassessment/v1:getCollector": {
      "description": "Gets details of a single Collector.",
      "inputs": {
        "properties": {
          "collectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "collectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "bucket": {
            "description": "Store cloud storage bucket name (which is a guid) created with this Collector.",
            "type": "string"
          },
          "clientVersion": {
            "description": "Client version.",
            "type": "string"
          },
          "collectionDays": {
            "description": "How many days to collect data.",
            "type": "integer"
          },
          "createTime": {
            "description": "Create time stamp.",
            "type": "string"
          },
          "description": {
            "description": "User specified description of the Collector.",
            "type": "string"
          },
          "displayName": {
            "description": "User specified name of the Collector.",
            "type": "string"
          },
          "eulaUri": {
            "description": "Uri for EULA (End User License Agreement) from customer.",
            "type": "string"
          },
          "expectedAssetCount": {
            "description": "User specified expected asset count.",
            "type": "string"
          },
          "guestOsScan": {
            "$ref": "#/types/google-native:rapidmigrationassessment%2Fv1:GuestOsScanResponse",
            "description": "Reference to MC Source Guest Os Scan."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs.",
            "type": "object"
          },
          "name": {
            "description": "name of resource.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "Service Account email used to ingest data to this Collector.",
            "type": "string"
          },
          "state": {
            "description": "State of the Collector.",
            "type": "string"
          },
          "updateTime": {
            "description": "Update time stamp.",
            "type": "string"
          },
          "vsphereScan": {
            "$ref": "#/types/google-native:rapidmigrationassessment%2Fv1:VSphereScanResponse",
            "description": "Reference to MC Source vsphere_scan."
          }
        },
        "required": [
          "bucket",
          "clientVersion",
          "collectionDays",
          "createTime",
          "description",
          "displayName",
          "eulaUri",
          "expectedAssetCount",
          "guestOsScan",
          "labels",
          "name",
          "serviceAccount",
          "state",
          "updateTime",
          "vsphereScan"
        ],
        "type": "object"
      }
    },
    "google-native:recaptchaenterprise/v1:getFirewallpolicy": {
      "description": "Returns the specified firewall policy.",
      "inputs": {
        "properties": {
          "firewallpolicyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "firewallpolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "actions": {
            "description": "Optional. The actions that the caller should take regarding user access. There should be at most one terminal action. A terminal action is any action that forces a response, such as `AllowAction`, `BlockAction` or `SubstituteAction`. Zero or more non-terminal actions such as `SetHeader` might be specified. A single policy can contain up to 16 actions.",
            "items": {
              "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1FirewallActionResponse"
            },
            "type": "array"
          },
          "condition": {
            "description": "Optional. A CEL (Common Expression Language) conditional expression that specifies if this policy applies to an incoming user request. If this condition evaluates to true and the requested path matched the path pattern, the associated actions should be executed by the caller. The condition string is checked for CEL syntax correctness on creation. For more information, see the [CEL spec](https://github.com/google/cel-spec) and its [language definition](https://github.com/google/cel-spec/blob/master/doc/langdef.md). A condition has a max length of 500 characters.",
            "type": "string"
          },
          "description": {
            "description": "Optional. A description of what this policy aims to achieve, for convenience purposes. The description can at most include 256 UTF-8 characters.",
            "type": "string"
          },
          "name": {
            "description": "Identifier. The resource name for the FirewallPolicy in the format `projects/{project}/firewallpolicies/{firewallpolicy}`.",
            "type": "string"
          },
          "path": {
            "description": "Optional. The path for which this policy applies, specified as a glob pattern. For more information on glob, see the [manual page](https://man7.org/linux/man-pages/man7/glob.7.html). A path has a max length of 200 characters.",
            "type": "string"
          }
        },
        "required": [
          "actions",
          "condition",
          "description",
          "name",
          "path"
        ],
        "type": "object"
      }
    },
    "google-native:recaptchaenterprise/v1:getKey": {
      "description": "Returns the specified key.",
      "inputs": {
        "properties": {
          "keyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "keyId"
        ]
      },
      "outputs": {
        "properties": {
          "androidSettings": {
            "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1AndroidKeySettingsResponse",
            "description": "Settings for keys that can be used by Android apps."
          },
          "createTime": {
            "description": "The timestamp corresponding to the creation of this key.",
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable display name of this key. Modifiable by user.",
            "type": "string"
          },
          "iosSettings": {
            "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1IOSKeySettingsResponse",
            "description": "Settings for keys that can be used by iOS apps."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. See [Creating and managing labels] (https://cloud.google.com/recaptcha-enterprise/docs/labels).",
            "type": "object"
          },
          "name": {
            "description": "Identifier. The resource name for the Key in the format `projects/{project}/keys/{key}`.",
            "type": "string"
          },
          "testingOptions": {
            "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1TestingOptionsResponse",
            "description": "Optional. Options for user acceptance testing."
          },
          "wafSettings": {
            "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WafSettingsResponse",
            "description": "Optional. Settings for WAF"
          },
          "webSettings": {
            "$ref": "#/types/google-native:recaptchaenterprise%2Fv1:GoogleCloudRecaptchaenterpriseV1WebKeySettingsResponse",
            "description": "Settings for keys that can be used by websites."
          }
        },
        "required": [
          "androidSettings",
          "createTime",
          "displayName",
          "iosSettings",
          "labels",
          "name",
          "testingOptions",
          "wafSettings",
          "webSettings"
        ],
        "type": "object"
      }
    },
    "google-native:recommendationengine/v1beta1:getCatalogItem": {
      "description": "Gets a specific catalog item.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "catalogItemId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "catalogItemId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "categoryHierarchies": {
            "description": "Catalog item categories. This field is repeated for supporting one catalog item belonging to several parallel category hierarchies. For example, if a shoes product belongs to both [\"Shoes \u0026 Accessories\" -\u003e \"Shoes\"] and [\"Sports \u0026 Fitness\" -\u003e \"Athletic Clothing\" -\u003e \"Shoes\"], it could be represented as: \"categoryHierarchies\": [ { \"categories\": [\"Shoes \u0026 Accessories\", \"Shoes\"]}, { \"categories\": [\"Sports \u0026 Fitness\", \"Athletic Clothing\", \"Shoes\"] } ]",
            "items": {
              "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1CatalogItemCategoryHierarchyResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "Optional. Catalog item description. UTF-8 encoded string with a length limit of 5 KiB.",
            "type": "string"
          },
          "itemAttributes": {
            "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1FeatureMapResponse",
            "description": "Optional. Highly encouraged. Extra catalog item attributes to be included in the recommendation model. For example, for retail products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the item attributes here."
          },
          "itemGroupId": {
            "description": "Optional. Variant group identifier for prediction results. UTF-8 encoded string with a length limit of 128 bytes. This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).",
            "type": "string"
          },
          "languageCode": {
            "deprecationMessage": "Optional. Deprecated. The model automatically detects the text language. Your catalog can include text in different languages, but duplicating catalog items to provide text in multiple languages can result in degraded model performance.",
            "description": "Optional. Deprecated. The model automatically detects the text language. Your catalog can include text in different languages, but duplicating catalog items to provide text in multiple languages can result in degraded model performance.",
            "type": "string"
          },
          "productMetadata": {
            "$ref": "#/types/google-native:recommendationengine%2Fv1beta1:GoogleCloudRecommendationengineV1beta1ProductCatalogItemResponse",
            "description": "Optional. Metadata specific to retail products."
          },
          "tags": {
            "description": "Optional. Filtering tags associated with the catalog item. Each tag should be a UTF-8 encoded string with a length limit of 1 KiB. This tag can be used for filtering recommendation results by passing the tag as part of the predict request filter.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "description": "Catalog item title. UTF-8 encoded string with a length limit of 1 KiB.",
            "type": "string"
          }
        },
        "required": [
          "categoryHierarchies",
          "description",
          "itemAttributes",
          "itemGroupId",
          "languageCode",
          "productMetadata",
          "tags",
          "title"
        ],
        "type": "object"
      }
    },
    "google-native:redis/v1:getCluster": {
      "description": "Gets the details of a specific Redis cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "authorizationMode": {
            "description": "Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp associated with the cluster creation request.",
            "type": "string"
          },
          "discoveryEndpoints": {
            "description": "Endpoints created on each given network, for Redis clients to connect to the cluster. Currently only one discovery endpoint is supported.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1:DiscoveryEndpointResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`",
            "type": "string"
          },
          "pscConfigs": {
            "description": "Each PscConfig configures the consumer network where IPs will be designated to the cluster for client access through Private Service Connect Automation. Currently, only one PscConfig is supported.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1:PscConfigResponse"
            },
            "type": "array"
          },
          "pscConnections": {
            "description": "PSC connections for discovery of the cluster topology and accessing the cluster.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1:PscConnectionResponse"
            },
            "type": "array"
          },
          "replicaCount": {
            "description": "Optional. The number of replica nodes per shard.",
            "type": "integer"
          },
          "shardCount": {
            "description": "Number of shards for the Redis cluster.",
            "type": "integer"
          },
          "sizeGb": {
            "description": "Redis memory size in GB for the entire cluster.",
            "type": "integer"
          },
          "state": {
            "description": "The current state of this cluster. Can be CREATING, READY, UPDATING, DELETING and SUSPENDED",
            "type": "string"
          },
          "stateInfo": {
            "$ref": "#/types/google-native:redis%2Fv1:StateInfoResponse",
            "description": "Additional information about the current state of the cluster."
          },
          "transitEncryptionMode": {
            "description": "Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster.",
            "type": "string"
          },
          "uid": {
            "description": "System assigned, unique identifier for the cluster.",
            "type": "string"
          }
        },
        "required": [
          "authorizationMode",
          "createTime",
          "discoveryEndpoints",
          "name",
          "pscConfigs",
          "pscConnections",
          "replicaCount",
          "shardCount",
          "sizeGb",
          "state",
          "stateInfo",
          "transitEncryptionMode",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:redis/v1:getInstance": {
      "description": "Gets the details of a specific Redis instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "alternativeLocationId": {
            "description": "Optional. If specified, at least one node will be provisioned in this zone in addition to the zone specified in location_id. Only applicable to standard tier. If provided, it must be a different zone from the one provided in [location_id]. Additional nodes beyond the first 2 will be placed in zones selected by the service.",
            "type": "string"
          },
          "authEnabled": {
            "description": "Optional. Indicates whether OSS Redis AUTH is enabled for the instance. If set to \"true\" AUTH is enabled on the instance. Default value is \"false\" meaning AUTH is disabled.",
            "type": "boolean"
          },
          "authorizedNetwork": {
            "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used.",
            "type": "string"
          },
          "availableMaintenanceVersions": {
            "description": "Optional. The available maintenance versions that an instance could update to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "connectMode": {
            "description": "Optional. The network connect mode of the Redis instance. If not provided, the connect mode defaults to DIRECT_PEERING.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "currentLocationId": {
            "description": "The current zone where the Redis primary node is located. In basic tier, this will always be the same as [location_id]. In standard tier, this can be the zone of any node in the instance.",
            "type": "string"
          },
          "customerManagedKey": {
            "description": "Optional. The KMS key reference that the customer provides when trying to create the instance.",
            "type": "string"
          },
          "displayName": {
            "description": "An arbitrary and optional user-provided name for the instance.",
            "type": "string"
          },
          "host": {
            "description": "Hostname or IP address of the exposed Redis endpoint used by clients to connect to the service.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata",
            "type": "object"
          },
          "location": {
            "description": "Optional. The zone where the instance will be provisioned. If not provided, the service will choose a zone from the specified region for the instance. For standard tier, additional nodes will be added across multiple zones for protection against zonal failures. If specified, at least one node will be provisioned in this zone.",
            "type": "string"
          },
          "maintenancePolicy": {
            "$ref": "#/types/google-native:redis%2Fv1:MaintenancePolicyResponse",
            "description": "Optional. The maintenance policy for the instance. If not provided, maintenance events can be performed at any time."
          },
          "maintenanceSchedule": {
            "$ref": "#/types/google-native:redis%2Fv1:MaintenanceScheduleResponse",
            "description": "Date and time of upcoming maintenance events which have been scheduled."
          },
          "maintenanceVersion": {
            "description": "Optional. The self service update maintenance version. The version is date based such as \"20210712_00_00\".",
            "type": "string"
          },
          "memorySizeGb": {
            "description": "Redis memory size in GiB.",
            "type": "integer"
          },
          "name": {
            "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Redis instances are managed and addressed at regional level so location_id here refers to a GCP region; however, users may choose which specific zone (or collection of zones for cross-zone instances) an instance should be provisioned in. Refer to location_id and alternative_location_id fields for more details.",
            "type": "string"
          },
          "nodes": {
            "description": "Info per node.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1:NodeInfoResponse"
            },
            "type": "array"
          },
          "persistenceConfig": {
            "$ref": "#/types/google-native:redis%2Fv1:PersistenceConfigResponse",
            "description": "Optional. Persistence configuration parameters"
          },
          "persistenceIamIdentity": {
            "description": "Cloud IAM identity used by import / export operations to transfer data to/from Cloud Storage. Format is \"serviceAccount:\". The value may change over time for a given instance so should be checked before each import/export operation.",
            "type": "string"
          },
          "port": {
            "description": "The port number of the exposed Redis endpoint.",
            "type": "integer"
          },
          "readEndpoint": {
            "description": "Hostname or IP address of the exposed readonly Redis endpoint. Standard tier only. Targets all healthy replica nodes in instance. Replication is asynchronous and replica nodes will exhibit some lag behind the primary. Write requests must target 'host'.",
            "type": "string"
          },
          "readEndpointPort": {
            "description": "The port number of the exposed readonly redis endpoint. Standard tier only. Write requests should target 'port'.",
            "type": "integer"
          },
          "readReplicasMode": {
            "description": "Optional. Read replicas mode for the instance. Defaults to READ_REPLICAS_DISABLED.",
            "type": "string"
          },
          "redisConfigs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Redis configuration parameters, according to http://redis.io/topics/config. Currently, the only supported parameters are: Redis version 3.2 and newer: * maxmemory-policy * notify-keyspace-events Redis version 4.0 and newer: * activedefrag * lfu-decay-time * lfu-log-factor * maxmemory-gb Redis version 5.0 and newer: * stream-node-max-bytes * stream-node-max-entries",
            "type": "object"
          },
          "redisVersion": {
            "description": "Optional. The version of Redis software. If not provided, latest supported version will be used. Currently, the supported values are: * `REDIS_3_2` for Redis 3.2 compatibility * `REDIS_4_0` for Redis 4.0 compatibility (default) * `REDIS_5_0` for Redis 5.0 compatibility * `REDIS_6_X` for Redis 6.x compatibility",
            "type": "string"
          },
          "replicaCount": {
            "description": "Optional. The number of replica nodes. The valid range for the Standard Tier with read replicas enabled is [1-5] and defaults to 2. If read replicas are not enabled for a Standard Tier instance, the only valid value is 1 and the default is 1. The valid value for basic tier is 0 and the default is also 0.",
            "type": "integer"
          },
          "reservedIpRange": {
            "description": "Optional. For DIRECT_PEERING mode, the CIDR range of internal addresses that are reserved for this instance. Range must be unique and non-overlapping with existing subnets in an authorized network. For PRIVATE_SERVICE_ACCESS mode, the name of one allocated IP address ranges associated with this private service access connection. If not provided, the service will choose an unused /29 block, for example, 10.0.0.0/29 or 192.168.0.0/29. For READ_REPLICAS_ENABLED the default block size is /28.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Optional. Output only. Reserved for future use. Zone Separation compliance state of the instance. Field name and documentation is obfuscated according to go/zs-resource-status.",
            "type": "boolean"
          },
          "secondaryIpRange": {
            "description": "Optional. Additional IP range for node placement. Required when enabling read replicas on an existing instance. For DIRECT_PEERING mode value must be a CIDR range of size /28, or \"auto\". For PRIVATE_SERVICE_ACCESS mode value must be the name of an allocated address range associated with the private service access connection, or \"auto\".",
            "type": "string"
          },
          "serverCaCerts": {
            "description": "List of server CA certificates for the instance.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1:TlsCertificateResponse"
            },
            "type": "array"
          },
          "state": {
            "description": "The current state of this instance.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this instance, if available.",
            "type": "string"
          },
          "suspensionReasons": {
            "description": "Optional. reasons that causes instance in \"SUSPENDED\" state.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tier": {
            "description": "The service tier of the instance.",
            "type": "string"
          },
          "transitEncryptionMode": {
            "description": "Optional. The TLS mode of the Redis instance. If not provided, TLS is disabled for the instance.",
            "type": "string"
          }
        },
        "required": [
          "alternativeLocationId",
          "authEnabled",
          "authorizedNetwork",
          "availableMaintenanceVersions",
          "connectMode",
          "createTime",
          "currentLocationId",
          "customerManagedKey",
          "displayName",
          "host",
          "labels",
          "location",
          "maintenancePolicy",
          "maintenanceSchedule",
          "maintenanceVersion",
          "memorySizeGb",
          "name",
          "nodes",
          "persistenceConfig",
          "persistenceIamIdentity",
          "port",
          "readEndpoint",
          "readEndpointPort",
          "readReplicasMode",
          "redisConfigs",
          "redisVersion",
          "replicaCount",
          "reservedIpRange",
          "satisfiesPzs",
          "secondaryIpRange",
          "serverCaCerts",
          "state",
          "statusMessage",
          "suspensionReasons",
          "tier",
          "transitEncryptionMode"
        ],
        "type": "object"
      }
    },
    "google-native:redis/v1beta1:getCluster": {
      "description": "Gets the details of a specific Redis cluster.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "authorizationMode": {
            "description": "Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp associated with the cluster creation request.",
            "type": "string"
          },
          "discoveryEndpoints": {
            "description": "Endpoints created on each given network, for Redis clients to connect to the cluster. Currently only one discovery endpoint is supported.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1beta1:DiscoveryEndpointResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`",
            "type": "string"
          },
          "pscConfigs": {
            "description": "Each PscConfig configures the consumer network where IPs will be designated to the cluster for client access through Private Service Connect Automation. Currently, only one PscConfig is supported.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1beta1:PscConfigResponse"
            },
            "type": "array"
          },
          "pscConnections": {
            "description": "PSC connections for discovery of the cluster topology and accessing the cluster.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1beta1:PscConnectionResponse"
            },
            "type": "array"
          },
          "replicaCount": {
            "description": "Optional. The number of replica nodes per shard.",
            "type": "integer"
          },
          "shardCount": {
            "description": "Number of shards for the Redis cluster.",
            "type": "integer"
          },
          "sizeGb": {
            "description": "Redis memory size in GB for the entire cluster.",
            "type": "integer"
          },
          "state": {
            "description": "The current state of this cluster. Can be CREATING, READY, UPDATING, DELETING and SUSPENDED",
            "type": "string"
          },
          "stateInfo": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:StateInfoResponse",
            "description": "Additional information about the current state of the cluster."
          },
          "transitEncryptionMode": {
            "description": "Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster.",
            "type": "string"
          },
          "uid": {
            "description": "System assigned, unique identifier for the cluster.",
            "type": "string"
          }
        },
        "required": [
          "authorizationMode",
          "createTime",
          "discoveryEndpoints",
          "name",
          "pscConfigs",
          "pscConnections",
          "replicaCount",
          "shardCount",
          "sizeGb",
          "state",
          "stateInfo",
          "transitEncryptionMode",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:redis/v1beta1:getInstance": {
      "description": "Gets the details of a specific Redis instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "alternativeLocationId": {
            "description": "Optional. If specified, at least one node will be provisioned in this zone in addition to the zone specified in location_id. Only applicable to standard tier. If provided, it must be a different zone from the one provided in [location_id]. Additional nodes beyond the first 2 will be placed in zones selected by the service.",
            "type": "string"
          },
          "authEnabled": {
            "description": "Optional. Indicates whether OSS Redis AUTH is enabled for the instance. If set to \"true\" AUTH is enabled on the instance. Default value is \"false\" meaning AUTH is disabled.",
            "type": "boolean"
          },
          "authorizedNetwork": {
            "description": "Optional. The full name of the Google Compute Engine [network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected. If left unspecified, the `default` network will be used.",
            "type": "string"
          },
          "availableMaintenanceVersions": {
            "description": "Optional. The available maintenance versions that an instance could update to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "connectMode": {
            "description": "Optional. The network connect mode of the Redis instance. If not provided, the connect mode defaults to DIRECT_PEERING.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the instance was created.",
            "type": "string"
          },
          "currentLocationId": {
            "description": "The current zone where the Redis primary node is located. In basic tier, this will always be the same as [location_id]. In standard tier, this can be the zone of any node in the instance.",
            "type": "string"
          },
          "customerManagedKey": {
            "description": "Optional. The KMS key reference that the customer provides when trying to create the instance.",
            "type": "string"
          },
          "displayName": {
            "description": "An arbitrary and optional user-provided name for the instance.",
            "type": "string"
          },
          "host": {
            "description": "Hostname or IP address of the exposed Redis endpoint used by clients to connect to the service.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user provided metadata",
            "type": "object"
          },
          "location": {
            "description": "Optional. The zone where the instance will be provisioned. If not provided, the service will choose a zone from the specified region for the instance. For standard tier, additional nodes will be added across multiple zones for protection against zonal failures. If specified, at least one node will be provisioned in this zone.",
            "type": "string"
          },
          "maintenancePolicy": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:MaintenancePolicyResponse",
            "description": "Optional. The maintenance policy for the instance. If not provided, maintenance events can be performed at any time."
          },
          "maintenanceSchedule": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:MaintenanceScheduleResponse",
            "description": "Date and time of upcoming maintenance events which have been scheduled."
          },
          "maintenanceVersion": {
            "description": "Optional. The self service update maintenance version. The version is date based such as \"20210712_00_00\".",
            "type": "string"
          },
          "memorySizeGb": {
            "description": "Redis memory size in GiB.",
            "type": "integer"
          },
          "name": {
            "description": "Unique name of the resource in this scope including project and location using the form: `projects/{project_id}/locations/{location_id}/instances/{instance_id}` Note: Redis instances are managed and addressed at regional level so location_id here refers to a GCP region; however, users may choose which specific zone (or collection of zones for cross-zone instances) an instance should be provisioned in. Refer to location_id and alternative_location_id fields for more details.",
            "type": "string"
          },
          "nodes": {
            "description": "Info per node.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1beta1:NodeInfoResponse"
            },
            "type": "array"
          },
          "persistenceConfig": {
            "$ref": "#/types/google-native:redis%2Fv1beta1:PersistenceConfigResponse",
            "description": "Optional. Persistence configuration parameters"
          },
          "persistenceIamIdentity": {
            "description": "Cloud IAM identity used by import / export operations to transfer data to/from Cloud Storage. Format is \"serviceAccount:\". The value may change over time for a given instance so should be checked before each import/export operation.",
            "type": "string"
          },
          "port": {
            "description": "The port number of the exposed Redis endpoint.",
            "type": "integer"
          },
          "readEndpoint": {
            "description": "Hostname or IP address of the exposed readonly Redis endpoint. Standard tier only. Targets all healthy replica nodes in instance. Replication is asynchronous and replica nodes will exhibit some lag behind the primary. Write requests must target 'host'.",
            "type": "string"
          },
          "readEndpointPort": {
            "description": "The port number of the exposed readonly redis endpoint. Standard tier only. Write requests should target 'port'.",
            "type": "integer"
          },
          "readReplicasMode": {
            "description": "Optional. Read replicas mode for the instance. Defaults to READ_REPLICAS_DISABLED.",
            "type": "string"
          },
          "redisConfigs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Redis configuration parameters, according to http://redis.io/topics/config. Currently, the only supported parameters are: Redis version 3.2 and newer: * maxmemory-policy * notify-keyspace-events Redis version 4.0 and newer: * activedefrag * lfu-decay-time * lfu-log-factor * maxmemory-gb Redis version 5.0 and newer: * stream-node-max-bytes * stream-node-max-entries",
            "type": "object"
          },
          "redisVersion": {
            "description": "Optional. The version of Redis software. If not provided, latest supported version will be used. Currently, the supported values are: * `REDIS_3_2` for Redis 3.2 compatibility * `REDIS_4_0` for Redis 4.0 compatibility (default) * `REDIS_5_0` for Redis 5.0 compatibility * `REDIS_6_X` for Redis 6.x compatibility",
            "type": "string"
          },
          "replicaCount": {
            "description": "Optional. The number of replica nodes. The valid range for the Standard Tier with read replicas enabled is [1-5] and defaults to 2. If read replicas are not enabled for a Standard Tier instance, the only valid value is 1 and the default is 1. The valid value for basic tier is 0 and the default is also 0.",
            "type": "integer"
          },
          "reservedIpRange": {
            "description": "Optional. For DIRECT_PEERING mode, the CIDR range of internal addresses that are reserved for this instance. Range must be unique and non-overlapping with existing subnets in an authorized network. For PRIVATE_SERVICE_ACCESS mode, the name of one allocated IP address ranges associated with this private service access connection. If not provided, the service will choose an unused /29 block, for example, 10.0.0.0/29 or 192.168.0.0/29. For READ_REPLICAS_ENABLED the default block size is /28.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "Optional. Output only. Reserved for future use. Zone Separation compliance state of the instance. Field name and documentation is obfuscated according to go/zs-resource-status.",
            "type": "boolean"
          },
          "secondaryIpRange": {
            "description": "Optional. Additional IP range for node placement. Required when enabling read replicas on an existing instance. For DIRECT_PEERING mode value must be a CIDR range of size /28, or \"auto\". For PRIVATE_SERVICE_ACCESS mode value must be the name of an allocated address range associated with the private service access connection, or \"auto\".",
            "type": "string"
          },
          "serverCaCerts": {
            "description": "List of server CA certificates for the instance.",
            "items": {
              "$ref": "#/types/google-native:redis%2Fv1beta1:TlsCertificateResponse"
            },
            "type": "array"
          },
          "state": {
            "description": "The current state of this instance.",
            "type": "string"
          },
          "statusMessage": {
            "description": "Additional information about the current status of this instance, if available.",
            "type": "string"
          },
          "suspensionReasons": {
            "description": "Optional. reasons that causes instance in \"SUSPENDED\" state.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tier": {
            "description": "The service tier of the instance.",
            "type": "string"
          },
          "transitEncryptionMode": {
            "description": "Optional. The TLS mode of the Redis instance. If not provided, TLS is disabled for the instance.",
            "type": "string"
          }
        },
        "required": [
          "alternativeLocationId",
          "authEnabled",
          "authorizedNetwork",
          "availableMaintenanceVersions",
          "connectMode",
          "createTime",
          "currentLocationId",
          "customerManagedKey",
          "displayName",
          "host",
          "labels",
          "location",
          "maintenancePolicy",
          "maintenanceSchedule",
          "maintenanceVersion",
          "memorySizeGb",
          "name",
          "nodes",
          "persistenceConfig",
          "persistenceIamIdentity",
          "port",
          "readEndpoint",
          "readEndpointPort",
          "readReplicasMode",
          "redisConfigs",
          "redisVersion",
          "replicaCount",
          "reservedIpRange",
          "satisfiesPzs",
          "secondaryIpRange",
          "serverCaCerts",
          "state",
          "statusMessage",
          "suspensionReasons",
          "tier",
          "transitEncryptionMode"
        ],
        "type": "object"
      }
    },
    "google-native:remotebuildexecution/v1alpha:getInstance": {
      "description": "Returns the specified instance.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "featurePolicy": {
            "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaFeaturePolicyResponse",
            "description": "The policy to define whether or not RBE features can be used or how they can be used."
          },
          "location": {
            "description": "The location is a GCP region. Currently only `us-central1` is supported.",
            "type": "string"
          },
          "loggingEnabled": {
            "description": "Whether stack driver logging is enabled for the instance.",
            "type": "boolean"
          },
          "name": {
            "description": "Instance resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. Name should not be populated when creating an instance since it is provided in the `instance_id` field.",
            "type": "string"
          },
          "state": {
            "description": "State of the instance.",
            "type": "string"
          }
        },
        "required": [
          "featurePolicy",
          "location",
          "loggingEnabled",
          "name",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:remotebuildexecution/v1alpha:getWorkerPool": {
      "description": "Returns the specified worker pool.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workerpoolId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId",
          "workerpoolId"
        ]
      },
      "outputs": {
        "properties": {
          "autoscale": {
            "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaAutoscaleResponse",
            "description": "The autoscale policy to apply on a pool."
          },
          "channel": {
            "description": "Channel specifies the release channel of the pool.",
            "type": "string"
          },
          "name": {
            "description": "WorkerPool resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`. name should not be populated when creating a worker pool since it is provided in the `poolId` field.",
            "type": "string"
          },
          "state": {
            "description": "State of the worker pool.",
            "type": "string"
          },
          "workerConfig": {
            "$ref": "#/types/google-native:remotebuildexecution%2Fv1alpha:GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfigResponse",
            "description": "Specifies the properties, such as machine type and disk size, used for creating workers in a worker pool."
          },
          "workerCount": {
            "description": "The desired number of workers in the worker pool. Must be a value between 0 and 15000.",
            "type": "string"
          }
        },
        "required": [
          "autoscale",
          "channel",
          "name",
          "state",
          "workerConfig",
          "workerCount"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2:getControl": {
      "description": "Gets a Control.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "controlId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "controlId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "associatedServingConfigIds": {
            "description": "List of serving config ids that are associated with this control in the same Catalog. Note the association is managed via the ServingConfig, this is an output only denormalized view.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`",
            "type": "string"
          },
          "rule": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RuleResponse",
            "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
          },
          "searchSolutionUseCase": {
            "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "solutionTypes": {
            "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "associatedServingConfigIds",
          "displayName",
          "name",
          "rule",
          "searchSolutionUseCase",
          "solutionTypes"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2:getModel": {
      "description": "Gets a model.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "modelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "location",
          "modelId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp the Recommendation Model was created at.",
            "type": "string"
          },
          "dataState": {
            "description": "The state of data requirements for this model: `DATA_OK` and `DATA_ERROR`. Recommendation model cannot be trained if the data is in `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even if serving state is `ACTIVE`: models were trained successfully before, but cannot be refreshed because model no longer has sufficient data for training.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters.",
            "type": "string"
          },
          "filteringOption": {
            "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model.",
            "type": "string"
          },
          "lastTuneTime": {
            "description": "The timestamp when the latest successful tune finished.",
            "type": "string"
          },
          "modelFeaturesConfig": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ModelModelFeaturesConfigResponse",
            "description": "Optional. Additional model features config."
          },
          "name": {
            "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40.",
            "type": "string"
          },
          "optimizationObjective": {
            "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` =\u003e `ctr` `others-you-may-like` =\u003e `ctr` `frequently-bought-together` =\u003e `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs.",
            "type": "string"
          },
          "periodicTuningState": {
            "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`.",
            "type": "string"
          },
          "servingConfigLists": {
            "description": "The list of valid serving configs associated with the PageOptimizationConfig.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ModelServingConfigListResponse"
            },
            "type": "array"
          },
          "servingState": {
            "description": "The serving state of the model: `ACTIVE`, `NOT_ACTIVE`.",
            "type": "string"
          },
          "trainingState": {
            "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before.",
            "type": "string"
          },
          "tuningOperation": {
            "description": "The tune operation associated with the model. Can be used to determine if there is an ongoing tune for this recommendation. Empty field implies no tune is goig on.",
            "type": "string"
          },
          "type": {
            "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp the Recommendation Model was last updated. E.g. if a Recommendation Model was paused - this would be the time the pause was initiated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataState",
          "displayName",
          "filteringOption",
          "lastTuneTime",
          "modelFeaturesConfig",
          "name",
          "optimizationObjective",
          "periodicTuningState",
          "servingConfigLists",
          "servingState",
          "trainingState",
          "tuningOperation",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2:getProduct": {
      "description": "Gets a Product.",
      "inputs": {
        "properties": {
          "branchId": {
            "type": "string"
          },
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "branchId",
          "catalogId",
          "location",
          "productId"
        ]
      },
      "outputs": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed.",
            "type": "object"
          },
          "audience": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2AudienceResponse",
            "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
          },
          "availability": {
            "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability).",
            "type": "string"
          },
          "availableQuantity": {
            "description": "The available quantity of the item.",
            "type": "integer"
          },
          "availableTime": {
            "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT.",
            "type": "string"
          },
          "brands": {
            "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "categories": {
            "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '\u003e' sign to separate different hierarchies. If '\u003e' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes \u0026 Accessories\" -\u003e \"Shoes\"] and [\"Sports \u0026 Fitness\" -\u003e \"Athletic Clothing\" -\u003e \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes \u0026 Accessories \u003e Shoes\", \"Sports \u0026 Fitness \u003e Athletic Clothing \u003e Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "collectionMemberIds": {
            "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "colorInfo": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ColorInfoResponse",
            "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
          },
          "conditions": {
            "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description).",
            "type": "string"
          },
          "expireTime": {
            "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).",
            "type": "string"
          },
          "fulfillmentInfo": {
            "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2FulfillmentInfoResponse"
            },
            "type": "array"
          },
          "gtin": {
            "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.",
            "type": "string"
          },
          "images": {
            "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ImageResponse"
            },
            "type": "array"
          },
          "languageCode": {
            "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset.",
            "type": "string"
          },
          "localInventories": {
            "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2LocalInventoryResponse"
            },
            "type": "array"
          },
          "materials": {
            "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`.",
            "type": "string"
          },
          "patterns": {
            "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "priceInfo": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PriceInfoResponse",
            "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
          },
          "primaryProductId": {
            "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID).",
            "type": "string"
          },
          "promotions": {
            "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2PromotionResponse"
            },
            "type": "array"
          },
          "publishTime": {
            "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.",
            "type": "string"
          },
          "rating": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2RatingResponse",
            "description": "The rating of this product."
          },
          "retrievableFields": {
            "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
            "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
            "type": "string"
          },
          "sizes": {
            "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tags": {
            "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).",
            "type": "string"
          },
          "ttl": {
            "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.",
            "type": "string"
          },
          "uri": {
            "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).",
            "type": "string"
          },
          "variants": {
            "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2ProductResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "attributes",
          "audience",
          "availability",
          "availableQuantity",
          "availableTime",
          "brands",
          "categories",
          "collectionMemberIds",
          "colorInfo",
          "conditions",
          "description",
          "expireTime",
          "fulfillmentInfo",
          "gtin",
          "images",
          "languageCode",
          "localInventories",
          "materials",
          "name",
          "patterns",
          "priceInfo",
          "primaryProductId",
          "promotions",
          "publishTime",
          "rating",
          "retrievableFields",
          "sizes",
          "tags",
          "title",
          "ttl",
          "type",
          "uri",
          "variants"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2:getServingConfig": {
      "description": "Gets a ServingConfig. Returns a NotFound error if the ServingConfig does not exist.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "servingConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "location",
          "servingConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "boostControlIds": {
            "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
            "type": "string"
          },
          "diversityLevel": {
            "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "diversityType": {
            "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY.",
            "type": "string"
          },
          "doNotAssociateControlIds": {
            "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dynamicFacetSpec": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2SearchRequestDynamicFacetSpecResponse",
            "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
          },
          "enableCategoryFilterLevel": {
            "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "facetControlIds": {
            "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "filterControlIds": {
            "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ignoreControlIds": {
            "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "modelId": {
            "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`",
            "type": "string"
          },
          "onewaySynonymsControlIds": {
            "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "personalizationSpec": {
            "$ref": "#/types/google-native:retail%2Fv2:GoogleCloudRetailV2SearchRequestPersonalizationSpecResponse",
            "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
          },
          "priceRerankingLevel": {
            "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "redirectControlIds": {
            "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "replacementControlIds": {
            "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "solutionTypes": {
            "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "twowaySynonymsControlIds": {
            "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "boostControlIds",
          "displayName",
          "diversityLevel",
          "diversityType",
          "doNotAssociateControlIds",
          "dynamicFacetSpec",
          "enableCategoryFilterLevel",
          "facetControlIds",
          "filterControlIds",
          "ignoreControlIds",
          "modelId",
          "name",
          "onewaySynonymsControlIds",
          "personalizationSpec",
          "priceRerankingLevel",
          "redirectControlIds",
          "replacementControlIds",
          "solutionTypes",
          "twowaySynonymsControlIds"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2alpha:getControl": {
      "description": "Gets a Control.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "controlId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "controlId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "associatedServingConfigIds": {
            "description": "List of serving config ids that are associated with this control in the same Catalog. Note the association is managed via the ServingConfig, this is an output only denormalized view.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown.",
            "type": "string"
          },
          "facetSpec": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestFacetSpecResponse",
            "description": "A facet specification to perform faceted search. Note that this field is deprecated and will throw NOT_IMPLEMENTED if used for creating a control."
          },
          "name": {
            "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`",
            "type": "string"
          },
          "rule": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRuleResponse",
            "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
          },
          "searchSolutionUseCase": {
            "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "solutionTypes": {
            "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "associatedServingConfigIds",
          "displayName",
          "facetSpec",
          "name",
          "rule",
          "searchSolutionUseCase",
          "solutionTypes"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2alpha:getModel": {
      "description": "Gets a model.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "modelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "location",
          "modelId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp the Recommendation Model was created at.",
            "type": "string"
          },
          "dataState": {
            "description": "The state of data requirements for this model: `DATA_OK` and `DATA_ERROR`. Recommendation model cannot be trained if the data is in `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even if serving state is `ACTIVE`: models were trained successfully before, but cannot be refreshed because model no longer has sufficient data for training.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters.",
            "type": "string"
          },
          "filteringOption": {
            "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model.",
            "type": "string"
          },
          "lastTuneTime": {
            "description": "The timestamp when the latest successful tune finished.",
            "type": "string"
          },
          "modelFeaturesConfig": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelModelFeaturesConfigResponse",
            "description": "Optional. Additional model features config."
          },
          "name": {
            "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40.",
            "type": "string"
          },
          "optimizationObjective": {
            "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` =\u003e `ctr` `others-you-may-like` =\u003e `ctr` `frequently-bought-together` =\u003e `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs.",
            "type": "string"
          },
          "pageOptimizationConfig": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelPageOptimizationConfigResponse",
            "description": "Optional. The page optimization config."
          },
          "periodicTuningState": {
            "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`.",
            "type": "string"
          },
          "servingConfigLists": {
            "description": "The list of valid serving configs associated with the PageOptimizationConfig.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaModelServingConfigListResponse"
            },
            "type": "array"
          },
          "servingState": {
            "description": "The serving state of the model: `ACTIVE`, `NOT_ACTIVE`.",
            "type": "string"
          },
          "trainingState": {
            "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before.",
            "type": "string"
          },
          "tuningOperation": {
            "description": "The tune operation associated with the model. Can be used to determine if there is an ongoing tune for this recommendation. Empty field implies no tune is goig on.",
            "type": "string"
          },
          "type": {
            "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp the Recommendation Model was last updated. E.g. if a Recommendation Model was paused - this would be the time the pause was initiated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataState",
          "displayName",
          "filteringOption",
          "lastTuneTime",
          "modelFeaturesConfig",
          "name",
          "optimizationObjective",
          "pageOptimizationConfig",
          "periodicTuningState",
          "servingConfigLists",
          "servingState",
          "trainingState",
          "tuningOperation",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2alpha:getProduct": {
      "description": "Gets a Product.",
      "inputs": {
        "properties": {
          "branchId": {
            "type": "string"
          },
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "branchId",
          "catalogId",
          "location",
          "productId"
        ]
      },
      "outputs": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed.",
            "type": "object"
          },
          "audience": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaAudienceResponse",
            "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
          },
          "availability": {
            "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability).",
            "type": "string"
          },
          "availableQuantity": {
            "description": "The available quantity of the item.",
            "type": "integer"
          },
          "availableTime": {
            "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT.",
            "type": "string"
          },
          "brands": {
            "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "categories": {
            "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '\u003e' sign to separate different hierarchies. If '\u003e' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes \u0026 Accessories\" -\u003e \"Shoes\"] and [\"Sports \u0026 Fitness\" -\u003e \"Athletic Clothing\" -\u003e \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes \u0026 Accessories \u003e Shoes\", \"Sports \u0026 Fitness \u003e Athletic Clothing \u003e Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "collectionMemberIds": {
            "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "colorInfo": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaColorInfoResponse",
            "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
          },
          "conditions": {
            "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description).",
            "type": "string"
          },
          "expireTime": {
            "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).",
            "type": "string"
          },
          "fulfillmentInfo": {
            "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaFulfillmentInfoResponse"
            },
            "type": "array"
          },
          "gtin": {
            "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.",
            "type": "string"
          },
          "images": {
            "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaImageResponse"
            },
            "type": "array"
          },
          "languageCode": {
            "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset.",
            "type": "string"
          },
          "localInventories": {
            "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaLocalInventoryResponse"
            },
            "type": "array"
          },
          "materials": {
            "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`.",
            "type": "string"
          },
          "patterns": {
            "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "priceInfo": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPriceInfoResponse",
            "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
          },
          "primaryProductId": {
            "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID).",
            "type": "string"
          },
          "promotions": {
            "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaPromotionResponse"
            },
            "type": "array"
          },
          "publishTime": {
            "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.",
            "type": "string"
          },
          "rating": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaRatingResponse",
            "description": "The rating of this product."
          },
          "retrievableFields": {
            "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
            "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
            "type": "string"
          },
          "sizes": {
            "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tags": {
            "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).",
            "type": "string"
          },
          "ttl": {
            "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.",
            "type": "string"
          },
          "uri": {
            "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).",
            "type": "string"
          },
          "variants": {
            "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaProductResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "attributes",
          "audience",
          "availability",
          "availableQuantity",
          "availableTime",
          "brands",
          "categories",
          "collectionMemberIds",
          "colorInfo",
          "conditions",
          "description",
          "expireTime",
          "fulfillmentInfo",
          "gtin",
          "images",
          "languageCode",
          "localInventories",
          "materials",
          "name",
          "patterns",
          "priceInfo",
          "primaryProductId",
          "promotions",
          "publishTime",
          "rating",
          "retrievableFields",
          "sizes",
          "tags",
          "title",
          "ttl",
          "type",
          "uri",
          "variants"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2alpha:getServingConfig": {
      "description": "Gets a ServingConfig. Returns a NotFound error if the ServingConfig does not exist.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "servingConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "location",
          "servingConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "boostControlIds": {
            "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
            "type": "string"
          },
          "diversityLevel": {
            "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "diversityType": {
            "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY.",
            "type": "string"
          },
          "doNotAssociateControlIds": {
            "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dynamicFacetSpec": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestDynamicFacetSpecResponse",
            "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
          },
          "enableCategoryFilterLevel": {
            "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "facetControlIds": {
            "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "filterControlIds": {
            "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ignoreControlIds": {
            "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "modelId": {
            "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`",
            "type": "string"
          },
          "onewaySynonymsControlIds": {
            "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "personalizationSpec": {
            "$ref": "#/types/google-native:retail%2Fv2alpha:GoogleCloudRetailV2alphaSearchRequestPersonalizationSpecResponse",
            "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
          },
          "priceRerankingLevel": {
            "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "redirectControlIds": {
            "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "replacementControlIds": {
            "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "solutionTypes": {
            "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "twowaySynonymsControlIds": {
            "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "boostControlIds",
          "displayName",
          "diversityLevel",
          "diversityType",
          "doNotAssociateControlIds",
          "dynamicFacetSpec",
          "enableCategoryFilterLevel",
          "facetControlIds",
          "filterControlIds",
          "ignoreControlIds",
          "modelId",
          "name",
          "onewaySynonymsControlIds",
          "personalizationSpec",
          "priceRerankingLevel",
          "redirectControlIds",
          "replacementControlIds",
          "solutionTypes",
          "twowaySynonymsControlIds"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2beta:getControl": {
      "description": "Gets a Control.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "controlId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "controlId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "associatedServingConfigIds": {
            "description": "List of serving config ids that are associated with this control in the same Catalog. Note the association is managed via the ServingConfig, this is an output only denormalized view.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The human readable control display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is thrown.",
            "type": "string"
          },
          "facetSpec": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestFacetSpecResponse",
            "description": "A facet specification to perform faceted search. Note that this field is deprecated and will throw NOT_IMPLEMENTED if used for creating a control."
          },
          "name": {
            "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/controls/*`",
            "type": "string"
          },
          "rule": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRuleResponse",
            "description": "A rule control - a condition-action pair. Enacts a set action when the condition is triggered. For example: Boost \"gShoe\" when query full matches \"Running Shoes\"."
          },
          "searchSolutionUseCase": {
            "description": "Specifies the use case for the control. Affects what condition fields can be set. Only settable by search controls. Will default to SEARCH_SOLUTION_USE_CASE_SEARCH if not specified. Currently only allow one search_solution_use_case per control.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "solutionTypes": {
            "description": "Immutable. The solution types that the control is used for. Currently we support setting only one type of solution at creation time. Only `SOLUTION_TYPE_SEARCH` value is supported at the moment. If no solution type is provided at creation time, will default to SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "associatedServingConfigIds",
          "displayName",
          "facetSpec",
          "name",
          "rule",
          "searchSolutionUseCase",
          "solutionTypes"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2beta:getModel": {
      "description": "Gets a model.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "modelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "location",
          "modelId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp the Recommendation Model was created at.",
            "type": "string"
          },
          "dataState": {
            "description": "The state of data requirements for this model: `DATA_OK` and `DATA_ERROR`. Recommendation model cannot be trained if the data is in `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even if serving state is `ACTIVE`: models were trained successfully before, but cannot be refreshed because model no longer has sufficient data for training.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name of the model. Should be human readable, used to display Recommendation Models in the Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 characters.",
            "type": "string"
          },
          "filteringOption": {
            "description": "Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering by attributes is enabled for the model.",
            "type": "string"
          },
          "lastTuneTime": {
            "description": "The timestamp when the latest successful tune finished.",
            "type": "string"
          },
          "modelFeaturesConfig": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaModelModelFeaturesConfigResponse",
            "description": "Optional. Additional model features config."
          },
          "name": {
            "description": "The fully qualified resource name of the model. Format: `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` catalog_id has char limit of 50. recommendation_model_id has char limit of 40.",
            "type": "string"
          },
          "optimizationObjective": {
            "description": "Optional. The optimization objective e.g. `cvr`. Currently supported values: `ctr`, `cvr`, `revenue-per-order`. If not specified, we choose default based on model type. Default depends on type of recommendation: `recommended-for-you` =\u003e `ctr` `others-you-may-like` =\u003e `ctr` `frequently-bought-together` =\u003e `revenue_per_order` This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs.",
            "type": "string"
          },
          "periodicTuningState": {
            "description": "Optional. The state of periodic tuning. The period we use is 3 months - to do a one-off tune earlier use the `TuneModel` method. Default value is `PERIODIC_TUNING_ENABLED`.",
            "type": "string"
          },
          "servingConfigLists": {
            "description": "The list of valid serving configs associated with the PageOptimizationConfig.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaModelServingConfigListResponse"
            },
            "type": "array"
          },
          "servingState": {
            "description": "The serving state of the model: `ACTIVE`, `NOT_ACTIVE`.",
            "type": "string"
          },
          "trainingState": {
            "description": "Optional. The training state that the model is in (e.g. `TRAINING` or `PAUSED`). Since part of the cost of running the service is frequency of training - this can be used to determine when to train model in order to control cost. If not specified: the default value for `CreateModel` method is `TRAINING`. The default value for `UpdateModel` method is to keep the state the same as before.",
            "type": "string"
          },
          "tuningOperation": {
            "description": "The tune operation associated with the model. Can be used to determine if there is an ongoing tune for this recommendation. Empty field implies no tune is goig on.",
            "type": "string"
          },
          "type": {
            "description": "The type of model e.g. `home-page`. Currently supported values: `recommended-for-you`, `others-you-may-like`, `frequently-bought-together`, `page-optimization`, `similar-items`, `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). This field together with optimization_objective describe model metadata to use to control model training and serving. See https://cloud.google.com/retail/docs/models for more details on what the model metadata control and which combination of parameters are valid. For invalid combinations of parameters (e.g. type = `frequently-bought-together` and optimization_objective = `ctr`), you receive an error 400 if you try to create/update a recommendation with this set of knobs.",
            "type": "string"
          },
          "updateTime": {
            "description": "Timestamp the Recommendation Model was last updated. E.g. if a Recommendation Model was paused - this would be the time the pause was initiated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataState",
          "displayName",
          "filteringOption",
          "lastTuneTime",
          "modelFeaturesConfig",
          "name",
          "optimizationObjective",
          "periodicTuningState",
          "servingConfigLists",
          "servingState",
          "trainingState",
          "tuningOperation",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2beta:getProduct": {
      "description": "Gets a Product.",
      "inputs": {
        "properties": {
          "branchId": {
            "type": "string"
          },
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "branchId",
          "catalogId",
          "location",
          "productId"
        ]
      },
      "outputs": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ \"vendor\": {\"text\": [\"vendor123\", \"vendor456\"]}, \"lengths_cm\": {\"numbers\":[2.3, 15.4]}, \"heights_cm\": {\"numbers\":[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * For indexable attribute, the key must match the pattern: `a-zA-Z0-9*`. For example, `key0LikeThis` or `KEY_1_LIKE_THIS`. * For text attributes, at most 400 values are allowed. Empty values are not allowed. Each value must be a non-empty UTF-8 encoded string with a length limit of 256 characters. * For number attributes, at most 400 values are allowed.",
            "type": "object"
          },
          "audience": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaAudienceResponse",
            "description": "The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product."
          },
          "availability": {
            "description": "The online availability of the Product. Default to Availability.IN_STOCK. Corresponding properties: Google Merchant Center property [availability](https://support.google.com/merchants/answer/6324448). Schema.org property [Offer.availability](https://schema.org/availability).",
            "type": "string"
          },
          "availableQuantity": {
            "description": "The available quantity of the item.",
            "type": "integer"
          },
          "availableTime": {
            "description": "The timestamp when this Product becomes available for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT.",
            "type": "string"
          },
          "brands": {
            "description": "The brands of the product. A maximum of 30 brands are allowed unless overridden through the Google Cloud console. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "categories": {
            "description": "Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use '\u003e' sign to separate different hierarchies. If '\u003e' is part of the category name, replace it with other character(s). For example, if a shoes product belongs to both [\"Shoes \u0026 Accessories\" -\u003e \"Shoes\"] and [\"Sports \u0026 Fitness\" -\u003e \"Athletic Clothing\" -\u003e \"Shoes\"], it could be represented as: \"categories\": [ \"Shoes \u0026 Accessories \u003e Shoes\", \"Sports \u0026 Fitness \u003e Athletic Clothing \u003e Shoes\" ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "collectionMemberIds": {
            "description": "The id of the collection members when type is Type.COLLECTION. Non-existent product ids are allowed. The type of the members must be either Type.PRIMARY or Type.VARIANT otherwise an INVALID_ARGUMENT error is thrown. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "colorInfo": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaColorInfoResponse",
            "description": "The color of the product. Corresponding properties: Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color)."
          },
          "conditions": {
            "description": "The condition of the product. Strongly encouraged to use the standard values: \"new\", \"refurbished\", \"used\". A maximum of 1 value is allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). Schema.org property [Product.description](https://schema.org/description).",
            "type": "string"
          },
          "expireTime": {
            "description": "The timestamp when this product becomes unavailable for SearchService.Search. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. expire_time must be later than available_time and publish_time, otherwise an INVALID_ARGUMENT error is thrown. Corresponding properties: Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).",
            "type": "string"
          },
          "fulfillmentInfo": {
            "description": "Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaFulfillmentInfoResponse"
            },
            "type": "array"
          },
          "gtin": {
            "description": "The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. This field must be a Unigram. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn), [Product.gtin8](https://schema.org/gtin8), [Product.gtin12](https://schema.org/gtin12), [Product.gtin13](https://schema.org/gtin13), or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.",
            "type": "string"
          },
          "images": {
            "description": "Product images for the product. We highly recommend putting the main image first. A maximum of 300 images are allowed. Corresponding properties: Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaImageResponse"
            },
            "type": "array"
          },
          "languageCode": {
            "description": "Language of the title/description and other string attributes. Use language tags defined by [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to \"en-US\" if unset.",
            "type": "string"
          },
          "localInventories": {
            "description": "A list of local inventories specific to different places. This field can be managed by ProductService.AddLocalInventories and ProductService.RemoveLocalInventories APIs if fine-grained, high-volume updates are necessary.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaLocalInventoryResponse"
            },
            "type": "array"
          },
          "materials": {
            "description": "The material of the product. For example, \"leather\", \"wooden\". A maximum of 20 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 200 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`.",
            "type": "string"
          },
          "patterns": {
            "description": "The pattern or graphic print of the product. For example, \"striped\", \"polka dot\", \"paisley\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "priceInfo": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPriceInfoResponse",
            "description": "Product price and cost information. Corresponding properties: Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371)."
          },
          "primaryProductId": {
            "description": "Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID).",
            "type": "string"
          },
          "promotions": {
            "description": "The promotions applied to the product. A maximum of 10 values are allowed per Product. Only Promotion.promotion_id will be used, other fields will be ignored if set.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaPromotionResponse"
            },
            "type": "array"
          },
          "publishTime": {
            "description": "The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.",
            "type": "string"
          },
          "rating": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaRatingResponse",
            "description": "The rating of this product."
          },
          "retrievableFields": {
            "deprecationMessage": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
            "description": "Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form \"attributes.key\" where \"key\" is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info The maximum number of paths is 30. Otherwise, an INVALID_ARGUMENT error is returned. Note: Returning more fields in SearchResponse can increase response payload size and serving latency. This field is deprecated. Use the retrievable site-wide control instead.",
            "type": "string"
          },
          "sizes": {
            "description": "The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in \"US:MENS:M\", \"US\" represents size system; \"MENS\" represents size type; \"M\" represents size value. In \"GIRLS:27\", size system is empty; \"GIRLS\" represents size type; \"27\" represents size value. In \"32 inches\", both size system and size type are empty, while size value is \"32 inches\". A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497), and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tags": {
            "description": "Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Corresponding properties: Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "description": "Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).",
            "type": "string"
          },
          "ttl": {
            "description": "Input only. The TTL (time to live) of the product. Note that this is only applicable to Type.PRIMARY and Type.COLLECTION, and ignored for Type.VARIANT. In general, we suggest the users to delete the stale products explicitly, instead of using this field to determine staleness. If it is set, it must be a non-negative value, and expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.",
            "type": "string"
          },
          "type": {
            "description": "Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.",
            "type": "string"
          },
          "uri": {
            "description": "Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Corresponding properties: Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).",
            "type": "string"
          },
          "variants": {
            "description": "Product variants grouped together on primary product which share similar product attributes. It's automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.",
            "items": {
              "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaProductResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "attributes",
          "audience",
          "availability",
          "availableQuantity",
          "availableTime",
          "brands",
          "categories",
          "collectionMemberIds",
          "colorInfo",
          "conditions",
          "description",
          "expireTime",
          "fulfillmentInfo",
          "gtin",
          "images",
          "languageCode",
          "localInventories",
          "materials",
          "name",
          "patterns",
          "priceInfo",
          "primaryProductId",
          "promotions",
          "publishTime",
          "rating",
          "retrievableFields",
          "sizes",
          "tags",
          "title",
          "ttl",
          "type",
          "uri",
          "variants"
        ],
        "type": "object"
      }
    },
    "google-native:retail/v2beta:getServingConfig": {
      "description": "Gets a ServingConfig. Returns a NotFound error if the ServingConfig does not exist.",
      "inputs": {
        "properties": {
          "catalogId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "servingConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "catalogId",
          "location",
          "servingConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "boostControlIds": {
            "description": "Condition boost specifications. If a product matches multiple conditions in the specifications, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 100. Notice that if both ServingConfig.boost_control_ids and SearchRequest.boost_spec are set, the boost conditions from both places are evaluated. If a search request matches multiple boost conditions, the final boost score is equal to the sum of the boost scores from all matched boost conditions. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The human readable serving config display name. Used in Retail UI. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.",
            "type": "string"
          },
          "diversityLevel": {
            "description": "How much diversity to use in recommendation model results e.g. `medium-diversity` or `high-diversity`. Currently supported values: * `no-diversity` * `low-diversity` * `medium-diversity` * `high-diversity` * `auto-diversity` If not specified, we choose default based on recommendation model type. Default value: `no-diversity`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "diversityType": {
            "description": "What kind of diversity to use - data driven or rule based. If unset, the server behavior defaults to RULE_BASED_DIVERSITY.",
            "type": "string"
          },
          "doNotAssociateControlIds": {
            "description": "Condition do not associate specifications. If multiple do not associate conditions match, all matching do not associate controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dynamicFacetSpec": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestDynamicFacetSpecResponse",
            "description": "The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. Can only be set if solution_types is SOLUTION_TYPE_SEARCH."
          },
          "enableCategoryFilterLevel": {
            "description": "Whether to add additional category filters on the `similar-items` model. If not specified, we enable it by default. Allowed values are: * `no-category-match`: No additional filtering of original results from the model and the customer's filters. * `relaxed-category-match`: Only keep results with categories that match at least one item categories in the PredictRequests's context item. * If customer also sends filters in the PredictRequest, then the results will satisfy both conditions (user given and category match). Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "facetControlIds": {
            "description": "Facet specifications for faceted search. If empty, no facets are returned. The ids refer to the ids of Control resources with only the Facet control set. These controls are assumed to be in the same Catalog as the ServingConfig. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "filterControlIds": {
            "description": "Condition filter specifications. If a product matches multiple conditions in the specifications, filters from these specifications are all applied and combined via the AND operator. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ignoreControlIds": {
            "description": "Condition ignore specifications. If multiple ignore conditions match, all matching ignore controls in the list will execute. - Order does not matter. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "modelId": {
            "description": "The id of the model in the same Catalog to use at serving time. Currently only RecommendationModels are supported: https://cloud.google.com/retail/recommendations-ai/docs/create-models Can be changed but only to a compatible model (e.g. others-you-may-like CTR to others-you-may-like CVR). Required when solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. Fully qualified name `projects/*/locations/global/catalogs/*/servingConfig/*`",
            "type": "string"
          },
          "onewaySynonymsControlIds": {
            "description": "Condition oneway synonyms specifications. If multiple oneway synonyms conditions match, all matching oneway synonyms controls in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "personalizationSpec": {
            "$ref": "#/types/google-native:retail%2Fv2beta:GoogleCloudRetailV2betaSearchRequestPersonalizationSpecResponse",
            "description": "The specification for personalization spec. Can only be set if solution_types is SOLUTION_TYPE_SEARCH. Notice that if both ServingConfig.personalization_spec and SearchRequest.personalization_spec are set. SearchRequest.personalization_spec will override ServingConfig.personalization_spec."
          },
          "priceRerankingLevel": {
            "description": "How much price ranking we want in serving results. Price reranking causes product items with a similar recommendation probability to be ordered by price, with the highest-priced items first. This setting could result in a decrease in click-through and conversion rates. Allowed values are: * `no-price-reranking` * `low-price-reranking` * `medium-price-reranking` * `high-price-reranking` If not specified, we choose default based on model type. Default value: `no-price-reranking`. Can only be set if solution_types is SOLUTION_TYPE_RECOMMENDATION.",
            "type": "string"
          },
          "redirectControlIds": {
            "description": "Condition redirect specifications. Only the first triggered redirect action is applied, even if multiple apply. Maximum number of specifications is 1000. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "replacementControlIds": {
            "description": "Condition replacement specifications. - Applied according to the order in the list. - A previously replaced term can not be re-replaced. - Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "solutionTypes": {
            "description": "Immutable. Specifies the solution types that a serving config can be associated with. Currently we support setting only one type of solution.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "twowaySynonymsControlIds": {
            "description": "Condition synonyms specifications. If multiple syonyms conditions match, all matching synonyms control in the list will execute. Order of controls in the list will not matter. Maximum number of specifications is 100. Can only be set if solution_types is SOLUTION_TYPE_SEARCH.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "boostControlIds",
          "displayName",
          "diversityLevel",
          "diversityType",
          "doNotAssociateControlIds",
          "dynamicFacetSpec",
          "enableCategoryFilterLevel",
          "facetControlIds",
          "filterControlIds",
          "ignoreControlIds",
          "modelId",
          "name",
          "onewaySynonymsControlIds",
          "personalizationSpec",
          "priceRerankingLevel",
          "redirectControlIds",
          "replacementControlIds",
          "solutionTypes",
          "twowaySynonymsControlIds"
        ],
        "type": "object"
      }
    },
    "google-native:run/v1:getDomainMapping": {
      "description": "Get information about a domain mapping.",
      "inputs": {
        "properties": {
          "domainmappingId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "domainmappingId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "apiVersion": {
            "description": "The API version for this call such as \"domains.cloudrun.com/v1\".",
            "type": "string"
          },
          "kind": {
            "description": "The kind of resource, in this case \"DomainMapping\".",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:run%2Fv1:ObjectMetaResponse",
            "description": "Metadata associated with this BuildTemplate."
          },
          "spec": {
            "$ref": "#/types/google-native:run%2Fv1:DomainMappingSpecResponse",
            "description": "The spec for this DomainMapping."
          },
          "status": {
            "$ref": "#/types/google-native:run%2Fv1:DomainMappingStatusResponse",
            "description": "The current status of the DomainMapping."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:run/v1:getJob": {
      "description": "Get information about a job.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "namespaceId"
        ]
      },
      "outputs": {
        "properties": {
          "apiVersion": {
            "description": "Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.",
            "type": "string"
          },
          "kind": {
            "description": "Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:run%2Fv1:ObjectMetaResponse",
            "description": "Optional. Standard object's metadata."
          },
          "spec": {
            "$ref": "#/types/google-native:run%2Fv1:JobSpecResponse",
            "description": "Optional. Specification of the desired behavior of a job."
          },
          "status": {
            "$ref": "#/types/google-native:run%2Fv1:JobStatusResponse",
            "description": "Current status of a job."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:run/v1:getJobIamPolicy": {
      "description": "Get the IAM Access Control policy currently in effect for the given job. This result does not include any inherited policies.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:run/v1:getService": {
      "description": "Gets information about a service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "apiVersion": {
            "description": "The API version for this call. It must be \"serving.knative.dev/v1\".",
            "type": "string"
          },
          "kind": {
            "description": "The kind of resource. It must be \"Service\".",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/types/google-native:run%2Fv1:ObjectMetaResponse",
            "description": "Metadata associated with this Service, including name, namespace, labels, and annotations. In Cloud Run, annotations with 'run.googleapis.com/' and 'autoscaling.knative.dev' are restricted, and the accepted annotations will be different depending on the resource type. The following Cloud Run-specific annotations are accepted in Service.metadata.annotations. * `run.googleapis.com/binary-authorization-breakglass` * `run.googleapis.com/binary-authorization` * `run.googleapis.com/client-name` * `run.googleapis.com/custom-audiences` * `run.googleapis.com/description` * `run.googleapis.com/disable-default-url` * `run.googleapis.com/gc-traffic-tags` * `run.googleapis.com/ingress` * `run.googleapis.com/ingress` sets the ingress settings for the Service. See [the ingress settings documentation](/run/docs/securing/ingress) for details on configuring ingress settings. * `run.googleapis.com/ingress-status` is output-only and contains the currently active ingress settings for the Service. `run.googleapis.com/ingress-status` may differ from `run.googleapis.com/ingress` while the system is processing a change to `run.googleapis.com/ingress` or if the system failed to process a change to `run.googleapis.com/ingress`. When the system has processed all changes successfully `run.googleapis.com/ingress-status` and `run.googleapis.com/ingress` are equal."
          },
          "spec": {
            "$ref": "#/types/google-native:run%2Fv1:ServiceSpecResponse",
            "description": "Holds the desired state of the Service (from the client)."
          },
          "status": {
            "$ref": "#/types/google-native:run%2Fv1:ServiceStatusResponse",
            "description": "Communicates the system-controlled state of the Service."
          }
        },
        "required": [
          "apiVersion",
          "kind",
          "metadata",
          "spec",
          "status"
        ],
        "type": "object"
      }
    },
    "google-native:run/v1:getServiceIamPolicy": {
      "description": "Gets the IAM Access Control policy currently in effect for the given Cloud Run service. This result does not include any inherited policies.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:run/v2:getJob": {
      "description": "Gets information about a Job.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "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. Cloud 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 on new resources. All system annotations in v1 now have a corresponding field in v2 Job. This field follows Kubernetes annotations' namespacing, limits, and rules.",
            "type": "object"
          },
          "binaryAuthorization": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2BinaryAuthorizationResponse",
            "description": "Settings for the Binary Authorization feature."
          },
          "client": {
            "description": "Arbitrary identifier for the API client.",
            "type": "string"
          },
          "clientVersion": {
            "description": "Arbitrary version identifier for the API client.",
            "type": "string"
          },
          "conditions": {
            "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in `reconciling` for additional information on reconciliation process in Cloud Run.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ConditionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The creation time.",
            "type": "string"
          },
          "creator": {
            "description": "Email address of the authenticated creator.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The deletion time.",
            "type": "string"
          },
          "etag": {
            "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates.",
            "type": "string"
          },
          "executionCount": {
            "description": "Number of executions created for this job.",
            "type": "integer"
          },
          "expireTime": {
            "description": "For a deleted resource, the time after which it will be permamently deleted.",
            "type": "string"
          },
          "generation": {
            "description": "A number that monotonically increases every time the user modifies the desired state.",
            "type": "string"
          },
          "labels": {
            "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 Job.",
            "type": "object"
          },
          "lastModifier": {
            "description": "Email address of the last authenticated modifier.",
            "type": "string"
          },
          "latestCreatedExecution": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ExecutionReferenceResponse",
            "description": "Name of the last created execution."
          },
          "launchStage": {
            "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features. For example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output.",
            "type": "string"
          },
          "name": {
            "description": "The fully qualified name of this Job. Format: projects/{project}/locations/{location}/jobs/{job}",
            "type": "string"
          },
          "observedGeneration": {
            "description": "The generation of this Job. See comments in `reconciling` for additional information on reconciliation process in Cloud Run.",
            "type": "string"
          },
          "reconciling": {
            "description": "Returns true if the Job is currently being acted upon by the system to bring it into the desired state. When a new Job is created, or an existing one is updated, Cloud Run will asynchronously perform all necessary steps to bring the Job to the desired state. This process is called reconciliation. While reconciliation is in process, `observed_generation` and `latest_succeeded_execution`, will have transient values that might mismatch the intended state: Once reconciliation is over (and this field is false), there are two possible outcomes: reconciliation succeeded and the state matches the Job, or there was an error, and reconciliation failed. This state can be found in `terminal_condition.state`. If reconciliation succeeded, the following fields will match: `observed_generation` and `generation`, `latest_succeeded_execution` and `latest_created_execution`. If reconciliation failed, `observed_generation` and `latest_succeeded_execution` will have the state of the last succeeded execution or empty for newly created Job. Additional information on the failure can be found in `terminal_condition` and `conditions`.",
            "type": "boolean"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "template": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ExecutionTemplateResponse",
            "description": "The template used to create executions for this Job."
          },
          "terminalCondition": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ConditionResponse",
            "description": "The Condition of this Job, containing its readiness status, and detailed error information in case it did not reach the desired state."
          },
          "uid": {
            "description": "Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last-modified time.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "binaryAuthorization",
          "client",
          "clientVersion",
          "conditions",
          "createTime",
          "creator",
          "deleteTime",
          "etag",
          "executionCount",
          "expireTime",
          "generation",
          "labels",
          "lastModifier",
          "latestCreatedExecution",
          "launchStage",
          "name",
          "observedGeneration",
          "reconciling",
          "satisfiesPzs",
          "template",
          "terminalCondition",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:run/v2:getJobIamPolicy": {
      "description": "Gets the IAM Access Control policy currently in effect for the given Job. This result does not include any inherited policies.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:run/v2:getService": {
      "description": "Gets information about a Service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "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. Cloud 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 in new resources. All system annotations in v1 now have a corresponding field in v2 Service. This field follows Kubernetes annotations' namespacing, limits, and rules.",
            "type": "object"
          },
          "binaryAuthorization": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2BinaryAuthorizationResponse",
            "description": "Settings for the Binary Authorization feature."
          },
          "client": {
            "description": "Arbitrary identifier for the API client.",
            "type": "string"
          },
          "clientVersion": {
            "description": "Arbitrary version identifier for the API client.",
            "type": "string"
          },
          "conditions": {
            "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in `reconciling` for additional information on reconciliation process in Cloud Run.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ConditionResponse"
            },
            "type": "array"
          },
          "createTime": {
            "description": "The creation time.",
            "type": "string"
          },
          "creator": {
            "description": "Email address of the authenticated creator.",
            "type": "string"
          },
          "customAudiences": {
            "description": "One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see https://cloud.google.com/run/docs/configuring/custom-audiences.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "deleteTime": {
            "description": "The deletion time.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the Service. This field currently has a 512-character limit.",
            "type": "string"
          },
          "etag": {
            "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates.",
            "type": "string"
          },
          "expireTime": {
            "description": "For a deleted resource, the time after which it will be permamently deleted.",
            "type": "string"
          },
          "generation": {
            "description": "A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a `string` instead of an `integer`.",
            "type": "string"
          },
          "ingress": {
            "description": "Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active.",
            "type": "string"
          },
          "labels": {
            "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. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud 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. All system labels in v1 now have a corresponding field in v2 Service.",
            "type": "object"
          },
          "lastModifier": {
            "description": "Email address of the last authenticated modifier.",
            "type": "string"
          },
          "latestCreatedRevision": {
            "description": "Name of the last created revision. See comments in `reconciling` for additional information on reconciliation process in Cloud Run.",
            "type": "string"
          },
          "latestReadyRevision": {
            "description": "Name of the latest revision that is serving traffic. See comments in `reconciling` for additional information on reconciliation process in Cloud Run.",
            "type": "string"
          },
          "launchStage": {
            "description": "The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). Cloud Run supports `ALPHA`, `BETA`, and `GA`. If no value is specified, GA is assumed. Set the launch stage to a preview stage on input to allow use of preview features in that stage. On read (or output), describes whether the resource uses preview features. For example, if ALPHA is provided as input, but only BETA and GA-level features are used, this field will be BETA on output.",
            "type": "string"
          },
          "name": {
            "description": "The fully qualified name of this Service. In CreateServiceRequest, this field is ignored, and instead composed from CreateServiceRequest.parent and CreateServiceRequest.service_id. Format: projects/{project}/locations/{location}/services/{service_id}",
            "type": "string"
          },
          "observedGeneration": {
            "description": "The generation of this Service currently serving traffic. See comments in `reconciling` for additional information on reconciliation process in Cloud Run. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a `string` instead of an `integer`.",
            "type": "string"
          },
          "reconciling": {
            "description": "Returns true if the Service is currently being acted upon by the system to bring it into the desired state. When a new Service is created, or an existing one is updated, Cloud Run will asynchronously perform all necessary steps to bring the Service to the desired serving state. This process is called reconciliation. While reconciliation is in process, `observed_generation`, `latest_ready_revison`, `traffic_statuses`, and `uri` will have transient values that might mismatch the intended state: Once reconciliation is over (and this field is false), there are two possible outcomes: reconciliation succeeded and the serving state matches the Service, or there was an error, and reconciliation failed. This state can be found in `terminal_condition.state`. If reconciliation succeeded, the following fields will match: `traffic` and `traffic_statuses`, `observed_generation` and `generation`, `latest_ready_revision` and `latest_created_revision`. If reconciliation failed, `traffic_statuses`, `observed_generation`, and `latest_ready_revision` will have the state of the last serving revision, or empty for newly created Services. Additional information on the failure can be found in `terminal_condition` and `conditions`.",
            "type": "boolean"
          },
          "satisfiesPzs": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "scaling": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ServiceScalingResponse",
            "description": "Optional. Specifies service-level scaling settings"
          },
          "template": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2RevisionTemplateResponse",
            "description": "The template used to create revisions for this Service."
          },
          "terminalCondition": {
            "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2ConditionResponse",
            "description": "The Condition of this Service, containing its readiness status, and detailed error information in case it did not reach a serving state. See comments in `reconciling` for additional information on reconciliation process in Cloud Run."
          },
          "traffic": {
            "description": "Specifies how to distribute traffic over a collection of Revisions belonging to the Service. If traffic is empty or not provided, defaults to 100% traffic to the latest `Ready` Revision.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TrafficTargetResponse"
            },
            "type": "array"
          },
          "trafficStatuses": {
            "description": "Detailed status information for corresponding traffic targets. See comments in `reconciling` for additional information on reconciliation process in Cloud Run.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv2:GoogleCloudRunV2TrafficTargetStatusResponse"
            },
            "type": "array"
          },
          "uid": {
            "description": "Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last-modified time.",
            "type": "string"
          },
          "uri": {
            "description": "The main URI in which this Service is serving traffic.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "binaryAuthorization",
          "client",
          "clientVersion",
          "conditions",
          "createTime",
          "creator",
          "customAudiences",
          "deleteTime",
          "description",
          "etag",
          "expireTime",
          "generation",
          "ingress",
          "labels",
          "lastModifier",
          "latestCreatedRevision",
          "latestReadyRevision",
          "launchStage",
          "name",
          "observedGeneration",
          "reconciling",
          "satisfiesPzs",
          "scaling",
          "template",
          "terminalCondition",
          "traffic",
          "trafficStatuses",
          "uid",
          "updateTime",
          "uri"
        ],
        "type": "object"
      }
    },
    "google-native:run/v2:getServiceIamPolicy": {
      "description": "Gets the IAM Access Control policy currently in effect for the given Cloud Run Service. This result does not include any inherited policies.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:run%2Fv2:GoogleIamV1BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:runtimeconfig/v1beta1:getConfig": {
      "description": "Gets information about a RuntimeConfig resource.",
      "inputs": {
        "properties": {
          "configId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "configId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "An optional description of the RuntimeConfig object.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of a runtime config. The name must have the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME] The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an arbitrary name that matches the `[0-9A-Za-z](?:[_.A-Za-z0-9-]{0,62}[_.A-Za-z0-9])?` regular expression. The length of `[CONFIG_NAME]` must be less than 64 characters. You pick the RuntimeConfig resource name, but the server will validate that the name adheres to this format. After you create the resource, you cannot change the resource's name.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:runtimeconfig/v1beta1:getConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "configId": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "configId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:runtimeconfig/v1beta1:getVariable": {
      "description": "Gets information about a single variable.",
      "inputs": {
        "properties": {
          "configId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "variableId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "configId",
          "variableId"
        ]
      },
      "outputs": {
        "properties": {
          "name": {
            "description": "The name of the variable resource, in the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME] The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a valid RuntimeConfig resource and `[VARIABLE_NAME]` follows Unix file system file path naming. The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and dashes. Slashes are used as path element separators and are not part of the `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one non-slash character. Multiple slashes are coalesced into single slash character. Each path segment should match [0-9A-Za-z](?:[_.A-Za-z0-9-]{0,62}[_.A-Za-z0-9])? regular expression. The length of a `[VARIABLE_NAME]` must be less than 256 characters. Once you create a variable, you cannot change the variable name.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the variable. The variable state indicates the outcome of the `variables().watch` call and is visible through the `get` and `list` calls.",
            "type": "string"
          },
          "text": {
            "description": "The string value of the variable. The length of the value must be less than 4096 bytes. Empty values are also accepted. For example, `text: \"my text value\"`. The string must be valid UTF-8.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time of the last variable update. Timestamp will be UTC timestamp.",
            "type": "string"
          },
          "value": {
            "description": "The binary value of the variable. The length of the value must be less than 4096 bytes. Empty values are also accepted. The value must be base64 encoded, and must comply with IETF RFC4648 (https://www.ietf.org/rfc/rfc4648.txt). Only one of `value` or `text` can be set.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "state",
          "text",
          "updateTime",
          "value"
        ],
        "type": "object"
      }
    },
    "google-native:runtimeconfig/v1beta1:getWaiter": {
      "description": "Gets information about a single waiter.",
      "inputs": {
        "properties": {
          "configId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "waiterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "configId",
          "waiterId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The instant at which this Waiter resource was created. Adding the value of `timeout` to this instant yields the timeout deadline for the waiter.",
            "type": "string"
          },
          "done": {
            "description": "If the value is `false`, it means the waiter is still waiting for one of its conditions to be met. If true, the waiter has finished. If the waiter finished due to a timeout or failure, `error` will be set.",
            "type": "boolean"
          },
          "error": {
            "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:StatusResponse",
            "description": "If the waiter ended due to a failure or timeout, this value will be set."
          },
          "failure": {
            "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:EndConditionResponse",
            "description": "[Optional] The failure condition of this waiter. If this condition is met, `done` will be set to `true` and the `error` code will be set to `ABORTED`. The failure condition takes precedence over the success condition. If both conditions are met, a failure will be indicated. This value is optional; if no failure condition is set, the only failure scenario will be a timeout."
          },
          "name": {
            "description": "The name of the Waiter resource, in the format: projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME] The `[PROJECT_ID]` must be a valid Google Cloud project ID, the `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the `[WAITER_NAME]` must match RFC 1035 segment specification, and the length of `[WAITER_NAME]` must be less than 64 bytes. After you create a Waiter resource, you cannot change the resource name.",
            "type": "string"
          },
          "success": {
            "$ref": "#/types/google-native:runtimeconfig%2Fv1beta1:EndConditionResponse",
            "description": "[Required] The success condition. If this condition is met, `done` will be set to `true` and the `error` value will remain unset. The failure condition takes precedence over the success condition. If both conditions are met, a failure will be indicated."
          },
          "timeout": {
            "description": "[Required] Specifies the timeout of the waiter in seconds, beginning from the instant that `waiters().create` method is called. If this time elapses before the success or failure conditions are met, the waiter fails and sets the `error` code to `DEADLINE_EXCEEDED`.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "done",
          "error",
          "failure",
          "name",
          "success",
          "timeout"
        ],
        "type": "object"
      }
    },
    "google-native:secretmanager/v1:getSecret": {
      "description": "Gets metadata for a given Secret.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "secretId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "secretId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Custom metadata about the secret. Annotations are distinct from various forms of labels. Annotations exist to allow client tools to store their own state information without requiring a database. Annotation keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, begin and end with an alphanumeric character ([a-z0-9A-Z]), and may have dashes (-), underscores (_), dots (.), and alphanumerics in between these symbols. The total size of annotation keys and values must be less than 16KiB.",
            "type": "object"
          },
          "createTime": {
            "description": "The time at which the Secret was created.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Etag of the currently stored Secret.",
            "type": "string"
          },
          "expireTime": {
            "description": "Optional. Timestamp in UTC when the Secret is scheduled to expire. This is always provided on output, regardless of what was sent on input.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels assigned to this Secret. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `\\p{Ll}\\p{Lo}{0,62}` Label values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}` No more than 64 labels can be assigned to a given resource.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the Secret in the format `projects/*/secrets/*`.",
            "type": "string"
          },
          "replication": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:ReplicationResponse",
            "description": "Immutable. The replication policy of the secret data attached to the Secret. The replication policy cannot be changed after the Secret has been created."
          },
          "rotation": {
            "$ref": "#/types/google-native:secretmanager%2Fv1:RotationResponse",
            "description": "Optional. Rotation policy attached to the Secret. May be excluded if there is no rotation policy."
          },
          "topics": {
            "description": "Optional. A list of up to 10 Pub/Sub topics to which messages are published when control plane operations are called on the secret or its versions.",
            "items": {
              "$ref": "#/types/google-native:secretmanager%2Fv1:TopicResponse"
            },
            "type": "array"
          },
          "ttl": {
            "description": "Input only. The TTL for the Secret.",
            "type": "string"
          },
          "versionAliases": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Mapping from version alias to version name. A version alias is a string with a maximum length of 63 characters and can contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and underscore ('_') characters. An alias string must start with a letter and cannot be the string 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. Version-Alias pairs will be viewable via GetSecret and modifiable via UpdateSecret. At launch Access by Allias will only be supported on GetSecretVersion and AccessSecretVersion.",
            "type": "object"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "etag",
          "expireTime",
          "labels",
          "name",
          "replication",
          "rotation",
          "topics",
          "ttl",
          "versionAliases"
        ],
        "type": "object"
      }
    },
    "google-native:secretmanager/v1:getSecretIamPolicy": {
      "description": "Gets the access control policy for a secret. Returns empty policy if the secret exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "secretId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "secretId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:secretmanager%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:secretmanager%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:secretmanager/v1beta1:getSecret": {
      "description": "Gets metadata for a given Secret.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "secretId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "secretId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which the Secret was created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels assigned to this Secret. Label keys must be between 1 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `\\p{Ll}\\p{Lo}{0,62}` Label values must be between 0 and 63 characters long, have a UTF-8 encoding of maximum 128 bytes, and must conform to the following PCRE regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}` No more than 64 labels can be assigned to a given resource.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the Secret in the format `projects/*/secrets/*`.",
            "type": "string"
          },
          "replication": {
            "$ref": "#/types/google-native:secretmanager%2Fv1beta1:ReplicationResponse",
            "description": "Immutable. The replication policy of the secret data attached to the Secret. The replication policy cannot be changed after the Secret has been created."
          }
        },
        "required": [
          "createTime",
          "labels",
          "name",
          "replication"
        ],
        "type": "object"
      }
    },
    "google-native:secretmanager/v1beta1:getSecretIamPolicy": {
      "description": "Gets the access control policy for a secret. Returns empty policy if the secret exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "secretId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "secretId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:secretmanager%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:secretmanager%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getFolderBigQueryExport": {
      "description": "Gets a BigQuery export.",
      "inputs": {
        "properties": {
          "bigQueryExportId": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bigQueryExportId",
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation.",
            "type": "string"
          },
          "dataset": {
            "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).",
            "type": "string"
          },
          "description": {
            "description": "The description of the export (max of 1024 characters).",
            "type": "string"
          },
          "filter": {
            "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `\u003e`, `\u003c`, `\u003e=`, `\u003c=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes.",
            "type": "string"
          },
          "mostRecentEditor": {
            "description": "Email address of the user who last edited the BigQuery export. This field is set by the server and will be ignored if provided on export creation or update.",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests.",
            "type": "string"
          },
          "principal": {
            "description": "The service account that needs permission to create table and upload data to the BigQuery dataset.",
            "type": "string"
          },
          "updateTime": {
            "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataset",
          "description",
          "filter",
          "mostRecentEditor",
          "name",
          "principal",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getFolderNotificationConfig": {
      "description": "Gets a notification config.",
      "inputs": {
        "properties": {
          "folderId": {
            "type": "string"
          },
          "notificationConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "folderId",
          "notificationConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "The description of the notification config (max of 1024 characters).",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\".",
            "type": "string"
          },
          "pubsubTopic": {
            "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\".",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account that needs \"pubsub.topics.publish\" permission to publish to the Pub/Sub topic.",
            "type": "string"
          },
          "streamingConfig": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfigResponse",
            "description": "The config for triggering streaming-based notifications."
          }
        },
        "required": [
          "description",
          "name",
          "pubsubTopic",
          "serviceAccount",
          "streamingConfig"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getFolderSecurityHealthAnalyticsSettingCustomModule": {
      "description": "Retrieves a SecurityHealthAnalyticsCustomModule.",
      "inputs": {
        "properties": {
          "customModuleId": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customModuleId",
          "folderId"
        ]
      },
      "outputs": {
        "properties": {
          "ancestorModule": {
            "description": "If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.",
            "type": "string"
          },
          "customConfig": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfigResponse",
            "description": "The user specified custom configuration for the module."
          },
          "displayName": {
            "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.",
            "type": "string"
          },
          "enablementState": {
            "description": "The enablement state of the custom module.",
            "type": "string"
          },
          "lastEditor": {
            "description": "The editor that last updated the custom module.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which the custom module was last updated.",
            "type": "string"
          }
        },
        "required": [
          "ancestorModule",
          "customConfig",
          "displayName",
          "enablementState",
          "lastEditor",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getMuteConfig": {
      "description": "Gets a mute config.",
      "inputs": {
        "properties": {
          "muteConfigId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "muteConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation.",
            "type": "string"
          },
          "description": {
            "description": "A description of the mute config.",
            "type": "string"
          },
          "displayName": {
            "description": "The human readable name to be displayed for the mute config.",
            "type": "string"
          },
          "filter": {
            "description": "An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`",
            "type": "string"
          },
          "mostRecentEditor": {
            "description": "Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update.",
            "type": "string"
          },
          "name": {
            "description": "This field will be ignored if provided on config creation. Format \"organizations/{organization}/muteConfigs/{mute_config}\" \"folders/{folder}/muteConfigs/{mute_config}\" \"projects/{project}/muteConfigs/{mute_config}\" \"organizations/{organization}/locations/global/muteConfigs/{mute_config}\" \"folders/{folder}/locations/global/muteConfigs/{mute_config}\" \"projects/{project}/locations/global/muteConfigs/{mute_config}\"",
            "type": "string"
          },
          "updateTime": {
            "description": "The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "filter",
          "mostRecentEditor",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getNotificationConfig": {
      "description": "Gets a notification config.",
      "inputs": {
        "properties": {
          "notificationConfigId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "notificationConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "The description of the notification config (max of 1024 characters).",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\".",
            "type": "string"
          },
          "pubsubTopic": {
            "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\".",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account that needs \"pubsub.topics.publish\" permission to publish to the Pub/Sub topic.",
            "type": "string"
          },
          "streamingConfig": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfigResponse",
            "description": "The config for triggering streaming-based notifications."
          }
        },
        "required": [
          "description",
          "name",
          "pubsubTopic",
          "serviceAccount",
          "streamingConfig"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getOrganizationBigQueryExport": {
      "description": "Gets a BigQuery export.",
      "inputs": {
        "properties": {
          "bigQueryExportId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bigQueryExportId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation.",
            "type": "string"
          },
          "dataset": {
            "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).",
            "type": "string"
          },
          "description": {
            "description": "The description of the export (max of 1024 characters).",
            "type": "string"
          },
          "filter": {
            "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `\u003e`, `\u003c`, `\u003e=`, `\u003c=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes.",
            "type": "string"
          },
          "mostRecentEditor": {
            "description": "Email address of the user who last edited the BigQuery export. This field is set by the server and will be ignored if provided on export creation or update.",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests.",
            "type": "string"
          },
          "principal": {
            "description": "The service account that needs permission to create table and upload data to the BigQuery dataset.",
            "type": "string"
          },
          "updateTime": {
            "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataset",
          "description",
          "filter",
          "mostRecentEditor",
          "name",
          "principal",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getOrganizationEventThreatDetectionSettingCustomModule": {
      "description": "Gets an Event Threat Detection custom module.",
      "inputs": {
        "properties": {
          "customModuleId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customModuleId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Config for the module. For the resident module, its config value is defined at this level. For the inherited module, its config value is inherited from the ancestor module.",
            "type": "object"
          },
          "description": {
            "description": "The description for the module.",
            "type": "string"
          },
          "displayName": {
            "description": "The human readable name to be displayed for the module.",
            "type": "string"
          },
          "enablementState": {
            "description": "The state of enablement for the module at the given level of the hierarchy.",
            "type": "string"
          },
          "lastEditor": {
            "description": "The editor the module was last updated by.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the Event Threat Detection custom module. Its format is: * \"organizations/{organization}/eventThreatDetectionSettings/customModules/{module}\". * \"folders/{folder}/eventThreatDetectionSettings/customModules/{module}\". * \"projects/{project}/eventThreatDetectionSettings/customModules/{module}\".",
            "type": "string"
          },
          "type": {
            "description": "Type for the module. e.g. CONFIGURABLE_BAD_IP.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time the module was last updated.",
            "type": "string"
          }
        },
        "required": [
          "config",
          "description",
          "displayName",
          "enablementState",
          "lastEditor",
          "name",
          "type",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getOrganizationMuteConfig": {
      "description": "Gets a mute config.",
      "inputs": {
        "properties": {
          "muteConfigId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "muteConfigId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation.",
            "type": "string"
          },
          "description": {
            "description": "A description of the mute config.",
            "type": "string"
          },
          "displayName": {
            "description": "The human readable name to be displayed for the mute config.",
            "type": "string"
          },
          "filter": {
            "description": "An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`",
            "type": "string"
          },
          "mostRecentEditor": {
            "description": "Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update.",
            "type": "string"
          },
          "name": {
            "description": "This field will be ignored if provided on config creation. Format \"organizations/{organization}/muteConfigs/{mute_config}\" \"folders/{folder}/muteConfigs/{mute_config}\" \"projects/{project}/muteConfigs/{mute_config}\" \"organizations/{organization}/locations/global/muteConfigs/{mute_config}\" \"folders/{folder}/locations/global/muteConfigs/{mute_config}\" \"projects/{project}/locations/global/muteConfigs/{mute_config}\"",
            "type": "string"
          },
          "updateTime": {
            "description": "The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "filter",
          "mostRecentEditor",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getOrganizationNotificationConfig": {
      "description": "Gets a notification config.",
      "inputs": {
        "properties": {
          "notificationConfigId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "notificationConfigId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "The description of the notification config (max of 1024 characters).",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/notificationConfigs/notify_public_bucket\", \"folders/{folder_id}/notificationConfigs/notify_public_bucket\", or \"projects/{project_id}/notificationConfigs/notify_public_bucket\".",
            "type": "string"
          },
          "pubsubTopic": {
            "description": "The Pub/Sub topic to send notifications to. Its format is \"projects/[project_id]/topics/[topic]\".",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account that needs \"pubsub.topics.publish\" permission to publish to the Pub/Sub topic.",
            "type": "string"
          },
          "streamingConfig": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:StreamingConfigResponse",
            "description": "The config for triggering streaming-based notifications."
          }
        },
        "required": [
          "description",
          "name",
          "pubsubTopic",
          "serviceAccount",
          "streamingConfig"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getOrganizationSecurityHealthAnalyticsSettingCustomModule": {
      "description": "Retrieves a SecurityHealthAnalyticsCustomModule.",
      "inputs": {
        "properties": {
          "customModuleId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customModuleId",
          "organizationId"
        ]
      },
      "outputs": {
        "properties": {
          "ancestorModule": {
            "description": "If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.",
            "type": "string"
          },
          "customConfig": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfigResponse",
            "description": "The user specified custom configuration for the module."
          },
          "displayName": {
            "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.",
            "type": "string"
          },
          "enablementState": {
            "description": "The enablement state of the custom module.",
            "type": "string"
          },
          "lastEditor": {
            "description": "The editor that last updated the custom module.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which the custom module was last updated.",
            "type": "string"
          }
        },
        "required": [
          "ancestorModule",
          "customConfig",
          "displayName",
          "enablementState",
          "lastEditor",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getOrganizationSourceIamPolicy": {
      "description": "Gets the access control policy on the specified Source.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:securitycenter%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:securitycenter%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getProjectBigQueryExport": {
      "description": "Gets a BigQuery export.",
      "inputs": {
        "properties": {
          "bigQueryExportId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bigQueryExportId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time at which the BigQuery export was created. This field is set by the server and will be ignored if provided on export on creation.",
            "type": "string"
          },
          "dataset": {
            "description": "The dataset to write findings' updates to. Its format is \"projects/[project_id]/datasets/[bigquery_dataset_id]\". BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).",
            "type": "string"
          },
          "description": {
            "description": "The description of the export (max of 1024 characters).",
            "type": "string"
          },
          "filter": {
            "description": "Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `\u003e`, `\u003c`, `\u003e=`, `\u003c=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes.",
            "type": "string"
          },
          "mostRecentEditor": {
            "description": "Email address of the user who last edited the BigQuery export. This field is set by the server and will be ignored if provided on export creation or update.",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: \"organizations/{organization_id}/bigQueryExports/{export_id}\" Example format: \"folders/{folder_id}/bigQueryExports/{export_id}\" Example format: \"projects/{project_id}/bigQueryExports/{export_id}\" This field is provided in responses, and is ignored when provided in create requests.",
            "type": "string"
          },
          "principal": {
            "description": "The service account that needs permission to create table and upload data to the BigQuery dataset.",
            "type": "string"
          },
          "updateTime": {
            "description": "The most recent time at which the BigQuery export was updated. This field is set by the server and will be ignored if provided on export creation or update.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "dataset",
          "description",
          "filter",
          "mostRecentEditor",
          "name",
          "principal",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getProjectSecurityHealthAnalyticsSettingCustomModule": {
      "description": "Retrieves a SecurityHealthAnalyticsCustomModule.",
      "inputs": {
        "properties": {
          "customModuleId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customModuleId"
        ]
      },
      "outputs": {
        "properties": {
          "ancestorModule": {
            "description": "If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.",
            "type": "string"
          },
          "customConfig": {
            "$ref": "#/types/google-native:securitycenter%2Fv1:GoogleCloudSecuritycenterV1CustomConfigResponse",
            "description": "The user specified custom configuration for the module."
          },
          "displayName": {
            "description": "The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.",
            "type": "string"
          },
          "enablementState": {
            "description": "The enablement state of the custom module.",
            "type": "string"
          },
          "lastEditor": {
            "description": "The editor that last updated the custom module.",
            "type": "string"
          },
          "name": {
            "description": "Immutable. The resource name of the custom module. Its format is \"organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}\", or \"projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}\" The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which the custom module was last updated.",
            "type": "string"
          }
        },
        "required": [
          "ancestorModule",
          "customConfig",
          "displayName",
          "enablementState",
          "lastEditor",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1:getSource": {
      "description": "Gets a source.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "canonicalName": {
            "description": "The canonical name of the finding source. It's either \"organizations/{organization_id}/sources/{source_id}\", \"folders/{folder_id}/sources/{source_id}\", or \"projects/{project_number}/sources/{source_id}\", depending on the closest CRM ancestor of the resource associated with the finding.",
            "type": "string"
          },
          "description": {
            "description": "The description of the source (max of 1024 characters). Example: \"Web Security Scanner is a web security scanner for common vulnerabilities in App Engine applications. It can automatically scan and detect four common vulnerabilities, including cross-site-scripting (XSS), Flash injection, mixed content (HTTP in HTTPS), and outdated or insecure libraries.\"",
            "type": "string"
          },
          "displayName": {
            "description": "The source's display name. A source's display name must be unique amongst its siblings, for example, two sources with the same parent can't share the same display name. The display name must have a length between 1 and 64 characters (inclusive).",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of this source. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/sources/{source_id}\"",
            "type": "string"
          }
        },
        "required": [
          "canonicalName",
          "description",
          "displayName",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1beta1:getOrganizationSourceIamPolicy": {
      "description": "Gets the access control policy on the specified Source.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:securitycenter%2Fv1beta1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:securitycenter%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:securitycenter/v1beta1:getSource": {
      "description": "Gets a source.",
      "inputs": {
        "properties": {
          "organizationId": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "organizationId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "The description of the source (max of 1024 characters). Example: \"Web Security Scanner is a web security scanner for common vulnerabilities in App Engine applications. It can automatically scan and detect four common vulnerabilities, including cross-site-scripting (XSS), Flash injection, mixed content (HTTP in HTTPS), and outdated/insecure libraries.\"",
            "type": "string"
          },
          "displayName": {
            "description": "The source's display name. A source's display name must be unique amongst its siblings, for example, two sources with the same parent can't share the same display name. The display name must have a length between 1 and 64 characters (inclusive).",
            "type": "string"
          },
          "name": {
            "description": "The relative resource name of this source. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: \"organizations/{organization_id}/sources/{source_id}\"",
            "type": "string"
          }
        },
        "required": [
          "description",
          "displayName",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1:getEndpoint": {
      "description": "Gets an endpoint.",
      "inputs": {
        "properties": {
          "endpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointId",
          "location",
          "namespaceId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "address": {
            "description": "Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.",
            "type": "string"
          },
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.",
            "type": "string"
          },
          "network": {
            "description": "Immutable. The Google Compute Engine network (VPC) of the endpoint in the format `projects//locations/global/networks/*`. The project must be specified by project number (project id is rejected). Incorrectly formatted networks are rejected, we also check to make sure that you have the servicedirectory.networks.attach permission on the project specified.",
            "type": "string"
          },
          "port": {
            "description": "Optional. Service Directory rejects values outside of `[0, 65535]`.",
            "type": "integer"
          },
          "uid": {
            "description": "The globally unique identifier of the endpoint in the UUID4 format.",
            "type": "string"
          }
        },
        "required": [
          "address",
          "annotations",
          "name",
          "network",
          "port",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1:getNamespace": {
      "description": "Gets a namespace.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId"
        ]
      },
      "outputs": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels associated with this namespace. No more than 64 user labels can be associated with a given resource. Label keys and values can be no longer than 63 characters.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The resource name for the namespace in the format `projects/*/locations/*/namespaces/*`.",
            "type": "string"
          },
          "uid": {
            "description": "The globally unique identifier of the namespace in the UUID4 format.",
            "type": "string"
          }
        },
        "required": [
          "labels",
          "name",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1:getNamespaceIamPolicy": {
      "description": "Gets the IAM Policy for a resource (namespace or service only).",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:servicedirectory%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1:getNamespaceServiceIamPolicy": {
      "description": "Gets the IAM Policy for a resource (namespace or service only).",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:servicedirectory%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1:getService": {
      "description": "Gets a service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.",
            "type": "object"
          },
          "endpoints": {
            "description": "Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.",
            "items": {
              "$ref": "#/types/google-native:servicedirectory%2Fv1:EndpointResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.",
            "type": "string"
          },
          "uid": {
            "description": "The globally unique identifier of the service in the UUID4 format.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "endpoints",
          "name",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1beta1:getEndpoint": {
      "description": "Gets an endpoint.",
      "inputs": {
        "properties": {
          "endpointId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "endpointId",
          "location",
          "namespaceId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "address": {
            "description": "Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the endpoint was created.",
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.",
            "type": "string"
          },
          "network": {
            "description": "Immutable. The Google Compute Engine network (VPC) of the endpoint in the format `projects//locations/global/networks/*`. The project must be specified by project number (project id is rejected). Incorrectly formatted networks are rejected, but no other validation is performed on this field (ex. network or project existence, reachability, or permissions).",
            "type": "string"
          },
          "port": {
            "description": "Optional. Service Directory rejects values outside of `[0, 65535]`.",
            "type": "integer"
          },
          "uid": {
            "description": "A globally unique identifier (in UUID4 format) for this endpoint.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the endpoint was last updated.",
            "type": "string"
          }
        },
        "required": [
          "address",
          "createTime",
          "metadata",
          "name",
          "network",
          "port",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1beta1:getNamespace": {
      "description": "Gets a namespace.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the namespace was created.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Resource labels associated with this namespace. No more than 64 user labels can be associated with a given resource. Label keys and values can be no longer than 63 characters.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The resource name for the namespace in the format `projects/*/locations/*/namespaces/*`.",
            "type": "string"
          },
          "uid": {
            "description": "A globally unique identifier (in UUID4 format) for this namespace.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the namespace was last updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "labels",
          "name",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1beta1:getNamespaceIamPolicy": {
      "description": "Gets the IAM Policy for a resource",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1beta1:getNamespaceServiceIamPolicy": {
      "description": "Gets the IAM Policy for a resource",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1beta1:getNamespaceWorkloadIamPolicy": {
      "description": "Gets the IAM Policy for a resource",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workloadId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId",
          "workloadId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:servicedirectory/v1beta1:getService": {
      "description": "Gets a service.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "namespaceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "namespaceId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp when the service was created.",
            "type": "string"
          },
          "endpoints": {
            "description": "Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.",
            "items": {
              "$ref": "#/types/google-native:servicedirectory%2Fv1beta1:EndpointResponse"
            },
            "type": "array"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.",
            "type": "string"
          },
          "uid": {
            "description": "A globally unique identifier (in UUID4 format) for this service.",
            "type": "string"
          },
          "updateTime": {
            "description": "The timestamp when the service was last updated. Note: endpoints being created/deleted/updated within the service are not considered service updates for the purpose of this timestamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "endpoints",
          "metadata",
          "name",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:servicemanagement/v1:getConfig": {
      "description": "Gets a service configuration (version) for a managed service.",
      "inputs": {
        "properties": {
          "configId": {
            "type": "string"
          },
          "serviceName": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "configId",
          "serviceName"
        ]
      },
      "outputs": {
        "properties": {
          "apis": {
            "description": "A list of API interfaces exported by this service. Only the `name` field of the google.protobuf.Api needs to be provided by the configuration author, as the remaining fields will be derived from the IDL during the normalization process. It is an error to specify an API interface here which cannot be resolved against the associated IDL files.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:ApiResponse"
            },
            "type": "array"
          },
          "authentication": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:AuthenticationResponse",
            "description": "Auth configuration."
          },
          "backend": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:BackendResponse",
            "description": "API backend configuration."
          },
          "billing": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:BillingResponse",
            "description": "Billing configuration."
          },
          "configVersion": {
            "description": "Obsolete. Do not use. This field has no semantic meaning. The service config compiler always sets this field to `3`.",
            "type": "integer"
          },
          "context": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:ContextResponse",
            "description": "Context configuration."
          },
          "control": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:ControlResponse",
            "description": "Configuration for the service control plane."
          },
          "customError": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:CustomErrorResponse",
            "description": "Custom error configuration."
          },
          "documentation": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:DocumentationResponse",
            "description": "Additional API documentation."
          },
          "endpoints": {
            "description": "Configuration for network endpoints. If this is empty, then an endpoint with the same name as the service is automatically generated to service all defined APIs.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:EndpointResponse"
            },
            "type": "array"
          },
          "enums": {
            "description": "A list of all enum types included in this API service. Enums referenced directly or indirectly by the `apis` are automatically included. Enums which are not referenced but shall be included should be listed here by name by the configuration author. Example: enums: - name: google.someapi.v1.SomeEnum",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:EnumResponse"
            },
            "type": "array"
          },
          "http": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:HttpResponse",
            "description": "HTTP configuration."
          },
          "logging": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:LoggingResponse",
            "description": "Logging configuration."
          },
          "logs": {
            "description": "Defines the logs used by this service.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:LogDescriptorResponse"
            },
            "type": "array"
          },
          "metrics": {
            "description": "Defines the metrics used by this service.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:MetricDescriptorResponse"
            },
            "type": "array"
          },
          "monitoredResources": {
            "description": "Defines the monitored resources used by this service. This is required by the Service.monitoring and Service.logging configurations.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoredResourceDescriptorResponse"
            },
            "type": "array"
          },
          "monitoring": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:MonitoringResponse",
            "description": "Monitoring configuration."
          },
          "name": {
            "description": "The service name, which is a DNS-like logical identifier for the service, such as `calendar.googleapis.com`. The service name typically goes through DNS verification to make sure the owner of the service also owns the DNS name.",
            "type": "string"
          },
          "producerProjectId": {
            "description": "The Google project that owns this service.",
            "type": "string"
          },
          "publishing": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:PublishingResponse",
            "description": "Settings for [Google Cloud Client libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) generated from APIs defined as protocol buffers."
          },
          "quota": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:QuotaResponse",
            "description": "Quota configuration."
          },
          "sourceInfo": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:SourceInfoResponse",
            "description": "The source information for this configuration if available."
          },
          "systemParameters": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:SystemParametersResponse",
            "description": "System parameter configuration."
          },
          "systemTypes": {
            "description": "A list of all proto message types included in this API service. It serves similar purpose as [google.api.Service.types], except that these types are not needed by user-defined APIs. Therefore, they will not show up in the generated discovery doc. This field should only be used to define system APIs in ESF.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:TypeResponse"
            },
            "type": "array"
          },
          "title": {
            "description": "The product title for this service, it is the name displayed in Google Cloud Console.",
            "type": "string"
          },
          "types": {
            "description": "A list of all proto message types included in this API service. Types referenced directly or indirectly by the `apis` are automatically included. Messages which are not referenced but shall be included, such as types used by the `google.protobuf.Any` type, should be listed here by name by the configuration author. Example: types: - name: google.protobuf.Int32",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:TypeResponse"
            },
            "type": "array"
          },
          "usage": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:UsageResponse",
            "description": "Configuration controlling usage of this service."
          }
        },
        "required": [
          "apis",
          "authentication",
          "backend",
          "billing",
          "configVersion",
          "context",
          "control",
          "customError",
          "documentation",
          "endpoints",
          "enums",
          "http",
          "logging",
          "logs",
          "metrics",
          "monitoredResources",
          "monitoring",
          "name",
          "producerProjectId",
          "publishing",
          "quota",
          "sourceInfo",
          "systemParameters",
          "systemTypes",
          "title",
          "types",
          "usage"
        ],
        "type": "object"
      }
    },
    "google-native:servicemanagement/v1:getRollout": {
      "description": "Gets a service configuration rollout.",
      "inputs": {
        "properties": {
          "rolloutId": {
            "type": "string"
          },
          "serviceName": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "rolloutId",
          "serviceName"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of the rollout. Readonly.",
            "type": "string"
          },
          "createdBy": {
            "description": "The user who created the Rollout. Readonly.",
            "type": "string"
          },
          "deleteServiceStrategy": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:DeleteServiceStrategyResponse",
            "description": "The strategy associated with a rollout to delete a `ManagedService`. Readonly."
          },
          "rolloutId": {
            "description": "Optional. Unique identifier of this Rollout. Must be no longer than 63 characters and only lower case letters, digits, '.', '_' and '-' are allowed. If not specified by client, the server will generate one. The generated id will have the form of , where \"date\" is the create date in ISO 8601 format. \"revision number\" is a monotonically increasing positive number that is reset every day for each service. An example of the generated rollout_id is '2016-02-16r1'",
            "type": "string"
          },
          "serviceName": {
            "description": "The name of the service associated with this Rollout.",
            "type": "string"
          },
          "status": {
            "description": "The status of this rollout. Readonly. In case of a failed rollout, the system will automatically rollback to the current Rollout version. Readonly.",
            "type": "string"
          },
          "trafficPercentStrategy": {
            "$ref": "#/types/google-native:servicemanagement%2Fv1:TrafficPercentStrategyResponse",
            "description": "Google Service Control selects service configurations based on traffic percentage."
          }
        },
        "required": [
          "createTime",
          "createdBy",
          "deleteServiceStrategy",
          "rolloutId",
          "serviceName",
          "status",
          "trafficPercentStrategy"
        ],
        "type": "object"
      }
    },
    "google-native:servicemanagement/v1:getService": {
      "description": "Gets a managed service. Authentication is required unless the service is public.",
      "inputs": {
        "properties": {
          "serviceName": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "serviceName"
        ]
      },
      "outputs": {
        "properties": {
          "producerProjectId": {
            "description": "ID of the project that produces and owns this service.",
            "type": "string"
          },
          "serviceName": {
            "description": "The name of the service. See the [overview](https://cloud.google.com/service-infrastructure/docs/overview) for naming requirements.",
            "type": "string"
          }
        },
        "required": [
          "producerProjectId",
          "serviceName"
        ],
        "type": "object"
      }
    },
    "google-native:servicemanagement/v1:getServiceConsumerIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "consumerId": {
            "type": "string"
          },
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "consumerId",
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:servicemanagement/v1:getServiceIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "serviceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "serviceId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:servicemanagement%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:sourcerepo/v1:getRepo": {
      "description": "Returns information about a repo.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "repoId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "repoId"
        ]
      },
      "outputs": {
        "properties": {
          "mirrorConfig": {
            "$ref": "#/types/google-native:sourcerepo%2Fv1:MirrorConfigResponse",
            "description": "How this repository mirrors a repository managed by another service. Read-only field."
          },
          "name": {
            "description": "Resource name of the repository, of the form `projects//repos/`. The repo name may contain slashes. eg, `projects/myproject/repos/name/with/slash`",
            "type": "string"
          },
          "pubsubConfigs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "How this repository publishes a change in the repository through Cloud Pub/Sub. Keyed by the topic names.",
            "type": "object"
          },
          "size": {
            "description": "The disk usage of the repo, in bytes. Read-only field. Size is only returned by GetRepo.",
            "type": "string"
          },
          "url": {
            "description": "URL to clone the repository from Google Cloud Source Repositories. Read-only field.",
            "type": "string"
          }
        },
        "required": [
          "mirrorConfig",
          "name",
          "pubsubConfigs",
          "size",
          "url"
        ],
        "type": "object"
      }
    },
    "google-native:sourcerepo/v1:getRepoIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "repoId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "repoId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:sourcerepo%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:sourcerepo%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:spanner/v1:getBackup": {
      "description": "Gets metadata on a pending or completed Backup.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the CreateBackup request is received. If the request does not specify `version_time`, the `version_time` of the backup will be equivalent to the `create_time`.",
            "type": "string"
          },
          "database": {
            "description": "Required for the CreateBackup operation. Name of the database from which this backup was created. This needs to be in the same instance as the backup. Values are of the form `projects//instances//databases/`.",
            "type": "string"
          },
          "databaseDialect": {
            "description": "The database dialect information for the backup.",
            "type": "string"
          },
          "encryptionInfo": {
            "$ref": "#/types/google-native:spanner%2Fv1:EncryptionInfoResponse",
            "description": "The encryption information for the backup."
          },
          "expireTime": {
            "description": "Required for the CreateBackup operation. The expiration time of the backup, with microseconds granularity that must be at least 6 hours and at most 366 days from the time the CreateBackup request is processed. Once the `expire_time` has passed, the backup is eligible to be automatically deleted by Cloud Spanner to free the resources used by the backup.",
            "type": "string"
          },
          "maxExpireTime": {
            "description": "The max allowed expiration time of the backup, with microseconds granularity. A backup's expiration time can be configured in multiple APIs: CreateBackup, UpdateBackup, CopyBackup. When updating or copying an existing backup, the expiration time specified must be less than `Backup.max_expire_time`.",
            "type": "string"
          },
          "name": {
            "description": "Output only for the CreateBackup operation. Required for the UpdateBackup operation. A globally unique identifier for the backup which cannot be changed. Values are of the form `projects//instances//backups/a-z*[a-z0-9]` The final segment of the name must be between 2 and 60 characters in length. The backup is stored in the location(s) specified in the instance configuration of the instance containing the backup, identified by the prefix of the backup name of the form `projects//instances/`.",
            "type": "string"
          },
          "referencingBackups": {
            "description": "The names of the destination backups being created by copying this source backup. The backup names are of the form `projects//instances//backups/`. Referencing backups may exist in different instances. The existence of any referencing backup prevents the backup from being deleted. When the copy operation is done (either successfully completed or cancelled or the destination backup is deleted), the reference to the backup is removed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "referencingDatabases": {
            "description": "The names of the restored databases that reference the backup. The database names are of the form `projects//instances//databases/`. Referencing databases may exist in different instances. The existence of any referencing database prevents the backup from being deleted. When a restored database from the backup enters the `READY` state, the reference to the backup is removed.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sizeBytes": {
            "description": "Size of the backup in bytes.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the backup.",
            "type": "string"
          },
          "versionTime": {
            "description": "The backup will contain an externally consistent copy of the database at the timestamp specified by `version_time`. If `version_time` is not specified, the system will set `version_time` to the `create_time` of the backup.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "database",
          "databaseDialect",
          "encryptionInfo",
          "expireTime",
          "maxExpireTime",
          "name",
          "referencingBackups",
          "referencingDatabases",
          "sizeBytes",
          "state",
          "versionTime"
        ],
        "type": "object"
      }
    },
    "google-native:spanner/v1:getDatabase": {
      "description": "Gets the state of a Cloud Spanner database.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "If exists, the time at which the database creation started.",
            "type": "string"
          },
          "databaseDialect": {
            "description": "The dialect of the Cloud Spanner Database.",
            "type": "string"
          },
          "defaultLeader": {
            "description": "The read-write region which contains the database's leader replicas. This is the same as the value of default_leader database option set using DatabaseAdmin.CreateDatabase or DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.",
            "type": "string"
          },
          "earliestVersionTime": {
            "description": "Earliest timestamp at which older versions of the data can be read. This value is continuously updated by Cloud Spanner and becomes stale the moment it is queried. If you are using this value to recover data, make sure to account for the time from the moment when the value is queried to the moment when you initiate the recovery.",
            "type": "string"
          },
          "enableDropProtection": {
            "description": "Whether drop protection is enabled for this database. Defaults to false, if not set. For more details, please see how to [prevent accidental database deletion](https://cloud.google.com/spanner/docs/prevent-database-deletion).",
            "type": "boolean"
          },
          "encryptionConfig": {
            "$ref": "#/types/google-native:spanner%2Fv1:EncryptionConfigResponse",
            "description": "For databases that are using customer managed encryption, this field contains the encryption configuration for the database. For databases that are using Google default or other types of encryption, this field is empty."
          },
          "encryptionInfo": {
            "description": "For databases that are using customer managed encryption, this field contains the encryption information for the database, such as all Cloud KMS key versions that are in use. The `encryption_status' field inside of each `EncryptionInfo` is not populated. For databases that are using Google default or other types of encryption, this field is empty. This field is propagated lazily from the backend. There might be a delay from when a key version is being used and when it appears in this field.",
            "items": {
              "$ref": "#/types/google-native:spanner%2Fv1:EncryptionInfoResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the database. Values are of the form `projects//instances//databases/`, where `` is as specified in the `CREATE DATABASE` statement. This name can be passed to other API methods to identify the database.",
            "type": "string"
          },
          "reconciling": {
            "description": "If true, the database is being updated. If false, there are no ongoing update operations for the database.",
            "type": "boolean"
          },
          "restoreInfo": {
            "$ref": "#/types/google-native:spanner%2Fv1:RestoreInfoResponse",
            "description": "Applicable only for restored databases. Contains information about the restore source."
          },
          "state": {
            "description": "The current database state.",
            "type": "string"
          },
          "versionRetentionPeriod": {
            "description": "The period in which Cloud Spanner retains all versions of data for the database. This is the same as the value of version_retention_period database option set using UpdateDatabaseDdl. Defaults to 1 hour, if not set.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "databaseDialect",
          "defaultLeader",
          "earliestVersionTime",
          "enableDropProtection",
          "encryptionConfig",
          "encryptionInfo",
          "name",
          "reconciling",
          "restoreInfo",
          "state",
          "versionRetentionPeriod"
        ],
        "type": "object"
      }
    },
    "google-native:spanner/v1:getInstance": {
      "description": "Gets information about a particular instance.",
      "inputs": {
        "properties": {
          "fieldMask": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "autoscalingConfig": {
            "$ref": "#/types/google-native:spanner%2Fv1:AutoscalingConfigResponse",
            "description": "Optional. The autoscaling configuration. Autoscaling is enabled if this field is set. When autoscaling is enabled, node_count and processing_units are treated as OUTPUT_ONLY fields and reflect the current compute capacity allocated to the instance."
          },
          "config": {
            "description": "The name of the instance's configuration. Values are of the form `projects//instanceConfigs/`. See also InstanceConfig and ListInstanceConfigs.",
            "type": "string"
          },
          "createTime": {
            "description": "The time at which the instance was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The descriptive name for this instance as it appears in UIs. Must be unique per project and between 4 and 30 characters in length.",
            "type": "string"
          },
          "endpointUris": {
            "deprecationMessage": "Deprecated. This field is not populated.",
            "description": "Deprecated. This field is not populated.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "freeInstanceMetadata": {
            "$ref": "#/types/google-native:spanner%2Fv1:FreeInstanceMetadataResponse",
            "description": "Free instance metadata. Only populated for free instances."
          },
          "instanceType": {
            "description": "The `InstanceType` of the current instance.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. And so you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + \"_\" + value would prove problematic if we were to allow \"_\" in a future release.",
            "type": "object"
          },
          "name": {
            "description": "A unique identifier for the instance, which cannot be changed after the instance is created. Values are of the form `projects//instances/a-z*[a-z0-9]`. The final segment of the name must be between 2 and 64 characters in length.",
            "type": "string"
          },
          "nodeCount": {
            "description": "The number of nodes allocated to this instance. At most one of either node_count or processing_units should be present in the message. Users can set the node_count field to specify the target number of nodes allocated to the instance. This may be zero in API responses for instances that are not yet in state `READY`. See [the documentation](https://cloud.google.com/spanner/docs/compute-capacity) for more information about nodes and processing units.",
            "type": "integer"
          },
          "processingUnits": {
            "description": "The number of processing units allocated to this instance. At most one of processing_units or node_count should be present in the message. Users can set the processing_units field to specify the target number of processing units allocated to the instance. This may be zero in API responses for instances that are not yet in state `READY`. See [the documentation](https://cloud.google.com/spanner/docs/compute-capacity) for more information about nodes and processing units.",
            "type": "integer"
          },
          "state": {
            "description": "The current instance state. For CreateInstance, the state must be either omitted or set to `CREATING`. For UpdateInstance, the state must be either omitted or set to `READY`.",
            "type": "string"
          },
          "updateTime": {
            "description": "The time at which the instance was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "autoscalingConfig",
          "config",
          "createTime",
          "displayName",
          "endpointUris",
          "freeInstanceMetadata",
          "instanceType",
          "labels",
          "name",
          "nodeCount",
          "processingUnits",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:spanner/v1:getInstanceBackupIamPolicy": {
      "description": "Gets the access control policy for a database or backup resource. Returns an empty policy if a database or backup exists but does not have a policy set. Authorization requires `spanner.databases.getIamPolicy` permission on resource. For backups, authorization requires `spanner.backups.getIamPolicy` permission on resource.",
      "inputs": {
        "properties": {
          "backupId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "backupId",
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:spanner%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:spanner/v1:getInstanceConfig": {
      "description": "Gets information about a particular instance configuration.",
      "inputs": {
        "properties": {
          "instanceConfigId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "baseConfig": {
            "description": "Base configuration name, e.g. projects//instanceConfigs/nam3, based on which this configuration is created. Only set for user managed configurations. `base_config` must refer to a configuration of type GOOGLE_MANAGED in the same project as this configuration.",
            "type": "string"
          },
          "configType": {
            "description": "Whether this instance config is a Google or User Managed Configuration.",
            "type": "string"
          },
          "displayName": {
            "description": "The name of this instance configuration as it appears in UIs.",
            "type": "string"
          },
          "etag": {
            "description": "etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a instance config from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform instance config updates in order to avoid race conditions: An etag is returned in the response which contains instance configs, and systems are expected to put that etag in the request to update instance config to ensure that their change will be applied to the same version of the instance config. If no etag is provided in the call to update instance config, then the existing instance config is overwritten blindly.",
            "type": "string"
          },
          "freeInstanceAvailability": {
            "description": "Describes whether free instances are available to be created in this instance config.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. Therefore, you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + \"_\" + value would prove problematic if we were to allow \"_\" in a future release.",
            "type": "object"
          },
          "leaderOptions": {
            "description": "Allowed values of the \"default_leader\" schema option for databases in instances that use this instance configuration.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "A unique identifier for the instance configuration. Values are of the form `projects//instanceConfigs/a-z*`.",
            "type": "string"
          },
          "optionalReplicas": {
            "description": "The available optional replicas to choose from for user managed configurations. Populated for Google managed configurations.",
            "items": {
              "$ref": "#/types/google-native:spanner%2Fv1:ReplicaInfoResponse"
            },
            "type": "array"
          },
          "reconciling": {
            "description": "If true, the instance config is being created or updated. If false, there are no ongoing operations for the instance config.",
            "type": "boolean"
          },
          "replicas": {
            "description": "The geographic placement of nodes in this instance configuration and their replication properties.",
            "items": {
              "$ref": "#/types/google-native:spanner%2Fv1:ReplicaInfoResponse"
            },
            "type": "array"
          },
          "state": {
            "description": "The current instance config state. Applicable only for USER_MANAGED configs.",
            "type": "string"
          }
        },
        "required": [
          "baseConfig",
          "configType",
          "displayName",
          "etag",
          "freeInstanceAvailability",
          "labels",
          "leaderOptions",
          "name",
          "optionalReplicas",
          "reconciling",
          "replicas",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:spanner/v1:getInstanceDatabaseIamPolicy": {
      "description": "Gets the access control policy for a database or backup resource. Returns an empty policy if a database or backup exists but does not have a policy set. Authorization requires `spanner.databases.getIamPolicy` permission on resource. For backups, authorization requires `spanner.backups.getIamPolicy` permission on resource.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:spanner%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:spanner/v1:getInstanceIamPolicy": {
      "description": "Gets the access control policy for an instance resource. Returns an empty policy if an instance exists but does not have a policy set. Authorization requires `spanner.instances.getIamPolicy` on resource.",
      "inputs": {
        "properties": {
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instanceId"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:spanner%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:spanner/v1:getSession": {
      "description": "Gets a session. Returns `NOT_FOUND` if the session does not exist. This is mainly useful for determining whether a session is still alive.",
      "inputs": {
        "properties": {
          "databaseId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "databaseId",
          "instanceId",
          "sessionId"
        ]
      },
      "outputs": {
        "properties": {
          "approximateLastUseTime": {
            "description": "The approximate timestamp when the session is last used. It is typically earlier than the actual last use time.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp when the session is created.",
            "type": "string"
          },
          "creatorRole": {
            "description": "The database role which created this session.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels for the session. * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. * No more than 64 labels can be associated with a given session. See https://goo.gl/xmQnxf for more information on and examples of labels.",
            "type": "object"
          },
          "name": {
            "description": "The name of the session. This is always system-assigned.",
            "type": "string"
          }
        },
        "required": [
          "approximateLastUseTime",
          "createTime",
          "creatorRole",
          "labels",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:speech/v1:getCustomClass": {
      "description": "Get a custom class.",
      "inputs": {
        "properties": {
          "customClassId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "customClassId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Allows users to store small amounts of arbitrary data. Both the key and the value must be 63 characters or less each. At most 100 annotations. This field is not used.",
            "type": "object"
          },
          "customClassId": {
            "description": "If this custom class is a resource, the custom_class_id is the resource id of the CustomClass. Case sensitive.",
            "type": "string"
          },
          "deleteTime": {
            "description": "The time at which this resource was requested for deletion. This field is not used.",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable, human-readable name for the CustomClass. Must be 63 characters or less. This field is not used.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields. This may be sent on update, undelete, and delete requests to ensure the client has an up-to-date value before proceeding. This field is not used.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time at which this resource will be purged. This field is not used.",
            "type": "string"
          },
          "items": {
            "description": "A collection of class items.",
            "items": {
              "$ref": "#/types/google-native:speech%2Fv1:ClassItemResponse"
            },
            "type": "array"
          },
          "kmsKeyName": {
            "description": "The [KMS key name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) with which the content of the ClassItem is encrypted. The expected format is `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.",
            "type": "string"
          },
          "kmsKeyVersionName": {
            "description": "The [KMS key version name](https://cloud.google.com/kms/docs/resource-hierarchy#key_versions) with which content of the ClassItem is encrypted. The expected format is `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the custom class.",
            "type": "string"
          },
          "reconciling": {
            "description": "Whether or not this CustomClass is in the process of being updated. This field is not used.",
            "type": "boolean"
          },
          "state": {
            "description": "The CustomClass lifecycle state. This field is not used.",
            "type": "string"
          },
          "uid": {
            "description": "System-assigned unique identifier for the CustomClass. This field is not used.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "customClassId",
          "deleteTime",
          "displayName",
          "etag",
          "expireTime",
          "items",
          "kmsKeyName",
          "kmsKeyVersionName",
          "name",
          "reconciling",
          "state",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:speech/v1:getPhraseSet": {
      "description": "Get a phrase set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "phraseSetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "phraseSetId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Allows users to store small amounts of arbitrary data. Both the key and the value must be 63 characters or less each. At most 100 annotations. This field is not used.",
            "type": "object"
          },
          "boost": {
            "description": "Hint Boost. Positive value will increase the probability that a specific phrase will be recognized over other similar sounding phrases. The higher the boost, the higher the chance of false positive recognition as well. Negative boost values would correspond to anti-biasing. Anti-biasing is not enabled, so negative boost will simply be ignored. Though `boost` can accept a wide range of positive values, most use cases are best served with values between 0 (exclusive) and 20. We recommend using a binary search approach to finding the optimal value for your use case as well as adding phrases both with and without boost to your requests.",
            "type": "number"
          },
          "deleteTime": {
            "description": "The time at which this resource was requested for deletion. This field is not used.",
            "type": "string"
          },
          "displayName": {
            "description": "User-settable, human-readable name for the PhraseSet. Must be 63 characters or less. This field is not used.",
            "type": "string"
          },
          "etag": {
            "description": "This checksum is computed by the server based on the value of other fields. This may be sent on update, undelete, and delete requests to ensure the client has an up-to-date value before proceeding. This field is not used.",
            "type": "string"
          },
          "expireTime": {
            "description": "The time at which this resource will be purged. This field is not used.",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "The [KMS key name](https://cloud.google.com/kms/docs/resource-hierarchy#keys) with which the content of the PhraseSet is encrypted. The expected format is `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`.",
            "type": "string"
          },
          "kmsKeyVersionName": {
            "description": "The [KMS key version name](https://cloud.google.com/kms/docs/resource-hierarchy#key_versions) with which content of the PhraseSet is encrypted. The expected format is `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}`.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the phrase set.",
            "type": "string"
          },
          "phrases": {
            "description": "A list of word and phrases.",
            "items": {
              "$ref": "#/types/google-native:speech%2Fv1:PhraseResponse"
            },
            "type": "array"
          },
          "reconciling": {
            "description": "Whether or not this PhraseSet is in the process of being updated. This field is not used.",
            "type": "boolean"
          },
          "state": {
            "description": "The CustomClass lifecycle state. This field is not used.",
            "type": "string"
          },
          "uid": {
            "description": "System-assigned unique identifier for the PhraseSet. This field is not used.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "boost",
          "deleteTime",
          "displayName",
          "etag",
          "expireTime",
          "kmsKeyName",
          "kmsKeyVersionName",
          "name",
          "phrases",
          "reconciling",
          "state",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1:getBackupRun": {
      "description": "Retrieves a resource containing information about a backup run.",
      "inputs": {
        "properties": {
          "id": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "id",
          "instance"
        ]
      },
      "outputs": {
        "properties": {
          "backupKind": {
            "description": "Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.",
            "type": "string"
          },
          "description": {
            "description": "The description of this run, only applicable to on-demand backups.",
            "type": "string"
          },
          "diskEncryptionConfiguration": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionConfigurationResponse",
            "description": "Encryption configuration specific to a backup."
          },
          "diskEncryptionStatus": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionStatusResponse",
            "description": "Encryption status specific to a backup."
          },
          "endTime": {
            "description": "The time the backup operation completed in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "enqueuedTime": {
            "description": "The time the run was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:OperationErrorResponse",
            "description": "Information about why the backup operation failed. This is only present if the run has the FAILED status."
          },
          "instance": {
            "description": "Name of the database instance.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#backupRun`.",
            "type": "string"
          },
          "location": {
            "description": "Location of the backups.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URI of this resource.",
            "type": "string"
          },
          "startTime": {
            "description": "The time the backup operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "status": {
            "description": "The status of this run.",
            "type": "string"
          },
          "timeZone": {
            "description": "Backup time zone to prevent restores to an instance with a different time zone. Now relevant only for SQL Server.",
            "type": "string"
          },
          "type": {
            "description": "The type of this run; can be either \"AUTOMATED\" or \"ON_DEMAND\" or \"FINAL\". This field defaults to \"ON_DEMAND\" and is ignored, when specified for insert requests.",
            "type": "string"
          },
          "windowStartTime": {
            "description": "The start time of the backup window during which this the backup was attempted in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          }
        },
        "required": [
          "backupKind",
          "description",
          "diskEncryptionConfiguration",
          "diskEncryptionStatus",
          "endTime",
          "enqueuedTime",
          "error",
          "instance",
          "kind",
          "location",
          "selfLink",
          "startTime",
          "status",
          "timeZone",
          "type",
          "windowStartTime"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1:getDatabase": {
      "description": "Retrieves a resource containing information about a database inside a Cloud SQL instance.",
      "inputs": {
        "properties": {
          "database": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "database",
          "instance"
        ]
      },
      "outputs": {
        "properties": {
          "charset": {
            "description": "The Cloud SQL charset value.",
            "type": "string"
          },
          "collation": {
            "description": "The Cloud SQL collation value.",
            "type": "string"
          },
          "etag": {
            "deprecationMessage": "This field is deprecated and will be removed from a future version of the API.",
            "description": "This field is deprecated and will be removed from a future version of the API.",
            "type": "string"
          },
          "instance": {
            "description": "The name of the Cloud SQL instance. This does not include the project ID.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#database`.",
            "type": "string"
          },
          "name": {
            "description": "The name of the database in the Cloud SQL instance. This does not include the project ID or instance name.",
            "type": "string"
          },
          "project": {
            "description": "The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URI of this resource.",
            "type": "string"
          },
          "sqlserverDatabaseDetails": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:SqlServerDatabaseDetailsResponse"
          }
        },
        "required": [
          "charset",
          "collation",
          "etag",
          "instance",
          "kind",
          "name",
          "project",
          "selfLink",
          "sqlserverDatabaseDetails"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1:getInstance": {
      "description": "Retrieves a resource containing information about a Cloud SQL instance.",
      "inputs": {
        "properties": {
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance"
        ]
      },
      "outputs": {
        "properties": {
          "availableMaintenanceVersions": {
            "description": "List all maintenance versions applicable on the instance",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "backendType": {
            "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.",
            "type": "string"
          },
          "connectionName": {
            "description": "Connection name of the Cloud SQL instance used in connection strings.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "currentDiskSize": {
            "description": "The current disk usage of the instance in bytes. This property has been deprecated. Use the \"cloudsql.googleapis.com/database/disk/bytes_used\" metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details.",
            "type": "string"
          },
          "databaseInstalledVersion": {
            "description": "Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`.",
            "type": "string"
          },
          "databaseVersion": {
            "description": "The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.",
            "type": "string"
          },
          "diskEncryptionConfiguration": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionConfigurationResponse",
            "description": "Disk encryption configuration specific to an instance."
          },
          "diskEncryptionStatus": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:DiskEncryptionStatusResponse",
            "description": "Disk encryption status specific to an instance."
          },
          "dnsName": {
            "description": "The dns name of the instance.",
            "type": "string"
          },
          "etag": {
            "deprecationMessage": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.",
            "description": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.",
            "type": "string"
          },
          "failoverReplica": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:InstanceFailoverReplicaResponse",
            "description": "The name and status of the failover replica."
          },
          "gceZone": {
            "description": "The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance.",
            "type": "string"
          },
          "instanceType": {
            "description": "The instance type.",
            "type": "string"
          },
          "ipAddresses": {
            "description": "The assigned IP addresses for the instance.",
            "items": {
              "$ref": "#/types/google-native:sqladmin%2Fv1:IpMappingResponse"
            },
            "type": "array"
          },
          "ipv6Address": {
            "deprecationMessage": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.",
            "description": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#instance`.",
            "type": "string"
          },
          "maintenanceVersion": {
            "description": "The current software version on the instance.",
            "type": "string"
          },
          "masterInstanceName": {
            "description": "The name of the instance which will act as primary in the replication setup.",
            "type": "string"
          },
          "maxDiskSize": {
            "description": "The maximum disk size of the instance in bytes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the Cloud SQL instance. This does not include the project ID.",
            "type": "string"
          },
          "onPremisesConfiguration": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:OnPremisesConfigurationResponse",
            "description": "Configuration specific to on-premises instances."
          },
          "outOfDiskReport": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:SqlOutOfDiskReportResponse",
            "description": "This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
          },
          "primaryDnsName": {
            "deprecationMessage": "Output only. DEPRECATED: please use write_endpoint instead.",
            "description": "DEPRECATED: please use write_endpoint instead.",
            "type": "string"
          },
          "project": {
            "description": "The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.",
            "type": "string"
          },
          "pscServiceAttachmentLink": {
            "description": "The link to service attachment of PSC instance.",
            "type": "string"
          },
          "region": {
            "description": "The geographical region. Can be: * `us-central` (`FIRST_GEN` instances only) * `us-central1` (`SECOND_GEN` instances only) * `asia-east1` or `europe-west1`. Defaults to `us-central` or `us-central1` depending on the instance type. The region cannot be changed after instance creation.",
            "type": "string"
          },
          "replicaConfiguration": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:ReplicaConfigurationResponse",
            "description": "Configuration specific to failover replicas and read replicas."
          },
          "replicaNames": {
            "description": "The replicas of the instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rootPassword": {
            "description": "Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "The status indicating if instance satisfiesPzs. Reserved for future use.",
            "type": "boolean"
          },
          "scheduledMaintenance": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:SqlScheduledMaintenanceResponse",
            "description": "The start time of any upcoming scheduled maintenance for this instance."
          },
          "secondaryGceZone": {
            "description": "The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URI of this resource.",
            "type": "string"
          },
          "serverCaCert": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:SslCertResponse",
            "description": "SSL configuration."
          },
          "serviceAccountEmailAddress": {
            "description": "The service account email address assigned to the instance.\\This property is read-only.",
            "type": "string"
          },
          "settings": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:SettingsResponse",
            "description": "The user settings."
          },
          "sqlNetworkArchitecture": {
            "type": "string"
          },
          "state": {
            "description": "The current serving state of the Cloud SQL instance.",
            "type": "string"
          },
          "suspensionReason": {
            "description": "If the instance state is SUSPENDED, the reason for the suspension.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "writeEndpoint": {
            "description": "The dns name of the primary instance in a replication group.",
            "type": "string"
          }
        },
        "required": [
          "availableMaintenanceVersions",
          "backendType",
          "connectionName",
          "createTime",
          "currentDiskSize",
          "databaseInstalledVersion",
          "databaseVersion",
          "diskEncryptionConfiguration",
          "diskEncryptionStatus",
          "dnsName",
          "etag",
          "failoverReplica",
          "gceZone",
          "instanceType",
          "ipAddresses",
          "ipv6Address",
          "kind",
          "maintenanceVersion",
          "masterInstanceName",
          "maxDiskSize",
          "name",
          "onPremisesConfiguration",
          "outOfDiskReport",
          "primaryDnsName",
          "project",
          "pscServiceAttachmentLink",
          "region",
          "replicaConfiguration",
          "replicaNames",
          "rootPassword",
          "satisfiesPzs",
          "scheduledMaintenance",
          "secondaryGceZone",
          "selfLink",
          "serverCaCert",
          "serviceAccountEmailAddress",
          "settings",
          "sqlNetworkArchitecture",
          "state",
          "suspensionReason",
          "writeEndpoint"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1:getSslCert": {
      "description": "Retrieves a particular SSL certificate. Does not include the private key (required for usage). The private key must be saved from the response to initial creation.",
      "inputs": {
        "properties": {
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sha1Fingerprint": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance",
          "sha1Fingerprint"
        ]
      },
      "outputs": {
        "properties": {
          "cert": {
            "description": "PEM representation.",
            "type": "string"
          },
          "certSerialNumber": {
            "description": "Serial number, as extracted from the certificate.",
            "type": "string"
          },
          "commonName": {
            "description": "User supplied name. Constrained to [a-zA-Z.-_ ]+.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`",
            "type": "string"
          },
          "expirationTime": {
            "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "instance": {
            "description": "Name of the database instance.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#sslCert`.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URI of this resource.",
            "type": "string"
          },
          "sha1Fingerprint": {
            "description": "Sha1 Fingerprint.",
            "type": "string"
          }
        },
        "required": [
          "cert",
          "certSerialNumber",
          "commonName",
          "createTime",
          "expirationTime",
          "instance",
          "kind",
          "selfLink",
          "sha1Fingerprint"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1:getUser": {
      "description": "Retrieves a resource containing information about a user.",
      "inputs": {
        "properties": {
          "host": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance",
          "name"
        ]
      },
      "outputs": {
        "properties": {
          "dualPasswordType": {
            "description": "Dual password status for the user.",
            "type": "string"
          },
          "etag": {
            "deprecationMessage": "This field is deprecated and will be removed from a future version of the API.",
            "description": "This field is deprecated and will be removed from a future version of the API.",
            "type": "string"
          },
          "host": {
            "description": "Optional. The host from which the user can connect. For `insert` operations, host defaults to an empty string. For `update` operations, host is specified as part of the request URL. The host name cannot be updated after insertion. For a MySQL instance, it's required; for a PostgreSQL or SQL Server instance, it's optional.",
            "type": "string"
          },
          "instance": {
            "description": "The name of the Cloud SQL instance. This does not include the project ID. Can be omitted for `update` because it is already specified on the URL.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#user`.",
            "type": "string"
          },
          "name": {
            "description": "The name of the user in the Cloud SQL instance. Can be omitted for `update` because it is already specified in the URL.",
            "type": "string"
          },
          "password": {
            "description": "The password for the user.",
            "type": "string"
          },
          "passwordPolicy": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:UserPasswordValidationPolicyResponse",
            "description": "User level password validation policy."
          },
          "project": {
            "description": "The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable. Can be omitted for `update` because it is already specified on the URL.",
            "type": "string"
          },
          "sqlserverUserDetails": {
            "$ref": "#/types/google-native:sqladmin%2Fv1:SqlServerUserDetailsResponse"
          },
          "type": {
            "description": "The user type. It determines the method to authenticate the user during login. The default is the database's built-in user type.",
            "type": "string"
          }
        },
        "required": [
          "dualPasswordType",
          "etag",
          "host",
          "instance",
          "kind",
          "name",
          "password",
          "passwordPolicy",
          "project",
          "sqlserverUserDetails",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1beta4:getBackupRun": {
      "description": "Retrieves a resource containing information about a backup run.",
      "inputs": {
        "properties": {
          "id": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "id",
          "instance"
        ]
      },
      "outputs": {
        "properties": {
          "backupKind": {
            "description": "Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.",
            "type": "string"
          },
          "description": {
            "description": "The description of this run, only applicable to on-demand backups.",
            "type": "string"
          },
          "diskEncryptionConfiguration": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionConfigurationResponse",
            "description": "Encryption configuration specific to a backup."
          },
          "diskEncryptionStatus": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionStatusResponse",
            "description": "Encryption status specific to a backup."
          },
          "endTime": {
            "description": "The time the backup operation completed in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "enqueuedTime": {
            "description": "The time the run was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:OperationErrorResponse",
            "description": "Information about why the backup operation failed. This is only present if the run has the FAILED status."
          },
          "instance": {
            "description": "Name of the database instance.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#backupRun`.",
            "type": "string"
          },
          "location": {
            "description": "Location of the backups.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URI of this resource.",
            "type": "string"
          },
          "startTime": {
            "description": "The time the backup operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "status": {
            "description": "The status of this run.",
            "type": "string"
          },
          "timeZone": {
            "description": "Backup time zone to prevent restores to an instance with a different time zone. Now relevant only for SQL Server.",
            "type": "string"
          },
          "type": {
            "description": "The type of this run; can be either \"AUTOMATED\" or \"ON_DEMAND\" or \"FINAL\". This field defaults to \"ON_DEMAND\" and is ignored, when specified for insert requests.",
            "type": "string"
          },
          "windowStartTime": {
            "description": "The start time of the backup window during which this the backup was attempted in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          }
        },
        "required": [
          "backupKind",
          "description",
          "diskEncryptionConfiguration",
          "diskEncryptionStatus",
          "endTime",
          "enqueuedTime",
          "error",
          "instance",
          "kind",
          "location",
          "selfLink",
          "startTime",
          "status",
          "timeZone",
          "type",
          "windowStartTime"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1beta4:getDatabase": {
      "description": "Retrieves a resource containing information about a database inside a Cloud SQL instance.",
      "inputs": {
        "properties": {
          "database": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "database",
          "instance"
        ]
      },
      "outputs": {
        "properties": {
          "charset": {
            "description": "The Cloud SQL charset value.",
            "type": "string"
          },
          "collation": {
            "description": "The Cloud SQL collation value.",
            "type": "string"
          },
          "etag": {
            "deprecationMessage": "This field is deprecated and will be removed from a future version of the API.",
            "description": "This field is deprecated and will be removed from a future version of the API.",
            "type": "string"
          },
          "instance": {
            "description": "The name of the Cloud SQL instance. This does not include the project ID.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#database`.",
            "type": "string"
          },
          "name": {
            "description": "The name of the database in the Cloud SQL instance. This does not include the project ID or instance name.",
            "type": "string"
          },
          "project": {
            "description": "The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URI of this resource.",
            "type": "string"
          },
          "sqlserverDatabaseDetails": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlServerDatabaseDetailsResponse"
          }
        },
        "required": [
          "charset",
          "collation",
          "etag",
          "instance",
          "kind",
          "name",
          "project",
          "selfLink",
          "sqlserverDatabaseDetails"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1beta4:getInstance": {
      "description": "Retrieves a resource containing information about a Cloud SQL instance.",
      "inputs": {
        "properties": {
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance"
        ]
      },
      "outputs": {
        "properties": {
          "availableMaintenanceVersions": {
            "description": "List all maintenance versions applicable on the instance",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "backendType": {
            "description": "The backend type. `SECOND_GEN`: Cloud SQL database instance. `EXTERNAL`: A database server that is not managed by Google. This property is read-only; use the `tier` property in the `settings` object to determine the database type.",
            "type": "string"
          },
          "connectionName": {
            "description": "Connection name of the Cloud SQL instance used in connection strings.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the instance was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "currentDiskSize": {
            "description": "The current disk usage of the instance in bytes. This property has been deprecated. Use the \"cloudsql.googleapis.com/database/disk/bytes_used\" metric in Cloud Monitoring API instead. Please see [this announcement](https://groups.google.com/d/msg/google-cloud-sql-announce/I_7-F9EBhT0/BtvFtdFeAgAJ) for details.",
            "type": "string"
          },
          "databaseInstalledVersion": {
            "description": "Stores the current database version running on the instance including minor version such as `MYSQL_8_0_18`.",
            "type": "string"
          },
          "databaseVersion": {
            "description": "The database engine type and version. The `databaseVersion` field cannot be changed after instance creation.",
            "type": "string"
          },
          "diskEncryptionConfiguration": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionConfigurationResponse",
            "description": "Disk encryption configuration specific to an instance."
          },
          "diskEncryptionStatus": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:DiskEncryptionStatusResponse",
            "description": "Disk encryption status specific to an instance."
          },
          "dnsName": {
            "description": "The dns name of the instance.",
            "type": "string"
          },
          "etag": {
            "deprecationMessage": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.",
            "description": "This field is deprecated and will be removed from a future version of the API. Use the `settings.settingsVersion` field instead.",
            "type": "string"
          },
          "failoverReplica": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:InstanceFailoverReplicaResponse",
            "description": "The name and status of the failover replica."
          },
          "gceZone": {
            "description": "The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone. WARNING: Changing this might restart the instance.",
            "type": "string"
          },
          "instanceType": {
            "description": "The instance type.",
            "type": "string"
          },
          "ipAddresses": {
            "description": "The assigned IP addresses for the instance.",
            "items": {
              "$ref": "#/types/google-native:sqladmin%2Fv1beta4:IpMappingResponse"
            },
            "type": "array"
          },
          "ipv6Address": {
            "deprecationMessage": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.",
            "description": "The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#instance`.",
            "type": "string"
          },
          "maintenanceVersion": {
            "description": "The current software version on the instance.",
            "type": "string"
          },
          "masterInstanceName": {
            "description": "The name of the instance which will act as primary in the replication setup.",
            "type": "string"
          },
          "maxDiskSize": {
            "description": "The maximum disk size of the instance in bytes.",
            "type": "string"
          },
          "name": {
            "description": "Name of the Cloud SQL instance. This does not include the project ID.",
            "type": "string"
          },
          "onPremisesConfiguration": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:OnPremisesConfigurationResponse",
            "description": "Configuration specific to on-premises instances."
          },
          "outOfDiskReport": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlOutOfDiskReportResponse",
            "description": "This field represents the report generated by the proactive database wellness job for OutOfDisk issues. * Writers: * the proactive database wellness job for OOD. * Readers: * the proactive database wellness job"
          },
          "primaryDnsName": {
            "deprecationMessage": "Output only. DEPRECATED: please use write_endpoint instead.",
            "description": "DEPRECATED: please use write_endpoint instead.",
            "type": "string"
          },
          "project": {
            "description": "The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.",
            "type": "string"
          },
          "pscServiceAttachmentLink": {
            "description": "The link to service attachment of PSC instance.",
            "type": "string"
          },
          "region": {
            "description": "The geographical region. Can be: * `us-central` (`FIRST_GEN` instances only) * `us-central1` (`SECOND_GEN` instances only) * `asia-east1` or `europe-west1`. Defaults to `us-central` or `us-central1` depending on the instance type. The region cannot be changed after instance creation.",
            "type": "string"
          },
          "replicaConfiguration": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:ReplicaConfigurationResponse",
            "description": "Configuration specific to failover replicas and read replicas."
          },
          "replicaNames": {
            "description": "The replicas of the instance.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rootPassword": {
            "description": "Initial root password. Use only on creation. You must set root passwords before you can connect to PostgreSQL instances.",
            "type": "string"
          },
          "satisfiesPzs": {
            "description": "The status indicating if instance satisfiesPzs. Reserved for future use.",
            "type": "boolean"
          },
          "scheduledMaintenance": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlScheduledMaintenanceResponse",
            "description": "The start time of any upcoming scheduled maintenance for this instance."
          },
          "secondaryGceZone": {
            "description": "The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URI of this resource.",
            "type": "string"
          },
          "serverCaCert": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SslCertResponse",
            "description": "SSL configuration."
          },
          "serviceAccountEmailAddress": {
            "description": "The service account email address assigned to the instance. \\This property is read-only.",
            "type": "string"
          },
          "settings": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SettingsResponse",
            "description": "The user settings."
          },
          "sqlNetworkArchitecture": {
            "description": "The SQL network architecture for the instance.",
            "type": "string"
          },
          "state": {
            "description": "The current serving state of the Cloud SQL instance.",
            "type": "string"
          },
          "suspensionReason": {
            "description": "If the instance state is SUSPENDED, the reason for the suspension.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "writeEndpoint": {
            "description": "The dns name of the primary instance in a replication group.",
            "type": "string"
          }
        },
        "required": [
          "availableMaintenanceVersions",
          "backendType",
          "connectionName",
          "createTime",
          "currentDiskSize",
          "databaseInstalledVersion",
          "databaseVersion",
          "diskEncryptionConfiguration",
          "diskEncryptionStatus",
          "dnsName",
          "etag",
          "failoverReplica",
          "gceZone",
          "instanceType",
          "ipAddresses",
          "ipv6Address",
          "kind",
          "maintenanceVersion",
          "masterInstanceName",
          "maxDiskSize",
          "name",
          "onPremisesConfiguration",
          "outOfDiskReport",
          "primaryDnsName",
          "project",
          "pscServiceAttachmentLink",
          "region",
          "replicaConfiguration",
          "replicaNames",
          "rootPassword",
          "satisfiesPzs",
          "scheduledMaintenance",
          "secondaryGceZone",
          "selfLink",
          "serverCaCert",
          "serviceAccountEmailAddress",
          "settings",
          "sqlNetworkArchitecture",
          "state",
          "suspensionReason",
          "writeEndpoint"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1beta4:getSslCert": {
      "description": "Retrieves a particular SSL certificate. Does not include the private key (required for usage). The private key must be saved from the response to initial creation.",
      "inputs": {
        "properties": {
          "instance": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sha1Fingerprint": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance",
          "sha1Fingerprint"
        ]
      },
      "outputs": {
        "properties": {
          "cert": {
            "description": "PEM representation.",
            "type": "string"
          },
          "certSerialNumber": {
            "description": "Serial number, as extracted from the certificate.",
            "type": "string"
          },
          "commonName": {
            "description": "User supplied name. Constrained to [a-zA-Z.-_ ]+.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "expirationTime": {
            "description": "The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example `2012-11-15T16:19:00.094Z`.",
            "type": "string"
          },
          "instance": {
            "description": "Name of the database instance.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#sslCert`.",
            "type": "string"
          },
          "selfLink": {
            "description": "The URI of this resource.",
            "type": "string"
          },
          "sha1Fingerprint": {
            "description": "Sha1 Fingerprint.",
            "type": "string"
          }
        },
        "required": [
          "cert",
          "certSerialNumber",
          "commonName",
          "createTime",
          "expirationTime",
          "instance",
          "kind",
          "selfLink",
          "sha1Fingerprint"
        ],
        "type": "object"
      }
    },
    "google-native:sqladmin/v1beta4:getUser": {
      "description": "Retrieves a resource containing information about a user.",
      "inputs": {
        "properties": {
          "host": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "instance",
          "name"
        ]
      },
      "outputs": {
        "properties": {
          "dualPasswordType": {
            "description": "Dual password status for the user.",
            "type": "string"
          },
          "etag": {
            "deprecationMessage": "This field is deprecated and will be removed from a future version of the API.",
            "description": "This field is deprecated and will be removed from a future version of the API.",
            "type": "string"
          },
          "host": {
            "description": "Optional. The host from which the user can connect. For `insert` operations, host defaults to an empty string. For `update` operations, host is specified as part of the request URL. The host name cannot be updated after insertion. For a MySQL instance, it's required; for a PostgreSQL or SQL Server instance, it's optional.",
            "type": "string"
          },
          "instance": {
            "description": "The name of the Cloud SQL instance. This does not include the project ID. Can be omitted for *update* because it is already specified on the URL.",
            "type": "string"
          },
          "kind": {
            "description": "This is always `sql#user`.",
            "type": "string"
          },
          "name": {
            "description": "The name of the user in the Cloud SQL instance. Can be omitted for `update` because it is already specified in the URL.",
            "type": "string"
          },
          "password": {
            "description": "The password for the user.",
            "type": "string"
          },
          "passwordPolicy": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:UserPasswordValidationPolicyResponse",
            "description": "User level password validation policy."
          },
          "project": {
            "description": "The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable. Can be omitted for *update* because it is already specified on the URL.",
            "type": "string"
          },
          "sqlserverUserDetails": {
            "$ref": "#/types/google-native:sqladmin%2Fv1beta4:SqlServerUserDetailsResponse"
          },
          "type": {
            "description": "The user type. It determines the method to authenticate the user during login. The default is the database's built-in user type.",
            "type": "string"
          }
        },
        "required": [
          "dualPasswordType",
          "etag",
          "host",
          "instance",
          "kind",
          "name",
          "password",
          "passwordPolicy",
          "project",
          "sqlserverUserDetails",
          "type"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getBucket": {
      "description": "Returns metadata for the specified bucket.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "ifMetagenerationMatch": {
            "type": "string"
          },
          "ifMetagenerationNotMatch": {
            "type": "string"
          },
          "projection": {
            "type": "string"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket"
        ]
      },
      "outputs": {
        "properties": {
          "acl": {
            "description": "Access controls on the bucket.",
            "items": {
              "$ref": "#/types/google-native:storage%2Fv1:BucketAccessControlResponse"
            },
            "type": "array"
          },
          "autoclass": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketAutoclassResponse",
            "description": "The bucket's Autoclass configuration."
          },
          "billing": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketBillingResponse",
            "description": "The bucket's billing configuration."
          },
          "cors": {
            "description": "The bucket's Cross-Origin Resource Sharing (CORS) configuration.",
            "items": {
              "$ref": "#/types/google-native:storage%2Fv1:BucketCorsItemResponse"
            },
            "type": "array"
          },
          "customPlacementConfig": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketCustomPlacementConfigResponse",
            "description": "The bucket's custom placement configuration for Custom Dual Regions."
          },
          "defaultEventBasedHold": {
            "description": "The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold's release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.",
            "type": "boolean"
          },
          "defaultObjectAcl": {
            "description": "Default access controls to apply to new objects when no ACL is provided.",
            "items": {
              "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlResponse"
            },
            "type": "array"
          },
          "encryption": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketEncryptionResponse",
            "description": "Encryption configuration for a bucket."
          },
          "etag": {
            "description": "HTTP 1.1 Entity tag for the bucket.",
            "type": "string"
          },
          "iamConfiguration": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketIamConfigurationResponse",
            "description": "The bucket's IAM configuration."
          },
          "kind": {
            "description": "The kind of item this is. For buckets, this is always storage#bucket.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-provided labels, in key/value pairs.",
            "type": "object"
          },
          "lifecycle": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketLifecycleResponse",
            "description": "The bucket's lifecycle configuration. See lifecycle management for more information."
          },
          "location": {
            "description": "The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer's guide for the authoritative list.",
            "type": "string"
          },
          "locationType": {
            "description": "The type of the bucket location.",
            "type": "string"
          },
          "logging": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketLoggingResponse",
            "description": "The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs."
          },
          "metageneration": {
            "description": "The metadata generation of this bucket.",
            "type": "string"
          },
          "name": {
            "description": "The name of the bucket.",
            "type": "string"
          },
          "objectRetention": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketObjectRetentionResponse",
            "description": "The bucket's object retention config."
          },
          "owner": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketOwnerResponse",
            "description": "The owner of the bucket. This is always the project team's owner group."
          },
          "projectNumber": {
            "description": "The project number of the project the bucket belongs to.",
            "type": "string"
          },
          "retentionPolicy": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketRetentionPolicyResponse",
            "description": "The bucket's retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error."
          },
          "rpo": {
            "description": "The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.",
            "type": "string"
          },
          "satisfiesPZS": {
            "description": "Reserved for future use.",
            "type": "boolean"
          },
          "selfLink": {
            "description": "The URI of this bucket.",
            "type": "string"
          },
          "softDeletePolicy": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketSoftDeletePolicyResponse",
            "description": "The bucket's soft delete policy, which defines the period of time that soft-deleted objects will be retained, and cannot be permanently deleted."
          },
          "storageClass": {
            "description": "The bucket's default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.",
            "type": "string"
          },
          "timeCreated": {
            "description": "The creation time of the bucket in RFC 3339 format.",
            "type": "string"
          },
          "updated": {
            "description": "The modification time of the bucket in RFC 3339 format.",
            "type": "string"
          },
          "versioning": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketVersioningResponse",
            "description": "The bucket's versioning configuration."
          },
          "website": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketWebsiteResponse",
            "description": "The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information."
          }
        },
        "required": [
          "acl",
          "autoclass",
          "billing",
          "cors",
          "customPlacementConfig",
          "defaultEventBasedHold",
          "defaultObjectAcl",
          "encryption",
          "etag",
          "iamConfiguration",
          "kind",
          "labels",
          "lifecycle",
          "location",
          "locationType",
          "logging",
          "metageneration",
          "name",
          "objectRetention",
          "owner",
          "projectNumber",
          "retentionPolicy",
          "rpo",
          "satisfiesPZS",
          "selfLink",
          "softDeletePolicy",
          "storageClass",
          "timeCreated",
          "updated",
          "versioning",
          "website"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getBucketAccessControl": {
      "description": "Returns the ACL entry for the specified entity on the specified bucket.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "entity": {
            "type": "string"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "entity"
        ]
      },
      "outputs": {
        "properties": {
          "bucket": {
            "description": "The name of the bucket.",
            "type": "string"
          },
          "domain": {
            "description": "The domain associated with the entity, if any.",
            "type": "string"
          },
          "email": {
            "description": "The email address associated with the entity, if any.",
            "type": "string"
          },
          "entity": {
            "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.",
            "type": "string"
          },
          "entityId": {
            "description": "The ID for the entity, if any.",
            "type": "string"
          },
          "etag": {
            "description": "HTTP 1.1 Entity tag for the access-control entry.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.",
            "type": "string"
          },
          "projectTeam": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketAccessControlProjectTeamResponse",
            "description": "The project team associated with the entity, if any."
          },
          "role": {
            "description": "The access permission for the entity.",
            "type": "string"
          },
          "selfLink": {
            "description": "The link to this access-control entry.",
            "type": "string"
          }
        },
        "required": [
          "bucket",
          "domain",
          "email",
          "entity",
          "entityId",
          "etag",
          "kind",
          "projectTeam",
          "role",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getBucketIamPolicy": {
      "description": "Returns an IAM policy for the specified bucket.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "An association between a role, which comes with a set of permissions, and members who may assume that role.",
            "items": {
              "$ref": "#/types/google-native:storage%2Fv1:BucketIamPolicyBindingsItemResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "HTTP 1.1  Entity tag for the policy.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.",
            "type": "string"
          },
          "resourceId": {
            "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input.",
            "type": "string"
          },
          "version": {
            "description": "The IAM policy format version.",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "kind",
          "resourceId",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getBucketObject": {
      "description": "Retrieves an object or its metadata.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "generation": {
            "type": "string"
          },
          "ifGenerationMatch": {
            "type": "string"
          },
          "ifGenerationNotMatch": {
            "type": "string"
          },
          "ifMetagenerationMatch": {
            "type": "string"
          },
          "ifMetagenerationNotMatch": {
            "type": "string"
          },
          "object": {
            "type": "string"
          },
          "projection": {
            "type": "string"
          },
          "softDeleted": {
            "type": "boolean"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "object"
        ]
      },
      "outputs": {
        "properties": {
          "acl": {
            "description": "Access controls on the object.",
            "items": {
              "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlResponse"
            },
            "type": "array"
          },
          "bucket": {
            "description": "The name of the bucket containing this object.",
            "type": "string"
          },
          "cacheControl": {
            "description": "Cache-Control directive for the object data. If omitted, and the object is accessible to all anonymous users, the default will be public, max-age=3600.",
            "type": "string"
          },
          "componentCount": {
            "description": "Number of underlying components that make up this object. Components are accumulated by compose operations.",
            "type": "integer"
          },
          "contentDisposition": {
            "description": "Content-Disposition of the object data.",
            "type": "string"
          },
          "contentEncoding": {
            "description": "Content-Encoding of the object data.",
            "type": "string"
          },
          "contentLanguage": {
            "description": "Content-Language of the object data.",
            "type": "string"
          },
          "contentType": {
            "description": "Content-Type of the object data. If an object is stored without a Content-Type, it is served as application/octet-stream.",
            "type": "string"
          },
          "crc32c": {
            "description": "CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64 in big-endian byte order. For more information about using the CRC32c checksum, see Hashes and ETags: Best Practices.",
            "type": "string"
          },
          "customTime": {
            "description": "A timestamp in RFC 3339 format specified by the user for an object.",
            "type": "string"
          },
          "customerEncryption": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketObjectCustomerEncryptionResponse",
            "description": "Metadata of customer-supplied encryption key, if the object is encrypted by such a key."
          },
          "etag": {
            "description": "HTTP 1.1 Entity tag for the object.",
            "type": "string"
          },
          "eventBasedHold": {
            "description": "Whether an object is under event-based hold. Event-based hold is a way to retain objects until an event occurs, which is signified by the hold's release (i.e. this value is set to false). After being released (set to false), such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is the loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false.",
            "type": "boolean"
          },
          "generation": {
            "description": "The content generation of this object. Used for object versioning.",
            "type": "string"
          },
          "hardDeleteTime": {
            "description": "This is the time (in the future) when the soft-deleted object will no longer be restorable. It is equal to the soft delete time plus the current soft delete retention duration of the bucket.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For objects, this is always storage#object.",
            "type": "string"
          },
          "kmsKeyName": {
            "description": "Not currently supported. Specifying the parameter causes the request to fail with status code 400 - Bad Request.",
            "type": "string"
          },
          "md5Hash": {
            "description": "MD5 hash of the data; encoded using base64. For more information about using the MD5 hash, see Hashes and ETags: Best Practices.",
            "type": "string"
          },
          "mediaLink": {
            "description": "Media download link.",
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "User-provided metadata, in key/value pairs.",
            "type": "object"
          },
          "metageneration": {
            "description": "The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.",
            "type": "string"
          },
          "name": {
            "description": "The name of the object. Required if not specified by URL parameter.",
            "type": "string"
          },
          "owner": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketObjectOwnerResponse",
            "description": "The owner of the object. This will always be the uploader of the object."
          },
          "retention": {
            "$ref": "#/types/google-native:storage%2Fv1:BucketObjectRetentionResponse",
            "description": "A collection of object level retention parameters."
          },
          "retentionExpirationTime": {
            "description": "A server-determined value that specifies the earliest time that the object's retention period expires. This value is in RFC 3339 format. Note 1: This field is not provided for objects with an active event-based hold, since retention expiration is unknown until the hold is removed. Note 2: This value can be provided even when temporary hold is set (so that the user can reason about policy without having to first unset the temporary hold).",
            "type": "string"
          },
          "selfLink": {
            "description": "The link to this object.",
            "type": "string"
          },
          "size": {
            "description": "Content-Length of the data in bytes.",
            "type": "string"
          },
          "softDeleteTime": {
            "description": "The time at which the object became soft-deleted in RFC 3339 format.",
            "type": "string"
          },
          "storageClass": {
            "description": "Storage class of the object.",
            "type": "string"
          },
          "temporaryHold": {
            "description": "Whether an object is under temporary hold. While this flag is set to true, the object is protected against deletion and overwrites. A common use case of this flag is regulatory investigations where objects need to be retained while the investigation is ongoing. Note that unlike event-based hold, temporary hold does not impact retention expiration time of an object.",
            "type": "boolean"
          },
          "timeCreated": {
            "description": "The creation time of the object in RFC 3339 format.",
            "type": "string"
          },
          "timeDeleted": {
            "description": "The time at which the object became noncurrent in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.",
            "type": "string"
          },
          "timeStorageClassUpdated": {
            "description": "The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.",
            "type": "string"
          },
          "updated": {
            "description": "The modification time of the object metadata in RFC 3339 format. Set initially to object creation time and then updated whenever any metadata of the object changes. This includes changes made by a requester, such as modifying custom metadata, as well as changes made by Cloud Storage on behalf of a requester, such as changing the storage class based on an Object Lifecycle Configuration.",
            "type": "string"
          }
        },
        "required": [
          "acl",
          "bucket",
          "cacheControl",
          "componentCount",
          "contentDisposition",
          "contentEncoding",
          "contentLanguage",
          "contentType",
          "crc32c",
          "customTime",
          "customerEncryption",
          "etag",
          "eventBasedHold",
          "generation",
          "hardDeleteTime",
          "kind",
          "kmsKeyName",
          "md5Hash",
          "mediaLink",
          "metadata",
          "metageneration",
          "name",
          "owner",
          "retention",
          "retentionExpirationTime",
          "selfLink",
          "size",
          "softDeleteTime",
          "storageClass",
          "temporaryHold",
          "timeCreated",
          "timeDeleted",
          "timeStorageClassUpdated",
          "updated"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getDefaultObjectAccessControl": {
      "description": "Returns the default object ACL entry for the specified entity on the specified bucket.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "entity": {
            "type": "string"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "entity"
        ]
      },
      "outputs": {
        "properties": {
          "bucket": {
            "description": "The name of the bucket.",
            "type": "string"
          },
          "domain": {
            "description": "The domain associated with the entity, if any.",
            "type": "string"
          },
          "email": {
            "description": "The email address associated with the entity, if any.",
            "type": "string"
          },
          "entity": {
            "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.",
            "type": "string"
          },
          "entityId": {
            "description": "The ID for the entity, if any.",
            "type": "string"
          },
          "etag": {
            "description": "HTTP 1.1 Entity tag for the access-control entry.",
            "type": "string"
          },
          "generation": {
            "description": "The content generation of the object, if applied to an object.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For object access control entries, this is always storage#objectAccessControl.",
            "type": "string"
          },
          "object": {
            "description": "The name of the object, if applied to an object.",
            "type": "string"
          },
          "projectTeam": {
            "$ref": "#/types/google-native:storage%2Fv1:DefaultObjectAccessControlProjectTeamResponse",
            "description": "The project team associated with the entity, if any."
          },
          "role": {
            "description": "The access permission for the entity.",
            "type": "string"
          },
          "selfLink": {
            "description": "The link to this access-control entry.",
            "type": "string"
          }
        },
        "required": [
          "bucket",
          "domain",
          "email",
          "entity",
          "entityId",
          "etag",
          "generation",
          "kind",
          "object",
          "projectTeam",
          "role",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getHmacKey": {
      "description": "Retrieves an HMAC key's metadata",
      "inputs": {
        "properties": {
          "accessId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "accessId"
        ]
      },
      "outputs": {
        "properties": {
          "accessId": {
            "description": "The ID of the HMAC Key.",
            "type": "string"
          },
          "etag": {
            "description": "HTTP 1.1 Entity tag for the HMAC key.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For HMAC Key metadata, this is always storage#hmacKeyMetadata.",
            "type": "string"
          },
          "project": {
            "description": "Project ID owning the service account to which the key authenticates.",
            "type": "string"
          },
          "selfLink": {
            "description": "The link to this resource.",
            "type": "string"
          },
          "serviceAccountEmail": {
            "description": "The email address of the key's associated service account.",
            "type": "string"
          },
          "state": {
            "description": "The state of the key. Can be one of ACTIVE, INACTIVE, or DELETED.",
            "type": "string"
          },
          "timeCreated": {
            "description": "The creation time of the HMAC key in RFC 3339 format.",
            "type": "string"
          },
          "updated": {
            "description": "The last modification time of the HMAC key metadata in RFC 3339 format.",
            "type": "string"
          }
        },
        "required": [
          "accessId",
          "etag",
          "kind",
          "project",
          "selfLink",
          "serviceAccountEmail",
          "state",
          "timeCreated",
          "updated"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getManagedFolder": {
      "description": "Returns metadata of the specified managed folder.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "ifMetagenerationMatch": {
            "type": "string"
          },
          "ifMetagenerationNotMatch": {
            "type": "string"
          },
          "managedFolder": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "managedFolder"
        ]
      },
      "outputs": {
        "properties": {
          "bucket": {
            "description": "The name of the bucket containing this managed folder.",
            "type": "string"
          },
          "createTime": {
            "description": "The creation time of the managed folder in RFC 3339 format.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For managed folders, this is always storage#managedFolder.",
            "type": "string"
          },
          "metageneration": {
            "description": "The version of the metadata for this managed folder. Used for preconditions and for detecting changes in metadata.",
            "type": "string"
          },
          "name": {
            "description": "The name of the managed folder. Required if not specified by URL parameter.",
            "type": "string"
          },
          "selfLink": {
            "description": "The link to this managed folder.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update time of the managed folder metadata in RFC 3339 format.",
            "type": "string"
          }
        },
        "required": [
          "bucket",
          "createTime",
          "kind",
          "metageneration",
          "name",
          "selfLink",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getManagedFolderIamPolicy": {
      "description": "Returns an IAM policy for the specified managed folder.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "managedFolder": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "managedFolder"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "An association between a role, which comes with a set of permissions, and members who may assume that role.",
            "items": {
              "$ref": "#/types/google-native:storage%2Fv1:ManagedFolderIamPolicyBindingsItemResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "HTTP 1.1  Entity tag for the policy.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.",
            "type": "string"
          },
          "resourceId": {
            "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input.",
            "type": "string"
          },
          "version": {
            "description": "The IAM policy format version.",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "kind",
          "resourceId",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getNotification": {
      "description": "View a notification configuration.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "notification": {
            "type": "string"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "notification"
        ]
      },
      "outputs": {
        "properties": {
          "customAttributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "An optional list of additional attributes to attach to each Cloud PubSub message published for this notification subscription.",
            "type": "object"
          },
          "etag": {
            "description": "HTTP 1.1 Entity tag for this subscription notification.",
            "type": "string"
          },
          "eventTypes": {
            "description": "If present, only send notifications about listed event types. If empty, sent notifications for all event types.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "The kind of item this is. For notifications, this is always storage#notification.",
            "type": "string"
          },
          "objectNamePrefix": {
            "description": "If present, only apply this notification configuration to object names that begin with this prefix.",
            "type": "string"
          },
          "payloadFormat": {
            "description": "The desired content of the Payload.",
            "type": "string"
          },
          "selfLink": {
            "description": "The canonical URL of this notification.",
            "type": "string"
          },
          "topic": {
            "description": "The Cloud PubSub topic to which this subscription publishes. Formatted as: '//pubsub.googleapis.com/projects/{project-identifier}/topics/{my-topic}'",
            "type": "string"
          }
        },
        "required": [
          "customAttributes",
          "etag",
          "eventTypes",
          "kind",
          "objectNamePrefix",
          "payloadFormat",
          "selfLink",
          "topic"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getObjectAccessControl": {
      "description": "Returns the ACL entry for the specified entity on the specified object.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "entity": {
            "type": "string"
          },
          "generation": {
            "type": "string"
          },
          "object": {
            "type": "string"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "entity",
          "object"
        ]
      },
      "outputs": {
        "properties": {
          "bucket": {
            "description": "The name of the bucket.",
            "type": "string"
          },
          "domain": {
            "description": "The domain associated with the entity, if any.",
            "type": "string"
          },
          "email": {
            "description": "The email address associated with the entity, if any.",
            "type": "string"
          },
          "entity": {
            "description": "The entity holding the permission, in one of the following forms: \n- user-userId \n- user-email \n- group-groupId \n- group-email \n- domain-domain \n- project-team-projectId \n- allUsers \n- allAuthenticatedUsers Examples: \n- The user liz@example.com would be user-liz@example.com. \n- The group example@googlegroups.com would be group-example@googlegroups.com. \n- To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.",
            "type": "string"
          },
          "entityId": {
            "description": "The ID for the entity, if any.",
            "type": "string"
          },
          "etag": {
            "description": "HTTP 1.1 Entity tag for the access-control entry.",
            "type": "string"
          },
          "generation": {
            "description": "The content generation of the object, if applied to an object.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For object access control entries, this is always storage#objectAccessControl.",
            "type": "string"
          },
          "object": {
            "description": "The name of the object, if applied to an object.",
            "type": "string"
          },
          "projectTeam": {
            "$ref": "#/types/google-native:storage%2Fv1:ObjectAccessControlProjectTeamResponse",
            "description": "The project team associated with the entity, if any."
          },
          "role": {
            "description": "The access permission for the entity.",
            "type": "string"
          },
          "selfLink": {
            "description": "The link to this access-control entry.",
            "type": "string"
          }
        },
        "required": [
          "bucket",
          "domain",
          "email",
          "entity",
          "entityId",
          "etag",
          "generation",
          "kind",
          "object",
          "projectTeam",
          "role",
          "selfLink"
        ],
        "type": "object"
      }
    },
    "google-native:storage/v1:getObjectIamPolicy": {
      "description": "Returns an IAM policy for the specified object.",
      "inputs": {
        "properties": {
          "bucket": {
            "type": "string"
          },
          "generation": {
            "type": "string"
          },
          "object": {
            "type": "string"
          },
          "userProject": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "object"
        ]
      },
      "outputs": {
        "properties": {
          "bindings": {
            "description": "An association between a role, which comes with a set of permissions, and members who may assume that role.",
            "items": {
              "$ref": "#/types/google-native:storage%2Fv1:ObjectIamPolicyBindingsItemResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "HTTP 1.1  Entity tag for the policy.",
            "type": "string"
          },
          "kind": {
            "description": "The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.",
            "type": "string"
          },
          "resourceId": {
            "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, projects/_/buckets/bucket/objects/object for objects, and projects/_/buckets/bucket/managedFolders/managedFolder. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input.",
            "type": "string"
          },
          "version": {
            "description": "The IAM policy format version.",
            "type": "integer"
          }
        },
        "required": [
          "bindings",
          "etag",
          "kind",
          "resourceId",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:storagetransfer/v1:getAgentPool": {
      "description": "Gets an agent pool.",
      "inputs": {
        "properties": {
          "agentPoolId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "agentPoolId"
        ]
      },
      "outputs": {
        "properties": {
          "bandwidthLimit": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:BandwidthLimitResponse",
            "description": "Specifies the bandwidth limit details. If this field is unspecified, the default value is set as 'No Limit'."
          },
          "displayName": {
            "description": "Specifies the client-specified AgentPool description.",
            "type": "string"
          },
          "name": {
            "description": "Specifies a unique string that identifies the agent pool. Format: `projects/{project_id}/agentPools/{agent_pool_id}`",
            "type": "string"
          },
          "state": {
            "description": "Specifies the state of the AgentPool.",
            "type": "string"
          }
        },
        "required": [
          "bandwidthLimit",
          "displayName",
          "name",
          "state"
        ],
        "type": "object"
      }
    },
    "google-native:storagetransfer/v1:getTransferJob": {
      "description": "Gets a transfer job.",
      "inputs": {
        "properties": {
          "projectId": {
            "type": "string"
          },
          "transferJobId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "projectId",
          "transferJobId"
        ]
      },
      "outputs": {
        "properties": {
          "creationTime": {
            "description": "The time that the transfer job was created.",
            "type": "string"
          },
          "deletionTime": {
            "description": "The time that the transfer job was deleted.",
            "type": "string"
          },
          "description": {
            "description": "A description provided by the user for the job. Its max length is 1024 bytes when Unicode-encoded.",
            "type": "string"
          },
          "eventStream": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:EventStreamResponse",
            "description": "Specifies the event stream for the transfer job for event-driven transfers. When EventStream is specified, the Schedule fields are ignored."
          },
          "lastModificationTime": {
            "description": "The time that the transfer job was last modified.",
            "type": "string"
          },
          "latestOperationName": {
            "description": "The name of the most recently started TransferOperation of this JobConfig. Present if a TransferOperation has been created for this JobConfig.",
            "type": "string"
          },
          "loggingConfig": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:LoggingConfigResponse",
            "description": "Logging configuration."
          },
          "name": {
            "description": "A unique name (within the transfer project) assigned when the job is created. If this field is empty in a CreateTransferJobRequest, Storage Transfer Service assigns a unique name. Otherwise, the specified name is used as the unique name for this job. If the specified name is in use by a job, the creation request fails with an ALREADY_EXISTS error. This name must start with `\"transferJobs/\"` prefix and end with a letter or a number, and should be no more than 128 characters. For transfers involving PosixFilesystem, this name must start with `transferJobs/OPI` specifically. For all other transfer types, this name must not start with `transferJobs/OPI`. Non-PosixFilesystem example: `\"transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$\"` PosixFilesystem example: `\"transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$\"` Applications must not rely on the enforcement of naming requirements involving OPI. Invalid job names fail with an INVALID_ARGUMENT error.",
            "type": "string"
          },
          "notificationConfig": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:NotificationConfigResponse",
            "description": "Notification configuration. This is not supported for transfers involving PosixFilesystem."
          },
          "project": {
            "description": "The ID of the Google Cloud project that owns the job.",
            "type": "string"
          },
          "schedule": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:ScheduleResponse",
            "description": "Specifies schedule for the transfer job. This is an optional field. When the field is not set, the job never executes a transfer, unless you invoke RunTransferJob or update the job to have a non-empty schedule."
          },
          "status": {
            "description": "Status of the job. This value MUST be specified for `CreateTransferJobRequests`. **Note:** The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.",
            "type": "string"
          },
          "transferSpec": {
            "$ref": "#/types/google-native:storagetransfer%2Fv1:TransferSpecResponse",
            "description": "Transfer specification."
          }
        },
        "required": [
          "creationTime",
          "deletionTime",
          "description",
          "eventStream",
          "lastModificationTime",
          "latestOperationName",
          "loggingConfig",
          "name",
          "notificationConfig",
          "project",
          "schedule",
          "status",
          "transferSpec"
        ],
        "type": "object"
      }
    },
    "google-native:testing/v1:getDeviceSession": {
      "description": "GET /v1/projects/{project_id}/deviceSessions/{device_session_id} Return a DeviceSession, which documents the allocation status and whether the device is allocated. Clients making requests from this API must poll GetDeviceSession.",
      "inputs": {
        "properties": {
          "deviceSessionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "deviceSessionId"
        ]
      },
      "outputs": {
        "properties": {
          "activeStartTime": {
            "description": "The timestamp that the session first became ACTIVE.",
            "type": "string"
          },
          "androidDevice": {
            "$ref": "#/types/google-native:testing%2Fv1:AndroidDeviceResponse",
            "description": "The requested device"
          },
          "createTime": {
            "description": "The time that the Session was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The title of the DeviceSession to be presented in the UI.",
            "type": "string"
          },
          "expireTime": {
            "description": "Optional. If the device is still in use at this time, any connections will be ended and the SessionState will transition from ACTIVE to FINISHED.",
            "type": "string"
          },
          "inactivityTimeout": {
            "description": "The interval of time that this device must be interacted with before it transitions from ACTIVE to TIMEOUT_INACTIVITY.",
            "type": "string"
          },
          "name": {
            "description": "Optional. Name of the DeviceSession, e.g. \"projects/{project_id}/deviceSessions/{session_id}\"",
            "type": "string"
          },
          "state": {
            "description": "Current state of the DeviceSession.",
            "type": "string"
          },
          "stateHistories": {
            "description": "The historical state transitions of the session_state message including the current session state.",
            "items": {
              "$ref": "#/types/google-native:testing%2Fv1:SessionStateEventResponse"
            },
            "type": "array"
          },
          "ttl": {
            "description": "Optional. The amount of time that a device will be initially allocated for. This can eventually be extended with the UpdateDeviceSession RPC. Default: 30 minutes.",
            "type": "string"
          }
        },
        "required": [
          "activeStartTime",
          "androidDevice",
          "createTime",
          "displayName",
          "expireTime",
          "inactivityTimeout",
          "name",
          "state",
          "stateHistories",
          "ttl"
        ],
        "type": "object"
      }
    },
    "google-native:testing/v1:getTestMatrix": {
      "description": "Checks the status of a test matrix and the executions once they are created. The test matrix will contain the list of test executions to run if and only if the resultStorage.toolResultsExecution fields have been populated. Note: Flaky test executions may be added to the matrix at a later stage. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the Test Matrix does not exist",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "testMatrixId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "testMatrixId"
        ]
      },
      "outputs": {
        "properties": {
          "clientInfo": {
            "$ref": "#/types/google-native:testing%2Fv1:ClientInfoResponse",
            "description": "Information about the client which invoked the test."
          },
          "environmentMatrix": {
            "$ref": "#/types/google-native:testing%2Fv1:EnvironmentMatrixResponse",
            "description": "The devices the tests are being executed on."
          },
          "failFast": {
            "description": "If true, only a single attempt at most will be made to run each execution/shard in the matrix. Flaky test attempts are not affected. Normally, 2 or more attempts are made if a potential infrastructure issue is detected. This feature is for latency sensitive workloads. The incidence of execution failures may be significantly greater for fail-fast matrices and support is more limited because of that expectation.",
            "type": "boolean"
          },
          "flakyTestAttempts": {
            "description": "The number of times a TestExecution should be re-attempted if one or more of its test cases fail for any reason. The maximum number of reruns allowed is 10. Default is 0, which implies no reruns.",
            "type": "integer"
          },
          "invalidMatrixDetails": {
            "description": "Describes why the matrix is considered invalid. Only useful for matrices in the INVALID state.",
            "type": "string"
          },
          "outcomeSummary": {
            "description": "Output Only. The overall outcome of the test. Only set when the test matrix state is FINISHED.",
            "type": "string"
          },
          "project": {
            "description": "The cloud project that owns the test matrix.",
            "type": "string"
          },
          "resultStorage": {
            "$ref": "#/types/google-native:testing%2Fv1:ResultStorageResponse",
            "description": "Where the results for the matrix are written."
          },
          "state": {
            "description": "Indicates the current progress of the test matrix.",
            "type": "string"
          },
          "testExecutions": {
            "description": "The list of test executions that the service creates for this matrix.",
            "items": {
              "$ref": "#/types/google-native:testing%2Fv1:TestExecutionResponse"
            },
            "type": "array"
          },
          "testMatrixId": {
            "description": "Unique id set by the service.",
            "type": "string"
          },
          "testSpecification": {
            "$ref": "#/types/google-native:testing%2Fv1:TestSpecificationResponse",
            "description": "How to run the test."
          },
          "timestamp": {
            "description": "The time this test matrix was initially created.",
            "type": "string"
          }
        },
        "required": [
          "clientInfo",
          "environmentMatrix",
          "failFast",
          "flakyTestAttempts",
          "invalidMatrixDetails",
          "outcomeSummary",
          "project",
          "resultStorage",
          "state",
          "testExecutions",
          "testMatrixId",
          "testSpecification",
          "timestamp"
        ],
        "type": "object"
      }
    },
    "google-native:toolresults/v1beta3:getExecution": {
      "description": "Gets an Execution. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the Execution does not exist",
      "inputs": {
        "properties": {
          "executionId": {
            "type": "string"
          },
          "historyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "executionId",
          "historyId"
        ]
      },
      "outputs": {
        "properties": {
          "completionTime": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
            "description": "The time when the Execution status transitioned to COMPLETE. This value will be set automatically when state transitions to COMPLETE. - In response: set if the execution state is COMPLETE. - In create/update request: never set"
          },
          "creationTime": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
            "description": "The time when the Execution was created. This value will be set automatically when CreateExecution is called. - In response: always set - In create/update request: never set"
          },
          "dimensionDefinitions": {
            "description": "The dimensions along which different steps in this execution may vary. This must remain fixed over the life of the execution. Returns INVALID_ARGUMENT if this field is set in an update request. Returns INVALID_ARGUMENT if the same name occurs in more than one dimension_definition. Returns INVALID_ARGUMENT if the size of the list is over 100. - In response: present if set by create - In create request: optional - In update request: never set",
            "items": {
              "$ref": "#/types/google-native:toolresults%2Fv1beta3:MatrixDimensionDefinitionResponse"
            },
            "type": "array"
          },
          "executionId": {
            "description": "A unique identifier within a History for this Execution. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create/update request: never set",
            "type": "string"
          },
          "outcome": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:OutcomeResponse",
            "description": "Classify the result, for example into SUCCESS or FAILURE - In response: present if set by create/update request - In create/update request: optional"
          },
          "specification": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:SpecificationResponse",
            "description": "Lightweight information about execution request. - In response: present if set by create - In create: optional - In update: optional"
          },
          "state": {
            "description": "The initial state is IN_PROGRESS. The only legal state transitions is from IN_PROGRESS to COMPLETE. A PRECONDITION_FAILED will be returned if an invalid transition is requested. The state can only be set to COMPLETE once. A FAILED_PRECONDITION will be returned if the state is set to COMPLETE multiple times. If the state is set to COMPLETE, all the in-progress steps within the execution will be set as COMPLETE. If the outcome of the step is not set, the outcome will be set to INCONCLUSIVE. - In response always set - In create/update request: optional",
            "type": "string"
          },
          "testExecutionMatrixId": {
            "description": "TestExecution Matrix ID that the TestExecutionService uses. - In response: present if set by create - In create: optional - In update: never set",
            "type": "string"
          }
        },
        "required": [
          "completionTime",
          "creationTime",
          "dimensionDefinitions",
          "executionId",
          "outcome",
          "specification",
          "state",
          "testExecutionMatrixId"
        ],
        "type": "object"
      }
    },
    "google-native:toolresults/v1beta3:getHistory": {
      "description": "Gets a History. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the History does not exist",
      "inputs": {
        "properties": {
          "historyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "historyId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "A short human-readable (plain text) name to display in the UI. Maximum of 100 characters. - In response: present if set during create. - In create request: optional",
            "type": "string"
          },
          "historyId": {
            "description": "A unique identifier within a project for this History. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create request: never set",
            "type": "string"
          },
          "name": {
            "description": "A name to uniquely identify a history within a project. Maximum of 200 characters. - In response always set - In create request: always set",
            "type": "string"
          },
          "testPlatform": {
            "description": "The platform of the test history. - In response: always set. Returns the platform of the last execution if unknown.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "historyId",
          "name",
          "testPlatform"
        ],
        "type": "object"
      }
    },
    "google-native:toolresults/v1beta3:getPerfSampleSeries": {
      "description": "Gets a PerfSampleSeries. May return any of the following error code(s): - NOT_FOUND - The specified PerfSampleSeries does not exist",
      "inputs": {
        "properties": {
          "executionId": {
            "type": "string"
          },
          "historyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sampleSeriesId": {
            "type": "string"
          },
          "stepId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "executionId",
          "historyId",
          "sampleSeriesId",
          "stepId"
        ]
      },
      "outputs": {
        "properties": {
          "basicPerfSampleSeries": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:BasicPerfSampleSeriesResponse",
            "description": "Basic series represented by a line chart"
          },
          "executionId": {
            "description": "A tool results execution ID. ",
            "type": "string"
          },
          "historyId": {
            "description": "A tool results history ID. ",
            "type": "string"
          },
          "project": {
            "description": "The cloud project ",
            "type": "string"
          },
          "sampleSeriesId": {
            "description": "A sample series id ",
            "type": "string"
          },
          "stepId": {
            "description": "A tool results step ID. ",
            "type": "string"
          }
        },
        "required": [
          "basicPerfSampleSeries",
          "executionId",
          "historyId",
          "project",
          "sampleSeriesId",
          "stepId"
        ],
        "type": "object"
      }
    },
    "google-native:toolresults/v1beta3:getStep": {
      "description": "Gets a Step. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the Step does not exist",
      "inputs": {
        "properties": {
          "executionId": {
            "type": "string"
          },
          "historyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "stepId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "executionId",
          "historyId",
          "stepId"
        ]
      },
      "outputs": {
        "properties": {
          "completionTime": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
            "description": "The time when the step status was set to complete. This value will be set automatically when state transitions to COMPLETE. - In response: set if the execution state is COMPLETE. - In create/update request: never set"
          },
          "creationTime": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TimestampResponse",
            "description": "The time when the step was created. - In response: always set - In create/update request: never set"
          },
          "description": {
            "description": "A description of this tool For example: mvn clean package -D skipTests=true - In response: present if set by create/update request - In create/update request: optional",
            "type": "string"
          },
          "deviceUsageDuration": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
            "description": "How much the device resource is used to perform the test. This is the device usage used for billing purpose, which is different from the run_duration, for example, infrastructure failure won't be charged for device usage. PRECONDITION_FAILED will be returned if one attempts to set a device_usage on a step which already has this field set. - In response: present if previously set. - In create request: optional - In update request: optional"
          },
          "dimensionValue": {
            "description": "If the execution containing this step has any dimension_definition set, then this field allows the child to specify the values of the dimensions. The keys must exactly match the dimension_definition of the execution. For example, if the execution has `dimension_definition = ['attempt', 'device']` then a step must define values for those dimensions, eg. `dimension_value = ['attempt': '1', 'device': 'Nexus 6']` If a step does not participate in one dimension of the matrix, the value for that dimension should be empty string. For example, if one of the tests is executed by a runner which does not support retries, the step could have `dimension_value = ['attempt': '', 'device': 'Nexus 6']` If the step does not participate in any dimensions of the matrix, it may leave dimension_value unset. A PRECONDITION_FAILED will be returned if any of the keys do not exist in the dimension_definition of the execution. A PRECONDITION_FAILED will be returned if another step in this execution already has the same name and dimension_value, but differs on other data fields, for example, step field is different. A PRECONDITION_FAILED will be returned if dimension_value is set, and there is a dimension_definition in the execution which is not specified as one of the keys. - In response: present if set by create - In create request: optional - In update request: never set",
            "items": {
              "$ref": "#/types/google-native:toolresults%2Fv1beta3:StepDimensionValueEntryResponse"
            },
            "type": "array"
          },
          "hasImages": {
            "description": "Whether any of the outputs of this step are images whose thumbnails can be fetched with ListThumbnails. - In response: always set - In create/update request: never set",
            "type": "boolean"
          },
          "labels": {
            "description": "Arbitrary user-supplied key/value pairs that are associated with the step. Users are responsible for managing the key namespace such that keys don't accidentally collide. An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or if the length of any of the keys or values exceeds 100 characters. - In response: always set - In create request: optional - In update request: optional; any new key/value pair will be added to the map, and any new value for an existing key will update that key's value",
            "items": {
              "$ref": "#/types/google-native:toolresults%2Fv1beta3:StepLabelsEntryResponse"
            },
            "type": "array"
          },
          "multiStep": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:MultiStepResponse",
            "description": "Details when multiple steps are run with the same configuration as a group. These details can be used identify which group this step is part of. It also identifies the groups 'primary step' which indexes all the group members. - In response: present if previously set. - In create request: optional, set iff this step was performed more than once. - In update request: optional"
          },
          "name": {
            "description": "A short human-readable name to display in the UI. Maximum of 100 characters. For example: Clean build A PRECONDITION_FAILED will be returned upon creating a new step if it shares its name and dimension_value with an existing step. If two steps represent a similar action, but have different dimension values, they should share the same name. For instance, if the same set of tests is run on two different platforms, the two steps should have the same name. - In response: always set - In create request: always set - In update request: never set",
            "type": "string"
          },
          "outcome": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:OutcomeResponse",
            "description": "Classification of the result, for example into SUCCESS or FAILURE - In response: present if set by create/update request - In create/update request: optional"
          },
          "runDuration": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:DurationResponse",
            "description": "How long it took for this step to run. If unset, this is set to the difference between creation_time and completion_time when the step is set to the COMPLETE state. In some cases, it is appropriate to set this value separately: For instance, if a step is created, but the operation it represents is queued for a few minutes before it executes, it would be appropriate not to include the time spent queued in its run_duration. PRECONDITION_FAILED will be returned if one attempts to set a run_duration on a step which already has this field set. - In response: present if previously set; always present on COMPLETE step - In create request: optional - In update request: optional"
          },
          "state": {
            "description": "The initial state is IN_PROGRESS. The only legal state transitions are * IN_PROGRESS -\u003e COMPLETE A PRECONDITION_FAILED will be returned if an invalid transition is requested. It is valid to create Step with a state set to COMPLETE. The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be returned if the state is set to COMPLETE multiple times. - In response: always set - In create/update request: optional",
            "type": "string"
          },
          "stepId": {
            "description": "A unique identifier within a Execution for this Step. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response: always set - In create/update request: never set",
            "type": "string"
          },
          "testExecutionStep": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:TestExecutionStepResponse",
            "description": "An execution of a test runner."
          },
          "toolExecutionStep": {
            "$ref": "#/types/google-native:toolresults%2Fv1beta3:ToolExecutionStepResponse",
            "description": "An execution of a tool (used for steps we don't explicitly support)."
          }
        },
        "required": [
          "completionTime",
          "creationTime",
          "description",
          "deviceUsageDuration",
          "dimensionValue",
          "hasImages",
          "labels",
          "multiStep",
          "name",
          "outcome",
          "runDuration",
          "state",
          "stepId",
          "testExecutionStep",
          "toolExecutionStep"
        ],
        "type": "object"
      }
    },
    "google-native:tpu/v1:getNode": {
      "description": "Gets the details of a node.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "nodeId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "nodeId"
        ]
      },
      "outputs": {
        "properties": {
          "acceleratorType": {
            "description": "The type of hardware accelerators associated with this node.",
            "type": "string"
          },
          "apiVersion": {
            "description": "The API version that created this Node.",
            "type": "string"
          },
          "cidrBlock": {
            "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the node was created.",
            "type": "string"
          },
          "description": {
            "description": "The user-supplied description of the TPU. Maximum of 512 characters.",
            "type": "string"
          },
          "health": {
            "description": "The health status of the TPU node.",
            "type": "string"
          },
          "healthDescription": {
            "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy.",
            "type": "string"
          },
          "ipAddress": {
            "deprecationMessage": "Output only. DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances.",
            "description": "DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user-provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of the TPU",
            "type": "string"
          },
          "network": {
            "description": "The name of a network they wish to peer the TPU node to. It must be a preexisting Compute Engine network inside of the project on which this API has been activated. If none is provided, \"default\" will be used.",
            "type": "string"
          },
          "networkEndpoints": {
            "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that Tensorflow clients of the node reach out to the 0th entry in this map first.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv1:NetworkEndpointResponse"
            },
            "type": "array"
          },
          "port": {
            "deprecationMessage": "Output only. DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances.",
            "description": "DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances.",
            "type": "string"
          },
          "schedulingConfig": {
            "$ref": "#/types/google-native:tpu%2Fv1:SchedulingConfigResponse",
            "description": "The scheduling options for this node."
          },
          "serviceAccount": {
            "description": "The service account used to run the tensor flow services within the node. To share resources, including Google Cloud Storage data, with the Tensorflow job running in the Node, this account must have permissions to that data.",
            "type": "string"
          },
          "state": {
            "description": "The current state for the TPU Node.",
            "type": "string"
          },
          "symptoms": {
            "description": "The Symptoms that have occurred to the TPU Node.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv1:SymptomResponse"
            },
            "type": "array"
          },
          "tensorflowVersion": {
            "description": "The version of Tensorflow running in the Node.",
            "type": "string"
          },
          "useServiceNetworking": {
            "description": "Whether the VPC peering for the node is set up through Service Networking API. The VPC Peering should be set up before provisioning the node. If this field is set, cidr_block field should not be specified. If the network, that you want to peer the TPU Node to, is Shared VPC networks, the node must be created with this this field enabled.",
            "type": "boolean"
          }
        },
        "required": [
          "acceleratorType",
          "apiVersion",
          "cidrBlock",
          "createTime",
          "description",
          "health",
          "healthDescription",
          "ipAddress",
          "labels",
          "name",
          "network",
          "networkEndpoints",
          "port",
          "schedulingConfig",
          "serviceAccount",
          "state",
          "symptoms",
          "tensorflowVersion",
          "useServiceNetworking"
        ],
        "type": "object"
      }
    },
    "google-native:tpu/v1alpha1:getNode": {
      "description": "Gets the details of a node.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "nodeId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "nodeId"
        ]
      },
      "outputs": {
        "properties": {
          "acceleratorType": {
            "description": "The type of hardware accelerators associated with this node.",
            "type": "string"
          },
          "apiVersion": {
            "description": "The API version that created this Node.",
            "type": "string"
          },
          "cidrBlock": {
            "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the node was created.",
            "type": "string"
          },
          "description": {
            "description": "The user-supplied description of the TPU. Maximum of 512 characters.",
            "type": "string"
          },
          "health": {
            "description": "The health status of the TPU node.",
            "type": "string"
          },
          "healthDescription": {
            "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy.",
            "type": "string"
          },
          "ipAddress": {
            "deprecationMessage": "Output only. DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances.",
            "description": "DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user-provided metadata.",
            "type": "object"
          },
          "name": {
            "description": "Immutable. The name of the TPU",
            "type": "string"
          },
          "network": {
            "description": "The name of a network they wish to peer the TPU node to. It must be a preexisting Compute Engine network inside of the project on which this API has been activated. If none is provided, \"default\" will be used.",
            "type": "string"
          },
          "networkEndpoints": {
            "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that Tensorflow clients of the node reach out to the 0th entry in this map first.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv1alpha1:NetworkEndpointResponse"
            },
            "type": "array"
          },
          "port": {
            "deprecationMessage": "Output only. DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances.",
            "description": "DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances.",
            "type": "string"
          },
          "schedulingConfig": {
            "$ref": "#/types/google-native:tpu%2Fv1alpha1:SchedulingConfigResponse",
            "description": "The scheduling options for this node."
          },
          "serviceAccount": {
            "description": "The service account used to run the tensor flow services within the node. To share resources, including Google Cloud Storage data, with the Tensorflow job running in the Node, this account must have permissions to that data.",
            "type": "string"
          },
          "state": {
            "description": "The current state for the TPU Node.",
            "type": "string"
          },
          "symptoms": {
            "description": "The Symptoms that have occurred to the TPU Node.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv1alpha1:SymptomResponse"
            },
            "type": "array"
          },
          "tensorflowVersion": {
            "description": "The version of Tensorflow running in the Node.",
            "type": "string"
          },
          "useServiceNetworking": {
            "description": "Whether the VPC peering for the node is set up through Service Networking API. The VPC Peering should be set up before provisioning the node. If this field is set, cidr_block field should not be specified. If the network, that you want to peer the TPU Node to, is Shared VPC networks, the node must be created with this this field enabled.",
            "type": "boolean"
          }
        },
        "required": [
          "acceleratorType",
          "apiVersion",
          "cidrBlock",
          "createTime",
          "description",
          "health",
          "healthDescription",
          "ipAddress",
          "labels",
          "name",
          "network",
          "networkEndpoints",
          "port",
          "schedulingConfig",
          "serviceAccount",
          "state",
          "symptoms",
          "tensorflowVersion",
          "useServiceNetworking"
        ],
        "type": "object"
      }
    },
    "google-native:tpu/v2:getNode": {
      "description": "Gets the details of a node.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "nodeId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "nodeId"
        ]
      },
      "outputs": {
        "properties": {
          "acceleratorConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2:AcceleratorConfigResponse",
            "description": "The AccleratorConfig for the TPU Node."
          },
          "acceleratorType": {
            "description": "Optional. The type of hardware accelerators associated with this node.",
            "type": "string"
          },
          "apiVersion": {
            "description": "The API version that created this Node.",
            "type": "string"
          },
          "cidrBlock": {
            "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the node was created.",
            "type": "string"
          },
          "dataDisks": {
            "description": "The additional data disks for the Node.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv2:AttachedDiskResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "The user-supplied description of the TPU. Maximum of 512 characters.",
            "type": "string"
          },
          "health": {
            "description": "The health status of the TPU node.",
            "type": "string"
          },
          "healthDescription": {
            "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user-provided metadata.",
            "type": "object"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script",
            "type": "object"
          },
          "multisliceNode": {
            "description": "Whether the Node belongs to a Multislice group.",
            "type": "boolean"
          },
          "name": {
            "description": "Immutable. The name of the TPU.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2:NetworkConfigResponse",
            "description": "Network configurations for the TPU node."
          },
          "networkEndpoints": {
            "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv2:NetworkEndpointResponse"
            },
            "type": "array"
          },
          "queuedResource": {
            "description": "The qualified name of the QueuedResource that requested this Node.",
            "type": "string"
          },
          "runtimeVersion": {
            "description": "The runtime version running in the Node.",
            "type": "string"
          },
          "schedulingConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2:SchedulingConfigResponse",
            "description": "The scheduling options for this node."
          },
          "serviceAccount": {
            "$ref": "#/types/google-native:tpu%2Fv2:ServiceAccountResponse",
            "description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
          },
          "shieldedInstanceConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2:ShieldedInstanceConfigResponse",
            "description": "Shielded Instance options."
          },
          "state": {
            "description": "The current state for the TPU Node.",
            "type": "string"
          },
          "symptoms": {
            "description": "The Symptoms that have occurred to the TPU Node.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv2:SymptomResponse"
            },
            "type": "array"
          },
          "tags": {
            "description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "acceleratorConfig",
          "acceleratorType",
          "apiVersion",
          "cidrBlock",
          "createTime",
          "dataDisks",
          "description",
          "health",
          "healthDescription",
          "labels",
          "metadata",
          "multisliceNode",
          "name",
          "networkConfig",
          "networkEndpoints",
          "queuedResource",
          "runtimeVersion",
          "schedulingConfig",
          "serviceAccount",
          "shieldedInstanceConfig",
          "state",
          "symptoms",
          "tags"
        ],
        "type": "object"
      }
    },
    "google-native:tpu/v2alpha1:getNode": {
      "description": "Gets the details of a node.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "nodeId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "nodeId"
        ]
      },
      "outputs": {
        "properties": {
          "acceleratorConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:AcceleratorConfigResponse",
            "description": "The AccleratorConfig for the TPU Node."
          },
          "acceleratorType": {
            "description": "The type of hardware accelerators associated with this node.",
            "type": "string"
          },
          "apiVersion": {
            "description": "The API version that created this Node.",
            "type": "string"
          },
          "autocheckpointEnabled": {
            "description": "Optional. Whether Autocheckpoint is enabled.",
            "type": "boolean"
          },
          "bootDiskConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:BootDiskConfigResponse",
            "description": "Optional. Boot disk configuration."
          },
          "cidrBlock": {
            "description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block.",
            "type": "string"
          },
          "createTime": {
            "description": "The time when the node was created.",
            "type": "string"
          },
          "dataDisks": {
            "description": "The additional data disks for the Node.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv2alpha1:AttachedDiskResponse"
            },
            "type": "array"
          },
          "description": {
            "description": "The user-supplied description of the TPU. Maximum of 512 characters.",
            "type": "string"
          },
          "health": {
            "description": "The health status of the TPU node.",
            "type": "string"
          },
          "healthDescription": {
            "description": "If this field is populated, it contains a description of why the TPU Node is unhealthy.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels to represent user-provided metadata.",
            "type": "object"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script",
            "type": "object"
          },
          "multisliceNode": {
            "description": "Whether the Node belongs to a Multislice group.",
            "type": "boolean"
          },
          "name": {
            "description": "Immutable. The name of the TPU.",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:NetworkConfigResponse",
            "description": "Network configurations for the TPU node."
          },
          "networkEndpoints": {
            "description": "The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv2alpha1:NetworkEndpointResponse"
            },
            "type": "array"
          },
          "queuedResource": {
            "description": "The qualified name of the QueuedResource that requested this Node.",
            "type": "string"
          },
          "runtimeVersion": {
            "description": "The runtime version running in the Node.",
            "type": "string"
          },
          "schedulingConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:SchedulingConfigResponse",
            "description": "The scheduling options for this node."
          },
          "serviceAccount": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:ServiceAccountResponse",
            "description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
          },
          "shieldedInstanceConfig": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:ShieldedInstanceConfigResponse",
            "description": "Shielded Instance options."
          },
          "state": {
            "description": "The current state for the TPU Node.",
            "type": "string"
          },
          "symptoms": {
            "description": "The Symptoms that have occurred to the TPU Node.",
            "items": {
              "$ref": "#/types/google-native:tpu%2Fv2alpha1:SymptomResponse"
            },
            "type": "array"
          },
          "tags": {
            "description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "acceleratorConfig",
          "acceleratorType",
          "apiVersion",
          "autocheckpointEnabled",
          "bootDiskConfig",
          "cidrBlock",
          "createTime",
          "dataDisks",
          "description",
          "health",
          "healthDescription",
          "labels",
          "metadata",
          "multisliceNode",
          "name",
          "networkConfig",
          "networkEndpoints",
          "queuedResource",
          "runtimeVersion",
          "schedulingConfig",
          "serviceAccount",
          "shieldedInstanceConfig",
          "state",
          "symptoms",
          "tags"
        ],
        "type": "object"
      }
    },
    "google-native:tpu/v2alpha1:getQueuedResource": {
      "description": "Gets details of a queued resource.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "queuedResourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "queuedResourceId"
        ]
      },
      "outputs": {
        "properties": {
          "bestEffort": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:BestEffortResponse",
            "description": "The BestEffort tier."
          },
          "createTime": {
            "description": "The time when the QueuedResource was created.",
            "type": "string"
          },
          "guaranteed": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:GuaranteedResponse",
            "description": "The Guaranteed tier."
          },
          "name": {
            "description": "Immutable. The name of the QueuedResource.",
            "type": "string"
          },
          "queueingPolicy": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:QueueingPolicyResponse",
            "description": "The queueing policy of the QueuedRequest."
          },
          "reservationName": {
            "description": "Name of the reservation in which the resource should be provisioned. Format: projects/{project}/locations/{zone}/reservations/{reservation}",
            "type": "string"
          },
          "spot": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:SpotResponse",
            "description": "Optional. The Spot tier."
          },
          "state": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:QueuedResourceStateResponse",
            "description": "State of the QueuedResource request."
          },
          "tpu": {
            "$ref": "#/types/google-native:tpu%2Fv2alpha1:TpuResponse",
            "description": "Defines a TPU resource."
          }
        },
        "required": [
          "bestEffort",
          "createTime",
          "guaranteed",
          "name",
          "queueingPolicy",
          "reservationName",
          "spot",
          "state",
          "tpu"
        ],
        "type": "object"
      }
    },
    "google-native:transcoder/v1:getJob": {
      "description": "Returns the job data.",
      "inputs": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "batchModePriority": {
            "description": "The processing priority of a batch job. This field can only be set for batch mode jobs. The default value is 0. This value cannot be negative. Higher values correspond to higher priorities for the job.",
            "type": "integer"
          },
          "config": {
            "$ref": "#/types/google-native:transcoder%2Fv1:JobConfigResponse",
            "description": "The configuration for this job."
          },
          "createTime": {
            "description": "The time the job was created.",
            "type": "string"
          },
          "endTime": {
            "description": "The time the transcoding finished.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:transcoder%2Fv1:StatusResponse",
            "description": "An error object that describes the reason for the failure. This property is always present when ProcessingState is `FAILED`."
          },
          "inputUri": {
            "description": "Input only. Specify the `input_uri` to populate empty `uri` fields in each element of `Job.config.inputs` or `JobTemplate.config.inputs` when using template. URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, `gs://bucket/inputs/file.mp4`). See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats).",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels associated with this job. You can use these to organize and group your jobs.",
            "type": "object"
          },
          "mode": {
            "description": "The processing mode of the job. The default is `PROCESSING_MODE_INTERACTIVE`.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the job. Format: `projects/{project_number}/locations/{location}/jobs/{job}`",
            "type": "string"
          },
          "optimization": {
            "description": "Optional. The optimization strategy of the job. The default is `AUTODETECT`.",
            "type": "string"
          },
          "outputUri": {
            "description": "Input only. Specify the `output_uri` to populate an empty `Job.config.output.uri` or `JobTemplate.config.output.uri` when using template. URI for the output file(s). For example, `gs://my-bucket/outputs/`. See [Supported input and output formats](https://cloud.google.com/transcoder/docs/concepts/supported-input-and-output-formats).",
            "type": "string"
          },
          "startTime": {
            "description": "The time the transcoding started.",
            "type": "string"
          },
          "state": {
            "description": "The current state of the job.",
            "type": "string"
          },
          "templateId": {
            "description": "Input only. Specify the `template_id` to use for populating `Job.config`. The default is `preset/web-hd`, which is the only supported preset. User defined JobTemplate: `{job_template_id}`",
            "type": "string"
          },
          "ttlAfterCompletionDays": {
            "description": "Job time to live value in days, which will be effective after job completion. Job should be deleted automatically after the given TTL. Enter a value between 1 and 90. The default is 30.",
            "type": "integer"
          }
        },
        "required": [
          "batchModePriority",
          "config",
          "createTime",
          "endTime",
          "error",
          "inputUri",
          "labels",
          "mode",
          "name",
          "optimization",
          "outputUri",
          "startTime",
          "state",
          "templateId",
          "ttlAfterCompletionDays"
        ],
        "type": "object"
      }
    },
    "google-native:transcoder/v1:getJobTemplate": {
      "description": "Returns the job template data.",
      "inputs": {
        "properties": {
          "jobTemplateId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "jobTemplateId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "config": {
            "$ref": "#/types/google-native:transcoder%2Fv1:JobConfigResponse",
            "description": "The configuration for this template."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels associated with this job template. You can use these to organize and group your job templates.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the job template. Format: `projects/{project_number}/locations/{location}/jobTemplates/{job_template}`",
            "type": "string"
          }
        },
        "required": [
          "config",
          "labels",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:translate/v3:getDataset": {
      "description": "Gets a Dataset.",
      "inputs": {
        "properties": {
          "datasetId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datasetId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when this dataset was created.",
            "type": "string"
          },
          "displayName": {
            "description": "The name of the dataset to show in the interface. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores (_), and ASCII digits 0-9.",
            "type": "string"
          },
          "exampleCount": {
            "description": "The number of examples in the dataset.",
            "type": "integer"
          },
          "name": {
            "description": "The resource name of the dataset, in form of `projects/{project-number-or-id}/locations/{location_id}/datasets/{dataset_id}`",
            "type": "string"
          },
          "sourceLanguageCode": {
            "description": "The BCP-47 language code of the source language.",
            "type": "string"
          },
          "targetLanguageCode": {
            "description": "The BCP-47 language code of the target language.",
            "type": "string"
          },
          "testExampleCount": {
            "description": "Number of test examples (sentence pairs).",
            "type": "integer"
          },
          "trainExampleCount": {
            "description": "Number of training examples (sentence pairs).",
            "type": "integer"
          },
          "updateTime": {
            "description": "Timestamp when this dataset was last updated.",
            "type": "string"
          },
          "validateExampleCount": {
            "description": "Number of validation examples (sentence pairs).",
            "type": "integer"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "exampleCount",
          "name",
          "sourceLanguageCode",
          "targetLanguageCode",
          "testExampleCount",
          "trainExampleCount",
          "updateTime",
          "validateExampleCount"
        ],
        "type": "object"
      }
    },
    "google-native:translate/v3:getGlossary": {
      "description": "Gets a glossary. Returns NOT_FOUND, if the glossary doesn't exist.",
      "inputs": {
        "properties": {
          "glossaryId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "glossaryId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "Optional. The display name of the glossary.",
            "type": "string"
          },
          "endTime": {
            "description": "When the glossary creation was finished.",
            "type": "string"
          },
          "entryCount": {
            "description": "The number of entries defined in the glossary.",
            "type": "integer"
          },
          "inputConfig": {
            "$ref": "#/types/google-native:translate%2Fv3:GlossaryInputConfigResponse",
            "description": "Provides examples to build the glossary from. Total glossary must not exceed 10M Unicode codepoints."
          },
          "languageCodesSet": {
            "$ref": "#/types/google-native:translate%2Fv3:LanguageCodesSetResponse",
            "description": "Used with equivalent term set glossaries."
          },
          "languagePair": {
            "$ref": "#/types/google-native:translate%2Fv3:LanguageCodePairResponse",
            "description": "Used with unidirectional glossaries."
          },
          "name": {
            "description": "The resource name of the glossary. Glossary names have the form `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`.",
            "type": "string"
          },
          "submitTime": {
            "description": "When CreateGlossary was called.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "endTime",
          "entryCount",
          "inputConfig",
          "languageCodesSet",
          "languagePair",
          "name",
          "submitTime"
        ],
        "type": "object"
      }
    },
    "google-native:translate/v3:getGlossaryEntry": {
      "description": "Gets a single glossary entry by the given id.",
      "inputs": {
        "properties": {
          "glossaryEntryId": {
            "type": "string"
          },
          "glossaryId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "glossaryEntryId",
          "glossaryId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "Describes the glossary entry.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the entry. Format: \"projects/*/locations/*/glossaries/*/glossaryEntries/*\"",
            "type": "string"
          },
          "termsPair": {
            "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermsPairResponse",
            "description": "Used for an unidirectional glossary."
          },
          "termsSet": {
            "$ref": "#/types/google-native:translate%2Fv3:GlossaryTermsSetResponse",
            "description": "Used for an equivalent term sets glossary."
          }
        },
        "required": [
          "description",
          "name",
          "termsPair",
          "termsSet"
        ],
        "type": "object"
      }
    },
    "google-native:translate/v3:getModel": {
      "description": "Gets a model.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "modelId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "modelId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Timestamp when the model resource was created, which is also when the training started.",
            "type": "string"
          },
          "dataset": {
            "description": "The dataset from which the model is trained, in form of `projects/{project-number-or-id}/locations/{location_id}/datasets/{dataset_id}`",
            "type": "string"
          },
          "displayName": {
            "description": "The name of the model to show in the interface. The name can be up to 32 characters long and can consist only of ASCII Latin letters A-Z and a-z, underscores (_), and ASCII digits 0-9.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the model, in form of `projects/{project-number-or-id}/locations/{location_id}/models/{model_id}`",
            "type": "string"
          },
          "sourceLanguageCode": {
            "description": "The BCP-47 language code of the source language.",
            "type": "string"
          },
          "targetLanguageCode": {
            "description": "The BCP-47 language code of the target language.",
            "type": "string"
          },
          "testExampleCount": {
            "description": "Number of examples (sentence pairs) used to test the model.",
            "type": "integer"
          },
          "trainExampleCount": {
            "description": "Number of examples (sentence pairs) used to train the model.",
            "type": "integer"
          },
          "updateTime": {
            "description": "Timestamp when this model was last updated.",
            "type": "string"
          },
          "validateExampleCount": {
            "description": "Number of examples (sentence pairs) used to validate the model.",
            "type": "integer"
          }
        },
        "required": [
          "createTime",
          "dataset",
          "displayName",
          "name",
          "sourceLanguageCode",
          "targetLanguageCode",
          "testExampleCount",
          "trainExampleCount",
          "updateTime",
          "validateExampleCount"
        ],
        "type": "object"
      }
    },
    "google-native:translate/v3beta1:getGlossary": {
      "description": "Gets a glossary. Returns NOT_FOUND, if the glossary doesn't exist.",
      "inputs": {
        "properties": {
          "glossaryId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "glossaryId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "endTime": {
            "description": "When the glossary creation was finished.",
            "type": "string"
          },
          "entryCount": {
            "description": "The number of entries defined in the glossary.",
            "type": "integer"
          },
          "inputConfig": {
            "$ref": "#/types/google-native:translate%2Fv3beta1:GlossaryInputConfigResponse",
            "description": "Provides examples to build the glossary from. Total glossary must not exceed 10M Unicode codepoints."
          },
          "languageCodesSet": {
            "$ref": "#/types/google-native:translate%2Fv3beta1:LanguageCodesSetResponse",
            "description": "Used with equivalent term set glossaries."
          },
          "languagePair": {
            "$ref": "#/types/google-native:translate%2Fv3beta1:LanguageCodePairResponse",
            "description": "Used with unidirectional glossaries."
          },
          "name": {
            "description": "The resource name of the glossary. Glossary names have the form `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`.",
            "type": "string"
          },
          "submitTime": {
            "description": "When CreateGlossary was called.",
            "type": "string"
          }
        },
        "required": [
          "endTime",
          "entryCount",
          "inputConfig",
          "languageCodesSet",
          "languagePair",
          "name",
          "submitTime"
        ],
        "type": "object"
      }
    },
    "google-native:vision/v1:getProduct": {
      "description": "Gets information associated with a Product. Possible errors: * Returns NOT_FOUND if the Product does not exist.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "productId"
        ]
      },
      "outputs": {
        "properties": {
          "description": {
            "description": "User-provided metadata to be stored with this product. Must be at most 4096 characters long.",
            "type": "string"
          },
          "displayName": {
            "description": "The user-provided name for this Product. Must not be empty. Must be at most 4096 characters long.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the product. Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. This field is ignored when creating a product.",
            "type": "string"
          },
          "productCategory": {
            "description": "Immutable. The category for the product identified by the reference image. This should be one of \"homegoods-v2\", \"apparel-v2\", \"toys-v2\", \"packagedgoods-v1\" or \"general-v1\". The legacy categories \"homegoods\", \"apparel\", and \"toys\" are still supported, but these should not be used for new products.",
            "type": "string"
          },
          "productLabels": {
            "description": "Key-value pairs that can be attached to a product. At query time, constraints can be specified based on the product_labels. Note that integer values can be provided as strings, e.g. \"1199\". Only strings with integer values can match a range-based restriction which is to be supported soon. Multiple values can be assigned to the same key. One product may have up to 500 product_labels. Notice that the total number of distinct product_labels over all products in one ProductSet cannot exceed 1M, otherwise the product search pipeline will refuse to work for that ProductSet.",
            "items": {
              "$ref": "#/types/google-native:vision%2Fv1:KeyValueResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "description",
          "displayName",
          "name",
          "productCategory",
          "productLabels"
        ],
        "type": "object"
      }
    },
    "google-native:vision/v1:getProductSet": {
      "description": "Gets information associated with a ProductSet. Possible errors: * Returns NOT_FOUND if the ProductSet does not exist.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "productSetId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "productSetId"
        ]
      },
      "outputs": {
        "properties": {
          "displayName": {
            "description": "The user-provided name for this ProductSet. Must not be empty. Must be at most 4096 characters long.",
            "type": "string"
          },
          "indexError": {
            "$ref": "#/types/google-native:vision%2Fv1:StatusResponse",
            "description": "If there was an error with indexing the product set, the field is populated. This field is ignored when creating a ProductSet."
          },
          "indexTime": {
            "description": "The time at which this ProductSet was last indexed. Query results will reflect all updates before this time. If this ProductSet has never been indexed, this timestamp is the default value \"1970-01-01T00:00:00Z\". This field is ignored when creating a ProductSet.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the ProductSet. Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`. This field is ignored when creating a ProductSet.",
            "type": "string"
          }
        },
        "required": [
          "displayName",
          "indexError",
          "indexTime",
          "name"
        ],
        "type": "object"
      }
    },
    "google-native:vision/v1:getReferenceImage": {
      "description": "Gets information associated with a ReferenceImage. Possible errors: * Returns NOT_FOUND if the specified image does not exist.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "productId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "referenceImageId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "productId",
          "referenceImageId"
        ]
      },
      "outputs": {
        "properties": {
          "boundingPolys": {
            "description": "Optional. Bounding polygons around the areas of interest in the reference image. If this field is empty, the system will try to detect regions of interest. At most 10 bounding polygons will be used. The provided shape is converted into a non-rotated rectangle. Once converted, the small edge of the rectangle must be greater than or equal to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5 is not).",
            "items": {
              "$ref": "#/types/google-native:vision%2Fv1:BoundingPolyResponse"
            },
            "type": "array"
          },
          "name": {
            "description": "The resource name of the reference image. Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. This field is ignored when creating a reference image.",
            "type": "string"
          },
          "uri": {
            "description": "The Google Cloud Storage URI of the reference image. The URI must start with `gs://`.",
            "type": "string"
          }
        },
        "required": [
          "boundingPolys",
          "name",
          "uri"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1:getCloneJob": {
      "description": "Gets details of a single CloneJob.",
      "inputs": {
        "properties": {
          "cloneJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "migratingVmId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "cloneJobId",
          "location",
          "migratingVmId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "computeEngineDisksTargetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDetailsResponse",
            "description": "Details of the target Persistent Disks in Compute Engine."
          },
          "computeEngineTargetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDetailsResponse",
            "description": "Details of the target VM in Compute Engine."
          },
          "createTime": {
            "description": "The time the clone job was created (as an API call, not when it was actually created in the target).",
            "type": "string"
          },
          "endTime": {
            "description": "The time the clone job was ended.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
            "description": "Provides details for the errors that led to the Clone Job's state."
          },
          "name": {
            "description": "The name of the clone.",
            "type": "string"
          },
          "state": {
            "description": "State of the clone job.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time the state was last updated.",
            "type": "string"
          },
          "steps": {
            "description": "The clone steps list representing its progress.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1:CloneStepResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "computeEngineDisksTargetDetails",
          "computeEngineTargetDetails",
          "createTime",
          "endTime",
          "error",
          "name",
          "state",
          "stateTime",
          "steps"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1:getCutoverJob": {
      "description": "Gets details of a single CutoverJob.",
      "inputs": {
        "properties": {
          "cutoverJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "migratingVmId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "cutoverJobId",
          "location",
          "migratingVmId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "computeEngineDisksTargetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDetailsResponse",
            "description": "Details of the target Persistent Disks in Compute Engine."
          },
          "computeEngineTargetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDetailsResponse",
            "description": "Details of the target VM in Compute Engine."
          },
          "createTime": {
            "description": "The time the cutover job was created (as an API call, not when it was actually created in the target).",
            "type": "string"
          },
          "endTime": {
            "description": "The time the cutover job had finished.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
            "description": "Provides details for the errors that led to the Cutover Job's state."
          },
          "name": {
            "description": "The name of the cutover job.",
            "type": "string"
          },
          "progressPercent": {
            "description": "The current progress in percentage of the cutover job.",
            "type": "integer"
          },
          "state": {
            "description": "State of the cutover job.",
            "type": "string"
          },
          "stateMessage": {
            "description": "A message providing possible extra details about the current state.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time the state was last updated.",
            "type": "string"
          },
          "steps": {
            "description": "The cutover steps list representing its progress.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1:CutoverStepResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "computeEngineDisksTargetDetails",
          "computeEngineTargetDetails",
          "createTime",
          "endTime",
          "error",
          "name",
          "progressPercent",
          "state",
          "stateMessage",
          "stateTime",
          "steps"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1:getDatacenterConnector": {
      "description": "Gets details of a single DatacenterConnector.",
      "inputs": {
        "properties": {
          "datacenterConnectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datacenterConnectorId",
          "location",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "applianceInfrastructureVersion": {
            "description": "Appliance OVA version. This is the OVA which is manually installed by the user and contains the infrastructure for the automatically updatable components on the appliance.",
            "type": "string"
          },
          "applianceSoftwareVersion": {
            "description": "Appliance last installed update bundle version. This is the version of the automatically updatable components on the appliance.",
            "type": "string"
          },
          "availableVersions": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:AvailableUpdatesResponse",
            "description": "The available versions for updating this appliance."
          },
          "bucket": {
            "description": "The communication channel between the datacenter connector and Google Cloud.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the connector was created (as an API call, not when it was actually installed).",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
            "description": "Provides details on the state of the Datacenter Connector in case of an error."
          },
          "name": {
            "description": "The connector's name.",
            "type": "string"
          },
          "registrationId": {
            "description": "Immutable. A unique key for this connector. This key is internal to the OVA connector and is supplied with its creation during the registration process and can not be modified.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account to use in the connector when communicating with the cloud.",
            "type": "string"
          },
          "state": {
            "description": "State of the DatacenterConnector, as determined by the health checks.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time the state was last set.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last time the connector was updated with an API call.",
            "type": "string"
          },
          "upgradeStatus": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:UpgradeStatusResponse",
            "description": "The status of the current / last upgradeAppliance operation."
          },
          "version": {
            "description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified.",
            "type": "string"
          }
        },
        "required": [
          "applianceInfrastructureVersion",
          "applianceSoftwareVersion",
          "availableVersions",
          "bucket",
          "createTime",
          "error",
          "name",
          "registrationId",
          "serviceAccount",
          "state",
          "stateTime",
          "updateTime",
          "upgradeStatus",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1:getGroup": {
      "description": "Gets details of a single Group.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time timestamp.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the group.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name is a user defined name for this group which can be updated.",
            "type": "string"
          },
          "migrationTargetType": {
            "description": "Immutable. The target type of this group.",
            "type": "string"
          },
          "name": {
            "description": "The Group name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time timestamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "migrationTargetType",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1:getMigratingVm": {
      "description": "Gets details of a single MigratingVm.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "migratingVmId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "migratingVmId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "awsSourceVmDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:AwsSourceVmDetailsResponse",
            "description": "Details of the VM from an AWS source."
          },
          "azureSourceVmDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:AzureSourceVmDetailsResponse",
            "description": "Details of the VM from an Azure source."
          },
          "computeEngineDisksTargetDefaults": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineDisksTargetDefaultsResponse",
            "description": "Details of the target Persistent Disks in Compute Engine."
          },
          "computeEngineTargetDefaults": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ComputeEngineTargetDefaultsResponse",
            "description": "Details of the target VM in Compute Engine."
          },
          "createTime": {
            "description": "The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source).",
            "type": "string"
          },
          "currentSyncInfo": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicationCycleResponse",
            "description": "Details of the current running replication cycle."
          },
          "cutoverForecast": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:CutoverForecastResponse",
            "description": "Provides details of future CutoverJobs of a MigratingVm. Set to empty when cutover forecast is unavailable."
          },
          "description": {
            "description": "The description attached to the migrating VM by the user.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name attached to the MigratingVm by the user.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
            "description": "Provides details on the state of the Migrating VM in case of an error in replication."
          },
          "group": {
            "description": "The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels of the migrating VM.",
            "type": "object"
          },
          "lastReplicationCycle": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicationCycleResponse",
            "description": "Details of the last replication cycle. This will be updated whenever a replication cycle is finished and is not to be confused with last_sync which is only updated on successful replication cycles."
          },
          "lastSync": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:ReplicationSyncResponse",
            "description": "The most updated snapshot created time in the source that finished replication."
          },
          "name": {
            "description": "The identifier of the MigratingVm.",
            "type": "string"
          },
          "policy": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:SchedulePolicyResponse",
            "description": "The replication schedule policy."
          },
          "recentCloneJobs": {
            "description": "The recent clone jobs performed on the migrating VM. This field holds the vm's last completed clone job and the vm's running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1:CloneJobResponse"
            },
            "type": "array"
          },
          "recentCutoverJobs": {
            "description": "The recent cutover jobs performed on the migrating VM. This field holds the vm's last completed cutover job and the vm's running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1:CutoverJobResponse"
            },
            "type": "array"
          },
          "sourceVmId": {
            "description": "The unique ID of the VM in the source. The VM's name in vSphere can be changed, so this is not the VM's name but rather its moRef id. This id is of the form vm-.",
            "type": "string"
          },
          "state": {
            "description": "State of the MigratingVm.",
            "type": "string"
          },
          "stateTime": {
            "description": "The last time the migrating VM state was updated.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last time the migrating VM resource was updated.",
            "type": "string"
          },
          "vmwareSourceVmDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareSourceVmDetailsResponse",
            "description": "Details of the VM from a Vmware source."
          }
        },
        "required": [
          "awsSourceVmDetails",
          "azureSourceVmDetails",
          "computeEngineDisksTargetDefaults",
          "computeEngineTargetDefaults",
          "createTime",
          "currentSyncInfo",
          "cutoverForecast",
          "description",
          "displayName",
          "error",
          "group",
          "labels",
          "lastReplicationCycle",
          "lastSync",
          "name",
          "policy",
          "recentCloneJobs",
          "recentCutoverJobs",
          "sourceVmId",
          "state",
          "stateTime",
          "updateTime",
          "vmwareSourceVmDetails"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1:getSource": {
      "description": "Gets details of a single Source.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "aws": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:AwsSourceDetailsResponse",
            "description": "AWS type source details."
          },
          "azure": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:AzureSourceDetailsResponse",
            "description": "Azure type source details."
          },
          "createTime": {
            "description": "The create time timestamp.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the source.",
            "type": "string"
          },
          "encryption": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:EncryptionResponse",
            "description": "Optional. Immutable. The encryption details of the source data stored by the service."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels of the source.",
            "type": "object"
          },
          "name": {
            "description": "The Source name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time timestamp.",
            "type": "string"
          },
          "vmware": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:VmwareSourceDetailsResponse",
            "description": "Vmware type source details."
          }
        },
        "required": [
          "aws",
          "azure",
          "createTime",
          "description",
          "encryption",
          "labels",
          "name",
          "updateTime",
          "vmware"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1:getTargetProject": {
      "description": "Gets details of a single TargetProject. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "targetProjectId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "targetProjectId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time this target project resource was created (not related to when the Compute Engine project it points to was created).",
            "type": "string"
          },
          "description": {
            "description": "The target project's description.",
            "type": "string"
          },
          "name": {
            "description": "The name of the target project.",
            "type": "string"
          },
          "project": {
            "description": "The target project ID (number) or project name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last time the target project resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "project",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1:getUtilizationReport": {
      "description": "Gets a single Utilization Report.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          },
          "utilizationReportId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "sourceId",
          "utilizationReportId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the report was created (this refers to the time of the request, not the time the report creation completed).",
            "type": "string"
          },
          "displayName": {
            "description": "The report display name, as assigned by the user.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1:StatusResponse",
            "description": "Provides details on the state of the report in case of an error."
          },
          "frameEndTime": {
            "description": "The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the \"frame_end_time\" value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14.",
            "type": "string"
          },
          "name": {
            "description": "The report unique name.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the report.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time the state was last set.",
            "type": "string"
          },
          "timeFrame": {
            "description": "Time frame of the report.",
            "type": "string"
          },
          "vmCount": {
            "description": "Total number of VMs included in the report.",
            "type": "integer"
          },
          "vms": {
            "description": "List of utilization information per VM. When sent as part of the request, the \"vm_id\" field is used in order to specify which VMs to include in the report. In that case all other fields are ignored.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1:VmUtilizationInfoResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "error",
          "frameEndTime",
          "name",
          "state",
          "stateTime",
          "timeFrame",
          "vmCount",
          "vms"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1alpha1:getCloneJob": {
      "description": "Gets details of a single CloneJob.",
      "inputs": {
        "properties": {
          "cloneJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "migratingVmId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "cloneJobId",
          "location",
          "migratingVmId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "computeEngineDisksTargetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDetailsResponse",
            "description": "Details of the target Persistent Disks in Compute Engine."
          },
          "computeEngineTargetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDetailsResponse",
            "description": "Details of the target VM in Compute Engine."
          },
          "computeEngineVmDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
            "deprecationMessage": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
            "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead."
          },
          "createTime": {
            "description": "The time the clone job was created (as an API call, not when it was actually created in the target).",
            "type": "string"
          },
          "endTime": {
            "description": "The time the clone job was ended.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
            "description": "Provides details for the errors that led to the Clone Job's state."
          },
          "name": {
            "description": "The name of the clone.",
            "type": "string"
          },
          "state": {
            "description": "State of the clone job.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time the state was last updated.",
            "type": "string"
          },
          "steps": {
            "description": "The clone steps list representing its progress.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CloneStepResponse"
            },
            "type": "array"
          },
          "targetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
            "deprecationMessage": "Output only. Details of the VM to create as the target of this clone job. Deprecated: Use compute_engine_target_details instead.",
            "description": "Details of the VM to create as the target of this clone job. Deprecated: Use compute_engine_target_details instead."
          }
        },
        "required": [
          "computeEngineDisksTargetDetails",
          "computeEngineTargetDetails",
          "computeEngineVmDetails",
          "createTime",
          "endTime",
          "error",
          "name",
          "state",
          "stateTime",
          "steps",
          "targetDetails"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1alpha1:getCutoverJob": {
      "description": "Gets details of a single CutoverJob.",
      "inputs": {
        "properties": {
          "cutoverJobId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "migratingVmId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "cutoverJobId",
          "location",
          "migratingVmId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "computeEngineDisksTargetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDetailsResponse",
            "description": "Details of the target Persistent Disks in Compute Engine."
          },
          "computeEngineTargetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDetailsResponse",
            "description": "Details of the target VM in Compute Engine."
          },
          "computeEngineVmDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
            "deprecationMessage": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
            "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead."
          },
          "createTime": {
            "description": "The time the cutover job was created (as an API call, not when it was actually created in the target).",
            "type": "string"
          },
          "endTime": {
            "description": "The time the cutover job had finished.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
            "description": "Provides details for the errors that led to the Cutover Job's state."
          },
          "name": {
            "description": "The name of the cutover job.",
            "type": "string"
          },
          "progress": {
            "description": "The current progress in percentage of the cutover job.",
            "type": "integer"
          },
          "progressPercent": {
            "description": "The current progress in percentage of the cutover job.",
            "type": "integer"
          },
          "state": {
            "description": "State of the cutover job.",
            "type": "string"
          },
          "stateMessage": {
            "description": "A message providing possible extra details about the current state.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time the state was last updated.",
            "type": "string"
          },
          "steps": {
            "description": "The cutover steps list representing its progress.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CutoverStepResponse"
            },
            "type": "array"
          },
          "targetDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
            "deprecationMessage": "Output only. Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead.",
            "description": "Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead."
          }
        },
        "required": [
          "computeEngineDisksTargetDetails",
          "computeEngineTargetDetails",
          "computeEngineVmDetails",
          "createTime",
          "endTime",
          "error",
          "name",
          "progress",
          "progressPercent",
          "state",
          "stateMessage",
          "stateTime",
          "steps",
          "targetDetails"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1alpha1:getDatacenterConnector": {
      "description": "Gets details of a single DatacenterConnector.",
      "inputs": {
        "properties": {
          "datacenterConnectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "datacenterConnectorId",
          "location",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "applianceInfrastructureVersion": {
            "description": "Appliance OVA version. This is the OVA which is manually installed by the user and contains the infrastructure for the automatically updatable components on the appliance.",
            "type": "string"
          },
          "applianceSoftwareVersion": {
            "description": "Appliance last installed update bundle version. This is the version of the automatically updatable components on the appliance.",
            "type": "string"
          },
          "availableVersions": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AvailableUpdatesResponse",
            "description": "The available versions for updating this appliance."
          },
          "bucket": {
            "description": "The communication channel between the datacenter connector and Google Cloud.",
            "type": "string"
          },
          "createTime": {
            "description": "The time the connector was created (as an API call, not when it was actually installed).",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
            "description": "Provides details on the state of the Datacenter Connector in case of an error."
          },
          "name": {
            "description": "The connector's name.",
            "type": "string"
          },
          "registrationId": {
            "description": "Immutable. A unique key for this connector. This key is internal to the OVA connector and is supplied with its creation during the registration process and can not be modified.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account to use in the connector when communicating with the cloud.",
            "type": "string"
          },
          "state": {
            "description": "State of the DatacenterConnector, as determined by the health checks.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time the state was last set.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last time the connector was updated with an API call.",
            "type": "string"
          },
          "upgradeStatus": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:UpgradeStatusResponse",
            "description": "The status of the current / last upgradeAppliance operation."
          },
          "version": {
            "description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified.",
            "type": "string"
          }
        },
        "required": [
          "applianceInfrastructureVersion",
          "applianceSoftwareVersion",
          "availableVersions",
          "bucket",
          "createTime",
          "error",
          "name",
          "registrationId",
          "serviceAccount",
          "state",
          "stateTime",
          "updateTime",
          "upgradeStatus",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1alpha1:getGroup": {
      "description": "Gets details of a single Group.",
      "inputs": {
        "properties": {
          "groupId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "groupId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The create time timestamp.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the group.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name is a user defined name for this group which can be updated.",
            "type": "string"
          },
          "migrationTargetType": {
            "description": "Immutable. The target type of this group.",
            "type": "string"
          },
          "name": {
            "description": "The Group name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time timestamp.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "displayName",
          "migrationTargetType",
          "name",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1alpha1:getMigratingVm": {
      "description": "Gets details of a single MigratingVm.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "migratingVmId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "migratingVmId",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "awsSourceVmDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AwsSourceVmDetailsResponse",
            "description": "Details of the VM from an AWS source."
          },
          "azureSourceVmDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AzureSourceVmDetailsResponse",
            "description": "Details of the VM from an Azure source."
          },
          "computeEngineDisksTargetDefaults": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineDisksTargetDefaultsResponse",
            "description": "Details of the target Persistent Disks in Compute Engine."
          },
          "computeEngineTargetDefaults": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ComputeEngineTargetDefaultsResponse",
            "description": "Details of the target VM in Compute Engine."
          },
          "computeEngineVmDefaults": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
            "deprecationMessage": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_defaults instead.",
            "description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_defaults instead."
          },
          "createTime": {
            "description": "The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source).",
            "type": "string"
          },
          "currentSyncInfo": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicationCycleResponse",
            "description": "Details of the current running replication cycle."
          },
          "cutoverForecast": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CutoverForecastResponse",
            "description": "Provides details of future CutoverJobs of a MigratingVm. Set to empty when cutover forecast is unavailable."
          },
          "description": {
            "description": "The description attached to the migrating VM by the user.",
            "type": "string"
          },
          "displayName": {
            "description": "The display name attached to the MigratingVm by the user.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
            "description": "Provides details on the state of the Migrating VM in case of an error in replication."
          },
          "group": {
            "description": "The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels of the migrating VM.",
            "type": "object"
          },
          "lastReplicationCycle": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicationCycleResponse",
            "description": "Details of the last replication cycle. This will be updated whenever a replication cycle is finished and is not to be confused with last_sync which is only updated on successful replication cycles."
          },
          "lastSync": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:ReplicationSyncResponse",
            "description": "The most updated snapshot created time in the source that finished replication."
          },
          "name": {
            "description": "The identifier of the MigratingVm.",
            "type": "string"
          },
          "policy": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:SchedulePolicyResponse",
            "description": "The replication schedule policy."
          },
          "recentCloneJobs": {
            "description": "The recent clone jobs performed on the migrating VM. This field holds the vm's last completed clone job and the vm's running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CloneJobResponse"
            },
            "type": "array"
          },
          "recentCutoverJobs": {
            "description": "The recent cutover jobs performed on the migrating VM. This field holds the vm's last completed cutover job and the vm's running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:CutoverJobResponse"
            },
            "type": "array"
          },
          "sourceVmId": {
            "description": "The unique ID of the VM in the source. The VM's name in vSphere can be changed, so this is not the VM's name but rather its moRef id. This id is of the form vm-.",
            "type": "string"
          },
          "state": {
            "description": "State of the MigratingVm.",
            "type": "string"
          },
          "stateTime": {
            "description": "The last time the migrating VM state was updated.",
            "type": "string"
          },
          "targetDefaults": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:TargetVMDetailsResponse",
            "deprecationMessage": "The default configuration of the target VM that will be created in Google Cloud as a result of the migration. Deprecated: Use compute_engine_target_defaults instead.",
            "description": "The default configuration of the target VM that will be created in Google Cloud as a result of the migration. Deprecated: Use compute_engine_target_defaults instead."
          },
          "updateTime": {
            "description": "The last time the migrating VM resource was updated.",
            "type": "string"
          },
          "vmwareSourceVmDetails": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareSourceVmDetailsResponse",
            "description": "Details of the VM from a Vmware source."
          }
        },
        "required": [
          "awsSourceVmDetails",
          "azureSourceVmDetails",
          "computeEngineDisksTargetDefaults",
          "computeEngineTargetDefaults",
          "computeEngineVmDefaults",
          "createTime",
          "currentSyncInfo",
          "cutoverForecast",
          "description",
          "displayName",
          "error",
          "group",
          "labels",
          "lastReplicationCycle",
          "lastSync",
          "name",
          "policy",
          "recentCloneJobs",
          "recentCutoverJobs",
          "sourceVmId",
          "state",
          "stateTime",
          "targetDefaults",
          "updateTime",
          "vmwareSourceVmDetails"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1alpha1:getSource": {
      "description": "Gets details of a single Source.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "sourceId"
        ]
      },
      "outputs": {
        "properties": {
          "aws": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AwsSourceDetailsResponse",
            "description": "AWS type source details."
          },
          "azure": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:AzureSourceDetailsResponse",
            "description": "Azure type source details."
          },
          "createTime": {
            "description": "The create time timestamp.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description of the source.",
            "type": "string"
          },
          "encryption": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:EncryptionResponse",
            "description": "Optional. Immutable. The encryption details of the source data stored by the service."
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
            "description": "Provides details on the state of the Source in case of an error."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels of the source.",
            "type": "object"
          },
          "name": {
            "description": "The Source name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The update time timestamp.",
            "type": "string"
          },
          "vmware": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmwareSourceDetailsResponse",
            "description": "Vmware type source details."
          }
        },
        "required": [
          "aws",
          "azure",
          "createTime",
          "description",
          "encryption",
          "error",
          "labels",
          "name",
          "updateTime",
          "vmware"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1alpha1:getTargetProject": {
      "description": "Gets details of a single TargetProject. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "targetProjectId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "targetProjectId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time this target project resource was created (not related to when the Compute Engine project it points to was created).",
            "type": "string"
          },
          "description": {
            "description": "The target project's description.",
            "type": "string"
          },
          "name": {
            "description": "The name of the target project.",
            "type": "string"
          },
          "project": {
            "description": "The target project ID (number) or project name.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last time the target project resource was updated.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "project",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:vmmigration/v1alpha1:getUtilizationReport": {
      "description": "Gets a single Utilization Report.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "sourceId": {
            "type": "string"
          },
          "utilizationReportId": {
            "type": "string"
          },
          "view": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "sourceId",
          "utilizationReportId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The time the report was created (this refers to the time of the request, not the time the report creation completed).",
            "type": "string"
          },
          "displayName": {
            "description": "The report display name, as assigned by the user.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:StatusResponse",
            "description": "Provides details on the state of the report in case of an error."
          },
          "frameEndTime": {
            "description": "The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the \"frame_end_time\" value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14.",
            "type": "string"
          },
          "name": {
            "description": "The report unique name.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the report.",
            "type": "string"
          },
          "stateTime": {
            "description": "The time the state was last set.",
            "type": "string"
          },
          "timeFrame": {
            "description": "Time frame of the report.",
            "type": "string"
          },
          "vmCount": {
            "description": "Total number of VMs included in the report.",
            "type": "integer"
          },
          "vms": {
            "description": "List of utilization information per VM. When sent as part of the request, the \"vm_id\" field is used in order to specify which VMs to include in the report. In that case all other fields are ignored.",
            "items": {
              "$ref": "#/types/google-native:vmmigration%2Fv1alpha1:VmUtilizationInfoResponse"
            },
            "type": "array"
          },
          "vmsCount": {
            "description": "Total number of VMs included in the report.",
            "type": "integer"
          }
        },
        "required": [
          "createTime",
          "displayName",
          "error",
          "frameEndTime",
          "name",
          "state",
          "stateTime",
          "timeFrame",
          "vmCount",
          "vms",
          "vmsCount"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getCluster": {
      "description": "Retrieves a `Cluster` resource by its resource name.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "management": {
            "description": "True if the cluster is a management cluster; false otherwise. There can only be one management cluster in a private cloud and it has to be the first one.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of this cluster. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/clusters/my-cluster`",
            "type": "string"
          },
          "nodeTypeConfigs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The map of cluster node types in this cluster, where the key is canonical identifier of the node type (corresponds to the `NodeType`).",
            "type": "object"
          },
          "state": {
            "description": "State of the resource.",
            "type": "string"
          },
          "stretchedClusterConfig": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:StretchedClusterConfigResponse",
            "description": "Optional. Configuration of a stretched cluster. Required for clusters that belong to a STRETCHED private cloud."
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "management",
          "name",
          "nodeTypeConfigs",
          "state",
          "stretchedClusterConfig",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getExternalAccessRule": {
      "description": "Gets details of a single external access rule.",
      "inputs": {
        "properties": {
          "externalAccessRuleId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "networkPolicyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "externalAccessRuleId",
          "location",
          "networkPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "action": {
            "description": "The action that the external access rule performs.",
            "type": "string"
          },
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description for this external access rule.",
            "type": "string"
          },
          "destinationIpRanges": {
            "description": "If destination ranges are specified, the external access rule applies only to the traffic that has a destination IP address in these ranges. The specified IP addresses must have reserved external IP addresses in the scope of the parent network policy. To match all external IP addresses in the scope of the parent network policy, specify `0.0.0.0/0`. To match a specific external IP address, specify it using the `IpRange.external_address` property.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:IpRangeResponse"
            },
            "type": "array"
          },
          "destinationPorts": {
            "description": "A list of destination ports to which the external access rule applies. This field is only applicable for the UDP or TCP protocol. Each entry must be either an integer or a range. For example: `[\"22\"]`, `[\"80\",\"443\"]`, or `[\"12345-12349\"]`. To match all destination ports, specify `[\"0-65535\"]`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ipProtocol": {
            "description": "The IP protocol to which the external access rule applies. This value can be one of the following three protocol strings (not case-sensitive): `tcp`, `udp`, or `icmp`.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of this external access rule. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1/networkPolicies/my-policy/externalAccessRules/my-rule`",
            "type": "string"
          },
          "priority": {
            "description": "External access rule priority, which determines the external access rule to use when multiple rules apply. If multiple rules have the same priority, their ordering is non-deterministic. If specific ordering is required, assign unique priorities to enforce such ordering. The external access rule priority is an integer from 100 to 4096, both inclusive. Lower integers indicate higher precedence. For example, a rule with priority `100` has higher precedence than a rule with priority `101`.",
            "type": "integer"
          },
          "sourceIpRanges": {
            "description": "If source ranges are specified, the external access rule applies only to traffic that has a source IP address in these ranges. These ranges can either be expressed in the CIDR format or as an IP address. As only inbound rules are supported, `ExternalAddress` resources cannot be the source IP addresses of an external access rule. To match all source addresses, specify `0.0.0.0/0`.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:IpRangeResponse"
            },
            "type": "array"
          },
          "sourcePorts": {
            "description": "A list of source ports to which the external access rule applies. This field is only applicable for the UDP or TCP protocol. Each entry must be either an integer or a range. For example: `[\"22\"]`, `[\"80\",\"443\"]`, or `[\"12345-12349\"]`. To match all source ports, specify `[\"0-65535\"]`.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The state of the resource.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          }
        },
        "required": [
          "action",
          "createTime",
          "description",
          "destinationIpRanges",
          "destinationPorts",
          "ipProtocol",
          "name",
          "priority",
          "sourceIpRanges",
          "sourcePorts",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getExternalAddress": {
      "description": "Gets details of a single external IP address.",
      "inputs": {
        "properties": {
          "externalAddressId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "externalAddressId",
          "location",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description for this resource.",
            "type": "string"
          },
          "externalIp": {
            "description": "The external IP address of a workload VM.",
            "type": "string"
          },
          "internalIp": {
            "description": "The internal IP address of a workload VM.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of this external IP address. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/externalAddresses/my-address`",
            "type": "string"
          },
          "state": {
            "description": "The state of the resource.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "externalIp",
          "internalIp",
          "name",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getHcxActivationKey": {
      "description": "Retrieves a `HcxActivationKey` resource by its resource name.",
      "inputs": {
        "properties": {
          "hcxActivationKeyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hcxActivationKeyId",
          "location",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "activationKey": {
            "description": "HCX activation key.",
            "type": "string"
          },
          "createTime": {
            "description": "Creation time of HCX activation key.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of this HcxActivationKey. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1/privateClouds/my-cloud/hcxActivationKeys/my-key`",
            "type": "string"
          },
          "state": {
            "description": "State of HCX activation key.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          }
        },
        "required": [
          "activationKey",
          "createTime",
          "name",
          "state",
          "uid"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getLoggingServer": {
      "description": "Gets details of a logging server.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "loggingServerId": {
            "type": "string"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "loggingServerId",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "hostname": {
            "description": "Fully-qualified domain name (FQDN) or IP Address of the logging server.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of this logging server. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/loggingServers/my-logging-server`",
            "type": "string"
          },
          "port": {
            "description": "Port number at which the logging server receives logs.",
            "type": "integer"
          },
          "protocol": {
            "description": "Protocol used by vCenter to send logs to a logging server.",
            "type": "string"
          },
          "sourceType": {
            "description": "The type of component that produces logs that will be forwarded to this logging server.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "hostname",
          "name",
          "port",
          "protocol",
          "sourceType",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getManagementDnsZoneBinding": {
      "description": "Retrieves a 'ManagementDnsZoneBinding' resource by its resource name.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "managementDnsZoneBindingId": {
            "type": "string"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "managementDnsZoneBindingId",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description for this resource.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of this binding. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud/managementDnsZoneBindings/my-management-dns-zone-binding`",
            "type": "string"
          },
          "state": {
            "description": "The state of the resource.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          },
          "vmwareEngineNetwork": {
            "description": "Network to bind is a VMware Engine network. Specify the name in the following form for VMware engine network: `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`. `{project}` can either be a project number or a project ID.",
            "type": "string"
          },
          "vpcNetwork": {
            "description": "Network to bind is a standard consumer VPC. Specify the name in the following form for consumer VPC network: `projects/{project}/global/networks/{network_id}`. `{project}` can either be a project number or a project ID.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "state",
          "uid",
          "updateTime",
          "vmwareEngineNetwork",
          "vpcNetwork"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getNetworkPeering": {
      "description": "Retrieves a `NetworkPeering` resource by its resource name. The resource contains details of the network peering, such as peered networks, import and export custom route configurations, and peering state.",
      "inputs": {
        "properties": {
          "networkPeeringId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "networkPeeringId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User-provided description for this network peering.",
            "type": "string"
          },
          "exchangeSubnetRoutes": {
            "description": "Optional. True if full mesh connectivity is created and managed automatically between peered networks; false otherwise. Currently this field is always true because Google Compute Engine automatically creates and manages subnetwork routes between two VPC networks when peering state is 'ACTIVE'.",
            "type": "boolean"
          },
          "exportCustomRoutes": {
            "description": "Optional. True if custom routes are exported to the peered network; false otherwise. The default value is true.",
            "type": "boolean"
          },
          "exportCustomRoutesWithPublicIp": {
            "description": "Optional. True if all subnet routes with a public IP address range are exported; false otherwise. The default value is true. IPv4 special-use ranges (https://en.wikipedia.org/wiki/IPv4#Special_addresses) are always exported to peers and are not controlled by this field.",
            "type": "boolean"
          },
          "importCustomRoutes": {
            "description": "Optional. True if custom routes are imported from the peered network; false otherwise. The default value is true.",
            "type": "boolean"
          },
          "importCustomRoutesWithPublicIp": {
            "description": "Optional. True if all subnet routes with public IP address range are imported; false otherwise. The default value is true. IPv4 special-use ranges (https://en.wikipedia.org/wiki/IPv4#Special_addresses) are always imported to peers and are not controlled by this field.",
            "type": "boolean"
          },
          "name": {
            "description": "The resource name of the network peering. Resource names are scheme-less URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/global/networkPeerings/my-peering`",
            "type": "string"
          },
          "peerMtu": {
            "description": "Optional. Maximum transmission unit (MTU) in bytes. The default value is `1500`. If a value of `0` is provided for this field, VMware Engine uses the default value instead.",
            "type": "integer"
          },
          "peerNetwork": {
            "description": "The relative resource name of the network to peer with a standard VMware Engine network. The provided network can be a consumer VPC network or another standard VMware Engine network. If the `peer_network_type` is VMWARE_ENGINE_NETWORK, specify the name in the form: `projects/{project}/locations/global/vmwareEngineNetworks/{vmware_engine_network_id}`. Otherwise specify the name in the form: `projects/{project}/global/networks/{network_id}`, where `{project}` can either be a project number or a project ID.",
            "type": "string"
          },
          "peerNetworkType": {
            "description": "The type of the network to peer with the VMware Engine network.",
            "type": "string"
          },
          "state": {
            "description": "State of the network peering. This field has a value of 'ACTIVE' when there's a matching configuration in the peer network. New values may be added to this enum when appropriate.",
            "type": "string"
          },
          "stateDetails": {
            "description": "Output Only. Details about the current state of the network peering.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          },
          "vmwareEngineNetwork": {
            "description": "The relative resource name of the VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}` can either be a project number or a project ID.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "exchangeSubnetRoutes",
          "exportCustomRoutes",
          "exportCustomRoutesWithPublicIp",
          "importCustomRoutes",
          "importCustomRoutesWithPublicIp",
          "name",
          "peerMtu",
          "peerNetwork",
          "peerNetworkType",
          "state",
          "stateDetails",
          "uid",
          "updateTime",
          "vmwareEngineNetwork"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getNetworkPolicy": {
      "description": "Retrieves a `NetworkPolicy` resource by its resource name.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "networkPolicyId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "networkPolicyId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User-provided description for this network policy.",
            "type": "string"
          },
          "edgeServicesCidr": {
            "description": "IP address range in CIDR notation used to create internet access and external IP access. An RFC 1918 CIDR block, with a \"/26\" prefix, is required. The range cannot overlap with any prefixes either in the consumer VPC network or in use by the private clouds attached to that VPC network.",
            "type": "string"
          },
          "externalIp": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkServiceResponse",
            "description": "Network service that allows External IP addresses to be assigned to VMware workloads. This service can only be enabled when `internet_access` is also enabled."
          },
          "internetAccess": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkServiceResponse",
            "description": "Network service that allows VMware workloads to access the internet."
          },
          "name": {
            "description": "The resource name of this network policy. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1/networkPolicies/my-network-policy`",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          },
          "vmwareEngineNetwork": {
            "description": "Optional. The relative resource name of the VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}` can either be a project number or a project ID.",
            "type": "string"
          },
          "vmwareEngineNetworkCanonical": {
            "description": "The canonical name of the VMware Engine network in the form: `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "edgeServicesCidr",
          "externalIp",
          "internetAccess",
          "name",
          "uid",
          "updateTime",
          "vmwareEngineNetwork",
          "vmwareEngineNetworkCanonical"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getPrivateCloud": {
      "description": "Retrieves a `PrivateCloud` resource by its resource name.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time when the resource was scheduled for deletion.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description for this private cloud.",
            "type": "string"
          },
          "expireTime": {
            "description": "Time when the resource will be irreversibly deleted.",
            "type": "string"
          },
          "hcx": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:HcxResponse",
            "description": "HCX appliance."
          },
          "managementCluster": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:ManagementClusterResponse",
            "description": "Input only. The management cluster for this private cloud. This field is required during creation of the private cloud to provide details for the default cluster. The following fields can't be changed after private cloud creation: `ManagementCluster.clusterId`, `ManagementCluster.nodeTypeId`."
          },
          "name": {
            "description": "The resource name of this private cloud. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1-a/privateClouds/my-cloud`",
            "type": "string"
          },
          "networkConfig": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:NetworkConfigResponse",
            "description": "Network configuration of the private cloud."
          },
          "nsx": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:NsxResponse",
            "description": "NSX appliance."
          },
          "state": {
            "description": "State of the resource. New values may be added to this enum when appropriate.",
            "type": "string"
          },
          "type": {
            "description": "Optional. Type of the private cloud. Defaults to STANDARD.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          },
          "vcenter": {
            "$ref": "#/types/google-native:vmwareengine%2Fv1:VcenterResponse",
            "description": "Vcenter appliance."
          }
        },
        "required": [
          "createTime",
          "deleteTime",
          "description",
          "expireTime",
          "hcx",
          "managementCluster",
          "name",
          "networkConfig",
          "nsx",
          "state",
          "type",
          "uid",
          "updateTime",
          "vcenter"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getPrivateCloudClusterIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "location",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getPrivateCloudHcxActivationKeyIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "hcxActivationKeyId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "hcxActivationKeyId",
          "location",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getPrivateCloudIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "privateCloudId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateCloudId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getPrivateConnection": {
      "description": "Retrieves a `PrivateConnection` resource by its resource name. The resource contains details of the private connection, such as connected network, routing mode and state.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "privateConnectionId": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "privateConnectionId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "description": {
            "description": "Optional. User-provided description for this private connection.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the private connection. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/us-central1/privateConnections/my-connection`",
            "type": "string"
          },
          "peeringId": {
            "description": "VPC network peering id between given network VPC and VMwareEngineNetwork.",
            "type": "string"
          },
          "peeringState": {
            "description": "Peering state between service network and VMware Engine network.",
            "type": "string"
          },
          "routingMode": {
            "description": "Optional. Routing Mode. Default value is set to GLOBAL. For type = PRIVATE_SERVICE_ACCESS, this field can be set to GLOBAL or REGIONAL, for other types only GLOBAL is supported.",
            "type": "string"
          },
          "serviceNetwork": {
            "description": "Service network to create private connection. Specify the name in the following form: `projects/{project}/global/networks/{network_id}` For type = PRIVATE_SERVICE_ACCESS, this field represents servicenetworking VPC, e.g. projects/project-tp/global/networks/servicenetworking. For type = NETAPP_CLOUD_VOLUME, this field represents NetApp service VPC, e.g. projects/project-tp/global/networks/netapp-tenant-vpc. For type = DELL_POWERSCALE, this field represent Dell service VPC, e.g. projects/project-tp/global/networks/dell-tenant-vpc. For type= THIRD_PARTY_SERVICE, this field could represent a consumer VPC or any other producer VPC to which the VMware Engine Network needs to be connected, e.g. projects/project/global/networks/vpc.",
            "type": "string"
          },
          "state": {
            "description": "State of the private connection.",
            "type": "string"
          },
          "type": {
            "description": "Private connection type.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          },
          "vmwareEngineNetwork": {
            "description": "The relative resource name of Legacy VMware Engine network. Specify the name in the following form: `projects/{project}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}` where `{project}`, `{location}` will be same as specified in private connection resource name and `{vmware_engine_network_id}` will be in the form of `{location}`-default e.g. projects/project/locations/us-central1/vmwareEngineNetworks/us-central1-default.",
            "type": "string"
          },
          "vmwareEngineNetworkCanonical": {
            "description": "The canonical name of the VMware Engine network in the form: `projects/{project_number}/locations/{location}/vmwareEngineNetworks/{vmware_engine_network_id}`",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "name",
          "peeringId",
          "peeringState",
          "routingMode",
          "serviceNetwork",
          "state",
          "type",
          "uid",
          "updateTime",
          "vmwareEngineNetwork",
          "vmwareEngineNetworkCanonical"
        ],
        "type": "object"
      }
    },
    "google-native:vmwareengine/v1:getVmwareEngineNetwork": {
      "description": "Retrieves a `VmwareEngineNetwork` resource by its resource name. The resource contains details of the VMware Engine network, such as its VMware Engine network type, peered networks in a service project, and state (for example, `CREATING`, `ACTIVE`, `DELETING`).",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "vmwareEngineNetworkId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "vmwareEngineNetworkId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "Creation time of this resource.",
            "type": "string"
          },
          "description": {
            "description": "User-provided description for this VMware Engine network.",
            "type": "string"
          },
          "etag": {
            "description": "Checksum that may be sent on update and delete requests to ensure that the user-provided value is up to date before the server processes a request. The server computes checksums based on the value of other fields in the request.",
            "type": "string"
          },
          "name": {
            "description": "The resource name of the VMware Engine network. Resource names are schemeless URIs that follow the conventions in https://cloud.google.com/apis/design/resource_names. For example: `projects/my-project/locations/global/vmwareEngineNetworks/my-network`",
            "type": "string"
          },
          "state": {
            "description": "State of the VMware Engine network.",
            "type": "string"
          },
          "type": {
            "description": "VMware Engine network type.",
            "type": "string"
          },
          "uid": {
            "description": "System-generated unique identifier for the resource.",
            "type": "string"
          },
          "updateTime": {
            "description": "Last update time of this resource.",
            "type": "string"
          },
          "vpcNetworks": {
            "description": "VMware Engine service VPC networks that provide connectivity from a private cloud to customer projects, the internet, and other Google Cloud services.",
            "items": {
              "$ref": "#/types/google-native:vmwareengine%2Fv1:VpcNetworkResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "createTime",
          "description",
          "etag",
          "name",
          "state",
          "type",
          "uid",
          "updateTime",
          "vpcNetworks"
        ],
        "type": "object"
      }
    },
    "google-native:vpcaccess/v1:getConnector": {
      "description": "Gets a Serverless VPC Access connector. Returns NOT_FOUND if the resource does not exist.",
      "inputs": {
        "properties": {
          "connectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "connectedProjects": {
            "description": "List of projects using the connector.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ipCidrRange": {
            "description": "The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`.",
            "type": "string"
          },
          "machineType": {
            "description": "Machine type of VM Instance underlying connector. Default is e2-micro",
            "type": "string"
          },
          "maxInstances": {
            "description": "Maximum value of instances in autoscaling group underlying the connector.",
            "type": "integer"
          },
          "maxThroughput": {
            "description": "Maximum throughput of the connector in Mbps. Default is 300, max is 1000. If both max-throughput and max-instances are provided, max-instances takes precedence over max-throughput.",
            "type": "integer"
          },
          "minInstances": {
            "description": "Minimum value of instances in autoscaling group underlying the connector.",
            "type": "integer"
          },
          "minThroughput": {
            "description": "Minimum throughput of the connector in Mbps. Default and min is 200. If both min-throughput and min-instances are provided, min-instances takes precedence over min-throughput.",
            "type": "integer"
          },
          "name": {
            "description": "The resource name in the format `projects/*/locations/*/connectors/*`.",
            "type": "string"
          },
          "network": {
            "description": "Name of a VPC network.",
            "type": "string"
          },
          "state": {
            "description": "State of the VPC access connector.",
            "type": "string"
          },
          "subnet": {
            "$ref": "#/types/google-native:vpcaccess%2Fv1:SubnetResponse",
            "description": "The subnet in which to house the VPC Access Connector."
          }
        },
        "required": [
          "connectedProjects",
          "ipCidrRange",
          "machineType",
          "maxInstances",
          "maxThroughput",
          "minInstances",
          "minThroughput",
          "name",
          "network",
          "state",
          "subnet"
        ],
        "type": "object"
      }
    },
    "google-native:vpcaccess/v1beta1:getConnector": {
      "description": "Gets a Serverless VPC Access connector. Returns NOT_FOUND if the resource does not exist.",
      "inputs": {
        "properties": {
          "connectorId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "connectorId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "connectedProjects": {
            "description": "List of projects using the connector.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ipCidrRange": {
            "description": "The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`.",
            "type": "string"
          },
          "machineType": {
            "description": "Machine type of VM Instance underlying connector. Default is e2-micro",
            "type": "string"
          },
          "maxInstances": {
            "description": "Maximum value of instances in autoscaling group underlying the connector.",
            "type": "integer"
          },
          "maxThroughput": {
            "description": "Maximum throughput of the connector in Mbps. Default is 300, max is 1000. If both max-throughput and max-instances are provided, max-instances takes precedence over max-throughput.",
            "type": "integer"
          },
          "minInstances": {
            "description": "Minimum value of instances in autoscaling group underlying the connector.",
            "type": "integer"
          },
          "minThroughput": {
            "description": "Minimum throughput of the connector in Mbps. Default and min is 200. If both min-throughput and min-instances are provided, min-instances takes precedence over min-throughput.",
            "type": "integer"
          },
          "name": {
            "description": "The resource name in the format `projects/*/locations/*/connectors/*`.",
            "type": "string"
          },
          "network": {
            "description": "Name of a VPC network.",
            "type": "string"
          },
          "state": {
            "description": "State of the VPC access connector.",
            "type": "string"
          },
          "subnet": {
            "$ref": "#/types/google-native:vpcaccess%2Fv1beta1:SubnetResponse",
            "description": "The subnet in which to house the VPC Access Connector."
          }
        },
        "required": [
          "connectedProjects",
          "ipCidrRange",
          "machineType",
          "maxInstances",
          "maxThroughput",
          "minInstances",
          "minThroughput",
          "name",
          "network",
          "state",
          "subnet"
        ],
        "type": "object"
      }
    },
    "google-native:websecurityscanner/v1:getScanConfig": {
      "description": "Gets a ScanConfig.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "scanConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "scanConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "authentication": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1:AuthenticationResponse",
            "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
          },
          "blacklistPatterns": {
            "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The user provided display name of the ScanConfig.",
            "type": "string"
          },
          "exportToSecurityCommandCenter": {
            "description": "Controls export of scan configurations and results to Security Command Center.",
            "type": "string"
          },
          "ignoreHttpStatusErrors": {
            "description": "Whether to keep scanning even if most requests return HTTP error codes.",
            "type": "boolean"
          },
          "managedScan": {
            "description": "Whether the scan config is managed by Web Security Scanner, output only.",
            "type": "boolean"
          },
          "maxQps": {
            "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.",
            "type": "integer"
          },
          "name": {
            "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system.",
            "type": "string"
          },
          "riskLevel": {
            "description": "The risk level selected for the scan",
            "type": "string"
          },
          "schedule": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1:ScheduleResponse",
            "description": "The schedule of the ScanConfig."
          },
          "startingUrls": {
            "description": "The starting URLs from which the scanner finds site pages.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "staticIpScan": {
            "description": "Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses.",
            "type": "boolean"
          },
          "userAgent": {
            "description": "The user agent used during scanning.",
            "type": "string"
          }
        },
        "required": [
          "authentication",
          "blacklistPatterns",
          "displayName",
          "exportToSecurityCommandCenter",
          "ignoreHttpStatusErrors",
          "managedScan",
          "maxQps",
          "name",
          "riskLevel",
          "schedule",
          "startingUrls",
          "staticIpScan",
          "userAgent"
        ],
        "type": "object"
      }
    },
    "google-native:websecurityscanner/v1alpha:getScanConfig": {
      "description": "Gets a ScanConfig.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "scanConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "scanConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "authentication": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:AuthenticationResponse",
            "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
          },
          "blacklistPatterns": {
            "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The user provided display name of the ScanConfig.",
            "type": "string"
          },
          "latestRun": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScanRunResponse",
            "description": "Latest ScanRun if available."
          },
          "maxQps": {
            "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.",
            "type": "integer"
          },
          "name": {
            "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system.",
            "type": "string"
          },
          "schedule": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1alpha:ScheduleResponse",
            "description": "The schedule of the ScanConfig."
          },
          "startingUrls": {
            "description": "The starting URLs from which the scanner finds site pages.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "targetPlatforms": {
            "description": "Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "userAgent": {
            "description": "The user agent used during scanning.",
            "type": "string"
          }
        },
        "required": [
          "authentication",
          "blacklistPatterns",
          "displayName",
          "latestRun",
          "maxQps",
          "name",
          "schedule",
          "startingUrls",
          "targetPlatforms",
          "userAgent"
        ],
        "type": "object"
      }
    },
    "google-native:websecurityscanner/v1beta:getScanConfig": {
      "description": "Gets a ScanConfig.",
      "inputs": {
        "properties": {
          "project": {
            "type": "string"
          },
          "scanConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "scanConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "authentication": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:AuthenticationResponse",
            "description": "The authentication configuration. If specified, service will use the authentication configuration during scanning."
          },
          "blacklistPatterns": {
            "description": "The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "displayName": {
            "description": "The user provided display name of the ScanConfig.",
            "type": "string"
          },
          "exportToSecurityCommandCenter": {
            "description": "Controls export of scan configurations and results to Security Command Center.",
            "type": "string"
          },
          "ignoreHttpStatusErrors": {
            "description": "Whether to keep scanning even if most requests return HTTP error codes.",
            "type": "boolean"
          },
          "latestRun": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScanRunResponse",
            "description": "Latest ScanRun if available."
          },
          "managedScan": {
            "description": "Whether the scan config is managed by Web Security Scanner, output only.",
            "type": "boolean"
          },
          "maxQps": {
            "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.",
            "type": "integer"
          },
          "name": {
            "description": "The resource name of the ScanConfig. The name follows the format of 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are generated by the system.",
            "type": "string"
          },
          "riskLevel": {
            "description": "The risk level selected for the scan",
            "type": "string"
          },
          "schedule": {
            "$ref": "#/types/google-native:websecurityscanner%2Fv1beta:ScheduleResponse",
            "description": "The schedule of the ScanConfig."
          },
          "startingUrls": {
            "description": "The starting URLs from which the scanner finds site pages.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "staticIpScan": {
            "description": "Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses.",
            "type": "boolean"
          },
          "targetPlatforms": {
            "description": "Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "userAgent": {
            "description": "The user agent used during scanning.",
            "type": "string"
          }
        },
        "required": [
          "authentication",
          "blacklistPatterns",
          "displayName",
          "exportToSecurityCommandCenter",
          "ignoreHttpStatusErrors",
          "latestRun",
          "managedScan",
          "maxQps",
          "name",
          "riskLevel",
          "schedule",
          "startingUrls",
          "staticIpScan",
          "targetPlatforms",
          "userAgent"
        ],
        "type": "object"
      }
    },
    "google-native:workflowexecutions/v1:getExecution": {
      "description": "Returns an execution of the given name.",
      "inputs": {
        "properties": {
          "executionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          },
          "workflowId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "executionId",
          "location",
          "workflowId"
        ]
      },
      "outputs": {
        "properties": {
          "argument": {
            "description": "Input parameters of the execution represented as a JSON string. The size limit is 32KB. *Note*: If you are using the REST API directly to run your workflow, you must escape any JSON string value of `argument`. Example: `'{\"argument\":\"{\\\"firstName\\\":\\\"FIRST\\\",\\\"lastName\\\":\\\"LAST\\\"}\"}'`",
            "type": "string"
          },
          "callLogLevel": {
            "description": "The call logging level associated to this execution.",
            "type": "string"
          },
          "duration": {
            "description": "Measures the duration of the execution.",
            "type": "string"
          },
          "endTime": {
            "description": "Marks the end of execution, successful or not.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1:ErrorResponse",
            "description": "The error which caused the execution to finish prematurely. The value is only present if the execution's state is `FAILED` or `CANCELLED`."
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels associated with this execution. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores, and dashes. Label keys must start with a letter. International characters are allowed. By default, labels are inherited from the workflow but are overridden by any labels associated with the execution.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the execution. Format: projects/{project}/locations/{location}/workflows/{workflow}/executions/{execution}",
            "type": "string"
          },
          "result": {
            "description": "Output of the execution represented as a JSON string. The value can only be present if the execution's state is `SUCCEEDED`.",
            "type": "string"
          },
          "startTime": {
            "description": "Marks the beginning of execution.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the execution.",
            "type": "string"
          },
          "stateError": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1:StateErrorResponse",
            "description": "Error regarding the state of the Execution resource. For example, this field will have error details if the execution data is unavailable due to revoked KMS key permissions."
          },
          "status": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1:StatusResponse",
            "description": "Status tracks the current steps and progress data of this execution."
          },
          "workflowRevisionId": {
            "description": "Revision of the workflow this execution is using.",
            "type": "string"
          }
        },
        "required": [
          "argument",
          "callLogLevel",
          "duration",
          "endTime",
          "error",
          "labels",
          "name",
          "result",
          "startTime",
          "state",
          "stateError",
          "status",
          "workflowRevisionId"
        ],
        "type": "object"
      }
    },
    "google-native:workflowexecutions/v1beta:getExecution": {
      "description": "Returns an execution of the given name.",
      "inputs": {
        "properties": {
          "executionId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "view": {
            "type": "string"
          },
          "workflowId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "executionId",
          "location",
          "workflowId"
        ]
      },
      "outputs": {
        "properties": {
          "argument": {
            "description": "Input parameters of the execution represented as a JSON string. The size limit is 32KB. *Note*: If you are using the REST API directly to run your workflow, you must escape any JSON string value of `argument`. Example: `'{\"argument\":\"{\\\"firstName\\\":\\\"FIRST\\\",\\\"lastName\\\":\\\"LAST\\\"}\"}'`",
            "type": "string"
          },
          "callLogLevel": {
            "description": "The call logging level associated to this execution.",
            "type": "string"
          },
          "endTime": {
            "description": "Marks the end of execution, successful or not.",
            "type": "string"
          },
          "error": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:ErrorResponse",
            "description": "The error which caused the execution to finish prematurely. The value is only present if the execution's state is `FAILED` or `CANCELLED`."
          },
          "name": {
            "description": "The resource name of the execution. Format: projects/{project}/locations/{location}/workflows/{workflow}/executions/{execution}",
            "type": "string"
          },
          "result": {
            "description": "Output of the execution represented as a JSON string. The value can only be present if the execution's state is `SUCCEEDED`.",
            "type": "string"
          },
          "startTime": {
            "description": "Marks the beginning of execution.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the execution.",
            "type": "string"
          },
          "status": {
            "$ref": "#/types/google-native:workflowexecutions%2Fv1beta:StatusResponse",
            "description": "Status tracks the current steps and progress data of this execution."
          },
          "workflowRevisionId": {
            "description": "Revision of the workflow this execution is using.",
            "type": "string"
          }
        },
        "required": [
          "argument",
          "callLogLevel",
          "endTime",
          "error",
          "name",
          "result",
          "startTime",
          "state",
          "status",
          "workflowRevisionId"
        ],
        "type": "object"
      }
    },
    "google-native:workflows/v1:getWorkflow": {
      "description": "Gets details of a single workflow.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "revisionId": {
            "type": "string"
          },
          "workflowId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workflowId"
        ]
      },
      "outputs": {
        "properties": {
          "callLogLevel": {
            "description": "Optional. Describes the level of platform logging to apply to calls and call responses during executions of this workflow. If both the workflow and the execution specify a logging level, the execution level takes precedence.",
            "type": "string"
          },
          "createTime": {
            "description": "The timestamp for when the workflow was created. This is a workflow-wide field and is not tied to a specific revision.",
            "type": "string"
          },
          "cryptoKeyName": {
            "description": "Optional. The resource name of a KMS crypto key used to encrypt or decrypt the data associated with the workflow. Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. If not provided, data associated with the workflow will not be CMEK-encrypted.",
            "type": "string"
          },
          "description": {
            "description": "Description of the workflow provided by the user. Must be at most 1000 Unicode characters long. This is a workflow-wide field and is not tied to a specific revision.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels associated with this workflow. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores, and dashes. Label keys must start with a letter. International characters are allowed. This is a workflow-wide field and is not tied to a specific revision.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the workflow. Format: projects/{project}/locations/{location}/workflows/{workflow}. This is a workflow-wide field and is not tied to a specific revision.",
            "type": "string"
          },
          "revisionCreateTime": {
            "description": "The timestamp for the latest revision of the workflow's creation.",
            "type": "string"
          },
          "revisionId": {
            "description": "The revision of the workflow. A new revision of a workflow is created as a result of updating the following properties of a workflow: - Service account - Workflow code to be executed The format is \"000001-a4d\", where the first six characters define the zero-padded revision ordinal number. They are followed by a hyphen and three hexadecimal random characters.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account associated with the latest workflow version. This service account represents the identity of the workflow and determines what permissions the workflow has. Format: projects/{project}/serviceAccounts/{account} or {account} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. The `{account}` value can be the `email` address or the `unique_id` of the service account. If not provided, workflow will use the project's default service account. Modifying this field for an existing workflow results in a new workflow revision.",
            "type": "string"
          },
          "sourceContents": {
            "description": "Workflow code to be executed. The size limit is 128KB.",
            "type": "string"
          },
          "state": {
            "description": "State of the workflow deployment.",
            "type": "string"
          },
          "stateError": {
            "$ref": "#/types/google-native:workflows%2Fv1:StateErrorResponse",
            "description": "Error regarding the state of the workflow. For example, this field will have error details if the execution data is unavailable due to revoked KMS key permissions."
          },
          "updateTime": {
            "description": "The timestamp for when the workflow was last updated. This is a workflow-wide field and is not tied to a specific revision.",
            "type": "string"
          },
          "userEnvVars": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. User-defined environment variables associated with this workflow revision. This map has a maximum length of 20. Each string can take up to 40KiB. Keys cannot be empty strings and cannot start with “GOOGLE” or “WORKFLOWS\".",
            "type": "object"
          }
        },
        "required": [
          "callLogLevel",
          "createTime",
          "cryptoKeyName",
          "description",
          "labels",
          "name",
          "revisionCreateTime",
          "revisionId",
          "serviceAccount",
          "sourceContents",
          "state",
          "stateError",
          "updateTime",
          "userEnvVars"
        ],
        "type": "object"
      }
    },
    "google-native:workflows/v1beta:getWorkflow": {
      "description": "Gets details of a single Workflow.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workflowId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workflowId"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "The timestamp of when the workflow was created.",
            "type": "string"
          },
          "description": {
            "description": "Description of the workflow provided by the user. Must be at most 1000 unicode characters long.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels associated with this workflow. Labels can contain at most 64 entries. Keys and values can be no longer than 63 characters and can only contain lowercase letters, numeric characters, underscores and dashes. Label keys must start with a letter. International characters are allowed.",
            "type": "object"
          },
          "name": {
            "description": "The resource name of the workflow. Format: projects/{project}/locations/{location}/workflows/{workflow}",
            "type": "string"
          },
          "revisionCreateTime": {
            "description": "The timestamp that the latest revision of the workflow was created.",
            "type": "string"
          },
          "revisionId": {
            "description": "The revision of the workflow. A new revision of a workflow is created as a result of updating the following properties of a workflow: - Service account - Workflow code to be executed The format is \"000001-a4d\", where the first 6 characters define the zero-padded revision ordinal number. They are followed by a hyphen and 3 hexadecimal random characters.",
            "type": "string"
          },
          "serviceAccount": {
            "description": "The service account associated with the latest workflow version. This service account represents the identity of the workflow and determines what permissions the workflow has. Format: projects/{project}/serviceAccounts/{account} or {account} Using `-` as a wildcard for the `{project}` or not providing one at all will infer the project from the account. The `{account}` value can be the `email` address or the `unique_id` of the service account. If not provided, workflow will use the project's default service account. Modifying this field for an existing workflow results in a new workflow revision.",
            "type": "string"
          },
          "sourceContents": {
            "description": "Workflow code to be executed. The size limit is 128KB.",
            "type": "string"
          },
          "state": {
            "description": "State of the workflow deployment.",
            "type": "string"
          },
          "updateTime": {
            "description": "The last update timestamp of the workflow.",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "description",
          "labels",
          "name",
          "revisionCreateTime",
          "revisionId",
          "serviceAccount",
          "sourceContents",
          "state",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:workloadmanager/v1:getEvaluation": {
      "description": "Gets details of a single Evaluation.",
      "inputs": {
        "properties": {
          "evaluationId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "evaluationId",
          "location"
        ]
      },
      "outputs": {
        "properties": {
          "createTime": {
            "description": "[Output only] Create time stamp",
            "type": "string"
          },
          "customRulesBucket": {
            "description": "The Cloud Storage bucket name for custom rules.",
            "type": "string"
          },
          "description": {
            "description": "Description of the Evaluation",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels as key value pairs",
            "type": "object"
          },
          "name": {
            "description": "name of resource names have the form 'projects/{project_id}/locations/{location_id}/evaluations/{evaluation_id}'",
            "type": "string"
          },
          "resourceFilter": {
            "$ref": "#/types/google-native:workloadmanager%2Fv1:ResourceFilterResponse",
            "description": "annotations as key value pairs"
          },
          "resourceStatus": {
            "$ref": "#/types/google-native:workloadmanager%2Fv1:ResourceStatusResponse",
            "description": "[Output only] The updated rule ids if exist."
          },
          "ruleNames": {
            "description": "the name of the rule",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ruleVersions": {
            "description": "[Output only] The updated rule ids if exist.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "schedule": {
            "description": "crontab format schedule for scheduled evaluation, currently only support the following schedule: \"0 */1 * * *\", \"0 */6 * * *\", \"0 */12 * * *\", \"0 0 */1 * *\", \"0 0 */7 * *\",",
            "type": "string"
          },
          "updateTime": {
            "description": "[Output only] Update time stamp",
            "type": "string"
          }
        },
        "required": [
          "createTime",
          "customRulesBucket",
          "description",
          "labels",
          "name",
          "resourceFilter",
          "resourceStatus",
          "ruleNames",
          "ruleVersions",
          "schedule",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1:getWorkstation": {
      "description": "Returns the requested workstation.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          },
          "workstationConfigId": {
            "type": "string"
          },
          "workstationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId",
          "workstationConfigId",
          "workstationId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Client-specified annotations.",
            "type": "object"
          },
          "createTime": {
            "description": "Time when this workstation was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time when this workstation was soft-deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Human-readable name for this workstation.",
            "type": "string"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Environment variables passed to the workstation container's entrypoint.",
            "type": "object"
          },
          "etag": {
            "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "host": {
            "description": "Host to which clients can send HTTPS traffic that will be received by the workstation. Authorized traffic will be received to the workstation as HTTP on port 80. To send traffic to a different port, clients may prefix the host with the destination port in the format `{port}-{host}`.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation and that are also propagated to the underlying Compute Engine resources.",
            "type": "object"
          },
          "name": {
            "description": "Identifier. Full name of this workstation.",
            "type": "string"
          },
          "reconciling": {
            "description": "Indicates whether this workstation is currently being updated to match its intended state.",
            "type": "boolean"
          },
          "startTime": {
            "description": "Time when this workstation was most recently successfully started, regardless of the workstation's initial state.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the workstation.",
            "type": "string"
          },
          "uid": {
            "description": "A system-assigned unique identifier for this workstation.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when this workstation was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "deleteTime",
          "displayName",
          "env",
          "etag",
          "host",
          "labels",
          "name",
          "reconciling",
          "startTime",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1:getWorkstationCluster": {
      "description": "Returns the requested workstation cluster.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Client-specified annotations.",
            "type": "object"
          },
          "conditions": {
            "description": "Status conditions describing the workstation cluster's current state.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1:StatusResponse"
            },
            "type": "array"
          },
          "controlPlaneIp": {
            "description": "The private IP address of the control plane for this workstation cluster. Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address.",
            "type": "string"
          },
          "createTime": {
            "description": "Time when this workstation cluster was created.",
            "type": "string"
          },
          "degraded": {
            "description": "Whether this workstation cluster is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in conditions.",
            "type": "boolean"
          },
          "deleteTime": {
            "description": "Time when this workstation cluster was soft-deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Human-readable name for this workstation cluster.",
            "type": "string"
          },
          "etag": {
            "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation cluster and that are also propagated to the underlying Compute Engine resources.",
            "type": "object"
          },
          "name": {
            "description": "Identifier. Full name of this workstation cluster.",
            "type": "string"
          },
          "network": {
            "description": "Immutable. Name of the Compute Engine network in which instances associated with this workstation cluster will be created.",
            "type": "string"
          },
          "privateClusterConfig": {
            "$ref": "#/types/google-native:workstations%2Fv1:PrivateClusterConfigResponse",
            "description": "Optional. Configuration for private workstation cluster."
          },
          "reconciling": {
            "description": "Indicates whether this workstation cluster is currently being updated to match its intended state.",
            "type": "boolean"
          },
          "subnetwork": {
            "description": "Immutable. Name of the Compute Engine subnetwork in which instances associated with this workstation cluster will be created. Must be part of the subnetwork specified for this workstation cluster.",
            "type": "string"
          },
          "uid": {
            "description": "A system-assigned unique identifier for this workstation cluster.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when this workstation cluster was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "conditions",
          "controlPlaneIp",
          "createTime",
          "degraded",
          "deleteTime",
          "displayName",
          "etag",
          "labels",
          "name",
          "network",
          "privateClusterConfig",
          "reconciling",
          "subnetwork",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1:getWorkstationClusterWorkstationConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          },
          "workstationConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId",
          "workstationConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1:getWorkstationClusterWorkstationConfigWorkstationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          },
          "workstationConfigId": {
            "type": "string"
          },
          "workstationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId",
          "workstationConfigId",
          "workstationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1:getWorkstationConfig": {
      "description": "Returns the requested workstation configuration.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          },
          "workstationConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId",
          "workstationConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Client-specified annotations.",
            "type": "object"
          },
          "conditions": {
            "description": "Status conditions describing the current resource state.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1:StatusResponse"
            },
            "type": "array"
          },
          "container": {
            "$ref": "#/types/google-native:workstations%2Fv1:ContainerResponse",
            "description": "Optional. Container that runs upon startup for each workstation using this workstation configuration."
          },
          "createTime": {
            "description": "Time when this workstation configuration was created.",
            "type": "string"
          },
          "degraded": {
            "description": "Whether this resource is degraded, in which case it may require user action to restore full functionality. See also the conditions field.",
            "type": "boolean"
          },
          "deleteTime": {
            "description": "Time when this workstation configuration was soft-deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Human-readable name for this workstation configuration.",
            "type": "string"
          },
          "encryptionKey": {
            "$ref": "#/types/google-native:workstations%2Fv1:CustomerEncryptionKeyResponse",
            "description": "Immutable. Encrypts resources of this workstation configuration using a customer-managed encryption key (CMEK). If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk might be lost. If the encryption key is revoked, the workstation session automatically stops within 7 hours. Immutable after the workstation configuration is created."
          },
          "etag": {
            "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "host": {
            "$ref": "#/types/google-native:workstations%2Fv1:HostResponse",
            "description": "Optional. Runtime host for the workstation."
          },
          "idleTimeout": {
            "description": "Optional. Number of seconds to wait before automatically stopping a workstation after it last received user traffic. A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration should never time out due to idleness. Provide [duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) terminated by `s` for seconds—for example, `\"7200s\"` (2 hours). The default is `\"1200s\"` (20 minutes).",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation configuration and that are also propagated to the underlying Compute Engine resources.",
            "type": "object"
          },
          "name": {
            "description": "Identifier. Full name of this workstation configuration.",
            "type": "string"
          },
          "persistentDirectories": {
            "description": "Optional. Directories to persist across workstation sessions.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1:PersistentDirectoryResponse"
            },
            "type": "array"
          },
          "readinessChecks": {
            "description": "Optional. Readiness checks to perform when starting a workstation using this workstation configuration. Mark a workstation as running only after all specified readiness checks return 200 status codes.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1:ReadinessCheckResponse"
            },
            "type": "array"
          },
          "reconciling": {
            "description": "Indicates whether this workstation configuration is currently being updated to match its intended state.",
            "type": "boolean"
          },
          "replicaZones": {
            "description": "Optional. Immutable. Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, `['us-central1-a', 'us-central1-f']`. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "runningTimeout": {
            "description": "Optional. Number of seconds that a workstation can run until it is automatically shut down. We recommend that workstations be shut down daily to reduce costs and so that security updates can be applied upon restart. The idle_timeout and running_timeout fields are independent of each other. Note that the running_timeout field shuts down VMs after the specified time, regardless of whether or not the VMs are idle. Provide duration terminated by `s` for seconds—for example, `\"54000s\"` (15 hours). Defaults to `\"43200s\"` (12 hours). A value of `\"0s\"` indicates that workstations using this configuration should never time out. If encryption_key is set, it must be greater than `\"0s\"` and less than `\"86400s\"` (24 hours). Warning: A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration have no maximum running time. This is strongly discouraged because you incur costs and will not pick up security updates.",
            "type": "string"
          },
          "uid": {
            "description": "A system-assigned unique identifier for this workstation configuration.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when this workstation configuration was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "conditions",
          "container",
          "createTime",
          "degraded",
          "deleteTime",
          "displayName",
          "encryptionKey",
          "etag",
          "host",
          "idleTimeout",
          "labels",
          "name",
          "persistentDirectories",
          "readinessChecks",
          "reconciling",
          "replicaZones",
          "runningTimeout",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1beta:getWorkstation": {
      "description": "Returns the requested workstation.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          },
          "workstationConfigId": {
            "type": "string"
          },
          "workstationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId",
          "workstationConfigId",
          "workstationId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Client-specified annotations.",
            "type": "object"
          },
          "createTime": {
            "description": "Time when this workstation was created.",
            "type": "string"
          },
          "deleteTime": {
            "description": "Time when this workstation was soft-deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Human-readable name for this workstation.",
            "type": "string"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Environment variables passed to the workstation container's entrypoint.",
            "type": "object"
          },
          "etag": {
            "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "host": {
            "description": "Host to which clients can send HTTPS traffic that will be received by the workstation. Authorized traffic will be received to the workstation as HTTP on port 80. To send traffic to a different port, clients may prefix the host with the destination port in the format `{port}-{host}`.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation and that are also propagated to the underlying Compute Engine resources.",
            "type": "object"
          },
          "name": {
            "description": "Identifier. Full name of this workstation.",
            "type": "string"
          },
          "reconciling": {
            "description": "Indicates whether this workstation is currently being updated to match its intended state.",
            "type": "boolean"
          },
          "startTime": {
            "description": "Time when this workstation was most recently successfully started, regardless of the workstation's initial state.",
            "type": "string"
          },
          "state": {
            "description": "Current state of the workstation.",
            "type": "string"
          },
          "uid": {
            "description": "A system-assigned unique identifier for this workstation.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when this workstation was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "createTime",
          "deleteTime",
          "displayName",
          "env",
          "etag",
          "host",
          "labels",
          "name",
          "reconciling",
          "startTime",
          "state",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1beta:getWorkstationCluster": {
      "description": "Returns the requested workstation cluster.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Client-specified annotations.",
            "type": "object"
          },
          "conditions": {
            "description": "Status conditions describing the workstation cluster's current state.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:StatusResponse"
            },
            "type": "array"
          },
          "controlPlaneIp": {
            "description": "The private IP address of the control plane for this workstation cluster. Workstation VMs need access to this IP address to work with the service, so make sure that your firewall rules allow egress from the workstation VMs to this address.",
            "type": "string"
          },
          "createTime": {
            "description": "Time when this workstation cluster was created.",
            "type": "string"
          },
          "degraded": {
            "description": "Whether this workstation cluster is in degraded mode, in which case it may require user action to restore full functionality. Details can be found in conditions.",
            "type": "boolean"
          },
          "deleteTime": {
            "description": "Time when this workstation cluster was soft-deleted.",
            "type": "string"
          },
          "displayName": {
            "description": "Optional. Human-readable name for this workstation cluster.",
            "type": "string"
          },
          "domainConfig": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:DomainConfigResponse",
            "description": "Optional. Configuration options for a custom domain."
          },
          "etag": {
            "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation cluster and that are also propagated to the underlying Compute Engine resources.",
            "type": "object"
          },
          "name": {
            "description": "Identifier. Full name of this workstation cluster.",
            "type": "string"
          },
          "network": {
            "description": "Immutable. Name of the Compute Engine network in which instances associated with this workstation cluster will be created.",
            "type": "string"
          },
          "privateClusterConfig": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:PrivateClusterConfigResponse",
            "description": "Optional. Configuration for private workstation cluster."
          },
          "reconciling": {
            "description": "Indicates whether this workstation cluster is currently being updated to match its intended state.",
            "type": "boolean"
          },
          "subnetwork": {
            "description": "Immutable. Name of the Compute Engine subnetwork in which instances associated with this workstation cluster will be created. Must be part of the subnetwork specified for this workstation cluster.",
            "type": "string"
          },
          "uid": {
            "description": "A system-assigned unique identifier for this workstation cluster.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when this workstation cluster was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "conditions",
          "controlPlaneIp",
          "createTime",
          "degraded",
          "deleteTime",
          "displayName",
          "domainConfig",
          "etag",
          "labels",
          "name",
          "network",
          "privateClusterConfig",
          "reconciling",
          "subnetwork",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1beta:getWorkstationClusterWorkstationConfigIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          },
          "workstationConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId",
          "workstationConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1beta:getWorkstationClusterWorkstationConfigWorkstationIamPolicy": {
      "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "optionsRequestedPolicyVersion": {
            "type": "integer"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          },
          "workstationConfigId": {
            "type": "string"
          },
          "workstationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId",
          "workstationConfigId",
          "workstationId"
        ]
      },
      "outputs": {
        "properties": {
          "auditConfigs": {
            "description": "Specifies cloud audit logging configuration for this policy.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:AuditConfigResponse"
            },
            "type": "array"
          },
          "bindings": {
            "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:BindingResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
            "type": "string"
          },
          "version": {
            "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
            "type": "integer"
          }
        },
        "required": [
          "auditConfigs",
          "bindings",
          "etag",
          "version"
        ],
        "type": "object"
      }
    },
    "google-native:workstations/v1beta:getWorkstationConfig": {
      "description": "Returns the requested workstation configuration.",
      "inputs": {
        "properties": {
          "location": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "workstationClusterId": {
            "type": "string"
          },
          "workstationConfigId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "location",
          "workstationClusterId",
          "workstationConfigId"
        ]
      },
      "outputs": {
        "properties": {
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. Client-specified annotations.",
            "type": "object"
          },
          "conditions": {
            "description": "Status conditions describing the current resource state.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:StatusResponse"
            },
            "type": "array"
          },
          "container": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:ContainerResponse",
            "description": "Optional. Container that runs upon startup for each workstation using this workstation configuration."
          },
          "createTime": {
            "description": "Time when this workstation configuration was created.",
            "type": "string"
          },
          "degraded": {
            "description": "Whether this resource is degraded, in which case it may require user action to restore full functionality. See also the conditions field.",
            "type": "boolean"
          },
          "deleteTime": {
            "description": "Time when this workstation configuration was soft-deleted.",
            "type": "string"
          },
          "disableTcpConnections": {
            "description": "Optional. Disables support for plain TCP connections in the workstation. By default the service supports TCP connections via a websocket relay. Setting this option to true disables that relay, which prevents the usage of services that require plain tcp connections, such as ssh. When enabled, all communication must occur over https or wss.",
            "type": "boolean"
          },
          "displayName": {
            "description": "Optional. Human-readable name for this workstation configuration.",
            "type": "string"
          },
          "enableAuditAgent": {
            "description": "Optional. Whether to enable Linux `auditd` logging on the workstation. When enabled, a service account must also be specified that has `logging.buckets.write` permission on the project. Operating system audit logging is distinct from [Cloud Audit Logs](https://cloud.google.com/workstations/docs/audit-logging).",
            "type": "boolean"
          },
          "encryptionKey": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:CustomerEncryptionKeyResponse",
            "description": "Immutable. Encrypts resources of this workstation configuration using a customer-managed encryption key (CMEK). If specified, the boot disk of the Compute Engine instance and the persistent disk are encrypted using this encryption key. If this field is not set, the disks are encrypted using a generated key. Customer-managed encryption keys do not protect disk metadata. If the customer-managed encryption key is rotated, when the workstation instance is stopped, the system attempts to recreate the persistent disk with the new version of the key. Be sure to keep older versions of the key until the persistent disk is recreated. Otherwise, data on the persistent disk might be lost. If the encryption key is revoked, the workstation session automatically stops within 7 hours. Immutable after the workstation configuration is created."
          },
          "ephemeralDirectories": {
            "description": "Optional. Ephemeral directories which won't persist across workstation sessions.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:EphemeralDirectoryResponse"
            },
            "type": "array"
          },
          "etag": {
            "description": "Optional. Checksum computed by the server. May be sent on update and delete requests to make sure that the client has an up-to-date value before proceeding.",
            "type": "string"
          },
          "host": {
            "$ref": "#/types/google-native:workstations%2Fv1beta:HostResponse",
            "description": "Optional. Runtime host for the workstation."
          },
          "idleTimeout": {
            "description": "Optional. Number of seconds to wait before automatically stopping a workstation after it last received user traffic. A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration should never time out due to idleness. Provide [duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration) terminated by `s` for seconds—for example, `\"7200s\"` (2 hours). The default is `\"1200s\"` (20 minutes).",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional. [Labels](https://cloud.google.com/workstations/docs/label-resources) that are applied to the workstation configuration and that are also propagated to the underlying Compute Engine resources.",
            "type": "object"
          },
          "name": {
            "description": "Identifier. Full name of this workstation configuration.",
            "type": "string"
          },
          "persistentDirectories": {
            "description": "Optional. Directories to persist across workstation sessions.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:PersistentDirectoryResponse"
            },
            "type": "array"
          },
          "readinessChecks": {
            "description": "Optional. Readiness checks to perform when starting a workstation using this workstation configuration. Mark a workstation as running only after all specified readiness checks return 200 status codes.",
            "items": {
              "$ref": "#/types/google-native:workstations%2Fv1beta:ReadinessCheckResponse"
            },
            "type": "array"
          },
          "reconciling": {
            "description": "Indicates whether this workstation configuration is currently being updated to match its intended state.",
            "type": "boolean"
          },
          "replicaZones": {
            "description": "Optional. Immutable. Specifies the zones used to replicate the VM and disk resources within the region. If set, exactly two zones within the workstation cluster's region must be specified—for example, `['us-central1-a', 'us-central1-f']`. If this field is empty, two default zones within the region are used. Immutable after the workstation configuration is created.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "runningTimeout": {
            "description": "Optional. Number of seconds that a workstation can run until it is automatically shut down. We recommend that workstations be shut down daily to reduce costs and so that security updates can be applied upon restart. The idle_timeout and running_timeout fields are independent of each other. Note that the running_timeout field shuts down VMs after the specified time, regardless of whether or not the VMs are idle. Provide duration terminated by `s` for seconds—for example, `\"54000s\"` (15 hours). Defaults to `\"43200s\"` (12 hours). A value of `\"0s\"` indicates that workstations using this configuration should never time out. If encryption_key is set, it must be greater than `\"0s\"` and less than `\"86400s\"` (24 hours). Warning: A value of `\"0s\"` indicates that Cloud Workstations VMs created with this configuration have no maximum running time. This is strongly discouraged because you incur costs and will not pick up security updates.",
            "type": "string"
          },
          "uid": {
            "description": "A system-assigned unique identifier for this workstation configuration.",
            "type": "string"
          },
          "updateTime": {
            "description": "Time when this workstation configuration was most recently updated.",
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "conditions",
          "container",
          "createTime",
          "degraded",
          "deleteTime",
          "disableTcpConnections",
          "displayName",
          "enableAuditAgent",
          "encryptionKey",
          "ephemeralDirectories",
          "etag",
          "host",
          "idleTimeout",
          "labels",
          "name",
          "persistentDirectories",
          "readinessChecks",
          "reconciling",
          "replicaZones",
          "runningTimeout",
          "uid",
          "updateTime"
        ],
        "type": "object"
      }
    }
  }
}
